aboutsummaryrefslogtreecommitdiff
path: root/site
diff options
context:
space:
mode:
authorRichard <q@1bpm.net>2025-04-13 18:48:02 +0100
committerRichard <q@1bpm.net>2025-04-13 18:48:02 +0100
commit9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22 (patch)
tree291bd79ce340e67affa755a8a6b4f6a83cce93ea /site
downloadapps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.gz
apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.tar.bz2
apps.csound.1bpm.net-9fbf91db06a6d4f4b5cd8bb45389a731bb86bf22.zip
initial
Diffstat (limited to 'site')
-rw-r--r--site/.htaccess3
-rw-r--r--site/app/base/analyser.js97
-rw-r--r--site/app/base/base.js512
-rw-r--r--site/app/base/controls.js214
-rw-r--r--site/app/base/interop_work.deprecated.csd108
-rw-r--r--site/app/base/spline-edit.js453
-rw-r--r--site/app/base/waveform.js1076
-rw-r--r--site/app/clipart/clipart.csd63
-rw-r--r--site/app/clipart/index.html46
-rw-r--r--site/app/clipart/svgmess.js99
-rw-r--r--site/app/feedback/feedback.csd195
-rw-r--r--site/app/feedback/index.html496
-rw-r--r--site/app/ocsillator/index.html319
-rw-r--r--site/app/ocsillator/ocsillator.csd183
-rw-r--r--site/app/partialemergence/effects_global.inc150
-rw-r--r--site/app/partialemergence/index.html39
-rw-r--r--site/app/partialemergence/instruments_hybrid.inc254
-rw-r--r--site/app/partialemergence/instruments_idiophone.inc707
-rw-r--r--site/app/partialemergence/instruments_synthesis.inc108
-rw-r--r--site/app/partialemergence/instruments_water.inc240
-rw-r--r--site/app/partialemergence/partialemergence.csd238
-rw-r--r--site/app/partialemergence/progression1.fnmlmel499
-rw-r--r--site/app/partialemergence/progression2.fnmlmel499
-rw-r--r--site/app/partialemergence/progression3.fnmlmel499
-rw-r--r--site/app/partialemergence/sequence_sections.inc439
-rw-r--r--site/app/partialemergence/sequencing_melodic_persistence.pe.udo54
-rw-r--r--site/app/partialemergence/soundexport.xdb4538
-rw-r--r--site/app/partialemergence/sounds/Kalimba/60.0.mp3bin0 -> 7991 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/60.1.mp3bin0 -> 11032 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/60.2.mp3bin0 -> 7027 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/60.3.mp3bin0 -> 13777 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/62.0.mp3bin0 -> 13851 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/62.1.mp3bin0 -> 12410 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/62.2.mp3bin0 -> 17003 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/62.3.mp3bin0 -> 12072 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/64.0.mp3bin0 -> 12284 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/64.1.mp3bin0 -> 11709 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/64.2.mp3bin0 -> 14620 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/64.3.mp3bin0 -> 12151 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/65.0.mp3bin0 -> 11762 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/65.1.mp3bin0 -> 12127 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/65.2.mp3bin0 -> 11760 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/65.3.mp3bin0 -> 13792 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/65.4.mp3bin0 -> 13270 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/67.0.mp3bin0 -> 10619 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/67.1.mp3bin0 -> 7858 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/67.2.mp3bin0 -> 11136 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/67.3.mp3bin0 -> 11658 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/67.4.mp3bin0 -> 11191 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/69.0.mp3bin0 -> 13037 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/69.1.mp3bin0 -> 11553 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/69.2.mp3bin0 -> 10361 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/69.3.mp3bin0 -> 12309 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/69.4.mp3bin0 -> 11374 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/71.0.mp3bin0 -> 12306 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/71.1.mp3bin0 -> 10119 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/71.2.mp3bin0 -> 8325 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/71.3.mp3bin0 -> 10354 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/71.4.mp3bin0 -> 7856 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/72.0.mp3bin0 -> 11007 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/72.1.mp3bin0 -> 13244 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/72.2.mp3bin0 -> 12880 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/72.3.mp3bin0 -> 12123 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/74.0.mp3bin0 -> 12956 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/74.1.mp3bin0 -> 13007 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/74.2.mp3bin0 -> 15039 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/74.3.mp3bin0 -> 13943 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/76.0.mp3bin0 -> 13946 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/76.1.mp3bin0 -> 11110 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/76.2.mp3bin0 -> 13685 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/76.3.mp3bin0 -> 11866 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/77.0.mp3bin0 -> 11397 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/77.1.mp3bin0 -> 12020 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/77.2.mp3bin0 -> 12411 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/77.3.mp3bin0 -> 11733 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/77.4.mp3bin0 -> 14155 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/79.0.mp3bin0 -> 11684 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/79.1.mp3bin0 -> 10670 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/79.2.mp3bin0 -> 10436 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/79.3.mp3bin0 -> 10775 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/81.0.mp3bin0 -> 4299 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/81.1.mp3bin0 -> 4662 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/81.2.mp3bin0 -> 5182 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/81.3.mp3bin0 -> 6688 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/81.4.mp3bin0 -> 6716 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/83.0.mp3bin0 -> 5573 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/83.1.mp3bin0 -> 5572 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/83.2.mp3bin0 -> 5521 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/83.3.mp3bin0 -> 5938 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/83.4.mp3bin0 -> 5444 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/84.0.mp3bin0 -> 5779 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/84.1.mp3bin0 -> 5727 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/84.2.mp3bin0 -> 5205 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/84.3.mp3bin0 -> 5545 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/86.0.mp3bin0 -> 3752 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/86.1.mp3bin0 -> 4454 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/86.2.mp3bin0 -> 4298 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/86.3.mp3bin0 -> 3827 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/88.0.mp3bin0 -> 5603 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/88.1.mp3bin0 -> 4326 bytes
-rw-r--r--site/app/partialemergence/sounds/Kalimba/88.2.mp3bin0 -> 4559 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/68.0.mp3bin0 -> 15134 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/68.1.mp3bin0 -> 17346 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/68.2.mp3bin0 -> 15617 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/68.3.mp3bin0 -> 10756 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/68.4.mp3bin0 -> 12605 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/68.5.mp3bin0 -> 12552 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/70.0.mp3bin0 -> 16014 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/70.1.mp3bin0 -> 16194 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/70.2.mp3bin0 -> 20157 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/70.3.mp3bin0 -> 16639 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/70.4.mp3bin0 -> 17580 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/72.0.mp3bin0 -> 16277 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/72.1.mp3bin0 -> 17269 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/72.2.mp3bin0 -> 16407 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/72.3.mp3bin0 -> 14712 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/73.0.mp3bin0 -> 17944 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/73.1.mp3bin0 -> 15559 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/73.2.mp3bin0 -> 17109 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/75.0.mp3bin0 -> 22283 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/75.1.mp3bin0 -> 16719 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/75.2.mp3bin0 -> 17787 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/77.0.mp3bin0 -> 21329 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/77.1.mp3bin0 -> 15556 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/77.2.mp3bin0 -> 19062 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/77.3.mp3bin0 -> 19162 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/79.0.mp3bin0 -> 17434 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/79.1.mp3bin0 -> 15612 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/79.2.mp3bin0 -> 15562 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/79.3.mp3bin0 -> 17253 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/80.0.mp3bin0 -> 14748 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/80.1.mp3bin0 -> 17052 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/80.2.mp3bin0 -> 13393 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/80.3.mp3bin0 -> 17699 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/82.0.mp3bin0 -> 17255 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/82.1.mp3bin0 -> 18118 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/82.2.mp3bin0 -> 15581 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/82.3.mp3bin0 -> 16838 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/84.0.mp3bin0 -> 12011 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/84.1.mp3bin0 -> 11098 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/84.2.mp3bin0 -> 14565 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/84.3.mp3bin0 -> 14486 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/85.0.mp3bin0 -> 15246 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/85.1.mp3bin0 -> 13285 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/85.2.mp3bin0 -> 14193 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/85.3.mp3bin0 -> 13207 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/87.0.mp3bin0 -> 12042 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/87.1.mp3bin0 -> 11595 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/87.2.mp3bin0 -> 13742 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/87.3.mp3bin0 -> 11989 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/87.4.mp3bin0 -> 11074 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/89.0.mp3bin0 -> 10014 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/89.1.mp3bin0 -> 9933 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/89.2.mp3bin0 -> 7066 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/89.3.mp3bin0 -> 9179 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/91.0.mp3bin0 -> 8713 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/91.1.mp3bin0 -> 9548 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/91.2.mp3bin0 -> 7538 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/92.0.mp3bin0 -> 10772 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/92.1.mp3bin0 -> 9707 bytes
-rw-r--r--site/app/partialemergence/sounds/MusicBox/92.2.mp3bin0 -> 11716 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/1.mp3bin0 -> 3756 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/10.mp3bin0 -> 3547 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/100.mp3bin0 -> 4174 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/101.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/102.mp3bin0 -> 2608 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/103.mp3bin0 -> 2217 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/104.mp3bin0 -> 2685 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/105.mp3bin0 -> 2452 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/106.mp3bin0 -> 2817 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/107.mp3bin0 -> 4172 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/108.mp3bin0 -> 2555 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/109.mp3bin0 -> 2609 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/11.mp3bin0 -> 2763 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/110.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/111.mp3bin0 -> 2659 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/112.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/113.mp3bin0 -> 2661 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/114.mp3bin0 -> 1721 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/115.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/116.mp3bin0 -> 2765 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/117.mp3bin0 -> 2505 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/118.mp3bin0 -> 3235 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/119.mp3bin0 -> 4070 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/12.mp3bin0 -> 3260 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/120.mp3bin0 -> 1851 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/121.mp3bin0 -> 2400 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/122.mp3bin0 -> 2921 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/123.mp3bin0 -> 2086 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/124.mp3bin0 -> 3288 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/125.mp3bin0 -> 3548 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/126.mp3bin0 -> 2765 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/127.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/128.mp3bin0 -> 2295 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/129.mp3bin0 -> 2895 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/13.mp3bin0 -> 3232 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/130.mp3bin0 -> 2138 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/131.mp3bin0 -> 2766 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/132.mp3bin0 -> 1721 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/133.mp3bin0 -> 2843 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/134.mp3bin0 -> 2607 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/135.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/136.mp3bin0 -> 2921 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/137.mp3bin0 -> 2790 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/138.mp3bin0 -> 3103 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/139.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/14.mp3bin0 -> 2191 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/140.mp3bin0 -> 5009 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/141.mp3bin0 -> 3807 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/142.mp3bin0 -> 2843 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/143.mp3bin0 -> 3678 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/144.mp3bin0 -> 2922 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/145.mp3bin0 -> 2765 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/146.mp3bin0 -> 2608 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/147.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/148.mp3bin0 -> 3077 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/149.mp3bin0 -> 2033 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/15.mp3bin0 -> 3078 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/150.mp3bin0 -> 3182 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/151.mp3bin0 -> 2661 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/152.mp3bin0 -> 2687 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/153.mp3bin0 -> 2947 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/154.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/155.mp3bin0 -> 2739 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/156.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/157.mp3bin0 -> 2921 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/158.mp3bin0 -> 1903 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/159.mp3bin0 -> 2399 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/16.mp3bin0 -> 2945 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/160.mp3bin0 -> 2582 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/161.mp3bin0 -> 2818 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/162.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/163.mp3bin0 -> 1643 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/164.mp3bin0 -> 4069 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/165.mp3bin0 -> 2556 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/166.mp3bin0 -> 2608 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/167.mp3bin0 -> 2712 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/168.mp3bin0 -> 1982 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/169.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/17.mp3bin0 -> 3313 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/170.mp3bin0 -> 3886 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/171.mp3bin0 -> 2973 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/172.mp3bin0 -> 3338 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/173.mp3bin0 -> 2818 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/174.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/175.mp3bin0 -> 4175 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/176.mp3bin0 -> 2112 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/177.mp3bin0 -> 1825 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/178.mp3bin0 -> 1747 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/179.mp3bin0 -> 1877 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/18.mp3bin0 -> 2869 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/180.mp3bin0 -> 2713 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/181.mp3bin0 -> 3730 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/182.mp3bin0 -> 2399 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/183.mp3bin0 -> 2034 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/184.mp3bin0 -> 3704 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/185.mp3bin0 -> 1851 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/186.mp3bin0 -> 2974 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/187.mp3bin0 -> 2661 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/188.mp3bin0 -> 2190 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/189.mp3bin0 -> 3026 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/19.mp3bin0 -> 2477 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/190.mp3bin0 -> 3078 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/191.mp3bin0 -> 1825 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/192.mp3bin0 -> 2634 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/193.mp3bin0 -> 2817 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/194.mp3bin0 -> 2608 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/195.mp3bin0 -> 3704 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/196.mp3bin0 -> 2817 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/197.mp3bin0 -> 3183 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/198.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/199.mp3bin0 -> 1356 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/2.mp3bin0 -> 3417 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/20.mp3bin0 -> 3182 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/200.mp3bin0 -> 2556 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/201.mp3bin0 -> 1694 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/202.mp3bin0 -> 2087 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/203.mp3bin0 -> 1825 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/204.mp3bin0 -> 2347 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/205.mp3bin0 -> 2243 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/206.mp3bin0 -> 1642 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/207.mp3bin0 -> 1356 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/208.mp3bin0 -> 1746 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/209.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/21.mp3bin0 -> 3469 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/210.mp3bin0 -> 1695 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/211.mp3bin0 -> 3496 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/212.mp3bin0 -> 2870 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/213.mp3bin0 -> 1617 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/214.mp3bin0 -> 1982 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/215.mp3bin0 -> 3129 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/216.mp3bin0 -> 2425 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/217.mp3bin0 -> 2243 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/218.mp3bin0 -> 3259 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/219.mp3bin0 -> 3182 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/22.mp3bin0 -> 2059 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/220.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/221.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/222.mp3bin0 -> 4643 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/223.mp3bin0 -> 1851 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/224.mp3bin0 -> 3417 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/225.mp3bin0 -> 2243 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/226.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/227.mp3bin0 -> 3547 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/228.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/229.mp3bin0 -> 2400 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/23.mp3bin0 -> 4714 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/230.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/231.mp3bin0 -> 1695 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/232.mp3bin0 -> 1720 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/233.mp3bin0 -> 3077 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/234.mp3bin0 -> 3209 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/235.mp3bin0 -> 2087 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/236.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/237.mp3bin0 -> 2086 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/238.mp3bin0 -> 2034 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/239.mp3bin0 -> 1643 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/24.mp3bin0 -> 2450 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/240.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/241.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/242.mp3bin0 -> 1902 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/243.mp3bin0 -> 2164 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/244.mp3bin0 -> 2556 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/245.mp3bin0 -> 2791 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/246.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/247.mp3bin0 -> 2400 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/248.mp3bin0 -> 2922 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/249.mp3bin0 -> 2557 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/25.mp3bin0 -> 2608 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/250.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/251.mp3bin0 -> 2139 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/252.mp3bin0 -> 2556 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/253.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/254.mp3bin0 -> 1408 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/255.mp3bin0 -> 1382 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/256.mp3bin0 -> 1251 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/257.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/258.mp3bin0 -> 1721 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/259.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/26.mp3bin0 -> 2165 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/260.mp3bin0 -> 2139 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/261.mp3bin0 -> 2217 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/262.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/263.mp3bin0 -> 2243 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/264.mp3bin0 -> 1356 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/265.mp3bin0 -> 2139 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/266.mp3bin0 -> 1904 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/267.mp3bin0 -> 1460 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/268.mp3bin0 -> 3027 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/269.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/27.mp3bin0 -> 2163 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/270.mp3bin0 -> 1434 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/271.mp3bin0 -> 1512 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/272.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/273.mp3bin0 -> 1460 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/274.mp3bin0 -> 2009 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/275.mp3bin0 -> 1617 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/276.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/277.mp3bin0 -> 3391 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/278.mp3bin0 -> 2765 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/279.mp3bin0 -> 2790 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/28.mp3bin0 -> 1982 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/280.mp3bin0 -> 1538 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/281.mp3bin0 -> 2948 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/282.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/283.mp3bin0 -> 1799 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/284.mp3bin0 -> 1460 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/285.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/286.mp3bin0 -> 2452 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/287.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/288.mp3bin0 -> 1617 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/289.mp3bin0 -> 1564 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/29.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/290.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/291.mp3bin0 -> 2661 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/292.mp3bin0 -> 2661 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/293.mp3bin0 -> 1904 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/294.mp3bin0 -> 1565 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/295.mp3bin0 -> 2034 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/296.mp3bin0 -> 2660 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/297.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/298.mp3bin0 -> 2661 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/299.mp3bin0 -> 1564 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/3.mp3bin0 -> 4043 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/30.mp3bin0 -> 3182 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/300.mp3bin0 -> 2190 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/301.mp3bin0 -> 2035 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/302.mp3bin0 -> 2425 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/303.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/304.mp3bin0 -> 1747 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/305.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/306.mp3bin0 -> 1956 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/307.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/308.mp3bin0 -> 2765 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/309.mp3bin0 -> 2217 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/31.mp3bin0 -> 2295 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/310.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/311.mp3bin0 -> 3548 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/312.mp3bin0 -> 3417 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/313.mp3bin0 -> 2139 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/314.mp3bin0 -> 1434 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/315.mp3bin0 -> 1643 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/316.mp3bin0 -> 2607 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/317.mp3bin0 -> 2608 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/318.mp3bin0 -> 1747 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/319.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/32.mp3bin0 -> 2817 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/320.mp3bin0 -> 2086 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/321.mp3bin0 -> 1564 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/322.mp3bin0 -> 1982 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/323.mp3bin0 -> 2478 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/324.mp3bin0 -> 1722 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/325.mp3bin0 -> 2451 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/326.mp3bin0 -> 2713 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/327.mp3bin0 -> 1356 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/328.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/329.mp3bin0 -> 1486 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/33.mp3bin0 -> 4355 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/330.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/331.mp3bin0 -> 2296 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/332.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/333.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/334.mp3bin0 -> 1356 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/335.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/336.mp3bin0 -> 2530 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/337.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/338.mp3bin0 -> 1983 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/339.mp3bin0 -> 2243 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/34.mp3bin0 -> 2818 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/340.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/341.mp3bin0 -> 2452 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/342.mp3bin0 -> 2400 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/343.mp3bin0 -> 2034 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/344.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/345.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/346.mp3bin0 -> 2321 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/347.mp3bin0 -> 1252 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/348.mp3bin0 -> 1983 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/349.mp3bin0 -> 2035 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/35.mp3bin0 -> 2061 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/350.mp3bin0 -> 1382 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/351.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/352.mp3bin0 -> 1722 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/353.mp3bin0 -> 1983 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/354.mp3bin0 -> 1617 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/355.mp3bin0 -> 2505 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/356.mp3bin0 -> 2087 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/357.mp3bin0 -> 1617 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/358.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/359.mp3bin0 -> 2035 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/36.mp3bin0 -> 1954 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/360.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/361.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/362.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/363.mp3bin0 -> 1565 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/364.mp3bin0 -> 2400 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/365.mp3bin0 -> 2243 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/366.mp3bin0 -> 2868 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/367.mp3bin0 -> 2295 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/368.mp3bin0 -> 2400 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/369.mp3bin0 -> 2139 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/37.mp3bin0 -> 2817 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/370.mp3bin0 -> 2191 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/371.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/372.mp3bin0 -> 1565 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/373.mp3bin0 -> 2216 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/374.mp3bin0 -> 2190 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/375.mp3bin0 -> 2296 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/376.mp3bin0 -> 3312 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/377.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/378.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/379.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/38.mp3bin0 -> 2660 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/380.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/381.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/382.mp3bin0 -> 1617 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/383.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/384.mp3bin0 -> 1904 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/385.mp3bin0 -> 1983 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/386.mp3bin0 -> 2817 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/387.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/388.mp3bin0 -> 2269 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/389.mp3bin0 -> 1591 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/39.mp3bin0 -> 2400 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/390.mp3bin0 -> 2034 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/391.mp3bin0 -> 2321 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/392.mp3bin0 -> 1538 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/393.mp3bin0 -> 1538 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/394.mp3bin0 -> 2373 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/395.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/396.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/397.mp3bin0 -> 1538 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/398.mp3bin0 -> 2452 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/399.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/4.mp3bin0 -> 4304 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/40.mp3bin0 -> 2922 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/400.mp3bin0 -> 1721 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/401.mp3bin0 -> 2138 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/402.mp3bin0 -> 2296 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/403.mp3bin0 -> 1931 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/404.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/405.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/406.mp3bin0 -> 1565 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/407.mp3bin0 -> 1721 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/408.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/409.mp3bin0 -> 1356 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/41.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/410.mp3bin0 -> 1461 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/411.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/412.mp3bin0 -> 1617 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/413.mp3bin0 -> 1983 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/414.mp3bin0 -> 1356 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/415.mp3bin0 -> 2191 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/416.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/417.mp3bin0 -> 1983 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/418.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/419.mp3bin0 -> 2869 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/42.mp3bin0 -> 1983 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/420.mp3bin0 -> 1356 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/421.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/422.mp3bin0 -> 2140 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/423.mp3bin0 -> 1460 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/424.mp3bin0 -> 2032 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/425.mp3bin0 -> 2138 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/426.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/427.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/428.mp3bin0 -> 1721 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/429.mp3bin0 -> 2035 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/43.mp3bin0 -> 2191 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/430.mp3bin0 -> 2974 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/431.mp3bin0 -> 2661 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/432.mp3bin0 -> 1983 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/433.mp3bin0 -> 4434 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/434.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/435.mp3bin0 -> 1565 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/436.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/437.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/438.mp3bin0 -> 2191 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/439.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/44.mp3bin0 -> 1747 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/440.mp3bin0 -> 1434 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/441.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/442.mp3bin0 -> 1877 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/443.mp3bin0 -> 2478 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/444.mp3bin0 -> 1382 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/445.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/446.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/447.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/448.mp3bin0 -> 2138 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/449.mp3bin0 -> 1355 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/45.mp3bin0 -> 1642 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/450.mp3bin0 -> 2321 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/451.mp3bin0 -> 2399 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/452.mp3bin0 -> 1408 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/453.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/454.mp3bin0 -> 2086 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/455.mp3bin0 -> 3208 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/456.mp3bin0 -> 3650 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/457.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/458.mp3bin0 -> 2087 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/459.mp3bin0 -> 2399 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/46.mp3bin0 -> 2816 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/460.mp3bin0 -> 1982 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/461.mp3bin0 -> 2270 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/462.mp3bin0 -> 1434 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/463.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/464.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/465.mp3bin0 -> 2505 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/466.mp3bin0 -> 2609 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/467.mp3bin0 -> 1851 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/468.mp3bin0 -> 2034 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/469.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/47.mp3bin0 -> 1643 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/470.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/471.mp3bin0 -> 2243 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/472.mp3bin0 -> 2295 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/473.mp3bin0 -> 2243 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/474.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/475.mp3bin0 -> 2191 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/476.mp3bin0 -> 2477 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/477.mp3bin0 -> 2400 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/478.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/479.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/48.mp3bin0 -> 3077 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/480.mp3bin0 -> 1408 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/481.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/482.mp3bin0 -> 2035 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/483.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/484.mp3bin0 -> 1983 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/485.mp3bin0 -> 1982 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/486.mp3bin0 -> 2477 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/487.mp3bin0 -> 1512 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/488.mp3bin0 -> 2635 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/489.mp3bin0 -> 2269 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/49.mp3bin0 -> 2034 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/490.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/491.mp3bin0 -> 2191 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/492.mp3bin0 -> 2035 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/493.mp3bin0 -> 2477 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/494.mp3bin0 -> 2191 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/495.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/496.mp3bin0 -> 2348 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/497.mp3bin0 -> 1642 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/498.mp3bin0 -> 1538 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/499.mp3bin0 -> 2712 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/5.mp3bin0 -> 2687 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/50.mp3bin0 -> 2452 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/500.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/501.mp3bin0 -> 2608 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/502.mp3bin0 -> 2609 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/503.mp3bin0 -> 1721 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/504.mp3bin0 -> 2138 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/505.mp3bin0 -> 2817 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/506.mp3bin0 -> 2609 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/507.mp3bin0 -> 1721 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/508.mp3bin0 -> 2217 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/509.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/51.mp3bin0 -> 2738 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/510.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/511.mp3bin0 -> 3494 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/512.mp3bin0 -> 3235 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/513.mp3bin0 -> 2347 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/514.mp3bin0 -> 2557 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/515.mp3bin0 -> 3285 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/516.mp3bin0 -> 3364 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/517.mp3bin0 -> 2661 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/518.mp3bin0 -> 2609 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/519.mp3bin0 -> 1799 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/52.mp3bin0 -> 2242 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/520.mp3bin0 -> 3129 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/521.mp3bin0 -> 2816 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/522.mp3bin0 -> 2894 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/523.mp3bin0 -> 1956 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/524.mp3bin0 -> 2556 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/525.mp3bin0 -> 1590 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/526.mp3bin0 -> 2556 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/527.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/528.mp3bin0 -> 2426 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/529.mp3bin0 -> 2869 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/53.mp3bin0 -> 2921 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/530.mp3bin0 -> 2296 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/531.mp3bin0 -> 3235 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/532.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/533.mp3bin0 -> 2268 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/534.mp3bin0 -> 2712 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/535.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/536.mp3bin0 -> 2034 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/537.mp3bin0 -> 2243 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/538.mp3bin0 -> 2712 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/539.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/54.mp3bin0 -> 2399 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/540.mp3bin0 -> 2921 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/541.mp3bin0 -> 2609 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/542.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/543.mp3bin0 -> 2530 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/545.mp3bin0 -> 2034 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/546.mp3bin0 -> 3104 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/547.mp3bin0 -> 2425 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/548.mp3bin0 -> 2347 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/549.mp3bin0 -> 2086 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/55.mp3bin0 -> 2817 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/550.mp3bin0 -> 1722 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/551.mp3bin0 -> 2504 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/552.mp3bin0 -> 1825 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/553.mp3bin0 -> 2165 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/554.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/555.mp3bin0 -> 1460 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/556.mp3bin0 -> 2086 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/557.mp3bin0 -> 2609 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/558.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/559.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/56.mp3bin0 -> 3079 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/560.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/561.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/562.mp3bin0 -> 1826 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/563.mp3bin0 -> 1774 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/564.mp3bin0 -> 1513 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/565.mp3bin0 -> 1878 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/566.mp3bin0 -> 2451 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/567.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/568.mp3bin0 -> 2295 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/569.mp3bin0 -> 2112 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/57.mp3bin0 -> 2922 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/570.mp3bin0 -> 2296 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/571.mp3bin0 -> 2139 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/572.mp3bin0 -> 1825 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/573.mp3bin0 -> 2582 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/574.mp3bin0 -> 1669 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/575.mp3bin0 -> 1722 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/576.mp3bin0 -> 2608 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/577.mp3bin0 -> 2295 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/578.mp3bin0 -> 4018 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/579.mp3bin0 -> 4668 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/58.mp3bin0 -> 2269 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/59.mp3bin0 -> 1982 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/6.mp3bin0 -> 2867 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/60.mp3bin0 -> 2139 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/61.mp3bin0 -> 2686 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/62.mp3bin0 -> 2139 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/63.mp3bin0 -> 2505 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/64.mp3bin0 -> 2505 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/65.mp3bin0 -> 3287 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/66.mp3bin0 -> 2946 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/67.mp3bin0 -> 1565 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/68.mp3bin0 -> 2347 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/69.mp3bin0 -> 2400 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/7.mp3bin0 -> 2919 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/70.mp3bin0 -> 2816 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/71.mp3bin0 -> 2112 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/72.mp3bin0 -> 2765 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/73.mp3bin0 -> 3235 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/74.mp3bin0 -> 2087 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/75.mp3bin0 -> 3183 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/76.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/77.mp3bin0 -> 2452 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/78.mp3bin0 -> 1825 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/79.mp3bin0 -> 1773 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/8.mp3bin0 -> 3076 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/80.mp3bin0 -> 1617 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/81.mp3bin0 -> 1956 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/82.mp3bin0 -> 2661 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/83.mp3bin0 -> 4746 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/84.mp3bin0 -> 3704 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/85.mp3bin0 -> 1825 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/86.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/87.mp3bin0 -> 2503 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/88.mp3bin0 -> 2712 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/89.mp3bin0 -> 1930 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/9.mp3bin0 -> 4017 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/90.mp3bin0 -> 2554 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/91.mp3bin0 -> 2842 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/92.mp3bin0 -> 2138 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/93.mp3bin0 -> 3286 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/94.mp3bin0 -> 3077 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/95.mp3bin0 -> 2452 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/96.mp3bin0 -> 2973 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/97.mp3bin0 -> 2294 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/98.mp3bin0 -> 1799 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Droplets/99.mp3bin0 -> 2191 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/1.mp3bin0 -> 6157 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/10.mp3bin0 -> 12312 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/100.mp3bin0 -> 6913 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/11.mp3bin0 -> 17394 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/12.mp3bin0 -> 11816 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/13.mp3bin0 -> 17528 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/14.mp3bin0 -> 17368 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/15.mp3bin0 -> 11478 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/16.mp3bin0 -> 19510 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/17.mp3bin0 -> 11765 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/18.mp3bin0 -> 11949 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/19.mp3bin0 -> 11976 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/2.mp3bin0 -> 8294 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/20.mp3bin0 -> 8270 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/21.mp3bin0 -> 10614 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/22.mp3bin0 -> 11111 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/23.mp3bin0 -> 8474 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/24.mp3bin0 -> 8634 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/25.mp3bin0 -> 13069 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/26.mp3bin0 -> 20353 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/27.mp3bin0 -> 11165 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/28.mp3bin0 -> 7906 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/29.mp3bin0 -> 8817 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/3.mp3bin0 -> 21208 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/30.mp3bin0 -> 12838 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/31.mp3bin0 -> 8634 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/32.mp3bin0 -> 7380 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/33.mp3bin0 -> 13641 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/34.mp3bin0 -> 11372 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/35.mp3bin0 -> 11846 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/36.mp3bin0 -> 12209 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/37.mp3bin0 -> 14714 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/38.mp3bin0 -> 10563 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/39.mp3bin0 -> 12106 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/4.mp3bin0 -> 9155 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/40.mp3bin0 -> 6157 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/41.mp3bin0 -> 6335 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/42.mp3bin0 -> 6339 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/43.mp3bin0 -> 14184 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/44.mp3bin0 -> 13901 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/45.mp3bin0 -> 12806 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/46.mp3bin0 -> 13877 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/47.mp3bin0 -> 15887 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/48.mp3bin0 -> 15257 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/49.mp3bin0 -> 12940 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/5.mp3bin0 -> 12285 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/50.mp3bin0 -> 15077 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/51.mp3bin0 -> 10642 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/52.mp3bin0 -> 10195 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/53.mp3bin0 -> 12076 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/54.mp3bin0 -> 10898 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/55.mp3bin0 -> 13198 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/56.mp3bin0 -> 13717 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/57.mp3bin0 -> 15358 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/58.mp3bin0 -> 12729 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/59.mp3bin0 -> 16199 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/6.mp3bin0 -> 10906 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/60.mp3bin0 -> 21182 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/61.mp3bin0 -> 11863 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/62.mp3bin0 -> 14420 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/63.mp3bin0 -> 9964 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/64.mp3bin0 -> 13744 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/65.mp3bin0 -> 11136 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/66.mp3bin0 -> 9154 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/67.mp3bin0 -> 14732 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/68.mp3bin0 -> 17449 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/69.mp3bin0 -> 19385 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/7.mp3bin0 -> 19174 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/70.mp3bin0 -> 10485 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/71.mp3bin0 -> 17736 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/72.mp3bin0 -> 14452 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/73.mp3bin0 -> 12178 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/74.mp3bin0 -> 18593 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/75.mp3bin0 -> 10221 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/76.mp3bin0 -> 17815 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/77.mp3bin0 -> 12497 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/78.mp3bin0 -> 17634 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/79.mp3bin0 -> 15388 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/8.mp3bin0 -> 12596 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/80.mp3bin0 -> 10895 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/81.mp3bin0 -> 11708 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/82.mp3bin0 -> 16842 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/83.mp3bin0 -> 10873 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/84.mp3bin0 -> 13326 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/85.mp3bin0 -> 16038 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/86.mp3bin0 -> 8422 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/87.mp3bin0 -> 9989 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/88.mp3bin0 -> 11343 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/89.mp3bin0 -> 11528 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/9.mp3bin0 -> 14240 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/90.mp3bin0 -> 8294 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/91.mp3bin0 -> 14370 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/92.mp3bin0 -> 18336 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/93.mp3bin0 -> 16564 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/94.mp3bin0 -> 11920 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/95.mp3bin0 -> 16853 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/96.mp3bin0 -> 16590 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/97.mp3bin0 -> 14479 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/98.mp3bin0 -> 13931 bytes
-rw-r--r--site/app/partialemergence/sounds/Water/Paddling/99.mp3bin0 -> 16515 bytes
-rw-r--r--site/app/twigs/index.html54
-rw-r--r--site/app/twigs/twigs.csd18
-rw-r--r--site/app/twigs/twigs.css167
-rw-r--r--site/app/twigs/twigs.js1165
-rw-r--r--site/app/twigs/twigs_ui.js577
-rw-r--r--site/app/twine/_hOLD/clip.js499
-rw-r--r--site/app/twine/_hOLD/index.html863
-rw-r--r--site/app/twine/_hOLD/index_old.html102
-rw-r--r--site/app/twine/_hOLD/index_workingold.html1251
-rw-r--r--site/app/twine/_hOLD/timeline.csd154
-rw-r--r--site/app/twine/_hOLD/timeline_base.html633
-rw-r--r--site/app/twine/channel.js499
-rw-r--r--site/app/twine/clip.js769
-rw-r--r--site/app/twine/flac fucking.js65
-rw-r--r--site/app/twine/index.html209
-rw-r--r--site/app/twine/libflac.min.js23
-rw-r--r--site/app/twine/libflac.min.js.membin0 -> 10554 bytes
-rw-r--r--site/app/twine/mixer.js149
-rw-r--r--site/app/twine/timeline.js736
-rw-r--r--site/app/twine/twine.csd413
-rw-r--r--site/app/twine/twine.css438
-rw-r--r--site/app/twine/twine.js517
-rw-r--r--site/app/twine/twine_ui.js506
-rw-r--r--site/app/twirl/appdata.js1427
-rw-r--r--site/app/twirl/font/Chicago.woffbin0 -> 15020 bytes
-rw-r--r--site/app/twirl/font/JosefinSans.ttfbin0 -> 117720 bytes
-rw-r--r--site/app/twirl/font/NationalPark-Regular.woffbin0 -> 18140 bytes
-rw-r--r--site/app/twirl/font/Nouveau_IBM.woffbin0 -> 29380 bytes
-rw-r--r--site/app/twirl/icon/areaSelect.svg1
-rw-r--r--site/app/twirl/icon/arrowsUpDown.svg1
-rw-r--r--site/app/twirl/icon/audition.svg1
-rw-r--r--site/app/twirl/icon/automate.svg1
-rw-r--r--site/app/twirl/icon/brightnessDecrease.svg1
-rw-r--r--site/app/twirl/icon/brightnessIncrease.svg1
-rw-r--r--site/app/twirl/icon/close.svg1
-rw-r--r--site/app/twirl/icon/commit.svg1
-rw-r--r--site/app/twirl/icon/copy.svg1
-rw-r--r--site/app/twirl/icon/crossfade.svg1
-rw-r--r--site/app/twirl/icon/cut.svg1
-rw-r--r--site/app/twirl/icon/delete.svg1
-rw-r--r--site/app/twirl/icon/develop.svg1
-rw-r--r--site/app/twirl/icon/ear.svg1
-rw-r--r--site/app/twirl/icon/fileVolume.svg1
-rw-r--r--site/app/twirl/icon/hand.svg1
-rw-r--r--site/app/twirl/icon/hide.svg1
-rw-r--r--site/app/twirl/icon/horizontalArrows.svg1
-rw-r--r--site/app/twirl/icon/horizontalFold.svg1
-rw-r--r--site/app/twirl/icon/lasso.svg1
-rw-r--r--site/app/twirl/icon/loop.svg1
-rw-r--r--site/app/twirl/icon/modulate.svg1
-rw-r--r--site/app/twirl/icon/move.svg1
-rw-r--r--site/app/twirl/icon/paste.svg1
-rw-r--r--site/app/twirl/icon/pasteSpecial.svg1
-rw-r--r--site/app/twirl/icon/pencil.svg1
-rw-r--r--site/app/twirl/icon/play.svg1
-rw-r--r--site/app/twirl/icon/pointer.svg1
-rw-r--r--site/app/twirl/icon/randomise.svg1
-rw-r--r--site/app/twirl/icon/record.svg1
-rw-r--r--site/app/twirl/icon/redo.svg1
-rw-r--r--site/app/twirl/icon/reset.svg1
-rw-r--r--site/app/twirl/icon/rewind.svg1
-rw-r--r--site/app/twirl/icon/save.svg1
-rw-r--r--site/app/twirl/icon/script.svg1
-rw-r--r--site/app/twirl/icon/show.svg1
-rw-r--r--site/app/twirl/icon/showAll.svg1
-rw-r--r--site/app/twirl/icon/stop.svg1
-rw-r--r--site/app/twirl/icon/trim.svg1
-rw-r--r--site/app/twirl/icon/undo.svg1
-rw-r--r--site/app/twirl/icon/verticalArrows.svg1
-rw-r--r--site/app/twirl/icon/verticalFold.svg1
-rw-r--r--site/app/twirl/icon/waves.svg1
-rw-r--r--site/app/twirl/icon/zoomIn.svg1
-rw-r--r--site/app/twirl/icon/zoomOut.svg1
-rw-r--r--site/app/twirl/icon/zoomSelection.svg1
-rw-r--r--site/app/twirl/notedata.json1
-rw-r--r--site/app/twirl/stdui.js494
-rw-r--r--site/app/twirl/theme.css284
-rw-r--r--site/app/twirl/transform.js1212
-rw-r--r--site/app/twirl/twirl.css310
-rw-r--r--site/app/twirl/twirl.js479
-rw-r--r--site/app/twirl/twirl_compiler.py92
-rw-r--r--site/app/twist/_unlive/apid.js978
-rw-r--r--site/app/twist/_unlive/index.api.html1144
-rw-r--r--site/app/twist/_unlive/splinetest.html42
-rw-r--r--site/app/twist/_unlive/transform.js1024
-rw-r--r--site/app/twist/_unlive/twist_fxtester.csd101
-rw-r--r--site/app/twist/_unlive/twist_instance_WIP.js350
-rw-r--r--site/app/twist/_unlive/twist_instance_separation_WIP.js1250
-rw-r--r--site/app/twist/developer_documentation.html742
-rw-r--r--site/app/twist/documentation.html181
-rw-r--r--site/app/twist/index.html98
-rw-r--r--site/app/twist/twist.csd19
-rw-r--r--site/app/twist/twist.css309
-rw-r--r--site/app/twist/twist.js1248
-rw-r--r--site/app/twist/twist_ui.js674
-rw-r--r--site/app/twist/version notes.txt11
-rw-r--r--site/code/base.js60
-rw-r--r--site/code/csound.js903
-rw-r--r--site/code/csound.js.map9
-rw-r--r--site/code/csound.orig.js903
-rw-r--r--site/code/d3.v7.min.js2
-rw-r--r--site/code/input-knobs.js342
-rw-r--r--site/code/jquery.js4
-rw-r--r--site/code/nexusui.js9393
-rw-r--r--site/code/svg.js13
-rw-r--r--site/controls/!16 Button - 16 number.json1
-rw-r--r--site/controls/!16 Button - 16 number.pngbin0 -> 15542 bytes
-rw-r--r--site/controls/!16 Button - Orange 2.json1
-rw-r--r--site/controls/!16 Button - Orange 2.pngbin0 -> 15753 bytes
-rw-r--r--site/controls/!16 Button 3 POWER.json1
-rw-r--r--site/controls/!16 Button 3 POWER.pngbin0 -> 15584 bytes
-rw-r--r--site/controls/!16 Button 4 invis.json1
-rw-r--r--site/controls/!16 Button 4 invis.pngbin0 -> 15434 bytes
-rw-r--r--site/controls/!16 Button 5 random.json1
-rw-r--r--site/controls/!16 Button 5 random.pngbin0 -> 15845 bytes
-rw-r--r--site/controls/!16 Button 5 randomTe1.json1
-rw-r--r--site/controls/!16 Button 5 randomTe1.pngbin0 -> 395 bytes
-rw-r--r--site/controls/!16 Button speaker.json1
-rw-r--r--site/controls/!16 Button speaker.pngbin0 -> 15567 bytes
-rw-r--r--site/controls/!16 Circle letter P.json1
-rw-r--r--site/controls/!16 Circle letter P.pngbin0 -> 1015 bytes
-rw-r--r--site/controls/!16 Circle.json1
-rw-r--r--site/controls/!16 Circle.pngbin0 -> 15857 bytes
-rw-r--r--site/controls/!32 Button 2.json1
-rw-r--r--site/controls/!32 Button 2.pngbin0 -> 15495 bytes
-rw-r--r--site/controls/!32 Button invis.json1
-rw-r--r--site/controls/!32 Button invis.pngbin0 -> 15456 bytes
-rw-r--r--site/controls/!3c Knob Blue.json1
-rw-r--r--site/controls/!3c Knob Blue.pngbin0 -> 39906 bytes
-rw-r--r--site/controls/!3c Knob Green.json1
-rw-r--r--site/controls/!3c Knob Green.pngbin0 -> 35950 bytes
-rw-r--r--site/controls/!3c Knob Red.json1
-rw-r--r--site/controls/!3c Knob Red.pngbin0 -> 38538 bytes
-rw-r--r--site/controls/!3c Knob Yellow.json1
-rw-r--r--site/controls/!3c Knob Yellow.pngbin0 -> 38973 bytes
-rw-r--r--site/controls/!9-2020_LEON3D-2020edit_01.json1
-rw-r--r--site/controls/!9-2020_LEON3D-2020edit_01.pngbin0 -> 1574099 bytes
-rw-r--r--site/controls/!A 1.json1
-rw-r--r--site/controls/!A 1.pngbin0 -> 47626 bytes
-rw-r--r--site/controls/!A 2 MED.json1
-rw-r--r--site/controls/!A 2 MED.pngbin0 -> 12753 bytes
-rw-r--r--site/controls/!A 2 SMALL.json1
-rw-r--r--site/controls/!A 2 SMALL.pngbin0 -> 7837 bytes
-rw-r--r--site/controls/!A 2 SMALL_v0001.json1
-rw-r--r--site/controls/!A 2 SMALL_v0001.pngbin0 -> 35544 bytes
-rw-r--r--site/controls/!A 2.json1
-rw-r--r--site/controls/!A 2.pngbin0 -> 42449 bytes
-rw-r--r--site/controls/!A 2_v0001.json1
-rw-r--r--site/controls/!A 2_v0001.pngbin0 -> 69602 bytes
-rw-r--r--site/controls/!A 3.json1
-rw-r--r--site/controls/!A 3.pngbin0 -> 70518 bytes
-rw-r--r--site/controls/!AL 2S Grey Empty Knob Blue.json1
-rw-r--r--site/controls/!AL 2S Grey Empty Knob Blue.pngbin0 -> 9000 bytes
-rw-r--r--site/controls/!AL Grey Empty Knob Blue.json1
-rw-r--r--site/controls/!AL Grey Empty Knob Blue.pngbin0 -> 8855 bytes
-rw-r--r--site/controls/!AL Grey Empty Knob Red.json1
-rw-r--r--site/controls/!AL Grey Empty Knob Red.pngbin0 -> 8922 bytes
-rw-r--r--site/controls/!AL Grey Empty Knob Yellow 2S.json1
-rw-r--r--site/controls/!AL Grey Empty Knob Yellow 2S.pngbin0 -> 9062 bytes
-rw-r--r--site/controls/!AL Grey Empty Knob Yellow.json1
-rw-r--r--site/controls/!AL Grey Empty Knob Yellow.pngbin0 -> 8903 bytes
-rw-r--r--site/controls/!AL Horizontal Fader Small.json1
-rw-r--r--site/controls/!AL Horizontal Fader Small.pngbin0 -> 5816 bytes
-rw-r--r--site/controls/!AL Horizontal Fader Yellow Small.json1
-rw-r--r--site/controls/!AL Horizontal Fader Yellow Small.pngbin0 -> 5838 bytes
-rw-r--r--site/controls/!Ableton Fader Blue NA.json1
-rw-r--r--site/controls/!Ableton Fader Blue NA.pngbin0 -> 6779 bytes
-rw-r--r--site/controls/!Ableton Fader Green NA.json1
-rw-r--r--site/controls/!Ableton Fader Green NA.pngbin0 -> 3603 bytes
-rw-r--r--site/controls/!Ableton Fader Yellow NA.json1
-rw-r--r--site/controls/!Ableton Fader Yellow NA.pngbin0 -> 7032 bytes
-rw-r--r--site/controls/!Ableton Horizontal Fader Red.json1
-rw-r--r--site/controls/!Ableton Horizontal Fader Red.pngbin0 -> 6935 bytes
-rw-r--r--site/controls/!Ableton Horizontal Fader Yellow.json1
-rw-r--r--site/controls/!Ableton Horizontal Fader Yellow.pngbin0 -> 6814 bytes
-rw-r--r--site/controls/!Ableton Horizontal Fader.json1
-rw-r--r--site/controls/!Ableton Horizontal Fader.pngbin0 -> 6919 bytes
-rw-r--r--site/controls/!Ableton VU.json1
-rw-r--r--site/controls/!Ableton VU.pngbin0 -> 233152 bytes
-rw-r--r--site/controls/!Button Flat Blue 2.json1
-rw-r--r--site/controls/!Button Flat Blue 2.pngbin0 -> 2184 bytes
-rw-r--r--site/controls/!Button_Empty_Medium.json1
-rw-r--r--site/controls/!Button_Empty_Medium.pngbin0 -> 2196 bytes
-rw-r--r--site/controls/!FL Black.json1
-rw-r--r--site/controls/!FL Black.pngbin0 -> 16492 bytes
-rw-r--r--site/controls/!FL Red.json1
-rw-r--r--site/controls/!FL Red.pngbin0 -> 16464 bytes
-rw-r--r--site/controls/!Fader Horiz Flat 66px Yellow.json1
-rw-r--r--site/controls/!Fader Horiz Flat 66px Yellow.pngbin0 -> 2611 bytes
-rw-r--r--site/controls/!Reduction Meter Inv Green.json1
-rw-r--r--site/controls/!Reduction Meter Inv Green.pngbin0 -> 3606 bytes
-rw-r--r--site/controls/!Snapshot.json1
-rw-r--r--site/controls/!Snapshot.pngbin0 -> 15144 bytes
-rw-r--r--site/controls/!Switcher O-B-W Rounded float.json1
-rw-r--r--site/controls/!Switcher O-B-W Rounded float.pngbin0 -> 16004 bytes
-rw-r--r--site/controls/!Switcher.json1
-rw-r--r--site/controls/!Switcher.pngbin0 -> 14781 bytes
-rw-r--r--site/controls/!Upside Down.json1
-rw-r--r--site/controls/!Upside Down.pngbin0 -> 24858 bytes
-rw-r--r--site/controls/!Valhalla Slider Small.json1
-rw-r--r--site/controls/!Valhalla Slider Small.pngbin0 -> 2132 bytes
-rw-r--r--site/controls/!Valhalla Slider.json1
-rw-r--r--site/controls/!Valhalla Slider.pngbin0 -> 22059 bytes
-rw-r--r--site/controls/.htaccess1
-rw-r--r--site/controls/01-MY VU Mod-2.json1
-rw-r--r--site/controls/01-MY VU Mod-2.pngbin0 -> 1342731 bytes
-rw-r--r--site/controls/111TJATEST.json1
-rw-r--r--site/controls/111TJATEST.pngbin0 -> 457377 bytes
-rw-r--r--site/controls/2020timb_Aquamarine Button-01.json1
-rw-r--r--site/controls/2020timb_Aquamarine Button-01.pngbin0 -> 1105 bytes
-rw-r--r--site/controls/2020timb_Aquamarine Button-02.json1
-rw-r--r--site/controls/2020timb_Aquamarine Button-02.pngbin0 -> 1108 bytes
-rw-r--r--site/controls/2020timb_Aquamarine Knob-01.json1
-rw-r--r--site/controls/2020timb_Aquamarine Knob-01.pngbin0 -> 841723 bytes
-rw-r--r--site/controls/2020timb_Aquamarine Knob-02.json1
-rw-r--r--site/controls/2020timb_Aquamarine Knob-02.pngbin0 -> 19989 bytes
-rw-r--r--site/controls/BESTRPOKE_MUTE(15-2)-b.json1
-rw-r--r--site/controls/BESTRPOKE_MUTE(15-2)-b.pngbin0 -> 1340 bytes
-rw-r--r--site/controls/BESTRPOKE_MUTE(15-2)-c.json1
-rw-r--r--site/controls/BESTRPOKE_MUTE(15-2)-c.pngbin0 -> 1241 bytes
-rw-r--r--site/controls/BESTRPOKE_MUTE(15-2).json1
-rw-r--r--site/controls/BESTRPOKE_MUTE(15-2).pngbin0 -> 1328 bytes
-rw-r--r--site/controls/BESTRPOKE_SOLO(15-2)-b.json1
-rw-r--r--site/controls/BESTRPOKE_SOLO(15-2)-b.pngbin0 -> 1463 bytes
-rw-r--r--site/controls/BESTRPOKE_SOLO(15-2).json1
-rw-r--r--site/controls/BESTRPOKE_SOLO(15-2).pngbin0 -> 1398 bytes
-rw-r--r--site/controls/Beatwing25_BUTTON16x.json1
-rw-r--r--site/controls/Beatwing25_BUTTON16x.pngbin0 -> 1126 bytes
-rw-r--r--site/controls/ButtonLOREZ16.json1
-rw-r--r--site/controls/ButtonLOREZ16.pngbin0 -> 1050 bytes
-rw-r--r--site/controls/ButtonLOREZ16green.json1
-rw-r--r--site/controls/ButtonLOREZ16green.pngbin0 -> 1048 bytes
-rw-r--r--site/controls/ButtonLOREZ16yellow.json1
-rw-r--r--site/controls/ButtonLOREZ16yellow.pngbin0 -> 1056 bytes
-rw-r--r--site/controls/Concerto-OnOff16x.json1
-rw-r--r--site/controls/Concerto-OnOff16x.pngbin0 -> 1167 bytes
-rw-r--r--site/controls/CybZinc_Button-0116x.json1
-rw-r--r--site/controls/CybZinc_Button-0116x.pngbin0 -> 593 bytes
-rw-r--r--site/controls/DEFBUTTO_OnOff16.json1
-rw-r--r--site/controls/DEFBUTTO_OnOff16.pngbin0 -> 348 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-b.json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-b.pngbin0 -> 1470 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-c.json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-c.pngbin0 -> 1026 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-d.json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-d.pngbin0 -> 707 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-e.json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-e.pngbin0 -> 244 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-f.json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2)-f.pngbin0 -> 802 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2).json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(15-2).pngbin0 -> 1432 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(16X).json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(16X).pngbin0 -> 1057 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(16X)2.json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE(16X)2.pngbin0 -> 706 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_DIST(15-2).json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_DIST(15-2).pngbin0 -> 1354 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_DLY(15-2).json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_DLY(15-2).pngbin0 -> 1350 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_EQ(15-2).json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_EQ(15-2).pngbin0 -> 1331 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_MOD(15-2).json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_MOD(15-2).pngbin0 -> 1602 bytes
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_REV(15-2).json1
-rw-r--r--site/controls/FXGUI2017_BESTPOKE_REV(15-2).pngbin0 -> 1444 bytes
-rw-r--r--site/controls/FXGUI2017_DEF5NITE(21-2)-1.json1
-rw-r--r--site/controls/FXGUI2017_DEF5NITE(21-2)-1.pngbin0 -> 984 bytes
-rw-r--r--site/controls/FXGUI2017_DEF5NITE(21-2)-2.json1
-rw-r--r--site/controls/FXGUI2017_DEF5NITE(21-2)-2.pngbin0 -> 940 bytes
-rw-r--r--site/controls/FXGUI2017_JANNE(29-2).json1
-rw-r--r--site/controls/FXGUI2017_JANNE(29-2).pngbin0 -> 947 bytes
-rw-r--r--site/controls/FXGUI2017_NITROGEN(18-2).json1
-rw-r--r--site/controls/FXGUI2017_NITROGEN(18-2).pngbin0 -> 828 bytes
-rw-r--r--site/controls/FXGUI2017_PAULA(18-2)-1.json1
-rw-r--r--site/controls/FXGUI2017_PAULA(18-2)-1.pngbin0 -> 1034 bytes
-rw-r--r--site/controls/FXGUI2017_PAULA(18-2)-2.json1
-rw-r--r--site/controls/FXGUI2017_PAULA(18-2)-2.pngbin0 -> 827 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-00.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-00.pngbin0 -> 879 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-01.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-01.pngbin0 -> 795 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-02.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-02.pngbin0 -> 722 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-03.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-03.pngbin0 -> 791 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-04.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-04.pngbin0 -> 799 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-05.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-05.pngbin0 -> 729 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-06.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-06.pngbin0 -> 787 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-07.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-07.pngbin0 -> 713 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-08.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-08.pngbin0 -> 668 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-09.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-09.pngbin0 -> 715 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-10.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-10.pngbin0 -> 781 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-11.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-11.pngbin0 -> 815 bytes
-rw-r--r--site/controls/FXGUI2018_NoGFX-12.json1
-rw-r--r--site/controls/FXGUI2018_NoGFX-12.pngbin0 -> 806 bytes
-rw-r--r--site/controls/Fader(29x61x334_167).json1
-rw-r--r--site/controls/Fader(29x61x334_167).pngbin0 -> 114493 bytes
-rw-r--r--site/controls/GR METER Black ZenoMOD.json1
-rw-r--r--site/controls/GR METER Black ZenoMOD.pngbin0 -> 79273 bytes
-rw-r--r--site/controls/GR Meter 2 RED.json1
-rw-r--r--site/controls/GR Meter 2 RED.pngbin0 -> 6224 bytes
-rw-r--r--site/controls/GR_Timb_MeterBlackOnixTwo_8x63-129blo.json1
-rw-r--r--site/controls/GR_Timb_MeterBlackOnixTwo_8x63-129blo.pngbin0 -> 11469 bytes
-rw-r--r--site/controls/Geist2RecRetro.json1
-rw-r--r--site/controls/Geist2RecRetro.pngbin0 -> 878 bytes
-rw-r--r--site/controls/Geist2metronome.json1
-rw-r--r--site/controls/Geist2metronome.pngbin0 -> 835 bytes
-rw-r--r--site/controls/Geist2play.json1
-rw-r--r--site/controls/Geist2play.pngbin0 -> 513 bytes
-rw-r--r--site/controls/Geist2quantise.json1
-rw-r--r--site/controls/Geist2quantise.pngbin0 -> 825 bytes
-rw-r--r--site/controls/Geist2rec.json1
-rw-r--r--site/controls/Geist2rec.pngbin0 -> 599 bytes
-rw-r--r--site/controls/Guitar Rig 5_379_PICTURE.json1
-rw-r--r--site/controls/Guitar Rig 5_379_PICTURE.pngbin0 -> 3442 bytes
-rw-r--r--site/controls/Guitar Rig 5_630_PICTURE.json1
-rw-r--r--site/controls/Guitar Rig 5_630_PICTURE.pngbin0 -> 261734 bytes
-rw-r--r--site/controls/ICON_HEADPHONE.json1
-rw-r--r--site/controls/ICON_HEADPHONE.pngbin0 -> 667 bytes
-rw-r--r--site/controls/ICON_HEADPHONE2.json1
-rw-r--r--site/controls/ICON_HEADPHONE2.pngbin0 -> 593 bytes
-rw-r--r--site/controls/Joesi_bigpot.json1
-rw-r--r--site/controls/Joesi_bigpot.pngbin0 -> 1177856 bytes
-rw-r--r--site/controls/KM2016_Ableton Knobs_(16x16_128fr)_yellow.json1
-rw-r--r--site/controls/KM2016_Ableton Knobs_(16x16_128fr)_yellow.pngbin0 -> 14402 bytes
-rw-r--r--site/controls/KM2016_BlackAngleEdt_32-128fr.json1
-rw-r--r--site/controls/KM2016_BlackAngleEdt_32-128fr.pngbin0 -> 137289 bytes
-rw-r--r--site/controls/KM2016_BlackAngleEdt_40-128fr.json1
-rw-r--r--site/controls/KM2016_BlackAngleEdt_40-128fr.pngbin0 -> 201290 bytes
-rw-r--r--site/controls/KM2016_BlackAngleEdt_64-128fr.json1
-rw-r--r--site/controls/KM2016_BlackAngleEdt_64-128fr.pngbin0 -> 441695 bytes
-rw-r--r--site/controls/KM2016_CPHATbpFiltrHI_32-128fr.json1
-rw-r--r--site/controls/KM2016_CPHATbpFiltrHI_32-128fr.pngbin0 -> 25381 bytes
-rw-r--r--site/controls/KM2016_CPHATbpFiltrLO_32-128fr.json1
-rw-r--r--site/controls/KM2016_CPHATbpFiltrLO_32-128fr.pngbin0 -> 24411 bytes
-rw-r--r--site/controls/KM2016_CPHATbpFiltrMIX_32-128fr.json1
-rw-r--r--site/controls/KM2016_CPHATbpFiltrMIX_32-128fr.pngbin0 -> 23974 bytes
-rw-r--r--site/controls/KM2016_SENDHORZ(40x20-128fr)-01.json1
-rw-r--r--site/controls/KM2016_SENDHORZ(40x20-128fr)-01.pngbin0 -> 11726 bytes
-rw-r--r--site/controls/KM2016_SilverBox_(32x20-128fr).json1
-rw-r--r--site/controls/KM2016_SilverBox_(32x20-128fr).pngbin0 -> 21843 bytes
-rw-r--r--site/controls/KM2016_Silverflatwithno_(64x64-128fr).json1
-rw-r--r--site/controls/KM2016_Silverflatwithno_(64x64-128fr).pngbin0 -> 222780 bytes
-rw-r--r--site/controls/KM2016_Silverflatwithno_(96x96-128fr).json1
-rw-r--r--site/controls/KM2016_Silverflatwithno_(96x96-128fr).pngbin0 -> 986281 bytes
-rw-r--r--site/controls/KM2016_SimpleBigKnobBlue_48-128fr.json1
-rw-r--r--site/controls/KM2016_SimpleBigKnobBlue_48-128fr.pngbin0 -> 19862 bytes
-rw-r--r--site/controls/KM2016_SimpleBigKnobGreen_48-128fr.json1
-rw-r--r--site/controls/KM2016_SimpleBigKnobGreen_48-128fr.pngbin0 -> 44061 bytes
-rw-r--r--site/controls/KM2016_SimpleBigKnobGrey_40-128fr.json1
-rw-r--r--site/controls/KM2016_SimpleBigKnobGrey_40-128fr.pngbin0 -> 27476 bytes
-rw-r--r--site/controls/KM2016_SimpleBigKnobOrange_40-128fr.json1
-rw-r--r--site/controls/KM2016_SimpleBigKnobOrange_40-128fr.pngbin0 -> 32105 bytes
-rw-r--r--site/controls/KM2016_SimpleBigKnobOrange_48-128fr.json1
-rw-r--r--site/controls/KM2016_SimpleBigKnobOrange_48-128fr.pngbin0 -> 45126 bytes
-rw-r--r--site/controls/KM2016_SimpleBigKnobSatGreen_40-128fr.json1
-rw-r--r--site/controls/KM2016_SimpleBigKnobSatGreen_40-128fr.pngbin0 -> 31842 bytes
-rw-r--r--site/controls/KM2016_SimpleBigKnobSatRED_40-128fr.json1
-rw-r--r--site/controls/KM2016_SimpleBigKnobSatRED_40-128fr.pngbin0 -> 31431 bytes
-rw-r--r--site/controls/KM2016_SimpleBigKnobWhite_40-128fr.json1
-rw-r--r--site/controls/KM2016_SimpleBigKnobWhite_40-128fr.pngbin0 -> 32097 bytes
-rw-r--r--site/controls/KM2016_Sweet_Pan01yellow_(24x24-128fr).json1
-rw-r--r--site/controls/KM2016_Sweet_Pan01yellow_(24x24-128fr).pngbin0 -> 11126 bytes
-rw-r--r--site/controls/KM2016_Sweet_SEND_(20x20-128fr)_Purple.json1
-rw-r--r--site/controls/KM2016_Sweet_SEND_(20x20-128fr)_Purple.pngbin0 -> 9498 bytes
-rw-r--r--site/controls/KM2016_Sweet_Vol01blue_(24x24-128fr).json1
-rw-r--r--site/controls/KM2016_Sweet_Vol01blue_(24x24-128fr).pngbin0 -> 12063 bytes
-rw-r--r--site/controls/KM2016_Vintage_Knob(tmbedt64-128fr).json1
-rw-r--r--site/controls/KM2016_Vintage_Knob(tmbedt64-128fr).pngbin0 -> 61402 bytes
-rw-r--r--site/controls/KM2016_XVKnobmed-pan_26x26-128fr.json1
-rw-r--r--site/controls/KM2016_XVKnobmed-pan_26x26-128fr.pngbin0 -> 54149 bytes
-rw-r--r--site/controls/KM2016_XVKnobmed_26x26-128fr.json1
-rw-r--r--site/controls/KM2016_XVKnobmed_26x26-128fr.pngbin0 -> 58922 bytes
-rw-r--r--site/controls/KM2016_cyan_light_knob_(32x32-128fr).json1
-rw-r--r--site/controls/KM2016_cyan_light_knob_(32x32-128fr).pngbin0 -> 102804 bytes
-rw-r--r--site/controls/KM2016_flstudio-style_(timbedt_30-128fr).json1
-rw-r--r--site/controls/KM2016_flstudio-style_(timbedt_30-128fr).pngbin0 -> 21499 bytes
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_black.json1
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_black.pngbin0 -> 94531 bytes
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_blue.json1
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_blue.pngbin0 -> 100487 bytes
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_gray.json1
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_gray.pngbin0 -> 82811 bytes
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_green.json1
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_green.pngbin0 -> 101025 bytes
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_red.json1
-rw-r--r--site/controls/KM2016_knobTmbmod_(26x26-128fr)_red.pngbin0 -> 99865 bytes
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_blue.json1
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_blue.pngbin0 -> 113536 bytes
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_green.json1
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_green.pngbin0 -> 114437 bytes
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_grey.json1
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_grey.pngbin0 -> 99048 bytes
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_purpl.json1
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_purpl.pngbin0 -> 115967 bytes
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_red.json1
-rw-r--r--site/controls/KM2016_knob_(26x26-128fr)_red.pngbin0 -> 114168 bytes
-rw-r--r--site/controls/KM2016_knob_(30x30-128fr).json1
-rw-r--r--site/controls/KM2016_knob_(30x30-128fr).pngbin0 -> 115709 bytes
-rw-r--r--site/controls/KM2016_lineshadow_(64x64-128fr).json1
-rw-r--r--site/controls/KM2016_lineshadow_(64x64-128fr).pngbin0 -> 234365 bytes
-rw-r--r--site/controls/KM_Speaker_64-128fr.json1
-rw-r--r--site/controls/KM_Speaker_64-128fr.pngbin0 -> 298763 bytes
-rw-r--r--site/controls/Kirnu-Cream_x64_106_PNG.json1
-rw-r--r--site/controls/Kirnu-Cream_x64_106_PNG.pngbin0 -> 3961 bytes
-rw-r--r--site/controls/Kirnu-Cream_x64_107_PNG.json1
-rw-r--r--site/controls/Kirnu-Cream_x64_107_PNG.pngbin0 -> 4949 bytes
-rw-r--r--site/controls/Kirnu-Cream_x64_108_PNG.json1
-rw-r--r--site/controls/Kirnu-Cream_x64_108_PNG.pngbin0 -> 145397 bytes
-rw-r--r--site/controls/Kirnu-Cream_x64_108_PNG2.json1
-rw-r--r--site/controls/Kirnu-Cream_x64_108_PNG2.pngbin0 -> 63471 bytes
-rw-r--r--site/controls/Kirnu-Cream_x64_108_PNG3.json1
-rw-r--r--site/controls/Kirnu-Cream_x64_108_PNG3.pngbin0 -> 63803 bytes
-rw-r--r--site/controls/Kirnu-Cream_x64_109_PNG.json1
-rw-r--r--site/controls/Kirnu-Cream_x64_109_PNG.pngbin0 -> 152010 bytes
-rw-r--r--site/controls/Kirnu-Cream_x64_109_PNG2.json1
-rw-r--r--site/controls/Kirnu-Cream_x64_109_PNG2.pngbin0 -> 62494 bytes
-rw-r--r--site/controls/Kirnu-Cream_x64_109_PNG2b.json1
-rw-r--r--site/controls/Kirnu-Cream_x64_109_PNG2b.pngbin0 -> 42758 bytes
-rw-r--r--site/controls/Kirnu-Cream_x64_109_PNG3.json1
-rw-r--r--site/controls/Kirnu-Cream_x64_109_PNG3.pngbin0 -> 62277 bytes
-rw-r--r--site/controls/LARGE_Pan_(25x25-101fr).json1
-rw-r--r--site/controls/LARGE_Pan_(25x25-101fr).pngbin0 -> 12489 bytes
-rw-r--r--site/controls/LARGE_SLIDERFULL_(59x318-128fr).json1
-rw-r--r--site/controls/LARGE_SLIDERFULL_(59x318-128fr).pngbin0 -> 244190 bytes
-rw-r--r--site/controls/LARGE_SLIDER_TYPE2.json1
-rw-r--r--site/controls/LARGE_SLIDER_TYPE2.pngbin0 -> 1461 bytes
-rw-r--r--site/controls/LBX - green line 32.json1
-rw-r--r--site/controls/LBX - green line 32.pngbin0 -> 14562 bytes
-rw-r--r--site/controls/LBX - green line 64.json1
-rw-r--r--site/controls/LBX - green line 64.pngbin0 -> 50886 bytes
-rw-r--r--site/controls/LBX - yellow line 32.json1
-rw-r--r--site/controls/LBX - yellow line 32.pngbin0 -> 13503 bytes
-rw-r--r--site/controls/LBX - yellow line 64.json1
-rw-r--r--site/controls/LBX - yellow line 64.pngbin0 -> 47063 bytes
-rw-r--r--site/controls/LBX invisible 140x32.json1
-rw-r--r--site/controls/LBX invisible 140x32.pngbin0 -> 245 bytes
-rw-r--r--site/controls/LBX-3Dknob-01_(32x128).json1
-rw-r--r--site/controls/LBX-3Dknob-01_(32x128).pngbin0 -> 77845 bytes
-rw-r--r--site/controls/LBX-3Dknob-01_(48x128).json1
-rw-r--r--site/controls/LBX-3Dknob-01_(48x128).pngbin0 -> 190489 bytes
-rw-r--r--site/controls/LBX-3Dknob-01_(64x128).json1
-rw-r--r--site/controls/LBX-3Dknob-01_(64x128).pngbin0 -> 358115 bytes
-rw-r--r--site/controls/LBXTimb_ILDWW32Blck-01.json1
-rw-r--r--site/controls/LBXTimb_ILDWW32Blck-01.pngbin0 -> 265118 bytes
-rw-r--r--site/controls/LBXTimb_ILDWW32Silv-01.json1
-rw-r--r--site/controls/LBXTimb_ILDWW32Silv-01.pngbin0 -> 343789 bytes
-rw-r--r--site/controls/LBXTimb_ILPoizoneWheel-01.json1
-rw-r--r--site/controls/LBXTimb_ILPoizoneWheel-01.pngbin0 -> 274587 bytes
-rw-r--r--site/controls/LBXTimb_ILTB Btn-1.json1
-rw-r--r--site/controls/LBXTimb_ILTB Btn-1.pngbin0 -> 914 bytes
-rw-r--r--site/controls/LBXTimb_ILTB Btn-2.json1
-rw-r--r--site/controls/LBXTimb_ILTB Btn-2.pngbin0 -> 1005 bytes
-rw-r--r--site/controls/LBXTimb_ILTB Btn-3.json1
-rw-r--r--site/controls/LBXTimb_ILTB Btn-3.pngbin0 -> 1021 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample10a_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample10a_16130.pngbin0 -> 10796 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample10b_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample10b_16130.pngbin0 -> 11679 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample2_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample2_16130.pngbin0 -> 13746 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample3_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample3_16130.pngbin0 -> 14069 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample4_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample4_16130.pngbin0 -> 15012 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample5_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample5_16130.pngbin0 -> 15596 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample6_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample6_16130.pngbin0 -> 10495 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample7_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample7_16130.pngbin0 -> 10817 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample8_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample8_16130.pngbin0 -> 11456 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample9a_16129WASD.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample9a_16129WASD.pngbin0 -> 12616 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample9b_16129WASD.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample9b_16129WASD.pngbin0 -> 13556 bytes
-rw-r--r--site/controls/LBXTimb_aSimpleSample_16130.json1
-rw-r--r--site/controls/LBXTimb_aSimpleSample_16130.pngbin0 -> 15407 bytes
-rw-r--r--site/controls/LBX_2Cogs.json1
-rw-r--r--site/controls/LBX_2Cogs.pngbin0 -> 2161 bytes
-rw-r--r--site/controls/LBX_Actions_PlayStop32.json1
-rw-r--r--site/controls/LBX_Actions_PlayStop32.pngbin0 -> 2148 bytes
-rw-r--r--site/controls/LBX_Button32.json1
-rw-r--r--site/controls/LBX_Button32.pngbin0 -> 3604 bytes
-rw-r--r--site/controls/LBX_Button32_Blue.json1
-rw-r--r--site/controls/LBX_Button32_Blue.pngbin0 -> 3652 bytes
-rw-r--r--site/controls/LBX_Button32_Orange.json1
-rw-r--r--site/controls/LBX_Button32_Orange.pngbin0 -> 3334 bytes
-rw-r--r--site/controls/LBX_Button32_Red.json1
-rw-r--r--site/controls/LBX_Button32_Red.pngbin0 -> 3454 bytes
-rw-r--r--site/controls/LBX_Button32_Yellow.json1
-rw-r--r--site/controls/LBX_Button32_Yellow.pngbin0 -> 3386 bytes
-rw-r--r--site/controls/LBX_Button48.json1
-rw-r--r--site/controls/LBX_Button48.pngbin0 -> 7183 bytes
-rw-r--r--site/controls/LBX_CircleKnob1.json1
-rw-r--r--site/controls/LBX_CircleKnob1.pngbin0 -> 19013 bytes
-rw-r--r--site/controls/LBX_CircleKnob1_(timb-dark).json1
-rw-r--r--site/controls/LBX_CircleKnob1_(timb-dark).pngbin0 -> 32651 bytes
-rw-r--r--site/controls/LBX_CircleKnob1_(timb-inv).json1
-rw-r--r--site/controls/LBX_CircleKnob1_(timb-inv).pngbin0 -> 27580 bytes
-rw-r--r--site/controls/LBX_CircleSlider1.json1
-rw-r--r--site/controls/LBX_CircleSlider1.pngbin0 -> 100876 bytes
-rw-r--r--site/controls/LBX_FX.json1
-rw-r--r--site/controls/LBX_FX.pngbin0 -> 937 bytes
-rw-r--r--site/controls/LBX_Invisible.json1
-rw-r--r--site/controls/LBX_Invisible.pngbin0 -> 75 bytes
-rw-r--r--site/controls/LBX_M-drk.json1
-rw-r--r--site/controls/LBX_M-drk.pngbin0 -> 1041 bytes
-rw-r--r--site/controls/LBX_M.json1
-rw-r--r--site/controls/LBX_M.pngbin0 -> 937 bytes
-rw-r--r--site/controls/LBX_REC.json1
-rw-r--r--site/controls/LBX_REC.pngbin0 -> 955 bytes
-rw-r--r--site/controls/LBX_S-drk.json1
-rw-r--r--site/controls/LBX_S-drk.pngbin0 -> 1218 bytes
-rw-r--r--site/controls/LBX_S.json1
-rw-r--r--site/controls/LBX_S.pngbin0 -> 865 bytes
-rw-r--r--site/controls/LBX_ledstrip_b_gy.json1
-rw-r--r--site/controls/LBX_ledstrip_b_gy.pngbin0 -> 58488 bytes
-rw-r--r--site/controls/LBX_ledstrip_bars.json1
-rw-r--r--site/controls/LBX_ledstrip_bars.pngbin0 -> 105381 bytes
-rw-r--r--site/controls/LBX_ledstrip_bars2.json1
-rw-r--r--site/controls/LBX_ledstrip_bars2.pngbin0 -> 13781 bytes
-rw-r--r--site/controls/LBX_ledstrip_c_gy.json1
-rw-r--r--site/controls/LBX_ledstrip_c_gy.pngbin0 -> 57336 bytes
-rw-r--r--site/controls/LBX_ledstrip_d_gy.json1
-rw-r--r--site/controls/LBX_ledstrip_d_gy.pngbin0 -> 57999 bytes
-rw-r--r--site/controls/LBX_ledstrip_g.json1
-rw-r--r--site/controls/LBX_ledstrip_g.pngbin0 -> 121339 bytes
-rw-r--r--site/controls/Large_Mute(23x46).json1
-rw-r--r--site/controls/Large_Mute(23x46).pngbin0 -> 631 bytes
-rw-r--r--site/controls/Large_Mute(23x50).json1
-rw-r--r--site/controls/Large_Mute(23x50).pngbin0 -> 686 bytes
-rw-r--r--site/controls/Large_Pan(27x28x128).json1
-rw-r--r--site/controls/Large_Pan(27x28x128).pngbin0 -> 10374 bytes
-rw-r--r--site/controls/Large_Phase(17x38).json1
-rw-r--r--site/controls/Large_Phase(17x38).pngbin0 -> 930 bytes
-rw-r--r--site/controls/Large_REC_(23x54).json1
-rw-r--r--site/controls/Large_REC_(23x54).pngbin0 -> 1747 bytes
-rw-r--r--site/controls/Large_REC_(23x54)2.json1
-rw-r--r--site/controls/Large_REC_(23x54)2.pngbin0 -> 2155 bytes
-rw-r--r--site/controls/Large_Solo(23x46).json1
-rw-r--r--site/controls/Large_Solo(23x46).pngbin0 -> 683 bytes
-rw-r--r--site/controls/Large_Solo(23x50).json1
-rw-r--r--site/controls/Large_Solo(23x50).pngbin0 -> 666 bytes
-rw-r--r--site/controls/MJMUTE.json1
-rw-r--r--site/controls/MJMUTE.pngbin0 -> 950 bytes
-rw-r--r--site/controls/MJSOLO.json1
-rw-r--r--site/controls/MJSOLO.pngbin0 -> 988 bytes
-rw-r--r--site/controls/MPS-16128SEQ-1.json1
-rw-r--r--site/controls/MPS-16128SEQ-1.pngbin0 -> 603 bytes
-rw-r--r--site/controls/MPS-1664SEQ-2.json1
-rw-r--r--site/controls/MPS-1664SEQ-2.pngbin0 -> 380 bytes
-rw-r--r--site/controls/Microtonic Multi_BEETLEKNOBcrp.json1
-rw-r--r--site/controls/Microtonic Multi_BEETLEKNOBcrp.pngbin0 -> 475483 bytes
-rw-r--r--site/controls/NEVE-73-CLIP.json1
-rw-r--r--site/controls/NEVE-73-CLIP.pngbin0 -> 1135 bytes
-rw-r--r--site/controls/NORA-REC_64128.json1
-rw-r--r--site/controls/NORA-REC_64128.pngbin0 -> 6322 bytes
-rw-r--r--site/controls/NORA-REC_64128b.json1
-rw-r--r--site/controls/NORA-REC_64128b.pngbin0 -> 11353 bytes
-rw-r--r--site/controls/NitroButto16-01graygreen.json1
-rw-r--r--site/controls/NitroButto16-01graygreen.pngbin0 -> 737 bytes
-rw-r--r--site/controls/NitroButto16-01redgreen.json1
-rw-r--r--site/controls/NitroButto16-01redgreen.pngbin0 -> 771 bytes
-rw-r--r--site/controls/NitroButto16-02graygreen.json1
-rw-r--r--site/controls/NitroButto16-02graygreen.pngbin0 -> 677 bytes
-rw-r--r--site/controls/NitroButto16-02redgreen.json1
-rw-r--r--site/controls/NitroButto16-02redgreen.pngbin0 -> 606 bytes
-rw-r--r--site/controls/NitroButto16-03FX.json1
-rw-r--r--site/controls/NitroButto16-03FX.pngbin0 -> 800 bytes
-rw-r--r--site/controls/NovLauConKnob3d.json1
-rw-r--r--site/controls/NovLauConKnob3d.pngbin0 -> 384288 bytes
-rw-r--r--site/controls/REA_UHBIK2016-01_(96-100).json1
-rw-r--r--site/controls/REA_UHBIK2016-01_(96-100).pngbin0 -> 1573524 bytes
-rw-r--r--site/controls/SA SLAX limit.json1
-rw-r--r--site/controls/SA SLAX limit.pngbin0 -> 1365 bytes
-rw-r--r--site/controls/SA bigpot.json1
-rw-r--r--site/controls/SA bigpot.pngbin0 -> 271986 bytes
-rw-r--r--site/controls/SA needles.json1
-rw-r--r--site/controls/SA needles.pngbin0 -> 126859 bytes
-rw-r--r--site/controls/SA prepot.json1
-rw-r--r--site/controls/SA prepot.pngbin0 -> 25924 bytes
-rw-r--r--site/controls/SC_A1GATE_Note_12x18-101fr.json1
-rw-r--r--site/controls/SC_A1GATE_Note_12x18-101fr.pngbin0 -> 1617 bytes
-rw-r--r--site/controls/SC_A1GATE_Note_12x32-101.json1
-rw-r--r--site/controls/SC_A1GATE_Note_12x32-101.pngbin0 -> 2135 bytes
-rw-r--r--site/controls/SC_A1GATE_Note_8x16-4fr.json1
-rw-r--r--site/controls/SC_A1GATE_Note_8x16-4fr.pngbin0 -> 209 bytes
-rw-r--r--site/controls/SC_A1GATE_Note_8x32-4fr.json1
-rw-r--r--site/controls/SC_A1GATE_Note_8x32-4fr.pngbin0 -> 230 bytes
-rw-r--r--site/controls/SC_A1GATE_Volume_12x18-101.json1
-rw-r--r--site/controls/SC_A1GATE_Volume_12x18-101.pngbin0 -> 4960 bytes
-rw-r--r--site/controls/SC_A1GATE_Volume_12x36-101.json1
-rw-r--r--site/controls/SC_A1GATE_Volume_12x36-101.pngbin0 -> 9489 bytes
-rw-r--r--site/controls/SC_A1GATE_Volume_8x32-101.json1
-rw-r--r--site/controls/SC_A1GATE_Volume_8x32-101.pngbin0 -> 7587 bytes
-rw-r--r--site/controls/SC_BTNDef5-MUTE_12.json1
-rw-r--r--site/controls/SC_BTNDef5-MUTE_12.pngbin0 -> 686 bytes
-rw-r--r--site/controls/SC_BTNDef5-MUTE_16.json1
-rw-r--r--site/controls/SC_BTNDef5-MUTE_16.pngbin0 -> 482 bytes
-rw-r--r--site/controls/SC_BTNDef5-SOLO_12.json1
-rw-r--r--site/controls/SC_BTNDef5-SOLO_12.pngbin0 -> 640 bytes
-rw-r--r--site/controls/SC_BTNDef5-SOLO_16.json1
-rw-r--r--site/controls/SC_BTNDef5-SOLO_16.pngbin0 -> 517 bytes
-rw-r--r--site/controls/SC_BTNFusionSwsMUTE16.json1
-rw-r--r--site/controls/SC_BTNFusionSwsMUTE16.pngbin0 -> 1038 bytes
-rw-r--r--site/controls/SC_BTNFusionSwsMUTE16b.json1
-rw-r--r--site/controls/SC_BTNFusionSwsMUTE16b.pngbin0 -> 909 bytes
-rw-r--r--site/controls/SC_BTNFusionSwsSOLO16.json1
-rw-r--r--site/controls/SC_BTNFusionSwsSOLO16.pngbin0 -> 1035 bytes
-rw-r--r--site/controls/SC_BTNFusionSwsSOLO16b.json1
-rw-r--r--site/controls/SC_BTNFusionSwsSOLO16b.pngbin0 -> 840 bytes
-rw-r--r--site/controls/SC_CamelGATE2017_8x24-128.json1
-rw-r--r--site/controls/SC_CamelGATE2017_8x24-128.pngbin0 -> 5561 bytes
-rw-r--r--site/controls/SC_CamelGATE_8x32-101-b.json1
-rw-r--r--site/controls/SC_CamelGATE_8x32-101-b.pngbin0 -> 5444 bytes
-rw-r--r--site/controls/SC_CamelGATE_8x32-101-c.json1
-rw-r--r--site/controls/SC_CamelGATE_8x32-101-c.pngbin0 -> 7548 bytes
-rw-r--r--site/controls/SC_CamelGATE_8x32-101.json1
-rw-r--r--site/controls/SC_CamelGATE_8x32-101.pngbin0 -> 3668 bytes
-rw-r--r--site/controls/SC_GraniteMainv2(64-128fr).json1
-rw-r--r--site/controls/SC_GraniteMainv2(64-128fr).pngbin0 -> 96203 bytes
-rw-r--r--site/controls/SC_GraniteSplitv2(64-128fr).json1
-rw-r--r--site/controls/SC_GraniteSplitv2(64-128fr).pngbin0 -> 94851 bytes
-rw-r--r--site/controls/SC_GraniteStartv2(196-128fr).json1
-rw-r--r--site/controls/SC_GraniteStartv2(196-128fr).pngbin0 -> 1866039 bytes
-rw-r--r--site/controls/SC_K4SliderVERT.json1
-rw-r--r--site/controls/SC_K4SliderVERT.pngbin0 -> 10823 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)-brwn.json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)-brwn.pngbin0 -> 45626 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm).json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm).pngbin0 -> 46820 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)blue.json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)blue.pngbin0 -> 47278 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)bluesft.json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)bluesft.pngbin0 -> 46855 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green.json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green.pngbin0 -> 45938 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green2.json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green2.pngbin0 -> 46509 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)prpl.json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)prpl.pngbin0 -> 46237 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)satrt.json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)satrt.pngbin0 -> 46500 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)ylw.json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(24x24-101frm)ylw.pngbin0 -> 47096 bytes
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(30x30-101frm).json1
-rw-r--r--site/controls/SC_KNOB-REDTRCK_(30x30-101frm).pngbin0 -> 42825 bytes
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)1.json1
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)1.pngbin0 -> 8408 bytes
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)2.json1
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)2.pngbin0 -> 8455 bytes
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)2b.json1
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)2b.pngbin0 -> 12624 bytes
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)3.json1
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)3.pngbin0 -> 8418 bytes
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)4.json1
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)4.pngbin0 -> 7124 bytes
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)5.json1
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)5.pngbin0 -> 7225 bytes
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)6.json1
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)6.pngbin0 -> 7073 bytes
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)7.json1
-rw-r--r--site/controls/SC_Knob_(16x16-100fr)7.pngbin0 -> 7215 bytes
-rw-r--r--site/controls/SC_LBX-knob10bis_(32x128).json1
-rw-r--r--site/controls/SC_LBX-knob10bis_(32x128).pngbin0 -> 21532 bytes
-rw-r--r--site/controls/SC_LightSEQ_128x8-16fr.json1
-rw-r--r--site/controls/SC_LightSEQ_128x8-16fr.pngbin0 -> 1471 bytes
-rw-r--r--site/controls/SC_LightSEQ_128x8-64fr.json1
-rw-r--r--site/controls/SC_LightSEQ_128x8-64fr.pngbin0 -> 5294 bytes
-rw-r--r--site/controls/SC_Loopey-AmpKnob(50x101).json1
-rw-r--r--site/controls/SC_Loopey-AmpKnob(50x101).pngbin0 -> 114472 bytes
-rw-r--r--site/controls/SC_Loopey-DarkRedKnob(50x101).json1
-rw-r--r--site/controls/SC_Loopey-DarkRedKnob(50x101).pngbin0 -> 227171 bytes
-rw-r--r--site/controls/SC_Loopey-Slider 01.json1
-rw-r--r--site/controls/SC_Loopey-Slider 01.pngbin0 -> 158179 bytes
-rw-r--r--site/controls/SC_Loopey-Slider 02_1664-101.json1
-rw-r--r--site/controls/SC_Loopey-Slider 02_1664-101.pngbin0 -> 46092 bytes
-rw-r--r--site/controls/SC_Loopey-Slider 02_1688-101.json1
-rw-r--r--site/controls/SC_Loopey-Slider 02_1688-101.pngbin0 -> 52608 bytes
-rw-r--r--site/controls/SC_Loopey-Slider 03_1664-101.json1
-rw-r--r--site/controls/SC_Loopey-Slider 03_1664-101.pngbin0 -> 51212 bytes
-rw-r--r--site/controls/SC_Loopey-Slider 03_1688-101.json1
-rw-r--r--site/controls/SC_Loopey-Slider 03_1688-101.pngbin0 -> 60123 bytes
-rw-r--r--site/controls/SC_Loopey-Slider 04Horz_844-101.json1
-rw-r--r--site/controls/SC_Loopey-Slider 04Horz_844-101.pngbin0 -> 11966 bytes
-rw-r--r--site/controls/SC_Loopey-Slider 04_844-101.json1
-rw-r--r--site/controls/SC_Loopey-Slider 04_844-101.pngbin0 -> 15049 bytes
-rw-r--r--site/controls/SC_Loopey-Slider Horz01_8816-101.json1
-rw-r--r--site/controls/SC_Loopey-Slider Horz01_8816-101.pngbin0 -> 56192 bytes
-rw-r--r--site/controls/SC_PLAY_16x16-2fr-b.json1
-rw-r--r--site/controls/SC_PLAY_16x16-2fr-b.pngbin0 -> 370 bytes
-rw-r--r--site/controls/SC_PLAY_16x16-2fr-c.json1
-rw-r--r--site/controls/SC_PLAY_16x16-2fr-c.pngbin0 -> 502 bytes
-rw-r--r--site/controls/SC_PLAY_16x16-2fr-d.json1
-rw-r--r--site/controls/SC_PLAY_16x16-2fr-d.pngbin0 -> 342 bytes
-rw-r--r--site/controls/SC_PLAY_16x16-2fr-e.json1
-rw-r--r--site/controls/SC_PLAY_16x16-2fr-e.pngbin0 -> 343 bytes
-rw-r--r--site/controls/SC_PLAY_16x16-2fr.json1
-rw-r--r--site/controls/SC_PLAY_16x16-2fr.pngbin0 -> 333 bytes
-rw-r--r--site/controls/SC_PRGRAMC-BOX_(192x36-128fr).json1
-rw-r--r--site/controls/SC_PRGRAMC-BOX_(192x36-128fr).pngbin0 -> 47347 bytes
-rw-r--r--site/controls/SC_PRGRAMC-BOX_(352x32-128fr).json1
-rw-r--r--site/controls/SC_PRGRAMC-BOX_(352x32-128fr).pngbin0 -> 53493 bytes
-rw-r--r--site/controls/SC_PRGRAMC_(96x128fr).json1
-rw-r--r--site/controls/SC_PRGRAMC_(96x128fr).pngbin0 -> 513987 bytes
-rw-r--r--site/controls/SC_Pall_Knob-01(96x64).json1
-rw-r--r--site/controls/SC_Pall_Knob-01(96x64).pngbin0 -> 659459 bytes
-rw-r--r--site/controls/SC_STORAGE-01_(4x4-150).json1
-rw-r--r--site/controls/SC_STORAGE-01_(4x4-150).pngbin0 -> 1777 bytes
-rw-r--r--site/controls/SC_SimpleMeterHORZ2_(16x4-100fr).json1
-rw-r--r--site/controls/SC_SimpleMeterHORZ2_(16x4-100fr).pngbin0 -> 1821 bytes
-rw-r--r--site/controls/SC_SimpleMeterHORZ2_(32x8-100fr).json1
-rw-r--r--site/controls/SC_SimpleMeterHORZ2_(32x8-100fr).pngbin0 -> 1567 bytes
-rw-r--r--site/controls/SC_SimpleMeterHORZ2_(8x4-100fr).json1
-rw-r--r--site/controls/SC_SimpleMeterHORZ2_(8x4-100fr).pngbin0 -> 1511 bytes
-rw-r--r--site/controls/SC_SimpleMeterHORZ_(32x8-100fr).json1
-rw-r--r--site/controls/SC_SimpleMeterHORZ_(32x8-100fr).pngbin0 -> 2730 bytes
-rw-r--r--site/controls/SC_SimpleMeterHORZ_(32x8-100fr)flip.json1
-rw-r--r--site/controls/SC_SimpleMeterHORZ_(32x8-100fr)flip.pngbin0 -> 1939 bytes
-rw-r--r--site/controls/SC_SliderH-01_(32x8-128fr).json1
-rw-r--r--site/controls/SC_SliderH-01_(32x8-128fr).pngbin0 -> 9280 bytes
-rw-r--r--site/controls/SC_SliderH-01_(40x16-128fr)drk.json1
-rw-r--r--site/controls/SC_SliderH-01_(40x16-128fr)drk.pngbin0 -> 40688 bytes
-rw-r--r--site/controls/SC_SliderH-01_(40x20-128fr).json1
-rw-r--r--site/controls/SC_SliderH-01_(40x20-128fr).pngbin0 -> 47249 bytes
-rw-r--r--site/controls/SC_SliderH-01_(64x16-128fr).json1
-rw-r--r--site/controls/SC_SliderH-01_(64x16-128fr).pngbin0 -> 52570 bytes
-rw-r--r--site/controls/SC_SliderH-01_(64x16-128fr)drk.json1
-rw-r--r--site/controls/SC_SliderH-01_(64x16-128fr)drk.pngbin0 -> 36276 bytes
-rw-r--r--site/controls/SC_SliderH-01_(64x16-128fr)tobuss.json1
-rw-r--r--site/controls/SC_SliderH-01_(64x16-128fr)tobuss.pngbin0 -> 45082 bytes
-rw-r--r--site/controls/SC_SliderH-01_(96x23-128fr).json1
-rw-r--r--site/controls/SC_SliderH-01_(96x23-128fr).pngbin0 -> 83404 bytes
-rw-r--r--site/controls/SC_SliderH_MaschineNo(timbmod64x16-128fr).json1
-rw-r--r--site/controls/SC_SliderH_MaschineNo(timbmod64x16-128fr).pngbin0 -> 38304 bytes
-rw-r--r--site/controls/SC_SliderV-01_(8x40-128fr)toFXin.json1
-rw-r--r--site/controls/SC_SliderV-01_(8x40-128fr)toFXin.pngbin0 -> 20936 bytes
-rw-r--r--site/controls/SC_SliderV-01_(8x40-128fr)toFXinDRK.json1
-rw-r--r--site/controls/SC_SliderV-01_(8x40-128fr)toFXinDRK.pngbin0 -> 18777 bytes
-rw-r--r--site/controls/SC_SurroGate-SEND-48101.json1
-rw-r--r--site/controls/SC_SurroGate-SEND-48101.pngbin0 -> 210905 bytes
-rw-r--r--site/controls/SC_SurroGate-SEND02-58101.json1
-rw-r--r--site/controls/SC_SurroGate-SEND02-58101.pngbin0 -> 32973 bytes
-rw-r--r--site/controls/SC_Switcher-01.json1
-rw-r--r--site/controls/SC_Switcher-01.pngbin0 -> 896 bytes
-rw-r--r--site/controls/SC_Switcher-01rvrs.json1
-rw-r--r--site/controls/SC_Switcher-01rvrs.pngbin0 -> 897 bytes
-rw-r--r--site/controls/SC_Switcher-02-109.json1
-rw-r--r--site/controls/SC_Switcher-02-109.pngbin0 -> 5055 bytes
-rw-r--r--site/controls/SC_Switcher-02-65.json1
-rw-r--r--site/controls/SC_Switcher-02-65.pngbin0 -> 4997 bytes
-rw-r--r--site/controls/SC_Switcher-03.json1
-rw-r--r--site/controls/SC_Switcher-03.pngbin0 -> 1303 bytes
-rw-r--r--site/controls/SC_SwitcherWIDE-01rvrs.json1
-rw-r--r--site/controls/SC_SwitcherWIDE-01rvrs.pngbin0 -> 265 bytes
-rw-r--r--site/controls/SC_White_GranitePitch_64x64-73fr.json1
-rw-r--r--site/controls/SC_White_GranitePitch_64x64-73fr.pngbin0 -> 44692 bytes
-rw-r--r--site/controls/SC_iKnobProgramV2_32128.json1
-rw-r--r--site/controls/SC_iKnobProgramV2_32128.pngbin0 -> 23043 bytes
-rw-r--r--site/controls/SC_iKnobProgramV2_40128.json1
-rw-r--r--site/controls/SC_iKnobProgramV2_40128.pngbin0 -> 38275 bytes
-rw-r--r--site/controls/SC_iKnobProgramV2_48128.json1
-rw-r--r--site/controls/SC_iKnobProgramV2_48128.pngbin0 -> 48452 bytes
-rw-r--r--site/controls/SC_iKnobProgramV2_64128.json1
-rw-r--r--site/controls/SC_iKnobProgramV2_64128.pngbin0 -> 79667 bytes
-rw-r--r--site/controls/SC_iKnobProgram_40128.json1
-rw-r--r--site/controls/SC_iKnobProgram_40128.pngbin0 -> 48878 bytes
-rw-r--r--site/controls/SC_iKnobProgram_48128.json1
-rw-r--r--site/controls/SC_iKnobProgram_48128.pngbin0 -> 67369 bytes
-rw-r--r--site/controls/SC_iKnobProgram_64128.json1
-rw-r--r--site/controls/SC_iKnobProgram_64128.pngbin0 -> 112852 bytes
-rw-r--r--site/controls/SC_iKnobProgram_64128_4pipeline.json1
-rw-r--r--site/controls/SC_iKnobProgram_64128_4pipeline.pngbin0 -> 58488 bytes
-rw-r--r--site/controls/SC_iKnobProgram_64128_4pipeline2.json1
-rw-r--r--site/controls/SC_iKnobProgram_64128_4pipeline2.pngbin0 -> 1476326 bytes
-rw-r--r--site/controls/SC_knob10bis50x127.json1
-rw-r--r--site/controls/SC_knob10bis50x127.pngbin0 -> 50422 bytes
-rw-r--r--site/controls/Sexan_FaderR5_29334-162fr.json1
-rw-r--r--site/controls/Sexan_FaderR5_29334-162fr.pngbin0 -> 170172 bytes
-rw-r--r--site/controls/Sexan_Timb-Slider_29334-128fr.json1
-rw-r--r--site/controls/Sexan_Timb-Slider_29334-128fr.pngbin0 -> 506100 bytes
-rw-r--r--site/controls/SimpleBox_4816.json1
-rw-r--r--site/controls/SimpleBox_4816.pngbin0 -> 158 bytes
-rw-r--r--site/controls/SimpleBox_6424.json1
-rw-r--r--site/controls/SimpleBox_6424.pngbin0 -> 210 bytes
-rw-r--r--site/controls/SimpleBox_9632.json1
-rw-r--r--site/controls/SimpleBox_9632.pngbin0 -> 293 bytes
-rw-r--r--site/controls/SimpleButton_16.json1
-rw-r--r--site/controls/SimpleButton_16.pngbin0 -> 372 bytes
-rw-r--r--site/controls/SimpleButton_16BLUE.json1
-rw-r--r--site/controls/SimpleButton_16BLUE.pngbin0 -> 834 bytes
-rw-r--r--site/controls/SimpleButton_16GREEN.json1
-rw-r--r--site/controls/SimpleButton_16GREEN.pngbin0 -> 866 bytes
-rw-r--r--site/controls/SimpleButton_16GREEN2.json1
-rw-r--r--site/controls/SimpleButton_16GREEN2.pngbin0 -> 860 bytes
-rw-r--r--site/controls/SimpleButton_16GREEN3.json1
-rw-r--r--site/controls/SimpleButton_16GREEN3.pngbin0 -> 897 bytes
-rw-r--r--site/controls/SimpleButton_16GREENlosat.json1
-rw-r--r--site/controls/SimpleButton_16GREENlosat.pngbin0 -> 882 bytes
-rw-r--r--site/controls/SimpleButton_16RED.json1
-rw-r--r--site/controls/SimpleButton_16RED.pngbin0 -> 846 bytes
-rw-r--r--site/controls/SimpleButton_32.json1
-rw-r--r--site/controls/SimpleButton_32.pngbin0 -> 741 bytes
-rw-r--r--site/controls/SimpleButton_8BLUBLCK.json1
-rw-r--r--site/controls/SimpleButton_8BLUBLCK.pngbin0 -> 475 bytes
-rw-r--r--site/controls/SimpleButton_8GREENlosat.json1
-rw-r--r--site/controls/SimpleButton_8GREENlosat.pngbin0 -> 510 bytes
-rw-r--r--site/controls/SimpleButton_8GREGRY-WASD.json1
-rw-r--r--site/controls/SimpleButton_8GREGRY-WASD.pngbin0 -> 472 bytes
-rw-r--r--site/controls/SimpleButton_8GREGRY.json1
-rw-r--r--site/controls/SimpleButton_8GREGRY.pngbin0 -> 503 bytes
-rw-r--r--site/controls/SimpleButton_8GRERED.json1
-rw-r--r--site/controls/SimpleButton_8GRERED.pngbin0 -> 504 bytes
-rw-r--r--site/controls/SimpleButton_8GRERED2.json1
-rw-r--r--site/controls/SimpleButton_8GRERED2.pngbin0 -> 503 bytes
-rw-r--r--site/controls/SimpleFader_1696.json1
-rw-r--r--site/controls/SimpleFader_1696.pngbin0 -> 8684 bytes
-rw-r--r--site/controls/SimpleFader_24160.json1
-rw-r--r--site/controls/SimpleFader_24160.pngbin0 -> 13466 bytes
-rw-r--r--site/controls/SimpleFlat2_32.json1
-rw-r--r--site/controls/SimpleFlat2_32.pngbin0 -> 14272 bytes
-rw-r--r--site/controls/SimpleFlat2_48.json1
-rw-r--r--site/controls/SimpleFlat2_48.pngbin0 -> 24674 bytes
-rw-r--r--site/controls/SimpleFlat2_64.json1
-rw-r--r--site/controls/SimpleFlat2_64.pngbin0 -> 43585 bytes
-rw-r--r--site/controls/SimpleFlat2_96.json1
-rw-r--r--site/controls/SimpleFlat2_96.pngbin0 -> 367613 bytes
-rw-r--r--site/controls/SimpleFlat_32.json1
-rw-r--r--site/controls/SimpleFlat_32.pngbin0 -> 11921 bytes
-rw-r--r--site/controls/SimpleFlat_48.json1
-rw-r--r--site/controls/SimpleFlat_48.pngbin0 -> 20648 bytes
-rw-r--r--site/controls/SimpleFlat_64.json1
-rw-r--r--site/controls/SimpleFlat_64.pngbin0 -> 37279 bytes
-rw-r--r--site/controls/SimpleFlat_96.json1
-rw-r--r--site/controls/SimpleFlat_96.pngbin0 -> 383484 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(16x128-100fr).json1
-rw-r--r--site/controls/SimpleMeter-Def5_(16x128-100fr).pngbin0 -> 16402 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x24-129fr)-yellow.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x24-129fr)-yellow.pngbin0 -> 1048 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.pngbin0 -> 1116 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x24-129fr).json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x24-129fr).pngbin0 -> 1064 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x24-129fr)RED.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x24-129fr)RED.pngbin0 -> 1060 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr).json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr).pngbin0 -> 1158 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)blo.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)blo.pngbin0 -> 1270 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)orn.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)orn.pngbin0 -> 1238 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)pnk.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)pnk.pngbin0 -> 1282 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)prp.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)prp.pngbin0 -> 1243 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)red.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)red.pngbin0 -> 1253 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)sbl.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)sbl.pngbin0 -> 1252 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)sgn.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)sgn.pngbin0 -> 1255 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)wht.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)wht.pngbin0 -> 1254 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)ylw.json1
-rw-r--r--site/controls/SimpleMeter-Def5_(4x40-129fr)ylw.pngbin0 -> 1105 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(8x24-100fr).json1
-rw-r--r--site/controls/SimpleMeter-Def5_(8x24-100fr).pngbin0 -> 1722 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(8x40-100fr).json1
-rw-r--r--site/controls/SimpleMeter-Def5_(8x40-100fr).pngbin0 -> 4961 bytes
-rw-r--r--site/controls/SimpleMeter-Def5_(8x58-100fr).json1
-rw-r--r--site/controls/SimpleMeter-Def5_(8x58-100fr).pngbin0 -> 2796 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200.pngbin0 -> 3028 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200b.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200b.pngbin0 -> 2539 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200c.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200c.pngbin0 -> 1907 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200d.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200d.pngbin0 -> 2054 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200e.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200e.pngbin0 -> 1933 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200f.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200f.pngbin0 -> 2727 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200g.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200g.pngbin0 -> 1966 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200h.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200h.pngbin0 -> 3131 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200i.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200i.pngbin0 -> 1978 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200k.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200k.pngbin0 -> 3220 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200m.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200m.pngbin0 -> 3234 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200n.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200n.pngbin0 -> 3848 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200o.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200o.pngbin0 -> 2002 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200p.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200p.pngbin0 -> 2468 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200r.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200r.pngbin0 -> 1869 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200s.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200s.pngbin0 -> 1712 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200t.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200t.pngbin0 -> 1709 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200u.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200u.pngbin0 -> 1837 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200v.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200v.pngbin0 -> 1930 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200y.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_15x15x200y.pngbin0 -> 2834 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_16x16x200.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_16x16x200.pngbin0 -> 1997 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_4x8x200.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_4x8x200.pngbin0 -> 1308 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_8x8x200.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_8x8x200.pngbin0 -> 1632 bytes
-rw-r--r--site/controls/SimpleMeter-STORAGE_8x8x200b.json1
-rw-r--r--site/controls/SimpleMeter-STORAGE_8x8x200b.pngbin0 -> 2241 bytes
-rw-r--r--site/controls/SimpleMeterGreen_16192(timbedt).json1
-rw-r--r--site/controls/SimpleMeterGreen_16192(timbedt).pngbin0 -> 8631 bytes
-rw-r--r--site/controls/SimpleMeterGreen_16192.json1
-rw-r--r--site/controls/SimpleMeterGreen_16192.pngbin0 -> 64687 bytes
-rw-r--r--site/controls/SimpleMeter_1240OrEDange.json1
-rw-r--r--site/controls/SimpleMeter_1240OrEDange.pngbin0 -> 3712 bytes
-rw-r--r--site/controls/SimpleMeter_16128.json1
-rw-r--r--site/controls/SimpleMeter_16128.pngbin0 -> 35356 bytes
-rw-r--r--site/controls/SimpleMeter_16192.json1
-rw-r--r--site/controls/SimpleMeter_16192.pngbin0 -> 48147 bytes
-rw-r--r--site/controls/SimpleMeter_824green.json1
-rw-r--r--site/controls/SimpleMeter_824green.pngbin0 -> 5927 bytes
-rw-r--r--site/controls/SimpleMeter_864.json1
-rw-r--r--site/controls/SimpleMeter_864.pngbin0 -> 14284 bytes
-rw-r--r--site/controls/SimpleMeter_864green(timbedt).json1
-rw-r--r--site/controls/SimpleMeter_864green(timbedt).pngbin0 -> 2915 bytes
-rw-r--r--site/controls/SimpleMeter_864green.json1
-rw-r--r--site/controls/SimpleMeter_864green.pngbin0 -> 19948 bytes
-rw-r--r--site/controls/SimpleMeter_864red.json1
-rw-r--r--site/controls/SimpleMeter_864red.pngbin0 -> 20404 bytes
-rw-r--r--site/controls/SimpleMeter_88green.json1
-rw-r--r--site/controls/SimpleMeter_88green.pngbin0 -> 3383 bytes
-rw-r--r--site/controls/StealTheMitch-2.json1
-rw-r--r--site/controls/StealTheMitch-2.pngbin0 -> 972 bytes
-rw-r--r--site/controls/StealTheMitch.json1
-rw-r--r--site/controls/StealTheMitch.pngbin0 -> 1073 bytes
-rw-r--r--site/controls/Switcher Transparent.json1
-rw-r--r--site/controls/Switcher Transparent.pngbin0 -> 783 bytes
-rw-r--r--site/controls/Switcher.json1
-rw-r--r--site/controls/Switcher.pngbin0 -> 261 bytes
-rw-r--r--site/controls/Switcher02(22x82).json1
-rw-r--r--site/controls/Switcher02(22x82).pngbin0 -> 263 bytes
-rw-r--r--site/controls/Switcher03(40x128).json1
-rw-r--r--site/controls/Switcher03(40x128).pngbin0 -> 4056 bytes
-rw-r--r--site/controls/Switcher04(18x148).json1
-rw-r--r--site/controls/Switcher04(18x148).pngbin0 -> 821 bytes
-rw-r--r--site/controls/Switcher05(18x148).json1
-rw-r--r--site/controls/Switcher05(18x148).pngbin0 -> 765 bytes
-rw-r--r--site/controls/Switcher05b(18x148).json1
-rw-r--r--site/controls/Switcher05b(18x148).pngbin0 -> 660 bytes
-rw-r--r--site/controls/Switcher06(18x148).json1
-rw-r--r--site/controls/Switcher06(18x148).pngbin0 -> 607 bytes
-rw-r--r--site/controls/Switcher06(18x148)b.json1
-rw-r--r--site/controls/Switcher06(18x148)b.pngbin0 -> 383 bytes
-rw-r--r--site/controls/Switcher07(20x127).json1
-rw-r--r--site/controls/Switcher07(20x127).pngbin0 -> 262 bytes
-rw-r--r--site/controls/Switcher08(18x64).json1
-rw-r--r--site/controls/Switcher08(18x64).pngbin0 -> 569 bytes
-rw-r--r--site/controls/Switcher08b(16x24).json1
-rw-r--r--site/controls/Switcher08b(16x24).pngbin0 -> 387 bytes
-rw-r--r--site/controls/Switcher08b(16x32).json1
-rw-r--r--site/controls/Switcher08b(16x32).pngbin0 -> 392 bytes
-rw-r--r--site/controls/Switcher08b(18x40).json1
-rw-r--r--site/controls/Switcher08b(18x40).pngbin0 -> 553 bytes
-rw-r--r--site/controls/Switcher08b(32x32).json1
-rw-r--r--site/controls/Switcher08b(32x32).pngbin0 -> 438 bytes
-rw-r--r--site/controls/Switcher09_BigBro(32)1.json1
-rw-r--r--site/controls/Switcher09_BigBro(32)1.pngbin0 -> 861 bytes
-rw-r--r--site/controls/Switcher09_BigBro(48).json1
-rw-r--r--site/controls/Switcher09_BigBro(48).pngbin0 -> 2980 bytes
-rw-r--r--site/controls/Switcher09_BigBro(48)2.json1
-rw-r--r--site/controls/Switcher09_BigBro(48)2.pngbin0 -> 2372 bytes
-rw-r--r--site/controls/Switcher09_BigBro(64)1.json1
-rw-r--r--site/controls/Switcher09_BigBro(64)1.pngbin0 -> 1720 bytes
-rw-r--r--site/controls/Switcher09_BigBro(64)2.json1
-rw-r--r--site/controls/Switcher09_BigBro(64)2.pngbin0 -> 3997 bytes
-rw-r--r--site/controls/Switcher09_BigBro(64)3.json1
-rw-r--r--site/controls/Switcher09_BigBro(64)3.pngbin0 -> 1756 bytes
-rw-r--r--site/controls/Switcher09_BigBro(64)5.json1
-rw-r--r--site/controls/Switcher09_BigBro(64)5.pngbin0 -> 6632 bytes
-rw-r--r--site/controls/Switcher09_BigBro(64)6.json1
-rw-r--r--site/controls/Switcher09_BigBro(64)6.pngbin0 -> 6697 bytes
-rw-r--r--site/controls/Switcher09_BigBro(64)7.json1
-rw-r--r--site/controls/Switcher09_BigBro(64)7.pngbin0 -> 7513 bytes
-rw-r--r--site/controls/Switcher10-Logo_Kont20.json1
-rw-r--r--site/controls/Switcher10-Logo_Kont20.pngbin0 -> 776 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x1(128x30).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x1(128x30).pngbin0 -> 752 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x2(128x22).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x2(128x22).pngbin0 -> 1831 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x2(320x22).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x2(320x22).pngbin0 -> 2019 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x2(416x22).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x2(416x22).pngbin0 -> 3243 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x2b(96x22).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x2b(96x22).pngbin0 -> 1801 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x2b(96x22)b.json1
-rw-r--r--site/controls/Switcher_Bestpoke-x2b(96x22)b.pngbin0 -> 1378 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x2c(80x22).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x2c(80x22).pngbin0 -> 1752 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x2d(64x22).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x2d(64x22).pngbin0 -> 1674 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x2e(48x22).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x2e(48x22).pngbin0 -> 1499 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x3(28x28).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x3(28x28).pngbin0 -> 677 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x3b(28x28).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x3b(28x28).pngbin0 -> 699 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x3c(28x28).json1
-rw-r--r--site/controls/Switcher_Bestpoke-x3c(28x28).pngbin0 -> 676 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x4.json1
-rw-r--r--site/controls/Switcher_Bestpoke-x4.pngbin0 -> 1935 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x4b.json1
-rw-r--r--site/controls/Switcher_Bestpoke-x4b.pngbin0 -> 1385 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x4c.json1
-rw-r--r--site/controls/Switcher_Bestpoke-x4c.pngbin0 -> 879 bytes
-rw-r--r--site/controls/Switcher_Bestpoke-x4d.json1
-rw-r--r--site/controls/Switcher_Bestpoke-x4d.pngbin0 -> 869 bytes
-rw-r--r--site/controls/Switcher_MiniSwitcher1.json1
-rw-r--r--site/controls/Switcher_MiniSwitcher1.pngbin0 -> 816 bytes
-rw-r--r--site/controls/Switcher_MiniSwitcher1b.json1
-rw-r--r--site/controls/Switcher_MiniSwitcher1b.pngbin0 -> 780 bytes
-rw-r--r--site/controls/Switcher_MiniSwitcher2.json1
-rw-r--r--site/controls/Switcher_MiniSwitcher2.pngbin0 -> 609 bytes
-rw-r--r--site/controls/Switcher_MiniSwitcher2b.json1
-rw-r--r--site/controls/Switcher_MiniSwitcher2b.pngbin0 -> 584 bytes
-rw-r--r--site/controls/Switcher_MiniSwitcher2c.json1
-rw-r--r--site/controls/Switcher_MiniSwitcher2c.pngbin0 -> 593 bytes
-rw-r--r--site/controls/Switcher_MiniSwitcher2d.json1
-rw-r--r--site/controls/Switcher_MiniSwitcher2d.pngbin0 -> 566 bytes
-rw-r--r--site/controls/Switcher_MiniSwitcher2e.json1
-rw-r--r--site/controls/Switcher_MiniSwitcher2e.pngbin0 -> 559 bytes
-rw-r--r--site/controls/TJA ValhallaUberModSliderRed.json1
-rw-r--r--site/controls/TJA ValhallaUberModSliderRed.pngbin0 -> 10426 bytes
-rw-r--r--site/controls/TJA ValhallaUberModSliderWhite.json1
-rw-r--r--site/controls/TJA ValhallaUberModSliderWhite.pngbin0 -> 7215 bytes
-rw-r--r--site/controls/TJA_NovLauConButt.json1
-rw-r--r--site/controls/TJA_NovLauConButt.pngbin0 -> 4734 bytes
-rw-r--r--site/controls/TJA_NovLauConButtSmall.json1
-rw-r--r--site/controls/TJA_NovLauConButtSmall.pngbin0 -> 1851 bytes
-rw-r--r--site/controls/TJA_NovLauConButtSmallb.json1
-rw-r--r--site/controls/TJA_NovLauConButtSmallb.pngbin0 -> 2200 bytes
-rw-r--r--site/controls/TJA_NovLauConButtSmallc.json1
-rw-r--r--site/controls/TJA_NovLauConButtSmallc.pngbin0 -> 1798 bytes
-rw-r--r--site/controls/TJA_NovLauConKnob3d.json1
-rw-r--r--site/controls/TJA_NovLauConKnob3d.pngbin0 -> 384288 bytes
-rw-r--r--site/controls/TJA_SliderYellow1.json1
-rw-r--r--site/controls/TJA_SliderYellow1.pngbin0 -> 346290 bytes
-rw-r--r--site/controls/TJA_Zebra2.json1
-rw-r--r--site/controls/TJA_Zebra2.pngbin0 -> 23428 bytes
-rw-r--r--site/controls/TJA_Zebra2_cent_red.json1
-rw-r--r--site/controls/TJA_Zebra2_cent_red.pngbin0 -> 17079 bytes
-rw-r--r--site/controls/TJA_keys_meter.json1
-rw-r--r--site/controls/TJA_keys_meter.pngbin0 -> 234 bytes
-rw-r--r--site/controls/Timb&Bryntes_FLLimiter4_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_FLLimiter4_(64129).pngbin0 -> 78778 bytes
-rw-r--r--site/controls/Timb&Bryntes_Gemini1_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_Gemini1_(64129).pngbin0 -> 171543 bytes
-rw-r--r--site/controls/Timb&Bryntes_OBXREAL_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_OBXREAL_(64129).pngbin0 -> 87546 bytes
-rw-r--r--site/controls/Timb&Bryntes_SteinASS_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_SteinASS_(64129).pngbin0 -> 49936 bytes
-rw-r--r--site/controls/Timb&Bryntes_Tal 50x502_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_Tal 50x502_(64129).pngbin0 -> 37267 bytes
-rw-r--r--site/controls/Timb&Bryntes_Tal 50x50_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_Tal 50x50_(64129).pngbin0 -> 37703 bytes
-rw-r--r--site/controls/Timb&Bryntes_Trap2_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_Trap2_(64129).pngbin0 -> 361164 bytes
-rw-r--r--site/controls/Timb&Bryntes_Trap3_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_Trap3_(64129).pngbin0 -> 359894 bytes
-rw-r--r--site/controls/Timb&Bryntes_Trap4_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_Trap4_(64129).pngbin0 -> 347241 bytes
-rw-r--r--site/controls/Timb&Bryntes_Trap_(64129).json1
-rw-r--r--site/controls/Timb&Bryntes_Trap_(64129).pngbin0 -> 325277 bytes
-rw-r--r--site/controls/Timb&FL_Max+3bEQ_(128x32-130fr).json1
-rw-r--r--site/controls/Timb&FL_Max+3bEQ_(128x32-130fr).pngbin0 -> 184943 bytes
-rw-r--r--site/controls/Timb&FL_MaxEQ_(148x29-130fr).json1
-rw-r--r--site/controls/Timb&FL_MaxEQ_(148x29-130fr).pngbin0 -> 279417 bytes
-rw-r--r--site/controls/Timb&FL_Roland Juno106_(100x27-130fr).json1
-rw-r--r--site/controls/Timb&FL_Roland Juno106_(100x27-130fr).pngbin0 -> 144110 bytes
-rw-r--r--site/controls/Timb&FL_Roland Juno106_(160x27-130fr).json1
-rw-r--r--site/controls/Timb&FL_Roland Juno106_(160x27-130fr).pngbin0 -> 136704 bytes
-rw-r--r--site/controls/Timb&FL_RolandJP8000_(106x43-130fr).json1
-rw-r--r--site/controls/Timb&FL_RolandJP8000_(106x43-130fr).pngbin0 -> 104328 bytes
-rw-r--r--site/controls/Timb&FL_SliderPack-1_(112x44-130fr).json1
-rw-r--r--site/controls/Timb&FL_SliderPack-1_(112x44-130fr).pngbin0 -> 180526 bytes
-rw-r--r--site/controls/Timb&FL_SliderPack-2_(144x75-130fr).json1
-rw-r--r--site/controls/Timb&FL_SliderPack-2_(144x75-130fr).pngbin0 -> 285704 bytes
-rw-r--r--site/controls/Timb&FL_TDA EQ8_(142x38-130fr).json1
-rw-r--r--site/controls/Timb&FL_TDA EQ8_(142x38-130fr).pngbin0 -> 278426 bytes
-rw-r--r--site/controls/Timb&FL_YamahaDX1_(55x24-130fr).json1
-rw-r--r--site/controls/Timb&FL_YamahaDX1_(55x24-130fr).pngbin0 -> 65037 bytes
-rw-r--r--site/controls/Timb&FL_YamahaDX1_(96x24-130fr).json1
-rw-r--r--site/controls/Timb&FL_YamahaDX1_(96x24-130fr).pngbin0 -> 80009 bytes
-rw-r--r--site/controls/Timb&HY_ButtonSquare1(32).json1
-rw-r--r--site/controls/Timb&HY_ButtonSquare1(32).pngbin0 -> 743 bytes
-rw-r--r--site/controls/Timb&HY_DL2_Slider_(1664).json1
-rw-r--r--site/controls/Timb&HY_DL2_Slider_(1664).pngbin0 -> 51545 bytes
-rw-r--r--site/controls/Timb&HY_DL2_Slider_(24130).json1
-rw-r--r--site/controls/Timb&HY_DL2_Slider_(24130).pngbin0 -> 113535 bytes
-rw-r--r--site/controls/Timb&HY_DL2_Slider_(32130).json1
-rw-r--r--site/controls/Timb&HY_DL2_Slider_(32130).pngbin0 -> 181069 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB1_(64130).json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB1_(64130).pngbin0 -> 101410 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB2_(64130).json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB2_(64130).pngbin0 -> 105288 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB2_(64130)b.json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB2_(64130)b.pngbin0 -> 83186 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB3_(64130).json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB3_(64130).pngbin0 -> 105809 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB4_(64130).json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB4_(64130).pngbin0 -> 105765 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130).json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130).pngbin0 -> 104612 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)a.json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)a.pngbin0 -> 22729 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)b.json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)b.pngbin0 -> 22896 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)c.json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)c.pngbin0 -> 22912 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)cbipo.json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)cbipo.pngbin0 -> 23229 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)d.json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)d.pngbin0 -> 41963 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)e.json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB5_(64130)e.pngbin0 -> 76637 bytes
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB6_(64130).json1
-rw-r--r--site/controls/Timb&HY_DLY3LikeBB6_(64130).pngbin0 -> 105277 bytes
-rw-r--r--site/controls/Timb&HY_DLY3Like_(64130).json1
-rw-r--r--site/controls/Timb&HY_DLY3Like_(64130).pngbin0 -> 210431 bytes
-rw-r--r--site/controls/Timb&HY_DLY3Like_(64130)2.json1
-rw-r--r--site/controls/Timb&HY_DLY3Like_(64130)2.pngbin0 -> 105948 bytes
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90).json1
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90).pngbin0 -> 4313 bytes
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)2.json1
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)2.pngbin0 -> 4478 bytes
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)3.json1
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)3.pngbin0 -> 4407 bytes
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ.json1
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ.pngbin0 -> 4139 bytes
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ2.json1
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ2.pngbin0 -> 4281 bytes
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ3.json1
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ3.pngbin0 -> 4269 bytes
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ4.json1
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ4.pngbin0 -> 4249 bytes
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ5.json1
-rw-r--r--site/controls/Timb&HY_Filter3Meter(85x90)HRZ5.pngbin0 -> 5975 bytes
-rw-r--r--site/controls/Timb&HY_ModernishX.json1
-rw-r--r--site/controls/Timb&HY_ModernishX.pngbin0 -> 541 bytes
-rw-r--r--site/controls/Timb&HY_ModernishX2.json1
-rw-r--r--site/controls/Timb&HY_ModernishX2.pngbin0 -> 212 bytes
-rw-r--r--site/controls/Timb&HY_ModernishX2b.json1
-rw-r--r--site/controls/Timb&HY_ModernishX2b.pngbin0 -> 209 bytes
-rw-r--r--site/controls/Timb&HY_ModernishX2c.json1
-rw-r--r--site/controls/Timb&HY_ModernishX2c.pngbin0 -> 686 bytes
-rw-r--r--site/controls/Timb&HY_ModernishX2d.json1
-rw-r--r--site/controls/Timb&HY_ModernishX2d.pngbin0 -> 693 bytes
-rw-r--r--site/controls/Timb&HY_ModernishX2e.json1
-rw-r--r--site/controls/Timb&HY_ModernishX2e.pngbin0 -> 221 bytes
-rw-r--r--site/controls/Timb&HY_ModernishX2e2.json1
-rw-r--r--site/controls/Timb&HY_ModernishX2e2.pngbin0 -> 262 bytes
-rw-r--r--site/controls/Timb&HY_ModernishX2f.json1
-rw-r--r--site/controls/Timb&HY_ModernishX2f.pngbin0 -> 226 bytes
-rw-r--r--site/controls/Timb&HY_ModernishX3.json1
-rw-r--r--site/controls/Timb&HY_ModernishX3.pngbin0 -> 507 bytes
-rw-r--r--site/controls/Timb&HY_ModernishXb.json1
-rw-r--r--site/controls/Timb&HY_ModernishXb.pngbin0 -> 674 bytes
-rw-r--r--site/controls/Timb&HY_ModernishXb2.json1
-rw-r--r--site/controls/Timb&HY_ModernishXb2.pngbin0 -> 680 bytes
-rw-r--r--site/controls/Timb&HY_ModernishXb3.json1
-rw-r--r--site/controls/Timb&HY_ModernishXb3.pngbin0 -> 298 bytes
-rw-r--r--site/controls/Timb&HY_ModernishXb4.json1
-rw-r--r--site/controls/Timb&HY_ModernishXb4.pngbin0 -> 645 bytes
-rw-r--r--site/controls/Timb&HY_ModernishXc.json1
-rw-r--r--site/controls/Timb&HY_ModernishXc.pngbin0 -> 545 bytes
-rw-r--r--site/controls/Timb&HY_ModernishXd.json1
-rw-r--r--site/controls/Timb&HY_ModernishXd.pngbin0 -> 270 bytes
-rw-r--r--site/controls/Timb&HY_ModernishXe.json1
-rw-r--r--site/controls/Timb&HY_ModernishXe.pngbin0 -> 557 bytes
-rw-r--r--site/controls/Timb&HY_ModernishXe2.json1
-rw-r--r--site/controls/Timb&HY_ModernishXe2.pngbin0 -> 623 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1.pngbin0 -> 46259 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX.pngbin0 -> 46497 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX2.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX2.pngbin0 -> 46680 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX2b.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX2b.pngbin0 -> 42098 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX3.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX3.pngbin0 -> 46720 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX4.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX4.pngbin0 -> 47249 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX5.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FX5.pngbin0 -> 46168 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FXpo.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB1FXpo.pngbin0 -> 46738 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB2.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB2.pngbin0 -> 46313 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB3.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB3.pngbin0 -> 46284 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB4.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOB4.pngbin0 -> 46381 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOBbipo1.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOBbipo1.pngbin0 -> 46411 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOBbipo2.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOBbipo2.pngbin0 -> 46408 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOBbipo3.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOBbipo3.pngbin0 -> 46406 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOBbipo4.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_KNOBbipo4.pngbin0 -> 46526 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-1.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-1.pngbin0 -> 5441 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-2.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-2.pngbin0 -> 4858 bytes
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-3.json1
-rw-r--r--site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-3.pngbin0 -> 5536 bytes
-rw-r--r--site/controls/Timb&HY_mozole-1_(64x130).json1
-rw-r--r--site/controls/Timb&HY_mozole-1_(64x130).pngbin0 -> 24762 bytes
-rw-r--r--site/controls/Timb&HY_mozole-2_(64x130).json1
-rw-r--r--site/controls/Timb&HY_mozole-2_(64x130).pngbin0 -> 23699 bytes
-rw-r--r--site/controls/Timb&KHZ_Slider_(321x70-130fr).json1
-rw-r--r--site/controls/Timb&KHZ_Slider_(321x70-130fr).pngbin0 -> 278408 bytes
-rw-r--r--site/controls/Timb&KM_knob_70_black-96128.json1
-rw-r--r--site/controls/Timb&KM_knob_70_black-96128.pngbin0 -> 745399 bytes
-rw-r--r--site/controls/Timb&KM_plastic_knob-96128.json1
-rw-r--r--site/controls/Timb&KM_plastic_knob-96128.pngbin0 -> 570211 bytes
-rw-r--r--site/controls/Timb&KM_plastic_knobarr-96128.json1
-rw-r--r--site/controls/Timb&KM_plastic_knobarr-96128.pngbin0 -> 410064 bytes
-rw-r--r--site/controls/Timb&KM_plastic_knoblitt-96128.json1
-rw-r--r--site/controls/Timb&KM_plastic_knoblitt-96128.pngbin0 -> 577483 bytes
-rw-r--r--site/controls/Timb&kmGallery_1176_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_1176_(64129).pngbin0 -> 125158 bytes
-rw-r--r--site/controls/Timb&kmGallery_1_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_1_(64129).pngbin0 -> 424704 bytes
-rw-r--r--site/controls/Timb&kmGallery_3ModernElegant_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_3ModernElegant_(64129).pngbin0 -> 31812 bytes
-rw-r--r--site/controls/Timb&kmGallery_4ModernChromy_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_4ModernChromy_(64129).pngbin0 -> 545056 bytes
-rw-r--r--site/controls/Timb&kmGallery_ABS_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ABS_(64129).pngbin0 -> 97094 bytes
-rw-r--r--site/controls/Timb&kmGallery_Abletunes_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Abletunes_(64129).pngbin0 -> 127163 bytes
-rw-r--r--site/controls/Timb&kmGallery_Aero_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Aero_(64129).pngbin0 -> 361397 bytes
-rw-r--r--site/controls/Timb&kmGallery_Amount_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Amount_(64129).pngbin0 -> 160994 bytes
-rw-r--r--site/controls/Timb&kmGallery_Behringer-BCF2000_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Behringer-BCF2000_(64129).pngbin0 -> 269481 bytes
-rw-r--r--site/controls/Timb&kmGallery_BlackAngle_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_BlackAngle_(64129).pngbin0 -> 399439 bytes
-rw-r--r--site/controls/Timb&kmGallery_BlackPlasticsmall 01_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_BlackPlasticsmall 01_(64129).pngbin0 -> 228366 bytes
-rw-r--r--site/controls/Timb&kmGallery_BrushedDial_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_BrushedDial_(64129).pngbin0 -> 31889 bytes
-rw-r--r--site/controls/Timb&kmGallery_Cookie_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Cookie_(64129).pngbin0 -> 501558 bytes
-rw-r--r--site/controls/Timb&kmGallery_Credence_bipo_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Credence_bipo_(64129).pngbin0 -> 60368 bytes
-rw-r--r--site/controls/Timb&kmGallery_Credence_bipo_(64129)blo.json1
-rw-r--r--site/controls/Timb&kmGallery_Credence_bipo_(64129)blo.pngbin0 -> 60446 bytes
-rw-r--r--site/controls/Timb&kmGallery_Credence_bipo_(64129)red.json1
-rw-r--r--site/controls/Timb&kmGallery_Credence_bipo_(64129)red.pngbin0 -> 57804 bytes
-rw-r--r--site/controls/Timb&kmGallery_Credence_po_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Credence_po_(64129).pngbin0 -> 60361 bytes
-rw-r--r--site/controls/Timb&kmGallery_Crelay_bipo_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Crelay_bipo_(64129).pngbin0 -> 44379 bytes
-rw-r--r--site/controls/Timb&kmGallery_Crelay_po_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Crelay_po_(64129).pngbin0 -> 43953 bytes
-rw-r--r--site/controls/Timb&kmGallery_Curvature_005_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Curvature_005_(64129).pngbin0 -> 491375 bytes
-rw-r--r--site/controls/Timb&kmGallery_Cut-Off_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Cut-Off_(64129).pngbin0 -> 163391 bytes
-rw-r--r--site/controls/Timb&kmGallery_DARKMAN_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_DARKMAN_(64129).pngbin0 -> 199958 bytes
-rw-r--r--site/controls/Timb&kmGallery_Drive_006_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Drive_006_(64129).pngbin0 -> 215055 bytes
-rw-r--r--site/controls/Timb&kmGallery_Dust Knob2_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Dust Knob2_(64129).pngbin0 -> 432985 bytes
-rw-r--r--site/controls/Timb&kmGallery_Error 418_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Error 418_(64129).pngbin0 -> 505065 bytes
-rw-r--r--site/controls/Timb&kmGallery_GREENATTACKKNOB_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_GREENATTACKKNOB_(64129).pngbin0 -> 429931 bytes
-rw-r--r--site/controls/Timb&kmGallery_Gauss3shadows_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Gauss3shadows_(64129).pngbin0 -> 50337 bytes
-rw-r--r--site/controls/Timb&kmGallery_Glow Knob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Glow Knob_(64129).pngbin0 -> 198961 bytes
-rw-r--r--site/controls/Timb&kmGallery_Half Punk-bi_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Half Punk-bi_(64129).pngbin0 -> 268865 bytes
-rw-r--r--site/controls/Timb&kmGallery_Half Punk-uni_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Half Punk-uni_(64129).pngbin0 -> 268493 bytes
-rw-r--r--site/controls/Timb&kmGallery_Hippy 1_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Hippy 1_(64129).pngbin0 -> 431189 bytes
-rw-r--r--site/controls/Timb&kmGallery_Hippy 2_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Hippy 2_(64129).pngbin0 -> 413698 bytes
-rw-r--r--site/controls/Timb&kmGallery_Hippy 3_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Hippy 3_(64129).pngbin0 -> 412586 bytes
-rw-r--r--site/controls/Timb&kmGallery_Hippy 4_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Hippy 4_(64129).pngbin0 -> 383314 bytes
-rw-r--r--site/controls/Timb&kmGallery_Hippy 5_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Hippy 5_(64129).pngbin0 -> 433745 bytes
-rw-r--r--site/controls/Timb&kmGallery_Hippy 6_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Hippy 6_(64129).pngbin0 -> 45583 bytes
-rw-r--r--site/controls/Timb&kmGallery_Jambalaya_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Jambalaya_(64129).pngbin0 -> 463890 bytes
-rw-r--r--site/controls/Timb&kmGallery_KNB gold_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_KNB gold_(64129).pngbin0 -> 108665 bytes
-rw-r--r--site/controls/Timb&kmGallery_KNB red_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_KNB red_(64129).pngbin0 -> 116382 bytes
-rw-r--r--site/controls/Timb&kmGallery_Knob18edt-1.json1
-rw-r--r--site/controls/Timb&kmGallery_Knob18edt-1.pngbin0 -> 1203858 bytes
-rw-r--r--site/controls/Timb&kmGallery_Knob23_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Knob23_(64129).pngbin0 -> 78423 bytes
-rw-r--r--site/controls/Timb&kmGallery_LFO_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_LFO_(64129).pngbin0 -> 344786 bytes
-rw-r--r--site/controls/Timb&kmGallery_La-bas_009_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_La-bas_009_(64129).pngbin0 -> 253487 bytes
-rw-r--r--site/controls/Timb&kmGallery_MACHINEGUN SMALL2_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_MACHINEGUN SMALL2_(64129).pngbin0 -> 478414 bytes
-rw-r--r--site/controls/Timb&kmGallery_MS2000_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_MS2000_(48129).pngbin0 -> 313682 bytes
-rw-r--r--site/controls/Timb&kmGallery_MS2000_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_MS2000_(64129).pngbin0 -> 515586 bytes
-rw-r--r--site/controls/Timb&kmGallery_MiniBrute_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_MiniBrute_(48129).pngbin0 -> 260222 bytes
-rw-r--r--site/controls/Timb&kmGallery_MiniBrute_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_MiniBrute_(64129).pngbin0 -> 450985 bytes
-rw-r--r--site/controls/Timb&kmGallery_MiniMoogFreq_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_MiniMoogFreq_(64129).pngbin0 -> 836902 bytes
-rw-r--r--site/controls/Timb&kmGallery_MiniMoogMain_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_MiniMoogMain_(64129).pngbin0 -> 688090 bytes
-rw-r--r--site/controls/Timb&kmGallery_MiniMoogSelc_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_MiniMoogSelc_(64129).pngbin0 -> 395355 bytes
-rw-r--r--site/controls/Timb&kmGallery_Minimal_Modern_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Minimal_Modern_(64129).pngbin0 -> 28350 bytes
-rw-r--r--site/controls/Timb&kmGallery_Modern_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Modern_(64129).pngbin0 -> 237728 bytes
-rw-r--r--site/controls/Timb&kmGallery_MultiKnob-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_MultiKnob-edt_(64129).pngbin0 -> 667589 bytes
-rw-r--r--site/controls/Timb&kmGallery_Neve Red Knob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Neve Red Knob_(64129).pngbin0 -> 355191 bytes
-rw-r--r--site/controls/Timb&kmGallery_Noise-2018_(128129).json1
-rw-r--r--site/controls/Timb&kmGallery_Noise-2018_(128129).pngbin0 -> 2650970 bytes
-rw-r--r--site/controls/Timb&kmGallery_Noise_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Noise_(64129).pngbin0 -> 259433 bytes
-rw-r--r--site/controls/Timb&kmGallery_Particles_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Particles_(64129).pngbin0 -> 197061 bytes
-rw-r--r--site/controls/Timb&kmGallery_Predence_012-edt_010_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Predence_012-edt_010_(64129).pngbin0 -> 63379 bytes
-rw-r--r--site/controls/Timb&kmGallery_Prophet5-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Prophet5-edt_(64129).pngbin0 -> 81609 bytes
-rw-r--r--site/controls/Timb&kmGallery_Punch_010_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Punch_010_(64129).pngbin0 -> 31123 bytes
-rw-r--r--site/controls/Timb&kmGallery_Punk_010_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Punk_010_(64129).pngbin0 -> 34731 bytes
-rw-r--r--site/controls/Timb&kmGallery_RedBrick_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_RedBrick_(64129).pngbin0 -> 34143 bytes
-rw-r--r--site/controls/Timb&kmGallery_Redgain_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Redgain_(64129).pngbin0 -> 247096 bytes
-rw-r--r--site/controls/Timb&kmGallery_Refection_013_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Refection_013_(64129).pngbin0 -> 398042 bytes
-rw-r--r--site/controls/Timb&kmGallery_Res_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Res_(64129).pngbin0 -> 61593 bytes
-rw-r--r--site/controls/Timb&kmGallery_Retro_Knob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Retro_Knob_(64129).pngbin0 -> 190159 bytes
-rw-r--r--site/controls/Timb&kmGallery_SSL Red_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_SSL Red_(64129).pngbin0 -> 161579 bytes
-rw-r--r--site/controls/Timb&kmGallery_Saifan 2_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Saifan 2_(64129).pngbin0 -> 353880 bytes
-rw-r--r--site/controls/Timb&kmGallery_Saifan 3_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Saifan 3_(64129).pngbin0 -> 307340 bytes
-rw-r--r--site/controls/Timb&kmGallery_Saifan g_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Saifan g_(64129).pngbin0 -> 308749 bytes
-rw-r--r--site/controls/Timb&kmGallery_ScaleBlu_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ScaleBlu_(64129).pngbin0 -> 208240 bytes
-rw-r--r--site/controls/Timb&kmGallery_ScaleRed_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ScaleRed_(64129).pngbin0 -> 209127 bytes
-rw-r--r--site/controls/Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).pngbin0 -> 81050 bytes
-rw-r--r--site/controls/Timb&kmGallery_ShinyBlueKSP8UNI_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ShinyBlueKSP8UNI_(64129).pngbin0 -> 81836 bytes
-rw-r--r--site/controls/Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).pngbin0 -> 80319 bytes
-rw-r--r--site/controls/Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).pngbin0 -> 81181 bytes
-rw-r--r--site/controls/Timb&kmGallery_ShinyRedKSP8BiPo_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ShinyRedKSP8BiPo_(64129).pngbin0 -> 72911 bytes
-rw-r--r--site/controls/Timb&kmGallery_ShinyRedKSP8UNI_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ShinyRedKSP8UNI_(64129).pngbin0 -> 73861 bytes
-rw-r--r--site/controls/Timb&kmGallery_SimpleFlat4_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_SimpleFlat4_(64129).pngbin0 -> 38457 bytes
-rw-r--r--site/controls/Timb&kmGallery_Slope_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Slope_(64129).pngbin0 -> 99161 bytes
-rw-r--r--site/controls/Timb&kmGallery_SmallKnob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_SmallKnob_(64129).pngbin0 -> 282259 bytes
-rw-r--r--site/controls/Timb&kmGallery_Sonatom_bipo_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Sonatom_bipo_(64129).pngbin0 -> 24586 bytes
-rw-r--r--site/controls/Timb&kmGallery_Sonatom_gold_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Sonatom_gold_(64129).pngbin0 -> 27765 bytes
-rw-r--r--site/controls/Timb&kmGallery_Speedo-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Speedo-edt_(64129).pngbin0 -> 45836 bytes
-rw-r--r--site/controls/Timb&kmGallery_Spine_023-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Spine_023-edt_(64129).pngbin0 -> 1015471 bytes
-rw-r--r--site/controls/Timb&kmGallery_Stamp_003_bipo_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Stamp_003_bipo_(64129).pngbin0 -> 36465 bytes
-rw-r--r--site/controls/Timb&kmGallery_Stamp_003_uni-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Stamp_003_uni-edt_(64129).pngbin0 -> 58859 bytes
-rw-r--r--site/controls/Timb&kmGallery_Sustain_003-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Sustain_003-edt_(64129).pngbin0 -> 362946 bytes
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(48129)b.json1
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(48129)b.pngbin0 -> 269269 bytes
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129).pngbin0 -> 317239 bytes
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b.json1
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b.pngbin0 -> 434276 bytes
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b4bars.json1
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b4bars.pngbin0 -> 434749 bytes
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b4bars2.json1
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b4bars2.pngbin0 -> 465432 bytes
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b4bars3.json1
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b4bars3.pngbin0 -> 406926 bytes
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b4bars4.json1
-rw-r--r--site/controls/Timb&kmGallery_Symmetry_(64129)b4bars4.pngbin0 -> 1327066 bytes
-rw-r--r--site/controls/Timb&kmGallery_SynergyKnob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_SynergyKnob_(64129).pngbin0 -> 109500 bytes
-rw-r--r--site/controls/Timb&kmGallery_TB303_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_TB303_(64129).pngbin0 -> 295411 bytes
-rw-r--r--site/controls/Timb&kmGallery_Toddler_(38129).json1
-rw-r--r--site/controls/Timb&kmGallery_Toddler_(38129).pngbin0 -> 79101 bytes
-rw-r--r--site/controls/Timb&kmGallery_Toddler_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_Toddler_(48129).pngbin0 -> 119963 bytes
-rw-r--r--site/controls/Timb&kmGallery_Toddler_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Toddler_(64129).pngbin0 -> 199020 bytes
-rw-r--r--site/controls/Timb&kmGallery_Tone_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Tone_(64129).pngbin0 -> 231780 bytes
-rw-r--r--site/controls/Timb&kmGallery_Turquoise_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_Turquoise_(48129).pngbin0 -> 188407 bytes
-rw-r--r--site/controls/Timb&kmGallery_Turquoise_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Turquoise_(64129).pngbin0 -> 300164 bytes
-rw-r--r--site/controls/Timb&kmGallery_Volume_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Volume_(64129).pngbin0 -> 423652 bytes
-rw-r--r--site/controls/Timb&kmGallery_Wasteland 001_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Wasteland 001_(64129).pngbin0 -> 44337 bytes
-rw-r--r--site/controls/Timb&kmGallery_Wasteland 002_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Wasteland 002_(64129).pngbin0 -> 346231 bytes
-rw-r--r--site/controls/Timb&kmGallery_Wasteland 006_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Wasteland 006_(64129).pngbin0 -> 377916 bytes
-rw-r--r--site/controls/Timb&kmGallery_Wayout_006-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_Wayout_006-edt_(64129).pngbin0 -> 497634 bytes
-rw-r--r--site/controls/Timb&kmGallery_XV Knob med_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_XV Knob med_(64129).pngbin0 -> 366721 bytes
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDT1_128x130fr.json1
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDT1_128x130fr.pngbin0 -> 159512 bytes
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDT2_128x130fr.json1
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDT2_128x130fr.pngbin0 -> 157998 bytes
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDT3_128x130fr.json1
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDT3_128x130fr.pngbin0 -> 156779 bytes
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDT4_128x130fr.json1
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDT4_128x130fr.pngbin0 -> 158098 bytes
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDTB1_128x130fr.json1
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDTB1_128x130fr.pngbin0 -> 114901 bytes
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDTB2_128x130fr.json1
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDTB2_128x130fr.pngbin0 -> 115351 bytes
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDTB3_128x130fr.json1
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDTB3_128x130fr.pngbin0 -> 115245 bytes
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDTB4_128x130fr.json1
-rw-r--r--site/controls/Timb&kmGallery_XVVFaderEDTB4_128x130fr.pngbin0 -> 115542 bytes
-rw-r--r--site/controls/Timb&kmGallery_color_knob (1)_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_color_knob (1)_(48129).pngbin0 -> 187207 bytes
-rw-r--r--site/controls/Timb&kmGallery_color_knob (1)_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_color_knob (1)_(64129).pngbin0 -> 298624 bytes
-rw-r--r--site/controls/Timb&kmGallery_cyan_light_knob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_cyan_light_knob_(64129).pngbin0 -> 305128 bytes
-rw-r--r--site/controls/Timb&kmGallery_flstudio-style_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_flstudio-style_(64129).pngbin0 -> 38817 bytes
-rw-r--r--site/controls/Timb&kmGallery_gg_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_gg_(64129).pngbin0 -> 341507 bytes
-rw-r--r--site/controls/Timb&kmGallery_happyknob_3_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_happyknob_3_(64129).pngbin0 -> 256093 bytes
-rw-r--r--site/controls/Timb&kmGallery_iKnob_white-pobi_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_iKnob_white-pobi_(48129).pngbin0 -> 20433 bytes
-rw-r--r--site/controls/Timb&kmGallery_iKnob_white_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_iKnob_white_(48129).pngbin0 -> 20256 bytes
-rw-r--r--site/controls/Timb&kmGallery_iKnob_white_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_iKnob_white_(64129).pngbin0 -> 32765 bytes
-rw-r--r--site/controls/Timb&kmGallery_iKnob_white_(64129)inst.json1
-rw-r--r--site/controls/Timb&kmGallery_iKnob_white_(64129)inst.pngbin0 -> 33530 bytes
-rw-r--r--site/controls/Timb&kmGallery_kjLEDknob-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_kjLEDknob-edt_(64129).pngbin0 -> 403457 bytes
-rw-r--r--site/controls/Timb&kmGallery_knob_32_white_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knob_32_white_(64129).pngbin0 -> 471989 bytes
-rw-r--r--site/controls/Timb&kmGallery_knob_35_silver_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knob_35_silver_(64129).pngbin0 -> 106724 bytes
-rw-r--r--site/controls/Timb&kmGallery_knob_36_black_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knob_36_black_(64129).pngbin0 -> 46265 bytes
-rw-r--r--site/controls/Timb&kmGallery_knob_42_silver_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knob_42_silver_(64129).pngbin0 -> 55222 bytes
-rw-r--r--site/controls/Timb&kmGallery_knob_52_silver_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knob_52_silver_(64129).pngbin0 -> 216340 bytes
-rw-r--r--site/controls/Timb&kmGallery_knob_64_white1_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knob_64_white1_(64129).pngbin0 -> 48245 bytes
-rw-r--r--site/controls/Timb&kmGallery_knob_66_black_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knob_66_black_(64129).pngbin0 -> 323068 bytes
-rw-r--r--site/controls/Timb&kmGallery_knob_70_black_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knob_70_black_(64129).pngbin0 -> 514629 bytes
-rw-r--r--site/controls/Timb&kmGallery_knob_vintage_black_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knob_vintage_black_(64129).pngbin0 -> 88185 bytes
-rw-r--r--site/controls/Timb&kmGallery_knobman-basic_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knobman-basic_(64129).pngbin0 -> 48479 bytes
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2_(64129).pngbin0 -> 29176 bytes
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2b_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2b_(64129).pngbin0 -> 30335 bytes
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2c_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2c_(64129).pngbin0 -> 32019 bytes
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2d_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2d_(64129).pngbin0 -> 27087 bytes
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2e_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen2e_(64129).pngbin0 -> 29647 bytes
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_knobman-lumen_(64129).pngbin0 -> 31629 bytes
-rw-r--r--site/controls/Timb&kmGallery_lever knob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_lever knob_(64129).pngbin0 -> 385677 bytes
-rw-r--r--site/controls/Timb&kmGallery_lightdial-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_lightdial-edt_(64129).pngbin0 -> 291409 bytes
-rw-r--r--site/controls/Timb&kmGallery_lighting_blue_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_lighting_blue_(64129).pngbin0 -> 44801 bytes
-rw-r--r--site/controls/Timb&kmGallery_m400_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_m400_(64129).pngbin0 -> 188539 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine-default-edit_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_maschine-default-edit_(48129).pngbin0 -> 34872 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine-default-edit_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_maschine-default-edit_(64129).pngbin0 -> 59663 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130).json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130).pngbin0 -> 84188 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130)2.json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130)2.pngbin0 -> 93379 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130).json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130).pngbin0 -> 81512 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130)2.json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130)2.pngbin0 -> 93207 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130).json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130).pngbin0 -> 82974 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130)2.json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130)2.pngbin0 -> 93819 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130).json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130).pngbin0 -> 84950 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130)2.json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130)2.pngbin0 -> 95700 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbedit_(48x130) dark.json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbedit_(48x130) dark.pngbin0 -> 60105 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130) dark.json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130) dark.pngbin0 -> 74888 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130).json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130).pngbin0 -> 71500 bytes
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130)2.json1
-rw-r--r--site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130)2.pngbin0 -> 70665 bytes
-rw-r--r--site/controls/Timb&kmGallery_metal_amp_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_metal_amp_(64129).pngbin0 -> 305211 bytes
-rw-r--r--site/controls/Timb&kmGallery_metalknob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_metalknob_(64129).pngbin0 -> 47096 bytes
-rw-r--r--site/controls/Timb&kmGallery_mixer_blue (1)_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_mixer_blue (1)_(64129).pngbin0 -> 287004 bytes
-rw-r--r--site/controls/Timb&kmGallery_mixer_blue_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_mixer_blue_(64129).pngbin0 -> 265442 bytes
-rw-r--r--site/controls/Timb&kmGallery_mixer_white_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_mixer_white_(64129).pngbin0 -> 256282 bytes
-rw-r--r--site/controls/Timb&kmGallery_oldGain_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_oldGain_(64129).pngbin0 -> 539960 bytes
-rw-r--r--site/controls/Timb&kmGallery_plastic_knob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_plastic_knob_(64129).pngbin0 -> 258196 bytes
-rw-r--r--site/controls/Timb&kmGallery_reaktor_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_reaktor_(48129).pngbin0 -> 219731 bytes
-rw-r--r--site/controls/Timb&kmGallery_reaktor_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_reaktor_(64129).pngbin0 -> 354066 bytes
-rw-r--r--site/controls/Timb&kmGallery_roue plastique_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_roue plastique_(64129).pngbin0 -> 299794 bytes
-rw-r--r--site/controls/Timb&kmGallery_self knitting_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_self knitting_(64129).pngbin0 -> 324814 bytes
-rw-r--r--site/controls/Timb&kmGallery_simple_emerald_knob_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_simple_emerald_knob_(64129).pngbin0 -> 269792 bytes
-rw-r--r--site/controls/Timb&kmGallery_ssl-ish-edt2_(48129).json1
-rw-r--r--site/controls/Timb&kmGallery_ssl-ish-edt2_(48129).pngbin0 -> 345889 bytes
-rw-r--r--site/controls/Timb&kmGallery_ssl-ish-edt2_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ssl-ish-edt2_(64129).pngbin0 -> 413261 bytes
-rw-r--r--site/controls/Timb&kmGallery_ssl-ish-edt_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_ssl-ish-edt_(64129).pngbin0 -> 512716 bytes
-rw-r--r--site/controls/Timb&kmGallery_switchmodeminimalEDT16.json1
-rw-r--r--site/controls/Timb&kmGallery_switchmodeminimalEDT16.pngbin0 -> 1146 bytes
-rw-r--r--site/controls/Timb&kmGallery_whiteknob_2_(64129).json1
-rw-r--r--site/controls/Timb&kmGallery_whiteknob_2_(64129).pngbin0 -> 101811 bytes
-rw-r--r--site/controls/Timb-NickMoritz_BigKnob-01_64128.json1
-rw-r--r--site/controls/Timb-NickMoritz_BigKnob-01_64128.pngbin0 -> 223541 bytes
-rw-r--r--site/controls/Timb-NickMoritz_BigKnob-02_128-16fr.json1
-rw-r--r--site/controls/Timb-NickMoritz_BigKnob-02_128-16fr.pngbin0 -> 234576 bytes
-rw-r--r--site/controls/Timb-NickMoritz_BigKnob-02_64-16fr.json1
-rw-r--r--site/controls/Timb-NickMoritz_BigKnob-02_64-16fr.pngbin0 -> 60815 bytes
-rw-r--r--site/controls/Timb-NickMoritz_BigKnob-02_64128.json1
-rw-r--r--site/controls/Timb-NickMoritz_BigKnob-02_64128.pngbin0 -> 376350 bytes
-rw-r--r--site/controls/Timb-NickMoritz_MidKnob-01_64128.json1
-rw-r--r--site/controls/Timb-NickMoritz_MidKnob-01_64128.pngbin0 -> 280331 bytes
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-01_32128.json1
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-01_32128.pngbin0 -> 39180 bytes
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-02_32128.json1
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-02_32128.pngbin0 -> 17790 bytes
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-03_32128.json1
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-03_32128.pngbin0 -> 16234 bytes
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-03mod_32128.json1
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-03mod_32128.pngbin0 -> 16999 bytes
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-04_32128.json1
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-04_32128.pngbin0 -> 17215 bytes
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-04_32128brwn.json1
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-04_32128brwn.pngbin0 -> 19216 bytes
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-05_32128.json1
-rw-r--r--site/controls/Timb-NickMoritz_SmallKnob-05_32128.pngbin0 -> 16681 bytes
-rw-r--r--site/controls/Timb-SM_Annimot01_80101.json1
-rw-r--r--site/controls/Timb-SM_Annimot01_80101.pngbin0 -> 182332 bytes
-rw-r--r--site/controls/Timb-SM_Annimot02_90101.json1
-rw-r--r--site/controls/Timb-SM_Annimot02_90101.pngbin0 -> 361770 bytes
-rw-r--r--site/controls/Timb-SM_Annimot03_60101.json1
-rw-r--r--site/controls/Timb-SM_Annimot03_60101.pngbin0 -> 171995 bytes
-rw-r--r--site/controls/Timb-SM_Annimot04_40100.json1
-rw-r--r--site/controls/Timb-SM_Annimot04_40100.pngbin0 -> 34822 bytes
-rw-r--r--site/controls/Timb-SM_Annimot05_50100.json1
-rw-r--r--site/controls/Timb-SM_Annimot05_50100.pngbin0 -> 56793 bytes
-rw-r--r--site/controls/Timb-SM_Annimot06_60128.json1
-rw-r--r--site/controls/Timb-SM_Annimot06_60128.pngbin0 -> 72228 bytes
-rw-r--r--site/controls/Timb-SM_Annimot07pan_70120.json1
-rw-r--r--site/controls/Timb-SM_Annimot07pan_70120.pngbin0 -> 101963 bytes
-rw-r--r--site/controls/Timb-SM_Annimot07vol_70120.json1
-rw-r--r--site/controls/Timb-SM_Annimot07vol_70120.pngbin0 -> 101270 bytes
-rw-r--r--site/controls/Timb-SM_BiPolPAN_80101.json1
-rw-r--r--site/controls/Timb-SM_BiPolPAN_80101.pngbin0 -> 156305 bytes
-rw-r--r--site/controls/Timb-SM_BlooPAN_40120.json1
-rw-r--r--site/controls/Timb-SM_BlooPAN_40120.pngbin0 -> 25188 bytes
-rw-r--r--site/controls/Timb-SM_BlooPAN_50120.json1
-rw-r--r--site/controls/Timb-SM_BlooPAN_50120.pngbin0 -> 48357 bytes
-rw-r--r--site/controls/Timb-SM_BlooPAN_60120.json1
-rw-r--r--site/controls/Timb-SM_BlooPAN_60120.pngbin0 -> 69264 bytes
-rw-r--r--site/controls/Timb-SM_BlooVOL_40120.json1
-rw-r--r--site/controls/Timb-SM_BlooVOL_40120.pngbin0 -> 25081 bytes
-rw-r--r--site/controls/Timb-SM_BlooVOL_50120.json1
-rw-r--r--site/controls/Timb-SM_BlooVOL_50120.pngbin0 -> 49087 bytes
-rw-r--r--site/controls/Timb-SM_BlooVOL_60120.json1
-rw-r--r--site/controls/Timb-SM_BlooVOL_60120.pngbin0 -> 67721 bytes
-rw-r--r--site/controls/Timb-SM_DW_64128.json1
-rw-r--r--site/controls/Timb-SM_DW_64128.pngbin0 -> 296862 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-01_35x35-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-01_35x35-129.pngbin0 -> 162379 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-02_31x31-127.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-02_31x31-127.pngbin0 -> 21235 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-05_27x27-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-05_27x27-129.pngbin0 -> 81188 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-15_35x35-128.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-15_35x35-128.pngbin0 -> 230474 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-20_37x39-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-20_37x39-129.pngbin0 -> 189965 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-21_33x37-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-21_33x37-129.pngbin0 -> 19550 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-22_33x37-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-22_33x37-129.pngbin0 -> 17913 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-23_25x29-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-23_25x29-129.pngbin0 -> 18660 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-24_89x91-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-24_89x91-129.pngbin0 -> 161252 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-25_61x61-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-25_61x61-129.pngbin0 -> 303018 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-26_45x45-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-26_45x45-129.pngbin0 -> 133662 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-27_51x51-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-27_51x51-129.pngbin0 -> 155408 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-31_61x61-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-31_61x61-129.pngbin0 -> 192286 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-32_35x35-130.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-32_35x35-130.pngbin0 -> 25484 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-33_54x51-127.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-33_54x51-127.pngbin0 -> 264898 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-35_44x44-127.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-35_44x44-127.pngbin0 -> 36513 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-36_51x53-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-36_51x53-129.pngbin0 -> 44814 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-37_51x51-130.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-37_51x51-130.pngbin0 -> 275348 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-38_39x39-127.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-38_39x39-127.pngbin0 -> 171096 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-39_36x39-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-39_36x39-129.pngbin0 -> 112581 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-40_35x38-129-brwn.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-40_35x38-129-brwn.pngbin0 -> 23997 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-40_35x38-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-40_35x38-129.pngbin0 -> 26301 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-41_47x53-127.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-41_47x53-127.pngbin0 -> 263802 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-42_39x43-127.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-42_39x43-127.pngbin0 -> 183663 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-43_37x37-127.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-43_37x37-127.pngbin0 -> 41301 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-44_49x49-129.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-44_49x49-129.pngbin0 -> 62815 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-45a_33x33-91.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-45a_33x33-91.pngbin0 -> 73625 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-45b_33x33-91.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-45b_33x33-91.pngbin0 -> 63675 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-45c_33x33-91.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-45c_33x33-91.pngbin0 -> 73743 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-45d_33x33-91.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-45d_33x33-91.pngbin0 -> 73597 bytes
-rw-r--r--site/controls/Timb-SM_GRIG5-48_29x29-91.json1
-rw-r--r--site/controls/Timb-SM_GRIG5-48_29x29-91.pngbin0 -> 51679 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-01_45x46-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-01_45x46-129.pngbin0 -> 244809 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-02_29x29-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-02_29x29-129.pngbin0 -> 17131 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-03_31x31-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-03_31x31-129.pngbin0 -> 94684 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-04_30x30-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-04_30x30-129.pngbin0 -> 145838 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-05_42x42-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-05_42x42-129.pngbin0 -> 185972 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-06_32x32-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-06_32x32-129.pngbin0 -> 117507 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-07_42x44-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-07_42x44-129.pngbin0 -> 190948 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-08_28x29-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-08_28x29-129.pngbin0 -> 19490 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-09_29x29-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-09_29x29-129.pngbin0 -> 109925 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-10_29x29-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-10_29x29-129.pngbin0 -> 105330 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-11_24x28-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-11_24x28-129.pngbin0 -> 16277 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-12_19x19-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-12_19x19-129.pngbin0 -> 16857 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-14_40x40-128.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-14_40x40-128.pngbin0 -> 190635 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-15_31x31-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-15_31x31-129.pngbin0 -> 19675 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-21_44x48-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-21_44x48-129.pngbin0 -> 226174 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-28_34x34-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-28_34x34-129.pngbin0 -> 122851 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-29_37x43-127.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-29_37x43-127.pngbin0 -> 90946 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-30_43x49-127.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-30_43x49-127.pngbin0 -> 230425 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-31_53x53-127.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-31_53x53-127.pngbin0 -> 277780 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-33_42x42-127.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-33_42x42-127.pngbin0 -> 211944 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-34_59x59-127.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-34_59x59-127.pngbin0 -> 248336 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-35_41x41-127.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-35_41x41-127.pngbin0 -> 43384 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-36_41x41-127.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-36_41x41-127.pngbin0 -> 54651 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-39_31x31-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-39_31x31-129.pngbin0 -> 97203 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-40pan_47x48-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-40pan_47x48-129.pngbin0 -> 90154 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-40vol_47x48-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-40vol_47x48-129.pngbin0 -> 97289 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-42pan_47x48-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-42pan_47x48-129.pngbin0 -> 88542 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-42vol_47x48-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-42vol_47x48-129.pngbin0 -> 94680 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-44pan_47x48-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-44pan_47x48-129.pngbin0 -> 89911 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-44vol_47x48-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-44vol_47x48-129.pngbin0 -> 96133 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-46pan_47x48-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-46pan_47x48-129.pngbin0 -> 87989 bytes
-rw-r--r--site/controls/Timb-SM_GrigKnob-46vol_47x48-129.json1
-rw-r--r--site/controls/Timb-SM_GrigKnob-46vol_47x48-129.pngbin0 -> 94290 bytes
-rw-r--r--site/controls/Timb-SM_Loopey's Set 01a_50x50-129.json1
-rw-r--r--site/controls/Timb-SM_Loopey's Set 01a_50x50-129.pngbin0 -> 201082 bytes
-rw-r--r--site/controls/Timb-SM_Loopey's Set 01b_50x50-129.json1
-rw-r--r--site/controls/Timb-SM_Loopey's Set 01b_50x50-129.pngbin0 -> 202005 bytes
-rw-r--r--site/controls/Timb-SM_Loopey's Set 01c_50x50-129.json1
-rw-r--r--site/controls/Timb-SM_Loopey's Set 01c_50x50-129.pngbin0 -> 201373 bytes
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02a_50x50-101.json1
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02a_50x50-101.pngbin0 -> 176799 bytes
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02b_40x40-127.json1
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02b_40x40-127.pngbin0 -> 80076 bytes
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02c_40x40-101.json1
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02c_40x40-101.pngbin0 -> 137926 bytes
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02d_40x40-101.json1
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02d_40x40-101.pngbin0 -> 80922 bytes
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02e_50x50-101.json1
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02e_50x50-101.pngbin0 -> 105619 bytes
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02f_30x30-101.json1
-rw-r--r--site/controls/Timb-SM_Loopey's Set 02f_30x30-101.pngbin0 -> 48397 bytes
-rw-r--r--site/controls/Timb-SM_Loopey-VMX200_48x48-101.json1
-rw-r--r--site/controls/Timb-SM_Loopey-VMX200_48x48-101.pngbin0 -> 52918 bytes
-rw-r--r--site/controls/Timb-SM_Monday Knobs-01_80101.json1
-rw-r--r--site/controls/Timb-SM_Monday Knobs-01_80101.pngbin0 -> 451601 bytes
-rw-r--r--site/controls/Timb-SM_Monday Knobs-02_80101.json1
-rw-r--r--site/controls/Timb-SM_Monday Knobs-02_80101.pngbin0 -> 542462 bytes
-rw-r--r--site/controls/Timb-SM_Monday Knobs-03_80101.json1
-rw-r--r--site/controls/Timb-SM_Monday Knobs-03_80101.pngbin0 -> 547834 bytes
-rw-r--r--site/controls/Timb-SM_Monday Knobs-04_80101.json1
-rw-r--r--site/controls/Timb-SM_Monday Knobs-04_80101.pngbin0 -> 584169 bytes
-rw-r--r--site/controls/Timb-SM_Monday Knobs-05_80101.json1
-rw-r--r--site/controls/Timb-SM_Monday Knobs-05_80101.pngbin0 -> 484100 bytes
-rw-r--r--site/controls/Timb-SM_Monday Knobs-06_84101.json1
-rw-r--r--site/controls/Timb-SM_Monday Knobs-06_84101.pngbin0 -> 1003261 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_24128-01ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_24128-01ver.pngbin0 -> 80620 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_24128-03ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_24128-03ver.pngbin0 -> 81825 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_24128-13ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_24128-13ver.pngbin0 -> 84507 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-01ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-01ver.pngbin0 -> 154600 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-02ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-02ver.pngbin0 -> 160837 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-03ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-03ver.pngbin0 -> 154362 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-04ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-04ver.pngbin0 -> 160716 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-05ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-05ver.pngbin0 -> 153796 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-06ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-06ver.pngbin0 -> 158684 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-07ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-07ver.pngbin0 -> 160607 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-08ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-08ver.pngbin0 -> 161784 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-09ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-09ver.pngbin0 -> 158404 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-10ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-10ver.pngbin0 -> 150220 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-11ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-11ver.pngbin0 -> 158527 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-12ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-12ver.pngbin0 -> 151461 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-13ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-13ver.pngbin0 -> 161768 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-14ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-14ver.pngbin0 -> 154560 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-15ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-15ver.pngbin0 -> 158842 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-16ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-16ver.pngbin0 -> 149232 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-17ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-17ver.pngbin0 -> 158121 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-18ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-18ver.pngbin0 -> 135737 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-19ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_32128-19ver.pngbin0 -> 141431 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-01ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-01ver.pngbin0 -> 215685 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-02ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-02ver.pngbin0 -> 226037 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-03ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-03ver.pngbin0 -> 214846 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-04ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-04ver.pngbin0 -> 227144 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-05ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-05ver.pngbin0 -> 215406 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-06ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-06ver.pngbin0 -> 223725 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-07ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-07ver.pngbin0 -> 226569 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-08ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-08ver.pngbin0 -> 236239 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-09ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-09ver.pngbin0 -> 222964 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-10ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-10ver.pngbin0 -> 209475 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-11ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-11ver.pngbin0 -> 223369 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-12ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-12ver.pngbin0 -> 210709 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-13ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-13ver.pngbin0 -> 228764 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-14ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-14ver.pngbin0 -> 218037 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-15ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-15ver.pngbin0 -> 222995 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-16ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-16ver.pngbin0 -> 208682 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-17ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-17ver.pngbin0 -> 222129 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-18ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-18ver.pngbin0 -> 187664 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-19ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_40128-19ver.pngbin0 -> 196708 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-01ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-01ver.pngbin0 -> 413412 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-02ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-02ver.pngbin0 -> 441321 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-03ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-03ver.pngbin0 -> 405242 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-04ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-04ver.pngbin0 -> 448344 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-05ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-05ver.pngbin0 -> 411307 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-06ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-06ver.pngbin0 -> 431881 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-07ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-07ver.pngbin0 -> 436566 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-08ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-08ver.pngbin0 -> 448521 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-09ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-09ver.pngbin0 -> 430612 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-10ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-10ver.pngbin0 -> 398069 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-11ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-11ver.pngbin0 -> 435183 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-12ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-12ver.pngbin0 -> 400738 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-13ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-13ver.pngbin0 -> 449494 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-14ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-14ver.pngbin0 -> 429119 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-15ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-15ver.pngbin0 -> 433534 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-16ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-16ver.pngbin0 -> 398932 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-17ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-17ver.pngbin0 -> 426524 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-18ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-18ver.pngbin0 -> 345398 bytes
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-19ver.json1
-rw-r--r--site/controls/Timb-SM_OptGrx2_64128-19ver.pngbin0 -> 368667 bytes
-rw-r--r--site/controls/Timb-SM_ROLVL_43128.json1
-rw-r--r--site/controls/Timb-SM_ROLVL_43128.pngbin0 -> 170662 bytes
-rw-r--r--site/controls/Timb-SM_RazorPAN_50x50-101.json1
-rw-r--r--site/controls/Timb-SM_RazorPAN_50x50-101.pngbin0 -> 42317 bytes
-rw-r--r--site/controls/Timb-SM_RazorVOL_50x50-101.json1
-rw-r--r--site/controls/Timb-SM_RazorVOL_50x50-101.pngbin0 -> 42978 bytes
-rw-r--r--site/controls/Timb-SM_Replica's_01_16x100-31fr.json1
-rw-r--r--site/controls/Timb-SM_Replica's_01_16x100-31fr.pngbin0 -> 7584 bytes
-rw-r--r--site/controls/Timb-SM_Replica's_02B_14x100-129.json1
-rw-r--r--site/controls/Timb-SM_Replica's_02B_14x100-129.pngbin0 -> 19756 bytes
-rw-r--r--site/controls/Timb-SM_Replica's_02_16x100-31fr.json1
-rw-r--r--site/controls/Timb-SM_Replica's_02_16x100-31fr.pngbin0 -> 4284 bytes
-rw-r--r--site/controls/Timb-SM_Retro_75100.json1
-rw-r--r--site/controls/Timb-SM_Retro_75100.pngbin0 -> 163848 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_01-A_100101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_01-A_100101fr.pngbin0 -> 832254 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_01-B_80101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_01-B_80101fr.pngbin0 -> 382832 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_01-C_60101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_01-C_60101fr.pngbin0 -> 227371 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_01-D_40101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_01-D_40101fr.pngbin0 -> 98254 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_02-A_100101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_02-A_100101fr.pngbin0 -> 1135172 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_02-B_80101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_02-B_80101fr.pngbin0 -> 279076 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_02-C_60101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_02-C_60101fr.pngbin0 -> 154552 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_02-D_40101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_02-D_40101fr.pngbin0 -> 75863 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_03-A_100101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_03-A_100101fr.pngbin0 -> 919429 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_03-B_80101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_03-B_80101fr.pngbin0 -> 470736 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_03-C_60101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_03-C_60101fr.pngbin0 -> 260137 bytes
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_03-D_40101fr.json1
-rw-r--r--site/controls/Timb-SM_Saturday Knobs_03-D_40101fr.pngbin0 -> 97575 bytes
-rw-r--r--site/controls/Timb-SM_ShapePAN_50120.json1
-rw-r--r--site/controls/Timb-SM_ShapePAN_50120.pngbin0 -> 179806 bytes
-rw-r--r--site/controls/Timb-SM_cuteblue_60128.json1
-rw-r--r--site/controls/Timb-SM_cuteblue_60128.pngbin0 -> 62385 bytes
-rw-r--r--site/controls/Timb-SM_cutemat_59128.json1
-rw-r--r--site/controls/Timb-SM_cutemat_59128.pngbin0 -> 67670 bytes
-rw-r--r--site/controls/Timb-SM_longcent_44100.json1
-rw-r--r--site/controls/Timb-SM_longcent_44100.pngbin0 -> 203085 bytes
-rw-r--r--site/controls/TimbKMGL_Modern-minimal-mars-128.json1
-rw-r--r--site/controls/TimbKMGL_Modern-minimal-mars-128.pngbin0 -> 1688509 bytes
-rw-r--r--site/controls/TimbKMGL_Nice_black_3D_knob_128.json1
-rw-r--r--site/controls/TimbKMGL_Nice_black_3D_knob_128.pngbin0 -> 1393104 bytes
-rw-r--r--site/controls/TimbSM17_Switches01.json1
-rw-r--r--site/controls/TimbSM17_Switches01.pngbin0 -> 666 bytes
-rw-r--r--site/controls/TimbSM17_Switches01bb.json1
-rw-r--r--site/controls/TimbSM17_Switches01bb.pngbin0 -> 626 bytes
-rw-r--r--site/controls/TimbSM17_Switches02.json1
-rw-r--r--site/controls/TimbSM17_Switches02.pngbin0 -> 419 bytes
-rw-r--r--site/controls/TimbSM17_Switches03.json1
-rw-r--r--site/controls/TimbSM17_Switches03.pngbin0 -> 965 bytes
-rw-r--r--site/controls/TimbSM17_Switches04.json1
-rw-r--r--site/controls/TimbSM17_Switches04.pngbin0 -> 1861 bytes
-rw-r--r--site/controls/TimbSM17_Switches05.json1
-rw-r--r--site/controls/TimbSM17_Switches05.pngbin0 -> 1719 bytes
-rw-r--r--site/controls/TimbSM17_Switches06.json1
-rw-r--r--site/controls/TimbSM17_Switches06.pngbin0 -> 863 bytes
-rw-r--r--site/controls/TimbSM17_Switches06b.json1
-rw-r--r--site/controls/TimbSM17_Switches06b.pngbin0 -> 836 bytes
-rw-r--r--site/controls/TimbSM17_Switches06c.json1
-rw-r--r--site/controls/TimbSM17_Switches06c.pngbin0 -> 778 bytes
-rw-r--r--site/controls/TimbSM17_Switches06c2.json1
-rw-r--r--site/controls/TimbSM17_Switches06c2.pngbin0 -> 789 bytes
-rw-r--r--site/controls/TimbSM17_Switches06d8x8.json1
-rw-r--r--site/controls/TimbSM17_Switches06d8x8.pngbin0 -> 525 bytes
-rw-r--r--site/controls/TimbSM17_Switches06d8x8b.json1
-rw-r--r--site/controls/TimbSM17_Switches06d8x8b.pngbin0 -> 508 bytes
-rw-r--r--site/controls/TimbSM17_Switches06e.json1
-rw-r--r--site/controls/TimbSM17_Switches06e.pngbin0 -> 899 bytes
-rw-r--r--site/controls/TimbSM17_Switches06f.json1
-rw-r--r--site/controls/TimbSM17_Switches06f.pngbin0 -> 660 bytes
-rw-r--r--site/controls/TimbSM17_Switches06g.json1
-rw-r--r--site/controls/TimbSM17_Switches06g.pngbin0 -> 654 bytes
-rw-r--r--site/controls/TimbSM17_Switches07.json1
-rw-r--r--site/controls/TimbSM17_Switches07.pngbin0 -> 1338 bytes
-rw-r--r--site/controls/TimbSM17_Switches07b.json1
-rw-r--r--site/controls/TimbSM17_Switches07b.pngbin0 -> 1395 bytes
-rw-r--r--site/controls/TimbSM17_Switches08.json1
-rw-r--r--site/controls/TimbSM17_Switches08.pngbin0 -> 2123 bytes
-rw-r--r--site/controls/TimbSM17_Switches09.json1
-rw-r--r--site/controls/TimbSM17_Switches09.pngbin0 -> 2564 bytes
-rw-r--r--site/controls/TimbSM17_Switches10.json1
-rw-r--r--site/controls/TimbSM17_Switches10.pngbin0 -> 651 bytes
-rw-r--r--site/controls/TimbSM17_Switches11.json1
-rw-r--r--site/controls/TimbSM17_Switches11.pngbin0 -> 3185 bytes
-rw-r--r--site/controls/TimbSM17_Switches11b(37x).json1
-rw-r--r--site/controls/TimbSM17_Switches11b(37x).pngbin0 -> 2762 bytes
-rw-r--r--site/controls/TimbSM17_Switches11d(30x).json1
-rw-r--r--site/controls/TimbSM17_Switches11d(30x).pngbin0 -> 3311 bytes
-rw-r--r--site/controls/TimbSM17_Switches12aHeadphone.json1
-rw-r--r--site/controls/TimbSM17_Switches12aHeadphone.pngbin0 -> 3809 bytes
-rw-r--r--site/controls/TimbSM17_Switches12bMonitor.json1
-rw-r--r--site/controls/TimbSM17_Switches12bMonitor.pngbin0 -> 3762 bytes
-rw-r--r--site/controls/Timb_2018_BUTTONEXIT32-01.json1
-rw-r--r--site/controls/Timb_2018_BUTTONEXIT32-01.pngbin0 -> 4932 bytes
-rw-r--r--site/controls/Timb_2018_BUTTONEXIT32-02.json1
-rw-r--r--site/controls/Timb_2018_BUTTONEXIT32-02.pngbin0 -> 4609 bytes
-rw-r--r--site/controls/Timb_2018_BUTTONEXIT64-01.json1
-rw-r--r--site/controls/Timb_2018_BUTTONEXIT64-01.pngbin0 -> 10433 bytes
-rw-r--r--site/controls/Timb_2018_BUTTONEXIT64-02.json1
-rw-r--r--site/controls/Timb_2018_BUTTONEXIT64-02.pngbin0 -> 12822 bytes
-rw-r--r--site/controls/Timb_2018_BUTTONOFF32-01.json1
-rw-r--r--site/controls/Timb_2018_BUTTONOFF32-01.pngbin0 -> 2610 bytes
-rw-r--r--site/controls/Timb_2018_BUTTONOFF32-02.json1
-rw-r--r--site/controls/Timb_2018_BUTTONOFF32-02.pngbin0 -> 2537 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-00.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-00.pngbin0 -> 1854 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-01.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-01.pngbin0 -> 4691 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-02.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-02.pngbin0 -> 1537 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-03.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-03.pngbin0 -> 1895 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-04.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-04.pngbin0 -> 3253 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-05.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-05.pngbin0 -> 3405 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-05b.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-05b.pngbin0 -> 3296 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-06.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-06.pngbin0 -> 2879 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-06b.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-06b.pngbin0 -> 2502 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-06c.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-06c.pngbin0 -> 1271 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-06d.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-06d.pngbin0 -> 2343 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-07.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-07.pngbin0 -> 2583 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-08.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-08.pngbin0 -> 3576 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-09.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-09.pngbin0 -> 3015 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-10.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-10.pngbin0 -> 1527 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-11.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-11.pngbin0 -> 1903 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-12.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-12.pngbin0 -> 2045 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-13.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-13.pngbin0 -> 2066 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-14.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-14.pngbin0 -> 2856 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-15.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-15.pngbin0 -> 1622 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-16.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-16.pngbin0 -> 3822 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-17.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-17.pngbin0 -> 4617 bytes
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-18.json1
-rw-r--r--site/controls/Timb_2018_ButtonsFrThemes-18.pngbin0 -> 1862 bytes
-rw-r--r--site/controls/Timb_2018_PageegaP-01.json1
-rw-r--r--site/controls/Timb_2018_PageegaP-01.pngbin0 -> 7667 bytes
-rw-r--r--site/controls/Timb_2018_PageegaP-02.json1
-rw-r--r--site/controls/Timb_2018_PageegaP-02.pngbin0 -> 7683 bytes
-rw-r--r--site/controls/Timb_2018_PageegaP-03.json1
-rw-r--r--site/controls/Timb_2018_PageegaP-03.pngbin0 -> 7011 bytes
-rw-r--r--site/controls/Timb_2018_PageegaP-03b.json1
-rw-r--r--site/controls/Timb_2018_PageegaP-03b.pngbin0 -> 5582 bytes
-rw-r--r--site/controls/Timb_2020-Def6MUTE.json1
-rw-r--r--site/controls/Timb_2020-Def6MUTE.pngbin0 -> 832 bytes
-rw-r--r--site/controls/Timb_2020-Def6SOLO.json1
-rw-r--r--site/controls/Timb_2020-Def6SOLO.pngbin0 -> 908 bytes
-rw-r--r--site/controls/Timb_4 Synth Master-01.json1
-rw-r--r--site/controls/Timb_4 Synth Master-01.pngbin0 -> 213 bytes
-rw-r--r--site/controls/Timb_5dB5_B-MON-1.json1
-rw-r--r--site/controls/Timb_5dB5_B-MON-1.pngbin0 -> 1140032 bytes
-rw-r--r--site/controls/Timb_5dB5_B-MON-2.json1
-rw-r--r--site/controls/Timb_5dB5_B-MON-2.pngbin0 -> 136811 bytes
-rw-r--r--site/controls/Timb_5dB5_B-MON-3button.json1
-rw-r--r--site/controls/Timb_5dB5_B-MON-3button.pngbin0 -> 3764 bytes
-rw-r--r--site/controls/Timb_5dB5_B-MON-4meter.json1
-rw-r--r--site/controls/Timb_5dB5_B-MON-4meter.pngbin0 -> 12056 bytes
-rw-r--r--site/controls/Timb_5dB5_D-REZ-1.json1
-rw-r--r--site/controls/Timb_5dB5_D-REZ-1.pngbin0 -> 1025405 bytes
-rw-r--r--site/controls/Timb_5dB5_D-REZ-2.json1
-rw-r--r--site/controls/Timb_5dB5_D-REZ-2.pngbin0 -> 131646 bytes
-rw-r--r--site/controls/Timb_5dB5_D-REZ-3button.json1
-rw-r--r--site/controls/Timb_5dB5_D-REZ-3button.pngbin0 -> 3768 bytes
-rw-r--r--site/controls/Timb_5dB5_D-REZ-4meter.json1
-rw-r--r--site/controls/Timb_5dB5_D-REZ-4meter.pngbin0 -> 8834 bytes
-rw-r--r--site/controls/Timb_5dB5_K-MOR-1.json1
-rw-r--r--site/controls/Timb_5dB5_K-MOR-1.pngbin0 -> 1140169 bytes
-rw-r--r--site/controls/Timb_5dB5_K-MOR-2.json1
-rw-r--r--site/controls/Timb_5dB5_K-MOR-2.pngbin0 -> 137300 bytes
-rw-r--r--site/controls/Timb_5dB5_K-MOR-3button.json1
-rw-r--r--site/controls/Timb_5dB5_K-MOR-3button.pngbin0 -> 3768 bytes
-rw-r--r--site/controls/Timb_5dB5_K-MOR-4meter.json1
-rw-r--r--site/controls/Timb_5dB5_K-MOR-4meter.pngbin0 -> 12073 bytes
-rw-r--r--site/controls/Timb_5dB5_MutantButton96.json1
-rw-r--r--site/controls/Timb_5dB5_MutantButton96.pngbin0 -> 26864 bytes
-rw-r--r--site/controls/Timb_5dB5_T-COMP-1.json1
-rw-r--r--site/controls/Timb_5dB5_T-COMP-1.pngbin0 -> 1140138 bytes
-rw-r--r--site/controls/Timb_5dB5_T-COMP-2.json1
-rw-r--r--site/controls/Timb_5dB5_T-COMP-2.pngbin0 -> 137366 bytes
-rw-r--r--site/controls/Timb_5dB5_T-COMP-3button.json1
-rw-r--r--site/controls/Timb_5dB5_T-COMP-3button.pngbin0 -> 3760 bytes
-rw-r--r--site/controls/Timb_5dB5_T-COMP-3buttonb.json1
-rw-r--r--site/controls/Timb_5dB5_T-COMP-3buttonb.pngbin0 -> 1773 bytes
-rw-r--r--site/controls/Timb_5dB5_T-COMP-4meter.json1
-rw-r--r--site/controls/Timb_5dB5_T-COMP-4meter.pngbin0 -> 12082 bytes
-rw-r--r--site/controls/Timb_Action (FX) Render To Midi-01.json1
-rw-r--r--site/controls/Timb_Action (FX) Render To Midi-01.pngbin0 -> 1865 bytes
-rw-r--r--site/controls/Timb_Actions_LOOP.json1
-rw-r--r--site/controls/Timb_Actions_LOOP.pngbin0 -> 1447 bytes
-rw-r--r--site/controls/Timb_Actions_MUTECANCEL.json1
-rw-r--r--site/controls/Timb_Actions_MUTECANCEL.pngbin0 -> 1931 bytes
-rw-r--r--site/controls/Timb_Actions_PEAKCLEAR.json1
-rw-r--r--site/controls/Timb_Actions_PEAKCLEAR.pngbin0 -> 1368 bytes
-rw-r--r--site/controls/Timb_Actions_PLAY.json1
-rw-r--r--site/controls/Timb_Actions_PLAY.pngbin0 -> 976 bytes
-rw-r--r--site/controls/Timb_Actions_SAVE.json1
-rw-r--r--site/controls/Timb_Actions_SAVE.pngbin0 -> 1298 bytes
-rw-r--r--site/controls/Timb_Actions_SAVE2.json1
-rw-r--r--site/controls/Timb_Actions_SAVE2.pngbin0 -> 591 bytes
-rw-r--r--site/controls/Timb_Actions_SOLOCANCEL-2.json1
-rw-r--r--site/controls/Timb_Actions_SOLOCANCEL-2.pngbin0 -> 1861 bytes
-rw-r--r--site/controls/Timb_Actions_SOLOCANCEL.json1
-rw-r--r--site/controls/Timb_Actions_SOLOCANCEL.pngbin0 -> 1779 bytes
-rw-r--r--site/controls/Timb_Actions_STOP.json1
-rw-r--r--site/controls/Timb_Actions_STOP.pngbin0 -> 1027 bytes
-rw-r--r--site/controls/Timb_Aimp-ONOFF-0.json1
-rw-r--r--site/controls/Timb_Aimp-ONOFF-0.pngbin0 -> 6594 bytes
-rw-r--r--site/controls/Timb_Aimp-ONOFF-1.json1
-rw-r--r--site/controls/Timb_Aimp-ONOFF-1.pngbin0 -> 7215 bytes
-rw-r--r--site/controls/Timb_AudioThing-VinylStrip_96129.json1
-rw-r--r--site/controls/Timb_AudioThing-VinylStrip_96129.pngbin0 -> 1001412 bytes
-rw-r--r--site/controls/Timb_BWG_mute_24x32.json1
-rw-r--r--site/controls/Timb_BWG_mute_24x32.pngbin0 -> 3581 bytes
-rw-r--r--site/controls/Timb_BWG_mute_32x42.json1
-rw-r--r--site/controls/Timb_BWG_mute_32x42.pngbin0 -> 3740 bytes
-rw-r--r--site/controls/Timb_BigbuttonGreen16.json1
-rw-r--r--site/controls/Timb_BigbuttonGreen16.pngbin0 -> 1338 bytes
-rw-r--r--site/controls/Timb_BigbuttonGreen32.json1
-rw-r--r--site/controls/Timb_BigbuttonGreen32.pngbin0 -> 1611 bytes
-rw-r--r--site/controls/Timb_BigbuttonRed16.json1
-rw-r--r--site/controls/Timb_BigbuttonRed16.pngbin0 -> 1317 bytes
-rw-r--r--site/controls/Timb_BigbuttonRed16v2.json1
-rw-r--r--site/controls/Timb_BigbuttonRed16v2.pngbin0 -> 1352 bytes
-rw-r--r--site/controls/Timb_BigbuttonRed32.json1
-rw-r--r--site/controls/Timb_BigbuttonRed32.pngbin0 -> 1600 bytes
-rw-r--r--site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128.json1
-rw-r--r--site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128.pngbin0 -> 65890 bytes
-rw-r--r--site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128horz.json1
-rw-r--r--site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128horz.pngbin0 -> 43023 bytes
-rw-r--r--site/controls/Timb_Blankfiles-ConcertoSlider_16128-128.json1
-rw-r--r--site/controls/Timb_Blankfiles-ConcertoSlider_16128-128.pngbin0 -> 56835 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-01.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-01.pngbin0 -> 2318 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-02.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-02.pngbin0 -> 2479 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-03.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-03.pngbin0 -> 1850 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-04.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-04.pngbin0 -> 2993 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-05.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-05.pngbin0 -> 786 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-06.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-06.pngbin0 -> 789 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-07.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-07.pngbin0 -> 757 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-08.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-08.pngbin0 -> 760 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-09.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-09.pngbin0 -> 683 bytes
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-10.json1
-rw-r--r--site/controls/Timb_Blankfiles-Superiour-10.pngbin0 -> 1252 bytes
-rw-r--r--site/controls/Timb_Button_KORGMS2000_26x-b.json1
-rw-r--r--site/controls/Timb_Button_KORGMS2000_26x-b.pngbin0 -> 2530 bytes
-rw-r--r--site/controls/Timb_Button_KORGMS2000_26x.json1
-rw-r--r--site/controls/Timb_Button_KORGMS2000_26x.pngbin0 -> 2242 bytes
-rw-r--r--site/controls/Timb_Button_MC909_21x.json1
-rw-r--r--site/controls/Timb_Button_MC909_21x.pngbin0 -> 1007 bytes
-rw-r--r--site/controls/Timb_Button_MC909_21xb.json1
-rw-r--r--site/controls/Timb_Button_MC909_21xb.pngbin0 -> 1022 bytes
-rw-r--r--site/controls/Timb_CCSelector(0127)_3216-128.json1
-rw-r--r--site/controls/Timb_CCSelector(0127)_3216-128.pngbin0 -> 15376 bytes
-rw-r--r--site/controls/Timb_CIS_KNOB_2_80128.json1
-rw-r--r--site/controls/Timb_CIS_KNOB_2_80128.pngbin0 -> 254444 bytes
-rw-r--r--site/controls/Timb_CLEAR2019-MUTE.json1
-rw-r--r--site/controls/Timb_CLEAR2019-MUTE.pngbin0 -> 2102 bytes
-rw-r--r--site/controls/Timb_CLEAR2019-SOLO.json1
-rw-r--r--site/controls/Timb_CLEAR2019-SOLO.pngbin0 -> 2238 bytes
-rw-r--r--site/controls/Timb_CloseX34.json1
-rw-r--r--site/controls/Timb_CloseX34.pngbin0 -> 4503 bytes
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-01grn.json1
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-01grn.pngbin0 -> 31613 bytes
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-02ylw.json1
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-02ylw.pngbin0 -> 31356 bytes
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-03blo.json1
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-03blo.pngbin0 -> 31260 bytes
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-04red.json1
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-04red.pngbin0 -> 30907 bytes
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-05orn.json1
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-05orn.pngbin0 -> 31949 bytes
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-06gry.json1
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-06gry.pngbin0 -> 29085 bytes
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-07prp.json1
-rw-r--r--site/controls/Timb_ColorCode_(16-129)-07prp.pngbin0 -> 31032 bytes
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-01grn-B.json1
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-01grn-B.pngbin0 -> 43399 bytes
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-01grn.json1
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-01grn.pngbin0 -> 52209 bytes
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-02ylw.json1
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-02ylw.pngbin0 -> 51546 bytes
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-03blo.json1
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-03blo.pngbin0 -> 51848 bytes
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-04red.json1
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-04red.pngbin0 -> 51175 bytes
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-05orn.json1
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-05orn.pngbin0 -> 52836 bytes
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-06gry-B.json1
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-06gry-B.pngbin0 -> 49034 bytes
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-06gry.json1
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-06gry.pngbin0 -> 48440 bytes
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-07prp.json1
-rw-r--r--site/controls/Timb_ColorCode_(19-129)-07prp.pngbin0 -> 51575 bytes
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-01grn.json1
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-01grn.pngbin0 -> 77062 bytes
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-02ylw.json1
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-02ylw.pngbin0 -> 76197 bytes
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-03blo.json1
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-03blo.pngbin0 -> 73922 bytes
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-04red.json1
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-04red.pngbin0 -> 73026 bytes
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-05orn.json1
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-05orn.pngbin0 -> 75608 bytes
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-06gry.json1
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-06gry.pngbin0 -> 72045 bytes
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-07prp.json1
-rw-r--r--site/controls/Timb_ColorCode_(24-129)-07prp.pngbin0 -> 78995 bytes
-rw-r--r--site/controls/Timb_DarkaGain-1.json1
-rw-r--r--site/controls/Timb_DarkaGain-1.pngbin0 -> 50584 bytes
-rw-r--r--site/controls/Timb_Def5_FXonoff_(19x).json1
-rw-r--r--site/controls/Timb_Def5_FXonoff_(19x).pngbin0 -> 1114 bytes
-rw-r--r--site/controls/Timb_DramaKing-Green_48128.json1
-rw-r--r--site/controls/Timb_DramaKing-Green_48128.pngbin0 -> 35055 bytes
-rw-r--r--site/controls/Timb_DramaKing_48128.json1
-rw-r--r--site/controls/Timb_DramaKing_48128.pngbin0 -> 35090 bytes
-rw-r--r--site/controls/Timb_ExpoBloo96128.json1
-rw-r--r--site/controls/Timb_ExpoBloo96128.pngbin0 -> 420999 bytes
-rw-r--r--site/controls/Timb_ExpoGreen96128.json1
-rw-r--r--site/controls/Timb_ExpoGreen96128.pngbin0 -> 417233 bytes
-rw-r--r--site/controls/Timb_ExpoWhite96128.json1
-rw-r--r--site/controls/Timb_ExpoWhite96128.pngbin0 -> 425650 bytes
-rw-r--r--site/controls/Timb_FAKECLOCK2018-1.json1
-rw-r--r--site/controls/Timb_FAKECLOCK2018-1.pngbin0 -> 26884 bytes
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-0--.json1
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-0--.pngbin0 -> 2740 bytes
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-1MS.json1
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-1MS.pngbin0 -> 4111 bytes
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-2PM.json1
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-2PM.pngbin0 -> 3836 bytes
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-3RP.json1
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-3RP.pngbin0 -> 3784 bytes
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-4EQ.json1
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-4EQ.pngbin0 -> 4260 bytes
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-5RV.json1
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-5RV.pngbin0 -> 4250 bytes
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-6ST.json1
-rw-r--r--site/controls/Timb_FALCON&UPGExtras-6ST.pngbin0 -> 4427 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-01_40-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-01_40-128.pngbin0 -> 25371 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-02_40-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-02_40-128.pngbin0 -> 25137 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-03_32-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-03_32-128.pngbin0 -> 18365 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-05_32-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-05_32-128.pngbin0 -> 18527 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-06_32-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-06_32-128.pngbin0 -> 18407 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-06b_32-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-06b_32-128.pngbin0 -> 18141 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-06c_32-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-06c_32-128.pngbin0 -> 14971 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-06d_32-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-06d_32-128.pngbin0 -> 15378 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-07_32-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-07_32-128.pngbin0 -> 18567 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-07b_32-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-07b_32-128.pngbin0 -> 18273 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-07c_48-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-07c_48-128.pngbin0 -> 36596 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-07d_48-128pan.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-07d_48-128pan.pngbin0 -> 37025 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-08_48-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-08_48-128.pngbin0 -> 33327 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-09_48-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-09_48-128.pngbin0 -> 33547 bytes
-rw-r--r--site/controls/Timb_FLstyleEdt-10_48-128.json1
-rw-r--r--site/controls/Timb_FLstyleEdt-10_48-128.pngbin0 -> 33690 bytes
-rw-r--r--site/controls/Timb_Falcon Fake Knob.json1
-rw-r--r--site/controls/Timb_Falcon Fake Knob.pngbin0 -> 22918 bytes
-rw-r--r--site/controls/Timb_Flatomat_MUTE20.json1
-rw-r--r--site/controls/Timb_Flatomat_MUTE20.pngbin0 -> 650 bytes
-rw-r--r--site/controls/Timb_Flatomat_SOLO20.json1
-rw-r--r--site/controls/Timb_Flatomat_SOLO20.pngbin0 -> 670 bytes
-rw-r--r--site/controls/Timb_GATEMETER-01_(48-128)-Left.json1
-rw-r--r--site/controls/Timb_GATEMETER-01_(48-128)-Left.pngbin0 -> 11960 bytes
-rw-r--r--site/controls/Timb_GATEMETER-01_(48-128)-Right.json1
-rw-r--r--site/controls/Timb_GATEMETER-01_(48-128)-Right.pngbin0 -> 11796 bytes
-rw-r--r--site/controls/Timb_GATEMETER-01_(48-128).json1
-rw-r--r--site/controls/Timb_GATEMETER-01_(48-128).pngbin0 -> 20325 bytes
-rw-r--r--site/controls/Timb_GB CHAINER SLOTS1.json1
-rw-r--r--site/controls/Timb_GB CHAINER SLOTS1.pngbin0 -> 267 bytes
-rw-r--r--site/controls/Timb_GB CHAINER SLOTS2.json1
-rw-r--r--site/controls/Timb_GB CHAINER SLOTS2.pngbin0 -> 355 bytes
-rw-r--r--site/controls/Timb_GREEN LED KNOB_64-128.json1
-rw-r--r--site/controls/Timb_GREEN LED KNOB_64-128.pngbin0 -> 298371 bytes
-rw-r--r--site/controls/Timb_GoodolWinampBEAT-1.json1
-rw-r--r--site/controls/Timb_GoodolWinampBEAT-1.pngbin0 -> 25201 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--01.PNGbin0 -> 4850 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--01.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--02.PNGbin0 -> 745 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--02.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--03.PNGbin0 -> 5116 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--03.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--04.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--04.pngbin0 -> 5073 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--05.PNGbin0 -> 5805 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--05.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--06.PNGbin0 -> 5901 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--06.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--07.PNGbin0 -> 3870 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--07.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--08.PNGbin0 -> 3341 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--08.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--09.PNGbin0 -> 1121 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--09.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--10.PNGbin0 -> 3687 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--10.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--11.PNGbin0 -> 513 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--11.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--12.PNGbin0 -> 259 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--12.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--13.PNGbin0 -> 258 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--13.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--14.PNGbin0 -> 3726 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--14.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--15.PNGbin0 -> 1072 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--15.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--16.PNGbin0 -> 3711 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--16.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--17.PNGbin0 -> 993 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--17.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--18.PNGbin0 -> 1052 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--18.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--19.PNGbin0 -> 722 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--19.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--20.PNGbin0 -> 601 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--20.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--21.PNGbin0 -> 1047 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--21.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--22.PNGbin0 -> 564 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--22.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--23.PNGbin0 -> 694 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--23.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--24.PNGbin0 -> 689 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--24.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--25.PNGbin0 -> 741 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--25.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--26.PNGbin0 -> 4326 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--26.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--27.PNGbin0 -> 652 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--27.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--28.PNGbin0 -> 957 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--28.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--29.PNGbin0 -> 946 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--29.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--30.PNGbin0 -> 977 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--30.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--31.PNGbin0 -> 2943 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--31.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--32.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--32.pngbin0 -> 3000 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--33.PNGbin0 -> 719 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--33.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--34.PNGbin0 -> 701 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--34.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--35.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--35.pngbin0 -> 1279 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--36.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--36.pngbin0 -> 1406 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--37.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--37.pngbin0 -> 1237 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--38.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--38.pngbin0 -> 1284 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--39.PNGbin0 -> 3127 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--39.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--40.PNGbin0 -> 3146 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--40.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--41.PNGbin0 -> 671 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--41.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--42.PNGbin0 -> 580 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--42.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--43.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--43.pngbin0 -> 572 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--44.PNGbin0 -> 509 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--44.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--45.PNGbin0 -> 595 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--45.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--46.PNGbin0 -> 544 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--46.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--47.PNGbin0 -> 3857 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--47.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--47b.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--47b.pngbin0 -> 3847 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--47c.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--47c.pngbin0 -> 3865 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--48.PNGbin0 -> 716 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--48.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--49.PNGbin0 -> 712 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--49.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--50.PNGbin0 -> 729 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--50.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--51.PNGbin0 -> 746 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--51.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--52.PNGbin0 -> 4897 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--52.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--53.PNGbin0 -> 2973 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--53.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--54.PNGbin0 -> 3386 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--54.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--55.PNGbin0 -> 3328 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--55.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--56.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--56.pngbin0 -> 630 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--57.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--57.pngbin0 -> 2937 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--58.PNGbin0 -> 5408 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--58.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--58b.PNGbin0 -> 5421 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--58b.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--59.PNGbin0 -> 3149 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--59.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--60.PNGbin0 -> 3914 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--60.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--61.PNGbin0 -> 3589 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--61.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--61b.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--61b.pngbin0 -> 3122 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--62.PNGbin0 -> 4614 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--62.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--63.PNGbin0 -> 6842 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--63.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--66.PNGbin0 -> 244 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--66.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--66a 2.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--66a 2.pngbin0 -> 310 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--66a.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--66a.pngbin0 -> 300 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--66b.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--66b.pngbin0 -> 311 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--66c.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--66c.pngbin0 -> 308 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--66d.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--66d.pngbin0 -> 313 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--66e.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--66e.pngbin0 -> 303 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--67.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--67.pngbin0 -> 285 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--68.PNGbin0 -> 1243 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--68.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--69.PNGbin0 -> 8202 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--69.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--70.PNGbin0 -> 3958 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--70.json1
-rw-r--r--site/controls/Timb_Grig2018_Controls--71.PNGbin0 -> 3177 bytes
-rw-r--r--site/controls/Timb_Grig2018_Controls--71.json1
-rw-r--r--site/controls/Timb_HORZMETER_824-101.json1
-rw-r--r--site/controls/Timb_HORZMETER_824-101.pngbin0 -> 2633 bytes
-rw-r--r--site/controls/Timb_HUBSWITCH.json1
-rw-r--r--site/controls/Timb_HUBSWITCH.pngbin0 -> 1207 bytes
-rw-r--r--site/controls/Timb_HY-Exit-1.json1
-rw-r--r--site/controls/Timb_HY-Exit-1.pngbin0 -> 1567 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTE16.json1
-rw-r--r--site/controls/Timb_HandMadeMUTE16.pngbin0 -> 1084 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTE16b.json1
-rw-r--r--site/controls/Timb_HandMadeMUTE16b.pngbin0 -> 1098 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTE16c.json1
-rw-r--r--site/controls/Timb_HandMadeMUTE16c.pngbin0 -> 1124 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTE16d.json1
-rw-r--r--site/controls/Timb_HandMadeMUTE16d.pngbin0 -> 1149 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTE28.json1
-rw-r--r--site/controls/Timb_HandMadeMUTE28.pngbin0 -> 1920 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO28.json1
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO28.pngbin0 -> 2139 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO28b.json1
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO28b.pngbin0 -> 2113 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO28c.json1
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO28c.pngbin0 -> 2199 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32.json1
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32.pngbin0 -> 2064 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32b.json1
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32b.pngbin0 -> 2035 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32c.json1
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32c.pngbin0 -> 3589 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32d-losat.json1
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32d-losat.pngbin0 -> 3643 bytes
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32d.json1
-rw-r--r--site/controls/Timb_HandMadeMUTEONSOLO32d.pngbin0 -> 3629 bytes
-rw-r--r--site/controls/Timb_HandMadeSIMPLE onoff-01.json1
-rw-r--r--site/controls/Timb_HandMadeSIMPLE onoff-01.pngbin0 -> 757 bytes
-rw-r--r--site/controls/Timb_HandMadeSIMPLE onoff-02.json1
-rw-r--r--site/controls/Timb_HandMadeSIMPLE onoff-02.pngbin0 -> 2219 bytes
-rw-r--r--site/controls/Timb_HandMadeSIMPLE onoff-03.json1
-rw-r--r--site/controls/Timb_HandMadeSIMPLE onoff-03.pngbin0 -> 2469 bytes
-rw-r--r--site/controls/Timb_HandMadeSIMPLE onoff-04.json1
-rw-r--r--site/controls/Timb_HandMadeSIMPLE onoff-04.pngbin0 -> 2338 bytes
-rw-r--r--site/controls/Timb_HandMadeSOLO28.json1
-rw-r--r--site/controls/Timb_HandMadeSOLO28.pngbin0 -> 1811 bytes
-rw-r--r--site/controls/Timb_Hippy 6mod_40-129.json1
-rw-r--r--site/controls/Timb_Hippy 6mod_40-129.pngbin0 -> 35610 bytes
-rw-r--r--site/controls/Timb_Hippy 6mod_64-129.json1
-rw-r--r--site/controls/Timb_Hippy 6mod_64-129.pngbin0 -> 73336 bytes
-rw-r--r--site/controls/Timb_HumbleWhomble_128-129.json1
-rw-r--r--site/controls/Timb_HumbleWhomble_128-129.pngbin0 -> 554676 bytes
-rw-r--r--site/controls/Timb_HumbleWhomble_32-129.json1
-rw-r--r--site/controls/Timb_HumbleWhomble_32-129.pngbin0 -> 19589 bytes
-rw-r--r--site/controls/Timb_HumbleWhomble_64-129.json1
-rw-r--r--site/controls/Timb_HumbleWhomble_64-129.pngbin0 -> 71658 bytes
-rw-r--r--site/controls/Timb_HumbleWhomble_96-129.json1
-rw-r--r--site/controls/Timb_HumbleWhomble_96-129.pngbin0 -> 252804 bytes
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_16-3.json1
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_16-3.pngbin0 -> 1291 bytes
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_16-3_3X.json1
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_16-3_3X.pngbin0 -> 1859 bytes
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_16-3b.json1
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_16-3b.pngbin0 -> 1081 bytes
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_16-3c.json1
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_16-3c.pngbin0 -> 485 bytes
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_Bespokes15x.json1
-rw-r--r--site/controls/Timb_JSMIXER_MuteOnSolo_Bespokes15x.pngbin0 -> 1905 bytes
-rw-r--r--site/controls/Timb_JanneUnivLite_SLIDER_19150-129.json1
-rw-r--r--site/controls/Timb_JanneUnivLite_SLIDER_19150-129.pngbin0 -> 51625 bytes
-rw-r--r--site/controls/Timb_KM_Rubber_64128-00.json1
-rw-r--r--site/controls/Timb_KM_Rubber_64128-00.pngbin0 -> 378169 bytes
-rw-r--r--site/controls/Timb_KNOB&METER-01_(48-128)_A-Knob.json1
-rw-r--r--site/controls/Timb_KNOB&METER-01_(48-128)_A-Knob.pngbin0 -> 43386 bytes
-rw-r--r--site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-L.json1
-rw-r--r--site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-L.pngbin0 -> 14940 bytes
-rw-r--r--site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-R.json1
-rw-r--r--site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-R.pngbin0 -> 15275 bytes
-rw-r--r--site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter.json1
-rw-r--r--site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter.pngbin0 -> 21809 bytes
-rw-r--r--site/controls/Timb_KNOB&METER-02_(48-128)_A-Knob.json1
-rw-r--r--site/controls/Timb_KNOB&METER-02_(48-128)_A-Knob.pngbin0 -> 48690 bytes
-rw-r--r--site/controls/Timb_KNOB&METER-02_(48-128)_B-Meter.json1
-rw-r--r--site/controls/Timb_KNOB&METER-02_(48-128)_B-Meter.pngbin0 -> 20331 bytes
-rw-r--r--site/controls/Timb_KNOB&METER-03_(96-129)knob.json1
-rw-r--r--site/controls/Timb_KNOB&METER-03_(96-129)knob.pngbin0 -> 320441 bytes
-rw-r--r--site/controls/Timb_Kontakt2018_Controls--01.json1
-rw-r--r--site/controls/Timb_Kontakt2018_Controls--01.pngbin0 -> 5524 bytes
-rw-r--r--site/controls/Timb_Kontakt2018_Controls--02.PNGbin0 -> 555 bytes
-rw-r--r--site/controls/Timb_Kontakt2018_Controls--02.json1
-rw-r--r--site/controls/Timb_Kontakt2018_Controls--03.json1
-rw-r--r--site/controls/Timb_Kontakt2018_Controls--03.pngbin0 -> 351 bytes
-rw-r--r--site/controls/Timb_LMBassMasterSlider1HRZ bloo.json1
-rw-r--r--site/controls/Timb_LMBassMasterSlider1HRZ bloo.pngbin0 -> 60364 bytes
-rw-r--r--site/controls/Timb_LMBassMasterSlider1HRZ orange.json1
-rw-r--r--site/controls/Timb_LMBassMasterSlider1HRZ orange.pngbin0 -> 60464 bytes
-rw-r--r--site/controls/Timb_LMBassMasterSlider1bloo.json1
-rw-r--r--site/controls/Timb_LMBassMasterSlider1bloo.pngbin0 -> 45168 bytes
-rw-r--r--site/controls/Timb_LMBassMasterSlider1orange.json1
-rw-r--r--site/controls/Timb_LMBassMasterSlider1orange.pngbin0 -> 49931 bytes
-rw-r--r--site/controls/Timb_LMBassMasterSlider2HRZ bloo.json1
-rw-r--r--site/controls/Timb_LMBassMasterSlider2HRZ bloo.pngbin0 -> 45280 bytes
-rw-r--r--site/controls/Timb_LMBassMasterSlider2HRZ orange.json1
-rw-r--r--site/controls/Timb_LMBassMasterSlider2HRZ orange.pngbin0 -> 47240 bytes
-rw-r--r--site/controls/Timb_LMBassMasterSlider2bloo.json1
-rw-r--r--site/controls/Timb_LMBassMasterSlider2bloo.pngbin0 -> 33049 bytes
-rw-r--r--site/controls/Timb_LMBassMasterSlider2orange.json1
-rw-r--r--site/controls/Timb_LMBassMasterSlider2orange.pngbin0 -> 33124 bytes
-rw-r--r--site/controls/Timb_LiquidMental-1.json1
-rw-r--r--site/controls/Timb_LiquidMental-1.pngbin0 -> 65682 bytes
-rw-r--r--site/controls/Timb_LiquidMental-2.json1
-rw-r--r--site/controls/Timb_LiquidMental-2.pngbin0 -> 83241 bytes
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE-L.json1
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE-L.pngbin0 -> 14109 bytes
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE-R.json1
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE-R.pngbin0 -> 14152 bytes
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE.json1
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE.pngbin0 -> 20613 bytes
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE2-L.json1
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE2-L.pngbin0 -> 13846 bytes
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE2-R.json1
-rw-r--r--site/controls/Timb_METER-Circle-FOR_FLSTYLE2-R.pngbin0 -> 13907 bytes
-rw-r--r--site/controls/Timb_METER-Circle-xx.json1
-rw-r--r--site/controls/Timb_METER-Circle-xx.pngbin0 -> 20320 bytes
-rw-r--r--site/controls/Timb_METER-Circle.json1
-rw-r--r--site/controls/Timb_METER-Circle.pngbin0 -> 21896 bytes
-rw-r--r--site/controls/Timb_METER-Circle64128.json1
-rw-r--r--site/controls/Timb_METER-Circle64128.pngbin0 -> 27039 bytes
-rw-r--r--site/controls/Timb_METER-Circle_LBX.json1
-rw-r--r--site/controls/Timb_METER-Circle_LBX.pngbin0 -> 43536 bytes
-rw-r--r--site/controls/Timb_METER-Circle_LBX2_L.json1
-rw-r--r--site/controls/Timb_METER-Circle_LBX2_L.pngbin0 -> 15659 bytes
-rw-r--r--site/controls/Timb_METER-Circle_LBX2_R.json1
-rw-r--r--site/controls/Timb_METER-Circle_LBX2_R.pngbin0 -> 17312 bytes
-rw-r--r--site/controls/Timb_METER-Circle_LBX_L.json1
-rw-r--r--site/controls/Timb_METER-Circle_LBX_L.pngbin0 -> 19092 bytes
-rw-r--r--site/controls/Timb_METER-Circle_LBX_R.json1
-rw-r--r--site/controls/Timb_METER-Circle_LBX_R.pngbin0 -> 20363 bytes
-rw-r--r--site/controls/Timb_METER-MIRROR-01_16x128-128.json1
-rw-r--r--site/controls/Timb_METER-MIRROR-01_16x128-128.pngbin0 -> 9131 bytes
-rw-r--r--site/controls/Timb_MIDICHS_161616.json1
-rw-r--r--site/controls/Timb_MIDICHS_161616.pngbin0 -> 1512 bytes
-rw-r--r--site/controls/Timb_MIDIMONITOR17LIMa_16x128.json1
-rw-r--r--site/controls/Timb_MIDIMONITOR17LIMa_16x128.pngbin0 -> 25016 bytes
-rw-r--r--site/controls/Timb_MIDIMONITOR17LIMb_16x128.json1
-rw-r--r--site/controls/Timb_MIDIMONITOR17LIMb_16x128.pngbin0 -> 21098 bytes
-rw-r--r--site/controls/Timb_MIDIMONITOR17_8x128.json1
-rw-r--r--site/controls/Timb_MIDIMONITOR17_8x128.pngbin0 -> 12121 bytes
-rw-r--r--site/controls/Timb_MIDISPEED_16x3.json1
-rw-r--r--site/controls/Timb_MIDISPEED_16x3.pngbin0 -> 535 bytes
-rw-r--r--site/controls/Timb_MIDITRANSP(MSP)_202025.json1
-rw-r--r--site/controls/Timb_MIDITRANSP(MSP)_202025.pngbin0 -> 3470 bytes
-rw-r--r--site/controls/Timb_MONITOR2_(111x176-128).json1
-rw-r--r--site/controls/Timb_MONITOR2_(111x176-128).pngbin0 -> 2469653 bytes
-rw-r--r--site/controls/Timb_MONITOR2_(111x176-128)b.json1
-rw-r--r--site/controls/Timb_MONITOR2_(111x176-128)b.pngbin0 -> 2942373 bytes
-rw-r--r--site/controls/Timb_MONITOR2_(111x176-128)bFlip.json1
-rw-r--r--site/controls/Timb_MONITOR2_(111x176-128)bFlip.pngbin0 -> 2914045 bytes
-rw-r--r--site/controls/Timb_MONITOR2_(111x176-128)moreLighty.json1
-rw-r--r--site/controls/Timb_MONITOR2_(111x176-128)moreLighty.pngbin0 -> 2416261 bytes
-rw-r--r--site/controls/Timb_MPS_VELO_12x16x130-b.json1
-rw-r--r--site/controls/Timb_MPS_VELO_12x16x130-b.pngbin0 -> 2567 bytes
-rw-r--r--site/controls/Timb_MPS_VELO_12x16x130.json1
-rw-r--r--site/controls/Timb_MPS_VELO_12x16x130.pngbin0 -> 2389 bytes
-rw-r--r--site/controls/Timb_MPS_VELO_8x16x130.json1
-rw-r--r--site/controls/Timb_MPS_VELO_8x16x130.pngbin0 -> 2261 bytes
-rw-r--r--site/controls/Timb_MadMon8-C.json1
-rw-r--r--site/controls/Timb_MadMon8-C.pngbin0 -> 695 bytes
-rw-r--r--site/controls/Timb_MadMon8-D.json1
-rw-r--r--site/controls/Timb_MadMon8-D.pngbin0 -> 702 bytes
-rw-r--r--site/controls/Timb_MadMon8-G1_Top.json1
-rw-r--r--site/controls/Timb_MadMon8-G1_Top.pngbin0 -> 276 bytes
-rw-r--r--site/controls/Timb_MadMon8-G2_Bottom.json1
-rw-r--r--site/controls/Timb_MadMon8-G2_Bottom.pngbin0 -> 809 bytes
-rw-r--r--site/controls/Timb_MadMon8-H1_Top.json1
-rw-r--r--site/controls/Timb_MadMon8-H1_Top.pngbin0 -> 276 bytes
-rw-r--r--site/controls/Timb_MadMon8-H2_Bottom.json1
-rw-r--r--site/controls/Timb_MadMon8-H2_Bottom.pngbin0 -> 1025 bytes
-rw-r--r--site/controls/Timb_MadMon8-H2_Bottomb.json1
-rw-r--r--site/controls/Timb_MadMon8-H2_Bottomb.pngbin0 -> 976 bytes
-rw-r--r--site/controls/Timb_MadMon8-K1OnOff.json1
-rw-r--r--site/controls/Timb_MadMon8-K1OnOff.pngbin0 -> 673 bytes
-rw-r--r--site/controls/Timb_MadMon8-K2METERBottom.json1
-rw-r--r--site/controls/Timb_MadMon8-K2METERBottom.pngbin0 -> 280 bytes
-rw-r--r--site/controls/Timb_MegaBaby-01A_1620-128.json1
-rw-r--r--site/controls/Timb_MegaBaby-01A_1620-128.pngbin0 -> 3598 bytes
-rw-r--r--site/controls/Timb_MegaBaby-01A_1628-128.json1
-rw-r--r--site/controls/Timb_MegaBaby-01A_1628-128.pngbin0 -> 3179 bytes
-rw-r--r--site/controls/Timb_MegaBaby-01B_1620-128.json1
-rw-r--r--site/controls/Timb_MegaBaby-01B_1620-128.pngbin0 -> 3624 bytes
-rw-r--r--site/controls/Timb_MegaBaby-01B_1628-128.json1
-rw-r--r--site/controls/Timb_MegaBaby-01B_1628-128.pngbin0 -> 3213 bytes
-rw-r--r--site/controls/Timb_MegaBaby-01CHANNELS_28x28-16.json1
-rw-r--r--site/controls/Timb_MegaBaby-01CHANNELS_28x28-16.pngbin0 -> 1994 bytes
-rw-r--r--site/controls/Timb_MegaBaby-01NOTENAMES_28x40-128.json1
-rw-r--r--site/controls/Timb_MegaBaby-01NOTENAMES_28x40-128.pngbin0 -> 25615 bytes
-rw-r--r--site/controls/Timb_MegaBaby-01SWING_28x40-101.json1
-rw-r--r--site/controls/Timb_MegaBaby-01SWING_28x40-101.pngbin0 -> 3261 bytes
-rw-r--r--site/controls/Timb_MeterBEATWING_8240-128fr.json1
-rw-r--r--site/controls/Timb_MeterBEATWING_8240-128fr.pngbin0 -> 12619 bytes
-rw-r--r--site/controls/Timb_MeterBLCKMORE_13322-128fr.json1
-rw-r--r--site/controls/Timb_MeterBLCKMORE_13322-128fr.pngbin0 -> 71921 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo-PEAK_8x16-30red.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo-PEAK_8x16-30red.pngbin0 -> 1025 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.pngbin0 -> 61378 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwoHRZN_13x123-129.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwoHRZN_13x123-129.pngbin0 -> 60616 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.pngbin0 -> 61477 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_13x123-129.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_13x123-129.pngbin0 -> 75189 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x123-129.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x123-129.pngbin0 -> 33352 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x123-129grn.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x123-129grn.pngbin0 -> 32770 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x123-129yellow.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x123-129yellow.pngbin0 -> 8365 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZblo.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZblo.pngbin0 -> 9646 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZgrn.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZgrn.pngbin0 -> 9649 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZred.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZred.pngbin0 -> 9267 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZylw.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZylw.pngbin0 -> 9378 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129blo.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129blo.pngbin0 -> 10471 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129grn.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129grn.pngbin0 -> 10465 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129red.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129red.pngbin0 -> 10403 bytes
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129ylw.json1
-rw-r--r--site/controls/Timb_MeterBlackOnixTwo_8x63-129ylw.pngbin0 -> 10478 bytes
-rw-r--r--site/controls/Timb_MeterCLSC10_8142-128.json1
-rw-r--r--site/controls/Timb_MeterCLSC10_8142-128.pngbin0 -> 22209 bytes
-rw-r--r--site/controls/Timb_MeterCLSC10_8280-128.json1
-rw-r--r--site/controls/Timb_MeterCLSC10_8280-128.pngbin0 -> 19570 bytes
-rw-r--r--site/controls/Timb_MeterCLSC10_894-128.json1
-rw-r--r--site/controls/Timb_MeterCLSC10_894-128.pngbin0 -> 15874 bytes
-rw-r--r--site/controls/Timb_MeterCybZinc_16240-128fr.json1
-rw-r--r--site/controls/Timb_MeterCybZinc_16240-128fr.pngbin0 -> 35927 bytes
-rw-r--r--site/controls/Timb_MeterDEF3_8x123-129.json1
-rw-r--r--site/controls/Timb_MeterDEF3_8x123-129.pngbin0 -> 41006 bytes
-rw-r--r--site/controls/Timb_MeterFUNKTION_16242-128fr.json1
-rw-r--r--site/controls/Timb_MeterFUNKTION_16242-128fr.pngbin0 -> 45486 bytes
-rw-r--r--site/controls/Timb_MeterFUNKTION_8132-128fr.json1
-rw-r--r--site/controls/Timb_MeterFUNKTION_8132-128fr.pngbin0 -> 16657 bytes
-rw-r--r--site/controls/Timb_MeterHRZBEATWING_8240-128fr.json1
-rw-r--r--site/controls/Timb_MeterHRZBEATWING_8240-128fr.pngbin0 -> 7636 bytes
-rw-r--r--site/controls/Timb_MeterHRZBLCKMORE_13322-128fr.json1
-rw-r--r--site/controls/Timb_MeterHRZBLCKMORE_13322-128fr.pngbin0 -> 39095 bytes
-rw-r--r--site/controls/Timb_MeterHRZCLSC10_8280-128.json1
-rw-r--r--site/controls/Timb_MeterHRZCLSC10_8280-128.pngbin0 -> 10438 bytes
-rw-r--r--site/controls/Timb_MeterHRZCybZinc_16240-128fr.json1
-rw-r--r--site/controls/Timb_MeterHRZCybZinc_16240-128fr.pngbin0 -> 47488 bytes
-rw-r--r--site/controls/Timb_MeterHRZFUNKTION_16242-128fr.json1
-rw-r--r--site/controls/Timb_MeterHRZFUNKTION_16242-128fr.pngbin0 -> 17135 bytes
-rw-r--r--site/controls/Timb_MeterHRZILOGICFREE_16226-128fr.json1
-rw-r--r--site/controls/Timb_MeterHRZILOGICFREE_16226-128fr.pngbin0 -> 59547 bytes
-rw-r--r--site/controls/Timb_MeterHRZJanneSerenity_8324-128.json1
-rw-r--r--site/controls/Timb_MeterHRZJanneSerenity_8324-128.pngbin0 -> 9301 bytes
-rw-r--r--site/controls/Timb_MeterHRZPAULA_8257-128.json1
-rw-r--r--site/controls/Timb_MeterHRZPAULA_8257-128.pngbin0 -> 6448 bytes
-rw-r--r--site/controls/Timb_MeterHRZPAULIE_16200-128fr.json1
-rw-r--r--site/controls/Timb_MeterHRZPAULIE_16200-128fr.pngbin0 -> 14360 bytes
-rw-r--r--site/controls/Timb_MeterHRZSessionMod_8240-128.json1
-rw-r--r--site/controls/Timb_MeterHRZSessionMod_8240-128.pngbin0 -> 12408 bytes
-rw-r--r--site/controls/Timb_MeterHRZSessionMod_8240-128flip.json1
-rw-r--r--site/controls/Timb_MeterHRZSessionMod_8240-128flip.pngbin0 -> 11159 bytes
-rw-r--r--site/controls/Timb_MeterHRZXRAYMANALOGDEF_8320-128.json1
-rw-r--r--site/controls/Timb_MeterHRZXRAYMANALOGDEF_8320-128.pngbin0 -> 9091 bytes
-rw-r--r--site/controls/Timb_MeterHRZXRAYMANALOGLARGE_16320-128.json1
-rw-r--r--site/controls/Timb_MeterHRZXRAYMANALOGLARGE_16320-128.pngbin0 -> 17704 bytes
-rw-r--r--site/controls/Timb_MeterHydraW_894-128.json1
-rw-r--r--site/controls/Timb_MeterHydraW_894-128.pngbin0 -> 4361 bytes
-rw-r--r--site/controls/Timb_MeterILOGICFREE_16226-128fr.json1
-rw-r--r--site/controls/Timb_MeterILOGICFREE_16226-128fr.pngbin0 -> 50616 bytes
-rw-r--r--site/controls/Timb_MeterJanneSerenity_8324-128.json1
-rw-r--r--site/controls/Timb_MeterJanneSerenity_8324-128.pngbin0 -> 21555 bytes
-rw-r--r--site/controls/Timb_MeterLarge-HORZ_16334-128fr.json1
-rw-r--r--site/controls/Timb_MeterLarge-HORZ_16334-128fr.pngbin0 -> 13418 bytes
-rw-r--r--site/controls/Timb_MeterLarge-VERT_16334-128fr.json1
-rw-r--r--site/controls/Timb_MeterLarge-VERT_16334-128fr.pngbin0 -> 42883 bytes
-rw-r--r--site/controls/Timb_MeterPAULA_8257-128.json1
-rw-r--r--site/controls/Timb_MeterPAULA_8257-128.pngbin0 -> 61754 bytes
-rw-r--r--site/controls/Timb_MeterPAULIE_16200-128fr.json1
-rw-r--r--site/controls/Timb_MeterPAULIE_16200-128fr.pngbin0 -> 17256 bytes
-rw-r--r--site/controls/Timb_MeterPAULIE_8-32-128fr.json1
-rw-r--r--site/controls/Timb_MeterPAULIE_8-32-128fr.pngbin0 -> 2520 bytes
-rw-r--r--site/controls/Timb_MeterSessionMod_8240-128.json1
-rw-r--r--site/controls/Timb_MeterSessionMod_8240-128.pngbin0 -> 15329 bytes
-rw-r--r--site/controls/Timb_MeterSideChainRVRS_8-64yellow.json1
-rw-r--r--site/controls/Timb_MeterSideChainRVRS_8-64yellow.pngbin0 -> 13143 bytes
-rw-r--r--site/controls/Timb_MeterSideChain_8-64yellow.json1
-rw-r--r--site/controls/Timb_MeterSideChain_8-64yellow.pngbin0 -> 13605 bytes
-rw-r--r--site/controls/Timb_MeterWavesCLA-117.json1
-rw-r--r--site/controls/Timb_MeterWavesCLA-117.pngbin0 -> 16435 bytes
-rw-r--r--site/controls/Timb_MeterWavesCLA-234.json1
-rw-r--r--site/controls/Timb_MeterWavesCLA-234.pngbin0 -> 1668354 bytes
-rw-r--r--site/controls/Timb_MeterXRAYMANALOGDEF_8320-128.json1
-rw-r--r--site/controls/Timb_MeterXRAYMANALOGDEF_8320-128.pngbin0 -> 21017 bytes
-rw-r--r--site/controls/Timb_MeterXRAYMANALOGLARGE_16320-128.json1
-rw-r--r--site/controls/Timb_MeterXRAYMANALOGLARGE_16320-128.pngbin0 -> 36705 bytes
-rw-r--r--site/controls/Timb_Meter_ArrowDown_16x31.json1
-rw-r--r--site/controls/Timb_Meter_ArrowDown_16x31.pngbin0 -> 2806 bytes
-rw-r--r--site/controls/Timb_Meter_ArrowRight_16x31.json1
-rw-r--r--site/controls/Timb_Meter_ArrowRight_16x31.pngbin0 -> 3249 bytes
-rw-r--r--site/controls/Timb_Meter_FUNKTIONTRCK_4x33.json1
-rw-r--r--site/controls/Timb_Meter_FUNKTIONTRCK_4x33.pngbin0 -> 1639 bytes
-rw-r--r--site/controls/Timb_Meter_NITROGENTRCK_4x33.json1
-rw-r--r--site/controls/Timb_Meter_NITROGENTRCK_4x33.pngbin0 -> 1838 bytes
-rw-r--r--site/controls/Timb_Meter_REABLETTRCK_4x33.json1
-rw-r--r--site/controls/Timb_Meter_REABLETTRCK_4x33.pngbin0 -> 2307 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_L.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_L.pngbin0 -> 2536 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R.pngbin0 -> 2716 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2.pngbin0 -> 2937 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2b.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2b.pngbin0 -> 3302 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2c.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2c.pngbin0 -> 3291 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x8-128fr_R2b.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x8-128fr_R2b.pngbin0 -> 3297 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x8-16fr_R2b.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_33x8-16fr_R2b.pngbin0 -> 650 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_4x33.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_4x33.pngbin0 -> 1955 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33.pngbin0 -> 5058 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33b.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33b.pngbin0 -> 5168 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33c.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33c.pngbin0 -> 5175 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33d.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33d.pngbin0 -> 5039 bytes
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33e.json1
-rw-r--r--site/controls/Timb_Meter_SESMODTRCK_8x33e.pngbin0 -> 5248 bytes
-rw-r--r--site/controls/Timb_Meter_SUBSUB2_(259-51fr).json1
-rw-r--r--site/controls/Timb_Meter_SUBSUB2_(259-51fr).pngbin0 -> 2706687 bytes
-rw-r--r--site/controls/Timb_Meter_SUBSUB_(259-51fr).json1
-rw-r--r--site/controls/Timb_Meter_SUBSUB_(259-51fr).pngbin0 -> 3978547 bytes
-rw-r--r--site/controls/Timb_Meter_TRANSPARENT-01_(16x48-128).json1
-rw-r--r--site/controls/Timb_Meter_TRANSPARENT-01_(16x48-128).pngbin0 -> 2983 bytes
-rw-r--r--site/controls/Timb_Minika16101_BLO.json1
-rw-r--r--site/controls/Timb_Minika16101_BLO.pngbin0 -> 47697 bytes
-rw-r--r--site/controls/Timb_Minika16101_DBLO.json1
-rw-r--r--site/controls/Timb_Minika16101_DBLO.pngbin0 -> 47984 bytes
-rw-r--r--site/controls/Timb_Minika16101_GRN.json1
-rw-r--r--site/controls/Timb_Minika16101_GRN.pngbin0 -> 47464 bytes
-rw-r--r--site/controls/Timb_Minika16101_MOR.json1
-rw-r--r--site/controls/Timb_Minika16101_MOR.pngbin0 -> 47729 bytes
-rw-r--r--site/controls/Timb_Minika16101_PINK.json1
-rw-r--r--site/controls/Timb_Minika16101_PINK.pngbin0 -> 48225 bytes
-rw-r--r--site/controls/Timb_Minika16101_RED.json1
-rw-r--r--site/controls/Timb_Minika16101_RED.pngbin0 -> 47394 bytes
-rw-r--r--site/controls/Timb_Minika16101_YLLW.json1
-rw-r--r--site/controls/Timb_Minika16101_YLLW.pngbin0 -> 47211 bytes
-rw-r--r--site/controls/Timb_Modulators01_(16x).json1
-rw-r--r--site/controls/Timb_Modulators01_(16x).pngbin0 -> 797 bytes
-rw-r--r--site/controls/Timb_Modulators01b_(16x).json1
-rw-r--r--site/controls/Timb_Modulators01b_(16x).pngbin0 -> 804 bytes
-rw-r--r--site/controls/Timb_MulchSlider_20140-129.json1
-rw-r--r--site/controls/Timb_MulchSlider_20140-129.pngbin0 -> 59910 bytes
-rw-r--r--site/controls/Timb_MultiFXSENDER12x16-5fr.json1
-rw-r--r--site/controls/Timb_MultiFXSENDER12x16-5fr.pngbin0 -> 990 bytes
-rw-r--r--site/controls/Timb_MultiFXSENDER12x16-9fr.json1
-rw-r--r--site/controls/Timb_MultiFXSENDER12x16-9fr.pngbin0 -> 1572 bytes
-rw-r--r--site/controls/Timb_MultiFXSENDER16x16-9fr.json1
-rw-r--r--site/controls/Timb_MultiFXSENDER16x16-9fr.pngbin0 -> 1687 bytes
-rw-r--r--site/controls/Timb_MultiTransient_102.json1
-rw-r--r--site/controls/Timb_MultiTransient_102.pngbin0 -> 3524828 bytes
-rw-r--r--site/controls/Timb_MultiTransient_105.json1
-rw-r--r--site/controls/Timb_MultiTransient_105.pngbin0 -> 3359125 bytes
-rw-r--r--site/controls/Timb_NSA TSW Red-01.json1
-rw-r--r--site/controls/Timb_NSA TSW Red-01.pngbin0 -> 582 bytes
-rw-r--r--site/controls/Timb_NSA TSW Red-02.json1
-rw-r--r--site/controls/Timb_NSA TSW Red-02.pngbin0 -> 1085 bytes
-rw-r--r--site/controls/Timb_NSA TSW Red-02b.json1
-rw-r--r--site/controls/Timb_NSA TSW Red-02b.pngbin0 -> 1025 bytes
-rw-r--r--site/controls/Timb_NSA-FREESTYLE-Knob-01.json1
-rw-r--r--site/controls/Timb_NSA-FREESTYLE-Knob-01.pngbin0 -> 21731 bytes
-rw-r--r--site/controls/Timb_NSA-FREESTYLE-Knob-02.json1
-rw-r--r--site/controls/Timb_NSA-FREESTYLE-Knob-02.pngbin0 -> 6498 bytes
-rw-r--r--site/controls/Timb_NSA-FREESTYLE-Knob-03.json1
-rw-r--r--site/controls/Timb_NSA-FREESTYLE-Knob-03.pngbin0 -> 4246 bytes
-rw-r--r--site/controls/Timb_NanoFx23.json1
-rw-r--r--site/controls/Timb_NanoFx23.pngbin0 -> 2014 bytes
-rw-r--r--site/controls/Timb_Nomomistuune_(96x129).json1
-rw-r--r--site/controls/Timb_Nomomistuune_(96x129).pngbin0 -> 660015 bytes
-rw-r--r--site/controls/Timb_ONOFF_BGBUTTON.json1
-rw-r--r--site/controls/Timb_ONOFF_BGBUTTON.pngbin0 -> 175 bytes
-rw-r--r--site/controls/Timb_PAINTPLACK_32x12-128.json1
-rw-r--r--site/controls/Timb_PAINTPLACK_32x12-128.pngbin0 -> 3014 bytes
-rw-r--r--site/controls/Timb_PAINTPLACK_32x16-128.json1
-rw-r--r--site/controls/Timb_PAINTPLACK_32x16-128.pngbin0 -> 3974 bytes
-rw-r--r--site/controls/Timb_Peak-ish-1.json1
-rw-r--r--site/controls/Timb_Peak-ish-1.pngbin0 -> 9446 bytes
-rw-r--r--site/controls/Timb_PitchMapBYPASS-00.json1
-rw-r--r--site/controls/Timb_PitchMapBYPASS-00.pngbin0 -> 1644 bytes
-rw-r--r--site/controls/Timb_PitchMapBYPASS-01.json1
-rw-r--r--site/controls/Timb_PitchMapBYPASS-01.pngbin0 -> 1481 bytes
-rw-r--r--site/controls/Timb_PoorMelda01_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMelda01_(96x129).pngbin0 -> 1238462 bytes
-rw-r--r--site/controls/Timb_PoorMelda02_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMelda02_(96x129).pngbin0 -> 1235591 bytes
-rw-r--r--site/controls/Timb_PoorMelda03_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMelda03_(96x129).pngbin0 -> 1241991 bytes
-rw-r--r--site/controls/Timb_PoorMelda04_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMelda04_(96x129).pngbin0 -> 1231806 bytes
-rw-r--r--site/controls/Timb_PoorMelda05_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMelda05_(96x129).pngbin0 -> 1187940 bytes
-rw-r--r--site/controls/Timb_PoorMelda06_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMelda06_(96x129).pngbin0 -> 1301454 bytes
-rw-r--r--site/controls/Timb_PoorMelda07_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMelda07_(96x129).pngbin0 -> 1286477 bytes
-rw-r--r--site/controls/Timb_PoorMelda08_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMelda08_(96x129).pngbin0 -> 1289755 bytes
-rw-r--r--site/controls/Timb_PoorMeldaB00_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMeldaB00_(96x129).pngbin0 -> 1345650 bytes
-rw-r--r--site/controls/Timb_PoorMeldaB01_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMeldaB01_(96x129).pngbin0 -> 1320133 bytes
-rw-r--r--site/controls/Timb_PoorMeldaB02_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMeldaB02_(96x129).pngbin0 -> 1344140 bytes
-rw-r--r--site/controls/Timb_PoorMeldaB03_(96x129).json1
-rw-r--r--site/controls/Timb_PoorMeldaB03_(96x129).pngbin0 -> 1344590 bytes
-rw-r--r--site/controls/Timb_Power switch 01EDTx84.json1
-rw-r--r--site/controls/Timb_Power switch 01EDTx84.pngbin0 -> 4712 bytes
-rw-r--r--site/controls/Timb_PtchWhlPITCH_28-97fr-ok.json1
-rw-r--r--site/controls/Timb_PtchWhlPITCH_28-97fr-ok.pngbin0 -> 8274 bytes
-rw-r--r--site/controls/Timb_Q3-128129.json1
-rw-r--r--site/controls/Timb_Q3-128129.pngbin0 -> 1042211 bytes
-rw-r--r--site/controls/Timb_RC-1-MUTE.json1
-rw-r--r--site/controls/Timb_RC-1-MUTE.pngbin0 -> 242 bytes
-rw-r--r--site/controls/Timb_RC-1-SOLO.json1
-rw-r--r--site/controls/Timb_RC-1-SOLO.pngbin0 -> 277 bytes
-rw-r--r--site/controls/Timb_REA Render To Disk.json1
-rw-r--r--site/controls/Timb_REA Render To Disk.pngbin0 -> 2844 bytes
-rw-r--r--site/controls/Timb_REAPER_128-128fr.json1
-rw-r--r--site/controls/Timb_REAPER_128-128fr.pngbin0 -> 1345637 bytes
-rw-r--r--site/controls/Timb_ReaDelay-01(32x16-101).json1
-rw-r--r--site/controls/Timb_ReaDelay-01(32x16-101).pngbin0 -> 3895 bytes
-rw-r--r--site/controls/Timb_RolandSH101Wood_(108-129).json1
-rw-r--r--site/controls/Timb_RolandSH101Wood_(108-129).pngbin0 -> 99228 bytes
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_32129.json1
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_32129.pngbin0 -> 22296 bytes
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_32129green.json1
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_32129green.pngbin0 -> 20309 bytes
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_48129.json1
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_48129.pngbin0 -> 58060 bytes
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_48129Ornge.json1
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_48129Ornge.pngbin0 -> 58690 bytes
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_56129.json1
-rw-r--r--site/controls/Timb_SIDECHAIN_knobmed_56129.pngbin0 -> 95967 bytes
-rw-r--r--site/controls/Timb_SQUARE_16x16-128_Black.json1
-rw-r--r--site/controls/Timb_SQUARE_16x16-128_Black.pngbin0 -> 3720 bytes
-rw-r--r--site/controls/Timb_SQUARE_16x16-128_Grey.json1
-rw-r--r--site/controls/Timb_SQUARE_16x16-128_Grey.pngbin0 -> 684 bytes
-rw-r--r--site/controls/Timb_SQUARE_16x16-128_Purple.json1
-rw-r--r--site/controls/Timb_SQUARE_16x16-128_Purple.pngbin0 -> 685 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-001.PNGbin0 -> 6054 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-001.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-001b.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-001b.pngbin0 -> 6964 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-002.PNGbin0 -> 9007 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-002.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-002b.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-002b.pngbin0 -> 7114 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-003.PNGbin0 -> 6449 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-003.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-004.PNGbin0 -> 1139323 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-004.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-005.PNGbin0 -> 22693 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-005.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-006.PNGbin0 -> 52681 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-006.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-007.PNGbin0 -> 53330 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-007.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-008.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-008.pngbin0 -> 985 bytes
-rw-r--r--site/controls/Timb_SSpot2018Control-009.json1
-rw-r--r--site/controls/Timb_SSpot2018Control-009.pngbin0 -> 1008 bytes
-rw-r--r--site/controls/Timb_STLN_Slider-001_2486-128.json1
-rw-r--r--site/controls/Timb_STLN_Slider-001_2486-128.pngbin0 -> 96813 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129).json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129).pngbin0 -> 32738 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)bloo.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)bloo.pngbin0 -> 34818 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)brwn.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)brwn.pngbin0 -> 34674 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)greys.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)greys.pngbin0 -> 34084 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)greys2.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)greys2.pngbin0 -> 34782 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)griin.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)griin.pngbin0 -> 34351 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)orange.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)orange.pngbin0 -> 35190 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)puurp.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)puurp.pngbin0 -> 34208 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)puurpDrk.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)puurpDrk.pngbin0 -> 34974 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)redd.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)redd.pngbin0 -> 33992 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)yello.json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_(16-129)yello.pngbin0 -> 34606 bytes
-rw-r--r--site/controls/Timb_SendBOX-PAN_PanMASTER_(16-129).json1
-rw-r--r--site/controls/Timb_SendBOX-PAN_PanMASTER_(16-129).pngbin0 -> 20796 bytes
-rw-r--r--site/controls/Timb_SendSlider2_(32-129fr).json1
-rw-r--r--site/controls/Timb_SendSlider2_(32-129fr).pngbin0 -> 83643 bytes
-rw-r--r--site/controls/Timb_SendSlider2b_(32-129fr).json1
-rw-r--r--site/controls/Timb_SendSlider2b_(32-129fr).pngbin0 -> 111150 bytes
-rw-r--r--site/controls/Timb_Shape-blooEDT-96128_bipo.json1
-rw-r--r--site/controls/Timb_Shape-blooEDT-96128_bipo.pngbin0 -> 1903354 bytes
-rw-r--r--site/controls/Timb_Shape-blooEDT-96128_po.json1
-rw-r--r--site/controls/Timb_Shape-blooEDT-96128_po.pngbin0 -> 1889816 bytes
-rw-r--r--site/controls/Timb_Shape-greyEDT-96128_bipo.json1
-rw-r--r--site/controls/Timb_Shape-greyEDT-96128_bipo.pngbin0 -> 1742284 bytes
-rw-r--r--site/controls/Timb_Shape-greyEDT-96128_po.json1
-rw-r--r--site/controls/Timb_Shape-greyEDT-96128_po.pngbin0 -> 1729543 bytes
-rw-r--r--site/controls/Timb_Shape-orangeEDT-96128_bipo.json1
-rw-r--r--site/controls/Timb_Shape-orangeEDT-96128_bipo.pngbin0 -> 2054186 bytes
-rw-r--r--site/controls/Timb_Shape-orangeEDT-96128_po.json1
-rw-r--r--site/controls/Timb_Shape-orangeEDT-96128_po.pngbin0 -> 2041838 bytes
-rw-r--r--site/controls/Timb_Simple Color Frames-00-32-bloo.json1
-rw-r--r--site/controls/Timb_Simple Color Frames-00-32-bloo.pngbin0 -> 300 bytes
-rw-r--r--site/controls/Timb_Simple Color Frames-00.json1
-rw-r--r--site/controls/Timb_Simple Color Frames-00.pngbin0 -> 651 bytes
-rw-r--r--site/controls/Timb_Simple Color Frames-00bb.json1
-rw-r--r--site/controls/Timb_Simple Color Frames-00bb.pngbin0 -> 580 bytes
-rw-r--r--site/controls/Timb_Simple Color Frames-Black.json1
-rw-r--r--site/controls/Timb_Simple Color Frames-Black.pngbin0 -> 781 bytes
-rw-r--r--site/controls/Timb_Simple Color Frames-Green.json1
-rw-r--r--site/controls/Timb_Simple Color Frames-Green.pngbin0 -> 713 bytes
-rw-r--r--site/controls/Timb_Simple Color Frames-Greenbb.json1
-rw-r--r--site/controls/Timb_Simple Color Frames-Greenbb.pngbin0 -> 634 bytes
-rw-r--r--site/controls/Timb_Simple Color Frames-Orange.json1
-rw-r--r--site/controls/Timb_Simple Color Frames-Orange.pngbin0 -> 590 bytes
-rw-r--r--site/controls/Timb_Simple Color Frames-Orangebb.json1
-rw-r--r--site/controls/Timb_Simple Color Frames-Orangebb.pngbin0 -> 512 bytes
-rw-r--r--site/controls/Timb_Simple Color Frames-Red.json1
-rw-r--r--site/controls/Timb_Simple Color Frames-Red.pngbin0 -> 648 bytes
-rw-r--r--site/controls/Timb_SimpleFlat1_6496fr.json1
-rw-r--r--site/controls/Timb_SimpleFlat1_6496fr.pngbin0 -> 46627 bytes
-rw-r--r--site/controls/Timb_Slider_Funktion_24150-129.json1
-rw-r--r--site/controls/Timb_Slider_Funktion_24150-129.pngbin0 -> 46667 bytes
-rw-r--r--site/controls/Timb_Slider_Rearth_20158-128.json1
-rw-r--r--site/controls/Timb_Slider_Rearth_20158-128.pngbin0 -> 140831 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-0.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-0.pngbin0 -> 305 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-1.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-1.pngbin0 -> 297 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-10.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-10.pngbin0 -> 318 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-11.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-11.pngbin0 -> 361 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-12.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-12.pngbin0 -> 316 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-13.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-13.pngbin0 -> 338 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-14.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-14.pngbin0 -> 302 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-15.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-15.pngbin0 -> 316 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-16.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-16.pngbin0 -> 315 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-17.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-17.pngbin0 -> 324 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-18.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-18.pngbin0 -> 994 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-19.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-19.pngbin0 -> 337 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-2.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-2.pngbin0 -> 337 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-3.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-3.pngbin0 -> 303 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-4.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-4.pngbin0 -> 290 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-5.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-5.pngbin0 -> 324 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-6.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-6.pngbin0 -> 340 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-7.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-7.pngbin0 -> 350 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-8.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-8.pngbin0 -> 312 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-9.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff16WASD-9.pngbin0 -> 375 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT.pngbin0 -> 363 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2.pngbin0 -> 414 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2b.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2b.pngbin0 -> 419 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2c.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2c.pngbin0 -> 253 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2c2.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2c2.pngbin0 -> 262 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2c3.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2c3.pngbin0 -> 275 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2c4.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2c4.pngbin0 -> 472 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2d.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2d.pngbin0 -> 499 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2db.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2db.pngbin0 -> 509 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2e.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT2e.pngbin0 -> 239 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT3.json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_ UGGLT3.pngbin0 -> 418 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_(32x26).json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_(32x26).pngbin0 -> 309 bytes
-rw-r--r--site/controls/Timb_SnowFXOnOff_(32x37).json1
-rw-r--r--site/controls/Timb_SnowFXOnOff_(32x37).pngbin0 -> 403 bytes
-rw-r--r--site/controls/Timb_SpaceshipDelay_38129.json1
-rw-r--r--site/controls/Timb_SpaceshipDelay_38129.pngbin0 -> 42659 bytes
-rw-r--r--site/controls/Timb_SpaceshipDelay_64129.json1
-rw-r--r--site/controls/Timb_SpaceshipDelay_64129.pngbin0 -> 84452 bytes
-rw-r--r--site/controls/Timb_T-Master_knob_64101.json1
-rw-r--r--site/controls/Timb_T-Master_knob_64101.pngbin0 -> 64710 bytes
-rw-r--r--site/controls/Timb_TAKESWITCHER-(512)-01.json1
-rw-r--r--site/controls/Timb_TAKESWITCHER-(512)-01.pngbin0 -> 125933 bytes
-rw-r--r--site/controls/Timb_TAKESWITCHER-(512)-02.json1
-rw-r--r--site/controls/Timb_TAKESWITCHER-(512)-02.pngbin0 -> 132877 bytes
-rw-r--r--site/controls/Timb_TAKESWITCHER-(512)-03.json1
-rw-r--r--site/controls/Timb_TAKESWITCHER-(512)-03.pngbin0 -> 129216 bytes
-rw-r--r--site/controls/Timb_TAKESWITCHER-(512)-bb-01.json1
-rw-r--r--site/controls/Timb_TAKESWITCHER-(512)-bb-01.pngbin0 -> 24544 bytes
-rw-r--r--site/controls/Timb_TAKESWITCHERXXL_(22x200).json1
-rw-r--r--site/controls/Timb_TAKESWITCHERXXL_(22x200).pngbin0 -> 15730 bytes
-rw-r--r--site/controls/Timb_TAKESWITCHERXXL_(28x200).json1
-rw-r--r--site/controls/Timb_TAKESWITCHERXXL_(28x200).pngbin0 -> 28461 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-01.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-01.pngbin0 -> 13675 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-02.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-02.pngbin0 -> 13790 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-03.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-03.pngbin0 -> 13876 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-04.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-04.pngbin0 -> 13773 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-05.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-05.pngbin0 -> 13816 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-06.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-06.pngbin0 -> 13635 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-07.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-07.pngbin0 -> 13727 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-08.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-08.pngbin0 -> 13830 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-09.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-09.pngbin0 -> 13542 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-10.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-10.pngbin0 -> 13771 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-11.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-11.pngbin0 -> 13734 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-12.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-12.pngbin0 -> 13717 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-13.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-13.pngbin0 -> 13916 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-14.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-14.pngbin0 -> 13652 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-15.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-15.pngbin0 -> 13598 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-16.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-16.pngbin0 -> 13383 bytes
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-17.json1
-rw-r--r--site/controls/Timb_TDSHES_(24x129)-17.pngbin0 -> 14149 bytes
-rw-r--r--site/controls/Timb_TakeSwitcher2020-01.json1
-rw-r--r--site/controls/Timb_TakeSwitcher2020-01.pngbin0 -> 391 bytes
-rw-r--r--site/controls/Timb_Tantra_AIMBUT16.json1
-rw-r--r--site/controls/Timb_Tantra_AIMBUT16.pngbin0 -> 4048 bytes
-rw-r--r--site/controls/Timb_Tantra_AIMBUT16b.json1
-rw-r--r--site/controls/Timb_Tantra_AIMBUT16b.pngbin0 -> 4059 bytes
-rw-r--r--site/controls/Timb_Tantra_AIMBUT16c.json1
-rw-r--r--site/controls/Timb_Tantra_AIMBUT16c.pngbin0 -> 4047 bytes
-rw-r--r--site/controls/Timb_Tantra_CLOSE23.json1
-rw-r--r--site/controls/Timb_Tantra_CLOSE23.pngbin0 -> 4190 bytes
-rw-r--r--site/controls/Timb_Tantra_FXRND20.json1
-rw-r--r--site/controls/Timb_Tantra_FXRND20.pngbin0 -> 4320 bytes
-rw-r--r--site/controls/Timb_Tantra_MATRIXPB16.json1
-rw-r--r--site/controls/Timb_Tantra_MATRIXPB16.pngbin0 -> 3909 bytes
-rw-r--r--site/controls/Timb_Tantra_MODNEXBUT16.json1
-rw-r--r--site/controls/Timb_Tantra_MODNEXBUT16.pngbin0 -> 4581 bytes
-rw-r--r--site/controls/Timb_Tantra_MODNEXBUT16b.json1
-rw-r--r--site/controls/Timb_Tantra_MODNEXBUT16b.pngbin0 -> 4645 bytes
-rw-r--r--site/controls/Timb_Tantra_POWSW25.json1
-rw-r--r--site/controls/Timb_Tantra_POWSW25.pngbin0 -> 3907 bytes
-rw-r--r--site/controls/Timb_Transparent01_(18x40-128).json1
-rw-r--r--site/controls/Timb_Transparent01_(18x40-128).pngbin0 -> 22213 bytes
-rw-r--r--site/controls/Timb_Transparent01_(18x64-128).json1
-rw-r--r--site/controls/Timb_Transparent01_(18x64-128).pngbin0 -> 23353 bytes
-rw-r--r--site/controls/Timb_UVI FALCON2020-01.json1
-rw-r--r--site/controls/Timb_UVI FALCON2020-01.pngbin0 -> 5430 bytes
-rw-r--r--site/controls/Timb_UVI FALCON2020-01b.json1
-rw-r--r--site/controls/Timb_UVI FALCON2020-01b.pngbin0 -> 15341 bytes
-rw-r--r--site/controls/Timb_UVIButton122.json1
-rw-r--r--site/controls/Timb_UVIButton122.pngbin0 -> 1280 bytes
-rw-r--r--site/controls/Timb_UVIButton222.json1
-rw-r--r--site/controls/Timb_UVIButton222.pngbin0 -> 1048 bytes
-rw-r--r--site/controls/Timb_UVIxXxlose.json1
-rw-r--r--site/controls/Timb_UVIxXxlose.pngbin0 -> 2710 bytes
-rw-r--r--site/controls/Timb_UpDownArw-01.json1
-rw-r--r--site/controls/Timb_UpDownArw-01.pngbin0 -> 5053 bytes
-rw-r--r--site/controls/Timb_UpDownArw-02.json1
-rw-r--r--site/controls/Timb_UpDownArw-02.pngbin0 -> 5080 bytes
-rw-r--r--site/controls/Timb_UpDownArw-03.json1
-rw-r--r--site/controls/Timb_UpDownArw-03.pngbin0 -> 4422 bytes
-rw-r--r--site/controls/Timb_UpDownArw-03b.json1
-rw-r--r--site/controls/Timb_UpDownArw-03b.pngbin0 -> 5055 bytes
-rw-r--r--site/controls/Timb_UpDownArw-04.json1
-rw-r--r--site/controls/Timb_UpDownArw-04.pngbin0 -> 4946 bytes
-rw-r--r--site/controls/Timb_UpDownArw-05.json1
-rw-r--r--site/controls/Timb_UpDownArw-05.pngbin0 -> 5132 bytes
-rw-r--r--site/controls/Timb_UpDownArw-05b.json1
-rw-r--r--site/controls/Timb_UpDownArw-05b.pngbin0 -> 5123 bytes
-rw-r--r--site/controls/Timb_UpDownArw-06.json1
-rw-r--r--site/controls/Timb_UpDownArw-06.pngbin0 -> 5531 bytes
-rw-r--r--site/controls/Timb_UpDownArw-07.json1
-rw-r--r--site/controls/Timb_UpDownArw-07.pngbin0 -> 2322 bytes
-rw-r--r--site/controls/Timb_UpDownArw-08.json1
-rw-r--r--site/controls/Timb_UpDownArw-08.pngbin0 -> 3049 bytes
-rw-r--r--site/controls/Timb_UpDownArw-09.json1
-rw-r--r--site/controls/Timb_UpDownArw-09.pngbin0 -> 5192 bytes
-rw-r--r--site/controls/Timb_UpDownArw-11.json1
-rw-r--r--site/controls/Timb_UpDownArw-11.pngbin0 -> 5881 bytes
-rw-r--r--site/controls/Timb_UpDownArw-13.json1
-rw-r--r--site/controls/Timb_UpDownArw-13.pngbin0 -> 4871 bytes
-rw-r--r--site/controls/Timb_UpDownArw-14a.json1
-rw-r--r--site/controls/Timb_UpDownArw-14a.pngbin0 -> 3935 bytes
-rw-r--r--site/controls/Timb_UpDownArw-14b.json1
-rw-r--r--site/controls/Timb_UpDownArw-14b.pngbin0 -> 3884 bytes
-rw-r--r--site/controls/Timb_UpDownArw-15a.json1
-rw-r--r--site/controls/Timb_UpDownArw-15a.pngbin0 -> 508 bytes
-rw-r--r--site/controls/Timb_UpDownArw-15b.json1
-rw-r--r--site/controls/Timb_UpDownArw-15b.pngbin0 -> 595 bytes
-rw-r--r--site/controls/Timb_UpDownArw-15c.json1
-rw-r--r--site/controls/Timb_UpDownArw-15c.pngbin0 -> 508 bytes
-rw-r--r--site/controls/Timb_UpDownArw-15d.json1
-rw-r--r--site/controls/Timb_UpDownArw-15d.pngbin0 -> 591 bytes
-rw-r--r--site/controls/Timb_UpDownArw-15e.json1
-rw-r--r--site/controls/Timb_UpDownArw-15e.pngbin0 -> 519 bytes
-rw-r--r--site/controls/Timb_UpDownArw-16a.json1
-rw-r--r--site/controls/Timb_UpDownArw-16a.pngbin0 -> 1802 bytes
-rw-r--r--site/controls/Timb_UpDownArw-16aWASD.json1
-rw-r--r--site/controls/Timb_UpDownArw-16aWASD.pngbin0 -> 1901 bytes
-rw-r--r--site/controls/Timb_UpDownArw-16b.json1
-rw-r--r--site/controls/Timb_UpDownArw-16b.pngbin0 -> 1687 bytes
-rw-r--r--site/controls/Timb_UpDownArw-16bWASD.json1
-rw-r--r--site/controls/Timb_UpDownArw-16bWASD.pngbin0 -> 1777 bytes
-rw-r--r--site/controls/Timb_UpDownArw-17a.json1
-rw-r--r--site/controls/Timb_UpDownArw-17a.pngbin0 -> 851 bytes
-rw-r--r--site/controls/Timb_UpDownArw-18a.json1
-rw-r--r--site/controls/Timb_UpDownArw-18a.pngbin0 -> 3285 bytes
-rw-r--r--site/controls/Timb_UpDownArw-19a.json1
-rw-r--r--site/controls/Timb_UpDownArw-19a.pngbin0 -> 668 bytes
-rw-r--r--site/controls/Timb_VHLRM Slider-01 Electric Blue.json1
-rw-r--r--site/controls/Timb_VHLRM Slider-01 Electric Blue.pngbin0 -> 7646 bytes
-rw-r--r--site/controls/Timb_VHLRM Slider-01 Oldschool.json1
-rw-r--r--site/controls/Timb_VHLRM Slider-01 Oldschool.pngbin0 -> 7006 bytes
-rw-r--r--site/controls/Timb_Vogue_Blue_64-129.json1
-rw-r--r--site/controls/Timb_Vogue_Blue_64-129.pngbin0 -> 207462 bytes
-rw-r--r--site/controls/Timb_Vogue_Green_64-129.json1
-rw-r--r--site/controls/Timb_Vogue_Green_64-129.pngbin0 -> 208954 bytes
-rw-r--r--site/controls/Timb_Vogue_Orange_64-129.json1
-rw-r--r--site/controls/Timb_Vogue_Orange_64-129.pngbin0 -> 208975 bytes
-rw-r--r--site/controls/Timb_Vogue_Red_64-129.json1
-rw-r--r--site/controls/Timb_Vogue_Red_64-129.pngbin0 -> 209035 bytes
-rw-r--r--site/controls/Timb_Vogue_Yellow_64-129.json1
-rw-r--r--site/controls/Timb_Vogue_Yellow_64-129.pngbin0 -> 209601 bytes
-rw-r--r--site/controls/Timb_Vogue_Yellow_64-200.json1
-rw-r--r--site/controls/Timb_Vogue_Yellow_64-200.pngbin0 -> 310366 bytes
-rw-r--r--site/controls/Timb_WavesF6EQ_(32x130)2.json1
-rw-r--r--site/controls/Timb_WavesF6EQ_(32x130)2.pngbin0 -> 62096 bytes
-rw-r--r--site/controls/Timb_WavesF6EQ_(64x130).json1
-rw-r--r--site/controls/Timb_WavesF6EQ_(64x130).pngbin0 -> 194203 bytes
-rw-r--r--site/controls/Timb_WavesF6EQ_(64x130)2.json1
-rw-r--r--site/controls/Timb_WavesF6EQ_(64x130)2.pngbin0 -> 207200 bytes
-rw-r--r--site/controls/Timb_WavesF6OnoFF(32).json1
-rw-r--r--site/controls/Timb_WavesF6OnoFF(32).pngbin0 -> 2301 bytes
-rw-r--r--site/controls/Timb_WavesF6OnoFF(32)b.json1
-rw-r--r--site/controls/Timb_WavesF6OnoFF(32)b.pngbin0 -> 2170 bytes
-rw-r--r--site/controls/Timb_WetDryBypassOffline-01.json1
-rw-r--r--site/controls/Timb_WetDryBypassOffline-01.pngbin0 -> 4574 bytes
-rw-r--r--site/controls/Timb_WetDryBypassOffline-02.json1
-rw-r--r--site/controls/Timb_WetDryBypassOffline-02.pngbin0 -> 8182 bytes
-rw-r--r--site/controls/Timb_WetDryBypassOffline-03.json1
-rw-r--r--site/controls/Timb_WetDryBypassOffline-03.pngbin0 -> 5969 bytes
-rw-r--r--site/controls/Timb_XBaseKnob_68128.json1
-rw-r--r--site/controls/Timb_XBaseKnob_68128.pngbin0 -> 291822 bytes
-rw-r--r--site/controls/Timb_Zyn32OnOff-1.json1
-rw-r--r--site/controls/Timb_Zyn32OnOff-1.pngbin0 -> 1598 bytes
-rw-r--r--site/controls/Timb_Zyn32OnOff-2.json1
-rw-r--r--site/controls/Timb_Zyn32OnOff-2.pngbin0 -> 1908 bytes
-rw-r--r--site/controls/Timb_Zyn32OnOff-2b.json1
-rw-r--r--site/controls/Timb_Zyn32OnOff-2b.pngbin0 -> 1496 bytes
-rw-r--r--site/controls/Timb_boX08_Bloo.json1
-rw-r--r--site/controls/Timb_boX08_Bloo.pngbin0 -> 623 bytes
-rw-r--r--site/controls/Timb_boX08_Green.json1
-rw-r--r--site/controls/Timb_boX08_Green.pngbin0 -> 614 bytes
-rw-r--r--site/controls/Timb_boX08_Orange-b.json1
-rw-r--r--site/controls/Timb_boX08_Orange-b.pngbin0 -> 212 bytes
-rw-r--r--site/controls/Timb_boX08_Orange.json1
-rw-r--r--site/controls/Timb_boX08_Orange.pngbin0 -> 612 bytes
-rw-r--r--site/controls/Timb_knob SFR 1_46101.json1
-rw-r--r--site/controls/Timb_knob SFR 1_46101.pngbin0 -> 210650 bytes
-rw-r--r--site/controls/Timb_knob verde osc danplug_96128fr.json1
-rw-r--r--site/controls/Timb_knob verde osc danplug_96128fr.pngbin0 -> 653157 bytes
-rw-r--r--site/controls/Timb_knob verde osc danplug_9696fr.json1
-rw-r--r--site/controls/Timb_knob verde osc danplug_9696fr.pngbin0 -> 487672 bytes
-rw-r--r--site/controls/Timb_ob_knob4SurroGate74128.json1
-rw-r--r--site/controls/Timb_ob_knob4SurroGate74128.pngbin0 -> 259265 bytes
-rw-r--r--site/controls/Timb_opGui2019-01_EQ32.json1
-rw-r--r--site/controls/Timb_opGui2019-01_EQ32.pngbin0 -> 2455 bytes
-rw-r--r--site/controls/Timb_opGui2019-02_SEQ32.json1
-rw-r--r--site/controls/Timb_opGui2019-02_SEQ32.pngbin0 -> 1250 bytes
-rw-r--r--site/controls/VU METER Black ZenoMOD.json1
-rw-r--r--site/controls/VU METER Black ZenoMOD.pngbin0 -> 116512 bytes
-rw-r--r--site/controls/VUMeter-01_128-128.json1
-rw-r--r--site/controls/VUMeter-01_128-128.pngbin0 -> 1928737 bytes
-rw-r--r--site/controls/VUMeter01.json1
-rw-r--r--site/controls/VUMeter01.pngbin0 -> 895057 bytes
-rw-r--r--site/controls/Wrench AL.json1
-rw-r--r--site/controls/Wrench AL.pngbin0 -> 2445 bytes
-rw-r--r--site/controls/__Snapshot NSA Red-01.json1
-rw-r--r--site/controls/__Snapshot NSA Red-01.pngbin0 -> 1586 bytes
-rw-r--r--site/controls/__Snapshot NSA Red-02.json1
-rw-r--r--site/controls/__Snapshot NSA Red-02.pngbin0 -> 2294 bytes
-rw-r--r--site/controls/__Snapshot-b.json1
-rw-r--r--site/controls/__Snapshot-b.pngbin0 -> 1747 bytes
-rw-r--r--site/controls/__Snapshot.json1
-rw-r--r--site/controls/__Snapshot.pngbin0 -> 3699 bytes
-rw-r--r--site/controls/__Snapshot_Timb-Pause.json1
-rw-r--r--site/controls/__Snapshot_Timb-Pause.pngbin0 -> 14341 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear1.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear1.pngbin0 -> 1623 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear10.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear10.pngbin0 -> 1527 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear2.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear2.pngbin0 -> 1076 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear3.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear3.pngbin0 -> 2614 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear4.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear4.pngbin0 -> 600 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear5.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear5.pngbin0 -> 1179 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear6.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear6.pngbin0 -> 1264 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear7.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear7.pngbin0 -> 1158 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear8.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear8.pngbin0 -> 1323 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear8b.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear8b.pngbin0 -> 828 bytes
-rw-r--r--site/controls/__Snapshot_timb-Clear9.json1
-rw-r--r--site/controls/__Snapshot_timb-Clear9.pngbin0 -> 1304 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand0a.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand0a.pngbin0 -> 3442 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand0b.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand0b.pngbin0 -> 3392 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand0c.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand0c.pngbin0 -> 4192 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand0d.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand0d.pngbin0 -> 3572 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand0d2.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand0d2.pngbin0 -> 3279 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand0e.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand0e.pngbin0 -> 8643 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand0f.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand0f.pngbin0 -> 5135 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand0g.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand0g.pngbin0 -> 2485 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand0g2.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand0g2.pngbin0 -> 5035 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand2a.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand2a.pngbin0 -> 6658 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand2b.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand2b.pngbin0 -> 44715 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand2bb.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand2bb.pngbin0 -> 16691 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand2c.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand2c.pngbin0 -> 11329 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand2d.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand2d.pngbin0 -> 4005 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand2e.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand2e.pngbin0 -> 1968 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand3.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand3.pngbin0 -> 4311 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand3WASD.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand3WASD.pngbin0 -> 2455 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand3b.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand3b.pngbin0 -> 3700 bytes
-rw-r--r--site/controls/__Snapshot_timb-Rand3c.json1
-rw-r--r--site/controls/__Snapshot_timb-Rand3c.pngbin0 -> 1623 bytes
-rw-r--r--site/controls/__Snapshot_timb-SSTClear-02b.json1
-rw-r--r--site/controls/__Snapshot_timb-SSTClear-02b.pngbin0 -> 7006 bytes
-rw-r--r--site/controls/__Snapshot_timb_LBXDark1.json1
-rw-r--r--site/controls/__Snapshot_timb_LBXDark1.pngbin0 -> 1439 bytes
-rw-r--r--site/controls/__Snapshotv02.json1
-rw-r--r--site/controls/__Snapshotv02.pngbin0 -> 1960 bytes
-rw-r--r--site/controls/__Snapshotv03.json1
-rw-r--r--site/controls/__Snapshotv03.pngbin0 -> 1982 bytes
-rw-r--r--site/controls/__Snapshotv04.json1
-rw-r--r--site/controls/__Snapshotv04.pngbin0 -> 2209 bytes
-rw-r--r--site/controls/__Snapshotv05.json1
-rw-r--r--site/controls/__Snapshotv05.pngbin0 -> 2314 bytes
-rw-r--r--site/controls/__Snapshotv05b.json1
-rw-r--r--site/controls/__Snapshotv05b.pngbin0 -> 2819 bytes
-rw-r--r--site/controls/__Snapshotv05c.json1
-rw-r--r--site/controls/__Snapshotv05c.pngbin0 -> 3211 bytes
-rw-r--r--site/controls/__Snapshotv05d.json1
-rw-r--r--site/controls/__Snapshotv05d.pngbin0 -> 2780 bytes
-rw-r--r--site/controls/__Snapshotv05e.json1
-rw-r--r--site/controls/__Snapshotv05e.pngbin0 -> 2494 bytes
-rw-r--r--site/controls/__Snapshotv05e2.json1
-rw-r--r--site/controls/__Snapshotv05e2.pngbin0 -> 2379 bytes
-rw-r--r--site/controls/__Snapshotv05e3.json1
-rw-r--r--site/controls/__Snapshotv05e3.pngbin0 -> 2645 bytes
-rw-r--r--site/controls/__Snapshotv05f.json1
-rw-r--r--site/controls/__Snapshotv05f.pngbin0 -> 2879 bytes
-rw-r--r--site/controls/__Snapshotv06.json1
-rw-r--r--site/controls/__Snapshotv06.pngbin0 -> 1591 bytes
-rw-r--r--site/controls/__Snapshotv06b.json1
-rw-r--r--site/controls/__Snapshotv06b.pngbin0 -> 1091 bytes
-rw-r--r--site/controls/__Snapshotv06c.json1
-rw-r--r--site/controls/__Snapshotv06c.pngbin0 -> 1571 bytes
-rw-r--r--site/controls/__Snapshotv06d.json1
-rw-r--r--site/controls/__Snapshotv06d.pngbin0 -> 1426 bytes
-rw-r--r--site/controls/__Snapshotv07mini.json1
-rw-r--r--site/controls/__Snapshotv07mini.pngbin0 -> 1139 bytes
-rw-r--r--site/controls/__Snapshotv08mini.json1
-rw-r--r--site/controls/__Snapshotv08mini.pngbin0 -> 1092 bytes
-rw-r--r--site/controls/__Snapshotv09mini.json1
-rw-r--r--site/controls/__Snapshotv09mini.pngbin0 -> 1022 bytes
-rw-r--r--site/controls/__Snapshotv10-52.json1
-rw-r--r--site/controls/__Snapshotv10-52.pngbin0 -> 3878 bytes
-rw-r--r--site/controls/__Snapshotv10mini.json1
-rw-r--r--site/controls/__Snapshotv10mini.pngbin0 -> 1082 bytes
-rw-r--r--site/controls/__Snapshotv11-56.json1
-rw-r--r--site/controls/__Snapshotv11-56.pngbin0 -> 5248 bytes
-rw-r--r--site/controls/__Snapshotv11-56b.json1
-rw-r--r--site/controls/__Snapshotv11-56b.pngbin0 -> 5844 bytes
-rw-r--r--site/controls/__Snapshotv12-55.json1
-rw-r--r--site/controls/__Snapshotv12-55.pngbin0 -> 9458 bytes
-rw-r--r--site/controls/__Snapshotv13-40.json1
-rw-r--r--site/controls/__Snapshotv13-40.pngbin0 -> 5039 bytes
-rw-r--r--site/controls/__Snapshotv13-43a.json1
-rw-r--r--site/controls/__Snapshotv13-43a.pngbin0 -> 4848 bytes
-rw-r--r--site/controls/__Snapshotv13-43b.json1
-rw-r--r--site/controls/__Snapshotv13-43b.pngbin0 -> 4857 bytes
-rw-r--r--site/controls/__Snapshotv13-43c.json1
-rw-r--r--site/controls/__Snapshotv13-43c.pngbin0 -> 4646 bytes
-rw-r--r--site/controls/__Snapshotv13-43d.json1
-rw-r--r--site/controls/__Snapshotv13-43d.pngbin0 -> 4887 bytes
-rw-r--r--site/controls/__Snapshotv13-48.json1
-rw-r--r--site/controls/__Snapshotv13-48.pngbin0 -> 4684 bytes
-rw-r--r--site/controls/__Snapshotv13-48b.json1
-rw-r--r--site/controls/__Snapshotv13-48b.pngbin0 -> 4695 bytes
-rw-r--r--site/controls/__Snapshotv13-48c.json1
-rw-r--r--site/controls/__Snapshotv13-48c.pngbin0 -> 4602 bytes
-rw-r--r--site/controls/__Snapshotv13-48d.json1
-rw-r--r--site/controls/__Snapshotv13-48d.pngbin0 -> 4722 bytes
-rw-r--r--site/controls/__Snapshotv13-60.json1
-rw-r--r--site/controls/__Snapshotv13-60.pngbin0 -> 8646 bytes
-rw-r--r--site/controls/__Snapshotv13-60b.json1
-rw-r--r--site/controls/__Snapshotv13-60b.pngbin0 -> 9531 bytes
-rw-r--r--site/controls/__Snapshotv13-60c.json1
-rw-r--r--site/controls/__Snapshotv13-60c.pngbin0 -> 9461 bytes
-rw-r--r--site/controls/__Snapshotv13-60d.json1
-rw-r--r--site/controls/__Snapshotv13-60d.pngbin0 -> 8568 bytes
-rw-r--r--site/controls/__Snapshotv14HY56.json1
-rw-r--r--site/controls/__Snapshotv14HY56.pngbin0 -> 1506 bytes
-rw-r--r--site/controls/__Snapshotv15a.json1
-rw-r--r--site/controls/__Snapshotv15a.pngbin0 -> 1908 bytes
-rw-r--r--site/controls/__Snapshotv15b.json1
-rw-r--r--site/controls/__Snapshotv15b.pngbin0 -> 1234 bytes
-rw-r--r--site/controls/__Snapshotv16.json1
-rw-r--r--site/controls/__Snapshotv16.pngbin0 -> 6270 bytes
-rw-r--r--site/controls/__Snapshotv16b.json1
-rw-r--r--site/controls/__Snapshotv16b.pngbin0 -> 2600 bytes
-rw-r--r--site/controls/__Snapshotv16c.json1
-rw-r--r--site/controls/__Snapshotv16c.pngbin0 -> 4167 bytes
-rw-r--r--site/controls/__Snapshotv16d.json1
-rw-r--r--site/controls/__Snapshotv16d.pngbin0 -> 3329 bytes
-rw-r--r--site/controls/__Snapshotv16e.json1
-rw-r--r--site/controls/__Snapshotv16e.pngbin0 -> 3437 bytes
-rw-r--r--site/controls/__XY.json1
-rw-r--r--site/controls/__XY.pngbin0 -> 4710 bytes
-rw-r--r--site/controls/__XYTarget.json1
-rw-r--r--site/controls/__XYTarget.pngbin0 -> 541 bytes
-rw-r--r--site/controls/__default.json1
-rw-r--r--site/controls/__default.pngbin0 -> 43585 bytes
-rw-r--r--site/controls/__timb_airSnapshot-1.json1
-rw-r--r--site/controls/__timb_airSnapshot-1.pngbin0 -> 2007 bytes
-rw-r--r--site/controls/all.json1
-rw-r--r--site/controls/lbx_button_rg.json1
-rw-r--r--site/controls/lbx_button_rg.pngbin0 -> 5207 bytes
-rw-r--r--site/controls/lbx_button_rg24.json1
-rw-r--r--site/controls/lbx_button_rg24.pngbin0 -> 1720 bytes
-rw-r--r--site/controls/lbx_button_rg24b.json1
-rw-r--r--site/controls/lbx_button_rg24b.pngbin0 -> 1841 bytes
-rw-r--r--site/controls/lbx_button_rg32.json1
-rw-r--r--site/controls/lbx_button_rg32.pngbin0 -> 2381 bytes
-rw-r--r--site/controls/lbx_knob128_smoothblack_blue.json1
-rw-r--r--site/controls/lbx_knob128_smoothblack_blue.pngbin0 -> 1188751 bytes
-rw-r--r--site/controls/lbx_knob128_smoothblack_green.json1
-rw-r--r--site/controls/lbx_knob128_smoothblack_green.pngbin0 -> 1191613 bytes
-rw-r--r--site/controls/lbx_knob128_smoothblack_red.json1
-rw-r--r--site/controls/lbx_knob128_smoothblack_red.pngbin0 -> 1190374 bytes
-rw-r--r--site/controls/lbx_knob128_smoothblack_white.json1
-rw-r--r--site/controls/lbx_knob128_smoothblack_white.pngbin0 -> 1194446 bytes
-rw-r--r--site/controls/lbx_knob32_smoothblack_blue.json1
-rw-r--r--site/controls/lbx_knob32_smoothblack_blue.pngbin0 -> 72945 bytes
-rw-r--r--site/controls/lbx_knob32_smoothblack_green.json1
-rw-r--r--site/controls/lbx_knob32_smoothblack_green.pngbin0 -> 72958 bytes
-rw-r--r--site/controls/lbx_knob32_smoothblack_red.json1
-rw-r--r--site/controls/lbx_knob32_smoothblack_red.pngbin0 -> 72811 bytes
-rw-r--r--site/controls/lbx_knob32_smoothblack_white.json1
-rw-r--r--site/controls/lbx_knob32_smoothblack_white.pngbin0 -> 74036 bytes
-rw-r--r--site/controls/lbx_knob32_smoothblack_yellow.json1
-rw-r--r--site/controls/lbx_knob32_smoothblack_yellow.pngbin0 -> 73984 bytes
-rw-r--r--site/controls/lbx_knob48_smoothblack_blue.json1
-rw-r--r--site/controls/lbx_knob48_smoothblack_blue.pngbin0 -> 160634 bytes
-rw-r--r--site/controls/lbx_knob48_smoothblack_green.json1
-rw-r--r--site/controls/lbx_knob48_smoothblack_green.pngbin0 -> 160858 bytes
-rw-r--r--site/controls/lbx_knob48_smoothblack_red.json1
-rw-r--r--site/controls/lbx_knob48_smoothblack_red.pngbin0 -> 160400 bytes
-rw-r--r--site/controls/lbx_knob48_smoothblack_white.json1
-rw-r--r--site/controls/lbx_knob48_smoothblack_white.pngbin0 -> 162399 bytes
-rw-r--r--site/controls/lbx_knob48_smoothblack_yellow.json1
-rw-r--r--site/controls/lbx_knob48_smoothblack_yellow.pngbin0 -> 162695 bytes
-rw-r--r--site/controls/lbx_knob64_smoothblack_blue.json1
-rw-r--r--site/controls/lbx_knob64_smoothblack_blue.pngbin0 -> 306307 bytes
-rw-r--r--site/controls/lbx_knob64_smoothblack_green.json1
-rw-r--r--site/controls/lbx_knob64_smoothblack_green.pngbin0 -> 306708 bytes
-rw-r--r--site/controls/lbx_knob64_smoothblack_red.json1
-rw-r--r--site/controls/lbx_knob64_smoothblack_red.pngbin0 -> 306277 bytes
-rw-r--r--site/controls/lbx_knob64_smoothblack_white.json1
-rw-r--r--site/controls/lbx_knob64_smoothblack_white.pngbin0 -> 308672 bytes
-rw-r--r--site/controls/lbx_knob64_smoothblack_yellow.json1
-rw-r--r--site/controls/lbx_knob64_smoothblack_yellow.pngbin0 -> 309501 bytes
-rw-r--r--site/controls/lbx_knob96_smoothblack_blue.json1
-rw-r--r--site/controls/lbx_knob96_smoothblack_blue.pngbin0 -> 879489 bytes
-rw-r--r--site/controls/lbx_knob96_smoothblack_green.json1
-rw-r--r--site/controls/lbx_knob96_smoothblack_green.pngbin0 -> 880785 bytes
-rw-r--r--site/controls/lbx_knob96_smoothblack_red.json1
-rw-r--r--site/controls/lbx_knob96_smoothblack_red.pngbin0 -> 879269 bytes
-rw-r--r--site/controls/lbx_knob96_smoothblack_white.json1
-rw-r--r--site/controls/lbx_knob96_smoothblack_white.pngbin0 -> 882861 bytes
-rw-r--r--site/controls/lbx_slider160_smoothblack_red.json1
-rw-r--r--site/controls/lbx_slider160_smoothblack_red.pngbin0 -> 68180 bytes
-rw-r--r--site/controls/lbx_slider160_smoothblack_red_km.json1
-rw-r--r--site/controls/lbx_slider160_smoothblack_red_km.pngbin0 -> 41098 bytes
-rw-r--r--site/controls/timb&HYRPEMUTE32.json1
-rw-r--r--site/controls/timb&HYRPEMUTE32.pngbin0 -> 1119 bytes
-rw-r--r--site/controls/timb&HYRPEMUTEB32.json1
-rw-r--r--site/controls/timb&HYRPEMUTEB32.pngbin0 -> 1113 bytes
-rw-r--r--site/controls/timb&HYRPESOLO32.json1
-rw-r--r--site/controls/timb&HYRPESOLO32.pngbin0 -> 1013 bytes
-rw-r--r--site/controls/timb&HYRPESOLOB32.json1
-rw-r--r--site/controls/timb&HYRPESOLOB32.pngbin0 -> 1017 bytes
-rw-r--r--site/controls/timb_GRANITESTARTSLIDER.json1
-rw-r--r--site/controls/timb_GRANITESTARTSLIDER.pngbin0 -> 246979 bytes
-rw-r--r--site/controls/timb_HY-ONOFF101804BLOO.json1
-rw-r--r--site/controls/timb_HY-ONOFF101804BLOO.pngbin0 -> 762 bytes
-rw-r--r--site/controls/timb_HY-ONOFF101804GRN.json1
-rw-r--r--site/controls/timb_HY-ONOFF101804GRN.pngbin0 -> 752 bytes
-rw-r--r--site/controls/timb_HY-ONOFF101804GRN2.json1
-rw-r--r--site/controls/timb_HY-ONOFF101804GRN2.pngbin0 -> 2155 bytes
-rw-r--r--site/controls/timb_HY-ONOFF101804GRN2WASD.json1
-rw-r--r--site/controls/timb_HY-ONOFF101804GRN2WASD.pngbin0 -> 1430 bytes
-rw-r--r--site/controls/timb_HY-ONOFF101804ORN.json1
-rw-r--r--site/controls/timb_HY-ONOFF101804ORN.pngbin0 -> 754 bytes
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_101_.PNGbin0 -> 511859 bytes
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_101_.json1
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_102_.PNGbin0 -> 200933 bytes
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_102_.json1
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_103_.PNGbin0 -> 820 bytes
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_103_.json1
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_103_bb.json1
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_103_bb.pngbin0 -> 2474 bytes
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_103_cc.json1
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_103_cc.pngbin0 -> 2464 bytes
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_104_.PNGbin0 -> 807 bytes
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_104_.json1
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_105_.PNGbin0 -> 29191 bytes
-rw-r--r--site/controls/timb_HoRNetHCS1_x64_105_.json1
-rw-r--r--site/controls/timb_LED20eXp1-Falcon.json1
-rw-r--r--site/controls/timb_LED20eXp1-Falcon.pngbin0 -> 1649151 bytes
-rw-r--r--site/controls/timb_LED20eXp1.json1
-rw-r--r--site/controls/timb_LED20eXp1.pngbin0 -> 47728 bytes
-rw-r--r--site/controls/timb_LED20eXp10onyx.json1
-rw-r--r--site/controls/timb_LED20eXp10onyx.pngbin0 -> 15706 bytes
-rw-r--r--site/controls/timb_LED20eXp1vertic.json1
-rw-r--r--site/controls/timb_LED20eXp1vertic.pngbin0 -> 51820 bytes
-rw-r--r--site/controls/timb_LED20eXp2.json1
-rw-r--r--site/controls/timb_LED20eXp2.pngbin0 -> 39535 bytes
-rw-r--r--site/controls/timb_LED20eXp2vertic.json1
-rw-r--r--site/controls/timb_LED20eXp2vertic.pngbin0 -> 46189 bytes
-rw-r--r--site/controls/timb_LED20eXp3.json1
-rw-r--r--site/controls/timb_LED20eXp3.pngbin0 -> 6422 bytes
-rw-r--r--site/controls/timb_LED20eXp3hue1.json1
-rw-r--r--site/controls/timb_LED20eXp3hue1.pngbin0 -> 6884 bytes
-rw-r--r--site/controls/timb_LED20eXp3losat.json1
-rw-r--r--site/controls/timb_LED20eXp3losat.pngbin0 -> 6863 bytes
-rw-r--r--site/controls/timb_LED20eXp3vertic.json1
-rw-r--r--site/controls/timb_LED20eXp3vertic.pngbin0 -> 14033 bytes
-rw-r--r--site/controls/timb_LED20eXp4.json1
-rw-r--r--site/controls/timb_LED20eXp4.pngbin0 -> 11042 bytes
-rw-r--r--site/controls/timb_LED20eXp4b.json1
-rw-r--r--site/controls/timb_LED20eXp4b.pngbin0 -> 6299 bytes
-rw-r--r--site/controls/timb_LED20eXp4bHALF.json1
-rw-r--r--site/controls/timb_LED20eXp4bHALF.pngbin0 -> 4547 bytes
-rw-r--r--site/controls/timb_LED20eXp4b_v0001.json1
-rw-r--r--site/controls/timb_LED20eXp4b_v0001.pngbin0 -> 21349 bytes
-rw-r--r--site/controls/timb_LED20eXp4bvertic.json1
-rw-r--r--site/controls/timb_LED20eXp4bvertic.pngbin0 -> 6568 bytes
-rw-r--r--site/controls/timb_LED20eXp4c.json1
-rw-r--r--site/controls/timb_LED20eXp4c.pngbin0 -> 6297 bytes
-rw-r--r--site/controls/timb_LED20eXp4cvertic.json1
-rw-r--r--site/controls/timb_LED20eXp4cvertic.pngbin0 -> 6535 bytes
-rw-r--r--site/controls/timb_LED20eXp4d.json1
-rw-r--r--site/controls/timb_LED20eXp4d.pngbin0 -> 6297 bytes
-rw-r--r--site/controls/timb_LED20eXp4dvertic.json1
-rw-r--r--site/controls/timb_LED20eXp4dvertic.pngbin0 -> 6541 bytes
-rw-r--r--site/controls/timb_LED20eXp4e.json1
-rw-r--r--site/controls/timb_LED20eXp4e.pngbin0 -> 6301 bytes
-rw-r--r--site/controls/timb_LED20eXp4evertic.json1
-rw-r--r--site/controls/timb_LED20eXp4evertic.pngbin0 -> 6583 bytes
-rw-r--r--site/controls/timb_LED20eXp4vertic.json1
-rw-r--r--site/controls/timb_LED20eXp4vertic.pngbin0 -> 11622 bytes
-rw-r--r--site/controls/timb_LED20eXp4zz.json1
-rw-r--r--site/controls/timb_LED20eXp4zz.pngbin0 -> 22402 bytes
-rw-r--r--site/controls/timb_LED20eXp5.json1
-rw-r--r--site/controls/timb_LED20eXp5.pngbin0 -> 28886 bytes
-rw-r--r--site/controls/timb_LED20eXp6.json1
-rw-r--r--site/controls/timb_LED20eXp6.pngbin0 -> 31816 bytes
-rw-r--r--site/controls/timb_LED20eXp6vertic.json1
-rw-r--r--site/controls/timb_LED20eXp6vertic.pngbin0 -> 35289 bytes
-rw-r--r--site/controls/timb_LED20eXp7.json1
-rw-r--r--site/controls/timb_LED20eXp7.pngbin0 -> 31010 bytes
-rw-r--r--site/controls/timb_LED20eXp7vertic.json1
-rw-r--r--site/controls/timb_LED20eXp7vertic.pngbin0 -> 31795 bytes
-rw-r--r--site/controls/timb_LED20eXp8.json1
-rw-r--r--site/controls/timb_LED20eXp8.pngbin0 -> 3577 bytes
-rw-r--r--site/controls/timb_LED20eXp8b.json1
-rw-r--r--site/controls/timb_LED20eXp8b.pngbin0 -> 1824 bytes
-rw-r--r--site/controls/timb_LED20eXp8losat.json1
-rw-r--r--site/controls/timb_LED20eXp8losat.pngbin0 -> 4128 bytes
-rw-r--r--site/controls/timb_LED20eXp8losatHRZ.json1
-rw-r--r--site/controls/timb_LED20eXp8losatHRZ.pngbin0 -> 5804 bytes
-rw-r--r--site/controls/timb_LEDeXp1.json1
-rw-r--r--site/controls/timb_LEDeXp1.pngbin0 -> 12621 bytes
-rw-r--r--site/controls/timb_LEDeXp10.json1
-rw-r--r--site/controls/timb_LEDeXp10.pngbin0 -> 52413 bytes
-rw-r--r--site/controls/timb_LEDeXp2.json1
-rw-r--r--site/controls/timb_LEDeXp2.pngbin0 -> 14571 bytes
-rw-r--r--site/controls/timb_LEDeXp2vert.json1
-rw-r--r--site/controls/timb_LEDeXp2vert.pngbin0 -> 15651 bytes
-rw-r--r--site/controls/timb_LEDeXp3.json1
-rw-r--r--site/controls/timb_LEDeXp3.pngbin0 -> 391684 bytes
-rw-r--r--site/controls/timb_LEDeXp4.json1
-rw-r--r--site/controls/timb_LEDeXp4.pngbin0 -> 22888 bytes
-rw-r--r--site/controls/timb_LEDeXp5-2.json1
-rw-r--r--site/controls/timb_LEDeXp5-2.pngbin0 -> 314560 bytes
-rw-r--r--site/controls/timb_LEDeXp5-3.json1
-rw-r--r--site/controls/timb_LEDeXp5-3.pngbin0 -> 317749 bytes
-rw-r--r--site/controls/timb_LEDeXp5-4.json1
-rw-r--r--site/controls/timb_LEDeXp5-4.pngbin0 -> 17337 bytes
-rw-r--r--site/controls/timb_LEDeXp5.json1
-rw-r--r--site/controls/timb_LEDeXp5.pngbin0 -> 392066 bytes
-rw-r--r--site/controls/timb_LEDeXp5vert-WASD1.json1
-rw-r--r--site/controls/timb_LEDeXp5vert-WASD1.pngbin0 -> 28234 bytes
-rw-r--r--site/controls/timb_LEDeXp5vert-WASD2.json1
-rw-r--r--site/controls/timb_LEDeXp5vert-WASD2.pngbin0 -> 7187 bytes
-rw-r--r--site/controls/timb_LEDeXp5vert-WASD3.json1
-rw-r--r--site/controls/timb_LEDeXp5vert-WASD3.pngbin0 -> 15882 bytes
-rw-r--r--site/controls/timb_LEDeXp5vert.json1
-rw-r--r--site/controls/timb_LEDeXp5vert.pngbin0 -> 632797 bytes
-rw-r--r--site/controls/timb_LEDeXp5vert2.json1
-rw-r--r--site/controls/timb_LEDeXp5vert2.pngbin0 -> 589233 bytes
-rw-r--r--site/controls/timb_LEDeXp5vert3.json1
-rw-r--r--site/controls/timb_LEDeXp5vert3.pngbin0 -> 436859 bytes
-rw-r--r--site/controls/timb_LEDeXp6.json1
-rw-r--r--site/controls/timb_LEDeXp6.pngbin0 -> 16608 bytes
-rw-r--r--site/controls/timb_LEDeXp7.json1
-rw-r--r--site/controls/timb_LEDeXp7.pngbin0 -> 3589 bytes
-rw-r--r--site/controls/timb_LEDeXp7c.json1
-rw-r--r--site/controls/timb_LEDeXp7c.pngbin0 -> 1168 bytes
-rw-r--r--site/controls/timb_LEDeXp8.json1
-rw-r--r--site/controls/timb_LEDeXp8.pngbin0 -> 17307 bytes
-rw-r--r--site/controls/timb_LEDeXp9.json1
-rw-r--r--site/controls/timb_LEDeXp9.pngbin0 -> 23832 bytes
-rw-r--r--site/controls/timb_MidiPackTransp-1.json1
-rw-r--r--site/controls/timb_MidiPackTransp-1.pngbin0 -> 176 bytes
-rw-r--r--site/controls/timb_MidiPackTransp-1b.json1
-rw-r--r--site/controls/timb_MidiPackTransp-1b.pngbin0 -> 171 bytes
-rw-r--r--site/controls/timb_MidiPackTransp-2.json1
-rw-r--r--site/controls/timb_MidiPackTransp-2.pngbin0 -> 176 bytes
-rw-r--r--site/controls/timb_MidiPackTransp-3.json1
-rw-r--r--site/controls/timb_MidiPackTransp-3.pngbin0 -> 183 bytes
-rw-r--r--site/controls/timb_NoteMonitor1.json1
-rw-r--r--site/controls/timb_NoteMonitor1.pngbin0 -> 183 bytes
-rw-r--r--site/controls/timb_NoteMonitor2.json1
-rw-r--r--site/controls/timb_NoteMonitor2.pngbin0 -> 183 bytes
-rw-r--r--site/controls/timb_NoteMonitor3.json1
-rw-r--r--site/controls/timb_NoteMonitor3.pngbin0 -> 183 bytes
-rw-r--r--site/controls/timb_NoteMonitor4.json1
-rw-r--r--site/controls/timb_NoteMonitor4.pngbin0 -> 428 bytes
-rw-r--r--site/controls/timb_NoteMonitor5.json1
-rw-r--r--site/controls/timb_NoteMonitor5.pngbin0 -> 2050 bytes
-rw-r--r--site/controls/timb_NoteMonitor5b.json1
-rw-r--r--site/controls/timb_NoteMonitor5b.pngbin0 -> 1811 bytes
-rw-r--r--site/controls/timb_PoorOrbish-1.json1
-rw-r--r--site/controls/timb_PoorOrbish-1.pngbin0 -> 41817 bytes
-rw-r--r--site/controls/timb_PoorOrbish-2.json1
-rw-r--r--site/controls/timb_PoorOrbish-2.pngbin0 -> 44992 bytes
-rw-r--r--site/controls/timb_PoorOrbish-3.json1
-rw-r--r--site/controls/timb_PoorOrbish-3.pngbin0 -> 44115 bytes
-rw-r--r--site/controls/timb_PoorOrbish-4.json1
-rw-r--r--site/controls/timb_PoorOrbish-4.pngbin0 -> 45068 bytes
-rw-r--r--site/controls/timb_PoorOrbish-5.json1
-rw-r--r--site/controls/timb_PoorOrbish-5.pngbin0 -> 43683 bytes
-rw-r--r--site/controls/timb_PoorOrbish-6.json1
-rw-r--r--site/controls/timb_PoorOrbish-6.pngbin0 -> 44913 bytes
-rw-r--r--site/controls/timb_RadioButton-0.json1
-rw-r--r--site/controls/timb_RadioButton-0.pngbin0 -> 284 bytes
-rw-r--r--site/controls/timb_RadioButton-1.json1
-rw-r--r--site/controls/timb_RadioButton-1.pngbin0 -> 2444 bytes
-rw-r--r--site/controls/timb_RadioButton-2.json1
-rw-r--r--site/controls/timb_RadioButton-2.pngbin0 -> 2524 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE32-1.json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE32-1.pngbin0 -> 76421 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE32-2.json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE32-2.pngbin0 -> 76483 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE32-3.json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE32-3.pngbin0 -> 74755 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE32-4.json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE32-4.pngbin0 -> 73960 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-1.json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-1.pngbin0 -> 132707 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-2.json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-2.pngbin0 -> 132312 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-3.json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-3.pngbin0 -> 132142 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-4.json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-4.pngbin0 -> 132580 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-5.json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44-5.pngbin0 -> 117081 bytes
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44BB-1(100fr).json1
-rw-r--r--site/controls/timb_SM2018_SM_CUTE44BB-1(100fr).pngbin0 -> 140224 bytes
-rw-r--r--site/controls/timb_Symnotmetry(3296130)-1.json1
-rw-r--r--site/controls/timb_Symnotmetry(3296130)-1.pngbin0 -> 19924 bytes
-rw-r--r--site/controls/timb_TJAMonTogVelTra-01.json1
-rw-r--r--site/controls/timb_TJAMonTogVelTra-01.pngbin0 -> 13213 bytes
-rw-r--r--site/controls/timb_TJAMonTogVelTra-02.json1
-rw-r--r--site/controls/timb_TJAMonTogVelTra-02.pngbin0 -> 12419 bytes
-rw-r--r--site/controls/timb_spchrd-01.json1
-rw-r--r--site/controls/timb_spchrd-01.pngbin0 -> 37940 bytes
-rw-r--r--site/controls/timb_spchrd-01bipo.json1
-rw-r--r--site/controls/timb_spchrd-01bipo.pngbin0 -> 39708 bytes
-rw-r--r--site/controls/wrench.json1
-rw-r--r--site/controls/wrench.pngbin0 -> 826 bytes
-rw-r--r--site/index.html12
-rw-r--r--site/service/.htaccess8
-rw-r--r--site/service/config.dist.py4
-rw-r--r--site/service/config.pycbin0 -> 275 bytes
-rw-r--r--site/service/db.py38
-rw-r--r--site/service/db.pycbin0 -> 1933 bytes
-rwxr-xr-xsite/service/request.py106
-rw-r--r--site/sound/.htaccess8
-rw-r--r--site/sound/Guitar.Harmonics/42.0.mp3bin0 -> 35145 bytes
-rw-r--r--site/sound/Guitar.Harmonics/43.0.mp3bin0 -> 28256 bytes
-rw-r--r--site/sound/Guitar.Harmonics/44.0.mp3bin0 -> 25182 bytes
-rw-r--r--site/sound/Guitar.Harmonics/45.0.mp3bin0 -> 17974 bytes
-rw-r--r--site/sound/Guitar.Harmonics/46.0.mp3bin0 -> 21567 bytes
-rw-r--r--site/sound/Guitar.Harmonics/47.0.mp3bin0 -> 20339 bytes
-rw-r--r--site/sound/Guitar.Harmonics/48.0.mp3bin0 -> 32983 bytes
-rw-r--r--site/sound/Guitar.Harmonics/49.0.mp3bin0 -> 23543 bytes
-rw-r--r--site/sound/Guitar.Harmonics/50.0.mp3bin0 -> 38522 bytes
-rw-r--r--site/sound/Guitar.Harmonics/51.0.mp3bin0 -> 26666 bytes
-rw-r--r--site/sound/Guitar.Harmonics/52.0.mp3bin0 -> 19586 bytes
-rw-r--r--site/sound/Guitar.Harmonics/53.0.mp3bin0 -> 28749 bytes
-rw-r--r--site/sound/Guitar.Harmonics/54.0.mp3bin0 -> 33236 bytes
-rw-r--r--site/sound/Guitar.Harmonics/55.0.mp3bin0 -> 31638 bytes
-rw-r--r--site/sound/Guitar.Harmonics/56.0.mp3bin0 -> 40957 bytes
-rw-r--r--site/sound/Guitar.Harmonics/57.0.mp3bin0 -> 33798 bytes
-rw-r--r--site/sound/Guitar.Harmonics/58.0.mp3bin0 -> 31194 bytes
-rw-r--r--site/sound/Guitar.Harmonics/59.0.mp3bin0 -> 44251 bytes
-rw-r--r--site/sound/Guitar.Harmonics/60.0.mp3bin0 -> 40272 bytes
-rw-r--r--site/sound/Guitar.Harmonics/61.0.mp3bin0 -> 51182 bytes
-rw-r--r--site/sound/Guitar.Harmonics/62.0.mp3bin0 -> 38355 bytes
-rw-r--r--site/sound/Guitar.Harmonics/63.0.mp3bin0 -> 22858 bytes
-rw-r--r--site/sound/Guitar.Harmonics/64.0.mp3bin0 -> 26870 bytes
-rw-r--r--site/sound/Guitar.Harmonics/65.0.mp3bin0 -> 33992 bytes
-rw-r--r--site/sound/Guitar.Harmonics/66.0.mp3bin0 -> 27288 bytes
-rw-r--r--site/sound/Guitar.Harmonics/67.0.mp3bin0 -> 25345 bytes
-rw-r--r--site/sound/Guitar.Harmonics/68.0.mp3bin0 -> 29165 bytes
-rw-r--r--site/sound/Guitar.Harmonics/69.0.mp3bin0 -> 23948 bytes
-rw-r--r--site/sound/Guitar.Harmonics/70.0.mp3bin0 -> 31459 bytes
-rw-r--r--site/sound/Guitar.Harmonics/71.0.mp3bin0 -> 32863 bytes
-rw-r--r--site/sound/Guitar.Harmonics/72.0.mp3bin0 -> 23769 bytes
-rw-r--r--site/sound/Guitar.Harmonics/73.0.mp3bin0 -> 31224 bytes
-rw-r--r--site/sound/Guitar.Harmonics/74.0.mp3bin0 -> 30906 bytes
-rw-r--r--site/sound/Guitar.Harmonics/75.0.mp3bin0 -> 25269 bytes
-rw-r--r--site/sound/Guitar.Harmonics/76.0.mp3bin0 -> 29089 bytes
-rw-r--r--site/sound/Guitar.Harmonics/77.0.mp3bin0 -> 30066 bytes
-rw-r--r--site/sound/Guitar.Harmonics/78.0.mp3bin0 -> 31697 bytes
-rw-r--r--site/sound/WoodKnock/001.mp3bin0 -> 2736 bytes
-rw-r--r--site/sound/WoodKnock/002.mp3bin0 -> 2996 bytes
-rw-r--r--site/sound/WoodKnock/003.mp3bin0 -> 2761 bytes
-rw-r--r--site/sound/WoodKnock/004.mp3bin0 -> 2709 bytes
-rw-r--r--site/sound/WoodKnock/005.mp3bin0 -> 2632 bytes
-rw-r--r--site/sound/WoodKnock/006.mp3bin0 -> 2762 bytes
-rw-r--r--site/sound/WoodKnock/007.mp3bin0 -> 2735 bytes
-rw-r--r--site/sound/WoodKnock/008.mp3bin0 -> 2945 bytes
-rw-r--r--site/sound/WoodKnock/009.mp3bin0 -> 2893 bytes
-rw-r--r--site/sound/WoodKnock/010.mp3bin0 -> 2735 bytes
-rw-r--r--site/sound/WoodKnock/011.mp3bin0 -> 3285 bytes
-rw-r--r--site/sound/WoodKnock/012.mp3bin0 -> 2735 bytes
-rw-r--r--site/sound/WoodKnock/013.mp3bin0 -> 2499 bytes
-rw-r--r--site/sound/WoodKnock/014.mp3bin0 -> 2551 bytes
-rw-r--r--site/sound/WoodKnock/015.mp3bin0 -> 2395 bytes
-rw-r--r--site/sound/WoodKnock/016.mp3bin0 -> 2291 bytes
-rw-r--r--site/sound/WoodKnock/017.mp3bin0 -> 2684 bytes
-rw-r--r--site/sound/WoodKnock/018.mp3bin0 -> 2551 bytes
-rw-r--r--site/sound/WoodKnock/019.mp3bin0 -> 2473 bytes
-rw-r--r--site/sound/WoodKnock/020.mp3bin0 -> 2814 bytes
-rw-r--r--site/sound/WoodKnock/021.mp3bin0 -> 2920 bytes
-rw-r--r--site/sound/WoodKnock/022.mp3bin0 -> 2552 bytes
-rw-r--r--site/sound/WoodKnock/023.mp3bin0 -> 2709 bytes
-rw-r--r--site/sound/WoodKnock/024.mp3bin0 -> 2577 bytes
-rw-r--r--site/sound/WoodKnock/025.mp3bin0 -> 2421 bytes
-rw-r--r--site/sound/WoodKnock/026.mp3bin0 -> 2473 bytes
-rw-r--r--site/sound/WoodKnock/027.mp3bin0 -> 2945 bytes
-rw-r--r--site/sound/WoodKnock/028.mp3bin0 -> 2551 bytes
-rw-r--r--site/sound/WoodKnock/029.mp3bin0 -> 2631 bytes
-rw-r--r--site/sound/WoodKnock/030.mp3bin0 -> 2709 bytes
-rw-r--r--site/sound/WoodKnock/031.mp3bin0 -> 2919 bytes
-rw-r--r--site/sound/WoodKnock/032.mp3bin0 -> 2525 bytes
-rw-r--r--site/sound/WoodKnock/033.mp3bin0 -> 2525 bytes
-rw-r--r--site/sound/WoodKnock/034.mp3bin0 -> 2656 bytes
-rw-r--r--site/sound/WoodKnock/035.mp3bin0 -> 2473 bytes
-rw-r--r--site/sound/WoodKnock/036.mp3bin0 -> 2526 bytes
-rw-r--r--site/sound/WoodKnock/037.mp3bin0 -> 2629 bytes
-rw-r--r--site/sound/WoodKnock/038.mp3bin0 -> 2735 bytes
-rw-r--r--site/sound/WoodKnock/039.mp3bin0 -> 2604 bytes
-rw-r--r--site/sound/WoodKnock/040.mp3bin0 -> 2473 bytes
-rw-r--r--site/sound/WoodKnock/041.mp3bin0 -> 2578 bytes
-rw-r--r--site/sound/WoodKnock/042.mp3bin0 -> 2422 bytes
-rw-r--r--site/sound/WoodKnock/044.mp3bin0 -> 2605 bytes
-rw-r--r--site/sound/WoodKnock/045.mp3bin0 -> 2814 bytes
-rw-r--r--site/sound/WoodKnock/046.mp3bin0 -> 2788 bytes
-rw-r--r--site/sound/WoodKnock/047.mp3bin0 -> 2919 bytes
-rw-r--r--site/sound/WoodKnock/048.mp3bin0 -> 3024 bytes
-rw-r--r--site/sound/WoodKnock/049.mp3bin0 -> 2867 bytes
-rw-r--r--site/sound/WoodKnock/050.mp3bin0 -> 3075 bytes
-rw-r--r--site/sound/WoodKnock/052.mp3bin0 -> 2421 bytes
-rw-r--r--site/sound/WoodKnock/053.mp3bin0 -> 2448 bytes
-rw-r--r--site/sound/WoodKnock/054.mp3bin0 -> 2422 bytes
-rw-r--r--site/sound/WoodKnock/055.mp3bin0 -> 2526 bytes
-rw-r--r--site/sound/WoodKnock/056.mp3bin0 -> 2578 bytes
-rw-r--r--site/sound/WoodKnock/057.mp3bin0 -> 2735 bytes
-rw-r--r--site/sound/WoodKnock/058.mp3bin0 -> 2499 bytes
-rw-r--r--site/sound/WoodKnock/059.mp3bin0 -> 2631 bytes
-rw-r--r--site/sound/WoodKnock/060.mp3bin0 -> 2762 bytes
-rw-r--r--site/sound/WoodKnock/061.mp3bin0 -> 2709 bytes
-rw-r--r--site/sound/WoodKnock/062.mp3bin0 -> 2552 bytes
-rw-r--r--site/sound/WoodKnock/063.mp3bin0 -> 2632 bytes
-rw-r--r--site/sound/WoodKnock/064.mp3bin0 -> 2630 bytes
-rw-r--r--site/sound/WoodKnock/065.mp3bin0 -> 2709 bytes
-rw-r--r--site/sound/WoodKnock/066.mp3bin0 -> 2788 bytes
-rw-r--r--site/sound/WoodKnock/067.mp3bin0 -> 2735 bytes
-rw-r--r--site/sound/WoodKnock/068.mp3bin0 -> 2814 bytes
-rw-r--r--site/sound/WoodKnock/069.mp3bin0 -> 2657 bytes
-rw-r--r--site/sound/WoodKnock/070.mp3bin0 -> 2657 bytes
-rw-r--r--site/sound/WoodKnock/071.mp3bin0 -> 2551 bytes
-rw-r--r--site/sound/WoodKnock/072.mp3bin0 -> 2788 bytes
-rw-r--r--site/sound/WoodKnock/073.mp3bin0 -> 2710 bytes
-rw-r--r--site/sound/WoodKnock/074.mp3bin0 -> 2604 bytes
-rw-r--r--site/sound/WoodKnock/075.mp3bin0 -> 2709 bytes
-rw-r--r--site/sound/WoodKnock/076.mp3bin0 -> 2630 bytes
-rw-r--r--site/sound/WoodKnock/077.mp3bin0 -> 2657 bytes
-rw-r--r--site/sound/WoodKnock/078.mp3bin0 -> 2684 bytes
-rw-r--r--site/sound/WoodKnock/079.mp3bin0 -> 3050 bytes
-rw-r--r--site/sound/WoodKnock/080.mp3bin0 -> 2710 bytes
-rw-r--r--site/sound/WoodKnock/081.mp3bin0 -> 2421 bytes
-rw-r--r--site/sound/WoodKnock/082.mp3bin0 -> 2841 bytes
-rw-r--r--site/sound/WoodKnock/083.mp3bin0 -> 2815 bytes
-rw-r--r--site/sound/WoodKnock/084.mp3bin0 -> 2972 bytes
-rw-r--r--site/sound/WoodKnock/085.mp3bin0 -> 2788 bytes
-rw-r--r--site/sound/WoodKnock/086.mp3bin0 -> 2657 bytes
-rw-r--r--site/sound/WoodKnock/087.mp3bin0 -> 2708 bytes
-rw-r--r--site/sound/WoodKnock/088.mp3bin0 -> 2840 bytes
-rw-r--r--site/sound/WoodKnock/089.mp3bin0 -> 2865 bytes
-rw-r--r--site/sound/WoodKnock/090.mp3bin0 -> 2605 bytes
-rw-r--r--site/sound/WoodKnock/091.mp3bin0 -> 2710 bytes
-rw-r--r--site/sound/WoodKnock/092.mp3bin0 -> 2840 bytes
-rw-r--r--site/sound/WoodKnock/093.mp3bin0 -> 2892 bytes
-rw-r--r--site/sound/WoodKnock/094.mp3bin0 -> 2893 bytes
-rw-r--r--site/sound/WoodKnock/095.mp3bin0 -> 2682 bytes
-rw-r--r--site/sound/WoodKnock/096.mp3bin0 -> 3101 bytes
-rw-r--r--site/sound/WoodKnock/097.mp3bin0 -> 2946 bytes
-rw-r--r--site/sound/WoodKnock/098.mp3bin0 -> 2683 bytes
-rw-r--r--site/sound/WoodKnock/099.mp3bin0 -> 2971 bytes
-rw-r--r--site/sound/WoodKnock/101.mp3bin0 -> 3102 bytes
-rw-r--r--site/sound/WoodKnock/102.mp3bin0 -> 2736 bytes
-rw-r--r--site/sound/WoodKnock/103.mp3bin0 -> 2943 bytes
-rw-r--r--site/sound/WoodKnock/105.mp3bin0 -> 2787 bytes
-rw-r--r--site/sound/WoodKnock/106.mp3bin0 -> 2735 bytes
-rw-r--r--site/sound/WoodKnock/107.mp3bin0 -> 2317 bytes
-rw-r--r--site/sound/WoodKnock/108.mp3bin0 -> 2552 bytes
-rw-r--r--site/sound/WoodKnock/111.mp3bin0 -> 2343 bytes
-rw-r--r--site/sound/WoodKnock/112.mp3bin0 -> 2317 bytes
-rw-r--r--site/sound/WoodKnock/114.mp3bin0 -> 2396 bytes
-rw-r--r--site/sound/WoodKnock/115.mp3bin0 -> 2971 bytes
-rw-r--r--site/sound/WoodKnock/116.mp3bin0 -> 2474 bytes
-rw-r--r--site/sound/WoodKnock/117.mp3bin0 -> 2789 bytes
-rw-r--r--site/sound/WoodKnock/118.mp3bin0 -> 2763 bytes
-rw-r--r--site/sound/WoodKnock/119.mp3bin0 -> 3128 bytes
-rw-r--r--site/sound/WoodKnock/120.mp3bin0 -> 2762 bytes
-rw-r--r--site/sound/WoodKnock/121.mp3bin0 -> 2840 bytes
-rw-r--r--site/sound/WoodKnock/122.mp3bin0 -> 2736 bytes
-rw-r--r--site/sound/WoodKnock/123.mp3bin0 -> 2867 bytes
-rw-r--r--site/sound/WoodKnock/124.mp3bin0 -> 2605 bytes
-rw-r--r--site/sound/WoodKnock/125.mp3bin0 -> 2735 bytes
-rw-r--r--site/sound/WoodKnock/126.mp3bin0 -> 2526 bytes
-rw-r--r--site/sound/WoodKnock/127.mp3bin0 -> 2814 bytes
-rw-r--r--site/sound/WoodKnock/128.mp3bin0 -> 2840 bytes
-rw-r--r--site/sound/WoodKnock/129.mp3bin0 -> 2553 bytes
-rw-r--r--site/sound/WoodKnock/130.mp3bin0 -> 2683 bytes
-rw-r--r--site/sound/WoodKnock/131.mp3bin0 -> 2422 bytes
-rw-r--r--site/sound/WoodKnock/133.mp3bin0 -> 2605 bytes
-rw-r--r--site/sound/WoodKnock/134.mp3bin0 -> 2789 bytes
-rwxr-xr-xsite/sound/collection_udo.py77
-rw-r--r--site/sound/map.json1
-rw-r--r--site/sound/refresh_map.py31
-rwxr-xr-xsite/udo/707sd.udo271
-rwxr-xr-xsite/udo/DEPRECATE_SORT_opcodes.udo211
-rwxr-xr-xsite/udo/_TESTS/feedback_test.csd41
-rwxr-xr-xsite/udo/_TESTS/mixer_emulator.csd132
-rwxr-xr-xsite/udo/_TESTS/mixer_emulator_1604a.csd144
-rwxr-xr-xsite/udo/__config__.dist.udo44
-rwxr-xr-xsite/udo/addsub.udo170
-rwxr-xr-xsite/udo/aodb.udo80
-rwxr-xr-xsite/udo/array_3d.udo132
-rwxr-xr-xsite/udo/array_tools.udo235
-rwxr-xr-xsite/udo/autorecord.udo108
-rwxr-xr-xsite/udo/bpmdetect.udo57
-rwxr-xr-xsite/udo/bsamp.udo206
-rwxr-xr-xsite/udo/bussing.udo268
-rwxr-xr-xsite/udo/bussing_quad.udo172
-rwxr-xr-xsite/udo/chop.udo715
-rwxr-xr-xsite/udo/chord_detect.udo154
-rwxr-xr-xsite/udo/chords.udo455
-rwxr-xr-xsite/udo/convolutiondb.udo110
-rwxr-xr-xsite/udo/cs81z.udo208
-rwxr-xr-xsite/udo/csv.udo75
-rwxr-xr-xsite/udo/delays.udo42
-rwxr-xr-xsite/udo/experimental.udo41
-rwxr-xr-xsite/udo/feedback.udo164
-rwxr-xr-xsite/udo/fftconvolve.udo116
-rwxr-xr-xsite/udo/fnml/clay_workings.csd58
-rwxr-xr-xsite/udo/fnml/instrument_automel.udo89
-rwxr-xr-xsite/udo/fnml/instrument_gchord1.udo260
-rwxr-xr-xsite/udo/fnml/instrument_portchord.udo132
-rwxr-xr-xsite/udo/fnml/instrument_sineblips.udo81
-rwxr-xr-xsite/udo/fnml/instrument_tikbank.udo78
-rwxr-xr-xsite/udo/fnml/instrument_tikclay.udo118
-rwxr-xr-xsite/udo/fnml/instrument_vocal.udo73
-rwxr-xr-xsite/udo/fnml/transition_click.udo143
-rwxr-xr-xsite/udo/fnml/transition_mburn.udo186
-rwxr-xr-xsite/udo/fnml/transition_snare.udo140
-rwxr-xr-xsite/udo/fnml/transition_snare_preSOUNDDB.udo133
-rwxr-xr-xsite/udo/fnml/transition_test.csd39
-rwxr-xr-xsite/udo/fnml/transitional/base.udo141
-rwxr-xr-xsite/udo/frequency_tools.udo375
-rwxr-xr-xsite/udo/fx_autoglitch.udo470
-rwxr-xr-xsite/udo/fx_autoglitchbeat.udo168
-rwxr-xr-xsite/udo/host_platform.udo45
-rwxr-xr-xsite/udo/host_tools.udo69
-rwxr-xr-xsite/udo/interop.udo178
-rwxr-xr-xsite/udo/interop.web.udo172
-rwxr-xr-xsite/udo/json.udo562
-rwxr-xr-xsite/udo/lagdetect.udo59
-rwxr-xr-xsite/udo/legacy/sequencing_melodic.udo831
-rwxr-xr-xsite/udo/legacy/sequencing_melodic_persistence.udo246
-rwxr-xr-xsite/udo/mfcc_match.udo178
-rwxr-xr-xsite/udo/midi.udo65
-rwxr-xr-xsite/udo/midimap.udo247
-rwxr-xr-xsite/udo/oprepare.udo93
-rwxr-xr-xsite/udo/pgdb.udo313
-rwxr-xr-xsite/udo/pvs_fsegproc.udo135
-rwxr-xr-xsite/udo/pvs_fulltabproc.udo197
-rwxr-xr-xsite/udo/pvs_tabproc.udo640
-rwxr-xr-xsite/udo/pvs_tools.udo31
-rwxr-xr-xsite/udo/quad.udo79
-rwxr-xr-xsite/udo/sample_level.udo90
-rwxr-xr-xsite/udo/sampling.udo77
-rwxr-xr-xsite/udo/scss/base.udo1046
-rwxr-xr-xsite/udo/scss/elasticlip.udo823
-rwxr-xr-xsite/udo/scss/elasticlip_arranger.udo213
-rwxr-xr-xsite/udo/scss/elasticlip_sequencer.udo133
-rwxr-xr-xsite/udo/scss/mixer/_effects.udo247
-rwxr-xr-xsite/udo/scss/mixer/base.udo253
-rwxr-xr-xsite/udo/scss/mixer/test.csd41
-rwxr-xr-xsite/udo/scss/persistence.udo366
-rwxr-xr-xsite/udo/scss/scss_persistence_test.csd100
-rwxr-xr-xsite/udo/scss/scss_test.csd125
-rwxr-xr-xsite/udo/scss/seqtable.udo196
-rwxr-xr-xsite/udo/sequencing.udo329
-rwxr-xr-xsite/udo/sequencing_melodic.udo807
-rwxr-xr-xsite/udo/sequencing_melodic_persistence.udo275
-rwxr-xr-xsite/udo/sequencing_melodic_persistence.web.udo213
-rwxr-xr-xsite/udo/sequencing_melodic_portamento.udo310
-rwxr-xr-xsite/udo/sequencing_scheduled.udo286
-rwxr-xr-xsite/udo/sequencing_table.udo370
-rwxr-xr-xsite/udo/sound_db.udo152
-rwxr-xr-xsite/udo/sound_melsys.udo215
-rwxr-xr-xsite/udo/sound_sdb.udo271
-rwxr-xr-xsite/udo/sounddb.udo270
-rwxr-xr-xsite/udo/soundfont.udo68
-rwxr-xr-xsite/udo/soundfonts/Rhodes/Crysrhod.sf2bin0 -> 212560 bytes
-rwxr-xr-xsite/udo/soundfonts/Rhodes/Galaxy_Electric_Pianos.sf2bin0 -> 30299302 bytes
-rwxr-xr-xsite/udo/soundfonts/Rhodes/JR_elepiano.sf2bin0 -> 470228 bytes
-rwxr-xr-xsite/udo/soundfonts/Rhodes/KR-O5R-Operator.sf2bin0 -> 23758082 bytes
-rwxr-xr-xsite/udo/soundfonts/Rhodes/jRhodes3c-stereo.sf2bin0 -> 32793738 bytes
-rwxr-xr-xsite/udo/soundfonts/Rhodes/vibra.sf2bin0 -> 201844 bytes
-rwxr-xr-xsite/udo/soundxdb.udo201
-rwxr-xr-xsite/udo/soundxdb_extract.udo67
-rwxr-xr-xsite/udo/spectral_sampler.udo126
-rwxr-xr-xsite/udo/spectral_transforms.udo358
-rwxr-xr-xsite/udo/string_tools.udo375
-rwxr-xr-xsite/udo/synth_drums.udo229
-rwxr-xr-xsite/udo/synth_instruments.udo78
-rwxr-xr-xsite/udo/tab2wav.udo151
-rwxr-xr-xsite/udo/table_tools.udo244
-rwxr-xr-xsite/udo/tabproc.udo217
-rwxr-xr-xsite/udo/tempo_tools.udo72
-rwxr-xr-xsite/udo/transient_detect.udo216
-rwxr-xr-xsite/udo/twigs/checkpointing.udo120
-rwxr-xr-xsite/udo/twigs/transforms.udo285
-rwxr-xr-xsite/udo/twigs/twigs.udo444
-rwxr-xr-xsite/udo/twist/automation.udo241
-rwxr-xr-xsite/udo/twist/checkpointing.udo127
-rwxr-xr-xsite/udo/twist/checkpointing_hold.udo196
-rwxr-xr-xsite/udo/twist/transform_api.udo421
-rwxr-xr-xsite/udo/twist/transforms.udo25
-rwxr-xr-xsite/udo/twist/transforms/amplitude.udo179
-rwxr-xr-xsite/udo/twist/transforms/cross_processing.udo176
-rwxr-xr-xsite/udo/twist/transforms/delay.udo72
-rwxr-xr-xsite/udo/twist/transforms/filter.udo172
-rwxr-xr-xsite/udo/twist/transforms/frequency.udo65
-rwxr-xr-xsite/udo/twist/transforms/general.udo28
-rwxr-xr-xsite/udo/twist/transforms/generate.udo363
-rwxr-xr-xsite/udo/twist/transforms/granular.udo138
-rwxr-xr-xsite/udo/twist/transforms/harmonic.udo142
-rwxr-xr-xsite/udo/twist/transforms/reverb.udo80
-rwxr-xr-xsite/udo/twist/transforms/spectral.udo642
-rwxr-xr-xsite/udo/twist/transforms/warping.udo210
-rwxr-xr-xsite/udo/twist/twist.udo1304
-rwxr-xr-xsite/udo/txt_tools.udo98
-rwxr-xr-xsite/udo/uniqueid.udo81
-rwxr-xr-xsite/udo/wavetables.udo31
-rwxr-xr-xsite/udo/wiimote.udo227
-rwxr-xr-xsite/udo/wiimote_fltk.udo200
4923 files changed, 75056 insertions, 0 deletions
diff --git a/site/.htaccess b/site/.htaccess
new file mode 100644
index 0000000..75aecd9
--- /dev/null
+++ b/site/.htaccess
@@ -0,0 +1,3 @@
+Header set Access-Control-Allow-Origin "*"
+RewriteEngine On
+RewriteRule ^$ https://csound.1bpm.net [L,R=301]
diff --git a/site/app/base/analyser.js b/site/app/base/analyser.js
new file mode 100644
index 0000000..ac55d42
--- /dev/null
+++ b/site/app/base/analyser.js
@@ -0,0 +1,97 @@
+var Analyser = function(type, twist, elContainer, csApp) {
+ var self = this;
+ var scopeNode = twirl.audioContext.createAnalyser();
+ var node;
+ var elCanvas = $("<canvas />").css({
+ position: "absolute",
+ width: "100%",
+ height: "100%",
+ top: "0px",
+ left: "0px"
+ }).addClass("twist_scope").appendTo(elContainer);
+ var context = elCanvas[0].getContext("2d");
+ var playing = false;
+
+ this.remove = function() {
+ type = null;
+ elContainer.remove();
+ };
+
+ function frequency() {
+ if (type != 0 || !playing) return;
+ let style = getComputedStyle(document.body);
+ let width = elCanvas[0].width = elContainer.width();
+ let height = elCanvas[0].height = elContainer.height();
+
+ let freqData = new Uint8Array(scopeNode.frequencyBinCount);
+ let scaling = height / 256;
+ scopeNode.getByteFrequencyData(freqData);
+ context.fillStyle = style.getPropertyValue("--waveformBgColor");
+ context.fillRect(0, 0, width, height);
+ context.lineWidth = 2;
+ context.strokeStyle = style.getPropertyValue("--waveformFgColor");
+ context.beginPath();
+
+ for (var x = 0; x < width; x++) {
+ context.lineTo(x, height - freqData[x] * scaling);
+ }
+ context.stroke();
+ requestAnimationFrame(frequency);
+ }
+
+ function oscilloscope() {
+ if (type != 1 || !playing) return;
+ let style = getComputedStyle(document.body);
+ let width = elCanvas[0].width = elContainer.width();
+ let height = elCanvas[0].height = elContainer.height();
+
+ let timeData = new Uint8Array(scopeNode.frequencyBinCount);
+ let scaling = height / 256;
+ let risingEdge = 0;
+ let edgeThreshold = 5;
+ scopeNode.getByteTimeDomainData(timeData);
+
+ context.fillStyle = style.getPropertyValue("--waveformBgColor");
+ context.fillRect(0, 0, width, height);
+ context.lineWidth = 2;
+ context.strokeStyle = style.getPropertyValue("--waveformFgColor");
+ context.beginPath();
+
+ while (timeData[risingEdge++] - 128 > 0 && risingEdge <= width);
+ if (risingEdge >= width) risingEdge = 0;
+
+ while (timeData[risingEdge++] - 128 < edgeThreshold && risingEdge <= width);
+ if (risingEdge >= width) risingEdge = 0;
+
+ for (var x = risingEdge; x < timeData.length && x - risingEdge < width; x++) {
+ context.lineTo(x - risingEdge, height - timeData[x] * scaling);
+ }
+ context.stroke();
+ requestAnimationFrame(oscilloscope);
+ }
+
+ this.setPlaying = function(state) {
+ playing = state;
+ if (playing) {
+ if (type == 0) {
+ frequency();
+ } else if (type == 1) {
+ oscilloscope();
+ }
+ }
+ };
+
+ this.setType = function(v) {
+ type = v;
+ self.setPlaying(playing);
+ };
+
+ async function boot() {
+ node = await csApp.getNode();
+ node.connect(scopeNode);
+ if (twist.isPlaying()) {
+ self.setPlaying(true);
+ }
+ }
+ boot();
+}; \ No newline at end of file
diff --git a/site/app/base/base.js b/site/app/base/base.js
new file mode 100644
index 0000000..8bf12f2
--- /dev/null
+++ b/site/app/base/base.js
@@ -0,0 +1,512 @@
+var CSApplication = function(appOptions) {
+ var self = this;
+ var version = 1.0;
+ var debug = window.location.protocol.startsWith("file");
+ var baseUrl;
+ if (debug) {
+ baseUrl = "https://apps.csound.1bpm.net";
+ } else {
+ baseUrl = window.location.origin;
+ }
+ var cbid = 0;
+ var callbacks = {};
+ var appPath;
+ var udoReplacements = {
+ "/interop.udo": "/interop.web.udo",
+ "/sequencing_melodic_persistence.udo": "/sequencing_melodic_persistence.web.udo"
+ };
+ var defaultStorage = {version: version};
+ var storage = localStorage.getItem("csound");
+ if (storage) {
+ storage = JSON.parse(storage);
+ if (!storage.version || storage.version != version) {
+ storage = defaultStorage;
+ }
+ } else {
+ storage = defaultStorage;
+ }
+
+ function saveStorage() {
+ localStorage.setItem("csound", JSON.stringify(storage));
+ }
+
+
+ const defaultOptions = {
+ csdUrl: null,
+ csOptions: null,
+ trackMouse: false,
+ trackTouch: false,
+ trackClick: false,
+ trackMouseSpeed: false,
+ trackTouchSpeed: false,
+ keyDownScore: null, // score line to insert with code as p4, or function passed event to return score line
+ keyUpScore: null,
+ onPlay: null,
+ onStop: null,
+ ioReceivers: null,
+ files: null
+ };
+ let csound = null;
+
+ function basename(path) {
+ return path.split("/").reverse()[0];
+ }
+
+ this.getCsound = function() {
+ return csound;
+ }
+
+ if (!appOptions) {
+ appOptions = defaultOptions;
+ } else {
+ for (var key in defaultOptions) {
+ if (!appOptions.hasOwnProperty(key)) {
+ appOptions[key] = defaultOptions[key];
+ }
+ }
+ }
+
+ async function copyDataToLocal(arrayBuffer, name) {
+ if (!csound) return;
+ const buffer = new Uint8Array(arrayBuffer);
+ await csound.fs.writeFile(name, buffer);
+ return Promise.resolve();
+ }
+
+ async function copyUrlToLocal(url, name) {
+ if (!csound) return;
+ const response = await fetch(url);
+ const arrayBuffer = await response.arrayBuffer();
+ await copyDataToLocal(arrayBuffer, name);
+ return Promise.resolve();
+ }
+
+ this.loadUrl = function(url, a2, a3) {
+ var name;
+ var func;
+ if (typeof(a2) == "function") {
+ name = basename(url);
+ func = a2;
+ } else {
+ name = a2;
+ func = a3;
+ }
+ copyUrlToLocal(url, name).then(() => {
+ if (func) func(name);
+ });
+ };
+
+ this.loadBuffer = function(buffer, a2, a3) {
+ var name;
+ var func;
+ if (typeof(a2) == "function") {
+ name = basename(url);
+ func = a2;
+ } else {
+ name = a2;
+ func = a3;
+ }
+ copyDataToLocal(buffer, name).then(() => {
+ if (func) func(name);
+ });
+ }
+
+ function runCallback(data) {
+ if (!callbacks[data.cbid]) {
+ return;
+ }
+ callbacks[data.cbid].func(data);
+ if (callbacks.hasOwnProperty(data.cbid) && !callbacks[data.cbid].persist) {
+ self.removeCallback(data.cbid);
+ }
+ }
+
+ this.createCallback = function(func, persist) {
+ thisCbid = cbid;
+ callbacks[thisCbid] = {func: func, persist: persist};
+ if (cbid > 999999) {
+ cbid = 0;
+ } else {
+ cbid ++;
+ }
+ return thisCbid;
+ };
+
+ this.removeCallback = function(cbid) {
+ delete callbacks[cbid];
+ };
+
+ this.enableAudioInput = async function() {
+ if (!csound) return;
+ return (await csound.enableAudioInput());
+ };
+
+ this.unlinkFile = function(path) {
+ if (!csound) return;
+ csound.fs.unlink(path);
+ };
+
+ this.readFile = async function(path) {
+ if (!csound) return;
+ return (await csound.fs.readFile(path));
+ };
+
+ this.writeFile = async function(path, buffer) {
+ return (await csound.fs.writeFile(path, buffer));
+ };
+
+ this.setControlChannel = function(name, value) {
+ if (!csound) return;
+ csound.setControlChannel(name, value);
+ };
+
+ this.getControlChannel = async function(name) {
+ if (!csound) return;
+ return await csound.getControlChannel(name);
+ };
+
+ this.setStringChannel = function(name, value) {
+ if (!csound) return;
+ csound.setStringChannel(name, value);
+ };
+
+ this.getStringChannel = function(name) {
+ if (!csound) return;
+ return csound.getStringChannel(name);
+ };
+
+ this.getTable = function(tableNumber) {
+ if (!csound) return;
+ return csound.getTable(tableNumber);
+ };
+
+ this.compileOrc = async function(orc) {
+ if (!csound) return;
+ return await csound.compileOrc(orc);
+ }
+
+ function handleMessage(message) {
+ if (debug) console.log(message);
+ if (message.startsWith("callback ")) {
+ runCallback(JSON.parse(message.substr(9)));
+ } else if (appOptions.errorHandler && (message.startsWith("error: ") ||
+ message.startsWith("INIT ERROR ") ||
+ message.startsWith("PERF ERROR ") ||
+ message.startsWith("perf_error: "))) {
+ appOptions.errorHandler(message);
+ } else if (appOptions.ioReceivers) {
+ for (var k in appOptions.ioReceivers) {
+ if (message.startsWith(k + " ")) {
+ appOptions.ioReceivers[k](message.substr(k.length + 1));
+ return;
+ }
+ }
+ }
+ };
+
+ var urlExistsChecked = {};
+ function urlExists(url) {
+ return new Promise((resolve, reject) => {
+ if (urlExistsChecked.hasOwnProperty(url)) {
+ resolve(urlExistsChecked[url]);
+ } else {
+ fetch(url, {
+ method: "HEAD"
+ }).then(response => {
+ var exists = (response.status.toString()[0] === "2");
+ urlExistsChecked[url] = exists;
+ resolve(exists);
+ }).catch(error => {
+ reject(false);
+ });
+ }
+ });
+ }
+
+
+ function dirName(path) {
+ return path.substring(0, path.lastIndexOf("/"));
+ }
+
+ async function loadFiles(files) {
+ for (var i = 0; i < files.length; i++) {
+ await copyUrlToLocal(files[i].url, files[i].name);
+ }
+ };
+
+
+ function urlInFiles(url, files) {
+ for (var x in files) {
+ if (url == files[x].url) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ async function scanUdoUsage(url, files, soundCollections) {
+ const req = await fetch(url);
+ const text = await req.text();
+ var soundCollections;
+ var match;
+ var doSaveStorage = false;
+ if (!storage.knownUdoPaths) storage.knownUdoPaths = {};
+ var re = /sounddb_getcollection(|id) "(.*)"|#include "(.*)"/g;
+ do {
+ match = re.exec(text);
+ if (match) {
+ if (match[3] && !match[3].endsWith("sounddb.udo")) {
+ var udoPath;
+ var dopush = false;
+ if (udoReplacements.hasOwnProperty(match[3])) {
+ udoPath = baseUrl + "/udo/" + udoReplacements[match[3]];
+ if (!urlInFiles(udoPath)) {
+ dopush = true;
+ }
+ } else {
+ if (Object.keys(storage.knownUdoPaths).includes(match[3])) {
+ udoPath = storage.knownUdoPaths[match[3]];
+ if (!urlInFiles(udoPath, files)) dopush = true;
+ } else {
+ udoPath = baseUrl + ("/udo/" + match[3]).replaceAll("//", "/");
+ if (!urlInFiles(udoPath, files)) {
+ var exists = await urlExists(udoPath);
+ if (!exists) {
+ udoPath = appPath + ("/" + match[3]).replaceAll("//", "/");
+ }
+ storage.knownUdoPaths[match[3]] = udoPath;
+ doSaveStorage = true;
+ dopush = true;
+ }
+ }
+ }
+ if (dopush) {
+ files.push({url: udoPath, name: match[3]});
+ await scanUdoUsage(udoPath, files, soundCollections);
+ }
+ }
+ if (match[2] && !appOptions.manualSoundCollections) {
+ var collections = match[2].split(",");
+ for (var x in collections) {
+ if (!soundCollections.includes(collections[x])) {
+ soundCollections.push(collections[x]);
+ }
+ }
+ }
+ }
+ } while (match);
+
+ if (doSaveStorage) {
+ saveStorage();
+ }
+ }
+
+ this.getNode = async function() {
+ if (!csound) return;
+ return await csound.getNode();
+ }
+
+ this.play = async function(log, audioContext) {
+ if (!csound) {
+ if (log) log("Loading audio engine");
+ var csdBasename = basename(appOptions.csdUrl);
+ appPath = dirName(window.location.href);
+
+ if (csdBasename == appOptions.csdUrl) {
+ appOptions.csdUrl = appPath + "/" + appOptions.csdUrl;
+ }
+ const { Csound } = await import(baseUrl + "/code/csound.js");
+ var invokeOptions = {};
+ if (audioContext) {
+ invokeOptions.audioContext = audioContext;
+ }
+ csound = await Csound(invokeOptions);
+ await csound.setDebug(0);
+ csound.on("message", handleMessage);
+ await csound.setOption("-m0");
+ await csound.setOption("-d");
+ await csound.setOption("--env:INCDIR=/");
+ await csound.setOption("-odac");
+ await csound.setOption("--omacro:WEB=1");
+ if (appOptions.csOptions) {
+ for (var i = 0; i < appOptions.csOptions.length; i++) {
+ await csound.setOption(appOptions.csOptions[i]);
+ }
+ }
+
+ if (log) log("Preparing application code");
+ var files = [{url: appOptions.csdUrl, name: csdBasename}];
+ var soundCollections = [];
+ await scanUdoUsage(appOptions.csdUrl, files, soundCollections);
+
+ if (appOptions.files) {
+ appOptions.files.forEach(function(f){
+ files.push({url: f, name: f});
+ });
+ }
+
+ if (soundCollections.length > 0) {
+ if (log) log("Preparing application sounds");
+ var udoUrl = baseUrl + "/sound/collection_udo.py?collections=" + soundCollections.join(",");
+ files.push({url: udoUrl, name: "sounddb.udo"});
+
+ const response = await fetch(baseUrl + "/sound/map.json");
+ const jdata = await response.json();
+ for (var i = 0; i < soundCollections.length; i++) {
+ var fdata = jdata[soundCollections[i]];
+ for (var j = 0; j < fdata.sounds.length; j++) {
+ var path = fdata.sounds[j].path;
+ if (!urlInFiles(path, files)) {
+ var fileObj = {url: path, name: path};
+ files.push(fileObj);
+ }
+ }
+ }
+ }
+ if (appOptions.onPlay) {
+ csound.on("play", appOptions.onPlay);
+ }
+
+ if (appOptions.onStop) {
+ csound.on("stop", appOptions.onStop);
+ }
+
+ if (log) log("Loading application files");
+ if (appOptions.files) {
+ for (var x in appOptions.files) {
+ files.push({url: appPath + "/" + appOptions.files[x], name: appOptions.files[x]});
+ }
+ }
+ await loadFiles(files);
+ if (log) log("Compiling application");
+ await csound.compileCsd(csdBasename);
+ await csound.start();
+ }
+
+ };
+
+ this.insertScoreAsync = async function(instr, extraArgs, duration, start) {
+ if (!duration) duration = 1;
+ if (!start) start = 0;
+
+ return new Promise((resolve, reject) => {
+ var cbid = self.createCallback(function(ndata){
+ resolve(ndata);
+ });
+ var args = [start, duration, cbid];
+ for (let e of extraArgs) {
+ args.push(e);
+ }
+ self.insertScore(instr, args);
+ });
+ };
+
+ this.insertScore = async function(instr, args) {
+ if (!csound) return;
+ if (!args) args = [0, 1];
+ var scoreline = "i"
+
+ function add(item) {
+ if (isNaN(item)) {
+ scoreline += "\"" + item + "\" ";
+ } else {
+ scoreline += item + " ";
+ }
+ }
+
+ add(instr);
+ if (typeof(args) == "function") {
+ [0, 1, self.createCallback(args)].forEach(add);
+ } else {
+ args.forEach(add);
+ }
+ csound.inputMessage(scoreline);
+ };
+
+ var speedTimestamp = null;
+ var lastPosX = null;
+ var lastPosY = null;
+
+ function setSpeedChannels(x, y) {
+ if (!csound) return;
+ if (speedTimestamp == null) {
+ speedTimestamp = Date.now();
+ lastPosX = x;
+ lastPosY = y;
+ return;
+ }
+ var now = Date.now();
+ var dt = now - speedTimestamp;
+ var dx = event.pageX - lastPosX;
+ var dy = event.pageY - lastPosY;
+ var speedX = Math.round(dx / dt * 100);
+ var speedY = Math.round(dy / dt * 100);
+ speedTimestamp = now;
+ lastPosX = x;
+ lastPosY = y;
+
+ csound.setControlChannel("speedX", speedX);
+ csound.setControlChannel("speedY", speedY);
+ }
+
+ function setPositionChannels(x, y) {
+ if (!csound) return;
+ csound.setControlChannel("mouseX", x / window.innerWidth);
+ csound.setControlChannel("mouseY", y / window.innerHeight);
+ }
+
+
+ if (appOptions.trackMouse || appOptions.trackMouseSpeed) {
+ document.addEventListener("mousemove", function(event) {
+ var timestamp = null;
+ var lastMouseX = null;
+ var lastMouseY = null;
+ if (appOptions.trackMouse) {
+ setPositionChannels(event.pageX, event.pageY);
+ }
+ if (appOptions.trackMouseSpeed) {
+ setSpeedChannels(event.pageX, event.pageY);
+ }
+ });
+ }
+
+ if (appOptions.trackTouch || appOptions.trackTouchSpeed) {
+ document.addEventListener("touchmove", function(event) {
+ var evt = (typeof event.originalEvent === "undefined") ? event : event.originalEvent;
+ var touch = evt.touches[0] || evt.changedTouches[0];
+ if (appOptions.trackTouch) {
+ setPositionChannels(touch.pageX, touch.pageY);
+ }
+ if (appOptions.trackTouchSpeed) {
+ setSpeedChannels(touch.pageX, touch.pageY);
+ }
+ });
+ }
+
+
+ if (appOptions.keyDownScore) {
+ document.addEventListener("keydown", function(event) {
+ if (!csound) return;
+ var scoreline = null;
+ if (typeof appOptions.keyDownScore == "function") {
+ scoreline = appOptions.keyDownScore(event);
+ } else {
+ scoreline = appOptions.keyDownScore + " " + event.code;
+ }
+ csound.inputMessage(scoreline);
+ });
+ }
+
+ if (appOptions.keyUpScore) {
+ document.addEventListener("keydown", function(event) {
+ if (!csound) return;
+ var scoreline = null;
+ if (typeof appOptions.keyUpScore == "function") {
+ scoreline = appOptions.keyUpScore(event);
+ } else {
+ scoreline = appOptions.keyUpScore + " " + event.code;
+ }
+ csound.inputMessage(scoreline);
+ });
+ }
+} \ No newline at end of file
diff --git a/site/app/base/controls.js b/site/app/base/controls.js
new file mode 100644
index 0000000..331f88b
--- /dev/null
+++ b/site/app/base/controls.js
@@ -0,0 +1,214 @@
+var Control = function(definition) {
+ var self = this;
+ var state = false;
+ var type;
+ var element;
+ var elTextInput;
+
+
+
+ if (!definition.hasOwnProperty("channel")) {
+ definition.channel = definition.name.toLowerCase();
+ }
+
+ if (!definition.hasOwnProperty("min")) {
+ definition.min = 0;
+ }
+
+ if (!definition.hasOwnProperty("max")) {
+ definition.max = 1;
+ }
+
+ if (!definition.hasOwnProperty("step")) {
+ definition.step = 0.000001;
+ }
+
+ if (!definition.hasOwnProperty("dfault")) {
+ definition.dfault = 0;
+ }
+
+ Object.defineProperty(this, "element", {
+ get: function() {return element;},
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "textInputElement", {
+ get: function() {return elTextInput;},
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "elementRow", {
+ get: function() {
+ var tr = $("<tr />");
+ $("<td />").text(definition.name).appendTo(tr);
+ $("<td />").append(element).appendTo(tr);
+ var tinput = $("<td />").appendTo(tr);
+ if (elTextInput) {
+ tinput.append(elTextInput);
+ }
+ return tr;
+ },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "value", {
+ get: function() {
+ var val;
+ if (type == "select") {
+ val = element.val();
+ if (definition.asValue) {
+ val = definition.options[val];
+ }
+ } else if (type == "range") {
+ val = element.val();
+ } else if (type == "checkbox") {
+ val = (element.is(":checked")) ? definition.max : definition.min;
+ } else if (type == "button") {
+ val = 0;
+ } else if (type == "toggle") {
+ val = (state) ? definition.max : definition.min;
+ }
+
+ return val;
+ },
+ set: function(v) {
+ if (type == "checkbox") {
+ element.prop("checked", v);
+ } else {
+ element.val(v);
+ }
+ }
+ });
+
+ async function createControl() {
+ if (definition.options) {
+ type = "select";
+ element = $("<select />");
+ for (var o in definition.options) {
+ $("<option />").val(o).text(definition.options[o]).appendTo(element);
+ }
+ } else if (definition.image) {
+ type = "range";
+ var baseurl = "https://apps.csound.1bpm.net/controls/";
+ var response = await fetch(baseurl + definition.image + ".json");
+ var json = await response.json();
+ var width;
+ var height;
+ if (definition.width) {
+ width = definition.width;
+ } else {
+ if (!json.cellw) json.cellw = 32;
+ width = json.cellw;
+ }
+ if (definition.height) {
+ height = definition.height;
+ } else {
+ height = json.cellh;
+ }
+
+ if (json.ctltype == 0) {
+ element = $("<input />").attr("type", "range").addClass("input-knob").attr("data-diameter", json.cellh).attr("data-src", baseurl + json.fn).attr("data-sprites", json.frames - 1).attr("data-height", height).attr("data-width", width);
+ type = "range";
+ } else if (json.ctltype == 1 || json.ctltype == 3) {
+ element = $("<input />").attr("type", "range").addClass("input-slider").attr("data-height", height).attr("data-src", baseurl + json.fn).attr("data-width", width).attr("data-sprites", json.frames - 1); //.css({width: width, height: height});
+ type = "range";
+ } else if (json.ctltype == 2) {
+ element = $("<input />").attr("type", "checkbox").addClass("input-switch").attr("data-height", height).attr("data-width", width).attr("data-src", baseurl + json.fn);
+ type = "checkbox";
+ }
+ } else {
+ if (!definition.type || definition.type == "range") {
+ type = "range";
+ element = $("<input />").attr("type", "range");
+ } else if (definition.type == "toggle") {
+ type = "toggle";
+ element = $("<button />").text(definition.labelOff);
+ } else if (definition.type == "button") {
+ type = "button";
+ element = $("<button />").text(definition.label);
+ }
+ }
+
+ if (type == "range") {
+ element.attr("min", definition.min).attr("max", definition.max).attr("step", definition.step);
+ if (!definition.noTextInput) {
+ elTextInput = $("<input />").attr("type", "number").attr("min", definition.min).attr("max", definition.max).attr("step", definition.step).change(function() {
+ change($(this).val());
+ });
+ }
+ }
+
+ if (definition.onContextMenu) {
+ element.on("contextmenu", definition.onContextMenu);
+ }
+
+ element.change(function() {
+ if (definition.onChange) {
+ definition.onChange(self.value, self);
+ }
+ if (definition.channel) {
+ sendHost();
+ }
+ });
+
+ element.on("input", function() {
+ if (type == "range") {
+ if (!definition.noSendOnInput) {
+ sendHost();
+ }
+ if (elTextInput) {
+ elTextInput.text(Math.round(self.value * 100) / 100);
+ }
+ }
+ });
+
+ function sendHost() {
+ if (window.app) {
+ app.setControlChannel(definition.channel, self.value);
+ }
+ }
+
+ function change(val) {
+ if (type == "select" || type == "range") {
+ element.val(val);
+ } else if (type == "checkbox") {
+ if (val == 1 || val == true) {
+ element.prop("checked", true);
+ } else {
+ element.prop("checked", false);
+ }
+ } else if (type == "toggle") {
+ if (val == 1 || val == true) {
+ state = true;
+ if (definition.labelOn) {
+ element.text(definition.labelOn);
+ }
+ if (definition.cssOn) {
+ element.css(definition.cssOn);
+ }
+ } else {
+ state = false;
+ if (definition.labelOff) {
+ element.text(definition.labelOff);
+ }
+ if (definition.cssOff) {
+ element.css(definition.cssOff);
+ }
+ }
+ }
+ }
+ change(definition.dfault);
+ if (!definition.noTriggerInit) {
+ element.trigger("change");
+ }
+
+ if (definition.target) {
+ definition.target.append(element);
+ }
+
+ if (definition.onReady) {
+ definition.onReady(self);
+ }
+ }
+ createControl();
+}; \ No newline at end of file
diff --git a/site/app/base/interop_work.deprecated.csd b/site/app/base/interop_work.deprecated.csd
new file mode 100644
index 0000000..8a12b18
--- /dev/null
+++ b/site/app/base/interop_work.deprecated.csd
@@ -0,0 +1,108 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 48000
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+
+
+
+#include "sequencing_melodic_persistence.udo"
+
+opcode jsio_sendraw, 0, S
+ Smessage xin
+ prints "CBDT "
+ prints Smessage
+ prints "\n"
+endop
+
+
+gijsio_collections[][] init 20, 300
+
+opcode jsio_getcollection
+ Scollection, SonComplete xin
+
+endop
+
+
+instr jsio_loadcollection
+ Sdata = strget(p4)
+
+endin
+
+
+
+
+
+gSjsioBuffer[] init 16
+gijsioBufferMax = 0
+gijsioBufferLock = 0
+
+
+
+
+instr jsio_bufferadd
+ icbid = p4
+ Sstatus = strget(p5)
+ Sdetails = strget(p6)
+ if (gijsioBufferLock == 1) then
+ schedule(p1, 0.1, 1, icbid, Sstatus, Sdetails)
+ else
+ gijsioBufferLock = 1
+ Sitem = sprintf("{\"cbid\":%d", icbid)
+ if (strcmp(Sstatus, "") != 0) then
+ Sitem = strcat(Sitem, sprintf(",\"status\":\"%s\"", Sstatus))
+ endif
+
+ if (strcmp(Sdetails, "") != 0) then
+ Sitem = strcat(Sitem, sprintf(",\"details\":\"%s\"", Sdetails))
+ endif
+
+ gSjsioBuffer[gijsioBufferMax] = strcat(Sitem, "}")
+ gijsioBufferMax += 1
+
+ gijsioBufferLock = 0
+ endif
+ turnoff
+endin
+
+
+instr jsio_bufferflush
+ Schannel = strget(p4)
+
+ if (gijsioBufferLock == 1) then
+ schedule(p1, 0.1, 1, Schannel)
+ else
+ gijsioBufferLock = 1
+ if (gijsioBufferMax == 0) then
+ chnset "", Schannel
+ gijsioBufferLock = 0
+ else
+ index = 0
+ Soutput = "["
+ while (index < gijsioBufferMax) do
+ if (index > 0) then
+ Soutput = strcat(Soutput, ",")
+ endif
+ Soutput = strcat(Soutput, gSjsioBuffer[index])
+ index += 1
+ od
+ Soutput = strcat(Soutput, "]")
+ chnset Soutput, Schannel
+ gijsioBufferMax = 0
+ gijsioBufferLock = 0
+ endif
+ endif
+ turnoff
+endin
+
+
+</CsInstruments>
+<CsScore>
+i "jsio_bufferadd" 0 1
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/base/spline-edit.js b/site/app/base/spline-edit.js
new file mode 100644
index 0000000..06faa7e
--- /dev/null
+++ b/site/app/base/spline-edit.js
@@ -0,0 +1,453 @@
+var SplineEdit = function (elTarget, colour, duration, constraints, name) {
+ var self = this;
+ var targetName = "#" + elTarget.attr("id");
+ var svg;
+ var path;
+ var line = d3.line();
+ var yStep;
+ var selected;
+ var dragged;
+ var yScale = [constraints[0], constraints[1]];
+ var region = [0, 1];
+ this.changed = false;
+
+ Object.defineProperty(this, "width", {
+ get: function() { return parseFloat(elTarget.width()); },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "height", {
+ get: function() { return parseFloat(elTarget.height()); },
+ set: function(x) {}
+ });
+
+ if (constraints[3] > 0.0001) {
+ yStep = self.height / ((constraints[1] - constraints[0]) / constraints[3]);
+ }
+
+ var dfaultPos = ((constraints[2] - constraints[0]) / (constraints[1] - constraints[0]));
+ var rawPoints = [[0, dfaultPos], [1, dfaultPos]];
+ var pointRange = [0, 0];
+ var points = [...rawPoints];
+ var circlePoints = [];
+
+ this.getRawPoints = function() {
+ return rawPoints;
+ };
+
+ this.setRawPoints = function(p, noredraw) {
+ rawPoints = p;
+ if (!noredraw) self.redraw();
+ };
+
+ Object.defineProperty(this, "displayPoints", {
+ get: function() {
+ var output = [];
+ var x;
+ for (let p of points) {
+ output.push([p[0] * self.width, (1 - p[1]) * self.height]);
+ }
+ return output;
+ },
+ set: function(x) {}
+ });
+
+ this.resize = function(ratio, noredraw) {
+ for (var i in points) {
+ if (i != 0 && i != rawPoints.length - 1) {
+ rawPoints[i][0] = rawPoints[i][0] * ratio;
+ }
+ }
+ if (!noredraw) self.redraw();
+ };
+
+ function regionToAbsolute(xVal) {
+ return (xVal - region[0]) / (region[1] - region[0]);
+ }
+
+ function absoluteToRegion(xVal) {
+ return (xVal * (region[1] - region[0])) + region[0];
+ }
+
+
+ function interpolateRange(scaled, start, end) {
+ if (!start) start = region[0];
+ if (!end) end = region[1];
+ var scaling = 1 - (end - start);
+ var output = [];
+ var lastIndex;
+ var firstIndex = 0;
+ var lastIndex;
+ var yVal;
+ var xVal;
+ var allPoints = rawPoints;
+ if (start == 0 && end == 1) {
+ return {points: allPoints, indexes: [0, allPoints.length - 1]};
+ }
+
+ for (var i in allPoints) {
+ var x = allPoints[i][0];
+ if (x < start) {
+ firstIndex = parseInt(i);
+ }
+ }
+ for (var i = parseInt(allPoints.length - 1); i > firstIndex; i--) {
+ var x = allPoints[i][0];
+ if (x >= end) {
+ lastIndex = i;
+ }
+ }
+ for (var i = firstIndex; i <= lastIndex; i++) {
+ var v = allPoints[i];
+
+ xVal = (i == lastIndex) ? end : v[0];
+
+ if (i == firstIndex && v[0] != start) {
+ var next = allPoints[parseInt(i + 1)];
+ //yVal = v[1] + (start - v[0]) * (next[1] - v[1]) / (next[0] - v[0]);
+ yVal = v[1] + (v[0] - start) * (next[1] - v[1]) / (next[0] - v[0]);
+ } else if (i == lastIndex && v[0] != end) {
+ var last = allPoints[parseInt(i - 1)];
+ yVal = last[1] + (end - last[0]) * (v[1] - last[1]) / (v[0] - last[0]);
+ } else {
+ yVal = v[1];
+ }
+ if (scaled) xVal = regionToAbsolute(xVal);
+ output.push([xVal, yVal]);
+
+ }
+ return {points: output, indexes: [firstIndex, lastIndex]};
+ }
+
+ function getIndex(point) {
+ for (var i = 0; i < points.length; i ++) {
+ if (points[i][0] == point[0] && points[i][1] == point[1]) {
+ return i;
+ }
+ }
+ }
+
+
+ function getDuration() {
+ if (typeof(duration) == "function") {
+ return duration();
+ } else {
+ return duration;
+ }
+ }
+
+ var redrawing = false;
+ this.redraw = function() {
+ if (redrawing) return;
+ redrawing = true;
+ build();
+ redraw();
+ redrawing = false;
+ };
+
+ function setRangePoints() {
+ /*
+ if (points.length == rawPoints.length) {
+ //rawPoints.length = 0;
+ for (var i in points) {
+ //rawPoints[i] = [regionToAbsolute(points[i][0]), points[i][1]];
+ }
+ }*/
+ var res = interpolateRange(true);
+ pointRange = res.indexes;
+ points.length = 0;
+ circlePoints.length = 0;
+ for (let i in res.points) {
+ points.push(res.points[i]);
+ if ((region[0] == 0 && region[1] == 1)
+ || ((i != 0 || region[0] == 0) && (i != res.points.length - 1 || region[1] == 1)))
+ {
+ circlePoints.push(res.points[i]);
+ }
+ }
+ }
+
+ this.setRange = function(start, end) {
+ if (start != null) region[0] = start;
+ if (end != null) region[1] = end;
+ self.redraw();
+ };
+
+ this.setYScale = function(min, max) { // TODO unused
+ if (!min && !max) {
+ yScale = [constraints[0], constraints[1]];
+ }
+ };
+
+ this.setDuration = function(val) {
+ duration = val;
+ };
+
+ this.setConstraints = function(val) {
+ constraints = val;
+ }
+
+ function calculateValue(xy, asDuration) {
+ var x = xy[0];
+ if (asDuration) {
+ x *= getDuration();
+ }
+ var y = ((constraints[1] - constraints[0]) * xy[1]) + constraints[0];
+ return [x, y];
+ }
+
+ this.getData = function() {
+ var output = [];
+ var val;
+ var allPoints = rawPoints;
+ for (var p of allPoints) {
+ val = calculateValue(p, true);
+ output.push([Math.round(val[0] * 1000) / 1000, Math.round(val[1] * 1000) / 1000]);
+ }
+ return output;
+ };
+
+ this.getLinsegData = function(start, end, nullOnEmpty) {
+ if (nullOnEmpty && rawPoints.length == 2) return;
+ var duration = getDuration(); //(end - start) * getDuration(); // IF we are having dynamic area view
+ var rounding = 10000;
+ var output = [];
+ var lastTime = 0;
+ var time;
+ var lastIndex;
+ var firstIndex;
+ var lastIndex;
+ var allPoints = rawPoints;
+
+ for (var i in allPoints) {
+ var x = allPoints[i][0];
+ if (x <= start) {
+ firstIndex = parseInt(i);
+ }
+ }
+ for (var i = parseInt(allPoints.length - 1); i > firstIndex; i--) {
+ var x = allPoints[i][0];
+ if (x >= end) {
+ lastIndex = i;
+ }
+ }
+ for (var i = firstIndex; i <= lastIndex; i++) {
+ var v = calculateValue(allPoints[i], false);
+ if (i != firstIndex) {
+
+ time = (((i == lastIndex) ? end : v[0]) - start) * duration;
+ output.push((Math.round((time - lastTime) * rounding)) / rounding);
+ lastTime = time;
+ }
+
+ if (i == firstIndex && v[0] != start) {
+ var next = calculateValue(allPoints[parseInt(i + 1)], false);
+ //var interpVal = v[1] + (v[0] - start) * (next[1] - v[1]) / (next[0] - v[0]);
+ var interpVal = v[1] + (start - v[0]) * (next[1] - v[1]) / (next[0] - v[0]);
+ output.push(Math.round(interpVal * rounding) / rounding);
+ } else if (i == lastIndex && v[0] != end) {
+ var last = calculateValue(allPoints[parseInt(i - 1)], false);
+
+ var interpVal = last[1] + (end - last[0]) * (v[1] - last[1]) / (v[0] - last[0]);
+ //var interpVal = last[1] + (last[0] - end) * (v[1] - last[1]) / (v[0] - last[0]);
+ output.push(Math.round(interpVal * rounding) / rounding);
+ } else {
+ output.push(Math.round(v[1] * rounding) / rounding);
+ }
+
+ }
+ return output.join(",");
+ }
+
+ function getLabel(d) {
+ var val = calculateValue([absoluteToRegion(d[0]), d[1]], true);
+ var label = (Math.round(val[0] * 100) / 100) + "s<br/>" + (Math.round(val[1] * 1000) / 1000);
+ if (name) {
+ label = name + "<br/>" + label;
+ }
+ return label;
+ }
+
+ function redraw() {
+ setRangePoints();
+ path.datum(self.displayPoints);
+ svg.select("path").attr("d", line);
+ const circle = svg.selectAll("g").data(circlePoints, function(point){
+ return [point[0] * self.width, (1 - point[1]) * self.height];
+ });
+ circle.enter().append("g").call(
+ g => g.append("circle").attr("r", 0).attr("stroke", colour).attr("stroke-width", 1).attr("r", 7)
+ ).merge(circle).attr("transform", function(d){
+ return "translate(" + (d[0] * self.width) + "," + ((1 - d[1]) * self.height) + ")";
+ }).select("circle:last-child").attr("fill", function(d) {
+ if (selected && d[0] == selected[0] && d[1] == selected[1]) {
+ return "#000000";
+ } else {
+ return colour;
+ }
+ }).on("mouseover", function(event, d) {
+ twirl.tooltip.show(event, getLabel(d), colour);
+ }).on("mouseout", function(event) {
+ twirl.tooltip.hide();
+ }).on("dblclick", function(event, d) {
+ return; // TODO: not working properly particularly when zoomed
+ if (!window.twirl) return;
+ var index = getIndex(d);
+ var duration = getDuration();
+ console.log(d, regionToAbsolute(d[0]));
+ var minTime = ((points[index - 1]) ? absoluteToRegion(points[index - 1] + 0.00001) : 0) * duration;
+ var maxTime = ((points[index + 1]) ? absoluteToRegion(points[index + 1] - 0.00001) : 1) * duration;
+ var el = $("<div />");
+ var tb = $("<tbody />");
+ $("<table />").append(tb).appendTo(el);
+ var tpTime = new twirl.transform.Parameter({
+ host: null,
+ definition: {
+ name: "Time",
+ min: minTime,
+ max: maxTime,
+ dfault: d[0]
+ }
+ });
+ var tpValue = new twirl.transform.Parameter({
+ host: null,
+ definition: {
+ name: name,
+ min: constraints[0],
+ max: constraints[1],
+ dfault: d[1]
+ }
+ });
+
+ tb.append(tpTime.getElementRow(true)).append(tpValue.getElementRow(true));
+ twirl.prompt.show(el, function(){
+ d[0] = regionToAbsolute(tpTime.getValue())
+ d[1] = tpValue.getValue();
+ self.changed = true;
+ });
+ //d[0] = 0.4; d[1] = 0.4;
+ });
+ circle.exit().remove();
+ }
+
+ function build() {
+ line.curve(d3.curveLinear);
+ if (path) {
+ path.remove();
+ delete path;
+ }
+ if (svg) {
+ svg.remove();
+ delete svg;
+ }
+ svg = d3.select(targetName).append("svg").attr("width", self.width).attr("height", self.height);
+ svg.append("rect").attr("width", self.width).attr("height", self.height).attr("fill", "none");
+ path = svg.append("path").attr("fill", "none").attr("stroke", colour).attr("line-width", "3px"); //.call(redraw); // .datum(points)
+
+ svg.call(
+ d3.drag().subject(function(event){
+ let pos = event.sourceEvent.target.__data__;
+ var index;
+ var y;
+ if (!pos) {
+ var index;
+ for (var i = 0; i < rawPoints.length; i++) {
+ if (event.x > regionToAbsolute(rawPoints[i][0]) * self.width && rawPoints[i + 1] && event.x < regionToAbsolute(rawPoints[i + 1][0]) * self.width) {
+ index = i + 1;
+ if (yStep) {
+ y = Math.round(event.y / yStep) * yStep;
+ } else {
+ y = event.y;
+ }
+ //pos = [absoluteToRegion(event.x / self.width), 1 - (y / self.height)];
+ pos = [absoluteToRegion(event.x / self.width), 1 - (y / self.height)];
+ break;
+ }
+ }
+ if (index) {
+ var tmp = rawPoints.slice(0, index);
+ tmp.push(pos);
+ var newPoints = tmp.concat(rawPoints.slice(index));
+ rawPoints.length = 0;
+ Array.prototype.push.apply(rawPoints, newPoints);
+ redraw();
+ }
+ } else if (pos[0] == 0) {
+ index = 0;
+ } else if (pos[0] == 1) {
+ index = rawPoints.length - 1;
+ } else {
+ var p0;
+ var p1;
+ pos[0] = absoluteToRegion(pos[0]);
+ for (var p = 0; p < rawPoints.length; p++) {
+ p1 = (rawPoints[p + 1]) ? rawPoints[p + 1][0] : 1;
+ if (pos[0] != rawPoints[p][0]) {
+ p0 = rawPoints[p][0];
+ } else if (rawPoints[p + 1] && pos[0] == rawPoints[p + 1][0]) {
+ continue;
+ }
+
+ if (pos[0] > p0 && pos[0] < p1) {
+ index = p;
+ break;
+ }
+ }
+ }
+ return {pos: pos, index: index};
+ }).on("start", function(event) {
+ selected = event.subject.pos;
+ redraw();
+ }).on("drag", function(event) {
+ if (!event.subject) return;
+ if (!event.subject.hasOwnProperty("index")) return;
+ self.changed = true;
+ var val;
+ var pos;
+ if (event.subject.index != 0 && event.subject.index != rawPoints.length - 1) {
+ if (rawPoints[event.subject.index - 1] && event.x < regionToAbsolute(rawPoints[event.subject.index - 1][0]) * self.width) {
+ pos = rawPoints[event.subject.index - 1][0] + 0.00001;
+ } else if (rawPoints[event.subject.index - 1] && event.x > regionToAbsolute(rawPoints[event.subject.index + 1][0]) * self.width) {
+ pos = rawPoints[event.subject.index + 1][0] - 0.00001;
+ } else {
+ pos = absoluteToRegion(event.x / self.width);
+ }
+
+ pos = Math.max(0, Math.min(1, pos));
+ event.subject.pos[0] = pos;
+ }
+ if (yStep) {
+ val = Math.round(event.y / yStep) * yStep;
+ } else {
+ val = event.y;
+ }
+ val = 1 - (val / self.height);
+ event.subject.pos[1] = Math.max(0, Math.min(1, val));
+ rawPoints[event.subject.index][0] = event.subject.pos[0];
+ rawPoints[event.subject.index][1] = event.subject.pos[1];
+ redraw();
+ })
+ );
+ svg.node().focus();
+ }
+
+ d3.select(window).on("keydown", function(event){
+ if (!selected) return;
+ switch (event.key) {
+ case "Backspace":
+ case "Delete": {
+ event.preventDefault();
+ var i = rawPoints.indexOf(selected);
+ if (i != 0 && i != points.length - 1) {
+ rawPoints.splice(i, 1);
+ selected = rawPoints.length ? rawPoints[i > 0 ? i - 1 : 0] : null;
+ self.changed = true;
+ redraw();
+ }
+ }
+ }
+ });
+
+ build()
+ self.setRange(0, 1);
+};
diff --git a/site/app/base/waveform.js b/site/app/base/waveform.js
new file mode 100644
index 0000000..c6276f1
--- /dev/null
+++ b/site/app/base/waveform.js
@@ -0,0 +1,1076 @@
+var Waveform = function(options) {
+ var self = this;
+ var elTarget;
+ if (typeof(options.target) == "string") {
+ elTarget = $("#" + options.target);
+ } else {
+ elTarget = options.target;
+ }
+ var elContainerOuter = $("<div />").css({position: "absolute", width: "100%", height: "100%"}).appendTo(elTarget);
+ var elContainer = $("<div />").css({cursor: "text", position: "absolute", width: "100%", bottom: "0px", top: "0px", left: "0px"}).appendTo(elContainerOuter);
+ var elTip = $("<div />").css({position: "fixed", "font-size": "var(--fontSizeLarge)", color: "var(--fgColor1)", "text-shadow": "0px 0px 5px var(--bgColor1)", "z-index": 12}).appendTo(elContainer);
+ var elCanvases = [];
+ var elTimeBar;
+ var elPlayhead;
+ var elCrossfades = [];
+ var elMarkersRunner;
+ var crossFadeRatios = [];
+ var selected = [0, 1, -1];
+ var onSelects = [];
+ var channels;
+ var wavedata = null;
+ var regionStart = 0;
+ var regionEnd = 1;
+ var duration = 1;
+ var stereoSelectRatio = 0.2
+ var dragData = {};
+ this.markers = [];
+ var selectionMarkers = [];
+ var hasContent = false;
+ this.onRegionChange = null;
+
+ this.getRegion = function() {
+ return [regionStart, regionEnd];
+ };
+
+ function absPosToDisplayPos(x) {
+ var pos = (x - regionStart) / (regionEnd - regionStart);
+ return (pos >= 0 && pos <= 1) ? pos : null;
+ }
+
+ function displayPosToAbsPos(x) {
+ return ((regionEnd - regionStart) * x) + regionStart;
+ }
+
+ function getDisplaySelected() {
+ var hasSelection = (selected[0] != selected[1]);
+ var start = absPosToDisplayPos(selected[0]);
+ //if (start == null) start = 0;
+ var end = absPosToDisplayPos(selected[1]);
+ //if (end == null) end = 1;
+
+ if (start && !end) end = 1;
+ if (!start && end) start = 0;
+ if (!start && !end) {
+ if (hasSelection) {
+ start = 0;
+ end = 1;
+ } else {
+ start = end = 0;
+ }
+ }
+ return [
+ start,
+ end,
+ selected[2]
+ ];
+ }
+
+ if (!options) {
+ options = {};
+ }
+
+ if (options.hasOwnProperty("onSelect")) {
+ onSelects.push(options.onSelect);
+ }
+
+ if (options.hasOwnProperty("duration")) {
+ duration = options.duration;
+ }
+
+ if (!options.hasOwnProperty("latencyCorrection")) {
+ options.latencyCorrection = 0;
+ }
+
+ if (!options.hasOwnProperty("showcrossfades")) {
+ options.showcrossfades = false;
+ }
+
+ if (!options.hasOwnProperty("showGrid")) {
+ options.showGrid = true;
+ }
+
+ if (!options.hasOwnProperty("drawStyle")) {
+ options.drawStyle = "bar"; //"linebar";
+ }
+
+ if (!options.hasOwnProperty("allowSelect")) {
+ options.allowSelect = true;
+ }
+
+ if (options.allowSelect) {
+ elContainer.mousedown(mouseDownHandler).dblclick(mouseDoubleClickHandler).on("mousemove", function(e) {
+ if (channels != 2) return;
+ var ratio = (e.clientY - elContainer.offset().top) / parseFloat(elContainer.height());
+ var shown = false;
+ var text;
+ if (ratio > 1 - stereoSelectRatio) {
+ shown = true;
+ text = "R";
+ } else if (ratio < stereoSelectRatio) {
+ shown = true;
+ text = "L";
+ }
+ if (shown) {
+ elTip.show().css({left: (e.clientX + 10) + "px", top: (e.clientY - 5) + "px"}).text(text);
+ } else {
+ elTip.hide();
+ }
+ }).on("mouseleave", function(){
+ elTip.hide();
+ });
+ }
+
+ var elCover = $("<div />").css({position: "absolute", width: "100%", height: "100%", "background-color": "var(--waveformCoverColor)", opacity: "var(--waveformCoverOpacity)", display: "none", "z-index": 10}).appendTo(elContainerOuter);
+
+ var Marker = function(data, identifier) {
+ var mself = this;
+ var elMarkers;
+ var headerWidth = 14;
+ var headerHeight = 15;
+ var elLine;
+ var elHeader;
+ var drag
+ var position;
+ var onMarkerChange;
+
+ Object.defineProperty(this, "position", {
+ get: function() { return position; },
+ set: function(x) {
+ setPosition(x);
+ }
+ });
+
+ Object.defineProperty(this, "identifier", {
+ get: function() { return identifier; },
+ set: function(x) {
+ identifier = x;
+ }
+ });
+
+ if (typeof(data) == "number") {
+ position = data;
+ } else if (data.preset) {
+ if (data.preset == "selectionstart") {
+ identifier = "";
+ selectionMarkers[0] = mself;
+ onMarkerChange = function() {
+ if (position > selectionMarkers[1].position) {
+ self.alterSelection(selectionMarkers[1].position, position, null, true);
+ } else {
+ self.alterSelection(position, null, null, true);
+ }
+ };
+ onSelects.push(function(start, regionStart, end) {
+ setPosition(start);
+ });
+ } else if (data.preset == "selectionend") {
+ identifier = "";
+ selectionMarkers[1] = mself;
+ onMarkerChange = function() {
+ if (position < selectionMarkers[0].position) {
+ self.alterSelection(position, selectionMarkers[0].position, null, true);
+ } else {
+ self.alterSelection(null, position, null, true);
+ }
+ };
+ onSelects.push(function(start, regionStart, end) {
+ setPosition(end);
+ });
+ }
+ } else {
+ position = data.position;
+ if (data.hasOwnProperty("identifier")) {
+ identifier = data.identifier;
+ }
+
+ if (data.hasOwnProperty("onChange")) {
+ onMarkerChange = data.onChange;
+ }
+
+ }
+
+ function setPosition(displayPos) {
+ if (!hasContent) return;
+ if (displayPos != null) {
+ position = displayPosToAbsPos(displayPos);
+ } else {
+ displayPos = absPosToDisplayPos(position);
+ }
+ if (!elLine) {
+ elLine = $("<div />").appendTo(elContainer).addClass("waveform_marker").css({position: "absolute",
+ height: "100%", top: "0px", width: "2px", "background-color": "var(--waveformMarkerColor)", "z-index": 11
+ });
+ }
+ if (!elHeader) {
+ elHeader = $("<div />").appendTo(elMarkersRunner).addClass("waveform_marker").css({position: "absolute",
+ height: "100%", top: "0px", width: headerWidth + "px", "background-color": "var(--waveformMarkerColor)", "border-bottom-left-radius": headerWidth + "px", "border-bottom-right-radius": headerWidth + "px", "z-index": 8,
+ "text-align": "center", "font-family": "sans-serif, Arial", "font-size": "8pt", "font-weight": "bold", cursor: "move", "user-select": "none"
+ }).mousedown(handleMousedown);
+ }
+
+ if (displayPos == null) {
+ elLine.hide();
+ elHeader.hide();
+ } else {
+ var posx = elContainer.width() * displayPos;
+ elLine.show().css("left", posx + "px");
+ posx = (posx - (headerWidth / 2)) + 1;
+ elHeader.show().css("left", posx + "px").text(identifier);
+ }
+ }
+
+ this.redraw = function() {
+ if (!hasContent) return;
+ if (position < regionStart || position > regionEnd) {
+ if (elLine) elLine.hide();
+ if (elHeader) elHeader.hide();
+ } else {
+ setPosition();
+ elLine.show();
+ elHeader.show();
+ }
+ }
+
+
+ function handleMousedown(e) {
+ if (!hasContent) return;
+ var pageX = e.pageX;
+ var offset = elMarkersRunner.offset();
+ var width = elMarkersRunner.width();
+
+ function handleDrag(e) {
+ var pos = ((e.pageX - pageX) + (pageX - offset.left)) / width;
+
+ if (pos <= 1 && pos >= 0) {
+ setPosition(pos);
+ if (onMarkerChange) {
+ onMarkerChange(pos);
+ }
+ }
+ }
+ function handleMouseUp(e) {
+ $("body").off("mousemove", handleDrag).off("mouseup", handleMouseUp);
+ }
+ $("body").on("mouseup", handleMouseUp).on("mousemove", handleDrag);
+ }
+
+ setPosition();
+ }; // end marker
+
+
+ if (options.hasOwnProperty("markers")) {
+ elContainer.css("top", "15px");
+ elMarkersRunner = $("<div />").appendTo(elContainerOuter).css({position: "absolute", width: "100%", height: "15px", top: "0px", left: "0px", "background-color": "var(--waveformMarkerRunnerColor)"});
+ if (typeof(options.markers) == "object") {
+ var id = 1;
+ for (let m of options.markers) {
+ self.markers.push(new Marker(m, id++));
+ }
+ }
+ }
+
+
+ if (options.timeBar) {
+ elContainer.css({overflow: "hidden", bottom: "20px"});
+ var elTimeBarOuter = $("<div />").appendTo(elContainerOuter).css({position: "absolute", width: "100%", height: "20px", bottom: "0px", left: "0px", "background-color": "var(--waveformTimeBarBgColor)"});
+ var elTimeBarIcons = $("<div />").appendTo(elTimeBarOuter).css({position: "absolute", width: "80px", height: "100%", bottom: "0px", left: "0px"});
+ var elTimeBarContainer = $("<div />").appendTo(elTimeBarOuter).css({position: "absolute", right: "0px", height: "100%", bottom: "0px", left: "80px", "background-color": "var(--waveformTimeBarBgColor)"}).click(handleTimeBarTrackClick);
+
+ elTimeBar = $("<div />").appendTo(elTimeBarContainer).css({position: "absolute", right: "0px", height: "16px", top: "2px", left: "0px", "background-color": "var(--waveformTimeBarFgColor)"}).mousedown(handleTimeBarMousedown);
+
+ elTimeBarIcons.append(twirl.createIcon({
+ label: "Zoom selection",
+ size: 20,
+ icon: "zoomSelection",
+ click: function() {
+ self.zoomSelection()
+ }
+ }).el);
+
+ elTimeBarIcons.append(twirl.createIcon({
+ label: "Zoom in",
+ size: 20,
+ icon: "zoomIn",
+ click: function() {
+ self.zoomIn()
+ }
+ }).el);
+
+ elTimeBarIcons.append(twirl.createIcon({
+ label: "Zoom out",
+ size: 20,
+ icon: "zoomOut",
+ click: function() {
+ self.zoomOut()
+ }
+ }).el);
+
+ elTimeBarIcons.append(twirl.createIcon({
+ label: "Show all",
+ size: 20,
+ icon: "showAll",
+ click: function() {
+ self.setRegion(0, 1);
+ }
+ }).el);
+
+
+ function setTimeBarPosition(displayLeft, displayRight, setRegion) {
+ if (displayLeft >= 0 && displayRight >= 0) {
+ elTimeBar.css({left: displayLeft, right: displayRight});
+ var w = elTimeBarContainer.width();
+ if (setRegion) {
+ regionStart = displayLeft / w;
+ regionEnd = 1 - (displayRight / w);
+ if (self.onRegionChange) {
+ self.onRegionChange([regionStart, regionEnd]);
+ }
+ }
+ }
+ }
+
+ function handleTimeBarTrackClick(event) {
+ var increment = 20;
+ var apos = event.pageX - elTimeBarContainer.offset().left;
+ var left = parseInt(elTimeBar.css("left"));
+ var right = parseInt(elTimeBar.css("right"));
+ var tbWidth = parseInt(elTimeBar.css("width"));
+ if (apos < left) {
+ left -= increment;
+ right += increment;
+ } else if (apos > left + tbWidth) {
+ left += increment;
+ right -= increment;
+ } else {
+ return;
+ }
+ setTimeBarPosition(left, right, true);
+ draw();
+ }
+
+ function handleTimeBarMousedown(e) {
+ if (!hasContent) return;
+ var pageX = e.pageX;
+ var offset = elTimeBarContainer.offset();
+ var cWidth = elTimeBarContainer.width();
+ var tbWidth = elTimeBar.width();
+ var sLeft = pageX - offset.left - parseInt(elTimeBar.css("left"));
+
+ function handleDrag(e) {
+ var left = ((e.pageX - pageX) + (pageX - offset.left));
+ left = left - sLeft;
+ var end = left + tbWidth;
+ var right = cWidth - end;
+ setTimeBarPosition(left, cWidth - end, true);
+ draw(4); //draw(15);
+
+ }
+
+ function handleMouseOut(e) {
+ handleMouseUp(e);
+ }
+
+ function handleMouseUp(e) {
+ $("body").off("mousemove", handleDrag).off("mouseup", handleMouseUp).off("mouseleave", handleMouseOut);
+ function ensureDraw() {
+ if (drawing) return setTimeout(ensureDraw, 20);
+ draw();
+ }
+ ensureDraw();
+ }
+ $("body")
+ .on("mouseup", handleMouseUp)
+ .on("mousemove", handleDrag)
+ .on("mouseleave", handleMouseOut);
+ }
+ }
+
+ this.getDuration = function() {
+ return duration;
+ };
+
+ this.destroy = function() {
+ elTarget.remove();
+ };
+
+ this.show = function() {
+ elTarget.show();
+ };
+
+ this.hide = function() {
+ elTarget.hide();
+ };
+
+ this.cover = function(state) {
+ if (state) {
+ elCover.show();
+ } else {
+ elCover.hide();/*
+ setTimeout(function() {
+ elCover.hide();
+ }, options.latencyCorrection);*/
+ }
+ };
+
+ this.setOptions = function(o) {
+ Object.assign(options, o);
+ };
+
+
+ function drawCrossFades() {
+ if (!hasContent) return;
+ if (!options.showcrossfades) return;
+ if (elCrossfades.length == 0) {
+ for (var x = 0; x < 2; x++) {
+ elCrossfades.push($("<div />").css({
+ position: "absolute",
+ width: "1px",
+ "z-index": 9,
+ "line-width": "1px",
+ "height": "var(--waveformCrossfadeWidth)",
+ "background-color": "var(--waveformCrossfadeLineColor)"
+ }).appendTo(elContainer));
+ }
+ }
+ var containerHeight = elContainer.height();
+ var containerWidth = elContainer.width();
+ var displaySelected = getDisplaySelected();
+
+
+ function drawCrossfade(index) {
+ var thickness = 1;
+ var ratio = crossFadeRatios[index];
+ if (ratio == 0) {
+ elCrossfades[index].hide();
+ }
+
+ if (index == 0) {
+ var x1 = displaySelected[0] * containerWidth;
+ var y1 = containerHeight;
+ var x2 = x1 + (ratio * ((displaySelected[1] - displaySelected[0]) * containerWidth));
+ var y2 = 0;
+ } else {
+ var x1 = displaySelected[1] * containerWidth;;
+ var y1 = containerHeight;
+ var x2 = x1 - (ratio * ((displaySelected[1] - displaySelected[0]) * containerWidth));
+ var y2 = 0;
+ }
+ var length = Math.sqrt(((x2-x1) * (x2-x1)) + ((y2-y1) * (y2-y1)));
+ var centrex = ((x1 + x2) / 2) - (length / 2);
+ var centrey = ((y1 + y2) / 2) - (thickness / 2);
+ var angle = Math.atan2((y1-y2),(x1-x2))*(180/Math.PI);
+ elCrossfades[index].show().css({transform: "rotate(" + angle + "deg)", left: centrex, top: centrey, width: length + "px"});
+ }
+ drawCrossfade(0);
+ drawCrossfade(1);
+
+ };
+
+ this.alterSelection = function(start, end, channel, noOnSelects) {
+ if (!hasContent) return;
+ if (start != null) {
+ selected[0] = start;
+ }
+ if (end != null) {
+ selected[1] = end;
+ }
+
+ var displaySelected = getDisplaySelected();
+
+ if (channel == null) {
+ channel = selected[2];
+ } else {
+ selected[2] = channel;
+ }
+
+ var elWidth = elContainer.width();
+ var left = displaySelected[0] * elWidth;
+ var width = (displaySelected[1] * elWidth) - left;
+
+ if (dragData.selection) {
+ dragData.selection.css({
+ left: left,
+ width: width
+ });
+ }
+
+ if (dragData.location) {
+ dragData.location.css({
+ left: left
+ });
+ }
+
+ if (!noOnSelects && onSelects) {
+ for (let onSelect of onSelects) {
+ onSelect(start, regionStart, end, regionEnd, self);
+ }
+ }
+ drawCrossFades();
+ }
+
+ this.setSelection = function(start, end, channel) {
+ if (!hasContent) return;
+ if (!end) {
+ end = start;
+ }
+ self.alterSelection(start, end, channel);
+ };
+
+
+ function selectionMade() {
+ if (!hasContent) return;
+ var cWidth = elContainer.width();
+ var left = parseFloat(dragData.selection.css("left"));
+ var width = parseFloat(dragData.selection.css("width"));
+ var start = left / cWidth;
+ var end = (left + width) / cWidth;
+
+ selected = [
+ displayPosToAbsPos(start),
+ displayPosToAbsPos(end),
+ dragData.channel
+ ];
+
+ if (onSelects) {
+ for (let onSelect of onSelects) {
+ onSelect(start, regionStart, end, regionEnd, self);
+ }
+ }
+ drawCrossFades();
+ }
+
+ function createSelectionArea(e, leftOverride, widthOverride) {
+ var left = (leftOverride != null ) ? leftOverride : e.pageX - dragData.offset.left;
+
+ var containerHeight = parseFloat(elContainer.height());
+ var yratio = (e.pageY - dragData.offset.top) / containerHeight;
+ var heightmult = 1;
+ var topaugment = 0;
+ dragData.channel = -1;
+ if (channels == 2) {
+ if (yratio > 1 - stereoSelectRatio) {
+ heightmult = 0.5;
+ topaugment = containerHeight * 0.5;
+ dragData.channel = 1;
+ } else if (yratio < stereoSelectRatio) {
+ heightmult = 0.5;
+ dragData.channel = 0;
+ }
+ }
+ var width = (widthOverride != null) ? widthOverride : "0px";
+
+ if (dragData && dragData.selection) {
+ dragData.selection.remove();
+ }
+
+ dragData.selection = $("<div />")
+ .addClass("waveformSelection")
+ .css({
+ left: left,
+ top: topaugment,
+ position: "absolute",
+ opacity: "var(--waveformSelectOpacity)",
+ backgroundColor: "var(--waveformSelectColor)",
+ height: (100 * heightmult) + "%", //containerHeight * heightmult,
+ width: width,
+ "pointer-events": "none",
+ "z-index": 10
+ }).appendTo(elContainer);
+
+ if (dragData && dragData.location) {
+ dragData.location.remove();
+ }
+ dragData.location = $("<div />")
+ .addClass("waveformLocation")
+ .css({
+ left: left,
+ top: 0,
+ position: "absolute",
+ opacity: "var(--waveformSelectOpacity)",
+ backgroundColor: "var(--waveformLocationColor)",
+ width: "0px",
+ border: "1px solid black",
+ height: "100%", //elContainer.height(),
+ "pointer-events": "none",
+ "z-index": 11
+ }).appendTo(elContainer);
+ }
+
+ function mouseDoubleClickHandler(e) {
+ if (!hasContent) return;
+ dragData.pageX = 0;
+ dragData.offset.left = 0;
+ //dragData.pageXend = elContainer.width(); // TODO redundant
+ createSelectionArea(e, 0, elContainer.width());
+ selectionMade();
+ }
+
+ function mouseDownHandler(e) {
+ if (!hasContent) return;
+ var tolerancePx = 4;
+ if (!e.shiftKey) {
+ dragData.pageX = e.pageX;
+ dragData.pageY = e.pageY;
+ //dragData.pageXend = 0; // TODO redundant
+ dragData.elem = this;
+ dragData.offset = $(this).offset();
+ createSelectionArea(e);
+ dragData.shifted = false;
+ } else {
+ dragData.shifted = true;
+ handleDrag(e);
+ }
+
+ var elWidth = elContainer.width();
+ /*if (options.showcrossfades && elCrossfades.length != 0) {
+ elCrossfades[0].hide();
+ elCrossfades[1].hide();
+ }*/ // TODO redundant
+
+ function handleDrag(e) {
+ var origin = dragData.pageX - dragData.offset.left;
+ var dragPos = (e.pageX - dragData.pageX);
+ if (dragPos >= 0) {
+ if (dragPos + origin > elWidth) {
+ dragPos = elWidth;
+ }
+ if (dragPos <= tolerancePx) dragPos = 0;
+ dragData.selection.css({
+ left: origin + "px",
+ width: dragPos + "px"
+ });
+ } else {
+ var dpos = dragPos + origin;
+ var left;
+ var width;
+ if (dpos <= 0) {
+ left = 0;
+ width = origin;
+ } else {
+ left = dpos;
+ width = Math.abs(dragPos);
+ }
+ if (width <= tolerancePx) width = 0;
+ dragData.selection.css({
+ left: left + "px",
+ width: width + "px"
+ });
+ }
+ }
+
+ function handleMouseUp(e) {
+ $("body")
+ .off("mousemove", handleDrag)
+ .off("mouseup", handleMouseUp)
+ .off("mouseleave", handleMouseOut);
+ if (!hasContent) return;
+ //dragData.pageXend = e.pageX; // TODO redundant
+ selectionMade();
+ }
+
+ function handleMouseOut(e) {
+ if (e.clientX > $("body").width()) {
+ var left = parseFloat(dragData.selection.css("left"));
+ dragData.selection.css({width: (elContainer.width() - left) + "px"});
+ }
+ handleMouseUp(e);
+ }
+
+ $("body")
+ .on("mouseup", handleMouseUp)
+ .on("mousemove", handleDrag)
+ .on("mouseleave", handleMouseOut);
+ }
+
+ var lastDrawOneValueXpos;
+
+ this.resetDrawOneValue = function() {
+ lastDrawOneValueXpos = null;
+ };
+
+ function drawOneValue(x, values) {
+ var style = getComputedStyle(document.body);
+ var bgColour = (options.hasOwnProperty("bgColor")) ? options.bgColour : style.getPropertyValue("--waveformBgColor");
+ var fgColour = (options.hasOwnProperty("fgColor")) ? options.fgColour : style.getPropertyValue("--waveformFgColor");
+
+ function drawCanvas(canvasIndex, val) {
+ if (!val) return;
+ var elCanvas = elCanvases[canvasIndex];
+ let width = elCanvas.width();
+ let height = elCanvas.height();
+ let ctx = elCanvas[0].getContext("2d");
+ var lineWidth = 1;
+ if (lastDrawOneValueXpos) {
+ lineWidth = x - lastDrawOneValueXpos;
+ ctx.fillStyle = bgColour;
+ ctx.fillRect(lastDrawOneValueXpos, 0, lineWidth, height);
+ ctx.strokeStyle = fgColour;
+ }
+ lastDrawOneValueXpos = x;
+ ctx.lineWidth = lineWidth;
+ ctx.lineCap = "round";
+ ctx.fillStyle = fgColour;
+
+ ctx.beginPath();
+ val = (val + 1) * 0.5;
+ var posY0 = (val * height);
+ var posY1 = (height - posY0);
+ ctx.moveTo(x, posY0);
+ ctx.lineTo(x, posY1);
+ ctx.closePath();
+ ctx.stroke();
+ }
+
+ drawCanvas(0, values[0]);
+ if (values.length == 2) {
+ drawCanvas(1, values[1]);
+ }
+ }
+
+ this.movePlayhead = function(xratio, monitorValues) {
+ if (!hasContent) return;
+ setTimeout(function() {
+ var displayPos = absPosToDisplayPos(xratio);
+ if (!displayPos || displayPos < 0 || displayPos > 1) {
+ if (elPlayhead) {
+ elPlayhead.remove();
+ elPlayhead = null;
+ }
+ return;
+ }
+ var width = elContainer.width();
+ var left = Math.min(width * displayPos, width - 1);
+
+ if (monitorValues) {
+ drawOneValue(left, monitorValues);
+ }
+
+ if (!elPlayhead) {
+ elPlayhead = $("<div />")
+ .addClass("waveformPlayhead")
+ .css({
+ left: left,
+ top: 0,
+ position: "absolute",
+ backgroundColor: "var(--waveformPlayheadColor)",
+ width: "0px",
+ border: "1px solid var(--waveformPlayheadColor)",
+ height: "100%",
+ "pointer-events": "none",
+ "z-index": 13
+ }).appendTo(elContainer);
+ } else {
+ elPlayhead.css({left: left + "px"});
+ }
+ }, options.latencyCorrection);
+ };
+
+ var drawing = false;
+ async function draw(efficiency) {
+ if (!hasContent || !wavedata || wavedata.length == 0) return;
+ if (drawing) return;
+ drawing = true;
+
+ if (!efficiency) efficiency = 1;
+
+ if (elCanvases.length == 0) {
+ for (var i in wavedata) {
+ var height;
+ var top;
+ if (wavedata.length == 1) {
+ top = "0px";
+ height = "100%";
+ } else {
+ height = "50%";
+ if (i == 0) {
+ top = "0px";
+ } else {
+ top = "50%";
+ }
+ }
+ elCanvases[i] = $("<canvas />").css({position: "absolute", width: "100%", height: height, top: top, left: "0px"}).addClass("waveform_canvas").appendTo(elContainer);
+ }
+ }
+
+ for (m of self.markers) {
+ m.redraw();
+ }
+ self.alterSelection(null, null, null, true); // redraw selection and xfades
+
+
+ async function drawCanvas(canvasIndex) {
+ var elCanvas = elCanvases[canvasIndex]; //.empty();
+ elCanvas[0].width = elContainer.width();
+ elCanvas[0].height = elContainer.height() / wavedata.length;
+ let width = elCanvas.width();
+ let height = elCanvas.height();
+ let ctx = elCanvas[0].getContext("2d");
+ var wavelength;
+ var access;
+ if (typeof(wavedata[canvasIndex]) == "function") {
+ wavelength = await wavedata[canvasIndex](-1);
+ access = wavedata[canvasIndex];
+ } else {
+ wavelength = wavedata[0].length;
+ access = async function(index) {
+ return wavedata[0][index];
+ };
+ }
+
+ var start = Math.round(regionStart * wavelength);
+ var end = Math.round(regionEnd * wavelength);
+ var regionLength = Math.round((regionEnd - regionStart) * wavelength);
+ var indexStep = (regionLength / width) * efficiency;
+ var widthStep = (indexStep < 1) ? parseInt(width / regionLength) : 1;
+ widthStep = parseInt(Math.max(1, widthStep) * efficiency);
+ indexStep = parseInt(indexStep);
+
+ var style = getComputedStyle(document.body);
+ var bgColour = (options.hasOwnProperty("bgColor")) ? options.bgColor : style.getPropertyValue("--waveformBgColor");
+ var fgColour = (options.hasOwnProperty("fgColor")) ? options.fgColor : style.getPropertyValue("--waveformFgColor");
+ var val;
+ ctx.fillStyle = bgColour;
+ ctx.fillRect(0, 0, width, height);
+ ctx.strokeStyle = fgColour;
+
+ if (options.drawStyle == "line") {
+ ctx.lineCap = "butt";
+ ctx.lineWidth = 1;
+ ctx.beginPath();
+ ctx.moveTo(0, height * 0.5);
+ for (var x = 0, i = start; x < width; x+=widthStep, i+=indexStep) {
+ val = await access(i);
+ val = (val + 1) * 0.5;
+ ctx.lineTo(x, (val * height) );
+ }
+ ctx.closePath();
+ ctx.stroke();
+ } else if (options.drawStyle == "bar") {
+ ctx.lineWidth = widthStep;
+ ctx.lineCap = "round";
+ ctx.fillStyle = fgColour;
+ ctx.beginPath();
+
+ for (var x = 0, i = start; x < width; x+=widthStep, i+=indexStep) {
+ val = await access(i);
+ val = (val + 1) * 0.5;
+ var posY0 = (val * height);
+ var posY1 = (height - posY0);
+ ctx.moveTo(x, posY0);
+ ctx.lineTo(x, posY1);
+ }
+ ctx.closePath();
+ ctx.stroke();
+ } else if (options.drawStyle == "linebar") {
+ ctx.lineWidth = 1;
+ ctx.fillStyle = fgColour;
+ ctx.lineCap = "butt";
+
+ ctx.beginPath();
+ ctx.moveTo(0, height * 0.5);
+ xindex = 0;
+
+ var vals = [];
+ for (var x = 0, i = start; x < width; x+=widthStep, i+=indexStep) {
+ val = await access(i);
+ val = (val + 1) * 0.5;
+ vals[i] = val;
+ var posY0 = (val * height);
+ ctx.lineTo(x, posY0);
+ }
+
+ ctx.lineTo(width, (height * 0.5));
+
+ for ( ; x >= 0; x-=widthStep, i-=indexStep) {
+ var posY1 = (height - (vals[i] * height));
+ ctx.lineTo(x, posY1);
+ }
+
+ ctx.lineTo(0, height * 0.5);
+ ctx.fill();
+ ctx.closePath();
+ ctx.stroke();
+ } else {
+ console.log("Invalid drawStyle");
+ } // end drawing waveform
+
+ if (options.showGrid){
+ var lineSpacing = 50;
+ var lineNum = width / lineSpacing;
+ var position;
+
+ ctx.lineCap = "butt";
+ ctx.lineWidth = 1;
+ for (var x = 0; x < lineNum; x++) {
+ ctx.beginPath();
+ var left = x * lineSpacing;
+ ctx.strokeStyle = ctx.fillStyle = style.getPropertyValue("--waveformGridColor");
+ ctx.moveTo(left, 0);
+ ctx.lineTo(left, height);
+ ctx.stroke();
+
+ if ((canvasIndex == 0 && elCanvases.length == 1) ||
+ (canvasIndex == 1 && elCanvases.length == 2)) {
+
+ ctx.strokeStyle = ctx.fillStyle = style.getPropertyValue("--waveformGridTextColor");
+ positionLabel = duration * (regionStart + (((regionEnd - regionStart) / lineNum) * x));
+ ctx.fillText(Math.round(positionLabel * 1000 ) / 1000, left + 2, height - 2);
+ }
+ }
+
+ } // if showgrid
+
+ if (canvasIndex == 0 && elCanvases.length == 2) {
+ ctx.beginPath();
+ ctx.lineCap = "butt";
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = style.getPropertyValue("--waveformChannelLineColor");
+ ctx.fillStyle = ctx.strokeStyle;
+ ctx.moveTo(0, height - 1);
+ ctx.lineTo(width, height - 1);
+ ctx.closePath();
+ ctx.stroke();
+ }
+ } // end drawCanvas
+
+ var drawCompletes = [];
+ for (let i in elCanvases) {
+ drawCompletes.push(false);
+ drawCanvas(i).then(function(){
+ drawCompletes[i] = true;
+ for (let c of drawCompletes) {
+ if (!c) {
+ return;
+ }
+ }
+ drawing = false;
+ });
+ }
+ }
+
+ this.redraw = function() {
+ draw();
+ };
+
+ Object.defineProperty(this, "crossFadeInRatio", {
+ get: function() { return crossFadeRatios[0]; },
+ set: function(v) {
+ crossFadeRatios[0] = v;
+ drawCrossFades();
+ }
+ });
+
+ Object.defineProperty(this, "crossFadeOutRatio", {
+ get: function() { return crossFadeRatios[1]; },
+ set: function(v) {
+ crossFadeRatios[1] = v;
+ drawCrossFades();
+ }
+ });
+
+ Object.defineProperty(this, "selected", {
+ get: function() { return selected; },
+ set: function(x) { }
+ });
+
+ Object.defineProperty(this, "duration", {
+ get: function() { return duration; },
+ set: function(x) { }
+ });
+
+ Object.defineProperty(this, "channels", {
+ get: function() { return channels; },
+ set: function(x) { }
+ });
+
+ Object.defineProperty(this, "regionStart", {
+ get: function() { return regionStart; },
+ set: function(x) {
+ self.setRegion(x, regionEnd);
+ }
+ });
+
+ Object.defineProperty(this, "showGrid", {
+ get: function() { return options.showGrid; },
+ set: function(x) {
+ options.showGrid = x;
+ draw();
+ }
+ });
+
+ Object.defineProperty(this, "regionEnd", {
+ get: function() { return regionEnd; },
+ set: function(x) {
+ self.setRegion(regionStart, x);
+ }
+ });
+
+
+ this.zoomSelection = function() {
+ if (!dragData || !dragData.location) return;
+ dragData.location.css("left", "0px");
+ self.setRegion(selected[0], selected[1]);
+ };
+
+ this.zoomOut = function() {
+ self.setRegion(regionStart * 0.9, regionEnd * 1.1);
+ };
+
+ this.zoomIn = function() {
+ self.setRegion(regionStart * 1.1, regionEnd * 0.9);
+ };
+
+ this.setRegion = function(start, end) {
+ if (!hasContent) return;
+ if (end <= start) return;
+ if (end > 1) end = 1;
+ if (start < 0) start = 0;
+ regionStart = start;
+ regionEnd = end;
+ draw();
+ if (elTimeBar) {
+ var elTbcw = elTimeBarContainer.width();
+ elTimeBar.css({left: (regionStart * elTbcw) + "px", right: ((1 - regionEnd) * elTbcw) + "px"});
+ }
+ if (self.onRegionChange) {
+ self.onRegionChange([regionStart, regionEnd]);
+ }
+ };
+
+ this.setData = function(data, nduration, noRedraw) {
+ hasContent = true;
+ wavedata = data; // should be array
+ if (channels != data.length) {
+ for (var i in elCanvases) {
+ elCanvases[i].remove();
+ }
+ delete elCanvases[i];
+ elCanvases.length = 0;
+ }
+ channels = data.length;
+ duration = (nduration) ? nduration : 1;
+ if (!noRedraw) {
+ draw();
+ }
+ };
+
+ var lastSize = [];
+ function handleResize() {
+ if (!hasContent) return;
+ var width = elContainer.width();
+ var height = elContainer.height();
+
+ if (lastSize[0] = width && lastSize[1] == height) return;
+ lastSize = [width, height];
+
+ if (dragData && dragData.selection) {
+ selectionMade();
+ }
+ draw();
+ }
+
+ if (!options.noResizeHandler) {
+ window.addEventListener("resize", handleResize);
+ }
+}
diff --git a/site/app/clipart/clipart.csd b/site/app/clipart/clipart.csd
new file mode 100644
index 0000000..570329a
--- /dev/null
+++ b/site/app/clipart/clipart.csd
@@ -0,0 +1,63 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "wavetables.udo"
+
+opcode oscbank, a, kkkkiiiiio
+ kfreq, kamp, kfreqstepmult, kampstepmult, ibands, iwidthamp, icentreamp, ihalfing, imaxrandrate, iband xin
+
+ aosc oscil kamp, min:k(kfreq, sr / 2)
+ aosc pdhalfy aosc, ihalfing
+ kwidth = abs:k(oscil:k(iwidthamp, random(0.1, imaxrandrate), gifnSine, random(0, 1)))
+ kcentre = abs:k(oscil:k(icentreamp, random(0.1, imaxrandrate), gifnSine, random(0, 1)))
+ aosc pdclip aosc, kwidth, kcentre
+
+ if (iband < ibands) then
+ arecurse oscbank kfreq * kfreqstepmult, kamp * kampstepmult, kfreqstepmult, kampstepmult, ibands, iwidthamp, icentreamp, ihalfing, imaxrandrate, iband + 1
+ aosc += arecurse
+ endif
+ xout aosc
+endop
+
+
+instr playback
+ ixstart = p4
+ iystart = p5
+ ixend = p6
+ iyend = p7
+ icolour = p8
+ ivariation = p9
+ iwidth = p10
+ iheight = p11
+
+ istartfreq = (ixstart * 100) + 20
+ iendfreq = (ixend * 100) + 20
+ kfreq linseg istartfreq, p3, iendfreq
+
+ istartfstep = iystart + 1.3
+ iendfstep = iyend + 1.3
+ kfreqstepmult linseg istartfstep, p3, iendfstep
+
+ aamp linseg 0, p3 * 0.05, 1, p3 * 0.9, 1, p3 * 0.05, 0
+ ioscillators = max(1, int(100 / active:i("playback")))
+
+ aout oscbank kfreq, 0.1, kfreqstepmult, random(0.9, 0.99), ioscillators, iwidth, iheight, icolour, ivariation * 2
+ aout *= aamp * 0.5
+ kpan linseg iystart, p3, iyend
+ aL, aR pan2 aout, kpan
+
+ outs aL, aR
+endin
+
+</CsInstruments>
+<CsScore>
+f0 36000
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/clipart/index.html b/site/app/clipart/index.html
new file mode 100644
index 0000000..95db367
--- /dev/null
+++ b/site/app/clipart/index.html
@@ -0,0 +1,46 @@
+<html>
+ <head>
+ <style type="text/css">
+ #start {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ height: 100%;
+ width: 100%;
+ background-color: #ffffff;
+ text-align: center;
+ cursor: pointer;
+ }
+ </style>
+ <script type="text/javascript" src="/code/jquery.js"></script>
+ <script type="text/javascript" src="/app/base/base.js"></script>
+ <script type="text/javascript" src="/code/svg.js"></script>
+ <script type="text/javascript" src="svgmess.js"></script>
+ <script type="text/javascript">
+ $(function() {
+ window.svgmess = new SVGMess("svgimage");
+
+ window.app = new CSApplication({
+ csdUrl: "clipart.csd",
+ onPlay: function () {
+ $("#start").hide();
+ svgmess.run();
+ },
+ });
+
+ $("#start").click(function() {
+ $("#status").text("Loading...");
+ app.play();
+ });
+
+ });
+ </script>
+ </head>
+
+ <body>
+ <div id="start">
+ <h1 id="status">Press to begin</h1>
+ </div>
+ <div id="svgimage"></div>
+ </body>
+</html>
diff --git a/site/app/clipart/svgmess.js b/site/app/clipart/svgmess.js
new file mode 100644
index 0000000..261a21d
--- /dev/null
+++ b/site/app/clipart/svgmess.js
@@ -0,0 +1,99 @@
+function randInt(min, max) {
+ min = Math.ceil(min);
+ max = Math.floor(max);
+ return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+
+
+var SVGMess = function(target) {
+ var self = this;
+ var url = "https://data.1bpm.net/clipart/"
+ var animateTimeout;
+ var items;
+ var maxPointVariation = 0;
+ var maxWidth = 0;
+ var maxHeight = 0;
+ window.image = SVG().addTo("#" + target);
+
+ function stdcolour(str) {
+ var c = $("<canvas />");
+ var ctx = c[0].getContext("2d");
+ ctx.fillStyle = str;
+ var fill = ctx.fillStyle;
+ c.remove();
+ return fill;
+ }
+
+
+ function getMaxVar(item) {
+ var itemArray = item.array();
+ var maxVar = 0;
+ var vari;
+ for (let a of itemArray) {
+ vari = Math.abs(a[1] - a[0]);
+ if (vari > maxVar) maxVar = vari;
+ }
+ return maxVar;
+ }
+
+ async function load() {
+ var item;
+ var pathPart = window.location.href.substr(window.location.href.lastIndexOf("/"));
+ if (pathPart.indexOf("?") != -1) {
+ item = pathPart.substr(pathPart.indexOf("?") + 1);
+ } else {
+ var req = await fetch(url + "collection1/list.json");
+ var list = await req.json();
+ item = list.files[Math.floor(Math.random() * (list.files.length - 1)) - 1];
+ window.history.pushState("Image", "Image", window.location.href + "?" + item);
+ }
+ var data = await fetch(url + "collection1/" + item);
+ var src = await data.text();
+ image.svg(src);
+ image.size(3000, 4000);
+ items = image.find("polygon");
+
+ var vari, bbox;
+ for (let i of items) {
+ vari = getMaxVar(i);
+ bbox = i.bbox();
+ if (vari > maxPointVariation) maxPointVariation = vari;
+ if (bbox.w > maxWidth) maxWidth = bbox.w;
+ if (bbox.h > maxHeight) maxHeight = bbox.h;
+ }
+
+ self.items = items;
+ }
+
+ function animate() {
+ var posXmax = 300;
+ var posYmax = 300;
+ var item = items[Math.floor(Math.random() * (items.length - 1))];
+ var variation = getMaxVar(item) / maxPointVariation;
+ var fill = stdcolour(item.css().fill);
+ var bbox = item.bbox();
+ var colourRatio = Number("0x" + fill.substr(1)) / 16777215;
+ var duration = randInt(20, 500);
+ var posX = randInt(0, posXmax);
+ var posY = randInt(0, posYmax);
+ item.animate(duration, 0, "now")
+ .move(posX, posY)
+ //.rotate(randInt(1, 360)); //scale(2);
+ var timeout = randInt(20, 500);
+ animateTimeout = setTimeout(animate, timeout);
+ var args = [
+ 0, duration / 1000,
+ bbox.x / posXmax, bbox.y / posYmax,
+ posX / posXmax, posY / posYmax,
+ colourRatio, variation,
+ bbox.w / maxWidth, bbox.h / maxHeight
+ ];
+ app.insertScore("playback", args);
+ }
+
+ this.run = function() {
+ animate();
+ };
+
+ load();
+};
diff --git a/site/app/feedback/feedback.csd b/site/app/feedback/feedback.csd
new file mode 100644
index 0000000..4a8a7f9
--- /dev/null
+++ b/site/app/feedback/feedback.csd
@@ -0,0 +1,195 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 16
+nchnls = 2
+0dbfs = 2
+seed 0
+
+
+#include "wavetables.udo"
+#include "frequency_tools.udo"
+
+gifbm_maxgain = 2
+
+opcode fbm_param, k, Sijjp
+ Sname, ichannel, imin, imax, iapplyportamento xin
+ Schannel = sprintf("%s_%d", Sname, ichannel)
+ krawval chnget Schannel
+ if (iapplyportamento == 1) then
+ kval port krawval, 0.005
+ else
+ kval = krawval
+ endif
+ SmodOnChannel = sprintf("%smodulating", Schannel)
+ kmodulating chnget SmodOnChannel
+ if (kmodulating == 1) then
+ kmodwave = chnget:k(sprintf("%smodwave", Schannel))
+ kmodfreq = chnget:k(sprintf("%smodfreq", Schannel))
+ kmodamp = chnget:k(sprintf("%smodamp", Schannel))
+ kmod = abs:k(oscilikt:k(kmodamp, kmodfreq, giwavetables[kmodwave]))
+ kout = kval + (kmod * (imax - imin))
+ else
+ kout = kval
+ endif
+/*
+ if (imin != -1) then
+ chnset imin, Schannel ; safe set channel to minimum
+ kout = max:k(kout, imin)
+ endif
+
+ if (imax != -1) then
+ kout = min:k(kout, imax)
+ endif
+*/
+ xout kout
+endop
+
+
+opcode fbm_fxinsert, a, aii
+ asig, ichanindex, insertindex xin
+ SchanAppend = sprintf("_%d_%d", ichanindex, insertindex)
+ keffect = chnget:k(strcat("insert", SchanAppend))
+ if (keffect == 1) then
+ asig freqshift1 asig, chnget:k(strcat("fs_freq", SchanAppend))
+ elseif (keffect == 2) then
+ asig ringmod1 asig, chnget:k(strcat("rm_freq", SchanAppend))
+ elseif (keffect == 3) then
+ asig nreverb asig, chnget:k(strcat("rv_time", SchanAppend)), 0.5
+ elseif (keffect == 4) then
+
+ elseif (keffect == 5) then
+
+ endif
+ xout asig
+endop
+
+
+opcode fbm_channel, aaaaa, ai
+ asig, ichannel xin
+ ieqgainadd = 4
+ keqh_gain = fbm_param("eqhighgain", ichannel, 0, gifbm_maxgain)
+ keqm_gain = fbm_param("eqmidgain", ichannel, 0, gifbm_maxgain)
+ keql_gain = fbm_param("eqlowgain", ichannel, 0, gifbm_maxgain)
+
+ keqh_freq = fbm_param("eqhighfreq", ichannel, 20, 18000)
+ keqm_freq = fbm_param("eqmidfreq", ichannel, 20, 18000)
+ keql_freq = fbm_param("eqlowfreq", ichannel, 20, 18000)
+
+ keqh_q = fbm_param("eqhighq", ichannel, 0.71, 0.9)
+ keqm_q = fbm_param("eqmidq", ichannel, 0.71, 0.9)
+ keql_q = fbm_param("eqlowq", ichannel, 0.71, 0.9)
+
+ ksend1 = fbm_param("send1", ichannel, 0, gifbm_maxgain, 0)
+ ksend2 = fbm_param("send2", ichannel, 0, gifbm_maxgain, 0)
+ ksend3 = fbm_param("send3", ichannel, 0, gifbm_maxgain, 0)
+ ksend4 = fbm_param("send4", ichannel, 0, gifbm_maxgain, 0)
+
+ kprefade1 = fbm_param("prefade1", ichannel, 0, 1, 0)
+ kprefade2 = fbm_param("prefade2", ichannel, 0, 1, 0)
+ kprefade3 = fbm_param("prefade3", ichannel, 0, 1, 0)
+ kprefade4 = fbm_param("prefade4", ichannel, 0, 1, 0)
+
+ klowcut = fbm_param("lowcut", ichannel, 0, 1, 0)
+ kmute = fbm_param("mute", ichannel, 0, 1, 0)
+ kvolume = fbm_param("volume", ichannel, 0, gifbm_maxgain)
+
+ asig dcblock asig
+ asig += noise(0.01, 0)
+ /*
+ asig pareq asig, keql_freq, keql_gain * ieqgainadd, keql_q, 1, 1
+ asig pareq asig, keqm_freq, keqm_gain * ieqgainadd, keqm_q, 0, 1
+ asig pareq asig, keqh_freq, keqh_gain * ieqgainadd, keqh_q, 2, 1
+ */
+ asig pareq asig, keql_freq, keql_gain * ieqgainadd, 0.7, 1
+ asig pareq asig, keqm_freq, keqm_gain * ieqgainadd, 0.7, 0
+ asig pareq asig, keqh_freq, keqh_gain * ieqgainadd, 0.7, 2
+ asig pareq asig, keqh_freq, keqh_gain * ieqgainadd, 0.7, 2
+
+ if (klowcut == 1) then
+ asig butterhp asig, 75
+ endif
+ asig butterlp asig, 17000
+ asig butterhp asig, 0.1
+
+ ;asig dam asig, 0.99, 0.9, 0.9, 0.01, 0.01
+
+ kvolume *= (1 - kmute)
+ asend1 = tanh(asig * ((kprefade1 == 1) ? ksend1 : ksend1 * kvolume))
+ asend2 = tanh(asig * ((kprefade2 == 1) ? ksend2 : ksend2 * kvolume))
+ asend3 = tanh(asig * ((kprefade3 == 1) ? ksend3 : ksend3 * kvolume))
+ asend4 = tanh(asig * ((kprefade4 == 1) ? ksend4 : ksend4 * kvolume))
+
+
+ asig fbm_fxinsert asig, ichannel, 0
+ asig fbm_fxinsert asig, ichannel, 1
+
+ asig tanh asig
+ asig *= kvolume
+ xout asig, asend1, asend2, asend3, asend4
+endop
+
+
+
+
+instr mixer
+ a1 init 0
+ a2 init 0
+ a3 init 0
+ a4 init 0
+
+ aout1, a1s1, a1s2, a1s3, a1s4 fbm_channel a1, 0
+ aout2, a2s1, a2s2, a2s3, a2s4 fbm_channel a2, 1
+ aout3, a3s1, a3s2, a3s3, a3s4 fbm_channel a3, 2
+ aout4, a4s1, a4s2, a4s3, a4s4 fbm_channel a4, 3
+ a1 = 0
+ a2 = 0
+ a3 = 0
+ a4 = 0
+
+ icrosstalk = 0.0001
+
+ a1 = a1s1 + a2s1 + a3s1 + a4s1
+ a2 = a1s2 + a2s2 + a3s2 + a4s2
+ a3 = a1s3 + a2s3 + a3s3 + a4s3
+ a4 = a1s4 + a2s4 + a3s4 + a4s4
+
+ a1 = a1 + (a2 * icrosstalk)
+ a2 = a2 + (a1 * icrosstalk) + (a3 * icrosstalk)
+ a3 = a3 + (a3 * icrosstalk) + (a4 * icrosstalk)
+ a4 = a4 + (a3 * icrosstalk)
+ aout = aout1 + aout2 + aout3 + aout4
+ aout tanh aout
+ aout pareq aout, 18000, 0.4, 0.7
+ aout dcblock aout * 0.25
+ aout butterlp aout, 17000
+ aout limit aout, -1, 1
+ outs aout, aout
+
+#ifndef WEB
+ chnset 0.01, "eqhighgain_0"
+ chnset 10000, "eqhighfreq_0"
+ chnset 0.71, "eqhighq_0"
+
+ chnset 3.7, "eqmidgain_0"
+ chnset 1100, "eqmidfreq_0"
+ chnset 0.71, "eqmidq_0"
+
+ chnset 6.4, "eqlowgain_0"
+ chnset 550, "eqlowfreq_0"
+ chnset 0.71, "eqlowq_0"
+
+ chnset 1, "prefade1_0"
+ chnset 1.1, "send1_0"
+ chnset 1.1, "volume_0"
+#end
+endin
+
+</CsInstruments>
+<CsScore>
+i"mixer" 0 36000
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/feedback/index.html b/site/app/feedback/index.html
new file mode 100644
index 0000000..978b8b7
--- /dev/null
+++ b/site/app/feedback/index.html
@@ -0,0 +1,496 @@
+<html>
+ <head>
+ <script type="text/javascript" src="/code/jquery.js"></script>
+ <script type="text/javascript" src="../base/base.js"></script>
+ <script type="text/javascript" src="/code/input-knobs.js"></script>
+ <style type="text/css">
+ body {
+ font-family: Sans-serif, arial;
+ font-size: 8pt;
+ background-color: #989898;
+ }
+
+ td {
+ font-size: 8pt;
+ }
+
+ .controlLabel {
+ font-size: 8pt;
+ text-align: center;
+ width: 100%;
+ }
+
+ .controlValue {
+ font-size: 7pt;
+ text-align: center;
+ width: 100%;
+ }
+
+ table {
+ border-spacing: 0;
+ }
+
+ .innertd {
+ border-left: 1px solid #787878;
+ padding: 1px;
+ }
+
+ .chantd {
+ border-left: 2px solid #454545;
+ padding: 1px;
+ }
+
+ .smbutton {
+ font-size: 7pt;
+ border: none;
+ padding: 1px;
+ }
+
+ #buttons {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ height: 5%;
+ width: 80%;
+ }
+
+ #target {
+ position: absolute;
+ top: 5%;
+ left: 0px;
+ width: 80%;
+ height: 95px;
+ }
+
+ #modulation {
+ position: absolute;
+ top: 0%;
+ left: 70%;
+ width: 30%;
+ padding: 10px;
+ height: 100%;
+ border-left: 1px solid black;
+ }
+
+ #modulatehelp {
+ display: none;
+ }
+
+ #begin {
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: #b5b5b5;
+ cursor: pointer;
+ z-index: 10;
+ }
+
+ #begininner {
+ position: absolute;
+ text-align: center;
+ top: 20%;
+ left: 20%;
+ width: 60%;
+ font-size: 11pt;
+ }
+
+ #loading {
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: #b5b5b5;
+ cursor: pointer;
+ display: none;
+ z-index: 11;
+ }
+
+ #loadinginner {
+ position: absolute;
+ text-align: center;
+ top: 20%;
+ left: 20%;
+ width: 60%;
+ font-size: 24pt;
+ }
+
+
+ </style>
+ <script type="text/javascript">
+ var baseurl = "/controls/";
+ var maxGain = 2;
+ var controls = [];
+
+ function resetControls() {
+ for (let cn of controls) {
+ var c = cn.control;
+ var val = cn.dfault;
+ if (val) {
+ if (c.attr("type") == "checkbox") {
+ c.prop("checked", (val == 1));
+ } else {
+ c.val(val);
+ }
+ }
+ c.trigger("change");
+ }
+ }
+
+ function randomiseControls() {
+ for (let cn of controls) {
+ var c = cn.control;
+ var min = parseFloat(c.attr("min"));
+ var max = parseFloat(c.attr("max"));
+ var step = parseFloat(c.attr("step"));
+ var val = (Math.random() * (max - min)) + min;
+ if (val % step != 0) {
+ if (step == 1) {
+ val = Math.round(val);
+ } else {
+ val = Math.ceil((val - min) / step) * step + min;
+ }
+ }
+ if (c.attr("type") == "checkbox") {
+ c.prop("checked", (val == 1));
+ } else {
+ c.val(val);
+ }
+ c.trigger("change");
+ }
+ }
+
+ var randomiseTimeout;
+ var randomising = false;
+ function randomiseContinuous() {
+ var text;
+ if (randomising) {
+ randomising = false;
+ text = "Continuous random";
+ clearTimeout(randomiseTimeout);
+ } else {
+ randomising = true;
+ text = "Stop";
+ function doRandom() {
+ randomiseControls();
+ if (randomising) {
+ setTimeout(doRandom, Math.round(Math.random() * 700) + 50);
+ }
+ }
+ doRandom();
+ }
+ $("#randomiseContinuous").text(text);
+ }
+
+ async function makeRow(rowdef) {
+ var row = $("<tr />");
+ var showName = true;
+ for (let chan = 0; chan < 4; chan++) { // channel
+ var initial = true;
+ var showBorder = true;
+ var sectionName = null;
+ for (let def of rowdef) {
+ let elValue;
+ var className;
+
+ if (!showName && initial) {
+ initial = false;
+ continue;
+ }
+
+ if (showName) {
+ sectionName = def;
+ initial = false;
+ showName = false;
+ }
+
+ if (showBorder) {
+ className = "chantd";
+ showBorder = false;
+ } else {
+ className = "innertd";
+ }
+
+ var el = $("<td />").appendTo(row).addClass(className);
+ if (!def) continue;
+
+ if (typeof(def) == "string") {
+ el.text(def);
+ } else {
+ var control = await getControl(def.control);
+ el.append(control);
+ var name = "Channel " + (chan + 1) + " " + ((sectionName) ? sectionName + " " : "") + def.name;
+ var dfault = (def.dfault) ? def.dfault: 0;
+ var min = (def.min) ? def.min: 0;
+ var max = (def.max) ? def.max: 1;
+ var step = (def.step) ? def.step: 0.000001;
+ controls.push({name: name, control: control, channel: def.channel + "_" + chan, dfault: dfault});
+
+ setTimeout(function() {
+ app.setControlChannel(def.channel + "_" + chan, (def.dfault) ? def.dfault: 0);
+ }, 100);
+ if (def.size) {
+ el.width(def.size).height(def.size);
+ }
+
+ if (def.type && def.type == "button") {
+ step = 1;
+ }
+
+ function updateControl() {
+ var val;
+ if ($(this).attr("type") == "checkbox") {
+ val = ($(this).is(":checked")) ? 1 : 0;
+ } else {
+ val = $(this).val();
+ }
+ app.setControlChannel(def.channel + "_" + chan, val);
+ if (elValue) {
+ elValue.text(Math.round(val * 100) / 100);
+ }
+ }
+
+ control.attr("step", step).attr("min", min).attr("max", max).val(dfault).on("input", updateControl).change(updateControl);
+ if (def.name && !def.noLabel) {
+ var elLabel = $("<div />").addClass("controlLabel").text(def.name);
+ el.append(elLabel);
+ }
+ if (!def.noValue) {
+ elValue = $("<div />").addClass("controlValue").text(dfault);
+ el.append(elValue);
+ }
+ }
+ }
+ }
+ return row;
+ }
+
+ var modulationParameters = [
+ {name: "Wave", channel: "modwave", options: ["Sine", "Square", "Saw", "Pulse", "Cosine", "Triangle"], dfault: 0},
+ {name: "Frequency", channel: "modfreq", dfault: 1, min: 0.01, max: 10, step: 0.01},
+ {name: "Amplitude", channel: "modamp", dfault: 1, min: 0, max: 1, step: 0.000001}
+ ];
+
+
+ modulations = [];
+
+ function createModulation(c) {
+ var tbl = $("<table />").css("width", "100%");
+ var tb = $("<tbody />").appendTo(tbl);
+ var el = $("<div />").appendTo($("#modulationsData"));
+ var offButton = $("<button />").text("Remove").click(function() {
+ delete modulations[modulations.indexOf(c)];
+ el.remove();
+ app.setControlChannel(c.channel + "modulating", 0);
+ });
+ app.setControlChannel(c.channel + "modulating", 1);
+
+ el.append($("<hr />")).append(c.name).append(tbl).append(offButton);
+ var dfault;
+ for (let m of modulationParameters) {
+ var tr = $("<tr />").appendTo(tb);
+ tr.append($("<td />").text(m.name));
+ var elInput;
+ if (m.options) {
+ elInput = $("<select />").change(function() {
+ app.setControlChannel(c.channel + m.channel, $(this).val());
+ });
+ for (var i in m.options) {
+ elInput.append($("<option />").text(m.options[i]).val(i));
+ }
+
+ dfault = (m.dfault) ? m.dfault : 0;
+ elInput.val(dfault).trigger("change");
+ } else {
+ elInput = $("<input />").attr("type", "range").attr("min", m.min).attr("max", m.max).attr("step", m.step).val(m.dfault).on("input", function() {
+ app.setControlChannel(c.channel + m.channel, $(this).val());
+ });
+ elInput.trigger("input");
+ dfault = m.dfault;
+ }
+ app.setControlChannel(c.channel + m.channel, dfault);
+
+ $("<td />").append(elInput).appendTo(tr);
+
+ }
+ }
+
+
+ var modulationsShown = false;
+ function modulateControls() {
+ var elBut = $("#modulate");
+ var elHelp = $("#modulatehelp");
+
+ function done() {
+ elBut.text("Add new");
+ elHelp.hide();
+ modulationsShown = false;
+ for (let c of controls) {
+ c.control.css("opacity", 1).off("click").off("touchstart");
+ }
+ }
+
+ if (modulationsShown) {
+ done();
+ } else {
+ elHelp.show();
+ elBut.text("Exit assignment");
+ modulationsShown = true;
+ for (let c of controls) {
+ function onSelect() {
+ if (!modulations.includes(c)) {
+ modulations.push(c);
+ done();
+ createModulation(c);
+ }
+ }
+ c.control.css("opacity", 0.2).click(onSelect).on("touchstart", onSelect);
+ }
+ }
+
+ }
+
+
+ async function makeTable() {
+ var tb = $("<tbody />").appendTo($("<table />").addClass("mainTable").appendTo($("#target")));
+ var def = [
+ ["EQ high",
+ {name: "Gain", channel: "eqhighgain", control: "timb_SM2018_SM_CUTE32-1", dfault: 0.7, min: 0.1, max: 1.1},
+ {name: "Frequency", channel: "eqhighfreq", control: "timb_SM2018_SM_CUTE32-1", dfault: 12000, step: 1, min: 6000, max: 20000},
+ {name: "Q", channel: "eqhighq", control: "timb_SM2018_SM_CUTE32-1", dfault: 0.71, min: 0.71, max: 0.9}
+ ],
+ ["EQ mid",
+ {name: "Gain", channel: "eqmidgain", control: "timb_SM2018_SM_CUTE32-1", dfault: 1, min: 0.01, max: maxGain},
+ {name: "Frequency", channel: "eqmidfreq", control: "timb_SM2018_SM_CUTE32-1", dfault: 2000, step: 1, min: 800, max: 6000},
+ {name: "Q", channel: "eqmidq", control: "timb_SM2018_SM_CUTE32-1", dfault: 0.71, min: 0.71, max: 0.9}
+ ],
+ ["EQ low",
+ {name: "Gain", channel: "eqlowgain", control: "timb_SM2018_SM_CUTE32-1", dfault: 1, min: 0.01, max: maxGain},
+ {name: "Frequency", channel: "eqlowfreq", control: "timb_SM2018_SM_CUTE32-1", dfault: 200, step: 1, min: 50, max: 800},
+ {name: "Q", channel: "eqlowq", control: "timb_SM2018_SM_CUTE32-1", dfault: 0.71, min: 0.71, max: 0.9}
+ ],
+ ["Prefade",
+ {name: "1", channel: "prefade1", control: "Timb_Grig2018_Controls--61b", type: "button", size: 12, noValue: true, noLabel: true},
+ {name: "2", channel: "prefade2", control: "Timb_Grig2018_Controls--61b", type: "button", size: 12, noValue: true, noLabel: true},
+ null
+ ],
+ ["Send",
+ {name: "1", channel: "send1", control: "timb_SM2018_SM_CUTE32-4", max: maxGain},
+ {name: "2", channel: "send2", control: "timb_SM2018_SM_CUTE32-4", max: maxGain},
+ null
+ ],
+ ["Prefade",
+ {name: "3", channel: "prefade3", control: "Timb_Grig2018_Controls--61b", type: "button", size: 12, noValue: true, noLabel: true},
+ {name: "4", channel: "prefade4", control: "Timb_Grig2018_Controls--61b", type: "button", size: 12, noValue: true, noLabel: true},
+ null
+ ],
+ ["Send",
+ {name: "3", channel: "send3", control: "timb_SM2018_SM_CUTE32-4", max: maxGain},
+ {name: "4", channel: "send4", control: "timb_SM2018_SM_CUTE32-4", max: maxGain},
+ null
+ ],
+ [null,
+ {name: "Mute", channel: "mute", control: "timb&HYRPEMUTE32", type: "button", noValue: true},
+ {name: "Low cut", channel: "lowcut", control: "Timb_Grig2018_Controls--61b", type: "button", noValue: true},
+ null
+ ],
+ [null,
+ null,
+ {name: "Volume", channel: "volume", control: "lbx_slider160_smoothblack_red_km", max: maxGain},
+ null
+ ]
+ ];
+
+
+ for (let d of def) {
+ var row = await makeRow(d);
+ tb.append(row);
+ };
+ }
+
+
+ async function appendRandomControl() {
+ var all = await fetch("/controls/all.json");
+ var json = await all.json();
+ var item = json[Object.keys(json)[Math.round(Math.random() * (Object.keys(json).length - 1))]];
+ var ctrl = await getControl(item);
+ $("#target").append(ctrl);
+ }
+
+ async function getControl(name) {
+ if (typeof(name) == "string") {
+ var response = await fetch(baseurl + name + ".json");
+ var json = await response.json();
+ } else {
+ json = name; // for randomControl
+ }
+
+ var element;
+ if (json.ctltype == 0) {
+ element = $("<input />").attr("type", "range").addClass("input-knob").attr("data-diameter", json.cellh).attr("data-src", baseurl + json.fn).attr("data-sprites", json.frames - 1);
+ } else if (json.ctltype == 1) {
+ element = $("<input />").attr("type", "range").addClass("input-slider").attr("data-height", json.cellh).attr("data-src", baseurl + json.fn).attr("data-width", json.cellw).attr("data-sprites", json.frames - 1);
+ } else if (json.ctltype == 2) {
+ element = $("<input />").attr("type", "checkbox").addClass("input-switch").attr("data-height", json.cellh).attr("data-width", json.cellw).attr("data-src", baseurl + json.fn);
+ }
+ return element;
+ }
+
+ $(function(){
+ makeTable();
+
+
+ window.app = new CSApplication({
+ csdUrl: "feedback.csd",
+ onPlay: function () {
+ $("#loading").hide();
+ randomiseControls();
+ resetControls();
+ }
+ });
+
+ $("#randomise").click(randomiseControls);
+ $("#randomiseContinuous").click(randomiseContinuous);
+ $("#reset").click(resetControls);
+ $("#modulate").click(modulateControls);
+
+ $("#begin").click(function() {
+ $("#begin").hide();
+ $("#loading").show();
+ app.play();
+ });
+ });
+ </script>
+ </head>
+ <body>
+ <div id="begin">
+ <div id="begininner">
+ <h3>Feedback mixer simulation</h3>
+ <p>This application models a four channel audio mixer in a fed-back state. Often known as a 'no-input' mixer,
+ eccentric sounds can be induced from altering EQ and gain in the channel paths.<br />
+ In this model, there are four auxilliary sends on each channel, which send input to the corresponding channel.<br />
+ For example, increasing aux 1 on channel 1 will eventually lead to feedback. The randomise buttons at the top can
+ be used for quick shortcuts for creating sound, and using the modulations pane on the left allows any parameter to be modulated with a LFO.
+ </p>
+ <h2>Press to begin</h2>
+ </div>
+ </div>
+ <div id="loading"><div id="loadinginner">Loading audio engine</div></div>
+ <div id="buttons">
+ <table><tbody><tr>
+ <td><button id="randomise">Randomise</button></td>
+ <td><button id="randomiseContinuous">Continuous random</button></td>
+ <!--<td><button id="reset">Reset</button></td>-->
+ </tr></tbody></table>
+ </div>
+ <div id="target"></div>
+ <div id="modulation">
+ <h3>Modulations</h3>
+ <td><button id="modulate">Add new</button></td>
+ <div id="modulatehelp">Click on a parameter to enable modulation</div>
+ <div id="modulationsData"></div>
+ </div>
+ </body>
+</html>
diff --git a/site/app/ocsillator/index.html b/site/app/ocsillator/index.html
new file mode 100644
index 0000000..f115bcc
--- /dev/null
+++ b/site/app/ocsillator/index.html
@@ -0,0 +1,319 @@
+<html>
+<head>
+<script type="text/javascript" src="/code/jquery.js"></script>
+<script type="text/javascript" src="../base/base.js"></script>
+<script type="text/javascript">
+var appdata = {
+"instruments": [
+ {name: "Effemm bass", instr: "ocsinst_blockbass"},
+ {name: "Three Oh", instr: "ocsinst_303"},
+ {name: "Strung", instr: "ocsinst_strings"},
+ {name: "Harm", instr: "ocsinst_guitarharmonics"},
+ {name: "Cold nights", instr: "ocsinst_guitarharmonicsfx"},
+ {name: "Rhedos", instr: "ocsinst_rhodes1"},
+ {name: "Evolo", instr: "oscinst_pad1"},
+ {name: "Kaleb", instr: "oscinst_kalimba1"},
+ {name: "Freakperk", instr: "ocsinst_perc_freak", nvalue: true},
+ {name: "Canne", instr: "ocsinst_perc_case", nvalue: true},
+]};
+
+var Ocsillator = function(appdata) {
+ var elContainer = $("#main");
+ var elControls = $("#controls");
+ var elXy = $("#xy").css("background-color", "#121212");
+ var elNoteSelect = $("<select />").change(changeScale);
+ var elChordSelect = $("<select />").change(changeScale);
+ var elNoteRange = $("<input />").attr("type", "range").attr("min", 2).attr("max", 24).change(changeScale);
+ var elInstrumentSelect = $("<select />").change(changeInstrument);
+ var elDownload = $("<button />").text("Download").click(downloadFile);
+ var elRecord = $("<button />").text("Record").click(downloadFile);
+ var elPosition = $("<div />").css({width: "30px", height: "30px", "border-radius": "15px", "background-color": "#f5dd42", position: "absolute"}).hide();
+ var normaliseValue = false;
+ var notedata;
+ var uiNotes = [];
+ var mouseisdown;
+
+ function mousedown(e) {
+ mouseisdown = true;
+ elPosition.show();
+ handlePosition(e);
+ playInstrument();
+ }
+
+ function mousemove(e) {
+ if (!mouseisdown) return;
+ handlePosition(e);
+ }
+
+ function mouseup() {
+ mouseisdown = false;
+ elPosition.hide();
+ stopInstrument();
+ }
+
+ elXy.on("mousedown", mousedown).on("mousemove", mousemove).on("mouseup", mouseup).on("touchstart", function(e) {
+ mousedown(e.changedTouches[0]);
+ }).on("touchmove", function(e) {
+ mousemove(e.changedTouches[0]);
+ }).on("touchend", mouseup);
+
+ function handlePosition(e) {
+ var offs = elXy.offset();
+ var h = elXy.height();
+ var w = elXy.width();
+ var posX = e.clientX - offs.left;
+ var posY = e.clientY - offs.top;
+ if (posX < 0 || posX > w || posY < 0 || posY > h) return;
+ elPosition.css({left: (posX - 15) + "px", top: (posY - 15) + "px"});
+
+ var valX = posX / w;
+ var valY = 1 - (posY / h);
+
+ if (!normaliseValue) {
+ var note = uiNotes[Math.floor(valX * uiNotes.length)];
+ app.setControlChannel("note", note);
+ } else {
+ app.setControlChannel("valX", valX);
+ }
+ app.setControlChannel("valY", valY);
+ }
+
+ fetch("../base/notedata.json").then(function(r) {
+ r.json().then(function(j) {
+ notedata = j;
+ buildInputs();
+ });
+ });
+
+ function buildInputs() {
+ for (let n of notedata.notes) {
+ if (n[0] >= 24 && n[0] <= 84) {
+ $("<option />").val(n[0]).text(n[1]).appendTo(elNoteSelect);
+ }
+ }
+
+ for (let c in notedata.chords) {
+ $("<option />").val(c).text(notedata.chords[c].name).appendTo(elChordSelect);
+ }
+
+ for (let i in appdata.instruments) {
+ $("<option />").val(i).text(appdata.instruments[i].name).appendTo(elInstrumentSelect);
+ }
+
+ var tb = $("<tbody />").appendTo($("<table />").appendTo(elControls));
+ var tr = $("<tr />").appendTo(tb);
+ $("<td />").text("Base note").appendTo(tr);
+ $("<td />").text("Chord").appendTo(tr);
+ $("<td />").text("Note range").appendTo(tr);
+ $("<td />").text("Instrument").appendTo(tr);
+ $("<td />").appendTo(tr);
+
+ tr = $("<tr />").appendTo(tb);
+ $("<td />").append(elNoteSelect).appendTo(tr);
+ $("<td />").append(elChordSelect).appendTo(tr);
+ $("<td />").append(elNoteRange).appendTo(tr);
+ $("<td />").append(elInstrumentSelect).appendTo(tr);
+ $("<td />").append(elDownload).appendTo(tr);
+
+ elInstrumentSelect.trigger("change");
+ elNoteSelect.val(48);
+ elChordSelect.val(0);
+ elNoteRange.val(12);
+ changeScale();
+ }
+
+
+ function downloadFile() {
+
+ }
+
+ function recordStart() {
+ app.insertScore("ocsi_recordstart");
+ }
+
+ function recordStop() {
+ app.insertScore("ocsi_recordstop");
+ }
+
+ function recordClear() {
+ app.insertScore("ocsi_recordclear");
+ }
+
+ function changeInstrument() {
+ var instrument = appdata.instruments[elInstrumentSelect.val()];
+ if (instrument.nvalue) {
+ normaliseValue = instrument.nvalue;
+ } else {
+ normaliseValue = false;
+ }
+ app.insertScore("ocsi_setinstrument", [0, 1, instrument.instr]);
+ }
+
+
+ function playInstrument() {
+ app.insertScore("ocsi_play");
+ }
+
+ function stopInstrument() {
+ app.insertScore("ocsi_stop");
+ }
+
+ function changeScale() {
+ var noterange = elNoteRange.val();
+ var notenum = elNoteSelect.val();
+ var intervals = notedata.chords[elChordSelect.val()].intervals;
+ var intervalindex = 0;
+ var octave = 0;
+ var notes = [];
+ var note;
+ for (var i = 0; i < noterange; i++) {
+ note = parseInt(notenum) + (octave * 12) + parseInt(intervals[intervalindex]);
+ if (intervalindex < intervals.length - 1) {
+ intervalindex += 1;
+ } else {
+ intervalindex = 0;
+ octave += 1;
+ }
+ notes.push(note);
+ }
+ uiNotes = notes;
+ redraw();
+ }
+
+
+ function redraw() {
+ var w = window.innerWidth;
+ var h = window.innerHeight;
+ var size = Math.min(w, h);
+ elContainer.css({width: w, height: h});
+ var ch = Math.round(size * 0.1);
+ var xys = Math.round(size * 0.9);
+ elControls.css({width: w + "px", height: ch + "px"});
+ elXy.empty().css({width: xys + "px", height: xys + "px", top: ch + "px"}).append(elPosition);
+
+ var step = Math.round(xys / uiNotes.length);
+ for (var x = 0; x < xys; x += step) {
+ $("<div />").addClass("gridline").css({left: x + "px", height: xys + "px"}).appendTo(elXy);
+ }
+ }
+
+
+ window.onresize = redraw;
+};
+
+$(function() {
+ window.app = new CSApplication({
+ csdUrl: "ocsillator.csd",
+ onPlay: function () {
+ $("#loading").hide();
+ window.osc = new Ocsillator(appdata);
+ }
+ });
+ $("#begin").click(function() {
+ $("#begin").hide();
+ app.play();
+ });
+
+});
+
+</script>
+<style type="text/css">
+ body {
+ font-family: Arial, sans-serif;
+ user-select: none;
+ background-color: #a1a1a1;
+ }
+
+ .gridline {
+ width: 1px;
+ height: 1px;
+ position: absolute;
+ background-color: #33aa33;
+ z-index: 10;
+ }
+
+ #loading {
+ width: 100%;
+ height: 100%;
+ top: 0px;
+ left: 0px;
+ position: absolute;
+ z-index: 20;
+ background-color: #344534;
+ }
+
+ #loading_inner {
+ left: 30%;
+ top: 30%;
+ width: 40%;
+ height: 40%;
+ text-align: center;
+ font-size: 48pt;
+ position: absolute
+
+ }
+
+ #begin {
+ width: 100%;
+ height: 100%;
+ top: 0px;
+ left: 0px;
+ position: absolute;
+ z-index: 25;
+ text-align: center;
+ background-color: #344534;
+ cursor: pointer;
+ }
+
+ #begin_inner {
+ left: 30%;
+ top: 30%;
+ width: 40%;
+ height: 40%;
+ text-align: center;
+ font-size: 48pt;
+ position: absolute
+
+ }
+
+ #main {
+ width: 100%;
+ height: 100%;
+ top: 0px;
+ left: 0px;
+ position: absolute;
+ }
+
+ #controls {
+ width: 100%;
+ height: 20%;
+ top: 0px;
+ left: 0px;
+ position: absolute;
+ }
+
+ #xy {
+ position: absolute;
+ width: 80%;
+ height: 80%;
+ top: 20%;
+ left: 0px;
+ z-index: 1;
+ }
+
+</style>
+</head>
+<body>
+ <div id="loading">
+ <div id="loading_inner">Loading</div>
+ </div>
+ <div id="begin">
+ Ocsillator is inspired by the Korg Kaossilator.
+ <div id="begin_inner">Press to begin</div>
+ </div>
+ <div id="main">
+ <div id="controls"></div>
+ <div id="xy"></div>
+ </div>
+</body>
+</html>
diff --git a/site/app/ocsillator/ocsillator.csd b/site/app/ocsillator/ocsillator.csd
new file mode 100644
index 0000000..4ad464b
--- /dev/null
+++ b/site/app/ocsillator/ocsillator.csd
@@ -0,0 +1,183 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 16
+nchnls = 2
+nchnls_i = 1
+0dbfs = 2
+seed 0
+
+#include "interop.udo"
+#include "bussing.udo"
+#include "synth_instruments.udo"
+#include "synth_drums.udo"
+#include "sounddb.udo"
+#include "wavetables.udo"
+
+giocsicol_harmonics sounddb_getcollectionid "Guitar.Harmonics", 1
+
+isize = sr * 60
+giocsi_fnrecord[] fillarray ftgen(0, 0, isize, 2, 0), ftgen(0, 0, isize, 2, 0)
+giosci_loopend = isize
+giocsi_instrument = 0
+
+instr ocsi_recordstart
+ p3 = 99999
+ aL, aR bus_tap "ocsi"
+ apos lphasor 1, 0, giosci_loopend, 1
+ tablew aL, apos, giocsi_fnrecord[0]
+ tablew aR, apos, giocsi_fnrecord[1]
+endin
+
+instr ocsi_recordstop
+ turnoff2 "ocsi_recordstart", 0, 1
+ turnoff
+endin
+
+instr ocsi_recordclear
+
+endin
+
+
+opcode ocsi_defaultinput, kk, 0
+ kamp chnget "valY"
+ knote chnget "note"
+ xout kamp, knote
+endop
+
+instr ocsinst_blockbass
+ kamp, knote ocsi_defaultinput
+ aL, aR synth_fmbass1, cpsmidinn(knote) - 12
+ kenv linsegr 1, p3, 1, 0.2, 0
+ aL *= kenv * kamp
+ aR *= kenv * kamp
+ bus_mix("ocsi", aL, aR)
+endin
+
+
+instr ocsinst_303
+ ky, knote ocsi_defaultinput
+ ifilter = (chnget:i("valY") * 50) + 50
+ kdistortion = (1 - ky) + 1
+ aout synth_303 cpsmidinn(knote), ifilter, kdistortion
+ kenv linsegr 1, p3, 1, 0.2, 0
+ aout *= kenv
+ bus_mix("ocsi", aout, aout)
+endin
+
+instr ocsinst_strings
+ ky, knote ocsi_defaultinput
+ kfreq = cpsmidinn(knote)
+ aL synth_strings1 kfreq, 0.01 * random(0.5, 1.5) * ky * 4, 6 * random(0.5, 1.5) * ky, 0.1 * random(0.5, 1.5), 0.1 * random(0.5, 1.5)
+ aR synth_strings1 kfreq, 0.01 * random(0.5, 1.5) * ky * 4, 6 * random(0.5, 1.5) * ky, 0.1 * random(0.5, 1.5), 0.1 * random(0.5, 1.5)
+ kenv linsegr 1, p3, 1, 0.2, 0
+ aL *= kenv
+ aR *= kenv
+ bus_mix("ocsi", aL, aR)
+endin
+
+
+instr ocsinst_guitarharmonics
+ ky, knote ocsi_defaultinput
+ istartnote = chnget:i("note")
+ knote init istartnote
+ ifileid, ipitchratio sounddb_mel_nearestnote giocsicol_harmonics, chnget:i("note")
+ ifn, ichannels, iduration, irmsnorm sounddb_get ifileid
+ ipitchadjust = ipitchratio* (ftsr(ifn) / sr)
+ kpitch = (cpsmidinn(knote) / cpsmidinn(istartnote)) * ipitchadjust
+ krate = (ky * 10) + 1
+ apos = a(ky) * iduration;abs:k(oscil:k(iduration * 0.5, krate)) + (iduration * 0.1)
+ aL, aR sndwarpst 1, apos, a(port(kpitch, 0.01, ipitchadjust)), ifn, 0, 4410, 441, 4, gifnHanning, 1
+ kenv linsegr 0, 0.1, 1, p3 - 0.1, 1, 0.2, 0
+ aL *= kenv
+ aR *= kenv
+ bus_mix("ocsi", aL, aR)
+endin
+
+
+instr ocsinst_guitarharmonicsfx
+ ky, knote ocsi_defaultinput
+ istartnote = chnget:i("note")
+ knote init istartnote
+ ifileid, ipitchratio sounddb_mel_nearestnote giocsicol_harmonics, chnget:i("note")
+ ifn, ichannels, iduration, irmsnorm sounddb_get ifileid
+ ipitchadjust = ipitchratio * (ftsr(ifn) / sr)
+ kpitch = (cpsmidinn(knote) / cpsmidinn(istartnote)) * ipitchadjust
+ krate = (ky * 10) + 1
+ apos = ((a(ky) * abs:k(oscil:k(random(0.2, 1), random(2, 10)))) + 0.1) * iduration
+ aL, aR sndwarpst 1, apos, a(port(kpitch * 0.5, 0.01, ipitchadjust)), ifn, 0, 4410, 441, 1, gifnHanning, 1
+
+ ahL1, ahL2 hilbert2 aL, 1024, 256
+ amL, afmL fmanal ahL1, ahL2
+ aL oscil amL, afmL * 2
+
+ ahR1, ahR2 hilbert2 aR, 1024, 256
+ amR, afmR fmanal ahR1, ahL2
+ aR oscil amR, afmR * 2
+
+ aL butterhp aL, 500
+ aR butterhp aR, 500
+ ;aL reverb aL, 2 * (ky + 2)
+ ;aR reverb aR, 2 * (ky + 2)
+ aL tanh aL
+ aR tanh aR
+
+ kenv linsegr 1, p3 - 0.1, 1, 0.2, 0
+ aL *= kenv
+ aR *= kenv
+ bus_mix("ocsi", aL, aR)
+endin
+
+
+instr osci_recordplaystart
+ p3 = -1
+ apos lphasor 1, 0, giosci_loopend, 1
+ aL table3 apos, giocsi_fnrecord[0]
+ aR table3 apos, giocsi_fnrecord[1]
+ bus_mix("bufferplay", aL, aR)
+endin
+
+instr osci_recordplaystop
+ turnoff2 "osci_recordplaystart", 0, 1
+ turnoff
+endin
+
+instr ocsi_setinstrument
+ Sinstr = strget(p4)
+ turnoff2 giocsi_instrument, 0, 1
+ giocsi_instrument = nstrnum(Sinstr)
+ turnoff
+endin
+
+instr ocsi_play
+ schedule giocsi_instrument, 0, 99999
+ turnoff
+endin
+
+instr ocsi_stop
+ turnoff2 giocsi_instrument, 0, 1
+ turnoff
+endin
+
+instr ocsi_mixer
+ aLm, aRm bus_read "ocsi"
+ aLb, aRb bus_read "bufferplay"
+
+ aL = aLm + aLb
+ aR = aRm + aRb
+ outs aL, aR
+endin
+
+instr osci_boot
+ schedule "ocsi_mixer", 0, -1
+endin
+
+</CsInstruments>
+<CsScore>
+f0 z
+i"osci_boot" 0 1
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/partialemergence/effects_global.inc b/site/app/partialemergence/effects_global.inc
new file mode 100644
index 0000000..c765743
--- /dev/null
+++ b/site/app/partialemergence/effects_global.inc
@@ -0,0 +1,150 @@
+#ifndef INC_GLOBALEFFECTS_INSTR
+#define INC_GLOBALEFFECTS_INSTR ##
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Partial Emergence
+ by Richard Knight 2022
+
+ Installation submission for the International Csound Conference 2022
+
+ Global effects
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/*
+ Reverb
+*/
+instr global_reverb1
+ aL, aR bus_read "reverb1"
+ aL, aR freeverb aL, aR, 0.8, 0.6
+ bus_mix("master", aL, aR)
+endin
+
+
+/*
+ Delay 1
+*/
+instr global_delay1
+ aL, aR bus_read "delay1"
+ ;aL *= abs(oscil(1, 1))
+ ;aR *= abs(oscil(1, 1))
+ kfeedback = abs:k(oscil:k(0.5, 4)) + 0.2
+
+ aLdlr delayr 0.8
+ kdeltime = abs(oscil(0.02, 0.04)) + 0.1
+ aLdel deltapi kdeltime + 0.002
+ delayw aL + (aLdel * kfeedback)
+ aRdlr delayr 0.8
+ aRdel deltapi kdeltime + 0.001
+ delayw aR + (aRdel * kfeedback)
+ bus_mix("master", aLdel, aRdel)
+endin
+
+
+/*
+ Delay 2
+*/
+instr global_delay2
+ aL, aR bus_read "delay2"
+ ifreq1 = 0.25
+ kfdbkL = abs(oscil(0.8, 1.63))
+ kfdbkR = abs(oscil(0.8, 1.67))
+
+ atimeL = abs(oscil(0.2, ifreq1)) + 0.01
+ atimeR = abs(oscil(0.2, ifreq1)) + 0.01
+
+ aLdlr delayr 1
+ aLdel deltapi atimeL
+ aLdel butterhp aLdel, 130
+ delayw aL + (aLdel * kfdbkL)
+
+ aRdlr delayr 1
+ aRdel deltapi atimeR
+ aRdel butterhp aRdel, 130
+ delayw aR + (aRdel * kfdbkR)
+
+ bus_mix("master", aLdel, aRdel)
+endin
+
+
+
+/*
+ Cyclical PVS sampler
+*/
+instr global_pvsamp1
+ aL, aR bus_read "pvsamp1"
+ ir = 512
+ iscales[] fillarray 0.25, 0.5, 1, 2, 4
+ ksampling init 1
+ ktime = timeinsts()
+ ksamplestarttime init 0
+ kplaystarttime init 0
+ imaxlength = 6
+ ksamplelength init random(2, imaxlength)
+ kplaylength init random(2, imaxlength)
+ krevsend init random(0, 0.4)
+ kdotune init (random(0, 1) > 0.8) ? 1 : 0
+ kdohpf init round(random(0, 1))
+ khpfreq init random(100, 2000)
+ kreadrate init random(0.005, 0.3)
+ kscale init iscales[round(random(0, lenarray(iscales) - 1))]
+
+ if (ksampling == 1) then
+ fL1 pvsanal aL, ir, ir/4, ir, 1
+ fR1 pvsanal aR, ir, ir/4, ir, 1
+
+ ibufL, ktL pvsbuffer fL1, imaxlength
+ ibufR, ktR pvsbuffer fR1, imaxlength
+
+ if (ktime - ksamplestarttime >= ksamplelength) then
+ ksampling = 0
+ kplaylength = random:k(2, imaxlength*0.9)
+ kplaystarttime = ktime
+ kdohpf = round:k(random:k(0, 1))
+ khpfreq = random:k(100, 2000)
+ kdotune = (random:k(0, 1) > 0.8) ? 1 : 0
+ krevsend = random:k(0, 0.6)
+ kreadrate = random:k(0.005, 0.3)
+ if (random:k(0, 1) >= 0.7) then
+ kscale = iscales[round:k(random:k(0, lenarray(iscales) - 1))]
+ endif
+ endif
+ endif
+
+ if (ksampling == 0 && ktime - kplaystarttime >= kplaylength) then
+ ksampling = 1
+ ksamplestarttime = ktime
+ ksamplelength = random:k(2, imaxlength)
+ endif
+
+ ktime = abs:k(oscil:k(1, kreadrate))
+
+ kplaylengthp = port(kplaylength, 0.1)
+ fL2 pvsbufread ktime*kplaylengthp, ibufL
+ fR2 pvsbufread ktime*kplaylengthp, ibufR
+
+ kscalep = port(kscale, 0.1)
+ fL3 pvscale fL2, kscalep
+ fR3 pvscale fR2, kscalep
+
+ aL pvsynth fL3
+ aR pvsynth fR3
+
+ if (kdotune == 1) then
+ aL, aR mel_tune_portamento aL*0.8, aR*0.8, gifnSine, 16, 1024, 4
+ endif
+
+ if (kdohpf == 1) then
+ aL butterhp aL, khpfreq
+ aR butterhp aR, khpfreq
+ endif
+
+ bus_mix("reverb1", aL*krevsend, aR*krevsend)
+ bus_mix("master", aL, aR)
+endin
+
+
+
+
+#end
diff --git a/site/app/partialemergence/index.html b/site/app/partialemergence/index.html
new file mode 100644
index 0000000..5b7cedd
--- /dev/null
+++ b/site/app/partialemergence/index.html
@@ -0,0 +1,39 @@
+<html>
+ <head>
+ <script type="text/javascript" src="/code/jquery.js"></script>
+ <script type="text/javascript" src="../base/base.js"></script>
+ <script type="text/javascript">
+
+ $(function(){
+
+ window.app = new CSApplication({
+ manualSoundCollections: true,
+ csdUrl: "partialemergence.csd",
+ onPlay: function () {
+ $("#loading").hide();
+ },
+ files: [
+ "progressions/progression1.fnmlmel","progressions/progression2.fnmlmel","progressions/progression3.fnmlmel","sounds/Kalimba/60.0.mp3","sounds/Kalimba/60.1.mp3","sounds/Kalimba/60.2.mp3","sounds/Kalimba/60.3.mp3","sounds/Kalimba/62.0.mp3","sounds/Kalimba/62.1.mp3","sounds/Kalimba/62.2.mp3","sounds/Kalimba/62.3.mp3","sounds/Kalimba/64.0.mp3","sounds/Kalimba/64.1.mp3","sounds/Kalimba/64.2.mp3","sounds/Kalimba/64.3.mp3","sounds/Kalimba/65.0.mp3","sounds/Kalimba/65.1.mp3","sounds/Kalimba/65.2.mp3","sounds/Kalimba/65.3.mp3","sounds/Kalimba/65.4.mp3","sounds/Kalimba/67.0.mp3","sounds/Kalimba/67.1.mp3","sounds/Kalimba/67.2.mp3","sounds/Kalimba/67.3.mp3","sounds/Kalimba/67.4.mp3","sounds/Kalimba/69.0.mp3","sounds/Kalimba/69.1.mp3","sounds/Kalimba/69.2.mp3","sounds/Kalimba/69.3.mp3","sounds/Kalimba/69.4.mp3","sounds/Kalimba/71.0.mp3","sounds/Kalimba/71.1.mp3","sounds/Kalimba/71.2.mp3","sounds/Kalimba/71.3.mp3","sounds/Kalimba/71.4.mp3","sounds/Kalimba/72.0.mp3","sounds/Kalimba/72.1.mp3","sounds/Kalimba/72.2.mp3","sounds/Kalimba/72.3.mp3","sounds/Kalimba/74.0.mp3","sounds/Kalimba/74.1.mp3","sounds/Kalimba/74.2.mp3","sounds/Kalimba/74.3.mp3","sounds/Kalimba/76.0.mp3","sounds/Kalimba/76.1.mp3","sounds/Kalimba/76.2.mp3","sounds/Kalimba/76.3.mp3","sounds/Kalimba/77.0.mp3","sounds/Kalimba/77.1.mp3","sounds/Kalimba/77.2.mp3","sounds/Kalimba/77.3.mp3","sounds/Kalimba/77.4.mp3","sounds/Kalimba/79.0.mp3","sounds/Kalimba/79.1.mp3","sounds/Kalimba/79.2.mp3","sounds/Kalimba/79.3.mp3","sounds/Kalimba/81.0.mp3","sounds/Kalimba/81.1.mp3","sounds/Kalimba/81.2.mp3","sounds/Kalimba/81.3.mp3","sounds/Kalimba/81.4.mp3","sounds/Kalimba/83.0.mp3","sounds/Kalimba/83.1.mp3","sounds/Kalimba/83.2.mp3","sounds/Kalimba/83.3.mp3","sounds/Kalimba/83.4.mp3","sounds/Kalimba/84.0.mp3","sounds/Kalimba/84.1.mp3","sounds/Kalimba/84.2.mp3","sounds/Kalimba/84.3.mp3","sounds/Kalimba/86.0.mp3","sounds/Kalimba/86.1.mp3","sounds/Kalimba/86.2.mp3","sounds/Kalimba/86.3.mp3","sounds/Kalimba/88.0.mp3","sounds/Kalimba/88.1.mp3","sounds/Kalimba/88.2.mp3","sounds/MusicBox/68.0.mp3","sounds/MusicBox/68.1.mp3","sounds/MusicBox/68.2.mp3","sounds/MusicBox/68.3.mp3","sounds/MusicBox/68.4.mp3","sounds/MusicBox/68.5.mp3","sounds/MusicBox/70.0.mp3","sounds/MusicBox/70.1.mp3","sounds/MusicBox/70.2.mp3","sounds/MusicBox/70.3.mp3","sounds/MusicBox/70.4.mp3","sounds/MusicBox/72.0.mp3","sounds/MusicBox/72.1.mp3","sounds/MusicBox/72.2.mp3","sounds/MusicBox/72.3.mp3","sounds/MusicBox/73.0.mp3","sounds/MusicBox/73.1.mp3","sounds/MusicBox/73.2.mp3","sounds/MusicBox/75.0.mp3","sounds/MusicBox/75.1.mp3","sounds/MusicBox/75.2.mp3","sounds/MusicBox/77.0.mp3","sounds/MusicBox/77.1.mp3","sounds/MusicBox/77.2.mp3","sounds/MusicBox/77.3.mp3","sounds/MusicBox/79.0.mp3","sounds/MusicBox/79.1.mp3","sounds/MusicBox/79.2.mp3","sounds/MusicBox/79.3.mp3","sounds/MusicBox/80.0.mp3","sounds/MusicBox/80.1.mp3","sounds/MusicBox/80.2.mp3","sounds/MusicBox/80.3.mp3","sounds/MusicBox/82.0.mp3","sounds/MusicBox/82.1.mp3","sounds/MusicBox/82.2.mp3","sounds/MusicBox/82.3.mp3","sounds/MusicBox/84.0.mp3","sounds/MusicBox/84.1.mp3","sounds/MusicBox/84.2.mp3","sounds/MusicBox/84.3.mp3","sounds/MusicBox/85.0.mp3","sounds/MusicBox/85.1.mp3","sounds/MusicBox/85.2.mp3","sounds/MusicBox/85.3.mp3","sounds/MusicBox/87.0.mp3","sounds/MusicBox/87.1.mp3","sounds/MusicBox/87.2.mp3","sounds/MusicBox/87.3.mp3","sounds/MusicBox/87.4.mp3","sounds/MusicBox/89.0.mp3","sounds/MusicBox/89.1.mp3","sounds/MusicBox/89.2.mp3","sounds/MusicBox/89.3.mp3","sounds/MusicBox/91.0.mp3","sounds/MusicBox/91.1.mp3","sounds/MusicBox/91.2.mp3","sounds/MusicBox/92.0.mp3","sounds/MusicBox/92.1.mp3","sounds/MusicBox/92.2.mp3","sounds/Water/Droplets/1.mp3","sounds/Water/Droplets/10.mp3","sounds/Water/Droplets/100.mp3","sounds/Water/Droplets/101.mp3","sounds/Water/Droplets/102.mp3","sounds/Water/Droplets/103.mp3","sounds/Water/Droplets/104.mp3","sounds/Water/Droplets/105.mp3","sounds/Water/Droplets/106.mp3","sounds/Water/Droplets/107.mp3","sounds/Water/Droplets/108.mp3","sounds/Water/Droplets/109.mp3","sounds/Water/Droplets/11.mp3","sounds/Water/Droplets/110.mp3","sounds/Water/Droplets/111.mp3","sounds/Water/Droplets/112.mp3","sounds/Water/Droplets/113.mp3","sounds/Water/Droplets/114.mp3","sounds/Water/Droplets/115.mp3","sounds/Water/Droplets/116.mp3","sounds/Water/Droplets/117.mp3","sounds/Water/Droplets/118.mp3","sounds/Water/Droplets/119.mp3","sounds/Water/Droplets/12.mp3","sounds/Water/Droplets/120.mp3","sounds/Water/Droplets/121.mp3","sounds/Water/Droplets/122.mp3","sounds/Water/Droplets/123.mp3","sounds/Water/Droplets/124.mp3","sounds/Water/Droplets/125.mp3","sounds/Water/Droplets/126.mp3","sounds/Water/Droplets/127.mp3","sounds/Water/Droplets/128.mp3","sounds/Water/Droplets/129.mp3","sounds/Water/Droplets/13.mp3","sounds/Water/Droplets/130.mp3","sounds/Water/Droplets/131.mp3","sounds/Water/Droplets/132.mp3","sounds/Water/Droplets/133.mp3","sounds/Water/Droplets/134.mp3","sounds/Water/Droplets/135.mp3","sounds/Water/Droplets/136.mp3","sounds/Water/Droplets/137.mp3","sounds/Water/Droplets/138.mp3","sounds/Water/Droplets/139.mp3","sounds/Water/Droplets/14.mp3","sounds/Water/Droplets/140.mp3","sounds/Water/Droplets/141.mp3","sounds/Water/Droplets/142.mp3","sounds/Water/Droplets/143.mp3","sounds/Water/Droplets/144.mp3","sounds/Water/Droplets/145.mp3","sounds/Water/Droplets/146.mp3","sounds/Water/Droplets/147.mp3","sounds/Water/Droplets/148.mp3","sounds/Water/Droplets/149.mp3","sounds/Water/Droplets/15.mp3","sounds/Water/Droplets/150.mp3","sounds/Water/Droplets/151.mp3","sounds/Water/Droplets/152.mp3","sounds/Water/Droplets/153.mp3","sounds/Water/Droplets/154.mp3","sounds/Water/Droplets/155.mp3","sounds/Water/Droplets/156.mp3","sounds/Water/Droplets/157.mp3","sounds/Water/Droplets/158.mp3","sounds/Water/Droplets/159.mp3","sounds/Water/Droplets/16.mp3","sounds/Water/Droplets/160.mp3","sounds/Water/Droplets/161.mp3","sounds/Water/Droplets/162.mp3","sounds/Water/Droplets/163.mp3","sounds/Water/Droplets/164.mp3","sounds/Water/Droplets/165.mp3","sounds/Water/Droplets/166.mp3","sounds/Water/Droplets/167.mp3","sounds/Water/Droplets/168.mp3","sounds/Water/Droplets/169.mp3","sounds/Water/Droplets/17.mp3","sounds/Water/Droplets/170.mp3","sounds/Water/Droplets/171.mp3","sounds/Water/Droplets/172.mp3","sounds/Water/Droplets/173.mp3","sounds/Water/Droplets/174.mp3","sounds/Water/Droplets/175.mp3","sounds/Water/Droplets/176.mp3","sounds/Water/Droplets/177.mp3","sounds/Water/Droplets/178.mp3","sounds/Water/Droplets/179.mp3","sounds/Water/Droplets/18.mp3","sounds/Water/Droplets/180.mp3","sounds/Water/Droplets/181.mp3","sounds/Water/Droplets/182.mp3","sounds/Water/Droplets/183.mp3","sounds/Water/Droplets/184.mp3","sounds/Water/Droplets/185.mp3","sounds/Water/Droplets/186.mp3","sounds/Water/Droplets/187.mp3","sounds/Water/Droplets/188.mp3","sounds/Water/Droplets/189.mp3","sounds/Water/Droplets/19.mp3","sounds/Water/Droplets/190.mp3","sounds/Water/Droplets/191.mp3","sounds/Water/Droplets/192.mp3","sounds/Water/Droplets/193.mp3","sounds/Water/Droplets/194.mp3","sounds/Water/Droplets/195.mp3","sounds/Water/Droplets/196.mp3","sounds/Water/Droplets/197.mp3","sounds/Water/Droplets/198.mp3","sounds/Water/Droplets/199.mp3","sounds/Water/Droplets/2.mp3","sounds/Water/Droplets/20.mp3","sounds/Water/Droplets/200.mp3","sounds/Water/Droplets/201.mp3","sounds/Water/Droplets/202.mp3","sounds/Water/Droplets/203.mp3","sounds/Water/Droplets/204.mp3","sounds/Water/Droplets/205.mp3","sounds/Water/Droplets/206.mp3","sounds/Water/Droplets/207.mp3","sounds/Water/Droplets/208.mp3","sounds/Water/Droplets/209.mp3","sounds/Water/Droplets/21.mp3","sounds/Water/Droplets/210.mp3","sounds/Water/Droplets/211.mp3","sounds/Water/Droplets/212.mp3","sounds/Water/Droplets/213.mp3","sounds/Water/Droplets/214.mp3","sounds/Water/Droplets/215.mp3","sounds/Water/Droplets/216.mp3","sounds/Water/Droplets/217.mp3","sounds/Water/Droplets/218.mp3","sounds/Water/Droplets/219.mp3","sounds/Water/Droplets/22.mp3","sounds/Water/Droplets/220.mp3","sounds/Water/Droplets/221.mp3","sounds/Water/Droplets/222.mp3","sounds/Water/Droplets/223.mp3","sounds/Water/Droplets/224.mp3","sounds/Water/Droplets/225.mp3","sounds/Water/Droplets/226.mp3","sounds/Water/Droplets/227.mp3","sounds/Water/Droplets/228.mp3","sounds/Water/Droplets/229.mp3","sounds/Water/Droplets/23.mp3","sounds/Water/Droplets/230.mp3","sounds/Water/Droplets/231.mp3","sounds/Water/Droplets/232.mp3","sounds/Water/Droplets/233.mp3","sounds/Water/Droplets/234.mp3","sounds/Water/Droplets/235.mp3","sounds/Water/Droplets/236.mp3","sounds/Water/Droplets/237.mp3","sounds/Water/Droplets/238.mp3","sounds/Water/Droplets/239.mp3","sounds/Water/Droplets/24.mp3","sounds/Water/Droplets/240.mp3","sounds/Water/Droplets/241.mp3","sounds/Water/Droplets/242.mp3","sounds/Water/Droplets/243.mp3","sounds/Water/Droplets/244.mp3","sounds/Water/Droplets/245.mp3","sounds/Water/Droplets/246.mp3","sounds/Water/Droplets/247.mp3","sounds/Water/Droplets/248.mp3","sounds/Water/Droplets/249.mp3","sounds/Water/Droplets/25.mp3","sounds/Water/Droplets/250.mp3","sounds/Water/Droplets/251.mp3","sounds/Water/Droplets/252.mp3","sounds/Water/Droplets/253.mp3","sounds/Water/Droplets/254.mp3","sounds/Water/Droplets/255.mp3","sounds/Water/Droplets/256.mp3","sounds/Water/Droplets/257.mp3","sounds/Water/Droplets/258.mp3","sounds/Water/Droplets/259.mp3","sounds/Water/Droplets/26.mp3","sounds/Water/Droplets/260.mp3","sounds/Water/Droplets/261.mp3","sounds/Water/Droplets/262.mp3","sounds/Water/Droplets/263.mp3","sounds/Water/Droplets/264.mp3","sounds/Water/Droplets/265.mp3","sounds/Water/Droplets/266.mp3","sounds/Water/Droplets/267.mp3","sounds/Water/Droplets/268.mp3","sounds/Water/Droplets/269.mp3","sounds/Water/Droplets/27.mp3","sounds/Water/Droplets/270.mp3","sounds/Water/Droplets/271.mp3","sounds/Water/Droplets/272.mp3","sounds/Water/Droplets/273.mp3","sounds/Water/Droplets/274.mp3","sounds/Water/Droplets/275.mp3","sounds/Water/Droplets/276.mp3","sounds/Water/Droplets/277.mp3","sounds/Water/Droplets/278.mp3","sounds/Water/Droplets/279.mp3","sounds/Water/Droplets/28.mp3","sounds/Water/Droplets/280.mp3","sounds/Water/Droplets/281.mp3","sounds/Water/Droplets/282.mp3","sounds/Water/Droplets/283.mp3","sounds/Water/Droplets/284.mp3","sounds/Water/Droplets/285.mp3","sounds/Water/Droplets/286.mp3","sounds/Water/Droplets/287.mp3","sounds/Water/Droplets/288.mp3","sounds/Water/Droplets/289.mp3","sounds/Water/Droplets/29.mp3","sounds/Water/Droplets/290.mp3","sounds/Water/Droplets/291.mp3","sounds/Water/Droplets/292.mp3","sounds/Water/Droplets/293.mp3","sounds/Water/Droplets/294.mp3","sounds/Water/Droplets/295.mp3","sounds/Water/Droplets/296.mp3","sounds/Water/Droplets/297.mp3","sounds/Water/Droplets/298.mp3","sounds/Water/Droplets/299.mp3","sounds/Water/Droplets/3.mp3","sounds/Water/Droplets/30.mp3","sounds/Water/Droplets/300.mp3","sounds/Water/Droplets/301.mp3","sounds/Water/Droplets/302.mp3","sounds/Water/Droplets/303.mp3","sounds/Water/Droplets/304.mp3","sounds/Water/Droplets/305.mp3","sounds/Water/Droplets/306.mp3","sounds/Water/Droplets/307.mp3","sounds/Water/Droplets/308.mp3","sounds/Water/Droplets/309.mp3","sounds/Water/Droplets/31.mp3","sounds/Water/Droplets/310.mp3","sounds/Water/Droplets/311.mp3","sounds/Water/Droplets/312.mp3","sounds/Water/Droplets/313.mp3","sounds/Water/Droplets/314.mp3","sounds/Water/Droplets/315.mp3","sounds/Water/Droplets/316.mp3","sounds/Water/Droplets/317.mp3","sounds/Water/Droplets/318.mp3","sounds/Water/Droplets/319.mp3","sounds/Water/Droplets/32.mp3","sounds/Water/Droplets/320.mp3","sounds/Water/Droplets/321.mp3","sounds/Water/Droplets/322.mp3","sounds/Water/Droplets/323.mp3","sounds/Water/Droplets/324.mp3","sounds/Water/Droplets/325.mp3","sounds/Water/Droplets/326.mp3","sounds/Water/Droplets/327.mp3","sounds/Water/Droplets/328.mp3","sounds/Water/Droplets/329.mp3","sounds/Water/Droplets/33.mp3","sounds/Water/Droplets/330.mp3","sounds/Water/Droplets/331.mp3","sounds/Water/Droplets/332.mp3","sounds/Water/Droplets/333.mp3","sounds/Water/Droplets/334.mp3","sounds/Water/Droplets/335.mp3","sounds/Water/Droplets/336.mp3","sounds/Water/Droplets/337.mp3","sounds/Water/Droplets/338.mp3","sounds/Water/Droplets/339.mp3","sounds/Water/Droplets/34.mp3","sounds/Water/Droplets/340.mp3","sounds/Water/Droplets/341.mp3","sounds/Water/Droplets/342.mp3","sounds/Water/Droplets/343.mp3","sounds/Water/Droplets/344.mp3","sounds/Water/Droplets/345.mp3","sounds/Water/Droplets/346.mp3","sounds/Water/Droplets/347.mp3","sounds/Water/Droplets/348.mp3","sounds/Water/Droplets/349.mp3","sounds/Water/Droplets/35.mp3","sounds/Water/Droplets/350.mp3","sounds/Water/Droplets/351.mp3","sounds/Water/Droplets/352.mp3","sounds/Water/Droplets/353.mp3","sounds/Water/Droplets/354.mp3","sounds/Water/Droplets/355.mp3","sounds/Water/Droplets/356.mp3","sounds/Water/Droplets/357.mp3","sounds/Water/Droplets/358.mp3","sounds/Water/Droplets/359.mp3","sounds/Water/Droplets/36.mp3","sounds/Water/Droplets/360.mp3","sounds/Water/Droplets/361.mp3","sounds/Water/Droplets/362.mp3","sounds/Water/Droplets/363.mp3","sounds/Water/Droplets/364.mp3","sounds/Water/Droplets/365.mp3","sounds/Water/Droplets/366.mp3","sounds/Water/Droplets/367.mp3","sounds/Water/Droplets/368.mp3","sounds/Water/Droplets/369.mp3","sounds/Water/Droplets/37.mp3","sounds/Water/Droplets/370.mp3","sounds/Water/Droplets/371.mp3","sounds/Water/Droplets/372.mp3","sounds/Water/Droplets/373.mp3","sounds/Water/Droplets/374.mp3","sounds/Water/Droplets/375.mp3","sounds/Water/Droplets/376.mp3","sounds/Water/Droplets/377.mp3","sounds/Water/Droplets/378.mp3","sounds/Water/Droplets/379.mp3","sounds/Water/Droplets/38.mp3","sounds/Water/Droplets/380.mp3","sounds/Water/Droplets/381.mp3","sounds/Water/Droplets/382.mp3","sounds/Water/Droplets/383.mp3","sounds/Water/Droplets/384.mp3","sounds/Water/Droplets/385.mp3","sounds/Water/Droplets/386.mp3","sounds/Water/Droplets/387.mp3","sounds/Water/Droplets/388.mp3","sounds/Water/Droplets/389.mp3","sounds/Water/Droplets/39.mp3","sounds/Water/Droplets/390.mp3","sounds/Water/Droplets/391.mp3","sounds/Water/Droplets/392.mp3","sounds/Water/Droplets/393.mp3","sounds/Water/Droplets/394.mp3","sounds/Water/Droplets/395.mp3","sounds/Water/Droplets/396.mp3","sounds/Water/Droplets/397.mp3","sounds/Water/Droplets/398.mp3","sounds/Water/Droplets/399.mp3","sounds/Water/Droplets/4.mp3","sounds/Water/Droplets/40.mp3","sounds/Water/Droplets/400.mp3","sounds/Water/Droplets/401.mp3","sounds/Water/Droplets/402.mp3","sounds/Water/Droplets/403.mp3","sounds/Water/Droplets/404.mp3","sounds/Water/Droplets/405.mp3","sounds/Water/Droplets/406.mp3","sounds/Water/Droplets/407.mp3","sounds/Water/Droplets/408.mp3","sounds/Water/Droplets/409.mp3","sounds/Water/Droplets/41.mp3","sounds/Water/Droplets/410.mp3","sounds/Water/Droplets/411.mp3","sounds/Water/Droplets/412.mp3","sounds/Water/Droplets/413.mp3","sounds/Water/Droplets/414.mp3","sounds/Water/Droplets/415.mp3","sounds/Water/Droplets/416.mp3","sounds/Water/Droplets/417.mp3","sounds/Water/Droplets/418.mp3","sounds/Water/Droplets/419.mp3","sounds/Water/Droplets/42.mp3","sounds/Water/Droplets/420.mp3","sounds/Water/Droplets/421.mp3","sounds/Water/Droplets/422.mp3","sounds/Water/Droplets/423.mp3","sounds/Water/Droplets/424.mp3","sounds/Water/Droplets/425.mp3","sounds/Water/Droplets/426.mp3","sounds/Water/Droplets/427.mp3","sounds/Water/Droplets/428.mp3","sounds/Water/Droplets/429.mp3","sounds/Water/Droplets/43.mp3","sounds/Water/Droplets/430.mp3","sounds/Water/Droplets/431.mp3","sounds/Water/Droplets/432.mp3","sounds/Water/Droplets/433.mp3","sounds/Water/Droplets/434.mp3","sounds/Water/Droplets/435.mp3","sounds/Water/Droplets/436.mp3","sounds/Water/Droplets/437.mp3","sounds/Water/Droplets/438.mp3","sounds/Water/Droplets/439.mp3","sounds/Water/Droplets/44.mp3","sounds/Water/Droplets/440.mp3","sounds/Water/Droplets/441.mp3","sounds/Water/Droplets/442.mp3","sounds/Water/Droplets/443.mp3","sounds/Water/Droplets/444.mp3","sounds/Water/Droplets/445.mp3","sounds/Water/Droplets/446.mp3","sounds/Water/Droplets/447.mp3","sounds/Water/Droplets/448.mp3","sounds/Water/Droplets/449.mp3","sounds/Water/Droplets/45.mp3","sounds/Water/Droplets/450.mp3","sounds/Water/Droplets/451.mp3","sounds/Water/Droplets/452.mp3","sounds/Water/Droplets/453.mp3","sounds/Water/Droplets/454.mp3","sounds/Water/Droplets/455.mp3","sounds/Water/Droplets/456.mp3","sounds/Water/Droplets/457.mp3","sounds/Water/Droplets/458.mp3","sounds/Water/Droplets/459.mp3","sounds/Water/Droplets/46.mp3","sounds/Water/Droplets/460.mp3","sounds/Water/Droplets/461.mp3","sounds/Water/Droplets/462.mp3","sounds/Water/Droplets/463.mp3","sounds/Water/Droplets/464.mp3","sounds/Water/Droplets/465.mp3","sounds/Water/Droplets/466.mp3","sounds/Water/Droplets/467.mp3","sounds/Water/Droplets/468.mp3","sounds/Water/Droplets/469.mp3","sounds/Water/Droplets/47.mp3","sounds/Water/Droplets/470.mp3","sounds/Water/Droplets/471.mp3","sounds/Water/Droplets/472.mp3","sounds/Water/Droplets/473.mp3","sounds/Water/Droplets/474.mp3","sounds/Water/Droplets/475.mp3","sounds/Water/Droplets/476.mp3","sounds/Water/Droplets/477.mp3","sounds/Water/Droplets/478.mp3","sounds/Water/Droplets/479.mp3","sounds/Water/Droplets/48.mp3","sounds/Water/Droplets/480.mp3","sounds/Water/Droplets/481.mp3","sounds/Water/Droplets/482.mp3","sounds/Water/Droplets/483.mp3","sounds/Water/Droplets/484.mp3","sounds/Water/Droplets/485.mp3","sounds/Water/Droplets/486.mp3","sounds/Water/Droplets/487.mp3","sounds/Water/Droplets/488.mp3","sounds/Water/Droplets/489.mp3","sounds/Water/Droplets/49.mp3","sounds/Water/Droplets/490.mp3","sounds/Water/Droplets/491.mp3","sounds/Water/Droplets/492.mp3","sounds/Water/Droplets/493.mp3","sounds/Water/Droplets/494.mp3","sounds/Water/Droplets/495.mp3","sounds/Water/Droplets/496.mp3","sounds/Water/Droplets/497.mp3","sounds/Water/Droplets/498.mp3","sounds/Water/Droplets/499.mp3","sounds/Water/Droplets/5.mp3","sounds/Water/Droplets/50.mp3","sounds/Water/Droplets/500.mp3","sounds/Water/Droplets/501.mp3","sounds/Water/Droplets/502.mp3","sounds/Water/Droplets/503.mp3","sounds/Water/Droplets/504.mp3","sounds/Water/Droplets/505.mp3","sounds/Water/Droplets/506.mp3","sounds/Water/Droplets/507.mp3","sounds/Water/Droplets/508.mp3","sounds/Water/Droplets/509.mp3","sounds/Water/Droplets/51.mp3","sounds/Water/Droplets/510.mp3","sounds/Water/Droplets/511.mp3","sounds/Water/Droplets/512.mp3","sounds/Water/Droplets/513.mp3","sounds/Water/Droplets/514.mp3","sounds/Water/Droplets/515.mp3","sounds/Water/Droplets/516.mp3","sounds/Water/Droplets/517.mp3","sounds/Water/Droplets/518.mp3","sounds/Water/Droplets/519.mp3","sounds/Water/Droplets/52.mp3","sounds/Water/Droplets/520.mp3","sounds/Water/Droplets/521.mp3","sounds/Water/Droplets/522.mp3","sounds/Water/Droplets/523.mp3","sounds/Water/Droplets/524.mp3","sounds/Water/Droplets/525.mp3","sounds/Water/Droplets/526.mp3","sounds/Water/Droplets/527.mp3","sounds/Water/Droplets/528.mp3","sounds/Water/Droplets/529.mp3","sounds/Water/Droplets/53.mp3","sounds/Water/Droplets/530.mp3","sounds/Water/Droplets/531.mp3","sounds/Water/Droplets/532.mp3","sounds/Water/Droplets/533.mp3","sounds/Water/Droplets/534.mp3","sounds/Water/Droplets/535.mp3","sounds/Water/Droplets/536.mp3","sounds/Water/Droplets/537.mp3","sounds/Water/Droplets/538.mp3","sounds/Water/Droplets/539.mp3","sounds/Water/Droplets/54.mp3","sounds/Water/Droplets/540.mp3","sounds/Water/Droplets/541.mp3","sounds/Water/Droplets/542.mp3","sounds/Water/Droplets/543.mp3","sounds/Water/Droplets/545.mp3","sounds/Water/Droplets/546.mp3","sounds/Water/Droplets/547.mp3","sounds/Water/Droplets/548.mp3","sounds/Water/Droplets/549.mp3","sounds/Water/Droplets/55.mp3","sounds/Water/Droplets/550.mp3","sounds/Water/Droplets/551.mp3","sounds/Water/Droplets/552.mp3","sounds/Water/Droplets/553.mp3","sounds/Water/Droplets/554.mp3","sounds/Water/Droplets/555.mp3","sounds/Water/Droplets/556.mp3","sounds/Water/Droplets/557.mp3","sounds/Water/Droplets/558.mp3","sounds/Water/Droplets/559.mp3","sounds/Water/Droplets/56.mp3","sounds/Water/Droplets/560.mp3","sounds/Water/Droplets/561.mp3","sounds/Water/Droplets/562.mp3","sounds/Water/Droplets/563.mp3","sounds/Water/Droplets/564.mp3","sounds/Water/Droplets/565.mp3","sounds/Water/Droplets/566.mp3","sounds/Water/Droplets/567.mp3","sounds/Water/Droplets/568.mp3","sounds/Water/Droplets/569.mp3","sounds/Water/Droplets/57.mp3","sounds/Water/Droplets/570.mp3","sounds/Water/Droplets/571.mp3","sounds/Water/Droplets/572.mp3","sounds/Water/Droplets/573.mp3","sounds/Water/Droplets/574.mp3","sounds/Water/Droplets/575.mp3","sounds/Water/Droplets/576.mp3","sounds/Water/Droplets/577.mp3","sounds/Water/Droplets/578.mp3","sounds/Water/Droplets/579.mp3","sounds/Water/Droplets/58.mp3","sounds/Water/Droplets/59.mp3","sounds/Water/Droplets/6.mp3","sounds/Water/Droplets/60.mp3","sounds/Water/Droplets/61.mp3","sounds/Water/Droplets/62.mp3","sounds/Water/Droplets/63.mp3","sounds/Water/Droplets/64.mp3","sounds/Water/Droplets/65.mp3","sounds/Water/Droplets/66.mp3","sounds/Water/Droplets/67.mp3","sounds/Water/Droplets/68.mp3","sounds/Water/Droplets/69.mp3","sounds/Water/Droplets/7.mp3","sounds/Water/Droplets/70.mp3","sounds/Water/Droplets/71.mp3","sounds/Water/Droplets/72.mp3","sounds/Water/Droplets/73.mp3","sounds/Water/Droplets/74.mp3","sounds/Water/Droplets/75.mp3","sounds/Water/Droplets/76.mp3","sounds/Water/Droplets/77.mp3","sounds/Water/Droplets/78.mp3","sounds/Water/Droplets/79.mp3","sounds/Water/Droplets/8.mp3","sounds/Water/Droplets/80.mp3","sounds/Water/Droplets/81.mp3","sounds/Water/Droplets/82.mp3","sounds/Water/Droplets/83.mp3","sounds/Water/Droplets/84.mp3","sounds/Water/Droplets/85.mp3","sounds/Water/Droplets/86.mp3","sounds/Water/Droplets/87.mp3","sounds/Water/Droplets/88.mp3","sounds/Water/Droplets/89.mp3","sounds/Water/Droplets/9.mp3","sounds/Water/Droplets/90.mp3","sounds/Water/Droplets/91.mp3","sounds/Water/Droplets/92.mp3","sounds/Water/Droplets/93.mp3","sounds/Water/Droplets/94.mp3","sounds/Water/Droplets/95.mp3","sounds/Water/Droplets/96.mp3","sounds/Water/Droplets/97.mp3","sounds/Water/Droplets/98.mp3","sounds/Water/Droplets/99.mp3","sounds/Water/Paddling/1.mp3","sounds/Water/Paddling/10.mp3","sounds/Water/Paddling/100.mp3","sounds/Water/Paddling/11.mp3","sounds/Water/Paddling/12.mp3","sounds/Water/Paddling/13.mp3","sounds/Water/Paddling/14.mp3","sounds/Water/Paddling/15.mp3","sounds/Water/Paddling/16.mp3","sounds/Water/Paddling/17.mp3","sounds/Water/Paddling/18.mp3","sounds/Water/Paddling/19.mp3","sounds/Water/Paddling/2.mp3","sounds/Water/Paddling/20.mp3","sounds/Water/Paddling/21.mp3","sounds/Water/Paddling/22.mp3","sounds/Water/Paddling/23.mp3","sounds/Water/Paddling/24.mp3","sounds/Water/Paddling/25.mp3","sounds/Water/Paddling/26.mp3","sounds/Water/Paddling/27.mp3","sounds/Water/Paddling/28.mp3","sounds/Water/Paddling/29.mp3","sounds/Water/Paddling/3.mp3","sounds/Water/Paddling/30.mp3","sounds/Water/Paddling/31.mp3","sounds/Water/Paddling/32.mp3","sounds/Water/Paddling/33.mp3","sounds/Water/Paddling/34.mp3","sounds/Water/Paddling/35.mp3","sounds/Water/Paddling/36.mp3","sounds/Water/Paddling/37.mp3","sounds/Water/Paddling/38.mp3","sounds/Water/Paddling/39.mp3","sounds/Water/Paddling/4.mp3","sounds/Water/Paddling/40.mp3","sounds/Water/Paddling/41.mp3","sounds/Water/Paddling/42.mp3","sounds/Water/Paddling/43.mp3","sounds/Water/Paddling/44.mp3","sounds/Water/Paddling/45.mp3","sounds/Water/Paddling/46.mp3","sounds/Water/Paddling/47.mp3","sounds/Water/Paddling/48.mp3","sounds/Water/Paddling/49.mp3","sounds/Water/Paddling/5.mp3","sounds/Water/Paddling/50.mp3","sounds/Water/Paddling/51.mp3","sounds/Water/Paddling/52.mp3","sounds/Water/Paddling/53.mp3","sounds/Water/Paddling/54.mp3","sounds/Water/Paddling/55.mp3","sounds/Water/Paddling/56.mp3","sounds/Water/Paddling/57.mp3","sounds/Water/Paddling/58.mp3","sounds/Water/Paddling/59.mp3","sounds/Water/Paddling/6.mp3","sounds/Water/Paddling/60.mp3","sounds/Water/Paddling/61.mp3","sounds/Water/Paddling/62.mp3","sounds/Water/Paddling/63.mp3","sounds/Water/Paddling/64.mp3","sounds/Water/Paddling/65.mp3","sounds/Water/Paddling/66.mp3","sounds/Water/Paddling/67.mp3","sounds/Water/Paddling/68.mp3","sounds/Water/Paddling/69.mp3","sounds/Water/Paddling/7.mp3","sounds/Water/Paddling/70.mp3","sounds/Water/Paddling/71.mp3","sounds/Water/Paddling/72.mp3","sounds/Water/Paddling/73.mp3","sounds/Water/Paddling/74.mp3","sounds/Water/Paddling/75.mp3","sounds/Water/Paddling/76.mp3","sounds/Water/Paddling/77.mp3","sounds/Water/Paddling/78.mp3","sounds/Water/Paddling/79.mp3","sounds/Water/Paddling/8.mp3","sounds/Water/Paddling/80.mp3","sounds/Water/Paddling/81.mp3","sounds/Water/Paddling/82.mp3","sounds/Water/Paddling/83.mp3","sounds/Water/Paddling/84.mp3","sounds/Water/Paddling/85.mp3","sounds/Water/Paddling/86.mp3","sounds/Water/Paddling/87.mp3","sounds/Water/Paddling/88.mp3","sounds/Water/Paddling/89.mp3","sounds/Water/Paddling/9.mp3","sounds/Water/Paddling/90.mp3","sounds/Water/Paddling/91.mp3","sounds/Water/Paddling/92.mp3","sounds/Water/Paddling/93.mp3","sounds/Water/Paddling/94.mp3","sounds/Water/Paddling/95.mp3","sounds/Water/Paddling/96.mp3","sounds/Water/Paddling/97.mp3","sounds/Water/Paddling/98.mp3","sounds/Water/Paddling/99.mp3"
+ ]
+ });
+
+ $("#begin").click(function() {
+ $("#begin").hide();
+ $("#loading").show();
+ app.play();
+ });
+ });
+ </script>
+ </head>
+ <body>
+ <div id="loading">
+ <h3>Loading</h3>
+ </div>
+ <div id="begin">
+ <div id="begininner">
+ <h3>Partial Emergence</h3>
+ <h2>Press to begin</h2>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/site/app/partialemergence/instruments_hybrid.inc b/site/app/partialemergence/instruments_hybrid.inc
new file mode 100644
index 0000000..1d9f77f
--- /dev/null
+++ b/site/app/partialemergence/instruments_hybrid.inc
@@ -0,0 +1,254 @@
+#ifndef INC_HYBRID_INSTR
+#define INC_HYBRID_INSTR ##
+
+#include "/instruments_water.inc"
+#include "/instruments_idiophone.inc"
+#include "/array_tools.udo"
+#include "/wavetables.udo"
+#include "/soundxdb.udo"
+#include "/sequencing_melodic.udo"
+
+; reson
+instr note_hybrid1
+ inote = p4
+
+ ifreq = cpsmidinn(inote)
+ ifileid = arr_random(gisnd_waterdrop)
+
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+
+ ipitch = random(0.8, 1.6)
+
+ itdur = (idur / ipitch) + random(0.2, 0.5)
+ p3 = itdur
+ ;aL, aR loscil 1, ipitch, ifn, 1
+ atime line 0, p3, idur*0.9
+ aL, aR mincer atime, 1, ipitch, ifn, 0, 128 ; 1024
+ aLr resony aL, ifreq, 2, random(8, 16), 10
+ aRr resony aL, ifreq, 2, random(8, 16), 10
+
+ aLr pareq aLr, ifreq, 0.4, 0.7
+ aRr pareq aRr, ifreq, 0.4, 0.7
+
+ aL balance aLr, aL
+ aR balance aRr, aR
+ aL dcblock aL
+ aR dcblock aR
+
+ kamp linseg 1, itdur*0.9, 1, itdur*0.1, 0
+
+ iamp = random(0.7, 1)
+ ipan = random(0, 1)
+ aL *= kamp * iamp * ipan
+ aR *= kamp * iamp * (1-ipan)
+ bus_mix("pvsamp1", aL*random(0, 0.3), aR*random(0, 0.3))
+ bus_mix("reverb1", aL*0.1, aR*0.1)
+ bus_mix("delay2", aL*random(0, 0.01), aR*random(0, 0.01))
+ bus_mix("master", aL, aR)
+endin
+
+
+instr phrase_hybrid1
+ if (random(0, 1) > 0.5) then
+ ifreqstart = random(1, 10)
+ ifreqend = random(1, 10)
+ else
+ ifreqstart = random(1, 10)
+ ifreqend = random(1, 10)
+ endif
+ kfreq linseg ifreqstart, p3, ifreqend
+
+ kamp init 1
+ ktrig metro kfreq
+ if (ktrig == 1) then
+ knote = min:k(mel_randomnote:k() + (round:k(random:k(-2, 2)) * 12), 127)
+ if (random:k(0, 1) >= 0.5) then
+ schedulek("note_idiophone1", random:k(0, 0.1), 0.1, knote, kamp*2)
+ else
+ schedulek("note_hybrid1", random:k(0, 0.1), 0.1, knote)
+ endif
+ endif
+endin
+
+
+/*
+ Chord changing from idiophone to drops
+
+ p4 one note (0 = play one note, 1 = play chord)
+*/
+instr phrase_hybrid2
+ ionenote = p4
+
+ if (ionenote == 1) then
+ knote init mel_randomnote() + (round(random(-2, 4)) * 12)
+ endif
+
+ if (random(0, 1) > 0.5) then
+ ifreqstart = random(10, 30)
+ ifreqend = random(2, 10)
+ else
+ ifreqstart = random(2, 10)
+ ifreqend = random(10, 30)
+ endif
+ kfreq linseg ifreqstart, p3, ifreqend
+
+ kamp linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+ ktransition line 1, p3, 0
+
+ ktrig metro kfreq
+ if (ktrig == 1) then
+ if (random:k(0, 1) >= ktransition) then
+ if (ionenote != 1) then
+ knote = mel_randomnote:k() + (round:k(random:k(-2, 4)) * 12)
+ endif
+ schedulek("note_idiophone1", random:k(0, 0.1), 0.1, min:k(knote, 127), kamp*2)
+ else
+ schedulek("note_drop1", random:k(0, 0.1), 0.1)
+ endif
+ endif
+endin
+
+
+opcode portchord_drop, aa, iio
+ ifreqmult, ireadmode, index xin
+
+ ifileid = arr_random(gisnd_waterdrop)
+ ifftsize = 16
+
+ ifn = gisounddb[ifileid][0]
+ ichannels = gisounddb[ifileid][1]
+ idur = gisounddb[ifileid][2]
+ irmsnorm = gisounddb[ifileid][3]
+
+ kampb table index, gimel_amps
+ kfreq table index, gimel_freqs
+
+ kamp portk kampb, (i(gkseq_beattime) * gimel_portamento_beatratio) ; fade out when change
+
+ kpitch = line(random(0.8, 1.2), p3, random(0.8, 1.2))
+
+ istart = random(0.05, 0.2)
+ iend = random(istart+0.1, 0.8)
+ atime = abs(oscil(iend - istart, random(0.001, 0.1), gifnSine, random(0, 1))) + istart
+
+ klfo = oscil:k(random(0.0001, 0.009), random(1, 5)) + 1
+ kfreq *= klfo
+
+ aL init 0
+ aR init 0
+ if (kamp != 0) then
+ if (ireadmode == 0) then
+ aLm, aRm mincer atime*idur, kamp, kpitch, ifn, 0, ifftsize
+ else
+ aLm, aRm sndwarpst kamp, atime*idur, kpitch, ifn, 0, 4410, 441, 8, gifnHalfSine, 1
+ endif
+ aL resony aLm, kfreq*ifreqmult, 2, random(8, 16), 10
+ aR resony aRm, kfreq*ifreqmult, 2, random(8, 16), 10
+ aL balance aL, aLm
+ aR balance aR, aRm
+ aL butterhp aL, 210
+ aR butterhp aR, 210
+ endif
+ ipan = random(0, 1)
+
+ ;aL *= (1 - irmsnorm) * 0.5 * ipan
+ ;aR *= (1 - irmsnorm) * 0.5 * (1-ipan)
+
+ ; recursion for all chord parts
+ if (index + 1 < ftlen(gimel_amps)) then
+ aLx, aRx portchord_drop ifreqmult, ireadmode, index + 1
+ aL += aLx
+ aR += aRx
+ endif
+ xout aL, aR
+endop
+
+
+
+instr phrase_hybridstretch1
+ kamp linsegr 1, p3, 1, 1, 0
+ kampx3 init 0.2
+ kreverb1 init 0
+ kreverb2 init 0
+ kreverb3 init 0
+ aL1, aR1 portchord_drop 0.5, 1
+ ;aL2, aR2 portchord_drop 1, 1
+ aL3, aR3 portchord_drop 4, 1
+ k3amp = abs:k(oscil:k(1, 0.1))
+
+ ;aL = (aL1 + aL2 + (aL3 * port(k3amp, 1))) * kamp
+ ;aR = (aR1 + aR2 + (aR3 * port(k3amp, 1))) * kamp
+
+ aL = (aL1 + (aL3 * port(k3amp, 1))) * kamp
+ aR = (aR1 + (aR3 * port(k3amp, 1))) * kamp
+
+ kchangemetro = metro(0.2)
+ if (kchangemetro == 1) then
+ if (random:k(0, 1) > 0.2) then
+ kampx3 = random:k(0.2, 1)
+ endif
+ if (random:k(0, 1) > 0.5) then
+ kreverb1 = random:k(0, 0.4)
+ endif
+ if (random:k(0, 1) > 0.5) then
+ kreverb2 = random:k(0, 0.4)
+ endif
+ if (random:k(0, 1) > 0.5) then
+ kreverb3 = random:k(0, 0.4)
+ endif
+ endif
+
+ aL pareq aL, 1000, 0.4, 0.7
+ aR pareq aR, 1000, 0.4, 0.7
+
+ bus_mix("reverb1", aL1*kreverb1, aR1*kreverb1)
+ ;bus_mix("reverb1", aL2*kreverb2, aR2*kreverb2)
+ bus_mix("reverb1", aL3*kreverb3, aR3*kreverb3)
+ bus_mix("master", aL, aR)
+endin
+
+
+/*
+; pvsmorph
+instr note_hybrid1x
+ inote = p4
+
+ ifileidBox, ipitchBox sounddb_mel_nearestnote gicol_idiophone, inote
+ ifileidWater = arr_random(gisnd_waterdrop)
+
+ ifnBox = gisounddb[ifileidBox][0]
+ idurBox = gisounddb[ifileidBox][2]
+ ifnWater = gisounddb[ifileidWater][0]
+ idurWater = gisounddb[ifileidWater][2]
+
+ ipitchWater = random(0.8, 1)
+
+ p3 = min((idurWater / ipitchWater), (idurBox / ipitchBox))
+
+ aboxL, aboxR loscil 1, ipitchBox, ifnBox, 1
+ awaterL, awaterR loscil 1, ipitchWater, ifnWater, 1
+
+ ir = 1024
+ fboxL pvsanal aboxL, ir, ir/4, ir, 1
+ fboxR pvsanal aboxR, ir, ir/4, ir, 1
+ fwaterL pvsanal awaterL, ir, ir/4, ir, 1
+ fwaterR pvsanal awaterR, ir, ir/4, ir, 1
+ fL pvsmorph fboxL, fwaterL, 1, 0
+ fR pvsmorph fboxR, fwaterR, 1, 0
+ aL pvsynth fL
+ aR pvsynth fR
+
+ kamp linseg 1, p3*0.9, 1, p3*0.1, 0
+
+ iamp = 5
+
+ aL *= kamp * iamp
+ aR *= kamp * iamp
+ bus_mix("pvsamp1", aL*random(0, 0.1), aR*random(0, 0.1))
+ bus_mix("reverb1", aL*random(0, 0.1), aR*random(0, 0.1))
+ bus_mix("master", aL, aR)
+endin
+*/
+
+#end
diff --git a/site/app/partialemergence/instruments_idiophone.inc b/site/app/partialemergence/instruments_idiophone.inc
new file mode 100644
index 0000000..f939ad9
--- /dev/null
+++ b/site/app/partialemergence/instruments_idiophone.inc
@@ -0,0 +1,707 @@
+#ifndef INC_MUSICBOX_INSTR
+#define INC_MUSICBOX_INSTR ##
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Partial Emergence
+ by Richard Knight 2022
+
+ Installation submission for the International Csound Conference 2022
+
+ Idiophone instruments
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#include "/soundxdb.udo"
+#include "/array_tools.udo"
+#include "/sequencing_melodic.udo"
+#include "/sequencing_melodic_portamento.udo"
+#include "/bussing.udo"
+#include "/frequency_tools.udo"
+#include "/instrument_portchord.udo"
+#include "/instrument_gchord1.udo"
+#include "/wavetables.udo"
+
+
+; sound collections
+gicol_musicbox sounddb_getcollectionid "MusicBox"
+gicol_kalimba sounddb_getcollectionid "Kalimba"
+gicol_idiophone = gicol_musicbox
+gicol_idiophone_other = gicol_kalimba
+
+opcode idiophone_change, 0, 0
+ if (random(0, 1) >= 0.5) then
+ gicol_idiophone = gicol_musicbox
+ gicol_idiophone_other = gicol_kalimba
+ else
+ gicol_idiophone = gicol_kalimba
+ gicol_idiophone_other = gicol_musicbox
+ endif
+endop
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Sample playback initiation instruments
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+instr note_idiophone_randtime
+ ifileid, ipitchratio sounddb_mel_nearestnote gicol_idiophone, mel_randomnote()
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ ;p3 = random(4, 8)
+
+ ipitch = round(random(1, 2)) * ipitchratio
+ ktime init random(0, idur)
+ aL, aR mincer a(port(ktime, 0.001, random(0, idur))), 1, ipitch, ifn, 0, 256 ;64
+
+ if (random:k(0, 1) > 0.1) then
+ ktime = random:k(0, idur)
+ endif
+
+
+ kamp linseg 1, p3*0.8, 1, p3*0.2, 0
+ aL *= kamp
+ aR *= kamp
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("delay1", aL*random(0, 0.3), aR*random(0, 0.3))
+ endif
+
+ bus_mix("reverb1", aL*random(0.2, 0.8), aR*random(0.2, 0.8))
+
+ if (random(0, 1) > 0.5) then
+ bus_mix("pvsamp1", aL*0.6, aR*0.6)
+ endif
+
+ bus_mix("master", aL, aR)
+endin
+
+
+/*
+ Idiophone chord
+
+ p4 one note (0 = play one note, 1 = play chord)
+*/
+instr phrase_idiophone1
+ ionenote = p4
+
+ if (ionenote == 1) then
+ knote init mel_randomnote() + (round(random(-2, 4)) * 12)
+ endif
+
+ if (random(0, 1) > 0.5) then
+ ifreqstart = random(10, 30)
+ ifreqend = random(2, 15)
+ else
+ ifreqstart = random(2, 10)
+ ifreqend = random(10, 30)
+ endif
+ kfreq linseg ifreqstart, p3, ifreqend
+ kamp linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+
+ ktrig metro kfreq
+ if (ktrig == 1) then
+ if (ionenote != 1) then
+ knote = mel_randomnote:k() + (round:k(random:k(-2, 4)) * 12)
+ endif
+ schedulek("note_idiophone1", random:k(0, 0.1), 0.1, min:k(knote, 127), kamp*2)
+ endif
+endin
+
+
+/*
+ Idiophone chord using portamento note frequencies
+
+ p4 one note (0 = play one note, 1 = play chord)
+*/
+instr phrase_idiophone2
+ ionenote = p4
+ ilen = mel_length() * random(1, 10)
+ p3 = ilen
+
+ if (ionenote == 1) then
+ itlen = table:i(0, gimel_current_notes)
+ index = round(random(1, itlen-1))
+ kindex init index
+ knote init table(index, gimel_current_notes)
+ knoteaugment init (round(random(-2, 4)) * 12)
+ endif
+
+ kfreq linseg random(20, 60), ilen, random(2, 10)
+
+ kamp linseg 1, p3, 0
+ if (random(0, 1) > 0.5) then
+ kamp = 1-kamp
+ endif
+
+ ktrig metro kfreq
+ if (ktrig == 1) then
+ if (ionenote != 1) then
+ klen = table:k(0, gimel_current_notes)
+ kindex = round:k(random:k(1, klen-1))
+ knote = table:k(kindex, gimel_current_notes)
+ knoteaugment = (round:k(random:k(-2, 4)) * 12)
+ endif
+
+ kportfreq = table:k(kindex-1, gimel_freqs)
+ kportamp = table:k(kindex-1, gimel_amps)
+
+ if (kportfreq != cpsmidinn:k(knote)) then
+ kscale = cpsmidinn:k(knote) / kportfreq
+ else
+ kscale = 1
+ endif
+ schedulek("note_idiophone2", random:k(0, 0.1), 1, min:k(knote+knoteaugment, 127), kamp*kportamp, kscale)
+ endif
+endin
+
+
+/*
+ Stretch idiophone chord
+
+ p4 mode (0 = flipflop loop, 1 = linear loop)
+*/
+instr phrase_idiophone_stretch1
+ imode = p4
+ ilen = p3
+ index = 1
+ inoteaugment = min((round(random(-1, 4)) * 12), 127)
+ while (index < table:i(0, gimel_current_notes)) do
+ inote = table(index, gimel_current_notes)
+ schedule("note_idiophonestretch1", 0, ilen, inote + inoteaugment, imode)
+ index += 1
+ od
+ turnoff
+endin
+
+
+/*
+ Stretch idiophone box chord
+
+ p4 mode (0 = flipflop loop, 1 = linear loop)
+*/
+instr phrase_idiophone_stretch2
+ imode = p4
+ ilen = p3
+ index = 1
+ while (index < table:i(0, gimel_current_notes)) do
+ inote = table(index, gimel_current_notes)
+ schedule("note_idiophonestretch2", 0, ilen, inote, imode, 0, 1) ; no low pass, out to note_idiophonestretch2 bus, mincer read
+ schedule("note_idiophonestretch2", 0, ilen, inote-12, imode, 1, 0) ; low pass, master out, sndwarp read
+ index += 1
+ od
+ turnoff
+endin
+
+
+instr phrase_idiophone_stretch3
+ ksendDelay1 init 0
+ ksendReverb1 init 0.3
+ ksendPV1 init 0
+ kampx4 init 0
+ kamp linsegr 0, 0.5, 1, p3-0.5, 1, 1, 0
+
+ ; cpu saving: first arg 0 = sndwarp, 1 = mincer
+ aL1, aR1 portchord_sound gicol_idiophone, 0, 0.5, 512
+ aL2, aR2 portchord_sound gicol_idiophone, 0, 1, 1024
+ aL3, aR3 portchord_sound gicol_idiophone, 0, 2, 512
+
+ aL = (aL3 * portk(kampx4, 2) + (aL1 + aL2)) * kamp
+ aR = (aR3 * portk(kampx4, 2) + (aR1 + aR2)) * kamp
+
+ kchangemetro = metro(0.2)
+ if (kchangemetro == 1) then
+ if (random:k(0, 1) > 0.6) then
+ ksendDelay1 = random:k(0, 0.8)
+ endif
+
+ if (random:k(0, 1) > 0.6) then
+ ksendReverb1 = random:k(0.3, 0.8)
+ endif
+
+ if (random:k(0, 1) > 0.6) then
+ ksendPV1 = random:k(0, 0.8)
+ endif
+
+ if (random:k(0, 1) > 0.6) then
+ kampx4 = random:k(0, 1.5)
+ endif
+ endif
+
+ ksendDelay1p = port(ksendDelay1, 1)
+ ksendReverb1p = port(ksendReverb1, 1)
+ ksendPV1p = port(ksendPV1, 1)
+
+ bus_mix("delay1", aL*ksendDelay1p, aR*ksendDelay1p)
+ bus_mix("reverb1", aL*ksendReverb1p, aR*ksendReverb1p)
+ bus_mix("pvsamp1", aL*ksendPV1p, aR*ksendPV1p)
+ bus_mix("master", aL, aR)
+endin
+
+
+instr phrase_idiophone_stretch4
+ iamp = 0.5
+ klpf1 init 22050
+ klpf2 init 22050
+
+ ichangechance = random(0.1, 0.6)
+ icompressmode = 2 ; 0 = none ; 1 = harshwall ; 2 = normal
+ aL1, aR1 fnmi_gchord1 gicol_idiophone, 1, 3, icompressmode, ichangechance, 2, 0 ; 1 is mincer
+ aL2, aR2 fnmi_gchord1 gicol_idiophone, 1, 3, icompressmode, ichangechance, 1, 0
+
+ klpf1p port klpf1, 3
+ klpf2p port klpf2, 3
+ aL1 butterlp aL1, klpf1p
+ aR1 butterlp aR1, klpf1p
+ aL2 butterlp aL2, klpf2p
+ aR2 butterlp aR2, klpf2p
+ kchangemetro = metro(0.2)
+ if (kchangemetro == 1) then
+ if (random:k(0, 1) > 0.6) then
+ klpf1 = random:k(400, 22050)
+ endif
+
+ if (random:k(0, 1) > 0.6) then
+ klpf2 = random:k(400, 22050)
+ endif
+ endif
+
+ aL = (aL1 + aL2) * iamp
+ aR = (aR1 + aR2) * iamp
+
+
+ bus_mix("master", aL, aR)
+ bus_mix("reverb1", aL*0.4, aR*0.4)
+ bus_mix("pvsamp1", aL*0.1, aR*0.1)
+endin
+
+
+/*
+ Play a short glissando, possibly ascending or descending
+*/
+instr phrase_idiophone_gliss1
+ iamp = p4
+ ilen = table:i(0, gimel_current_notes)
+ itime = 0
+ imultreal = 1
+ imaxmult = 6
+ iascending = round(random(0, 1))
+ if (iascending == 1) then
+ iincrement = 1
+ istartindex = 1
+ imult = 1
+ else
+ iincrement = -1
+ istartindex = ilen
+ imult = imaxmult
+ endif
+
+ while (imultreal <= imaxmult) do
+ indexreal = 1
+ index = istartindex
+ while (indexreal < ilen) do
+ inote = (table:i(index, gimel_current_notes)-12)+(12*imult)
+ if (inote >= 127 || inote <= 0) then
+ goto complete
+ endif
+ schedule("note_idiophone1", itime, 0.1, inote, iamp, gicol_idiophone_other)
+ itime += random(0.05, 0.1)
+ indexreal += 1
+ index += iincrement
+ od
+ imult += iincrement
+ imultreal += 1
+ od
+complete:
+ turnoff
+endin
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Transition instruments
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+instr transition_idiophone_randtime
+ iriseratio = p4
+ kamp expseg 0.00001, p3*iriseratio, 1, p3*(1-iriseratio), 0.00001
+ ifileid, ipitchratio sounddb_mel_nearestnote gicol_idiophone_other, mel_randomnote()
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+
+ ipitch = round(random(1, 2)) * ipitchratio
+ ktime init random(0, idur)
+ aL, aR mincer a(port(ktime, 0.001, random(0, idur))), 1, ipitch, ifn, 0, 256 ;64
+
+ if (random:k(0, 1) > 0.1) then
+ ktime = random:k(0, idur)
+ endif
+
+ aL *= kamp * 3
+ aR *= kamp * 3
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("delay1", aL*random(0, 0.3), aR*random(0, 0.3))
+ endif
+
+ bus_mix("reverb1", aL*random(0.4, 0.8), aR*random(0.4, 0.8))
+
+ if (random(0, 1) > 0.5) then
+ bus_mix("pvsamp1", aL*0.6, aR*0.6)
+ endif
+
+ bus_mix("master", aL, aR)
+endin
+
+
+instr transition_idiophone_gliss1
+ iriseratio = p4
+ kamp expseg 0.00001, p3*iriseratio, 1, p3*(1-iriseratio), 0.00001
+ kmetro metro 20
+ kmult init 0
+ kincrement init 1
+ kindex init 1
+
+ if (kmetro == 1) then
+ knote = min:k((table:k(kindex, gimel_current_notes))+(12*kmult), 127)
+ schedulek("note_idiophone1", random:k(0, 0.1), 0.1, knote, kamp*3.5, gicol_idiophone_other)
+
+ kmaxnotes = table:k(0, gimel_current_notes)
+ if ((kindex < kmaxnotes - 1 && kincrement == 1) || (kindex > 1 && kincrement == -1)) then
+ kindex += kincrement
+ else
+ kindex = (kincrement == 1) ? 1 : kmaxnotes - 1
+ kmult += kincrement
+ if (kmult >= 4) then
+ kmult = 4
+ kincrement = -1
+ elseif (kmult < 0) then
+ kmult = 0
+ kincrement = 1
+ endif
+ endif
+
+ endif
+endin
+
+
+instr transition_idiophone_stretch1
+ iriseratio = p4
+ kamp expseg 0.00001, p3*iriseratio, 1, p3*(1-iriseratio), 0.00001
+
+ inotestart = mel_randomnote()
+ inoteend = mel_randomnote()
+
+ if (random(0, 1) >= 0.5) then
+ inotestart += 12
+ endif
+
+ if (random(0, 1) >= 0.5) then
+ inoteend += 12
+ endif
+
+
+ ifileid, ipitchratio sounddb_mel_nearestnote gicol_idiophone_other, inotestart
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+
+ istart = random(0.01, 0.1)
+ iend = random(istart+0.05, 0.3)
+ atime = abs(oscil(iend-istart, random(0.001, 0.1), gifnSine, random(0, 1)))
+ atime *= idur
+ apitchratio line ipitchratio, p3, (ipitchratio * (cpsmidinn(inoteend) / cpsmidinn(inotestart)))
+
+ isndwarpadjust = (ftsr(ifn) / sr) ; adjustment for sndwarp required
+ aL, aR sndwarpst kamp, atime, apitchratio*isndwarpadjust, ifn, istart, 4096, 128, 2, gifnHalfSine, 1
+
+ bus_mix("reverb1", aL*random(0, 0.8), aR*random(0, 0.8))
+ bus_mix("pvsamp1", aL*random(0, 0.2), aR*random(0, 0.2))
+ bus_mix("master", aL*1.7, aR*1.7)
+endin
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Sample playback note instruments
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/*
+ Play idiophone note with stochastic transforms and sends
+
+ p4 midi note number
+ p5 amplitude (0 to 1)
+ p6 optional collection, defaults to gicol_idiophone
+*/
+instr note_idiophone1
+ inote = p4
+ iamp = p5 * 0.2
+ icollection = (p6 == 0) ? gicol_idiophone : p6
+ iamp *= random(0.6, 1)
+ ifileid, ipitchratio sounddb_mel_nearestnote icollection, inote
+
+ if (active:i(p1) < 50 && (abs(ipitchratio) > 1.8 || random(0, 1) > 0.8)) then
+ iloscilratio = 1
+ idopvs = 1
+ else
+ iloscilratio = ipitchratio
+ idopvs = 0
+ endif
+
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ p3 = idur / iloscilratio
+ kamp linseg iamp, p3*0.6, iamp, p3*0.4, 0
+ ;ktime line random(0, 0.2), p3, p3
+ ;aL, aR sndwarpst kamp, ktime, iloscilratio, isound[0], 0, 441*random(1, 100), 44*random(1, 10), 4, gifnHalfSine, 1
+ aL, aR loscil kamp, iloscilratio, ifn, 1
+
+ if (idopvs == 1) then
+ if (random(0, 1) > 0.75) then
+ ipitchratio *= pow(2, int(random(1, 4)))
+ endif
+ ir = 512
+ fL1 pvsanal aL, ir, ir/2, ir, 1
+ fR1 pvsanal aR, ir, ir/2, ir, 1
+ fL2 pvscale fL1, ipitchratio
+ fR2 pvscale fR1, ipitchratio
+ aL pvsynth fL2
+ aR pvsynth fR2
+ endif
+
+ ipan = random(0, 1)
+ aL *= ipan
+ aR *= (1-ipan)
+
+ if (random(0, 1) > 0.6) then
+ aL pareq aL, random(100, 4000), random(0.3, 1.1), 0.7
+ aR pareq aR, random(100, 4000), random(0.3, 1.1), 0.7
+ endif
+
+ if (random(0, 1) > 0.9) then
+ bus_mix("delay1", aL*random(0.1, 0.4), aR*random(0.1, 0.4))
+ endif
+
+ if (random(0, 1) > 0.8) then
+ ;krenv linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+ bus_mix("reverb1", aL*random(0.1, 0.7), aR*random(0.1, 0.7))
+ endif
+
+ if (random(0, 1) > 0.5) then
+ bus_mix("pvsamp1", aL*random(0.5, 0.8), aR*random(0.5, 0.8))
+ endif
+
+ bus_mix("master", aL, aR)
+
+endin
+
+
+
+
+/*
+ Play idiophone note with stochastic transforms and sends
+
+ p4 midi note number
+ p5 amplitude (0 to 1)
+ p6 pitchscale: amount to scale pitch by (for portamento augmentation)
+*/
+instr note_idiophone2
+ inote = p4
+ iamp = p5 * 0.2
+ ipitchscale = p6
+
+ iamp *= random(0.6, 1)
+ kamp linseg iamp, p3*0.6, iamp, p3*0.4, 0
+ ifileid, ipitchratio sounddb_mel_nearestnote gicol_idiophone, inote
+
+ kpitchratio init ipitchratio * ipitchscale
+
+ kpitchenv = abs:k(oscil:k(random(0.001, 0.01), random(0.1, 4), gifnSine, random(0, 1))) + 1
+ kpitchratio += kpitchenv
+
+ if (kpitchratio > 1.8 || random(0, 1) > 0.8) then
+ kloscilratio init 1
+ idopvs = 1
+ else
+ kloscilratio = kpitchratio
+ idopvs = 0
+ endif
+
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+
+ p3 = idur
+ ;ktime line random(0, 0.2), p3, p3
+ ;aL, aR sndwarpst kamp, ktime, iloscilratio, isound[0], 0, 441*random(1, 100), 44*random(1, 10), 4, gifnHalfSine, 1
+ aL, aR loscil kamp, kloscilratio, ifn, 1
+
+ if (idopvs == 1) then
+ if (random(0, 1) > 0.5) then
+ kpitchratio *= pow(2, int(random(1, 4)))
+ endif
+ ir = 512
+ fL1 pvsanal aL, ir, ir/4, ir, 1
+ fR1 pvsanal aR, ir, ir/4, ir, 1
+ fL2 pvscale fL1, kpitchratio
+ fR2 pvscale fR1, kpitchratio
+ aL pvsynth fL2
+ aR pvsynth fR2
+ endif
+
+ ipan random 0, 1
+ aL *= ipan
+ aR *= (1-ipan)
+
+ if (random(0, 1) > 0.8) then
+ kdenv linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+ bus_mix("delay1", aL*kdenv, aR*kdenv)
+ endif
+
+ if (random(0, 1) > 0.8) then
+ krenv linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+ bus_mix("reverb1", aL*krenv, aR*krenv)
+ endif
+
+ if (random(0, 1) > 0.5) then
+ bus_mix("pvsamp1", aL, aR)
+ endif
+
+ bus_mix("master", aL, aR)
+
+endin
+
+
+
+/*
+ Play held/stretched idiophone note with stochastic transforms and sends
+
+ p4 midi note number
+ p5 mode (0 = forwards and reverse, 1 = linear forwards)
+*/
+instr note_idiophonestretch1
+ inote = p4
+ imode = p5
+ iamp = 0.6
+ kamp linseg 0, p3*0.2, iamp, p3*0.6, iamp, p3*0.2, 0
+ ifileid, ipitchratio sounddb_mel_nearestnote gicol_idiophone, inote
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ ipitchratio *= (ftsr(ifn) / sr) ; adjustment for sndwarp required
+
+ if (imode == 0) then
+ istart = random(0, 0.3)
+ iend = random(istart+0.1, 0.5)
+ atime = abs(oscil(iend-istart, random(0.001, 0.1), gifnSine, random(0, 1)))
+ else
+ istart = 0
+ iend = random(0.1, 0.99)
+ atime = (phasor(random(10, 40)) * (iend-istart))
+ endif
+
+
+ if (random(0, 1) > 0.5) then
+ alfo = oscil(random(0.0001, 0.0009), random(4, 10)) + 1
+ apitchratio = ipitchratio * alfo
+ else
+ apitchratio init ipitchratio
+ endif
+
+ atime *= idur
+
+ aL, aR sndwarpst kamp, atime, apitchratio, ifn, istart, 441*random(1, 100), 44*random(1, 10), 8, gifnHalfSine, 1
+
+ aL butterhp aL, 150
+ aR butterhp aR, 150
+
+ if (random(0, 1) > 0.5) then
+ atemp = aL
+ aL = aR
+ aR = atemp
+ endif
+
+ if (random(0, 1) > 0.2) then
+ krenv linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+ bus_mix("reverb1", aL*krenv, aR*krenv)
+ endif
+
+ if (random(0, 1) > 0.5) then
+ bus_mix("pvsamp1", aL, aR)
+ endif
+
+ bus_mix("master", aL, aR)
+endin
+
+
+
+
+instr note_idiophonestretch2
+ inote = p4
+ imode = p5
+ ilpmode = p6
+ ireadmode = p7 ; 0 = sndwarp, 1 = mincer
+ iamp = 0.4
+ kamp linseg 0, p3*0.2, iamp, p3*0.6, iamp, p3*0.2, 0
+ ifileid, ipitchratio sounddb_mel_nearestnote gicol_idiophone, inote
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+
+ if (imode == 0) then
+ istart = random(0.05, 0.2)
+ iend = random(istart+0.1, 0.8)
+ atime = abs(oscil(iend-istart, random(0.001, 0.1), gifnSine, random(0, 1)))
+ else
+ istart = 0
+ iend = random(0.1, 0.99)
+ atime = (phasor(random(10, 40)) * (iend-istart))
+ endif
+
+ if (random(0, 1) > 0.4) then
+ alfo = oscil(random(0.0001, 0.001), random(4, 10)) + 1
+ apitchratio = ipitchratio * alfo
+ else
+ apitchratio init 1
+ endif
+
+ atime *= idur
+
+ if (ireadmode == 0) then
+ isndwarpadjust = (ftsr(ifn) / sr) ; adjustment for sndwarp required
+ aL, aR sndwarpst kamp, atime, apitchratio*isndwarpadjust, ifn, istart, 4096, 128, 2, gifnHalfSine, 1
+ else
+ aL, aR mincer atime+istart, kamp, k(apitchratio), ifn, 0, 512
+ endif
+
+ ipan = random(0, 1)
+ aL *= (1-ipan)
+ aR *= (ipan)
+
+ aLh butterhp aL, 150
+ aRh butterhp aR, 150
+
+
+ if (random(0, 1) > 0.8) then
+ krenv linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+ bus_mix("reverb1", aLh*krenv, aRh*krenv)
+ endif
+
+ if (random(0, 1) > 0.7) then
+ bus_mix("pvsamp1", aLh, aRh)
+ endif
+
+ if (ilpmode == 0) then
+ bus_mix("note_idiophonestretch2", aLh, aRh)
+ elseif (ilpmode == 1) then
+ aL butterlp aL, 500
+ aR butterlp aR, 500
+ bus_mix("master", aL*0.8, aR*0.8)
+ endif
+endin
+
+
+
+
+#end
diff --git a/site/app/partialemergence/instruments_synthesis.inc b/site/app/partialemergence/instruments_synthesis.inc
new file mode 100644
index 0000000..9053c11
--- /dev/null
+++ b/site/app/partialemergence/instruments_synthesis.inc
@@ -0,0 +1,108 @@
+#ifndef INC_SYNTHESIS_INSTR
+#define INC_SYNTHESIS_INSTR ##
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Partial Emergence
+ by Richard Knight 2022
+
+ Installation submission for the International Csound Conference 2022
+
+ Synthesis instruments
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/*
+ Bass note 1
+*/
+instr note_bass1
+ index = (p4 == -1) ? random(0, 2) : p4
+ kfreq table index, gimel_freqs
+ kfreq *= 0.25
+ kamp table index, gimel_amps
+ kenv linseg 0, p3*0.01, 1, p3*0.99, 1
+ kamp *= kenv * 0.19
+
+ aphs1 phasor kfreq/2
+ aphs2 phasor kfreq/2
+ koda = abs(oscil(random(0, 2), random(0, 1)))
+ a1 tablei aphs1, gifnSine, 1, 0, 1
+
+ av1L = abs:a(oscil:a(3, 0.1))
+ aL tablei (aphs2+a1)+av1L+koda, gifnSine, 1, 0, 1
+ av1R = abs:a(oscil:a(4, 0.05))
+ aR tablei (aphs2+a1)+av1R+koda, gifnSine, 1, 0, 1
+ kfi linseg 0, p3*0.2, 1, p3*0.8, 1
+
+ ilpfreq = random(100, 1000)
+ aL butterlp aL, ilpfreq
+ aR butterlp aR, ilpfreq
+
+ if (random(0, 1) > 0.4) then
+ kamp *= abs:k(oscil:k(0.9, random(0.01, 0.1))) + 0.1
+ endif
+
+ bus_mix("reverb1", aL*kamp*0.7, aR*kamp*0.7)
+ bus_mix("master", aL*kamp, aR*kamp)
+endin
+
+
+
+
+opcode fmsxosc, a, k
+ kfreq xin
+ ifn = gifnSine
+ kfreqoffset = abs:k(oscil:k(1, 0.001))
+
+ aoda = abs:a(oscil:a(random(0.01, 1), random(0.001, 1)))
+ aphs1 phasor kfreq
+ aphs2 phasor kfreq + kfreqoffset
+ a1 tablei aphs1, ifn, 1, 0, 1
+ a2 tablei aphs2, ifn, 1, 0, 1
+ av = abs:a(oscil:a(0.1, 0.01, gifnSine, random(0, 1)))
+ aa1 tablei (aphs1+a1)+av+aoda, gifnSine, 1, 0, 1
+ aa2 tablei (aphs2+a2)+av+aoda, gifnSine, 1, 0, 1
+
+ adelt = abs:a(oscil:a(50, 0.005))
+ aa1 vdelay aa1, adelt, 50
+ xout (aa1 + aa2)
+endop
+
+
+instr note_bass2
+ index = p4 + 1
+ ifreq = cpsmidinn(tab_i(index, gimel_current_notes))
+
+ ifreq *= 0.125
+
+
+ if (random(0, 1) < 0.5) then
+ ifreq *= 0.5
+ endif
+
+ aL fmsxosc ifreq
+ aR fmsxosc ifreq
+
+ kamp = abs:k(oscil:k(1, random(0.005, 0.01), gifnSine, random(0, 0.5)))
+ klpf = abs:k(oscil:k(6000, random(0.009, 0.05), gifnSine, 0.2)) + 100
+
+ aL = butterlp(aL*kamp, klpf)
+ aR = butterlp(aR*kamp, klpf)
+
+ aL pareq aL, 100, 0.1, 0.7
+ aR pareq aR, 100, 0.1, 0.7
+
+ kenv linseg 0, p3*0.1, 1, p3*0.9, 0
+
+ if (random(0, 1) > 0.4) then
+ kenv *= abs:k(oscil:k(0.9, random(0.01, 0.1))) + 0.1
+ endif
+
+ aL *= 0.19 * kenv
+ aR *= 0.19 * kenv
+
+ bus_mix("master", aL, aR)
+endin
+
+
+#end
diff --git a/site/app/partialemergence/instruments_water.inc b/site/app/partialemergence/instruments_water.inc
new file mode 100644
index 0000000..bf38576
--- /dev/null
+++ b/site/app/partialemergence/instruments_water.inc
@@ -0,0 +1,240 @@
+#ifndef INC_WATER_INSTR
+#define INC_WATER_INSTR ##
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Partial Emergence
+ by Richard Knight 2022
+
+ Installation submission for the International Csound Conference 2022
+
+ Water instruments
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#include "/soundxdb.udo"
+#include "/array_tools.udo"
+#include "/sequencing_melodic.udo"
+#include "/sequencing_melodic_portamento.udo"
+#include "/bussing.udo"
+#include "/frequency_tools.udo"
+#include "/wavetables.udo"
+
+; sound collections
+gisnd_waterpaddling[] sounddb_getcollection "Water.Paddling"
+gisnd_waterdrop[] sounddb_getcollection "Water.Droplet"
+
+
+instr play_waterpaddling1
+ ifileid = arr_random(gisnd_waterpaddling)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+
+ kfreqshift init -100
+ ipitch = random(0.5, 1.2)
+ ktime init random(0, idur)
+ aL, aR mincer a(port(ktime, 0.1, random(0, idur))), 1, ipitch, ifn, 0, pow(2, round(random(4, 7))) ;64
+
+ aL, aR freqshift1 aL, aR, port(kfreqshift, 0.2)
+
+ if (random:k(0, 1) > 0.2) then
+ ktime = random:k(0, idur)
+ endif
+
+ if (random:k(0, 1) > 0.2) then
+ kfreqshift = random(-1000, -100)
+ endif
+
+ kamp linseg 1, p3*0.8, 1, p3*0.2, 0
+ aL *= kamp * 1.8
+ aR *= kamp * 1.8
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("delay1", aL*random(0, 0.3), aR*random(0, 0.3))
+ endif
+
+ if (random(0, 1) > 0.3) then
+ bus_mix("reverb1", aL*random(0.2, 0.8), aR*random(0.2, 0.8))
+ endif
+
+ if (random(0, 1) > 0.5) then
+ bus_mix("pvsamp1", aL*0.6, aR*0.6)
+ endif
+
+ bus_mix("master", aL, aR)
+endin
+
+
+instr _phrase_waterbubbler1_item
+ ipitch = p4
+ iamp = p5
+ ioutmain = p6
+ ifileid = arr_random(gisnd_waterdrop)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ p3 = idur / ipitch
+ kamp linseg 1, p3*0.8, 1, p3*0.2, 0
+ kamp *= iamp
+ aL, aR loscil kamp, ipitch, ifn, 1
+ aL, aR freqshift1 aL, aR, random(-1000, -400)
+ ipan = random(0, 1)
+
+ if (random(0, 1) > 0.5) then
+ aLr resony aL, table:k(0, gimel_freqs)*2, 4, 16, 10
+ aRr resony aL, table:k(0, gimel_freqs)*2, 4, 16, 10
+ aL balance aLr, aL
+ aR balance aRr, aR
+ aL dcblock aL
+ aR dcblock aR
+ endif
+
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("delay1", aL*0.2, aR*0.2)
+ endif
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("reverb1", aL*0.5, aR*0.5)
+ endif
+
+ if (random(0, 1) > 0.8) then
+ bus_mix("pvsamp1", aL, aR)
+ endif
+
+ Schannel = (ioutmain == 1) ? "main" : "phrase_waterbubbler"
+ bus_mix(Schannel, aL*(1-ipan), aR*ipan)
+endin
+
+
+instr phrase_waterbubbler1
+ ioutmain = p4
+ kamp linseg 0, p3*0.1, 1, p3*0.8, 1, p3*0.1, 0
+ iamp = random(0.25, 0.5)
+ kamp *= iamp
+ kfreq = abs:k(oscil:k(30, 0.01)) + 10
+ kmetro metro kfreq
+ if (kmetro == 1) then
+ schedulek("_phrase_waterbubbler1_item", random:k(0, 0.2), 1, random:k(0.8, 1.2), random:k(0.5, 1)*kamp, ioutmain)
+ endif
+endin
+
+
+instr note_drop1
+ ifileid = arr_random(gisnd_waterdrop)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ ipitch = random(0.6, 1.3)
+ p3 = idur / ipitch
+ aL, aR loscil 1, ipitch, ifn, 1
+ kamp linseg 1, p3*0.9, 1, p3*0.1, 0
+ iamp = random(0.7, 1)
+ ipan = random(0, 1)
+ aL *= kamp * iamp * ipan
+ aR *= kamp * iamp * (1-ipan)
+ bus_mix("pvsamp1", aL*random(0, 0.3), aR*random(0, 0.3))
+ bus_mix("reverb1", aL*random(0, 0.2), aR*random(0, 0.2))
+ bus_mix("master", aL, aR)
+endin
+
+
+instr _phrase_droproll1_item
+ ifileid = arr_random(gisnd_waterdrop)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ ipitch = random(0.1, 1.3)
+ p3 = idur / ipitch
+ aL, aR loscil 1, ipitch, ifn, 1
+ kamp linseg 1, p3*0.9, 1, p3*0.1, 0
+ ipan = random(0, 1)
+ aL *= kamp * ipan
+ aR *= kamp * (1-ipan)
+ bus_mix("droproll1_item", aL, aR)
+ bus_mix("pvsamp1", aL*random(0, 0.5), aR*random(0, 0.5))
+endin
+
+instr phrase_droproll1
+ iamp = p4
+ ifreq1 = random(0.00001, 20)
+ kmetrofreq expseg ifreq1, p3, 19.99 - ifreq1
+ klpf linseg random(4000, 22050), p3, random(4000, 22050)
+ kamp linseg 0, p3*0.3, 1, p3*0.4, 1, p3*0.3, 0
+ kmetro metro kmetrofreq
+ if (kmetro == 1) then
+ schedulek("_phrase_droproll1_item", random:k(0, 0.2), 1)
+ endif
+
+ aL, aR bus_read "droproll1_item"
+ aL butterlp aL, klpf
+ aR butterlp aR, klpf
+ aL *= kamp * 0.7 * iamp
+ aR *= kamp * 0.7 * iamp
+ bus_mix("reverb1", aL*0.2, aR*0.2)
+ bus_mix("master", aL, aR)
+endin
+
+
+instr transition_droplets1
+ iriseratio = p4
+ kamp expseg 0.00001, p3*iriseratio, 1, p3*(1-iriseratio), 0.00001
+ kmetro metro 30
+ if (kmetro == 1) then
+ schedulek("_phrase_droproll1_item", random:k(0, 0.2), 1)
+ endif
+
+ aL, aR bus_read "droproll1_item"
+ aL *= kamp * 2.5
+ aR *= kamp * 2.5
+ bus_mix("reverb1", aL*0.43, aR*0.43)
+ bus_mix("master", aL, aR)
+endin
+
+
+instr transition_waterbubbler1
+ ioutmain = p4
+ iriseratio = p4
+ kamp expseg 0.00001, p3*iriseratio, 1, p3*(1-iriseratio), 0.00001
+ kfreq = abs:k(oscil:k(30, 0.01)) + 10
+ kmetro metro kfreq
+ if (kmetro == 1) then
+ schedulek("_phrase_waterbubbler1_item", random:k(0, 0.2), 1, random:k(0.8, 1.2), random:k(0.5, 1)*kamp, 1)
+ endif
+endin
+
+
+instr phrase_dropstretch1
+ ireadpitch = p4
+ ido_reson = p5
+ ifades = p6
+ iresonfreqratio = p7
+ ifileid = arr_random(gisnd_waterdrop)
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ istart = random(0, idur*0.2)
+ iend = random(idur*0.4, idur*0.8) ; 0.3, 0.4
+ atime = abs:a(oscil:a(iend-istart, random(0.001, 0.1), gifnSine, random(0, 1)))
+ kenv = abs:k(oscil:k(0.8, random(0.01, 0.1), gifnSine, random(0, 1))) + 0.2
+
+ aL, aR sndwarpst 1, atime, ireadpitch, ifn, istart, 441*random(1, 10), 44*random(1, 10), 8, gifnHalfSine, 1
+
+ if (ifades == 1) then
+ kamp linseg 0, p3*0.25, 1, p3*0.5, 1, p3*0.25, 0
+ else
+ kamp linsegr 1, p3, 1, 2, 0
+ endif
+ aL *= kamp * kenv
+ aR *= kamp * kenv
+
+ if (ido_reson == 1) then
+ aLr resony aL, table:k(0, gimel_freqs)*2*iresonfreqratio, 2, 16, 10
+ aRr resony aR, table:k(1, gimel_freqs)*2*iresonfreqratio, 2, 16, 10 ; *4*
+ aL balance butterhp(aLr, 50), aL
+ aR balance butterhp(aRr, 50), aR
+ endif
+
+ aL pareq aL, 1000, 0.4, 0.75
+ aR pareq aR, 1000, 0.4, 0.75
+
+ bus_mix("master", aL, aR)
+endin
+
+
+#end
diff --git a/site/app/partialemergence/partialemergence.csd b/site/app/partialemergence/partialemergence.csd
new file mode 100644
index 0000000..5be063c
--- /dev/null
+++ b/site/app/partialemergence/partialemergence.csd
@@ -0,0 +1,238 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+-m0
+-d
+</CsOptions>
+<CsLicence>
+Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA)
+</CsLicence>
+<CsShortLicence>
+2
+</CsShortLicence>
+<CsInstruments>
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Partial Emergence: Web port
+ by Richard Knight 2022, 2025
+
+ Installation submission for the International Csound Conference 2022
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+sr = 44100
+ksmps = 128
+nchnls = 2
+0dbfs = 2.5
+seed 0
+
+; set DEBUG to enable lag detection and linear progression
+;#define DEBUG ##
+
+; initial progression; macro used by sequencing_melodic_persistence.udo
+#define MEL_INITPATH #/progression1.fnmlmel#
+
+; SONICS includes
+#include "/soundexport.xdb" ; sound database extract
+#include "/soundxdb.udo"
+#include "/array_tools.udo"
+#include "/sequencing.udo"
+#include "/sequencing_melodic.udo"
+#include "/sequencing_melodic_portamento.udo"
+#include "/sequencing_melodic_persistence.pe.udo"
+#include "/bussing.udo"
+#include "/instrument_sineblips.udo"
+#ifdef DEBUG
+#include "/lagdetect.udo"
+#endif
+
+; installation specific includes
+#include "/effects_global.inc"
+#include "/instruments_water.inc"
+#include "/instruments_idiophone.inc"
+#include "/instruments_hybrid.inc"
+#include "/instruments_synthesis.inc"
+#include "/sequence_sections.inc"
+
+
+/*
+ Sections:
+ Array index of dimension 1 corresponds to "sequencer_s%d" instrument, where %d is the index
+
+ Array index of dimension 2:
+ 0 duration minimum
+ 1 duration maximum
+ 2 follow section A
+ 3 follow section A/B chance ratio (0 = always A, 1 = always B)
+ 4 action section 2
+*/
+gisections[][] init 18, 5
+
+#ifdef DEBUG
+gisections fillarray\ ; test linear progression
+ 60, 90, 1, 0.3, 1 ,\ ; 0 idiophone single notes
+ 60, 90, 2, 0.3, 2 ,\ ; 1 idiophone chords, alternate mel sections with stretch chords
+ 60, 90, 3, 0.5, 3 ,\ ; 2 bass, idiophone single notes
+ 60, 90, 4, 0.2, 4 ,\ ; 3 bass, idiophone chords
+ 60, 90, 5, 0.3, 5 ,\ ; 4 resonated drop stretch and idiophone notes/stretch
+ 60, 90, 6, 0.3, 6 ,\ ; 5 resonated drop stretch
+ 60, 90, 7, 0.5, 7 ,\ ; 6 tuned drops, stretch chords
+ 60, 90, 8, 0.7, 8 ,\ ; 7 tuned drops, stretch chords more prominent
+ 60, 90, 9, 0.7, 9 ,\ ; 8 drop stretch
+ 60, 90, 10, 0.5, 10,\ ; 9 low portamento chords
+ 60, 90, 11, 0.5, 11,\ ; 10 glitch chord, sines, drops
+ 60, 90, 12, 0.5, 12,\ ; 11 water drops, low minimal chords, resonated drops, stretch water
+ 60, 90, 13, 0.5, 13,\ ; 12 minimal, resonated drops
+ 60, 90, 14, 0.5, 14,\ ; 13 reson drops buildup
+ 60, 90, 15, 0.5, 15,\ ; 14 low drop resonated portamento chords
+ 60, 90, 16, 0.2, 16,\ ; 15 water to idiophone
+ 60, 90, 17, 0.5, 17,\ ; 16 idiophone/drop resonated chords, slower
+ 30, 60, 0, 0.5, 0 ; 17 water paddling hits, resonated drop stretch
+
+#else
+gisections fillarray\ ; live progression
+ 43 ,95 ,1 ,0.2 ,2 ,\ ; 0 idiophone single notes
+ 63 ,125 ,2 ,0.3 ,12 ,\ ; 1 idiophone chords, alternate mel sections with stretch chords
+ 42 ,110 ,3 ,0.2 ,4 ,\ ; 2 bass, idiophone single notes
+ 76 ,134 ,4 ,0.2 ,5 ,\ ; 3 bass, idiophone chords
+ 61 ,92 ,5 ,0.15 ,13 ,\ ; 4 resonated drop stretch and idiophone notes/stretch
+ 57 ,93 ,11 ,0.2 ,6 ,\ ; 5 resonated drop stretch
+ 47 ,105 ,5 ,0.8 ,7 ,\ ; 6 tuned drops, stretch chords
+ 61 ,101 ,14 ,0.7 ,8 ,\ ; 7 tuned drops, stretch chords more prominent
+ 67 ,105 ,5 ,0.8 ,9 ,\ ; 8 drop stretch
+ 53 ,113 ,13 ,0.4 ,1 ,\ ; 9 low portamento chords
+ 65 ,124 ,15 ,0.3 ,0 ,\ ; 10 glitch chord, sines, drops
+ 58 ,113 ,8 ,0.5 ,12 ,\ ; 11 water drops, low minimal chords, resonated drops, stretch water
+ 81 ,153 ,15 ,0.5 ,14 ,\ ; 12 minimal, resonated drops
+ 69 ,112 ,17 ,0.8 ,10 ,\ ; 13 reson drops buildup
+ 62 ,103 ,3 ,0.4 ,9 ,\ ; 14 low drop resonated portamento chords
+ 54 ,101 ,16 ,0.2 ,5 ,\ ; 15 water to idiophone
+ 71 ,116 ,17 ,0.4 ,4 ,\ ; 16 idiophone/drop resonated chords, slower
+ 33 ,66 ,6 ,0.5 ,7 ; 17 water paddling hits, resonated drop stretch
+#endif
+
+; initial section
+ginitsection = 0
+
+
+; possible melodic progressions
+gSprogressions[] fillarray "progression1.fnmlmel", "progression2.fnmlmel", "progression3.fnmlmel"
+gicurrentprogression init 0
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Control instruments
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+
+/*
+ Call all performance instruments accordingly
+*/
+instr boot
+ gkseq_tempo init 100
+ SbootInstrs[] fillarray "audio_output", "sequencer_main", "global_delay1", "global_delay2", "global_reverb1", "global_pvsamp1"
+ index = 0
+ while (index < lenarray(SbootInstrs)) do
+ schedule(SbootInstrs[index], 0, -1)
+ index += 1
+ od
+ gimel_portamento_beatratio = 4
+ turnoff
+endin
+
+
+
+/*
+ Master output mastering/processing
+*/
+instr audio_output
+ ; gkmastervolume
+ aL, aR bus_read "master"
+ iexcite = 1
+ aL += (exciter(aL, 3000, 20000, 10, 10)*iexcite)
+ aR += (exciter(aR, 3000, 20000, 10, 10)*iexcite)
+ bus_masterout(aL, aR)
+endin
+
+
+/*
+ Set random melodic progression
+*/
+instr set_progression
+ index = int(random(0, lenarray(gSprogressions)))
+
+ ; only set if it differs from current
+ if (index != gicurrentprogression) then
+ gicurrentprogression = index
+ Sprogression = gSprogressions[index]
+ prints sprintf("Progression change: %s\n", Sprogression)
+ subinstrinit "mel_loadstate_fs", strcat("/", Sprogression)
+ endif
+ turnoff
+endin
+
+
+
+/*
+ Main section sequencer
+*/
+instr sequencer_main
+
+ ; set up initial instrument at init time
+ initduration = random(gisections[ginitsection][0], gisections[ginitsection][1])
+ ksection init ginitsection
+ ksectiontime init initduration
+ schedule(sprintf("sequencer_s%d", ginitsection), 0, initduration)
+ prints sprintf("Section %d\n", ginitsection)
+
+ ; react to section changes at k-rate
+ kabstime timeinsts
+ klaststarttime init 0
+
+ ; if current section time is up, schedule next
+ if (kabstime - klaststarttime >= ksectiontime) then
+
+ ; determine next section based on follow action threshold
+ kchance = random:k(0, 1)
+ if (kchance <= gisections[ksection][3]) then
+ ksection = gisections[ksection][4]
+ else
+ ksection = gisections[ksection][2]
+ endif
+
+ ; get duration between specified min and max
+ ksectiontime = random:k(gisections[ksection][0], gisections[ksection][1]) + random:k(0.5, 1)
+
+ ; schedule section subsequencer and print status
+ schedulek sprintfk("sequencer_s%d", ksection), 0, ksectiontime
+ printf "Section %d\n", ksection+random:k(1, 4), ksection
+
+ ; set a new chord progression if relevant
+ if (random:k(0, 1) >= 0.5) then
+ schedulek("set_progression", 0, 1)
+ endif
+
+ if (random:k(0, 1) > 0.5) then
+ seq_settempo(random:k(20, 100))
+ endif
+
+ klaststarttime = kabstime
+ endif
+
+#ifdef DEBUG
+ ; write lag detection report for debugging
+ if (lagdetect:k() == 1) then
+ fprintks "lagreport.txt", "Lag in section %d at %f\n", ksection, kabstime - klaststarttime
+ endif
+#endif
+
+endin
+
+</CsInstruments>
+<CsScore>
+f0 z
+i"boot" 0.5 1 ; delay to account for initial melodic progression load
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/partialemergence/progression1.fnmlmel b/site/app/partialemergence/progression1.fnmlmel
new file mode 100644
index 0000000..7ca446d
--- /dev/null
+++ b/site/app/partialemergence/progression1.fnmlmel
@@ -0,0 +1,499 @@
+======= TABLE 181 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 181
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+34.000000
+32.000000
+33.000000
+3.000000
+35.000000
+26.000000
+60.000000
+30.000000
+40.000000
+37.000000
+21.000000
+45.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 182 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 182
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+62.000000
+64.000000
+63.000000
+62.000000
+65.000000
+64.000000
+55.000000
+61.000000
+59.000000
+60.000000
+51.000000
+61.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 183 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 183
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+16.000000
+16.000000
+16.000000
+16.000000
+16.000000
+16.000000
+5.000000
+6.000000
+5.000000
+6.000000
+7.000000
+6.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 184 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 184
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 185 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 185
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+1.000000
+2.000000
+3.000000
+1.000000
+3.000000
+0.000000
+0.000000
+1.000000
+1.000000
+0.000000
+1.000000
+1.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 186 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 186
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.300030
+0.250025
+0.271427
+0.264326
+0.278528
+0.185719
+0.497453
+0.837786
+0.111774
+0.788161
+0.979394
+0.297689
+0.000000
+---------END OF TABLE---------------
+======= TABLE 187 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 187
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 188 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 188
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 189 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 189
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.988438
+0.803298
+0.267835
+0.115002
+0.595937
+0.194793
+0.411357
+0.076671
+0.079459
+0.619064
+0.151164
+0.298788
+0.000000
+---------END OF TABLE---------------
+======= TABLE 190 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 190
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.557413
+0.136986
+0.224130
+0.863673
+0.276111
+0.312208
+0.743491
+0.531141
+0.294368
+0.661400
+0.132212
+0.595441
+0.000000
+---------END OF TABLE---------------
+======= TABLE 191 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 191
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.537405
+0.751374
+0.839415
+0.150858
+0.332917
+0.607242
+0.670816
+0.179500
+0.587496
+0.202448
+0.185102
+0.186244
+0.000000
+---------END OF TABLE---------------
+======= TABLE 192 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 192
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.575499
+0.750085
+0.812289
+0.618174
+0.608552
+0.745880
+0.431868
+0.373672
+0.769305
+0.505552
+0.333007
+0.579707
+0.000000
+---------END OF TABLE---------------
+======= TABLE 180 size: 4 values ======
+flen: 4
+lenmask: 3
+lobits: 22
+lomask: 4194303
+lodiv: 0.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 4
+nchnls: 1
+fno: 180
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+3.000000
+4.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
diff --git a/site/app/partialemergence/progression2.fnmlmel b/site/app/partialemergence/progression2.fnmlmel
new file mode 100644
index 0000000..f923471
--- /dev/null
+++ b/site/app/partialemergence/progression2.fnmlmel
@@ -0,0 +1,499 @@
+======= TABLE 181 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 181
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+28.000000
+22.000000
+38.000000
+3.000000
+26.000000
+22.000000
+60.000000
+30.000000
+40.000000
+37.000000
+21.000000
+45.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 182 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 182
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+62.000000
+60.000000
+64.000000
+59.000000
+60.000000
+62.000000
+55.000000
+61.000000
+59.000000
+60.000000
+51.000000
+61.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 183 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 183
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+16.000000
+16.000000
+16.000000
+16.000000
+16.000000
+16.000000
+5.000000
+6.000000
+5.000000
+6.000000
+7.000000
+6.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 184 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 184
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 185 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 185
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+3.000000
+3.000000
+2.000000
+0.000000
+3.000000
+2.000000
+0.000000
+1.000000
+1.000000
+0.000000
+1.000000
+1.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 186 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 186
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.207121
+0.235724
+0.335734
+0.221422
+0.328533
+0.350035
+0.497453
+0.837786
+0.111774
+0.788161
+0.979394
+0.297689
+0.000000
+---------END OF TABLE---------------
+======= TABLE 187 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 187
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+1.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 188 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 188
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 189 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 189
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.988438
+0.803298
+0.267835
+0.115002
+0.595937
+0.194793
+0.411357
+0.076671
+0.079459
+0.619064
+0.151164
+0.298788
+0.000000
+---------END OF TABLE---------------
+======= TABLE 190 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 190
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.557413
+0.136986
+0.224130
+0.863673
+0.276111
+0.312208
+0.743491
+0.531141
+0.294368
+0.661400
+0.132212
+0.595441
+0.000000
+---------END OF TABLE---------------
+======= TABLE 191 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 191
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.537405
+0.751374
+0.839415
+0.150858
+0.332917
+0.607242
+0.670816
+0.179500
+0.587496
+0.202448
+0.185102
+0.186244
+0.000000
+---------END OF TABLE---------------
+======= TABLE 192 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 192
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.575499
+0.750085
+0.812289
+0.618174
+0.608552
+0.745880
+0.431868
+0.373672
+0.769305
+0.505552
+0.333007
+0.579707
+0.000000
+---------END OF TABLE---------------
+======= TABLE 180 size: 4 values ======
+flen: 4
+lenmask: 3
+lobits: 22
+lomask: 4194303
+lodiv: 0.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 4
+nchnls: 1
+fno: 180
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+3.000000
+4.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
diff --git a/site/app/partialemergence/progression3.fnmlmel b/site/app/partialemergence/progression3.fnmlmel
new file mode 100644
index 0000000..13c3fb9
--- /dev/null
+++ b/site/app/partialemergence/progression3.fnmlmel
@@ -0,0 +1,499 @@
+======= TABLE 181 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 181
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+32.000000
+55.000000
+22.000000
+38.000000
+4.000000
+65.000000
+70.000000
+38.000000
+20.000000
+49.000000
+39.000000
+3.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 182 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 182
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+62.000000
+60.000000
+61.000000
+62.000000
+68.000000
+60.000000
+49.000000
+65.000000
+48.000000
+70.000000
+56.000000
+67.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 183 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 183
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+16.000000
+16.000000
+16.000000
+16.000000
+6.000000
+7.000000
+7.000000
+5.000000
+4.000000
+4.000000
+6.000000
+7.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 184 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 184
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+1.000000
+1.000000
+2.000000
+3.000000
+1.000000
+0.000000
+0.000000
+1.000000
+0.000000
+0.000000
+1.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 185 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 185
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+1.000000
+2.000000
+1.000000
+1.000000
+1.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 186 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 186
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.307554
+0.357136
+0.707171
+0.728573
+0.084509
+0.169596
+0.885151
+0.288933
+0.202831
+0.941209
+0.984722
+0.862226
+0.000000
+---------END OF TABLE---------------
+======= TABLE 187 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 187
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+1.000000
+1.000000
+1.000000
+1.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 188 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 188
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
+======= TABLE 189 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 189
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.637370
+0.477515
+0.610804
+0.255917
+0.000580
+0.741288
+0.816668
+0.482911
+0.573710
+0.074436
+0.383590
+0.574237
+0.000000
+---------END OF TABLE---------------
+======= TABLE 190 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 190
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.434636
+0.374966
+0.983574
+0.458653
+0.134855
+0.340593
+0.568193
+0.225512
+0.393867
+0.265349
+0.197277
+0.143899
+0.000000
+---------END OF TABLE---------------
+======= TABLE 191 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 191
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.725425
+0.528734
+0.681142
+0.693358
+0.639010
+0.240893
+0.587257
+0.530698
+0.638681
+0.089535
+0.930179
+0.320513
+0.000000
+---------END OF TABLE---------------
+======= TABLE 192 size: 12 values ======
+flen: 12
+lenmask: -1
+lobits: 0
+lomask: 0
+lodiv: 1.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 12
+nchnls: 1
+fno: 192
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.427121
+0.874527
+0.221614
+0.615462
+0.492275
+0.271279
+0.723552
+0.246397
+0.027398
+0.670098
+0.345080
+0.875814
+0.000000
+---------END OF TABLE---------------
+======= TABLE 180 size: 4 values ======
+flen: 4
+lenmask: 3
+lobits: 22
+lomask: 4194303
+lodiv: 0.000000
+cvtbas: 0.000000
+cpscvt: 0.000000
+loopmode1: 0
+loopmode2: 0
+begin1: 0
+end1: 0
+begin2: 0
+end2: 0
+soundend: 0
+flenfrms: 4
+nchnls: 1
+fno: 180
+gen01args.gen01: 0.000000
+gen01args.ifilno: 0.000000
+gen01args.iskptim: 0.000000
+gen01args.iformat: 0.000000
+gen01args.channel: 0.000000
+gen01args.sample_rate: 44100.000000
+---------END OF HEADER--------------
+0.000000
+1.000000
+0.000000
+0.000000
+0.000000
+---------END OF TABLE---------------
diff --git a/site/app/partialemergence/sequence_sections.inc b/site/app/partialemergence/sequence_sections.inc
new file mode 100644
index 0000000..b281a04
--- /dev/null
+++ b/site/app/partialemergence/sequence_sections.inc
@@ -0,0 +1,439 @@
+#ifndef INC_SECTION_SEQ
+#define INC_SECTION_SEQ ##
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+
+ Partial Emergence
+ by Richard Knight 2022
+
+ Installation submission for the International Csound Conference 2022
+
+ Section subsequencers
+
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#include "/bussing.udo"
+#include "/instruments_water.inc"
+#include "/instruments_idiophone.inc"
+#include "/instruments_synthesis.inc"
+
+
+/*
+ Pause the melodic progression for the duration of the calling instrumnet
+*/
+opcode pause_melprogression, 0, 0
+ gkmel_pause = 1
+ if (lastcycle() == 1) then
+ gkmel_pause = 0
+ endif
+endop
+
+
+/*
+ Call an instrument for outward transition; p4 is passed as the rise ratio of total duration
+*/
+opcode transition_out, 0, S
+ Sinstrument xin
+ iduration = random(4, min(12, p3*0.5))
+ iriseratio = random(0.5, 0.9)
+ schedule(Sinstrument, p3 - (iduration * iriseratio), iduration, iriseratio)
+endop
+
+
+/*
+ Call an instrument for inward transition; p4 is passed as short duration for an almost immediate attack
+*/
+opcode transition_in, 0, S
+ Sinstrument xin
+ iduration = random(3, min(10, p3*0.25))
+ schedule(Sinstrument, 0, iduration, 0.03)
+endop
+
+
+instr sequencer_s0
+ transition_in("transition_idiophone_randtime")
+ imaxlen = p3
+ itime = 0
+ while (itime < imaxlen) do
+ idur = random(5, 10)
+ idur = (idur + itime > imaxlen) ? imaxlen - itime : idur
+ schedule("phrase_idiophone1", itime, idur, 1)
+ itime += random(idur*0.6, idur*0.8)
+ od
+ transition_out("transition_idiophone_stretch1")
+endin
+
+
+instr sequencer_s1
+ schedule("phrase_idiophone_stretch1", 0, i(gkseq_beattime) * i(gkmel_section_change_due), 0)
+ schedule("phrase_idiophone1", 0, i(gkseq_beattime) * i(gkmel_section_change_due), 1)
+
+ kdo init 0
+ if (gkmel_section_change == 1) then
+ klen = mel_length:k()
+ schedulek("phrase_idiophone_stretch1", 0, klen*random:k(1, 1.5), 0)
+
+ if (kdo == 0) then
+ schedulek("phrase_idiophone1", 0, klen*random:k(1, 1.3), 0) ; chords
+ kdo = 1
+ else
+ kdo = 0
+ endif
+ endif
+ transition_out("transition_idiophone_randtime")
+endin
+
+
+instr sequencer_s2
+
+ schedule("note_bass1", 0, p3, 0)
+ schedule("phrase_idiophone1", 0, i(gkseq_beattime) * i(gkmel_section_change_due), 1)
+
+ if (gkmel_section_change == 1) then
+ klen = mel_length:k()
+ schedulek("phrase_idiophone1", 0, klen, 1) ; single note only
+ schedulek("phrase_idiophone_stretch1", 0, klen*1.3, 0)
+ endif
+
+ if (lastcycle:k() == 1) then
+ turnoff2("note_bass1", 0, 1)
+ endif
+
+endin
+
+
+instr sequencer_s3
+ schedule("note_bass1", 0, p3, 0)
+ schedule("phrase_idiophone_stretch1", 0, i(gkseq_beattime) * i(gkmel_section_change_due), 1)
+
+ if (gkmel_section_change == 1) then
+ klen = mel_length:k()
+ schedulek("phrase_idiophone1", 0, klen, 0) ; chords
+ schedulek("phrase_idiophone_stretch1", 0, klen*0.8, 1)
+ endif
+
+ if (lastcycle:k() == 1) then
+ turnoff2("note_bass1", 0, 1)
+ endif
+
+endin
+
+
+instr sequencer_s4
+ idiophone_change()
+ schedule("phrase_dropstretch1", 0, i(gkseq_beattime) * 2 * i(gkmel_section_change_due), random(0.5, 1.5), 1, 1, 0.5)
+ if (gkmel_section_change == 1) then
+ klen = mel_length:k()
+ schedulek("phrase_idiophone1", 0, klen, 1) ; single note only
+ schedulek("phrase_idiophone_stretch1", 0, klen*1.3, 1)
+ endif
+ transition_out("transition_waterbubbler1")
+endin
+
+
+instr sequencer_s5
+ imaxlen = p3
+ itime = 0
+ while (itime < imaxlen) do
+ idur = random(5, 20)
+ schedule("phrase_dropstretch1", itime, idur, random(0.5, 1.5), 1, 1, 1)
+ if (random(0, 1) > 0.5) then
+ schedule("phrase_dropstretch1", itime + random(0, 5), idur, random(0.5, 1.5), 1, 1, 2)
+ endif
+
+ if (random(0, 1) > 0.5) then ; no reson
+ schedule("phrase_dropstretch1", itime + random(0, 5), idur, random(0.5, 1.5), 0, 1, 1)
+ endif
+
+ if (random(0, 1) > 0.5) then
+ schedule("phrase_waterbubbler1", itime, idur, 1)
+ endif
+
+ if (random(0, 1) > 0.5) then
+ schedule("play_waterpaddling1", itime + random(0, 5), 1)
+ endif
+
+ itime += idur * random(0.5, 0.8)
+ od
+endin
+
+
+instr sequencer_s6
+ schedule("phrase_dropstretch1", 0, i(gkseq_beattime) * 1.5 * i(gkmel_section_change_due), random(0.5, 1.5), 0, 1, 1)
+
+ if (gkmel_section_change == 1) then
+ ;turnoff2 "phrase_idiophone_stretch2", 0, 1
+ schedulek("phrase_idiophone_stretch2", 0, mel_length:k()*1.3, 0)
+ schedulek("phrase_waterbubbler1", 0, mel_length:k(), 0)
+ endif
+
+ awL, awR bus_read "phrase_waterbubbler"
+ amL, amR bus_read "note_idiophonestretch2"
+
+ ir = 256
+ irm = 2
+ fwL pvsanal awL, ir, ir/irm, ir, 1
+ fwR pvsanal awR, ir, ir/irm, ir, 1
+ fmL pvsanal amL, ir, ir/irm, ir, 1
+ fmR pvsanal amR, ir, ir/irm, ir, 1
+ fxL pvsmorph fwL, fmL, 0, 1
+ fxR pvsmorph fwR, fmR, 0, 1
+ aL pvsynth fxL
+ aR pvsynth fxR
+ kamp linseg 0, p3*0.01, 1, p3*0.98, 1, p3*0.01, 0 ; has click at start
+ bus_mix("main", aL*kamp, aR*kamp)
+endin
+
+
+instr sequencer_s7
+ idiophone_change()
+ schedule("phrase_dropstretch1", 0, i(gkseq_beattime) * 1.5 * i(gkmel_section_change_due), random(0.5, 1.5), 1, 1, 8)
+ if (gkmel_section_change == 1) then
+ schedulek("phrase_idiophone_stretch2", 0, mel_length:k()*1.3, 0)
+ schedulek("phrase_waterbubbler1", 0, mel_length:k(), 1)
+ endif
+
+ aL, aR bus_read "note_idiophonestretch2"
+ bus_mix("delay1", aL*0.2, aR*0.2)
+ bus_mix("main", aL*0.8, aR*0.8)
+ transition_out("transition_idiophone_randtime")
+endin
+
+
+instr sequencer_s8
+ pause_melprogression()
+ imaxlen = p3
+ itime = 0
+ while (itime < imaxlen) do
+ idur = random(p3*0.1, p3*0.3)
+ idur = (idur + itime > imaxlen) ? imaxlen - itime : idur
+ schedule("phrase_dropstretch1", itime, idur, random(0.5, 1.5), 1, 1, 0.5)
+ if (random(0, 1) > 0.5) then
+ schedule("phrase_dropstretch1", itime + random(0, 5), idur, random(0.5, 1.5), 1, 1, 2)
+ endif
+
+ if (random(0, 1) > 0.5) then ; no reson
+ schedule("phrase_dropstretch1", itime + random(0, 5), idur, random(0.5, 1.5), 0, 1, 1)
+ endif
+
+ if (random(0, 1) > 0.2) then
+ schedule("play_waterpaddling1", itime + random(0, 5), random(0.5, 6))
+ if (random(0, 1) > 0.6) then
+ schedule("play_waterpaddling1", itime + random(0, 5), random(0.5, 6))
+ endif
+ endif
+ itime += idur * random(0.5, 1.2)
+ od
+ transition_out("transition_idiophone_gliss1")
+endin
+
+
+instr sequencer_s9
+ transition_in("transition_idiophone_stretch1")
+ idiophone_change()
+ gimel_portamento_beatratio = 0.4
+ imaxlen = p3
+ itime = 0
+ while (itime < imaxlen) do
+ idur = random(5, 20)
+ idur = (idur + itime > imaxlen) ? imaxlen - itime : idur
+ schedule("phrase_idiophone_stretch3", itime, idur)
+ itime += idur
+ od
+ transition_out("transition_idiophone_stretch1")
+endin
+
+
+instr sequencer_s10
+ transition_in("transition_idiophone_randtime")
+ gimel_portamento_beatratio = 0.4
+ schedule("phrase_idiophone_stretch4", 0, p3)
+ schedule("note_bass1", 0, p3, 0)
+
+ kmetrofreq = abs:k(oscil:k(5, 0.01)) + 0.1
+ knotemetro = metro(kmetrofreq)
+ if (knotemetro == 1) then
+ if (random:k(0, 1) > 0.8) then
+ kstart = random:k(0, 0.3)
+ schedulek("note_hybrid1", kstart, 1, mel_randomnote:k())
+ ;schedulek("_note_idiophone1", kstart, 0.1, mel_randomnote:k()+12, random:k(2, 7))
+ ;schedulek("note_drop1", kstart, 0.5)
+ endif
+ endif
+
+ kdroprollmetro = metro(0.1)
+ if (kdroprollmetro == 1 && random:k(0, 1) > 0.5) then
+ schedulek("fnmi_sineblips", random:k(0, 2), random:k(3, 10), "reverb1")
+ schedulek("phrase_droproll1", random:k(0, 2), random:k(3, 10), 1)
+ endif
+
+endin
+
+
+instr sequencer_s11
+ transition_in("transition_idiophone_gliss1")
+ ; resonated droplets
+ kmetrofreq = abs:k(oscil:k(3, 0.01)) + 0.1
+ knotemetro = metro(kmetrofreq)
+ if (knotemetro == 1) then
+ if (random:k(0, 1) > 0.5) then
+ schedulek("note_hybrid1", random:k(0, 0.3), 1, mel_randomnote:k())
+ if (random:k(0, 1) > 0.5) then
+ schedulek("note_hybrid1", random:k(0.3, 1), 1, mel_randomnote:k()+12)
+ endif
+ endif
+ endif
+
+ ; water droplets
+ kdroprollmetro = metro(0.2)
+ if (kdroprollmetro == 1 && random:k(0, 1) > 0.5) then
+ schedulek("phrase_droproll1", random:k(0, 2), random:k(3, 10), 0.2)
+ endif
+
+ ; subtle notes
+ if (gkmel_section_change == 1) then
+ schedulek("note_idiophonestretch1", random:k(0, 2), random:k(4, 12), mel_randomnote:k()-12, 0)
+ schedulek("note_idiophonestretch1", random:k(0, 2), random:k(4, 12), mel_randomnote:k()-12, 0)
+ if (random:k(0, 1) > 0.5) then
+ schedulek("note_idiophonestretch1", random:k(0, 2), random:k(4, 12), mel_randomnote:k()-12, 0)
+ schedulek("note_idiophonestretch1", random:k(0, 2), random:k(4, 12), mel_randomnote:k()-12, 0)
+ endif
+
+ ; paddling stretch
+ schedulek("play_waterpaddling1", random:k(0, 2), random:k(3, 15))
+
+ ; bass note
+ if (random:k(0, 1) > 0.4) then
+ klen = mel_length:k()
+ schedulek("note_bass2", random:k(0, 3), random:k(klen, klen*1.5), 0)
+ endif
+ endif
+endin
+
+
+instr sequencer_s12
+ kmetrofreq = abs:k(oscil:k(3, 0.01)) + 0.1
+ knotemetro = metro(kmetrofreq)
+ if (knotemetro == 1) then
+ if (random:k(0, 1) > 0.5) then
+ schedulek("note_hybrid1", random:k(0, 0.3), 1, mel_randomnote:k()-12)
+ endif
+ if (random:k(0, 1) > 0.5) then
+ schedulek("note_hybrid1", random:k(0.3, 1), 1, mel_randomnote:k())
+ endif
+ if (random:k(0, 1) > 0.5) then
+ kstart = random:k(0.3, 1)
+ schedulek("note_hybrid1", kstart, 1, mel_randomnote:k()+24)
+ if (random:k(0, 1) > 0.5) then
+ schedulek("note_drop1", kstart, 1)
+ endif
+ endif
+ if (random:k(0, 1) > 0.9) then
+ schedulek("phrase_dropstretch1", random:k(0, 3), random:k(4, 7), 2, round:k(random:k(0, 1)), 1, 2)
+ schedulek("note_bass2", random:k(0, 3), random:k(4, 5), 0)
+ endif
+ endif
+ schedule("phrase_droproll1", 0, 1, 2.4)
+endin
+
+
+instr sequencer_s13
+ if (random(0, 1) >= 0.5) then
+ pause_melprogression()
+ endif
+ idiophone_change()
+ iplayidiophone = round(random(0, 1))
+ kmetrofreq expseg 0.3, p3, 20
+ knotemetro = metro(kmetrofreq)
+ if (knotemetro == 1) then
+ if (random:k(0, 1) > 0.5) then
+ schedulek("note_hybrid1", random:k(0, 0.3), 1, mel_randomnote:k()+12)
+ if (iplayidiophone == 1 && active:k("note_idiophonestretch1") == 0) then
+ schedulek("note_idiophonestretch1", random:k(0, 2), random:k(1, 3), mel_randomnote:k()-12, 0)
+ endif
+ endif
+ if (random:k(0, 1) > 0.5) then
+ schedulek("note_hybrid1", random:k(0.3, 1), 1, mel_randomnote:k())
+ endif
+ if (random:k(0, 1) > 0.5) then
+ kstart = random:k(0.3, 1)
+ schedulek("note_hybrid1", kstart, 1, mel_randomnote:k()-12)
+ if (random:k(0, 1) > 0.5) then
+ schedulek("note_drop1", kstart, 1)
+ endif
+ endif
+ endif
+ schedule("phrase_droproll1", 0, 1.3, 2.4)
+endin
+
+
+instr sequencer_s14
+ gimel_portamento_beatratio = 0.2
+ imaxlen = p3
+ iplaydrops = round(random(0, 1))
+ itime = 0
+ while (itime < imaxlen) do
+ idur = random(5, 20)
+ idur = (idur + itime > imaxlen) ? imaxlen - itime : idur
+ schedule("phrase_hybridstretch1", itime, idur)
+ if (iplaydrops == 1) then
+ schedule("phrase_droproll1", itime, idur, 0.4)
+ endif
+ itime += idur
+ od
+
+ ; play one music box glissando just before the next mel section change
+ kglissset init 0
+ if (kglissset == 0 && gkmel_section_change == 1) then
+ schedulek("phrase_idiophone_gliss1", mel_length:k()-0.5, 1, 3)
+ kglissset = 1
+ endif
+
+ ; water transition out
+ transition_out("transition_droplets1")
+endin
+
+
+instr sequencer_s15
+ transition_in("transition_idiophone_gliss1")
+ idiophone_change()
+ pause_melprogression()
+
+ ;schedule("phrase_idiophone1", 0, p3, 0)
+ schedule("phrase_hybrid2", 0, p3, 0)
+ transition_out("transition_waterbubbler1")
+endin
+
+
+instr sequencer_s16
+ idiophone_change()
+ imaxlen = p3
+ itime = 0
+ while (itime < imaxlen) do
+ idur = random(5, 20)
+ idur = (idur + itime > imaxlen) ? imaxlen - itime : idur
+ schedule("phrase_hybrid1", itime, idur)
+ itime += idur
+ od
+ transition_out("transition_idiophone_gliss1")
+endin
+
+
+instr sequencer_s17
+ pause_melprogression()
+ imaxlen = p3
+ itime = 0
+ while (itime < imaxlen) do
+ schedule("note_idiophone_randtime", itime+random(0, 1), random(2, 5))
+ schedule("note_idiophone_randtime", itime+random(0, 4), random(2, 5))
+ schedule("play_waterpaddling1", itime+random(0, 1), random(1, 2))
+ itime += random(5, 20)
+ od
+
+ schedule("phrase_dropstretch1", 0, p3, 1, 1, 1, 1)
+ schedule("phrase_dropstretch1", 0, p3, 2, 1, 1, 0.5)
+ transition_out("transition_droplets1")
+endin
+
+
+
+#end
diff --git a/site/app/partialemergence/sequencing_melodic_persistence.pe.udo b/site/app/partialemergence/sequencing_melodic_persistence.pe.udo
new file mode 100644
index 0000000..a75b2d4
--- /dev/null
+++ b/site/app/partialemergence/sequencing_melodic_persistence.pe.udo
@@ -0,0 +1,54 @@
+#ifndef UDO_MELSEQUENCINGPERSIST
+#define UDO_MELSEQUENCINGPERSIST ##
+/*
+ Melodic sequencer persistence: saving/loading from files and database
+ Slim excerpt for Partial Emergence
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022, 2025
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "/sequencing_melodic.udo"
+#include "/array_tools.udo"
+
+/*
+ Load state from file
+
+ p4 path to load from
+*/
+instr mel_loadstate_fs
+ Spath = p4
+ isize = -1
+ iline = 0
+
+ ftload Spath, 1,\
+ gimel_chords, gimel_notes,
+ gimel_lengths, gimel_action1,\
+ gimel_action2, gimel_actionthreshold,\
+ gimel_active, gimel_importance,\
+ gimel_mod1, gimel_mod2,\
+ gimel_mod3, gimel_mod4,\
+ gimel_state
+
+ gkmel_futures_refresh_trig = 1
+ turnoff
+endin
+
+
+
+; if MEL_INITPATH is set, load the specified progression data accordingly
+#ifdef MEL_HASINIT
+instr _mel_persistence_init
+#ifdef MEL_INITPATH
+ subinstrinit "mel_loadstate_fs", "$MEL_INITPATH"
+#end
+ alwayson "_mel_manager"
+ turnoff
+endin
+schedule "_mel_persistence_init", 0, 60
+
+; end MEL_HASINIT
+#end
+
+#end
diff --git a/site/app/partialemergence/soundexport.xdb b/site/app/partialemergence/soundexport.xdb
new file mode 100644
index 0000000..8f45260
--- /dev/null
+++ b/site/app/partialemergence/soundexport.xdb
@@ -0,0 +1,4538 @@
+; SONICS DB extract 1.0, exported from database on/at 2022-10-05 22:43:39.470067+01
+#define XDB_SET ##
+#define XDB_MINNOTE #0#
+gSxdb_collections[] fillarray "Water.Droplet", "Water.Paddling", "MusicBox", "Kalimba"
+gixdb_collectionsfn[] fillarray ftgen(0,0,-578,-2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577), ftgen(0,0,-100,-2,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677), ftgen(0,0,-60,-2,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737), ftgen(0,0,-74,-2,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811)
+gisounddb[][] init 812, 4
+gisounddb[0][0] ftgen 0,0,0,1,"sounds/Water/Droplets/392.mp3",0,0,0
+gisounddb[1][0] ftgen 0,0,0,1,"sounds/Water/Droplets/378.mp3",0,0,0
+gisounddb[2][0] ftgen 0,0,0,1,"sounds/Water/Droplets/45.mp3",0,0,0
+gisounddb[3][0] ftgen 0,0,0,1,"sounds/Water/Droplets/130.mp3",0,0,0
+gisounddb[4][0] ftgen 0,0,0,1,"sounds/Water/Droplets/344.mp3",0,0,0
+gisounddb[5][0] ftgen 0,0,0,1,"sounds/Water/Droplets/576.mp3",0,0,0
+gisounddb[6][0] ftgen 0,0,0,1,"sounds/Water/Droplets/60.mp3",0,0,0
+gisounddb[7][0] ftgen 0,0,0,1,"sounds/Water/Droplets/491.mp3",0,0,0
+gisounddb[8][0] ftgen 0,0,0,1,"sounds/Water/Droplets/59.mp3",0,0,0
+gisounddb[9][0] ftgen 0,0,0,1,"sounds/Water/Droplets/530.mp3",0,0,0
+gisounddb[10][0] ftgen 0,0,0,1,"sounds/Water/Droplets/160.mp3",0,0,0
+gisounddb[11][0] ftgen 0,0,0,1,"sounds/Water/Droplets/466.mp3",0,0,0
+gisounddb[12][0] ftgen 0,0,0,1,"sounds/Water/Droplets/178.mp3",0,0,0
+gisounddb[13][0] ftgen 0,0,0,1,"sounds/Water/Droplets/258.mp3",0,0,0
+gisounddb[14][0] ftgen 0,0,0,1,"sounds/Water/Droplets/81.mp3",0,0,0
+gisounddb[15][0] ftgen 0,0,0,1,"sounds/Water/Droplets/217.mp3",0,0,0
+gisounddb[16][0] ftgen 0,0,0,1,"sounds/Water/Droplets/488.mp3",0,0,0
+gisounddb[17][0] ftgen 0,0,0,1,"sounds/Water/Droplets/38.mp3",0,0,0
+gisounddb[18][0] ftgen 0,0,0,1,"sounds/Water/Droplets/309.mp3",0,0,0
+gisounddb[19][0] ftgen 0,0,0,1,"sounds/Water/Droplets/182.mp3",0,0,0
+gisounddb[20][0] ftgen 0,0,0,1,"sounds/Water/Droplets/543.mp3",0,0,0
+gisounddb[21][0] ftgen 0,0,0,1,"sounds/Water/Droplets/5.mp3",0,0,0
+gisounddb[22][0] ftgen 0,0,0,1,"sounds/Water/Droplets/482.mp3",0,0,0
+gisounddb[23][0] ftgen 0,0,0,1,"sounds/Water/Droplets/358.mp3",0,0,0
+gisounddb[24][0] ftgen 0,0,0,1,"sounds/Water/Droplets/454.mp3",0,0,0
+gisounddb[25][0] ftgen 0,0,0,1,"sounds/Water/Droplets/260.mp3",0,0,0
+gisounddb[26][0] ftgen 0,0,0,1,"sounds/Water/Droplets/298.mp3",0,0,0
+gisounddb[27][0] ftgen 0,0,0,1,"sounds/Water/Droplets/180.mp3",0,0,0
+gisounddb[28][0] ftgen 0,0,0,1,"sounds/Water/Droplets/502.mp3",0,0,0
+gisounddb[29][0] ftgen 0,0,0,1,"sounds/Water/Droplets/512.mp3",0,0,0
+gisounddb[30][0] ftgen 0,0,0,1,"sounds/Water/Droplets/479.mp3",0,0,0
+gisounddb[31][0] ftgen 0,0,0,1,"sounds/Water/Droplets/532.mp3",0,0,0
+gisounddb[32][0] ftgen 0,0,0,1,"sounds/Water/Droplets/85.mp3",0,0,0
+gisounddb[33][0] ftgen 0,0,0,1,"sounds/Water/Droplets/289.mp3",0,0,0
+gisounddb[34][0] ftgen 0,0,0,1,"sounds/Water/Droplets/413.mp3",0,0,0
+gisounddb[35][0] ftgen 0,0,0,1,"sounds/Water/Droplets/453.mp3",0,0,0
+gisounddb[36][0] ftgen 0,0,0,1,"sounds/Water/Droplets/75.mp3",0,0,0
+gisounddb[37][0] ftgen 0,0,0,1,"sounds/Water/Droplets/88.mp3",0,0,0
+gisounddb[38][0] ftgen 0,0,0,1,"sounds/Water/Droplets/77.mp3",0,0,0
+gisounddb[39][0] ftgen 0,0,0,1,"sounds/Water/Droplets/157.mp3",0,0,0
+gisounddb[40][0] ftgen 0,0,0,1,"sounds/Water/Droplets/245.mp3",0,0,0
+gisounddb[41][0] ftgen 0,0,0,1,"sounds/Water/Droplets/474.mp3",0,0,0
+gisounddb[42][0] ftgen 0,0,0,1,"sounds/Water/Droplets/404.mp3",0,0,0
+gisounddb[43][0] ftgen 0,0,0,1,"sounds/Water/Droplets/343.mp3",0,0,0
+gisounddb[44][0] ftgen 0,0,0,1,"sounds/Water/Droplets/239.mp3",0,0,0
+gisounddb[45][0] ftgen 0,0,0,1,"sounds/Water/Droplets/381.mp3",0,0,0
+gisounddb[46][0] ftgen 0,0,0,1,"sounds/Water/Droplets/251.mp3",0,0,0
+gisounddb[47][0] ftgen 0,0,0,1,"sounds/Water/Droplets/569.mp3",0,0,0
+gisounddb[48][0] ftgen 0,0,0,1,"sounds/Water/Droplets/475.mp3",0,0,0
+gisounddb[49][0] ftgen 0,0,0,1,"sounds/Water/Droplets/462.mp3",0,0,0
+gisounddb[50][0] ftgen 0,0,0,1,"sounds/Water/Droplets/290.mp3",0,0,0
+gisounddb[51][0] ftgen 0,0,0,1,"sounds/Water/Droplets/70.mp3",0,0,0
+gisounddb[52][0] ftgen 0,0,0,1,"sounds/Water/Droplets/224.mp3",0,0,0
+gisounddb[53][0] ftgen 0,0,0,1,"sounds/Water/Droplets/164.mp3",0,0,0
+gisounddb[54][0] ftgen 0,0,0,1,"sounds/Water/Droplets/274.mp3",0,0,0
+gisounddb[55][0] ftgen 0,0,0,1,"sounds/Water/Droplets/105.mp3",0,0,0
+gisounddb[56][0] ftgen 0,0,0,1,"sounds/Water/Droplets/531.mp3",0,0,0
+gisounddb[57][0] ftgen 0,0,0,1,"sounds/Water/Droplets/39.mp3",0,0,0
+gisounddb[58][0] ftgen 0,0,0,1,"sounds/Water/Droplets/135.mp3",0,0,0
+gisounddb[59][0] ftgen 0,0,0,1,"sounds/Water/Droplets/281.mp3",0,0,0
+gisounddb[60][0] ftgen 0,0,0,1,"sounds/Water/Droplets/494.mp3",0,0,0
+gisounddb[61][0] ftgen 0,0,0,1,"sounds/Water/Droplets/147.mp3",0,0,0
+gisounddb[62][0] ftgen 0,0,0,1,"sounds/Water/Droplets/561.mp3",0,0,0
+gisounddb[63][0] ftgen 0,0,0,1,"sounds/Water/Droplets/461.mp3",0,0,0
+gisounddb[64][0] ftgen 0,0,0,1,"sounds/Water/Droplets/430.mp3",0,0,0
+gisounddb[65][0] ftgen 0,0,0,1,"sounds/Water/Droplets/328.mp3",0,0,0
+gisounddb[66][0] ftgen 0,0,0,1,"sounds/Water/Droplets/331.mp3",0,0,0
+gisounddb[67][0] ftgen 0,0,0,1,"sounds/Water/Droplets/316.mp3",0,0,0
+gisounddb[68][0] ftgen 0,0,0,1,"sounds/Water/Droplets/141.mp3",0,0,0
+gisounddb[69][0] ftgen 0,0,0,1,"sounds/Water/Droplets/124.mp3",0,0,0
+gisounddb[70][0] ftgen 0,0,0,1,"sounds/Water/Droplets/556.mp3",0,0,0
+gisounddb[71][0] ftgen 0,0,0,1,"sounds/Water/Droplets/510.mp3",0,0,0
+gisounddb[72][0] ftgen 0,0,0,1,"sounds/Water/Droplets/449.mp3",0,0,0
+gisounddb[73][0] ftgen 0,0,0,1,"sounds/Water/Droplets/138.mp3",0,0,0
+gisounddb[74][0] ftgen 0,0,0,1,"sounds/Water/Droplets/62.mp3",0,0,0
+gisounddb[75][0] ftgen 0,0,0,1,"sounds/Water/Droplets/192.mp3",0,0,0
+gisounddb[76][0] ftgen 0,0,0,1,"sounds/Water/Droplets/361.mp3",0,0,0
+gisounddb[77][0] ftgen 0,0,0,1,"sounds/Water/Droplets/21.mp3",0,0,0
+gisounddb[78][0] ftgen 0,0,0,1,"sounds/Water/Droplets/40.mp3",0,0,0
+gisounddb[79][0] ftgen 0,0,0,1,"sounds/Water/Droplets/205.mp3",0,0,0
+gisounddb[80][0] ftgen 0,0,0,1,"sounds/Water/Droplets/301.mp3",0,0,0
+gisounddb[81][0] ftgen 0,0,0,1,"sounds/Water/Droplets/315.mp3",0,0,0
+gisounddb[82][0] ftgen 0,0,0,1,"sounds/Water/Droplets/393.mp3",0,0,0
+gisounddb[83][0] ftgen 0,0,0,1,"sounds/Water/Droplets/417.mp3",0,0,0
+gisounddb[84][0] ftgen 0,0,0,1,"sounds/Water/Droplets/348.mp3",0,0,0
+gisounddb[85][0] ftgen 0,0,0,1,"sounds/Water/Droplets/42.mp3",0,0,0
+gisounddb[86][0] ftgen 0,0,0,1,"sounds/Water/Droplets/256.mp3",0,0,0
+gisounddb[87][0] ftgen 0,0,0,1,"sounds/Water/Droplets/533.mp3",0,0,0
+gisounddb[88][0] ftgen 0,0,0,1,"sounds/Water/Droplets/410.mp3",0,0,0
+gisounddb[89][0] ftgen 0,0,0,1,"sounds/Water/Droplets/226.mp3",0,0,0
+gisounddb[90][0] ftgen 0,0,0,1,"sounds/Water/Droplets/435.mp3",0,0,0
+gisounddb[91][0] ftgen 0,0,0,1,"sounds/Water/Droplets/299.mp3",0,0,0
+gisounddb[92][0] ftgen 0,0,0,1,"sounds/Water/Droplets/98.mp3",0,0,0
+gisounddb[93][0] ftgen 0,0,0,1,"sounds/Water/Droplets/139.mp3",0,0,0
+gisounddb[94][0] ftgen 0,0,0,1,"sounds/Water/Droplets/397.mp3",0,0,0
+gisounddb[95][0] ftgen 0,0,0,1,"sounds/Water/Droplets/95.mp3",0,0,0
+gisounddb[96][0] ftgen 0,0,0,1,"sounds/Water/Droplets/396.mp3",0,0,0
+gisounddb[97][0] ftgen 0,0,0,1,"sounds/Water/Droplets/560.mp3",0,0,0
+gisounddb[98][0] ftgen 0,0,0,1,"sounds/Water/Droplets/399.mp3",0,0,0
+gisounddb[99][0] ftgen 0,0,0,1,"sounds/Water/Droplets/233.mp3",0,0,0
+gisounddb[100][0] ftgen 0,0,0,1,"sounds/Water/Droplets/559.mp3",0,0,0
+gisounddb[101][0] ftgen 0,0,0,1,"sounds/Water/Droplets/552.mp3",0,0,0
+gisounddb[102][0] ftgen 0,0,0,1,"sounds/Water/Droplets/511.mp3",0,0,0
+gisounddb[103][0] ftgen 0,0,0,1,"sounds/Water/Droplets/74.mp3",0,0,0
+gisounddb[104][0] ftgen 0,0,0,1,"sounds/Water/Droplets/174.mp3",0,0,0
+gisounddb[105][0] ftgen 0,0,0,1,"sounds/Water/Droplets/460.mp3",0,0,0
+gisounddb[106][0] ftgen 0,0,0,1,"sounds/Water/Droplets/171.mp3",0,0,0
+gisounddb[107][0] ftgen 0,0,0,1,"sounds/Water/Droplets/149.mp3",0,0,0
+gisounddb[108][0] ftgen 0,0,0,1,"sounds/Water/Droplets/203.mp3",0,0,0
+gisounddb[109][0] ftgen 0,0,0,1,"sounds/Water/Droplets/504.mp3",0,0,0
+gisounddb[110][0] ftgen 0,0,0,1,"sounds/Water/Droplets/323.mp3",0,0,0
+gisounddb[111][0] ftgen 0,0,0,1,"sounds/Water/Droplets/423.mp3",0,0,0
+gisounddb[112][0] ftgen 0,0,0,1,"sounds/Water/Droplets/210.mp3",0,0,0
+gisounddb[113][0] ftgen 0,0,0,1,"sounds/Water/Droplets/431.mp3",0,0,0
+gisounddb[114][0] ftgen 0,0,0,1,"sounds/Water/Droplets/30.mp3",0,0,0
+gisounddb[115][0] ftgen 0,0,0,1,"sounds/Water/Droplets/295.mp3",0,0,0
+gisounddb[116][0] ftgen 0,0,0,1,"sounds/Water/Droplets/406.mp3",0,0,0
+gisounddb[117][0] ftgen 0,0,0,1,"sounds/Water/Droplets/100.mp3",0,0,0
+gisounddb[118][0] ftgen 0,0,0,1,"sounds/Water/Droplets/579.mp3",0,0,0
+gisounddb[119][0] ftgen 0,0,0,1,"sounds/Water/Droplets/505.mp3",0,0,0
+gisounddb[120][0] ftgen 0,0,0,1,"sounds/Water/Droplets/329.mp3",0,0,0
+gisounddb[121][0] ftgen 0,0,0,1,"sounds/Water/Droplets/162.mp3",0,0,0
+gisounddb[122][0] ftgen 0,0,0,1,"sounds/Water/Droplets/534.mp3",0,0,0
+gisounddb[123][0] ftgen 0,0,0,1,"sounds/Water/Droplets/12.mp3",0,0,0
+gisounddb[124][0] ftgen 0,0,0,1,"sounds/Water/Droplets/44.mp3",0,0,0
+gisounddb[125][0] ftgen 0,0,0,1,"sounds/Water/Droplets/548.mp3",0,0,0
+gisounddb[126][0] ftgen 0,0,0,1,"sounds/Water/Droplets/527.mp3",0,0,0
+gisounddb[127][0] ftgen 0,0,0,1,"sounds/Water/Droplets/473.mp3",0,0,0
+gisounddb[128][0] ftgen 0,0,0,1,"sounds/Water/Droplets/314.mp3",0,0,0
+gisounddb[129][0] ftgen 0,0,0,1,"sounds/Water/Droplets/8.mp3",0,0,0
+gisounddb[130][0] ftgen 0,0,0,1,"sounds/Water/Droplets/103.mp3",0,0,0
+gisounddb[131][0] ftgen 0,0,0,1,"sounds/Water/Droplets/46.mp3",0,0,0
+gisounddb[132][0] ftgen 0,0,0,1,"sounds/Water/Droplets/520.mp3",0,0,0
+gisounddb[133][0] ftgen 0,0,0,1,"sounds/Water/Droplets/109.mp3",0,0,0
+gisounddb[134][0] ftgen 0,0,0,1,"sounds/Water/Droplets/550.mp3",0,0,0
+gisounddb[135][0] ftgen 0,0,0,1,"sounds/Water/Droplets/300.mp3",0,0,0
+gisounddb[136][0] ftgen 0,0,0,1,"sounds/Water/Droplets/367.mp3",0,0,0
+gisounddb[137][0] ftgen 0,0,0,1,"sounds/Water/Droplets/456.mp3",0,0,0
+gisounddb[138][0] ftgen 0,0,0,1,"sounds/Water/Droplets/145.mp3",0,0,0
+gisounddb[139][0] ftgen 0,0,0,1,"sounds/Water/Droplets/365.mp3",0,0,0
+gisounddb[140][0] ftgen 0,0,0,1,"sounds/Water/Droplets/34.mp3",0,0,0
+gisounddb[141][0] ftgen 0,0,0,1,"sounds/Water/Droplets/407.mp3",0,0,0
+gisounddb[142][0] ftgen 0,0,0,1,"sounds/Water/Droplets/271.mp3",0,0,0
+gisounddb[143][0] ftgen 0,0,0,1,"sounds/Water/Droplets/305.mp3",0,0,0
+gisounddb[144][0] ftgen 0,0,0,1,"sounds/Water/Droplets/272.mp3",0,0,0
+gisounddb[145][0] ftgen 0,0,0,1,"sounds/Water/Droplets/332.mp3",0,0,0
+gisounddb[146][0] ftgen 0,0,0,1,"sounds/Water/Droplets/287.mp3",0,0,0
+gisounddb[147][0] ftgen 0,0,0,1,"sounds/Water/Droplets/93.mp3",0,0,0
+gisounddb[148][0] ftgen 0,0,0,1,"sounds/Water/Droplets/486.mp3",0,0,0
+gisounddb[149][0] ftgen 0,0,0,1,"sounds/Water/Droplets/498.mp3",0,0,0
+gisounddb[150][0] ftgen 0,0,0,1,"sounds/Water/Droplets/432.mp3",0,0,0
+gisounddb[151][0] ftgen 0,0,0,1,"sounds/Water/Droplets/61.mp3",0,0,0
+gisounddb[152][0] ftgen 0,0,0,1,"sounds/Water/Droplets/427.mp3",0,0,0
+gisounddb[153][0] ftgen 0,0,0,1,"sounds/Water/Droplets/390.mp3",0,0,0
+gisounddb[154][0] ftgen 0,0,0,1,"sounds/Water/Droplets/320.mp3",0,0,0
+gisounddb[155][0] ftgen 0,0,0,1,"sounds/Water/Droplets/403.mp3",0,0,0
+gisounddb[156][0] ftgen 0,0,0,1,"sounds/Water/Droplets/67.mp3",0,0,0
+gisounddb[157][0] ftgen 0,0,0,1,"sounds/Water/Droplets/517.mp3",0,0,0
+gisounddb[158][0] ftgen 0,0,0,1,"sounds/Water/Droplets/472.mp3",0,0,0
+gisounddb[159][0] ftgen 0,0,0,1,"sounds/Water/Droplets/49.mp3",0,0,0
+gisounddb[160][0] ftgen 0,0,0,1,"sounds/Water/Droplets/408.mp3",0,0,0
+gisounddb[161][0] ftgen 0,0,0,1,"sounds/Water/Droplets/373.mp3",0,0,0
+gisounddb[162][0] ftgen 0,0,0,1,"sounds/Water/Droplets/132.mp3",0,0,0
+gisounddb[163][0] ftgen 0,0,0,1,"sounds/Water/Droplets/359.mp3",0,0,0
+gisounddb[164][0] ftgen 0,0,0,1,"sounds/Water/Droplets/55.mp3",0,0,0
+gisounddb[165][0] ftgen 0,0,0,1,"sounds/Water/Droplets/28.mp3",0,0,0
+gisounddb[166][0] ftgen 0,0,0,1,"sounds/Water/Droplets/318.mp3",0,0,0
+gisounddb[167][0] ftgen 0,0,0,1,"sounds/Water/Droplets/311.mp3",0,0,0
+gisounddb[168][0] ftgen 0,0,0,1,"sounds/Water/Droplets/525.mp3",0,0,0
+gisounddb[169][0] ftgen 0,0,0,1,"sounds/Water/Droplets/163.mp3",0,0,0
+gisounddb[170][0] ftgen 0,0,0,1,"sounds/Water/Droplets/288.mp3",0,0,0
+gisounddb[171][0] ftgen 0,0,0,1,"sounds/Water/Droplets/202.mp3",0,0,0
+gisounddb[172][0] ftgen 0,0,0,1,"sounds/Water/Droplets/23.mp3",0,0,0
+gisounddb[173][0] ftgen 0,0,0,1,"sounds/Water/Droplets/375.mp3",0,0,0
+gisounddb[174][0] ftgen 0,0,0,1,"sounds/Water/Droplets/72.mp3",0,0,0
+gisounddb[175][0] ftgen 0,0,0,1,"sounds/Water/Droplets/321.mp3",0,0,0
+gisounddb[176][0] ftgen 0,0,0,1,"sounds/Water/Droplets/128.mp3",0,0,0
+gisounddb[177][0] ftgen 0,0,0,1,"sounds/Water/Droplets/380.mp3",0,0,0
+gisounddb[178][0] ftgen 0,0,0,1,"sounds/Water/Droplets/366.mp3",0,0,0
+gisounddb[179][0] ftgen 0,0,0,1,"sounds/Water/Droplets/1.mp3",0,0,0
+gisounddb[180][0] ftgen 0,0,0,1,"sounds/Water/Droplets/235.mp3",0,0,0
+gisounddb[181][0] ftgen 0,0,0,1,"sounds/Water/Droplets/450.mp3",0,0,0
+gisounddb[182][0] ftgen 0,0,0,1,"sounds/Water/Droplets/27.mp3",0,0,0
+gisounddb[183][0] ftgen 0,0,0,1,"sounds/Water/Droplets/468.mp3",0,0,0
+gisounddb[184][0] ftgen 0,0,0,1,"sounds/Water/Droplets/58.mp3",0,0,0
+gisounddb[185][0] ftgen 0,0,0,1,"sounds/Water/Droplets/499.mp3",0,0,0
+gisounddb[186][0] ftgen 0,0,0,1,"sounds/Water/Droplets/223.mp3",0,0,0
+gisounddb[187][0] ftgen 0,0,0,1,"sounds/Water/Droplets/440.mp3",0,0,0
+gisounddb[188][0] ftgen 0,0,0,1,"sounds/Water/Droplets/546.mp3",0,0,0
+gisounddb[189][0] ftgen 0,0,0,1,"sounds/Water/Droplets/416.mp3",0,0,0
+gisounddb[190][0] ftgen 0,0,0,1,"sounds/Water/Droplets/26.mp3",0,0,0
+gisounddb[191][0] ftgen 0,0,0,1,"sounds/Water/Droplets/483.mp3",0,0,0
+gisounddb[192][0] ftgen 0,0,0,1,"sounds/Water/Droplets/199.mp3",0,0,0
+gisounddb[193][0] ftgen 0,0,0,1,"sounds/Water/Droplets/292.mp3",0,0,0
+gisounddb[194][0] ftgen 0,0,0,1,"sounds/Water/Droplets/503.mp3",0,0,0
+gisounddb[195][0] ftgen 0,0,0,1,"sounds/Water/Droplets/345.mp3",0,0,0
+gisounddb[196][0] ftgen 0,0,0,1,"sounds/Water/Droplets/363.mp3",0,0,0
+gisounddb[197][0] ftgen 0,0,0,1,"sounds/Water/Droplets/259.mp3",0,0,0
+gisounddb[198][0] ftgen 0,0,0,1,"sounds/Water/Droplets/470.mp3",0,0,0
+gisounddb[199][0] ftgen 0,0,0,1,"sounds/Water/Droplets/169.mp3",0,0,0
+gisounddb[200][0] ftgen 0,0,0,1,"sounds/Water/Droplets/36.mp3",0,0,0
+gisounddb[201][0] ftgen 0,0,0,1,"sounds/Water/Droplets/153.mp3",0,0,0
+gisounddb[202][0] ftgen 0,0,0,1,"sounds/Water/Droplets/18.mp3",0,0,0
+gisounddb[203][0] ftgen 0,0,0,1,"sounds/Water/Droplets/131.mp3",0,0,0
+gisounddb[204][0] ftgen 0,0,0,1,"sounds/Water/Droplets/519.mp3",0,0,0
+gisounddb[205][0] ftgen 0,0,0,1,"sounds/Water/Droplets/201.mp3",0,0,0
+gisounddb[206][0] ftgen 0,0,0,1,"sounds/Water/Droplets/465.mp3",0,0,0
+gisounddb[207][0] ftgen 0,0,0,1,"sounds/Water/Droplets/170.mp3",0,0,0
+gisounddb[208][0] ftgen 0,0,0,1,"sounds/Water/Droplets/134.mp3",0,0,0
+gisounddb[209][0] ftgen 0,0,0,1,"sounds/Water/Droplets/189.mp3",0,0,0
+gisounddb[210][0] ftgen 0,0,0,1,"sounds/Water/Droplets/90.mp3",0,0,0
+gisounddb[211][0] ftgen 0,0,0,1,"sounds/Water/Droplets/536.mp3",0,0,0
+gisounddb[212][0] ftgen 0,0,0,1,"sounds/Water/Droplets/492.mp3",0,0,0
+gisounddb[213][0] ftgen 0,0,0,1,"sounds/Water/Droplets/448.mp3",0,0,0
+gisounddb[214][0] ftgen 0,0,0,1,"sounds/Water/Droplets/451.mp3",0,0,0
+gisounddb[215][0] ftgen 0,0,0,1,"sounds/Water/Droplets/280.mp3",0,0,0
+gisounddb[216][0] ftgen 0,0,0,1,"sounds/Water/Droplets/337.mp3",0,0,0
+gisounddb[217][0] ftgen 0,0,0,1,"sounds/Water/Droplets/463.mp3",0,0,0
+gisounddb[218][0] ftgen 0,0,0,1,"sounds/Water/Droplets/32.mp3",0,0,0
+gisounddb[219][0] ftgen 0,0,0,1,"sounds/Water/Droplets/563.mp3",0,0,0
+gisounddb[220][0] ftgen 0,0,0,1,"sounds/Water/Droplets/497.mp3",0,0,0
+gisounddb[221][0] ftgen 0,0,0,1,"sounds/Water/Droplets/553.mp3",0,0,0
+gisounddb[222][0] ftgen 0,0,0,1,"sounds/Water/Droplets/368.mp3",0,0,0
+gisounddb[223][0] ftgen 0,0,0,1,"sounds/Water/Droplets/458.mp3",0,0,0
+gisounddb[224][0] ftgen 0,0,0,1,"sounds/Water/Droplets/490.mp3",0,0,0
+gisounddb[225][0] ftgen 0,0,0,1,"sounds/Water/Droplets/99.mp3",0,0,0
+gisounddb[226][0] ftgen 0,0,0,1,"sounds/Water/Droplets/71.mp3",0,0,0
+gisounddb[227][0] ftgen 0,0,0,1,"sounds/Water/Droplets/441.mp3",0,0,0
+gisounddb[228][0] ftgen 0,0,0,1,"sounds/Water/Droplets/480.mp3",0,0,0
+gisounddb[229][0] ftgen 0,0,0,1,"sounds/Water/Droplets/264.mp3",0,0,0
+gisounddb[230][0] ftgen 0,0,0,1,"sounds/Water/Droplets/190.mp3",0,0,0
+gisounddb[231][0] ftgen 0,0,0,1,"sounds/Water/Droplets/507.mp3",0,0,0
+gisounddb[232][0] ftgen 0,0,0,1,"sounds/Water/Droplets/225.mp3",0,0,0
+gisounddb[233][0] ftgen 0,0,0,1,"sounds/Water/Droplets/175.mp3",0,0,0
+gisounddb[234][0] ftgen 0,0,0,1,"sounds/Water/Droplets/437.mp3",0,0,0
+gisounddb[235][0] ftgen 0,0,0,1,"sounds/Water/Droplets/572.mp3",0,0,0
+gisounddb[236][0] ftgen 0,0,0,1,"sounds/Water/Droplets/515.mp3",0,0,0
+gisounddb[237][0] ftgen 0,0,0,1,"sounds/Water/Droplets/144.mp3",0,0,0
+gisounddb[238][0] ftgen 0,0,0,1,"sounds/Water/Droplets/538.mp3",0,0,0
+gisounddb[239][0] ftgen 0,0,0,1,"sounds/Water/Droplets/476.mp3",0,0,0
+gisounddb[240][0] ftgen 0,0,0,1,"sounds/Water/Droplets/268.mp3",0,0,0
+gisounddb[241][0] ftgen 0,0,0,1,"sounds/Water/Droplets/326.mp3",0,0,0
+gisounddb[242][0] ftgen 0,0,0,1,"sounds/Water/Droplets/539.mp3",0,0,0
+gisounddb[243][0] ftgen 0,0,0,1,"sounds/Water/Droplets/121.mp3",0,0,0
+gisounddb[244][0] ftgen 0,0,0,1,"sounds/Water/Droplets/129.mp3",0,0,0
+gisounddb[245][0] ftgen 0,0,0,1,"sounds/Water/Droplets/185.mp3",0,0,0
+gisounddb[246][0] ftgen 0,0,0,1,"sounds/Water/Droplets/113.mp3",0,0,0
+gisounddb[247][0] ftgen 0,0,0,1,"sounds/Water/Droplets/57.mp3",0,0,0
+gisounddb[248][0] ftgen 0,0,0,1,"sounds/Water/Droplets/230.mp3",0,0,0
+gisounddb[249][0] ftgen 0,0,0,1,"sounds/Water/Droplets/566.mp3",0,0,0
+gisounddb[250][0] ftgen 0,0,0,1,"sounds/Water/Droplets/429.mp3",0,0,0
+gisounddb[251][0] ftgen 0,0,0,1,"sounds/Water/Droplets/342.mp3",0,0,0
+gisounddb[252][0] ftgen 0,0,0,1,"sounds/Water/Droplets/325.mp3",0,0,0
+gisounddb[253][0] ftgen 0,0,0,1,"sounds/Water/Droplets/521.mp3",0,0,0
+gisounddb[254][0] ftgen 0,0,0,1,"sounds/Water/Droplets/426.mp3",0,0,0
+gisounddb[255][0] ftgen 0,0,0,1,"sounds/Water/Droplets/484.mp3",0,0,0
+gisounddb[256][0] ftgen 0,0,0,1,"sounds/Water/Droplets/322.mp3",0,0,0
+gisounddb[257][0] ftgen 0,0,0,1,"sounds/Water/Droplets/333.mp3",0,0,0
+gisounddb[258][0] ftgen 0,0,0,1,"sounds/Water/Droplets/388.mp3",0,0,0
+gisounddb[259][0] ftgen 0,0,0,1,"sounds/Water/Droplets/335.mp3",0,0,0
+gisounddb[260][0] ftgen 0,0,0,1,"sounds/Water/Droplets/247.mp3",0,0,0
+gisounddb[261][0] ftgen 0,0,0,1,"sounds/Water/Droplets/565.mp3",0,0,0
+gisounddb[262][0] ftgen 0,0,0,1,"sounds/Water/Droplets/547.mp3",0,0,0
+gisounddb[263][0] ftgen 0,0,0,1,"sounds/Water/Droplets/3.mp3",0,0,0
+gisounddb[264][0] ftgen 0,0,0,1,"sounds/Water/Droplets/419.mp3",0,0,0
+gisounddb[265][0] ftgen 0,0,0,1,"sounds/Water/Droplets/159.mp3",0,0,0
+gisounddb[266][0] ftgen 0,0,0,1,"sounds/Water/Droplets/53.mp3",0,0,0
+gisounddb[267][0] ftgen 0,0,0,1,"sounds/Water/Droplets/253.mp3",0,0,0
+gisounddb[268][0] ftgen 0,0,0,1,"sounds/Water/Droplets/535.mp3",0,0,0
+gisounddb[269][0] ftgen 0,0,0,1,"sounds/Water/Droplets/443.mp3",0,0,0
+gisounddb[270][0] ftgen 0,0,0,1,"sounds/Water/Droplets/286.mp3",0,0,0
+gisounddb[271][0] ftgen 0,0,0,1,"sounds/Water/Droplets/291.mp3",0,0,0
+gisounddb[272][0] ftgen 0,0,0,1,"sounds/Water/Droplets/518.mp3",0,0,0
+gisounddb[273][0] ftgen 0,0,0,1,"sounds/Water/Droplets/516.mp3",0,0,0
+gisounddb[274][0] ftgen 0,0,0,1,"sounds/Water/Droplets/421.mp3",0,0,0
+gisounddb[275][0] ftgen 0,0,0,1,"sounds/Water/Droplets/4.mp3",0,0,0
+gisounddb[276][0] ftgen 0,0,0,1,"sounds/Water/Droplets/349.mp3",0,0,0
+gisounddb[277][0] ftgen 0,0,0,1,"sounds/Water/Droplets/493.mp3",0,0,0
+gisounddb[278][0] ftgen 0,0,0,1,"sounds/Water/Droplets/369.mp3",0,0,0
+gisounddb[279][0] ftgen 0,0,0,1,"sounds/Water/Droplets/467.mp3",0,0,0
+gisounddb[280][0] ftgen 0,0,0,1,"sounds/Water/Droplets/96.mp3",0,0,0
+gisounddb[281][0] ftgen 0,0,0,1,"sounds/Water/Droplets/389.mp3",0,0,0
+gisounddb[282][0] ftgen 0,0,0,1,"sounds/Water/Droplets/571.mp3",0,0,0
+gisounddb[283][0] ftgen 0,0,0,1,"sounds/Water/Droplets/76.mp3",0,0,0
+gisounddb[284][0] ftgen 0,0,0,1,"sounds/Water/Droplets/433.mp3",0,0,0
+gisounddb[285][0] ftgen 0,0,0,1,"sounds/Water/Droplets/165.mp3",0,0,0
+gisounddb[286][0] ftgen 0,0,0,1,"sounds/Water/Droplets/391.mp3",0,0,0
+gisounddb[287][0] ftgen 0,0,0,1,"sounds/Water/Droplets/415.mp3",0,0,0
+gisounddb[288][0] ftgen 0,0,0,1,"sounds/Water/Droplets/69.mp3",0,0,0
+gisounddb[289][0] ftgen 0,0,0,1,"sounds/Water/Droplets/216.mp3",0,0,0
+gisounddb[290][0] ftgen 0,0,0,1,"sounds/Water/Droplets/54.mp3",0,0,0
+gisounddb[291][0] ftgen 0,0,0,1,"sounds/Water/Droplets/150.mp3",0,0,0
+gisounddb[292][0] ftgen 0,0,0,1,"sounds/Water/Droplets/254.mp3",0,0,0
+gisounddb[293][0] ftgen 0,0,0,1,"sounds/Water/Droplets/354.mp3",0,0,0
+gisounddb[294][0] ftgen 0,0,0,1,"sounds/Water/Droplets/122.mp3",0,0,0
+gisounddb[295][0] ftgen 0,0,0,1,"sounds/Water/Droplets/266.mp3",0,0,0
+gisounddb[296][0] ftgen 0,0,0,1,"sounds/Water/Droplets/11.mp3",0,0,0
+gisounddb[297][0] ftgen 0,0,0,1,"sounds/Water/Droplets/166.mp3",0,0,0
+gisounddb[298][0] ftgen 0,0,0,1,"sounds/Water/Droplets/142.mp3",0,0,0
+gisounddb[299][0] ftgen 0,0,0,1,"sounds/Water/Droplets/351.mp3",0,0,0
+gisounddb[300][0] ftgen 0,0,0,1,"sounds/Water/Droplets/151.mp3",0,0,0
+gisounddb[301][0] ftgen 0,0,0,1,"sounds/Water/Droplets/355.mp3",0,0,0
+gisounddb[302][0] ftgen 0,0,0,1,"sounds/Water/Droplets/79.mp3",0,0,0
+gisounddb[303][0] ftgen 0,0,0,1,"sounds/Water/Droplets/193.mp3",0,0,0
+gisounddb[304][0] ftgen 0,0,0,1,"sounds/Water/Droplets/385.mp3",0,0,0
+gisounddb[305][0] ftgen 0,0,0,1,"sounds/Water/Droplets/78.mp3",0,0,0
+gisounddb[306][0] ftgen 0,0,0,1,"sounds/Water/Droplets/200.mp3",0,0,0
+gisounddb[307][0] ftgen 0,0,0,1,"sounds/Water/Droplets/401.mp3",0,0,0
+gisounddb[308][0] ftgen 0,0,0,1,"sounds/Water/Droplets/487.mp3",0,0,0
+gisounddb[309][0] ftgen 0,0,0,1,"sounds/Water/Droplets/250.mp3",0,0,0
+gisounddb[310][0] ftgen 0,0,0,1,"sounds/Water/Droplets/196.mp3",0,0,0
+gisounddb[311][0] ftgen 0,0,0,1,"sounds/Water/Droplets/237.mp3",0,0,0
+gisounddb[312][0] ftgen 0,0,0,1,"sounds/Water/Droplets/568.mp3",0,0,0
+gisounddb[313][0] ftgen 0,0,0,1,"sounds/Water/Droplets/352.mp3",0,0,0
+gisounddb[314][0] ftgen 0,0,0,1,"sounds/Water/Droplets/452.mp3",0,0,0
+gisounddb[315][0] ftgen 0,0,0,1,"sounds/Water/Droplets/434.mp3",0,0,0
+gisounddb[316][0] ftgen 0,0,0,1,"sounds/Water/Droplets/25.mp3",0,0,0
+gisounddb[317][0] ftgen 0,0,0,1,"sounds/Water/Droplets/382.mp3",0,0,0
+gisounddb[318][0] ftgen 0,0,0,1,"sounds/Water/Droplets/425.mp3",0,0,0
+gisounddb[319][0] ftgen 0,0,0,1,"sounds/Water/Droplets/146.mp3",0,0,0
+gisounddb[320][0] ftgen 0,0,0,1,"sounds/Water/Droplets/181.mp3",0,0,0
+gisounddb[321][0] ftgen 0,0,0,1,"sounds/Water/Droplets/383.mp3",0,0,0
+gisounddb[322][0] ftgen 0,0,0,1,"sounds/Water/Droplets/66.mp3",0,0,0
+gisounddb[323][0] ftgen 0,0,0,1,"sounds/Water/Droplets/554.mp3",0,0,0
+gisounddb[324][0] ftgen 0,0,0,1,"sounds/Water/Droplets/176.mp3",0,0,0
+gisounddb[325][0] ftgen 0,0,0,1,"sounds/Water/Droplets/47.mp3",0,0,0
+gisounddb[326][0] ftgen 0,0,0,1,"sounds/Water/Droplets/48.mp3",0,0,0
+gisounddb[327][0] ftgen 0,0,0,1,"sounds/Water/Droplets/478.mp3",0,0,0
+gisounddb[328][0] ftgen 0,0,0,1,"sounds/Water/Droplets/68.mp3",0,0,0
+gisounddb[329][0] ftgen 0,0,0,1,"sounds/Water/Droplets/92.mp3",0,0,0
+gisounddb[330][0] ftgen 0,0,0,1,"sounds/Water/Droplets/402.mp3",0,0,0
+gisounddb[331][0] ftgen 0,0,0,1,"sounds/Water/Droplets/411.mp3",0,0,0
+gisounddb[332][0] ftgen 0,0,0,1,"sounds/Water/Droplets/308.mp3",0,0,0
+gisounddb[333][0] ftgen 0,0,0,1,"sounds/Water/Droplets/481.mp3",0,0,0
+gisounddb[334][0] ftgen 0,0,0,1,"sounds/Water/Droplets/119.mp3",0,0,0
+gisounddb[335][0] ftgen 0,0,0,1,"sounds/Water/Droplets/249.mp3",0,0,0
+gisounddb[336][0] ftgen 0,0,0,1,"sounds/Water/Droplets/152.mp3",0,0,0
+gisounddb[337][0] ftgen 0,0,0,1,"sounds/Water/Droplets/262.mp3",0,0,0
+gisounddb[338][0] ftgen 0,0,0,1,"sounds/Water/Droplets/278.mp3",0,0,0
+gisounddb[339][0] ftgen 0,0,0,1,"sounds/Water/Droplets/33.mp3",0,0,0
+gisounddb[340][0] ftgen 0,0,0,1,"sounds/Water/Droplets/106.mp3",0,0,0
+gisounddb[341][0] ftgen 0,0,0,1,"sounds/Water/Droplets/136.mp3",0,0,0
+gisounddb[342][0] ftgen 0,0,0,1,"sounds/Water/Droplets/41.mp3",0,0,0
+gisounddb[343][0] ftgen 0,0,0,1,"sounds/Water/Droplets/362.mp3",0,0,0
+gisounddb[344][0] ftgen 0,0,0,1,"sounds/Water/Droplets/444.mp3",0,0,0
+gisounddb[345][0] ftgen 0,0,0,1,"sounds/Water/Droplets/310.mp3",0,0,0
+gisounddb[346][0] ftgen 0,0,0,1,"sounds/Water/Droplets/35.mp3",0,0,0
+gisounddb[347][0] ftgen 0,0,0,1,"sounds/Water/Droplets/102.mp3",0,0,0
+gisounddb[348][0] ftgen 0,0,0,1,"sounds/Water/Droplets/16.mp3",0,0,0
+gisounddb[349][0] ftgen 0,0,0,1,"sounds/Water/Droplets/276.mp3",0,0,0
+gisounddb[350][0] ftgen 0,0,0,1,"sounds/Water/Droplets/10.mp3",0,0,0
+gisounddb[351][0] ftgen 0,0,0,1,"sounds/Water/Droplets/265.mp3",0,0,0
+gisounddb[352][0] ftgen 0,0,0,1,"sounds/Water/Droplets/293.mp3",0,0,0
+gisounddb[353][0] ftgen 0,0,0,1,"sounds/Water/Droplets/108.mp3",0,0,0
+gisounddb[354][0] ftgen 0,0,0,1,"sounds/Water/Droplets/418.mp3",0,0,0
+gisounddb[355][0] ftgen 0,0,0,1,"sounds/Water/Droplets/384.mp3",0,0,0
+gisounddb[356][0] ftgen 0,0,0,1,"sounds/Water/Droplets/398.mp3",0,0,0
+gisounddb[357][0] ftgen 0,0,0,1,"sounds/Water/Droplets/364.mp3",0,0,0
+gisounddb[358][0] ftgen 0,0,0,1,"sounds/Water/Droplets/80.mp3",0,0,0
+gisounddb[359][0] ftgen 0,0,0,1,"sounds/Water/Droplets/341.mp3",0,0,0
+gisounddb[360][0] ftgen 0,0,0,1,"sounds/Water/Droplets/117.mp3",0,0,0
+gisounddb[361][0] ftgen 0,0,0,1,"sounds/Water/Droplets/179.mp3",0,0,0
+gisounddb[362][0] ftgen 0,0,0,1,"sounds/Water/Droplets/221.mp3",0,0,0
+gisounddb[363][0] ftgen 0,0,0,1,"sounds/Water/Droplets/89.mp3",0,0,0
+gisounddb[364][0] ftgen 0,0,0,1,"sounds/Water/Droplets/257.mp3",0,0,0
+gisounddb[365][0] ftgen 0,0,0,1,"sounds/Water/Droplets/51.mp3",0,0,0
+gisounddb[366][0] ftgen 0,0,0,1,"sounds/Water/Droplets/65.mp3",0,0,0
+gisounddb[367][0] ftgen 0,0,0,1,"sounds/Water/Droplets/177.mp3",0,0,0
+gisounddb[368][0] ftgen 0,0,0,1,"sounds/Water/Droplets/357.mp3",0,0,0
+gisounddb[369][0] ftgen 0,0,0,1,"sounds/Water/Droplets/29.mp3",0,0,0
+gisounddb[370][0] ftgen 0,0,0,1,"sounds/Water/Droplets/557.mp3",0,0,0
+gisounddb[371][0] ftgen 0,0,0,1,"sounds/Water/Droplets/372.mp3",0,0,0
+gisounddb[372][0] ftgen 0,0,0,1,"sounds/Water/Droplets/246.mp3",0,0,0
+gisounddb[373][0] ftgen 0,0,0,1,"sounds/Water/Droplets/405.mp3",0,0,0
+gisounddb[374][0] ftgen 0,0,0,1,"sounds/Water/Droplets/336.mp3",0,0,0
+gisounddb[375][0] ftgen 0,0,0,1,"sounds/Water/Droplets/573.mp3",0,0,0
+gisounddb[376][0] ftgen 0,0,0,1,"sounds/Water/Droplets/2.mp3",0,0,0
+gisounddb[377][0] ftgen 0,0,0,1,"sounds/Water/Droplets/158.mp3",0,0,0
+gisounddb[378][0] ftgen 0,0,0,1,"sounds/Water/Droplets/312.mp3",0,0,0
+gisounddb[379][0] ftgen 0,0,0,1,"sounds/Water/Droplets/167.mp3",0,0,0
+gisounddb[380][0] ftgen 0,0,0,1,"sounds/Water/Droplets/508.mp3",0,0,0
+gisounddb[381][0] ftgen 0,0,0,1,"sounds/Water/Droplets/133.mp3",0,0,0
+gisounddb[382][0] ftgen 0,0,0,1,"sounds/Water/Droplets/252.mp3",0,0,0
+gisounddb[383][0] ftgen 0,0,0,1,"sounds/Water/Droplets/211.mp3",0,0,0
+gisounddb[384][0] ftgen 0,0,0,1,"sounds/Water/Droplets/294.mp3",0,0,0
+gisounddb[385][0] ftgen 0,0,0,1,"sounds/Water/Droplets/360.mp3",0,0,0
+gisounddb[386][0] ftgen 0,0,0,1,"sounds/Water/Droplets/116.mp3",0,0,0
+gisounddb[387][0] ftgen 0,0,0,1,"sounds/Water/Droplets/338.mp3",0,0,0
+gisounddb[388][0] ftgen 0,0,0,1,"sounds/Water/Droplets/232.mp3",0,0,0
+gisounddb[389][0] ftgen 0,0,0,1,"sounds/Water/Droplets/43.mp3",0,0,0
+gisounddb[390][0] ftgen 0,0,0,1,"sounds/Water/Droplets/567.mp3",0,0,0
+gisounddb[391][0] ftgen 0,0,0,1,"sounds/Water/Droplets/446.mp3",0,0,0
+gisounddb[392][0] ftgen 0,0,0,1,"sounds/Water/Droplets/86.mp3",0,0,0
+gisounddb[393][0] ftgen 0,0,0,1,"sounds/Water/Droplets/414.mp3",0,0,0
+gisounddb[394][0] ftgen 0,0,0,1,"sounds/Water/Droplets/307.mp3",0,0,0
+gisounddb[395][0] ftgen 0,0,0,1,"sounds/Water/Droplets/334.mp3",0,0,0
+gisounddb[396][0] ftgen 0,0,0,1,"sounds/Water/Droplets/350.mp3",0,0,0
+gisounddb[397][0] ftgen 0,0,0,1,"sounds/Water/Droplets/297.mp3",0,0,0
+gisounddb[398][0] ftgen 0,0,0,1,"sounds/Water/Droplets/155.mp3",0,0,0
+gisounddb[399][0] ftgen 0,0,0,1,"sounds/Water/Droplets/15.mp3",0,0,0
+gisounddb[400][0] ftgen 0,0,0,1,"sounds/Water/Droplets/575.mp3",0,0,0
+gisounddb[401][0] ftgen 0,0,0,1,"sounds/Water/Droplets/83.mp3",0,0,0
+gisounddb[402][0] ftgen 0,0,0,1,"sounds/Water/Droplets/140.mp3",0,0,0
+gisounddb[403][0] ftgen 0,0,0,1,"sounds/Water/Droplets/428.mp3",0,0,0
+gisounddb[404][0] ftgen 0,0,0,1,"sounds/Water/Droplets/172.mp3",0,0,0
+gisounddb[405][0] ftgen 0,0,0,1,"sounds/Water/Droplets/436.mp3",0,0,0
+gisounddb[406][0] ftgen 0,0,0,1,"sounds/Water/Droplets/577.mp3",0,0,0
+gisounddb[407][0] ftgen 0,0,0,1,"sounds/Water/Droplets/222.mp3",0,0,0
+gisounddb[408][0] ftgen 0,0,0,1,"sounds/Water/Droplets/212.mp3",0,0,0
+gisounddb[409][0] ftgen 0,0,0,1,"sounds/Water/Droplets/219.mp3",0,0,0
+gisounddb[410][0] ftgen 0,0,0,1,"sounds/Water/Droplets/379.mp3",0,0,0
+gisounddb[411][0] ftgen 0,0,0,1,"sounds/Water/Droplets/578.mp3",0,0,0
+gisounddb[412][0] ftgen 0,0,0,1,"sounds/Water/Droplets/275.mp3",0,0,0
+gisounddb[413][0] ftgen 0,0,0,1,"sounds/Water/Droplets/273.mp3",0,0,0
+gisounddb[414][0] ftgen 0,0,0,1,"sounds/Water/Droplets/570.mp3",0,0,0
+gisounddb[415][0] ftgen 0,0,0,1,"sounds/Water/Droplets/347.mp3",0,0,0
+gisounddb[416][0] ftgen 0,0,0,1,"sounds/Water/Droplets/395.mp3",0,0,0
+gisounddb[417][0] ftgen 0,0,0,1,"sounds/Water/Droplets/87.mp3",0,0,0
+gisounddb[418][0] ftgen 0,0,0,1,"sounds/Water/Droplets/13.mp3",0,0,0
+gisounddb[419][0] ftgen 0,0,0,1,"sounds/Water/Droplets/207.mp3",0,0,0
+gisounddb[420][0] ftgen 0,0,0,1,"sounds/Water/Droplets/206.mp3",0,0,0
+gisounddb[421][0] ftgen 0,0,0,1,"sounds/Water/Droplets/306.mp3",0,0,0
+gisounddb[422][0] ftgen 0,0,0,1,"sounds/Water/Droplets/522.mp3",0,0,0
+gisounddb[423][0] ftgen 0,0,0,1,"sounds/Water/Droplets/313.mp3",0,0,0
+gisounddb[424][0] ftgen 0,0,0,1,"sounds/Water/Droplets/19.mp3",0,0,0
+gisounddb[425][0] ftgen 0,0,0,1,"sounds/Water/Droplets/445.mp3",0,0,0
+gisounddb[426][0] ftgen 0,0,0,1,"sounds/Water/Droplets/6.mp3",0,0,0
+gisounddb[427][0] ftgen 0,0,0,1,"sounds/Water/Droplets/509.mp3",0,0,0
+gisounddb[428][0] ftgen 0,0,0,1,"sounds/Water/Droplets/227.mp3",0,0,0
+gisounddb[429][0] ftgen 0,0,0,1,"sounds/Water/Droplets/386.mp3",0,0,0
+gisounddb[430][0] ftgen 0,0,0,1,"sounds/Water/Droplets/213.mp3",0,0,0
+gisounddb[431][0] ftgen 0,0,0,1,"sounds/Water/Droplets/243.mp3",0,0,0
+gisounddb[432][0] ftgen 0,0,0,1,"sounds/Water/Droplets/82.mp3",0,0,0
+gisounddb[433][0] ftgen 0,0,0,1,"sounds/Water/Droplets/524.mp3",0,0,0
+gisounddb[434][0] ftgen 0,0,0,1,"sounds/Water/Droplets/209.mp3",0,0,0
+gisounddb[435][0] ftgen 0,0,0,1,"sounds/Water/Droplets/317.mp3",0,0,0
+gisounddb[436][0] ftgen 0,0,0,1,"sounds/Water/Droplets/489.mp3",0,0,0
+gisounddb[437][0] ftgen 0,0,0,1,"sounds/Water/Droplets/371.mp3",0,0,0
+gisounddb[438][0] ftgen 0,0,0,1,"sounds/Water/Droplets/523.mp3",0,0,0
+gisounddb[439][0] ftgen 0,0,0,1,"sounds/Water/Droplets/118.mp3",0,0,0
+gisounddb[440][0] ftgen 0,0,0,1,"sounds/Water/Droplets/455.mp3",0,0,0
+gisounddb[441][0] ftgen 0,0,0,1,"sounds/Water/Droplets/229.mp3",0,0,0
+gisounddb[442][0] ftgen 0,0,0,1,"sounds/Water/Droplets/459.mp3",0,0,0
+gisounddb[443][0] ftgen 0,0,0,1,"sounds/Water/Droplets/123.mp3",0,0,0
+gisounddb[444][0] ftgen 0,0,0,1,"sounds/Water/Droplets/387.mp3",0,0,0
+gisounddb[445][0] ftgen 0,0,0,1,"sounds/Water/Droplets/120.mp3",0,0,0
+gisounddb[446][0] ftgen 0,0,0,1,"sounds/Water/Droplets/14.mp3",0,0,0
+gisounddb[447][0] ftgen 0,0,0,1,"sounds/Water/Droplets/255.mp3",0,0,0
+gisounddb[448][0] ftgen 0,0,0,1,"sounds/Water/Droplets/101.mp3",0,0,0
+gisounddb[449][0] ftgen 0,0,0,1,"sounds/Water/Droplets/477.mp3",0,0,0
+gisounddb[450][0] ftgen 0,0,0,1,"sounds/Water/Droplets/412.mp3",0,0,0
+gisounddb[451][0] ftgen 0,0,0,1,"sounds/Water/Droplets/114.mp3",0,0,0
+gisounddb[452][0] ftgen 0,0,0,1,"sounds/Water/Droplets/282.mp3",0,0,0
+gisounddb[453][0] ftgen 0,0,0,1,"sounds/Water/Droplets/346.mp3",0,0,0
+gisounddb[454][0] ftgen 0,0,0,1,"sounds/Water/Droplets/188.mp3",0,0,0
+gisounddb[455][0] ftgen 0,0,0,1,"sounds/Water/Droplets/112.mp3",0,0,0
+gisounddb[456][0] ftgen 0,0,0,1,"sounds/Water/Droplets/283.mp3",0,0,0
+gisounddb[457][0] ftgen 0,0,0,1,"sounds/Water/Droplets/236.mp3",0,0,0
+gisounddb[458][0] ftgen 0,0,0,1,"sounds/Water/Droplets/22.mp3",0,0,0
+gisounddb[459][0] ftgen 0,0,0,1,"sounds/Water/Droplets/52.mp3",0,0,0
+gisounddb[460][0] ftgen 0,0,0,1,"sounds/Water/Droplets/91.mp3",0,0,0
+gisounddb[461][0] ftgen 0,0,0,1,"sounds/Water/Droplets/234.mp3",0,0,0
+gisounddb[462][0] ftgen 0,0,0,1,"sounds/Water/Droplets/244.mp3",0,0,0
+gisounddb[463][0] ftgen 0,0,0,1,"sounds/Water/Droplets/339.mp3",0,0,0
+gisounddb[464][0] ftgen 0,0,0,1,"sounds/Water/Droplets/439.mp3",0,0,0
+gisounddb[465][0] ftgen 0,0,0,1,"sounds/Water/Droplets/541.mp3",0,0,0
+gisounddb[466][0] ftgen 0,0,0,1,"sounds/Water/Droplets/284.mp3",0,0,0
+gisounddb[467][0] ftgen 0,0,0,1,"sounds/Water/Droplets/214.mp3",0,0,0
+gisounddb[468][0] ftgen 0,0,0,1,"sounds/Water/Droplets/241.mp3",0,0,0
+gisounddb[469][0] ftgen 0,0,0,1,"sounds/Water/Droplets/356.mp3",0,0,0
+gisounddb[470][0] ftgen 0,0,0,1,"sounds/Water/Droplets/168.mp3",0,0,0
+gisounddb[471][0] ftgen 0,0,0,1,"sounds/Water/Droplets/56.mp3",0,0,0
+gisounddb[472][0] ftgen 0,0,0,1,"sounds/Water/Droplets/220.mp3",0,0,0
+gisounddb[473][0] ftgen 0,0,0,1,"sounds/Water/Droplets/94.mp3",0,0,0
+gisounddb[474][0] ftgen 0,0,0,1,"sounds/Water/Droplets/374.mp3",0,0,0
+gisounddb[475][0] ftgen 0,0,0,1,"sounds/Water/Droplets/409.mp3",0,0,0
+gisounddb[476][0] ftgen 0,0,0,1,"sounds/Water/Droplets/183.mp3",0,0,0
+gisounddb[477][0] ftgen 0,0,0,1,"sounds/Water/Droplets/558.mp3",0,0,0
+gisounddb[478][0] ftgen 0,0,0,1,"sounds/Water/Droplets/471.mp3",0,0,0
+gisounddb[479][0] ftgen 0,0,0,1,"sounds/Water/Droplets/424.mp3",0,0,0
+gisounddb[480][0] ftgen 0,0,0,1,"sounds/Water/Droplets/191.mp3",0,0,0
+gisounddb[481][0] ftgen 0,0,0,1,"sounds/Water/Droplets/238.mp3",0,0,0
+gisounddb[482][0] ftgen 0,0,0,1,"sounds/Water/Droplets/496.mp3",0,0,0
+gisounddb[483][0] ftgen 0,0,0,1,"sounds/Water/Droplets/562.mp3",0,0,0
+gisounddb[484][0] ftgen 0,0,0,1,"sounds/Water/Droplets/248.mp3",0,0,0
+gisounddb[485][0] ftgen 0,0,0,1,"sounds/Water/Droplets/377.mp3",0,0,0
+gisounddb[486][0] ftgen 0,0,0,1,"sounds/Water/Droplets/438.mp3",0,0,0
+gisounddb[487][0] ftgen 0,0,0,1,"sounds/Water/Droplets/302.mp3",0,0,0
+gisounddb[488][0] ftgen 0,0,0,1,"sounds/Water/Droplets/231.mp3",0,0,0
+gisounddb[489][0] ftgen 0,0,0,1,"sounds/Water/Droplets/353.mp3",0,0,0
+gisounddb[490][0] ftgen 0,0,0,1,"sounds/Water/Droplets/542.mp3",0,0,0
+gisounddb[491][0] ftgen 0,0,0,1,"sounds/Water/Droplets/50.mp3",0,0,0
+gisounddb[492][0] ftgen 0,0,0,1,"sounds/Water/Droplets/501.mp3",0,0,0
+gisounddb[493][0] ftgen 0,0,0,1,"sounds/Water/Droplets/540.mp3",0,0,0
+gisounddb[494][0] ftgen 0,0,0,1,"sounds/Water/Droplets/267.mp3",0,0,0
+gisounddb[495][0] ftgen 0,0,0,1,"sounds/Water/Droplets/218.mp3",0,0,0
+gisounddb[496][0] ftgen 0,0,0,1,"sounds/Water/Droplets/296.mp3",0,0,0
+gisounddb[497][0] ftgen 0,0,0,1,"sounds/Water/Droplets/285.mp3",0,0,0
+gisounddb[498][0] ftgen 0,0,0,1,"sounds/Water/Droplets/64.mp3",0,0,0
+gisounddb[499][0] ftgen 0,0,0,1,"sounds/Water/Droplets/195.mp3",0,0,0
+gisounddb[500][0] ftgen 0,0,0,1,"sounds/Water/Droplets/270.mp3",0,0,0
+gisounddb[501][0] ftgen 0,0,0,1,"sounds/Water/Droplets/319.mp3",0,0,0
+gisounddb[502][0] ftgen 0,0,0,1,"sounds/Water/Droplets/500.mp3",0,0,0
+gisounddb[503][0] ftgen 0,0,0,1,"sounds/Water/Droplets/514.mp3",0,0,0
+gisounddb[504][0] ftgen 0,0,0,1,"sounds/Water/Droplets/457.mp3",0,0,0
+gisounddb[505][0] ftgen 0,0,0,1,"sounds/Water/Droplets/198.mp3",0,0,0
+gisounddb[506][0] ftgen 0,0,0,1,"sounds/Water/Droplets/564.mp3",0,0,0
+gisounddb[507][0] ftgen 0,0,0,1,"sounds/Water/Droplets/154.mp3",0,0,0
+gisounddb[508][0] ftgen 0,0,0,1,"sounds/Water/Droplets/31.mp3",0,0,0
+gisounddb[509][0] ftgen 0,0,0,1,"sounds/Water/Droplets/394.mp3",0,0,0
+gisounddb[510][0] ftgen 0,0,0,1,"sounds/Water/Droplets/485.mp3",0,0,0
+gisounddb[511][0] ftgen 0,0,0,1,"sounds/Water/Droplets/126.mp3",0,0,0
+gisounddb[512][0] ftgen 0,0,0,1,"sounds/Water/Droplets/261.mp3",0,0,0
+gisounddb[513][0] ftgen 0,0,0,1,"sounds/Water/Droplets/107.mp3",0,0,0
+gisounddb[514][0] ftgen 0,0,0,1,"sounds/Water/Droplets/115.mp3",0,0,0
+gisounddb[515][0] ftgen 0,0,0,1,"sounds/Water/Droplets/469.mp3",0,0,0
+gisounddb[516][0] ftgen 0,0,0,1,"sounds/Water/Droplets/240.mp3",0,0,0
+gisounddb[517][0] ftgen 0,0,0,1,"sounds/Water/Droplets/549.mp3",0,0,0
+gisounddb[518][0] ftgen 0,0,0,1,"sounds/Water/Droplets/186.mp3",0,0,0
+gisounddb[519][0] ftgen 0,0,0,1,"sounds/Water/Droplets/137.mp3",0,0,0
+gisounddb[520][0] ftgen 0,0,0,1,"sounds/Water/Droplets/161.mp3",0,0,0
+gisounddb[521][0] ftgen 0,0,0,1,"sounds/Water/Droplets/400.mp3",0,0,0
+gisounddb[522][0] ftgen 0,0,0,1,"sounds/Water/Droplets/279.mp3",0,0,0
+gisounddb[523][0] ftgen 0,0,0,1,"sounds/Water/Droplets/184.mp3",0,0,0
+gisounddb[524][0] ftgen 0,0,0,1,"sounds/Water/Droplets/215.mp3",0,0,0
+gisounddb[525][0] ftgen 0,0,0,1,"sounds/Water/Droplets/330.mp3",0,0,0
+gisounddb[526][0] ftgen 0,0,0,1,"sounds/Water/Droplets/529.mp3",0,0,0
+gisounddb[527][0] ftgen 0,0,0,1,"sounds/Water/Droplets/84.mp3",0,0,0
+gisounddb[528][0] ftgen 0,0,0,1,"sounds/Water/Droplets/376.mp3",0,0,0
+gisounddb[529][0] ftgen 0,0,0,1,"sounds/Water/Droplets/111.mp3",0,0,0
+gisounddb[530][0] ftgen 0,0,0,1,"sounds/Water/Droplets/97.mp3",0,0,0
+gisounddb[531][0] ftgen 0,0,0,1,"sounds/Water/Droplets/197.mp3",0,0,0
+gisounddb[532][0] ftgen 0,0,0,1,"sounds/Water/Droplets/73.mp3",0,0,0
+gisounddb[533][0] ftgen 0,0,0,1,"sounds/Water/Droplets/125.mp3",0,0,0
+gisounddb[534][0] ftgen 0,0,0,1,"sounds/Water/Droplets/422.mp3",0,0,0
+gisounddb[535][0] ftgen 0,0,0,1,"sounds/Water/Droplets/104.mp3",0,0,0
+gisounddb[536][0] ftgen 0,0,0,1,"sounds/Water/Droplets/156.mp3",0,0,0
+gisounddb[537][0] ftgen 0,0,0,1,"sounds/Water/Droplets/208.mp3",0,0,0
+gisounddb[538][0] ftgen 0,0,0,1,"sounds/Water/Droplets/464.mp3",0,0,0
+gisounddb[539][0] ftgen 0,0,0,1,"sounds/Water/Droplets/187.mp3",0,0,0
+gisounddb[540][0] ftgen 0,0,0,1,"sounds/Water/Droplets/110.mp3",0,0,0
+gisounddb[541][0] ftgen 0,0,0,1,"sounds/Water/Droplets/148.mp3",0,0,0
+gisounddb[542][0] ftgen 0,0,0,1,"sounds/Water/Droplets/20.mp3",0,0,0
+gisounddb[543][0] ftgen 0,0,0,1,"sounds/Water/Droplets/340.mp3",0,0,0
+gisounddb[544][0] ftgen 0,0,0,1,"sounds/Water/Droplets/277.mp3",0,0,0
+gisounddb[545][0] ftgen 0,0,0,1,"sounds/Water/Droplets/370.mp3",0,0,0
+gisounddb[546][0] ftgen 0,0,0,1,"sounds/Water/Droplets/269.mp3",0,0,0
+gisounddb[547][0] ftgen 0,0,0,1,"sounds/Water/Droplets/555.mp3",0,0,0
+gisounddb[548][0] ftgen 0,0,0,1,"sounds/Water/Droplets/495.mp3",0,0,0
+gisounddb[549][0] ftgen 0,0,0,1,"sounds/Water/Droplets/228.mp3",0,0,0
+gisounddb[550][0] ftgen 0,0,0,1,"sounds/Water/Droplets/574.mp3",0,0,0
+gisounddb[551][0] ftgen 0,0,0,1,"sounds/Water/Droplets/526.mp3",0,0,0
+gisounddb[552][0] ftgen 0,0,0,1,"sounds/Water/Droplets/143.mp3",0,0,0
+gisounddb[553][0] ftgen 0,0,0,1,"sounds/Water/Droplets/537.mp3",0,0,0
+gisounddb[554][0] ftgen 0,0,0,1,"sounds/Water/Droplets/304.mp3",0,0,0
+gisounddb[555][0] ftgen 0,0,0,1,"sounds/Water/Droplets/242.mp3",0,0,0
+gisounddb[556][0] ftgen 0,0,0,1,"sounds/Water/Droplets/324.mp3",0,0,0
+gisounddb[557][0] ftgen 0,0,0,1,"sounds/Water/Droplets/442.mp3",0,0,0
+gisounddb[558][0] ftgen 0,0,0,1,"sounds/Water/Droplets/528.mp3",0,0,0
+gisounddb[559][0] ftgen 0,0,0,1,"sounds/Water/Droplets/545.mp3",0,0,0
+gisounddb[560][0] ftgen 0,0,0,1,"sounds/Water/Droplets/513.mp3",0,0,0
+gisounddb[561][0] ftgen 0,0,0,1,"sounds/Water/Droplets/447.mp3",0,0,0
+gisounddb[562][0] ftgen 0,0,0,1,"sounds/Water/Droplets/7.mp3",0,0,0
+gisounddb[563][0] ftgen 0,0,0,1,"sounds/Water/Droplets/551.mp3",0,0,0
+gisounddb[564][0] ftgen 0,0,0,1,"sounds/Water/Droplets/63.mp3",0,0,0
+gisounddb[565][0] ftgen 0,0,0,1,"sounds/Water/Droplets/506.mp3",0,0,0
+gisounddb[566][0] ftgen 0,0,0,1,"sounds/Water/Droplets/127.mp3",0,0,0
+gisounddb[567][0] ftgen 0,0,0,1,"sounds/Water/Droplets/37.mp3",0,0,0
+gisounddb[568][0] ftgen 0,0,0,1,"sounds/Water/Droplets/327.mp3",0,0,0
+gisounddb[569][0] ftgen 0,0,0,1,"sounds/Water/Droplets/9.mp3",0,0,0
+gisounddb[570][0] ftgen 0,0,0,1,"sounds/Water/Droplets/24.mp3",0,0,0
+gisounddb[571][0] ftgen 0,0,0,1,"sounds/Water/Droplets/173.mp3",0,0,0
+gisounddb[572][0] ftgen 0,0,0,1,"sounds/Water/Droplets/204.mp3",0,0,0
+gisounddb[573][0] ftgen 0,0,0,1,"sounds/Water/Droplets/263.mp3",0,0,0
+gisounddb[574][0] ftgen 0,0,0,1,"sounds/Water/Droplets/194.mp3",0,0,0
+gisounddb[575][0] ftgen 0,0,0,1,"sounds/Water/Droplets/17.mp3",0,0,0
+gisounddb[576][0] ftgen 0,0,0,1,"sounds/Water/Droplets/303.mp3",0,0,0
+gisounddb[577][0] ftgen 0,0,0,1,"sounds/Water/Droplets/420.mp3",0,0,0
+gisounddb[578][0] ftgen 0,0,0,1,"sounds/Water/Paddling/45.mp3",0,0,0
+gisounddb[579][0] ftgen 0,0,0,1,"sounds/Water/Paddling/60.mp3",0,0,0
+gisounddb[580][0] ftgen 0,0,0,1,"sounds/Water/Paddling/59.mp3",0,0,0
+gisounddb[581][0] ftgen 0,0,0,1,"sounds/Water/Paddling/81.mp3",0,0,0
+gisounddb[582][0] ftgen 0,0,0,1,"sounds/Water/Paddling/38.mp3",0,0,0
+gisounddb[583][0] ftgen 0,0,0,1,"sounds/Water/Paddling/5.mp3",0,0,0
+gisounddb[584][0] ftgen 0,0,0,1,"sounds/Water/Paddling/85.mp3",0,0,0
+gisounddb[585][0] ftgen 0,0,0,1,"sounds/Water/Paddling/75.mp3",0,0,0
+gisounddb[586][0] ftgen 0,0,0,1,"sounds/Water/Paddling/88.mp3",0,0,0
+gisounddb[587][0] ftgen 0,0,0,1,"sounds/Water/Paddling/77.mp3",0,0,0
+gisounddb[588][0] ftgen 0,0,0,1,"sounds/Water/Paddling/70.mp3",0,0,0
+gisounddb[589][0] ftgen 0,0,0,1,"sounds/Water/Paddling/39.mp3",0,0,0
+gisounddb[590][0] ftgen 0,0,0,1,"sounds/Water/Paddling/62.mp3",0,0,0
+gisounddb[591][0] ftgen 0,0,0,1,"sounds/Water/Paddling/21.mp3",0,0,0
+gisounddb[592][0] ftgen 0,0,0,1,"sounds/Water/Paddling/40.mp3",0,0,0
+gisounddb[593][0] ftgen 0,0,0,1,"sounds/Water/Paddling/42.mp3",0,0,0
+gisounddb[594][0] ftgen 0,0,0,1,"sounds/Water/Paddling/98.mp3",0,0,0
+gisounddb[595][0] ftgen 0,0,0,1,"sounds/Water/Paddling/95.mp3",0,0,0
+gisounddb[596][0] ftgen 0,0,0,1,"sounds/Water/Paddling/74.mp3",0,0,0
+gisounddb[597][0] ftgen 0,0,0,1,"sounds/Water/Paddling/30.mp3",0,0,0
+gisounddb[598][0] ftgen 0,0,0,1,"sounds/Water/Paddling/100.mp3",0,0,0
+gisounddb[599][0] ftgen 0,0,0,1,"sounds/Water/Paddling/12.mp3",0,0,0
+gisounddb[600][0] ftgen 0,0,0,1,"sounds/Water/Paddling/44.mp3",0,0,0
+gisounddb[601][0] ftgen 0,0,0,1,"sounds/Water/Paddling/8.mp3",0,0,0
+gisounddb[602][0] ftgen 0,0,0,1,"sounds/Water/Paddling/46.mp3",0,0,0
+gisounddb[603][0] ftgen 0,0,0,1,"sounds/Water/Paddling/34.mp3",0,0,0
+gisounddb[604][0] ftgen 0,0,0,1,"sounds/Water/Paddling/93.mp3",0,0,0
+gisounddb[605][0] ftgen 0,0,0,1,"sounds/Water/Paddling/61.mp3",0,0,0
+gisounddb[606][0] ftgen 0,0,0,1,"sounds/Water/Paddling/67.mp3",0,0,0
+gisounddb[607][0] ftgen 0,0,0,1,"sounds/Water/Paddling/49.mp3",0,0,0
+gisounddb[608][0] ftgen 0,0,0,1,"sounds/Water/Paddling/55.mp3",0,0,0
+gisounddb[609][0] ftgen 0,0,0,1,"sounds/Water/Paddling/28.mp3",0,0,0
+gisounddb[610][0] ftgen 0,0,0,1,"sounds/Water/Paddling/23.mp3",0,0,0
+gisounddb[611][0] ftgen 0,0,0,1,"sounds/Water/Paddling/72.mp3",0,0,0
+gisounddb[612][0] ftgen 0,0,0,1,"sounds/Water/Paddling/1.mp3",0,0,0
+gisounddb[613][0] ftgen 0,0,0,1,"sounds/Water/Paddling/27.mp3",0,0,0
+gisounddb[614][0] ftgen 0,0,0,1,"sounds/Water/Paddling/58.mp3",0,0,0
+gisounddb[615][0] ftgen 0,0,0,1,"sounds/Water/Paddling/26.mp3",0,0,0
+gisounddb[616][0] ftgen 0,0,0,1,"sounds/Water/Paddling/36.mp3",0,0,0
+gisounddb[617][0] ftgen 0,0,0,1,"sounds/Water/Paddling/18.mp3",0,0,0
+gisounddb[618][0] ftgen 0,0,0,1,"sounds/Water/Paddling/90.mp3",0,0,0
+gisounddb[619][0] ftgen 0,0,0,1,"sounds/Water/Paddling/32.mp3",0,0,0
+gisounddb[620][0] ftgen 0,0,0,1,"sounds/Water/Paddling/99.mp3",0,0,0
+gisounddb[621][0] ftgen 0,0,0,1,"sounds/Water/Paddling/71.mp3",0,0,0
+gisounddb[622][0] ftgen 0,0,0,1,"sounds/Water/Paddling/57.mp3",0,0,0
+gisounddb[623][0] ftgen 0,0,0,1,"sounds/Water/Paddling/3.mp3",0,0,0
+gisounddb[624][0] ftgen 0,0,0,1,"sounds/Water/Paddling/53.mp3",0,0,0
+gisounddb[625][0] ftgen 0,0,0,1,"sounds/Water/Paddling/4.mp3",0,0,0
+gisounddb[626][0] ftgen 0,0,0,1,"sounds/Water/Paddling/96.mp3",0,0,0
+gisounddb[627][0] ftgen 0,0,0,1,"sounds/Water/Paddling/76.mp3",0,0,0
+gisounddb[628][0] ftgen 0,0,0,1,"sounds/Water/Paddling/69.mp3",0,0,0
+gisounddb[629][0] ftgen 0,0,0,1,"sounds/Water/Paddling/54.mp3",0,0,0
+gisounddb[630][0] ftgen 0,0,0,1,"sounds/Water/Paddling/11.mp3",0,0,0
+gisounddb[631][0] ftgen 0,0,0,1,"sounds/Water/Paddling/79.mp3",0,0,0
+gisounddb[632][0] ftgen 0,0,0,1,"sounds/Water/Paddling/78.mp3",0,0,0
+gisounddb[633][0] ftgen 0,0,0,1,"sounds/Water/Paddling/25.mp3",0,0,0
+gisounddb[634][0] ftgen 0,0,0,1,"sounds/Water/Paddling/66.mp3",0,0,0
+gisounddb[635][0] ftgen 0,0,0,1,"sounds/Water/Paddling/47.mp3",0,0,0
+gisounddb[636][0] ftgen 0,0,0,1,"sounds/Water/Paddling/48.mp3",0,0,0
+gisounddb[637][0] ftgen 0,0,0,1,"sounds/Water/Paddling/68.mp3",0,0,0
+gisounddb[638][0] ftgen 0,0,0,1,"sounds/Water/Paddling/92.mp3",0,0,0
+gisounddb[639][0] ftgen 0,0,0,1,"sounds/Water/Paddling/33.mp3",0,0,0
+gisounddb[640][0] ftgen 0,0,0,1,"sounds/Water/Paddling/41.mp3",0,0,0
+gisounddb[641][0] ftgen 0,0,0,1,"sounds/Water/Paddling/35.mp3",0,0,0
+gisounddb[642][0] ftgen 0,0,0,1,"sounds/Water/Paddling/16.mp3",0,0,0
+gisounddb[643][0] ftgen 0,0,0,1,"sounds/Water/Paddling/10.mp3",0,0,0
+gisounddb[644][0] ftgen 0,0,0,1,"sounds/Water/Paddling/80.mp3",0,0,0
+gisounddb[645][0] ftgen 0,0,0,1,"sounds/Water/Paddling/89.mp3",0,0,0
+gisounddb[646][0] ftgen 0,0,0,1,"sounds/Water/Paddling/51.mp3",0,0,0
+gisounddb[647][0] ftgen 0,0,0,1,"sounds/Water/Paddling/65.mp3",0,0,0
+gisounddb[648][0] ftgen 0,0,0,1,"sounds/Water/Paddling/29.mp3",0,0,0
+gisounddb[649][0] ftgen 0,0,0,1,"sounds/Water/Paddling/2.mp3",0,0,0
+gisounddb[650][0] ftgen 0,0,0,1,"sounds/Water/Paddling/43.mp3",0,0,0
+gisounddb[651][0] ftgen 0,0,0,1,"sounds/Water/Paddling/86.mp3",0,0,0
+gisounddb[652][0] ftgen 0,0,0,1,"sounds/Water/Paddling/15.mp3",0,0,0
+gisounddb[653][0] ftgen 0,0,0,1,"sounds/Water/Paddling/83.mp3",0,0,0
+gisounddb[654][0] ftgen 0,0,0,1,"sounds/Water/Paddling/87.mp3",0,0,0
+gisounddb[655][0] ftgen 0,0,0,1,"sounds/Water/Paddling/13.mp3",0,0,0
+gisounddb[656][0] ftgen 0,0,0,1,"sounds/Water/Paddling/19.mp3",0,0,0
+gisounddb[657][0] ftgen 0,0,0,1,"sounds/Water/Paddling/6.mp3",0,0,0
+gisounddb[658][0] ftgen 0,0,0,1,"sounds/Water/Paddling/82.mp3",0,0,0
+gisounddb[659][0] ftgen 0,0,0,1,"sounds/Water/Paddling/14.mp3",0,0,0
+gisounddb[660][0] ftgen 0,0,0,1,"sounds/Water/Paddling/22.mp3",0,0,0
+gisounddb[661][0] ftgen 0,0,0,1,"sounds/Water/Paddling/52.mp3",0,0,0
+gisounddb[662][0] ftgen 0,0,0,1,"sounds/Water/Paddling/91.mp3",0,0,0
+gisounddb[663][0] ftgen 0,0,0,1,"sounds/Water/Paddling/56.mp3",0,0,0
+gisounddb[664][0] ftgen 0,0,0,1,"sounds/Water/Paddling/94.mp3",0,0,0
+gisounddb[665][0] ftgen 0,0,0,1,"sounds/Water/Paddling/50.mp3",0,0,0
+gisounddb[666][0] ftgen 0,0,0,1,"sounds/Water/Paddling/64.mp3",0,0,0
+gisounddb[667][0] ftgen 0,0,0,1,"sounds/Water/Paddling/31.mp3",0,0,0
+gisounddb[668][0] ftgen 0,0,0,1,"sounds/Water/Paddling/84.mp3",0,0,0
+gisounddb[669][0] ftgen 0,0,0,1,"sounds/Water/Paddling/97.mp3",0,0,0
+gisounddb[670][0] ftgen 0,0,0,1,"sounds/Water/Paddling/73.mp3",0,0,0
+gisounddb[671][0] ftgen 0,0,0,1,"sounds/Water/Paddling/20.mp3",0,0,0
+gisounddb[672][0] ftgen 0,0,0,1,"sounds/Water/Paddling/7.mp3",0,0,0
+gisounddb[673][0] ftgen 0,0,0,1,"sounds/Water/Paddling/63.mp3",0,0,0
+gisounddb[674][0] ftgen 0,0,0,1,"sounds/Water/Paddling/37.mp3",0,0,0
+gisounddb[675][0] ftgen 0,0,0,1,"sounds/Water/Paddling/9.mp3",0,0,0
+gisounddb[676][0] ftgen 0,0,0,1,"sounds/Water/Paddling/24.mp3",0,0,0
+gisounddb[677][0] ftgen 0,0,0,1,"sounds/Water/Paddling/17.mp3",0,0,0
+gisounddb[678][0] ftgen 0,0,0,1,"sounds/MusicBox/89.3.mp3",0,0,0
+gisounddb[679][0] ftgen 0,0,0,1,"sounds/MusicBox/73.0.mp3",0,0,0
+gisounddb[680][0] ftgen 0,0,0,1,"sounds/MusicBox/77.0.mp3",0,0,0
+gisounddb[681][0] ftgen 0,0,0,1,"sounds/MusicBox/75.2.mp3",0,0,0
+gisounddb[682][0] ftgen 0,0,0,1,"sounds/MusicBox/92.1.mp3",0,0,0
+gisounddb[683][0] ftgen 0,0,0,1,"sounds/MusicBox/75.1.mp3",0,0,0
+gisounddb[684][0] ftgen 0,0,0,1,"sounds/MusicBox/68.2.mp3",0,0,0
+gisounddb[685][0] ftgen 0,0,0,1,"sounds/MusicBox/91.2.mp3",0,0,0
+gisounddb[686][0] ftgen 0,0,0,1,"sounds/MusicBox/85.3.mp3",0,0,0
+gisounddb[687][0] ftgen 0,0,0,1,"sounds/MusicBox/80.3.mp3",0,0,0
+gisounddb[688][0] ftgen 0,0,0,1,"sounds/MusicBox/92.0.mp3",0,0,0
+gisounddb[689][0] ftgen 0,0,0,1,"sounds/MusicBox/85.0.mp3",0,0,0
+gisounddb[690][0] ftgen 0,0,0,1,"sounds/MusicBox/68.3.mp3",0,0,0
+gisounddb[691][0] ftgen 0,0,0,1,"sounds/MusicBox/68.0.mp3",0,0,0
+gisounddb[692][0] ftgen 0,0,0,1,"sounds/MusicBox/77.3.mp3",0,0,0
+gisounddb[693][0] ftgen 0,0,0,1,"sounds/MusicBox/70.4.mp3",0,0,0
+gisounddb[694][0] ftgen 0,0,0,1,"sounds/MusicBox/73.1.mp3",0,0,0
+gisounddb[695][0] ftgen 0,0,0,1,"sounds/MusicBox/85.1.mp3",0,0,0
+gisounddb[696][0] ftgen 0,0,0,1,"sounds/MusicBox/79.1.mp3",0,0,0
+gisounddb[697][0] ftgen 0,0,0,1,"sounds/MusicBox/82.2.mp3",0,0,0
+gisounddb[698][0] ftgen 0,0,0,1,"sounds/MusicBox/70.1.mp3",0,0,0
+gisounddb[699][0] ftgen 0,0,0,1,"sounds/MusicBox/87.4.mp3",0,0,0
+gisounddb[700][0] ftgen 0,0,0,1,"sounds/MusicBox/80.1.mp3",0,0,0
+gisounddb[701][0] ftgen 0,0,0,1,"sounds/MusicBox/91.0.mp3",0,0,0
+gisounddb[702][0] ftgen 0,0,0,1,"sounds/MusicBox/82.3.mp3",0,0,0
+gisounddb[703][0] ftgen 0,0,0,1,"sounds/MusicBox/72.3.mp3",0,0,0
+gisounddb[704][0] ftgen 0,0,0,1,"sounds/MusicBox/79.0.mp3",0,0,0
+gisounddb[705][0] ftgen 0,0,0,1,"sounds/MusicBox/68.1.mp3",0,0,0
+gisounddb[706][0] ftgen 0,0,0,1,"sounds/MusicBox/92.2.mp3",0,0,0
+gisounddb[707][0] ftgen 0,0,0,1,"sounds/MusicBox/89.2.mp3",0,0,0
+gisounddb[708][0] ftgen 0,0,0,1,"sounds/MusicBox/82.1.mp3",0,0,0
+gisounddb[709][0] ftgen 0,0,0,1,"sounds/MusicBox/84.2.mp3",0,0,0
+gisounddb[710][0] ftgen 0,0,0,1,"sounds/MusicBox/72.0.mp3",0,0,0
+gisounddb[711][0] ftgen 0,0,0,1,"sounds/MusicBox/82.0.mp3",0,0,0
+gisounddb[712][0] ftgen 0,0,0,1,"sounds/MusicBox/72.2.mp3",0,0,0
+gisounddb[713][0] ftgen 0,0,0,1,"sounds/MusicBox/87.3.mp3",0,0,0
+gisounddb[714][0] ftgen 0,0,0,1,"sounds/MusicBox/70.3.mp3",0,0,0
+gisounddb[715][0] ftgen 0,0,0,1,"sounds/MusicBox/73.2.mp3",0,0,0
+gisounddb[716][0] ftgen 0,0,0,1,"sounds/MusicBox/87.1.mp3",0,0,0
+gisounddb[717][0] ftgen 0,0,0,1,"sounds/MusicBox/77.2.mp3",0,0,0
+gisounddb[718][0] ftgen 0,0,0,1,"sounds/MusicBox/77.1.mp3",0,0,0
+gisounddb[719][0] ftgen 0,0,0,1,"sounds/MusicBox/72.1.mp3",0,0,0
+gisounddb[720][0] ftgen 0,0,0,1,"sounds/MusicBox/87.2.mp3",0,0,0
+gisounddb[721][0] ftgen 0,0,0,1,"sounds/MusicBox/91.1.mp3",0,0,0
+gisounddb[722][0] ftgen 0,0,0,1,"sounds/MusicBox/87.0.mp3",0,0,0
+gisounddb[723][0] ftgen 0,0,0,1,"sounds/MusicBox/70.0.mp3",0,0,0
+gisounddb[724][0] ftgen 0,0,0,1,"sounds/MusicBox/70.2.mp3",0,0,0
+gisounddb[725][0] ftgen 0,0,0,1,"sounds/MusicBox/89.0.mp3",0,0,0
+gisounddb[726][0] ftgen 0,0,0,1,"sounds/MusicBox/85.2.mp3",0,0,0
+gisounddb[727][0] ftgen 0,0,0,1,"sounds/MusicBox/79.3.mp3",0,0,0
+gisounddb[728][0] ftgen 0,0,0,1,"sounds/MusicBox/89.1.mp3",0,0,0
+gisounddb[729][0] ftgen 0,0,0,1,"sounds/MusicBox/80.2.mp3",0,0,0
+gisounddb[730][0] ftgen 0,0,0,1,"sounds/MusicBox/84.1.mp3",0,0,0
+gisounddb[731][0] ftgen 0,0,0,1,"sounds/MusicBox/68.4.mp3",0,0,0
+gisounddb[732][0] ftgen 0,0,0,1,"sounds/MusicBox/80.0.mp3",0,0,0
+gisounddb[733][0] ftgen 0,0,0,1,"sounds/MusicBox/84.0.mp3",0,0,0
+gisounddb[734][0] ftgen 0,0,0,1,"sounds/MusicBox/75.0.mp3",0,0,0
+gisounddb[735][0] ftgen 0,0,0,1,"sounds/MusicBox/79.2.mp3",0,0,0
+gisounddb[736][0] ftgen 0,0,0,1,"sounds/MusicBox/68.5.mp3",0,0,0
+gisounddb[737][0] ftgen 0,0,0,1,"sounds/MusicBox/84.3.mp3",0,0,0
+gisounddb[738][0] ftgen 0,0,0,1,"sounds/Kalimba/65.1.mp3",0,0,0
+gisounddb[739][0] ftgen 0,0,0,1,"sounds/Kalimba/77.0.mp3",0,0,0
+gisounddb[740][0] ftgen 0,0,0,1,"sounds/Kalimba/76.3.mp3",0,0,0
+gisounddb[741][0] ftgen 0,0,0,1,"sounds/Kalimba/69.3.mp3",0,0,0
+gisounddb[742][0] ftgen 0,0,0,1,"sounds/Kalimba/64.0.mp3",0,0,0
+gisounddb[743][0] ftgen 0,0,0,1,"sounds/Kalimba/60.2.mp3",0,0,0
+gisounddb[744][0] ftgen 0,0,0,1,"sounds/Kalimba/69.0.mp3",0,0,0
+gisounddb[745][0] ftgen 0,0,0,1,"sounds/Kalimba/67.0.mp3",0,0,0
+gisounddb[746][0] ftgen 0,0,0,1,"sounds/Kalimba/62.3.mp3",0,0,0
+gisounddb[747][0] ftgen 0,0,0,1,"sounds/Kalimba/65.3.mp3",0,0,0
+gisounddb[748][0] ftgen 0,0,0,1,"sounds/Kalimba/62.2.mp3",0,0,0
+gisounddb[749][0] ftgen 0,0,0,1,"sounds/Kalimba/67.4.mp3",0,0,0
+gisounddb[750][0] ftgen 0,0,0,1,"sounds/Kalimba/69.2.mp3",0,0,0
+gisounddb[751][0] ftgen 0,0,0,1,"sounds/Kalimba/74.2.mp3",0,0,0
+gisounddb[752][0] ftgen 0,0,0,1,"sounds/Kalimba/77.3.mp3",0,0,0
+gisounddb[753][0] ftgen 0,0,0,1,"sounds/Kalimba/88.1.mp3",0,0,0
+gisounddb[754][0] ftgen 0,0,0,1,"sounds/Kalimba/65.0.mp3",0,0,0
+gisounddb[755][0] ftgen 0,0,0,1,"sounds/Kalimba/86.1.mp3",0,0,0
+gisounddb[756][0] ftgen 0,0,0,1,"sounds/Kalimba/69.1.mp3",0,0,0
+gisounddb[757][0] ftgen 0,0,0,1,"sounds/Kalimba/71.1.mp3",0,0,0
+gisounddb[758][0] ftgen 0,0,0,1,"sounds/Kalimba/79.1.mp3",0,0,0
+gisounddb[759][0] ftgen 0,0,0,1,"sounds/Kalimba/64.2.mp3",0,0,0
+gisounddb[760][0] ftgen 0,0,0,1,"sounds/Kalimba/83.4.mp3",0,0,0
+gisounddb[761][0] ftgen 0,0,0,1,"sounds/Kalimba/74.1.mp3",0,0,0
+gisounddb[762][0] ftgen 0,0,0,1,"sounds/Kalimba/83.3.mp3",0,0,0
+gisounddb[763][0] ftgen 0,0,0,1,"sounds/Kalimba/83.0.mp3",0,0,0
+gisounddb[764][0] ftgen 0,0,0,1,"sounds/Kalimba/86.3.mp3",0,0,0
+gisounddb[765][0] ftgen 0,0,0,1,"sounds/Kalimba/67.2.mp3",0,0,0
+gisounddb[766][0] ftgen 0,0,0,1,"sounds/Kalimba/71.2.mp3",0,0,0
+gisounddb[767][0] ftgen 0,0,0,1,"sounds/Kalimba/81.1.mp3",0,0,0
+gisounddb[768][0] ftgen 0,0,0,1,"sounds/Kalimba/72.3.mp3",0,0,0
+gisounddb[769][0] ftgen 0,0,0,1,"sounds/Kalimba/81.2.mp3",0,0,0
+gisounddb[770][0] ftgen 0,0,0,1,"sounds/Kalimba/79.0.mp3",0,0,0
+gisounddb[771][0] ftgen 0,0,0,1,"sounds/Kalimba/69.4.mp3",0,0,0
+gisounddb[772][0] ftgen 0,0,0,1,"sounds/Kalimba/60.1.mp3",0,0,0
+gisounddb[773][0] ftgen 0,0,0,1,"sounds/Kalimba/71.4.mp3",0,0,0
+gisounddb[774][0] ftgen 0,0,0,1,"sounds/Kalimba/62.0.mp3",0,0,0
+gisounddb[775][0] ftgen 0,0,0,1,"sounds/Kalimba/81.3.mp3",0,0,0
+gisounddb[776][0] ftgen 0,0,0,1,"sounds/Kalimba/81.4.mp3",0,0,0
+gisounddb[777][0] ftgen 0,0,0,1,"sounds/Kalimba/60.0.mp3",0,0,0
+gisounddb[778][0] ftgen 0,0,0,1,"sounds/Kalimba/65.2.mp3",0,0,0
+gisounddb[779][0] ftgen 0,0,0,1,"sounds/Kalimba/84.2.mp3",0,0,0
+gisounddb[780][0] ftgen 0,0,0,1,"sounds/Kalimba/72.0.mp3",0,0,0
+gisounddb[781][0] ftgen 0,0,0,1,"sounds/Kalimba/65.4.mp3",0,0,0
+gisounddb[782][0] ftgen 0,0,0,1,"sounds/Kalimba/71.3.mp3",0,0,0
+gisounddb[783][0] ftgen 0,0,0,1,"sounds/Kalimba/86.0.mp3",0,0,0
+gisounddb[784][0] ftgen 0,0,0,1,"sounds/Kalimba/72.2.mp3",0,0,0
+gisounddb[785][0] ftgen 0,0,0,1,"sounds/Kalimba/83.1.mp3",0,0,0
+gisounddb[786][0] ftgen 0,0,0,1,"sounds/Kalimba/60.3.mp3",0,0,0
+gisounddb[787][0] ftgen 0,0,0,1,"sounds/Kalimba/74.0.mp3",0,0,0
+gisounddb[788][0] ftgen 0,0,0,1,"sounds/Kalimba/77.2.mp3",0,0,0
+gisounddb[789][0] ftgen 0,0,0,1,"sounds/Kalimba/76.2.mp3",0,0,0
+gisounddb[790][0] ftgen 0,0,0,1,"sounds/Kalimba/77.1.mp3",0,0,0
+gisounddb[791][0] ftgen 0,0,0,1,"sounds/Kalimba/72.1.mp3",0,0,0
+gisounddb[792][0] ftgen 0,0,0,1,"sounds/Kalimba/88.0.mp3",0,0,0
+gisounddb[793][0] ftgen 0,0,0,1,"sounds/Kalimba/67.3.mp3",0,0,0
+gisounddb[794][0] ftgen 0,0,0,1,"sounds/Kalimba/81.0.mp3",0,0,0
+gisounddb[795][0] ftgen 0,0,0,1,"sounds/Kalimba/77.4.mp3",0,0,0
+gisounddb[796][0] ftgen 0,0,0,1,"sounds/Kalimba/88.2.mp3",0,0,0
+gisounddb[797][0] ftgen 0,0,0,1,"sounds/Kalimba/64.3.mp3",0,0,0
+gisounddb[798][0] ftgen 0,0,0,1,"sounds/Kalimba/76.1.mp3",0,0,0
+gisounddb[799][0] ftgen 0,0,0,1,"sounds/Kalimba/79.3.mp3",0,0,0
+gisounddb[800][0] ftgen 0,0,0,1,"sounds/Kalimba/83.2.mp3",0,0,0
+gisounddb[801][0] ftgen 0,0,0,1,"sounds/Kalimba/74.3.mp3",0,0,0
+gisounddb[802][0] ftgen 0,0,0,1,"sounds/Kalimba/76.0.mp3",0,0,0
+gisounddb[803][0] ftgen 0,0,0,1,"sounds/Kalimba/64.1.mp3",0,0,0
+gisounddb[804][0] ftgen 0,0,0,1,"sounds/Kalimba/84.1.mp3",0,0,0
+gisounddb[805][0] ftgen 0,0,0,1,"sounds/Kalimba/71.0.mp3",0,0,0
+gisounddb[806][0] ftgen 0,0,0,1,"sounds/Kalimba/62.1.mp3",0,0,0
+gisounddb[807][0] ftgen 0,0,0,1,"sounds/Kalimba/84.0.mp3",0,0,0
+gisounddb[808][0] ftgen 0,0,0,1,"sounds/Kalimba/67.1.mp3",0,0,0
+gisounddb[809][0] ftgen 0,0,0,1,"sounds/Kalimba/86.2.mp3",0,0,0
+gisounddb[810][0] ftgen 0,0,0,1,"sounds/Kalimba/79.2.mp3",0,0,0
+gisounddb[811][0] ftgen 0,0,0,1,"sounds/Kalimba/84.3.mp3",0,0,0
+index = 0 ; all sounds have the same number of channels
+while (index < 812) do
+ gisounddb[index][1] = 2
+ index += 1
+od
+index = 0
+while (index < 812) do
+ gisounddb[index][2] = ftlen(gisounddb[index][0]) / ftsr(gisounddb[index][0]) / ftchnls(gisounddb[index][0])
+ index += 1
+od
+gisounddb[0][3] = 0.00598323530261935
+gisounddb[1][3] = 0.002668039965544519
+gisounddb[2][3] = 0.002173936874994305
+gisounddb[3][3] = 0.004979451786363545
+gisounddb[4][3] = 0.0024711239889592027
+gisounddb[5][3] = 0.009364649467778248
+gisounddb[6][3] = 0.009321679101233231
+gisounddb[7][3] = 0.006833442669832136
+gisounddb[8][3] = 0.015333609384416738
+gisounddb[9][3] = 0.005833896088676241
+gisounddb[10][3] = 0.017964238393301628
+gisounddb[11][3] = 0.009157451122239924
+gisounddb[12][3] = 0.003487192404087312
+gisounddb[13][3] = 0.004809457393541127
+gisounddb[14][3] = 0.005094952285650194
+gisounddb[15][3] = 0.00508577733755102
+gisounddb[16][3] = 0.0076238339167297295
+gisounddb[17][3] = 0.01795838089707388
+gisounddb[18][3] = 0.011135254736008671
+gisounddb[19][3] = 0.013576740239896034
+gisounddb[20][3] = 0.012882775747587725
+gisounddb[21][3] = 0.0059420121787073146
+gisounddb[22][3] = 0.007522192374105889
+gisounddb[23][3] = 0.0057865114329241135
+gisounddb[24][3] = 0.004896228772449702
+gisounddb[25][3] = 0.009454675438874686
+gisounddb[26][3] = 0.009391380868927095
+gisounddb[27][3] = 0.0053192959305936455
+gisounddb[28][3] = 0.006795043100277803
+gisounddb[29][3] = 0.013220310439872141
+gisounddb[30][3] = 0.00953121223501827
+gisounddb[31][3] = 0.006500520467185666
+gisounddb[32][3] = 0.004149973682657126
+gisounddb[33][3] = 0.002678230289960877
+gisounddb[34][3] = 0.005247265788906494
+gisounddb[35][3] = 0.010188623179907971
+gisounddb[36][3] = 0.009178286541640475
+gisounddb[37][3] = 0.016318420501179293
+gisounddb[38][3] = 0.01256879675958142
+gisounddb[39][3] = 0.007123462497019896
+gisounddb[40][3] = 0.005673329365537944
+gisounddb[41][3] = 0.0020958309921066216
+gisounddb[42][3] = 0.022489096500953727
+gisounddb[43][3] = 0.0037841338521460307
+gisounddb[44][3] = 0.0024439839998671806
+gisounddb[45][3] = 0.0026509068532208995
+gisounddb[46][3] = 0.0056085710629587586
+gisounddb[47][3] = 0.0069071251232015775
+gisounddb[48][3] = 0.004785694508877388
+gisounddb[49][3] = 0.004233489507239822
+gisounddb[50][3] = 0.002683329621433783
+gisounddb[51][3] = 0.007827804609944575
+gisounddb[52][3] = 0.025816241592159405
+gisounddb[53][3] = 0.0029683546694794652
+gisounddb[54][3] = 0.008134088418116862
+gisounddb[55][3] = 0.010265294033948137
+gisounddb[56][3] = 0.005998868121066853
+gisounddb[57][3] = 0.0032324407079317823
+gisounddb[58][3] = 0.007746463537985637
+gisounddb[59][3] = 0.017130889608365868
+gisounddb[60][3] = 0.004040417913444802
+gisounddb[61][3] = 0.0034585825888229426
+gisounddb[62][3] = 0.0027885762951951657
+gisounddb[63][3] = 0.007412193059269223
+gisounddb[64][3] = 0.004817398559993996
+gisounddb[65][3] = 0.005078303449460165
+gisounddb[66][3] = 0.007898223491171356
+gisounddb[67][3] = 0.005787946301415294
+gisounddb[68][3] = 0.01643200923223261
+gisounddb[69][3] = 0.036636702264993354
+gisounddb[70][3] = 0.006636171664319744
+gisounddb[71][3] = 0.0025224906132375936
+gisounddb[72][3] = 0.0011023408292128146
+gisounddb[73][3] = 0.006070147153677933
+gisounddb[74][3] = 0.010358607309924907
+gisounddb[75][3] = 0.008521140505417229
+gisounddb[76][3] = 0.0021127328705942685
+gisounddb[77][3] = 0.003421763170599867
+gisounddb[78][3] = 0.007083046927614073
+gisounddb[79][3] = 0.002761877927451458
+gisounddb[80][3] = 0.002018563452141591
+gisounddb[81][3] = 0.0012938541603163892
+gisounddb[82][3] = 0.0037284122705047097
+gisounddb[83][3] = 0.010411801355004092
+gisounddb[84][3] = 0.01822565129163906
+gisounddb[85][3] = 0.0025984440330321695
+gisounddb[86][3] = 0.0005658286192922751
+gisounddb[87][3] = 0.0023197301292877176
+gisounddb[88][3] = 0.03358426681947521
+gisounddb[89][3] = 0.002844062794448459
+gisounddb[90][3] = 0.004159188078414864
+gisounddb[91][3] = 0.003189797468311443
+gisounddb[92][3] = 0.014815426224370916
+gisounddb[93][3] = 0.060412271756305744
+gisounddb[94][3] = 0.0018136686253645334
+gisounddb[95][3] = 0.007232254007936627
+gisounddb[96][3] = 0.0030909474087781794
+gisounddb[97][3] = 0.002861206811002901
+gisounddb[98][3] = 0.005708800828403748
+gisounddb[99][3] = 0.022035508721450096
+gisounddb[100][3] = 0.001829398138682419
+gisounddb[101][3] = 0.002445558057657685
+gisounddb[102][3] = 0.024251463943510375
+gisounddb[103][3] = 0.022715191237082214
+gisounddb[104][3] = 0.0068938200373220215
+gisounddb[105][3] = 0.010789944685722424
+gisounddb[106][3] = 0.006940406118522731
+gisounddb[107][3] = 0.006150041170064181
+gisounddb[108][3] = 0.002285473205307945
+gisounddb[109][3] = 0.003735154612992439
+gisounddb[110][3] = 0.0043190643071719555
+gisounddb[111][3] = 0.0020476086348571844
+gisounddb[112][3] = 0.004792845760020963
+gisounddb[113][3] = 0.02182145995325383
+gisounddb[114][3] = 0.009611357048713437
+gisounddb[115][3] = 0.008545568548161145
+gisounddb[116][3] = 0.001688605436359166
+gisounddb[117][3] = 0.01207249390081909
+gisounddb[118][3] = 0.06865753283265262
+gisounddb[119][3] = 0.0076430362672082666
+gisounddb[120][3] = 0.0050430122271156045
+gisounddb[121][3] = 0.019320634908080756
+gisounddb[122][3] = 0.006495820743701141
+gisounddb[123][3] = 0.0014797799550832454
+gisounddb[124][3] = 0.0028317942519223882
+gisounddb[125][3] = 0.003729956822729459
+gisounddb[126][3] = 0.0007509131045442697
+gisounddb[127][3] = 0.008503605860829202
+gisounddb[128][3] = 0.002183058745146387
+gisounddb[129][3] = 0.003327499302265506
+gisounddb[130][3] = 0.005691225132593801
+gisounddb[131][3] = 0.00487905172249012
+gisounddb[132][3] = 0.005345055572348599
+gisounddb[133][3] = 0.004411896193429177
+gisounddb[134][3] = 0.001849016293139234
+gisounddb[135][3] = 0.004640987027332499
+gisounddb[136][3] = 0.008200827442153698
+gisounddb[137][3] = 0.055251142800202185
+gisounddb[138][3] = 0.00990767182421253
+gisounddb[139][3] = 0.007142321684940194
+gisounddb[140][3] = 0.00594675295341376
+gisounddb[141][3] = 0.002062395894346932
+gisounddb[142][3] = 0.0020219500175936754
+gisounddb[143][3] = 0.0009920348328842647
+gisounddb[144][3] = 0.005059905767073799
+gisounddb[145][3] = 0.010656614165477526
+gisounddb[146][3] = 0.013639574266447707
+gisounddb[147][3] = 0.015841542567489347
+gisounddb[148][3] = 0.0062590866854165435
+gisounddb[149][3] = 0.0014979876152118943
+gisounddb[150][3] = 0.01669125154721101
+gisounddb[151][3] = 0.0047706700823672505
+gisounddb[152][3] = 0.004543058054591071
+gisounddb[153][3] = 0.004105231057890772
+gisounddb[154][3] = 0.012519922714184
+gisounddb[155][3] = 0.014255669722176052
+gisounddb[156][3] = 0.0027281806470830197
+gisounddb[157][3] = 0.00812709944758494
+gisounddb[158][3] = 0.004432300895712237
+gisounddb[159][3] = 0.009049263833995833
+gisounddb[160][3] = 0.0021287096533816894
+gisounddb[161][3] = 0.008486910842014512
+gisounddb[162][3] = 0.004335152216899965
+gisounddb[163][3] = 0.03757968731802192
+gisounddb[164][3] = 0.008640543757200343
+gisounddb[165][3] = 0.001468612258801247
+gisounddb[166][3] = 0.004621122084475156
+gisounddb[167][3] = 0.00904345829322083
+gisounddb[168][3] = 0.0021288069896774143
+gisounddb[169][3] = 0.010980844413307727
+gisounddb[170][3] = 0.0021535108453186063
+gisounddb[171][3] = 0.0022694593802069945
+gisounddb[172][3] = 0.0043021781436052
+gisounddb[173][3] = 0.007761898797427649
+gisounddb[174][3] = 0.03870314380541736
+gisounddb[175][3] = 0.0031233483685294172
+gisounddb[176][3] = 0.014566904692567125
+gisounddb[177][3] = 0.006603534660042465
+gisounddb[178][3] = 0.07015759066424301
+gisounddb[179][3] = 0.008233846094509768
+gisounddb[180][3] = 0.009177647681999341
+gisounddb[181][3] = 0.010457597200182838
+gisounddb[182][3] = 0.003428084417350242
+gisounddb[183][3] = 0.0067197243708596345
+gisounddb[184][3] = 0.005760114855804054
+gisounddb[185][3] = 0.014005636992265322
+gisounddb[186][3] = 0.001835219554734648
+gisounddb[187][3] = 0.004886499632854604
+gisounddb[188][3] = 0.02613489143950982
+gisounddb[189][3] = 0.0052344488277125826
+gisounddb[190][3] = 0.0029899306144379376
+gisounddb[191][3] = 0.004363238629084851
+gisounddb[192][3] = 0.001205490924064056
+gisounddb[193][3] = 0.008139938217240496
+gisounddb[194][3] = 0.0032541442965334125
+gisounddb[195][3] = 0.0023018805448565215
+gisounddb[196][3] = 0.009094167456523155
+gisounddb[197][3] = 0.005888462142563041
+gisounddb[198][3] = 0.003414062217937766
+gisounddb[199][3] = 0.003807303739080625
+gisounddb[200][3] = 0.002874875585051657
+gisounddb[201][3] = 0.019421626045407297
+gisounddb[202][3] = 0.015239848393550899
+gisounddb[203][3] = 0.03647973522087719
+gisounddb[204][3] = 0.002693713656303577
+gisounddb[205][3] = 0.0031989595879037677
+gisounddb[206][3] = 0.01860048486759007
+gisounddb[207][3] = 0.0033399371810819973
+gisounddb[208][3] = 0.016025688086218084
+gisounddb[209][3] = 0.015647778234324426
+gisounddb[210][3] = 0.00690289107451571
+gisounddb[211][3] = 0.007314035097680522
+gisounddb[212][3] = 0.0039641280660580825
+gisounddb[213][3] = 0.0036621402041172152
+gisounddb[214][3] = 0.0054182800480234924
+gisounddb[215][3] = 0.0004398412566356115
+gisounddb[216][3] = 0.010367436529764473
+gisounddb[217][3] = 0.010765564108453855
+gisounddb[218][3] = 0.020334198557246386
+gisounddb[219][3] = 0.002405251851272759
+gisounddb[220][3] = 0.0018626969335568267
+gisounddb[221][3] = 0.003523188873595955
+gisounddb[222][3] = 0.013492574972154052
+gisounddb[223][3] = 0.006908910851355109
+gisounddb[224][3] = 0.0035275826371921064
+gisounddb[225][3] = 0.003300785861026249
+gisounddb[226][3] = 0.011075041573406467
+gisounddb[227][3] = 0.009027768387917844
+gisounddb[228][3] = 0.003675884666356387
+gisounddb[229][3] = 0.002995311210923531
+gisounddb[230][3] = 0.004821918042957278
+gisounddb[231][3] = 0.0018752836230527792
+gisounddb[232][3] = 0.004263890823485804
+gisounddb[233][3] = 0.03104358103781758
+gisounddb[234][3] = 0.0032117672484302125
+gisounddb[235][3] = 0.008217639200380723
+gisounddb[236][3] = 0.010935634189466687
+gisounddb[237][3] = 0.006651324055185712
+gisounddb[238][3] = 0.007068938777205702
+gisounddb[239][3] = 0.0093076017392413
+gisounddb[240][3] = 0.02833390790112526
+gisounddb[241][3] = 0.0054978289775754734
+gisounddb[242][3] = 0.006768304002024846
+gisounddb[243][3] = 0.015032290849820773
+gisounddb[244][3] = 0.010219539239991313
+gisounddb[245][3] = 0.003549077762557423
+gisounddb[246][3] = 0.012373385246136947
+gisounddb[247][3] = 0.005959889985853581
+gisounddb[248][3] = 0.0029277652738058236
+gisounddb[249][3] = 0.007435241396101413
+gisounddb[250][3] = 0.007937041270049003
+gisounddb[251][3] = 0.013611373359839184
+gisounddb[252][3] = 0.018132109668240356
+gisounddb[253][3] = 0.012796578444360692
+gisounddb[254][3] = 0.024961780933500474
+gisounddb[255][3] = 0.020685343012448048
+gisounddb[256][3] = 0.0035283148242205744
+gisounddb[257][3] = 0.018899018333348883
+gisounddb[258][3] = 0.004592166861663849
+gisounddb[259][3] = 0.003577863328365638
+gisounddb[260][3] = 0.012466449649080825
+gisounddb[261][3] = 0.0028711123425671876
+gisounddb[262][3] = 0.0037543733198172097
+gisounddb[263][3] = 0.00427072456908484
+gisounddb[264][3] = 0.040643440072283196
+gisounddb[265][3] = 0.005583470806455899
+gisounddb[266][3] = 0.01176382463179803
+gisounddb[267][3] = 0.01412098836015984
+gisounddb[268][3] = 0.0038268139737235637
+gisounddb[269][3] = 0.018618655164692518
+gisounddb[270][3] = 0.0025800729697975176
+gisounddb[271][3] = 0.007753463412748381
+gisounddb[272][3] = 0.005236807990122312
+gisounddb[273][3] = 0.0033866813736296345
+gisounddb[274][3] = 0.017261859683350353
+gisounddb[275][3] = 0.004702330060675523
+gisounddb[276][3] = 0.004178873742888978
+gisounddb[277][3] = 0.005075176180202787
+gisounddb[278][3] = 0.013353241993554003
+gisounddb[279][3] = 0.005479373246195612
+gisounddb[280][3] = 0.012608063536198819
+gisounddb[281][3] = 0.0023066671814749562
+gisounddb[282][3] = 0.0021409127705228244
+gisounddb[283][3] = 0.007006677543484883
+gisounddb[284][3] = 0.010786446351904408
+gisounddb[285][3] = 0.007190692852869092
+gisounddb[286][3] = 0.02107453810181772
+gisounddb[287][3] = 0.020833516115118487
+gisounddb[288][3] = 0.009604049931211634
+gisounddb[289][3] = 0.0031194462574582952
+gisounddb[290][3] = 0.008116574940565136
+gisounddb[291][3] = 0.007568055568945597
+gisounddb[292][3] = 0.0005121098081047548
+gisounddb[293][3] = 0.002561685550216632
+gisounddb[294][3] = 0.00810219161868483
+gisounddb[295][3] = 0.005872674099182651
+gisounddb[296][3] = 0.0026863253984959466
+gisounddb[297][3] = 0.010497723486759192
+gisounddb[298][3] = 0.0036628258878083518
+gisounddb[299][3] = 0.006565065175125798
+gisounddb[300][3] = 0.0034246710723901085
+gisounddb[301][3] = 0.019133179634584697
+gisounddb[302][3] = 0.002532044323001517
+gisounddb[303][3] = 0.0019817469203325566
+gisounddb[304][3] = 0.006583980167050893
+gisounddb[305][3] = 0.0023637670258209818
+gisounddb[306][3] = 0.009728104799578585
+gisounddb[307][3] = 0.03234819400184569
+gisounddb[308][3] = 0.0016695929477820103
+gisounddb[309][3] = 0.003318203445489269
+gisounddb[310][3] = 0.005799540705906394
+gisounddb[311][3] = 0.017532512955171893
+gisounddb[312][3] = 0.013752066160165343
+gisounddb[313][3] = 0.028673388677898832
+gisounddb[314][3] = 0.0028470774935582268
+gisounddb[315][3] = 0.007050363740712134
+gisounddb[316][3] = 0.051732580992585146
+gisounddb[317][3] = 0.009643771478396868
+gisounddb[318][3] = 0.019006285176226483
+gisounddb[319][3] = 0.009240375873369502
+gisounddb[320][3] = 0.056446985420349864
+gisounddb[321][3] = 0.009618616059314553
+gisounddb[322][3] = 0.006633230087699021
+gisounddb[323][3] = 0.0028466583220969005
+gisounddb[324][3] = 0.0036788804434185513
+gisounddb[325][3] = 0.003001741820694803
+gisounddb[326][3] = 0.0030197588171403927
+gisounddb[327][3] = 0.013211343313583937
+gisounddb[328][3] = 0.00350223992190978
+gisounddb[329][3] = 0.006774591894657411
+gisounddb[330][3] = 0.013476248131485959
+gisounddb[331][3] = 0.025371418248535744
+gisounddb[332][3] = 0.006876738239025802
+gisounddb[333][3] = 0.0025183810010681717
+gisounddb[334][3] = 0.01802354971187227
+gisounddb[335][3] = 0.01318169919995478
+gisounddb[336][3] = 0.014386326781593396
+gisounddb[337][3] = 0.015376011448108295
+gisounddb[338][3] = 0.0129103134203921
+gisounddb[339][3] = 0.0038409763245733767
+gisounddb[340][3] = 0.00416009377099848
+gisounddb[341][3] = 0.020399226258469426
+gisounddb[342][3] = 0.005318694273622377
+gisounddb[343][3] = 0.0014209926810174278
+gisounddb[344][3] = 0.0008714511981146084
+gisounddb[345][3] = 0.003569236157508962
+gisounddb[346][3] = 0.002780360598695706
+gisounddb[347][3] = 0.00539387573801725
+gisounddb[348][3] = 0.0058988064090616
+gisounddb[349][3] = 0.023196768252831342
+gisounddb[350][3] = 0.007481174506303454
+gisounddb[351][3] = 0.0128427238663511
+gisounddb[352][3] = 0.014979669597572444
+gisounddb[353][3] = 0.0021213565136115613
+gisounddb[354][3] = 0.007271928731071858
+gisounddb[355][3] = 0.0067891477599548505
+gisounddb[356][3] = 0.012424727496252322
+gisounddb[357][3] = 0.004198288725868555
+gisounddb[358][3] = 0.005424932911675943
+gisounddb[359][3] = 0.010588874517906383
+gisounddb[360][3] = 0.006609011791042105
+gisounddb[361][3] = 0.00147036783996368
+gisounddb[362][3] = 0.0020706279471926258
+gisounddb[363][3] = 0.004604459778352934
+gisounddb[364][3] = 0.006390763611128467
+gisounddb[365][3] = 0.012571639556699397
+gisounddb[366][3] = 0.006449504061144282
+gisounddb[367][3] = 0.00548617941050492
+gisounddb[368][3] = 0.002598383418337303
+gisounddb[369][3] = 0.004099486452523307
+gisounddb[370][3] = 0.0024031462122296545
+gisounddb[371][3] = 0.002843508282239864
+gisounddb[372][3] = 0.011453272137971381
+gisounddb[373][3] = 0.003792922662189018
+gisounddb[374][3] = 0.004548737555286271
+gisounddb[375][3] = 0.009596472773640636
+gisounddb[376][3] = 0.007135573248911711
+gisounddb[377][3] = 0.0041255882946984864
+gisounddb[378][3] = 0.00571616118420898
+gisounddb[379][3] = 0.015886691214497508
+gisounddb[380][3] = 0.013020528254143845
+gisounddb[381][3] = 0.008017182235192115
+gisounddb[382][3] = 0.010032067930861694
+gisounddb[383][3] = 0.010501783067751898
+gisounddb[384][3] = 0.007988075635999976
+gisounddb[385][3] = 0.006065906049313298
+gisounddb[386][3] = 0.007838404805154792
+gisounddb[387][3] = 0.017819715000830034
+gisounddb[388][3] = 0.00442328149325862
+gisounddb[389][3] = 0.004886868131713872
+gisounddb[390][3] = 0.0023208152606108987
+gisounddb[391][3] = 0.005892675665637948
+gisounddb[392][3] = 0.003377402193912303
+gisounddb[393][3] = 0.006692232239254578
+gisounddb[394][3] = 0.0026917255584544865
+gisounddb[395][3] = 0.004844880749506244
+gisounddb[396][3] = 0.002552927528590085
+gisounddb[397][3] = 0.007992124954187203
+gisounddb[398][3] = 0.00508833662466761
+gisounddb[399][3] = 0.004024878101671962
+gisounddb[400][3] = 0.0385520547831399
+gisounddb[401][3] = 0.017086255384482395
+gisounddb[402][3] = 0.053611013068017174
+gisounddb[403][3] = 0.016325527493974236
+gisounddb[404][3] = 0.03348698568632971
+gisounddb[405][3] = 0.002409953819745983
+gisounddb[406][3] = 0.005164425705922126
+gisounddb[407][3] = 0.02461365117740858
+gisounddb[408][3] = 0.008361035608525535
+gisounddb[409][3] = 0.017713052380625077
+gisounddb[410][3] = 0.004144171028296165
+gisounddb[411][3] = 0.005111903874601885
+gisounddb[412][3] = 0.009511596165193818
+gisounddb[413][3] = 0.0025831992769168814
+gisounddb[414][3] = 0.002224326127407056
+gisounddb[415][3] = 0.002675210138735698
+gisounddb[416][3] = 0.0016762130987419922
+gisounddb[417][3] = 0.008457330229494263
+gisounddb[418][3] = 0.002201946155781755
+gisounddb[419][3] = 0.00187215458987571
+gisounddb[420][3] = 0.0019396775960374227
+gisounddb[421][3] = 0.005426155468378754
+gisounddb[422][3] = 0.004700934319130235
+gisounddb[423][3] = 0.0041384071801684255
+gisounddb[424][3] = 0.0033296339658053582
+gisounddb[425][3] = 0.0019851753387882393
+gisounddb[426][3] = 0.0016627317812495826
+gisounddb[427][3] = 0.0087069344872762
+gisounddb[428][3] = 0.016531749590141268
+gisounddb[429][3] = 0.005074914799375717
+gisounddb[430][3] = 0.002096750796047772
+gisounddb[431][3] = 0.010237075167430025
+gisounddb[432][3] = 0.002065928704777107
+gisounddb[433][3] = 0.006160447013395621
+gisounddb[434][3] = 0.0016557949265267394
+gisounddb[435][3] = 0.009734069413838527
+gisounddb[436][3] = 0.006500719309041842
+gisounddb[437][3] = 0.010488145723544924
+gisounddb[438][3] = 0.007698275817704695
+gisounddb[439][3] = 0.003143711378165215
+gisounddb[440][3] = 0.013929150868723797
+gisounddb[441][3] = 0.014859456225581748
+gisounddb[442][3] = 0.004306934633232537
+gisounddb[443][3] = 0.0054874603369139
+gisounddb[444][3] = 0.00843463660087648
+gisounddb[445][3] = 0.0026368872195097937
+gisounddb[446][3] = 0.008704988402787044
+gisounddb[447][3] = 0.0012804751501661088
+gisounddb[448][3] = 0.004627720106260821
+gisounddb[449][3] = 0.005485498216791181
+gisounddb[450][3] = 0.003980251574892601
+gisounddb[451][3] = 0.002028074346763902
+gisounddb[452][3] = 0.02010556505961227
+gisounddb[453][3] = 0.020058852617619086
+gisounddb[454][3] = 0.006169714326744116
+gisounddb[455][3] = 0.03047828005496211
+gisounddb[456][3] = 0.004411583498574707
+gisounddb[457][3] = 0.002958578705834365
+gisounddb[458][3] = 0.0025221060787447625
+gisounddb[459][3] = 0.007494995298158384
+gisounddb[460][3] = 0.014109860913318084
+gisounddb[461][3] = 0.013208432525379654
+gisounddb[462][3] = 0.011374579511251643
+gisounddb[463][3] = 0.011209191835239087
+gisounddb[464][3] = 0.020920871832514083
+gisounddb[465][3] = 0.02606082477236022
+gisounddb[466][3] = 0.0037007075063986137
+gisounddb[467][3] = 0.004220744385684271
+gisounddb[468][3] = 0.0053281950657955435
+gisounddb[469][3] = 0.04828994855131234
+gisounddb[470][3] = 0.010932876060493922
+gisounddb[471][3] = 0.005444123075072972
+gisounddb[472][3] = 0.006645652572307293
+gisounddb[473][3] = 0.020100237380717433
+gisounddb[474][3] = 0.006154774889091859
+gisounddb[475][3] = 0.00252522565089803
+gisounddb[476][3] = 0.002180516616157709
+gisounddb[477][3] = 0.000978159519875222
+gisounddb[478][3] = 0.005483244248137622
+gisounddb[479][3] = 0.006046928839129979
+gisounddb[480][3] = 0.007719600644641577
+gisounddb[481][3] = 0.0038352217771131037
+gisounddb[482][3] = 0.010838639132023944
+gisounddb[483][3] = 0.0014292543997852126
+gisounddb[484][3] = 0.0023834578216978355
+gisounddb[485][3] = 0.0029020306476392277
+gisounddb[486][3] = 0.007566214678212611
+gisounddb[487][3] = 0.011485267716906156
+gisounddb[488][3] = 0.005010156817509203
+gisounddb[489][3] = 0.007532703411193499
+gisounddb[490][3] = 0.029085078554030114
+gisounddb[491][3] = 0.005229043536351303
+gisounddb[492][3] = 0.0026878792513881622
+gisounddb[493][3] = 0.004470414710276486
+gisounddb[494][3] = 0.002728485324120709
+gisounddb[495][3] = 0.047558400382485364
+gisounddb[496][3] = 0.013127636023536504
+gisounddb[497][3] = 0.002175270558637706
+gisounddb[498][3] = 0.009358068443764158
+gisounddb[499][3] = 0.027935798282345468
+gisounddb[500][3] = 0.0014998084614029272
+gisounddb[501][3] = 0.01274512458623572
+gisounddb[502][3] = 0.0037240508988883553
+gisounddb[503][3] = 0.007706362908422983
+gisounddb[504][3] = 0.002495825599611696
+gisounddb[505][3] = 0.0012884050916754837
+gisounddb[506][3] = 0.0009039993649819509
+gisounddb[507][3] = 0.018027299484424546
+gisounddb[508][3] = 0.004585175004717885
+gisounddb[509][3] = 0.009187331921820464
+gisounddb[510][3] = 0.002850916424233112
+gisounddb[511][3] = 0.01873196295144582
+gisounddb[512][3] = 0.014346359568501983
+gisounddb[513][3] = 0.00724206909852762
+gisounddb[514][3] = 0.0031037855370083934
+gisounddb[515][3] = 0.0044048966393791045
+gisounddb[516][3] = 0.0027321093773058558
+gisounddb[517][3] = 0.008803712742953176
+gisounddb[518][3] = 0.01785301908746352
+gisounddb[519][3] = 0.005220788392193278
+gisounddb[520][3] = 0.023821939877156115
+gisounddb[521][3] = 0.002426225177121949
+gisounddb[522][3] = 0.005684174585228999
+gisounddb[523][3] = 0.017863805296023064
+gisounddb[524][3] = 0.017518845463973823
+gisounddb[525][3] = 0.0026327468189239313
+gisounddb[526][3] = 0.002973660539912657
+gisounddb[527][3] = 0.029133362488112432
+gisounddb[528][3] = 0.0228036258319039
+gisounddb[529][3] = 0.0025477521882140927
+gisounddb[530][3] = 0.003618172741877277
+gisounddb[531][3] = 0.008884971712468274
+gisounddb[532][3] = 0.00905334137489813
+gisounddb[533][3] = 0.02229323342406813
+gisounddb[534][3] = 0.003207865778784433
+gisounddb[535][3] = 0.0053737869377153726
+gisounddb[536][3] = 0.0043485233695898
+gisounddb[537][3] = 0.0020151857062879657
+gisounddb[538][3] = 0.014415693799474591
+gisounddb[539][3] = 0.013593607160702514
+gisounddb[540][3] = 0.00428564700896552
+gisounddb[541][3] = 0.07444193222836577
+gisounddb[542][3] = 0.005309893276497882
+gisounddb[543][3] = 0.013304580901370293
+gisounddb[544][3] = 0.0246420663200815
+gisounddb[545][3] = 0.012411839978270734
+gisounddb[546][3] = 0.016240216640570543
+gisounddb[547][3] = 0.0031354357083962303
+gisounddb[548][3] = 0.0030009243240957818
+gisounddb[549][3] = 0.04360495219265074
+gisounddb[550][3] = 0.006266343130316289
+gisounddb[551][3] = 0.008591878816464577
+gisounddb[552][3] = 0.023311503852397056
+gisounddb[553][3] = 0.0033413136798670106
+gisounddb[554][3] = 0.002130968913794323
+gisounddb[555][3] = 0.005047489696718953
+gisounddb[556][3] = 0.0013883127012422006
+gisounddb[557][3] = 0.005401203381130013
+gisounddb[558][3] = 0.006114792281792226
+gisounddb[559][3] = 0.0021929160094536506
+gisounddb[560][3] = 0.006439799295712199
+gisounddb[561][3] = 0.004764250376826801
+gisounddb[562][3] = 0.0023070408117369648
+gisounddb[563][3] = 0.0037407462384157156
+gisounddb[564][3] = 0.008090880082769775
+gisounddb[565][3] = 0.00717072848908366
+gisounddb[566][3] = 0.01432081031425937
+gisounddb[567][3] = 0.011269991260604338
+gisounddb[568][3] = 0.0021648406618559224
+gisounddb[569][3] = 0.013401472047907549
+gisounddb[570][3] = 0.002944642136705113
+gisounddb[571][3] = 0.005813598183712707
+gisounddb[572][3] = 0.004342415396765807
+gisounddb[573][3] = 0.008579782175930297
+gisounddb[574][3] = 0.007536321691550563
+gisounddb[575][3] = 0.004566067264477368
+gisounddb[576][3] = 0.006678065077714696
+gisounddb[577][3] = 0.0018568750364355909
+gisounddb[578][3] = 0.004602227297448349
+gisounddb[579][3] = 0.010559684533419718
+gisounddb[580][3] = 0.004875939526728292
+gisounddb[581][3] = 0.003938881885289803
+gisounddb[582][3] = 0.0055741913060258965
+gisounddb[583][3] = 0.003714851897338837
+gisounddb[584][3] = 0.0023386760699855885
+gisounddb[585][3] = 0.002165222470291048
+gisounddb[586][3] = 0.002165614220818982
+gisounddb[587][3] = 0.003510849774282209
+gisounddb[588][3] = 0.007282786779269763
+gisounddb[589][3] = 0.013205898895276765
+gisounddb[590][3] = 0.0023038150836895126
+gisounddb[591][3] = 0.010181684881978107
+gisounddb[592][3] = 0.004929173981604054
+gisounddb[593][3] = 0.004078854044243658
+gisounddb[594][3] = 0.007151159243309211
+gisounddb[595][3] = 0.011949581410987137
+gisounddb[596][3] = 0.006351169066161049
+gisounddb[597][3] = 0.01251749940924002
+gisounddb[598][3] = 0.00761383281278941
+gisounddb[599][3] = 0.004264509157515978
+gisounddb[600][3] = 0.003797649966963271
+gisounddb[601][3] = 0.004168134999804779
+gisounddb[602][3] = 0.008065006908729199
+gisounddb[603][3] = 0.009455214877587732
+gisounddb[604][3] = 0.007611660305154349
+gisounddb[605][3] = 0.002780002041929246
+gisounddb[606][3] = 0.002843419124117256
+gisounddb[607][3] = 0.0041063349509052206
+gisounddb[608][3] = 0.007193552968471317
+gisounddb[609][3] = 0.009638802997693834
+gisounddb[610][3] = 0.0032685471818866647
+gisounddb[611][3] = 0.00701454911528809
+gisounddb[612][3] = 0.012097610834380853
+gisounddb[613][3] = 0.005051856199738048
+gisounddb[614][3] = 0.003766886245398774
+gisounddb[615][3] = 0.009276869126805915
+gisounddb[616][3] = 0.0131746897038119
+gisounddb[617][3] = 0.006388593027769434
+gisounddb[618][3] = 0.0030674359628487017
+gisounddb[619][3] = 0.005317582042078476
+gisounddb[620][3] = 0.009128767863773838
+gisounddb[621][3] = 0.006982837687780044
+gisounddb[622][3] = 0.0023249394652068624
+gisounddb[623][3] = 0.009307089881817983
+gisounddb[624][3] = 0.005945561826552731
+gisounddb[625][3] = 0.0022069528012926684
+gisounddb[626][3] = 0.010962661287698428
+gisounddb[627][3] = 0.004033648310380017
+gisounddb[628][3] = 0.014471408004724472
+gisounddb[629][3] = 0.00437145143917027
+gisounddb[630][3] = 0.008150692354532914
+gisounddb[631][3] = 0.008165334812251592
+gisounddb[632][3] = 0.00310192219638842
+gisounddb[633][3] = 0.013869053162683245
+gisounddb[634][3] = 0.008022631143476684
+gisounddb[635][3] = 0.00908239217008547
+gisounddb[636][3] = 0.011174240568326053
+gisounddb[637][3] = 0.01015837612645686
+gisounddb[638][3] = 0.0030476508774465003
+gisounddb[639][3] = 0.004511649059132015
+gisounddb[640][3] = 0.002087461513881296
+gisounddb[641][3] = 0.014235924084432415
+gisounddb[642][3] = 0.007902871900628482
+gisounddb[643][3] = 0.004844632517898694
+gisounddb[644][3] = 0.0018956746950473113
+gisounddb[645][3] = 0.0023211162494528683
+gisounddb[646][3] = 0.011661410813061815
+gisounddb[647][3] = 0.003870209284557988
+gisounddb[648][3] = 0.008465566772317355
+gisounddb[649][3] = 0.025338046170815955
+gisounddb[650][3] = 0.0023577810841684007
+gisounddb[651][3] = 0.0044425832646652445
+gisounddb[652][3] = 0.016214927805016988
+gisounddb[653][3] = 0.003844343807621522
+gisounddb[654][3] = 0.006827215071181767
+gisounddb[655][3] = 0.0065291171332305135
+gisounddb[656][3] = 0.005104111839541149
+gisounddb[657][3] = 0.0037569127227481823
+gisounddb[658][3] = 0.0014267133932908836
+gisounddb[659][3] = 0.007252019529865882
+gisounddb[660][3] = 0.003037663243438373
+gisounddb[661][3] = 0.003547579392957334
+gisounddb[662][3] = 0.002723086767725526
+gisounddb[663][3] = 0.00861216389292126
+gisounddb[664][3] = 0.0029494502610725214
+gisounddb[665][3] = 0.003828394445767493
+gisounddb[666][3] = 0.00361507882673771
+gisounddb[667][3] = 0.005897955237632097
+gisounddb[668][3] = 0.0035965288058324996
+gisounddb[669][3] = 0.010994972447901716
+gisounddb[670][3] = 0.005013068567851499
+gisounddb[671][3] = 0.009174168590941601
+gisounddb[672][3] = 0.0031386207059344333
+gisounddb[673][3] = 0.0062389754352276785
+gisounddb[674][3] = 0.010260251789330715
+gisounddb[675][3] = 0.006200820890154181
+gisounddb[676][3] = 0.014439685672985604
+gisounddb[677][3] = 0.014813641779068071
+gisounddb[678][3] = 0.018251903548057054
+gisounddb[679][3] = 0.011181666990941563
+gisounddb[680][3] = 0.011554512148330814
+gisounddb[681][3] = 0.0069372208002718575
+gisounddb[682][3] = 0.011953292698018864
+gisounddb[683][3] = 0.006892391583084265
+gisounddb[684][3] = 0.010053442147549947
+gisounddb[685][3] = 0.02013942333774168
+gisounddb[686][3] = 0.015919164013887106
+gisounddb[687][3] = 0.010751038390147512
+gisounddb[688][3] = 0.011063249609909877
+gisounddb[689][3] = 0.014892026521623407
+gisounddb[690][3] = 0.0206630226933796
+gisounddb[691][3] = 0.005069539013580193
+gisounddb[692][3] = 0.01217868828052402
+gisounddb[693][3] = 0.010671139883783867
+gisounddb[694][3] = 0.010858461740808683
+gisounddb[695][3] = 0.017240489956639495
+gisounddb[696][3] = 0.012214672242238486
+gisounddb[697][3] = 0.015738950432507916
+gisounddb[698][3] = 0.011008893943535419
+gisounddb[699][3] = 0.027901099737017383
+gisounddb[700][3] = 0.009659576840261504
+gisounddb[701][3] = 0.017432214557215258
+gisounddb[702][3] = 0.01338733631620945
+gisounddb[703][3] = 0.00499279471633831
+gisounddb[704][3] = 0.01362640708701679
+gisounddb[705][3] = 0.006238732976448212
+gisounddb[706][3] = 0.010218546313561117
+gisounddb[707][3] = 0.019950509463016766
+gisounddb[708][3] = 0.012045865769150385
+gisounddb[709][3] = 0.017874345197251087
+gisounddb[710][3] = 0.0038784685979807386
+gisounddb[711][3] = 0.012714215581831147
+gisounddb[712][3] = 0.004629362796562973
+gisounddb[713][3] = 0.025374640769456485
+gisounddb[714][3] = 0.01117951436749212
+gisounddb[715][3] = 0.010498584279568832
+gisounddb[716][3] = 0.02788710640174532
+gisounddb[717][3] = 0.010561154680304738
+gisounddb[718][3] = 0.01261177097467849
+gisounddb[719][3] = 0.0045605234252421075
+gisounddb[720][3] = 0.02350015730843291
+gisounddb[721][3] = 0.013830368800276839
+gisounddb[722][3] = 0.02639824785663504
+gisounddb[723][3] = 0.0104386559098187
+gisounddb[724][3] = 0.01079184458758692
+gisounddb[725][3] = 0.01717611137786307
+gisounddb[726][3] = 0.015294976336037732
+gisounddb[727][3] = 0.014279692384103506
+gisounddb[728][3] = 0.017302733871876065
+gisounddb[729][3] = 0.01476157600116635
+gisounddb[730][3] = 0.01855250240341873
+gisounddb[731][3] = 0.016643324245619123
+gisounddb[732][3] = 0.01092348431062898
+gisounddb[733][3] = 0.01700530109200499
+gisounddb[734][3] = 0.005491478866684686
+gisounddb[735][3] = 0.01595248092902744
+gisounddb[736][3] = 0.016292034828290055
+gisounddb[737][3] = 0.01927014831937228
+gisounddb[738][3] = 0.022030921247400508
+gisounddb[739][3] = 0.02668552943903565
+gisounddb[740][3] = 0.0350933610512908
+gisounddb[741][3] = 0.032306160116300726
+gisounddb[742][3] = 0.008604982494786587
+gisounddb[743][3] = 0.01336480817533003
+gisounddb[744][3] = 0.04126349312237479
+gisounddb[745][3] = 0.01688365990720188
+gisounddb[746][3] = 0.013269527006402458
+gisounddb[747][3] = 0.033652114226503896
+gisounddb[748][3] = 0.027834791750810706
+gisounddb[749][3] = 0.029605985206080206
+gisounddb[750][3] = 0.06239406054572747
+gisounddb[751][3] = 0.08125712267509352
+gisounddb[752][3] = 0.04506454378223325
+gisounddb[753][3] = 0.005536491531520234
+gisounddb[754][3] = 0.012594556401336374
+gisounddb[755][3] = 0.04331427362163623
+gisounddb[756][3] = 0.03815882769406725
+gisounddb[757][3] = 0.04311968569833153
+gisounddb[758][3] = 0.01290443924710545
+gisounddb[759][3] = 0.02543259226630102
+gisounddb[760][3] = 0.013807331367675472
+gisounddb[761][3] = 0.051727377750206756
+gisounddb[762][3] = 0.018105933100012774
+gisounddb[763][3] = 0.01503090408823028
+gisounddb[764][3] = 0.04066653651601607
+gisounddb[765][3] = 0.019785030704605577
+gisounddb[766][3] = 0.020513528254503605
+gisounddb[767][3] = 0.021811989949497103
+gisounddb[768][3] = 0.04197170110583874
+gisounddb[769][3] = 0.007787717450314113
+gisounddb[770][3] = 0.022039077612055785
+gisounddb[771][3] = 0.050690316125043836
+gisounddb[772][3] = 0.007433778304895162
+gisounddb[773][3] = 0.018971265918227145
+gisounddb[774][3] = 0.022136217631625935
+gisounddb[775][3] = 0.013278755834230403
+gisounddb[776][3] = 0.013759093616217815
+gisounddb[777][3] = 0.017635557936445133
+gisounddb[778][3] = 0.024434598575899323
+gisounddb[779][3] = 0.015879053121518973
+gisounddb[780][3] = 0.046574736134235205
+gisounddb[781][3] = 0.03014772791895619
+gisounddb[782][3] = 0.04200720014999427
+gisounddb[783][3] = 0.029187231954077273
+gisounddb[784][3] = 0.059910205049415674
+gisounddb[785][3] = 0.015469580011371383
+gisounddb[786][3] = 0.024100469852183604
+gisounddb[787][3] = 0.02826988852054064
+gisounddb[788][3] = 0.05809491488469972
+gisounddb[789][3] = 0.10019443620210781
+gisounddb[790][3] = 0.043839447035064656
+gisounddb[791][3] = 0.06318106891536869
+gisounddb[792][3] = 0.007334783924659835
+gisounddb[793][3] = 0.032038716536893073
+gisounddb[794][3] = 0.014547262965728974
+gisounddb[795][3] = 0.06422454479395664
+gisounddb[796][3] = 0.006876915272420333
+gisounddb[797][3] = 0.009956895446421615
+gisounddb[798][3] = 0.04286474221599859
+gisounddb[799][3] = 0.02140306846514407
+gisounddb[800][3] = 0.009356558528507905
+gisounddb[801][3] = 0.05259149570882242
+gisounddb[802][3] = 0.0767571493050292
+gisounddb[803][3] = 0.01958853005092953
+gisounddb[804][3] = 0.0243970110508286
+gisounddb[805][3] = 0.026324404405504633
+gisounddb[806][3] = 0.011989866771048432
+gisounddb[807][3] = 0.018903519856402574
+gisounddb[808][3] = 0.007644364659092591
+gisounddb[809][3] = 0.02157119117881706
+gisounddb[810][3] = 0.017231388131029365
+gisounddb[811][3] = 0.024060375636874375
+gixdb_pitchreference ftgen 0,0,-512,-2,0
+gixdb_pitchnotes ftgen 0,0,-1191,-2,0
+gixdb_pitchadjust ftgen 0,0,-1191,-2,0
+gixdb_pitchrefoffset ftgen 0,0,-4,-2,-1,-1,0,128
+tabw_i 0,0,gixdb_pitchreference
+tabw_i 6,2,gixdb_pitchreference
+tabw_i 12,4,gixdb_pitchreference
+tabw_i 18,6,gixdb_pitchreference
+tabw_i 24,8,gixdb_pitchreference
+tabw_i 30,10,gixdb_pitchreference
+tabw_i 36,12,gixdb_pitchreference
+tabw_i 42,14,gixdb_pitchreference
+tabw_i 48,16,gixdb_pitchreference
+tabw_i 54,18,gixdb_pitchreference
+tabw_i 60,20,gixdb_pitchreference
+tabw_i 66,22,gixdb_pitchreference
+tabw_i 72,24,gixdb_pitchreference
+tabw_i 78,26,gixdb_pitchreference
+tabw_i 84,28,gixdb_pitchreference
+tabw_i 90,30,gixdb_pitchreference
+tabw_i 96,32,gixdb_pitchreference
+tabw_i 102,34,gixdb_pitchreference
+tabw_i 108,36,gixdb_pitchreference
+tabw_i 114,38,gixdb_pitchreference
+tabw_i 120,40,gixdb_pitchreference
+tabw_i 126,42,gixdb_pitchreference
+tabw_i 132,44,gixdb_pitchreference
+tabw_i 138,46,gixdb_pitchreference
+tabw_i 144,48,gixdb_pitchreference
+tabw_i 150,50,gixdb_pitchreference
+tabw_i 156,52,gixdb_pitchreference
+tabw_i 162,54,gixdb_pitchreference
+tabw_i 168,56,gixdb_pitchreference
+tabw_i 174,58,gixdb_pitchreference
+tabw_i 180,60,gixdb_pitchreference
+tabw_i 186,62,gixdb_pitchreference
+tabw_i 192,64,gixdb_pitchreference
+tabw_i 198,66,gixdb_pitchreference
+tabw_i 204,68,gixdb_pitchreference
+tabw_i 210,70,gixdb_pitchreference
+tabw_i 216,72,gixdb_pitchreference
+tabw_i 222,74,gixdb_pitchreference
+tabw_i 228,76,gixdb_pitchreference
+tabw_i 234,78,gixdb_pitchreference
+tabw_i 240,80,gixdb_pitchreference
+tabw_i 246,82,gixdb_pitchreference
+tabw_i 252,84,gixdb_pitchreference
+tabw_i 258,86,gixdb_pitchreference
+tabw_i 264,88,gixdb_pitchreference
+tabw_i 270,90,gixdb_pitchreference
+tabw_i 276,92,gixdb_pitchreference
+tabw_i 282,94,gixdb_pitchreference
+tabw_i 288,96,gixdb_pitchreference
+tabw_i 294,98,gixdb_pitchreference
+tabw_i 300,100,gixdb_pitchreference
+tabw_i 306,102,gixdb_pitchreference
+tabw_i 312,104,gixdb_pitchreference
+tabw_i 318,106,gixdb_pitchreference
+tabw_i 324,108,gixdb_pitchreference
+tabw_i 330,110,gixdb_pitchreference
+tabw_i 336,112,gixdb_pitchreference
+tabw_i 342,114,gixdb_pitchreference
+tabw_i 348,116,gixdb_pitchreference
+tabw_i 354,118,gixdb_pitchreference
+tabw_i 360,120,gixdb_pitchreference
+tabw_i 366,122,gixdb_pitchreference
+tabw_i 372,124,gixdb_pitchreference
+tabw_i 378,126,gixdb_pitchreference
+tabw_i 384,128,gixdb_pitchreference
+tabw_i 390,130,gixdb_pitchreference
+tabw_i 396,132,gixdb_pitchreference
+tabw_i 402,134,gixdb_pitchreference
+tabw_i 408,136,gixdb_pitchreference
+tabw_i 414,138,gixdb_pitchreference
+tabw_i 425,140,gixdb_pitchreference
+tabw_i 430,142,gixdb_pitchreference
+tabw_i 439,144,gixdb_pitchreference
+tabw_i 443,146,gixdb_pitchreference
+tabw_i 446,148,gixdb_pitchreference
+tabw_i 452,150,gixdb_pitchreference
+tabw_i 455,152,gixdb_pitchreference
+tabw_i 462,154,gixdb_pitchreference
+tabw_i 466,156,gixdb_pitchreference
+tabw_i 474,158,gixdb_pitchreference
+tabw_i 478,160,gixdb_pitchreference
+tabw_i 482,162,gixdb_pitchreference
+tabw_i 490,164,gixdb_pitchreference
+tabw_i 494,166,gixdb_pitchreference
+tabw_i 502,168,gixdb_pitchreference
+tabw_i 506,170,gixdb_pitchreference
+tabw_i 510,172,gixdb_pitchreference
+tabw_i 519,174,gixdb_pitchreference
+tabw_i 524,176,gixdb_pitchreference
+tabw_i 533,178,gixdb_pitchreference
+tabw_i 537,180,gixdb_pitchreference
+tabw_i 544,182,gixdb_pitchreference
+tabw_i 547,184,gixdb_pitchreference
+tabw_i 550,186,gixdb_pitchreference
+tabw_i 553,188,gixdb_pitchreference
+tabw_i 556,190,gixdb_pitchreference
+tabw_i 559,192,gixdb_pitchreference
+tabw_i 562,194,gixdb_pitchreference
+tabw_i 565,196,gixdb_pitchreference
+tabw_i 568,198,gixdb_pitchreference
+tabw_i 571,200,gixdb_pitchreference
+tabw_i 574,202,gixdb_pitchreference
+tabw_i 577,204,gixdb_pitchreference
+tabw_i 580,206,gixdb_pitchreference
+tabw_i 583,208,gixdb_pitchreference
+tabw_i 586,210,gixdb_pitchreference
+tabw_i 589,212,gixdb_pitchreference
+tabw_i 592,214,gixdb_pitchreference
+tabw_i 595,216,gixdb_pitchreference
+tabw_i 598,218,gixdb_pitchreference
+tabw_i 601,220,gixdb_pitchreference
+tabw_i 604,222,gixdb_pitchreference
+tabw_i 607,224,gixdb_pitchreference
+tabw_i 610,226,gixdb_pitchreference
+tabw_i 613,228,gixdb_pitchreference
+tabw_i 616,230,gixdb_pitchreference
+tabw_i 619,232,gixdb_pitchreference
+tabw_i 622,234,gixdb_pitchreference
+tabw_i 625,236,gixdb_pitchreference
+tabw_i 628,238,gixdb_pitchreference
+tabw_i 631,240,gixdb_pitchreference
+tabw_i 634,242,gixdb_pitchreference
+tabw_i 637,244,gixdb_pitchreference
+tabw_i 640,246,gixdb_pitchreference
+tabw_i 643,248,gixdb_pitchreference
+tabw_i 646,250,gixdb_pitchreference
+tabw_i 649,252,gixdb_pitchreference
+tabw_i 652,254,gixdb_pitchreference
+tabw_i 655,256,gixdb_pitchreference
+tabw_i 659,258,gixdb_pitchreference
+tabw_i 663,260,gixdb_pitchreference
+tabw_i 667,262,gixdb_pitchreference
+tabw_i 671,264,gixdb_pitchreference
+tabw_i 675,266,gixdb_pitchreference
+tabw_i 679,268,gixdb_pitchreference
+tabw_i 683,270,gixdb_pitchreference
+tabw_i 687,272,gixdb_pitchreference
+tabw_i 691,274,gixdb_pitchreference
+tabw_i 695,276,gixdb_pitchreference
+tabw_i 699,278,gixdb_pitchreference
+tabw_i 703,280,gixdb_pitchreference
+tabw_i 707,282,gixdb_pitchreference
+tabw_i 711,284,gixdb_pitchreference
+tabw_i 715,286,gixdb_pitchreference
+tabw_i 719,288,gixdb_pitchreference
+tabw_i 723,290,gixdb_pitchreference
+tabw_i 727,292,gixdb_pitchreference
+tabw_i 731,294,gixdb_pitchreference
+tabw_i 735,296,gixdb_pitchreference
+tabw_i 739,298,gixdb_pitchreference
+tabw_i 743,300,gixdb_pitchreference
+tabw_i 747,302,gixdb_pitchreference
+tabw_i 751,304,gixdb_pitchreference
+tabw_i 755,306,gixdb_pitchreference
+tabw_i 759,308,gixdb_pitchreference
+tabw_i 763,310,gixdb_pitchreference
+tabw_i 767,312,gixdb_pitchreference
+tabw_i 771,314,gixdb_pitchreference
+tabw_i 775,316,gixdb_pitchreference
+tabw_i 779,318,gixdb_pitchreference
+tabw_i 783,320,gixdb_pitchreference
+tabw_i 787,322,gixdb_pitchreference
+tabw_i 791,324,gixdb_pitchreference
+tabw_i 795,326,gixdb_pitchreference
+tabw_i 799,328,gixdb_pitchreference
+tabw_i 803,330,gixdb_pitchreference
+tabw_i 807,332,gixdb_pitchreference
+tabw_i 811,334,gixdb_pitchreference
+tabw_i 815,336,gixdb_pitchreference
+tabw_i 819,338,gixdb_pitchreference
+tabw_i 823,340,gixdb_pitchreference
+tabw_i 827,342,gixdb_pitchreference
+tabw_i 831,344,gixdb_pitchreference
+tabw_i 835,346,gixdb_pitchreference
+tabw_i 839,348,gixdb_pitchreference
+tabw_i 843,350,gixdb_pitchreference
+tabw_i 847,352,gixdb_pitchreference
+tabw_i 851,354,gixdb_pitchreference
+tabw_i 855,356,gixdb_pitchreference
+tabw_i 859,358,gixdb_pitchreference
+tabw_i 863,360,gixdb_pitchreference
+tabw_i 867,362,gixdb_pitchreference
+tabw_i 871,364,gixdb_pitchreference
+tabw_i 875,366,gixdb_pitchreference
+tabw_i 879,368,gixdb_pitchreference
+tabw_i 883,370,gixdb_pitchreference
+tabw_i 887,372,gixdb_pitchreference
+tabw_i 891,374,gixdb_pitchreference
+tabw_i 895,376,gixdb_pitchreference
+tabw_i 899,378,gixdb_pitchreference
+tabw_i 907,380,gixdb_pitchreference
+tabw_i 911,382,gixdb_pitchreference
+tabw_i 919,384,gixdb_pitchreference
+tabw_i 923,386,gixdb_pitchreference
+tabw_i 928,388,gixdb_pitchreference
+tabw_i 938,390,gixdb_pitchreference
+tabw_i 943,392,gixdb_pitchreference
+tabw_i 953,394,gixdb_pitchreference
+tabw_i 958,396,gixdb_pitchreference
+tabw_i 968,398,gixdb_pitchreference
+tabw_i 973,400,gixdb_pitchreference
+tabw_i 977,402,gixdb_pitchreference
+tabw_i 985,404,gixdb_pitchreference
+tabw_i 989,406,gixdb_pitchreference
+tabw_i 997,408,gixdb_pitchreference
+tabw_i 1001,410,gixdb_pitchreference
+tabw_i 1006,412,gixdb_pitchreference
+tabw_i 1015,414,gixdb_pitchreference
+tabw_i 1019,416,gixdb_pitchreference
+tabw_i 1028,418,gixdb_pitchreference
+tabw_i 1033,420,gixdb_pitchreference
+tabw_i 1043,422,gixdb_pitchreference
+tabw_i 1048,424,gixdb_pitchreference
+tabw_i 1052,426,gixdb_pitchreference
+tabw_i 1060,428,gixdb_pitchreference
+tabw_i 1064,430,gixdb_pitchreference
+tabw_i 1071,432,gixdb_pitchreference
+tabw_i 1074,434,gixdb_pitchreference
+tabw_i 1077,436,gixdb_pitchreference
+tabw_i 1080,438,gixdb_pitchreference
+tabw_i 1083,440,gixdb_pitchreference
+tabw_i 1086,442,gixdb_pitchreference
+tabw_i 1089,444,gixdb_pitchreference
+tabw_i 1092,446,gixdb_pitchreference
+tabw_i 1095,448,gixdb_pitchreference
+tabw_i 1098,450,gixdb_pitchreference
+tabw_i 1101,452,gixdb_pitchreference
+tabw_i 1104,454,gixdb_pitchreference
+tabw_i 1107,456,gixdb_pitchreference
+tabw_i 1110,458,gixdb_pitchreference
+tabw_i 1113,460,gixdb_pitchreference
+tabw_i 1116,462,gixdb_pitchreference
+tabw_i 1119,464,gixdb_pitchreference
+tabw_i 1122,466,gixdb_pitchreference
+tabw_i 1125,468,gixdb_pitchreference
+tabw_i 1128,470,gixdb_pitchreference
+tabw_i 1131,472,gixdb_pitchreference
+tabw_i 1134,474,gixdb_pitchreference
+tabw_i 1137,476,gixdb_pitchreference
+tabw_i 1140,478,gixdb_pitchreference
+tabw_i 1143,480,gixdb_pitchreference
+tabw_i 1146,482,gixdb_pitchreference
+tabw_i 1149,484,gixdb_pitchreference
+tabw_i 1152,486,gixdb_pitchreference
+tabw_i 1155,488,gixdb_pitchreference
+tabw_i 1158,490,gixdb_pitchreference
+tabw_i 1161,492,gixdb_pitchreference
+tabw_i 1164,494,gixdb_pitchreference
+tabw_i 1167,496,gixdb_pitchreference
+tabw_i 1170,498,gixdb_pitchreference
+tabw_i 1173,500,gixdb_pitchreference
+tabw_i 1176,502,gixdb_pitchreference
+tabw_i 1179,504,gixdb_pitchreference
+tabw_i 1182,506,gixdb_pitchreference
+tabw_i 1185,508,gixdb_pitchreference
+tabw_i 1188,510,gixdb_pitchreference
+tabw_i 5,1,gixdb_pitchreference
+tabw_i 11,3,gixdb_pitchreference
+tabw_i 17,5,gixdb_pitchreference
+tabw_i 23,7,gixdb_pitchreference
+tabw_i 29,9,gixdb_pitchreference
+tabw_i 35,11,gixdb_pitchreference
+tabw_i 41,13,gixdb_pitchreference
+tabw_i 47,15,gixdb_pitchreference
+tabw_i 53,17,gixdb_pitchreference
+tabw_i 59,19,gixdb_pitchreference
+tabw_i 65,21,gixdb_pitchreference
+tabw_i 71,23,gixdb_pitchreference
+tabw_i 77,25,gixdb_pitchreference
+tabw_i 83,27,gixdb_pitchreference
+tabw_i 89,29,gixdb_pitchreference
+tabw_i 95,31,gixdb_pitchreference
+tabw_i 101,33,gixdb_pitchreference
+tabw_i 107,35,gixdb_pitchreference
+tabw_i 113,37,gixdb_pitchreference
+tabw_i 119,39,gixdb_pitchreference
+tabw_i 125,41,gixdb_pitchreference
+tabw_i 131,43,gixdb_pitchreference
+tabw_i 137,45,gixdb_pitchreference
+tabw_i 143,47,gixdb_pitchreference
+tabw_i 149,49,gixdb_pitchreference
+tabw_i 155,51,gixdb_pitchreference
+tabw_i 161,53,gixdb_pitchreference
+tabw_i 167,55,gixdb_pitchreference
+tabw_i 173,57,gixdb_pitchreference
+tabw_i 179,59,gixdb_pitchreference
+tabw_i 185,61,gixdb_pitchreference
+tabw_i 191,63,gixdb_pitchreference
+tabw_i 197,65,gixdb_pitchreference
+tabw_i 203,67,gixdb_pitchreference
+tabw_i 209,69,gixdb_pitchreference
+tabw_i 215,71,gixdb_pitchreference
+tabw_i 221,73,gixdb_pitchreference
+tabw_i 227,75,gixdb_pitchreference
+tabw_i 233,77,gixdb_pitchreference
+tabw_i 239,79,gixdb_pitchreference
+tabw_i 245,81,gixdb_pitchreference
+tabw_i 251,83,gixdb_pitchreference
+tabw_i 257,85,gixdb_pitchreference
+tabw_i 263,87,gixdb_pitchreference
+tabw_i 269,89,gixdb_pitchreference
+tabw_i 275,91,gixdb_pitchreference
+tabw_i 281,93,gixdb_pitchreference
+tabw_i 287,95,gixdb_pitchreference
+tabw_i 293,97,gixdb_pitchreference
+tabw_i 299,99,gixdb_pitchreference
+tabw_i 305,101,gixdb_pitchreference
+tabw_i 311,103,gixdb_pitchreference
+tabw_i 317,105,gixdb_pitchreference
+tabw_i 323,107,gixdb_pitchreference
+tabw_i 329,109,gixdb_pitchreference
+tabw_i 335,111,gixdb_pitchreference
+tabw_i 341,113,gixdb_pitchreference
+tabw_i 347,115,gixdb_pitchreference
+tabw_i 353,117,gixdb_pitchreference
+tabw_i 359,119,gixdb_pitchreference
+tabw_i 365,121,gixdb_pitchreference
+tabw_i 371,123,gixdb_pitchreference
+tabw_i 377,125,gixdb_pitchreference
+tabw_i 383,127,gixdb_pitchreference
+tabw_i 389,129,gixdb_pitchreference
+tabw_i 395,131,gixdb_pitchreference
+tabw_i 401,133,gixdb_pitchreference
+tabw_i 407,135,gixdb_pitchreference
+tabw_i 413,137,gixdb_pitchreference
+tabw_i 424,139,gixdb_pitchreference
+tabw_i 429,141,gixdb_pitchreference
+tabw_i 438,143,gixdb_pitchreference
+tabw_i 442,145,gixdb_pitchreference
+tabw_i 445,147,gixdb_pitchreference
+tabw_i 451,149,gixdb_pitchreference
+tabw_i 454,151,gixdb_pitchreference
+tabw_i 461,153,gixdb_pitchreference
+tabw_i 465,155,gixdb_pitchreference
+tabw_i 473,157,gixdb_pitchreference
+tabw_i 477,159,gixdb_pitchreference
+tabw_i 481,161,gixdb_pitchreference
+tabw_i 489,163,gixdb_pitchreference
+tabw_i 493,165,gixdb_pitchreference
+tabw_i 501,167,gixdb_pitchreference
+tabw_i 505,169,gixdb_pitchreference
+tabw_i 509,171,gixdb_pitchreference
+tabw_i 518,173,gixdb_pitchreference
+tabw_i 523,175,gixdb_pitchreference
+tabw_i 532,177,gixdb_pitchreference
+tabw_i 536,179,gixdb_pitchreference
+tabw_i 543,181,gixdb_pitchreference
+tabw_i 546,183,gixdb_pitchreference
+tabw_i 549,185,gixdb_pitchreference
+tabw_i 552,187,gixdb_pitchreference
+tabw_i 555,189,gixdb_pitchreference
+tabw_i 558,191,gixdb_pitchreference
+tabw_i 561,193,gixdb_pitchreference
+tabw_i 564,195,gixdb_pitchreference
+tabw_i 567,197,gixdb_pitchreference
+tabw_i 570,199,gixdb_pitchreference
+tabw_i 573,201,gixdb_pitchreference
+tabw_i 576,203,gixdb_pitchreference
+tabw_i 579,205,gixdb_pitchreference
+tabw_i 582,207,gixdb_pitchreference
+tabw_i 585,209,gixdb_pitchreference
+tabw_i 588,211,gixdb_pitchreference
+tabw_i 591,213,gixdb_pitchreference
+tabw_i 594,215,gixdb_pitchreference
+tabw_i 597,217,gixdb_pitchreference
+tabw_i 600,219,gixdb_pitchreference
+tabw_i 603,221,gixdb_pitchreference
+tabw_i 606,223,gixdb_pitchreference
+tabw_i 609,225,gixdb_pitchreference
+tabw_i 612,227,gixdb_pitchreference
+tabw_i 615,229,gixdb_pitchreference
+tabw_i 618,231,gixdb_pitchreference
+tabw_i 621,233,gixdb_pitchreference
+tabw_i 624,235,gixdb_pitchreference
+tabw_i 627,237,gixdb_pitchreference
+tabw_i 630,239,gixdb_pitchreference
+tabw_i 633,241,gixdb_pitchreference
+tabw_i 636,243,gixdb_pitchreference
+tabw_i 639,245,gixdb_pitchreference
+tabw_i 642,247,gixdb_pitchreference
+tabw_i 645,249,gixdb_pitchreference
+tabw_i 648,251,gixdb_pitchreference
+tabw_i 651,253,gixdb_pitchreference
+tabw_i 654,255,gixdb_pitchreference
+tabw_i 658,257,gixdb_pitchreference
+tabw_i 662,259,gixdb_pitchreference
+tabw_i 666,261,gixdb_pitchreference
+tabw_i 670,263,gixdb_pitchreference
+tabw_i 674,265,gixdb_pitchreference
+tabw_i 678,267,gixdb_pitchreference
+tabw_i 682,269,gixdb_pitchreference
+tabw_i 686,271,gixdb_pitchreference
+tabw_i 690,273,gixdb_pitchreference
+tabw_i 694,275,gixdb_pitchreference
+tabw_i 698,277,gixdb_pitchreference
+tabw_i 702,279,gixdb_pitchreference
+tabw_i 706,281,gixdb_pitchreference
+tabw_i 710,283,gixdb_pitchreference
+tabw_i 714,285,gixdb_pitchreference
+tabw_i 718,287,gixdb_pitchreference
+tabw_i 722,289,gixdb_pitchreference
+tabw_i 726,291,gixdb_pitchreference
+tabw_i 730,293,gixdb_pitchreference
+tabw_i 734,295,gixdb_pitchreference
+tabw_i 738,297,gixdb_pitchreference
+tabw_i 742,299,gixdb_pitchreference
+tabw_i 746,301,gixdb_pitchreference
+tabw_i 750,303,gixdb_pitchreference
+tabw_i 754,305,gixdb_pitchreference
+tabw_i 758,307,gixdb_pitchreference
+tabw_i 762,309,gixdb_pitchreference
+tabw_i 766,311,gixdb_pitchreference
+tabw_i 770,313,gixdb_pitchreference
+tabw_i 774,315,gixdb_pitchreference
+tabw_i 778,317,gixdb_pitchreference
+tabw_i 782,319,gixdb_pitchreference
+tabw_i 786,321,gixdb_pitchreference
+tabw_i 790,323,gixdb_pitchreference
+tabw_i 794,325,gixdb_pitchreference
+tabw_i 798,327,gixdb_pitchreference
+tabw_i 802,329,gixdb_pitchreference
+tabw_i 806,331,gixdb_pitchreference
+tabw_i 810,333,gixdb_pitchreference
+tabw_i 814,335,gixdb_pitchreference
+tabw_i 818,337,gixdb_pitchreference
+tabw_i 822,339,gixdb_pitchreference
+tabw_i 826,341,gixdb_pitchreference
+tabw_i 830,343,gixdb_pitchreference
+tabw_i 834,345,gixdb_pitchreference
+tabw_i 838,347,gixdb_pitchreference
+tabw_i 842,349,gixdb_pitchreference
+tabw_i 846,351,gixdb_pitchreference
+tabw_i 850,353,gixdb_pitchreference
+tabw_i 854,355,gixdb_pitchreference
+tabw_i 858,357,gixdb_pitchreference
+tabw_i 862,359,gixdb_pitchreference
+tabw_i 866,361,gixdb_pitchreference
+tabw_i 870,363,gixdb_pitchreference
+tabw_i 874,365,gixdb_pitchreference
+tabw_i 878,367,gixdb_pitchreference
+tabw_i 882,369,gixdb_pitchreference
+tabw_i 886,371,gixdb_pitchreference
+tabw_i 890,373,gixdb_pitchreference
+tabw_i 894,375,gixdb_pitchreference
+tabw_i 898,377,gixdb_pitchreference
+tabw_i 906,379,gixdb_pitchreference
+tabw_i 910,381,gixdb_pitchreference
+tabw_i 918,383,gixdb_pitchreference
+tabw_i 922,385,gixdb_pitchreference
+tabw_i 927,387,gixdb_pitchreference
+tabw_i 937,389,gixdb_pitchreference
+tabw_i 942,391,gixdb_pitchreference
+tabw_i 952,393,gixdb_pitchreference
+tabw_i 957,395,gixdb_pitchreference
+tabw_i 967,397,gixdb_pitchreference
+tabw_i 972,399,gixdb_pitchreference
+tabw_i 976,401,gixdb_pitchreference
+tabw_i 984,403,gixdb_pitchreference
+tabw_i 988,405,gixdb_pitchreference
+tabw_i 996,407,gixdb_pitchreference
+tabw_i 1000,409,gixdb_pitchreference
+tabw_i 1005,411,gixdb_pitchreference
+tabw_i 1014,413,gixdb_pitchreference
+tabw_i 1018,415,gixdb_pitchreference
+tabw_i 1027,417,gixdb_pitchreference
+tabw_i 1032,419,gixdb_pitchreference
+tabw_i 1042,421,gixdb_pitchreference
+tabw_i 1047,423,gixdb_pitchreference
+tabw_i 1051,425,gixdb_pitchreference
+tabw_i 1059,427,gixdb_pitchreference
+tabw_i 1063,429,gixdb_pitchreference
+tabw_i 1070,431,gixdb_pitchreference
+tabw_i 1073,433,gixdb_pitchreference
+tabw_i 1076,435,gixdb_pitchreference
+tabw_i 1079,437,gixdb_pitchreference
+tabw_i 1082,439,gixdb_pitchreference
+tabw_i 1085,441,gixdb_pitchreference
+tabw_i 1088,443,gixdb_pitchreference
+tabw_i 1091,445,gixdb_pitchreference
+tabw_i 1094,447,gixdb_pitchreference
+tabw_i 1097,449,gixdb_pitchreference
+tabw_i 1100,451,gixdb_pitchreference
+tabw_i 1103,453,gixdb_pitchreference
+tabw_i 1106,455,gixdb_pitchreference
+tabw_i 1109,457,gixdb_pitchreference
+tabw_i 1112,459,gixdb_pitchreference
+tabw_i 1115,461,gixdb_pitchreference
+tabw_i 1118,463,gixdb_pitchreference
+tabw_i 1121,465,gixdb_pitchreference
+tabw_i 1124,467,gixdb_pitchreference
+tabw_i 1127,469,gixdb_pitchreference
+tabw_i 1130,471,gixdb_pitchreference
+tabw_i 1133,473,gixdb_pitchreference
+tabw_i 1136,475,gixdb_pitchreference
+tabw_i 1139,477,gixdb_pitchreference
+tabw_i 1142,479,gixdb_pitchreference
+tabw_i 1145,481,gixdb_pitchreference
+tabw_i 1148,483,gixdb_pitchreference
+tabw_i 1151,485,gixdb_pitchreference
+tabw_i 1154,487,gixdb_pitchreference
+tabw_i 1157,489,gixdb_pitchreference
+tabw_i 1160,491,gixdb_pitchreference
+tabw_i 1163,493,gixdb_pitchreference
+tabw_i 1166,495,gixdb_pitchreference
+tabw_i 1169,497,gixdb_pitchreference
+tabw_i 1172,499,gixdb_pitchreference
+tabw_i 1175,501,gixdb_pitchreference
+tabw_i 1178,503,gixdb_pitchreference
+tabw_i 1181,505,gixdb_pitchreference
+tabw_i 1184,507,gixdb_pitchreference
+tabw_i 1187,509,gixdb_pitchreference
+tabw_i 1190,511,gixdb_pitchreference
+tabw_i 684,0,gixdb_pitchnotes
+tabw_i 690,1,gixdb_pitchnotes
+tabw_i 691,2,gixdb_pitchnotes
+tabw_i 705,3,gixdb_pitchnotes
+tabw_i 731,4,gixdb_pitchnotes
+tabw_i 736,5,gixdb_pitchnotes
+tabw_i 684,6,gixdb_pitchnotes
+tabw_i 690,7,gixdb_pitchnotes
+tabw_i 691,8,gixdb_pitchnotes
+tabw_i 705,9,gixdb_pitchnotes
+tabw_i 731,10,gixdb_pitchnotes
+tabw_i 736,11,gixdb_pitchnotes
+tabw_i 684,12,gixdb_pitchnotes
+tabw_i 690,13,gixdb_pitchnotes
+tabw_i 691,14,gixdb_pitchnotes
+tabw_i 705,15,gixdb_pitchnotes
+tabw_i 731,16,gixdb_pitchnotes
+tabw_i 736,17,gixdb_pitchnotes
+tabw_i 684,18,gixdb_pitchnotes
+tabw_i 690,19,gixdb_pitchnotes
+tabw_i 691,20,gixdb_pitchnotes
+tabw_i 705,21,gixdb_pitchnotes
+tabw_i 731,22,gixdb_pitchnotes
+tabw_i 736,23,gixdb_pitchnotes
+tabw_i 684,24,gixdb_pitchnotes
+tabw_i 690,25,gixdb_pitchnotes
+tabw_i 691,26,gixdb_pitchnotes
+tabw_i 705,27,gixdb_pitchnotes
+tabw_i 731,28,gixdb_pitchnotes
+tabw_i 736,29,gixdb_pitchnotes
+tabw_i 684,30,gixdb_pitchnotes
+tabw_i 690,31,gixdb_pitchnotes
+tabw_i 691,32,gixdb_pitchnotes
+tabw_i 705,33,gixdb_pitchnotes
+tabw_i 731,34,gixdb_pitchnotes
+tabw_i 736,35,gixdb_pitchnotes
+tabw_i 684,36,gixdb_pitchnotes
+tabw_i 690,37,gixdb_pitchnotes
+tabw_i 691,38,gixdb_pitchnotes
+tabw_i 705,39,gixdb_pitchnotes
+tabw_i 731,40,gixdb_pitchnotes
+tabw_i 736,41,gixdb_pitchnotes
+tabw_i 684,42,gixdb_pitchnotes
+tabw_i 690,43,gixdb_pitchnotes
+tabw_i 691,44,gixdb_pitchnotes
+tabw_i 705,45,gixdb_pitchnotes
+tabw_i 731,46,gixdb_pitchnotes
+tabw_i 736,47,gixdb_pitchnotes
+tabw_i 684,48,gixdb_pitchnotes
+tabw_i 690,49,gixdb_pitchnotes
+tabw_i 691,50,gixdb_pitchnotes
+tabw_i 705,51,gixdb_pitchnotes
+tabw_i 731,52,gixdb_pitchnotes
+tabw_i 736,53,gixdb_pitchnotes
+tabw_i 684,54,gixdb_pitchnotes
+tabw_i 690,55,gixdb_pitchnotes
+tabw_i 691,56,gixdb_pitchnotes
+tabw_i 705,57,gixdb_pitchnotes
+tabw_i 731,58,gixdb_pitchnotes
+tabw_i 736,59,gixdb_pitchnotes
+tabw_i 684,60,gixdb_pitchnotes
+tabw_i 690,61,gixdb_pitchnotes
+tabw_i 691,62,gixdb_pitchnotes
+tabw_i 705,63,gixdb_pitchnotes
+tabw_i 731,64,gixdb_pitchnotes
+tabw_i 736,65,gixdb_pitchnotes
+tabw_i 684,66,gixdb_pitchnotes
+tabw_i 690,67,gixdb_pitchnotes
+tabw_i 691,68,gixdb_pitchnotes
+tabw_i 705,69,gixdb_pitchnotes
+tabw_i 731,70,gixdb_pitchnotes
+tabw_i 736,71,gixdb_pitchnotes
+tabw_i 684,72,gixdb_pitchnotes
+tabw_i 690,73,gixdb_pitchnotes
+tabw_i 691,74,gixdb_pitchnotes
+tabw_i 705,75,gixdb_pitchnotes
+tabw_i 731,76,gixdb_pitchnotes
+tabw_i 736,77,gixdb_pitchnotes
+tabw_i 684,78,gixdb_pitchnotes
+tabw_i 690,79,gixdb_pitchnotes
+tabw_i 691,80,gixdb_pitchnotes
+tabw_i 705,81,gixdb_pitchnotes
+tabw_i 731,82,gixdb_pitchnotes
+tabw_i 736,83,gixdb_pitchnotes
+tabw_i 684,84,gixdb_pitchnotes
+tabw_i 690,85,gixdb_pitchnotes
+tabw_i 691,86,gixdb_pitchnotes
+tabw_i 705,87,gixdb_pitchnotes
+tabw_i 731,88,gixdb_pitchnotes
+tabw_i 736,89,gixdb_pitchnotes
+tabw_i 684,90,gixdb_pitchnotes
+tabw_i 690,91,gixdb_pitchnotes
+tabw_i 691,92,gixdb_pitchnotes
+tabw_i 705,93,gixdb_pitchnotes
+tabw_i 731,94,gixdb_pitchnotes
+tabw_i 736,95,gixdb_pitchnotes
+tabw_i 684,96,gixdb_pitchnotes
+tabw_i 690,97,gixdb_pitchnotes
+tabw_i 691,98,gixdb_pitchnotes
+tabw_i 705,99,gixdb_pitchnotes
+tabw_i 731,100,gixdb_pitchnotes
+tabw_i 736,101,gixdb_pitchnotes
+tabw_i 684,102,gixdb_pitchnotes
+tabw_i 690,103,gixdb_pitchnotes
+tabw_i 691,104,gixdb_pitchnotes
+tabw_i 705,105,gixdb_pitchnotes
+tabw_i 731,106,gixdb_pitchnotes
+tabw_i 736,107,gixdb_pitchnotes
+tabw_i 684,108,gixdb_pitchnotes
+tabw_i 690,109,gixdb_pitchnotes
+tabw_i 691,110,gixdb_pitchnotes
+tabw_i 705,111,gixdb_pitchnotes
+tabw_i 731,112,gixdb_pitchnotes
+tabw_i 736,113,gixdb_pitchnotes
+tabw_i 684,114,gixdb_pitchnotes
+tabw_i 690,115,gixdb_pitchnotes
+tabw_i 691,116,gixdb_pitchnotes
+tabw_i 705,117,gixdb_pitchnotes
+tabw_i 731,118,gixdb_pitchnotes
+tabw_i 736,119,gixdb_pitchnotes
+tabw_i 684,120,gixdb_pitchnotes
+tabw_i 690,121,gixdb_pitchnotes
+tabw_i 691,122,gixdb_pitchnotes
+tabw_i 705,123,gixdb_pitchnotes
+tabw_i 731,124,gixdb_pitchnotes
+tabw_i 736,125,gixdb_pitchnotes
+tabw_i 684,126,gixdb_pitchnotes
+tabw_i 690,127,gixdb_pitchnotes
+tabw_i 691,128,gixdb_pitchnotes
+tabw_i 705,129,gixdb_pitchnotes
+tabw_i 731,130,gixdb_pitchnotes
+tabw_i 736,131,gixdb_pitchnotes
+tabw_i 684,132,gixdb_pitchnotes
+tabw_i 690,133,gixdb_pitchnotes
+tabw_i 691,134,gixdb_pitchnotes
+tabw_i 705,135,gixdb_pitchnotes
+tabw_i 731,136,gixdb_pitchnotes
+tabw_i 736,137,gixdb_pitchnotes
+tabw_i 684,138,gixdb_pitchnotes
+tabw_i 690,139,gixdb_pitchnotes
+tabw_i 691,140,gixdb_pitchnotes
+tabw_i 705,141,gixdb_pitchnotes
+tabw_i 731,142,gixdb_pitchnotes
+tabw_i 736,143,gixdb_pitchnotes
+tabw_i 684,144,gixdb_pitchnotes
+tabw_i 690,145,gixdb_pitchnotes
+tabw_i 691,146,gixdb_pitchnotes
+tabw_i 705,147,gixdb_pitchnotes
+tabw_i 731,148,gixdb_pitchnotes
+tabw_i 736,149,gixdb_pitchnotes
+tabw_i 684,150,gixdb_pitchnotes
+tabw_i 690,151,gixdb_pitchnotes
+tabw_i 691,152,gixdb_pitchnotes
+tabw_i 705,153,gixdb_pitchnotes
+tabw_i 731,154,gixdb_pitchnotes
+tabw_i 736,155,gixdb_pitchnotes
+tabw_i 684,156,gixdb_pitchnotes
+tabw_i 690,157,gixdb_pitchnotes
+tabw_i 691,158,gixdb_pitchnotes
+tabw_i 705,159,gixdb_pitchnotes
+tabw_i 731,160,gixdb_pitchnotes
+tabw_i 736,161,gixdb_pitchnotes
+tabw_i 684,162,gixdb_pitchnotes
+tabw_i 690,163,gixdb_pitchnotes
+tabw_i 691,164,gixdb_pitchnotes
+tabw_i 705,165,gixdb_pitchnotes
+tabw_i 731,166,gixdb_pitchnotes
+tabw_i 736,167,gixdb_pitchnotes
+tabw_i 684,168,gixdb_pitchnotes
+tabw_i 690,169,gixdb_pitchnotes
+tabw_i 691,170,gixdb_pitchnotes
+tabw_i 705,171,gixdb_pitchnotes
+tabw_i 731,172,gixdb_pitchnotes
+tabw_i 736,173,gixdb_pitchnotes
+tabw_i 684,174,gixdb_pitchnotes
+tabw_i 690,175,gixdb_pitchnotes
+tabw_i 691,176,gixdb_pitchnotes
+tabw_i 705,177,gixdb_pitchnotes
+tabw_i 731,178,gixdb_pitchnotes
+tabw_i 736,179,gixdb_pitchnotes
+tabw_i 684,180,gixdb_pitchnotes
+tabw_i 690,181,gixdb_pitchnotes
+tabw_i 691,182,gixdb_pitchnotes
+tabw_i 705,183,gixdb_pitchnotes
+tabw_i 731,184,gixdb_pitchnotes
+tabw_i 736,185,gixdb_pitchnotes
+tabw_i 684,186,gixdb_pitchnotes
+tabw_i 690,187,gixdb_pitchnotes
+tabw_i 691,188,gixdb_pitchnotes
+tabw_i 705,189,gixdb_pitchnotes
+tabw_i 731,190,gixdb_pitchnotes
+tabw_i 736,191,gixdb_pitchnotes
+tabw_i 684,192,gixdb_pitchnotes
+tabw_i 690,193,gixdb_pitchnotes
+tabw_i 691,194,gixdb_pitchnotes
+tabw_i 705,195,gixdb_pitchnotes
+tabw_i 731,196,gixdb_pitchnotes
+tabw_i 736,197,gixdb_pitchnotes
+tabw_i 684,198,gixdb_pitchnotes
+tabw_i 690,199,gixdb_pitchnotes
+tabw_i 691,200,gixdb_pitchnotes
+tabw_i 705,201,gixdb_pitchnotes
+tabw_i 731,202,gixdb_pitchnotes
+tabw_i 736,203,gixdb_pitchnotes
+tabw_i 684,204,gixdb_pitchnotes
+tabw_i 690,205,gixdb_pitchnotes
+tabw_i 691,206,gixdb_pitchnotes
+tabw_i 705,207,gixdb_pitchnotes
+tabw_i 731,208,gixdb_pitchnotes
+tabw_i 736,209,gixdb_pitchnotes
+tabw_i 684,210,gixdb_pitchnotes
+tabw_i 690,211,gixdb_pitchnotes
+tabw_i 691,212,gixdb_pitchnotes
+tabw_i 705,213,gixdb_pitchnotes
+tabw_i 731,214,gixdb_pitchnotes
+tabw_i 736,215,gixdb_pitchnotes
+tabw_i 684,216,gixdb_pitchnotes
+tabw_i 690,217,gixdb_pitchnotes
+tabw_i 691,218,gixdb_pitchnotes
+tabw_i 705,219,gixdb_pitchnotes
+tabw_i 731,220,gixdb_pitchnotes
+tabw_i 736,221,gixdb_pitchnotes
+tabw_i 684,222,gixdb_pitchnotes
+tabw_i 690,223,gixdb_pitchnotes
+tabw_i 691,224,gixdb_pitchnotes
+tabw_i 705,225,gixdb_pitchnotes
+tabw_i 731,226,gixdb_pitchnotes
+tabw_i 736,227,gixdb_pitchnotes
+tabw_i 684,228,gixdb_pitchnotes
+tabw_i 690,229,gixdb_pitchnotes
+tabw_i 691,230,gixdb_pitchnotes
+tabw_i 705,231,gixdb_pitchnotes
+tabw_i 731,232,gixdb_pitchnotes
+tabw_i 736,233,gixdb_pitchnotes
+tabw_i 684,234,gixdb_pitchnotes
+tabw_i 690,235,gixdb_pitchnotes
+tabw_i 691,236,gixdb_pitchnotes
+tabw_i 705,237,gixdb_pitchnotes
+tabw_i 731,238,gixdb_pitchnotes
+tabw_i 736,239,gixdb_pitchnotes
+tabw_i 684,240,gixdb_pitchnotes
+tabw_i 690,241,gixdb_pitchnotes
+tabw_i 691,242,gixdb_pitchnotes
+tabw_i 705,243,gixdb_pitchnotes
+tabw_i 731,244,gixdb_pitchnotes
+tabw_i 736,245,gixdb_pitchnotes
+tabw_i 684,246,gixdb_pitchnotes
+tabw_i 690,247,gixdb_pitchnotes
+tabw_i 691,248,gixdb_pitchnotes
+tabw_i 705,249,gixdb_pitchnotes
+tabw_i 731,250,gixdb_pitchnotes
+tabw_i 736,251,gixdb_pitchnotes
+tabw_i 684,252,gixdb_pitchnotes
+tabw_i 690,253,gixdb_pitchnotes
+tabw_i 691,254,gixdb_pitchnotes
+tabw_i 705,255,gixdb_pitchnotes
+tabw_i 731,256,gixdb_pitchnotes
+tabw_i 736,257,gixdb_pitchnotes
+tabw_i 684,258,gixdb_pitchnotes
+tabw_i 690,259,gixdb_pitchnotes
+tabw_i 691,260,gixdb_pitchnotes
+tabw_i 705,261,gixdb_pitchnotes
+tabw_i 731,262,gixdb_pitchnotes
+tabw_i 736,263,gixdb_pitchnotes
+tabw_i 684,264,gixdb_pitchnotes
+tabw_i 690,265,gixdb_pitchnotes
+tabw_i 691,266,gixdb_pitchnotes
+tabw_i 705,267,gixdb_pitchnotes
+tabw_i 731,268,gixdb_pitchnotes
+tabw_i 736,269,gixdb_pitchnotes
+tabw_i 684,270,gixdb_pitchnotes
+tabw_i 690,271,gixdb_pitchnotes
+tabw_i 691,272,gixdb_pitchnotes
+tabw_i 705,273,gixdb_pitchnotes
+tabw_i 731,274,gixdb_pitchnotes
+tabw_i 736,275,gixdb_pitchnotes
+tabw_i 684,276,gixdb_pitchnotes
+tabw_i 690,277,gixdb_pitchnotes
+tabw_i 691,278,gixdb_pitchnotes
+tabw_i 705,279,gixdb_pitchnotes
+tabw_i 731,280,gixdb_pitchnotes
+tabw_i 736,281,gixdb_pitchnotes
+tabw_i 684,282,gixdb_pitchnotes
+tabw_i 690,283,gixdb_pitchnotes
+tabw_i 691,284,gixdb_pitchnotes
+tabw_i 705,285,gixdb_pitchnotes
+tabw_i 731,286,gixdb_pitchnotes
+tabw_i 736,287,gixdb_pitchnotes
+tabw_i 684,288,gixdb_pitchnotes
+tabw_i 690,289,gixdb_pitchnotes
+tabw_i 691,290,gixdb_pitchnotes
+tabw_i 705,291,gixdb_pitchnotes
+tabw_i 731,292,gixdb_pitchnotes
+tabw_i 736,293,gixdb_pitchnotes
+tabw_i 684,294,gixdb_pitchnotes
+tabw_i 690,295,gixdb_pitchnotes
+tabw_i 691,296,gixdb_pitchnotes
+tabw_i 705,297,gixdb_pitchnotes
+tabw_i 731,298,gixdb_pitchnotes
+tabw_i 736,299,gixdb_pitchnotes
+tabw_i 684,300,gixdb_pitchnotes
+tabw_i 690,301,gixdb_pitchnotes
+tabw_i 691,302,gixdb_pitchnotes
+tabw_i 705,303,gixdb_pitchnotes
+tabw_i 731,304,gixdb_pitchnotes
+tabw_i 736,305,gixdb_pitchnotes
+tabw_i 684,306,gixdb_pitchnotes
+tabw_i 690,307,gixdb_pitchnotes
+tabw_i 691,308,gixdb_pitchnotes
+tabw_i 705,309,gixdb_pitchnotes
+tabw_i 731,310,gixdb_pitchnotes
+tabw_i 736,311,gixdb_pitchnotes
+tabw_i 684,312,gixdb_pitchnotes
+tabw_i 690,313,gixdb_pitchnotes
+tabw_i 691,314,gixdb_pitchnotes
+tabw_i 705,315,gixdb_pitchnotes
+tabw_i 731,316,gixdb_pitchnotes
+tabw_i 736,317,gixdb_pitchnotes
+tabw_i 684,318,gixdb_pitchnotes
+tabw_i 690,319,gixdb_pitchnotes
+tabw_i 691,320,gixdb_pitchnotes
+tabw_i 705,321,gixdb_pitchnotes
+tabw_i 731,322,gixdb_pitchnotes
+tabw_i 736,323,gixdb_pitchnotes
+tabw_i 684,324,gixdb_pitchnotes
+tabw_i 690,325,gixdb_pitchnotes
+tabw_i 691,326,gixdb_pitchnotes
+tabw_i 705,327,gixdb_pitchnotes
+tabw_i 731,328,gixdb_pitchnotes
+tabw_i 736,329,gixdb_pitchnotes
+tabw_i 684,330,gixdb_pitchnotes
+tabw_i 690,331,gixdb_pitchnotes
+tabw_i 691,332,gixdb_pitchnotes
+tabw_i 705,333,gixdb_pitchnotes
+tabw_i 731,334,gixdb_pitchnotes
+tabw_i 736,335,gixdb_pitchnotes
+tabw_i 684,336,gixdb_pitchnotes
+tabw_i 690,337,gixdb_pitchnotes
+tabw_i 691,338,gixdb_pitchnotes
+tabw_i 705,339,gixdb_pitchnotes
+tabw_i 731,340,gixdb_pitchnotes
+tabw_i 736,341,gixdb_pitchnotes
+tabw_i 684,342,gixdb_pitchnotes
+tabw_i 690,343,gixdb_pitchnotes
+tabw_i 691,344,gixdb_pitchnotes
+tabw_i 705,345,gixdb_pitchnotes
+tabw_i 731,346,gixdb_pitchnotes
+tabw_i 736,347,gixdb_pitchnotes
+tabw_i 684,348,gixdb_pitchnotes
+tabw_i 690,349,gixdb_pitchnotes
+tabw_i 691,350,gixdb_pitchnotes
+tabw_i 705,351,gixdb_pitchnotes
+tabw_i 731,352,gixdb_pitchnotes
+tabw_i 736,353,gixdb_pitchnotes
+tabw_i 684,354,gixdb_pitchnotes
+tabw_i 690,355,gixdb_pitchnotes
+tabw_i 691,356,gixdb_pitchnotes
+tabw_i 705,357,gixdb_pitchnotes
+tabw_i 731,358,gixdb_pitchnotes
+tabw_i 736,359,gixdb_pitchnotes
+tabw_i 684,360,gixdb_pitchnotes
+tabw_i 690,361,gixdb_pitchnotes
+tabw_i 691,362,gixdb_pitchnotes
+tabw_i 705,363,gixdb_pitchnotes
+tabw_i 731,364,gixdb_pitchnotes
+tabw_i 736,365,gixdb_pitchnotes
+tabw_i 684,366,gixdb_pitchnotes
+tabw_i 690,367,gixdb_pitchnotes
+tabw_i 691,368,gixdb_pitchnotes
+tabw_i 705,369,gixdb_pitchnotes
+tabw_i 731,370,gixdb_pitchnotes
+tabw_i 736,371,gixdb_pitchnotes
+tabw_i 684,372,gixdb_pitchnotes
+tabw_i 690,373,gixdb_pitchnotes
+tabw_i 691,374,gixdb_pitchnotes
+tabw_i 705,375,gixdb_pitchnotes
+tabw_i 731,376,gixdb_pitchnotes
+tabw_i 736,377,gixdb_pitchnotes
+tabw_i 684,378,gixdb_pitchnotes
+tabw_i 690,379,gixdb_pitchnotes
+tabw_i 691,380,gixdb_pitchnotes
+tabw_i 705,381,gixdb_pitchnotes
+tabw_i 731,382,gixdb_pitchnotes
+tabw_i 736,383,gixdb_pitchnotes
+tabw_i 684,384,gixdb_pitchnotes
+tabw_i 690,385,gixdb_pitchnotes
+tabw_i 691,386,gixdb_pitchnotes
+tabw_i 705,387,gixdb_pitchnotes
+tabw_i 731,388,gixdb_pitchnotes
+tabw_i 736,389,gixdb_pitchnotes
+tabw_i 684,390,gixdb_pitchnotes
+tabw_i 690,391,gixdb_pitchnotes
+tabw_i 691,392,gixdb_pitchnotes
+tabw_i 705,393,gixdb_pitchnotes
+tabw_i 731,394,gixdb_pitchnotes
+tabw_i 736,395,gixdb_pitchnotes
+tabw_i 684,396,gixdb_pitchnotes
+tabw_i 690,397,gixdb_pitchnotes
+tabw_i 691,398,gixdb_pitchnotes
+tabw_i 705,399,gixdb_pitchnotes
+tabw_i 731,400,gixdb_pitchnotes
+tabw_i 736,401,gixdb_pitchnotes
+tabw_i 684,402,gixdb_pitchnotes
+tabw_i 690,403,gixdb_pitchnotes
+tabw_i 691,404,gixdb_pitchnotes
+tabw_i 705,405,gixdb_pitchnotes
+tabw_i 731,406,gixdb_pitchnotes
+tabw_i 736,407,gixdb_pitchnotes
+tabw_i 684,408,gixdb_pitchnotes
+tabw_i 690,409,gixdb_pitchnotes
+tabw_i 691,410,gixdb_pitchnotes
+tabw_i 705,411,gixdb_pitchnotes
+tabw_i 731,412,gixdb_pitchnotes
+tabw_i 736,413,gixdb_pitchnotes
+tabw_i 684,414,gixdb_pitchnotes
+tabw_i 690,415,gixdb_pitchnotes
+tabw_i 691,416,gixdb_pitchnotes
+tabw_i 693,417,gixdb_pitchnotes
+tabw_i 698,418,gixdb_pitchnotes
+tabw_i 705,419,gixdb_pitchnotes
+tabw_i 714,420,gixdb_pitchnotes
+tabw_i 723,421,gixdb_pitchnotes
+tabw_i 724,422,gixdb_pitchnotes
+tabw_i 731,423,gixdb_pitchnotes
+tabw_i 736,424,gixdb_pitchnotes
+tabw_i 693,425,gixdb_pitchnotes
+tabw_i 698,426,gixdb_pitchnotes
+tabw_i 714,427,gixdb_pitchnotes
+tabw_i 723,428,gixdb_pitchnotes
+tabw_i 724,429,gixdb_pitchnotes
+tabw_i 693,430,gixdb_pitchnotes
+tabw_i 698,431,gixdb_pitchnotes
+tabw_i 703,432,gixdb_pitchnotes
+tabw_i 710,433,gixdb_pitchnotes
+tabw_i 712,434,gixdb_pitchnotes
+tabw_i 714,435,gixdb_pitchnotes
+tabw_i 719,436,gixdb_pitchnotes
+tabw_i 723,437,gixdb_pitchnotes
+tabw_i 724,438,gixdb_pitchnotes
+tabw_i 703,439,gixdb_pitchnotes
+tabw_i 710,440,gixdb_pitchnotes
+tabw_i 712,441,gixdb_pitchnotes
+tabw_i 719,442,gixdb_pitchnotes
+tabw_i 679,443,gixdb_pitchnotes
+tabw_i 694,444,gixdb_pitchnotes
+tabw_i 715,445,gixdb_pitchnotes
+tabw_i 679,446,gixdb_pitchnotes
+tabw_i 681,447,gixdb_pitchnotes
+tabw_i 683,448,gixdb_pitchnotes
+tabw_i 694,449,gixdb_pitchnotes
+tabw_i 715,450,gixdb_pitchnotes
+tabw_i 734,451,gixdb_pitchnotes
+tabw_i 681,452,gixdb_pitchnotes
+tabw_i 683,453,gixdb_pitchnotes
+tabw_i 734,454,gixdb_pitchnotes
+tabw_i 680,455,gixdb_pitchnotes
+tabw_i 681,456,gixdb_pitchnotes
+tabw_i 683,457,gixdb_pitchnotes
+tabw_i 692,458,gixdb_pitchnotes
+tabw_i 717,459,gixdb_pitchnotes
+tabw_i 718,460,gixdb_pitchnotes
+tabw_i 734,461,gixdb_pitchnotes
+tabw_i 680,462,gixdb_pitchnotes
+tabw_i 692,463,gixdb_pitchnotes
+tabw_i 717,464,gixdb_pitchnotes
+tabw_i 718,465,gixdb_pitchnotes
+tabw_i 680,466,gixdb_pitchnotes
+tabw_i 692,467,gixdb_pitchnotes
+tabw_i 696,468,gixdb_pitchnotes
+tabw_i 704,469,gixdb_pitchnotes
+tabw_i 717,470,gixdb_pitchnotes
+tabw_i 718,471,gixdb_pitchnotes
+tabw_i 727,472,gixdb_pitchnotes
+tabw_i 735,473,gixdb_pitchnotes
+tabw_i 696,474,gixdb_pitchnotes
+tabw_i 704,475,gixdb_pitchnotes
+tabw_i 727,476,gixdb_pitchnotes
+tabw_i 735,477,gixdb_pitchnotes
+tabw_i 687,478,gixdb_pitchnotes
+tabw_i 700,479,gixdb_pitchnotes
+tabw_i 729,480,gixdb_pitchnotes
+tabw_i 732,481,gixdb_pitchnotes
+tabw_i 687,482,gixdb_pitchnotes
+tabw_i 697,483,gixdb_pitchnotes
+tabw_i 700,484,gixdb_pitchnotes
+tabw_i 702,485,gixdb_pitchnotes
+tabw_i 708,486,gixdb_pitchnotes
+tabw_i 711,487,gixdb_pitchnotes
+tabw_i 729,488,gixdb_pitchnotes
+tabw_i 732,489,gixdb_pitchnotes
+tabw_i 697,490,gixdb_pitchnotes
+tabw_i 702,491,gixdb_pitchnotes
+tabw_i 708,492,gixdb_pitchnotes
+tabw_i 711,493,gixdb_pitchnotes
+tabw_i 697,494,gixdb_pitchnotes
+tabw_i 702,495,gixdb_pitchnotes
+tabw_i 708,496,gixdb_pitchnotes
+tabw_i 709,497,gixdb_pitchnotes
+tabw_i 711,498,gixdb_pitchnotes
+tabw_i 730,499,gixdb_pitchnotes
+tabw_i 733,500,gixdb_pitchnotes
+tabw_i 737,501,gixdb_pitchnotes
+tabw_i 709,502,gixdb_pitchnotes
+tabw_i 730,503,gixdb_pitchnotes
+tabw_i 733,504,gixdb_pitchnotes
+tabw_i 737,505,gixdb_pitchnotes
+tabw_i 686,506,gixdb_pitchnotes
+tabw_i 689,507,gixdb_pitchnotes
+tabw_i 695,508,gixdb_pitchnotes
+tabw_i 726,509,gixdb_pitchnotes
+tabw_i 686,510,gixdb_pitchnotes
+tabw_i 689,511,gixdb_pitchnotes
+tabw_i 695,512,gixdb_pitchnotes
+tabw_i 699,513,gixdb_pitchnotes
+tabw_i 713,514,gixdb_pitchnotes
+tabw_i 716,515,gixdb_pitchnotes
+tabw_i 720,516,gixdb_pitchnotes
+tabw_i 722,517,gixdb_pitchnotes
+tabw_i 726,518,gixdb_pitchnotes
+tabw_i 699,519,gixdb_pitchnotes
+tabw_i 713,520,gixdb_pitchnotes
+tabw_i 716,521,gixdb_pitchnotes
+tabw_i 720,522,gixdb_pitchnotes
+tabw_i 722,523,gixdb_pitchnotes
+tabw_i 678,524,gixdb_pitchnotes
+tabw_i 699,525,gixdb_pitchnotes
+tabw_i 707,526,gixdb_pitchnotes
+tabw_i 713,527,gixdb_pitchnotes
+tabw_i 716,528,gixdb_pitchnotes
+tabw_i 720,529,gixdb_pitchnotes
+tabw_i 722,530,gixdb_pitchnotes
+tabw_i 725,531,gixdb_pitchnotes
+tabw_i 728,532,gixdb_pitchnotes
+tabw_i 678,533,gixdb_pitchnotes
+tabw_i 707,534,gixdb_pitchnotes
+tabw_i 725,535,gixdb_pitchnotes
+tabw_i 728,536,gixdb_pitchnotes
+tabw_i 678,537,gixdb_pitchnotes
+tabw_i 685,538,gixdb_pitchnotes
+tabw_i 701,539,gixdb_pitchnotes
+tabw_i 707,540,gixdb_pitchnotes
+tabw_i 721,541,gixdb_pitchnotes
+tabw_i 725,542,gixdb_pitchnotes
+tabw_i 728,543,gixdb_pitchnotes
+tabw_i 685,544,gixdb_pitchnotes
+tabw_i 701,545,gixdb_pitchnotes
+tabw_i 721,546,gixdb_pitchnotes
+tabw_i 682,547,gixdb_pitchnotes
+tabw_i 688,548,gixdb_pitchnotes
+tabw_i 706,549,gixdb_pitchnotes
+tabw_i 682,550,gixdb_pitchnotes
+tabw_i 688,551,gixdb_pitchnotes
+tabw_i 706,552,gixdb_pitchnotes
+tabw_i 682,553,gixdb_pitchnotes
+tabw_i 688,554,gixdb_pitchnotes
+tabw_i 706,555,gixdb_pitchnotes
+tabw_i 682,556,gixdb_pitchnotes
+tabw_i 688,557,gixdb_pitchnotes
+tabw_i 706,558,gixdb_pitchnotes
+tabw_i 682,559,gixdb_pitchnotes
+tabw_i 688,560,gixdb_pitchnotes
+tabw_i 706,561,gixdb_pitchnotes
+tabw_i 682,562,gixdb_pitchnotes
+tabw_i 688,563,gixdb_pitchnotes
+tabw_i 706,564,gixdb_pitchnotes
+tabw_i 682,565,gixdb_pitchnotes
+tabw_i 688,566,gixdb_pitchnotes
+tabw_i 706,567,gixdb_pitchnotes
+tabw_i 682,568,gixdb_pitchnotes
+tabw_i 688,569,gixdb_pitchnotes
+tabw_i 706,570,gixdb_pitchnotes
+tabw_i 682,571,gixdb_pitchnotes
+tabw_i 688,572,gixdb_pitchnotes
+tabw_i 706,573,gixdb_pitchnotes
+tabw_i 682,574,gixdb_pitchnotes
+tabw_i 688,575,gixdb_pitchnotes
+tabw_i 706,576,gixdb_pitchnotes
+tabw_i 682,577,gixdb_pitchnotes
+tabw_i 688,578,gixdb_pitchnotes
+tabw_i 706,579,gixdb_pitchnotes
+tabw_i 682,580,gixdb_pitchnotes
+tabw_i 688,581,gixdb_pitchnotes
+tabw_i 706,582,gixdb_pitchnotes
+tabw_i 682,583,gixdb_pitchnotes
+tabw_i 688,584,gixdb_pitchnotes
+tabw_i 706,585,gixdb_pitchnotes
+tabw_i 682,586,gixdb_pitchnotes
+tabw_i 688,587,gixdb_pitchnotes
+tabw_i 706,588,gixdb_pitchnotes
+tabw_i 682,589,gixdb_pitchnotes
+tabw_i 688,590,gixdb_pitchnotes
+tabw_i 706,591,gixdb_pitchnotes
+tabw_i 682,592,gixdb_pitchnotes
+tabw_i 688,593,gixdb_pitchnotes
+tabw_i 706,594,gixdb_pitchnotes
+tabw_i 682,595,gixdb_pitchnotes
+tabw_i 688,596,gixdb_pitchnotes
+tabw_i 706,597,gixdb_pitchnotes
+tabw_i 682,598,gixdb_pitchnotes
+tabw_i 688,599,gixdb_pitchnotes
+tabw_i 706,600,gixdb_pitchnotes
+tabw_i 682,601,gixdb_pitchnotes
+tabw_i 688,602,gixdb_pitchnotes
+tabw_i 706,603,gixdb_pitchnotes
+tabw_i 682,604,gixdb_pitchnotes
+tabw_i 688,605,gixdb_pitchnotes
+tabw_i 706,606,gixdb_pitchnotes
+tabw_i 682,607,gixdb_pitchnotes
+tabw_i 688,608,gixdb_pitchnotes
+tabw_i 706,609,gixdb_pitchnotes
+tabw_i 682,610,gixdb_pitchnotes
+tabw_i 688,611,gixdb_pitchnotes
+tabw_i 706,612,gixdb_pitchnotes
+tabw_i 682,613,gixdb_pitchnotes
+tabw_i 688,614,gixdb_pitchnotes
+tabw_i 706,615,gixdb_pitchnotes
+tabw_i 682,616,gixdb_pitchnotes
+tabw_i 688,617,gixdb_pitchnotes
+tabw_i 706,618,gixdb_pitchnotes
+tabw_i 682,619,gixdb_pitchnotes
+tabw_i 688,620,gixdb_pitchnotes
+tabw_i 706,621,gixdb_pitchnotes
+tabw_i 682,622,gixdb_pitchnotes
+tabw_i 688,623,gixdb_pitchnotes
+tabw_i 706,624,gixdb_pitchnotes
+tabw_i 682,625,gixdb_pitchnotes
+tabw_i 688,626,gixdb_pitchnotes
+tabw_i 706,627,gixdb_pitchnotes
+tabw_i 682,628,gixdb_pitchnotes
+tabw_i 688,629,gixdb_pitchnotes
+tabw_i 706,630,gixdb_pitchnotes
+tabw_i 682,631,gixdb_pitchnotes
+tabw_i 688,632,gixdb_pitchnotes
+tabw_i 706,633,gixdb_pitchnotes
+tabw_i 682,634,gixdb_pitchnotes
+tabw_i 688,635,gixdb_pitchnotes
+tabw_i 706,636,gixdb_pitchnotes
+tabw_i 682,637,gixdb_pitchnotes
+tabw_i 688,638,gixdb_pitchnotes
+tabw_i 706,639,gixdb_pitchnotes
+tabw_i 682,640,gixdb_pitchnotes
+tabw_i 688,641,gixdb_pitchnotes
+tabw_i 706,642,gixdb_pitchnotes
+tabw_i 682,643,gixdb_pitchnotes
+tabw_i 688,644,gixdb_pitchnotes
+tabw_i 706,645,gixdb_pitchnotes
+tabw_i 682,646,gixdb_pitchnotes
+tabw_i 688,647,gixdb_pitchnotes
+tabw_i 706,648,gixdb_pitchnotes
+tabw_i 682,649,gixdb_pitchnotes
+tabw_i 688,650,gixdb_pitchnotes
+tabw_i 706,651,gixdb_pitchnotes
+tabw_i 682,652,gixdb_pitchnotes
+tabw_i 688,653,gixdb_pitchnotes
+tabw_i 706,654,gixdb_pitchnotes
+tabw_i 743,655,gixdb_pitchnotes
+tabw_i 772,656,gixdb_pitchnotes
+tabw_i 777,657,gixdb_pitchnotes
+tabw_i 786,658,gixdb_pitchnotes
+tabw_i 743,659,gixdb_pitchnotes
+tabw_i 772,660,gixdb_pitchnotes
+tabw_i 777,661,gixdb_pitchnotes
+tabw_i 786,662,gixdb_pitchnotes
+tabw_i 743,663,gixdb_pitchnotes
+tabw_i 772,664,gixdb_pitchnotes
+tabw_i 777,665,gixdb_pitchnotes
+tabw_i 786,666,gixdb_pitchnotes
+tabw_i 743,667,gixdb_pitchnotes
+tabw_i 772,668,gixdb_pitchnotes
+tabw_i 777,669,gixdb_pitchnotes
+tabw_i 786,670,gixdb_pitchnotes
+tabw_i 743,671,gixdb_pitchnotes
+tabw_i 772,672,gixdb_pitchnotes
+tabw_i 777,673,gixdb_pitchnotes
+tabw_i 786,674,gixdb_pitchnotes
+tabw_i 743,675,gixdb_pitchnotes
+tabw_i 772,676,gixdb_pitchnotes
+tabw_i 777,677,gixdb_pitchnotes
+tabw_i 786,678,gixdb_pitchnotes
+tabw_i 743,679,gixdb_pitchnotes
+tabw_i 772,680,gixdb_pitchnotes
+tabw_i 777,681,gixdb_pitchnotes
+tabw_i 786,682,gixdb_pitchnotes
+tabw_i 743,683,gixdb_pitchnotes
+tabw_i 772,684,gixdb_pitchnotes
+tabw_i 777,685,gixdb_pitchnotes
+tabw_i 786,686,gixdb_pitchnotes
+tabw_i 743,687,gixdb_pitchnotes
+tabw_i 772,688,gixdb_pitchnotes
+tabw_i 777,689,gixdb_pitchnotes
+tabw_i 786,690,gixdb_pitchnotes
+tabw_i 743,691,gixdb_pitchnotes
+tabw_i 772,692,gixdb_pitchnotes
+tabw_i 777,693,gixdb_pitchnotes
+tabw_i 786,694,gixdb_pitchnotes
+tabw_i 743,695,gixdb_pitchnotes
+tabw_i 772,696,gixdb_pitchnotes
+tabw_i 777,697,gixdb_pitchnotes
+tabw_i 786,698,gixdb_pitchnotes
+tabw_i 743,699,gixdb_pitchnotes
+tabw_i 772,700,gixdb_pitchnotes
+tabw_i 777,701,gixdb_pitchnotes
+tabw_i 786,702,gixdb_pitchnotes
+tabw_i 743,703,gixdb_pitchnotes
+tabw_i 772,704,gixdb_pitchnotes
+tabw_i 777,705,gixdb_pitchnotes
+tabw_i 786,706,gixdb_pitchnotes
+tabw_i 743,707,gixdb_pitchnotes
+tabw_i 772,708,gixdb_pitchnotes
+tabw_i 777,709,gixdb_pitchnotes
+tabw_i 786,710,gixdb_pitchnotes
+tabw_i 743,711,gixdb_pitchnotes
+tabw_i 772,712,gixdb_pitchnotes
+tabw_i 777,713,gixdb_pitchnotes
+tabw_i 786,714,gixdb_pitchnotes
+tabw_i 743,715,gixdb_pitchnotes
+tabw_i 772,716,gixdb_pitchnotes
+tabw_i 777,717,gixdb_pitchnotes
+tabw_i 786,718,gixdb_pitchnotes
+tabw_i 743,719,gixdb_pitchnotes
+tabw_i 772,720,gixdb_pitchnotes
+tabw_i 777,721,gixdb_pitchnotes
+tabw_i 786,722,gixdb_pitchnotes
+tabw_i 743,723,gixdb_pitchnotes
+tabw_i 772,724,gixdb_pitchnotes
+tabw_i 777,725,gixdb_pitchnotes
+tabw_i 786,726,gixdb_pitchnotes
+tabw_i 743,727,gixdb_pitchnotes
+tabw_i 772,728,gixdb_pitchnotes
+tabw_i 777,729,gixdb_pitchnotes
+tabw_i 786,730,gixdb_pitchnotes
+tabw_i 743,731,gixdb_pitchnotes
+tabw_i 772,732,gixdb_pitchnotes
+tabw_i 777,733,gixdb_pitchnotes
+tabw_i 786,734,gixdb_pitchnotes
+tabw_i 743,735,gixdb_pitchnotes
+tabw_i 772,736,gixdb_pitchnotes
+tabw_i 777,737,gixdb_pitchnotes
+tabw_i 786,738,gixdb_pitchnotes
+tabw_i 743,739,gixdb_pitchnotes
+tabw_i 772,740,gixdb_pitchnotes
+tabw_i 777,741,gixdb_pitchnotes
+tabw_i 786,742,gixdb_pitchnotes
+tabw_i 743,743,gixdb_pitchnotes
+tabw_i 772,744,gixdb_pitchnotes
+tabw_i 777,745,gixdb_pitchnotes
+tabw_i 786,746,gixdb_pitchnotes
+tabw_i 743,747,gixdb_pitchnotes
+tabw_i 772,748,gixdb_pitchnotes
+tabw_i 777,749,gixdb_pitchnotes
+tabw_i 786,750,gixdb_pitchnotes
+tabw_i 743,751,gixdb_pitchnotes
+tabw_i 772,752,gixdb_pitchnotes
+tabw_i 777,753,gixdb_pitchnotes
+tabw_i 786,754,gixdb_pitchnotes
+tabw_i 743,755,gixdb_pitchnotes
+tabw_i 772,756,gixdb_pitchnotes
+tabw_i 777,757,gixdb_pitchnotes
+tabw_i 786,758,gixdb_pitchnotes
+tabw_i 743,759,gixdb_pitchnotes
+tabw_i 772,760,gixdb_pitchnotes
+tabw_i 777,761,gixdb_pitchnotes
+tabw_i 786,762,gixdb_pitchnotes
+tabw_i 743,763,gixdb_pitchnotes
+tabw_i 772,764,gixdb_pitchnotes
+tabw_i 777,765,gixdb_pitchnotes
+tabw_i 786,766,gixdb_pitchnotes
+tabw_i 743,767,gixdb_pitchnotes
+tabw_i 772,768,gixdb_pitchnotes
+tabw_i 777,769,gixdb_pitchnotes
+tabw_i 786,770,gixdb_pitchnotes
+tabw_i 743,771,gixdb_pitchnotes
+tabw_i 772,772,gixdb_pitchnotes
+tabw_i 777,773,gixdb_pitchnotes
+tabw_i 786,774,gixdb_pitchnotes
+tabw_i 743,775,gixdb_pitchnotes
+tabw_i 772,776,gixdb_pitchnotes
+tabw_i 777,777,gixdb_pitchnotes
+tabw_i 786,778,gixdb_pitchnotes
+tabw_i 743,779,gixdb_pitchnotes
+tabw_i 772,780,gixdb_pitchnotes
+tabw_i 777,781,gixdb_pitchnotes
+tabw_i 786,782,gixdb_pitchnotes
+tabw_i 743,783,gixdb_pitchnotes
+tabw_i 772,784,gixdb_pitchnotes
+tabw_i 777,785,gixdb_pitchnotes
+tabw_i 786,786,gixdb_pitchnotes
+tabw_i 743,787,gixdb_pitchnotes
+tabw_i 772,788,gixdb_pitchnotes
+tabw_i 777,789,gixdb_pitchnotes
+tabw_i 786,790,gixdb_pitchnotes
+tabw_i 743,791,gixdb_pitchnotes
+tabw_i 772,792,gixdb_pitchnotes
+tabw_i 777,793,gixdb_pitchnotes
+tabw_i 786,794,gixdb_pitchnotes
+tabw_i 743,795,gixdb_pitchnotes
+tabw_i 772,796,gixdb_pitchnotes
+tabw_i 777,797,gixdb_pitchnotes
+tabw_i 786,798,gixdb_pitchnotes
+tabw_i 743,799,gixdb_pitchnotes
+tabw_i 772,800,gixdb_pitchnotes
+tabw_i 777,801,gixdb_pitchnotes
+tabw_i 786,802,gixdb_pitchnotes
+tabw_i 743,803,gixdb_pitchnotes
+tabw_i 772,804,gixdb_pitchnotes
+tabw_i 777,805,gixdb_pitchnotes
+tabw_i 786,806,gixdb_pitchnotes
+tabw_i 743,807,gixdb_pitchnotes
+tabw_i 772,808,gixdb_pitchnotes
+tabw_i 777,809,gixdb_pitchnotes
+tabw_i 786,810,gixdb_pitchnotes
+tabw_i 743,811,gixdb_pitchnotes
+tabw_i 772,812,gixdb_pitchnotes
+tabw_i 777,813,gixdb_pitchnotes
+tabw_i 786,814,gixdb_pitchnotes
+tabw_i 743,815,gixdb_pitchnotes
+tabw_i 772,816,gixdb_pitchnotes
+tabw_i 777,817,gixdb_pitchnotes
+tabw_i 786,818,gixdb_pitchnotes
+tabw_i 743,819,gixdb_pitchnotes
+tabw_i 772,820,gixdb_pitchnotes
+tabw_i 777,821,gixdb_pitchnotes
+tabw_i 786,822,gixdb_pitchnotes
+tabw_i 743,823,gixdb_pitchnotes
+tabw_i 772,824,gixdb_pitchnotes
+tabw_i 777,825,gixdb_pitchnotes
+tabw_i 786,826,gixdb_pitchnotes
+tabw_i 743,827,gixdb_pitchnotes
+tabw_i 772,828,gixdb_pitchnotes
+tabw_i 777,829,gixdb_pitchnotes
+tabw_i 786,830,gixdb_pitchnotes
+tabw_i 743,831,gixdb_pitchnotes
+tabw_i 772,832,gixdb_pitchnotes
+tabw_i 777,833,gixdb_pitchnotes
+tabw_i 786,834,gixdb_pitchnotes
+tabw_i 743,835,gixdb_pitchnotes
+tabw_i 772,836,gixdb_pitchnotes
+tabw_i 777,837,gixdb_pitchnotes
+tabw_i 786,838,gixdb_pitchnotes
+tabw_i 743,839,gixdb_pitchnotes
+tabw_i 772,840,gixdb_pitchnotes
+tabw_i 777,841,gixdb_pitchnotes
+tabw_i 786,842,gixdb_pitchnotes
+tabw_i 743,843,gixdb_pitchnotes
+tabw_i 772,844,gixdb_pitchnotes
+tabw_i 777,845,gixdb_pitchnotes
+tabw_i 786,846,gixdb_pitchnotes
+tabw_i 743,847,gixdb_pitchnotes
+tabw_i 772,848,gixdb_pitchnotes
+tabw_i 777,849,gixdb_pitchnotes
+tabw_i 786,850,gixdb_pitchnotes
+tabw_i 743,851,gixdb_pitchnotes
+tabw_i 772,852,gixdb_pitchnotes
+tabw_i 777,853,gixdb_pitchnotes
+tabw_i 786,854,gixdb_pitchnotes
+tabw_i 743,855,gixdb_pitchnotes
+tabw_i 772,856,gixdb_pitchnotes
+tabw_i 777,857,gixdb_pitchnotes
+tabw_i 786,858,gixdb_pitchnotes
+tabw_i 743,859,gixdb_pitchnotes
+tabw_i 772,860,gixdb_pitchnotes
+tabw_i 777,861,gixdb_pitchnotes
+tabw_i 786,862,gixdb_pitchnotes
+tabw_i 743,863,gixdb_pitchnotes
+tabw_i 772,864,gixdb_pitchnotes
+tabw_i 777,865,gixdb_pitchnotes
+tabw_i 786,866,gixdb_pitchnotes
+tabw_i 743,867,gixdb_pitchnotes
+tabw_i 772,868,gixdb_pitchnotes
+tabw_i 777,869,gixdb_pitchnotes
+tabw_i 786,870,gixdb_pitchnotes
+tabw_i 743,871,gixdb_pitchnotes
+tabw_i 772,872,gixdb_pitchnotes
+tabw_i 777,873,gixdb_pitchnotes
+tabw_i 786,874,gixdb_pitchnotes
+tabw_i 743,875,gixdb_pitchnotes
+tabw_i 772,876,gixdb_pitchnotes
+tabw_i 777,877,gixdb_pitchnotes
+tabw_i 786,878,gixdb_pitchnotes
+tabw_i 743,879,gixdb_pitchnotes
+tabw_i 772,880,gixdb_pitchnotes
+tabw_i 777,881,gixdb_pitchnotes
+tabw_i 786,882,gixdb_pitchnotes
+tabw_i 743,883,gixdb_pitchnotes
+tabw_i 772,884,gixdb_pitchnotes
+tabw_i 777,885,gixdb_pitchnotes
+tabw_i 786,886,gixdb_pitchnotes
+tabw_i 743,887,gixdb_pitchnotes
+tabw_i 772,888,gixdb_pitchnotes
+tabw_i 777,889,gixdb_pitchnotes
+tabw_i 786,890,gixdb_pitchnotes
+tabw_i 743,891,gixdb_pitchnotes
+tabw_i 772,892,gixdb_pitchnotes
+tabw_i 777,893,gixdb_pitchnotes
+tabw_i 786,894,gixdb_pitchnotes
+tabw_i 743,895,gixdb_pitchnotes
+tabw_i 772,896,gixdb_pitchnotes
+tabw_i 777,897,gixdb_pitchnotes
+tabw_i 786,898,gixdb_pitchnotes
+tabw_i 743,899,gixdb_pitchnotes
+tabw_i 746,900,gixdb_pitchnotes
+tabw_i 748,901,gixdb_pitchnotes
+tabw_i 772,902,gixdb_pitchnotes
+tabw_i 774,903,gixdb_pitchnotes
+tabw_i 777,904,gixdb_pitchnotes
+tabw_i 786,905,gixdb_pitchnotes
+tabw_i 806,906,gixdb_pitchnotes
+tabw_i 746,907,gixdb_pitchnotes
+tabw_i 748,908,gixdb_pitchnotes
+tabw_i 774,909,gixdb_pitchnotes
+tabw_i 806,910,gixdb_pitchnotes
+tabw_i 742,911,gixdb_pitchnotes
+tabw_i 746,912,gixdb_pitchnotes
+tabw_i 748,913,gixdb_pitchnotes
+tabw_i 759,914,gixdb_pitchnotes
+tabw_i 774,915,gixdb_pitchnotes
+tabw_i 797,916,gixdb_pitchnotes
+tabw_i 803,917,gixdb_pitchnotes
+tabw_i 806,918,gixdb_pitchnotes
+tabw_i 742,919,gixdb_pitchnotes
+tabw_i 759,920,gixdb_pitchnotes
+tabw_i 797,921,gixdb_pitchnotes
+tabw_i 803,922,gixdb_pitchnotes
+tabw_i 738,923,gixdb_pitchnotes
+tabw_i 747,924,gixdb_pitchnotes
+tabw_i 754,925,gixdb_pitchnotes
+tabw_i 778,926,gixdb_pitchnotes
+tabw_i 781,927,gixdb_pitchnotes
+tabw_i 738,928,gixdb_pitchnotes
+tabw_i 745,929,gixdb_pitchnotes
+tabw_i 747,930,gixdb_pitchnotes
+tabw_i 749,931,gixdb_pitchnotes
+tabw_i 754,932,gixdb_pitchnotes
+tabw_i 765,933,gixdb_pitchnotes
+tabw_i 778,934,gixdb_pitchnotes
+tabw_i 781,935,gixdb_pitchnotes
+tabw_i 793,936,gixdb_pitchnotes
+tabw_i 808,937,gixdb_pitchnotes
+tabw_i 745,938,gixdb_pitchnotes
+tabw_i 749,939,gixdb_pitchnotes
+tabw_i 765,940,gixdb_pitchnotes
+tabw_i 793,941,gixdb_pitchnotes
+tabw_i 808,942,gixdb_pitchnotes
+tabw_i 741,943,gixdb_pitchnotes
+tabw_i 744,944,gixdb_pitchnotes
+tabw_i 745,945,gixdb_pitchnotes
+tabw_i 749,946,gixdb_pitchnotes
+tabw_i 750,947,gixdb_pitchnotes
+tabw_i 756,948,gixdb_pitchnotes
+tabw_i 765,949,gixdb_pitchnotes
+tabw_i 771,950,gixdb_pitchnotes
+tabw_i 793,951,gixdb_pitchnotes
+tabw_i 808,952,gixdb_pitchnotes
+tabw_i 741,953,gixdb_pitchnotes
+tabw_i 744,954,gixdb_pitchnotes
+tabw_i 750,955,gixdb_pitchnotes
+tabw_i 756,956,gixdb_pitchnotes
+tabw_i 771,957,gixdb_pitchnotes
+tabw_i 741,958,gixdb_pitchnotes
+tabw_i 744,959,gixdb_pitchnotes
+tabw_i 750,960,gixdb_pitchnotes
+tabw_i 756,961,gixdb_pitchnotes
+tabw_i 757,962,gixdb_pitchnotes
+tabw_i 766,963,gixdb_pitchnotes
+tabw_i 771,964,gixdb_pitchnotes
+tabw_i 773,965,gixdb_pitchnotes
+tabw_i 782,966,gixdb_pitchnotes
+tabw_i 805,967,gixdb_pitchnotes
+tabw_i 757,968,gixdb_pitchnotes
+tabw_i 766,969,gixdb_pitchnotes
+tabw_i 773,970,gixdb_pitchnotes
+tabw_i 782,971,gixdb_pitchnotes
+tabw_i 805,972,gixdb_pitchnotes
+tabw_i 768,973,gixdb_pitchnotes
+tabw_i 780,974,gixdb_pitchnotes
+tabw_i 784,975,gixdb_pitchnotes
+tabw_i 791,976,gixdb_pitchnotes
+tabw_i 751,977,gixdb_pitchnotes
+tabw_i 761,978,gixdb_pitchnotes
+tabw_i 768,979,gixdb_pitchnotes
+tabw_i 780,980,gixdb_pitchnotes
+tabw_i 784,981,gixdb_pitchnotes
+tabw_i 787,982,gixdb_pitchnotes
+tabw_i 791,983,gixdb_pitchnotes
+tabw_i 801,984,gixdb_pitchnotes
+tabw_i 751,985,gixdb_pitchnotes
+tabw_i 761,986,gixdb_pitchnotes
+tabw_i 787,987,gixdb_pitchnotes
+tabw_i 801,988,gixdb_pitchnotes
+tabw_i 740,989,gixdb_pitchnotes
+tabw_i 751,990,gixdb_pitchnotes
+tabw_i 761,991,gixdb_pitchnotes
+tabw_i 787,992,gixdb_pitchnotes
+tabw_i 789,993,gixdb_pitchnotes
+tabw_i 798,994,gixdb_pitchnotes
+tabw_i 801,995,gixdb_pitchnotes
+tabw_i 802,996,gixdb_pitchnotes
+tabw_i 740,997,gixdb_pitchnotes
+tabw_i 789,998,gixdb_pitchnotes
+tabw_i 798,999,gixdb_pitchnotes
+tabw_i 802,1000,gixdb_pitchnotes
+tabw_i 739,1001,gixdb_pitchnotes
+tabw_i 752,1002,gixdb_pitchnotes
+tabw_i 788,1003,gixdb_pitchnotes
+tabw_i 790,1004,gixdb_pitchnotes
+tabw_i 795,1005,gixdb_pitchnotes
+tabw_i 739,1006,gixdb_pitchnotes
+tabw_i 752,1007,gixdb_pitchnotes
+tabw_i 758,1008,gixdb_pitchnotes
+tabw_i 770,1009,gixdb_pitchnotes
+tabw_i 788,1010,gixdb_pitchnotes
+tabw_i 790,1011,gixdb_pitchnotes
+tabw_i 795,1012,gixdb_pitchnotes
+tabw_i 799,1013,gixdb_pitchnotes
+tabw_i 810,1014,gixdb_pitchnotes
+tabw_i 758,1015,gixdb_pitchnotes
+tabw_i 770,1016,gixdb_pitchnotes
+tabw_i 799,1017,gixdb_pitchnotes
+tabw_i 810,1018,gixdb_pitchnotes
+tabw_i 758,1019,gixdb_pitchnotes
+tabw_i 767,1020,gixdb_pitchnotes
+tabw_i 769,1021,gixdb_pitchnotes
+tabw_i 770,1022,gixdb_pitchnotes
+tabw_i 775,1023,gixdb_pitchnotes
+tabw_i 776,1024,gixdb_pitchnotes
+tabw_i 794,1025,gixdb_pitchnotes
+tabw_i 799,1026,gixdb_pitchnotes
+tabw_i 810,1027,gixdb_pitchnotes
+tabw_i 767,1028,gixdb_pitchnotes
+tabw_i 769,1029,gixdb_pitchnotes
+tabw_i 775,1030,gixdb_pitchnotes
+tabw_i 776,1031,gixdb_pitchnotes
+tabw_i 794,1032,gixdb_pitchnotes
+tabw_i 760,1033,gixdb_pitchnotes
+tabw_i 762,1034,gixdb_pitchnotes
+tabw_i 763,1035,gixdb_pitchnotes
+tabw_i 767,1036,gixdb_pitchnotes
+tabw_i 769,1037,gixdb_pitchnotes
+tabw_i 775,1038,gixdb_pitchnotes
+tabw_i 776,1039,gixdb_pitchnotes
+tabw_i 785,1040,gixdb_pitchnotes
+tabw_i 794,1041,gixdb_pitchnotes
+tabw_i 800,1042,gixdb_pitchnotes
+tabw_i 760,1043,gixdb_pitchnotes
+tabw_i 762,1044,gixdb_pitchnotes
+tabw_i 763,1045,gixdb_pitchnotes
+tabw_i 785,1046,gixdb_pitchnotes
+tabw_i 800,1047,gixdb_pitchnotes
+tabw_i 779,1048,gixdb_pitchnotes
+tabw_i 804,1049,gixdb_pitchnotes
+tabw_i 807,1050,gixdb_pitchnotes
+tabw_i 811,1051,gixdb_pitchnotes
+tabw_i 755,1052,gixdb_pitchnotes
+tabw_i 764,1053,gixdb_pitchnotes
+tabw_i 779,1054,gixdb_pitchnotes
+tabw_i 783,1055,gixdb_pitchnotes
+tabw_i 804,1056,gixdb_pitchnotes
+tabw_i 807,1057,gixdb_pitchnotes
+tabw_i 809,1058,gixdb_pitchnotes
+tabw_i 811,1059,gixdb_pitchnotes
+tabw_i 755,1060,gixdb_pitchnotes
+tabw_i 764,1061,gixdb_pitchnotes
+tabw_i 783,1062,gixdb_pitchnotes
+tabw_i 809,1063,gixdb_pitchnotes
+tabw_i 753,1064,gixdb_pitchnotes
+tabw_i 755,1065,gixdb_pitchnotes
+tabw_i 764,1066,gixdb_pitchnotes
+tabw_i 783,1067,gixdb_pitchnotes
+tabw_i 792,1068,gixdb_pitchnotes
+tabw_i 796,1069,gixdb_pitchnotes
+tabw_i 809,1070,gixdb_pitchnotes
+tabw_i 753,1071,gixdb_pitchnotes
+tabw_i 792,1072,gixdb_pitchnotes
+tabw_i 796,1073,gixdb_pitchnotes
+tabw_i 753,1074,gixdb_pitchnotes
+tabw_i 792,1075,gixdb_pitchnotes
+tabw_i 796,1076,gixdb_pitchnotes
+tabw_i 753,1077,gixdb_pitchnotes
+tabw_i 792,1078,gixdb_pitchnotes
+tabw_i 796,1079,gixdb_pitchnotes
+tabw_i 753,1080,gixdb_pitchnotes
+tabw_i 792,1081,gixdb_pitchnotes
+tabw_i 796,1082,gixdb_pitchnotes
+tabw_i 753,1083,gixdb_pitchnotes
+tabw_i 792,1084,gixdb_pitchnotes
+tabw_i 796,1085,gixdb_pitchnotes
+tabw_i 753,1086,gixdb_pitchnotes
+tabw_i 792,1087,gixdb_pitchnotes
+tabw_i 796,1088,gixdb_pitchnotes
+tabw_i 753,1089,gixdb_pitchnotes
+tabw_i 792,1090,gixdb_pitchnotes
+tabw_i 796,1091,gixdb_pitchnotes
+tabw_i 753,1092,gixdb_pitchnotes
+tabw_i 792,1093,gixdb_pitchnotes
+tabw_i 796,1094,gixdb_pitchnotes
+tabw_i 753,1095,gixdb_pitchnotes
+tabw_i 792,1096,gixdb_pitchnotes
+tabw_i 796,1097,gixdb_pitchnotes
+tabw_i 753,1098,gixdb_pitchnotes
+tabw_i 792,1099,gixdb_pitchnotes
+tabw_i 796,1100,gixdb_pitchnotes
+tabw_i 753,1101,gixdb_pitchnotes
+tabw_i 792,1102,gixdb_pitchnotes
+tabw_i 796,1103,gixdb_pitchnotes
+tabw_i 753,1104,gixdb_pitchnotes
+tabw_i 792,1105,gixdb_pitchnotes
+tabw_i 796,1106,gixdb_pitchnotes
+tabw_i 753,1107,gixdb_pitchnotes
+tabw_i 792,1108,gixdb_pitchnotes
+tabw_i 796,1109,gixdb_pitchnotes
+tabw_i 753,1110,gixdb_pitchnotes
+tabw_i 792,1111,gixdb_pitchnotes
+tabw_i 796,1112,gixdb_pitchnotes
+tabw_i 753,1113,gixdb_pitchnotes
+tabw_i 792,1114,gixdb_pitchnotes
+tabw_i 796,1115,gixdb_pitchnotes
+tabw_i 753,1116,gixdb_pitchnotes
+tabw_i 792,1117,gixdb_pitchnotes
+tabw_i 796,1118,gixdb_pitchnotes
+tabw_i 753,1119,gixdb_pitchnotes
+tabw_i 792,1120,gixdb_pitchnotes
+tabw_i 796,1121,gixdb_pitchnotes
+tabw_i 753,1122,gixdb_pitchnotes
+tabw_i 792,1123,gixdb_pitchnotes
+tabw_i 796,1124,gixdb_pitchnotes
+tabw_i 753,1125,gixdb_pitchnotes
+tabw_i 792,1126,gixdb_pitchnotes
+tabw_i 796,1127,gixdb_pitchnotes
+tabw_i 753,1128,gixdb_pitchnotes
+tabw_i 792,1129,gixdb_pitchnotes
+tabw_i 796,1130,gixdb_pitchnotes
+tabw_i 753,1131,gixdb_pitchnotes
+tabw_i 792,1132,gixdb_pitchnotes
+tabw_i 796,1133,gixdb_pitchnotes
+tabw_i 753,1134,gixdb_pitchnotes
+tabw_i 792,1135,gixdb_pitchnotes
+tabw_i 796,1136,gixdb_pitchnotes
+tabw_i 753,1137,gixdb_pitchnotes
+tabw_i 792,1138,gixdb_pitchnotes
+tabw_i 796,1139,gixdb_pitchnotes
+tabw_i 753,1140,gixdb_pitchnotes
+tabw_i 792,1141,gixdb_pitchnotes
+tabw_i 796,1142,gixdb_pitchnotes
+tabw_i 753,1143,gixdb_pitchnotes
+tabw_i 792,1144,gixdb_pitchnotes
+tabw_i 796,1145,gixdb_pitchnotes
+tabw_i 753,1146,gixdb_pitchnotes
+tabw_i 792,1147,gixdb_pitchnotes
+tabw_i 796,1148,gixdb_pitchnotes
+tabw_i 753,1149,gixdb_pitchnotes
+tabw_i 792,1150,gixdb_pitchnotes
+tabw_i 796,1151,gixdb_pitchnotes
+tabw_i 753,1152,gixdb_pitchnotes
+tabw_i 792,1153,gixdb_pitchnotes
+tabw_i 796,1154,gixdb_pitchnotes
+tabw_i 753,1155,gixdb_pitchnotes
+tabw_i 792,1156,gixdb_pitchnotes
+tabw_i 796,1157,gixdb_pitchnotes
+tabw_i 753,1158,gixdb_pitchnotes
+tabw_i 792,1159,gixdb_pitchnotes
+tabw_i 796,1160,gixdb_pitchnotes
+tabw_i 753,1161,gixdb_pitchnotes
+tabw_i 792,1162,gixdb_pitchnotes
+tabw_i 796,1163,gixdb_pitchnotes
+tabw_i 753,1164,gixdb_pitchnotes
+tabw_i 792,1165,gixdb_pitchnotes
+tabw_i 796,1166,gixdb_pitchnotes
+tabw_i 753,1167,gixdb_pitchnotes
+tabw_i 792,1168,gixdb_pitchnotes
+tabw_i 796,1169,gixdb_pitchnotes
+tabw_i 753,1170,gixdb_pitchnotes
+tabw_i 792,1171,gixdb_pitchnotes
+tabw_i 796,1172,gixdb_pitchnotes
+tabw_i 753,1173,gixdb_pitchnotes
+tabw_i 792,1174,gixdb_pitchnotes
+tabw_i 796,1175,gixdb_pitchnotes
+tabw_i 753,1176,gixdb_pitchnotes
+tabw_i 792,1177,gixdb_pitchnotes
+tabw_i 796,1178,gixdb_pitchnotes
+tabw_i 753,1179,gixdb_pitchnotes
+tabw_i 792,1180,gixdb_pitchnotes
+tabw_i 796,1181,gixdb_pitchnotes
+tabw_i 753,1182,gixdb_pitchnotes
+tabw_i 792,1183,gixdb_pitchnotes
+tabw_i 796,1184,gixdb_pitchnotes
+tabw_i 753,1185,gixdb_pitchnotes
+tabw_i 792,1186,gixdb_pitchnotes
+tabw_i 796,1187,gixdb_pitchnotes
+tabw_i 753,1188,gixdb_pitchnotes
+tabw_i 792,1189,gixdb_pitchnotes
+tabw_i 796,1190,gixdb_pitchnotes
+tabw_i 0.019686269,0,gixdb_pitchadjust
+tabw_i 0.019686269,1,gixdb_pitchadjust
+tabw_i 0.019686269,2,gixdb_pitchadjust
+tabw_i 0.019686269,3,gixdb_pitchadjust
+tabw_i 0.019686269,4,gixdb_pitchadjust
+tabw_i 0.019686269,5,gixdb_pitchadjust
+tabw_i 0.020856872,6,gixdb_pitchadjust
+tabw_i 0.020856872,7,gixdb_pitchadjust
+tabw_i 0.020856872,8,gixdb_pitchadjust
+tabw_i 0.020856872,9,gixdb_pitchadjust
+tabw_i 0.020856872,10,gixdb_pitchadjust
+tabw_i 0.020856872,11,gixdb_pitchadjust
+tabw_i 0.022097087,12,gixdb_pitchadjust
+tabw_i 0.022097087,13,gixdb_pitchadjust
+tabw_i 0.022097087,14,gixdb_pitchadjust
+tabw_i 0.022097087,15,gixdb_pitchadjust
+tabw_i 0.022097087,16,gixdb_pitchadjust
+tabw_i 0.022097087,17,gixdb_pitchadjust
+tabw_i 0.023411049,18,gixdb_pitchadjust
+tabw_i 0.023411049,19,gixdb_pitchadjust
+tabw_i 0.023411049,20,gixdb_pitchadjust
+tabw_i 0.023411049,21,gixdb_pitchadjust
+tabw_i 0.023411049,22,gixdb_pitchadjust
+tabw_i 0.023411049,23,gixdb_pitchadjust
+tabw_i 0.024803143,24,gixdb_pitchadjust
+tabw_i 0.024803143,25,gixdb_pitchadjust
+tabw_i 0.024803143,26,gixdb_pitchadjust
+tabw_i 0.024803143,27,gixdb_pitchadjust
+tabw_i 0.024803143,28,gixdb_pitchadjust
+tabw_i 0.024803143,29,gixdb_pitchadjust
+tabw_i 0.026278015,30,gixdb_pitchadjust
+tabw_i 0.026278015,31,gixdb_pitchadjust
+tabw_i 0.026278015,32,gixdb_pitchadjust
+tabw_i 0.026278015,33,gixdb_pitchadjust
+tabw_i 0.026278015,34,gixdb_pitchadjust
+tabw_i 0.026278015,35,gixdb_pitchadjust
+tabw_i 0.027840585,36,gixdb_pitchadjust
+tabw_i 0.027840585,37,gixdb_pitchadjust
+tabw_i 0.027840585,38,gixdb_pitchadjust
+tabw_i 0.027840585,39,gixdb_pitchadjust
+tabw_i 0.027840585,40,gixdb_pitchadjust
+tabw_i 0.027840585,41,gixdb_pitchadjust
+tabw_i 0.029496072,42,gixdb_pitchadjust
+tabw_i 0.029496072,43,gixdb_pitchadjust
+tabw_i 0.029496072,44,gixdb_pitchadjust
+tabw_i 0.029496072,45,gixdb_pitchadjust
+tabw_i 0.029496072,46,gixdb_pitchadjust
+tabw_i 0.029496072,47,gixdb_pitchadjust
+tabw_i 0.03125,48,gixdb_pitchadjust
+tabw_i 0.03125,49,gixdb_pitchadjust
+tabw_i 0.03125,50,gixdb_pitchadjust
+tabw_i 0.03125,51,gixdb_pitchadjust
+tabw_i 0.03125,52,gixdb_pitchadjust
+tabw_i 0.03125,53,gixdb_pitchadjust
+tabw_i 0.033108223,54,gixdb_pitchadjust
+tabw_i 0.033108223,55,gixdb_pitchadjust
+tabw_i 0.033108223,56,gixdb_pitchadjust
+tabw_i 0.033108223,57,gixdb_pitchadjust
+tabw_i 0.033108223,58,gixdb_pitchadjust
+tabw_i 0.033108223,59,gixdb_pitchadjust
+tabw_i 0.03507694,60,gixdb_pitchadjust
+tabw_i 0.03507694,61,gixdb_pitchadjust
+tabw_i 0.03507694,62,gixdb_pitchadjust
+tabw_i 0.03507694,63,gixdb_pitchadjust
+tabw_i 0.03507694,64,gixdb_pitchadjust
+tabw_i 0.03507694,65,gixdb_pitchadjust
+tabw_i 0.037162725,66,gixdb_pitchadjust
+tabw_i 0.037162725,67,gixdb_pitchadjust
+tabw_i 0.037162725,68,gixdb_pitchadjust
+tabw_i 0.037162725,69,gixdb_pitchadjust
+tabw_i 0.037162725,70,gixdb_pitchadjust
+tabw_i 0.037162725,71,gixdb_pitchadjust
+tabw_i 0.039372537,72,gixdb_pitchadjust
+tabw_i 0.039372537,73,gixdb_pitchadjust
+tabw_i 0.039372537,74,gixdb_pitchadjust
+tabw_i 0.039372537,75,gixdb_pitchadjust
+tabw_i 0.039372537,76,gixdb_pitchadjust
+tabw_i 0.039372537,77,gixdb_pitchadjust
+tabw_i 0.041713744,78,gixdb_pitchadjust
+tabw_i 0.041713744,79,gixdb_pitchadjust
+tabw_i 0.041713744,80,gixdb_pitchadjust
+tabw_i 0.041713744,81,gixdb_pitchadjust
+tabw_i 0.041713744,82,gixdb_pitchadjust
+tabw_i 0.041713744,83,gixdb_pitchadjust
+tabw_i 0.044194173,84,gixdb_pitchadjust
+tabw_i 0.044194173,85,gixdb_pitchadjust
+tabw_i 0.044194173,86,gixdb_pitchadjust
+tabw_i 0.044194173,87,gixdb_pitchadjust
+tabw_i 0.044194173,88,gixdb_pitchadjust
+tabw_i 0.044194173,89,gixdb_pitchadjust
+tabw_i 0.046822097,90,gixdb_pitchadjust
+tabw_i 0.046822097,91,gixdb_pitchadjust
+tabw_i 0.046822097,92,gixdb_pitchadjust
+tabw_i 0.046822097,93,gixdb_pitchadjust
+tabw_i 0.046822097,94,gixdb_pitchadjust
+tabw_i 0.046822097,95,gixdb_pitchadjust
+tabw_i 0.049606286,96,gixdb_pitchadjust
+tabw_i 0.049606286,97,gixdb_pitchadjust
+tabw_i 0.049606286,98,gixdb_pitchadjust
+tabw_i 0.049606286,99,gixdb_pitchadjust
+tabw_i 0.049606286,100,gixdb_pitchadjust
+tabw_i 0.049606286,101,gixdb_pitchadjust
+tabw_i 0.05255603,102,gixdb_pitchadjust
+tabw_i 0.05255603,103,gixdb_pitchadjust
+tabw_i 0.05255603,104,gixdb_pitchadjust
+tabw_i 0.05255603,105,gixdb_pitchadjust
+tabw_i 0.05255603,106,gixdb_pitchadjust
+tabw_i 0.05255603,107,gixdb_pitchadjust
+tabw_i 0.05568117,108,gixdb_pitchadjust
+tabw_i 0.05568117,109,gixdb_pitchadjust
+tabw_i 0.05568117,110,gixdb_pitchadjust
+tabw_i 0.05568117,111,gixdb_pitchadjust
+tabw_i 0.05568117,112,gixdb_pitchadjust
+tabw_i 0.05568117,113,gixdb_pitchadjust
+tabw_i 0.058992144,114,gixdb_pitchadjust
+tabw_i 0.058992144,115,gixdb_pitchadjust
+tabw_i 0.058992144,116,gixdb_pitchadjust
+tabw_i 0.058992144,117,gixdb_pitchadjust
+tabw_i 0.058992144,118,gixdb_pitchadjust
+tabw_i 0.058992144,119,gixdb_pitchadjust
+tabw_i 0.0625,120,gixdb_pitchadjust
+tabw_i 0.0625,121,gixdb_pitchadjust
+tabw_i 0.0625,122,gixdb_pitchadjust
+tabw_i 0.0625,123,gixdb_pitchadjust
+tabw_i 0.0625,124,gixdb_pitchadjust
+tabw_i 0.0625,125,gixdb_pitchadjust
+tabw_i 0.06621645,126,gixdb_pitchadjust
+tabw_i 0.06621645,127,gixdb_pitchadjust
+tabw_i 0.06621645,128,gixdb_pitchadjust
+tabw_i 0.06621645,129,gixdb_pitchadjust
+tabw_i 0.06621645,130,gixdb_pitchadjust
+tabw_i 0.06621645,131,gixdb_pitchadjust
+tabw_i 0.07015388,132,gixdb_pitchadjust
+tabw_i 0.07015388,133,gixdb_pitchadjust
+tabw_i 0.07015388,134,gixdb_pitchadjust
+tabw_i 0.07015388,135,gixdb_pitchadjust
+tabw_i 0.07015388,136,gixdb_pitchadjust
+tabw_i 0.07015388,137,gixdb_pitchadjust
+tabw_i 0.07432545,138,gixdb_pitchadjust
+tabw_i 0.07432545,139,gixdb_pitchadjust
+tabw_i 0.07432545,140,gixdb_pitchadjust
+tabw_i 0.07432545,141,gixdb_pitchadjust
+tabw_i 0.07432545,142,gixdb_pitchadjust
+tabw_i 0.07432545,143,gixdb_pitchadjust
+tabw_i 0.078745075,144,gixdb_pitchadjust
+tabw_i 0.078745075,145,gixdb_pitchadjust
+tabw_i 0.078745075,146,gixdb_pitchadjust
+tabw_i 0.078745075,147,gixdb_pitchadjust
+tabw_i 0.078745075,148,gixdb_pitchadjust
+tabw_i 0.078745075,149,gixdb_pitchadjust
+tabw_i 0.08342749,150,gixdb_pitchadjust
+tabw_i 0.08342749,151,gixdb_pitchadjust
+tabw_i 0.08342749,152,gixdb_pitchadjust
+tabw_i 0.08342749,153,gixdb_pitchadjust
+tabw_i 0.08342749,154,gixdb_pitchadjust
+tabw_i 0.08342749,155,gixdb_pitchadjust
+tabw_i 0.088388346,156,gixdb_pitchadjust
+tabw_i 0.088388346,157,gixdb_pitchadjust
+tabw_i 0.088388346,158,gixdb_pitchadjust
+tabw_i 0.088388346,159,gixdb_pitchadjust
+tabw_i 0.088388346,160,gixdb_pitchadjust
+tabw_i 0.088388346,161,gixdb_pitchadjust
+tabw_i 0.093644194,162,gixdb_pitchadjust
+tabw_i 0.093644194,163,gixdb_pitchadjust
+tabw_i 0.093644194,164,gixdb_pitchadjust
+tabw_i 0.093644194,165,gixdb_pitchadjust
+tabw_i 0.093644194,166,gixdb_pitchadjust
+tabw_i 0.093644194,167,gixdb_pitchadjust
+tabw_i 0.09921257,168,gixdb_pitchadjust
+tabw_i 0.09921257,169,gixdb_pitchadjust
+tabw_i 0.09921257,170,gixdb_pitchadjust
+tabw_i 0.09921257,171,gixdb_pitchadjust
+tabw_i 0.09921257,172,gixdb_pitchadjust
+tabw_i 0.09921257,173,gixdb_pitchadjust
+tabw_i 0.10511206,174,gixdb_pitchadjust
+tabw_i 0.10511206,175,gixdb_pitchadjust
+tabw_i 0.10511206,176,gixdb_pitchadjust
+tabw_i 0.10511206,177,gixdb_pitchadjust
+tabw_i 0.10511206,178,gixdb_pitchadjust
+tabw_i 0.10511206,179,gixdb_pitchadjust
+tabw_i 0.11136234,180,gixdb_pitchadjust
+tabw_i 0.11136234,181,gixdb_pitchadjust
+tabw_i 0.11136234,182,gixdb_pitchadjust
+tabw_i 0.11136234,183,gixdb_pitchadjust
+tabw_i 0.11136234,184,gixdb_pitchadjust
+tabw_i 0.11136234,185,gixdb_pitchadjust
+tabw_i 0.11798429,186,gixdb_pitchadjust
+tabw_i 0.11798429,187,gixdb_pitchadjust
+tabw_i 0.11798429,188,gixdb_pitchadjust
+tabw_i 0.11798429,189,gixdb_pitchadjust
+tabw_i 0.11798429,190,gixdb_pitchadjust
+tabw_i 0.11798429,191,gixdb_pitchadjust
+tabw_i 0.125,192,gixdb_pitchadjust
+tabw_i 0.125,193,gixdb_pitchadjust
+tabw_i 0.125,194,gixdb_pitchadjust
+tabw_i 0.125,195,gixdb_pitchadjust
+tabw_i 0.125,196,gixdb_pitchadjust
+tabw_i 0.125,197,gixdb_pitchadjust
+tabw_i 0.1324329,198,gixdb_pitchadjust
+tabw_i 0.1324329,199,gixdb_pitchadjust
+tabw_i 0.1324329,200,gixdb_pitchadjust
+tabw_i 0.1324329,201,gixdb_pitchadjust
+tabw_i 0.1324329,202,gixdb_pitchadjust
+tabw_i 0.1324329,203,gixdb_pitchadjust
+tabw_i 0.14030775,204,gixdb_pitchadjust
+tabw_i 0.14030775,205,gixdb_pitchadjust
+tabw_i 0.14030775,206,gixdb_pitchadjust
+tabw_i 0.14030775,207,gixdb_pitchadjust
+tabw_i 0.14030775,208,gixdb_pitchadjust
+tabw_i 0.14030775,209,gixdb_pitchadjust
+tabw_i 0.1486509,210,gixdb_pitchadjust
+tabw_i 0.1486509,211,gixdb_pitchadjust
+tabw_i 0.1486509,212,gixdb_pitchadjust
+tabw_i 0.1486509,213,gixdb_pitchadjust
+tabw_i 0.1486509,214,gixdb_pitchadjust
+tabw_i 0.1486509,215,gixdb_pitchadjust
+tabw_i 0.15749015,216,gixdb_pitchadjust
+tabw_i 0.15749015,217,gixdb_pitchadjust
+tabw_i 0.15749015,218,gixdb_pitchadjust
+tabw_i 0.15749015,219,gixdb_pitchadjust
+tabw_i 0.15749015,220,gixdb_pitchadjust
+tabw_i 0.15749015,221,gixdb_pitchadjust
+tabw_i 0.16685498,222,gixdb_pitchadjust
+tabw_i 0.16685498,223,gixdb_pitchadjust
+tabw_i 0.16685498,224,gixdb_pitchadjust
+tabw_i 0.16685498,225,gixdb_pitchadjust
+tabw_i 0.16685498,226,gixdb_pitchadjust
+tabw_i 0.16685498,227,gixdb_pitchadjust
+tabw_i 0.17677669,228,gixdb_pitchadjust
+tabw_i 0.17677669,229,gixdb_pitchadjust
+tabw_i 0.17677669,230,gixdb_pitchadjust
+tabw_i 0.17677669,231,gixdb_pitchadjust
+tabw_i 0.17677669,232,gixdb_pitchadjust
+tabw_i 0.17677669,233,gixdb_pitchadjust
+tabw_i 0.18728839,234,gixdb_pitchadjust
+tabw_i 0.18728839,235,gixdb_pitchadjust
+tabw_i 0.18728839,236,gixdb_pitchadjust
+tabw_i 0.18728839,237,gixdb_pitchadjust
+tabw_i 0.18728839,238,gixdb_pitchadjust
+tabw_i 0.18728839,239,gixdb_pitchadjust
+tabw_i 0.19842514,240,gixdb_pitchadjust
+tabw_i 0.19842514,241,gixdb_pitchadjust
+tabw_i 0.19842514,242,gixdb_pitchadjust
+tabw_i 0.19842514,243,gixdb_pitchadjust
+tabw_i 0.19842514,244,gixdb_pitchadjust
+tabw_i 0.19842514,245,gixdb_pitchadjust
+tabw_i 0.21022412,246,gixdb_pitchadjust
+tabw_i 0.21022412,247,gixdb_pitchadjust
+tabw_i 0.21022412,248,gixdb_pitchadjust
+tabw_i 0.21022412,249,gixdb_pitchadjust
+tabw_i 0.21022412,250,gixdb_pitchadjust
+tabw_i 0.21022412,251,gixdb_pitchadjust
+tabw_i 0.22272468,252,gixdb_pitchadjust
+tabw_i 0.22272468,253,gixdb_pitchadjust
+tabw_i 0.22272468,254,gixdb_pitchadjust
+tabw_i 0.22272468,255,gixdb_pitchadjust
+tabw_i 0.22272468,256,gixdb_pitchadjust
+tabw_i 0.22272468,257,gixdb_pitchadjust
+tabw_i 0.23596857,258,gixdb_pitchadjust
+tabw_i 0.23596857,259,gixdb_pitchadjust
+tabw_i 0.23596857,260,gixdb_pitchadjust
+tabw_i 0.23596857,261,gixdb_pitchadjust
+tabw_i 0.23596857,262,gixdb_pitchadjust
+tabw_i 0.23596857,263,gixdb_pitchadjust
+tabw_i 0.25,264,gixdb_pitchadjust
+tabw_i 0.25,265,gixdb_pitchadjust
+tabw_i 0.25,266,gixdb_pitchadjust
+tabw_i 0.25,267,gixdb_pitchadjust
+tabw_i 0.25,268,gixdb_pitchadjust
+tabw_i 0.25,269,gixdb_pitchadjust
+tabw_i 0.2648658,270,gixdb_pitchadjust
+tabw_i 0.2648658,271,gixdb_pitchadjust
+tabw_i 0.2648658,272,gixdb_pitchadjust
+tabw_i 0.2648658,273,gixdb_pitchadjust
+tabw_i 0.2648658,274,gixdb_pitchadjust
+tabw_i 0.2648658,275,gixdb_pitchadjust
+tabw_i 0.2806155,276,gixdb_pitchadjust
+tabw_i 0.2806155,277,gixdb_pitchadjust
+tabw_i 0.2806155,278,gixdb_pitchadjust
+tabw_i 0.2806155,279,gixdb_pitchadjust
+tabw_i 0.2806155,280,gixdb_pitchadjust
+tabw_i 0.2806155,281,gixdb_pitchadjust
+tabw_i 0.2973018,282,gixdb_pitchadjust
+tabw_i 0.2973018,283,gixdb_pitchadjust
+tabw_i 0.2973018,284,gixdb_pitchadjust
+tabw_i 0.2973018,285,gixdb_pitchadjust
+tabw_i 0.2973018,286,gixdb_pitchadjust
+tabw_i 0.2973018,287,gixdb_pitchadjust
+tabw_i 0.3149803,288,gixdb_pitchadjust
+tabw_i 0.3149803,289,gixdb_pitchadjust
+tabw_i 0.3149803,290,gixdb_pitchadjust
+tabw_i 0.3149803,291,gixdb_pitchadjust
+tabw_i 0.3149803,292,gixdb_pitchadjust
+tabw_i 0.3149803,293,gixdb_pitchadjust
+tabw_i 0.33370996,294,gixdb_pitchadjust
+tabw_i 0.33370996,295,gixdb_pitchadjust
+tabw_i 0.33370996,296,gixdb_pitchadjust
+tabw_i 0.33370996,297,gixdb_pitchadjust
+tabw_i 0.33370996,298,gixdb_pitchadjust
+tabw_i 0.33370996,299,gixdb_pitchadjust
+tabw_i 0.35355338,300,gixdb_pitchadjust
+tabw_i 0.35355338,301,gixdb_pitchadjust
+tabw_i 0.35355338,302,gixdb_pitchadjust
+tabw_i 0.35355338,303,gixdb_pitchadjust
+tabw_i 0.35355338,304,gixdb_pitchadjust
+tabw_i 0.35355338,305,gixdb_pitchadjust
+tabw_i 0.37457678,306,gixdb_pitchadjust
+tabw_i 0.37457678,307,gixdb_pitchadjust
+tabw_i 0.37457678,308,gixdb_pitchadjust
+tabw_i 0.37457678,309,gixdb_pitchadjust
+tabw_i 0.37457678,310,gixdb_pitchadjust
+tabw_i 0.37457678,311,gixdb_pitchadjust
+tabw_i 0.3968503,312,gixdb_pitchadjust
+tabw_i 0.3968503,313,gixdb_pitchadjust
+tabw_i 0.3968503,314,gixdb_pitchadjust
+tabw_i 0.3968503,315,gixdb_pitchadjust
+tabw_i 0.3968503,316,gixdb_pitchadjust
+tabw_i 0.3968503,317,gixdb_pitchadjust
+tabw_i 0.42044824,318,gixdb_pitchadjust
+tabw_i 0.42044824,319,gixdb_pitchadjust
+tabw_i 0.42044824,320,gixdb_pitchadjust
+tabw_i 0.42044824,321,gixdb_pitchadjust
+tabw_i 0.42044824,322,gixdb_pitchadjust
+tabw_i 0.42044824,323,gixdb_pitchadjust
+tabw_i 0.44544935,324,gixdb_pitchadjust
+tabw_i 0.44544935,325,gixdb_pitchadjust
+tabw_i 0.44544935,326,gixdb_pitchadjust
+tabw_i 0.44544935,327,gixdb_pitchadjust
+tabw_i 0.44544935,328,gixdb_pitchadjust
+tabw_i 0.44544935,329,gixdb_pitchadjust
+tabw_i 0.47193715,330,gixdb_pitchadjust
+tabw_i 0.47193715,331,gixdb_pitchadjust
+tabw_i 0.47193715,332,gixdb_pitchadjust
+tabw_i 0.47193715,333,gixdb_pitchadjust
+tabw_i 0.47193715,334,gixdb_pitchadjust
+tabw_i 0.47193715,335,gixdb_pitchadjust
+tabw_i 0.5,336,gixdb_pitchadjust
+tabw_i 0.5,337,gixdb_pitchadjust
+tabw_i 0.5,338,gixdb_pitchadjust
+tabw_i 0.5,339,gixdb_pitchadjust
+tabw_i 0.5,340,gixdb_pitchadjust
+tabw_i 0.5,341,gixdb_pitchadjust
+tabw_i 0.5297316,342,gixdb_pitchadjust
+tabw_i 0.5297316,343,gixdb_pitchadjust
+tabw_i 0.5297316,344,gixdb_pitchadjust
+tabw_i 0.5297316,345,gixdb_pitchadjust
+tabw_i 0.5297316,346,gixdb_pitchadjust
+tabw_i 0.5297316,347,gixdb_pitchadjust
+tabw_i 0.561231,348,gixdb_pitchadjust
+tabw_i 0.561231,349,gixdb_pitchadjust
+tabw_i 0.561231,350,gixdb_pitchadjust
+tabw_i 0.561231,351,gixdb_pitchadjust
+tabw_i 0.561231,352,gixdb_pitchadjust
+tabw_i 0.561231,353,gixdb_pitchadjust
+tabw_i 0.5946036,354,gixdb_pitchadjust
+tabw_i 0.5946036,355,gixdb_pitchadjust
+tabw_i 0.5946036,356,gixdb_pitchadjust
+tabw_i 0.5946036,357,gixdb_pitchadjust
+tabw_i 0.5946036,358,gixdb_pitchadjust
+tabw_i 0.5946036,359,gixdb_pitchadjust
+tabw_i 0.6299606,360,gixdb_pitchadjust
+tabw_i 0.6299606,361,gixdb_pitchadjust
+tabw_i 0.6299606,362,gixdb_pitchadjust
+tabw_i 0.6299606,363,gixdb_pitchadjust
+tabw_i 0.6299606,364,gixdb_pitchadjust
+tabw_i 0.6299606,365,gixdb_pitchadjust
+tabw_i 0.6674199,366,gixdb_pitchadjust
+tabw_i 0.6674199,367,gixdb_pitchadjust
+tabw_i 0.6674199,368,gixdb_pitchadjust
+tabw_i 0.6674199,369,gixdb_pitchadjust
+tabw_i 0.6674199,370,gixdb_pitchadjust
+tabw_i 0.6674199,371,gixdb_pitchadjust
+tabw_i 0.70710677,372,gixdb_pitchadjust
+tabw_i 0.70710677,373,gixdb_pitchadjust
+tabw_i 0.70710677,374,gixdb_pitchadjust
+tabw_i 0.70710677,375,gixdb_pitchadjust
+tabw_i 0.70710677,376,gixdb_pitchadjust
+tabw_i 0.70710677,377,gixdb_pitchadjust
+tabw_i 0.74915355,378,gixdb_pitchadjust
+tabw_i 0.74915355,379,gixdb_pitchadjust
+tabw_i 0.74915355,380,gixdb_pitchadjust
+tabw_i 0.74915355,381,gixdb_pitchadjust
+tabw_i 0.74915355,382,gixdb_pitchadjust
+tabw_i 0.74915355,383,gixdb_pitchadjust
+tabw_i 0.7937006,384,gixdb_pitchadjust
+tabw_i 0.7937006,385,gixdb_pitchadjust
+tabw_i 0.7937006,386,gixdb_pitchadjust
+tabw_i 0.7937006,387,gixdb_pitchadjust
+tabw_i 0.7937006,388,gixdb_pitchadjust
+tabw_i 0.7937006,389,gixdb_pitchadjust
+tabw_i 0.8408965,390,gixdb_pitchadjust
+tabw_i 0.8408965,391,gixdb_pitchadjust
+tabw_i 0.8408965,392,gixdb_pitchadjust
+tabw_i 0.8408965,393,gixdb_pitchadjust
+tabw_i 0.8408965,394,gixdb_pitchadjust
+tabw_i 0.8408965,395,gixdb_pitchadjust
+tabw_i 0.8908987,396,gixdb_pitchadjust
+tabw_i 0.8908987,397,gixdb_pitchadjust
+tabw_i 0.8908987,398,gixdb_pitchadjust
+tabw_i 0.8908987,399,gixdb_pitchadjust
+tabw_i 0.8908987,400,gixdb_pitchadjust
+tabw_i 0.8908987,401,gixdb_pitchadjust
+tabw_i 0.9438743,402,gixdb_pitchadjust
+tabw_i 0.9438743,403,gixdb_pitchadjust
+tabw_i 0.9438743,404,gixdb_pitchadjust
+tabw_i 0.9438743,405,gixdb_pitchadjust
+tabw_i 0.9438743,406,gixdb_pitchadjust
+tabw_i 0.9438743,407,gixdb_pitchadjust
+tabw_i 1,408,gixdb_pitchadjust
+tabw_i 1,409,gixdb_pitchadjust
+tabw_i 1,410,gixdb_pitchadjust
+tabw_i 1,411,gixdb_pitchadjust
+tabw_i 1,412,gixdb_pitchadjust
+tabw_i 1,413,gixdb_pitchadjust
+tabw_i 1.0594631,414,gixdb_pitchadjust
+tabw_i 1.0594631,415,gixdb_pitchadjust
+tabw_i 1.0594631,416,gixdb_pitchadjust
+tabw_i 0.9438743,417,gixdb_pitchadjust
+tabw_i 0.9438743,418,gixdb_pitchadjust
+tabw_i 1.0594631,419,gixdb_pitchadjust
+tabw_i 0.9438743,420,gixdb_pitchadjust
+tabw_i 0.9438743,421,gixdb_pitchadjust
+tabw_i 0.9438743,422,gixdb_pitchadjust
+tabw_i 1.0594631,423,gixdb_pitchadjust
+tabw_i 1.0594631,424,gixdb_pitchadjust
+tabw_i 1,425,gixdb_pitchadjust
+tabw_i 1,426,gixdb_pitchadjust
+tabw_i 1,427,gixdb_pitchadjust
+tabw_i 1,428,gixdb_pitchadjust
+tabw_i 1,429,gixdb_pitchadjust
+tabw_i 1.0594631,430,gixdb_pitchadjust
+tabw_i 1.0594631,431,gixdb_pitchadjust
+tabw_i 0.94387424,432,gixdb_pitchadjust
+tabw_i 0.94387424,433,gixdb_pitchadjust
+tabw_i 0.94387424,434,gixdb_pitchadjust
+tabw_i 1.0594631,435,gixdb_pitchadjust
+tabw_i 0.94387424,436,gixdb_pitchadjust
+tabw_i 1.0594631,437,gixdb_pitchadjust
+tabw_i 1.0594631,438,gixdb_pitchadjust
+tabw_i 1,439,gixdb_pitchadjust
+tabw_i 1,440,gixdb_pitchadjust
+tabw_i 1,441,gixdb_pitchadjust
+tabw_i 1,442,gixdb_pitchadjust
+tabw_i 1,443,gixdb_pitchadjust
+tabw_i 1,444,gixdb_pitchadjust
+tabw_i 1,445,gixdb_pitchadjust
+tabw_i 1.0594631,446,gixdb_pitchadjust
+tabw_i 0.9438743,447,gixdb_pitchadjust
+tabw_i 0.9438743,448,gixdb_pitchadjust
+tabw_i 1.0594631,449,gixdb_pitchadjust
+tabw_i 1.0594631,450,gixdb_pitchadjust
+tabw_i 0.9438743,451,gixdb_pitchadjust
+tabw_i 1,452,gixdb_pitchadjust
+tabw_i 1,453,gixdb_pitchadjust
+tabw_i 1,454,gixdb_pitchadjust
+tabw_i 0.9438743,455,gixdb_pitchadjust
+tabw_i 1.0594631,456,gixdb_pitchadjust
+tabw_i 1.0594631,457,gixdb_pitchadjust
+tabw_i 0.9438743,458,gixdb_pitchadjust
+tabw_i 0.9438743,459,gixdb_pitchadjust
+tabw_i 0.9438743,460,gixdb_pitchadjust
+tabw_i 1.0594631,461,gixdb_pitchadjust
+tabw_i 1,462,gixdb_pitchadjust
+tabw_i 1,463,gixdb_pitchadjust
+tabw_i 1,464,gixdb_pitchadjust
+tabw_i 1,465,gixdb_pitchadjust
+tabw_i 1.059463,466,gixdb_pitchadjust
+tabw_i 1.059463,467,gixdb_pitchadjust
+tabw_i 0.9438743,468,gixdb_pitchadjust
+tabw_i 0.9438743,469,gixdb_pitchadjust
+tabw_i 1.059463,470,gixdb_pitchadjust
+tabw_i 1.059463,471,gixdb_pitchadjust
+tabw_i 0.9438743,472,gixdb_pitchadjust
+tabw_i 0.9438743,473,gixdb_pitchadjust
+tabw_i 1,474,gixdb_pitchadjust
+tabw_i 1,475,gixdb_pitchadjust
+tabw_i 1,476,gixdb_pitchadjust
+tabw_i 1,477,gixdb_pitchadjust
+tabw_i 1,478,gixdb_pitchadjust
+tabw_i 1,479,gixdb_pitchadjust
+tabw_i 1,480,gixdb_pitchadjust
+tabw_i 1,481,gixdb_pitchadjust
+tabw_i 1.0594631,482,gixdb_pitchadjust
+tabw_i 0.9438743,483,gixdb_pitchadjust
+tabw_i 1.0594631,484,gixdb_pitchadjust
+tabw_i 0.9438743,485,gixdb_pitchadjust
+tabw_i 0.9438743,486,gixdb_pitchadjust
+tabw_i 0.9438743,487,gixdb_pitchadjust
+tabw_i 1.0594631,488,gixdb_pitchadjust
+tabw_i 1.0594631,489,gixdb_pitchadjust
+tabw_i 1,490,gixdb_pitchadjust
+tabw_i 1,491,gixdb_pitchadjust
+tabw_i 1,492,gixdb_pitchadjust
+tabw_i 1,493,gixdb_pitchadjust
+tabw_i 1.0594631,494,gixdb_pitchadjust
+tabw_i 1.0594631,495,gixdb_pitchadjust
+tabw_i 1.0594631,496,gixdb_pitchadjust
+tabw_i 0.94387424,497,gixdb_pitchadjust
+tabw_i 1.0594631,498,gixdb_pitchadjust
+tabw_i 0.94387424,499,gixdb_pitchadjust
+tabw_i 0.94387424,500,gixdb_pitchadjust
+tabw_i 0.94387424,501,gixdb_pitchadjust
+tabw_i 1,502,gixdb_pitchadjust
+tabw_i 1,503,gixdb_pitchadjust
+tabw_i 1,504,gixdb_pitchadjust
+tabw_i 1,505,gixdb_pitchadjust
+tabw_i 1,506,gixdb_pitchadjust
+tabw_i 1,507,gixdb_pitchadjust
+tabw_i 1,508,gixdb_pitchadjust
+tabw_i 1,509,gixdb_pitchadjust
+tabw_i 1.0594631,510,gixdb_pitchadjust
+tabw_i 1.0594631,511,gixdb_pitchadjust
+tabw_i 1.0594631,512,gixdb_pitchadjust
+tabw_i 0.9438743,513,gixdb_pitchadjust
+tabw_i 0.9438743,514,gixdb_pitchadjust
+tabw_i 0.9438743,515,gixdb_pitchadjust
+tabw_i 0.9438743,516,gixdb_pitchadjust
+tabw_i 0.9438743,517,gixdb_pitchadjust
+tabw_i 1.0594631,518,gixdb_pitchadjust
+tabw_i 1,519,gixdb_pitchadjust
+tabw_i 1,520,gixdb_pitchadjust
+tabw_i 1,521,gixdb_pitchadjust
+tabw_i 1,522,gixdb_pitchadjust
+tabw_i 1,523,gixdb_pitchadjust
+tabw_i 0.9438743,524,gixdb_pitchadjust
+tabw_i 1.0594631,525,gixdb_pitchadjust
+tabw_i 0.9438743,526,gixdb_pitchadjust
+tabw_i 1.0594631,527,gixdb_pitchadjust
+tabw_i 1.0594631,528,gixdb_pitchadjust
+tabw_i 1.0594631,529,gixdb_pitchadjust
+tabw_i 1.0594631,530,gixdb_pitchadjust
+tabw_i 0.9438743,531,gixdb_pitchadjust
+tabw_i 0.9438743,532,gixdb_pitchadjust
+tabw_i 1,533,gixdb_pitchadjust
+tabw_i 1,534,gixdb_pitchadjust
+tabw_i 1,535,gixdb_pitchadjust
+tabw_i 1,536,gixdb_pitchadjust
+tabw_i 1.059463,537,gixdb_pitchadjust
+tabw_i 0.9438743,538,gixdb_pitchadjust
+tabw_i 0.9438743,539,gixdb_pitchadjust
+tabw_i 1.059463,540,gixdb_pitchadjust
+tabw_i 0.9438743,541,gixdb_pitchadjust
+tabw_i 1.059463,542,gixdb_pitchadjust
+tabw_i 1.059463,543,gixdb_pitchadjust
+tabw_i 1,544,gixdb_pitchadjust
+tabw_i 1,545,gixdb_pitchadjust
+tabw_i 1,546,gixdb_pitchadjust
+tabw_i 1,547,gixdb_pitchadjust
+tabw_i 1,548,gixdb_pitchadjust
+tabw_i 1,549,gixdb_pitchadjust
+tabw_i 1.0594631,550,gixdb_pitchadjust
+tabw_i 1.0594631,551,gixdb_pitchadjust
+tabw_i 1.0594631,552,gixdb_pitchadjust
+tabw_i 1.122462,553,gixdb_pitchadjust
+tabw_i 1.122462,554,gixdb_pitchadjust
+tabw_i 1.122462,555,gixdb_pitchadjust
+tabw_i 1.1892072,556,gixdb_pitchadjust
+tabw_i 1.1892072,557,gixdb_pitchadjust
+tabw_i 1.1892072,558,gixdb_pitchadjust
+tabw_i 1.2599212,559,gixdb_pitchadjust
+tabw_i 1.2599212,560,gixdb_pitchadjust
+tabw_i 1.2599212,561,gixdb_pitchadjust
+tabw_i 1.3348398,562,gixdb_pitchadjust
+tabw_i 1.3348398,563,gixdb_pitchadjust
+tabw_i 1.3348398,564,gixdb_pitchadjust
+tabw_i 1.4142135,565,gixdb_pitchadjust
+tabw_i 1.4142135,566,gixdb_pitchadjust
+tabw_i 1.4142135,567,gixdb_pitchadjust
+tabw_i 1.4983071,568,gixdb_pitchadjust
+tabw_i 1.4983071,569,gixdb_pitchadjust
+tabw_i 1.4983071,570,gixdb_pitchadjust
+tabw_i 1.5874012,571,gixdb_pitchadjust
+tabw_i 1.5874012,572,gixdb_pitchadjust
+tabw_i 1.5874012,573,gixdb_pitchadjust
+tabw_i 1.681793,574,gixdb_pitchadjust
+tabw_i 1.681793,575,gixdb_pitchadjust
+tabw_i 1.681793,576,gixdb_pitchadjust
+tabw_i 1.7817974,577,gixdb_pitchadjust
+tabw_i 1.7817974,578,gixdb_pitchadjust
+tabw_i 1.7817974,579,gixdb_pitchadjust
+tabw_i 1.8877486,580,gixdb_pitchadjust
+tabw_i 1.8877486,581,gixdb_pitchadjust
+tabw_i 1.8877486,582,gixdb_pitchadjust
+tabw_i 2,583,gixdb_pitchadjust
+tabw_i 2,584,gixdb_pitchadjust
+tabw_i 2,585,gixdb_pitchadjust
+tabw_i 2.1189263,586,gixdb_pitchadjust
+tabw_i 2.1189263,587,gixdb_pitchadjust
+tabw_i 2.1189263,588,gixdb_pitchadjust
+tabw_i 2.244924,589,gixdb_pitchadjust
+tabw_i 2.244924,590,gixdb_pitchadjust
+tabw_i 2.244924,591,gixdb_pitchadjust
+tabw_i 2.3784144,592,gixdb_pitchadjust
+tabw_i 2.3784144,593,gixdb_pitchadjust
+tabw_i 2.3784144,594,gixdb_pitchadjust
+tabw_i 2.5198424,595,gixdb_pitchadjust
+tabw_i 2.5198424,596,gixdb_pitchadjust
+tabw_i 2.5198424,597,gixdb_pitchadjust
+tabw_i 2.6696796,598,gixdb_pitchadjust
+tabw_i 2.6696796,599,gixdb_pitchadjust
+tabw_i 2.6696796,600,gixdb_pitchadjust
+tabw_i 2.828427,601,gixdb_pitchadjust
+tabw_i 2.828427,602,gixdb_pitchadjust
+tabw_i 2.828427,603,gixdb_pitchadjust
+tabw_i 2.9966142,604,gixdb_pitchadjust
+tabw_i 2.9966142,605,gixdb_pitchadjust
+tabw_i 2.9966142,606,gixdb_pitchadjust
+tabw_i 3.1748023,607,gixdb_pitchadjust
+tabw_i 3.1748023,608,gixdb_pitchadjust
+tabw_i 3.1748023,609,gixdb_pitchadjust
+tabw_i 3.363586,610,gixdb_pitchadjust
+tabw_i 3.363586,611,gixdb_pitchadjust
+tabw_i 3.363586,612,gixdb_pitchadjust
+tabw_i 3.5635948,613,gixdb_pitchadjust
+tabw_i 3.5635948,614,gixdb_pitchadjust
+tabw_i 3.5635948,615,gixdb_pitchadjust
+tabw_i 3.7754972,616,gixdb_pitchadjust
+tabw_i 3.7754972,617,gixdb_pitchadjust
+tabw_i 3.7754972,618,gixdb_pitchadjust
+tabw_i 4,619,gixdb_pitchadjust
+tabw_i 4,620,gixdb_pitchadjust
+tabw_i 4,621,gixdb_pitchadjust
+tabw_i 4.2378526,622,gixdb_pitchadjust
+tabw_i 4.2378526,623,gixdb_pitchadjust
+tabw_i 4.2378526,624,gixdb_pitchadjust
+tabw_i 4.489848,625,gixdb_pitchadjust
+tabw_i 4.489848,626,gixdb_pitchadjust
+tabw_i 4.489848,627,gixdb_pitchadjust
+tabw_i 4.756829,628,gixdb_pitchadjust
+tabw_i 4.756829,629,gixdb_pitchadjust
+tabw_i 4.756829,630,gixdb_pitchadjust
+tabw_i 5.039685,631,gixdb_pitchadjust
+tabw_i 5.039685,632,gixdb_pitchadjust
+tabw_i 5.039685,633,gixdb_pitchadjust
+tabw_i 5.3393593,634,gixdb_pitchadjust
+tabw_i 5.3393593,635,gixdb_pitchadjust
+tabw_i 5.3393593,636,gixdb_pitchadjust
+tabw_i 5.656854,637,gixdb_pitchadjust
+tabw_i 5.656854,638,gixdb_pitchadjust
+tabw_i 5.656854,639,gixdb_pitchadjust
+tabw_i 5.9932284,640,gixdb_pitchadjust
+tabw_i 5.9932284,641,gixdb_pitchadjust
+tabw_i 5.9932284,642,gixdb_pitchadjust
+tabw_i 6.3496046,643,gixdb_pitchadjust
+tabw_i 6.3496046,644,gixdb_pitchadjust
+tabw_i 6.3496046,645,gixdb_pitchadjust
+tabw_i 6.727172,646,gixdb_pitchadjust
+tabw_i 6.727172,647,gixdb_pitchadjust
+tabw_i 6.727172,648,gixdb_pitchadjust
+tabw_i 7.1271896,649,gixdb_pitchadjust
+tabw_i 7.1271896,650,gixdb_pitchadjust
+tabw_i 7.1271896,651,gixdb_pitchadjust
+tabw_i 7.5509944,652,gixdb_pitchadjust
+tabw_i 7.5509944,653,gixdb_pitchadjust
+tabw_i 7.5509944,654,gixdb_pitchadjust
+tabw_i 0.03125,655,gixdb_pitchadjust
+tabw_i 0.03125,656,gixdb_pitchadjust
+tabw_i 0.03125,657,gixdb_pitchadjust
+tabw_i 0.03125,658,gixdb_pitchadjust
+tabw_i 0.03310822,659,gixdb_pitchadjust
+tabw_i 0.03310822,660,gixdb_pitchadjust
+tabw_i 0.03310822,661,gixdb_pitchadjust
+tabw_i 0.03310822,662,gixdb_pitchadjust
+tabw_i 0.035076935,663,gixdb_pitchadjust
+tabw_i 0.035076935,664,gixdb_pitchadjust
+tabw_i 0.035076935,665,gixdb_pitchadjust
+tabw_i 0.035076935,666,gixdb_pitchadjust
+tabw_i 0.03716272,667,gixdb_pitchadjust
+tabw_i 0.03716272,668,gixdb_pitchadjust
+tabw_i 0.03716272,669,gixdb_pitchadjust
+tabw_i 0.03716272,670,gixdb_pitchadjust
+tabw_i 0.03937253,671,gixdb_pitchadjust
+tabw_i 0.03937253,672,gixdb_pitchadjust
+tabw_i 0.03937253,673,gixdb_pitchadjust
+tabw_i 0.03937253,674,gixdb_pitchadjust
+tabw_i 0.041713744,675,gixdb_pitchadjust
+tabw_i 0.041713744,676,gixdb_pitchadjust
+tabw_i 0.041713744,677,gixdb_pitchadjust
+tabw_i 0.041713744,678,gixdb_pitchadjust
+tabw_i 0.04419417,679,gixdb_pitchadjust
+tabw_i 0.04419417,680,gixdb_pitchadjust
+tabw_i 0.04419417,681,gixdb_pitchadjust
+tabw_i 0.04419417,682,gixdb_pitchadjust
+tabw_i 0.046822093,683,gixdb_pitchadjust
+tabw_i 0.046822093,684,gixdb_pitchadjust
+tabw_i 0.046822093,685,gixdb_pitchadjust
+tabw_i 0.046822093,686,gixdb_pitchadjust
+tabw_i 0.04960628,687,gixdb_pitchadjust
+tabw_i 0.04960628,688,gixdb_pitchadjust
+tabw_i 0.04960628,689,gixdb_pitchadjust
+tabw_i 0.04960628,690,gixdb_pitchadjust
+tabw_i 0.052556023,691,gixdb_pitchadjust
+tabw_i 0.052556023,692,gixdb_pitchadjust
+tabw_i 0.052556023,693,gixdb_pitchadjust
+tabw_i 0.052556023,694,gixdb_pitchadjust
+tabw_i 0.055681165,695,gixdb_pitchadjust
+tabw_i 0.055681165,696,gixdb_pitchadjust
+tabw_i 0.055681165,697,gixdb_pitchadjust
+tabw_i 0.055681165,698,gixdb_pitchadjust
+tabw_i 0.05899214,699,gixdb_pitchadjust
+tabw_i 0.05899214,700,gixdb_pitchadjust
+tabw_i 0.05899214,701,gixdb_pitchadjust
+tabw_i 0.05899214,702,gixdb_pitchadjust
+tabw_i 0.0625,703,gixdb_pitchadjust
+tabw_i 0.0625,704,gixdb_pitchadjust
+tabw_i 0.0625,705,gixdb_pitchadjust
+tabw_i 0.0625,706,gixdb_pitchadjust
+tabw_i 0.06621644,707,gixdb_pitchadjust
+tabw_i 0.06621644,708,gixdb_pitchadjust
+tabw_i 0.06621644,709,gixdb_pitchadjust
+tabw_i 0.06621644,710,gixdb_pitchadjust
+tabw_i 0.07015387,711,gixdb_pitchadjust
+tabw_i 0.07015387,712,gixdb_pitchadjust
+tabw_i 0.07015387,713,gixdb_pitchadjust
+tabw_i 0.07015387,714,gixdb_pitchadjust
+tabw_i 0.07432544,715,gixdb_pitchadjust
+tabw_i 0.07432544,716,gixdb_pitchadjust
+tabw_i 0.07432544,717,gixdb_pitchadjust
+tabw_i 0.07432544,718,gixdb_pitchadjust
+tabw_i 0.07874506,719,gixdb_pitchadjust
+tabw_i 0.07874506,720,gixdb_pitchadjust
+tabw_i 0.07874506,721,gixdb_pitchadjust
+tabw_i 0.07874506,722,gixdb_pitchadjust
+tabw_i 0.08342749,723,gixdb_pitchadjust
+tabw_i 0.08342749,724,gixdb_pitchadjust
+tabw_i 0.08342749,725,gixdb_pitchadjust
+tabw_i 0.08342749,726,gixdb_pitchadjust
+tabw_i 0.08838834,727,gixdb_pitchadjust
+tabw_i 0.08838834,728,gixdb_pitchadjust
+tabw_i 0.08838834,729,gixdb_pitchadjust
+tabw_i 0.08838834,730,gixdb_pitchadjust
+tabw_i 0.09364419,731,gixdb_pitchadjust
+tabw_i 0.09364419,732,gixdb_pitchadjust
+tabw_i 0.09364419,733,gixdb_pitchadjust
+tabw_i 0.09364419,734,gixdb_pitchadjust
+tabw_i 0.09921256,735,gixdb_pitchadjust
+tabw_i 0.09921256,736,gixdb_pitchadjust
+tabw_i 0.09921256,737,gixdb_pitchadjust
+tabw_i 0.09921256,738,gixdb_pitchadjust
+tabw_i 0.105112046,739,gixdb_pitchadjust
+tabw_i 0.105112046,740,gixdb_pitchadjust
+tabw_i 0.105112046,741,gixdb_pitchadjust
+tabw_i 0.105112046,742,gixdb_pitchadjust
+tabw_i 0.11136233,743,gixdb_pitchadjust
+tabw_i 0.11136233,744,gixdb_pitchadjust
+tabw_i 0.11136233,745,gixdb_pitchadjust
+tabw_i 0.11136233,746,gixdb_pitchadjust
+tabw_i 0.11798428,747,gixdb_pitchadjust
+tabw_i 0.11798428,748,gixdb_pitchadjust
+tabw_i 0.11798428,749,gixdb_pitchadjust
+tabw_i 0.11798428,750,gixdb_pitchadjust
+tabw_i 0.125,751,gixdb_pitchadjust
+tabw_i 0.125,752,gixdb_pitchadjust
+tabw_i 0.125,753,gixdb_pitchadjust
+tabw_i 0.125,754,gixdb_pitchadjust
+tabw_i 0.13243288,755,gixdb_pitchadjust
+tabw_i 0.13243288,756,gixdb_pitchadjust
+tabw_i 0.13243288,757,gixdb_pitchadjust
+tabw_i 0.13243288,758,gixdb_pitchadjust
+tabw_i 0.14030774,759,gixdb_pitchadjust
+tabw_i 0.14030774,760,gixdb_pitchadjust
+tabw_i 0.14030774,761,gixdb_pitchadjust
+tabw_i 0.14030774,762,gixdb_pitchadjust
+tabw_i 0.14865088,763,gixdb_pitchadjust
+tabw_i 0.14865088,764,gixdb_pitchadjust
+tabw_i 0.14865088,765,gixdb_pitchadjust
+tabw_i 0.14865088,766,gixdb_pitchadjust
+tabw_i 0.15749012,767,gixdb_pitchadjust
+tabw_i 0.15749012,768,gixdb_pitchadjust
+tabw_i 0.15749012,769,gixdb_pitchadjust
+tabw_i 0.15749012,770,gixdb_pitchadjust
+tabw_i 0.16685498,771,gixdb_pitchadjust
+tabw_i 0.16685498,772,gixdb_pitchadjust
+tabw_i 0.16685498,773,gixdb_pitchadjust
+tabw_i 0.16685498,774,gixdb_pitchadjust
+tabw_i 0.17677668,775,gixdb_pitchadjust
+tabw_i 0.17677668,776,gixdb_pitchadjust
+tabw_i 0.17677668,777,gixdb_pitchadjust
+tabw_i 0.17677668,778,gixdb_pitchadjust
+tabw_i 0.18728837,779,gixdb_pitchadjust
+tabw_i 0.18728837,780,gixdb_pitchadjust
+tabw_i 0.18728837,781,gixdb_pitchadjust
+tabw_i 0.18728837,782,gixdb_pitchadjust
+tabw_i 0.19842511,783,gixdb_pitchadjust
+tabw_i 0.19842511,784,gixdb_pitchadjust
+tabw_i 0.19842511,785,gixdb_pitchadjust
+tabw_i 0.19842511,786,gixdb_pitchadjust
+tabw_i 0.21022409,787,gixdb_pitchadjust
+tabw_i 0.21022409,788,gixdb_pitchadjust
+tabw_i 0.21022409,789,gixdb_pitchadjust
+tabw_i 0.21022409,790,gixdb_pitchadjust
+tabw_i 0.22272466,791,gixdb_pitchadjust
+tabw_i 0.22272466,792,gixdb_pitchadjust
+tabw_i 0.22272466,793,gixdb_pitchadjust
+tabw_i 0.22272466,794,gixdb_pitchadjust
+tabw_i 0.23596856,795,gixdb_pitchadjust
+tabw_i 0.23596856,796,gixdb_pitchadjust
+tabw_i 0.23596856,797,gixdb_pitchadjust
+tabw_i 0.23596856,798,gixdb_pitchadjust
+tabw_i 0.25,799,gixdb_pitchadjust
+tabw_i 0.25,800,gixdb_pitchadjust
+tabw_i 0.25,801,gixdb_pitchadjust
+tabw_i 0.25,802,gixdb_pitchadjust
+tabw_i 0.26486576,803,gixdb_pitchadjust
+tabw_i 0.26486576,804,gixdb_pitchadjust
+tabw_i 0.26486576,805,gixdb_pitchadjust
+tabw_i 0.26486576,806,gixdb_pitchadjust
+tabw_i 0.28061548,807,gixdb_pitchadjust
+tabw_i 0.28061548,808,gixdb_pitchadjust
+tabw_i 0.28061548,809,gixdb_pitchadjust
+tabw_i 0.28061548,810,gixdb_pitchadjust
+tabw_i 0.29730177,811,gixdb_pitchadjust
+tabw_i 0.29730177,812,gixdb_pitchadjust
+tabw_i 0.29730177,813,gixdb_pitchadjust
+tabw_i 0.29730177,814,gixdb_pitchadjust
+tabw_i 0.31498024,815,gixdb_pitchadjust
+tabw_i 0.31498024,816,gixdb_pitchadjust
+tabw_i 0.31498024,817,gixdb_pitchadjust
+tabw_i 0.31498024,818,gixdb_pitchadjust
+tabw_i 0.33370996,819,gixdb_pitchadjust
+tabw_i 0.33370996,820,gixdb_pitchadjust
+tabw_i 0.33370996,821,gixdb_pitchadjust
+tabw_i 0.33370996,822,gixdb_pitchadjust
+tabw_i 0.35355335,823,gixdb_pitchadjust
+tabw_i 0.35355335,824,gixdb_pitchadjust
+tabw_i 0.35355335,825,gixdb_pitchadjust
+tabw_i 0.35355335,826,gixdb_pitchadjust
+tabw_i 0.37457675,827,gixdb_pitchadjust
+tabw_i 0.37457675,828,gixdb_pitchadjust
+tabw_i 0.37457675,829,gixdb_pitchadjust
+tabw_i 0.37457675,830,gixdb_pitchadjust
+tabw_i 0.39685023,831,gixdb_pitchadjust
+tabw_i 0.39685023,832,gixdb_pitchadjust
+tabw_i 0.39685023,833,gixdb_pitchadjust
+tabw_i 0.39685023,834,gixdb_pitchadjust
+tabw_i 0.42044818,835,gixdb_pitchadjust
+tabw_i 0.42044818,836,gixdb_pitchadjust
+tabw_i 0.42044818,837,gixdb_pitchadjust
+tabw_i 0.42044818,838,gixdb_pitchadjust
+tabw_i 0.44544932,839,gixdb_pitchadjust
+tabw_i 0.44544932,840,gixdb_pitchadjust
+tabw_i 0.44544932,841,gixdb_pitchadjust
+tabw_i 0.44544932,842,gixdb_pitchadjust
+tabw_i 0.47193712,843,gixdb_pitchadjust
+tabw_i 0.47193712,844,gixdb_pitchadjust
+tabw_i 0.47193712,845,gixdb_pitchadjust
+tabw_i 0.47193712,846,gixdb_pitchadjust
+tabw_i 0.5,847,gixdb_pitchadjust
+tabw_i 0.5,848,gixdb_pitchadjust
+tabw_i 0.5,849,gixdb_pitchadjust
+tabw_i 0.5,850,gixdb_pitchadjust
+tabw_i 0.5297315,851,gixdb_pitchadjust
+tabw_i 0.5297315,852,gixdb_pitchadjust
+tabw_i 0.5297315,853,gixdb_pitchadjust
+tabw_i 0.5297315,854,gixdb_pitchadjust
+tabw_i 0.56123096,855,gixdb_pitchadjust
+tabw_i 0.56123096,856,gixdb_pitchadjust
+tabw_i 0.56123096,857,gixdb_pitchadjust
+tabw_i 0.56123096,858,gixdb_pitchadjust
+tabw_i 0.59460354,859,gixdb_pitchadjust
+tabw_i 0.59460354,860,gixdb_pitchadjust
+tabw_i 0.59460354,861,gixdb_pitchadjust
+tabw_i 0.59460354,862,gixdb_pitchadjust
+tabw_i 0.6299605,863,gixdb_pitchadjust
+tabw_i 0.6299605,864,gixdb_pitchadjust
+tabw_i 0.6299605,865,gixdb_pitchadjust
+tabw_i 0.6299605,866,gixdb_pitchadjust
+tabw_i 0.6674199,867,gixdb_pitchadjust
+tabw_i 0.6674199,868,gixdb_pitchadjust
+tabw_i 0.6674199,869,gixdb_pitchadjust
+tabw_i 0.6674199,870,gixdb_pitchadjust
+tabw_i 0.7071067,871,gixdb_pitchadjust
+tabw_i 0.7071067,872,gixdb_pitchadjust
+tabw_i 0.7071067,873,gixdb_pitchadjust
+tabw_i 0.7071067,874,gixdb_pitchadjust
+tabw_i 0.7491535,875,gixdb_pitchadjust
+tabw_i 0.7491535,876,gixdb_pitchadjust
+tabw_i 0.7491535,877,gixdb_pitchadjust
+tabw_i 0.7491535,878,gixdb_pitchadjust
+tabw_i 0.79370046,879,gixdb_pitchadjust
+tabw_i 0.79370046,880,gixdb_pitchadjust
+tabw_i 0.79370046,881,gixdb_pitchadjust
+tabw_i 0.79370046,882,gixdb_pitchadjust
+tabw_i 0.84089637,883,gixdb_pitchadjust
+tabw_i 0.84089637,884,gixdb_pitchadjust
+tabw_i 0.84089637,885,gixdb_pitchadjust
+tabw_i 0.84089637,886,gixdb_pitchadjust
+tabw_i 0.89089864,887,gixdb_pitchadjust
+tabw_i 0.89089864,888,gixdb_pitchadjust
+tabw_i 0.89089864,889,gixdb_pitchadjust
+tabw_i 0.89089864,890,gixdb_pitchadjust
+tabw_i 0.94387424,891,gixdb_pitchadjust
+tabw_i 0.94387424,892,gixdb_pitchadjust
+tabw_i 0.94387424,893,gixdb_pitchadjust
+tabw_i 0.94387424,894,gixdb_pitchadjust
+tabw_i 1,895,gixdb_pitchadjust
+tabw_i 1,896,gixdb_pitchadjust
+tabw_i 1,897,gixdb_pitchadjust
+tabw_i 1,898,gixdb_pitchadjust
+tabw_i 1.059463,899,gixdb_pitchadjust
+tabw_i 0.9438743,900,gixdb_pitchadjust
+tabw_i 0.9438743,901,gixdb_pitchadjust
+tabw_i 1.059463,902,gixdb_pitchadjust
+tabw_i 0.9438743,903,gixdb_pitchadjust
+tabw_i 1.059463,904,gixdb_pitchadjust
+tabw_i 1.059463,905,gixdb_pitchadjust
+tabw_i 0.9438743,906,gixdb_pitchadjust
+tabw_i 1,907,gixdb_pitchadjust
+tabw_i 1,908,gixdb_pitchadjust
+tabw_i 1,909,gixdb_pitchadjust
+tabw_i 1,910,gixdb_pitchadjust
+tabw_i 0.9438743,911,gixdb_pitchadjust
+tabw_i 1.0594631,912,gixdb_pitchadjust
+tabw_i 1.0594631,913,gixdb_pitchadjust
+tabw_i 0.9438743,914,gixdb_pitchadjust
+tabw_i 1.0594631,915,gixdb_pitchadjust
+tabw_i 0.9438743,916,gixdb_pitchadjust
+tabw_i 0.9438743,917,gixdb_pitchadjust
+tabw_i 1.0594631,918,gixdb_pitchadjust
+tabw_i 1,919,gixdb_pitchadjust
+tabw_i 1,920,gixdb_pitchadjust
+tabw_i 1,921,gixdb_pitchadjust
+tabw_i 1,922,gixdb_pitchadjust
+tabw_i 1,923,gixdb_pitchadjust
+tabw_i 1,924,gixdb_pitchadjust
+tabw_i 1,925,gixdb_pitchadjust
+tabw_i 1,926,gixdb_pitchadjust
+tabw_i 1,927,gixdb_pitchadjust
+tabw_i 1.059463,928,gixdb_pitchadjust
+tabw_i 0.9438743,929,gixdb_pitchadjust
+tabw_i 1.059463,930,gixdb_pitchadjust
+tabw_i 0.9438743,931,gixdb_pitchadjust
+tabw_i 1.059463,932,gixdb_pitchadjust
+tabw_i 0.9438743,933,gixdb_pitchadjust
+tabw_i 1.059463,934,gixdb_pitchadjust
+tabw_i 1.059463,935,gixdb_pitchadjust
+tabw_i 0.9438743,936,gixdb_pitchadjust
+tabw_i 0.9438743,937,gixdb_pitchadjust
+tabw_i 1,938,gixdb_pitchadjust
+tabw_i 1,939,gixdb_pitchadjust
+tabw_i 1,940,gixdb_pitchadjust
+tabw_i 1,941,gixdb_pitchadjust
+tabw_i 1,942,gixdb_pitchadjust
+tabw_i 0.9438743,943,gixdb_pitchadjust
+tabw_i 0.9438743,944,gixdb_pitchadjust
+tabw_i 1.0594631,945,gixdb_pitchadjust
+tabw_i 1.0594631,946,gixdb_pitchadjust
+tabw_i 0.9438743,947,gixdb_pitchadjust
+tabw_i 0.9438743,948,gixdb_pitchadjust
+tabw_i 1.0594631,949,gixdb_pitchadjust
+tabw_i 0.9438743,950,gixdb_pitchadjust
+tabw_i 1.0594631,951,gixdb_pitchadjust
+tabw_i 1.0594631,952,gixdb_pitchadjust
+tabw_i 1,953,gixdb_pitchadjust
+tabw_i 1,954,gixdb_pitchadjust
+tabw_i 1,955,gixdb_pitchadjust
+tabw_i 1,956,gixdb_pitchadjust
+tabw_i 1,957,gixdb_pitchadjust
+tabw_i 1.0594631,958,gixdb_pitchadjust
+tabw_i 1.0594631,959,gixdb_pitchadjust
+tabw_i 1.0594631,960,gixdb_pitchadjust
+tabw_i 1.0594631,961,gixdb_pitchadjust
+tabw_i 0.9438743,962,gixdb_pitchadjust
+tabw_i 0.9438743,963,gixdb_pitchadjust
+tabw_i 1.0594631,964,gixdb_pitchadjust
+tabw_i 0.9438743,965,gixdb_pitchadjust
+tabw_i 0.9438743,966,gixdb_pitchadjust
+tabw_i 0.9438743,967,gixdb_pitchadjust
+tabw_i 1,968,gixdb_pitchadjust
+tabw_i 1,969,gixdb_pitchadjust
+tabw_i 1,970,gixdb_pitchadjust
+tabw_i 1,971,gixdb_pitchadjust
+tabw_i 1,972,gixdb_pitchadjust
+tabw_i 1,973,gixdb_pitchadjust
+tabw_i 1,974,gixdb_pitchadjust
+tabw_i 1,975,gixdb_pitchadjust
+tabw_i 1,976,gixdb_pitchadjust
+tabw_i 0.9438743,977,gixdb_pitchadjust
+tabw_i 0.9438743,978,gixdb_pitchadjust
+tabw_i 1.059463,979,gixdb_pitchadjust
+tabw_i 1.059463,980,gixdb_pitchadjust
+tabw_i 1.059463,981,gixdb_pitchadjust
+tabw_i 0.9438743,982,gixdb_pitchadjust
+tabw_i 1.059463,983,gixdb_pitchadjust
+tabw_i 0.9438743,984,gixdb_pitchadjust
+tabw_i 1,985,gixdb_pitchadjust
+tabw_i 1,986,gixdb_pitchadjust
+tabw_i 1,987,gixdb_pitchadjust
+tabw_i 1,988,gixdb_pitchadjust
+tabw_i 0.9438743,989,gixdb_pitchadjust
+tabw_i 1.0594631,990,gixdb_pitchadjust
+tabw_i 1.0594631,991,gixdb_pitchadjust
+tabw_i 1.0594631,992,gixdb_pitchadjust
+tabw_i 0.9438743,993,gixdb_pitchadjust
+tabw_i 0.9438743,994,gixdb_pitchadjust
+tabw_i 1.0594631,995,gixdb_pitchadjust
+tabw_i 0.9438743,996,gixdb_pitchadjust
+tabw_i 1,997,gixdb_pitchadjust
+tabw_i 1,998,gixdb_pitchadjust
+tabw_i 1,999,gixdb_pitchadjust
+tabw_i 1,1000,gixdb_pitchadjust
+tabw_i 1,1001,gixdb_pitchadjust
+tabw_i 1,1002,gixdb_pitchadjust
+tabw_i 1,1003,gixdb_pitchadjust
+tabw_i 1,1004,gixdb_pitchadjust
+tabw_i 1,1005,gixdb_pitchadjust
+tabw_i 1.059463,1006,gixdb_pitchadjust
+tabw_i 1.059463,1007,gixdb_pitchadjust
+tabw_i 0.9438743,1008,gixdb_pitchadjust
+tabw_i 0.9438743,1009,gixdb_pitchadjust
+tabw_i 1.059463,1010,gixdb_pitchadjust
+tabw_i 1.059463,1011,gixdb_pitchadjust
+tabw_i 1.059463,1012,gixdb_pitchadjust
+tabw_i 0.9438743,1013,gixdb_pitchadjust
+tabw_i 0.9438743,1014,gixdb_pitchadjust
+tabw_i 1,1015,gixdb_pitchadjust
+tabw_i 1,1016,gixdb_pitchadjust
+tabw_i 1,1017,gixdb_pitchadjust
+tabw_i 1,1018,gixdb_pitchadjust
+tabw_i 1.0594631,1019,gixdb_pitchadjust
+tabw_i 0.9438743,1020,gixdb_pitchadjust
+tabw_i 0.9438743,1021,gixdb_pitchadjust
+tabw_i 1.0594631,1022,gixdb_pitchadjust
+tabw_i 0.9438743,1023,gixdb_pitchadjust
+tabw_i 0.9438743,1024,gixdb_pitchadjust
+tabw_i 0.9438743,1025,gixdb_pitchadjust
+tabw_i 1.0594631,1026,gixdb_pitchadjust
+tabw_i 1.0594631,1027,gixdb_pitchadjust
+tabw_i 1,1028,gixdb_pitchadjust
+tabw_i 1,1029,gixdb_pitchadjust
+tabw_i 1,1030,gixdb_pitchadjust
+tabw_i 1,1031,gixdb_pitchadjust
+tabw_i 1,1032,gixdb_pitchadjust
+tabw_i 0.9438743,1033,gixdb_pitchadjust
+tabw_i 0.9438743,1034,gixdb_pitchadjust
+tabw_i 0.9438743,1035,gixdb_pitchadjust
+tabw_i 1.0594631,1036,gixdb_pitchadjust
+tabw_i 1.0594631,1037,gixdb_pitchadjust
+tabw_i 1.0594631,1038,gixdb_pitchadjust
+tabw_i 1.0594631,1039,gixdb_pitchadjust
+tabw_i 0.9438743,1040,gixdb_pitchadjust
+tabw_i 1.0594631,1041,gixdb_pitchadjust
+tabw_i 0.9438743,1042,gixdb_pitchadjust
+tabw_i 1,1043,gixdb_pitchadjust
+tabw_i 1,1044,gixdb_pitchadjust
+tabw_i 1,1045,gixdb_pitchadjust
+tabw_i 1,1046,gixdb_pitchadjust
+tabw_i 1,1047,gixdb_pitchadjust
+tabw_i 1,1048,gixdb_pitchadjust
+tabw_i 1,1049,gixdb_pitchadjust
+tabw_i 1,1050,gixdb_pitchadjust
+tabw_i 1,1051,gixdb_pitchadjust
+tabw_i 0.9438743,1052,gixdb_pitchadjust
+tabw_i 0.9438743,1053,gixdb_pitchadjust
+tabw_i 1.059463,1054,gixdb_pitchadjust
+tabw_i 0.9438743,1055,gixdb_pitchadjust
+tabw_i 1.059463,1056,gixdb_pitchadjust
+tabw_i 1.059463,1057,gixdb_pitchadjust
+tabw_i 0.9438743,1058,gixdb_pitchadjust
+tabw_i 1.059463,1059,gixdb_pitchadjust
+tabw_i 1,1060,gixdb_pitchadjust
+tabw_i 1,1061,gixdb_pitchadjust
+tabw_i 1,1062,gixdb_pitchadjust
+tabw_i 1,1063,gixdb_pitchadjust
+tabw_i 0.9438743,1064,gixdb_pitchadjust
+tabw_i 1.0594631,1065,gixdb_pitchadjust
+tabw_i 1.0594631,1066,gixdb_pitchadjust
+tabw_i 1.0594631,1067,gixdb_pitchadjust
+tabw_i 0.9438743,1068,gixdb_pitchadjust
+tabw_i 0.9438743,1069,gixdb_pitchadjust
+tabw_i 1.0594631,1070,gixdb_pitchadjust
+tabw_i 1,1071,gixdb_pitchadjust
+tabw_i 1,1072,gixdb_pitchadjust
+tabw_i 1,1073,gixdb_pitchadjust
+tabw_i 1.0594631,1074,gixdb_pitchadjust
+tabw_i 1.0594631,1075,gixdb_pitchadjust
+tabw_i 1.0594631,1076,gixdb_pitchadjust
+tabw_i 1.122462,1077,gixdb_pitchadjust
+tabw_i 1.122462,1078,gixdb_pitchadjust
+tabw_i 1.122462,1079,gixdb_pitchadjust
+tabw_i 1.1892071,1080,gixdb_pitchadjust
+tabw_i 1.1892071,1081,gixdb_pitchadjust
+tabw_i 1.1892071,1082,gixdb_pitchadjust
+tabw_i 1.259921,1083,gixdb_pitchadjust
+tabw_i 1.259921,1084,gixdb_pitchadjust
+tabw_i 1.259921,1085,gixdb_pitchadjust
+tabw_i 1.3348398,1086,gixdb_pitchadjust
+tabw_i 1.3348398,1087,gixdb_pitchadjust
+tabw_i 1.3348398,1088,gixdb_pitchadjust
+tabw_i 1.4142135,1089,gixdb_pitchadjust
+tabw_i 1.4142135,1090,gixdb_pitchadjust
+tabw_i 1.4142135,1091,gixdb_pitchadjust
+tabw_i 1.498307,1092,gixdb_pitchadjust
+tabw_i 1.498307,1093,gixdb_pitchadjust
+tabw_i 1.498307,1094,gixdb_pitchadjust
+tabw_i 1.5874012,1095,gixdb_pitchadjust
+tabw_i 1.5874012,1096,gixdb_pitchadjust
+tabw_i 1.5874012,1097,gixdb_pitchadjust
+tabw_i 1.6817927,1098,gixdb_pitchadjust
+tabw_i 1.6817927,1099,gixdb_pitchadjust
+tabw_i 1.6817927,1100,gixdb_pitchadjust
+tabw_i 1.7817974,1101,gixdb_pitchadjust
+tabw_i 1.7817974,1102,gixdb_pitchadjust
+tabw_i 1.7817974,1103,gixdb_pitchadjust
+tabw_i 1.8877486,1104,gixdb_pitchadjust
+tabw_i 1.8877486,1105,gixdb_pitchadjust
+tabw_i 1.8877486,1106,gixdb_pitchadjust
+tabw_i 2,1107,gixdb_pitchadjust
+tabw_i 2,1108,gixdb_pitchadjust
+tabw_i 2,1109,gixdb_pitchadjust
+tabw_i 2.1189263,1110,gixdb_pitchadjust
+tabw_i 2.1189263,1111,gixdb_pitchadjust
+tabw_i 2.1189263,1112,gixdb_pitchadjust
+tabw_i 2.244924,1113,gixdb_pitchadjust
+tabw_i 2.244924,1114,gixdb_pitchadjust
+tabw_i 2.244924,1115,gixdb_pitchadjust
+tabw_i 2.3784142,1116,gixdb_pitchadjust
+tabw_i 2.3784142,1117,gixdb_pitchadjust
+tabw_i 2.3784142,1118,gixdb_pitchadjust
+tabw_i 2.519842,1119,gixdb_pitchadjust
+tabw_i 2.519842,1120,gixdb_pitchadjust
+tabw_i 2.519842,1121,gixdb_pitchadjust
+tabw_i 2.6696796,1122,gixdb_pitchadjust
+tabw_i 2.6696796,1123,gixdb_pitchadjust
+tabw_i 2.6696796,1124,gixdb_pitchadjust
+tabw_i 2.828427,1125,gixdb_pitchadjust
+tabw_i 2.828427,1126,gixdb_pitchadjust
+tabw_i 2.828427,1127,gixdb_pitchadjust
+tabw_i 2.996614,1128,gixdb_pitchadjust
+tabw_i 2.996614,1129,gixdb_pitchadjust
+tabw_i 2.996614,1130,gixdb_pitchadjust
+tabw_i 3.1748023,1131,gixdb_pitchadjust
+tabw_i 3.1748023,1132,gixdb_pitchadjust
+tabw_i 3.1748023,1133,gixdb_pitchadjust
+tabw_i 3.3635855,1134,gixdb_pitchadjust
+tabw_i 3.3635855,1135,gixdb_pitchadjust
+tabw_i 3.3635855,1136,gixdb_pitchadjust
+tabw_i 3.5635948,1137,gixdb_pitchadjust
+tabw_i 3.5635948,1138,gixdb_pitchadjust
+tabw_i 3.5635948,1139,gixdb_pitchadjust
+tabw_i 3.7754972,1140,gixdb_pitchadjust
+tabw_i 3.7754972,1141,gixdb_pitchadjust
+tabw_i 3.7754972,1142,gixdb_pitchadjust
+tabw_i 4,1143,gixdb_pitchadjust
+tabw_i 4,1144,gixdb_pitchadjust
+tabw_i 4,1145,gixdb_pitchadjust
+tabw_i 4.2378526,1146,gixdb_pitchadjust
+tabw_i 4.2378526,1147,gixdb_pitchadjust
+tabw_i 4.2378526,1148,gixdb_pitchadjust
+tabw_i 4.489848,1149,gixdb_pitchadjust
+tabw_i 4.489848,1150,gixdb_pitchadjust
+tabw_i 4.489848,1151,gixdb_pitchadjust
+tabw_i 4.7568283,1152,gixdb_pitchadjust
+tabw_i 4.7568283,1153,gixdb_pitchadjust
+tabw_i 4.7568283,1154,gixdb_pitchadjust
+tabw_i 5.039684,1155,gixdb_pitchadjust
+tabw_i 5.039684,1156,gixdb_pitchadjust
+tabw_i 5.039684,1157,gixdb_pitchadjust
+tabw_i 5.3393593,1158,gixdb_pitchadjust
+tabw_i 5.3393593,1159,gixdb_pitchadjust
+tabw_i 5.3393593,1160,gixdb_pitchadjust
+tabw_i 5.656854,1161,gixdb_pitchadjust
+tabw_i 5.656854,1162,gixdb_pitchadjust
+tabw_i 5.656854,1163,gixdb_pitchadjust
+tabw_i 5.993228,1164,gixdb_pitchadjust
+tabw_i 5.993228,1165,gixdb_pitchadjust
+tabw_i 5.993228,1166,gixdb_pitchadjust
+tabw_i 6.3496046,1167,gixdb_pitchadjust
+tabw_i 6.3496046,1168,gixdb_pitchadjust
+tabw_i 6.3496046,1169,gixdb_pitchadjust
+tabw_i 6.727171,1170,gixdb_pitchadjust
+tabw_i 6.727171,1171,gixdb_pitchadjust
+tabw_i 6.727171,1172,gixdb_pitchadjust
+tabw_i 7.1271896,1173,gixdb_pitchadjust
+tabw_i 7.1271896,1174,gixdb_pitchadjust
+tabw_i 7.1271896,1175,gixdb_pitchadjust
+tabw_i 7.5509944,1176,gixdb_pitchadjust
+tabw_i 7.5509944,1177,gixdb_pitchadjust
+tabw_i 7.5509944,1178,gixdb_pitchadjust
+tabw_i 8,1179,gixdb_pitchadjust
+tabw_i 8,1180,gixdb_pitchadjust
+tabw_i 8,1181,gixdb_pitchadjust
+tabw_i 8.475705,1182,gixdb_pitchadjust
+tabw_i 8.475705,1183,gixdb_pitchadjust
+tabw_i 8.475705,1184,gixdb_pitchadjust
+tabw_i 8.979696,1185,gixdb_pitchadjust
+tabw_i 8.979696,1186,gixdb_pitchadjust
+tabw_i 8.979696,1187,gixdb_pitchadjust
+tabw_i 9.513657,1188,gixdb_pitchadjust
+tabw_i 9.513657,1189,gixdb_pitchadjust
+tabw_i 9.513657,1190,gixdb_pitchadjust
diff --git a/site/app/partialemergence/sounds/Kalimba/60.0.mp3 b/site/app/partialemergence/sounds/Kalimba/60.0.mp3
new file mode 100644
index 0000000..63ab3ae
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/60.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/60.1.mp3 b/site/app/partialemergence/sounds/Kalimba/60.1.mp3
new file mode 100644
index 0000000..347c5af
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/60.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/60.2.mp3 b/site/app/partialemergence/sounds/Kalimba/60.2.mp3
new file mode 100644
index 0000000..f1ddfe7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/60.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/60.3.mp3 b/site/app/partialemergence/sounds/Kalimba/60.3.mp3
new file mode 100644
index 0000000..fd0e300
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/60.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/62.0.mp3 b/site/app/partialemergence/sounds/Kalimba/62.0.mp3
new file mode 100644
index 0000000..759075f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/62.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/62.1.mp3 b/site/app/partialemergence/sounds/Kalimba/62.1.mp3
new file mode 100644
index 0000000..c9b023c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/62.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/62.2.mp3 b/site/app/partialemergence/sounds/Kalimba/62.2.mp3
new file mode 100644
index 0000000..0954eea
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/62.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/62.3.mp3 b/site/app/partialemergence/sounds/Kalimba/62.3.mp3
new file mode 100644
index 0000000..b8675c7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/62.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/64.0.mp3 b/site/app/partialemergence/sounds/Kalimba/64.0.mp3
new file mode 100644
index 0000000..6f82a28
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/64.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/64.1.mp3 b/site/app/partialemergence/sounds/Kalimba/64.1.mp3
new file mode 100644
index 0000000..49ae0f3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/64.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/64.2.mp3 b/site/app/partialemergence/sounds/Kalimba/64.2.mp3
new file mode 100644
index 0000000..4fe11e0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/64.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/64.3.mp3 b/site/app/partialemergence/sounds/Kalimba/64.3.mp3
new file mode 100644
index 0000000..63299a6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/64.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/65.0.mp3 b/site/app/partialemergence/sounds/Kalimba/65.0.mp3
new file mode 100644
index 0000000..744a297
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/65.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/65.1.mp3 b/site/app/partialemergence/sounds/Kalimba/65.1.mp3
new file mode 100644
index 0000000..2a87845
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/65.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/65.2.mp3 b/site/app/partialemergence/sounds/Kalimba/65.2.mp3
new file mode 100644
index 0000000..d5ab60f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/65.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/65.3.mp3 b/site/app/partialemergence/sounds/Kalimba/65.3.mp3
new file mode 100644
index 0000000..3da5771
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/65.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/65.4.mp3 b/site/app/partialemergence/sounds/Kalimba/65.4.mp3
new file mode 100644
index 0000000..95acc43
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/65.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/67.0.mp3 b/site/app/partialemergence/sounds/Kalimba/67.0.mp3
new file mode 100644
index 0000000..b5d681d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/67.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/67.1.mp3 b/site/app/partialemergence/sounds/Kalimba/67.1.mp3
new file mode 100644
index 0000000..c80b8f8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/67.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/67.2.mp3 b/site/app/partialemergence/sounds/Kalimba/67.2.mp3
new file mode 100644
index 0000000..eb8e56e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/67.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/67.3.mp3 b/site/app/partialemergence/sounds/Kalimba/67.3.mp3
new file mode 100644
index 0000000..7b16c62
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/67.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/67.4.mp3 b/site/app/partialemergence/sounds/Kalimba/67.4.mp3
new file mode 100644
index 0000000..edc4956
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/67.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/69.0.mp3 b/site/app/partialemergence/sounds/Kalimba/69.0.mp3
new file mode 100644
index 0000000..b052fba
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/69.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/69.1.mp3 b/site/app/partialemergence/sounds/Kalimba/69.1.mp3
new file mode 100644
index 0000000..e9707a3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/69.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/69.2.mp3 b/site/app/partialemergence/sounds/Kalimba/69.2.mp3
new file mode 100644
index 0000000..2481606
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/69.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/69.3.mp3 b/site/app/partialemergence/sounds/Kalimba/69.3.mp3
new file mode 100644
index 0000000..ab9f063
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/69.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/69.4.mp3 b/site/app/partialemergence/sounds/Kalimba/69.4.mp3
new file mode 100644
index 0000000..f5141ea
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/69.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/71.0.mp3 b/site/app/partialemergence/sounds/Kalimba/71.0.mp3
new file mode 100644
index 0000000..b002709
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/71.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/71.1.mp3 b/site/app/partialemergence/sounds/Kalimba/71.1.mp3
new file mode 100644
index 0000000..84911f3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/71.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/71.2.mp3 b/site/app/partialemergence/sounds/Kalimba/71.2.mp3
new file mode 100644
index 0000000..1fd314c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/71.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/71.3.mp3 b/site/app/partialemergence/sounds/Kalimba/71.3.mp3
new file mode 100644
index 0000000..b63143d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/71.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/71.4.mp3 b/site/app/partialemergence/sounds/Kalimba/71.4.mp3
new file mode 100644
index 0000000..983f435
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/71.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/72.0.mp3 b/site/app/partialemergence/sounds/Kalimba/72.0.mp3
new file mode 100644
index 0000000..2dd622c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/72.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/72.1.mp3 b/site/app/partialemergence/sounds/Kalimba/72.1.mp3
new file mode 100644
index 0000000..df2770a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/72.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/72.2.mp3 b/site/app/partialemergence/sounds/Kalimba/72.2.mp3
new file mode 100644
index 0000000..38b391a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/72.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/72.3.mp3 b/site/app/partialemergence/sounds/Kalimba/72.3.mp3
new file mode 100644
index 0000000..e792a22
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/72.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/74.0.mp3 b/site/app/partialemergence/sounds/Kalimba/74.0.mp3
new file mode 100644
index 0000000..56cc890
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/74.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/74.1.mp3 b/site/app/partialemergence/sounds/Kalimba/74.1.mp3
new file mode 100644
index 0000000..24e0be3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/74.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/74.2.mp3 b/site/app/partialemergence/sounds/Kalimba/74.2.mp3
new file mode 100644
index 0000000..756bf84
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/74.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/74.3.mp3 b/site/app/partialemergence/sounds/Kalimba/74.3.mp3
new file mode 100644
index 0000000..5b86735
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/74.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/76.0.mp3 b/site/app/partialemergence/sounds/Kalimba/76.0.mp3
new file mode 100644
index 0000000..6af8e62
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/76.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/76.1.mp3 b/site/app/partialemergence/sounds/Kalimba/76.1.mp3
new file mode 100644
index 0000000..e748b9d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/76.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/76.2.mp3 b/site/app/partialemergence/sounds/Kalimba/76.2.mp3
new file mode 100644
index 0000000..7e2e703
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/76.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/76.3.mp3 b/site/app/partialemergence/sounds/Kalimba/76.3.mp3
new file mode 100644
index 0000000..3afd998
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/76.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/77.0.mp3 b/site/app/partialemergence/sounds/Kalimba/77.0.mp3
new file mode 100644
index 0000000..10526b9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/77.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/77.1.mp3 b/site/app/partialemergence/sounds/Kalimba/77.1.mp3
new file mode 100644
index 0000000..6578b62
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/77.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/77.2.mp3 b/site/app/partialemergence/sounds/Kalimba/77.2.mp3
new file mode 100644
index 0000000..2c1d510
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/77.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/77.3.mp3 b/site/app/partialemergence/sounds/Kalimba/77.3.mp3
new file mode 100644
index 0000000..bf4ea31
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/77.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/77.4.mp3 b/site/app/partialemergence/sounds/Kalimba/77.4.mp3
new file mode 100644
index 0000000..435ee84
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/77.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/79.0.mp3 b/site/app/partialemergence/sounds/Kalimba/79.0.mp3
new file mode 100644
index 0000000..73b7bfa
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/79.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/79.1.mp3 b/site/app/partialemergence/sounds/Kalimba/79.1.mp3
new file mode 100644
index 0000000..c8e9113
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/79.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/79.2.mp3 b/site/app/partialemergence/sounds/Kalimba/79.2.mp3
new file mode 100644
index 0000000..889bccd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/79.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/79.3.mp3 b/site/app/partialemergence/sounds/Kalimba/79.3.mp3
new file mode 100644
index 0000000..31d6efb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/79.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/81.0.mp3 b/site/app/partialemergence/sounds/Kalimba/81.0.mp3
new file mode 100644
index 0000000..c06b8b9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/81.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/81.1.mp3 b/site/app/partialemergence/sounds/Kalimba/81.1.mp3
new file mode 100644
index 0000000..da3bd28
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/81.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/81.2.mp3 b/site/app/partialemergence/sounds/Kalimba/81.2.mp3
new file mode 100644
index 0000000..3899002
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/81.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/81.3.mp3 b/site/app/partialemergence/sounds/Kalimba/81.3.mp3
new file mode 100644
index 0000000..65851b3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/81.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/81.4.mp3 b/site/app/partialemergence/sounds/Kalimba/81.4.mp3
new file mode 100644
index 0000000..ce5f34e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/81.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/83.0.mp3 b/site/app/partialemergence/sounds/Kalimba/83.0.mp3
new file mode 100644
index 0000000..5a82b39
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/83.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/83.1.mp3 b/site/app/partialemergence/sounds/Kalimba/83.1.mp3
new file mode 100644
index 0000000..79781ef
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/83.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/83.2.mp3 b/site/app/partialemergence/sounds/Kalimba/83.2.mp3
new file mode 100644
index 0000000..1c4c97b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/83.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/83.3.mp3 b/site/app/partialemergence/sounds/Kalimba/83.3.mp3
new file mode 100644
index 0000000..df816ef
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/83.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/83.4.mp3 b/site/app/partialemergence/sounds/Kalimba/83.4.mp3
new file mode 100644
index 0000000..f7cb62c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/83.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/84.0.mp3 b/site/app/partialemergence/sounds/Kalimba/84.0.mp3
new file mode 100644
index 0000000..5bf1e3a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/84.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/84.1.mp3 b/site/app/partialemergence/sounds/Kalimba/84.1.mp3
new file mode 100644
index 0000000..0ce17e8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/84.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/84.2.mp3 b/site/app/partialemergence/sounds/Kalimba/84.2.mp3
new file mode 100644
index 0000000..ac496e0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/84.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/84.3.mp3 b/site/app/partialemergence/sounds/Kalimba/84.3.mp3
new file mode 100644
index 0000000..9c54285
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/84.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/86.0.mp3 b/site/app/partialemergence/sounds/Kalimba/86.0.mp3
new file mode 100644
index 0000000..7042234
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/86.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/86.1.mp3 b/site/app/partialemergence/sounds/Kalimba/86.1.mp3
new file mode 100644
index 0000000..27b553f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/86.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/86.2.mp3 b/site/app/partialemergence/sounds/Kalimba/86.2.mp3
new file mode 100644
index 0000000..f89a0d7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/86.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/86.3.mp3 b/site/app/partialemergence/sounds/Kalimba/86.3.mp3
new file mode 100644
index 0000000..5124740
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/86.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/88.0.mp3 b/site/app/partialemergence/sounds/Kalimba/88.0.mp3
new file mode 100644
index 0000000..3097bac
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/88.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/88.1.mp3 b/site/app/partialemergence/sounds/Kalimba/88.1.mp3
new file mode 100644
index 0000000..924d962
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/88.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Kalimba/88.2.mp3 b/site/app/partialemergence/sounds/Kalimba/88.2.mp3
new file mode 100644
index 0000000..5fde74f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Kalimba/88.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/68.0.mp3 b/site/app/partialemergence/sounds/MusicBox/68.0.mp3
new file mode 100644
index 0000000..3cba4dd
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/68.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/68.1.mp3 b/site/app/partialemergence/sounds/MusicBox/68.1.mp3
new file mode 100644
index 0000000..29943ee
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/68.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/68.2.mp3 b/site/app/partialemergence/sounds/MusicBox/68.2.mp3
new file mode 100644
index 0000000..9a25208
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/68.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/68.3.mp3 b/site/app/partialemergence/sounds/MusicBox/68.3.mp3
new file mode 100644
index 0000000..4847168
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/68.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/68.4.mp3 b/site/app/partialemergence/sounds/MusicBox/68.4.mp3
new file mode 100644
index 0000000..1642bb6
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/68.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/68.5.mp3 b/site/app/partialemergence/sounds/MusicBox/68.5.mp3
new file mode 100644
index 0000000..a107d83
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/68.5.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/70.0.mp3 b/site/app/partialemergence/sounds/MusicBox/70.0.mp3
new file mode 100644
index 0000000..695671e
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/70.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/70.1.mp3 b/site/app/partialemergence/sounds/MusicBox/70.1.mp3
new file mode 100644
index 0000000..07642e1
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/70.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/70.2.mp3 b/site/app/partialemergence/sounds/MusicBox/70.2.mp3
new file mode 100644
index 0000000..c758665
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/70.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/70.3.mp3 b/site/app/partialemergence/sounds/MusicBox/70.3.mp3
new file mode 100644
index 0000000..e9a02ed
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/70.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/70.4.mp3 b/site/app/partialemergence/sounds/MusicBox/70.4.mp3
new file mode 100644
index 0000000..dea302f
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/70.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/72.0.mp3 b/site/app/partialemergence/sounds/MusicBox/72.0.mp3
new file mode 100644
index 0000000..b873e2a
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/72.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/72.1.mp3 b/site/app/partialemergence/sounds/MusicBox/72.1.mp3
new file mode 100644
index 0000000..9e6a248
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/72.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/72.2.mp3 b/site/app/partialemergence/sounds/MusicBox/72.2.mp3
new file mode 100644
index 0000000..3d13386
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/72.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/72.3.mp3 b/site/app/partialemergence/sounds/MusicBox/72.3.mp3
new file mode 100644
index 0000000..d579d7e
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/72.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/73.0.mp3 b/site/app/partialemergence/sounds/MusicBox/73.0.mp3
new file mode 100644
index 0000000..103db48
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/73.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/73.1.mp3 b/site/app/partialemergence/sounds/MusicBox/73.1.mp3
new file mode 100644
index 0000000..c2dd5b1
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/73.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/73.2.mp3 b/site/app/partialemergence/sounds/MusicBox/73.2.mp3
new file mode 100644
index 0000000..5e5ce84
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/73.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/75.0.mp3 b/site/app/partialemergence/sounds/MusicBox/75.0.mp3
new file mode 100644
index 0000000..d1af15d
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/75.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/75.1.mp3 b/site/app/partialemergence/sounds/MusicBox/75.1.mp3
new file mode 100644
index 0000000..7080ca0
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/75.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/75.2.mp3 b/site/app/partialemergence/sounds/MusicBox/75.2.mp3
new file mode 100644
index 0000000..f5a3792
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/75.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/77.0.mp3 b/site/app/partialemergence/sounds/MusicBox/77.0.mp3
new file mode 100644
index 0000000..5258d3e
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/77.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/77.1.mp3 b/site/app/partialemergence/sounds/MusicBox/77.1.mp3
new file mode 100644
index 0000000..72dcd0b
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/77.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/77.2.mp3 b/site/app/partialemergence/sounds/MusicBox/77.2.mp3
new file mode 100644
index 0000000..141a6f7
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/77.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/77.3.mp3 b/site/app/partialemergence/sounds/MusicBox/77.3.mp3
new file mode 100644
index 0000000..8394958
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/77.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/79.0.mp3 b/site/app/partialemergence/sounds/MusicBox/79.0.mp3
new file mode 100644
index 0000000..cf3d403
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/79.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/79.1.mp3 b/site/app/partialemergence/sounds/MusicBox/79.1.mp3
new file mode 100644
index 0000000..e4aadb0
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/79.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/79.2.mp3 b/site/app/partialemergence/sounds/MusicBox/79.2.mp3
new file mode 100644
index 0000000..2fc69d2
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/79.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/79.3.mp3 b/site/app/partialemergence/sounds/MusicBox/79.3.mp3
new file mode 100644
index 0000000..b787a4a
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/79.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/80.0.mp3 b/site/app/partialemergence/sounds/MusicBox/80.0.mp3
new file mode 100644
index 0000000..a47d5d9
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/80.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/80.1.mp3 b/site/app/partialemergence/sounds/MusicBox/80.1.mp3
new file mode 100644
index 0000000..a92072a
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/80.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/80.2.mp3 b/site/app/partialemergence/sounds/MusicBox/80.2.mp3
new file mode 100644
index 0000000..7172e56
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/80.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/80.3.mp3 b/site/app/partialemergence/sounds/MusicBox/80.3.mp3
new file mode 100644
index 0000000..8bd3431
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/80.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/82.0.mp3 b/site/app/partialemergence/sounds/MusicBox/82.0.mp3
new file mode 100644
index 0000000..def26fb
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/82.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/82.1.mp3 b/site/app/partialemergence/sounds/MusicBox/82.1.mp3
new file mode 100644
index 0000000..12c104d
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/82.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/82.2.mp3 b/site/app/partialemergence/sounds/MusicBox/82.2.mp3
new file mode 100644
index 0000000..b1b6604
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/82.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/82.3.mp3 b/site/app/partialemergence/sounds/MusicBox/82.3.mp3
new file mode 100644
index 0000000..5d5927f
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/82.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/84.0.mp3 b/site/app/partialemergence/sounds/MusicBox/84.0.mp3
new file mode 100644
index 0000000..94f7da7
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/84.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/84.1.mp3 b/site/app/partialemergence/sounds/MusicBox/84.1.mp3
new file mode 100644
index 0000000..14e9e13
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/84.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/84.2.mp3 b/site/app/partialemergence/sounds/MusicBox/84.2.mp3
new file mode 100644
index 0000000..848c535
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/84.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/84.3.mp3 b/site/app/partialemergence/sounds/MusicBox/84.3.mp3
new file mode 100644
index 0000000..89d65e4
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/84.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/85.0.mp3 b/site/app/partialemergence/sounds/MusicBox/85.0.mp3
new file mode 100644
index 0000000..f458a73
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/85.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/85.1.mp3 b/site/app/partialemergence/sounds/MusicBox/85.1.mp3
new file mode 100644
index 0000000..373c982
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/85.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/85.2.mp3 b/site/app/partialemergence/sounds/MusicBox/85.2.mp3
new file mode 100644
index 0000000..2ecf8fd
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/85.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/85.3.mp3 b/site/app/partialemergence/sounds/MusicBox/85.3.mp3
new file mode 100644
index 0000000..1820904
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/85.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/87.0.mp3 b/site/app/partialemergence/sounds/MusicBox/87.0.mp3
new file mode 100644
index 0000000..252b814
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/87.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/87.1.mp3 b/site/app/partialemergence/sounds/MusicBox/87.1.mp3
new file mode 100644
index 0000000..c9e28af
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/87.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/87.2.mp3 b/site/app/partialemergence/sounds/MusicBox/87.2.mp3
new file mode 100644
index 0000000..4ba0166
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/87.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/87.3.mp3 b/site/app/partialemergence/sounds/MusicBox/87.3.mp3
new file mode 100644
index 0000000..ea639a4
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/87.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/87.4.mp3 b/site/app/partialemergence/sounds/MusicBox/87.4.mp3
new file mode 100644
index 0000000..156d74b
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/87.4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/89.0.mp3 b/site/app/partialemergence/sounds/MusicBox/89.0.mp3
new file mode 100644
index 0000000..14bae17
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/89.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/89.1.mp3 b/site/app/partialemergence/sounds/MusicBox/89.1.mp3
new file mode 100644
index 0000000..a1b2066
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/89.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/89.2.mp3 b/site/app/partialemergence/sounds/MusicBox/89.2.mp3
new file mode 100644
index 0000000..099b672
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/89.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/89.3.mp3 b/site/app/partialemergence/sounds/MusicBox/89.3.mp3
new file mode 100644
index 0000000..eb3887c
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/89.3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/91.0.mp3 b/site/app/partialemergence/sounds/MusicBox/91.0.mp3
new file mode 100644
index 0000000..99c5294
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/91.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/91.1.mp3 b/site/app/partialemergence/sounds/MusicBox/91.1.mp3
new file mode 100644
index 0000000..b91a4d6
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/91.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/91.2.mp3 b/site/app/partialemergence/sounds/MusicBox/91.2.mp3
new file mode 100644
index 0000000..0eea22a
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/91.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/92.0.mp3 b/site/app/partialemergence/sounds/MusicBox/92.0.mp3
new file mode 100644
index 0000000..f41ea47
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/92.0.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/92.1.mp3 b/site/app/partialemergence/sounds/MusicBox/92.1.mp3
new file mode 100644
index 0000000..9c4f180
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/92.1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/MusicBox/92.2.mp3 b/site/app/partialemergence/sounds/MusicBox/92.2.mp3
new file mode 100644
index 0000000..09a7c82
--- /dev/null
+++ b/site/app/partialemergence/sounds/MusicBox/92.2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/1.mp3 b/site/app/partialemergence/sounds/Water/Droplets/1.mp3
new file mode 100644
index 0000000..b4f0b98
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/10.mp3 b/site/app/partialemergence/sounds/Water/Droplets/10.mp3
new file mode 100644
index 0000000..8568013
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/10.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/100.mp3 b/site/app/partialemergence/sounds/Water/Droplets/100.mp3
new file mode 100644
index 0000000..9208d12
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/100.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/101.mp3 b/site/app/partialemergence/sounds/Water/Droplets/101.mp3
new file mode 100644
index 0000000..245a189
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/101.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/102.mp3 b/site/app/partialemergence/sounds/Water/Droplets/102.mp3
new file mode 100644
index 0000000..d163f03
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/102.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/103.mp3 b/site/app/partialemergence/sounds/Water/Droplets/103.mp3
new file mode 100644
index 0000000..6ac3fe6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/103.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/104.mp3 b/site/app/partialemergence/sounds/Water/Droplets/104.mp3
new file mode 100644
index 0000000..1ac83c9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/104.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/105.mp3 b/site/app/partialemergence/sounds/Water/Droplets/105.mp3
new file mode 100644
index 0000000..8c91dab
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/105.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/106.mp3 b/site/app/partialemergence/sounds/Water/Droplets/106.mp3
new file mode 100644
index 0000000..fcf4cff
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/106.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/107.mp3 b/site/app/partialemergence/sounds/Water/Droplets/107.mp3
new file mode 100644
index 0000000..a2b7d4c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/107.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/108.mp3 b/site/app/partialemergence/sounds/Water/Droplets/108.mp3
new file mode 100644
index 0000000..0ae741a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/108.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/109.mp3 b/site/app/partialemergence/sounds/Water/Droplets/109.mp3
new file mode 100644
index 0000000..96cb9a5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/109.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/11.mp3 b/site/app/partialemergence/sounds/Water/Droplets/11.mp3
new file mode 100644
index 0000000..4d720fa
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/11.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/110.mp3 b/site/app/partialemergence/sounds/Water/Droplets/110.mp3
new file mode 100644
index 0000000..a6fc5ca
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/110.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/111.mp3 b/site/app/partialemergence/sounds/Water/Droplets/111.mp3
new file mode 100644
index 0000000..d0db885
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/111.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/112.mp3 b/site/app/partialemergence/sounds/Water/Droplets/112.mp3
new file mode 100644
index 0000000..f34046f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/112.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/113.mp3 b/site/app/partialemergence/sounds/Water/Droplets/113.mp3
new file mode 100644
index 0000000..9dacb68
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/113.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/114.mp3 b/site/app/partialemergence/sounds/Water/Droplets/114.mp3
new file mode 100644
index 0000000..3a35979
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/114.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/115.mp3 b/site/app/partialemergence/sounds/Water/Droplets/115.mp3
new file mode 100644
index 0000000..602c674
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/115.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/116.mp3 b/site/app/partialemergence/sounds/Water/Droplets/116.mp3
new file mode 100644
index 0000000..ebf997f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/116.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/117.mp3 b/site/app/partialemergence/sounds/Water/Droplets/117.mp3
new file mode 100644
index 0000000..9003976
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/117.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/118.mp3 b/site/app/partialemergence/sounds/Water/Droplets/118.mp3
new file mode 100644
index 0000000..97134d8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/118.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/119.mp3 b/site/app/partialemergence/sounds/Water/Droplets/119.mp3
new file mode 100644
index 0000000..511eec9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/119.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/12.mp3 b/site/app/partialemergence/sounds/Water/Droplets/12.mp3
new file mode 100644
index 0000000..00d30a0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/12.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/120.mp3 b/site/app/partialemergence/sounds/Water/Droplets/120.mp3
new file mode 100644
index 0000000..20febc9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/120.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/121.mp3 b/site/app/partialemergence/sounds/Water/Droplets/121.mp3
new file mode 100644
index 0000000..3418a9d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/121.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/122.mp3 b/site/app/partialemergence/sounds/Water/Droplets/122.mp3
new file mode 100644
index 0000000..5610087
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/122.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/123.mp3 b/site/app/partialemergence/sounds/Water/Droplets/123.mp3
new file mode 100644
index 0000000..6c94232
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/123.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/124.mp3 b/site/app/partialemergence/sounds/Water/Droplets/124.mp3
new file mode 100644
index 0000000..6ae202e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/124.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/125.mp3 b/site/app/partialemergence/sounds/Water/Droplets/125.mp3
new file mode 100644
index 0000000..6347a24
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/125.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/126.mp3 b/site/app/partialemergence/sounds/Water/Droplets/126.mp3
new file mode 100644
index 0000000..6acefb0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/126.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/127.mp3 b/site/app/partialemergence/sounds/Water/Droplets/127.mp3
new file mode 100644
index 0000000..a3107f7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/127.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/128.mp3 b/site/app/partialemergence/sounds/Water/Droplets/128.mp3
new file mode 100644
index 0000000..38ef2c8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/128.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/129.mp3 b/site/app/partialemergence/sounds/Water/Droplets/129.mp3
new file mode 100644
index 0000000..9ed1ebe
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/129.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/13.mp3 b/site/app/partialemergence/sounds/Water/Droplets/13.mp3
new file mode 100644
index 0000000..4969bb3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/13.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/130.mp3 b/site/app/partialemergence/sounds/Water/Droplets/130.mp3
new file mode 100644
index 0000000..c94dc91
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/130.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/131.mp3 b/site/app/partialemergence/sounds/Water/Droplets/131.mp3
new file mode 100644
index 0000000..e6f6a25
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/131.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/132.mp3 b/site/app/partialemergence/sounds/Water/Droplets/132.mp3
new file mode 100644
index 0000000..e1fc426
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/132.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/133.mp3 b/site/app/partialemergence/sounds/Water/Droplets/133.mp3
new file mode 100644
index 0000000..64025a7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/133.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/134.mp3 b/site/app/partialemergence/sounds/Water/Droplets/134.mp3
new file mode 100644
index 0000000..74a4e02
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/134.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/135.mp3 b/site/app/partialemergence/sounds/Water/Droplets/135.mp3
new file mode 100644
index 0000000..1942484
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/135.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/136.mp3 b/site/app/partialemergence/sounds/Water/Droplets/136.mp3
new file mode 100644
index 0000000..39e79fe
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/136.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/137.mp3 b/site/app/partialemergence/sounds/Water/Droplets/137.mp3
new file mode 100644
index 0000000..e996eb3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/137.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/138.mp3 b/site/app/partialemergence/sounds/Water/Droplets/138.mp3
new file mode 100644
index 0000000..b6e286c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/138.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/139.mp3 b/site/app/partialemergence/sounds/Water/Droplets/139.mp3
new file mode 100644
index 0000000..3bbc8c1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/139.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/14.mp3 b/site/app/partialemergence/sounds/Water/Droplets/14.mp3
new file mode 100644
index 0000000..3a27d98
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/14.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/140.mp3 b/site/app/partialemergence/sounds/Water/Droplets/140.mp3
new file mode 100644
index 0000000..cfd9548
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/140.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/141.mp3 b/site/app/partialemergence/sounds/Water/Droplets/141.mp3
new file mode 100644
index 0000000..4354acd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/141.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/142.mp3 b/site/app/partialemergence/sounds/Water/Droplets/142.mp3
new file mode 100644
index 0000000..60ee6db
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/142.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/143.mp3 b/site/app/partialemergence/sounds/Water/Droplets/143.mp3
new file mode 100644
index 0000000..c982204
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/143.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/144.mp3 b/site/app/partialemergence/sounds/Water/Droplets/144.mp3
new file mode 100644
index 0000000..6473048
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/144.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/145.mp3 b/site/app/partialemergence/sounds/Water/Droplets/145.mp3
new file mode 100644
index 0000000..fbfa59d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/145.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/146.mp3 b/site/app/partialemergence/sounds/Water/Droplets/146.mp3
new file mode 100644
index 0000000..80b1535
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/146.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/147.mp3 b/site/app/partialemergence/sounds/Water/Droplets/147.mp3
new file mode 100644
index 0000000..bf60d3f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/147.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/148.mp3 b/site/app/partialemergence/sounds/Water/Droplets/148.mp3
new file mode 100644
index 0000000..5047271
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/148.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/149.mp3 b/site/app/partialemergence/sounds/Water/Droplets/149.mp3
new file mode 100644
index 0000000..8540c7f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/149.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/15.mp3 b/site/app/partialemergence/sounds/Water/Droplets/15.mp3
new file mode 100644
index 0000000..7cc1f1c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/15.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/150.mp3 b/site/app/partialemergence/sounds/Water/Droplets/150.mp3
new file mode 100644
index 0000000..86614d4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/150.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/151.mp3 b/site/app/partialemergence/sounds/Water/Droplets/151.mp3
new file mode 100644
index 0000000..c8c53ea
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/151.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/152.mp3 b/site/app/partialemergence/sounds/Water/Droplets/152.mp3
new file mode 100644
index 0000000..db1edd2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/152.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/153.mp3 b/site/app/partialemergence/sounds/Water/Droplets/153.mp3
new file mode 100644
index 0000000..fbec12f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/153.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/154.mp3 b/site/app/partialemergence/sounds/Water/Droplets/154.mp3
new file mode 100644
index 0000000..f9366ac
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/154.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/155.mp3 b/site/app/partialemergence/sounds/Water/Droplets/155.mp3
new file mode 100644
index 0000000..c1c272f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/155.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/156.mp3 b/site/app/partialemergence/sounds/Water/Droplets/156.mp3
new file mode 100644
index 0000000..16fa0bb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/156.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/157.mp3 b/site/app/partialemergence/sounds/Water/Droplets/157.mp3
new file mode 100644
index 0000000..024afd6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/157.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/158.mp3 b/site/app/partialemergence/sounds/Water/Droplets/158.mp3
new file mode 100644
index 0000000..f4d89c3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/158.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/159.mp3 b/site/app/partialemergence/sounds/Water/Droplets/159.mp3
new file mode 100644
index 0000000..61e162c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/159.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/16.mp3 b/site/app/partialemergence/sounds/Water/Droplets/16.mp3
new file mode 100644
index 0000000..b441307
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/16.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/160.mp3 b/site/app/partialemergence/sounds/Water/Droplets/160.mp3
new file mode 100644
index 0000000..72109b2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/160.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/161.mp3 b/site/app/partialemergence/sounds/Water/Droplets/161.mp3
new file mode 100644
index 0000000..5f45a7e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/161.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/162.mp3 b/site/app/partialemergence/sounds/Water/Droplets/162.mp3
new file mode 100644
index 0000000..437d56b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/162.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/163.mp3 b/site/app/partialemergence/sounds/Water/Droplets/163.mp3
new file mode 100644
index 0000000..107cb3c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/163.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/164.mp3 b/site/app/partialemergence/sounds/Water/Droplets/164.mp3
new file mode 100644
index 0000000..5d9c3ee
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/164.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/165.mp3 b/site/app/partialemergence/sounds/Water/Droplets/165.mp3
new file mode 100644
index 0000000..14be4ae
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/165.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/166.mp3 b/site/app/partialemergence/sounds/Water/Droplets/166.mp3
new file mode 100644
index 0000000..824d646
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/166.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/167.mp3 b/site/app/partialemergence/sounds/Water/Droplets/167.mp3
new file mode 100644
index 0000000..bcce9f1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/167.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/168.mp3 b/site/app/partialemergence/sounds/Water/Droplets/168.mp3
new file mode 100644
index 0000000..5405da2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/168.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/169.mp3 b/site/app/partialemergence/sounds/Water/Droplets/169.mp3
new file mode 100644
index 0000000..bc1cf68
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/169.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/17.mp3 b/site/app/partialemergence/sounds/Water/Droplets/17.mp3
new file mode 100644
index 0000000..c785d99
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/17.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/170.mp3 b/site/app/partialemergence/sounds/Water/Droplets/170.mp3
new file mode 100644
index 0000000..3235ff7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/170.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/171.mp3 b/site/app/partialemergence/sounds/Water/Droplets/171.mp3
new file mode 100644
index 0000000..1aacc16
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/171.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/172.mp3 b/site/app/partialemergence/sounds/Water/Droplets/172.mp3
new file mode 100644
index 0000000..0b07f05
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/172.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/173.mp3 b/site/app/partialemergence/sounds/Water/Droplets/173.mp3
new file mode 100644
index 0000000..30df4ea
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/173.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/174.mp3 b/site/app/partialemergence/sounds/Water/Droplets/174.mp3
new file mode 100644
index 0000000..641214e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/174.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/175.mp3 b/site/app/partialemergence/sounds/Water/Droplets/175.mp3
new file mode 100644
index 0000000..b40e8f0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/175.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/176.mp3 b/site/app/partialemergence/sounds/Water/Droplets/176.mp3
new file mode 100644
index 0000000..193e005
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/176.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/177.mp3 b/site/app/partialemergence/sounds/Water/Droplets/177.mp3
new file mode 100644
index 0000000..8e48c1c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/177.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/178.mp3 b/site/app/partialemergence/sounds/Water/Droplets/178.mp3
new file mode 100644
index 0000000..2182c92
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/178.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/179.mp3 b/site/app/partialemergence/sounds/Water/Droplets/179.mp3
new file mode 100644
index 0000000..571603d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/179.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/18.mp3 b/site/app/partialemergence/sounds/Water/Droplets/18.mp3
new file mode 100644
index 0000000..1a147bb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/18.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/180.mp3 b/site/app/partialemergence/sounds/Water/Droplets/180.mp3
new file mode 100644
index 0000000..c3ee6ec
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/180.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/181.mp3 b/site/app/partialemergence/sounds/Water/Droplets/181.mp3
new file mode 100644
index 0000000..4d93cbe
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/181.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/182.mp3 b/site/app/partialemergence/sounds/Water/Droplets/182.mp3
new file mode 100644
index 0000000..a5faa54
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/182.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/183.mp3 b/site/app/partialemergence/sounds/Water/Droplets/183.mp3
new file mode 100644
index 0000000..7f09888
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/183.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/184.mp3 b/site/app/partialemergence/sounds/Water/Droplets/184.mp3
new file mode 100644
index 0000000..5659860
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/184.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/185.mp3 b/site/app/partialemergence/sounds/Water/Droplets/185.mp3
new file mode 100644
index 0000000..88961dc
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/185.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/186.mp3 b/site/app/partialemergence/sounds/Water/Droplets/186.mp3
new file mode 100644
index 0000000..4082715
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/186.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/187.mp3 b/site/app/partialemergence/sounds/Water/Droplets/187.mp3
new file mode 100644
index 0000000..d61dabb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/187.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/188.mp3 b/site/app/partialemergence/sounds/Water/Droplets/188.mp3
new file mode 100644
index 0000000..491371a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/188.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/189.mp3 b/site/app/partialemergence/sounds/Water/Droplets/189.mp3
new file mode 100644
index 0000000..89d3dec
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/189.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/19.mp3 b/site/app/partialemergence/sounds/Water/Droplets/19.mp3
new file mode 100644
index 0000000..65ea735
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/19.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/190.mp3 b/site/app/partialemergence/sounds/Water/Droplets/190.mp3
new file mode 100644
index 0000000..7793dbb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/190.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/191.mp3 b/site/app/partialemergence/sounds/Water/Droplets/191.mp3
new file mode 100644
index 0000000..d0fbc3d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/191.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/192.mp3 b/site/app/partialemergence/sounds/Water/Droplets/192.mp3
new file mode 100644
index 0000000..3bd54e5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/192.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/193.mp3 b/site/app/partialemergence/sounds/Water/Droplets/193.mp3
new file mode 100644
index 0000000..5e17fff
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/193.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/194.mp3 b/site/app/partialemergence/sounds/Water/Droplets/194.mp3
new file mode 100644
index 0000000..72ccc55
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/194.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/195.mp3 b/site/app/partialemergence/sounds/Water/Droplets/195.mp3
new file mode 100644
index 0000000..f147a05
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/195.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/196.mp3 b/site/app/partialemergence/sounds/Water/Droplets/196.mp3
new file mode 100644
index 0000000..79a31ef
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/196.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/197.mp3 b/site/app/partialemergence/sounds/Water/Droplets/197.mp3
new file mode 100644
index 0000000..bd79dc5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/197.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/198.mp3 b/site/app/partialemergence/sounds/Water/Droplets/198.mp3
new file mode 100644
index 0000000..1027cc0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/198.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/199.mp3 b/site/app/partialemergence/sounds/Water/Droplets/199.mp3
new file mode 100644
index 0000000..384dacb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/199.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/2.mp3 b/site/app/partialemergence/sounds/Water/Droplets/2.mp3
new file mode 100644
index 0000000..251f5aa
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/20.mp3 b/site/app/partialemergence/sounds/Water/Droplets/20.mp3
new file mode 100644
index 0000000..1c14b38
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/20.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/200.mp3 b/site/app/partialemergence/sounds/Water/Droplets/200.mp3
new file mode 100644
index 0000000..1fa9685
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/200.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/201.mp3 b/site/app/partialemergence/sounds/Water/Droplets/201.mp3
new file mode 100644
index 0000000..ad7579d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/201.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/202.mp3 b/site/app/partialemergence/sounds/Water/Droplets/202.mp3
new file mode 100644
index 0000000..f23980b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/202.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/203.mp3 b/site/app/partialemergence/sounds/Water/Droplets/203.mp3
new file mode 100644
index 0000000..431ca56
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/203.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/204.mp3 b/site/app/partialemergence/sounds/Water/Droplets/204.mp3
new file mode 100644
index 0000000..a327123
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/204.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/205.mp3 b/site/app/partialemergence/sounds/Water/Droplets/205.mp3
new file mode 100644
index 0000000..8095ab0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/205.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/206.mp3 b/site/app/partialemergence/sounds/Water/Droplets/206.mp3
new file mode 100644
index 0000000..3f70218
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/206.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/207.mp3 b/site/app/partialemergence/sounds/Water/Droplets/207.mp3
new file mode 100644
index 0000000..7e22b0e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/207.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/208.mp3 b/site/app/partialemergence/sounds/Water/Droplets/208.mp3
new file mode 100644
index 0000000..e5c5763
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/208.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/209.mp3 b/site/app/partialemergence/sounds/Water/Droplets/209.mp3
new file mode 100644
index 0000000..2aa7463
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/209.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/21.mp3 b/site/app/partialemergence/sounds/Water/Droplets/21.mp3
new file mode 100644
index 0000000..7eda693
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/21.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/210.mp3 b/site/app/partialemergence/sounds/Water/Droplets/210.mp3
new file mode 100644
index 0000000..46b9d22
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/210.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/211.mp3 b/site/app/partialemergence/sounds/Water/Droplets/211.mp3
new file mode 100644
index 0000000..1b2d79f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/211.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/212.mp3 b/site/app/partialemergence/sounds/Water/Droplets/212.mp3
new file mode 100644
index 0000000..f38a38b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/212.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/213.mp3 b/site/app/partialemergence/sounds/Water/Droplets/213.mp3
new file mode 100644
index 0000000..2c17a95
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/213.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/214.mp3 b/site/app/partialemergence/sounds/Water/Droplets/214.mp3
new file mode 100644
index 0000000..de5f549
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/214.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/215.mp3 b/site/app/partialemergence/sounds/Water/Droplets/215.mp3
new file mode 100644
index 0000000..72dd43e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/215.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/216.mp3 b/site/app/partialemergence/sounds/Water/Droplets/216.mp3
new file mode 100644
index 0000000..ac2fd00
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/216.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/217.mp3 b/site/app/partialemergence/sounds/Water/Droplets/217.mp3
new file mode 100644
index 0000000..47d3af1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/217.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/218.mp3 b/site/app/partialemergence/sounds/Water/Droplets/218.mp3
new file mode 100644
index 0000000..33d7396
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/218.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/219.mp3 b/site/app/partialemergence/sounds/Water/Droplets/219.mp3
new file mode 100644
index 0000000..35996e1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/219.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/22.mp3 b/site/app/partialemergence/sounds/Water/Droplets/22.mp3
new file mode 100644
index 0000000..96668cf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/22.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/220.mp3 b/site/app/partialemergence/sounds/Water/Droplets/220.mp3
new file mode 100644
index 0000000..a9c02c4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/220.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/221.mp3 b/site/app/partialemergence/sounds/Water/Droplets/221.mp3
new file mode 100644
index 0000000..444c48a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/221.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/222.mp3 b/site/app/partialemergence/sounds/Water/Droplets/222.mp3
new file mode 100644
index 0000000..7c43205
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/222.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/223.mp3 b/site/app/partialemergence/sounds/Water/Droplets/223.mp3
new file mode 100644
index 0000000..cd7f5a1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/223.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/224.mp3 b/site/app/partialemergence/sounds/Water/Droplets/224.mp3
new file mode 100644
index 0000000..1d085ab
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/224.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/225.mp3 b/site/app/partialemergence/sounds/Water/Droplets/225.mp3
new file mode 100644
index 0000000..f031965
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/225.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/226.mp3 b/site/app/partialemergence/sounds/Water/Droplets/226.mp3
new file mode 100644
index 0000000..4ce8c42
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/226.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/227.mp3 b/site/app/partialemergence/sounds/Water/Droplets/227.mp3
new file mode 100644
index 0000000..8b7f0c9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/227.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/228.mp3 b/site/app/partialemergence/sounds/Water/Droplets/228.mp3
new file mode 100644
index 0000000..6c2a9ec
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/228.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/229.mp3 b/site/app/partialemergence/sounds/Water/Droplets/229.mp3
new file mode 100644
index 0000000..5dda72a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/229.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/23.mp3 b/site/app/partialemergence/sounds/Water/Droplets/23.mp3
new file mode 100644
index 0000000..5c752ce
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/23.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/230.mp3 b/site/app/partialemergence/sounds/Water/Droplets/230.mp3
new file mode 100644
index 0000000..6a40553
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/230.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/231.mp3 b/site/app/partialemergence/sounds/Water/Droplets/231.mp3
new file mode 100644
index 0000000..720940e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/231.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/232.mp3 b/site/app/partialemergence/sounds/Water/Droplets/232.mp3
new file mode 100644
index 0000000..a8d8cee
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/232.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/233.mp3 b/site/app/partialemergence/sounds/Water/Droplets/233.mp3
new file mode 100644
index 0000000..549ca4b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/233.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/234.mp3 b/site/app/partialemergence/sounds/Water/Droplets/234.mp3
new file mode 100644
index 0000000..12ed374
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/234.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/235.mp3 b/site/app/partialemergence/sounds/Water/Droplets/235.mp3
new file mode 100644
index 0000000..165bdce
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/235.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/236.mp3 b/site/app/partialemergence/sounds/Water/Droplets/236.mp3
new file mode 100644
index 0000000..8594d4c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/236.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/237.mp3 b/site/app/partialemergence/sounds/Water/Droplets/237.mp3
new file mode 100644
index 0000000..5955f00
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/237.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/238.mp3 b/site/app/partialemergence/sounds/Water/Droplets/238.mp3
new file mode 100644
index 0000000..de9f350
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/238.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/239.mp3 b/site/app/partialemergence/sounds/Water/Droplets/239.mp3
new file mode 100644
index 0000000..08a2946
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/239.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/24.mp3 b/site/app/partialemergence/sounds/Water/Droplets/24.mp3
new file mode 100644
index 0000000..8f35505
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/24.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/240.mp3 b/site/app/partialemergence/sounds/Water/Droplets/240.mp3
new file mode 100644
index 0000000..2481a60
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/240.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/241.mp3 b/site/app/partialemergence/sounds/Water/Droplets/241.mp3
new file mode 100644
index 0000000..587d0ca
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/241.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/242.mp3 b/site/app/partialemergence/sounds/Water/Droplets/242.mp3
new file mode 100644
index 0000000..b863534
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/242.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/243.mp3 b/site/app/partialemergence/sounds/Water/Droplets/243.mp3
new file mode 100644
index 0000000..7257503
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/243.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/244.mp3 b/site/app/partialemergence/sounds/Water/Droplets/244.mp3
new file mode 100644
index 0000000..e23c6c1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/244.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/245.mp3 b/site/app/partialemergence/sounds/Water/Droplets/245.mp3
new file mode 100644
index 0000000..b501f78
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/245.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/246.mp3 b/site/app/partialemergence/sounds/Water/Droplets/246.mp3
new file mode 100644
index 0000000..d0d0387
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/246.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/247.mp3 b/site/app/partialemergence/sounds/Water/Droplets/247.mp3
new file mode 100644
index 0000000..765a27c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/247.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/248.mp3 b/site/app/partialemergence/sounds/Water/Droplets/248.mp3
new file mode 100644
index 0000000..34823a2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/248.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/249.mp3 b/site/app/partialemergence/sounds/Water/Droplets/249.mp3
new file mode 100644
index 0000000..9a2d7e4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/249.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/25.mp3 b/site/app/partialemergence/sounds/Water/Droplets/25.mp3
new file mode 100644
index 0000000..57c023e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/25.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/250.mp3 b/site/app/partialemergence/sounds/Water/Droplets/250.mp3
new file mode 100644
index 0000000..58ca626
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/250.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/251.mp3 b/site/app/partialemergence/sounds/Water/Droplets/251.mp3
new file mode 100644
index 0000000..4130d2a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/251.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/252.mp3 b/site/app/partialemergence/sounds/Water/Droplets/252.mp3
new file mode 100644
index 0000000..f1e3193
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/252.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/253.mp3 b/site/app/partialemergence/sounds/Water/Droplets/253.mp3
new file mode 100644
index 0000000..546b04c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/253.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/254.mp3 b/site/app/partialemergence/sounds/Water/Droplets/254.mp3
new file mode 100644
index 0000000..a1a66bd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/254.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/255.mp3 b/site/app/partialemergence/sounds/Water/Droplets/255.mp3
new file mode 100644
index 0000000..f2eeadf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/255.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/256.mp3 b/site/app/partialemergence/sounds/Water/Droplets/256.mp3
new file mode 100644
index 0000000..a426113
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/256.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/257.mp3 b/site/app/partialemergence/sounds/Water/Droplets/257.mp3
new file mode 100644
index 0000000..2482688
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/257.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/258.mp3 b/site/app/partialemergence/sounds/Water/Droplets/258.mp3
new file mode 100644
index 0000000..7b761ea
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/258.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/259.mp3 b/site/app/partialemergence/sounds/Water/Droplets/259.mp3
new file mode 100644
index 0000000..6828e2f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/259.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/26.mp3 b/site/app/partialemergence/sounds/Water/Droplets/26.mp3
new file mode 100644
index 0000000..abb4803
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/26.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/260.mp3 b/site/app/partialemergence/sounds/Water/Droplets/260.mp3
new file mode 100644
index 0000000..1da1ce7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/260.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/261.mp3 b/site/app/partialemergence/sounds/Water/Droplets/261.mp3
new file mode 100644
index 0000000..de6b115
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/261.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/262.mp3 b/site/app/partialemergence/sounds/Water/Droplets/262.mp3
new file mode 100644
index 0000000..cd1f7f3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/262.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/263.mp3 b/site/app/partialemergence/sounds/Water/Droplets/263.mp3
new file mode 100644
index 0000000..f1c25d8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/263.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/264.mp3 b/site/app/partialemergence/sounds/Water/Droplets/264.mp3
new file mode 100644
index 0000000..1364fb0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/264.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/265.mp3 b/site/app/partialemergence/sounds/Water/Droplets/265.mp3
new file mode 100644
index 0000000..8821a5c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/265.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/266.mp3 b/site/app/partialemergence/sounds/Water/Droplets/266.mp3
new file mode 100644
index 0000000..30885e0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/266.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/267.mp3 b/site/app/partialemergence/sounds/Water/Droplets/267.mp3
new file mode 100644
index 0000000..f647958
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/267.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/268.mp3 b/site/app/partialemergence/sounds/Water/Droplets/268.mp3
new file mode 100644
index 0000000..032d6e2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/268.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/269.mp3 b/site/app/partialemergence/sounds/Water/Droplets/269.mp3
new file mode 100644
index 0000000..06dcc69
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/269.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/27.mp3 b/site/app/partialemergence/sounds/Water/Droplets/27.mp3
new file mode 100644
index 0000000..0fce697
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/27.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/270.mp3 b/site/app/partialemergence/sounds/Water/Droplets/270.mp3
new file mode 100644
index 0000000..412e8b6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/270.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/271.mp3 b/site/app/partialemergence/sounds/Water/Droplets/271.mp3
new file mode 100644
index 0000000..3895a9d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/271.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/272.mp3 b/site/app/partialemergence/sounds/Water/Droplets/272.mp3
new file mode 100644
index 0000000..a606972
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/272.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/273.mp3 b/site/app/partialemergence/sounds/Water/Droplets/273.mp3
new file mode 100644
index 0000000..2d766eb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/273.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/274.mp3 b/site/app/partialemergence/sounds/Water/Droplets/274.mp3
new file mode 100644
index 0000000..0b60243
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/274.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/275.mp3 b/site/app/partialemergence/sounds/Water/Droplets/275.mp3
new file mode 100644
index 0000000..5913ac4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/275.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/276.mp3 b/site/app/partialemergence/sounds/Water/Droplets/276.mp3
new file mode 100644
index 0000000..567e666
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/276.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/277.mp3 b/site/app/partialemergence/sounds/Water/Droplets/277.mp3
new file mode 100644
index 0000000..88653ea
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/277.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/278.mp3 b/site/app/partialemergence/sounds/Water/Droplets/278.mp3
new file mode 100644
index 0000000..04beb99
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/278.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/279.mp3 b/site/app/partialemergence/sounds/Water/Droplets/279.mp3
new file mode 100644
index 0000000..0a8980b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/279.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/28.mp3 b/site/app/partialemergence/sounds/Water/Droplets/28.mp3
new file mode 100644
index 0000000..55efe81
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/28.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/280.mp3 b/site/app/partialemergence/sounds/Water/Droplets/280.mp3
new file mode 100644
index 0000000..380d4af
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/280.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/281.mp3 b/site/app/partialemergence/sounds/Water/Droplets/281.mp3
new file mode 100644
index 0000000..28e1116
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/281.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/282.mp3 b/site/app/partialemergence/sounds/Water/Droplets/282.mp3
new file mode 100644
index 0000000..a097e26
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/282.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/283.mp3 b/site/app/partialemergence/sounds/Water/Droplets/283.mp3
new file mode 100644
index 0000000..a77ef30
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/283.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/284.mp3 b/site/app/partialemergence/sounds/Water/Droplets/284.mp3
new file mode 100644
index 0000000..cc881cb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/284.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/285.mp3 b/site/app/partialemergence/sounds/Water/Droplets/285.mp3
new file mode 100644
index 0000000..7d4c9a7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/285.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/286.mp3 b/site/app/partialemergence/sounds/Water/Droplets/286.mp3
new file mode 100644
index 0000000..d8a8911
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/286.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/287.mp3 b/site/app/partialemergence/sounds/Water/Droplets/287.mp3
new file mode 100644
index 0000000..7763ace
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/287.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/288.mp3 b/site/app/partialemergence/sounds/Water/Droplets/288.mp3
new file mode 100644
index 0000000..e900cf8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/288.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/289.mp3 b/site/app/partialemergence/sounds/Water/Droplets/289.mp3
new file mode 100644
index 0000000..820e172
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/289.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/29.mp3 b/site/app/partialemergence/sounds/Water/Droplets/29.mp3
new file mode 100644
index 0000000..d209f98
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/29.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/290.mp3 b/site/app/partialemergence/sounds/Water/Droplets/290.mp3
new file mode 100644
index 0000000..08659c3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/290.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/291.mp3 b/site/app/partialemergence/sounds/Water/Droplets/291.mp3
new file mode 100644
index 0000000..cbd8283
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/291.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/292.mp3 b/site/app/partialemergence/sounds/Water/Droplets/292.mp3
new file mode 100644
index 0000000..fe5997f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/292.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/293.mp3 b/site/app/partialemergence/sounds/Water/Droplets/293.mp3
new file mode 100644
index 0000000..9caee62
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/293.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/294.mp3 b/site/app/partialemergence/sounds/Water/Droplets/294.mp3
new file mode 100644
index 0000000..cab7176
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/294.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/295.mp3 b/site/app/partialemergence/sounds/Water/Droplets/295.mp3
new file mode 100644
index 0000000..20d52e5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/295.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/296.mp3 b/site/app/partialemergence/sounds/Water/Droplets/296.mp3
new file mode 100644
index 0000000..7387fe1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/296.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/297.mp3 b/site/app/partialemergence/sounds/Water/Droplets/297.mp3
new file mode 100644
index 0000000..e6f60f5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/297.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/298.mp3 b/site/app/partialemergence/sounds/Water/Droplets/298.mp3
new file mode 100644
index 0000000..4cc0213
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/298.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/299.mp3 b/site/app/partialemergence/sounds/Water/Droplets/299.mp3
new file mode 100644
index 0000000..61c3eff
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/299.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/3.mp3 b/site/app/partialemergence/sounds/Water/Droplets/3.mp3
new file mode 100644
index 0000000..658418f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/30.mp3 b/site/app/partialemergence/sounds/Water/Droplets/30.mp3
new file mode 100644
index 0000000..05a46b9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/30.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/300.mp3 b/site/app/partialemergence/sounds/Water/Droplets/300.mp3
new file mode 100644
index 0000000..5e70e79
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/300.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/301.mp3 b/site/app/partialemergence/sounds/Water/Droplets/301.mp3
new file mode 100644
index 0000000..542de58
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/301.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/302.mp3 b/site/app/partialemergence/sounds/Water/Droplets/302.mp3
new file mode 100644
index 0000000..9dc534a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/302.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/303.mp3 b/site/app/partialemergence/sounds/Water/Droplets/303.mp3
new file mode 100644
index 0000000..247884c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/303.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/304.mp3 b/site/app/partialemergence/sounds/Water/Droplets/304.mp3
new file mode 100644
index 0000000..ff9c8a8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/304.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/305.mp3 b/site/app/partialemergence/sounds/Water/Droplets/305.mp3
new file mode 100644
index 0000000..e46c3e7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/305.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/306.mp3 b/site/app/partialemergence/sounds/Water/Droplets/306.mp3
new file mode 100644
index 0000000..9961c91
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/306.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/307.mp3 b/site/app/partialemergence/sounds/Water/Droplets/307.mp3
new file mode 100644
index 0000000..39fd980
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/307.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/308.mp3 b/site/app/partialemergence/sounds/Water/Droplets/308.mp3
new file mode 100644
index 0000000..bc77ec4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/308.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/309.mp3 b/site/app/partialemergence/sounds/Water/Droplets/309.mp3
new file mode 100644
index 0000000..f45ea3f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/309.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/31.mp3 b/site/app/partialemergence/sounds/Water/Droplets/31.mp3
new file mode 100644
index 0000000..3be7b75
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/31.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/310.mp3 b/site/app/partialemergence/sounds/Water/Droplets/310.mp3
new file mode 100644
index 0000000..a8a1f9d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/310.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/311.mp3 b/site/app/partialemergence/sounds/Water/Droplets/311.mp3
new file mode 100644
index 0000000..805802c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/311.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/312.mp3 b/site/app/partialemergence/sounds/Water/Droplets/312.mp3
new file mode 100644
index 0000000..929d59a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/312.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/313.mp3 b/site/app/partialemergence/sounds/Water/Droplets/313.mp3
new file mode 100644
index 0000000..3f9a989
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/313.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/314.mp3 b/site/app/partialemergence/sounds/Water/Droplets/314.mp3
new file mode 100644
index 0000000..959d11a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/314.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/315.mp3 b/site/app/partialemergence/sounds/Water/Droplets/315.mp3
new file mode 100644
index 0000000..d854229
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/315.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/316.mp3 b/site/app/partialemergence/sounds/Water/Droplets/316.mp3
new file mode 100644
index 0000000..c86e1ce
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/316.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/317.mp3 b/site/app/partialemergence/sounds/Water/Droplets/317.mp3
new file mode 100644
index 0000000..5118364
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/317.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/318.mp3 b/site/app/partialemergence/sounds/Water/Droplets/318.mp3
new file mode 100644
index 0000000..0918fee
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/318.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/319.mp3 b/site/app/partialemergence/sounds/Water/Droplets/319.mp3
new file mode 100644
index 0000000..5dc6067
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/319.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/32.mp3 b/site/app/partialemergence/sounds/Water/Droplets/32.mp3
new file mode 100644
index 0000000..4cd64c5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/32.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/320.mp3 b/site/app/partialemergence/sounds/Water/Droplets/320.mp3
new file mode 100644
index 0000000..2551027
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/320.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/321.mp3 b/site/app/partialemergence/sounds/Water/Droplets/321.mp3
new file mode 100644
index 0000000..1254684
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/321.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/322.mp3 b/site/app/partialemergence/sounds/Water/Droplets/322.mp3
new file mode 100644
index 0000000..a8b4761
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/322.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/323.mp3 b/site/app/partialemergence/sounds/Water/Droplets/323.mp3
new file mode 100644
index 0000000..09d3361
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/323.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/324.mp3 b/site/app/partialemergence/sounds/Water/Droplets/324.mp3
new file mode 100644
index 0000000..9ac169a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/324.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/325.mp3 b/site/app/partialemergence/sounds/Water/Droplets/325.mp3
new file mode 100644
index 0000000..c5dd7dd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/325.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/326.mp3 b/site/app/partialemergence/sounds/Water/Droplets/326.mp3
new file mode 100644
index 0000000..fd83c64
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/326.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/327.mp3 b/site/app/partialemergence/sounds/Water/Droplets/327.mp3
new file mode 100644
index 0000000..2e520fc
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/327.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/328.mp3 b/site/app/partialemergence/sounds/Water/Droplets/328.mp3
new file mode 100644
index 0000000..006735d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/328.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/329.mp3 b/site/app/partialemergence/sounds/Water/Droplets/329.mp3
new file mode 100644
index 0000000..d2b1845
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/329.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/33.mp3 b/site/app/partialemergence/sounds/Water/Droplets/33.mp3
new file mode 100644
index 0000000..0ffdf5b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/33.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/330.mp3 b/site/app/partialemergence/sounds/Water/Droplets/330.mp3
new file mode 100644
index 0000000..8be7309
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/330.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/331.mp3 b/site/app/partialemergence/sounds/Water/Droplets/331.mp3
new file mode 100644
index 0000000..0b8568a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/331.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/332.mp3 b/site/app/partialemergence/sounds/Water/Droplets/332.mp3
new file mode 100644
index 0000000..99a50e4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/332.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/333.mp3 b/site/app/partialemergence/sounds/Water/Droplets/333.mp3
new file mode 100644
index 0000000..8b16f23
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/333.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/334.mp3 b/site/app/partialemergence/sounds/Water/Droplets/334.mp3
new file mode 100644
index 0000000..f1c17f2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/334.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/335.mp3 b/site/app/partialemergence/sounds/Water/Droplets/335.mp3
new file mode 100644
index 0000000..7e8bdfb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/335.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/336.mp3 b/site/app/partialemergence/sounds/Water/Droplets/336.mp3
new file mode 100644
index 0000000..683c8b1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/336.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/337.mp3 b/site/app/partialemergence/sounds/Water/Droplets/337.mp3
new file mode 100644
index 0000000..db5f72c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/337.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/338.mp3 b/site/app/partialemergence/sounds/Water/Droplets/338.mp3
new file mode 100644
index 0000000..ccc8798
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/338.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/339.mp3 b/site/app/partialemergence/sounds/Water/Droplets/339.mp3
new file mode 100644
index 0000000..84cb648
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/339.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/34.mp3 b/site/app/partialemergence/sounds/Water/Droplets/34.mp3
new file mode 100644
index 0000000..472b245
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/34.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/340.mp3 b/site/app/partialemergence/sounds/Water/Droplets/340.mp3
new file mode 100644
index 0000000..911dd49
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/340.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/341.mp3 b/site/app/partialemergence/sounds/Water/Droplets/341.mp3
new file mode 100644
index 0000000..59aa242
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/341.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/342.mp3 b/site/app/partialemergence/sounds/Water/Droplets/342.mp3
new file mode 100644
index 0000000..c717bde
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/342.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/343.mp3 b/site/app/partialemergence/sounds/Water/Droplets/343.mp3
new file mode 100644
index 0000000..99be7f2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/343.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/344.mp3 b/site/app/partialemergence/sounds/Water/Droplets/344.mp3
new file mode 100644
index 0000000..54943dc
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/344.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/345.mp3 b/site/app/partialemergence/sounds/Water/Droplets/345.mp3
new file mode 100644
index 0000000..613c7e0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/345.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/346.mp3 b/site/app/partialemergence/sounds/Water/Droplets/346.mp3
new file mode 100644
index 0000000..5c798fe
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/346.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/347.mp3 b/site/app/partialemergence/sounds/Water/Droplets/347.mp3
new file mode 100644
index 0000000..6a81894
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/347.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/348.mp3 b/site/app/partialemergence/sounds/Water/Droplets/348.mp3
new file mode 100644
index 0000000..8c986ba
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/348.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/349.mp3 b/site/app/partialemergence/sounds/Water/Droplets/349.mp3
new file mode 100644
index 0000000..5782791
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/349.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/35.mp3 b/site/app/partialemergence/sounds/Water/Droplets/35.mp3
new file mode 100644
index 0000000..1274b7c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/35.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/350.mp3 b/site/app/partialemergence/sounds/Water/Droplets/350.mp3
new file mode 100644
index 0000000..9a79241
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/350.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/351.mp3 b/site/app/partialemergence/sounds/Water/Droplets/351.mp3
new file mode 100644
index 0000000..ba3f75b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/351.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/352.mp3 b/site/app/partialemergence/sounds/Water/Droplets/352.mp3
new file mode 100644
index 0000000..e9b9bd8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/352.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/353.mp3 b/site/app/partialemergence/sounds/Water/Droplets/353.mp3
new file mode 100644
index 0000000..763401c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/353.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/354.mp3 b/site/app/partialemergence/sounds/Water/Droplets/354.mp3
new file mode 100644
index 0000000..09881f4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/354.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/355.mp3 b/site/app/partialemergence/sounds/Water/Droplets/355.mp3
new file mode 100644
index 0000000..61534cf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/355.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/356.mp3 b/site/app/partialemergence/sounds/Water/Droplets/356.mp3
new file mode 100644
index 0000000..3e7dfc0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/356.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/357.mp3 b/site/app/partialemergence/sounds/Water/Droplets/357.mp3
new file mode 100644
index 0000000..bb3babf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/357.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/358.mp3 b/site/app/partialemergence/sounds/Water/Droplets/358.mp3
new file mode 100644
index 0000000..9864a4b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/358.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/359.mp3 b/site/app/partialemergence/sounds/Water/Droplets/359.mp3
new file mode 100644
index 0000000..3f48321
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/359.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/36.mp3 b/site/app/partialemergence/sounds/Water/Droplets/36.mp3
new file mode 100644
index 0000000..1a775dc
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/36.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/360.mp3 b/site/app/partialemergence/sounds/Water/Droplets/360.mp3
new file mode 100644
index 0000000..0a0a3d5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/360.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/361.mp3 b/site/app/partialemergence/sounds/Water/Droplets/361.mp3
new file mode 100644
index 0000000..0943c3c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/361.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/362.mp3 b/site/app/partialemergence/sounds/Water/Droplets/362.mp3
new file mode 100644
index 0000000..5564f64
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/362.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/363.mp3 b/site/app/partialemergence/sounds/Water/Droplets/363.mp3
new file mode 100644
index 0000000..87192c0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/363.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/364.mp3 b/site/app/partialemergence/sounds/Water/Droplets/364.mp3
new file mode 100644
index 0000000..a4785b2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/364.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/365.mp3 b/site/app/partialemergence/sounds/Water/Droplets/365.mp3
new file mode 100644
index 0000000..897393c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/365.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/366.mp3 b/site/app/partialemergence/sounds/Water/Droplets/366.mp3
new file mode 100644
index 0000000..f2cf146
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/366.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/367.mp3 b/site/app/partialemergence/sounds/Water/Droplets/367.mp3
new file mode 100644
index 0000000..a1d6163
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/367.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/368.mp3 b/site/app/partialemergence/sounds/Water/Droplets/368.mp3
new file mode 100644
index 0000000..2760769
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/368.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/369.mp3 b/site/app/partialemergence/sounds/Water/Droplets/369.mp3
new file mode 100644
index 0000000..2620a2a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/369.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/37.mp3 b/site/app/partialemergence/sounds/Water/Droplets/37.mp3
new file mode 100644
index 0000000..b86e36c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/37.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/370.mp3 b/site/app/partialemergence/sounds/Water/Droplets/370.mp3
new file mode 100644
index 0000000..f6a2dfd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/370.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/371.mp3 b/site/app/partialemergence/sounds/Water/Droplets/371.mp3
new file mode 100644
index 0000000..de222cd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/371.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/372.mp3 b/site/app/partialemergence/sounds/Water/Droplets/372.mp3
new file mode 100644
index 0000000..d22d0d8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/372.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/373.mp3 b/site/app/partialemergence/sounds/Water/Droplets/373.mp3
new file mode 100644
index 0000000..ce1c786
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/373.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/374.mp3 b/site/app/partialemergence/sounds/Water/Droplets/374.mp3
new file mode 100644
index 0000000..d682d6d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/374.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/375.mp3 b/site/app/partialemergence/sounds/Water/Droplets/375.mp3
new file mode 100644
index 0000000..3e0fd0b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/375.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/376.mp3 b/site/app/partialemergence/sounds/Water/Droplets/376.mp3
new file mode 100644
index 0000000..6851a65
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/376.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/377.mp3 b/site/app/partialemergence/sounds/Water/Droplets/377.mp3
new file mode 100644
index 0000000..1e97ddb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/377.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/378.mp3 b/site/app/partialemergence/sounds/Water/Droplets/378.mp3
new file mode 100644
index 0000000..afc2478
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/378.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/379.mp3 b/site/app/partialemergence/sounds/Water/Droplets/379.mp3
new file mode 100644
index 0000000..fe1bd6f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/379.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/38.mp3 b/site/app/partialemergence/sounds/Water/Droplets/38.mp3
new file mode 100644
index 0000000..2ca366c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/38.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/380.mp3 b/site/app/partialemergence/sounds/Water/Droplets/380.mp3
new file mode 100644
index 0000000..159c232
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/380.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/381.mp3 b/site/app/partialemergence/sounds/Water/Droplets/381.mp3
new file mode 100644
index 0000000..22709cf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/381.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/382.mp3 b/site/app/partialemergence/sounds/Water/Droplets/382.mp3
new file mode 100644
index 0000000..af0dbc6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/382.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/383.mp3 b/site/app/partialemergence/sounds/Water/Droplets/383.mp3
new file mode 100644
index 0000000..c50c3c8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/383.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/384.mp3 b/site/app/partialemergence/sounds/Water/Droplets/384.mp3
new file mode 100644
index 0000000..07ad65a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/384.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/385.mp3 b/site/app/partialemergence/sounds/Water/Droplets/385.mp3
new file mode 100644
index 0000000..5fb2f61
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/385.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/386.mp3 b/site/app/partialemergence/sounds/Water/Droplets/386.mp3
new file mode 100644
index 0000000..4a383db
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/386.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/387.mp3 b/site/app/partialemergence/sounds/Water/Droplets/387.mp3
new file mode 100644
index 0000000..bbb51b0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/387.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/388.mp3 b/site/app/partialemergence/sounds/Water/Droplets/388.mp3
new file mode 100644
index 0000000..6eeed7c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/388.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/389.mp3 b/site/app/partialemergence/sounds/Water/Droplets/389.mp3
new file mode 100644
index 0000000..8890751
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/389.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/39.mp3 b/site/app/partialemergence/sounds/Water/Droplets/39.mp3
new file mode 100644
index 0000000..0747981
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/39.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/390.mp3 b/site/app/partialemergence/sounds/Water/Droplets/390.mp3
new file mode 100644
index 0000000..e70a9c5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/390.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/391.mp3 b/site/app/partialemergence/sounds/Water/Droplets/391.mp3
new file mode 100644
index 0000000..c50c6db
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/391.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/392.mp3 b/site/app/partialemergence/sounds/Water/Droplets/392.mp3
new file mode 100644
index 0000000..1350525
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/392.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/393.mp3 b/site/app/partialemergence/sounds/Water/Droplets/393.mp3
new file mode 100644
index 0000000..9e51eda
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/393.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/394.mp3 b/site/app/partialemergence/sounds/Water/Droplets/394.mp3
new file mode 100644
index 0000000..1313c69
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/394.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/395.mp3 b/site/app/partialemergence/sounds/Water/Droplets/395.mp3
new file mode 100644
index 0000000..514d8b3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/395.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/396.mp3 b/site/app/partialemergence/sounds/Water/Droplets/396.mp3
new file mode 100644
index 0000000..3a3dec7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/396.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/397.mp3 b/site/app/partialemergence/sounds/Water/Droplets/397.mp3
new file mode 100644
index 0000000..adaa5fe
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/397.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/398.mp3 b/site/app/partialemergence/sounds/Water/Droplets/398.mp3
new file mode 100644
index 0000000..943dbfa
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/398.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/399.mp3 b/site/app/partialemergence/sounds/Water/Droplets/399.mp3
new file mode 100644
index 0000000..0b22e34
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/399.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/4.mp3 b/site/app/partialemergence/sounds/Water/Droplets/4.mp3
new file mode 100644
index 0000000..4f3565e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/40.mp3 b/site/app/partialemergence/sounds/Water/Droplets/40.mp3
new file mode 100644
index 0000000..118ecf4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/40.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/400.mp3 b/site/app/partialemergence/sounds/Water/Droplets/400.mp3
new file mode 100644
index 0000000..30c9af4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/400.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/401.mp3 b/site/app/partialemergence/sounds/Water/Droplets/401.mp3
new file mode 100644
index 0000000..42b5552
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/401.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/402.mp3 b/site/app/partialemergence/sounds/Water/Droplets/402.mp3
new file mode 100644
index 0000000..687f155
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/402.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/403.mp3 b/site/app/partialemergence/sounds/Water/Droplets/403.mp3
new file mode 100644
index 0000000..2c0b4db
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/403.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/404.mp3 b/site/app/partialemergence/sounds/Water/Droplets/404.mp3
new file mode 100644
index 0000000..05ca2e0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/404.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/405.mp3 b/site/app/partialemergence/sounds/Water/Droplets/405.mp3
new file mode 100644
index 0000000..b67f497
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/405.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/406.mp3 b/site/app/partialemergence/sounds/Water/Droplets/406.mp3
new file mode 100644
index 0000000..aecffc2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/406.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/407.mp3 b/site/app/partialemergence/sounds/Water/Droplets/407.mp3
new file mode 100644
index 0000000..6b41c6b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/407.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/408.mp3 b/site/app/partialemergence/sounds/Water/Droplets/408.mp3
new file mode 100644
index 0000000..8a30682
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/408.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/409.mp3 b/site/app/partialemergence/sounds/Water/Droplets/409.mp3
new file mode 100644
index 0000000..892577a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/409.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/41.mp3 b/site/app/partialemergence/sounds/Water/Droplets/41.mp3
new file mode 100644
index 0000000..6ca406f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/41.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/410.mp3 b/site/app/partialemergence/sounds/Water/Droplets/410.mp3
new file mode 100644
index 0000000..77c8ad8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/410.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/411.mp3 b/site/app/partialemergence/sounds/Water/Droplets/411.mp3
new file mode 100644
index 0000000..269510a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/411.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/412.mp3 b/site/app/partialemergence/sounds/Water/Droplets/412.mp3
new file mode 100644
index 0000000..c9ec6da
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/412.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/413.mp3 b/site/app/partialemergence/sounds/Water/Droplets/413.mp3
new file mode 100644
index 0000000..f8a42a8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/413.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/414.mp3 b/site/app/partialemergence/sounds/Water/Droplets/414.mp3
new file mode 100644
index 0000000..3bbf727
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/414.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/415.mp3 b/site/app/partialemergence/sounds/Water/Droplets/415.mp3
new file mode 100644
index 0000000..220ef75
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/415.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/416.mp3 b/site/app/partialemergence/sounds/Water/Droplets/416.mp3
new file mode 100644
index 0000000..25945a7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/416.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/417.mp3 b/site/app/partialemergence/sounds/Water/Droplets/417.mp3
new file mode 100644
index 0000000..830ba10
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/417.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/418.mp3 b/site/app/partialemergence/sounds/Water/Droplets/418.mp3
new file mode 100644
index 0000000..6f1c8a2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/418.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/419.mp3 b/site/app/partialemergence/sounds/Water/Droplets/419.mp3
new file mode 100644
index 0000000..e899697
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/419.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/42.mp3 b/site/app/partialemergence/sounds/Water/Droplets/42.mp3
new file mode 100644
index 0000000..5a6af44
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/42.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/420.mp3 b/site/app/partialemergence/sounds/Water/Droplets/420.mp3
new file mode 100644
index 0000000..b772a0c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/420.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/421.mp3 b/site/app/partialemergence/sounds/Water/Droplets/421.mp3
new file mode 100644
index 0000000..33fade3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/421.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/422.mp3 b/site/app/partialemergence/sounds/Water/Droplets/422.mp3
new file mode 100644
index 0000000..11bd2c1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/422.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/423.mp3 b/site/app/partialemergence/sounds/Water/Droplets/423.mp3
new file mode 100644
index 0000000..0420da7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/423.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/424.mp3 b/site/app/partialemergence/sounds/Water/Droplets/424.mp3
new file mode 100644
index 0000000..eef20bd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/424.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/425.mp3 b/site/app/partialemergence/sounds/Water/Droplets/425.mp3
new file mode 100644
index 0000000..4d0850e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/425.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/426.mp3 b/site/app/partialemergence/sounds/Water/Droplets/426.mp3
new file mode 100644
index 0000000..686c192
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/426.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/427.mp3 b/site/app/partialemergence/sounds/Water/Droplets/427.mp3
new file mode 100644
index 0000000..c3019ea
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/427.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/428.mp3 b/site/app/partialemergence/sounds/Water/Droplets/428.mp3
new file mode 100644
index 0000000..da4f073
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/428.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/429.mp3 b/site/app/partialemergence/sounds/Water/Droplets/429.mp3
new file mode 100644
index 0000000..b2d9bf0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/429.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/43.mp3 b/site/app/partialemergence/sounds/Water/Droplets/43.mp3
new file mode 100644
index 0000000..561e76e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/43.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/430.mp3 b/site/app/partialemergence/sounds/Water/Droplets/430.mp3
new file mode 100644
index 0000000..f78b80b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/430.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/431.mp3 b/site/app/partialemergence/sounds/Water/Droplets/431.mp3
new file mode 100644
index 0000000..472c981
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/431.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/432.mp3 b/site/app/partialemergence/sounds/Water/Droplets/432.mp3
new file mode 100644
index 0000000..a147125
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/432.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/433.mp3 b/site/app/partialemergence/sounds/Water/Droplets/433.mp3
new file mode 100644
index 0000000..3ec1f38
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/433.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/434.mp3 b/site/app/partialemergence/sounds/Water/Droplets/434.mp3
new file mode 100644
index 0000000..e61fe15
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/434.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/435.mp3 b/site/app/partialemergence/sounds/Water/Droplets/435.mp3
new file mode 100644
index 0000000..687ca40
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/435.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/436.mp3 b/site/app/partialemergence/sounds/Water/Droplets/436.mp3
new file mode 100644
index 0000000..bf0feef
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/436.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/437.mp3 b/site/app/partialemergence/sounds/Water/Droplets/437.mp3
new file mode 100644
index 0000000..7e7004c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/437.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/438.mp3 b/site/app/partialemergence/sounds/Water/Droplets/438.mp3
new file mode 100644
index 0000000..71f03e4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/438.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/439.mp3 b/site/app/partialemergence/sounds/Water/Droplets/439.mp3
new file mode 100644
index 0000000..fa8fb11
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/439.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/44.mp3 b/site/app/partialemergence/sounds/Water/Droplets/44.mp3
new file mode 100644
index 0000000..347770f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/44.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/440.mp3 b/site/app/partialemergence/sounds/Water/Droplets/440.mp3
new file mode 100644
index 0000000..c4b8bc6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/440.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/441.mp3 b/site/app/partialemergence/sounds/Water/Droplets/441.mp3
new file mode 100644
index 0000000..0dedd94
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/441.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/442.mp3 b/site/app/partialemergence/sounds/Water/Droplets/442.mp3
new file mode 100644
index 0000000..bfb9fca
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/442.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/443.mp3 b/site/app/partialemergence/sounds/Water/Droplets/443.mp3
new file mode 100644
index 0000000..1547456
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/443.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/444.mp3 b/site/app/partialemergence/sounds/Water/Droplets/444.mp3
new file mode 100644
index 0000000..34f1ecd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/444.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/445.mp3 b/site/app/partialemergence/sounds/Water/Droplets/445.mp3
new file mode 100644
index 0000000..8401ddf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/445.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/446.mp3 b/site/app/partialemergence/sounds/Water/Droplets/446.mp3
new file mode 100644
index 0000000..a41fcd6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/446.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/447.mp3 b/site/app/partialemergence/sounds/Water/Droplets/447.mp3
new file mode 100644
index 0000000..243ec00
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/447.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/448.mp3 b/site/app/partialemergence/sounds/Water/Droplets/448.mp3
new file mode 100644
index 0000000..354517f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/448.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/449.mp3 b/site/app/partialemergence/sounds/Water/Droplets/449.mp3
new file mode 100644
index 0000000..8aaecfd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/449.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/45.mp3 b/site/app/partialemergence/sounds/Water/Droplets/45.mp3
new file mode 100644
index 0000000..acd0fc6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/45.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/450.mp3 b/site/app/partialemergence/sounds/Water/Droplets/450.mp3
new file mode 100644
index 0000000..c561572
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/450.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/451.mp3 b/site/app/partialemergence/sounds/Water/Droplets/451.mp3
new file mode 100644
index 0000000..8660a7c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/451.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/452.mp3 b/site/app/partialemergence/sounds/Water/Droplets/452.mp3
new file mode 100644
index 0000000..3ffffaa
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/452.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/453.mp3 b/site/app/partialemergence/sounds/Water/Droplets/453.mp3
new file mode 100644
index 0000000..baedda1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/453.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/454.mp3 b/site/app/partialemergence/sounds/Water/Droplets/454.mp3
new file mode 100644
index 0000000..cabcd97
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/454.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/455.mp3 b/site/app/partialemergence/sounds/Water/Droplets/455.mp3
new file mode 100644
index 0000000..8a33e35
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/455.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/456.mp3 b/site/app/partialemergence/sounds/Water/Droplets/456.mp3
new file mode 100644
index 0000000..ca1c8ef
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/456.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/457.mp3 b/site/app/partialemergence/sounds/Water/Droplets/457.mp3
new file mode 100644
index 0000000..02afd44
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/457.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/458.mp3 b/site/app/partialemergence/sounds/Water/Droplets/458.mp3
new file mode 100644
index 0000000..3fca4ff
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/458.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/459.mp3 b/site/app/partialemergence/sounds/Water/Droplets/459.mp3
new file mode 100644
index 0000000..d5abd99
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/459.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/46.mp3 b/site/app/partialemergence/sounds/Water/Droplets/46.mp3
new file mode 100644
index 0000000..5b8d181
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/46.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/460.mp3 b/site/app/partialemergence/sounds/Water/Droplets/460.mp3
new file mode 100644
index 0000000..a3485bb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/460.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/461.mp3 b/site/app/partialemergence/sounds/Water/Droplets/461.mp3
new file mode 100644
index 0000000..79acc5e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/461.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/462.mp3 b/site/app/partialemergence/sounds/Water/Droplets/462.mp3
new file mode 100644
index 0000000..8e18474
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/462.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/463.mp3 b/site/app/partialemergence/sounds/Water/Droplets/463.mp3
new file mode 100644
index 0000000..afc845c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/463.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/464.mp3 b/site/app/partialemergence/sounds/Water/Droplets/464.mp3
new file mode 100644
index 0000000..9b058c3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/464.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/465.mp3 b/site/app/partialemergence/sounds/Water/Droplets/465.mp3
new file mode 100644
index 0000000..0e0ba88
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/465.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/466.mp3 b/site/app/partialemergence/sounds/Water/Droplets/466.mp3
new file mode 100644
index 0000000..b5b98b1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/466.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/467.mp3 b/site/app/partialemergence/sounds/Water/Droplets/467.mp3
new file mode 100644
index 0000000..ff2b53f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/467.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/468.mp3 b/site/app/partialemergence/sounds/Water/Droplets/468.mp3
new file mode 100644
index 0000000..93545ab
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/468.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/469.mp3 b/site/app/partialemergence/sounds/Water/Droplets/469.mp3
new file mode 100644
index 0000000..0e01fe8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/469.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/47.mp3 b/site/app/partialemergence/sounds/Water/Droplets/47.mp3
new file mode 100644
index 0000000..407441e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/47.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/470.mp3 b/site/app/partialemergence/sounds/Water/Droplets/470.mp3
new file mode 100644
index 0000000..2f9dbee
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/470.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/471.mp3 b/site/app/partialemergence/sounds/Water/Droplets/471.mp3
new file mode 100644
index 0000000..0b6d68a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/471.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/472.mp3 b/site/app/partialemergence/sounds/Water/Droplets/472.mp3
new file mode 100644
index 0000000..72e9a81
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/472.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/473.mp3 b/site/app/partialemergence/sounds/Water/Droplets/473.mp3
new file mode 100644
index 0000000..e464dc0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/473.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/474.mp3 b/site/app/partialemergence/sounds/Water/Droplets/474.mp3
new file mode 100644
index 0000000..06bdcf5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/474.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/475.mp3 b/site/app/partialemergence/sounds/Water/Droplets/475.mp3
new file mode 100644
index 0000000..d8f51ef
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/475.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/476.mp3 b/site/app/partialemergence/sounds/Water/Droplets/476.mp3
new file mode 100644
index 0000000..4e8bc4e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/476.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/477.mp3 b/site/app/partialemergence/sounds/Water/Droplets/477.mp3
new file mode 100644
index 0000000..70c983e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/477.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/478.mp3 b/site/app/partialemergence/sounds/Water/Droplets/478.mp3
new file mode 100644
index 0000000..aff8dba
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/478.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/479.mp3 b/site/app/partialemergence/sounds/Water/Droplets/479.mp3
new file mode 100644
index 0000000..d9e3e32
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/479.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/48.mp3 b/site/app/partialemergence/sounds/Water/Droplets/48.mp3
new file mode 100644
index 0000000..4471fe7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/48.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/480.mp3 b/site/app/partialemergence/sounds/Water/Droplets/480.mp3
new file mode 100644
index 0000000..eac0f83
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/480.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/481.mp3 b/site/app/partialemergence/sounds/Water/Droplets/481.mp3
new file mode 100644
index 0000000..83d5d6c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/481.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/482.mp3 b/site/app/partialemergence/sounds/Water/Droplets/482.mp3
new file mode 100644
index 0000000..9065aba
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/482.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/483.mp3 b/site/app/partialemergence/sounds/Water/Droplets/483.mp3
new file mode 100644
index 0000000..c773ae3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/483.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/484.mp3 b/site/app/partialemergence/sounds/Water/Droplets/484.mp3
new file mode 100644
index 0000000..7fd66f8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/484.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/485.mp3 b/site/app/partialemergence/sounds/Water/Droplets/485.mp3
new file mode 100644
index 0000000..fa1572a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/485.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/486.mp3 b/site/app/partialemergence/sounds/Water/Droplets/486.mp3
new file mode 100644
index 0000000..2db8508
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/486.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/487.mp3 b/site/app/partialemergence/sounds/Water/Droplets/487.mp3
new file mode 100644
index 0000000..5c261ca
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/487.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/488.mp3 b/site/app/partialemergence/sounds/Water/Droplets/488.mp3
new file mode 100644
index 0000000..d048f66
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/488.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/489.mp3 b/site/app/partialemergence/sounds/Water/Droplets/489.mp3
new file mode 100644
index 0000000..ef18637
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/489.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/49.mp3 b/site/app/partialemergence/sounds/Water/Droplets/49.mp3
new file mode 100644
index 0000000..d805683
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/49.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/490.mp3 b/site/app/partialemergence/sounds/Water/Droplets/490.mp3
new file mode 100644
index 0000000..3b141ab
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/490.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/491.mp3 b/site/app/partialemergence/sounds/Water/Droplets/491.mp3
new file mode 100644
index 0000000..93f49fe
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/491.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/492.mp3 b/site/app/partialemergence/sounds/Water/Droplets/492.mp3
new file mode 100644
index 0000000..2b5ce86
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/492.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/493.mp3 b/site/app/partialemergence/sounds/Water/Droplets/493.mp3
new file mode 100644
index 0000000..51c92d5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/493.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/494.mp3 b/site/app/partialemergence/sounds/Water/Droplets/494.mp3
new file mode 100644
index 0000000..fa045c3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/494.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/495.mp3 b/site/app/partialemergence/sounds/Water/Droplets/495.mp3
new file mode 100644
index 0000000..1c3fd59
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/495.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/496.mp3 b/site/app/partialemergence/sounds/Water/Droplets/496.mp3
new file mode 100644
index 0000000..8f9f71a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/496.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/497.mp3 b/site/app/partialemergence/sounds/Water/Droplets/497.mp3
new file mode 100644
index 0000000..30b01b6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/497.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/498.mp3 b/site/app/partialemergence/sounds/Water/Droplets/498.mp3
new file mode 100644
index 0000000..c385116
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/498.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/499.mp3 b/site/app/partialemergence/sounds/Water/Droplets/499.mp3
new file mode 100644
index 0000000..6376b57
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/499.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/5.mp3 b/site/app/partialemergence/sounds/Water/Droplets/5.mp3
new file mode 100644
index 0000000..1afe7b1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/5.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/50.mp3 b/site/app/partialemergence/sounds/Water/Droplets/50.mp3
new file mode 100644
index 0000000..d02abe8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/50.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/500.mp3 b/site/app/partialemergence/sounds/Water/Droplets/500.mp3
new file mode 100644
index 0000000..8a210f1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/500.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/501.mp3 b/site/app/partialemergence/sounds/Water/Droplets/501.mp3
new file mode 100644
index 0000000..47bfcc6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/501.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/502.mp3 b/site/app/partialemergence/sounds/Water/Droplets/502.mp3
new file mode 100644
index 0000000..5a92a48
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/502.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/503.mp3 b/site/app/partialemergence/sounds/Water/Droplets/503.mp3
new file mode 100644
index 0000000..4896c50
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/503.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/504.mp3 b/site/app/partialemergence/sounds/Water/Droplets/504.mp3
new file mode 100644
index 0000000..66e2cd1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/504.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/505.mp3 b/site/app/partialemergence/sounds/Water/Droplets/505.mp3
new file mode 100644
index 0000000..406db03
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/505.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/506.mp3 b/site/app/partialemergence/sounds/Water/Droplets/506.mp3
new file mode 100644
index 0000000..60988f4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/506.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/507.mp3 b/site/app/partialemergence/sounds/Water/Droplets/507.mp3
new file mode 100644
index 0000000..7dc3662
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/507.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/508.mp3 b/site/app/partialemergence/sounds/Water/Droplets/508.mp3
new file mode 100644
index 0000000..ba57d16
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/508.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/509.mp3 b/site/app/partialemergence/sounds/Water/Droplets/509.mp3
new file mode 100644
index 0000000..663e594
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/509.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/51.mp3 b/site/app/partialemergence/sounds/Water/Droplets/51.mp3
new file mode 100644
index 0000000..264ca7d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/51.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/510.mp3 b/site/app/partialemergence/sounds/Water/Droplets/510.mp3
new file mode 100644
index 0000000..8e37848
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/510.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/511.mp3 b/site/app/partialemergence/sounds/Water/Droplets/511.mp3
new file mode 100644
index 0000000..1789a30
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/511.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/512.mp3 b/site/app/partialemergence/sounds/Water/Droplets/512.mp3
new file mode 100644
index 0000000..a728104
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/512.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/513.mp3 b/site/app/partialemergence/sounds/Water/Droplets/513.mp3
new file mode 100644
index 0000000..95a78c2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/513.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/514.mp3 b/site/app/partialemergence/sounds/Water/Droplets/514.mp3
new file mode 100644
index 0000000..1b32cc9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/514.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/515.mp3 b/site/app/partialemergence/sounds/Water/Droplets/515.mp3
new file mode 100644
index 0000000..d77ffd8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/515.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/516.mp3 b/site/app/partialemergence/sounds/Water/Droplets/516.mp3
new file mode 100644
index 0000000..3502c4b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/516.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/517.mp3 b/site/app/partialemergence/sounds/Water/Droplets/517.mp3
new file mode 100644
index 0000000..130c074
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/517.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/518.mp3 b/site/app/partialemergence/sounds/Water/Droplets/518.mp3
new file mode 100644
index 0000000..6940776
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/518.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/519.mp3 b/site/app/partialemergence/sounds/Water/Droplets/519.mp3
new file mode 100644
index 0000000..18f179a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/519.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/52.mp3 b/site/app/partialemergence/sounds/Water/Droplets/52.mp3
new file mode 100644
index 0000000..0740868
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/52.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/520.mp3 b/site/app/partialemergence/sounds/Water/Droplets/520.mp3
new file mode 100644
index 0000000..c63e64c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/520.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/521.mp3 b/site/app/partialemergence/sounds/Water/Droplets/521.mp3
new file mode 100644
index 0000000..61d2978
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/521.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/522.mp3 b/site/app/partialemergence/sounds/Water/Droplets/522.mp3
new file mode 100644
index 0000000..5baa849
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/522.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/523.mp3 b/site/app/partialemergence/sounds/Water/Droplets/523.mp3
new file mode 100644
index 0000000..b889034
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/523.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/524.mp3 b/site/app/partialemergence/sounds/Water/Droplets/524.mp3
new file mode 100644
index 0000000..51e9bb4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/524.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/525.mp3 b/site/app/partialemergence/sounds/Water/Droplets/525.mp3
new file mode 100644
index 0000000..d4ad072
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/525.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/526.mp3 b/site/app/partialemergence/sounds/Water/Droplets/526.mp3
new file mode 100644
index 0000000..98ef33d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/526.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/527.mp3 b/site/app/partialemergence/sounds/Water/Droplets/527.mp3
new file mode 100644
index 0000000..5e5f9b8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/527.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/528.mp3 b/site/app/partialemergence/sounds/Water/Droplets/528.mp3
new file mode 100644
index 0000000..d1f40ef
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/528.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/529.mp3 b/site/app/partialemergence/sounds/Water/Droplets/529.mp3
new file mode 100644
index 0000000..13028a3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/529.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/53.mp3 b/site/app/partialemergence/sounds/Water/Droplets/53.mp3
new file mode 100644
index 0000000..fbcf4ba
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/53.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/530.mp3 b/site/app/partialemergence/sounds/Water/Droplets/530.mp3
new file mode 100644
index 0000000..09171bd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/530.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/531.mp3 b/site/app/partialemergence/sounds/Water/Droplets/531.mp3
new file mode 100644
index 0000000..33b43ec
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/531.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/532.mp3 b/site/app/partialemergence/sounds/Water/Droplets/532.mp3
new file mode 100644
index 0000000..07aa24e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/532.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/533.mp3 b/site/app/partialemergence/sounds/Water/Droplets/533.mp3
new file mode 100644
index 0000000..e1c3149
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/533.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/534.mp3 b/site/app/partialemergence/sounds/Water/Droplets/534.mp3
new file mode 100644
index 0000000..2b35e71
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/534.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/535.mp3 b/site/app/partialemergence/sounds/Water/Droplets/535.mp3
new file mode 100644
index 0000000..63b783a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/535.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/536.mp3 b/site/app/partialemergence/sounds/Water/Droplets/536.mp3
new file mode 100644
index 0000000..5c7f354
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/536.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/537.mp3 b/site/app/partialemergence/sounds/Water/Droplets/537.mp3
new file mode 100644
index 0000000..65212f5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/537.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/538.mp3 b/site/app/partialemergence/sounds/Water/Droplets/538.mp3
new file mode 100644
index 0000000..1ab81be
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/538.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/539.mp3 b/site/app/partialemergence/sounds/Water/Droplets/539.mp3
new file mode 100644
index 0000000..293e6e7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/539.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/54.mp3 b/site/app/partialemergence/sounds/Water/Droplets/54.mp3
new file mode 100644
index 0000000..f14f576
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/54.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/540.mp3 b/site/app/partialemergence/sounds/Water/Droplets/540.mp3
new file mode 100644
index 0000000..f843cc0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/540.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/541.mp3 b/site/app/partialemergence/sounds/Water/Droplets/541.mp3
new file mode 100644
index 0000000..efc6396
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/541.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/542.mp3 b/site/app/partialemergence/sounds/Water/Droplets/542.mp3
new file mode 100644
index 0000000..0fd4dde
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/542.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/543.mp3 b/site/app/partialemergence/sounds/Water/Droplets/543.mp3
new file mode 100644
index 0000000..ae8b083
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/543.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/545.mp3 b/site/app/partialemergence/sounds/Water/Droplets/545.mp3
new file mode 100644
index 0000000..0411199
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/545.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/546.mp3 b/site/app/partialemergence/sounds/Water/Droplets/546.mp3
new file mode 100644
index 0000000..36e4b40
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/546.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/547.mp3 b/site/app/partialemergence/sounds/Water/Droplets/547.mp3
new file mode 100644
index 0000000..8d8ab05
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/547.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/548.mp3 b/site/app/partialemergence/sounds/Water/Droplets/548.mp3
new file mode 100644
index 0000000..4272e7d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/548.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/549.mp3 b/site/app/partialemergence/sounds/Water/Droplets/549.mp3
new file mode 100644
index 0000000..2c92e68
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/549.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/55.mp3 b/site/app/partialemergence/sounds/Water/Droplets/55.mp3
new file mode 100644
index 0000000..02dd1d8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/55.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/550.mp3 b/site/app/partialemergence/sounds/Water/Droplets/550.mp3
new file mode 100644
index 0000000..e0fb675
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/550.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/551.mp3 b/site/app/partialemergence/sounds/Water/Droplets/551.mp3
new file mode 100644
index 0000000..cd07f4e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/551.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/552.mp3 b/site/app/partialemergence/sounds/Water/Droplets/552.mp3
new file mode 100644
index 0000000..5c029b6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/552.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/553.mp3 b/site/app/partialemergence/sounds/Water/Droplets/553.mp3
new file mode 100644
index 0000000..8c0f1ee
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/553.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/554.mp3 b/site/app/partialemergence/sounds/Water/Droplets/554.mp3
new file mode 100644
index 0000000..d5defa5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/554.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/555.mp3 b/site/app/partialemergence/sounds/Water/Droplets/555.mp3
new file mode 100644
index 0000000..f3feb21
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/555.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/556.mp3 b/site/app/partialemergence/sounds/Water/Droplets/556.mp3
new file mode 100644
index 0000000..aa79e32
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/556.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/557.mp3 b/site/app/partialemergence/sounds/Water/Droplets/557.mp3
new file mode 100644
index 0000000..f6f572a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/557.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/558.mp3 b/site/app/partialemergence/sounds/Water/Droplets/558.mp3
new file mode 100644
index 0000000..ec461fd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/558.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/559.mp3 b/site/app/partialemergence/sounds/Water/Droplets/559.mp3
new file mode 100644
index 0000000..fef97fc
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/559.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/56.mp3 b/site/app/partialemergence/sounds/Water/Droplets/56.mp3
new file mode 100644
index 0000000..66cd072
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/56.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/560.mp3 b/site/app/partialemergence/sounds/Water/Droplets/560.mp3
new file mode 100644
index 0000000..da17a9b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/560.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/561.mp3 b/site/app/partialemergence/sounds/Water/Droplets/561.mp3
new file mode 100644
index 0000000..e978547
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/561.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/562.mp3 b/site/app/partialemergence/sounds/Water/Droplets/562.mp3
new file mode 100644
index 0000000..3d3f0ae
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/562.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/563.mp3 b/site/app/partialemergence/sounds/Water/Droplets/563.mp3
new file mode 100644
index 0000000..66eaea8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/563.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/564.mp3 b/site/app/partialemergence/sounds/Water/Droplets/564.mp3
new file mode 100644
index 0000000..6dc04cf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/564.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/565.mp3 b/site/app/partialemergence/sounds/Water/Droplets/565.mp3
new file mode 100644
index 0000000..d2f3474
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/565.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/566.mp3 b/site/app/partialemergence/sounds/Water/Droplets/566.mp3
new file mode 100644
index 0000000..0d6f6e1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/566.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/567.mp3 b/site/app/partialemergence/sounds/Water/Droplets/567.mp3
new file mode 100644
index 0000000..0ef0a03
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/567.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/568.mp3 b/site/app/partialemergence/sounds/Water/Droplets/568.mp3
new file mode 100644
index 0000000..c94b782
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/568.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/569.mp3 b/site/app/partialemergence/sounds/Water/Droplets/569.mp3
new file mode 100644
index 0000000..6244931
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/569.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/57.mp3 b/site/app/partialemergence/sounds/Water/Droplets/57.mp3
new file mode 100644
index 0000000..c558150
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/57.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/570.mp3 b/site/app/partialemergence/sounds/Water/Droplets/570.mp3
new file mode 100644
index 0000000..bde716a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/570.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/571.mp3 b/site/app/partialemergence/sounds/Water/Droplets/571.mp3
new file mode 100644
index 0000000..fe91950
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/571.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/572.mp3 b/site/app/partialemergence/sounds/Water/Droplets/572.mp3
new file mode 100644
index 0000000..609c2d9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/572.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/573.mp3 b/site/app/partialemergence/sounds/Water/Droplets/573.mp3
new file mode 100644
index 0000000..acc7acd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/573.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/574.mp3 b/site/app/partialemergence/sounds/Water/Droplets/574.mp3
new file mode 100644
index 0000000..14ee8f7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/574.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/575.mp3 b/site/app/partialemergence/sounds/Water/Droplets/575.mp3
new file mode 100644
index 0000000..cd6f3f1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/575.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/576.mp3 b/site/app/partialemergence/sounds/Water/Droplets/576.mp3
new file mode 100644
index 0000000..71d54d8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/576.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/577.mp3 b/site/app/partialemergence/sounds/Water/Droplets/577.mp3
new file mode 100644
index 0000000..b57b99c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/577.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/578.mp3 b/site/app/partialemergence/sounds/Water/Droplets/578.mp3
new file mode 100644
index 0000000..dba3ab3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/578.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/579.mp3 b/site/app/partialemergence/sounds/Water/Droplets/579.mp3
new file mode 100644
index 0000000..8efa11c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/579.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/58.mp3 b/site/app/partialemergence/sounds/Water/Droplets/58.mp3
new file mode 100644
index 0000000..7143f0f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/58.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/59.mp3 b/site/app/partialemergence/sounds/Water/Droplets/59.mp3
new file mode 100644
index 0000000..53f6350
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/59.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/6.mp3 b/site/app/partialemergence/sounds/Water/Droplets/6.mp3
new file mode 100644
index 0000000..2281a04
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/6.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/60.mp3 b/site/app/partialemergence/sounds/Water/Droplets/60.mp3
new file mode 100644
index 0000000..ddc6117
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/60.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/61.mp3 b/site/app/partialemergence/sounds/Water/Droplets/61.mp3
new file mode 100644
index 0000000..a017a8f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/61.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/62.mp3 b/site/app/partialemergence/sounds/Water/Droplets/62.mp3
new file mode 100644
index 0000000..2ba578a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/62.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/63.mp3 b/site/app/partialemergence/sounds/Water/Droplets/63.mp3
new file mode 100644
index 0000000..348d906
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/63.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/64.mp3 b/site/app/partialemergence/sounds/Water/Droplets/64.mp3
new file mode 100644
index 0000000..3a55ef0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/64.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/65.mp3 b/site/app/partialemergence/sounds/Water/Droplets/65.mp3
new file mode 100644
index 0000000..88f9410
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/65.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/66.mp3 b/site/app/partialemergence/sounds/Water/Droplets/66.mp3
new file mode 100644
index 0000000..aee32e2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/66.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/67.mp3 b/site/app/partialemergence/sounds/Water/Droplets/67.mp3
new file mode 100644
index 0000000..b007b33
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/67.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/68.mp3 b/site/app/partialemergence/sounds/Water/Droplets/68.mp3
new file mode 100644
index 0000000..b07c4f2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/68.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/69.mp3 b/site/app/partialemergence/sounds/Water/Droplets/69.mp3
new file mode 100644
index 0000000..746c8dd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/69.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/7.mp3 b/site/app/partialemergence/sounds/Water/Droplets/7.mp3
new file mode 100644
index 0000000..c7bbc7e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/7.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/70.mp3 b/site/app/partialemergence/sounds/Water/Droplets/70.mp3
new file mode 100644
index 0000000..030af2d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/70.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/71.mp3 b/site/app/partialemergence/sounds/Water/Droplets/71.mp3
new file mode 100644
index 0000000..3962ac5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/71.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/72.mp3 b/site/app/partialemergence/sounds/Water/Droplets/72.mp3
new file mode 100644
index 0000000..32de894
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/72.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/73.mp3 b/site/app/partialemergence/sounds/Water/Droplets/73.mp3
new file mode 100644
index 0000000..5eba927
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/73.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/74.mp3 b/site/app/partialemergence/sounds/Water/Droplets/74.mp3
new file mode 100644
index 0000000..a7b4c5b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/74.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/75.mp3 b/site/app/partialemergence/sounds/Water/Droplets/75.mp3
new file mode 100644
index 0000000..66e872f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/75.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/76.mp3 b/site/app/partialemergence/sounds/Water/Droplets/76.mp3
new file mode 100644
index 0000000..03a23a0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/76.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/77.mp3 b/site/app/partialemergence/sounds/Water/Droplets/77.mp3
new file mode 100644
index 0000000..9332f16
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/77.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/78.mp3 b/site/app/partialemergence/sounds/Water/Droplets/78.mp3
new file mode 100644
index 0000000..2929daf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/78.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/79.mp3 b/site/app/partialemergence/sounds/Water/Droplets/79.mp3
new file mode 100644
index 0000000..037a475
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/79.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/8.mp3 b/site/app/partialemergence/sounds/Water/Droplets/8.mp3
new file mode 100644
index 0000000..82a9256
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/8.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/80.mp3 b/site/app/partialemergence/sounds/Water/Droplets/80.mp3
new file mode 100644
index 0000000..cde5d06
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/80.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/81.mp3 b/site/app/partialemergence/sounds/Water/Droplets/81.mp3
new file mode 100644
index 0000000..cc18b66
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/81.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/82.mp3 b/site/app/partialemergence/sounds/Water/Droplets/82.mp3
new file mode 100644
index 0000000..db4bf32
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/82.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/83.mp3 b/site/app/partialemergence/sounds/Water/Droplets/83.mp3
new file mode 100644
index 0000000..822ba20
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/83.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/84.mp3 b/site/app/partialemergence/sounds/Water/Droplets/84.mp3
new file mode 100644
index 0000000..4703da7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/84.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/85.mp3 b/site/app/partialemergence/sounds/Water/Droplets/85.mp3
new file mode 100644
index 0000000..13be1d5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/85.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/86.mp3 b/site/app/partialemergence/sounds/Water/Droplets/86.mp3
new file mode 100644
index 0000000..ac0541b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/86.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/87.mp3 b/site/app/partialemergence/sounds/Water/Droplets/87.mp3
new file mode 100644
index 0000000..af889fb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/87.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/88.mp3 b/site/app/partialemergence/sounds/Water/Droplets/88.mp3
new file mode 100644
index 0000000..533b36d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/88.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/89.mp3 b/site/app/partialemergence/sounds/Water/Droplets/89.mp3
new file mode 100644
index 0000000..5aaff8b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/89.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/9.mp3 b/site/app/partialemergence/sounds/Water/Droplets/9.mp3
new file mode 100644
index 0000000..6ac5333
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/9.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/90.mp3 b/site/app/partialemergence/sounds/Water/Droplets/90.mp3
new file mode 100644
index 0000000..3280d1f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/90.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/91.mp3 b/site/app/partialemergence/sounds/Water/Droplets/91.mp3
new file mode 100644
index 0000000..0a0b06f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/91.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/92.mp3 b/site/app/partialemergence/sounds/Water/Droplets/92.mp3
new file mode 100644
index 0000000..c5ea873
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/92.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/93.mp3 b/site/app/partialemergence/sounds/Water/Droplets/93.mp3
new file mode 100644
index 0000000..4370ac3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/93.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/94.mp3 b/site/app/partialemergence/sounds/Water/Droplets/94.mp3
new file mode 100644
index 0000000..f26ddc0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/94.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/95.mp3 b/site/app/partialemergence/sounds/Water/Droplets/95.mp3
new file mode 100644
index 0000000..319c29f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/95.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/96.mp3 b/site/app/partialemergence/sounds/Water/Droplets/96.mp3
new file mode 100644
index 0000000..ceb1bb2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/96.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/97.mp3 b/site/app/partialemergence/sounds/Water/Droplets/97.mp3
new file mode 100644
index 0000000..1fcccbd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/97.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/98.mp3 b/site/app/partialemergence/sounds/Water/Droplets/98.mp3
new file mode 100644
index 0000000..8220ed8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/98.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Droplets/99.mp3 b/site/app/partialemergence/sounds/Water/Droplets/99.mp3
new file mode 100644
index 0000000..d5b57cc
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Droplets/99.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/1.mp3 b/site/app/partialemergence/sounds/Water/Paddling/1.mp3
new file mode 100644
index 0000000..28d04c7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/1.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/10.mp3 b/site/app/partialemergence/sounds/Water/Paddling/10.mp3
new file mode 100644
index 0000000..55adb7a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/10.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/100.mp3 b/site/app/partialemergence/sounds/Water/Paddling/100.mp3
new file mode 100644
index 0000000..416ccdd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/100.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/11.mp3 b/site/app/partialemergence/sounds/Water/Paddling/11.mp3
new file mode 100644
index 0000000..d72454b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/11.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/12.mp3 b/site/app/partialemergence/sounds/Water/Paddling/12.mp3
new file mode 100644
index 0000000..5e4d459
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/12.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/13.mp3 b/site/app/partialemergence/sounds/Water/Paddling/13.mp3
new file mode 100644
index 0000000..3f27d52
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/13.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/14.mp3 b/site/app/partialemergence/sounds/Water/Paddling/14.mp3
new file mode 100644
index 0000000..a3cc7f1
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/14.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/15.mp3 b/site/app/partialemergence/sounds/Water/Paddling/15.mp3
new file mode 100644
index 0000000..180ca6c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/15.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/16.mp3 b/site/app/partialemergence/sounds/Water/Paddling/16.mp3
new file mode 100644
index 0000000..6e4b9da
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/16.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/17.mp3 b/site/app/partialemergence/sounds/Water/Paddling/17.mp3
new file mode 100644
index 0000000..5039fc9
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/17.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/18.mp3 b/site/app/partialemergence/sounds/Water/Paddling/18.mp3
new file mode 100644
index 0000000..d6e9268
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/18.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/19.mp3 b/site/app/partialemergence/sounds/Water/Paddling/19.mp3
new file mode 100644
index 0000000..1045713
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/19.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/2.mp3 b/site/app/partialemergence/sounds/Water/Paddling/2.mp3
new file mode 100644
index 0000000..36ce4df
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/2.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/20.mp3 b/site/app/partialemergence/sounds/Water/Paddling/20.mp3
new file mode 100644
index 0000000..c3d820f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/20.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/21.mp3 b/site/app/partialemergence/sounds/Water/Paddling/21.mp3
new file mode 100644
index 0000000..b826aae
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/21.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/22.mp3 b/site/app/partialemergence/sounds/Water/Paddling/22.mp3
new file mode 100644
index 0000000..e520f73
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/22.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/23.mp3 b/site/app/partialemergence/sounds/Water/Paddling/23.mp3
new file mode 100644
index 0000000..5b3d117
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/23.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/24.mp3 b/site/app/partialemergence/sounds/Water/Paddling/24.mp3
new file mode 100644
index 0000000..bbdf293
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/24.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/25.mp3 b/site/app/partialemergence/sounds/Water/Paddling/25.mp3
new file mode 100644
index 0000000..56085c7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/25.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/26.mp3 b/site/app/partialemergence/sounds/Water/Paddling/26.mp3
new file mode 100644
index 0000000..3772cf3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/26.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/27.mp3 b/site/app/partialemergence/sounds/Water/Paddling/27.mp3
new file mode 100644
index 0000000..ccf85f4
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/27.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/28.mp3 b/site/app/partialemergence/sounds/Water/Paddling/28.mp3
new file mode 100644
index 0000000..8400a0e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/28.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/29.mp3 b/site/app/partialemergence/sounds/Water/Paddling/29.mp3
new file mode 100644
index 0000000..9d723b8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/29.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/3.mp3 b/site/app/partialemergence/sounds/Water/Paddling/3.mp3
new file mode 100644
index 0000000..53b974b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/3.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/30.mp3 b/site/app/partialemergence/sounds/Water/Paddling/30.mp3
new file mode 100644
index 0000000..8550f5f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/30.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/31.mp3 b/site/app/partialemergence/sounds/Water/Paddling/31.mp3
new file mode 100644
index 0000000..24997a0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/31.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/32.mp3 b/site/app/partialemergence/sounds/Water/Paddling/32.mp3
new file mode 100644
index 0000000..c2e32f2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/32.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/33.mp3 b/site/app/partialemergence/sounds/Water/Paddling/33.mp3
new file mode 100644
index 0000000..aa12122
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/33.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/34.mp3 b/site/app/partialemergence/sounds/Water/Paddling/34.mp3
new file mode 100644
index 0000000..28a7690
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/34.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/35.mp3 b/site/app/partialemergence/sounds/Water/Paddling/35.mp3
new file mode 100644
index 0000000..080a529
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/35.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/36.mp3 b/site/app/partialemergence/sounds/Water/Paddling/36.mp3
new file mode 100644
index 0000000..26ec3ec
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/36.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/37.mp3 b/site/app/partialemergence/sounds/Water/Paddling/37.mp3
new file mode 100644
index 0000000..1389076
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/37.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/38.mp3 b/site/app/partialemergence/sounds/Water/Paddling/38.mp3
new file mode 100644
index 0000000..b949db3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/38.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/39.mp3 b/site/app/partialemergence/sounds/Water/Paddling/39.mp3
new file mode 100644
index 0000000..4ddf427
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/39.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/4.mp3 b/site/app/partialemergence/sounds/Water/Paddling/4.mp3
new file mode 100644
index 0000000..e21a6cb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/4.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/40.mp3 b/site/app/partialemergence/sounds/Water/Paddling/40.mp3
new file mode 100644
index 0000000..024f6b2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/40.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/41.mp3 b/site/app/partialemergence/sounds/Water/Paddling/41.mp3
new file mode 100644
index 0000000..51bf28c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/41.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/42.mp3 b/site/app/partialemergence/sounds/Water/Paddling/42.mp3
new file mode 100644
index 0000000..c3e21e7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/42.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/43.mp3 b/site/app/partialemergence/sounds/Water/Paddling/43.mp3
new file mode 100644
index 0000000..4054854
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/43.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/44.mp3 b/site/app/partialemergence/sounds/Water/Paddling/44.mp3
new file mode 100644
index 0000000..cf18049
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/44.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/45.mp3 b/site/app/partialemergence/sounds/Water/Paddling/45.mp3
new file mode 100644
index 0000000..1821806
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/45.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/46.mp3 b/site/app/partialemergence/sounds/Water/Paddling/46.mp3
new file mode 100644
index 0000000..26d7e1a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/46.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/47.mp3 b/site/app/partialemergence/sounds/Water/Paddling/47.mp3
new file mode 100644
index 0000000..c6bcf00
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/47.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/48.mp3 b/site/app/partialemergence/sounds/Water/Paddling/48.mp3
new file mode 100644
index 0000000..04a4238
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/48.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/49.mp3 b/site/app/partialemergence/sounds/Water/Paddling/49.mp3
new file mode 100644
index 0000000..64a6576
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/49.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/5.mp3 b/site/app/partialemergence/sounds/Water/Paddling/5.mp3
new file mode 100644
index 0000000..33b6ff8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/5.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/50.mp3 b/site/app/partialemergence/sounds/Water/Paddling/50.mp3
new file mode 100644
index 0000000..ec55316
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/50.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/51.mp3 b/site/app/partialemergence/sounds/Water/Paddling/51.mp3
new file mode 100644
index 0000000..bba47e3
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/51.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/52.mp3 b/site/app/partialemergence/sounds/Water/Paddling/52.mp3
new file mode 100644
index 0000000..55cdf38
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/52.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/53.mp3 b/site/app/partialemergence/sounds/Water/Paddling/53.mp3
new file mode 100644
index 0000000..f760889
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/53.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/54.mp3 b/site/app/partialemergence/sounds/Water/Paddling/54.mp3
new file mode 100644
index 0000000..0d11b66
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/54.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/55.mp3 b/site/app/partialemergence/sounds/Water/Paddling/55.mp3
new file mode 100644
index 0000000..764bd66
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/55.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/56.mp3 b/site/app/partialemergence/sounds/Water/Paddling/56.mp3
new file mode 100644
index 0000000..74eb527
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/56.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/57.mp3 b/site/app/partialemergence/sounds/Water/Paddling/57.mp3
new file mode 100644
index 0000000..01a8725
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/57.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/58.mp3 b/site/app/partialemergence/sounds/Water/Paddling/58.mp3
new file mode 100644
index 0000000..317de16
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/58.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/59.mp3 b/site/app/partialemergence/sounds/Water/Paddling/59.mp3
new file mode 100644
index 0000000..7fecdbb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/59.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/6.mp3 b/site/app/partialemergence/sounds/Water/Paddling/6.mp3
new file mode 100644
index 0000000..253db48
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/6.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/60.mp3 b/site/app/partialemergence/sounds/Water/Paddling/60.mp3
new file mode 100644
index 0000000..f7304a8
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/60.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/61.mp3 b/site/app/partialemergence/sounds/Water/Paddling/61.mp3
new file mode 100644
index 0000000..b0b3326
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/61.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/62.mp3 b/site/app/partialemergence/sounds/Water/Paddling/62.mp3
new file mode 100644
index 0000000..f74c2fe
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/62.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/63.mp3 b/site/app/partialemergence/sounds/Water/Paddling/63.mp3
new file mode 100644
index 0000000..e1177aa
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/63.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/64.mp3 b/site/app/partialemergence/sounds/Water/Paddling/64.mp3
new file mode 100644
index 0000000..87bd72b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/64.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/65.mp3 b/site/app/partialemergence/sounds/Water/Paddling/65.mp3
new file mode 100644
index 0000000..31af83f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/65.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/66.mp3 b/site/app/partialemergence/sounds/Water/Paddling/66.mp3
new file mode 100644
index 0000000..d8af6cf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/66.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/67.mp3 b/site/app/partialemergence/sounds/Water/Paddling/67.mp3
new file mode 100644
index 0000000..9787ff5
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/67.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/68.mp3 b/site/app/partialemergence/sounds/Water/Paddling/68.mp3
new file mode 100644
index 0000000..05c61f7
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/68.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/69.mp3 b/site/app/partialemergence/sounds/Water/Paddling/69.mp3
new file mode 100644
index 0000000..894fdcd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/69.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/7.mp3 b/site/app/partialemergence/sounds/Water/Paddling/7.mp3
new file mode 100644
index 0000000..ddc7fcf
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/7.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/70.mp3 b/site/app/partialemergence/sounds/Water/Paddling/70.mp3
new file mode 100644
index 0000000..14e4928
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/70.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/71.mp3 b/site/app/partialemergence/sounds/Water/Paddling/71.mp3
new file mode 100644
index 0000000..5bfd0b6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/71.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/72.mp3 b/site/app/partialemergence/sounds/Water/Paddling/72.mp3
new file mode 100644
index 0000000..60b2c56
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/72.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/73.mp3 b/site/app/partialemergence/sounds/Water/Paddling/73.mp3
new file mode 100644
index 0000000..715e77a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/73.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/74.mp3 b/site/app/partialemergence/sounds/Water/Paddling/74.mp3
new file mode 100644
index 0000000..389d12f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/74.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/75.mp3 b/site/app/partialemergence/sounds/Water/Paddling/75.mp3
new file mode 100644
index 0000000..e82ae66
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/75.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/76.mp3 b/site/app/partialemergence/sounds/Water/Paddling/76.mp3
new file mode 100644
index 0000000..726ebf2
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/76.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/77.mp3 b/site/app/partialemergence/sounds/Water/Paddling/77.mp3
new file mode 100644
index 0000000..bbda6cd
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/77.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/78.mp3 b/site/app/partialemergence/sounds/Water/Paddling/78.mp3
new file mode 100644
index 0000000..b9363fb
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/78.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/79.mp3 b/site/app/partialemergence/sounds/Water/Paddling/79.mp3
new file mode 100644
index 0000000..549f054
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/79.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/8.mp3 b/site/app/partialemergence/sounds/Water/Paddling/8.mp3
new file mode 100644
index 0000000..7656b93
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/8.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/80.mp3 b/site/app/partialemergence/sounds/Water/Paddling/80.mp3
new file mode 100644
index 0000000..4ac99ca
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/80.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/81.mp3 b/site/app/partialemergence/sounds/Water/Paddling/81.mp3
new file mode 100644
index 0000000..4e7d90f
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/81.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/82.mp3 b/site/app/partialemergence/sounds/Water/Paddling/82.mp3
new file mode 100644
index 0000000..c272d99
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/82.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/83.mp3 b/site/app/partialemergence/sounds/Water/Paddling/83.mp3
new file mode 100644
index 0000000..c487263
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/83.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/84.mp3 b/site/app/partialemergence/sounds/Water/Paddling/84.mp3
new file mode 100644
index 0000000..736c012
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/84.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/85.mp3 b/site/app/partialemergence/sounds/Water/Paddling/85.mp3
new file mode 100644
index 0000000..fb8af59
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/85.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/86.mp3 b/site/app/partialemergence/sounds/Water/Paddling/86.mp3
new file mode 100644
index 0000000..bb3749c
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/86.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/87.mp3 b/site/app/partialemergence/sounds/Water/Paddling/87.mp3
new file mode 100644
index 0000000..94b1830
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/87.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/88.mp3 b/site/app/partialemergence/sounds/Water/Paddling/88.mp3
new file mode 100644
index 0000000..adfa03a
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/88.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/89.mp3 b/site/app/partialemergence/sounds/Water/Paddling/89.mp3
new file mode 100644
index 0000000..d38aec0
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/89.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/9.mp3 b/site/app/partialemergence/sounds/Water/Paddling/9.mp3
new file mode 100644
index 0000000..e0dfc4b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/9.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/90.mp3 b/site/app/partialemergence/sounds/Water/Paddling/90.mp3
new file mode 100644
index 0000000..ba243e6
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/90.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/91.mp3 b/site/app/partialemergence/sounds/Water/Paddling/91.mp3
new file mode 100644
index 0000000..7ed13da
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/91.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/92.mp3 b/site/app/partialemergence/sounds/Water/Paddling/92.mp3
new file mode 100644
index 0000000..ed4c84e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/92.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/93.mp3 b/site/app/partialemergence/sounds/Water/Paddling/93.mp3
new file mode 100644
index 0000000..f6f1e02
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/93.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/94.mp3 b/site/app/partialemergence/sounds/Water/Paddling/94.mp3
new file mode 100644
index 0000000..b6525de
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/94.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/95.mp3 b/site/app/partialemergence/sounds/Water/Paddling/95.mp3
new file mode 100644
index 0000000..9955f67
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/95.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/96.mp3 b/site/app/partialemergence/sounds/Water/Paddling/96.mp3
new file mode 100644
index 0000000..f6a5b5e
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/96.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/97.mp3 b/site/app/partialemergence/sounds/Water/Paddling/97.mp3
new file mode 100644
index 0000000..b2eb357
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/97.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/98.mp3 b/site/app/partialemergence/sounds/Water/Paddling/98.mp3
new file mode 100644
index 0000000..dcccd9b
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/98.mp3
Binary files differ
diff --git a/site/app/partialemergence/sounds/Water/Paddling/99.mp3 b/site/app/partialemergence/sounds/Water/Paddling/99.mp3
new file mode 100644
index 0000000..a7e400d
--- /dev/null
+++ b/site/app/partialemergence/sounds/Water/Paddling/99.mp3
Binary files differ
diff --git a/site/app/twigs/index.html b/site/app/twigs/index.html
new file mode 100644
index 0000000..6251fe8
--- /dev/null
+++ b/site/app/twigs/index.html
@@ -0,0 +1,54 @@
+<html>
+ <head>
+ <title>twigs</title>
+ <link rel="stylesheet" href="../twirl/theme.css">
+ <link rel="stylesheet" href="../twirl/twirl.css">
+ <link rel="stylesheet" href="twigs.css">
+ <script type="text/javascript" src="https://apps.csound.1bpm.net/code/jquery.js"></script>
+ <script type="text/javascript" src="../base/base.js"></script>
+ <script type="text/javascript" src="../twirl/twirl.js"></script>
+ <script type="text/javascript" src="../twirl/appdata.js"></script>
+ <script type="text/javascript" src="../twirl/transform.js"></script>
+ <script type="text/javascript" src="twigs_ui.js"></script>
+ <script type="text/javascript" src="twigs.js"></script>
+ <script type="text/javascript">
+ $(twigs_startisolated);
+ </script>
+ </head>
+
+ <body>
+ <div id="twigs">
+ <div id="twigs_hidden_links">
+ <a id="twigs_contact" href="https://csound.1bpm.net/contact/?type=general&app=twigs" target="_blank">Contact</a>
+ <a id="twigs_reportbug" href="https://csound.1bpm.net/contact/?type=report_bug&app=twigs" target="_blank">Report bug</a>
+ <a id="twigs_documentation" href="documentation.html" target="_blank">Documentation</a>
+ </div>
+ <div id="twigs_menubar"></div>
+ <div id="twigs_main">
+ <div id="twigs_sidebar"></div>
+ <div id="twigs_options"></div>
+ <div id="twigs_editor">
+ <div id="twigs_editor_inner">
+ <div id="twigs_playhead"></div>
+ <div id="twigs_selection"></div>
+ </div>
+ <div id="twigs_editor_hscrollouter">
+ <div id="twigs_editor_hscrollinner"></div>
+ </div>
+ <div id="twigs_editor_vscrollouter">
+ <div id="twigs_editor_vscrollinner"></div>
+ </div>
+ <div id="twigs_editor_vzoom"></div>
+ <div id="twigs_editor_hzoom"></div>
+ </div>
+ </div>
+ </div>
+ <div id="twigs_start">
+ <div id="twigs_startinner">
+ <h1>twigs</h1>
+ <p>spectral transformer</p>
+ <div id="twigs_startbig">Press to begin</div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/site/app/twigs/twigs.csd b/site/app/twigs/twigs.csd
new file mode 100644
index 0000000..d86616d
--- /dev/null
+++ b/site/app/twigs/twigs.csd
@@ -0,0 +1,18 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "/twigs/twigs.udo"
+
+</CsInstruments>
+<CsScore>
+f0 z
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/twigs/twigs.css b/site/app/twigs/twigs.css
new file mode 100644
index 0000000..9e73df3
--- /dev/null
+++ b/site/app/twigs/twigs.css
@@ -0,0 +1,167 @@
+body {
+ font-family: var(--fontFace);
+ color: var(--fgColor1);
+ user-select: none;
+ cursor: arrow;
+}
+
+#twigs_playhead {
+ position: absolute;
+ top: 0px;
+ bottom: 0px;
+ left: 0px;
+ width: 1px;
+ background-color: var(--waveformPlayheadColor);
+ border: 1px solid var(--waveformPlayheadColor);
+ pointer-events: none;
+ z-index: 23;
+ display: none;
+}
+
+#twigs_main {
+ position: absolute;
+ top: 20px;
+ bottom: 0px;
+ left: 0px;
+ right: 0px;
+}
+
+#twigs_options {
+ position: absolute;
+ bottom: 0px;
+ left: 60px;
+ right: 0px;
+ height: 20%;
+ background-color: var(--bgColor1);
+}
+
+#twigs_editor {
+ position: absolute;
+ top: 0px;
+ bottom: 20%;
+ left: 60px;
+ right: 0px;
+}
+
+#twigs_editor_inner {
+ position: absolute;
+ top: 0px;
+ bottom: 20px;
+ left: 0px;
+ right: 20px;
+}
+
+#twigs_selection {
+ position: absolute;
+ left: 0px;
+ right: 0px;
+ height: 0px;
+ width: 0px;
+ display: none;
+ background-color: var(--waveformSelectColor);
+ opacity: var(--waveformSelectOpacity);
+ z-index: 15;
+}
+
+#twigs_editor_vscrollouter {
+ position: absolute;
+ top: 0px;
+ bottom: 80px;
+ width: 20px;
+ right: 0px;
+ background-color: var(--waveformTimeBarBgColor);
+}
+
+#twigs_editor_vscrollinner {
+ position: absolute;
+ left: 4px;
+ right: 4px;
+ top: 0px;
+ bottom: 0px;
+ background-color: var(--waveformTimeBarFgColor);
+}
+
+#twigs_editor_vzoom {
+ position: absolute;
+ right: 0px;
+ bottom: 20px;
+ height: 60px;
+ width: 20px;
+ background-color: var(--bgColor3);
+}
+
+#twigs_editor_hzoom {
+ position: absolute;
+ background-color: var(--bgColor3);
+ right: 0px;
+ bottom: 0px;
+ width: 80px;
+ height: 20px;
+}
+
+#twigs_editor_hscrollouter {
+ position: absolute;
+ height: 20px;
+ bottom: 0px;
+ left: 0px;
+ right: 80px;
+ background-color: var(--waveformTimeBarBgColor);
+}
+
+#twigs_editor_hscrollinner {
+ position: absolute;
+ top: 4px;
+ bottom: 4px;
+ left: 0px;
+ right: 0px;
+ background-color: var(--waveformTimeBarFgColor);
+}
+
+#twigs_sidebar {
+ position: absolute;
+ top: 0px;
+ bottom: 0px;
+ left: 0px;
+ width: 60px;
+ background-color: var(--bgColor1);
+}
+
+#twigs_start {
+ z-index: 300;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: var(--bgColor2);
+ cursor: pointer;
+}
+
+#twigs_startinner {
+ z-index: 202;
+ text-align: centre;
+ margin: 0px;
+ position: absolute;
+ top: 20%;
+ left: 20%;
+ width: 60%;
+ height: 40%;
+}
+
+#twigs_startbig {
+ font-size: 48pt;
+}
+
+#twigs_menubar {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ right: 0px;
+ height: 20px;
+ z-index: 40;
+}
+
+#twigs_hidden_links {
+ display: none;
+} \ No newline at end of file
diff --git a/site/app/twigs/twigs.js b/site/app/twigs/twigs.js
new file mode 100644
index 0000000..7567dd0
--- /dev/null
+++ b/site/app/twigs/twigs.js
@@ -0,0 +1,1165 @@
+var Twigs = function() {
+ var twigs = this;
+ twigs.version = 1;
+ twirl.init();
+ twigs.SELECTIONMODE = {
+ singleBin: 0,
+ dragBins: 1,
+ dragArea: 2,
+ lasso: 3,
+ binAppend: 4,
+ draw: 5,
+ move: -1,
+ transpose: -2
+ };
+ twigs.selectionMode = twigs.SELECTIONMODE.singleBin;
+ twigs.undoLevel = 0;
+ var elCanvas;
+ var elHitCanvas;
+ var elSelectCanvas;
+ var elGridCanvas;
+ var elSelection = $("#twigs_selection");
+ var elContainer;
+ var width;
+ var height;
+ var playing;
+ var loaded = {
+ name: null,
+ channels: null,
+ bins: null,
+ tables: null,
+ length: null,
+ binSelectionTable: null,
+ binTimeSelectionTable: null
+ };
+ var maxfreq = 22050;
+ var amplitudeScaling = 40;
+
+ var ctx;
+ var ctxHit;
+ var ctxSelect;
+ var ctxGrid;
+
+ var xsteps;
+ var xstep;
+ var tabstep;
+ var region = {frequency: [0, 1], time: [0, 1]};
+ var selection = {bins: {}};
+ var binColourHash = {};
+ var colIDs;
+ var onSave;
+ twigs.visible = false;
+ twigs.twine = null;
+
+ twigs.storage = localStorage.getItem("twigs");
+ if (twigs.storage) {
+ twigs.storage = JSON.parse(twigs.storage);
+ } else {
+ twigs.storage = {
+ graphType: 0,
+ maxundo: 2,
+ drawFrequencyGrid: 1,
+ drawTimeGrid: 1
+ };
+ }
+
+ this.saveStorage = function() {
+ localStorage.setItem("twigs", JSON.stringify(twigs.storage));
+ };
+
+ function absPosToDisplayPos(x) {
+ var pos = (x - region.time[0]) / (region.time[1] - region.time[0]);
+ return (pos >= 0 && pos <= 1) ? pos : null;
+ }
+
+ function displayPosToAbsPos(x) {
+ return ((region.time[1] - region.time[0]) * x) + region.time[0];
+ }
+
+ function pxToFreq(px, height) {
+ return ((px / height) * ((region.frequency[1] - region.frequency[0]) * maxfreq));
+ //return (((region.frequency[1] - region.frequency[0]) * maxfreq) / height) * px;
+ }
+
+ function pxToFrames(px, width) {
+ var frames = Math.round(loaded.length / loaded.bins);
+ console.log("move ", px, "wid", width);
+ return Math.round(((px / width) * (region.time[1] - region.time[0]) * frames));
+ //return Math.round((((region.time[1] - region.time[0]) * (loaded.length / loaded.bins)) / width) * px);
+ }
+
+ var playheadInterval;
+ function playPositionHandler(onComplete) {
+ function callback(ndata) {
+ if (ndata.status == 1) {
+ twigs.setPlaying(true);
+ if (playheadInterval) {
+ clearInterval(playheadInterval);
+ }
+ playheadInterval = setInterval(async function(){
+ var val = await app.getControlChannel("twgs_playposratio");
+ if (val < 0 || val > 1) {
+ clearInterval(playheadInterval);
+ }
+ movePlayhead(val);
+ }, 50);
+ } else { // stopped for some reason
+ if (ndata.status == -1) {
+ twirl.prompt.show("Not enough processing power to play in realtime");
+ }
+ twigs.setPlaying(false);
+ app.removeCallback(ndata.cbid);
+ movePlayhead(0);
+ if (playheadInterval) clearInterval(playheadInterval);
+ if (onComplete) onComplete(ndata);
+ }
+ }
+ return app.createCallback(callback, true);
+ }
+
+ function movePlayhead(xratio) {
+ setTimeout(function() {
+ var p = $("#twigs_playhead");
+ var displayPos = absPosToDisplayPos(xratio);
+ if (!displayPos || displayPos <= 0 || displayPos >= 1) {
+ return p.hide();
+ }
+ var width = elContainer.width();
+ var left = Math.min(width * displayPos, width -1);
+ p.show().css({left: left + "px"});
+ }, twirl.latencyCorrection);
+ }
+
+ this.hasSelection = function() {
+ return (Object.keys(selection.bins) != 0);
+ }
+
+ this.selectionOperation = {
+ move: async function(freqshift, timeshiftframes) {
+ console.log("ts", timeshiftframes, "fs", freqshift);
+ console.log("move duration", (timeshiftframes / Math.round(loaded.length / loaded.bins)) * loaded.duration);
+ twirl.loading.show("Applying");
+ await setBinSelectionTable();
+ var cbid1 = app.createCallback(function(ndata1){
+ var cbid2 = app.createCallback(function(ndata2){
+ clearSelection();
+ globalCallbackHandler(ndata2);
+ });
+ app.insertScore("twgs_movement", [0, 1, cbid2, timeshiftframes]);
+ });
+ app.insertScore("twgs_freqshift", [0, 1, cbid1, freqshift, 1]);
+ },
+ shift: async function(freqshift) {
+ twirl.loading.show("Applying");
+ await setBinSelectionTable();
+ var cbid = app.createCallback(function(ndata){
+ clearSelection();
+ globalCallbackHandler(ndata);
+ });
+ app.insertScore("twgs_freqshift", [0, 1, cbid, freqshift]);
+
+ /*for (let b of selection.bins) {
+ for (var i = b; i < loaded.length; i += loaded.bins) {
+ var val = await app.getCsound().tableGet(loaded.tables[1], index);
+ val += freqshift;
+ val = Math.max(Math.min(val, maxfreq), 0);
+ await app.getCsound().tableSet(loaded.tables[1], index, val)
+ }
+ }
+ clearSelection();
+ twigs.redraw();
+ */
+ },
+ amplify: async function(factor) {
+ twirl.loading.show("Applying");
+ await setBinSelectionTable();
+ var cbid = app.createCallback(function(ndata){
+ globalCallbackHandler(ndata);
+ });
+ app.insertScore("twgs_amplify", [0, 1, cbid, factor]);
+ }
+ };
+
+ async function setBinSelectionTable() {
+ var length = await app.getCsound().tableLength(loaded.binSelectionTable);
+ var selectionData = [];
+ var timeData = [];
+ var region = [1, 0];
+ for (var i = 0; i < length; i++) {
+ if (selection.bins[i]) {
+ selectionData[i] = 1;
+ timeData[i] = selection.bins[i][0];
+ timeData[i + length] = selection.bins[i][1];
+ if (selection.bins[i][0] < region[0]) region[0] = selection.bins[i][0];
+ if (selection.bins[i][1] > region[1]) region[1] = selection.bins[i][1];
+ } else {
+ selectionData[i] = 0;
+ timeData[i] = -1;
+ timeData[i + length] = -1;
+ }
+ }
+ await app.getCsound().tableCopyIn(loaded.binSelectionTable, selectionData);
+ await app.getCsound().tableCopyIn(loaded.binTimeSelectionTable, timeData);
+ return region;
+ }
+
+
+ this.setSelectionMode = function(mode) {
+ twigs.selectionMode = mode;
+ if (mode >= 0) {
+ selection.bins = {};
+ clearSelection();
+ }
+ elSelection.hide();
+ };
+
+ this.setTimeRegion = function(start, end, noRedraw) {
+ region.time[0] = start;
+ region.time[1] = end;
+ var outerWidth = elScrollOuterH.width();
+ elScrollInnerH.css({
+ left: (start * outerWidth) + "px",
+ right: ((1 - end) * outerWidth) + "px"
+ });
+ if (!noRedraw) twigs.redraw();
+ };
+
+ this.setFrequencyRegion = function(start, end, noRedraw) {
+ region.frequency[0] = start;
+ region.frequency[1] = end;
+ var outerHeight = elScrollOuterV.height();
+ elScrollInnerV.css({
+ bottom: (start * outerHeight) + "px",
+ top: ((1 - end) * outerHeight) + "px"
+ });
+ if (!noRedraw) twigs.redraw();
+ };
+
+ function setScrollPositionV(displayTop, displayBottom, setRegion) {
+ if (displayTop >= 0 && displayBottom >= 0) {
+ elScrollInnerV.css({top: displayTop, bottom: displayBottom});
+ var h = elScrollOuterV.height();
+ region.frequency[0] = displayTop / h;
+ region.frequency[1] = 1 - (displayBottom / h);
+ }
+ }
+
+ function handleScrollOuterV(e) {
+ var increment = 20;
+ var apos = event.pageX - elScrollOuterV.offset().left;
+ var top = parseInt(elScrollInnerV.css("bottom"));
+ var bottom = parseInt(elScrollInnerV.css("bottom"));
+ var tbHeight = parseInt(elScrollInnerV.css("height"));
+ if (apos < top) {
+ top -= increment;
+ bottom += increment;
+ } else if (apos > top + tbHeight) {
+ top += increment;
+ bottom -= increment;
+ } else {
+ return;
+ }
+ setScrollPositionV(top, bottom);
+ twigs.redraw();
+ }
+
+ function handleScrollInnerV(e) {
+ var pageY = e.pageY;
+ var offset = elScrollOuterV.offset();
+ var cHeight = elScrollOuterV.height();
+ var tHeight = elScrollInnerV.height();
+ var sTop = pageY - offset.top - parseInt(elScrollInnerV.css("top"));
+
+ function handleDrag(e) {
+ var top = ((e.pageY - pageY) + (pageY - offset.top));
+ top = top - sTop;
+ var end = top + tHeight;
+ var bottom = cHeight - end;
+ setScrollPositionV(top, cHeight - end);
+ twigs.redraw(20, true);
+
+ }
+ function handleMouseUp(e) {
+ $("body").off("mousemove", handleDrag).off("mouseup", handleMouseUp);
+ function ensureDraw() {
+ if (drawing) return setTimeout(ensureDraw, 20);
+ twigs.redraw();
+ }
+ ensureDraw();
+ }
+ $("body").on("mouseup", handleMouseUp).on("mousemove", handleDrag);
+ }
+
+ function setScrollPositionH(displayLeft, displayRight) {
+ if (displayLeft >= 0 && displayRight >= 0) {
+ elScrollInnerH.css({left: displayLeft, right: displayRight});
+ var w = elScrollOuterH.width();
+ region.time[0] = displayLeft / w;
+ region.time[1] = 1 - (displayRight / w);
+ }
+ }
+
+ function handleScrollOuterH(e) {
+ var increment = 20;
+ var apos = event.pageX - elScrollOuterH.offset().left;
+ var left = parseInt(elScrollInnerH.css("left"));
+ var right = parseInt(elScrollInnerH.css("right"));
+ var tbWidth = parseInt(elScrollInnerH.css("width"));
+ if (apos < left) {
+ left -= increment;
+ right += increment;
+ } else if (apos > left + tbWidth) {
+ left += increment;
+ right -= increment;
+ } else {
+ return;
+ }
+ setScrollPositionH(left, right);
+ twigs.redraw();
+ }
+
+ function handleScrollInnerH(e) {
+ var pageX = e.pageX;
+ var offset = elScrollOuterH.offset();
+ var cWidth = elScrollOuterH.width();
+ var tbWidth = elScrollInnerH.width();
+ var sLeft = pageX - offset.left - parseInt(elScrollInnerH.css("left"));
+
+ function handleDrag(e) {
+ var left = ((e.pageX - pageX) + (pageX - offset.left));
+ left = left - sLeft;
+ var end = left + tbWidth;
+ var right = cWidth - end;
+ setScrollPositionH(left, cWidth - end);
+ twigs.redraw(20, true);
+
+ }
+ function handleMouseUp(e) {
+ $("body").off("mousemove", handleDrag).off("mouseup", handleMouseUp);
+ function ensureDraw() {
+ if (drawing) return setTimeout(ensureDraw, 20);
+ twigs.redraw();
+ }
+ ensureDraw();
+ }
+ $("body").on("mouseup", handleMouseUp).on("mousemove", handleDrag);
+ }
+
+ var elScrollOuterH = $("#twigs_editor_hscrollouter").click(handleScrollOuterH);
+ var elScrollInnerH = $("#twigs_editor_hscrollinner").click(handleScrollInnerH);
+ var elScrollOuterV = $("#twigs_editor_vscrollouter").click(handleScrollOuterV);
+ var elScrollInnerV = $("#twigs_editor_vscrollinner").click(handleScrollInnerV);
+
+
+
+ this.vzoomIn = function() {
+ twigs.setFrequencyRegion(region.frequency[0] * 1.1, region.frequency[1] * 0.9);
+ };
+
+ this.vzoomOut = function() {
+ twigs.setFrequencyRegion(region.frequency[0] * 0.9, region.frequency[1] * 1.1);
+ };
+
+ this.hzoomIn = function() {
+ twigs.setTimeRegion(region.time[0] * 1.1, region.time[1] * 0.9);
+ };
+
+ this.hzoomOut = function() {
+ twigs.setTimeRegion(region.time[0] * 0.9, region.time[1] * 1.1);
+ };
+
+ async function withBinPoints(bin, func) {
+ for (var x = 0, i = parseInt(bin); i < loaded.length; i += tabstep, x += xstep) {
+ await func(i, x)
+ }
+ }
+
+ function clearSelection() {
+ selection.bins = {};
+ ctxSelect.clearRect(0, 0, width, height);
+ }
+
+ async function drawSelection() {
+ var startFreq = region.frequency[0] * maxfreq;
+ var endFreq = region.frequency[1] * maxfreq;
+ var freqRange = endFreq - startFreq;
+ var height = elContainer.height();
+ var width = elContainer.width();
+ var freqTable = await app.getCsound().getTable(loaded.tables[1]);
+ ctxSelect.clearRect(0, 0, width, height);
+ ctxSelect.strokeStyle = "red";
+ ctxSelect.lineWidth = 2;
+
+ async function drawBin(bin, times) {
+ if (twigs.storage.graphType == 0) ctxSelect.beginPath();
+
+ var lastfreq = null;
+ await withBinPoints(bin, function(i, x){
+ var freq = freqTable[i];
+ var xRatio = x / width;
+ if (xRatio < absPosToDisplayPos(times[0]) || xRatio > absPosToDisplayPos(times[1])) return;
+
+ if (twigs.storage.graphType == 1) {
+ var yPos = ((freqRange - freq) / freqRange) * height;
+ ctxSelect.beginPath();
+ ctxSelect.moveTo(x, yPos);
+ ctxSelect.lineTo(x + xstep, yPos);
+ ctxSelect.stroke();
+ ctxSelect.closePath();
+ } else {
+ if (lastfreq) {
+ var yPos = [
+ ((freqRange - lastfreq) / freqRange) * height,
+ ((freqRange - freq) / freqRange) * height
+ ];
+ ctxSelect.moveTo(x - xstep, yPos[0]);
+ ctxSelect.lineTo(x, yPos[1]);
+ }
+ lastfreq = freq;
+ }
+ });
+ if (twigs.storage.graphType == 0) {
+ ctxSelect.stroke();
+ ctxSelect.closePath();
+ }
+ }
+ for (let b in selection.bins) {
+ await drawBin(b, selection.bins[b]);
+ }
+
+ }
+
+
+ function setup() {
+ elContainer = $("#twigs_editor_inner");
+ width = elContainer.width(); // deprecate it
+ height = elContainer.height();
+
+ var dragStart = [];
+ var dragLast = [];
+ var offset;
+
+ elHitCanvas = $("<canvas />").css({
+ position: "absolute", width: "100%", height: "100%"
+ }).attr("width", width)
+ .attr("height", height);
+ elCanvas = $("<canvas />").css({position: "absolute", width: "100%", height: "100%", top: "0px", left: "0px", "z-index": 12})
+ .attr("width", width)
+ .attr("height", height)
+ .appendTo(elContainer);
+
+ function mouseMove(e){
+ if (dragStart.length == 0) {
+ return;
+ }
+ if (twigs.selectionMode == twigs.SELECTIONMODE.singleBin || twigs.selectionMode == twigs.SELECTIONMODE.binAppend) {
+ return;
+ }
+
+ var x = e.clientX - offset.left;
+ var y = e.clientY - offset.top;
+ if (twigs.selectionMode == twigs.SELECTIONMODE.lasso) {
+ //ctxSelect.moveTo(dragLast[0], dragLast[1]);
+ ctxSelect.lineTo(x, y);
+ dragLast[0] = x;
+ dragLast[1] = y;
+ ctxSelect.stroke();
+ return;
+ }
+
+ if (twigs.selectionMode == twigs.SELECTIONMODE.move) {
+ var xMovement = x - dragLast[0];
+ var yMovement = y - dragLast[1];
+ ctxSelect.globalCompositeOperation = "copy";
+ ctxSelect.drawImage(ctxSelect.canvas, xMovement, yMovement);
+ ctxSelect.globalCompositeOperation = "source-over";
+
+ dragLast[0] = x;
+ dragLast[1] = y;
+ return;
+ }
+
+ if (twigs.selectionMode == twigs.SELECTIONMODE.transpose) {
+ var xMovement = x - dragLast[0];
+ }
+
+ var x, cx, width;
+ if (twigs.selectionMode == twigs.SELECTIONMODE.dragBins) {
+ x = 0;
+ width = elContainer.width();
+ } else {
+ x = dragStart[0];
+ cx = e.clientX - offset.left
+ if (x > cx) {
+ width = x - cx;
+ x = cx;
+ } else {
+ width = cx - x;
+ }
+ }
+ var y = dragStart[1];
+ var cy = e.clientY - offset.top;
+ var height = cy - y;
+ elSelection.css({
+ left: x + "px", top: y + "px",
+ width: width + "px", height: height + "px"
+ }).show();
+ }
+
+ function mouseUp(e){
+ var x = e.clientX - offset.left;
+ var y = e.clientY - offset.top;
+ var xMovement = x - dragStart[0];
+ var yMovement = y - dragStart[1];
+ if (twigs.selectionMode < 0) {
+ twigs.selectionOperation.move(
+ pxToFreq(-yMovement, elContainer.height()),
+ pxToFrames(xMovement, elContainer.width())
+ );
+ //twigs.selectionOperation.shift(pxToFreq(-yMovement));
+ } else if (twigs.selectionMode == twigs.SELECTIONMODE.lasso) {
+ //ctxSelect.moveTo(dragLast[0], dragLast[1]);
+ ctxSelect.lineTo(dragStart[0], dragStart[1]);
+ ctxSelect.stroke();
+ ctxSelect.fillStyle = "rgb(255, 0, 0)";
+ ctxSelect.fill();
+ ctxSelect.closePath();
+ twirl.loading.show("Finding frequencies");
+ setTimeout(function(){
+ var width = elContainer.width();
+ var id = ctxSelect.getImageData(0, 0, width, elContainer.height());
+
+ var x = 0;
+ var y = 0;
+ var bins = {};
+ for (var i = 0; i < id.data.length; i += 4) {
+ if (id.data[i] == "255") {
+ var pixel = ctxHit.getImageData(x, y, 1, 1);
+ var colour = "rgb(" + pixel.data[0] + ","
+ + pixel.data[1] + ","
+ + pixel.data[2] + ")";
+ var bin = binColourHash[colour];
+ if (bin) {
+ if (bins[bin]) {
+ if (x < bins[bin][0]) bins[bin][0] = x;
+ if (x > bins[bin][1]) bins[bin][1] = x;
+ } else {
+ bins[bin] = [x, x];
+ }
+ }
+ }
+
+ x ++;
+ if (x >= width) {
+ x = 0;
+ y ++;
+ }
+ }
+ for (var b in bins) {
+ selection.bins[b] = [
+ displayPosToAbsPos(bins[b][0] / width),
+ displayPosToAbsPos(bins[b][1] / width)
+ ]
+ }
+ ctxSelect.clearRect(0, 0, width, height);
+ drawSelection();
+ twirl.loading.hide();
+ }, 10);
+
+ } else if (twigs.selectionMode == twigs.SELECTIONMODE.dragBins || twigs.selectionMode == twigs.SELECTIONMODE.dragArea) {
+ var selWidth = x - xMovement;
+ var time;
+ if (twigs.selectionMode == twigs.SELECTIONMODE.dragArea) {
+ var containerWidth = elContainer.width();
+ time = [
+ dragStart[0] / containerWidth,
+ x / containerWidth
+ ];
+ } else {
+ time = [0, 1];
+ }
+ var bins = [];
+ var pixels = ctxHit.getImageData(dragStart[0], dragStart[1], xMovement, yMovement); //x, y, xMovement, yMovement);
+ for (var i = 0; i < pixels.data.length; i += 4) {
+ var colour = "rgb(" + pixels.data[i] + ","
+ + pixels.data[i + 1] + ","
+ + pixels.data[i + 2] + ")";
+ var bin = binColourHash[colour];
+ if (bin && bins.indexOf(bin) < 0) {
+ bins.push(bin);
+ selection.bins[bin] = [
+ displayPosToAbsPos(time[0]),
+ displayPosToAbsPos(time[1])
+ ]
+ }
+ }
+ drawSelection();
+ }
+ elSelection.hide();
+ dragStart = [];
+ dragLast = [];
+ $("body").off("mouseup", mouseUp).off("mousemove", mouseMove);
+ }
+
+ elGridCanvas = $("<canvas />").css({
+ position: "absolute", width: "100%", height: "100%", top: "0px", left: "0px", "z-index": 12
+ }).attr("width", width).attr("height", height).appendTo(elContainer);
+
+ elSelectCanvas = $("<canvas />").css({
+ position: "absolute", width: "100%", height: "100%", top: "0px", left: "0px", "z-index": 13
+ }).attr("width", width) .attr("height", height).appendTo(elContainer).on("mousedown", function(e){
+ offset = $(this).offset();
+ var x = e.clientX - offset.left;
+ var y = e.clientY - offset.top;
+ dragStart = [x, y];
+ dragLast = [x, y];
+ if (twigs.selectionMode == twigs.SELECTIONMODE.singleBin || twigs.selectionMode == twigs.SELECTIONMODE.binAppend) {
+ const pixel = ctxHit.getImageData(x, y, 1, 1);
+ const colour = "rgb(" + pixel.data[0] + ","
+ + pixel.data[1] + ","
+ + pixel.data[2] + ")";
+ const bin = binColourHash[colour];
+ if (bin) {
+ var binTime = [
+ displayPosToAbsPos(0),
+ displayPosToAbsPos(1),
+ ]
+ if (twigs.selectionMode == twigs.SELECTIONMODE.binAppend) {
+ selection.bins[bin] = binTime;
+ } else {
+ clearSelection();
+ selection.bins[bin] = binTime;
+ }
+ drawSelection();
+ }
+ } else {
+ if (twigs.selectionMode == twigs.SELECTIONMODE.lasso) {
+ clearSelection();
+ ctxSelect.strokeStyle = "black";
+ ctxSelect.fillStyle = "rgb(10, 10, 10, 50)";
+ ctxSelect.lineWidth = 2;
+ ctxSelect.moveTo(dragStart[0], dragStart[1]);
+ ctxSelect.beginPath();
+ }
+ $("body").on("mouseup", mouseUp).on("mousemove", mouseMove);
+ }
+ });
+ ctx = elCanvas[0].getContext("2d");
+ ctxHit = elHitCanvas[0].getContext("2d", {willReadFrequently: true});
+ ctxSelect = elSelectCanvas[0].getContext("2d", {willReadFrequently: true});
+ ctxGrid = elGridCanvas[0].getContext("2d");
+ }
+
+
+
+ function getNextColour() {
+ if (colIDs[0] < 255) {
+ colIDs[0] += 5;
+ } else if (colIDs[1] < 255) {
+ colIDs[1] += 5;
+ } else {
+ colIDs[2] += 5;
+ }
+ return "rgb(" + colIDs.join(",") + ")";
+ }
+
+ this.setPlaying = function(state) {
+ playing = state;
+ };
+
+ this.undo = function() {
+ if (playing) return;
+ twirl.loading.show("Applying");
+ var cbid = app.createCallback(globalCallbackHandler);
+ app.insertScore("twgs_undo", [0, 1, cbid]);
+ };
+
+ this.play = async function(selectedOnly) {
+ if (playing) return;
+ if (!twigs.storage.resynthType) {
+ twigs.storage.resynthType = 0;
+ twigs.saveStorage();
+ }
+ errorState = "Playback error";
+ var region = [0, 1];
+ if (selectedOnly) {
+ region = await setBinSelectionTable();
+ }
+ app.insertScore("twgs_play", [
+ 0, 1, playPositionHandler(),
+ 0, ((selectedOnly) ? 1 : 0),
+ region[0], region[1],
+ twigs.storage.resynthType
+ ]);
+ };
+
+ this.increaseAmpScaling = function() {
+ amplitudeScaling += 20;
+ twigs.redraw();
+ };
+
+ this.decreaseAmpScaling = function() {
+ amplitudeScaling -= 20;
+ if (amplitudeScaling <= 0) amplitudeScaling = 20;
+ twigs.redraw();
+ };
+
+
+ function spectroColour(value) {
+ var min = 16711680
+ var max = 255
+ var colourNumber = parseInt(((max - min) * value) + min);
+ function toHex(n) {
+ n = n.toString(16) + '';
+ return n.length >= 2 ? n : new Array(2 - n.length + 1).join('0') + n;
+ }
+
+ var r = toHex(colourNumber % 256),
+ g = toHex(Math.floor(colourNumber / 256 ) % 256),
+ b = toHex(Math.floor(Math.floor(colourNumber / 256) / 256 ) % 256);
+ return '#' + r + g + b;
+ }
+
+ var drawing = false;
+ this.redraw = async function(efficiency, noLoadingPrompt) {
+ if (drawing) return;
+ drawing = true;
+ if (!efficiency) efficiency = 4;
+ if (!noLoadingPrompt) twirl.loading.show("Drawing");
+ if (twigs.storage.basicLines == null) twigs.storage.basicLines = 0;
+ var style = getComputedStyle(document.body);
+ var height = elContainer.height();
+ var width = elContainer.width();
+ [ctx, ctxSelect, ctxHit, ctxGrid].forEach(function(c){
+ c.clearRect(0, 0, width, height);
+ });
+ binColourHash = {};
+ colIDs = [0, 0, 0];
+
+ var startFreq = region.frequency[0] * maxfreq;
+ var endFreq = region.frequency[1] * maxfreq;
+ var freqRange = endFreq - startFreq;
+
+ var ampTableNum = loaded.tables[0];
+ var freqTableNum = loaded.tables[1];
+ var tableLength = await app.getCsound().tableLength(ampTableNum);
+ var ampTable = await app.getCsound().getTable(ampTableNum);
+ var freqTable = await app.getCsound().getTable(freqTableNum);
+
+ var totalFrames = tableLength / loaded.bins;
+ var startFrame = parseInt(region.time[0] * totalFrames);
+ var endFrame = parseInt(region.time[1] * totalFrames);
+ var frameRegion = endFrame - startFrame;
+ var startIndex = startFrame * loaded.bins;
+ var endIndex = endFrame * loaded.bins;
+ var indexStep = (frameRegion / width) * efficiency;
+ xstep = parseInt(Math.max(1, width / frameRegion) * efficiency);
+ tabstep = loaded.bins * Math.max(1, Math.round(indexStep));
+
+ if (!twigs.storage.basicLines) {
+ ctx.lineWidth = 2;
+ ctx.shadowBlur = 2;
+ } else {
+ ctx.lineWidth = 1;
+ ctx.shadowBlur = null;
+ ctx.shadowColor = null;
+ }
+
+ for (var b = 0; b < loaded.bins; b ++) {
+ var hitColour = getNextColour();
+ if (!binColourHash[hitColour]) {
+ binColourHash[hitColour] = b;
+ }
+
+ ctxHit.lineWidth = 4;
+ ctxHit.strokeStyle = hitColour;
+
+ if (twigs.storage.graphType == 0) ctxHit.beginPath();
+
+ var lastfreq = null;
+ for (var x = 0, i = b + startIndex; i < endIndex; i += tabstep, x += xstep) {
+ var freq = freqTable[i];
+
+ var colour;
+ if (twigs.storage.colourType == 1) {
+ colour = spectroColour(ampTable[i] * amplitudeScaling);
+ } else {
+ var cval = 255 - Math.round((ampTable[i] * amplitudeScaling) * 255);
+ cval = Math.min(Math.max(0, cval), 255);
+ colour = "rgb(" + cval + "," + cval + "," + cval + ")";
+ }
+
+ if (twigs.storage.graphType == 1) {
+ var yPos = ((freqRange - freq) / freqRange) * height;
+ ctx.beginPath();
+ ctx.moveTo(x, yPos);
+ ctx.lineTo(x + xstep, yPos);
+ ctx.strokeStyle = colour;
+ if (!twigs.storage.basicLines) ctx.shadowColor = colour;
+ ctx.stroke();
+ ctx.closePath();
+ ctxHit.beginPath();
+ ctxHit.moveTo(x, yPos);
+ ctxHit.lineTo(x + xstep, yPos);
+ ctxHit.stroke();
+ ctxHit.closePath();
+ } else if (twigs.storage.graphType == 0) {
+
+ if (lastfreq && lastfreq >= startFreq && lastfreq <= endFreq && freq >= startFreq && freq <= endFreq) {
+ var yPos = [
+ ((freqRange - lastfreq) / freqRange) * height,
+ ((freqRange - freq) / freqRange) * height
+ ];
+ ctx.beginPath();
+ ctx.moveTo(x - xstep, yPos[0]);
+ ctx.lineTo(x, yPos[1]);
+ ctx.strokeStyle = colour;
+ if (!twigs.storage.basicLines) ctx.shadowColor = colour;
+ ctx.stroke();
+ ctx.closePath();
+
+ ctxHit.moveTo(x - xstep, yPos[0]);
+ ctxHit.lineTo(x, yPos[1]);
+
+ }
+ lastfreq = freq;
+ }
+ }
+ if (twigs.storage.graphType == 0) {
+ ctxHit.stroke();
+ ctxHit.closePath();
+ }
+ }
+ /*
+ if (twigs.storage.drawFrequencyGrid) {
+ var lines = 10;
+ var ystep = height / lines;
+ var freqstep = (endFreq - startFreq) / lines;
+ ctxGrid.lineCap = "butt";
+ ctxGrid.lineWidth = 1;
+ for (var y = 0, freq = endFreq; y += ystep, freq -= freqstep; y < height) {
+ ctxGrid.strokeStyle = ctxGrid.fillStyle = "rgb(100, 0, 0, 40)"; //style.getPropertyValue("--waveformGridColor");
+ ctxGrid.beginPath();
+ ctxGrid.moveTo(0, y);
+ ctxGrid.lineTo(width, y);
+ ctxGrid.stroke();
+ ctxGrid.closePath();
+ //ctx.strokeStyle = ctx.fillStyle = style.getPropertyValue("--waveformGridTextColor");
+ ctxGrid.fillText(Math.round(freq), 0, y - 2);
+ }
+ }
+
+ if (twigs.storage.drawTimeGrid) {
+ var lines = 10;
+ var startTime = region.time[0] * loaded.duration;
+ var endTime = region.time[1] * loaded.duration;
+ var xstep = width / lines;
+ var timestep = (endTime - startTime) / lines;
+ ctxGrid.lineCap = "butt";
+ ctxGrid.lineWidth = 1;
+ for (var x = 0, time = startTime; x += xstep, time += timestep; x < width) {
+ if (x > width) break; // wtf??????? this is strangely happening
+ ctxGrid.strokeStyle = ctxGrid.fillStyle = "rgb(100, 0, 0, 40)"; //style.getPropertyValue("--waveformGridColor");
+ ctxGrid.beginPath();
+ ctxGrid.moveTo(x, 0);
+ ctxGrid.lineTo(x, height);
+ ctxGrid.stroke();
+ ctxGrid.closePath();
+ //ctx.strokeStyle = ctx.fillStyle = style.getPropertyValue("--waveformGridTextColor");
+ ctxGrid.fillText(Math.round(time * 1000) / 1000, x + 2, height - 2);
+ }
+ }
+ */
+
+ drawSelection();
+ if (!noLoadingPrompt) twirl.loading.hide();
+ drawing = false;
+ }
+
+ async function globalCallbackHandler(ndata) {
+ if (ndata.status && ndata.status <= 0) {
+ return self.errorHandler();
+ }
+
+ if (ndata.hasOwnProperty("undolevel")) {
+ twigs.undoLevel = ndata.undolevel;
+ }
+
+ if (ndata.channels) {
+ loaded.channels = ndata.channels;
+ }
+
+ var initialLoad = false;
+ if (ndata.bins) {
+ loaded.bins = ndata.bins;
+ initialLoad = true;
+ }
+
+ if (ndata.fftdecim) {
+ loaded.fftdecimation = ndata.fftdecim;
+ }
+
+ if (ndata.duration) {
+ loaded.duration = ndata.duration;
+ }
+
+ if (ndata.sr) {
+ maxfreq = ndata.sr / 2;
+ }
+
+ if (ndata.binseltab) {
+ loaded.binSelectionTable = ndata.binseltab;
+ }
+
+ if (ndata.bintimeseltab) {
+ loaded.binTimeSelectionTable = ndata.bintimeseltab;
+ }
+
+ if (ndata.tables) {
+ setTimeout(async function() {
+ loaded.tables = ndata.tables;
+ loaded.length = await app.getCsound().tableLength(loaded.tables[0]);
+ if (!twigs.storage.zoomOnLoad) twigs.storage.zoomOnLoad = 1;
+ if (initialLoad && twigs.storage.zoomOnLoad) {
+ twigs.setFrequencyRegion(0, 0.2, true);
+ twigs.setTimeRegion(0, 0.2);
+ } else {
+ twigs.redraw();
+ }
+ }, 10); // csound may not be ready
+ }
+ }
+
+ this.editInTwist = function() {
+ if (playing) return;
+ if (!twigs.storage.resynthType) {
+ twigs.storage.resynthType = 0;
+ twigs.saveStorage();
+ }
+ if (!window.twist) {
+ return twirl.prompt.show("twist is unavailable in this session");
+ }
+ twirl.loading.show("Processing");
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status == 3) {
+ return twirl.loading.show("Resynthesising");
+ }
+ twirl.loading.hide();
+ app.removeCallback(ndata.cbid);
+
+ twist.loadFileFromFtable(loaded.name, ndata.tables, function(ldata){
+ if (ldata.status > 0) {
+ self.setVisible(false);
+ twist.setVisible(true);
+ }
+ }, onSave);
+
+ }, true);
+ app.insertScore("twgs_resynth", [0, 1, cbid, "twgs_getbuffers", twigs.storage.resynthType]);
+ };
+
+ this.setVisible = function(state) {
+ twigs.visible = state;
+ var el = $("#twigs");
+ if (state) {
+ el.show();
+ } else {
+ el.hide();
+ }
+ };
+
+
+ function formatFileName(name) {
+ if (!name) name = waveformTabs[instanceIndex].text();
+ if (!name.toLowerCase().endsWith(".wav")) {
+ name += ".wav";
+ }
+
+ // HACK TODO: WASM can't overwrite files
+ name = name.substr(0, name.lastIndexOf(".")) + "." + saveNumber + name.substr(name.lastIndexOf("."));
+ saveNumber ++;
+ // END HACK
+ return name;
+ }
+
+ this.downloadFile = async function(path, name) {
+ if (!name) name = formatFileName(name);
+ var content = await app.readFile(path);
+ var blob = new Blob([content], {type: "audio/wav"});
+ var url = window.URL.createObjectURL(blob);
+ var a = $("<a />").attr("href", url).attr("download", name).appendTo($("body")).css("display", "none");
+ a[0].click();
+ setTimeout(function(){
+ a.remove();
+ window.URL.revokeObjectURL(url);
+ app.unlinkFile(path);
+ }, 20000);
+ };
+
+ var saveNumber = 1;
+ this.saveFile = function(name, onComplete) {
+ if (!twigs.storage.resynthType) {
+ twigs.storage.resynthType = 0;
+ twigs.saveStorage();
+ }
+ if (playing) return;
+ if (onSave) {
+ twirl.loading.show("Processing");
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status == 3) {
+ return twirl.loading.show("Resynthesising");
+ }
+ twirl.loading.hide();
+ app.removeCallback(ndata.cbid);
+ onSave(ndata.tables);
+ }, true);
+ app.insertScore("twgs_resynth", [0, 1, cbid, "twgs_getbuffers", twigs.storage.resynthType]);
+ return;
+ }
+ if (!name) name = formatFileName(name);
+ var cbid = app.createCallback(async function(ndata){
+ if (ndata.status == 3) {
+ return twirl.loading.show("Resynthesising");
+ }
+ app.removeCallback(ndata.cbid);
+
+ twirl.loading.show("Saving");
+ app.insertScore("twgs_savefile", [0, 1, app.createCallback(async function(ldata){
+ if (onComplete) onComplete();
+ await self.downloadFile(ndata.path, ndata.path);
+ twirl.loading.hide();
+ }), name]);
+
+ }, true);
+ twist.loading.show("Processing");
+ app.insertScore("twgs_resynth", [0, 1, cbid, "twgs_resynth_response", twigs.storage.resynthType]);
+ };
+
+
+ this.loadFileFromFtable = function(name, tables, onComplete, onSaveFunc) {
+ errorState = "File loading error";
+ twigs.ui.showLoadFileFFTPrompt(function(fftSize, fftDecim){
+ twirl.loading.show("Loading file");
+
+ var cbid = app.createCallback(async function(ndata){
+ twirl.loading.hide();
+ if (ndata.status > 0) {
+ loaded.name = name;
+ await globalCallbackHandler(ndata);
+ onSave = onSaveFunc;
+ } else if (ndata.status == -1) {
+ twirl.prompt.show("File not valid");
+ } else if (ndata.status == -2) {
+ twirl.prompt.show("File too large");
+ } else {
+ twirl.prompt.show("File loading error");
+ }
+ if (onComplete) {
+ onComplete(ndata);
+ }
+ });
+ var call = [0, 1, cbid, fftSize, fftDecim];
+ for (let t of tables) {
+ call.push(t);
+ }
+ app.insertScore("twgs_loadftable", call);
+ });
+ };
+
+ async function handleFileDrop(e, obj) {
+ e.preventDefault();
+ if (!e.originalEvent.dataTransfer && !e.originalEvent.files) {
+ return;
+ }
+ if (e.originalEvent.dataTransfer.files.length == 0) {
+ return;
+ }
+ twirl.prompt.hide();
+ twirl.loading.show("Loading");
+ for (const item of e.originalEvent.dataTransfer.files) {
+ if (!twirl.audioTypes.includes(item.type)) {
+ return twirl.errorHandler("Unsupported file type");
+ }
+ if (item.size > twirl.maxFileSize) {
+ return twirl.errorHandler("File too large", twigs.ui.showLoadNewPrompt);
+ }
+ errorState = "File loading error";
+ var content = await item.arrayBuffer();
+ const buffer = new Uint8Array(content);
+ await app.writeFile(item.name, buffer);
+
+ twigs.ui.showLoadFileFFTPrompt(function(fftSize, fftDecim){
+ twirl.loading.show("Loading file");
+ var cbid = app.createCallback(async function(ndata){
+ await app.unlinkFile(item.name);
+ if (ndata.status == -1) {
+ return twirl.errorHandler("File not valid", twigs.ui.showLoadNewPrompt);
+ } else if (ndata.status == -2) {
+ return twirl.errorHandler("File too large", twigs.ui.showLoadNewPrompt);
+ } else {
+ loaded.name = item.name;
+ await globalCallbackHandler(ndata);
+ onSave = false;
+ }
+ });
+ app.insertScore("twgs_loadfile", [0, 1, cbid, item.name, fftSize, fftDecim]);
+ });
+ }
+ }
+
+ this.bootAudio = function(twine) {
+ var channelDefaultItems = ["maxundo"];
+
+ for (var i of channelDefaultItems) {
+ if (twigs.storage.hasOwnProperty(i)) {
+ app.setControlChannel("twgs_" + i, twigs.storage[i]);
+ }
+ }
+ };
+
+ var booted = false;
+ this.boot = function(twine) {
+ if (booted) return;
+ booted = true;
+ setup();
+ twigs.ui = new TwigsUI(twigs);
+ if (!twine) {
+ $("body").on("dragover", function(e) {
+ e.preventDefault();
+ e.originalEvent.dataTransfer.effectAllowed = "all";
+ e.originalEvent.dataTransfer.dropEffect = "copy";
+ return false;
+ }).on("dragleave", function(e) {
+ e.preventDefault();
+ }).on("drop", function(e) {
+ handleFileDrop(e, self);
+ });
+ } else {
+ twigs.twine = twine;
+ }
+ };
+
+};
+
+
+function twigs_startisolated() {
+ window.twigs = new Twigs();
+ twigs.setVisible(true);
+ window.app = new CSApplication({
+ csdUrl: "twigs.csd",
+ onPlay: function() {
+ twigs.bootAudio();
+ twirl.prompt.show("Drag a file here to begin", null, true);
+ twirl.loading.hide();
+ },
+ errorHandler: twirl.errorHandler
+ });
+ $("#twigs_start").click(function(){
+ $(this).hide();
+ twigs.boot();
+ twirl.loading.show("Preparing audio engine");
+ app.play(function(text){
+ twirl.loading.show(text);
+ });
+ });
+} \ No newline at end of file
diff --git a/site/app/twigs/twigs_ui.js b/site/app/twigs/twigs_ui.js
new file mode 100644
index 0000000..1186dac
--- /dev/null
+++ b/site/app/twigs/twigs_ui.js
@@ -0,0 +1,577 @@
+var twigsTopMenuData = [
+ {name: "File", contents: [
+ {name: "New", disableOnPlay: true, shortcut: {name: "Ctrl N", ctrlKey: true, key: "n"}, click: function(twigs) {
+ twigs.createNewInstance();
+ }},
+ {name: "Save", disableOnPlay: true, shortcut: {name: "Ctrl S", ctrlKey: true, key: "s"}, click: function(twigs) {
+ twigs.saveFile();
+ }},
+ {name: "Close", disableOnPlay: true, shortcut: {name: "Ctrl W", ctrlKey: true, key: "w"}, click: function(twigs) {
+ twigs.closeInstance();
+ }, condition: function(twist) {
+ return (!twist.twine);
+ }},
+ {name: "Edit in twist", click: function(twigs) {
+ twigs.editInTwist();
+ }, condition: function(twigs) {
+ return window.hasOwnProperty("Twist");
+ }}
+ ]},
+ {name: "Edit", contents: [
+ {name: "Undo", disableOnPlay: true, shortcut: {name: "Ctrl Z", ctrlKey: true, key: "z"}, click: function(twigs) {
+ twigs.undo();
+ }, condition: function(twigs) {
+ return (twigs.storage.maxundo > 0 && twigs.undoLevel > 0);
+ }}
+ ]},
+ {name: "View", contents: [
+ {name: "Contract channels", shortcut: {name: "C", key: "c"}, click: function(twigs) {
+ twigs.timeline.contractChannels();
+ }}
+ ]},
+ {name: "Action", contents: []},
+ {name: "Options", contents: [
+ {name: "Settings", click: function(twigs) {
+ twigs.ui.showSettings();
+ }}
+ ]},
+ {name: "Help", contents: [
+ {name: "Help", click: function(twigs){
+ $("#twigs_documentation")[0].click();
+ }},
+ {name: "Report bug", click: function(twist){
+ $("#twigs_reportbug")[0].click();
+ }},
+ {name: "Contact owner", click: function(twist){
+ $("#twigs_contact")[0].click();
+ }},
+ {name: "About", click: function(twigs) {
+ twigs.ui.showAbout();
+ }},
+ ]}
+];
+
+var TwigsUI = function(twigs) {
+ var ui = this;
+ var el = $("#twigs_sidebar");
+ var elEditor = $("#twigs_editor_inner");
+
+ ui.showLoadFileFFTPrompt = function(onComplete) {
+ var t = $("<table />");
+ var tb = $("<tbody />").appendTo(t);
+ var ksmps = 64;
+
+ var tr = $("<tr />").appendTo(tb);
+ $("<td />").text("FFT size").appendTo(tr);
+
+ var fftSize = $("<select />").change(function(){
+ updateDecimation();
+ });
+ $("<td />").appendTo(tr).append(fftSize);
+ for (let o of [256, 512, 1024, 2048]) {
+ $("<option />").val(o).text(o).appendTo(fftSize);
+ }
+
+ tr = $("<tr />").appendTo(tb);
+ $("<td />").text("FFT decimation").appendTo(tr);
+ var fftDecim = $("<select />");
+ $("<td />").appendTo(tr).append(fftDecim);
+
+ function updateDecimation() {
+ fftDecim.empty();
+ var max = fftSize.val() / 64;
+ var min = max / 2;
+ for (let o of [min, max]) {
+ $("<option />").val(o).text(o).appendTo(fftDecim);
+ }
+ }
+ twirl.prompt.show(t, function() {
+ onComplete(fftSize.val(), fftDecim.val());
+ });
+ fftSize.val(512);
+ updateDecimation();
+ };
+
+
+ function addActionMenu(menu, item) {
+ for (let i in twigsTopMenuData) {
+ if (twigsTopMenuData[i].name.toLowerCase() == menu.toLowerCase()) {
+ twigsTopMenuData[i].contents.push(item);
+ }
+ }
+ }
+
+ var zoomIcons = [
+ {
+ label: "Zoom in frequency",
+ icon: "zoomIn",
+ size: 20,
+ click: function() {
+ twigs.vzoomIn();
+ },
+ shortcut: {name: "W", key: "w"},
+ menuAdd: "view",
+ target: "#twigs_editor_vzoom"
+ },
+ {
+ label: "Zoom out frequency",
+ icon: "zoomOut",
+ size: 20,
+ click: function() {
+ twigs.vzoomOut();
+ },
+ shortcut: {name: "W", key: "w"},
+ menuAdd: "view",
+ target: "#twigs_editor_vzoom"
+ },
+ {
+ label: "Show all frequency",
+ icon: "showAll",
+ size: 20,
+ click: function() {
+ twigs.setFrequencyRegion(0, 1);
+ },
+ shortcut: {name: "W", key: "w"},
+ menuAdd: "view",
+ target: "#twigs_editor_vzoom"
+ },
+ {
+ label: "Zoom in time",
+ icon: "zoomIn",
+ size: 20,
+ click: function() {
+ twigs.hzoomIn();
+ },
+ shortcut: {name: "W", key: "w"},
+ menuAdd: "view",
+ target: "#twigs_editor_hzoom"
+ },
+ {
+ label: "Zoom out time",
+ icon: "zoomOut",
+ size: 20,
+ click: function() {
+ twigs.hzoomOut();
+ },
+ shortcut: {name: "W", key: "w"},
+ menuAdd: "view",
+ target: "#twigs_editor_hzoom"
+ },
+ {
+ label: "Show all time",
+ icon: "showAll",
+ size: 20,
+ click: function() {
+ twigs.setTimeRegion(0, 1);
+ },
+ shortcut: {name: "W", key: "w"},
+ menuAdd: "view",
+ target: "#twigs_editor_hzoom"
+ },
+ {
+ label: "Show all",
+ icon: "showAll",
+ size: 20,
+ click: function() {
+ twigs.setFrequencyRegion(0, 1, true);
+ twigs.setTimeRegion(0, 1);
+ },
+ shortcut: {name: "W", key: "w"},
+ menuAdd: "view",
+ target: "#twigs_editor_hzoom"
+ }
+
+ ];
+
+
+ this.showAbout = function() {
+ var el = $("<div />");
+ var x = $("<div />").appendTo(el);
+ var string = "twigs";
+ var intervals = [];
+
+ function addChar(c) {
+ var elC = $("<h2 />").text(c).css("display", "inline-block").appendTo(x);
+ var rate = (Math.random() * 0.005) + 0.001;
+ var scale = 1;
+ var scaleDirection = false;
+ return setInterval(function(){
+ if (scaleDirection) {
+ if (scale < 1) {
+ scale += rate;
+ } else {
+ scaleDirection = false;
+ }
+ } else {
+ if (scale > 0.05) {
+ scale -= rate;
+ } else {
+ scaleDirection = true;
+ }
+ }
+ elC.css("transform", "scaleX(" + scale + ")");
+ }, (Math.random() * 10) + 8);
+ }
+ for (let c of string) {
+ intervals.push(addChar(c));
+ }
+
+ $("<p />").text("Version " + twigs.version.toFixed(1)).appendTo(el);
+ $("<p />").css("font-size", "12px").text("By Richard Knight 2024").appendTo(el);
+
+ twirl.prompt.show(el, function(){
+ for (let i of intervals) clearInterval(i);
+ });
+ };
+
+ this.showSettings = function() {
+ var settings = [
+ {
+ name: "Undo levels",
+ description: "Number of undo levels stored. Large numbers may affect memory usage",
+ min: 0, max: 32, step: 1, dfault: 2, storageKey: "maxundo",
+ onChange: function(val) {
+ app.setControlChannel("twgs_maxundo", val);
+ }
+ },
+ {
+ name: "Resynthesis type",
+ description: "Type of resynthesis to be used",
+ options: ["Overlap-add", "Additive"],
+ dfault: 0,
+ storageKey: "resynthType"
+ },
+ {
+ name: "Colour type",
+ description: "Type of colouration to use in graphing",
+ options: ["Monochrome", "Colour"],
+ dfault: 0,
+ storageKey: "colourType",
+ onChange: function() {
+ twigs.redraw();
+ }
+ },
+ {
+ name: "Graph type",
+ description: "Approach to graphing partials used",
+ options: ["Joined line", "Separate lines"],
+ dfault: 0,
+ storageKey: "graphType",
+ onChange: function() {
+ twigs.redraw();
+ }
+ },
+ {
+ name: "Basic lines",
+ description: "Show thin, basic lines in graphing",
+ bool: true,
+ dfault: 0,
+ storageKey: "basicLines",
+ onChange: function() {
+ twigs.redraw();
+ }
+ },
+ {
+ name: "Frequency gridlines",
+ description: "Draw the vertical frequency grid",
+ bool: true,
+ dfault: 1,
+ storageKey: "drawFrequencyGrid",
+ onChange: function() {
+ twigs.redraw();
+ }
+ },
+ {
+ name: "Time gridlines",
+ description: "Draw the horizontal time grid",
+ bool: true,
+ dfault: 1,
+ storageKey: "drawTimeGrid",
+ onChange: function() {
+ twigs.redraw();
+ }
+ },
+ {
+ name: "Zoom to start on load",
+ description: "Zoom to the start portion of time and frequency when loading a new file",
+ bool: true,
+ dfault: 1,
+ storageKey: "zoomOnLoad"
+ }
+ ];
+ twirl.showSettings(twigs, settings);
+ };
+
+ var icon_groups = {};
+
+ ui.setSelectionMode = function(mode, iconObj) {
+ for (let s of icon_groups.selection) s.setActive(false);
+ iconObj.setActive(true);
+ elEditor.css("cursor", iconObj.definition.cursor);
+ twigs.setSelectionMode(mode);
+ }
+
+ function setOptionsArea(el) {
+ var o = $("#twigs_options").empty();
+ if (el) o.append(el);
+ }
+
+ ui.icons = {};
+
+ var icons = [
+ [{
+ label: "Select single bin",
+ icon: "pointer",
+ shortcut: {name: "Q", key: "q"},
+ menuAdd: "action",
+ group: "selection",
+ cursor: "default",
+ bgColor: 1,
+ clickOnInactive: true,
+ click: function(obj) {
+ ui.setSelectionMode(twigs.SELECTIONMODE.singleBin, obj);
+ }
+ },
+ {
+ label: "Select area",
+ icon: "areaSelect",
+ shortcut: {name: "W", key: "w"},
+ menuAdd: "action",
+ group: "selection",
+ cursor: "crosshair",
+ bgColor: 1,
+ clickOnInactive: true,
+ click: function(obj) {
+ ui.setSelectionMode(twigs.SELECTIONMODE.dragArea, obj);
+ }
+ }],
+ [{
+ label: "Select bins",
+ icon: "verticalArrows",
+ shortcut: {name: "A", key: "a"},
+ menuAdd: "action",
+ group: "selection",
+ cursor: "vertical-text",
+ bgColor: 1,
+ clickOnInactive: true,
+ click: function(obj) {
+ ui.setSelectionMode(twigs.SELECTIONMODE.dragBins, obj);
+ }
+ },
+ {
+ label: "Free select",
+ icon: "lasso",
+ shortcut: {name: "S", key: "s"},
+ menuAdd: "action",
+ group: "selection",
+ cursor: "crosshair",
+ bgColor: 1,
+ clickOnInactive: true,
+ click: function(obj) {
+ ui.setSelectionMode(twigs.SELECTIONMODE.lasso, obj);
+ }
+ }],
+ [{
+ label: "Bin append select",
+ icon: "waves",
+ shortcut: {name: "Z", key: "z"},
+ menuAdd: "action",
+ group: "selection",
+ cursor: "copy",
+ bgColor: 1,
+ clickOnInactive: true,
+ click: function(obj) {
+ ui.setSelectionMode(twigs.SELECTIONMODE.binAppend, obj);
+ }
+ },
+ {
+ label: "Play selection",
+ icon: "ear",
+ shortcut: {name: "X", key: "x"},
+ menuAdd: "action",
+ bgColor: 2,
+ click: function(obj) {
+ twigs.play(true);
+ }
+ }],
+ [{
+ label: "Move",
+ icon: "move",
+ shortcut: {name: "E", key: "e"},
+ menuAdd: "action",
+ group: "selection",
+ cursor: "grab",
+ bgColor: 3,
+ clickOnInactive: true,
+ click: function(obj) {
+ ui.setSelectionMode(twigs.SELECTIONMODE.move, obj);
+ },
+ optionsArea: function() {
+ if (!twigs.storage.movementType) twigs.storage.movementType = 2;
+ if (!twigs.storage.interpolateVoid) twigs.storage.interpolateVoid = 1;
+ if (!twigs.storage.interpolateRatio) twigs.storage.interpolateRatio = 0;
+ var el = $("<div />");
+ var typeOptions = new twirl.transform.Transform({host: twigs, element: el, definition: {
+ name: "Movement",
+ instr: "twgs_movement",
+ parameters: [
+ {name: "Movement type", description: "Type of movement to apply", channel: "twgs_movementtype", absolutechannel: true, options: ["Copy", "Leave void", "Retain amp/freq in void", "Retain amp in void", "Retain freq in void"], automatable: false, dfault: twigs.storage.movementType, onChange: function(val){
+ twigs.storage.movementType = val;
+ twigs.saveStorage();
+ }},
+ {name: "Interpolate void", description: "Interpolate values in the void created by the movement", channel: "twgs_interpolatevoid", absolutechannel: true, min: 0, max: 1, step: 1, automatable: false, dfault: twigs.storage.interpolateVoid, onChange: function(val){
+ twigs.storage.interpolateVoid = val;
+ twigs.saveStorage();
+ }, conditions: [{channel: "twgs_movementtype", absolutechannel: true, operator: "ge", value: 2}]},
+ {name: "Interpolation ratio", description: "Ratio of interpolation to integrate with target position", channel: "twgs_interpolateratio", absolutechannel: true, min: 0, max: 0.45, automatable: false, dfault: twigs.storage.interpolateRatio, onChange: function(val){
+ twigs.storage.interpolateRatio = val;
+ twigs.saveStorage();
+ }}
+ ]
+ }});
+ return el;
+ }
+ },
+ {
+ label: "Transpose",
+ icon: "arrowsUpDown",
+ shortcut: {name: "R", key: "r"},
+ menuAdd: "action",
+ group: "selection",
+ cursor: "row-resize",
+ bgColor: 3,
+ clickOnInactive: true,
+ click: function(obj) {
+ setSelectionMode(twigs.SELECTIONMODE.transpose, obj);
+ }
+ }],
+ [{
+ label: "Amplify",
+ icon: "fileVolume",
+ shortcut: {name: "D", key: "d"},
+ menuAdd: "action",
+ bgColor: 3,
+ click: function(obj) {
+ if (!twigs.hasSelection) return;
+ var el = $("<div />");
+ $("<h4 />").text("Amplitude scale").appendTo(el);
+ var amp = $("<input />").attr("type", "range").attr("max", 10).attr("min", 0).attr("step", 0.000001).val(1).appendTo(el);
+ twirl.prompt.show(el, function(){
+ twigs.selectionOperation.amplify(amp.val());
+ });
+ }
+ },
+ {
+ label: "Draw",
+ icon: "pencil",
+ shortcut: {name: "F", key: "f"},
+ menuAdd: "action",
+ group: "selection",
+ cursor: "row-resize",
+ bgColor: 3,
+ clickOnInactive: true,
+ click: function(obj) {
+ setSelectionMode(twigs.SELECTIONMODE.draw, obj);
+ }
+ }],
+ [{
+ label: "Play",
+ icon: "play",
+ shortcut: {name: "Space", key: "space"},
+ menuAdd: "action",
+ bgColor: 2,
+ click: function(obj) {
+ twigs.play();
+ }
+ },
+ {
+ label: "Stop",
+ icon: "stop",
+ bgColor: 2,
+ click: function(obj) {
+ twigs.stop();
+ }
+ }],
+ [{
+ label: "Zoom in amplitude",
+ icon: "brightnessIncrease",
+ shortcut: {name: "C", key: "c"},
+ menuAdd: "action",
+ bgColor: 1,
+ click: function(obj) {
+ twigs.increaseAmpScaling();
+ }
+ },
+ {
+ label: "Zoom out amplitude",
+ icon: "brightnessDecrease",
+ shortcut: {name: "V", key: "v"},
+ menuAdd: "action",
+ bgColor: 1,
+ click: function(obj) {
+ twigs.decreaseAmpScaling();
+ }
+ }]
+ ];
+
+ function addIcon(def) {
+ let ops = {};
+ Object.assign(ops, def);
+ if (ops.shortcut) {
+ ops.label += " (" + ops.shortcut.name + ")";
+ }
+ ops.click = function(obj) {
+ def.click(obj);
+ if (def.optionsArea) {
+ setOptionsArea(def.optionsArea())
+ } else {
+ setOptionsArea();
+ }
+ }
+ let icon = twirl.createIcon(ops);
+ if (ops.menuAdd) {
+ let menuData = {
+ name: ops.label,
+ click: function() {
+ icon.el.click();
+ }
+ };
+ if (ops.shortcut) {
+ menuData.shortcut = ops.shortcut;
+ }
+ addActionMenu(ops.menuAdd, menuData);
+ }
+ return icon;
+ }
+
+ function create() {
+ for (let z of zoomIcons) {
+ var icon = addIcon(z);
+ $(z.target).append(icon.el);
+ }
+
+ var tb = $("<tbody />").appendTo($("<table />").appendTo(el));
+ var icol = 0;
+ var first;
+ for (let row of icons) {
+ var tr = $("<tr />").appendTo(tb);
+ for (let col of row) {
+ let icon = addIcon(col);
+ if (!first) first = icon;
+ if (col.group) {
+ if (!icon_groups[col.group]) icon_groups[col.group] = [];
+ icon_groups[col.group].push(icon);
+ }
+ var td = $("<td />").append(icon.el).appendTo(tr);
+ if (col.bgColor) {
+ td.css("background-color", "var(--bgColor" + col.bgColor + ")");
+ }
+ icons[col.key] = icon;
+ }
+ }
+ first.click();
+ }
+
+ create();
+ var topMenu = new twirl.TopMenu(twigs, twigsTopMenuData, $("#twigs_menubar"));
+}; \ No newline at end of file
diff --git a/site/app/twine/_hOLD/clip.js b/site/app/twine/_hOLD/clip.js
new file mode 100644
index 0000000..1c4cc48
--- /dev/null
+++ b/site/app/twine/_hOLD/clip.js
@@ -0,0 +1,499 @@
+var Clip = function(twine, data, parent) {
+ var clip = this;
+ var loaded = false;
+ var waveformClip;
+ var waveformEdit;
+ var datatable;
+ this.channel = null;
+ var minWidth = 10;
+
+ if (!data) {
+ var id = twine.getNewID();
+ var data = {
+ name: "Clip " + id,
+ channel: -1,
+ id: id,
+ clipindex: null,
+ playLength: 1,
+ colour: "#" + (Math.random() * 0xFFFFFF << 0).toString(16),
+ position: 0,
+ // debugs:
+ duration: 1,
+ warp: false,
+ loop: false
+ };
+ } else {
+ loaded = true;
+ }
+ this.data = data;
+ Object.defineProperty(this, "colour", {
+ get: function() { return data.colour; },
+ set: function(x) {
+ data.colour = x;
+ clip.element.css("background-color", data.colour);
+ }
+ });
+
+ this.exportData = function() {
+ return data;
+ };
+
+ this.destroy = function(onComplete) {
+ var cbid = app.createCallback(function(ndata){
+ clip.element.remove();
+ clip.channel.removeClip(clip);
+ if (onComplete) {
+ onComplete(ndata);
+ }
+ });
+ app.insertScore("twine_removeclip", [0, 1, cbid, clip.data.clipindex]);
+ };
+
+ var dataMode = {
+ fnL: 0, fnR: 1, divisionsPerBeat: 2, duration: 3, beatsLength: 4, utilisedLength: 5,
+ warpMode: 6, pitch: 7, amp: 8, fftSize: 9, txtWinSize: 10, txtRandom: 11, txtOverlap: 12,
+ loop: 13, warp: 14, txtWinType: 15, // warp points are 16 + in table
+ position: -1, name: -2, channel: -3, clipindex: -4, playLength: -5
+ };
+
+
+ this.element = $("<div />").addClass("twine_clip").css({
+ "background-color": data.colour
+ }).click(function(e){
+ if (e.ctrlKey) {
+ twine.timeline.selectedClips.push(clip);
+ } else {
+ $(".twine_clip").css("outline", "none");
+ twine.timeline.selectedClips = [clip];
+ }
+console.log("ch", clip.data);
+ clip.element.css("outline", "1px dashed white");
+
+ var cui = twine.ui.clip;
+ cui.name.setValue(data.name);
+ cui.colour.setValue(data.colour);
+ cui.amp.setValue(data.amp);
+ cui.warp.setValue(data.warp);
+ cui.loop.setValue(data.loop);
+ cui.readType.setValue(data.warpMode);
+ cui.pitch.setValue(Math.round((Math.log(data.pitch) / Math.log(2)) * 12));
+ cui.fftSize.setValue(data.fftSize);
+ cui.winSize.setValue(data.txtWinSize);
+ cui.winRandom.setValue(data.txtRandom);
+ cui.winOverlap.setValue(data.txtOverlap);
+ cui.winType.setValue(data.txtWinType);
+
+ showEditWaveform($("#twine_clipdetailsright"));
+ twine.ui.showPane(twine.ui.pane.CLIP);
+ });
+ var elWaveClip = $("<div />").css({position: "absolute", width: "100%", height: "100%", top: "0px", left: "0px"}).appendTo(clip.element);
+ var elWaveText = $("<div />").css({position: "absolute", width: "100%", height: "100%", top: "0px", left: "0px", "font-size": "var(--fontSizeSmall)", color: "var(--fgColor1)"}).text(data.name).appendTo(clip.element);
+
+ var elResizeLeft = $("<div />").addClass("twine_clip_edge_left").appendTo(clip.element);
+ var elResizeRight = $("<div />").addClass("twine_clip_edge_right").appendTo(clip.element);
+ var elMove = $("<div />").addClass("twine_clip_centre").appendTo(clip.element);
+ var elWaveEdit = $("<div />").css({width: "100%", height: "100%", top: "0px", left: "0px"});
+
+ async function getDataFromTable(key) {
+ async function setFromKey(key) {
+ if (dataMode[key] < 0) return;
+ var value = await app.getCsound().tableGet(datatable, dataMode[key])
+ data[key] = value;
+ }
+
+ for (var k in dataMode) {
+ setFromKey(k);
+ }
+ }
+
+ function setClipAudioUnique(onComplete) {
+ var cbid = app.createCallback(async function(ndata){
+ await getDataFromTable();
+ if (onComplete) onComplete();
+ });
+ app.insertScore("twine_setclipaudiounique", [0, 1, cbid]);
+ }
+
+ function reloadAfterEdit(tables) {
+ twirl.loading.show("Loading");
+ var cbid = app.createCallback(async function(ndata){
+ datatable = ndata.datatable;
+ await getDataFromTable();
+ clip.redraw();
+ twine.setVisible(true);
+ twigs.setVisible(false);
+ twist.setVisible(false);
+ twirl.loading.hide();
+ });
+ var call = [0, 1, cbid, data.clipindex];
+ for (let t of tables) {
+ call.push(t);
+ }
+ app.insertScore("twine_clipreplacetables", call);
+ }
+
+ this.editInTwist = function(asUnique) {
+ if (!window.twist) return twirl.prompt.show("twist is unavailable in this session");
+ function edit() {
+ twist.boot(twine);
+ twist.bootAudio(twine);
+ var tables = [data.fnL];
+ if (data.fnR) tables.push(data.fnR);
+ twist.loadFileFromFtable(data.name, tables, function(ndata){
+ if (ndata.status > 0) {
+ twine.setVisible(false);
+ twist.setVisible(true);
+ }
+ }, reloadAfterEdit);
+ }
+ if (asUnique) {
+ setClipAudioUnique(edit);
+ } else {
+ edit();
+ }
+
+ };
+
+ this.editInTwigs = function(asUnique) {
+ if (!window.twigs) return twirl.prompt.show("twigs is unavailable in this session");
+ function edit() {
+ twigs.boot(twine);
+ var tables = [data.fnL];
+ if (data.fnR) tables.push(data.fnR);
+ twigs.loadFileFromFtable(data.name, tables, function(ndata){
+ if (ndata.status > 0) {
+ twine.setVisible(false);
+ twigs.setVisible(true);
+ }
+ }, reloadAfterEdit);
+ }
+ if (asUnique) {
+ setClipAudioUnique(edit);
+ } else {
+ edit();
+ }
+ };
+
+ this.setData = function(modeString, v, onComplete) {
+ data[modeString] = v;
+ if (dataMode[modeString] < 0) {
+ if (modeString == "name") {
+ elWaveText.text(data.name);
+ }
+ return;
+ }
+
+ function doSetData() {
+ if (!twirl.debug) app.getCsound().tableSet(datatable, dataMode[modeString], v);
+ }
+
+ doSetData();
+ if (onComplete) onComplete();
+ };
+
+ this.getPlaybackArgs = function(cbid, time) {
+ return [(time) ? time: 0, data.playLength, cbid, data.clipindex, data.playLength, clip.channel.getCsChannelName()];
+ };
+
+ this.play = function(onCallback) {
+ var cbid = app.createCallback(function(ndata) {
+ if (onCallback) onCallback(ndata);
+ }, true);
+ app.insertScore("ecp_playback_tst", clip.getPlaybackArgs(cbid));
+ }
+
+ async function getSourceTableData() {
+ var wavedata = [];
+ var tbL = await app.getTable(data.fnL);
+ wavedata.push(tbL);
+ if (data.hasOwnProperty("fnR") && data.fnR > 0) {
+ var tbR = await app.getTable(data.fnR);
+ wavedata.push(tbR);
+ }
+ return wavedata;
+ }
+
+ async function setClipWaveform(noRedraw) {
+ if (!waveformClip) {
+ waveformClip = new Waveform({
+ target: elWaveClip,
+ allowSelect: false,
+ showGrid: false,
+ bgColor: "rgb(255, 255, 255, 0)",
+ fgColor: "#000000"
+ });
+ setTimeout(async function(){
+ var sourceTables = await getSourceTableData();
+ waveformClip.setData(sourceTables, data.duration);
+ }, 100);
+ } else {
+ if (!noRedraw) waveformClip.redraw();
+ }
+ }
+
+ async function showEditWaveform(target) {
+ target.empty().append(elWaveEdit);
+ if (!waveformEdit) {
+ waveformEdit = new Waveform({
+ target: elWaveEdit,
+ allowSelect: true,
+ showGrid: true,
+ latencyCorrection: twirl.latencyCorrection // , markers:
+ });
+ setTimeout(async function(){
+ var sourceTables = await getSourceTableData();
+ waveformEdit.setData(sourceTables, data.duration);
+ }, 100);
+ } else {
+ waveformEdit.redraw();
+ }
+ }
+
+ this.setWarp = function(v) {
+ clip.setData("warp", v);
+ if (!data.warp && !data.loop && data.playLength > data.duration) {
+ data.playLength = data.duration;
+ clip.setSize();
+ }
+ };
+
+ this.setLoop = function(v) {
+ clip.setData("loop", v);
+ if (!data.warp && !data.loop && data.playLength > data.duration) {
+ data.playLength = data.duration;
+ clip.setSize();
+ }
+ };
+
+ this.setPitch = function(semitones) {
+ var pitchRatio = Math.pow(2, (semitones / 12));
+ clip.setData("pitch", pitchRatio);
+ if (data.warpMode == 0 && data.loop == 0 && data.warp == 0) {
+ data.playLength = data.duration / pitchRatio;
+ clip.setSize();
+ }
+ };
+
+ this.setWarpMode = function(v) {
+ var prevMode = data.warpMode;
+ clip.setData("warpMode", v);
+ if (prevMode == 0 && data.warpMode != 0 && !data.loop && !data.warp) {
+ data.playLength = data.duration;
+ clip.setSize();
+ }
+ };
+
+ this.setSize = function(noWaveRedraw) {
+ var width = data.playLength * twine.timeline.pixelsPerBeat;
+ clip.element.css("width", width + "px");
+ setClipWaveform(noWaveRedraw);
+ }
+
+ this.redraw = function(noWaveRedraw) {
+ if (!loaded) return;
+ var b = twine.timeline.beatRegion;
+ clip.setSize(noWaveRedraw);
+ if ((data.position + data.playLength) < b[0] || data.position > b[1]) {
+ return clip.element.hide();
+ }
+
+ var css = {
+ height: clip.channel.height + "px",
+ left: (data.position - b[0]) * twine.timeline.pixelsPerBeat + "px"
+ };
+ if (data.position < b[0]) {
+ css.left = "0px";
+ css.width = (data.playLength - (b[0] - data.position)) * twine.timeline.pixelsPerBeat + "px";
+ }
+
+ clip.element.show().css(css);
+ };
+
+ this.clone = function() {
+ var newData = Object.assign({}, data);
+ newData.id = twine.getNewID();
+ var c = new Clip(twine, newData, clip);
+ clip.channel.addClip(c);
+ app.insertScore("twine_cloneclip", [0, 1, app.createCallback(function(ndata) {
+ datatable = ndata.datatable;
+ c.loadFromDataTable(ndata.datatable, ndata.clipindex);
+ }), clip.data.clipindex]);
+ };
+
+
+ async function loadData(ndata, name, colour, defaultLength) {
+ twirl.loading.show("Loading");
+ if (ndata.status == -1) {
+ return twirl.errorHandler("File not valid");
+ } else if (ndata.status == -2) {
+ return twirl.errorHandler("File too large");
+ }
+ datatable = ndata.data.datatable;
+ await getDataFromTable();
+ data.clipindex = ndata.data.clipindex;
+ if (name) {
+ data.name = name;
+ }
+ if (defaultLength) {
+ data.playLength = data.duration;
+ }
+ elWaveText.text(data.name);
+ if (!colour) colour = twine.randomColour();
+ data.colour = colour;
+ loaded = true;
+ clip.redraw();
+ };
+
+ this.loadFromDataTable = async function(newDatatable, clipindex) {
+ datatable = newDatatable;
+ await getDataFromTable();
+ data.clipindex = clipindex;
+ loaded = true;
+ clip.redraw();
+ };
+
+ this.loadFromFtables = function(name, tables, colour) {
+ twirl.loading.show("Loading");
+ var cbid = app.createCallback(async function(ndata){
+ await loadData(ndata, name, colour);
+ twirl.loading.hide();
+ });
+ var call = [0, 1, cbid];
+ for (let t of tables) {
+ call.push(t);
+ }
+ app.insertScore("twine_loadftables", call);
+ };
+
+ this.loadFromPath = function(path, colour) {
+ twirl.loading.show("Loading");
+ var cbid = app.createCallback(async function(ndata){
+ await loadData(ndata, path, colour, true);
+ twirl.loading.hide();
+ });
+ app.insertScore("twine_loadpath", [0, 1, cbid, path]);
+ };
+
+ function getMaxClipWidth() {
+ var maxWidth = 9999;
+ if (!data.warp && !data.loop) {
+ maxWidth = data.duration * twine.timeline.pixelsPerBeat;
+ }
+ return maxWidth;
+ }
+
+ clip.movement = {
+ pos1: 0, pos2: 0, pos3: 0, pos4: 0, offset: 0, startX: 0, startY: 0, clipWidth: 0,
+ clipLeft: 0, clipTop: 0, lastLeft: 0, isCopying: false,
+ mouseDown: function(e, dragType) {
+ e.preventDefault();
+ twine.timeline.selectedClips.forEach(function(c){
+ c.movement.mouseDownInner(e, dragType);
+ });
+ },
+ mouseDownInner: function(e, dragType) {
+ e.preventDefault();
+ this.isCopying = false;
+ this.offset = clip.element.offset().left
+ this.clipWidth = parseFloat(clip.element.css("width"));
+ this.clipTop = parseFloat(clip.element.css("top"));
+ this.clipLeft = parseFloat(clip.element.css("left"));
+ this.startX = e.clientX - e.target.getBoundingClientRect().left;
+ this.startY = e.clientY - e.target.getBoundingClientRect().top;
+ this.pos3 = e.clientX;
+ this.pos4 = e.drag;
+ this.lastLeft = (this.pos3 - this.startX - clip.channel.offset.left);
+ $("html").on("mousemove", function(e){
+ clip.movement.doDrag(e, dragType);
+ }).on("mouseup", this.endDrag);
+ $("#container").css("cursor", "e-resize");
+ },
+ endDrag: function(e) {
+ e.preventDefault();
+ this.isCopying = false;
+ $("html").off("mouseup", this.endDrag).off("mousemove"); //, this.doDrag);
+ $("#container").css("cursor", "pointer");
+ },
+ doDrag: function(e, dragType) {
+ e.preventDefault();
+ twine.timeline.selectedClips.forEach(function(c){
+ c.movement.doDragInner(e, dragType);
+ });
+ },
+ doDragInner: function (e, dragType) {
+ e.preventDefault();
+ this.pos1 = this.pos3 - e.clientX;
+ this.pos2 = this.pos4 - e.clientY;
+ this.pos3 = e.clientX;
+ this.pos4 = e.clientY;
+
+ if (dragType == "right") {
+ var maxWidth = getMaxClipWidth();
+ var newWidth = (this.pos3 - this.startX - clip.channel.offset.left - this.clipLeft);
+ newWidth = twine.timeline.roundToGrid(newWidth);
+ if (newWidth > maxWidth) newWidth = maxWidth;
+ if (newWidth < minWidth) newWidth = minWidth;
+ data.playLength = newWidth / twine.timeline.pixelsPerBeat;
+ clip.element.css("width", newWidth + "px");
+
+ } else if (dragType == "left") {
+ var maxWidth = getMaxClipWidth();
+ var left = (this.pos3 - this.startX - clip.channel.offset.left);
+ left = twine.timeline.roundToGrid(left);
+ if (left < 0) left = 0;
+ var newWidth = (clipWidth - left) + this.clipLeft;
+ var cWidth, cLeft;
+ if (newWidth < minWidth) {
+ cWidth = minWidth, this.clipLeft + minWidth; //(minWidth - left) + clipLeft;
+ } else if (newWidth > maxWidth) {
+ cWidth = maxWidth, cLeft = this.lastLeft;
+ } else {
+ lastLeft = left;
+ cWidth = newWidth, cLeft = left;
+ }
+ clip.element.css({width: cWidth + "px", left: cLeft + "px"});
+
+ data.playLength = newWidth / twine.timeline.pixelsPerBeat;
+ data.position = Math.min(0, (left / twine.timeline.pixelsPerBeat) + twine.timeline.beatRegion[0]);
+
+ } else {
+ if (e.ctrlKey && !this.isCopying) {
+ this.isCopying = true;
+ clip.clone();
+ }
+
+ //var left = (this.pos3 - this.startX - clip.channel.offset.left);
+ var left = (this.pos3 - this.clipLeft - clip.channel.offset.left);
+ left = twine.timeline.roundToGrid(left);
+
+ //var top = (this.pos4 - this.startY - clip.channel.offset.top);
+ var top = (this.pos4 - this.clipTop - clip.channel.offset.top);
+ if (top > clip.channel.height) {
+ if (clip.channel.index + 1 < twine.timeline.channels.length) {
+ clip.channel.removeClip(clip);
+ twine.timeline.channels[clip.channel.index + 1].addClip(clip);
+ }
+ } else if (top < 0) {
+ if (clip.channel.index -1 >= 0) {
+ clip.channel.removeClip(clip);
+ twine.timeline.channels[clip.channel.index - 1].addClip(clip);
+ }
+ }
+ if (left < 0) left = 0;
+ //if (left > clip.channel.width - clipWidth) left = clip.channel.width - clipWidth;
+ if (left > clip.channel.width) left = clip.channel.width;
+ data.position = (left / twine.timeline.pixelsPerBeat) + twine.timeline.beatRegion[0];
+ clip.element.css("left", left + "px");
+ }
+ } // end doDragInner
+ };
+
+ elMove.mousedown(clip.movement.mouseDown);
+ elResizeRight.mousedown(function(e){
+ clip.movement.mouseDown(e, "right");
+ });
+ elResizeLeft.mousedown(function(e){
+ clip.movement.mouseDown(e, "left");
+ });
+
+}; \ No newline at end of file
diff --git a/site/app/twine/_hOLD/index.html b/site/app/twine/_hOLD/index.html
new file mode 100644
index 0000000..5e9e2b4
--- /dev/null
+++ b/site/app/twine/_hOLD/index.html
@@ -0,0 +1,863 @@
+<html>
+<head>
+<style type="text/css">
+
+body {
+ font-family: Arial, sans-serif;
+ font-size: 11pt;
+}
+
+#header {
+ position: absolute;
+ top: 0px;
+ height: 30px;
+ left: 0px;
+ width: 100%;
+ background-color: #545454;
+}
+
+#headertable {
+ height: 30px;
+}
+
+#clipdetails {
+ display: none;
+}
+
+
+#start {
+ z-index: 200;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: #343434;
+}
+
+#start_centre {
+ z-index: 201;
+ position: relative;
+ height: 200px;
+}
+
+#start_invoke {
+ z-index: 202;
+ margin: 0;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ font-size: 72pt;
+ cursor: pointer;
+}
+
+#main {
+ position: absolute;
+ top: 30px;
+ height: 100%;
+ left: 0px;
+ width: 100%;
+}
+
+#timeline {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 70%
+}
+
+.timelinetext {
+ font-size: 8pt;
+ opacity: 0.9;
+ position: absolute;
+ color: #121212;
+ top: 2px;
+}
+
+.timelinemarker {
+ width: 1px;
+ position: absolute;
+ background-color: #bdbdbd;
+ opacity: 0.9;
+ height: 100%;
+ top: 0px;
+ z-index: 50;
+}
+
+.smbut {
+ font-size: 8pt;
+ background-color: #b5b01d;
+ border: 1px solid black;
+}
+
+
+
+#details {
+ position: absolute;
+ left: 0px;
+ top: 70%;
+ width: 100%;
+ height: 30%;
+ background-color: #dcdcdc;
+}
+
+#clipdetailsleft {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 30%;
+ height: 100%;
+ background-color: #acacac;
+}
+
+#clipdetailsright {
+ position: absolute;
+ left: 30%;
+ top: 0px;
+ width: 70%;
+ height: 100%;
+ background-color: #cacaca;
+}
+
+.channel {
+ height: 30px;
+ width: 100%;
+ border-bottom: 1px solid #aaaaaa;
+ left: 0px;
+}
+
+.channeldetails {
+ position: absolute;
+ height: 30px;
+ left: 0px;
+ width: 10%;
+}
+
+.channelclips {
+ position: absolute;
+ height: 30px;
+ left: 10%;
+ width: 90%;
+ background-color: #cdcdcd;
+}
+
+.clip {
+ user-select: none;
+ position: absolute;
+ padding: 0px;
+ cursor: move;
+ z-index: 70;
+ width: 50px;
+ height: 30px;
+ color: #000000;
+ overflow: hidden;
+}
+</style>
+<script type="text/javascript" src="/code/jquery.js"></script>
+<script type="text/javascript" src="../base/base.js"></script>
+<script type="text/javascript" src="input-knobs.js"></script>
+<script type="text/javascript">
+
+window.app = new CSApplication(
+{
+ csdUrl: "timeline.csd",
+ files: ["test.mp3"],
+ csOptions: ["--omacro:ECP_NORECORDING=1"],
+ onPlay: function () {
+ $("#start").hide();
+ runTest();
+ }
+}
+);
+
+var clips = {};
+var channels = [];
+var maxID = 0;
+var chanHeight = 30;
+
+window.csseq = {};
+
+function getID() {
+ return maxID++;
+}
+
+
+var TimelineGrid = function(data) {
+ var self = this;
+
+ if (!data) {
+ var data = {
+ snapToGrid: true,
+ gridVisible: true,
+ timeSigMarker: 4,
+ resolution: null,
+ startBeat: 1,
+ endBeat: 16,
+ bpm: 120
+ };
+ }
+
+ this.getSaveData = function() {
+ return data;
+ };
+
+ function calcViewport() {
+ data.minLeft = (window.screen.width / 100) * 10;
+ var width = window.screen.width - data.minLeft;
+ var beats = data.endBeat - data.startBeat;
+ data.pixelsPerBeat = width / beats;
+ return {
+ minLeft: data.minLeft,
+ width: width,
+ beats: beats,
+ pixelsPerBeat: Math.round(data.pixelsPerBeat)
+ }
+ }
+
+ function draw() {
+ $(".timelinemarker").remove();
+ $(".timelinetext").remove();
+ if (!data.gridVisible) {
+ return;
+ }
+
+ var target = $("#timeline");
+ var geometry = calcViewport();
+
+ var beat = data.startBeat;
+
+ var width;
+ var fontWeight;
+ for (var x = geometry.minLeft; x < window.screen.width; x += geometry.pixelsPerBeat) {
+ if ((beat - 1) % data.timeSigMarker == 0) {
+ width = 2;
+ fontWeight = "bold";
+ } else {
+ width = 1;
+ fontWeight = "normal";
+ }
+ $("<div />").attr("class", "timelinemarker").appendTo(target).css("width", width).css("left", x);
+ $("<div />").attr("class", "timelinetext").appendTo(target).css("font-weight", fontWeight).css("left", x + 2).text(beat);
+ beat ++;
+ }
+ }
+
+ Object.defineProperty(this, "startBeat", {
+ get: function() { return data.startBeat; },
+ set: function(x) {
+ data.startBeat = x;
+ draw();
+ }
+ });
+
+ Object.defineProperty(this, "bpm", {
+ get: function() { return data.bpm; },
+ set: function(x) {
+ data.bpm = x;
+ app.insertScore("ecpweb_setbpm", [0, 1, data.bpm]);
+ }
+ });
+
+ Object.defineProperty(this, "endBeat", {
+ get: function() { return data.startBeat; },
+ set: function(x) {
+ data.startBeat = x;
+ draw();
+ }
+ });
+
+ Object.defineProperty(this, "minLeft", {
+ get: function() { return data.minLeft; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "pixelsPerBeat", {
+ get: function() { return data.pixelsPerBeat; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "snapToGrid", {
+ get: function() { return data.snapToGrid; },
+ set: function(x) {
+ data.snapToGrid = (x == 1);
+ }
+ });
+
+ Object.defineProperty(this, "gridVisible", {
+ get: function() { return data.gridVisible; },
+ set: function(x) {
+ data.gridVisible = (x == 1);
+ draw();
+ }
+ });
+
+
+
+ draw();
+};
+
+
+var Sequencer = function(data) {
+ var self = this;
+ var gridSnap = 0;
+ var timeScale = 1;
+
+ if (!data) {
+ var data = {
+ tempo: 120,
+ playing: false
+ };
+ }
+
+ this.userImportedFiles = [];
+
+ this.setTempo = function(v) {
+ insertScore("ecpweb_setglobal", [0, 1, 0, v]);
+ };
+
+ this.getSaveData = function() {
+ var sdata = {"sequencer": data, "channels": [], "clips": {}};
+ for (var x in channels) {
+ sdata.channels.push(channels[x].getSaveData());
+ }
+ for (var x in clips) {
+ sdata.clips[x] = clips[x].getSaveData();
+ }
+ return sdata;
+ };
+
+ this.loadSaveData = function(v) {
+ data = v.sequencer;
+ for (var x in v.channels) {
+ new Channel(v.channels[x]);
+ }
+ };
+
+ Object.defineProperty(this, "playing", {
+ get: function() { return data.playing; },
+ set: function(x) {
+ data.playing = x;
+ }
+ });
+};
+
+
+var Channel = function(data) {
+ var self = this;
+ channels.push(this);
+
+ if (!data) {
+ var index = channels.length;
+ var data = {
+ name: "Channel " + index,
+ index: index
+ };
+ } else {
+ var index = data.index;
+ }
+
+ var element = $("<div />").attr("id", "channel" + index).attr("class", "channel").appendTo("#timeline").append(
+ $("<div />").attr("id", "channeldetails" + index).attr("class", "channeldetails").text(data.name)
+ ).append(
+ $("<div />").attr("id", "channelclips" + index).attr("class", "channelclips")
+ );
+};
+
+var Clip = function(channel, data, parent) {
+ var self = this;
+ var loaded = false;
+ var hasTwin = (parent) ? true : false;
+ this.waveform = (parent) ? parent.waveform : null;
+
+ if (!data) {
+ var id = getID();
+ var data = {
+ name: "Clip " + id,
+ channel: channel,
+ id: id,
+ clipindex: null, // needed here?
+ colour: "#" + (Math.random() * 0xFFFFFF << 0).toString(16),
+ position: 0,
+ };
+ }
+
+ clips[data.id] = this;
+ var element = $("<div />").attr("class", "clip").attr("id", "clip" + data.id).text(data.name).click(function() {
+ csseq.selectedClip = self;
+ $("#clipdetails").show();
+ $("#clip_name").val(data.name);
+ $("#clip_colour").val(data.colour);
+ $("#clipdetailsright").empty().append(self.waveform);
+
+ }).css("top", (channel * chanHeight) + "px").css("background-color", data.colour).mousedown(handle_mousedown)
+ .css("left", ((data.position * csseq.timeline.pixelsPerBeat)) + "px")
+ .appendTo($("#channelclips" + channel));
+ // resizable()
+
+ Object.defineProperty(this, "colour", {
+ get: function() { return data.colour; },
+ set: function(x) {
+ data.colour = x;
+ element.css("background-color", data.colour);
+ }
+ });
+
+
+// debug
+this.ddata = data;
+ var dataMode = {
+ divisionsPerBeat: 2,
+ duration: 3,
+ beatsLength: 4,
+ utilisedLength: 5,
+ warpMode: 6,
+ pitch: 7,
+ amp: 8,
+ fftSize: 9,
+ txtWinSize: 10,
+ txtRandom: 11,
+ txtOverlap: 12,
+ loop: 13,
+ warp: 14,
+ txtWinType: 15,
+ // warp points are 16 + in table
+
+ position: -1,
+ name: -2,
+ soundPath: -3,
+ channel: -4
+ };
+
+ function getDataModeFromNum(v) {
+ for (var k in dataMode) {
+ if (dataMode[k] == v) {
+ return k;
+ }
+ }
+ }
+
+ for (let x in dataMode) {
+ Object.defineProperty(this, x, {
+ get: function() { return data[x] },
+ set: function(v) {
+ self.setData(x, v);
+ }
+ });
+ }
+
+ /*// v should become defunct
+ Object.defineProperty(this, "name", {
+ get: function() { return data.name; },
+ set: function(x) {
+ data.name = x;
+ element.text(data.name);
+
+ // self.setData("name", x);
+ }
+ });*/
+
+
+ /*
+ function getData() {
+ var cbid = app.createCallback(function(ndata) {
+ for (var x in ndata.data) {
+ data[x] = ndata.data[x];
+ }
+ });
+ app.insertScore("ecpweb_getdata", [0, 1, cbid, clipindex]);
+ }*/
+
+ this.setData = function(modeString, v) {
+ var cbid = app.createCallback(function(ndata) {
+ if (ndata.hasOwnProperty("clipindex")) {
+ data.clipindex = ndata.clipindex;
+ hasTwin = false;
+ }
+ data[modeString] = v;
+ if (modeString == "name") {
+ element.text(data.name);
+ }
+ });
+ app.insertScore("ecpweb_setdata",
+ [0, 1, cbid, data.id, dataMode[modeString], v, ((hasTwin) ? 1 : 0)]
+ ); // having ecp_cloneclip in if needed
+ }
+
+ this.play = function() {
+ var cbid = app.createCallback(function(ndata) {
+ console.log(ndata);
+ });
+ app.insertScore("ecpseq_playclip", [0, 1, cbid, data.id]);
+ }
+
+ this.loadTest = function() {
+ self.loadFromPath("test.mp3");
+ };
+
+ async function makeWaveform(tablenum) {
+ var width = 300;
+ var height = 150;
+ var tabledata = await app.getCsound().tableCopyOut(tablenum);
+ self.waveform = $("<canvas />", {"class": "waveform"}).width(width).height(height);
+ var ctx = self.waveform[0].getContext("2d");
+ var widthstep = tabledata.length / width;
+ var val;
+ ctx.fillStyle = "#88ff88";
+ //ctx.beginPath();
+ ctx.moveTo(0, height * 0.5);
+ for (var x = 0; x < tabledata.length; x++) {
+ val = (tabledata[x] + 1) * 0.5;
+ ctx.lineTo(x * widthstep, val * height);
+ }
+ //ctx.closePath();
+ ctx.stroke();
+ app.insertScore("ecpweb_tabdestroy", [0, 1, tablenum]);
+ }
+
+ function setSize() {
+ var beattime = 60 / csseq.timeline.bpm;
+ var width = (data.duration / beattime) * csseq.timeline.pixelsPerBeat;
+ element.css("width", width + "px");
+ }
+
+ this.loadFromPath = function(path, userImported) {
+ var cbid = app.createCallback(function(ndata) {
+ for (var x in ndata.data) {
+ var key = getDataModeFromNum(x);
+ data[key] = ndata.data[x];
+ if (key == "name") {
+ element.text(data.name);
+ }
+ }
+ data.soundPath = path;
+ makeWaveform(ndata.waveform).then(() => {
+ if (userImported) {
+ csseq.seq.userImportedFiles.push(path);
+ }
+ loaded = true;
+ setSize();
+ });
+
+ });
+ app.insertScore("ecpweb_loadsound", [0, 1, cbid, path, data.channel, data.position]);
+ };
+
+ this.clone = function() {
+ var newdata = Object.assign({}, data);
+ newdata.id = getID();
+ return new Clip(data.channel, newdata, self);
+ };
+
+ this.randomiseWarpPoints = function(mode) { // mode is -1, 0 or 1 I think..
+ if (!mode) mode = 0;
+ var cbid = app.createCallback(function(ndata) {
+ notify("OK");
+ });
+ app.insertScore("ecpweb_randomisewarppoints", [0, 1, cbid, mode]);
+ };
+
+
+ function handle_mousedown(e){
+ var originalPosition = data.position;
+ window.my_dragging = {};
+ my_dragging.pageX0 = e.pageX;
+ my_dragging.pageY0 = e.pageY;
+ my_dragging.elem = this;
+ my_dragging.offset0 = $(this).offset();
+ var isCopying = e.ctrlKey;
+
+ if (isCopying) { // && loaded
+ self.clone();
+ }
+
+ function handle_dragging(e){
+ var left = my_dragging.offset0.left + (e.pageX - my_dragging.pageX0);
+
+ var minLeft = (window.screen.width / 100) * 10;
+
+ //round
+ // left = Math.ceil(left / pixelsPerBeat) * pixelsPerBeat;
+
+ if (csseq.timeline.snapToGrid) {
+ left = (Math.ceil((left - minLeft) / csseq.timeline.pixelsPerBeat) * csseq.timeline.pixelsPerBeat) + minLeft;
+ }
+
+
+ if (left < minLeft) {
+ left = minLeft
+ }
+ data.position = csseq.timeline.startBeat + ((left - minLeft) / csseq.timeline.pixelsPerBeat);
+
+ var top = my_dragging.offset0.top + (e.pageY - my_dragging.pageY0);
+ top = Math.ceil(top / chanHeight) * chanHeight;
+ var maxTop = chanHeight * channels.length;
+ if (top > maxTop) {
+ top = maxTop;
+ } else if (top < 30) {
+ top = 30;
+ }
+
+
+ $(my_dragging.elem)
+ .offset({top: top, left: left});
+ }
+
+ function handle_mouseup(e){
+ $("body")
+ .off("mousemove", handle_dragging)
+ .off("mouseup", handle_mouseup);
+ if (data.position != originalPosition) {
+ self.setData("position", data.position);
+ }
+ }
+
+ $("body").on("mouseup", handle_mouseup).on("mousemove", handle_dragging);
+ }
+
+ /*
+ this.setLength = function(v) {
+ setData("length", v);
+ }; // now made generic above.
+ */
+};
+
+function runTest() {
+ new Channel();
+ new Channel();
+ new Channel();
+ new Channel();
+ new Channel();
+ new Channel();
+}
+
+var ClipDetailPane = function() {
+ var self = this;
+};
+
+
+
+$(function() {
+ csseq.timeline = new TimelineGrid();
+ csseq.seq = new Sequencer();
+
+
+ $(".smbut").attr("value", 0).click(function(){
+ var val;
+ var col;
+ if ($(this).attr("value") == 0) {
+ val = 1;
+ col = "#f2e30c";
+ } else {
+ val = 0;
+ col = "#b5b01d";
+ }
+ $(this).attr("value", val).css("background-color", col);
+ });
+
+ $("#head_snap").click(function() {
+ csseq.timeline.snapToGrid = $(this).attr("value");
+ });
+
+ $("#head_showgrid").click(function() {
+ csseq.timeline.gridVisible = $(this).attr("value");
+ });
+
+ $("#head_play").click(function() {
+ var bt = $(this);
+ if (csseq.seq.playing) {
+ app.insertScore("ecpseq_stop");
+ } else {
+ var cbid = app.createCallback(function(data) {
+ var text, val, col;
+ if (data.state == "playing") {
+ csseq.seq.playing = true;
+ text = "Stop";
+ val = 1;
+ col = "#f2e30c";
+ } else if (data.state == "stopped") {
+ csseq.seq.playing = false;
+ text = "Play";
+ val = 0;
+ col = "#b5b01d";
+ app.removeCallback(data.cbid);
+ }
+ bt.text(text).attr("value", val).css("background-color", col);
+ }, true);
+ app.insertScore("ecpseq_play", [0, 36000, cbid, csseq.timeline.startBeat]);
+ }
+ });
+
+
+ $("#clip_colour").change(function(){
+ csseq.selectedClip.colour = $(this).val();
+ });
+
+
+ var clip_pitchLocked = false;
+ $("#clip_pitch").change(function(){
+ if (!clip_pitchLocked) {
+ var val = $(this).val();
+ csseq.selectedClip.pitch = Math.pow(2, (val / 12));
+ $("#clip_pitchtext").val(val);
+ }
+ });
+
+ /*
+
+ var onChangeID = {
+ clip_warp: "warp",
+ clip_loop: "loop",
+ clip_amp: "amp",
+ clip_readtype: "warpMode",
+ };
+
+ for (let el in onChangeID) {
+ let obj = $("#" + el);
+ let trg = onChangeID[el];
+ var func;
+ if (typeof(trg) == "string") {
+ func = () => {
+ csseq.selectedClip[trg] = $(this).val();
+ };
+ } else {
+ func = trg;
+ }
+ obj.change(func);
+ }
+
+ */
+
+
+ $("#clip_pitchtext").change(function(){
+ clip_pitchLocked = true;
+ $("#clip_pitch").val($(this).val());
+ clip_pitchLocked = false;
+ });
+
+ $("#clip_name").change(function(){
+ csseq.selectedClip.name = $(this).val(); // setdata?
+ });
+
+ $("#clip_amp").change(function(){
+ csseq.selectedClip.amp = $(this).val();
+ });
+
+ $("#clip_warp").click(function() {
+ csseq.selectedClip.warp = $(this).val();
+ });
+
+ $("#clip_loop").click(function() {
+ csseq.selectedClip.loop = $(this).val();
+ });
+
+ $("#clip_readtype").change(function() {
+ csseq.selectedClip.warpMode = $(this).val();
+ });
+
+ $("#start_invoke").click(function() {
+ app.play();
+ });
+
+ async function handleFileDrop(e) {
+ e.preventDefault();
+ for (const item of e.originalEvent.dataTransfer.files) {
+ //item.size;
+ //item.type "audio/mpeg";
+ var content = await item.arrayBuffer();
+ const buffer = new Uint8Array(content);
+ await app.getCsound().fs.writeFile(item.name, buffer);
+ var x = new Clip(1); // determine channel
+ x.loadFromPath(item.name, true);
+ }
+ }
+
+ $("#timeline").on("dragover", function(e) {
+ e.preventDefault();
+ //e.stopPropagation();
+ e.originalEvent.dataTransfer.effectAllowed = "all";
+ e.originalEvent.dataTransfer.dropEffect = "copy";
+ //styling / clip view
+ return false;
+ }).on("dragleave", function(e) {
+ e.preventDefault();
+ //e.stopPropagation();
+ // remove styling / clip view
+ }).on("drop", function(e) {
+ handleFileDrop(e);
+ });
+
+});
+/*
+divisionsPerBeat: 2,
+ duration: 3,
+ beatsLength: 4,
+ utilisedLength: 5,
+ warpMode: 6,
+ pitch: 7,
+ amp: 8,
+ fftSize: 9,
+ txtWinSize: 10,
+ txtRandom: 11,
+ txtOverlap: 12,
+ loop: 13,
+ warp: 14,
+ txtWinType: 15,
+*/
+</script>
+</head>
+<body>
+<div id="start">
+ <div id="start_centre">
+ <p id="start_invoke">Press to begin</p>
+ </div>
+</div>
+<div id="header">
+ <table id="headertable"><tbody><tr>
+ <td><button id="head_play" class="smbut">Play</button></td>
+ <td><button id="head_snap" class="smbut">Snap</button></td>
+ <td><button id="head_showgrid" class="smbut">Grid</button></td>
+ </tr></tbody></table>
+</div>
+<div id="main">
+ <div id="timeline"></div>
+ <div id="details">
+ <div id="clipdetails">
+ <div id="clipdetailsleft">
+ <table><tbody>
+ <tr>
+ <td><input type="color" id="clip_colour"></td>
+ <td><input type="text" id="clip_name"></td>
+ </tr>
+ <tr>
+ <td>Read type</td>
+ <td><select id="clip_readtype">
+ <option value="0">Repitch</option>
+ <option value="1">Grain</option>
+ <option value="2">FFTab</option>
+ <option value="3">FFT</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><button id="clip_warp" class="smbut">Warp</button></td>
+ <td><button id="clip_loop" class="smbut">Loop</button></td>
+ </tr>
+ <tr>
+ <td>
+ <input id="clip_pitch" class="input-knob" type="range" data-src="image/knob70.png" data-sprites="100" style="width:64px; height: 64px; background-image: url('image/knob70.png'); background-size: 100%; background-position: 0px -3200px;" min="-24" max="24" step="1" value="0"/><br />
+ <input id="clip_pitchtext" type="number" min="-24" max="24" step="1" value="0" />
+ </td>
+ <td>
+ <input id="clip_amp" class="input-knob" type="range" data-src="image/knob70.png" data-sprites="100" style="width:64px; height: 64px; background-image: url('image/knob70.png'); background-size: 100%; background-position: 0px -3200px;" min="0" max="1" step="0.000001" value="1"/>
+ </td>
+ </tr>
+ </tbody></table>
+ </div>
+ <div id="clipdetailsright"></div>
+ </div>
+ </div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/site/app/twine/_hOLD/index_old.html b/site/app/twine/_hOLD/index_old.html
new file mode 100644
index 0000000..351e50b
--- /dev/null
+++ b/site/app/twine/_hOLD/index_old.html
@@ -0,0 +1,102 @@
+<html>
+ <head>
+ <script type="text/javascript" src="/code/jquery.js"></script>
+ <script type="text/javascript" src="../base/base.js"></script>
+ <script type="text/javascript">
+ window.app = new CSApplication(
+ {
+ csdUrl: "timeline.csd",
+ files: ["test.mp3"],
+ onPlay: function () {
+ $("#start").hide();
+ runTest();
+ }
+ }
+ );
+
+ function toggle(target, channel, multiplier) {
+ var item = new Nexus.Toggle(target);
+ item.on("change", function(v) {
+ app.setControlChannel(channel, (v ? 1 : 0) * multiplier);
+ });
+ }
+
+ function slider(target, channel, multiplier) {
+ var item = new Nexus.Slider(target);
+ item.on("change", function(v) {
+ app.setControlChannel(channel, v * multiplier);
+ });
+ }
+
+ function dial(target, channel, multiplier) {
+ var item = new Nexus.Dial(target);
+ item.on("change", function(v) {
+ app.setControlChannel(channel, v * multiplier);
+ });
+ }
+
+ function makeRow(tbody, name, text, widgetType, multiplier) {
+ var row = $("<tr />");
+ for (var x = 0; x < 4; x++) {
+ var id = name + (x + 1);
+ var cell = $("<td />").appendTo(row);
+ var widget = $("<div />").attr("id", id).appendTo(cell);
+ var label = $("<div />").text(text).appendTo(cell);
+ }
+ tbody.append(row);
+ for (var x = 0; x < 4; x++) {
+ var id = name + (x + 1);
+ widgetType("#" + id, id, multiplier);
+ }
+ }
+
+ function makeMixer() {
+ var maxeq = 2;
+ var maxsend = 2;
+ var maxamp = 1.5;
+ var items = {
+ compmodel: ["Component model", toggle, 1],
+ lowcut: ["Low cut", toggle, 1],
+ eqhigh: ["EQ high", dial, maxeq],
+ eqmid: ["EQ mid", dial, maxeq],
+ eqlow: ["EQ low", dial, maxeq],
+ auxA: ["Aux 1", dial, maxsend],
+ preA: ["Aux 1 prefade", toggle, 1],
+ auxB: ["Aux 2", dial, maxsend],
+ preB: ["Aux 2 prefade", toggle, 1],
+ auxC: ["Aux 3", dial, maxsend],
+ preC: ["Aux 3 prefade", toggle, 1],
+ auxD: ["Aux 4", dial, maxsend],
+ preD: ["Aux 4 prefade", toggle, 1],
+ gain: ["Gain", dial, 1.5],
+ };
+ var tbl = $("<table />").appendTo($("#mixer"));
+ var tbody = $("<tbody />").appendTo(tbl);
+ for (var k in items) {
+ makeRow(tbody, k, items[k][0], items[k][1], items[k][2]);
+ }
+ }
+
+ $(function() {
+ $("#start").click(function() {
+ app.play();
+ });
+
+ $("#callback").click(function() {
+ var cbid = app.createCallback(function(data) {
+ $("#callback_response").text("Response from CBID " + data.cbid);
+ });
+
+ app.insertScore("cbtest", [0, 1, cbid]);
+ });
+ });
+ </script>
+ </head>
+ <body>
+ <button id="start">Start</button>
+ <!--<button id="callback">Callback test</button>
+ <div id="callback_response"></div>
+ -->
+ <div id="mixer"></div>
+ </body>
+</html> \ No newline at end of file
diff --git a/site/app/twine/_hOLD/index_workingold.html b/site/app/twine/_hOLD/index_workingold.html
new file mode 100644
index 0000000..21812d7
--- /dev/null
+++ b/site/app/twine/_hOLD/index_workingold.html
@@ -0,0 +1,1251 @@
+<html>
+<head>
+<title>twine</title>
+<link rel="stylesheet" href="../base/theme.css">
+<link rel="stylesheet" href="../twirl/twirl.css">
+<style type="text/css">
+
+body {
+ font-family: var(--fontFace);
+ color: var(--fgColor1);
+ font-size: var(--fontSizeDefault);
+ user-select: none;
+ cursor: arrow;
+ font-size: 11pt;
+}
+
+#twine_menubar {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ right: 0px;
+ height: 20px;
+ z-index: 6;
+}
+
+.transparentinput {
+ font-size: var(--fontSizeSmall);
+ background-color: var(--bgColor3);
+ color: var(--fgColor2);
+ border: none;
+}
+
+.slider {
+ background: var(--bgColor3);
+ accent-color: var(--fgColor2);
+}
+
+#twine_header {
+ position: absolute;
+ top: 20px;
+ height: 30px;
+ left: 0px;
+ width: 100%;
+ background-color: var(--bgColor1);
+ overflow: none;
+}
+
+.drag_selection {
+ position: fixed;
+ background-color: #323232;
+ opacity: 0.5;
+ z-index: 101;
+}
+
+#twine_headertable {
+ height: 30px;
+}
+
+#twine_clipdetails {
+ display: none;
+}
+
+#twine_channeldetailslow {
+ display: none;
+}
+
+#loading {
+ opacity: 0.7;
+ background-color: #767676;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ display: none;
+ z-index: 666;
+}
+
+#loading_centre {
+ z-index: 667;
+ position: relative;
+ height: 200px;
+}
+
+#loading_text {
+ font-size: 24pt;
+ margin: 0;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ font-size: 72pt;
+ text-align: center;
+}
+
+#start {
+ z-index: 200;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: #343434;
+}
+
+#start_centre {
+ z-index: 201;
+ position: relative;
+ height: 200px;
+}
+
+#start_invoke {
+ z-index: 202;
+ margin: 0;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ font-size: 72pt;
+ cursor: pointer;
+}
+
+#twine_main {
+ position: absolute;
+ top: 50px;
+ bottom: 0px;
+ left: 0px;
+ width: 100%;
+}
+
+#twine_timeline {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 70%;
+}
+
+#twine_timelineoverlay {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ opacity: 0.1;
+ background-color: #ffffff;
+}
+
+
+.timelinetext {
+ font-size: var(--fontSizeSmall);
+ opacity: 0.9;
+ position: absolute;
+ color: var(--fgColor3);
+ top: 2px;
+ z-index: 21;
+}
+
+.timelinemarker {
+ width: 1px;
+ position: absolute;
+ background-color: #bdbdbd;
+ opacity: 0.9;
+ height: 100%;
+ top: 0px;
+ z-index: 20;
+}
+
+.smbut {
+ font-size: 8pt;
+ background-color: var(--bgColor2);
+ color: var(--fgColor2);
+ border: 1px solid black;
+}
+
+.knoblabel {
+ font-size: 8pt;
+ text-align: center;
+}
+
+#twine_details {
+ position: absolute;
+ left: 0px;
+ bottom: 0px;
+ width: 100%;
+ height: 30%;
+ background-color: var(--bgColor1);
+}
+
+#twine_clipdetailsleft {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 30%;
+ height: 100%;
+ font-size: var(--fontSizeSmall);
+ background-color: var(--bgColor2);
+}
+
+#twine_clipdetailsright {
+ position: absolute;
+ left: 30%;
+ top: 0px;
+ width: 70%;
+ height: 100%;
+ background-color: var(--bgColor3);
+}
+
+.channel {
+ height: 30px;
+ width: 100%;
+ border-bottom: 1px solid #aaaaaa;
+ left: 0px;
+}
+
+.channeldetails {
+ user-select: none;
+ position: absolute;
+ height: 30px;
+ left: 0px;
+ width: 10%;
+}
+
+.channelclips {
+ position: absolute;
+ height: 30px;
+ left: 10%;
+ width: 90%;
+ background-color: var(--bgColor2);
+}
+
+.clip {
+ user-select: none;
+ position: absolute;
+ padding: 0px;
+ cursor: move;
+ z-index: 70;
+ width: 50px;
+ height: 30px;
+ background-color: #CC3333;
+ color: #000000;
+ overflow: hidden;
+}
+</style>
+<script type="text/javascript" src="/code/jquery.js"></script>
+<script type="text/javascript" src="../base/base.js"></script>
+<script type="text/javascript" src="../twirl/twirl.js"></script>
+<script type="text/javascript" src="../base/waveform.js"></script>
+<script type="text/javascript" src="ui-elements.js"></script>
+<script type="text/javascript" src="/code/input-knobs.js"></script>
+<script type="text/javascript">
+
+
+
+var clips = {};
+var channels = [];
+var maxID = 0;
+var chanHeight = 30;
+
+
+function getID() {
+ return maxID++;
+}
+
+
+
+function setupUI(twine) {
+ var ui = {};
+ ui.clip = {
+ audition: new PlayButton({
+ target: "twine_clip_audition",
+ change: function(v, obj) {
+ if (obj.state == true) {
+ twine.selectedClip.play(function(ndata) {
+ if (ndata.status == 0) {
+ obj.setValue(false);
+ app.removeCallback(ndata.cbid);
+ }
+ });
+ } else {
+ app.insertScore("ecpseq_stop");
+ }
+ }
+ }),
+ name: new TextInput({
+ target: "twine_clip_name",
+ change: function(val) {
+ twine.selectedClip.setData("name", val);
+ }
+ }),
+ colour: new ColourInput({
+ target: "twine_clip_colour",
+ change: function(val) {
+ twine.selectedClip.colour = val;
+ }
+ }),
+ warp: new StandardToggle({
+ label: "Warp",
+ target: "twine_clip_warp",
+ change: function(val) {
+ twine.selectedClip.setData("warp", val);
+ twine.selectedClip.setSize();
+ }
+ }),
+ loop: new StandardToggle({
+ label: "Loop",
+ target: "twine_clip_loop",
+ change: function(val) {
+ twine.selectedClip.setData("loop", val);
+ twine.selectedClip.setSize();
+ }
+ }),
+ readType: new ComboBox({
+ target: "twine_clip_readtype",
+ options: [
+ "Repitch", "Grain", "FFTab", "FFT"
+ ],
+ change: function(val) {
+ twine.selectedClip.setData("warpMode", val);
+ },
+ stateAlter: function(val) {
+ twine.ui.clip.fftSize.hide();
+ twine.ui.clip.winSize.hide();
+ twine.ui.clip.winRandom.hide();
+ twine.ui.clip.winOverlap.hide();
+ twine.ui.clip.winType.hide();
+ if (val == 1) {
+ twine.ui.clip.winSize.show();
+ twine.ui.clip.winRandom.show();
+ twine.ui.clip.winOverlap.show();
+ twine.ui.clip.winType.show();
+ } else if (val > 1) {
+ twine.ui.clip.fftSize.show();
+ }
+ }
+ }),
+ amp: new Slider({
+ label: "Gain",
+ valueLabel: true,
+ value: 1,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ changeOnInput: true,
+ change: function(val) {
+ twine.selectedClip.setData("amp", val);
+ }
+ }),
+ pitch: new Slider({
+ label: "Pitch",
+ valueLabel: true,
+ min: -12,
+ max: 12,
+ step: 1,
+ value: 0,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ changeOnInput: true,
+ change: function(val) {
+ var c = twine.selectedClip;
+ var pitch = Math.pow(2, (val / 12));
+ c.setData("pitch", pitch);
+ if (c.warpMode == 0 && c.loop == 0 && c.warp == 0) {
+ c.setSize();
+ }
+ }
+ }),
+ fftSize: new ComboBox({
+ label: "FFT Size",
+ asRow: true,
+ target: "twine_clipparamsbottom",
+ options: [
+ "256", "512", "1024", "2048"
+ ],
+ asValue: true,
+ change: function(val) {
+ twine.selectedClip.setData("fftSize", val);
+ }
+ }),
+ winSize: new Slider({
+ label: "Window size",
+ valueLabel: true,
+ min: 44,
+ max: 4410,
+ step: 1,
+ value: 4410,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ change: function(val) {
+ twine.selectedClip.setData("txtWinSize", val);
+ }
+ }),
+ winRandom: new Slider({
+ label: "Window random",
+ valueLabel: true,
+ min: 0,
+ max: 441,
+ step: 1,
+ value: 441,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ change: function(val) {
+ twine.selectedClip.setData("txtRandom", val);
+ }
+ }),
+ winOverlap: new Slider({
+ label: "Window overlap",
+ valueLabel: true,
+ min: 0,
+ max: 16,
+ step: 1,
+ value: 4,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ change: function(val) {
+ twine.selectedClip.setData("txtOverlap", val);
+ }
+ }),
+ winType: new ComboBox({
+ label: "Window type",
+ asRow: true,
+ target: "twine_clipparamsbottom",
+ options: [
+ "Hanning", "Hamming", "Half sine"
+ ],
+ change: function(val) {
+ twine.selectedClip.setData("txtWinType", val);
+ }
+ })
+ };
+
+ ui.head = {
+ play: new PlayButton({
+ target: "twine_head_play",
+ fontsize: "14pt",
+ change: function(v, obj) {
+ if (obj.state == true) {
+ twine.play();
+ } else {
+ twine.stop();
+ obj.setValue(false);
+ }
+ }
+ }),
+ snap: new StandardToggle({
+ label: "Snap",
+ target: "twine_head_snap",
+ change: function(val) {
+ twine.timeline.snapToGrid = val;
+ }
+ }),
+ grid: new StandardToggle({
+ label: "Grid",
+ target: "twine_head_showgrid",
+ change: function(val) {
+ twine.timeline.gridVisible = val;
+ }
+ })
+ };
+ return ui;
+} // end setupUI
+
+
+var TimelineGrid = function(twine, data) {
+ var self = this;
+
+ if (!data) {
+ var data = {
+ snapToGrid: true,
+ gridVisible: true,
+ timeSigMarker: 4,
+ resolution: null,
+ startBeat: 0,
+ endBeat: 16,
+ bpm: 120
+ };
+ }
+
+ this.getSaveData = function() {
+ return data;
+ };
+
+ function calcViewport() {
+ data.minLeft = (window.screen.width / 100) * 10;
+ var width = window.screen.width - data.minLeft;
+ var beats = data.endBeat - data.startBeat;
+ data.pixelsPerBeat = width / beats;
+ return {
+ minLeft: data.minLeft,
+ width: width,
+ beats: beats,
+ pixelsPerBeat: Math.round(data.pixelsPerBeat)
+ }
+ }
+
+ function draw() {
+ $(".timelinemarker").remove();
+ $(".timelinetext").remove();
+ if (!data.gridVisible) {
+ return;
+ }
+
+ var target = $("#twine_timeline");
+ var geometry = calcViewport();
+
+ var beat = data.startBeat;
+
+ var width;
+ var fontWeight;
+ for (var x = geometry.minLeft; x < window.screen.width; x += geometry.pixelsPerBeat) {
+ if ((beat - 1) % data.timeSigMarker == 0) {
+ width = 2;
+ fontWeight = "bold";
+ } else {
+ width = 1;
+ fontWeight = "normal";
+ }
+ $("<div />").attr("class", "timelinemarker").appendTo(target).css("width", width).css("left", x);
+ $("<div />").attr("class", "timelinetext").appendTo(target).css("font-weight", fontWeight).css("left", x + 2).text(beat);
+ beat ++;
+ }
+ }
+
+ Object.defineProperty(this, "startBeat", {
+ get: function() { return data.startBeat; },
+ set: function(x) {
+ data.startBeat = x;
+ draw();
+ }
+ });
+
+ Object.defineProperty(this, "bpm", {
+ get: function() { return data.bpm; },
+ set: function(x) {
+ data.bpm = x;
+ app.insertScore("ecpweb_setbpm", [0, 1, data.bpm]);
+ }
+ });
+
+ Object.defineProperty(this, "endBeat", {
+ get: function() { return data.endBeat; },
+ set: function(x) {
+ data.endBeat = x;
+ draw();
+ }
+ });
+
+ Object.defineProperty(this, "minLeft", {
+ get: function() { return data.minLeft; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "pixelsPerBeat", {
+ get: function() { return data.pixelsPerBeat; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "snapToGrid", {
+ get: function() { return data.snapToGrid; },
+ set: function(x) {
+ data.snapToGrid = (x == 1);
+ }
+ });
+
+ Object.defineProperty(this, "gridVisible", {
+ get: function() { return data.gridVisible; },
+ set: function(x) {
+ data.gridVisible = (x == 1);
+ draw();
+ }
+ });
+
+ var dragHandleTime;
+ function handleMousedown(e) {
+ dragHandleTime = {};
+ dragHandleTime.pageX0 = e.pageX;
+ dragHandleTime.pageY0 = e.pageY;
+ dragHandleTime.elem = this;
+ dragHandleTime.offset0 = $(this).offset();
+ dragHandleTime.selection = $("<div />").addClass("drag_selection").css("left", e.pageX).css("top", e.pageY).appendTo($("#twine_timeline"));
+
+ function handleDrag(e) {
+ var left = dragHandleTime.offset0.left + (e.pageX - dragHandleTime.pageX0);
+ var minLeft = (window.screen.width / 100) * 10;
+
+ if (twine.timeline.snapToGrid) {
+ left = (Math.floor((left - minLeft) / twine.timeline.pixelsPerBeat) * twine.timeline.pixelsPerBeat) + minLeft;
+ }
+
+ if (left < minLeft) {
+ left = minLeft
+ }
+
+ var top = dragHandleTime.offset0.top + (e.pageY - dragHandleTime.pageY0);
+ top = Math.floor(top / chanHeight) * chanHeight;
+ var maxTop = chanHeight * channels.length;
+ if (top > maxTop) {
+ top = maxTop;
+ } else if (top < 30) {
+ top = 30;
+ }
+
+ $(dragHandleTime.elem)
+ .css("height", top - dragHandleTime.pageY0)
+ .css("width", left - dragHandleTime.pageX0);
+
+ }
+
+ function handleMouseUp(e) {
+ $("body")
+ .off("mousemove", handleDrag)
+ .off("mouseup", handleMouseUp);
+ dragHandleTime.selection.remove();
+ }
+
+ $("body").on("mouseup", handleMouseUp).on("mousemove", handleDrag);
+ }
+ //$("#twine_timeline").mousedown(handleMousedown); // selection area
+ draw();
+};
+
+
+var Sequencer = function(twine, data) {
+ var self = this;
+ var gridSnap = 0;
+ var timeScale = 1;
+
+ if (!data) {
+ var data = {
+ tempo: 120,
+ playing: false
+ };
+ }
+
+ this.userImportedFiles = [];
+
+ this.setTempo = function(v) {
+ insertScore("ecpweb_setglobal", [0, 1, 0, v]);
+ };
+
+ this.getSaveData = function() {
+ var sdata = {"sequencer": data, "channels": [], "clips": {}};
+ for (var x in channels) {
+ sdata.channels.push(channels[x].getSaveData());
+ }
+ for (var x in clips) {
+ sdata.clips[x] = clips[x].getSaveData();
+ }
+ return sdata;
+ };
+
+ this.loadSaveData = function(v) {
+ data = v.sequencer;
+ for (var x in v.channels) {
+ new Channel(v.channels[x]);
+ }
+ };
+
+ Object.defineProperty(this, "playing", {
+ get: function() { return data.playing; },
+ set: function(x) {
+ data.playing = x;
+ }
+ });
+};
+
+
+var Channel = function(data) {
+ var self = this;
+ channels.push(this);
+
+ if (!data) {
+ var index = channels.length;
+ var data = {
+ name: "Channel " + index,
+ index: index
+ };
+ } else {
+ var index = data.index;
+ }
+
+ function channelClick() {
+ $("#twine_clipdetails").hide();
+ $("#twine_channeldetailslow").show();
+
+ }
+
+ var element = $("<div />").attr("id", "twine_channel" + index).attr("class", "channel").appendTo("#twine_timeline").append(
+ $("<div />").attr("id", "twine_channeldetails" + index).attr("class", "channeldetails").text(data.name).click(channelClick)
+ ).append(
+ $("<div />").attr("id", "twine_channelclips" + index).attr("class", "channelclips")
+ );
+};
+
+var Clip = function(channel, data, parent) {
+ var self = this;
+ var loaded = false;
+ var hasTwin = (parent) ? true : false;
+ var waveformClip;
+ var waveformEdit;
+ var datatable;
+
+ if (!data) {
+ var id = getID();
+ var data = {
+ name: "Clip " + id,
+ channel: channel,
+ id: id,
+ clipindex: null,
+ playLength: 1,
+ colour: "#" + (Math.random() * 0xFFFFFF << 0).toString(16),
+ position: 0,
+ };
+ }
+
+ clips[data.id] = this;
+ var elWaveEdit = $("<div />").css({width: "100%", height: "100%", top: "0px", left: "0px"});
+
+ var element = $("<div />").attr("class", "clip").attr("id", "clip" + data.id).click(function() {
+ twine.selectedClip = self;
+
+ $("#twine_channeldetailslow").hide();
+ $("#twine_clipdetails").show();
+ var cui = twine.ui.clip;
+ cui.name.setValue(data.name);
+ cui.colour.setValue(data.colour);
+ cui.amp.setValue(data.amp);
+ cui.warp.setValue(data.warp);
+ cui.loop.setValue(data.loop);
+ cui.readType.setValue(data.warpMode);
+ cui.pitch.setValue(Math.round((Math.log(data.pitch) / Math.log(2)) * 12));
+ cui.fftSize.setValue(data.fftSize);
+ cui.winSize.setValue(data.txtWinSize);
+ cui.winRandom.setValue(data.txtRandom);
+ cui.winOverlap.setValue(data.txtOverlap);
+ cui.winType.setValue(data.txtWinType);
+
+ showEditWaveform($("#twine_clipdetailsright"));
+
+ }).css("top", (channel * chanHeight) + "px").css("background-color", data.colour).mousedown(handle_mousedown)
+ .css("left", ((data.position * twine.timeline.pixelsPerBeat)) + "px")
+ .appendTo($("#twine_channelclips" + channel));
+
+ this.el = element;
+ // resizable()
+ var elWaveClip = $("<div />").css({position: "absolute", width: "100%", height: "100%", top: "0px", left: "0px"}).appendTo(element);
+ var elWaveText = $("<div />").css({position: "absolute", width: "100%", height: "100%", top: "0px", left: "0px", "font-size": "var(--fontSizeSmall)", color: "var(--fgColor1)"}).text(data.name).appendTo(element);
+
+
+ Object.defineProperty(this, "colour", {
+ get: function() { return data.colour; },
+ set: function(x) {
+ data.colour = x;
+ element.css("background-color", data.colour);
+ }
+ });
+
+ Object.defineProperty(this, "position", {
+ get: function() { return data.position; },
+ set: function(x) {
+ self.setData("position", x);
+ }
+ });
+
+
+// debug
+this.ddata = data;
+ var dataMode = {
+ fnL: 0,
+ fnR: 1,
+ divisionsPerBeat: 2,
+ duration: 3,
+ beatsLength: 4,
+ utilisedLength: 5,
+ warpMode: 6,
+ pitch: 7,
+ amp: 8,
+ fftSize: 9,
+ txtWinSize: 10,
+ txtRandom: 11,
+ txtOverlap: 12,
+ loop: 13,
+ warp: 14,
+ txtWinType: 15,
+ // warp points are 16 + in table
+
+ position: -1,
+ name: -2,
+ soundPath: -3,
+ channel: -4,
+ clipindex: -5,
+ playLength: -6
+ };
+
+ async function getDataFromTable(key) {
+ async function setFromKey(key) {
+ if (dataMode[key] < 0) return;
+ var value = await app.getCsound().tableGet(datatable, dataMode[key])
+ data[key] = value;
+ }
+
+ for (var k in dataMode) {
+ setFromKey(k);
+ }
+ }
+
+ async function getMarkers() {
+
+ }
+
+
+ this.setData = function(modeString, v, onComplete) {
+ if (dataMode[modeString] < 0) {
+ data[modeString] = v;
+ if (modeString == "name") {
+ elWaveText.text(data.name);
+ }
+ return;
+ }
+
+ function doSetData() {
+ app.getCsound().tableSet(datatable, dataMode[modeString], v);
+ data[modeString] = v;
+ }
+
+ if (hasTwin) {
+ app.insertScore("ecpweb_cloneclip", [0, 1, app.createCallback(function(ndata) {
+ hasTwin = false;
+ data.clipindex = ndata.clipindex;
+ datatable = ndata.datatable;
+ doSetData();
+ if (onComplete) onComplete();
+ })]);
+ } else {
+ doSetData();
+ if (onComplete) onComplete();
+ }
+ }
+
+ this.getPlaybackArgs = function(cbid, time) {
+ return [(time) ? time: 0, 1, cbid, data.clipindex, "mxchan" + (data.channel - 1)];
+ };
+
+ this.play = function(onCallback) {
+ var cbid = app.createCallback(function(ndata) {
+ if (onCallback) onCallback(ndata);
+ }, true);
+ app.insertScore("ecp_playback", self.getPlaybackArgs(cbid));
+ }
+
+ this.loadTest = function() {
+ self.loadFromPath("test.mp3");
+ };
+
+
+ async function getSourceTables() {
+ var wavedata = [];
+ var tbL = await app.getTable(data.fnL);
+ wavedata.push(tbL);
+ if (data.hasOwnProperty("fnR") && data.fnR > 0) {
+ var tbR = await app.getTable(data.fnR);
+ wavedata.push(tbR);
+ }
+ return wavedata;
+ }
+
+ async function setClipWaveform() {
+ if (!waveformClip) {
+ waveformClip = new Waveform({
+ target: elWaveClip,
+ allowSelect: false,
+ showGrid: false,
+ bgColor: "rgb(255, 255, 255, 0)",
+ fgColor: "#000000"
+ });
+ setTimeout(async function(){
+ var sourceTables = await getSourceTables();
+ waveformClip.setData(sourceTables, data.duration);
+ }, 100);
+ } else {
+ waveformClip.redraw();
+ }
+ }
+
+ async function showEditWaveform(target) {
+ target.empty().append(elWaveEdit);
+ if (!waveformEdit) {
+ waveformEdit = new Waveform({
+ target: elWaveEdit,
+ allowSelect: true,
+ showGrid: true,
+ latencyCorrection: twirl.latencyCorrection // , markers:
+ });
+ setTimeout(async function(){
+ var sourceTables = await getSourceTables();
+ waveformEdit.setData(sourceTables, data.duration);
+ }, 100);
+ } else {
+ waveformEdit.redraw();
+ }
+ }
+
+ this.setSize = function() {
+ var beattime = 60 / twine.timeline.bpm;
+ var beatLength;
+ if (data.loop == 0 && data.warp == 0) {
+ if (data.warpMode == 0) {
+ beatLength = data.duration / data.pitch;
+ } else {
+ beatLength = data.duration;
+ }
+ } else {
+ beatLength = data.playLength;
+ }
+ var width = (beatLength / beattime) * twine.timeline.pixelsPerBeat;
+ element.css("width", width + "px");
+ setClipWaveform();
+ }
+
+ this.redraw = function() {
+ self.setSize();
+ };
+
+ this.loadFromPath = function(path, userImported) {
+ var cbid = app.createCallback(async function(ndata) {
+ //await app.unlinkFile(path);
+ if (ndata.status == -1) {
+ return self.errorHandler("File not valid");
+ } else if (ndata.status == -2) {
+ return self.errorHandler("File too large");
+ }
+ datatable = ndata.data.datatable;
+ await getDataFromTable();
+ data.clipindex = ndata.data.clipindex;
+ data.channel = ndata.data.channel;
+ data.name = ndata.data.name;
+ elWaveText.text(data.name);
+ data.soundPath = path;
+
+ if (userImported) {
+ twine.seq.userImportedFiles.push(path);
+ }
+ loaded = true;
+ twirl.loading.hide();
+ self.setSize();
+ });
+ app.insertScore("ecpweb_loadsound", [0, 1, cbid, path, data.channel, data.position]);
+ };
+
+ this.clone = function() {
+ var newdata = Object.assign({}, data);
+ newdata.id = getID();
+ return new Clip(data.channel, newdata, self);
+ };
+
+ this.randomiseWarpPoints = function(mode) { // mode is -1, 0 or 1 I think..
+ if (!mode) mode = 0;
+ var cbid = app.createCallback(function(ndata) {
+ notify("OK");
+ });
+ app.insertScore("ecpweb_randomisewarppoints", [0, 1, cbid, mode]);
+ };
+
+ var dragHandleClip;
+ function handle_mousedown(e){
+ var originalPosition = data.position;
+ dragHandleClip = {};
+ dragHandleClip.pageX0 = e.pageX;
+ dragHandleClip.pageY0 = e.pageY;
+ dragHandleClip.elem = this;
+ dragHandleClip.offset0 = $(this).offset();
+ var isCopying = e.ctrlKey;
+
+ if (isCopying) { // && loaded
+ self.clone();
+ }
+
+ function handle_dragging(e){
+ var left = dragHandleClip.offset0.left + (e.pageX - dragHandleClip.pageX0);
+ var minLeft = (window.screen.width / 100) * 10;
+
+ //round
+ // left = Math.ceil(left / pixelsPerBeat) * pixelsPerBeat;
+
+ if (twine.timeline.snapToGrid) {
+ left = (Math.ceil((left - minLeft) / twine.timeline.pixelsPerBeat) * twine.timeline.pixelsPerBeat) + minLeft;
+ }
+
+
+ if (left < minLeft) {
+ left = minLeft
+ }
+ data.position = twine.timeline.startBeat + ((left - minLeft) / twine.timeline.pixelsPerBeat);
+
+ var header = 50;
+ var top = dragHandleClip.offset0.top + (e.pageY - dragHandleClip.pageY0);
+ top = (Math.ceil(top / chanHeight) * chanHeight) + header;
+ var maxTop = (chanHeight * channels.length) + header;
+
+ if (top > maxTop) {
+ top = maxTop;
+ } else if (top < 30) {
+ top = 30;
+ }
+
+
+ $(dragHandleClip.elem).offset({top: top, left: left});
+ }
+
+ function handle_mouseup(e){
+ $("body")
+ .off("mousemove", handle_dragging)
+ .off("mouseup", handle_mouseup);
+ if (data.position != originalPosition) {
+ self.setData("position", data.position);
+ }
+ }
+
+ $("body").on("mouseup", handle_mouseup).on("mousemove", handle_dragging);
+ }
+
+ if (parent) {
+ self.redraw();
+ }
+};
+
+function runTest() {
+ new Channel();
+ new Channel();
+ new Channel();
+ new Channel();
+ new Channel();
+ new Channel();
+}
+
+var topMenuData = [
+ {name: "File", contents: [
+ {name: "New", disableOnPlay: true, shortcut: {name: "Ctrl N", ctrlKey: true, key: "n"}, click: function(twine) {
+ twine.createNewInstance();
+ }},
+ {name: "Save", disableOnPlay: true, shortcut: {name: "Ctrl S", ctrlKey: true, key: "s"}, click: function(twine) {
+ twine.saveFile();
+ }},
+ {name: "Close", disableOnPlay: true, shortcut: {name: "Ctrl W", ctrlKey: true, key: "w"}, click: function(twine) {
+ twine.closeInstance();
+ }},
+ ]},
+ {name: "Help", contents: [
+ {name: "Help", click: function(twine){
+ $("#twist_documentation")[0].click();
+ }},
+ {name: "About", click: function(twine) {
+ twine.ui.showAbout();
+ }},
+ ]}
+];
+
+
+var Twine = function() {
+ twirl.init();
+ var twine = this;
+ var playing = false;
+ this.onPlays = [];
+ this.selectedClip = null;
+ this.clipUpdates = true;
+ this.timeline = new TimelineGrid(twine);
+ this.seq = new Sequencer(twine);
+ this.topMenu = new twirl.TopMenu(twine, topMenuData, $("#twine_menubar"));
+ this.ui = setupUI(twine);
+
+ twine.ui.head.grid.setValue(1, true);
+ twine.ui.head.snap.setValue(1, true);
+
+ this.setPlaying = function(state) {
+ playing = state;
+ };
+
+ this.play = function() {
+ if (playing) return;
+ twine.setPlaying(true);
+ var time;
+ var reltime;
+ var maxtime = 0;
+ var beatTime = 60 / twine.timeline.bpm;
+ for (var c in clips) {
+ time = clips[c].position;
+ if (time >= twine.timeline.startBeat && time <= twine.timeline.endBeat) {
+ reltime = time - twine.timeline.startBeat;
+ if (reltime + clips[c].duration > maxtime) {
+ maxtime = reltime + clips[c].duration;
+ }
+ app.insertScore("ecp_playback", clips[c].getPlaybackArgs(-1, reltime * beatTime));
+ }
+ }
+ var cbid = app.createCallback(function() {
+ twine.setPlaying(false);
+ });
+ app.insertScore("ecpweb_playbackwatchdog", [0, maxtime, cbid]);
+ };
+
+ this.stop = function() {
+ if (!playing) return;
+ app.insertScore("ecpweb_stopplayback");
+ };
+
+ async function handleFileDrop(e) {
+ e.preventDefault();
+ twirl.loading.show();
+ for (const item of e.originalEvent.dataTransfer.files) {
+ if (!twirl.audioTypes.includes(item.type)) {
+ return self.errorHandler("Unsupported file type", self.ui.showLoadNewPrompt);
+ }
+ if (item.size > twirl.maxFileSize) {
+ return self.errorHandler("File too large", self.ui.showLoadNewPrompt);
+ }
+
+ errorState = "File loading error";
+ var content = await item.arrayBuffer();
+ const buffer = new Uint8Array(content);
+ await app.getCsound().fs.writeFile(item.name, buffer);
+ var x = new Clip(1); // determine channel
+ x.loadFromPath(item.name, true);
+ twirl.loading.hide();
+ }
+ }
+
+ var tempclip = null;
+ $("body").on("dragover", function(e) {
+ e.preventDefault();
+ e.originalEvent.dataTransfer.effectAllowed = "all";
+ e.originalEvent.dataTransfer.dropEffect = "copy";
+
+ if (!tempclip) {
+ tempclip = $("<div />").addClass("clip").text("New Clip");
+ $("#twine_timelineoverlay").show().append(tempclip);
+ }
+
+ tempclip.css("top", e.pageY + "px").css("left", e.pageX + "px");
+
+ return false;
+ }).on("dragleave", function(e) {
+ e.preventDefault();
+ $("#twine_timelineoverlay").hide();
+ if (tempclip) tempclip.remove();
+ }).on("drop", function(e) {
+ $("#twine_timelineoverlay").hide();
+ if (tempclip) tempclip.remove();
+ handleFileDrop(e);
+ });
+};
+
+
+$(function() {
+ window.twine = new Twine();
+
+ window.app = new CSApplication({
+ csdUrl: "twine.csd",
+ files: ["test.mp3"],
+ csOptions: ["--omacro:ECP_NORECORDING=1"],
+ onPlay: function () {
+ runTest();
+ twirl.loading.hide();
+ },
+ errorHandler: twirl.errorHandler,
+ ioReceivers: {percent: twirl.loading.setPercent}
+ });
+
+ $("#start_invoke").click(function() {
+ $("#start").hide();
+ twirl.loading.show();
+ app.play(function(text){
+ twirl.loading.show(text);
+ });
+ });
+
+
+
+
+
+});
+/*
+divisionsPerBeat: 2,
+ duration: 3,
+ beatsLength: 4,
+ utilisedLength: 5,
+ warpMode: 6,
+ pitch: 7,
+ amp: 8,
+ fftSize: 9,
+ txtWinSize: 10,
+ txtRandom: 11,
+ txtOverlap: 12,
+ loop: 13,
+ warp: 14,
+ txtWinType: 15,
+*/
+</script>
+</head>
+<body>
+<div id="start">
+ <div id="start_centre">
+ <p id="start_invoke">Press to begin</p>
+ </div>
+</div>
+
+<div id="twine_header">
+ <table id="twine_headertable"><tbody><tr>
+ <td id="twine_head_play"></td>
+ <td id="twine_head_snap"></td>
+ <td id="twine_head_showgrid"></td>
+ </tr></tbody></table>
+</div>
+<div id="twine_menubar"></div>
+<div id="twine_main">
+ <div id="twine_timeline"></div>
+ <div id="twine_timelineoverlay"></div>
+ <div id="twine_details">
+ <div id="twine_channeldetailslow"></div>
+ <div id="twine_clipdetails">
+ <div id="twine_clipdetailsleft">
+ <table><tbody>
+ <tr>
+ <td id="twine_clip_audition"></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td id="twine_clip_colour"></td>
+ <td id="twine_clip_name"></td>
+ <td></td>
+ <td></td>
+ </tr>
+ </tbody></table>
+ <table><tbody>
+ <tr>
+ <td>Read type</td>
+ <td id="twine_clip_readtype"></td>
+ <td id="twine_clip_warp"></td>
+ <td id="twine_clip_loop"></td>
+ </tr>
+ </tbody></table>
+ <table><tbody id="twine_clipparamsbottom">
+ </tbody></table>
+ </div>
+ <div id="twine_clipdetailsright"></div>
+ </div>
+ </div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/site/app/twine/_hOLD/timeline.csd b/site/app/twine/_hOLD/timeline.csd
new file mode 100644
index 0000000..72e03ae
--- /dev/null
+++ b/site/app/twine/_hOLD/timeline.csd
@@ -0,0 +1,154 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "/scss/elasticlip_sequencer.udo"
+;#include "/scss/mixer/base.udo"
+#include "/interop.udo"
+#include "/bussing.udo"
+#include "/table_tools.udo"
+
+opcode ecpweb_getdata, S, iii
+ ichannel, iclipindex, itime xin
+ Sname = gSecp_clipnames[iclipindex]
+ Sresponse = sprintf("{\"-1\":%f,\"-2\":\"%s\",\"-4\":%d", itime, Sname, ichannel)
+
+ index = 2
+ while (index < giecp_controlitemnum) do
+ ival = tab_i(index, giecp_fnclips[iclipindex])
+ Sformat = strcat(",\"%d\":%", (frac(ival) == 0) ? "d" : "f")
+ Sresponse = strcat(Sresponse, sprintf(Sformat, index, ival))
+ index += 1
+ od
+ Sresponse = strcat(Sresponse, "}")
+ xout Sresponse
+endop
+
+opcode ecpweb_getdata, S, i
+ iseqindex xin
+ ichannel, iclipindex, itime ecpseq_get iseqindex
+ Sresponse ecpweb_getdata ichannel, iclipindex, itime
+ xout Sresponse
+endop
+
+instr ecpweb_getdata
+ icbid = p4
+ iseqindex = p5
+endin
+
+instr ecpweb_tabdestroy
+ ifn = p4
+ tab_destroy ifn
+ turnoff
+endin
+
+instr ecpweb_setbpm
+ ibpm = p4
+ gkseq_tempo init ibpm
+ turnoff
+endin
+
+instr ecpweb_loadsound
+ icbid = p4
+ Spath = strget(p5)
+ ichannel = p6
+ itime = p7
+ iforcemono = p8
+
+ iclipindex ecp_loadsound Spath, 4, iforcemono ;beats contentious, analyse and also set warp mode
+ iseqindex ecpseq_getnewindex
+
+ ecpseq_set iseqindex, ichannel, iclipindex, itime
+ Sdata ecpweb_getdata ichannel, iclipindex, itime
+
+ ifnwave ecp_getwaveform iclipindex
+
+ Sresponse = sprintf("{\"cbid\":%d,\"data\":%s,\"waveform\":%d}", icbid, Sdata, ifnwave)
+ io_sendstring("callback", Sresponse)
+ turnoff
+endin
+
+
+instr ecpweb_copyclip
+ icbid = p4
+ iseqindex = p5
+ ichannel = p6
+ itime = p7
+
+ i_, iclipindex, i_ ecpseq_get iseqindex
+
+ iseqindex ecpseq_getnewindex
+ ecpseq_set iseqindex, ichannel, iclipindex, itime
+ Sresponse = sprintf("{\"cbid\":%d}", icbid)
+ io_sendstring("callback", Sresponse)
+endin
+
+
+instr ecpweb_setdata
+ icbid = p4
+ iseqindex = p5
+ idataindex = p6
+ ;p7 is value
+ ihastwin = p8
+
+ Sresponse = sprintf("{\"cbid\":%d", icbid)
+ iapplyupdate = 0
+ ichannel, iclipindex, itime ecpseq_get iseqindex
+
+ if (ihastwin == 1 && idataindex != -1) then
+ iclipindex ecp_cloneclip iclipindex
+ Sresponse = strcat(Sresponse, sprintf(",\"clipindex\":%d", iclipindex)) ; needed?
+ endif
+
+ if (idataindex < 0) then
+ if (idataindex == -2) then ;name
+ Sname = strget(p7)
+ ecp_set_name iclipindex, Sname
+ Sresponse = strcat(Sresponse, sprintf(",\"name\":\"%s\"", Sname))
+ elseif (idataindex == -1) then ;position
+ itime = p7
+ iapplyupdate = 1
+ elseif (idataindex == -4) then ;channel
+ ichannel = p7
+ iapplyupdate = 1
+ endif
+
+ elseif (idataindex >= 2) then
+ ivalue = p7
+ tabw_i ivalue, idataindex, giecp_fnclips[iclipindex]
+ endif
+
+ if (iapplyupdate == 1) then
+ ecpseq_set iseqindex, ichannel, iclipindex, itime
+ endif
+
+ io_sendstring("callback", strcat(Sresponse, "}"))
+ turnoff
+endin
+
+instr boot
+ schedule("mx_boot", 0, 1)
+
+ aL0, aR0 bus_read "mxchan0"
+ aL1, aR1 bus_read "mxchan1"
+ aL2, aR2 bus_read "mxchan2"
+ aL3, aR3 bus_read "mxchan3"
+
+ aoutL = aL0 + aL1 + aL2 + aL3
+ aoutR = aR0 + aR1 + aR2 + aR3
+ outs aoutL, aoutR
+endin
+
+</CsInstruments>
+<CsScore>
+i"boot" 0 36000
+f0 z
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/twine/_hOLD/timeline_base.html b/site/app/twine/_hOLD/timeline_base.html
new file mode 100644
index 0000000..fc460bd
--- /dev/null
+++ b/site/app/twine/_hOLD/timeline_base.html
@@ -0,0 +1,633 @@
+<html>
+<head>
+<style type="text/css">
+
+body {
+ font-family: Arial, sans-serif;
+ font-size: 11pt;
+}
+
+#header {
+ position: absolute;
+ top: 0px;
+ height: 30px;
+ left: 0px;
+ width: 100%;
+ background-color: #545454;
+}
+
+#headertable {
+ height: 30px;
+}
+
+#clipdetails {
+ display: none;
+}
+
+
+#main {
+ position: absolute;
+ top: 30px;
+ height: 100%;
+ left: 0px;
+ width: 100%;
+}
+
+#timeline {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 70%
+}
+
+.timelinetext {
+ font-size: 8pt;
+ opacity: 0.9;
+ position: absolute;
+ color: #121212;
+ top: 2px;
+}
+
+.timelinemarker {
+ width: 1px;
+ position: absolute;
+ background-color: #bdbdbd;
+ opacity: 0.9;
+ height: 100%;
+ top: 0px;
+ z-index: 50;
+}
+
+.smbut {
+ font-size: 8pt;
+ background-color: #b5b01d;
+ border: 1px solid black;
+}
+
+
+
+#details {
+ position: absolute;
+ left: 0px;
+ top: 70%;
+ width: 100%;
+ height: 30%;
+ background-color: #dcdcdc;
+}
+
+#clipdetailsleft {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 30%;
+ height: 100%;
+ background-color: #acacac;
+}
+
+#clipdetailsright {
+ position: absolute;
+ left: 30%;
+ top: 0px;
+ width: 70%;
+ height: 100%;
+ background-color: #cacaca;
+}
+
+.channel {
+ height: 30px;
+ width: 100%;
+ border-bottom: 1px solid #aaaaaa;
+ left: 0px;
+}
+
+.channeldetails {
+ position: absolute;
+ height: 30px;
+ left: 0px;
+ width: 10%;
+}
+
+.channelclips {
+ position: absolute;
+ height: 30px;
+ left: 10%;
+ width: 90%;
+ background-color: #cdcdcd;
+}
+
+.clip {
+ user-select: none;
+ position: absolute;
+ padding: 0px;
+ cursor: move;
+ z-index: 70;
+ width: 100px;
+ height: 30px;
+ color: #000000;
+ overflow: hidden;
+}
+</style>
+<script type="text/javascript" src="https://apps.csound.1bpm.net/code/jquery.js"></script>
+<script type="text/javascript">
+
+var clips = {};
+var channels = [];
+var maxID = 0;
+var chanHeight = 30;
+
+window.csseq = {};
+
+function getID() {
+ return maxID++;
+}
+
+var TimelineGrid = function(data) {
+ var self = this;
+
+ if (!data) {
+ var data = {
+ snapToGrid: true,
+ gridVisible: true,
+ timeSigMarker: 4,
+ resolution: null,
+ startBeat: 1,
+ endBeat: 16,
+ bpm: null
+ };
+ }
+
+ this.getSaveData = function() {
+ return data;
+ };
+
+ function calcViewport() {
+ data.minLeft = (window.screen.width / 100) * 10;
+ var width = window.screen.width - data.minLeft;
+ var beats = data.endBeat - data.startBeat;
+ data.pixelsPerBeat = width / beats;
+ return {
+ minLeft: data.minLeft,
+ width: width,
+ beats: beats,
+ pixelsPerBeat: Math.round(data.pixelsPerBeat)
+ }
+ }
+
+ function draw() {
+ $(".timelinemarker").remove();
+ $(".timelinetext").remove();
+ if (!data.gridVisible) {
+ return;
+ }
+
+ var target = $("#timeline");
+ var geometry = calcViewport();
+
+ var beat = data.startBeat;
+
+ var width;
+ var fontWeight;
+ for (var x = geometry.minLeft; x < window.screen.width; x += geometry.pixelsPerBeat) {
+ if ((beat - 1) % data.timeSigMarker == 0) {
+ width = 2;
+ fontWeight = "bold";
+ } else {
+ width = 1;
+ fontWeight = "normal";
+ }
+ $("<div />").attr("class", "timelinemarker").appendTo(target).css("width", width).css("left", x);
+ $("<div />").attr("class", "timelinetext").appendTo(target).css("font-weight", fontWeight).css("left", x + 2).text(beat);
+ beat ++;
+ }
+ }
+
+ Object.defineProperty(this, "startBeat", {
+ get: function() { return data.startBeat; },
+ set: function(x) {
+ data.startBeat = x;
+ draw();
+ }
+ });
+
+ Object.defineProperty(this, "endBeat", {
+ get: function() { return data.startBeat; },
+ set: function(x) {
+ data.startBeat = x;
+ draw();
+ }
+ });
+
+ Object.defineProperty(this, "minLeft", {
+ get: function() { return data.minLeft; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "pixelsPerBeat", {
+ get: function() { return data.pixelsPerBeat; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "snapToGrid", {
+ get: function() { return data.snapToGrid; },
+ set: function(x) {
+ data.snapToGrid = (x == 1);
+ }
+ });
+
+ Object.defineProperty(this, "gridVisible", {
+ get: function() { return data.gridVisible; },
+ set: function(x) {
+ data.gridVisible = (x == 1);
+ draw();
+ }
+ });
+
+
+
+ draw();
+};
+
+
+var Sequencer = function(data) {
+ var self = this;
+ var gridSnap = 0;
+ var timeScale = 1;
+
+ if (!data) {
+ var data = {
+ tempo: 120,
+ playing: false
+ };
+ }
+
+ this.setTempo = function(v) {
+ insertScore("ecpweb_setglobal", [0, 1, 0, v]);
+ };
+
+ this.getSaveData = function() {
+ var sdata = {"sequencer": data, "channels": [], "clips": {}};
+ for (var x in channels) {
+ sdata.channels.push(channels[x].getSaveData());
+ }
+ for (var x in clips) {
+ sdata.clips[x] = clips[x].getSaveData();
+ }
+ return sdata;
+ };
+
+ this.loadSaveData = function(v) {
+ data = v.sequencer;
+ for (var x in v.channels) {
+ new Channel(v.channels[x]);
+ }
+ };
+
+ Object.defineProperty(this, "playing", {
+ get: function() { return data.playing; },
+ set: function(x) {
+ data.playing = x;
+ }
+ });
+};
+
+
+var Channel = function(data) {
+ var self = this;
+ channels.push(this);
+
+ if (!data) {
+ var index = channels.length;
+ var data = {
+ name: "Channel " + index,
+ index: index
+ };
+ } else {
+ var index = data.index;
+ }
+
+ var element = $("<div />").attr("id", "channel" + index).attr("class", "channel").appendTo("#timeline").append(
+ $("<div />").attr("id", "channeldetails" + index).attr("class", "channeldetails").text(data.name)
+ ).append(
+ $("<div />").attr("id", "channelclips" + index).attr("class", "channelclips")
+ );
+};
+
+var Clip = function(channel, data, parent) {
+ var self = this;
+ var loaded = false;
+
+ if (!data) {
+ var id = getID();
+ var data = {
+ name: "Clip " + id,
+ channel: channel,
+ id: id,
+ clipindex: null,
+ beatTime: 0,
+ colour: "#" + (Math.random() * 0xFFFFFF << 0).toString(16)
+ };
+ } else {
+ var id = data.id;
+ }
+ clips[id] = this;
+ var element = $("<div />").attr("class", "clip").attr("id", "clip" + id).text(data.name).click(function() {
+ csseq.selectedClip = self;
+ $("#clipdetails").show();
+ $("#clip_name").val(data.name);
+ $("#clip_colour").val(data.colour);
+
+ }).css("top", (channel * chanHeight) + "px").css("background-color", data.colour).mousedown(handle_mousedown)
+ .css("left", ((data.beatTime * csseq.timeline.pixelsPerBeat)) + "px")
+ .appendTo($("#channelclips" + channel));
+ // resizable()
+
+ Object.defineProperty(this, "colour", {
+ get: function() { return data.colour; },
+ set: function(x) {
+ data.colour = x;
+ element.css("background-color", data.colour);
+ }
+ });
+
+ var dataMode = {
+ divisionsPerBeat: 2,
+ duration: 3,
+ beatsLength: 4,
+ utilisedLength: 5,
+ warpMode: 6,
+ pitch: 7,
+ amp: 8,
+ fftSize: 9,
+ txtWinSize: 10,
+ txtRandom: 11,
+ txtOverlap: 12,
+ loop: 13,
+ warp: 14,
+ txtWinType: 15,
+ // warp points are 16 + in table
+
+ position: -1,
+ name: -2,
+ soundPath: -3,
+ channel: -4
+ }
+
+ for (let x in dataMode) {
+ Object.defineProperty(this, x, {
+ get: function() { return data[x] },
+ set: function(v) {
+ self.setData(x, v);
+ }
+ });
+ }
+
+ /*// v should become defunct
+ Object.defineProperty(this, "name", {
+ get: function() { return data.name; },
+ set: function(x) {
+ data.name = x;
+ element.text(data.name);
+
+ // self.setData("name", x);
+ }
+ });*/
+
+
+ /*
+ function getData() {
+ var cbid = app.createCallback(function(ndata) {
+ for (var x in ndata.data) {
+ data[x] = ndata.data[x];
+ }
+ });
+ app.insertScore("ecpweb_getdata", [0, 1, cbid, clipindex]);
+ }*/
+
+ this.setData = function(modeString, v) {
+ var cbid = app.createCallback(function(ndata) {
+ if (ndata.hasOwnProperty("clipindex")) {
+ data.clipindex = ndata.clipindex;
+ }
+ data[modeString] = v;
+ if (modeString == "name") {
+ element.text(data.name);
+ }
+ });
+ app.insertScore("ecpweb_setdata", [0, 1, cbid, id, dataMode[modeString], v, (parent ? 1 : 0)]); // having ecp_cloneclip in if needed
+ }
+
+ this.loadTest = function() {
+ self.loadFromPath("test.mp3");
+ };
+
+ this.loadFromPath = function(path) {
+ var cbid = app.createCallback(function(ndata) {
+ for (var x in ndata.data) {
+ data[x] = ndata.data[x];
+ }
+ data.soundPath = path;
+ loaded = true;
+ });
+ app.insertScore("ecpweb_loadsound", [0, 1, cbid, path]);
+ };
+
+ this.clone = function() {
+ var newdata = Object.assign({}, data);
+ data.id = getID();
+ return new Clip(data.channel, newdata, self);
+ };
+
+ this.randomiseWarpPoints = function(mode) { // mode is -1, 0 or 1 I think..
+ if (!mode) mode = 0;
+ var cbid = app.createCallback(function(ndata) {
+ notify("OK");
+ });
+ app.insertScore("ecpweb_randomisewarppoints", [0, 1, cbid, mode]);
+ };
+
+
+ function handle_mousedown(e){
+
+ window.my_dragging = {};
+ my_dragging.pageX0 = e.pageX;
+ my_dragging.pageY0 = e.pageY;
+ my_dragging.elem = this;
+ my_dragging.offset0 = $(this).offset();
+ var isCopying = e.ctrlKey;
+
+ if (isCopying) { // && loaded
+ self.clone();
+ }
+
+ function handle_dragging(e){
+ var left = my_dragging.offset0.left + (e.pageX - my_dragging.pageX0);
+
+ var minLeft = (window.screen.width / 100) * 10;
+
+ //round
+ // left = Math.ceil(left / pixelsPerBeat) * pixelsPerBeat;
+
+ if (csseq.timeline.snapToGrid) {
+ left = (Math.ceil((left - minLeft) / csseq.timeline.pixelsPerBeat) * csseq.timeline.pixelsPerBeat) + minLeft;
+ }
+
+
+ if (left < minLeft) {
+ left = minLeft
+ }
+ data.beatTime = csseq.timeline.startBeat + ((left - minLeft) / csseq.timeline.pixelsPerBeat);
+
+ var top = my_dragging.offset0.top + (e.pageY - my_dragging.pageY0);
+ top = Math.ceil(top / chanHeight) * chanHeight;
+ var maxTop = chanHeight * channels.length;
+ if (top > maxTop) {
+ top = maxTop;
+ } else if (top < 30) {
+ top = 30;
+ }
+
+
+ $(my_dragging.elem)
+ .offset({top: top, left: left});
+ }
+
+ function handle_mouseup(e){
+ $("body")
+ .off("mousemove", handle_dragging)
+ .off("mouseup", handle_mouseup);
+ }
+
+ $("body").on("mouseup", handle_mouseup).on("mousemove", handle_dragging);
+ }
+
+ /*
+ this.setLength = function(v) {
+ setData("length", v);
+ }; // now made generic above.
+ */
+};
+
+
+
+
+$(function() {
+ csseq.timeline = new TimelineGrid();
+ csseq.seq = new Sequencer();
+
+
+ $(".smbut").attr("value", 0).click(function(){
+ var val;
+ var col;
+ if ($(this).attr("value") == 0) {
+ val = 1;
+ col = "#f2e30c";
+ } else {
+ val = 0;
+ col = "#b5b01d";
+ }
+ $(this).attr("value", val).css("background-color", col);
+ });
+
+ $("#head_snap").click(function() {
+ csseq.timeline.snapToGrid = $(this).attr("value");
+ });
+
+ $("#head_showgrid").click(function() {
+ csseq.timeline.gridVisible = $(this).attr("value");
+ });
+
+ $("#head_play").click(function() {
+ if (csseq.seq.playing) {
+ app.insertScore("ecpseq_stop");
+ } else {
+ var cbid = app.createCallback(function(data) {
+ if (data.state == "playing") {
+ csseq.seq.playing = true;
+ $(this).text("Stop");
+ } else if (data.state == "stopped") {
+ csseq.seq.playing = false;
+ $(this).text("Play");
+ app.removeCallback(data.cbid);
+ }
+ }, true);
+ app.insertScore("ecpseq_play", [0, 36000, cbid, csseq.timeline.startBeat]);
+ }
+ });
+
+ new Channel();
+ new Channel();
+ new Channel();
+ new Clip(0);
+ new Clip(1);
+ new Clip(2);
+
+
+ $("#clip_colour").change(function(){
+ csseq.selectedClip.colour = $(this).val();
+ });
+
+ $("#clip_name").change(function(){
+ csseq.selectedClip.name = $(this).val();
+ });
+
+});
+/*
+divisionsPerBeat: 2,
+ duration: 3,
+ beatsLength: 4,
+ utilisedLength: 5,
+ warpMode: 6,
+ pitch: 7,
+ amp: 8,
+ fftSize: 9,
+ txtWinSize: 10,
+ txtRandom: 11,
+ txtOverlap: 12,
+ loop: 13,
+ warp: 14,
+ txtWinType: 15,
+*/
+</script>
+</head>
+<body>
+<div id="header">
+ <table id="headertable"><tbody><tr>
+ <td><button id="play" class="smbut">Play</button></td>
+ <td><button id="head_snap" class="smbut">Snap</button></td>
+ <td><button id="head_showgrid" class="smbut">Grid</button></td>
+ </tr></tbody></table>
+</div>
+<div id="main">
+ <div id="timeline"></div>
+ <div id="details">
+ <div id="clipdetails">
+ <div id="clipdetailsleft">
+ <table><tbody>
+ <tr>
+ <td><input type="color" id="clip_colour"></td><td><input type="text" id="clip_name"></td>
+ </tr>
+ <tr>
+ <td>Read type</td>
+ <td><select id="clip_readtype">
+ <option value="0">Repitch</option>
+ <option value="1">Grain</option>
+ <option value="2">FFT</option>
+ <option value="3">FFTab</option>
+ </select>
+ </td>
+ </tr>
+ <tr><td><button id="clip_warp" class="smbut">Warp</button></td><td><button class="smbut">Loop</button></td></tr>
+ <tr><td>
+ <x-knob divisions="12" min="-12" max="12">
+ </td><td></td></tr>
+ </tbody></table>
+ </div>
+ <div id="clipdetailsright">
+
+ </div>
+ </div>
+ </div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/site/app/twine/channel.js b/site/app/twine/channel.js
new file mode 100644
index 0000000..18f1b3a
--- /dev/null
+++ b/site/app/twine/channel.js
@@ -0,0 +1,499 @@
+var Insert = function(channel, options) {
+ var insert = this;
+};
+
+
+var Channel = function(timeline, index) {
+ var channel = this;
+ this.clips = {};
+ this.width = null;
+ this.offset = null;
+ var heights = [25, 100];
+ this.height = heights[0];
+ this.index = index;
+ this.name = "Channel " + (index + 1);
+ var elChannel = $("<div />").addClass("twine_channel").css({
+ height: channel.height + "px"
+ }).appendTo(timeline.element);
+ this.inserts = [];
+ var splines = {};
+
+ var heightState = 0;
+ var elChannelControl = $("<div />").addClass("twine_channelcontrol").text(channel.name).appendTo(elChannel).dblclick(function(){
+ heightState = 1 - heightState;
+ channel.setHeight(heights[heightState]);
+ }).click(function(){
+ channel.showDetails();
+ }).on("contextmenu", function(e){
+ return twirl.contextMenu.show(e, [
+ {name: "Rename", click: function(){
+ var el = $("<div />");
+ $("<h4 />").text("Rename channel").appendTo(el);
+ var ti = $("<input />").val(channel.name).appendTo(el);
+ twirl.prompt.show(el, function(){
+ channel.setName(ti.val());
+ });
+ }}
+ ]);
+ });
+
+ var elChannelClips = $("<div />").addClass("twine_channelclips").appendTo(elChannel).mousedown(twine.timeline.dragSelection);
+
+ var elChannelSpline = $("<div />").css({
+ position: "absolute",
+ width: "100%",
+ height: "75%",
+ left: "0px",
+ top: "25%",
+ "z-index": 31,
+ opacity: 0.57,
+ "background-color": "var(--bgColor1)",
+ display: "none"
+ }).appendTo(elChannelClips);
+
+
+ channel.defaultChannels = {
+ amp: "twine_camp" + channel.index,
+ pan: "twine_cpan" + channel.index,
+ mute: "twine_cmute" + channel.index,
+ solo: twine.mixer.soloChannel
+ };
+
+
+ this.setName = function(name) {
+ channel.name = name;
+ elChannelControl.text(channel.name);
+ };
+
+ this.exportData = async function() {
+ var saveData = {
+ clips: [],
+ inserts: [],
+ name: channel.name,
+ amp: (await app.getControlChannel(channel.defaultChannels.amp)),
+ pan: (await app.getControlChannel(channel.defaultChannels.pan))
+ };
+
+ for (var ins in channel.inserts) {
+
+ }
+ for (var i in channel.clips) {
+ if (channel.clips[i]) {
+ saveData.clips.push(await channel.clips[i].exportData());
+ }
+ }
+ return saveData;
+ };
+
+ this.remove = function(noredraw) {
+ elChannel.remove();
+ console.log("remove channel");
+ for (let c in channel.clips) {
+ if (channel.clips[c]) channel.clips[c].destroy();
+ }
+ for (let c in timeline.channels) {
+ if (timeline.channels[c] == channel) {
+ timeline.channels.splice(c, 1);
+ }
+ }
+ if (!noredraw) timeline.drawGrid();
+ };
+
+ this.importData = async function(loadData, ftMap) {
+ await app.setControlChannel(channel.defaultChannels.amp, loadData.amp);
+ await app.setControlChannel(channel.defaultChannels.pan, loadData.pan);
+ channel.setName(loadData.name);
+ for (var i in channel.clips) {
+ channel.clips[i].remove();
+ delete channel.clips[i];
+ }
+
+ for (let cl of loadData.clips) {
+ if (cl.table[0]) {
+ cl.table[0] = ftMap[cl.table[0]];
+ }
+ if (cl.table[1]) {
+ cl.table[1] = ftMap[cl.table[1]];
+ }
+ var c = new Clip(twine);
+ c.importData(cl);
+ channel.addClip(c);
+ }
+ };
+
+ this.addClip = function(clip) {
+ channel.clips[clip.data.id] = clip;
+ clip.channel = channel;
+ elChannelClips.append(clip.element);
+ clip.redraw();
+ };
+
+ this.removeClip = function(clip) {
+ //clip.element.detach();
+ //clip.channel = null;
+ channel.clips[clip.data.id] = null;
+ //delete channel.clips[clip.data.id];
+ };
+
+ this.changeBeatEnd = function(original, newBeatEnd, noredraw) {
+ var ratio = original / newBeatEnd;
+ for (let s in splines) {
+ splines[s].spline.resize(ratio, noredraw);
+ }
+ };
+
+
+ this.getCsChannelName = function() {
+ return "mxchan" + channel.index;
+ };
+
+ var elAddInsert;
+ var elInsertsArea;
+ var insertID = 0;
+ function removeInsert(id, noCompile) {
+ var index;
+ for (let ci in channel.inserts) {
+ if (channel.inserts[ci].id == id) {
+ index = ci;
+ break;
+ }
+ }
+ if (index == null) return;
+ var i = channel.inserts[index];
+ i.element.remove();
+ i.transform.remove();
+ channel.inserts.splice(index, 1);
+ refreshInserts();
+ if (!noCompile) channel.compileInstr();
+ }
+
+
+ async function createDefaultSplines() {
+ var splineColour = getComputedStyle(document.body).getPropertyValue("--fgColor2");
+ var ampVal, panVal;
+ if (twine.offline) {
+ ampVal = 1;
+ panVal = 0;
+ } else {
+ ampVal = await app.getControlChannel(channel.defaultChannels.amp);
+ panVal = await app.getControlChannel(channel.defaultChannels.pan);
+ }
+ var def = [
+ {name: "default_amp", dfault: 1, constraints: [0, 2, ampVal, 0.00001], channel: channel.defaultChannels.amp},
+ {name: "default_pan", dfault: 0, constraints: [-1, 1, panVal, 0.00001], channel: channel.defaultChannels.pan}
+ ];
+
+ for (let d of def) {
+ splines[d.name] = {
+ element: $("<div />").addClass("twca" + channel.index).addClass("twine_spline").attr("id", "twca" + channel.index + d.name).hide().appendTo(elChannelSpline),
+ show: function() {
+ $(".twca" + channel.index).hide();
+ splines[d.name].element.show();
+ splines[d.name].spline.redraw();
+ },
+ hide: function() {
+ splines[d.name].element.hide();
+ },
+ channel: d.channel
+ };
+ }
+ for (let d of def) {
+ splines[d.name].spline = new SplineEdit(
+ splines[d.name].element, splineColour,
+ twine.timeline.getTotalBeatDuration,
+ d.constraints, d.name
+ )
+ }
+ }
+
+
+ function addInsert(definition, noCompile) {
+ var container = $("<div />").addClass("twine_channeldetails_insert").appendTo(elInsertsArea);
+ container.css("left", (channel.inserts.length * 500) + "px");
+ var id = insertID ++;
+ var uniqueID = parseInt(channel.index.toString() + id.toString());
+ var t = new twirl.transform.Transform({
+ uniqueID: uniqueID,
+ element: container,
+ definition: definition,
+ splineElement: elChannelSpline,
+ getRegionFunc: function() {
+ return [0, 1];
+ },
+ getDurationFunc: timeline.getTotalBeatDuration,
+ onClose: function() {
+ removeInsert(id);
+ },
+ onAutomationClick: function(state) {
+ if (state && channel.height == heights[0]) {
+ channel.expand(); // TODO: set selected thing in dropdown
+ }
+ },
+ unmanagedAutomation: true,
+ unmanagedModulation: true,
+ host: twine
+ });
+ channel.inserts.push({
+ transform: t,
+ element: container,
+ id: id
+ });
+
+ for (let i in t.parameters) {
+ let paramID = (channel.inserts.length - 1) + "_" + i;
+ let tp = t.parameters[i];
+ splines[paramID] = {
+ element: $("<div />").addClass("twca" + channel.index).addClass("twine_spline").attr("id", "twca" + channel.index + paramID).hide().appendTo(elChannelSpline),
+ show: function() {
+ $(".twca" + channel.index).hide();
+ splines[paramID].element.show();
+ splines[paramID].spline.redraw();
+ },
+ hide: function() {
+ splines[paramID].element.hide();
+ },
+ channel: tp.sendChannel
+ };
+ tp.createAutomationSpline(splines[paramID].element);
+ splines[paramID].spline = tp.automation;
+ }
+ refreshAutomationSelectors();
+ if (!noCompile) channel.compileInstr();
+ }
+
+ this.hasOverlap = function(clip, proposedBeat, proposedLength) {
+ if (!proposedBeat) proposedBeat = clip.data.position;
+ if (!proposedLength) proposedLength = clip.data.playLength;
+ var clipEnd;
+ var proposedEnd;
+ for (var i in channel.clips) {
+ var c = channel.clips[i];
+ if (c && c != clip) {
+ clipEnd = c.data.position + c.data.playLength;
+ proposedEnd = proposedBeat + proposedLength;
+ if ((proposedBeat < clipEnd && proposedEnd > c.data.position) || (c.data.position > proposedBeat && clipEnd < proposedEnd)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ };
+
+ function refreshInserts() {
+ elInsertsArea.empty();
+ for (let i in channel.inserts) {
+ var el = channel.inserts[i].element;
+ el.css("left", (i * 500) + "px");
+ elInsertsArea.append(el);
+ }
+ }
+
+ this.showDetails = function() {
+ if (!elAddInsert) {
+ elAddInsert = $("<div />").addClass("twine_channeldetails_insertnew");
+ elInsertsArea = $("<div />").addClass("twine_channeldetails_inserts");
+ var data = {};
+ for (var c of twirl.appdata.transforms) {
+ var catName = c.name;
+ for (var t of c.contents) {
+ if (t.twine) {
+ if (!data[c.name]) {
+ data[c.name] = {
+ name: c.name,
+ description: c.description,
+ contents: []
+ };
+ }
+ data[c.name].contents.push(t);
+ }
+ }
+ }
+ var ttv = new twirl.transform.TreeView({
+ element: elAddInsert,
+ items: Object.values(data),
+ click: addInsert
+ });
+ }
+ if (twine.timeline.selectedChannel != channel) {
+ twine.timeline.selectedChannel = channel;
+ $(".twine_channelcontrol").css("background-color", "var(--bgColor2)");
+ elChannelControl.css("background-color", "var(--bgColor1)");
+ $("#twine_channeldetails").append(elAddInsert).append(elInsertsArea).show();
+ }
+ twine.ui.showPane(twine.ui.pane.CHANNEL);
+ };
+
+ this.compileInstr = async function() {
+ if (twine.offline) return;
+ var instrName = "twine_channel" + channel.index;
+ var instr = "instr " + instrName + "\n"
+ + "aL, aR bus_read \"" + channel.getCsChannelName() + "\"\n";
+ for (let i of channel.inserts) {
+ instr += "chnset aL, \"twstfeedL\"\n"
+ + "chnset aR, \"twstfeedR\"\n"
+ + "aoutL, aoutR subinstr \"" + i.transform.instr + "\", " + i.transform.uniqueID + "\n"
+ + "aL, aR twst_setapplymode chnget:i(\"applymode" + i.transform.uniqueID + "\"), aL, aR, aoutL, aoutR\n"
+ }
+ instr += "kamp chnget \"" + channel.defaultChannels.amp + "\"\n" +
+ "kpan chnget \"" + channel.defaultChannels.pan + "\"\n" +
+ "kmute chnget \"" + channel.defaultChannels.mute + "\"\n" +
+ "ksolo chnget \"" + channel.defaultChannels.solo + "\"\n" +
+ "kaudible = (1 - kmute) * ((ksolo == -1 || ksolo == " + channel.index + ") ? 1 : 0)\n" +
+ "aL *= kamp * (1 - kpan) * kaudible\naR *= kamp * kpan * kaudible\n"
+ instr += "bus_mix \"twine_master\", aL, aR\n";
+ instr += "endin";
+ await app.compileOrc(instr);
+ };
+
+ this.automationChanged = function() {
+ var changed = false;
+ for (let i in splines) {
+ if (splines[i].spline && splines[i].spline.changed) {
+ console.log("automation changed");
+ return true;
+ }
+ }
+ return changed;
+ };
+
+ this.getAutomationData = function(start, end) {
+ var data = [];
+ for (let i in splines) {
+ var linsegData = splines[i].spline.getLinsegData(start, end, true);
+ if (linsegData) {
+ data.push("chnset linseg:k(" + linsegData + "), \"" + splines[i].channel + "\"");
+ }
+ }
+ return data;
+ };
+
+ this.refreshOffset = function() {
+ channel.offset = elChannelClips.offset();
+ };
+
+ this.redraw = function(noClipWaveRedraw) {
+ channel.width = parseFloat(elChannelClips.css("width"));
+ channel.refreshOffset();
+ refreshAutomationSelectors();
+ for (let c in channel.clips) {
+ if (channel.clips[c]) channel.clips[c].redraw(noClipWaveRedraw);
+ }
+
+ if (channel.height > heights[0]) {
+ for (var d in splines) {
+ console.log(splines[d]);
+ splines[d].spline.setRange(timeline.data.regionStart, timeline.data.regionEnd);
+ }
+ }
+ };
+
+ this.showAutomation = function(groupIndex, nameIndex) {
+ elAutomationSelectGroup.val(groupIndex).change();
+ elAutomationSelector.val(nameIndex).change();
+ };
+
+ var elAutomationSelectGroup;
+ var elAutomationSelector;
+ function refreshAutomationSelectors() {
+ if (channel.height <= heights[0]) {
+ if (elAutomationSelectGroup && elAutomationSelector) {
+ elAutomationSelectGroup.hide();
+ elAutomationSelector.hide();
+ }
+ return;
+ }
+
+ var valGroup = (elAutomationSelectGroup) ? elAutomationSelectGroup.val() : 0;
+ var valItem = (elAutomationSelector) ? elAutomationSelector.val() : 0;
+
+ var items = [
+ {name: "Mixer", items: [
+ {name: "Gain", onselect: function(){
+ splines.default_amp.show();
+ }},
+ {name: "Pan", onselect: function(){
+ splines.default_pan.show();
+ }}
+ ]}
+ ];
+
+ for (let i in channel.inserts) {
+ let ci = channel.inserts[i];
+ var obj = {name: ci.transform.name, items: []};
+ items.push(obj);
+ for (let it in ci.transform.parameters)
+ obj.items.push({
+ name: ci.transform.parameters[it].definition.name,
+ onselect: function() {
+ splines[i + "_" + it].show();
+ }
+ });
+ }
+
+ if (!elAutomationSelectGroup && !elAutomationSelector) {
+ var el = $("<div />").addClass("twine_automationselectors").appendTo(elChannelControl);
+ elAutomationSelectGroup = $("<select />").addClass("twine_automationselect").appendTo(el).on("change", changeAutomationGroup);
+ el.append("<br />");
+ elAutomationSelector = $("<select />").addClass("twine_automationselect").appendTo(el).on("change", changeAutomationItem);
+
+ for (let i in items) {
+ $("<option />").val(i).text(items[i].name).appendTo(elAutomationSelectGroup);
+ }
+ }
+
+ elAutomationSelectGroup.show();
+ elAutomationSelector.show();
+
+ function changeAutomationGroup() {
+ var val = $(this).val();
+ elAutomationSelector.empty();
+ for (let si in items[val].items) {
+ $("<option />").val(si).text(items[val].items[si].name).appendTo(elAutomationSelector);
+ }
+ elAutomationSelector.val(0).change();
+ }
+
+ function changeAutomationItem() {
+ var groupVal = elAutomationSelectGroup.val();
+ var val = $(this).val();
+ items[groupVal].items[val].onselect();
+ }
+
+ elAutomationSelectGroup.val(valGroup).change();
+ elAutomationSelector.val(valItem).change();
+ }
+
+ this.setHeight = function(h) {
+ if (h < heights[0]) h = heights[0];
+ channel.height = h;
+ elChannel.css("height", channel.height + "px");
+ if (h == heights[0]) {
+ elChannelSpline.hide();
+ } else {
+ elChannelSpline.show();
+ for (let i of channel.inserts) {
+ i.transform.redraw(timeline.data.regionStart, timeline.data.regionEnd);
+ }
+ }
+ channel.redraw();
+ };
+
+ this.expand = function() {
+ channel.setHeight(heights[1]);
+ };
+
+ this.contract = function() {
+ channel.setHeight(heights[0]);
+ };
+
+ (async function boot() {
+ channel.redraw();
+ if (!twine.offline) {
+ await app.setControlChannel(channel.defaultChannels.amp, 0.8);
+ await app.setControlChannel(channel.defaultChannels.pan, 0.5);
+ await app.setControlChannel(channel.defaultChannels.mute, 0);
+ await channel.compileInstr();
+ }
+ await createDefaultSplines();
+ })();
+}; \ No newline at end of file
diff --git a/site/app/twine/clip.js b/site/app/twine/clip.js
new file mode 100644
index 0000000..4705d95
--- /dev/null
+++ b/site/app/twine/clip.js
@@ -0,0 +1,769 @@
+var Clip = function(twine, data, parent) {
+ var clip = this;
+ var loaded = false;
+ var waveformClip;
+ var waveformEdit;
+ var datatable;
+ this.channel = null;
+ var minWidth = 10;
+ this.types = {AUDIO: 0, SCRIPT: 1};
+
+
+ if (!data) {
+ var id = twine.getNewID();
+ var data = {
+ name: "Clip " + id,
+ type: (parent) ? parent.type : null,
+ id: id,
+ clipindex: null,
+ playLength: 1,
+ pitch: 1,
+ colour: "#" + (Math.random() * 0xFFFFFF << 0).toString(16),
+ position: 0,
+ // debugs:
+ duration: 1,
+ warp: 0,
+ loop: 0,
+ script: ""
+ };
+ } else {
+ data.id = twine.getNewID();
+ loaded = true;
+ }
+
+ this.data = data;
+ Object.defineProperty(this, "colour", {
+ get: function() { return data.colour; },
+ set: function(x) {
+ data.colour = x;
+ clip.element.css("background-color", data.colour);
+ }
+ });
+
+ Object.defineProperty(this, "isAudio", {
+ get: function() { return (clip.data.type == clip.types.AUDIO); },
+ set: function(x) {}
+ });
+
+ twine.undo.add("add clip", function(){
+ clip.destroy();
+ twine.timeline.redraw();
+ });
+
+ this.exportData = async function() {
+ // tablecopyout messes first few values. so loop...
+ var len = await app.getCsound().tableLength(datatable);
+ var items = [];
+ for (var i = 0; i < len; i ++) {
+ items.push(await app.getCsound().tableGet(datatable, i));
+ }
+ var local = {};
+ for (var d in dataMode) {
+ if (dataMode[d] < 0) {
+ local[d] = data[d];
+ }
+ }
+ return {table: items, local: local};
+ };
+
+ this.importData = async function(loadData) {
+
+ if (datatable && clip.data.clipindex) {
+ await app.insertScoreAsync("twine_removeclip", [clip.data.clipindex]);
+ }
+ datatable = await twine.timeline.copyNewTableIn(loadData.table);
+ var ndata = await app.insertScoreAsync("twine_importclip", [datatable]);
+ for (var d in loadData.local) {
+ data[d] = loadData.local[d];
+ }
+ data.clipindex = ndata.data.clipindex;
+ await getDataFromTable();
+ console.log("import", loadData, data);
+ loaded = true;
+ clip.redraw(); // race here?
+ };
+
+ this.destroy = function(onComplete) {
+ function done() {
+ clip.element.remove();
+ clip.channel.removeClip(clip);
+ if (onComplete) {
+ onComplete();
+ }
+ }
+ if (clip.isAudio) {
+ app.insertScore("twine_removeclip", [0, 1, app.createCallback(done), clip.data.clipindex]);
+ } else {
+ done();
+ }
+ };
+
+ var dataMode = {
+ fnL: 0, fnR: 1, divisionsPerBeat: 2, duration: 3, beatsLength: 4, utilisedLength: 5,
+ warpMode: 6, pitch: 7, amp: 8, fftSize: 9, txtWinSize: 10, txtRandom: 11, txtOverlap: 12,
+ loop: 13, warp: 14, txtWinType: 15, utilisedStart: 16, phaseLock: 17, sr: 18,
+ // warp points are after this+ in table
+ position: -1, name: -2, clipindex: -3, playLength: -4, type: -5
+ };
+
+
+ this.element = $("<div />").addClass("twine_clip").css({
+ "background-color": data.colour
+ }).on("contextmenu", function(e){
+ return twirl.contextMenu.show(e, [
+ {name: "Delete", click: function(){
+ clip.destroy();
+ }},
+ {name: "Audition", click: function(){
+ clip.play();
+ }}
+ ]);
+ }).click(function(e){
+ if (e.ctrlKey) {
+ twine.timeline.selectedClips.push(clip);
+ } else {
+ $(".twine_clip").css("outline", "none");
+ twine.timeline.selectedClips = [clip];
+ }
+ var uiType;
+ var cui = twine.ui.clip;
+ clip.markSelected();
+ if (clip.isAudio) {
+ uiType = twine.ui.pane.CLIPAUDIO;
+ var items = [
+ "name", "colour", "amp", "warp", "warpMode", "pitch",
+ "fftSize", "txtWinSize", "txtRandom", "txtOverlap",
+ "txtWinType", "phaseLock"
+ // , "loop"
+ ];
+ for (let i of items) {
+ cui[i].setValue(data[i]);
+ }
+ showEditWaveform($("#twine_clipdetailsrightaudio"));
+ } else {
+ uiType = twine.ui.pane.CLIPSCRIPT;
+ cui.scriptEdit.setValue(data.script);
+ }
+ twine.ui.showPane(uiType);
+ });
+
+ var elWaveClip = $("<div />").css({position: "absolute", width: "100%", height: "100%", top: "0px", left: "0px"}).appendTo(clip.element);
+ var elWaveText = $("<div />").css({position: "absolute", width: "100%", height: "100%", top: "0px", left: "0px", "font-size": "var(--fontSizeSmall)", color: "var(--fgColor1)"}).text(data.name).appendTo(clip.element);
+
+ var elResizeLeft = $("<div />").addClass("twine_clip_edge_left").appendTo(clip.element);
+ var elResizeRight = $("<div />").addClass("twine_clip_edge_right").appendTo(clip.element);
+ var elMove = $("<div />").addClass("twine_clip_centre").appendTo(clip.element);
+ var elWaveEdit = $("<div />").css({width: "100%", height: "100%", top: "0px", left: "0px"});
+
+ async function getDataFromTable() {
+ if (!clip.isAudio) return;
+ async function setFromKey(key) {
+ if (dataMode[key] < 0) return;
+ var value = await app.getCsound().tableGet(datatable, dataMode[key])
+ data[key] = value;
+ }
+
+ for (var k in dataMode) {
+ await setFromKey(k);
+ }
+ }
+
+ function setClipAudioUnique(onComplete) {
+ if (!clip.isAudio) return onComplete();
+ twirl.loading.show();
+ var cbid = app.createCallback(async function(ndata){
+ await getDataFromTable();
+ twirl.loading.hide();
+ if (onComplete) onComplete();
+ });
+ app.insertScore("twine_setclipaudiounique", [0, 1, cbid]);
+ }
+
+ function getScriptInstrName() {
+ return "twinescript" + id;
+ }
+
+ this.setScript = function(script, onready) {
+ var originalScript = clip.data.script;
+ if (script) {
+ clip.data.script = script;
+ }
+ var instr = "instr " + getScriptInstrName() + "\n" +
+ "iduration = p5\nichannel = p6\n" +
+ clip.data.script + "\nendin";
+ app.compileOrc(instr).then(function(status){
+ if (status >= 0 && onready) { // errors will be caught by app and shown
+ twine.undo.add("set script", function(){
+ clip.data.script = originalScript;
+ if (twine.timeline.selectedClip == clip) {
+ cui.scriptEdit.setValue(data.script);
+ }
+ });
+ onready();
+ }
+ });
+ };
+
+ this.initScript = function() {
+ data.warp = 1;
+ data.duration = 1;
+ clip.data.playLength = 4;
+ clip.data.type = clip.types.SCRIPT;
+ clip.data.script = "; your Csound instrument here";
+ loaded = true;
+ };
+
+ function reloadAfterEdit(tables) {
+ twirl.loading.show("Loading");
+ var cbid = app.createCallback(async function(ndata){
+ datatable = ndata.datatable;
+ await getDataFromTable();
+ clip.redraw();
+ twine.setVisible(true);
+ twigs.setVisible(false);
+ twist.setVisible(false);
+ twirl.loading.hide();
+ });
+ var call = [0, 1, cbid, data.clipindex];
+ for (let t of tables) {
+ call.push(t);
+ }
+ app.insertScore("twine_clipreplacetables", call);
+ }
+
+ this.editInTwist = function(asUnique) {
+ if (!window.twist) return twirl.prompt.show("twist is unavailable in this session");
+ function edit() {
+ twist.boot(twine);
+ twist.bootAudio(twine);
+ var tables = [data.fnL];
+ if (data.fnR) tables.push(data.fnR);
+ twist.loadFileFromFtable(data.name, tables, function(ndata){
+ if (ndata.status > 0) {
+ twine.setVisible(false);
+ twist.setVisible(true);
+ }
+ }, reloadAfterEdit);
+ }
+
+ function checksr() { // twist uses tfi transforms that may require sample sr to be running sr..
+ if (twine.sr != data.sr) {
+ twirl.loading.show();
+ var cbid = app.createCallback(async function(ndata){
+ await getDataFromTable();
+ twirl.loading.hide();
+ edit();
+ });
+ app.insertScore("twine_convertsr", [0, 1, cbid, data.clipindex, twine.sr]);
+ } else {
+ edit();
+ }
+ }
+ if (asUnique) {
+ setClipAudioUnique(checksr);
+ } else {
+ checksr();
+ }
+
+ };
+
+ this.editInTwigs = function(asUnique) {
+ if (!window.twigs) return twirl.prompt.show("twigs is unavailable in this session");
+ function edit() {
+ twigs.boot(twine);
+ var tables = [data.fnL];
+ if (data.fnR) tables.push(data.fnR);
+ twigs.loadFileFromFtable(data.name, tables, function(ndata){
+ if (ndata.status > 0) {
+ twine.setVisible(false);
+ twigs.setVisible(true);
+ }
+ }, reloadAfterEdit);
+ }
+ if (asUnique) {
+ setClipAudioUnique(edit);
+ } else {
+ edit();
+ }
+ };
+
+ this.setData = function(modeString, v, onComplete) {
+ data[modeString] = v;
+ if (dataMode[modeString] < 0) {
+ if (modeString == "name") {
+ elWaveText.text(data.name);
+ setClipWaveform();
+ }
+ return;
+ }
+
+ if (!twine.offline || !clip.isAudio) app.getCsound().tableSet(datatable, dataMode[modeString], v);
+
+ if (onComplete) onComplete();
+ };
+
+ var playbackcbid;
+ this.play = function(onCallback) {
+ var instr;
+ var args;
+ var channel = clip.channel.getCsChannelName();
+ var cbid = app.createCallback(function(ndata) {
+ if (ndata.status == 0) {
+ app.removeCallback(ndata.cbid);
+ playbackcbid = null;
+ } else {
+ playbackcbid = ndata.cbid;
+ }
+ if (onCallback) {
+ onCallback(ndata);
+ }
+ }, true);
+ if (clip.isAudio) {
+ instr = "ecp_playaudition";
+ args = [0, data.playLength, cbid, data.clipindex, data.playLength, channel];
+ } else {
+ instr = getScriptInstrName();
+ args = [0, data.playLength, cbid, data.playLength, channel];
+ }
+ app.insertScore(instr, args);
+ };
+
+ this.stop = function(onCallback) {
+ if (!playbackcbid) return;
+ app.insertScore("ecp_stopaudition", [0, 1, playbackcbid]);
+ };
+
+ async function getSourceTableData() {
+ if (!clip.isAudio) return;
+ var wavedata = [];
+ var tbL = await app.getTable(data.fnL);
+ wavedata.push(tbL);
+ if (data.hasOwnProperty("fnR") && data.fnR > 0) {
+ var tbR = await app.getTable(data.fnR);
+ wavedata.push(tbR);
+ }
+ return wavedata;
+ }
+
+ async function setClipWaveform(noRedraw) {
+ if (twine.offline || !clip.isAudio || !twine.storage.showClipWaveforms) return;
+ if (!waveformClip) {
+ waveformClip = new Waveform({
+ target: elWaveClip,
+ allowSelect: false,
+ showGrid: false,
+ bgColor: "rgb(255, 255, 255, 0)",
+ fgColor: "#000000"
+ });
+ setTimeout(async function(){
+ var sourceTables = await getSourceTableData();
+ waveformClip.setData(sourceTables, data.duration);
+ }, 100);
+ } else if (!noRedraw) {
+ console.log("redraw wave");
+ waveformClip.redraw();
+ }
+ }
+
+ async function showEditWaveform(target) {
+ if (twine.offline || !clip.isAudio) return;
+ target.empty().append(elWaveEdit);
+ if (!waveformEdit) {
+ waveformEdit = new Waveform({
+ target: elWaveEdit,
+ allowSelect: true,
+ showGrid: true,
+ latencyCorrection: twirl.latencyCorrection // , markers:
+ });
+ setTimeout(async function(){
+ var sourceTables = await getSourceTableData();
+ waveformEdit.setData(sourceTables, data.duration);
+ }, 100);
+ } else {
+ waveformEdit.redraw();
+ }
+ }
+
+ this.setWarp = function(v) {
+ clip.setData("warp", v);
+ if (!data.warp && !data.loop && data.playLength > data.duration) {
+ data.playLength = data.duration;
+ clip.setSize();
+ }
+ };
+
+ this.setLoop = function(v) {
+ clip.setData("loop", v);
+ if (!data.warp && !data.loop && data.playLength > data.duration) {
+ data.playLength = data.duration;
+ clip.setSize();
+ }
+ };
+
+ this.setPitch = function(semitones) {
+ var pitchRatio = Math.pow(2, (semitones / 12));
+ clip.setData("pitch", semitones);
+ if (data.warpMode == 0 && data.loop == 0 && data.warp == 0) {
+ data.playLength = data.duration / pitchRatio;
+ clip.setSize();
+ }
+ };
+
+ this.setWarpMode = function(v) {
+ var prevMode = data.warpMode;
+ clip.setData("warpMode", v);
+ if (prevMode == 0 && data.warpMode != 0 && !data.loop && !data.warp) {
+ data.playLength = data.duration;
+ clip.setSize();
+ }
+ };
+
+ this.setSize = function(noWaveRedraw) {
+ var width = data.playLength * twine.timeline.pixelsPerBeat;
+ clip.element.css("width", width + "px");
+ setClipWaveform(noWaveRedraw);
+ }
+
+ this.redraw = function(noWaveRedraw) {
+ if (!loaded) return;
+ var b = twine.timeline.beatRegion;
+ clip.setSize(noWaveRedraw);
+ var endPos = data.position + data.playLength;
+ if (endPos < b[0] || data.position > b[1]) {
+ return clip.element.hide();
+ }
+
+ var css = {
+ height: clip.channel.height + "px",
+ left: (data.position - b[0]) * twine.timeline.pixelsPerBeat + "px"
+ };
+ elWaveText.text(data.name);
+ clip.element.show().css(css);
+ if (endPos > twine.timeline.beatRegion[1] - 8) {
+ var extension = endPos + 8;
+ twine.timeline.extend(twine.timeline.beatRegion[1] + extension);
+ }
+ };
+
+ this.clone = async function() {
+ var newData = Object.assign({}, data);
+ newData.id = twine.getNewID();
+ var c = new Clip(twine, newData, clip);
+ clip.channel.addClip(c);
+ if (!twine.offline && clip.isAudio) {
+ var ndata = await app.insertScoreAsync("twine_cloneclip", [clip.data.clipindex]);
+ await c.loadFromDataTable(ndata.datatable, ndata.clipindex);
+
+ } else {
+ loaded = true;
+ c.setScript();
+ c.redraw();
+ }
+ return c;
+ };
+
+
+ async function loadData(ndata, name, colour, defaultLength) {
+ twirl.loading.show("Loading");
+ if (ndata.status == -1) {
+ return twirl.errorHandler("File not valid");
+ } else if (ndata.status == -2) {
+ return twirl.errorHandler("File too large");
+ }
+ datatable = ndata.data.datatable;
+ await getDataFromTable();
+ data.clipindex = ndata.data.clipindex;
+ if (name) {
+ data.name = name;
+ }
+ setTimeout(function(){
+ if (defaultLength) {
+ data.playLength = data.duration / (60 / twine.timeline.data.bpm);
+ console.log("deflength", data.playLength);
+ }
+ if (!colour) colour = twine.randomColour();
+ data.colour = colour;
+ loaded = true;
+ clip.redraw();
+ }, 50); // csound race
+ };
+
+ this.loadFromDataTable = async function(newDatatable, clipindex) {
+ datatable = newDatatable;
+ await getDataFromTable();
+ data.clipindex = clipindex;
+ clip.data.type = clip.types.AUDIO;
+ loaded = true;
+ setTimeout(clip.redraw, 20);
+ //clip.redraw();
+ };
+
+ this.loadFromFtables = function(name, tables, colour) {
+ clip.data.type = clip.types.AUDIO;
+ twirl.loading.show("Loading");
+ var cbid = app.createCallback(async function(ndata){
+ await loadData(ndata, name, colour);
+ twirl.loading.hide();
+ });
+ var call = [0, 1, cbid];
+ for (let t of tables) {
+ call.push(t);
+ }
+ app.insertScore("twine_loadftables", call);
+ };
+
+ this.loadFromPath = function(path, colour) {
+ clip.data.type = clip.types.AUDIO;
+ if (twine.offline) {
+ loaded = true;
+ clip.redraw();
+ return;
+ }
+ twirl.loading.show("Loading");
+ var cbid = app.createCallback(async function(ndata){
+ await loadData(ndata, path, colour, true);
+ twirl.loading.hide();
+ });
+ app.insertScore("twine_loadpath", [0, 1, cbid, path]);
+ };
+
+ this.createSilence = function(stereo, duration, name, colour) {
+ clip.data.type = clip.types.AUDIO;
+ twirl.loading.show("Creating");
+ var cbid = app.createCallback(async function(ndata){
+ await loadData(ndata, name, colour);
+ twirl.loading.hide();
+ });
+ app.insertScore("twine_createblankclip", [0, 1, cbid, stereo, duration]);
+ };
+
+ function getMaxClipWidth() {
+ var maxWidth = 9999;
+ if (!data.warp && !data.loop) {
+ maxWidth = data.duration * twine.timeline.pixelsPerBeat;
+ }
+ return maxWidth;
+ }
+
+ this.markSelected = function (unselected) {
+ if (unselected) {
+ clip.element.css("outline", "none");
+ } else {
+ clip.element.css("outline", "1px dashed white");
+ }
+ };
+
+ clip.movement = {
+ startX: 0, startY: 0, startXabs: 0, startYabs: 0, clipWidth: 0,
+ clipLeft: 0, clipTop: 0, lastLeft: 0, isCopying: false, lastYabs: 0, extendHold: false, doClipRedraw: false, originalClipData: null, mouseMoveInnerFunc: null, clonedClips: null, masterClip: null, moved: false, channel: null,
+ mouseDown: function(e, dragType) {
+ e.preventDefault();
+ e.stopPropagation();
+ var cm = clip.movement;
+ cm.moved = false;
+ cm.originalClipData = [];
+ cm.clonedClips = [];
+ cm.mouseMoveInnerFunc = function(e) {
+ clip.movement.doDragInner(e, dragType);
+ };
+ for (let c of twine.timeline.selectedClips) {
+ cm.originalClipData.push({
+ clip: c,
+ position: c.data.position,
+ playLength: c.data.playLength
+ });
+ c.movement.mouseDownInner(e, dragType);
+ }
+ $("html").on("mouseup", cm.endDragMaster);
+ },
+ mouseDownInner: function(e, dragType) {
+ var cm = clip.movement;
+ $("html").on("mousemove", cm.mouseMoveInnerFunc).on("mouseup", cm.endDrag);
+ cm.masterClip = clip; // for cloning
+ cm.channel = clip.channel;
+ cm.originalPlaylength = data.playlength;
+ cm.originalPosition = data.position;
+ cm.isCopying = false;
+ cm.clipWidth = parseFloat(clip.element.css("width"));
+ cm.clipTop = parseFloat(clip.element.css("top"));
+ cm.clipLeft = parseFloat(clip.element.css("left"));
+ cm.startXabs = e.clientX;
+ cm.startYabs = e.clientY;
+ cm.startX = cm.startXabs - e.target.getBoundingClientRect().left;
+ cm.startY = cm.startYabs - e.target.getBoundingClientRect().top;
+ cm.lastLeft = (e.clientX - cm.startX - clip.channel.offset.left);
+ cm.lastYabs = cm.startYabs;
+ //$("#container").css("cursor", "e-resize");
+ },
+ endDragMaster: function(e) {
+ var cm = clip.movement;
+ $("html").off("mouseup", cm.endDragMaster);
+ if (!cm.moved) return;
+ var clipData = [...cm.originalClipData];
+ var clonedClips = [...cm.clonedClips];
+ console.log("add move undo");
+ twine.undo.add("move/resize clip", function(){
+ clipData.forEach(function(d){
+ d.clip.data.position = d.position;
+ d.clip.data.playLength = d.playLength;
+ d.clip.redraw();
+ });
+ clonedClips.forEach(function(c){
+ c.destroy();
+ });
+ });
+ },
+ endDrag: function(e) {
+ e.preventDefault();
+ var cm = clip.movement;
+ cm.isCopying = false;
+ $("html").off("mouseup", cm.endDrag).off("mousemove", cm.mouseMoveInnerFunc);
+ $("#container").css("cursor", "pointer");
+ if (cm.doClipRedraw) {
+ setClipWaveform();
+ }
+ },
+ doDrag: function(e, dragType) {
+ e.preventDefault();
+ //$("html").off("mouseup", this.initialMouseUp);
+ twine.timeline.selectedClips.forEach(function(c){
+ c.movement.doDragInner(e, dragType);
+ });
+ },
+ setExtendHold: function() {
+ var cm = clip.movement;
+ cm.extendHold = true;
+ setTimeout(function() {
+ cm.extendHold = false;
+ }, 250);
+ },
+ doDragInner: async function (e, dragType) {
+ var cm = clip.movement;
+ if (dragType == "right") {
+ var maxWidth = getMaxClipWidth();
+ var xMovement = e.clientX - cm.startXabs;
+ var newWidth = xMovement + cm.clipWidth;
+ newWidth = twine.timeline.roundToGrid(newWidth);
+ if (newWidth > maxWidth) newWidth = maxWidth;
+ if (newWidth < minWidth) newWidth = minWidth;
+ if (newWidth != parseFloat(clip.element.css("width"))) {
+ cm.moved = true;
+ cm.doClipRedraw = true;
+ }
+ var playLength = newWidth / twine.timeline.pixelsPerBeat;
+ if (!cm.masterClip.channel.hasOverlap(cm.masterClip, null, playLength)) {
+ data.playLength = playLength;
+ clip.element.css("width", newWidth + "px");
+ }
+ } else if (dragType == "left") {
+ var maxWidth = getMaxClipWidth();
+ var xMovement = e.clientX - cm.startXabs;
+ var left = cm.clipLeft + xMovement;
+ //var left = (e.clientX - cm.startX - clip.channel.offset.left);
+ left = twine.timeline.roundToGrid(left);
+ if (left < 0) left = 0;
+ var newWidth = (cm.clipWidth - left) + cm.clipLeft;
+ var cWidth, cLeft;
+ if (newWidth < minWidth) {
+ cWidth = minWidth, cm.clipLeft + minWidth; //(minWidth - left) + clipLeft;
+ } else if (newWidth > maxWidth) {
+ cWidth = maxWidth, cLeft = cm.lastLeft;
+ } else {
+ lastLeft = left;
+ cWidth = newWidth, cLeft = left;
+ }
+ if (cWidth != parseFloat(clip.element.css("width"))) {
+ cm.moved = true;
+ cm.doClipRedraw = true;
+ }
+ var position = Math.min(0, (left / twine.timeline.pixelsPerBeat) + twine.timeline.beatRegion[0]);
+ var playLength = newWidth / twine.timeline.pixelsPerBeat;
+ if (!cm.masterClip.channel.hasOverlap(cm.masterClip, position, playLength)) {
+ data.position = position;
+ data.playLength = playLength
+ clip.element.css({width: cWidth + "px", left: cLeft + "px"});
+ }
+ } else {
+ if (cm.extendHold) return;
+ if (e.ctrlKey && !cm.isCopying) {
+ cm.isCopying = true;
+ cm.masterClip = await clip.clone();
+ }
+ var xMovement = e.clientX - cm.startXabs;
+ var left = xMovement + cm.clipLeft;
+ left = twine.timeline.roundToGrid(left);
+
+ var yMovement = e.clientY - cm.lastYabs;
+ var top = (e.clientY - cm.lastYabs) + cm.clipTop;
+ //console.log(top);
+ var ttop = (e.clientY - cm.startY) + cm.clipTop;
+ var tshift = ttop / cm.channel.height; //cm.masterClip.channel.height;
+ tshift = (tshift > 0) ? Math.floor(tshift) : Math.ceil(tshift);
+ console.log(tshift);
+
+ var channelShift = top / cm.masterClip.channel.height;
+ channelShift = (channelShift > 0) ? Math.floor(channelShift) : Math.ceil(channelShift);
+
+ if (channelShift != 0 || left != parseFloat(clip.element.css("left"))) {
+ cm.moved = true;
+ }
+ if (channelShift != 0) {
+ cm.lastYabs = e.clientY;
+ var newChannel = cm.masterClip.channel.index + channelShift;
+ if (newChannel < twine.timeline.channels.length && newChannel >= 0) {
+ if (!twine.timeline.channels[newChannel].hasOverlap(cm.masterClip)) {
+ cm.masterClip.channel.removeClip(cm.masterClip);
+ twine.timeline.channels[newChannel].addClip(cm.masterClip);
+ }
+ }
+ }
+
+ var doRedraw = false;
+ var extension = cm.masterClip.data.playLength + 8;
+ var newBeats;
+ var d = twine.timeline.data;
+ if (left < 0) {
+ cm.setExtendHold();
+ extension = -extension;
+ left = 0;
+ newBeats = twine.timeline.beatRegion[1];
+ doRedraw = true;
+ }
+
+ var position = (left / twine.timeline.pixelsPerBeat) + twine.timeline.beatRegion[0];
+
+ if (!cm.masterClip.channel.hasOverlap(cm.masterClip, position)) {
+ data.position = position;
+ cm.masterClip.element.css("left", left + "px");
+ }
+
+ if (left + cm.clipWidth > cm.masterClip.channel.width) {
+ cm.setExtendHold();
+ doRedraw = true;
+ newBeats = twine.timeline.beatRegion[1] + extension;
+ twine.timeline.extend(newBeats, true);
+ }
+
+ if (doRedraw) {
+ var extensionRatio = (extension / newBeats);
+ var newStart = d.regionStart + ((d.regionEnd - d.regionStart) * (extensionRatio));
+ var newEnd = d.regionEnd + extensionRatio;
+ newStart = Math.max(0, newStart);
+ newEnd = Math.max(0, newEnd);
+ twine.timeline.setRegion(newStart, newEnd, true);
+ }
+ } // move type
+ } // end doDragInner
+ };
+
+ elMove.mousedown(function(e){
+ clip.movement.mouseDown(e, "mid");
+ });
+ elResizeRight.mousedown(function(e){
+ clip.movement.mouseDown(e, "right");
+ });
+ elResizeLeft.mousedown(function(e){
+ clip.movement.mouseDown(e, "left");
+ });
+
+}; \ No newline at end of file
diff --git a/site/app/twine/flac fucking.js b/site/app/twine/flac fucking.js
new file mode 100644
index 0000000..dcac896
--- /dev/null
+++ b/site/app/twine/flac fucking.js
@@ -0,0 +1,65 @@
+var encoded = [];
+var encodedLength = 0;
+
+function encWriteCallback(buffer, bytes, samples, currentFrame) {
+encoded.push(buffer);
+encodedLength += bytes;
+}
+
+var source = await app.getCsound().getTable(113);
+var encoder = Flac.create_libflac_encoder(48000, 1, 16, 5, source.length, false);
+var init = Flac.init_encoder_stream(encoder, encWriteCallback, null, false, 0);
+var response = Flac.FLAC__stream_encoder_process(encoder, source, source.length);
+Flac.FLAC__stream_encoder_finish(encoder);
+Flac.FLAC__stream_encoder_delete(encoder);
+
+let merged = new Uint8Array(encodedLength);
+let offset = 0;
+encoded.forEach(item => {
+merged.set(item, offset);
+offset += item.length;
+});
+encoded = merged;
+
+
+//var encodedArr = new Uint8Array(encoded);
+var size = encoded.length;
+var decoded = [];
+var currentDataOffset = 0;
+function decReadCallback(bufferSize) {
+var end = currentDataOffset == size ? -1 : Math.min(currentDataOffset + bufferSize, size);
+var _buffer;
+var bytesRead;
+if (end !== -1) {
+//_buffer = encodedArr.subarray(currentDataOffset, end);
+_buffer = encoded.slice(currentDataOffset, end);
+bytesRead = end - currentDataOffset;
+currentDataOffset = end;
+} else {
+bytesRead = 0;
+}
+return {buffer: _buffer, readDataLength: bytesRead, error: false};
+}
+
+function decWriteCallback(buffer, _frameHdr) {
+decoded.push(buffer);
+}
+
+function decErrorCallback(err, errMsg) {
+console.log(err, errMsg);
+}
+
+var decoder = Flac.create_libflac_decoder(false);
+var init = Flac.init_decoder_stream(decoder, decReadCallback, decWriteCallback, decErrorCallback, null, false);
+Flac.setOptions(decoder, {analyseSubframes: false, analyseResiduals: false, enableRawStreamMetadata: false});
+var response = Flac.FLAC__stream_decoder_process_until_end_of_stream(decoder);
+
+/*
+var state = 0;
+var response = true;
+while (state <= 3 && response != false) {
+response &= Flac.FLAC__stream_decoder_process_single(decoder);
+state = Flac.FLAC__stream_decoder_get_state(decoder);
+}
+*/
+Flac.FLAC__stream_decoder_finish(decoder); \ No newline at end of file
diff --git a/site/app/twine/index.html b/site/app/twine/index.html
new file mode 100644
index 0000000..1a8f4f9
--- /dev/null
+++ b/site/app/twine/index.html
@@ -0,0 +1,209 @@
+<html>
+<head>
+<title>twine</title>
+<link rel="stylesheet" href="../twirl/theme.css">
+<link rel="stylesheet" href="../twirl/twirl.css">
+<link rel="stylesheet" href="../twigs/twigs.css">
+<link rel="stylesheet" href="../twist/twist.css">
+<link rel="stylesheet" href="twine.css">
+<script type="text/javascript" src="https://apps.csound.1bpm.net/code/jquery.js"></script>
+<script type="text/javascript" src="https://apps.csound.1bpm.net/code/d3.v7.min.js"></script>
+<script type="text/javascript" src="https://apps.csound.1bpm.net/code/input-knobs.js"></script>
+<!--<script type="text/javascript" src="libflac.min.js"></script>-->
+<script type="text/javascript" src="../base/base.js"></script>
+<script type="text/javascript" src="../base/controls.js"></script>
+<script type="text/javascript" src="../twirl/twirl.js"></script>
+<script type="text/javascript" src="../twirl/appdata.js"></script>
+<script type="text/javascript" src="../twirl/transform.js"></script>
+<script type="text/javascript" src="../twirl/stdui.js"></script>
+<script type="text/javascript" src="../base/waveform.js"></script>
+<script type="text/javascript" src="../base/spline-edit.js"></script>
+<script type="text/javascript" src="../base/analyser.js"></script>
+<script type="text/javascript" src="../twist/twist_ui.js"></script>
+<script type="text/javascript" src="../twist/twist.js"></script>
+<script type="text/javascript" src="../twigs/twigs_ui.js"></script>
+<script type="text/javascript" src="../twigs/twigs.js"></script>
+<script type="text/javascript" src="twine_ui.js"></script>
+<script type="text/javascript" src="timeline.js"></script>
+<script type="text/javascript" src="channel.js"></script>
+<script type="text/javascript" src="clip.js"></script>
+<script type="text/javascript" src="mixer.js"></script>
+<script type="text/javascript" src="twine.js"></script>
+<script type="text/javascript">
+ $(twine_start);
+</script>
+</head>
+<body>
+<div id="twine">
+ <div id="twine_header">
+ <table id="twine_headertable"><tbody><tr>
+ <td id="twine_head_play"></td>
+ <td id="twine_head_snap"></td>
+ <td id="twine_head_showgrid"></td>
+ <td id="twine_head_name"></td>
+ </tr></tbody></table>
+ </div>
+ <div id="twine_menubar"></div>
+ <div id="twine_main">
+ <div id="twine_timeline"></div>
+ <div id="twine_details">
+ <div id="twine_mixer"></div>
+ <div id="twine_channeldetails"></div>
+ <div id="twine_clipdetails">
+ <div id="twine_clipdetailsaudio">
+ <div class="twine_clipdetailsleft">
+ <table><tbody>
+ <tr>
+ <td id="twine_clip_audition"></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td id="twine_clip_colour"></td>
+ <td id="twine_clip_name"></td>
+ <td id="twine_clip_edittwist"></td>
+ <td id="twine_clip_edittwigs"></td>
+ </tr>
+ </tbody></table>
+ <table><tbody>
+ <tr>
+ <td>Read type</td>
+ <td id="twine_clip_warpmode"></td>
+ <td id="twine_clip_warp"></td>
+ <td id="twine_clip_loop"></td>
+ </tr>
+ </tbody></table>
+ <table><tbody id="twine_clipparamsbottom">
+ </tbody></table>
+ </div>
+ <div id="twine_clipdetailsrightaudio" class="twine_clipdetailsright"></div>
+ </div>
+ <div id="twine_clipdetailsscript">
+ <div class="twine_clipdetailsleft">
+ <table><tbody>
+ <tr>
+ <td id="twine_clip_scriptaudition"></td>
+ </tr>
+ <tr>
+ <td id="twine_clip_scriptapply"></td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ <div id="twine_clip_scriptedit" class="twine_clipdetailsright">
+
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+
+
+<div id="twigs">
+ <div id="twigs_hidden_links">
+ <a id="twigs_contact" href="https://csound.1bpm.net/contact/?type=general&app=twigs" target="_blank">Contact</a>
+ <a id="twigs_reportbug" href="https://csound.1bpm.net/contact/?type=report_bug&app=twigs" target="_blank">Report bug</a>
+ <a id="twigs_documentation" href="documentation.html" target="_blank">Documentation</a>
+ </div>
+ <div id="twigs_menubar"></div>
+ <div id="twigs_main">
+ <div id="twigs_sidebar"></div>
+ <div id="twigs_options"></div>
+ <div id="twigs_editor">
+ <div id="twigs_editor_inner">
+ <div id="twigs_playhead"></div>
+ <div id="twigs_selection"></div>
+ </div>
+ <div id="twigs_editor_hscrollouter">
+ <div id="twigs_editor_hscrollinner"></div>
+ </div>
+ <div id="twigs_editor_vscrollouter">
+ <div id="twigs_editor_vscrollinner"></div>
+ </div>
+ <div id="twigs_editor_vzoom"></div>
+ <div id="twigs_editor_hzoom"></div>
+ </div>
+ </div>
+</div>
+
+
+<div id="twist">
+ <div id="twist_menubar"></div>
+ <div id="twist_main">
+ <div id="twist_views">
+ <div id="twist_analyser"></div>
+ <div id="twist_waveforms"></div>
+ <div id="twist_splines"></div>
+ </div>
+ <div id="twist_sidepane">
+ <div id="twist_panetree"></div>
+ </div>
+ <div id="twist_controls">
+ <div id="twist_wavecontrols">
+ <table><tbody><tr id="twist_waveform_tabs"></tr><tbody></table>
+ <table><tbody><tr id="twist_wavecontrols_inner"></tr><tbody></table>
+ </div>
+ <div id="twist_controls_inner"></div>
+ </div>
+ </div>
+ <div id="twist_welcome">
+ <h4>Hello</h4>
+ Hover over icons and parameter names to see what they do. Transforms can be selected
+ from the menu on the left; the current file can have the transform auditioned (previewed) or committed (applied). Check out the help and settings for further tips and customisation.<br />
+ At the moment, there is a limitation on files to around five minutes in duration.
+ <hr />
+ </div>
+ <div id="twist_script" class="fullscreen_overlay">
+ <h3>Scripting</h3>
+ Scripts can be an individual JSON object or an array of objects in which case they will be committed sequentially. Only single transform scripts can be auditioned.
+ <hr />
+ <textarea id="twist_scriptsource" class="twist_devcode"></textarea>
+ <br />
+ <button id="twist_scriptstop">Stop</button>
+ <button id="twist_scriptaudition" class="twist_scriptbutton">Audition</button>
+ <button id="twist_scriptcommit" class="twist_scriptbutton">Commit</button>
+ <button id="twist_scriptloadlast" class="twist_scriptbutton">Load last</button>
+ <button id="twist_scriptloadall" class="twist_scriptbutton">Load all</button>
+ <button id="twist_scriptcancel" class="twist_scriptbutton">Cancel</button>
+ </div>
+ <div id="twist_developer" class="fullscreen_overlay">
+ <h3>Developer console</h3>
+ Code for transforms can be tested here. The code and definition should follow the guidance and API documentation <a id="twist_developer_documentation" href="developer_documentation.html" target="_blank">provided here.</a> The JSON definition should be a single transform as a JSON object, but mutiple transforms may be loaded individually.<br />
+ Contributions of transforms are warmly welcomed and <a id="twist_developer_submit" href="https://csound.1bpm.net/contact/?type=twist_submit" target="_blank">can be submitted here.</a>
+ <h4>Csound code</h4>
+ <textarea class="twist_devcode" id="twist_devcsound"></textarea>
+ <br /><button id="twist_inject_devcsound">Load Csound orchestra code</button>
+ <hr />
+ <h4>JSON transform definition</h4>
+ <textarea class="twist_devcode" id="twist_devjson"></textarea>
+ <br /><button id="twist_inject_devjson">Load JSON</button>
+ <hr />
+ <button id="twist_exit_devcode">Exit</button>
+ </div>
+ <div id="twist_crash">
+ <h2>twist has crashed.</h2>
+ We are working hard on ironing out all the bugs, but some still occur. To help, details of the last transform you attempted to audition or commit have been sent to the developers.
+ <a href=".">Press here to reload the application.</a>
+ <hr />
+ <div id="twist_crash_recovery">Attempting to recover your work...</div>
+ </div>
+ <div id="twist_hidden_links">
+ <a id="twist_contact" href="https://csound.1bpm.net/contact/?type=general&app=twist" target="_blank">Contact</a>
+ <a id="twist_reportbug" href="https://csound.1bpm.net/contact/?type=report_bug&app=twist" target="_blank">Report bug</a>
+ <a id="twist_documentation" href="documentation.html" target="_blank">Documentation</a>
+ </div>
+</div>
+
+
+
+<div id="twine_start">
+ <div id="twine_startinner">
+ <h1>twine</h1>
+ <p>audio arranger</p>
+ <div id="twine_startbig">Press to begin</div>
+ </div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/site/app/twine/libflac.min.js b/site/app/twine/libflac.min.js
new file mode 100644
index 0000000..436767e
--- /dev/null
+++ b/site/app/twine/libflac.min.js
@@ -0,0 +1,23 @@
+var Module=typeof Module!=="undefined"?Module:{};(function(root,factory){if(typeof define==="function"&&define.amd){define(["module","require"],factory.bind(null,root))}else if(typeof module==="object"&&module.exports){var env=typeof process!=="undefined"&&process&&process.env?process.env:root;factory(env,module,module.require)}else{root.Flac=factory(root)}})(typeof self!=="undefined"?self:typeof window!=="undefined"?window:this,function(global,expLib,require){null;var Module=Module||{};var _flac_ready=false;Module["onRuntimeInitialized"]=function(){_flac_ready=true;if(!_exported){setTimeout(function(){do_fire_event("ready",[{type:"ready",target:_exported}],true)},0)}else{do_fire_event("ready",[{type:"ready",target:_exported}],true)}};if(global&&global.FLAC_SCRIPT_LOCATION){Module["locateFile"]=function(fileName){var path=global.FLAC_SCRIPT_LOCATION||"";if(path[fileName]){return path[fileName]}path+=path&&!/\/$/.test(path)?"/":"";return path+fileName};var readBinary=function(filePath){if(ENVIRONMENT_IS_NODE){var ret=read_(filePath,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.responseType="arraybuffer";xhr.addEventListener("load",function(evt){resolve(xhr.response)});xhr.addEventListener("error",function(err){reject(err)});xhr.open("GET",filePath);xhr.send()})}}if(global&&typeof global.fetch==="function"){var _fetch=global.fetch;global.fetch=function(url){return _fetch.apply(null,arguments).catch(function(err){try{var result=readBinary(url);if(result&&result.catch){result.catch(function(_err){throw err})}return result}catch(_err){throw err}})}}var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];function convertJsFunctionToWasm(func,sig){return func}var freeTableIndexes=[];var functionsInTableMap;function addFunctionWasm(func,sig){var table=wasmTable;if(!functionsInTableMap){functionsInTableMap=new WeakMap;for(var i=0;i<table.length;i++){var item=table.get(i);if(item){functionsInTableMap.set(item,i)}}}if(functionsInTableMap.has(func)){return functionsInTableMap.get(func)}var ret;if(freeTableIndexes.length){ret=freeTableIndexes.pop()}else{ret=table.length;try{table.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}}try{table.set(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);table.set(ret,wrapped)}functionsInTableMap.set(func,ret);return ret}function addFunction(func,sig){return addFunctionWasm(func,sig)}var GLOBAL_BASE=1024;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536);this.grow=function(amount){var ret=__growWasmMemory(amount);return ret}},Table:function(opts){var ret=new Array(opts["initial"]);ret.grow=function(by){if(ret.length>=22+5){abort("Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH.")}ret.push(null)};ret.set=function(i,func){ret[i]=func};ret.get=function(i){return ret[i]};return ret},Module:function(binary){},Instance:function(module,info){this.exports=(
+// EMSCRIPTEN_START_ASM
+function a(asmLibraryArg,wasmMemory,wasmTable){var scratchBuffer=new ArrayBuffer(8);var b=new Int32Array(scratchBuffer);var c=new Float32Array(scratchBuffer);var d=new Float64Array(scratchBuffer);function e(index){return b[index]}function f(index,value){b[index]=value}function g(){return d[0]}function h(value){d[0]=value}function i(value){c[0]=value}function j(global,env,buffer){var k=env.memory;var l=wasmTable;var m=new global.Int8Array(buffer);var n=new global.Int16Array(buffer);var o=new global.Int32Array(buffer);var p=new global.Uint8Array(buffer);var q=new global.Uint16Array(buffer);var r=new global.Uint32Array(buffer);var s=new global.Float32Array(buffer);var t=new global.Float64Array(buffer);var u=global.Math.imul;var v=global.Math.fround;var w=global.Math.abs;var x=global.Math.clz32;var y=global.Math.min;var z=global.Math.max;var A=global.Math.floor;var B=global.Math.ceil;var C=global.Math.sqrt;var D=env.abort;var E=global.NaN;var F=global.Infinity;var G=env.fd_write;var H=env.round;var I=env.fd_seek;var J=env.emscripten_resize_heap;var K=env.emscripten_memcpy_big;var L=env.fd_read;var M=env.fd_close;var N=5257216;var O=0;var P=0;var Q=0;
+// EMSCRIPTEN_START_FUNCS
+function Zd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0;a:{if(d>>>0>=13){if((b|0)<1){break a}n=e;m=d+ -13|0;while(1){e=0;d=0;b:{switch(m|0){case 19:d=o[((j<<2)+f|0)+ -128>>2];e=d;h=d>>31;d=o[c+124>>2];e=Ee(e,h,d,d>>31);d=Q;case 18:h=o[((j<<2)+f|0)+ -124>>2];g=h;i=h>>31;h=o[c+120>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 17:h=o[((j<<2)+f|0)+ -120>>2];g=h;i=h>>31;h=o[c+116>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 16:h=o[((j<<2)+f|0)+ -116>>2];g=h;i=h>>31;h=o[c+112>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 15:h=o[((j<<2)+f|0)+ -112>>2];g=h;i=h>>31;h=o[c+108>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 14:h=o[((j<<2)+f|0)+ -108>>2];g=h;i=h>>31;h=o[c+104>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 13:h=o[((j<<2)+f|0)+ -104>>2];g=h;i=h>>31;h=o[c+100>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 12:h=o[((j<<2)+f|0)+ -100>>2];g=h;i=h>>31;h=o[c+96>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 11:h=o[((j<<2)+f|0)+ -96>>2];g=h;i=h>>31;h=o[c+92>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 10:h=o[((j<<2)+f|0)+ -92>>2];g=h;i=h>>31;h=o[c+88>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 9:h=o[((j<<2)+f|0)+ -88>>2];g=h;i=h>>31;h=o[c+84>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 8:h=o[((j<<2)+f|0)+ -84>>2];g=h;i=h>>31;h=o[c+80>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 7:h=o[((j<<2)+f|0)+ -80>>2];g=h;i=h>>31;h=o[c+76>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 6:h=o[((j<<2)+f|0)+ -76>>2];g=h;i=h>>31;h=o[c+72>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 5:h=o[((j<<2)+f|0)+ -72>>2];g=h;i=h>>31;h=o[c+68>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 4:h=o[((j<<2)+f|0)+ -68>>2];g=h;i=h>>31;h=o[c+64>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 3:h=o[((j<<2)+f|0)+ -64>>2];g=h;i=h>>31;h=o[c+60>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 2:h=o[((j<<2)+f|0)+ -60>>2];g=h;i=h>>31;h=o[c+56>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 1:h=o[((j<<2)+f|0)+ -56>>2];g=h;i=h>>31;h=o[c+52>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 0:h=(j<<2)+f|0;i=o[h+ -52>>2];g=i;k=i>>31;i=o[c+48>>2];i=Ee(g,k,i,i>>31)+e|0;g=d+Q|0;g=i>>>0<e>>>0?g+1|0:g;d=o[h+ -48>>2];e=d;k=d>>31;d=o[c+44>>2];e=Ee(e,k,d,d>>31);d=e+i|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -44>>2];e=d;k=d>>31;d=o[c+40>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -40>>2];e=d;k=d>>31;d=o[c+36>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -36>>2];e=d;k=d>>31;d=o[c+32>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -32>>2];e=d;k=d>>31;d=o[c+28>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -28>>2];e=d;k=d>>31;d=o[c+24>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -24>>2];e=d;k=d>>31;d=o[c+20>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -20>>2];e=d;k=d>>31;d=o[c+16>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -16>>2];e=d;k=d>>31;d=o[c+12>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -12>>2];e=d;k=d>>31;d=o[c+8>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -8>>2];e=d;k=d>>31;d=o[c+4>>2];e=Ee(e,k,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;i=d;d=o[h+ -4>>2];e=d;h=d>>31;d=o[c>>2];e=Ee(e,h,d,d>>31);d=i+e|0;g=Q+g|0;g=d>>>0<e>>>0?g+1|0:g;e=d;d=g;break;default:break b}}h=j<<2;k=h+f|0;g=o[a+h>>2];i=e;e=n;h=e&31;o[k>>2]=g+(32<=(e&63)>>>0?d>>h:((1<<h)-1&d)<<32-h|i>>>h);j=j+1|0;if((j|0)!=(b|0)){continue}break}break a}if(d>>>0>=9){if(d>>>0>=11){if((d|0)!=12){if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[f+ -16>>2];i=o[f+ -20>>2];m=o[f+ -24>>2];k=o[f+ -28>>2];l=o[f+ -32>>2];p=o[f+ -36>>2];r=o[f+ -40>>2];q=o[f+ -44>>2];g=o[c>>2];s=g;A=g>>31;g=o[c+4>>2];B=g;C=g>>31;g=o[c+8>>2];z=g;E=g>>31;g=o[c+12>>2];F=g;x=g>>31;g=o[c+16>>2];G=g;H=g>>31;g=o[c+20>>2];D=g;J=g>>31;g=o[c+24>>2];K=g;w=g>>31;g=o[c+28>>2];L=g;M=g>>31;g=o[c+32>>2];I=g;O=g>>31;g=o[c+36>>2];P=g;v=g>>31;c=o[c+40>>2];R=c;S=c>>31;c=0;while(1){g=c<<2;N=g+f|0;T=o[a+g>>2];t=r;g=Ee(r,r>>31,P,v);U=Q;r=p;u=Ee(q,q>>31,R,S);q=u+g|0;g=Q+U|0;g=q>>>0<u>>>0?g+1|0:g;u=q;q=Ee(p,p>>31,I,O);p=u+q|0;g=Q+g|0;g=p>>>0<q>>>0?g+1|0:g;q=p;p=l;u=q;q=Ee(l,l>>31,L,M);l=u+q|0;g=Q+g|0;g=l>>>0<q>>>0?g+1|0:g;q=l;l=k;k=q;q=Ee(l,l>>31,K,w);k=k+q|0;g=Q+g|0;g=k>>>0<q>>>0?g+1|0:g;q=k;k=m;u=q;q=Ee(m,m>>31,D,J);m=u+q|0;g=Q+g|0;g=m>>>0<q>>>0?g+1|0:g;q=m;m=i;u=q;q=Ee(i,i>>31,G,H);i=u+q|0;g=Q+g|0;g=i>>>0<q>>>0?g+1|0:g;q=i;i=h;u=q;q=Ee(h,h>>31,F,x);h=u+q|0;g=Q+g|0;g=h>>>0<q>>>0?g+1|0:g;u=h;h=n;q=Ee(h,h>>31,z,E);n=u+q|0;g=Q+g|0;g=n>>>0<q>>>0?g+1|0:g;q=n;n=d;y=N;u=q;q=Ee(d,d>>31,B,C);d=u+q|0;g=Q+g|0;g=d>>>0<q>>>0?g+1|0:g;u=d;d=j;q=Ee(d,d>>31,s,A);j=u+q|0;g=Q+g|0;g=j>>>0<q>>>0?g+1|0:g;N=j;j=e;q=j&31;j=(32<=(j&63)>>>0?g>>q:((1<<q)-1&g)<<32-q|N>>>q)+T|0;o[y>>2]=j;q=t;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[f+ -16>>2];i=o[f+ -20>>2];m=o[f+ -24>>2];k=o[f+ -28>>2];l=o[f+ -32>>2];p=o[f+ -36>>2];r=o[f+ -40>>2];q=o[f+ -44>>2];g=o[f+ -48>>2];t=o[c>>2];A=t;B=t>>31;t=o[c+4>>2];C=t;z=t>>31;t=o[c+8>>2];E=t;F=t>>31;t=o[c+12>>2];x=t;G=t>>31;t=o[c+16>>2];H=t;D=t>>31;t=o[c+20>>2];J=t;K=t>>31;t=o[c+24>>2];w=t;L=t>>31;t=o[c+28>>2];M=t;I=t>>31;t=o[c+32>>2];O=t;P=t>>31;t=o[c+36>>2];v=t;R=t>>31;t=o[c+40>>2];S=t;N=t>>31;c=o[c+44>>2];T=c;U=c>>31;c=0;while(1){t=c<<2;u=t+f|0;W=o[a+t>>2];t=q;s=Ee(q,q>>31,S,N);y=Q;q=r;V=Ee(g,g>>31,T,U);s=V+s|0;g=Q+y|0;g=s>>>0<V>>>0?g+1|0:g;y=s;s=Ee(r,r>>31,v,R);r=y+s|0;g=Q+g|0;g=r>>>0<s>>>0?g+1|0:g;s=r;r=p;y=s;s=Ee(p,p>>31,O,P);p=y+s|0;g=Q+g|0;g=p>>>0<s>>>0?g+1|0:g;s=p;p=l;y=s;s=Ee(l,l>>31,M,I);l=y+s|0;g=Q+g|0;g=l>>>0<s>>>0?g+1|0:g;s=l;l=k;k=s;s=Ee(l,l>>31,w,L);k=k+s|0;g=Q+g|0;g=k>>>0<s>>>0?g+1|0:g;s=k;k=m;y=s;s=Ee(m,m>>31,J,K);m=y+s|0;g=Q+g|0;g=m>>>0<s>>>0?g+1|0:g;s=m;m=i;y=s;s=Ee(i,i>>31,H,D);i=y+s|0;g=Q+g|0;g=i>>>0<s>>>0?g+1|0:g;s=i;i=h;y=s;s=Ee(h,h>>31,x,G);h=y+s|0;g=Q+g|0;g=h>>>0<s>>>0?g+1|0:g;y=h;h=n;s=Ee(h,h>>31,E,F);n=y+s|0;g=Q+g|0;g=n>>>0<s>>>0?g+1|0:g;s=n;n=d;y=u;u=s;s=Ee(d,d>>31,C,z);d=u+s|0;g=Q+g|0;g=d>>>0<s>>>0?g+1|0:g;u=d;d=j;s=Ee(d,d>>31,A,B);j=u+s|0;g=Q+g|0;g=j>>>0<s>>>0?g+1|0:g;u=j;j=e;s=j&31;j=(32<=(j&63)>>>0?g>>s:((1<<s)-1&g)<<32-s|u>>>s)+W|0;o[y>>2]=j;g=t;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=10){if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[f+ -16>>2];i=o[f+ -20>>2];m=o[f+ -24>>2];k=o[f+ -28>>2];l=o[f+ -32>>2];p=o[f+ -36>>2];g=o[c>>2];q=g;t=g>>31;g=o[c+4>>2];s=g;A=g>>31;g=o[c+8>>2];B=g;C=g>>31;g=o[c+12>>2];z=g;E=g>>31;g=o[c+16>>2];F=g;x=g>>31;g=o[c+20>>2];G=g;H=g>>31;g=o[c+24>>2];D=g;J=g>>31;g=o[c+28>>2];K=g;w=g>>31;c=o[c+32>>2];L=c;M=c>>31;c=0;while(1){g=c<<2;I=g+f|0;O=o[a+g>>2];r=l;g=Ee(l,l>>31,K,w);P=Q;l=k;v=Ee(p,p>>31,L,M);p=v+g|0;g=Q+P|0;g=p>>>0<v>>>0?g+1|0:g;k=p;p=Ee(l,l>>31,D,J);k=k+p|0;g=Q+g|0;g=k>>>0<p>>>0?g+1|0:g;p=k;k=m;v=p;p=Ee(m,m>>31,G,H);m=v+p|0;g=Q+g|0;g=m>>>0<p>>>0?g+1|0:g;p=m;m=i;v=p;p=Ee(i,i>>31,F,x);i=v+p|0;g=Q+g|0;g=i>>>0<p>>>0?g+1|0:g;p=i;i=h;v=p;p=Ee(h,h>>31,z,E);h=v+p|0;g=Q+g|0;g=h>>>0<p>>>0?g+1|0:g;v=h;h=n;p=Ee(h,h>>31,B,C);n=v+p|0;g=Q+g|0;g=n>>>0<p>>>0?g+1|0:g;p=n;n=d;u=I;v=p;p=Ee(d,d>>31,s,A);d=v+p|0;g=Q+g|0;g=d>>>0<p>>>0?g+1|0:g;v=d;d=j;p=Ee(d,d>>31,q,t);j=v+p|0;g=Q+g|0;g=j>>>0<p>>>0?g+1|0:g;I=j;j=e;p=j&31;j=(32<=(j&63)>>>0?g>>p:((1<<p)-1&g)<<32-p|I>>>p)+O|0;o[u>>2]=j;p=r;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[f+ -16>>2];i=o[f+ -20>>2];m=o[f+ -24>>2];k=o[f+ -28>>2];l=o[f+ -32>>2];p=o[f+ -36>>2];r=o[f+ -40>>2];g=o[c>>2];t=g;s=g>>31;g=o[c+4>>2];A=g;B=g>>31;g=o[c+8>>2];C=g;z=g>>31;g=o[c+12>>2];E=g;F=g>>31;g=o[c+16>>2];x=g;G=g>>31;g=o[c+20>>2];H=g;D=g>>31;g=o[c+24>>2];J=g;K=g>>31;g=o[c+28>>2];w=g;L=g>>31;g=o[c+32>>2];M=g;I=g>>31;c=o[c+36>>2];O=c;P=c>>31;c=0;while(1){g=c<<2;v=g+f|0;R=o[a+g>>2];q=p;g=Ee(p,p>>31,M,I);S=Q;p=l;N=Ee(r,r>>31,O,P);r=N+g|0;g=Q+S|0;g=r>>>0<N>>>0?g+1|0:g;u=r;r=Ee(l,l>>31,w,L);l=u+r|0;g=Q+g|0;g=l>>>0<r>>>0?g+1|0:g;r=l;l=k;k=r;r=Ee(l,l>>31,J,K);k=k+r|0;g=Q+g|0;g=k>>>0<r>>>0?g+1|0:g;r=k;k=m;u=r;r=Ee(m,m>>31,H,D);m=u+r|0;g=Q+g|0;g=m>>>0<r>>>0?g+1|0:g;r=m;m=i;u=r;r=Ee(i,i>>31,x,G);i=u+r|0;g=Q+g|0;g=i>>>0<r>>>0?g+1|0:g;r=i;i=h;u=r;r=Ee(h,h>>31,E,F);h=u+r|0;g=Q+g|0;g=h>>>0<r>>>0?g+1|0:g;u=h;h=n;r=Ee(h,h>>31,C,z);n=u+r|0;g=Q+g|0;g=n>>>0<r>>>0?g+1|0:g;r=n;n=d;u=v;v=r;r=Ee(d,d>>31,A,B);d=v+r|0;g=Q+g|0;g=d>>>0<r>>>0?g+1|0:g;v=d;d=j;r=Ee(d,d>>31,t,s);j=v+r|0;g=Q+g|0;g=j>>>0<r>>>0?g+1|0:g;v=j;j=e;r=j&31;j=(32<=(j&63)>>>0?g>>r:((1<<r)-1&g)<<32-r|v>>>r)+R|0;o[u>>2]=j;r=q;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if(d>>>0>=5){if(d>>>0>=7){if((d|0)!=8){if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[f+ -16>>2];i=o[f+ -20>>2];m=o[f+ -24>>2];k=o[f+ -28>>2];l=o[c>>2];p=l;r=l>>31;l=o[c+4>>2];q=l;t=l>>31;l=o[c+8>>2];s=l;A=l>>31;l=o[c+12>>2];B=l;C=l>>31;l=o[c+16>>2];z=l;E=l>>31;l=o[c+20>>2];F=l;x=l>>31;c=o[c+24>>2];G=c;H=c>>31;c=0;while(1){l=c<<2;D=l+f|0;J=o[a+l>>2];l=m;g=Ee(l,l>>31,F,x);K=Q;m=i;w=Ee(k,k>>31,G,H);k=w+g|0;g=Q+K|0;g=k>>>0<w>>>0?g+1|0:g;w=k;k=Ee(i,i>>31,z,E);i=w+k|0;g=Q+g|0;g=i>>>0<k>>>0?g+1|0:g;k=i;i=h;w=k;k=Ee(h,h>>31,B,C);h=w+k|0;g=Q+g|0;g=h>>>0<k>>>0?g+1|0:g;w=h;h=n;k=Ee(h,h>>31,s,A);n=w+k|0;g=Q+g|0;g=n>>>0<k>>>0?g+1|0:g;k=n;n=d;v=D;w=k;k=Ee(d,d>>31,q,t);d=w+k|0;g=Q+g|0;g=d>>>0<k>>>0?g+1|0:g;w=d;d=j;k=Ee(d,d>>31,p,r);j=w+k|0;g=Q+g|0;g=j>>>0<k>>>0?g+1|0:g;D=j;j=e;k=j&31;j=(32<=(j&63)>>>0?g>>k:((1<<k)-1&g)<<32-k|D>>>k)+J|0;o[v>>2]=j;k=l;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[f+ -16>>2];i=o[f+ -20>>2];m=o[f+ -24>>2];k=o[f+ -28>>2];l=o[f+ -32>>2];g=o[c>>2];r=g;q=g>>31;g=o[c+4>>2];t=g;s=g>>31;g=o[c+8>>2];A=g;B=g>>31;g=o[c+12>>2];C=g;z=g>>31;g=o[c+16>>2];E=g;F=g>>31;g=o[c+20>>2];x=g;G=g>>31;g=o[c+24>>2];H=g;D=g>>31;c=o[c+28>>2];J=c;K=c>>31;c=0;while(1){g=c<<2;w=g+f|0;L=o[a+g>>2];p=k;g=Ee(k,k>>31,H,D);M=Q;k=m;I=Ee(l,l>>31,J,K);l=I+g|0;g=Q+M|0;g=l>>>0<I>>>0?g+1|0:g;v=l;l=Ee(m,m>>31,x,G);m=v+l|0;g=Q+g|0;g=m>>>0<l>>>0?g+1|0:g;l=m;m=i;v=l;l=Ee(i,i>>31,E,F);i=v+l|0;g=Q+g|0;g=i>>>0<l>>>0?g+1|0:g;l=i;i=h;v=l;l=Ee(h,h>>31,C,z);h=v+l|0;g=Q+g|0;g=h>>>0<l>>>0?g+1|0:g;v=h;h=n;l=Ee(h,h>>31,A,B);n=v+l|0;g=Q+g|0;g=n>>>0<l>>>0?g+1|0:g;l=n;n=d;v=w;w=l;l=Ee(d,d>>31,t,s);d=w+l|0;g=Q+g|0;g=d>>>0<l>>>0?g+1|0:g;w=d;d=j;l=Ee(d,d>>31,r,q);j=w+l|0;g=Q+g|0;g=j>>>0<l>>>0?g+1|0:g;w=j;j=e;l=j&31;j=(32<=(j&63)>>>0?g>>l:((1<<l)-1&g)<<32-l|w>>>l)+L|0;o[v>>2]=j;l=p;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=6){if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[f+ -16>>2];i=o[f+ -20>>2];m=o[c>>2];k=m;l=m>>31;m=o[c+4>>2];p=m;r=m>>31;m=o[c+8>>2];q=m;t=m>>31;m=o[c+12>>2];s=m;A=m>>31;c=o[c+16>>2];B=c;C=c>>31;c=0;while(1){m=c<<2;z=m+f|0;E=o[a+m>>2];m=h;g=Ee(h,h>>31,s,A);F=Q;h=n;x=Ee(i,i>>31,B,C);i=x+g|0;g=Q+F|0;g=i>>>0<x>>>0?g+1|0:g;n=i;i=Ee(h,h>>31,q,t);n=n+i|0;g=Q+g|0;g=n>>>0<i>>>0?g+1|0:g;i=n;n=d;x=i;i=Ee(d,d>>31,p,r);d=x+i|0;g=Q+g|0;g=d>>>0<i>>>0?g+1|0:g;i=d;d=j;j=Ee(d,d>>31,k,l);i=i+j|0;g=Q+g|0;g=i>>>0<j>>>0?g+1|0:g;j=e&31;j=(32<=(e&63)>>>0?g>>j:((1<<j)-1&g)<<32-j|i>>>j)+E|0;o[z>>2]=j;i=m;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[f+ -16>>2];i=o[f+ -20>>2];m=o[f+ -24>>2];k=o[c>>2];l=k;p=l>>31;k=o[c+4>>2];r=k;q=k>>31;k=o[c+8>>2];t=k;s=k>>31;k=o[c+12>>2];A=k;B=k>>31;k=o[c+16>>2];C=k;z=k>>31;c=o[c+20>>2];E=c;F=c>>31;c=0;while(1){k=c<<2;x=k+f|0;G=o[a+k>>2];k=i;g=Ee(i,i>>31,C,z);H=Q;i=h;D=Ee(m,m>>31,E,F);m=D+g|0;g=Q+H|0;g=m>>>0<D>>>0?g+1|0:g;w=m;m=Ee(h,h>>31,A,B);h=w+m|0;g=Q+g|0;g=h>>>0<m>>>0?g+1|0:g;w=h;h=n;m=Ee(h,h>>31,t,s);n=w+m|0;g=Q+g|0;g=n>>>0<m>>>0?g+1|0:g;m=n;n=d;w=x;x=m;m=Ee(d,d>>31,r,q);d=x+m|0;g=Q+g|0;g=d>>>0<m>>>0?g+1|0:g;m=d;d=j;j=Ee(d,d>>31,l,p);m=m+j|0;g=Q+g|0;g=m>>>0<j>>>0?g+1|0:g;j=e&31;j=(32<=(e&63)>>>0?g>>j:((1<<j)-1&g)<<32-j|m>>>j)+G|0;o[w>>2]=j;m=k;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if(d>>>0>=3){if((d|0)!=4){if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[c>>2];m=h;k=h>>31;h=o[c+4>>2];l=h;p=h>>31;c=o[c+8>>2];r=c;q=c>>31;c=0;while(1){h=c<<2;i=h+f|0;t=o[a+h>>2];h=d;d=Ee(h,h>>31,l,p);g=Q;s=i;n=Ee(n,n>>31,r,q);d=n+d|0;g=Q+g|0;g=d>>>0<n>>>0?g+1|0:g;i=d;d=j;j=Ee(d,d>>31,m,k);n=i+j|0;g=Q+g|0;g=n>>>0<j>>>0?g+1|0:g;j=n;i=e&31;j=(32<=(e&63)>>>0?g>>i:((1<<i)-1&g)<<32-i|j>>>i)+t|0;o[s>>2]=j;n=h;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[f+ -12>>2];h=o[f+ -16>>2];i=o[c>>2];k=i;l=i>>31;i=o[c+4>>2];p=i;r=i>>31;i=o[c+8>>2];q=i;t=i>>31;c=o[c+12>>2];s=c;A=c>>31;c=0;while(1){i=c<<2;m=i+f|0;B=o[a+i>>2];i=n;g=Ee(i,i>>31,q,t);C=Q;n=d;x=m;z=Ee(h,h>>31,s,A);h=z+g|0;g=Q+C|0;g=h>>>0<z>>>0?g+1|0:g;m=h;h=Ee(d,d>>31,p,r);d=m+h|0;g=Q+g|0;g=d>>>0<h>>>0?g+1|0:g;h=d;d=j;j=Ee(d,d>>31,k,l);h=h+j|0;g=Q+g|0;g=h>>>0<j>>>0?g+1|0:g;j=h;h=e;m=h&31;j=(32<=(h&63)>>>0?g>>m:((1<<m)-1&g)<<32-m|j>>>m)+B|0;o[x>>2]=j;h=i;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=2){if((b|0)<1){break a}j=o[f+ -4>>2];c=o[c>>2];i=c;m=c>>31;c=0;while(1){d=c<<2;k=d+f|0;g=o[a+d>>2];j=Ee(j,j>>31,i,m);h=Q;d=e;n=d&31;j=g+(32<=(d&63)>>>0?h>>n:((1<<n)-1&h)<<32-n|j>>>n)|0;o[k>>2]=j;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}j=o[f+ -4>>2];d=o[f+ -8>>2];n=o[c>>2];i=n;m=i>>31;c=o[c+4>>2];k=c;l=c>>31;c=0;while(1){n=c<<2;h=n+f|0;p=o[a+n>>2];n=j;j=Ee(j,j>>31,i,m);g=Q;q=h;h=j;j=Ee(d,d>>31,k,l);d=h+j|0;g=Q+g|0;g=d>>>0<j>>>0?g+1|0:g;j=d;d=e;h=d&31;j=(32<=(d&63)>>>0?g>>h:((1<<h)-1&g)<<32-h|j>>>h)+p|0;o[q>>2]=j;d=n;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function ae(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0;a:{if(d>>>0>=13){if((b|0)<1){break a}s=e;m=d+ -13|0;while(1){e=0;d=0;b:{switch(m|0){case 19:d=o[((n<<2)+a|0)+ -128>>2];e=d;h=d>>31;d=o[c+124>>2];e=Ee(e,h,d,d>>31);d=Q;case 18:h=o[((n<<2)+a|0)+ -124>>2];g=h;i=h>>31;h=o[c+120>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 17:h=o[((n<<2)+a|0)+ -120>>2];g=h;i=h>>31;h=o[c+116>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 16:h=o[((n<<2)+a|0)+ -116>>2];g=h;i=h>>31;h=o[c+112>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 15:h=o[((n<<2)+a|0)+ -112>>2];g=h;i=h>>31;h=o[c+108>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 14:h=o[((n<<2)+a|0)+ -108>>2];g=h;i=h>>31;h=o[c+104>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 13:h=o[((n<<2)+a|0)+ -104>>2];g=h;i=h>>31;h=o[c+100>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 12:h=o[((n<<2)+a|0)+ -100>>2];g=h;i=h>>31;h=o[c+96>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 11:h=o[((n<<2)+a|0)+ -96>>2];g=h;i=h>>31;h=o[c+92>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 10:h=o[((n<<2)+a|0)+ -92>>2];g=h;i=h>>31;h=o[c+88>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 9:h=o[((n<<2)+a|0)+ -88>>2];g=h;i=h>>31;h=o[c+84>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 8:h=o[((n<<2)+a|0)+ -84>>2];g=h;i=h>>31;h=o[c+80>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 7:h=o[((n<<2)+a|0)+ -80>>2];g=h;i=h>>31;h=o[c+76>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 6:h=o[((n<<2)+a|0)+ -76>>2];g=h;i=h>>31;h=o[c+72>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 5:h=o[((n<<2)+a|0)+ -72>>2];g=h;i=h>>31;h=o[c+68>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 4:h=o[((n<<2)+a|0)+ -68>>2];g=h;i=h>>31;h=o[c+64>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 3:h=o[((n<<2)+a|0)+ -64>>2];g=h;i=h>>31;h=o[c+60>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 2:h=o[((n<<2)+a|0)+ -60>>2];g=h;i=h>>31;h=o[c+56>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 1:h=o[((n<<2)+a|0)+ -56>>2];g=h;i=h>>31;h=o[c+52>>2];h=Ee(g,i,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;e=h;d=g;case 0:i=(n<<2)+a|0;h=o[i+ -52>>2];g=h;j=h>>31;h=o[c+48>>2];h=Ee(g,j,h,h>>31)+e|0;g=d+Q|0;g=h>>>0<e>>>0?g+1|0:g;d=o[i+ -48>>2];e=d;j=d>>31;d=o[c+44>>2];d=Ee(e,j,d,d>>31);e=d+h|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -44>>2];h=d;j=d>>31;d=o[c+40>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -40>>2];h=d;j=d>>31;d=o[c+36>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -36>>2];h=d;j=d>>31;d=o[c+32>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -32>>2];h=d;j=d>>31;d=o[c+28>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -28>>2];h=d;j=d>>31;d=o[c+24>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -24>>2];h=d;j=d>>31;d=o[c+20>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -20>>2];h=d;j=d>>31;d=o[c+16>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -16>>2];h=d;j=d>>31;d=o[c+12>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -12>>2];h=d;j=d>>31;d=o[c+8>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -8>>2];h=d;j=d>>31;d=o[c+4>>2];d=Ee(h,j,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=o[i+ -4>>2];h=d;i=d>>31;d=o[c>>2];d=Ee(h,i,d,d>>31);e=d+e|0;g=Q+g|0;g=e>>>0<d>>>0?g+1|0:g;d=g;break;default:break b}}h=n<<2;g=h+f|0;j=o[a+h>>2];h=d;d=s;i=d&31;o[g>>2]=j-(32<=(d&63)>>>0?h>>i:((1<<i)-1&h)<<32-i|e>>>i);n=n+1|0;if((n|0)!=(b|0)){continue}break}break a}if(d>>>0>=9){if(d>>>0>=11){if((d|0)!=12){if((b|0)<1){break a}k=o[a+ -4>>2];n=o[a+ -8>>2];d=o[a+ -12>>2];s=o[a+ -16>>2];h=o[a+ -20>>2];m=o[a+ -24>>2];i=o[a+ -28>>2];j=o[a+ -32>>2];l=o[a+ -36>>2];r=o[a+ -40>>2];t=o[a+ -44>>2];g=o[c>>2];P=g;R=g>>31;g=o[c+4>>2];S=g;M=g>>31;g=o[c+8>>2];N=g;O=g>>31;g=o[c+12>>2];J=g;K=g>>31;g=o[c+16>>2];L=g;G=g>>31;g=o[c+20>>2];H=g;I=g>>31;g=o[c+24>>2];E=g;F=g>>31;g=o[c+28>>2];B=g;C=g>>31;g=o[c+32>>2];D=g;y=g>>31;g=o[c+36>>2];z=g;A=g>>31;c=o[c+40>>2];w=c;x=c>>31;c=0;while(1){q=r;r=l;l=j;j=i;i=m;m=h;h=s;s=d;d=n;n=k;g=c<<2;v=g+f|0;k=o[a+g>>2];p=Ee(q,q>>31,z,A);g=Q;u=p;p=Ee(t,t>>31,w,x);t=u+p|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=Ee(r,r>>31,D,y);t=p+t|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=Ee(l,l>>31,B,C);t=p+t|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=Ee(j,j>>31,E,F);t=p+t|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=Ee(i,i>>31,H,I);t=p+t|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=Ee(m,m>>31,L,G);t=p+t|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=Ee(h,h>>31,J,K);t=p+t|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=Ee(s,s>>31,N,O);t=p+t|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=Ee(d,d>>31,S,M);t=p+t|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=Ee(n,n>>31,P,R);t=p+t|0;g=Q+g|0;g=t>>>0<p>>>0?g+1|0:g;p=g;g=e;u=g&31;o[v>>2]=k-(32<=(g&63)>>>0?p>>u:((1<<u)-1&p)<<32-u|t>>>u);t=q;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}t=o[a+ -4>>2];n=o[a+ -8>>2];d=o[a+ -12>>2];s=o[a+ -16>>2];h=o[a+ -20>>2];m=o[a+ -24>>2];i=o[a+ -28>>2];j=o[a+ -32>>2];l=o[a+ -36>>2];r=o[a+ -40>>2];q=o[a+ -44>>2];k=o[a+ -48>>2];g=o[c>>2];T=g;U=g>>31;g=o[c+4>>2];V=g;P=g>>31;g=o[c+8>>2];R=g;S=g>>31;g=o[c+12>>2];M=g;N=g>>31;g=o[c+16>>2];O=g;J=g>>31;g=o[c+20>>2];K=g;L=g>>31;g=o[c+24>>2];G=g;H=g>>31;g=o[c+28>>2];I=g;E=g>>31;g=o[c+32>>2];F=g;B=g>>31;g=o[c+36>>2];C=g;D=g>>31;g=o[c+40>>2];y=g;z=g>>31;c=o[c+44>>2];A=c;w=c>>31;c=0;while(1){p=q;q=r;r=l;l=j;j=i;i=m;m=h;h=s;s=d;d=n;n=t;g=c<<2;x=g+f|0;t=o[a+g>>2];u=Ee(p,p>>31,y,z);g=Q;k=Ee(k,k>>31,A,w);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(q,q>>31,C,D);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(r,r>>31,F,B);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(l,l>>31,I,E);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(j,j>>31,G,H);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(i,i>>31,K,L);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(m,m>>31,O,J);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(h,h>>31,M,N);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(s,s>>31,R,S);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(d,d>>31,V,P);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=Ee(n,n>>31,T,U);u=k+u|0;g=Q+g|0;g=u>>>0<k>>>0?g+1|0:g;k=g;g=e;v=g&31;o[x>>2]=t-(32<=(g&63)>>>0?k>>v:((1<<v)-1&k)<<32-v|u>>>v);k=p;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=10){if((b|0)<1){break a}r=o[a+ -4>>2];n=o[a+ -8>>2];d=o[a+ -12>>2];s=o[a+ -16>>2];h=o[a+ -20>>2];m=o[a+ -24>>2];i=o[a+ -28>>2];j=o[a+ -32>>2];q=o[a+ -36>>2];l=o[c>>2];J=l;K=l>>31;l=o[c+4>>2];L=l;G=l>>31;l=o[c+8>>2];H=l;I=l>>31;l=o[c+12>>2];E=l;F=l>>31;l=o[c+16>>2];B=l;C=l>>31;l=o[c+20>>2];D=l;y=l>>31;l=o[c+24>>2];z=l;A=l>>31;l=o[c+28>>2];w=l;x=l>>31;c=o[c+32>>2];v=c;u=c>>31;c=0;while(1){l=j;j=i;i=m;m=h;h=s;s=d;d=n;n=r;g=c<<2;t=g+f|0;r=o[a+g>>2];k=Ee(l,l>>31,w,x);g=Q;q=Ee(q,q>>31,v,u);k=q+k|0;g=Q+g|0;g=k>>>0<q>>>0?g+1|0:g;q=Ee(j,j>>31,z,A);k=q+k|0;g=Q+g|0;g=k>>>0<q>>>0?g+1|0:g;q=Ee(i,i>>31,D,y);k=q+k|0;g=Q+g|0;g=k>>>0<q>>>0?g+1|0:g;q=Ee(m,m>>31,B,C);k=q+k|0;g=Q+g|0;g=k>>>0<q>>>0?g+1|0:g;q=Ee(h,h>>31,E,F);k=q+k|0;g=Q+g|0;g=k>>>0<q>>>0?g+1|0:g;q=Ee(s,s>>31,H,I);k=q+k|0;g=Q+g|0;g=k>>>0<q>>>0?g+1|0:g;q=Ee(d,d>>31,L,G);k=q+k|0;g=Q+g|0;g=k>>>0<q>>>0?g+1|0:g;q=Ee(n,n>>31,J,K);k=q+k|0;g=Q+g|0;g=k>>>0<q>>>0?g+1|0:g;q=g;g=e;p=g&31;o[t>>2]=r-(32<=(g&63)>>>0?q>>p:((1<<p)-1&q)<<32-p|k>>>p);q=l;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}q=o[a+ -4>>2];n=o[a+ -8>>2];d=o[a+ -12>>2];s=o[a+ -16>>2];h=o[a+ -20>>2];m=o[a+ -24>>2];i=o[a+ -28>>2];j=o[a+ -32>>2];l=o[a+ -36>>2];k=o[a+ -40>>2];g=o[c>>2];M=g;N=g>>31;g=o[c+4>>2];O=g;J=g>>31;g=o[c+8>>2];K=g;L=g>>31;g=o[c+12>>2];G=g;H=g>>31;g=o[c+16>>2];I=g;E=g>>31;g=o[c+20>>2];F=g;B=g>>31;g=o[c+24>>2];C=g;D=g>>31;g=o[c+28>>2];y=g;z=g>>31;g=o[c+32>>2];A=g;w=g>>31;c=o[c+36>>2];x=c;v=c>>31;c=0;while(1){r=l;l=j;j=i;i=m;m=h;h=s;s=d;d=n;n=q;g=c<<2;u=g+f|0;q=o[a+g>>2];p=Ee(r,r>>31,A,w);g=Q;k=Ee(k,k>>31,x,v);p=k+p|0;g=Q+g|0;g=p>>>0<k>>>0?g+1|0:g;k=Ee(l,l>>31,y,z);p=k+p|0;g=Q+g|0;g=p>>>0<k>>>0?g+1|0:g;k=Ee(j,j>>31,C,D);p=k+p|0;g=Q+g|0;g=p>>>0<k>>>0?g+1|0:g;k=Ee(i,i>>31,F,B);p=k+p|0;g=Q+g|0;g=p>>>0<k>>>0?g+1|0:g;k=Ee(m,m>>31,I,E);p=k+p|0;g=Q+g|0;g=p>>>0<k>>>0?g+1|0:g;k=Ee(h,h>>31,G,H);p=k+p|0;g=Q+g|0;g=p>>>0<k>>>0?g+1|0:g;k=Ee(s,s>>31,K,L);p=k+p|0;g=Q+g|0;g=p>>>0<k>>>0?g+1|0:g;k=Ee(d,d>>31,O,J);p=k+p|0;g=Q+g|0;g=p>>>0<k>>>0?g+1|0:g;k=Ee(n,n>>31,M,N);p=k+p|0;g=Q+g|0;g=p>>>0<k>>>0?g+1|0:g;k=g;g=e;t=g&31;o[u>>2]=q-(32<=(g&63)>>>0?k>>t:((1<<t)-1&k)<<32-t|p>>>t);k=r;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if(d>>>0>=5){if(d>>>0>=7){if((d|0)!=8){if((b|0)<1){break a}j=o[a+ -4>>2];n=o[a+ -8>>2];d=o[a+ -12>>2];s=o[a+ -16>>2];h=o[a+ -20>>2];m=o[a+ -24>>2];l=o[a+ -28>>2];i=o[c>>2];E=i;F=i>>31;i=o[c+4>>2];B=i;C=i>>31;i=o[c+8>>2];D=i;y=i>>31;i=o[c+12>>2];z=i;A=i>>31;i=o[c+16>>2];w=i;x=i>>31;i=o[c+20>>2];v=i;u=i>>31;c=o[c+24>>2];t=c;p=c>>31;c=0;while(1){i=m;m=h;h=s;s=d;d=n;n=j;j=c<<2;k=j+f|0;j=o[a+j>>2];r=Ee(i,i>>31,v,u);g=Q;l=Ee(l,l>>31,t,p);r=l+r|0;g=Q+g|0;g=r>>>0<l>>>0?g+1|0:g;l=Ee(m,m>>31,w,x);r=l+r|0;g=Q+g|0;g=r>>>0<l>>>0?g+1|0:g;l=Ee(h,h>>31,z,A);r=l+r|0;g=Q+g|0;g=r>>>0<l>>>0?g+1|0:g;l=Ee(s,s>>31,D,y);r=l+r|0;g=Q+g|0;g=r>>>0<l>>>0?g+1|0:g;l=Ee(d,d>>31,B,C);r=l+r|0;g=Q+g|0;g=r>>>0<l>>>0?g+1|0:g;l=Ee(n,n>>31,E,F);r=l+r|0;g=Q+g|0;g=r>>>0<l>>>0?g+1|0:g;q=e&31;o[k>>2]=j-(32<=(e&63)>>>0?g>>q:((1<<q)-1&g)<<32-q|r>>>q);l=i;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}l=o[a+ -4>>2];n=o[a+ -8>>2];d=o[a+ -12>>2];s=o[a+ -16>>2];h=o[a+ -20>>2];m=o[a+ -24>>2];i=o[a+ -28>>2];r=o[a+ -32>>2];j=o[c>>2];G=j;H=j>>31;j=o[c+4>>2];I=j;E=j>>31;j=o[c+8>>2];F=j;B=j>>31;j=o[c+12>>2];C=j;D=j>>31;j=o[c+16>>2];y=j;z=j>>31;j=o[c+20>>2];A=j;w=j>>31;j=o[c+24>>2];x=j;v=j>>31;c=o[c+28>>2];u=c;t=c>>31;c=0;while(1){j=i;i=m;m=h;h=s;s=d;d=n;n=l;l=c<<2;p=l+f|0;l=o[a+l>>2];q=Ee(j,j>>31,x,v);g=Q;r=Ee(r,r>>31,u,t);q=r+q|0;g=Q+g|0;g=q>>>0<r>>>0?g+1|0:g;r=Ee(i,i>>31,A,w);q=r+q|0;g=Q+g|0;g=q>>>0<r>>>0?g+1|0:g;r=Ee(m,m>>31,y,z);q=r+q|0;g=Q+g|0;g=q>>>0<r>>>0?g+1|0:g;r=Ee(h,h>>31,C,D);q=r+q|0;g=Q+g|0;g=q>>>0<r>>>0?g+1|0:g;r=Ee(s,s>>31,F,B);q=r+q|0;g=Q+g|0;g=q>>>0<r>>>0?g+1|0:g;r=Ee(d,d>>31,I,E);q=r+q|0;g=Q+g|0;g=q>>>0<r>>>0?g+1|0:g;r=Ee(n,n>>31,G,H);q=r+q|0;g=Q+g|0;g=q>>>0<r>>>0?g+1|0:g;r=g;g=e;k=g&31;o[p>>2]=l-(32<=(g&63)>>>0?r>>k:((1<<k)-1&r)<<32-k|q>>>k);r=j;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=6){if((b|0)<1){break a}m=o[a+ -4>>2];n=o[a+ -8>>2];d=o[a+ -12>>2];s=o[a+ -16>>2];i=o[a+ -20>>2];h=o[c>>2];y=h;z=h>>31;h=o[c+4>>2];A=h;w=h>>31;h=o[c+8>>2];x=h;v=h>>31;h=o[c+12>>2];u=h;t=h>>31;c=o[c+16>>2];p=c;k=c>>31;c=0;while(1){h=s;s=d;d=n;n=m;m=c<<2;q=m+f|0;m=o[a+m>>2];l=Ee(h,h>>31,u,t);j=Q;i=Ee(i,i>>31,p,k);l=i+l|0;g=Q+j|0;g=l>>>0<i>>>0?g+1|0:g;i=Ee(s,s>>31,x,v);j=i+l|0;g=Q+g|0;g=j>>>0<i>>>0?g+1|0:g;i=Ee(d,d>>31,A,w);j=i+j|0;g=Q+g|0;g=j>>>0<i>>>0?g+1|0:g;i=Ee(n,n>>31,y,z);j=i+j|0;g=Q+g|0;g=j>>>0<i>>>0?g+1|0:g;l=e&31;o[q>>2]=m-(32<=(e&63)>>>0?g>>l:((1<<l)-1&g)<<32-l|j>>>l);i=h;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}i=o[a+ -4>>2];n=o[a+ -8>>2];d=o[a+ -12>>2];s=o[a+ -16>>2];h=o[a+ -20>>2];j=o[a+ -24>>2];m=o[c>>2];C=m;D=m>>31;m=o[c+4>>2];y=m;z=m>>31;m=o[c+8>>2];A=m;w=m>>31;m=o[c+12>>2];x=m;v=m>>31;m=o[c+16>>2];u=m;t=m>>31;c=o[c+20>>2];p=c;k=c>>31;c=0;while(1){m=h;h=s;s=d;d=n;n=i;i=c<<2;q=i+f|0;i=o[a+i>>2];g=Ee(m,m>>31,u,t);l=Q;j=Ee(j,j>>31,p,k);B=j+g|0;g=Q+l|0;g=B>>>0<j>>>0?g+1|0:g;j=Ee(h,h>>31,x,v);l=j+B|0;g=Q+g|0;g=l>>>0<j>>>0?g+1|0:g;j=Ee(s,s>>31,A,w);l=j+l|0;g=Q+g|0;g=l>>>0<j>>>0?g+1|0:g;j=Ee(d,d>>31,y,z);l=j+l|0;g=Q+g|0;g=l>>>0<j>>>0?g+1|0:g;j=Ee(n,n>>31,C,D);l=j+l|0;g=Q+g|0;g=l>>>0<j>>>0?g+1|0:g;r=e&31;o[q>>2]=i-(32<=(e&63)>>>0?g>>r:((1<<r)-1&g)<<32-r|l>>>r);j=m;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if(d>>>0>=3){if((d|0)!=4){if((b|0)<1){break a}s=o[a+ -4>>2];n=o[a+ -8>>2];h=o[a+ -12>>2];d=o[c>>2];u=d;t=d>>31;d=o[c+4>>2];p=d;k=d>>31;c=o[c+8>>2];q=c;r=c>>31;c=0;while(1){d=n;n=s;s=c<<2;l=s+f|0;s=o[a+s>>2];j=s;i=Ee(d,d>>31,p,k);m=Q;h=Ee(h,h>>31,q,r);i=h+i|0;g=Q+m|0;g=i>>>0<h>>>0?g+1|0:g;h=Ee(n,n>>31,u,t);m=h+i|0;g=Q+g|0;g=m>>>0<h>>>0?g+1|0:g;h=e;i=h&31;o[l>>2]=j-(32<=(h&63)>>>0?g>>i:((1<<i)-1&g)<<32-i|m>>>i);h=d;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}h=o[a+ -4>>2];n=o[a+ -8>>2];d=o[a+ -12>>2];m=o[a+ -16>>2];s=o[c>>2];w=s;x=s>>31;s=o[c+4>>2];v=s;u=s>>31;s=o[c+8>>2];t=s;p=s>>31;c=o[c+12>>2];k=c;q=c>>31;c=0;while(1){s=d;d=n;n=h;h=c<<2;r=h+f|0;h=o[a+h>>2];j=Ee(s,s>>31,t,p);i=Q;m=Ee(m,m>>31,k,q);j=m+j|0;g=Q+i|0;g=j>>>0<m>>>0?g+1|0:g;m=Ee(d,d>>31,v,u);i=m+j|0;g=Q+g|0;g=i>>>0<m>>>0?g+1|0:g;m=Ee(n,n>>31,w,x);i=m+i|0;g=Q+g|0;g=i>>>0<m>>>0?g+1|0:g;j=e&31;o[r>>2]=h-(32<=(e&63)>>>0?g>>j:((1<<j)-1&g)<<32-j|i>>>j);m=s;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=2){if((b|0)<1){break a}n=o[a+ -4>>2];c=o[c>>2];j=c;i=c>>31;c=0;while(1){d=c<<2;g=d+f|0;s=o[a+d>>2];n=Ee(n,n>>31,j,i);h=Q;d=e;m=d&31;o[g>>2]=s-(32<=(d&63)>>>0?h>>m:((1<<m)-1&h)<<32-m|n>>>m);n=s;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}d=o[a+ -4>>2];s=o[a+ -8>>2];n=o[c>>2];k=n;q=k>>31;c=o[c+4>>2];r=c;l=c>>31;c=0;while(1){n=d;d=c<<2;j=d+f|0;d=o[a+d>>2];m=Ee(n,n>>31,k,q);h=Q;s=Ee(s,s>>31,r,l);m=s+m|0;g=Q+h|0;g=m>>>0<s>>>0?g+1|0:g;h=m;m=e&31;o[j>>2]=d-(32<=(e&63)>>>0?g>>m:((1<<m)-1&g)<<32-m|h>>>m);s=n;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function ob(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,n=0,s=0,t=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;f=N+ -64|0;N=f;o[b>>2]=0;c=o[a+4>>2];d=o[c+56>>2];e=p[c+3589|0];c=q[(p[c+3588|0]<<1)+1280>>1];o[d+24>>2]=q[((e^c>>>8)<<1)+1280>>1]^c<<8&65280;c=o[d+20>>2];o[d+28>>2]=o[d+16>>2];o[d+32>>2]=c;d=o[a+4>>2];m[f+32|0]=p[d+3588|0];c=p[d+3589|0];o[f+12>>2]=2;m[f+33|0]=c;a:{if(!Y(o[d+56>>2],f+28|0,8)){break a}b:{c:{d:{e:{d=o[f+28>>2];if((d|0)==255){break e}m[f+34|0]=d;o[f+12>>2]=3;if(!Y(o[o[a+4>>2]+56>>2],f+28|0,8)){break c}d=o[f+28>>2];if((d|0)==255){break e}c=c>>>1&1;i=o[f+12>>2];m[i+(f+32|0)|0]=d;d=1;o[f+12>>2]=i+1;i=p[f+34|0];g=i>>>4|0;o[f+28>>2]=g;f:{g:{h:{i:{switch(g-1|0){case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:o[o[a+4>>2]+1136>>2]=256<<g+ -8;break h;case 1:case 2:case 3:case 4:o[o[a+4>>2]+1136>>2]=576<<g+ -2;break h;case 5:case 6:break g;case 0:break i;default:break f}}o[o[a+4>>2]+1136>>2]=192}g=0}d=c}e=i&15;o[f+28>>2]=e;j:{k:{l:{switch(e-1|0){default:e=0;c=o[a+4>>2];if(o[c+248>>2]){break k}d=1;break j;case 0:o[o[a+4>>2]+1140>>2]=88200;e=0;break j;case 1:o[o[a+4>>2]+1140>>2]=176400;e=0;break j;case 2:o[o[a+4>>2]+1140>>2]=192e3;e=0;break j;case 3:o[o[a+4>>2]+1140>>2]=8e3;e=0;break j;case 4:o[o[a+4>>2]+1140>>2]=16e3;e=0;break j;case 5:o[o[a+4>>2]+1140>>2]=22050;e=0;break j;case 6:o[o[a+4>>2]+1140>>2]=24e3;e=0;break j;case 7:o[o[a+4>>2]+1140>>2]=32e3;e=0;break j;case 8:o[o[a+4>>2]+1140>>2]=44100;e=0;break j;case 9:o[o[a+4>>2]+1140>>2]=48e3;e=0;break j;case 10:o[o[a+4>>2]+1140>>2]=96e3;e=0;break j;case 11:case 12:case 13:break j;case 14:break l}}d=o[a+4>>2];if(!o[d+3632>>2]){l[o[d+32>>2]](a,1,o[d+48>>2])}c=o[a>>2];o[c>>2]=2;break d}o[c+1140>>2]=o[c+288>>2]}j=p[f+35|0];h=j>>>4|0;o[f+28>>2]=h;m:{n:{if(h&8){c=o[a+4>>2];o[c+1144>>2]=2;i=1;o:{switch(h&7){case 1:i=2;break n;case 0:break n;case 2:break o;default:break m}}i=3;break n}c=o[a+4>>2];o[c+1144>>2]=h+1;i=0}o[c+1148>>2]=i;i=d}h=j>>>1&7;o[f+28>>2]=h;d=1;p:{q:{r:{switch(h-1|0){default:if(!o[c+248>>2]){break p}o[c+1152>>2]=o[c+296>>2];break q;case 0:o[c+1152>>2]=8;break q;case 1:o[c+1152>>2]=12;break q;case 3:o[c+1152>>2]=16;break q;case 4:o[c+1152>>2]=20;break q;case 2:case 6:break p;case 5:break r}}o[c+1152>>2]=24}d=i}s:{if(!(!o[c+248>>2]|o[c+272>>2]==o[c+276>>2]?!(m[f+33|0]&1):0)){if(!we(o[c+56>>2],f+16|0,f+32|0,f+12|0)){break c}c=o[f+20>>2];i=c;h=o[f+16>>2];if((h|0)==-1&(c|0)==-1){c=p[(o[f+12>>2]+f|0)+31|0];d=o[a+4>>2];o[d+3520>>2]=1;m[d+3590|0]=c;if(!o[d+3632>>2]){l[o[d+32>>2]](a,1,o[d+48>>2])}c=o[a>>2];o[c>>2]=2;break d}c=o[a+4>>2];n=c+1160|0;o[n>>2]=h;o[n+4>>2]=i;o[c+1156>>2]=1;break s}if(!xe(o[c+56>>2],f+28|0,f+32|0,f+12|0)){break c}c=o[f+28>>2];if((c|0)==-1){c=p[(o[f+12>>2]+f|0)+31|0];d=o[a+4>>2];o[d+3520>>2]=1;m[d+3590|0]=c;if(!o[d+3632>>2]){l[o[d+32>>2]](a,1,o[d+48>>2])}c=o[a>>2];o[c>>2]=2;break d}i=o[a+4>>2];o[i+1160>>2]=c;o[i+1156>>2]=0}c=o[a+4>>2];if(g){if(!Y(o[c+56>>2],f+28|0,8)){break c}c=o[f+12>>2];i=o[f+28>>2];m[c+(f+32|0)|0]=i;o[f+12>>2]=c+1;if((g|0)==7){if(!Y(o[o[a+4>>2]+56>>2],f+8|0,8)){break c}c=o[f+12>>2];i=o[f+8>>2];m[c+(f+32|0)|0]=i;o[f+12>>2]=c+1;i=i|o[f+28>>2]<<8;o[f+28>>2]=i}c=o[a+4>>2];o[c+1136>>2]=i+1}if(e){if(!Y(o[c+56>>2],f+28|0,8)){break c}c=o[f+12>>2];i=o[f+28>>2];m[c+(f+32|0)|0]=i;o[f+12>>2]=c+1;t:{if((e|0)!=12){if(!Y(o[o[a+4>>2]+56>>2],f+8|0,8)){break c}c=o[f+12>>2];i=o[f+8>>2];m[c+(f+32|0)|0]=i;o[f+12>>2]=c+1;g=i|o[f+28>>2]<<8;o[f+28>>2]=g;if((e|0)==13){break t}g=u(g,10);break t}g=u(i,1e3)}c=o[a+4>>2];o[c+1140>>2]=g}if(!Y(o[c+56>>2],f+28|0,8)){break c}i=p[f+28|0];e=Vb(f+32|0,o[f+12>>2]);c=o[a+4>>2];if((e|0)!=(i|0)){if(!o[c+3632>>2]){l[o[c+32>>2]](a,1,o[c+48>>2])}c=o[a>>2];o[c>>2]=2;break d}o[c+232>>2]=0;u:{v:{if(o[c+1156>>2]){break v}e=c+1160|0;i=o[e>>2];o[f+28>>2]=i;o[c+1156>>2]=1;g=o[c+228>>2];if(g){D=e,E=Ee(g,0,i,0),o[D>>2]=E;o[e+4>>2]=Q;break v}if(o[c+248>>2]){e=o[c+272>>2];if((e|0)!=o[c+276>>2]){break u}c=c+1160|0;D=c,E=Ee(e,0,i,0),o[D>>2]=E;o[c+4>>2]=Q;c=o[a+4>>2];o[c+232>>2]=o[c+276>>2];break v}if(!i){c=c+1160|0;o[c>>2]=0;o[c+4>>2]=0;c=o[a+4>>2];o[c+232>>2]=o[c+1136>>2];break v}e=c+1160|0;D=e,E=Ee(o[c+1136>>2],0,i,0),o[D>>2]=E;o[e+4>>2]=Q}if(!(d|j&1)){c=o[a>>2];break d}c=o[a+4>>2]}w:{if(!o[c+3632>>2]){l[o[c+32>>2]](a,3,o[c+48>>2]);break w}o[c+6152>>2]=o[c+6152>>2]+1}c=o[a>>2];o[c>>2]=2;break d}d=o[a+4>>2];o[d+3520>>2]=1;m[d+3590|0]=255;if(!o[d+3632>>2]){l[o[d+32>>2]](a,1,o[d+48>>2])}c=o[a>>2];o[c>>2]=2}i=1;if(o[c>>2]==2){break a}c=o[a+4>>2];e=o[c+1144>>2];h=o[c+1136>>2];if(!(r[c+224>>2]>=e>>>0?r[c+220>>2]>=h>>>0:0)){d=o[c+60>>2];if(d){X(d+ -16|0);o[o[a+4>>2]+60>>2]=0;c=o[a+4>>2]}d=o[c+3592>>2];if(d){X(d);o[o[a+4>>2]+92>>2]=0;o[o[a+4>>2]+3592>>2]=0;c=o[a+4>>2]}d=o[c- -64>>2];if(d){X(d+ -16|0);o[o[a+4>>2]- -64>>2]=0;c=o[a+4>>2]}d=o[c+3596>>2];if(d){X(d);o[o[a+4>>2]+96>>2]=0;o[o[a+4>>2]+3596>>2]=0;c=o[a+4>>2]}d=o[c+68>>2];if(d){X(d+ -16|0);o[o[a+4>>2]+68>>2]=0;c=o[a+4>>2]}d=o[c+3600>>2];if(d){X(d);o[o[a+4>>2]+100>>2]=0;o[o[a+4>>2]+3600>>2]=0;c=o[a+4>>2]}d=o[c+72>>2];if(d){X(d+ -16|0);o[o[a+4>>2]+72>>2]=0;c=o[a+4>>2]}d=o[c+3604>>2];if(d){X(d);o[o[a+4>>2]+104>>2]=0;o[o[a+4>>2]+3604>>2]=0;c=o[a+4>>2]}d=o[c+76>>2];if(d){X(d+ -16|0);o[o[a+4>>2]+76>>2]=0;c=o[a+4>>2]}d=o[c+3608>>2];if(d){X(d);o[o[a+4>>2]+108>>2]=0;o[o[a+4>>2]+3608>>2]=0;c=o[a+4>>2]}d=o[c+80>>2];if(d){X(d+ -16|0);o[o[a+4>>2]+80>>2]=0;c=o[a+4>>2]}d=o[c+3612>>2];if(d){X(d);o[o[a+4>>2]+112>>2]=0;o[o[a+4>>2]+3612>>2]=0;c=o[a+4>>2]}d=o[c+84>>2];if(d){X(d+ -16|0);o[o[a+4>>2]+84>>2]=0;c=o[a+4>>2]}d=o[c+3616>>2];if(d){X(d);o[o[a+4>>2]+116>>2]=0;o[o[a+4>>2]+3616>>2]=0;c=o[a+4>>2]}d=o[c+88>>2];if(d){X(d+ -16|0);o[o[a+4>>2]+88>>2]=0;c=o[a+4>>2]}d=o[c+3620>>2];if(d){X(d);o[o[a+4>>2]+120>>2]=0;o[o[a+4>>2]+3620>>2]=0}x:{if(!e){break x}if(h>>>0>4294967291){break b}d=h+4|0;if((d&1073741823)!=(d|0)){break b}c=d<<2;g=0;while(1){d=da(c);if(!d){break b}o[d>>2]=0;o[d+4>>2]=0;o[d+8>>2]=0;o[d+12>>2]=0;j=g<<2;o[(j+o[a+4>>2]|0)+60>>2]=d+16;d=j+o[a+4>>2]|0;if(ta(h,d+3592|0,d+92|0)){g=g+1|0;if((e|0)==(g|0)){break x}continue}break}o[o[a>>2]>>2]=8;break c}c=o[a+4>>2];o[c+224>>2]=e;o[c+220>>2]=h;e=o[c+1144>>2]}y:{if(e){z=o[1412];B=-1<<z^-1;w=o[1406];A=o[1405];C=o[1413];d=0;while(1){g=o[c+1152>>2];z:{A:{switch(o[c+1148>>2]+ -1|0){case 0:g=((d|0)==1)+g|0;break z;case 1:g=!d+g|0;break z;case 2:break A;default:break z}}g=((d|0)==1)+g|0}if(!Y(o[c+56>>2],f+28|0,8)){break c}c=o[f+28>>2];o[f+28>>2]=c&254;t=c&1;B:{if(t){if(!eb(o[o[a+4>>2]+56>>2],f+32|0)){break c}c=o[a+4>>2];e=o[f+32>>2]+1|0;o[(c+u(d,292)|0)+1464>>2]=e;if(g>>>0<=e>>>0){break c}g=g-e|0;break B}c=o[a+4>>2];o[(c+u(d,292)|0)+1464>>2]=0}e=o[f+28>>2];C:{if(e&128){if(!o[c+3632>>2]){l[o[c+32>>2]](a,0,o[c+48>>2])}o[o[a>>2]>>2]=2;break C}D:{E:{F:{switch(e|0){case 0:e=o[((d<<2)+c|0)+60>>2];h=u(d,292)+c|0;o[h+1176>>2]=0;if(!xa(o[c+56>>2],f+32|0,g)){break c}o[h+1180>>2]=o[f+32>>2];c=0;g=o[a+4>>2];if(!o[g+1136>>2]){break E}while(1){o[e+(c<<2)>>2]=o[f+32>>2];c=c+1|0;if(c>>>0<r[g+1136>>2]){continue}break}break E;case 2:e=(c+1136|0)+u(d,292)|0;h=e;j=d<<2;n=o[(j+c|0)+92>>2];o[e+44>>2]=n;o[e+40>>2]=1;e=0;if(o[c+1136>>2]){while(1){if(!xa(o[c+56>>2],f+32|0,g)){break c}o[n+(e<<2)>>2]=o[f+32>>2];e=e+1|0;c=o[a+4>>2];k=o[c+1136>>2];if(e>>>0<k>>>0){continue}break}e=k<<2}ca(o[(c+j|0)+60>>2],o[h+44>>2],e);break E;default:break F}}if(e>>>0<=15){G:{if(!o[c+3632>>2]){l[o[c+32>>2]](a,3,o[c+48>>2]);break G}o[c+6152>>2]=o[c+6152>>2]+1}o[o[a>>2]>>2]=2;break C}if(e>>>0<=24){h=u(d,292)+c|0;o[h+1176>>2]=2;n=d<<2;k=o[(n+c|0)+92>>2];j=e>>>1&7;o[h+1192>>2]=j;o[h+1212>>2]=k;e=o[c+56>>2];if(j){k=h+1196|0;c=0;while(1){if(!xa(e,f+32|0,g)){break c}o[k+(c<<2)>>2]=o[f+32>>2];e=o[o[a+4>>2]+56>>2];c=c+1|0;if((j|0)!=(c|0)){continue}break}}if(!Y(e,f+16|0,A)){break c}g=h+1180|0;e=o[f+16>>2];o[g>>2]=e;c=o[a+4>>2];H:{I:{if(e>>>0<=1){if(!Y(o[c+56>>2],f+16|0,w)){break c}c=o[a+4>>2];e=o[f+16>>2];if(o[c+1136>>2]>>>e>>>0>=j>>>0){break I}if(!o[c+3632>>2]){l[o[c+32>>2]](a,0,o[c+48>>2])}o[o[a>>2]>>2]=2;break H}J:{if(!o[c+3632>>2]){l[o[c+32>>2]](a,3,o[c+48>>2]);break J}o[c+6152>>2]=o[c+6152>>2]+1}o[o[a>>2]>>2]=2;break H}o[h+1184>>2]=e;c=u(d,12);o[h+1188>>2]=(c+o[a+4>>2]|0)+124;g=o[g>>2];if(g>>>0<2){k=c;c=o[a+4>>2];if(!nb(a,j,e,(k+c|0)+124|0,o[(c+n|0)+92>>2],(g|0)==1)){break c}}c=j<<2;ca(o[(n+o[a+4>>2]|0)+60>>2],h+1196|0,c);e=o[a+4>>2];g=e+n|0;me(o[g+92>>2],o[e+1136>>2]-j|0,j,c+o[g+60>>2]|0)}if(o[o[a>>2]>>2]==2){break C}if(t){break D}break C}if(e>>>0<=63){K:{if(!o[c+3632>>2]){l[o[c+32>>2]](a,3,o[c+48>>2]);break K}o[c+6152>>2]=o[c+6152>>2]+1}o[o[a>>2]>>2]=2;break C}h=u(d,292)+c|0;o[h+1176>>2]=3;n=d<<2;s=o[(n+c|0)+92>>2];k=e>>>1&31;j=k+1|0;o[h+1192>>2]=j;o[h+1460>>2]=s;e=o[c+56>>2];c=0;while(1){if(!xa(e,f+32|0,g)){break c}o[(h+(c<<2)|0)+1332>>2]=o[f+32>>2];s=(c|0)!=(k|0);e=o[o[a+4>>2]+56>>2];c=c+1|0;if(s){continue}break}if(!Y(e,f+16|0,z)){break c}c=o[f+16>>2];L:{if((c|0)==(B|0)){c=o[a+4>>2];if(!o[c+3632>>2]){l[o[c+32>>2]](a,0,o[c+48>>2])}o[o[a>>2]>>2]=2;break L}y=h+1196|0;o[y>>2]=c+1;if(!xa(o[o[a+4>>2]+56>>2],f+32|0,C)){break c}c=o[f+32>>2];if((c|0)<=-1){c=o[a+4>>2];if(!o[c+3632>>2]){l[o[c+32>>2]](a,0,o[c+48>>2])}o[o[a>>2]>>2]=2;break L}s=h+1200|0;o[s>>2]=c;e=o[o[a+4>>2]+56>>2];c=0;while(1){if(!xa(e,f+32|0,o[y>>2])){break c}o[(h+(c<<2)|0)+1204>>2]=o[f+32>>2];v=(c|0)!=(k|0);e=o[o[a+4>>2]+56>>2];c=c+1|0;if(v){continue}break}if(!Y(e,f+16|0,A)){break c}v=h+1180|0;e=o[f+16>>2];o[v>>2]=e;c=o[a+4>>2];M:{if(e>>>0<=1){if(!Y(o[c+56>>2],f+16|0,w)){break c}c=o[a+4>>2];e=o[f+16>>2];if(o[c+1136>>2]>>>e>>>0>k>>>0){break M}if(!o[c+3632>>2]){l[o[c+32>>2]](a,0,o[c+48>>2])}o[o[a>>2]>>2]=2;break L}N:{if(!o[c+3632>>2]){l[o[c+32>>2]](a,3,o[c+48>>2]);break N}o[c+6152>>2]=o[c+6152>>2]+1}o[o[a>>2]>>2]=2;break L}o[h+1184>>2]=e;c=u(d,12);o[h+1188>>2]=(c+o[a+4>>2]|0)+124;k=o[v>>2];if(k>>>0<2){v=c;c=o[a+4>>2];if(!nb(a,j,e,(v+c|0)+124|0,o[(c+n|0)+92>>2],(k|0)==1)){break c}}e=j<<2;ca(o[(n+o[a+4>>2]|0)+60>>2],h+1332|0,e);O:{k=o[y>>2];if(k+((x(j)^31)+g|0)>>>0<=32){c=o[a+4>>2];if(g>>>0>16|k>>>0>16){break O}g=c+n|0;l[o[c+44>>2]](o[g+92>>2],o[c+1136>>2]-j|0,h+1204|0,j,o[s>>2],e+o[g+60>>2]|0);break L}c=o[a+4>>2];g=c+n|0;l[o[c+40>>2]](o[g+92>>2],o[c+1136>>2]-j|0,h+1204|0,j,o[s>>2],e+o[g+60>>2]|0);break L}g=c+n|0;l[o[c+36>>2]](o[g+92>>2],o[c+1136>>2]-j|0,h+1204|0,j,o[s>>2],e+o[g+60>>2]|0)}if(!t|o[o[a>>2]>>2]==2){break C}break D}if(!t){break C}}e=o[a+4>>2];c=o[(e+u(d,292)|0)+1464>>2];o[f+28>>2]=c;if(!o[e+1136>>2]){break C}g=o[(e+(d<<2)|0)+60>>2];o[g>>2]=o[g>>2]<<c;c=1;if(r[e+1136>>2]<2){break C}while(1){h=g+(c<<2)|0;o[h>>2]=o[h>>2]<<o[f+28>>2];c=c+1|0;if(c>>>0<r[e+1136>>2]){continue}break}}if(o[o[a>>2]>>2]==2){break y}d=d+1|0;c=o[a+4>>2];if(d>>>0<r[c+1144>>2]){continue}break}}P:{if(!(p[o[c+56>>2]+20|0]&7)){break P}o[f+32>>2]=0;d=o[o[a+4>>2]+56>>2];if(!Y(d,f+32|0,8-(o[d+20>>2]&7)|0)){break c}if(!o[f+32>>2]){break P}d=o[a+4>>2];if(!o[d+3632>>2]){l[o[d+32>>2]](a,0,o[d+48>>2])}o[o[a>>2]>>2]=2}if(o[o[a>>2]>>2]==2){break a}d=ze(o[o[a+4>>2]+56>>2]);i=0;if(!Y(o[o[a+4>>2]+56>>2],f+16|0,o[1404])){break a}Q:{if((d|0)==o[f+16>>2]){R:{S:{T:{d=o[a+4>>2];switch(o[d+1148>>2]+ -1|0){case 2:break R;case 0:break S;case 1:break T;default:break Q}}if(!o[d+1136>>2]){break Q}c=o[d- -64>>2];e=o[d+60>>2];g=0;while(1){h=g<<2;j=h+e|0;o[j>>2]=o[j>>2]+o[c+h>>2];g=g+1|0;if(g>>>0<r[d+1136>>2]){continue}break}break Q}if(!o[d+1136>>2]){break Q}c=o[d- -64>>2];e=o[d+60>>2];g=0;while(1){h=g<<2;j=h+c|0;o[j>>2]=o[e+h>>2]-o[j>>2];g=g+1|0;if(g>>>0<r[d+1136>>2]){continue}break}break Q}if(!o[d+1136>>2]){break Q}j=o[d- -64>>2];n=o[d+60>>2];g=0;while(1){e=g<<2;c=e+n|0;t=e+j|0;e=o[t>>2];h=e&1|o[c>>2]<<1;o[c>>2]=e+h>>1;o[t>>2]=h-e>>1;g=g+1|0;if(g>>>0<r[d+1136>>2]){continue}break}break Q}d=o[a+4>>2];if(!o[d+3632>>2]){l[o[d+32>>2]](a,2,o[d+48>>2])}c=o[a+4>>2];if(!o[c+1144>>2]){break Q}g=0;while(1){fa(o[((g<<2)+c|0)+60>>2],o[c+1136>>2]<<2);g=g+1|0;c=o[a+4>>2];if(g>>>0<r[c+1144>>2]){continue}break}}o[b>>2]=1;c=o[a+4>>2];b=o[c+232>>2];if(b){o[c+228>>2]=b}b=o[a>>2];n=o[c+1144>>2];o[b+8>>2]=n;o[b+12>>2]=o[c+1148>>2];j=o[c+1152>>2];o[b+16>>2]=j;o[b+20>>2]=o[c+1140>>2];e=o[c+1136>>2];o[b+24>>2]=e;b=c+1160|0;d=o[b>>2];t=o[b+4>>2];b=t;k=d+e|0;if(k>>>0<e>>>0){b=b+1|0}w=k;o[c+240>>2]=k;h=b;o[c+244>>2]=h;k=c+60|0;s=c+1136|0;U:{V:{W:{if(o[c+3632>>2]){o[c+6156>>2]=1;b=o[c+6144>>2];j=o[c+6148>>2];ca(c+3752|0,s,2384);if((j|0)==(t|0)&b>>>0<d>>>0|j>>>0<t>>>0|((h|0)==(j|0)&b>>>0>=w>>>0|j>>>0>h>>>0)){break U}g=0;h=o[a+4>>2];o[h+3632>>2]=0;b=b-d|0;d=b;if(d){if(n){while(1){e=g<<2;o[e+(f+32|0)>>2]=o[(c+e|0)+60>>2]+(d<<2);g=g+1|0;if((n|0)!=(g|0)){continue}break}}o[h+3752>>2]=o[h+3752>>2]-d;c=h+3776|0;e=c;h=c;d=o[c+4>>2];c=b+o[c>>2]|0;if(c>>>0<b>>>0){d=d+1|0}o[h>>2]=c;o[e+4>>2]=d;b=o[a+4>>2];b=l[o[b+24>>2]](a,b+3752|0,f+32|0,o[b+48>>2])|0;break W}b=l[o[h+24>>2]](a,s,k,o[h+48>>2])|0;break W}X:{if(!o[c+248>>2]){o[c+3624>>2]=0;break X}if(!o[c+3624>>2]){break X}if(!$b(c+3636|0,k,n,e,j+7>>>3|0)){break V}c=o[a+4>>2]}b=l[o[c+24>>2]](a,s,k,o[c+48>>2])|0}if(!b){break U}}o[o[a>>2]>>2]=7;break a}o[o[a>>2]>>2]=2}i=1;break a}i=0;break a}o[o[a>>2]>>2]=8;i=0}N=f- -64|0;return i}function da(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=N-16|0;N=l;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(a>>>0<=244){f=o[2897];g=a>>>0<11?16:a+11&-8;a=g>>>3|0;b=f>>>a|0;if(b&3){c=a+((b^-1)&1)|0;e=c<<3;b=o[e+11636>>2];a=b+8|0;d=o[b+8>>2];e=e+11628|0;l:{if((d|0)==(e|0)){m=11588,n=He(-2,c)&f,o[m>>2]=n;break l}o[d+12>>2]=e;o[e+8>>2]=d}c=c<<3;o[b+4>>2]=c|3;b=b+c|0;o[b+4>>2]=o[b+4>>2]|1;break a}i=o[2899];if(g>>>0<=i>>>0){break k}if(b){c=2<<a;a=(0-c|c)&b<<a;a=(0-a&a)+ -1|0;b=a>>>12&16;c=b;a=a>>>b|0;b=a>>>5&8;c=c|b;a=a>>>b|0;b=a>>>2&4;c=c|b;a=a>>>b|0;b=a>>>1&2;c=c|b;a=a>>>b|0;b=a>>>1&1;c=(c|b)+(a>>>b|0)|0;d=c<<3;b=o[d+11636>>2];a=o[b+8>>2];d=d+11628|0;m:{if((a|0)==(d|0)){f=He(-2,c)&f;o[2897]=f;break m}o[a+12>>2]=d;o[d+8>>2]=a}a=b+8|0;o[b+4>>2]=g|3;h=b+g|0;c=c<<3;e=c-g|0;o[h+4>>2]=e|1;o[b+c>>2]=e;if(i){c=i>>>3|0;b=(c<<3)+11628|0;d=o[2902];c=1<<c;n:{if(!(c&f)){o[2897]=c|f;c=b;break n}c=o[b+8>>2]}o[b+8>>2]=d;o[c+12>>2]=d;o[d+12>>2]=b;o[d+8>>2]=c}o[2902]=h;o[2899]=e;break a}k=o[2898];if(!k){break k}a=(k&0-k)+ -1|0;b=a>>>12&16;c=b;a=a>>>b|0;b=a>>>5&8;c=c|b;a=a>>>b|0;b=a>>>2&4;c=c|b;a=a>>>b|0;b=a>>>1&2;c=c|b;a=a>>>b|0;b=a>>>1&1;b=o[((c|b)+(a>>>b|0)<<2)+11892>>2];d=(o[b+4>>2]&-8)-g|0;c=b;while(1){o:{a=o[c+16>>2];if(!a){a=o[c+20>>2];if(!a){break o}}e=(o[a+4>>2]&-8)-g|0;c=e>>>0<d>>>0;d=c?e:d;b=c?a:b;c=a;continue}break}j=o[b+24>>2];e=o[b+12>>2];if((e|0)!=(b|0)){a=o[b+8>>2];o[a+12>>2]=e;o[e+8>>2]=a;break b}c=b+20|0;a=o[c>>2];if(!a){a=o[b+16>>2];if(!a){break j}c=b+16|0}while(1){h=c;e=a;c=a+20|0;a=o[c>>2];if(a){continue}c=e+16|0;a=o[e+16>>2];if(a){continue}break}o[h>>2]=0;break b}g=-1;if(a>>>0>4294967231){break k}b=a+11|0;g=b&-8;i=o[2898];if(!i){break k}c=0-g|0;b=b>>>8|0;f=0;p:{if(!b){break p}f=31;if(g>>>0>16777215){break p}d=b+1048320>>>16&8;b=b<<d;a=b+520192>>>16&4;f=b<<a;b=f+245760>>>16&2;a=(f<<b>>>15|0)-(b|(a|d))|0;f=(a<<1|g>>>a+21&1)+28|0}d=o[(f<<2)+11892>>2];q:{r:{s:{if(!d){a=0;break s}b=g<<((f|0)==31?0:25-(f>>>1|0)|0);a=0;while(1){t:{h=(o[d+4>>2]&-8)-g|0;if(h>>>0>=c>>>0){break t}e=d;c=h;if(c){break t}c=0;a=d;break r}h=o[d+20>>2];d=o[((b>>>29&4)+d|0)+16>>2];a=h?(h|0)==(d|0)?a:h:a;b=b<<((d|0)!=0);if(d){continue}break}}if(!(a|e)){a=2<<f;a=(0-a|a)&i;if(!a){break k}a=(a&0-a)+ -1|0;b=a>>>12&16;d=b;a=a>>>b|0;b=a>>>5&8;d=d|b;a=a>>>b|0;b=a>>>2&4;d=d|b;a=a>>>b|0;b=a>>>1&2;d=d|b;a=a>>>b|0;b=a>>>1&1;a=o[((d|b)+(a>>>b|0)<<2)+11892>>2]}if(!a){break q}}while(1){d=(o[a+4>>2]&-8)-g|0;b=d>>>0<c>>>0;c=b?d:c;e=b?a:e;b=o[a+16>>2];if(b){a=b}else{a=o[a+20>>2]}if(a){continue}break}}if(!e|c>>>0>=o[2899]-g>>>0){break k}h=o[e+24>>2];b=o[e+12>>2];if((e|0)!=(b|0)){a=o[e+8>>2];o[a+12>>2]=b;o[b+8>>2]=a;break c}d=e+20|0;a=o[d>>2];if(!a){a=o[e+16>>2];if(!a){break i}d=e+16|0}while(1){f=d;b=a;d=a+20|0;a=o[d>>2];if(a){continue}d=b+16|0;a=o[b+16>>2];if(a){continue}break}o[f>>2]=0;break c}b=o[2899];if(b>>>0>=g>>>0){a=o[2902];c=b-g|0;u:{if(c>>>0>=16){o[2899]=c;d=a+g|0;o[2902]=d;o[d+4>>2]=c|1;o[a+b>>2]=c;o[a+4>>2]=g|3;break u}o[2902]=0;o[2899]=0;o[a+4>>2]=b|3;b=a+b|0;o[b+4>>2]=o[b+4>>2]|1}a=a+8|0;break a}d=o[2900];if(d>>>0>g>>>0){b=d-g|0;o[2900]=b;a=o[2903];c=a+g|0;o[2903]=c;o[c+4>>2]=b|1;o[a+4>>2]=g|3;a=a+8|0;break a}a=0;e=g+47|0;c=e;if(o[3015]){b=o[3017]}else{o[3018]=-1;o[3019]=-1;o[3016]=4096;o[3017]=4096;o[3015]=l+12&-16^1431655768;o[3020]=0;o[3008]=0;b=4096}f=c+b|0;h=0-b|0;c=f&h;if(c>>>0<=g>>>0){break a}b=o[3007];if(b){i=o[3005];j=i+c|0;if(j>>>0<=i>>>0|j>>>0>b>>>0){break a}}if(p[12032]&4){break f}v:{w:{b=o[2903];if(b){a=12036;while(1){i=o[a>>2];if(i+o[a+4>>2]>>>0>b>>>0?i>>>0<=b>>>0:0){break w}a=o[a+8>>2];if(a){continue}break}}b=ya(0);if((b|0)==-1){break g}f=c;a=o[3016];d=a+ -1|0;if(d&b){f=(c-b|0)+(b+d&0-a)|0}if(f>>>0<=g>>>0|f>>>0>2147483646){break g}a=o[3007];if(a){d=o[3005];h=d+f|0;if(h>>>0<=d>>>0|h>>>0>a>>>0){break g}}a=ya(f);if((b|0)!=(a|0)){break v}break e}f=h&f-d;if(f>>>0>2147483646){break g}b=ya(f);if((b|0)==(o[a>>2]+o[a+4>>2]|0)){break h}a=b}if(!((a|0)==-1|g+48>>>0<=f>>>0)){b=o[3017];b=b+(e-f|0)&0-b;if(b>>>0>2147483646){b=a;break e}if((ya(b)|0)!=-1){f=b+f|0;b=a;break e}ya(0-f|0);break g}b=a;if((a|0)!=-1){break e}break g}e=0;break b}b=0;break c}if((b|0)!=-1){break e}}o[3008]=o[3008]|4}if(c>>>0>2147483646){break d}b=ya(c);a=ya(0);if(b>>>0>=a>>>0|(b|0)==-1|(a|0)==-1){break d}f=a-b|0;if(f>>>0<=g+40>>>0){break d}}a=o[3005]+f|0;o[3005]=a;if(a>>>0>r[3006]){o[3006]=a}x:{y:{z:{c=o[2903];if(c){a=12036;while(1){d=o[a>>2];e=o[a+4>>2];if((d+e|0)==(b|0)){break z}a=o[a+8>>2];if(a){continue}break}break y}a=o[2901];if(!(b>>>0>=a>>>0?a:0)){o[2901]=b}a=0;o[3010]=f;o[3009]=b;o[2905]=-1;o[2906]=o[3015];o[3012]=0;while(1){c=a<<3;d=c+11628|0;o[c+11636>>2]=d;o[c+11640>>2]=d;a=a+1|0;if((a|0)!=32){continue}break}a=f+ -40|0;c=b+8&7?-8-b&7:0;d=a-c|0;o[2900]=d;c=b+c|0;o[2903]=c;o[c+4>>2]=d|1;o[(a+b|0)+4>>2]=40;o[2904]=o[3019];break x}if(p[a+12|0]&8|b>>>0<=c>>>0|d>>>0>c>>>0){break y}o[a+4>>2]=e+f;a=c+8&7?-8-c&7:0;b=a+c|0;o[2903]=b;d=o[2900]+f|0;a=d-a|0;o[2900]=a;o[b+4>>2]=a|1;o[(c+d|0)+4>>2]=40;o[2904]=o[3019];break x}e=o[2901];if(b>>>0<e>>>0){o[2901]=b;e=0}d=b+f|0;a=12036;A:{B:{C:{D:{E:{F:{while(1){if((d|0)!=o[a>>2]){a=o[a+8>>2];if(a){continue}break F}break}if(!(p[a+12|0]&8)){break E}}a=12036;while(1){d=o[a>>2];if(d>>>0<=c>>>0){e=d+o[a+4>>2]|0;if(e>>>0>c>>>0){break D}}a=o[a+8>>2];continue}}o[a>>2]=b;o[a+4>>2]=o[a+4>>2]+f;j=(b+8&7?-8-b&7:0)+b|0;o[j+4>>2]=g|3;b=d+(d+8&7?-8-d&7:0)|0;a=(b-j|0)-g|0;h=g+j|0;if((b|0)==(c|0)){o[2903]=h;a=o[2900]+a|0;o[2900]=a;o[h+4>>2]=a|1;break B}if(o[2902]==(b|0)){o[2902]=h;a=o[2899]+a|0;o[2899]=a;o[h+4>>2]=a|1;o[a+h>>2]=a;break B}c=o[b+4>>2];if((c&3)==1){k=c&-8;G:{if(c>>>0<=255){e=c>>>3|0;c=o[b+8>>2];d=o[b+12>>2];if((d|0)==(c|0)){m=11588,n=o[2897]&He(-2,e),o[m>>2]=n;break G}o[c+12>>2]=d;o[d+8>>2]=c;break G}i=o[b+24>>2];f=o[b+12>>2];H:{if((f|0)!=(b|0)){c=o[b+8>>2];o[c+12>>2]=f;o[f+8>>2]=c;break H}I:{d=b+20|0;g=o[d>>2];if(g){break I}d=b+16|0;g=o[d>>2];if(g){break I}f=0;break H}while(1){c=d;f=g;d=g+20|0;g=o[d>>2];if(g){continue}d=f+16|0;g=o[f+16>>2];if(g){continue}break}o[c>>2]=0}if(!i){break G}c=o[b+28>>2];d=(c<<2)+11892|0;J:{if(o[d>>2]==(b|0)){o[d>>2]=f;if(f){break J}m=11592,n=o[2898]&He(-2,c),o[m>>2]=n;break G}o[i+(o[i+16>>2]==(b|0)?16:20)>>2]=f;if(!f){break G}}o[f+24>>2]=i;c=o[b+16>>2];if(c){o[f+16>>2]=c;o[c+24>>2]=f}c=o[b+20>>2];if(!c){break G}o[f+20>>2]=c;o[c+24>>2]=f}b=b+k|0;a=a+k|0}o[b+4>>2]=o[b+4>>2]&-2;o[h+4>>2]=a|1;o[a+h>>2]=a;if(a>>>0<=255){b=a>>>3|0;a=(b<<3)+11628|0;c=o[2897];b=1<<b;K:{if(!(c&b)){o[2897]=b|c;b=a;break K}b=o[a+8>>2]}o[a+8>>2]=h;o[b+12>>2]=h;o[h+12>>2]=a;o[h+8>>2]=b;break B}c=h;d=a>>>8|0;b=0;L:{if(!d){break L}b=31;if(a>>>0>16777215){break L}e=d+1048320>>>16&8;d=d<<e;b=d+520192>>>16&4;g=d<<b;d=g+245760>>>16&2;b=(g<<d>>>15|0)-(d|(b|e))|0;b=(b<<1|a>>>b+21&1)+28|0}o[c+28>>2]=b;o[h+16>>2]=0;o[h+20>>2]=0;c=(b<<2)+11892|0;d=o[2898];e=1<<b;M:{if(!(d&e)){o[2898]=d|e;o[c>>2]=h;break M}d=a<<((b|0)==31?0:25-(b>>>1|0)|0);b=o[c>>2];while(1){c=b;if((o[b+4>>2]&-8)==(a|0)){break C}b=d>>>29|0;d=d<<1;e=(b&4)+c|0;b=o[e+16>>2];if(b){continue}break}o[e+16>>2]=h}o[h+24>>2]=c;o[h+12>>2]=h;o[h+8>>2]=h;break B}a=f+ -40|0;d=b+8&7?-8-b&7:0;h=a-d|0;o[2900]=h;d=b+d|0;o[2903]=d;o[d+4>>2]=h|1;o[(a+b|0)+4>>2]=40;o[2904]=o[3019];a=(e+(e+ -39&7?39-e&7:0)|0)+ -47|0;d=a>>>0<c+16>>>0?c:a;o[d+4>>2]=27;a=o[3012];o[d+16>>2]=o[3011];o[d+20>>2]=a;a=o[3010];o[d+8>>2]=o[3009];o[d+12>>2]=a;o[3011]=d+8;o[3010]=f;o[3009]=b;o[3012]=0;a=d+24|0;while(1){o[a+4>>2]=7;b=a+8|0;a=a+4|0;if(e>>>0>b>>>0){continue}break}if((c|0)==(d|0)){break x}o[d+4>>2]=o[d+4>>2]&-2;e=d-c|0;o[c+4>>2]=e|1;o[d>>2]=e;if(e>>>0<=255){b=e>>>3|0;a=(b<<3)+11628|0;d=o[2897];b=1<<b;N:{if(!(d&b)){o[2897]=b|d;b=a;break N}b=o[a+8>>2]}o[a+8>>2]=c;o[b+12>>2]=c;o[c+12>>2]=a;o[c+8>>2]=b;break x}o[c+16>>2]=0;o[c+20>>2]=0;b=c;d=e>>>8|0;a=0;O:{if(!d){break O}a=31;if(e>>>0>16777215){break O}f=d+1048320>>>16&8;d=d<<f;a=d+520192>>>16&4;h=d<<a;d=h+245760>>>16&2;a=(h<<d>>>15|0)-(d|(a|f))|0;a=(a<<1|e>>>a+21&1)+28|0}o[b+28>>2]=a;b=(a<<2)+11892|0;d=o[2898];f=1<<a;P:{if(!(d&f)){o[2898]=d|f;o[b>>2]=c;o[c+24>>2]=b;break P}a=e<<((a|0)==31?0:25-(a>>>1|0)|0);b=o[b>>2];while(1){d=b;if((e|0)==(o[b+4>>2]&-8)){break A}b=a>>>29|0;a=a<<1;f=d+(b&4)|0;b=o[f+16>>2];if(b){continue}break}o[f+16>>2]=c;o[c+24>>2]=d}o[c+12>>2]=c;o[c+8>>2]=c;break x}a=o[c+8>>2];o[a+12>>2]=h;o[c+8>>2]=h;o[h+24>>2]=0;o[h+12>>2]=c;o[h+8>>2]=a}a=j+8|0;break a}a=o[d+8>>2];o[a+12>>2]=c;o[d+8>>2]=c;o[c+24>>2]=0;o[c+12>>2]=d;o[c+8>>2]=a}a=o[2900];if(a>>>0<=g>>>0){break d}b=a-g|0;o[2900]=b;a=o[2903];c=a+g|0;o[2903]=c;o[c+4>>2]=b|1;o[a+4>>2]=g|3;a=a+8|0;break a}o[2896]=48;a=0;break a}Q:{if(!h){break Q}a=o[e+28>>2];d=(a<<2)+11892|0;R:{if(o[d>>2]==(e|0)){o[d>>2]=b;if(b){break R}i=He(-2,a)&i;o[2898]=i;break Q}o[h+(o[h+16>>2]==(e|0)?16:20)>>2]=b;if(!b){break Q}}o[b+24>>2]=h;a=o[e+16>>2];if(a){o[b+16>>2]=a;o[a+24>>2]=b}a=o[e+20>>2];if(!a){break Q}o[b+20>>2]=a;o[a+24>>2]=b}S:{if(c>>>0<=15){a=c+g|0;o[e+4>>2]=a|3;a=a+e|0;o[a+4>>2]=o[a+4>>2]|1;break S}o[e+4>>2]=g|3;d=e+g|0;o[d+4>>2]=c|1;o[c+d>>2]=c;if(c>>>0<=255){b=c>>>3|0;a=(b<<3)+11628|0;c=o[2897];b=1<<b;T:{if(!(c&b)){o[2897]=b|c;b=a;break T}b=o[a+8>>2]}o[a+8>>2]=d;o[b+12>>2]=d;o[d+12>>2]=a;o[d+8>>2]=b;break S}b=d;g=c>>>8|0;a=0;U:{if(!g){break U}a=31;if(c>>>0>16777215){break U}f=g+1048320>>>16&8;g=g<<f;a=g+520192>>>16&4;h=g<<a;g=h+245760>>>16&2;a=(h<<g>>>15|0)-(g|(a|f))|0;a=(a<<1|c>>>a+21&1)+28|0}o[b+28>>2]=a;o[d+16>>2]=0;o[d+20>>2]=0;b=(a<<2)+11892|0;V:{g=1<<a;W:{if(!(g&i)){o[2898]=g|i;o[b>>2]=d;break W}a=c<<((a|0)==31?0:25-(a>>>1|0)|0);g=o[b>>2];while(1){b=g;if((o[b+4>>2]&-8)==(c|0)){break V}g=a>>>29|0;a=a<<1;f=(g&4)+b|0;g=o[f+16>>2];if(g){continue}break}o[f+16>>2]=d}o[d+24>>2]=b;o[d+12>>2]=d;o[d+8>>2]=d;break S}a=o[b+8>>2];o[a+12>>2]=d;o[b+8>>2]=d;o[d+24>>2]=0;o[d+12>>2]=b;o[d+8>>2]=a}a=e+8|0;break a}X:{if(!j){break X}a=o[b+28>>2];c=(a<<2)+11892|0;Y:{if(o[c>>2]==(b|0)){o[c>>2]=e;if(e){break Y}m=11592,n=He(-2,a)&k,o[m>>2]=n;break X}o[j+(o[j+16>>2]==(b|0)?16:20)>>2]=e;if(!e){break X}}o[e+24>>2]=j;a=o[b+16>>2];if(a){o[e+16>>2]=a;o[a+24>>2]=e}a=o[b+20>>2];if(!a){break X}o[e+20>>2]=a;o[a+24>>2]=e}Z:{if(d>>>0<=15){a=d+g|0;o[b+4>>2]=a|3;a=a+b|0;o[a+4>>2]=o[a+4>>2]|1;break Z}o[b+4>>2]=g|3;g=b+g|0;o[g+4>>2]=d|1;o[d+g>>2]=d;if(i){c=i>>>3|0;a=(c<<3)+11628|0;e=o[2902];c=1<<c;_:{if(!(c&f)){o[2897]=c|f;c=a;break _}c=o[a+8>>2]}o[a+8>>2]=e;o[c+12>>2]=e;o[e+12>>2]=a;o[e+8>>2]=c}o[2902]=g;o[2899]=d}a=b+8|0}N=l+16|0;return a|0}function vb(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,m=0,n=0,p=0,q=0,t=0,u=0,v=0,w=0;t=N-176|0;N=t;i=13;j=o[a>>2];a:{if(o[j>>2]!=1){break a}i=3;if(!c|(e?0:d)){break a}i=4;m=o[j+24>>2];if(m+ -1>>>0>7){break a}b:{c:{if((m|0)!=2){o[j+16>>2]=0;break c}if(o[j+16>>2]){break b}}o[j+20>>2]=0}m=o[j+28>>2];if(m>>>0>=32){o[j+16>>2]=0;i=5;break a}i=5;if(m+ -4>>>0>20){break a}if(o[j+32>>2]+ -1>>>0>=655350){i=6;break a}j=o[a>>2];k=o[j+36>>2];d:{if(!k){k=o[j+556>>2]?4096:1152;o[j+36>>2]=k;break d}i=7;if(k+ -16>>>0>65519){break a}}i=8;m=o[j+556>>2];if(m>>>0>32){break a}i=10;if(k>>>0<m>>>0){break a}m=o[j+560>>2];e:{if(!m){m=j;n=o[j+28>>2];f:{if(n>>>0<=15){n=n>>>0>5?(n>>>1|0)+2|0:5;break f}if((n|0)==16){n=7;if(k>>>0<193){break f}n=8;if(k>>>0<385){break f}n=9;if(k>>>0<577){break f}n=10;if(k>>>0<1153){break f}n=11;if(k>>>0<2305){break f}n=k>>>0<4609?12:13;break f}n=13;if(k>>>0<385){break f}n=k>>>0<1153?14:15}o[m+560>>2]=n;break e}i=9;if(m+ -5>>>0>10){break a}}g:{if(!o[j+8>>2]){k=o[j+580>>2];break g}i=11;if(!((k>>>0<4609|r[j+32>>2]>48e3)&k>>>0<16385)){break a}if(!he(o[o[a>>2]+32>>2])){break a}j=o[a>>2];if(He(o[j+28>>2]+ -8|0,30)>>>0>4){break a}k=o[j+580>>2];if(k>>>0>8){break a}if(r[j+32>>2]>48e3){break g}if(r[j+36>>2]>4608|r[j+556>>2]>12){break a}}m=1<<o[1406];if(k>>>0>=m>>>0){k=m+ -1|0;o[j+580>>2]=k}if(r[j+576>>2]>=k>>>0){o[j+576>>2]=k}h:{if(!h){break h}k=o[j+600>>2];if(!k){break h}n=o[j+604>>2];if(n>>>0<2){break h}i=1;while(1){m=o[(i<<2)+k>>2];if(!(!m|o[m>>2]!=4)){while(1){j=(i<<2)+k|0;i=i+ -1|0;o[j>>2]=o[(i<<2)+k>>2];k=o[o[a>>2]+600>>2];if(i){continue}break}o[k>>2]=m;j=o[a>>2];break h}i=i+1|0;if((n|0)!=(i|0)){continue}break}}m=o[j+604>>2];i:{j:{k=o[j+600>>2];if(k){n=0;if(!m){break i}while(1){j=o[(n<<2)+k>>2];if(!(!j|o[j>>2]!=3)){o[o[a+4>>2]+7048>>2]=j+16;break j}n=n+1|0;if((m|0)!=(n|0)){continue}break}break j}i=12;if(m){break a}n=0;break i}j=0;n=0;m=0;while(1){i=12;k:{l:{m:{n:{o:{k=o[(q<<2)+k>>2];switch(o[k>>2]){case 0:break a;case 6:break l;case 5:break m;case 4:break n;case 3:break o;default:break k}}if(v){break a}v=1;n=p;m=j;if(ge(k+16|0)){break k}break a}n=1;m=j;if(!p){break k}break a}n=p;m=j;if(le(k+16|0,o[k+160>>2])){break k}break a}if(!ie(k+16|0)){break a}n=p;m=j;p:{switch(o[k+16>>2]+ -1|0){case 0:if(w){break a}m=o[k+20>>2];if(ib(m,10763)){if(ib(m,10773)){break a}}if(o[k+28>>2]!=32){break a}w=1;m=j;if(o[k+32>>2]==32){break k}break a;case 1:break p;default:break k}}m=1;if(j){break a}}q=q+1|0;j=o[a>>2];if(q>>>0>=r[j+604>>2]){break i}k=o[j+600>>2];j=m;p=n;continue}}k=0;q=o[a+4>>2];o[q>>2]=0;if(o[j+24>>2]){while(1){j=k<<2;o[(j+q|0)+4>>2]=0;o[(j+o[a+4>>2]|0)+7328>>2]=0;o[(j+o[a+4>>2]|0)+44>>2]=0;o[(j+o[a+4>>2]|0)+7368>>2]=0;q=o[a+4>>2];k=k+1|0;if(k>>>0<r[o[a>>2]+24>>2]){continue}break}}j=0;o[q+36>>2]=0;o[o[a+4>>2]+7360>>2]=0;o[o[a+4>>2]+76>>2]=0;o[o[a+4>>2]+7400>>2]=0;o[o[a+4>>2]+40>>2]=0;o[o[a+4>>2]+7364>>2]=0;o[o[a+4>>2]+80>>2]=0;o[o[a+4>>2]+7404>>2]=0;i=o[a+4>>2];k=o[a>>2];if(o[k+40>>2]){while(1){m=j<<2;o[(m+i|0)+84>>2]=0;o[(m+o[a+4>>2]|0)+7408>>2]=0;i=o[a+4>>2];j=j+1|0;k=o[a>>2];if(j>>>0<r[k+40>>2]){continue}break}}j=0;o[i+7536>>2]=0;o[i+212>>2]=0;if(o[k+24>>2]){while(1){m=j<<3;o[(m+i|0)+256>>2]=0;o[(m+o[a+4>>2]|0)+7540>>2]=0;o[(m+o[a+4>>2]|0)+260>>2]=0;o[(m+o[a+4>>2]|0)+7544>>2]=0;i=o[a+4>>2];o[(i+(j<<2)|0)+6768>>2]=0;j=j+1|0;if(j>>>0<r[o[a>>2]+24>>2]){continue}break}}o[i+320>>2]=0;o[o[a+4>>2]+7604>>2]=0;o[o[a+4>>2]+324>>2]=0;o[o[a+4>>2]+7608>>2]=0;j=o[a+4>>2];o[j+6800>>2]=0;o[j+328>>2]=0;o[o[a+4>>2]+7612>>2]=0;o[o[a+4>>2]+332>>2]=0;o[o[a+4>>2]+7616>>2]=0;j=o[a+4>>2];o[j+7620>>2]=0;o[j+7624>>2]=0;o[j+6848>>2]=0;o[j+6852>>2]=0;o[j+6804>>2]=0;m=o[a>>2];p=o[m+36>>2];i=o[m+32>>2];o[j+7052>>2]=0;o[j+7056>>2]=0;o[j+6864>>2]=0;m=j;u=+(i>>>0)*.4/+(p>>>0)+.5;q:{if(u<4294967296&u>=0){p=~~u>>>0;break q}p=0}o[m+6860>>2]=p?p:1;Xb(j+7156|0);i=o[a+4>>2];o[i+7244>>2]=12;o[i+7240>>2]=13;o[i+7236>>2]=12;o[i+7228>>2]=14;o[i+7224>>2]=15;o[i+7220>>2]=16;o[i+7232>>2]=17;k=o[a>>2];o[k>>2]=0;o[i+7260>>2]=h;r:{s:{t:{if(h){if(!Sd(k+632|0)){break t}k=o[a>>2];i=o[a+4>>2]}o[i+7276>>2]=c;o[i+7264>>2]=b;o[i+7288>>2]=g;o[i+7280>>2]=f;o[i+7272>>2]=e;o[i+7268>>2]=d;b=o[k+36>>2];if(r[i>>2]<b>>>0){d=b+5|0;u:{v:{w:{if(o[k+24>>2]){c=0;while(1){f=c<<2;e=f+o[a+4>>2]|0;g=ta(d,e+7328|0,e+4|0);e=o[(f+o[a+4>>2]|0)+4>>2];o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;o[e+12>>2]=0;e=f+o[a+4>>2]|0;o[e+4>>2]=o[e+4>>2]+16;if(!g){break w}c=c+1|0;if(c>>>0<r[o[a>>2]+24>>2]){continue}break}}c=o[a+4>>2];c=ta(d,c+7360|0,c+36|0);e=o[o[a+4>>2]+36>>2];o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;o[e+12>>2]=0;e=o[a+4>>2];o[e+36>>2]=o[e+36>>2]+16;if(c){c=o[a+4>>2];c=ta(d,c+7364|0,c+40|0);d=o[o[a+4>>2]+40>>2];o[d>>2]=0;o[d+4>>2]=0;o[d+8>>2]=0;o[d+12>>2]=0;d=o[a+4>>2];o[d+40>>2]=o[d+40>>2]+16}if(!c){break w}d=o[a>>2];if(o[d+556>>2]){c=o[a+4>>2];if(o[d+40>>2]){i=0;while(1){c=(i<<2)+c|0;if(!ta(b,c+7408|0,c+84|0)){break w}c=o[a+4>>2];i=i+1|0;if(i>>>0<r[o[a>>2]+40>>2]){continue}break}}if(!ta(b,c+7536|0,c+212|0)){break w}}g=0;k=1;f=0;while(1){if(f>>>0<r[o[a>>2]+24>>2]){i=0;c=1;d=0;while(1){if(i&1){break w}h=c;c=(o[a+4>>2]+(f<<3)|0)+(d<<2)|0;e=ta(b,c+7540|0,c+256|0);h=h&(e|0)!=0;i=!e;d=1;c=0;if(h){continue}break}f=f+1|0;if(e){continue}break w}break}h=1;while(1){i=0;c=1;d=0;if(!h){break w}while(1){if(i&1){break w}f=c;c=(o[a+4>>2]+(g<<3)|0)+(d<<2)|0;e=ta(b,c+7604|0,c+320|0);f=f&(e|0)!=0;i=!e;d=1;c=0;if(f){continue}break}h=(e|0)!=0;c=k&h;g=1;k=0;if(c){continue}break}if(!e){break w}d=b<<1;c=o[a+4>>2];c=Xd(d,c+7620|0,c+6848|0);i=o[a>>2];e=o[i+572>>2];if(!e|!c){break v}c=o[a+4>>2];if(ta(d,c+7624|0,c+6852|0)){break u}}i=o[a>>2];break r}if(e|!c){break r}}i=o[a+4>>2];x:{if((b|0)==o[i>>2]){break x}c=o[a>>2];if(!o[c+556>>2]|!o[c+40>>2]){break x}i=0;while(1){y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{I:{J:{K:{L:{M:{N:{O:{P:{Q:{c=(i<<4)+c|0;switch(o[c+44>>2]){case 16:break A;case 15:break B;case 14:break C;case 13:break D;case 12:break E;case 11:break F;case 10:break G;case 9:break H;case 8:break I;case 7:break J;case 6:break K;case 5:break L;case 4:break M;case 3:break N;case 2:break O;case 1:break P;case 0:break Q;default:break z}}jd(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}id(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}hd(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}gd(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}fd(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}ed(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}dd(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b,s[c+48>>2]);break y}cd(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}Lb(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}bd(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}ad(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}Zc(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}Yc(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}Xc(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b,s[c+48>>2]);break y}$c(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b,s[c+48>>2],s[c+52>>2],s[c+56>>2]);break y}_c(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b,s[c+48>>2],s[c+52>>2],s[c+56>>2]);break y}Wc(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b);break y}Lb(o[(o[a+4>>2]+(i<<2)|0)+84>>2],b)}i=i+1|0;c=o[a>>2];if(i>>>0<r[c+40>>2]){continue}break}i=o[a+4>>2]}o[i>>2]=b}b=o[i+6856>>2];o[b+16>>2]=0;o[b+8>>2]=8192;o[b+12>>2]=0;c=b;b=da(32768);o[c>>2]=b;d=o[a>>2];if(!b){o[d>>2]=8;i=1;break a}if(o[d+4>>2]){i=1;c=o[a+4>>2];b=o[d+36>>2]+1|0;o[c+11796>>2]=b;R:{if(!o[d+24>>2]){break R}b=Na(4,b);o[o[a+4>>2]+11764>>2]=b;d=o[a>>2];if(b){while(1){c=o[a+4>>2];if(i>>>0>=r[d+24>>2]){break R}b=Na(4,o[c+11796>>2]);o[(o[a+4>>2]+(i<<2)|0)+11764>>2]=b;i=i+1|0;d=o[a>>2];if(b){continue}break}}o[d>>2]=8;i=1;break a}o[c+11800>>2]=0;S:{c=o[c+11752>>2];if(c){break S}c=Pb();o[o[a+4>>2]+11752>>2]=c;if(c){break S}o[o[a>>2]>>2]=3;i=1;break a}b=Qb(c,18,0,0,0,0,19,20,21,a);d=o[a>>2];if(b){break s}c=!o[d+4>>2]}else{c=1}b=o[a+4>>2];o[b+7312>>2]=0;o[b+7316>>2]=0;o[b+7292>>2]=0;e=b+11816|0;o[e>>2]=0;o[e+4>>2]=0;e=b+11824|0;o[e>>2]=0;o[e+4>>2]=0;e=b+11832|0;o[e>>2]=0;o[e+4>>2]=0;o[b+11840>>2]=0;o[d+624>>2]=0;o[d+628>>2]=0;o[d+616>>2]=0;o[d+620>>2]=0;o[d+608>>2]=0;o[d+612>>2]=0;if(!c){o[b+11756>>2]=0}if(!_(o[b+6856>>2],o[1354],o[1355])){o[o[a>>2]>>2]=7;i=1;break a}i=1;if(!Fa(a,0,0)){break a}b=o[a+4>>2];c=o[a>>2];if(o[c+4>>2]){o[b+11756>>2]=1}o[b+6872>>2]=0;o[b+6876>>2]=0;o[b+6880>>2]=34;o[b+6888>>2]=o[c+36>>2];o[o[a+4>>2]+6892>>2]=o[o[a>>2]+36>>2];o[o[a+4>>2]+6896>>2]=0;o[o[a+4>>2]+6900>>2]=0;o[o[a+4>>2]+6904>>2]=o[o[a>>2]+32>>2];o[o[a+4>>2]+6908>>2]=o[o[a>>2]+24>>2];o[o[a+4>>2]+6912>>2]=o[o[a>>2]+28>>2];c=o[a>>2];d=o[c+596>>2];b=o[a+4>>2]+6920|0;o[b>>2]=o[c+592>>2];o[b+4>>2]=d;b=o[a+4>>2];c=b+6936|0;o[c>>2]=0;o[c+4>>2]=0;b=b+6928|0;o[b>>2]=0;o[b+4>>2]=0;if(o[o[a>>2]+12>>2]){b=o[a+4>>2]+7060|0;o[b+80>>2]=0;o[b+84>>2]=0;o[b+64>>2]=1732584193;o[b+68>>2]=-271733879;o[b+72>>2]=-1732584194;o[b+76>>2]=271733878;o[b+88>>2]=0;o[b+92>>2]=0}b=o[a+4>>2];if(!hb(b+6872|0,o[b+6856>>2])){o[o[a>>2]>>2]=7;break a}if(!Fa(a,0,0)){break a}o[o[a+4>>2]+6896>>2]=-1<<o[1358]^-1;b=o[a+4>>2]+6920|0;o[b>>2]=0;o[b+4>>2]=0;if(!n){o[t>>2]=4;c=o[o[a>>2]+604>>2];b=t;o[b+24>>2]=0;o[b+28>>2]=0;o[b+16>>2]=0;o[b+20>>2]=0;o[b+8>>2]=8;o[b+4>>2]=!c;if(!hb(b,o[o[a+4>>2]+6856>>2])){o[o[a>>2]>>2]=7;break a}if(!Fa(a,0,0)){break a}}T:{d=o[a>>2];e=o[d+604>>2];if(!e){break T}c=0;while(1){b=o[o[d+600>>2]+(c<<2)>>2];o[b+4>>2]=(e+ -1|0)==(c|0);if(!hb(b,o[o[a+4>>2]+6856>>2])){o[o[a>>2]>>2]=7;break a}if(Fa(a,0,0)){c=c+1|0;d=o[a>>2];e=o[d+604>>2];if(c>>>0>=e>>>0){break T}continue}break}break a}U:{b=o[a+4>>2];c=o[b+7272>>2];if(!c){break U}b=l[c](a,d+624|0,o[b+7288>>2])|0;d=o[a>>2];if((b|0)!=1){break U}o[d>>2]=5;break a}i=0;if(!o[d+4>>2]){break a}o[o[a+4>>2]+11756>>2]=2;break a}o[o[a>>2]>>2]=2;i=1;break a}o[d>>2]=3;i=1;break a}o[i>>2]=8;i=1}N=t+176|0;return i}function Kb(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,R=0,S=0,T=0;n=N-192|0;N=n;F=h;H=i&65535;r=d;p=e&65535;D=(e^i)&-2147483648;l=i>>>16&32767;a:{s=e>>>16&32767;b:{c:{if(l+ -1>>>0<32766?s+ -1>>>0<=32765:0){break c}m=e&2147483647;k=m;j=d;if(!(!j&(k|0)==2147418112?!(b|c):(k|0)==2147418112&j>>>0<0|k>>>0<2147418112)){K=d;D=e|32768;break b}m=i&2147483647;e=m;d=h;if(!(!d&(e|0)==2147418112?!(f|g):(e|0)==2147418112&d>>>0<0|e>>>0<2147418112)){K=h;D=i|32768;b=f;c=g;break b}if(!(b|j|(k^2147418112|c))){if(!(d|f|(e^2147418112|g))){b=0;c=0;D=2147450880;break b}D=D|2147418112;b=0;c=0;break b}if(!(d|f|(e^2147418112|g))){b=0;c=0;break b}if(!(b|j|(c|k))){break a}if(!(d|f|(e|g))){D=D|2147418112;b=0;c=0;break b}if((k|0)==65535|k>>>0<65535){i=b;d=!(p|r);h=d<<6;j=x(d?b:r)+32|0;b=x(d?c:p);b=h+((b|0)==32?j:b)|0;ia(n+176|0,i,c,r,p,b+ -15|0);I=16-b|0;r=o[n+184>>2];p=o[n+188>>2];c=o[n+180>>2];b=o[n+176>>2]}if(e>>>0>65535){break c}d=!(F|H);e=d<<6;h=x(d?f:F)+32|0;d=x(d?g:H);d=e+((d|0)==32?h:d)|0;ia(n+160|0,f,g,F,H,d+ -15|0);I=(d+I|0)+ -16|0;F=o[n+168>>2];H=o[n+172>>2];f=o[n+160>>2];g=o[n+164>>2]}e=H|65536;J=e;L=F;d=F;k=e<<15|d>>>17;d=d<<15|g>>>17;h=-102865788-d|0;e=k;i=1963258675-(k+(4192101508<d>>>0)|0)|0;ra(n+144|0,d,k,h,i);j=o[n+152>>2];ra(n+128|0,0-j|0,0-(o[n+156>>2]+(0<j>>>0)|0)|0,h,i);h=o[n+136>>2];i=h<<1|o[n+132>>2]>>>31;h=o[n+140>>2]<<1|h>>>31;ra(n+112|0,i,h,d,k);j=h;h=o[n+120>>2];ra(n+96|0,i,j,0-h|0,0-(o[n+124>>2]+(0<h>>>0)|0)|0);h=o[n+104>>2];i=h<<1|o[n+100>>2]>>>31;h=o[n+108>>2]<<1|h>>>31;ra(n+80|0,i,h,d,k);j=h;h=o[n+88>>2];ra(n- -64|0,i,j,0-h|0,0-(o[n+92>>2]+(0<h>>>0)|0)|0);h=o[n+72>>2];i=h<<1|o[n+68>>2]>>>31;h=o[n+76>>2]<<1|h>>>31;ra(n+48|0,i,h,d,k);j=h;h=o[n+56>>2];ra(n+32|0,i,j,0-h|0,0-(o[n+60>>2]+(0<h>>>0)|0)|0);h=o[n+40>>2];i=h<<1|o[n+36>>2]>>>31;h=o[n+44>>2]<<1|h>>>31;ra(n+16|0,i,h,d,k);j=h;h=o[n+24>>2];ra(n,i,j,0-h|0,0-(o[n+28>>2]+(0<h>>>0)|0)|0);I=(s-l|0)+I|0;h=o[n+8>>2];j=o[n+12>>2]<<1|h>>>31;i=h<<1;k=j+ -1|0;i=(o[n+4>>2]>>>31|i)+ -1|0;if((i|0)!=-1){k=k+1|0}h=i;j=0;y=j;t=e;l=0;m=Ee(h,j,e,l);e=Q;w=e;u=k;s=0;j=d;h=Ee(k,s,j,0);d=h+m|0;k=Q+e|0;k=d>>>0<h>>>0?k+1|0:k;h=d;d=k;q=Ee(i,y,j,q);e=0+q|0;k=h;j=k+Q|0;j=e>>>0<q>>>0?j+1|0:j;q=e;e=j;j=(k|0)==(j|0)&q>>>0<A>>>0|j>>>0<k>>>0;k=(d|0)==(w|0)&k>>>0<m>>>0|d>>>0<w>>>0;h=d;d=Ee(u,s,t,l)+d|0;l=k+Q|0;l=d>>>0<h>>>0?l+1|0:l;h=d;d=j+d|0;j=l;B=d;h=d>>>0<h>>>0?j+1|0:j;d=g;z=(d&131071)<<15|f>>>17;t=Ee(i,y,z,0);d=Q;A=d;k=f;v=k<<15&-32768;m=Ee(u,s,v,0);j=m+t|0;k=Q+d|0;k=j>>>0<m>>>0?k+1|0:k;d=k;C=Ee(i,y,v,C);v=0+C|0;k=j+Q|0;k=v>>>0<C>>>0?k+1|0:k;k=(j|0)==(k|0)&v>>>0<E>>>0|k>>>0<j>>>0;j=(d|0)==(A|0)&j>>>0<t>>>0|d>>>0<A>>>0;m=d;d=Ee(u,s,z,G)+d|0;l=j+Q|0;l=d>>>0<m>>>0?l+1|0:l;j=d;d=k+j|0;m=d>>>0<j>>>0?l+1|0:l;k=d;d=q+d|0;j=m+e|0;j=d>>>0<k>>>0?j+1|0:j;w=d;k=h;t=j;d=(e|0)==(j|0)&d>>>0<q>>>0|j>>>0<e>>>0;e=d+B|0;if(e>>>0<d>>>0){k=k+1|0}j=k;d=(w|0)!=0|(t|0)!=0;e=e+d|0;if(e>>>0<d>>>0){j=j+1|0}k=e;e=0-k|0;q=0;h=Ee(e,q,i,y);d=Q;A=d;v=Ee(u,s,e,q);e=Q;B=e;z=0-((0<k>>>0)+j|0)|0;j=0;q=Ee(i,y,z,j);l=q+v|0;k=Q+e|0;k=l>>>0<q>>>0?k+1|0:k;e=l;q=0+h|0;l=d+e|0;l=q>>>0<G>>>0?l+1|0:l;m=q;d=l;l=(A|0)==(d|0)&m>>>0<h>>>0|d>>>0<A>>>0;m=(k|0)==(B|0)&e>>>0<v>>>0|k>>>0<B>>>0;e=Ee(u,s,z,j)+k|0;j=m+Q|0;j=e>>>0<k>>>0?j+1|0:j;h=e;e=l+e|0;if(e>>>0<h>>>0){j=j+1|0}z=e;h=j;l=q;e=0-w|0;G=0-((0<w>>>0)+t|0)|0;w=0;B=Ee(G,w,i,y);v=Q;t=e;C=0;j=Ee(e,C,u,s);e=j+B|0;k=Q+v|0;m=e;e=e>>>0<j>>>0?k+1|0:k;t=Ee(i,y,t,C);i=0+t|0;j=m;k=j+Q|0;k=i>>>0<t>>>0?k+1|0:k;k=(j|0)==(k|0)&i>>>0<E>>>0|k>>>0<j>>>0;j=(e|0)==(v|0)&j>>>0<B>>>0|e>>>0<v>>>0;i=e;e=Ee(u,s,G,w)+e|0;m=j+Q|0;m=e>>>0<i>>>0?m+1|0:m;i=e;e=k+e|0;j=m;j=e>>>0<i>>>0?j+1|0:j;i=e;e=e+l|0;j=j+d|0;j=e>>>0<i>>>0?j+1|0:j;i=e;k=h;e=j;d=(d|0)==(j|0)&i>>>0<l>>>0|j>>>0<d>>>0;h=d+z|0;if(h>>>0<d>>>0){k=k+1|0}d=h;j=k;m=d;l=e+ -1|0;d=i+ -2|0;if(d>>>0<4294967294){l=l+1|0}h=d;k=d;d=l;e=(e|0)==(d|0)&k>>>0<i>>>0|d>>>0<e>>>0;i=m+e|0;if(i>>>0<e>>>0){j=j+1|0}e=i+ -1|0;k=j+ -1|0;k=(e|0)!=-1?k+1|0:k;i=0;u=i;s=e;j=r;v=j<<2|c>>>30;z=0;q=Ee(e,i,v,z);i=Q;m=i;i=c;G=(i&1073741823)<<2|b>>>30;C=k;i=0;j=Ee(G,0,k,i);e=j+q|0;l=Q+m|0;l=e>>>0<j>>>0?l+1|0:l;j=e;t=l;A=(m|0)==(l|0)&j>>>0<q>>>0|l>>>0<m>>>0;m=l;l=0;q=l;k=0;B=d;E=((p&1073741823)<<2|r>>>30)&-262145|262144;e=Ee(d,l,E,0);d=e+j|0;m=Q+m|0;m=d>>>0<e>>>0?m+1|0:m;r=d;e=m;d=(t|0)==(e|0)&d>>>0<j>>>0|e>>>0<t>>>0;j=d+A|0;if(j>>>0<d>>>0){k=1}m=Ee(C,i,E,M);d=m+j|0;j=Q+k|0;k=d>>>0<m>>>0?j+1|0:j;l=Ee(s,u,E,M);j=Q;c=d;p=Ee(v,z,C,i);d=p+l|0;m=Q+j|0;m=d>>>0<p>>>0?m+1|0:m;p=d;d=m;m=(j|0)==(d|0)&p>>>0<l>>>0|d>>>0<j>>>0;l=c+d|0;k=k+m|0;j=l;m=j>>>0<d>>>0?k+1|0:k;c=j;l=e+p|0;k=0;d=k+r|0;if(d>>>0<k>>>0){l=l+1|0}p=d;j=d;d=l;e=(e|0)==(d|0)&j>>>0<r>>>0|d>>>0<e>>>0;j=c+e|0;if(j>>>0<e>>>0){m=m+1|0}O=j;e=p;k=d;r=Ee(G,w,B,q);l=Q;t=h;A=Ee(h,0,v,z);h=A+r|0;j=Q+l|0;j=h>>>0<A>>>0?j+1|0:j;y=h;h=j;r=(l|0)==(j|0)&y>>>0<r>>>0|j>>>0<l>>>0;R=e;j=0;S=r;c=b<<2&-4;r=Ee(s,u,c,0);e=r+y|0;l=Q+h|0;l=e>>>0<r>>>0?l+1|0:l;A=e;r=e;e=l;h=(h|0)==(e|0)&r>>>0<y>>>0|e>>>0<h>>>0;l=S+h|0;if(l>>>0<h>>>0){j=1}h=R+l|0;k=j+k|0;k=h>>>0<l>>>0?k+1|0:k;r=h;l=m;h=k;d=(d|0)==(k|0)&r>>>0<p>>>0|k>>>0<d>>>0;j=d+O|0;if(j>>>0<d>>>0){l=l+1|0}R=j;p=r;y=h;O=Ee(C,i,c,T);C=Q;i=Ee(E,M,t,P);d=i+O|0;m=Q+C|0;m=d>>>0<i>>>0?m+1|0:m;E=d;j=Ee(v,z,B,q);d=d+j|0;i=m;k=i+Q|0;k=d>>>0<j>>>0?k+1|0:k;v=d;m=Ee(s,u,G,w);d=d+m|0;j=Q+k|0;s=d;j=d>>>0<m>>>0?j+1|0:j;u=0;m=l;d=j;j=(j|0)==(k|0)&s>>>0<v>>>0|j>>>0<k>>>0;l=(i|0)==(C|0)&E>>>0<O>>>0|i>>>0<C>>>0;i=(i|0)==(k|0)&v>>>0<E>>>0|k>>>0<i>>>0;k=l+i|0;k>>>0<i>>>0;i=j+k|0;k=i;j=d|0;i=j+p|0;k=(k|u)+y|0;k=i>>>0<j>>>0?k+1|0:k;y=i;p=k;h=(h|0)==(k|0)&i>>>0<r>>>0|k>>>0<h>>>0;i=h+R|0;if(i>>>0<h>>>0){m=m+1|0}z=i;i=m;m=y;r=p;u=A;B=Ee(B,q,c,T);q=Q;j=Ee(G,w,t,P);h=j+B|0;l=Q+q|0;l=h>>>0<j>>>0?l+1|0:l;k=l;w=k;l=0;j=(k|0)==(q|0)&h>>>0<B>>>0|k>>>0<q>>>0;h=k+u|0;k=(j|l)+e|0;k=h>>>0<w>>>0?k+1|0:k;w=h;j=h;h=k;j=(e|0)==(k|0)&j>>>0<u>>>0|k>>>0<e>>>0;c=m;e=j;j=k+s|0;m=0;d=m+w|0;if(d>>>0<m>>>0){j=j+1|0}d=(h|0)==(j|0)&d>>>0<w>>>0|j>>>0<h>>>0;e=e+d|0;if(e>>>0<d>>>0){l=1}d=c+e|0;m=l+r|0;h=d;j=i;m=d>>>0<e>>>0?m+1|0:m;i=m;d=(p|0)==(i|0)&d>>>0<y>>>0|i>>>0<p>>>0;e=d+z|0;if(e>>>0<d>>>0){j=j+1|0}d=e;e=j;d:{if((j|0)==131071|j>>>0<131071){u=0;p=f;v=0;k=Ee(h,u,p,v);l=Q;j=b<<17;b=0;c=(k|0)!=0|(l|0)!=0;r=b-c|0;E=j-(b>>>0<c>>>0)|0;w=0-k|0;q=0-((0<k>>>0)+l|0)|0;c=0;z=Ee(i,c,p,v);b=Q;G=b;s=0;k=Ee(h,u,g,s);j=k+z|0;l=Q+b|0;l=j>>>0<k>>>0?l+1|0:l;b=j;k=j;t=0;j=t;A=k;j=(k|0)==(q|0)&w>>>0<j>>>0|q>>>0<k>>>0;y=r-j|0;r=E-(r>>>0<j>>>0)|0;j=Ee(d,0,p,v);k=Q;p=Ee(h,u,F,0);j=p+j|0;m=Q+k|0;m=j>>>0<p>>>0?m+1|0:m;p=Ee(g,s,i,c);j=p+j|0;k=Q+m|0;k=j>>>0<p>>>0?k+1|0:k;m=k;k=(l|0)==(G|0)&b>>>0<z>>>0|l>>>0<G>>>0;b=l+j|0;k=k+m|0;m=b;b=m>>>0<l>>>0?k+1|0:k;j=Ee(h,i,J,0);l=Q;p=m;m=Ee(f,g,e,0);k=m+j|0;j=Q+l|0;j=k>>>0<m>>>0?j+1|0:j;l=Ee(d,e,g,s);m=l+k|0;j=Ee(i,c,F,H);c=j+m|0;j=c;k=0;c=p+k|0;j=b+j|0;b=c;F=y-b|0;H=r-((y>>>0<b>>>0)+(b>>>0<k>>>0?j+1|0:j)|0)|0;I=I+ -1|0;c=w-t|0;b=q-((w>>>0<t>>>0)+A|0)|0;break d}q=i>>>1|0;l=0;r=b<<16;k=d<<31;h=(i&1)<<31|h>>>1;i=i>>>1|k;z=0;c=f;m=0;b=Ee(h,z,c,m);j=Q;k=j;p=0;j=(b|0)!=0|(j|0)!=0;t=p-j|0;E=r-(p>>>0<j>>>0)|0;A=0-b|0;y=0-((0<b>>>0)+k|0)|0;p=y;r=0;w=Ee(h,z,g,r);b=Q;C=b;k=e<<31|d>>>1;q=q|d<<31;M=k|l;k=q;u=Ee(k,0,c,m);l=u+w|0;j=Q+b|0;j=l>>>0<u>>>0?j+1|0:j;b=j;j=l;v=j;u=0;j=(j|0)==(p|0)&A>>>0<u>>>0|p>>>0<j>>>0;B=t-j|0;t=E-(t>>>0<j>>>0)|0;E=Ee(g,r,k,P);P=Q;j=c;k=m;c=e>>>1|0;p=(e&1)<<31|d>>>1;m=Ee(j,k,p,0);j=m+E|0;k=Q+P|0;k=j>>>0<m>>>0?k+1|0:k;s=Ee(h,z,F,0);m=s+j|0;j=Q+k|0;k=m;m=k>>>0<s>>>0?j+1|0:j;j=(b|0)==(C|0)&l>>>0<w>>>0|b>>>0<C>>>0;s=b;b=b+k|0;l=j+m|0;m=b;b=m>>>0<s>>>0?l+1|0:l;j=Ee(h,i,J,0);k=Q;e=Ee(f,g,e>>>1|0,0);d=e+j|0;j=Q+k|0;j=d>>>0<e>>>0?j+1|0:j;e=Ee(p,c,g,r);d=e+d|0;j=Q+j|0;e=Ee(q,M,F,H);d=e+d|0;j=d;e=0;d=e+m|0;k=b+j|0;F=B-d|0;H=t-((B>>>0<d>>>0)+(d>>>0<e>>>0?k+1|0:k)|0)|0;d=p;e=c;c=A-u|0;b=y-((A>>>0<u>>>0)+v|0)|0}if((I|0)>=16384){D=D|2147418112;b=0;c=0;break b}l=I+16383|0;if((I|0)<=-16383){e:{if(l){break e}l=i;m=b<<1|c>>>31;j=c<<1;g=(g|0)==(m|0)&j>>>0>f>>>0|m>>>0>g>>>0;j=e&65535;f=F;m=H<<1|f>>>31;c=f<<1|b>>>31;e=c;b=(e|0)==(L|0)&(m|0)==(J|0)?g:(J|0)==(m|0)&e>>>0>L>>>0|m>>>0>J>>>0;c=b+h|0;if(c>>>0<b>>>0){l=l+1|0}b=c;e=b;c=l;e=d+((i|0)==(l|0)&e>>>0<h>>>0|l>>>0<i>>>0)|0;if(e>>>0<d>>>0){j=j+1|0}d=j;if(!(j&65536)){break e}K=e|K;D=d|D;break b}b=0;c=0;break b}k=i;e=e&65535;j=b<<1|c>>>31;p=c<<1;g=(g|0)==(j|0)&p>>>0>=f>>>0|j>>>0>g>>>0;f=F;j=H<<1|f>>>31;c=f<<1|b>>>31;b=(c|0)==(L|0)&(j|0)==(J|0)?g:(J|0)==(j|0)&c>>>0>=L>>>0|j>>>0>J>>>0;c=b+h|0;if(c>>>0<b>>>0){k=k+1|0}b=c;c=k;f=d;d=((i|0)==(k|0)&b>>>0<h>>>0|k>>>0<i>>>0)+d|0;k=l<<16|e;K=d|K;D=D|(d>>>0<f>>>0?k+1|0:k)}o[a>>2]=b;o[a+4>>2]=c;o[a+8>>2]=K;o[a+12>>2]=D;N=n+192|0;return}o[a>>2]=0;o[a+4>>2]=0;b=!(d|f|(e|g));o[a+8>>2]=b?0:K;o[a+12>>2]=b?2147450880:D;N=n+192|0}function Dc(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,q=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;g=N-8976|0;N=g;y=d+e|0;E=0-y|0;a:{b:{while(1){c:{if((c|0)!=48){if((c|0)!=46){break a}c=o[b+4>>2];if(c>>>0>=r[b+104>>2]){break c}o[b+4>>2]=c+1;c=p[c|0];break b}c=o[b+4>>2];if(c>>>0<r[b+104>>2]){i=1;o[b+4>>2]=c+1;c=p[c|0]}else{i=1;c=ga(b)}continue}break}c=ga(b)}k=1;if((c|0)!=48){break a}while(1){c=o[b+4>>2];d:{if(c>>>0<r[b+104>>2]){o[b+4>>2]=c+1;c=p[c|0];break d}c=ga(b)}h=h+ -1|0;n=j+ -1|0;if((n|0)!=-1){h=h+1|0}j=n;if((c|0)==48){continue}break}i=1}o[g+784>>2]=0;e:{f:{q=(c|0)==46;n=c+ -48|0;g:{h:{i:{if(q|n>>>0<=9){while(1){j:{if(q&1){if(!k){j=m;h=l;k=1;break j}i=!i;break i}m=m+1|0;if(m>>>0<1){l=l+1|0}if((s|0)<=2044){x=(c|0)==48?x:m;i=(g+784|0)+(s<<2)|0;q=i;if(t){n=(u(o[i>>2],10)+c|0)+ -48|0}o[q>>2]=n;i=1;n=t+1|0;c=(n|0)==9;t=c?0:n;s=c+s|0;break j}if((c|0)==48){break j}o[g+8960>>2]=o[g+8960>>2]|1;x=18396}c=o[b+4>>2];k:{if(c>>>0<r[b+104>>2]){o[b+4>>2]=c+1;c=p[c|0];break k}c=ga(b)}q=(c|0)==46;n=c+ -48|0;if(q|n>>>0<10){continue}break}}j=k?j:m;h=k?h:l;if(!(!i|(c&-33)!=69)){k=lb(b);c=Q;q=c;l:{if(k|(c|0)!=-2147483648){break l}k=0;q=0;if(!o[b+104>>2]){break l}o[b+4>>2]=o[b+4>>2]+ -1}if(!i){break g}h=h+q|0;b=j+k|0;if(b>>>0<k>>>0){h=h+1|0}j=b;break f}i=!i;if((c|0)<0){break h}}if(!o[b+104>>2]){break h}o[b+4>>2]=o[b+4>>2]+ -1}if(!i){break f}}o[2896]=28;m=0;l=0;o[b+112>>2]=0;o[b+116>>2]=0;c=o[b+8>>2];d=c-o[b+4>>2]|0;o[b+120>>2]=d;o[b+124>>2]=d>>31;o[b+104>>2]=c;c=0;b=0;break e}b=o[g+784>>2];if(!b){sa(g,+(f|0)*0);m=o[g>>2];l=o[g+4>>2];c=o[g+12>>2];b=o[g+8>>2];break e}if(!((j|0)!=(m|0)|(h|0)!=(l|0)|((l|0)>0?1:(l|0)>=0?m>>>0<=9?0:1:0)|(b>>>d|0?(d|0)<=30:0))){ka(g+48|0,f);Ba(g+32|0,b);$(g+16|0,o[g+48>>2],o[g+52>>2],o[g+56>>2],o[g+60>>2],o[g+32>>2],o[g+36>>2],o[g+40>>2],o[g+44>>2]);m=o[g+16>>2];l=o[g+20>>2];c=o[g+28>>2];b=o[g+24>>2];break e}if((h|0)>0?1:(h|0)>=0?j>>>0<=(e|0)/-2>>>0?0:1:0){o[2896]=68;ka(g+96|0,f);$(g+80|0,o[g+96>>2],o[g+100>>2],o[g+104>>2],o[g+108>>2],-1,-1,-1,2147418111);$(g- -64|0,o[g+80>>2],o[g+84>>2],o[g+88>>2],o[g+92>>2],-1,-1,-1,2147418111);m=o[g+64>>2];l=o[g+68>>2];c=o[g+76>>2];b=o[g+72>>2];break e}b=e+ -226|0;c=j>>>0>=b>>>0?0:1;b=b>>31;if((h|0)<(b|0)?1:(h|0)<=(b|0)?c:0){o[2896]=68;ka(g+144|0,f);$(g+128|0,o[g+144>>2],o[g+148>>2],o[g+152>>2],o[g+156>>2],0,0,0,65536);$(g+112|0,o[g+128>>2],o[g+132>>2],o[g+136>>2],o[g+140>>2],0,0,0,65536);m=o[g+112>>2];l=o[g+116>>2];c=o[g+124>>2];b=o[g+120>>2];break e}if(t){if((t|0)<=8){c=(g+784|0)+(s<<2)|0;b=o[c>>2];while(1){b=u(b,10);t=t+1|0;if((t|0)!=9){continue}break}o[c>>2]=b}s=s+1|0}m:{k=j;if((x|0)>(k|0)|(x|0)>=9|(k|0)>17){break m}if((k|0)==9){ka(g+192|0,f);Ba(g+176|0,o[g+784>>2]);$(g+160|0,o[g+192>>2],o[g+196>>2],o[g+200>>2],o[g+204>>2],o[g+176>>2],o[g+180>>2],o[g+184>>2],o[g+188>>2]);m=o[g+160>>2];l=o[g+164>>2];c=o[g+172>>2];b=o[g+168>>2];break e}if((k|0)<=8){ka(g+272|0,f);Ba(g+256|0,o[g+784>>2]);$(g+240|0,o[g+272>>2],o[g+276>>2],o[g+280>>2],o[g+284>>2],o[g+256>>2],o[g+260>>2],o[g+264>>2],o[g+268>>2]);ka(g+224|0,o[(0-k<<2)+10560>>2]);Kb(g+208|0,o[g+240>>2],o[g+244>>2],o[g+248>>2],o[g+252>>2],o[g+224>>2],o[g+228>>2],o[g+232>>2],o[g+236>>2]);m=o[g+208>>2];l=o[g+212>>2];c=o[g+220>>2];b=o[g+216>>2];break e}b=(u(k,-3)+d|0)+27|0;c=o[g+784>>2];if(c>>>b|0?(b|0)<=30:0){break m}ka(g+352|0,f);Ba(g+336|0,c);$(g+320|0,o[g+352>>2],o[g+356>>2],o[g+360>>2],o[g+364>>2],o[g+336>>2],o[g+340>>2],o[g+344>>2],o[g+348>>2]);ka(g+304|0,o[(k<<2)+10488>>2]);$(g+288|0,o[g+320>>2],o[g+324>>2],o[g+328>>2],o[g+332>>2],o[g+304>>2],o[g+308>>2],o[g+312>>2],o[g+316>>2]);m=o[g+288>>2];l=o[g+292>>2];c=o[g+300>>2];b=o[g+296>>2];break e}while(1){c=s;s=c+ -1|0;if(!o[(g+784|0)+(s<<2)>>2]){continue}break}t=0;b=(k|0)%9|0;n:{if(!b){i=0;break n}n=(k|0)>-1?b:b+9|0;o:{if(!c){i=0;c=0;break o}h=o[(0-n<<2)+10560>>2];l=1e9/(h|0)|0;q=0;b=0;i=0;while(1){j=q;m=(g+784|0)+(b<<2)|0;q=o[m>>2];s=(q>>>0)/(h>>>0)|0;j=j+s|0;o[m>>2]=j;j=!j&(b|0)==(i|0);i=j?i+1&2047:i;k=j?k+ -9|0:k;q=u(l,q-u(h,s)|0);b=b+1|0;if((c|0)!=(b|0)){continue}break}if(!q){break o}o[(g+784|0)+(c<<2)>>2]=q;c=c+1|0}k=(k-n|0)+9|0}while(1){m=(g+784|0)+(i<<2)|0;p:{while(1){if((k|0)!=36|r[m>>2]>=10384593?(k|0)>=36:0){break p}s=c+2047|0;q=0;n=c;while(1){c=n;l=s&2047;s=(g+784|0)+(l<<2)|0;b=o[s>>2];h=b>>>3|0;n=b<<29;b=n+q|0;if(b>>>0<n>>>0){h=h+1|0}j=b;n=0;q:{if(!h&b>>>0<1000000001|h>>>0<0){break q}n=Fe(b,h,1e9);j=j-Ee(n,Q,1e9,0)|0}q=n;o[s>>2]=j;n=(l|0)!=(c+ -1&2047)?c:(l|0)==(i|0)?c:j?c:l;s=l+ -1|0;if((l|0)!=(i|0)){continue}break}t=t+ -29|0;if(!q){continue}break}i=i+ -1&2047;if((n|0)==(i|0)){b=(g+784|0)+((n+2046&2047)<<2)|0;c=n+ -1&2047;o[b>>2]=o[b>>2]|o[(g+784|0)+(c<<2)>>2]}k=k+9|0;o[(g+784|0)+(i<<2)>>2]=q;continue}break}r:{s:while(1){h=c+1&2047;l=(g+784|0)+((c+ -1&2047)<<2)|0;while(1){j=(k|0)>45?9:1;t:{while(1){n=i;b=0;u:{while(1){v:{i=b+n&2047;if((i|0)==(c|0)){break v}i=o[(g+784|0)+(i<<2)>>2];m=o[(b<<2)+10512>>2];if(i>>>0<m>>>0){break v}if(i>>>0>m>>>0){break u}b=b+1|0;if((b|0)!=4){continue}}break}if((k|0)!=36){break u}j=0;h=0;b=0;m=0;l=0;while(1){i=b+n&2047;if((i|0)==(c|0)){c=c+1&2047;o[((c<<2)+g|0)+780>>2]=0}$(g+768|0,j,h,m,l,0,0,1342177280,1075633366);Ba(g+752|0,o[(g+784|0)+(i<<2)>>2]);ja(g+736|0,o[g+768>>2],o[g+772>>2],o[g+776>>2],o[g+780>>2],o[g+752>>2],o[g+756>>2],o[g+760>>2],o[g+764>>2]);m=o[g+744>>2];l=o[g+748>>2];j=o[g+736>>2];h=o[g+740>>2];b=b+1|0;if((b|0)!=4){continue}break}ka(g+720|0,f);$(g+704|0,j,h,m,l,o[g+720>>2],o[g+724>>2],o[g+728>>2],o[g+732>>2]);m=o[g+712>>2];l=o[g+716>>2];j=0;h=0;k=o[g+704>>2];q=o[g+708>>2];s=t+113|0;e=s-e|0;i=(e|0)<(d|0);d=i?(e|0)>0?e:0:d;if((d|0)<=112){break t}break r}t=j+t|0;i=c;if((c|0)==(n|0)){continue}break}m=1e9>>>j|0;q=-1<<j^-1;b=0;i=n;while(1){s=(g+784|0)+(n<<2)|0;x=o[s>>2];b=(x>>>j|0)+b|0;o[s>>2]=b;b=!b&(i|0)==(n|0);i=b?i+1&2047:i;k=b?k+ -9|0:k;b=u(m,q&x);n=n+1&2047;if((n|0)!=(c|0)){continue}break}if(!b){continue}if((h|0)!=(i|0)){o[(g+784|0)+(c<<2)>>2]=b;c=h;continue s}o[l>>2]=o[l>>2]|1;i=h;continue}break}break}sa(g+656|0,ua(1,225-d|0));Fb(g+688|0,o[g+656>>2],o[g+660>>2],o[g+664>>2],o[g+668>>2],k,q,m,l);z=o[g+696>>2];A=o[g+700>>2];B=o[g+688>>2];C=o[g+692>>2];sa(g+640|0,ua(1,113-d|0));zb(g+672|0,k,q,m,l,o[g+640>>2],o[g+644>>2],o[g+648>>2],o[g+652>>2]);j=o[g+672>>2];h=o[g+676>>2];v=o[g+680>>2];w=o[g+684>>2];Xa(g+624|0,k,q,m,l,j,h,v,w);ja(g+608|0,B,C,z,A,o[g+624>>2],o[g+628>>2],o[g+632>>2],o[g+636>>2]);m=o[g+616>>2];l=o[g+620>>2];k=o[g+608>>2];q=o[g+612>>2]}b=n+4&2047;w:{if((b|0)==(c|0)){break w}b=o[(g+784|0)+(b<<2)>>2];x:{if(b>>>0<=499999999){if((n+5&2047)==(c|0)?!b:0){break x}sa(g+496|0,+(f|0)*.25);ja(g+480|0,j,h,v,w,o[g+496>>2],o[g+500>>2],o[g+504>>2],o[g+508>>2]);v=o[g+488>>2];w=o[g+492>>2];j=o[g+480>>2];h=o[g+484>>2];break x}if((b|0)!=5e8){sa(g+592|0,+(f|0)*.75);ja(g+576|0,j,h,v,w,o[g+592>>2],o[g+596>>2],o[g+600>>2],o[g+604>>2]);v=o[g+584>>2];w=o[g+588>>2];j=o[g+576>>2];h=o[g+580>>2];break x}D=+(f|0);if((n+5&2047)==(c|0)){sa(g+528|0,D*.5);ja(g+512|0,j,h,v,w,o[g+528>>2],o[g+532>>2],o[g+536>>2],o[g+540>>2]);v=o[g+520>>2];w=o[g+524>>2];j=o[g+512>>2];h=o[g+516>>2];break x}sa(g+560|0,D*.75);ja(g+544|0,j,h,v,w,o[g+560>>2],o[g+564>>2],o[g+568>>2],o[g+572>>2]);v=o[g+552>>2];w=o[g+556>>2];j=o[g+544>>2];h=o[g+548>>2]}if((d|0)>111){break w}zb(g+464|0,j,h,v,w,0,0,0,1073676288);if(za(o[g+464>>2],o[g+468>>2],o[g+472>>2],o[g+476>>2],0,0,0,0)){break w}ja(g+448|0,j,h,v,w,0,0,0,1073676288);v=o[g+456>>2];w=o[g+460>>2];j=o[g+448>>2];h=o[g+452>>2]}ja(g+432|0,k,q,m,l,j,h,v,w);Xa(g+416|0,o[g+432>>2],o[g+436>>2],o[g+440>>2],o[g+444>>2],B,C,z,A);m=o[g+424>>2];l=o[g+428>>2];k=o[g+416>>2];q=o[g+420>>2];y:{if((s&2147483647)<=(-2-y|0)){break y}o[g+408>>2]=m;o[g+412>>2]=l&2147483647;o[g+400>>2]=k;o[g+404>>2]=q;$(g+384|0,k,q,m,l,0,0,0,1073610752);c=Jb(o[g+400>>2],o[g+404>>2],o[g+408>>2],o[g+412>>2],1081081856);b=(c|0)<0;m=b?m:o[g+392>>2];l=b?l:o[g+396>>2];k=b?k:o[g+384>>2];q=b?q:o[g+388>>2];t=((c|0)>-1)+t|0;if(F=!(i&(b|(d|0)!=(e|0))&(za(j,h,v,w,0,0,0,0)|0)!=0),G=0,H=(t+110|0)<=(E|0),H?F:G){break y}o[2896]=68}mb(g+368|0,k,q,m,l,t);m=o[g+368>>2];l=o[g+372>>2];c=o[g+380>>2];b=o[g+376>>2]}o[a>>2]=m;o[a+4>>2]=l;o[a+8>>2]=b;o[a+12>>2]=c;N=g+8976|0}function Ta(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,n=0,q=0,s=0,t=0,v=0,w=0,x=0,y=0;g=N-192|0;N=g;a:{b:{if(!Y(o[o[a+4>>2]+56>>2],g+184|0,o[1391])){break b}t=o[g+184>>2];if(!Y(o[o[a+4>>2]+56>>2],g+180|0,o[1392])){break a}if(!Y(o[o[a+4>>2]+56>>2],g+176|0,o[1393])){break a}f=(t|0)!=0;c:{d:{e:{f:{g:{c=o[g+180>>2];switch(c|0){case 3:break f;case 0:break g;default:break e}}d=o[g+176>>2];c=0;b=o[a+4>>2];o[b+256>>2]=0;o[b+264>>2]=d;o[b+260>>2]=f;e=o[b+56>>2];b=o[1356];if(!Y(e,g,b)){break a}o[o[a+4>>2]+272>>2]=o[g>>2];e=o[1357];if(!Y(o[o[a+4>>2]+56>>2],g,e)){break a}o[o[a+4>>2]+276>>2]=o[g>>2];f=o[1358];if(!Y(o[o[a+4>>2]+56>>2],g,f)){break a}o[o[a+4>>2]+280>>2]=o[g>>2];h=o[1359];if(!Y(o[o[a+4>>2]+56>>2],g,h)){break a}o[o[a+4>>2]+284>>2]=o[g>>2];j=o[1360];if(!Y(o[o[a+4>>2]+56>>2],g,j)){break a}o[o[a+4>>2]+288>>2]=o[g>>2];i=o[1361];if(!Y(o[o[a+4>>2]+56>>2],g,i)){break a}o[o[a+4>>2]+292>>2]=o[g>>2]+1;k=o[1362];if(!Y(o[o[a+4>>2]+56>>2],g,k)){break a}o[o[a+4>>2]+296>>2]=o[g>>2]+1;n=o[a+4>>2];q=o[n+56>>2];s=n+304|0;n=o[1363];if(!wa(q,s,n)){break a}q=o[a+4>>2];if(!na(o[q+56>>2],q+312|0,16)){break a}if(!Ea(o[o[a+4>>2]+56>>2],d-((n+(k+(i+(j+(h+(f+(b+e|0)|0)|0)|0)|0)|0)|0)+128>>>3|0)|0)){break b}b=o[a+4>>2];o[b+248>>2]=1;if(!Pa(b+312|0,7555,16)){o[b+3624>>2]=0}if(o[b+3632>>2]|!o[b+608>>2]){break d}c=o[b+28>>2];if(!c){break d}l[c](a,b+256|0,o[b+48>>2]);break d}b=o[a+4>>2];o[b+252>>2]=0;e=o[g+176>>2];o[b+448>>2]=(e>>>0)/18;o[b+440>>2]=e;o[b+436>>2]=f;o[b+432>>2]=3;b=o[a+4>>2];c=o[b+452>>2];d=o[b+448>>2];h:{if(d){Ee(d,0,24,0);if(!Q){b=ea(c,u(d,24));if(b){o[o[a+4>>2]+452>>2]=b;break h}X(c);b=o[a+4>>2]}o[b+452>>2]=0;break c}b=ea(c,0);o[o[a+4>>2]+452>>2]=b;if(!b){break c}}c=o[a+4>>2];b=0;i:{if(!o[c+448>>2]){break i}f=o[1367];h=o[1366];j=o[1365];d=0;while(1){if(!wa(o[c+56>>2],g,j)){break b}k=o[g+4>>2];b=u(d,24);c=o[a+4>>2];i=b+o[c+452>>2]|0;o[i>>2]=o[g>>2];o[i+4>>2]=k;if(!wa(o[c+56>>2],g,h)){break b}k=o[g+4>>2];c=o[a+4>>2];i=b+o[c+452>>2]|0;o[i+8>>2]=o[g>>2];o[i+12>>2]=k;if(!Y(o[c+56>>2],g+188|0,f)){break b}c=o[a+4>>2];o[(b+o[c+452>>2]|0)+16>>2]=o[g+188>>2];d=d+1|0;b=o[c+448>>2];if(d>>>0<b>>>0){continue}break}b=u(b,-18)}b=b+e|0;if(b){if(!Ea(o[c+56>>2],b)){break b}c=o[a+4>>2]}o[c+252>>2]=1;if(o[c+3632>>2]|!o[c+620>>2]){break d}b=o[c+28>>2];if(!b){break d}l[b](a,c+432|0,o[c+48>>2]);break d}d=o[a+4>>2];h=o[(d+(c<<2)|0)+608>>2];e=o[g+176>>2];b=fa(g,176);o[b+8>>2]=e;o[b>>2]=c;o[b+4>>2]=f;j=!h;j:{if((c|0)!=2){break j}i=b+16|0;f=o[1364]>>>3|0;if(!na(o[d+56>>2],i,f)){break b}if(e>>>0<f>>>0){o[o[a>>2]>>2]=8;c=0;break a}e=e-f|0;d=o[a+4>>2];k=o[d+1124>>2];if(!k){break j}n=o[d+1120>>2];c=0;while(1){if(Pa(n+u(c,f)|0,i,f)){c=c+1|0;if((k|0)!=(c|0)){continue}break j}break}j=(h|0)!=0}if(j){if(!Ea(o[d+56>>2],e)){break b}break d}k:{l:{m:{n:{o:{p:{q:{switch(o[b+180>>2]){case 1:if(Ea(o[d+56>>2],e)){break o}f=0;break k;case 2:if(!e){break p}c=da(e);o[b+20>>2]=c;if(!c){o[o[a>>2]>>2]=8;f=0;break k}if(na(o[d+56>>2],c,e)){break o}f=0;break k;case 4:r:{if(e>>>0<8){break r}f=0;if(!fb(o[d+56>>2],b+16|0)){break k}e=e+ -8|0;c=o[b+16>>2];s:{if(c){if(e>>>0<c>>>0){o[b+16>>2]=0;o[b+20>>2]=0;break r}t:{u:{if((c|0)==-1){o[b+20>>2]=0;break u}d=da(c+1|0);o[b+20>>2]=d;if(d){break t}}o[o[a>>2]>>2]=8;break k}if(!na(o[o[a+4>>2]+56>>2],d,c)){break k}e=e-c|0;m[o[b+20>>2]+o[b+16>>2]|0]=0;break s}o[b+20>>2]=0}if(!fb(o[o[a+4>>2]+56>>2],b+24|0)){break k}c=o[b+24>>2];if(c>>>0>=100001){o[b+24>>2]=0;break k}if(!c){break r}d=Na(c,8);o[b+28>>2]=d;if(!d){break m}if(!o[b+24>>2]){break r}o[d>>2]=0;o[d+4>>2]=0;c=0;v:{if(e>>>0<4){break v}while(1){if(!fb(o[o[a+4>>2]+56>>2],d)){break l}e=e+ -4|0;h=o[b+28>>2];j=c<<3;d=h+j|0;f=o[d>>2];w:{if(f){if(e>>>0<f>>>0){break v}x:{y:{if((f|0)==-1){o[(h+(c<<3)|0)+4>>2]=0;break y}h=da(f+1|0);o[d+4>>2]=h;if(h){break x}}o[o[a>>2]>>2]=8;break l}e=e-f|0;fa(h,o[d>>2]);f=na(o[o[a+4>>2]+56>>2],o[d+4>>2],o[d>>2]);h=j+o[b+28>>2]|0;d=o[h+4>>2];if(!f){X(d);o[(o[b+28>>2]+(c<<3)|0)+4>>2]=0;break v}m[d+o[h>>2]|0]=0;break w}o[d+4>>2]=0}c=c+1|0;if(c>>>0>=r[b+24>>2]){break r}d=o[b+28>>2]+(c<<3)|0;o[d>>2]=0;o[d+4>>2]=0;if(e>>>0>=4){continue}break}}o[b+24>>2]=c}if(!e){break o}if(!o[b+24>>2]){X(o[b+28>>2]);o[b+28>>2]=0}if(Ea(o[o[a+4>>2]+56>>2],e)){break o}f=0;break k;case 5:f=0;c=fa(b+16|0,160);if(!na(o[d+56>>2],c,o[1378]>>>3|0)){break k}if(!wa(o[o[a+4>>2]+56>>2],b+152|0,o[1379])){break k}if(!Y(o[o[a+4>>2]+56>>2],b+188|0,o[1380])){break k}o[b+160>>2]=o[b+188>>2]!=0;if(!db(o[o[a+4>>2]+56>>2],o[1381])){break k}if(!Y(o[o[a+4>>2]+56>>2],b+188|0,o[1382])){break k}c=o[b+188>>2];o[b+164>>2]=c;if(!c){break o}c=qa(c,32);o[b+168>>2]=c;if(!c){break n}i=o[1371];if(!wa(o[o[a+4>>2]+56>>2],c,i)){break k}k=o[1373]>>>3|0;n=o[1370];q=o[1369];j=o[1368];s=o[1377];v=o[1376];w=o[1375];x=o[1374];y=o[1372];e=0;while(1){if(!Y(o[o[a+4>>2]+56>>2],b+188|0,y)){break k}h=(e<<5)+c|0;m[h+8|0]=o[b+188>>2];if(!na(o[o[a+4>>2]+56>>2],h+9|0,k)){break k}if(!Y(o[o[a+4>>2]+56>>2],b+188|0,x)){break k}m[h+22|0]=p[h+22|0]&254|m[b+188|0]&1;if(!Y(o[o[a+4>>2]+56>>2],b+188|0,w)){break k}m[h+22|0]=p[b+188|0]<<1&2|p[h+22|0]&253;if(!db(o[o[a+4>>2]+56>>2],v)){break k}if(!Y(o[o[a+4>>2]+56>>2],b+188|0,s)){break k}c=o[b+188>>2];m[h+23|0]=c;z:{c=c&255;if(!c){break z}d=qa(c,16);o[h+24>>2]=d;A:{if(d){if(!p[h+23|0]){break z}if(!wa(o[o[a+4>>2]+56>>2],d,j)){break k}c=0;break A}o[o[a>>2]>>2]=8;break k}while(1){if(!Y(o[o[a+4>>2]+56>>2],b+188|0,q)){break k}m[((c<<4)+d|0)+8|0]=o[b+188>>2];if(!db(o[o[a+4>>2]+56>>2],n)){break k}c=c+1|0;if(c>>>0>=p[h+23|0]){break z}d=o[h+24>>2];if(wa(o[o[a+4>>2]+56>>2],d+(c<<4)|0,j)){continue}break}break k}e=e+1|0;if(e>>>0>=r[b+164>>2]){break o}c=o[b+168>>2];if(wa(o[o[a+4>>2]+56>>2],c+(e<<5)|0,i)){continue}break}break k;case 6:B:{if(!Y(o[d+56>>2],b+188|0,o[1383])){break B}o[b+16>>2]=o[b+188>>2];if(!Y(o[o[a+4>>2]+56>>2],b+188|0,o[1384])){break B}C:{c=o[b+188>>2];D:{if((c|0)==-1){o[b+20>>2]=0;break D}d=da(c+1|0);o[b+20>>2]=d;if(d){break C}}o[o[a>>2]>>2]=8;f=0;break k}if(c){if(!na(o[o[a+4>>2]+56>>2],d,c)){break B}d=o[b+20>>2];c=o[b+188>>2]}else{c=0}m[c+d|0]=0;if(!Y(o[o[a+4>>2]+56>>2],b+188|0,o[1385])){break B}E:{c=o[b+188>>2];F:{if((c|0)==-1){o[b+24>>2]=0;break F}d=da(c+1|0);o[b+24>>2]=d;if(d){break E}}o[o[a>>2]>>2]=8;f=0;break k}if(c){if(!na(o[o[a+4>>2]+56>>2],d,c)){break B}d=o[b+24>>2];c=o[b+188>>2]}else{c=0}m[c+d|0]=0;if(!Y(o[o[a+4>>2]+56>>2],b+28|0,o[1386])){break B}if(!Y(o[o[a+4>>2]+56>>2],b+32|0,o[1387])){break B}if(!Y(o[o[a+4>>2]+56>>2],b+36|0,o[1388])){break B}if(!Y(o[o[a+4>>2]+56>>2],b+40|0,o[1389])){break B}if(!Y(o[o[a+4>>2]+56>>2],b+44|0,o[1390])){break B}c=o[b+44>>2];d=da(c?c:1);o[b+48>>2]=d;if(!d){o[o[a>>2]>>2]=8;f=0;break k}if(!c){break o}if(na(o[o[a+4>>2]+56>>2],d,c)){break o}}f=0;break k;case 0:case 3:break o;default:break q}}G:{if(e){c=da(e);o[b+16>>2]=c;if(c){break G}o[o[a>>2]>>2]=8;f=0;break k}o[b+16>>2]=0;break o}if(na(o[d+56>>2],c,e)){break o}f=0;break k}o[b+20>>2]=0}f=1;c=o[a+4>>2];if(o[c+3632>>2]){break k}d=o[c+28>>2];if(!d){break k}l[d](a,b,o[c+48>>2]);break k}o[o[a>>2]>>2]=8;break k}o[b+24>>2]=0;o[o[a>>2]>>2]=8;break k}o[b+24>>2]=c;f=0}H:{I:{switch(o[b+180>>2]+ -1|0){case 1:b=o[b+20>>2];if(!b){break H}X(b);break H;case 3:c=o[b+20>>2];if(c){X(c)}d=o[b+24>>2];if(d){c=0;while(1){e=o[(o[b+28>>2]+(c<<3)|0)+4>>2];if(e){X(e);d=o[b+24>>2]}c=c+1|0;if(c>>>0<d>>>0){continue}break}}b=o[b+28>>2];if(!b){break H}X(b);break H;case 4:d=o[b+164>>2];if(d){c=0;while(1){e=o[(o[b+168>>2]+(c<<5)|0)+24>>2];if(e){X(e);d=o[b+164>>2]}c=c+1|0;if(c>>>0<d>>>0){continue}break}}b=o[b+168>>2];if(!b){break H}X(b);break H;case 5:c=o[b+20>>2];if(c){X(c)}c=o[b+24>>2];if(c){X(c)}b=o[b+48>>2];if(!b){break H}X(b);break H;case 0:break H;default:break I}}b=o[b+16>>2];if(!b){break H}X(b)}if(!f){break b}}c=1;if(!t){break a}J:{K:{d=o[a+4>>2];if(o[d>>2]){break K}e=o[d+12>>2];if(!e){break K}b=d+6136|0;if(l[e](a,b,o[d+48>>2])|p[o[o[a+4>>2]+56>>2]+20|0]&7){break K}e=o[b>>2];d=o[o[a+4>>2]+56>>2];d=((o[d+8>>2]-o[d+16>>2]<<5)+(o[d+12>>2]<<3)|0)-o[d+20>>2]>>>3|0;f=o[b+4>>2]-(e>>>0<d>>>0)|0;o[b>>2]=e-d;o[b+4>>2]=f;break J}b=o[a+4>>2];o[b+6136>>2]=0;o[b+6140>>2]=0}o[o[a>>2]>>2]=2;break a}o[o[a>>2]>>2]=8}c=0}N=g+192|0;return c}function Mb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,s=0,t=0,v=0,w=0,x=0;f=N-32|0;N=f;a:{if(!a){break a}b:{c:{d=o[a>>2];c=o[d>>2];switch(c|0){case 1:break a;case 0:break c;default:break b}}b=o[a+4>>2];if(o[b+11848>>2]){break b}b=o[b+7052>>2];if(!b){break b}e=o[d+36>>2];o[d+36>>2]=b;i=!Oa(a,(b|0)!=(e|0),1);d=o[a>>2]}if(o[d+12>>2]){b=o[a+4>>2];_b(b+6928|0,b+7060|0)}c=o[a+4>>2];d:{if(o[c+11848>>2]){e=i;break d}d=o[a>>2];e:{if(o[d>>2]){break e}t=o[c+7268>>2];if(t){f:{if(o[c+7260>>2]){k=o[c+6900>>2];v=o[c+6896>>2];b=c+6920|0;h=o[b>>2];b=o[b+4>>2];if((l[t](a,0,0,o[c+7288>>2])|0)==2){break f}o[f>>2]=0;o[f+4>>2]=0;o[f+8>>2]=0;o[f+12>>2]=0;e=o[a>>2];d=o[e+608>>2];w=o[e+612>>2];e=o[a+4>>2];g:{if(!kb(a,d,w,f,o[e+7268>>2],o[e+7264>>2],o[e+7288>>2])){break g}t=o[1357]+o[1356]|0;s=o[1362]+(o[1361]+(o[1360]+(o[1359]+(t+o[1358]|0)|0)|0)|0)|0;e=s+o[1363]>>>3|0;if(e+33>>>0>r[f+12>>2]){o[o[a>>2]>>2]=2;Aa(f);break f}g=c+6936|0;j=p[g+4|0]|p[g+5|0]<<8|(p[g+6|0]<<16|p[g+7|0]<<24);e=e+o[f+8>>2]|0;d=e;g=p[g|0]|p[g+1|0]<<8|(p[g+2|0]<<16|p[g+3|0]<<24);m[d+25|0]=g;m[d+26|0]=g>>>8;m[d+27|0]=g>>>16;m[d+28|0]=g>>>24;m[d+29|0]=j;m[d+30|0]=j>>>8;m[d+31|0]=j>>>16;m[d+32|0]=j>>>24;d=c+6928|0;g=p[d+4|0]|p[d+5|0]<<8|(p[d+6|0]<<16|p[d+7|0]<<24);d=p[d|0]|p[d+1|0]<<8|(p[d+2|0]<<16|p[d+3|0]<<24);m[e+17|0]=d;m[e+18|0]=d>>>8;m[e+19|0]=d>>>16;m[e+20|0]=d>>>24;m[e+21|0]=g;m[e+22|0]=g>>>8;m[e+23|0]=g>>>16;m[e+24|0]=g>>>24;e=s+ -4>>>3|0;if(e+22>>>0>r[f+12>>2]){o[o[a>>2]>>2]=2;Aa(f);break f}g=e+o[f+8>>2]|0;m[g+21|0]=h;d=h;m[g+20|0]=(b&255)<<24|d>>>8;m[g+19|0]=(b&65535)<<16|d>>>16;m[g+18|0]=(b&16777215)<<8|d>>>24;m[g+17|0]=p[g+17|0]&240|b&15;b=t>>>3|0;if(b+23>>>0>r[f+12>>2]){o[o[a>>2]>>2]=2;Aa(f);break f}b=b+o[f+8>>2]|0;m[b+22|0]=k;m[b+21|0]=k>>>8;m[b+20|0]=k>>>16;m[b+19|0]=v;m[b+18|0]=v>>>8;m[b+17|0]=v>>>16;b=o[a>>2];e=o[b+608>>2];d=o[b+612>>2];b=o[a+4>>2];b=jb(a,e,d,f,o[b+7268>>2],o[b+7276>>2],o[b+7288>>2]);Aa(f);if(!b){break f}b=o[o[a+4>>2]+7048>>2];if(!b|!o[b>>2]){break f}e=o[a>>2];if(!(o[e+616>>2]|o[e+620>>2])){break f}Ub(b);o[f>>2]=0;o[f+4>>2]=0;o[f+8>>2]=0;o[f+12>>2]=0;b=o[a>>2];e=o[b+616>>2];d=o[b+620>>2];b=o[a+4>>2];if(!kb(a,e,d,f,o[b+7268>>2],o[b+7264>>2],o[b+7288>>2])){break g}e=o[a+4>>2];b=o[e+7048>>2];h=o[b>>2];if(o[f+12>>2]!=(u(h,18)+4|0)){o[o[a>>2]>>2]=2;Aa(f);break f}if(h){c=o[f+8>>2]+4|0;d=0;while(1){h=o[b+4>>2]+u(d,24)|0;g=o[h>>2];b=o[h+4>>2];j=o[h+8>>2];e=o[h+12>>2];h=o[h+16>>2];m[c+17|0]=h;m[c+15|0]=j;m[c+7|0]=g;m[c+16|0]=h>>>8;m[c+14|0]=(e&255)<<24|j>>>8;m[c+13|0]=(e&65535)<<16|j>>>16;m[c+12|0]=(e&16777215)<<8|j>>>24;m[c+11|0]=e;m[c+10|0]=e>>>8;m[c+9|0]=e>>>16;m[c+8|0]=e>>>24;m[c+6|0]=(b&255)<<24|g>>>8;m[c+5|0]=(b&65535)<<16|g>>>16;m[c+4|0]=(b&16777215)<<8|g>>>24;m[c+3|0]=b;m[c+2|0]=b>>>8;m[c+1|0]=b>>>16;m[c|0]=b>>>24;c=c+18|0;d=d+1|0;e=o[a+4>>2];b=o[e+7048>>2];if(d>>>0<r[b>>2]){continue}break}}b=o[a>>2];jb(a,o[b+616>>2],o[b+620>>2],f,o[e+7268>>2],o[e+7276>>2],o[e+7288>>2])}Aa(f);break f}v=o[c+6912>>2];j=o[c+6900>>2];k=o[c+6896>>2];b=c+6920|0;e=o[b>>2];b=o[b+4>>2];h:{i:{w=a;g=o[d+612>>2];s=o[1357]+o[1356]|0;x=o[1362]+(o[1361]+(o[1360]+(o[1359]+(s+o[1358]|0)|0)|0)|0)|0;h=(x+o[1363]>>>3|0)+4|0;d=h+o[d+608>>2]|0;if(d>>>0<h>>>0){g=g+1|0}switch(l[t](w,d,g,o[c+7288>>2])|0){case 0:break h;case 1:break i;default:break f}}o[o[a>>2]>>2]=5;break f}h=o[a+4>>2];if(l[o[h+7276>>2]](a,c+6928|0,16,0,0,o[h+7288>>2])){o[o[a>>2]>>2]=5;break f}m[f+4|0]=e;m[f+3|0]=(b&255)<<24|e>>>8;m[f+2|0]=(b&65535)<<16|e>>>16;m[f+1|0]=(b&16777215)<<8|e>>>24;m[f|0]=(b&15|v<<4)+240;e=o[a+4>>2];j:{k:{d=(x+ -4>>>3|0)+4|0;b=o[a>>2];h=d+o[b+608>>2]|0;b=o[b+612>>2];switch(l[o[e+7268>>2]](a,h,h>>>0<d>>>0?b+1|0:b,o[e+7288>>2])|0){case 0:break j;case 1:break k;default:break f}}o[o[a>>2]>>2]=5;break f}b=o[a+4>>2];if(l[o[b+7276>>2]](a,f,5,0,0,o[b+7288>>2])){o[o[a>>2]>>2]=5;break f}m[f+5|0]=j;m[f+4|0]=j>>>8;m[f+3|0]=j>>>16;m[f+2|0]=k;m[f+1|0]=k>>>8;m[f|0]=k>>>16;b=o[a+4>>2];l:{m:{d=(s>>>3|0)+4|0;h=o[a>>2];e=d+o[h+608>>2]|0;k=o[h+612>>2];switch(l[o[b+7268>>2]](a,e,e>>>0<d>>>0?k+1|0:k,o[b+7288>>2])|0){case 0:break l;case 1:break m;default:break f}}o[o[a>>2]>>2]=5;break f}b=o[a+4>>2];if(l[o[b+7276>>2]](a,f,6,0,0,o[b+7288>>2])){o[o[a>>2]>>2]=5;break f}b=o[o[a+4>>2]+7048>>2];if(!b|!o[b>>2]){break f}e=o[a>>2];if(!(o[e+616>>2]|o[e+620>>2])){break f}Ub(b);b=o[a+4>>2];n:{o:{p:{h=o[a>>2];e=o[h+616>>2]+4|0;g=o[h+620>>2];switch(l[o[b+7268>>2]](a,e,e>>>0<4?g+1|0:g,o[b+7288>>2])|0){case 1:break o;case 0:break p;default:break f}}d=o[a+4>>2];c=o[d+7048>>2];if(!o[c>>2]){break f}e=0;break n}o[o[a>>2]>>2]=5;break f}while(1){q:{t=0;v=u(e,24);g=v+o[c+4>>2]|0;b=o[g+4>>2];j=o[g>>2];s=j<<24|j<<8&16711680;k=b<<24|j>>>8;g=b<<8|j>>>24;s=k&65280|g&255|s;o[f>>2]=((b&255)<<24|j>>>8)&-16777216|((b&16777215)<<8|j>>>24)&16711680|(b>>>8&65280|b>>>24)|t;o[f+4>>2]=s;g=v+o[c+4>>2]|0;b=o[g+12>>2];j=o[g+8>>2];s=j<<24|j<<8&16711680;k=b<<24|j>>>8;g=b<<8|j>>>24;s=k&65280|g&255|s;o[f+8>>2]=((b&255)<<24|j>>>8)&-16777216|((b&16777215)<<8|j>>>24)&16711680|(b>>>8&65280|b>>>24)|t;o[f+12>>2]=s;b=q[(v+o[c+4>>2]|0)+16>>1];n[f+16>>1]=(b<<24|b<<8&16711680)>>>16;if(l[o[d+7276>>2]](a,f,18,0,0,o[d+7288>>2])){break q}e=e+1|0;d=o[a+4>>2];c=o[d+7048>>2];if(e>>>0<r[c>>2]){continue}break f}break}o[o[a>>2]>>2]=5}c=o[a+4>>2];d=o[a>>2];i=o[d>>2]?1:i}b=o[c+7280>>2];if(!b){break e}l[b](a,c+6872|0,o[c+7288>>2]);d=o[a>>2]}if(!o[d+4>>2]){e=i;break d}b=o[o[a+4>>2]+11752>>2];if(!b){e=i;break d}if($a(b)){e=i;break d}e=1;if(i){break d}o[o[a>>2]>>2]=4}c=o[a+4>>2];b=o[c+7296>>2];if(b){if((b|0)!=o[1896]){Cb(b);c=o[a+4>>2]}o[c+7296>>2]=0}if(o[c+7260>>2]){sb(o[a>>2]+640|0)}c=o[a>>2];b=o[c+600>>2];if(b){X(b);c=o[a>>2];b=c;o[b+600>>2]=0;o[b+604>>2]=0}if(o[c+24>>2]){i=0;while(1){b=o[a+4>>2];h=i<<2;d=o[(b+h|0)+7328>>2];if(d){X(d);o[(h+o[a+4>>2]|0)+7328>>2]=0;b=o[a+4>>2]}b=o[(b+h|0)+7368>>2];if(b){X(b);o[(h+o[a+4>>2]|0)+7368>>2]=0}i=i+1|0;if(i>>>0<r[o[a>>2]+24>>2]){continue}break}}c=o[a+4>>2];b=o[c+7360>>2];if(b){X(b);o[o[a+4>>2]+7360>>2]=0;c=o[a+4>>2]}b=o[c+7400>>2];if(b){X(b);o[o[a+4>>2]+7400>>2]=0;c=o[a+4>>2]}b=o[c+7364>>2];if(b){X(b);o[o[a+4>>2]+7364>>2]=0;c=o[a+4>>2]}b=o[c+7404>>2];if(b){X(b);o[o[a+4>>2]+7404>>2]=0;c=o[a+4>>2]}d=o[a>>2];if(o[d+40>>2]){i=0;while(1){b=i<<2;h=o[(b+c|0)+7408>>2];if(h){X(h);o[(b+o[a+4>>2]|0)+7408>>2]=0;c=o[a+4>>2];d=o[a>>2]}i=i+1|0;if(i>>>0<r[d+40>>2]){continue}break}}b=o[c+7536>>2];if(b){X(b);c=o[a+4>>2];o[c+7536>>2]=0;d=o[a>>2]}if(o[d+24>>2]){d=0;while(1){b=d<<3;i=o[(b+c|0)+7540>>2];if(i){X(i);o[(b+o[a+4>>2]|0)+7540>>2]=0;c=o[a+4>>2]}i=o[(b+c|0)+7544>>2];if(i){X(i);o[(b+o[a+4>>2]|0)+7544>>2]=0;c=o[a+4>>2]}d=d+1|0;if(d>>>0<r[o[a>>2]+24>>2]){continue}break}}b=o[c+7604>>2];if(b){X(b);o[o[a+4>>2]+7604>>2]=0;c=o[a+4>>2]}b=o[c+7608>>2];if(b){X(b);o[o[a+4>>2]+7608>>2]=0;c=o[a+4>>2]}b=o[c+7612>>2];if(b){X(b);o[o[a+4>>2]+7612>>2]=0;c=o[a+4>>2]}b=o[c+7616>>2];if(b){X(b);o[o[a+4>>2]+7616>>2]=0;c=o[a+4>>2]}b=o[c+7620>>2];if(b){X(b);c=o[a+4>>2];o[c+7620>>2]=0}b=o[c+7624>>2];if(b){X(b);c=o[a+4>>2];o[c+7624>>2]=0}i=o[a>>2];if(!(!o[i+4>>2]|!o[i+24>>2])){d=0;while(1){b=d<<2;h=o[(b+c|0)+11764>>2];if(h){X(h);o[(b+o[a+4>>2]|0)+11764>>2]=0;c=o[a+4>>2];i=o[a>>2]}d=d+1|0;if(d>>>0<r[i+24>>2]){continue}break}}ve(o[c+6856>>2]);b=o[a>>2];o[b+44>>2]=13;o[b+48>>2]=1056964608;o[b+36>>2]=0;o[b+40>>2]=1;o[b+28>>2]=16;o[b+32>>2]=44100;o[b+20>>2]=0;o[b+24>>2]=2;o[b+12>>2]=1;o[b+16>>2]=0;o[b+4>>2]=0;o[b+8>>2]=1;h=o[a>>2];b=h;o[b+592>>2]=0;o[b+596>>2]=0;o[b+556>>2]=0;o[b+560>>2]=0;o[b+564>>2]=0;o[b+568>>2]=0;o[b+572>>2]=0;o[b+576>>2]=0;o[b+580>>2]=0;o[b+584>>2]=0;o[b+600>>2]=0;o[b+604>>2]=0;b=o[a+4>>2];o[b+7248>>2]=0;o[b+7252>>2]=0;o[b+7048>>2]=0;i=b+7256|0;o[i>>2]=0;o[i+4>>2]=0;i=b+7264|0;o[i>>2]=0;o[i+4>>2]=0;i=b+7272|0;o[i>>2]=0;o[i+4>>2]=0;i=b+7280|0;o[i>>2]=0;o[i+4>>2]=0;o[b+7288>>2]=0;o[h+632>>2]=0;o[h+636>>2]=0;c=o[a>>2];r:{if(o[c>>2]!=1){break r}o[c+16>>2]=1;o[c+20>>2]=0;_a(a,10777);c=o[a>>2];if(o[c>>2]!=1){break r}o[c+576>>2]=0;o[c+580>>2]=5;o[c+564>>2]=0;o[c+568>>2]=0;o[c+556>>2]=8;o[c+560>>2]=0}if(!e){o[c>>2]=1}c=!e}N=f+32|0;return c|0}function $b(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,q=0,s=0;Ee(e,0,c,0);a:{if(Q){break a}h=u(c,e);Ee(d,0,h,0);if(Q){break a}g=o[a+88>>2];l=u(d,h);b:{if(r[a+92>>2]>=l>>>0){f=g;break b}f=ea(g,l);c:{if(!f){X(g);f=da(l);o[a+88>>2]=f;if(f){break c}o[a+92>>2]=0;return 0}o[a+88>>2]=f}o[a+92>>2]=l}d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{g=u(e,100)+c|0;if((g|0)<=300){p:{switch(g+ -101|0){case 3:break h;case 5:break i;case 7:break j;case 2:case 4:case 6:break e;case 0:break f;case 1:break g;default:break p}}switch(g+ -201|0){case 0:break k;case 1:break l;case 3:break m;case 5:break n;case 7:break o;default:break e}}q:{r:{s:{switch(g+ -401|0){default:switch(g+ -301|0){case 0:break q;case 1:break r;default:break e};case 7:if(!d){break d}s=o[b+28>>2];i=o[b+24>>2];q=o[b+20>>2];h=o[b+16>>2];k=o[b+12>>2];g=o[b+8>>2];e=o[b+4>>2];b=o[b>>2];c=0;while(1){j=c<<2;o[f>>2]=o[j+b>>2];o[f+4>>2]=o[e+j>>2];o[f+8>>2]=o[g+j>>2];o[f+12>>2]=o[k+j>>2];o[f+16>>2]=o[h+j>>2];o[f+20>>2]=o[j+q>>2];o[f+24>>2]=o[i+j>>2];o[f+28>>2]=o[j+s>>2];f=f+32|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d;case 5:if(!d){break d}q=o[b+20>>2];h=o[b+16>>2];k=o[b+12>>2];g=o[b+8>>2];e=o[b+4>>2];b=o[b>>2];c=0;while(1){i=c<<2;o[f>>2]=o[i+b>>2];o[f+4>>2]=o[e+i>>2];o[f+8>>2]=o[g+i>>2];o[f+12>>2]=o[i+k>>2];o[f+16>>2]=o[h+i>>2];o[f+20>>2]=o[i+q>>2];f=f+24|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d;case 3:if(!d){break d}k=o[b+12>>2];g=o[b+8>>2];e=o[b+4>>2];b=o[b>>2];c=0;while(1){h=c<<2;o[f>>2]=o[h+b>>2];o[f+4>>2]=o[e+h>>2];o[f+8>>2]=o[g+h>>2];o[f+12>>2]=o[h+k>>2];f=f+16|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d;case 1:if(!d){break d}g=o[b+4>>2];e=o[b>>2];b=0;while(1){c=b<<2;o[f>>2]=o[c+e>>2];o[f+4>>2]=o[c+g>>2];f=f+8|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}break d;case 0:break s;case 2:case 4:case 6:break e}}if(!d){break d}c=o[b>>2];b=0;while(1){o[f>>2]=o[c+(b<<2)>>2];f=f+4|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}break d}if(!d){break d}c=0;while(1){e=c<<2;g=o[e+o[b>>2]>>2];m[f|0]=g;m[f+2|0]=g>>>16;m[f+1|0]=g>>>8;e=o[e+o[b+4>>2]>>2];m[f+3|0]=e;m[f+5|0]=e>>>16;m[f+4|0]=e>>>8;f=f+6|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d}if(!d){break d}c=0;while(1){e=o[o[b>>2]+(c<<2)>>2];m[f|0]=e;m[f+2|0]=e>>>16;m[f+1|0]=e>>>8;f=f+3|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d}if(!d){break d}s=o[b+28>>2];i=o[b+24>>2];q=o[b+20>>2];h=o[b+16>>2];k=o[b+12>>2];g=o[b+8>>2];e=o[b+4>>2];b=o[b>>2];c=0;while(1){j=c<<2;n[f>>1]=o[j+b>>2];n[f+2>>1]=o[e+j>>2];n[f+4>>1]=o[g+j>>2];n[f+6>>1]=o[k+j>>2];n[f+8>>1]=o[h+j>>2];n[f+10>>1]=o[j+q>>2];n[f+12>>1]=o[i+j>>2];n[f+14>>1]=o[j+s>>2];f=f+16|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d}if(!d){break d}q=o[b+20>>2];h=o[b+16>>2];k=o[b+12>>2];g=o[b+8>>2];e=o[b+4>>2];b=o[b>>2];c=0;while(1){i=c<<2;n[f>>1]=o[i+b>>2];n[f+2>>1]=o[e+i>>2];n[f+4>>1]=o[g+i>>2];n[f+6>>1]=o[i+k>>2];n[f+8>>1]=o[h+i>>2];n[f+10>>1]=o[i+q>>2];f=f+12|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d}if(!d){break d}k=o[b+12>>2];g=o[b+8>>2];e=o[b+4>>2];b=o[b>>2];c=0;while(1){h=c<<2;n[f>>1]=o[h+b>>2];n[f+2>>1]=o[e+h>>2];n[f+4>>1]=o[g+h>>2];n[f+6>>1]=o[h+k>>2];f=f+8|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d}if(!d){break d}g=o[b+4>>2];e=o[b>>2];b=0;while(1){c=b<<2;n[f>>1]=o[c+e>>2];n[f+2>>1]=o[c+g>>2];f=f+4|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}break d}if(!d){break d}c=o[b>>2];b=0;while(1){n[f>>1]=o[c+(b<<2)>>2];f=f+2|0;b=b+1|0;if((d|0)!=(b|0)){continue}break}break d}if(!d){break d}e=0;while(1){c=e<<2;m[f|0]=o[c+o[b>>2]>>2];m[f+1|0]=o[c+o[b+4>>2]>>2];m[f+2|0]=o[c+o[b+8>>2]>>2];m[f+3|0]=o[c+o[b+12>>2]>>2];m[f+4|0]=o[c+o[b+16>>2]>>2];m[f+5|0]=o[c+o[b+20>>2]>>2];m[f+6|0]=o[c+o[b+24>>2]>>2];m[f+7|0]=o[c+o[b+28>>2]>>2];f=f+8|0;e=e+1|0;if((e|0)!=(d|0)){continue}break}break d}if(!d){break d}e=0;while(1){c=e<<2;m[f|0]=o[c+o[b>>2]>>2];m[f+1|0]=o[c+o[b+4>>2]>>2];m[f+2|0]=o[c+o[b+8>>2]>>2];m[f+3|0]=o[c+o[b+12>>2]>>2];m[f+4|0]=o[c+o[b+16>>2]>>2];m[f+5|0]=o[c+o[b+20>>2]>>2];f=f+6|0;e=e+1|0;if((e|0)!=(d|0)){continue}break}break d}if(!d){break d}e=0;while(1){c=e<<2;m[f|0]=o[c+o[b>>2]>>2];m[f+1|0]=o[c+o[b+4>>2]>>2];m[f+2|0]=o[c+o[b+8>>2]>>2];m[f+3|0]=o[c+o[b+12>>2]>>2];f=f+4|0;e=e+1|0;if((e|0)!=(d|0)){continue}break}break d}if(!d){break d}c=0;while(1){e=c<<2;m[f|0]=o[e+o[b>>2]>>2];m[f+1|0]=o[e+o[b+4>>2]>>2];f=f+2|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d}if(!d){break d}c=0;while(1){m[f|0]=o[o[b>>2]+(c<<2)>>2];f=f+1|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}break d}t:{switch(e+ -1|0){case 3:if(!c|!d){break d}g=0;while(1){e=0;while(1){o[f>>2]=o[o[(e<<2)+b>>2]+(g<<2)>>2];f=f+4|0;e=e+1|0;if((e|0)!=(c|0)){continue}break}g=g+1|0;if((g|0)!=(d|0)){continue}break}break d;case 2:if(!c|!d){break d}while(1){e=0;while(1){g=o[o[(e<<2)+b>>2]+(k<<2)>>2];m[f|0]=g;m[f+2|0]=g>>>16;m[f+1|0]=g>>>8;f=f+3|0;e=e+1|0;if((e|0)!=(c|0)){continue}break}k=k+1|0;if((k|0)!=(d|0)){continue}break}break d;case 1:if(!c|!d){break d}g=0;while(1){e=0;while(1){n[f>>1]=o[o[(e<<2)+b>>2]+(g<<2)>>2];f=f+2|0;e=e+1|0;if((e|0)!=(c|0)){continue}break}g=g+1|0;if((g|0)!=(d|0)){continue}break}break d;case 0:break t;default:break d}}if(!c|!d){break d}g=0;while(1){e=0;while(1){m[f|0]=o[o[(e<<2)+b>>2]+(g<<2)>>2];f=f+1|0;e=e+1|0;if((e|0)!=(c|0)){continue}break}g=g+1|0;if((g|0)!=(d|0)){continue}break}}c=o[a+80>>2];b=c+l|0;o[a+80>>2]=b;d=o[a+88>>2];if(b>>>0<c>>>0){o[a+84>>2]=o[a+84>>2]+1}e=64-(c&63)|0;b=(a-e|0)- -64|0;u:{if(l>>>0<e>>>0){ca(b,d,l);break u}ca(b,d,e);c=a- -64|0;Ra(c,a);f=d+e|0;b=l-e|0;if(b>>>0>=64){while(1){e=p[f+4|0]|p[f+5|0]<<8|(p[f+6|0]<<16|p[f+7|0]<<24);d=p[f|0]|p[f+1|0]<<8|(p[f+2|0]<<16|p[f+3|0]<<24);m[a|0]=d;m[a+1|0]=d>>>8;m[a+2|0]=d>>>16;m[a+3|0]=d>>>24;m[a+4|0]=e;m[a+5|0]=e>>>8;m[a+6|0]=e>>>16;m[a+7|0]=e>>>24;e=p[f+60|0]|p[f+61|0]<<8|(p[f+62|0]<<16|p[f+63|0]<<24);d=p[f+56|0]|p[f+57|0]<<8|(p[f+58|0]<<16|p[f+59|0]<<24);m[a+56|0]=d;m[a+57|0]=d>>>8;m[a+58|0]=d>>>16;m[a+59|0]=d>>>24;m[a+60|0]=e;m[a+61|0]=e>>>8;m[a+62|0]=e>>>16;m[a+63|0]=e>>>24;e=p[f+52|0]|p[f+53|0]<<8|(p[f+54|0]<<16|p[f+55|0]<<24);d=p[f+48|0]|p[f+49|0]<<8|(p[f+50|0]<<16|p[f+51|0]<<24);m[a+48|0]=d;m[a+49|0]=d>>>8;m[a+50|0]=d>>>16;m[a+51|0]=d>>>24;m[a+52|0]=e;m[a+53|0]=e>>>8;m[a+54|0]=e>>>16;m[a+55|0]=e>>>24;e=p[f+44|0]|p[f+45|0]<<8|(p[f+46|0]<<16|p[f+47|0]<<24);d=p[f+40|0]|p[f+41|0]<<8|(p[f+42|0]<<16|p[f+43|0]<<24);m[a+40|0]=d;m[a+41|0]=d>>>8;m[a+42|0]=d>>>16;m[a+43|0]=d>>>24;m[a+44|0]=e;m[a+45|0]=e>>>8;m[a+46|0]=e>>>16;m[a+47|0]=e>>>24;e=p[f+36|0]|p[f+37|0]<<8|(p[f+38|0]<<16|p[f+39|0]<<24);d=p[f+32|0]|p[f+33|0]<<8|(p[f+34|0]<<16|p[f+35|0]<<24);m[a+32|0]=d;m[a+33|0]=d>>>8;m[a+34|0]=d>>>16;m[a+35|0]=d>>>24;m[a+36|0]=e;m[a+37|0]=e>>>8;m[a+38|0]=e>>>16;m[a+39|0]=e>>>24;e=p[f+28|0]|p[f+29|0]<<8|(p[f+30|0]<<16|p[f+31|0]<<24);d=p[f+24|0]|p[f+25|0]<<8|(p[f+26|0]<<16|p[f+27|0]<<24);m[a+24|0]=d;m[a+25|0]=d>>>8;m[a+26|0]=d>>>16;m[a+27|0]=d>>>24;m[a+28|0]=e;m[a+29|0]=e>>>8;m[a+30|0]=e>>>16;m[a+31|0]=e>>>24;e=p[f+20|0]|p[f+21|0]<<8|(p[f+22|0]<<16|p[f+23|0]<<24);d=p[f+16|0]|p[f+17|0]<<8|(p[f+18|0]<<16|p[f+19|0]<<24);m[a+16|0]=d;m[a+17|0]=d>>>8;m[a+18|0]=d>>>16;m[a+19|0]=d>>>24;m[a+20|0]=e;m[a+21|0]=e>>>8;m[a+22|0]=e>>>16;m[a+23|0]=e>>>24;e=p[f+12|0]|p[f+13|0]<<8|(p[f+14|0]<<16|p[f+15|0]<<24);d=p[f+8|0]|p[f+9|0]<<8|(p[f+10|0]<<16|p[f+11|0]<<24);m[a+8|0]=d;m[a+9|0]=d>>>8;m[a+10|0]=d>>>16;m[a+11|0]=d>>>24;m[a+12|0]=e;m[a+13|0]=e>>>8;m[a+14|0]=e>>>16;m[a+15|0]=e>>>24;Ra(c,a);f=f- -64|0;b=b+ -64|0;if(b>>>0>63){continue}break}}ca(a,f,b)}f=1}return f}function _d(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;a:{if(d>>>0>=13){if((b|0)<1){break a}s=d+ -13|0;while(1){B=0;C=0;z=0;A=0;x=0;y=0;v=0;w=0;t=0;q=0;m=0;k=0;p=0;j=0;n=0;h=0;r=0;l=0;i=0;d=0;b:{switch(s|0){case 19:B=u(o[((g<<2)+f|0)+ -128>>2],o[c+124>>2]);case 18:C=u(o[((g<<2)+f|0)+ -124>>2],o[c+120>>2])+B|0;case 17:z=u(o[((g<<2)+f|0)+ -120>>2],o[c+116>>2])+C|0;case 16:A=u(o[((g<<2)+f|0)+ -116>>2],o[c+112>>2])+z|0;case 15:x=u(o[((g<<2)+f|0)+ -112>>2],o[c+108>>2])+A|0;case 14:y=u(o[((g<<2)+f|0)+ -108>>2],o[c+104>>2])+x|0;case 13:v=u(o[((g<<2)+f|0)+ -104>>2],o[c+100>>2])+y|0;case 12:w=u(o[((g<<2)+f|0)+ -100>>2],o[c+96>>2])+v|0;case 11:t=u(o[((g<<2)+f|0)+ -96>>2],o[c+92>>2])+w|0;case 10:q=u(o[((g<<2)+f|0)+ -92>>2],o[c+88>>2])+t|0;case 9:m=u(o[((g<<2)+f|0)+ -88>>2],o[c+84>>2])+q|0;case 8:k=u(o[((g<<2)+f|0)+ -84>>2],o[c+80>>2])+m|0;case 7:p=u(o[((g<<2)+f|0)+ -80>>2],o[c+76>>2])+k|0;case 6:j=u(o[((g<<2)+f|0)+ -76>>2],o[c+72>>2])+p|0;case 5:n=u(o[((g<<2)+f|0)+ -72>>2],o[c+68>>2])+j|0;case 4:h=u(o[((g<<2)+f|0)+ -68>>2],o[c+64>>2])+n|0;case 3:r=u(o[((g<<2)+f|0)+ -64>>2],o[c+60>>2])+h|0;case 2:l=u(o[((g<<2)+f|0)+ -60>>2],o[c+56>>2])+r|0;case 1:i=u(o[((g<<2)+f|0)+ -56>>2],o[c+52>>2])+l|0;case 0:d=(g<<2)+f|0;d=((((((((((((u(o[d+ -52>>2],o[c+48>>2])+i|0)+u(o[d+ -48>>2],o[c+44>>2])|0)+u(o[d+ -44>>2],o[c+40>>2])|0)+u(o[d+ -40>>2],o[c+36>>2])|0)+u(o[d+ -36>>2],o[c+32>>2])|0)+u(o[d+ -32>>2],o[c+28>>2])|0)+u(o[d+ -28>>2],o[c+24>>2])|0)+u(o[d+ -24>>2],o[c+20>>2])|0)+u(o[d+ -20>>2],o[c+16>>2])|0)+u(o[d+ -16>>2],o[c+12>>2])|0)+u(o[d+ -12>>2],o[c+8>>2])|0)+u(o[d+ -8>>2],o[c+4>>2])|0)+u(o[d+ -4>>2],o[c>>2])|0;break;default:break b}}i=g<<2;o[i+f>>2]=o[a+i>>2]+(d>>e);g=g+1|0;if((g|0)!=(b|0)){continue}break}break a}if(d>>>0>=9){if(d>>>0>=11){if((d|0)!=12){if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];l=o[f+ -16>>2];r=o[f+ -20>>2];h=o[f+ -24>>2];n=o[f+ -28>>2];j=o[f+ -32>>2];p=o[f+ -36>>2];k=o[f+ -40>>2];m=o[f+ -44>>2];D=o[c>>2];E=o[c+4>>2];B=o[c+8>>2];C=o[c+12>>2];z=o[c+16>>2];A=o[c+20>>2];x=o[c+24>>2];y=o[c+28>>2];v=o[c+32>>2];w=o[c+36>>2];t=o[c+40>>2];c=0;while(1){s=k;m=u(k,w)+u(m,t)|0;k=p;m=m+u(v,k)|0;p=j;m=u(j,y)+m|0;j=n;m=m+u(x,j)|0;n=h;m=u(h,A)+m|0;h=r;m=m+u(z,h)|0;r=l;m=u(l,C)+m|0;l=i;q=u(i,B)+m|0;i=d;m=c<<2;q=u(d,E)+q|0;d=g;g=o[m+a>>2]+(q+u(D,d)>>e)|0;o[f+m>>2]=g;m=s;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];l=o[f+ -16>>2];r=o[f+ -20>>2];h=o[f+ -24>>2];n=o[f+ -28>>2];j=o[f+ -32>>2];p=o[f+ -36>>2];k=o[f+ -40>>2];m=o[f+ -44>>2];q=o[f+ -48>>2];F=o[c>>2];G=o[c+4>>2];D=o[c+8>>2];E=o[c+12>>2];B=o[c+16>>2];C=o[c+20>>2];z=o[c+24>>2];A=o[c+28>>2];x=o[c+32>>2];y=o[c+36>>2];v=o[c+40>>2];w=o[c+44>>2];c=0;while(1){s=m;q=u(m,v)+u(q,w)|0;m=k;q=u(k,y)+q|0;k=p;q=q+u(x,k)|0;p=j;q=u(j,A)+q|0;j=n;q=q+u(z,j)|0;n=h;q=u(h,C)+q|0;h=r;q=q+u(B,h)|0;r=l;q=u(l,E)+q|0;l=i;t=u(i,D)+q|0;i=d;q=c<<2;t=u(d,G)+t|0;d=g;g=o[q+a>>2]+(t+u(F,d)>>e)|0;o[f+q>>2]=g;q=s;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=10){if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];l=o[f+ -16>>2];r=o[f+ -20>>2];h=o[f+ -24>>2];n=o[f+ -28>>2];j=o[f+ -32>>2];p=o[f+ -36>>2];z=o[c>>2];A=o[c+4>>2];x=o[c+8>>2];y=o[c+12>>2];v=o[c+16>>2];w=o[c+20>>2];t=o[c+24>>2];q=o[c+28>>2];s=o[c+32>>2];c=0;while(1){k=j;p=u(j,q)+u(p,s)|0;j=n;p=p+u(t,j)|0;n=h;p=u(h,w)+p|0;h=r;p=p+u(v,h)|0;r=l;p=u(l,y)+p|0;l=i;m=u(i,x)+p|0;i=d;p=c<<2;m=u(d,A)+m|0;d=g;g=o[p+a>>2]+(m+u(z,d)>>e)|0;o[f+p>>2]=g;p=k;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];l=o[f+ -16>>2];r=o[f+ -20>>2];h=o[f+ -24>>2];n=o[f+ -28>>2];j=o[f+ -32>>2];p=o[f+ -36>>2];k=o[f+ -40>>2];B=o[c>>2];C=o[c+4>>2];z=o[c+8>>2];A=o[c+12>>2];x=o[c+16>>2];y=o[c+20>>2];v=o[c+24>>2];w=o[c+28>>2];t=o[c+32>>2];q=o[c+36>>2];c=0;while(1){m=p;k=u(t,m)+u(k,q)|0;p=j;k=u(j,w)+k|0;j=n;k=k+u(v,j)|0;n=h;k=u(h,y)+k|0;h=r;k=k+u(x,h)|0;r=l;k=u(l,A)+k|0;l=i;s=u(i,z)+k|0;i=d;k=c<<2;s=u(d,C)+s|0;d=g;g=o[k+a>>2]+(s+u(B,d)>>e)|0;o[f+k>>2]=g;k=m;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if(d>>>0>=5){if(d>>>0>=7){if((d|0)!=8){if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];l=o[f+ -16>>2];r=o[f+ -20>>2];h=o[f+ -24>>2];n=o[f+ -28>>2];v=o[c>>2];w=o[c+4>>2];t=o[c+8>>2];q=o[c+12>>2];s=o[c+16>>2];m=o[c+20>>2];k=o[c+24>>2];c=0;while(1){j=h;n=u(h,m)+u(k,n)|0;h=r;n=n+u(s,h)|0;r=l;n=u(l,q)+n|0;l=i;p=u(i,t)+n|0;i=d;n=c<<2;p=u(d,w)+p|0;d=g;g=o[n+a>>2]+(p+u(v,d)>>e)|0;o[f+n>>2]=g;n=j;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];l=o[f+ -16>>2];r=o[f+ -20>>2];h=o[f+ -24>>2];n=o[f+ -28>>2];j=o[f+ -32>>2];x=o[c>>2];y=o[c+4>>2];v=o[c+8>>2];w=o[c+12>>2];t=o[c+16>>2];q=o[c+20>>2];s=o[c+24>>2];m=o[c+28>>2];c=0;while(1){p=n;j=u(s,n)+u(j,m)|0;n=h;j=u(h,q)+j|0;h=r;j=j+u(t,h)|0;r=l;j=u(l,w)+j|0;l=i;k=u(i,v)+j|0;i=d;j=c<<2;k=u(d,y)+k|0;d=g;g=o[j+a>>2]+(k+u(x,d)>>e)|0;o[f+j>>2]=g;j=p;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=6){if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];l=o[f+ -16>>2];r=o[f+ -20>>2];s=o[c>>2];m=o[c+4>>2];k=o[c+8>>2];p=o[c+12>>2];j=o[c+16>>2];c=0;while(1){h=l;r=u(p,h)+u(j,r)|0;l=i;n=u(i,k)+r|0;i=d;r=c<<2;n=u(d,m)+n|0;d=g;g=o[r+a>>2]+(n+u(s,d)>>e)|0;o[f+r>>2]=g;r=h;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];l=o[f+ -16>>2];r=o[f+ -20>>2];h=o[f+ -24>>2];t=o[c>>2];q=o[c+4>>2];s=o[c+8>>2];m=o[c+12>>2];k=o[c+16>>2];p=o[c+20>>2];c=0;while(1){n=r;h=u(k,n)+u(h,p)|0;r=l;h=u(l,m)+h|0;l=i;j=u(i,s)+h|0;i=d;h=c<<2;j=u(d,q)+j|0;d=g;g=o[h+a>>2]+(j+u(t,d)>>e)|0;o[f+h>>2]=g;h=n;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if(d>>>0>=3){if((d|0)!=4){if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];j=o[c>>2];n=o[c+4>>2];h=o[c+8>>2];c=0;while(1){l=d;r=c<<2;i=u(d,n)+u(i,h)|0;d=g;g=o[r+a>>2]+(i+u(j,d)>>e)|0;o[f+r>>2]=g;i=l;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];i=o[f+ -12>>2];l=o[f+ -16>>2];k=o[c>>2];p=o[c+4>>2];j=o[c+8>>2];n=o[c+12>>2];c=0;while(1){r=i;h=u(i,j)+u(l,n)|0;i=d;l=c<<2;h=u(d,p)+h|0;d=g;g=o[l+a>>2]+(h+u(k,d)>>e)|0;o[f+l>>2]=g;l=r;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=2){if((b|0)<1){break a}g=o[f+ -4>>2];i=o[c>>2];c=0;while(1){d=c<<2;g=o[d+a>>2]+(u(g,i)>>e)|0;o[d+f>>2]=g;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}g=o[f+ -4>>2];d=o[f+ -8>>2];h=o[c>>2];r=o[c+4>>2];c=0;while(1){i=g;l=c<<2;g=o[l+a>>2]+(u(g,h)+u(d,r)>>e)|0;o[f+l>>2]=g;d=i;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function be(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;a:{if(d>>>0>=13){if((b|0)<1){break a}B=d+ -13|0;while(1){s=0;w=0;v=0;y=0;x=0;A=0;z=0;C=0;t=0;r=0;q=0;p=0;n=0;m=0;l=0;k=0;j=0;i=0;h=0;d=0;b:{switch(B|0){case 19:s=u(o[((g<<2)+a|0)+ -128>>2],o[c+124>>2]);case 18:w=u(o[((g<<2)+a|0)+ -124>>2],o[c+120>>2])+s|0;case 17:v=u(o[((g<<2)+a|0)+ -120>>2],o[c+116>>2])+w|0;case 16:y=u(o[((g<<2)+a|0)+ -116>>2],o[c+112>>2])+v|0;case 15:x=u(o[((g<<2)+a|0)+ -112>>2],o[c+108>>2])+y|0;case 14:A=u(o[((g<<2)+a|0)+ -108>>2],o[c+104>>2])+x|0;case 13:z=u(o[((g<<2)+a|0)+ -104>>2],o[c+100>>2])+A|0;case 12:C=u(o[((g<<2)+a|0)+ -100>>2],o[c+96>>2])+z|0;case 11:t=u(o[((g<<2)+a|0)+ -96>>2],o[c+92>>2])+C|0;case 10:r=u(o[((g<<2)+a|0)+ -92>>2],o[c+88>>2])+t|0;case 9:q=u(o[((g<<2)+a|0)+ -88>>2],o[c+84>>2])+r|0;case 8:p=u(o[((g<<2)+a|0)+ -84>>2],o[c+80>>2])+q|0;case 7:n=u(o[((g<<2)+a|0)+ -80>>2],o[c+76>>2])+p|0;case 6:m=u(o[((g<<2)+a|0)+ -76>>2],o[c+72>>2])+n|0;case 5:l=u(o[((g<<2)+a|0)+ -72>>2],o[c+68>>2])+m|0;case 4:k=u(o[((g<<2)+a|0)+ -68>>2],o[c+64>>2])+l|0;case 3:j=u(o[((g<<2)+a|0)+ -64>>2],o[c+60>>2])+k|0;case 2:i=u(o[((g<<2)+a|0)+ -60>>2],o[c+56>>2])+j|0;case 1:h=u(o[((g<<2)+a|0)+ -56>>2],o[c+52>>2])+i|0;case 0:d=(g<<2)+a|0;d=((((((((((((u(o[d+ -52>>2],o[c+48>>2])+h|0)+u(o[d+ -48>>2],o[c+44>>2])|0)+u(o[d+ -44>>2],o[c+40>>2])|0)+u(o[d+ -40>>2],o[c+36>>2])|0)+u(o[d+ -36>>2],o[c+32>>2])|0)+u(o[d+ -32>>2],o[c+28>>2])|0)+u(o[d+ -28>>2],o[c+24>>2])|0)+u(o[d+ -24>>2],o[c+20>>2])|0)+u(o[d+ -20>>2],o[c+16>>2])|0)+u(o[d+ -16>>2],o[c+12>>2])|0)+u(o[d+ -12>>2],o[c+8>>2])|0)+u(o[d+ -8>>2],o[c+4>>2])|0)+u(o[d+ -4>>2],o[c>>2])|0;break;default:break b}}h=g<<2;o[h+f>>2]=o[a+h>>2]-(d>>e);g=g+1|0;if((g|0)!=(b|0)){continue}break}break a}if(d>>>0>=9){if(d>>>0>=11){if((d|0)!=12){if((b|0)<1){break a}q=o[a+ -4>>2];g=o[a+ -8>>2];d=o[a+ -12>>2];h=o[a+ -16>>2];i=o[a+ -20>>2];j=o[a+ -24>>2];k=o[a+ -28>>2];l=o[a+ -32>>2];m=o[a+ -36>>2];n=o[a+ -40>>2];r=o[a+ -44>>2];t=o[c>>2];s=o[c+4>>2];w=o[c+8>>2];v=o[c+12>>2];y=o[c+16>>2];x=o[c+20>>2];A=o[c+24>>2];z=o[c+28>>2];C=o[c+32>>2];B=o[c+36>>2];E=o[c+40>>2];c=0;while(1){p=n;n=m;m=l;l=k;k=j;j=i;i=h;h=d;d=g;g=q;D=c<<2;q=o[D+a>>2];o[f+D>>2]=q-((((((((((u(p,B)+u(r,E)|0)+u(n,C)|0)+u(m,z)|0)+u(l,A)|0)+u(k,x)|0)+u(j,y)|0)+u(i,v)|0)+u(h,w)|0)+u(d,s)|0)+u(g,t)>>e);r=p;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}r=o[a+ -4>>2];g=o[a+ -8>>2];d=o[a+ -12>>2];h=o[a+ -16>>2];i=o[a+ -20>>2];j=o[a+ -24>>2];k=o[a+ -28>>2];l=o[a+ -32>>2];m=o[a+ -36>>2];n=o[a+ -40>>2];p=o[a+ -44>>2];t=o[a+ -48>>2];s=o[c>>2];w=o[c+4>>2];v=o[c+8>>2];y=o[c+12>>2];x=o[c+16>>2];A=o[c+20>>2];z=o[c+24>>2];C=o[c+28>>2];B=o[c+32>>2];E=o[c+36>>2];D=o[c+40>>2];G=o[c+44>>2];c=0;while(1){q=p;p=n;n=m;m=l;l=k;k=j;j=i;i=h;h=d;d=g;g=r;F=c<<2;r=o[F+a>>2];o[f+F>>2]=r-(((((((((((u(q,D)+u(t,G)|0)+u(p,E)|0)+u(n,B)|0)+u(m,C)|0)+u(l,z)|0)+u(k,A)|0)+u(j,x)|0)+u(i,y)|0)+u(h,v)|0)+u(d,w)|0)+u(g,s)>>e);t=q;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=10){if((b|0)<1){break a}n=o[a+ -4>>2];g=o[a+ -8>>2];d=o[a+ -12>>2];h=o[a+ -16>>2];i=o[a+ -20>>2];j=o[a+ -24>>2];k=o[a+ -28>>2];l=o[a+ -32>>2];p=o[a+ -36>>2];r=o[c>>2];q=o[c+4>>2];t=o[c+8>>2];s=o[c+12>>2];w=o[c+16>>2];v=o[c+20>>2];y=o[c+24>>2];x=o[c+28>>2];A=o[c+32>>2];c=0;while(1){m=l;l=k;k=j;j=i;i=h;h=d;d=g;g=n;z=c<<2;n=o[z+a>>2];o[f+z>>2]=n-((((((((u(m,x)+u(p,A)|0)+u(l,y)|0)+u(k,v)|0)+u(j,w)|0)+u(i,s)|0)+u(h,t)|0)+u(d,q)|0)+u(g,r)>>e);p=m;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}p=o[a+ -4>>2];g=o[a+ -8>>2];d=o[a+ -12>>2];h=o[a+ -16>>2];i=o[a+ -20>>2];j=o[a+ -24>>2];k=o[a+ -28>>2];l=o[a+ -32>>2];m=o[a+ -36>>2];q=o[a+ -40>>2];r=o[c>>2];t=o[c+4>>2];s=o[c+8>>2];w=o[c+12>>2];v=o[c+16>>2];y=o[c+20>>2];x=o[c+24>>2];A=o[c+28>>2];z=o[c+32>>2];C=o[c+36>>2];c=0;while(1){n=m;m=l;l=k;k=j;j=i;i=h;h=d;d=g;g=p;B=c<<2;p=o[B+a>>2];o[f+B>>2]=p-(((((((((u(n,z)+u(q,C)|0)+u(m,A)|0)+u(l,x)|0)+u(k,y)|0)+u(j,v)|0)+u(i,w)|0)+u(h,s)|0)+u(d,t)|0)+u(g,r)>>e);q=n;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if(d>>>0>=5){if(d>>>0>=7){if((d|0)!=8){if((b|0)<1){break a}l=o[a+ -4>>2];g=o[a+ -8>>2];d=o[a+ -12>>2];h=o[a+ -16>>2];i=o[a+ -20>>2];j=o[a+ -24>>2];m=o[a+ -28>>2];n=o[c>>2];p=o[c+4>>2];r=o[c+8>>2];q=o[c+12>>2];t=o[c+16>>2];s=o[c+20>>2];w=o[c+24>>2];c=0;while(1){k=j;j=i;i=h;h=d;d=g;g=l;v=c<<2;l=o[v+a>>2];o[f+v>>2]=l-((((((u(k,s)+u(m,w)|0)+u(j,t)|0)+u(i,q)|0)+u(h,r)|0)+u(d,p)|0)+u(g,n)>>e);m=k;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}m=o[a+ -4>>2];g=o[a+ -8>>2];d=o[a+ -12>>2];h=o[a+ -16>>2];i=o[a+ -20>>2];j=o[a+ -24>>2];k=o[a+ -28>>2];n=o[a+ -32>>2];p=o[c>>2];r=o[c+4>>2];q=o[c+8>>2];t=o[c+12>>2];s=o[c+16>>2];w=o[c+20>>2];v=o[c+24>>2];y=o[c+28>>2];c=0;while(1){l=k;k=j;j=i;i=h;h=d;d=g;g=m;x=c<<2;m=o[x+a>>2];o[f+x>>2]=m-(((((((u(l,v)+u(n,y)|0)+u(k,w)|0)+u(j,s)|0)+u(i,t)|0)+u(h,q)|0)+u(d,r)|0)+u(g,p)>>e);n=l;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=6){if((b|0)<1){break a}j=o[a+ -4>>2];g=o[a+ -8>>2];d=o[a+ -12>>2];h=o[a+ -16>>2];k=o[a+ -20>>2];l=o[c>>2];m=o[c+4>>2];n=o[c+8>>2];p=o[c+12>>2];r=o[c+16>>2];c=0;while(1){i=h;h=d;d=g;g=j;q=c<<2;j=o[q+a>>2];o[f+q>>2]=j-((((u(i,p)+u(k,r)|0)+u(h,n)|0)+u(d,m)|0)+u(g,l)>>e);k=i;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}k=o[a+ -4>>2];g=o[a+ -8>>2];d=o[a+ -12>>2];h=o[a+ -16>>2];i=o[a+ -20>>2];l=o[a+ -24>>2];m=o[c>>2];n=o[c+4>>2];p=o[c+8>>2];r=o[c+12>>2];q=o[c+16>>2];t=o[c+20>>2];c=0;while(1){j=i;i=h;h=d;d=g;g=k;s=c<<2;k=o[s+a>>2];o[f+s>>2]=k-(((((u(j,q)+u(l,t)|0)+u(i,r)|0)+u(h,p)|0)+u(d,n)|0)+u(g,m)>>e);l=j;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if(d>>>0>=3){if((d|0)!=4){if((b|0)<1){break a}h=o[a+ -4>>2];g=o[a+ -8>>2];i=o[a+ -12>>2];j=o[c>>2];k=o[c+4>>2];l=o[c+8>>2];c=0;while(1){d=g;g=h;m=c<<2;h=o[m+a>>2];o[f+m>>2]=h-((u(d,k)+u(i,l)|0)+u(g,j)>>e);i=d;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}i=o[a+ -4>>2];g=o[a+ -8>>2];d=o[a+ -12>>2];j=o[a+ -16>>2];k=o[c>>2];l=o[c+4>>2];m=o[c+8>>2];n=o[c+12>>2];c=0;while(1){h=d;d=g;g=i;p=c<<2;i=o[p+a>>2];o[f+p>>2]=i-(((u(h,m)+u(j,n)|0)+u(d,l)|0)+u(g,k)>>e);j=h;c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((d|0)!=2){if((b|0)<1){break a}g=o[a+ -4>>2];d=o[c>>2];c=0;while(1){h=u(d,g);i=c<<2;g=o[i+a>>2];o[f+i>>2]=g-(h>>e);c=c+1|0;if((c|0)!=(b|0)){continue}break}break a}if((b|0)<1){break a}d=o[a+ -4>>2];h=o[a+ -8>>2];i=o[c>>2];j=o[c+4>>2];c=0;while(1){g=d;k=c<<2;d=o[k+a>>2];o[f+k>>2]=d-(u(g,i)+u(h,j)>>e);h=g;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function $(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;n=N-96|0;N=n;w=c;k=g;v=(k&131071)<<15|f>>>17;j=i&65535;r=j;p=h;k=h;B=k<<15|g>>>17;q=(e^i)&-2147483648;k=e&65535;m=k;u=d;E=k;k=j;C=(k&131071)<<15|h>>>17;F=i>>>16&32767;O=e>>>16&32767;a:{b:{if(O+ -1>>>0<=32765){j=0;if(F+ -1>>>0<32766){break b}}l=e&2147483647;j=l;k=d;if(!(!d&(j|0)==2147418112?!(b|c):(j|0)==2147418112&d>>>0<0|j>>>0<2147418112)){y=d;q=e|32768;break a}l=i&2147483647;e=l;d=h;if(!(!d&(e|0)==2147418112?!(f|g):(e|0)==2147418112&d>>>0<0|e>>>0<2147418112)){y=h;q=i|32768;b=f;c=g;break a}if(!(b|k|(j^2147418112|c))){if(!(d|f|(e|g))){q=2147450880;b=0;c=0;break a}q=q|2147418112;b=0;c=0;break a}if(!(d|f|(e^2147418112|g))){d=b|k;e=c|j;b=0;c=0;if(!(d|e)){q=2147450880;break a}q=q|2147418112;break a}if(!(b|k|(c|j))){b=0;c=0;break a}if(!(d|f|(e|g))){b=0;c=0;break a}if((j|0)==65535|j>>>0<65535){i=b;j=c;d=!(m|u);h=d<<6;k=x(d?b:u)+32|0;b=x(d?c:m);b=h+((b|0)==32?k:b)|0;ia(n+80|0,i,j,u,m,b+ -15|0);u=o[n+88>>2];w=o[n+84>>2];E=o[n+92>>2];s=16-b|0;b=o[n+80>>2]}j=s;if(e>>>0>65535){break b}c=!(p|r);d=c<<6;e=x(c?f:p)+32|0;c=x(c?g:r);c=d+((c|0)==32?e:c)|0;h=c;ia(n- -64|0,f,g,p,r,c+ -15|0);f=o[n+76>>2];c=f;i=o[n+68>>2];g=i;e=o[n+72>>2];d=e;B=d<<15|g>>>17;d=g;f=o[n+64>>2];v=(d&131071)<<15|f>>>17;C=(c&131071)<<15|e>>>17;j=(s-h|0)+16|0}s=j;d=v;r=0;i=Ee(d,0,b,r);c=Q;D=c;z=f<<15&-32768;p=w;f=Ee(z,0,p,0);e=f+i|0;l=Q+c|0;l=e>>>0<f>>>0?l+1|0:l;c=e;f=0;g=Ee(b,r,z,G);e=f+g|0;j=Q+c|0;j=e>>>0<g>>>0?j+1|0:j;v=e;g=j;Y=(c|0)==(j|0)&e>>>0<f>>>0|j>>>0<c>>>0;R=Ee(d,A,p,P);J=Q;w=u;f=Ee(z,G,u,0);e=f+R|0;m=Q+J|0;m=e>>>0<f>>>0?m+1|0:m;S=e;h=Ee(B,0,b,r);e=e+h|0;f=Q+m|0;K=e;f=e>>>0<h>>>0?f+1|0:f;u=f;h=f;f=(l|0)==(D|0)&c>>>0<i>>>0|l>>>0<D>>>0;e=l;c=e+K|0;j=f+h|0;D=c;j=c>>>0<e>>>0?j+1|0:j;e=j;h=c;U=Ee(d,A,w,T);L=Q;c=z;H=E|65536;z=t;f=Ee(c,G,H,t);c=f+U|0;j=Q+L|0;j=c>>>0<f>>>0?j+1|0:j;V=c;k=Ee(p,P,B,W);c=c+k|0;t=j;f=j+Q|0;f=c>>>0<k>>>0?f+1|0:f;M=c;I=C&2147483647|-2147483648;c=Ee(b,r,I,0);b=M+c|0;r=f;k=f+Q|0;G=b;c=b>>>0<c>>>0?k+1|0:k;j=e+b|0;f=0;b=f+h|0;if(b>>>0<f>>>0){j=j+1|0}E=b;C=j;f=j;h=b+Y|0;if(h>>>0<b>>>0){f=f+1|0}i=f;s=(s+(F+O|0)|0)+ -16383|0;f=Ee(w,T,B,W);b=Q;l=0;k=Ee(d,A,H,z);d=k+f|0;j=Q+b|0;j=d>>>0<k>>>0?j+1|0:j;A=d;k=d;d=j;j=(b|0)==(d|0)&k>>>0<f>>>0|d>>>0<b>>>0;f=Ee(I,X,p,P);b=f+k|0;k=Q+d|0;k=b>>>0<f>>>0?k+1|0:k;p=b;f=b;b=k;d=(d|0)==(b|0)&f>>>0<A>>>0|b>>>0<d>>>0;f=j+d|0;if(f>>>0<d>>>0){l=1}k=f;d=b;f=l;F=k;j=0;k=(m|0)==(u|0)&K>>>0<S>>>0|u>>>0<m>>>0;m=k+((m|0)==(J|0)&S>>>0<R>>>0|m>>>0<J>>>0)|0;if(m>>>0<k>>>0){j=1}l=m;m=m+p|0;k=d+j|0;A=m;j=m;k=j>>>0<l>>>0?k+1|0:k;d=k;b=(b|0)==(d|0)&j>>>0<p>>>0|d>>>0<b>>>0;k=F+b|0;if(k>>>0<b>>>0){f=f+1|0}b=k;k=Ee(I,X,H,z);b=b+k|0;j=Q+f|0;j=b>>>0<k>>>0?j+1|0:j;l=b;m=Ee(I,X,w,T);f=Q;p=Ee(B,W,H,z);b=p+m|0;k=Q+f|0;k=b>>>0<p>>>0?k+1|0:k;p=b;b=k;k=(f|0)==(b|0)&p>>>0<m>>>0|b>>>0<f>>>0;f=b+l|0;l=j+k|0;k=f>>>0<b>>>0?l+1|0:l;w=f;j=d+p|0;l=0;b=l+A|0;if(b>>>0<l>>>0){j=j+1|0}m=b;f=b;b=j;d=(d|0)==(b|0)&f>>>0<A>>>0|b>>>0<d>>>0;f=w+d|0;if(f>>>0<d>>>0){k=k+1|0}p=f;l=b;j=0;f=(t|0)==(r|0)&M>>>0<V>>>0|r>>>0<t>>>0;t=f+((t|0)==(L|0)&V>>>0<U>>>0|t>>>0<L>>>0)|0;if(t>>>0<f>>>0){j=1}f=t+((c|0)==(r|0)&G>>>0<M>>>0|c>>>0<r>>>0)|0;d=c;c=d+m|0;l=f+l|0;l=c>>>0<d>>>0?l+1|0:l;t=c;d=c;c=l;b=(b|0)==(c|0)&d>>>0<m>>>0|c>>>0<b>>>0;d=b+p|0;if(d>>>0<b>>>0){k=k+1|0}b=c;j=k;k=d;f=0;d=(e|0)==(C|0)&E>>>0<D>>>0|C>>>0<e>>>0;e=d+((e|0)==(u|0)&D>>>0<K>>>0|e>>>0<u>>>0)|0;if(e>>>0<d>>>0){f=1}d=e+t|0;l=b+f|0;l=d>>>0<e>>>0?l+1|0:l;b=d;e=l;b=(c|0)==(e|0)&b>>>0<t>>>0|e>>>0<c>>>0;c=k+b|0;if(c>>>0<b>>>0){j=j+1|0}b=c;c=j;c:{if(c&65536){s=s+1|0;break c}m=g>>>31|0;j=c<<1|b>>>31;b=b<<1|e>>>31;c=j;j=e<<1|d>>>31;d=d<<1|i>>>31;e=j;k=v;j=g<<1|k>>>31;v=k<<1;g=j;k=i<<1|h>>>31;h=h<<1|m;i=k}if((s|0)>=32767){q=q|2147418112;b=0;c=0;break a}d:{if((s|0)<=0){f=1-s|0;if(f>>>0<=127){k=s+127|0;ia(n+48|0,v,g,h,i,k);ia(n+32|0,d,e,b,c,k);Ja(n+16|0,v,g,h,i,f);Ja(n,d,e,b,c,f);v=(o[n+48>>2]|o[n+56>>2])!=0|(o[n+52>>2]|o[n+60>>2])!=0|(o[n+32>>2]|o[n+16>>2]);g=o[n+36>>2]|o[n+20>>2];h=o[n+40>>2]|o[n+24>>2];i=o[n+44>>2]|o[n+28>>2];d=o[n>>2];e=o[n+4>>2];c=o[n+12>>2];b=o[n+8>>2];break d}b=0;c=0;break a}c=c&65535|s<<16}y=b|y;q=c|q;if(!(!h&(i|0)==-2147483648?!(g|v):(i|0)>-1?1:0)){l=q;m=e;b=d+1|0;if(b>>>0<1){m=m+1|0}c=m;d=(e|0)==(c|0)&b>>>0<d>>>0|c>>>0<e>>>0;e=d+y|0;if(e>>>0<d>>>0){l=l+1|0}y=e;q=l;break a}if(h|v|(i^-2147483648|g)){b=d;c=e;break a}m=q;j=e;b=d&1;c=b+d|0;if(c>>>0<b>>>0){j=j+1|0}b=c;c=j;d=(e|0)==(c|0)&b>>>0<d>>>0|c>>>0<e>>>0;e=d+y|0;if(e>>>0<d>>>0){m=m+1|0}y=e;q=m}o[a>>2]=b;o[a+4>>2]=c;o[a+8>>2]=y;o[a+12>>2]=q;N=n+96|0}function Oa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,s=0;i=N-48|0;N=i;a:{b:{g=o[a>>2];if(!o[g+12>>2]){break b}d=o[a+4>>2];d=$b(d+7060|0,d+4|0,o[g+24>>2],o[g+36>>2],o[g+28>>2]+7>>>3|0);g=o[a>>2];if(d){break b}o[g>>2]=8;b=0;break a}d=o[g+576>>2];if(b){l=0}else{b=ke(o[g+36>>2]);g=o[a>>2];e=o[g+580>>2];l=b>>>0<e>>>0?b:e}j=o[g+36>>2];o[i+8>>2]=j;o[i+12>>2]=o[g+32>>2];b=o[g+24>>2];o[i+20>>2]=0;o[i+16>>2]=b;b=o[g+28>>2];o[i+28>>2]=0;o[i+24>>2]=b;h=o[a+4>>2];o[i+32>>2]=o[h+7056>>2];n=d>>>0<l>>>0?d:l;c:{d:{e:{f:{g:{h:{i:{if(!o[g+16>>2]){k=1;break i}if(!o[g+20>>2]|!o[h+6864>>2]){break i}k=1;e=1;if(o[h+6868>>2]){break h}}j:{if(!o[g+24>>2]){d=0;break j}while(1){p=(f<<2)+h|0;d=0;e=0;k:{if(!j){break k}s=o[p+4>>2];b=0;while(1){l:{d=o[(b<<2)+s>>2]|d;m=d&1;b=b+1|0;if(b>>>0>=j>>>0){break l}if(!m){continue}}break}b=0;e=0;if(!d){break k}e=0;if(m){break k}while(1){b=b+1|0;e=d&2;d=d>>1;if(!e){continue}break}m=0;e=0;if(!b){break k}while(1){d=(m<<2)+s|0;o[d>>2]=o[d>>2]>>b;m=m+1|0;if((m|0)!=(j|0)){continue}break}e=b}j=u(f,584)+h|0;b=o[g+28>>2];d=e>>>0>b>>>0?b:e;o[j+624>>2]=d;o[j+916>>2]=d;o[p+216>>2]=b-d;f=f+1|0;d=o[g+24>>2];if(f>>>0>=d>>>0){break j}j=o[g+36>>2];continue}}b=1;if(k){break g}j=o[g+36>>2];e=0}m=o[h+36>>2];d=0;f=0;m:{if(!j){break m}b=0;while(1){n:{b=o[(f<<2)+m>>2]|b;k=b&1;f=f+1|0;if(f>>>0>=j>>>0){break n}if(!k){continue}}break}f=0;if(k|!b){break m}while(1){f=f+1|0;k=b&2;b=b>>1;if(!k){continue}break}b=0;if(!f){f=0;break m}while(1){k=(b<<2)+m|0;o[k>>2]=o[k>>2]>>f;b=b+1|0;if((j|0)!=(b|0)){continue}break}}b=o[g+28>>2];f=f>>>0>b>>>0?b:f;o[h+5296>>2]=f;o[h+5588>>2]=f;o[h+248>>2]=b-f;f=o[g+36>>2];o:{if(!f){break o}j=o[h+40>>2];b=0;while(1){p:{d=o[j+(b<<2)>>2]|d;k=d&1;b=b+1|0;if(b>>>0>=f>>>0){break p}if(!k){continue}}break}b=0;if(!d){d=0;break o}if(k){d=0;break o}while(1){b=b+1|0;k=d&2;d=d>>1;if(!k){continue}break}d=0;if(!b){break o}while(1){k=j+(d<<2)|0;o[k>>2]=o[k>>2]>>b;d=d+1|0;if((f|0)!=(d|0)){continue}break}d=b}b=o[g+28>>2];d=d>>>0>b>>>0?b:d;o[h+5880>>2]=d;o[h+6172>>2]=d;o[h+252>>2]=(b-d|0)+1;if(e){break f}d=o[g+24>>2];b=0}if(d){d=0;while(1){e=(d<<2)+h|0;g=(d<<3)+h|0;Ua(a,n,l,i+8|0,o[e+216>>2],o[e+4>>2],g+6176|0,g+6640|0,g+256|0,e+6768|0,e+6808|0);h=o[a+4>>2];d=d+1|0;if(d>>>0<r[o[a>>2]+24>>2]){continue}break}}if(b){break e}m=o[h+36>>2]}Ua(a,n,l,i+8|0,o[h+248>>2],m,h+6240|0,h+6704|0,h+320|0,h+6800|0,h+6840|0);b=o[a+4>>2];Ua(a,n,l,i+8|0,o[b+252>>2],o[b+40>>2],b+6248|0,b+6712|0,b+328|0,b+6804|0,b+6844|0);d=i;e=o[a+4>>2];q:{if(!(!o[o[a>>2]+20>>2]|!o[e+6864>>2])){b=o[e+6868>>2]?3:0;break q}b=o[e+6844>>2];l=o[e+6808>>2];g=b+l|0;f=l;l=o[e+6812>>2];h=f+l|0;f=g>>>0<h>>>0;l=b+l|0;g=f?g:h;h=l>>>0<g>>>0;b=b+o[e+6840>>2]>>>0<(h?l:g)>>>0?3:h?2:f}o[d+20>>2]=b;if(!Tb(i+8|0,o[e+6856>>2])){o[o[a>>2]>>2]=7;b=0;break a}r:{s:{switch(b|0){default:d=o[a+4>>2];j=0;b=0;f=0;e=0;break r;case 0:d=o[a+4>>2];e=d+336|0;b=e+u(o[d+6768>>2],292)|0;j=(e+u(o[d+6772>>2],292)|0)+584|0;f=o[d+216>>2];e=o[d+220>>2];break r;case 1:d=o[a+4>>2];b=(d+u(o[d+6768>>2],292)|0)+336|0;j=(u(o[d+6804>>2],292)+d|0)+5592|0;f=o[d+216>>2];e=o[d+252>>2];break r;case 2:d=o[a+4>>2];j=(d+u(o[d+6772>>2],292)|0)+920|0;b=(u(o[d+6804>>2],292)+d|0)+5592|0;f=o[d+252>>2];e=o[d+220>>2];break r;case 3:break s}}d=o[a+4>>2];e=d+5008|0;b=e+u(o[d+6800>>2],292)|0;j=(e+u(o[d+6804>>2],292)|0)+584|0;f=o[d+248>>2];e=o[d+252>>2]}if(!Wa(a,o[i+8>>2],f,b,o[d+6856>>2])){break d}if(!Wa(a,o[i+8>>2],e,j,o[o[a+4>>2]+6856>>2])){break d}b=o[a>>2];break c}d=Tb(i+8|0,o[h+6856>>2]);b=o[a>>2];if(d){if(!o[b+24>>2]){break c}d=0;while(1){b=o[a+4>>2];e=b+(d<<2)|0;if(!Wa(a,o[i+8>>2],o[e+216>>2],((b+u(d,584)|0)+u(o[e+6768>>2],292)|0)+336|0,o[b+6856>>2])){break d}d=d+1|0;b=o[a>>2];if(d>>>0<r[b+24>>2]){continue}break}break c}o[b>>2]=7}b=0;break a}if(o[b+20>>2]){b=o[a+4>>2];d=o[b+6864>>2]+1|0;o[b+6864>>2]=d>>>0<r[b+6860>>2]?d:0}d=o[a+4>>2];o[d+6868>>2]=o[i+20>>2];d=o[d+6856>>2];e=o[d+16>>2]&7;b=1;t:{if(!e){break t}b=Ca(d,8-e|0)}if(!b){o[o[a>>2]>>2]=8;b=0;break a}u:{if(ue(o[o[a+4>>2]+6856>>2],i+8|0)){if(_(o[o[a+4>>2]+6856>>2],q[i+8>>1],o[1404])){break u}}o[o[a>>2]>>2]=8;b=0;break a}b=0;if(!Fa(a,o[o[a>>2]+36>>2],c)){break a}b=o[a+4>>2];o[b+7052>>2]=0;o[b+7056>>2]=o[b+7056>>2]+1;c=b+6920|0;d=c;e=d;b=o[d+4>>2];a=o[o[a>>2]+36>>2];c=a+o[d>>2]|0;if(c>>>0<a>>>0){b=b+1|0}o[e>>2]=c;o[d+4>>2]=b;b=1}N=i+48|0;return b}function Bc(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;f=N-432|0;N=f;g=o[b+4>>2];a:{if(g>>>0<r[b+104>>2]){o[b+4>>2]=g+1;h=p[g|0];break a}h=ga(b)}b:{c:{while(1){d:{if((h|0)!=48){if((h|0)!=46){break b}g=o[b+4>>2];if(g>>>0>=r[b+104>>2]){break d}o[b+4>>2]=g+1;h=p[g|0];break c}g=o[b+4>>2];if(g>>>0<r[b+104>>2]){y=1;o[b+4>>2]=g+1;h=p[g|0]}else{y=1;h=ga(b)}continue}break}h=ga(b)}x=1;if((h|0)!=48){break b}while(1){g=o[b+4>>2];e:{if(g>>>0<r[b+104>>2]){o[b+4>>2]=g+1;h=p[g|0];break e}h=ga(b)}n=n+ -1|0;g=u+ -1|0;if((g|0)!=-1){n=n+1|0}u=g;if((h|0)==48){continue}break}y=1}g=1073676288;while(1){f:{z=h|32;g:{h:{A=h+ -48|0;if(A>>>0<10){break h}if(z+ -97>>>0>5?(h|0)!=46:0){break f}if((h|0)!=46){break h}if(x){break f}x=1;u=l;n=i;break g}h=(h|0)>57?z+ -87|0:A;i:{if((i|0)<0?1:(i|0)<=0?l>>>0>7?0:1:0){q=h+(q<<4)|0;break i}if((i|0)<0?1:(i|0)<=0?l>>>0>28?0:1:0){ka(f+48|0,h);$(f+32|0,v,w,m,g,0,0,0,1073414144);v=o[f+32>>2];w=o[f+36>>2];m=o[f+40>>2];g=o[f+44>>2];$(f+16|0,v,w,m,g,o[f+48>>2],o[f+52>>2],o[f+56>>2],o[f+60>>2]);ja(f,j,k,s,t,o[f+16>>2],o[f+20>>2],o[f+24>>2],o[f+28>>2]);s=o[f+8>>2];t=o[f+12>>2];j=o[f>>2];k=o[f+4>>2];break i}if(!h|D){break i}$(f+80|0,v,w,m,g,0,0,0,1073610752);ja(f- -64|0,j,k,s,t,o[f+80>>2],o[f+84>>2],o[f+88>>2],o[f+92>>2]);s=o[f+72>>2];t=o[f+76>>2];D=1;j=o[f+64>>2];k=o[f+68>>2]}l=l+1|0;if(l>>>0<1){i=i+1|0}y=1}h=o[b+4>>2];if(h>>>0<r[b+104>>2]){o[b+4>>2]=h+1;h=p[h|0]}else{h=ga(b)}continue}break}j:{k:{if(!y){if(!o[b+104>>2]){break k}c=o[b+4>>2];o[b+4>>2]=c+ -1;o[b+4>>2]=c+ -2;if(!x){break k}o[b+4>>2]=c+ -3;break k}if((i|0)<0?1:(i|0)<=0?l>>>0>7?0:1:0){m=l;g=i;while(1){q=q<<4;m=m+1|0;if(m>>>0<1){g=g+1|0}if((m|0)!=8|g){continue}break}}l:{if((h&-33)==80){m=lb(b);h=Q;g=h;if(m|(g|0)!=-2147483648){break l}m=0;g=0;if(!o[b+104>>2]){break l}o[b+4>>2]=o[b+4>>2]+ -1;break l}m=0;g=0;if(!o[b+104>>2]){break l}o[b+4>>2]=o[b+4>>2]+ -1}if(!q){sa(f+112|0,+(e|0)*0);j=o[f+112>>2];k=o[f+116>>2];c=o[f+120>>2];b=o[f+124>>2];break j}b=x?n:i;i=x?u:l;n=b<<2|i>>>30;b=m+(i<<2)|0;i=g+n|0;i=b>>>0<m>>>0?i+1|0:i;b=b+ -32|0;g=i+ -1|0;l=b;i=b>>>0<4294967264?g+1|0:g;if((i|0)>0?1:(i|0)>=0?b>>>0<=0-d>>>0?0:1:0){o[2896]=68;ka(f+160|0,e);$(f+144|0,o[f+160>>2],o[f+164>>2],o[f+168>>2],o[f+172>>2],-1,-1,-1,2147418111);$(f+128|0,o[f+144>>2],o[f+148>>2],o[f+152>>2],o[f+156>>2],-1,-1,-1,2147418111);j=o[f+128>>2];k=o[f+132>>2];c=o[f+136>>2];b=o[f+140>>2];break j}b=d+ -226|0;h=l>>>0<b>>>0?0:1;b=b>>31;if((i|0)>(b|0)?1:(i|0)>=(b|0)?h:0){if((q|0)>-1){while(1){ja(f+416|0,j,k,s,t,0,0,0,-1073807360);h=Jb(j,k,s,t,1073610752);g=(h|0)<0;b=g;ja(f+400|0,j,k,s,t,b?j:o[f+416>>2],b?k:o[f+420>>2],b?s:o[f+424>>2],b?t:o[f+428>>2]);i=i+ -1|0;b=l+ -1|0;if((b|0)!=-1){i=i+1|0}l=b;s=o[f+408>>2];t=o[f+412>>2];j=o[f+400>>2];k=o[f+404>>2];q=q<<1|(h|0)>-1;if((q|0)>-1){continue}break}}g=l;b=d;h=(g-b|0)+32|0;i=i-((b>>31)+(g>>>0<b>>>0)|0)|0;b=h;i=b>>>0<32?i+1|0:i;c=((i|0)<0?1:(i|0)<=0?b>>>0>=c>>>0?0:1:0)?(b|0)>0?b:0:c;m:{if((c|0)>=113){ka(f+384|0,e);u=o[f+392>>2];n=o[f+396>>2];v=o[f+384>>2];w=o[f+388>>2];d=0;b=0;break m}sa(f+352|0,ua(1,144-c|0));ka(f+336|0,e);v=o[f+336>>2];w=o[f+340>>2];u=o[f+344>>2];n=o[f+348>>2];Fb(f+368|0,o[f+352>>2],o[f+356>>2],o[f+360>>2],o[f+364>>2],v,w,u,n);B=o[f+376>>2];C=o[f+380>>2];d=o[f+372>>2];b=o[f+368>>2]}c=!(q&1)&((za(j,k,s,t,0,0,0,0)|0)!=0&(c|0)<32);Ba(f+320|0,c+q|0);$(f+304|0,v,w,u,n,o[f+320>>2],o[f+324>>2],o[f+328>>2],o[f+332>>2]);ja(f+272|0,o[f+304>>2],o[f+308>>2],o[f+312>>2],o[f+316>>2],b,d,B,C);$(f+288|0,c?0:j,c?0:k,c?0:s,c?0:t,v,w,u,n);ja(f+256|0,o[f+288>>2],o[f+292>>2],o[f+296>>2],o[f+300>>2],o[f+272>>2],o[f+276>>2],o[f+280>>2],o[f+284>>2]);Xa(f+240|0,o[f+256>>2],o[f+260>>2],o[f+264>>2],o[f+268>>2],b,d,B,C);e=o[f+240>>2];d=o[f+244>>2];c=o[f+248>>2];b=o[f+252>>2];if(!za(e,d,c,b,0,0,0,0)){o[2896]=68}mb(f+224|0,e,d,c,b,l);j=o[f+224>>2];k=o[f+228>>2];c=o[f+232>>2];b=o[f+236>>2];break j}o[2896]=68;ka(f+208|0,e);$(f+192|0,o[f+208>>2],o[f+212>>2],o[f+216>>2],o[f+220>>2],0,0,0,65536);$(f+176|0,o[f+192>>2],o[f+196>>2],o[f+200>>2],o[f+204>>2],0,0,0,65536);j=o[f+176>>2];k=o[f+180>>2];c=o[f+184>>2];b=o[f+188>>2];break j}sa(f+96|0,+(e|0)*0);j=o[f+96>>2];k=o[f+100>>2];c=o[f+104>>2];b=o[f+108>>2]}o[a>>2]=j;o[a+4>>2]=k;o[a+8>>2]=c;o[a+12>>2]=b;N=f+432|0}function Ua(a,b,c,d,e,f,g,h,i,j,k){var m=0,n=0,p=0,q=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,O=0,P=0,Q=0,R=v(0),S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=v(0),_=0,$=0,aa=0,ba=0,da=0,ea=0;q=N-576|0;N=q;G=o[(r[o[a>>2]+28>>2]>16?5644:5640)>>2];n=o[d>>2];a:{b:{if(o[o[a+4>>2]+7256>>2]){m=-1;if(n>>>0>3){break b}}y=o[g>>2];o[y+4>>2]=f;o[y>>2]=1;m=o[y+288>>2]+(o[1416]+(o[1415]+(o[1414]+u(e,n)|0)|0)|0)|0;n=o[d>>2];if(n>>>0<4){break a}}p=o[a+4>>2];y=n+ -4|0;c:{if(((x(y|1)^31)+e|0)+4>>>0<=32){p=l[o[p+7224>>2]](f+16|0,y,q+416|0)|0;break c}p=l[o[p+7228>>2]](f+16|0,y,q+416|0)|0}d:{e:{f:{g:{w=o[a+4>>2];if(o[w+7248>>2]|s[q+420>>2]!=v(0)){break g}n=1;z=o[f>>2];y=o[d>>2];if(y>>>0<=1){break f}while(1){if((z|0)!=o[(n<<2)+f>>2]){break g}n=n+1|0;if(n>>>0<y>>>0){continue}break}break f}n=o[a>>2];if(!o[w+7252>>2]){y=m;break e}y=-1;if((m|0)!=-1){y=m;break d}if(!o[n+556>>2]){break e}y=m;break d}a=o[g+4>>2];o[a+4>>2]=z;o[a>>2]=0;a=o[a+288>>2]+(o[1416]+(o[1415]+(o[1414]+e|0)|0)|0)|0;A=a>>>0<m>>>0;m=A?a:m;break a}m=o[n+568>>2];B=m?0:p;p=m?4:p;m=o[d>>2];K=p>>>0<m>>>0?p:m+ -1|0;if(B>>>0>K>>>0){break d}O=G+ -1|0;P=o[1416];L=o[1415];Q=o[1414];Z=v(e>>>0);while(1){n=B<<2;R=s[n+(q+416|0)>>2];if(!(R>=Z)){M=!A;z=M<<2;S=o[z+h>>2];D=o[g+z>>2];T=o[o[a>>2]+572>>2];m=o[a+4>>2];p=o[m+6852>>2];w=o[m+6848>>2];m=f+n|0;n=o[d>>2]-B|0;z=o[i+z>>2];ne(m,n,B,z);o[D+36>>2]=z;o[D+12>>2]=S;o[D>>2]=2;o[D+4>>2]=0;U=R>v(0);H=o[a+4>>2];E=B;I=+R+.5;h:{if(I<4294967296&I>=0){m=~~I>>>0;break h}m=0}m=U?m+1|0:1;w=Ab(H,z,w,p,n,E,m>>>0<G>>>0?m:O,G,b,c,e,T,D+4|0);o[D+16>>2]=B;if(B){p=D+20|0;m=0;while(1){n=m<<2;o[n+p>>2]=o[f+n>>2];m=m+1|0;if((B|0)!=(m|0)){continue}break}}m=o[D+288>>2]+(P+(L+(Q+(w+u(e,B)|0)|0)|0)|0)|0;n=m>>>0<y>>>0;A=n?M:A;y=n?m:y}B=B+1|0;if(B>>>0<=K>>>0){continue}break}n=o[a>>2]}p=o[n+556>>2];if(!p){m=y;break a}m=o[d>>2];p=p>>>0<m>>>0?p:m+ -1|0;o[q+12>>2]=p;if(!p){m=y;break a}if(!o[n+40>>2]){m=y;break a}X=33-e|0;_=G+ -1|0;$=o[1413];aa=o[1412];ba=o[1416];D=o[1415];da=o[1414];I=+(e>>>0);K=e>>>0<18;O=e>>>0>16;P=e>>>0>17;while(1){n=o[a+4>>2];Yd(f,o[(n+(V<<2)|0)+84>>2],o[n+212>>2],m);m=o[a+4>>2];l[o[m+7232>>2]](o[m+212>>2],o[d>>2],o[q+12>>2]+1|0,q+272|0);i:{if(s[q+272>>2]==v(0)){break i}ce(q+272|0,q+12|0,o[a+4>>2]+7628|0,q+16|0);w=1;n=o[q+12>>2];z=o[a>>2];if(!o[z+568>>2]){m=q;n=ee(m+16|0,n,o[d>>2],(o[z+564>>2]?5:o[z+560>>2])+e|0);o[m+12>>2]=n;w=n}m=o[d>>2];if(n>>>0>=m>>>0){n=m+ -1|0;o[q+12>>2]=n}if(w>>>0>n>>>0){break i}while(1){j:{L=w+ -1|0;F=de(t[(q+16|0)+(L<<3)>>3],m-w|0);if(F>=I){break j}m=F>0;F=F+.5;k:{if(F<4294967296&F>=0){p=~~F>>>0;break k}p=0}p=m?p+1|0:1;m=p>>>0<G>>>0;n=o[a>>2];l:{if(o[n+564>>2]){E=5;H=15;if(P){break l}z=(x(w)^-32)+X|0;if(z>>>0>14){break l}H=z>>>0>5?z:5;break l}H=o[n+560>>2];E=H}Q=m?p:_;W=(w<<2)+f|0;m=x(w);M=m^31;Y=(m^-32)+X|0;while(1){B=o[d>>2];p=!A;m=p<<2;T=o[m+h>>2];C=o[g+m>>2];J=o[i+m>>2];U=o[n+572>>2];n=o[a+4>>2];S=o[n+6852>>2];z=o[n+6848>>2];m=0;ea=A;A=(n+(L<<7)|0)+7628|0;n=K?Y>>>0>E>>>0?E:Y:E;if(!$d(A,w,n,q+448|0,q+444|0)){A=B-w|0;B=e+n|0;m:{if(B+M>>>0<=32){m=o[a+4>>2];if(!(n>>>0>16|O)){l[o[m+7244>>2]](W,A,q+448|0,w,o[q+444>>2],J);break m}l[o[m+7236>>2]](W,A,q+448|0,w,o[q+444>>2],J);break m}l[o[o[a+4>>2]+7240>>2]](W,A,q+448|0,w,o[q+444>>2],J)}o[C>>2]=3;o[C+4>>2]=0;o[C+284>>2]=J;o[C+12>>2]=T;A=Ab(o[a+4>>2],J,z,S,A,w,Q,G,b,c,e,U,C+4|0);o[C+20>>2]=n;o[C+16>>2]=w;o[C+24>>2]=o[q+444>>2];ca(C+28|0,q+448|0,128);m=0;if(w){while(1){z=m<<2;o[(z+C|0)+156>>2]=o[f+z>>2];m=m+1|0;if((w|0)!=(m|0)){continue}break}}m=((o[C+288>>2]+((((A+u(w,B)|0)+da|0)+D|0)+ba|0)|0)+aa|0)+$|0}n=(m|0)!=0&m>>>0<y>>>0;A=n?p:ea;y=n?m:y;E=E+1|0;if(E>>>0>H>>>0){break j}n=o[a>>2];continue}}w=w+1|0;if(w>>>0>r[q+12>>2]){break i}m=o[d>>2];continue}}V=V+1|0;if(V>>>0<r[o[a>>2]+40>>2]){m=o[d>>2];continue}break}m=y}if((m|0)==-1){a=o[d>>2];b=o[(A<<2)+g>>2];o[b+4>>2]=f;o[b>>2]=1;m=o[b+288>>2]+(o[1416]+(o[1415]+(o[1414]+u(a,e)|0)|0)|0)|0}o[j>>2]=A;o[k>>2]=m;N=q+576|0}function Ra(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;l=o[b+16>>2];i=o[b+32>>2];m=o[b+48>>2];n=o[b+36>>2];p=o[b+52>>2];q=o[b+4>>2];g=o[b+20>>2];h=o[a+4>>2];j=o[b>>2];B=o[a>>2];r=o[a+12>>2];k=o[a+8>>2];c=h+He(((j+B|0)+(r^(r^k)&h)|0)+ -680876936|0,7)|0;s=o[b+12>>2];t=o[b+8>>2];e=He(((q+r|0)+(c&(h^k)^k)|0)+ -389564586|0,12)+c|0;d=He(((t+k|0)+(e&(c^h)^h)|0)+606105819|0,17)+e|0;f=He(((h+s|0)+(c^d&(c^e))|0)+ -1044525330|0,22)+d|0;c=He(((c+l|0)+(e^f&(d^e))|0)+ -176418897|0,7)+f|0;u=o[b+28>>2];v=o[b+24>>2];e=He(((e+g|0)+(d^c&(d^f))|0)+1200080426|0,12)+c|0;d=He(((d+v|0)+(f^e&(c^f))|0)+ -1473231341|0,17)+e|0;f=He(((f+u|0)+(c^d&(c^e))|0)+ -45705983|0,22)+d|0;c=He(((c+i|0)+(e^f&(d^e))|0)+1770035416|0,7)+f|0;w=o[b+44>>2];x=o[b+40>>2];e=He(((e+n|0)+(d^c&(d^f))|0)+ -1958414417|0,12)+c|0;d=He(((x+d|0)+(f^e&(c^f))|0)+ -42063|0,17)+e|0;f=He(((f+w|0)+(c^d&(c^e))|0)+ -1990404162|0,22)+d|0;c=He(((c+m|0)+(e^f&(d^e))|0)+1804603682|0,7)+f|0;y=o[b+60>>2];A=c+q|0;z=o[b+56>>2];e=He(((e+p|0)+(d^c&(d^f))|0)+ -40341101|0,12)+c|0;b=He(((z+d|0)+(f^e&(c^f))|0)+ -1502002290|0,17)+e|0;c=He(((f+y|0)+(c^b&(c^e))|0)+1236535329|0,22)+b|0;d=He((A+((b^c)&e^b)|0)+ -165796510|0,5)+c|0;f=b+w|0;b=He(((e+v|0)+(c^b&(c^d))|0)+ -1069501632|0,9)+d|0;e=He((f+(d^c&(b^d))|0)+643717713|0,14)+b|0;c=He(((c+j|0)+(b^d&(b^e))|0)+ -373897302|0,20)+e|0;d=He(((d+g|0)+((e^c)&b^e)|0)+ -701558691|0,5)+c|0;b=He(((b+x|0)+(c^e&(c^d))|0)+38016083|0,9)+d|0;e=He(((e+y|0)+(d^c&(b^d))|0)+ -660478335|0,14)+b|0;c=He(((c+l|0)+(b^d&(b^e))|0)+ -405537848|0,20)+e|0;d=He(((d+n|0)+((e^c)&b^e)|0)+568446438|0,5)+c|0;f=e+s|0;e=He(((b+z|0)+(c^e&(c^d))|0)+ -1019803690|0,9)+d|0;f=He((f+(d^(e^d)&c)|0)+ -187363961|0,14)+e|0;c=He(((c+i|0)+(e^(e^f)&d)|0)+1163531501|0,20)+f|0;b=He(((d+p|0)+((f^c)&e^f)|0)+ -1444681467|0,5)+c|0;d=He(((e+t|0)+(c^f&(b^c))|0)+ -51403784|0,9)+b|0;e=He(((f+u|0)+(b^c&(d^b))|0)+1735328473|0,14)+d|0;A=d+i|0;f=d^e;c=He(((c+m|0)+(d^f&b)|0)+ -1926607734|0,20)+e|0;d=He(((b+g|0)+(c^f)|0)+ -378558|0,4)+c|0;b=He((A+(c^e^d)|0)+ -2022574463|0,11)+d|0;e=He(((e+w|0)+(b^(c^d))|0)+1839030562|0,16)+b|0;c=He(((c+z|0)+(e^(b^d))|0)+ -35309556|0,23)+e|0;d=He(((d+q|0)+(c^(b^e))|0)+ -1530992060|0,4)+c|0;b=He(((b+l|0)+(d^(c^e))|0)+1272893353|0,11)+d|0;e=He(((e+u|0)+(b^(c^d))|0)+ -155497632|0,16)+b|0;c=He(((c+x|0)+(e^(b^d))|0)+ -1094730640|0,23)+e|0;d=He(((d+p|0)+(c^(b^e))|0)+681279174|0,4)+c|0;b=He(((b+j|0)+(d^(c^e))|0)+ -358537222|0,11)+d|0;e=He(((e+s|0)+(b^(c^d))|0)+ -722521979|0,16)+b|0;c=He(((c+v|0)+(e^(b^d))|0)+76029189|0,23)+e|0;d=He(((d+n|0)+(c^(b^e))|0)+ -640364487|0,4)+c|0;b=He(((b+m|0)+(d^(c^e))|0)+ -421815835|0,11)+d|0;f=d+j|0;j=b^d;d=He(((e+y|0)+(b^(c^d))|0)+530742520|0,16)+b|0;e=He(((c+t|0)+(j^d)|0)+ -995338651|0,23)+d|0;c=He((f+((e|b^-1)^d)|0)+ -198630844|0,6)+e|0;f=e+g|0;g=d+z|0;d=He(((b+u|0)+(e^(c|d^-1))|0)+1126891415|0,10)+c|0;e=He((g+(c^(d|e^-1))|0)+ -1416354905|0,15)+d|0;b=He((f+((e|c^-1)^d)|0)+ -57434055|0,21)+e|0;f=e+x|0;g=d+s|0;d=He(((c+m|0)+(e^(b|d^-1))|0)+1700485571|0,6)+b|0;e=He((g+(b^(d|e^-1))|0)+ -1894986606|0,10)+d|0;c=He((f+((e|b^-1)^d)|0)+ -1051523|0,15)+e|0;f=e+y|0;i=d+i|0;d=He(((b+q|0)+(e^(c|d^-1))|0)+ -2054922799|0,21)+c|0;e=He((i+(c^(d|e^-1))|0)+1873313359|0,6)+d|0;b=He((f+((e|c^-1)^d)|0)+ -30611744|0,10)+e|0;c=He(((c+v|0)+(e^(b|d^-1))|0)+ -1560198380|0,15)+b|0;d=He(((d+p|0)+(b^(c|e^-1))|0)+1309151649|0,21)+c|0;e=He(((e+l|0)+((d|b^-1)^c)|0)+ -145523070|0,6)+d|0;o[a>>2]=e+B;b=He(((b+w|0)+(d^(e|c^-1))|0)+ -1120210379|0,10)+e|0;o[a+12>>2]=b+r;c=He(((c+t|0)+(e^(b|d^-1))|0)+718787259|0,15)+b|0;o[a+8>>2]=c+k;C=a,D=He(((d+n|0)+(b^(c|e^-1))|0)+ -343485551|0,21)+(c+h|0)|0,o[C+4>>2]=D}function Ab(a,b,c,d,e,f,g,h,i,j,k,m,n){var p=0,q=0,s=0,t=0,v=0,w=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;G=e+f|0;p=je(j,G,f);D=p>>>0>i>>>0?i:p;l[o[a+7220>>2]](b,c,e,f,D,p,k);a:{if(!m){break a}k=0;i=0;if((p|0)>=0){i=1<<p;B=i>>>0>1?i:1;E=G>>>p|0;while(1){A=0;j=s;y=0;t=(z<<2)+d|0;b:{c:{q=z?0:f;w=E-q|0;if(!w){break c}while(1){v=o[(j<<2)+b>>2];A=v>>31^v|A;j=j+1|0;y=y+1|0;if((w|0)!=(y|0)){continue}break}s=(s+E|0)-q|0;if(!A){break c}j=(x(A)^31)+2|0;break b}j=1}o[t>>2]=j;z=z+1|0;if((B|0)!=(z|0)){continue}break}}if((p|0)<=(D|0)){break a}b=p;while(1){b=b+ -1|0;j=0;while(1){s=(k<<2)+d|0;v=o[s>>2];s=o[s+4>>2];o[(i<<2)+d>>2]=v>>>0>s>>>0?v:s;i=i+1|0;k=k+2|0;j=j+1|0;if(!(j>>>b)){continue}break}if((b|0)>(D|0)){continue}break}}d:{if((p|0)<(D|0)){z=0;o[n+4>>2]=0;A=0;b=6;break d}H=o[1407];S=H+(u(g+1|0,e)-(e>>>1|0)|0)|0;N=h+ -1|0;O=o[1409]+o[1408]|0;E=o[1406]+o[1405]|0;T=g+ -1|0;z=0;A=0;while(1){e:{C=p;P=!A;i=u(P,12)+a|0;b=i+11724|0;ab(b,p>>>0>6?p:6);Q=(I<<2)+d|0;F=(I<<3)+c|0;R=o[i+11728>>2];J=o[b>>2];f:{if(p){K=G>>>C|0;if(K>>>0<=f>>>0){break e}y=0;L=0;j=E;if(!m){while(1){v=K-(y?0:f)|0;b=F+(y<<3)|0;q=o[b+4>>2];t=o[b>>2];g:{if(!q&t>>>0>=268435457|q>>>0>0){b=v;k=0;i=0;h:{if((q|0)==16777216&t>>>0>0|q>>>0>16777216){s=b;p=0;break h}s=b;p=0;w=b>>>25|0;B=b<<7;if((q|0)==(w|0)&B>>>0>=t>>>0|w>>>0>q>>>0){break h}while(1){i=i+8|0;p=k;w=p<<15|b>>>17;B=b<<15;k=p<<8|b>>>24;s=b<<8;b=s;p=k;if((q|0)==(w|0)&B>>>0<t>>>0|w>>>0<q>>>0){continue}break}}if((p|0)==(q|0)&s>>>0>=t>>>0|p>>>0>q>>>0){break g}while(1){i=i+1|0;b=s;w=p<<1|b>>>31;s=b<<1;b=s;p=w;if((q|0)==(p|0)&b>>>0<t>>>0|p>>>0<q>>>0){continue}break}break g}i=0;k=v;b=t;if(k<<3>>>0<b>>>0){while(1){i=i+4|0;p=k<<7;k=k<<4;if(p>>>0<b>>>0){continue}break}}if(k>>>0>=b>>>0){break g}while(1){i=i+1|0;k=k<<1;if(k>>>0<b>>>0){continue}break}}k=i>>>0<h>>>0?i:N;b=k+ -1|0;p=b&31;b=((H-(v>>>1|0)|0)+u(v,k+1|0)|0)+(k?32<=(b&63)>>>0?q>>>p|0:((1<<p)-1&q)<<32-p|t>>>p:t<<1)|0;L=(b|0)==-1?L:k;o[J+(y<<2)>>2]=L;j=b+j|0;y=y+1|0;if(!(y>>>C)){continue}break f}}while(1){v=K-(y?0:f)|0;b=F+(y<<3)|0;q=o[b+4>>2];t=o[b>>2];i:{j:{if(!q&t>>>0>=268435457|q>>>0>0){b=v;k=0;i=0;if((q|0)==16777216&t>>>0>0|q>>>0>16777216){break j}s=b;p=0;w=b>>>25|0;B=b<<7;if((q|0)==(w|0)&B>>>0>=t>>>0|w>>>0>q>>>0){break j}while(1){i=i+8|0;b=p;k=s;w=b<<15|k>>>17;B=k<<15;s=b<<8;b=k;k=s|b>>>24;b=b<<8;s=b;p=k;if((q|0)==(w|0)&B>>>0<t>>>0|w>>>0<q>>>0){continue}break}break j}i=0;k=v;b=t;if(k<<3>>>0<b>>>0){while(1){i=i+4|0;p=k<<7;k=k<<4;if(p>>>0<b>>>0){continue}break}}if(k>>>0>=b>>>0){break i}while(1){i=i+1|0;k=k<<1;if(k>>>0<b>>>0){continue}break}break i}if((k|0)==(q|0)&b>>>0>=t>>>0|k>>>0>q>>>0){break i}while(1){i=i+1|0;w=k<<1|b>>>31;b=b<<1;k=w;if((q|0)==(k|0)&b>>>0<t>>>0|k>>>0<q>>>0){continue}break}}p=y<<2;b=o[p+Q>>2];w=b;k=u(b,v)+O|0;s=i>>>0<h>>>0?i:N;i=(H-(v>>>1|0)|0)+u(v,s+1|0)|0;b=s+ -1|0;v=b&31;b=i+(s?32<=(b&63)>>>0?q>>>v|0:((1<<v)-1&q)<<32-v|t>>>v:t<<1)|0;i=k>>>0>b>>>0;o[p+R>>2]=i?0:w;o[p+J>>2]=i?s:0;j=(i?b:k)+j|0;y=y+1|0;if(!(y>>>C)){continue}break}break f}k=o[F+4>>2];b=T;p=b&31;j=o[F>>2];i=(g?32<=(b&63)>>>0?k>>>p|0:((1<<p)-1&k)<<32-p|j>>>p:j<<1)+S|0;k=(i|0)==-1?0:g;if(m){j=o[Q>>2];b=u(j,e)+O|0;p=b>>>0>i>>>0;o[R>>2]=p?0:j;k=p?k:0;i=p?i:b}o[J>>2]=k;j=i+E|0}b=M+ -1>>>0<j>>>0;z=b?z:C;A=b?A:P;M=b?M:j;p=C+ -1|0;I=(1<<C)+I|0;if((C|0)>(D|0)){continue}}break}o[n+4>>2]=z;b=z>>>0>6?z:6}d=o[n+8>>2];ab(d,b);b=u(A,12)+a|0;c=1<<z;a=c<<2;ca(o[d>>2],o[b+11724>>2],a);if(m){ca(o[d+4>>2],o[b+11728>>2],a)}c=c>>>0>1?c:1;b=o[1410];a=o[d>>2];i=0;k:{while(1){if(r[a+(i<<2)>>2]<b>>>0){i=i+1|0;if((c|0)!=(i|0)){continue}break k}break}o[n>>2]=1}return M}function _a(a,b){var c=0,d=0,e=0,f=0,g=v(0),h=v(0),i=0,j=v(0),k=0,l=0;d=o[a>>2];a:{if(o[d>>2]!=1){break a}o[d+40>>2]=0;while(1){b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{l:{m:{n:{o:{k=Ha(b,59);p:{if(k){e=k-b|0;break p}e=Ga(b)}l=(e|0)!=8;if(!l){if(ha(10584,b,8)){break o}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=0;break b}q:{switch(e+ -6|0){case 1:break l;case 0:break m;case 20:break n;case 7:break q;default:break k}}f=1;if(ha(10593,b,13)){break j}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=1;break b}f=0;if(ha(10607,b,8)){break j}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=2;break b}f=0;if(ha(10616,b,26)){break j}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=3;break b}if(ha(10643,b,6)){break b}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=4;break b}if(ha(10650,b,7)){break i}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=5;break b}f=0;if(e>>>0<8){break h}}if(ha(10658,b,6)){break g}h=v(oa(b+6|0));if(h>v(0)^1|h<=v(.5)^1){break b}b=o[a>>2];s[((o[b+40>>2]<<4)+b|0)+48>>2]=h;b=o[a>>2];e=o[b+40>>2];o[b+40>>2]=e+1;o[(b+(e<<4)|0)+44>>2]=6;break b}if(ha(10665,b,7)){break f}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=7;break b}r:{switch(e+ -4|0){case 0:break r;case 1:break d;default:break b}}if(ha(10673,b,4)){break b}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=8;break b}if(!f){break e}if(ha(10678,b,13)){break e}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=9;break b}if(ha(10692,b,7)){break b}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=10;break b}s:{if((e|0)!=9){break s}if(ha(10700,b,9)){break s}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=11;break b}if(!l){if(!ha(10710,b,8)){o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=12;break b}if(ha(10719,b,6)){break b}break c}if(!ha(10719,b,6)){break c}if(e>>>0<16){break b}if(!ha(10726,b,14)){i=oa(b+14|0);t:{if(w(i)<2147483648){e=~~i;break t}e=-2147483648}c=Ha(b,47);g=v(.10000000149011612);u:{if(!c){break u}d=c+1|0;g=v(.9900000095367432);if(!(v(oa(d))<v(.9900000095367432))){break u}g=v(oa(d))}b=Ha(c?c+1|0:b,47);h=v(.20000000298023224);v:{if(!b){break v}h=v(oa(b+1|0))}b=o[a>>2];f=o[b+40>>2];if((e|0)<=1){s[((f<<4)+b|0)+48>>2]=h;b=o[a>>2];e=o[b+40>>2];o[b+40>>2]=e+1;o[(b+(e<<4)|0)+44>>2]=13;break b}if(e+f>>>0>31){break b}j=v(v(v(1)/v(v(1)-g))+v(-1));g=v(j+v(e|0));c=0;while(1){s[((f<<4)+b|0)+48>>2]=h;b=o[a>>2];s[((o[b+40>>2]<<4)+b|0)+52>>2]=v(c|0)/g;b=o[a>>2];c=c+1|0;s[((o[b+40>>2]<<4)+b|0)+56>>2]=v(j+v(c|0))/g;b=o[a>>2];d=o[b+40>>2];f=d+1|0;o[b+40>>2]=f;o[((d<<4)+b|0)+44>>2]=14;if((c|0)!=(e|0)){continue}break}break b}if(e>>>0<17){break b}if(ha(10741,b,15)){break b}i=oa(b+15|0);w:{if(w(i)<2147483648){e=~~i;break w}e=-2147483648}h=v(.20000000298023224);c=Ha(b,47);g=v(.20000000298023224);x:{if(!c){break x}d=c+1|0;g=v(.9900000095367432);if(!(v(oa(d))<v(.9900000095367432))){break x}g=v(oa(d))}b=Ha(c?c+1|0:b,47);if(b){h=v(oa(b+1|0))}b=o[a>>2];f=o[b+40>>2];if((e|0)<=1){s[((f<<4)+b|0)+48>>2]=h;b=o[a>>2];e=o[b+40>>2];o[b+40>>2]=e+1;o[(b+(e<<4)|0)+44>>2]=13;break b}if(e+f>>>0>31){break b}j=v(v(v(1)/v(v(1)-g))+v(-1));g=v(j+v(e|0));c=0;while(1){s[((f<<4)+b|0)+48>>2]=h;b=o[a>>2];s[((o[b+40>>2]<<4)+b|0)+52>>2]=v(c|0)/g;b=o[a>>2];c=c+1|0;s[((o[b+40>>2]<<4)+b|0)+56>>2]=v(j+v(c|0))/g;b=o[a>>2];d=o[b+40>>2];f=d+1|0;o[b+40>>2]=f;o[((d<<4)+b|0)+44>>2]=15;if((c|0)!=(e|0)){continue}break}break b}if(ha(10757,b,5)){break b}o[d+40>>2]=c+1;o[((c<<4)+d|0)+44>>2]=16;break b}h=v(oa(b+6|0));if(h>=v(0)^1|h<=v(1)^1){break b}b=o[a>>2];s[((o[b+40>>2]<<4)+b|0)+48>>2]=h;b=o[a>>2];e=o[b+40>>2];o[b+40>>2]=e+1;o[(b+(e<<4)|0)+44>>2]=13}d=o[a>>2];c=o[d+40>>2];if(k){b=k+1|0;if((c|0)!=32){continue}}break}f=1;if(c){break a}o[d+40>>2]=1;o[d+44>>2]=13;o[d+48>>2]=1056964608}return f}function zd(){var a=0,b=0,c=0,d=0;b=qa(1,8);if(!b){return 0}a=qa(1,1032);o[b>>2]=a;a:{if(!a){break a}d=qa(1,11856);o[b+4>>2]=d;if(!d){X(a);break a}a=qa(1,20);d=o[b+4>>2];o[d+6856>>2]=a;if(!a){X(d);X(o[b>>2]);break a}o[d+7296>>2]=0;a=o[b>>2];o[a+44>>2]=13;o[a+48>>2]=1056964608;o[a+36>>2]=0;o[a+40>>2]=1;o[a+28>>2]=16;o[a+32>>2]=44100;o[a+20>>2]=0;o[a+24>>2]=2;o[a+12>>2]=1;o[a+16>>2]=0;o[a+4>>2]=0;o[a+8>>2]=1;a=o[b>>2];o[a+592>>2]=0;o[a+596>>2]=0;o[a+556>>2]=0;o[a+560>>2]=0;o[a+564>>2]=0;o[a+568>>2]=0;o[a+572>>2]=0;o[a+576>>2]=0;o[a+580>>2]=0;o[a+584>>2]=0;o[a+600>>2]=0;o[a+604>>2]=0;d=o[b+4>>2];c=d;o[c+7248>>2]=0;o[c+7252>>2]=0;o[c+7048>>2]=0;c=c+7256|0;o[c>>2]=0;o[c+4>>2]=0;c=d+7264|0;o[c>>2]=0;o[c+4>>2]=0;c=d+7272|0;o[c>>2]=0;o[c+4>>2]=0;c=d+7280|0;o[c>>2]=0;o[c+4>>2]=0;o[d+7288>>2]=0;o[a+632>>2]=0;o[a+636>>2]=0;a=o[b>>2];b:{if(o[a>>2]!=1){break b}o[a+16>>2]=1;o[a+20>>2]=0;_a(b,10777);a=o[b>>2];if(o[a>>2]!=1){break b}o[a+576>>2]=0;o[a+580>>2]=5;o[a+564>>2]=0;o[a+568>>2]=0;o[a+556>>2]=8;o[a+560>>2]=0}a=o[b+4>>2];o[a+11848>>2]=0;o[a+6176>>2]=a+336;a=o[b+4>>2];o[a+6180>>2]=a+628;a=o[b+4>>2];o[a+6184>>2]=a+920;a=o[b+4>>2];o[a+6188>>2]=a+1212;a=o[b+4>>2];o[a+6192>>2]=a+1504;a=o[b+4>>2];o[a+6196>>2]=a+1796;a=o[b+4>>2];o[a+6200>>2]=a+2088;a=o[b+4>>2];o[a+6204>>2]=a+2380;a=o[b+4>>2];o[a+6208>>2]=a+2672;a=o[b+4>>2];o[a+6212>>2]=a+2964;a=o[b+4>>2];o[a+6216>>2]=a+3256;a=o[b+4>>2];o[a+6220>>2]=a+3548;a=o[b+4>>2];o[a+6224>>2]=a+3840;a=o[b+4>>2];o[a+6228>>2]=a+4132;a=o[b+4>>2];o[a+6232>>2]=a+4424;a=o[b+4>>2];o[a+6236>>2]=a+4716;a=o[b+4>>2];o[a+6240>>2]=a+5008;a=o[b+4>>2];o[a+6244>>2]=a+5300;a=o[b+4>>2];o[a+6248>>2]=a+5592;a=o[b+4>>2];o[a+6252>>2]=a+5884;a=o[b+4>>2];o[a+6640>>2]=a+6256;a=o[b+4>>2];o[a+6644>>2]=a+6268;a=o[b+4>>2];o[a+6648>>2]=a+6280;a=o[b+4>>2];o[a+6652>>2]=a+6292;a=o[b+4>>2];o[a+6656>>2]=a+6304;a=o[b+4>>2];o[a+6660>>2]=a+6316;a=o[b+4>>2];o[a+6664>>2]=a+6328;a=o[b+4>>2];o[a+6668>>2]=a+6340;a=o[b+4>>2];o[a+6672>>2]=a+6352;a=o[b+4>>2];o[a+6676>>2]=a+6364;a=o[b+4>>2];o[a+6680>>2]=a+6376;a=o[b+4>>2];o[a+6684>>2]=a+6388;a=o[b+4>>2];o[a+6688>>2]=a+6400;a=o[b+4>>2];o[a+6692>>2]=a+6412;a=o[b+4>>2];o[a+6696>>2]=a+6424;a=o[b+4>>2];o[a+6700>>2]=a+6436;a=o[b+4>>2];o[a+6704>>2]=a+6448;a=o[b+4>>2];o[a+6708>>2]=a+6460;a=o[b+4>>2];o[a+6712>>2]=a+6472;a=o[b+4>>2];o[a+6716>>2]=a+6484;a=o[b+4>>2]+6256|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6268|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6280|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6292|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6304|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6316|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6328|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6340|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6352|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6364|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6376|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6388|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6400|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6412|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6424|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6436|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6448|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6460|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6472|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+6484|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+11724|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;a=o[b+4>>2]+11736|0;o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0;o[o[b>>2]>>2]=1;return b|0}X(b);return 0}function ja(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0;l=N-112|0;N=l;n=h;m=i&2147483647;k=c+ -1|0;j=b+ -1|0;if((j|0)!=-1){k=k+1|0}p=j;s=(j|0)==-1&(k|0)==-1;q=e&2147483647;j=q;r=d;k=(c|0)==(k|0)&p>>>0<b>>>0|k>>>0<c>>>0;p=d+k|0;if(p>>>0<k>>>0){j=j+1|0}k=p+ -1|0;j=j+ -1|0;j=(k|0)!=-1?j+1|0:j;a:{b:{if(!((k|0)==-1&(j|0)==2147418111?s:j>>>0>2147418111)){k=g+ -1|0;j=f+ -1|0;if((j|0)!=-1){k=k+1|0}p=j;s=(j|0)!=-1|(k|0)!=-1;j=m;k=(g|0)==(k|0)&p>>>0<f>>>0|k>>>0<g>>>0;p=k+n|0;if(p>>>0<k>>>0){j=j+1|0}k=p+ -1|0;j=j+ -1|0;j=(k|0)!=-1?j+1|0:j;if((k|0)==-1&(j|0)==2147418111?s:(j|0)==2147418111&(k|0)!=-1|j>>>0<2147418111){break b}}if(!(!r&(q|0)==2147418112?!(b|c):(q|0)==2147418112&r>>>0<0|q>>>0<2147418112)){h=d;i=e|32768;f=b;g=c;break a}if(!(!n&(m|0)==2147418112?!(f|g):(m|0)==2147418112&n>>>0<0|m>>>0<2147418112)){i=i|32768;break a}if(!(b|r|(q^2147418112|c))){j=d;d=!(b^f|d^h|(c^g|e^i^-2147483648));h=d?0:j;i=d?2147450880:e;f=d?0:b;g=d?0:c;break a}if(!(f|n|(m^2147418112|g))){break a}if(!(b|r|(c|q))){if(f|n|(g|m)){break a}f=b&f;g=c&g;h=d&h;i=e&i;break a}if(f|n|(g|m)){break b}f=b;g=c;h=d;i=e;break a}j=(n|0)==(r|0)&(m|0)==(q|0)?(c|0)==(g|0)&f>>>0>b>>>0|g>>>0>c>>>0:(m|0)==(q|0)&n>>>0>r>>>0|m>>>0>q>>>0;q=j?f:b;k=j?g:c;n=j?i:e;r=n;p=j?h:d;n=n&65535;e=j?e:i;t=e;d=j?d:h;s=e>>>16&32767;m=r>>>16&32767;if(!m){e=!(n|p);h=e<<6;i=x(e?q:p)+32|0;e=x(e?k:n);e=h+((e|0)==32?i:e)|0;ia(l+96|0,q,k,p,n,e+ -15|0);p=o[l+104>>2];n=o[l+108>>2];q=o[l+96>>2];m=16-e|0;k=o[l+100>>2]}f=j?b:f;g=j?c:g;b=d;c=t&65535;if(s){b=c}else{h=b;d=!(b|c);e=d<<6;i=x(d?f:b)+32|0;b=x(d?g:c);b=e+((b|0)==32?i:b)|0;ia(l+80|0,f,g,h,c,b+ -15|0);s=16-b|0;f=o[l+80>>2];g=o[l+84>>2];d=o[l+88>>2];b=o[l+92>>2]}c=d;j=b<<3|c>>>29;h=c<<3|g>>>29;i=j|524288;b=p;d=n<<3|b>>>29;e=b<<3|k>>>29;p=d;n=r^t;b=f;j=g<<3|b>>>29;b=b<<3;c=j;f=m-s|0;d=b;c:{if(!f){break c}if(f>>>0>127){h=0;i=0;j=0;d=1;break c}ia(l- -64|0,b,c,h,i,128-f|0);Ja(l+48|0,b,c,h,i,f);h=o[l+56>>2];i=o[l+60>>2];j=o[l+52>>2];d=o[l+48>>2]|((o[l+64>>2]|o[l+72>>2])!=0|(o[l+68>>2]|o[l+76>>2])!=0)}g=j;p=p|524288;b=q;j=k<<3|b>>>29;c=b<<3;d:{if((n|0)<-1?1:(n|0)<=-1?1:0){n=d;b=c-d|0;q=e-h|0;d=(g|0)==(j|0)&c>>>0<d>>>0|j>>>0<g>>>0;f=q-d|0;c=j-((c>>>0<n>>>0)+g|0)|0;g=(p-((e>>>0<h>>>0)+i|0)|0)-(q>>>0<d>>>0)|0;if(!(b|f|(c|g))){f=0;g=0;h=0;i=0;break a}if(g>>>0>524287){break d}h=b;d=!(f|g);e=d<<6;i=x(d?b:f)+32|0;b=x(d?c:g);b=e+((b|0)==32?i:b)|0;b=b+ -12|0;ia(l+32|0,h,c,f,g,b);m=m-b|0;f=o[l+40>>2];g=o[l+44>>2];b=o[l+32>>2];c=o[l+36>>2];break d}j=g+j|0;b=d;c=b+c|0;if(c>>>0<b>>>0){j=j+1|0}b=c;c=j;g=(g|0)==(c|0)&b>>>0<d>>>0|c>>>0<g>>>0;k=i+p|0;d=e+h|0;if(d>>>0<e>>>0){k=k+1|0}f=d;e=g+d|0;d=k;d=e>>>0<f>>>0?d+1|0:d;f=e;g=d;if(!(d&1048576)){break d}b=b&1|((c&1)<<31|b>>>1);c=f<<31|c>>>1;m=m+1|0;f=(g&1)<<31|f>>>1;g=g>>>1|0}h=0;k=r&-2147483648;if((m|0)>=32767){i=k|2147418112;f=0;g=0;break a}e=0;e:{if((m|0)>0){e=m;break e}ia(l+16|0,b,c,f,g,m+127|0);Ja(l,b,c,f,g,1-m|0);b=o[l>>2]|((o[l+16>>2]|o[l+24>>2])!=0|(o[l+20>>2]|o[l+28>>2])!=0);c=o[l+4>>2];f=o[l+8>>2];g=o[l+12>>2]}m=(c&7)<<29|b>>>3;d=f<<29|c>>>3;j=d;n=b&7;b=n>>>0>4;c=b+m|0;if(c>>>0<b>>>0){j=j+1|0}i=c;b=c;c=j;b=(d|0)==(c|0)&b>>>0<m>>>0|c>>>0<d>>>0;d=h|((g&7)<<29|f>>>3);j=k|g>>>3&65535|e<<16;b=d+b|0;if(b>>>0<d>>>0){j=j+1|0}d=b;e=(n|0)==4;b=e?i&1:0;k=j;h=d;e=0;d=e+c|0;f=b+i|0;if(f>>>0<b>>>0){d=d+1|0}c=f;g=d;b=(e|0)==(d|0)&c>>>0<b>>>0|d>>>0<e>>>0;c=h+b|0;if(c>>>0<b>>>0){k=k+1|0}h=c;i=k}o[a>>2]=f;o[a+4>>2]=g;o[a+8>>2]=h;o[a+12>>2]=i;N=l+112|0}function Nc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,v=0,x=0,y=0,z=0;h=N-560|0;N=h;f=c;c=(c+ -3|0)/24|0;r=(c|0)>0?c:0;k=f+u(r,-24)|0;m=o[1901];i=d+ -1|0;if((m+i|0)>=0){f=d+m|0;c=r-i|0;while(1){t[(h+320|0)+(g<<3)>>3]=(c|0)<0?0:+o[(c<<2)+7616>>2];c=c+1|0;g=g+1|0;if((f|0)!=(g|0)){continue}break}}n=k+ -24|0;f=0;g=(m|0)>0?m:0;l=(d|0)<1;while(1){a:{if(l){e=0;break a}j=f+i|0;c=0;e=0;while(1){e=e+t[(c<<3)+a>>3]*t[(h+320|0)+(j-c<<3)>>3];c=c+1|0;if((d|0)!=(c|0)){continue}break}}t[(f<<3)+h>>3]=e;c=(f|0)==(g|0);f=f+1|0;if(!c){continue}break}y=47-k|0;s=48-k|0;z=k+ -25|0;f=m;b:{while(1){e=t[(f<<3)+h>>3];c=0;g=f;j=(f|0)<1;if(!j){while(1){l=(h+480|0)+(c<<2)|0;p=e;e=e*5.960464477539063e-8;c:{if(w(e)<2147483648){i=~~e;break c}i=-2147483648}e=+(i|0);p=p+e*-16777216;d:{if(w(p)<2147483648){i=~~p;break d}i=-2147483648}o[l>>2]=i;g=g+ -1|0;e=t[(g<<3)+h>>3]+e;c=c+1|0;if((f|0)!=(c|0)){continue}break}}e=ua(e,n);e=e+A(e*.125)*-8;e:{if(w(e)<2147483648){l=~~e;break e}l=-2147483648}e=e- +(l|0);f:{g:{h:{v=(n|0)<1;i:{if(!v){g=(f<<2)+h|0;i=o[g+476>>2];c=i>>s;q=g;g=i-(c<<s)|0;o[q+476>>2]=g;l=c+l|0;i=g>>y;break i}if(n){break h}i=o[((f<<2)+h|0)+476>>2]>>23}if((i|0)<1){break f}break g}i=2;if(!!(e>=.5)){break g}i=0;break f}c=0;g=0;if(!j){while(1){q=(h+480|0)+(c<<2)|0;x=o[q>>2];j=16777215;j:{k:{if(g){break k}j=16777216;if(x){break k}g=0;break j}o[q>>2]=j-x;g=1}c=c+1|0;if((f|0)!=(c|0)){continue}break}}l:{if(v){break l}m:{switch(z|0){case 0:c=(f<<2)+h|0;o[c+476>>2]=o[c+476>>2]&8388607;break l;case 1:break m;default:break l}}c=(f<<2)+h|0;o[c+476>>2]=o[c+476>>2]&4194303}l=l+1|0;if((i|0)!=2){break f}e=1-e;i=2;if(!g){break f}e=e-ua(1,n)}if(e==0){g=0;n:{c=f;if((c|0)<=(m|0)){break n}while(1){c=c+ -1|0;g=o[(h+480|0)+(c<<2)>>2]|g;if((c|0)>(m|0)){continue}break}if(!g){break n}k=n;while(1){k=k+ -24|0;f=f+ -1|0;if(!o[(h+480|0)+(f<<2)>>2]){continue}break}break b}c=1;while(1){g=c;c=c+1|0;if(!o[(h+480|0)+(m-g<<2)>>2]){continue}break}g=f+g|0;while(1){i=d+f|0;f=f+1|0;t[(h+320|0)+(i<<3)>>3]=o[(r+f<<2)+7616>>2];c=0;e=0;if((d|0)>=1){while(1){e=e+t[(c<<3)+a>>3]*t[(h+320|0)+(i-c<<3)>>3];c=c+1|0;if((d|0)!=(c|0)){continue}break}}t[(f<<3)+h>>3]=e;if((f|0)<(g|0)){continue}break}f=g;continue}break}e=ua(e,0-n|0);o:{if(!!(e>=16777216)){d=(h+480|0)+(f<<2)|0;p=e;e=e*5.960464477539063e-8;p:{if(w(e)<2147483648){c=~~e;break p}c=-2147483648}e=p+ +(c|0)*-16777216;q:{if(w(e)<2147483648){a=~~e;break q}a=-2147483648}o[d>>2]=a;f=f+1|0;break o}if(w(e)<2147483648){c=~~e}else{c=-2147483648}k=n}o[(h+480|0)+(f<<2)>>2]=c}e=ua(1,k);r:{if((f|0)<=-1){break r}c=f;while(1){t[(c<<3)+h>>3]=e*+o[(h+480|0)+(c<<2)>>2];e=e*5.960464477539063e-8;a=(c|0)>0;c=c+ -1|0;if(a){continue}break}j=0;if((f|0)<0){break r}a=(m|0)>0?m:0;g=f;while(1){d=a>>>0<j>>>0?a:j;k=f-g|0;c=0;e=0;while(1){e=e+t[(c<<3)+10384>>3]*t[(c+g<<3)+h>>3];n=(c|0)!=(d|0);c=c+1|0;if(n){continue}break}t[(h+160|0)+(k<<3)>>3]=e;g=g+ -1|0;c=(f|0)!=(j|0);j=j+1|0;if(c){continue}break}}e=0;if((f|0)>=0){c=f;while(1){e=e+t[(h+160|0)+(c<<3)>>3];a=(c|0)>0;c=c+ -1|0;if(a){continue}break}}t[b>>3]=i?-e:e;e=t[h+160>>3]-e;c=1;if((f|0)>=1){while(1){e=e+t[(h+160|0)+(c<<3)>>3];a=(c|0)!=(f|0);c=c+1|0;if(a){continue}break}}t[b+8>>3]=i?-e:e;N=h+560|0;return l&7}function X(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(!a){break a}d=a+ -8|0;c=o[a+ -4>>2];a=c&-8;f=d+a|0;b:{if(c&1){break b}if(!(c&3)){break a}c=o[d>>2];d=d-c|0;if(d>>>0<r[2901]){break a}a=a+c|0;if(o[2902]!=(d|0)){if(c>>>0<=255){e=o[d+8>>2];c=c>>>3|0;b=o[d+12>>2];if((b|0)==(e|0)){i=11588,j=o[2897]&He(-2,c),o[i>>2]=j;break b}o[e+12>>2]=b;o[b+8>>2]=e;break b}h=o[d+24>>2];c=o[d+12>>2];c:{if((d|0)!=(c|0)){b=o[d+8>>2];o[b+12>>2]=c;o[c+8>>2]=b;break c}d:{e=d+20|0;b=o[e>>2];if(b){break d}e=d+16|0;b=o[e>>2];if(b){break d}c=0;break c}while(1){g=e;c=b;e=c+20|0;b=o[e>>2];if(b){continue}e=c+16|0;b=o[c+16>>2];if(b){continue}break}o[g>>2]=0}if(!h){break b}e=o[d+28>>2];b=(e<<2)+11892|0;e:{if(o[b>>2]==(d|0)){o[b>>2]=c;if(c){break e}i=11592,j=o[2898]&He(-2,e),o[i>>2]=j;break b}o[h+(o[h+16>>2]==(d|0)?16:20)>>2]=c;if(!c){break b}}o[c+24>>2]=h;b=o[d+16>>2];if(b){o[c+16>>2]=b;o[b+24>>2]=c}b=o[d+20>>2];if(!b){break b}o[c+20>>2]=b;o[b+24>>2]=c;break b}c=o[f+4>>2];if((c&3)!=3){break b}o[2899]=a;o[f+4>>2]=c&-2;o[d+4>>2]=a|1;o[a+d>>2]=a;return}if(f>>>0<=d>>>0){break a}c=o[f+4>>2];if(!(c&1)){break a}f:{if(!(c&2)){if(o[2903]==(f|0)){o[2903]=d;a=o[2900]+a|0;o[2900]=a;o[d+4>>2]=a|1;if(o[2902]!=(d|0)){break a}o[2899]=0;o[2902]=0;return}if(o[2902]==(f|0)){o[2902]=d;a=o[2899]+a|0;o[2899]=a;o[d+4>>2]=a|1;o[a+d>>2]=a;return}a=(c&-8)+a|0;g:{if(c>>>0<=255){b=o[f+8>>2];c=c>>>3|0;e=o[f+12>>2];if((b|0)==(e|0)){i=11588,j=o[2897]&He(-2,c),o[i>>2]=j;break g}o[b+12>>2]=e;o[e+8>>2]=b;break g}h=o[f+24>>2];c=o[f+12>>2];h:{if((f|0)!=(c|0)){b=o[f+8>>2];o[b+12>>2]=c;o[c+8>>2]=b;break h}i:{e=f+20|0;b=o[e>>2];if(b){break i}e=f+16|0;b=o[e>>2];if(b){break i}c=0;break h}while(1){g=e;c=b;e=c+20|0;b=o[e>>2];if(b){continue}e=c+16|0;b=o[c+16>>2];if(b){continue}break}o[g>>2]=0}if(!h){break g}e=o[f+28>>2];b=(e<<2)+11892|0;j:{if(o[b>>2]==(f|0)){o[b>>2]=c;if(c){break j}i=11592,j=o[2898]&He(-2,e),o[i>>2]=j;break g}o[h+(o[h+16>>2]==(f|0)?16:20)>>2]=c;if(!c){break g}}o[c+24>>2]=h;b=o[f+16>>2];if(b){o[c+16>>2]=b;o[b+24>>2]=c}b=o[f+20>>2];if(!b){break g}o[c+20>>2]=b;o[b+24>>2]=c}o[d+4>>2]=a|1;o[a+d>>2]=a;if(o[2902]!=(d|0)){break f}o[2899]=a;return}o[f+4>>2]=c&-2;o[d+4>>2]=a|1;o[a+d>>2]=a}if(a>>>0<=255){a=a>>>3|0;c=(a<<3)+11628|0;b=o[2897];a=1<<a;k:{if(!(b&a)){o[2897]=a|b;a=c;break k}a=o[c+8>>2]}o[c+8>>2]=d;o[a+12>>2]=d;o[d+12>>2]=c;o[d+8>>2]=a;return}o[d+16>>2]=0;o[d+20>>2]=0;f=d;e=a>>>8|0;b=0;l:{if(!e){break l}b=31;if(a>>>0>16777215){break l}c=e;e=e+1048320>>>16&8;b=c<<e;h=b+520192>>>16&4;b=b<<h;g=b+245760>>>16&2;b=(b<<g>>>15|0)-(g|(e|h))|0;b=(b<<1|a>>>b+21&1)+28|0}o[f+28>>2]=b;g=(b<<2)+11892|0;m:{n:{e=o[2898];c=1<<b;o:{if(!(e&c)){o[2898]=c|e;o[g>>2]=d;o[d+24>>2]=g;break o}e=a<<((b|0)==31?0:25-(b>>>1|0)|0);c=o[g>>2];while(1){b=c;if((o[c+4>>2]&-8)==(a|0)){break n}c=e>>>29|0;e=e<<1;g=b+(c&4)|0;c=o[g+16>>2];if(c){continue}break}o[g+16>>2]=d;o[d+24>>2]=b}o[d+12>>2]=d;o[d+8>>2]=d;break m}a=o[b+8>>2];o[a+12>>2]=d;o[b+8>>2]=d;o[d+24>>2]=0;o[d+12>>2]=b;o[d+8>>2]=a}a=o[2905]+ -1|0;o[2905]=a;if(a){break a}d=12044;while(1){a=o[d>>2];d=a+8|0;if(a){continue}break}o[2905]=-1}}function Db(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+b|0;a:{b:{c=o[a+4>>2];if(c&1){break b}if(!(c&3)){break a}c=o[a>>2];b=c+b|0;a=a-c|0;if((a|0)!=o[2902]){if(c>>>0<=255){e=c>>>3|0;c=o[a+8>>2];d=o[a+12>>2];if((d|0)==(c|0)){i=11588,j=o[2897]&He(-2,e),o[i>>2]=j;break b}o[c+12>>2]=d;o[d+8>>2]=c;break b}h=o[a+24>>2];c=o[a+12>>2];c:{if((c|0)!=(a|0)){d=o[a+8>>2];o[d+12>>2]=c;o[c+8>>2]=d;break c}d:{d=a+20|0;e=o[d>>2];if(e){break d}d=a+16|0;e=o[d>>2];if(e){break d}c=0;break c}while(1){g=d;c=e;d=c+20|0;e=o[d>>2];if(e){continue}d=c+16|0;e=o[c+16>>2];if(e){continue}break}o[g>>2]=0}if(!h){break b}d=o[a+28>>2];e=(d<<2)+11892|0;e:{if(o[e>>2]==(a|0)){o[e>>2]=c;if(c){break e}i=11592,j=o[2898]&He(-2,d),o[i>>2]=j;break b}o[h+(o[h+16>>2]==(a|0)?16:20)>>2]=c;if(!c){break b}}o[c+24>>2]=h;d=o[a+16>>2];if(d){o[c+16>>2]=d;o[d+24>>2]=c}d=o[a+20>>2];if(!d){break b}o[c+20>>2]=d;o[d+24>>2]=c;break b}c=o[f+4>>2];if((c&3)!=3){break b}o[2899]=b;o[f+4>>2]=c&-2;o[a+4>>2]=b|1;o[f>>2]=b;return}c=o[f+4>>2];f:{if(!(c&2)){if(o[2903]==(f|0)){o[2903]=a;b=o[2900]+b|0;o[2900]=b;o[a+4>>2]=b|1;if(o[2902]!=(a|0)){break a}o[2899]=0;o[2902]=0;return}if(o[2902]==(f|0)){o[2902]=a;b=o[2899]+b|0;o[2899]=b;o[a+4>>2]=b|1;o[a+b>>2]=b;return}b=(c&-8)+b|0;g:{if(c>>>0<=255){e=c>>>3|0;c=o[f+8>>2];d=o[f+12>>2];if((d|0)==(c|0)){i=11588,j=o[2897]&He(-2,e),o[i>>2]=j;break g}o[c+12>>2]=d;o[d+8>>2]=c;break g}h=o[f+24>>2];c=o[f+12>>2];h:{if((f|0)!=(c|0)){d=o[f+8>>2];o[d+12>>2]=c;o[c+8>>2]=d;break h}i:{d=f+20|0;e=o[d>>2];if(e){break i}d=f+16|0;e=o[d>>2];if(e){break i}c=0;break h}while(1){g=d;c=e;d=c+20|0;e=o[d>>2];if(e){continue}d=c+16|0;e=o[c+16>>2];if(e){continue}break}o[g>>2]=0}if(!h){break g}d=o[f+28>>2];e=(d<<2)+11892|0;j:{if(o[e>>2]==(f|0)){o[e>>2]=c;if(c){break j}i=11592,j=o[2898]&He(-2,d),o[i>>2]=j;break g}o[h+(o[h+16>>2]==(f|0)?16:20)>>2]=c;if(!c){break g}}o[c+24>>2]=h;d=o[f+16>>2];if(d){o[c+16>>2]=d;o[d+24>>2]=c}d=o[f+20>>2];if(!d){break g}o[c+20>>2]=d;o[d+24>>2]=c}o[a+4>>2]=b|1;o[a+b>>2]=b;if(o[2902]!=(a|0)){break f}o[2899]=b;return}o[f+4>>2]=c&-2;o[a+4>>2]=b|1;o[a+b>>2]=b}if(b>>>0<=255){c=b>>>3|0;b=(c<<3)+11628|0;d=o[2897];c=1<<c;k:{if(!(d&c)){o[2897]=c|d;c=b;break k}c=o[b+8>>2]}o[b+8>>2]=a;o[c+12>>2]=a;o[a+12>>2]=b;o[a+8>>2]=c;return}o[a+16>>2]=0;o[a+20>>2]=0;d=a;e=b>>>8|0;c=0;l:{if(!e){break l}c=31;if(b>>>0>16777215){break l}g=e+1048320>>>16&8;e=e<<g;c=e+520192>>>16&4;f=e<<c;e=f+245760>>>16&2;c=(f<<e>>>15|0)-(e|(c|g))|0;c=(c<<1|b>>>c+21&1)+28|0}o[d+28>>2]=c;e=(c<<2)+11892|0;m:{d=o[2898];g=1<<c;n:{if(!(d&g)){o[2898]=d|g;o[e>>2]=a;break n}d=b<<((c|0)==31?0:25-(c>>>1|0)|0);c=o[e>>2];while(1){e=c;if((o[c+4>>2]&-8)==(b|0)){break m}c=d>>>29|0;d=d<<1;g=e+(c&4)|0;c=o[g+16>>2];if(c){continue}break}o[g+16>>2]=a}o[a+24>>2]=e;o[a+12>>2]=a;o[a+8>>2]=a;return}b=o[e+8>>2];o[b+12>>2]=a;o[e+8>>2]=a;o[a+24>>2]=0;o[a+12>>2]=e;o[a+8>>2]=b}}function hb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,n=0,q=0,s=0,t=0,v=0;d=Ga(o[2720]);a:{if(!_(b,o[a+4>>2],o[1391])){break a}if(!_(b,o[a>>2],o[1392])){break a}c=o[a+8>>2];c=o[a>>2]==4?(c+d|0)-o[a+16>>2]|0:c;e=o[1393];if(c>>>e){break a}if(!_(b,c,e)){break a}b:{c:{d:{e:{f:{g:{h:{switch(o[a>>2]){case 3:if(!o[a+16>>2]){break b}e=o[1367];g=o[1366];h=o[1365];c=0;break g;case 0:if(!_(b,o[a+16>>2],o[1356])){break a}if(!_(b,o[a+20>>2],o[1357])){break a}if(!_(b,o[a+24>>2],o[1358])){break a}if(!_(b,o[a+28>>2],o[1359])){break a}if(!_(b,o[a+32>>2],o[1360])){break a}if(!_(b,o[a+36>>2]+ -1|0,o[1361])){break a}if(!_(b,o[a+40>>2]+ -1|0,o[1362])){break a}if(!Da(b,o[a+48>>2],o[a+52>>2],o[1363])){break a}if(ma(b,a+56|0,16)){break b}break a;case 1:if(Ca(b,o[a+8>>2]<<3)){break b}break a;case 6:break d;case 5:break e;case 4:break f;case 2:break h;default:break c}}c=o[1364]>>>3|0;if(!ma(b,a+16|0,c)){break a}if(ma(b,o[a+20>>2],o[a+8>>2]-c|0)){break b}break a}while(1){d=u(c,24);f=d+o[a+20>>2]|0;if(!Da(b,o[f>>2],o[f+4>>2],h)){break a}f=d+o[a+20>>2]|0;if(!Da(b,o[f+8>>2],o[f+12>>2],g)){break a}if(!_(b,o[(d+o[a+20>>2]|0)+16>>2],e)){break a}c=c+1|0;if(c>>>0<r[a+16>>2]){continue}break}break b}if(!bb(b,d)){break a}if(!ma(b,o[2720],d)){break a}if(!bb(b,o[a+24>>2])){break a}if(!o[a+24>>2]){break b}c=0;while(1){d=c<<3;if(!bb(b,o[d+o[a+28>>2]>>2])){break a}d=d+o[a+28>>2]|0;if(!ma(b,o[d+4>>2],o[d>>2])){break a}c=c+1|0;if(c>>>0<r[a+24>>2]){continue}break}break b}if(!ma(b,a+16|0,o[1378]>>>3|0)){break a}if(!Da(b,o[a+152>>2],o[a+156>>2],o[1379])){break a}if(!_(b,o[a+160>>2]!=0,o[1380])){break a}if(!Ca(b,o[1381])){break a}if(!_(b,o[a+164>>2],o[1382])){break a}if(!o[a+164>>2]){break b}g=o[1373]>>>3|0;h=o[1370];f=o[1369];j=o[1368];k=o[1377];l=o[1376];n=o[1375];q=o[1374];s=o[1372];t=o[1371];e=0;while(1){d=o[a+168>>2]+(e<<5)|0;if(!Da(b,o[d>>2],o[d+4>>2],t)){break a}if(!_(b,p[d+8|0],s)){break a}if(!ma(b,d+9|0,g)){break a}if(!_(b,m[d+22|0]&1,q)){break a}if(!_(b,p[d+22|0]>>>1&1,n)){break a}if(!Ca(b,l)){break a}if(!_(b,p[d+23|0],k)){break a}i:{if(!p[d+23|0]){break i}c=0;while(1){i=o[d+24>>2]+(c<<4)|0;if(!Da(b,o[i>>2],o[i+4>>2],j)){return 0}if(!_(b,p[i+8|0],f)){return 0}if(Ca(b,h)){c=c+1|0;if(c>>>0>=p[d+23|0]){break i}continue}break}return 0}e=e+1|0;if(e>>>0<r[a+164>>2]){continue}break}break b}if(!_(b,o[a+16>>2],o[1383])){break a}c=Ga(o[a+20>>2]);if(!_(b,c,o[1384])){break a}if(!ma(b,o[a+20>>2],c)){break a}c=Ga(o[a+24>>2]);if(!_(b,c,o[1385])){break a}if(!ma(b,o[a+24>>2],c)){break a}if(!_(b,o[a+28>>2],o[1386])){break a}if(!_(b,o[a+32>>2],o[1387])){break a}if(!_(b,o[a+36>>2],o[1388])){break a}if(!_(b,o[a+40>>2],o[1389])){break a}if(!_(b,o[a+44>>2],o[1390])){break a}if(ma(b,o[a+48>>2],o[a+44>>2])){break b}break a}if(!ma(b,o[a+16>>2],o[a+8>>2])){break a}}v=1}return v}function Rd(a,b,c,d,e,f,g,h,i){var j=0,k=0,n=0,q=0,r=0;j=N-96|0;N=j;a:{b:{if(o[a+384>>2]){o[j+72>>2]=0;o[j+76>>2]=0;o[j+80>>2]=0;o[j+84>>2]=0;o[j+88>>2]=0;o[j+92>>2]=0;o[j+64>>2]=0;o[j+68>>2]=0;k=o[a+396>>2];n=d;q=o[a+392>>2];r=d+q|0;if(r>>>0<q>>>0){k=k+1|0}o[j+80>>2]=r;o[j+84>>2]=k;c:{d:{if(o[a+388>>2]){if((c|0)!=38){break c}m[j|0]=p[7536];c=o[2721];c=p[c|0]|p[c+1|0]<<8|(p[c+2|0]<<16|p[c+3|0]<<24);m[j+5|0]=1;m[j+6|0]=0;m[j+1|0]=c;m[j+2|0]=c>>>8;m[j+3|0]=c>>>16;m[j+4|0]=c>>>24;k=o[a+4>>2];c=p[5409]|p[5410]<<8|(p[5411]<<16|p[5412]<<24);m[j+9|0]=c;m[j+10|0]=c>>>8;m[j+11|0]=c>>>16;m[j+12|0]=c>>>24;m[j+8|0]=k;m[j+7|0]=k>>>8;c=p[b+34|0]|p[b+35|0]<<8|(p[b+36|0]<<16|p[b+37|0]<<24);k=p[b+30|0]|p[b+31|0]<<8|(p[b+32|0]<<16|p[b+33|0]<<24);m[j+43|0]=k;m[j+44|0]=k>>>8;m[j+45|0]=k>>>16;m[j+46|0]=k>>>24;m[j+47|0]=c;m[j+48|0]=c>>>8;m[j+49|0]=c>>>16;m[j+50|0]=c>>>24;c=p[b+28|0]|p[b+29|0]<<8|(p[b+30|0]<<16|p[b+31|0]<<24);k=p[b+24|0]|p[b+25|0]<<8|(p[b+26|0]<<16|p[b+27|0]<<24);m[j+37|0]=k;m[j+38|0]=k>>>8;m[j+39|0]=k>>>16;m[j+40|0]=k>>>24;m[j+41|0]=c;m[j+42|0]=c>>>8;m[j+43|0]=c>>>16;m[j+44|0]=c>>>24;c=p[b+20|0]|p[b+21|0]<<8|(p[b+22|0]<<16|p[b+23|0]<<24);k=p[b+16|0]|p[b+17|0]<<8|(p[b+18|0]<<16|p[b+19|0]<<24);m[j+29|0]=k;m[j+30|0]=k>>>8;m[j+31|0]=k>>>16;m[j+32|0]=k>>>24;m[j+33|0]=c;m[j+34|0]=c>>>8;m[j+35|0]=c>>>16;m[j+36|0]=c>>>24;c=p[b+12|0]|p[b+13|0]<<8|(p[b+14|0]<<16|p[b+15|0]<<24);k=p[b+8|0]|p[b+9|0]<<8|(p[b+10|0]<<16|p[b+11|0]<<24);m[j+21|0]=k;m[j+22|0]=k>>>8;m[j+23|0]=k>>>16;m[j+24|0]=k>>>24;m[j+25|0]=c;m[j+26|0]=c>>>8;m[j+27|0]=c>>>16;m[j+28|0]=c>>>24;c=p[b+4|0]|p[b+5|0]<<8|(p[b+6|0]<<16|p[b+7|0]<<24);b=p[b|0]|p[b+1|0]<<8|(p[b+2|0]<<16|p[b+3|0]<<24);m[j+13|0]=b;m[j+14|0]=b>>>8;m[j+15|0]=b>>>16;m[j+16|0]=b>>>24;m[j+17|0]=c;m[j+18|0]=c>>>8;m[j+19|0]=c>>>16;m[j+20|0]=c>>>24;o[j+68>>2]=51;o[j+72>>2]=1;o[j+64>>2]=j;o[a+388>>2]=0;break d}o[j+68>>2]=c;o[j+64>>2]=b}if(f){o[j+76>>2]=1}b=a+8|0;if(xc(b,j- -64|0)){break c}c=a+368|0;if(!d){while(1){if(!rb(b,c,1)){break b}if(l[g](h,o[a+368>>2],o[a+372>>2],0,e,i)){break c}if(!l[g](h,o[a+376>>2],o[a+380>>2],0,e,i)){continue}break c}}while(1){if(!uc(b,c)){break b}if(l[g](h,o[a+368>>2],o[a+372>>2],0,e,i)){break c}if(!l[g](h,o[a+376>>2],o[a+380>>2],0,e,i)){continue}break}}g=1;break a}g=1;if(d|e|(c|0)!=4|(p[b|0]|p[b+1|0]<<8|(p[b+2|0]<<16|p[b+3|0]<<24))!=(p[5409]|p[5410]<<8|(p[5411]<<16|p[5412]<<24))){break a}o[a+384>>2]=1;n=d}b=a;d=b;c=o[b+396>>2];a=n+o[b+392>>2]|0;if(a>>>0<n>>>0){c=c+1|0}o[d+392>>2]=a;o[b+396>>2]=c;g=0}N=j+96|0;return g}function Oc(a,b){var c=0,d=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0;k=N-48|0;N=k;h(+a);j=e(1)|0;d=e(0)|0;a:{b:{i=j;j=i;l=i&2147483647;c:{if(l>>>0<=1074752122){if((j&1048575)==598523){break c}if(l>>>0<=1073928572){if((i|0)>0?1:(i|0)>=0?d>>>0<0?0:1:0){a=a+ -1.5707963267341256;c=a+ -6.077100506506192e-11;t[b>>3]=c;t[b+8>>3]=a-c+ -6.077100506506192e-11;d=1;break a}a=a+1.5707963267341256;c=a+6.077100506506192e-11;t[b>>3]=c;t[b+8>>3]=a-c+6.077100506506192e-11;d=-1;break a}if((i|0)>0?1:(i|0)>=0?d>>>0<0?0:1:0){a=a+ -3.1415926534682512;c=a+ -1.2154201013012384e-10;t[b>>3]=c;t[b+8>>3]=a-c+ -1.2154201013012384e-10;d=2;break a}a=a+3.1415926534682512;c=a+1.2154201013012384e-10;t[b>>3]=c;t[b+8>>3]=a-c+1.2154201013012384e-10;d=-2;break a}if(l>>>0<=1075594811){if(l>>>0<=1075183036){if((l|0)==1074977148){break c}if((i|0)>0?1:(i|0)>=0?d>>>0<0?0:1:0){a=a+ -4.712388980202377;c=a+ -1.8231301519518578e-10;t[b>>3]=c;t[b+8>>3]=a-c+ -1.8231301519518578e-10;d=3;break a}a=a+4.712388980202377;c=a+1.8231301519518578e-10;t[b>>3]=c;t[b+8>>3]=a-c+1.8231301519518578e-10;d=-3;break a}if((l|0)==1075388923){break c}if((i|0)>0?1:(i|0)>=0?d>>>0<0?0:1:0){a=a+ -6.2831853069365025;c=a+ -2.430840202602477e-10;t[b>>3]=c;t[b+8>>3]=a-c+ -2.430840202602477e-10;d=4;break a}a=a+6.2831853069365025;c=a+2.430840202602477e-10;t[b>>3]=c;t[b+8>>3]=a-c+2.430840202602477e-10;d=-4;break a}if(l>>>0>1094263290){break b}}n=a*.6366197723675814+6755399441055744+ -6755399441055744;c=a+n*-1.5707963267341256;m=n*6.077100506506192e-11;a=c-m;t[b>>3]=a;h(+a);d=e(1)|0;e(0)|0;i=l>>>20|0;j=(i-(d>>>20&2047)|0)<17;if(w(n)<2147483648){d=~~n}else{d=-2147483648}d:{if(j){break d}m=c;a=n*6.077100506303966e-11;c=c-a;m=n*2.0222662487959506e-21-(m-c-a);a=c-m;t[b>>3]=a;j=i;h(+a);i=e(1)|0;e(0)|0;if((j-(i>>>20&2047)|0)<50){break d}m=c;a=n*2.0222662487111665e-21;c=c-a;m=n*8.4784276603689e-32-(m-c-a);a=c-m;t[b>>3]=a}t[b+8>>3]=c-a-m;break a}if(l>>>0>=2146435072){a=a-a;t[b>>3]=a;t[b+8>>3]=a;d=0;break a}f(0,d|0);f(1,i&1048575|1096810496);a=+g();d=0;j=1;while(1){p=(k+16|0)+(d<<3)|0;if(w(a)<2147483648){d=~~a}else{d=-2147483648}c=+(d|0);t[p>>3]=c;a=(a-c)*16777216;d=1;p=j&1;j=0;if(p){continue}break}t[k+32>>3]=a;e:{if(a!=0){d=2;break e}j=1;while(1){d=j;j=d+ -1|0;if(t[(k+16|0)+(d<<3)>>3]==0){continue}break}}d=Nc(k+16|0,k,(l>>>20|0)+ -1046|0,d+1|0);a=t[k>>3];if((i|0)<-1?1:(i|0)<=-1?1:0){t[b>>3]=-a;t[b+8>>3]=-t[k+8>>3];d=0-d|0;break a}t[b>>3]=a;i=o[k+12>>2];o[b+8>>2]=o[k+8>>2];o[b+12>>2]=i}N=k+48|0;return d}function vc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,q=0,r=0;e=-1;a:{b:{if(!a){break b}g=o[a>>2];if(!g){break b}d=o[b>>2];k=p[d+5|0];f=o[b+12>>2];l=o[b+8>>2];i=p[d+26|0];n=p[d+18|0]|p[d+19|0]<<8|(p[d+20|0]<<16|p[d+21|0]<<24);j=p[d+14|0]|p[d+15|0]<<8|(p[d+16|0]<<16|p[d+17|0]<<24);q=p[d+6|0]|p[d+7|0]<<8|(p[d+8|0]<<16|p[d+9|0]<<24);r=p[d+10|0]|p[d+11|0]<<8|(p[d+12|0]<<16|p[d+13|0]<<24);m=p[d+4|0];c=o[a+36>>2];b=o[a+12>>2];if(b){h=o[a+8>>2]-b|0;o[a+8>>2]=h;if(h){pa(g,b+g|0,h)}o[a+12>>2]=0}if(c){b=a;g=o[a+28>>2]-c|0;if(g){h=o[a+16>>2];pa(h,h+(c<<2)|0,g<<2);g=o[a+20>>2];pa(g,g+(c<<3)|0,o[a+28>>2]-c<<3);h=o[a+28>>2]-c|0}else{h=0}o[b+28>>2]=h;o[a+36>>2]=0;o[a+32>>2]=o[a+32>>2]-c}if((j|0)!=o[a+336>>2]|m){break b}if(Hb(a,i+1|0)){break b}h=k&1;g=o[a+340>>2];c:{if((g|0)==(n|0)){break c}c=o[a+32>>2];j=o[a+28>>2];if((c|0)<(j|0)){e=o[a+8>>2];m=o[a+16>>2];b=c;while(1){e=e-p[m+(b<<2)|0]|0;b=b+1|0;if((b|0)<(j|0)){continue}break}o[a+8>>2]=e}o[a+28>>2]=c;if((g|0)==-1){break c}b=c+1|0;o[a+28>>2]=b;o[o[a+16>>2]+(c<<2)>>2]=1024;o[a+32>>2]=b}g=k&2;e=0;d:{if(!h){break d}b=o[a+28>>2];if(o[(o[a+16>>2]+(b<<2)|0)+ -4>>2]!=1024?(b|0)>=1:0){break d}g=0;if(!i){break d}b=0;while(1){e=b+1|0;b=p[(b+d|0)+27|0];f=f-b|0;l=b+l|0;if((b|0)!=255){break d}b=e;if((i|0)!=(b|0)){continue}break}e=i}if(f){c=o[a+4>>2];b=o[a+8>>2];e:{if((c-f|0)>(b|0)){c=o[a>>2];break e}if((c|0)>(2147483647-f|0)){break a}b=c+f|0;b=(b|0)<2147482623?b+1024|0:b;c=ea(o[a>>2],b);if(!c){break a}o[a>>2]=c;o[a+4>>2]=b;b=o[a+8>>2]}ca(b+c|0,l,f);o[a+8>>2]=o[a+8>>2]+f}l=k&4;f:{if((e|0)>=(i|0)){break f}k=o[a+20>>2];h=o[a+16>>2];c=o[a+28>>2];b=h+(c<<2)|0;f=p[(d+e|0)+27|0];o[b>>2]=f;j=k+(c<<3)|0;o[j>>2]=-1;o[j+4>>2]=-1;if(g){o[b>>2]=f|256}b=c+1|0;o[a+28>>2]=b;e=e+1|0;g:{if((f|0)==255){c=-1;break g}o[a+32>>2]=b}if((e|0)!=(i|0)){while(1){g=p[(d+e|0)+27|0];o[h+(b<<2)>>2]=g;f=k+(b<<3)|0;o[f>>2]=-1;o[f+4>>2]=-1;f=b+1|0;o[a+28>>2]=f;e=e+1|0;if((g|0)!=255){o[a+32>>2]=f;c=b}b=f;if((e|0)!=(i|0)){continue}break}}if((c|0)==-1){break f}b=o[a+20>>2]+(c<<3)|0;o[b>>2]=q;o[b+4>>2]=r}h:{if(!l){break h}o[a+328>>2]=1;b=o[a+28>>2];if((b|0)<1){break h}b=(o[a+16>>2]+(b<<2)|0)+ -4|0;o[b>>2]=o[b>>2]|512}o[a+340>>2]=n+1;e=0}return e}b=o[a>>2];if(b){X(b)}b=o[a+16>>2];if(b){X(b)}b=o[a+20>>2];if(b){X(b)}fa(a,360);return-1}function Rc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=N-48|0;N=e;k=o[2644];l=o[2641];while(1){c=o[b+4>>2];a:{if(c>>>0<r[b+104>>2]){o[b+4>>2]=c+1;c=p[c|0];break a}c=ga(b)}if((c|0)==32|c+ -9>>>0<5){continue}break}g=1;b:{c:{switch(c+ -43|0){case 0:case 2:break c;default:break b}}g=(c|0)==45?-1:1;c=o[b+4>>2];if(c>>>0<r[b+104>>2]){o[b+4>>2]=c+1;c=p[c|0];break b}c=ga(b)}d:{e:{f:{while(1){if(m[d+10484|0]==(c|32)){g:{if(d>>>0>6){break g}c=o[b+4>>2];if(c>>>0<r[b+104>>2]){o[b+4>>2]=c+1;c=p[c|0];break g}c=ga(b)}d=d+1|0;if((d|0)!=8){continue}break f}break}if((d|0)!=3){if((d|0)==8){break f}if(d>>>0<4){break e}if((d|0)==8){break f}}c=o[b+104>>2];if(c){o[b+4>>2]=o[b+4>>2]+ -1}if(d>>>0<4){break f}while(1){if(c){o[b+4>>2]=o[b+4>>2]+ -1}d=d+ -1|0;if(d>>>0>3){continue}break}}Sc(e,v(v(g|0)*v(F)));h=o[e+8>>2];f=o[e+12>>2];i=o[e>>2];j=o[e+4>>2];break d}h:{i:{j:{if(d){break j}d=0;while(1){if(m[d+10493|0]!=(c|32)){break j}k:{if(d>>>0>1){break k}c=o[b+4>>2];if(c>>>0<r[b+104>>2]){o[b+4>>2]=c+1;c=p[c|0];break k}c=ga(b)}d=d+1|0;if((d|0)!=3){continue}break}break i}l:{switch(d|0){case 0:m:{if((c|0)!=48){break m}d=o[b+4>>2];n:{if(d>>>0<r[b+104>>2]){o[b+4>>2]=d+1;d=p[d|0];break n}d=ga(b)}if((d&-33)==88){Bc(e+16|0,b,l,k,g);h=o[e+24>>2];f=o[e+28>>2];i=o[e+16>>2];j=o[e+20>>2];break d}if(!o[b+104>>2]){break m}o[b+4>>2]=o[b+4>>2]+ -1}Dc(e+32|0,b,c,l,k,g);h=o[e+40>>2];f=o[e+44>>2];i=o[e+32>>2];j=o[e+36>>2];break d;case 3:break i;default:break l}}if(o[b+104>>2]){o[b+4>>2]=o[b+4>>2]+ -1}break h}o:{c=o[b+4>>2];p:{if(c>>>0<r[b+104>>2]){o[b+4>>2]=c+1;c=p[c|0];break p}c=ga(b)}if((c|0)==40){d=1;break o}f=2147450880;if(!o[b+104>>2]){break d}o[b+4>>2]=o[b+4>>2]+ -1;break d}while(1){q:{c=o[b+4>>2];r:{if(c>>>0<r[b+104>>2]){o[b+4>>2]=c+1;c=p[c|0];break r}c=ga(b)}if(!(c+ -48>>>0<10|c+ -65>>>0<26|(c|0)==95)){if(c+ -97>>>0>=26){break q}}d=d+1|0;continue}break}f=2147450880;if((c|0)==41){break d}c=o[b+104>>2];if(c){o[b+4>>2]=o[b+4>>2]+ -1}if(!d){break d}while(1){d=d+ -1|0;if(c){o[b+4>>2]=o[b+4>>2]+ -1}if(d){continue}break}break d}o[2896]=28;o[b+112>>2]=0;o[b+116>>2]=0;c=o[b+8>>2];d=c-o[b+4>>2]|0;o[b+120>>2]=d;o[b+124>>2]=d>>31;o[b+104>>2]=c}o[a>>2]=i;o[a+4>>2]=j;o[a+8>>2]=h;o[a+12>>2]=f;N=e+48|0}function Fa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;f=N-16|0;N=f;d=cb(o[o[a+4>>2]+6856>>2],f+4|0,f);h=o[a>>2];a:{b:{if(!d){o[h>>2]=8;break b}c:{if(!o[h+4>>2]){break c}h=o[a+4>>2];o[h+11804>>2]=o[f+4>>2];o[h+11812>>2]=o[f>>2];if(!o[h+11756>>2]){o[h+11760>>2]=1;break c}if(Ob(o[h+11752>>2])){break c}b=o[o[a+4>>2]+6856>>2];o[b+12>>2]=0;o[b+16>>2]=0;a=o[a>>2];if(o[a>>2]==4){break a}o[a>>2]=3;break a}h=o[f>>2];r=o[f+4>>2];o[f+8>>2]=0;o[f+12>>2]=0;d:{e:{d=o[a+4>>2];e=o[d+7272>>2];if(!e){break e}if((l[e](a,f+8|0,o[d+7288>>2])|0)!=1){break e}break d}f:{if(b){break f}g:{switch(p[r|0]&127){case 0:e=o[f+12>>2];d=o[a>>2];o[d+608>>2]=o[f+8>>2];o[d+612>>2]=e;break f;case 3:break g;default:break f}}d=o[a>>2];if(o[d+616>>2]|o[d+620>>2]){break f}e=o[f+12>>2];o[d+616>>2]=o[f+8>>2];o[d+620>>2]=e}j=o[a+4>>2];i=o[j+7048>>2];h:{if(!i){break h}g=o[a>>2];e=g;d=o[e+628>>2];e=o[e+624>>2];n=d;if(!(e|d)){break h}s=o[i>>2];if(!s){break h}k=o[j+7292>>2];if(k>>>0>=s>>>0){break h}q=o[j+7316>>2];d=q;t=o[j+7312>>2];v=o[g+36>>2];g=v;m=t+g|0;if(m>>>0<g>>>0){d=d+1|0}g=m+ -1|0;d=d+ -1|0;d=(g|0)!=-1?d+1|0:d;w=g;x=o[i+4>>2];while(1){m=u(k,24)+x|0;i=m;g=o[i>>2];i=o[i+4>>2];if((d|0)==(i|0)&g>>>0>w>>>0|i>>>0>d>>>0){break h}if((i|0)==(q|0)&g>>>0>=t>>>0|i>>>0>q>>>0){o[m>>2]=t;o[m+4>>2]=q;i=o[f+8>>2];g=o[f+12>>2];o[m+16>>2]=v;o[m+8>>2]=i-e;o[m+12>>2]=g-(n+(i>>>0<e>>>0)|0)}k=k+1|0;o[j+7292>>2]=k;if((k|0)!=(s|0)){continue}break}}i:{if(o[j+7260>>2]){c=Rd(o[a>>2]+632|0,r,h,b,o[j+7056>>2],c,o[j+7276>>2],a,o[j+7288>>2]);break i}c=l[o[j+7276>>2]](a,r,h,b,o[j+7056>>2],o[j+7288>>2])|0}if(!c){c=o[a+4>>2];e=c;g=c;d=o[c+7308>>2];n=h+o[c+7304>>2]|0;if(n>>>0<h>>>0){d=d+1|0}o[g+7304>>2]=n;o[e+7308>>2]=d;e=o[c+7316>>2];d=b;n=d+o[c+7312>>2]|0;if(n>>>0<d>>>0){e=e+1|0}o[c+7312>>2]=n;o[c+7316>>2]=e;k=1;h=o[c+7320>>2];d=o[c+7056>>2]+1|0;o[c+7320>>2]=h>>>0>d>>>0?h:d;c=o[o[a+4>>2]+6856>>2];o[c+12>>2]=0;o[c+16>>2]=0;if(!b){break a}b=o[a+4>>2]+6896|0;c=o[b>>2];g=b;b=o[f>>2];o[g>>2]=b>>>0<c>>>0?b:c;c=o[a+4>>2]+6900|0;a=o[c>>2];o[c>>2]=b>>>0>a>>>0?b:a;break a}}o[o[a>>2]>>2]=5;b=o[o[a+4>>2]+6856>>2];o[b+12>>2]=0;o[b+16>>2]=0;o[o[a>>2]>>2]=5}k=0}N=f+16|0;return k}function Tb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=N-16|0;N=f;a:{if(!_(b,o[1394],o[1395])){break a}if(!_(b,0,o[1396])){break a}if(!_(b,o[a+20>>2]!=0,o[1397])){break a}i=16;j=1;d=b;b:{c:{d:{e:{f:{g:{h:{i:{j:{c=o[a>>2];if((c|0)<=2047){if((c|0)<=575){e=1;if((c|0)==192){break b}if((c|0)==256){break g}if((c|0)!=512){break c}e=9;break b}if((c|0)==576){break j}if((c|0)==1024){break f}if((c|0)!=1152){break c}e=3;break b}if((c|0)<=4607){if((c|0)==2048){break e}if((c|0)==2304){break i}if((c|0)!=4096){break c}e=12;break b}if((c|0)<=16383){if((c|0)==4608){break h}if((c|0)!=8192){break c}e=13;break b}if((c|0)==16384){break d}if((c|0)!=32768){break c}e=15;break b}e=2;break b}e=4;break b}e=5;break b}e=8;break b}e=10;break b}e=11;break b}e=14;break b}c=c>>>0<257;i=c?8:16;j=0;e=c?6:7}if(!_(d,e,o[1398])){break a}k:{l:{m:{n:{o:{p:{q:{r:{c=o[a+4>>2];if((c|0)<=44099){if((c|0)<=22049){if((c|0)==8e3){break r}if((c|0)!=16e3){break l}d=5;break k}if((c|0)==22050){break q}if((c|0)==24e3){break p}if((c|0)!=32e3){break l}d=8;break k}if((c|0)<=95999){if((c|0)==44100){break o}if((c|0)==48e3){break n}d=1;if((c|0)==88200){break k}break l}if((c|0)==96e3){break m}if((c|0)!=192e3){if((c|0)!=176400){break l}d=2;break k}d=3;break k}d=4;break k}d=6;break k}d=7;break k}d=9;break k}d=10;break k}d=11;break k}g=(c>>>0)%1e3|0;if(c>>>0<=255e3){d=12;h=12;if(!g){break k}}if(!((c>>>0)%10)){d=14;h=14;break k}d=c>>>0<65536?13:0;h=d}g=0;if(!_(b,d,o[1399])){break a}s:{t:{switch(o[a+12>>2]){case 0:d=o[a+8>>2]+ -1|0;break s;case 1:d=8;break s;case 2:d=9;break s;case 3:break t;default:break s}}d=10}if(!_(b,d,o[1400])){break a}d=b;c=He(o[a+16>>2]+ -8|0,30);if(c>>>0<=4){c=o[(c<<2)+10464>>2]}else{c=0}if(!_(d,c,o[1401])){break a}if(!_(b,0,o[1402])){break a}u:{if(!o[a+20>>2]){if(se(b,o[a+24>>2])){break u}break a}if(!re(b,o[a+24>>2],o[a+28>>2])){break a}}if(!j){if(!_(b,o[a>>2]+ -1|0,i)){break a}}v:{w:{switch(h+ -12|0){case 0:if(_(b,r[a+4>>2]/1e3|0,8)){break v}break a;case 1:if(_(b,o[a+4>>2],16)){break v}break a;case 2:break w;default:break v}}if(!_(b,r[a+4>>2]/10|0,16)){break a}}if(!te(b,f+15|0)){break a}g=(_(b,p[f+15|0],o[1403])|0)!=0}N=f+16|0;return g}function zb(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;j=N-128|0;N=j;a:{b:{c:{if(!za(f,g,h,i,0,0,0,0)){break c}m=Qc(f,g,h,i);u=e>>>16|0;q=u&32767;if((q|0)==32767){break c}if(m){break b}}$(j+16|0,b,c,d,e,f,g,h,i);e=o[j+16>>2];d=o[j+20>>2];c=o[j+24>>2];b=o[j+28>>2];Kb(j,e,d,c,b,e,d,c,b);d=o[j+8>>2];e=o[j+12>>2];h=o[j>>2];i=o[j+4>>2];break a}n=e&65535|q<<16;l=n;k=d;n=h;t=i>>>16&32767;r=i&65535|t<<16;if((za(b,c,k,l,f,g,h,r)|0)<=0){if(za(b,c,k,l,f,g,n,r)){h=b;i=c;break a}$(j+112|0,b,c,d,e,0,0,0,0);d=o[j+120>>2];e=o[j+124>>2];h=o[j+112>>2];i=o[j+116>>2];break a}if(q){i=c;h=b}else{$(j+96|0,b,c,k,l,0,0,0,1081540608);h=o[j+108>>2];l=h;k=o[j+104>>2];q=(h>>>16|0)+ -120|0;i=o[j+100>>2];h=o[j+96>>2]}if(!t){$(j+80|0,f,g,n,r,0,0,0,1081540608);f=o[j+92>>2];r=f;n=o[j+88>>2];t=(f>>>16|0)+ -120|0;g=o[j+84>>2];f=o[j+80>>2]}w=n;m=n;n=k-m|0;l=l&65535|65536;v=r&65535|65536;p=(g|0)==(i|0)&h>>>0<f>>>0|i>>>0<g>>>0;m=(l-(v+(k>>>0<m>>>0)|0)|0)-(n>>>0<p>>>0)|0;s=n-p|0;p=(m|0)>-1?1:0;n=h-f|0;r=i-((h>>>0<f>>>0)+g|0)|0;if((q|0)>(t|0)){while(1){d:{if(p){if(!(n|s|(m|r))){$(j+32|0,b,c,d,e,0,0,0,0);d=o[j+40>>2];e=o[j+44>>2];h=o[j+32>>2];i=o[j+36>>2];break a}k=r>>>31|0;l=0;h=s;p=m<<1|h>>>31;h=h<<1;break d}m=l<<1|k>>>31;k=k<<1;l=m;n=h;r=i;p=0;h=i>>>31|0}k=h|k;i=k;h=w;s=i-h|0;l=l|p;m=l-((i>>>0<h>>>0)+v|0)|0;h=n;p=r<<1|h>>>31;h=h<<1;i=p;p=(g|0)==(i|0)&h>>>0<f>>>0|i>>>0<g>>>0;m=m-(s>>>0<p>>>0)|0;s=s-p|0;p=(m|0)>-1?1:0;n=h-f|0;r=i-((h>>>0<f>>>0)+g|0)|0;q=q+ -1|0;if((q|0)>(t|0)){continue}break}q=t}e:{if(!p){break e}h=n;k=s;i=r;l=m;if(h|k|(i|l)){break e}$(j+48|0,b,c,d,e,0,0,0,0);d=o[j+56>>2];e=o[j+60>>2];h=o[j+48>>2];i=o[j+52>>2];break a}if((l|0)==65535|l>>>0<65535){while(1){d=i>>>31|0;b=0;q=q+ -1|0;m=i<<1|h>>>31;h=h<<1;i=m;p=l<<1|k>>>31;k=k<<1|d;b=b|p;l=b;if((b|0)==65536&k>>>0<0|b>>>0<65536){continue}break}}b=u&32768;if((q|0)<=0){$(j- -64|0,h,i,k,l&65535|(b|q+120)<<16,0,0,0,1065811968);d=o[j+72>>2];e=o[j+76>>2];h=o[j+64>>2];i=o[j+68>>2];break a}d=k;e=l&65535|(b|q)<<16}o[a>>2]=h;o[a+4>>2]=i;o[a+8>>2]=d;o[a+12>>2]=e;N=j+128|0}function xd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0;d=o[a>>2];j=o[d+36>>2];r=j+1|0;a:{b:{k=o[d+24>>2];if(!(!o[d+16>>2]|(k|0)!=2)){while(1){f=o[a+4>>2];if(o[d+4>>2]){d=o[f+11800>>2];e=r-o[f+7052>>2]|0;g=c-i|0;h=e>>>0<g>>>0?e:g;c:{if(!h){break c}if(!k){d=d+h|0;break c}e=i<<1;l=o[f+11768>>2];q=o[f+11764>>2];g=0;while(1){n=d<<2;p=e<<2;o[n+q>>2]=o[p+b>>2];o[l+n>>2]=o[(p|4)+b>>2];d=d+1|0;e=e+2|0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}o[f+11800>>2]=d}e=i>>>0<c>>>0;d=o[f+7052>>2];d:{if(d>>>0>j>>>0|i>>>0>=c>>>0){break d}l=o[f+40>>2];q=o[f+8>>2];n=o[f+36>>2];p=o[f+4>>2];while(1){e=d<<2;h=(m<<2)+b|0;g=o[h>>2];o[e+p>>2]=g;h=o[h+4>>2];o[e+q>>2]=h;o[e+l>>2]=g-h;o[e+n>>2]=g+h>>1;d=d+1|0;m=m+2|0;i=i+1|0;e=i>>>0<c>>>0;if(i>>>0>=c>>>0){break d}if(d>>>0<=j>>>0){continue}break}}o[f+7052>>2]=d;if(d>>>0>j>>>0){h=0;if(!Oa(a,0,0)){break a}d=o[a+4>>2];g=o[d+4>>2];h=g;g=j<<2;o[h>>2]=o[h+g>>2];f=o[d+8>>2];o[f>>2]=o[f+g>>2];f=o[d+36>>2];o[f>>2]=o[f+g>>2];f=o[d+40>>2];o[f>>2]=o[f+g>>2];o[d+7052>>2]=1}if(!e){break b}d=o[a>>2];continue}}while(1){i=o[a+4>>2];if(o[d+4>>2]){g=o[i+11800>>2];d=r-o[i+7052>>2]|0;e=c-f|0;h=d>>>0<e>>>0?d:e;e:{if(!h){break e}if(!k){g=g+h|0;break e}e=u(f,k);l=0;while(1){d=0;while(1){o[o[(i+(d<<2)|0)+11764>>2]+(g<<2)>>2]=o[(e<<2)+b>>2];e=e+1|0;d=d+1|0;if((k|0)!=(d|0)){continue}break}g=g+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}o[i+11800>>2]=g}g=f>>>0<c>>>0;e=o[i+7052>>2];f:{if(e>>>0>j>>>0|f>>>0>=c>>>0){break f}if(k){while(1){d=0;while(1){o[o[(i+(d<<2)|0)+4>>2]+(e<<2)>>2]=o[(m<<2)+b>>2];m=m+1|0;d=d+1|0;if((k|0)!=(d|0)){continue}break}e=e+1|0;f=f+1|0;g=f>>>0<c>>>0;if(f>>>0>=c>>>0){break f}if(e>>>0<=j>>>0){continue}break f}}while(1){e=e+1|0;f=f+1|0;g=f>>>0<c>>>0;if(f>>>0>=c>>>0){break f}if(e>>>0<=j>>>0){continue}break}}o[i+7052>>2]=e;if(e>>>0>j>>>0){d=0;h=d;if(!Oa(a,0,0)){break a}e=o[a+4>>2];if(k){while(1){i=o[(e+(d<<2)|0)+4>>2];o[i>>2]=o[i+(j<<2)>>2];d=d+1|0;if((k|0)!=(d|0)){continue}break}}o[e+7052>>2]=1}if(!g){break b}d=o[a>>2];continue}}h=1}return h|0}function rb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,q=0,r=0,s=0;a:{if(!a){break a}j=o[a+28>>2];d=(j|0)<255?j:255;if(!d){break a}k=o[a>>2];if(!k){break a}b:{c:{d:{l=o[a+332>>2];if(l){if((j|0)>=1){break d}i=-1;g=-1;d=0;break c}d=(d|0)>0?d:0;while(1){if((d|0)==(f|0)){break c}h=f<<2;e=f+1|0;f=e;if(p[h+o[a+16>>2]|0]==255){continue}break}d=e;break c}e=(d|0)>1?d:1;i=-1;g=-1;d=0;e:{while(1){if(!((f|0)<=4096|(h|0)<=3)){c=1;break e}h=0;q=p[o[a+16>>2]+(d<<2)|0];if((q|0)!=255){r=r+1|0;h=r;g=o[a+20>>2]+(d<<3)|0;i=o[g>>2];g=o[g+4>>2]}f=f+q|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}d=e}e=255;if((d|0)==255){break b}}e=d;if(!c){break a}}o[a+40>>2]=1399285583;n[a+44>>1]=0;h=o[a+16>>2];c=(p[h+1|0]^-1)&1;c=l?c:c|2;m[a+45|0]=c;if(!(!o[a+328>>2]|(e|0)!=(j|0))){m[a+45|0]=c|4}o[a+332>>2]=1;c=g;m[a+53|0]=c>>>24;m[a+52|0]=c>>>16;m[a+51|0]=c>>>8;m[a+50|0]=c;m[a+49|0]=(c&16777215)<<8|i>>>24;m[a+48|0]=(c&65535)<<16|i>>>16;m[a+47|0]=(c&255)<<24|i>>>8;m[a+46|0]=i;c=o[a+336>>2];m[a+54|0]=c;m[a+55|0]=c>>>8;m[a+56|0]=c>>>16;m[a+57|0]=c>>>24;d=o[a+340>>2];if((d|0)==-1){o[a+340>>2]=0;d=0}m[a+66|0]=e;f=0;n[a+62>>1]=0;n[a+64>>1]=0;m[a+61|0]=d>>>24;m[a+60|0]=d>>>16;m[a+59|0]=d>>>8;m[a+58|0]=d;s=1;o[a+340>>2]=d+1;if((e|0)>=1){d=0;while(1){c=o[h+(d<<2)>>2];m[(a+d|0)+67|0]=c;f=(c&255)+f|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}}o[b>>2]=a+40;c=e+27|0;o[a+324>>2]=c;o[b+4>>2]=c;c=o[a+12>>2];o[b+12>>2]=f;o[b+8>>2]=c+k;c=j-e|0;o[a+28>>2]=c;pa(h,h+(e<<2)|0,c<<2);c=o[a+20>>2];pa(c,c+(e<<3)|0,o[a+28>>2]<<3);o[a+12>>2]=o[a+12>>2]+f;if(!b){break a}a=0;m[o[b>>2]+22|0]=0;m[o[b>>2]+23|0]=0;m[o[b>>2]+24|0]=0;m[o[b>>2]+25|0]=0;c=o[b+4>>2];if((c|0)>=1){g=o[b>>2];d=0;while(1){a=o[((p[d+g|0]^a>>>24)<<2)+6512>>2]^a<<8;d=d+1|0;if((c|0)!=(d|0)){continue}break}}c=o[b+12>>2];if((c|0)>=1){g=o[b+8>>2];d=0;while(1){a=o[((p[d+g|0]^a>>>24)<<2)+6512>>2]^a<<8;d=d+1|0;if((c|0)!=(d|0)){continue}break}}m[o[b>>2]+22|0]=a;m[o[b>>2]+23|0]=a>>>8;m[o[b>>2]+24|0]=a>>>16;m[o[b>>2]+25|0]=a>>>24}return s}function $a(a){a=a|0;var b=0,c=0;c=1;if(o[o[a>>2]>>2]!=9){b=o[a+4>>2];_b(b+3732|0,b+3636|0);X(o[o[a+4>>2]+452>>2]);o[o[a+4>>2]+452>>2]=0;b=o[a+4>>2];o[b+252>>2]=0;Ae(o[b+56>>2]);b=o[a+4>>2];c=o[b+60>>2];if(c){X(c+ -16|0);o[o[a+4>>2]+60>>2]=0;b=o[a+4>>2]}c=o[b+3592>>2];if(c){X(c);o[o[a+4>>2]+92>>2]=0;o[o[a+4>>2]+3592>>2]=0;b=o[a+4>>2]}c=o[b- -64>>2];if(c){X(c+ -16|0);o[o[a+4>>2]- -64>>2]=0;b=o[a+4>>2]}c=o[b+3596>>2];if(c){X(c);o[o[a+4>>2]+96>>2]=0;o[o[a+4>>2]+3596>>2]=0;b=o[a+4>>2]}c=o[b+68>>2];if(c){X(c+ -16|0);o[o[a+4>>2]+68>>2]=0;b=o[a+4>>2]}c=o[b+3600>>2];if(c){X(c);o[o[a+4>>2]+100>>2]=0;o[o[a+4>>2]+3600>>2]=0;b=o[a+4>>2]}c=o[b+72>>2];if(c){X(c+ -16|0);o[o[a+4>>2]+72>>2]=0;b=o[a+4>>2]}c=o[b+3604>>2];if(c){X(c);o[o[a+4>>2]+104>>2]=0;o[o[a+4>>2]+3604>>2]=0;b=o[a+4>>2]}c=o[b+76>>2];if(c){X(c+ -16|0);o[o[a+4>>2]+76>>2]=0;b=o[a+4>>2]}c=o[b+3608>>2];if(c){X(c);o[o[a+4>>2]+108>>2]=0;o[o[a+4>>2]+3608>>2]=0;b=o[a+4>>2]}c=o[b+80>>2];if(c){X(c+ -16|0);o[o[a+4>>2]+80>>2]=0;b=o[a+4>>2]}c=o[b+3612>>2];if(c){X(c);o[o[a+4>>2]+112>>2]=0;o[o[a+4>>2]+3612>>2]=0;b=o[a+4>>2]}c=o[b+84>>2];if(c){X(c+ -16|0);o[o[a+4>>2]+84>>2]=0;b=o[a+4>>2]}c=o[b+3616>>2];if(c){X(c);o[o[a+4>>2]+116>>2]=0;o[o[a+4>>2]+3616>>2]=0;b=o[a+4>>2]}c=o[b+88>>2];if(c){X(c+ -16|0);o[o[a+4>>2]+88>>2]=0;b=o[a+4>>2]}c=o[b+3620>>2];if(c){X(c);o[o[a+4>>2]+120>>2]=0;o[o[a+4>>2]+3620>>2]=0;b=o[a+4>>2]}o[b+220>>2]=0;o[b+224>>2]=0;if(o[b>>2]){b=o[a>>2]+32|0;sc(b+368|0);sb(b+8|0);b=o[a+4>>2]}c=o[b+52>>2];if(c){if((c|0)!=o[1887]){Cb(c);b=o[a+4>>2]}o[b+52>>2]=0}c=1;if(o[b+3624>>2]){c=!Pa(b+312|0,b+3732|0,16)}o[b+48>>2]=0;o[b+3632>>2]=0;fa(b+608|0,512);o[b+32>>2]=0;o[b+24>>2]=0;o[b+28>>2]=0;o[b+16>>2]=0;o[b+20>>2]=0;o[b+8>>2]=0;o[b+12>>2]=0;o[b>>2]=0;o[b+4>>2]=0;b=o[a+4>>2];o[b+1124>>2]=0;o[b+608>>2]=1;b=o[a>>2];o[b+28>>2]=0;o[b+32>>2]=1;o[o[a>>2]>>2]=9}return c|0}function oe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=v(0),m=0,n=0,p=0,q=0,r=0,t=0,u=0,w=0,x=0,y=0,z=0,A=v(0);if(b){f=o[a+ -4>>2];d=o[a+ -8>>2];g=f-d|0;e=o[a+ -12>>2];p=g+(e-d|0)|0;y=p+(((e<<1)-d|0)-o[a+ -16>>2]|0)|0;while(1){d=o[(x<<2)+a>>2];e=d>>31;e=e^d+e;h=e+w|0;if(h>>>0<e>>>0){u=u+1|0}w=h;e=d-f|0;h=e>>31;h=h^e+h;f=h+t|0;if(f>>>0<h>>>0){q=q+1|0}t=f;h=e-g|0;f=h>>31;f=f^f+h;g=f+r|0;if(g>>>0<f>>>0){k=k+1|0}r=g;p=h-p|0;f=p>>31;f=f^f+p;g=f+m|0;if(g>>>0<f>>>0){i=i+1|0}m=g;g=p-y|0;f=g>>31;f=f^f+g;g=f+n|0;if(g>>>0<f>>>0){j=j+1|0}n=g;f=d;g=e;y=p;p=h;x=x+1|0;if((x|0)!=(b|0)){continue}break}}d=(k|0)==(q|0)&t>>>0<r>>>0|q>>>0<k>>>0;e=d?t:r;a=e;d=d?q:k;e=(i|0)==(d|0)&e>>>0<m>>>0|d>>>0<i>>>0;h=e?a:m;d=e?d:i;e=(j|0)==(d|0)&h>>>0<n>>>0|d>>>0<j>>>0;h=e?h:n;d=e?d:j;a=0;a:{if((d|0)==(u|0)&w>>>0<h>>>0|u>>>0<d>>>0){break a}d=(i|0)==(k|0)&r>>>0<m>>>0|k>>>0<i>>>0;e=d?r:m;a=e;d=d?k:i;e=(j|0)==(d|0)&e>>>0<n>>>0|d>>>0<j>>>0;h=e?a:n;d=e?d:j;a=1;if((d|0)==(q|0)&t>>>0<h>>>0|q>>>0<d>>>0){break a}a=(i|0)==(j|0)&m>>>0<n>>>0|i>>>0<j>>>0;d=a;e=d?m:n;a=d?i:j;a=(a|0)==(k|0)&r>>>0<e>>>0|k>>>0<a>>>0?2:d?3:4}g=c;if(u|w){l=v(la((+(w>>>0)+4294967296*+(u>>>0))*.6931471805599453/+(b>>>0))/.6931471805599453)}else{l=v(0)}s[g>>2]=l;g=c;if(q|t){l=v(la((+(t>>>0)+4294967296*+(q>>>0))*.6931471805599453/+(b>>>0))/.6931471805599453)}else{l=v(0)}s[g+4>>2]=l;g=c;if(k|r){l=v(la((+(r>>>0)+4294967296*+(k>>>0))*.6931471805599453/+(b>>>0))/.6931471805599453)}else{l=v(0)}s[g+8>>2]=l;g=c;if(i|m){l=v(la((+(m>>>0)+4294967296*+(i>>>0))*.6931471805599453/+(b>>>0))/.6931471805599453)}else{l=v(0)}s[g+12>>2]=l;if(!(j|n)){s[c+16>>2]=0;return a|0}z=c,A=v(la((+(n>>>0)+4294967296*+(j>>>0))*.6931471805599453/+(b>>>0))/.6931471805599453),s[z+16>>2]=A;return a|0}function _c(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=v(0),n=0,p=v(0),q=0,r=v(0);while(1){m=c;c=v(.05000000074505806);if(m<=v(0)){continue}c=v(.949999988079071);if(m>=v(1)){continue}break}c=v(m*v(.5));p=c;m=v(b|0);d=v(m*d);a:{if(v(w(d))<v(2147483648)){k=~~d;break a}k=-2147483648}d=v(p*v(k|0));b:{if(v(w(d))<v(2147483648)){g=~~d;break b}g=-2147483648}i=(g|0)<1;h=b;d=v(m*e);c:{if(v(w(d))<v(2147483648)){j=~~d;break c}j=-2147483648}c=v(c*v(h-j|0));d:{if(v(w(c))<v(2147483648)){h=~~c;break d}h=-2147483648}if(!((b|0)<1|i)){f=g+ -1>>>0<b+ -1>>>0?g:b;l=+(g|0);i=0;n=1;while(1){q=(i<<2)+a|0,r=v(.5-ba(+(n|0)*3.141592653589793/l)*.5),s[q>>2]=r;n=n+1|0;i=i+1|0;if((i|0)!=(f|0)){continue}break}}i=k-g|0;e:{if((f|0)>=(i|0)|(f|0)>=(b|0)){break e}while(1){o[(f<<2)+a>>2]=1065353216;f=f+1|0;if((f|0)>=(i|0)){break e}if((f|0)<(b|0)){continue}break}}f:{if((f|0)>=(k|0)|(f|0)>=(b|0)){break f}l=+(g|0);while(1){q=(f<<2)+a|0,r=v(.5-ba(+(g|0)*3.141592653589793/l)*.5),s[q>>2]=r;f=f+1|0;if((f|0)>=(k|0)){break f}g=g+ -1|0;if((f|0)<(b|0)){continue}break}}g:{if((f|0)>=(j|0)|(f|0)>=(b|0)){break g}g=f^-1;k=g+j|0;g=b+g|0;fa((f<<2)+a|0,((k>>>0<g>>>0?k:g)<<2)+4|0);while(1){f=f+1|0;if((f|0)>=(j|0)){break g}if((f|0)<(b|0)){continue}break}}j=h+j|0;h:{if((f|0)>=(j|0)|(f|0)>=(b|0)){break h}l=+(h|0);g=1;while(1){q=(f<<2)+a|0,r=v(.5-ba(+(g|0)*3.141592653589793/l)*.5),s[q>>2]=r;f=f+1|0;if((f|0)>=(j|0)){break h}g=g+1|0;if((f|0)<(b|0)){continue}break}}g=b-h|0;i:{if((f|0)>=(g|0)|(f|0)>=(b|0)){break i}while(1){o[(f<<2)+a>>2]=1065353216;f=f+1|0;if((f|0)>=(g|0)){break i}if((f|0)<(b|0)){continue}break}}if((f|0)<(b|0)){l=+(h|0);while(1){q=(f<<2)+a|0,r=v(.5-ba(+(h|0)*3.141592653589793/l)*.5),s[q>>2]=r;h=h+ -1|0;f=f+1|0;if((f|0)!=(b|0)){continue}break}}}function fc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=o[a+4>>2];c=g&3;d=g&-8;f=d+a|0;a:{if(!c){c=0;if(b>>>0<256){break a}if(d>>>0>=b+4>>>0){c=a;if(d-b>>>0<=o[3017]<<1>>>0){break a}}return 0}b:{if(d>>>0>=b>>>0){c=d-b|0;if(c>>>0<16){break b}o[a+4>>2]=g&1|b|2;b=a+b|0;o[b+4>>2]=c|3;o[f+4>>2]=o[f+4>>2]|1;Db(b,c);break b}c=0;if(o[2903]==(f|0)){d=d+o[2900]|0;if(d>>>0<=b>>>0){break a}o[a+4>>2]=g&1|b|2;c=a+b|0;b=d-b|0;o[c+4>>2]=b|1;o[2900]=b;o[2903]=c;break b}if(o[2902]==(f|0)){d=d+o[2899]|0;if(d>>>0<b>>>0){break a}c=d-b|0;c:{if(c>>>0>=16){o[a+4>>2]=g&1|b|2;b=a+b|0;o[b+4>>2]=c|1;d=a+d|0;o[d>>2]=c;o[d+4>>2]=o[d+4>>2]&-2;break c}o[a+4>>2]=d|g&1|2;b=a+d|0;o[b+4>>2]=o[b+4>>2]|1;c=0;b=0}o[2902]=b;o[2899]=c;break b}e=o[f+4>>2];if(e&2){break a}h=d+(e&-8)|0;if(h>>>0<b>>>0){break a}j=h-b|0;d:{if(e>>>0<=255){c=o[f+8>>2];e=e>>>3|0;d=o[f+12>>2];if((d|0)==(c|0)){l=11588,m=o[2897]&He(-2,e),o[l>>2]=m;break d}o[c+12>>2]=d;o[d+8>>2]=c;break d}i=o[f+24>>2];d=o[f+12>>2];e:{if((f|0)!=(d|0)){c=o[f+8>>2];o[c+12>>2]=d;o[d+8>>2]=c;break e}f:{c=f+20|0;e=o[c>>2];if(e){break f}c=f+16|0;e=o[c>>2];if(e){break f}d=0;break e}while(1){k=c;d=e;c=d+20|0;e=o[c>>2];if(e){continue}c=d+16|0;e=o[d+16>>2];if(e){continue}break}o[k>>2]=0}if(!i){break d}c=o[f+28>>2];e=(c<<2)+11892|0;g:{if(o[e>>2]==(f|0)){o[e>>2]=d;if(d){break g}l=11592,m=o[2898]&He(-2,c),o[l>>2]=m;break d}o[i+(o[i+16>>2]==(f|0)?16:20)>>2]=d;if(!d){break d}}o[d+24>>2]=i;c=o[f+16>>2];if(c){o[d+16>>2]=c;o[c+24>>2]=d}c=o[f+20>>2];if(!c){break d}o[d+20>>2]=c;o[c+24>>2]=d}if(j>>>0<=15){o[a+4>>2]=g&1|h|2;b=a+h|0;o[b+4>>2]=o[b+4>>2]|1;break b}o[a+4>>2]=g&1|b|2;b=a+b|0;o[b+4>>2]=j|3;c=a+h|0;o[c+4>>2]=o[c+4>>2]|1;Db(b,j)}c=a}return c}function kb(a,b,c,d,e,f,g){var h=0,i=0,j=0;h=N-16|0;N=h;a:{if(!e){break a}b:{switch(l[e](a,b,c,g)|0){case 1:o[o[a>>2]>>2]=5;break a;case 0:break b;default:break a}}e=da(282);o[d>>2]=e;if(!e){o[o[a>>2]>>2]=8;break a}i=27;while(1){o[h+12>>2]=i;b=5;c:{d:{switch(l[f](a,e,h+12|0,g)|0){case 1:b=o[h+12>>2];if(b){break c}b=2;default:o[o[a>>2]>>2]=b;break a;case 3:break a;case 0:break d}}b=o[h+12>>2]}e=b+e|0;i=i-b|0;if(i){continue}break}b=o[d>>2];o[d+4>>2]=p[b+26|0]+27;e:{if(!(m[b+5|0]&1|(p[b|0]|p[b+1|0]<<8|(p[b+2|0]<<16|p[b+3|0]<<24))!=1399285583|((p[b+6|0]|p[b+7|0]<<8|(p[b+8|0]<<16|p[b+9|0]<<24))!=0|(p[b+10|0]|p[b+11|0]<<8|(p[b+12|0]<<16|p[b+13|0]<<24))!=0))){i=p[b+26|0];if(i){break e}}o[o[a>>2]>>2]=2;break a}e=b+27|0;while(1){o[h+12>>2]=i;b=5;f:{g:{switch(l[f](a,e,h+12|0,g)|0){case 1:b=o[h+12>>2];if(b){break f}b=2;default:o[o[a>>2]>>2]=b;break a;case 3:break a;case 0:break g}}b=o[h+12>>2]}e=b+e|0;i=i-b|0;if(i){continue}break}e=0;b=o[d>>2];c=p[b+26|0];h:{if((c|0)!=1){c=c+ -1|0;while(1){if(p[(b+e|0)+27|0]!=255){o[o[a>>2]>>2]=2;break h}e=e+1|0;if(e>>>0<c>>>0){continue}break}}e=p[(b+e|0)+27|0]+u(e,255)|0;o[d+12>>2]=e;i=da(e?e:1);o[d+8>>2]=i;if(!i){o[o[a>>2]>>2]=8;break h}c=h;if(e){while(1){o[h+12>>2]=e;b=5;i:{j:{switch(l[f](a,i,h+12|0,g)|0){case 1:b=o[h+12>>2];if(b){break i}b=2;default:o[o[a>>2]>>2]=b;break h;case 3:break h;case 0:break j}}b=o[h+12>>2]}i=b+i|0;e=e-b|0;if(e){continue}break}b=o[d>>2]}o[c+12>>2]=p[b+22|0]|p[b+23|0]<<8|(p[b+24|0]<<16|p[b+25|0]<<24);tb(d);b=o[d>>2];if(o[h+12>>2]==(p[b+22|0]|p[b+23|0]<<8|(p[b+24|0]<<16|p[b+25|0]<<24))){j=1;break a}o[o[a>>2]>>2]=2}}N=h+16|0;return j}function qc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=N-16|0;N=i;a:{if(o[a+4>>2]<0){break a}e=o[a+12>>2];j=o[a+8>>2]-e|0;c=e+o[a>>2]|0;b:{c:{d:{f=o[a+20>>2];e:{if(!f){if((j|0)<27){break a}if((p[c|0]|p[c+1|0]<<8|(p[c+2|0]<<16|p[c+3|0]<<24))!=1399285583){break e}e=p[c+26|0];f=e+27|0;if((j|0)<(f|0)){break a}if(e){e=o[a+24>>2];while(1){e=p[(c+g|0)+27|0]+e|0;o[a+24>>2]=e;g=g+1|0;if(g>>>0<p[c+26|0]){continue}break}}o[a+20>>2]=f}if((o[a+24>>2]+f|0)>(j|0)){break a}e=p[c+22|0]|p[c+23|0]<<8|(p[c+24|0]<<16|p[c+25|0]<<24);o[i+12>>2]=e;g=0;m[c+22|0]=0;m[c+23|0]=0;m[c+24|0]=0;m[c+25|0]=0;k=o[a+24>>2];h=o[a+20>>2];m[c+22|0]=0;m[c+23|0]=0;m[c+24|0]=0;m[c+25|0]=0;if((h|0)>0){f=0;while(1){d=o[((p[c+f|0]^d>>>24)<<2)+6512>>2]^d<<8;f=f+1|0;if((h|0)!=(f|0)){continue}break}}if((k|0)>0){h=c+h|0;while(1){d=o[((p[g+h|0]^d>>>24)<<2)+6512>>2]^d<<8;g=g+1|0;if((k|0)!=(g|0)){continue}break}}m[c+22|0]=d;m[c+23|0]=d>>>8;m[c+24|0]=d>>>16;m[c+25|0]=d>>>24;if(o[i+12>>2]==(p[c+22|0]|p[c+23|0]<<8|(p[c+24|0]<<16|p[c+25|0]<<24))){break d}m[c+22|0]=e;m[c+23|0]=e>>>8;m[c+24|0]=e>>>16;m[c+25|0]=e>>>24}o[a+20>>2]=0;o[a+24>>2]=0;d=zc(c+1|0,j+ -1|0);if(!d){break c}g=o[a>>2];break b}h=o[a+12>>2];f:{if(!b){f=o[a+24>>2];d=o[a+20>>2];break f}e=h+o[a>>2]|0;o[b>>2]=e;d=o[a+20>>2];o[b+4>>2]=d;o[b+8>>2]=d+e;f=o[a+24>>2];o[b+12>>2]=f}o[a+24>>2]=0;o[a+16>>2]=0;o[a+20>>2]=0;d=d+f|0;o[a+12>>2]=h+d;break a}g=o[a>>2];d=g+o[a+8>>2]|0}o[a+12>>2]=d-g;d=c-d|0}N=i+16|0;return d}function Ud(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0;i=N-16|0;N=i;k=o[c>>2];o[c>>2]=0;a:{b:{c:{if(!k){break c}m=a+416|0;n=a+368|0;q=a+440|0;r=a+8|0;s=o[2721];t=p[7536];while(1){if(o[a+408>>2]){break c}d:{e:{if(o[a+412>>2]){if(o[a+432>>2]){j=o[a+440>>2];h=o[a+444>>2];f=k-g|0;if(h>>>0>f>>>0){break e}b=ca(b,j,h);o[c>>2]=h+o[c>>2];o[a+432>>2]=0;b=b+h|0;break d}f=wc(r,q);if((f|0)>=1){o[a+432>>2]=1;j=o[a+444>>2];if((j|0)<1){break d}h=o[q>>2];if(p[h|0]!=(t|0)){break d}g=3;if((j|0)<9){break a}f=s;if((p[h+1|0]|p[h+2|0]<<8|(p[h+3|0]<<16|p[h+4|0]<<24))!=(p[f|0]|p[f+1|0]<<8|(p[f+2|0]<<16|p[f+3|0]<<24))){break a}f=p[h+5|0];o[a+396>>2]=f;o[a+400>>2]=p[h+6|0];if((f|0)!=1){g=4;break a}o[a+444>>2]=j+ -9;o[a+440>>2]=h+9;break d}if(f){g=2;break a}o[a+412>>2]=0;break d}f=rc(n,m);if((f|0)>=1){if(o[a+404>>2]){f=o[m>>2];f=p[f+14|0]|p[f+15|0]<<8|(p[f+16|0]<<16|p[f+17|0]<<24);o[a+404>>2]=0;o[a+344>>2]=f;o[a+4>>2]=f}if(vc(r,m)){break d}o[a+432>>2]=0;o[a+412>>2]=1;break d}if(f){g=2;break a}f=k-o[c>>2]|0;f=f>>>0>8192?f:8192;g=tc(n,f);if(!g){g=7;break a}o[i+12>>2]=f;f:{switch((l[8](d,g,i+12|0,e)|0)+ -1|0){case 0:o[a+408>>2]=1;break;case 4:break b;default:break f}}if((pc(n,o[i+12>>2])|0)>=0){break d}g=6;break a}b=ca(b,j,f);o[c>>2]=f+o[c>>2];o[a+440>>2]=f+o[a+440>>2];o[a+444>>2]=o[a+444>>2]-f;b=b+f|0}g=o[c>>2];if(k>>>0>g>>>0){continue}break}}N=i+16|0;return!g&o[a+408>>2]!=0}g=5}N=i+16|0;return g}function Zb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0;g=N-16|0;N=g;m=(c<<2)+b|0;a:{if(!d){p=1;if((c|0)<1){break a}while(1){if(!eb(a,g+8|0)){p=0;break a}c=o[g+8>>2];o[b>>2]=c>>>1^0-(c&1);b=b+4|0;if(b>>>0<m>>>0){continue}break}break a}e=o[a+16>>2];k=o[a+8>>2];b:{if(e>>>0<k>>>0){l=o[a>>2];n=o[a+20>>2];j=o[l+(e<<2)>>2]<<n;c=0;break b}c=1}while(1){c:{d:{e:{f:{if(!c){f=32-n|0;g:{if(b>>>0<m>>>0){q=32-d|0;while(1){c=e;h=f;h:{if(j){h=x(j);i=h;break h}while(1){c=c+1|0;if(c>>>0>=k>>>0){break g}j=o[(c<<2)+l>>2];i=x(j);h=i+h|0;if(!j){continue}break}}e=j<<i<<1;i=e>>>q|0;o[g+8>>2]=h;f=(h^-1)+f&31;i:{if(f>>>0>=d>>>0){j=e<<d;f=f-d|0;e=c;break i}e=c+1|0;if(e>>>0>=k>>>0){break f}c=o[(e<<2)+l>>2];f=f+q|0;j=c<<32-f;i=c>>>f|i}o[g+12>>2]=i;c=h<<d|i;o[b>>2]=c>>>1^0-(c&1);b=b+4|0;if(b>>>0<m>>>0){continue}break}}b=e>>>0<k>>>0;o[a+16>>2]=(b&!f)+e;o[a+20>>2]=32-(f?f:b<<5);p=1;break a}o[a+20>>2]=0;c=e+1|0;o[a+16>>2]=k>>>0>c>>>0?k:c;break d}if(!eb(a,g+8|0)){break a}h=o[g+8>>2]+h|0;o[g+8>>2]=h;i=0;f=0;break e}o[a+16>>2]=e;o[a+20>>2]=0}if(!Y(a,g+12|0,d-f|0)){break a}c=h<<d;e=o[g+12>>2]|i;o[g+12>>2]=e;h=0;c=c|e;o[b>>2]=c>>>1^0-(c&1);l=o[a>>2];e=o[a+16>>2];n=o[a+20>>2];j=o[l+(e<<2)>>2]<<n;k=o[a+8>>2];b=b+4|0;if(e>>>0<k>>>0|b>>>0>=m>>>0){break c}}c=1;continue}c=0;continue}}N=g+16|0;return p}function yd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0;f=o[a>>2];l=o[f+36>>2];r=l+1|0;e=o[a+4>>2];k=o[f+24>>2];n=l<<2;a:{while(1){d=r-o[e+7052>>2]|0;g=c-h|0;g=d>>>0<g>>>0?d:g;if(o[f+4>>2]){if(k){f=g<<2;d=0;while(1){i=d<<2;ca(o[(i+e|0)+11764>>2]+(o[e+11800>>2]<<2)|0,o[b+i>>2]+(h<<2)|0,f);d=d+1|0;if((k|0)!=(d|0)){continue}break}}e=e+11800|0;o[e>>2]=g+o[e>>2]}if(k){f=g<<2;e=0;d=0;while(1){i=d<<2;m=o[i+b>>2];if(!m){break a}j=i;i=o[a+4>>2];ca(o[(j+i|0)+4>>2]+(o[i+7052>>2]<<2)|0,m+(h<<2)|0,f);d=d+1|0;if((k|0)!=(d|0)){continue}break}}f=o[a>>2];b:{if(o[f+16>>2]){e=o[a+4>>2];if(h>>>0>=c>>>0){break b}d=o[e+7052>>2];if(d>>>0>l>>>0){break b}i=o[e+40>>2];m=o[e+36>>2];s=o[b+4>>2];t=o[b>>2];while(1){p=d<<2;j=h<<2;q=j+t|0;j=j+s|0;o[i+p>>2]=o[q>>2]-o[j>>2];o[m+p>>2]=o[j>>2]+o[q>>2]>>1;h=h+1|0;if(h>>>0>=c>>>0){break b}d=d+1|0;if(d>>>0<=l>>>0){continue}break}break b}h=h+g|0;e=o[a+4>>2]}d=g+o[e+7052>>2]|0;o[e+7052>>2]=d;if(d>>>0>l>>>0){e=0;if(!Oa(a,0,0)){break a}if(k){e=o[a+4>>2];d=0;while(1){g=o[(e+(d<<2)|0)+4>>2];o[g>>2]=o[g+n>>2];d=d+1|0;if((k|0)!=(d|0)){continue}break}}e=o[a+4>>2];f=o[a>>2];if(o[f+16>>2]){d=o[e+36>>2];o[d>>2]=o[d+n>>2];d=o[e+40>>2];o[d>>2]=o[d+n>>2]}o[e+7052>>2]=1}if(h>>>0<c>>>0){continue}break}e=1}return e|0}function Yb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;i=1;a:{if(!c){break a}l=d+1|0;m=-1<<d;n=-1>>>31-d|0;while(1){g=o[b>>2];k=g<<1^g>>31;g=k>>>d|0;e=l+g|0;b:{c:{f=o[a+16>>2];if(!f){break c}h=e+f|0;if(h>>>0>31){break c}o[a+16>>2]=h;o[a+4>>2]=(k|m)&n|o[a+4>>2]<<e;break b}j=o[a+8>>2];h=o[a+12>>2];d:{if(j>>>0>(h+(g+f|0)|0)+1>>>0){break d}e=h+((e+f|0)+31>>>5|0)|0;if(e>>>0<=j>>>0){break d}h=o[a>>2];i=e;e=e-j&1023;f=i+(e?1024-e|0:0)|0;e:{if(f){i=0;if((f|0)!=(f&1073741823)){break a}j=ea(h,f<<2);if(j){break e}X(h);return 0}j=ea(h,0);i=0;if(!j){break a}}o[a+8>>2]=f;o[a>>2]=j}f:{if(!g){break f}e=o[a+16>>2];if(e){f=o[a+4>>2];h=32-e|0;if(g>>>0<h>>>0){o[a+16>>2]=e+g;o[a+4>>2]=f<<g;break f}e=f<<h;o[a+4>>2]=e;f=o[a+12>>2];o[a+12>>2]=f+1;o[o[a>>2]+(f<<2)>>2]=e<<8&16711680|e<<24|(e>>>8&65280|e>>>24);o[a+16>>2]=0;g=g-h|0}if(g>>>0>=32){e=o[a>>2];while(1){f=o[a+12>>2];o[a+12>>2]=f+1;o[e+(f<<2)>>2]=0;g=g+ -32|0;if(g>>>0>31){continue}break}}if(!g){break f}o[a+16>>2]=g;o[a+4>>2]=0}g=(k|m)&n;e=o[a+4>>2];h=o[a+16>>2];f=32-h|0;if(l>>>0<f>>>0){o[a+16>>2]=h+l;o[a+4>>2]=g|e<<l;break b}h=l-f|0;o[a+16>>2]=h;k=o[a+12>>2];o[a+12>>2]=k+1;e=e<<f|g>>>h;o[o[a>>2]+(k<<2)>>2]=e<<24|e<<8&16711680|(e>>>8&65280|e>>>24);o[a+4>>2]=g}b=b+4|0;c=c+ -1|0;if(c){continue}break}i=1}return i}function yc(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=-1;a:{b:{if(!a){break b}h=o[a>>2];if(!h){break b}if(!b){return 0}while(1){j=o[((f<<3)+b|0)+4>>2];if((j|0)<0|(k|0)>(2147483647-j|0)){break b}k=k+j|0;f=f+1|0;if((f|0)!=1){continue}break}j=(k|0)/255|0;f=o[a+12>>2];if(f){i=o[a+8>>2]-f|0;o[a+8>>2]=i;if(i){pa(h,f+h|0,i)}o[a+12>>2]=0}f=o[a+4>>2];if((f-k|0)<=o[a+8>>2]){if((f|0)>(2147483647-k|0)){break a}f=f+k|0;f=(f|0)<2147482623?f+1024|0:f;h=ea(o[a>>2],f);if(!h){break a}o[a>>2]=h;o[a+4>>2]=f}l=j+1|0;if(Hb(a,l)){break b}g=o[a+8>>2];f=0;while(1){i=o[a>>2]+g|0;g=(f<<3)+b|0;ca(i,o[g>>2],o[g+4>>2]);g=o[a+8>>2]+o[g+4>>2]|0;o[a+8>>2]=g;f=f+1|0;if((f|0)!=1){continue}break}h=o[a+28>>2];i=o[a+16>>2];m=i;c:{if((k|0)<=254){g=o[a+20>>2];b=0;break c}g=o[a+20>>2];f=0;while(1){b=f+h|0;o[i+(b<<2)>>2]=255;n=o[a+356>>2];b=(b<<3)+g|0;o[b>>2]=o[a+352>>2];o[b+4>>2]=n;f=f+1|0;if((j|0)!=(f|0)){continue}break}b=j}b=b+h|0;o[m+(b<<2)>>2]=k-u(j,255);b=(b<<3)+g|0;o[b>>2]=d;o[b+4>>2]=e;o[a+352>>2]=d;o[a+356>>2]=e;b=i+(h<<2)|0;o[b>>2]=o[b>>2]|256;o[a+28>>2]=h+l;d=o[a+348>>2];e=o[a+344>>2]+1|0;if(e>>>0<1){d=d+1|0}o[a+344>>2]=e;o[a+348>>2]=d;g=0;if(!c){break b}o[a+328>>2]=1}return g}b=o[a>>2];if(b){X(b)}b=o[a+16>>2];if(b){X(b)}b=o[a+20>>2];if(b){X(b)}fa(a,360);return-1}function lb(a){var b=0,c=0,d=0,e=0,f=0;a:{b:{c:{b=o[a+4>>2];d:{if(b>>>0<r[a+104>>2]){o[a+4>>2]=b+1;b=p[b|0];break d}b=ga(a)}switch(b+ -43|0){case 0:case 2:break b;default:break c}}c=b+ -48|0;break a}f=(b|0)==45;d=o[a+4>>2];e:{if(d>>>0<r[a+104>>2]){o[a+4>>2]=d+1;b=p[d|0];break e}b=ga(a)}c=b+ -48|0;if(!(c>>>0<10|!o[a+104>>2])){o[a+4>>2]=o[a+4>>2]+ -1}}f:{if(c>>>0<10){c=0;while(1){d=u(c,10)+b|0;b=o[a+4>>2];g:{if(b>>>0<r[a+104>>2]){o[a+4>>2]=b+1;b=p[b|0];break g}b=ga(a)}e=b+ -48|0;c=d+ -48|0;if((c|0)<214748364?e>>>0<=9:0){continue}break}d=c;c=c>>31;h:{if(e>>>0>=10){break h}while(1){e=b;b=Ee(d,c,10,0);c=e+b|0;d=Q;d=c>>>0<b>>>0?d+1|0:d;e=c;b=o[a+4>>2];i:{if(b>>>0<r[a+104>>2]){o[a+4>>2]=b+1;b=p[b|0];break i}b=ga(a)}c=d+ -1|0;d=e+ -48|0;if(d>>>0<4294967248){c=c+1|0}e=b+ -48|0;if(e>>>0>9){break h}if((c|0)<21474836?1:(c|0)<=21474836?d>>>0>=2061584302?0:1:0){continue}break}}if(e>>>0<10){while(1){b=o[a+4>>2];j:{if(b>>>0<r[a+104>>2]){o[a+4>>2]=b+1;b=p[b|0];break j}b=ga(a)}if(b+ -48>>>0<10){continue}break}}if(o[a+104>>2]){o[a+4>>2]=o[a+4>>2]+ -1}a=d;d=f?0-a|0:a;c=f?0-(c+(0<a>>>0)|0)|0:c;break f}d=0;c=-2147483648;if(!o[a+104>>2]){break f}o[a+4>>2]=o[a+4>>2]+ -1;Q=-2147483648;return 0}Q=c;return d}function nb(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=N-16|0;N=g;h=o[o[a+4>>2]+1136>>2];l=o[(f?5644:5640)>>2];m=o[(f?5632:5628)>>2];a:{b:{if(ab(d,c>>>0>6?c:6)){i=c?h>>>c|0:h-b|0;n=o[1409];if(!c){break b}f=0;while(1){if(!Y(o[o[a+4>>2]+56>>2],g+12|0,m)){h=0;break a}j=k<<2;o[j+o[d>>2]>>2]=o[g+12>>2];c:{if(r[g+12>>2]<l>>>0){h=0;o[j+o[d+4>>2]>>2]=0;j=i-(k?0:b)|0;if(!Zb(o[o[a+4>>2]+56>>2],(f<<2)+e|0,j,o[g+12>>2])){break a}f=f+j|0;break c}if(!Y(o[o[a+4>>2]+56>>2],g+12|0,n)){h=0;break a}o[j+o[d+4>>2]>>2]=o[g+12>>2];h=k?0:b;if(h>>>0>=i>>>0){break c}while(1){if(!xa(o[o[a+4>>2]+56>>2],g+8|0,o[g+12>>2])){h=0;break a}o[(f<<2)+e>>2]=o[g+8>>2];f=f+1|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}}h=1;k=k+1|0;if(!(k>>>c)){continue}break}break a}o[o[a>>2]>>2]=8;h=0;break a}h=0;if(!Y(o[o[a+4>>2]+56>>2],g+12|0,m)){break a}o[o[d>>2]>>2]=o[g+12>>2];d:{if(r[g+12>>2]>=l>>>0){if(!Y(o[o[a+4>>2]+56>>2],g+12|0,n)){break a}o[o[d+4>>2]>>2]=o[g+12>>2];if(!i){break d}f=0;while(1){if(!xa(o[o[a+4>>2]+56>>2],g+8|0,o[g+12>>2])){h=0;break a}o[(f<<2)+e>>2]=o[g+8>>2];f=f+1|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}break d}o[o[d+4>>2]>>2]=0;if(!Zb(o[o[a+4>>2]+56>>2],e,i,o[g+12>>2])){break a}}h=1}N=g+16|0;return h}function Pb(){var a=0,b=0,c=0,d=0,e=0;d=qa(1,8);if(d){c=qa(1,504);o[d>>2]=c;if(c){a=qa(1,6160);o[d+4>>2]=a;if(a){e=qa(1,44);o[a+56>>2]=e;if(e){o[a+1128>>2]=16;b=da(o[1364]<<1&-16);o[a+1120>>2]=b;if(b){o[a+252>>2]=0;o[a+220>>2]=0;o[a+224>>2]=0;b=a+3616|0;o[b>>2]=0;o[b+4>>2]=0;b=a+3608|0;o[b>>2]=0;o[b+4>>2]=0;b=a+3600|0;o[b>>2]=0;o[b+4>>2]=0;b=a+3592|0;o[b>>2]=0;o[b+4>>2]=0;o[a+60>>2]=0;o[a+64>>2]=0;o[a+68>>2]=0;o[a+72>>2]=0;o[a+76>>2]=0;o[a+80>>2]=0;o[a+84>>2]=0;o[a+88>>2]=0;o[a+92>>2]=0;o[a+96>>2]=0;o[a+100>>2]=0;o[a+104>>2]=0;o[a+108>>2]=0;o[a+112>>2]=0;o[a+116>>2]=0;o[a+120>>2]=0;o[a+132>>2]=0;o[a+124>>2]=0;o[a+128>>2]=0;o[a+144>>2]=0;o[a+136>>2]=0;o[a+140>>2]=0;o[a+156>>2]=0;o[a+148>>2]=0;o[a+152>>2]=0;o[a+168>>2]=0;o[a+160>>2]=0;o[a+164>>2]=0;o[a+180>>2]=0;o[a+172>>2]=0;o[a+176>>2]=0;o[a+192>>2]=0;o[a+184>>2]=0;o[a+188>>2]=0;o[a+204>>2]=0;o[a+196>>2]=0;o[a+200>>2]=0;o[a+216>>2]=0;o[a+208>>2]=0;o[a+212>>2]=0;o[a+48>>2]=0;o[a+52>>2]=0;fa(a+608|0,512);o[a+1124>>2]=0;o[a+608>>2]=1;o[a+32>>2]=0;o[a+24>>2]=0;o[a+28>>2]=0;o[a+16>>2]=0;o[a+20>>2]=0;o[a+8>>2]=0;o[a+12>>2]=0;o[a>>2]=0;o[a+4>>2]=0;o[c+28>>2]=0;o[c+32>>2]=1;o[c>>2]=9;return d|0}gb(e)}X(a)}X(c)}X(d)}return 0}function le(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;a:{b:{c:{d:{e:{f:{g:{if(b){b=o[a+140>>2];d=b;c=o[a+136>>2];if(!b&c>>>0<=88199|b>>>0<0){a=0;break a}if(Ge(c,d)|Q){a=0;break a}d=o[a+148>>2];if(!d){break b}if(p[(o[a+152>>2]+(d<<5)|0)+ -24|0]==170){break g}a=0;break a}e=o[a+148>>2];if(!e){break b}g=e+ -1|0;h=o[a+152>>2];b=0;while(1){d=h+(b<<5)|0;if(!p[d+8|0]){break c}c=p[d+23|0];h:{i:{if(b>>>0<g>>>0){if(!c){break d}if(p[o[d+24>>2]+8|0]>1){break e}break i}if(!c){break h}}a=0;while(1){if(a){f=o[d+24>>2]+(a<<4)|0;if((p[f+ -8|0]+1|0)!=p[f+8|0]){break f}}a=a+1|0;if(a>>>0<c>>>0){continue}break}}a=1;b=b+1|0;if((e|0)!=(b|0)){continue}break}break a}g=d+ -1|0;h=o[a+152>>2];b=0;while(1){a=h+(b<<5)|0;c=p[a+8|0];if(!c){break c}if(!((c|0)==170|c>>>0<100)){a=0;break a}if(Ge(o[a>>2],o[a+4>>2])|Q){a=0;break a}c=p[a+23|0];j:{k:{if(b>>>0<g>>>0){if(!c){break d}if(p[o[a+24>>2]+8|0]<2){break k}break e}if(!c){break j}}f=o[a+24>>2];a=0;while(1){e=f+(a<<4)|0;if(Ge(o[e>>2],o[e+4>>2])|Q){a=0;break a}if(p[e+8|0]!=(p[e+ -8|0]+1|0)?a:0){break f}a=a+1|0;if(a>>>0<c>>>0){continue}break}}a=1;b=b+1|0;if((d|0)!=(b|0)){continue}break}break a}a=0;break a}a=0;break a}a=0;break a}a=0;break a}a=0}return a}function $c(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=v(0),m=0,n=0,p=0,q=v(0);while(1){l=c;c=v(.05000000074505806);if(l<=v(0)){continue}c=v(.949999988079071);if(l>=v(1)){continue}break}c=v(b|0);d=v(c*d);a:{if(v(w(d))<v(2147483648)){g=~~d;break a}g=-2147483648}d=v(l*v(.5));c=v(c*e);b:{if(v(w(c))<v(2147483648)){k=~~c;break b}k=-2147483648}c=v(d*v(k-g|0));c:{if(v(w(c))<v(2147483648)){h=~~c;break c}h=-2147483648}if(!((g|0)<1|(b|0)<1)){f=g+ -1|0;i=b+ -1|0;i=f>>>0<i>>>0?f:i;fa(a,(i<<2)+4|0);f=i+1|0;while(1){n=(j|0)==(i|0);j=j+1|0;if(!n){continue}break}}g=g+h|0;d:{if((f|0)>=(g|0)|(f|0)>=(b|0)){break d}m=+(h|0);j=1;while(1){p=(f<<2)+a|0,q=v(.5-ba(+(j|0)*3.141592653589793/m)*.5),s[p>>2]=q;f=f+1|0;if((f|0)>=(g|0)){break d}j=j+1|0;if((f|0)<(b|0)){continue}break}}g=k-h|0;e:{if((f|0)>=(g|0)|(f|0)>=(b|0)){break e}while(1){o[(f<<2)+a>>2]=1065353216;f=f+1|0;if((f|0)>=(g|0)){break e}if((f|0)<(b|0)){continue}break}}f:{if((f|0)>=(k|0)|(f|0)>=(b|0)){break f}m=+(h|0);while(1){p=(f<<2)+a|0,q=v(.5-ba(+(h|0)*3.141592653589793/m)*.5),s[p>>2]=q;f=f+1|0;if((f|0)>=(k|0)){break f}h=h+ -1|0;if((f|0)<(b|0)){continue}break}}if((f|0)<(b|0)){fa((f<<2)+a|0,b-f<<2)}}function pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=v(0),f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,t=0,u=0,w=v(0);if(b){d=o[a+ -4>>2];i=o[a+ -8>>2];m=d-i|0;f=o[a+ -12>>2];j=m+(f-i|0)|0;t=j+(((f<<1)-i|0)-o[a+ -16>>2]|0)|0;while(1){i=o[(q<<2)+a>>2];f=i>>31;p=(f^f+i)+p|0;f=i-d|0;l=f>>31;n=(l^f+l)+n|0;l=f-m|0;d=l>>31;k=(d^d+l)+k|0;j=l-j|0;d=j>>31;g=(d^d+j)+g|0;m=j-t|0;d=m>>31;h=(d^d+m)+h|0;d=i;m=f;t=j;j=l;q=q+1|0;if((q|0)!=(b|0)){continue}break}}a=n>>>0<k>>>0?n:k;a=a>>>0<g>>>0?a:g;a:{if(p>>>0<(a>>>0<h>>>0?a:h)>>>0){break a}r=1;a=k>>>0<g>>>0?k:g;if(n>>>0<(a>>>0<h>>>0?a:h)>>>0){break a}a=g>>>0<h>>>0;r=k>>>0<(a?g:h)>>>0?2:a?3:4}a=c;if(p){e=v(la(+(p>>>0)*.6931471805599453/+(b>>>0))/.6931471805599453)}else{e=v(0)}s[a>>2]=e;a=c;if(n){e=v(la(+(n>>>0)*.6931471805599453/+(b>>>0))/.6931471805599453)}else{e=v(0)}s[a+4>>2]=e;a=c;if(k){e=v(la(+(k>>>0)*.6931471805599453/+(b>>>0))/.6931471805599453)}else{e=v(0)}s[a+8>>2]=e;a=c;if(g){e=v(la(+(g>>>0)*.6931471805599453/+(b>>>0))/.6931471805599453)}else{e=v(0)}s[a+12>>2]=e;if(!h){s[c+16>>2]=0;return r|0}u=c,w=v(la(+(h>>>0)*.6931471805599453/+(b>>>0))/.6931471805599453),s[u+16>>2]=w;return r|0}function Gc(a,b,c,d){var e=0,h=0,i=0,j=0,k=0,l=0,m=0;i=N-32|0;N=i;e=d&2147483647;k=e;e=e+ -1006698496|0;j=c;h=c;if(c>>>0<0){e=e+1|0}l=h;h=e;e=k+ -1140785152|0;m=j;if(j>>>0<0){e=e+1|0}a:{if((e|0)==(h|0)&l>>>0<m>>>0|h>>>0<e>>>0){e=d<<4|c>>>28;c=c<<4|b>>>28;b=b&268435455;j=b;if((b|0)==134217728&a>>>0>=1|b>>>0>134217728){e=e+1073741824|0;a=c+1|0;if(a>>>0<1){e=e+1|0}h=a;break a}h=c;e=e-((c>>>0<0)+ -1073741824|0)|0;if(a|j^134217728){break a}a=h+(h&1)|0;if(a>>>0<h>>>0){e=e+1|0}h=a;break a}if(!(!j&(k|0)==2147418112?!(a|b):(k|0)==2147418112&j>>>0<0|k>>>0<2147418112)){e=d<<4|c>>>28;h=c<<4|b>>>28;e=e&524287|2146959360;break a}h=0;e=2146435072;if(k>>>0>1140785151){break a}e=0;j=k>>>16|0;if(j>>>0<15249){break a}e=d&65535|65536;ia(i+16|0,a,b,c,e,j+ -15233|0);Ja(i,a,b,c,e,15361-j|0);c=o[i+4>>2];a=o[i+8>>2];e=o[i+12>>2]<<4|a>>>28;h=a<<4|c>>>28;a=c&268435455;c=a;b=o[i>>2]|((o[i+16>>2]|o[i+24>>2])!=0|(o[i+20>>2]|o[i+28>>2])!=0);if((a|0)==134217728&b>>>0>=1|a>>>0>134217728){a=h+1|0;if(a>>>0<1){e=e+1|0}h=a;break a}if(b|c^134217728){break a}a=h+(h&1)|0;if(a>>>0<h>>>0){e=e+1|0}h=a}N=i+32|0;f(0,h|0);f(1,d&-2147483648|e);return+g()}function Va(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;c=N-16|0;N=c;f=1;a:{while(1){b=0;b:{while(1){g=o[a+4>>2];c:{if(o[g+3520>>2]){e=p[g+3590|0];o[c+8>>2]=e;o[g+3520>>2]=0;break c}if(!Y(o[g+56>>2],c+8|0,8)){d=0;break a}e=o[c+8>>2]}if(p[d+5409|0]==(e|0)){d=d+1|0;b=1;break b}d=0;if((b|0)==3){break a}if(p[b+7552|0]==(e|0)){b=b+1|0;if((b|0)!=3){continue}if(!Y(o[o[a+4>>2]+56>>2],c+12|0,24)){break a}if(!Y(o[o[a+4>>2]+56>>2],c+12|0,8)){break a}e=o[c+12>>2];if(!Y(o[o[a+4>>2]+56>>2],c+12|0,8)){break a}g=o[c+12>>2];if(!Y(o[o[a+4>>2]+56>>2],c+12|0,8)){break a}h=o[c+12>>2];if(!Y(o[o[a+4>>2]+56>>2],c+12|0,8)){break a}if(Ea(o[o[a+4>>2]+56>>2],o[c+12>>2]&127|(h<<7&16256|(g&127|e<<7&16256)<<14))){continue}break a}break}d:{if((e|0)!=255){break d}m[o[a+4>>2]+3588|0]=255;if(!Y(o[o[a+4>>2]+56>>2],c+8|0,8)){break a}b=o[c+8>>2];if((b|0)==255){b=o[a+4>>2];o[b+3520>>2]=1;m[b+3590|0]=255;break d}if((b&-2)!=248){break d}m[o[a+4>>2]+3589|0]=b;o[o[a>>2]>>2]=3;d=1;break a}b=0;if(!f){break b}f=o[a+4>>2];b=0;if(o[f+3632>>2]){break b}l[o[f+32>>2]](a,0,o[f+48>>2]);b=0}f=b;if(d>>>0<4){continue}break}d=1;o[o[a>>2]>>2]=1}N=c+16|0;return d}function ca(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){K(a|0,b|0,c|0)|0;return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if((c|0)<1){c=a;break b}if(!(a&3)){c=a;break b}c=a;while(1){m[c|0]=p[b|0];b=b+1|0;c=c+1|0;if(c>>>0>=e>>>0){break b}if(c&3){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+ -64|0;if(c>>>0>f>>>0){break c}while(1){o[c>>2]=o[b>>2];o[c+4>>2]=o[b+4>>2];o[c+8>>2]=o[b+8>>2];o[c+12>>2]=o[b+12>>2];o[c+16>>2]=o[b+16>>2];o[c+20>>2]=o[b+20>>2];o[c+24>>2]=o[b+24>>2];o[c+28>>2]=o[b+28>>2];o[c+32>>2]=o[b+32>>2];o[c+36>>2]=o[b+36>>2];o[c+40>>2]=o[b+40>>2];o[c+44>>2]=o[b+44>>2];o[c+48>>2]=o[b+48>>2];o[c+52>>2]=o[b+52>>2];o[c+56>>2]=o[b+56>>2];o[c+60>>2]=o[b+60>>2];b=b- -64|0;c=c- -64|0;if(c>>>0<=f>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){o[c>>2]=o[b>>2];b=b+4|0;c=c+4|0;if(c>>>0<d>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e+ -4|0;if(d>>>0<a>>>0){c=a;break a}c=a;while(1){m[c|0]=p[b|0];m[c+1|0]=p[b+1|0];m[c+2|0]=p[b+2|0];m[c+3|0]=p[b+3|0];b=b+4|0;c=c+4|0;if(c>>>0<=d>>>0){continue}break}}if(c>>>0<e>>>0){while(1){m[c|0]=p[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function Ia(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;g=N-16|0;N=g;f=o[a+16>>2];a:{if(!f){c=o[a+8>>2];break a}b=o[a+28>>2];b:{if(f>>>0<=b>>>0){d=b;break b}c=o[a+32>>2];if(!c){d=b;break b}d=b+1|0;o[a+28>>2]=d;e=o[a+24>>2];if(c>>>0<=31){b=o[o[a>>2]+(b<<2)>>2];while(1){e=q[((b>>>24-c&255^e>>>8)<<1)+1280>>1]^e<<8&65280;i=c>>>0<24;h=c+8|0;c=h;if(i){continue}break}o[a+32>>2]=h}o[a+32>>2]=0;o[a+24>>2]=e}b=Wb(o[a>>2]+(d<<2)|0,f-d|0,q[a+24>>1]);o[a+28>>2]=0;o[a+24>>2]=b;d=o[a>>2];b=o[a+16>>2];pa(d,d+(b<<2)|0,(o[a+8>>2]-b|0)+(o[a+12>>2]!=0)<<2);o[a+16>>2]=0;c=o[a+8>>2]-b|0;o[a+8>>2]=c}b=o[a+12>>2];d=(o[a+4>>2]-c<<2)-b|0;o[g+12>>2]=d;e=0;c:{if(!d){break c}d=o[a>>2]+(c<<2)|0;c=d+b|0;if(b){b=o[d>>2];o[d>>2]=b<<24|b<<8&16711680|(b>>>8&65280|b>>>24)}if(!l[o[a+36>>2]](c,g+12|0,o[a+40>>2])){break c}d=a;i=o[g+12>>2];c=o[a+12>>2];e=o[a+8>>2];b=e<<2;f=(i+(c+b|0)|0)+3>>>2|0;if(e>>>0<f>>>0){c=o[a>>2];while(1){h=c+(e<<2)|0;b=o[h>>2];o[h>>2]=b<<8&16711680|b<<24|(b>>>8&65280|b>>>24);e=e+1|0;if((f|0)!=(e|0)){continue}break}c=o[a+12>>2];b=o[a+8>>2]<<2}b=(c+i|0)+b|0;o[d+12>>2]=b&3;o[a+8>>2]=b>>>2;e=1}N=g+16|0;return e}function nc(a,b){var c=0,d=0,e=0,f=0,g=0;c=N-208|0;N=c;o[c+8>>2]=1;o[c+12>>2]=0;a:{g=u(b,24);if(!g){break a}o[c+16>>2]=24;o[c+20>>2]=24;b=24;f=24;e=2;while(1){d=b;b=(f+24|0)+b|0;o[(c+16|0)+(e<<2)>>2]=b;e=e+1|0;f=d;if(b>>>0<g>>>0){continue}break}d=(a+g|0)+ -24|0;b:{if(d>>>0<=a>>>0){e=1;b=1;break b}e=1;b=1;while(1){c:{if((e&3)==3){Sa(a,b,c+16|0);La(c+8|0,2);b=b+2|0;break c}f=b+ -1|0;d:{if(r[(c+16|0)+(f<<2)>>2]>=d-a>>>0){Ka(a,c+8|0,b,0,c+16|0);break d}Sa(a,b,c+16|0)}if((b|0)==1){Ma(c+8|0,1);b=0;break c}Ma(c+8|0,f);b=1}e=o[c+8>>2]|1;o[c+8>>2]=e;a=a+24|0;if(a>>>0<d>>>0){continue}break}}Ka(a,c+8|0,b,0,c+16|0);while(1){e:{f:{g:{if(!((b|0)!=1|(e|0)!=1)){if(o[c+12>>2]){break g}break a}if((b|0)>1){break f}}f=c+8|0;d=De(o[c+8>>2]+ -1|0);if(!d){d=De(o[c+12>>2]);d=d?d+32|0:0}La(f,d);e=o[c+8>>2];b=b+d|0;break e}Ma(c+8|0,2);o[c+8>>2]=o[c+8>>2]^7;La(c+8|0,1);f=a+ -24|0;d=b+ -2|0;Ka(f-o[(c+16|0)+(d<<2)>>2]|0,c+8|0,b+ -1|0,1,c+16|0);Ma(c+8|0,1);e=o[c+8>>2]|1;o[c+8>>2]=e;Ka(f,c+8|0,d,1,c+16|0);b=d}a=a+ -24|0;continue}}N=c+208|0}function ec(a){var b=0,c=0,d=0,e=0;c=1;a:{b=p[a|0];b:{if(!(b&128)){break b}if(!((b&224)!=192|(p[a+1|0]&192)!=128)){return((b&254)!=192)<<1}c:{if((b&240)!=224){break c}d=p[a+1|0];if((d&192)!=128){break c}e=p[a+2|0];if((e&192)!=128){break c}c=0;if((d&224)==128?(b|0)==224:0){break b}d:{e:{switch(b+ -237|0){case 0:if((d&224)!=160){break d}break b;case 2:break e;default:break d}}if((d|0)!=191){break d}if((e&254)==190){break b}}return 3}f:{if((b&248)!=240){break f}c=p[a+1|0];if((c&192)!=128|(p[a+2|0]&192)!=128){break f}if((p[a+3|0]&192)==128){break a}}g:{if((b&252)!=248){break g}c=p[a+1|0];if((c&192)!=128|(p[a+2|0]&192)!=128|((p[a+3|0]&192)!=128|(p[a+4|0]&192)!=128)){break g}return(b|0)==248?(c&248)==128?0:5:5}c=0;if((b&254)!=252){break b}d=p[a+1|0];if((d&192)!=128|(p[a+2|0]&192)!=128|((p[a+3|0]&192)!=128|(p[a+4|0]&192)!=128)){break b}if((p[a+5|0]&192)!=128){break b}c=(b|0)==252?(d&252)==128?0:6:6}return c}return(b|0)==240?((c&240)!=128)<<2:4}function oc(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0;l=1<<f;p=l>>>0>1?l:1;i=0-d|0;m=c+d>>>f|0;j=m-d|0;a:{if(g+4>>>0<(x(m)^-32)+33>>>0){g=0;while(1){d=0;i=i+m|0;if(h>>>0<i>>>0){while(1){c=o[(h<<2)+a>>2];k=c>>31;d=(k^c+k)+d|0;h=h+1|0;if(h>>>0<i>>>0){continue}break}h=j}c=(g<<3)+b|0;o[c>>2]=d;o[c+4>>2]=0;j=j+m|0;g=g+1|0;if((p|0)!=(g|0)){continue}break}break a}c=0;while(1){n=0;d=0;i=i+m|0;if(h>>>0<i>>>0){while(1){g=o[(h<<2)+a>>2];k=g>>31;k=k^g+k;g=k+n|0;if(g>>>0<k>>>0){d=d+1|0}n=g;h=h+1|0;if(h>>>0<i>>>0){continue}break}h=j}g=(c<<3)+b|0;o[g>>2]=n;o[g+4>>2]=d;j=j+m|0;c=c+1|0;if((p|0)!=(c|0)){continue}break}}if((f|0)>(e|0)){h=0;a=l;while(1){f=f+ -1|0;i=0;a=a>>>1|0;if(a){while(1){d=(h<<3)+b|0;c=o[d+8>>2];j=o[d+12>>2]+o[d+4>>2]|0;d=o[d>>2];c=d+c|0;if(c>>>0<d>>>0){j=j+1|0}g=(l<<3)+b|0;o[g>>2]=c;o[g+4>>2]=j;h=h+2|0;l=l+1|0;i=i+1|0;if((i|0)!=(a|0)){continue}break}}if((f|0)>(e|0)){continue}break}}}function Ce(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{d=b;if(d){e=c;if(!e){break i}break h}b=a;a=(a>>>0)/(c>>>0)|0;O=b-u(a,c)|0;P=0;Q=0;return a}if(!a){break g}break f}g=e+ -1|0;if(!(g&e)){break e}g=(x(e)+33|0)-x(d)|0;h=0-g|0;break c}O=0;a=(d>>>0)/0|0;P=d-u(a,0)|0;Q=0;return a}d=32-x(d)|0;if(d>>>0<31){break d}break b}O=a&g;P=0;if((e|0)==1){break a}d=De(e);c=d&31;if(32<=(d&63)>>>0){e=0;a=b>>>c|0}else{e=b>>>c|0;a=((1<<c)-1&b)<<32-c|a>>>c}Q=e;return a}g=d+1|0;h=63-d|0}d=b;e=g&63;f=e&31;if(32<=e>>>0){e=0;f=d>>>f|0}else{e=d>>>f|0;f=((1<<f)-1&d)<<32-f|a>>>f}h=h&63;d=h&31;if(32<=h>>>0){b=a<<d;a=0}else{b=(1<<d)-1&a>>>32-d|b<<d;a=a<<d}if(g){h=-1;d=c+ -1|0;if((d|0)!=-1){h=0}while(1){i=f<<1|b>>>31;j=i;e=e<<1|f>>>31;i=h-(e+(d>>>0<i>>>0)|0)>>31;k=c&i;f=j-k|0;e=e-(j>>>0<k>>>0)|0;b=b<<1|a>>>31;a=l|a<<1;i=i&1;l=i;g=g+ -1|0;if(g){continue}break}}O=f;P=e;Q=b<<1|a>>>31;return i|a<<1}O=a;P=b;a=0;b=0}Q=b;return a}function ac(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=o[b>>2];f=o[d+4>>2];a=o[b+8>>2];if(a){e=h<<2;while(1){i=g<<2;j=o[i+c>>2];k=o[(f+i|0)+11764>>2];if(Pa(j,k,e)){e=0;a:{if(h){a=0;while(1){c=a<<2;i=o[c+j>>2];c=o[c+k>>2];if((i|0)!=(c|0)){e=a;break a}a=a+1|0;if((h|0)!=(a|0)){continue}break}}c=0;i=0}j=o[b+28>>2];a=e;l=a+o[b+24>>2]|0;if(l>>>0<a>>>0){j=j+1|0}k=f+11816|0;o[k>>2]=l;o[k+4>>2]=j;a=o[b+28>>2];b=o[b+24>>2];o[f+11840>>2]=i;o[f+11836>>2]=c;o[f+11832>>2]=e;o[f+11828>>2]=g;m=f+11824|0,n=Fe(b,a,h),o[m>>2]=n;o[o[d>>2]>>2]=4;return 1}g=g+1|0;if((a|0)!=(g|0)){continue}break}c=f+11800|0;b=o[c>>2]-h|0;o[c>>2]=b;b:{if(!a){break b}c=o[f+11764>>2];e=c;c=h<<2;pa(e,e+c|0,b<<2);g=1;if((a|0)==1){break b}while(1){b=o[d+4>>2];e=o[(b+(g<<2)|0)+11764>>2];pa(e,c+e|0,o[b+11800>>2]<<2);g=g+1|0;if((a|0)!=(g|0)){continue}break}}return 0}a=f+11800|0;o[a>>2]=o[a>>2]-h;return 0}function re(a,b,c){if((c|0)==15|c>>>0<15){if(!c&b>>>0<=127|c>>>0<0){return Z(a,b,8)}if(!c&b>>>0<=2047|c>>>0<0){return Z(a,(c&63)<<26|b>>>6|192,8)&Z(a,b&63|128,8)&1}if(!c&b>>>0<=65535|c>>>0<0){return Z(a,(c&4095)<<20|b>>>12|224,8)&Z(a,b>>>6&63|128,8)&Z(a,b&63|128,8)&1}if(!c&b>>>0<=2097151|c>>>0<0){return Z(a,(c&262143)<<14|b>>>18|240,8)&Z(a,b>>>12&63|128,8)&Z(a,b>>>6&63|128,8)&Z(a,b&63|128,8)&1}if(!c&b>>>0<=67108863|c>>>0<0){return Z(a,(c&16777215)<<8|b>>>24|248,8)&Z(a,b>>>18&63|128,8)&Z(a,b>>>12&63|128,8)&Z(a,b>>>6&63|128,8)&Z(a,b&63|128,8)&1}if(!c&b>>>0<=2147483647|c>>>0<0){return Z(a,(c&1073741823)<<2|b>>>30|252,8)&Z(a,b>>>24&63|128,8)&Z(a,b>>>18&63|128,8)&Z(a,b>>>12&63|128,8)&Z(a,b>>>6&63|128,8)&Z(a,b&63|128,8)&1}a=Z(a,254,8)&Z(a,(c&1073741823)<<2|b>>>30|128,8)&Z(a,b>>>24&63|128,8)&Z(a,b>>>18&63|128,8)&Z(a,b>>>12&63|128,8)&Z(a,b>>>6&63|128,8)&Z(a,b&63|128,8)&1}else{a=0}return a}function yb(a){var b=0,c=0,d=0,e=0,f=0;e=N-16|0;N=e;a:{b:{c:{c=o[a+4>>2];if(!o[c+248>>2]){break c}d=o[c+308>>2];b=d;f=o[c+304>>2];if(!(b|f)){break c}d=o[c+244>>2];if((b|0)==(d|0)&r[c+240>>2]<f>>>0|d>>>0<b>>>0){break c}o[o[a>>2]>>2]=4;break b}d:{if(!(p[o[c+56>>2]+20|0]&7)){break d}c=o[o[a+4>>2]+56>>2];if(Y(c,e+12|0,8-(o[c+20>>2]&7)|0)){break d}b=0;break a}c=0;while(1){d=o[a+4>>2];e:{if(o[d+3520>>2]){b=p[d+3590|0];o[e+12>>2]=b;o[d+3520>>2]=0;break e}b=0;if(!Y(o[d+56>>2],e+12|0,8)){break a}b=o[e+12>>2]}f:{if((b|0)!=255){break f}m[o[a+4>>2]+3588|0]=255;b=0;if(!Y(o[o[a+4>>2]+56>>2],e+12|0,8)){break a}b=o[e+12>>2];if((b|0)==255){b=o[a+4>>2];o[b+3520>>2]=1;m[b+3590|0]=255;break f}if((b&-2)!=248){break f}m[o[a+4>>2]+3589|0]=b;o[o[a>>2]>>2]=3;break b}b=c;c=1;if(b){continue}b=o[a+4>>2];if(o[b+3632>>2]){continue}l[o[b+32>>2]](a,0,o[b+48>>2]);continue}}b=1}N=e+16|0;return b}function Nb(a){a=a|0;var b=0,c=0,d=0;b=o[a+4>>2];a:{if(o[o[a>>2]>>2]==9?!o[b+3628>>2]:0){break a}o[b+3624>>2]=0;o[b+240>>2]=0;o[b+244>>2]=0;if(o[b>>2]){Wd(o[a>>2]+32|0);b=o[a+4>>2]}b=o[b+56>>2];o[b+8>>2]=0;o[b+12>>2]=0;o[b+16>>2]=0;o[b+20>>2]=0;c=o[a>>2];o[c>>2]=2;b=o[a+4>>2];if(o[b>>2]){Td(c+32|0);b=o[a+4>>2]}b:{if(!o[b+3628>>2]){c=0;if(o[b+52>>2]==o[1887]){break a}d=o[b+8>>2];if(!d){break b}if((l[d](a,0,0,o[b+48>>2])|0)==1){break a}b=o[a+4>>2];break b}o[b+3628>>2]=0}o[o[a>>2]>>2]=0;o[b+248>>2]=0;X(o[b+452>>2]);o[o[a+4>>2]+452>>2]=0;b=o[a+4>>2];o[b+252>>2]=0;o[b+3624>>2]=o[o[a>>2]+28>>2];o[b+228>>2]=0;o[b+232>>2]=0;b=b+3636|0;o[b+80>>2]=0;o[b+84>>2]=0;o[b+64>>2]=1732584193;o[b+68>>2]=-271733879;o[b+72>>2]=-1732584194;o[b+76>>2]=271733878;o[b+88>>2]=0;o[b+92>>2]=0;a=o[a+4>>2];o[a+6152>>2]=0;o[a+6136>>2]=0;o[a+6140>>2]=0;c=1}return c|0}function we(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;h=N-16|0;N=h;a:{if(!Y(a,h+12|0,8)){break a}e=o[h+12>>2];if(c){g=o[d>>2];o[d>>2]=g+1;m[c+g|0]=e}b:{c:{d:{e:{if(e&128){if(!(!(e&192)|e&32)){e=e&31;f=1;break e}if(!(!(e&224)|e&16)){e=e&15;f=2;break e}if(!(!(e&240)|e&8)){e=e&7;f=3;break e}if(!(!(e&248)|e&4)){e=e&3;f=4;break e}if(!(!(e&252)|e&2)){e=e&1;f=5;break e}f=1;if(!(!(e&254)|e&1)){f=6;e=0;break e}o[b>>2]=-1;o[b+4>>2]=-1;break a}g=0;break d}g=0;if(!c){while(1){if(!Y(a,h+12|0,8)){f=0;break a}c=o[h+12>>2];if((c&192)!=128){break c}c=c&63;g=g<<6|e>>>26;e=c|e<<6;f=f+ -1|0;if(f){continue}break d}}while(1){if(!Y(a,h+12|0,8)){f=0;break a}i=o[h+12>>2];j=o[d>>2];o[d>>2]=j+1;m[c+j|0]=i;if((i&192)!=128){break c}g=g<<6|e>>>26;e=i&63|e<<6;f=f+ -1|0;if(f){continue}break}}o[b>>2]=e;o[b+4>>2]=g;break b}o[b>>2]=-1;o[b+4>>2]=-1}f=1}N=h+16|0;return f}function Cc(a){var b=0,c=0,d=0,f=0,g=0,i=0,j=0,k=0;h(+a);d=e(1)|0;j=e(0)|0;g=d>>>31|0;a:{b:{c:{d:{f=a;e:{f:{c=d;d=c&2147483647;g:{if(d>>>0>=1082532651){c=c&2147483647;if((c|0)==2146435072&j>>>0>0|c>>>0>2146435072){return a}if(!!(a>709.782712893384)){return a*8.98846567431158e+307}if(!(a<-745.1332191019411)|a<-708.3964185322641^1){break g}break b}if(d>>>0<1071001155){break d}if(d>>>0<1072734898){break f}}a=a*1.4426950408889634+t[(g<<3)+10448>>3];if(w(a)<2147483648){c=~~a;break e}c=-2147483648;break e}c=(g^1)-g|0}b=+(c|0);a=f+b*-.6931471803691238;i=b*1.9082149292705877e-10;f=a-i;break c}if(d>>>0<=1043333120){break a}c=0;f=a}b=f;k=a;b=b*b;a=f-b*(b*(b*(b*(b*4.1381367970572385e-8+ -16533902205465252e-22)+6613756321437934e-20)+ -.0027777777777015593)+.16666666666666602);b=k+(f*a/(2-a)-i)+1;if(!c){break b}b=ua(b,c)}return b}return a+1}function me(a,b,c,d){var e=0,f=0,g=0,h=0,i=0;a:{b:{c:{switch(c|0){case 4:if((b|0)<1){break b}f=o[d+ -12>>2];g=o[d+ -4>>2];c=0;while(1){i=c<<2;h=i+d|0;e=o[h+ -8>>2];g=((o[a+i>>2]+u(e,-6)|0)-o[h+ -16>>2]|0)+(f+g<<2)|0;o[h>>2]=g;f=e;c=c+1|0;if((c|0)!=(b|0)){continue}break}break b;case 3:if((b|0)<1){break b}e=o[d+ -12>>2];f=o[d+ -4>>2];c=0;while(1){g=c<<2;h=g+d|0;i=o[a+g>>2]+e|0;e=o[h+ -8>>2];f=i+u(f-e|0,3)|0;o[h>>2]=f;c=c+1|0;if((c|0)!=(b|0)){continue}break}break b;case 2:if((b|0)<1){break b}e=o[d+ -4>>2];c=0;while(1){f=c<<2;g=f+d|0;e=(o[a+f>>2]+(e<<1)|0)-o[g+ -8>>2]|0;o[g>>2]=e;c=c+1|0;if((c|0)!=(b|0)){continue}break}break b;case 0:break a;case 1:break c;default:break b}}if((b|0)<1){break b}e=o[d+ -4>>2];c=0;while(1){f=c<<2;e=o[f+a>>2]+e|0;o[d+f>>2]=e;c=c+1|0;if((c|0)!=(b|0)){continue}break}}return}ca(d,a,b<<2)}function $d(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=v(0);i=N-16|0;N=i;a:{if(!b){h=2;break a}f=c+ -1|0;c=0;while(1){m=+v(w(s[(c<<2)+a>>2]));g=g<m?m:g;c=c+1|0;if((c|0)!=(b|0)){continue}break}h=2;if(g<=0){break a}k=1<<f;n=k+ -1|0;l=0-k|0;xb(g,i+12|0);c=o[i+12>>2];o[i+12>>2]=c+ -1;f=f-c|0;o[e>>2]=f;b:{h=-1<<o[1413]+ -1;c=h^-1;if((f|0)>(c|0)){o[e>>2]=c;f=c;break b}if((f|0)>=(h|0)){break b}h=1;break a}h=0;if((f|0)>=0){if(!b){break a}g=0;c=0;while(1){j=c<<2;g=g+ +v(s[j+a>>2]*v(1<<f));f=ub(g);f=(f|0)<(k|0)?(f|0)<(l|0)?l:f:n;o[d+j>>2]=f;c=c+1|0;if((c|0)==(b|0)){break a}g=g- +(f|0);f=o[e>>2];continue}}if(b){c=0;p=v(1<<0-f);g=0;while(1){j=c<<2;g=g+ +v(s[j+a>>2]/p);f=ub(g);f=(f|0)<(k|0)?(f|0)<(l|0)?l:f:n;o[d+j>>2]=f;g=g- +(f|0);c=c+1|0;if((c|0)!=(b|0)){continue}break}}o[e>>2]=0}N=i+16|0;return h}function Jc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=N-32|0;N=e;g=o[a+28>>2];o[e+16>>2]=g;d=o[a+20>>2];o[e+28>>2]=c;o[e+24>>2]=b;b=d-g|0;o[e+20>>2]=b;g=b+c|0;j=2;b=e+16|0;a:{b:{f=G(o[a+60>>2],e+16|0,2,e+12|0)|0;d=0;c:{if(!f){break c}o[2896]=f;d=-1}d:{if(!d){while(1){d=o[e+12>>2];if((d|0)==(g|0)){break d}if((d|0)<=-1){break b}h=o[b+4>>2];f=d>>>0>h>>>0;i=(f<<3)+b|0;h=d-(f?h:0)|0;o[i>>2]=h+o[i>>2];i=(f?12:4)+b|0;o[i>>2]=o[i>>2]-h;g=g-d|0;b=f?b+8|0:b;j=j-f|0;f=G(o[a+60>>2],b|0,j|0,e+12|0)|0;d=0;e:{if(!f){break e}o[2896]=f;d=-1}if(!d){continue}break}}o[e+12>>2]=-1;if((g|0)!=-1){break b}}b=o[a+44>>2];o[a+28>>2]=b;o[a+20>>2]=b;o[a+16>>2]=b+o[a+48>>2];a=c;break a}o[a+28>>2]=0;o[a+16>>2]=0;o[a+20>>2]=0;o[a>>2]=o[a>>2]|32;a=0;if((j|0)==2){break a}a=c-o[b+4>>2]|0}N=e+32|0;return a|0}function Gb(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0;m=o[(h?5644:5640)>>2];j=o[(h?5632:5628)>>2];a:{b:{if(!g){if(!o[f>>2]){if(!_(a,o[e>>2],j)){break b}if(!Yb(a,b,c,o[e>>2])){break b}break a}if(!_(a,m,j)){break b}if(!_(a,o[f>>2],o[1409])){break b}if(!c){break a}h=0;while(1){if(va(a,o[(h<<2)+b>>2],o[f>>2])){h=h+1|0;if((h|0)!=(c|0)){continue}break a}break}return 0}q=c+d>>>g|0;r=o[1409];c=0;while(1){h=c;n=q-(k?0:d)|0;c=h+n|0;p=k<<2;i=p+f|0;c:{if(!o[i>>2]){l=0;i=e+p|0;if(!_(a,o[i>>2],j)){break b}if(Yb(a,(h<<2)+b|0,n,o[i>>2])){break c}break b}l=0;if(!_(a,m,j)){break b}if(!_(a,o[i>>2],r)){break b}if(h>>>0>=c>>>0){break c}while(1){if(!va(a,o[(h<<2)+b>>2],o[i>>2])){break b}h=h+1|0;if((h|0)!=(c|0)){continue}break}}l=1;k=k+1|0;if(!(k>>>g)){continue}break}}return l}return 1}function wc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{if(!a){break a}i=o[a>>2];if(!i){break a}f=o[a+36>>2];if(o[a+32>>2]<=(f|0)){break a}d=o[a+16>>2];g=o[d+(f<<2)>>2];if(g&1024){o[a+36>>2]=f+1;b=a;d=a;c=o[a+348>>2];a=o[a+344>>2]+1|0;if(a>>>0<1){c=c+1|0}o[d+344>>2]=a;o[b+348>>2]=c;return-1}e=g&512;h=255;c=g&255;b:{if((c|0)!=255){h=c;break b}while(1){f=f+1|0;c=o[(f<<2)+d>>2];e=c&512?512:e;c=c&255;h=c+h|0;if((c|0)==255){continue}break}}c:{if(!b){e=o[a+344>>2];c=o[a+348>>2];g=o[a+12>>2];break c}o[b+8>>2]=g&256;o[b+12>>2]=e;g=o[a+12>>2];o[b>>2]=i+g;d=o[a+348>>2];c=d;e=o[a+344>>2];o[b+24>>2]=e;o[b+28>>2]=c;d=o[a+20>>2]+(f<<3)|0;i=o[d+4>>2];d=o[d>>2];o[b+4>>2]=h;o[b+16>>2]=d;o[b+20>>2]=i}d=e+1|0;if(d>>>0<1){c=c+1|0}o[a+344>>2]=d;o[a+348>>2]=c;e=1;o[a+36>>2]=f+1;o[a+12>>2]=g+h}return e}function ne(a,b,c,d){var e=0,f=0;a:{b:{c:{switch(c|0){case 4:c=0;if((b|0)<=0){break b}while(1){f=c<<2;e=f+a|0;o[d+f>>2]=(o[e+ -16>>2]+(o[e>>2]+u(o[e+ -8>>2],6)|0)|0)-(o[e+ -12>>2]+o[e+ -4>>2]<<2);c=c+1|0;if((c|0)!=(b|0)){continue}break}break b;case 3:c=0;if((b|0)<=0){break b}while(1){f=c<<2;e=f+a|0;o[d+f>>2]=(o[e>>2]-o[e+ -12>>2]|0)+u(o[e+ -8>>2]-o[e+ -4>>2]|0,3);c=c+1|0;if((c|0)!=(b|0)){continue}break}break b;case 2:c=0;if((b|0)<=0){break b}while(1){f=c<<2;e=f+a|0;o[d+f>>2]=o[e+ -8>>2]+(o[e>>2]-(o[e+ -4>>2]<<1)|0);c=c+1|0;if((c|0)!=(b|0)){continue}break}break b;case 0:break a;case 1:break c;default:break b}}c=0;if((b|0)<=0){break b}while(1){f=c<<2;e=f+a|0;o[d+f>>2]=o[e>>2]-o[e+ -4>>2];c=c+1|0;if((c|0)!=(b|0)){continue}break}}return}ca(d,a,b<<2)}function la(a){var b=0,c=0,d=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;a:{b:{c:{d:{h(+a);b=e(1)|0;d=e(0)|0;if((b|0)>0?1:(b|0)>=0?d>>>0<0?0:1:0){j=b;if(b>>>0>1048575){break d}}if(!(b&2147483647|d)){return-1/(a*a)}if((b|0)>-1?1:0){break c}return(a-a)/0}if(j>>>0>2146435071){break a}b=1072693248;k=-1023;if((j|0)!=1072693248){b=j;break b}if(d){break b}return 0}h(+(a*0x40000000000000));b=e(1)|0;d=e(0)|0;k=-1077}b=b+614242|0;i=+((b>>>20|0)+k|0);f(0,d|0);f(1,(b&1048575)+1072079006|0);a=+g()+ -1;c=a/(a+2);l=i*.6931471803691238;m=a;n=i*1.9082149292705877e-10;o=c;i=a*(a*.5);c=c*c;a=c*c;a=l+(m+(n+o*(i+(a*(a*(a*.15313837699209373+.22222198432149784)+.3999999999940942)+c*(a*(a*(a*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)))-i))}return a}function Z(a,b,c){var d=0,e=0,f=0,g=0,h=0;a:{if(!a|c>>>0>32){break a}e=o[a>>2];if(!e){break a}g=1;if(!c){break a}f=o[a+8>>2];d=o[a+12>>2];b:{if(f>>>0>d+c>>>0){d=e;break b}d=d+((o[a+16>>2]+c|0)+31>>>5|0)|0;if(d>>>0<=f>>>0){d=e;break b}g=0;h=d;d=d-f&1023;f=h+(d?1024-d|0:0)|0;c:{if(f){if((f|0)!=(f&1073741823)){break a}d=ea(e,f<<2);if(d){break c}X(e);return 0}d=ea(e,0);if(!d){break a}}o[a+8>>2]=f;o[a>>2]=d}e=o[a+16>>2];f=32-e|0;if(f>>>0>c>>>0){o[a+16>>2]=c+e;o[a+4>>2]=o[a+4>>2]<<c|b;return 1}if(e){e=c-f|0;o[a+16>>2]=e;c=o[a+12>>2];o[a+12>>2]=c+1;d=(c<<2)+d|0;c=o[a+4>>2]<<f|b>>>e;o[d>>2]=c<<24|c<<8&16711680|(c>>>8&65280|c>>>24);o[a+4>>2]=b;return 1}g=1;c=a;a=o[a+12>>2];o[c+12>>2]=a+1;o[(a<<2)+d>>2]=b<<8&16711680|b<<24|(b>>>8&65280|b>>>24)}return g}function ld(a,b,c,d,e){var f=0;a:{if(!_(e,(o[a+12>>2]<<1)+ -2|(o[1420]|(d|0)!=0),o[1416]+(o[1415]+o[1414]|0)|0)){break a}if(d){if(!Qa(e,d+ -1|0)){break a}}b:{if(!o[a+12>>2]){break b}d=0;while(1){if(va(e,o[((d<<2)+a|0)+152>>2],c)){d=d+1|0;if(d>>>0<r[a+12>>2]){continue}break b}break}return 0}if(!_(e,o[a+16>>2]+ -1|0,o[1412])){break a}if(!va(e,o[a+20>>2],o[1413])){break a}c:{if(!o[a+12>>2]){break c}d=0;while(1){if(va(e,o[((d<<2)+a|0)+24>>2],o[a+16>>2])){d=d+1|0;if(d>>>0<r[a+12>>2]){continue}break c}break}return 0}if(!_(e,o[a>>2],o[1405])){break a}d:{if(r[a>>2]>1){break d}if(!_(e,o[a+4>>2],o[1406])){break a}c=o[a>>2];if(c>>>0>1){break d}d=b;b=o[a+8>>2];if(!Gb(e,o[a+280>>2],d,o[a+12>>2],o[b>>2],o[b+4>>2],o[a+4>>2],(c|0)==1)){break a}}f=1}return f}function Xc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=v(0);a:{if(!!(c<=v(0))){if((b|0)<1){break a}while(1){o[(d<<2)+a>>2]=1065353216;d=d+1|0;if((d|0)!=(b|0)){continue}break}break a}if(!!(c>=v(1))){if((b|0)<1){break a}f=+(b+ -1|0);while(1){h=(d<<2)+a|0,i=v(.5-ba(+(d|0)*6.283185307179586/f)*.5),s[h>>2]=i;d=d+1|0;if((d|0)!=(b|0)){continue}break}break a}c=v(v(c*v(.5))*v(b|0));b:{if(v(w(c))<v(2147483648)){e=~~c;break b}e=-2147483648}if((b|0)>=1){while(1){o[(d<<2)+a>>2]=1065353216;d=d+1|0;if((d|0)!=(b|0)){continue}break}}if((e|0)<2){break a}b=b-e|0;g=e+ -1|0;f=+(g|0);d=0;while(1){h=(d<<2)+a|0,i=v(.5-ba(+(d|0)*3.141592653589793/f)*.5),s[h>>2]=i;h=(b+d<<2)+a|0,i=v(.5-ba(+(d+g|0)*3.141592653589793/f)*.5),s[h>>2]=i;d=d+1|0;if((e|0)!=(d|0)){continue}break}}}function Ca(a,b){var c=0,d=0,e=0,f=0;a:{b:{if(!b){break b}c=o[a+8>>2];e=o[a+12>>2];c:{if(c>>>0>e+b>>>0){break c}d=e+((o[a+16>>2]+b|0)+31>>>5|0)|0;if(d>>>0<=c>>>0){break c}e=o[a>>2];c=d-c&1023;c=d+(c?1024-c|0:0)|0;d:{if(c){if((c|0)!=(c&1073741823)){break a}d=ea(e,c<<2);if(d){break d}X(e);return 0}d=ea(e,0);if(!d){break a}}o[a+8>>2]=c;o[a>>2]=d}c=o[a+16>>2];if(c){f=c;c=32-c|0;e=c>>>0<b>>>0?c:b;d=f+e|0;o[a+16>>2]=d;c=o[a+4>>2]<<e;o[a+4>>2]=c;if((d|0)!=32){break b}d=o[a+12>>2];o[a+12>>2]=d+1;o[o[a>>2]+(d<<2)>>2]=c<<8&16711680|c<<24|(c>>>8&65280|c>>>24);o[a+16>>2]=0;b=b-e|0}if(b>>>0>=32){c=o[a>>2];while(1){e=o[a+12>>2];o[a+12>>2]=e+1;o[c+(e<<2)>>2]=0;b=b+ -32|0;if(b>>>0>31){continue}break}}if(!b){break b}o[a+16>>2]=b;o[a+4>>2]=0}f=1}return f}function Y(a,b,c){var d=0,e=0,f=0;a:{if(c){b:{while(1){f=o[a+8>>2];e=o[a+16>>2];d=o[a+20>>2];if(((f-e<<5)+(o[a+12>>2]<<3)|0)-d>>>0>=c>>>0){break b}if(Ia(a)){continue}break}return 0}if(f>>>0>e>>>0){if(d){f=o[a>>2];e=o[f+(e<<2)>>2]&-1>>>d;d=32-d|0;if(d>>>0>c>>>0){o[b>>2]=e>>>d-c;o[a+20>>2]=o[a+20>>2]+c;break a}o[b>>2]=e;o[a+20>>2]=0;o[a+16>>2]=o[a+16>>2]+1;c=c-d|0;if(!c){break a}d=o[b>>2]<<c;o[b>>2]=d;o[b>>2]=d|o[f+(o[a+16>>2]<<2)>>2]>>>32-c;o[a+20>>2]=c;return 1}d=o[o[a>>2]+(e<<2)>>2];if(c>>>0<=31){o[b>>2]=d>>>32-c;o[a+20>>2]=c;break a}o[b>>2]=d;o[a+16>>2]=o[a+16>>2]+1;return 1}e=o[o[a>>2]+(e<<2)>>2];if(d){o[b>>2]=(e&-1>>>d)>>>32-(c+d|0);o[a+20>>2]=o[a+20>>2]+c;break a}o[b>>2]=e>>>32-c;o[a+20>>2]=o[a+20>>2]+c;break a}o[b>>2]=0}return 1}function _b(a,b){var c=0,d=0,e=0;d=o[b+80>>2]&63;c=d+b|0;m[c|0]=128;c=c+1|0;e=56;a:{if(d>>>0<56){e=55-d|0;break a}fa(c,d^63);Ra(b- -64|0,b);c=b}fa(c,e);c=o[b+80>>2];o[b+56>>2]=c<<3;o[b+60>>2]=o[b+84>>2]<<3|c>>>29;Ra(b- -64|0,b);c=p[b+76|0]|p[b+77|0]<<8|(p[b+78|0]<<16|p[b+79|0]<<24);d=p[b+72|0]|p[b+73|0]<<8|(p[b+74|0]<<16|p[b+75|0]<<24);m[a+8|0]=d;m[a+9|0]=d>>>8;m[a+10|0]=d>>>16;m[a+11|0]=d>>>24;m[a+12|0]=c;m[a+13|0]=c>>>8;m[a+14|0]=c>>>16;m[a+15|0]=c>>>24;c=p[b+68|0]|p[b+69|0]<<8|(p[b+70|0]<<16|p[b+71|0]<<24);d=p[b+64|0]|p[b+65|0]<<8|(p[b+66|0]<<16|p[b+67|0]<<24);m[a|0]=d;m[a+1|0]=d>>>8;m[a+2|0]=d>>>16;m[a+3|0]=d>>>24;m[a+4|0]=c;m[a+5|0]=c>>>8;m[a+6|0]=c>>>16;m[a+7|0]=c>>>24;a=o[b+88>>2];if(a){X(a);o[b+88>>2]=0;o[b+92>>2]=0}fa(b,96)}function pa(a,b,c){var d=0;a:{if((a|0)==(b|0)){break a}if((b-a|0)-c>>>0<=0-(c<<1)>>>0){ca(a,b,c);return}d=(a^b)&3;b:{c:{if(a>>>0<b>>>0){if(d){break b}if(!(a&3)){break c}while(1){if(!c){break a}m[a|0]=p[b|0];b=b+1|0;c=c+ -1|0;a=a+1|0;if(a&3){continue}break}break c}d:{if(d){break d}if(a+c&3){while(1){if(!c){break a}c=c+ -1|0;d=c+a|0;m[d|0]=p[b+c|0];if(d&3){continue}break}}if(c>>>0<=3){break d}while(1){c=c+ -4|0;o[c+a>>2]=o[b+c>>2];if(c>>>0>3){continue}break}}if(!c){break a}while(1){c=c+ -1|0;m[c+a|0]=p[b+c|0];if(c){continue}break}break a}if(c>>>0<=3){break b}while(1){o[a>>2]=o[b>>2];b=b+4|0;a=a+4|0;c=c+ -4|0;if(c>>>0>3){continue}break}}if(!c){break a}while(1){m[a|0]=p[b|0];a=a+1|0;b=b+1|0;c=c+ -1|0;if(c){continue}break}}}function xe(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;h=N-16|0;N=h;a:{if(!Y(a,h+12|0,8)){break a}e=o[h+12>>2];if(c){f=o[d>>2];o[d>>2]=f+1;m[c+f|0]=e}b:{c:{d:{e:{if(!(e&128)){break e}f:{if(!(!(e&192)|e&32)){g=31;f=1;break f}if(!(!(e&224)|e&16)){g=15;f=2;break f}if(!(!(e&240)|e&8)){g=7;f=3;break f}if(e&248){g=3;f=4;if(!(e&4)){break f}}if(!(e&252)|e&2){break d}g=1;f=5}e=e&g;if(!c){while(1){if(!Y(a,h+12|0,8)){break a}c=o[h+12>>2];if((c&192)!=128){break c}e=c&63|e<<6;f=f+ -1|0;if(f){continue}break e}}while(1){if(!Y(a,h+12|0,8)){break a}g=o[h+12>>2];i=o[d>>2];o[d>>2]=i+1;m[c+i|0]=g;if((g&192)!=128){break c}e=g&63|e<<6;f=f+ -1|0;if(f){continue}break}}o[b>>2]=e;break b}o[b>>2]=-1;break b}o[b>>2]=-1}j=1}N=h+16|0;return j}function ce(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0;h=N-256|0;N=h;n=o[b>>2];k=+s[a>>2];a:{while(1){if((f|0)==(n|0)){break a}m=f+1|0;g=+v(-s[(m<<2)+a>>2]);b:{if(f){l=f>>>1|0;e=0;while(1){g=g-t[(e<<3)+h>>3]*+s[(f-e<<2)+a>>2];e=e+1|0;if((e|0)!=(f|0)){continue}break}g=g/k;t[(f<<3)+h>>3]=g;e=0;if(l){while(1){i=(e<<3)+h|0;j=t[i>>3];p=i;i=((e^-1)+f<<3)+h|0;t[p>>3]=j+g*t[i>>3];t[i>>3]=g*j+t[i>>3];e=e+1|0;if((l|0)!=(e|0)){continue}break}}if(!(f&1)){break b}i=(l<<3)+h|0;j=t[i>>3];t[i>>3]=j+g*j;break b}g=g/k;t[(f<<3)+h>>3]=g}j=1-g*g;e=0;while(1){s[((f<<7)+c|0)+(e<<2)>>2]=-v(t[(e<<3)+h>>3]);e=e+1|0;if(e>>>0<=f>>>0){continue}break}k=k*j;t[(f<<3)+d>>3]=k;f=m;if(k!=0){continue}break}o[b>>2]=f}N=h+256|0}function mb(a,b,c,d,e,f){var g=0;g=N-80|0;N=g;a:{if((f|0)>=16384){$(g+32|0,b,c,d,e,0,0,0,2147352576);d=o[g+40>>2];e=o[g+44>>2];b=o[g+32>>2];c=o[g+36>>2];if((f|0)<32767){f=f+ -16383|0;break a}$(g+16|0,b,c,d,e,0,0,0,2147352576);f=((f|0)<49149?f:49149)+ -32766|0;d=o[g+24>>2];e=o[g+28>>2];b=o[g+16>>2];c=o[g+20>>2];break a}if((f|0)>-16383){break a}$(g- -64|0,b,c,d,e,0,0,0,65536);d=o[g+72>>2];e=o[g+76>>2];b=o[g+64>>2];c=o[g+68>>2];if((f|0)>-32765){f=f+16382|0;break a}$(g+48|0,b,c,d,e,0,0,0,65536);f=((f|0)>-49146?f:-49146)+32764|0;d=o[g+56>>2];e=o[g+60>>2];b=o[g+48>>2];c=o[g+52>>2]}$(g,b,c,d,e,0,0,0,f+16383<<16);b=o[g+12>>2];o[a+8>>2]=o[g+8>>2];o[a+12>>2]=b;b=o[g+4>>2];o[a>>2]=o[g>>2];o[a+4>>2]=b;N=g+80|0}function mc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:{d=o[c+4>>2];if(o[d>>2]){break a}e=o[d+20>>2];if(!e){break a}if(!l[e](c,o[d+48>>2])){break a}o[b>>2]=0;o[o[c>>2]>>2]=4;return 0}b:{c:{if(o[b>>2]){d=o[c+4>>2];if(!(!o[d+3632>>2]|r[d+6152>>2]<21)){o[o[c>>2]>>2]=7;break c}d:{e:{f:{g:{if(o[d>>2]){e=0;switch(Ud(o[c>>2]+32|0,a,b,c,o[d+48>>2])|0){case 0:case 2:break e;case 1:break f;default:break g}}e=l[o[d+4>>2]](c,a,b,o[d+48>>2])|0;if((e|0)!=2){break e}}o[o[c>>2]>>2]=7;break c}a=1;if(!o[b>>2]){break d}break b}a=1;if(o[b>>2]){break b}if((e|0)==1){break d}b=o[c+4>>2];if(o[b>>2]){break b}d=o[b+20>>2];if(!d){break b}if(!l[d](c,o[b+48>>2])){break b}}o[o[c>>2]>>2]=4;break c}o[o[c>>2]>>2]=7}a=0}return a|0}function ga(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=o[a+116>>2];c=b;a:{f=o[a+112>>2];b:{if(b|f){b=o[a+124>>2];if((b|0)>(c|0)?1:(b|0)>=(c|0)?r[a+120>>2]<f>>>0?0:1:0){break b}}f=Fc(a);if((f|0)>-1){break a}}o[a+104>>2]=0;return-1}b=o[a+8>>2];c=o[a+116>>2];d=c;c:{d:{e=o[a+112>>2];if(!(c|e)){break d}c=(o[a+124>>2]^-1)+d|0;d=o[a+120>>2]^-1;e=d+e|0;if(e>>>0<d>>>0){c=c+1|0}d=e;e=o[a+4>>2];g=b-e|0;h=d>>>0<g>>>0?0:1;g=g>>31;if((c|0)>(g|0)?1:(c|0)>=(g|0)?h:0){break d}o[a+104>>2]=d+e;break c}o[a+104>>2]=b}e:{if(!b){a=o[a+4>>2];break e}e=o[a+124>>2];c=a;d=o[a+120>>2];a=o[a+4>>2];b=(b-a|0)+1|0;g=b;d=d+b|0;b=(b>>31)+e|0;o[c+120>>2]=d;o[c+124>>2]=d>>>0<g>>>0?b+1|0:b}a=a+ -1|0;if(p[a|0]!=(f|0)){m[a|0]=f}return f}function fa(a,b){var c=0,d=0;a:{if(!b){break a}c=a+b|0;m[c+ -1|0]=0;m[a|0]=0;if(b>>>0<3){break a}m[c+ -2|0]=0;m[a+1|0]=0;m[c+ -3|0]=0;m[a+2|0]=0;if(b>>>0<7){break a}m[c+ -4|0]=0;m[a+3|0]=0;if(b>>>0<9){break a}d=0-a&3;c=d+a|0;o[c>>2]=0;d=b-d&-4;b=d+c|0;o[b+ -4>>2]=0;if(d>>>0<9){break a}o[c+8>>2]=0;o[c+4>>2]=0;o[b+ -8>>2]=0;o[b+ -12>>2]=0;if(d>>>0<25){break a}o[c+24>>2]=0;o[c+20>>2]=0;o[c+16>>2]=0;o[c+12>>2]=0;o[b+ -16>>2]=0;o[b+ -20>>2]=0;o[b+ -24>>2]=0;o[b+ -28>>2]=0;b=d;d=c&4|24;b=b-d|0;if(b>>>0<32){break a}c=c+d|0;while(1){o[c+24>>2]=0;o[c+28>>2]=0;o[c+16>>2]=0;o[c+20>>2]=0;o[c+8>>2]=0;o[c+12>>2]=0;o[c>>2]=0;o[c+4>>2]=0;c=c+32|0;b=b+ -32|0;if(b>>>0>31){continue}break}}return a}function za(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0;j=1;i=d&2147483647;m=i;k=c;a:{if(!c&(i|0)==2147418112?a|b:(i|0)==2147418112&c>>>0>0|i>>>0>2147418112){break a}l=h&2147483647;n=l;i=g;if(!g&(l|0)==2147418112?e|f:(l|0)==2147418112&g>>>0>0|l>>>0>2147418112){break a}if(!(a|e|(i|k)|(b|f|(m|n)))){return 0}k=d&h;if((k|0)>0?1:(k|0)>=0?(c&g)>>>0<0?0:1:0){j=-1;if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0<e>>>0|b>>>0<f>>>0:(d|0)<(h|0)?1:(d|0)<=(h|0)?c>>>0>=g>>>0?0:1:0){break a}return(a^e|c^g)!=0|(b^f|d^h)!=0}j=-1;if((c|0)==(g|0)&(d|0)==(h|0)?(b|0)==(f|0)&a>>>0>e>>>0|b>>>0>f>>>0:(d|0)>(h|0)?1:(d|0)>=(h|0)?c>>>0<=g>>>0?0:1:0){break a}j=(a^e|c^g)!=0|(b^f|d^h)!=0}return j}function Ub(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{b=o[a>>2];if(!b){break a}nc(o[a+4>>2],b);if(!o[a>>2]){break a}e=1;f=o[a>>2];if(f>>>0>1){h=1;while(1){c=o[a+4>>2];d=c+u(h,24)|0;b=o[d+4>>2];g=o[d>>2];b:{if((g|0)!=-1|(b|0)!=-1){i=g;g=(u(e,24)+c|0)+ -24|0;if((i|0)==o[g>>2]&o[g+4>>2]==(b|0)){break b}}b=o[d+4>>2];c=u(e,24)+c|0;o[c>>2]=o[d>>2];o[c+4>>2]=b;b=o[d+20>>2];o[c+16>>2]=o[d+16>>2];o[c+20>>2]=b;b=o[d+12>>2];o[c+8>>2]=o[d+8>>2];o[c+12>>2]=b;e=e+1|0;f=o[a>>2]}h=h+1|0;if(h>>>0<f>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=o[a+4>>2];a=e;while(1){b=d+u(a,24)|0;o[b+16>>2]=0;o[b+8>>2]=0;o[b+12>>2]=0;o[b>>2]=-1;o[b+4>>2]=-1;a=a+1|0;if((f|0)!=(a|0)){continue}break}}}function Yc(a,b){var c=0,d=0,e=v(0),f=0,g=v(0),h=0;d=1;a:{if(b&1){c=(b+1|0)/2|0;if((b|0)>=1){e=v(v(b|0)+v(1));f=(c|0)>1?c:1;d=f+1|0;c=1;while(1){g=v(c|0);s[((c<<2)+a|0)+ -4>>2]=v(g+g)/e;h=(c|0)==(f|0);c=c+1|0;if(!h){continue}break}}if((d|0)>(b|0)){break a}e=v(v(b|0)+v(1));while(1){s[((d<<2)+a|0)+ -4>>2]=v((b-d<<1)+2|0)/e;c=(b|0)==(d|0);d=d+1|0;if(!c){continue}break}break a}c=1;if((b|0)>=2){f=b>>>1|0;c=f+1|0;e=v(v(b|0)+v(1));while(1){g=v(d|0);s[((d<<2)+a|0)+ -4>>2]=v(g+g)/e;h=(d|0)==(f|0);d=d+1|0;if(!h){continue}break}}if((c|0)>(b|0)){break a}e=v(v(b|0)+v(1));while(1){s[((c<<2)+a|0)+ -4>>2]=v((b-c<<1)+2|0)/e;d=(b|0)!=(c|0);c=c+1|0;if(d){continue}break}}}function ze(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;f=o[a+16>>2];c=o[a+28>>2];a:{if(f>>>0<=c>>>0){e=c;break a}b=o[a+32>>2];if(!b){e=c;break a}e=c+1|0;o[a+28>>2]=e;d=o[a+24>>2];if(b>>>0<=31){c=o[o[a>>2]+(c<<2)>>2];while(1){d=q[((c>>>24-b&255^d>>>8)<<1)+1280>>1]^d<<8&65280;h=b>>>0<24;g=b+8|0;b=g;if(h){continue}break}o[a+32>>2]=g}o[a+32>>2]=0;o[a+24>>2]=d}b=Wb(o[a>>2]+(e<<2)|0,f-e|0,q[a+24>>1]);o[a+28>>2]=0;o[a+24>>2]=b;c=o[a+20>>2];b:{if(!c){break b}d=o[a+32>>2];if(d>>>0>=c>>>0){break b}e=o[o[a>>2]+(o[a+16>>2]<<2)>>2];while(1){b=q[((e>>>24-d&255^b>>>8)<<1)+1280>>1]^b<<8&65280;d=d+8|0;if(d>>>0<c>>>0){continue}break}o[a+32>>2]=d;o[a+24>>2]=b}return b}function wb(a,b,c,d,e,f,g,h,i,j,k){var l=0,m=0;l=5;a:{m=o[a>>2];b:{if(o[m>>2]!=9){break b}l=2;if(!i|(!b|!g)){break b}if(c){if(!f|(!d|!e)){break b}}l=o[a+4>>2];o[l>>2]=k;if(k){if(!Vd(m+32|0)){break a}l=o[a+4>>2]}Xb(l+3524|0);k=o[a+4>>2];o[k+44>>2]=5;o[k+40>>2]=6;o[k+36>>2]=5;if(!ye(o[k+56>>2],a)){o[o[a>>2]>>2]=8;return 3}k=o[a+4>>2];o[k+48>>2]=j;o[k+32>>2]=i;o[k+28>>2]=h;o[k+24>>2]=g;o[k+20>>2]=f;o[k+16>>2]=e;o[k+12>>2]=d;o[k+8>>2]=c;o[k+4>>2]=b;o[k+3520>>2]=0;o[k+248>>2]=0;o[k+240>>2]=0;o[k+244>>2]=0;o[k+228>>2]=0;o[k+232>>2]=0;o[k+3624>>2]=o[o[a>>2]+28>>2];o[k+3628>>2]=1;o[k+3632>>2]=0;l=Nb(a)?0:3}return l}o[o[a>>2]+4>>2]=4;return 4}function eb(a,b){var c=0,d=0,e=0;o[b>>2]=0;a:{while(1){d=o[a+16>>2];b:{if(d>>>0>=r[a+8>>2]){c=o[a+20>>2];break b}c=o[a+20>>2];e=o[a>>2];while(1){d=o[e+(d<<2)>>2]<<c;if(d){c=b;e=o[b>>2];b=x(d);o[c>>2]=e+b;c=(b+o[a+20>>2]|0)+1|0;o[a+20>>2]=c;b=1;if(c>>>0<32){break a}o[a+20>>2]=0;o[a+16>>2]=o[a+16>>2]+1;return 1}o[b>>2]=(o[b>>2]-c|0)+32;c=0;o[a+20>>2]=0;d=o[a+16>>2]+1|0;o[a+16>>2]=d;if(d>>>0<r[a+8>>2]){continue}break}}e=o[a+12>>2]<<3;if(e>>>0>c>>>0){d=(o[o[a>>2]+(d<<2)>>2]&-1<<32-e)<<c;if(d){c=b;e=o[b>>2];b=x(d);o[c>>2]=e+b;o[a+20>>2]=(b+o[a+20>>2]|0)+1;return 1}o[b>>2]=o[b>>2]+(e-c|0);o[a+20>>2]=e}if(Ia(a)){continue}break}b=0}return b}function Ka(a,b,c,d,e){var f=0,g=0,h=0,i=0;f=N-240|0;N=f;g=o[b>>2];o[f+232>>2]=g;b=o[b+4>>2];o[f>>2]=a;o[f+236>>2]=b;h=1;a:{b:{c:{d:{if(b?0:(g|0)==1){break d}g=a-o[(c<<2)+e>>2]|0;if((l[1](g,a)|0)<1){break d}i=!d;while(1){e:{b=g;if(!(!i|(c|0)<2)){d=o[((c<<2)+e|0)+ -8>>2];g=a+ -24|0;if((l[1](g,b)|0)>-1){break e}if((l[1](g-d|0,b)|0)>-1){break e}}o[(h<<2)+f>>2]=b;d=f+232|0;a=De(o[f+232>>2]+ -1|0);if(!a){a=De(o[f+236>>2]);a=a?a+32|0:0}La(d,a);h=h+1|0;c=a+c|0;if(o[f+236>>2]?0:o[f+232>>2]==1){break b}d=0;i=1;a=b;g=a-o[(c<<2)+e>>2]|0;if((l[1](g,o[f>>2])|0)>0){continue}break c}break}b=a;break b}b=a}if(d){break a}}Eb(f,h);Sa(b,c,e)}N=f+240|0}function Ed(a){a=a|0;var b=0,c=0;if(a){o[o[a+4>>2]+11848>>2]=1;Mb(a);b=o[a+4>>2];c=o[b+11752>>2];if(c){Sb(c);b=o[a+4>>2]}aa(b+6256|0);aa(o[a+4>>2]+6268|0);aa(o[a+4>>2]+6280|0);aa(o[a+4>>2]+6292|0);aa(o[a+4>>2]+6304|0);aa(o[a+4>>2]+6316|0);aa(o[a+4>>2]+6328|0);aa(o[a+4>>2]+6340|0);aa(o[a+4>>2]+6352|0);aa(o[a+4>>2]+6364|0);aa(o[a+4>>2]+6376|0);aa(o[a+4>>2]+6388|0);aa(o[a+4>>2]+6400|0);aa(o[a+4>>2]+6412|0);aa(o[a+4>>2]+6424|0);aa(o[a+4>>2]+6436|0);aa(o[a+4>>2]+6448|0);aa(o[a+4>>2]+6460|0);aa(o[a+4>>2]+6472|0);aa(o[a+4>>2]+6484|0);aa(o[a+4>>2]+11724|0);aa(o[a+4>>2]+11736|0);gb(o[o[a+4>>2]+6856>>2]);X(o[a+4>>2]);X(o[a>>2]);X(a)}}function na(a,b,c){var d=0,e=0;e=N-16|0;N=e;a:{if(!c){d=1;break a}while(1){if(!o[a+20>>2]){b:{if(c>>>0<4){break b}while(1){c:{d=o[a+16>>2];if(d>>>0<r[a+8>>2]){o[a+16>>2]=d+1;d=o[o[a>>2]+(d<<2)>>2];d=d<<24|d<<8&16711680|(d>>>8&65280|d>>>24);m[b|0]=d;m[b+1|0]=d>>>8;m[b+2|0]=d>>>16;m[b+3|0]=d>>>24;c=c+ -4|0;b=b+4|0;break c}if(Ia(a)){break c}d=0;break a}if(c>>>0>3){continue}break}if(c){break b}d=1;break a}while(1){if(!Y(a,e+12|0,8)){d=0;break a}m[b|0]=o[e+12>>2];d=1;b=b+1|0;c=c+ -1|0;if(c){continue}break}break a}if(!Y(a,e+12|0,8)){d=0;break a}m[b|0]=o[e+12>>2];d=1;b=b+1|0;c=c+ -1|0;if(c){continue}break}}N=e+16|0;return d}function sa(a,b){var c=0,d=0,f=0,g=0,i=0,j=0,k=0,l=0;g=N-16|0;N=g;h(+b);j=e(1)|0;i=e(0)|0;f=j&2147483647;c=f;f=c+ -1048576|0;d=i;if(d>>>0<0){f=f+1|0}a:{if((f|0)==2145386495|f>>>0<2145386495){k=d<<28;f=(c&15)<<28|d>>>4;c=(c>>>4|0)+1006632960|0;d=f;c=d>>>0<0?c+1|0:c;break a}if((c|0)==2146435072&d>>>0>=0|c>>>0>2146435072){k=i<<28;f=i;c=j;i=c>>>4|0;d=(c&15)<<28|f>>>4;c=i|2147418112;break a}if(!(c|d)){d=0;c=0;break a}f=c;c=(c|0)==1&d>>>0<0|c>>>0<1?x(i)+32|0:x(c);ia(g,d,f,0,0,c+49|0);l=o[g>>2];k=o[g+4>>2];d=o[g+8>>2];c=o[g+12>>2]^65536|15372-c<<16}o[a>>2]=l;o[a+4>>2]=k;o[a+8>>2]=d;o[a+12>>2]=j&-2147483648|c;N=g+16|0}function jd(a,b){var c=0,d=v(0),e=0,f=v(0),g=0,h=0,i=0;h=b+ -1|0;a:{if(b&1){e=(h|0)/2|0;if((b|0)>=0){i=(e|0)>0?e:0;g=i+1|0;f=v(h|0);while(1){d=v(c|0);s[(c<<2)+a>>2]=v(d+d)/f;e=(c|0)==(i|0);c=c+1|0;if(!e){continue}break}}if((g|0)>=(b|0)){break a}f=v(h|0);while(1){d=v(g|0);s[(g<<2)+a>>2]=v(2)-v(v(d+d)/f);g=g+1|0;if((g|0)!=(b|0)){continue}break}break a}e=(b|0)/2|0;if((b|0)>=2){f=v(h|0);while(1){d=v(c|0);s[(c<<2)+a>>2]=v(d+d)/f;c=c+1|0;if((e|0)!=(c|0)){continue}break}c=e}if((c|0)>=(b|0)){break a}f=v(h|0);while(1){d=v(c|0);s[(c<<2)+a>>2]=v(2)-v(v(d+d)/f);c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function se(a,b){if((b|0)>=0){if(b>>>0<=127){return Z(a,b,8)}if(b>>>0<=2047){return Z(a,b>>>6|192,8)&Z(a,b&63|128,8)&1}if(b>>>0<=65535){return Z(a,b>>>12|224,8)&Z(a,b>>>6&63|128,8)&Z(a,b&63|128,8)&1}if(b>>>0<=2097151){return Z(a,b>>>18|240,8)&Z(a,b>>>12&63|128,8)&Z(a,b>>>6&63|128,8)&Z(a,b&63|128,8)&1}if(b>>>0<=67108863){return Z(a,b>>>24|248,8)&Z(a,b>>>18&63|128,8)&Z(a,b>>>12&63|128,8)&Z(a,b>>>6&63|128,8)&Z(a,b&63|128,8)&1}a=Z(a,b>>>30|252,8)&Z(a,b>>>24&63|128,8)&Z(a,b>>>18&63|128,8)&Z(a,b>>>12&63|128,8)&Z(a,b>>>6&63|128,8)&Z(a,b&63|128,8)&1}else{a=0}return a}function db(a,b){var c=0,d=0,e=0,f=0;d=N-16|0;N=d;e=1;a:{if(!b){break a}c=o[a+20>>2]&7;b:{if(c){c=8-c|0;c=c>>>0<b>>>0?c:b;if(!Y(a,d+8|0,c)){break b}b=b-c|0}c=b>>>3|0;if(c){while(1){c:{if(!o[a+20>>2]){if(c>>>0>3){while(1){f=o[a+16>>2];d:{if(f>>>0<r[a+8>>2]){o[a+16>>2]=f+1;c=c+ -4|0;break d}if(!Ia(a)){break b}}if(c>>>0>3){continue}break}if(!c){break c}}while(1){if(!Y(a,d+12|0,8)){break b}c=c+ -1|0;if(c){continue}break}break c}if(!Y(a,d+12|0,8)){break b}c=c+ -1|0;if(c){continue}}break}b=b&7}if(!b){break a}if(Y(a,d+8|0,b)){break a}}e=0}N=d+16|0;return e}function cb(a,b,c){var d=0,e=0,f=0,g=0,h=0;f=o[a+16>>2];a:{if(f&7){break a}b:{if(!f){e=o[a>>2];d=0;break b}g=o[a+12>>2];c:{if((g|0)!=o[a+8>>2]){break c}e=f+63>>>5|0;d=e+g|0;if(d>>>0<=g>>>0){break c}g=0;f=o[a>>2];h=d;d=e&1023;d=h+(d?1024-d|0:0)|0;d:{if(d){if((d|0)!=(d&1073741823)){break a}e=ea(f,d<<2);if(e){break d}X(f);return 0}e=ea(f,0);if(!e){break a}}o[a+8>>2]=d;o[a>>2]=e;g=o[a+12>>2];f=o[a+16>>2]}e=o[a>>2];d=o[a+4>>2]<<32-f;o[e+(g<<2)>>2]=d<<24|d<<8&16711680|(d>>>8&65280|d>>>24);d=o[a+16>>2]>>>3|0}o[b>>2]=e;o[c>>2]=d+(o[a+12>>2]<<2);g=1}return g}function fe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=v(0),i=0,j=0;g=b-c|0;a:{if(!c){while(1){e=e+1|0;if(e>>>0<=g>>>0){continue}break}break a}j=fa(d,c<<2);while(1){h=s[(e<<2)+a>>2];f=0;while(1){i=(f<<2)+j|0;s[i>>2]=s[i>>2]+v(h*s[(e+f<<2)+a>>2]);f=f+1|0;if((f|0)!=(c|0)){continue}break}e=e+1|0;if(e>>>0<=g>>>0){continue}break}}if(e>>>0<b>>>0){while(1){c=b-e|0;if(c){h=s[(e<<2)+a>>2];f=0;while(1){g=(f<<2)+d|0;s[g>>2]=s[g>>2]+v(h*s[(e+f<<2)+a>>2]);f=f+1|0;if(f>>>0<c>>>0){continue}break}}e=e+1|0;if((e|0)!=(b|0)){continue}break}}}function Jb(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0;h=-1;f=d&2147483647;i=f;g=c;a:{if(!c&(f|0)==2147418112?a|b:(f|0)==2147418112&c>>>0>0|f>>>0>2147418112){break a}f=e&2147483647;j=f;if((f|0)==2147418112?0:f>>>0>2147418112){break a}if(!(a|g|(i|j|b))){return 0}g=d&e;if((g|0)>0?1:(g|0)>=0?1:0){if(!c&(d|0)==(e|0)?!b&a>>>0<0|b>>>0<0:(d|0)<(e|0)?1:(d|0)<=(e|0)?c>>>0>=0?0:1:0){break a}return(a|c)!=0|(d^e|b)!=0}if(!c&(d|0)==(e|0)?!b&a>>>0>0|b>>>0>0:(d|0)>(e|0)?1:(d|0)>=(e|0)?c>>>0<=0?0:1:0){break a}h=(a|c)!=0|(d^e|b)!=0}return h}function md(a,b,c,d,e){var f=0;a:{if(!_(e,o[1419]|(d|0)!=0|o[a+12>>2]<<1,o[1416]+(o[1415]+o[1414]|0)|0)){break a}if(d){if(!Qa(e,d+ -1|0)){break a}}b:{if(!o[a+12>>2]){break b}d=0;while(1){if(va(e,o[((d<<2)+a|0)+16>>2],c)){d=d+1|0;if(d>>>0<r[a+12>>2]){continue}break b}break}return 0}if(!_(e,o[a>>2],o[1405])){break a}c:{if(r[a>>2]>1){break c}if(!_(e,o[a+4>>2],o[1406])){break a}c=o[a>>2];if(c>>>0>1){break c}d=b;b=o[a+8>>2];if(!Gb(e,o[a+32>>2],d,o[a+12>>2],o[b>>2],o[b+4>>2],o[a+4>>2],(c|0)==1)){break a}}f=1}return f}function Gd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=0;a:{if(o[o[a>>2]>>2]!=9){break a}d=o[a+4>>2];c=1;if(o[d+616>>2]){break a}c=o[d+1120>>2];b:{e=o[d+1124>>2];c:{if((e|0)!=o[d+1128>>2]){d=c;break c}d:{if(!e){d=ea(c,0);break d}if(e+e>>>0>=e>>>0){d=ea(c,e<<1);if(d){break d}X(c);d=o[a+4>>2]}o[d+1120>>2]=0;break b}c=o[a+4>>2];o[c+1120>>2]=d;if(!d){break b}o[c+1128>>2]=o[c+1128>>2]<<1;e=o[c+1124>>2]}c=d;d=o[1364]>>>3|0;ca(c+u(d,e)|0,b,d);a=o[a+4>>2];o[a+1124>>2]=o[a+1124>>2]+1;return 1}o[o[a>>2]>>2]=8;c=0}return c|0}function Ja(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;a:{if(f&64){c=f+ -64|0;b=c&31;if(32<=(c&63)>>>0){c=0;b=e>>>b|0}else{c=e>>>b|0;b=((1<<b)-1&e)<<32-b|d>>>b}d=0;e=0;break a}if(!f){break a}h=e;i=d;j=64-f|0;g=j&31;if(32<=(j&63)>>>0){h=i<<g;j=0}else{h=(1<<g)-1&i>>>32-g|h<<g;j=i<<g}i=b;g=f;b=g&31;if(32<=(g&63)>>>0){g=0;b=c>>>b|0}else{g=c>>>b|0;b=((1<<b)-1&c)<<32-b|i>>>b}b=j|b;c=g|h;g=d;d=f&31;if(32<=(f&63)>>>0){h=0;d=e>>>d|0}else{h=e>>>d|0;d=((1<<d)-1&e)<<32-d|g>>>d}e=h}o[a>>2]=b;o[a+4>>2]=c;o[a+8>>2]=d;o[a+12>>2]=e}function Lc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;e=N-32|0;N=e;o[e+16>>2]=b;d=o[a+48>>2];o[e+20>>2]=c-((d|0)!=0);f=o[a+44>>2];o[e+28>>2]=d;o[e+24>>2]=f;a:{b:{f=L(o[a+60>>2],e+16|0,2,e+12|0)|0;d=0;c:{if(!f){break c}o[2896]=f;d=-1}d:{if(d){o[e+12>>2]=-1;c=-1;break d}d=o[e+12>>2];if((d|0)>0){break b}c=d}o[a>>2]=o[a>>2]|c&48^16;break a}g=o[e+20>>2];if(d>>>0<=g>>>0){c=d;break a}f=o[a+44>>2];o[a+4>>2]=f;o[a+8>>2]=f+(d-g|0);if(!o[a+48>>2]){break a}o[a+4>>2]=f+1;m[(b+c|0)+ -1|0]=p[f|0]}N=e+32|0;return c|0}function ia(a,b,c,d,e,f){var g=0,h=0,i=0,j=0;a:{if(f&64){d=b;e=f+ -64|0;b=e&31;if(32<=(e&63)>>>0){e=d<<b;d=0}else{e=(1<<b)-1&d>>>32-b|c<<b;d=d<<b}b=0;c=0;break a}if(!f){break a}g=d;i=f;d=f&31;if(32<=(f&63)>>>0){h=g<<d;j=0}else{h=(1<<d)-1&g>>>32-d|e<<d;j=g<<d}d=c;g=b;f=64-f|0;e=f&31;if(32<=(f&63)>>>0){f=0;d=d>>>e|0}else{f=d>>>e|0;d=((1<<e)-1&d)<<32-e|g>>>e}d=j|d;e=f|h;f=b;b=i&31;if(32<=(i&63)>>>0){h=f<<b;b=0}else{h=(1<<b)-1&f>>>32-b|c<<b;b=f<<b}c=h}o[a>>2]=b;o[a+4>>2]=c;o[a+8>>2]=d;o[a+12>>2]=e}function Jd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;if(o[o[a>>2]>>2]==9){c=o[a+4>>2];if(!o[c+616>>2]){return 1}d=o[c+1120>>2];a:{e=o[c+1124>>2];b:{if((e|0)!=o[c+1128>>2]){c=d;break b}c:{if(!e){c=ea(d,0);break c}if(e+e>>>0>=e>>>0){c=ea(d,e<<1);if(c){break c}X(d);c=o[a+4>>2]}o[c+1120>>2]=0;break a}d=o[a+4>>2];o[d+1120>>2]=c;if(!c){break a}o[d+1128>>2]=o[d+1128>>2]<<1;e=o[d+1124>>2]}d=c;c=o[1364]>>>3|0;ca(d+u(c,e)|0,b,c);a=o[a+4>>2];o[a+1124>>2]=o[a+1124>>2]+1;return 1}o[o[a>>2]>>2]=8}return 0}function qe(a,b){var c=0,d=0;if(b>>>0>7){while(1){d=c;c=p[a|0]|p[a+1|0]<<8;c=d^(c<<8&16711680|c<<24)>>>16;c=q[(p[a+7|0]<<1)+1280>>1]^(q[((p[a+6|0]<<1)+1280|0)+512>>1]^(q[(p[a+5|0]<<1)+2304>>1]^(q[(p[a+4|0]<<1)+2816>>1]^(q[(p[a+3|0]<<1)+3328>>1]^(q[(p[a+2|0]<<1)+3840>>1]^(q[((c&255)<<1)+4352>>1]^q[(c>>>7&510)+4864>>1]))))));a=a+8|0;b=b+ -8|0;if(b>>>0>7){continue}break}}if(b){while(1){c=q[((p[a|0]^(c&65280)>>>8)<<1)+1280>>1]^c<<8;a=a+1|0;b=b+ -1|0;if(b){continue}break}}return c&65535}function Wb(a,b,c){var d=0;if(b>>>0>=2){while(1){d=c;c=o[a>>2];d=d^c>>>16;d=q[((d&255)<<1)+4352>>1]^q[(d>>>7&510)+4864>>1]^q[(c>>>7&510)+3840>>1]^q[((c&255)<<1)+3328>>1];c=o[a+4>>2];c=d^q[(c>>>23&510)+2816>>1]^q[(c>>>15&510)+2304>>1]^q[((c>>>7&510)+1280|0)+512>>1]^q[((c&255)<<1)+1280>>1];a=a+8|0;b=b+ -2|0;if(b>>>0>1){continue}break}}if(b){a=o[a>>2];b=a>>>16^c;c=q[((b&255)<<1)+2304>>1]^q[(b>>>7&510)+2816>>1]^q[((a>>>7&510)+1280|0)+512>>1]^q[((a&255)<<1)+1280>>1]}return c&65535}function ma(a,b,c){var d=0,e=0,f=0,g=0;d=o[a+8>>2];e=o[a+12>>2];a:{b:{if(d>>>0>(e+(c>>>2|0)|0)+1>>>0){break b}f=e+((o[a+16>>2]+(c<<3)|0)+31>>>5|0)|0;if(f>>>0<=d>>>0){break b}e=0;g=o[a>>2];d=f-d&1023;d=f+(d?1024-d|0:0)|0;c:{if(d){if((d|0)!=(d&1073741823)){break a}f=ea(g,d<<2);if(f){break c}X(g);return 0}f=ea(g,0);if(!f){break a}}o[a+8>>2]=d;o[a>>2]=f}e=1;if(!c){break a}e=0;d:{while(1){if(!Z(a,p[b+e|0],8)){break d}e=e+1|0;if((e|0)!=(c|0)){continue}break}return 1}e=0}return e}function tc(a,b){var c=0,d=0,e=0;c=o[a+4>>2];if((c|0)>=0){e=o[a+12>>2];if(e){d=o[a+8>>2]-e|0;o[a+8>>2]=d;if((d|0)>=1){c=o[a>>2];pa(c,c+e|0,d);c=o[a+4>>2]}o[a+12>>2]=0}d=c;c=o[a+8>>2];a:{if((d-c|0)>=(b|0)){b=o[a>>2];break a}c=(b+c|0)+4096|0;b=o[a>>2];b:{if(b){b=ea(b,c);break b}b=da(c)}if(!b){b=o[a>>2];if(b){X(b)}o[a>>2]=0;o[a+4>>2]=0;o[a+24>>2]=0;o[a+16>>2]=0;o[a+20>>2]=0;o[a+8>>2]=0;o[a+12>>2]=0;return 0}o[a+4>>2]=c;o[a>>2]=b;c=o[a+8>>2]}a=b+c|0}else{a=0}return a}function tb(a){var b=0,c=0,d=0,e=0;if(a){m[o[a>>2]+22|0]=0;m[o[a>>2]+23|0]=0;m[o[a>>2]+24|0]=0;m[o[a>>2]+25|0]=0;d=o[a+4>>2];if((d|0)>=1){e=o[a>>2];while(1){b=o[((p[c+e|0]^b>>>24)<<2)+6512>>2]^b<<8;c=c+1|0;if((d|0)!=(c|0)){continue}break}}d=o[a+12>>2];if((d|0)>=1){e=o[a+8>>2];c=0;while(1){b=o[((p[c+e|0]^b>>>24)<<2)+6512>>2]^b<<8;c=c+1|0;if((d|0)!=(c|0)){continue}break}}m[o[a>>2]+22|0]=b;m[o[a>>2]+23|0]=b>>>8;m[o[a>>2]+24|0]=b>>>16;m[o[a>>2]+25|0]=b>>>24}}function Sc(a,b){var c=0,d=0,f=0,g=0,h=0,j=0,k=0;f=N-16|0;N=f;g=(i(b),e(0));c=g&2147483647;a:{if(c+ -8388608>>>0<=2130706431){d=c;c=c>>>7|0;d=d<<25;c=c+1065353216|0;h=d;c=d>>>0<0?c+1|0:c;break a}if(c>>>0>=2139095040){c=g;d=c>>>7|0;h=c<<25;c=d|2147418112;break a}if(!c){c=0;break a}d=c;c=x(c);ia(f,d,0,0,0,c+81|0);j=o[f>>2];k=o[f+4>>2];h=o[f+8>>2];c=o[f+12>>2]^65536|16265-c<<16}o[a>>2]=j;o[a+4>>2]=k;o[a+8>>2]=h;o[a+12>>2]=g&-2147483648|c;N=f+16|0}function Ic(a,b){var c=0,d=0;a:{d=b&255;if(d){if(a&3){while(1){c=p[a|0];if(!c|(c|0)==(b&255)){break a}a=a+1|0;if(a&3){continue}break}}c=o[a>>2];b:{if((c^-1)&c+ -16843009&-2139062144){break b}d=u(d,16843009);while(1){c=c^d;if((c^-1)&c+ -16843009&-2139062144){break b}c=o[a+4>>2];a=a+4|0;if(!(c+ -16843009&(c^-1)&-2139062144)){continue}break}}while(1){c=a;d=p[c|0];if(d){a=c+1|0;if((d|0)!=(b&255)){continue}}break}return c}return Ga(a)+a|0}return a}function zc(a,b){var c=0;c=(b|0)!=0;a:{b:{c:{if(!b|!(a&3)){break c}while(1){if(p[a|0]==79){break b}a=a+1|0;b=b+ -1|0;c=(b|0)!=0;if(!b){break c}if(a&3){continue}break}}if(!c){break a}}d:{if(p[a|0]==79|b>>>0<4){break d}while(1){c=o[a>>2]^1330597711;if((c^-1)&c+ -16843009&-2139062144){break d}a=a+4|0;b=b+ -4|0;if(b>>>0>3){continue}break}}if(!b){break a}while(1){if(p[a|0]==79){return a}a=a+1|0;b=b+ -1|0;if(b){continue}break}}return 0}function Ea(a,b){var c=0,d=0,e=0;c=N-16|0;N=c;d=1;a:{if(!b){break a}while(1){b:{if(!o[a+20>>2]){c:{if(b>>>0<4){break c}while(1){e=o[a+16>>2];d:{if(e>>>0<r[a+8>>2]){o[a+16>>2]=e+1;b=b+ -4|0;break d}if(!Ia(a)){break b}}if(b>>>0>3){continue}break}if(b){break c}break a}while(1){if(!Y(a,c+12|0,8)){break b}b=b+ -1|0;if(b){continue}break}break a}if(!Y(a,c+12|0,8)){break b}b=b+ -1|0;if(b){continue}break a}break}d=0}N=c+16|0;return d}function bc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=o[d+4>>2];if(o[f+11760>>2]){o[c>>2]=4;a=p[5409]|p[5410]<<8|(p[5411]<<16|p[5412]<<24);m[b|0]=a;m[b+1|0]=a>>>8;m[b+2|0]=a>>>16;m[b+3|0]=a>>>24;o[o[d+4>>2]+11760>>2]=0;return 0}a=o[f+11812>>2];if(!a){return 2}e=o[c>>2];if(a>>>0<e>>>0){o[c>>2]=a;e=a}ca(b,o[f+11804>>2],e);a=o[d+4>>2];b=a+11804|0;d=b;e=o[b>>2];b=o[c>>2];o[d>>2]=e+b;a=a+11812|0;o[a>>2]=o[a>>2]-b;return 0}function td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=o[a>>2];if(o[d>>2]==1){c=u(b>>>0<8?b:8,44);b=c+11184|0;e=o[b+4>>2];o[d+16>>2]=o[b>>2];o[d+20>>2]=e;d=_a(a,o[b+40>>2]);a=o[a>>2];if(o[a>>2]==1){b=c+11184|0;c=o[b+32>>2];o[a+576>>2]=o[b+28>>2];o[a+580>>2]=c;o[a+568>>2]=o[b+24>>2];o[a+564>>2]=o[b+16>>2];c=o[b+12>>2];o[a+556>>2]=o[b+8>>2];o[a+560>>2]=c;f=d&1;a=1}else{a=0}a=a&f}else{a=0}return a|0}function ba(a){var b=0,c=0,d=0;b=N-16|0;N=b;h(+a);d=e(1)|0;e(0)|0;d=d&2147483647;a:{if(d>>>0<=1072243195){c=1;if(d>>>0<1044816030){break a}c=Za(a,0);break a}c=a-a;if(d>>>0>=2146435072){break a}b:{switch(Oc(a,b)&3){case 0:c=Za(t[b>>3],t[b+8>>3]);break a;case 1:c=-Ib(t[b>>3],t[b+8>>3]);break a;case 2:c=-Za(t[b>>3],t[b+8>>3]);break a;default:break b}}c=Ib(t[b>>3],t[b+8>>3])}a=c;N=b+16|0;return a}function ed(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=v(0);if((b|0)>=1){c=+(b+ -1|0);while(1){e=+(d|0);f=ba(e*12.566370614359172/c);g=ba(e*6.283185307179586/c);h=ba(e*18.84955592153876/c);i=(d<<2)+a|0,j=v(ba(e*25.132741228718345/c)*.0069473679177463055+(f*.27726316452026367+(g*-.4166315793991089+.21557894349098206)+h*-.08357894420623779)),s[i>>2]=j;d=d+1|0;if((d|0)!=(b|0)){continue}break}}}function ra(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=e;e=0;k=e;h=c;c=0;g=Ee(j,e,h,c);e=Q;l=g;g=g>>>0<0?e+1|0:e;f=d;e=0;i=b;d=Ee(f,e,b,0);b=Q;f=Ee(f,e,h,c);c=b+f|0;b=Q;b=c>>>0<f>>>0?b+1|0:b;h=b;f=b+l|0;b=g;b=f>>>0<h>>>0?b+1|0:b;g=b;b=Ee(i,m,j,k)+c|0;e=Q;e=b>>>0<c>>>0?e+1|0:e;i=e;f=e+f|0;e=g;o[a+8>>2]=f;o[a+12>>2]=f>>>0<i>>>0?e+1|0:e;o[a>>2]=d;o[a+4>>2]=b}function Wa(a,b,c,d,e){var f=0;f=1;a:{b:{c:{switch(o[d>>2]){case 0:if(nd(d+4|0,c,o[d+288>>2],e)){break a}break b;case 2:if(md(d+4|0,b-o[d+16>>2]|0,c,o[d+288>>2],e)){break a}break b;case 3:if(ld(d+4|0,b-o[d+16>>2]|0,c,o[d+288>>2],e)){break a}break b;case 1:break c;default:break a}}if(kd(d+4|0,b,c,o[d+288>>2],e)){break a}}o[o[a>>2]>>2]=7;f=0}return f}function Sa(a,b,c){var d=0,e=0,f=0,g=0,h=0;d=N-240|0;N=d;o[d>>2]=a;g=1;a:{if((b|0)<2){break a}e=a;while(1){f=e+ -24|0;h=b+ -2|0;e=f-o[(h<<2)+c>>2]|0;if((l[1](a,e)|0)>=0){if((l[1](a,f)|0)>-1){break a}}a=(g<<2)+d|0;b:{if((l[1](e,f)|0)>=0){o[a>>2]=e;h=b+ -1|0;break b}o[a>>2]=f;e=f}g=g+1|0;if((h|0)<2){break a}a=o[d>>2];b=h;continue}}Eb(d,g);N=d+240|0}function ua(a,b){a:{if((b|0)>=1024){a=a*8.98846567431158e+307;if((b|0)<2047){b=b+ -1023|0;break a}a=a*8.98846567431158e+307;b=((b|0)<3069?b:3069)+ -2046|0;break a}if((b|0)>-1023){break a}a=a*2.2250738585072014e-308;if((b|0)>-2045){b=b+1022|0;break a}a=a*2.2250738585072014e-308;b=((b|0)>-3066?b:-3066)+2044|0}f(0,0);f(1,b+1023<<20);return a*+g()}function Hb(a,b){var c=0;a:{c=o[a+24>>2];if((c-b|0)<=o[a+28>>2]){if((c|0)>(2147483647-b|0)){break a}b=b+c|0;b=(b|0)<2147483615?b+32|0:b;c=ea(o[a+16>>2],b<<2);if(!c){break a}o[a+16>>2]=c;c=ea(o[a+20>>2],b<<3);if(!c){break a}o[a+24>>2]=b;o[a+20>>2]=c}return 0}b=o[a>>2];if(b){X(b)}b=o[a+16>>2];if(b){X(b)}b=o[a+20>>2];if(b){X(b)}fa(a,360);return-1}function Ob(a){a=a|0;var b=0,c=0,d=0;b=N-16|0;N=b;c=1;a:{while(1){b:{c:{switch(o[o[a>>2]>>2]){case 0:if(Va(a)){continue}c=0;break b;case 1:d=(Ta(a)|0)!=0;break a;case 2:if(yb(a)){continue}break b;case 4:case 7:break b;case 3:break c;default:break a}}if(!ob(a,b+12|0)){c=0;break b}if(!o[b+12>>2]){continue}}break}d=c}N=b+16|0;return d|0}function gc(a,b){var c=0,d=0,e=0;c=N-160|0;N=c;fa(c+16|0,144);o[c+92>>2]=-1;o[c+60>>2]=b;o[c+24>>2]=-1;o[c+20>>2]=b;o[c+128>>2]=0;o[c+132>>2]=0;b=o[c+24>>2];d=b-o[c+20>>2]|0;o[c+136>>2]=d;o[c+140>>2]=d>>31;o[c+120>>2]=b;Rc(c,c+16|0);b=o[c+8>>2];d=o[c+12>>2];e=o[c+4>>2];o[a>>2]=o[c>>2];o[a+4>>2]=e;o[a+8>>2]=b;o[a+12>>2]=d;N=c+160|0}function Ga(a){var b=0,c=0,d=0;a:{b:{b=a;if(!(b&3)){break b}if(!p[a|0]){return 0}while(1){b=b+1|0;if(!(b&3)){break b}if(p[b|0]){continue}break}break a}while(1){c=b;b=b+4|0;d=o[c>>2];if(!((d^-1)&d+ -16843009&-2139062144)){continue}break}if(!(d&255)){return c-a|0}while(1){d=p[c+1|0];b=c+1|0;c=b;if(d){continue}break}}return b-a|0}function Eb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;d=24;e=N-256|0;N=e;a:{if((b|0)<2){break a}h=(b<<2)+a|0;o[h>>2]=e;c=e;while(1){f=d>>>0<256?d:256;ca(c,o[a>>2],f);c=0;while(1){g=(c<<2)+a|0;c=c+1|0;ca(o[g>>2],o[(c<<2)+a>>2],f);o[g>>2]=o[g>>2]+f;if((b|0)!=(c|0)){continue}break}d=d-f|0;if(!d){break a}c=o[h>>2];continue}}N=e+256|0}function ee(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=1;if(b){k=.5/+(c>>>0);h=4294967295;while(1){e=t[(g<<3)+a>>3];a:{if(!!(e>0)){e=la(k*e)*.5/.6931471805599453;e=e>=0?e:0;break a}e=e<0?1e+32:0}e=e*+(c-f>>>0)+ +(u(d,f)>>>0);i=e<h;h=i?e:h;j=i?g:j;f=f+1|0;g=g+1|0;if((g|0)!=(b|0)){continue}break}a=j+1|0}else{a=1}return a}function bd(a,b){var c=0,d=0,e=0,f=0,g=v(0);if((b|0)>=1){d=+(b+ -1|0);while(1){e=+(c|0);f=(c<<2)+a|0,g=v(ba(e*12.566370614359172/d)*.09799999743700027+(ba(e*6.283185307179586/d)*-.49799999594688416+.4020000100135803)+ba(e*18.84955592153876/d)*-.0010000000474974513),s[f>>2]=g;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function ad(a,b){var c=0,d=0,e=0,f=0,g=v(0);if((b|0)>=1){d=+(b+ -1|0);while(1){e=+(c|0);f=(c<<2)+a|0,g=v(ba(e*12.566370614359172/d)*.13659949600696564+(ba(e*6.283185307179586/d)*-.48917749524116516+.36358189582824707)+ba(e*18.84955592153876/d)*-.010641099885106087),s[f>>2]=g;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function gd(a,b){var c=0,d=0,e=0,f=0,g=v(0);if((b|0)>=1){d=+(b+ -1|0);while(1){e=+(c|0);f=(c<<2)+a|0,g=v(ba(e*12.566370614359172/d)*.14127999544143677+(ba(e*6.283185307179586/d)*-.488290011882782+.35874998569488525)+ba(e*18.84955592153876/d)*-.011680000461637974),s[f>>2]=g;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function Nd(a){a=a|0;var b=0,c=0,d=0;b=N-16|0;N=b;c=1;a:{b:{while(1){c:{d:{switch(o[o[a>>2]>>2]){case 0:if(Va(a)){continue}break c;case 1:if(Ta(a)){continue}break c;case 2:if(yb(a)){continue}break b;case 4:case 7:break b;case 3:break d;default:break a}}if(ob(a,b+12|0)){continue}}break}c=0}d=c}N=b+16|0;return d|0}function ka(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;d=N-16|0;N=d;g=a;h=a;a:{if(!b){b=0;break a}c=b>>31;e=c+b^c;c=x(e);ia(d,e,0,0,0,c+81|0);c=(o[d+12>>2]^65536)+(16414-c<<16)|0;e=0+o[d+8>>2]|0;if(e>>>0<f>>>0){c=c+1|0}f=b&-2147483648|c;c=o[d+4>>2];b=o[d>>2]}o[h>>2]=b;o[g+4>>2]=c;o[a+8>>2]=e;o[a+12>>2]=f;N=d+16|0}function sd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=o[a>>2];if(o[d>>2]==1){e=o[d+600>>2];if(e){X(e);d=o[a>>2];o[d+600>>2]=0;o[d+604>>2]=0}c=b?c:0;if(c){d=Na(4,c);if(!d){return 0}b=ca(d,b,c<<2);d=o[a>>2];o[d+604>>2]=c;o[d+600>>2]=b}if(c>>>o[1886]){a=0}else{o[d+636>>2]=c;a=1}a=(a|0)!=0}else{a=0}return a|0}function fb(a,b){var c=0,d=0,e=0;c=N-16|0;N=c;o[c+8>>2]=0;a:{if(!Y(a,c+8|0,8)){break a}if(!Y(a,c+12|0,8)){break a}d=o[c+8>>2]|o[c+12>>2]<<8;o[c+8>>2]=d;if(!Y(a,c+12|0,8)){break a}d=d|o[c+12>>2]<<16;o[c+8>>2]=d;if(!Y(a,c+12|0,8)){break a}a=d|o[c+12>>2]<<24;o[c+8>>2]=a;o[b>>2]=a;e=1}N=c+16|0;return e}function Sb(a){a=a|0;var b=0,c=0;if(a){$a(a);b=o[a+4>>2];c=o[b+1120>>2];if(c){X(c);b=o[a+4>>2]}gb(o[b+56>>2]);aa(o[a+4>>2]+124|0);aa(o[a+4>>2]+136|0);aa(o[a+4>>2]+148|0);aa(o[a+4>>2]+160|0);aa(o[a+4>>2]+172|0);aa(o[a+4>>2]+184|0);aa(o[a+4>>2]+196|0);aa(o[a+4>>2]+208|0);X(o[a+4>>2]);X(o[a>>2]);X(a)}}function qb(a,b){var c=0,d=0,e=0;if(a){fa(a+8|0,352);o[a+24>>2]=1024;o[a+4>>2]=16384;d=da(16384);o[a>>2]=d;c=da(4096);o[a+16>>2]=c;e=da(8192);o[a+20>>2]=e;a:{if(d){if(c?e:0){break a}X(d);c=o[a+16>>2]}if(c){X(c)}b=o[a+20>>2];if(b){X(b)}fa(a,360);return-1}o[a+336>>2]=b;a=0}else{a=-1}return a}function Ba(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=N-16|0;N=c;g=a;h=a;a:{if(!b){b=0;e=0;break a}d=b;b=x(b)^31;ia(c,d,0,0,0,112-b|0);b=(o[c+12>>2]^65536)+(b+16383<<16)|0;d=0+o[c+8>>2]|0;if(d>>>0<f>>>0){b=b+1|0}f=d;d=b;b=o[c+4>>2];e=o[c>>2]}o[h>>2]=e;o[g+4>>2]=b;o[a+8>>2]=f;o[a+12>>2]=d;N=c+16|0}function wa(a,b,c){var d=0,e=0,f=0,g=0;d=N-16|0;N=d;e=b;f=b;a:{b:{if(c>>>0>=33){if(!Y(a,d+12|0,c+ -32|0)){break a}if(!Y(a,d+8|0,32)){break a}a=o[d+12>>2];c=0;o[b>>2]=c;o[b+4>>2]=a;b=o[d+8>>2]|c;break b}if(!Y(a,d+8|0,c)){break a}a=0;b=o[d+8>>2]}o[f>>2]=b;o[e+4>>2]=a;g=1}N=d+16|0;return g}function pd(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;a=o[a>>2];if(o[a>>2]==1){g=c;h=a;i=b;e=o[1363];d=e&31;if(32<=(e&63)>>>0){e=-1<<d;d=0}else{e=(1<<d)-1&-1>>>32-d|-1<<d;d=-1<<d}f=d^-1;d=e^-1;b=(c|0)==(d|0)&f>>>0>b>>>0|d>>>0>c>>>0;o[h+592>>2]=b?i:f;o[a+596>>2]=b?g:d;a=1}else{a=0}return a}function ie(a){var b=0,c=0;a:{b:{c=o[a+4>>2];b=p[c|0];if(!b){break b}while(1){if((b+ -32&255)>>>0<95){c=c+1|0;b=p[c|0];if(b){continue}break b}break}c=0;break a}c=1;b=o[a+8>>2];if(!p[b|0]){break a}while(1){a=ec(b);if(!a){c=0;break a}b=a+b|0;if(p[b|0]){continue}break}}return c}function ge(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0;d=o[a>>2];if(!d){return 1}g=o[a+4>>2];a=0;e=1;while(1){h=c;f=b;b=u(a,24)+g|0;c=o[b>>2];b=o[b+4>>2];if(!((c|0)==-1&(b|0)==-1|e|((b|0)==(f|0)&c>>>0>h>>>0|b>>>0>f>>>0))){return 0}e=0;a=a+1|0;if(a>>>0<d>>>0){continue}break}return 1}function jb(a,b,c,d,e,f,g){a:{b:{if(!e){break b}c:{switch(l[e](a,b,c,g)|0){case 1:break a;case 0:break c;default:break b}}tb(d);if(l[f](a,o[d>>2],o[d+4>>2],0,0,g)){break a}if(!l[f](a,o[d+8>>2],o[d+12>>2],0,0,g)){return 1}o[o[a>>2]>>2]=5}return 0}o[o[a>>2]>>2]=5;return 0}function id(a,b){var c=0,d=v(0),e=v(0),f=0,g=v(0);if((b|0)>=1){e=v(b+ -1|0);while(1){d=v(v(c|0)/e);f=(c<<2)+a|0,g=v(+v(w(v(d+v(-.5))))*-.47999998927116394+.6200000047683716+ba(+d*6.283185307179586)*-.3799999952316284),s[f>>2]=g;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function Ya(a){var b=0,c=0;a:{if(r[a+20>>2]<=r[a+28>>2]){break a}l[o[a+36>>2]](a,0,0)|0;if(o[a+20>>2]){break a}return-1}b=o[a+4>>2];c=o[a+8>>2];if(b>>>0<c>>>0){b=b-c|0;l[o[a+40>>2]](a,b,b>>31,1)|0}o[a+28>>2]=0;o[a+16>>2]=0;o[a+20>>2]=0;o[a+4>>2]=0;o[a+8>>2]=0;return 0}function Cb(a){var b=0,c=0,d=0,e=0;d=o[a+76>>2]>=0?1:d;e=o[a>>2]&1;if(!e){b=o[a+52>>2];if(b){o[b+56>>2]=o[a+56>>2]}c=o[a+56>>2];if(c){o[c+52>>2]=b}if(o[3023]==(a|0)){o[3023]=c}}Bb(a);l[o[a+12>>2]](a)|0;b=o[a+96>>2];if(b){X(b)}a:{if(!e){X(a);break a}if(!d){break a}}}function kd(a,b,c,d,e){a=o[a>>2];a:{if(!_(e,o[1418]|(d|0)!=0,o[1416]+(o[1415]+o[1414]|0)|0)){break a}if(d){if(!Qa(e,d+ -1|0)){break a}}if(!b){return 1}d=0;b:{while(1){if(!va(e,o[a+(d<<2)>>2],c)){break b}d=d+1|0;if((d|0)!=(b|0)){continue}break}return 1}}return 0}function xb(a,b){var c=0,d=0,i=0;h(+a);c=e(1)|0;d=e(0)|0;i=c;c=c>>>20&2047;if((c|0)!=2047){if(!c){c=b;if(a==0){b=0}else{a=xb(a*0x10000000000000000,b);b=o[b>>2]+ -64|0}o[c>>2]=b;return a}o[b>>2]=c+ -1022;f(0,d|0);f(1,i&-2146435073|1071644672);a=+g()}return a}function ab(a,b){var c=0,d=0,e=0,f=0;d=1;a:{if(r[a+8>>2]>=b>>>0){break a}d=o[a>>2];e=4<<b;c=ea(d,e);if(!(c|b>>>0>29)){X(d)}o[a>>2]=c;d=0;if(!c){break a}f=o[a+4>>2];c=ea(f,e);if(!(c|b>>>0>29)){X(f)}o[a+4>>2]=c;if(!c){break a}fa(c,e);o[a+8>>2]=b;d=1}return d}function hd(a,b){var c=0,d=0,e=0,f=0,g=v(0);if((b|0)>=1){d=+(b+ -1|0);while(1){e=+(c|0);f=(c<<2)+a|0,g=v(ba(e*12.566370614359172/d)*.07999999821186066+(ba(e*6.283185307179586/d)*-.5+.41999998688697815)),s[f>>2]=g;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function Hc(a){var b=0,c=0;b=p[a+74|0];m[a+74|0]=b+ -1|b;if(r[a+20>>2]>r[a+28>>2]){l[o[a+36>>2]](a,0,0)|0}o[a+28>>2]=0;o[a+16>>2]=0;o[a+20>>2]=0;b=o[a>>2];if(b&4){o[a>>2]=b|32;return-1}c=o[a+44>>2]+o[a+48>>2]|0;o[a+8>>2]=c;o[a+4>>2]=c;return b<<27>>31}function Za(a,b){var c=0,d=0,e=0,f=0;c=a*a;d=c*.5;e=1-d;f=1-e-d;d=c*c;return e+(f+(c*(c*(c*(c*2480158728947673e-20+ -.001388888888887411)+.0416666666666666)+d*d*(c*(c*-1.1359647557788195e-11+2.087572321298175e-9)+ -2.7557314351390663e-7))-a*b))}function Kc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=N-16|0;N=e;a=I(o[a+60>>2],b|0,c|0,d&255,e+8|0)|0;b=0;a:{if(!a){break a}o[2896]=a;b=-1}b:{if(!b){b=o[e+12>>2];a=o[e+8>>2];break b}o[e+8>>2]=-1;o[e+12>>2]=-1;b=-1;a=-1}N=e+16|0;Q=b;return a|0}function ea(a,b){var c=0,d=0;if(!a){return da(b)}if(b>>>0>=4294967232){o[2896]=48;return 0}c=fc(a+ -8|0,b>>>0<11?16:b+11&-8);if(c){return c+8|0}c=da(b);if(!c){return 0}d=o[a+ -4>>2];d=(d&3?-4:-8)+(d&-8)|0;ca(c,a,d>>>0<b>>>0?d:b);X(a);return c}function Vd(a){var b=0;if(!qb(a+8|0,o[a+4>>2])){b=a+368|0;if(b){o[b>>2]=0;o[b+4>>2]=0;o[b+24>>2]=0;o[b+16>>2]=0;o[b+20>>2]=0;o[b+8>>2]=0;o[b+12>>2]=0}o[a+396>>2]=-1;o[a+400>>2]=-1;o[a+408>>2]=0;o[a+412>>2]=0;o[a+404>>2]=o[a>>2];b=1}return b}function ha(a,b,c){var d=0,e=0,f=0;if(!c){return 0}d=p[a|0];a:{if(!d){break a}while(1){b:{e=p[b|0];if((e|0)!=(d|0)){break b}c=c+ -1|0;if(!c|!e){break b}b=b+1|0;d=p[a+1|0];a=a+1|0;if(d){continue}break a}break}f=d}return(f&255)-p[b|0]|0}function Od(a){a=a|0;var b=0,c=0;a:{b:{while(1){c:{b=1;d:{switch(o[o[a>>2]>>2]){case 0:if(Va(a)){continue}break c;case 2:case 3:case 4:case 7:break b;case 1:break d;default:break a}}if(Ta(a)){continue}}break}b=0}c=b}return c|0}function Be(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=u(e,f);g=c&65535;h=a&65535;i=u(g,h);f=(i>>>16|0)+u(f,g)|0;e=(f&65535)+u(e,h)|0;a=(u(b,c)+j|0)+u(a,d)+(f>>>16)+(e>>>16)|0;b=i&65535|e<<16;Q=a;return b}function cd(a,b){var c=0,d=0,e=0,f=v(0);if((b|0)>=1){d=+(b+ -1|0);while(1){e=(c<<2)+a|0,f=v(ba(+(c|0)*6.283185307179586/d)*-.46000000834465027+.5400000214576721),s[e>>2]=f;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}
+
+
+
+function Xb(a){o[a+8>>2]=0;o[a+12>>2]=0;o[a>>2]=0;o[a+4>>2]=3;o[a+56>>2]=0;o[a+60>>2]=0;o[a+48>>2]=0;o[a+52>>2]=0;o[a+40>>2]=0;o[a+44>>2]=0;o[a+32>>2]=0;o[a+36>>2]=0;o[a+24>>2]=0;o[a+28>>2]=0;o[a+16>>2]=0;o[a+20>>2]=0}function Ib(a,b){var c=0,d=0;c=a*a;d=c*a;return a-(c*(b*.5-d*(c*(c*c)*(c*1.58969099521155e-10+ -2.5050760253406863e-8)+(c*(c*27557313707070068e-22+ -.0001984126982985795)+.00833333333332249)))-b+d*.16666666666666632)}function pb(a){if(!(!a|!o[a>>2])){o[a+344>>2]=0;o[a+348>>2]=0;o[a+340>>2]=-1;o[a+332>>2]=0;o[a+324>>2]=0;o[a+328>>2]=0;o[a+36>>2]=0;o[a+28>>2]=0;o[a+32>>2]=0;o[a+8>>2]=0;o[a+12>>2]=0;o[a+352>>2]=0;o[a+356>>2]=0}}function Bb(a){var b=0;if(a){if(o[a+76>>2]<=-1){return Ya(a)}return Ya(a)}if(o[2794]){b=Bb(o[2794])}a=o[3023];if(a){while(1){if(r[a+20>>2]>r[a+28>>2]){b=Ya(a)|b}a=o[a+56>>2];if(a){continue}break}}return b}function dd(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=v(0);if((b|0)>=1){e=+(b+ -1|0)*.5;g=e*+c;while(1){f=(+(d|0)-e)/g;h=(d<<2)+a|0,i=v(Cc(f*(f*-.5))),s[h>>2]=i;d=d+1|0;if((d|0)!=(b|0)){continue}break}}}function ib(a,b){var c=0,d=0;c=p[a|0];d=p[b|0];a:{if(!c|(c|0)!=(d|0)){break a}while(1){d=p[b+1|0];c=p[a+1|0];if(!c){break a}b=b+1|0;a=a+1|0;if((c|0)==(d|0)){continue}break}}return c-d|0}function Da(a,b,c,d){var e=0;a:{if(d>>>0>=33){d=d+ -32|0;if(c>>>d|0?d>>>0<=31:0){break a}if(!Z(a,c,d)){break a}return(Z(a,b,32)|0)!=0}if(b>>>d|0?(d|0)!=32:0){break a}e=Z(a,b,d)}return e}function Lb(a,b){var c=0,d=0,e=0,f=v(0);if((b|0)>=1){d=+(b+ -1|0);while(1){e=(c<<2)+a|0,f=v(.5-ba(+(c|0)*6.283185307179586/d)*.5),s[e>>2]=f;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function Xa(a,b,c,d,e,f,g,h,i){var j=0;j=N-16|0;N=j;ja(j,b,c,d,e,f,g,h,i^-2147483648);b=o[j+4>>2];o[a>>2]=o[j>>2];o[a+4>>2]=b;b=o[j+12>>2];o[a+8>>2]=o[j+8>>2];o[a+12>>2]=b;N=j+16|0}function Hd(a){a=a|0;var b=0;if(o[o[a>>2]>>2]==9){b=o[a+4>>2];a=0;while(1){o[((a<<2)+b|0)+608>>2]=1;a=a+1|0;if((a|0)!=128){continue}break}o[b+1124>>2]=0;a=1}else{a=0}return a|0}function ya(a){var b=0,c=0;b=o[3544];c=a+3&-4;a=b+c|0;a:{if(a>>>0<=b>>>0?(c|0)>=1:0){break a}if(a>>>0>R()<<16>>>0){if(!J(a|0)){break a}}o[3544]=a;return b}o[2896]=48;return-1}function La(a,b){var c=0,d=0,e=0;e=a;a:{if(b>>>0<=31){c=o[a>>2];d=o[a+4>>2];break a}c=o[a+4>>2];o[a+4>>2]=0;o[a>>2]=c;b=b+ -32|0;d=0}o[e+4>>2]=d>>>b;o[a>>2]=d<<32-b|c>>>b}function qa(a,b){var c=0,d=0,e=0;c=0;a:{if(!a){break a}d=Ee(a,0,b,0);e=Q;c=d;if((a|b)>>>0<65536){break a}c=e?-1:d}b=c;a=da(b);if(!(!a|!(p[a+ -4|0]&3))){fa(a,b)}return a}function Td(a){pb(a+8|0);if(o[a+372>>2]>=0){o[a+376>>2]=0;o[a+380>>2]=0;o[a+392>>2]=0;o[a+384>>2]=0;o[a+388>>2]=0}o[a+408>>2]=0;o[a+412>>2]=0;if(o[a>>2]){o[a+404>>2]=1}}function Pa(a,b,c){var d=0,e=0,f=0;a:{if(!c){break a}while(1){d=p[a|0];e=p[b|0];if((d|0)==(e|0)){b=b+1|0;a=a+1|0;c=c+ -1|0;if(c){continue}break a}break}f=d-e|0}return f}function Ma(a,b){var c=0,d=0,e=0;e=a;a:{if(b>>>0<=31){c=o[a+4>>2];d=o[a>>2];break a}c=o[a>>2];o[a+4>>2]=c;o[a>>2]=0;b=b+ -32|0;d=0}o[e>>2]=d<<b;o[a+4>>2]=c<<b|d>>>32-b}function Ld(a,b){a=a|0;b=b|0;var c=0;a:{if(o[o[a>>2]>>2]!=9|b>>>0>126){break a}a=o[a+4>>2];o[(a+(b<<2)|0)+608>>2]=0;c=1;if((b|0)!=2){break a}o[a+1124>>2]=0}return c|0}function Id(a,b){a=a|0;b=b|0;var c=0;a:{if(o[o[a>>2]>>2]!=9|b>>>0>126){break a}c=1;a=o[a+4>>2];o[(a+(b<<2)|0)+608>>2]=1;if((b|0)!=2){break a}o[a+1124>>2]=0}return c|0}function nd(a,b,c,d){var e=0;a:{if(!_(d,o[1417]|(c|0)!=0,o[1416]+(o[1415]+o[1414]|0)|0)){break a}if(c){if(!Qa(d,c+ -1|0)){break a}}e=(va(d,o[a>>2],b)|0)!=0}return e}function kc(a,b){a=a|0;b=b|0;var c=0,d=0;c=o[a+4>>2];d=o[b+4>>2];a=o[a>>2];b=o[b>>2];return((a|0)==(b|0)&(c|0)==(d|0)?0:(c|0)==(d|0)&a>>>0<b>>>0|c>>>0<d>>>0?-1:1)|0}function rc(a,b){var c=0;if(o[a+4>>2]>=0){while(1){c=qc(a,b);if((c|0)>0){return 1}if(!c){return 0}if(o[a+16>>2]){continue}break}o[a+16>>2]=1;a=-1}else{a=0}return a}function ye(a,b){var c=0;o[a+8>>2]=0;o[a+12>>2]=0;o[a+4>>2]=2048;o[a+16>>2]=0;o[a+20>>2]=0;c=da(8192);o[a>>2]=c;if(!c){return 0}o[a+40>>2]=b;o[a+36>>2]=7;return 1}function uc(a,b){var c=0,d=0;if(!(!a|!o[a>>2])){d=o[a+28>>2];a:{b:{if(o[a+328>>2]){if(d){break b}break a}if(o[a+332>>2]|!d){break a}}c=1}c=rb(a,b,c)}return c}function fd(a,b){var c=0,d=0,e=0;if((b|0)>=1){e=+(b+ -1|0)*.5;while(1){c=(+(d|0)-e)/e;c=1-c*c;s[(d<<2)+a>>2]=c*c;d=d+1|0;if((d|0)!=(b|0)){continue}break}}}function ue(a,b){var c=0,d=0,e=0,f=0;c=N-16|0;N=c;d=0;a:{if(!cb(a,c+12|0,c+8|0)){break a}e=b,f=qe(o[c+12>>2],o[c+8>>2]),n[e>>1]=f;d=1}N=c+16|0;return d}function te(a,b){var c=0,d=0,e=0,f=0;c=N-16|0;N=c;d=0;a:{if(!cb(a,c+12|0,c+8|0)){break a}e=b,f=Vb(o[c+12>>2],o[c+8>>2]),m[e|0]=f;d=1}N=c+16|0;return d}function bb(a,b){var c=0;a:{if(!Z(a,b&255,8)){break a}if(!Z(a,b>>>8&255,8)){break a}if(!Z(a,b>>>16&255,8)){break a}c=(Z(a,b>>>24|0,8)|0)!=0}return c}function Wc(a,b){var c=0,d=0,e=0;if((b|0)>=1){d=+(b+ -1|0)*.5;while(1){e=(+(c|0)-d)/d;s[(c<<2)+a>>2]=1-e*e;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function ta(a,b,c){var d=0;a:{if(a>>>0>1073741823){break a}a=da(a?a<<2:1);if(!a){break a}d=o[b>>2];if(d){X(d)}o[b>>2]=a;o[c>>2]=a;d=1}return d}function Ae(a){var b=0;b=o[a>>2];if(b){X(b)}o[a+36>>2]=0;o[a+40>>2]=0;o[a>>2]=0;o[a+4>>2]=0;o[a+8>>2]=0;o[a+12>>2]=0;o[a+16>>2]=0;o[a+20>>2]=0}function xc(a,b){var c=0;c=N-16|0;N=c;o[c+8>>2]=o[b>>2];o[c+12>>2]=o[b+4>>2];a=yc(a,c+8|0,o[b+12>>2],o[b+16>>2],o[b+20>>2]);N=c+16|0;return a}function Xd(a,b,c){var d=0;a:{if(a>>>0>536870911){break a}a=da(a?a<<3:1);if(!a){break a}d=o[b>>2];if(d){X(d)}o[b>>2]=a;o[c>>2]=a;d=1}return d}function Wd(a){pb(a+8|0);if(o[a+372>>2]>=0){o[a+376>>2]=0;o[a+380>>2]=0;o[a+392>>2]=0;o[a+384>>2]=0;o[a+388>>2]=0}o[a+408>>2]=0;o[a+412>>2]=0}function Qc(a,b,c,d){var e=0,f=0;f=d&65535;d=d>>>16&32767;a:{if((d|0)!=32767){e=4;if(d){break a}return a|c|(b|f)?3:2}e=!(a|c|(b|f))}return e}function Fc(a){var b=0,c=0;b=N-16|0;N=b;c=-1;a:{if(Hc(a)){break a}if((l[o[a+32>>2]](a,b+15|0,1)|0)!=1){break a}c=p[b+15|0]}N=b+16|0;return c}function xa(a,b,c){var d=0,e=0;d=N-16|0;N=d;e=0;a:{if(!Y(a,d+12|0,c)){break a}a=1<<c+ -1;o[b>>2]=(a^o[d+12>>2])-a;e=1}a=e;N=d+16|0;return a}function sc(a){var b=0;if(a){b=o[a>>2];if(b){X(b)}o[a>>2]=0;o[a+4>>2]=0;o[a+24>>2]=0;o[a+16>>2]=0;o[a+20>>2]=0;o[a+8>>2]=0;o[a+12>>2]=0}}function ke(a){var b=0,c=0;a:{if(!(a&1)){while(1){b=b+1|0;c=a&2;a=a>>>1|0;if(!c){continue}break}a=15;if(b>>>0>14){break a}}a=b}return a}function pc(a,b){var c=0,d=0;c=-1;d=o[a+4>>2];a:{if((d|0)<0){break a}b=o[a+8>>2]+b|0;if((b|0)>(d|0)){break a}o[a+8>>2]=b;c=0}return c}function Yd(a,b,c,d){var e=0,f=0;if(d){while(1){f=e<<2;s[f+c>>2]=s[b+f>>2]*v(o[a+f>>2]);e=e+1|0;if((e|0)!=(d|0)){continue}break}}}function Qb(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return wb(a,b,c,d,e,f,g,h,i,j,0)|0}function Pd(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return wb(a,b,c,d,e,f,g,h,i,j,1)|0}function lc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=l[o[o[a+4>>2]+4>>2]](a,b,c,d)|0;if(a>>>0<=2){return o[(a<<2)+7572>>2]}return 5}function Fb(a,b,c,d,e,f,g,h,i){o[a>>2]=b;o[a+4>>2]=c;o[a+8>>2]=d;o[a+12>>2]=e&65535|(i>>>16&32768|e>>>16&32767)<<16}function Zc(a,b){var c=0;if((b|0)>=1){while(1){o[(c<<2)+a>>2]=1065353216;c=c+1|0;if((c|0)!=(b|0)){continue}break}}}function Sd(a){if(qb(a+8|0,o[a>>2])){a=0}else{o[a+392>>2]=0;o[a+396>>2]=0;o[a+384>>2]=0;o[a+388>>2]=1;a=1}return a}function Aa(a){var b=0;b=o[a>>2];if(b){X(b)}b=o[a+8>>2];if(b){X(b)}o[a>>2]=0;o[a+4>>2]=0;o[a+8>>2]=0;o[a+12>>2]=0}function Kd(a){a=a|0;if(o[o[a>>2]>>2]==9){fa(o[a+4>>2]+608|0,512);o[o[a+4>>2]+1124>>2]=0;a=1}else{a=0}return a|0}function Vb(a,b){var c=0;if(b){while(1){c=p[(p[a|0]^c)+1024|0];a=a+1|0;b=b+ -1|0;if(b){continue}break}}return c}function oa(a){var b=0,c=0;b=N-16|0;N=b;gc(b,a);c=Gc(o[b>>2],o[b+4>>2],o[b+8>>2],o[b+12>>2]);N=b+16|0;return c}function sb(a){var b=0;if(a){b=o[a>>2];if(b){X(b)}b=o[a+16>>2];if(b){X(b)}b=o[a+20>>2];if(b){X(b)}fa(a,360)}}function de(a,b){if(!!(a>0)){a=la(.5/+(b>>>0)*a)*.5/.6931471805599453;return a>=0?a:0}return a<0?1e+32:0}function Fd(a,b){a=a|0;b=b|0;a=o[a>>2];if(o[a>>2]==9){o[a+36>>2]=b;o[a+32>>2]=0;a=1}else{a=0}return a|0}function je(a,b,c){var d=0;while(1){d=a;if(d){a=d+ -1|0;if(b>>>d>>>0<=c>>>0){continue}}break}return d}function aa(a){var b=0;b=o[a>>2];if(b){X(b)}b=o[a+4>>2];if(b){X(b)}o[a+8>>2]=0;o[a>>2]=0;o[a+4>>2]=0}function Bd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return vb(a,b,c,d,e,f,g,1)|0}function he(a){if(a+ -1>>>0<=655349){return!((a>>>0)%10)|(!((a>>>0)%1e3)|a>>>0<65536)}return 0}function Qa(a,b){if(b>>>0<=31){return Z(a,1,b+1|0)}if(!Ca(a,b)){return 0}return(Z(a,1,1)|0)!=0}function ve(a){var b=0;b=o[a>>2];if(b){X(b)}o[a+16>>2]=0;o[a>>2]=0;o[a+8>>2]=0;o[a+12>>2]=0}function rd(a,b){a=a|0;b=b|0;a=o[a>>2];if(o[a>>2]==1){o[a+632>>2]=b;a=1}else{a=0}return a|0}function Na(a,b){if(!(b?a:0)){return da(1)}Ee(b,0,a,0);if(Q){a=0}else{a=da(u(a,b))}return a}function He(a,b){var c=0,d=0;c=b&31;d=(-1>>>c&a)<<c;c=a;a=0-b&31;return d|(c&-1<<a)>>>a}
+
+
+
+function Cd(a){a=a|0;if(!o[o[a>>2]+4>>2]){return 9}return o[o[o[o[a+4>>2]+11752>>2]>>2]>>2]}function wd(a,b){a=a|0;b=b|0;a=o[a>>2];if(o[a>>2]==1){o[a+28>>2]=b;a=1}else{a=0}return a|0}function vd(a,b){a=a|0;b=b|0;a=o[a>>2];if(o[a>>2]==1){o[a+36>>2]=b;a=1}else{a=0}return a|0}function ud(a,b){a=a|0;b=b|0;a=o[a>>2];if(o[a>>2]==1){o[a+24>>2]=b;a=1}else{a=0}return a|0}function qd(a,b){a=a|0;b=b|0;a=o[a>>2];if(o[a>>2]==1){o[a+32>>2]=b;a=1}else{a=0}return a|0}function Md(a,b){a=a|0;b=b|0;a=o[a>>2];if(o[a>>2]==9){o[a+28>>2]=b;a=1}else{a=0}return a|0}function od(a,b){a=a|0;b=b|0;a=o[a>>2];if(o[a>>2]==1){o[a+4>>2]=b;a=1}else{a=0}return a|0}function Ad(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return vb(a,0,b,c,d,e,f,0)|0}function _(a,b,c){var d=0;a:{if(c>>>0<=31){d=0;if(b>>>c){break a}}d=Z(a,b,c)}return d}function ub(a){a=+H(+a);if(w(a)<2147483648){return~~a}return-2147483648}function va(a,b,c){return Z(a,(c>>>0<32?-1<<c^-1:-1)&b,c)}function Uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Q=0;return 0}function Ac(a,b,c){a=a|0;b=b|0;c=c|0;return pd(a,b,c)|0}function Ha(a,b){a=Ic(a,b);return p[a|0]==(b&255)?a:0}function De(a){if(a){return 31-x(a+ -1^a)|0}return 32}function dc(a,b,c){a=a|0;b=b|0;c=c|0;o[o[c>>2]>>2]=3}function gb(a){var b=0;b=o[a>>2];if(b){X(b)}X(a)}function jc(a){a=a|0;a=N-a&-16;N=a;return a|0}function Qd(a){a=a|0;return o[o[a>>2]+28>>2]}function Mc(a){a=a|0;return M(o[a+60>>2])|0}function Ee(a,b,c,d){a=Be(a,b,c,d);return a}function Dd(a){a=a|0;return o[o[a>>2]+4>>2]}function Rb(a){a=a|0;return o[o[a>>2]>>2]}function Ge(a,b){Ce(a,b,588);Q=P;return O}function cc(a,b,c){a=a|0;b=b|0;c=c|0}function Pc(a){a=a|0;return S(a|0)|0}function Fe(a,b,c){return Ce(a,b,c)}function Vc(a){a=a|0;return 0}function Tc(){return 11584}function ic(a){a=a|0;N=a}function hc(){return N|0}function Ec(){}
+// EMSCRIPTEN_END_FUNCS
+l[1]=kc;l[2]=Mc;l[3]=Lc;l[4]=Kc;l[5]=_d;l[6]=Zd;l[7]=mc;l[8]=lc;l[9]=Vc;l[10]=Jc;l[11]=Uc;l[12]=be;l[13]=ae;l[14]=oe;l[15]=pe;l[16]=oc;l[17]=fe;l[18]=bc;l[19]=ac;l[20]=cc;l[21]=dc;function R(){return buffer.byteLength/65536|0}function S(pagesToAdd){pagesToAdd=pagesToAdd|0;var T=R()|0;var U=T+pagesToAdd|0;if(T<U&&U<65536){var V=new ArrayBuffer(u(U,65536));var W=new global.Int8Array(V);W.set(m);m=W;m=new global.Int8Array(V);n=new global.Int16Array(V);o=new global.Int32Array(V);p=new global.Uint8Array(V);q=new global.Uint16Array(V);r=new global.Uint32Array(V);s=new global.Float32Array(V);t=new global.Float64Array(V);buffer=V;k.buffer=V}return T}return{"__wasm_call_ctors":Ec,"FLAC__stream_decoder_new":Pb,"FLAC__stream_decoder_delete":Sb,"FLAC__stream_decoder_finish":$a,"FLAC__stream_decoder_init_stream":Qb,"FLAC__stream_decoder_reset":Nb,"FLAC__stream_decoder_init_ogg_stream":Pd,"FLAC__stream_decoder_set_ogg_serial_number":Fd,"FLAC__stream_decoder_set_md5_checking":Md,"FLAC__stream_decoder_set_metadata_respond":Id,"FLAC__stream_decoder_set_metadata_respond_application":Gd,"FLAC__stream_decoder_set_metadata_respond_all":Hd,"FLAC__stream_decoder_set_metadata_ignore":Ld,"FLAC__stream_decoder_set_metadata_ignore_application":Jd,"FLAC__stream_decoder_set_metadata_ignore_all":Kd,"FLAC__stream_decoder_get_state":Rb,"FLAC__stream_decoder_get_md5_checking":Qd,"FLAC__stream_decoder_process_single":Ob,"FLAC__stream_decoder_process_until_end_of_metadata":Od,"FLAC__stream_decoder_process_until_end_of_stream":Nd,"FLAC__stream_encoder_new":zd,"FLAC__stream_encoder_delete":Ed,"FLAC__stream_encoder_finish":Mb,"FLAC__stream_encoder_init_stream":Ad,"FLAC__stream_encoder_init_ogg_stream":Bd,"FLAC__stream_encoder_set_ogg_serial_number":rd,"FLAC__stream_encoder_set_verify":od,"FLAC__stream_encoder_set_channels":ud,"FLAC__stream_encoder_set_bits_per_sample":wd,"FLAC__stream_encoder_set_sample_rate":qd,"FLAC__stream_encoder_set_compression_level":td,"FLAC__stream_encoder_set_blocksize":vd,"FLAC__stream_encoder_set_total_samples_estimate":Ac,"FLAC__stream_encoder_set_metadata":sd,"FLAC__stream_encoder_get_state":Rb,"FLAC__stream_encoder_get_verify_decoder_state":Cd,"FLAC__stream_encoder_get_verify":Dd,"FLAC__stream_encoder_process":yd,"FLAC__stream_encoder_process_interleaved":xd,"__errno_location":Tc,"stackSave":hc,"stackRestore":ic,"stackAlloc":jc,"malloc":da,"free":X,"__growWasmMemory":Pc}}return j({"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"Math":Math},asmLibraryArg,wasmMemory.buffer)}
+
+
+// EMSCRIPTEN_END_ASM
+
+
+
+
+)(asmLibraryArg,wasmMemory,wasmTable)},instantiate:function(binary,info){return{then:function(ok){ok({"instance":new WebAssembly.Instance(new WebAssembly.Module(binary))})}}},RuntimeError:Error};wasmBinary=[];if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for getValue: "+type)}return null}var wasmMemory;var wasmTable=new WebAssembly.Table({"initial":22,"maximum":22+5,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);ret=convertReturnValue(ret);if(stack!==0)stackRestore(stack);return ret}function cwrap(ident,returnType,argTypes,opts){argTypes=argTypes||[];var numericArgs=argTypes.every(function(type){return type==="number"});var numericRet=returnType!=="string";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return function(){return ccall(ident,returnType,argTypes,arguments,opts)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}var WASM_PAGE_SIZE=65536;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var DYNAMIC_BASE=5257216,DYNAMICTOP_PTR=14176;var INITIAL_INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_INITIAL_MEMORY/WASM_PAGE_SIZE,"maximum":2147483648/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var Math_abs=Math.abs;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_min=Math.min;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";throw new WebAssembly.RuntimeError(what)}var memoryInitializer="libflac.min.js.mem";function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="libflac.min.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={"env":asmLibraryArg,"wasi_snapshot_preview1":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){requestedSize=requestedSize>>>0;var oldSize=_emscripten_get_heap_size();var PAGE_MULTIPLE=65536;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}var minHeapSize=16777216;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(minHeapSize,requestedSize,overGrownHeapSize),PAGE_MULTIPLE));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node},getFileDataAsRegularArray:function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name]},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name]},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){assert(address===0);if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(e){if(!(e instanceof FS.ErrnoError))throw e+" : "+stackTrace();return setErrNo(e.errno)},lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(10)}if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||"r";opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||"w";var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device;if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);random_device=function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");random_device=function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}else{}if(!random_device){random_device=function(){abort("random_device")}}FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode("/proc/self","fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin","r");var stdout=FS.open("/dev/stdout","w");var stderr=FS.open("/dev/stderr","w")},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},joinPath:function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]=="/")path=path.substr(1);return path},absolutePath:function(relative,base){return PATH_FS.resolve(base,relative)},standardizePath:function(path){return PATH.normalize(path)},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{setErrNo(ret.error);return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createFolder:function(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode)},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,"w");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},createLink:function(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);return FS.symlink(target,path)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){success=false}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}if(!success)setErrNo(29);return success},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(29)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path){if(path[0]!=="/"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}path=PATH.join2(dir,path)}return path},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _round(d){d=+d;return d>=+0?+Math_floor(d+ +.5):+Math_ceil(d-+.5)}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"emscripten_memcpy_big":_emscripten_memcpy_big,"emscripten_resize_heap":_emscripten_resize_heap,"fd_close":_fd_close,"fd_read":_fd_read,"fd_seek":_fd_seek,"fd_write":_fd_write,"memory":wasmMemory,"round":_round,"table":wasmTable};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["__wasm_call_ctors"]).apply(null,arguments)};var _FLAC__stream_decoder_new=Module["_FLAC__stream_decoder_new"]=function(){return(_FLAC__stream_decoder_new=Module["_FLAC__stream_decoder_new"]=Module["asm"]["FLAC__stream_decoder_new"]).apply(null,arguments)};var _FLAC__stream_decoder_delete=Module["_FLAC__stream_decoder_delete"]=function(){return(_FLAC__stream_decoder_delete=Module["_FLAC__stream_decoder_delete"]=Module["asm"]["FLAC__stream_decoder_delete"]).apply(null,arguments)};var _FLAC__stream_decoder_finish=Module["_FLAC__stream_decoder_finish"]=function(){return(_FLAC__stream_decoder_finish=Module["_FLAC__stream_decoder_finish"]=Module["asm"]["FLAC__stream_decoder_finish"]).apply(null,arguments)};var _FLAC__stream_decoder_init_stream=Module["_FLAC__stream_decoder_init_stream"]=function(){return(_FLAC__stream_decoder_init_stream=Module["_FLAC__stream_decoder_init_stream"]=Module["asm"]["FLAC__stream_decoder_init_stream"]).apply(null,arguments)};var _FLAC__stream_decoder_reset=Module["_FLAC__stream_decoder_reset"]=function(){return(_FLAC__stream_decoder_reset=Module["_FLAC__stream_decoder_reset"]=Module["asm"]["FLAC__stream_decoder_reset"]).apply(null,arguments)};var _FLAC__stream_decoder_init_ogg_stream=Module["_FLAC__stream_decoder_init_ogg_stream"]=function(){return(_FLAC__stream_decoder_init_ogg_stream=Module["_FLAC__stream_decoder_init_ogg_stream"]=Module["asm"]["FLAC__stream_decoder_init_ogg_stream"]).apply(null,arguments)};var _FLAC__stream_decoder_set_ogg_serial_number=Module["_FLAC__stream_decoder_set_ogg_serial_number"]=function(){return(_FLAC__stream_decoder_set_ogg_serial_number=Module["_FLAC__stream_decoder_set_ogg_serial_number"]=Module["asm"]["FLAC__stream_decoder_set_ogg_serial_number"]).apply(null,arguments)};var _FLAC__stream_decoder_set_md5_checking=Module["_FLAC__stream_decoder_set_md5_checking"]=function(){return(_FLAC__stream_decoder_set_md5_checking=Module["_FLAC__stream_decoder_set_md5_checking"]=Module["asm"]["FLAC__stream_decoder_set_md5_checking"]).apply(null,arguments)};var _FLAC__stream_decoder_set_metadata_respond=Module["_FLAC__stream_decoder_set_metadata_respond"]=function(){return(_FLAC__stream_decoder_set_metadata_respond=Module["_FLAC__stream_decoder_set_metadata_respond"]=Module["asm"]["FLAC__stream_decoder_set_metadata_respond"]).apply(null,arguments)};var _FLAC__stream_decoder_set_metadata_respond_application=Module["_FLAC__stream_decoder_set_metadata_respond_application"]=function(){return(_FLAC__stream_decoder_set_metadata_respond_application=Module["_FLAC__stream_decoder_set_metadata_respond_application"]=Module["asm"]["FLAC__stream_decoder_set_metadata_respond_application"]).apply(null,arguments)};var _FLAC__stream_decoder_set_metadata_respond_all=Module["_FLAC__stream_decoder_set_metadata_respond_all"]=function(){return(_FLAC__stream_decoder_set_metadata_respond_all=Module["_FLAC__stream_decoder_set_metadata_respond_all"]=Module["asm"]["FLAC__stream_decoder_set_metadata_respond_all"]).apply(null,arguments)};var _FLAC__stream_decoder_set_metadata_ignore=Module["_FLAC__stream_decoder_set_metadata_ignore"]=function(){return(_FLAC__stream_decoder_set_metadata_ignore=Module["_FLAC__stream_decoder_set_metadata_ignore"]=Module["asm"]["FLAC__stream_decoder_set_metadata_ignore"]).apply(null,arguments)};var _FLAC__stream_decoder_set_metadata_ignore_application=Module["_FLAC__stream_decoder_set_metadata_ignore_application"]=function(){return(_FLAC__stream_decoder_set_metadata_ignore_application=Module["_FLAC__stream_decoder_set_metadata_ignore_application"]=Module["asm"]["FLAC__stream_decoder_set_metadata_ignore_application"]).apply(null,arguments)};var _FLAC__stream_decoder_set_metadata_ignore_all=Module["_FLAC__stream_decoder_set_metadata_ignore_all"]=function(){return(_FLAC__stream_decoder_set_metadata_ignore_all=Module["_FLAC__stream_decoder_set_metadata_ignore_all"]=Module["asm"]["FLAC__stream_decoder_set_metadata_ignore_all"]).apply(null,arguments)};var _FLAC__stream_decoder_get_state=Module["_FLAC__stream_decoder_get_state"]=function(){return(_FLAC__stream_decoder_get_state=Module["_FLAC__stream_decoder_get_state"]=Module["asm"]["FLAC__stream_decoder_get_state"]).apply(null,arguments)};var _FLAC__stream_decoder_get_md5_checking=Module["_FLAC__stream_decoder_get_md5_checking"]=function(){return(_FLAC__stream_decoder_get_md5_checking=Module["_FLAC__stream_decoder_get_md5_checking"]=Module["asm"]["FLAC__stream_decoder_get_md5_checking"]).apply(null,arguments)};var _FLAC__stream_decoder_process_single=Module["_FLAC__stream_decoder_process_single"]=function(){return(_FLAC__stream_decoder_process_single=Module["_FLAC__stream_decoder_process_single"]=Module["asm"]["FLAC__stream_decoder_process_single"]).apply(null,arguments)};var _FLAC__stream_decoder_process_until_end_of_metadata=Module["_FLAC__stream_decoder_process_until_end_of_metadata"]=function(){return(_FLAC__stream_decoder_process_until_end_of_metadata=Module["_FLAC__stream_decoder_process_until_end_of_metadata"]=Module["asm"]["FLAC__stream_decoder_process_until_end_of_metadata"]).apply(null,arguments)};var _FLAC__stream_decoder_process_until_end_of_stream=Module["_FLAC__stream_decoder_process_until_end_of_stream"]=function(){return(_FLAC__stream_decoder_process_until_end_of_stream=Module["_FLAC__stream_decoder_process_until_end_of_stream"]=Module["asm"]["FLAC__stream_decoder_process_until_end_of_stream"]).apply(null,arguments)};var _FLAC__stream_encoder_new=Module["_FLAC__stream_encoder_new"]=function(){return(_FLAC__stream_encoder_new=Module["_FLAC__stream_encoder_new"]=Module["asm"]["FLAC__stream_encoder_new"]).apply(null,arguments)};var _FLAC__stream_encoder_delete=Module["_FLAC__stream_encoder_delete"]=function(){return(_FLAC__stream_encoder_delete=Module["_FLAC__stream_encoder_delete"]=Module["asm"]["FLAC__stream_encoder_delete"]).apply(null,arguments)};var _FLAC__stream_encoder_finish=Module["_FLAC__stream_encoder_finish"]=function(){return(_FLAC__stream_encoder_finish=Module["_FLAC__stream_encoder_finish"]=Module["asm"]["FLAC__stream_encoder_finish"]).apply(null,arguments)};var _FLAC__stream_encoder_init_stream=Module["_FLAC__stream_encoder_init_stream"]=function(){return(_FLAC__stream_encoder_init_stream=Module["_FLAC__stream_encoder_init_stream"]=Module["asm"]["FLAC__stream_encoder_init_stream"]).apply(null,arguments)};var _FLAC__stream_encoder_init_ogg_stream=Module["_FLAC__stream_encoder_init_ogg_stream"]=function(){return(_FLAC__stream_encoder_init_ogg_stream=Module["_FLAC__stream_encoder_init_ogg_stream"]=Module["asm"]["FLAC__stream_encoder_init_ogg_stream"]).apply(null,arguments)};var _FLAC__stream_encoder_set_ogg_serial_number=Module["_FLAC__stream_encoder_set_ogg_serial_number"]=function(){return(_FLAC__stream_encoder_set_ogg_serial_number=Module["_FLAC__stream_encoder_set_ogg_serial_number"]=Module["asm"]["FLAC__stream_encoder_set_ogg_serial_number"]).apply(null,arguments)};var _FLAC__stream_encoder_set_verify=Module["_FLAC__stream_encoder_set_verify"]=function(){return(_FLAC__stream_encoder_set_verify=Module["_FLAC__stream_encoder_set_verify"]=Module["asm"]["FLAC__stream_encoder_set_verify"]).apply(null,arguments)};var _FLAC__stream_encoder_set_channels=Module["_FLAC__stream_encoder_set_channels"]=function(){return(_FLAC__stream_encoder_set_channels=Module["_FLAC__stream_encoder_set_channels"]=Module["asm"]["FLAC__stream_encoder_set_channels"]).apply(null,arguments)};var _FLAC__stream_encoder_set_bits_per_sample=Module["_FLAC__stream_encoder_set_bits_per_sample"]=function(){return(_FLAC__stream_encoder_set_bits_per_sample=Module["_FLAC__stream_encoder_set_bits_per_sample"]=Module["asm"]["FLAC__stream_encoder_set_bits_per_sample"]).apply(null,arguments)};var _FLAC__stream_encoder_set_sample_rate=Module["_FLAC__stream_encoder_set_sample_rate"]=function(){return(_FLAC__stream_encoder_set_sample_rate=Module["_FLAC__stream_encoder_set_sample_rate"]=Module["asm"]["FLAC__stream_encoder_set_sample_rate"]).apply(null,arguments)};var _FLAC__stream_encoder_set_compression_level=Module["_FLAC__stream_encoder_set_compression_level"]=function(){return(_FLAC__stream_encoder_set_compression_level=Module["_FLAC__stream_encoder_set_compression_level"]=Module["asm"]["FLAC__stream_encoder_set_compression_level"]).apply(null,arguments)};var _FLAC__stream_encoder_set_blocksize=Module["_FLAC__stream_encoder_set_blocksize"]=function(){return(_FLAC__stream_encoder_set_blocksize=Module["_FLAC__stream_encoder_set_blocksize"]=Module["asm"]["FLAC__stream_encoder_set_blocksize"]).apply(null,arguments)};var _FLAC__stream_encoder_set_total_samples_estimate=Module["_FLAC__stream_encoder_set_total_samples_estimate"]=function(){return(_FLAC__stream_encoder_set_total_samples_estimate=Module["_FLAC__stream_encoder_set_total_samples_estimate"]=Module["asm"]["FLAC__stream_encoder_set_total_samples_estimate"]).apply(null,arguments)};var _FLAC__stream_encoder_set_metadata=Module["_FLAC__stream_encoder_set_metadata"]=function(){return(_FLAC__stream_encoder_set_metadata=Module["_FLAC__stream_encoder_set_metadata"]=Module["asm"]["FLAC__stream_encoder_set_metadata"]).apply(null,arguments)};var _FLAC__stream_encoder_get_state=Module["_FLAC__stream_encoder_get_state"]=function(){return(_FLAC__stream_encoder_get_state=Module["_FLAC__stream_encoder_get_state"]=Module["asm"]["FLAC__stream_encoder_get_state"]).apply(null,arguments)};var _FLAC__stream_encoder_get_verify_decoder_state=Module["_FLAC__stream_encoder_get_verify_decoder_state"]=function(){return(_FLAC__stream_encoder_get_verify_decoder_state=Module["_FLAC__stream_encoder_get_verify_decoder_state"]=Module["asm"]["FLAC__stream_encoder_get_verify_decoder_state"]).apply(null,arguments)};var _FLAC__stream_encoder_get_verify=Module["_FLAC__stream_encoder_get_verify"]=function(){return(_FLAC__stream_encoder_get_verify=Module["_FLAC__stream_encoder_get_verify"]=Module["asm"]["FLAC__stream_encoder_get_verify"]).apply(null,arguments)};var _FLAC__stream_encoder_process=Module["_FLAC__stream_encoder_process"]=function(){return(_FLAC__stream_encoder_process=Module["_FLAC__stream_encoder_process"]=Module["asm"]["FLAC__stream_encoder_process"]).apply(null,arguments)};var _FLAC__stream_encoder_process_interleaved=Module["_FLAC__stream_encoder_process_interleaved"]=function(){return(_FLAC__stream_encoder_process_interleaved=Module["_FLAC__stream_encoder_process_interleaved"]=Module["asm"]["FLAC__stream_encoder_process_interleaved"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["__errno_location"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["stackSave"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["stackRestore"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["stackAlloc"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["malloc"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["free"]).apply(null,arguments)};var __growWasmMemory=Module["__growWasmMemory"]=function(){return(__growWasmMemory=Module["__growWasmMemory"]=Module["asm"]["__growWasmMemory"]).apply(null,arguments)};Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["setValue"]=setValue;Module["getValue"]=getValue;if(memoryInitializer){if(!isDataURI(memoryInitializer)){memoryInitializer=locateFile(memoryInitializer)}if(ENVIRONMENT_IS_NODE||ENVIRONMENT_IS_SHELL){var data=readBinary(memoryInitializer);HEAPU8.set(data,GLOBAL_BASE)}else{addRunDependency("memory initializer");var applyMemoryInitializer=function(data){if(data.byteLength)data=new Uint8Array(data);HEAPU8.set(data,GLOBAL_BASE);if(Module["memoryInitializerRequest"])delete Module["memoryInitializerRequest"].response;removeRunDependency("memory initializer")};var doBrowserLoad=function(){readAsync(memoryInitializer,applyMemoryInitializer,function(){var e=new Error("could not load memory initializer "+memoryInitializer);throw e})};if(Module["memoryInitializerRequest"]){var useRequest=function(){var request=Module["memoryInitializerRequest"];var response=request.response;if(request.status!==200&&request.status!==0){console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+request.status+", retrying "+memoryInitializer);doBrowserLoad();return}applyMemoryInitializer(response)};if(Module["memoryInitializerRequest"].response){setTimeout(useRequest,0)}else{Module["memoryInitializerRequest"].addEventListener("load",useRequest)}}else{doBrowserLoad()}}}var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run();function _readStreamInfo(p_streaminfo){var min_blocksize=Module.getValue(p_streaminfo,"i32");var max_blocksize=Module.getValue(p_streaminfo+4,"i32");var min_framesize=Module.getValue(p_streaminfo+8,"i32");var max_framesize=Module.getValue(p_streaminfo+12,"i32");var sample_rate=Module.getValue(p_streaminfo+16,"i32");var channels=Module.getValue(p_streaminfo+20,"i32");var bits_per_sample=Module.getValue(p_streaminfo+24,"i32");var total_samples=Module.getValue(p_streaminfo+32,"i64");var md5sum=_readMd5(p_streaminfo+40);return{min_blocksize:min_blocksize,max_blocksize:max_blocksize,min_framesize:min_framesize,max_framesize:max_framesize,sampleRate:sample_rate,channels:channels,bitsPerSample:bits_per_sample,total_samples:total_samples,md5sum:md5sum}}function _readMd5(p_md5){var sb=[],v,str;for(var i=0,len=16;i<len;++i){v=Module.getValue(p_md5+i,"i8");if(v<0)v=256+v;str=v.toString(16);if(str.length<2)str="0"+str;sb.push(str)}return sb.join("")}function _readFrameHdr(p_frame,enc_opt){var blocksize=Module.getValue(p_frame,"i32");var sample_rate=Module.getValue(p_frame+4,"i32");var channels=Module.getValue(p_frame+8,"i32");var channel_assignment=Module.getValue(p_frame+12,"i32");var bits_per_sample=Module.getValue(p_frame+16,"i32");var number_type=Module.getValue(p_frame+20,"i32");var frame_number=Module.getValue(p_frame+24,"i32");var sample_number=Module.getValue(p_frame+24,"i64");var number=number_type===0?frame_number:sample_number;var numberType=number_type===0?"frames":"samples";var crc=Module.getValue(p_frame+36,"i8");var subframes;if(enc_opt&&enc_opt.analyseSubframes){var subOffset={offset:40};subframes=[];for(var i=0;i<channels;++i){subframes.push(_readSubFrameHdr(p_frame,subOffset,blocksize,enc_opt))}}return{blocksize:blocksize,sampleRate:sample_rate,channels:channels,channelAssignment:channel_assignment,bitsPerSample:bits_per_sample,number:number,numberType:numberType,crc:crc,subframes:subframes}}function _readSubFrameHdr(p_subframe,subOffset,block_size,enc_opt){var type=Module.getValue(p_subframe+subOffset.offset,"i32");subOffset.offset+=4;var data;switch(type){case 0:data={value:Module.getValue(p_subframe+subOffset.offset,"i32")};subOffset.offset+=284;break;case 1:data=Module.getValue(p_subframe+subOffset.offset,"i32");subOffset.offset+=284;break;case 2:data=_readSubFrameHdrFixedData(p_subframe,subOffset,block_size,false,enc_opt);break;case 3:data=_readSubFrameHdrFixedData(p_subframe,subOffset,block_size,true,enc_opt);break}var offset=subOffset.offset;var wasted_bits=Module.getValue(p_subframe+offset,"i32");subOffset.offset+=4;return{type:type,data:data,wastedBits:wasted_bits}}function _readSubFrameHdrFixedData(p_subframe_data,subOffset,block_size,is_lpc,enc_opt){var offset=subOffset.offset;var data={order:-1,contents:{parameters:[],rawBits:[]}};var entropyType=Module.getValue(p_subframe_data,"i32");offset+=4;var entropyOrder=Module.getValue(p_subframe_data+offset,"i32");data.order=entropyOrder;offset+=4;var partitions=1<<entropyOrder,params=data.contents.parameters,raws=data.contents.rawBits;var ppart=Module.getValue(p_subframe_data+offset,"i32");var pparams=Module.getValue(ppart,"i32");var praw=Module.getValue(ppart+4,"i32");data.contents.capacityByOrder=Module.getValue(ppart+8,"i32");for(var i=0;i<partitions;++i){params.push(Module.getValue(pparams+i*4,"i32"));raws.push(Module.getValue(praw+i*4,"i32"))}offset+=4;var order=Module.getValue(p_subframe_data+offset,"i32");offset+=4;var warmup=[],res;if(is_lpc){var qlp_coeff_precision=Module.getValue(p_subframe_data+offset,"i32");offset+=4;var quantization_level=Module.getValue(p_subframe_data+offset,"i32");offset+=4;var qlp_coeff=[];for(var i=0;i<order;++i){qlp_coeff.push(Module.getValue(p_subframe_data+offset,"i32"));offset+=4}data.qlp_coeff=qlp_coeff;data.qlp_coeff_precision=qlp_coeff_precision;data.quantization_level=quantization_level;offset=subOffset.offset+152;offset=_readSubFrameHdrWarmup(p_subframe_data,offset,warmup,order);if(enc_opt&&enc_opt.analyseResiduals){offset=subOffset.offset+280;res=_readSubFrameHdrResidual(p_subframe_data+offset,block_size,order)}}else{offset=_readSubFrameHdrWarmup(p_subframe_data,offset,warmup,order);offset=subOffset.offset+32;if(enc_opt&&enc_opt.analyseResiduals){res=_readSubFrameHdrResidual(p_subframe_data+offset,block_size,order)}}subOffset.offset+=284;return{partition:{type:entropyType,data:data},order:order,warmup:warmup,residual:res}}function _readSubFrameHdrWarmup(p_subframe_data,offset,warmup,order){for(var i=0;i<order;++i){warmup.push(Module.getValue(p_subframe_data+offset,"i32"));offset+=4}return offset}function _readSubFrameHdrResidual(p_subframe_data_res,block_size,order){var pres=Module.getValue(p_subframe_data_res,"i32");var res=[];for(var i=0,size=block_size-order;i<size;++i){res.push(Module.getValue(pres+i*4,"i32"))}return res}function _readConstChar(ptr,length,sb){sb.splice(0);var ch;for(var i=0;i<length;++i){ch=Module.getValue(ptr+i,"i8");if(ch===0){break}sb.push(String.fromCodePoint(ch))}return sb.join("")}function _readNullTerminatedChar(ptr,sb){sb.splice(0);var ch=1,i=0;while(ch>0){ch=Module.getValue(ptr+i++,"i8");if(ch===0){break}sb.push(String.fromCodePoint(ch))}return sb.join("")}function _readPaddingMetadata(p_padding_metadata){return{dummy:Module.getValue(p_padding_metadata,"i32")}}function _readSeekTableMetadata(p_seek_table_metadata){var num_points=Module.getValue(p_seek_table_metadata,"i32");var ptrPoints=Module.getValue(p_seek_table_metadata+4,"i32");var points=[];for(var i=0;i<num_points;++i){points.push({sample_number:Module.getValue(ptrPoints+i*24,"i64"),stream_offset:Module.getValue(ptrPoints+i*24+8,"i64"),frame_samples:Module.getValue(ptrPoints+i*24+16,"i32")})}return{num_points:num_points,points:points}}function _readVorbisComment(p_vorbiscomment){var length=Module.getValue(p_vorbiscomment,"i32");var entry=Module.getValue(p_vorbiscomment+4,"i32");var sb=[];var strEntry=_readConstChar(entry,length,sb);var num_comments=Module.getValue(p_vorbiscomment+8,"i32");var comments=[],clen,centry;var pc=Module.getValue(p_vorbiscomment+12,"i32");for(var i=0;i<num_comments;++i){clen=Module.getValue(pc+i*8,"i32");if(clen===0){continue}centry=Module.getValue(pc+i*8+4,"i32");comments.push(_readConstChar(centry,clen,sb))}return{vendor_string:strEntry,num_comments:num_comments,comments:comments}}function _readCueSheetMetadata(p_cue_sheet){var sb=[];var media_catalog_number=_readConstChar(p_cue_sheet,129,sb);var lead_in=Module.getValue(p_cue_sheet+136,"i64");var is_cd=Module.getValue(p_cue_sheet+144,"i8");var num_tracks=Module.getValue(p_cue_sheet+148,"i32");var ptrTrack=Module.getValue(p_cue_sheet+152,"i32");var tracks=[],trackOffset=ptrTrack;if(ptrTrack!==0){for(var i=0;i<num_tracks;++i){var tr=_readCueSheetMetadata_track(trackOffset,sb);tracks.push(tr);trackOffset+=32}}return{media_catalog_number:media_catalog_number,lead_in:lead_in,is_cd:is_cd,num_tracks:num_tracks,tracks:tracks}}function _readCueSheetMetadata_track(p_cue_sheet_track,sb){var typePremph=Module.getValue(p_cue_sheet_track+22,"i8");var num_indices=Module.getValue(p_cue_sheet_track+23,"i8");var indices=[];var track={offset:Module.getValue(p_cue_sheet_track,"i64"),number:Module.getValue(p_cue_sheet_track+8,"i8")&255,isrc:_readConstChar(p_cue_sheet_track+9,13,sb),type:typePremph&1?"NON_AUDIO":"AUDIO",pre_emphasis:!!(typePremph&2),num_indices:num_indices,indices:indices};var idx;if(num_indices>0){idx=Module.getValue(p_cue_sheet_track+24,"i32");for(var i=0;i<num_indices;++i){indices.push({offset:Module.getValue(idx+i*16,"i64"),number:Module.getValue(idx+i*16+8,"i8")})}}return track}function _readPictureMetadata(p_picture_metadata){var type=Module.getValue(p_picture_metadata,"i32");var mime=Module.getValue(p_picture_metadata+4,"i32");var sb=[];var mime_type=_readNullTerminatedChar(mime,sb);var desc=Module.getValue(p_picture_metadata+8,"i32");var description=_readNullTerminatedChar(desc,sb);var width=Module.getValue(p_picture_metadata+12,"i32");var height=Module.getValue(p_picture_metadata+16,"i32");var depth=Module.getValue(p_picture_metadata+20,"i32");var colors=Module.getValue(p_picture_metadata+24,"i32");var data_length=Module.getValue(p_picture_metadata+28,"i32");var data=Module.getValue(p_picture_metadata+32,"i32");var buffer=Uint8Array.from(Module.HEAPU8.subarray(data,data+data_length));return{type:type,mime_type:mime_type,description:description,width:width,height:height,depth:depth,colors:colors,data_length:data_length,data:buffer}}function __fix_write_buffer(heapOffset,newBuffer,applyFix){var dv=new DataView(newBuffer.buffer);var targetSize=newBuffer.length;var increase=!applyFix?1:2;var buffer=HEAPU8.subarray(heapOffset,heapOffset+targetSize*increase);var jump,isPrint;for(var i=0,j=0,size=buffer.length;i<size&&j<targetSize;++i,++j){if(i===size-1&&j<targetSize-1){buffer=HEAPU8.subarray(heapOffset,size+targetSize);size=buffer.length}if(applyFix&&(buffer[i]===0||buffer[i]===255)){jump=0;isPrint=true;if(i+1<size&&buffer[i]===buffer[i+1]){++jump;if(i+2<size){if(buffer[i]===buffer[i+2]){++jump}else{isPrint=false}}}if(isPrint){dv.setUint8(j,buffer[i]);if(jump===2&&i+3<size&&buffer[i]===buffer[i+3]){++jump;dv.setUint8(++j,buffer[i])}}else{--j}i+=jump}else{dv.setUint8(j,buffer[i])}}}var FLAC__STREAM_DECODER_READ_STATUS_CONTINUE=0;var FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM=1;var FLAC__STREAM_DECODER_READ_STATUS_ABORT=2;var FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE=0;var FLAC__STREAM_DECODER_WRITE_STATUS_ABORT=1;var FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS=2;var FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS=3;var FLAC__STREAM_ENCODER_WRITE_STATUS_OK=0;var FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR=1;var coders={};function getCallback(p_coder,func_type){if(coders[p_coder]){return coders[p_coder][func_type]}}function setCallback(p_coder,func_type,callback){if(!coders[p_coder]){coders[p_coder]={}}coders[p_coder][func_type]=callback}function _getOptions(p_coder){if(coders[p_coder]){return coders[p_coder]["options"]}}function _setOptions(p_coder,options){if(!coders[p_coder]){coders[p_coder]={}}coders[p_coder]["options"]=options}var enc_write_fn_ptr=addFunction(function(p_encoder,buffer,bytes,samples,current_frame,p_client_data){var retdata=new Uint8Array(bytes);retdata.set(HEAPU8.subarray(buffer,buffer+bytes));var write_callback_fn=getCallback(p_encoder,"write");try{write_callback_fn(retdata,bytes,samples,current_frame,p_client_data)}catch(err){console.error(err);return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR}return FLAC__STREAM_ENCODER_WRITE_STATUS_OK},"iiiiiii");var dec_read_fn_ptr=addFunction(function(p_decoder,buffer,bytes,p_client_data){var len=Module.getValue(bytes,"i32");if(len===0){return FLAC__STREAM_DECODER_READ_STATUS_ABORT}var read_callback_fn=getCallback(p_decoder,"read");var readResult=read_callback_fn(len,p_client_data);var readLen=readResult.readDataLength;Module.setValue(bytes,readLen,"i32");if(readResult.error){return FLAC__STREAM_DECODER_READ_STATUS_ABORT}if(readLen===0){return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM}var readBuf=readResult.buffer;var dataHeap=new Uint8Array(Module.HEAPU8.buffer,buffer,readLen);dataHeap.set(new Uint8Array(readBuf));return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE},"iiiii");var dec_write_fn_ptr=addFunction(function(p_decoder,p_frame,p_buffer,p_client_data){var dec_opts=_getOptions(p_decoder);var frameInfo=_readFrameHdr(p_frame,dec_opts);var channels=frameInfo.channels;var block_size=frameInfo.blocksize*(frameInfo.bitsPerSample/8);var isFix=frameInfo.bitsPerSample!==24;var padding=frameInfo.bitsPerSample/8%2;if(padding>0){block_size+=frameInfo.blocksize*padding}var data=[];var bufferOffset,_buffer;for(var i=0;i<channels;++i){bufferOffset=Module.getValue(p_buffer+i*4,"i32");_buffer=new Uint8Array(block_size);__fix_write_buffer(bufferOffset,_buffer,isFix);data.push(_buffer.subarray(0,block_size))}var write_callback_fn=getCallback(p_decoder,"write");var res=write_callback_fn(data,frameInfo);return res!==false?FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE:FLAC__STREAM_DECODER_WRITE_STATUS_ABORT},"iiiii");var DecoderErrorCode={0:"FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC",1:"FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER",2:"FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH",3:"FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM"};var dec_error_fn_ptr=addFunction(function(p_decoder,err,p_client_data){var msg=DecoderErrorCode[err]||"FLAC__STREAM_DECODER_ERROR__UNKNOWN__";var error_callback_fn=getCallback(p_decoder,"error");error_callback_fn(err,msg,p_client_data)},"viii");var metadata_fn_ptr=addFunction(function(p_coder,p_metadata,p_client_data){var type=Module.getValue(p_metadata,"i32");var is_last=Module.getValue(p_metadata+4,"i32");var length=Module.getValue(p_metadata+8,"i64");var meta_data={type:type,isLast:is_last,length:length,data:void 0};var metadata_callback_fn=getCallback(p_coder,"metadata");if(type===0){meta_data.data=_readStreamInfo(p_metadata+16);metadata_callback_fn(meta_data.data,meta_data)}else{var data;switch(type){case 1:data=_readPaddingMetadata(p_metadata+16);break;case 2:data=readApplicationMetadata(p_metadata+16);break;case 3:data=_readSeekTableMetadata(p_metadata+16);break;case 4:data=_readVorbisComment(p_metadata+16);break;case 5:data=_readCueSheetMetadata(p_metadata+16);break;case 6:data=_readPictureMetadata(p_metadata+16);break;default:{var cod_opts=_getOptions(p_coder);if(cod_opts&&cod_opts.enableRawMetadata){var buffer=Uint8Array.from(HEAPU8.subarray(p_metadata+16,p_metadata+16+length));meta_data.raw=buffer}}}meta_data.data=data;metadata_callback_fn(void 0,meta_data)}},"viii");var listeners={};var persistedEvents=[];var add_event_listener=function(eventName,listener){var list=listeners[eventName];if(!list){list=[listener];listeners[eventName]=list}else{list.push(listener)}check_and_trigger_persisted_event(eventName,listener)};var check_and_trigger_persisted_event=function(eventName,listener){var activated;for(var i=persistedEvents.length-1;i>=0;--i){activated=persistedEvents[i];if(activated&&activated.event===eventName){listener.apply(null,activated.args);break}}};var remove_event_listener=function(eventName,listener){var list=listeners[eventName];if(list){for(var i=list.length-1;i>=0;--i){if(list[i]===listener){list.splice(i,1)}}}};var do_fire_event=function(eventName,args,isPersist){if(_exported["on"+eventName]){_exported["on"+eventName].apply(null,args)}var list=listeners[eventName];if(list){for(var i=0,size=list.length;i<size;++i){list[i].apply(null,args)}}if(isPersist){persistedEvents.push({event:eventName,args:args})}};var _exported={_module:Module,_clear_enc_cb:function(enc_ptr){delete coders[enc_ptr]},_clear_dec_cb:function(dec_ptr){delete coders[dec_ptr]},setOptions:_setOptions,getOptions:_getOptions,isReady:function(){return _flac_ready},onready:void 0,on:add_event_listener,off:remove_event_listener,FLAC__stream_encoder_set_verify:function(encoder,is_verify){is_verify=is_verify?1:0;Module.ccall("FLAC__stream_encoder_set_verify","number",["number","number"],[encoder,is_verify])},FLAC__stream_encoder_set_compression_level:Module.cwrap("FLAC__stream_encoder_set_compression_level","number",["number","number"]),FLAC__stream_encoder_set_blocksize:Module.cwrap("FLAC__stream_encoder_set_blocksize","number",["number","number"]),FLAC__stream_encoder_get_verify_decoder_state:Module.cwrap("FLAC__stream_encoder_get_verify_decoder_state","number",["number"]),FLAC__stream_encoder_get_verify:Module.cwrap("FLAC__stream_encoder_get_verify","number",["number"]),create_libflac_encoder:function(sample_rate,channels,bps,compression_level,total_samples,is_verify,block_size){is_verify=typeof is_verify==="undefined"?1:is_verify+0;total_samples=typeof total_samples==="number"?total_samples:0;block_size=typeof block_size==="number"?block_size:0;var ok=true;var encoder=Module.ccall("FLAC__stream_encoder_new","number",[],[]);ok&=Module.ccall("FLAC__stream_encoder_set_verify","number",["number","number"],[encoder,is_verify]);ok&=Module.ccall("FLAC__stream_encoder_set_compression_level","number",["number","number"],[encoder,compression_level]);ok&=Module.ccall("FLAC__stream_encoder_set_channels","number",["number","number"],[encoder,channels]);ok&=Module.ccall("FLAC__stream_encoder_set_bits_per_sample","number",["number","number"],[encoder,bps]);ok&=Module.ccall("FLAC__stream_encoder_set_sample_rate","number",["number","number"],[encoder,sample_rate]);ok&=Module.ccall("FLAC__stream_encoder_set_blocksize","number",["number","number"],[encoder,block_size]);ok&=Module.ccall("FLAC__stream_encoder_set_total_samples_estimate","number",["number","number"],[encoder,total_samples]);if(ok){do_fire_event("created",[{type:"created",target:{id:encoder,type:"encoder"}}],false);return encoder}return 0},init_libflac_encoder:function(){console.warn("Flac.init_libflac_encoder() is deprecated, use Flac.create_libflac_encoder() instead!");return this.create_libflac_encoder.apply(this,arguments)},create_libflac_decoder:function(is_verify){is_verify=typeof is_verify==="undefined"?1:is_verify+0;var ok=true;var decoder=Module.ccall("FLAC__stream_decoder_new","number",[],[]);ok&=Module.ccall("FLAC__stream_decoder_set_md5_checking","number",["number","number"],[decoder,is_verify]);if(ok){do_fire_event("created",[{type:"created",target:{id:decoder,type:"decoder"}}],false);return decoder}return 0},init_libflac_decoder:function(){console.warn("Flac.init_libflac_decoder() is deprecated, use Flac.create_libflac_decoder() instead!");return this.create_libflac_decoder.apply(this,arguments)},init_encoder_stream:function(encoder,write_callback_fn,metadata_callback_fn,ogg_serial_number,client_data){var is_ogg=ogg_serial_number===true;client_data=client_data|0;if(typeof write_callback_fn!=="function"){return FLAC__STREAM_ENCODER_INIT_STATUS_INVALID_CALLBACKS}setCallback(encoder,"write",write_callback_fn);var __metadata_callback_fn_ptr=0;if(typeof metadata_callback_fn==="function"){setCallback(encoder,"metadata",metadata_callback_fn);__metadata_callback_fn_ptr=metadata_fn_ptr}var func_name="FLAC__stream_encoder_init_stream";var args_types=["number","number","number","number","number","number"];var args=[encoder,enc_write_fn_ptr,0,0,__metadata_callback_fn_ptr,client_data];if(typeof ogg_serial_number==="number"){is_ogg=true}else if(is_ogg){ogg_serial_number=1}if(is_ogg){func_name="FLAC__stream_encoder_init_ogg_stream";args.unshift(args[0]);args[1]=0;args_types.unshift(args_types[0]);args_types[1]="number";Module.ccall("FLAC__stream_encoder_set_ogg_serial_number","number",["number","number"],[encoder,ogg_serial_number])}var init_status=Module.ccall(func_name,"number",args_types,args);return init_status},init_encoder_ogg_stream:function(encoder,write_callback_fn,metadata_callback_fn,ogg_serial_number,client_data){if(typeof ogg_serial_number!=="number"){ogg_serial_number=true}return this.init_encoder_stream(encoder,write_callback_fn,metadata_callback_fn,ogg_serial_number,client_data)},init_decoder_stream:function(decoder,read_callback_fn,write_callback_fn,error_callback_fn,metadata_callback_fn,ogg_serial_number,client_data){client_data=client_data|0;if(typeof read_callback_fn!=="function"){return FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS}setCallback(decoder,"read",read_callback_fn);if(typeof write_callback_fn!=="function"){return FLAC__STREAM_DECODER_INIT_STATUS_INVALID_CALLBACKS}setCallback(decoder,"write",write_callback_fn);var __error_callback_fn_ptr=0;if(typeof error_callback_fn==="function"){setCallback(decoder,"error",error_callback_fn);__error_callback_fn_ptr=dec_error_fn_ptr}var __metadata_callback_fn_ptr=0;if(typeof metadata_callback_fn==="function"){setCallback(decoder,"metadata",metadata_callback_fn);__metadata_callback_fn_ptr=metadata_fn_ptr}var is_ogg=ogg_serial_number===true;if(typeof ogg_serial_number==="number"){is_ogg=true;Module.ccall("FLAC__stream_decoder_set_ogg_serial_number","number",["number","number"],[decoder,ogg_serial_number])}var init_func_name=!is_ogg?"FLAC__stream_decoder_init_stream":"FLAC__stream_decoder_init_ogg_stream";var init_status=Module.ccall(init_func_name,"number",["number","number","number","number","number","number","number","number","number","number"],[decoder,dec_read_fn_ptr,0,0,0,0,dec_write_fn_ptr,__metadata_callback_fn_ptr,__error_callback_fn_ptr,client_data]);return init_status},init_decoder_ogg_stream:function(decoder,read_callback_fn,write_callback_fn,error_callback_fn,metadata_callback_fn,ogg_serial_number,client_data){if(typeof ogg_serial_number!=="number"){ogg_serial_number=true}return this.init_decoder_stream(decoder,read_callback_fn,write_callback_fn,error_callback_fn,metadata_callback_fn,ogg_serial_number,client_data)},FLAC__stream_encoder_process_interleaved:function(encoder,buffer,num_of_samples){var numBytes=buffer.length*buffer.BYTES_PER_ELEMENT;var ptr=Module._malloc(numBytes);var heapBytes=new Uint8Array(Module.HEAPU8.buffer,ptr,numBytes);heapBytes.set(new Uint8Array(buffer.buffer,buffer.byteOffset,buffer.byteLength));var status=Module.ccall("FLAC__stream_encoder_process_interleaved","number",["number","number","number"],[encoder,heapBytes.byteOffset,num_of_samples]);Module._free(ptr);return status},FLAC__stream_encoder_process:function(encoder,channelBuffers,num_of_samples){var ptrInfo=this._create_pointer_array(channelBuffers);var pointerPtr=ptrInfo.pointerPointer;var status=Module.ccall("FLAC__stream_encoder_process","number",["number","number","number"],[encoder,pointerPtr,num_of_samples]);this._destroy_pointer_array(ptrInfo);return status},FLAC__stream_decoder_process_single:Module.cwrap("FLAC__stream_decoder_process_single","number",["number"]),FLAC__stream_decoder_process_until_end_of_stream:Module.cwrap("FLAC__stream_decoder_process_until_end_of_stream","number",["number"]),FLAC__stream_decoder_process_until_end_of_metadata:Module.cwrap("FLAC__stream_decoder_process_until_end_of_metadata","number",["number"]),FLAC__stream_decoder_get_state:Module.cwrap("FLAC__stream_decoder_get_state","number",["number"]),FLAC__stream_encoder_get_state:Module.cwrap("FLAC__stream_encoder_get_state","number",["number"]),FLAC__stream_decoder_set_metadata_respond:Module.cwrap("FLAC__stream_decoder_set_metadata_respond","number",["number","number"]),FLAC__stream_decoder_set_metadata_respond_application:Module.cwrap("FLAC__stream_decoder_set_metadata_respond_application","number",["number","number"]),FLAC__stream_decoder_set_metadata_respond_all:Module.cwrap("FLAC__stream_decoder_set_metadata_respond_all","number",["number"]),FLAC__stream_decoder_set_metadata_ignore:Module.cwrap("FLAC__stream_decoder_set_metadata_ignore","number",["number","number"]),FLAC__stream_decoder_set_metadata_ignore_application:Module.cwrap("FLAC__stream_decoder_set_metadata_ignore_application","number",["number","number"]),FLAC__stream_decoder_set_metadata_ignore_all:Module.cwrap("FLAC__stream_decoder_set_metadata_ignore_all","number",["number"]),FLAC__stream_encoder_set_metadata:function(encoder,metadataBuffersPointer,num_blocks){var status=Module.ccall("FLAC__stream_encoder_set_metadata","number",["number","number","number"],[encoder,metadataBuffersPointer.pointerPointer,num_blocks]);return status},_create_pointer_array:function(bufferArray){var size=bufferArray.length;var ptrs=[],ptrData=new Uint32Array(size);var ptrOffsets=new DataView(ptrData.buffer);var buffer,numBytes,heapBytes,ptr;for(var i=0,size;i<size;++i){buffer=bufferArray[i];numBytes=buffer.length*buffer.BYTES_PER_ELEMENT;ptr=Module._malloc(numBytes);ptrs.push(ptr);heapBytes=new Uint8Array(Module.HEAPU8.buffer,ptr,numBytes);heapBytes.set(new Uint8Array(buffer.buffer,buffer.byteOffset,buffer.byteLength));ptrOffsets.setUint32(i*4,ptr,true)}var nPointerBytes=ptrData.length*ptrData.BYTES_PER_ELEMENT;var pointerPtr=Module._malloc(nPointerBytes);var pointerHeap=new Uint8Array(Module.HEAPU8.buffer,pointerPtr,nPointerBytes);pointerHeap.set(new Uint8Array(ptrData.buffer));return{dataPointer:ptrs,pointerPointer:pointerPtr}},_destroy_pointer_array:function(pointerInfo){var pointerArray=pointerInfo.dataPointer;for(var i=0,size=pointerArray.length;i<size;++i){Module._free(pointerArray[i])}Module._free(pointerInfo.pointerPointer)},FLAC__stream_decoder_get_md5_checking:Module.cwrap("FLAC__stream_decoder_get_md5_checking","number",["number"]),FLAC__stream_decoder_set_md5_checking:function(decoder,is_verify){is_verify=is_verify?1:0;return Module.ccall("FLAC__stream_decoder_set_md5_checking","number",["number","number"],[decoder,is_verify])},FLAC__stream_encoder_finish:Module.cwrap("FLAC__stream_encoder_finish","number",["number"]),FLAC__stream_decoder_finish:Module.cwrap("FLAC__stream_decoder_finish","number",["number"]),FLAC__stream_decoder_reset:Module.cwrap("FLAC__stream_decoder_reset","number",["number"]),FLAC__stream_encoder_delete:function(encoder){this._clear_enc_cb(encoder);Module.ccall("FLAC__stream_encoder_delete","number",["number"],[encoder]);do_fire_event("destroyed",[{type:"destroyed",target:{id:encoder,type:"encoder"}}],false)},FLAC__stream_decoder_delete:function(decoder){this._clear_dec_cb(decoder);Module.ccall("FLAC__stream_decoder_delete","number",["number"],[decoder]);do_fire_event("destroyed",[{type:"destroyed",target:{id:decoder,type:"decoder"}}],false)}};if(typeof Object.defineProperty==="function"){_exported._onready=void 0;Object.defineProperty(_exported,"onready",{get(){return this._onready},set(newValue){this._onready=newValue;if(newValue&&this.isReady()){check_and_trigger_persisted_event("ready",newValue)}}})}else{console.warn("WARN: note that setting Flac.onready handler after Flac.isReady() is already true, will have no effect, that is, the handler function will not be triggered!")}if(expLib&&expLib.exports){expLib.exports=_exported}return _exported});
diff --git a/site/app/twine/libflac.min.js.mem b/site/app/twine/libflac.min.js.mem
new file mode 100644
index 0000000..9e88419
--- /dev/null
+++ b/site/app/twine/libflac.min.js.mem
Binary files differ
diff --git a/site/app/twine/mixer.js b/site/app/twine/mixer.js
new file mode 100644
index 0000000..b98fa0e
--- /dev/null
+++ b/site/app/twine/mixer.js
@@ -0,0 +1,149 @@
+var Mixer = function(twine) {
+ var mixer = this;
+ mixer.masterAmpChannel = "twine_masteramp";
+ var masterVu = null;
+ this.soloChannel = "twine_csolo";
+ this.ampChannel = "twine_masteramp";
+ target = $("#twine_mixer");
+
+ this.visible = false;
+
+ this.hide = function() {
+ masterVu = null;
+ mixer.visible = false;
+ target.empty().hide();
+ };
+
+ this.setVu = function(v) {
+ if (!masterVu) return;
+ masterVu.value = v;
+ };
+
+ this.bootAudio = function() {
+ app.setControlChannel(mixer.ampChannel, 0.8);
+ app.setControlChannel(mixer.soloChannel, -1);
+ };
+
+ var height = 150;
+ var width = 30;
+ this.show = async function () {
+ masterVu = null;
+ mixer.visible = true;
+ target.empty().show();
+ var soloChannels = [];
+ var tb = $("<tbody />").appendTo($("<table />").appendTo(target));
+ var trMuteSolo = $("<tr />").appendTo(tb);
+ var trPan = $("<tr />").appendTo(tb);
+ var trAmp = $("<tr />").appendTo(tb);
+ var trName = $("<tr />").appendTo(tb);
+ for (let c of twine.timeline.channels) {
+ trName.append($("<td />").css({"text-align": "center"}).text(c.name));
+ var tdMuteSolo = $("<td />").css({"border-left": "1px solid black", "text-align": "center"}).appendTo(trMuteSolo);
+ var tdPan = $("<td />").css({"border-left": "1px solid black", "text-align": "center"}).appendTo(trPan);
+ var tdAmp = $("<td />").css({"border-left": "1px solid black"}).appendTo(trAmp);
+ var elMuteSolo = $("<div />").appendTo(tdMuteSolo);
+ var elPan = $("<div />").appendTo(tdPan);
+ var elAmp = $("<div />").appendTo(tdAmp);
+
+ var coMute = new Control({
+ name: "Mute",
+ image: "SC_BTNDef5-MUTE_16",
+ target: elMuteSolo,
+ channel: c.defaultChannels.mute,
+ width: width * 0.5,
+ height: width * 0.5,
+ noTriggerInit: true,
+
+ });
+
+ var coSolo = new Control({
+ image: "SC_BTNDef5-SOLO_16",
+ target: elMuteSolo,
+ channel: c.defaultChannels.solo,
+ min: -1,
+ max: c.index,
+ width: width * 0.5,
+ height: width * 0.5,
+ noTriggerInit: true,
+ onChange: function(v, co) {
+ for (let s of soloChannels) {
+ s.value = false;
+ s.element.trigger("change");
+ }
+ if (v == c.index) {
+ co.value = true;
+ co.element.trigger("change");
+ }
+ }
+ });
+ soloChannels.push(coSolo);
+
+ var coPan = new Control({
+ name: "Pan",
+ image: "Timb&HY_Seq16x3v2_KNOB1FX3",
+ target: elPan,
+ channel: c.defaultChannels.pan,
+ width: width,
+ height: width,
+ noTriggerInit: true,
+ onReady: async function(coPan){
+ coPan.value = await app.getControlChannel(c.defaultChannels.pan);
+ },
+ onContextMenu: function(e) {
+ return twirl.contextMenu.show(e, [
+ {name: "Show automation", click: function(){
+ c.expand();
+ c.showAutomation(0, 1);
+ }}
+ ]);
+ }
+ });
+ var coAmp = new Control({
+ name: "Amp",
+ image: "Sexan_Timb-Slider_29334-128fr",
+ target: elAmp,
+ channel: c.defaultChannels.amp,
+ width: width,
+ height: height,
+ noTriggerInit: true,
+ onReady: async function(coAmp){
+ coAmp.value = await app.getControlChannel(c.defaultChannels.amp);
+ },
+ onContextMenu: function(e) {
+ return twirl.contextMenu.show(e, [
+ {name: "Show automation", click: function(){
+ c.expand();
+ c.showAutomation(0, 0);
+ }}
+ ]);
+ }
+ });
+ }
+ trName.append($("<td />"));
+ trName.append($("<td />"));
+ var tdm = $("<td />").css({"border-left": "2px solid black"}).appendTo(trAmp);
+ var tdvu = $("<td />").appendTo(trAmp);
+ var elm = $("<div />").appendTo(tdm);
+ var elmvu = $("<div />").appendTo(tdvu);
+ var mc = new Control({
+ name: "Master",
+ image: "Sexan_Timb-Slider_29334-128fr",
+ target: elm,
+ channel: mixer.masterAmpChannel,
+ width: width,
+ height: height,
+ noTriggerInit: true,
+ onReady: async function(mc) {
+ mc.value = await app.getControlChannel(mixer.masterAmpChannel);
+ }
+ });
+
+ masterVu = new Control({
+ name: "VU",
+ image: "Timb_MeterXRAYMANALOGDEF_8320-128",
+ target: elmvu,
+ width: 15,
+ height: height
+ });
+ }
+}; \ No newline at end of file
diff --git a/site/app/twine/timeline.js b/site/app/twine/timeline.js
new file mode 100644
index 0000000..9e33a4c
--- /dev/null
+++ b/site/app/twine/timeline.js
@@ -0,0 +1,736 @@
+var Locators = function(timeline, elTimebar, elChannelOverlay) {
+ var locators = this;
+ var items = {
+ start: {
+ elMain: $("<div />").addClass("twine_timeline_timebar_locatorhead").appendTo(elTimebar),
+ elLine: $("<div />").addClass("twine_timeline_timebar_locatorline").appendTo(elChannelOverlay),
+ setLeft: function(px){
+ items.start.elMain.show().css("left", px - (items.start.elMain.width() / 2));
+ items.start.elLine.show().css("left", px);
+ },
+ hide: function() {
+ items.start.elMain.hide();
+ items.start.elLine.hide();
+ }
+ },
+ regionStart: {
+ elMain: $("<div />").addClass("twine_timeline_timebar_regionstart").appendTo(elTimebar),
+ elLine: $("<div />").addClass("twine_timeline_timebar_regionstart").appendTo(elChannelOverlay),
+ setLeft: function(px){
+ items.regionStart.elMain.show().css("left", px - (items.regionStart.elMain.width() / 2));
+ items.regionStart.elLine.show().css("left", px);
+ },
+ hide: function() {
+ items.regionStart.elMain.hide();
+ items.regionStart.elLine.hide();
+ }
+ },
+ regionEnd: {
+ elMain: $("<div />").addClass("twine_timeline_timebar_regionstart").appendTo(elTimebar),
+ elLine: $("<div />").addClass("twine_timeline_timebar_regionstart").appendTo(elChannelOverlay),
+ setLeft: function(px){
+ items.regionEnd.elMain.show().css("left", px - (items.regionEnd.elMain.width() / 2));
+ items.regionEnd.elLine.show().css("left", px);
+ },
+ hide: function() {
+ items.regionEnd.elMain.hide();
+ items.regionEnd.elLine.hide();
+ }
+ }
+ };
+
+
+ items.regionStart.elMain.on("mousedown", function(es) {
+ es.preventDefault();
+ es.stopPropagation();
+ var offset = elTimebar.offset().left;
+ var max = elTimebar.width();
+ var startLeft = parseFloat(items.regionStart.elLine.css("left"));
+ function mouseup() {
+ $("body").off("mousemove", mousemove).off("mouseup", mouseup);
+ }
+
+ function mousemove(e) {
+ var newPos = (e.clientX - es.clientX) + startLeft;
+ newPos = timeline.roundToGrid(newPos);
+ if (newPos < 0) {
+ newPos = 0;
+ } else if (newPos > max) {
+ newPos = max;
+ }
+
+ var offset = elTimebar.offset().left;
+ var beats = timeline.beatRegion[1] - timeline.beatRegion[0];
+ var beat = timeline.beatRegion[0] + (Math.round((newPos / (max - offset)) * beats * 100) / 100);
+ if (beat > timeline.data.beatEnd - 1) {
+ return;
+ }
+ items.regionStart.setLeft(newPos);
+ timeline.data.beatStart = beat;
+ }
+ $("body").on("mousemove", mousemove).on("mouseup", mouseup);
+ });
+
+ items.regionEnd.elMain.on("mousedown", function(es) {
+ es.preventDefault();
+ es.stopPropagation();
+ var offset = elTimebar.offset().left;
+ var max = elTimebar.width();
+ var startLeft = parseFloat(items.regionEnd.elLine.css("left"));
+ function mouseup() {
+ $("body").off("mousemove", mousemove).off("mouseup", mouseup);
+ }
+
+ function mousemove(e) {
+ var newPos = (e.clientX - es.clientX) + startLeft;
+ newPos = timeline.roundToGrid(newPos);
+ if (newPos < 0) {
+ newPos = 0;
+ } else if (newPos > max) {
+ newPos = max;
+ }
+
+ var offset = elTimebar.offset().left;
+ var beats = timeline.beatRegion[1] - timeline.beatRegion[0];
+ var beat = timeline.beatRegion[0] + (Math.round((newPos / (max - offset)) * beats * 100) / 100);
+ if (beat < timeline.data.beatStart + 1) {
+ return;
+ }
+ items.regionEnd.setLeft(newPos);
+ timeline.data.beatEnd = beat;
+ }
+ $("body").on("mousemove", mousemove).on("mouseup", mouseup);
+ });
+
+
+ items.start.elMain.on("mousedown", function(es) {
+ es.preventDefault();
+ es.stopPropagation();
+ var offset = elTimebar.offset().left;
+ var max = elTimebar.width();
+ var startLeft = parseFloat(items.start.elLine.css("left"));
+ function mouseup() {
+ $("body").off("mousemove", mousemove).off("mouseup", mouseup);
+ }
+
+ function mousemove(e) {
+ var newPos = (e.clientX - es.clientX) + startLeft;
+ newPos = timeline.roundToGrid(newPos);
+ if (newPos < 0) {
+ newPos = 0;
+ } else if (newPos > max) {
+ newPos = max;
+ }
+ items.start.setLeft(newPos);
+ var offset = elTimebar.offset().left;
+ var beats = timeline.beatRegion[1] - timeline.beatRegion[0];
+ var beat = timeline.beatRegion[0] + (Math.round((newPos / (max - offset)) * beats * 100) / 100);
+ timeline.startLocation = beat;
+ }
+ $("body").on("mousemove", mousemove).on("mouseup", mouseup);
+ });
+
+ this.redrawStart = function() {
+ if (timeline.startLocation >= timeline.beatRegion[1] || timeline.startLocation < timeline.beatRegion[0]) {
+ items.start.hide();
+ return;
+ }
+ var ratio = (timeline.startLocation - timeline.beatRegion[0]) / (timeline.beatRegion[1] - timeline.beatRegion[0]);
+ var eltWidth = elTimebar.width() - elTimebar.offset().left;
+ var px = ratio * eltWidth;
+ items.start.setLeft(px);
+ }
+}; // end locators
+
+
+
+var Timeline = function(twine, data) {
+ var timeline = this;
+ var elDragSelection;
+ timeline.selectedClips = [];
+ timeline.selectedChannel = null;
+ timeline.startLocation = 0;
+
+ Object.defineProperty(timeline, "selectedClip", {
+ get: function() {
+ return timeline.selectedClips[timeline.selectedClips.length - 1];
+ },
+ set: function(c) {
+ timeline.selectedClips = [c];
+ }
+ });
+
+ var container = $("#twine_timeline");
+ var elTimebarContainer = $("<div />").attr("id", "twine_timeline_timebar").appendTo(container);
+ var elTimebar = $("<div />").attr("id", "twine_timeline_timebar_inner").appendTo(elTimebarContainer);
+ this.element = $("<div />").attr("id", "twine_timeline_inner").appendTo(container);
+ $("<div />").attr("id", "twine_timelineoverlay").appendTo(timeline.element);
+ var elChannelOverlay = $("<div />").attr("id", "twine_timeline_channeloverlay").appendTo(container);
+ var elScrollOuter = $("<div />").attr("id", "twine_timeline_scroll_outer").appendTo(container);
+ var elScrollInner = $("<div />").attr("id", "twine_timeline_scroll_inner").appendTo(elScrollOuter);
+ var elIcons = $("<div />").attr("id", "twine_timeline_scroll_filler").appendTo(container);
+ var elPlayhead = $("<div />").attr("id", "twine_timeline_playposition").appendTo(elChannelOverlay);
+
+ var locators = new Locators(timeline, elTimebar, elChannelOverlay);
+
+ elIcons.append(twirl.createIcon({
+ label: "Zoom in",
+ size: 20,
+ icon: "zoomIn",
+ click: function() {
+ timeline.zoomIn();
+ }
+ }).el);
+
+ elIcons.append(twirl.createIcon({
+ label: "Zoom out",
+ size: 20,
+ icon: "zoomOut",
+ click: function() {
+ timeline.zoomOut();
+ }
+ }).el);
+
+ elIcons.append(twirl.createIcon({
+ label: "Show all",
+ size: 20,
+ icon: "showAll",
+ click: function() {
+ timeline.showAll();
+ }
+ }).el);
+
+ var channelIndex = 0;
+ this.channels = [];
+ this.gridPixels = 40;
+ this.pixelsPerBeat = 10;
+ this.beatRegion = [];
+ this.playbackBeatStart = 0;
+
+ if (data) {
+ this.data = data;
+ } else {
+ this.data = {
+ name: "New arrangement",
+ snapToGrid: 4,
+ gridVisible: true,
+ beatStart: 0,
+ beatEnd: 16,
+ bpm: 120,
+ timeSigMarker: 4,
+ regionStart: 0,
+ regionEnd: 1
+ };
+ }
+
+ elTimebar.click(function(e) {
+ var offset = elTimebar.offset().left;
+ var beats = timeline.beatRegion[1] - timeline.beatRegion[0];
+ var px = timeline.roundToGrid(e.clientX - offset);
+ var width = elTimebar.width() - offset; // ????
+ var beat = timeline.beatRegion[0] + (Math.round((px / width) * beats * 100) / 100);
+ timeline.startLocation = beat;
+ locators.redrawStart();
+ twine.stopAndPlay(beat);
+ });
+
+
+ this.getTotalBeatDuration = function() {
+ return timeline.data.beatEnd * (60 / timeline.data.bpm);
+ };
+
+ this.changeBeatEnd = function(newBeatEnd, noredraw) {
+ var original = timeline.data.beatEnd;
+ timeline.data.beatEnd = newBeatEnd;
+ for (let c of timeline.channels) {
+ c.changeBeatEnd(original, newBeatEnd, noredraw);
+ }
+ };
+
+ this.extend = function(newBeatEnd, noredraw) {
+ if (newBeatEnd > timeline.data.beatEnd) {
+ timeline.changeBeatEnd(newBeatEnd, noredraw);
+ }
+ };
+
+ this.reduce = function() {
+ var end = 0;
+ for (let ch of timeline.channels) {
+ for (let i in ch.clips) {
+ if (ch.clips[i]) {
+ var e = ch.clips[i].data.position + ch.clips[i].data.playLength;
+ if (e > end) {
+ end = e;
+ }
+ }
+ }
+ }
+ end += 8;
+ timeline.data.beatEnd = end;
+ };
+
+ this.exportData = async function() {
+ var saveData = {
+ channels: [],
+ data: timeline.data,
+ masterAmp: (await app.getControlChannel(twine.mixer.masterAmpChannel)),
+ ftables: {}
+ };
+ for (let c of timeline.channels) {
+ saveData.channels.push(await c.exportData());
+ }
+ for (let ch of saveData.channels) {
+ for (let cl of ch.clips) {
+ var fnL = cl.table[0];
+ var fnR = cl.table[1];
+ if (!saveData.ftables[fnL] && fnL > 0) {
+ saveData.ftables[fnL] = {
+ length: await app.getCsound().tableLength(fnL),
+ data: (await app.getCsound().tableCopyOut(fnL)).values().toArray()
+ };
+ }
+ if (!saveData.ftables[fnR] && fnR > 0) {
+ saveData.ftables[fnR] = {
+ length: await app.getCsound().tableLength(fnR),
+ data: (await app.getCsound().tableCopyOut(fnR)).values().toArray()
+ };
+ }
+ }
+ }
+ return saveData;
+ };
+
+ this.createFtable = async function(length) {
+ return new Promise(function(resolve, reject) {
+ var cbid = app.createCallback(function(ndata){
+ resolve(ndata.table);
+ });
+ app.insertScore("twine_createtable", [0, 1, cbid, length]);
+ });
+ };
+
+ this.copyNewTableIn = async function(data) {
+ var ftable = await timeline.createFtable(data.length);
+ await app.getCsound().tableCopyIn(ftable, data);
+ return ftable;
+ };
+
+ this.importData = async function(loadData) {
+ timeline.data = loadData.data;
+ await app.setControlChannel(twine.mixer.masterAmpChannel, loadData.masterAmp);
+ var ftMap = {};
+ console.log("load ftables", loadData.ftables);
+ for (let i in loadData.ftables) {
+ var fn = await timeline.copyNewTableIn(loadData.ftables[i].data);
+ console.log("copy into", fn, loadData.ftables[i]);
+ window.fn = loadData.ftables[i];
+ ftMap[i] = fn;
+ }
+
+ while (timeline.channels.length > 0) {
+ timeline.channels[0].remove();
+ }
+
+ timeline.channels = [];
+ var channelIndex = 0;
+ for (let c of loadData.channels) {
+ var channel = new Channel(timeline, channelIndex ++);
+ timeline.channels.push(channel);
+ await channel.importData(c, ftMap);
+ }
+ timeline.redraw();
+ };
+
+ var playheadInterval;
+ this.setPlaying = function(state) {
+ twine.ui.head.play.setValue(state);
+ if (playheadInterval) {
+ clearInterval(playheadInterval);
+ }
+ if (state) {
+ playheadInterval = setInterval(async function(){
+ var val = await app.getControlChannel("twine_playpos");
+ var beat = (val * (timeline.data.bpm / 60)) + timeline.playbackBeatStart;
+ if (beat > timeline.beatRegion[1]) {
+ clearInterval(playheadInterval);
+ elPlayhead.hide();
+ }
+ var pos = beat * timeline.pixelsPerBeat;
+ elPlayhead.css("left", pos + "px");
+ }, 50);
+ elPlayhead.show();
+ } else {
+ elPlayhead.hide();
+ }
+ };
+
+ this.zoomIn = function() {
+ timeline.setRegion(
+ timeline.data.regionStart * 1.1,
+ timeline.data.regionEnd * 0.9
+ );
+ };
+
+ this.zoomOut = function() {
+ timeline.setRegion(
+ timeline.data.regionStart * 0.9,
+ timeline.data.regionEnd * 1.1
+ );
+ timeline.redraw();
+ };
+
+ this.showAll = function() {
+ timeline.setRegion(0, 1);
+ };
+
+ this.compileAutomationData = function(onready) {
+ var changed = false;
+ for (let c of timeline.channels) {
+ if (c.automationChanged()) {
+ changed = true;
+ break;
+ }
+ }
+ if (!changed) {
+ return onready(1);
+ }
+
+ var start = timeline.data.beatStart / (timeline.data.beatEnd - timeline.data.beatStart);
+ var instr = "instr twine_automaterun\n";
+ for (let c of timeline.channels) {
+ for (let a of c.getAutomationData(start, 1)) {
+ instr += a + "\n"
+ }
+ }
+ instr += "a_ init 0\nout a_\nendin\n";
+ console.log(instr);
+ app.compileOrc(instr).then(function(status){
+ if (status < 0) {
+ self.errorHandler("Cannot parse automation data");
+ } else {
+ onready(1);
+ }
+ });
+ };
+
+ function determineChannelForAdd() {
+ var channel;
+ if (!timeline.selectedChannel) {
+ if (timeline.channels.length == 0) {
+ channel = timeline.addChannel();
+ } else {
+ channel = timeline.channels[0];
+ }
+ } else {
+ channel = timeline.selectedChannel;
+ }
+ return channel;
+ }
+
+ this.addScriptClip = function() {
+ var channel = determineChannelForAdd();
+ var clip = new Clip(twine);
+ clip.data.position = timeline.playbackBeatStart; //timeline.beatRegion[0];
+ channel.addClip(clip);
+ clip.initScript();
+ clip.redraw();
+ };
+
+ this.addBlankClip = function() {
+ var el = $("<div />");
+ el.append($("<h4 />").text("New blank clip"));
+ let pStereo = new twirl.transform.Parameter({
+ definition: {
+ name: "Stereo",
+ description: "Whether the clip should be stereo or mono",
+ fireChanges: false, automatable: false,
+ min: 0, max: 1, step: 1, dfault: 1
+ },
+ host: twine
+ });
+ let pDuration = new twirl.transform.Parameter({
+ definition: {
+ name: "Duration",
+ description: "Duration of the clip in seconds",
+ fireChanges: false, automatable: false,
+ min: 0.1, max: 30, step: 0.01, dfault: 10
+ },
+ host: twine
+ });
+ var tb = $("<tbody />").appendTo($("<table />").appendTo(el));
+ tb.append(pStereo.getElementRow(true));
+ tb.append(pDuration.getElementRow(true));
+ twirl.prompt.show(el, function(){
+ var channel = determineChannelForAdd();
+ var clip = new Clip(twine);
+ clip.data.position = timeline.playbackBeatStart; //timeline.beatRegion[0];
+ channel.addClip(clip);
+ clip.createSilence(pStereo.getValue(), pDuration.getValue(), name);
+ });
+ };
+
+ this.addChannel = function() {
+ var channel = new Channel(timeline, channelIndex ++);
+ timeline.channels.push(channel);
+ timeline.drawGrid();
+ return channel;
+ };
+
+
+ this.contractChannels = function() {
+ for (let c of timeline.channels) {
+ c.contract();
+ }
+ };
+
+ this.roundToGrid = function(px) {
+ if (timeline.data.snapToGrid) {
+ return twine.roundToNearest(px, twine.timeline.gridPixels, twine.timeline.gridOffset);
+ } else {
+ return px;
+ }
+ };
+
+
+
+ this.roundToChannel = function(px) {
+ var total = 0;
+ var rounded = px;
+ for (let i in timeline.channels) {
+ var c = timeline.channels[i];
+ if (i == 0) rounded = c.height;
+ total += c.height + 1;
+ if (px > total) {
+ rounded = total;
+ }
+ }
+ return rounded;
+ };
+
+ this.determineChannelFromTop = function(posTop) {
+ var top = 0;
+ for (var c of timeline.channels) {
+ top += c.height;
+ if (posTop < top) {
+ return c;
+ }
+ }
+ return c;
+ };
+
+ function calcViewport() {
+ var cc = $(".twine_channelclips");
+ var width = $("#twine_timeline_channeloverlay").width(); //cc.width();
+ var d = timeline.data;
+ timeline.beatRegion = [
+ d.regionStart * d.beatEnd,
+ d.regionEnd * d.beatEnd
+ ];
+ var gridScale = 1;
+ var beats = timeline.beatRegion[1] - timeline.beatRegion[0];
+ timeline.pixelsPerBeat = width / beats;
+ timeline.gridPixels = timeline.pixelsPerBeat / parseInt(d.snapToGrid);
+ var beat = timeline.beatRegion[0];
+ timeline.gridOffset = (parseInt(beat) - beat) * timeline.pixelsPerBeat;
+ return {
+ minLeft: 0, //cc.offset().left,
+ width: width,
+ beat: beat
+ }
+ }
+
+
+ this.drawGrid = function() {
+ if (timeline.channels.length == 0) return;
+ $(".twine_timelinemarker").remove();
+ $(".twine_timelinetext").remove();
+ var vp = calcViewport();
+ if (!timeline.data.gridVisible) return;
+
+ var width;
+ var fontWeight;
+ beat = Math.floor(vp.beat);
+ for (var x = vp.minLeft + timeline.gridOffset; x < vp.width; x += timeline.pixelsPerBeat) {
+ if ((beat - 1) % timeline.data.timeSigMarker == 0) {
+ width = 2;
+ fontWeight = "bold";
+ } else {
+ width = 1;
+ fontWeight = "normal";
+ }
+ if (x >= 0) {
+ $("<div />").attr("class", "twine_vline twine_timelinemarker").appendTo(elChannelOverlay).css("width", width).css("left", x).css("top", "0px");
+ $("<div />").attr("class", "twine_timelinetext").appendTo(elChannelOverlay).css("font-weight", fontWeight).css("left", x + 2).text(beat);
+ }
+ beat ++;
+ }
+ locators.redrawStart();
+ }
+
+ var drawing;
+ this.redraw = function(noClipWaveRedraw) {
+ if (drawing) return;
+ drawing = true;
+ timeline.drawGrid();
+ for (let c of timeline.channels) {
+ c.redraw(noClipWaveRedraw);
+ }
+ drawing = false;
+ };
+
+ this.setRegion = function(start, end, noClipWaveRedraw) {
+ timeline.reduce();
+ if (end <= start) return;
+ if (end > 1) end = 1;
+ if (start < 0) start = 0;
+ timeline.data.regionStart = start;
+ timeline.data.regionEnd = end;
+ timeline.redraw(noClipWaveRedraw);
+ var elTbcw = elScrollOuter.width();
+ elScrollInner.css({left: (timeline.data.regionStart * elTbcw) + "px", right: ((1 - timeline.data.regionEnd) * elTbcw) + "px"});
+ if (self.onRegionChange) {
+ self.onRegionChange([timeline.data.regionStart, timeline.data.regionEnd]);
+ }
+ };
+
+ this.onRegionChange = function(region) {
+
+ };
+
+
+ function setScrollBarPosition(displayLeft, displayRight, setRegion) {
+ if (displayLeft >= 0 && displayRight >= 0) {
+ elScrollInner.css({left: displayLeft, right: displayRight});
+ var w = elScrollOuter.width();
+ if (setRegion) {
+ timeline.data.regionStart = displayLeft / w;
+ timeline.data.regionEnd = 1 - (displayRight / w);
+ if (self.onRegionChange) {
+ self.onRegionChange([timeline.data.regionStart, timeline.data.regionEnd]);
+ }
+ }
+ }
+ }
+
+ elScrollOuter.mousedown(function() {
+ var increment = 20;
+ var apos = event.pageX - elScrollOuter.offset().left;
+ var left = parseInt(elScrollInner.css("left"));
+ var right = parseInt(elScrollInner.css("right"));
+ var tbWidth = parseInt(elScrollInner.css("width"));
+ if (apos < left) {
+ left -= increment;
+ right += increment;
+ } else if (apos > left + tbWidth) {
+ left += increment;
+ right -= increment;
+ } else {
+ return;
+ }
+ setScrollBarPosition(left, right, true);
+ timeline.redraw();
+ });
+
+ elScrollInner.mousedown(function(e){
+ var pageX = e.pageX;
+ var offset = elScrollOuter.offset();
+ var cWidth = elScrollOuter.width();
+ var tbWidth = elScrollInner.width();
+ var sLeft = pageX - offset.left - parseInt(elScrollInner.css("left"));
+
+ function handleDrag(e) {
+ var left = ((e.pageX - pageX) + (pageX - offset.left));
+ left = left - sLeft;
+ var end = left + tbWidth;
+ var right = cWidth - end;
+ setScrollBarPosition(left, cWidth - end, true);
+ timeline.redraw(true);
+
+ }
+ function handleMouseUp(e) {
+ $("body").off("mousemove", handleDrag).off("mouseup", handleMouseUp);
+ function ensureDraw() {
+ if (drawing) return setTimeout(ensureDraw, 20);
+ timeline.redraw();
+ }
+ ensureDraw();
+ }
+ $("body").on("mouseup", handleMouseUp).on("mousemove", handleDrag);
+ });
+
+ this.deselectClips = function() {
+ timeline.selectedClips = [];
+ $(".twine_clip").css("outline", "none");
+ };
+
+ this.dragSelection = function(e){
+ var elChannelOverlay = $("#twine_timeline_channeloverlay");
+ var pageX = e.pageX;
+ var pageY = e.pageY;
+ var offset = elChannelOverlay.offset();
+ var width = elChannelOverlay.width();
+ var height = elChannelOverlay.height();
+ var left = (pageX - offset.left);
+ var top = (pageY - offset.top);
+ if (!elDragSelection) {
+ elDragSelection = $("<div />").addClass("drag_selection").appendTo(elChannelOverlay);
+ }
+ elDragSelection.hide().css({left: left + "px", top: top + "px"});
+
+ function handleDrag(e) {
+ elDragSelection.show();
+ var xMovement = e.pageX - pageX;
+ var yMovement = e.pageY - pageY;
+ if (xMovement < 0) {
+ elDragSelection.css({
+ left: (left + xMovement) + "px"
+ });
+ }
+ elDragSelection.css({
+ width: Math.abs(xMovement) + "px"
+ });
+
+ if (yMovement < 0) {
+ elDragSelection.css({
+ top: (top + yMovement) + "px"
+ });
+ }
+ elDragSelection.css({
+ height: Math.abs(yMovement) + "px"
+ });
+
+ }
+
+ function handleMouseUp(e) {
+ elDragSelection.hide();
+ var left = parseFloat(elDragSelection.css("left"));
+ var width = parseFloat(elDragSelection.css("width"));
+ var top = parseFloat(elDragSelection.css("top"));
+ var height = parseFloat(elDragSelection.css("height")) - 10;
+ var channelStart = timeline.determineChannelFromTop(top).index;
+ var channelEnd = timeline.determineChannelFromTop(top + height).index;
+
+ var beatStart = ((left / timeline.pixelsPerBeat) + timeline.beatRegion[0]) - 0.01;
+ var beatEnd = (((left + width) / timeline.pixelsPerBeat) + timeline.beatRegion[0]) + 0.01;
+ timeline.deselectClips();
+ for (let ch of timeline.channels) {
+ if (ch.index >= channelStart && ch.index <= channelEnd) {
+ for (let ci in ch.clips) {
+ var cl = ch.clips[ci];
+ if (cl) {
+ if (cl.data.position >= beatStart && cl.data.position + cl.data.playLength <= beatEnd) {
+ cl.markSelected();
+ timeline.selectedClips.push(cl);
+
+ }
+ }
+ }
+ }
+ }
+ $("body").off("mousemove", handleDrag).off("mouseup", handleMouseUp);
+ }
+ $("body").on("mouseup", handleMouseUp).on("mousemove", handleDrag);
+ };
+
+ timeline.drawGrid();
+};
diff --git a/site/app/twine/twine.csd b/site/app/twine/twine.csd
new file mode 100644
index 0000000..1f31907
--- /dev/null
+++ b/site/app/twine/twine.csd
@@ -0,0 +1,413 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#define ECP_NORECORDING ##
+
+;#include "scss/elasticlip_sequencer.udo"
+#include "/scss/elasticlip.udo"
+;#include "scss/mixer/base.udo"
+#include "/interop.udo"
+#include "/host_platform.udo"
+#include "/bussing.udo"
+#include "/table_tools.udo"
+#include "/lagdetect.udo"
+
+#include "/twigs/twigs.udo"
+#include "/twist/twist.udo"
+
+
+
+instr twine_automaterun
+endin
+
+opcode _twine_playrecurse, i, ikiioj
+ iplayfn, ktimes, imaxchannels, iplayfnsize, index, iusedchanfn xin
+ if (iusedchanfn == -1) then
+ iusedchanfn ftgentmp 0, 0, -imaxchannels, -2, 0
+ endif
+
+ iclipindex tab_i index, iplayfn
+ istart tab_i index + 1, iplayfn
+ iduration tab_i index + 2, iplayfn
+ ichannel tab_i index + 3, iplayfn
+ istartoffset tab_i index + 4, iplayfn
+ tabw_i 1, ichannel, iusedchanfn
+
+ if (ktimes >= istart && ktimes <= istart + iduration) then
+ if (iclipindex < 0) then
+ aL, aR subinstr sprintf("twinescript%d", -iclipindex), iduration, istartoffset
+ else
+ aL, aR subinstr "ecp_playback_tst", -1, iclipindex, iduration, istartoffset ; sort out channels
+ endif
+ bus_mix sprintf("mxchan%d", ichannel), aL, aR
+ endif
+
+ if (index + 5 < iplayfnsize) then
+ i_ _twine_playrecurse iplayfn, ktimes, imaxchannels, iplayfnsize, index + 5, iusedchanfn
+ endif
+ xout iusedchanfn
+endop
+
+opcode _twine_channelrecurse, 0, io
+ iusedchanfn, index xin
+ if (tab_i(index, iusedchanfn) == 1) then
+ a_ subinstr sprintf("twine_channel%d", index)
+ endif
+
+ if (index + 1 < ftlen(iusedchanfn)) then
+ _twine_channelrecurse iusedchanfn, index + 1
+ endif
+endop
+
+opcode twine_playback, aa, ikii
+ iplayfn, ktimes, imaxchannels, iplayfnsize xin
+ gitwst_tf_state[0] = 1
+ gitwst_tf_state[1] = 1
+ iusedchanfn _twine_playrecurse iplayfn, ktimes, imaxchannels, iplayfnsize
+ _twine_channelrecurse iusedchanfn
+ a_ subinstr "twine_automaterun"
+ aL, aR bus_read "twine_master"
+ kamp chnget "twine_masteramp"
+ aL *= kamp
+ aR *= kamp
+ xout aL, aR
+endop
+
+instr twine_masteroutput
+ aL, aR bus_read "twine_master"
+ outs aL, aR
+endin
+
+instr twine_createtable
+ icbid = p4
+ ilen = p5
+ ifn ftgen 0, 0, -ilen, -2, 0
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"table\":%d}", icbid, ifn))
+ turnoff
+endin
+
+
+instr twine_removetable
+ icbid = p4
+ ifn = p5
+ ftfree ifn, 0
+ io_sendstring("callback", sprintf("{\"cbid\":%d}", icbid))
+ turnoff
+endin
+
+
+instr twine_removeclip
+ icbid = p4
+ iclipindex = p5
+ ecp_removeclip iclipindex
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+ turnoff
+endin
+
+
+instr twine_render_complete
+ icbid = p4
+ ifnoutL = p5
+ ifnoutR = p6
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1,\"fnL\":%d,\"fnR\":%d}", icbid, ifnoutL, ifnoutR))
+ turnoff
+endin
+
+
+instr twine_convertsr_complete
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+ turnoff
+endin
+
+instr twine_convertsr
+ icbid = p4
+ iclipindex = p5
+ isourcesr = p6
+ ifndata = giecp_fnclips[iclipindex]
+ ifnL tab_i 0, ifndata
+ ifnR tab_i 1, ifndata
+ if (ifnR > 0) then
+ ifnnewL, ifnnewR, kdone tab_samplerateconvert ifnL, ifnR, 1, isourcesr
+ else
+ ifnnewL, kdone tab_samplerateconvert ifnL, 1, isourcesr
+ ifnnewR = 0
+ endif
+ tabw_i ifnnewL, 0, ifndata
+ tabw_i ifnnewR, 1, ifndata
+ if (kdone == 1) then
+ schedulek("twine_convertsr_complete", 0, 1, icbid)
+ turnoff
+ endif
+endin
+
+instr twine_render
+ icbid = p4
+ ifn = p5
+ imaxchannels = p6
+ iduration = p7
+ itarget = p8 ; 0 = ftable, 1 = file,
+ ifnsize = p9
+ ifreeplaybacktable = p11
+ if (itarget == 1) then
+ Spath = strget(p10)
+ ifnoutL = 0
+ ifnoutR = 0
+ else
+ Spath = ""
+ ioutlen = iduration * sr
+ if (ioutlen >= gihost_max32bitftlen) then ; limitation with WASM Csound build at the moment
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":-2}", icbid))
+ turnoff
+ endif
+ ifnoutL ftgen 0, 0, -ioutlen, -2, 0
+ ifnoutR ftgen 0, 0, -ioutlen, -2, 0
+ endif
+
+ if (ifreeplaybacktable == 1) then
+ ftfree ifn, 1
+ endif
+ p3 = 3600
+
+ iblocks = 100
+
+ ikcycles = round(iduration * kr)
+
+ if (ikcycles < iblocks) then
+ ikcyclesperblock = ikcycles
+ else
+ ikcyclesperblock = round(ikcycles / iblocks)
+ endif
+ ktotalcount init 0
+ klastpercent init 100
+
+ if (ktotalcount < ikcycles) then
+ kcount = 0
+ while (kcount < ikcyclesperblock) do
+ aL, aR twine_playback ifn, ktotalcount / kr, imaxchannels, ifnsize
+ if (itarget == 0) then
+ apos lphasor 1
+ tablew aL, apos, ifnoutL
+ tablew aR, apos, ifnoutR
+ else
+ fout Spath, 14, aL, aR
+ endif
+ kcount += 1
+ ktotalcount += 1
+ od
+ kpercent = round((100 / ikcycles) * ktotalcount)
+ if (kpercent != klastpercent) then
+ io_send "percent", kpercent
+ klastpercent = kpercent
+ endif
+ else
+ schedulek("twine_render_complete", 0, 1, icbid, ifnoutL, ifnoutR)
+ turnoff
+ endif
+endin
+
+instr twine_getsr
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"sr\":%d}", icbid, sr))
+ turnoff
+endin
+
+instr twine_playback_complete
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":0}", icbid))
+ turnoff
+endin
+
+instr twine_playback_lag
+ icbid = p4
+ turnoff2 "twine_playback", 0, 0
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":-1}", icbid))
+ turnoff
+endin
+
+instr twine_playback
+ icbid = p4
+ ifn = p5
+ imaxchannels = p6
+ ifnsize = p7
+ ifreeplaybacktable = p8
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+
+ if (ifreeplaybacktable == 1) then
+ ftfree ifn, 1
+ endif
+
+ ktimes timeinsts
+ chnset ktimes, "twine_playpos"
+ aL, aR twine_playback ifn, ktimes, imaxchannels, ifnsize
+ klevel = rms:k((aL + aR) / 2) * 1.4
+ chnset klevel, "twine_mastervu"
+ outs aL, aR
+
+ klagging lagdetect 1.1
+ if (klagging == 1) then
+ schedulek("twine_playback_lag", 0, 1, icbid)
+ endif
+
+ kreleasing init 0
+ if (lastcycle:k() == 1 || (kreleasing == 0 && release:k() == 1)) then
+ kreleasing = 1
+ schedulek("twine_playback_complete", 0, 1, icbid)
+ endif
+endin
+
+instr twine_playback_complete
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":0}", icbid))
+ turnoff
+endin
+
+instr twine_playbackwatchdog
+ icbid = p4
+ kreleasing init 0
+ if (lastcycle:k() == 1 || (kreleasing == 0 && release:k() == 1)) then
+ kreleasing = 1
+ schedulek("twine_playback_complete", 0, 1, icbid)
+ endif
+endin
+
+
+instr twine_stopplayback
+ turnoff2 "ecp_playback", 0, 1
+ turnoff3 "ecp_playback"
+ turnoff2 "twine_playback", 0, 1
+ turnoff2 "twine_playbackwatchdog", 0, 1
+ turnoff
+endin
+
+
+
+instr twine_setbpm
+ ibpm = p4
+ gkseq_tempo init ibpm
+ turnoff
+endin
+
+
+instr twine_createblankclip
+ icbid = p4
+ istereo = p5
+ iduration = p6
+ ilen = iduration * sr
+ ifnL ftgen 0, 0, -ilen, 2, 0
+ if (istereo == 1) then
+ ifnR ftgen 0, 0, -ilen, 2, 0
+ else
+ ifnR = 0
+ endif
+
+ iclipindex ecp_addclip "", ifnL, ifnR, 4, 4
+ Sresponse = sprintf("{\"cbid\":%d,\"status\":1,\"data\":{\"clipindex\":%d,\"datatable\":%d}}", icbid, iclipindex, giecp_fnclips[iclipindex])
+ io_sendstring("callback", Sresponse)
+ turnoff
+endin
+
+instr twine_importclip
+ icbid = p4
+ idatafn = p5
+ iclipindex ecp_importclip idatafn
+ Sresponse = sprintf("{\"cbid\":%d,\"status\":1,\"data\":{\"clipindex\":%d,\"datatable\":%d}}", icbid, iclipindex, idatafn)
+ io_sendstring("callback", Sresponse)
+ turnoff
+endin
+
+instr twine_loadftables
+ icbid = p4
+ ifnL = p5
+ ifnR = p6
+ istatus = -10
+ Sdata = "{}"
+
+ if (ifnL <= 0) then
+ istatus = -1
+ goto complete
+ endif
+
+ iclipindex ecp_addclip "", ifnL, ifnR, 4, 4 ; name not really required any more, beats contentious, analyse and also set warp mode
+ Sdata = sprintf("{\"clipindex\":%d,\"datatable\":%d}", iclipindex, giecp_fnclips[iclipindex])
+
+complete:
+ Sresponse = sprintf("{\"cbid\":%d,\"status\":%d,\"data\":%s}", icbid, istatus, Sdata)
+ io_sendstring("callback", Sresponse)
+ turnoff
+endin
+
+instr twine_loadpath
+ icbid = p4
+ Spath = strget(p5)
+ iforcemono = p6
+ istatus = -10
+ Sdata = "{}"
+
+ if (filevalid(Spath) != 1) then
+ istatus = -1
+ goto complete
+ endif
+
+ ifilesr = filesr(Spath)
+ ilens = filelen(Spath)
+ ilen = round(ilens * ifilesr)
+
+ if (ilen >= gihost_max32bitftlen || ilens * sr >= gihost_max32bitftlen) then ; limitation with WASM Csound build at the moment
+ istatus = -2
+ goto complete
+ endif
+
+ iclipindex ecp_loadsound Spath, 4, iforcemono ; beats contentious, analyse and also set warp mode, also SR conversion
+ Sdata = sprintf("{\"clipindex\":%d,\"datatable\":%d}", iclipindex, giecp_fnclips[iclipindex])
+
+ istatus = 1
+
+complete:
+ Sresponse = sprintf("{\"cbid\":%d,\"status\":%d,\"data\":%s}", icbid, istatus, Sdata)
+ io_sendstring("callback", Sresponse)
+ turnoff
+endin
+
+instr twine_setclipaudiounique
+ icbid = p4
+ iclipindex = p5
+ ecp_setaudiounique iclipindex
+ io_sendstring("callback", sprintf("{\"cbid\":%d}", icbid))
+ turnoff
+endin
+
+instr twine_cloneclip
+ icbid = p4
+ iclipindex = p5
+
+ inewclipindex ecp_cloneclip iclipindex
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"clipindex\":%d,\"datatable\":%d}", icbid, inewclipindex, giecp_fnclips[inewclipindex]))
+ turnoff
+endin
+
+
+instr twine_clipreplacetables
+ icbid = p4
+ iclipindex = p5
+ ifnL = p6
+ ifnR = p7
+ ecp_replacetables iclipindex, ifnL, ifnR
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"clipindex\":%d,\"datatable\":%d}", icbid, iclipindex, giecp_fnclips[iclipindex]))
+ turnoff
+endin
+
+
+</CsInstruments>
+<CsScore>
+f0 z
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/twine/twine.css b/site/app/twine/twine.css
new file mode 100644
index 0000000..da01ad7
--- /dev/null
+++ b/site/app/twine/twine.css
@@ -0,0 +1,438 @@
+#twist {
+ display: none;
+}
+
+#twigs {
+ display: none;
+}
+
+#twine_start {
+ z-index: 300;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: var(--bgColor2);
+ cursor: pointer;
+}
+
+#twine_startinner {
+ z-index: 202;
+ text-align: centre;
+ margin: 0px;
+ position: absolute;
+ top: 20%;
+ left: 20%;
+ width: 60%;
+ height: 40%;
+}
+
+#twine_mixer {
+ overflow-x: auto;
+ overflow-y: hidden;
+ scrollbar-color: var(--scrollbarColor);
+}
+
+#twine_startbig {
+ font-size: 48pt;
+}
+
+td {
+ font-size: var(--fontSizeSmall);
+}
+
+body {
+ font-family: var(--fontFace);
+ color: var(--fgColor1);
+ font-size: var(--fontSizeDefault);
+ user-select: none;
+ cursor: arrow;
+ font-size: 11pt;
+}
+
+#twine_menubar {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ right: 0px;
+ height: 20px;
+ z-index: 6;
+}
+
+.slider {
+ background: var(--bgColor3);
+ accent-color: var(--fgColor2);
+}
+
+#twine_timeline_playposition {
+ position: absolute;
+ width: 1px;
+ opacity: 0.8;
+ top: 0px;
+ bottom: 0px;
+ left: 0px;
+ background-color: var(--waveformPlayheadColor);
+ z-index: 50;
+ display: none;
+}
+
+.twine_timelinetext {
+ font-size: var(--fontSizeSmall);
+ opacity: 0.9;
+ position: absolute;
+ color: var(--fgColor3);
+ top: 2px;
+ z-index: 4;
+}
+
+#twine_timeline_channeloverlay {
+ position: absolute;
+ left: 10%;
+ right: 0px;
+ top: 0px;
+ height: 100%;
+ user-select: none;
+ pointer-events: none;
+}
+
+.twine_vline {
+ position: absolute;
+ width: 1px;
+ opacity: 0.8;
+ background-color: #bdbdbd;
+ height: 100%;
+ z-index: 4;
+}
+
+
+
+#twine_timeline {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ bottom: 30%;
+ right: 0px;
+ background-color: #dadada;
+}
+
+#twine_main {
+ position: absolute;
+ top: 50px;
+ bottom: 0px;
+ left: 0px;
+ right: 0px;
+}
+
+#twine_header {
+ position: absolute;
+ top: 20px;
+ height: 30px;
+ left: 0px;
+ width: 100%;
+ background-color: var(--bgColor1);
+ overflow: none;
+}
+
+.knoblabel {
+ font-size: 8pt;
+ text-align: center;
+}
+
+#twine_timelineoverlay {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 10%;
+ top: 0px;
+ z-index: 50;
+ display: none;
+}
+
+#twine_details {
+ position: absolute;
+ left: 0px;
+ bottom: 0px;
+ width: 100%;
+ height: 30%;
+ background-color: var(--bgColor1);
+}
+
+.twine_clipdetailsleft {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 30%;
+ height: 100%;
+ font-size: var(--fontSizeSmall);
+ background-color: var(--bgColor2);
+}
+
+.twine_clipdetailsright {
+ position: absolute;
+ left: 30%;
+ top: 0px;
+ width: 70%;
+ height: 100%;
+ background-color: var(--bgColor3);
+}
+
+#twine_headertable {
+ height: 30px;
+}
+
+#twine_clipdetails {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ display: none;
+}
+
+#twine_channeldetails {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ display: none;
+ overflow-x: auto;
+ scrollbar-color: var(--scrollbarColor);
+}
+
+.twine_channeldetails_insert {
+ position: absolute;
+ font-size: var(--fontSizeSmall);
+ width: 500px;
+ border-left: 1px solid var(--fgColor3);
+ height: 100%;
+ top: 0px;
+ bottom: 0px;
+ overflow-y: auto;
+ background-color: var(--bgColor1);
+ scrollbar-color: var(--scrollbarColor);
+}
+
+.twine_channeldetails_inserts {
+ position: absolute;
+ left: 200px;
+ right: 0px;
+ height: 100%;
+ top: 0px;
+ overflow-y: scroll;
+ background-color: var(--bgColor2);
+ scrollbar-color: var(--scrollbarColor);
+}
+
+.twine_channeldetails_insertnew {
+ position: absolute;
+ width: 200px;
+ height: 100%;
+ top: 0px;
+ bottom: 0px;
+ overflow-y: auto;
+ background-color: var(--bgColor3);
+ scrollbar-color: var(--scrollbarColor);
+}
+
+.drag_selection {
+ position: absolute;
+ background-color: #323232;
+ opacity: 0.5;
+ user-select: none;
+ z-index: 101;
+}
+
+#twine_timeline_timebar {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ height: 20px;
+ right: 0px;
+ background-color: var(--bgColor2);
+ z-index: 4;
+}
+
+#twine_timeline_timebar_inner {
+ position: absolute;
+ left: 10%;
+ top: 0px;
+ height: 20px;
+ right: 0px;
+ cursor: text;
+ z-index: 4;
+}
+
+.twine_timeline_timebar_locatorhead {
+ position: absolute;
+ /*width: 14px;
+ border-radius: 0px 0px 4px 4px;
+ background-color: var(--waveformLocationColor);
+ height: 100%;
+ */
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ border-left: 14px solid var(--waveformLocationColor);
+ top: 0px;
+ opacity: 0.6;
+ cursor: ew-resize;
+ z-index: 5;
+}
+
+.twine_timeline_timebar_locatorline {
+ position: absolute;
+ width: 1px;
+ background-color: var(--waveformLocationColor);
+ height: 100%;
+ top: 0px;
+ width: 2px;
+ opacity: 0.6;
+ pointer-events: none;
+}
+
+.twine_timeline_timebar_regionstart {
+ position: absolute;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ border-left: 14px solid var(--waveformMarkerColor);
+ top: 0px;
+ opacity: 0.6;
+ cursor: ew-resize;
+ z-index: 5;
+}
+
+.twine_timeline_timebar_regionend {
+ position: absolute;
+ border-top: 10px solid transparent;
+ border-bottom: 10px solid transparent;
+ border-right: 14px solid var(--waveformMarkerColor);
+ top: 0px;
+ opacity: 0.6;
+ cursor: ew-resize;
+ z-index: 5;
+}
+
+
+#twine_timeline_inner {
+ position: absolute;
+ left: 0px;
+ top: 20px;
+ bottom: 20px;
+ width: 100%;
+ overflow-y: scroll;
+ overflow-x: hidden;
+ scrollbar-color: var(--scrollbarColor);
+}
+
+#twine_timeline_scroll_filler {
+ position: absolute;
+ background-color: var(--bgColor1);
+ left: 0px;
+ bottom: 0px;
+ width: 10%;
+ height: 20px;
+}
+
+#twine_timeline_scroll_outer {
+ position: absolute;
+ background-color: var(--bgColor2);
+ left: 10%;
+ bottom: 0px;
+ width: 90%;
+ height: 20px;
+ z-index: 7;
+}
+
+#twine_timeline_scroll_inner {
+ position: absolute;
+ background-color: var(--fgColor1);
+ left: 0px;
+ top: 4px;
+ bottom: 4px;
+ right: 0px;
+}
+
+.twine_channel {
+ position: relative;
+ left: 0px;
+ right: 0px;
+ top: 0px;
+ height: 40px;
+ font-size: var(--fontSizeSmall);
+ border-bottom: 1px solid black;
+}
+
+.twine_channelclips {
+ position: absolute;
+ left: 10%;
+ width: 90%;
+ background-color: var(--bgColor3);
+ height: 100%;
+ top: 0px;
+ overflow: hidden;
+ user-select: none;
+}
+
+.twine_spline {
+ position: absolute;
+ width: 100%;
+ left: 0px;
+ height: 100%;
+ top: 0px;
+}
+
+.twine_automationselectors {
+ padding: 10px;
+}
+
+.twine_automationselect {
+ padding: 0px;
+ font-size: var(--fontSizeSmall);
+}
+
+.twine_channelcontrol {
+ position: absolute;
+ background-color: var(--bgColor2);
+ left: 0px;
+ width: 10%;
+ height: 100%;
+ top: 0px;
+}
+
+.twine_clip {
+ user-select: none;
+ position: absolute;
+ left: 100px;
+ width: 400px;
+ z-index: 30;
+ overflow: hidden;
+}
+
+.twine_clip_edge_left {
+ position: absolute;
+ cursor: e-resize;
+ height: 100%;
+ top: 0px;
+ width: 5px;
+ left: 0px;
+}
+
+.twine_clip_edge_right {
+ position: absolute;
+ cursor: e-resize;
+ height: 100%;
+ top: 0px;
+ width: 5px;
+ right: 0px;
+}
+
+.twine_clip_centre {
+ position: absolute;
+ cursor: move;
+ height: 100%;
+ top: 0px;
+ left: 5px;
+ right: 5px;
+}
diff --git a/site/app/twine/twine.js b/site/app/twine/twine.js
new file mode 100644
index 0000000..c81cc66
--- /dev/null
+++ b/site/app/twine/twine.js
@@ -0,0 +1,517 @@
+var Twine = function() {
+ var twine = this;
+ var hrefSplit = window.location.href.split("?");
+ if (hrefSplit.length == 2 && hrefSplit[1] == "offline") {
+ twine.offline = true;
+ } else {
+ twine.offline = false;
+ }
+ twine.version = 1;
+ twirl.init();
+ twine.visible = true;
+ var playing = false;
+ var onStop;
+ twine.timeline = new Timeline(twine);
+ twine.ui = new TwineUI(twine);
+ twine.mixer = new Mixer(twine);
+ twine.sr = null;
+ twine.arrangementName = "New twine arrangement";
+ var undoHistory = [];
+ var playbackTable;
+ var playbackTableLength;
+
+ twine.ui.head.name.element.val(twine.arrangementName);
+ twine.ui.head.grid.setValue(1, true);
+ twine.ui.head.snap.setValue(1, true);
+
+ twine.storage = localStorage.getItem("twine");
+ if (twine.storage) {
+ twine.storage = JSON.parse(twine.storage);
+ } else {
+ twine.storage = {
+ showMasterVu: 0,
+ showClipWaveforms: 1
+ };
+ }
+
+ this.saveStorage = function() {
+ localStorage.setItem("twine", JSON.stringify(twine.storage));
+ };
+
+ var maxID = 0;
+ this.getNewID = function() {
+ return maxID++;
+ };
+
+ twine.undo = {
+ add: function(name, func) {
+ undoHistory.push({name: name, func: func});
+ },
+ apply: function() {
+ var item = undoHistory.pop();
+ item.func();
+ //twine.timeline.redraw(); // should be handled in the undo func
+ },
+ clear: function() {
+ undoHistory = [];
+ },
+ has: function() {
+ return (undoHistory.length > 0);
+ },
+ lastName: function() {
+ var name = "";
+ if (undoHistory.length > 0) {
+ name = undoHistory[undoHistory.length - 1].name;
+ }
+ return name ;
+ }
+ };
+
+ this.setPlaying = function(state) {
+ playing = state;
+ playHandler(state);
+ twine.timeline.setPlaying(playing);
+ };
+
+ this.roundToNearest = function(val, multiple, offset) {
+ if (!offset) offset = 0;
+ return (Math.round((val - offset) / multiple) * multiple) + offset;
+ };
+
+ this.stop = function() {
+ if (!playing) return;
+ app.insertScore("twine_stopplayback", [0, 1]);
+ };
+
+ this.exportData = async function() {
+ var saveData = {
+ timeline: await twine.timeline.exportData(),
+ maxID: maxID,
+ arrangementName: twine.arrangementName,
+ version: twine.version,
+ sr: twine.sr
+ }
+ return saveData;
+ };
+
+ this.importData = async function(loadData) {
+ maxID = loadData.maxID;
+ twine.undo.clear();
+ twine.arrangementName = loadData.arrangementName;
+ await twine.timeline.importData(loadData.timeline);
+ twine.ui.head.name.element.val(twine.arrangementName);
+ };
+
+ this.downloadExportData = async function() {
+ twirl.loading.show();
+ const saveData = await twine.exportData();
+ const stream = new Blob([JSON.stringify(saveData)], {type: "application/json"}).stream();
+ const crs = stream.pipeThrough(new CompressionStream("gzip"));
+ const resp = await new Response(crs);
+ const blob = await resp.blob();
+ var name = twine.arrangementName + ".twine";
+ var url = window.URL.createObjectURL(blob);
+ var a = $("<a />").attr("href", url).attr("download", name).appendTo($("body")).css("display", "none");
+ a[0].click();
+ twirl.loading.hide();
+ setTimeout(function(){
+ a.remove();
+ window.URL.revokeObjectURL(url);
+ }, 20000);
+ };
+
+ this.uploadImportData = async function(blob, onComplete) {
+ twirl.loading.show();
+ // const stream = new Blob([data], {type: "application/json"});
+ const stream = blob.stream();
+ const crs = stream.pipeThrough(new DecompressionStream("gzip"));
+ const resp = await new Response(crs);
+ const dblob = await resp.blob();
+ await twine.importData(JSON.parse(await dblob.text()));
+ if (onComplete) {
+ onComplete();
+ }
+ twirl.loading.hide();
+ };
+
+ this.showMixer = function() {
+ twine.ui.showPane(twine.ui.pane.MIXER);
+ twine.mixer.show();
+ };
+
+ var playHandlerInterval;
+ function playHandler(playing) {
+ if (playHandlerInterval) {
+ clearInterval(playHandlerInterval);
+ }
+ if (playing) {
+ if (twine.storage.showMasterVu) {
+ playHandlerInterval = setInterval(async function(){
+ if (twine.mixer.visible) {
+ twine.mixer.setVu(await app.getControlChannel("twine_mastervu"));
+ }
+ }, 50);
+ }
+ }
+ }
+
+ async function setPlaybackArtefacts(beatStart, beatEnd, onReady) {
+ if (!beatStart) beatStart = 0;
+ twine.timeline.playbackBeatStart = beatStart;
+ var data = [];
+ var time;
+ var playLength;
+ var reltime;
+ var maxbeat = 0;
+ var beatTime = 60 / twine.timeline.data.bpm;
+ for (let ch of twine.timeline.channels) {
+ for (let i in ch.clips) {
+ var cl = ch.clips[i];
+ if (!cl) continue;
+ time = cl.data.position;
+ playLength = cl.data.playLength;
+ if (time + playLength >= beatStart && (!beatEnd || (time <= beatEnd))) {
+ if (time >= beatStart) {
+ offset = 0;
+ } else {
+ offset = beatStart - time;
+ }
+ reltime = time - beatStart;
+ if (reltime + playLength > maxbeat) {
+ maxbeat = reltime + playLength;
+ }
+ if (cl.isAudio) {
+ data.push(cl.data.clipindex);
+ } else {
+ data.push(-cl.data.id);
+ }
+ data.push(Math.max(0, reltime) * beatTime);
+ data.push(playLength * beatTime);
+ data.push(cl.channel.index);
+ data.push(offset * beatTime);
+
+ console.log(
+ "clipindex " + cl.data.clipindex + ", " +
+ "channel " + cl.channel.index + ", " +
+ "beat " + reltime + ", " +
+ "len " + playLength + ", " +
+ "offset " + offset
+ );
+ }
+ }
+ }
+ console.log(data);
+ if (data.length == 0) return;
+ async function doPlay() {
+ await app.getCsound().tableCopyIn(playbackTable, data);
+ onReady(maxbeat * beatTime, data.length);
+ }
+
+ twine.timeline.compileAutomationData(function(){
+ if (data.length > playbackTableLength) {
+ app.insertScore("twine_removetable", [0, 1, playbackTable, async function(ndata){
+ createPlaybackTable(playbackTableLength * 2, doPlay);
+ }]);
+ } else {
+ doPlay();
+ }
+ });
+ }
+
+ var bounceNumber = 1;
+ this.renderToClip = function(beatStart, beatEnd) {
+ if (playing) return;
+ twirl.loading.show("Rendering", true);
+ setPlaybackArtefacts(beatStart, beatEnd, function(maxtime, maxtablen){
+ var cbid = app.createCallback(function(ndata2){
+ if (ndata2.status == 1) {
+ var channel = twine.timeline.addChannel();
+ var clip = new Clip(twine);
+ clip.data.position = beatStart;
+ clip.data.playLength = beatEnd - beatStart;
+ channel.addClip(clip);
+ clip.loadFromFtables("Bounce " + (bounceNumber ++), [ndata2.fnL, ndata2.fnR]);
+ } else if (ndata2.status == -2) {
+ twirl.errorHandler("Resulting output is too long");
+ } else {
+ twirl.errorHandler("Render cannot be completed");
+ }
+ twirl.loading.hide();
+ });
+ app.insertScore("twine_render", [0, 1, cbid, playbackTable, twine.timeline.channels.length, maxtime, 0, maxtablen]);
+ });
+ };
+
+ var saveNumber = 1;
+ this.renderToFile = function(beatStart, beatEnd, name) {
+ if (playing) return;
+ if (!name) {
+ name = twine.arrangementName + ".wav";
+ }
+ // HACK TODO: WASM can't overwrite files
+ name = name.substr(0, name.lastIndexOf(".")) + "." + (saveNumber ++) + name.substr(name.lastIndexOf("."));
+ // END HACK
+ var path = "/" + name;
+ twirl.loading.show("Rendering", true);
+ setPlaybackArtefacts(beatStart, beatEnd, function(maxtime, maxtablen){
+ var cbid = app.createCallback(async function(ndata2){
+ if (ndata2.status == 1) {
+ var content = await app.readFile(path);
+ var blob = new Blob([content], {type: "audio/wav"});
+ var url = window.URL.createObjectURL(blob);
+ var a = $("<a />").attr("href", url).attr("download", name).appendTo($("body")).css("display", "none");
+ a[0].click();
+ setTimeout(function(){
+ a.remove();
+ window.URL.revokeObjectURL(url);
+ app.unlinkFile(path);
+ }, 20000);
+ twirl.loading.hide();
+ } else {
+ twirl.errorHandler("Could not save file");
+ }
+ });
+ app.insertScore("twine_render", [0, 1, cbid, playbackTable, twine.timeline.channels.length, maxtime, 1, maxtablen, path]);
+ });
+ };
+
+
+ this.play = function() {
+ if (playing) return;
+ setPlaybackArtefacts(twine.timeline.startLocation, null, function(maxtime, maxtablen){
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status <= 0) {
+ twine.setPlaying(false);
+ app.removeCallback(ndata.cbid);
+ if (ndata.status == -1) {
+ twirl.prompt.show("Not enough processing power to play in realtime");
+ } else {
+ if (onStop) {
+ setTimeout(function(){
+ onStop(ndata);
+ onStop = null;
+ }, 100); // race condition on ftable somehow
+ }
+ }
+ } else {
+ twine.setPlaying(true);
+ }
+ }, true);
+ app.insertScore("twine_playback", [0, maxtime, cbid, playbackTable, twine.timeline.channels.length, maxtablen]);
+ });
+
+ };
+ /*
+ this.play = function(beatStart, beatEnd) {
+ if (playing) return;
+ if (!beatStart) beatStart = 0;
+ var time;
+ var reltime;
+ var maxtime = 0;
+ var beatTime = 60 / twine.timeline.data.bpm;
+ for (let ch of twine.timeline.channels) {
+ for (let i in ch.clips) {
+ var cl = ch.clips[i];
+ time = cl.data.position;
+ if (time > beatStart && (!beatEnd || (time <= beatEnd))) {
+ reltime = time - beatStart;
+ if (reltime + cl.duration > maxtime) {
+ maxtime = reltime + cl.duration;
+ }
+ app.insertScore("ecp_playback", cl.getPlaybackArgs(-1, reltime * beatTime));
+ }
+ }
+ }
+ var cbid = app.createCallback(function() {
+ twine.setPlaying(false);
+ });
+ app.insertScore("twine_playbackwatchdog", [0, maxtime, cbid]);
+ };
+ */
+ this.stop = function(onStopFunc) {
+ if (!playing) return;
+ onStop = onStopFunc;
+ app.insertScore("twine_stopplayback");
+ };
+
+ this.stopAndPlay = function(beatStart, beatEnd) {
+ function doPlay() {
+ twine.play(beatStart, beatEnd);
+ }
+ if (playing) {
+ twine.stop(doPlay);
+ } else {
+ doPlay();
+ }
+ };
+
+ this.setVisible = function(state) {
+ var el = $("#twine");
+ if (state) {
+ el.show();
+ } else {
+ el.hide();
+ }
+ };
+
+ async function handleFileDrop(e, posTop, posLeft, colour) {
+ e.preventDefault();
+ twirl.loading.show();
+ var channel = twine.timeline.determineChannelFromTop(posTop);
+ if (!channel) {
+ channel = twine.timeline.addChannel();
+ }
+ var relPosition = 0;
+ for (const item of e.originalEvent.dataTransfer.files) {
+ if (item.name.endsWith(".twine")) {
+ window.ass = item;
+ twine.uploadImportData(item);
+ return;
+ }
+ if (!twirl.audioTypes.includes(item.type)) {
+ return twirl.errorHandler("Unsupported file type");
+ }
+ if (item.size > twirl.maxFileSize) {
+ return twirl.errorHandler("File too large");
+ }
+
+ errorState = "File loading error";
+ var content = await item.arrayBuffer();
+ const buffer = new Uint8Array(content);
+ if (!twine.offline) await app.getCsound().fs.writeFile(item.name, buffer);
+
+ var clip = new Clip(twine);
+ posLeft = twine.timeline.roundToGrid(posLeft);
+ var position = (posLeft / twine.timeline.pixelsPerBeat) + twine.timeline.beatRegion[0];
+ clip.data.position = Math.max(0, position + relPosition);
+ channel.addClip(clip);
+ clip.loadFromPath(item.name, colour);
+ relPosition += 1;
+ }
+ if (twine.offline) twirl.loading.hide();
+ }
+
+ this.randomColour = function() {
+ return "rgb(" + ([Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255)].join(",")) + ")";
+
+ };
+
+ function fileDropHandler() {
+ var tempclip = null;
+
+ function calcPosition(e) {
+ var tlo = $("#twine_timelineoverlay").show();
+ var o = tlo.offset();
+ var top = e.pageY - o.top;
+ var left = e.pageX - o.left;
+ var visible = true;
+ if (top < 0 || left < 0 || top > tlo.height() || left > tlo.width()) {
+ visible = false;
+ }
+ return {
+ overlay: tlo,
+ left: left,
+ top: top,
+ visible: visible
+ }
+ }
+ window.addEventListener("resize", twine.timeline.redraw);
+ $("body").on("dragover", function(e) {
+ e.preventDefault();
+ e.originalEvent.dataTransfer.effectAllowed = "all";
+ e.originalEvent.dataTransfer.dropEffect = "copy";
+ var pos = calcPosition(e);
+
+ if (!tempclip) {
+ tempclip = $("<div />").addClass("twine_clip").css({"background-color": twine.randomColour(), height: "25px", width: "100px"}).text("New Clip");
+ pos.overlay.append(tempclip);
+ }
+ if (!pos.visible) {
+ tempclip.hide();
+ } else {
+ tempclip.show().css("top", pos.top + "px").css("left", pos.left + "px");
+ }
+ return false;
+ }).on("dragleave", function(e) {
+ e.preventDefault();
+ if (e.currentTarget.contains(e.relatedTarget)) return;
+ $("#twine_timelineoverlay").hide();
+ if (tempclip) {
+ tempclip.remove();
+ tempclip = null;
+ }
+ }).on("drop", function(e) {
+ var pos = calcPosition(e);
+ $("#twine_timelineoverlay").hide();
+ var colour = tempclip.css("background-color");
+ if (tempclip) {
+ tempclip.remove();
+ tempclip = null;
+ }
+ if (pos.visible) {
+ handleFileDrop(e, pos.top, pos.left, colour);
+ }
+ });
+ }
+
+ function createPlaybackTable(length, onComplete) {
+ if (twine.offline) return;
+ if (!length) length = 5000;
+ app.insertScore("twine_createtable", [0, 1, app.createCallback(function(ndata){
+ playbackTable = ndata.table;
+ playbackTableLength = length;
+ if (onComplete) onComplete();
+ }), length]);
+ }
+
+ this.bootAudio = async function() {
+ for (var i = 0; i < 8; i++) {
+ twine.timeline.addChannel();
+ }
+ if (!twine.offline) {
+ twine.mixer.bootAudio();
+ twine.sr = (await app.getCsound().getSr());
+ }
+ createPlaybackTable();
+ };
+
+ this.boot = function() {
+ fileDropHandler();
+ };
+};
+
+function twine_start() {
+ var elStart = $("#twine_start");
+ function boot() {
+ elStart.hide();
+ twirl.boot();
+ twine.boot();
+ if (!twine.offline) {
+ twirl.loading.show("Preparing audio engine");
+ app.play(function(text){
+ twirl.loading.show(text);
+ twirl.latencyCorrection = twirl.audioContext.outputLatency * 1000;
+ }, twirl.audioContext);
+ }
+ }
+
+ window.twine = new Twine();
+ window.twigs = new Twigs();
+ window.twist = new Twist();
+ if (twine.offline) {
+ window.app = null;
+ boot();
+ twine.bootAudio();
+ } else {
+ window.app = new CSApplication({
+ csdUrl: "twine.csd",
+ onPlay: function() {
+ twine.bootAudio();
+ twigs.bootAudio();
+ twirl.loading.hide();
+ },
+ errorHandler: twirl.errorHandler
+ });
+ $("#twine_start").click(boot);
+ }
+} \ No newline at end of file
diff --git a/site/app/twine/twine_ui.js b/site/app/twine/twine_ui.js
new file mode 100644
index 0000000..3a98c75
--- /dev/null
+++ b/site/app/twine/twine_ui.js
@@ -0,0 +1,506 @@
+var twineTopMenuData = [
+ {name: "File", contents: [
+ {name: "Save", disableOnPlay: true, shortcut: {name: "Ctrl S", ctrlKey: true, key: "s"}, click: function(twine) {
+ twine.downloadExportData();
+ }},
+ ]},
+ {name: "Edit", contents: [
+ {shortcut: {name: "Ctrl Z", ctrlKey: true, key: "z"}, click: function(twine) {
+ twine.undo.apply();
+ }, condition: function(twine) {
+ return twine.undo.has();
+ }, name: function(twine) {
+ return "Undo " + twine.undo.lastName();
+ }},
+ {name: "Copy", shortcut: {name: "Ctrl C", ctrlKey: true, key: "c"}, click: function(twine) {
+ twine.copySelected();
+ }, condition: function(twine) {
+ return twine.timeline.selectedClips.length > 0;
+ }}
+ ]},
+ {name: "View", contents: [
+ {name: "Zoom in", shortcut: {name: ",", key: ","}, click: function(twine){
+ twine.timeline.zoomIn();
+ }},
+ {name: "Zoom out", shortcut: {name: ".", key: "."}, click: function(twine){
+ twine.timeline.zoomOut();
+ }},
+ {name: "Show all", shortcut: {name: "/", key: "/"}, click: function(twine){
+ twine.timeline.showAll();
+ }},
+ {preset: "divider"},
+ {name: "Mixer", shortcut: {name: "M", key: "m"}, click: function(twine){
+ twine.showMixer();
+ }},
+ {name: "Contract channels", shortcut: {name: "C", key: "c"}, click: function(twine) {
+ twine.timeline.contractChannels();
+ }}
+ ]},
+ {name: "Action", contents: [
+ {name: "Play/stop", shortcut: {name: "Space", key: "space"}, click: function(twine) {
+ twine.ui.head.play.element.click();
+ }},
+ {preset: "divider"},
+ {name: "Add channel", shortcut: {name: "A", key: "a"}, click: function(twine) {
+ twine.timeline.addChannel();
+ }},
+ {name: "Add script clip", click: function(twine) {
+ twine.timeline.addScriptClip();
+ }},
+ {name: "Add blank clip", click: function(twine) {
+ twine.timeline.addBlankClip();
+ }},
+ {preset: "divider"},
+ {name: "Delete clip(s)", shortcut: {name: "Del", key: "delete"}, click: function(twine) {
+ twine.timeline.selectedClips.forEach(function(clip){
+ clip.destroy();
+ });
+ twine.ui.showPane(twine.ui.pane.NONE);
+ }, condition: function(twine){
+ return twine.timeline.selectedClips.length > 0;
+ }},
+ {preset: "divider"},
+ {name: "Render to file", click: function(twine) {
+ twine.renderToFile();
+ }},
+ {name: "Bounce", shortcut: {name: "A", key: "a"}, click: function(twine) {
+ twine.renderToClip();
+ }}
+ ]},
+ {name: "Options", contents: [
+ {name: "Settings", click: function(twine) {
+ twine.ui.showSettings();
+ }}
+ ]},
+ {name: "Help", contents: [
+ {name: "Help", click: function(twine){
+ $("#twist_documentation")[0].click();
+ }},
+ {name: "About", click: function(twine) {
+ twine.ui.showAbout();
+ }},
+ ]}
+];
+
+
+var TwineUI = function(twine) {
+ var ui = this;
+ ui.topMenu = new twirl.TopMenu(twine, twineTopMenuData, $("#twine_menubar"));
+
+ ui.showSettings = function() {
+ var settings = [
+ {
+ name: "Show master VU meter",
+ description: "Show the master VU mixer in the mixer view",
+ bool: true,
+ storageKey: "showMasterVu"
+ },
+ {
+ name: "Show clip waveforms",
+ description: "Show waveforms in clips",
+ bool: true,
+ storageKey: "showClipWaveforms"
+ }
+ ];
+ twirl.showSettings(twine, settings);
+ };
+
+ this.pane = {NONE: -1, MIXER: 0, CHANNEL: 1, CLIPAUDIO: 2, CLIPSCRIPT: 3};
+ this.showPane = function(pane) {
+ var chd = $("#twine_channeldetails");
+ var cld = $("#twine_clipdetails");
+ if (pane == ui.pane.MIXER) {
+ twine.mixer.show();
+ chd.hide();
+ cld.hide();
+
+ } else if (pane == ui.pane.CHANNEL) {
+ twine.mixer.hide();
+ chd.show();
+ cld.hide();
+
+ } else if (pane >= 2) {
+ twine.mixer.hide();
+ chd.hide();
+ cld.show();
+ var cda = $("#twine_clipdetailsaudio");
+ var cds = $("#twine_clipdetailsscript");
+ if (pane == ui.pane.CLIPAUDIO) {
+ cda.show();
+ cds.hide();
+ } else {
+ cda.hide();
+ cds.show();
+ }
+ } else if (pane == ui.pane.NONE) {
+ twine.mixer.hide();
+ chd.hide();
+ cld.hide();
+ };
+ };
+
+ ui.showAbout = function() {
+ var el = $("<div />");
+ var x = $("<div />").appendTo(el);
+ var string = "twine";
+ var intervals = [];
+
+ function addChar(c, left) {
+ left = Math.min(Math.max(left, 30), 70);
+ var elC = $("<h2 />").text(c).css({position: "absolute", left: left + "%"}).appendTo(x);
+ var rate = (Math.random() * 0.1) + 0.15;
+ var leftDirection = Boolean(Math.round(Math.random()));
+ setTimeout(function(){
+ intervals.push(setInterval(function(){
+ if (leftDirection) {
+ if (left < 70) {
+ left += rate;
+ } else {
+ leftDirection = false;
+ }
+ } else {
+ if (left > 30) {
+ left -= rate;
+ } else {
+ leftDirection = true;
+ }
+ }
+ //console.log(left, rate, leftDirection);
+ elC.css("left", left + "%");
+ }, (Math.random() * 20) + 20));
+ }, (Math.random() * 1000) + 500);
+ }
+ var widthPercent = (40 / (string.length));
+ for (let c in string) {
+ intervals.push(addChar(string[c], (widthPercent * c) + 30));
+ }
+
+ $("<br />").appendTo(el);
+ $("<br />").appendTo(el);
+ $("<p />").text("Version " + twine.version.toFixed(1)).appendTo(el);
+ $("<p />").css("font-size", "12px").text("By Richard Knight 2024").appendTo(el);
+
+ twirl.prompt.show(el, function(){
+ for (let i of intervals) clearInterval(i);
+ });
+ };
+
+ function refreshWarpParams() {
+ var warp = ui.clip.warp.element.val();
+ var warpMode = ui.clip.warpMode.element.val();
+
+ ui.clip.warpMode.hide();
+ ui.clip.fftSize.hide();
+ ui.clip.phaseLock.hide();
+ ui.clip.txtWinSize.hide();
+ ui.clip.txtRandom.hide();
+ ui.clip.txtOverlap.hide();
+ ui.clip.txtWinType.hide();
+
+ if (!warp) return;
+ ui.clip.warpMode.show();
+
+ if (warpMode == 1) {
+ ui.clip.txtWinSize.show();
+ ui.clip.txtRandom.show();
+ ui.clip.txtOverlap.show();
+ ui.clip.txtWinType.show();
+ } else if (warpMode > 1) {
+ ui.clip.fftSize.show();
+ ui.clip.phaseLock.show();
+ }
+ }
+
+ function applyValToSelectedFunc(dataKey, applyFunc, undoName, noApplyUndo) {
+ if (!undoName) undoName = dataKey;
+ var func = function(val) {
+ if (!noApplyUndo) {
+ var selected = [...twine.timeline.selectedClips];
+ var values = [];
+ }
+ twine.timeline.selectedClips.forEach(async function(clip){
+ if (!noApplyUndo) {
+ values.push(clip.data[dataKey]);
+ }
+ applyFunc(clip, val);
+ });
+ if (!noApplyUndo) {
+ twine.undo.add("clip " + undoName, function(){
+ for (var i in selected) {
+ applyFunc(selected[i], values[i]);
+ if (twine.timeline.selectedClip == selected[i]) {
+ ui.clip[dataKey].setValue(values[i]);
+ }
+ }
+ });
+ }
+ };
+ return func;
+ }
+
+ ui.clip = {
+ scriptEdit: new twirl.stdui.TextArea({
+ target: "twine_clip_scriptedit",
+ height: "100%",
+ width: "100%"
+
+ }),
+ scriptAudition: new twirl.stdui.PlayButton({
+ target: "twine_clip_scriptaudition",
+ change: function(v, obj) {
+ if (obj.state == true) {
+
+ } else {
+ app.insertScore("twine_scriptstop");
+ }
+ }
+ }),
+ scriptApply: new twirl.stdui.StandardButton({
+ target: "twine_clip_scriptapply",
+ label: "Apply script",
+ change: function() {
+ twine.timeline.selectedClip.setScript(
+ ui.clip.scriptEdit.element.val(),
+ function() {
+ twirl.prompt.show("Script successfully compiled");
+ }
+ );
+ }
+ }),
+ audition: new twirl.stdui.PlayButton({
+ target: "twine_clip_audition",
+ tooltip: "Audition clip",
+ change: function(v, obj) {
+ if (obj.state == true) {
+ twine.timeline.selectedClip.play(function(ndata) {
+ if (ndata.status == 0) {
+ obj.setValue(false);
+ }
+ });
+ } else {
+ twine.timeline.selectedClip.stop();
+ }
+ }
+ }),
+ name: new twirl.stdui.TextInput({
+ target: "twine_clip_name",
+ change: applyValToSelectedFunc("name", function(clip, val){
+ clip.setData("name", val);
+ }),
+ css: {
+ border: "none"
+ }
+ }),
+ colour: new twirl.stdui.ColourInput({
+ target: "twine_clip_colour",
+ change: applyValToSelectedFunc("colour", function(clip, val){
+ clip.colour = val;
+ }),
+ css: {
+ border: "none"
+ }
+ }),
+ editTwist: new twirl.stdui.StandardButton({
+ label: "Twist",
+ target: "twine_clip_edittwist",
+ change: function(e) {
+ twirl.contextMenu.show(e, [
+ {name: "Edit all references", click: function(){
+ twine.timeline.selectedClip.editInTwist();
+ }},
+ {name: "Edit as unique", click: function(){
+ twine.timeline.selectedClip.editInTwist(true);
+ }}
+ ]);
+ }
+ }),
+ editTwigs: new twirl.stdui.StandardButton({
+ label: "Twigs",
+ target: "twine_clip_edittwigs",
+ change: function(e) {
+ twirl.contextMenu.show(e, [
+ {name: "Edit all references", click: function(){
+ twine.timeline.selectedClip.editInTwigs();
+ }},
+ {name: "Edit as unique", click: function(){
+ twine.timeline.selectedClip.editInTwigs(true);
+ }}
+ ]);
+ }
+ }),
+ warp: new twirl.stdui.StandardToggle({
+ label: "Warp",
+ target: "twine_clip_warp",
+ change: applyValToSelectedFunc("warp", function(clip, val){
+ clip.setWarp(val);
+ }),
+ stateAlter: function(val) {
+ refreshWarpParams();
+ }
+ }),/*
+ loop: new twirl.stdui.StandardToggle({
+ label: "Loop",
+ target: "twine_clip_loop",
+ change: function(val) {
+ twine.timeline.selectedClip.setLoop(val);
+ }
+ }),*/
+ warpMode: new twirl.stdui.ComboBox({
+ target: "twine_clip_warpmode",
+ options: [
+ "Repitch", "Grain", "Mince" //, "FFTab"
+ ],
+ change: applyValToSelectedFunc("warpMode", function(clip, val){
+ clip.setWarpMode(val);
+ }, "warp mode"),
+ stateAlter: function(val) {
+ refreshWarpParams();
+ }
+ }),
+ amp: new twirl.stdui.Slider({
+ label: "Gain",
+ valueLabel: true,
+ value: 1,
+ min: 0,
+ max: 2,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ input: applyValToSelectedFunc("amp", function(clip, val){
+ clip.setData("amp", val);
+ }, "gain", true),
+ change: applyValToSelectedFunc("amp", function(clip, val){
+ clip.setData("amp", val);
+ }, "gain")
+ }),
+ pitch: new twirl.stdui.Slider({
+ label: "Pitch",
+ valueLabel: true,
+ min: -12,
+ max: 12,
+ step: 1,
+ value: 0,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ input: applyValToSelectedFunc("pitch", function(clip, val){
+ clip.setPitch(val);
+ }, null, true),
+ change: applyValToSelectedFunc("pitch", function(clip, val){
+ clip.setPitch(val);
+ })
+ }),
+ fftSize: new twirl.stdui.ComboBox({
+ label: "FFT Size",
+ asRow: true,
+ target: "twine_clipparamsbottom",
+ options: [
+ "256", "512", "1024", "2048"
+ ],
+ asValue: true,
+ change: applyValToSelectedFunc("fftSize", function(clip, val){
+ clip.setData("fftSize", val);
+ }, "FFT size")
+ }),
+ phaseLock: new twirl.stdui.StandardToggle({
+ label: "Phase lock",
+ target: "twine_clipparamsbottom",
+ change: applyValToSelectedFunc("phaseLock", function(clip, val){
+ clip.setData("phaseLock", val);
+ }, "phase lock"),
+ stateAlter: function(val) {
+ refreshWarpParams();
+ }
+ }),
+ txtWinSize: new twirl.stdui.Slider({
+ label: "Window size",
+ valueLabel: true,
+ min: 44,
+ max: 4410,
+ step: 1,
+ value: 4410,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ change: applyValToSelectedFunc("txtWinSize", function(clip, val){
+ clip.setData("txtWinSize", val);
+ }, "window size")
+ }),
+ txtRandom: new twirl.stdui.Slider({
+ label: "Window random",
+ valueLabel: true,
+ min: 0,
+ max: 441,
+ step: 1,
+ value: 441,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ change: applyValToSelectedFunc("txtRandom", function(clip, val){
+ clip.setData("txtRandom", val);
+ }, "window random")
+ }),
+ txtOverlap: new twirl.stdui.Slider({
+ label: "Window overlap",
+ valueLabel: true,
+ min: 0,
+ max: 16,
+ step: 1,
+ value: 4,
+ size: 32,
+ target: "twine_clipparamsbottom",
+ change: applyValToSelectedFunc("txtOverlap", function(clip, val){
+ clip.setData("txtOverlap", val);
+ }, "window overlap")
+ }),
+ txtWinType: new twirl.stdui.ComboBox({
+ label: "Window type",
+ asRow: true,
+ target: "twine_clipparamsbottom",
+ options: [
+ "Hanning", "Hamming", "Half sine"
+ ],
+ change: applyValToSelectedFunc("txtWinType", function(clip, val){
+ clip.setData("txtWinType", val);
+ }, "window type")
+ })
+ };
+
+ ui.head = {
+ play: new twirl.stdui.PlayButton({
+ target: "twine_head_play",
+ fontsize: "14pt",
+ change: function(v, obj) {
+ if (obj.state == true) {
+ twine.play();
+ } else {
+ twine.stop();
+ obj.setValue(false);
+ }
+ }
+ }),
+ snap: new twirl.stdui.StandardToggle({
+ label: "Snap",
+ target: "twine_head_snap",
+ change: function(val) {
+ val = (val) ? 4 : 0;
+ twine.timeline.data.snapToGrid = val;
+ }
+ }),
+ grid: new twirl.stdui.StandardToggle({
+ label: "Grid",
+ target: "twine_head_showgrid",
+ change: function(val) {
+ twine.timeline.data.gridVisible = val;
+ twine.timeline.redraw();
+ }
+ }),
+ name: new twirl.stdui.TextInput({
+ target: "twine_head_name",
+ css: {
+ border: "none",
+ "font-family": "var(--fontFace)",
+ "font-size": "var(--fontSizeLarge)",
+ },
+ change: function(val) {
+ twine.timeline.arrangementName = val;
+ }
+ })
+ };
+}; \ No newline at end of file
diff --git a/site/app/twirl/appdata.js b/site/app/twirl/appdata.js
new file mode 100644
index 0000000..b417c3f
--- /dev/null
+++ b/site/app/twirl/appdata.js
@@ -0,0 +1,1427 @@
+twirl.appdata = {
+ version: 1.0,
+ modulations: [
+ {
+ name: "LFO",
+ instr: "twst_mod_lfo",
+ parameters: [
+ {name: "Rate", description: "Rate in Hz", dfault: 1, min: 0.1, max: 20},
+ {name: "Base value", description: "Base value", hostrange: true},
+ {name: "Gain", description: "Gain", dfault: 0.2},
+ {preset: "wave"},
+ {name: "Min", preset: "hostrangemin", hidden: true},
+ {name: "Max", preset: "hostrangemax", hidden: true}
+ ]
+ },
+ {
+ name: "Line",
+ instr: "twst_mod_line",
+ parameters: [
+ {name: "First point", channel: "first", description: "First point value", hostrange: true, automatable: false},
+ {name: "Last point", channel: "last", description: "Last point value", hostrange: true, automatable: false},
+ ]
+ },
+ {
+ name: "Random",
+ instr: "twst_mod_random",
+ parameters: [
+ {name: "Rate", description: "Rate in Hz", min: 0.1, max: 20, dfault: 1},
+ {name: "Min", hostrange: true, dfault: "hostrangemin"},
+ {name: "Max", hostrange: true, dfault: "hostrangemax"},
+ {name: "Portamento time", channel: "porttime", description: "Value glide time in seconds", dfault: 0.1, min: 0, max: 0.5},
+
+ ]
+ },
+ {
+ name: "Jitter",
+ instr: "twst_mod_jitter",
+ parameters: [
+ {name: "Base value", description: "Base value", hostrange: true},
+ {name: "Amplitude", channel: "amp", dfault: 1},
+ {name: "Rate minimum", description: "Rate in Hz", channel: "freqmin", dfault: 1, min: 0.1, max: 20},
+ {name: "Rate maximum", description: "Rate in Hz", channel: "freqmax", dfault: 1, min: 0.1, max: 20},
+ {name: "Min", hostrange: true, dfault: "hostrangemin"},
+ {name: "Max", hostrange: true, dfault: "hostrangemax"}
+
+ ]
+ },
+ {
+ name: "Parametric jitter",
+ instr: "twst_mod_jitter2",
+ parameters: [
+ {name: "Base value", description: "Base value", hostrange: true},
+ {name: "Total amplitude", channel: "totalamp", dfault: 1},
+ {name: "Amp 1", channel: "amp1", dfault: 0.5},
+ {name: "Rate 1", description: "Rate in Hz", channel: "freq1", dfault: 1, min: 0.1, max: 20},
+ {name: "Amp 2", channel: "amp2", dfault: 0.5},
+ {name: "Rate 2", description: "Rate in Hz", channel: "freq2", dfault: 1, min: 0.1, max: 20},
+ {name: "Amp 3", channel: "amp3", dfault: 0.5},
+ {name: "Rate 3", description: "Rate in Hz", channel: "freq3", dfault: 1, min: 0.1, max: 20},
+ {name: "Min", preset: "hostrangemin", hidden: true},
+ {name: "Max", preset: "hostrangemax", hidden: true}
+ ]
+ },
+ {
+ name: "Crossadaptive RMS",
+ instr: "twst_xa_rms",
+ inputs: 2,
+ parameters: [
+ {preset: "instance", channel: "xrmsinstance"},
+ {preset: "instanceloop", channel: "xrmslooptype"},
+ {name: "Scaling", channel: "xrmsscale", description: "Scaling", hostrange: true},
+ {name: "Portamento time", channel: "porttime", description: "Value glide time in seconds", dfault: 0, min: 0, max: 0.2}
+ ]
+ },
+ {
+ name: "Crossadaptive AMDF pitch",
+ instr: "twst_xa_pitchamdf",
+ inputs: 2,
+ parameters: [
+ {preset: "instance", channel: "xpitchinstance"},
+ {preset: "instanceloop", channel: "xpitchlooptype"},
+ {name: "Scaling", channel: "xpitchscale", description: "Scaling", hostrange: true},
+ {name: "Minimum frequency", channel: "xpitchmin", description: "Minimum frequency in analysis", min: 20, max: 1000, step: 1, dfault: 20, automatable: false},
+ {name: "Maximum frequency", channel: "xpitchmax", description: "Maximum frequency in analysis", min: 1000, max: 10000, step: 1, dfault: 10000, automatable: false},
+ {name: "Portamento time", channel: "porttime", description: "Value glide time in seconds", dfault: 0, min: 0, max: 0.2},
+ ]
+ },
+ {
+ name: "Crossadaptive pitch 1",
+ instr: "twst_xa_pitch1",
+ inputs: 2,
+ parameters: [
+ {preset: "instance", channel: "xpitchinstance"},
+ {preset: "instanceloop", channel: "xpitchlooptype"},
+ {name: "Scaling", channel: "xpitchscale", description: "Scaling", hostrange: true},
+ {name: "Hop size root", channel: "xpitchhopsize", description: "Square root of hop size", min: 6, max: 12, dfault: 8, step: 1, automatable: false},
+ {name: "Portamento time", channel: "porttime", description: "Value glide time in seconds", dfault: 0, min: 0, max: 0.2},
+ ]
+ },
+ {
+ name: "Crossadaptive pitch 2",
+ instr: "twst_xa_pitch2",
+ inputs: 2,
+ parameters: [
+ {preset: "instance", channel: "xpitchinstance"},
+ {preset: "instanceloop", channel: "xpitchlooptype"},
+ {name: "Scaling", channel: "xpitchscale", description: "Scaling", hostrange: true},
+ {name: "Minimum frequency", channel: "xpitchmin", description: "Minimum frequency in analysis", min: 20, max: 1000, step: 1, dfault: 20, automatable: false},
+ {name: "Maximum frequency", channel: "xpitchmax", description: "Maximum frequency in analysis", min: 1000, max: 10000, step: 1, dfault: 10000, automatable: false},
+ {name: "Analysis period", channel: "xpitchperiod", description: "Analysis period in seconds", min: 0.001, max: 0.1, dfault: 0.05, automatable: false},
+ {name: "Amplitude threshold", channel: "xpitchampthresh", description: "Analysis amplitude threshold in decibels", min: 1, max: 30, dfault: 10, automatable: false},
+ {name: "Portamento time", channel: "porttime", description: "Value glide time in seconds", dfault: 0, min: 0, max: 0.2},
+ ]
+ },
+ {
+ name: "Crossadaptive spectral centroid",
+ instr: "twst_xa_centroid",
+ inputs: 2,
+ parameters: [
+ {preset: "instance", channel: "xcentroidinstance"},
+ {preset: "instanceloop", channel: "xcentroidlooptype"},
+ {name: "Scaling", channel: "xcentroidscale", description: "Scaling", hostrange: true},
+ {name: "Analysis period", channel: "xcentroidperiod", description: "Analysis period in seconds", min: 0.001, max: 0.3, dfault: 0.05},
+ {preset: "fftsize", channel: "xcentroidfftsize"},
+ {name: "Portamento time", channel: "porttime", description: "Value glide time in seconds", dfault: 0, min: 0, max: 0.2}
+ ]
+ },
+ ],
+ transforms: [
+ {
+ name: "General",
+ contents: [
+ {
+ name: "Reverse",
+ description: "Reverse sample region",
+ instr: "twst_tfi_reverse",
+ parameters: []
+ }
+ ]
+ },
+ {
+ name: "Generate",
+ contents: [
+ {
+ name: "Silence",
+ instr: "twst_tf_gensilence",
+ description: "Replace region with silence",
+ parameters: []
+ },
+ {
+ name: "Oscillator",
+ instr: "twst_tf_gentone",
+ description: "Simple interpolating oscillator",
+ parameters: [
+ {presetgroup: "notefreq"},
+ {preset: "amp"},
+ {preset: "wave", automatable: true},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "FM",
+ instr: "twst_tf_genfm",
+ description: "Frequency modulation synthesis",
+ parameters: [
+ {presetgroup: "notefreq"},
+ {preset: "amp"},
+ {name: "Carrier factor", channel: "carrier", min: 0.1, max: 8, dfault: 1},
+ {name: "Modulator factor", channel: "modulator", min: 0.1, max: 8, dfault: 1},
+ {name: "Modulation index", channel: "index", min: 0.1, max: 10, dfault: 2},
+ {preset: "wave"},
+ {name: "Stereo variance", channel: "stereovar", min: 0.5, max: 1.5, dfault: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "FM model",
+ instr: "twst_tf_genfmmodel",
+ description: "Frequency modulation physical models",
+ parameters: [
+ {name: "Type", channel: "fmtype", options: ["Organ", "Bell", "Flute", "Rhodes", "Wurlitzer", "Random"]},
+ {presetgroup: "notefreq"},
+ {preset: "amp"},
+ {name: "Modulation index", channel: "control1", min: 0.1, max: 10, dfault: 2},
+ {name: "Oscillator crossfade", channel: "control2", min: 0.1, max: 10, dfault: 2},
+ {name: "Vibrato depth", channel: "vibdepth", min: 0, max: 1, dfault: 0.05},
+ {name: "Vibrato rate", channel: "vibrate", min: 0, max: 20, dfault: 2},
+ {preset: "wave", channel: "wave1", name: "Wave 1"},
+ {preset: "wave", channel: "wave2", name: "Wave 2"},
+ {preset: "wave", channel: "wave3", name: "Wave 3"},
+ {preset: "wave", channel: "wave4", name: "Wave 4"},
+ {preset: "wave", channel: "vibwave", name: "Vibrato wave"},
+ {name: "Stereo variance", channel: "stereovar", min: 0.5, max: 1.5, dfault: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "String pluck",
+ instr: "twst_tf_genrepluck",
+ description: "String pluck physical model",
+ parameters: [
+ {presetgroup: "notefreq"},
+ {preset: "amp"},
+ {name: "Pluck point", channel: "pluckpoint", description: "String pluck point ratio", dfault: 0.3, automatable: false},
+ {name: "Pickup point", channel: "pickpoint", description: "Pickup point ratio", dfault: 0.6, automatable: false},
+ {name: "Reflection", channel: "reflection", description: "Reflection coefficient", min: 0.0001, max: 0.9999, dfault: 0.4},
+ {name: "Exciter mode", channel: "excitemode", options: ["Noise", "Oscillator"], dfault: 1},
+ {preset: "wave", channel: "excitewave", name: "Exciter waveform", conditions:[{channel: "excitemode", operator: "eq", value: 1}]},
+ {presetgroup: "notefreq", channelprepend: "excite", nameprepend: "Exciter", conditions: [{channel: "excitemode", operator: "eq", value: 1}]},
+ {name: "Exciter amplitude", channel: "exciteamp", description: "Exciter amplitude", dfault: 1, min: 0, max: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Stochastic additive",
+ instr: "twst_tf_genadditive",
+ description: "Aleatoric additive synthesis",
+ parameters: [
+ {preset: "amp", automatable: false},
+ {presetgroup: "notefreq", nameprepend: "Minimum", dfault: 440, channelprepend: "min", automatable: false, lagHint: 1},
+ {presetgroup: "notefreq", nameprepend: "Maximum", dfault: 8000, channelprepend: "max", automatable: false, lagHint: -1},
+ {name: "Frequency increment", channel: "step", automatable: false, min: 1.001, max: 1.5, dfault: 1.1, lagHint: -1},
+ {name: "Frequency randomness", channel: "steprand", automatable: false, min: 1, max: 1.5, dfault: 1},
+ {name: "Amplitude increment", channel: "ampmult", automatable: false, min: 0.2, max: 1, dfault: 0.6},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Noise",
+ instr: "twst_tf_gennoise",
+ description: "Noise generation",
+ parameters: [
+ {preset: "amp"},
+ {name: "Type", options: ["White", "Pink"], description: "Type of noise"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Bamboo",
+ instr: "twst_tf_genbamboo",
+ description: "Bamboo shaker physical model",
+ parameters: [
+ {preset: "amp"},
+ {name: "Number of resonators", channel: "number", min: 0, max: 10, step: 1, dfault: 0, automatable: false},
+ {presetgroup: "notefreq", nameprepend: "Resonator 1", dfault: 440, channelprepend: "r1", automatable: false},
+ {presetgroup: "notefreq", nameprepend: "Resonator 2", dfault: 440, channelprepend: "r2", automatable: false},
+ {presetgroup: "notefreq", nameprepend: "Resonator 3", dfault: 440, channelprepend: "r3", automatable: false},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "WG bow",
+ instr: "twst_tf_genwgbow",
+ description: "Physical modelling waveguide bowed string",
+ parameters: [
+ {preset: "amp"},
+ {presetgroup: "notefreq"},
+ {name: "Bow pressure", channel: "pressure", min: 0, max: 5, dfault: 3},
+ {name: "Bow position", channel: "position", min: 0.025, max: 0.23, dfault: 0.127236},
+ {name: "Vibrato rate", channel: "vibfreq", min: 0, max: 12, dfault: 0},
+ {name: "Vibrato rate", channel: "vibamp", min: 0, max: 1, dfault: 0},
+ {name: "Vibrato waveform", preset: "wave"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Feedback",
+ instr: "twst_tf_genfeedback",
+ description: "Feedback modelling",
+ added: "2025-04-17",
+ parameters: [
+ {preset: "amp"},
+ {presetgroup: "notefreq"},
+ {name: "Feedback", min: 0.1, max: 10, dfault: 1.1},
+ {name: "Filter bandwidth", channel: "bandwidth", min: 10, max: 500, dfault: 125},
+ {name: "Post gain", channel: "postgain", min: 0.1, max: 2, dfault: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Additive",
+ instr: "twst_tf_gensimpleadditive",
+ description: "Simple additive synthesis",
+ added: "2025-04-17",
+ parameters: [
+ {preset: "amp"},
+ {presetgroup: "notefreq"},
+ {name: "Frequency step multiplier", channel: "multiplier", min: 1.0001, max: 2, dfault: 1.1},
+ {name: "Frequency multiplier", channel: "stepmultiplier", min: 0.5, max: 2, dfault: 1},
+ {name: "Amplitude smoothing", channel: "ampprofile", min: 0, max: 1, step: 1, dfault: 1},
+ {name: "Harmonics", min: 2, max: 256, dfault: 64, automatable: false},
+ {presetgroup: "applymode"}
+ ]
+ }
+ /* not quite right, don't create sound as expected
+ {
+ name: "WG bowed bar",
+ instr: "twst_tf_genwgbowedbar",
+ description: "Physical modelling waveguide bowed bar",
+ parameters: [
+ {preset: "amp"},
+ {presetgroup: "notefreq"},
+ {name: "Bow pressure", channel: "pressure", min: 0, max: 5, dfault: 3},
+ {name: "Bow position", channel: "position", min: 0.025, max: 0.23, dfault: 0.127236},
+ {name: "Filter gain", channel: "filtergain", min: 0, max: 1, dfault: 0.809},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "WG brass",
+ instr: "twst_tf_genwgbrass",
+ description: "Physical modelling waveguide brass",
+ parameters: [
+ {preset: "amp"},
+ {presetgroup: "notefreq"},
+ {name: "Lip tension", channel: "tension", min: 0, max: 1, dfault: 0.4},
+ {name: "Attack", channel: "position", min: 0, max: 1, dfault: 0.1, automatable: false},
+ {name: "Vibrato rate", channel: "vibfreq", min: 0, max: 12, dfault: 0},
+ {name: "Vibrato rate", channel: "vibamp", min: 0, max: 1, dfault: 0},
+ {name: "Vibrato waveform", preset: "wave"},
+ {presetgroup: "applymode"}
+ ]
+ },*/
+ ]
+ },
+ {
+ name: "Amplitude",
+ contents: [
+ {
+ name: "Normalise",
+ instr: "twst_tf_normalise",
+ description: "Normalise region",
+ parameters: [
+ {name: "Scale", description: "Scaling of normalisation", dfault: 1, min: 0, max: 1, automatable: false},
+ {name: "Stereo equal", channel: "equal", description: "Normalise stereo channels equally", dfault: 1, min: 0, max: 1, step: 1, automatable: false},
+ ]
+ },
+ {
+ name: "Amplitude",
+ instr: "twst_tf_amplitude",
+ description: "Gain alteration",
+ twine: true,
+ parameters: [
+ {name: "Gain", description: "Gain amount", dfault: 1, min: 0, max: 2},
+ {name: "Balance", description: "Left and right balance", dfault: 0.5, min: 0, max: 1}
+ ]
+ },
+ {
+ name: "Bit crush",
+ instr: "twst_tf_bitcrush",
+ description: "Sample level bit reduction",
+ twine: true,
+ parameters: [
+ {name: "Crush depth", channel: "crush", description: "Bit depth", dfault: 16, min: 1, max: 64, step: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Suppressor",
+ instr: "twst_tf_suppress",
+ description: "Wrap, mirror or limit amplitude",
+ twine: true,
+ parameters: [
+ {name: "Mode", channel: "mode", options: ["Limit", "Wrap", "Mirror"], automatable: true, dfault: 0},
+ {name: "Threshold", dfault: 0.8},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Linear clip",
+ instr: "twst_tf_pdclip",
+ description: "Phase distortion linear clipping",
+ twine: true,
+ parameters: [
+ {name: "Width", min: 0, max: 1, dfault: 0.2},
+ {name: "Centre", description: "Clipping offset", min: -1, max: 1, dfault: 0},
+ {name: "Bipolar", min: 0, max: 1, step: 1, dfault: 0, automatable: false},
+ {name: "Fullscale", min: 0, max: 1, dfault: 1, automatable: false},
+ ]
+ },
+ {
+ name: "Distortion",
+ instr: "twst_tf_distort",
+ description: "Waveshaping distortion",
+ twine: true,
+ parameters: [
+ {name: "Amount", min: 0, max: 1, dfault: 0.2},
+ {preset: "wave"},
+ {name: "Half power point", channel: "halfpower", min: 0, max: 100, dfault: 10, automatable: false},
+ ]
+ },
+ {
+ name: "HT Distortion",
+ instr: "twst_tf_distort1",
+ description: "Hyperbolic tangent distortion",
+ twine: true,
+ parameters: [
+ {name: "Pre gain", channel: "pregain", min: 0, max: 5, dfault: 1},
+ {name: "Post gain", channel: "postgain", min: 0, max: 1, dfault: 1},
+ {name: "Positive shape", channel: "shape1", min: 0, max: 1, dfault: 0.2},
+ {name: "Negative shape", channel: "shape2", min: 0, max: 1, dfault: 0.2},
+ ]
+ },
+ {
+ name: "Strobe",
+ instr: "twst_tf_strobe",
+ description: "Automatic amplitude attenuation",
+ twine: true,
+ added: "2025-04-17",
+ parameters: [
+ {name: "Rate", description: "Rate of action in Hz", dfault: 4, min: 0.1, max: 30},
+ {name: "Hold time", channel: "holdtime", description: "Hold time in seconds", dfault: 0.1, min: 0.01, max: 0.5},
+ {name: "Windowed", description: "Whether to apply windowing", dfault: 0, min: 0, max: 1, step: 1}
+ ]
+ },
+ ]
+ },
+ {
+ name: "Filter",
+ contents: [
+ {
+ name: "Low pass",
+ instr: "twst_tf_lpf",
+ description: "Butterworth low pass filter",
+ twine: true,
+ parameters: [
+ {name: "Frequency", description: "Filter frequency", max: 22000, min: 20, dfault: 1000},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "High pass",
+ instr: "twst_tf_hpf",
+ description: "Butterworth high pass filter",
+ twine: true,
+ parameters: [
+ {name: "Frequency", description: "Filter frequency", max: 22000, min: 20, dfault: 1000},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Band pass",
+ instr: "twst_tf_bpf",
+ description: "Butterworth band pass filter",
+ twine: true,
+ parameters: [
+ {name: "Frequency", description: "Filter frequency", max: 22000, min: 20, dfault: 1000},
+ {name: "Bandwidth", description: "Filter bandwidth", max: 5000, min: 1, dfault: 200},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Parametric",
+ instr: "twst_tf_pareq",
+ description: "Parametric EQ",
+ twine: true,
+ parameters: [
+ {name: "Frequency", description: "Filter frequency", max: 22000, min: 20, dfault: 1000},
+ {name: "Gain", description: "Filter gain factor", max: 4, min: 0, dfault: 1},
+ {name: "Q", description: "Filter Q", max: 0.9, min: 0.5, dfault: 0.707},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "DC Block",
+ instr: "twst_tf_dcblock",
+ description: "Remove DC offset from signal",
+ twine: true,
+ parameters: [
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Moog high pass",
+ instr: "twst_tf_mooghpf",
+ description: "Emulated Moog high pass filter",
+ twine: true,
+ parameters: [
+ {name: "Frequency", channel: "freq", min: 10, max: 10000, dfault: 800},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Moog low pass",
+ instr: "twst_tf_mooglpf",
+ description: "Emulated Moog low pass filter",
+ twine: true,
+ parameters: [
+ {name: "Frequency", channel: "freq", min: 10, max: 10000, dfault: 800},
+ {name: "Resonance", min: 0, max: 1, dfault: 0.6},
+ {name: "Mode", min: 0, max: 2, dfault: 1, step: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "TB303 low pass",
+ instr: "twst_tf_tbvcf",
+ description: "Emulated TB303 low pass filter",
+ twine: true,
+ parameters: [
+ {name: "Frequency", channel: "freq", min: 1000, max: 15000, dfault: 1500},
+ {name: "Resonance", min: 0, max: 2, dfault: 0.6},
+ {name: "Distortion", min: 0.5, max: 3, dfault: 2},
+ {name: "Resonance asymmetry ", min: 0, max: 1, dfault: 0.5},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Waveguide",
+ instr: "twst_tf_waveguide1",
+ description: "Waveguide filter",
+ twine: true,
+ parameters: [
+ {name: "Rate", channel: "freq", min: 10, max: 4000, dfault: 100},
+ {name: "Filter cutoff", channel: "cutoff", min: 400, max: 20000, dfault: 4000},
+ {name: "Feedback", dfault: 0.5},
+ {presetgroup: "applymode"}
+ ]
+ }
+ ]
+ },
+ {
+ name: "Frequency", contents: [
+ {
+ name: "Frequency shift 1",
+ instr: "twst_tf_freqshift1",
+ description: "Hilbert frequency shifter",
+ twine: true,
+ parameters: [
+ {name: "Shift", description: "Shift frequency in Hz", dfault: 0, min: -1000, max: 1000},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Frequency shift 2",
+ instr: "twst_tf_freqshift2",
+ description: "Biquadratic frequency shifter",
+ twine: true,
+ parameters: [
+ {name: "Shift", description: "Shift frequency in Hz", dfault: 0, min: -1000, max: 1000},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Ring modulator",
+ instr: "twst_tf_ringmod",
+ description: "Ring modulator",
+ twine: true,
+ parameters: [
+ {name: "Frequency", description: "Modulation frequency in Hz", dfault: 440, min: 20, max: 18000},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Exciter",
+ instr: "twst_tf_exciter",
+ description: "Non-linear signal excitation",
+ twine: true,
+ parameters: [
+ {presetgroup: "notefreq", nameprepend: "Lower", channelprepend: "low"},
+ {presetgroup: "notefreq", nameprepend: "Upper", channelprepend: "high"},
+ {name: "Harmonics", description: "Number of harmonics", min: 0.1, max: 10, dfault: 6, lagHint: -1},
+ {name: "Blend", description: "Harmonic blending", min: -10, max: 10, dfault: 10},
+ {presetgroup: "applymode"}
+ ]
+ }
+ ]
+ },
+ {
+ name: "Delay", contents: [
+ {
+ name: "Dynamic delay",
+ instr: "twst_tf_vdelay",
+ description: "Variable delay",
+ twine: true,
+ parameters: [
+ {name: "Delay time", channel: "delay", description: "Delay time in seconds", dfault: 0.3, min: 0.001, max: 1, lagHint: -1},
+ {name: "Feedback", description: "Feedback gain", dfault: 0.5},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Flanger",
+ instr: "twst_tf_flanger",
+ twine: true,
+ parameters: [
+ {name: "Delay", max: 0.02, dfault: 0.01, lagHint: -1},
+ {name: "Feedback", dfault: 0.3},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "First order phaser",
+ instr: "twst_tf_phaser1",
+ twine: true,
+ parameters: [
+ {name: "Frequency", channel: "freq", min: 10, max: 10000, dfault: 3000},
+ {name: "Order", min: 1, max: 24, step: 1, dfault: 4, automatable: false, lagHint: -1},
+ {name: "Feedback", dfault: 0.3},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Second order phaser",
+ instr: "twst_tf_phaser2",
+ twine: true,
+ parameters: [
+ {name: "Frequency", channel: "freq", min: 10, max: 10000, dfault: 3000},
+ {name: "Q", min: 0.2, max: 1.5, dfault: 0.67},
+ {name: "Order", min: 1, max: 2499, step: 1, dfault: 800, automatable: false, lagHint: -1},
+ {name: "Mode", min: 1, max: 2, dfault: 1, step: 1, automatable: false},
+ {name: "Separation", channel: "sep", min: 0.01, max: 4, dfault: 1, lagHint: 1},
+ {name: "Feedback", min: -1, max: 1, dfault: 0.3},
+ {presetgroup: "applymode"}
+ ]
+ }
+ ]
+ },
+ {
+ name: "Reverb", contents: [
+ {
+ name: "Room",
+ instr: "twst_tf_reverb3",
+ twine: true,
+ parameters: [
+ {name: "Room size", channel: "roomsize", description: "Room size", dfault: 0.5, min: 0, max: 1, lagHint: -1},
+ {name: "Damping", channel: "hfdamp", description: "High frequency damping", dfault: 0.5, min: 0, max: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Midverb",
+ instr: "twst_tf_reverb2",
+ twine: true,
+ parameters: [
+ {name: "Length", channel: "time", description: "Decay time", dfault: 1, min: 0.1, max: 10, lagHint: -1},
+ {name: "Damping", channel: "hfdamp", description: "High frequency damping", dfault: 0.5, min: 0, max: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Basicverb",
+ instr: "twst_tf_reverb1",
+ twine: true,
+ parameters: [
+ {name: "Length", channel: "time", description: "Decay time", dfault: 1, min: 0.1, max: 10, lagHint: -1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "FDNverb",
+ instr: "twst_tf_reverb4",
+ twine: true,
+ parameters: [
+ {name: "Feedback", channel: "feedback", description: "Feedback amount equating to decay time", dfault: 0.5, min: 0.1, max: 1, lagHint: -1},
+ {name: "Damping", channel: "hfdamp", description: "High frequency damping", dfault: 0.5, min: 0, max: 1},
+ {name: "Pitch variation", channel: "pitchmod", description: "Pitch variation", dfault: 1, min: 0, max: 10, automatable: false},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Baboverb",
+ instr: "twst_tf_reverb5",
+ description: "Physical model reverberator",
+ twine: true,
+ parameters: [
+ {name: "Room width", channel: "width", description: "Room width in metres", dfault: 14.39, min: 2, max: 100, automatable: false, lagHint: -1},
+ {name: "Room depth", channel: "depth", description: "Room depth in metres", dfault: 11.86, min: 2, max: 100, automatable: false, lagHint: -1},
+ {name: "Room height", channel: "height", description: "Room height in metres", dfault: 10, min: 2, max: 100, automatable: false, lagHint: -1},
+ {name: "X position", channel: "posx", description: "X position of listener", dfault: 0.5, min: 0, max: 1},
+ {name: "Y position", channel: "posy", description: "Y position of listener", dfault: 0.5, min: 0, max: 1},
+ {name: "Z position", channel: "posz", description: "Z position of listener", dfault: 0.5, min: 0, max: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ ]
+ },
+ {
+ name: "Granular", contents: [
+ {
+ name: "Autoglitch",
+ instr: "twst_tf_autoglitch",
+ description: "Automatic aleatoric sample reading with modifications",
+ twine: true,
+ parameters: [
+ {name: "Minimum ratio", channel: "minratio", description: "Minimum time ratio of original", dfault: 0.5, min: 0, max: 1, lagHint: 1},
+ {name: "Change rate", channel: "changerate", description: "Rate of change in Hz", dfault: 0.5, min: 0.1, max: 10, lagHint: -1},
+ {name: "Change chance", channel: "changechance", description: "Chance of change", dfault: 0.5, min: 0, max: 1},
+ {name: "Portamento time", channel: "porttime", description: "Reading position glide", dfault: 0.1, min: 0.001, max: 0.5},
+ {name: "Distortion", channel: "distortion", description: "Apply distortion", dfault: 0, min: 0, max: 1, step: 1},
+ {name: "Amp change", channel: "ampchange", description: "Apply amplitude changes", dfault: 0, min: 0, max: 1, step: 1},
+ {name: "Buffer size", channel: "buflens", description: "Buffer size in seconds", dfault: 0.5, min: 0.1, max: 4, automatable: false, lagHint: -1},
+ {name: "Read mode", channel: "readmode", description: "Reading mode", dfault: 0, options: ["Direct", "Texture", "FFT"], automatable: false, lagHint: {option: 0}},
+ {name: "Stereo unique", channel: "stereounique", description: "Whether channels are glitched independently", dfault: 1, min: 0, max: 1, step: 1, automatable: false},
+ {presetgroup: "applymode"}
+
+ ]
+ },
+ {
+ name: "Syncgrain",
+ instr: "twst_tfi_syncgrain",
+ description: "Synchronous granular synthesis",
+ parameters: [
+ {preset: "amp"},
+ {name: "Frequency", description: "Grains per second", channel: "freq", step: 1, min: 1, max: 100, dfault: 20, lagHint: -1},
+ {presetgroup: "pitchscale"},
+ {name: "Grain size", channel: "grainsize", min: 0.01, max: 0.5, dfault: 0.1, lagHint: 1},
+ {name: "Overlaps", min: 1, max: 8, step: 1, dfault: 1},
+ {name: "Time scale", min: 0.1, max: 10, dfault: 1, channel: "timescale"},
+ {preset: "wintype"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Grain",
+ instr: "twst_tfi_grain",
+ description: "Granular synthesis",
+ parameters: [
+ {preset: "amp"},
+ {presetgroup: "pitchscale"},
+ {name: "Density", description: "Grains per second", channel: "density", step: 1, min: 1, max: 100, dfault: 20, lagHint: -1},
+ {name: "Grain size", channel: "grainsize", min: 0.01, max: 0.5, dfault: 0.1, lagHint: 1},
+ {name: "Amplitude variation", channel: "ampvar", min: 0, max: 1, dfault: 0},
+ {name: "Pitch variation", channel: "pitchvar", min: 0, max: 1, dfault: 0},
+ {name: "Random readpoint", min: 0, max: 1, step: 1, dfault: 1},
+ {preset: "wintype"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Retrigger",
+ instr: "twst_tfi_retriglitch",
+ description: "Repeated window reader",
+ parameters: [
+ {name: "Read mode", channel: "readmode", description: "Sample reading type", options: ["Linear", "Direct", "Scale", "Reverse", "Random"], dfault: 0},
+ {name: "Read position", channel: "readtime", description: "Read time ratio", dfault: 0.5, conditions: [{channel: "readmode", operator: "eq", value: 1}]},
+ {name: "Time scaling", channel: "timescale", description: "Time scaling factor", dfault: 1, min: 0.1, max: 16, conditions: [{channel: "readmode", operator: "eq", value: 2}], automatable: false},
+ {presetgroup: "pitchscale"},
+ {name: "Retrigger length", channel: "triglen", min: 0.01, max: 1, dfault: 0.2, lagHint: 1},
+ {name: "Apply windowing", channel: "applywindowing", step: 1, dfault: 0},
+ {preset: "wintype", conditions:[{channel: "applywindowing", operator: "eq", value: 1}]},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Sample rearrange",
+ instr: "twst_tfi_rearrange",
+ description: "Aleatoric sample range rearrangement",
+ parameters: [
+ {name: "Number of chops", description: "Number of sample rearrangements to apply", channel: "chopnumber", step: 1, min: 1, max: 128, dfault: 16, automatable: false},
+ {name: "Minimum samples", description: "Minimum number of samples to rearrange with each chop", channel: "chopmin", step: 1, min: 1, max: 1000, dfault: 400, automatable: false},
+ {name: "Maximum samples", description: "Maximum number of samples to rearrange with each chop", channel: "chopmax", step: 1, min: 64, max: 10000, dfault: 5000, automatable: false},
+ {name: "Stereo unique", description: "Whether to chop channels independently", channel: "stereounique", step: 1, min: 0, max: 1, dfault: 0, automatable: false},
+ {presetgroup: "applymode"}
+ ]
+ }
+ ]
+ },
+ {
+ name: "Harmonic", contents: [
+ {
+ name: "Parallel resonators",
+ instr: "twst_tf_resony",
+ twine: true,
+ parameters: [
+ {presetgroup: "notefreq"},
+ {name: "Bandwidth", description: "Bandwidth in Hz", dfault: 100, min: 1, max: 500},
+ {name: "Number", channel: "num", description: "Number of resonators", dfault: 8, min: 1, max: 64, step: 1, automatable: false, lagHint: -1},
+ {name: "Separation", description: "Band separation octaves", dfault: 1, min: 1, max: 6, step: 1, lagHint: 1},
+ {name: "Separation mode", channel: "sepmode", description: "Separation mode", options: ["Logarithmic", "Linear"], dfault: 0},
+ {name: "Balance output", channel: "balance", description: "Balance output level to input level", dfault: 1, min: 0, max: 1, step: 1, automatable: 0},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Resonator stack",
+ instr: "twst_tf_resonx",
+ twine: true,
+ parameters: [
+ {presetgroup: "notefreq"},
+ {name: "Bandwidth", description: "Bandwidth in Hz", dfault: 100, min: 1, max: 500},
+ {name: "Number", channel: "num", description: "Number of resonators", dfault: 8, min: 1, max: 64, step: 1, automatable: false, lagHint: -1},
+ {name: "Balance output", channel: "balance", description: "Balance output level to input level", dfault: 1, min: 0, max: 1, step: 1, automatable: 0},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "String resonator",
+ instr: "twst_tf_streson",
+ twine: true,
+ parameters: [
+ {presetgroup: "notefreq"},
+ {name: "Feedback", description: "Feedback gain", dfault: 0.6, min: 0, max: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "MVM resonator",
+ instr: "twst_tf_mvmfilter",
+ twine: true,
+ parameters: [
+ {name: "Frequency", channel: "freq", min: 10, max: 10000, dfault: 800},
+ {name: "Decay time", channel: "decay", min: 0.1, max: 0.8, dfault: 0.2, lagHint: -1},
+ {name: "Balance", channel: "balance", min: 0, max: 1, step: 1, dfault: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Autoharmoniser",
+ instr: "twst_tf_harmon",
+ twine: true,
+ parameters: [
+ {name: "Estimated frequency", channel: "estfreq", min: 10, max: 4000, dfault: 440},
+ {name: "Maximum variance", channel: "maxvar", dfault: 0.2},
+ {name: "Frequency 1 ratio", channel: "genfreq1", min: 0, max: 8, dfault: 2},
+ {name: "Frequency 2 ratio", channel: "genfreq2", min: 0, max: 8, dfault: 4},
+ {name: "Minimum analysis frequency", channel: "minfreq", min: 200, max: 4000, step: 1, dfault: 300, automatable: false, lagHint: 1},
+ {name: "Analysis time", channel: "minfreq", min: 0.01, max: 0.1, dfault: 0.03, automatable: false},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Formant autoharmoniser",
+ instr: "twst_tf_formantharmon",
+ twine: true,
+ parameters: [
+ {name: "Frequency 1 ratio", channel: "genfreq1", min: 0, max: 8, dfault: 2},
+ {name: "Frequency 2 ratio", channel: "genfreq2", min: 0, max: 8, dfault: 3},
+ {name: "Frequency 3 ratio", channel: "genfreq3", min: 0, max: 8, dfault: 4},
+ {name: "Frequency 4 ratio", channel: "genfreq4", min: 0, max: 8, dfault: 5},
+ {name: "Minimum frequency", channel: "minfreq", min: 20, max: 4000, step: 1, dfault: 100, automatable: false},
+ {name: "Polarity", min: 0, max: 1, step: 1, dfault: 1, automatable: false},
+ {name: "Analysis window time", channel: "pupdate", min: 0.001, max: 0.1, dfault: 0.01, automatable: false, lagHint: 1},
+ {name: "Analysis bottom frequency", channel: "plowfreq", min: 20, max: 1000, dfault: 100, automatable: false, lagHint: 1},
+ {name: "Analysis top frequency", channel: "phighfreq", min: 1000, max: 22000, dfault: 20000, automatable: false, lagHint: -1},
+ {name: "Analysis threshold", channel: "pthresh", min: 0, max: 1, dfault: 0.4, automatable: false},
+ {name: "Analysis octave divisions", channel: "pfrqs", min: 1, max: 120, dfault: 12, step: 1, automatable: false, lagHint: 1},
+ {name: "Analysis confirmations", channel: "pconfirms", min: 1, max: 40, dfault: 10, step: 1, automatable: false, lagHint: -1},
+ {presetgroup: "applymode"}
+ ]
+ }
+ ]
+ },
+ {
+ name: "Warping", contents: [
+ {
+ name: "Paulstretch",
+ instr: "twst_tfi_paulstretch",
+ description: "Extreme timestretch",
+ parameters: [
+ {name: "Stretch ratio", channel: "stretch", description: "Ratio to stretch by", dfault: 2, min: 1, max: 20, automatable: false},
+ {name: "Window size", channel: "winsize", description: "Window size used for stretch", dfault: 0.5, min: 0.1, max: 5, automatable: false, lagHint: -1}
+ ]
+ },
+ {
+ name: "Freeze",
+ instr: "twst_tf_freeze",
+ description: "Frequency domain freezing",
+ twine: true,
+ parameters: [
+ {name: "Freeze amp", channel: "freezeamp", description: "Freeze amplitudes", min: 0, max: 1, dfault: 1, step: 1},
+ {name: "Freeze frequency", channel: "freezefreq", description: "Freeze frequencies", min: 0, max: 1, dfault: 1, step: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Waveset",
+ instr: "twst_tf_waveset",
+ description: "Repeat wave cycles",
+ twine: true,
+ parameters: [
+ {name: "Repetitions", channel: "reps", description: "Number of samples repetition in stretch", min: 1, max: 64, dfault: 2, step: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Blur",
+ instr: "twst_tf_blur",
+ description: "Frequency domain time blurring",
+ twine: true,
+ parameters: [
+ {name: "Blur time", channel: "time", description: "Blur time in seconds", min: 0.01, max: 3, dfault: 0.4, lagHint: -1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Spectral pitch scale",
+ instr: "twst_tf_fftpitchscale",
+ description: "Formant preserving pitch shifter",
+ twine: true,
+ parameters: [
+ {presetgroup: "pitchscale"},
+ {name: "Keep formants", channel: "formants", description: "Preserve formants", dfault: 0, min: 0, max: 1, step: 1},
+ {name: "Formant coefficients", channel: "formantcoefs", description: "Number of formants in preservation", dfault: 80, min: 1, max: 120, step: 1, conditions: [{channel: "formants", operator: "eq", value: 1}]},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Hilbert pitch scale",
+ instr: "twst_tf_hilbertpitchscale",
+ description: "Hilbert transform based pitch shifter",
+ twine: true,
+ parameters: [
+ {presetgroup: "pitchscale"},
+ {preset: "fftsize"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Autotune",
+ instr: "twst_tf_autotune",
+ description: "Formant preserving autotune pitch shifter",
+ twine: true,
+ parameters: [
+ {name: "Threshold", channel: "threshold", description: "Pitch detection threshold", dfault: 0.01, min: 0.001, max: 0.2},
+ {name: "Keep formants", channel: "formants", description: "Preserve formants", dfault: 0, min: 0, max: 1, step: 1},
+ {name: "Formant coefficients", channel: "formantcoefs", description: "Number of formants in preservation", dfault: 80, min: 1, max: 120, step: 1, conditions: [{channel: "formants", operator: "eq", value: 1}]},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Window reader",
+ instr: "twst_tfi_sndwarp",
+ description: "Windowed playback",
+ parameters: [
+ {name: "Read mode", channel: "readmode", description: "Sample reading type", options: ["Linear", "Direct", "Scale", "Reverse"], dfault: 0},
+ {name: "Read position", channel: "readtime", description: "Read time ratio", dfault: 0.5, conditions: [{channel: "readmode", operator: "eq", value: 1}]},
+ {name: "Time scaling", channel: "timescale", description: "Time scaling factor", dfault: 1, min: 0.1, max: 16, conditions: [{channel: "readmode", operator: "eq", value: 2}], automatable: false},
+ {presetgroup: "pitchscale"},
+ {name: "Window size", channel: "winsize", description: "Window size", min: 256, max: 10000, dfault: 4410, step: 1, automatable: false, lagHint: -1},
+ {name: "Window randomness", channel: "winrand", description: "Randomness in window size", min: 0, max: 1000, dfault: 441, step: 1, automatable: false},
+ {name: "Window overlap", channel: "overlap", description: "Overlap number", min: 1, max: 32, dfault: 4, step: 1, automatable: false, lagHint: -1},
+ {preset: "wintype"}
+ ]
+ },
+ {
+ name: "FFT reader",
+ instr: "twst_tfi_mincer",
+ description: "Frequency domain playback",
+ parameters: [
+ {name: "Read mode", channel: "readmode", description: "Sample reading type", options: ["Linear", "Direct", "Scale", "Reverse"], dfault: 0},
+ {name: "Read position", channel: "readtime", description: "Read time ratio", dfault: 0.5, conditions: [{channel: "readmode", operator: "eq", value: 1}]},
+ {name: "Time scaling", channel: "timescale", description: "Time scaling factor", dfault: 1, min: 0.1, max: 16, conditions: [{channel: "readmode", operator: "eq", value: 2}], automatable: false},
+ {presetgroup: "pitchscale"},
+ {name: "Phase lock", channel: "phaselock", description: "Lock phase when resynthesising", dfault: 0, min: 0, max: 1, step: 1},
+ {preset: "fftsize"},
+ {name: "Overlap decimation", options: [2, 4, 8, 16], asvalue: true, dfault: 1, channel: "decimation", automatable: false, lagHint: -1}
+ ]
+ },
+ {
+ name: "Sample holder",
+ instr: "twst_tf_smphold",
+ twine: true,
+ parameters: [
+ {name: "Ratio", description: "Inverse ratio of samples to be held in a block period", min: 0.000001},
+ {presetgroup: "applymode"}
+ ]
+ }
+ ]
+ },
+ {
+ name: "Cross processing", contents: [
+ {
+ name: "Cross synth",
+ instr: "twst_tf_crosssynth",
+ description: "Amplitude based cross synthesis",
+ inputs: 2,
+ parameters: [
+ {preset: "instance"},
+ {preset: "instanceloop"},
+ {name: "Current amp", channel: "amp1", description: "Ratio of current amplitude to use", dfault: 1, min: 0, max: 1},
+ {name: "Target amp", channel: "amp2", description: "Ratio of target amplitude to use", dfault: 1, min: 0, max: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Direct convolution",
+ instr: "twst_tf_directconvolve",
+ description: "Convolution",
+ inputs: 2,
+ parameters: [
+ {preset: "instance"},
+ {preset: "amp"},
+ {name: "Size ratio", min: 0.00001, max: 1, dfault: 0.1, lagHint: -1, channel: "sizeratio", automatable: false},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Block convolution",
+ instr: "twst_tf_blockconvolve",
+ description: "Short term frequency domain convolution",
+ inputs: 2,
+ parameters: [
+ {preset: "instance"},
+ {preset: "instanceloop"},
+ {preset: "fftsize", dfault: 2},
+ {name: "Overlap", min: 1, max: 8, step: 1, dfault: 2, lagHint: -1},
+ {presetgroup: "applymode"}
+ ]
+ }, /* not in WASM at current
+ {
+ name: "DFT/FIR convolve",
+ instr: "twst_tf_tvconv",
+ inputs: 2,
+ parameters: [
+ {preset: "instance"},
+ {preset: "instanceloop"},
+ {name: "Update source", channel: "apply1", min: 0, max: 1, step: 1, dfault: 1},
+ {name: "Update destination", channel: "apply2", min: 0, max: 1, step: 1, dfault: 1},
+ {name: "Mode", options: ["DFT", "FIR"]},
+ {name: "Partition size", channel: "parts", options: [16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192], dfault: 5, asvalue: true, conditions: [{channel: "mode", operator: "eq", value: 0}]},
+ {name: "Filter size", channel: "dftfiltersize", options: [16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192], dfault: 5, asvalue: true, conditions: [{channel: "mode", operator: "eq", value: 0}]},
+ {name: "Filter size", channel: "firfiltersize", min: 2, max: 8192, dfault: 512, conditions: [{channel: "mode", operator: "eq", value: 1}]},
+ {presetgroup: "applymode"}
+ ]
+ }, */
+ {
+ name: "Morph",
+ instr: "twst_tf_morph",
+ description: "Amplitude and frequency cross synthesis",
+ inputs: 2,
+ parameters: [
+ {preset: "instance", name: "Cross instance"},
+ {preset: "instanceloop"},
+ {name: "Amplitude amount", channel: "amp", description: "Amplitude interpolation", dfault: 1, min: 0, max: 1},
+ {name: "Frequency amount", channel: "freq", description: "Frequency interpolation", dfault: 1, min: 0, max: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Concatenative resynthesis",
+ instr: "twst_tf_mfccmatch",
+ description: "Map nearest perceptually similar segments",
+ inputs: 2,
+ parameters: [
+ {preset: "instance", name: "Corpus"},
+ {preset: "instanceloop"},
+ {preset: "fftsize"},
+ {name: "Minimum frequency", channel: "freqmin", description: "Minimum frequency to account for", dfault: 100, min: 30, max: 1000, automatable: false, lagHint: 1},
+ {name: "Maximum frequency", channel: "freqmax", description: "Maximum frequency to account for", dfault: 4000, min: 1000, max: 20000, automatable: false, lagHint: -1},
+ {name: "Bands", channel: "bands", description: "Number of frequency bands to use", dfault: 3, options:[2, 4, 8, 16, 32, 64], asvalue: true, automatable: false, lagHint: -1},
+ {name: "Stretch", channel: "stretch", description: "Read stretch", dfault: 0.35, min: 0.1, max: 2.5},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Cross rearrange",
+ instr: "twst_tf_crossrearrange",
+ description: "Select chunks from all open instances",
+ added: "2025-04-17",
+ parameters: [
+ {name: "Minimum samples", channel: "minsamples", description: "Minimum number of samples to chop", dfault: 4410, min: 10, max: 10000},
+ {name: "Maximum samples", channel: "maxsamples", description: "Maximum number of samples to chop", dfault: 10000, min: 1000, max: 50000},
+ {name: "Change rate", channel: "rate", description: "Rate of rearrangement change", dfault: 4, min: 0.1, max: 20},
+ {name: "Stereo unique", channel: "stereounique", description: "Stereo independent rearrangement", dfault: 1, min: 0, max: 1, step: 1},
+ {presetgroup: "applymode"}
+ ]
+ }
+ ]
+ },
+ {
+ name: "Spectral", contents: [
+ {
+ name: "Spectral autoglitch",
+ instr: "twst_tf_spectralautoglitch",
+ description: "Automatic frequency domain glitcher",
+ twine: true,
+ parameters: [
+ {name: "Change rate", channel: "changerate", description: "Rate of change", dfault: 1, min: 0.1, max: 10, lagHint: -1},
+ {name: "Change chance", channel: "changechance", description: "Chance of change", dfault: 0.5, min: 0, max: 1, lagHint: -1},
+ {name: "Portamento time", channel: "porttime", description: "Reading position glide", dfault: 0.1, min: 0.001, max: 0.5},
+ {name: "Alter pitch", channel: "pitchalter", description: "Apply pitch alterations", dfault: 0, min: 0, max: 1, step: 1},
+ {preset: "fftsize"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Delay",
+ instr: "twst_tf_spectraldelay",
+ description: "Frequency domain bin-independent delay",
+ unstable: true,
+ parameters: [
+ {name: "Delay time", channel: "time", description: "Delay time in seconds", dfault: 0.03, min: 0.01, max: 0.4, lagHint: -1},
+ {name: "Delay time add", channel: "add", description: "Delay time addition with each step", dfault: 0.001, min: 0, max: 0.2, lagHint: -1},
+ {name: "Portamento", channel: "porttime", description: "Resynthesis oscillator portamento time in seconds", dfault: 0.01, min: 0.01, max: 0.1},
+ {presetgroup: "pitchscale"},
+ {name: "Frequency bottom ratio", automatable: false, channel: "start", description: "Resynthesis bin start", dfault: 0, lagHint: 1},
+ {name: "Frequency top ratio", automatable: false, channel: "end", description: "Resynthesis bin end", dfault: 0.3, lagHint: -1},
+ {name: "Resynthesis waveform", preset: "wave"},
+ {presetgroup: "pvanal"},
+ {presetgroup: "applymode"}
+ ]
+ },/* not in WASM
+ {
+ name: "Trace",
+ instr: "twst_tf_trace",
+ twine: true,
+ description: "Retain only a selected number of the loudest bins",
+ parameters: [
+ {name: "Number of bins (ratio)", description: "Number of frequency bins to retain", dfault: 0.5, min: 0, max: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "applymode"}
+ ]
+ },*/
+ {
+ name: "Isolator",
+ instr: "twst_tf_isolator",
+ description: "Isolate an analysis bin",
+ twine: true,
+ parameters: [
+ {name: "Bin (ratio)", description: "Bin to use", dfault: 0.1, min: 0, max: 1, channel: "bin"},
+ {name: "Attenuation", description: "Bin attenuation", dfault: 1, min: 0, max: 1},
+ {name: "Accentuation", description: "Bin accentuation", dfault: 1, min: 0, max: 2},
+ {presetgroup: "pvanal"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Shift",
+ instr: "twst_tf_spectralshift",
+ description: "Frequency shifter in the spectral domain",
+ twine: true,
+ parameters: [
+ {name: "Shift", channel: "freqincr", description: "Frequency addition per bin", dfault: 0, min: -100, max: 100},
+ {name: "Portamento", channel: "porttime", description: "Resynthesis oscillator portamento time in seconds", dfault: 0.01, min: 0.01, max: 0.1},
+ {presetgroup: "pitchscale"},
+ {name: "Frequency bottom ratio", automatable: false, channel: "start", description: "Resynthesis bin start", dfault: 0, lagHint: 1},
+ {name: "Frequency top ratio", dfault: 0.3, automatable: false, channel: "end", description: "Resynthesis bin end", lagHint: -1},
+ {name: "Resynthesis waveform", preset: "wave"},
+ {presetgroup: "pvanal"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Gate",
+ instr: "twst_tf_spectralgate",
+ description: "Analysis bin-independent gate",
+ twine: true,
+ parameters: [
+ {name: "Threshold", description: "Gate threshold", dfault: 0.01, min: 0, max: 0.2},
+ {name: "Hold", description: "Hold or decay frequencies", dfault: 0, min: 0, max: 1, step: 1},
+ {name: "Portamento", channel: "porttime", description: "Resynthesis oscillator portamento time in seconds", dfault: 0.01, min: 0.01, max: 0.1},
+ {presetgroup: "pitchscale"},
+ {name: "Frequency bottom ratio", automatable: false, channel: "start", description: "Resynthesis bin start", dfault: 0, lagHint: 1},
+ {name: "Frequency top ratio", dfault: 0.3, automatable: false, channel: "end", description: "Resynthesis bin end", lagHint: -1},
+ {name: "Resynthesis waveform", preset: "wave"},
+ {presetgroup: "pvanal"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Granular",
+ instr: "twst_tfi_spectralgrain1",
+ description: "Frequency domain granular synthesis",
+ parameters: [
+ {name: "Grain duration", channel: "graindur", description: "Duration of grains in seconds", min: 0.05, max: 2, dfault: 0.2},
+ {name: "Overlaps", channel: "layers", description: "Layers of grains", min: 1, max: 6, dfault: 1, step: 1, automatable: false},
+ {name: "Rate randomness", channel: "freqrand", description: "Read rate randomness", min: 1, max: 3, dfault: 1},
+ {name: "Duration randomness", channel: "durrand", description: "Grain duration randomness", min: 1, max: 3, dfault: 1},
+ {name: "Pitch randomness", channel: "pitchrand", description: "Grain pitch randomness", min: 1, max: 3, dfault: 1},
+ {name: "Read mode", channel: "readmode", description: "Grain reading mode", options: ["Linear", "Direct", "Scale", "Reverse"], dfault: 0},
+ {name: "Read position", channel: "readtime", description: "Read time ratio", dfault: 0.5, conditions: [{channel: "readmode", operator: "eq", value: 1}]},
+ {name: "Time scaling", channel: "timescale", description: "Time scaling factor", dfault: 1, min: 0.1, max: 10, conditions: [{channel: "readmode", operator: "eq", value: 2}], automatable: false},
+ {name: "Portamento", channel: "porttime", description: "Resynthesis oscillator portamento time in seconds", dfault: 0.01, min: 0.01, max: 0.1},
+ {presetgroup: "pitchscale"},
+ {name: "Frequency bottom ratio", automatable: false, channel: "start", description: "Resynthesis bin start", dfault: 0, lagHint: 1},
+ {name: "Frequency top ratio", dfault: 0.3, automatable: false, channel: "end", description: "Resynthesis bin end", lagHint: -1},
+ {name: "Resynthesis waveform", preset: "wave"},
+ {presetgroup: "pvanal"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Residuals",
+ instr: "twst_tf_residual",
+ description: "Spectral resynthesis residuals",
+ twine: true,
+ parameters: [
+ {preset: "fftsize"}
+ ]
+ },
+ /*{
+ name: "Stencil",
+ instr: "twst_tf_stencil",
+ unstable: true,
+ inputs: 2,
+ parameters: [
+ {preset: "instance"},
+ {preset: "instanceloop"},
+ {name: "Gain", description: "Pre processing gain", dfault: 1},
+ {name: "Level", description: "Level of transformation", dfault: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+
+ },*/
+ {
+ name: "Bubble",
+ instr: "twst_tf_tpvbubble",
+ description: "Randomly reset bin amplitudes to zero",
+ twine: true,
+ parameters: [
+ {name: "Chance", description: "Chance of resetting bin amplitudes to 0", dfault: 0.5},
+ {name: "Stereo unique", channel: "stereounique", description: "Whether to apply channel independently", dfault: 1, min: 0, max: 1, step: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Smear",
+ instr: "twst_tf_tpvsmear",
+ description: "Delay bin amplitudes",
+ twine: true,
+ parameters: [
+ {name: "Maximum frames", channel: "maxframes", description: "Maximum number of frames to be used", automatable: false, min: 4, max: 32, step: 1, dfault: 16},
+ {name: "Frames", description: "Number of frames to be used", min: 4, max: 32, step: 1, dfault: 16},
+ {name: "Average frequencies", channel: "avgfreqs", description: "Average frequencies as well as smearing amplitudes", min: 0, max: 1, step: 1, dfault: 1},
+ {name: "Include original", channel: "includeoriginal", description: "Include original frames in output", min: 0, max: 1, step: 1, dfault: 0},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Read",
+ instr: "twst_tf_spectralread",
+ description: "Frequency domain sample reader",
+ parameters: [
+ {name: "Read position", channel: "readtime", description: "Read time ratio", dfault: 0},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Partial reconstruction",
+ instr: "twst_tf_partialreconstruction",
+ description: "Streaming partials resynthesis",
+ twine: true,
+ parameters: [
+ {name: "Threshold", description: "Analysis threshold factor", dfault: 0.5},
+ {name: "Minimum points", channel: "minpoints", description: "Minimum analysis points", dfault: 1, min: 1, max: 10, lagHint: 1},
+ {name: "Maximum gap", channel: "maxgap", description: "Maximum gap between analysis points", dfault: 3, min: 1, max: 10, lagHint: 1},
+ {name: "Maximum analysis tracks", channel: "anlmaxtracks", description: "Maximum number of frequency tracks in analysis", automatable: false, lagHint: -1},
+ {name: "Amplitude scale", channel: "ampscale", description: "Amplitude scaling"},
+ {presetgroup: "pitchscale"},
+ {name: "Maximum resynth tracks", channel: "resmaxtracks", description: "Maximum number of frequency tracks in resynthesis", lagHint: -1},
+ {preset: "fftsize"},
+ {preset: "wave"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Invert",
+ instr: "twst_tf_tpvinvert",
+ description: "Invert frequency and/or amplitude",
+ twine: true,
+ parameters: [
+ {name: "Invert frequency", channel: "invertfreq", description: "Perform inversion of frequency", dfault: 1, min: 0, max: 1, step: 1},
+ {name: "Invert amplitude", channel: "invertamp", description: "Perform inversion of amplitude", dfault: 1, min: 0, max: 1, step: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth", dfault: 1},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Scramble",
+ instr: "twst_tf_tpvscramble",
+ twine: true,
+ description: "Randomly reassign amplitude and/or frequency",
+ parameters: [
+ {name: "Sanity", channel: "step", description: "Retention of sanity in scrambling", dfault: 0, min: 0, max: 1},
+ {name: "Amplitude", channel: "scrambleamp", description: "Apply scrambling to amplitude", dfault: 1, min: 0, max: 1, step: 1},
+ {name: "Frequency", channel: "scramblefreq", description: "Apply scrambling to frequency", dfault: 1, min: 0, max: 1, step: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Frame gate",
+ instr: "twst_tf_tpvthreshold",
+ twine: true,
+ description: "Bin-independent spectral gate",
+ parameters: [
+ {name: "Threshold", description: "Amplitude threshold", dfault: 0.5, min: 0, max: 1},
+ {name: "Direction", description: "Apply to above or below threshold", dfault: 0, min: 0, max: 1, step: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Frame freeze",
+ instr: "twst_tf_tpvfreeze",
+ twine: true,
+ description: "Freeze analysis frames",
+ parameters: [
+ {name: "Freeze amount", channel: "freeze", description: "Freeze amount", dfault: 1, min: 0, max: 1},
+ {name: "Freeze amplitude", channel: "freezeamp", description: "Apply amplitude freeze", dfault: 0, min: 0, max: 1, step: 1},
+ {name: "Freeze frequency", channel: "freezefreq", description: "Apply amplitude freeze", dfault: 0, min: 0, max: 1, step: 1},
+ {name: "Apply crossfades", channel: "crossfade", dfault: 0, min: 0, max: 1, step: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Average",
+ instr: "twst_tf_tpvaverage",
+ twine: true,
+ description: "Time-average frequency and/or amplitudes",
+ parameters: [
+ {name: "Average amplitudes", channel: "avgamp", dfault: 0, min: 0, max: 1, step: 1},
+ {name: "Average frequencies", channel: "avgfreq", dfault: 1, min: 0, max: 1, step: 1},
+ {name: "Maximum frames", description: "Maximum frames in average window", channel: "maxframes", dfault: 16, min: 2, max: 512, step: 1, lagHint: -1},
+ {name: "Rate", description: "Rate of averaging in Hz", dfault: 1, min: 0.1, max: 10, lagHint: -1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Wrap",
+ instr: "twst_tf_tpvwrap",
+ twine: true,
+ description: "Wrap amplitude and/or frequency bins",
+ parameters: [
+ {name: "Amplitude wrap bin ratio", channel: "wrapampbin", dfault: 0, min: 0, max: 3},
+ {name: "Frequency wrap bin ratio", channel: "wrapfreqbin", dfault: 1, min: 0, max: 3},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Swap",
+ instr: "twst_tf_tpvswap",
+ twine: true,
+ description: "Swap amplitude and/or frequency bin ranges",
+ parameters: [
+ {name: "Amplitude start bin ratio", channel: "ampstart"},
+ {name: "Amplitude length bin ratio", channel: "amplength", dfault: 0.1},
+ {name: "Amplitude target bin ratio", channel: "amptarget"},
+ {name: "Frequency start bin ratio", channel: "freqstart"},
+ {name: "Frequency length bin ratio", channel: "freqlength", dfault: 0.1},
+ {name: "Frequency target bin ratio", channel: "freqtarget"},
+ {name: "Wrap mode", channel: "wrapmode", options: ["Limit", "Wrap"], dfault: 1, automatable: true},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Centroid oscillator",
+ instr: "twst_tf_centroidoscillator",
+ twine: true,
+ description: "Oscillate at the analysed spectral centroid",
+ parameters: [
+ {preset: "wave", automatable: true},
+ {presetgroup: "pitchscale"},
+ {name: "Portamento time", channel: "porttime", description: "Reading position glide", dfault: 0.01, min: 0.001, max: 0.3},
+ {presetgroup: "pvanal"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Bin oscillator",
+ instr: "twst_tf_binoscillator",
+ twine: true,
+ description: "Resynthesise a single analysis bin",
+ parameters: [
+ {name: "Bin ratio", channel: "bin", description: "Frequency bin ratio", dfault: 0.1, min: 0, max: 1},
+ {preset: "wave", automatable: true},
+ {presetgroup: "pitchscale"},
+ {name: "Portamento time", channel: "porttime", description: "Reading position glide", dfault: 0.01, min: 0.001, max: 0.3},
+ {presetgroup: "pvanal"},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Stochastic subtractive",
+ instr: "twst_tf_subtractive",
+ description: "Parametric aleatoric subtractive synthesis",
+ twine: true,
+ unstable: true,
+ parameters: [
+ {preset: "amp", automatable: false},
+ {presetgroup: "notefreq", nameprepend: "Minimum", dfault: 440, channelprepend: "min", automatable: false, lagHint: 1},
+ {presetgroup: "notefreq", nameprepend: "Maximum", dfault: 8000, channelprepend: "max", automatable: false, lagHint: -1},
+ {name: "Frequency increment", channel: "step", automatable: false, min: 1.1, max: 2, dfault: 1, lagHint: 1},
+ {name: "Frequency randomness", channel: "steprand", automatable: false, min: 1, max: 1.5, dfault: 1},
+ {name: "Amplitude increment", channel: "ampmult", automatable: false, min: 0.2, max: 1, dfault: 0.6},
+ {presetgroup: "applymode"}
+ ]
+ },
+ {
+ name: "Phase masher",
+ instr: "twst_tf_phasemash",
+ twine: true,
+ description: "Phase modification and reset",
+ parameters: [
+ {name: "Replace phase", min: 0, max: 1, step: 1, dfault: 0, channel: "phasereplace"},
+ {name: "Phase alteration", min: 0, max: 1, dfault: 0.5, channel: "phasevalue"},
+ {preset: "fftsize"},
+ {presetgroup: "applymode"}
+ ]
+ }
+ ]
+ }
+ ]
+}; \ No newline at end of file
diff --git a/site/app/twirl/font/Chicago.woff b/site/app/twirl/font/Chicago.woff
new file mode 100644
index 0000000..0ae3393
--- /dev/null
+++ b/site/app/twirl/font/Chicago.woff
Binary files differ
diff --git a/site/app/twirl/font/JosefinSans.ttf b/site/app/twirl/font/JosefinSans.ttf
new file mode 100644
index 0000000..00ea1e7
--- /dev/null
+++ b/site/app/twirl/font/JosefinSans.ttf
Binary files differ
diff --git a/site/app/twirl/font/NationalPark-Regular.woff b/site/app/twirl/font/NationalPark-Regular.woff
new file mode 100644
index 0000000..7766e9b
--- /dev/null
+++ b/site/app/twirl/font/NationalPark-Regular.woff
Binary files differ
diff --git a/site/app/twirl/font/Nouveau_IBM.woff b/site/app/twirl/font/Nouveau_IBM.woff
new file mode 100644
index 0000000..0912b18
--- /dev/null
+++ b/site/app/twirl/font/Nouveau_IBM.woff
Binary files differ
diff --git a/site/app/twirl/icon/areaSelect.svg b/site/app/twirl/icon/areaSelect.svg
new file mode 100644
index 0000000..dc0549c
--- /dev/null
+++ b/site/app/twirl/icon/areaSelect.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-dashed-mouse-pointer"><path d="M12.034 12.681a.498.498 0 0 1 .647-.647l9 3.5a.5.5 0 0 1-.033.943l-3.444 1.068a1 1 0 0 0-.66.66l-1.067 3.443a.5.5 0 0 1-.943.033z"/><path d="M5 3a2 2 0 0 0-2 2"/><path d="M19 3a2 2 0 0 1 2 2"/><path d="M5 21a2 2 0 0 1-2-2"/><path d="M9 3h1"/><path d="M9 21h2"/><path d="M14 3h1"/><path d="M3 9v1"/><path d="M21 9v2"/><path d="M3 14v1"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/arrowsUpDown.svg b/site/app/twirl/icon/arrowsUpDown.svg
new file mode 100644
index 0000000..8ecaa91
--- /dev/null
+++ b/site/app/twirl/icon/arrowsUpDown.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-down"><path d="m21 16-4 4-4-4"/><path d="M17 20V4"/><path d="m3 8 4-4 4 4"/><path d="M7 4v16"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/audition.svg b/site/app/twirl/icon/audition.svg
new file mode 100644
index 0000000..d4a3dea
--- /dev/null
+++ b/site/app/twirl/icon/audition.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-volume-2"><path d="M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"/><path d="M16 9a5 5 0 0 1 0 6"/><path d="M19.364 18.364a9 9 0 0 0 0-12.728"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/automate.svg b/site/app/twirl/icon/automate.svg
new file mode 100644
index 0000000..16a9705
--- /dev/null
+++ b/site/app/twirl/icon/automate.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chart-spline"><path d="M3 3v16a2 2 0 0 0 2 2h16"/><path d="M7 16c.5-2 1.5-7 4-7 2 0 2 3 4 3 2.5 0 4.5-5 5-7"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/brightnessDecrease.svg b/site/app/twirl/icon/brightnessDecrease.svg
new file mode 100644
index 0000000..4685dae
--- /dev/null
+++ b/site/app/twirl/icon/brightnessDecrease.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun-dim"><circle cx="12" cy="12" r="4"/><path d="M12 4h.01"/><path d="M20 12h.01"/><path d="M12 20h.01"/><path d="M4 12h.01"/><path d="M17.657 6.343h.01"/><path d="M17.657 17.657h.01"/><path d="M6.343 17.657h.01"/><path d="M6.343 6.343h.01"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/brightnessIncrease.svg b/site/app/twirl/icon/brightnessIncrease.svg
new file mode 100644
index 0000000..12f688b
--- /dev/null
+++ b/site/app/twirl/icon/brightnessIncrease.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun-medium"><circle cx="12" cy="12" r="4"/><path d="M12 3v1"/><path d="M12 20v1"/><path d="M3 12h1"/><path d="M20 12h1"/><path d="m18.364 5.636-.707.707"/><path d="m6.343 17.657-.707.707"/><path d="m5.636 5.636.707.707"/><path d="m17.657 17.657.707.707"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/close.svg b/site/app/twirl/icon/close.svg
new file mode 100644
index 0000000..fa22a65
--- /dev/null
+++ b/site/app/twirl/icon/close.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-x"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><path d="m15 9-6 6"/><path d="m9 9 6 6"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/commit.svg b/site/app/twirl/icon/commit.svg
new file mode 100644
index 0000000..b00c67b
--- /dev/null
+++ b/site/app/twirl/icon/commit.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-import"><path d="M12 3v12"/><path d="m8 11 4 4 4-4"/><path d="M8 5H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-4"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/copy.svg b/site/app/twirl/icon/copy.svg
new file mode 100644
index 0000000..84d777d
--- /dev/null
+++ b/site/app/twirl/icon/copy.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard-copy"><rect width="8" height="4" x="8" y="2" rx="1" ry="1"/><path d="M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/><path d="M16 4h2a2 2 0 0 1 2 2v4"/><path d="M21 14H11"/><path d="m15 10-4 4 4 4"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/crossfade.svg b/site/app/twirl/icon/crossfade.svg
new file mode 100644
index 0000000..ca5f34e
--- /dev/null
+++ b/site/app/twirl/icon/crossfade.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-flip-horizontal-2"><path d="m3 7 5 5-5 5V7"/><path d="m21 7-5 5 5 5V7"/><path d="M12 20v2"/><path d="M12 14v2"/><path d="M12 8v2"/><path d="M12 2v2"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/cut.svg b/site/app/twirl/icon/cut.svg
new file mode 100644
index 0000000..ca0a485
--- /dev/null
+++ b/site/app/twirl/icon/cut.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-scissors"><circle cx="6" cy="6" r="3"/><path d="M8.12 8.12 12 12"/><path d="M20 4 8.12 15.88"/><circle cx="6" cy="18" r="3"/><path d="M14.8 14.8 20 20"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/delete.svg b/site/app/twirl/icon/delete.svg
new file mode 100644
index 0000000..b1d974f
--- /dev/null
+++ b/site/app/twirl/icon/delete.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-delete"><path d="M10 5a2 2 0 0 0-1.344.519l-6.328 5.74a1 1 0 0 0 0 1.481l6.328 5.741A2 2 0 0 0 10 19h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2z"/><path d="m12 9 6 6"/><path d="m18 9-6 6"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/develop.svg b/site/app/twirl/icon/develop.svg
new file mode 100644
index 0000000..9d3f535
--- /dev/null
+++ b/site/app/twirl/icon/develop.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-codepen"><polygon points="12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2"/><line x1="12" x2="12" y1="22" y2="15.5"/><polyline points="22 8.5 12 15.5 2 8.5"/><polyline points="2 15.5 12 8.5 22 15.5"/><line x1="12" x2="12" y1="2" y2="8.5"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/ear.svg b/site/app/twirl/icon/ear.svg
new file mode 100644
index 0000000..d2cb61a
--- /dev/null
+++ b/site/app/twirl/icon/ear.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-ear"><path d="M6 8.5a6.5 6.5 0 1 1 13 0c0 6-6 6-6 10a3.5 3.5 0 1 1-7 0"/><path d="M15 8.5a2.5 2.5 0 0 0-5 0v1a2 2 0 1 1 0 4"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/fileVolume.svg b/site/app/twirl/icon/fileVolume.svg
new file mode 100644
index 0000000..ee81c71
--- /dev/null
+++ b/site/app/twirl/icon/fileVolume.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-volume-2"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M8 15h.01"/><path d="M11.5 13.5a2.5 2.5 0 0 1 0 3"/><path d="M15 12a5 5 0 0 1 0 6"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/hand.svg b/site/app/twirl/icon/hand.svg
new file mode 100644
index 0000000..b258330
--- /dev/null
+++ b/site/app/twirl/icon/hand.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-hand"><path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2"/><path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/hide.svg b/site/app/twirl/icon/hide.svg
new file mode 100644
index 0000000..1b66ce0
--- /dev/null
+++ b/site/app/twirl/icon/hide.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"/><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"/><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"/><path d="m2 2 20 20"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/horizontalArrows.svg b/site/app/twirl/icon/horizontalArrows.svg
new file mode 100644
index 0000000..3187142
--- /dev/null
+++ b/site/app/twirl/icon/horizontalArrows.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-horizontal"><path d="m18 8 4 4-4 4"/><path d="M2 12h20"/><path d="m6 8-4 4 4 4"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/horizontalFold.svg b/site/app/twirl/icon/horizontalFold.svg
new file mode 100644
index 0000000..4c80762
--- /dev/null
+++ b/site/app/twirl/icon/horizontalFold.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fold-horizontal"><path d="M2 12h6"/><path d="M22 12h-6"/><path d="M12 2v2"/><path d="M12 8v2"/><path d="M12 14v2"/><path d="M12 20v2"/><path d="m19 9-3 3 3 3"/><path d="m5 15 3-3-3-3"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/lasso.svg b/site/app/twirl/icon/lasso.svg
new file mode 100644
index 0000000..bbf7602
--- /dev/null
+++ b/site/app/twirl/icon/lasso.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lasso"><path d="M7 22a5 5 0 0 1-2-4"/><path d="M3.3 14A6.8 6.8 0 0 1 2 10c0-4.4 4.5-8 10-8s10 3.6 10 8-4.5 8-10 8a12 12 0 0 1-5-1"/><path d="M5 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/loop.svg b/site/app/twirl/icon/loop.svg
new file mode 100644
index 0000000..b5eef47
--- /dev/null
+++ b/site/app/twirl/icon/loop.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-repeat-2"><path d="m2 9 3-3 3 3"/><path d="M13 18H7a2 2 0 0 1-2-2V6"/><path d="m22 15-3 3-3-3"/><path d="M11 6h6a2 2 0 0 1 2 2v10"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/modulate.svg b/site/app/twirl/icon/modulate.svg
new file mode 100644
index 0000000..891ded8
--- /dev/null
+++ b/site/app/twirl/icon/modulate.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-audio-waveform"><path d="M2 13a2 2 0 0 0 2-2V7a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0V4a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0v-4a2 2 0 0 1 2-2"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/move.svg b/site/app/twirl/icon/move.svg
new file mode 100644
index 0000000..1f839f4
--- /dev/null
+++ b/site/app/twirl/icon/move.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move"><path d="M12 2v20"/><path d="m15 19-3 3-3-3"/><path d="m19 9 3 3-3 3"/><path d="M2 12h20"/><path d="m5 9-3 3 3 3"/><path d="m9 5 3-3 3 3"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/paste.svg b/site/app/twirl/icon/paste.svg
new file mode 100644
index 0000000..0f94433
--- /dev/null
+++ b/site/app/twirl/icon/paste.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard-paste"><path d="M15 2H9a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1Z"/><path d="M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M16 4h2a2 2 0 0 1 2 2v2M11 14h10"/><path d="m17 10 4 4-4 4"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/pasteSpecial.svg b/site/app/twirl/icon/pasteSpecial.svg
new file mode 100644
index 0000000..387b56b
--- /dev/null
+++ b/site/app/twirl/icon/pasteSpecial.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-clipboard-pen"><rect width="8" height="4" x="8" y="2" rx="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-5.5"/><path d="M4 13.5V6a2 2 0 0 1 2-2h2"/><path d="M13.378 15.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/pencil.svg b/site/app/twirl/icon/pencil.svg
new file mode 100644
index 0000000..8d5e050
--- /dev/null
+++ b/site/app/twirl/icon/pencil.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-pencil"><path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/><path d="m15 5 4 4"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/play.svg b/site/app/twirl/icon/play.svg
new file mode 100644
index 0000000..f089aa1
--- /dev/null
+++ b/site/app/twirl/icon/play.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play"><polygon points="6 3 20 12 6 21 6 3"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/pointer.svg b/site/app/twirl/icon/pointer.svg
new file mode 100644
index 0000000..2180fb9
--- /dev/null
+++ b/site/app/twirl/icon/pointer.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mouse-pointer"><path d="M12.586 12.586 19 19"/><path d="M3.688 3.037a.497.497 0 0 0-.651.651l6.5 15.999a.501.501 0 0 0 .947-.062l1.569-6.083a2 2 0 0 1 1.448-1.479l6.124-1.579a.5.5 0 0 0 .063-.947z"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/randomise.svg b/site/app/twirl/icon/randomise.svg
new file mode 100644
index 0000000..73e0c43
--- /dev/null
+++ b/site/app/twirl/icon/randomise.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-dices"><rect width="12" height="12" x="2" y="10" rx="2" ry="2"/><path d="m17.92 14 3.5-3.5a2.24 2.24 0 0 0 0-3l-5-4.92a2.24 2.24 0 0 0-3 0L10 6"/><path d="M6 18h.01"/><path d="M10 14h.01"/><path d="M15 6h.01"/><path d="M18 9h.01"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/record.svg b/site/app/twirl/icon/record.svg
new file mode 100644
index 0000000..726d9f1
--- /dev/null
+++ b/site/app/twirl/icon/record.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mic"><path d="M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" x2="12" y1="19" y2="22"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/redo.svg b/site/app/twirl/icon/redo.svg
new file mode 100644
index 0000000..c6dbd45
--- /dev/null
+++ b/site/app/twirl/icon/redo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-redo"><path d="M21 7v6h-6"/><path d="M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/reset.svg b/site/app/twirl/icon/reset.svg
new file mode 100644
index 0000000..f28f3db
--- /dev/null
+++ b/site/app/twirl/icon/reset.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-list-restart"><path d="M21 6H3"/><path d="M7 12H3"/><path d="M7 18H3"/><path d="M12 18a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L11 14"/><path d="M11 10v4h4"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/rewind.svg b/site/app/twirl/icon/rewind.svg
new file mode 100644
index 0000000..4aa6f48
--- /dev/null
+++ b/site/app/twirl/icon/rewind.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rewind"><polygon points="11 19 2 12 11 5 11 19"/><polygon points="22 19 13 12 22 5 22 19"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/save.svg b/site/app/twirl/icon/save.svg
new file mode 100644
index 0000000..1fec9b0
--- /dev/null
+++ b/site/app/twirl/icon/save.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-save"><path d="M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z"/><path d="M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7"/><path d="M7 3v4a1 1 0 0 0 1 1h7"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/script.svg b/site/app/twirl/icon/script.svg
new file mode 100644
index 0000000..85069c6
--- /dev/null
+++ b/site/app/twirl/icon/script.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-scroll-text"><path d="M15 12h-5"/><path d="M15 8h-5"/><path d="M19 17V5a2 2 0 0 0-2-2H4"/><path d="M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/show.svg b/site/app/twirl/icon/show.svg
new file mode 100644
index 0000000..8ca30ae
--- /dev/null
+++ b/site/app/twirl/icon/show.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"/><circle cx="12" cy="12" r="3"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/showAll.svg b/site/app/twirl/icon/showAll.svg
new file mode 100644
index 0000000..ceb57c5
--- /dev/null
+++ b/site/app/twirl/icon/showAll.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fullscreen"><path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/><rect width="10" height="8" x="7" y="8" rx="1"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/stop.svg b/site/app/twirl/icon/stop.svg
new file mode 100644
index 0000000..f5e9c24
--- /dev/null
+++ b/site/app/twirl/icon/stop.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square"><rect width="18" height="18" x="3" y="3" rx="2"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/trim.svg b/site/app/twirl/icon/trim.svg
new file mode 100644
index 0000000..d7664d1
--- /dev/null
+++ b/site/app/twirl/icon/trim.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-scissors"><rect width="20" height="20" x="2" y="2" rx="2"/><circle cx="8" cy="8" r="2"/><path d="M9.414 9.414 12 12"/><path d="M14.8 14.8 18 18"/><circle cx="8" cy="16" r="2"/><path d="m18 6-8.586 8.586"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/undo.svg b/site/app/twirl/icon/undo.svg
new file mode 100644
index 0000000..0bc90dd
--- /dev/null
+++ b/site/app/twirl/icon/undo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-undo"><path d="M3 7v6h6"/><path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/verticalArrows.svg b/site/app/twirl/icon/verticalArrows.svg
new file mode 100644
index 0000000..518673d
--- /dev/null
+++ b/site/app/twirl/icon/verticalArrows.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-move-vertical"><path d="M12 2v20"/><path d="m8 18 4 4 4-4"/><path d="m8 6 4-4 4 4"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/verticalFold.svg b/site/app/twirl/icon/verticalFold.svg
new file mode 100644
index 0000000..a21f94b
--- /dev/null
+++ b/site/app/twirl/icon/verticalFold.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-fold-vertical"><path d="M12 22v-6"/><path d="M12 8V2"/><path d="M4 12H2"/><path d="M10 12H8"/><path d="M16 12h-2"/><path d="M22 12h-2"/><path d="m15 19-3-3-3 3"/><path d="m15 5-3 3-3-3"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/waves.svg b/site/app/twirl/icon/waves.svg
new file mode 100644
index 0000000..5cccfbf
--- /dev/null
+++ b/site/app/twirl/icon/waves.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-waves"><path d="M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1"/><path d="M2 12c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1"/><path d="M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/zoomIn.svg b/site/app/twirl/icon/zoomIn.svg
new file mode 100644
index 0000000..deaf812
--- /dev/null
+++ b/site/app/twirl/icon/zoomIn.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zoom-in"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="11" x2="11" y1="8" y2="14"/><line x1="8" x2="14" y1="11" y2="11"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/zoomOut.svg b/site/app/twirl/icon/zoomOut.svg
new file mode 100644
index 0000000..0dab381
--- /dev/null
+++ b/site/app/twirl/icon/zoomOut.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zoom-out"><circle cx="11" cy="11" r="8"/><line x1="21" x2="16.65" y1="21" y2="16.65"/><line x1="8" x2="14" y1="11" y2="11"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/icon/zoomSelection.svg b/site/app/twirl/icon/zoomSelection.svg
new file mode 100644
index 0000000..76100e1
--- /dev/null
+++ b/site/app/twirl/icon/zoomSelection.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-scan-search"><path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/><circle cx="12" cy="12" r="3"/><path d="m16 16-1.9-1.9"/></svg> \ No newline at end of file
diff --git a/site/app/twirl/notedata.json b/site/app/twirl/notedata.json
new file mode 100644
index 0000000..696eae0
--- /dev/null
+++ b/site/app/twirl/notedata.json
@@ -0,0 +1 @@
+{"notes": [[0, "", 8.18],[1, "", 8.66],[2, "", 9.18],[3, "", 9.72],[4, "", 10.30],[5, "", 10.91],[6, "", 11.56],[7, "", 12.25],[8, "", 12.98],[9, "", 13.75],[10, "", 14.57],[11, "", 15.43],[12, "", 16.35],[13, "", 17.32],[14, "", 18.35],[15, "", 19.45],[16, "", 20.60],[17, "", 21.83],[18, "", 23.12],[19, "", 24.50],[20, "", 25.96],[21, "A0", 27.50],[22, "A#0/Bb0", 29.14],[23, "B0", 30.87],[24, "C1", 32.70],[25, "C#1/Db1", 34.65],[26, "D1", 36.71],[27, "D#1/Eb1", 38.89],[28, "E1", 41.20],[29, "F1", 43.65],[30, "F#1/Gb1", 46.25],[31, "G1", 49.00],[32, "G#1/Ab1", 51.91],[33, "A1", 55.00],[34, "A#1/Bb1", 58.27],[35, "B1", 61.74],[36, "C2", 65.41],[37, "C#2/Db2", 69.30],[38, "D2", 73.42],[39, "D#2/Eb2", 77.78],[40, "E2", 82.41],[41, "F2", 87.31],[42, "F#2/Gb2", 92.50],[43, "G2", 98.00],[44, "G#2/Ab2", 103.83],[45, "A2", 110.00],[46, "A#2/Bb2", 116.54],[47, "B2", 123.47],[48, "C3", 130.81],[49, "C#3/Db3", 138.59],[50, "D3", 146.83],[51, "D#3/Eb3", 155.56],[52, "E3", 164.81],[53, "F3", 174.61],[54, "F#3/Gb3", 185.00],[55, "G3", 196.00],[56, "G#3/Ab3", 207.65],[57, "A3", 220.00],[58, "A#3/Bb3", 233.08],[59, "B3", 246.94],[60, "C4", 261.63],[61, "C#4/Db4", 277.18],[62, "D4", 293.66],[63, "D#4/Eb4", 311.13],[64, "E4", 329.63],[65, "F4", 349.23],[66, "F#4/Gb4", 369.99],[67, "G4", 392.00],[68, "G#4/Ab4", 415.30],[69, "A4", 440.00],[70, "A#4/Bb4", 466.16],[71, "B4", 493.88],[72, "C5", 523.25],[73, "C#5/Db5", 554.37],[74, "D5", 587.33],[75, "D#5/Eb5", 622.25],[76, "E5", 659.26],[77, "F5", 698.46],[78, "F#5/Gb5", 739.99],[79, "G5", 783.99],[80, "G#5/Ab5", 830.61],[81, "A5", 880.00],[82, "A#5/Bb5", 932.33],[83, "B5", 987.77],[84, "C6", 1046.50],[85, "C#6/Db6", 1108.73],[86, "D6", 1174.66],[87, "D#6/Eb6", 1244.51],[88, "E6", 1318.51],[89, "F6", 1396.91],[90, "F#6/Gb6", 1479.98],[91, "G6", 1567.98],[92, "G#6/Ab6", 1661.22],[93, "A6", 1760.00],[94, "A#6/Bb6", 1864.66],[95, "B6", 1975.53],[96, "C7", 2093.00],[97, "C#7/Db7", 2217.46],[98, "D7", 2349.32],[99, "D#7/Eb7", 2489.02],[100, "E7", 2637.02],[101, "F7", 2793.83],[102, "F#7/Gb7", 2959.96],[103, "G7", 3135.96],[104, "G#7/Ab7", 3322.44],[105, "A7", 3520.00],[106, "A#7/Bb7", 3729.31],[107, "B7", 3951.07],[108, "C8", 4186.01],[109, "C#8/Db8", 4434.92],[110, "D8", 4698.64],[111, "D#8/Eb8", 4978.03],[112, "E8", 5274.04],[113, "F8", 5587.65],[114, "F#8/Gb8", 5919.91],[115, "G8", 6271.93],[116, "G#8/Ab8", 6644.88],[117, "A8", 7040.00],[118, "A#8/Bb8", 7458.62],[119, "B8", 7902.13],[120, "C9", 8372.02],[121, "C#9/Db9", 8869.84],[122, "D9", 9397.27],[123, "D#9/Eb9", 9956.06],[124, "E9", 10548.08],[125, "F9", 11175.30],[126, "F#9/Gb9", 11839.82],[127, "G9", 12543.85],[128, "G#9/Ab9", 13289.75]],"chords": [{"intervals": [0, 4, 8], "name": "Augmented"}, {"intervals": [0, 4, 7, 10, 2, 6], "name": "Augmented 11th"}, {"intervals": [0, 4, 8, 11], "name": "Augmented major 7th"}, {"intervals": [0, 4, 8, 10], "name": "Augmented 7th"}, {"intervals": [0, 6, 8], "name": "Augmented 6th"}, {"intervals": [0, 3, 6], "name": "Diminished"}, {"intervals": [0, 3, 6, 11], "name": "Diminished major 7th"}, {"intervals": [0, 3, 6, 9], "name": "Diminished 7th"}, {"intervals": [0, 4, 7], "name": "Dominant"}, {"intervals": [0, 4, 7, 10, 2, 5], "name": "Dominant 11th"}, {"intervals": [0, 4, 7, 10, 1], "name": "Dominant minor 9th"}, {"intervals": [0, 4, 7, 10, 2], "name": "Dominant 9th"}, {"intervals": [0, 3, 7], "name": "Dominant parallel"}, {"intervals": [0, 4, 7, 10], "name": "Dominant 7th"}, {"intervals": [0, 4, 6, 10], "name": "Dominant 7th b5"}, {"intervals": [0, 4, 7, 10, 2, 5, 9], "name": "Dominant 13th"}, {"intervals": [0, 5, 6, 7], "name": "Dream"}, {"intervals": [0, 7, 9, 1, 4], "name": "Elektra"}, {"intervals": [0, 8, 11, 4, 9], "name": "Farben"}, {"intervals": [0, 4, 7, 10], "name": "Harmonic 7th"}, {"intervals": [0, 4, 7, 10, 3], "name": "Augmented 9th"}, {"intervals": [0, 3, 6], "name": "Leading-tone"}, {"intervals": [0, 4, 7, 11, 6], "name": "Lydian"}, {"intervals": [0, 4, 7], "name": "Major"}, {"intervals": [0, 4, 7, 11, 2, 5], "name": "Major 11th"}, {"intervals": [0, 4, 7, 11], "name": "Major 7th"}, {"intervals": [0, 4, 7, 11, 6], "name": "Major 7th #11th"}, {"intervals": [0, 4, 7, 9], "name": "Major 6th"}, {"intervals": [0, 4, 7, 11, 2], "name": "Major 9th"}, {"intervals": [0, 4, 7, 11, 2, 6, 9], "name": "Major 13th"}, {"intervals": [0, 3, 7], "name": "Mediant"}, {"intervals": [0, 3, 7], "name": "Minor"}, {"intervals": [0, 3, 7, 10, 2, 5], "name": "Minor 11th"}, {"intervals": [0, 3, 7, 11], "name": "Minor major 7th"}, {"intervals": [0, 3, 7, 10, 2], "name": "Minor 9th"}, {"intervals": [0, 3, 7, 10], "name": "Minor 7th"}, {"intervals": [0, 3, 6, 10], "name": "Half-diminished 7th"}, {"intervals": [0, 3, 7, 9], "name": "Minor 6th"}, {"intervals": [0, 3, 7, 10, 2, 5, 9], "name": "Minor 13th"}, {"intervals": [0, 2, 4, 7], "name": "Mu"}, {"intervals": [0, 6, 10, 4, 9, 2], "name": "Mystic"}, {"intervals": [1, 5, 8], "name": "Neapolitan"}, {"intervals": [0, 4, 8, 10, 2], "name": "Ninth augmented 5th"}, {"intervals": [0, 4, 6, 10, 2], "name": "Ninth b5th"}, {"intervals": [1, 2, 8, 0, 3, 6, 7, 10, 11, 4, 7], "name": "Northern Lights"}, {"intervals": [0, 1, 4, 5, 8, 9], "name": "Napoleon hexachord"}, {"intervals": [0, 1, 4, 6, 7, 10], "name": "Petrushka"}, {"intervals": [0, 7], "name": "Power"}, {"intervals": [0, 3, 7], "name": "Psalms"}, {"intervals": [0, 4, 7], "name": "Secondary dominant"}, {"intervals": [0, 3, 6], "name": "Secondary leading-tone"}, {"intervals": [0, 3, 7], "name": "Secondary supertonic"}, {"intervals": [0, 4, 7, 9, 10], "name": "Seven six"}, {"intervals": [0, 4, 7, 10, 1], "name": "7th b9"}, {"intervals": [0, 5, 7, 10], "name": "7th suspension 4"}, {"intervals": [0, 4, 7, 9, 2], "name": "Sixth 9th"}, {"intervals": [0, 5, 7], "name": "Suspended"}, {"intervals": [0, 4, 7], "name": "Subdominant"}, {"intervals": [0, 3, 7], "name": "Subdominant parallel"}, {"intervals": [0, 3, 7], "name": "Submediant"}, {"intervals": [0, 4, 7], "name": "Subtonic"}, {"intervals": [0, 3, 7], "name": "Supertonic"}, {"intervals": [0, 5, 10, 3, 7], "name": "So What"}, {"intervals": [0, 4, 7, 10, 1, 9], "name": "Thirteenth b9th"}, {"intervals": [0, 4, 6, 10, 1, 9], "name": "Thirteenth b9th b5th"}, {"intervals": [0, 3, 7], "name": "Tonic counter parallel"}, {"intervals": [0, 4, 7], "name": "Tonic"}, {"intervals": [0, 3, 7], "name": "Tonic parallel"}, {"intervals": [0, 3, 6, 10], "name": "Tristan"}, {"intervals": [0, 1, 6], "name": "Viennese trichord 1"}, {"intervals": [0, 6, 7], "name": "Viennese trichord 2"}]} \ No newline at end of file
diff --git a/site/app/twirl/stdui.js b/site/app/twirl/stdui.js
new file mode 100644
index 0000000..8141912
--- /dev/null
+++ b/site/app/twirl/stdui.js
@@ -0,0 +1,494 @@
+twirl.stdui = {
+ PlayButton: function(options) {
+ var self = this;
+ var txtPlay = "\u25b6";
+ var txtStop = "\u23f9";
+
+ this.state = false;
+
+ this.element = $("<p />").text(txtPlay).css("cursor", "pointer");
+
+ if (options.hasOwnProperty("fontsize")) {
+ this.element.css("font-size", options.fontsize);
+ }
+
+ this.show = function() {
+ self.element.css("visibility", "visible");
+ };
+
+ this.hide = function() {
+ self.element.css("visibility", "hidden");
+ };
+
+ this.element.click(function() {
+ if (!self.state) {
+ self.element.text(txtStop);
+ self.state = true;
+ } else {
+ self.element.text(txtPlay);
+ self.state = false;
+ }
+ if (options.stateAlter) {
+ options.stateAlter(self.state, self);
+ }
+ if (options.hasOwnProperty("change")) {
+ options.change(self.state, self);
+ }
+ });
+
+ this.setValue = function(v, runChange) {
+ if (v) {
+ self.element.text(txtStop);
+ self.state = true;
+ } else {
+ self.element.text(txtPlay);
+ self.state = false;
+ }
+
+ if (runChange && options.hasOwnProperty("change")) {
+ options.change(self.state, self);
+ }
+ };
+
+ if (options.tooltip) {
+ this.element.on("mouseover", function(e){
+ twirl.tooltip.show(e, options.tooltip);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ if (options.target) {
+ $("#" + options.target).append(this.element);
+ }
+ },
+ StandardButton: function(options) {
+ var self = this;
+ this.element = $("<button />").addClass("smbut").text(options.label);
+
+ this.show = function() {
+ self.element.css("visibility", "visible");
+ };
+
+ this.hide = function() {
+ self.element.css("visibility", "hidden");
+ };
+
+ this.element.click(function(e) {
+ options.change(e);
+ });
+
+ if (options.tooltip) {
+ this.element.on("mouseover", function(e){
+ twirl.tooltip.show(e, options.tooltip);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ if (options.target) {
+ $("#" + options.target).append(this.element);
+ }
+ },
+ StandardToggle: function(options) {
+ var self = this;
+ var doChange = true;
+ this.element = $("<button />").addClass("smbut").attr(
+ "value",
+ options.hasOwnProperty("value") && options.value == 1 ? 1 : 0
+ ).text(options.label);
+
+ function setAppearance() {
+ var col;
+ if (self.element.attr("value") == 0) {
+ col = "#b5b01d";
+ } else {
+ col = "#f2e30c";
+ }
+ self.element.css("background-color", col);
+ };
+
+ setAppearance();
+
+ this.show = function() {
+ self.element.css("visibility", "visible");
+ };
+
+ this.hide = function() {
+ self.element.css("visibility", "hidden");
+ };
+
+ this.element.click(function() {
+ var val = (self.element.attr("value") == 0) ? 1 : 0;
+ self.element.attr("value", val);
+ setAppearance();
+ if (options.stateAlter) {
+ options.stateAlter(val, self);
+ }
+ if (doChange && options.hasOwnProperty("change")) {
+ options.change(val, self);
+ }
+ });
+
+ this.setValue = function(v, runChange) {
+ if (!runChange) {
+ doChange = false;
+ }
+ if (options.stateAlter) {
+ options.stateAlter(v, self);
+ }
+ self.element.attr("value", v);
+ setAppearance();
+ if (runChange && options.hasOwnProperty("change")) {
+ options.change(v, self);
+ }
+ doChange = true;
+ };
+
+ if (options.tooltip) {
+ this.element.on("mouseover", function(e){
+ twirl.tooltip.show(e, options.tooltip);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ if (options.target) {
+ $("#" + options.target).append(this.element);
+ }
+ },
+ ComboBox: function(options) {
+ var self = this;
+ var doChange = true;
+ var tr = $("<tr />");
+ this.element = $("<select />");
+
+ for (var v in options.options) {
+ var val = (options.asValue) ? options.options[v] : v;
+ $("<option />").attr("value", val).text(options.options[v]).appendTo(self.element);
+ }
+
+ this.element.change(function() {
+ var val;
+ val = (options.asValue) ? self.element.find(":selected").text() : self.element.val();
+ if (options.stateAlter) {
+ options.stateAlter(val, self);
+ }
+ if (doChange && options.hasOwnProperty("change")) {
+ options.change(val, self);
+ }
+ });
+
+ this.show = function() {
+ self.element.css("visibility", "visible");
+ tr.show();
+ };
+
+ this.hide = function() {
+ self.element.css("visibility", "hidden");
+ tr.hide();
+ };
+
+ this.setValue = function(v, runChange) {
+ if (!runChange) {
+ doChange = false;
+ }
+ if (options.stateAlter) {
+ options.stateAlter(v, self);
+ }
+ self.element.val(v);
+ doChange = true;
+ };
+
+ if (options.tooltip) {
+ this.element.on("mouseover", function(e){
+ twirl.tooltip.show(e, options.tooltip);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ if (options.target) {
+ if (options.asRow) {
+ tr.appendTo($("#" + options.target));
+ var tdl = $("<td />").appendTo(tr);
+ if (options.label) tdl.addClass("transparentinput").text(options.label);
+ $("<td />").append(self.element).appendTo(tr);
+ $("<td />").appendTo(tr);
+ } else {
+ $("#" + options.target).append(self.element);
+ }
+ }
+ },
+ TextArea: function(options) {
+ var self = this;
+ this.element = $("<textarea />").css({
+ "background-color": "var(--codeBgColor)",
+ "color": "var(--codeFgColor)",
+ "font-size": "var(--codeFontSize)",
+ "font-family": "var(--codeFontFace)"
+ });
+
+ if (options.width) {
+ self.element.css("width", options.width);
+ }
+ if (options.height) {
+ self.element.css("height", options.height);
+ }
+ this.show = function() {
+ self.element.css("visibility", "visible");
+ };
+
+ this.hide = function() {
+ self.element.css("visibility", "hidden");
+ };
+
+ this.setValue = function(v) {
+ self.element.val(v);
+ };
+ if (options.target) {
+ $("#" + options.target).append(self.element);
+ }
+ },
+ TextInput: function(options) {
+ var self = this;
+ var doChange = true;
+ this.element = $("<input />").css({
+ "background-color": "var(--bgColor1)",
+ "color": "var(--fgColor1)"
+ });
+
+ if (options.css) {
+ self.element.css(options.css);
+ }
+
+ this.element.change(function() {
+ var val = self.element.val();
+ if (options.stateAlter) {
+ options.stateAlter(val, self);
+ }
+ if (doChange && options.hasOwnProperty("change")) {
+ options.change(val, self);
+ }
+ });
+
+ this.show = function() {
+ self.element.css("visibility", "visible");
+ };
+
+ this.hide = function() {
+ self.element.css("visibility", "hidden");
+ };
+
+ this.setValue = function(v, runChange) {
+ if (!runChange) {
+ doChange = false;
+ }
+ if (options.stateAlter) {
+ options.stateAlter(v, self);
+ }
+ self.element.val(v);
+ if (runChange && options.hasOwnProperty("change")) {
+ options.change(v, self);
+ }
+ doChange = true;
+ };
+
+ if (options.tooltip) {
+ this.element.on("mouseover", function(e){
+ twirl.tooltip.show(e, options.tooltip);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ if (options.target) {
+ $("#" + options.target).append(this.element);
+ }
+ },
+ ColourInput: function(options) {
+ var self = this;
+ var doChange = true;
+ this.element = $("<input />").attr("type", "color");
+
+ if (options.css) {
+ self.element.css(options.css);
+ }
+
+ this.element.change(function() {
+ var val = self.element.val();
+ if (options.stateAlter) {
+ options.stateAlter(val, self);
+ }
+ if (doChange && options.hasOwnProperty("change")) {
+ options.change(val, self);
+ }
+ });
+
+ this.show = function() {
+ self.element.css("visibility", "visible");
+ };
+
+ this.hide = function() {
+ self.element.css("visibility", "hidden");
+ };
+
+ this.setValue = function(v, runChange) {
+ if (!runChange) {
+ doChange = false;
+ }
+ if (options.stateAlter) {
+ options.stateAlter(v, self);
+ }
+ self.element.val(v);
+ if (runChange && options.hasOwnProperty("change")) {
+ options.change(v, self);
+ }
+ doChange = true;
+ };
+
+ if (options.tooltip) {
+ this.element.on("mouseover", function(e){
+ twirl.tooltip.show(e, options.tooltip);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ if (options.target) {
+ $("#" + options.target).append(this.element);
+ }
+ },
+ Slider: function(options) {
+ var self = this;
+ var doChange = true;
+ var label;
+ var tr = $("<tr />");
+
+ if (!options.hasOwnProperty("min")) {
+ options.min = 0;
+ }
+
+ if (!options.hasOwnProperty("max")) {
+ options.max = 1;
+ }
+
+ if (!options.hasOwnProperty("step")) {
+ options.step = 0.000001;
+ }
+
+ if (!options.hasOwnProperty("value")) {
+ options.value = 0;
+ }
+
+ if (!options.hasOwnProperty("size")) {
+ options.size = 64;
+ }
+
+ this.element = $("<input />")
+ .attr("type", "range")
+ .attr("min", options.min)
+ .attr("max", options.max)
+ .attr("step", options.step)
+ .attr("value", options.value)
+ .addClass("slider")
+ .addClass("transparentinput");
+
+ this.valueLabel = null;
+
+ this.show = function() {
+ tr.show();
+ };
+
+ this.hide = function() {
+ tr.hide();
+ };
+
+ var valueLabelUpdate = true;
+ if (options.hasOwnProperty("valueLabel") && options.valueLabel) {
+ self.valueLabel = $("<input />")
+ .attr("type", "number")
+ .attr("min", options.min)
+ .attr("max", options.max)
+ .attr("step", options.step)
+ .attr("value", options.value)
+ .addClass("transparentinput")
+ .val(options.value).change(function(){
+ valueLabelUpdate = false;
+ self.setValue($(this).val());
+ valueLabelUpdate = true;
+ });
+ }
+
+ function applyChange() {
+ var val = self.element.val();
+ if (options.stateAlter) {
+ options.stateAlter(val, self);
+ }
+ if (doChange && options.hasOwnProperty("change")) {
+ options.change(val, self);
+ }
+ if (self.valueLabel) {
+ self.valueLabel.val(val);
+ }
+ }
+
+ this.element.change(function() {
+ applyChange();
+ });
+
+ this.element.on("input", function() {
+ if (options.changeOnInput) {
+ return applyChange();
+ }
+ if (options.input) {
+ options.input(self.element.val(), self);
+ }
+ if (self.valueLabel) {
+ self.valueLabel.val(self.element.val());
+ }
+ });
+
+ this.setValue = function(v, runChange) {
+ if (!runChange) {
+ doChange = false;
+ }
+ if (options.stateAlter) {
+ options.stateAlter(v, self);
+ }
+ self.element.val(v);
+ if (runChange && options.hasOwnProperty("change")) {
+ options.change(v, self);
+ }
+ if (self.valueLabel && valueLabelUpdate) {
+ self.valueLabel.val(v);
+ };
+ doChange = true;
+ };
+
+
+ if (options.hasOwnProperty("label")) {
+ label = $("<p />").addClass("knoblabel").text(options.label);
+ }
+
+ var tdl = $("<td />").appendTo(tr);
+ if (label) tdl.append(label);
+
+ self.element.appendTo($("<td />").appendTo(tr));
+
+ var tdv = $("<td />").appendTo(tr);
+ if (self.valueLabel) tdv.append(self.valueLabel);
+
+ if (options.tooltip) {
+ this.element.on("mouseover", function(e){
+ twirl.tooltip.show(e, options.tooltip);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ if (options.target) {
+ $("#" + options.target).append(tr);
+ }
+ }
+} \ No newline at end of file
diff --git a/site/app/twirl/theme.css b/site/app/twirl/theme.css
new file mode 100644
index 0000000..6f36a90
--- /dev/null
+++ b/site/app/twirl/theme.css
@@ -0,0 +1,284 @@
+@font-face {
+ font-family: "Chicago";
+ src: url("font/Chicago.woff") format("woff");
+ font-weight: 500;
+ font-style: normal;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: "Nouveau IBM";
+ src: url("font/Nouveau_IBM.woff") format("woff");
+ font-style: normal;
+ font-display: swap;
+ font-size: 12pt;
+}
+
+@font-face {
+ font-family: "National Park";
+ src: url("font/NationalPark-Regular.woff") format("woff");
+ font-style: normal;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: "Josefin Sans";
+ src: url("font/JosefinSans.ttf") format("truetype");
+ font-style: normal;
+ font-display: swap;
+}
+
+html {
+ --fontFace: Chicago, Arial, sans-serif;
+ --fontSizeSmall: 11px;
+ --fontSizeDefault: 12px;
+ --fontSizeMedium: 14px;
+ --fontSizeLarge: 16px;
+ --bgColor1: #706b3b;
+ --bgColor2: #614d2c;
+ --bgColor3: #61594e;
+ --bgColor4: #806b4b;
+ --fgColor1: #f0b041;
+ --fgColor2: #e0a031;
+ --fgColor3: #db931f;
+ --menuBarBottomBorder: 1px solid #565656;
+ --tabSelectedBgColor: #453c2e;
+ --tabUnselectedBgColor: #292621;
+ --tabSelectedFgColor: #db931f;
+ --tabUnselectedFgColor: #a67b37;
+ --rowOddBgColor: #383137;
+ --rowEvenBgColor: #525049;
+ --buttonBorder: 1px solid #dba418;
+ --codeBgColor: #524320;
+ --codeFgColor: #f7b314;
+ --codeFontSize: 12pt;
+ --codeFontFace: "Nouveau IBM", courier, monospace;
+ --promptBgColor: #615c53;
+ --promptFontSize: 16px;
+ --promptShadow: 3px 3px rgba(0,0,0,0.2);
+ --promptBorder: 1px solid black;
+ --waveformOverlayColor: #4c464e;
+ --scrollbarColor: #e8bb54 #57451b;
+ --waveformPlayheadColor: #FF2222;
+ --waveformCoverColor: #232323;
+ --waveformCoverOpacity: 0.5;
+ --waveformMarkerColor: #edea2b;
+ --waveformMarkerRunnerColor: #919171;
+ --waveformCrossfadeWidth: 1px;
+ --waveformCrossfadeLineColor: #bfbfbf;
+ --waveformSelectOpacity: 0.5;
+ --waveformSelectColor: #772222;
+ --waveformLocationColor: #e0c496;
+ --waveformBgColor: #332b1f;
+ --waveformFgColor: #d18502;
+ --waveformGridColor: rgb(227, 206, 154, 0.2);
+ --waveformGridTextColor: rgb(240, 190, 65, 0.5);
+ --waveformChannelLineColor: rgb(87, 87, 87, 0.7);
+ --waveformTimeBarBgColor: #806b4b;
+ --waveformTimeBarFgColor: #f0b041;
+ --iconFilter: brightness(0) saturate(100%) invert(78%) sepia(77%) saturate(923%) hue-rotate(334deg) brightness(89%) contrast(88%);
+}
+
+html.themeBasic {
+ --fontFace: "Josefin Sans", Arial, sans-serif;
+ --fontSizeSmall: 10pt;
+ --fontSizeDefault: 11pt;
+ --fontSizeMedium: 14pt;
+ --fontSizeLarge: 16pt;
+ --bgColor1: #a1a1cf;
+ --bgColor2: #9898a8;
+ --bgColor3: #8989b1;
+ --bgColor4: #bdbdff;
+ --fgColor1: #000000;
+ --fgColor2: #555555;
+ --fgColor3: #343445;
+ --menuBarBottomBorder: 1px solid #bdbdbd;
+ --tabSelectedBgColor: #7878bd;
+ --tabUnselectedBgColor: #5656aa;
+ --tabSelectedFgColor: #000000;
+ --tabUnselectedFgColor: #777777;
+ --rowOddBgColor: #a9a9c9;
+ --rowEvenBgColor: #9999a9;
+ --buttonBorder: 1px solid #343434;
+ --codeBgColor: #9999ff;
+ --codeFgColor: #121212;
+ --codeFontSize: 12pt;
+ --codeFontFace: courier, monospace;
+ --promptBgColor: #8585ff;
+ --promptFontSize: 12pt;
+ --promptShadow: 3px 3px rgba(0,0,50,0.3);
+ --promptBorder: 1px solid #5555aa;
+ --waveformOverlayColor: #4c464e;
+ --scrollbarColor: #ffffff #444499;
+ --waveformPlayheadColor: #FF2222;
+ --waveformCoverColor: #232323;
+ --waveformCoverOpacity: 0.5;
+ --waveformMarkerColor: #edea2b;
+ --waveformMarkerRunnerColor: #919171;
+ --waveformCrossfadeWidth: 1px;
+ --waveformCrossfadeLineColor: #3434ff;
+ --waveformSelectOpacity: 0.5;
+ --waveformSelectColor: #772222;
+ --waveformLocationColor: #000000;
+ --waveformBgColor: #fcf6de;
+ --waveformFgColor: #222266;
+ --waveformGridColor: rgb(0, 0, 0, 0.2);
+ --waveformGridTextColor: rgb(0, 0, 0, 0.5);
+ --waveformChannelLineColor: rgb(0, 0, 0, 0.7);
+ --waveformTimeBarBgColor: #ffffff;
+ --waveformTimeBarFgColor: #000000;
+ --iconFilter: invert(17%) sepia(31%) saturate(2452%) hue-rotate(208deg) brightness(96%) contrast(88%);
+}
+
+html.themeHacker {
+ --fontFace: "Nouveau IBM", monospace, Courier, sans-serif;
+ --fontSizeSmall: 10pt;
+ --fontSizeDefault: 12pt;
+ --fontSizeMedium: 14pt;
+ --fontSizeLarge: 16pt;
+ --bgColor1: #323232;
+ --bgColor2: #434343;
+ --bgColor3: #010101;
+ --bgColor4: #344534;
+ --fgColor1: #44ee44;
+ --fgColor2: #66cc66;
+ --fgColor3: #009900;
+ --menuBarBottomBorder: 1px solid #bbbbbb;
+ --tabSelectedBgColor: #454545;
+ --tabUnselectedBgColor: #232323;
+ --tabSelectedFgColor: #44bb44;
+ --tabUnselectedFgColor: #229922;
+ --rowOddBgColor: #232323;
+ --rowEvenBgColor: #343434;
+ --buttonBorder: none;
+ --codeBgColor: #000000;
+ --codeFgColor: #0000ab;
+ --codeFontSize: 12pt;
+ --codeFontFace: "Nouveau IBM", courier, monospace;
+ --promptBgColor: #000000;
+ --promptFontSize: 14pt;
+ --promptShadow: 5px 5px rgba(0,50,0,0.2);
+ --promptBorder: 1px solid white;
+ --waveformOverlayColor: #4c464e;
+ --scrollbarColor: #000000 #005500;
+ --waveformPlayheadColor: #FF2222;
+ --waveformCoverColor: #232323;
+ --waveformCoverOpacity: 0.5;
+ --waveformMarkerColor: #ed2bed;
+ --waveformMarkerRunnerColor: #545454;
+ --waveformCrossfadeWidth: 1px;
+ --waveformCrossfadeLineColor: #989898;
+ --waveformSelectOpacity: 0.5;
+ --waveformSelectColor: #227722;
+ --waveformLocationColor: #000000;
+ --waveformBgColor: #121212;
+ --waveformFgColor: #00aa00;
+ --waveformGridColor: rgb(90, 90, 90, 0.2);
+ --waveformGridTextColor: rgb(120, 170, 120, 0.5);
+ --waveformChannelLineColor: rgb(120, 120, 120, 0.7);
+ --waveformTimeBarBgColor: #446644;
+ --waveformTimeBarFgColor: #000000;
+ --iconFilter: invert(41%) sepia(18%) saturate(1917%) hue-rotate(62deg) brightness(104%) contrast(90%);
+}
+
+html.themeMonoclassic {
+ --fontFace: Chicago, Arial, sans-serif;
+ --fontSizeSmall: 11px;
+ --fontSizeDefault: 12px;
+ --fontSizeMedium: 14px;
+ --fontSizeLarge: 16px;
+ --bgColor1: #ffffff;
+ --bgColor2: #eeeeee;
+ --bgColor3: #dddddd;
+ --bgColor4: #cccccc;
+ --fgColor1: #000000;
+ --fgColor2: #111111;
+ --fgColor3: #222222;
+ --menuBarBottomBorder: 1px solid #000000;
+ --tabSelectedBgColor: #ffffff;
+ --tabUnselectedBgColor: #cccccc;
+ --tabSelectedFgColor: #000000;
+ --tabUnselectedFgColor: #555555;
+ --rowOddBgColor: #ffffff;
+ --rowEvenBgColor: #eeeeee;
+ --buttonBorder: 1px solid #000000;
+ --codeBgColor: #ffffff;
+ --codeFgColor: #000000;
+ --codeFontSize: 12pt;
+ --codeFontFace: "Nouveau IBM", courier, monospace;
+ --promptBgColor: #ffffff;
+ --promptFontSize: 16px;
+ --promptShadow: 3px 3px rgba(0,0,0,0.2);
+ --promptBorder: 1px solid black;
+ --waveformOverlayColor: #bbbbbb;
+ --scrollbarColor: #000000 #ffffff;
+ --waveformPlayheadColor: #000000;
+ --waveformCoverColor: #dddddd;
+ --waveformCoverOpacity: 0.5;
+ --waveformMarkerColor: #444444;
+ --waveformMarkerRunnerColor: #dddddd;
+ --waveformCrossfadeWidth: 1px;
+ --waveformCrossfadeLineColor: #333333;
+ --waveformSelectOpacity: 0.5;
+ --waveformSelectColor: #666666;
+ --waveformLocationColor: #111111;
+ --waveformBgColor: #ffffff;
+ --waveformFgColor: #000000;
+ --waveformGridColor: rgb(20, 20, 20, 0.2);
+ --waveformGridTextColor: rgb(20, 10, 20, 0.5);
+ --waveformChannelLineColor: rgb(10, 10, 10, 0.7);
+ --waveformTimeBarBgColor: #dddddd;
+ --waveformTimeBarFgColor: #444444;
+ --iconFilter: none;
+}
+
+html.themeDoze {
+ --fontFace: "Trebuchet MS", Arial, sans-serif;
+ --fontSizeSmall: 8pt;
+ --fontSizeDefault: 10pt;
+ --fontSizeMedium: 14pt;
+ --fontSizeLarge: 16pt;
+ --bgColor1: #8f8f8f;
+ --bgColor2: #7f7f7f;
+ --bgColor3: #6f6f6f;
+ --bgColor4: #5f5f5f;
+ --fgColor1: #000000;
+ --fgColor2: #171717;
+ --fgColor3: #212121;
+ --menuBarBottomBorder: 1px solid #000000;
+ --tabSelectedBgColor: #acacac;
+ --tabUnselectedBgColor: #6a6a6a;
+ --tabSelectedFgColor: #000000;
+ --tabUnselectedFgColor: #555555;
+ --rowOddBgColor: #acacac;
+ --rowEvenBgColor: #919191;
+ --buttonBorder: 1px solid #767676;
+ --codeBgColor: #000000;
+ --codeFgColor: #f5d151;
+ --codeFontSize: 12pt;
+ --codeFontFace: "Nouveau IBM", courier, monospace;
+ --promptBgColor: #8f8f8f;
+ --promptFontSize: 16pt;
+ --promptShadow: 6px 6px rgba(0,0,0,0.2);
+ --promptBorder: 1px solid #707070;
+ --waveformOverlayColor: #bbbbbb;
+ --scrollbarColor: #949494 #c2c2c2;
+ --waveformPlayheadColor: #bb0000;
+ --waveformCoverColor: #dddddd;
+ --waveformCoverOpacity: 0.5;
+ --waveformMarkerColor: #f0c93e;
+ --waveformMarkerRunnerColor: #9e8e55;
+ --waveformCrossfadeWidth: 1px;
+ --waveformCrossfadeLineColor: #79a1b0;
+ --waveformSelectOpacity: 0.5;
+ --waveformSelectColor: #eff77c;
+ --waveformLocationColor: #bb0000;
+ --waveformBgColor: #2c304d;
+ --waveformFgColor: #485ce0;
+ --waveformGridColor: rgb(20, 20, 20, 0.2);
+ --waveformGridTextColor: rgb(20, 10, 20, 0.5);
+ --waveformChannelLineColor: rgb(10, 10, 10, 0.7);
+ --waveformTimeBarBgColor: #949494;
+ --waveformTimeBarFgColor: #c2c2c2;
+ --iconFilter: none;
+} \ No newline at end of file
diff --git a/site/app/twirl/transform.js b/site/app/twirl/transform.js
new file mode 100644
index 0000000..1feff51
--- /dev/null
+++ b/site/app/twirl/transform.js
@@ -0,0 +1,1212 @@
+twirl.transform = {};
+twirl.transform.Parameter = function(options) {
+ var self = this;
+ var instr = options.instrument;
+ var tDefinition = options.definition;
+ var parent = options.parent;
+ var transform = options.transform;
+ var host = options.host;
+ var onChange;
+ var refreshable = false;
+ var changeFunc;
+ var initval = true;
+ var definition = {};
+ var randomiseAllowed = true;
+ var visible = true;
+ var uniqueTransformID = (options.transform) ? options.transform.uniqueID : "";
+ if (parent) {
+ Object.assign(definition, tDefinition);
+ } else {
+ definition = tDefinition;
+ }
+
+ if (options.onChange || definition.onChange) {
+ onChange = function(val) {
+ if (options.onChange) options.onChange(val);
+ if (definition.onChange) definition.onChange(val);
+ }
+ }
+
+ if (definition.hasOwnProperty("preset")) {
+ var save = {};
+ for (var s of ["dfault", "name", "channel", "automatable", "description"]) {
+ if (definition.hasOwnProperty(s)) {
+ save[s] = definition[s];
+ }
+ }
+
+ if (definition.preset == "amp") {
+ Object.assign(definition, {name: "Amplitude", channel: "amp", description: "Amplitude", dfault: 1, min: 0, max: 1});
+ } else if (definition.preset == "pvslock") {
+ Object.assign(definition, {name: "Peak lock", channel: "pvslock", description: "Lock frequencies around peaks", min: 0, max: 1, step: 1, dfault: 0});
+ } else if (definition.preset == "fftsize") {
+ Object.assign(definition, {name: "FFT size", channel: "fftsize", description: "FFT size", options: [256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65535], dfault: 2, asvalue: true, automatable: false, lagHint: -1});
+ } else if (definition.preset == "wave") {
+ Object.assign(definition, {name: "Wave", description: "Wave shape to use", options: ["Sine", "Square", "Saw", "Pulse", "Triangle"], dfault: 0, channel: "wave"});
+ } else if (definition.preset == "wintype") {
+ Object.assign(definition, {name: "Window type", channel: "wintype", description: "Window shape", options: ["Hanning", "Hamming", "Half sine"], dfault: 0, automatable: false});
+
+ } else if (definition.preset == "instanceloop") {
+ Object.assign(definition, {name: "Cross instance loop type", channel: "otlooptype", description: "Loop type of other instance", options: ["None", "Forward", "Backward", "Ping-pong"], dfault: 0});
+
+ } else if (definition.preset == "note") {
+ var notes = {};
+ for (var i = 21; i < 128; i++) {
+ var v = twirl.noteData.data.notes[i];
+ notes[v[0]] = v[1];
+ }
+ Object.assign(definition, {name: "Note", channel: "note", description: "Note to use", options: notes, dfault: 69, automatable: true});
+ } else if (definition.preset == "instance") {
+ var c = (!definition.channel) ? "ot" : definition.channel;
+ initval = false;
+ if (transform) transform.refreshable = true;
+ refreshable = true;
+ Object.assign(definition, {
+ name: "Instance", description: "Other wave to use", channel: "instance",
+ options: options.otherInstanceNamesFunc(),
+ automatable: false
+ });
+ changeFunc = function(index) {
+ var oif = options.instancesFunc();
+ if (!oif[index]) return;
+ var s = oif[index].selected;
+ app.setControlChannel(instr + "_" + "inststart" + uniqueTransformID, s[0]);
+ app.setControlChannel(instr + "_" + "instend" + uniqueTransformID, s[1]);
+ app.setControlChannel(instr + "_" + "instchan" + uniqueTransformID, s[2]);
+ };
+ }
+ if (save) {
+ Object.assign(definition, save);
+ }
+ } // if preset
+
+ if (definition.channel == "applymode" || definition.noRandomisation) {
+ randomiseAllowed = false;
+ }
+
+ var type;
+
+ if (definition.hasOwnProperty("conditions") && !parent) {
+ refreshable = true;
+ if (transform) transform.refreshable = refreshable;
+ }
+
+ var channel = "";
+ if (!definition.hasOwnProperty("absolutechannel")) {
+ channel = (parent) ? parent.sendChannel : instr + "_";
+ }
+
+ if (definition.hasOwnProperty("channel")) {
+ channel += definition.channel;
+ } else {
+ channel += definition.name.toLowerCase();
+ }
+
+ this.sendChannel = channel;
+ if (!parent) {
+ this.sendChannel += uniqueTransformID;
+ }
+ var elContainer = $("<div />");
+ var elValueLabel = $("<div />");
+ var elValueInput;
+ var elModulations;
+ var elInput;
+ var elRow;
+ var elModSelect;
+ var automation = [];
+
+ this.definition = definition;
+ this.modulation = null;
+ this.automation = null;
+ this.channel = channel;
+ this.modulationParameters = null;
+
+ this.setPlaying = async function(state) {
+ if (definition.automatable || definition.hidden) return;
+
+ if (definition.disableOnPlay) {
+ if (elValueInput) {
+ elValueInput.prop("disabled", state);
+ elValueInput.css("opacity", (state) ? 0.8 : 1);
+ }
+
+ if (elInput) {
+ elInput.prop("disabled", state);
+ elInput.css("opacity", (state) ? 0.8 : 1);
+ }
+ } else {
+ if (state) {
+ var text = "Changes will be applied upon next run";
+ elContainer.on("mouseover", function(event){
+ twirl.tooltip.show(event, text);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ } else {
+ elContainer.off("mouseover").off("mouseout");
+ }
+ }
+ };
+
+
+ if (!definition.hasOwnProperty("hidden")) {
+ definition.hidden = false;
+ }
+
+ if (!definition.step) {
+ definition.step = 0.0000001;
+ }
+
+ if (definition.min == null) {
+ definition.min = 0;
+ }
+
+ if (definition.max == null) {
+ definition.max = 1;
+ }
+
+ if (!definition.hasOwnProperty("fireChanges")) {
+ definition.fireChanges = true;
+ }
+
+ if (definition.dfault == null) {
+ definition.dfault = 1;
+ }
+
+ if (parent) {
+ if (definition.hostrange) {
+ var items = ["step", "min", "max", "options", "conditions", "hostrange"];
+ if (definition.dfault == "hostrangemin") {
+ definition.dfault = parent.definition.min;
+ } else if (definition.dfault == "hostrangemax") {
+ definition.dfault = parent.definition.max;
+ } else {
+ items.push("dfault");
+ }
+ for (let o of items) {
+ if (parent.definition.hasOwnProperty(o)) {
+ definition[o] = parent.definition[o];
+ }
+ }
+ } else if (definition.preset == "hostrangemin") {
+ definition.min = definition.max = definition.dfault = parent.definition.min;
+ } else if (definition.preset == "hostrangemax") {
+ definition.min = definition.max = definition.dfault = parent.definition.max;
+ }
+ }
+
+ if (definition.options) {
+ type = "select";
+ definition.min = 0;
+ definition.max = definition.options.length - 1;
+ definition.step = 1;
+ } else if (definition.hasOwnProperty("type")) {
+ type = definition.type;
+ } else if (definition.min == 0 && definition.max == 1 && definition.step == 1) {
+ type = "checkbox";
+ } else {
+ type = "range";
+ }
+
+ if (!definition.hasOwnProperty("automatable")) {
+ definition.automatable = ((type == "range" || type == "checkbox") && !parent);
+ }
+
+ this.getLagHint = function() {
+ if (!definition.lagHint || !visible) return;
+ var lagHint;
+ if (typeof(definition.lagHint) == "object") {
+ lagHint = "setting <i>" + definition.name + "</i> to <i>"
+ + definition.options[definition.lagHint.option] + "</i>";
+ } else {
+ lagHint = ((definition.lagHint < 0) ? "reducing" : "increasing")
+ + " <i>" + definition.name + "</i>";
+ }
+ return lagHint;
+ };
+
+ this.setRawValue = function(val) {
+ if (type == "checkbox") {
+ elInput[0].checked = (val == 0) ? false : true;
+ } else {
+ elInput.val(val);
+ }
+ elInput.trigger("change");
+ }
+
+ this.getRawValue = function() {
+ return elInput.val();
+ }
+
+ this.getValue = function() {
+ var val;
+ if (type == "range" || type == "string") {
+ val = elInput.val();
+ } else if (type == "select") {
+ val = (definition.asvalue) ? elInput.find("option:selected").text() : elInput.val();
+ } else if (type == "checkbox") {
+ val = (elInput[0].checked) ? 1 : 0;
+ }
+ return val;
+ };
+
+ this.reset = function() {
+ self.setRawValue(definition.dfault);
+ if (!options.unmanagedAutomation) {
+ if (automationActive) disableAutomation();
+ if (self.automation) {
+ delete self.automation;
+ self.automation = null;
+ }
+ if (elSpline) {
+ elSpline.remove();
+ delete elSpline;
+ }
+ }
+ if (modulationShown && !options.unmanagedModulation) {
+ hideModulations();
+ }
+ };
+
+ this.randomise = function() {
+ if (!randomiseAllowed) return;
+ var val;
+ if (!options.unmanagedModulation && definition.automatable) {
+ if (Math.random() >= 0.5) {
+ modButton.el.click();
+ }
+ }
+
+ if (type == "select") {
+ val = Math.round(Math.random() * (definition.options.length - 1));
+ } else if (type == "range") {
+ val = (Math.random() * (definition.max - definition.min)) + definition.min;
+ if (definition.step == 1) {
+ val = Math.round(val);
+ } else {
+ val = Math.ceil((val - definition.min) / definition.step) * definition.step + definition.min;
+ }
+ } else if (type = "checkbox") {
+ val = (Math.round(Math.random()));
+ }
+ self.setRawValue(val);
+
+ if (self.modulationParameters && !options.unmanagedModulation) {
+ // 4 = just the non-crossadaptive ones
+ elModSelect.val(Math.round(Math.random() * 4)).trigger("change");
+ for (let mp in self.modulationParameters) {
+ self.modulationParameters[mp].randomise();
+ }
+ }
+ };
+
+
+ this.refresh = function() {
+ if (!refreshable || !transform) {
+ return;
+ }
+ if (definition.preset == "instance") {
+ createSelectOptions(elInput, options.otherInstanceNamesFunc(), true);
+ }
+ for (var k in definition.conditions) {
+ var c = definition.conditions[k];
+ var chan = (c.absolutechannel) ? c.channel : transform.instr + "_" + c.channel;
+ var val = transform.parameters[chan].getValue();
+ if (
+ (c.operator == "eq" && val != c.value) ||
+ (c.operator == "neq" && val == c.value) ||
+ (c.operator == "lt" && val >= c.value) ||
+ (c.operator == "gt" && val <= c.value) ||
+ (c.operator == "le" && val > c.value) ||
+ (c.operator == "ge" && val < c.value)
+ ) {
+ visible = false;
+ app.setControlChannel(self.sendChannel, definition.dfault);
+ return elRow.hide();
+ }
+ }
+ // app.setControlChannel(self.sendChannel, self.getValue());
+ visible = true;
+ elRow.show();
+ };
+
+ function createSelectOptions(elSelect, options, sendValue) {
+ var selected = elInput.val();
+ elSelect.empty();
+ var applied;
+ var firstOption;
+ for (var x in options) {
+ if (!firstOption) firstOption = x;
+ var opt = $("<option />").text(options[x]).val(x).appendTo(elSelect);
+ if (x == selected) {
+ opt.attr("selected", "1");
+ if (changeFunc) changeFunc(x);
+ applied = true;
+ }
+ }
+ if (!applied) {
+ elInput.val(firstOption);
+ if (changeFunc) changeFunc(firstOption);
+ }
+ if (sendValue) {
+ app.setControlChannel(self.sendChannel, self.getValue());
+ }
+ definition.min = 0;
+ definition.max = (Array.isArray(options)) ? options.length - 1 : Object.keys(options).length - 1;
+ }
+
+ function updateLabel() {
+ if (elValueInput) {
+ var val = self.getValue();
+ updateinput = false;
+ rounding = 10000;
+ val = Math.round(val * rounding) / rounding;
+ elValueInput.val(val);
+ updateinput = true;
+ }
+ }
+
+ if (type == "select") {
+ elInput = $("<select />");
+ elInput.change(function(){
+ var val = self.getValue();
+ if (transform) transform.refresh();
+ if (definition.fireChanges) {
+ if (changeFunc) changeFunc(val);
+ if (!host.offline) app.setControlChannel(self.sendChannel, val);
+ }
+ if (onChange) {
+ onChange(val);
+ }
+ });
+
+ var selectOptions = (definition.hostrange && parent) ? parent.definitions.options : definition.options;
+ createSelectOptions(elInput, selectOptions);
+
+ } else if (type == "string") {
+ elInput = $("<input />").change(function() {
+ if (transform) transform.refresh();
+ var val = self.getValue();
+ if (definition.fireChanges) {
+ app.setStringChannel(self.sendChannel, val);
+ }
+ if (onChange) {
+ onChange(val);
+ }
+ });
+
+ } else if (type == "checkbox") {
+ elInput = $("<input />").addClass("twirl_checkbox").attr("type", "checkbox").on("change", function() {
+ if (transform) transform.refresh();
+ var val = self.getValue();
+ if (definition.fireChanges) {
+ app.setControlChannel(self.sendChannel, val);
+ }
+ if (onChange) {
+ onChange(val);
+ }
+ });
+ } else if (type == "range") {
+ var updateinput = true;
+ var max = definition.max;
+ var min = definition.min;
+ var step = definition.step;
+ var dfault = definition.dfault;
+
+ elInput = $("<input />").addClass("twirl_slider").attr("type", "range").on("input", function() {
+ updateLabel();
+ if (definition.fireChanges) {
+ app.setControlChannel(self.sendChannel, self.getValue());
+ }
+ }).change(function() {
+ updateLabel();
+ if (transform) transform.refresh();
+ var val = self.getValue();
+ if (definition.fireChanges && !host.offline) {
+ app.setControlChannel(self.sendChannel, val);
+ }
+ if (onChange) {
+ onChange(val);
+ }
+ }).attr("min", min).attr("max", max).attr("step", step).val(dfault);
+
+ elValueInput = $("<input />").attr("type", "number").attr("min", min).attr("max", max).attr("step", step).addClass("twirl_transparentinput").appendTo(elValueLabel).change(function() {
+ if (updateinput) {
+ elInput.val($(this).val()).trigger("change").trigger("input");
+ }
+ });
+ }
+ /*
+ elInput.on("contextmenu", function(e){
+ var items = [{name: "Reset", click: function(){
+ self.reset();
+ }}];
+ if (definition.automatable) {
+ items.push({
+ name: "Automate",
+ click: function(){
+ if (!options.unmanagedAutomation) {
+ transform.showAutomation(definition.name, elSpline);
+ }
+ }
+ });
+ }
+
+ items.push({
+ name: "Randomise",
+ click: function(){
+ self.randomise();
+ }
+ });
+
+ items.push({
+ name: ((randomiseAllowed) ? "Exclude from" : "Include in") + " randomisation",
+ click: randomiseButton.click
+ });
+
+ twirl.contextMenu.show(e, items);
+ });*/
+
+ elContainer.append(elInput);
+ if (initval) {
+ self.setRawValue(definition.dfault);
+ if (definition.fireChanges) {
+ elInput.trigger("change");
+ }
+ }
+
+
+ this.setDefault = function() {
+ elInput.val(definition.dfault).trigger("change");
+ //app.setControlChannel(sendChannel, definition.dfault);
+ };
+
+ this.remove = function() {
+ disableAutomation();
+ elRow.remove();
+ if (elSpline) {
+ elSpline.remove();
+ }
+ if (self.modulation) {
+ self.modulation = null;
+ }
+
+ if (self.automation) {
+ self.automation = null;
+ }
+ };
+
+ this.getAutomationData = function(start, end) {
+ if (self.modulation) {
+ var m = twirl.appdata.modulations[self.modulation];
+ return {type: "modulation", data: [m.instr, self.sendChannel]};
+ } else if (automationActive && self.automation) {
+ return {type: "automation", channel: self.sendChannel, data: self.automation.getLinsegData(start, end, options.getRegionFunc())};
+ }
+ };
+
+ var resetButton = twirl.createIcon({
+ label: "Reset parameter",
+ icon: "reset",
+ click: function() {
+ self.reset();
+ }
+ });
+
+ var randomiseButton = twirl.createIcon({
+ label: "Include in randomisation",
+ icon: "randomise",
+ click: function(obj) {
+ randomiseAllowed = !randomiseAllowed;
+ var opacity = (randomiseAllowed) ? 1 : 0.4;
+ obj.el.css("opacity", opacity);
+ }
+ });
+ if (!randomiseAllowed) {
+ randomiseButton.el.css("opacity", 0.4);
+ }
+
+ var elSpline;
+ var editAutomationButton = twirl.createIcon({
+ label: "Select automation",
+ icon: "show",
+ click: function() {
+ if (!transform) return;
+ if (elSpline) {
+ automationShown = true;
+ transform.showAutomation(definition.name, elSpline);
+ }
+ }
+ });
+ editAutomationButton.el.hide();
+
+ var automationButton = twirl.createIcon({
+ label: "Automate",
+ label2: "Close automation",
+ icon: "automate",
+ icon2: "close",
+ click: function() {
+ if (elSpline && automationActive) {
+ disableAutomation();
+ if (options.onAutomationClick) options.onAutomationClick(false);
+ } else {
+ showAutomation();
+ if (options.onAutomationClick) options.onAutomationClick(true);
+ }
+ }
+ });
+
+ var automationActive = false;
+ var automationShown = false;
+
+ this.hideAutomation = function() {
+ if (!transform) return;
+ automationShown = false;
+ if (elSpline) {
+ transform.hideAutomation(definition.name);
+ }
+ }
+
+ function disableAutomation() {
+ if (!transform) return;
+ automationActive = false;
+ automationShown = false;
+ if (!host.offline) app.setControlChannel(self.sendChannel, self.getValue());
+ elValueLabel.show();
+ elInput.show();
+ modButton.el.show();
+ automationButton.setState(true);
+ editAutomationButton.el.hide();
+ self.hideAutomation();
+ }
+
+ this.redraw = function(region) {
+ if (self.automation && !options.unmanagedAutomation) {
+ if (region && region[0] != null && region[1] != null) {
+ self.automation.setRange(region[0], region[1]);
+ } else {
+ self.automation.redraw();
+ }
+ }
+ };
+
+ this.createAutomationSpline = function(elTarget, colour) {
+ if (!colour) colour = twirl.random.rgbColour();
+ if (!self.automation) {
+ self.automation = new SplineEdit(
+ elTarget, colour,
+ options.getDurationFunc,
+ [definition.min, definition.max, self.getValue(), definition.step],
+ definition.name
+ );
+ }
+ };
+
+ function showAutomation() {
+ if (!transform) return;
+ var colour = twirl.random.rgbColour();
+ automationShown = true;
+ automationActive = true;
+
+ if (!elSpline) {
+ elSpline = $("<div />").attr("id", "spl_" + channel).css({
+ position: "absolute", width: "100%", height: "100%", overflow: "hidden"
+ });
+ }
+
+ transform.showAutomation(definition.name, elSpline);
+ self.createAutomationSpline(elSpline, colour);
+
+
+ elValueLabel.hide();
+ elInput.hide();
+ modButton.el.hide();
+ elSpline.show();
+ editAutomationButton.el.show(); //.css("background-color", colour);
+ automationButton.setState(false);
+ }
+
+
+ elModulations = $("<div />").addClass("twirl_tf_container").hide().appendTo(elContainer);
+ var modulationShown = false;
+
+
+ var modButton = twirl.createIcon({
+ label: "Modulate",
+ label2: "Close modulation",
+ icon: "modulate",
+ icon2: "close",
+ click: function() {
+ if (elModulations && modulationShown) {
+ hideModulations();
+ } else {
+ showModulations();
+ }
+ }
+ });
+
+ function hideModulations() {
+ app.setControlChannel(self.sendChannel, self.getValue());
+ modulationShown = false;
+ elValueLabel.show();
+ elInput.show();
+ automationButton.el.show();
+ self.modulation = null;
+ modButton.setState(true);
+ if (elModulations) {
+ elModulations.hide();
+ }
+ }
+
+ function showModulations() {
+ if (!transform) return;
+ modulationShown = true;
+ elValueLabel.hide();
+ elInput.hide();
+ automationButton.el.hide();
+ elModulations.show();
+ modButton.setState(false);
+ if (elModulations.children().length != 0) {
+ elModSelect.val(0).trigger("change");
+ return;
+ }
+ var tb = $("<tbody />");
+ function buildModulation(i) {
+ tb.empty();
+ self.modulationParameters = {};
+ self.modulation = i;
+ let m = twirl.appdata.modulations[i];
+ for (let x of m.parameters) {
+ var tp = new twirl.transform.Parameter({
+ instrument: m.instr,
+ definition: x,
+ transform: transform,
+ parent: self,
+ onAutomationClick: options.onAutomationClick,
+ getDurationFunc: options.getDurationFunc,
+ getRegionFunc: options.getRegionFunc,
+ otherInstanceNamesFunc: options.otherInstanceNamesFunc,
+ instancesFunc: options.instancesFunc,
+ host: options.host
+ });
+ self.modulationParameters[tp.channel] = tp;
+ tb.append(tp.getElementRow(true)); // hmm modulate the modulation with false
+ }
+ }
+ var selecttb = $("<tbody />").appendTo($("<table />)").appendTo(elModulations));
+ var row = $("<tr />").append($("<td />").addClass("twirl_tf_cell_text").text("Modulation type")).appendTo(selecttb);
+ var elConditionalOptions = [];
+
+ if (host.onInstanceChangeds) {
+ host.onInstanceChangeds.push(function(){
+
+ for (let o of elConditionalOptions) {
+ if (options.instancesFunc().length == 1) {
+ o.prop("disabled", true);
+ } else {
+ o.prop("disabled", false);
+ }
+ }
+ });
+ }
+
+ elModSelect = $("<select />").change(function() {
+ self.modulation = $(this).val();
+ buildModulation(self.modulation);
+ }).appendTo($("<td />").appendTo(row));
+ $("<table />").append(tb).appendTo(elModulations);
+
+ for (let i in twirl.appdata.modulations) {
+ var m = twirl.appdata.modulations[i];
+ var o = $("<option />").text(m.name).val(i).appendTo(elModSelect);
+ if (m.inputs > 1) {
+ elConditionalOptions.push(o);
+ if (!options.instancesFunc || options.instancesFunc().length == 1) {
+ o.prop("disabled", true);
+ }
+ }
+ }
+ elModSelect.val(0).trigger("change");
+ }
+
+ this.getElementRow = function(nocontrols) {
+ if (definition.hidden) {
+ return null;
+ };
+ if (elRow) {
+ return elRow;
+ }
+ elRow = $("<tr />");
+ var name = $("<td />").addClass("twirl_tf_cell_text").text(definition.name).appendTo(elRow);
+ if (definition.description) {
+ name.on("mouseover", function(event){
+ twirl.tooltip.show(event, definition.description);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ $("<td />").addClass("twirl_tf_cell").append(elContainer).appendTo(elRow);
+ $("<td />").addClass("twirl_tf_cellfixed").append(elValueLabel).appendTo(elRow);
+ if (!nocontrols) {
+ for (let b of [resetButton, randomiseButton]) $("<td />").addClass("twirl_tf_cell_plainbg").append(b.el).appendTo(elRow);
+
+ if (definition.automatable) {
+ var items = [];
+ if (!options.unmanagedAutomation) {
+ items.push(automationButton);
+ items.push(editAutomationButton);
+ }
+ if (!options.unmanagedModulation) {
+ items.push(modButton);
+ }
+ for (let b of items) $("<td />").addClass("twirl_tf_cell_plainbg").append(b.el).appendTo(elRow);
+ }
+
+ }
+ return elRow;
+ };
+};
+
+
+
+twirl.transform.Transform = function(options) {
+ var self = this;
+ var elTarget = options.element;
+ var def = options.definition;
+ var host = options.host;
+ var elTb;
+ var pAddOdd = true;
+ this.path = (options.path) ? options.path : def.name;
+ this.instr = def.instr;
+ this.name = def.name;
+ this.refreshable = false;
+ var elSplineOverlay;
+ var hideAutomationButton;
+ this.parameters = {};
+ this.uniqueID = 0;
+
+ if (options.uniqueID) {
+ this.uniqueID = options.uniqueID;
+ }
+
+ var automationEls = {};
+ this.showAutomation = function(name, el) {
+ if (!elSplineOverlay) {
+ elSplineOverlay = $("<div />").addClass("twirl_spline_overlay").appendTo(options.splineElement);
+ }
+ for (var e in automationEls) {
+ automationEls[e].css({"z-index": 23, opacity: 0.4});
+ }
+ if (!el) {
+ el = automationEls[name];
+ } else {
+ automationEls[name] = el;
+ }
+ el.css({"z-index": 24, opacity: 1}).show();
+ hideAutomationButton.el.show();
+ elSplineOverlay.show();
+ if (el.parents(elSplineOverlay).length == 0) {
+ elSplineOverlay.append(el);
+ }
+ options.splineElement.show();
+ if (options.onShowAutomation) {
+ options.onShowAutomation();
+ }
+ };
+
+ this.getLagHints = function() {
+ var lagHints = [];
+ for (let i in self.parameters) {
+ var p = self.parameters[i];
+ var lagHint = p.getLagHint();
+ if (lagHint) lagHints.push(lagHint);
+ }
+ var lagHintHtml;
+ if (lagHints.length != 0) {
+ lagHintHtml = "Try ";
+ for (var i in lagHints) {
+ lagHintHtml += lagHints[i];
+ if (i != lagHints.length - 1) {
+ lagHintHtml += ((i == lagHints.length - 2) ? " or " : ", ");
+ }
+ }
+ }
+ return lagHintHtml;
+ };
+
+ this.hideAutomation = function(name) {
+ if (automationEls[name]) {
+ automationEls[name].hide();
+ delete automationEls[name];
+ if (Object.keys(automationEls).length == 0) {
+ elSplineOverlay.hide();
+ hideAutomationButton.el.hide();
+ options.splineElement.hide();
+ if (options.onHideAllAutomation) {
+ options.onHideAllAutomation();
+ }
+ }
+ }
+ }
+
+ this.hideAllAutomation = function(name) {
+ for (let p in self.parameters) {
+ self.parameters[p].hideAutomation();
+ }
+ };
+
+ this.redraw = function(region) {
+ for (let p in self.parameters) {
+ self.parameters[p].redraw(region);
+ }
+ };
+
+ this.refresh = function() {
+ if (!self.refreshable) {
+ return;
+ }
+ for (var k in self.parameters) {
+ self.parameters[k].refresh();
+ }
+ };
+
+ this.getAutomationData = function(start, end) {
+ var automations = [];
+ for (var k in self.parameters) {
+ var data = self.parameters[k].getAutomationData(start, end);
+ if (data) {
+ automations.push(data);
+ }
+ }
+ return automations;
+ };
+
+ this.getState = async function() {
+ var data = {instr: def.instr, name: self.path, channels: {}};
+ var value;
+ for (let chan in self.parameters) {
+ value = await app.getControlChannel(self.parameters[chan].sendChannel);
+ data.channels[chan] = value;
+ if (self.parameters[chan].modulationParameters) {
+ for (let modchan in self.parameters[chan].modulationParameters) {
+ value = await app.getControlChannel(self.parameters[chan].modulationParameters[modchan].sendChannel);
+ data.channels[modchan] = value;
+ }
+ }
+ }
+ return data;
+ };
+
+
+ this.reset = function() {
+ for (let p in self.parameters) {
+ self.parameters[p].reset();
+ }
+ };
+
+ this.randomise = function() {
+ for (let p in self.parameters) {
+ self.parameters[p].randomise();
+ if (!options.unmanagedModulation && self.parameters[p].modulationParameters) {
+ for (let mp in self.parameters[p].modulationParameters) {
+ self.parameters[p].modulationParameters[mp].randomise();
+ }
+ }
+ }
+ };
+
+ this.saveState = function() {
+ if (!options.useStorage || !host.storage) return;
+ var state = {};
+ for (let p in self.parameters) {
+ state[p] = self.parameters[p].getRawValue();
+ }
+ if (!host.storage.transforms) {
+ host.storage.transforms = {};
+ }
+ host.storage.transforms[def.instr] = state;
+ host.saveStorage();
+ };
+
+ this.remove = function() {
+ self.saveState();
+ for (let p in self.parameters) {
+ self.parameters[p].remove();
+ }
+ if (elSplineOverlay) {
+ elSplineOverlay.remove();
+ }
+ }
+
+ this.removeParameter = function(channel) {
+ if (self.parameters.hasOwnProperty(channel)) {
+ self.parameters[channel].remove();
+ delete self.parameters[channel]
+ }
+ };
+
+ function addParameter(pdef) {
+ var tp = new twirl.transform.Parameter({
+ instrument: def.instr,
+ definition: pdef,
+ transform: self,
+ getDurationFunc: options.getDurationFunc,
+ getRegionFunc: options.getRegionFunc,
+ otherInstanceNamesFunc: options.otherInstanceNamesFunc,
+ instancesFunc: options.instancesFunc,
+ unmanagedAutomation: options.unmanagedAutomation,
+ unmanagedModulation: options.unmanagedModulation,
+ host: host
+ });
+ self.parameters[tp.channel] = tp;
+ var er = tp.getElementRow();
+ if (er) {
+ elTb.append(er.addClass("twirl_tf_row_" + ((pAddOdd) ? "odd" : "even")));
+ pAddOdd = !pAddOdd;
+ };
+ };
+
+ this.setPlaying = function(state) {
+ for (let i in self.parameters) {
+ self.parameters[i].setPlaying(state);
+ }
+ };
+
+ function namePrepend(name, pdef) {
+ if (!pdef.hasOwnProperty("nameprepend")) return name;
+ name = pdef.nameprepend + " " + name;
+ return name[0] + name.substr(1).toLowerCase()
+ }
+
+ this.addParameter = function(pdef) {
+ if (!pdef.hasOwnProperty("presetgroup")) {
+ return addParameter(pdef);
+ }
+ var name;
+ var conditions;
+ var groupParameters = [];
+ var channelPrepend = (pdef.hasOwnProperty("channelprepend")) ? pdef.channelprepend : "";
+
+ if (pdef.presetgroup == "pvsynth") {
+ var dfaultMode = (pdef.hasOwnProperty("dfault")) ? pdef.dfault : 0;
+ conditions = [
+ {channel: channelPrepend + "pvresmode", operator: "eq", value: 1}
+ ];
+ groupParameters = [
+ {name: namePrepend("Resynth mode", pdef), channel: channelPrepend + "pvresmode", description: "Type of FFT resynthesis used", dfault: dfaultMode, options: ["Overlap-add", "Additive"], automatable: false},
+ {name: namePrepend("Oscillator spread", pdef), channel: channelPrepend + "pvaoscnum", description: "Number of oscillators used", automatable: false, conditions: conditions, lagHint: -1},
+ {name: namePrepend("Frequency modulation", pdef), channel: channelPrepend + "pvafreqmod", description: "Frequency modulation", dfault: 1, min: 0.01, max: 2, conditions: conditions},
+ {name: namePrepend("Oscillator offset", pdef), channel: channelPrepend + "pvabinoffset", description: "Oscillator bin offset", automatable: false, conditions: conditions, dfault: 0, lagHint: 1},
+ {name: namePrepend("Oscillator increment", pdef), channel: channelPrepend + "pvabinincr", description: "Oscillator bin increment", min: 1, max: 8, dfault: 1, step: 1, automatable: false, conditions: conditions, lagHint: -1}
+ ];
+
+ } else if (pdef.presetgroup == "applymode") {
+ var conditionsMix = [{channel: "applymode", operator: "eq", value: 1, absolutechannel: true}];
+ var conditionsFilter = [{channel: "applymode", operator: "eq", value: 4, absolutechannel: true}];
+ if (pdef.conditions) {
+ for (let c of pdef.conditions) {
+ conditionsMix.push(c);
+ conditionsFilter.push(c);
+ }
+ }
+ groupParameters = [
+ {name: "Apply mode", channel: "applymode", absolutechannel: true, description: "Apply mode", automatable: true, options: ["Replace", "Mix", "Modulate", "Demodulate", "Filter"], dfault: 0, conditions: pdef.conditions},
+ {name: "Dry mix", description: "Original signal amplitude", channel: "applymodedry", absolutechannel: true, conditions: conditionsMix, min: 0, max: 1, dfault: 1},
+ {name: "Wet mix", description: "Transformed signal amplitude", channel: "applymodewet", absolutechannel: true, conditions: conditionsMix, min: 0, max: 1, dfault: 1},
+ {name: "Minimum frequency", description: "Minimum frequency to transform", channel: "applymodedry", absolutechannel: true, conditions: conditionsFilter, min: 20, max: 44100, dfault: 500},
+ {name: "Maximum frequency", description: "Maximum frequency to transform", channel: "applymodedry", absolutechannel: true, conditions: conditionsFilter, min: 20, max: 44100, dfault: 2000}
+ ];
+
+ } else if (pdef.presetgroup == "pvanal") {
+ /* LPC unstable with WASM
+ groupParameters = [
+ {name: "Analysis type", channel: "pvstype", options: ["Overlap-add", "Linear prediction"], dfault: 0, automatable: false},
+ {preset: "fftsize"},
+ {name: "Overlap decimation", options: [2, 4, 8, 16], asvalue: true, dfault: 1, channel: "pvsdecimation", automatable: false, lagHint: -1},
+ {preset: "pvslock"},
+ {name: "Window size multiplier", min: 1, max: 4, dfault: 1, step :1, channel: "pvswinsizem", automatable: false, lagHint: -1, conditions: [{channel: "pvstype", operator: "eq", value: 0}]},
+ {name: "Order multiplier", description: "Linear predictor order (FFT size multiplier)", min: 0.001, max: 1, dfault: 0.25, channel: "pvsorderm", automatable: false, lagHint: -1, conditions: [{channel: "pvstype", operator: "eq", value: 1}]},
+ {name: "Window type", channel: "pvswintype", options: ["Hamming", "Von Hann", "Kaiser"], dfault: 1, automatable: false, conditions: [{channel: "pvstype", operator: "eq", value: 0}]},
+ {name: "Window type", channel: "pvswintypelpc", options: ["Hanning", "Hamming", "Half sine"], dfault: 0, automatable: false, conditions: [{channel: "pvstype", operator: "eq", value: 1}]}
+ ];
+ */
+ groupParameters = [
+ {preset: "fftsize"},
+ {name: "Overlap decimation", options: [2, 4, 8, 16], asvalue: true, dfault: 1, channel: "pvsdecimation", automatable: false, lagHint: -1},
+ {preset: "pvslock"},
+ {name: "Window size multiplier", min: 1, max: 4, dfault: 1, step :1, channel: "pvswinsizem", automatable: false, lagHint: -1},
+ {name: "Window type", channel: "pvswintype", options: ["Hamming", "Von Hann", "Kaiser"], dfault: 1, automatable: false}
+ ];
+ } else if (pdef.presetgroup == "pitchscale") {
+ groupParameters = [
+ {name: namePrepend("Pitch scale mode", pdef), channel: channelPrepend + "pitchscalemode", options: ["Ratio", "Semitone"], dfault: 0},
+ {name: namePrepend("Pitch scale", pdef), channel: channelPrepend + "pitchscale", description: "Pitch scaling", dfault: 1, min: 0.01, max: 10, conditions: [{channel: channelPrepend + "pitchscalemode", operator: "eq", value: 0}]},
+ {name: namePrepend("Semitones", pdef), channel: channelPrepend + "pitchsemitones", min: -24, max: 24, step: 1, dfault: 0, conditions: [{channel: channelPrepend + "pitchscalemode", operator: "eq", value: 1}]}
+ ];
+
+ } else if (pdef.presetgroup == "notefreq") {
+ var base = {name: namePrepend("Frequency mode", pdef), channel: channelPrepend + "freqmode", description: "Frequency mode", options: ["Frequency", "Note"], dfault: 0};
+ if (pdef.hasOwnProperty("conditions")) {
+ base["conditions"] = pdef.conditions;
+ }
+ groupParameters.push(base);
+
+ conditions = [{channel: channelPrepend + "freqmode", operator: "eq", value: 0}];
+ if (pdef.hasOwnProperty("conditions")) {
+ Array.prototype.push.apply(conditions, pdef.conditions);
+ }
+
+ var dfaultFreq = (pdef.hasOwnProperty("dfault")) ? pdef.dfault : 440;
+
+ var freq = {name: namePrepend("Frequency", pdef), channel: channelPrepend + "freq", description: "Frequency", dfault: dfaultFreq, min: 20, max: 22000, conditions: conditions}
+ if (pdef.hasOwnProperty("lagHint")) {
+ freq.lagHint = pdef.lagHint;
+ }
+ groupParameters.push(freq);
+
+ conditions = [{channel: channelPrepend + "freqmode", operator: "eq", value: 1}];
+ if (pdef.hasOwnProperty("conditions")) {
+ Array.prototype.push.apply(conditions, pdef.conditions);
+ }
+ var note = {preset: "note", name: namePrepend("Note", pdef), conditions: conditions, channel: channelPrepend + "note"};
+ if (pdef.hasOwnProperty("lagHint")) {
+ note.lagHint = pdef.lagHint;
+ }
+ groupParameters.push(note);
+
+ }
+ for (let gp of groupParameters) {
+ if (pdef.hasOwnProperty("automatable")) {
+ gp.automatable = pdef.automatable;
+ }
+ addParameter(gp);
+ }
+ }
+
+ function build() {
+ elTarget.empty();
+ var elContainer = $("<div />").addClass("twirl_tf_container").appendTo(elTarget);
+ hideAutomationButton = twirl.createIcon({label: "Hide automation", icon: "hide", click: function() {
+ self.hideAllAutomation();
+ }});
+ hideAutomationButton.el.hide();
+
+ if (!host.offline) {
+ app.setControlChannel("applymode" + self.uniqueID, 0); // not all transforms will set this
+ }
+
+ var header = $("<div />").addClass("twirl_tf_header");
+ if (def.unstable) {
+ $("<div />").css({
+ "background-color": "#aa0000",
+ color: "#ffffff",
+ "font-size": "var(--fontSizeSmall)"
+ }).text("Instabilities have been reported with this transform. It is recommended you save your work before using it.").appendTo(header);
+ }
+ $("<div />").text(def.name).appendTo(header);
+ if (options.onClose) {
+ header.append(twirl.createIcon({
+ label: "Close",
+ icon: "close",
+ click: function() { options.onClose()},
+ size: 20
+ }).el.css("float", "right"));
+ }
+ var el = $("<div />").addClass("twirl_tf_container").append(header).appendTo(elContainer);
+
+ if (def.description) {
+ header.on("mouseover", function(event){
+ twirl.tooltip.show(event, def.description);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ $("<div />").css({"float": "right"}).append(
+ hideAutomationButton.el
+ ).append(
+ twirl.createIcon({
+ label: "Randomise parameters",
+ icon: "randomise",
+ click: function() {
+ self.randomise();
+ }
+ }).el
+ ).append(
+ twirl.createIcon({
+ label: "Reset parameters",
+ icon: "reset",
+ click: function() {
+ self.reset();
+ }
+ }).el
+ ).appendTo(el);
+
+
+
+ var tbl = $("<table />").appendTo(elContainer);
+ elTb = $("<tbody />").appendTo(tbl);
+ for (let p of def.parameters) {
+ self.addParameter(p);
+ }
+
+ if (options.useStorage && host.storage && host.storage.transforms && host.storage.transforms[def.instr]) {
+ var state = host.storage.transforms[def.instr];
+ for (var p in state) {
+ self.parameters[p].setRawValue(state[p]);
+ }
+ }
+ self.refresh();
+ }
+ build();
+};
+
+twirl.transform.TreeView = function(options) {
+ var self = this;
+
+ function recurse(items, descended, path) {
+ if (!path) path = "";
+ items = (items) ? items : options.items;
+ var ul = $("<ul />").addClass("twirl_treeview_treelist").addClass((descended) ? "twirl_treeview_nested" : "ttwirl_treeview_reelist");
+
+ for (let k in items) {
+ let name = items[k].name;
+ let thisPath = path + "> " + items[k].name;
+ var li = $("<li />");
+ if (items[k].description) {
+ li.on("mouseover", function(event){
+ twirl.tooltip.show(event, items[k].description);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+ if (items[k].hasOwnProperty("contents")) {
+ $("<span />").addClass("twirl_treeview_caret").text(name).click(function() {
+ $(this).parent().children(".twirl_treeview_nested").toggleClass("twirl_treeview_active");
+ $(this).toggleClass("twirl_treeview_caret-down");
+ }).appendTo(li);
+ var subitems = recurse(items[k].contents, true, thisPath);
+ li.append(subitems);
+
+ } else {
+ var content = name;
+ if (items[k].hasOwnProperty("added")) {
+ var dp = items[k].added.split("-");
+ var added = new Date(dp[0], dp[1] - 1, dp[2]);
+ if (Math.round((new Date() - added) / (1000 * 60 * 60 * 24)) <= 14) {
+ x.html(name + " <p style=\"display:inline;color:#ff2222;\">&nbsp;&nbsp;[new]</p>");
+ }
+ }
+ li.html(content).css("cursor", "pointer").click(function() {
+ options.click(items[k], thisPath);
+ });
+ }
+ ul.append(li);
+ }
+ options.element.append(ul);
+ return ul;
+ }
+
+ options.element.append(recurse());
+}; \ No newline at end of file
diff --git a/site/app/twirl/twirl.css b/site/app/twirl/twirl.css
new file mode 100644
index 0000000..f4163fa
--- /dev/null
+++ b/site/app/twirl/twirl.css
@@ -0,0 +1,310 @@
+select {
+ background-color: var(--bgColor3);
+ color: var(--fgColor2);
+}
+
+input {
+ background-color: var(--bgColor3);
+ color: var(--fgColor2);
+}
+
+.twirl_contextmenu {
+ position: absolute;
+ background-color: var(--bgColor3);
+ border: var(--menuBarBottomBorder);
+ color: var(--fgColor1);
+ cursor: arrow;
+ display: none;
+ user-select: none;
+ z-index: 30;
+ opacity: 0.9;
+ padding: 2px;
+}
+
+.twirl_contextmenu_item {
+ font-size: var(--fontSizeDefault);
+}
+
+.twirl_contextmenu_item:hover {
+ color: var(--bgColor1);
+ background-color: var(--fgColor2);
+}
+
+.twirl_slider {
+ appearance: none;
+ outline: none;
+ background-color: var(--bgColor3);
+ background: var(--bgColor3);
+ accent-color: var(--fgColor2);
+}
+
+.twirl_transparentinput {
+ font-size: var(--fontSizeDefault);
+ background-color: var(--bgColor2);
+ color: var(--fgColor3);
+ border: none;
+}
+
+.twirl_tf_container {
+ font-size: var(--fontSizeSmall);
+ font-family: var(--fontFace);
+}
+
+.twirl_tf_row_odd {
+ background-color: var(--rowOddBgColor);
+}
+
+.twirl_tf_row_even {
+ background-color: var(--rowEvenBgColor);
+}
+
+.twirl_tf_cell_plainbg {
+ background-color: var(--bgColor4);
+}
+
+.twirl_tf_cell {
+ font-size: var(--fontSizeDefault);
+}
+
+.twirl_tf_cell_text {
+ font-size: var(--fontSizeDefault);
+ text-align: right;
+}
+
+.twirl_tf_cellfixed {
+ overflow: hidden;
+ width: 40px;
+}
+
+.twirl_tf_header {
+ background-color: var(--bgColor4);
+ font-size: var(--fontSizeDefault);
+ font-weight: bold;
+}
+
+.twirl_spline_overlay {
+ position: absolute;
+ width: 100%;
+ top: 0px;
+ bottom: 0px;
+ left: 0px;
+}
+
+.twirl_tooltip {
+ position: absolute;
+ text-align: center;
+ border-radius: 5px;
+ pointer-events: none;
+ padding: 2px;
+ color: #000000;
+ opacity: 0;
+ font-family: var(--fontFace);
+ font-size: var(--fontSizeSmall);
+ text-shadow: 1px 1px #ffffff;
+ z-index: 210;
+}
+
+#twirl_prompt {
+ z-index: 201;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ display: none;
+}
+
+#twirl_prompt_background {
+ z-index: 202;
+ background-color: #ffffff;
+ opacity: 0.3;
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+}
+
+#twirl_prompt_inner {
+ z-index: 204;
+ margin: 0px;
+ padding: 10px;
+ position: absolute;
+ font-size: var(--promptFontSize);
+ background-color: var(--promptBgColor);
+ border: var(--promptBorder);
+ box-shadow: var(--promptShadow);
+ width: 40%;
+ min-height: 30%;
+ left: 30%;
+ top: 35%;
+ text-align: center;
+ overflow: auto;
+ scrollbar-color: var(--scrollbarColor);
+}
+
+#twirl_prompt_button_text {
+ font-size: var(--fontSizeMedium);
+ padding: 5px;
+}
+
+#twirl_loading {
+ position: fixed;
+ display: none;
+ z-index: 161;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+}
+
+#twirl_loading_background {
+ position: absolute;
+ z-index: 162;
+ background-color: #ffffff;
+ opacity: 0.2;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+}
+
+#twirl_loading_inner {
+ z-index: 163;
+ position: absolute;
+ font-size: var(--promptFontSize);
+ background-color: var(--promptBgColor);
+ border: var(--promptBorder);
+ box-shadow: var(--promptShadow);
+ text-align: center;
+ width: 50%;
+ height: 20%;
+ left: 25%;
+ top: 40%;
+}
+
+#twirl_loading_percent {
+ z-index: 163;
+ position: absolute;
+ top: 80%;
+ left: 10%;
+ width: 80%;
+ height: 10%;
+ background-color: #9e8c6d;
+}
+
+#twirl_loading_percent_inner {
+ z-index: 163;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ height: 100%;
+ width: 1%;
+ background-color: #e0c494;
+}
+
+.twirl_icon {
+ cursor: pointer;
+ filter: var(--iconFilter);
+}
+
+.topmenu {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ right: 0px;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ background-color: var(--bgColor1);
+ border-bottom: var(--menuBarBottomBorder);
+ color: var(--fgColor2);
+ cursor: arrow;
+ user-select: none;
+ z-index: 40;
+}
+
+.topmenu_item {
+ float: left;
+ font-size: var(--fontSizeDefault);
+ text-align: center;
+ padding: 2px 5px;
+ z-index: 40;
+}
+
+.topmenu_item:hover {
+ color: var(--bgColor1);
+ background-color: var(--fgColor2);
+}
+
+.topmenu_dropdown {
+ display: none;
+ border: 1px solid black;
+ position: fixed;
+ margin: 2px -5px;
+ background-color: var(--bgColor1);
+ color: var(--fgColor2);
+ min-width: 160px;
+ padding-top: 0px;
+ padding-left: 2px;
+ padding-right: 2px;
+ padding-bottom: 2px;
+ box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+ z-index: 40;
+}
+
+.topmenu_dropdown_item {
+ text-align: left;
+ z-index: 40;
+}
+
+.topmenu_dropdown_item_disabled {
+ text-align: left;
+ color: #666666;
+ font-style: italic;
+ z-index: 40;
+}
+
+.topmenu_dropdown .topmenu_dropdown_item:hover {
+ background-color: #000000;
+}
+
+.topmenu_dropdown_itemright {
+ float: right;
+}
+
+ul, .twirl_treeview_treelist {
+ list-style-type: none;
+ font-size: var(--fontSizeSmall);
+ border-bottom: 1px solid #878787;
+}
+
+.twirl_treeview_treelist {
+ margin: 0;
+ padding: 0;
+}
+
+.twirl_treeview_caret {
+ cursor: pointer;
+ font-size: var(--fontSizeDefault);
+ user-select: none;
+}
+
+.twirl_treeview_caret::before {
+ content: "\25B6";
+ color: black;
+ display: inline-block;
+ margin-right: 6px;
+}
+
+.twirl_treeview_caret-down::before {
+ transform: rotate(90deg);
+}
+
+.twirl_treeview_nested {
+ margin-left: 20px;
+ display: none;
+}
+.twirl_treeview_active {
+ display: block;
+}
diff --git a/site/app/twirl/twirl.js b/site/app/twirl/twirl.js
new file mode 100644
index 0000000..5f201f6
--- /dev/null
+++ b/site/app/twirl/twirl.js
@@ -0,0 +1,479 @@
+window.twirl = {
+ debug: false, //window.location.href.startsWith("file://"),
+ themes: ["Default", "Basic", "Hacker", "Monoclassic", "Doze"],
+ audioTypes: ["audio/mpeg", "audio/mp4", "audio/ogg", "audio/vorbis", "audio/x-flac","audio/aiff","audio/x-aiff", "audio/vnd.wav", "audio/wave", "audio/x-wav", "audio/wav", "audio/flac"],
+ maxFileSize: 1e+8, // 100MB
+ latencyCorrection: 40,
+ storage: {},
+ errorState: null,
+ audioContext: null,
+ _booted: false,
+ _initialised: false,
+ _remote: {sessionID: null, sending: false},
+ _els: {
+ base: null,
+ toolTip: null,
+ prompt: {},
+ loading: {},
+ contextMenu: null
+ }
+};
+
+twirl.boot = function() {
+ if (twirl._booted) return;
+ twirl.audioContext = new AudioContext();
+ twirl._booted = true;
+};
+
+twirl.init = function() {
+ if (twirl._initialised) return;
+
+ var NoteData = function() {
+ var self = this;
+ this.data = null;
+ fetch("https://apps.csound.1bpm.net/app/twirl/notedata.json").then(function(r) {
+ r.json().then(function(j) {
+ self.data = j;
+ });
+ });
+ };
+ twirl.noteData = new NoteData();
+
+ // storage
+ twirl.storage.data = localStorage.getItem("twirl");
+ if (twirl.storage.data) {
+ twirl.storage.data = JSON.parse(twirl.storage.data);
+ } else {
+ twirl.storage.data = {};
+ }
+
+ // base
+ twirl._els.base = $("<div />").attr("id", "twirl").appendTo($("body"));
+
+ // tooltip
+ twirl._els.toolTip = $("<div />").addClass("twirl_tooltip").appendTo(twirl._els.base);
+
+ // context menu
+ twirl._els.contextMenu = $("<div />").addClass("twirl_contextmenu").appendTo(twirl._els.base);
+
+ // prompt
+ var p = twirl._els.prompt;
+ p.base = $("<div />").attr("id", "twirl_prompt").appendTo(twirl._els.base);
+ $("<div />").attr("id", "twirl_prompt_background").appendTo(p.base);
+ var promptInner = $("<div />").attr("id", "twirl_prompt_inner").appendTo(p.base);
+ p.text = $("<div />").attr("id", "twirl_prompt_text").appendTo(promptInner);
+ p.button = $("<button />").attr("id", "twirl_prompt_button_text").text("OK");
+ p.buttonContainer = $("<div />").attr("id", "twirl_prompt_button").append($("<hr />")).append(p.button).appendTo(promptInner);
+
+ // loading
+ var l = twirl._els.loading;
+ l.base = $("<div />").attr("id", "twirl_loading").appendTo(twirl._els.base);
+ $("<div />").attr("id", "twirl_loading_background").appendTo(l.base);
+ var loadingInner = $("<div />").attr("id", "twirl_loading_inner").appendTo(l.base);
+ l.text = $("<p />").attr("id", "twirl_loading_text").text("Processing").appendTo(loadingInner);
+ l.percentContainer = $("<div />").attr("id", "twirl_loading_percent").appendTo(loadingInner);
+ l.percent = $("<div />").attr("id", "twirl_loading_percent_inner").appendTo(l.percentContainer);
+
+ // theme
+ if (twirl.storage.data.theme) {
+ twirl.setTheme(twirl.storage.data.theme, true);
+ }
+ twirl._initialised = true;
+};
+
+twirl.storage.save = function() {
+ localStorage.setItem("twirl", JSON.stringify(twirl.storage.data));
+};
+
+twirl.random = {
+ rgbColour: function() {
+ return "rgb(" + (Math.round(Math.random() * 50) + 205) + ","
+ + (Math.round(Math.random() * 50) + 205) + ","
+ + (Math.round(Math.random() * 50) + 205) + ")";
+ }
+};
+
+twirl.createIcon = function(definition) {
+ var state = true;
+ var active = true;
+ function formatPath(i) {
+ return "../twirl/icon/" + i + ".svg";
+ }
+ var el = $("<img />");
+
+ if (definition.size) {
+ el.css("width", definition.size + "px");
+ }
+
+ var obj = {
+ el: el,
+ setState: function(tstate) {
+ if (!definition.icon2) return;
+ state = tstate;
+ if (state) {
+ el.attr("src", formatPath(definition.icon));
+ } else {
+ el.attr("src", formatPath(definition.icon2));
+ }
+
+ },
+ setActive: function(state) {
+ if (state) {
+ el.css("opacity", 1);
+ active = true;
+ } else {
+ el.css("opacity", 0.4);
+ active = false;
+ }
+ },
+ definition: definition
+ };
+
+ obj.click = function() {
+ definition.click(obj);
+ };
+
+ el.addClass("twirl_icon").css("opacity", 1).attr("src", formatPath(definition.icon)).on("mouseover", function(event){
+ var label = (!state && definition.label2) ? definition.label2 : definition.label;
+ twirl.tooltip.show(event, label);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ }).click(function(el) {
+ if (active || definition.clickOnInactive) definition.click(obj);
+ });
+ return obj;
+};
+
+twirl.setTheme = function(name, noSave) {
+ var html = $("html");
+ if (html.attr("class")) {
+ for (let c of html.attr("class").split(/\s+/)) {
+ if (c.startsWith("theme")) {
+ html.removeClass(c);
+ }
+ }
+ }
+ html.addClass("theme" + name[0].toUpperCase() + name.substr(1).toLowerCase());
+ if (!noSave) {
+ twirl.storage.data.theme = name;
+ twirl.storage.save();
+ }
+};
+
+twirl.prompt = {
+ hide: function() {
+ twirl._els.prompt.base.hide();
+ },
+ show: function(text, onComplete, noButton) {
+ var p = twirl._els.prompt;
+ twirl.loading.hide();
+ p.text.empty();
+ if (typeof(text) == "string") {
+ p.text.text(text);
+ } else {
+ p.text.append(text);
+ }
+ if (!noButton) {
+ p.buttonContainer.show();
+ p.button.unbind().click(function(){
+ twirl.prompt.hide();
+ if (onComplete) onComplete();
+ });
+ } else {
+ p.buttonContainer.hide();
+ }
+ p.base.show();
+ }
+};
+
+twirl.loading = {
+ hide: function() {
+ $("body").css("cursor", "default");
+ twirl._els.loading.base.hide();
+ },
+ show: function(text, showPercent) {
+ var l = twirl._els.loading;
+ $("body").css("cursor", "wait");
+ l.text.text((text) ? text : "Processing");
+ if (showPercent) {
+ l.percentContainer.show();
+ } else {
+ l.percentContainer.hide();
+ }
+ l.base.show();
+ },
+ setPercent: function(percent) {
+ twirl._els.loading.percent.width(percent + "%");
+ }
+};
+
+twirl._setContextPosition = function(event, el, augmentations) {
+ var margin = 100;
+ if (!augmentations) augmentations = [0, 0];
+ if (event.clientX >= window.innerWidth - margin) {
+ el.css({right: margin + "px", left: "auto"});
+ } else {
+ el.css({right: "auto", left: (event.clientX + augmentations[0]) + "px"});
+ }
+
+ if (event.clientY >= window.innerHeight - margin) {
+ el.css({bottom: margin + "px", top: "auto"});
+ } else {
+ el.css({bottom: "auto", top: (event.clientY + augmentations[1]) + "px"});
+ }
+};
+
+twirl.contextMenu = {
+ show: function(event, data) {
+ event.preventDefault();
+ twirl._els.contextMenu.empty().unbind().on("mouseout", function(){
+ twirl._els.contextMenu.hide().off("mouseout");
+ });
+ for (let i in data) {
+ let d = data[i];
+ $("<div />").addClass("twirl_contextmenu_item").text(d.name).click(function(){
+ twirl._els.contextMenu.hide().off("mouseout");
+ d.click();
+ }).appendTo(twirl._els.contextMenu).on("mouseout", function(e){
+ e.stopPropagation();
+ });
+ }
+ twirl._setContextPosition(event, twirl._els.contextMenu, [-10, -10]);
+ twirl._els.contextMenu.show();
+ return false;
+ }
+};
+
+twirl.tooltip = {
+ show: function(event, text, colour) {
+ if (!colour) colour = "#bbbbbb";
+ var el = twirl._els.toolTip;
+ el.html(text).css({opacity: 0.8, "background-color": colour});
+ twirl._setContextPosition(event, el, [20, -15]);
+
+ },
+ hide: function() {
+ twirl._els.toolTip.css("opacity", 0);
+ }
+};
+
+twirl.sendErrorState = async function(errorObj) {
+ if (twirl._remote.sending) return;
+ twirl._remote.sending = true;
+ if (typeof(errorObj) == "function") {
+ errorObj = errorObj();
+ }
+ errorObj.application = $("title").text();
+ var data = {
+ request_type: "LogError",
+ error: errorObj
+ };
+
+ if (twirl._remote.sessionID) {
+ data.session_id = twirl._remote.sessionID;
+ }
+ var resp = await fetch("https:///service/", {
+ method: "POST",
+ headers: {
+ "Content-type": "application/json"
+ },
+ body: JSON.stringify(data)
+ });
+ var json = await resp.json();
+ if (json.session_id && !twirl._remote.sessionID) {
+ twirl._remote.sessionID = json.session_id;
+ }
+ twirl._remote.sending = false;
+};
+
+twirl.errorHandler = function(text, onComplete, errorObj) {
+ var errorText = (!text) ? twirl.errorState : text;
+ if (!errorObj) errorObj = {};
+ errorObj.text = errorText;
+ //twirl.sendErrorState(errorObj);
+ twirl.prompt.show(errorText, onComplete);
+ twirl.errorState = null;
+};
+
+twirl.showSettings = function(host, settings, onThemeChange) {
+ var el = $("<div />").css("font-size", "var(--fontSizeDefault)").append($("<h3 />").text("Settings"));
+ var tb = $("<tbody />");
+ $("<table />").append(tb).appendTo(el);
+
+ var currentThemeIndex;
+ if (twirl.storage.data.theme) currentThemeIndex = twirl.themes.indexOf(twirl.storage.data.theme);
+ if (!currentThemeIndex) currentThemeIndex = 0;
+
+ var tpTheme = new twirl.transform.Parameter({
+ definition: {name: "Theme", options: twirl.themes, dfault: currentThemeIndex, fireChanges: false, automatable: false},
+ host: host,
+ onChange: function(val) {
+ twirl.setTheme(twirl.themes[val]);
+ if (onThemeChange) onThemeChange();
+ }
+ });
+ tb.append(tpTheme.getElementRow(true))
+
+ for (let s of settings) {
+ var value;
+ if (s.options && s.storageKey) {
+ if (host.storage[s.storageKey]) value = host.storage[s.storageKey];
+ if (value < 0) value = s.dfault;
+ } else if (s.storageKey) {
+ value = (host.storage[s.storageKey]) ? host.storage[s.storageKey] : s.dfault;
+ if (s.bool) {
+ s.min = 0;
+ s.max = 1;
+ s.step = 1;
+ }
+ } else {
+ value = s.dfault;
+ }
+
+ let param = new twirl.transform.Parameter({
+ definition: {
+ name: s.name,
+ description: s.description,
+ fireChanges: false, automatable: false,
+ min: s.min, max: s.max, step: s.step, dfault: value,
+ options: s.options, asvalue: s.asvalue
+
+ }, host: host, onChange: function(val) {
+ if (s.storageKey) {
+ host.storage[s.storageKey] = val;
+ host.saveStorage();
+ }
+ if (s.onChange) s.onChange(val);
+ }
+ });
+ tb.append(param.getElementRow(true));
+ }
+ twirl.prompt.show(el);
+};
+
+twirl.TopMenu = function(host, menuData, elTarget) {
+ var self = this;
+ var opened = false;
+ var keyHandlers = [];
+
+ function keyHandler(e) {
+ if (!host.visible) return;
+ var nodeType = e.target.nodeName.toLowerCase();
+ if (nodeType == "input" || nodeType == "textarea") return;
+ e.preventDefault();
+ for (let h of keyHandlers) {
+ if (
+ (h.key == e.key.toLowerCase()) &&
+ ((!h.hasOwnProperty("ctrlKey") && !e.ctrlKey) || (h.ctrlKey && e.ctrlKey)) &&
+ ((!h.hasOwnProperty("shiftKey") && !e.shiftKey) || (h.shiftKey && e.shiftKey)) &&
+ ((!h.hasOwnProperty("altKey") && !e.altKey) || (h.altKey && e.altKey))
+ ) {
+ if (h.hasOwnProperty("condition") && !h.condition(host)) {
+ return;
+ }
+ if (h.hasOwnProperty("keyCondition") && !h.keyCondition(host)) {
+ return;
+ }
+ return h.func(host);
+ }
+ }
+ }
+
+ function construct(data) {
+ if (!data) data = menuData;
+ let onPlayDisables = [];
+ elTarget.empty();
+ var elMenuBar = $("<div />").addClass("topmenu").appendTo(elTarget);
+ for (let d of data) {
+ let elTopItem = $("<div />").addClass("topmenu_item").text(d.name).appendTo(elMenuBar);
+ let elMenu = $("<div />").addClass("topmenu_dropdown").appendTo(elTopItem);
+ let showConditions = [];
+ let onShows = [];
+ for (let c of d.contents) {
+ let elItem;
+ if (c.preset) {
+ if (c.preset == "divider") {
+ elItem = $("<hr />").appendTo(elMenu);
+ }
+ } else {
+ elItem = $("<div />").addClass("topmenu_dropdown_item").appendTo(elMenu);
+ if (typeof(c.name) == "function") {
+ onShows.push(function(){
+ elItem.text(c.name(host));
+ });
+ } else {
+ elItem.text(c.name);
+ }
+ if (c.click) elItem.click(function(){
+ if (c.condition && !c.condition(host)) return;
+ elMenu.hide();
+ opened = false;
+ c.click(host);
+ });
+ if (c.shortcut) {
+ $("<div />").addClass("topmenu_dropdown_itemright").text(c.shortcut.name).appendTo(elItem);
+ var obj = {func: c.click};
+ Object.assign(obj, c.shortcut);
+ if (c.condition) obj.condition = c.condition;
+ if (c.keyCondition) obj.keyCondition = c.keyCondition;
+ delete obj.name;
+ keyHandlers.push(obj);
+ }
+ if (c.disableOnPlay) {
+ onPlayDisables.push(elItem);
+ }
+ }
+ if (c.condition) {
+ showConditions.push({el: elItem, func: c.condition});
+ }
+ }
+
+ function showMenu() {
+ for (let c of showConditions) {
+ if (c.func(host)) {
+ c.el.removeClass("topmenu_dropdown_item_disabled");
+ } else {
+ c.el.addClass("topmenu_dropdown_item_disabled");
+ }
+ }
+ for (let o of onShows) {
+ o(host);
+ }
+ elMenu.show();
+ }
+
+
+ elTopItem.on("mouseover", function(){
+ if (opened) {
+ setTimeout(function(){
+ opened = true;
+ }, 10);
+ showMenu();
+ }
+ }).on("click", function() {
+ opened = true;
+ showMenu();
+ }).on("mouseleave", function() {
+ elMenu.hide();
+ setTimeout(function(){
+ opened = false;
+ }, 5);
+ });
+
+ }
+ if (host.onPlays) {
+ host.onPlays.push(async function(playing){
+ for (let o of onPlayDisables) {
+ if (playing) {
+ o.addClass("topmenu_dropdown_item_disabled");
+ } else {
+ o.removeClass("topmenu_dropdown_item_disabled");
+ }
+ }
+ });
+ }
+ $("body").off("keydown", keyHandler).on("keydown", keyHandler);
+ }
+ construct();
+};
+
diff --git a/site/app/twirl/twirl_compiler.py b/site/app/twirl/twirl_compiler.py
new file mode 100644
index 0000000..cc2ba3e
--- /dev/null
+++ b/site/app/twirl/twirl_compiler.py
@@ -0,0 +1,92 @@
+import lxml.html as lh
+import lxml.etree as et
+import os
+import shutil
+
+base_path = "/mnt/hd/web/1bpm.net"
+top_path = os.path.join(base_path, "apps.csound")
+apps_top_path = os.path.join(top_path, "app")
+twirl_path = os.path.join(apps_top_path, "twirl")
+
+apps = ["twist", "twigs", "twine"]
+
+
+def compile_apps():
+ for app in apps:
+ compile(app)
+
+def compile(app):
+ print "Compiling {}".format(app)
+ app_path = os.path.join(apps_top_path, app)
+ target_dir = "{}/{}".format(base_path, app)
+
+ doc = lh.parse(os.path.join(app_path, "index.html"))
+ root = doc.getroot()
+ head = root.xpath("//head")[0]
+
+ script_data = ""
+ css_data = ""
+ post_scripts = []
+
+ for script in root.xpath("//script"):
+ src = script.attrib.get("src")
+ if src:
+ src = src.replace("https://apps.csound.1bpm.net/", "../../")
+ path = os.path.join(app_path, src)
+ with open(path, "r") as f:
+ script_data += f.read() + "\n"
+ else:
+ post_scripts.append(script)
+ script.getparent().remove(script)
+
+ new_script = et.fromstring("<script type=\"text/javascript\" src=\"{}.js\"></script>".format(app))
+ head.append(new_script)
+ for ps in post_scripts:
+ head.append(ps)
+
+ for css in root.xpath("//link"):
+ href = css.attrib.get("href")
+ if href:
+ href = href.replace("https://apps.csound.1bpm.net/", "../../")
+ path = os.path.join(app_path, href)
+ with open(path, "r") as f:
+ css_data += f.read() + "\n"
+ css.getparent().remove(css)
+
+ new_css = et.fromstring("<link rel=\"stylesheet\" href=\"{}.css\" />".format(app))
+ head.append(new_css)
+
+ doc.write(os.path.join(target_dir, "index.html"), method="html", encoding="UTF-8")
+
+ with open(os.path.join(target_dir, "{}.js".format(app)), "w") as f:
+ f.write(script_data)
+
+ with open(os.path.join(target_dir, "{}.css".format(app)), "w") as f:
+ f.write(css_data)
+
+ links = [
+ [twirl_path, "twirl"],
+ [os.path.join(twirl_path, "font"), "font"],
+ [os.path.join(top_path, "udo"), "udo"],
+ [os.path.join(top_path, "code"), "code"],
+ [os.path.join(app_path, "{}.csd".format(app)), "{}.csd".format(app)]
+ ]
+
+ for l in links:
+ target = os.path.join(target_dir, l[1])
+ if os.path.islink(target):
+ os.unlink(target)
+ os.symlink(l[0], target)
+
+ copies = ["documentation.html", "developer_documentation.html"]
+ for c in copies:
+ item = os.path.join(app_path, c)
+ if os.path.exists(item):
+ target = os.path.join(target_dir, c)
+ if os.path.exists(target):
+ os.unlink(target)
+ shutil.copy(item, target)
+
+if __name__ == "__main__":
+ compile_apps()
+
diff --git a/site/app/twist/_unlive/apid.js b/site/app/twist/_unlive/apid.js
new file mode 100644
index 0000000..28a00f2
--- /dev/null
+++ b/site/app/twist/_unlive/apid.js
@@ -0,0 +1,978 @@
+var twst = {};
+
+
+
+
+twst.Parameter = function(instr, definition, parent, transform, twist) {
+ var self = this;
+ var refreshable = false;
+ var changeFunc;
+ var value;
+ var initval = true;
+ var type;
+ var applicable;
+ var channel = (parent) ? parent.channel : instr + "_";
+ if (definition.hasOwnProperty("channel")) {
+ channel += definition.channel;
+ } else {
+ channel += definition.name.toLowerCase();
+ }
+
+ Object.defineProperty(this, "channel", {
+ get: function() { return channel; },
+ set: function(x) {}
+ });
+
+
+ if (definition.hasOwnProperty("options")) {
+ if (!definition.hasOwnProperty("automatable")) {
+ definition.automatable = false;
+ }
+ }
+
+ if (definition.hasOwnProperty("preset")) {
+ var save = {};
+ if (definition.hasOwnProperty("dfault")) {
+ save.dfault = definition.dfault;
+ }
+
+ if (definition.hasOwnProperty("name")) {
+ save.name = definition.name;
+ }
+
+ if (definition.preset == "fftsize") {
+ Object.assign(definition, {name: "FFT size", channel: "fftsize", description: "FFT size", options: [256, 512, 1024, 2048, 4096], dfault: 1, asvalue: true, automatable: false});
+ } else if (definition.preset == "wave") {
+ Object.assign(definition, {name: "Wave", description: "Wave shape to use", options: ["Sine", "Square", "Saw", "Pulse", "Triangle"], dfault: 0});
+ } else if (definition.preset == "instance") {
+ initval = false;
+ transform.refreshable = true;
+ refreshable = true;
+ Object.assign(definition, {
+ name: "Instance", description: "Other wave to use", channel: "instanceindex",
+ options: twist.otherInstanceNames,
+ automatable: false
+ });
+ changeFunc = function(index) {
+ var s = twist.waveforms[index].selected;
+ app.setControlChannel(instr + "_" + "otinststart", s[0]);
+ app.setControlChannel(instr + "_" + "otinstend", s[1]);
+ app.setControlChannel(instr + "_" + "otiinstchan", s[2]);
+ }
+ }
+ if (save) {
+ Object.assign(definition, save);
+ }
+ } // if preset
+
+
+
+ if (definition.hasOwnProperty("options") || (definition.hostrange && parent.definition.hasOwnProperty("options"))) {
+ type = "select";
+ } else {
+ type = "range";
+ }
+
+
+ if (definition.hasOwnProperty("conditions") && !parent) {
+ transform.refreshable = refreshable = true;
+ }
+
+ Object.defineProperty(this, "applicable", {
+ get: function() { return applicable; },
+ set: function(v) { }
+ });
+
+ Object.defineProperty(this, "value", {
+ get: function() { return value; },
+ set: function(v) {
+ if (type == "select") {
+ if (v < 0) {
+ v = 0;
+ } else if (v >= definition.options.length) {
+ v = defintion.options.length - 1;
+ }
+ if (definition.asvalue) {
+ value = definition.options[v];
+ } else {
+ value = v;
+ }
+ } else if (type == "range") {
+ if (v > definition.max) {
+ v = definition.max;
+ } else if (v < definition.min) {
+ v = definition.min;
+ } else if (v % definition.step != 0) {
+ if (definition.step == 1) {
+ v = Math.round(v);
+ } else {
+ v = Math.ceil((v - definition.min) / definition.step) * definition.step + definition.min;
+ }
+ }
+ value = v;
+ }
+ twist.csapp.setControlChannel(channel, value);
+ }
+ });
+
+
+
+
+ var automation = [];
+
+ this.definition = definition;
+ this.modulation = null;
+ this.channel = channel;
+ var modulationParameters = null;
+
+
+ if (!definition.hasOwnProperty("step")) {
+ definition.step = 0.0000001;
+ }
+
+ if (!definition.hasOwnProperty("min")) {
+ definition.min = 0;
+ }
+
+ if (!definition.hasOwnProperty("max")) {
+ definition.max = 1;
+ }
+
+ if (!definition.hasOwnProperty("automatable")) {
+ definition.automatable = true;
+ }
+
+ if (!definition.hasOwnProperty("dfault")) {
+ definition.dfault = 1;
+ }
+
+
+ if (parent && definition.hostrange) {
+ for (var o of ["step", "min", "max", "dfault", "options", "condition", "hostrange"]) {
+ if (parent.definition.hasOwnProperty(o)) {
+ definition[o] = parent.definition[o];
+ }
+ }
+ }
+
+ this.refresh = function() {
+ if (!refreshable) {
+ return;
+ }
+ for (var k in definition.conditions) {
+ var c = definition.conditions[k];
+ var val = transform.parameters[transform.instr + "_" + c.channel].getValue();
+ if (
+ (c.operator == "eq" && val != c.value) ||
+ (c.operator == "lt" && val >= c.value) ||
+ (c.operator == "gt" && val <= c.value) ||
+ (c.operator == "le" && val > c.value) ||
+ (c.operator == "ge" && val < c.value)
+ ) {
+ applicable = false;
+ }
+ }
+ applicable = true;
+ };
+
+ this.setDefault = function() {
+ value = definition.dfault;
+ };
+
+ if (initval) {
+ self.setDefault();
+ }
+
+ this.getAutomationData = function() {
+ if (!self.modulation) return;
+ var m = twist.appdata.modulations[self.modulation];
+ return [m.instr, self.channel];
+ };
+
+ function showModulations() {
+ modulationShown = true;
+ elValueLabel.hide();
+ elInput.hide();
+ elModulations.show();
+ elModButton.text("Close");
+ if (elModulations.children().length != 0) {
+ elModSelect.val(0).trigger("change");
+ return;
+ }
+ var tb = $("<tbody />");
+ function buildModulation(i) {
+ tb.empty();
+ modulationParameters = [];
+ self.modulation = i;
+ let m = twist.appdata.modulations[i];
+ for (let x of m.parameters) {
+ var tp = new twst.Parameter(m.instr, x, self, transform, twist);
+ modulationParameters.push(tp);
+ tb.append(tp.getElementRow(true)); // hmm modulate the modulation with false
+ }
+ }
+ var selecttb = $("<tbody />").appendTo($("<table />)").appendTo(elModulations));
+ var row = $("<tr />").append($("<td />").text("Modulation type")).appendTo(selecttb);
+
+ elModSelect = $("<select />").change(function() {
+ self.modulation = $(this).val();
+ buildModulation(self.modulation);
+ automation.push(self);
+ }).appendTo($("<td />").appendTo(row));
+ $("<table />").append(tb).appendTo(elModulations);
+
+ for (let i in twist.appdata.modulations) {
+ var m = twist.appdata.modulations[i];
+ $("<option />").text(m.name).val(i).appendTo(elModSelect);
+ }
+ elModSelect.val(0).trigger("change");
+ }
+
+};
+
+function getTransformContainer(name) {
+ return $("<div />").addClass("tfv_container").append(
+ $("<div />").addClass("tfv_header").text(name)
+ );
+}
+
+twst.ParameterGroup = function(def, instance, twist) {
+ var self = this;
+ this.instr = def.instr;
+ this.refreshable = false;
+ var presetParameters;
+ this.parameters = {};
+
+ if (def.hasOwnProperty("preset") && def.preset == "pvsynth") {
+ var conditions = [
+ {channel: "pvresmode", operator: "eq", value: 1}
+ ];
+ presetParameters = [
+ {name: "Resynth mode", channel: "pvresmode", description: "Type of FFT resynthesis used", dfault: 0, options: ["Overlap-add", "Additive"], automatable: false},
+ {name: "Oscillator spread", channel: "pvaoscnum", description: "Number of oscillators used", automatable: false, conditions: conditions},
+ {name: "Frequency modulation", channel: "pvafreqmod", description: "Frequency modulation", dfault: 1, min: 0.01, max: 2, conditions: conditions},
+ {name: "Oscillator offset", channel: "pvabinoffset", description: "Oscillator bin offset", automatable: false, conditions: conditions},
+ {name: "Oscillator increment", channel: "pvabinoffset", description: "Oscillator bin increment", min: 1, max: 32, dfault: 1, step: 1, automatable: false, conditions: conditions}
+ ];
+ }
+
+ this.refresh = function() {
+ if (!self.refreshable) {
+ return;
+ }
+ for (var k in self.parameters) {
+ self.parameters[k].refresh();
+ }
+ };
+
+ this.getAutomationData = function() {
+ var automations = [];
+ for (var k in self.parameters) {
+ var data = self.parameters[k].getAutomationData();
+ if (data) {
+ automations.push(data);
+ }
+ }
+ return automations;
+ };
+
+ this.removeParameter = function(channel) {
+ if (self.parameters.hasOwnProperty(channel)) {
+ self.parameters[channel].remove();
+ delete self.parameters[channel]
+ }
+ };
+
+ this.addParameter = function(pdef) {
+ var tp = new twst.Parameter(def.instr, pdef, null, self, twist);
+ self.parameters[tp.channel] = tp;
+ return tp;
+ };
+
+ function build() {
+ getTransformContainer(def.name).appendTo(elContainer);
+
+ var tbl = $("<table />").appendTo(elContainer);
+ elTb = $("<tbody />").appendTo(tbl);
+
+ for (let p of def.parameters) {
+ self.addParameter(p);
+ }
+
+ if (presetParameters) {
+ for (let p of presetParameters) {
+ self.addParameter(p);
+ }
+ }
+ self.refresh();
+ }
+ build();
+};
+
+
+var Transform = function(definition, instance, twist) {
+ var parameterGroup = new ParameterGroup(definition, instance, twist);
+
+ Object.defineProperty(this, "parameterGroup", {
+ get: function() { return parameterGroup; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "parameters", {
+ get: function() { return parameterGroup.parameters; },
+ set: function(x) {}
+ });
+
+
+ function handleAutomation(onready) {
+ if (transform) {
+ var automations = transform.getAutomationData();
+ if (automations && automations.length > 0) {
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status == 1) {
+ onready(1);
+ } else {
+ return twist.errorHandler("Cannot parse automation data");
+ }
+ });
+ var call = [0, 1, cbid];
+ for (let i in automations) {
+ call.push(automations[i][0] + " \\\"" + automations[i][1] + "\\\"");
+ }
+ twist.csapp.insertScore("twst_automationprepare", call);
+ } else {
+ onready(0);
+ }
+ }
+ }
+
+ this.audition = function(start, end, timeUnit) {
+ if (twist.isProcessing || twist.inUse) return twist.errorHandler("Already in use");
+ errorState = "Playback error";
+
+ if (!start) {
+ start = instance.selection.ratio[0];
+ end = instance.selection.ratio[1];
+ } else {
+ if (!timeUnit) timeUnit = "seconds");
+ start = timeConvert(start, timeUnit);
+ end = timeConvert(end, timeUnit);
+ }
+
+ handleAutomation(function(automating){
+var cbid = playPositionHandler();
+ operation({
+ instr: "twst_audition",
+ score: [start, end, instance.selectedChannel, definition.instr, automating]
+ });
+
+
+
+ });
+
+ };
+
+ this.commit = function(start, end, timeUnitPos, crossfadeIn, crossfadeOut, timeUnitCrossfade) {
+ if (twist.isProcessing || twist.inUse) return twist.errorHandler("Already in use");
+ handleAutomation(function(automating){
+ if (!start) {
+ start = instance.selection.start.ratio;
+ end = instance.selection.end.ratio;
+ } else {
+ if (!timeUnitPos) timeUnitPos = "seconds");
+ start = timeConvert(start, timeUnitPos);
+ end = timeConvert(end, timeUnitPos);
+ }
+
+ if (!crossfadeIn) {
+ crossfadeIn = instance.selection.ratio[0];
+ crossfadeOut = instance.selection.ratio[1];
+ } else {
+ if (!timeUnitPos) timeUnitPos = "seconds");
+ crossfadeIn = timeConvert(start, timeUnitPos);
+ crossfadeOut = timeConvert(end, timeUnitPos);
+ }
+
+ errorState = "Transform commit error";
+ operation({
+ instr: "twst_commit",
+ refresh: true,
+ score: [start, end, instance.selectedChannel, definition.instr, automating, instance.crossFade.start.ratio, instance.crossFade.end.ratio]
+ });
+
+ });
+ };
+};
+
+
+
+
+
+var TwistInstance = function(instanceIndex, twist, options) {
+ var self = this;
+ if (!options) options = {};
+ var transform;
+ var channels;
+ var durationSamples;
+ var selectedChannel = -1;
+ var filename;
+ var sr;
+ var csTables = [];
+
+ var Time = function(dfault, onValidate, onChange) {
+ var tself = this;
+ var value = dfault;
+
+ Object.defineProperty(this, "samples", {
+ get: function() { return value; },
+ set: function(v) {
+ if (value == v) return;
+ value = v;
+ if (onValidate) {
+ var res = onValidate(value);
+ if (res) {
+ value = res;
+ }
+ }
+ if (onChange) onChange(tself);
+ }
+ });
+
+ Object.defineProperty(this, "seconds", {
+ get: function() { return value / sr; },
+ set: function(v) {
+ tself.samples = Math.round(v * sr);
+ }
+ });
+
+ Object.defineProperty(this, "ratio", {
+ get: function() { return value / durationSamples; },
+ set: function(v) {
+ tself.samples = Math.round(v * durationSamples);
+ }
+ });
+ };
+
+ var playPosition = new Time(0);
+ var selection = new Time({start: 0, end: 0}, function(v) {
+ if (typeof(v) != "object") {
+ v = {start: v, end: v};
+ return v;
+ }
+ if (v.start > v.end) {
+ v.start = v.end
+ }
+ if (v.end > durationSamples) {
+ v.end = durationSamples);
+ }
+ }, options.onSelectionChange);
+
+ var crossFade = new Time({start: 0, end: 0}, function(v) {
+ iif (typeof(v) != "object") {
+ v = {start: v, end: v};
+ return v;
+ }
+ var half = Math.round(durationSamples * 0.5);
+ if (v.start > half) {
+ v.start = half;
+ }
+ if (v.end > half) {
+ v.end = half;
+ }
+ }, options.onCrossFadeChange);
+
+
+ Object.defineProperty(this, "selectedChannel", {
+ get: function() { return selectedChannel; },
+ set: function(v) {
+ if (channels == 1) return;
+ if (v >= channels) {
+ selectedChannel = channels - 1;
+ } else if (v < 0) {
+ selectedChannel = 0;
+ } else {
+ selectedChannel = v;
+ }
+ }
+ });
+
+ Object.defineProperty(this, "playPosition", {
+ get: function() { return playPosition; },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "selection", {
+ get: function() { return selection; },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "crossFade", {
+ get: function() { return crossFade; },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "instanceIndex", {
+ get: function() { return instanceIndex; },
+ set: function(v) {}
+ });
+
+ var durationObj;
+ Object.defineProperty(durationObj, "samples", {
+ get: function() { return durationSamples; },
+ set: function(v) {}
+ });
+ Object.defineProperty(durationObj, "seconds", {
+ get: function() { return durationSamples / sr; },
+ set: function(v) {}
+ });
+ Object.defineProperty(this, "duration", {
+ get: function() { return durationObj; },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "filename", {
+ get: function() { return filename; },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "sr", {
+ get: function() { return sr; },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "csTables", {
+ get: function() { return csTables; },
+ set: function(v) {}
+ });
+
+
+ function refresh(data) {
+ twist.errorState = "Overview refresh error";
+ csTables = [data.waveL];
+ if (data.hasOwnProperty("waveR")) {
+ csTables.push(data.waveR);
+ }
+ sr = data.sr;
+ durationSamples = Math.round(data.sr * data.duration);
+ if (options.onRefresh) options.onRefresh(self);
+ }
+
+
+
+ function getTransform(path) {
+ if (!twist.transforms.hasOwnProperty(path)) {
+ return;
+ }
+ return new ParameterGroup(transforms[path], self, twist);
+ }
+
+
+ function operation(data) {
+ if (!data.setUsage) data.setUsage = true;
+ if (!data.setProcessing) data.setProcessing = true;
+ if (twist.inUse || twist.isProcessing) {
+ return twist.errorHandler("Already processing");
+ }
+
+ var score = [0, -1];
+ if (!data.noCallback) {
+ cbid = twist.csapp.createCallback(function(ndata){
+ if (data.refresh) refresh();
+ if (data.onComplete) data.onComplete(ndata);
+ if (data.setUsage) twist.inUse = false;
+ if (data.setProcessing) twist.isProcessing = false;
+ });
+ score.push(cbid);
+ if (data.setUsage) twist.inUse = true;
+ if (data.setProcessing) twist.isProcessing = true;
+ }
+ if (data.onRun) options.onRun();
+ if (data.score) {
+ for (s of data.score) {
+ score.push(s);
+ }
+ }
+
+ twist.csapp.insertScore(data.instr, score);
+ } // operation
+
+ function loadFile(name) {
+ var cbid = twist.csapp.createCallback(async function(ndata){
+ await app.getCsound().fs.unlink(name);
+ if (ndata.status == 0) {
+ return twist.errorHandler("File not valid");
+ } else {
+ refresh(ndata);
+ }
+ twist.inUse = false;
+ twist.isProcessing = false;
+ });
+ twist.inUse = true;
+ twist.isProcessing = true;
+ app.insertScore("twst_loadfile", [0, -1, cbid, item.name]);
+ }
+
+ this.loadUrl = function(url, onLoad) {
+ twist.csapp.loadFile(url, loadFile);
+ };
+
+ this.loadBuffer = function(arrayBuffer, onLoad) {
+ twist.csapp.loadBuffer(url, loadFile);
+ };
+
+ this.saveFile = function(name, onSave) {
+ if (!onSave) {
+ onSave = options.onSave;
+ }
+
+ if (!onSave) {
+ return twist.errorHandler("Instance or saveFile onSave option has not been provided");
+ }
+
+ twist.inUse = true;
+ twist.isProcessing = true;
+
+ if (!name) {
+ name = filename;
+ }
+ if (!name) {
+ name = "export.wav";
+ }
+
+ if (!name.toLowerCase().endsWith(".wav")) {
+ name += ".wav";
+ }
+ var cbid = twist.csapp.createCallback(async function(ndata){
+ var content = await twist.csapp.getCsound().fs.readFile(name);
+ var blob = new Blob(content, {type: "audio/wav"});
+ var url = window.URL.createObjectURL(blob);
+ onSave(url);
+ twist.inUse = false;
+ twist.isProcessing = false;
+ });
+ twist.csapp.insertScore("twst_savefile", [0, -1, cbid, name]);
+ };
+
+ function timeConvert(val, mode) { // returns ratio right now
+ if (mode == "ratio") {
+ return val;
+ } else if (mode == "samples") {
+ return val / durationSamples;
+ } else if (mode == "seconds") {
+ return val / (durationSamples / sr);
+ }
+ }
+
+ this.cut = function(start, end, timeUnit) {
+ if (!start) {
+ start = self.selection.ratio[0];
+ end = self.selection.ratio[1];
+ } else {
+ if (!timeUnit) timeUnit = "seconds");
+ start = timeConvert(start, timeUnit);
+ end = timeConvert(end, timeUnit);
+ }
+ operation({
+ instr: "twst_cut",
+ score: [start, end, selectedChannel],
+ refresh: true,
+ });
+ };
+
+ this.copy = function(start, end, timeUnit) {
+ if (!start) {
+ start = self.selection.ratio[0];
+ end = self.selection.ratio[1];
+ } else {
+ if (!timeUnit) timeUnit = "seconds");
+ start = timeConvert(start, timeUnit);
+ end = timeConvert(end, timeUnit);
+ }
+ operation({
+ instr: "twst_copy",
+ score: [start, end, selectedChannel],
+ });
+ };
+
+ this.paste = function(start, end, timeUnit) {
+ if (!start) {
+ start = self.selection.ratio[0];
+ end = self.selection.ratio[1];
+ } else {
+ if (!timeUnit) timeUnit = "seconds");
+ start = timeConvert(start, timeUnit);
+ end = timeConvert(end, timeUnit);
+ }
+ operation({
+ instr: "twst_paste",
+ score: [start, end, selectedChannel],
+ });
+ };
+
+ this.pasteSpecial = function(start, end, timeUnit) {
+ pasteSpecial: {instr: "twst_pastespecial", refresh: true, parameters: [
+ {name: "Repetitions", channel: "repetitions", min: 1, max: 40, step: 1, dfault: 1, automatable: false},
+ {name: "Repetition random time variance ratio", channel: "timevar", min: 0, max: 1, step: 0.000001, dfault: 0, automatable: false},
+ {name: "Mix paste", channel: "mixpaste", step: 1, dfault: 0, automatable: false},
+ {name: "Mix crossfade", channel: "mixfade", automatable: false, conditions: [{channel: "mixpaste", operator: "eq", value: 1}]}
+ ]},
+ };
+
+ this.play = function(start, end, timeUnit) {
+ errorState = "Playback error";
+ if (!start) {
+ start = self.selection.ratio[0];
+ end = self.selection.ratio[1];
+ } else {
+ if (!timeUnit) timeUnit = "seconds");
+ start = timeConvert(start, timeUnit);
+ end = timeConvert(end, timeUnit);
+ }
+ operation({
+ instr: "twst_play",
+ score: [start, end, selectedChannel],
+ });
+ };
+
+ this.stop = function() {
+ operation({
+ instr: "twst_stop"
+ });
+ };
+
+
+
+
+
+
+
+
+
+};
+
+
+var Twist = function(options) {
+ var twist = this;
+ var inUse = false;
+ var isProcessing = false;
+ var instanceIndex = 0;
+ var instances = [];
+ var transforms;
+ var modulations;
+ var onRunFunc;
+ this.errorState = null;
+
+ if (!options) options = {};
+
+ if (!options.appdata) {
+ const xhr = new XMLHttpRequest();
+ xhr.open("GET", "appdata.json", false);
+ xhr.send();
+ if (xhr.status == 200) {
+ options.appdata = JSON.parse(xhr.responseText);
+ } else {
+ throw "No appdata available";
+ }
+ }
+
+ function errorHandlerInner(error, func) {
+ if (!error && twist.errorState) {
+ error = twist.errorState;
+ twist.errorState = null;
+ } elseif (!error && !twist.errorState) {
+ error = "Unhandled error";
+ }
+ func(error);
+ }
+
+ this.errorHandler = function(error) {
+ if (!error && twist.errorState) {
+ error = twist.errorState;
+ twist.errorState = null;
+ } elseif (!error && !twist.errorState) {
+ error = "Unhandled error";
+ }
+ if (options.errorHandler) {
+ options.errorHandler(error);
+ } else {
+ throw error;
+ }
+ };
+
+ this.setPercent = function(percent) {
+ if (options.onPercentChange) {
+ options.onPercentChange(percent);
+ }
+ };
+
+ if (!csapp) {
+ csapp = new CSApplication({
+ csdUrl: "twist.csd",
+ csOptions: ["--omacro:TWST_FAILONLAG=1"],
+ onPlay: function () {
+ if (onRunFunc) onRunFunc();
+ },
+ errorHandler: options.errorHandler,
+ ioReceivers: {percent: twist.setPercent}
+ });
+ }
+
+
+ Object.defineProperty(this, "csapp", {
+ get: function() {
+ return csapp;
+ },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "instances", {
+ get: function() {
+ return instances;
+ },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "transforms", {
+ get: function() {
+ return transforms;
+ },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "modulations", {
+ get: function() {
+ return modulations;
+ },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "appdata", {
+ get: function() {
+ return options.appdata;
+ },
+ set: function(v) {}
+ });
+
+ Object.defineProperty(this, "inUse", {
+ get: function() {
+ return inUse;
+ },
+ set: function(v) {
+ if (inUse != v) {
+ inUse = v;
+ if (options.onUsage) options.onUsage(v);
+ }
+ }
+ });
+
+ Object.defineProperty(this, "isProcessing", {
+ get: function() {
+ return isProcessing;
+ },
+ set: function(v) {
+ if (isProcessing != v) {
+ isProcessing = v;
+ if (options.onUsage) options.onUsage(v);
+ }
+ }
+ });
+
+ this.run = function(onRunFunc) {
+ onRunFunc = onRun;
+ csapp.play();
+ };
+
+ this.createInstance = function() {
+ var instance = new TwistInstance(instanceIndex, twist, options.instance);
+ instances[instanceIndex] = instance;
+ instanceIndex ++;
+ return instance;
+ };
+
+ this.removeInstanceByIndex = function(index) {
+ if (i < 0 || i > instances.length - 2) return;
+ delete instances[index];
+ };
+
+ function getProcesses(appdata, type) {
+ var processes = {};
+
+ function recurse(items, prefix) {
+ if (!prefix) {
+ prefix = "/";
+ }
+ for (let item of items) {
+ if (item.hasOwnProperty("contents")) {
+ var subitems = recurse(item.contents, prefix + item.name + "/");
+ } else {
+ processes[prefix + item.name] = item;
+ }
+ }
+ }
+ recurse(appdata[type]);
+ return processes;
+ }
+
+ transforms = getProcesses(options.appdata, "transforms");
+ modulations = getProcesses(options.appdata, "modulations");
+
+};
+
+
+
+
+
+
+
+
+
+
+
+window.t = new Twist({
+ csapp: null,
+ appdata: null,
+ latencyCorrection: 170,
+ onPercentChange,
+ onProcessing: state => {
+
+ },
+ onUsage: state => {
+
+ },
+ instance: {
+
+ onPlayPositionChange: position => {
+
+ },
+ onSelectionChange: selection => {
+
+ },
+ onCrossFadeChange: crossfades => {
+
+ },
+ onRefresh: () => {
+
+ },
+ onPlay: () => {
+
+ },
+ onSave: () => {
+
+ }
+ }
+});
+
+
+
+
+
+
+$("#start_invoke").click(function(){
+ $("#loading").show();
+ t.run(function(){
+ $("#start").hide();
+ $("#loading").hide();
+ });
+});
+
+
diff --git a/site/app/twist/_unlive/index.api.html b/site/app/twist/_unlive/index.api.html
new file mode 100644
index 0000000..80c5eb9
--- /dev/null
+++ b/site/app/twist/_unlive/index.api.html
@@ -0,0 +1,1144 @@
+<html>
+ <head>
+ <title>twist</title>
+ <script type="text/javascript" src="/code/jquery.js"></script>
+ <script type="text/javascript" src="../base/base.js"></script>
+ <script type="text/javascript" src="../base/waveform.js"></script>
+ <script type="text/javascript">
+
+
+ var TransformParameterUI = function(instr, definition, parent, transform, twist) {
+ var self = this;
+ var parameter = twist.Parameter(instr, definition, transform, twist);
+ var initval = true;
+ var elContainer = $("<div />");
+ var elValueLabel = $("<div />");
+ var elValueInput;
+ var elModulations;
+ var elInput;
+ var elRow;
+ var elModSelect;
+
+ this.refresh = function() {
+ if (!refreshable) {
+ return;
+ }
+ parameter.refresh();
+
+ if (definition.preset == "instance") {
+ createSelectOptions(elInput, twist.otherInstanceNames);
+ }
+ if (parameter.applicable) {
+ elRow.show();
+ } else {
+ elRow.hide();
+ }
+ };
+
+ function createSelectOptions(elSelect, options) {
+ elSelect.empty();
+ var selected = elInput.val();
+ for (var x in options) {
+ var opt = $("<option />").text(options[x]).val(x).appendTo(elSelect);
+ if (x == selected) {
+ opt.attr("selected", "1");
+ }
+ }
+ }
+
+ function updateLabel() {
+ if (elValueInput) {
+ var val = self.getValue();
+ updateinput = false;
+ elValueInput.val(val);
+ updateinput = true;
+ //elValueLabel.text(val);
+ }
+ }
+
+ if (type == "select") {
+ elInput = $("<select />").change(function(){
+ transform.refresh();
+ parameter.value = $(this).val();
+ if (changeFunc) changeFunc(parameter.value);
+ });
+ var options = (definition.hostrange) ? parent.definitions.options : definition.options;
+ createSelectOptions(elInput, options);
+ } else {
+ var updateinput = true;
+ var max = definition.max;
+ var min = definition.min;
+ var step = definition.step;
+ var dfault = definition.dfault;
+
+
+
+ elInput = $("<input />").attr("type", "range").on("input", function() {
+ updateLabel();
+ }).change(function() {
+ transform.refresh();
+ parameter.value = $(this).val();
+ }).attr("min", min).attr("max", max).attr("step", step).val(dfault);
+
+ elValueInput = $("<input />").attr("type", "number").attr("min", min).attr("max", max).attr("step", step).addClass("transparentinput").appendTo(elValueLabel).change(function() {
+ if (updateinput) {
+ elInput.val($(this).val()).trigger("change").trigger("input");
+ }
+ });
+ }
+
+ elContainer.append(elInput);
+ if (initval) {
+ elInput.val(definition.dfault).trigger("change");
+ updateLabel();
+ }
+
+
+ this.setDefault = function() {
+ elInput.val(definition.dfault).trigger("change");
+ //app.setControlChannel(channel, definition.dfault);
+ };
+
+ this.remove = function() {
+ elContainer.remove();
+ };
+
+ this.getAutomationData = function() {
+ if (!self.modulation) return;
+ var m = twist.appdata.modulations[self.modulation];
+ return [m.instr, self.channel];
+ };
+
+ var elAutomation = $("<button />").text("Automate").click(function() {
+
+ });
+
+ var modulationShown = false;
+ var elModButton = $("<button />").text("Modulate").click(function() {
+ if (elModulations && modulationShown) {
+ hideModulations();
+ } else {
+ showModulations();
+ }
+ });
+
+ function hideModulations() {
+ app.setControlChannel(channel, self.getValue());
+ modulationShown = false;
+ elValueLabel.show();
+ elInput.show();
+ self.modulation = null;
+ elModButton.text("Modulate");
+ if (elModulations) {
+ elModulations.hide();
+ if (automation.includes(self)) {
+ delete automation[automation.indexOf(self)];
+ }
+ }
+ }
+
+
+ elModulations = $("<div />").addClass("tfv_container").hide().appendTo(elContainer);
+
+ function showModulations() {
+ modulationShown = true;
+ elValueLabel.hide();
+ elInput.hide();
+ elModulations.show();
+ elModButton.text("Close");
+ if (elModulations.children().length != 0) {
+ elModSelect.val(0).trigger("change");
+ return;
+ }
+ var tb = $("<tbody />");
+ function buildModulation(i) {
+ tb.empty();
+ modulationParameters = [];
+ self.modulation = i;
+ let m = twist.appdata.modulations[i];
+ for (let x of m.parameters) {
+ var tp = new TransformParameter(m.instr, x, self, transform, twist);
+ modulationParameters.push(tp);
+ tb.append(tp.getElementRow(true)); // hmm modulate the modulation with false
+ }
+ }
+ var selecttb = $("<tbody />").appendTo($("<table />)").appendTo(elModulations));
+ var row = $("<tr />").append($("<td />").text("Modulation type")).appendTo(selecttb);
+
+ elModSelect = $("<select />").change(function() {
+ self.modulation = $(this).val();
+ buildModulation(self.modulation);
+ automation.push(self);
+ }).appendTo($("<td />").appendTo(row));
+ $("<table />").append(tb).appendTo(elModulations);
+
+ for (let i in twist.appdata.modulations) {
+ var m = twist.appdata.modulations[i];
+ $("<option />").text(m.name).val(i).appendTo(elModSelect);
+ }
+ elModSelect.val(0).trigger("change");
+ }
+
+ this.getElementRow = function(nocontrols) {
+ if (elRow) {
+ return elRow;
+ }
+ elRow = $("<tr />");
+ $("<td />").addClass("tfv_cell").text(definition.name).appendTo(elRow);
+ $("<td />").addClass("tfv_cell").append(elContainer).appendTo(elRow);
+ $("<td />").addClass("tfv_cellfixed").append(elValueLabel).appendTo(elRow);
+ if (!nocontrols) {
+ if (definition.automatable) {
+ $("<td />").addClass("tfv_cell").append(elAutomation).appendTo(elRow);
+ $("<td />").addClass("tfv_cell").append(elModButton).appendTo(elRow);
+ }
+ }
+ return elRow;
+ };
+
+
+ this.automate = function(start, end) {
+ app.insertScore("twst_createautomation", []);
+ };
+ };
+
+ function getTransformContainer(name) {
+ return $("<div />").addClass("tfv_container").append(
+ $("<div />").addClass("tfv_header").text(name)
+ );
+ }
+
+ var TransformUI = function(target, def, twist) {
+ var self = this;
+ var transform = new Transform(target, def, twist);
+ var elContainer = $("<div />").addClass("tfv_container").appendTo(target);
+ var elTb;
+ var pAddOdd = true;
+ this.uiparameters = [];
+ this.instr = def.instr;
+ this.refreshable = false;
+
+
+ this.refresh = function() {
+ if (!self.refreshable) {
+ return;
+ }
+ for (var k in self.uiparameters) {
+ self.uiparameters[k].refresh();
+ }
+ };
+
+ this.getAutomationData = function() {
+ return transform.getAutomationData();;
+ };
+
+ this.removeParameter = function(channel) {
+ if (self.uiparameters.hasOwnProperty(channel)) {
+ self.uiparameters[channel].remove();
+ delete self.uiparameters[channel]
+ }
+ transform.parameterGroup.removeParameter(channel);
+ };
+
+ this.addParameter = function(definition) {
+ self.addParameterUI(transform.parameterGroup.addParameter(definition));
+ };
+
+ this.addParameterUI = function(parameter) {
+ var tp = new TransformParameterUI(def.instr, parameter, null, self, twist);
+ self.uiparameters[tp.channel] = tp;
+ elTb.append(tp.getElementRow().addClass("tfv_row_" + ((pAddOdd) ? "odd" : "even")));
+ pAddOdd = !pAddOdd;
+ };
+
+ function build() {
+ getTransformContainer(def.name).appendTo(elContainer);
+
+ var tbl = $("<table />").appendTo(elContainer);
+ elTb = $("<tbody />").appendTo(tbl);
+
+ for (let p of transform.parameters) {
+ self.addParameter(p);
+ }
+ self.refresh();
+ }
+ build();
+ };
+
+ var TransformsTreeView = function(options, twist) {
+ var self = this;
+ var elTarget = $("#" + options.target);
+
+
+ function recurse(items, descended) {
+ items = (items) ? items : options.items;
+ var ul = $("<ul />").css({"border-bottom": "1px solid #878787", "padding-inline-start": 10}).addClass((descended) ? "nested" : "treelist");
+
+ for (let k in items) {
+ var li = $("<li />");
+ if (items[k].hasOwnProperty("contents")) {
+ $("<span />").addClass("caret").text(items[k].name).click(function() {
+ $(this).parent().children(".nested").toggleClass("active");
+ $(this).toggleClass("caret-down");
+ }).appendTo(li);
+ var subitems = recurse(items[k].contents, true);
+ li.append(subitems);
+
+ } else {
+ li.text(items[k].name).css("cursor", "pointer").click(function(){
+ var el = $("#controls").empty();
+ if (items[k].hasOwnProperty("display")) {
+ var container = getTransformContainer(items[k].name).appendTo(el);
+ twist.currentTransform = items[k].display(container);
+ } else {
+ twist.currentTransform = new Transform(el, items[k], twist);
+ }
+ });
+ }
+ ul.append(li);
+ }
+ elTarget.append(ul);
+ return ul;
+ }
+
+ elTarget.append(recurse());
+ };
+
+
+
+
+ var TwistUI = function(options) {
+ var self = this;
+ var toptions = {
+ errorHandler: function(text) {
+ self.showPrompt(text);
+ },
+ onProcessing: function(state) {
+
+ },
+ onUsage: function(state) {
+ self.waveform.cover(state);
+ }
+ };
+ var twist = new Twist(options);
+ var audioTypes = ["audio/mpeg", "audio/mp4", "audio/ogg", "audio/vorbis", "audio/x-flac","audio/aiff","audio/x-aiff", "audio/vnd.wav", "audio/wave", "audio/x-wav", "audio/wav"];
+ var maxsize = 1e+8; // 100 MB
+
+ var instanceIndex = 0;
+ this.stoptoggle = null;
+ this.waveforms = [];
+ var waveformTabs = [];
+ var keyModifier = {shift: false, alt: false, ctrl: false};
+ var playheadInterval;
+ var playing = false;
+ var elCrossfades = [];
+ var elPasteSpecial;
+
+ if (!options) options = {};
+ if (!options.latencyCorrection) options.latencyCorrection = 0;
+
+ function newInstance() {
+ var instance = twist.createInstance();
+ var element = $("<div />").addClass("waveform").appendTo("#waveforms");
+ let index = self.waveforms.length;
+ if (index < 0) index = 0;
+ waveformTabs.push(
+ $("<td />").text("New file").click(function() {
+ self.waveform = index;
+ }).addClass("wtab_selected").appendTo("#waveform_tabs")
+ );
+
+ self.waveforms.push(
+ new Waveform({target: element, latencyCorrection: options.latencyCorrection, showcrossfades: true})
+ );
+
+ self.waveform = index;
+ }
+
+ function removeInstance(i) {
+ if (i < 0 || i > this.waveforms.length - 2) {
+ return;
+ }
+ self.waveform.destroy();
+ twist.removeInstanceByIndex(i);
+ if (instanceIndex == i) {
+ instanceIndex = i + ((i == 0) ? 1 : -1);
+ self.waveform.show();
+ }
+ }
+
+ this.setPercent = function(percent) {
+ $("#loading_percent_inner").width(percent + "%");
+ };
+
+
+ function setLoadingStatus(state, showpercent) {
+ var el = $("#loading");
+ if (state) {
+ el.show();
+ if (showpercent) {
+ $("#loading_percent").show();
+ } else {
+ $("#loading_percent").hide();
+ }
+ } else {
+ el.hide();
+ }
+ }
+
+ this.setLoadingStatus = setLoadingStatus;
+
+ this.showPrompt = function(text, oncomplete) {
+ setLoadingStatus(false);
+ $("#prompt").show();
+ $("#prompt_text").text(text);
+ $("#prompt_button").unbind().click(function(){
+ if (oncomplete) {
+ oncomplete();
+ }
+ $("#prompt").hide();
+ });
+ };
+
+
+ function playPositionHandler(noPlayhead) {
+ function callback(ndata) {
+ if (ndata.status == 1) {
+ playing = true;
+ if (!noPlayhead) {
+ if (playheadInterval) {
+ clearInterval(playheadInterval);
+ }
+ playheadInterval = setInterval(async function(){
+ var val = await app.getControlChannel("playposratio");
+ if (val < 0 || val >= 1) {
+ clearInterval(playheadInterval);
+ }
+ self.waveform.movePlayhead(val);
+ }, 50);
+ }
+ } else {
+ playing = false;
+ if (ndata.status == -1) {
+ self.errorHandler("Not enough processing power to transform in realtime");
+ }
+ if (self.stoptoggle) {
+ setTimeout(self.stoptoggle, latencyCorrection);
+ }
+ app.removeCallback(ndata.cbid);
+ if (!noPlayhead) {
+ self.waveform.movePlayhead(0);
+ if (playheadInterval) {
+ clearInterval(playheadInterval);
+ }
+ }
+ self.waveform.cover(false);
+ }
+ }
+ return app.createCallback(callback, true);
+ }
+
+
+
+ async function refreshOverviews(ndata) {
+ errorState = "Overview refresh error";
+ var wavedata = [];
+ var duration = ndata.duration;
+
+ wavedata.push(async function(v) {
+ if (v < 0) {
+ return await app.getCsound().tableLength(ndata.waveL);
+ } else {
+ return await app.getCsound().tableGet(ndata.waveL, v);
+ }
+ });
+
+ if (ndata.hasOwnProperty("waveR")) {
+ wavedata.push(async function(v) {
+ return await app.getCsound().tableGet(ndata.waveR, v);
+ });
+ }
+ self.waveform.setData(wavedata, ndata.duration);
+
+ self.waveform.cover(false);
+ }
+
+ this.cut = function() {
+ self.instance.cut();
+ };
+
+ this.copy = function() {
+ self.instance.copy();
+ };
+
+ this.paste = function() {
+ self.instance.paste();
+ };
+
+ this.moveToStart = function() {
+ self.waveform.setSelection(0);
+ };
+
+ this.moveToEnd = function() {
+ self.waveform.setSelection(1);
+ };
+
+
+ this.pasteSpecial = function() {
+ if (!elPasteSpecial) {
+ elPasteSpecial = $("<div />").addClass("waveform_overlay").appendTo($("#waveforms"));
+ elPasteSpecial.append($("<h2 />").text("Paste special"));
+ var def = {
+ instr: "twst_pastespecial",
+ parameters: [
+ {name: "Repetitions", channel: "repetitions", min: 1, max: 40, step: 1, dfault: 1, automatable: false},
+ {name: "Repetition random time variance ratio", channel: "timevar", min: 0, max: 1, step: 0.000001, dfault: 0, automatable: false},
+ {name: "Mix paste", channel: "mixpaste", step: 1, dfault: 0, automatable: false},
+ {name: "Mix crossfade", channel: "mixfade", automatable: false, conditions: [{channel: "mixpaste", operator: "eq", value: 1}]}
+ ]
+ };
+ var tf = new Transform(elPasteSpecial, def, self);
+
+ $("<button />").text("Paste").click(function(){
+ elPasteSpecial.hide();
+ self.waveform.cover(true);
+ operation("twst_pastespecial", refreshOverviews, true);
+ }).appendTo(elPasteSpecial);
+
+ } else {
+ elPasteSpecial.show();
+ }
+ };
+
+
+ this.play = function() {
+ self.instance.play();
+ };
+
+ this.stop = function() {
+ self.instance.stop();
+ };
+
+ this.saveFile = function(name) {
+ self.instance.saveFile(name, function(url) {
+ var a = $("<a />").attr("href", url).attr("download", name).appendTo($("body")).css("display", "none");
+ a.click();
+ setTimeout(function(){
+ a.remove();
+ window.URL.revokeObjectURL(url);
+ app.getCsound().fs.unlink(name);
+ }, 2000);
+ });
+ };
+
+ this.audition = function() {
+ self.instance.audition();
+
+ };
+
+ this.commit = function() {
+ self.instance.commit();
+ }
+
+ function buildWavecontrols() {
+ var el = $("#wavecontrols_inner");
+ var items = [
+ {label: "Zoom sel", click: function() {self.waveform.zoomSelection();}},
+ {label: "Zoom in", click: function() {self.waveform.zoomIn();}},
+ {label: "Zoom out", click: function() {self.waveform.zoomOut();}},
+ {label: "Show all", click: function() {self.waveform.zoomLevel = 1;}},
+
+ {label: "Cut", click: self.cut, css: {"background-color": "#a5ab30"}},
+ {label: "Copy", click: self.copy, css: {"background-color": "#d5db60"}},
+ {label: "Paste", click: self.paste, css: {"background-color": "#e5df90"}},
+ {label: "Paste special", click: self.pasteSpecial, css: {"background-color": "#e9dfa5"}},
+
+ {label: "Play", click: function(b) {
+ self.stoptoggle = function() {
+ b.text("Play");
+ };
+ if (b.text() == "Play") {
+ b.text("Stop");
+ self.play();
+ } else {
+ b.text("Play");
+ self.stop();
+ }
+ }, css: {"background-color": "#cc9999"}},
+ {label: "Audition", click: function(b) {
+ self.stoptoggle = function() {
+ b.text("Audition");
+ };
+ if (b.text() == "Audition") {
+ b.text("Stop");
+ self.audition();
+ } else {
+ b.text("Audition");
+ self.stop();
+ }
+ }, css: {"background-color": "#aa6666"}},
+ {label: "Commit", click: self.commit, css: {"background-color": "#ff4444"}},
+ ];
+
+ for (let i of items) {
+ let button = $("<button />").text(i.label)
+ button.click(function() {
+ i.click(button);
+ });
+ if (i.hasOwnProperty("css")) {
+ button.css(i.css);
+ }
+ $("<td />").append(
+ button
+ ).appendTo(el);
+ }
+
+ for (let e of ["in", "out"]) {
+ var elRange = $("<input />").attr("type", "range").attr("min", 0).attr("max", 0.45).attr("step", 0.00001).val(0).on("input", function() {
+ if (e == "in") {
+ self.waveform.crossFadeInRatio = $(this).val();
+ } else {
+ self.waveform.crossFadeOutRatio = $(this).val();
+ }
+ });
+ elCrossfades.push(elRange);
+ $("<td />").append($("<div />").text("Commit crossfade " + e)).append(elRange).appendTo(el);
+ }
+ }
+
+ function createLeftPane() {
+ var el = $("<div />").addClass("treetop").appendTo($("#panetree"));
+ $("<div />").addClass("treetop_header").text("twist").appendTo(el);
+
+ var ttv = new TransformsTreeView({
+ target: "panetree",
+ items: appdata.transforms
+ }, self);
+ }
+
+ async function handleFileDrop(e, obj) {
+ e.preventDefault();
+ if (!e.originalEvent.dataTransfer.files) {
+ return;
+ }
+ twist.isProcessing = true;
+ for (const item of e.originalEvent.dataTransfer.files) {
+ //item.size;
+ //item.type "audio/mpeg";
+ if (!audioTypes.includes(item.type)) {
+ return self.errorHandler("Unsupported file type");
+ }
+ if (item.size > maxsize) {
+ return self.errorHandler("File too big");
+ }
+ twist.errorState = "File loading error";
+ var content = await item.arrayBuffer();
+ self.instance.loadBuffer(content, function(ndata){
+ self.waveformTab.text(item.name);
+ if (self.currentTransform) {
+ self.currentTransform.refresh();
+ }
+ });
+ }
+ }
+
+ this.run = function() {
+ twist.run();
+
+ Object.defineProperty(this, "waveformTab", {
+ get: function() { return waveformTabs[instanceIndex]; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "otherInstanceNames", {
+ get: function() {
+ var data = {};
+ for (var i in waveformTabs) {
+ if (i != instanceIndex) {
+ data[i] = waveformTabs[i].text();
+ }
+ }
+ return data
+ },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "waveform", {
+ get: function() { return self.waveforms[instanceIndex]; },
+ set: function(x) {
+ if (instanceIndex != x) {
+ self.waveformTab.removeClass("wtab_selected").addClass("wtab_unselected");
+ self.waveform.hide();
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status == 1) {
+ instanceIndex = x;
+ self.waveformTab.removeClass("wtab_unselected").addClass("wtab_selected");
+ self.waveform.show();
+ if (self.currentTransform) {
+ self.currentTransform.refresh();
+ }
+ } else {
+ self.showPrompt("Error changing instance");
+ }
+ });
+ app.insertScore("twst_setinstance", [0, 1, cbid, x]);
+
+ }
+ }
+ });
+
+ $("<td />").text("+").click(function() {
+ newInstance();
+ }).appendTo("#waveform_tabs").addClass("wtab_selected");
+
+ $("body").on("dragover", function(e) {
+ e.preventDefault();
+ e.originalEvent.dataTransfer.effectAllowed = "all";
+ e.originalEvent.dataTransfer.dropEffect = "copy";
+ return false;
+ }).on("dragleave", function(e) {
+ e.preventDefault();
+ }).on("drop", function(e) {
+ handleFileDrop(e, self);
+ }).on("keydown", function(e){
+ switch (e.which) {
+ case 32: // space
+ if (playing) {
+ self.stop();
+ } else {
+ self.play;
+ }
+ break;
+ case 13: // enter
+ if (keyModifier.alt) self.commit();
+ break;
+ case 67: // c
+ if (keyModifier.ctrl) self.copy();
+ break;
+ case 88: // x
+ if (keyModifier.ctrl) self.cut();
+ break;
+ case 86: // v
+ if (keyModifier.ctrl) {
+ if (keyModifier.shift) {
+ self.pasteSpecial();
+ } else {
+ self.paste();
+ }
+ }
+ break;
+ case 17:
+ keyModifier.ctrl = true;
+ break;
+ case 18:
+ keyModifier.alt = true;
+ break;
+ case 16:
+ keyModifier.shift = true;
+ break;
+ default:
+ return;
+ }
+ e.preventDefault();
+ }).on("keyup", function(e){
+ switch (e.which) {
+ case 17:
+ keyModifier.ctrl = false;
+ break;
+ case 18:
+ keyModifier.alt = false;
+ break;
+ case 16:
+ keyModifier.shift = false;
+ break;
+ default:
+ return;
+ }
+ e.preventDefault();
+ });
+
+ newInstance();
+ buildWavecontrols();
+ createLeftPane();
+ };
+
+ }; // end twist
+
+ $(function() {
+ window.twist = new Twist(appdata);
+ window.app = new CSApplication({
+ csdUrl: "twist.csd",
+ csOptions: ["--omacro:TWST_FAILONLAG=1"],
+ onPlay: function () {
+ twist.setLoadingStatus(false);
+ },
+ errorHandler: twist.errorHandler,
+ ioReceivers: {percent: twist.setPercent}
+ });
+
+ $("#start_invoke").click(function() {
+ $("#start").hide();
+ twist.run();
+ twist.setLoadingStatus(true);
+ app.play();
+ });
+
+ });
+
+
+ </script>
+ <style type="text/css">
+ /* Remove default bullets */
+ ul, .treelist {
+ list-style-type: none;
+ }
+
+ /* Remove margins and padding from the parent ul */
+ .treelist {
+ margin: 0;
+ padding: 0;
+ }
+
+ /* Style the caret/arrow */
+ .caret {
+ cursor: pointer;
+ font-weight: bold;
+ user-select: none; /* Prevent text selection */
+ }
+
+ /* Create the caret/arrow with a unicode, and style it */
+ .caret::before {
+ content: "\25B6";
+ color: black;
+ display: inline-block;
+ margin-right: 6px;
+ }
+
+ /* Rotate the caret/arrow icon when clicked on (using JavaScript) */
+ .caret-down::before {
+ transform: rotate(90deg);
+ }
+
+ /* Hide the nested list */
+ .nested {
+ display: none;
+ }
+
+ /* Show the nested list when the user clicks on the caret/arrow (with JavaScript) */
+ .active {
+ display: block;
+ }
+
+
+ .treetop_header {
+ font-size: 16pt;
+ font-weight: bold;
+ padding-top: 10px;
+ width: 100%;
+ text-align: center;
+ top: 0px;
+ }
+
+ .treetop {
+ width: 100%;
+ height: 50px;
+ border-bottom: 1px solid black;
+ }
+ </style>
+ <style type="text/css">
+ #loading {
+ position: fixed;
+ display: none;
+ z-index: 161;
+ background-color: #7e80f2;
+ text-align: center;
+ font-size: 64pt;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ }
+
+ #loading_percent {
+ position: absolute;
+ top: 20%;
+ left: 30%;
+ width: 40%;
+ height: 10%;
+ background-color: #9a88f7;
+ }
+
+ #loading_percent_inner {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ height: 100%;
+ width: 1%;
+ background-color: #5e50a2;
+ }
+
+ #main {
+ position: absolute;
+ z-index: 5;
+ background-color: "#c5c5f0;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ }
+
+ .waveform {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ }
+
+ #waveforms {
+ position: absolute;
+ left: 15%;
+ top: 0px;
+ height: 60%;
+ width: 85%;
+ }
+
+ .waveform_overlay {
+ position: absolute;
+ padding: 20px;
+ width: 100%;
+ height: 100%;
+ background-color: #fcf6de;
+ opacity: 0.9;
+ left: 0px;
+ top: 0px;
+ z-index: 20;
+ }
+
+ #sidepane {
+ position: absolute;
+ background-color: #a5a5d9;
+ left: 0px;
+ top: 0px;
+ height: 100%;
+ width: 15%;
+ border-right: 1px solid black;
+ }
+
+ #controls {
+ position: absolute;
+ background-color: #9d9ded;
+ left: 15%;
+ top: 65%;
+ height: 40%;
+ width: 85%;
+ border-top: 1px solid black;
+ }
+
+ #wavecontrols {
+ position: absolute;
+ overflow: hidden;
+ background-color: #323265;
+ left: 15%;
+ top: 60%;
+ height: 5%;
+ width: 85%;
+ border-top: 1px solid black;
+ }
+
+ #waveform_tabs {
+ cursor: pointer;
+ }
+
+ #panetree {
+ font-size: 8pt;
+ font-family: Arial, sans-serif;
+ }
+
+ button {
+ border: none;
+ background-color: #8787bd;
+ font-size: 8pt;
+ padding: 1px;
+ font-family: Arial, sans-serif;
+ }
+
+ .tfv_script {
+ background-color: #323265;
+ color: #ffc67a;
+ font-size: 10pt;
+ font-family: monospace, Courier;
+ width: 100%;
+ height: 100%;
+ }
+
+ .tfv_container {
+ background-color: #8181fa;
+ font-size: 10pt;
+ font-family: Arial, sans-serif;
+ }
+
+ .tfv_row_odd {
+ background-color: #8181c9;
+ font-size: 10pt;
+ font-family: Arial, sans-serif;
+ }
+
+ .tfv_row_even {
+ background-color: #7171ba;
+ font-size: 10pt;
+ font-family: Arial, sans-serif;
+ }
+
+ .tfv_cell {
+ font-size: 10pt;
+ font-family: Arial, sans-serif;
+ }
+
+ .tfv_cellfixed {
+ font-size: 8pt;
+ font-family: Arial, sans-serif;
+ overflow: hidden;
+ width: 40px;
+ }
+
+ .tfv_header {
+ background-color: #565698;
+ font-size: 11pt;
+ font-weight: bold;
+ }
+
+ .automate_container {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 125;
+ display: none;
+ }
+
+ #prompt {
+ z-index: 201;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: #3434d9;
+ display: none;
+ }
+
+ #prompt_centre {
+ z-index: 202;
+ position: relative;
+ height: 200px;
+ }
+
+ #prompt_inner {
+ z-index: 203;
+ margin: 0;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ font-size: 24pt;
+ cursor: pointer;
+ text-align: centre;
+ }
+
+ #prompt_button {
+ font-size: 24pt;
+ padding: 20px;
+ }
+
+ #start {
+ z-index: 200;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: #5656d1;
+ }
+
+ #start_centre {
+ z-index: 201;
+ position: relative;
+ height: 200px;
+ }
+
+ .transparentinput {
+ font-size: 8pt;
+ background-color: 9898ff;
+ color: #000000";
+ border: none;
+ }
+
+ .wtab_selected {
+ font-size: 8pt;
+ font-weight: bold;
+ background-color: 9898ff;
+ color: #000000";
+ padding: 3px;
+ border: 1px solid black;
+ border-top: 0;
+ }
+
+ .wtab_unselected {
+ font-size: 8pt;
+ background-color: #8888df;
+ font-weight: normal;
+ color: #000000";
+ padding: 3px;
+ border: 1px solid black;
+ }
+
+ #start_invoke {
+ z-index: 202;
+ text-align: centre;
+ margin: 0;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ font-size: 72pt;
+ cursor: pointer;
+ }
+
+ body {
+ font-family: Arial, sans-serif;
+ }
+
+ </style>
+ </head>
+ <body>
+ <div id="prompt">
+ <div id="prompt_centre">
+ <div id="prompt_inner">
+ <p id="prompt_text"></p>
+ <button id="prompt_button">OK</button>
+ </div>
+ </div>
+ </div>
+ <div id="start">
+ <div id="start_centre">
+ <h1>twist</h1>
+ <p>Web based audio transformer</p>
+ <p id="start_invoke">Press to begin</p>
+ </div>
+ </div>
+ <div id="loading">
+ Processing
+ <div id="loading_percent"><div id="loading_percent_inner"></div></div>
+ </div>
+ <div id="main">
+ <div id="waveforms"></div>
+ <div id= "automate_container"></div>
+ <div id="wavecontrols">
+ <table><tbody><tr id="waveform_tabs"></tr><tbody></table>
+ <table><tbody><tr id="wavecontrols_inner"></tr><tbody></table>
+ </div>
+ <div id="sidepane">
+ <div id="panetree"></div>
+ </div>
+ <div id="controls"></div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/site/app/twist/_unlive/splinetest.html b/site/app/twist/_unlive/splinetest.html
new file mode 100644
index 0000000..cda0969
--- /dev/null
+++ b/site/app/twist/_unlive/splinetest.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html lang="en-GB">
+ <head>
+ <title>twist</title>
+ <script type="text/javascript" src="https://apps.csound.1bpm.net/code/jquery.js"></script>
+ <script src="https://apps.csound.1bpm.net/code/d3.v7.min.js"></script>
+ <script type="text/javascript" src="../base/spline-edit.js"></script>
+ <script type="text/javascript">
+ $(function() {
+ window.spline = new SplineEdit(
+ $("#spline"),
+ "#992222",
+ 30,
+ [-500, 500, 100, 0.0001],
+ "ass"
+ );
+ });
+ </script>
+ <style type="text/css">
+ .tooltip-splineedit {
+ position: absolute;
+ text-align: center;
+ border-radius: 5px;
+ pointer-events: none;
+ padding: 2px;
+ color: #000000;
+ opacity: 0;
+ font-family: Arial, sans-serif;
+ font-size: 8pt;
+ text-shadow: 1px 1px #ffffff;
+ z-index: 42;
+ }
+ #spline {
+ position: absolute;left:0px;top:20%;width: 100%;height: 50%;background-color:#bdbdbd;
+ }
+ </style>
+ </head>
+ <body>
+ <div id="tooltip-splineedit" class="tooltip-splineedit"></div>
+ <div id="spline"></div>
+ </body>
+</html> \ No newline at end of file
diff --git a/site/app/twist/_unlive/transform.js b/site/app/twist/_unlive/transform.js
new file mode 100644
index 0000000..3810359
--- /dev/null
+++ b/site/app/twist/_unlive/transform.js
@@ -0,0 +1,1024 @@
+var TransformParameter = function(instr, tDefinition, parent, transform, twist, onChange) {
+ var self = this;
+ var refreshable = false;
+ var changeFunc;
+ var initval = true;
+ var definition = {};
+ var randomiseAllowed = true;
+ var visible = true;
+
+ if (parent) {
+ Object.assign(definition, tDefinition);
+ } else {
+ definition = tDefinition;
+ }
+
+ if (definition.channel == "applymode") {
+ randomiseAllowed = false;
+ }
+
+ if (definition.hasOwnProperty("preset")) {
+ var save = {};
+ for (var s of ["dfault", "name", "channel", "automatable", "description"]) {
+ if (definition.hasOwnProperty(s)) {
+ save[s] = definition[s];
+ }
+ }
+
+ if (definition.preset == "amp") {
+ Object.assign(definition, {name: "Amplitude", channel: "amp", description: "Amplitude", dfault: 1, min: 0, max: 1});
+ } else if (definition.preset == "pvslock") {
+ Object.assign(definition, {name: "Peak lock", channel: "pvslock", description: "Lock frequencies around peaks", step: 1, dfault: 0});
+ } else if (definition.preset == "fftsize") {
+ Object.assign(definition, {name: "FFT size", channel: "fftsize", description: "FFT size", options: [256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65535], dfault: 2, asvalue: true, automatable: false, lagHint: -1});
+ } else if (definition.preset == "wave") {
+ Object.assign(definition, {name: "Wave", description: "Wave shape to use", options: ["Sine", "Square", "Saw", "Pulse", "Triangle"], dfault: 0, channel: "wave"});
+ } else if (definition.preset == "wintype") {
+ Object.assign(definition, {name: "Window type", channel: "wintype", description: "Window shape", options: ["Hanning", "Hamming", "Half sine"], dfault: 0, automatable: false});
+
+ } else if (definition.preset == "instanceloop") {
+ Object.assign(definition, {name: "Cross instance loop type", channel: "otlooptype", description: "Loop type of other instance", options: ["None", "Forward", "Backward", "Ping-pong"], dfault: 0});
+
+ } else if (definition.preset == "applymode") {
+ Object.assign(definition, {name: "Apply mode", channel: "applymode", absolutechannel: true, description: "Apply mode", automatable: false, options: ["Replace", "Mix", "Modulate", "Demodulate"], dfault: 0});
+ } else if (definition.preset == "note") {
+ var notes = {};
+ for (var i = 21; i < 128; i++) {
+ var v = twist.noteData.data.notes[i];
+ notes[v[0]] = v[1];
+ }
+ Object.assign(definition, {name: "Note", channel: "note", description: "Note to use", options: notes, dfault: 69, automatable: true});
+ } else if (definition.preset == "instance") {
+ var c = (!definition.channel) ? "ot" : definition.channel;
+ initval = false;
+ if (transform) transform.refreshable = true;
+ refreshable = true;
+ Object.assign(definition, {
+ name: "Instance", description: "Other wave to use", channel: instr + "_" + "instance",
+ options: twist.otherInstanceNames,
+ automatable: false
+ });
+ changeFunc = function(index) {
+ var s = twist.waveforms[index].selected;
+ app.setControlChannel(instr + "_" + "inststart", s[0]);
+ app.setControlChannel(instr + "_" + "instend", s[1]);
+ app.setControlChannel(instr + "_" + "instchan", s[2]);
+ };
+ }
+ if (save) {
+ Object.assign(definition, save);
+ }
+ } // if preset
+
+ var type;
+
+ if (definition.hasOwnProperty("conditions") && !parent) {
+ refreshable = true;
+ if (transform) transform.refreshable = refreshable;
+ }
+
+ var channel = "";
+ if (!definition.hasOwnProperty("absolutechannel")) {
+ channel = (parent) ? parent.channel : instr + "_";
+ }
+
+ if (definition.hasOwnProperty("channel")) {
+ channel += definition.channel;
+ } else {
+ channel += definition.name.toLowerCase();
+ }
+
+ var elContainer = $("<div />");
+ var elValueLabel = $("<div />");
+ var elValueInput;
+ var elModulations;
+ var elInput;
+ var elRow;
+ var elModSelect;
+ var automation = [];
+
+ this.definition = definition;
+ this.modulation = null;
+ this.automation = null;
+ this.channel = channel;
+ this.modulationParameters = null;
+
+ this.setPlaying = async function(state) {
+ if (definition.automatable || definition.hidden) return;
+ if (elValueInput) {
+ elValueInput.prop("disabled", state);
+ elValueInput.css("opacity", (state) ? 0.8 : 1);
+ }
+
+ if (elInput) {
+ elInput.prop("disabled", state);
+ elInput.css("opacity", (state) ? 0.8 : 1);
+ }
+ };
+
+
+ if (!definition.hasOwnProperty("hidden")) {
+ definition.hidden = false;
+ }
+
+ if (!definition.hasOwnProperty("step")) {
+ definition.step = 0.0000001;
+ }
+
+ if (!definition.hasOwnProperty("min")) {
+ definition.min = 0;
+ }
+
+ if (!definition.hasOwnProperty("max")) {
+ definition.max = 1;
+ }
+
+ if (!definition.hasOwnProperty("fireChanges")) {
+ definition.fireChanges = true;
+ }
+
+ if (!definition.hasOwnProperty("dfault")) {
+ definition.dfault = 1;
+ }
+
+ if (parent) {
+ if (definition.hostrange) {
+ var items = ["step", "min", "max", "options", "conditions", "hostrange"];
+ if (definition.dfault == "hostrangemin") {
+ definition.dfault = parent.definition.min;
+ } else if (definition.dfault == "hostrangemax") {
+ definition.dfault = parent.definition.max;
+ } else {
+ items.push("dfault");
+ }
+ for (let o of items) {
+ if (parent.definition.hasOwnProperty(o)) {
+ definition[o] = parent.definition[o];
+ }
+ }
+ } else if (definition.preset == "hostrangemin") {
+ definition.min = definition.max = definition.dfault = parent.definition.min;
+ } else if (definition.preset == "hostrangemax") {
+ definition.min = definition.max = definition.dfault = parent.definition.max;
+ }
+ }
+
+ if (definition.hasOwnProperty("options")) {
+ type = "select";
+ } else if (definition.hasOwnProperty("type")) {
+ type = definition.type;
+ } else if (definition.min == 0 && definition.max == 1 && definition.step == 1) {
+ type = "checkbox";
+ } else {
+ type = "range";
+ }
+
+ if (!definition.hasOwnProperty("automatable")) {
+ definition.automatable = ((type == "range" || type == "checkbox") && !parent);
+ }
+
+ this.getLagHint = function() {
+ if (!definition.lagHint || !visible) return;
+ var lagHint;
+ if (typeof(definition.lagHint) == "object") {
+ lagHint = "setting <i>" + definition.name + "</i> to <i>"
+ + definition.options[definition.lagHint.option] + "</i>";
+ } else {
+ lagHint = ((definition.lagHint < 0) ? "reducing" : "increasing")
+ + " <i>" + definition.name + "</i>";
+ }
+ return lagHint;
+ };
+
+ this.setRawValue = function(val) {
+ if (type == "checkbox") {
+ elInput[0].checked = (val == 0) ? false : true;
+ } else {
+ elInput.val(val);
+ }
+ elInput.trigger("change");
+ }
+
+ this.getRawValue = function() {
+ return elInput.val();
+ }
+
+ this.getValue = function() {
+ var val;
+ if (type == "range" || type == "string") {
+ val = elInput.val();
+ } else if (type == "select") {
+ val = (definition.asvalue) ? elInput.find("option:selected").text() : elInput.val();
+ } else if (type == "checkbox") {
+ val = (elInput[0].checked) ? 1 : 0;
+ }
+ return val;
+ };
+
+ this.reset = function() {
+ self.setRawValue(definition.dfault);
+ if (automationActive) disableAutomation();
+ if (self.automation) {
+ delete self.automation;
+ self.automation = null;
+ }
+ if (elSpline) {
+ elSpline.remove();
+ delete elSpline;
+ }
+ if (modulationShown) hideModulations();
+ };
+
+ this.randomise = function() {
+ if (!randomiseAllowed) return;
+ var val;
+ if (definition.automatable) {
+ if (Math.random() >= 0.5) {
+ modButton.el.click();
+ }
+ }
+
+ if (type == "select") {
+ val = Math.round(Math.random() * (definition.options.length - 1));
+ } else if (type == "range") {
+ val = (Math.random() * (definition.max - definition.min)) + definition.min;
+ if (definition.step == 1) {
+ val = Math.round(val);
+ } else {
+ val = Math.ceil((val - definition.min) / definition.step) * definition.step + definition.min;
+ }
+ } else if (type = "checkbox") {
+ val = (Math.round(Math.random()));
+ }
+ self.setRawValue(val);
+
+ if (self.modulationParameters) {
+ // 4 = just the non-crossadaptive ones
+ elModSelect.val(Math.round(Math.random() * 4)).trigger("change");
+ for (let mp in self.modulationParameters) {
+ self.modulationParameters[mp].randomise();
+ }
+ }
+ };
+
+
+ this.refresh = function() {
+ if (!refreshable || !transform) {
+ return;
+ }
+ if (definition.preset == "instance") {
+ createSelectOptions(elInput, twist.otherInstanceNames);
+ }
+ for (var k in definition.conditions) {
+ var c = definition.conditions[k];
+ var val = transform.parameters[transform.instr + "_" + c.channel].getValue();
+ if (
+ (c.operator == "eq" && val != c.value) ||
+ (c.operator == "neq" && val == c.value) ||
+ (c.operator == "lt" && val >= c.value) ||
+ (c.operator == "gt" && val <= c.value) ||
+ (c.operator == "le" && val > c.value) ||
+ (c.operator == "ge" && val < c.value)
+ ) {
+ visible = false;
+ return elRow.hide();
+ }
+ }
+ visible = true;
+ elRow.show();
+ };
+
+ function createSelectOptions(elSelect, options) {
+ var selected = elInput.val();
+ elSelect.empty();
+ for (var x in options) {
+ var opt = $("<option />").text(options[x]).val(x).appendTo(elSelect);
+ if (x == selected) {
+ opt.attr("selected", "1");
+ if (changeFunc) changeFunc(x);
+ }
+ }
+ definition.min = 0;
+ definition.max = (Array.isArray(options)) ? options.length - 1 : Object.keys(options).length - 1;
+ }
+
+ function updateLabel() {
+ if (elValueInput) {
+ var val = self.getValue();
+ updateinput = false;
+ rounding = 10000;
+ val = Math.round(val * rounding) / rounding;
+ elValueInput.val(val);
+ updateinput = true;
+ }
+ }
+
+ if (type == "select") {
+ elInput = $("<select />");
+ elInput.change(function(){
+ var val = self.getValue();
+ if (transform) transform.refresh();
+ if (definition.fireChanges) {
+ if (changeFunc) changeFunc(val);
+ app.setControlChannel(channel, val);
+ }
+ if (onChange) {
+ onChange(val);
+ }
+ });
+
+ var options = (definition.hostrange && parent) ? parent.definitions.options : definition.options;
+ createSelectOptions(elInput, options);
+
+ } else if (type == "string") {
+ elInput = $("<input />").change(function() {
+ if (transform) transform.refresh();
+ var val = self.getValue();
+ if (definition.fireChanges) {
+ app.setStringChannel(channel, val);
+ }
+ if (onChange) {
+ onChange(val);
+ }
+ });
+
+ } else if (type == "checkbox") {
+ elInput = $("<input />").addClass("tp_checkbox").attr("type", "checkbox").on("change", function() {
+ if (transform) transform.refresh();
+ var val = self.getValue();
+ if (definition.fireChanges) {
+ app.setControlChannel(channel, val);
+ }
+ if (onChange) {
+ onChange(val);
+ }
+ });
+ } else if (type == "range") {
+ var updateinput = true;
+ var max = definition.max;
+ var min = definition.min;
+ var step = definition.step;
+ var dfault = definition.dfault;
+
+ elInput = $("<input />").addClass("tp_slider").attr("type", "range").on("input", function() {
+ updateLabel();
+ if (definition.fireChanges) {
+ app.setControlChannel(channel, self.getValue());
+ }
+ }).change(function() {
+ updateLabel();
+ if (transform) transform.refresh();
+ var val = self.getValue();
+ if (definition.fireChanges) {
+ app.setControlChannel(channel, val);
+ }
+ if (onChange) {
+ onChange(val);
+ }
+ }).attr("min", min).attr("max", max).attr("step", step).val(dfault);
+
+ elValueInput = $("<input />").attr("type", "number").attr("min", min).attr("max", max).attr("step", step).addClass("transparentinput").appendTo(elValueLabel).change(function() {
+ if (updateinput) {
+ elInput.val($(this).val()).trigger("change").trigger("input");
+ }
+ });
+ }
+
+ elContainer.append(elInput);
+ if (initval) {
+ self.setRawValue(definition.dfault);
+ if (definition.fireChanges) {
+ elInput.trigger("change");
+ }
+ }
+
+
+ this.setDefault = function() {
+ elInput.val(definition.dfault).trigger("change");
+ //app.setControlChannel(channel, definition.dfault);
+ };
+
+ this.remove = function() {
+ elRow.remove();
+ if (elSpline) {
+ elSpline.remove();
+ }
+ if (self.modulation) {
+ self.modulation = null;
+ }
+ if (self.automation) {
+ self.automation = null;
+ }
+ };
+
+ this.getAutomationData = function(start, end) {
+ if (self.modulation) {
+ var m = twist.appdata.modulations[self.modulation];
+ return {type: "modulation", data: [m.instr, self.channel]};
+ } else if (automationActive && self.automation) {
+ return {type: "automation", channel: self.channel, data: self.automation.getLinsegData(start, end, twist.waveform.getRegion())};
+ }
+ };
+
+ var resetButton = twirl.createIcon({
+ label: "Reset parameter",
+ icon: "reset",
+ click: function() {
+ self.reset();
+ }
+ });
+
+ var randomiseButton = twirl.createIcon({
+ label: "Include in randomisation",
+ icon: "randomise",
+ click: function(obj) {
+ randomiseAllowed = !randomiseAllowed;
+ var opacity = (randomiseAllowed) ? 1 : 0.4;
+ obj.el.css("opacity", opacity);
+ }
+ });
+ if (!randomiseAllowed) {
+ randomiseButton.el.css("opacity", 0.4);
+ }
+
+ var elSpline;
+ var editAutomationButton = twirl.createIcon({
+ label: "Select",
+ icon: "show",
+ click: function() {
+ if (!transform) return;
+ if (elSpline) {
+ automationShown = true;
+ transform.showAutomation(definition.name, elSpline);
+ }
+ }
+ });
+ editAutomationButton.el.hide();
+
+ var automationButton = twirl.createIcon({
+ label: "Automate",
+ label2: "Close automation",
+ icon: "automate",
+ icon2: "close",
+ click: function() {
+ if (elSpline && automationActive) {
+ disableAutomation();
+ } else {
+ showAutomation();
+ }
+ }
+ });
+
+ var automationActive = false;
+ var automationShown = false;
+
+ this.hideAutomation = function() {
+ if (!transform) return;
+ automationShown = false;
+ if (elSpline) {
+ transform.hideAutomation(definition.name);
+ }
+ }
+
+ function disableAutomation() {
+ if (!transform) return;
+ automationActive = false;
+ automationShown = false;
+ app.setControlChannel(channel, self.getValue());
+ elValueLabel.show();
+ elInput.show();
+ modButton.el.show();
+ automationButton.setState(true);
+ editAutomationButton.el.hide();
+ self.hideAutomation();
+ }
+
+ this.redraw = function(region) {
+ if (self.automation) {
+ if (region && region[0] != null && region[1] != null) {
+ self.automation.setRange(region[0], region[1]);
+ } else {
+ self.automation.redraw();
+ }
+ }
+ };
+
+ function showAutomation() {
+ if (!transform) return;
+ var colour = "rgb(" + (Math.round(Math.random() * 50) + 205) + ","
+ + (Math.round(Math.random() * 50) + 205) + ","
+ + (Math.round(Math.random() * 50) + 205) + ")";
+ automationShown = true;
+ automationActive = true;
+
+ if (!elSpline) {
+ elSpline = $("<div />").attr("id", "spl_" + channel).css({
+ position: "absolute", width: "100%", height: "100%", overflow: "hidden"
+ });
+ }
+
+ transform.showAutomation(definition.name, elSpline);
+
+ if (!self.automation) {
+ self.automation = new SplineEdit(
+ elSpline, colour,
+ twist.waveform.getDuration,
+ [definition.min, definition.max, self.getValue(), definition.step],
+ definition.name
+ );
+ }
+
+ elValueLabel.hide();
+ elInput.hide();
+ modButton.el.hide();
+ elSpline.show();
+ editAutomationButton.el.show(); //.css("background-color", colour);
+ automationButton.setState(false);
+ }
+
+
+ elModulations = $("<div />").addClass("tfv_container").hide().appendTo(elContainer);
+ var modulationShown = false;
+
+
+ var modButton = twirl.createIcon({
+ label: "Modulate",
+ label2: "Close modulation",
+ icon: "modulate",
+ icon2: "close",
+ click: function() {
+ if (elModulations && modulationShown) {
+ hideModulations();
+ } else {
+ showModulations();
+ }
+ }
+ });
+
+ function hideModulations() {
+ app.setControlChannel(channel, self.getValue());
+ modulationShown = false;
+ elValueLabel.show();
+ elInput.show();
+ automationButton.el.show();
+ self.modulation = null;
+ modButton.setState(true);
+ if (elModulations) {
+ elModulations.hide();
+ }
+ }
+
+ function showModulations() {
+ if (!transform) return;
+ modulationShown = true;
+ elValueLabel.hide();
+ elInput.hide();
+ automationButton.el.hide();
+ elModulations.show();
+ modButton.setState(false);
+ if (elModulations.children().length != 0) {
+ elModSelect.val(0).trigger("change");
+ return;
+ }
+ var tb = $("<tbody />");
+ function buildModulation(i) {
+ tb.empty();
+ self.modulationParameters = {};
+ self.modulation = i;
+ let m = twist.appdata.modulations[i];
+ for (let x of m.parameters) {
+ var tp = new TransformParameter(m.instr, x, self, transform, twist);
+ self.modulationParameters[tp.channel] = tp;
+ tb.append(tp.getElementRow(true)); // hmm modulate the modulation with false
+ }
+ }
+ var selecttb = $("<tbody />").appendTo($("<table />)").appendTo(elModulations));
+ var row = $("<tr />").append($("<td />").text("Modulation type")).appendTo(selecttb);
+ var elConditionalOptions = [];
+
+ twist.onInstanceChangeds.push(function(){
+ for (let o of elConditionalOptions) {
+ if (twist.waveforms.length == 1) {
+ o.prop("disabled", true);
+ } else {
+ o.prop("disabled", false);
+ }
+ }
+ });
+
+ elModSelect = $("<select />").change(function() {
+ self.modulation = $(this).val();
+ buildModulation(self.modulation);
+ }).appendTo($("<td />").appendTo(row));
+ $("<table />").append(tb).appendTo(elModulations);
+
+ for (let i in twist.appdata.modulations) {
+ var m = twist.appdata.modulations[i];
+ var o = $("<option />").text(m.name).val(i).appendTo(elModSelect);
+ if (m.inputs > 1) {
+ elConditionalOptions.push(o);
+ if (twist.waveforms.length == 1) {
+ o.prop("disabled", true);
+ }
+ }
+ }
+ elModSelect.val(0).trigger("change");
+ }
+
+ this.getElementRow = function(nocontrols) {
+ if (definition.hidden) {
+ return null;
+ };
+ if (elRow) {
+ return elRow;
+ }
+ elRow = $("<tr />");
+ var name = $("<td />").addClass("tfv_cell_text").text(definition.name).appendTo(elRow);
+ if (definition.description) {
+ name.on("mouseover", function(event){
+ twirl.tooltip.show(event, definition.description);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ $("<td />").addClass("tfv_cell").append(elContainer).appendTo(elRow);
+ $("<td />").addClass("tfv_cellfixed").append(elValueLabel).appendTo(elRow);
+ if (!nocontrols) {
+ for (let b of [resetButton, randomiseButton]) $("<td />").addClass("tfv_cell_plainbg").append(b.el).appendTo(elRow);
+
+ if (definition.automatable) {
+ for (let b of [automationButton, editAutomationButton, modButton]) $("<td />").addClass("tfv_cell_plainbg").append(b.el).appendTo(elRow);
+ }
+
+ }
+ return elRow;
+ };
+};
+
+
+
+function getTransformContainer(nameOrElement) {
+ var el = $("<div />").addClass("tfv_header");
+ if (typeof(nameOrElement) == "string") {
+ el.text(nameOrElement);
+ } else {
+ el.append(nameOrElement);
+ }
+ return $("<div />").addClass("tfv_container").append(el);
+}
+
+var Transform = function(target, def, twist) {
+ var self = this;
+ var elTb;
+ var pAddOdd = true;
+ this.instr = def.instr;
+ this.refreshable = false;
+ var elSplineOverlay;
+ var hideAutomationButton;
+ this.parameters = {};
+
+ var automationEls = {};
+ this.showAutomation = function(name, el) {
+ if (!elSplineOverlay) {
+ elSplineOverlay = $("<div />").addClass("spline_overlay").appendTo($("#twist_splines"));
+ }
+ for (var e in automationEls) {
+ automationEls[e].css({"z-index": 23, opacity: 0.4});
+ }
+ if (!el) {
+ el = automationEls[name];
+ } else {
+ automationEls[name] = el;
+ }
+ el.css({"z-index": 24, opacity: 1}).show();
+ hideAutomationButton.el.show();
+ elSplineOverlay.show();
+ if (el.parents(elSplineOverlay).length == 0) {
+ elSplineOverlay.append(el);
+ }
+ $("#twist_splines").show();
+ };
+
+ this.getLagHints = function() {
+ var lagHints = [];
+ for (let i in self.parameters) {
+ var p = self.parameters[i];
+ var lagHint = p.getLagHint();
+ if (lagHint) lagHints.push(lagHint);
+ }
+ var lagHintHtml;
+ if (lagHints.length != 0) {
+ lagHintHtml = "Try ";
+ for (var i in lagHints) {
+ lagHintHtml += lagHints[i];
+ if (i != lagHints.length - 1) {
+ lagHintHtml += ((i == lagHints.length - 2) ? " or " : ", ");
+ }
+ }
+ }
+ return lagHintHtml;
+ };
+
+ this.hideAutomation = function(name) {
+ if (automationEls[name]) {
+ automationEls[name].hide();
+ delete automationEls[name];
+ if (Object.keys(automationEls).length == 0) {
+ elSplineOverlay.hide();
+ hideAutomationButton.el.hide();
+ $("#twist_splines").hide();
+ }
+ }
+ }
+
+ this.hideAllAutomation = function(name) {
+ for (let p in self.parameters) {
+ self.parameters[p].hideAutomation();
+ }
+ };
+
+ this.redraw = function(region) {
+ for (let p in self.parameters) {
+ self.parameters[p].redraw(region);
+ }
+ };
+
+ this.refresh = function() {
+ if (!self.refreshable) {
+ return;
+ }
+ for (var k in self.parameters) {
+ self.parameters[k].refresh();
+ }
+ };
+
+ this.getAutomationData = function(start, end) {
+ var automations = [];
+ for (var k in self.parameters) {
+ var data = self.parameters[k].getAutomationData(start, end);
+ if (data) {
+ automations.push(data);
+ }
+ }
+ return automations;
+ };
+
+ this.getState = async function() {
+ var data = {instr: def.instr, channels: {}};
+ var value;
+ for (let chan in self.parameters) {
+ value = await app.getControlChannel(chan);
+ data.channels[chan] = value;
+ if (self.parameters[chan].modulationParameters) {
+ for (let modchan in self.parameters[chan].modulationParameters) {
+ value = await app.getControlChannel(modchan);
+ data.channels[modchan] = value;
+ }
+ }
+ }
+ return data;
+ };
+
+
+ this.reset = function() {
+ for (let p in self.parameters) {
+ self.parameters[p].reset();
+ }
+ };
+
+ this.randomise = function() {
+ for (let p in self.parameters) {
+ self.parameters[p].randomise();
+ if (self.parameters[p].modulationParameters) {
+ for (let mp in self.parameters[p].modulationParameters) {
+ self.parameters[p].modulationParameters[mp].randomise();
+ }
+ }
+ }
+ };
+
+ this.saveState = function() {
+ var state = {};
+ for (let p in self.parameters) {
+ state[p] = self.parameters[p].getRawValue();
+ }
+ if (!twist.storage.transforms) {
+ twist.storage.transforms = {};
+ }
+ twist.storage.transforms[def.instr] = state;
+ twist.saveStorage();
+ };
+
+ this.remove = function() {
+ self.saveState();
+ for (let p in self.parameters) {
+ self.parameters[p].remove();
+ }
+ if (elSplineOverlay) {
+ elSplineOverlay.remove();
+ }
+ }
+
+ this.removeParameter = function(channel) {
+ if (self.parameters.hasOwnProperty(channel)) {
+ self.parameters[channel].remove();
+ delete self.parameters[channel]
+ }
+ };
+
+ function addParameter(pdef) {
+ var tp = new TransformParameter(def.instr, pdef, null, self, twist);
+ self.parameters[tp.channel] = tp;
+ var er = tp.getElementRow();
+ if (er) {
+ elTb.append(er.addClass("tfv_row_" + ((pAddOdd) ? "odd" : "even")));
+ pAddOdd = !pAddOdd;
+ };
+ };
+
+ this.setPlaying = function(state) {
+ for (let i in self.parameters) {
+ self.parameters[i].setPlaying(state);
+ }
+ };
+
+ function namePrepend(name, pdef) {
+ if (!pdef.hasOwnProperty("nameprepend")) return name;
+ name = pdef.nameprepend + " " + name;
+ return name[0] + name.substr(1).toLowerCase()
+ }
+
+ this.addParameter = function(pdef) {
+ if (!pdef.hasOwnProperty("presetgroup")) {
+ return addParameter(pdef);
+ }
+ var name;
+ var conditions;
+ var groupParameters = [];
+ var channelPrepend = (pdef.hasOwnProperty("channelprepend")) ? pdef.channelprepend : "";
+
+ if (pdef.presetgroup == "pvsynth") {
+ var dfaultMode = (pdef.hasOwnProperty("dfault")) ? pdef.dfault : 0;
+ conditions = [
+ {channel: channelPrepend + "pvresmode", operator: "eq", value: 1}
+ ];
+ groupParameters = [
+ {name: namePrepend("Resynth mode", pdef), channel: channelPrepend + "pvresmode", description: "Type of FFT resynthesis used", dfault: dfaultMode, options: ["Overlap-add", "Additive"], automatable: false},
+ {name: namePrepend("Oscillator spread", pdef), channel: channelPrepend + "pvaoscnum", description: "Number of oscillators used", automatable: false, conditions: conditions, lagHint: -1},
+ {name: namePrepend("Frequency modulation", pdef), channel: channelPrepend + "pvafreqmod", description: "Frequency modulation", dfault: 1, min: 0.01, max: 2, conditions: conditions},
+ {name: namePrepend("Oscillator offset", pdef), channel: channelPrepend + "pvabinoffset", description: "Oscillator bin offset", automatable: false, conditions: conditions, dfault: 0, lagHint: 1},
+ {name: namePrepend("Oscillator increment", pdef), channel: channelPrepend + "pvabinincr", description: "Oscillator bin increment", min: 1, max: 8, dfault: 1, step: 1, automatable: false, conditions: conditions, lagHint: -1}
+ ];
+ } else if (pdef.presetgroup == "pvanal") {
+ groupParameters = [
+ {preset: "fftsize"},
+ {preset: "pvslock"},
+ {name: "Overlap decimation", min: 4, max: 16, step: 1, dfault: 4, channel: "pvsdecimation", automatable: false, lagHint: -1},
+ {name: "Window size multiplier", min: 1, max: 4, dfaut: 1, step :1, channel: "pvswinsizem", automatable: false, lagHint: -1},
+ {name: "Window type", options: ["Hamming", "Von Hann", "Kaiser"], dfault: 1, automatable: false}
+ ];
+ } else if (pdef.presetgroup == "pitchscale") {
+ groupParameters = [
+ {name: namePrepend("Pitch scale mode", pdef), channel: channelPrepend + "pitchscalemode", options: ["Ratio", "Semitone"], dfault: 0},
+ {name: namePrepend("Pitch scale", pdef), channel: channelPrepend + "pitchscale", description: "Pitch scaling", dfault: 1, min: 0.01, max: 10, conditions: [{channel: channelPrepend + "pitchscalemode", operator: "eq", value: 0}]},
+ {name: namePrepend("Semitones", pdef), channel: channelPrepend + "pitchsemitones", min: -24, max: 24, step: 1, dfault: 0, conditions: [{channel: channelPrepend + "pitchscalemode", operator: "eq", value: 1}]}
+ ];
+
+ } else if (pdef.presetgroup == "notefreq") {
+ var base = {name: namePrepend("Frequency mode", pdef), channel: channelPrepend + "freqmode", description: "Frequency mode", options: ["Frequency", "Note"], dfault: 0};
+ if (pdef.hasOwnProperty("conditions")) {
+ base["conditions"] = pdef.conditions;
+ }
+ groupParameters.push(base);
+
+ conditions = [{channel: channelPrepend + "freqmode", operator: "eq", value: 0}];
+ if (pdef.hasOwnProperty("conditions")) {
+ Array.prototype.push.apply(conditions, pdef.conditions);
+ }
+
+ var dfaultFreq = (pdef.hasOwnProperty("dfault")) ? pdef.dfault : 440;
+
+ var freq = {name: namePrepend("Frequency", pdef), channel: channelPrepend + "freq", description: "Frequency", dfault: dfaultFreq, min: 20, max: 22000, conditions: conditions}
+ if (pdef.hasOwnProperty("lagHint")) {
+ freq.lagHint = pdef.lagHint;
+ }
+ groupParameters.push(freq);
+
+ conditions = [{channel: channelPrepend + "freqmode", operator: "eq", value: 1}];
+ if (pdef.hasOwnProperty("conditions")) {
+ Array.prototype.push.apply(conditions, pdef.conditions);
+ }
+ var note = {preset: "note", name: namePrepend("Note", pdef), conditions: conditions, channel: channelPrepend + "note"};
+ if (pdef.hasOwnProperty("lagHint")) {
+ note.lagHint = pdef.lagHint;
+ }
+ groupParameters.push(note);
+
+ }
+ for (let gp of groupParameters) {
+ if (pdef.hasOwnProperty("automatable")) {
+ gp.automatable = pdef.automatable;
+ }
+ addParameter(gp);
+ }
+ }
+
+ function build() {
+ target.empty();
+ var elContainer = $("<div />").addClass("tfv_container").appendTo(target);
+ hideAutomationButton = twirl.createIcon({label: "Hide automation", icon: "hide", click: function() {
+ self.hideAllAutomation();
+ }});
+ hideAutomationButton.el.hide();
+
+ app.setControlChannel("applymode", 0); // not all transforms will set this
+ var el = $("<div />");
+ var header = $("<div />").text(def.name).appendTo(el);
+
+ if (def.description) {
+ header.on("mouseover", function(event){
+ twirl.tooltip.show(event, def.description);
+ }).on("mouseout", function(){
+ twirl.tooltip.hide();
+ });
+ }
+
+ $("<div />").css({"float": "right"}).append(
+ hideAutomationButton.el
+ ).append(
+ twirl.createIcon({
+ label: "Randomise parameters",
+ icon: "randomise",
+ click: function() {
+ self.randomise();
+ }
+ }).el
+ ).append(
+ twirl.createIcon({
+ label: "Reset parameters",
+ icon: "reset",
+ click: function() {
+ self.reset();
+ }
+ }).el
+ ).appendTo(el);
+
+ $("<div />").addClass("tfv_container").append(
+ $("<div />").addClass("tfv_header").append(el)
+ ).appendTo(elContainer);
+
+ //getTransformContainer(el).appendTo(elContainer);
+ var tbl = $("<table />").appendTo(elContainer);
+ elTb = $("<tbody />").appendTo(tbl);
+
+ for (let p of def.parameters) {
+ self.addParameter(p);
+ }
+
+ if (twist.storage && twist.storage.transforms && twist.storage.transforms[def.instr]) {
+ var state = twist.storage.transforms[def.instr];
+ for (var p in state) {
+ self.parameters[p].setRawValue(state[p]);
+ }
+ }
+ self.refresh();
+ }
+ build();
+};
+
+var TransformsTreeView = function(options, twist) {
+ var self = this;
+ var elTarget = $("#" + options.target);
+
+
+ function recurse(items, descended) {
+ items = (items) ? items : options.items;
+ var ul = $("<ul />").css({"border-bottom": "1px solid #878787", "padding-inline-start": 10}).addClass((descended) ? "nested" : "treelist");
+
+ for (let k in items) {
+ var li = $("<li />");
+ if (items[k].hasOwnProperty("contents")) {
+ $("<span />").addClass("caret").text(items[k].name).click(function() {
+ $(this).parent().children(".nested").toggleClass("active");
+ $(this).toggleClass("caret-down");
+ }).appendTo(li);
+ var subitems = recurse(items[k].contents, true);
+ li.append(subitems);
+
+ } else {
+ li.text(items[k].name).css("cursor", "pointer").click(function(){
+ if (twist.currentTransform) {
+ twist.currentTransform.remove();
+ }
+ twist.currentTransform = new Transform($("#twist_controls"), items[k], twist);
+ });
+ }
+ ul.append(li);
+ }
+ elTarget.append(ul);
+ return ul;
+ }
+
+ elTarget.append(recurse());
+}; \ No newline at end of file
diff --git a/site/app/twist/_unlive/twist_fxtester.csd b/site/app/twist/_unlive/twist_fxtester.csd
new file mode 100644
index 0000000..9f12cb7
--- /dev/null
+++ b/site/app/twist/_unlive/twist_fxtester.csd
@@ -0,0 +1,101 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "/twist/twist.udo"
+
+gStransform = "twst_tf_fftpitchscale";, "twst_tf_morph"
+SchanSet[] fillarray "timescale", "pitchscale", "winsize", "randwin", "overlap", "wintype", "shift", "amp", "freq", "fftsize", "otinstchan", "instanceindex", "otinststart", "otinstend", "pvresmode", "time", "scale", "formants"
+ichanset[] fillarray 1.5, 1, 4410, 441, 4, 0, 900, 0, 1, 512, -1, 1, 0, 1, 0, 0.4, 2, 0
+index = 0
+while (index < lenarray(ichanset)) do
+ chnset ichanset[index], sprintf("%s_%s", gStransform, SchanSet[index])
+ index += 1
+od
+
+
+gSfile1 = "d:/temp/kord.wav"
+gSfile2 = "d:/temp/drive.wav"
+
+instr load1
+ gitwst_instanceindex = 0
+ schedule("twst_loadfile", 0, 1, 0, gSfile1)
+endin
+
+instr load2
+ gitwst_instanceindex = 1
+ schedule("twst_loadfile", 0, 1, 0, gSfile2)
+endin
+
+instr boot
+ schedule("load1", 0, 1)
+ schedule("load2", 1, 1)
+ schedule("audition", 2, 2)
+endin
+
+instr apply
+ schedule("twst_commit", 0, -1, 0, 0, 1, -1, gStransform, 0, 0, 0)
+ turnoff
+endin
+
+instr playback
+ schedule("twst_audition", 0, p3, 0, 0, 1, -1, "", 0)
+ turnoff
+endin
+
+instr audition
+ gitwst_instanceindex = 0
+ schedule("twst_audition", 0, p3, 0, 0, 1, -1, gStransform, 0)
+ turnoff
+endin
+
+
+/*
+gStransform = "twst_tf_freqshift1"
+gStransform = "twst_tfi_sndwarp"
+
+SchanSet[] fillarray "timescale", "pitchscale", "winsize", "randwin", "overlap", "wintype", "shift"
+ichanset[] fillarray 1.5, 1, 4410, 441, 4, 0, 900
+index = 0
+while (index < lenarray(ichanset)) do
+ chnset ichanset[index], sprintf("%s_%s", gStransform, SchanSet[index])
+ index += 1
+od
+
+
+gSfile = "d:/temp/sinetest.wav"
+
+instr boot
+ schedule("twst_loadfile", 0, 1, 0, gSfile)
+ schedule("audition", 1, 2)
+ schedule("apply", 3, 1)
+ schedule("playback", 4, 2)
+endin
+
+instr apply
+ schedule("twst_commit", 0, -1, 0, 0, 1, -1, gStransform, 0, 0, 0)
+ turnoff
+endin
+
+instr playback
+ schedule("twst_audition", 0, p3, 0, 0, 1, -1, "", 0)
+ turnoff
+endin
+
+instr audition
+ schedule("twst_audition", 0, p3, 0, 0, 1, -1, gStransform, 0)
+ turnoff
+endin
+*/
+</CsInstruments>
+<CsScore>
+i"boot" 0 10
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/twist/_unlive/twist_instance_WIP.js b/site/app/twist/_unlive/twist_instance_WIP.js
new file mode 100644
index 0000000..1c56cb6
--- /dev/null
+++ b/site/app/twist/_unlive/twist_instance_WIP.js
@@ -0,0 +1,350 @@
+var TwistInstance = function(index, twist) {
+ var self = this;
+ this.appdata = appdata;
+ this.waveform = null;
+ var waveformFile;
+ var waveformTab;
+ this.onPlays = [];
+ var sr = 44100;
+ var undoLevel;
+
+ function pushOperationLog(operation) {
+ var max = twist.storage.commitHistoryLevel;
+ if (!max) {
+ twist.storage.commitHistoryLevel = max = 16;
+ }
+ if (operationLog.length + 1 >= max) {
+ operationLog.shift();
+ }
+ operationLog.push(operation);
+ }
+
+ this.redraw = function() {
+ self.waveform.redraw();
+ };
+
+ this.close = function() {
+ self.waveform.destroy();
+ delete self.waveform;
+ };
+
+ this.show = function() {
+ self.waveform.show();
+ };
+
+ this.movePlayhead = function() {
+
+ };
+
+ function removeInstance(i) {
+ if (i < 0 || i > this.waveforms.length - 2) {
+ return;
+ }
+ self.waveform.destroy();
+ if (instanceIndex == i) {
+ instanceIndex = i + ((i == 0) ? 1 : -1);
+ self.waveform.show();
+ }
+ }
+
+
+ this.undo = function() {
+ if (playing) return;
+ self.waveform.cover(true);
+ operation("twst_undo", globalCallbackHandler, true, null, true);
+ };
+
+ this.cut = function() {
+ if (playing) return;
+ self.waveform.cover(true);
+ operation("twst_cut", globalCallbackHandler, true);
+ };
+
+ this.delete = function() {
+ if (playing) return;
+ self.waveform.cover(true);
+ operation("twst_delete", globalCallbackHandler, true);
+ };
+
+ this.copy = function() {
+ if (playing) return;
+ self.waveform.cover(true);
+ operation("twst_copy", null, true);
+ };
+
+ this.paste = function() {
+ if (playing) return;
+ self.waveform.cover(true);
+ operation("twst_paste", globalCallbackHandler, true);
+ // keep original play position / offset new
+ };
+
+ this.moveToStart = function() {
+ if (playing) return;
+ self.waveform.setSelection(0);
+ };
+
+ this.moveToEnd = function() {
+ if (playing) return;
+ self.waveform.setSelection(1);
+ };
+
+ this.selectAll = function() {
+ if (playing) return;
+ self.waveform.setSelection(0, 1);
+ };
+
+ this.selectNone = function() {
+ if (playing) return;
+ self.waveform.setSelection(0);
+ };
+
+ this.selectToEnd = function() {
+ if (playing) return;
+ self.waveform.alterSelection(null, 1);
+ }
+
+ this.selectFromStart = function() {
+ if (playing) return;
+ self.waveform.alterSelection(0, null);
+ }
+
+ this.play = function() {
+ if (playing) return;
+ auditioning = false;
+ recording = false;
+ operation("twst_play", playPositionHandler(), false, null, true);
+ };
+
+ this.stop = function() {
+ if (!playing) return;
+ self.waveform.cover(false);
+ app.insertScore("twst_stop");
+ };
+
+ function getAutomationData(start, end) {
+ var calls = [];
+ if (!self.currentTransform) return calls;
+ var automations = self.currentTransform.getAutomationData(start, end);
+ if (automations && automations.length > 0) {
+ for (let i in automations) {
+ if (automations[i].type == "modulation") {
+ calls.push(automations[i].data[0] + " \\\"" + automations[i].data[1] + "\\\"");
+ } else if (automations[i].type == "automation") {
+ calls.push("chnset linseg:k(" + automations[i].data + "), \\\"" + automations[i].channel + "\\\"");
+ }
+ }
+ }
+ return calls;
+ }
+
+ function handleAutomation(onready, calls) {
+ if (calls.length == 0) {
+ return onready(0);
+ }
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status == 1) {
+ onready(1);
+ } else {
+ self.errorHandler("Cannot parse automation data");
+ }
+ });
+
+ var call = [0, 1, cbid];
+ for (let c of calls) {
+ call.push(c);
+ }
+ app.insertScore("twst_automationprepare", call);
+ }
+
+ function compileVariScript(script, onComplete) {
+ var cbid = app.createCallback(function(ndata){
+ onComplete(ndata.status == 1);
+ // should maybe automatically refresh
+ });
+ }
+
+
+ function fftsizeCheck(selected, duration) {
+ if (self.currentTransform) {
+ for (var p in self.currentTransform.parameters) {
+ if (p.indexOf("fftsize") != -1) {
+ var val = self.currentTransform.parameters[p].getValue();
+ var minTime = (val / sr) * 2;
+ if ((selected[1] - selected[0]) * duration < minTime) {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ this.record = async function() {
+ if (playing) return;
+ auditioning = false;
+ recording = true;
+ await app.enableAudioInput();
+ errorState = "Recording error";
+ self.waveform.cover(true);
+ var cbid = playPositionHandler();
+ var s = self.waveform.selected;
+ var items = [0, 1, cbid, s[0], s[1], s[2]];
+ app.insertScore("twst_record", items);
+ };
+
+ this.audition = function() {
+ if (playing) return;
+ if (!self.currentTransform) {
+ return self.play();
+ }
+ self.currentTransform.saveState();
+ var s = self.waveform.selected;
+ if (!fftsizeCheck(s, self.waveform.duration)) {
+ return self.errorHandler("Length too short for this transform");
+ }
+
+ auditioning = true;
+ recording = false;
+ errorState = "Playback error";
+ handleAutomation(function(automating){
+ var cbid = playPositionHandler();
+ var items = [
+ 0, 1, cbid, s[0], s[1], s[2],
+ self.currentTransform.instr, automating,
+ elCrossfades[0].val(), elCrossfades[1].val()
+ ];
+ app.insertScore("twst_audition", items);
+ }, getAutomationData(s[0], s[1]));
+
+ };
+
+
+ var scriptStack = [];
+ function applyScript(audition) {
+ if (playing) return;
+ var lastData;
+ var script = scriptStack.shift();
+ if (!script) {
+ setLoadingStatus(false);
+ if (lastData) {
+ console.log("ass", lastData);
+ globalCallbackHandler(lastData);
+ }
+ twist.setPlaying(false);
+ return;
+ }
+
+ if (audition) auditioning = true;
+ twist.setPlaying(true);
+ if (script.type == "operation") {
+ if (audition) {
+ return self.errorHandler("Only transform scripts can be auditioned");
+ }
+ self.waveform.cover(true);
+ onComplete = (script.instr == "twst_copy") ? null : globalCallbackHandler;
+ operation(script.instr, function(ndata){
+ lastData = ndata;
+ self.setPlaying(false);
+ applyScript(audition);
+ }, true, script.selection);
+ } else if (script.type == "transform") {
+ errorState = ((audition) ? "Audition" : "Transform" ) + " commit error";
+ if (!audition) {
+ setLoadingStatus(true, true);
+ }
+
+ for (let channel in script.channels) {
+ app.setControlChannel(channel, script.channels[channel]);
+ }
+ handleAutomation(function(automating){
+ if (audition) {
+ var cbid = playPositionHandler();
+ } else {
+ var cbid = app.createCallback(function(ndata) {
+ lastData = ndata;
+ self.setPlaying(false);
+ applyScript(audition);
+ });
+ }
+ var instr = "twst_" + ((audition) ? "audition" : "commit");
+
+ app.insertScore(instr, [
+ 0, -1, cbid, script.selection[0], script.selection[1], script.selection[2], script.instr, automating, script.crossfades[0], script.crossfades[1]
+ ]);
+ }, script.automation);
+ }
+ }
+
+ this.applyScript = async function(script, audition) {
+ if (playing) return;
+ scriptStack = [];
+ if (Array.isArray(script)) {
+ if (audition) {
+ return self.errorHandler("Only single scripts can be auditioned");
+ }
+ scriptStack = script;
+ } else {
+ scriptStack = [script];
+ }
+ if (self.storage.autosave && !audition) {
+ self.saveFile(null, function() {
+ applyScript(audition);
+ });
+ } else {
+ applyScript(audition);
+ }
+ };
+
+ async function innerCommit() {
+ if (playing) return;
+ if (!self.currentTransform) return;
+ var s = self.waveform.selected;
+ if (!fftsizeCheck(s, self.waveform.duration)) {
+ return self.errorHandler("Length too short for this transform");
+ }
+ watchdog.start("commit");
+ self.setPlaying(true);
+ setLoadingStatus(true, true);
+ var calls = getAutomationData(s[0], s[1]);
+
+ self.currentTransform.saveState();
+ var state = await self.currentTransform.getState();
+ state.type = "transform";
+ state.automation = calls;
+ state.crossfades = [elCrossfades[0].val(), elCrossfades[1].val()];
+ state.selection = [s[0], s[1], s[2]];
+ state.instanceIndex = instanceIndex;
+ pushOperationLog(state);
+
+ handleAutomation(function(automating){
+ var cbid = app.createCallback(function(ndata) {
+ watchdog.stop();
+ setLoadingStatus(false);
+ self.setPlaying(false);
+ if (ndata.status > 0) {
+ globalCallbackHandler(ndata);
+ } else {
+ var text;
+ if (ndata.status == -2) {
+ text = "Resulting file is too large";
+ }
+ self.errorHandler(text);
+ }
+ });
+ errorState = "Transform commit error";
+ app.insertScore("twst_commit", [0, -1, cbid, s[0], s[1], s[2], self.currentTransform.instr, automating, state.crossfades[0],state.crossfades[1]]);
+ }, calls);
+ }
+
+ this.commit = async function() {
+ if (self.storage.autosave) {
+ self.saveFile(null, function() {
+ innerCommit();
+ });
+ } else {
+ innerCommit();
+ }
+ };
+
+}; // end twist \ No newline at end of file
diff --git a/site/app/twist/_unlive/twist_instance_separation_WIP.js b/site/app/twist/_unlive/twist_instance_separation_WIP.js
new file mode 100644
index 0000000..3805807
--- /dev/null
+++ b/site/app/twist/_unlive/twist_instance_separation_WIP.js
@@ -0,0 +1,1250 @@
+var NoteData = function() {
+ var self = this;
+ this.data = null;
+ fetch("../base/notedata.json").then(function(r) {
+ r.json().then(function(j) {
+ self.data = j;
+ });
+ });
+};
+
+
+
+
+var OperationWatchdog = function(twist) {
+ var self = this;
+ var active = false;
+ var lastValues = [true, false];
+ var firstActive = true;
+ var checkInterval;
+ var timeoutTime = 2000;
+ var alivetimeoutTime = 2000;
+ var context;
+
+ function crash() {
+ self.stop();
+ twist.sendErrorState("Unhandled exception in " + context);
+ var el = $("#twist_crash").show();
+ var elSr = $("#twist_crash_recovery");
+
+ function doomed() {
+ elSr.empty().append($("<h4 />").text("Sorry, unfortunately your work cannot be saved."));
+ }
+
+ var doomedTimeout = setTimeout(doomed, 6000);
+
+ var cbid = app.createCallback(function(ndata) {
+ if (doomedTimeout) clearTimeout(doomedTimeout);
+
+ if (!ndata.left && !ndata.right) {
+ return doomed();
+ }
+ elSr.empty();
+ var text;
+ var linkLeft = $("<a />").attr("href", "#").text("Download").click(function(e){
+ e.preventDefault();
+ twist.downloadFile("/crashL.wav");
+ });
+ if (ndata.left && !ndata.right) {
+ elSr.append($("<h4 />").text("Your work has been recovered:"));
+ elSr.append(linkLeft);
+ } else {
+ elSr.append($("<h4 />").text("Your work has been recovered as separate left/right channels:"));
+ linkLeft.text("Download left channel").appendTo(elSr);
+ elSr.append("<br />");
+ var linkRight = $("<a />").attr("href", "#").text("Download right channel").click(function(e){
+ e.preventDefault();
+ twist.downloadFile("/crashR.wav");
+ }).appendTo(elSr);
+ }
+
+ });
+ app.getCsound().compileOrc("iwrittenL = 0\niwrittenR = 0\nif (gitwst_bufferL[gitwst_instanceindex] > 0) then\niwrittenL ftaudio gitwst_bufferL[gitwst_instanceindex], \"/crashL.wav\", 14\nendif\nif (gitwst_bufferR[gitwst_instanceindex] > 0) then\niwrittenR ftaudio gitwst_bufferR[gitwst_instanceindex], \"/crashR.wav\", 14\nendif\nio_sendstring(\"callback\", sprintf(\"{\\\"cbid\\\":" + cbid + ",\\\"left\\\":%d,\\\"right\\\":%d}\", iwrittenL, iwrittenR))\n");
+ }
+
+ function checkAlive() {
+ var alive = false;
+ var aliveTimeout = setTimeout(crash, alivetimeoutTime);
+ var cbid = app.createCallback(function(){
+ clearTimeout(aliveTimeout);
+ alive = true;
+ });
+ app.insertScore("twst_checkalive", [0, 1, cbid]);
+ }
+
+ this.start = function(startContext) {
+ active = true;
+ context = startContext;
+ firstActive = true;
+ lastValues = [true, false];
+ if (checkInterval) clearInterval(checkInterval);
+ checkInterval = setInterval(function() {
+ if (lastValues[0] === lastValues[1]) {
+ checkAlive();
+ }
+ }, timeoutTime);
+ };
+
+ this.setActive = function(value) {
+ if (!active) return;
+ if (firstActive) {
+ firstActive = false;
+ } else {
+ lastValues[0] = lastValues[1];
+ }
+ lastValues[1] = value;
+ };
+
+ this.stop = function() {
+ active = false;
+ firstActive = true;
+ lastValues = [true, false];
+ if (checkInterval) clearInterval(checkInterval);
+ };
+};
+
+var Twist = function(appdata) {
+ var self = this;
+ var audioTypes = ["audio/mpeg", "audio/mp4", "audio/ogg", "audio/vorbis", "audio/x-flac","audio/aiff","audio/x-aiff", "audio/vnd.wav", "audio/wave", "audio/x-wav", "audio/wav", "audio/flac"];
+ var maxsize = 1e+8; // 100 MB
+ this.currentTransform = null;
+ var errorState;
+ var instanceIndex = 0;
+ this.appdata = appdata;
+ this.instances = [];
+ var playheadInterval;
+ var latencyCorrection = 100;
+ var playing = false;
+ var auditioning = false;
+ var scope;
+ var recording = false;
+ var elCrossfades = [];
+ this.onPlays = [];
+ var elToolTip = $("<div />").addClass("tooltip").appendTo($("body"));
+ this.audioContext = null;
+ var operationLog = [];
+ this.noteData = new NoteData();
+ var topMenu = new TopMenu(self, topMenuData, $("#twist_menubar"));
+ this.storage = localStorage.getItem("twist");
+ this.watchdog = new OperationWatchdog(self);
+
+ if (self.storage) {
+ self.storage = JSON.parse(self.storage);
+ } else {
+ self.storage = {};
+ }
+
+ this.tooltip = {
+ show: function(event, text) {
+ var margin = 100;
+ elToolTip.text(text).css("opacity", 0.9);
+
+ if (event.pageX >= window.innerWidth - margin) {
+ elToolTip.css({left: window.innerWidth - (margin * 2) + "px"});
+ } else {
+ elToolTip.css({left: (event.pageX + 20) + "px"});
+ }
+
+ if (event.pageY >= window.innerHeight - margin) {
+ elToolTip.css({top: window.innerHeight - (margin * 2) + "px"});
+ } else {
+ elToolTip.css({top: (event.pageY - 15) + "px"});
+ }
+
+ },
+ hide: function() {
+ elToolTip.css("opacity", 0);
+ }
+ };
+
+ this.setPlaying = function(state) {
+ if (playing == state) return;
+ playing = state;
+ for (var o of self.onPlays) {
+ o(playing, auditioning, recording);
+ }
+ if (self.currentTransform) {
+ self.currentTransform.setPlaying(state);
+ }
+ if (scope) {
+ scope.setPlaying(state);
+ }
+ };
+
+ this.saveStorage = function() {
+ localStorage.setItem("twist", JSON.stringify(self.storage));
+ };
+
+ function lastOperation() {
+ return operationLog[operationLog.length - 1];
+ }
+
+ function pushOperationLog(operation) {
+ var max = self.storage.commitHistoryLevel;
+ if (!max) {
+ self.storage.commitHistoryLevel = max = 16;
+ }
+ if (operationLog.length + 1 >= max) {
+ operationLog.shift();
+ }
+ operationLog.push(operation);
+ }
+
+
+ function showLoadNewPrompt() {
+ var elNewFile = $("<div />").css({"font-size": "var(--fontSizeDefault)"});
+ elNewFile.append($("<h3 />").text("Drag an audio file here to load")).append($("<p />").text("or"));
+
+ $("<h4 />").text("Create an empty file").css("cursor", "pointer").appendTo(elNewFile).click(function() {
+ elNewFile.show();
+ });
+
+ var tpDuration = new TransformParameter(null, {name: "Duration", min: 0.1, max: 60, dfault: 10, automatable: false, fireChanges: false}, null, null, twist);
+
+ var tpChannels = new TransformParameter(null, {name: "Channels", min: 1, max: 2, dfault: 2, step: 1, automatable: false, fireChanges: false}, null, null, twist);
+
+ var tpName = new TransformParameter(null, {name: "Name", type: "string", dfault: "New file", fireChanges: false}, null, null, twist);
+
+ var tb = $("<tbody />");
+ $("<table />").append(tb).css("margin", "0 auto").appendTo(elNewFile);
+ tb.append(tpDuration.getElementRow(true)).append(tpChannels.getElementRow(true)).append(tpName.getElementRow(true));
+
+ $("<button />").text("Create").appendTo(elNewFile).click(function() {
+ var name = tpName.getValue();
+ if (name.trim() == "") {
+ name = "New file";
+ }
+ var cbid = app.createCallback(async function(ndata) {
+ self.waveformTab.text(name);
+ await globalCallbackHandler(ndata);
+ if (self.currentTransform) {
+ self.currentTransform.refresh();
+ }
+ waveformFiles[instanceIndex] = name;
+ setLoadingStatus(false);
+ });
+ self.hidePrompt();
+ setLoadingStatus(true, false, "Creating");
+ app.insertScore("twst_createempty", [0, 1, cbid, tpDuration.getValue(), tpChannels.getValue()]);
+ });
+
+ self.showPrompt(elNewFile, null, true);
+ }
+
+ this.toggleScope = function(noSaveState) {
+ var height;
+ var top;
+ var state;
+ if (!scope) {
+ state = true;
+ height = "60%";
+ top = "40%";
+ var elScope = $("<div />").addClass("twist_scope").appendTo($("#twist_waveforms"));
+ var type = (self.storage.scopeType) ? self.storage.scopeType : "frequency";
+ scope = new Analyser(
+ type, self, elScope, app
+ );
+ } else {
+ state = false;
+ scope.remove();
+ delete scope;
+ scope = null;
+ height = "100%";
+ top = "0px";
+ }
+
+ if (!noSaveState) {
+ self.storage.showScope = state;
+ self.saveStorage();
+ }
+ $(".waveform").css({height: height, top: top});
+ }
+
+ this.createNewInstance = function() {
+ var element = $("<div />").addClass("waveform").appendTo("#twist_waveforms");
+ let index = waveformFiles.length;
+
+ if (index < 0) index = 0;
+ waveformTabs.push(
+ $("<td />").text("New file").click(function() {
+ if (self.isPlaying()) return;
+ self.waveform = index;
+ }).addClass("wtab_selected").appendTo("#twist_waveform_tabs")
+ );
+ undoLevels.push(0);
+ self.waveforms.push(
+ new Waveform({
+ target: element,
+ latencyCorrection: latencyCorrection,
+ showcrossfades: true,
+ crossFadeWidth: 1,
+ timeBar: true,
+ markers: [
+ {preset: "selectionstart"},
+ {preset: "selectionend"},
+ ]
+ })
+ );
+ showLoadNewPrompt();
+ self.waveform = index;
+ };
+
+
+
+
+
+ this.removeInstance = function(i) {
+ if (!i) i = instanceIndex;
+ if (i < 0 || i > this.instances.length - 1) {
+ return;
+ }
+ self.instances[instanceindex].close();
+ if (instanceIndex == i) {
+ instanceIndex = i + ((i == 0) ? 1 : -1);
+ self.instances[instanceIndex].show();
+ }
+ };
+
+ t
+
+ var remoteSessionID;
+ var remoteSending = false;
+ this.sendErrorState = async function (errorText) {
+ if (remoteSending) return;
+ remoteSending = true;
+ var data = {
+ request_type: "LogError",
+ error: {
+ text: errorText,
+ lastOperation: lastOperation()
+ }
+ };
+
+ if (self.currentTransform) {
+ var state = await self.currentTransform.getState();
+ data.error.transformState = state;
+ }
+
+ if (remoteSessionID) {
+ data.session_id = remoteSessionID;
+ }
+ var resp = await fetch("/service/", {
+ method: "POST",
+ headers: {
+ "Content-type": "application/json"
+ },
+ body: JSON.stringify(data)
+ });
+ var json = await resp.json();
+ if (json.session_id && !remoteSessionID) {
+ remoteSessionID = json.session_id;
+ }
+ remoteSending = false;
+ }
+
+ this.errorHandler = function(text, onComplete) {
+ var errorText = (!text) ? errorState : text;
+ self.sendErrorState(errorText);
+ self.setPlaying(false);
+ self.showPrompt(errorText, onComplete);
+ errorState = null;
+ };
+
+ function playPositionHandler(noPlayhead, onComplete) {
+ function callback(ndata) {
+ if (ndata.status == 1) {
+ self.setPlaying(true);
+ if (!noPlayhead) {
+ watchdog.start("audition");
+ if (playheadInterval) {
+ clearInterval(playheadInterval);
+ }
+ playheadInterval = setInterval(async function(){
+ var val = await app.getControlChannel("playposratio");
+ watchdog.setActive(val);
+ if (val < 0 || val > 1) {
+ clearInterval(playheadInterval);
+ }
+ self.waveform.movePlayhead(val);
+ }, 50);
+ }
+ } else {
+ self.setPlaying(false);
+ if (ndata.status == -1) {
+ self.errorHandler("Not enough processing power to transform in realtime");
+ }
+
+ app.removeCallback(ndata.cbid);
+ if (!noPlayhead) {
+ watchdog.stop();
+ self.waveform.movePlayhead(0);
+ if (playheadInterval) {
+ clearInterval(playheadInterval);
+ }
+ }
+ if (onComplete) onComplete();
+ }
+ }
+ return app.createCallback(callback, true);
+ }
+
+ function operation(instr, oncompleteOrCbidOverride, showLoading, selection, noLogScript) {
+ var s = (selection) ? selection : self.waveform.selected;
+ errorState = "Operation error";
+ if (showLoading) {
+ setLoadingStatus(true);
+ }
+ var cbid;
+ if (!oncompleteOrCbidOverride || typeof(oncompleteOrCbidOverride) == "function") {
+ cbid = app.createCallback(function(ndata) {
+ self.waveform.cover(false);
+ if (oncompleteOrCbidOverride) {
+ oncompleteOrCbidOverride(ndata);
+ } else if (ndata.status && ndata.status <= 0) {
+ var text;
+ if (ndata.status == -2) {
+ text = "Resulting file is too large";
+ }
+ self.errorHandler(text);
+ }
+ if (showLoading) {
+ setLoadingStatus(false);
+ }
+ });
+ } else {
+ cbid = oncompleteOrCbidOverride;
+ }
+ if (!noLogScript) {
+ pushOperationLog({type: "operation", instr: instr, selection: s, instanceIndex: instanceIndex});
+ }
+ app.insertScore(instr, [0, 1, cbid, s[0], s[1], s[2]]);
+ }
+
+ this.isPlaying = function() {
+ return playing;
+ };
+
+
+
+ this.pasteSpecial = function() {
+ if (playing) return;
+ var elPasteSpecial = $("<div />");
+ elPasteSpecial.append($("<h4 />").text("Paste special"));
+ var def = {
+ instr: "twst_pastespecial",
+ parameters: [
+ {name: "Repetitions", channel: "repetitions", min: 1, max: 40, step: 1, dfault: 1, automatable: false},
+ {name: "Mix paste", channel: "mixpaste", step: 1, dfault: 0, automatable: false},
+ {name: "Mix crossfade", channel: "mixfade", automatable: false, conditions: [{channel: "mixpaste", operator: "eq", value: 1}]}
+ ]
+ };
+ var tf = new Transform(elPasteSpecial, def, self);
+
+ $("<button />").text("Paste").click(function(){
+ self.hidePrompt();
+ self.waveform.cover(true);
+ operation("twst_pastespecial", globalCallbackHandler, true);
+ }).appendTo(elPasteSpecial);
+
+ $("<button />").text("Cancel").click(function(){
+ self.hidePrompt();
+ }).appendTo(elPasteSpecial);
+ self.showPrompt(elPasteSpecial, null, true);
+
+ };
+
+ this.developerConsole = function() {
+ $("#twist_developer").show();
+ $("#twist_inject_devcsound").click(async function() {
+ var code = $("#twist_devcsound").val();
+ var result = await app.compileOrc(code);
+ if (result == 0) {
+ if (!self.storage.develop) {
+ self.storage.develop = {};
+ }
+ self.storage.develop.csound = code;
+ self.saveStorage();
+ self.showPrompt("Successfully injected Csound code");
+ }
+ });
+ $("#twist_inject_devjson").click(async function() {
+ var code = $("#twist_devjson").val();
+ try {
+ var json = JSON.parse(code);
+ } catch (e) {
+ return self.errorHandler("Cannot parse JSON: " + e);
+ }
+ try {
+ self.loadTransforms(json);
+ } catch (e) {
+ return self.errorHandler("Cannot load transform: " + e);
+ }
+ if (!self.storage.develop) {
+ self.storage.develop = {};
+ }
+ self.storage.develop.json = code;
+ self.saveStorage();
+ self.showPrompt("Successfully injected transform definition");
+ });
+ $("#twist_exit_devcode").click(async function() {
+ $("#twist_developer").hide();
+ });
+ };
+
+ this.play = function() {
+ if (playing) return;
+ auditioning = false;
+ recording = false;
+ operation("twst_play", playPositionHandler(), false, null, true);
+ };
+
+ this.stop = function() {
+ if (!playing) return;
+ self.waveform.cover(false);
+ app.insertScore("twst_stop");
+ };
+
+ function formatFileName(name) {
+ if (!name) name = waveformTabs[instanceIndex].text();
+ if (!name.toLowerCase().endsWith(".wav")) {
+ name += ".wav";
+ }
+
+ // HACK TODO: WASM can't overwrite files
+ name = name.substr(0, name.lastIndexOf(".")) + "." + saveNumber + name.substr(name.lastIndexOf("."));
+ saveNumber ++;
+ // END HACK
+ return name;
+ }
+
+ this.downloadFile = async function(path, name) {
+ if (!name) name = formatFileName(name);
+ var content = await app.readFile(path);
+ var blob = new Blob([content], {type: "audio/wav"});
+ var url = window.URL.createObjectURL(blob);
+ var a = $("<a />").attr("href", url).attr("download", name).appendTo($("body")).css("display", "none");
+ a[0].click();
+ setTimeout(function(){
+ a.remove();
+ window.URL.revokeObjectURL(url);
+ app.unlinkFile(path);
+ }, 20000);
+ };
+
+ var saveNumber = 1;
+ this.saveFile = function(name, onComplete) {
+ if (playing) return;
+ if (!name) name = formatFileName(name);
+ var cbid = app.createCallback(async function(ndata){
+ await self.downloadFile("/" + name, name);
+ if (onComplete) onComplete();
+ setLoadingStatus(false);
+ });
+ setLoadingStatus(true, true, "Saving");
+ app.insertScore("twst_savefile", [0, 1, cbid, name]);
+ };
+
+ function getAutomationData(start, end) {
+ var calls = [];
+ if (!self.currentTransform) return calls;
+ var automations = self.currentTransform.getAutomationData(start, end);
+ if (automations && automations.length > 0) {
+ for (let i in automations) {
+ if (automations[i].type == "modulation") {
+ calls.push(automations[i].data[0] + " \\\"" + automations[i].data[1] + "\\\"");
+ } else if (automations[i].type == "automation") {
+ calls.push("chnset linseg:k(" + automations[i].data + "), \\\"" + automations[i].channel + "\\\"");
+ }
+ }
+ }
+ return calls;
+ }
+
+ function handleAutomation(onready, calls) {
+ if (calls.length == 0) {
+ return onready(0);
+ }
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status == 1) {
+ onready(1);
+ } else {
+ self.errorHandler("Cannot parse automation data");
+ }
+ });
+
+ var call = [0, 1, cbid];
+ for (let c of calls) {
+ call.push(c);
+ }
+ app.insertScore("twst_automationprepare", call);
+ }
+
+ function compileVariScript(script, onComplete) {
+ var cbid = app.createCallback(function(ndata){
+ onComplete(ndata.status == 1);
+ // should maybe automatically refresh
+ });
+ }
+
+
+ function fftsizeCheck(selected, duration) {
+ if (self.currentTransform) {
+ for (var p in self.currentTransform.parameters) {
+ if (p.indexOf("fftsize") != -1) {
+ var val = self.currentTransform.parameters[p].getValue();
+ var minTime = (val / sr) * 2;
+ if ((selected[1] - selected[0]) * duration < minTime) {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ this.record = async function() {
+ if (playing) return;
+ auditioning = false;
+ recording = true;
+ await app.enableAudioInput();
+ errorState = "Recording error";
+ self.waveform.cover(true);
+ var cbid = playPositionHandler();
+ var s = self.waveform.selected;
+ var items = [0, 1, cbid, s[0], s[1], s[2]];
+ app.insertScore("twst_record", items);
+ };
+
+ this.audition = function() {
+ if (playing) return;
+ if (!self.currentTransform) {
+ return self.play();
+ }
+ self.currentTransform.saveState();
+ var s = self.waveform.selected;
+ if (!fftsizeCheck(s, self.waveform.duration)) {
+ return self.errorHandler("Length too short for this transform");
+ }
+
+ auditioning = true;
+ recording = false;
+ errorState = "Playback error";
+ handleAutomation(function(automating){
+ var cbid = playPositionHandler();
+ var items = [
+ 0, 1, cbid, s[0], s[1], s[2],
+ self.currentTransform.instr, automating,
+ elCrossfades[0].val(), elCrossfades[1].val()
+ ];
+ app.insertScore("twst_audition", items);
+ }, getAutomationData(s[0], s[1]));
+
+ };
+
+
+ var scriptStack = [];
+ function applyScript(audition) {
+ if (playing) return;
+ var lastData;
+ var script = scriptStack.shift();
+ if (!script) {
+ setLoadingStatus(false);
+ if (lastData) {
+ console.log("ass", lastData);
+ globalCallbackHandler(lastData);
+ }
+ self.setPlaying(false);
+ return;
+ }
+
+ if (audition) auditioning = true;
+ self.setPlaying(true);
+ if (script.type == "operation") {
+ if (audition) {
+ return self.errorHandler("Only transform scripts can be auditioned");
+ }
+ self.waveform.cover(true);
+ onComplete = (script.instr == "twst_copy") ? null : globalCallbackHandler;
+ operation(script.instr, function(ndata){
+ lastData = ndata;
+ self.setPlaying(false);
+ applyScript(audition);
+ }, true, script.selection);
+ } else if (script.type == "transform") {
+ errorState = ((audition) ? "Audition" : "Transform" ) + " commit error";
+ if (!audition) {
+ setLoadingStatus(true, true);
+ }
+
+ for (let channel in script.channels) {
+ app.setControlChannel(channel, script.channels[channel]);
+ }
+ handleAutomation(function(automating){
+ if (audition) {
+ var cbid = playPositionHandler();
+ } else {
+ var cbid = app.createCallback(function(ndata) {
+ lastData = ndata;
+ self.setPlaying(false);
+ applyScript(audition);
+ });
+ }
+ var instr = "twst_" + ((audition) ? "audition" : "commit");
+
+ app.insertScore(instr, [
+ 0, -1, cbid, script.selection[0], script.selection[1], script.selection[2], script.instr, automating, script.crossfades[0], script.crossfades[1]
+ ]);
+ }, script.automation);
+ }
+ }
+
+ this.applyScript = async function(script, audition) {
+ if (playing) return;
+ scriptStack = [];
+ if (Array.isArray(script)) {
+ if (audition) {
+ return self.errorHandler("Only single scripts can be auditioned");
+ }
+ scriptStack = script;
+ } else {
+ scriptStack = [script];
+ }
+ if (self.storage.autosave && !audition) {
+ self.saveFile(null, function() {
+ applyScript(audition);
+ });
+ } else {
+ applyScript(audition);
+ }
+ };
+
+ async function innerCommit() {
+ if (playing) return;
+ if (!self.currentTransform) return;
+ var s = self.waveform.selected;
+ if (!fftsizeCheck(s, self.waveform.duration)) {
+ return self.errorHandler("Length too short for this transform");
+ }
+ watchdog.start("commit");
+ self.setPlaying(true);
+ setLoadingStatus(true, true);
+ var calls = getAutomationData(s[0], s[1]);
+
+ self.currentTransform.saveState();
+ var state = await self.currentTransform.getState();
+ state.type = "transform";
+ state.automation = calls;
+ state.crossfades = [elCrossfades[0].val(), elCrossfades[1].val()];
+ state.selection = [s[0], s[1], s[2]];
+ state.instanceIndex = instanceIndex;
+ pushOperationLog(state);
+
+ handleAutomation(function(automating){
+ var cbid = app.createCallback(function(ndata) {
+ watchdog.stop();
+ setLoadingStatus(false);
+ self.setPlaying(false);
+ if (ndata.status > 0) {
+ globalCallbackHandler(ndata);
+ } else {
+ var text;
+ if (ndata.status == -2) {
+ text = "Resulting file is too large";
+ }
+ self.errorHandler(text);
+ }
+ });
+ errorState = "Transform commit error";
+ app.insertScore("twst_commit", [0, -1, cbid, s[0], s[1], s[2], self.currentTransform.instr, automating, state.crossfades[0],state.crossfades[1]]);
+ }, calls);
+ }
+
+ this.commit = async function() {
+ if (self.storage.autosave) {
+ self.saveFile(null, function() {
+ innerCommit();
+ });
+ } else {
+ innerCommit();
+ }
+ };
+
+ this.createIcon = function(definition) {
+ var state = true;
+ var active = true;
+ function formatPath(i) {
+ return "../base/icon/" + i + ".svg";
+ }
+ var el = $("<img />");
+
+ var obj = {
+ el: el,
+ setState: function(tstate) {
+ if (!definition.icon2) return;
+ state = tstate;
+ if (state) {
+ el.attr("src", formatPath(definition.icon));
+ } else {
+ el.attr("src", formatPath(definition.icon2));
+ }
+
+ },
+ setActive: function(state) {
+ if (state) {
+ el.css("opacity", 1);
+ active = true;
+ } else {
+ el.css("opacity", 0.4);
+ active = false;
+ }
+ }
+ };
+
+ el.addClass("icon").css("opacity", 1).attr("src", formatPath(definition.icon)).on("mouseover", function(event){
+ var label = (!state && definition.label2) ? definition.label2 : definition.label;
+ self.tooltip.show(event, label);
+ }).on("mouseout", function(){
+ self.tooltip.hide();
+ }).click(function(el) {
+ if (active) definition.click(obj);
+ });
+ return obj;
+ }
+
+ function buildWavecontrols() {
+ var el = $("#twist_wavecontrols_inner");
+ var onPlayDisables = [];
+
+ var play = self.createIcon({label: "Play", icon: "play", label2: "Stop", icon2: "stop", click: function(obj){
+ if (self.isPlaying()) {
+ self.stop();
+ } else {
+ self.play();
+ }
+ }});
+ var audition = self.createIcon({label: "Audition", icon: "audition", label2: "Stop", icon2: "stop", click: function(obj){
+ if (self.isPlaying()) {
+ self.stop();
+ } else {
+ self.audition();
+ }
+ }});
+ var crossfade = self.createIcon({label: "Show crossfades", icon: "crossfade", label2: "Hide crossfades", icon2: "hide", click: function(obj){
+ var el = $(".crossfade");
+ if (el.is(":visible")) {
+ obj.setState(true);
+ el.hide();
+ self.storage.showCrossfades = false;
+ elCrossfades[0].val(0).trigger("input");
+ elCrossfades[1].val(0).trigger("input");
+ } else {
+ el.show();
+ obj.setState(false);
+ self.storage.showCrossfades = true;
+ }
+ self.saveStorage();
+ }});
+
+ var record = self.createIcon({label: "Record", icon: "record", label2: "Stop", icon2: "stop", click: function() {
+ if (self.isPlaying()) {
+ self.stop();
+ } else {
+ self.record();
+ }
+ }});
+
+ var items = [
+ {label: "Zoom selection", icon: "zoomSelection", click: function() {self.waveform.zoomSelection();}},
+ {label: "Zoom in", icon: "zoomIn", click: function() {self.waveform.zoomIn();}},
+ {label: "Zoom out", icon: "zoomOut", click: function() {self.waveform.zoomOut();}},
+ {label: "Show all", icon: "showAll", click: function() {self.waveform.setRegion(0, 1);}},
+ {label: "Cut", icon: "cut", disableOnPlay: true, click: self.cut},
+ {label: "Copy", icon: "copy", disableOnPlay: true, click: self.copy},
+ {label: "Paste", icon: "paste", disableOnPlay: true, click: self.paste},
+ {label: "Paste special", icon: "pasteSpecial", disableOnPlay: true, click: self.pasteSpecial},
+ {label: "Rewind", icon: "rewind", disableOnPlay: true, click: self.moveToStart},
+ play,
+ audition,
+ {label: "Commit", icon: "commit", disableOnPlay: true, click: self.commit},
+ record,
+ {label: "Save", icon: "save", disableOnPlay: true, click: self.saveFile},
+ {label: "Script", icon: "script", click: self.scriptEdit},
+ {label: "Developer", icon: "develop", click: self.developerConsole},
+ crossfade
+ ];
+
+ for (let i of items) {
+ var icon;
+ if (i.icon) {
+ icon = self.createIcon(i);
+ if (i.disableOnPlay) {
+ onPlayDisables.push(icon);
+ }
+ } else {
+ icon = i;
+ }
+ $("<td />").append(icon.el).appendTo(el);
+ }
+
+ twist.onPlays.push(async function(playing, auditioning, recording) {
+ if (playing) {
+ if (auditioning) {
+ play.setActive(false);
+ audition.setState(false);
+ record.setActive(false);
+ } else if (recording) {
+ audition.setActive(false);
+ play.setActive(false);
+ record.setState(false);
+ } else {
+ audition.setActive(false);
+ play.setState(false);
+ record.setActive(false);
+ }
+ } else {
+ audition.setActive(true);
+ play.setActive(true);
+ play.setState(true);
+ audition.setState(true);
+ record.setActive(true);
+ record.setState(true);
+ }
+ for (let o of onPlayDisables) {
+ o.setActive(!playing);
+ }
+ });
+
+ for (let e of ["In", "Out"]) {
+ let elRange = $("<input />").addClass("tp_slider").attr("type", "range").attr("min", 0).attr("max", 0.45).attr("step", 0.00001).val(0).on("input", function() {
+ if (e == "In") {
+ self.waveform.crossFadeInRatio = $(this).val();
+ } else {
+ self.waveform.crossFadeOutRatio = $(this).val();
+ }
+ });
+ elCrossfades.push(elRange);
+ $("<td />").addClass("crossfade").append($("<div />").css("font-size", "8pt").text("Crossfade " + e)).append(elRange).appendTo(el);
+ }
+
+ var el = $(".crossfade");
+ if (self.storage.hasOwnProperty("showCrossfades")) {
+ if (self.storage.showCrossfades) {
+ crossfade.setState(false);
+ el.show();
+ } else {
+ crossfade.setState(true);
+ el.hide();
+ }
+ } else {
+ crossfade.setState(false);
+ el.show();
+ }
+
+ }
+
+ this.loadTransforms = function(transform) {
+ if (transform) {
+ var developObj;
+ for (var t in appdata.transforms) {
+ if (appdata.transforms[t].name == "Develop") {
+ developObj = appdata.transforms[t];
+ break;
+ }
+ }
+ if (!developObj) {
+ developObj = {name: "Develop", contents: []};
+ appdata.transforms.push(developObj);
+ } else {
+ for (var c in developObj.contents) {
+ if (developObj.contents[c].name == transform.name) {
+ delete developObj.contents[c];
+ }
+ }
+ }
+ developObj.contents.push(transform);
+ }
+
+ $("#twist_panetree").empty();
+ var ttv = new TransformsTreeView({
+ target: "twist_panetree",
+ items: appdata.transforms
+ }, self);
+ };
+
+ this.showHelp = function() {
+ $("#twist_help").show();
+ };
+
+ this.showAbout = function() {
+ var el = $("<div />");
+ var x = $("<h3 />").text("twist").appendTo(el);
+ $("<p />").text("Version " + appdata.version.toFixed(1)).appendTo(el);
+ $("<p />").css("font-size", "12px").text("By Richard Knight 2024").appendTo(el);
+
+ var skewMax = 30;
+ var skew = 0;
+ var skewDirection = true;
+ var twistInterval = setInterval(function(){
+ if (skewDirection) {
+ if (skew < skewMax) {
+ skew ++;
+ } else {
+ skewDirection = false;
+ }
+ } else {
+ if (skew > -skewMax) {
+ skew --;
+ } else {
+ skewDirection = true;
+ }
+ }
+ x.css("transform", "skewX(" + skew + "deg)");
+ }, 10);
+
+ self.showPrompt(el, function(){
+ clearInterval(twistInterval);
+ });
+ };
+
+ async function handleFileDrop(e, obj) {
+ e.preventDefault();
+ if (!e.originalEvent.dataTransfer && !e.originalEvent.files) {
+ return;
+ }
+ if (e.originalEvent.dataTransfer.files.length == 0) {
+ return;
+ }
+ self.hidePrompt();
+ setLoadingStatus(true, false, "Loading");
+ for (const item of e.originalEvent.dataTransfer.files) {
+ if (!audioTypes.includes(item.type)) {
+ return self.errorHandler("Unsupported file type", showLoadNewPrompt);
+ }
+ if (item.size > maxsize) {
+ return self.errorHandler("File too large", showLoadNewPrompt);
+ }
+ errorState = "File loading error";
+ var content = await item.arrayBuffer();
+ const buffer = new Uint8Array(content);
+ await app.writeFile(item.name, buffer);
+ var cbid = app.createCallback(async function(ndata){
+ await app.unlinkFile(item.name);
+ if (ndata.status == -1) {
+ return self.errorHandler("File not valid", showLoadNewPrompt);
+ } else if (ndata.status == -2) {
+ return self.errorHandler("File too large", showLoadNewPrompt);
+ } else {
+ self.waveformTab.text(item.name);
+ await globalCallbackHandler(ndata);
+ if (self.currentTransform) {
+ self.currentTransform.refresh();
+ }
+ waveformFiles[instanceIndex] = item.name;
+ self.hidePrompt();
+ setLoadingStatus(false);
+ }
+ });
+ app.insertScore("twst_loadfile", [0, 1, cbid, item.name]);
+ }
+ }
+
+ async function globalCallbackHandler(ndata) {
+ if (ndata.status && ndata.status <= 0) {
+ self.errorHandler();
+ return;
+ }
+
+ if (ndata.hasOwnProperty("undolevel")) {
+ self.undoLevel = ndata.undolevel;
+ }
+
+ if (ndata.hasOwnProperty("delete")) {
+ if (typeof(ndata.delete) == "string") {
+ app.unlinkFile(ndata.delete);
+ } else {
+ for (let d of ndata.delete) {
+ app.unlinkFile(d);
+ }
+ }
+ }
+
+ if (ndata.hasOwnProperty("selstart")) {
+ self.waveform.setSelection(ndata.selstart, ndata.selend);
+ }
+
+ if (ndata.hasOwnProperty("waveL")) {
+ self.waveform.cover(true);
+ errorState = "Overview refresh error";
+ var wavedata = [];
+ var duration = ndata.duration;
+ var tbL = await app.getTable(ndata.waveL);
+ wavedata.push(tbL);
+ if (ndata.hasOwnProperty("waveR")) {
+ var tbR = app.getTable(ndata.waveR);
+ wavedata.push(tbR);
+ }
+ self.waveform.setData(wavedata, ndata.duration);
+ self.waveform.cover(false);
+ }
+
+ }
+
+ this.bootAudio = function() {
+ var channelDefaultItems = ["dcblockoutputs", "tanhoutputs", "maxundo"];
+
+ for (var i of channelDefaultItems) {
+ if (self.storage.hasOwnProperty(i)) {
+ app.setControlChannel(i, self.storage[i]);
+ }
+ }
+
+ twist.setLoadingStatus(false);
+
+ if (!self.storage.hasOwnProperty("firstLoadDone")) {
+ self.storage.firstLoadDone = true;
+ self.saveStorage();
+ self.showPrompt($("#twist_welcome").detach().show(), self.createNewInstance);
+ } else {
+ self.createNewInstance();
+ }
+
+ if (self.storage.showScope) {
+ self.toggleScope(true);
+ }
+ };
+
+ this.boot = function() {
+ self.audioContext = new AudioContext();
+ if (self.storage.theme) {
+ self.setTheme(self.storage.theme, true);
+ }
+
+ if (self.storage.hasOwnProperty("showShortcuts")) {
+ if (self.storage.showShortcuts) {
+ $("#twist_wavecontrols_inner").show();
+ } else {
+ $("#twist_wavecontrols_inner").hide();
+ }
+ }
+
+ if (self.storage.develop) {
+ if (self.storage.develop.csound) {
+ $("#twist_devcsound").val(self.storage.develop.csound);
+ }
+ if (self.storage.develop.json) {
+ $("#twist_devjson").val(self.storage.develop.json);
+ }
+ }
+ $("#loading_background").css("opacity", 1).animate({opacity: 0.2}, 1000);
+
+ Object.defineProperty(this, "waveformTab", {
+ get: function() { return waveformTabs[instanceIndex]; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "otherInstanceNames", {
+ get: function() {
+ var data = {};
+ for (var i in waveformTabs) {
+ if (i != instanceIndex) {
+ data[i] = waveformTabs[i].text();
+ }
+ }
+ return data
+ },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "instanceIndex", {
+ get: function() {
+ return instanceIndex
+ },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "undoLevel", {
+ get: function() {
+ return undoLevels[instanceIndex];
+ },
+ set: function(x) {
+ undoLevels[instanceIndex] = x;
+ }
+ });
+
+ Object.defineProperty(this, "waveform", {
+ get: function() { return self.waveforms[instanceIndex]; },
+ set: function(x) {
+ if (instanceIndex != x) {
+ if (self.waveformTab) {
+ self.waveformTab.removeClass("wtab_selected").addClass("wtab_unselected");
+ }
+ if (self.waveform) {
+ self.waveform.hide();
+ }
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status == 1) {
+ instanceIndex = x;
+ self.waveformTab.removeClass("wtab_unselected").addClass("wtab_selected");
+ self.waveform.show();
+ if (self.currentTransform) {
+ self.currentTransform.refresh();
+ }
+ } else {
+ self.showPrompt("Error changing instance");
+ }
+ });
+ app.insertScore("twst_setinstance", [0, 1, cbid, x]);
+
+ }
+ }
+ });
+
+ $("#twist_help").click(function() {
+ $(this).hide();
+ });
+
+ $("<td />").text("+").click(function() {
+ self.createNewInstance();
+ }).appendTo("#twist_waveform_tabs").addClass("wtab_selected");
+
+ $("body").on("dragover", function(e) {
+ e.preventDefault();
+ e.originalEvent.dataTransfer.effectAllowed = "all";
+ e.originalEvent.dataTransfer.dropEffect = "copy";
+ return false;
+ }).on("dragleave", function(e) {
+ e.preventDefault();
+ }).on("drop", function(e) {
+ handleFileDrop(e, self);
+ });
+
+ buildWavecontrols();
+ self.loadTransforms();
+ };
+
+}; // end twist
+
+$(function() {
+
+ var csOptions = ["--omacro:TWST_FAILONLAG=1"];
+ window.twist = new Twist(appdata);
+ window.app = new CSApplication({
+ csdUrl: "twist.csd",
+ csOptions: csOptions,
+ onPlay: function () {
+ twist.bootAudio();
+ },
+ errorHandler: twist.errorHandler,
+ ioReceivers: {percent: twist.setPercent}
+ });
+
+ $("#start").click(function() {
+ $("#start").hide();
+ twist.boot();
+ twist.setLoadingStatus(true, false, "Preparing audio engine");
+ app.play(function(text){
+ twist.setLoadingStatus(true, false, text);
+ }, twist.audioContext);
+ });
+
+}); \ No newline at end of file
diff --git a/site/app/twist/developer_documentation.html b/site/app/twist/developer_documentation.html
new file mode 100644
index 0000000..f44f778
--- /dev/null
+++ b/site/app/twist/developer_documentation.html
@@ -0,0 +1,742 @@
+<html>
+<head>
+ <script type="text/javascript" src="https://apps.csound.1bpm.net/code/jquery.js"></script>
+ <style type="text/css">
+ body {
+ font-family: Arial, sans-serif;
+ }
+
+ table {
+ border-collapse: collapse;
+ }
+
+ td {
+ border: 1px solid black;
+ }
+
+ pre {
+ font-family: Monospace, Courier, sans-serif;
+ background-color: #ccffff;
+ }
+
+ #container_overview {
+ background-color: #ddddff;
+ }
+
+ #container_json {
+ background-color: #ddffdd;
+ }
+
+ #container_csound {
+ background-color: #ddffff;
+ }
+
+ #container_examples {
+ background-color: #ffffdd;
+ }
+
+ </style>
+ <script type="text/javascript">
+ var documentation = {};
+ documentation.opcodes = [
+ {
+ name: "twst_param",
+ ins: [
+ ["Sname", "Name of the parameter to obtain"]
+ ],
+ outs: [
+ ["kvalue", "Value of the parameter"]
+ ],
+ description: "Obtain a parameter at k-rate. The name should correspond to the {json(channel)} in the definition for the given transform",
+ exampleJson: {
+ name: "Oscillator",
+ instr: "twst_tf_example_osc",
+ parameters: [
+ {name: "Frequency", min: 20, max: 8000, dfault: 440}
+ ]
+ },
+ exampleCsound: 'aL, aR, ileft, iright twst_getinput\nkfreq twst_param "frequency"\nif (ileft == 1) then\n\t aL oscil 1, kfreq\nendif\nif (iright == 1) then\n\taR oscil 1, kfreq\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_parami",
+ ins: [
+ ["Sname", "Name of the parameter to obtain"]
+ ],
+ outs: [
+ ["ivalue", "Value of the parameter"]
+ ],
+ description: "Obtain a parameter at init time. The name should correspond to the {json(channel)} in the definition for the given transform",
+ exampleJson: {
+ name: "Oscillator",
+ instr: "twst_tf_example_osc",
+ parameters: [
+ {name: "Frequency", min: 20, max: 8000, dfault: 440}
+ ]
+ },
+ exampleCsound: 'ifreq twst_parami "frequency"\naout oscil 1, ifreq\nouts aout, aout'
+ },
+ {
+ name: "twst_tf_isoffline",
+ outs: [
+ ["ioffline", "Whether processing is offline"]
+ ],
+ description: "Get a boolean signifying whether the current operation is a commit (1) or audition (0)",
+ exampleJson: {
+ name: "Reverse",
+ instr: "twst_tfi_example_reverse",
+ parameters: []
+ },
+ exampleCsound: 'ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate\nifnL, ifnR twst_tfi_getfn\nioffline twst_tf_isoffline\napos linseg (iendsamp - istartsamp) - 1, ilength, 0\nif (ileft == 1) then\n\tif (ioffline == 1) then\n\t\tifntempL ftgentmp 0, 0, -ftlen(ifnL), -2, 0\n\t\ttableicopy ifntempL, ifnL\n\t\taL table3 apos, ifntempL\n\telse\n\t\taL table3 apos, ifnL\n\tendif\nendif\nif (iright == 1) then\n\tif (ioffline == 1) then\n\t\tifntempR ftgentmp 0, 0, -ftlen(ifnR), -2, 0\n\t\ttableicopy ifntempR, ifnR\n\t\taR table3 apos, ifntempR\n\telse\n\t\taR table3 apos, ifnR\n\tendif\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_getinput",
+ outs: [
+ ["aL", "Left channel"],
+ ["aR", "Right channel"],
+ ["ileft", "Whether the left channel is to be processed"],
+ ["iright", "Whether the right channel is to be processed"]
+ ],
+ description: "Get input audio and channel flags for the current transform process. The transform should utilise ileft and iright, which are set to either 0 or 1, to process the inputs accordingly. If the instrument does not process audio (ie, generates new audio), then this opcode can still be used to obtain ileft and iright. This can also be obtained from {csound(twst_tf_getstate)}",
+ exampleJson: {
+ name: "Gain",
+ instr: "twst_tf_example_gain",
+ parameters: [
+ {name: "Gain"}
+ ]
+ },
+ exampleCsound: 'aL, aR, ileft, iright twst_getinput\nkgain twst_param "gain"\nif (ileft == 1) then\n\taL *= kgain\nendif\nif (iright == 1) then\n\taR *= kgain\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_getfinput",
+ ins: [
+ ["fftsize", "FFT size", "{preset(fftsize)}"]
+ ],
+ outs: [
+ ["fL", "Left channel"],
+ ["fR", "Right channel"],
+ ["aL", "Left channel"],
+ ["aR", "Right channel"],
+ ["ileft", "Whether the left channel is to be processed"],
+ ["iright", "Whether the right channel is to be processed"]
+ ],
+ description: "Get input audio as a PVS stream along with channel flags for the current transform process. The transform should utilise ileft and iright, which are set to either 0 or 1, to process the inputs accordingly. FFT size is optional and obtains the value from {preset(fftsize)} if not specified. Frequency/phase lock is also applied according to the parameter in the preset group {presetgroup(pvsynth)}",
+ exampleJson: {
+ name: "Repitcher",
+ instr: "twst_tf_example_pvscale",
+ parameters: [
+ {name: "Pitch scaling", channel: "scale", min: 0.5, max: 2, dfault: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"}
+ ]
+ },
+ exampleCsound: 'fL, fR, aL, aR, ileft, iright twst_getfinput\nkscale twst_param "scale"\nif (ileft == 1) then\n\tfoutL pvscale fL, kscale\n\taL twst_tf_fresynth foutL\nendif\nif (iright == 1) then\n\tfoutL pvscale fL, kscale\n\taR twst_tf_fresynth foutR\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_tf_fresynth",
+ ins: [
+ ["fsig", "Input PVS stream"]
+ ],
+ outs: [
+ ["aout", "Resynthesised audio"]
+ ],
+ description: "Resynthesise the PVS stream provided using the values of parameter preset group {presetgroup(pvsynth)}",
+ exampleJson: {
+ name: "Repitcher",
+ instr: "twst_tf_example_pvscale",
+ parameters: [
+ {name: "Pitch scaling", channel: "scale", min: 0.5, max: 2, dfault: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {preset: "applymode"}
+ ]
+ },
+ exampleCsound: 'fL, fR, aL, aR, ileft, iright twst_getfinput\nkscale twst_param "scale"\nif (ileft == 1) then\n\tfoutL pvscale fL, kscale\n\taL twst_tf_fresynth foutL\nendif\nif (iright == 1) then\n\tfoutL pvscale fL, kscale\n\taR twst_tf_fresynth foutR\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_tf_pitchscale",
+ outs: [
+ ["kpitchscale", "Pitch scaling ratio (1 = normal; 2 = one octave above)"]
+ ],
+ description: "Obtain the pitch scaling value from the parameter preset group {presetgroup(pitchscale)}",
+ exampleJson: {
+ name: "Repitcher",
+ instr: "twst_tf_example_pvscale",
+ parameters: [
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "pitchscale"}
+ ]
+ },
+ exampleCsound: 'fL, fR, aL, aR, ileft, iright twst_getfinput\nkscale twst_tf_pitchscale\nif (ileft == 1) then\n\tfoutL pvscale fL, kscale\n\taL twst_tf_fresynth foutL\nendif\nif (iright == 1) then\n\tfoutL pvscale fL, kscale\n\taR twst_tf_fresynth foutR\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_tf_pitchscale_custom",
+ ins: [
+ ["SchanPrepend", "String to prepend the preset channel name with"]
+ ],
+ outs: [
+ ["kpitchscale", "Pitch scaling ratio (1 = normal; 2 = one octave above)"]
+ ],
+ description: "Obtain the pitch scaling value from the parameter preset group {presetgroup(pitchscale)} but with channel names prepended with the specified string, to be used with the {json(channelprepend)} attribute",
+ exampleJson: {
+ name: "Repitcher",
+ instr: "twst_tf_example_pvscale",
+ parameters: [
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {presetgroup: "pitchscale", channelprepend: "custom"}
+ ]
+ },
+ exampleCsound: 'fL, fR, aL, aR, ileft, iright twst_getfinput\nkscale twst_tf_pitchscale \"custom\"\nif (ileft == 1) then\n\tfoutL pvscale fL, kscale\n\taL twst_tf_fresynth foutL\nendif\nif (iright == 1) then\n\tfoutL pvscale fL, kscale\n\taR twst_tf_fresynth foutR\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_tf_freq",
+ outs: [
+ ["kfreq", "Frequency in Hz"]
+ ],
+ description: "Obtain the frequency value at k-rate from the parameter preset group {presetgroup(notefreq)}",
+ exampleJson: {
+ name: "Oscillator",
+ instr: "twst_tf_example_osc",
+ parameters: [
+ {presetgroup: "notefreq"}
+ ]
+ },
+ exampleCsound: 'kfreq twst_tf_freq\naout oscil 1, kfreq\nouts aout, aout'
+ },
+ {
+ name: "twst_tf_freqi",
+ outs: [
+ ["ifreq", "Frequency in Hz"]
+ ],
+ description: "Obtain the frequency value at init time from the parameter preset group {presetgroup(notefreq)}, which should also have the {json(automatable)} attribute set to false",
+ exampleJson: {
+ name: "Oscillator",
+ instr: "twst_tf_example_osc",
+ parameters: [
+ {presetgroup: "notefreq", automatable: false},
+ {preset: "applymode"}
+ ]
+ },
+ exampleCsound: 'ifreq twst_tf_freqi\naout oscil 1, ifreq\nouts aout, aout'
+ },
+ {
+ name: "twst_tf_freq_custom",
+ ins: [
+ ["SchanPrepend", "String to prepend the preset channel name with"]
+ ],
+ outs: [
+ ["kfreq", "Frequency in Hz"]
+ ],
+ description: "Obtain the frequency value at k-rate from the parameter preset group {presetgroup(notefreq)} but with channel names prepended with the specified string, to be used with the {json(channelprepend)} attribute",
+ exampleJson: {
+ name: "Oscillator",
+ instr: "twst_tf_example_osc",
+ parameters: [
+ {presetgroup: "notefreq", channelprepend: "custom"}
+ ]
+ },
+ exampleCsound: 'kfreq twst_tf_freq_custom "custom"\naout oscil 1, kfreq\nouts aout, aout'
+ },
+ {
+ name: "twst_tf_freqi_custom",
+ ins: [
+ ["SchanPrepend", "String to prepend the preset channel name with"]
+ ],
+ outs: [
+ ["ifreq", "Frequency in Hz"]
+ ],
+ description: "Obtain the frequency value at init time from the parameter preset group {presetgroup(notefreq)} but with channel names prepended with the specified string, to be used with the {json(channelprepend)} attribute",
+ exampleJson: {
+ name: "Oscillator",
+ instr: "twst_tf_example_osc",
+ parameters: [
+ {presetgroup: "notefreq", channelprepend: "custom", automatable: false}
+ ]
+ },
+ exampleCsound: 'ifreq twst_tf_freqi_custom "custom"\naout oscil 1, ifreq\nouts aout, aout'
+ },
+ {
+ name: "twst_tf_getwaveform",
+ ins: [
+ ["inumber", "Reference number of the wave", "{preset(wave)}"]
+ ],
+ outs: [
+ ["ifn", "f-table number"]
+ ],
+ description: "Obtain an f-table at init time from the parameter preset {preset(wave)}. This can be overridden with {p(inumber)}, a value which corresponds to the array of available waveforms which is [Sine, Saw, Pulse, Triangle]",
+ exampleJson: {
+ name: "Oscillator",
+ instr: "twst_tf_example_osc",
+ parameters: [
+ {preset: "wave", automatable: false}
+ ]
+ },
+ exampleCsound: 'ifn twst_tf_getwaveform\naout oscil 1, 440, ifn\outs aout, aout'
+ },
+ {
+ name: "twst_tf_getwaveformk",
+ ins: [
+ ["inumber", "Reference number of the wave", "{preset(wave)}"]
+ ],
+ outs: [
+ ["kfn", "f-table number"]
+ ],
+ description: "Obtain an f-table at k-rate from the parameter preset group {preset(wave)}. This can be overridden with inumber, a value which corresponds to the array of available waveforms which is [Sine, Saw, Pulse, Triangle]",
+ exampleJson: {
+ name: "Oscillator",
+ instr: "twst_tf_example_osc",
+ parameters: [
+ {preset: "wave"},
+ {preset: "applymode"}
+ ]
+ },
+ exampleCsound: 'kfn twst_tf_getwaveformk\naout oscilikt 1, 440, kfn\outs aout, aout'
+ },
+ {
+ name: "twst_tf_getwintype",
+ outs: [
+ ["ifn", "f-table number"]
+ ],
+ description: "Obtain an f-table at init time from the parameter preset group {preset(wintype)}. This may be Hanning, Hamming or Half sine as selected in the UI",
+ exampleJson: {
+ name: "Sndwarp",
+ instr: "twst_tfi_exsndwarp",
+ parameters: [
+ {name: "Time scale", channel: "timescale", min: 0.1, max: 10, dfault: 1, automatable: false},
+ {preset: "wintype", automatable: false}
+ ]
+ },
+ exampleCsound: 'ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate\nitimescale = twst_parami("timescale")\nifnWindow = twst_tf_getwintype()\np3 = ilength * itimescale\natime linseg 0, p3, ilength\nifnL, ifnR twst_tfi_getfn\nif (ileft == 1) then\n\taL sndwarp 1, atime, 1, ifnL, 0, 4410, 441, 4, ifnWindow, 1\nendif\nif (iright == 1) then\n\taR sndwarp 1, atime, apitchscale, ifnR, 0, 4410, 441, 4, ifnWindow, 1\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_tf_getwintypek",
+ outs: [
+ ["kfn", "f-table number"]
+ ],
+ description: "Obtain an f-table at k-rate from the parameter preset group {preset(wintype)}. This may be Hanning, Hamming or Half sine as selected in the UI",
+ exampleJson: {
+ name: "Wintype",
+ instr: "twst_tf_wintype",
+ parameters: [
+ {preset: "wintype"}
+ ]
+ },
+ exampleCsound: 'kfnWindow = twst_tf_getwintypek()\naout oscil 1, 440\naenv oscilikt 1, 10, kfnWindow\naout *= aenv\nouts aout, aout'
+ },
+ {
+ name: "twst_getcrossinput",
+ outs: [
+ ["aL", "Left channel from instance"],
+ ["aR", "Right channel from instance"],
+ ["ileft", "whether the left channel is selected"],
+ ["iright", "whether the right channel is selected"]
+ ],
+ description: "Obtain an audio stream from the file instance selected in a parameter preset {preset(instance)}. ileft and iright correspond to the selected channels, and the audio is played according to the parameter preset {preset(looptype)}",
+ exampleJson: {
+ name: "Multiplier",
+ instr: "twst_tf_multiplier",
+ inputs: 2,
+ parameters: [
+ {preset: "instance"},
+ {preset: "instanceloop"}
+ ]
+ },
+ exampleCsound: 'aL, aR, ileft, iright twst_getinput\naxL, axR, ixleft, ixright twst_getcrossinput\nif (ileft == 1 && ixleft == 1) then\n\taL *= axL\nendif\nif (iright == 1 && ixright == 1) then\n\taR *= axR\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_getfcrossinput",
+ outs: [
+ ["fL", "Left channel from instance"],
+ ["fR", "Right channel from instance"],
+ ["ileft", "whether the left channel is selected"],
+ ["iright", "whether the right channel is selected"]
+ ],
+ description: "Obtain a PVS stream from the file instance selected in a parameter preset {preset(instance)}. ileft and iright correspond to the selected channels, and the audio is played according to the parameter preset {preset(looptype)}. The FFT size is taken from {preset(fftsize)}",
+ exampleJson: {
+ name: "Morpher",
+ instr: "twst_tf_exmorph",
+ inputs: 2,
+ parameters: [
+ {preset: "instance", name: "Cross instance"},
+ {preset: "instanceloop"},
+ {name: "Amplitude amount", channel: "amp", description: "Amplitude interpolation", dfault: 1, min: 0, max: 1},
+ {name: "Frequency amount", channel: "freq", description: "Frequency interpolation", dfault: 1, min: 0, max: 1},
+ {presetgroup: "pvanal"},
+ {presetgroup: "pvsynth"},
+ {preset: "applymode"}
+ ]
+ },
+ exampleCsound: 'fL, fR, aL, aR, ileft, iright twst_getfinput\nfLo, fRo, ilefto, irighto twst_getfcrossinput\nkamp = twst_param:k("amp")\nkfreq = twst_param:k("freq")\n\nif (ileft == 1 && ilefto == 1) then\n\tfoutL pvsmorph fL, fLo, kamp, kfreq\n\taL twst_tf_fresynth foutL\nendif\n\nif (iright == 1 && irighto == 1) then\n\tfoutR pvsmorph fR, fRo, kamp, kfreq\n\taR twst_tf_fresynth foutR\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_getcrossdata",
+ outs: [
+ ["ifnL", "f-table containing left channel audio"],
+ ["ifnR", "f-table containing right channel audio"],
+ ["istart", "selection start in samples"],
+ ["ilen", "selection length in samples"],
+ ["ileft", "whether the left channel is selected"],
+ ["iright", "whether the right channel is selected"]
+ ],
+ description: "Obtain data from the file instance selected in a parameter preset {preset(instance)}. The f-tables are the complete file, and the start and length correspond to the selected area. ileft and iright also correspond to the selected channels",
+ exampleJson: {
+ name: "Multiplier",
+ instr: "twst_tf_multiplier",
+ inputs: 2,
+ parameters: [
+ {preset: "instance"},
+ {preset: "instanceloop"}
+ ]
+ },
+ exampleCsound: 'ixfnL, ixfnR, ixstart, ixlen, ixleft, ixright twst_getcrossdata\nprint ixlen\naL, aR, ileft, iright twst_getinput\naxL, axR, ixleft, ixright twst_getcrossinput\nif (ileft == 1 && ixleft == 1) then\n\taL *= axL\nendif\nif (iright == 1 && ixright == 1) then\n\taR *= axR\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_tfi_getcrossfn",
+ outs: [
+ ["ifnL", "f-table containing left channel audio"],
+ ["ifnR", "f-table containing right channel audio"],
+ ],
+ description: "Obtain an f-table from the file instance selected in a parameter preset {preset(instance)}, which has been sliced from the original file, based on the selection area. This may be necessary for some opcodes that read from a f-table, such as those that have no control over the read point, when used for convolution or cross synthesis",
+ exampleJson: {
+ name: "Convolve",
+ instr: "twst_tfi_exdconv",
+ inputs: 2,
+ parameters: [
+ {preset: "instance"},
+ {name: "Size ratio", min: 0.00001, max: 1, dfault: 0.1, lagHint: -1, channel: "sizeratio", automatable: false},
+ {presetgroup: "applymode"}
+ ]
+ },
+ exampleCsound: 'aL, aR, ileft, iright twst_getinput \nifnLo, ifnRo twst_tfi_getcrossfn\nisizeratio = twst_parami("sizeratio")\nif (ileft == 1) then\n\taL dconv aL, isizeratio * ftlen(ifnLo), ifnLo\nendif\nif (iright == 1) then\n\taR dconv aR, isizeratio * ftlen(ifnRo), ifnRo\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_tfi_getfn",
+ outs: [
+ ["ifnL", "f-table containing left channel audio"],
+ ["ifnR", "f-table containing right channel audio"],
+ ],
+ description: "Obtain f-tables which have been sliced from the original file, based on the selection area. This may be necessary for some opcodes that read from a f-table, such as those that have no control over the read point",
+ exampleJson: {
+ name: "Sndwarp",
+ instr: "twst_tfi_exsndwarp",
+ parameters: [
+ {name: "Time scale", channel: "timescale", min: 0.1, max: 10, dfault: 1, automatable: false},
+ {preset: "wintype", automatable: false}
+ ]
+ },
+ exampleCsound: 'ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate\nitimescale = twst_parami("timescale")\nifnWindow = twst_tf_getwintype()\np3 = ilength * itimescale\natime linseg 0, p3, ilength\nifnL, ifnR twst_tfi_getfn\nif (ileft == 1) then\n\taL sndwarp 1, atime, 1, ifnL, 0, 4410, 441, 4, ifnWindow, 1\nendif\nif (iright == 1) then\n\taR sndwarp 1, atime, apitchscale, ifnR, 0, 4410, 441, 4, ifnWindow, 1\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_setlatencysamples",
+ ins: [
+ ["isamples", "Number of samples latency"]
+ ],
+ description: "Set the expected processing latency in samples. This is then used to offset any writing and output accordingly. This should ideally be used for any buffered or windowed operations. However, {csound(twst_getfinput)} already sets this based on the FFT size",
+ exampleJson: {
+ name: "Hilbert pitch scale",
+ instr: "twst_tf_exhilbertpitchscale",
+ parameters: [
+ {presetgroup: "pitchscale"},
+ {preset: "fftsize"},
+ {preset: "applymode"}
+ ]
+ },
+ exampleCsound: 'aL, aR, ileft, iright twst_getinput\nifftsize = twst_parami("fftsize")\nkscale = twst_tf_pitchscale()\ntwst_setlatencysamples(ifftsize)\n\nif (ileft == 1) then\n\tahL1, ahL2 hilbert2 aL, ifftsize, ifftsize / 4\n\tamL, afmL fmanal ahL1, ahL2\n\taLx oscil amL, afmL * kscale\nendif\nif (iright == 1) then\n\tahR1, ahR2 hilbert2 aR, ifftsize, ifftsize / 4\n\tamR, afmR fmanal ahR1, ahR2\n\taRx oscil amR, afmR * kscale\nendif\nouts aLx, aRx'
+ },
+ {
+ name: "twst_setlatencyseconds",
+ ins: [
+ ["iseconds", "Number of seconds latency"]
+ ],
+ description: "Set the expected processing latency in seconds. This is then used to offset any writing and output accordingly. This should ideally be used for any buffered or windowed operations. However, {csound(twst_getfinput)} already sets this based on the FFT size",
+ exampleJson: {
+ name: "Hilbert pitch scale",
+ instr: "twst_tf_exhilbertpitchscale",
+ parameters: [
+ {presetgroup: "pitchscale"},
+ {preset: "fftsize"},
+ {preset: "applymode"}
+ ]
+ },
+ exampleCsound: 'aL, aR, ileft, iright twst_getinput\nifftsize = twst_parami("fftsize")\nkscale = twst_tf_pitchscale()\ntwst_setlatencyseconds(1 / ifftsize)\n\nif (ileft == 1) then\n\tahL1, ahL2 hilbert2 aL, ifftsize, ifftsize / 4\n\tamL, afmL fmanal ahL1, ahL2\n\taLx oscil amL, afmL * kscale\nendif\nif (iright == 1) then\n\tahR1, ahR2 hilbert2 aR, ifftsize, ifftsize / 4\n\tamR, afmR fmanal ahR1, ahR2\n\taRx oscil amR, afmR * kscale\nendif\nouts aLx, aRx'
+ },
+ {
+ name: "twst_getlatencyseconds",
+ outs: [
+ ["iseconds", "Number of seconds latency"]
+ ],
+ description: "Obtain the expected processing latency in seconds, as previously set by {csound(twst_setlatencysamples)}, {csound(twst_setlatencyseconds)} or {csound(twst_getfinput)}",
+ exampleJson: {
+ name: "Hilbert pitch scale",
+ instr: "twst_tf_exhilbertpitchscale",
+ parameters: [
+ {presetgroup: "pitchscale"},
+ {preset: "fftsize"},
+ {preset: "applymode"}
+ ]
+ },
+ exampleCsound: 'aL, aR, ileft, iright twst_getinput\nifftsize = twst_parami("fftsize")\nkscale = twst_tf_pitchscale()\ntwst_setlatencysamples(ifftsize)\nprint twst_getlatencyseconds()\nif (ileft == 1) then\n\tahL1, ahL2 hilbert2 aL, ifftsize, ifftsize / 4\n\tamL, afmL fmanal ahL1, ahL2\n\taLx oscil amL, afmL * kscale\nendif\nif (iright == 1) then\n\tahR1, ahR2 hilbert2 aR, ifftsize, ifftsize / 4\n\tamR, afmR fmanal ahR1, ahR2\n\taRx oscil amR, afmR * kscale\nendif\nouts aLx, aRx'
+ },
+ {
+ name: "twst_tf_setplayposition",
+ ins: [
+ ["kposition", "Playback position ratio"]
+ ],
+ description: "Override the displayed playback position. The supplied kposition must be between 0 and 1, and corresponds to the selected area being played or auditioned. Normal operation would be equivalent to line(0, p3, 1)",
+ exampleJson: {
+ name: "Direct time sndwarp",
+ instr: "twst_tfi_directsndwarp",
+ parameters: [
+ {name: "Read time", channel: "readtime"},
+ {preset: "wintype", automatable: false}
+ ]
+ },
+ exampleCsound: 'ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate\nktime = twst_param:k("readtime")\ntwst_tf_setplayposition ktime\natime = a(ktime * ilength)\nifnWindow = twst_tf_getwintype()\nifnL, ifnR twst_tfi_getfn\nif (ileft == 1) then\n\taL sndwarp 1, atime, 1, ifnL, 0, 4410, 441, 4, ifnWindow, 1\nendif\nif (iright == 1) then\n\taR sndwarp 1, atime, apitchscale, ifnR, 0, 4410, 441, 4, ifnWindow, 1\nendif\nouts aL, aR'
+ },
+ {
+ name: "twst_tf_getstate",
+ outs: [
+ ["ileft", "Whether the left channel is selected"],
+ ["iright", "Whether the right channel is selected"],
+ ["istart", "Start sample number of selection"],
+ ["iend", "End sample number of selection"],
+ ["ilens", "Length of selection in seconds"]
+ ],
+ description: "Obtain details about the current selection. If the source is mono, only ileft will be equal to 1",
+ exampleJson: {
+ name: "Direct time sndwarp",
+ instr: "twst_tfi_directsndwarp",
+ parameters: [
+ {name: "Read time", channel: "readtime"},
+ {preset: "wintype", automatable: false}
+ ]
+ },
+ exampleCsound: 'ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate\nktime = twst_param:k("readtime")\ntwst_tf_setplayposition ktime\natime = a(ktime * ilength)\nifnWindow = twst_tf_getwintype()\nifnL, ifnR twst_tfi_getfn\nif (ileft == 1) then\n\taL sndwarp 1, atime, 1, ifnL, 0, 4410, 441, 4, ifnWindow, 1\nendif\nif (iright == 1) then\n\taR sndwarp 1, atime, apitchscale, ifnR, 0, 4410, 441, 4, ifnWindow, 1\nendif\nouts aL, aR'
+ }
+ ];
+
+ function linkage(text) {
+ var re = /{(preset|presetgroup|json|csound)\((.*?)\)}/g;
+ do {
+ match = re.exec(text);
+ if (match) {
+ text = text.replaceAll(match[0], "<a href=\"#" + match[1] + "_" + match[2] + "\">" + match[2] + "</a>");
+ }
+ } while (match);
+ return text;
+ }
+
+ function buildOpcodes() {
+ var elTarget = $("#opcodes");
+ for (let index in documentation.opcodes) {
+ let o = documentation.opcodes[index];
+ var html = ""
+ if (o.outs) {
+ var names = [];
+ for (var x of o.outs) names.push(x[0]);
+ html += "<i>" + names.join(", ") + "</i> "
+ }
+ html += "<b>" + o.name + "</b>";
+ if (o.ins) {
+ var names = [];
+ for (var x of o.ins) {
+ if (x[2]) { // has default
+ names.push("[" + x[0] + "=" + x[2] + "]");
+ } else {
+ names.push(x[0]);
+ }
+ }
+ html += " <i>" + names.join(", ") + "</i>"
+ }
+
+ $("<p />").html(linkage(html)).attr("id", "csound_" + o.name).appendTo(elTarget);
+ if (o.ins || o.outs) {
+ var ul = $("<ul />").appendTo(elTarget);
+ if (o.outs) {
+ for (var x of o.outs) {
+ var html = "<i>" + x[0] + "</i> &nbsp;&nbsp;" + x[1];
+ $("<li />").html(linkage(html)).appendTo(ul);
+ }
+ }
+ if (o.ins) {
+ for (var x of o.ins) {
+ var html = "<i>" + x[0] + "</i> " + x[1];
+ if (x[2]) html += " <i>[default: " + x[2] + "</i>]"
+ $("<li />").html(linkage(html)).appendTo(ul);
+ }
+ }
+ }
+ elTarget.append($("<p />").html(linkage(o.description)));
+
+ if (o.exampleCsound && o.exampleJson) {
+ var cs = "instr " + o.exampleJson.instr + "\n\t$TWST_TRANSFORM\n"
+ cs += o.exampleCsound.replace(/^/gm, "\t");
+ cs += "\nendin"
+ var exampleCsound = $("<pre />").hide().text(cs).attr("id", "csex_" + index);
+ let exampleCsoundShown = false;
+ $("<a />").attr("href", "#").text("Csound example").click(function(e) {
+ e.preventDefault();
+ if (!exampleCsoundShown) {
+ $("#csex_" + index).show();
+ exampleCsoundShown = true;
+ } else {
+ $("#csex_" + index).hide();
+ exampleCsoundShown = false;
+ }
+ }).appendTo($("<p />").appendTo(elTarget));
+ exampleCsound.appendTo(elTarget);
+ var exampleJson = $("<pre />").hide().text(JSON.stringify(o.exampleJson, null, "\t")).attr("id", "jsex_" + index);
+ let exampleJsonShown = false;
+ $("<a />").attr("href", "#").text("Corresponding definition example").click(function(e) {
+ e.preventDefault();
+ if (!exampleJsonShown) {
+ $("#jsex_" + index).show();
+ exampleJsonShown = true;
+ } else {
+ $("#jsex_" + index).hide();
+ exampleJsonShown = false;
+ }
+ }).appendTo($("<p />").appendTo(elTarget));
+ exampleJson.appendTo(elTarget);
+ }
+
+ elTarget.append($("<hr />"));
+ }
+ }
+
+
+ $(function() {
+ buildOpcodes();
+ });
+ </script>
+
+</head>
+<body>
+ <h1>Extending twist</h1>
+ <div id="container_overview">
+ <h2>Overview</h2>
+ Twist can quite easily be extended to feature additional transforms. These can be tested and used on the fly with the <i>developer console</i> within twist, and are encouraged to be submitted for inclusion in the live application which can be done <a href="https://csound.1bpm.net/contact/?type=twist_submit">here</a>, via the <i>Help > Submit transform code</i> menu option, or via the link in the <i>developer console</i><br /><br />
+ In order to write new transforms for twist, familiarity with JSON and Csound is required. The UI components including parameters available to the end user are defined with JSON (detailed in the <a href="#json">transform definition</a> section, and the actual audio processing is defined with Csound code (detailed in the <a href="#csound">audio processing with Csound</a> section. Additional twist opcodes are provided to the developer in order to ease integration.<br />
+ Each transform requires a transform definition as a JSON object, and at least one Csound instrument. While each section describes the API to be used, full examples are provided in the <a href="#opcodes">Csound opcode</a> subsection.
+
+
+ </div><div id="container_json">
+ <h2 id="json">Transform definition with JSON</h2>
+ The transform definition is a JSON object, which should at the very least have the keys <a href="#json_name">name</a> and <a href="#json_instr">instr</a> defined. The possible keys for the top-level transform definition are as follows, and if a default value is applicable it is shown to the right of the equals sign in the name column:
+
+ <table><tbody>
+ <tr><td><h5 id="json_name">name</h5></td><td>Name as seen in the twist user interface</td></tr>
+ <tr><td><h5 id="json_instr">instr</h5></td><td>Csound named instrument, which is to be called to carry out the processing</td></tr>
+ <tr><td><h5>inputs = 1</h5></td><td>Number of input files the transform requires. This defaults to 1 but may be set to 2 for cross-processing transforms and such</td></tr>
+ <tr><td><h5>description = ""</h5></td><td>Description of the transform</td></tr>
+ <tr><td><h5>author = ""</h5></td><td>Author name and other relevant details</td></tr>
+ <tr><td><h5>parameters = []</h5></td><td><a href="#parameter">Parameter definitions</a> in an array</td></tr>
+ <tr><td><h5>twine = false</h5></td><td>Whether the transform will be available as a twine insert. Only <a href="#csound_rule_tfi">transforms using live input</a> can be used for this purpose</td></tr>
+ <tr><td><h5>unstable = false</h5></td><td>Should be set to true if the transform is expected to be unstable and may cause crashes. This will result in a warning displayed when the transform is loaded</td></tr>
+ </tbody></table>
+
+
+ <h4 id="parameter">Parameter definition</h4>
+ The parameter definition is a JSON object, which may have any of the following keys. If min == 0, max == 1 and step == 1, the parameter appears as a checkbox which provides the value 1 when checked and 0 when unchecked. If <a href="#parameter_options">options</a> is supplied, then the parameter appears as a drop-down select box. In other cases the parameter is displayed as a range slider with an adjacent number input box.<br /><br />
+ The only required key for a parameter definition is <a href="#parameter_name">name</a>. In this case, a parameter would be with a range of 0 to 1, with the default step amount and sending on the channel with the lowercase equivalent of the name.<br /><br />
+ The possible keys for a parameter definition are as follows, and if a default value is applicable it is shown to the right of the equals sign in the name column:
+
+ <table><tbody>
+ <tr><td><h5 id="parameter_name">name</h5></td><td>Name of the parameter to be shown in the interface</td></tr>
+ <tr><td><h5>description = ""</h5></td><td>Description of the parameter</td></tr>
+ <tr><td><h5 id="parameter_channel">channel = name.toLowerCase()</h5></td><td>Channel name which should correspond to that which is requested by <a href="#csound_twst_param">twst_param</a> in the <a href="#json_instr">transform instrument</a>. Defaults to the lowercase parameter name</td></tr>
+ <tr><td><h5>min = 0</h5></td><td>Numeric minimum accepted value</td></tr>
+ <tr><td><h5>max = 1</h5></td><td>Numeric maximum accepted value</td></tr>
+ <tr><td><h5>step = 0.0000001</h5></td><td>Incremental allowance of the value, should numeric</td></tr>
+ <tr><td><h5 id="parameter_dfault">dfault = 1</h5></td><td>Numeric default value</td></tr>
+ <tr><td><h5 id="parameter_options">options = null</h5></td><td>Array containing options to be displayed in a drop-down select box. If supplied, the minimum, maximum and step values are redundant. <a href="#parameter_dfault">dfault</a> corresponds to the index of the array to be the default value. If <a href="#parameter_asvalue">asvalue</a> is set, then the value supplied to Csound will be the value provided in the options array; otherwise it will be the index of the value</td></tr>
+ <tr><td><h5 id="parameter_asvalue">asvalue = false</h5></td><td>Whether the selected item from <a href="#parameter_options">options</a> should be provided to Csound as the actual value rather than the array index</td></tr>
+ <tr><td><h5>hidden = false</h5></td><td>Whether the parameter should be hidden. May be useful passing static data from the interface to Csound</td></tr>
+ <tr><td><h5>conditions = null</h5></td><td>An array of <a href="#condition">Condition</a> objects which are all to be met for the parameter to be shown</td></tr>
+ <tr><td><h5>hostrange = false</h5></td><td>For child parameters (namely those in modulations), whether the min, max, step, dfault, options and asvalue attributes should be inherited from the parent</td></tr>
+ <tr><td><h5 id="parameter_preset">preset = null</h5></td><td>The name of a <a href="#preset">preset</a> to be used. Any definition attributes provided by the preset may be overriden</td></tr>
+ <tr><td><h5 id="parameter_presetgroup">presetgroup = null</h5></td><td>The name of a <a href="#presetgroup">presetgroup</a> to be used, which will provide a number of parameters in place of the current definition
+ <tr><td><h5>nameprepend = null</h5></td><td>The string which will be prepended to parameter names, if presetgroup is specified
+ <tr><td><h5>channelprepend = null</h5></td><td>The string which will be prepended to parameter channels, if presetgroup is specified
+ </tbody></table>
+
+ <hr />
+ <h4 id="condition">Condition</h4>
+ The condition definition is a JSON object, which should include all of the following keys:
+ <table><tbody>
+ <tr><td><h5>channel</h5></td><td>Parameter <a href="#parameter_channel">channel</a> to evaluate</td></tr>
+ <tr><td><h5>operator</h5></td><td>Operator type, which may be eq (equal), neq (not equal), lt (less than), gt (greater than), le (less than or equal to) or ge (greater than or equal to)</td></tr>
+ <tr><td><h5>value</h5></td><td>Static value to check against the above</td></tr>
+ </tbody></table>
+
+ <hr />
+ <h4 id="preset">Presets</h4>
+ These are available as values to specify in the <a href="#parameter_presetgroup">presetgroup</a> parameter attribute and alter set the parameter up as follows
+ <table><tbody>
+ <tr><td><h5>amp</h5></td><td>Amplitude slider with min: 0 and max: 1, channel: "amp"</td></tr>
+ <tr><td><h5 id="preset_fftsize">fftsize</h5></td><td>FFT size drop down which may be transparently utilised by <a href="#csound_twst_getfinput">twst_getfinput</a> and <a href="#csound_twst_getfcrossinput">twst_getfcrossinput</a>, or accessed directly via the channel "fftsize" or the specified channel name with <a href="#csound_twst_param">twst_param</a></td></tr>
+ <tr><td><h5 id="preset_wave">wave</h5></td><td>f-table selector which may be transparently utilised by <a href="#csound_twst_tf_getwaveform">twst_tf_getwaveform</a>, <a href="#csound_twst_tf_getwaveformk">twst_tf_getwaveformk</a>, or accessed directly via the channel "wave" or the specified channel name with <a href="#csound_twst_param">twst_param</a> or <a href="#csound_twst_paramk">twst_paramk</a></td></tr>
+ <tr><td><h5>applymode</h5></td><td>Apply mode drop down, which may be Replace, Mix, Modulate or Demodulate. Used internally by twist at the rendering stage</td></tr>
+ <tr><td><h5>note</h5></td><td>MIDI note number drop-down, displaying note names between MIDI note number 21 (A0) and 127 (G#9) and returning the MIDI note number to the channel</td></tr>
+ <tr><td><h5 id="preset_wintype">wintype</h5></td><td>Window type drop-down which may be utilised by <a href="#csound_twst_tf_getwintype">twst_tf_getwintype</a>, <a href="#csound_twst_tf_getwintypek">twst_tf_getwintypek</a> or accessed directly via the channel "wintype" or the specified channel name with <a href="#csound_twst_param">twst_param</a> or <a href="#csound_twst_paramk">twst_paramk</a></td></tr>
+ <tr><td><h5 id="preset_instance">instance</h5></td><td>Drop down selecting a file open in twist, other than that which is currently open. Utilised interally by <a href="#csound_twst_getcrossinput">twst_getcrossinput</a> and <a href="#csound_twst_getfcrossinput">twst_getfcrossinput</a></td></tr>
+ <tr><td><h5 id="preset_instanceloop">instanceloop</h5></td><td>Drop down selecting either None, Forward, Backward or Ping-pong to denote the loop type of the other selected instance, used internally for cross-processing transforms within <a href="#csound_twst_getcrossinput">twst_getcrossinput</a>, <a href="#csound_twst_getfcrossinput">twst_getfcrossinput</a> and <a href="#csound_twst_getfcrossdata">twst_getfcrossdata</a></td></tr>
+ </tbody></table>
+
+ <hr />
+ <h4 id="presetgroup">Preset groups</h4>
+ These are available as values to specify in the <a href="#parameter_presetgroup">presetgroup</a> parameter attribute.
+ <table><tbody>
+ <tr><td><h5>pvanal</h5></td><td>Provides <a href="#preset_fftsize">FFT size</a> and a frequency/phase locking checkbox, used internally in the provision of PVS stream data within <a href="#csound_twst_getfinput">twst_getfinput</a> and <a href="#csound_twst_getfcrossinput">twst_getfcrossinput</a></td></tr>
+ <tr><td><h5>pvresmode</h5></td><td>Provides parameters which control the resynthesis approach as used by <a href="#csound_twst_tf_fresynth">twst_tf_fresynth</a>. A drop down permits selection between overlap-add and additive approaches, with the latter showing several further parameters when selected</td></tr>
+ <tr><td><h5 id="presetgroup_pitchscale">pitchscale</h5></td><td>Provides a scaling mode drop down with semitones or ratio as options. The selected scaling is presented via <a href="#csound_twst_tf_pitchscale">twst_tf_pitchscale</a> as a ratio</td></tr>
+ <tr><td><h5 id="presetgroup_notefreq">notefreq</h5></td><td>Shows an option of selecting a note name from a drop down, or specifying the frequency in Hz. The computed frequency is provided to Csound via <a href="#csound_twst_tf_freq">twst_tf_freq</a> and <a href="#csound_twst_tf_freqi">twst_tf_freqi</a></td></tr>
+ </tbody></table>
+
+
+ </div><div id="container_csound">
+
+ <h2 id="csound">Audio processing with Csound</h2>
+ Audio processing is carried out for the corresponding JSON transform definition by invoking the Csound instrument specified in the <a href="#json_instr">instr</a> key. Multiple Csound instruments and opcodes may be utilised, however it should be noted that the Csound instrument is called using <i>subinstr</i>, and offline/commit processing is carried out using audio rate processing within a k-rate loop. The only known limitation this imposes is that additional/auxilliary instruments may not usually be called from the initial instrument in a way that would affect synchronisation of the offline processing aspect - ie, opcodes such as <i>schedule</i> and <i>event</i> should not be used except in careful circumstances where the synchronisation is respected - for example where the scheduled instrument only complete init time processing, or completes in a single k-cycle. However, auxilliary instruments may be called using <i>subinstr</i>.<br /><br />
+ Instruments can generate audio, utilise direct feed of audio, or access table data directly. The latter is useful if the output should be a different duration to the input. <br />
+ A number of opcodes to ease integration with the UI and transform definition are provided by twist, detailed below with examples in the <a href="#opcodes">Opcode reference</a> subsection.
+ <h3>Rules and style guide</h3>
+ The rules and style guide should be adhered to where appropriate, especially if opcodes are to be submitted for inclusion in the live application.
+ <ul>
+ <li id="csound_rule_tfi">Instruments referenced by the transform definition should be named prepended with <i>twst_tf_</i> if they generate audio or use direct input (obtained with <a href="#csound_twst_getinput">twst_getinput</a> or <a href="#csound_twst_getfinput">twst_getfinput</a>) - or prepended with <i>twst_tfi_</i> if table access is to be used (with <a href="#csound_twst_tfi_getfn">twst_tfi_getfn</a></li>
+ <li>The first line of the instrument must be <i>$TWST_TRANSFORM</i> to mark it as a twist transform</li>
+ <li>Auxilliary instruments and user-defined opcodes should be named prepended with the name of the initial instrument</li>
+ <li>Instruments may generate audio or process audio input obtained from calls to <a href="#csound_twst_getinput">twst_getinput</a>, <a href="#csound_twst_getfinput">twst_getfinput</a> or <a href="#csound_twst_tfi_getfn">twst_tfi_getfn</a></li>
+ <li>Instruments must emit stereo audio signals using the <i>outs</i> opcode. Depending on the processing action, either of the outputs may be a silent signal or the same as the input</li>
+ <li>Instruments should be prepared to process or generate left and right channels according to the <i>ileft</i> and <i>iright</i> values from the call to <a href="#csound_twst_getinput">twst_getinput</a>, <a href="#csound_twst_getfinput">twst_getfinput</a> or <a href="#csound_twst_tf_getstate">twst_tf_getstate</a>. A channel not applicable to the request must still be emitted, but may be a silent signal or the same as the input - the audition/commit process will only use the output for the channel requested by the user in the UI</li>
+ <li>Any global objects created must not persist after the instrument has finished. For example, <i>ftgentmp</i> must be used rather than <i>ftgen</i> - unless <i>ftfree</i> is used on the f-table accordingly</li>
+ <li><i>print</i> opcodes and other console output opcodes should not be used except for debugging purposes</li>
+ <li>0dbfs is set at 1, so anything reliant on this should adhere accordingly</li>
+ <li>Opcodes are limited to those available in the Csound WASM build - this is generally everything, but one noted example of an exclusion is <i>fractalnoise</i>. If otherwise unexplainable errors are encountered, this may be due to an unavailable opcode</li>
+ </ul>
+ <h3>Opcode reference</h3>
+ <div id="opcodes"></div>
+
+ </div><div id="container_examples">
+
+ <h2>Examples from the live application</h2>
+ All of the JSON transform definitions <a href="../twirl/appdata.js">can be seen here</a>, under the <i>transforms</i> key.<br />
+ Csound code in the live application is split across several files which are as follows. Each file generally corresponds to the section in the JSON.
+ <ul>
+ <li><a href="/udo/twist/transforms/amplitude.udo">amplitude</a></li>
+ <li><a href="/udo/twist/transforms/cross_processing.udo">cross_processing</a></li>
+ <li><a href="/udo/twist/transforms/delay.udo">delay</a></li>
+ <li><a href="/udo/twist/transforms/filter.udo">filter</a></li>
+ <li><a href="/udo/twist/transforms/frequency.udo">frequency</a></li>
+ <li><a href="/udo/twist/transforms/amplitude.udo">amplitude</a></li>
+ <li><a href="/udo/twist/transforms/general.udo">general</a></li>
+ <li><a href="/udo/twist/transforms/generate.udo">generate</a></li>
+ <li><a href="/udo/twist/transforms/granular.udo">granular</a></li>
+ <li><a href="/udo/twist/transforms/harmonic.udo">harmonic</a></li>
+ <li><a href="/udo/twist/transforms/reverb.udo">reverb</a></li>
+ <li><a href="/udo/twist/transforms/spectral.udo">spectral</a></li>
+ <li><a href="/udo/twist/transforms/warping.udo">warping</a></li>
+ </ul>
+</body>
+</html> \ No newline at end of file
diff --git a/site/app/twist/documentation.html b/site/app/twist/documentation.html
new file mode 100644
index 0000000..694279e
--- /dev/null
+++ b/site/app/twist/documentation.html
@@ -0,0 +1,181 @@
+<html>
+<head>
+ <script type="text/javascript" src="/code/jquery.js"></script>
+ <style type="text/css">
+ body {
+ font-family: Arial, sans-serif;
+ }
+
+ table {
+ border-collapse: collapse;
+ }
+
+ td {
+ border: 1px solid black;
+ }
+
+ pre {
+ font-family: Monospace, Courier, sans-serif;
+ background-color: #ccffff;
+ }
+
+ </style>
+
+</head>
+<body>
+ <h1>Overview</h1>
+ twist is an audio editor and transformer, inspired by Cooledit, Cecilia, Audition, Mammut, Soundshaper and CDP among others. It provides wave editing functions in addition to unique audio effects and transforms.
+
+ <h1>Concept</h1>
+ twist allows for waveform editing and applying transforms. Transforms include effects and other more involved sound processing techniques. Centrally there is a waveform editor, and to the left is a tree view list of available transforms by category. A transform can be loaded by pressing on the name in the relevant submenu, after which the parameters will be displayed at the bottom of the screen. <br /><br />
+ A transform can be <i>auditioned</i> (previewed) or <i>committed</i> (applied), which will be applicable to the selected region of the waveform, or all of it if nothing is selected.
+ <br /><br />
+ At current, twist can only load and process sounds of up to about 5 minutes in length. Some transforms require extensive computation and may not properly audition - in these cases a message will be shown and playback stopped. As a result, twist is ideal for detailed processing of short sounds which may be then utilised as samples or compositional components in a DAW or other such software.
+
+ <h1>Basic usage</h1>
+ Sounds can be loaded by dragging them into the browser, or new files may be created. When you load twist or create a new instance with the <i>+</i> button to the bottom left of the waveform view, you'll be prompted to drag a file into the browser or create a new file of a fixed duration. <br /><br />
+
+ Once you have a sound ready in twist, you can use the waveform view as you would with a typical waveform editor. Regions can be selected by click/dragging the mouse or using the handles at the top of the waveform view. Zooming can be accomplished with the relevant options under the <i>view</i> menu, or with the shortcut buttons. Typical cut/copy/paste and undo operations are also provided under the <i>edit</i> menu and with keyboard shortcuts. <br /><br />
+
+ Icons may be hovered over to see a tooltip detailing what pressing it will do, while keyboard shortcuts for items are shown on the drop-down menu. <br /><br />
+
+ <table><tbody>
+ <tr>
+ <td><img src="../twirl/icon/showAll.svg"></td>
+ <td>Show all</td>
+ <td>Reset the zoom level so all of the waveform can be seen</td>
+ </tr>
+
+ <tr>
+ <td><img src="../twirl/icon/rewind.svg"></td>
+ <td>Rewind</td>
+ <td>Rewind the playback point and clear the current waveform selection</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/play.svg"></td>
+ <td>Play</td>
+ <td>Play the selected region of the waveform</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/audition.svg"></td>
+ <td>Audition</td>
+ <td>Preview the currently-loaded transform on the selected region of the waveform</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/commit.svg"></td>
+ <td>Commit</td>
+ <td>Apply the currently-loaded transform to the selected region of the waveform</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/record.svg"></td>
+ <td>Record</td>
+ <td>Record live input to the selected region of the waveform</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/cut.svg"></td>
+ <td>Cut</td>
+ <td>Cut the selected region of the waveform to the clipboard</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/copy.svg"></td>
+ <td>Copy</td>
+ <td>Copy the selected region of the waveform to the clipboard</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/paste.svg"></td>
+ <td>Paste</td>
+ <td>Paste the clipboard contents to the playback point or start of the selected waveform region</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/pasteSpecial.svg"></td>
+ <td>Paste special</td>
+ <td>Open a dialog to allow pasting the clipboard contents with extended options such as repeat number and mixing</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/zoomSelection.svg"></td>
+ <td>Zoom selection</td>
+ <td>Zoom the view to the selected region of the waveform</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/zoomIn.svg"></td>
+ <td>Zoom in</td>
+ <td>Zoom in the waveform view</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/zoomOut.svg"></td>
+ <td>Zoom out</td>
+ <td>Zoom out the waveform view</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/showAll.svg"></td>
+ <td>Show all</td>
+ <td>Zoom out to show all of the waveform</td>
+ </tr>
+
+ </tbody></table>
+
+ <h1>Applying transforms</h1>
+ When a transform has been loaded, the parameters at the bottom of the screen can be modified and are applicable to auditioning and committing. Certain parameters may be altered while auditioning, and can also be automated or modulated, while other parameters are only applicable at initialisation of the auditioning process and thus cannot be modified during. <br /><br />
+ A crossfade between the original and transformed audio can be specified with the crossfade in/out sliders underneath the waveform. The applicable crossfade will be shown on the waveform view relative to the region which is to be transformed. <br /><br />
+ At the side of each parameter, there are up to four icons, which are as follows:
+ <table><tbody>
+ <tr>
+ <td><img src="../twirl/icon/reset.svg"></td>
+ <td>Reset</td>
+ <td>Reset the parameter to the default value</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/randomise.svg"></td>
+ <td>Include in randomisation</td>
+ <td>Include the parameter in transform randomisation. Unselected parameters will display the icon in a lighter colour</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/automate.svg"></td>
+ <td>Automate</td>
+ <td>Display spline automation for the parameter to allow a time-varying value to be entered</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/modulate.svg"></td>
+ <td>Modulate</td>
+ <td>Display modulation options for the parameter to allow for a parametric time-varying value</td>
+ </tr>
+ </tbody></table><br />
+
+ Additionally to the top-right there are two icons globally applicable to all parameters:
+ <table><tbody>
+ <tr>
+ <td><img src="../twirl/icon/randomise.svg"></td>
+ <td>Randomise</td>
+ <td>Randomise all parameters that are included in randomisation according to the icon detailed above. Randomisation may also affect modulations, which will consequently display the modulation details for the given parameter</td>
+ </tr>
+ <tr>
+ <td><img src="../twirl/icon/reset.svg"></td>
+ <td>Reset</td>
+ <td>Reset all parameters to the default value, removing modulations and automation</td>
+ </tr>
+ </tbody></table>
+
+ <h2>Modulation</h2>
+ When a parameter has modulation enabled, the normal parameter input will not be shown, and instead an area will appear with modulation settings. This can be closed and the normal parameter input returned to with the following icon aside the parameter row: <br />
+ <img src="../twirl/icon/close.svg">
+ <br /><br />
+ When there is more than one waveform open in twist, cross-adaptive modulations are available in the <i>modulation type</i> drop-down box. Cross-adaptive modulations use analysis of another waveform to inform the value of the parameter. For each cross-adaptive modulation, there is an <i>instance</i> drop-down box to select the other waveform to use as an analysis source (from which the selected region will be used), and <i>cross instance loop type</i> to specify the loop type should the length of the region in the analysis waveform be shorter than that of the current waveform.
+
+ <h2>Automation</h2>
+ When a parameter has automation enabled, the normal parameter input will not be shown, and an overlay atop the waveform with a spline editor will be displayed. As a result, the selection cannot be altered by dragging across the waveform unless the automation is hidden. However, the selection shortcuts and menu options can be used, in addition to the selection handles at the top of the waveform view. Multiple automated parameters can be displayed at once, although only one can be edited. In the case that multiple parameters are automated, the following button aside the parameter row can be used to select it: <br />
+ <img src="../twirl/icon/show.svg"><br />
+ Anywhere within the spline editor can be pressed to add a new point. Existing points can be hovered over to see the parameter name, time and value. <br /><br />
+ At the side of the parameter row, this icon can be pressed to disable the automation:<br />
+ <img src="../twirl/icon/close.svg"><br /><br />
+ At the top right of the transform parameters, the following icon can be used to hide all automation, but keep it enabled:<br />
+ <img src="../twirl/icon/hide.svg"><br />
+ To display the automation again, the select icon next to the parameter should be used.
+
+ <h1>Scripting</h1>
+ Scripting is not currently documented in full but is fairly self-explanatory. By using the <i>script</i> toolbar shortcut, or the <i>Action > Scripting</i> option on the menu, the script page is shown. By using <i>Load last operation</i> or <i>Load all session operations</i>, you can see the transforms and operations you have previously applied. The script then may be edited, saved and/or auditioned/committed again. <br />
+ Scripts may be a single JSON object or an array of JSON objects which will be applied serially. Each of the parameter details are stored including automation and modulation. The <i>selection</i> key contains an array of three numbers: the first and second and normalised values between 0 and 1 specifying the region of the waveform which is to be transformed, and the third designates the channel (0 = left, 1 = right (if applicable), -1 = all applicable). The <i>instanceIndex</i> key and others referencing index are a 0-based index of the loaded waveforms in twist.
+
+ <h1>Developer</h1>
+ New transforms can be developed and tested in twist. Full details and API reference are on the <a href="developer_documentation.html">developer documentation</a> page.
+</body>
+</html> \ No newline at end of file
diff --git a/site/app/twist/index.html b/site/app/twist/index.html
new file mode 100644
index 0000000..4652991
--- /dev/null
+++ b/site/app/twist/index.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html lang="en-GB">
+ <head>
+ <title>twist</title>
+ <script type="text/javascript" src="https://apps.csound.1bpm.net/code/jquery.js"></script>
+ <script src="https://apps.csound.1bpm.net/code/d3.v7.min.js"></script>
+ <script type="text/javascript" src="../base/base.js"></script>
+ <script type="text/javascript" src="../twirl/twirl.js"></script>
+ <script type="text/javascript" src="../twirl/appdata.js"></script>
+ <script type="text/javascript" src="../twirl/transform.js"></script>
+ <script type="text/javascript" src="../base/waveform.js"></script>
+ <script type="text/javascript" src="../base/spline-edit.js"></script>
+ <script type="text/javascript" src="../base/analyser.js"></script>
+ <script type="text/javascript" src="twist_ui.js"></script>
+ <script type="text/javascript" src="twist.js"></script>
+ <link rel="stylesheet" href="../twirl/theme.css">
+ <link rel="stylesheet" href="../twirl/twirl.css">
+ <link rel="stylesheet" href="twist.css">
+ <script type="text/javascript">
+ $(twist_startisolated);
+ </script>
+ </head>
+ <body>
+ <div id="twist_start">
+ <div id="twist_start_invoke">
+ <h1>twist</h1>
+ <p>audio transformer</p>
+ <div id="twist_start_invokebig">Press to begin</div>
+ </div>
+ </div>
+
+ <div id="twist">
+ <div id="twist_menubar"></div>
+ <div id="twist_main">
+ <div id="twist_views">
+ <div id="twist_analyser"></div>
+ <div id="twist_waveforms"></div>
+ <div id="twist_splines"></div>
+ </div>
+ <div id="twist_sidepane">
+ <div id="twist_panetree"></div>
+ </div>
+ <div id="twist_controls">
+ <div id="twist_wavecontrols">
+ <table><tbody><tr id="twist_waveform_tabs"></tr><tbody></table>
+ <table><tbody><tr id="twist_wavecontrols_inner"></tr><tbody></table>
+ </div>
+ <div id="twist_controls_inner"></div>
+ </div>
+ </div>
+ <div id="twist_welcome">
+ <h4>Hello</h4>
+ Hover over icons and parameter names to see what they do. Transforms can be selected
+ from the menu on the left; the current file can have the transform auditioned (previewed) or committed (applied). Check out the help and settings for further tips and customisation.<br />
+ At the moment, there is a limitation on files to around five minutes in duration.
+ </div>
+ <div id="twist_script" class="fullscreen_overlay">
+ <h3>Scripting</h3>
+ Scripts can be an individual JSON object or an array of objects in which case they will be committed sequentially. Only single transform scripts can be auditioned.
+ <hr />
+ <textarea id="twist_scriptsource" class="twist_devcode"></textarea>
+ <br />
+ <button id="twist_scriptstop">Stop</button>
+ <button id="twist_scriptaudition" class="twist_scriptbutton">Audition</button>
+ <button id="twist_scriptcommit" class="twist_scriptbutton">Commit</button>
+ <button id="twist_scriptloadlast" class="twist_scriptbutton">Load last</button>
+ <button id="twist_scriptloadall" class="twist_scriptbutton">Load all</button>
+ <button id="twist_scriptcancel" class="twist_scriptbutton">Cancel</button>
+ </div>
+ <div id="twist_developer" class="fullscreen_overlay">
+ <h3>Developer console</h3>
+ Code for transforms can be tested here. The code and definition should follow the guidance and API documentation <a id="twist_developer_documentation" href="developer_documentation.html" target="_blank">provided here.</a> The JSON definition should be a single transform as a JSON object, but mutiple transforms may be loaded individually.<br />
+ Contributions of transforms are warmly welcomed and <a id="twist_developer_submit" href="https://csound.1bpm.net/contact/?type=twist_submit" target="_blank">can be submitted here.</a>
+ <h4>Csound code</h4>
+ <textarea class="twist_devcode" id="twist_devcsound"></textarea>
+ <br /><button id="twist_inject_devcsound">Load Csound orchestra code</button>
+ <hr />
+ <h4>JSON transform definition</h4>
+ <textarea class="twist_devcode" id="twist_devjson"></textarea>
+ <br /><button id="twist_inject_devjson">Load JSON</button>
+ <hr />
+ <button id="twist_exit_devcode">Exit</button>
+ </div>
+ <div id="twist_crash">
+ <h2>twist has crashed.</h2>
+ We are working hard on ironing out all the bugs, but some still occur. To help, details of the last transform you attempted to audition or commit have been sent to the developers.
+ <a href=".">Press here to reload the application.</a>
+ <hr />
+ <div id="twist_crash_recovery">Attempting to recover your work...</div>
+ </div>
+ <div id="twist_hidden_links">
+ <a id="twist_contact" href="https://csound.1bpm.net/contact/?type=general&app=twist" target="_blank">Contact</a>
+ <a id="twist_reportbug" href="https://csound.1bpm.net/contact/?type=report_bug&app=twist" target="_blank">Report bug</a>
+ <a id="twist_documentation" href="documentation.html" target="_blank">Documentation</a>
+ </div>
+ </div>
+ </body>
+</html> \ No newline at end of file
diff --git a/site/app/twist/twist.csd b/site/app/twist/twist.csd
new file mode 100644
index 0000000..ccd4085
--- /dev/null
+++ b/site/app/twist/twist.csd
@@ -0,0 +1,19 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+nchnls_i = 2
+
+#include "/twist/twist.udo"
+
+</CsInstruments>
+<CsScore>
+f0 z
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/app/twist/twist.css b/site/app/twist/twist.css
new file mode 100644
index 0000000..935ef88
--- /dev/null
+++ b/site/app/twist/twist.css
@@ -0,0 +1,309 @@
+body {
+ font-family: var(--fontFace);
+ background-color: #000000;
+ color: var(--fgColor1);
+ user-select: none;
+ cursor: arrow;
+}
+
+#twist_hidden_links {
+ display: none;
+}
+
+#twist_crash {
+ font-family: "Nouveau IBM";
+ background-color: #b3240b;
+ color: #e8dedc;
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ right: 0px;
+ width: 100%;
+ height: 100%;
+ z-index: 666;
+ user-select: none;
+ cursor: not-allowed;
+ display: none;
+}
+
+#twist_scriptstop {
+ display: none;
+}
+
+#twist_menubar {
+ position: absolute;
+ top: 0px;
+ left: 0px;
+ width: 100%;
+ right: 0px;
+ height: 20px;
+ z-index: 6;
+}
+
+a {
+ color: var(--fgColor3);
+ font-weight: bold;
+ text-decoration: none;
+}
+
+#twist_welcome {
+ display: none;
+ font-size: var(--fontSizeDefault);
+}
+
+#twist_main {
+ position: absolute;
+ z-index: 5;
+ background-color: var(--bgColor1);
+ left: 0px;
+ top: 20px;
+ width: 100%;
+ bottom: 0px;
+}
+
+.waveform {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+}
+
+#twist_views {
+ position: absolute;
+ left: 15%;
+ right: 0px;
+ top: 0px;
+ height: 50%;
+}
+
+#twist_analyser {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ height: 40%;
+ width: 100%;
+ background-color: var(--bgColor1);
+ display: none;
+}
+
+#twist_waveforms {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ bottom: 0px;
+ width: 100%;
+}
+
+#twist_splines {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ bottom: 0px;
+ margin-top: 15px;
+ margin-bottom: 15px;
+ width: 100%;
+ display: none;
+ z-index: 20;
+ background-color: var(--waveformOverlayColor);
+ opacity: 0.5;
+}
+
+.twist_scope {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0px;
+ left: 0px;
+}
+
+.waveform_overlay {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: var(--waveformOverlayColor);
+ opacity: 0.95;
+ left: 0px;
+ top: 0px;
+ z-index: 30;
+}
+
+.waveform_overlay_mid {
+ font-size: 12pt;
+ padding-top: 100px;
+ text-align: center;
+}
+
+
+#twist_sidepane {
+ position: absolute;
+ background-color: var(--bgColor3);
+ left: 0px;
+ top: 0px;
+ height: 100%;
+ width: 15%;
+ overflow-y: scroll;
+ overflow-x: auto;
+ scrollbar-color: var(--scrollbarColor);
+}
+
+#twist_controls {
+ position: absolute;
+ background-color: var(--bgColor1);
+ left: 15%;
+ top: 50%;
+ bottom: 0px;
+ right: 0px;
+}
+
+#twist_controls_inner {
+ position: absolute;
+ background-color: var(--bgColor4);
+ left: 0px;
+ top: 70px;
+ bottom: 0px;
+ width: 100%;
+ overflow-y: scroll;
+ overflow-x: auto;
+ scrollbar-color: var(--scrollbarColor);
+}
+
+#twist_wavecontrols {
+ position: absolute;
+ overflow: hidden;
+ left: 0px;
+ top: 0px;
+ height: 70px;
+ width: 100%;
+}
+
+#twist_waveform_tabs {
+ cursor: pointer;
+}
+
+#twist_help {
+ z-index: 60;
+ position: absolute;
+ background-color: var(--bgColor1);
+ opacity: 0.9;
+ width: 100%;
+ height: 100%;
+ top: 0px;
+ left: 0px;
+ overflow-y: scroll;
+ overflow-x: auto;
+ scrollbar-color: var(--scrollbarColor);
+ display: none;
+ cursor: pointer;
+}
+
+#twist_panetree {
+ font-size: var(--fontSizeDefault);
+ font-family: var(--fontFace);
+}
+
+button {
+ border: var(--buttonBorder);
+ font-color: var(--fgColor3);
+ color: var(--fgColor3);
+ background-color: var(--bgColor4);
+ font-size: var(--fontSizeDefault);
+ padding: 2px;
+ font-family: var(--fontFace);
+ white-space: nowrap;
+}
+
+select {
+ background-color: var(--bgColor2);
+ color: var(--fgColor2);
+}
+
+input[type="checkbox"] {
+ accent-color: var(--bgColor1);
+}
+
+.automate_container {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 125;
+ display: none;
+}
+
+.twist_devcode {
+ background-color: var(--codeBgColor);
+ color: var(--codeFgColor);
+ font-size: var(--codeFontSize);
+ font-family: var(--codeFontFace);
+ width: 80%;
+ height: 20%;
+}
+
+#twist_scriptsource {
+ height: 60%;
+ overflow-y: auto;
+ overflow-x: hide;
+}
+
+#twist_developer {
+ overflow-y: auto;
+ overflow-x: hide;
+}
+
+.fullscreen_overlay {
+ position: fixed;
+ display: none;
+ z-index: 60;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: var(--bgColor3);
+ font-size: var(--fontSizeDefault);
+ opacity: 0.96;
+}
+
+#twist_start {
+ z-index: 300;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ width: 100%;
+ height: 100%;
+ background-color: var(--bgColor2);
+ cursor: pointer;
+}
+
+#twist_start_invoke {
+ z-index: 202;
+ text-align: centre;
+ margin: 0px;
+ position: absolute;
+ top: 20%;
+ left: 20%;
+ width: 60%;
+ height: 40%;
+}
+
+#twist_start_invokebig {
+ font-size: 48pt;
+}
+
+.wtab_selected {
+ font-size: var(--fontSizeDefault);
+ font-weight: bold;
+ background-color: var(--tabSelectedBgColor);
+ color: var(--tabSelectedFgColor);
+ padding: 3px;
+ border: 1px solid black;
+ border-top: 0;
+}
+
+.wtab_unselected {
+ font-size: var(--fontSizeDefault);
+ background-color: var(--tabUnselectedBgColor);
+ color: var(--tabUnselectedFgColor);
+ font-weight: normal;
+ padding: 3px;
+ border: 1px solid black;
+}
+
diff --git a/site/app/twist/twist.js b/site/app/twist/twist.js
new file mode 100644
index 0000000..a7a248c
--- /dev/null
+++ b/site/app/twist/twist.js
@@ -0,0 +1,1248 @@
+var OperationWatchdog = function(twist) {
+ var self = this;
+ var active = false;
+ var lastValues = [true, true];
+ var firstActive = true;
+ var checkInterval;
+ var timeoutTime = 30000;
+ var alivetimeoutTime = 3500;
+ var context;
+
+ function crash() {
+ self.stop();
+ twirl.sendErrorState({text: "Unhandled exception in " + context});
+ var el = $("#twist_crash").show();
+ var elSr = $("#twist_crash_recovery");
+
+ function doomed() {
+ elSr.empty().append($("<h4 />").text("Sorry, unfortunately your work cannot be saved."));
+ }
+
+ var doomedTimeout = setTimeout(doomed, 6000);
+
+ var cbid = app.createCallback(function(ndata) {
+ if (doomedTimeout) clearTimeout(doomedTimeout);
+
+ if (!ndata.left && !ndata.right) {
+ return doomed();
+ }
+ elSr.empty();
+ var text;
+ var linkLeft = $("<a />").attr("href", "#").text("Download").click(function(e){
+ e.preventDefault();
+ twist.downloadFile("/crashL.wav");
+ });
+ if (ndata.left && !ndata.right) {
+ elSr.append($("<h4 />").text("Your work has been recovered:"));
+ elSr.append(linkLeft);
+ } else {
+ elSr.append($("<h4 />").text("Your work has been recovered as separate left/right channels:"));
+ linkLeft.text("Download left channel").appendTo(elSr);
+ elSr.append("<br />");
+ var linkRight = $("<a />").attr("href", "#").text("Download right channel").click(function(e){
+ e.preventDefault();
+ twist.downloadFile("/crashR.wav");
+ }).appendTo(elSr);
+ }
+
+ });
+ app.getCsound().compileOrc("iwrittenL = 0\niwrittenR = 0\nif (gitwst_bufferL[gitwst_instanceindex] > 0) then\niwrittenL ftaudio gitwst_bufferL[gitwst_instanceindex], \"/crashL.wav\", 14\nendif\nif (gitwst_bufferR[gitwst_instanceindex] > 0) then\niwrittenR ftaudio gitwst_bufferR[gitwst_instanceindex], \"/crashR.wav\", 14\nendif\nio_sendstring(\"callback\", sprintf(\"{\\\"cbid\\\":" + cbid + ",\\\"left\\\":%d,\\\"right\\\":%d}\", iwrittenL, iwrittenR))\n");
+ }
+
+ function checkAlive() {
+ var alive = false;
+ var aliveTimeout = setTimeout(crash, alivetimeoutTime);
+ var cbid = app.createCallback(function(){
+ clearTimeout(aliveTimeout);
+ alive = true;
+ });
+ app.insertScore("twst_checkalive", [0, 1, cbid]);
+ }
+
+ this.start = function(startContext) {
+ active = true;
+ context = startContext;
+ firstActive = true;
+ lastValues = [true, true];
+ if (checkInterval) clearInterval(checkInterval);
+ checkInterval = setInterval(function() {
+ if (lastValues[0] === lastValues[1]) {
+ checkAlive();
+ }
+ }, timeoutTime);
+ };
+
+ this.setActive = function(value) {
+ if (!active) return;
+ if (firstActive) {
+ firstActive = false;
+ } else {
+ lastValues[0] = lastValues[1];
+ }
+ lastValues[1] = value;
+ };
+
+ this.stop = function() {
+ active = false;
+ firstActive = true;
+ lastValues = [true, true];
+ if (checkInterval) clearInterval(checkInterval);
+ };
+};
+
+var Twist = function() {
+ twirl.init();
+ var self = this; // TODO deprecate this in favour of below
+ var twist = this;
+ this.storage = localStorage.getItem("twist");
+ if (self.storage) {
+ self.storage = JSON.parse(self.storage);
+ } else {
+ self.storage = {
+ dcblockoutputs: 1,
+ tanhoutputs: 1,
+ maxundo: 2,
+ showShortcuts: 1,
+ commitHistoryLevel: 16,
+ scopeType: 0
+ };
+ }
+
+ twist.version = 1;
+ this.currentTransform = null;
+ var errorState;
+ var instanceIndex = 0;
+ this.waveforms = [];
+ var waveformFiles = [];
+ var waveformTabs = [];
+ var waveformLoaded = [];
+ this.playheadInterval = null;
+ var playing = false;
+ var auditioning = false;
+ var recording = false;
+ this.onPlays = [];
+ this.onInstanceChangeds = [];
+ this.operationLog = [];
+ var sr = 44100;
+ var undoLevels = [];
+ var onSave;
+ this.visible = false;
+ this.playbackLoop = false;
+ this.twine = null;
+ this.hasClipboard = false;
+ this.watchdog = new OperationWatchdog(twist);
+ this.ui = new TwistUI(twist);
+
+ this.setPlaying = function(state) {
+ if (playing == state) return;
+ playing = state;
+ for (var o of twist.onPlays) {
+ o(playing, auditioning, recording);
+ }
+ if (twist.currentTransform) {
+ twist.currentTransform.setPlaying(state);
+ }
+ twist.ui.setPlaying(state);
+
+ if (!state) {
+ twist.watchdog.stop();
+ twist.waveform.movePlayhead(0);
+ if (twist.playheadInterval) {
+ clearInterval(twist.playheadInterval);
+ }
+ }
+ };
+
+ this.saveStorage = function() {
+ localStorage.setItem("twist", JSON.stringify(twist.storage));
+ };
+
+ this.lastOperation = function() {
+ return twist.operationLog[twist.operationLog.length - 1];
+ };
+
+ this.clearOperationLog = function() {
+ twist.operationLog = [];
+ };
+
+ async function pushOperationLog(operation, logChannels) {
+ var max = twist.storage.commitHistoryLevel;
+ if (!max) {
+ twist.storage.commitHistoryLevel = max = 16;
+ }
+ if (twist.operationLog.length + 1 >= max) {
+ twist.operationLog.shift();
+ }
+ if (logChannels) {
+ if (!operation.channels) operation.channels = {};
+ for (let c of logChannels) {
+ operation.channels[c] = await app.getControlChannel(c);
+ }
+ }
+ twist.operationLog.push(operation);
+ }
+
+ this.createNewInstance = function(noShowLoadNew) {
+ var element = $("<div />").addClass("waveform").appendTo("#twist_waveforms");
+ let index = waveformFiles.length;
+
+ if (index < 0) index = 0;
+ waveformTabs.push(
+ $("<td />").text("New file").click(function() {
+ if (twist.isPlaying()) return;
+ twist.waveform = index;
+ }).addClass("wtab_selected").appendTo("#twist_waveform_tabs")
+ );
+ undoLevels.push(0);
+ var waveform = new Waveform({
+ target: element,
+ latencyCorrection: twirl.latencyCorrection,
+ showcrossfades: true,
+ crossFadeWidth: 1,
+ timeBar: true,
+ markers: [
+ {preset: "selectionstart"},
+ {preset: "selectionend"},
+ ]
+ })
+ waveform.onRegionChange = function(region) {
+ if (twist.currentTransform) {
+ twist.currentTransform.redraw(region);
+ }
+ };
+ twist.waveforms.push(waveform);
+ if (!noShowLoadNew) twist.ui.showLoadNewPrompt();
+ twist.waveform = index;
+ for (let o of twist.onInstanceChangeds) {
+ o(true, index);
+ }
+ };
+
+
+ function removeInstance(i) {
+ if (!i) i = instanceIndex;
+ if (twist.waveforms.length == 1 || i < 0 || i > twist.waveforms.length - 1) {
+ return;
+ }
+ twist.waveforms[i].destroy();
+ delete twist.waveforms[i];
+ waveformTabs[i].remove();
+ waveformLoaded[instanceIndex] = false;
+ delete waveformTabs[i]
+ if (instanceIndex == i) {
+ instanceIndex = i + ((i == 0) ? 1 : -1);
+ twist.waveform.show();
+ }
+ for (let o of twist.onInstanceChangeds) {
+ o(false, i);
+ }
+ }
+
+ this.closeInstance = function(i) {
+ removeInstance(i);
+ };
+
+
+
+ this.errorHandler = async function(text, onComplete) {
+ var errorObj = {
+ lastOperation: twist.lastOperation()
+ };
+ if (twist.currentTransform) {
+ var state = await twist.currentTransform.getState();
+ errorObj.transformState = state;
+ }
+
+ twirl.errorHandler(text, onComplete, errorObj);
+ twist.setPlaying(false);
+ };
+
+ function playPositionHandler(noPlayhead, onComplete, monitorChannels) {
+ function callback(ndata) {
+ if (ndata.status == 1) { // playing
+ twist.setPlaying(true);
+ if (!noPlayhead) {
+ twist.watchdog.start("audition");
+ if (twist.playheadInterval) {
+ clearInterval(twist.playheadInterval);
+ }
+ twist.playheadInterval = setInterval(async function(){
+ var val = await app.getControlChannel("twst_playposratio");
+ twist.watchdog.setActive(val);
+ if (val < 0 || val > 1) {
+ clearInterval(twist.playheadInterval);
+ }
+
+ var monitorValues;
+ if (monitorChannels) {
+ monitorValues = [];
+ monitorValues.push((monitorChannels[0]) ? await app.getControlChannel(monitorChannels[0]) : null);
+ monitorValues.push((monitorChannels[1]) ? await app.getControlChannel(monitorChannels[1]) : null);
+ } else {
+ monitorValues = null;
+ }
+ twist.waveform.movePlayhead(val, monitorValues);
+ }, 50);
+ }
+ return;
+ }
+ // stopped
+ app.removeCallback(ndata.cbid);
+
+ if (twist.playbackLoop && ndata.status == 0 && onComplete) {
+ return onComplete(ndata);
+ }
+ twist.setPlaying(false);
+
+ if (ndata.status == -1) {
+ var container = $("<div />");
+ $("<p />").text("Not enough processing power to transform in realtime").appendTo(container);
+ var lagHintHtml = twist.currentTransform.getLagHints();
+ if (lagHintHtml) {
+ $("<p />").html(lagHintHtml).appendTo(container);
+ }
+
+ return twirl.prompt.show(container);
+ } else if (ndata.status == 2) { // record complete
+ globalCallbackHandler(ndata);
+ }
+ if (onComplete) onComplete(ndata);
+
+ }
+ return app.createCallback(callback, true);
+ }
+
+ function operation(options) {
+ var s = (options.selection) ? options.selection : twist.waveform.selected;
+ errorState = "Operation error";
+ if (options.showLoading) {
+ twist.ui.setLoadingStatus(true);
+ }
+ var cbid;
+ if (!options.onComplete || typeof(options.onComplete) == "function") {
+ cbid = app.createCallback(function(ndata) {
+ twist.waveform.cover(false);
+ if (options.onComplete) {
+ options.onComplete(ndata);
+ } else if (ndata.status && ndata.status <= 0) {
+ var text;
+ if (ndata.status == -2) {
+ text = "Resulting file would be too large";
+ }
+ twist.errorHandler(text);
+ }
+ if (options.showLoading) {
+ twist.ui.setLoadingStatus(false);
+ }
+ });
+ } else {
+ cbid = options.onComplete;
+ }
+ if (!options.noLogScript) {
+ pushOperationLog({
+ type: "operation",
+ instr: options.instr,
+ name: options.name,
+ selection: s,
+ instanceIndex: instanceIndex
+ }, options.logScriptChannels);
+ }
+ app.insertScore(options.instr, [0, 1, cbid, s[0], s[1], s[2], (options.noCheckpoint) ? 1 : 0]);
+ }
+
+ this.isPlaying = function() {
+ return playing;
+ };
+
+ this.redraw = function() {
+ if (twist.currentTransform) {
+ twist.currentTransform.redraw();
+ }
+ for (let w of twist.waveforms) {
+ w.redraw();
+ }
+ };
+
+ this.undo = function() {
+ if (playing) return;
+ twist.waveform.cover(true);
+ operation({
+ instr: "twst_undo",
+ name: "Undo",
+ onComplete: globalCallbackHandler,
+ showLoading: true,
+ noLogScript: true
+ });
+ };
+
+ this.cut = function() {
+ if (playing) return;
+ twist.waveform.cover(true);
+ operation({
+ instr: "twst_cut",
+ name: "Cut",
+ onComplete: globalCallbackHandler,
+ showLoading: true,
+ });
+ twist.hasClipboard = true;
+ };
+
+ this.trim = function() {
+ if (playing) return;
+ twist.waveform.cover(true);
+ operation({
+ instr: "twst_trim",
+ name: "Trim",
+ onComplete: globalCallbackHandler,
+ showLoading: true,
+ });
+ };
+
+ this.delete = function() {
+ if (playing) return;
+ twist.waveform.cover(true);
+ operation({
+ instr: "twst_delete",
+ name: "Delete",
+ onComplete: globalCallbackHandler,
+ showLoading: true,
+ });
+ };
+
+ this.copy = function() {
+ if (playing) return;
+ twist.waveform.cover(true);
+ operation({
+ instr: "twst_copy",
+ name: "Copy",
+ showLoading: true,
+ });
+ twist.hasClipboard = true;
+ };
+
+ this.paste = function() {
+ if (playing) return;
+ twist.waveform.cover(true);
+ operation({
+ instr: "twst_paste",
+ name: "Paste",
+ onComplete: globalCallbackHandler,
+ showLoading: true,
+ });
+ };
+
+ this.moveToNextTransient = function() {
+ if (playing) return;
+ var cbid = app.createCallback(globalCallbackHandler);
+ var s = twist.waveform.selected;
+ app.insertScore("twst_nexttransient",
+ [0, 1, cbid, s[1], s[1], s[2]]
+ );
+ };
+
+ this.selectToNextTransient = function() {
+ if (playing) return;
+ var cbid = app.createCallback(globalCallbackHandler);
+ var s = twist.waveform.selected;
+ var selend = (s[0] == s[1]) ? s[1] + 0.000001 : s[1];
+ app.insertScore("twst_nexttransient",
+ [0, 1, cbid, s[0], selend, s[2]]
+ );
+ };
+
+ this.moveToStart = function() {
+ if (playing) return;
+ twist.waveform.setSelection(0);
+ };
+
+ this.moveToEnd = function() {
+ if (playing) return;
+ twist.waveform.setSelection(1);
+ };
+
+ this.selectAll = function() {
+ if (playing) return;
+ twist.waveform.setSelection(0, 1);
+ };
+
+ this.selectNone = function() {
+ if (playing) return;
+ twist.waveform.setSelection(0);
+ };
+
+ this.selectToEnd = function() {
+ if (playing) return;
+ twist.waveform.alterSelection(null, 1);
+ }
+
+ this.selectFromStart = function() {
+ if (playing) return;
+ twist.waveform.alterSelection(0, null);
+ }
+
+ this.pasteSpecial = function() {
+ if (playing) return;
+ var elPasteSpecial = $("<div />");
+ elPasteSpecial.append($("<h4 />").text("Paste special"));
+ var def = {
+ instr: "twst_pastespecial",
+ parameters: [
+ {name: "Repetitions", channel: "repetitions", min: 1, max: 40, step: 1, dfault: 1, automatable: false},
+ {name: "Mix paste", channel: "mixpaste", step: 1, dfault: 0, automatable: false}
+ ]
+ };
+ var tf = new twirl.transform.Transform({
+ element: elPasteSpecial,
+ definition: def,
+ host: twist
+ });
+
+ $("<button />").text("Paste").click(function(){
+ twist.ui.hidePrompt();
+ twist.waveform.cover(true);
+ operation({
+ instr: "twst_pastespecial",
+ name: "Paste special",
+ onComplete: globalCallbackHandler,
+ showLoading: true,
+ logScriptChannels: ["twst_pastespecial_repetitions", "twst_pastespecial_mixpaste"]
+ });
+
+ }).appendTo(elPasteSpecial);
+
+ $("<button />").text("Cancel").click(function(){
+ twist.ui.hidePrompt();
+ }).appendTo(elPasteSpecial);
+ twist.ui.showPrompt(elPasteSpecial, null, true);
+
+ };
+
+
+ this.play = function(playOverride) {
+ if (!waveformLoaded[instanceIndex] || (playing && !playOverride)) return;
+ auditioning = false;
+ recording = false;
+ operation({
+ instr: "twst_play",
+ name: "Play",
+ onComplete: playPositionHandler(false, function(ndata){
+ if (ndata.status != 3 && twist.playbackLoop) { // 3 = user-stopped
+ twist.play(true);
+ }
+ }),
+ noLogScript: true
+ });
+ };
+
+ this.stop = function() {
+ if (!playing || !waveformLoaded[instanceIndex]) return;
+ twist.waveform.cover(false);
+ app.insertScore("twst_stop");
+ };
+
+ var saveNumber = 1;
+ function formatFileName(name) {
+ if (!name) name = waveformTabs[instanceIndex].text();
+ if (!name.toLowerCase().endsWith(".wav")) {
+ name += ".wav";
+ }
+
+ // HACK TODO: WASM can't overwrite files
+ name = name.substr(0, name.lastIndexOf(".")) + "." + (saveNumber ++) + name.substr(name.lastIndexOf("."));
+ // END HACK
+ return name;
+ }
+
+ this.downloadFile = async function(path, name) {
+ if (!name) name = formatFileName(name);
+ var content = await app.readFile(path);
+ var blob = new Blob([content], {type: "audio/wav"});
+ var url = window.URL.createObjectURL(blob);
+ var a = $("<a />").attr("href", url).attr("download", name).appendTo($("body")).css("display", "none");
+ a[0].click();
+ setTimeout(function(){
+ a.remove();
+ window.URL.revokeObjectURL(url);
+ app.unlinkFile(path);
+ }, 20000);
+ };
+
+ this.saveFile = function(name, onComplete) {
+ if (playing) return;
+ if (onSave) {
+ twirl.loading.show("Processing");
+ var cbid = app.createCallback(function(ndata){
+ twirl.loading.hide();
+ onSave(ndata.tables);
+ });
+ app.insertScore("twst_getbuffers", [0, 1, cbid]);
+ return;
+ }
+ if (!name) name = formatFileName(name);
+ var cbid = app.createCallback(async function(ndata){
+ await self.downloadFile("/" + name, name);
+ if (onComplete) onComplete();
+ self.ui.setLoadingStatus(false);
+ });
+ self.ui.setLoadingStatus(true, true, "Saving");
+ app.insertScore("twst_savefile", [0, 1, cbid, name]);
+ };
+
+ function getAutomationData(start, end) {
+ var calls = [];
+ if (!self.currentTransform) return calls;
+ var automations = self.currentTransform.getAutomationData(start, end);
+ if (automations && automations.length > 0) {
+ for (let i in automations) {
+ if (automations[i].type == "modulation") {
+ calls.push(automations[i].data[0] + " \"" + automations[i].data[1] + "\"");
+ } else if (automations[i].type == "automation") {
+ calls.push("chnset linseg:k(" + automations[i].data + "), \"" + automations[i].channel + "\"");
+ }
+ }
+ }
+ return calls;
+ }
+
+ function handleAutomation(onready, calls) {
+ if (calls.length == 0) {
+ return onready(0);
+ }
+
+ var instr = "instr twst_automaterun\n";
+ for (let c of calls) {
+ instr += c + "\n";
+ }
+ instr += "a_ init 0\nout a_\nendin\n";
+ app.compileOrc(instr).then(function(status){
+ if (status < 0) {
+ self.errorHandler("Cannot parse automation data");
+ } else {
+ onready(1);
+ }
+ });
+ /*
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status == 1) {
+ onready(1);
+ } else {
+ self.errorHandler("Cannot parse automation data");
+ }
+ });
+
+ var call = [0, 1, cbid];
+ for (let c of calls) {
+ call.push(c);
+ }
+ app.insertScore("twst_automationprepare", call);
+ */
+ }
+
+
+ function fftsizeCheck(selected, duration) {
+ if (self.currentTransform) {
+ for (var p in self.currentTransform.parameters) {
+ if (p.indexOf("fftsize") != -1) {
+ var val = self.currentTransform.parameters[p].getValue();
+ var minTime = (val / sr) * 2;
+ if ((selected[1] - selected[0]) * duration < minTime) {
+ return false;
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ this.record = async function() {
+ if (!waveformLoaded[instanceIndex] ||playing) return;
+ auditioning = false;
+ recording = true;
+ await app.enableAudioInput();
+ errorState = "Recording error";
+ self.waveform.cover(true);
+ var s = self.waveform.selected;
+ var monitorChannels;
+ if (self.waveform.channels == 1) {
+ monitorChannels = ["recordmonitorL"];
+ } else {
+ if (s[2] == -1) {
+ monitorChannels = ["recordmonitorL", "recordmonitorR"];
+ } else if (s[2] == 0) {
+ monitorChannels = ["recordmonitorL", null];
+ } else if (s[2] == 1) {
+ monitorChannels = [null, "recordmonitorR"];
+ }
+ }
+ self.waveform.resetDrawOneValue();
+ var cbid = playPositionHandler(null, null, monitorChannels);
+ var items = [0, 1, cbid, s[0], s[1], s[2]];
+ app.insertScore("twst_record", items);
+ };
+
+ this.audition = function(playOverride) {
+ if (!waveformLoaded[instanceIndex] || (playing && !playOverride)) return;
+ if (!self.currentTransform) {
+ return self.play();
+ }
+ self.currentTransform.saveState();
+ var s = self.waveform.selected;
+ if (s[0] == s[1]) {
+ s[0] = 0;
+ s[1] = 1;
+ }
+ if (!fftsizeCheck(s, self.waveform.duration)) {
+ return self.errorHandler("Length too short for this transform");
+ }
+
+ auditioning = true;
+ recording = false;
+ errorState = "Playback error";
+ handleAutomation(function(automating){
+ var cbid = playPositionHandler(false, function(ndata){
+ if (ndata.status != 3 && self.playbackLoop) { // 3 = user-stopped
+ self.audition(true);
+ }
+ });
+ var xfade = self.ui.getCrossFadeValues();
+ var items = [
+ 0, 1, cbid, s[0], s[1], s[2],
+ self.currentTransform.instr, automating,
+ xfade[0], xfade[1]
+ ];
+ app.insertScore("twst_audition", items);
+ }, getAutomationData(s[0], s[1]));
+
+ };
+
+
+ var scriptStack = [];
+ function applyScript(audition, first, lastData) {
+ if (playing) return;
+ var noCheckpoint = !first;
+ var script = scriptStack.shift();
+ if (!script) {
+ self.ui.setLoadingStatus(false);
+ if (lastData) {
+ globalCallbackHandler(lastData);
+ }
+ self.setPlaying(false);
+ return;
+ }
+
+ if (audition) auditioning = true;
+ self.setPlaying(true);
+
+ if (script.type == "operation") {
+ if (audition) {
+ return self.errorHandler("Only transform scripts can be auditioned");
+ }
+ self.ui.setLoadingStatus(true);
+ self.waveform.cover(true);
+ onComplete = (script.instr == "twst_copy") ? null : globalCallbackHandler;
+
+ operation({
+ instr: script.instr,
+ name: script.name,
+ onComplete: function(ndata){
+ lastData = ndata;
+ self.setPlaying(false);
+ applyScript(audition, false, lastData);
+ },
+ showLoading: true,
+ selection: script.selection,
+ noLogScript: true,
+ noCheckpoint: noCheckpoint
+ });
+
+ } else if (script.type == "transform") {
+ errorState = ((audition) ? "Audition" : "Transform" ) + " commit error";
+ if (!audition) {
+ self.ui.setLoadingStatus(true, true);
+ }
+
+ for (let channel in script.channels) {
+ app.setControlChannel(channel, script.channels[channel]);
+ }
+ handleAutomation(function(automating){
+ if (audition) {
+ var cbid = playPositionHandler();
+ } else {
+ var cbid = app.createCallback(function(ndata) {
+ lastData = ndata;
+ self.setPlaying(false);
+ applyScript(audition, false, lastData);
+ });
+ }
+ var instr = "twst_" + ((audition) ? "audition" : "commit");
+
+ app.insertScore(instr, [
+ 0, -1, cbid, script.selection[0], script.selection[1], script.selection[2], script.instr, automating, script.crossfades[0], script.crossfades[1], (noCheckpoint) ? 1 : 0
+ ]);
+ }, script.automation);
+ }
+ }
+
+ this.applyScript = async function(script, audition) {
+ if (playing) return;
+ scriptStack = [];
+ if (Array.isArray(script)) {
+ if (audition) {
+ return self.errorHandler("Only single scripts can be auditioned");
+ }
+ scriptStack = script;
+ } else {
+ scriptStack = [script];
+ }
+ if (self.storage.autosave && !audition) {
+ self.saveFile(null, function() {
+ applyScript(audition, true);
+ });
+ } else {
+ applyScript(audition, true);
+ }
+ };
+
+ async function innerCommit() {
+ if (playing) return;
+ if (!self.currentTransform) return;
+ var s = self.waveform.selected;
+ if (s[0] == s[1]) {
+ s[0] = 0;
+ s[1] = 1;
+ }
+ if (!fftsizeCheck(s, self.waveform.duration)) {
+ return self.errorHandler("Length too short for this transform");
+ }
+ self.watchdog.start("commit");
+ self.setPlaying(true);
+ self.ui.setLoadingStatus(true, true, null);
+ var calls = getAutomationData(s[0], s[1]);
+
+ self.currentTransform.saveState();
+ var state = await self.currentTransform.getState();
+ state.type = "transform";
+ state.automation = calls;
+ state.crossfades = self.ui.getCrossFadeValues();
+ state.selection = [s[0], s[1], s[2]];
+ state.instanceIndex = instanceIndex;
+ pushOperationLog(state);
+
+ handleAutomation(function(automating){
+ var cbid = app.createCallback(function(ndata) {
+ self.watchdog.stop();
+ self.ui.setLoadingStatus(false);
+ self.setPlaying(false);
+ if (ndata.status > 0) {
+ globalCallbackHandler(ndata);
+ } else {
+ var text;
+ if (ndata.status == -2) {
+ text = "Resulting file is too large";
+ }
+ self.errorHandler(text);
+ }
+ });
+ errorState = "Transform commit error";
+ app.insertScore("twst_commit", [0, -1, cbid, s[0], s[1], s[2], self.currentTransform.instr, automating, state.crossfades[0],state.crossfades[1]]);
+ }, calls);
+ }
+
+ this.commit = async function() {
+ if (!waveformLoaded[instanceIndex]) return;
+ if (self.storage.autosave) {
+ self.saveFile(null, function() {
+ innerCommit();
+ });
+ } else {
+ innerCommit();
+ }
+ };
+
+ this.loadTransforms = function(transform) {
+ if (transform) {
+ var developObj;
+ for (var t in twirl.appdata.transforms) {
+ if (twirl.appdata.transforms[t].name == "Develop") {
+ developObj = twirl.appdata.transforms[t];
+ break;
+ }
+ }
+ if (!developObj) {
+ developObj = {name: "Develop", contents: []};
+ twirl.appdata.transforms.push(developObj);
+ } else {
+ for (var c in developObj.contents) {
+ if (developObj.contents[c].name == transform.name) {
+ delete developObj.contents[c];
+ }
+ }
+ }
+ developObj.contents.push(transform);
+ }
+
+ $("#twist_panetree").empty();
+ var ttv = new twirl.transform.TreeView({
+ element: $("#twist_panetree"),
+ items: twirl.appdata.transforms,
+ click: function(definition, path) {
+ if (twist.currentTransform) {
+ twist.currentTransform.remove();
+ }
+ twist.currentTransform = new twirl.transform.Transform({
+ element: $("#twist_controls_inner"),
+ definition: definition,
+ splineElement: $("#twist_splines"),
+ useStorage: true,
+ path: path,
+ otherInstanceNamesFunc: function() {
+ return twist.otherInstanceNames;
+ },
+ instancesFunc: function() {
+ return twist.waveforms;
+ },
+ getRegionFunc: function() {
+ return twist.waveform.getRegion();
+ },
+ getDurationFunc: function() {
+ return twist.waveform.getDuration();
+ },
+ onHideAutomation: function() {
+ twist.ui.deleteSupressed = false;
+ console.log("twist.ui.deleteSupressed", twist.ui.deleteSupressed);
+ },
+ onShowAutomation: function() {
+ twist.ui.deleteSupressed = true;
+ console.log("twist.ui.deleteSupressed", twist.ui.deleteSupressed);
+ },
+ host: twist
+ });
+ }
+ });
+ };
+
+ this.createEmpty = function(name, duration, channels) {
+ if (name.trim() == "") {
+ name = "New file";
+ }
+ var cbid = app.createCallback(async function(ndata) {
+ twist.waveformTab.text(name);
+ await globalCallbackHandler(ndata);
+ if (twist.currentTransform) {
+ twist.currentTransform.refresh();
+ }
+ waveformFiles[instanceIndex] = name;
+ waveformLoaded[instanceIndex] = true;
+ twist.ui.setLoadingStatus(false);
+ });
+ twist.ui.hidePrompt();
+ twist.ui.setLoadingStatus(true, false, "Creating");
+ app.insertScore("twst_createempty", [0, 1, cbid, duration, channels]);
+ };
+
+ this.setVisible = function(state) {
+ twist.visible = state;
+ var el = $("#twist");
+ if (state) {
+ el.show();
+ } else {
+ el.hide();
+ }
+ };
+
+ this.editInTwigs = function() {
+ if (!window.twigs) {
+ return twirl.prompt.show("twigs is unavailable in this session");
+ }
+ twirl.loading.show("Processing");
+ var cbid = app.createCallback(function(ndata){
+ twirl.loading.hide();
+ twigs.loadFileFromFtable(waveformFiles[instanceIndex], ndata.tables, function(ldata){
+ if (ldata.status > 0) {
+ self.setVisible(false);
+ twigs.setVisible(true);
+ }
+ }, onSave);
+ });
+ app.insertScore("twst_getbuffers", [0, 1, cbid]);
+ };
+
+ this.loadFileFromClipboard = function() {
+ if (!twist.hasClipboard) {
+ return twirl.prompt.show("Cannot create: clipboard is empty");
+ }
+ errorState = "File loading error";
+ twirl.loading.show("Loading");
+ var cbid = app.createCallback(async function(ndata){
+ self.waveformTab.text("Clipboard");
+ await globalCallbackHandler(ndata);
+ waveformFiles[instanceIndex] = "Clipboard";
+ waveformLoaded[instanceIndex] = true;
+ twirl.loading.hide();
+ });
+ app.insertScore("twst_loadclipboard", [0, 1, cbid]);
+ };
+
+ this.loadFileFromFtable = function(name, tables, onComplete, onSaveFunc) {
+ errorState = "File loading error";
+ twirl.loading.show("Loading file");
+
+ var cbid = app.createCallback(async function(ndata){
+ twirl.loading.hide();
+ if (ndata.status > 0) {
+ if (waveformTabs.length == 0) {
+ self.createNewInstance(true);
+ instanceIndex = 0;
+ }
+ self.waveformTab.text(name);
+ waveformLoaded[instanceIndex] = true;
+ await globalCallbackHandler(ndata);
+ if (self.currentTransform) {
+ self.currentTransform.refresh();
+ }
+ waveformFiles[instanceIndex] = name;
+ self.ui.hidePrompt();
+ onSave = onSaveFunc;
+ } else if (ndata.status == -1) {
+ twirl.prompt.show("File not valid");
+ } else if (ndata.status == -2) {
+ twirl.prompt.show("File too large");
+ } else {
+ twirl.prompt.show("File loading error");
+ }
+ if (onComplete) {
+ onComplete(ndata);
+ }
+ });
+ var call = [0, 1, cbid];
+ for (let t of tables) {
+ call.push(t);
+ }
+ app.insertScore("twst_loadftable", call);
+ };
+
+
+ async function handleFileDrop(e, obj) {
+ e.preventDefault();
+ if (!e.originalEvent.dataTransfer && !e.originalEvent.files) {
+ return;
+ }
+ if (e.originalEvent.dataTransfer.files.length == 0) {
+ return;
+ }
+ self.ui.hidePrompt();
+ self.ui.setLoadingStatus(true, true, "Loading");
+ for (const item of e.originalEvent.dataTransfer.files) {
+ if (!twirl.audioTypes.includes(item.type)) {
+ return self.errorHandler("Unsupported file type", self.ui.showLoadNewPrompt);
+ }
+ if (item.size > twirl.maxFileSize) {
+ return self.errorHandler("File too large", self.ui.showLoadNewPrompt);
+ }
+ errorState = "File loading error";
+ var content = await item.arrayBuffer();
+ const buffer = new Uint8Array(content);
+ await app.writeFile(item.name, buffer);
+ var cbid = app.createCallback(async function(ndata){
+ await app.unlinkFile(item.name);
+ if (ndata.status == -1) {
+ return self.errorHandler("File not valid", self.ui.showLoadNewPrompt);
+ } else if (ndata.status == -2) {
+ return self.errorHandler("File too large", self.ui.showLoadNewPrompt);
+ } else {
+ self.waveformTab.text(item.name);
+ await globalCallbackHandler(ndata);
+ if (self.currentTransform) {
+ self.currentTransform.refresh();
+ }
+ waveformFiles[instanceIndex] = item.name;
+ waveformLoaded[instanceIndex] = true;
+ self.ui.hidePrompt();
+ self.ui.setLoadingStatus(false);
+ onSave = false;
+ }
+ });
+ app.insertScore("twst_loadfile", [0, 1, cbid, item.name]);
+ }
+ }
+
+ async function globalCallbackHandler(ndata) {
+ if (ndata.status && ndata.status <= 0) {
+ var text;
+ if (ndata.status == -2) {
+ text = "Resulting file would be too large";
+ }
+ self.errorHandler(text);
+ return;
+ }
+
+ self.watchdog.start("refresh");
+
+ if (ndata.hasOwnProperty("undolevel")) {
+ self.undoLevel = ndata.undolevel;
+ }
+
+ if (ndata.hasOwnProperty("delete")) {
+ if (typeof(ndata.delete) == "string") {
+ app.unlinkFile(ndata.delete);
+ } else {
+ for (let d of ndata.delete) {
+ app.unlinkFile(d);
+ }
+ }
+ }
+
+ if (ndata.hasOwnProperty("selstart")) {
+ self.waveform.setSelection(ndata.selstart, ndata.selend);
+ }
+
+ if (ndata.hasOwnProperty("waveL")) {
+ self.waveform.cover(true);
+ errorState = "Overview refresh error";
+ setTimeout(async function(){
+ var wavedata = [];
+ var tbL = await app.getTable(ndata.waveL);
+ wavedata.push(tbL);
+ if (ndata.hasOwnProperty("waveR")) {
+ var tbR = app.getTable(ndata.waveR);
+ wavedata.push(tbR);
+ }
+ self.waveform.setData(wavedata, ndata.duration);
+ self.waveform.cover(false);
+ }, 10);
+ }
+ self.watchdog.stop();
+ }
+
+ this.bootAudio = async function(twine) {
+ var channelDefaultItems = ["dcblockoutputs", "tanhoutputs", "maxundo"];
+
+ for (var i of channelDefaultItems) {
+ if (self.storage.hasOwnProperty(i)) {
+ app.setControlChannel("twst_" + i, self.storage[i]);
+ }
+ }
+ sr = await app.getCsound().getSr();
+ if (!twine) self.ui.postBoot();
+ };
+
+ var booted = false;
+ this.boot = function(twine) {
+ if (booted) return;
+ booted = true;
+ twirl.boot();
+ self.ui.boot();
+
+ Object.defineProperty(this, "waveformTab", {
+ get: function() { return waveformTabs[instanceIndex]; },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "otherInstanceNames", {
+ get: function() {
+ var data = {};
+ for (var i in waveformTabs) {
+ if (i != instanceIndex) {
+ data[i] = waveformTabs[i].text();
+ }
+ }
+ return data
+ },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "instanceIndex", {
+ get: function() {
+ return instanceIndex
+ },
+ set: function(x) {}
+ });
+
+ Object.defineProperty(this, "undoLevel", {
+ get: function() {
+ return undoLevels[instanceIndex];
+ },
+ set: function(x) {
+ undoLevels[instanceIndex] = x;
+ }
+ });
+
+ Object.defineProperty(this, "waveform", {
+ get: function() { return self.waveforms[instanceIndex]; },
+ set: function(x) {
+ if (instanceIndex != x) {
+ if (self.waveformTab) {
+ self.waveformTab.removeClass("wtab_selected").addClass("wtab_unselected");
+ }
+ if (self.waveform) {
+ self.waveform.hide();
+ }
+ var cbid = app.createCallback(function(ndata){
+ if (ndata.status == 1) {
+ instanceIndex = x;
+ self.waveformTab.removeClass("wtab_unselected").addClass("wtab_selected");
+ self.waveform.show();
+ if (self.currentTransform) {
+ self.currentTransform.refresh();
+ self.currentTransform.redraw(self.waveform.getRegion());
+ }
+ } else {
+ self.ui.showPrompt("Error changing instance");
+ }
+ });
+ app.insertScore("twst_setinstance", [0, 1, cbid, x]);
+
+ }
+ }
+ });
+
+ if (!twine) {
+ $("<td />").text("+").click(function() {
+ self.createNewInstance();
+ }).appendTo("#twist_waveform_tabs").addClass("wtab_selected");
+
+ $("body").on("dragover", function(e) {
+ e.preventDefault();
+ e.originalEvent.dataTransfer.effectAllowed = "all";
+ e.originalEvent.dataTransfer.dropEffect = "copy";
+ return false;
+ }).on("dragleave", function(e) {
+ e.preventDefault();
+ }).on("drop", function(e) {
+ handleFileDrop(e, self);
+ });
+ } else {
+ self.twine = twine;
+ }
+
+ self.loadTransforms();
+ };
+
+}; // end twist
+
+function twist_startisolated() {
+ var csOptions = ["--omacro:TWST_FAILONLAG=1"];
+ window.twist = new Twist();
+ twist.setVisible(true);
+ window.app = new CSApplication({
+ csdUrl: "twist.csd",
+ csOptions: csOptions,
+ onPlay: function () {
+ twist.bootAudio();
+ },
+ errorHandler: twist.errorHandler,
+ ioReceivers: {percent: twist.ui.setPercent}
+ });
+
+ $("#twist_start").click(function() {
+ $(this).hide();
+ twist.boot();
+ twist.ui.setLoadingStatus(true, false, "Preparing audio engine");
+ app.play(function(text){
+ twist.ui.setLoadingStatus(true, false, text);
+ twirl.latencyCorrection = twirl.audioContext.outputLatency * 1000;
+ }, twirl.audioContext);
+ });
+}
+
+ \ No newline at end of file
diff --git a/site/app/twist/twist_ui.js b/site/app/twist/twist_ui.js
new file mode 100644
index 0000000..08e5fe1
--- /dev/null
+++ b/site/app/twist/twist_ui.js
@@ -0,0 +1,674 @@
+var twistTopMenuData = [
+ {name: "File", contents: [
+ {name: "New", disableOnPlay: true, shortcut: {name: "Ctrl N", ctrlKey: true, key: "n"}, click: function(twist) {
+ twist.createNewInstance();
+ }, condition: function(twist) {
+ return (!twist.twine);
+ }},
+ {name: "Save", disableOnPlay: true, shortcut: {name: "Ctrl S", ctrlKey: true, key: "s"}, click: function(twist) {
+ twist.saveFile();
+ }},
+ {name: "Close", disableOnPlay: true, shortcut: {name: "Ctrl W", ctrlKey: true, key: "w"}, click: function(twist) {
+ twist.closeInstance();
+ }, condition: function(twist) {
+ return (!twist.twine && twist.waveforms.length != 1);
+ }},
+ {name: "Edit in twigs", click: function(twist) {
+ twist.editInTwigs();
+ }, condition: function(twist) {
+ return window.hasOwnProperty("Twigs");
+ }}
+ ]},
+ {name: "Edit", contents: [
+ {name: "Undo", disableOnPlay: true, shortcut: {name: "Ctrl Z", ctrlKey: true, key: "z"}, click: function(twist) {
+ twist.undo();
+ }, condition: function(twist) {
+ return (twist.storage.maxundo > 0 && twist.undoLevel > 0);
+ }},
+ {preset: "divider"},
+ {name: "Copy", disableOnPlay: true, shortcut: {name: "Ctrl C", ctrlKey: true, key: "c"}, click: function(twist) {
+ twist.copy();
+ }},
+ {name: "Cut", disableOnPlay: true, shortcut: {name: "Ctrl X", ctrlKey: true, key: "x"}, click: function(twist) {
+ twist.cut();
+ }},
+ {name: "Paste", disableOnPlay: true, shortcut: {name: "Ctrl V", ctrlKey: true, key: "v"}, click: function(twist) {
+ twist.paste();
+ }, condition: function(twist) {
+ return twist.hasClipboard;
+ }},
+ {name: "Paste special", disableOnPlay: true, shortcut: {name: "Ctrl shift V", ctrlKey: true, shiftKey: true, key: "v"}, click: function() {
+ twist.pasteSpecial();
+ }, condition: function(twist) {
+ return twist.hasClipboard;
+ }},
+ {name: "Trim", disableOnPlay: true, shortcut: {name: "T", key: "t"}, click: function() {
+ twist.trim();
+ }},
+ {name: "Delete", disableOnPlay: true, shortcut: {name: "Del", key: "delete"}, keyCondition: function(twist) {
+ return !twist.ui.deleteSupressed;
+ }, click: function(twist) {
+ twist.delete();
+ }},
+ {preset: "divider"},
+ {name: "Select all", shortcut: {name: "Ctrl A", ctrlKey: true, key: "a"}, click: function(twist) {
+ twist.selectAll();
+ }},
+ {name: "Select to end", shortcut: {name: "W", key: "w"}, click: function(twist) {
+ twist.selectToEnd();
+ }},
+ {name: "Select from start", shortcut: {name: "Q", key: "q"}, click: function(twist) {
+ twist.selectFromStart();
+ }},
+ {name: "Select none", shortcut: {name: "Ctrl M", ctrlKey: true, key: "m"}, click: function(twist) {
+ twist.selectNone();
+ }},
+ {name: "Move to next transient", shortcut: {name: "[",key: "["}, click: function(twist) {
+ twist.moveToNextTransient();
+ }},
+ {name: "Select to next transient", shortcut: {name: "]",key: "]"}, click: function(twist) {
+ twist.selectToNextTransient();
+ }}
+ ]},
+ {name: "View", contents: [
+ {name: "Zoom selection", shortcut: {name: "Z", key: "z"}, click: function(twist) {
+ twist.waveform.zoomSelection();
+ }},
+ {name: "Zoom in", shortcut: {name: "+", key: "+"}, click: function(twist) {
+ twist.waveform.zoomIn();
+ }},
+ {name: "Zoom out", shortcut: {name: "-", key: "-"}, click: function(twist) {
+ twist.waveform.zoomOut();
+ }},
+ {name: "Show all", shortcut: {name: "0", key: "0"}, click: function(twist) {
+ twist.waveform.setRegion(0, 1);
+ }},
+ {preset: "divider"},
+ {name: "Toggle analysis", click: function(twist){
+ twist.ui.toggleScope();
+ }},
+ {name: "Toggle layout", shortcut: {name: "L", key: "l"}, click: function(twist){
+ twist.ui.toggleLayout();
+ }},
+ ]},
+ {name: "Action", contents: [
+ {name: "Play/stop", shortcut: {name: "Space", key: " "}, click: function(twist) {
+ if (twist.isPlaying()) {
+ twist.stop();
+ } else {
+ twist.play();
+ }
+ }},
+ {name: "Audition", disableOnPlay: true, shortcut: {name: "Enter", key: "enter"}, click: function(twist) {
+ twist.audition();
+ }},
+ {name: "Commit", disableOnPlay: true, shortcut: {name: "Alt enter", altKey: true, key: "enter"}, click: function(twist) {
+ twist.commit();
+ }},
+ {name: "Record", disableOnPlay: true, shortcut: {name: "R", key: "r"}, click: function(twist) {
+ twist.record();
+ }},
+ {preset: "divider"},
+ {name: "Scripting", shortcut: {name: "Ctrl K", ctrlKey: true, key: "k"}, click: function(twist) {
+ twist.ui.scriptEdit();
+ }},
+ {name: "Developer", shortcut: {name: "Ctrl L", ctrlKey: true, key: "l"}, click: function(twist) {
+ twist.ui.developerConsole();
+ }},
+
+ ]},
+ {name: "Transform", contents: [
+ {name: "Randomise", shortcut: {name: "Z", key: "z"}, click: function(twist) {
+ twist.currentTransform.randomise();
+ }, condition: function(twist) {
+ return (twist.currentTransform) ? true : false;
+ }},
+ {name: "Reset", shortcut: {name: "R", key: "r"}, click: function(twist) {
+ twist.currentTransform.reset();
+ }, condition: function(twist) {
+ return (twist.currentTransform) ? true : false;
+ }},
+ {name: "Hide automation", shortcut: {name: "H", key: "h"}, click: function(twist) {
+ twist.currentTransform.hideAllAutomation();
+ }, condition: function(twist) {
+ return (twist.currentTransform) ? true : false;
+ }}
+ ]},
+ {name: "Options", contents: [
+ {name: "Settings", click: function(twist) {
+ twist.ui.showSettings();
+ }}
+ ]},
+ {name: "Help", contents: [
+ {name: "Help", click: function(twist){
+ $("#twist_documentation")[0].click();
+ }},
+ {name: "Developer reference", click: function(twist){
+ $("#twist_developer_documentation")[0].click();
+ }},
+ {name: "Report bug", click: function(twist){
+ $("#twist_reportbug")[0].click();
+ }},
+ {name: "Contact owner", click: function(twist){
+ $("#twist_contact")[0].click();
+ }},
+ {name: "Submit transform code", click: function(twist){
+ $("#twist_developer_submit")[0].click();
+ }},
+ {name: "About", click: function(twist) {
+ twist.ui.showAbout();
+ }},
+ ]},
+];
+
+
+var TwistUI = function(twist) {
+ var self = this;
+ var scope;
+ var elCrossfades = [];
+ var topMenu = new twirl.TopMenu(twist, twistTopMenuData, $("#twist_menubar"));
+ this.deleteSupressed = false;
+
+ this.setPlaying = function(state) {
+ if (scope) {
+ scope.setPlaying(state);
+ }
+ if (state) {
+ $(".twist_scriptbutton").hide();
+ $("#twist_scriptstop").show();
+ } else {
+ $(".twist_scriptbutton").show();
+ $("#twist_scriptstop").hide();
+ }
+ };
+
+ this.getCrossFadeValues = function() {
+ return [elCrossfades[0].val(), elCrossfades[1].val()];
+ };
+
+
+ var contractedWaveform = false;
+ function setLayout() {
+ var elViews = $("#twist_views");
+ var elWave = $("#twist_waveforms");
+ var elSpline = $("#twist_splines");
+ var elScope = $("#twist_analyser");
+ var elControls = $("#twist_controls");
+
+ if (contractedWaveform) {
+ elViews.css({height: "20%"});
+ elControls.css({top: "20%"});
+ } else {
+ elViews.css({height: "50%"});
+ elControls.css({top: "50%"});
+ }
+
+ if (scope) {
+ elScope.css({height: "40%", top: "0px"});
+ elWave.css({top: "40%"});
+ elSpline.css({top: elWave.css("top")});
+ } else {
+ elWave.css({top: "0px"});
+ elSpline.css({top: "0px"});
+ }
+
+ twist.redraw();
+ }
+
+ this.toggleLayout = function() {
+ contractedWaveform = !contractedWaveform;
+ setLayout();
+ };
+
+ this.toggleScope = function(noSaveState) {
+ var state;
+ if (!scope) {
+ state = true;
+ var elScope = $("<div />").addClass("twist_scope").appendTo($("#twist_analyser"));
+ var type = (twist.storage.scopeType) ? twist.storage.scopeType : 0;
+ scope = new Analyser(
+ type, twist, elScope, app
+ );
+ $("#twist_analyser").show();
+ } else {
+ $("#twist_analyser").hide();
+ state = false;
+ scope.remove();
+ delete scope;
+ scope = null;
+ }
+
+ if (!noSaveState) {
+ twist.storage.showScope = state;
+ twist.saveStorage();
+ }
+ setLayout();
+ };
+
+
+ this.tooltip = twirl.tooltip;
+
+ this.boot = function() {
+ if (twist.storage.hasOwnProperty("showShortcuts")) {
+ if (twist.storage.showShortcuts) {
+ $("#twist_wavecontrols_inner").show();
+ } else {
+ $("#twist_wavecontrols_inner").hide();
+ }
+ }
+
+ if (twist.storage.develop) {
+ if (twist.storage.develop.csound) {
+ $("#twist_devcsound").val(twist.storage.develop.csound);
+ }
+ if (twist.storage.develop.json) {
+ $("#twist_devjson").val(twist.storage.develop.json);
+ }
+ }
+ $("#loading_background").css("opacity", 1).animate({opacity: 0.2}, 1000);
+ };
+
+ this.postBoot = function() {
+ self.setLoadingStatus(false);
+
+ if (!twist.storage.hasOwnProperty("firstLoadDone")) {
+ twist.storage.firstLoadDone = true;
+ twist.saveStorage();
+ self.showPrompt($("#twist_welcome").detach().show(), twist.createNewInstance);
+ } else {
+ twist.createNewInstance();
+ }
+
+ if (twist.storage.showScope) {
+ self.toggleScope(true);
+ }
+ };
+
+ this.hidePrompt = function() {
+ twirl.prompt.hide();
+ };
+
+ this.showPrompt = function(text, oncomplete, noButton) {
+ twirl.prompt.show(text, oncomplete, noButton);
+ if (twist.playheadInterval) {
+ twist.waveform.movePlayhead(0);
+ clearInterval(twist.playheadInterval);
+ }
+ if (self.waveform) {
+ self.waveform.cover(false);
+ }
+ };
+
+
+ this.showLoadNewPrompt = function() {
+ var elNewFile = $("<div />").css({"font-size": "var(--fontSizeDefault)"});
+ if (twist.hasClipboard) {
+ $("<button />").text("Create from clipboard").appendTo(elNewFile).click(function(){
+ twist.loadFileFromClipboard();
+ twirl.prompt.hide();
+ });
+ }
+
+ elNewFile.append($("<h3 />").text("Drag an audio file here to load")).append($("<p />").text("or"));
+
+ var elEmpty = $("<div />").appendTo(elNewFile);
+ $("<h4 />").text("Create an empty file").css("cursor", "pointer").appendTo(elEmpty);
+
+ var tpDuration = new twirl.transform.Parameter({
+ definition: {name: "Duration", min: 0.1, max: 60, dfault: 10, automatable: false, fireChanges: false},
+ host: twist
+ });
+
+ var tpChannels = new twirl.transform.Parameter({
+ definition: {name: "Channels", min: 1, max: 2, dfault: 2, step: 1, automatable: false, fireChanges: false},
+ host: twist
+ });
+
+ var tpName = new twirl.transform.Parameter({
+ definition: {name: "Name", type: "string", dfault: "New file", fireChanges: false},
+ host: twist
+ });
+
+ var tb = $("<tbody />");
+ $("<table />").append(tb).css("margin", "0 auto").appendTo(elEmpty);
+ tb.append(tpDuration.getElementRow(true)).append(tpChannels.getElementRow(true)).append(tpName.getElementRow(true));
+
+ $("<button />").text("Create").appendTo(elEmpty).click(function() {
+ twist.createEmpty(tpName.getValue(), tpDuration.getValue(), tpChannels.getValue());
+ });
+
+
+ self.showPrompt(elNewFile, null, true);
+ }
+
+
+ this.setTheme = function(name, nosave) {
+ twirl.setTheme(name, nosave);
+ };
+
+ this.showSettings = function() {
+ var settings = [
+ {
+ name: "Commit history limit",
+ description: "Number of transform states to store (can be accessed via the script editor). 0 = infinite",
+ min: 0, max: 32, step: 1, dfault: 16, storageKey: "commitHistoryLevel"
+ },
+ {
+ name: "Undo levels",
+ description: "Number of undo levels stored. Large numbers may affect memory usage",
+ min: 0, max: 32, step: 1, dfault: 2, storageKey: "maxundo",
+ onChange: function(val) {
+ app.setControlChannel("twst_maxundo", val);
+ }
+ },
+ {
+ name: "Analysis type",
+ description: "Type of analysis to be shown",
+ options: ["Frequency", "Oscilloscope"],
+ dfault: 0,
+ storageKey: "scopeType",
+ onChange: function(val) {
+ if (scope) scope.setType(val);
+ }
+ },
+ {
+ name: "Show shortcuts",
+ description: "Show shortcuts toolbar below waveform",
+ bool: true,
+ storageKey: "showShortcuts",
+ dfault: 1,
+ onChange: function(val) {
+ if (val) {
+ $("#twist_wavecontrols_inner").show();
+ } else {
+ $("#twist_wavecontrols_inner").hide();
+ }
+ }
+ },
+ {
+ name: "DC block processing",
+ description: "Apply DC blocking to all processing",
+ bool: true,
+ storageKey: "dcblockoutputs",
+ dfault: 0,
+ onChange: function(val) {
+ app.setControlChannel("twst_dcblockoutputs", val);
+ }
+ },
+ {
+ name: "Tanh limit all processing",
+ description: "Apply tanh to all processing",
+ bool: true,
+ storageKey: "tanhoutputs",
+ dfault: 0,
+ onChange: function(val) {
+ app.setControlChannel("twst_tanhtanhoutputs", val);
+ }
+ },
+ {
+ name: "Autosave before each commit",
+ description: "Automatically save file locally before each new commit",
+ bool: true,
+ storageKey: "autosave",
+ dfault: 0
+ }
+ ];
+ twirl.showSettings(twist, settings);
+ };
+
+
+ this.setPercent = function(percent) {
+ twist.watchdog.setActive(percent);
+ twirl.loading.setPercent(percent);
+ };
+
+ this.setLoadingStatus = function(state, showpercent, text) {
+ if (state) {
+ twirl.loading.show(text, showpercent);
+ } else {
+ twirl.loading.hide();
+ }
+ };
+
+ this.scriptEdit = function() {
+ var el = $("#twist_script").show();
+ var te = $("#twist_scriptsource");
+
+
+ function runScript(audition) {
+ try {
+ var script = JSON.parse(te.val());
+ } catch (e) {
+ twist.errorHandler("Cannot parse script: " + e);
+ return false;
+ }
+ twist.applyScript(script, audition);
+ return true;
+ };
+
+
+ $("#twist_scriptaudition").unbind().click(function(){
+ runScript(true);
+ });
+
+ $("#twist_scriptstop").unbind().click(function(){
+ twist.stop();
+ });
+
+ $("#twist_scriptcommit").unbind().click(function(){
+ if (runScript(false)) {
+ el.hide();
+ }
+ });
+
+ $("#twist_scriptloadlast").unbind().click(function(){
+ te.val(JSON.stringify(twist.lastOperation(), null, 2));
+ });
+
+ $("#twist_scriptloadall").unbind().click(function(){
+ te.val(JSON.stringify(twist.operationLog, null, 2));
+ });
+
+ $("#twist_scriptcancel").unbind().click(function(){
+ el.hide();
+ });
+ };
+
+ this.developerConsole = function() {
+ $("#twist_developer").show();
+ $("#twist_inject_devcsound").click(async function() {
+ var code = $("#twist_devcsound").val();
+ var result = await app.compileOrc(code);
+ if (result == 0) {
+ if (!twist.storage.develop) {
+ twist.storage.develop = {};
+ }
+ twist.storage.develop.csound = code;
+ twist.saveStorage();
+ self.showPrompt("Successfully injected Csound code");
+ }
+ });
+ $("#twist_inject_devjson").click(async function() {
+ var code = $("#twist_devjson").val();
+ try {
+ var json = JSON.parse(code);
+ } catch (e) {
+ return twist.errorHandler("Cannot parse JSON: " + e);
+ }
+ try {
+ twist.loadTransforms(json);
+ } catch (e) {
+ return twist.errorHandler("Cannot load transform: " + e);
+ }
+ if (!twist.storage.develop) {
+ twist.storage.develop = {};
+ }
+ twist.storage.develop.json = code;
+ twist.saveStorage();
+ self.showPrompt("Successfully injected transform definition");
+ });
+ $("#twist_exit_devcode").click(async function() {
+ $("#twist_developer").hide();
+ });
+ };
+
+ function buildWavecontrols() {
+ var el = $("#twist_wavecontrols_inner");
+ var onPlayDisables = [];
+
+ var play = twirl.createIcon({label: "Play", icon: "play", label2: "Stop", icon2: "stop", click: function(obj){
+ if (twist.isPlaying()) {
+ twist.stop();
+ } else {
+ twist.play();
+ }
+ }});
+ var audition = twirl.createIcon({label: "Audition", icon: "audition", label2: "Stop", icon2: "stop", click: function(obj){
+ if (twist.isPlaying()) {
+ twist.stop();
+ } else {
+ twist.audition();
+ }
+ }});
+
+
+ var record = twirl.createIcon({label: "Record", icon: "record", label2: "Stop", icon2: "stop", click: function() {
+ if (twist.isPlaying()) {
+ twist.stop();
+ } else {
+ twist.record();
+ }
+ }});
+
+ var items = [
+ {label: "Rewind", icon: "rewind", disableOnPlay: true, click: function() { twist.moveToStart() }},
+ play,
+ audition,
+ {label: "Commit", icon: "commit", disableOnPlay: true, click: function() { twist.commit() }},
+ record,
+ {preset: "spacer"},
+ {label: "Cut", icon: "cut", disableOnPlay: true, click: function() { twist.cut() }},
+ {label: "Copy", icon: "copy", disableOnPlay: true, click: function() { twist.copy() }},
+ {label: "Paste", icon: "paste", disableOnPlay: true, click: function() { twist.paste() }},
+ {label: "Paste special", icon: "pasteSpecial", disableOnPlay: true, click: function() { twist.pasteSpecial() }},
+ {label: "Trim", icon: "trim", disableOnPlay: true, click: function() { twist.trim() }},
+ {preset: "spacer"}
+ ];
+
+ for (let i of items) {
+ var icon;
+ var td = $("<td />");
+ if (i.preset && i.preset == "spacer") {
+ td.css("width", "20px");
+ } else {
+ if (i.icon) {
+ icon = twirl.createIcon(i);
+ if (i.disableOnPlay) {
+ onPlayDisables.push(icon);
+ }
+ } else {
+ icon = i;
+ }
+ td.append(icon.el);
+ }
+ td.appendTo(el);
+ }
+
+ twist.onPlays.push(async function(playing, auditioning, recording) {
+ if (playing) {
+ if (auditioning) {
+ play.setActive(false);
+ audition.setState(false);
+ record.setActive(false);
+ } else if (recording) {
+ audition.setActive(false);
+ play.setActive(false);
+ record.setState(false);
+ } else {
+ audition.setActive(false);
+ play.setState(false);
+ record.setActive(false);
+ }
+ } else {
+ audition.setActive(true);
+ play.setActive(true);
+ play.setState(true);
+ audition.setState(true);
+ record.setActive(true);
+ record.setState(true);
+ }
+ for (let o of onPlayDisables) {
+ o.setActive(!playing);
+ }
+ });
+
+ for (let e of ["In", "Out"]) {
+ let elRange = $("<input />").addClass("twirl_slider").attr("type", "range").attr("min", 0).attr("max", 0.45).attr("step", 0.00001).val(0).on("input", function() {
+ if (e == "In") {
+ twist.waveform.crossFadeInRatio = $(this).val();
+ } else {
+ twist.waveform.crossFadeOutRatio = $(this).val();
+ }
+ });
+ elCrossfades.push(elRange);
+ $("<td />").addClass("crossfade").append($("<div />").css("font-size", "var(--fontSizeSmall)").text("Crossfade " + e)).append(elRange).appendTo(el);
+ }
+
+ $("<td />").css("font-size", "var(--fontSizeSmall").append("Loop playback<br />").append(
+ $("<input />").addClass("tp_checkbox").attr("type", "checkbox").change(function(){
+ twist.playbackLoop = $(this).is(":checked");
+ })
+ ).appendTo(el);
+
+ };
+
+ function formatVersion(ver) {
+ ver = ver.toString();
+ var major = ver.substr(0, 1);
+ var remainder = ver.substr(1);
+ if (remainder.length == 2) {
+ return major + "." + remainder;
+ } else {
+ var mid = remainder.substr(1, 2);
+ var minor = remainder.substr(2);
+ return major + "." + mid + "." + minor;
+ }
+ }
+
+ this.showAbout = async function() {
+ var csVer = await app.getCsound().getVersion();
+ var apiVer = await app.getCsound().getAPIVersion();
+ var el = $("<div />");
+ var x = $("<h3 />").text("twist").appendTo(el);
+ $("<p />").css("font-size", "12px").text("By Richard Knight 2024").appendTo(el);
+ $("<p />").text("Version " + twist.version.toFixed(1)).appendTo(el);
+ $("<p />").text("Csound " + formatVersion(csVer) + "; API " + formatVersion(apiVer)).appendTo(el);
+
+ var skewMax = 30;
+ var skew = 0;
+ var skewDirection = true;
+ var twistInterval = setInterval(function(){
+ if (skewDirection) {
+ if (skew < skewMax) {
+ skew ++;
+ } else {
+ skewDirection = false;
+ }
+ } else {
+ if (skew > -skewMax) {
+ skew --;
+ } else {
+ skewDirection = true;
+ }
+ }
+ x.css("transform", "skewX(" + skew + "deg)");
+ }, 10);
+
+ self.showPrompt(el, function(){
+ clearInterval(twistInterval);
+ });
+ };
+
+
+ buildWavecontrols();
+}; \ No newline at end of file
diff --git a/site/app/twist/version notes.txt b/site/app/twist/version notes.txt
new file mode 100644
index 0000000..462fe92
--- /dev/null
+++ b/site/app/twist/version notes.txt
@@ -0,0 +1,11 @@
+0.1
+ transient detect movement
+ new transforms
+ feedback
+ convolution feedback
+ instance chopper
+ strobe
+ convolution impulses/preset sound loads
+ source release
+ filter apply mode
+ display csound version \ No newline at end of file
diff --git a/site/code/base.js b/site/code/base.js
new file mode 100644
index 0000000..847807f
--- /dev/null
+++ b/site/code/base.js
@@ -0,0 +1,60 @@
+var baseurl = "https://y.1bpm.net/csTest";
+
+function csound_ready(Csound) {
+ $("#loading").hide();
+ window.Csound = Csound;
+}
+
+function handleMessage(message) {
+ var msgbox = $("#csmessages");
+ msgbox.val(msgbox.val() + message + "\n");
+}
+
+
+async function make_instance() {
+ if (!window.csound) {
+ window.csound = await Csound({useWorker: false, useSAB: false});
+ }
+ window.csound.on("message", handleMessage);
+ return Promise.resolve();
+}
+
+async function copyUrlToLocal(url, name) {
+ const response = await fetch(url);
+ const bufferSrc = await response.arrayBuffer();
+ const buffer = new Uint8Array(bufferSrc);
+ await csound.fs.writeFile(name, buffer);
+ return Promise.resolve();
+}
+
+async function load_files(bug) {
+ await copyUrlToLocal(baseurl + "/vibe.csd", "vibe.csd");
+ await copyUrlToLocal(baseurl + "/input.mp3", "input.mp3");
+ return Promise.resolve();
+}
+
+
+async function play() {
+ $("#bug_status").text("Loading resources");
+ await make_instance();
+ await load_files();
+ await csound.compileCsd("vibe.csd");
+ await csound.setOption("-odac");
+ await csound.setOption("-b2048");
+ await csound.setOption("-m0");
+ await csound.setOption("-d");
+ await csound.setOption("--ksmps=128");
+
+ await csound.start();
+ return Promise.resolve();
+}
+
+
+
+$(function(){
+
+ $("#bug_play").click(async function() {
+ await play();
+ });
+
+});
diff --git a/site/code/csound.js b/site/code/csound.js
new file mode 100644
index 0000000..fc1706e
--- /dev/null
+++ b/site/code/csound.js
@@ -0,0 +1,903 @@
+/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(".");d=d||goog.global;a[0]in d||"undefined"==typeof d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};
+goog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE="en";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;
+goog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(".")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\w+/_-]+[=]{0,2}$/;
+goog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
+goog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");
+goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;
+goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};
+goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};
+goog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error('Module with namespace "'+a+'" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error('Module with namespace "'+
+a+'" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0});
+goog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};
+goog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath="";goog.abstractMethod=function(){throw Error("unimplemented abstract method");};
+goog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME="goog";
+goog.hasBadLetScoping=null;
+goog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if("function"===typeof a)d=a.call(void 0,d);else if("string"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error("Invalid module definition");var e=goog.moduleLoaderState_.moduleName;if("string"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&
+Object.seal&&"object"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name "'+e+'"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};
+goog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};
+goog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};
+goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};
+goog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};
+goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};
+goog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with ".". You passed: '+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split("-");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join("-")};d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};
+goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};
+goog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,"&lt;"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&apos;/g,"'").replace(/&quot;/g,'"').replace(/&amp;/g,"&"));b&&(a=a.replace(/\{\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};
+goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);
+goog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;
+goog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
+goog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};
+goog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};
+!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"").match(/Edge\/(\d+)(\.\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?"complete"!=a.readyState:"loading"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&"string"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=
+goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?");d=-1==d?c.length:d;if("base.js"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\/(SCRIPT)/ig,"\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=
+[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error("Unregonized namespace: "+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},
+goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=
+function(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error("Bad dependency path or symbol: "+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_("goog.require could not find: "+a)},goog.DebugLoader_.prototype.loadDeps_=
+function(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error("Cannot call pause after the call to load.");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error("Double call to loaded.");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,
+moduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||""})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error("Cannot register with defer after the call to load.");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};
+try{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==
+a.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?
+this.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=
+function(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf("://");0<=b&&(a=a.substring(b+3),b=a.indexOf("/"),0<=b&&(a=a.substring(b+1)));return a},
+goog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},
+goog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error("Callback key "+a+" does not exist (was base.js loaded more than once?).");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==
+b.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write "'+this.path+'" after document load');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&"complete"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?' nonce="'+c+'"':"";var f='<script src="'+this.path+'"'+
+c+(goog.Dependency.defer_?" defer":"")+' id="script-'+e+'">\x3c/script>';f+="<script"+c+">";f=goog.Dependency.defer_?f+("document.getElementById('script-"+e+"').onload = function() {\n goog.Dependency.callback_('"+e+"', this);\n};\n"):f+("goog.Dependency.callback_('"+e+"', document.getElementById('script-"+e+"'));");f+="\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement("script");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=
+c);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,
+b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(n,m){var l="",p=goog.getScriptNonce_();p&&(l=' nonce="'+p+'"');n=m?'<script type="module" crossorigin'+l+">"+m+"\x3c/script>":'<script type="module" crossorigin src="'+n+'"'+l+">\x3c/script>";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(n):n)}function c(n,m){var l=d.createElement("script");l.defer=!0;l.async=!1;l.type="module";l.setAttribute("crossorigin",
+!0);var p=goog.getScriptNonce_();p&&(l.nonce=p);m?l.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:l.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(n):n;d.head.appendChild(l)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);
+a.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_("'+g+'")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(n){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,n,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from "'+this.path+'"; goog.Dependency.callback_("'+h+'", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_("'+
+k+'")')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=
+e.transform(e.contents_),e.contents_&&(e.contents_+="\n//# sourceURL="+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var n=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(n));if(f)var m=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),m)});a.loaded()}}
+function d(){var n=goog.global.document,m=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(m);c()}),l=goog.getScriptNonce_();l="<script"+(l?' nonce="'+l+'"':"")+">"+goog.protectScriptTag_('goog.Dependency.callback_("'+m+'");')+"\x3c/script>";n.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,a.loaded()):
+a.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&("ActiveXObject"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){"interactive"==h.readyState&&(h.onreadystatechange=
+k,c(),a.resume());"function"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,
+c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?"goog.loadModule("+goog.global.JSON.stringify(a+"\n//# sourceURL="+this.path+"\n")+");":'goog.loadModule(function(exports) {"use strict";'+a+"\n;return exports});\n//# sourceURL="+this.path+"\n"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=
+b||[];a=a.replace(/\\/g,"/");var e=goog.normalizePath_(goog.basePath+a);d&&"boolean"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?
+new goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),
+goog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy("goog#base#devonly#eval")||{createScript:goog.identity_}};function atobPolyfill$$module$dist$__csound_wasm_inline(a){a=String(a).replace(/[=]+$/,"");1===a.length%4&&console.error("'atob' failed: The string to be decoded is not correctly encoded.");for(var b=0,c,d,e=0,f="";d=a.charAt(e++);~d&&(c=b%4?64*c+d:d,b++%4)&&(f+=String.fromCharCode(255&c>>(-2*b&6))))d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(d);return f}
+function bufferFromBrowser$$module$dist$__csound_wasm_inline(a){return"undefined"!=typeof AudioWorkletGlobalScope?atobPolyfill$$module$dist$__csound_wasm_inline(a):window.atob(a)}function __toArrayBuffer$$module$dist$__csound_wasm_inline(a){a=bufferFromBrowser$$module$dist$__csound_wasm_inline(a);for(var b=new Uint8Array(a.length),c=0;c<a.length;++c)b[c]=a.charCodeAt(c);return b.buffer}
+var $jscompDefaultExport$$module$dist$__csound_wasm_inline=()=>__toArrayBuffer$$module$dist$__csound_wasm_inline("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"),module$dist$__csound_wasm_inline=
+{};module$dist$__csound_wasm_inline.default=$jscompDefaultExport$$module$dist$__csound_wasm_inline;const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.proxy"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.endpoint"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.releaseProxy"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.thrown"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>"object"===typeof a&&null!==a||"function"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=
+{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&
+throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([["proxy",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],["throw",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);
+function expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener("message",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const m=h.slice(0,-1).reduce((p,q)=>p[q],a),l=h.reduce((p,q)=>p[q],a);switch(g){case "GET":var n=l;break;case "SET":m[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);
+n=!0;break;case "APPLY":n=l.apply(m,k);break;case "CONSTRUCT":const p=new l(...k);n=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case "ENDPOINT":const {port1:q,port2:u}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,u);n=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case "RELEASE":n=void 0;break;default:return}}catch(m){n={value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(n).catch(m=>
+({value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(m=>{const [l,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(m);b.postMessage(Object.assign(Object.assign({},l),{id:f}),p);"RELEASE"===g&&(b.removeEventListener("message",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return"MessagePort"===a.constructor.name}
+function closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error("Proxy has been released and is not useable");}
+function createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"RELEASE",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if("then"===
+g){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"GET",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,n]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,
+{type:"SET",path:[...b,g].map(m=>m.toString()),value:k},n).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"ENDPOINT"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if("bind"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,
+b.slice(0,-1));const [k,n]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"APPLY",path:b.map(m=>m.toString()),argumentList:k},n).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,
+{type:"CONSTRUCT",path:b.map(n=>n.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}
+function processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}
+function proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c="*"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}
+function toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:"HANDLER",name:b,value:d},e]}return[{type:"RAW",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}
+function fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case "HANDLER":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case "RAW":return a.value}}
+function requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener("message",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener("message",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}
+function generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;
+module$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;
+module$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};
+var LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b="log_with_warnings"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error("Invalid log level "+b+" allowed: "+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=
+function(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e="log_with_warnings"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>
+module$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split("{}");for(var k=[f.mockConsole,"%c"+b,c],n=0;n<h.length;n++)k.push(h[n]),void 0!==g[n]&&k.push(g[n]);if(h.length-1!==g.length)if("log_with_warnings"===f.logLevel)f.mockConsole.error("MissMatch amount of arguments");else if("log_raise_error"===f.logLevel)throw Error("MissMatch amount of arguments");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,
+c){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return"color: white; background-color: "+b+"; padding: 2px 6px; border-radius: 2px; font-size: 10px"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^
+d>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b="");b=a.getHash(b);for(var c="#",d=0;3>d;d++)c+=("00"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,"trace"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,"debug"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,
+"info"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,"warn"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,"error")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;
+const isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};
+logSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;
+module$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;
+module$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const csoundCreate$$module$src$modules$instantiation=a=>()=>a.exports.csoundCreateWasi();csoundCreate$$module$src$modules$instantiation.toString=()=>"create = async () => undefined;";const csoundDestroy$$module$src$modules$instantiation=a=>b=>a.exports.csoundDestroy(b);csoundDestroy$$module$src$modules$instantiation.toString=()=>"destroy = async () => undefined;";const csoundGetAPIVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetAPIVersion();
+csoundGetAPIVersion$$module$src$modules$instantiation.toString=()=>"getAPIVersion = async () => Number;";const csoundGetVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetVersion();csoundGetVersion$$module$src$modules$instantiation.toString=()=>"getVersion = async () => Number;";const csoundInitialize$$module$src$modules$instantiation=a=>(b,c)=>a.exports.csoundInitialize(c);csoundInitialize$$module$src$modules$instantiation.toString=()=>"initialize = async () => Number;";
+var module$src$modules$instantiation={};module$src$modules$instantiation.csoundCreate=csoundCreate$$module$src$modules$instantiation;module$src$modules$instantiation.csoundDestroy=csoundDestroy$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetAPIVersion=csoundGetAPIVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetVersion=csoundGetVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundInitialize=csoundInitialize$$module$src$modules$instantiation;const WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders=!1;function TextEncoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";return this}TextEncoderPoly$$module$src$utils$text_encoders.prototype.encode=function(a){if("string"!==typeof a)throw new TypeError("passed argument must be of type string "+a+" "+typeof a);a=unescape(encodeURIComponent(a));const b=new Uint8Array(a.length);[...a].forEach(function(c,d){b[d]=c.codePointAt(0)});return b};
+function TextDecoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";this.ignoreBOM=!1;this.trimNull=a=>{const b=a.indexOf("\x00");return-1<b?a.slice(0,Math.max(0,b)):a};this.decode=function(a,b){if(void 0===a)return"";if("boolean"!==typeof(void 0!==b&&"stream"in b?b.stream:!1))throw new TypeError("stream option must be boolean");if(ArrayBuffer.isView(a)){a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);const c=Array.from({length:a.length});a.forEach(function(d,e){c[e]=String.fromCodePoint(d)});
+return this.trimNull(c.join(""))}throw new TypeError("passed argument must be an array buffer view");}}
+const decoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextDecoderPoly$$module$src$utils$text_encoders:new TextDecoder("utf8"),encoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextEncoderPoly$$module$src$utils$text_encoders:new TextEncoder("utf8"),uint2String$$module$src$utils$text_encoders=a=>decoder$$module$src$utils$text_encoders.decode(a);var module$src$utils$text_encoders={};
+module$src$utils$text_encoders.decoder=decoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.encoder=encoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.uint2String=uint2String$$module$src$utils$text_encoders;const trimNull$$module$src$utils$trim_null=a=>{const b=a.indexOf("\x00");return-1<b?a.substr(0,b):a};var module$src$utils$trim_null={};module$src$utils$trim_null.trimNull=trimNull$$module$src$utils$trim_null;const freeStringPtr$$module$src$utils$string_pointers=(a,b)=>{a.exports.freeStringMem(b)},ptr2string$$module$src$utils$string_pointers=(a,b)=>{({buffer:a}=a.wasi.memory);b=new Uint8Array(a,b);b=uint2String$$module$src$utils$text_encoders(b);return trimNull$$module$src$utils$trim_null(b)},string2ptr$$module$src$utils$string_pointers=(a,b)=>{if("string"!==typeof b)console.error("Expected string but got",typeof b);else{b=encoder$$module$src$utils$text_encoders.encode(b);var c=a.exports.allocStringMem(b.length);
+({buffer:a}=a.wasi.memory);(new Uint8Array(a,c,b.length+1)).set(b);return c}};var module$src$utils$string_pointers={};module$src$utils$string_pointers.freeStringPtr=freeStringPtr$$module$src$utils$string_pointers;module$src$utils$string_pointers.ptr2string=ptr2string$$module$src$utils$string_pointers;module$src$utils$string_pointers.string2ptr=string2ptr$$module$src$utils$string_pointers;const csoundParseOrc$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundParseOrc(b,c);csoundParseOrc$$module$src$modules$performance.toString=()=>"parseOrc = async (orchestra) => Object;";const csoundCompileTree$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundCompileTree(b,c);csoundCompileTree$$module$src$modules$performance.toString=()=>"compileTree = async (tree) => Number;";
+const csoundCompileOrc$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileOrc(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileOrc$$module$src$modules$performance.toString=()=>"compileOrc = async (orchestra) => Number;";
+const csoundEvalCode$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundEvalCode(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundEvalCode$$module$src$modules$performance.toString=()=>"csoundEvalCode = async (orchestra) => Number;";const csoundStart$$module$src$modules$performance=a=>b=>a.exports.csoundStartWasi(b);csoundStart$$module$src$modules$performance.toString=()=>"start = async () => Number;";
+const csoundCompileCsd$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);let d;try{d=a.exports.csoundCompileCsd(b,c)}catch(e){console.error(e)}freeStringPtr$$module$src$utils$string_pointers(a,c);return d};csoundCompileCsd$$module$src$modules$performance.toString=()=>"compileCsd = async (path) => Number;";
+const csoundCompileCsdText$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileCsdText(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileCsdText$$module$src$modules$performance.toString=()=>"compileCsdText = async (csoundDocument) => Number;";const csoundPerform$$module$src$modules$performance=a=>b=>a.exports.csoundPerform(b);csoundPerform$$module$src$modules$performance.toString=()=>"perform = async () => Number;";
+const csoundPerformKsmps$$module$src$modules$performance=a=>b=>a.exports.csoundPerformKsmpsWasi(b);csoundPerformKsmps$$module$src$modules$performance.toString=()=>"performKsmps = async (csound) => Number;";const csoundPerformBuffer$$module$src$modules$performance=a=>b=>a.exports.csoundPerformBuffer(b);csoundPerformBuffer$$module$src$modules$performance.toString=()=>"performBuffer = async (csound) => Number;";const csoundStop$$module$src$modules$performance=a=>b=>a.exports.csoundStop(b);
+csoundStop$$module$src$modules$performance.toString=()=>"stop = async () => undefined;";const csoundCleanup$$module$src$modules$performance=a=>b=>a.exports.csoundCleanup(b);csoundCleanup$$module$src$modules$performance.toString=()=>"cleanup = async () => Number;";const csoundReset$$module$src$modules$performance=a=>b=>a.exports.csoundResetWasi(b);csoundReset$$module$src$modules$performance.toString=()=>"reset = async () => Number;";var module$src$modules$performance={};
+module$src$modules$performance.csoundCleanup=csoundCleanup$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsd=csoundCompileCsd$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsdText=csoundCompileCsdText$$module$src$modules$performance;module$src$modules$performance.csoundCompileOrc=csoundCompileOrc$$module$src$modules$performance;module$src$modules$performance.csoundCompileTree=csoundCompileTree$$module$src$modules$performance;
+module$src$modules$performance.csoundEvalCode=csoundEvalCode$$module$src$modules$performance;module$src$modules$performance.csoundParseOrc=csoundParseOrc$$module$src$modules$performance;module$src$modules$performance.csoundPerform=csoundPerform$$module$src$modules$performance;module$src$modules$performance.csoundPerformBuffer=csoundPerformBuffer$$module$src$modules$performance;module$src$modules$performance.csoundPerformKsmps=csoundPerformKsmps$$module$src$modules$performance;
+module$src$modules$performance.csoundReset=csoundReset$$module$src$modules$performance;module$src$modules$performance.csoundStart=csoundStart$$module$src$modules$performance;module$src$modules$performance.csoundStop=csoundStop$$module$src$modules$performance;const sizeOfPrimitive$$module$src$utils$native_sizes={int:4,MYFLT:4,char:1},sizeofStruct$$module$src$utils$native_sizes=a=>a.reduce((b,[,c,...d])=>b+("char"===c?sizeOfPrimitive$$module$src$utils$native_sizes[c]*d[0]:sizeOfPrimitive$$module$src$utils$native_sizes[c]),0);var module$src$utils$native_sizes={};module$src$utils$native_sizes.sizeOfPrimitive=sizeOfPrimitive$$module$src$utils$native_sizes;module$src$utils$native_sizes.sizeofStruct=sizeofStruct$$module$src$utils$native_sizes;const structBufferToObject$$module$src$utils$structure_buffer_to_object=(a,b)=>{[a]=a.reduce(([c,d],[e,f,...g])=>{g="char"===f?sizeOfPrimitive$$module$src$utils$native_sizes[f]*g[0]:sizeOfPrimitive$$module$src$utils$native_sizes[f];f="char"===f?trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(b.subarray(d,g)))||"":b[d];c[e]=f;return[c,d+g]},[{},0]);return a};var module$src$utils$structure_buffer_to_object={};
+module$src$utils$structure_buffer_to_object.structBufferToObject=structBufferToObject$$module$src$utils$structure_buffer_to_object;const CSOUND_PARAMS$$module$src$structures=[["debug_mode","int"],["buffer_frames","int"],["hardware_buffer_frames","int"],["displays","int"],["ascii_graphs","int"],["postscript_graphs","int"],["message_level","int"],["tempo","int"],["ring_bell","int"],["use_cscore","int"],["terminate_on_midi","int"],["heartbeat","int"],["defer_gen01_load","int"],["midi_key","int"],["midi_key_cps","int"],["midi_key_oct","int"],["midi_key_pch","int"],["midi_velocity","int"],["midi_velocity_amp","int"],["no_default_paths",
+"int"],["number_of_threads","int"],["syntax_check_only","int"],["csd_line_counts","int"],["compute_weights","int"],["realtime_mode","int"],["sample_accurate","int"],["sample_rate_override","MYFLT"],["control_rate_override","MYFLT"],["nchnls_override","int"],["nchnls_i_override","int"],["e0dbfs_override","MYFLT"],["daemon","int"],["ksmps_override","int"],["FFT_library","int"]],CS_MIDIDEVICE$$module$src$structures=[["device_name","char",64],["interface_name","char",64],["device_id","char",64],["midi_module",
+"char",64],["isOutput","int"]];var module$src$structures={};const csoundGetSr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSr(b);csoundGetSr$$module$src$modules$attributes.toString=()=>"getSr = async () => Number;";const csoundGetKr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKr(b);csoundGetKr$$module$src$modules$attributes.toString=()=>"getKr = async () => Number;";const csoundGetKsmps$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKsmps(b);csoundGetKsmps$$module$src$modules$attributes.toString=()=>"getKsmps = async () => Number;";
+const csoundGetNchnls$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnls(b);csoundGetNchnls$$module$src$modules$attributes.toString=()=>"getNchnls = async () => Number;";const csoundGetNchnlsInput$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnlsInput(b);csoundGetNchnlsInput$$module$src$modules$attributes.toString=()=>"getNchnlsInput = async () => Number;";const csoundGet0dBFS$$module$src$modules$attributes=a=>b=>a.exports.csoundGet0dBFS(b);
+csoundGet0dBFS$$module$src$modules$attributes.toString=()=>"get0dBFS = async () => Number;";const csoundGetA4$$module$src$modules$attributes=a=>b=>a.exports.csoundGetA4(b);csoundGetA4$$module$src$modules$attributes.toString=()=>"getA4 = async () => Number;";const csoundGetCurrentTimeSamples$$module$src$modules$attributes=a=>b=>a.exports.csoundGetCurrentTimeSamples(b);csoundGetCurrentTimeSamples$$module$src$modules$attributes.toString=()=>"getCurrentTimeSamples = async () => Number;";
+const csoundGetSizeOfMYFLT$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSizeOfMYFLT(b);csoundGetSizeOfMYFLT$$module$src$modules$attributes.toString=()=>"getSizeOfMYFLT = async () => Number;";const csoundSetOption$$module$src$modules$attributes=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundSetOption(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundSetOption$$module$src$modules$attributes.toString=()=>"setOption = async (option) => Number;";
+const csoundSetParams$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetParams(b,c)};csoundSetParams$$module$src$modules$attributes.toString=()=>"setParams = async (csoundParams) => undefined;";
+const csoundGetParams$$module$src$modules$attributes=a=>b=>{var {buffer:c}=a.wasi.memory;const d=sizeofStruct$$module$src$utils$native_sizes(CSOUND_PARAMS$$module$src$structures),e=a.exports.allocCsoundParamsStruct();c=new Uint8Array(c,e,d);a.exports.csoundGetParams(b,e);b=structBufferToObject$$module$src$utils$structure_buffer_to_object(CSOUND_PARAMS$$module$src$structures,c);a.exports.freeCsoundParams(e);return b};csoundGetParams$$module$src$modules$attributes.toString=()=>"getParams = async () => CSOUND_PARAMS;";
+const csoundGetDebug$$module$src$modules$attributes=a=>b=>a.exports.csoundGetDebug(b);csoundGetDebug$$module$src$modules$attributes.toString=()=>"getDebug = async () => Number;";const csoundSetDebug$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetDebug(b,c)};csoundSetDebug$$module$src$modules$attributes.toString=()=>"setDebug = async (number) => undefined;";var module$src$modules$attributes={};module$src$modules$attributes.csoundGet0dBFS=csoundGet0dBFS$$module$src$modules$attributes;
+module$src$modules$attributes.csoundGetA4=csoundGetA4$$module$src$modules$attributes;module$src$modules$attributes.csoundGetCurrentTimeSamples=csoundGetCurrentTimeSamples$$module$src$modules$attributes;module$src$modules$attributes.csoundGetDebug=csoundGetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKr=csoundGetKr$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKsmps=csoundGetKsmps$$module$src$modules$attributes;
+module$src$modules$attributes.csoundGetNchnls=csoundGetNchnls$$module$src$modules$attributes;module$src$modules$attributes.csoundGetNchnlsInput=csoundGetNchnlsInput$$module$src$modules$attributes;module$src$modules$attributes.csoundGetParams=csoundGetParams$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSizeOfMYFLT=csoundGetSizeOfMYFLT$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSr=csoundGetSr$$module$src$modules$attributes;
+module$src$modules$attributes.csoundSetDebug=csoundSetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundSetOption=csoundSetOption$$module$src$modules$attributes;module$src$modules$attributes.csoundSetParams=csoundSetParams$$module$src$modules$attributes;const csoundGetInputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBufferSize(b);csoundGetInputBufferSize$$module$src$modules$rtaudio.toString=()=>"getInputBufferSize = async () => Number;";const csoundGetOutputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBufferSize(b);csoundGetOutputBufferSize$$module$src$modules$rtaudio.toString=()=>"getOutputBufferSize = async () => Number;";const csoundGetInputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBuffer(b);
+csoundGetInputBuffer$$module$src$modules$rtaudio.toString=()=>"getInputBuffer = async () => Number;";const csoundGetOutputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBuffer(b);csoundGetOutputBuffer$$module$src$modules$rtaudio.toString=()=>"getOutputBuffer = async () => Number;";const csoundGetSpin$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpin(b);csoundGetSpin$$module$src$modules$rtaudio.toString=()=>"getSpin = async (csound) => Number;";
+const csoundGetSpout$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpout(b);csoundGetSpout$$module$src$modules$rtaudio.toString=()=>"getSpout = async () => Number;";var module$src$modules$rtaudio={};module$src$modules$rtaudio.csoundGetInputBuffer=csoundGetInputBuffer$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetInputBufferSize=csoundGetInputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetOutputBuffer=csoundGetOutputBuffer$$module$src$modules$rtaudio;
+module$src$modules$rtaudio.csoundGetOutputBufferSize=csoundGetOutputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpin=csoundGetSpin$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpout=csoundGetSpout$$module$src$modules$rtaudio;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}
+function adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);
+function all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}
+function and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}
+function anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.split("").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}
+function apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;
+function __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&"constructor"!==c&&("object"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),"function"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}
+function __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&"undefined"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}
+function __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,
+b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;
+for(;d<f;d++){if("object"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);"function"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&"constructor"!==e&&("object"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):"function"===typeof a[e]&&(d[e]=a[e](...c)));return d}
+function applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);
+function _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;
+function assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d="string"===typeof a?a.split(".").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e="object"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&
+isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);
+function _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}
+function _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};
+case 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,n){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,n,m){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,n,m,l){return b.apply(this,arguments)}}}
+function curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error("First argument to _arity must be a non-negative integer no greater than ten");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}
+function bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}
+function chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error("min must not be greater than max in clamp(min, max, value)");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);
+function clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]="object"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}
+class ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError("reduce: list must be array or iterable");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}
+const reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);
+function _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};
+case 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,n){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,n,m){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,n,m,l){return b.apply(this,arguments)};default:throw Error("First argument to _arity must be a non-negative integer no greater than ten");}}
+function _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}
+function pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("pipe requires at least one argument");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}
+function compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("compose requires at least one argument");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof a?`${a}${b}`:[...a,...b]}
+function cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}
+function mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;
+function map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}
+function max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}
+function converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}
+function count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}
+const dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}
+function type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return"Null";if(void 0===a)return"Undefined";if(Number.isNaN(a))return"NaN";a=Object.prototype.toString.call(a).slice(8,-1);return"AsyncFunction"===a?"Promise":a}
+function _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}
+function _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}
+function _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}
+function parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return["Error","TypeError"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}
+function equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if("Function"===c)return void 0===a.name?!1:a.name===b.name;if(["NaN","Undefined","Null"].includes(c))return!0;if("Number"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if(["String","Boolean"].includes(c))return a.toString()===
+b.toString();if("Array"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);
+if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if("Set"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if("Object"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});
+return f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \'indexOf\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}
+class _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Null","Undefined","NaN"].includes(b)?b in this.items?!1:this.items[b]=!0:["Object","Array"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}
+function uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}
+function dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}
+function drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}
+function dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if("function"!==typeof a)throw Error(`'predicate' is from wrong type ${typeof a}`);if(!c&&"string"!==typeof b)throw Error(`'iterable' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):
+(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join("")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}
+function dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}
+function dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join("")}
+function either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}
+function endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if("string"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}
+function prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);
+function evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}
+function evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if("Object"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return"Function"===e?a[d](c):"Object"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}
+function evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error("iterableType !== rulesType");if(!["Object","Array"].includes(c))throw Error(`'iterable' and 'rules' are from wrong type ${c}`);return"Object"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,
+b)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}
+function filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error("Incorrect iterable input");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}
+function find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}
+function findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}
+function flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}
+function flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error("R.flip doesn't work with arity > 4");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}
+function forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}
+function fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}
+function groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError("list.reduce is not a function");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),n=0===e.length;h=h===b.length-1;if(k)return n&&e.push(f),e.push(g),h&&d.push(e),g;if(n)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},
+void 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b="."){return"string"===typeof a?a.split(b):a}
+function path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}
+function hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[0]||"":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;
+function identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===("boolean"===typeof a?a:a(...d))?b(...d):c(...d)}
+const ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}
+function indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}
+function indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}
+function init$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}
+function intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}
+function isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Undefined","NaN","Number","Null"].includes(b)?!1:a?"Object"===b?0===Object.keys(a).length:"Array"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}
+function join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[a.length-1]||"":a[a.length-1]}
+function lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||"string"===typeof a?a.length:NaN}
+function lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return"[object String]"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}
+function updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);
+function lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}
+function lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}
+function mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);
+function sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}
+function mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}
+function mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}
+function mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}
+const mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);
+function ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}
+function _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,
+d,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}
+function modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);
+function modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],
+b,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}
+function moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error("Rambda.move does not support negative indexes");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);
+function multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}
+function not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}
+function omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}
+function on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}
+function once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});
+function overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);
+function partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}
+function partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}
+function partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}
+function pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);
+function pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);
+function paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}
+function pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}
+function pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}
+function pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof b?[a].concat(b.split("")):[a].concat(b)}
+const product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);
+function propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);
+function props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error("propsToPick is not a list");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}
+const propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);
+function range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError("Both arguments to range must be numbers");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}
+function reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}
+const replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.split("").reverse().join(""):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}
+const set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);
+function sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}
+function split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||"Function"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}
+function take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():"string"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}
+function splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property 'slice' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&"string"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,
+b)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error("First argument to splitEvery must be a positive integer");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}
+function splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property 'length' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}
+function startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}
+function subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}
+function symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}
+function T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}
+function takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return"string"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}
+function takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join("")}
+function takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join("")}
+function tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof a)throw new TypeError(`\u2018test\u2019 requires a value of type RegExp as its first argument; received "${a}"`);return-1!==b.search(a)}
+function times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError("n must be an integer");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}
+function toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}
+function trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>["Promise","Function"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));
+function tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn '${a}'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}
+function union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}
+function uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}
+function uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}
+function unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}
+function values$$module$node_modules$rambda$dist$rambda_mjs(a){return"Object"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}
+function whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}
+function whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}
+function whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}
+function without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}
+function zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}
+function zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;const csoundSetMidiCallbacks$$module$src$modules$rtmidi=a=>b=>{a.exports.csoundSetMidiCallbacks(b)},csoundGetMIDIDevList$$module$src$modules$rtmidi=a=>(b,c)=>{const {buffer:d}=a.wasi.memory,e=a.exports.csoundGetMIDIDevList(b,void 0,c?1:0);if(0===e)return[];const f=sizeofStruct$$module$src$utils$native_sizes(CS_MIDIDEVICE$$module$src$structures),g=a.exports.allocCsMidiDeviceStruct(e);a.exports.csoundGetMIDIDevList(b,g,c?1:0);const h=new Uint8Array(d,g,f*e);b=range$$module$node_modules$rambda$dist$rambda_mjs(0,
+e).map(k=>structBufferToObject$$module$src$utils$structure_buffer_to_object(CS_MIDIDEVICE$$module$src$structures,h.subarray(k*f,f)));a.exports.freeCsMidiDeviceStruct(g);return b};csoundGetMIDIDevList$$module$src$modules$rtmidi.toString=()=>"getMIDIDevList = async (isOutput) => Object;";
+const csoundGetRtMidiName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getRtMidiName(b);c=new Uint8Array(c,b,128);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetRtMidiName$$module$src$modules$rtmidi.toString=()=>"getRtMidiName = async () => String;";
+const csoundGetMidiOutFileName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getMidiOutFileName(b);c=new Uint8Array(c,b,128);b&&0<b.length&&freeStringPtr$$module$src$utils$string_pointers(a,b);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""},_isRequestingRtMidiInput$$module$src$modules$rtmidi=a=>b=>a.exports.isRequestingRtMidiInput(b),csoundPushMidiMessage$$module$src$modules$rtmidi=a=>(b,c,d,e)=>{a.exports.pushMidiMessage(b,
+c,d,e)};csoundPushMidiMessage$$module$src$modules$rtmidi.toString=()=>"midiMessage = async (status, data1, data2) => undefined;";var module$src$modules$rtmidi={};module$src$modules$rtmidi._isRequestingRtMidiInput=_isRequestingRtMidiInput$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMIDIDevList=csoundGetMIDIDevList$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMidiOutFileName=csoundGetMidiOutFileName$$module$src$modules$rtmidi;
+module$src$modules$rtmidi.csoundGetRtMidiName=csoundGetRtMidiName$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundPushMidiMessage=csoundPushMidiMessage$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundSetMidiCallbacks=csoundSetMidiCallbacks$$module$src$modules$rtmidi;const csoundInputMessage$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessage(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessage$$module$src$modules$control_events.toString=()=>"inputMessage = async (scoreEvent) => Number;";
+const csoundInputMessageAsync$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessageAsync(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessageAsync$$module$src$modules$control_events.toString=()=>"inputMessageAsync = async (scoreEvent) => Number;";
+const csoundGetControlChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetControlChannelWasi(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundGetControlChannel$$module$src$modules$control_events.toString=()=>"getControlChannel = async (channelName) => Number;";
+const csoundSetControlChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);a.exports.csoundSetControlChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c)};csoundSetControlChannel$$module$src$modules$control_events.toString=()=>"setControlChannel = async (channelName, value) => void;";
+const csoundGetStringChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetStringChannelWasi(b,c);const d=ptr2string$$module$src$utils$string_pointers(a,b);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,b);return d};csoundGetStringChannel$$module$src$modules$control_events.toString=()=>"getStringChannel = async (channelName) => String;";
+const csoundSetStringChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);a.exports.csoundSetStringChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d)};csoundSetStringChannel$$module$src$modules$control_events.toString=()=>"setStringChannel = async (channelName, value) => void;";var module$src$modules$control_events={};
+module$src$modules$control_events.csoundGetControlChannel=csoundGetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundGetStringChannel=csoundGetStringChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessage=csoundInputMessage$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessageAsync=csoundInputMessageAsync$$module$src$modules$control_events;
+module$src$modules$control_events.csoundSetControlChannel=csoundSetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundSetStringChannel=csoundSetStringChannel$$module$src$modules$control_events;const csoundGetOutputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetOutputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetOutputName$$module$src$modules$general_io.toString=()=>"getOutputName = async () => String;";
+const csoundGetInputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetInputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetInputName$$module$src$modules$general_io.toString=()=>"getInputName = async (csound) => String;";var module$src$modules$general_io={};module$src$modules$general_io.csoundGetInputName=csoundGetInputName$$module$src$modules$general_io;
+module$src$modules$general_io.csoundGetOutputName=csoundGetOutputName$$module$src$modules$general_io;const csoundAppendEnv$$module$src$modules$extra=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);b=a.exports.csoundAppendEnv(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d);return b};csoundAppendEnv$$module$src$modules$extra.toString=()=>"appendEnv = async (csound, variable, value) => Number;";const csoundShouldDaemonize$$module$src$modules$extra=a=>b=>a.exports.csoundShouldDaemonize(b);
+var module$src$modules$extra={};module$src$modules$extra.csoundAppendEnv=csoundAppendEnv$$module$src$modules$extra;module$src$modules$extra.csoundShouldDaemonize=csoundShouldDaemonize$$module$src$modules$extra;const csoundIsScorePending$$module$src$modules$score_handling=a=>b=>a.exports.csoundIsScorePending(b);csoundIsScorePending$$module$src$modules$score_handling.toString=()=>"isScorePending = async () => Number;";const csoundSetScorePending$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScorePending(b,c);csoundSetScorePending$$module$src$modules$score_handling.toString=()=>"setScorePending = async (pending) => Number;";
+const csoundReadScore$$module$src$modules$score_handling=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundReadScore(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundReadScore$$module$src$modules$score_handling.toString=()=>"readScore = async (score) => Number;";const csoundGetScoreTime$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreTime(b);csoundGetScoreTime$$module$src$modules$score_handling.toString=()=>"getScoreTime = async () => Number;";
+const csoundGetScoreOffsetSeconds$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreOffsetSeconds(b);csoundGetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"getScoreOffsetSeconds = async () => Number;";const csoundSetScoreOffsetSeconds$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScoreOffsetSeconds(b,c);csoundSetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"setScoreOffsetSeconds = async () => Number;";
+const csoundRewindScore$$module$src$modules$score_handling=a=>b=>a.exports.csoundRewindScore(b);csoundRewindScore$$module$src$modules$score_handling.toString=()=>"rewindScore = async () => undefined;";var module$src$modules$score_handling={};module$src$modules$score_handling.csoundGetScoreOffsetSeconds=csoundGetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundGetScoreTime=csoundGetScoreTime$$module$src$modules$score_handling;
+module$src$modules$score_handling.csoundIsScorePending=csoundIsScorePending$$module$src$modules$score_handling;module$src$modules$score_handling.csoundReadScore=csoundReadScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundRewindScore=csoundRewindScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScoreOffsetSeconds=csoundSetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScorePending=csoundSetScorePending$$module$src$modules$score_handling;const csoundTableLength$$module$src$modules$table=a=>(b,c)=>a.exports.csoundTableLength(b,c);csoundTableLength$$module$src$modules$table.toString=()=>"tableLength = async (tableNum) => Number;";const csoundTableGet$$module$src$modules$table=a=>(b,c,d)=>a.exports.csoundTableGet(b,c,d);csoundTableGet$$module$src$modules$table.toString=()=>"tableGet = async (tableNum, tableIndex) => Number;";const csoundTableSet$$module$src$modules$table=a=>(b,c,d,e)=>a.exports.csoundTableSet(b,c,d,e);
+csoundTableSet$$module$src$modules$table.toString=()=>"tableSet = async (tableNum, tableIndex, value) => undefined;";const csoundTableCopyIn$$module$src$modules$table=a=>(b,c,d)=>{const e=a.exports.allocFloatArray(d.length);(new Float64Array(a.wasi.memory.buffer,e,d.length)).set(d);a.exports.csoundTableCopyIn(b,c,e);a.exports.freeFloatArrayMem(e)};csoundTableCopyIn$$module$src$modules$table.toString=()=>"tableCopyIn = async (tableNum, float64Array) => undefined;";
+const csoundTableCopyOut$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundTableLength(b,c);if(0<d){const e=a.exports.allocFloatArray(d);a.exports.csoundTableCopyOut(b,c,e);({buffer:b}=a.wasi.memory);d=new Float64Array(b,e,d);a.exports.freeFloatArrayMem(e);return Float64Array.from(d)}};csoundTableCopyOut$$module$src$modules$table.toString=()=>"tableCopyOut = async (tableNum) => ?Float64Array;";const csoundGetTable$$module$src$modules$table=csoundTableCopyOut$$module$src$modules$table;
+csoundTableCopyOut$$module$src$modules$table.toString=csoundTableCopyOut$$module$src$modules$table.toString;const csoundGetTableArgs$$module$src$modules$table=a=>(b,c)=>{const d=a.exports.allocFloatArray(1024);a.exports.csoundGetTableArgs(b,d,c);({buffer:b}=a.wasi.memory);b=new Float64Array(b,d,1024);a.exports.freeFloatArrayMem(d);return b};csoundGetTableArgs$$module$src$modules$table.toString=()=>"getTableArgs = async (tableNum) => ?Float64Array;";
+const csoundIsNamedGEN$$module$src$modules$table=a=>(b,c)=>a.exports.csoundIsNamedGEN(b,c);csoundIsNamedGEN$$module$src$modules$table.toString=()=>"isNamedGEN = async (tableNum) => number;";const csoundGetNamedGEN$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundIsNamedGEN(b,c);if(0<d){const e=a.exports.allocStringMem(d);a.exports.csoundGetNamedGEN(b,e,c,d);({buffer:b}=a.wasi.memory);d=new Uint8Array(b,e,d);return uint2String$$module$src$utils$text_encoders(d)}};
+csoundGetNamedGEN$$module$src$modules$table.toString=()=>"getNamedGEN = async (tableNum) => ?string;";var module$src$modules$table={};module$src$modules$table.csoundGetNamedGEN=csoundGetNamedGEN$$module$src$modules$table;module$src$modules$table.csoundGetTable=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundGetTableArgs=csoundGetTableArgs$$module$src$modules$table;module$src$modules$table.csoundIsNamedGEN=csoundIsNamedGEN$$module$src$modules$table;
+module$src$modules$table.csoundTableCopyIn=csoundTableCopyIn$$module$src$modules$table;module$src$modules$table.csoundTableCopyOut=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundTableGet=csoundTableGet$$module$src$modules$table;module$src$modules$table.csoundTableLength=csoundTableLength$$module$src$modules$table;module$src$modules$table.csoundTableSet=csoundTableSet$$module$src$modules$table;function writeFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.writeFile(c,b)}}writeFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";function appendFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.appendFile(c,b)}}appendFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";
+function readFile$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readFile(c)}readFile$$module$src$filesystem$worker_fs.toString=()=>"async (path) => ?Uint8Array";function unlink$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.unlink(c)}unlink$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";function readdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readdir(c)}readdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => string[]";
+function mkdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.mkdir(c)}mkdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";var module$src$filesystem$worker_fs={};module$src$filesystem$worker_fs.appendFile=appendFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.mkdir=mkdir$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readFile=readFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readdir=readdir$$module$src$filesystem$worker_fs;
+module$src$filesystem$worker_fs.unlink=unlink$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.writeFile=writeFile$$module$src$filesystem$worker_fs;const api$$module$src$libcsound={csoundCreate:csoundCreate$$module$src$modules$instantiation,csoundDestroy:csoundDestroy$$module$src$modules$instantiation,csoundGetAPIVersion:csoundGetAPIVersion$$module$src$modules$instantiation,csoundGetVersion:csoundGetVersion$$module$src$modules$instantiation,csoundInitialize:csoundInitialize$$module$src$modules$instantiation,csoundParseOrc:csoundParseOrc$$module$src$modules$performance,csoundCompileTree:csoundCompileTree$$module$src$modules$performance,csoundCompileOrc:csoundCompileOrc$$module$src$modules$performance,
+csoundEvalCode:csoundEvalCode$$module$src$modules$performance,csoundStart:csoundStart$$module$src$modules$performance,csoundCompileCsd:csoundCompileCsd$$module$src$modules$performance,csoundCompileCsdText:csoundCompileCsdText$$module$src$modules$performance,csoundPerform:csoundPerform$$module$src$modules$performance,csoundPerformKsmps:csoundPerformKsmps$$module$src$modules$performance,csoundPerformBuffer:csoundPerformBuffer$$module$src$modules$performance,csoundStop:csoundStop$$module$src$modules$performance,
+csoundCleanup:csoundCleanup$$module$src$modules$performance,csoundReset:csoundReset$$module$src$modules$performance,csoundGetSr:csoundGetSr$$module$src$modules$attributes,csoundGetKr:csoundGetKr$$module$src$modules$attributes,csoundGetKsmps:csoundGetKsmps$$module$src$modules$attributes,csoundGetNchnls:csoundGetNchnls$$module$src$modules$attributes,csoundGetNchnlsInput:csoundGetNchnlsInput$$module$src$modules$attributes,csoundGet0dBFS:csoundGet0dBFS$$module$src$modules$attributes,csoundGetA4:csoundGetA4$$module$src$modules$attributes,
+csoundGetCurrentTimeSamples:csoundGetCurrentTimeSamples$$module$src$modules$attributes,csoundGetSizeOfMYFLT:csoundGetSizeOfMYFLT$$module$src$modules$attributes,csoundSetOption:csoundSetOption$$module$src$modules$attributes,csoundSetParams:csoundSetParams$$module$src$modules$attributes,csoundGetParams:csoundGetParams$$module$src$modules$attributes,csoundGetDebug:csoundGetDebug$$module$src$modules$attributes,csoundSetDebug:csoundSetDebug$$module$src$modules$attributes,csoundGetInputBufferSize:csoundGetInputBufferSize$$module$src$modules$rtaudio,
+csoundGetOutputBufferSize:csoundGetOutputBufferSize$$module$src$modules$rtaudio,csoundGetInputBuffer:csoundGetInputBuffer$$module$src$modules$rtaudio,csoundGetOutputBuffer:csoundGetOutputBuffer$$module$src$modules$rtaudio,csoundGetSpin:csoundGetSpin$$module$src$modules$rtaudio,csoundGetSpout:csoundGetSpout$$module$src$modules$rtaudio,csoundGetMIDIDevList:csoundGetMIDIDevList$$module$src$modules$rtmidi,csoundSetMidiCallbacks:csoundSetMidiCallbacks$$module$src$modules$rtmidi,csoundGetRtMidiName:csoundGetRtMidiName$$module$src$modules$rtmidi,
+csoundGetMidiOutFileName:csoundGetMidiOutFileName$$module$src$modules$rtmidi,csoundPushMidiMessage:csoundPushMidiMessage$$module$src$modules$rtmidi,_isRequestingRtMidiInput:_isRequestingRtMidiInput$$module$src$modules$rtmidi,csoundInputMessage:csoundInputMessage$$module$src$modules$control_events,csoundInputMessageAsync:csoundInputMessageAsync$$module$src$modules$control_events,csoundGetControlChannel:csoundGetControlChannel$$module$src$modules$control_events,csoundSetControlChannel:csoundSetControlChannel$$module$src$modules$control_events,
+csoundGetStringChannel:csoundGetStringChannel$$module$src$modules$control_events,csoundSetStringChannel:csoundSetStringChannel$$module$src$modules$control_events,csoundGetInputName:csoundGetInputName$$module$src$modules$general_io,csoundGetOutputName:csoundGetOutputName$$module$src$modules$general_io,csoundAppendEnv:csoundAppendEnv$$module$src$modules$extra,csoundShouldDaemonize:csoundShouldDaemonize$$module$src$modules$extra,csoundIsScorePending:csoundIsScorePending$$module$src$modules$score_handling,
+csoundSetScorePending:csoundSetScorePending$$module$src$modules$score_handling,csoundReadScore:csoundReadScore$$module$src$modules$score_handling,csoundGetScoreTime:csoundGetScoreTime$$module$src$modules$score_handling,csoundGetScoreOffsetSeconds:csoundGetScoreOffsetSeconds$$module$src$modules$score_handling,csoundSetScoreOffsetSeconds:csoundSetScoreOffsetSeconds$$module$src$modules$score_handling,csoundRewindScore:csoundRewindScore$$module$src$modules$score_handling,csoundTableLength:csoundTableLength$$module$src$modules$table,
+csoundTableGet:csoundTableGet$$module$src$modules$table,csoundTableSet:csoundTableSet$$module$src$modules$table,csoundTableCopyIn:csoundTableCopyIn$$module$src$modules$table,csoundTableCopyOut:csoundTableCopyOut$$module$src$modules$table,csoundGetTable:csoundTableCopyOut$$module$src$modules$table,csoundGetTableArgs:csoundGetTableArgs$$module$src$modules$table,csoundIsNamedGEN:csoundIsNamedGEN$$module$src$modules$table,csoundGetNamedGEN:csoundGetNamedGEN$$module$src$modules$table,fs:module$src$filesystem$worker_fs};
+var $jscompDefaultExport$$module$src$libcsound=function(a){return mergeAll$$module$node_modules$rambda$dist$rambda_mjs([reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,api$$module$src$libcsound[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(dissoc$$module$node_modules$rambda$dist$rambda_mjs("fs")(api$$module$src$libcsound))),reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,
+api$$module$src$libcsound.fs[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(module$src$filesystem$worker_fs))])},module$src$libcsound={};module$src$libcsound.api=api$$module$src$libcsound;module$src$libcsound.default=$jscompDefaultExport$$module$src$libcsound;const appendBuffers$$module$src$utils=(a,b)=>{const c=new Uint8Array(a.byteLength+b.byteLength);c.set(new Uint8Array(a),0);c.set(new Uint8Array(b),a.byteLength);return c.buffer},nearestPowerOf2$$module$src$utils=a=>1<<31-Math.clz32(a),isIos$$module$src$utils=()=>/iPhone|iPad|iPod/.test(navigator.userAgent),isFirefox$$module$src$utils=()=>navigator.userAgent.toLowerCase().includes("firefox"),isSafari$$module$src$utils=()=>"string"===typeof navigator.vendor&&navigator.vendor.includes("Apple"),isSabSupported$$module$src$utils=
+()=>!isFirefox$$module$src$utils()&&window&&void 0!==window.Atomics&&void 0!==window.SharedArrayBuffer,areWorkletsSupported$$module$src$utils=()=>void 0!==AudioNode&&void 0!==AudioWorkletNode,WebkitAudioContext$$module$src$utils=()=>{if(void 0!==window.webkitAudioContext)return window.webkitAudioContext;if(void 0!==window.AudioContext)return window.AudioContext},isScriptProcessorNodeSupported$$module$src$utils=()=>{const a=WebkitAudioContext$$module$src$utils();return void 0!==a&&void 0!==a.prototype.createScriptProcessor},
+csoundApiRename$$module$src$utils=a=>{let b=a.replace(/^csound/i,"");"csoundPushMidiMessage"===a&&(b="midiMessage");return b.charAt(0).toLowerCase()+b.slice(1)},stopableStates$$module$src$utils=new Set(["realtimePerformanceStarted","realtimePerformancePaused","realtimePerformanceResumed","renderStarted"]),makeProxyCallback$$module$src$utils=(a,b,c,d)=>async(...e)=>{if(!d||!stopableStates$$module$src$utils.has(d)){const f={};0<Object.values(f).length&&await a.callUncloned("syncWorkerFs",[b,f])}return await a.callUncloned(c,
+[b,...e])},makeSingleThreadCallback$$module$src$utils=(a,b)=>async(...c)=>await b.apply({},[a,...c]),fetchPlugins$$module$src$utils=async a=>await Promise.all(a.map(async b=>(await fetch(b)).arrayBuffer()));var module$src$utils={};module$src$utils.WebkitAudioContext=WebkitAudioContext$$module$src$utils;module$src$utils.appendBuffers=appendBuffers$$module$src$utils;module$src$utils.areWorkletsSupported=areWorkletsSupported$$module$src$utils;module$src$utils.csoundApiRename=csoundApiRename$$module$src$utils;
+module$src$utils.fetchPlugins=fetchPlugins$$module$src$utils;module$src$utils.isIos=isIos$$module$src$utils;module$src$utils.isSabSupported=isSabSupported$$module$src$utils;module$src$utils.isSafari=isSafari$$module$src$utils;module$src$utils.isScriptProcessorNodeSupported=isScriptProcessorNodeSupported$$module$src$utils;module$src$utils.makeProxyCallback=makeProxyCallback$$module$src$utils;module$src$utils.makeSingleThreadCallback=makeSingleThreadCallback$$module$src$utils;
+module$src$utils.nearestPowerOf2=nearestPowerOf2$$module$src$utils;module$src$utils.stopableStates=stopableStates$$module$src$utils;const messageEventHandler$$module$src$mains$messages_main=a=>b=>{if(b.data.log)a&&a.publicEvents&&a.publicEvents.triggerMessage?a.publicEvents.triggerMessage(b.data.log):console.log("object"===typeof b.data.log&&"string"===typeof b.data.log.log?b.data.log.log:b.data.log);else if(b.data.playStateChange&&a&&a.onPlayStateChange)a.onPlayStateChange(b.data.playStateChange)},iterableMessageChannel$$module$src$mains$messages_main=()=>{const {port1:a,port2:b}=new MessageChannel;return[a,b]},safelyClosePorts$$module$src$mains$messages_main=
+([a,b])=>{if(void 0!==a.close)try{a.close()}catch(c){}if(void 0!==b.close)try{b.close()}catch(c){}};
+class IPCMessagePorts$$module$src$mains$messages_main{constructor(){const {port1:a,port2:b}=new MessageChannel;this.mainMessagePort=a;this.workerMessagePort=b;const {port1:c,port2:d}=new MessageChannel;this.mainMessagePortAudio=c;this.workerMessagePortAudio=d;const {port1:e,port2:f}=new MessageChannel;this.csoundWorkerFrameRequestPort=e;this.audioWorkerFrameRequestPort=f;const {port1:g,port2:h}=new MessageChannel;this.csoundWorkerAudioInputPort=g;this.audioWorkerAudioInputPort=h;const {port1:k,port2:n}=
+new MessageChannel;this.csoundWorkerRtMidiPort=k;this.csoundMainRtMidiPort=n;const {port1:m,port2:l}=new MessageChannel;this.sabWorkerCallbackReply=m;this.sabMainCallbackReply=l;const {port1:p,port2:q}=new MessageChannel;this.mainMessagePort2=p;this.workerMessagePort2=q;this.restartAudioWorkerPorts=this.restartAudioWorkerPorts.bind(this)}restartAudioWorkerPorts(){safelyClosePorts$$module$src$mains$messages_main([this.csoundWorkerAudioInputPort,this.audioWorkerAudioInputPort]);[this.csoundWorkerAudioInputPort,
+this.audioWorkerAudioInputPort]=iterableMessageChannel$$module$src$mains$messages_main();safelyClosePorts$$module$src$mains$messages_main([this.mainMessagePortAudio,this.workerMessagePortAudio]);[this.mainMessagePortAudio,this.workerMessagePortAudio]=iterableMessageChannel$$module$src$mains$messages_main();safelyClosePorts$$module$src$mains$messages_main([this.csoundWorkerFrameRequestPort,this.audioWorkerFrameRequestPort]);[this.csoundWorkerFrameRequestPort,this.audioWorkerFrameRequestPort]=iterableMessageChannel$$module$src$mains$messages_main();
+safelyClosePorts$$module$src$mains$messages_main([this.mainMessagePort2,this.workerMessagePort2]);[this.mainMessagePort2,this.workerMessagePort2]=iterableMessageChannel$$module$src$mains$messages_main()}}var module$src$mains$messages_main={};module$src$mains$messages_main.IPCMessagePorts=IPCMessagePorts$$module$src$mains$messages_main;module$src$mains$messages_main.messageEventHandler=messageEventHandler$$module$src$mains$messages_main;function clearArray$$module$src$utils$clear_array(a){for(;0<a.length;)a.pop()}var module$src$utils$clear_array={};module$src$utils$clear_array.clearArray=clearArray$$module$src$utils$clear_array;class EventPromises$$module$src$utils$event_promises{constructor(){this.timeoutTimers=[];this.resumeResolver=this.resumePromise=this.pauseResolver=this.pausePromise=this.stopResolver=this.stopPromise=this.startResolver=this.startPromise=void 0;this.createStartPromise=this.createStartPromise.bind(this);this.releaseStartPromise=this.releaseStartPromise.bind(this);this.createStopPromise=this.createStopPromise.bind(this);this.releaseStopPromise=this.releaseStopPromise.bind(this);this.createPausePromise=
+this.createPausePromise.bind(this);this.releasePausePromise=this.releasePausePromise.bind(this);this.createResumePromise=this.createResumePromise.bind(this);this.releaseResumePromise=this.releaseResumePromise.bind(this);this.waitForStart=this.waitForStart.bind(this);this.waitForStop=this.waitForStop.bind(this);this.isWaitingToStart=this.isWaitingToStart.bind(this);this.isWaitingToStop=this.isWaitingToStop.bind(this)}isWaitingToStart(){return void 0!==this.startPromise}isWaitingToStop(){return void 0!==
+this.stopPromise}isWaiting(a){return void 0!==this.startPromise?(console.error(`cannot ${a} while starting, did you forget to 'await'?`),!0):void 0!==this.stopPromise?(console.error(`cannot ${a} while stopping, did you forget to 'await'?`),!0):void 0!==this.pausePromise?(console.error(`cannot ${a} while pausing, did you forget to 'await'?`),!0):void 0!==this.resumePromise?(console.error(`cannot ${a} while resuming, did you forget to 'await'?`),!0):!1}async waitForStart(){return this.startPromise?
+await this.startPromise:-1}async waitForStop(){let a;return null!=(a=this.stopPromise)?a:-1}async waitForPause(){let a;return null!=(a=this.pausePromise)?a:-1}async waitForResume(){let a;return null!=(a=this.resumePromise)?a:-1}createStartPromise(){this.startPromise||(this.startPromise=new Promise(a=>{this.startResolver=a;const b=setTimeout(()=>{this.timeoutTimers=reject$$module$node_modules$rambda$dist$rambda_mjs(equals$$module$node_modules$rambda$dist$rambda_mjs(b),this.timeoutTimers);this.startPromise&&
+(console.warn("start promise timed out"),this.startResolver(),delete this.startResolver,this.startPromise&&delete this.startPromise)},2E3);this.timeoutTimers.push(b)}))}releaseStartPromise(){try{this.timeoutTimers.forEach(clearTimeout),clearArray$$module$src$utils$clear_array(this.timeoutTimers)}catch(a){console.error(a)}this.startResolver&&(this.startResolver(),delete this.startResolver);this.startPromise&&delete this.startPromise}createStopPromise(){this.stopPromise||(this.stopPromise=new Promise(a=>
+{this.stopResolver=a;const b=setTimeout(()=>{this.timeoutTimers=reject$$module$node_modules$rambda$dist$rambda_mjs(equals$$module$node_modules$rambda$dist$rambda_mjs(b),this.timeoutTimers);this.stopPromise&&(console.warn("stop promise timed out"),this.stopResolver(),delete this.stopResolver,this.stopPromise&&delete this.stopPromise)},2E3);this.timeoutTimers.push(b)}))}releaseStopPromise(){try{this.timeoutTimers.forEach(clearTimeout),clearArray$$module$src$utils$clear_array(this.timeoutTimers)}catch(a){console.error(a)}this.stopResolver&&
+(this.stopResolver(),delete this.stopResolver);this.stopPromise&&delete this.stopPromise}createPausePromise(){this.pausePromise||(this.pausePromise=new Promise(a=>{this.pauseResolver=a;const b=setTimeout(()=>{this.timeoutTimers=reject$$module$node_modules$rambda$dist$rambda_mjs(equals$$module$node_modules$rambda$dist$rambda_mjs(b),this.timeoutTimers);this.pausePromise&&(console.warn("pause promise timed out"),this.pauseResolver(),delete this.pauseResolver,this.pausePromise&&delete this.pausePromise)},
+2E3);this.timeoutTimers.push(b)}))}releasePausePromise(){try{this.timeoutTimers.forEach(clearTimeout),clearArray$$module$src$utils$clear_array(this.timeoutTimers)}catch(a){console.error(a)}this.pauseResolver&&(this.pauseResolver(),delete this.pauseResolver);this.pausePromise&&delete this.pausePromise}createResumePromise(){this.resumePromise||(this.resumePromise=new Promise(a=>{this.resumeResolver=a;const b=setTimeout(()=>{this.timeoutTimers=reject$$module$node_modules$rambda$dist$rambda_mjs(equals$$module$node_modules$rambda$dist$rambda_mjs(b),
+this.timeoutTimers);this.resumePromise&&(console.warn("resume promise timed out"),this.resumeResolver(),delete this.resumeResolver,this.resumePromise&&delete this.resumePromise)},2E3);this.timeoutTimers.push(b)}))}releaseResumePromise(){try{this.timeoutTimers.forEach(clearTimeout),clearArray$$module$src$utils$clear_array(this.timeoutTimers)}catch(a){console.error(a)}this.resumeResolver&&(this.resumeResolver(),delete this.resumeResolver);this.resumePromise&&delete this.resumePromise}}
+var module$src$utils$event_promises={};module$src$utils$event_promises.EventPromises=EventPromises$$module$src$utils$event_promises;var module$node_modules$eventemitter3$umd$eventemitter3_min={};
+module$node_modules$eventemitter3$umd$eventemitter3_min.default=function(){return function e(b,c,d){function f(k,n){if(!c[k]){if(!b[k]){var m="function"==typeof require&&require;if(!n&&m)return m(k,!0);if(g)return g(k,!0);n=Error("Cannot find module '"+k+"'");throw n.code="MODULE_NOT_FOUND",n;}n=c[k]={exports:{}};b[k][0].call(n.exports,function(l){return f(b[k][1][l]||l)},n,n.exports,e,b,c,d)}return c[k].exports}for(var g="function"==typeof require&&require,h=0;h<d.length;h++)f(d[h]);return f}({1:[function(b,
+c,d){function e(){}function f(l,p,q){this.fn=l;this.context=p;this.once=q||!1}function g(l,p,q,u,t){if("function"!=typeof q)throw new TypeError("The listener must be a function");q=new f(q,u||l,t);p=m?m+p:p;return l._events[p]?l._events[p].fn?l._events[p]=[l._events[p],q]:l._events[p].push(q):(l._events[p]=q,l._eventsCount++),l}function h(l,p){0==--l._eventsCount?l._events=new e:delete l._events[p]}function k(){this._events=new e;this._eventsCount=0}var n=Object.prototype.hasOwnProperty,m="~";Object.create&&
+(e.prototype=Object.create(null),(new e).__proto__||(m=!1));k.prototype.eventNames=function(){var l,p,q=[];if(0===this._eventsCount)return q;for(p in l=this._events)n.call(l,p)&&q.push(m?p.slice(1):p);return Object.getOwnPropertySymbols?q.concat(Object.getOwnPropertySymbols(l)):q};k.prototype.listeners=function(l){l=this._events[m?m+l:l];if(!l)return[];if(l.fn)return[l.fn];for(var p=0,q=l.length,u=Array(q);p<q;p++)u[p]=l[p].fn;return u};k.prototype.listenerCount=function(l){return(l=this._events[m?
+m+l:l])?l.fn?1:l.length:0};k.prototype.emit=function(l,p,q,u,t,x){var r=m?m+l:l;if(!this._events[r])return!1;var y;r=this._events[r];var v=arguments.length;if(r.fn){switch(r.once&&this.removeListener(l,r.fn,void 0,!0),v){case 1:return r.fn.call(r.context),!0;case 2:return r.fn.call(r.context,p),!0;case 3:return r.fn.call(r.context,p,q),!0;case 4:return r.fn.call(r.context,p,q,u),!0;case 5:return r.fn.call(r.context,p,q,u,t),!0;case 6:return r.fn.call(r.context,p,q,u,t,x),!0}w=1;for(y=Array(v-1);w<
+v;w++)y[w-1]=arguments[w];r.fn.apply(r.context,y)}else for(var z,B=r.length,w=0;w<B;w++)switch(r[w].once&&this.removeListener(l,r[w].fn,void 0,!0),v){case 1:r[w].fn.call(r[w].context);break;case 2:r[w].fn.call(r[w].context,p);break;case 3:r[w].fn.call(r[w].context,p,q);break;case 4:r[w].fn.call(r[w].context,p,q,u);break;default:if(!y)for(z=1,y=Array(v-1);z<v;z++)y[z-1]=arguments[z];r[w].fn.apply(r[w].context,y)}return!0};k.prototype.on=function(l,p,q){return g(this,l,p,q,!1)};k.prototype.once=function(l,
+p,q){return g(this,l,p,q,!0)};k.prototype.removeListener=function(l,p,q,u){l=m?m+l:l;if(!this._events[l])return this;if(!p)return h(this,l),this;var t=this._events[l];if(t.fn)t.fn!==p||u&&!t.once||q&&t.context!==q||h(this,l);else{for(var x=0,r=[],y=t.length;x<y;x++)(t[x].fn!==p||u&&!t[x].once||q&&t[x].context!==q)&&r.push(t[x]);r.length?this._events[l]=1===r.length?r[0]:r:h(this,l)}return this};k.prototype.removeAllListeners=function(l){var p;return l?(p=m?m+l:l,this._events[p]&&h(this,p)):(this._events=
+new e,this._eventsCount=0),this};k.prototype.off=k.prototype.removeListener;k.prototype.addListener=k.prototype.on;k.prefixed=m;k.EventEmitter=k;void 0!==c&&(c.exports=k)},{}]},{},[1])(1)}();class PublicEventAPI$$module$src$events{constructor(a){this.parent=a;this.eventEmitter=new module$node_modules$eventemitter3$umd$eventemitter3_min.default;this.currentDerivedPlayState=void 0;this.decorateAPI=this.decorateAPI.bind(this);this.triggerRealtimePerformanceStarted=this.triggerRealtimePerformanceStarted.bind(this);this.triggerRealtimePerformancePaused=this.triggerRealtimePerformancePaused.bind(this);this.triggerRealtimePerformanceResumed=this.triggerRealtimePerformanceResumed.bind(this);
+this.triggerRealtimePerformanceEnded=this.triggerRealtimePerformanceEnded.bind(this);this.triggerRenderStarted=this.triggerRenderStarted.bind(this);this.triggerRenderEnded=this.triggerRenderEnded.bind(this);this.triggerOnAudioNodeCreated=this.triggerOnAudioNodeCreated.bind(this);this.terminateInstance=this.terminateInstance.bind(this)}terminateInstance(){this.eventEmitter.removeAllListeners("play pause stop realtimePerformanceStarted realtimePerformancePaused realtimePerformanceResumed realtimePerformanceEnded renderStarted renderEnded onAudioNodeCreated message".split(" "));
+Object.keys(this).forEach(a=>delete this[a])}triggerRealtimePerformanceStarted(){this.eventEmitter.emit("realtimePerformanceStarted");"play"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("play"),this.currentDerivedPlayState="play")}triggerRealtimePerformancePaused(){this.eventEmitter.emit("realtimePerformancePaused");"pause"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("pause"),this.currentDerivedPlayState="pause")}triggerRealtimePerformanceResumed(){this.eventEmitter.emit("realtimePerformanceResumed");
+"play"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("play"),this.currentDerivedPlayState="play")}triggerRealtimePerformanceEnded(){this.eventEmitter.emit("realtimePerformanceEnded");"stop"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("stop"),this.currentDerivedPlayState="stop")}triggerRenderStarted(){this.eventEmitter.emit("renderStarted");"stop"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("stop"),this.currentDerivedPlayState="stop")}triggerRenderEnded(){this.eventEmitter.emit("renderEnded");
+"stop"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("stop"),this.currentDerivedPlayState="stop")}triggerOnAudioNodeCreated(a){this.eventEmitter.emit("onAudioNodeCreated",a)}triggerMessage({log:a}){this.eventEmitter.emit("message",a)}decorateAPI(a){a.eventNames=this.eventEmitter.eventNames.bind(this.eventEmitter);a.listenerCount=this.eventEmitter.listenerCount.bind(this.eventEmitter);a.listeners=this.eventEmitter.listeners.bind(this.eventEmitter);a.off=this.eventEmitter.off.bind(this.eventEmitter);
+a.on=this.eventEmitter.on.bind(this.eventEmitter);a.addListener=this.eventEmitter.on.bind(this.eventEmitter);a.once=this.eventEmitter.once.bind(this.eventEmitter);a.removeAllListeners=this.eventEmitter.removeAllListeners.bind(this.eventEmitter);a.removeListener=this.eventEmitter.removeListener.bind(this.eventEmitter);return a}}var module$src$events={};module$src$events.PublicEventAPI=PublicEventAPI$$module$src$events;var $jscompDefaultExport$$module$dist$__compiled_vanilla_worker_inline=()=>(window.URL||window.webkitURL).createObjectURL(new Blob(['(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(".");d=d||goog.global;a[0]in d||"undefined"==typeof d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE="en";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(".")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;\ngoog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;\ngoog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error(\'Module with namespace "\'+a+\'" already exists.\');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error(\'Module with namespace "\'+\na+\'" has been loaded incorrectly.\');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0});\ngoog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath="";goog.abstractMethod=function(){throw Error("unimplemented abstract method");};\ngoog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME="goog";\ngoog.hasBadLetScoping=null;\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if("function"===typeof a)d=a.call(void 0,d);else if("string"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error("Invalid module definition");var e=goog.moduleLoaderState_.moduleName;if("string"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&\nObject.seal&&"object"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error(\'Invalid module name "\'+e+\'"\');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};\ngoog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};\ngoog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};\ngoog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split("-");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join("-")};d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};\ngoog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,"&lt;"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&apos;/g,"\'").replace(/&quot;/g,\'"\').replace(/&amp;/g,"&"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};\ngoog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"").match(/Edge\\/(\\d+)(\\.\\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?"complete"!=a.readyState:"loading"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&"string"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=\ngoog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?");d=-1==d?c.length:d;if("base.js"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,"\\\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=\n[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error("Unregonized namespace: "+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},\ngoog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=\nfunction(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error("Bad dependency path or symbol: "+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_("goog.require could not find: "+a)},goog.DebugLoader_.prototype.loadDeps_=\nfunction(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error("Cannot call pause after the call to load.");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error("Double call to loaded.");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,\nmoduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||""})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error("Cannot register with defer after the call to load.");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};\ntry{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==\na.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?\nthis.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=\nfunction(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf("://");0<=b&&(a=a.substring(b+3),b=a.indexOf("/"),0<=b&&(a=a.substring(b+1)));return a},\ngoog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},\ngoog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error("Callback key "+a+" does not exist (was base.js loaded more than once?).");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==\nb.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error(\'Cannot write "\'+this.path+\'" after document load\');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&"complete"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?\' nonce="\'+c+\'"\':"";var f=\'<script src="\'+this.path+\'"\'+\nc+(goog.Dependency.defer_?" defer":"")+\' id="script-\'+e+\'">\\x3c/script>\';f+="<script"+c+">";f=goog.Dependency.defer_?f+("document.getElementById(\'script-"+e+"\').onload = function() {\\n goog.Dependency.callback_(\'"+e+"\', this);\\n};\\n"):f+("goog.Dependency.callback_(\'"+e+"\', document.getElementById(\'script-"+e+"\'));");f+="\\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement("script");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=\nc);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,\nb,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,m){var n="",p=goog.getScriptNonce_();p&&(n=\' nonce="\'+p+\'"\');l=m?\'<script type="module" crossorigin\'+n+">"+m+"\\x3c/script>":\'<script type="module" crossorigin src="\'+l+\'"\'+n+">\\x3c/script>";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,m){var n=d.createElement("script");n.defer=!0;n.async=!1;n.type="module";n.setAttribute("crossorigin",\n!0);var p=goog.getScriptNonce_();p&&(n.nonce=p);m?n.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(n)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);\na.setModuleState(goog.ModuleType.ES6)});f(void 0,\'goog.Dependency.callback_("\'+g+\'")\');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,\'import * as m from "\'+this.path+\'"; goog.Dependency.callback_("\'+h+\'", m)\');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,\'goog.Dependency.callback_("\'+\nk+\'")\')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=\ne.transform(e.contents_),e.contents_&&(e.contents_+="\\n//# sourceURL="+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var l=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(l));if(f)var m=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),m)});a.loaded()}}\nfunction d(){var l=goog.global.document,m=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(m);c()}),n=goog.getScriptNonce_();n="<script"+(n?\' nonce="\'+n+\'"\':"")+">"+goog.protectScriptTag_(\'goog.Dependency.callback_("\'+m+\'");\')+"\\x3c/script>";l.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(n):n)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,a.loaded()):\na.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&("ActiveXObject"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){"interactive"==h.readyState&&(h.onreadystatechange=\nk,c(),a.resume());"function"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,\nc,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?"goog.loadModule("+goog.global.JSON.stringify(a+"\\n//# sourceURL="+this.path+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+a+"\\n;return exports});\\n//# sourceURL="+this.path+"\\n"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=\nb||[];a=a.replace(/\\\\/g,"/");var e=goog.normalizePath_(goog.basePath+a);d&&"boolean"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?\nnew goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),\ngoog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy("goog#base#devonly#eval")||{createScript:goog.identity_}};const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.proxy"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.endpoint"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.releaseProxy"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.thrown"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>"object"===typeof a&&null!==a||"function"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=\n{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&\nthrowMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([["proxy",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],["throw",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);\nfunction expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener("message",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const m=h.slice(0,-1).reduce((p,q)=>p[q],a),n=h.reduce((p,q)=>p[q],a);switch(g){case "GET":var l=n;break;case "SET":m[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);\nl=!0;break;case "APPLY":l=n.apply(m,k);break;case "CONSTRUCT":const p=new n(...k);l=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case "ENDPOINT":const {port1:q,port2:w}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,w);l=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case "RELEASE":l=void 0;break;default:return}}catch(m){l={value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(l).catch(m=>\n({value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(m=>{const [n,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(m);b.postMessage(Object.assign(Object.assign({},n),{id:f}),p);"RELEASE"===g&&(b.removeEventListener("message",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return"MessagePort"===a.constructor.name}\nfunction closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error("Proxy has been released and is not useable");}\nfunction createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"RELEASE",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if("then"===\ng){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"GET",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,l]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"SET",path:[...b,g].map(m=>m.toString()),value:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"ENDPOINT"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if("bind"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\nb.slice(0,-1));const [k,l]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"APPLY",path:b.map(m=>m.toString()),argumentList:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"CONSTRUCT",path:b.map(l=>l.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}\nfunction processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}\nfunction proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c="*"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}\nfunction toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:"HANDLER",name:b,value:d},e]}return[{type:"RAW",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}\nfunction fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case "HANDLER":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case "RAW":return a.value}}\nfunction requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener("message",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener("message",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}\nfunction generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;\nMessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};\nvar LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b="log_with_warnings"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error("Invalid log level "+b+" allowed: "+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=\nfunction(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e="log_with_warnings"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>\nmodule$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split("{}");for(var k=[f.mockConsole,"%c"+b,c],l=0;l<h.length;l++)k.push(h[l]),void 0!==g[l]&&k.push(g[l]);if(h.length-1!==g.length)if("log_with_warnings"===f.logLevel)f.mockConsole.error("MissMatch amount of arguments");else if("log_raise_error"===f.logLevel)throw Error("MissMatch amount of arguments");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,\nc){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return"color: white; background-color: "+b+"; padding: 2px 6px; border-radius: 2px; font-size: 10px"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^\nd>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b="");b=a.getHash(b);for(var c="#",d=0;3>d;d++)c+=("00"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,"trace"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,"debug"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,\n"info"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,"warn"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,"error")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;\nconst isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};\nlogSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;\nmodule$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;\nmodule$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const DEFAULT_BUFFER_LEN$$module$src$constants=128,MAX_CHANNELS$$module$src$constants=32,RING_BUFFER_SIZE$$module$src$constants=16384,MIDI_BUFFER_SIZE$$module$src$constants=1024,MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants=3,CALLBACK_DATA_BUFFER_SIZE$$module$src$constants=16384,initialSharedState$$module$src$constants=[0,4096,0,0,0,0,-1,-1,-1,-1,0,DEFAULT_BUFFER_LEN$$module$src$constants,0,0,0,0,0,0,0,0],AUDIO_STATE$$module$src$constants={CSOUND_LOCK:0,FRAMES_REQUESTED:1,IS_PERFORMING:2,IS_RENDERING:3,\nIS_PAUSED:4,STOP:5,SAMPLE_RATE:6,KSMPS:7,NCHNLS:8,NCHNLS_I:9,IS_REQUESTING_MIC:10,BUFFER_LEN:11,OUTPUT_READ_INDEX:12,OUTPUT_WRITE_INDEX:13,AVAIL_IN_BUFS:14,AVAIL_OUT_BUFS:15,IS_REQUESTING_RTMIDI:16,RTMIDI_INDEX:17,AVAIL_RTMIDI_EVENTS:18,HAS_PENDING_CALLBACKS:19},DATA_TYPE$$module$src$constants={NUMBER:0,STRING:1,FLOAT_32:2,FLOAT_64:3};var module$src$constants={};module$src$constants.AUDIO_STATE=AUDIO_STATE$$module$src$constants;module$src$constants.CALLBACK_DATA_BUFFER_SIZE=CALLBACK_DATA_BUFFER_SIZE$$module$src$constants;\nmodule$src$constants.DATA_TYPE=DATA_TYPE$$module$src$constants;module$src$constants.DEFAULT_BUFFER_LEN=DEFAULT_BUFFER_LEN$$module$src$constants;module$src$constants.MAX_CHANNELS=MAX_CHANNELS$$module$src$constants;module$src$constants.MIDI_BUFFER_PAYLOAD_SIZE=MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants;module$src$constants.MIDI_BUFFER_SIZE=MIDI_BUFFER_SIZE$$module$src$constants;module$src$constants.RING_BUFFER_SIZE=RING_BUFFER_SIZE$$module$src$constants;module$src$constants.initialSharedState=initialSharedState$$module$src$constants;const handleCsoundStart$$module$src$workers$common_utils=(a,b,c,d,e)=>f=>{const {csound:g}=f,h=1===b.csoundShouldDaemonize(g);h&&(b.csoundSetOption(g,"--daemon"),b.csoundSetOption(g,"-odac"));const k=b.csoundStart(g),l=b.csoundGetOutputName(g)||"test.wav";logCommonUtils$$module$src$logger(`handleCsoundStart: actual csoundStart result ${k}, outputName: ${l}`)();0!==k&&a.post(`error: csoundStart failed while trying to render ${l},`+" look out for errors in options and syntax");setTimeout(()=>{const m=\nb._isRequestingRtMidiInput(g);if(h||m||l.includes("dac"))d(f);else if(a.broadcastPlayState("renderStarted"),e)e(f);else for(;0===b.csoundPerformKsmps(g););},0);return k},instantiateAudioPacket$$module$src$workers$common_utils=(a,b)=>{const c=[];for(let d=0;d<a;d++)c.push(new Float64Array(b));return c},renderFunction$$module$src$workers$common_utils=({libraryCsound:a,workerMessagePort:b})=>async({csound:c})=>{const d=a.csoundGetKr(c);let e=0,f=0;for(;("renderStarted"===b.vanillaWorkerState||"renderStarted"===\nb.workerState)&&0===e;)e=a.csoundPerformKsmps(c),f+=1,"function"===typeof setTimeout&&0===e&&0===f%(2*d)&&await new Promise(g=>setTimeout(g,0));b.broadcastPlayState("renderEnded")};var module$src$workers$common_utils={};module$src$workers$common_utils.handleCsoundStart=handleCsoundStart$$module$src$workers$common_utils;module$src$workers$common_utils.instantiateAudioPacket=instantiateAudioPacket$$module$src$workers$common_utils;module$src$workers$common_utils.renderFunction=renderFunction$$module$src$workers$common_utils;const csoundCreate$$module$src$modules$instantiation=a=>()=>a.exports.csoundCreateWasi();csoundCreate$$module$src$modules$instantiation.toString=()=>"create = async () => undefined;";const csoundDestroy$$module$src$modules$instantiation=a=>b=>a.exports.csoundDestroy(b);csoundDestroy$$module$src$modules$instantiation.toString=()=>"destroy = async () => undefined;";const csoundGetAPIVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetAPIVersion();\ncsoundGetAPIVersion$$module$src$modules$instantiation.toString=()=>"getAPIVersion = async () => Number;";const csoundGetVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetVersion();csoundGetVersion$$module$src$modules$instantiation.toString=()=>"getVersion = async () => Number;";const csoundInitialize$$module$src$modules$instantiation=a=>(b,c)=>a.exports.csoundInitialize(c);csoundInitialize$$module$src$modules$instantiation.toString=()=>"initialize = async () => Number;";\nvar module$src$modules$instantiation={};module$src$modules$instantiation.csoundCreate=csoundCreate$$module$src$modules$instantiation;module$src$modules$instantiation.csoundDestroy=csoundDestroy$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetAPIVersion=csoundGetAPIVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetVersion=csoundGetVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundInitialize=csoundInitialize$$module$src$modules$instantiation;const WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders=!1;function TextEncoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";return this}TextEncoderPoly$$module$src$utils$text_encoders.prototype.encode=function(a){if("string"!==typeof a)throw new TypeError("passed argument must be of type string "+a+" "+typeof a);a=unescape(encodeURIComponent(a));const b=new Uint8Array(a.length);[...a].forEach(function(c,d){b[d]=c.codePointAt(0)});return b};\nfunction TextDecoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";this.ignoreBOM=!1;this.trimNull=a=>{const b=a.indexOf("\\x00");return-1<b?a.slice(0,Math.max(0,b)):a};this.decode=function(a,b){if(void 0===a)return"";if("boolean"!==typeof(void 0!==b&&"stream"in b?b.stream:!1))throw new TypeError("stream option must be boolean");if(ArrayBuffer.isView(a)){a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);const c=Array.from({length:a.length});a.forEach(function(d,e){c[e]=String.fromCodePoint(d)});\nreturn this.trimNull(c.join(""))}throw new TypeError("passed argument must be an array buffer view");}}\nconst decoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextDecoderPoly$$module$src$utils$text_encoders:new TextDecoder("utf8"),encoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextEncoderPoly$$module$src$utils$text_encoders:new TextEncoder("utf8"),uint2String$$module$src$utils$text_encoders=a=>decoder$$module$src$utils$text_encoders.decode(a);var module$src$utils$text_encoders={};\nmodule$src$utils$text_encoders.decoder=decoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.encoder=encoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.uint2String=uint2String$$module$src$utils$text_encoders;const trimNull$$module$src$utils$trim_null=a=>{const b=a.indexOf("\\x00");return-1<b?a.substr(0,b):a};var module$src$utils$trim_null={};module$src$utils$trim_null.trimNull=trimNull$$module$src$utils$trim_null;const freeStringPtr$$module$src$utils$string_pointers=(a,b)=>{a.exports.freeStringMem(b)},ptr2string$$module$src$utils$string_pointers=(a,b)=>{({buffer:a}=a.wasi.memory);b=new Uint8Array(a,b);b=uint2String$$module$src$utils$text_encoders(b);return trimNull$$module$src$utils$trim_null(b)},string2ptr$$module$src$utils$string_pointers=(a,b)=>{if("string"!==typeof b)console.error("Expected string but got",typeof b);else{b=encoder$$module$src$utils$text_encoders.encode(b);var c=a.exports.allocStringMem(b.length);\n({buffer:a}=a.wasi.memory);(new Uint8Array(a,c,b.length+1)).set(b);return c}};var module$src$utils$string_pointers={};module$src$utils$string_pointers.freeStringPtr=freeStringPtr$$module$src$utils$string_pointers;module$src$utils$string_pointers.ptr2string=ptr2string$$module$src$utils$string_pointers;module$src$utils$string_pointers.string2ptr=string2ptr$$module$src$utils$string_pointers;const csoundParseOrc$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundParseOrc(b,c);csoundParseOrc$$module$src$modules$performance.toString=()=>"parseOrc = async (orchestra) => Object;";const csoundCompileTree$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundCompileTree(b,c);csoundCompileTree$$module$src$modules$performance.toString=()=>"compileTree = async (tree) => Number;";\nconst csoundCompileOrc$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileOrc(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileOrc$$module$src$modules$performance.toString=()=>"compileOrc = async (orchestra) => Number;";\nconst csoundEvalCode$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundEvalCode(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundEvalCode$$module$src$modules$performance.toString=()=>"csoundEvalCode = async (orchestra) => Number;";const csoundStart$$module$src$modules$performance=a=>b=>a.exports.csoundStartWasi(b);csoundStart$$module$src$modules$performance.toString=()=>"start = async () => Number;";\nconst csoundCompileCsd$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);let d;try{d=a.exports.csoundCompileCsd(b,c)}catch(e){console.error(e)}freeStringPtr$$module$src$utils$string_pointers(a,c);return d};csoundCompileCsd$$module$src$modules$performance.toString=()=>"compileCsd = async (path) => Number;";\nconst csoundCompileCsdText$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileCsdText(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileCsdText$$module$src$modules$performance.toString=()=>"compileCsdText = async (csoundDocument) => Number;";const csoundPerform$$module$src$modules$performance=a=>b=>a.exports.csoundPerform(b);csoundPerform$$module$src$modules$performance.toString=()=>"perform = async () => Number;";\nconst csoundPerformKsmps$$module$src$modules$performance=a=>b=>a.exports.csoundPerformKsmpsWasi(b);csoundPerformKsmps$$module$src$modules$performance.toString=()=>"performKsmps = async (csound) => Number;";const csoundPerformBuffer$$module$src$modules$performance=a=>b=>a.exports.csoundPerformBuffer(b);csoundPerformBuffer$$module$src$modules$performance.toString=()=>"performBuffer = async (csound) => Number;";const csoundStop$$module$src$modules$performance=a=>b=>a.exports.csoundStop(b);\ncsoundStop$$module$src$modules$performance.toString=()=>"stop = async () => undefined;";const csoundCleanup$$module$src$modules$performance=a=>b=>a.exports.csoundCleanup(b);csoundCleanup$$module$src$modules$performance.toString=()=>"cleanup = async () => Number;";const csoundReset$$module$src$modules$performance=a=>b=>a.exports.csoundResetWasi(b);csoundReset$$module$src$modules$performance.toString=()=>"reset = async () => Number;";var module$src$modules$performance={};\nmodule$src$modules$performance.csoundCleanup=csoundCleanup$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsd=csoundCompileCsd$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsdText=csoundCompileCsdText$$module$src$modules$performance;module$src$modules$performance.csoundCompileOrc=csoundCompileOrc$$module$src$modules$performance;module$src$modules$performance.csoundCompileTree=csoundCompileTree$$module$src$modules$performance;\nmodule$src$modules$performance.csoundEvalCode=csoundEvalCode$$module$src$modules$performance;module$src$modules$performance.csoundParseOrc=csoundParseOrc$$module$src$modules$performance;module$src$modules$performance.csoundPerform=csoundPerform$$module$src$modules$performance;module$src$modules$performance.csoundPerformBuffer=csoundPerformBuffer$$module$src$modules$performance;module$src$modules$performance.csoundPerformKsmps=csoundPerformKsmps$$module$src$modules$performance;\nmodule$src$modules$performance.csoundReset=csoundReset$$module$src$modules$performance;module$src$modules$performance.csoundStart=csoundStart$$module$src$modules$performance;module$src$modules$performance.csoundStop=csoundStop$$module$src$modules$performance;const sizeOfPrimitive$$module$src$utils$native_sizes={int:4,MYFLT:4,char:1},sizeofStruct$$module$src$utils$native_sizes=a=>a.reduce((b,[,c,...d])=>b+("char"===c?sizeOfPrimitive$$module$src$utils$native_sizes[c]*d[0]:sizeOfPrimitive$$module$src$utils$native_sizes[c]),0);var module$src$utils$native_sizes={};module$src$utils$native_sizes.sizeOfPrimitive=sizeOfPrimitive$$module$src$utils$native_sizes;module$src$utils$native_sizes.sizeofStruct=sizeofStruct$$module$src$utils$native_sizes;const structBufferToObject$$module$src$utils$structure_buffer_to_object=(a,b)=>{[a]=a.reduce(([c,d],[e,f,...g])=>{g="char"===f?sizeOfPrimitive$$module$src$utils$native_sizes[f]*g[0]:sizeOfPrimitive$$module$src$utils$native_sizes[f];f="char"===f?trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(b.subarray(d,g)))||"":b[d];c[e]=f;return[c,d+g]},[{},0]);return a};var module$src$utils$structure_buffer_to_object={};\nmodule$src$utils$structure_buffer_to_object.structBufferToObject=structBufferToObject$$module$src$utils$structure_buffer_to_object;const CSOUND_PARAMS$$module$src$structures=[["debug_mode","int"],["buffer_frames","int"],["hardware_buffer_frames","int"],["displays","int"],["ascii_graphs","int"],["postscript_graphs","int"],["message_level","int"],["tempo","int"],["ring_bell","int"],["use_cscore","int"],["terminate_on_midi","int"],["heartbeat","int"],["defer_gen01_load","int"],["midi_key","int"],["midi_key_cps","int"],["midi_key_oct","int"],["midi_key_pch","int"],["midi_velocity","int"],["midi_velocity_amp","int"],["no_default_paths",\n"int"],["number_of_threads","int"],["syntax_check_only","int"],["csd_line_counts","int"],["compute_weights","int"],["realtime_mode","int"],["sample_accurate","int"],["sample_rate_override","MYFLT"],["control_rate_override","MYFLT"],["nchnls_override","int"],["nchnls_i_override","int"],["e0dbfs_override","MYFLT"],["daemon","int"],["ksmps_override","int"],["FFT_library","int"]],CS_MIDIDEVICE$$module$src$structures=[["device_name","char",64],["interface_name","char",64],["device_id","char",64],["midi_module",\n"char",64],["isOutput","int"]];var module$src$structures={};const csoundGetSr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSr(b);csoundGetSr$$module$src$modules$attributes.toString=()=>"getSr = async () => Number;";const csoundGetKr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKr(b);csoundGetKr$$module$src$modules$attributes.toString=()=>"getKr = async () => Number;";const csoundGetKsmps$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKsmps(b);csoundGetKsmps$$module$src$modules$attributes.toString=()=>"getKsmps = async () => Number;";\nconst csoundGetNchnls$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnls(b);csoundGetNchnls$$module$src$modules$attributes.toString=()=>"getNchnls = async () => Number;";const csoundGetNchnlsInput$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnlsInput(b);csoundGetNchnlsInput$$module$src$modules$attributes.toString=()=>"getNchnlsInput = async () => Number;";const csoundGet0dBFS$$module$src$modules$attributes=a=>b=>a.exports.csoundGet0dBFS(b);\ncsoundGet0dBFS$$module$src$modules$attributes.toString=()=>"get0dBFS = async () => Number;";const csoundGetA4$$module$src$modules$attributes=a=>b=>a.exports.csoundGetA4(b);csoundGetA4$$module$src$modules$attributes.toString=()=>"getA4 = async () => Number;";const csoundGetCurrentTimeSamples$$module$src$modules$attributes=a=>b=>a.exports.csoundGetCurrentTimeSamples(b);csoundGetCurrentTimeSamples$$module$src$modules$attributes.toString=()=>"getCurrentTimeSamples = async () => Number;";\nconst csoundGetSizeOfMYFLT$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSizeOfMYFLT(b);csoundGetSizeOfMYFLT$$module$src$modules$attributes.toString=()=>"getSizeOfMYFLT = async () => Number;";const csoundSetOption$$module$src$modules$attributes=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundSetOption(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundSetOption$$module$src$modules$attributes.toString=()=>"setOption = async (option) => Number;";\nconst csoundSetParams$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetParams(b,c)};csoundSetParams$$module$src$modules$attributes.toString=()=>"setParams = async (csoundParams) => undefined;";\nconst csoundGetParams$$module$src$modules$attributes=a=>b=>{var {buffer:c}=a.wasi.memory;const d=sizeofStruct$$module$src$utils$native_sizes(CSOUND_PARAMS$$module$src$structures),e=a.exports.allocCsoundParamsStruct();c=new Uint8Array(c,e,d);a.exports.csoundGetParams(b,e);b=structBufferToObject$$module$src$utils$structure_buffer_to_object(CSOUND_PARAMS$$module$src$structures,c);a.exports.freeCsoundParams(e);return b};csoundGetParams$$module$src$modules$attributes.toString=()=>"getParams = async () => CSOUND_PARAMS;";\nconst csoundGetDebug$$module$src$modules$attributes=a=>b=>a.exports.csoundGetDebug(b);csoundGetDebug$$module$src$modules$attributes.toString=()=>"getDebug = async () => Number;";const csoundSetDebug$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetDebug(b,c)};csoundSetDebug$$module$src$modules$attributes.toString=()=>"setDebug = async (number) => undefined;";var module$src$modules$attributes={};module$src$modules$attributes.csoundGet0dBFS=csoundGet0dBFS$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundGetA4=csoundGetA4$$module$src$modules$attributes;module$src$modules$attributes.csoundGetCurrentTimeSamples=csoundGetCurrentTimeSamples$$module$src$modules$attributes;module$src$modules$attributes.csoundGetDebug=csoundGetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKr=csoundGetKr$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKsmps=csoundGetKsmps$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundGetNchnls=csoundGetNchnls$$module$src$modules$attributes;module$src$modules$attributes.csoundGetNchnlsInput=csoundGetNchnlsInput$$module$src$modules$attributes;module$src$modules$attributes.csoundGetParams=csoundGetParams$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSizeOfMYFLT=csoundGetSizeOfMYFLT$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSr=csoundGetSr$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundSetDebug=csoundSetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundSetOption=csoundSetOption$$module$src$modules$attributes;module$src$modules$attributes.csoundSetParams=csoundSetParams$$module$src$modules$attributes;const csoundGetInputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBufferSize(b);csoundGetInputBufferSize$$module$src$modules$rtaudio.toString=()=>"getInputBufferSize = async () => Number;";const csoundGetOutputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBufferSize(b);csoundGetOutputBufferSize$$module$src$modules$rtaudio.toString=()=>"getOutputBufferSize = async () => Number;";const csoundGetInputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBuffer(b);\ncsoundGetInputBuffer$$module$src$modules$rtaudio.toString=()=>"getInputBuffer = async () => Number;";const csoundGetOutputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBuffer(b);csoundGetOutputBuffer$$module$src$modules$rtaudio.toString=()=>"getOutputBuffer = async () => Number;";const csoundGetSpin$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpin(b);csoundGetSpin$$module$src$modules$rtaudio.toString=()=>"getSpin = async (csound) => Number;";\nconst csoundGetSpout$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpout(b);csoundGetSpout$$module$src$modules$rtaudio.toString=()=>"getSpout = async () => Number;";var module$src$modules$rtaudio={};module$src$modules$rtaudio.csoundGetInputBuffer=csoundGetInputBuffer$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetInputBufferSize=csoundGetInputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetOutputBuffer=csoundGetOutputBuffer$$module$src$modules$rtaudio;\nmodule$src$modules$rtaudio.csoundGetOutputBufferSize=csoundGetOutputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpin=csoundGetSpin$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpout=csoundGetSpout$$module$src$modules$rtaudio;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}\nfunction adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}\nfunction and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}\nfunction anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.split("").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}\nfunction apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;\nfunction __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&"constructor"!==c&&("object"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),"function"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}\nfunction __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&"undefined"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}\nfunction __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,\nb,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;\nfor(;d<f;d++){if("object"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);"function"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&"constructor"!==e&&("object"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):"function"===typeof a[e]&&(d[e]=a[e](...c)));return d}\nfunction applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;\nfunction assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d="string"===typeof a?a.split(".").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e="object"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&\nisArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}\nfunction _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)}}}\nfunction curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error("First argument to _arity must be a non-negative integer no greater than ten");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}\nfunction bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}\nfunction chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error("min must not be greater than max in clamp(min, max, value)");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]="object"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}\nclass ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError("reduce: list must be array or iterable");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}\nconst reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);\nfunction _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)};default:throw Error("First argument to _arity must be a non-negative integer no greater than ten");}}\nfunction _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}\nfunction pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("pipe requires at least one argument");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}\nfunction compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("compose requires at least one argument");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof a?`${a}${b}`:[...a,...b]}\nfunction cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}\nfunction mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nfunction map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}\nfunction converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}\nfunction count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}\nconst dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}\nfunction type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return"Null";if(void 0===a)return"Undefined";if(Number.isNaN(a))return"NaN";a=Object.prototype.toString.call(a).slice(8,-1);return"AsyncFunction"===a?"Promise":a}\nfunction _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}\nfunction parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return["Error","TypeError"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}\nfunction equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if("Function"===c)return void 0===a.name?!1:a.name===b.name;if(["NaN","Undefined","Null"].includes(c))return!0;if("Number"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if(["String","Boolean"].includes(c))return a.toString()===\nb.toString();if("Array"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);\nif(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if("Set"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if("Object"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});\nreturn f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \\\'indexOf\\\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}\nclass _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Null","Undefined","NaN"].includes(b)?b in this.items?!1:this.items[b]=!0:["Object","Array"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}\nfunction uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}\nfunction drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}\nfunction dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if("function"!==typeof a)throw Error(`\'predicate\' is from wrong type ${typeof a}`);if(!c&&"string"!==typeof b)throw Error(`\'iterable\' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):\n(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join("")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}\nfunction dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}\nfunction dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join("")}\nfunction either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}\nfunction endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if("string"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}\nfunction prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}\nfunction evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if("Object"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return"Function"===e?a[d](c):"Object"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}\nfunction evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error("iterableType !== rulesType");if(!["Object","Array"].includes(c))throw Error(`\'iterable\' and \'rules\' are from wrong type ${c}`);return"Object"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,\nb)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}\nfunction filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error("Incorrect iterable input");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}\nfunction findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}\nfunction flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}\nfunction flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error("R.flip doesn\'t work with arity > 4");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}\nfunction fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}\nfunction groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError("list.reduce is not a function");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),l=0===e.length;h=h===b.length-1;if(k)return l&&e.push(f),e.push(g),h&&d.push(e),g;if(l)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},\nvoid 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b="."){return"string"===typeof a?a.split(b):a}\nfunction path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}\nfunction hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[0]||"":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;\nfunction identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===("boolean"===typeof a?a:a(...d))?b(...d):c(...d)}\nconst ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}\nfunction indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}\nfunction indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}\nfunction init$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}\nfunction intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}\nfunction isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Undefined","NaN","Number","Null"].includes(b)?!1:a?"Object"===b?0===Object.keys(a).length:"Array"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}\nfunction join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[a.length-1]||"":a[a.length-1]}\nfunction lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||"string"===typeof a?a.length:NaN}\nfunction lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return"[object String]"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}\nfunction updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}\nfunction lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}\nfunction mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}\nfunction mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}\nfunction mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}\nfunction mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}\nconst mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}\nfunction _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,\nd,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],\nb,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}\nfunction moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error("Rambda.move does not support negative indexes");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}\nfunction not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}\nfunction omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}\nfunction on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}\nfunction once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});\nfunction overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}\nfunction partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}\nfunction pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}\nfunction pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof b?[a].concat(b.split("")):[a].concat(b)}\nconst product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error("propsToPick is not a list");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}\nconst propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError("Both arguments to range must be numbers");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}\nfunction reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}\nconst replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.split("").reverse().join(""):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}\nconst set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}\nfunction split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||"Function"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}\nfunction take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():"string"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}\nfunction splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property \'slice\' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&"string"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,\nb)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error("First argument to splitEvery must be a positive integer");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}\nfunction splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property \'length\' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}\nfunction startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}\nfunction subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}\nfunction symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}\nfunction T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}\nfunction takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return"string"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}\nfunction takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join("")}\nfunction takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join("")}\nfunction tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof a)throw new TypeError(`\\u2018test\\u2019 requires a value of type RegExp as its first argument; received "${a}"`);return-1!==b.search(a)}\nfunction times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError("n must be an integer");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}\nfunction toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}\nfunction trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>["Promise","Function"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));\nfunction tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn \'${a}\'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}\nfunction union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}\nfunction uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}\nfunction uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}\nfunction unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}\nfunction values$$module$node_modules$rambda$dist$rambda_mjs(a){return"Object"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}\nfunction whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}\nfunction whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}\nfunction whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}\nfunction without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}\nfunction zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}\nfunction zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;const csoundSetMidiCallbacks$$module$src$modules$rtmidi=a=>b=>{a.exports.csoundSetMidiCallbacks(b)},csoundGetMIDIDevList$$module$src$modules$rtmidi=a=>(b,c)=>{const {buffer:d}=a.wasi.memory,e=a.exports.csoundGetMIDIDevList(b,void 0,c?1:0);if(0===e)return[];const f=sizeofStruct$$module$src$utils$native_sizes(CS_MIDIDEVICE$$module$src$structures),g=a.exports.allocCsMidiDeviceStruct(e);a.exports.csoundGetMIDIDevList(b,g,c?1:0);const h=new Uint8Array(d,g,f*e);b=range$$module$node_modules$rambda$dist$rambda_mjs(0,\ne).map(k=>structBufferToObject$$module$src$utils$structure_buffer_to_object(CS_MIDIDEVICE$$module$src$structures,h.subarray(k*f,f)));a.exports.freeCsMidiDeviceStruct(g);return b};csoundGetMIDIDevList$$module$src$modules$rtmidi.toString=()=>"getMIDIDevList = async (isOutput) => Object;";\nconst csoundGetRtMidiName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getRtMidiName(b);c=new Uint8Array(c,b,128);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetRtMidiName$$module$src$modules$rtmidi.toString=()=>"getRtMidiName = async () => String;";\nconst csoundGetMidiOutFileName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getMidiOutFileName(b);c=new Uint8Array(c,b,128);b&&0<b.length&&freeStringPtr$$module$src$utils$string_pointers(a,b);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""},_isRequestingRtMidiInput$$module$src$modules$rtmidi=a=>b=>a.exports.isRequestingRtMidiInput(b),csoundPushMidiMessage$$module$src$modules$rtmidi=a=>(b,c,d,e)=>{a.exports.pushMidiMessage(b,\nc,d,e)};csoundPushMidiMessage$$module$src$modules$rtmidi.toString=()=>"midiMessage = async (status, data1, data2) => undefined;";var module$src$modules$rtmidi={};module$src$modules$rtmidi._isRequestingRtMidiInput=_isRequestingRtMidiInput$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMIDIDevList=csoundGetMIDIDevList$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMidiOutFileName=csoundGetMidiOutFileName$$module$src$modules$rtmidi;\nmodule$src$modules$rtmidi.csoundGetRtMidiName=csoundGetRtMidiName$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundPushMidiMessage=csoundPushMidiMessage$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundSetMidiCallbacks=csoundSetMidiCallbacks$$module$src$modules$rtmidi;const csoundInputMessage$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessage(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessage$$module$src$modules$control_events.toString=()=>"inputMessage = async (scoreEvent) => Number;";\nconst csoundInputMessageAsync$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessageAsync(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessageAsync$$module$src$modules$control_events.toString=()=>"inputMessageAsync = async (scoreEvent) => Number;";\nconst csoundGetControlChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetControlChannelWasi(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundGetControlChannel$$module$src$modules$control_events.toString=()=>"getControlChannel = async (channelName) => Number;";\nconst csoundSetControlChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);a.exports.csoundSetControlChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c)};csoundSetControlChannel$$module$src$modules$control_events.toString=()=>"setControlChannel = async (channelName, value) => void;";\nconst csoundGetStringChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetStringChannelWasi(b,c);const d=ptr2string$$module$src$utils$string_pointers(a,b);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,b);return d};csoundGetStringChannel$$module$src$modules$control_events.toString=()=>"getStringChannel = async (channelName) => String;";\nconst csoundSetStringChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);a.exports.csoundSetStringChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d)};csoundSetStringChannel$$module$src$modules$control_events.toString=()=>"setStringChannel = async (channelName, value) => void;";var module$src$modules$control_events={};\nmodule$src$modules$control_events.csoundGetControlChannel=csoundGetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundGetStringChannel=csoundGetStringChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessage=csoundInputMessage$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessageAsync=csoundInputMessageAsync$$module$src$modules$control_events;\nmodule$src$modules$control_events.csoundSetControlChannel=csoundSetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundSetStringChannel=csoundSetStringChannel$$module$src$modules$control_events;const csoundGetOutputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetOutputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetOutputName$$module$src$modules$general_io.toString=()=>"getOutputName = async () => String;";\nconst csoundGetInputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetInputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetInputName$$module$src$modules$general_io.toString=()=>"getInputName = async (csound) => String;";var module$src$modules$general_io={};module$src$modules$general_io.csoundGetInputName=csoundGetInputName$$module$src$modules$general_io;\nmodule$src$modules$general_io.csoundGetOutputName=csoundGetOutputName$$module$src$modules$general_io;const csoundAppendEnv$$module$src$modules$extra=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);b=a.exports.csoundAppendEnv(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d);return b};csoundAppendEnv$$module$src$modules$extra.toString=()=>"appendEnv = async (csound, variable, value) => Number;";const csoundShouldDaemonize$$module$src$modules$extra=a=>b=>a.exports.csoundShouldDaemonize(b);\nvar module$src$modules$extra={};module$src$modules$extra.csoundAppendEnv=csoundAppendEnv$$module$src$modules$extra;module$src$modules$extra.csoundShouldDaemonize=csoundShouldDaemonize$$module$src$modules$extra;const csoundIsScorePending$$module$src$modules$score_handling=a=>b=>a.exports.csoundIsScorePending(b);csoundIsScorePending$$module$src$modules$score_handling.toString=()=>"isScorePending = async () => Number;";const csoundSetScorePending$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScorePending(b,c);csoundSetScorePending$$module$src$modules$score_handling.toString=()=>"setScorePending = async (pending) => Number;";\nconst csoundReadScore$$module$src$modules$score_handling=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundReadScore(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundReadScore$$module$src$modules$score_handling.toString=()=>"readScore = async (score) => Number;";const csoundGetScoreTime$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreTime(b);csoundGetScoreTime$$module$src$modules$score_handling.toString=()=>"getScoreTime = async () => Number;";\nconst csoundGetScoreOffsetSeconds$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreOffsetSeconds(b);csoundGetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"getScoreOffsetSeconds = async () => Number;";const csoundSetScoreOffsetSeconds$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScoreOffsetSeconds(b,c);csoundSetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"setScoreOffsetSeconds = async () => Number;";\nconst csoundRewindScore$$module$src$modules$score_handling=a=>b=>a.exports.csoundRewindScore(b);csoundRewindScore$$module$src$modules$score_handling.toString=()=>"rewindScore = async () => undefined;";var module$src$modules$score_handling={};module$src$modules$score_handling.csoundGetScoreOffsetSeconds=csoundGetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundGetScoreTime=csoundGetScoreTime$$module$src$modules$score_handling;\nmodule$src$modules$score_handling.csoundIsScorePending=csoundIsScorePending$$module$src$modules$score_handling;module$src$modules$score_handling.csoundReadScore=csoundReadScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundRewindScore=csoundRewindScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScoreOffsetSeconds=csoundSetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScorePending=csoundSetScorePending$$module$src$modules$score_handling;const csoundTableLength$$module$src$modules$table=a=>(b,c)=>a.exports.csoundTableLength(b,c);csoundTableLength$$module$src$modules$table.toString=()=>"tableLength = async (tableNum) => Number;";const csoundTableGet$$module$src$modules$table=a=>(b,c,d)=>a.exports.csoundTableGet(b,c,d);csoundTableGet$$module$src$modules$table.toString=()=>"tableGet = async (tableNum, tableIndex) => Number;";const csoundTableSet$$module$src$modules$table=a=>(b,c,d,e)=>a.exports.csoundTableSet(b,c,d,e);\ncsoundTableSet$$module$src$modules$table.toString=()=>"tableSet = async (tableNum, tableIndex, value) => undefined;";const csoundTableCopyIn$$module$src$modules$table=a=>(b,c,d)=>{const e=a.exports.allocFloatArray(d.length);(new Float64Array(a.wasi.memory.buffer,e,d.length)).set(d);a.exports.csoundTableCopyIn(b,c,e);a.exports.freeFloatArrayMem(e)};csoundTableCopyIn$$module$src$modules$table.toString=()=>"tableCopyIn = async (tableNum, float64Array) => undefined;";\nconst csoundTableCopyOut$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundTableLength(b,c);if(0<d){const e=a.exports.allocFloatArray(d);a.exports.csoundTableCopyOut(b,c,e);({buffer:b}=a.wasi.memory);d=new Float64Array(b,e,d);a.exports.freeFloatArrayMem(e);return Float64Array.from(d)}};csoundTableCopyOut$$module$src$modules$table.toString=()=>"tableCopyOut = async (tableNum) => ?Float64Array;";const csoundGetTable$$module$src$modules$table=csoundTableCopyOut$$module$src$modules$table;\ncsoundTableCopyOut$$module$src$modules$table.toString=csoundTableCopyOut$$module$src$modules$table.toString;const csoundGetTableArgs$$module$src$modules$table=a=>(b,c)=>{const d=a.exports.allocFloatArray(1024);a.exports.csoundGetTableArgs(b,d,c);({buffer:b}=a.wasi.memory);b=new Float64Array(b,d,1024);a.exports.freeFloatArrayMem(d);return b};csoundGetTableArgs$$module$src$modules$table.toString=()=>"getTableArgs = async (tableNum) => ?Float64Array;";\nconst csoundIsNamedGEN$$module$src$modules$table=a=>(b,c)=>a.exports.csoundIsNamedGEN(b,c);csoundIsNamedGEN$$module$src$modules$table.toString=()=>"isNamedGEN = async (tableNum) => number;";const csoundGetNamedGEN$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundIsNamedGEN(b,c);if(0<d){const e=a.exports.allocStringMem(d);a.exports.csoundGetNamedGEN(b,e,c,d);({buffer:b}=a.wasi.memory);d=new Uint8Array(b,e,d);return uint2String$$module$src$utils$text_encoders(d)}};\ncsoundGetNamedGEN$$module$src$modules$table.toString=()=>"getNamedGEN = async (tableNum) => ?string;";var module$src$modules$table={};module$src$modules$table.csoundGetNamedGEN=csoundGetNamedGEN$$module$src$modules$table;module$src$modules$table.csoundGetTable=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundGetTableArgs=csoundGetTableArgs$$module$src$modules$table;module$src$modules$table.csoundIsNamedGEN=csoundIsNamedGEN$$module$src$modules$table;\nmodule$src$modules$table.csoundTableCopyIn=csoundTableCopyIn$$module$src$modules$table;module$src$modules$table.csoundTableCopyOut=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundTableGet=csoundTableGet$$module$src$modules$table;module$src$modules$table.csoundTableLength=csoundTableLength$$module$src$modules$table;module$src$modules$table.csoundTableSet=csoundTableSet$$module$src$modules$table;function writeFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.writeFile(c,b)}}writeFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";function appendFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.appendFile(c,b)}}appendFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";\nfunction readFile$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readFile(c)}readFile$$module$src$filesystem$worker_fs.toString=()=>"async (path) => ?Uint8Array";function unlink$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.unlink(c)}unlink$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";function readdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readdir(c)}readdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => string[]";\nfunction mkdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.mkdir(c)}mkdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";var module$src$filesystem$worker_fs={};module$src$filesystem$worker_fs.appendFile=appendFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.mkdir=mkdir$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readFile=readFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readdir=readdir$$module$src$filesystem$worker_fs;\nmodule$src$filesystem$worker_fs.unlink=unlink$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.writeFile=writeFile$$module$src$filesystem$worker_fs;const api$$module$src$libcsound={csoundCreate:csoundCreate$$module$src$modules$instantiation,csoundDestroy:csoundDestroy$$module$src$modules$instantiation,csoundGetAPIVersion:csoundGetAPIVersion$$module$src$modules$instantiation,csoundGetVersion:csoundGetVersion$$module$src$modules$instantiation,csoundInitialize:csoundInitialize$$module$src$modules$instantiation,csoundParseOrc:csoundParseOrc$$module$src$modules$performance,csoundCompileTree:csoundCompileTree$$module$src$modules$performance,csoundCompileOrc:csoundCompileOrc$$module$src$modules$performance,\ncsoundEvalCode:csoundEvalCode$$module$src$modules$performance,csoundStart:csoundStart$$module$src$modules$performance,csoundCompileCsd:csoundCompileCsd$$module$src$modules$performance,csoundCompileCsdText:csoundCompileCsdText$$module$src$modules$performance,csoundPerform:csoundPerform$$module$src$modules$performance,csoundPerformKsmps:csoundPerformKsmps$$module$src$modules$performance,csoundPerformBuffer:csoundPerformBuffer$$module$src$modules$performance,csoundStop:csoundStop$$module$src$modules$performance,\ncsoundCleanup:csoundCleanup$$module$src$modules$performance,csoundReset:csoundReset$$module$src$modules$performance,csoundGetSr:csoundGetSr$$module$src$modules$attributes,csoundGetKr:csoundGetKr$$module$src$modules$attributes,csoundGetKsmps:csoundGetKsmps$$module$src$modules$attributes,csoundGetNchnls:csoundGetNchnls$$module$src$modules$attributes,csoundGetNchnlsInput:csoundGetNchnlsInput$$module$src$modules$attributes,csoundGet0dBFS:csoundGet0dBFS$$module$src$modules$attributes,csoundGetA4:csoundGetA4$$module$src$modules$attributes,\ncsoundGetCurrentTimeSamples:csoundGetCurrentTimeSamples$$module$src$modules$attributes,csoundGetSizeOfMYFLT:csoundGetSizeOfMYFLT$$module$src$modules$attributes,csoundSetOption:csoundSetOption$$module$src$modules$attributes,csoundSetParams:csoundSetParams$$module$src$modules$attributes,csoundGetParams:csoundGetParams$$module$src$modules$attributes,csoundGetDebug:csoundGetDebug$$module$src$modules$attributes,csoundSetDebug:csoundSetDebug$$module$src$modules$attributes,csoundGetInputBufferSize:csoundGetInputBufferSize$$module$src$modules$rtaudio,\ncsoundGetOutputBufferSize:csoundGetOutputBufferSize$$module$src$modules$rtaudio,csoundGetInputBuffer:csoundGetInputBuffer$$module$src$modules$rtaudio,csoundGetOutputBuffer:csoundGetOutputBuffer$$module$src$modules$rtaudio,csoundGetSpin:csoundGetSpin$$module$src$modules$rtaudio,csoundGetSpout:csoundGetSpout$$module$src$modules$rtaudio,csoundGetMIDIDevList:csoundGetMIDIDevList$$module$src$modules$rtmidi,csoundSetMidiCallbacks:csoundSetMidiCallbacks$$module$src$modules$rtmidi,csoundGetRtMidiName:csoundGetRtMidiName$$module$src$modules$rtmidi,\ncsoundGetMidiOutFileName:csoundGetMidiOutFileName$$module$src$modules$rtmidi,csoundPushMidiMessage:csoundPushMidiMessage$$module$src$modules$rtmidi,_isRequestingRtMidiInput:_isRequestingRtMidiInput$$module$src$modules$rtmidi,csoundInputMessage:csoundInputMessage$$module$src$modules$control_events,csoundInputMessageAsync:csoundInputMessageAsync$$module$src$modules$control_events,csoundGetControlChannel:csoundGetControlChannel$$module$src$modules$control_events,csoundSetControlChannel:csoundSetControlChannel$$module$src$modules$control_events,\ncsoundGetStringChannel:csoundGetStringChannel$$module$src$modules$control_events,csoundSetStringChannel:csoundSetStringChannel$$module$src$modules$control_events,csoundGetInputName:csoundGetInputName$$module$src$modules$general_io,csoundGetOutputName:csoundGetOutputName$$module$src$modules$general_io,csoundAppendEnv:csoundAppendEnv$$module$src$modules$extra,csoundShouldDaemonize:csoundShouldDaemonize$$module$src$modules$extra,csoundIsScorePending:csoundIsScorePending$$module$src$modules$score_handling,\ncsoundSetScorePending:csoundSetScorePending$$module$src$modules$score_handling,csoundReadScore:csoundReadScore$$module$src$modules$score_handling,csoundGetScoreTime:csoundGetScoreTime$$module$src$modules$score_handling,csoundGetScoreOffsetSeconds:csoundGetScoreOffsetSeconds$$module$src$modules$score_handling,csoundSetScoreOffsetSeconds:csoundSetScoreOffsetSeconds$$module$src$modules$score_handling,csoundRewindScore:csoundRewindScore$$module$src$modules$score_handling,csoundTableLength:csoundTableLength$$module$src$modules$table,\ncsoundTableGet:csoundTableGet$$module$src$modules$table,csoundTableSet:csoundTableSet$$module$src$modules$table,csoundTableCopyIn:csoundTableCopyIn$$module$src$modules$table,csoundTableCopyOut:csoundTableCopyOut$$module$src$modules$table,csoundGetTable:csoundTableCopyOut$$module$src$modules$table,csoundGetTableArgs:csoundGetTableArgs$$module$src$modules$table,csoundIsNamedGEN:csoundIsNamedGEN$$module$src$modules$table,csoundGetNamedGEN:csoundGetNamedGEN$$module$src$modules$table,fs:module$src$filesystem$worker_fs};\nvar $jscompDefaultExport$$module$src$libcsound=function(a){return mergeAll$$module$node_modules$rambda$dist$rambda_mjs([reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,api$$module$src$libcsound[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(dissoc$$module$node_modules$rambda$dist$rambda_mjs("fs")(api$$module$src$libcsound))),reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,\napi$$module$src$libcsound.fs[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(module$src$filesystem$worker_fs))])},module$src$libcsound={};module$src$libcsound.api=api$$module$src$libcsound;module$src$libcsound.default=$jscompDefaultExport$$module$src$libcsound;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=new WebAssembly.Global({value:"i32",mutable:!0},0);const h=new WebAssembly.Global({value:"i32",mutable:!0},0);let k=c.length;"function"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);"function"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k,\nb.exports.csoundModuleInit),k+=1);"function"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);"function"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=c.length,\n"function"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),"function"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error("Plugin doesn\'t export nececcary functions to quality as csound plugin.")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt);\nconst WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants=\n10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants=\n20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants=\n31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41,\nWASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants=\n52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants=\n62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants=\n73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants=\n7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants=\n18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants=\n3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants=\n16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants=\ngoog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants=\ngoog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants=\ngoog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants=\ngoog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|\nWASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|\nWASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants=\nWASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\nWASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,\nRIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants=\n1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants=\n0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name="CustomError";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name="AssertionError";\ngoog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split("%s");let c="";const d=a.length-1;for(let e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:"%s");return c+a[d]}\nfunction module$contents$goog$asserts_doAssertFailure(a,b,c,d){let e="Assertion failed",f;c?(e+=": "+c,f=d):a&&(e+=": "+a,f=b);a=new module$contents$goog$asserts_AssertionError(""+e,f||[]);module$contents$goog$asserts_errorHandler_(a)}goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(module$contents$goog$asserts_errorHandler_=a)};\ngoog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&module$contents$goog$asserts_doAssertFailure("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&module$contents$goog$asserts_doAssertFailure("Expected to exist: %s.",[a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&module$contents$goog$asserts_errorHandler_(new module$contents$goog$asserts_AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"number"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"string"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"function"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&module$contents$goog$asserts_doAssertFailure("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!Array.isArray(a)&&module$contents$goog$asserts_doAssertFailure("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"boolean"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||module$contents$goog$asserts_doAssertFailure("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||module$contents$goog$asserts_doAssertFailure("Expected instanceof %s but got %s.",[module$contents$goog$asserts_getType(b),module$contents$goog$asserts_getType(a)],c,Array.prototype.slice.call(arguments,3));return a};\ngoog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||"number"==typeof a&&isFinite(a)||module$contents$goog$asserts_doAssertFailure("Expected %s to be a finite number but it is not.",[a],b,Array.prototype.slice.call(arguments,2));return a};\nfunction module$contents$goog$asserts_getType(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;const module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.ASSUME_NATIVE_FUNCTIONS=module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS;function module$contents$goog$array_peek(a){return a[a.length-1]}goog.array.peek=module$contents$goog$array_peek;goog.array.last=module$contents$goog$array_peek;\nconst module$contents$goog$array_indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};goog.array.indexOf=module$contents$goog$array_indexOf;\nconst module$contents$goog$array_lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEach=module$contents$goog$array_forEach;\nfunction module$contents$goog$array_forEachRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)}goog.array.forEachRight=module$contents$goog$array_forEachRight;\nconst module$contents$goog$array_filter=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){const d=a.length,e=[];let f=0;const g="string"===typeof a?a.split(""):a;for(let h=0;h<d;h++)if(h in g){const k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};goog.array.filter=module$contents$goog$array_filter;\nconst module$contents$goog$array_map=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){const d=a.length,e=Array(d),f="string"===typeof a?a.split(""):a;for(let g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};goog.array.map=module$contents$goog$array_map;\nconst module$contents$goog$array_reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEach(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduce=module$contents$goog$array_reduce;\nconst module$contents$goog$array_reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEachRight(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduceRight=module$contents$goog$array_reduceRight;\nconst module$contents$goog$array_some=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};goog.array.some=module$contents$goog$array_some;\nconst module$contents$goog$array_every=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.every=module$contents$goog$array_every;\nfunction module$contents$goog$array_count(a,b,c){let d=0;module$contents$goog$array_forEach(a,function(e,f,g){b.call(c,e,f,g)&&++d},c);return d}goog.array.count=module$contents$goog$array_count;function module$contents$goog$array_find(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find;\nfunction module$contents$goog$array_findIndex(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1}goog.array.findIndex=module$contents$goog$array_findIndex;function module$contents$goog$array_findRight(a,b,c){b=module$contents$goog$array_findIndexRight(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight;\nfunction module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty;\nfunction module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt;\nfunction module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore;\nfunction module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast;\nfunction module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf;\nfunction module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)}\ngoog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0<b){const c=Array(b);for(let d=0;d<b;d++)c[d]=a[d];return c}return[]}const module$contents$goog$array_clone=goog.array.toArray=module$contents$goog$array_toArray;goog.array.clone=module$contents$goog$array_toArray;\nfunction module$contents$goog$array_extend(a,b){for(let c=1;c<arguments.length;c++){const d=arguments[c];if(goog.isArrayLike(d)){const e=a.length||0,f=d.length||0;a.length=e+f;for(let g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}}goog.array.extend=module$contents$goog$array_extend;function module$contents$goog$array_splice(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,module$contents$goog$array_slice(arguments,1))}goog.array.splice=module$contents$goog$array_splice;\nfunction module$contents$goog$array_slice(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice;\nfunction module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e<a.length;){const g=a[e++],h=c(g);Object.prototype.hasOwnProperty.call(f,h)||(f[h]=!0,b[d++]=g)}b.length=d}goog.array.removeDuplicates=module$contents$goog$array_removeDuplicates;\nfunction module$contents$goog$array_binarySearch(a,b,c){return module$contents$goog$array_binarySearch_(a,c||module$contents$goog$array_defaultCompare,!1,b)}goog.array.binarySearch=module$contents$goog$array_binarySearch;function module$contents$goog$array_binarySelect(a,b,c){return module$contents$goog$array_binarySearch_(a,b,!0,void 0,c)}goog.array.binarySelect=module$contents$goog$array_binarySelect;\nfunction module$contents$goog$array_binarySearch_(a,b,c,d,e){let f=0,g=a.length,h;for(;f<g;){const k=f+(g-f>>>1);let l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:-f-1}function module$contents$goog$array_sort(a,b){a.sort(b||module$contents$goog$array_defaultCompare)}goog.array.sort=module$contents$goog$array_sort;\nfunction module$contents$goog$array_stableSort(a,b){const c=Array(a.length);for(let e=0;e<a.length;e++)c[e]={index:e,value:a[e]};const d=b||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(c,function(e,f){return d(e.value,f.value)||e.index-f.index});for(b=0;b<a.length;b++)a[b]=c[b].value}goog.array.stableSort=module$contents$goog$array_stableSort;\nfunction module$contents$goog$array_sortByKey(a,b,c){const d=c||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(a,function(e,f){return d(b(e),b(f))})}goog.array.sortByKey=module$contents$goog$array_sortByKey;function module$contents$goog$array_sortObjectsByKey(a,b,c){module$contents$goog$array_sortByKey(a,function(d){return d[b]},c)}goog.array.sortObjectsByKey=module$contents$goog$array_sortObjectsByKey;\nfunction module$contents$goog$array_isSorted(a,b,c){b=b||module$contents$goog$array_defaultCompare;for(let d=1;d<a.length;d++){const e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0}goog.array.isSorted=module$contents$goog$array_isSorted;function module$contents$goog$array_equals(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;const d=a.length;c=c||module$contents$goog$array_defaultCompareEquality;for(let e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0}\ngoog.array.equals=module$contents$goog$array_equals;function module$contents$goog$array_compare3(a,b,c){c=c||module$contents$goog$array_defaultCompare;const d=Math.min(a.length,b.length);for(let e=0;e<d;e++){const f=c(a[e],b[e]);if(0!=f)return f}return module$contents$goog$array_defaultCompare(a.length,b.length)}goog.array.compare3=module$contents$goog$array_compare3;function module$contents$goog$array_defaultCompare(a,b){return a>b?1:a<b?-1:0}goog.array.defaultCompare=module$contents$goog$array_defaultCompare;\nfunction module$contents$goog$array_inverseDefaultCompare(a,b){return-module$contents$goog$array_defaultCompare(a,b)}goog.array.inverseDefaultCompare=module$contents$goog$array_inverseDefaultCompare;function module$contents$goog$array_defaultCompareEquality(a,b){return a===b}goog.array.defaultCompareEquality=module$contents$goog$array_defaultCompareEquality;\nfunction module$contents$goog$array_binaryInsert(a,b,c){c=module$contents$goog$array_binarySearch(a,b,c);return 0>c?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove;\nfunction module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;e<a.length;e++){const f=a[e],g=b.call(c,f,e,a);void 0!==g&&(d[g]||(d[g]=[])).push(f)}return d}goog.array.bucket=module$contents$goog$array_bucket;function module$contents$goog$array_bucketToMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d],f=b(e,d,a);if(void 0!==f){let g=c.get(f);g||(g=[],c.set(f,g));g.push(e)}}return c}goog.array.bucketToMap=module$contents$goog$array_bucketToMap;\nfunction module$contents$goog$array_toObject(a,b,c){const d={};module$contents$goog$array_forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d}goog.array.toObject=module$contents$goog$array_toObject;function module$contents$goog$array_toMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d];c.set(b(e,d,a),e)}return c}goog.array.toMap=module$contents$goog$array_toMap;\nfunction module$contents$goog$array_range(a,b,c){const d=[];let e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;d<b;d++)c[d]=a;return c}goog.array.repeat=module$contents$goog$array_repeat;\nfunction module$contents$goog$array_flatten(a){const b=[];for(let d=0;d<arguments.length;d++){const e=arguments[d];if(Array.isArray(e))for(let f=0;f<e.length;f+=8192){var c=module$contents$goog$array_slice(e,f,f+8192);c=module$contents$goog$array_flatten.apply(null,c);for(let g=0;g<c.length;g++)b.push(c[g])}else b.push(e)}return b}goog.array.flatten=module$contents$goog$array_flatten;\nfunction module$contents$goog$array_rotate(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])}goog.array.moveItem=module$contents$goog$array_moveItem;\nfunction module$contents$goog$array_zip(a){if(!arguments.length)return[];const b=[];let c=arguments[0].length;for(var d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){const e=[];for(let f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b}goog.array.zip=module$contents$goog$array_zip;function module$contents$goog$array_shuffle(a,b){b=b||Math.random;for(let c=a.length-1;0<c;c--){const d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}}\ngoog.array.shuffle=module$contents$goog$array_shuffle;function module$contents$goog$array_copyByIndex(a,b){const c=[];module$contents$goog$array_forEach(b,function(d){c.push(a[d])});return c}goog.array.copyByIndex=module$contents$goog$array_copyByIndex;function module$contents$goog$array_concatMap(a,b,c){return module$contents$goog$array_concat.apply([],module$contents$goog$array_map(a,b,c))}goog.array.concatMap=module$contents$goog$array_concatMap;goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s",goog.dom.asserts.debugStringForType_(a))}return a};\ngoog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&"undefined"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAnchorElement")};\ngoog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLButtonElement")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLLinkElement")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLImageElement")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAudioElement")};\ngoog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLVideoElement")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLInputElement")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLTextAreaElement")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLCanvasElement")};\ngoog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLEmbedElement")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFormElement")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFrameElement")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLIFrameElement")};\ngoog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLObjectElement")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLScriptElement")};\ngoog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return"<object could not be stringified>"}else return void 0===a?"undefined":null===a?"null":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};\ngoog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}};\ngoog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}};\ngoog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e<c;e++)d=b[e].apply(this,arguments);return d}};goog.functions.and=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(!b[d].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(b[d].apply(this,arguments))return!0;return!1}};\ngoog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){let b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){let b=a;return function(){if(b){const c=b;b=null;c()}}};\ngoog.functions.debounce=function(a,b,c){let d=0;return function(e){goog.global.clearTimeout(d);const f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){let d=0,e=!1,f=[];const g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);let k=f;f=[];a.apply(c,k)};return function(k){f=arguments;d?e=!0:h()}};\ngoog.functions.rateLimit=function(a,b,c){let d=0;const e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.functions.isFunction=a=>"function"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||"";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};\ngoog.DEBUG&&(goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got \'"+a+"\'");return"type_error:Const"};\ngoog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+"#html":"";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof\nmodule$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeScript, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeScript"}static stringify_(a){return JSON.stringify(a).replace(/</g,"\\\\x3c")}static createSafeScriptSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScript(a):\na;return new module$contents$goog$html$SafeScript_SafeScript(a,module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE)}}module$contents$goog$html$SafeScript_SafeScript.EMPTY=function(){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("")}();goog.html.SafeScript=module$contents$goog$html$SafeScript_SafeScript;goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.UrlObject_=function(){};goog.fs.url.UrlObject_.prototype.createObjectURL=function(a){};goog.fs.url.UrlObject_.prototype.revokeObjectURL=function(a){};\ngoog.fs.url.getUrlObject_=function(){const a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error("This browser doesn\'t seem to support blob URLs");};goog.fs.url.findUrlObject_=function(){return void 0!==goog.global.URL&&void 0!==goog.global.URL.createObjectURL?goog.global.URL:void 0!==goog.global.createObjectURL?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.fs.blob={};goog.fs.blob.getBlob=function(a){var b=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==b){b=new b;for(let c=0;c<arguments.length;c++)b.append(arguments[c]);return b.getBlob()}return goog.fs.blob.getBlobWithProperties(Array.prototype.slice.call(arguments))};\ngoog.fs.blob.getBlobWithProperties=function(a,b,c){var d=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==d){d=new d;for(let e=0;e<a.length;e++)d.append(a[e],c);return d.getBlob(b)}if(void 0!==goog.global.Blob)return d={},b&&(d.type=b),c&&(d.endings=c),new Blob(a,d);throw Error("This browser doesn\'t seem to support creating Blobs");};goog.html.TrustedResourceUrl=class{constructor(a,b){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=b===goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+""}};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};\ngoog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",c[2]||"",a)+goog.html.TrustedResourceUrl.stringifyParams_("#",d,b))};goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};\ngoog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail("expected object of type TrustedResourceUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:TrustedResourceUrl"};\ngoog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error("Invalid TrustedResourceUrl format: "+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(d,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error(\'Found marker, "\'+e+\'", in format string, "\'+c+\'", but no valid label mapping found in args: \'+JSON.stringify(b));d=b[e];return d instanceof goog.string.Const?goog.string.Const.unwrap(d):\nencodeURIComponent(String(d))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=RegExp("^((https:)?//[0-9a-z.:[\\\\]-]+/|/[^/\\\\\\\\]|[^:/\\\\\\\\%]+/|[^:/\\\\\\\\%]*[?#]|about:blank#)","i");goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/;\ngoog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b="",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.TrustedResourceUrl.fromSafeScript=function(a){a=goog.fs.blob.getBlobWithProperties([module$contents$goog$html$SafeScript_SafeScript.unwrap(a)],"text/javascript");a=goog.fs.url.createObjectUrl(a);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};\ngoog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScriptURL(a):a;return new goog.html.TrustedResourceUrl(a,goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};\ngoog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if("string"===typeof c)return c?a+encodeURIComponent(c):"";for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var e=c[d];e=Array.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?"&":"")+encodeURIComponent(d)+"="+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))};\ngoog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\\s\\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};\ngoog.string.internal.newLineToBr=function(a,b){return a.replace(/(\\r\\n|\\r|\\n)/g,b?"<br />":"<br>")};\ngoog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,"&amp;").replace(goog.string.internal.LT_RE_,"&lt;").replace(goog.string.internal.GT_RE_,"&gt;").replace(goog.string.internal.QUOT_RE_,"&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.internal.NULL_RE_,"&#0;");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.internal.AMP_RE_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.internal.LT_RE_,\n"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.internal.GT_RE_,"&gt;"));-1!=a.indexOf(\'"\')&&(a=a.replace(goog.string.internal.QUOT_RE_,"&quot;"));-1!=a.indexOf("\'")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;"));-1!=a.indexOf("\\x00")&&(a=a.replace(goog.string.internal.NULL_RE_,"&#0;"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/"/g;goog.string.internal.SINGLE_QUOTE_RE_=/\'/g;\ngoog.string.internal.NULL_RE_=/\\x00/g;goog.string.internal.ALL_RE_=/[\\x00&<>"\']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g," &#160;"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};\ngoog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(".");b=goog.string.internal.trim(String(b)).split(".");const d=Math.max(a.length,b.length);for(let g=0;0==c&&g<d;g++){var e=a[g]||"",f=b[g]||"";do{e=/(\\d*)(\\D*)(.*)/.exec(e)||["","","",""];f=/(\\d*)(\\D*)(.*)/.exec(f)||["","","",""];if(0==e[0].length&&0==f[0].length)break;c=0==e[1].length?0:parseInt(e[1],10);const h=0==f[1].length?0:parseInt(f[1],10);c=goog.string.internal.compareElements_(c,h)||\ngoog.string.internal.compareElements_(0==e[2].length,0==f[2].length)||goog.string.internal.compareElements_(e[2],f[2]);e=e[3];f=f[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};\ngoog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};\ngoog.html.SAFE_MIME_TYPE_PATTERN_=RegExp(\'^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\\\w+=(?:\\\\w+|"[\\\\w;,= ]+"))*$\',"i");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};\ngoog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)};\ngoog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert("MediaSource"in goog.global,"No support for MediaSource");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\\/]+=*$/i;\ngoog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,"");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SIP_URL_PATTERN_=RegExp("^sip[s]?:[+a-z0-9_.!$%&\'*\\\\/=^`{|}~-]+@([a-z0-9-]+\\\\.)+[a-z0-9]{2,63}$","i");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"fb-messenger://share")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"whatsapp://send")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf("#");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"ssh://")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\/\\/([^\\/]+)\\//,a,b)};\ngoog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(d){return goog.string.Const.unwrap(d)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};\ngoog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.trySanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SAFE_URL_PATTERN_.test(a)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):goog.html.SafeUrl.tryFromDataUrl(a)};\ngoog.html.SafeUrl.sanitize=function(a){return goog.html.SafeUrl.trySanitize(a)||goog.html.SafeUrl.INNOCUOUS_URL};\ngoog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),"%s does not match the safe URL pattern",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){return new goog.html.SafeUrl(a,goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};goog.html.SafeUrl.INNOCUOUS_URL=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.SafeUrl.INNOCUOUS_STRING);goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");const module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeStyle_SafeStyle{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=b===module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;(0,goog.asserts.assert)((0,goog.string.internal.endsWith)(a,";"),`Last character of style string is not \';\': ${a}`);(0,goog.asserts.assert)((0,goog.string.internal.contains)(a,\n":"),"Style string must contain at least one \':\', to specify a \\"name: value\\" pair: "+a);return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_}toString(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString()}static unwrap(a){if(a instanceof module$contents$goog$html$SafeStyle_SafeStyle&&a.constructor===module$contents$goog$html$SafeStyle_SafeStyle)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;\n(0,goog.asserts.fail)(`expected object of type SafeStyle, got \'${a}`+"\' of type "+goog.typeOf(a));return"type_error:SafeStyle"}static createSafeStyleSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyle_SafeStyle(a,module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE)}static create(a){let b="";for(let c in a)if(Object.prototype.hasOwnProperty.call(a,c)){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(`Name allows only [-_a-zA-Z0-9], got: ${c}`);let d=a[c];null!=d&&\n(d=Array.isArray(d)?d.map(module$contents$goog$html$SafeStyle_sanitizePropertyValue).join(" "):module$contents$goog$html$SafeStyle_sanitizePropertyValue(d),b+=`${c}:${d};`)}return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c);\nreturn b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING="zClosurez";\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return\'url("\'+goog.html.SafeUrl.unwrap(a).replace(/</g,"%3c").replace(/[\\\\"]/g,"\\\\$&")+\'")\';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):module$contents$goog$html$SafeStyle_sanitizePropertyValueString(String(a));if(/[{;}]/.test(a))throw new module$contents$goog$asserts_AssertionError("Value does not allow [{;}], got: %s.",[a]);return a}\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValueString(a){const b=a.replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_URL_RE,"url");if(module$contents$goog$html$SafeStyle_VALUE_RE.test(b)){if(module$contents$goog$html$SafeStyle_COMMENT_RE.test(a))return(0,goog.asserts.fail)(`String value disallows comments, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;\nif(!module$contents$goog$html$SafeStyle_hasBalancedQuotes(a))return(0,goog.asserts.fail)(`String value requires balanced quotes, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;if(!module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a))return(0,goog.asserts.fail)("String value requires balanced square brackets and one identifier per pair of brackets, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING}else return(0,goog.asserts.fail)(`String value allows only ${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}`+\n" and simple functions, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;return module$contents$goog$html$SafeStyle_sanitizeUrl(a)}function module$contents$goog$html$SafeStyle_hasBalancedQuotes(a){let b=!0,c=!0;for(let d=0;d<a.length;d++){const e=a.charAt(d);"\'"==e&&c?b=!b:\'"\'==e&&b&&(c=!c)}return b&&c}\nfunction module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a){let b=!0;const c=/^[-_a-zA-Z0-9]$/;for(let d=0;d<a.length;d++){const e=a.charAt(d);if("]"==e){if(b)return!1;b=!0}else if("["==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b}\nconst module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS="[-,.\\"\'%_!#/ a-zA-Z0-9\\\\[\\\\]]",module$contents$goog$html$SafeStyle_VALUE_RE=new RegExp(`^${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}+\\$`),module$contents$goog$html$SafeStyle_URL_RE=RegExp("\\\\b(url\\\\([ \\t\\n]*)(\'[ -&(-\\\\[\\\\]-~]*\'|\\"[ !#-\\\\[\\\\]-~]*\\"|[!#-&*-\\\\[\\\\]-~]*)([ \\t\\n]*\\\\))","g"),module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS="calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax radial-gradient repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)? steps var".split(" "),\nmodule$contents$goog$html$SafeStyle_FUNCTIONS_RE=new RegExp("\\\\b("+module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS.join("|")+")\\\\([-+*/0-9a-zA-Z.%#\\\\[\\\\], ]+\\\\)","g"),module$contents$goog$html$SafeStyle_COMMENT_RE=/\\/\\*/;function module$contents$goog$html$SafeStyle_sanitizeUrl(a){return a.replace(module$contents$goog$html$SafeStyle_URL_RE,(b,c,d,e)=>{let f="";d=d.replace(/^([\'"])(.*)\\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})}\ngoog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1}\nfunction module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)}\nfunction module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a}function module$contents$goog$object_containsKey(a,b){return null!==a&&b in a}\nfunction module$contents$goog$object_containsValue(a,b){for(const c in a)if(a[c]==b)return!0;return!1}function module$contents$goog$object_findKey(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return d}function module$contents$goog$object_findValue(a,b,c){return(b=module$contents$goog$object_findKey(a,b,c))&&a[b]}function module$contents$goog$object_isEmpty(a){for(const b in a)return!1;return!0}function module$contents$goog$object_clear(a){for(const b in a)delete a[b]}\nfunction module$contents$goog$object_remove(a,b){let c;(c=b in a)&&delete a[b];return c}function module$contents$goog$object_add(a,b,c){if(null!==a&&b in a)throw Error(`The object already contains the key "${b}"`);module$contents$goog$object_set(a,b,c)}function module$contents$goog$object_get(a,b,c){return null!==a&&b in a?a[b]:c}function module$contents$goog$object_set(a,b,c){a[b]=c}function module$contents$goog$object_setIfUndefined(a,b,c){return b in a?a[b]:a[b]=c}\nfunction module$contents$goog$object_setWithReturnValueIfNotSet(a,b,c){if(b in a)return a[b];c=c();return a[b]=c}function module$contents$goog$object_equals(a,b){for(const c in a)if(!(c in b)||a[c]!==b[c])return!1;for(const c in b)if(!(c in a))return!1;return!0}function module$contents$goog$object_clone(a){const b={};for(const c in a)b[c]=a[c];return b}\nfunction module$contents$goog$object_unsafeClone(a){if(!a||"object"!==typeof a)return a;if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);if(a instanceof Date)return new Date(a.getTime());const b=Array.isArray(a)?[]:"function"!==typeof ArrayBuffer||"function"!==typeof ArrayBuffer.isView||!ArrayBuffer.isView(a)||a instanceof DataView?{}:new a.constructor(a.length);for(const c in a)b[c]=\nmodule$contents$goog$object_unsafeClone(a[c]);return b}function module$contents$goog$object_transpose(a){const b={};for(const c in a)b[a[c]]=c;return b}const module$contents$goog$object_PROTOTYPE_FIELDS="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\nfunction module$contents$goog$object_extend(a,b){let c,d;for(let e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(let f=0;f<module$contents$goog$object_PROTOTYPE_FIELDS.length;f++)c=module$contents$goog$object_PROTOTYPE_FIELDS[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}}\nfunction module$contents$goog$object_create(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");const c={};for(let d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c}\nfunction module$contents$goog$object_createSet(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_createSet.apply(null,arguments[0]);const c={};for(let d=0;d<b;d++)c[arguments[d]]=!0;return c}function module$contents$goog$object_createImmutableView(a){let b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b}function module$contents$goog$object_isImmutableView(a){return!!Object.isFrozen&&Object.isFrozen(a)}\nfunction module$contents$goog$object_getAllPropertyNames(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return module$contents$goog$object_getKeys(a);const d={};for(;a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){const e=Object.getOwnPropertyNames(a);for(let f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return module$contents$goog$object_getKeys(d)}\nfunction module$contents$goog$object_getSuperClass(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor}goog.object.add=module$contents$goog$object_add;goog.object.clear=module$contents$goog$object_clear;goog.object.clone=module$contents$goog$object_clone;goog.object.contains=module$contents$goog$object_contains;goog.object.containsKey=module$contents$goog$object_containsKey;goog.object.containsValue=module$contents$goog$object_containsValue;goog.object.create=module$contents$goog$object_create;\ngoog.object.createImmutableView=module$contents$goog$object_createImmutableView;goog.object.createSet=module$contents$goog$object_createSet;goog.object.equals=module$contents$goog$object_equals;goog.object.every=module$contents$goog$object_every;goog.object.extend=module$contents$goog$object_extend;goog.object.filter=module$contents$goog$object_filter;goog.object.findKey=module$contents$goog$object_findKey;goog.object.findValue=module$contents$goog$object_findValue;goog.object.forEach=module$contents$goog$object_forEach;\ngoog.object.get=module$contents$goog$object_get;goog.object.getAllPropertyNames=module$contents$goog$object_getAllPropertyNames;goog.object.getAnyKey=module$contents$goog$object_getAnyKey;goog.object.getAnyValue=module$contents$goog$object_getAnyValue;goog.object.getCount=module$contents$goog$object_getCount;goog.object.getKeys=module$contents$goog$object_getKeys;goog.object.getSuperClass=module$contents$goog$object_getSuperClass;goog.object.getValueByKeys=module$contents$goog$object_getValueByKeys;\ngoog.object.getValues=module$contents$goog$object_getValues;goog.object.isEmpty=module$contents$goog$object_isEmpty;goog.object.isImmutableView=module$contents$goog$object_isImmutableView;goog.object.map=module$contents$goog$object_map;goog.object.remove=module$contents$goog$object_remove;goog.object.set=module$contents$goog$object_set;goog.object.setIfUndefined=module$contents$goog$object_setIfUndefined;goog.object.setWithReturnValueIfNotSet=module$contents$goog$object_setWithReturnValueIfNotSet;\ngoog.object.some=module$contents$goog$object_some;goog.object.transpose=module$contents$goog$object_transpose;goog.object.unsafeClone=module$contents$goog$object_unsafeClone;const module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeStyleSheet_SafeStyleSheet{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=b===module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString()}static createRule(a,b){if((0,goog.string.internal.contains)(a,"<"))throw Error(`Selector does not allow \'<\', got: ${a}`);const c=a.replace(/(\'|")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g,\n"");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(c))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and strings, got: "+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error("() and [] in selector must be balanced, got: "+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/</g,"\\\\3C ")+"}";\nreturn module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}static hasBalancedBrackets_(a){const b={"(":")","[":"]"},c=[];for(let d=0;d<a.length;d++){const e=a[d];if(b[e])c.push(b[e]);else if(module$contents$goog$object_contains(b,e)&&c.pop()!=e)return!1}return 0==c.length}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments,\nc);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,"<"),`Forbidden \'<\' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeStyleSheet, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}}\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A="A";goog.dom.TagName.ABBR="ABBR";goog.dom.TagName.ACRONYM="ACRONYM";goog.dom.TagName.ADDRESS="ADDRESS";goog.dom.TagName.APPLET="APPLET";goog.dom.TagName.AREA="AREA";goog.dom.TagName.ARTICLE="ARTICLE";goog.dom.TagName.ASIDE="ASIDE";goog.dom.TagName.AUDIO="AUDIO";goog.dom.TagName.B="B";goog.dom.TagName.BASE="BASE";goog.dom.TagName.BASEFONT="BASEFONT";goog.dom.TagName.BDI="BDI";goog.dom.TagName.BDO="BDO";\ngoog.dom.TagName.BIG="BIG";goog.dom.TagName.BLOCKQUOTE="BLOCKQUOTE";goog.dom.TagName.BODY="BODY";goog.dom.TagName.BR="BR";goog.dom.TagName.BUTTON="BUTTON";goog.dom.TagName.CANVAS="CANVAS";goog.dom.TagName.CAPTION="CAPTION";goog.dom.TagName.CENTER="CENTER";goog.dom.TagName.CITE="CITE";goog.dom.TagName.CODE="CODE";goog.dom.TagName.COL="COL";goog.dom.TagName.COLGROUP="COLGROUP";goog.dom.TagName.COMMAND="COMMAND";goog.dom.TagName.DATA="DATA";goog.dom.TagName.DATALIST="DATALIST";goog.dom.TagName.DD="DD";\ngoog.dom.TagName.DEL="DEL";goog.dom.TagName.DETAILS="DETAILS";goog.dom.TagName.DFN="DFN";goog.dom.TagName.DIALOG="DIALOG";goog.dom.TagName.DIR="DIR";goog.dom.TagName.DIV="DIV";goog.dom.TagName.DL="DL";goog.dom.TagName.DT="DT";goog.dom.TagName.EM="EM";goog.dom.TagName.EMBED="EMBED";goog.dom.TagName.FIELDSET="FIELDSET";goog.dom.TagName.FIGCAPTION="FIGCAPTION";goog.dom.TagName.FIGURE="FIGURE";goog.dom.TagName.FONT="FONT";goog.dom.TagName.FOOTER="FOOTER";goog.dom.TagName.FORM="FORM";\ngoog.dom.TagName.FRAME="FRAME";goog.dom.TagName.FRAMESET="FRAMESET";goog.dom.TagName.H1="H1";goog.dom.TagName.H2="H2";goog.dom.TagName.H3="H3";goog.dom.TagName.H4="H4";goog.dom.TagName.H5="H5";goog.dom.TagName.H6="H6";goog.dom.TagName.HEAD="HEAD";goog.dom.TagName.HEADER="HEADER";goog.dom.TagName.HGROUP="HGROUP";goog.dom.TagName.HR="HR";goog.dom.TagName.HTML="HTML";goog.dom.TagName.I="I";goog.dom.TagName.IFRAME="IFRAME";goog.dom.TagName.IMG="IMG";goog.dom.TagName.INPUT="INPUT";\ngoog.dom.TagName.INS="INS";goog.dom.TagName.ISINDEX="ISINDEX";goog.dom.TagName.KBD="KBD";goog.dom.TagName.KEYGEN="KEYGEN";goog.dom.TagName.LABEL="LABEL";goog.dom.TagName.LEGEND="LEGEND";goog.dom.TagName.LI="LI";goog.dom.TagName.LINK="LINK";goog.dom.TagName.MAIN="MAIN";goog.dom.TagName.MAP="MAP";goog.dom.TagName.MARK="MARK";goog.dom.TagName.MATH="MATH";goog.dom.TagName.MENU="MENU";goog.dom.TagName.MENUITEM="MENUITEM";goog.dom.TagName.META="META";goog.dom.TagName.METER="METER";\ngoog.dom.TagName.NAV="NAV";goog.dom.TagName.NOFRAMES="NOFRAMES";goog.dom.TagName.NOSCRIPT="NOSCRIPT";goog.dom.TagName.OBJECT="OBJECT";goog.dom.TagName.OL="OL";goog.dom.TagName.OPTGROUP="OPTGROUP";goog.dom.TagName.OPTION="OPTION";goog.dom.TagName.OUTPUT="OUTPUT";goog.dom.TagName.P="P";goog.dom.TagName.PARAM="PARAM";goog.dom.TagName.PICTURE="PICTURE";goog.dom.TagName.PRE="PRE";goog.dom.TagName.PROGRESS="PROGRESS";goog.dom.TagName.Q="Q";goog.dom.TagName.RP="RP";goog.dom.TagName.RT="RT";\ngoog.dom.TagName.RTC="RTC";goog.dom.TagName.RUBY="RUBY";goog.dom.TagName.S="S";goog.dom.TagName.SAMP="SAMP";goog.dom.TagName.SCRIPT="SCRIPT";goog.dom.TagName.SECTION="SECTION";goog.dom.TagName.SELECT="SELECT";goog.dom.TagName.SMALL="SMALL";goog.dom.TagName.SOURCE="SOURCE";goog.dom.TagName.SPAN="SPAN";goog.dom.TagName.STRIKE="STRIKE";goog.dom.TagName.STRONG="STRONG";goog.dom.TagName.STYLE="STYLE";goog.dom.TagName.SUB="SUB";goog.dom.TagName.SUMMARY="SUMMARY";goog.dom.TagName.SUP="SUP";\ngoog.dom.TagName.SVG="SVG";goog.dom.TagName.TABLE="TABLE";goog.dom.TagName.TBODY="TBODY";goog.dom.TagName.TD="TD";goog.dom.TagName.TEMPLATE="TEMPLATE";goog.dom.TagName.TEXTAREA="TEXTAREA";goog.dom.TagName.TFOOT="TFOOT";goog.dom.TagName.TH="TH";goog.dom.TagName.THEAD="THEAD";goog.dom.TagName.TIME="TIME";goog.dom.TagName.TITLE="TITLE";goog.dom.TagName.TR="TR";goog.dom.TagName.TRACK="TRACK";goog.dom.TagName.TT="TT";goog.dom.TagName.U="U";goog.dom.TagName.UL="UL";goog.dom.TagName.VAR="VAR";\ngoog.dom.TagName.VIDEO="VIDEO";goog.dom.TagName.WBR="WBR";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE="",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a};\nconst module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:""}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null}\nfunction module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData();\nfunction module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal="string"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal}\nfunction module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal}\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)}\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp("([A-Z][\\\\w ]+)/([^\\\\s]+)\\\\s*(?:\\\\((.*?)\\\\))?","g"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT;\ngoog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent;\ngoog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_=\n!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error("Unsafe call to resetForTesting");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("fullVersionList");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("platformVersion");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:"Android Browser",CHROMIUM:"Chromium",EDGE:"Microsoft Edge",FIREFOX:"Firefox",IE:"Internet Explorer",OPERA:"Opera",SAFARI:"Safari",SILK:"Silk"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand;\nfunction module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0<a.brands.length}\nfunction module$contents$goog$labs$userAgent$browser_hasFullVersionList(){return module$contents$goog$labs$userAgent$browser_isAtLeast(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM,98)}function module$contents$goog$labs$userAgent$browser_matchOpera(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Opera")}\nfunction module$contents$goog$labs$userAgent$browser_matchIE(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Trident")||module$contents$goog$labs$userAgent$util_matchUserAgent("MSIE")}function module$contents$goog$labs$userAgent$browser_matchEdgeHtml(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Edge")}\nfunction module$contents$goog$labs$userAgent$browser_matchEdgeChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.EDGE):module$contents$goog$labs$userAgent$util_matchUserAgent("Edg/")}\nfunction module$contents$goog$labs$userAgent$browser_matchOperaChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.OPERA):module$contents$goog$labs$userAgent$util_matchUserAgent("OPR")}\nfunction module$contents$goog$labs$userAgent$browser_matchFirefox(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Firefox")||module$contents$goog$labs$userAgent$util_matchUserAgent("FxiOS")}\nfunction module$contents$goog$labs$userAgent$browser_matchSafari(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Safari")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchCoast()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_matchEdgeChromium()||module$contents$goog$labs$userAgent$browser_matchOperaChromium()||\nmodule$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_isSilk()||module$contents$goog$labs$userAgent$util_matchUserAgent("Android"))}function module$contents$goog$labs$userAgent$browser_matchCoast(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Coast")}\nfunction module$contents$goog$labs$userAgent$browser_matchIosWebview(){return(module$contents$goog$labs$userAgent$util_matchUserAgent("iPad")||module$contents$goog$labs$userAgent$util_matchUserAgent("iPhone"))&&!module$contents$goog$labs$userAgent$browser_matchSafari()&&!module$contents$goog$labs$userAgent$browser_matchChrome()&&!module$contents$goog$labs$userAgent$browser_matchCoast()&&!module$contents$goog$labs$userAgent$browser_matchFirefox()&&module$contents$goog$labs$userAgent$util_matchUserAgent("AppleWebKit")}\nfunction module$contents$goog$labs$userAgent$browser_matchChrome(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM):(module$contents$goog$labs$userAgent$util_matchUserAgent("Chrome")||module$contents$goog$labs$userAgent$util_matchUserAgent("CriOS"))&&!module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_isSilk()}\nfunction module$contents$goog$labs$userAgent$browser_matchAndroidBrowser(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Android")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_isSilk())}const module$contents$goog$labs$userAgent$browser_isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;\ngoog.labs.userAgent.browser.isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;const module$contents$goog$labs$userAgent$browser_isIE=module$contents$goog$labs$userAgent$browser_matchIE;goog.labs.userAgent.browser.isIE=module$contents$goog$labs$userAgent$browser_matchIE;const module$contents$goog$labs$userAgent$browser_isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;goog.labs.userAgent.browser.isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;\nconst module$contents$goog$labs$userAgent$browser_isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;goog.labs.userAgent.browser.isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;const module$contents$goog$labs$userAgent$browser_isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;goog.labs.userAgent.browser.isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;\nconst module$contents$goog$labs$userAgent$browser_isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;goog.labs.userAgent.browser.isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;const module$contents$goog$labs$userAgent$browser_isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;goog.labs.userAgent.browser.isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;const module$contents$goog$labs$userAgent$browser_isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;\ngoog.labs.userAgent.browser.isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;const module$contents$goog$labs$userAgent$browser_isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;goog.labs.userAgent.browser.isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;const module$contents$goog$labs$userAgent$browser_isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;goog.labs.userAgent.browser.isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;\nconst module$contents$goog$labs$userAgent$browser_isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;goog.labs.userAgent.browser.isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;function module$contents$goog$labs$userAgent$browser_isSilk(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Silk")}goog.labs.userAgent.browser.isSilk=module$contents$goog$labs$userAgent$browser_isSilk;\nfunction module$contents$goog$labs$userAgent$browser_createVersionMap(a){const b={};a.forEach(c=>{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||""}\nfunction module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b(["Version","Opera"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()?\nb(["Edge"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b(["Edg"]):module$contents$goog$labs$userAgent$browser_isSilk()?b(["Silk"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b(["Chrome","CriOS","HeadlessChrome"]):(a=a[2])&&a[1]||""}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion;\nfunction module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher;\nfunction module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\\d\\.]*)/.exec(a);if(b&&b[1])return b[1];b="";const c=/MSIE +([\\d\\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\\/(\\d.\\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b}\nfunction module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):"";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c(["Version",\n"Opera"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c(["OPR"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c(["Edge"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c(["Edg"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c(["Chrome","CriOS","HeadlessChrome"])}return a===\nmodule$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&&\na[1]||"":""}\nfunction module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(".")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(""===b)return NaN;b=b.split(".")}return 0===b.length?NaN:Number(b[0])}\nfunction module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast;\nfunction module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost;\nclass module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a=\nawait module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;\nasync function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions;\ngoog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()};\nfunction module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b="";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(""===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a,\nc,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf;\nfunction module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return""}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)}\ngoog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&&\na.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got \'${a}\' of type `+goog.typeOf(a));return"type_error:SafeHtml"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof\nmodule$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\\x3c!--"+\ngoog.string.internal.htmlEscape(a)+"--\\x3e")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:"");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Tag name <${a}> is not allowed for SafeHtml.`:"");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:""},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n"The browser does not support sandboxed iframes.":"");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a);\na=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if("language"==d||"src"==d||"text"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set "${d}" attribute`:"");}c="";a=module$contents$goog$array_concat(a);for(d=0;d<\na.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:"text/css"},{},b);let c="";a=module$contents$goog$array_concat(a);for(let d=0;d<a.length;d++)c+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(a[d]);\na=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",b,a)}static createMetaRefresh(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(module$contents$goog$labs$userAgent$browser_matchIE()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml())&&goog.string.internal.contains(a,";")&&(a="\'"+a.replace(/\'/g,"%27")+"\'");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",\n{"http-equiv":"refresh",content:(b||0)+"; url="+a})}static join(a,b){a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);const c=[],d=e=>{Array.isArray(e)?e.forEach(d):(e=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(e),c.push(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(e)))};b.forEach(d);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c.join(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static concat(a){return module$contents$goog$html$SafeHtml_SafeHtml.join(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY,\nArray.prototype.slice.call(arguments))}static createSafeHtmlSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createHTML(a):a;return new module$contents$goog$html$SafeHtml_SafeHtml(a,module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE)}static createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(a,b,c){b=`<${a}`+module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes(a,b);null==c?c=[]:Array.isArray(c)||(c=[c]);goog.dom.tags.isVoidTag(a.toLowerCase())?\n(goog.asserts.assert(!c.length,`Void tag <${a}> does not allow content.`),b+=">"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=">"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+"</"+a+">");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c="";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Invalid attribute name "${d}".`:"");const e=b[d];null!=e&&(c+=" "+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,"Must be lower case"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c,\nf)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override "${e}" attribute, got "`+f+\'" with value "\'+c[f]+\'"\':"");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape;\nconst module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0,\n[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0};\nfunction module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\'Attribute "style" not supported.\':"");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Attribute "${b}`+\'" requires goog.string.Const value, "\'+c+\'" given.\':"");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if("string"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute "${b}" on tag "${a}`+\'" requires goog.html.SafeUrl, goog.string.Const, or string, value "\'+\nc+\'" given.\':"");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert("string"===typeof c||"number"===typeof c,"String or number value expected, got "+typeof c+" with value: "+c);return`${b}="`+goog.string.internal.htmlEscape(String(c))+\'"\'}\nfunction module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\'The "style" attribute requires goog.html.SafeStyle or map of style properties, \'+typeof a+" given: "+a:"");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)}\nmodule$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||"",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>")}();\ngoog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};\ngoog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&"undefined"===typeof document)return!1;var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement});\ngoog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};\ngoog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML to be immediatelly used."),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)};\ngoog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};\ngoog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};\ngoog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,\'URL must be TrustedResourceUrl because "rel" contains "stylesheet"\'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):\nb instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};\ngoog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute("nonce",b)};\ngoog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))};\ngoog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||"";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)};\ngoog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,"text/html")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)};\ngoog.dom.safe.createImageFromBlob=function(a){if(!/^image\\/.*/g.test(a.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_("script[nonce]",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_(\'style[nonce],link[rel="stylesheet"][nonce]\',a)};goog.dom.safe.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:"":""};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\\u00a0",ZERO_WIDTH_SPACE:"\\u200b"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;\ngoog.string.subs=function(a,b){const c=a.split("%s");let d="";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\\s\\xa0]+/g," ").replace(/^\\s+|\\s+$/g,"")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;\ngoog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\\t\\n\\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};\ngoog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\\u0080"<=a&&"\\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)/g,"\\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\\xa0|\\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\\xa0|[ \\t]+/g," ")};\ngoog.string.collapseBreakingSpaces=function(a){return a.replace(/[\\t\\r\\n ]+/g," ").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,"")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\\s\\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\\s\\xa0]+$/,"")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;\ngoog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g<f;g++){c=d[g];const h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\D+/g)};\ngoog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\.\\d+|\\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\\+/g," "))};goog.string.newLineToBr=goog.string.internal.newLineToBr;\ngoog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,"&#101;"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};\ngoog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};\ngoog.string.unescapeEntitiesUsingDom_=function(a,b){const c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":\'"\'};let d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;"#"==f.charAt(0)&&(f=Number("0"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),\ne+" ")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return\'"\';default:return"#"!=c.charAt(0)||(c=Number("0"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};\ngoog.string.preserveSpaces=function(a){return a.replace(/(^|[\\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;d<c;d++){const e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};\ngoog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\\x00":"\\\\0","\\b":"\\\\b","\\f":"\\\\f","\\n":"\\\\n","\\r":"\\\\r","\\t":"\\\\t","\\v":"\\\\x0B",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\","<":"\\\\u003C"};goog.string.jsEscapeCache_={"\'":"\\\\\'"};\ngoog.string.quote=function(a){a=String(a);const b=[\'"\'];for(let c=0;c<a.length;c++){const d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push(\'"\');return b.join("")};goog.string.escapeString=function(a){const b=[];for(let c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};\ngoog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];let b;const c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\\\x",16>c||256<c)b+="0"}else b="\\\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains;\ngoog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b<a.length&&0<c&&(d=a.slice(0,b)+a.slice(b+c));return d};goog.string.remove=function(a,b){return a.replace(b,"")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,"")};\ngoog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,c.replace(/\\$/g,"$$$$"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,"\\\\$1").replace(/\\x08/g,"\\\\x08")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};\ngoog.string.padNumber=function(a,b,c){if(!Number.isFinite(a))return String(a);a=void 0!==c?a.toFixed(c):String(a);c=a.indexOf(".");-1===c&&(c=a.length);const d="-"===a[0]?"-":"";d&&(a=a.substring(1));return d+goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};\ngoog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){let b=0;for(let c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};\ngoog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};goog.string.toTitleCase=function(a,b){b="string"===typeof b?goog.string.regExpEscape(b):"\\\\s";return a.replace(new RegExp("(^"+(b?"|["+b+"]+":"")+")([a-z])","g"),function(c,d,e){return d+e.toUpperCase()})};\ngoog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return"string"===typeof a?/^\\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};\ngoog.string.lastComponent=function(a,b){if(b)"string"==typeof b&&(b=[b]);else return a;let c=-1;for(let d=0;d<b.length;d++){if(""==b[d])continue;const e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};\ngoog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.string.path={};goog.string.path.baseName=function(a){const b=a.lastIndexOf("/")+1;return a.slice(b)};goog.string.path.basename=goog.string.path.baseName;goog.string.path.dirname=function(a){const b=a.lastIndexOf("/")+1;a=a.slice(0,b);/^\\/+$/.test(a)||(a=a.replace(/\\/+$/,""));return a};goog.string.path.extension=function(a){a=goog.string.path.baseName(a).replace(/\\.+/g,".");const b=a.lastIndexOf(".");return 0>=b?"":a.slice(b+1)};\ngoog.string.path.join=function(a){let b=arguments[0];for(let c=1;c<arguments.length;c++){const d=arguments[c];b=goog.string.startsWith(d,"/")?d:""==b||goog.string.endsWith(b,"/")?b+d:b+("/"+d)}return b};\ngoog.string.path.normalizePath=function(a){if(""==a)return".";let b="";goog.string.startsWith(a,"/")&&(b="/",goog.string.startsWith(a,"//")&&!goog.string.startsWith(a,"///")&&(b="//"));a=a.split("/");const c=[];for(let d=0;d<a.length;d++){const e=a[d];""!=e&&"."!=e&&(".."!=e||!b&&!c.length||".."==module$contents$goog$array_peek(c)?c.push(e):c.pop())}return b+c.join("/")||"."};goog.string.path.split=function(a){const b=goog.string.path.dirname(a);a=goog.string.path.baseName(a);return[b,a]};const DEBUG_WASI$$module$src$filesystem$wasi=!1;function assertLeadingSlash$$module$src$filesystem$wasi(a){return/^\\//g.test(a)?a:`/${a}`}function removeLeadingSlash$$module$src$filesystem$wasi(a){return a.replace(/^\\//g,"")}function shouldOpenReader$$module$src$filesystem$wasi(a){return(a&(WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants))!==goog.global.BigInt(0)}\nfunction performanceNowPoly$$module$src$filesystem$wasi(){if("undefined"===typeof performance||"undefined"===typeof performance.now){const a=Date.now();return Date.now()-a}return performance.now()}function concatUint8Arrays$$module$src$filesystem$wasi(a){var b=a.reduce((d,e)=>d+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}}\nconst WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:"/dev/stdin",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:"/dev/stdout",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:"/dev/stderr",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:"/",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0};\nWASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)"function"===c.kind&&c.module.startsWith("wasi_")&&("object"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b};\nWASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a};\nWASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START);\ndefault:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("clock_time_get",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_advise",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_allocate",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_close",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_datasync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_get",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants),\n!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_flags",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_rights",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_get",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b,\ngoog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_size",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_times",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_pread",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_dir_name",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_get",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log("fd_pwrite",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_read",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((n,p)=>n+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,l=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,"\\x00"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;f<c;f++){var m=b+8*f;const n=g.getUint32(m,!0);m=g.getUint32(m+\n4,!0);l||(k+=m,Array.from({length:m},(p,q)=>q).reduce((p,q)=>{if(l)return p;const [w,r]=p;let u=p=0,A=!1,x=0,t;if(0===q)for(;!A;)t=e[p]?e[p].byteLength:0,x<=h&&t+x>h?(A=!0,u=h-x):(x+=t,p+=1);else p=w,u=r;e[p]?(g.setUint8(n+q,e[p][u]),u+1>=e[p].byteLength?(p=w+1,u=0):u+=1):(g.setUint8(n+q,"\\x00"),h+=q,l=!0);return[p,u]},[0,0]),l||(h+=m))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error("Reading non existent file",a,this.fd[a])};\nWASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_readdir",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_renumber",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_seek",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break;\ncase WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_sync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_tell",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_write",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0<this.fd[a].buffers.length?[concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)]:this.fd[a].buffers;let f=0;for(let k=0;k<c;k++){var g=b+8*k,h=e.getUint32(g,!0);g=e.getUint32(g+4,!0);f+=g;h=new Uint8Array(e.buffer,h,g);if(this.fd[a].buffers[0]&&\nthis.fd[a].seekPos<this.fd[a].buffers[0].length){const l=Number(this.fd[a].seekPos);h.slice(0,g).forEach((m,n)=>{this.fd[a].buffers[0][l+n]=m})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_create_directory",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_get",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_set_times",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_link",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_open",a,b,c,d,e,f,g,h,k,arguments);const l=this.getMemory();var m=(this.fd[a]||{path:"/"}).path,n=new Uint8Array(l.buffer,c,d);n=decoder$$module$src$utils$text_encoders.decode(n);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?"":m,n)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(";; opening path",\np,"withREader",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith("/..")||"/._"===p||"/.AppleDouble"===p)return WASI_EBADF$$module$src$filesystem$constants;(m=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?n=m.fd:(n=this.fd.length,this.fd[n]={fd:n});this.fd[n]={...this.fd[n],path:p,type:"file",seekPos:goog.global.BigInt(0),buffers:m?this.fd[n].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("should open a read handle for",\np);l.setUint32(k,n,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_readlink",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_remove_directory",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_rename",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_symlink",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3<a&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_unlink_file",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.poll_oneoff=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("poll_oneoff",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.proc_exit=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_exit",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.proc_raise=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_raise",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.random_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("random_get",a,b);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sched_yield=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sched_yield",arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.sock_recv=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_recv",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sock_send=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_send",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.sock_shutdown=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_shutdown",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.findBuffers=function(a){const b=Object.values(this.fd).find(({path:c})=>c===a);return[b&&b.buffers,b.fd]};\nWASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+"/").replace("//","/"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\\//g.test(d.replace(b,""))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,""))).filter(d=>!!d)};\nWASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]};\nWASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can\'t append to non-existing file ${a}`)};\nWASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn\'t been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)};\nWASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)};\nWASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0<c.length?console.warn(`mkdir: path ${a} already exists`):(a=Object.keys(this.fd).length,this.fd[a]={fd:a,path:b})};var module$src$filesystem$wasi={};module$src$filesystem$wasi.WASI=WASI$$module$src$filesystem$wasi;function clearArray$$module$src$utils$clear_array(a){for(;0<a.length;)a.pop()}var module$src$utils$clear_array={};module$src$utils$clear_array.clearArray=clearArray$$module$src$utils$clear_array;const CompressionMethod$$module$src$zlib$zlib={DEFLATE:8,RESERVED:15};var module$src$zlib$zlib={};module$src$zlib$zlib.CompressionMethod=CompressionMethod$$module$src$zlib$zlib;/*\n zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */\nfunction Huffman$$module$src$zlib$huffman(a){const b=a.length;let c=0,d=Number.POSITIVE_INFINITY,e,f,g,h;let k,l;for(k=0;k<b;++k)a[k]>c&&(c=a[k]),a[k]<d&&(d=a[k]);const m=1<<c,n=new Uint32Array(m);e=1;f=0;for(g=2;e<=c;){for(k=0;k<b;++k)if(a[k]===e){h=0;var p=f;for(l=0;l<e;++l)h=h<<1|p&1,p>>=1;p=e<<16|k;for(l=h;l<m;l+=g)n[l]=p;++f}++e;f<<=1;g<<=1}return[n,c,d]}var module$src$zlib$huffman={};module$src$zlib$huffman.Huffman=Huffman$$module$src$zlib$huffman;const ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate=32768;\nfunction RawInflate$$module$src$zlib$rawinflate(a,b){this.blocks=[];this.bufferSize=ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate;this.bitsbuflen=this.bitsbuf=this.ip=this.totalpos=0;this.input=new Uint8Array(a);this.bfinal=!1;this.bufferType=RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE;this.resize=!1;if(b||!(b={}))b.index&&(this.ip=b.index),b.bufferSize&&(this.bufferSize=b.bufferSize),b.bufferType&&(this.bufferType=b.bufferType),b.resize&&(this.resize=b.resize);switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.op=\nRawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;this.output=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength+this.bufferSize+RawInflate$$module$src$zlib$rawinflate.MaxCopyLength);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.op=0;this.output=new Uint8Array(this.bufferSize);break;default:throw Error("invalid inflate mode");}}RawInflate$$module$src$zlib$rawinflate.BufferType={BLOCK:0,ADAPTIVE:1};\nRawInflate$$module$src$zlib$rawinflate.prototype.decompress=function(){for(;!this.bfinal;)this.parseBlock();switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:return this.concatBufferBlock();case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:return this.concatBufferDynamic();default:throw Error("invalid inflate mode");}};RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength=32768;RawInflate$$module$src$zlib$rawinflate.MaxCopyLength=258;\nRawInflate$$module$src$zlib$rawinflate.Order=function(a){return new Uint16Array(a)}([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);RawInflate$$module$src$zlib$rawinflate.LengthCodeTable=function(a){return new Uint16Array(a)}([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]);RawInflate$$module$src$zlib$rawinflate.LengthExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]);\nRawInflate$$module$src$zlib$rawinflate.DistCodeTable=function(a){return new Uint16Array(a)}([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);RawInflate$$module$src$zlib$rawinflate.DistExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\nRawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable=function(a){return a}(function(){const a=new Uint8Array(288);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=143>=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=5;return Huffman$$module$src$zlib$huffman(a)}());\nRawInflate$$module$src$zlib$rawinflate.prototype.parseBlock=function(){let a=this.readBits(3);a&1&&(this.bfinal=!0);a>>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error("unknown BTYPE: "+a);}};\nRawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error("input buffer is broken");for(;c<a;)b|=d[e++]<<c,c+=8;this.bitsbuf=b>>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<<a)-1};\nRawInflate$$module$src$zlib$rawinflate.prototype.readCodeByTable=function(a){let b=this.bitsbuf,c=this.bitsbuflen;var d=this.input;let e=this.ip;var f=d.length;const g=a[0];for(a=a[1];c<a&&!(e>=f);)b|=d[e++]<<c,c+=8;d=g[b&(1<<a)-1];f=d>>>16;if(f>c)throw Error("invalid code length: "+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error("invalid uncompressed block header: LEN");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error("invalid uncompressed block header: NLEN");e=a[b++]|a[b++]<<8;if(f===~e)throw Error("invalid uncompressed block header: length verify");if(b+f>a.length)throw Error("input buffer is broken");\nswitch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error("invalid inflate mode");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);\nbreak;default:throw Error("invalid inflate mode");}};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;e<c;++e)d[RawInflate$$module$src$zlib$rawinflate.Order[e]]=this.readBits(3);d=Huffman$$module$src$zlib$huffman(d);c=new Uint8Array(a+b);e=0;for(b=a+b;e<b;){var f=this.readCodeByTable(d);switch(f){case 16:for(f=3+this.readBits(2);f--;)c[e++]=g;break;case 17:for(f=\n3+this.readBits(3);f--;)c[e++]=0;var g=0;break;case 18:for(f=11+this.readBits(7);f--;)c[e++]=0;g=0;break;default:g=c[e++]=f}}g=Huffman$$module$src$zlib$huffman(c.subarray(0,a));a=Huffman$$module$src$zlib$huffman(c.subarray(a));switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(g,a);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(g,a);break;default:throw Error("invalid inflate mode");}};\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanBlock=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;const e=c.length-RawInflate$$module$src$zlib$rawinflate.MaxCopyLength;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,n=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=\ne&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=m[f],0<n[f]&&(g+=this.readBits(n[f])),d>=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,n=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]=\nf;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=m[f],0<n[f]&&(g+=this.readBits(n[f])),d+h>e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\nRawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;\nreturn c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&("number"===typeof a.fixRatio&&(b=a.fixRatio),"number"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a<d.length?d.length+a:d.length<<1):a=d.length*b;a=new Uint8Array(a);a.set(d);return this.output=a};\nRawInflate$$module$src$zlib$rawinflate.prototype.concatBufferBlock=function(){let a=0;const b=this.output,c=this.blocks;let d;const e=new Uint8Array(this.totalpos+(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));let f,g,h,k;if(0===c.length)return this.output.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,this.op);f=0;for(g=c.length;f<g;++f)for(d=c[f],h=0,k=d.length;h<k;++h)e[a++]=d[h];f=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;for(g=this.op;f<\ng;++f)e[a++]=b[f];this.blocks=[];return this.buffer=e};RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferDynamic=function(){let a;const b=this.op;this.resize?(a=new Uint8Array(b),a.set(this.output.subarray(0,b))):a=this.output.subarray(0,b);return this.buffer=a};var module$src$zlib$rawinflate={};module$src$zlib$rawinflate.RawInflate=RawInflate$$module$src$zlib$rawinflate;function Util$$module$src$zlib$util(){}Util$$module$src$zlib$util.stringToByteArray=function(a){a=[...a];let b,c;b=0;for(c=a.length;b<c;b++)a[b]=(a[b].charPointAt(0)&255)>>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){"string"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0<d;){e=d>Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0};\nAdler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error("unsupported compression method");}if(0!==((c<<8)+d)%31)throw Error("invalid fcheck flag:"+((c<<8)+d)%31);if(d&32)throw Error("fdict flag is not supported");this.rawinflate=\nnew RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType;\nInflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error("invalid adler-32 checksum");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\\n$/g.test(d);e=/^\\n/g.test(d);var k=d.split("\\n").filter(m=>0<m.length),l=[];if(0===k.length&&h||e)l.push(c.join("")),clearArray$$module$src$utils$clear_array(c);k.forEach((m,n)=>{n+1===k.length?h?0===n?(l.push(c.join("")+m),\nclearArray$$module$src$utils$clear_array(c)):l.push(m):c.push(m):0===n?(l.push(c.join("")+m),clearArray$$module$src$utils$clear_array(c)):l.push(m)});l.forEach(m=>{m.replace(/(\\r\\n|\\n|\\r)/gm,"")&&b.post({log:m})})}},assertPluginExports$$module$src$module=a=>{if(a&&"object"===typeof a&&"object"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,"A csound plugin turns out to be neither a plugin, opcode or module.\\nPerhaps csdl.h or module.h wasn\'t imported correctly?");\nreturn!1}console.error("A csound plugin didn\'t export __wasm_call_ctors.\\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors");return!1}console.error("Error instantiating a csound plugin, instance and/or export is missing!");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let l=0,m=1;for(;;){const n=a[c++];l+=(n&127)*m;m*=128;if(!(n&128))break}return l}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error("Wasm magic number is missing!");\nif(0!==a[8])return logWasmModule$$module$src$logger("Dylink section wasn\'t found in wasm binary, assuming static wasm."),"static";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]==="d".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="y".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="l".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="i".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="n".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="k".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\n".".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="0".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory,\nstreamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]};\nvar $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{"/":"/"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if("static"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(t,z)=>{t=await t;\nlet v,y;try{v=new Uint8Array(z),y=getBinaryHeaderData$$module$src$module(v)}catch(C){console.error("Error in plugin",C)}y&&t.push({headerData:y,wasmPluginBytes:v});return t},[]);var l=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((t,{headerData:z})=>"static"===z?0:t+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+l;const m=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),n=new WebAssembly.Table({initial:k+\n1,element:"anyfunc"});e.setMemory(m);const p=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);l=new WebAssembly.Global({value:"i32",mutable:!1},l);const q=new WebAssembly.Global({value:"i32",mutable:!1},1),w=new WebAssembly.Global({value:"i32",mutable:!0},0);a=await WebAssembly.compile(a);const r=e.getImports(a);let u=[],A=d;r.env=r.env||{};r.env.memory=m;r.env.__indirect_function_table=\nn;r.env.__stack_pointer=p;r.env.__memory_base=l;r.env.__table_base=q;r.env.csoundLoadModules=t=>{u.forEach(z=>{void 0===x?console.error("csound-wasm internal: timing problem detected!"):dlinit$$module$src$dlinit(x,z,n,t)});return 0};r.env._ZTH5errno=function(){};r.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:m,messagePort:c,streamBuffer:[]});r.env.printDebugCallback=(t,z)=>{t=new Uint8Array(m.buffer,t,z);t=uint2String$$module$src$utils$text_encoders(t);console.log(t)};\nr["GOT.mem"]=r["GOT.mem"]||{};r["GOT.mem"].__heap_base=f;r["GOT.func"]=r["GOT.func"]||{};const x=await WebAssembly.instantiate(a,r);c=Object.assign({},x.exports);a={};a.exports=Object.assign(c,{memory:m});u=await b.reduce(async(t,{headerData:z,wasmPluginBytes:v})=>{t=await t;try{const {memorySize:y,memoryAlign:C,tableSize:F}=z,E=await WebAssembly.compile(v),B=e.getImports(E),G=new WebAssembly.Global({value:"i32",mutable:!1},A*PAGE_SIZE$$module$src$module);n.grow(F);B.env=Object.assign({},B.env);B.env.memory=\nm;B.env.__indirect_function_table=n;B.env.__memory_base=G;B.env.__stack_pointer=p;B.env.__table_base=q;B.env.csoundLoadModules=w;delete B.env.csoundWasiJsMessageCallback;A+=Math.ceil((y+C)/PAGE_SIZE$$module$src$module);const D=await WebAssembly.instantiate(E,B);assertPluginExports$$module$src$module(D)&&(D.exports.__wasm_call_ctors(),t.push(D))}catch(y){console.error("Error while compiling csound-plugin",y)}return t},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]},\nmodule$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;let combined$$module$src$workers$vanilla_worker,audioProcessCallback$$module$src$workers$vanilla_worker=()=>{};\nconst rtmidiQueue$$module$src$workers$vanilla_worker=[],createAudioInputBuffers$$module$src$workers$vanilla_worker=(a,b)=>{for(let c=0;c<b;++c)a.buffers.push(new Float64Array(RING_BUFFER_SIZE$$module$src$constants))},generateAudioFrames$$module$src$workers$vanilla_worker=(a,b)=>{if("realtimePerformanceEnded"!==b.vanillaWorkerState)return audioProcessCallback$$module$src$workers$vanilla_worker(a)},createRealtimeAudioThread$$module$src$workers$vanilla_worker=({libraryCsound:a,wasm:b,workerMessagePort:c,\naudioInputs:d,inputChannelCount:e,outputChannelCount:f,sampleRate:g})=>({csound:h})=>{var k=a.csoundGetInputName(h).includes("adc");g&&a.csoundSetOption(h,`--sr=${g}`);f&&a.csoundSetOption(h,`--nchnls=${f}`);e&&a.csoundSetOption(h,`--nchnls_i=${e}`);const l=a.csoundGetNchnls(h),m=0<e?e:k?a.csoundGetNchnlsInput(h):0,n=a.csoundGet0dBFS(h);k=a.csoundGetSpin(h);const p=a.csoundGetSpout(h),q=a.csoundGetKsmps(h);let w=new Float64Array(b.wasi.memory.buffer,k,q*m),r=new Float64Array(b.wasi.memory.buffer,\np,q*l),u=0,A=0;c.broadcastPlayState("realtimePerformanceStarted");audioProcessCallback$$module$src$workers$vanilla_worker=({numFrames:x})=>{const t=instantiateAudioPacket$$module$src$workers$common_utils(l,x),z=0<d.buffers.length&&d.availableFrames>=x;0<rtmidiQueue$$module$src$workers$vanilla_worker.length&&(rtmidiQueue$$module$src$workers$vanilla_worker.forEach(v=>{a.csoundPushMidiMessage(h,v[0],v[1],v[2])}),clearArray$$module$src$utils$clear_array(rtmidiQueue$$module$src$workers$vanilla_worker));\nfor(let v=0;v<x;v++){A=(A+1)%q;if("realtimePerformanceEnded"===c.vanillaWorkerState)return 0===u&&(a.csoundStop(h),u=a.csoundPerformKsmps(h)),c.broadcastPlayState("realtimePerformanceEnded"),audioProcessCallback$$module$src$workers$vanilla_worker=()=>{},clearArray$$module$src$utils$clear_array(rtmidiQueue$$module$src$workers$vanilla_worker),d.port=void 0,{framesLeft:v};if(0===A&&0===u&&(u=a.csoundPerformKsmps(h),0!==u))return c.broadcastPlayState("realtimePerformanceEnded"),audioProcessCallback$$module$src$workers$vanilla_worker=\n()=>{},clearArray$$module$src$utils$clear_array(rtmidiQueue$$module$src$workers$vanilla_worker),d.port=void 0,{framesLeft:v};0===w.length&&(w=new Float64Array(b.wasi.memory.buffer,a.csoundGetSpin(h),q*m));0===r.length&&(r=new Float64Array(b.wasi.memory.buffer,a.csoundGetSpout(h),q*l));t.forEach((y,C)=>{0<r.length&&(y[v]=(r[A*l+C]||0)/n)});if(z)for(let y=0;y<m;y++)w[A*m+y]=(d.buffers[y][v+d.inputReadIndex%RING_BUFFER_SIZE$$module$src$constants]||0)*n}z&&(d.availableFrames-=x,d.inputReadIndex+=x%RING_BUFFER_SIZE$$module$src$constants);\nreturn{audioPacket:t,framesLeft:0}}},callUncloned$$module$src$workers$vanilla_worker=async(a,b)=>(a=combined$$module$src$workers$vanilla_worker.get(a))&&a.apply({},b||[]),initMessagePort$$module$src$workers$vanilla_worker=({port:a})=>{logVANWorker$$module$src$logger("initMessagePort")();const b=new $jscompDefaultExport$$module$src$utils$message_port_state;b.port=a;b.post=c=>a.postMessage({log:c});b.broadcastPlayState=c=>{b.vanillaWorkerState=c;a.postMessage({playStateChange:c})};b.ready=!0;return b},\ninitRequestPort$$module$src$workers$vanilla_worker=({csoundWorkerFrameRequestPort:a,workerMessagePort:b})=>{logVANWorker$$module$src$logger("initRequestPort")();a.addEventListener("message",c=>{const {framesLeft:d=0,audioPacket:e}=generateAudioFrames$$module$src$workers$vanilla_worker(c.data,b)||{};a.postMessage({numFrames:c.data.numFrames-d,audioPacket:e,...c.data})});a.start();return a},initAudioInputPort$$module$src$workers$vanilla_worker=({port:a})=>{logVANWorker$$module$src$logger("initAudioInputPort")();\nconst b={availableFrames:0,buffers:[],inputReadIndex:0,inputWriteIndex:0,port:a};b.port.addEventListener("message",({data:c})=>{0===b.buffers.length&&createAudioInputBuffers$$module$src$workers$vanilla_worker(b,c.length);b.buffers.forEach((d,e)=>{d.set(c[e],b.inputWriteIndex)});b.inputWriteIndex+=c[0].length;b.availableFrames+=c[0].length;b.inputWriteIndex>=RING_BUFFER_SIZE$$module$src$constants&&(b.inputWriteIndex=0)});b.port.start();return b},initRtMidiEventPort$$module$src$workers$vanilla_worker=\n({rtmidiPort:a})=>{logVANWorker$$module$src$logger("initRtMidiEventPort")();a.addEventListener("message",({data:b})=>{rtmidiQueue$$module$src$workers$vanilla_worker.push(b)});a.start();return a},initialize$$module$src$workers$vanilla_worker=async({audioInputPort:a,inputChannelCount:b,messagePort:c,outputChannelCount:d,requestPort:e,rtmidiPort:f,wasmDataURI:g,wasmTransformerDataURI:h,withPlugins:k=[]})=>{logVANWorker$$module$src$logger("initializing wasm and exposing csoundAPI functions from worker to main")();\nconst l=initMessagePort$$module$src$workers$vanilla_worker({port:c}),m=initAudioInputPort$$module$src$workers$vanilla_worker({port:a});initRequestPort$$module$src$workers$vanilla_worker({csoundWorkerFrameRequestPort:e,workerMessagePort:l});initRtMidiEventPort$$module$src$workers$vanilla_worker({rtmidiPort:f});const [n,p]=await $jscompDefaultExport$$module$src$module({wasmDataURI:g,wasmTransformerDataURI:h,withPlugins:k,messagePort:l});n.wasi=p;const q=$jscompDefaultExport$$module$src$libcsound(n);\na=pipe$$module$node_modules$rambda$dist$rambda_mjs(assoc$$module$node_modules$rambda$dist$rambda_mjs("csoundStart",(r,u)=>handleCsoundStart$$module$src$workers$common_utils(l,q,p,createRealtimeAudioThread$$module$src$workers$vanilla_worker({audioInputs:m,inputChannelCount:b,libraryCsound:q,outputChannelCount:d,wasm:n,wasi:p,workerMessagePort:l}),renderFunction$$module$src$workers$common_utils({inputChannelCount:b,libraryCsound:q,outputChannelCount:d,wasm:n,workerMessagePort:l}))(u)),assoc$$module$node_modules$rambda$dist$rambda_mjs("wasm",\nn))(q);combined$$module$src$workers$vanilla_worker=new Map(Object.entries(a));q.csoundInitialize(0);const w=q.csoundCreate();l.port.addEventListener("message",r=>{r.data&&r.data.newPlayState&&("realtimePerformanceEnded"===r.data.newPlayState&&(q.csoundStop(w),"realtimePerformanceEnded"!==l.vanillaWorkerState&&q.csoundPerformKsmps(w),l.broadcastPlayState("realtimePerformanceEnded")),l.vanillaWorkerState=r.data.newPlayState)});l.port.start();return w};\nexpose$$module$node_modules$comlink$dist$esm$comlink_mjs({initialize:initialize$$module$src$workers$vanilla_worker,callUncloned:callUncloned$$module$src$workers$vanilla_worker});var module$src$workers$vanilla_worker={};}).call(this);\n//# sourceMappingURL=__compiled.vanilla.worker.js.map\n'])),
+module$dist$__compiled_vanilla_worker_inline={};module$dist$__compiled_vanilla_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_vanilla_worker_inline;class VanillaWorkerMainThread$$module$src$mains$vanilla_main{constructor({audioContext:a,audioWorker:b,audioContextIsProvided:c,inputChannelCount:d,outputChannelCount:e}){this.ipcMessagePorts=new IPCMessagePorts$$module$src$mains$messages_main;this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.publicEvents=new PublicEventAPI$$module$src$events(this);b.ipcMessagePorts=this.ipcMessagePorts;b.csoundWorkerMain=this;b.publicEvents=this.publicEvents;this.audioWorker=b;if(this.audioContextIsProvided=
+c)this.sampleRate=a.sampleRate;d&&(this.inputChannelCount=d);e&&(this.outputChannelCount=e);this.exportApi={};this.currentPlayState=this.csoundInstance=void 0;this.midiPortStarted=!1;this.onPlayStateChange=this.onPlayStateChange.bind(this)}async terminateInstance(){this.csoundWorker&&(this.csoundWorker.terminate(),delete this.csoundWorker);this.audioWorker&&this.audioWorker.terminateInstance&&(await this.audioWorker.terminateInstance(),delete this.audioWorker.terminateInstance);this.proxyPort&&(this.proxyPort[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),
+delete this.proxyPort);this.publicEvents&&this.publicEvents.terminateInstance();Object.keys(this.exportApi).forEach(a=>delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}get api(){return this.exportApi}handleMidiInput({data:a}){this.ipcMessagePorts.csoundMainRtMidiPort.postMessage&&this.ipcMessagePorts.csoundMainRtMidiPort.postMessage(a)}async prepareRealtimePerformance(){if(this.csoundInstance){this.audioWorker.sampleRate=await this.exportApi.getSr(this.csoundInstance);var a=
+await this.exportApi.getInputName(this.csoundInstance);this.audioWorker.isRequestingInput=a.includes("adc");this.audioWorker.isRequestingMidi=await this.exportApi._isRequestingRtMidiInput(this.csoundInstance);this.audioWorker.outputsCount=await this.exportApi.getNchnls(this.csoundInstance);this.audioWorker.inputsCount=this.audioWorker.isRequestingInput?1:0;logVANMain$$module$src$logger("vars for rtPerf set")()}else console.error("fatal error: csound instance not found?")}async onPlayStateChange(a){if(this.publicEvents){this.currentPlayState=
+a;switch(a){case "realtimePerformanceStarted":logVANMain$$module$src$logger("event: realtimePerformanceStarted from worker, now preparingRT..")();await this.prepareRealtimePerformance();break;case "realtimePerformanceEnded":logVANMain$$module$src$logger("event: realtimePerformanceEnded")();this.eventPromises.createStopPromise();this.midiPortStarted=!1;this.publicEvents.triggerRealtimePerformanceEnded(this);await this.eventPromises.releaseStopPromise();break;case "renderStarted":await this.eventPromises.releaseStartPromise();
+this.publicEvents.triggerRenderStarted(this);break;case "renderEnded":logVANMain$$module$src$logger("event: renderEnded received, beginning cleanup")(),this.publicEvents.triggerRenderEnded(this),await this.eventPromises.releaseStopPromise()}this.audioWorker.ipcMessagePorts||(this.audioWorker.ipcMessagePorts=this.ipcMessagePorts);await this.audioWorker.onPlayStateChange(a)}}async csoundPause(){if(this.eventPromises.isWaiting("pause"))return-1;this.eventPromises.createPausePromise();this.audioWorker&&
+void 0!==this.audioWorker.workletProxy?await this.audioWorker.workletProxy.pause():await this.audioWorker.onPlayStateChange("realtimePerformancePaused");await this.eventPromises.waitForPause();return 0}async csoundResume(){if(this.eventPromises.isWaiting("resume"))return-1;this.eventPromises.createResumePromise();this.audioWorker&&void 0!==this.audioWorker.workletProxy?await this.audioWorker.workletProxy.resume():await this.audioWorker.onPlayStateChange("realtimePerformanceResumed");await this.eventPromises.waitForResume();
+return 0}async initialize({wasmDataURI:a,withPlugins:b}){a=a();"function"===typeof this.audioWorker.initIframe&&await this.audioWorker.initIframe();b&&!isEmpty$$module$node_modules$rambda$dist$rambda_mjs(b)&&(b=await fetchPlugins$$module$src$utils(b));logVANMain$$module$src$logger("vanilla.main: initialize")();this.csoundWorker=this.csoundWorker||new Worker($jscompDefaultExport$$module$dist$__compiled_vanilla_worker_inline());this.ipcMessagePorts.mainMessagePort.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));
+this.ipcMessagePorts.mainMessagePort2.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePort.start();const c=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(this.csoundWorker);this.proxyPort=c;this.csoundInstance=await c.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({wasmDataURI:a,messagePort:this.ipcMessagePorts.workerMessagePort,requestPort:this.ipcMessagePorts.csoundWorkerFrameRequestPort,audioInputPort:this.ipcMessagePorts.csoundWorkerAudioInputPort,
+rtmidiPort:this.ipcMessagePorts.csoundWorkerRtMidiPort,sampleRate:this.sampleRate,inputChannelCount:this.inputChannelCount,outputChannelCount:this.outputChannelCount,withPlugins:b},[a,this.ipcMessagePorts.workerMessagePort,this.ipcMessagePorts.csoundWorkerFrameRequestPort,this.ipcMessagePorts.csoundWorkerAudioInputPort,this.ipcMessagePorts.csoundWorkerRtMidiPort]));this.exportApi.pause=this.csoundPause.bind(this);this.exportApi.resume=this.csoundResume.bind(this);this.exportApi.terminateInstance=
+this.terminateInstance.bind(this);this.exportApi.getAudioContext=async()=>this.audioWorker.audioContext;this.exportApi.getNode=async()=>{const d=this.audioWorker.audioWorkletNode;return d?d:await new Promise(e=>{this.exportApi.once("onAudioNodeCreated",e)})};this.exportApi=this.publicEvents.decorateAPI(this.exportApi);this.exportApi.enableAudioInput=()=>console.warn("enableAudioInput was ignored: please use -iadc option before calling start with useWorker=true");this.exportApi.addListener("message",
+console.log);for(const d of Object.keys(api$$module$src$libcsound)){const e=api$$module$src$libcsound[d],f=makeProxyCallback$$module$src$utils(c,this.csoundInstance,d,this.currentPlayState);switch(d){case "csoundCreate":break;case "csoundStart":b=async function(){if(this.eventPromises.isWaiting("start"))return-1;this.eventPromises.createStartPromise();const g=await f({csound:this.csoundInstance});await this.eventPromises.waitForStart();return g};b.toString=()=>e.toString();this.exportApi.start=b.bind(this);
+break;case "csoundStop":b=async function(){if(this.eventPromises.isWaiting("stop"))return-1;this.eventPromises.createStopPromise();this.ipcMessagePorts.mainMessagePort.postMessage({newPlayState:"renderStarted"===this.currentPlayState?"renderEnded":"realtimePerformanceEnded"});await this.eventPromises.waitForStop();return 0};this.exportApi.stop=b.bind(this);b.toString=e.toString;break;case "csoundReset":b=async()=>{if(this.currentPlayState){if(this.eventPromises.isWaiting("reset"))return-1;stopableStates$$module$src$utils.has(this.currentPlayState)&&
+await this.exportApi.stop();const g=await f([]);this.audioContextIsProvided||(await this.audioWorker.terminateInstance(),delete this.audioWorker.audioContext);this.ipcMessagePorts.restartAudioWorkerPorts();return g}};this.exportApi.reset=b.bind(this);b.toString=e.toString;break;case "fs":this.exportApi.fs={};Object.keys(e).forEach(g=>{const h=makeProxyCallback$$module$src$utils(c,this.csoundInstance,g,this.currentPlayState);h.toString=e[g].toString;this.exportApi.fs[g]=h});break;default:f.toString=
+e.toString,this.exportApi[csoundApiRename$$module$src$utils(d)]=f}}logVANMain$$module$src$logger("exportAPI generated")()}}var $jscompDefaultExport$$module$src$mains$vanilla_main=VanillaWorkerMainThread$$module$src$mains$vanilla_main,module$src$mains$vanilla_main={};module$src$mains$vanilla_main.default=$jscompDefaultExport$$module$src$mains$vanilla_main;/*
+ unmute-ios-audio. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
+var module$node_modules$unmute_ios_audio$index={default:function(){function a(m){"blocked"===e&&(e="pending",b());"blocked"===f&&(f="pending",h=new d,k=h.createBufferSource(),k.buffer=h.createBuffer(1,1,22050),k.connect(h.destination),k.start(),"running"===h.state?(f="allowed",c()):(f="blocked",k.disconnect(h.destination),k=null,h.close(),h=null))}function b(){g=document.createElement("audio");g.setAttribute("x-webkit-airplay","deny");g.preload="auto";g.loop=!0;g.src=n;g.load();g.play().then(()=>
+{e="allowed";c()},()=>{e="blocked";g.pause();g.removeAttribute("src");g.load();g=null})}function c(){"allowed"===e&&"allowed"===f&&USER_ACTIVATION_EVENTS$$module$node_modules$unmute_ios_audio$index.forEach(m=>{window.removeEventListener(m,a,{capture:!0,passive:!0})})}const d=window.webkitAudioContext;if(0<navigator.maxTouchPoints&&null!=d){var e="blocked",f="blocked",g,h,k,n=function(m){const l=new ArrayBuffer(10),p=new DataView(l);p.setUint32(0,m,!0);p.setUint32(4,m,!0);p.setUint16(8,1,!0);return`data:audio/wav;base64,UklGRisAAABXQVZFZm10IBAAAAABAAEA${window.btoa(String.fromCharCode(...(new Uint8Array(l)))).slice(0,
+13)}AgAZGF0YQcAAACAgICAgICAAAA=`}((new d).sampleRate);USER_ACTIVATION_EVENTS$$module$node_modules$unmute_ios_audio$index.forEach(m=>{window.addEventListener(m,a,{capture:!0,passive:!0})})}}};const USER_ACTIVATION_EVENTS$$module$node_modules$unmute_ios_audio$index="auxclick click contextmenu dblclick keydown keyup mousedown mouseup touchend".split(" ");const DEFAULT_BUFFER_LEN$$module$src$constants=128,MAX_CHANNELS$$module$src$constants=32,RING_BUFFER_SIZE$$module$src$constants=16384,MIDI_BUFFER_SIZE$$module$src$constants=1024,MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants=3,CALLBACK_DATA_BUFFER_SIZE$$module$src$constants=16384,initialSharedState$$module$src$constants=[0,4096,0,0,0,0,-1,-1,-1,-1,0,DEFAULT_BUFFER_LEN$$module$src$constants,0,0,0,0,0,0,0,0],AUDIO_STATE$$module$src$constants={CSOUND_LOCK:0,FRAMES_REQUESTED:1,IS_PERFORMING:2,IS_RENDERING:3,
+IS_PAUSED:4,STOP:5,SAMPLE_RATE:6,KSMPS:7,NCHNLS:8,NCHNLS_I:9,IS_REQUESTING_MIC:10,BUFFER_LEN:11,OUTPUT_READ_INDEX:12,OUTPUT_WRITE_INDEX:13,AVAIL_IN_BUFS:14,AVAIL_OUT_BUFS:15,IS_REQUESTING_RTMIDI:16,RTMIDI_INDEX:17,AVAIL_RTMIDI_EVENTS:18,HAS_PENDING_CALLBACKS:19},DATA_TYPE$$module$src$constants={NUMBER:0,STRING:1,FLOAT_32:2,FLOAT_64:3};var module$src$constants={};module$src$constants.AUDIO_STATE=AUDIO_STATE$$module$src$constants;module$src$constants.CALLBACK_DATA_BUFFER_SIZE=CALLBACK_DATA_BUFFER_SIZE$$module$src$constants;
+module$src$constants.DATA_TYPE=DATA_TYPE$$module$src$constants;module$src$constants.DEFAULT_BUFFER_LEN=DEFAULT_BUFFER_LEN$$module$src$constants;module$src$constants.MAX_CHANNELS=MAX_CHANNELS$$module$src$constants;module$src$constants.MIDI_BUFFER_PAYLOAD_SIZE=MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants;module$src$constants.MIDI_BUFFER_SIZE=MIDI_BUFFER_SIZE$$module$src$constants;module$src$constants.RING_BUFFER_SIZE=RING_BUFFER_SIZE$$module$src$constants;module$src$constants.initialSharedState=initialSharedState$$module$src$constants;var $jscompDefaultExport$$module$dist$__compiled_sab_worker_inline=()=>(window.URL||window.webkitURL).createObjectURL(new Blob(['(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(".");d=d||goog.global;a[0]in d||"undefined"==typeof d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE="en";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(".")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;\ngoog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;\ngoog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error(\'Module with namespace "\'+a+\'" already exists.\');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error(\'Module with namespace "\'+\na+\'" has been loaded incorrectly.\');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0});\ngoog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath="";goog.abstractMethod=function(){throw Error("unimplemented abstract method");};\ngoog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME="goog";\ngoog.hasBadLetScoping=null;\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if("function"===typeof a)d=a.call(void 0,d);else if("string"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error("Invalid module definition");var e=goog.moduleLoaderState_.moduleName;if("string"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&\nObject.seal&&"object"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error(\'Invalid module name "\'+e+\'"\');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};\ngoog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};\ngoog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};\ngoog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split("-");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join("-")};d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};\ngoog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,"&lt;"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&apos;/g,"\'").replace(/&quot;/g,\'"\').replace(/&amp;/g,"&"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};\ngoog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"").match(/Edge\\/(\\d+)(\\.\\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?"complete"!=a.readyState:"loading"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&"string"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=\ngoog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?");d=-1==d?c.length:d;if("base.js"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,"\\\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=\n[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error("Unregonized namespace: "+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},\ngoog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=\nfunction(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error("Bad dependency path or symbol: "+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_("goog.require could not find: "+a)},goog.DebugLoader_.prototype.loadDeps_=\nfunction(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error("Cannot call pause after the call to load.");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error("Double call to loaded.");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,\nmoduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||""})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error("Cannot register with defer after the call to load.");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};\ntry{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==\na.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?\nthis.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=\nfunction(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf("://");0<=b&&(a=a.substring(b+3),b=a.indexOf("/"),0<=b&&(a=a.substring(b+1)));return a},\ngoog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},\ngoog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error("Callback key "+a+" does not exist (was base.js loaded more than once?).");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==\nb.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error(\'Cannot write "\'+this.path+\'" after document load\');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&"complete"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?\' nonce="\'+c+\'"\':"";var f=\'<script src="\'+this.path+\'"\'+\nc+(goog.Dependency.defer_?" defer":"")+\' id="script-\'+e+\'">\\x3c/script>\';f+="<script"+c+">";f=goog.Dependency.defer_?f+("document.getElementById(\'script-"+e+"\').onload = function() {\\n goog.Dependency.callback_(\'"+e+"\', this);\\n};\\n"):f+("goog.Dependency.callback_(\'"+e+"\', document.getElementById(\'script-"+e+"\'));");f+="\\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement("script");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=\nc);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,\nb,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,n){var m="",p=goog.getScriptNonce_();p&&(m=\' nonce="\'+p+\'"\');l=n?\'<script type="module" crossorigin\'+m+">"+n+"\\x3c/script>":\'<script type="module" crossorigin src="\'+l+\'"\'+m+">\\x3c/script>";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,n){var m=d.createElement("script");m.defer=!0;m.async=!1;m.type="module";m.setAttribute("crossorigin",\n!0);var p=goog.getScriptNonce_();p&&(m.nonce=p);n?m.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(n):n:m.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(m)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);\na.setModuleState(goog.ModuleType.ES6)});f(void 0,\'goog.Dependency.callback_("\'+g+\'")\');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,\'import * as m from "\'+this.path+\'"; goog.Dependency.callback_("\'+h+\'", m)\');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,\'goog.Dependency.callback_("\'+\nk+\'")\')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=\ne.transform(e.contents_),e.contents_&&(e.contents_+="\\n//# sourceURL="+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var l=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(l));if(f)var n=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),n)});a.loaded()}}\nfunction d(){var l=goog.global.document,n=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(n);c()}),m=goog.getScriptNonce_();m="<script"+(m?\' nonce="\'+m+\'"\':"")+">"+goog.protectScriptTag_(\'goog.Dependency.callback_("\'+n+\'");\')+"\\x3c/script>";l.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(m):m)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,a.loaded()):\na.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&("ActiveXObject"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){"interactive"==h.readyState&&(h.onreadystatechange=\nk,c(),a.resume());"function"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,\nc,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?"goog.loadModule("+goog.global.JSON.stringify(a+"\\n//# sourceURL="+this.path+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+a+"\\n;return exports});\\n//# sourceURL="+this.path+"\\n"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=\nb||[];a=a.replace(/\\\\/g,"/");var e=goog.normalizePath_(goog.basePath+a);d&&"boolean"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?\nnew goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),\ngoog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy("goog#base#devonly#eval")||{createScript:goog.identity_}};const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.proxy"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.endpoint"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.releaseProxy"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.thrown"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>"object"===typeof a&&null!==a||"function"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=\n{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&\nthrowMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([["proxy",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],["throw",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);\nfunction expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener("message",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const n=h.slice(0,-1).reduce((p,q)=>p[q],a),m=h.reduce((p,q)=>p[q],a);switch(g){case "GET":var l=m;break;case "SET":n[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);\nl=!0;break;case "APPLY":l=m.apply(n,k);break;case "CONSTRUCT":const p=new m(...k);l=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case "ENDPOINT":const {port1:q,port2:B}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,B);l=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case "RELEASE":l=void 0;break;default:return}}catch(n){l={value:n,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(l).catch(n=>\n({value:n,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(n=>{const [m,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(n);b.postMessage(Object.assign(Object.assign({},m),{id:f}),p);"RELEASE"===g&&(b.removeEventListener("message",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return"MessagePort"===a.constructor.name}\nfunction closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error("Proxy has been released and is not useable");}\nfunction createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"RELEASE",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if("then"===\ng){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"GET",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,l]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"SET",path:[...b,g].map(n=>n.toString()),value:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"ENDPOINT"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if("bind"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\nb.slice(0,-1));const [k,l]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"APPLY",path:b.map(n=>n.toString()),argumentList:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"CONSTRUCT",path:b.map(l=>l.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}\nfunction processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}\nfunction proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c="*"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}\nfunction toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:"HANDLER",name:b,value:d},e]}return[{type:"RAW",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}\nfunction fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case "HANDLER":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case "RAW":return a.value}}\nfunction requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener("message",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener("message",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}\nfunction generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;\nMessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;const csoundCreate$$module$src$modules$instantiation=a=>()=>a.exports.csoundCreateWasi();csoundCreate$$module$src$modules$instantiation.toString=()=>"create = async () => undefined;";const csoundDestroy$$module$src$modules$instantiation=a=>b=>a.exports.csoundDestroy(b);csoundDestroy$$module$src$modules$instantiation.toString=()=>"destroy = async () => undefined;";const csoundGetAPIVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetAPIVersion();\ncsoundGetAPIVersion$$module$src$modules$instantiation.toString=()=>"getAPIVersion = async () => Number;";const csoundGetVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetVersion();csoundGetVersion$$module$src$modules$instantiation.toString=()=>"getVersion = async () => Number;";const csoundInitialize$$module$src$modules$instantiation=a=>(b,c)=>a.exports.csoundInitialize(c);csoundInitialize$$module$src$modules$instantiation.toString=()=>"initialize = async () => Number;";\nvar module$src$modules$instantiation={};module$src$modules$instantiation.csoundCreate=csoundCreate$$module$src$modules$instantiation;module$src$modules$instantiation.csoundDestroy=csoundDestroy$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetAPIVersion=csoundGetAPIVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetVersion=csoundGetVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundInitialize=csoundInitialize$$module$src$modules$instantiation;const WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders=!1;function TextEncoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";return this}TextEncoderPoly$$module$src$utils$text_encoders.prototype.encode=function(a){if("string"!==typeof a)throw new TypeError("passed argument must be of type string "+a+" "+typeof a);a=unescape(encodeURIComponent(a));const b=new Uint8Array(a.length);[...a].forEach(function(c,d){b[d]=c.codePointAt(0)});return b};\nfunction TextDecoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";this.ignoreBOM=!1;this.trimNull=a=>{const b=a.indexOf("\\x00");return-1<b?a.slice(0,Math.max(0,b)):a};this.decode=function(a,b){if(void 0===a)return"";if("boolean"!==typeof(void 0!==b&&"stream"in b?b.stream:!1))throw new TypeError("stream option must be boolean");if(ArrayBuffer.isView(a)){a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);const c=Array.from({length:a.length});a.forEach(function(d,e){c[e]=String.fromCodePoint(d)});\nreturn this.trimNull(c.join(""))}throw new TypeError("passed argument must be an array buffer view");}}\nconst decoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextDecoderPoly$$module$src$utils$text_encoders:new TextDecoder("utf8"),encoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextEncoderPoly$$module$src$utils$text_encoders:new TextEncoder("utf8"),uint2String$$module$src$utils$text_encoders=a=>decoder$$module$src$utils$text_encoders.decode(a);var module$src$utils$text_encoders={};\nmodule$src$utils$text_encoders.decoder=decoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.encoder=encoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.uint2String=uint2String$$module$src$utils$text_encoders;const trimNull$$module$src$utils$trim_null=a=>{const b=a.indexOf("\\x00");return-1<b?a.substr(0,b):a};var module$src$utils$trim_null={};module$src$utils$trim_null.trimNull=trimNull$$module$src$utils$trim_null;const freeStringPtr$$module$src$utils$string_pointers=(a,b)=>{a.exports.freeStringMem(b)},ptr2string$$module$src$utils$string_pointers=(a,b)=>{({buffer:a}=a.wasi.memory);b=new Uint8Array(a,b);b=uint2String$$module$src$utils$text_encoders(b);return trimNull$$module$src$utils$trim_null(b)},string2ptr$$module$src$utils$string_pointers=(a,b)=>{if("string"!==typeof b)console.error("Expected string but got",typeof b);else{b=encoder$$module$src$utils$text_encoders.encode(b);var c=a.exports.allocStringMem(b.length);\n({buffer:a}=a.wasi.memory);(new Uint8Array(a,c,b.length+1)).set(b);return c}};var module$src$utils$string_pointers={};module$src$utils$string_pointers.freeStringPtr=freeStringPtr$$module$src$utils$string_pointers;module$src$utils$string_pointers.ptr2string=ptr2string$$module$src$utils$string_pointers;module$src$utils$string_pointers.string2ptr=string2ptr$$module$src$utils$string_pointers;const csoundParseOrc$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundParseOrc(b,c);csoundParseOrc$$module$src$modules$performance.toString=()=>"parseOrc = async (orchestra) => Object;";const csoundCompileTree$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundCompileTree(b,c);csoundCompileTree$$module$src$modules$performance.toString=()=>"compileTree = async (tree) => Number;";\nconst csoundCompileOrc$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileOrc(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileOrc$$module$src$modules$performance.toString=()=>"compileOrc = async (orchestra) => Number;";\nconst csoundEvalCode$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundEvalCode(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundEvalCode$$module$src$modules$performance.toString=()=>"csoundEvalCode = async (orchestra) => Number;";const csoundStart$$module$src$modules$performance=a=>b=>a.exports.csoundStartWasi(b);csoundStart$$module$src$modules$performance.toString=()=>"start = async () => Number;";\nconst csoundCompileCsd$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);let d;try{d=a.exports.csoundCompileCsd(b,c)}catch(e){console.error(e)}freeStringPtr$$module$src$utils$string_pointers(a,c);return d};csoundCompileCsd$$module$src$modules$performance.toString=()=>"compileCsd = async (path) => Number;";\nconst csoundCompileCsdText$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileCsdText(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileCsdText$$module$src$modules$performance.toString=()=>"compileCsdText = async (csoundDocument) => Number;";const csoundPerform$$module$src$modules$performance=a=>b=>a.exports.csoundPerform(b);csoundPerform$$module$src$modules$performance.toString=()=>"perform = async () => Number;";\nconst csoundPerformKsmps$$module$src$modules$performance=a=>b=>a.exports.csoundPerformKsmpsWasi(b);csoundPerformKsmps$$module$src$modules$performance.toString=()=>"performKsmps = async (csound) => Number;";const csoundPerformBuffer$$module$src$modules$performance=a=>b=>a.exports.csoundPerformBuffer(b);csoundPerformBuffer$$module$src$modules$performance.toString=()=>"performBuffer = async (csound) => Number;";const csoundStop$$module$src$modules$performance=a=>b=>a.exports.csoundStop(b);\ncsoundStop$$module$src$modules$performance.toString=()=>"stop = async () => undefined;";const csoundCleanup$$module$src$modules$performance=a=>b=>a.exports.csoundCleanup(b);csoundCleanup$$module$src$modules$performance.toString=()=>"cleanup = async () => Number;";const csoundReset$$module$src$modules$performance=a=>b=>a.exports.csoundResetWasi(b);csoundReset$$module$src$modules$performance.toString=()=>"reset = async () => Number;";var module$src$modules$performance={};\nmodule$src$modules$performance.csoundCleanup=csoundCleanup$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsd=csoundCompileCsd$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsdText=csoundCompileCsdText$$module$src$modules$performance;module$src$modules$performance.csoundCompileOrc=csoundCompileOrc$$module$src$modules$performance;module$src$modules$performance.csoundCompileTree=csoundCompileTree$$module$src$modules$performance;\nmodule$src$modules$performance.csoundEvalCode=csoundEvalCode$$module$src$modules$performance;module$src$modules$performance.csoundParseOrc=csoundParseOrc$$module$src$modules$performance;module$src$modules$performance.csoundPerform=csoundPerform$$module$src$modules$performance;module$src$modules$performance.csoundPerformBuffer=csoundPerformBuffer$$module$src$modules$performance;module$src$modules$performance.csoundPerformKsmps=csoundPerformKsmps$$module$src$modules$performance;\nmodule$src$modules$performance.csoundReset=csoundReset$$module$src$modules$performance;module$src$modules$performance.csoundStart=csoundStart$$module$src$modules$performance;module$src$modules$performance.csoundStop=csoundStop$$module$src$modules$performance;const sizeOfPrimitive$$module$src$utils$native_sizes={int:4,MYFLT:4,char:1},sizeofStruct$$module$src$utils$native_sizes=a=>a.reduce((b,[,c,...d])=>b+("char"===c?sizeOfPrimitive$$module$src$utils$native_sizes[c]*d[0]:sizeOfPrimitive$$module$src$utils$native_sizes[c]),0);var module$src$utils$native_sizes={};module$src$utils$native_sizes.sizeOfPrimitive=sizeOfPrimitive$$module$src$utils$native_sizes;module$src$utils$native_sizes.sizeofStruct=sizeofStruct$$module$src$utils$native_sizes;const structBufferToObject$$module$src$utils$structure_buffer_to_object=(a,b)=>{[a]=a.reduce(([c,d],[e,f,...g])=>{g="char"===f?sizeOfPrimitive$$module$src$utils$native_sizes[f]*g[0]:sizeOfPrimitive$$module$src$utils$native_sizes[f];f="char"===f?trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(b.subarray(d,g)))||"":b[d];c[e]=f;return[c,d+g]},[{},0]);return a};var module$src$utils$structure_buffer_to_object={};\nmodule$src$utils$structure_buffer_to_object.structBufferToObject=structBufferToObject$$module$src$utils$structure_buffer_to_object;const CSOUND_PARAMS$$module$src$structures=[["debug_mode","int"],["buffer_frames","int"],["hardware_buffer_frames","int"],["displays","int"],["ascii_graphs","int"],["postscript_graphs","int"],["message_level","int"],["tempo","int"],["ring_bell","int"],["use_cscore","int"],["terminate_on_midi","int"],["heartbeat","int"],["defer_gen01_load","int"],["midi_key","int"],["midi_key_cps","int"],["midi_key_oct","int"],["midi_key_pch","int"],["midi_velocity","int"],["midi_velocity_amp","int"],["no_default_paths",\n"int"],["number_of_threads","int"],["syntax_check_only","int"],["csd_line_counts","int"],["compute_weights","int"],["realtime_mode","int"],["sample_accurate","int"],["sample_rate_override","MYFLT"],["control_rate_override","MYFLT"],["nchnls_override","int"],["nchnls_i_override","int"],["e0dbfs_override","MYFLT"],["daemon","int"],["ksmps_override","int"],["FFT_library","int"]],CS_MIDIDEVICE$$module$src$structures=[["device_name","char",64],["interface_name","char",64],["device_id","char",64],["midi_module",\n"char",64],["isOutput","int"]];var module$src$structures={};const csoundGetSr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSr(b);csoundGetSr$$module$src$modules$attributes.toString=()=>"getSr = async () => Number;";const csoundGetKr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKr(b);csoundGetKr$$module$src$modules$attributes.toString=()=>"getKr = async () => Number;";const csoundGetKsmps$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKsmps(b);csoundGetKsmps$$module$src$modules$attributes.toString=()=>"getKsmps = async () => Number;";\nconst csoundGetNchnls$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnls(b);csoundGetNchnls$$module$src$modules$attributes.toString=()=>"getNchnls = async () => Number;";const csoundGetNchnlsInput$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnlsInput(b);csoundGetNchnlsInput$$module$src$modules$attributes.toString=()=>"getNchnlsInput = async () => Number;";const csoundGet0dBFS$$module$src$modules$attributes=a=>b=>a.exports.csoundGet0dBFS(b);\ncsoundGet0dBFS$$module$src$modules$attributes.toString=()=>"get0dBFS = async () => Number;";const csoundGetA4$$module$src$modules$attributes=a=>b=>a.exports.csoundGetA4(b);csoundGetA4$$module$src$modules$attributes.toString=()=>"getA4 = async () => Number;";const csoundGetCurrentTimeSamples$$module$src$modules$attributes=a=>b=>a.exports.csoundGetCurrentTimeSamples(b);csoundGetCurrentTimeSamples$$module$src$modules$attributes.toString=()=>"getCurrentTimeSamples = async () => Number;";\nconst csoundGetSizeOfMYFLT$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSizeOfMYFLT(b);csoundGetSizeOfMYFLT$$module$src$modules$attributes.toString=()=>"getSizeOfMYFLT = async () => Number;";const csoundSetOption$$module$src$modules$attributes=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundSetOption(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundSetOption$$module$src$modules$attributes.toString=()=>"setOption = async (option) => Number;";\nconst csoundSetParams$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetParams(b,c)};csoundSetParams$$module$src$modules$attributes.toString=()=>"setParams = async (csoundParams) => undefined;";\nconst csoundGetParams$$module$src$modules$attributes=a=>b=>{var {buffer:c}=a.wasi.memory;const d=sizeofStruct$$module$src$utils$native_sizes(CSOUND_PARAMS$$module$src$structures),e=a.exports.allocCsoundParamsStruct();c=new Uint8Array(c,e,d);a.exports.csoundGetParams(b,e);b=structBufferToObject$$module$src$utils$structure_buffer_to_object(CSOUND_PARAMS$$module$src$structures,c);a.exports.freeCsoundParams(e);return b};csoundGetParams$$module$src$modules$attributes.toString=()=>"getParams = async () => CSOUND_PARAMS;";\nconst csoundGetDebug$$module$src$modules$attributes=a=>b=>a.exports.csoundGetDebug(b);csoundGetDebug$$module$src$modules$attributes.toString=()=>"getDebug = async () => Number;";const csoundSetDebug$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetDebug(b,c)};csoundSetDebug$$module$src$modules$attributes.toString=()=>"setDebug = async (number) => undefined;";var module$src$modules$attributes={};module$src$modules$attributes.csoundGet0dBFS=csoundGet0dBFS$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundGetA4=csoundGetA4$$module$src$modules$attributes;module$src$modules$attributes.csoundGetCurrentTimeSamples=csoundGetCurrentTimeSamples$$module$src$modules$attributes;module$src$modules$attributes.csoundGetDebug=csoundGetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKr=csoundGetKr$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKsmps=csoundGetKsmps$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundGetNchnls=csoundGetNchnls$$module$src$modules$attributes;module$src$modules$attributes.csoundGetNchnlsInput=csoundGetNchnlsInput$$module$src$modules$attributes;module$src$modules$attributes.csoundGetParams=csoundGetParams$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSizeOfMYFLT=csoundGetSizeOfMYFLT$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSr=csoundGetSr$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundSetDebug=csoundSetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundSetOption=csoundSetOption$$module$src$modules$attributes;module$src$modules$attributes.csoundSetParams=csoundSetParams$$module$src$modules$attributes;const csoundGetInputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBufferSize(b);csoundGetInputBufferSize$$module$src$modules$rtaudio.toString=()=>"getInputBufferSize = async () => Number;";const csoundGetOutputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBufferSize(b);csoundGetOutputBufferSize$$module$src$modules$rtaudio.toString=()=>"getOutputBufferSize = async () => Number;";const csoundGetInputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBuffer(b);\ncsoundGetInputBuffer$$module$src$modules$rtaudio.toString=()=>"getInputBuffer = async () => Number;";const csoundGetOutputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBuffer(b);csoundGetOutputBuffer$$module$src$modules$rtaudio.toString=()=>"getOutputBuffer = async () => Number;";const csoundGetSpin$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpin(b);csoundGetSpin$$module$src$modules$rtaudio.toString=()=>"getSpin = async (csound) => Number;";\nconst csoundGetSpout$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpout(b);csoundGetSpout$$module$src$modules$rtaudio.toString=()=>"getSpout = async () => Number;";var module$src$modules$rtaudio={};module$src$modules$rtaudio.csoundGetInputBuffer=csoundGetInputBuffer$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetInputBufferSize=csoundGetInputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetOutputBuffer=csoundGetOutputBuffer$$module$src$modules$rtaudio;\nmodule$src$modules$rtaudio.csoundGetOutputBufferSize=csoundGetOutputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpin=csoundGetSpin$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpout=csoundGetSpout$$module$src$modules$rtaudio;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}\nfunction adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}\nfunction and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}\nfunction anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.split("").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}\nfunction apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;\nfunction __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&"constructor"!==c&&("object"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),"function"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}\nfunction __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&"undefined"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}\nfunction __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,\nb,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;\nfor(;d<f;d++){if("object"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);"function"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&"constructor"!==e&&("object"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):"function"===typeof a[e]&&(d[e]=a[e](...c)));return d}\nfunction applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;\nfunction assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d="string"===typeof a?a.split(".").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e="object"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&\nisArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}\nfunction _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,n){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,l,n,m){return b.apply(this,arguments)}}}\nfunction curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error("First argument to _arity must be a non-negative integer no greater than ten");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}\nfunction bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}\nfunction chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error("min must not be greater than max in clamp(min, max, value)");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]="object"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}\nclass ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError("reduce: list must be array or iterable");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}\nconst reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);\nfunction _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,n){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,l,n,m){return b.apply(this,arguments)};default:throw Error("First argument to _arity must be a non-negative integer no greater than ten");}}\nfunction _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}\nfunction pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("pipe requires at least one argument");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}\nfunction compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("compose requires at least one argument");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof a?`${a}${b}`:[...a,...b]}\nfunction cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}\nfunction mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nfunction map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}\nfunction converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}\nfunction count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}\nconst dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}\nfunction type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return"Null";if(void 0===a)return"Undefined";if(Number.isNaN(a))return"NaN";a=Object.prototype.toString.call(a).slice(8,-1);return"AsyncFunction"===a?"Promise":a}\nfunction _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}\nfunction parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return["Error","TypeError"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}\nfunction equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if("Function"===c)return void 0===a.name?!1:a.name===b.name;if(["NaN","Undefined","Null"].includes(c))return!0;if("Number"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if(["String","Boolean"].includes(c))return a.toString()===\nb.toString();if("Array"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);\nif(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if("Set"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if("Object"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});\nreturn f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \\\'indexOf\\\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}\nclass _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Null","Undefined","NaN"].includes(b)?b in this.items?!1:this.items[b]=!0:["Object","Array"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}\nfunction uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}\nfunction drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}\nfunction dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if("function"!==typeof a)throw Error(`\'predicate\' is from wrong type ${typeof a}`);if(!c&&"string"!==typeof b)throw Error(`\'iterable\' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):\n(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join("")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}\nfunction dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}\nfunction dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join("")}\nfunction either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}\nfunction endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if("string"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}\nfunction prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}\nfunction evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if("Object"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return"Function"===e?a[d](c):"Object"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}\nfunction evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error("iterableType !== rulesType");if(!["Object","Array"].includes(c))throw Error(`\'iterable\' and \'rules\' are from wrong type ${c}`);return"Object"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,\nb)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}\nfunction filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error("Incorrect iterable input");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}\nfunction findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}\nfunction flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}\nfunction flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error("R.flip doesn\'t work with arity > 4");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}\nfunction fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}\nfunction groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError("list.reduce is not a function");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),l=0===e.length;h=h===b.length-1;if(k)return l&&e.push(f),e.push(g),h&&d.push(e),g;if(l)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},\nvoid 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b="."){return"string"===typeof a?a.split(b):a}\nfunction path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}\nfunction hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[0]||"":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;\nfunction identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===("boolean"===typeof a?a:a(...d))?b(...d):c(...d)}\nconst ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}\nfunction indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}\nfunction indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}\nfunction init$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}\nfunction intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}\nfunction isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Undefined","NaN","Number","Null"].includes(b)?!1:a?"Object"===b?0===Object.keys(a).length:"Array"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}\nfunction join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[a.length-1]||"":a[a.length-1]}\nfunction lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||"string"===typeof a?a.length:NaN}\nfunction lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return"[object String]"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}\nfunction updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}\nfunction lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}\nfunction mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}\nfunction mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}\nfunction mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}\nfunction mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}\nconst mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}\nfunction _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,\nd,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],\nb,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}\nfunction moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error("Rambda.move does not support negative indexes");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}\nfunction not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}\nfunction omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}\nfunction on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}\nfunction once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});\nfunction overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}\nfunction partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}\nfunction pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}\nfunction pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof b?[a].concat(b.split("")):[a].concat(b)}\nconst product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error("propsToPick is not a list");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}\nconst propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError("Both arguments to range must be numbers");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}\nfunction reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}\nconst replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.split("").reverse().join(""):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}\nconst set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}\nfunction split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||"Function"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}\nfunction take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():"string"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}\nfunction splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property \'slice\' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&"string"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,\nb)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error("First argument to splitEvery must be a positive integer");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}\nfunction splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property \'length\' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}\nfunction startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}\nfunction subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}\nfunction symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}\nfunction T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}\nfunction takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return"string"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}\nfunction takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join("")}\nfunction takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join("")}\nfunction tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof a)throw new TypeError(`\\u2018test\\u2019 requires a value of type RegExp as its first argument; received "${a}"`);return-1!==b.search(a)}\nfunction times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError("n must be an integer");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}\nfunction toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}\nfunction trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>["Promise","Function"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));\nfunction tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn \'${a}\'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}\nfunction union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}\nfunction uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}\nfunction uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}\nfunction unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}\nfunction values$$module$node_modules$rambda$dist$rambda_mjs(a){return"Object"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}\nfunction whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}\nfunction whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}\nfunction whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}\nfunction without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}\nfunction zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}\nfunction zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;const csoundSetMidiCallbacks$$module$src$modules$rtmidi=a=>b=>{a.exports.csoundSetMidiCallbacks(b)},csoundGetMIDIDevList$$module$src$modules$rtmidi=a=>(b,c)=>{const {buffer:d}=a.wasi.memory,e=a.exports.csoundGetMIDIDevList(b,void 0,c?1:0);if(0===e)return[];const f=sizeofStruct$$module$src$utils$native_sizes(CS_MIDIDEVICE$$module$src$structures),g=a.exports.allocCsMidiDeviceStruct(e);a.exports.csoundGetMIDIDevList(b,g,c?1:0);const h=new Uint8Array(d,g,f*e);b=range$$module$node_modules$rambda$dist$rambda_mjs(0,\ne).map(k=>structBufferToObject$$module$src$utils$structure_buffer_to_object(CS_MIDIDEVICE$$module$src$structures,h.subarray(k*f,f)));a.exports.freeCsMidiDeviceStruct(g);return b};csoundGetMIDIDevList$$module$src$modules$rtmidi.toString=()=>"getMIDIDevList = async (isOutput) => Object;";\nconst csoundGetRtMidiName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getRtMidiName(b);c=new Uint8Array(c,b,128);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetRtMidiName$$module$src$modules$rtmidi.toString=()=>"getRtMidiName = async () => String;";\nconst csoundGetMidiOutFileName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getMidiOutFileName(b);c=new Uint8Array(c,b,128);b&&0<b.length&&freeStringPtr$$module$src$utils$string_pointers(a,b);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""},_isRequestingRtMidiInput$$module$src$modules$rtmidi=a=>b=>a.exports.isRequestingRtMidiInput(b),csoundPushMidiMessage$$module$src$modules$rtmidi=a=>(b,c,d,e)=>{a.exports.pushMidiMessage(b,\nc,d,e)};csoundPushMidiMessage$$module$src$modules$rtmidi.toString=()=>"midiMessage = async (status, data1, data2) => undefined;";var module$src$modules$rtmidi={};module$src$modules$rtmidi._isRequestingRtMidiInput=_isRequestingRtMidiInput$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMIDIDevList=csoundGetMIDIDevList$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMidiOutFileName=csoundGetMidiOutFileName$$module$src$modules$rtmidi;\nmodule$src$modules$rtmidi.csoundGetRtMidiName=csoundGetRtMidiName$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundPushMidiMessage=csoundPushMidiMessage$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundSetMidiCallbacks=csoundSetMidiCallbacks$$module$src$modules$rtmidi;const csoundInputMessage$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessage(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessage$$module$src$modules$control_events.toString=()=>"inputMessage = async (scoreEvent) => Number;";\nconst csoundInputMessageAsync$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessageAsync(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessageAsync$$module$src$modules$control_events.toString=()=>"inputMessageAsync = async (scoreEvent) => Number;";\nconst csoundGetControlChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetControlChannelWasi(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundGetControlChannel$$module$src$modules$control_events.toString=()=>"getControlChannel = async (channelName) => Number;";\nconst csoundSetControlChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);a.exports.csoundSetControlChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c)};csoundSetControlChannel$$module$src$modules$control_events.toString=()=>"setControlChannel = async (channelName, value) => void;";\nconst csoundGetStringChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetStringChannelWasi(b,c);const d=ptr2string$$module$src$utils$string_pointers(a,b);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,b);return d};csoundGetStringChannel$$module$src$modules$control_events.toString=()=>"getStringChannel = async (channelName) => String;";\nconst csoundSetStringChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);a.exports.csoundSetStringChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d)};csoundSetStringChannel$$module$src$modules$control_events.toString=()=>"setStringChannel = async (channelName, value) => void;";var module$src$modules$control_events={};\nmodule$src$modules$control_events.csoundGetControlChannel=csoundGetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundGetStringChannel=csoundGetStringChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessage=csoundInputMessage$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessageAsync=csoundInputMessageAsync$$module$src$modules$control_events;\nmodule$src$modules$control_events.csoundSetControlChannel=csoundSetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundSetStringChannel=csoundSetStringChannel$$module$src$modules$control_events;const csoundGetOutputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetOutputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetOutputName$$module$src$modules$general_io.toString=()=>"getOutputName = async () => String;";\nconst csoundGetInputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetInputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetInputName$$module$src$modules$general_io.toString=()=>"getInputName = async (csound) => String;";var module$src$modules$general_io={};module$src$modules$general_io.csoundGetInputName=csoundGetInputName$$module$src$modules$general_io;\nmodule$src$modules$general_io.csoundGetOutputName=csoundGetOutputName$$module$src$modules$general_io;const csoundAppendEnv$$module$src$modules$extra=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);b=a.exports.csoundAppendEnv(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d);return b};csoundAppendEnv$$module$src$modules$extra.toString=()=>"appendEnv = async (csound, variable, value) => Number;";const csoundShouldDaemonize$$module$src$modules$extra=a=>b=>a.exports.csoundShouldDaemonize(b);\nvar module$src$modules$extra={};module$src$modules$extra.csoundAppendEnv=csoundAppendEnv$$module$src$modules$extra;module$src$modules$extra.csoundShouldDaemonize=csoundShouldDaemonize$$module$src$modules$extra;const csoundIsScorePending$$module$src$modules$score_handling=a=>b=>a.exports.csoundIsScorePending(b);csoundIsScorePending$$module$src$modules$score_handling.toString=()=>"isScorePending = async () => Number;";const csoundSetScorePending$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScorePending(b,c);csoundSetScorePending$$module$src$modules$score_handling.toString=()=>"setScorePending = async (pending) => Number;";\nconst csoundReadScore$$module$src$modules$score_handling=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundReadScore(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundReadScore$$module$src$modules$score_handling.toString=()=>"readScore = async (score) => Number;";const csoundGetScoreTime$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreTime(b);csoundGetScoreTime$$module$src$modules$score_handling.toString=()=>"getScoreTime = async () => Number;";\nconst csoundGetScoreOffsetSeconds$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreOffsetSeconds(b);csoundGetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"getScoreOffsetSeconds = async () => Number;";const csoundSetScoreOffsetSeconds$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScoreOffsetSeconds(b,c);csoundSetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"setScoreOffsetSeconds = async () => Number;";\nconst csoundRewindScore$$module$src$modules$score_handling=a=>b=>a.exports.csoundRewindScore(b);csoundRewindScore$$module$src$modules$score_handling.toString=()=>"rewindScore = async () => undefined;";var module$src$modules$score_handling={};module$src$modules$score_handling.csoundGetScoreOffsetSeconds=csoundGetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundGetScoreTime=csoundGetScoreTime$$module$src$modules$score_handling;\nmodule$src$modules$score_handling.csoundIsScorePending=csoundIsScorePending$$module$src$modules$score_handling;module$src$modules$score_handling.csoundReadScore=csoundReadScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundRewindScore=csoundRewindScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScoreOffsetSeconds=csoundSetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScorePending=csoundSetScorePending$$module$src$modules$score_handling;const csoundTableLength$$module$src$modules$table=a=>(b,c)=>a.exports.csoundTableLength(b,c);csoundTableLength$$module$src$modules$table.toString=()=>"tableLength = async (tableNum) => Number;";const csoundTableGet$$module$src$modules$table=a=>(b,c,d)=>a.exports.csoundTableGet(b,c,d);csoundTableGet$$module$src$modules$table.toString=()=>"tableGet = async (tableNum, tableIndex) => Number;";const csoundTableSet$$module$src$modules$table=a=>(b,c,d,e)=>a.exports.csoundTableSet(b,c,d,e);\ncsoundTableSet$$module$src$modules$table.toString=()=>"tableSet = async (tableNum, tableIndex, value) => undefined;";const csoundTableCopyIn$$module$src$modules$table=a=>(b,c,d)=>{const e=a.exports.allocFloatArray(d.length);(new Float64Array(a.wasi.memory.buffer,e,d.length)).set(d);a.exports.csoundTableCopyIn(b,c,e);a.exports.freeFloatArrayMem(e)};csoundTableCopyIn$$module$src$modules$table.toString=()=>"tableCopyIn = async (tableNum, float64Array) => undefined;";\nconst csoundTableCopyOut$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundTableLength(b,c);if(0<d){const e=a.exports.allocFloatArray(d);a.exports.csoundTableCopyOut(b,c,e);({buffer:b}=a.wasi.memory);d=new Float64Array(b,e,d);a.exports.freeFloatArrayMem(e);return Float64Array.from(d)}};csoundTableCopyOut$$module$src$modules$table.toString=()=>"tableCopyOut = async (tableNum) => ?Float64Array;";const csoundGetTable$$module$src$modules$table=csoundTableCopyOut$$module$src$modules$table;\ncsoundTableCopyOut$$module$src$modules$table.toString=csoundTableCopyOut$$module$src$modules$table.toString;const csoundGetTableArgs$$module$src$modules$table=a=>(b,c)=>{const d=a.exports.allocFloatArray(1024);a.exports.csoundGetTableArgs(b,d,c);({buffer:b}=a.wasi.memory);b=new Float64Array(b,d,1024);a.exports.freeFloatArrayMem(d);return b};csoundGetTableArgs$$module$src$modules$table.toString=()=>"getTableArgs = async (tableNum) => ?Float64Array;";\nconst csoundIsNamedGEN$$module$src$modules$table=a=>(b,c)=>a.exports.csoundIsNamedGEN(b,c);csoundIsNamedGEN$$module$src$modules$table.toString=()=>"isNamedGEN = async (tableNum) => number;";const csoundGetNamedGEN$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundIsNamedGEN(b,c);if(0<d){const e=a.exports.allocStringMem(d);a.exports.csoundGetNamedGEN(b,e,c,d);({buffer:b}=a.wasi.memory);d=new Uint8Array(b,e,d);return uint2String$$module$src$utils$text_encoders(d)}};\ncsoundGetNamedGEN$$module$src$modules$table.toString=()=>"getNamedGEN = async (tableNum) => ?string;";var module$src$modules$table={};module$src$modules$table.csoundGetNamedGEN=csoundGetNamedGEN$$module$src$modules$table;module$src$modules$table.csoundGetTable=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundGetTableArgs=csoundGetTableArgs$$module$src$modules$table;module$src$modules$table.csoundIsNamedGEN=csoundIsNamedGEN$$module$src$modules$table;\nmodule$src$modules$table.csoundTableCopyIn=csoundTableCopyIn$$module$src$modules$table;module$src$modules$table.csoundTableCopyOut=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundTableGet=csoundTableGet$$module$src$modules$table;module$src$modules$table.csoundTableLength=csoundTableLength$$module$src$modules$table;module$src$modules$table.csoundTableSet=csoundTableSet$$module$src$modules$table;function writeFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.writeFile(c,b)}}writeFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";function appendFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.appendFile(c,b)}}appendFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";\nfunction readFile$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readFile(c)}readFile$$module$src$filesystem$worker_fs.toString=()=>"async (path) => ?Uint8Array";function unlink$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.unlink(c)}unlink$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";function readdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readdir(c)}readdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => string[]";\nfunction mkdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.mkdir(c)}mkdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";var module$src$filesystem$worker_fs={};module$src$filesystem$worker_fs.appendFile=appendFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.mkdir=mkdir$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readFile=readFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readdir=readdir$$module$src$filesystem$worker_fs;\nmodule$src$filesystem$worker_fs.unlink=unlink$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.writeFile=writeFile$$module$src$filesystem$worker_fs;const api$$module$src$libcsound={csoundCreate:csoundCreate$$module$src$modules$instantiation,csoundDestroy:csoundDestroy$$module$src$modules$instantiation,csoundGetAPIVersion:csoundGetAPIVersion$$module$src$modules$instantiation,csoundGetVersion:csoundGetVersion$$module$src$modules$instantiation,csoundInitialize:csoundInitialize$$module$src$modules$instantiation,csoundParseOrc:csoundParseOrc$$module$src$modules$performance,csoundCompileTree:csoundCompileTree$$module$src$modules$performance,csoundCompileOrc:csoundCompileOrc$$module$src$modules$performance,\ncsoundEvalCode:csoundEvalCode$$module$src$modules$performance,csoundStart:csoundStart$$module$src$modules$performance,csoundCompileCsd:csoundCompileCsd$$module$src$modules$performance,csoundCompileCsdText:csoundCompileCsdText$$module$src$modules$performance,csoundPerform:csoundPerform$$module$src$modules$performance,csoundPerformKsmps:csoundPerformKsmps$$module$src$modules$performance,csoundPerformBuffer:csoundPerformBuffer$$module$src$modules$performance,csoundStop:csoundStop$$module$src$modules$performance,\ncsoundCleanup:csoundCleanup$$module$src$modules$performance,csoundReset:csoundReset$$module$src$modules$performance,csoundGetSr:csoundGetSr$$module$src$modules$attributes,csoundGetKr:csoundGetKr$$module$src$modules$attributes,csoundGetKsmps:csoundGetKsmps$$module$src$modules$attributes,csoundGetNchnls:csoundGetNchnls$$module$src$modules$attributes,csoundGetNchnlsInput:csoundGetNchnlsInput$$module$src$modules$attributes,csoundGet0dBFS:csoundGet0dBFS$$module$src$modules$attributes,csoundGetA4:csoundGetA4$$module$src$modules$attributes,\ncsoundGetCurrentTimeSamples:csoundGetCurrentTimeSamples$$module$src$modules$attributes,csoundGetSizeOfMYFLT:csoundGetSizeOfMYFLT$$module$src$modules$attributes,csoundSetOption:csoundSetOption$$module$src$modules$attributes,csoundSetParams:csoundSetParams$$module$src$modules$attributes,csoundGetParams:csoundGetParams$$module$src$modules$attributes,csoundGetDebug:csoundGetDebug$$module$src$modules$attributes,csoundSetDebug:csoundSetDebug$$module$src$modules$attributes,csoundGetInputBufferSize:csoundGetInputBufferSize$$module$src$modules$rtaudio,\ncsoundGetOutputBufferSize:csoundGetOutputBufferSize$$module$src$modules$rtaudio,csoundGetInputBuffer:csoundGetInputBuffer$$module$src$modules$rtaudio,csoundGetOutputBuffer:csoundGetOutputBuffer$$module$src$modules$rtaudio,csoundGetSpin:csoundGetSpin$$module$src$modules$rtaudio,csoundGetSpout:csoundGetSpout$$module$src$modules$rtaudio,csoundGetMIDIDevList:csoundGetMIDIDevList$$module$src$modules$rtmidi,csoundSetMidiCallbacks:csoundSetMidiCallbacks$$module$src$modules$rtmidi,csoundGetRtMidiName:csoundGetRtMidiName$$module$src$modules$rtmidi,\ncsoundGetMidiOutFileName:csoundGetMidiOutFileName$$module$src$modules$rtmidi,csoundPushMidiMessage:csoundPushMidiMessage$$module$src$modules$rtmidi,_isRequestingRtMidiInput:_isRequestingRtMidiInput$$module$src$modules$rtmidi,csoundInputMessage:csoundInputMessage$$module$src$modules$control_events,csoundInputMessageAsync:csoundInputMessageAsync$$module$src$modules$control_events,csoundGetControlChannel:csoundGetControlChannel$$module$src$modules$control_events,csoundSetControlChannel:csoundSetControlChannel$$module$src$modules$control_events,\ncsoundGetStringChannel:csoundGetStringChannel$$module$src$modules$control_events,csoundSetStringChannel:csoundSetStringChannel$$module$src$modules$control_events,csoundGetInputName:csoundGetInputName$$module$src$modules$general_io,csoundGetOutputName:csoundGetOutputName$$module$src$modules$general_io,csoundAppendEnv:csoundAppendEnv$$module$src$modules$extra,csoundShouldDaemonize:csoundShouldDaemonize$$module$src$modules$extra,csoundIsScorePending:csoundIsScorePending$$module$src$modules$score_handling,\ncsoundSetScorePending:csoundSetScorePending$$module$src$modules$score_handling,csoundReadScore:csoundReadScore$$module$src$modules$score_handling,csoundGetScoreTime:csoundGetScoreTime$$module$src$modules$score_handling,csoundGetScoreOffsetSeconds:csoundGetScoreOffsetSeconds$$module$src$modules$score_handling,csoundSetScoreOffsetSeconds:csoundSetScoreOffsetSeconds$$module$src$modules$score_handling,csoundRewindScore:csoundRewindScore$$module$src$modules$score_handling,csoundTableLength:csoundTableLength$$module$src$modules$table,\ncsoundTableGet:csoundTableGet$$module$src$modules$table,csoundTableSet:csoundTableSet$$module$src$modules$table,csoundTableCopyIn:csoundTableCopyIn$$module$src$modules$table,csoundTableCopyOut:csoundTableCopyOut$$module$src$modules$table,csoundGetTable:csoundTableCopyOut$$module$src$modules$table,csoundGetTableArgs:csoundGetTableArgs$$module$src$modules$table,csoundIsNamedGEN:csoundIsNamedGEN$$module$src$modules$table,csoundGetNamedGEN:csoundGetNamedGEN$$module$src$modules$table,fs:module$src$filesystem$worker_fs};\nvar $jscompDefaultExport$$module$src$libcsound=function(a){return mergeAll$$module$node_modules$rambda$dist$rambda_mjs([reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,api$$module$src$libcsound[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(dissoc$$module$node_modules$rambda$dist$rambda_mjs("fs")(api$$module$src$libcsound))),reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,\napi$$module$src$libcsound.fs[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(module$src$filesystem$worker_fs))])},module$src$libcsound={};module$src$libcsound.api=api$$module$src$libcsound;module$src$libcsound.default=$jscompDefaultExport$$module$src$libcsound;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=new WebAssembly.Global({value:"i32",mutable:!0},0);const h=new WebAssembly.Global({value:"i32",mutable:!0},0);let k=c.length;"function"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);"function"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k,\nb.exports.csoundModuleInit),k+=1);"function"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);"function"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=c.length,\n"function"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),"function"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error("Plugin doesn\'t export nececcary functions to quality as csound plugin.")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt);\nconst WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants=\n10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants=\n20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants=\n31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41,\nWASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants=\n52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants=\n62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants=\n73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants=\n7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants=\n18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants=\n3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants=\n16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants=\ngoog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants=\ngoog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants=\ngoog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants=\ngoog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|\nWASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|\nWASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants=\nWASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\nWASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,\nRIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants=\n1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants=\n0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name="CustomError";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name="AssertionError";\ngoog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split("%s");let c="";const d=a.length-1;for(let e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:"%s");return c+a[d]}\nfunction module$contents$goog$asserts_doAssertFailure(a,b,c,d){let e="Assertion failed",f;c?(e+=": "+c,f=d):a&&(e+=": "+a,f=b);a=new module$contents$goog$asserts_AssertionError(""+e,f||[]);module$contents$goog$asserts_errorHandler_(a)}goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(module$contents$goog$asserts_errorHandler_=a)};\ngoog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&module$contents$goog$asserts_doAssertFailure("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&module$contents$goog$asserts_doAssertFailure("Expected to exist: %s.",[a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&module$contents$goog$asserts_errorHandler_(new module$contents$goog$asserts_AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"number"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"string"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"function"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&module$contents$goog$asserts_doAssertFailure("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!Array.isArray(a)&&module$contents$goog$asserts_doAssertFailure("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"boolean"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||module$contents$goog$asserts_doAssertFailure("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||module$contents$goog$asserts_doAssertFailure("Expected instanceof %s but got %s.",[module$contents$goog$asserts_getType(b),module$contents$goog$asserts_getType(a)],c,Array.prototype.slice.call(arguments,3));return a};\ngoog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||"number"==typeof a&&isFinite(a)||module$contents$goog$asserts_doAssertFailure("Expected %s to be a finite number but it is not.",[a],b,Array.prototype.slice.call(arguments,2));return a};\nfunction module$contents$goog$asserts_getType(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;const module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.ASSUME_NATIVE_FUNCTIONS=module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS;function module$contents$goog$array_peek(a){return a[a.length-1]}goog.array.peek=module$contents$goog$array_peek;goog.array.last=module$contents$goog$array_peek;\nconst module$contents$goog$array_indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};goog.array.indexOf=module$contents$goog$array_indexOf;\nconst module$contents$goog$array_lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEach=module$contents$goog$array_forEach;\nfunction module$contents$goog$array_forEachRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)}goog.array.forEachRight=module$contents$goog$array_forEachRight;\nconst module$contents$goog$array_filter=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){const d=a.length,e=[];let f=0;const g="string"===typeof a?a.split(""):a;for(let h=0;h<d;h++)if(h in g){const k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};goog.array.filter=module$contents$goog$array_filter;\nconst module$contents$goog$array_map=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){const d=a.length,e=Array(d),f="string"===typeof a?a.split(""):a;for(let g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};goog.array.map=module$contents$goog$array_map;\nconst module$contents$goog$array_reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEach(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduce=module$contents$goog$array_reduce;\nconst module$contents$goog$array_reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEachRight(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduceRight=module$contents$goog$array_reduceRight;\nconst module$contents$goog$array_some=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};goog.array.some=module$contents$goog$array_some;\nconst module$contents$goog$array_every=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.every=module$contents$goog$array_every;\nfunction module$contents$goog$array_count(a,b,c){let d=0;module$contents$goog$array_forEach(a,function(e,f,g){b.call(c,e,f,g)&&++d},c);return d}goog.array.count=module$contents$goog$array_count;function module$contents$goog$array_find(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find;\nfunction module$contents$goog$array_findIndex(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1}goog.array.findIndex=module$contents$goog$array_findIndex;function module$contents$goog$array_findRight(a,b,c){b=module$contents$goog$array_findIndexRight(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight;\nfunction module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty;\nfunction module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt;\nfunction module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore;\nfunction module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast;\nfunction module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf;\nfunction module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)}\ngoog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0<b){const c=Array(b);for(let d=0;d<b;d++)c[d]=a[d];return c}return[]}const module$contents$goog$array_clone=goog.array.toArray=module$contents$goog$array_toArray;goog.array.clone=module$contents$goog$array_toArray;\nfunction module$contents$goog$array_extend(a,b){for(let c=1;c<arguments.length;c++){const d=arguments[c];if(goog.isArrayLike(d)){const e=a.length||0,f=d.length||0;a.length=e+f;for(let g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}}goog.array.extend=module$contents$goog$array_extend;function module$contents$goog$array_splice(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,module$contents$goog$array_slice(arguments,1))}goog.array.splice=module$contents$goog$array_splice;\nfunction module$contents$goog$array_slice(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice;\nfunction module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e<a.length;){const g=a[e++],h=c(g);Object.prototype.hasOwnProperty.call(f,h)||(f[h]=!0,b[d++]=g)}b.length=d}goog.array.removeDuplicates=module$contents$goog$array_removeDuplicates;\nfunction module$contents$goog$array_binarySearch(a,b,c){return module$contents$goog$array_binarySearch_(a,c||module$contents$goog$array_defaultCompare,!1,b)}goog.array.binarySearch=module$contents$goog$array_binarySearch;function module$contents$goog$array_binarySelect(a,b,c){return module$contents$goog$array_binarySearch_(a,b,!0,void 0,c)}goog.array.binarySelect=module$contents$goog$array_binarySelect;\nfunction module$contents$goog$array_binarySearch_(a,b,c,d,e){let f=0,g=a.length,h;for(;f<g;){const k=f+(g-f>>>1);let l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:-f-1}function module$contents$goog$array_sort(a,b){a.sort(b||module$contents$goog$array_defaultCompare)}goog.array.sort=module$contents$goog$array_sort;\nfunction module$contents$goog$array_stableSort(a,b){const c=Array(a.length);for(let e=0;e<a.length;e++)c[e]={index:e,value:a[e]};const d=b||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(c,function(e,f){return d(e.value,f.value)||e.index-f.index});for(b=0;b<a.length;b++)a[b]=c[b].value}goog.array.stableSort=module$contents$goog$array_stableSort;\nfunction module$contents$goog$array_sortByKey(a,b,c){const d=c||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(a,function(e,f){return d(b(e),b(f))})}goog.array.sortByKey=module$contents$goog$array_sortByKey;function module$contents$goog$array_sortObjectsByKey(a,b,c){module$contents$goog$array_sortByKey(a,function(d){return d[b]},c)}goog.array.sortObjectsByKey=module$contents$goog$array_sortObjectsByKey;\nfunction module$contents$goog$array_isSorted(a,b,c){b=b||module$contents$goog$array_defaultCompare;for(let d=1;d<a.length;d++){const e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0}goog.array.isSorted=module$contents$goog$array_isSorted;function module$contents$goog$array_equals(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;const d=a.length;c=c||module$contents$goog$array_defaultCompareEquality;for(let e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0}\ngoog.array.equals=module$contents$goog$array_equals;function module$contents$goog$array_compare3(a,b,c){c=c||module$contents$goog$array_defaultCompare;const d=Math.min(a.length,b.length);for(let e=0;e<d;e++){const f=c(a[e],b[e]);if(0!=f)return f}return module$contents$goog$array_defaultCompare(a.length,b.length)}goog.array.compare3=module$contents$goog$array_compare3;function module$contents$goog$array_defaultCompare(a,b){return a>b?1:a<b?-1:0}goog.array.defaultCompare=module$contents$goog$array_defaultCompare;\nfunction module$contents$goog$array_inverseDefaultCompare(a,b){return-module$contents$goog$array_defaultCompare(a,b)}goog.array.inverseDefaultCompare=module$contents$goog$array_inverseDefaultCompare;function module$contents$goog$array_defaultCompareEquality(a,b){return a===b}goog.array.defaultCompareEquality=module$contents$goog$array_defaultCompareEquality;\nfunction module$contents$goog$array_binaryInsert(a,b,c){c=module$contents$goog$array_binarySearch(a,b,c);return 0>c?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove;\nfunction module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;e<a.length;e++){const f=a[e],g=b.call(c,f,e,a);void 0!==g&&(d[g]||(d[g]=[])).push(f)}return d}goog.array.bucket=module$contents$goog$array_bucket;function module$contents$goog$array_bucketToMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d],f=b(e,d,a);if(void 0!==f){let g=c.get(f);g||(g=[],c.set(f,g));g.push(e)}}return c}goog.array.bucketToMap=module$contents$goog$array_bucketToMap;\nfunction module$contents$goog$array_toObject(a,b,c){const d={};module$contents$goog$array_forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d}goog.array.toObject=module$contents$goog$array_toObject;function module$contents$goog$array_toMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d];c.set(b(e,d,a),e)}return c}goog.array.toMap=module$contents$goog$array_toMap;\nfunction module$contents$goog$array_range(a,b,c){const d=[];let e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;d<b;d++)c[d]=a;return c}goog.array.repeat=module$contents$goog$array_repeat;\nfunction module$contents$goog$array_flatten(a){const b=[];for(let d=0;d<arguments.length;d++){const e=arguments[d];if(Array.isArray(e))for(let f=0;f<e.length;f+=8192){var c=module$contents$goog$array_slice(e,f,f+8192);c=module$contents$goog$array_flatten.apply(null,c);for(let g=0;g<c.length;g++)b.push(c[g])}else b.push(e)}return b}goog.array.flatten=module$contents$goog$array_flatten;\nfunction module$contents$goog$array_rotate(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])}goog.array.moveItem=module$contents$goog$array_moveItem;\nfunction module$contents$goog$array_zip(a){if(!arguments.length)return[];const b=[];let c=arguments[0].length;for(var d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){const e=[];for(let f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b}goog.array.zip=module$contents$goog$array_zip;function module$contents$goog$array_shuffle(a,b){b=b||Math.random;for(let c=a.length-1;0<c;c--){const d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}}\ngoog.array.shuffle=module$contents$goog$array_shuffle;function module$contents$goog$array_copyByIndex(a,b){const c=[];module$contents$goog$array_forEach(b,function(d){c.push(a[d])});return c}goog.array.copyByIndex=module$contents$goog$array_copyByIndex;function module$contents$goog$array_concatMap(a,b,c){return module$contents$goog$array_concat.apply([],module$contents$goog$array_map(a,b,c))}goog.array.concatMap=module$contents$goog$array_concatMap;goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s",goog.dom.asserts.debugStringForType_(a))}return a};\ngoog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&"undefined"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAnchorElement")};\ngoog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLButtonElement")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLLinkElement")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLImageElement")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAudioElement")};\ngoog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLVideoElement")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLInputElement")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLTextAreaElement")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLCanvasElement")};\ngoog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLEmbedElement")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFormElement")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFrameElement")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLIFrameElement")};\ngoog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLObjectElement")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLScriptElement")};\ngoog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return"<object could not be stringified>"}else return void 0===a?"undefined":null===a?"null":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};\ngoog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}};\ngoog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}};\ngoog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e<c;e++)d=b[e].apply(this,arguments);return d}};goog.functions.and=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(!b[d].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(b[d].apply(this,arguments))return!0;return!1}};\ngoog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){let b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){let b=a;return function(){if(b){const c=b;b=null;c()}}};\ngoog.functions.debounce=function(a,b,c){let d=0;return function(e){goog.global.clearTimeout(d);const f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){let d=0,e=!1,f=[];const g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);let k=f;f=[];a.apply(c,k)};return function(k){f=arguments;d?e=!0:h()}};\ngoog.functions.rateLimit=function(a,b,c){let d=0;const e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.functions.isFunction=a=>"function"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||"";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};\ngoog.DEBUG&&(goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got \'"+a+"\'");return"type_error:Const"};\ngoog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+"#html":"";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof\nmodule$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeScript, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeScript"}static stringify_(a){return JSON.stringify(a).replace(/</g,"\\\\x3c")}static createSafeScriptSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScript(a):\na;return new module$contents$goog$html$SafeScript_SafeScript(a,module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE)}}module$contents$goog$html$SafeScript_SafeScript.EMPTY=function(){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("")}();goog.html.SafeScript=module$contents$goog$html$SafeScript_SafeScript;goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.UrlObject_=function(){};goog.fs.url.UrlObject_.prototype.createObjectURL=function(a){};goog.fs.url.UrlObject_.prototype.revokeObjectURL=function(a){};\ngoog.fs.url.getUrlObject_=function(){const a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error("This browser doesn\'t seem to support blob URLs");};goog.fs.url.findUrlObject_=function(){return void 0!==goog.global.URL&&void 0!==goog.global.URL.createObjectURL?goog.global.URL:void 0!==goog.global.createObjectURL?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.fs.blob={};goog.fs.blob.getBlob=function(a){var b=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==b){b=new b;for(let c=0;c<arguments.length;c++)b.append(arguments[c]);return b.getBlob()}return goog.fs.blob.getBlobWithProperties(Array.prototype.slice.call(arguments))};\ngoog.fs.blob.getBlobWithProperties=function(a,b,c){var d=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==d){d=new d;for(let e=0;e<a.length;e++)d.append(a[e],c);return d.getBlob(b)}if(void 0!==goog.global.Blob)return d={},b&&(d.type=b),c&&(d.endings=c),new Blob(a,d);throw Error("This browser doesn\'t seem to support creating Blobs");};goog.html.TrustedResourceUrl=class{constructor(a,b){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=b===goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+""}};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};\ngoog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",c[2]||"",a)+goog.html.TrustedResourceUrl.stringifyParams_("#",d,b))};goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};\ngoog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail("expected object of type TrustedResourceUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:TrustedResourceUrl"};\ngoog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error("Invalid TrustedResourceUrl format: "+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(d,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error(\'Found marker, "\'+e+\'", in format string, "\'+c+\'", but no valid label mapping found in args: \'+JSON.stringify(b));d=b[e];return d instanceof goog.string.Const?goog.string.Const.unwrap(d):\nencodeURIComponent(String(d))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=RegExp("^((https:)?//[0-9a-z.:[\\\\]-]+/|/[^/\\\\\\\\]|[^:/\\\\\\\\%]+/|[^:/\\\\\\\\%]*[?#]|about:blank#)","i");goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/;\ngoog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b="",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.TrustedResourceUrl.fromSafeScript=function(a){a=goog.fs.blob.getBlobWithProperties([module$contents$goog$html$SafeScript_SafeScript.unwrap(a)],"text/javascript");a=goog.fs.url.createObjectUrl(a);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};\ngoog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScriptURL(a):a;return new goog.html.TrustedResourceUrl(a,goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};\ngoog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if("string"===typeof c)return c?a+encodeURIComponent(c):"";for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var e=c[d];e=Array.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?"&":"")+encodeURIComponent(d)+"="+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))};\ngoog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\\s\\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};\ngoog.string.internal.newLineToBr=function(a,b){return a.replace(/(\\r\\n|\\r|\\n)/g,b?"<br />":"<br>")};\ngoog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,"&amp;").replace(goog.string.internal.LT_RE_,"&lt;").replace(goog.string.internal.GT_RE_,"&gt;").replace(goog.string.internal.QUOT_RE_,"&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.internal.NULL_RE_,"&#0;");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.internal.AMP_RE_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.internal.LT_RE_,\n"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.internal.GT_RE_,"&gt;"));-1!=a.indexOf(\'"\')&&(a=a.replace(goog.string.internal.QUOT_RE_,"&quot;"));-1!=a.indexOf("\'")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;"));-1!=a.indexOf("\\x00")&&(a=a.replace(goog.string.internal.NULL_RE_,"&#0;"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/"/g;goog.string.internal.SINGLE_QUOTE_RE_=/\'/g;\ngoog.string.internal.NULL_RE_=/\\x00/g;goog.string.internal.ALL_RE_=/[\\x00&<>"\']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g," &#160;"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};\ngoog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(".");b=goog.string.internal.trim(String(b)).split(".");const d=Math.max(a.length,b.length);for(let g=0;0==c&&g<d;g++){var e=a[g]||"",f=b[g]||"";do{e=/(\\d*)(\\D*)(.*)/.exec(e)||["","","",""];f=/(\\d*)(\\D*)(.*)/.exec(f)||["","","",""];if(0==e[0].length&&0==f[0].length)break;c=0==e[1].length?0:parseInt(e[1],10);const h=0==f[1].length?0:parseInt(f[1],10);c=goog.string.internal.compareElements_(c,h)||\ngoog.string.internal.compareElements_(0==e[2].length,0==f[2].length)||goog.string.internal.compareElements_(e[2],f[2]);e=e[3];f=f[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};\ngoog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};\ngoog.html.SAFE_MIME_TYPE_PATTERN_=RegExp(\'^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\\\w+=(?:\\\\w+|"[\\\\w;,= ]+"))*$\',"i");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};\ngoog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)};\ngoog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert("MediaSource"in goog.global,"No support for MediaSource");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\\/]+=*$/i;\ngoog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,"");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SIP_URL_PATTERN_=RegExp("^sip[s]?:[+a-z0-9_.!$%&\'*\\\\/=^`{|}~-]+@([a-z0-9-]+\\\\.)+[a-z0-9]{2,63}$","i");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"fb-messenger://share")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"whatsapp://send")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf("#");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"ssh://")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\/\\/([^\\/]+)\\//,a,b)};\ngoog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(d){return goog.string.Const.unwrap(d)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};\ngoog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.trySanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SAFE_URL_PATTERN_.test(a)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):goog.html.SafeUrl.tryFromDataUrl(a)};\ngoog.html.SafeUrl.sanitize=function(a){return goog.html.SafeUrl.trySanitize(a)||goog.html.SafeUrl.INNOCUOUS_URL};\ngoog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),"%s does not match the safe URL pattern",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){return new goog.html.SafeUrl(a,goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};goog.html.SafeUrl.INNOCUOUS_URL=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.SafeUrl.INNOCUOUS_STRING);goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");const module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeStyle_SafeStyle{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=b===module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;(0,goog.asserts.assert)((0,goog.string.internal.endsWith)(a,";"),`Last character of style string is not \';\': ${a}`);(0,goog.asserts.assert)((0,goog.string.internal.contains)(a,\n":"),"Style string must contain at least one \':\', to specify a \\"name: value\\" pair: "+a);return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_}toString(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString()}static unwrap(a){if(a instanceof module$contents$goog$html$SafeStyle_SafeStyle&&a.constructor===module$contents$goog$html$SafeStyle_SafeStyle)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;\n(0,goog.asserts.fail)(`expected object of type SafeStyle, got \'${a}`+"\' of type "+goog.typeOf(a));return"type_error:SafeStyle"}static createSafeStyleSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyle_SafeStyle(a,module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE)}static create(a){let b="";for(let c in a)if(Object.prototype.hasOwnProperty.call(a,c)){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(`Name allows only [-_a-zA-Z0-9], got: ${c}`);let d=a[c];null!=d&&\n(d=Array.isArray(d)?d.map(module$contents$goog$html$SafeStyle_sanitizePropertyValue).join(" "):module$contents$goog$html$SafeStyle_sanitizePropertyValue(d),b+=`${c}:${d};`)}return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c);\nreturn b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING="zClosurez";\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return\'url("\'+goog.html.SafeUrl.unwrap(a).replace(/</g,"%3c").replace(/[\\\\"]/g,"\\\\$&")+\'")\';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):module$contents$goog$html$SafeStyle_sanitizePropertyValueString(String(a));if(/[{;}]/.test(a))throw new module$contents$goog$asserts_AssertionError("Value does not allow [{;}], got: %s.",[a]);return a}\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValueString(a){const b=a.replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_URL_RE,"url");if(module$contents$goog$html$SafeStyle_VALUE_RE.test(b)){if(module$contents$goog$html$SafeStyle_COMMENT_RE.test(a))return(0,goog.asserts.fail)(`String value disallows comments, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;\nif(!module$contents$goog$html$SafeStyle_hasBalancedQuotes(a))return(0,goog.asserts.fail)(`String value requires balanced quotes, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;if(!module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a))return(0,goog.asserts.fail)("String value requires balanced square brackets and one identifier per pair of brackets, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING}else return(0,goog.asserts.fail)(`String value allows only ${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}`+\n" and simple functions, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;return module$contents$goog$html$SafeStyle_sanitizeUrl(a)}function module$contents$goog$html$SafeStyle_hasBalancedQuotes(a){let b=!0,c=!0;for(let d=0;d<a.length;d++){const e=a.charAt(d);"\'"==e&&c?b=!b:\'"\'==e&&b&&(c=!c)}return b&&c}\nfunction module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a){let b=!0;const c=/^[-_a-zA-Z0-9]$/;for(let d=0;d<a.length;d++){const e=a.charAt(d);if("]"==e){if(b)return!1;b=!0}else if("["==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b}\nconst module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS="[-,.\\"\'%_!#/ a-zA-Z0-9\\\\[\\\\]]",module$contents$goog$html$SafeStyle_VALUE_RE=new RegExp(`^${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}+\\$`),module$contents$goog$html$SafeStyle_URL_RE=RegExp("\\\\b(url\\\\([ \\t\\n]*)(\'[ -&(-\\\\[\\\\]-~]*\'|\\"[ !#-\\\\[\\\\]-~]*\\"|[!#-&*-\\\\[\\\\]-~]*)([ \\t\\n]*\\\\))","g"),module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS="calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax radial-gradient repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)? steps var".split(" "),\nmodule$contents$goog$html$SafeStyle_FUNCTIONS_RE=new RegExp("\\\\b("+module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS.join("|")+")\\\\([-+*/0-9a-zA-Z.%#\\\\[\\\\], ]+\\\\)","g"),module$contents$goog$html$SafeStyle_COMMENT_RE=/\\/\\*/;function module$contents$goog$html$SafeStyle_sanitizeUrl(a){return a.replace(module$contents$goog$html$SafeStyle_URL_RE,(b,c,d,e)=>{let f="";d=d.replace(/^([\'"])(.*)\\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})}\ngoog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1}\nfunction module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)}\nfunction module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a}function module$contents$goog$object_containsKey(a,b){return null!==a&&b in a}\nfunction module$contents$goog$object_containsValue(a,b){for(const c in a)if(a[c]==b)return!0;return!1}function module$contents$goog$object_findKey(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return d}function module$contents$goog$object_findValue(a,b,c){return(b=module$contents$goog$object_findKey(a,b,c))&&a[b]}function module$contents$goog$object_isEmpty(a){for(const b in a)return!1;return!0}function module$contents$goog$object_clear(a){for(const b in a)delete a[b]}\nfunction module$contents$goog$object_remove(a,b){let c;(c=b in a)&&delete a[b];return c}function module$contents$goog$object_add(a,b,c){if(null!==a&&b in a)throw Error(`The object already contains the key "${b}"`);module$contents$goog$object_set(a,b,c)}function module$contents$goog$object_get(a,b,c){return null!==a&&b in a?a[b]:c}function module$contents$goog$object_set(a,b,c){a[b]=c}function module$contents$goog$object_setIfUndefined(a,b,c){return b in a?a[b]:a[b]=c}\nfunction module$contents$goog$object_setWithReturnValueIfNotSet(a,b,c){if(b in a)return a[b];c=c();return a[b]=c}function module$contents$goog$object_equals(a,b){for(const c in a)if(!(c in b)||a[c]!==b[c])return!1;for(const c in b)if(!(c in a))return!1;return!0}function module$contents$goog$object_clone(a){const b={};for(const c in a)b[c]=a[c];return b}\nfunction module$contents$goog$object_unsafeClone(a){if(!a||"object"!==typeof a)return a;if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);if(a instanceof Date)return new Date(a.getTime());const b=Array.isArray(a)?[]:"function"!==typeof ArrayBuffer||"function"!==typeof ArrayBuffer.isView||!ArrayBuffer.isView(a)||a instanceof DataView?{}:new a.constructor(a.length);for(const c in a)b[c]=\nmodule$contents$goog$object_unsafeClone(a[c]);return b}function module$contents$goog$object_transpose(a){const b={};for(const c in a)b[a[c]]=c;return b}const module$contents$goog$object_PROTOTYPE_FIELDS="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\nfunction module$contents$goog$object_extend(a,b){let c,d;for(let e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(let f=0;f<module$contents$goog$object_PROTOTYPE_FIELDS.length;f++)c=module$contents$goog$object_PROTOTYPE_FIELDS[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}}\nfunction module$contents$goog$object_create(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");const c={};for(let d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c}\nfunction module$contents$goog$object_createSet(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_createSet.apply(null,arguments[0]);const c={};for(let d=0;d<b;d++)c[arguments[d]]=!0;return c}function module$contents$goog$object_createImmutableView(a){let b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b}function module$contents$goog$object_isImmutableView(a){return!!Object.isFrozen&&Object.isFrozen(a)}\nfunction module$contents$goog$object_getAllPropertyNames(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return module$contents$goog$object_getKeys(a);const d={};for(;a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){const e=Object.getOwnPropertyNames(a);for(let f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return module$contents$goog$object_getKeys(d)}\nfunction module$contents$goog$object_getSuperClass(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor}goog.object.add=module$contents$goog$object_add;goog.object.clear=module$contents$goog$object_clear;goog.object.clone=module$contents$goog$object_clone;goog.object.contains=module$contents$goog$object_contains;goog.object.containsKey=module$contents$goog$object_containsKey;goog.object.containsValue=module$contents$goog$object_containsValue;goog.object.create=module$contents$goog$object_create;\ngoog.object.createImmutableView=module$contents$goog$object_createImmutableView;goog.object.createSet=module$contents$goog$object_createSet;goog.object.equals=module$contents$goog$object_equals;goog.object.every=module$contents$goog$object_every;goog.object.extend=module$contents$goog$object_extend;goog.object.filter=module$contents$goog$object_filter;goog.object.findKey=module$contents$goog$object_findKey;goog.object.findValue=module$contents$goog$object_findValue;goog.object.forEach=module$contents$goog$object_forEach;\ngoog.object.get=module$contents$goog$object_get;goog.object.getAllPropertyNames=module$contents$goog$object_getAllPropertyNames;goog.object.getAnyKey=module$contents$goog$object_getAnyKey;goog.object.getAnyValue=module$contents$goog$object_getAnyValue;goog.object.getCount=module$contents$goog$object_getCount;goog.object.getKeys=module$contents$goog$object_getKeys;goog.object.getSuperClass=module$contents$goog$object_getSuperClass;goog.object.getValueByKeys=module$contents$goog$object_getValueByKeys;\ngoog.object.getValues=module$contents$goog$object_getValues;goog.object.isEmpty=module$contents$goog$object_isEmpty;goog.object.isImmutableView=module$contents$goog$object_isImmutableView;goog.object.map=module$contents$goog$object_map;goog.object.remove=module$contents$goog$object_remove;goog.object.set=module$contents$goog$object_set;goog.object.setIfUndefined=module$contents$goog$object_setIfUndefined;goog.object.setWithReturnValueIfNotSet=module$contents$goog$object_setWithReturnValueIfNotSet;\ngoog.object.some=module$contents$goog$object_some;goog.object.transpose=module$contents$goog$object_transpose;goog.object.unsafeClone=module$contents$goog$object_unsafeClone;const module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeStyleSheet_SafeStyleSheet{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=b===module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString()}static createRule(a,b){if((0,goog.string.internal.contains)(a,"<"))throw Error(`Selector does not allow \'<\', got: ${a}`);const c=a.replace(/(\'|")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g,\n"");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(c))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and strings, got: "+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error("() and [] in selector must be balanced, got: "+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/</g,"\\\\3C ")+"}";\nreturn module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}static hasBalancedBrackets_(a){const b={"(":")","[":"]"},c=[];for(let d=0;d<a.length;d++){const e=a[d];if(b[e])c.push(b[e]);else if(module$contents$goog$object_contains(b,e)&&c.pop()!=e)return!1}return 0==c.length}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments,\nc);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,"<"),`Forbidden \'<\' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeStyleSheet, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}}\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A="A";goog.dom.TagName.ABBR="ABBR";goog.dom.TagName.ACRONYM="ACRONYM";goog.dom.TagName.ADDRESS="ADDRESS";goog.dom.TagName.APPLET="APPLET";goog.dom.TagName.AREA="AREA";goog.dom.TagName.ARTICLE="ARTICLE";goog.dom.TagName.ASIDE="ASIDE";goog.dom.TagName.AUDIO="AUDIO";goog.dom.TagName.B="B";goog.dom.TagName.BASE="BASE";goog.dom.TagName.BASEFONT="BASEFONT";goog.dom.TagName.BDI="BDI";goog.dom.TagName.BDO="BDO";\ngoog.dom.TagName.BIG="BIG";goog.dom.TagName.BLOCKQUOTE="BLOCKQUOTE";goog.dom.TagName.BODY="BODY";goog.dom.TagName.BR="BR";goog.dom.TagName.BUTTON="BUTTON";goog.dom.TagName.CANVAS="CANVAS";goog.dom.TagName.CAPTION="CAPTION";goog.dom.TagName.CENTER="CENTER";goog.dom.TagName.CITE="CITE";goog.dom.TagName.CODE="CODE";goog.dom.TagName.COL="COL";goog.dom.TagName.COLGROUP="COLGROUP";goog.dom.TagName.COMMAND="COMMAND";goog.dom.TagName.DATA="DATA";goog.dom.TagName.DATALIST="DATALIST";goog.dom.TagName.DD="DD";\ngoog.dom.TagName.DEL="DEL";goog.dom.TagName.DETAILS="DETAILS";goog.dom.TagName.DFN="DFN";goog.dom.TagName.DIALOG="DIALOG";goog.dom.TagName.DIR="DIR";goog.dom.TagName.DIV="DIV";goog.dom.TagName.DL="DL";goog.dom.TagName.DT="DT";goog.dom.TagName.EM="EM";goog.dom.TagName.EMBED="EMBED";goog.dom.TagName.FIELDSET="FIELDSET";goog.dom.TagName.FIGCAPTION="FIGCAPTION";goog.dom.TagName.FIGURE="FIGURE";goog.dom.TagName.FONT="FONT";goog.dom.TagName.FOOTER="FOOTER";goog.dom.TagName.FORM="FORM";\ngoog.dom.TagName.FRAME="FRAME";goog.dom.TagName.FRAMESET="FRAMESET";goog.dom.TagName.H1="H1";goog.dom.TagName.H2="H2";goog.dom.TagName.H3="H3";goog.dom.TagName.H4="H4";goog.dom.TagName.H5="H5";goog.dom.TagName.H6="H6";goog.dom.TagName.HEAD="HEAD";goog.dom.TagName.HEADER="HEADER";goog.dom.TagName.HGROUP="HGROUP";goog.dom.TagName.HR="HR";goog.dom.TagName.HTML="HTML";goog.dom.TagName.I="I";goog.dom.TagName.IFRAME="IFRAME";goog.dom.TagName.IMG="IMG";goog.dom.TagName.INPUT="INPUT";\ngoog.dom.TagName.INS="INS";goog.dom.TagName.ISINDEX="ISINDEX";goog.dom.TagName.KBD="KBD";goog.dom.TagName.KEYGEN="KEYGEN";goog.dom.TagName.LABEL="LABEL";goog.dom.TagName.LEGEND="LEGEND";goog.dom.TagName.LI="LI";goog.dom.TagName.LINK="LINK";goog.dom.TagName.MAIN="MAIN";goog.dom.TagName.MAP="MAP";goog.dom.TagName.MARK="MARK";goog.dom.TagName.MATH="MATH";goog.dom.TagName.MENU="MENU";goog.dom.TagName.MENUITEM="MENUITEM";goog.dom.TagName.META="META";goog.dom.TagName.METER="METER";\ngoog.dom.TagName.NAV="NAV";goog.dom.TagName.NOFRAMES="NOFRAMES";goog.dom.TagName.NOSCRIPT="NOSCRIPT";goog.dom.TagName.OBJECT="OBJECT";goog.dom.TagName.OL="OL";goog.dom.TagName.OPTGROUP="OPTGROUP";goog.dom.TagName.OPTION="OPTION";goog.dom.TagName.OUTPUT="OUTPUT";goog.dom.TagName.P="P";goog.dom.TagName.PARAM="PARAM";goog.dom.TagName.PICTURE="PICTURE";goog.dom.TagName.PRE="PRE";goog.dom.TagName.PROGRESS="PROGRESS";goog.dom.TagName.Q="Q";goog.dom.TagName.RP="RP";goog.dom.TagName.RT="RT";\ngoog.dom.TagName.RTC="RTC";goog.dom.TagName.RUBY="RUBY";goog.dom.TagName.S="S";goog.dom.TagName.SAMP="SAMP";goog.dom.TagName.SCRIPT="SCRIPT";goog.dom.TagName.SECTION="SECTION";goog.dom.TagName.SELECT="SELECT";goog.dom.TagName.SMALL="SMALL";goog.dom.TagName.SOURCE="SOURCE";goog.dom.TagName.SPAN="SPAN";goog.dom.TagName.STRIKE="STRIKE";goog.dom.TagName.STRONG="STRONG";goog.dom.TagName.STYLE="STYLE";goog.dom.TagName.SUB="SUB";goog.dom.TagName.SUMMARY="SUMMARY";goog.dom.TagName.SUP="SUP";\ngoog.dom.TagName.SVG="SVG";goog.dom.TagName.TABLE="TABLE";goog.dom.TagName.TBODY="TBODY";goog.dom.TagName.TD="TD";goog.dom.TagName.TEMPLATE="TEMPLATE";goog.dom.TagName.TEXTAREA="TEXTAREA";goog.dom.TagName.TFOOT="TFOOT";goog.dom.TagName.TH="TH";goog.dom.TagName.THEAD="THEAD";goog.dom.TagName.TIME="TIME";goog.dom.TagName.TITLE="TITLE";goog.dom.TagName.TR="TR";goog.dom.TagName.TRACK="TRACK";goog.dom.TagName.TT="TT";goog.dom.TagName.U="U";goog.dom.TagName.UL="UL";goog.dom.TagName.VAR="VAR";\ngoog.dom.TagName.VIDEO="VIDEO";goog.dom.TagName.WBR="WBR";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE="",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a};\nconst module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:""}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null}\nfunction module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData();\nfunction module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal="string"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal}\nfunction module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal}\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)}\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp("([A-Z][\\\\w ]+)/([^\\\\s]+)\\\\s*(?:\\\\((.*?)\\\\))?","g"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT;\ngoog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent;\ngoog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_=\n!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error("Unsafe call to resetForTesting");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("fullVersionList");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("platformVersion");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:"Android Browser",CHROMIUM:"Chromium",EDGE:"Microsoft Edge",FIREFOX:"Firefox",IE:"Internet Explorer",OPERA:"Opera",SAFARI:"Safari",SILK:"Silk"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand;\nfunction module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0<a.brands.length}\nfunction module$contents$goog$labs$userAgent$browser_hasFullVersionList(){return module$contents$goog$labs$userAgent$browser_isAtLeast(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM,98)}function module$contents$goog$labs$userAgent$browser_matchOpera(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Opera")}\nfunction module$contents$goog$labs$userAgent$browser_matchIE(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Trident")||module$contents$goog$labs$userAgent$util_matchUserAgent("MSIE")}function module$contents$goog$labs$userAgent$browser_matchEdgeHtml(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Edge")}\nfunction module$contents$goog$labs$userAgent$browser_matchEdgeChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.EDGE):module$contents$goog$labs$userAgent$util_matchUserAgent("Edg/")}\nfunction module$contents$goog$labs$userAgent$browser_matchOperaChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.OPERA):module$contents$goog$labs$userAgent$util_matchUserAgent("OPR")}\nfunction module$contents$goog$labs$userAgent$browser_matchFirefox(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Firefox")||module$contents$goog$labs$userAgent$util_matchUserAgent("FxiOS")}\nfunction module$contents$goog$labs$userAgent$browser_matchSafari(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Safari")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchCoast()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_matchEdgeChromium()||module$contents$goog$labs$userAgent$browser_matchOperaChromium()||\nmodule$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_isSilk()||module$contents$goog$labs$userAgent$util_matchUserAgent("Android"))}function module$contents$goog$labs$userAgent$browser_matchCoast(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Coast")}\nfunction module$contents$goog$labs$userAgent$browser_matchIosWebview(){return(module$contents$goog$labs$userAgent$util_matchUserAgent("iPad")||module$contents$goog$labs$userAgent$util_matchUserAgent("iPhone"))&&!module$contents$goog$labs$userAgent$browser_matchSafari()&&!module$contents$goog$labs$userAgent$browser_matchChrome()&&!module$contents$goog$labs$userAgent$browser_matchCoast()&&!module$contents$goog$labs$userAgent$browser_matchFirefox()&&module$contents$goog$labs$userAgent$util_matchUserAgent("AppleWebKit")}\nfunction module$contents$goog$labs$userAgent$browser_matchChrome(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM):(module$contents$goog$labs$userAgent$util_matchUserAgent("Chrome")||module$contents$goog$labs$userAgent$util_matchUserAgent("CriOS"))&&!module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_isSilk()}\nfunction module$contents$goog$labs$userAgent$browser_matchAndroidBrowser(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Android")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_isSilk())}const module$contents$goog$labs$userAgent$browser_isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;\ngoog.labs.userAgent.browser.isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;const module$contents$goog$labs$userAgent$browser_isIE=module$contents$goog$labs$userAgent$browser_matchIE;goog.labs.userAgent.browser.isIE=module$contents$goog$labs$userAgent$browser_matchIE;const module$contents$goog$labs$userAgent$browser_isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;goog.labs.userAgent.browser.isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;\nconst module$contents$goog$labs$userAgent$browser_isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;goog.labs.userAgent.browser.isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;const module$contents$goog$labs$userAgent$browser_isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;goog.labs.userAgent.browser.isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;\nconst module$contents$goog$labs$userAgent$browser_isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;goog.labs.userAgent.browser.isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;const module$contents$goog$labs$userAgent$browser_isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;goog.labs.userAgent.browser.isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;const module$contents$goog$labs$userAgent$browser_isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;\ngoog.labs.userAgent.browser.isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;const module$contents$goog$labs$userAgent$browser_isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;goog.labs.userAgent.browser.isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;const module$contents$goog$labs$userAgent$browser_isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;goog.labs.userAgent.browser.isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;\nconst module$contents$goog$labs$userAgent$browser_isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;goog.labs.userAgent.browser.isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;function module$contents$goog$labs$userAgent$browser_isSilk(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Silk")}goog.labs.userAgent.browser.isSilk=module$contents$goog$labs$userAgent$browser_isSilk;\nfunction module$contents$goog$labs$userAgent$browser_createVersionMap(a){const b={};a.forEach(c=>{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||""}\nfunction module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b(["Version","Opera"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()?\nb(["Edge"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b(["Edg"]):module$contents$goog$labs$userAgent$browser_isSilk()?b(["Silk"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b(["Chrome","CriOS","HeadlessChrome"]):(a=a[2])&&a[1]||""}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion;\nfunction module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher;\nfunction module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\\d\\.]*)/.exec(a);if(b&&b[1])return b[1];b="";const c=/MSIE +([\\d\\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\\/(\\d.\\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b}\nfunction module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):"";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c(["Version",\n"Opera"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c(["OPR"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c(["Edge"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c(["Edg"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c(["Chrome","CriOS","HeadlessChrome"])}return a===\nmodule$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&&\na[1]||"":""}\nfunction module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(".")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(""===b)return NaN;b=b.split(".")}return 0===b.length?NaN:Number(b[0])}\nfunction module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast;\nfunction module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost;\nclass module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a=\nawait module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;\nasync function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions;\ngoog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()};\nfunction module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b="";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(""===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a,\nc,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf;\nfunction module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return""}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)}\ngoog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&&\na.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got \'${a}\' of type `+goog.typeOf(a));return"type_error:SafeHtml"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof\nmodule$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\\x3c!--"+\ngoog.string.internal.htmlEscape(a)+"--\\x3e")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:"");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Tag name <${a}> is not allowed for SafeHtml.`:"");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:""},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n"The browser does not support sandboxed iframes.":"");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a);\na=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if("language"==d||"src"==d||"text"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set "${d}" attribute`:"");}c="";a=module$contents$goog$array_concat(a);for(d=0;d<\na.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:"text/css"},{},b);let c="";a=module$contents$goog$array_concat(a);for(let d=0;d<a.length;d++)c+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(a[d]);\na=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",b,a)}static createMetaRefresh(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(module$contents$goog$labs$userAgent$browser_matchIE()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml())&&goog.string.internal.contains(a,";")&&(a="\'"+a.replace(/\'/g,"%27")+"\'");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",\n{"http-equiv":"refresh",content:(b||0)+"; url="+a})}static join(a,b){a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);const c=[],d=e=>{Array.isArray(e)?e.forEach(d):(e=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(e),c.push(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(e)))};b.forEach(d);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c.join(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static concat(a){return module$contents$goog$html$SafeHtml_SafeHtml.join(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY,\nArray.prototype.slice.call(arguments))}static createSafeHtmlSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createHTML(a):a;return new module$contents$goog$html$SafeHtml_SafeHtml(a,module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE)}static createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(a,b,c){b=`<${a}`+module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes(a,b);null==c?c=[]:Array.isArray(c)||(c=[c]);goog.dom.tags.isVoidTag(a.toLowerCase())?\n(goog.asserts.assert(!c.length,`Void tag <${a}> does not allow content.`),b+=">"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=">"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+"</"+a+">");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c="";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Invalid attribute name "${d}".`:"");const e=b[d];null!=e&&(c+=" "+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,"Must be lower case"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c,\nf)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override "${e}" attribute, got "`+f+\'" with value "\'+c[f]+\'"\':"");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape;\nconst module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0,\n[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0};\nfunction module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\'Attribute "style" not supported.\':"");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Attribute "${b}`+\'" requires goog.string.Const value, "\'+c+\'" given.\':"");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if("string"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute "${b}" on tag "${a}`+\'" requires goog.html.SafeUrl, goog.string.Const, or string, value "\'+\nc+\'" given.\':"");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert("string"===typeof c||"number"===typeof c,"String or number value expected, got "+typeof c+" with value: "+c);return`${b}="`+goog.string.internal.htmlEscape(String(c))+\'"\'}\nfunction module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\'The "style" attribute requires goog.html.SafeStyle or map of style properties, \'+typeof a+" given: "+a:"");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)}\nmodule$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||"",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>")}();\ngoog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};\ngoog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&"undefined"===typeof document)return!1;var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement});\ngoog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};\ngoog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML to be immediatelly used."),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)};\ngoog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};\ngoog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};\ngoog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,\'URL must be TrustedResourceUrl because "rel" contains "stylesheet"\'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):\nb instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};\ngoog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute("nonce",b)};\ngoog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))};\ngoog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||"";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)};\ngoog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,"text/html")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)};\ngoog.dom.safe.createImageFromBlob=function(a){if(!/^image\\/.*/g.test(a.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_("script[nonce]",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_(\'style[nonce],link[rel="stylesheet"][nonce]\',a)};goog.dom.safe.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:"":""};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\\u00a0",ZERO_WIDTH_SPACE:"\\u200b"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;\ngoog.string.subs=function(a,b){const c=a.split("%s");let d="";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\\s\\xa0]+/g," ").replace(/^\\s+|\\s+$/g,"")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;\ngoog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\\t\\n\\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};\ngoog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\\u0080"<=a&&"\\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)/g,"\\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\\xa0|\\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\\xa0|[ \\t]+/g," ")};\ngoog.string.collapseBreakingSpaces=function(a){return a.replace(/[\\t\\r\\n ]+/g," ").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,"")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\\s\\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\\s\\xa0]+$/,"")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;\ngoog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g<f;g++){c=d[g];const h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\D+/g)};\ngoog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\.\\d+|\\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\\+/g," "))};goog.string.newLineToBr=goog.string.internal.newLineToBr;\ngoog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,"&#101;"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};\ngoog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};\ngoog.string.unescapeEntitiesUsingDom_=function(a,b){const c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":\'"\'};let d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;"#"==f.charAt(0)&&(f=Number("0"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),\ne+" ")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return\'"\';default:return"#"!=c.charAt(0)||(c=Number("0"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};\ngoog.string.preserveSpaces=function(a){return a.replace(/(^|[\\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;d<c;d++){const e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};\ngoog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\\x00":"\\\\0","\\b":"\\\\b","\\f":"\\\\f","\\n":"\\\\n","\\r":"\\\\r","\\t":"\\\\t","\\v":"\\\\x0B",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\","<":"\\\\u003C"};goog.string.jsEscapeCache_={"\'":"\\\\\'"};\ngoog.string.quote=function(a){a=String(a);const b=[\'"\'];for(let c=0;c<a.length;c++){const d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push(\'"\');return b.join("")};goog.string.escapeString=function(a){const b=[];for(let c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};\ngoog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];let b;const c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\\\x",16>c||256<c)b+="0"}else b="\\\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains;\ngoog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b<a.length&&0<c&&(d=a.slice(0,b)+a.slice(b+c));return d};goog.string.remove=function(a,b){return a.replace(b,"")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,"")};\ngoog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,c.replace(/\\$/g,"$$$$"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,"\\\\$1").replace(/\\x08/g,"\\\\x08")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};\ngoog.string.padNumber=function(a,b,c){if(!Number.isFinite(a))return String(a);a=void 0!==c?a.toFixed(c):String(a);c=a.indexOf(".");-1===c&&(c=a.length);const d="-"===a[0]?"-":"";d&&(a=a.substring(1));return d+goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};\ngoog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){let b=0;for(let c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};\ngoog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};goog.string.toTitleCase=function(a,b){b="string"===typeof b?goog.string.regExpEscape(b):"\\\\s";return a.replace(new RegExp("(^"+(b?"|["+b+"]+":"")+")([a-z])","g"),function(c,d,e){return d+e.toUpperCase()})};\ngoog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return"string"===typeof a?/^\\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};\ngoog.string.lastComponent=function(a,b){if(b)"string"==typeof b&&(b=[b]);else return a;let c=-1;for(let d=0;d<b.length;d++){if(""==b[d])continue;const e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};\ngoog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.string.path={};goog.string.path.baseName=function(a){const b=a.lastIndexOf("/")+1;return a.slice(b)};goog.string.path.basename=goog.string.path.baseName;goog.string.path.dirname=function(a){const b=a.lastIndexOf("/")+1;a=a.slice(0,b);/^\\/+$/.test(a)||(a=a.replace(/\\/+$/,""));return a};goog.string.path.extension=function(a){a=goog.string.path.baseName(a).replace(/\\.+/g,".");const b=a.lastIndexOf(".");return 0>=b?"":a.slice(b+1)};\ngoog.string.path.join=function(a){let b=arguments[0];for(let c=1;c<arguments.length;c++){const d=arguments[c];b=goog.string.startsWith(d,"/")?d:""==b||goog.string.endsWith(b,"/")?b+d:b+("/"+d)}return b};\ngoog.string.path.normalizePath=function(a){if(""==a)return".";let b="";goog.string.startsWith(a,"/")&&(b="/",goog.string.startsWith(a,"//")&&!goog.string.startsWith(a,"///")&&(b="//"));a=a.split("/");const c=[];for(let d=0;d<a.length;d++){const e=a[d];""!=e&&"."!=e&&(".."!=e||!b&&!c.length||".."==module$contents$goog$array_peek(c)?c.push(e):c.pop())}return b+c.join("/")||"."};goog.string.path.split=function(a){const b=goog.string.path.dirname(a);a=goog.string.path.baseName(a);return[b,a]};const DEBUG_WASI$$module$src$filesystem$wasi=!1;function assertLeadingSlash$$module$src$filesystem$wasi(a){return/^\\//g.test(a)?a:`/${a}`}function removeLeadingSlash$$module$src$filesystem$wasi(a){return a.replace(/^\\//g,"")}function shouldOpenReader$$module$src$filesystem$wasi(a){return(a&(WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants))!==goog.global.BigInt(0)}\nfunction performanceNowPoly$$module$src$filesystem$wasi(){if("undefined"===typeof performance||"undefined"===typeof performance.now){const a=Date.now();return Date.now()-a}return performance.now()}function concatUint8Arrays$$module$src$filesystem$wasi(a){var b=a.reduce((d,e)=>d+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}}\nconst WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:"/dev/stdin",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:"/dev/stdout",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:"/dev/stderr",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:"/",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0};\nWASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)"function"===c.kind&&c.module.startsWith("wasi_")&&("object"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b};\nWASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a};\nWASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START);\ndefault:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("clock_time_get",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_advise",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_allocate",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_close",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_datasync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_get",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants),\n!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_flags",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_rights",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_get",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b,\ngoog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_size",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_times",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_pread",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_dir_name",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_get",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log("fd_pwrite",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_read",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((m,p)=>m+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,l=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,"\\x00"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;f<c;f++){var n=b+8*f;const m=g.getUint32(n,!0);n=g.getUint32(n+\n4,!0);l||(k+=n,Array.from({length:n},(p,q)=>q).reduce((p,q)=>{if(l)return p;const [B,r]=p;let v=p=0,D=!1,y=0,u;if(0===q)for(;!D;)u=e[p]?e[p].byteLength:0,y<=h&&u+y>h?(D=!0,v=h-y):(y+=u,p+=1);else p=B,v=r;e[p]?(g.setUint8(m+q,e[p][v]),v+1>=e[p].byteLength?(p=B+1,v=0):v+=1):(g.setUint8(m+q,"\\x00"),h+=q,l=!0);return[p,v]},[0,0]),l||(h+=n))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error("Reading non existent file",a,this.fd[a])};\nWASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_readdir",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_renumber",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_seek",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break;\ncase WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_sync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_tell",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_write",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0<this.fd[a].buffers.length?[concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)]:this.fd[a].buffers;let f=0;for(let k=0;k<c;k++){var g=b+8*k,h=e.getUint32(g,!0);g=e.getUint32(g+4,!0);f+=g;h=new Uint8Array(e.buffer,h,g);if(this.fd[a].buffers[0]&&\nthis.fd[a].seekPos<this.fd[a].buffers[0].length){const l=Number(this.fd[a].seekPos);h.slice(0,g).forEach((n,m)=>{this.fd[a].buffers[0][l+m]=n})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_create_directory",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_get",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_set_times",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_link",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_open",a,b,c,d,e,f,g,h,k,arguments);const l=this.getMemory();var n=(this.fd[a]||{path:"/"}).path,m=new Uint8Array(l.buffer,c,d);m=decoder$$module$src$utils$text_encoders.decode(m);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?"":n,m)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(";; opening path",\np,"withREader",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith("/..")||"/._"===p||"/.AppleDouble"===p)return WASI_EBADF$$module$src$filesystem$constants;(n=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?m=n.fd:(m=this.fd.length,this.fd[m]={fd:m});this.fd[m]={...this.fd[m],path:p,type:"file",seekPos:goog.global.BigInt(0),buffers:n?this.fd[m].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("should open a read handle for",\np);l.setUint32(k,m,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_readlink",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_remove_directory",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_rename",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_symlink",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3<a&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_unlink_file",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.poll_oneoff=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("poll_oneoff",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.proc_exit=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_exit",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.proc_raise=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_raise",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.random_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("random_get",a,b);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sched_yield=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sched_yield",arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.sock_recv=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_recv",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sock_send=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_send",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.sock_shutdown=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_shutdown",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.findBuffers=function(a){const b=Object.values(this.fd).find(({path:c})=>c===a);return[b&&b.buffers,b.fd]};\nWASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+"/").replace("//","/"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\\//g.test(d.replace(b,""))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,""))).filter(d=>!!d)};\nWASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]};\nWASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can\'t append to non-existing file ${a}`)};\nWASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn\'t been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)};\nWASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)};\nWASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0<c.length?console.warn(`mkdir: path ${a} already exists`):(a=Object.keys(this.fd).length,this.fd[a]={fd:a,path:b})};var module$src$filesystem$wasi={};module$src$filesystem$wasi.WASI=WASI$$module$src$filesystem$wasi;function clearArray$$module$src$utils$clear_array(a){for(;0<a.length;)a.pop()}var module$src$utils$clear_array={};module$src$utils$clear_array.clearArray=clearArray$$module$src$utils$clear_array;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};\nvar LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b="log_with_warnings"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error("Invalid log level "+b+" allowed: "+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=\nfunction(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e="log_with_warnings"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>\nmodule$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split("{}");for(var k=[f.mockConsole,"%c"+b,c],l=0;l<h.length;l++)k.push(h[l]),void 0!==g[l]&&k.push(g[l]);if(h.length-1!==g.length)if("log_with_warnings"===f.logLevel)f.mockConsole.error("MissMatch amount of arguments");else if("log_raise_error"===f.logLevel)throw Error("MissMatch amount of arguments");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,\nc){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return"color: white; background-color: "+b+"; padding: 2px 6px; border-radius: 2px; font-size: 10px"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^\nd>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b="");b=a.getHash(b);for(var c="#",d=0;3>d;d++)c+=("00"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,"trace"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,"debug"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,\n"info"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,"warn"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,"error")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;\nconst isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};\nlogSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;\nmodule$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;\nmodule$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const CompressionMethod$$module$src$zlib$zlib={DEFLATE:8,RESERVED:15};var module$src$zlib$zlib={};module$src$zlib$zlib.CompressionMethod=CompressionMethod$$module$src$zlib$zlib;/*\n zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */\nfunction Huffman$$module$src$zlib$huffman(a){const b=a.length;let c=0,d=Number.POSITIVE_INFINITY,e,f,g,h;let k,l;for(k=0;k<b;++k)a[k]>c&&(c=a[k]),a[k]<d&&(d=a[k]);const n=1<<c,m=new Uint32Array(n);e=1;f=0;for(g=2;e<=c;){for(k=0;k<b;++k)if(a[k]===e){h=0;var p=f;for(l=0;l<e;++l)h=h<<1|p&1,p>>=1;p=e<<16|k;for(l=h;l<n;l+=g)m[l]=p;++f}++e;f<<=1;g<<=1}return[m,c,d]}var module$src$zlib$huffman={};module$src$zlib$huffman.Huffman=Huffman$$module$src$zlib$huffman;const ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate=32768;\nfunction RawInflate$$module$src$zlib$rawinflate(a,b){this.blocks=[];this.bufferSize=ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate;this.bitsbuflen=this.bitsbuf=this.ip=this.totalpos=0;this.input=new Uint8Array(a);this.bfinal=!1;this.bufferType=RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE;this.resize=!1;if(b||!(b={}))b.index&&(this.ip=b.index),b.bufferSize&&(this.bufferSize=b.bufferSize),b.bufferType&&(this.bufferType=b.bufferType),b.resize&&(this.resize=b.resize);switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.op=\nRawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;this.output=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength+this.bufferSize+RawInflate$$module$src$zlib$rawinflate.MaxCopyLength);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.op=0;this.output=new Uint8Array(this.bufferSize);break;default:throw Error("invalid inflate mode");}}RawInflate$$module$src$zlib$rawinflate.BufferType={BLOCK:0,ADAPTIVE:1};\nRawInflate$$module$src$zlib$rawinflate.prototype.decompress=function(){for(;!this.bfinal;)this.parseBlock();switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:return this.concatBufferBlock();case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:return this.concatBufferDynamic();default:throw Error("invalid inflate mode");}};RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength=32768;RawInflate$$module$src$zlib$rawinflate.MaxCopyLength=258;\nRawInflate$$module$src$zlib$rawinflate.Order=function(a){return new Uint16Array(a)}([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);RawInflate$$module$src$zlib$rawinflate.LengthCodeTable=function(a){return new Uint16Array(a)}([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]);RawInflate$$module$src$zlib$rawinflate.LengthExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]);\nRawInflate$$module$src$zlib$rawinflate.DistCodeTable=function(a){return new Uint16Array(a)}([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);RawInflate$$module$src$zlib$rawinflate.DistExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\nRawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable=function(a){return a}(function(){const a=new Uint8Array(288);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=143>=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=5;return Huffman$$module$src$zlib$huffman(a)}());\nRawInflate$$module$src$zlib$rawinflate.prototype.parseBlock=function(){let a=this.readBits(3);a&1&&(this.bfinal=!0);a>>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error("unknown BTYPE: "+a);}};\nRawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error("input buffer is broken");for(;c<a;)b|=d[e++]<<c,c+=8;this.bitsbuf=b>>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<<a)-1};\nRawInflate$$module$src$zlib$rawinflate.prototype.readCodeByTable=function(a){let b=this.bitsbuf,c=this.bitsbuflen;var d=this.input;let e=this.ip;var f=d.length;const g=a[0];for(a=a[1];c<a&&!(e>=f);)b|=d[e++]<<c,c+=8;d=g[b&(1<<a)-1];f=d>>>16;if(f>c)throw Error("invalid code length: "+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error("invalid uncompressed block header: LEN");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error("invalid uncompressed block header: NLEN");e=a[b++]|a[b++]<<8;if(f===~e)throw Error("invalid uncompressed block header: length verify");if(b+f>a.length)throw Error("input buffer is broken");\nswitch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error("invalid inflate mode");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);\nbreak;default:throw Error("invalid inflate mode");}};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;e<c;++e)d[RawInflate$$module$src$zlib$rawinflate.Order[e]]=this.readBits(3);d=Huffman$$module$src$zlib$huffman(d);c=new Uint8Array(a+b);e=0;for(b=a+b;e<b;){var f=this.readCodeByTable(d);switch(f){case 16:for(f=3+this.readBits(2);f--;)c[e++]=g;break;case 17:for(f=\n3+this.readBits(3);f--;)c[e++]=0;var g=0;break;case 18:for(f=11+this.readBits(7);f--;)c[e++]=0;g=0;break;default:g=c[e++]=f}}g=Huffman$$module$src$zlib$huffman(c.subarray(0,a));a=Huffman$$module$src$zlib$huffman(c.subarray(a));switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(g,a);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(g,a);break;default:throw Error("invalid inflate mode");}};\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanBlock=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;const e=c.length-RawInflate$$module$src$zlib$rawinflate.MaxCopyLength;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,n=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,m=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=\ne&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=n[f],0<m[f]&&(g+=this.readBits(m[f])),d>=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,n=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,m=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]=\nf;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=n[f],0<m[f]&&(g+=this.readBits(m[f])),d+h>e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\nRawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;\nreturn c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&("number"===typeof a.fixRatio&&(b=a.fixRatio),"number"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a<d.length?d.length+a:d.length<<1):a=d.length*b;a=new Uint8Array(a);a.set(d);return this.output=a};\nRawInflate$$module$src$zlib$rawinflate.prototype.concatBufferBlock=function(){let a=0;const b=this.output,c=this.blocks;let d;const e=new Uint8Array(this.totalpos+(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));let f,g,h,k;if(0===c.length)return this.output.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,this.op);f=0;for(g=c.length;f<g;++f)for(d=c[f],h=0,k=d.length;h<k;++h)e[a++]=d[h];f=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;for(g=this.op;f<\ng;++f)e[a++]=b[f];this.blocks=[];return this.buffer=e};RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferDynamic=function(){let a;const b=this.op;this.resize?(a=new Uint8Array(b),a.set(this.output.subarray(0,b))):a=this.output.subarray(0,b);return this.buffer=a};var module$src$zlib$rawinflate={};module$src$zlib$rawinflate.RawInflate=RawInflate$$module$src$zlib$rawinflate;function Util$$module$src$zlib$util(){}Util$$module$src$zlib$util.stringToByteArray=function(a){a=[...a];let b,c;b=0;for(c=a.length;b<c;b++)a[b]=(a[b].charPointAt(0)&255)>>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){"string"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0<d;){e=d>Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0};\nAdler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error("unsupported compression method");}if(0!==((c<<8)+d)%31)throw Error("invalid fcheck flag:"+((c<<8)+d)%31);if(d&32)throw Error("fdict flag is not supported");this.rawinflate=\nnew RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType;\nInflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error("invalid adler-32 checksum");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\\n$/g.test(d);e=/^\\n/g.test(d);var k=d.split("\\n").filter(n=>0<n.length),l=[];if(0===k.length&&h||e)l.push(c.join("")),clearArray$$module$src$utils$clear_array(c);k.forEach((n,m)=>{m+1===k.length?h?0===m?(l.push(c.join("")+n),\nclearArray$$module$src$utils$clear_array(c)):l.push(n):c.push(n):0===m?(l.push(c.join("")+n),clearArray$$module$src$utils$clear_array(c)):l.push(n)});l.forEach(n=>{n.replace(/(\\r\\n|\\n|\\r)/gm,"")&&b.post({log:n})})}},assertPluginExports$$module$src$module=a=>{if(a&&"object"===typeof a&&"object"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,"A csound plugin turns out to be neither a plugin, opcode or module.\\nPerhaps csdl.h or module.h wasn\'t imported correctly?");\nreturn!1}console.error("A csound plugin didn\'t export __wasm_call_ctors.\\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors");return!1}console.error("Error instantiating a csound plugin, instance and/or export is missing!");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let l=0,n=1;for(;;){const m=a[c++];l+=(m&127)*n;n*=128;if(!(m&128))break}return l}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error("Wasm magic number is missing!");\nif(0!==a[8])return logWasmModule$$module$src$logger("Dylink section wasn\'t found in wasm binary, assuming static wasm."),"static";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]==="d".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="y".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="l".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="i".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="n".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="k".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\n".".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="0".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory,\nstreamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]};\nvar $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{"/":"/"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if("static"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(u,z)=>{u=await u;\nlet C,A;try{C=new Uint8Array(z),A=getBinaryHeaderData$$module$src$module(C)}catch(G){console.error("Error in plugin",G)}A&&u.push({headerData:A,wasmPluginBytes:C});return u},[]);var l=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((u,{headerData:z})=>"static"===z?0:u+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+l;const n=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),m=new WebAssembly.Table({initial:k+\n1,element:"anyfunc"});e.setMemory(n);const p=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);l=new WebAssembly.Global({value:"i32",mutable:!1},l);const q=new WebAssembly.Global({value:"i32",mutable:!1},1),B=new WebAssembly.Global({value:"i32",mutable:!0},0);a=await WebAssembly.compile(a);const r=e.getImports(a);let v=[],D=d;r.env=r.env||{};r.env.memory=n;r.env.__indirect_function_table=\nm;r.env.__stack_pointer=p;r.env.__memory_base=l;r.env.__table_base=q;r.env.csoundLoadModules=u=>{v.forEach(z=>{void 0===y?console.error("csound-wasm internal: timing problem detected!"):dlinit$$module$src$dlinit(y,z,m,u)});return 0};r.env._ZTH5errno=function(){};r.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:n,messagePort:c,streamBuffer:[]});r.env.printDebugCallback=(u,z)=>{u=new Uint8Array(n.buffer,u,z);u=uint2String$$module$src$utils$text_encoders(u);console.log(u)};\nr["GOT.mem"]=r["GOT.mem"]||{};r["GOT.mem"].__heap_base=f;r["GOT.func"]=r["GOT.func"]||{};const y=await WebAssembly.instantiate(a,r);c=Object.assign({},y.exports);a={};a.exports=Object.assign(c,{memory:n});v=await b.reduce(async(u,{headerData:z,wasmPluginBytes:C})=>{u=await u;try{const {memorySize:A,memoryAlign:G,tableSize:F}=z,I=await WebAssembly.compile(C),t=e.getImports(I),E=new WebAssembly.Global({value:"i32",mutable:!1},D*PAGE_SIZE$$module$src$module);m.grow(F);t.env=Object.assign({},t.env);t.env.memory=\nn;t.env.__indirect_function_table=m;t.env.__memory_base=E;t.env.__stack_pointer=p;t.env.__table_base=q;t.env.csoundLoadModules=B;delete t.env.csoundWasiJsMessageCallback;D+=Math.ceil((A+G)/PAGE_SIZE$$module$src$module);const x=await WebAssembly.instantiate(I,t);assertPluginExports$$module$src$module(x)&&(x.exports.__wasm_call_ctors(),u.push(x))}catch(A){console.error("Error while compiling csound-plugin",A)}return u},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]},\nmodule$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;const handleCsoundStart$$module$src$workers$common_utils=(a,b,c,d,e)=>f=>{const {csound:g}=f,h=1===b.csoundShouldDaemonize(g);h&&(b.csoundSetOption(g,"--daemon"),b.csoundSetOption(g,"-odac"));const k=b.csoundStart(g),l=b.csoundGetOutputName(g)||"test.wav";logCommonUtils$$module$src$logger(`handleCsoundStart: actual csoundStart result ${k}, outputName: ${l}`)();0!==k&&a.post(`error: csoundStart failed while trying to render ${l},`+" look out for errors in options and syntax");setTimeout(()=>{const n=\nb._isRequestingRtMidiInput(g);if(h||n||l.includes("dac"))d(f);else if(a.broadcastPlayState("renderStarted"),e)e(f);else for(;0===b.csoundPerformKsmps(g););},0);return k},instantiateAudioPacket$$module$src$workers$common_utils=(a,b)=>{const c=[];for(let d=0;d<a;d++)c.push(new Float64Array(b));return c},renderFunction$$module$src$workers$common_utils=({libraryCsound:a,workerMessagePort:b})=>async({csound:c})=>{const d=a.csoundGetKr(c);let e=0,f=0;for(;("renderStarted"===b.vanillaWorkerState||"renderStarted"===\nb.workerState)&&0===e;)e=a.csoundPerformKsmps(c),f+=1,"function"===typeof setTimeout&&0===e&&0===f%(2*d)&&await new Promise(g=>setTimeout(g,0));b.broadcastPlayState("renderEnded")};var module$src$workers$common_utils={};module$src$workers$common_utils.handleCsoundStart=handleCsoundStart$$module$src$workers$common_utils;module$src$workers$common_utils.instantiateAudioPacket=instantiateAudioPacket$$module$src$workers$common_utils;module$src$workers$common_utils.renderFunction=renderFunction$$module$src$workers$common_utils;const DEFAULT_BUFFER_LEN$$module$src$constants=128,MAX_CHANNELS$$module$src$constants=32,RING_BUFFER_SIZE$$module$src$constants=16384,MIDI_BUFFER_SIZE$$module$src$constants=1024,MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants=3,CALLBACK_DATA_BUFFER_SIZE$$module$src$constants=16384,initialSharedState$$module$src$constants=[0,4096,0,0,0,0,-1,-1,-1,-1,0,DEFAULT_BUFFER_LEN$$module$src$constants,0,0,0,0,0,0,0,0],AUDIO_STATE$$module$src$constants={CSOUND_LOCK:0,FRAMES_REQUESTED:1,IS_PERFORMING:2,IS_RENDERING:3,\nIS_PAUSED:4,STOP:5,SAMPLE_RATE:6,KSMPS:7,NCHNLS:8,NCHNLS_I:9,IS_REQUESTING_MIC:10,BUFFER_LEN:11,OUTPUT_READ_INDEX:12,OUTPUT_WRITE_INDEX:13,AVAIL_IN_BUFS:14,AVAIL_OUT_BUFS:15,IS_REQUESTING_RTMIDI:16,RTMIDI_INDEX:17,AVAIL_RTMIDI_EVENTS:18,HAS_PENDING_CALLBACKS:19},DATA_TYPE$$module$src$constants={NUMBER:0,STRING:1,FLOAT_32:2,FLOAT_64:3};var module$src$constants={};module$src$constants.AUDIO_STATE=AUDIO_STATE$$module$src$constants;module$src$constants.CALLBACK_DATA_BUFFER_SIZE=CALLBACK_DATA_BUFFER_SIZE$$module$src$constants;\nmodule$src$constants.DATA_TYPE=DATA_TYPE$$module$src$constants;module$src$constants.DEFAULT_BUFFER_LEN=DEFAULT_BUFFER_LEN$$module$src$constants;module$src$constants.MAX_CHANNELS=MAX_CHANNELS$$module$src$constants;module$src$constants.MIDI_BUFFER_PAYLOAD_SIZE=MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants;module$src$constants.MIDI_BUFFER_SIZE=MIDI_BUFFER_SIZE$$module$src$constants;module$src$constants.RING_BUFFER_SIZE=RING_BUFFER_SIZE$$module$src$constants;module$src$constants.initialSharedState=initialSharedState$$module$src$constants;let combined$$module$src$workers$sab_worker,pollPromise$$module$src$workers$sab_worker,unlockPromise$$module$src$workers$sab_worker;\nconst callUncloned$$module$src$workers$sab_worker=async(a,b)=>(a=combined$$module$src$workers$sab_worker.get(a))&&a.apply({},b||[]),sabCreateRealtimeAudioThread$$module$src$workers$sab_worker=({libraryCsound:a,callbacksRequest:b,releaseStop:c,releasePause:d,releaseResumed:e,wasm:f,workerMessagePort:g})=>async({audioStateBuffer:h,audioStreamIn:k,audioStreamOut:l,midiBuffer:n,csound:m})=>{const p=new Int32Array(h);initialSharedState$$module$src$constants.forEach((H,K)=>{Atomics.store(p,K,H)});h=a._isRequestingRtMidiInput(m);\nvar q=0===Atomics.load(p,AUDIO_STATE$$module$src$constants.NCHNLS_I)&&a.csoundGetInputName(m).includes("adc"),B=Atomics.load(p,AUDIO_STATE$$module$src$constants.NCHNLS),r=Atomics.load(p,AUDIO_STATE$$module$src$constants.NCHNLS_I),v=Atomics.load(p,AUDIO_STATE$$module$src$constants.SAMPLE_RATE);-1<B&&a.csoundSetOption(m,`--nchnls=${B}`);-1<r&&a.csoundSetOption(m,`--nchnls_i=${r}`);-1<v&&a.csoundSetOption(m,`--sr=${v}`);const D=a.csoundGetNchnls(m),y=r||q?a.csoundGetNchnlsInput(m):0,u=Atomics.load(p,\nAUDIO_STATE$$module$src$constants.SAMPLE_RATE)||a.csoundGetSr(m);Atomics.store(p,AUDIO_STATE$$module$src$constants.NCHNLS,D);Atomics.store(p,AUDIO_STATE$$module$src$constants.NCHNLS_I,y);Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_REQUESTING_MIC,q?1:0);Atomics.store(p,AUDIO_STATE$$module$src$constants.SAMPLE_RATE,a.csoundGetSr(m));Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_REQUESTING_RTMIDI,h);q=a.csoundGetKsmps(m);Atomics.store(p,AUDIO_STATE$$module$src$constants.KSMPS,q);const z=\na.csoundGet0dBFS(m);B=[];r=[];for(v=0;v<D;++v)B.push(new Float64Array(l,RING_BUFFER_SIZE$$module$src$constants*v,RING_BUFFER_SIZE$$module$src$constants));for(l=0;l<y;++l)r.push(new Float64Array(k,RING_BUFFER_SIZE$$module$src$constants*l,RING_BUFFER_SIZE$$module$src$constants));g.broadcastPlayState("realtimePerformanceStarted");Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_PERFORMING,1);logSABWorker$$module$src$logger("Atomic.wait started (thread is now locked)\\n")();k=!0;let C=0,A=0,G=0,F=\n0,I;l=(H=!1)=>1===Atomics.load(p,AUDIO_STATE$$module$src$constants.STOP)||1!==Atomics.load(p,AUDIO_STATE$$module$src$constants.IS_PERFORMING)||0!==C||H?(0===C&&(logSABWorker$$module$src$logger("calling csoundStop and one performKsmps to trigger endof logs")(),a.csoundStop(m),a.csoundPerformKsmps(m)),logSABWorker$$module$src$logger("triggering realtimePerformanceEnded event")(),g.broadcastPlayState("realtimePerformanceEnded"),logSABWorker$$module$src$logger("End of realtimePerformance loop!")(),c(),\n!0):!1;for(v=!0;!v||(I=Atomics.wait(p,AUDIO_STATE$$module$src$constants.CSOUND_LOCK,1,1E4));){if("timed-out"===I){l(!0);break}k&&(k=!1,await new Promise(w=>{unlockPromise$$module$src$workers$sab_worker=w;g.broadcastSabUnlocked()}),logSABWorker$$module$src$logger("Atomic.wait unlocked, performance started")());1===Atomics.load(p,AUDIO_STATE$$module$src$constants.IS_PAUSED)&&(await new Promise(w=>setTimeout(w,0)),d(),await new Promise(w=>setTimeout(w,0)),Atomics.wait(p,AUDIO_STATE$$module$src$constants.IS_PAUSED,\n0),await new Promise(w=>setTimeout(w,0)),e(),await new Promise(w=>setTimeout(w,0)));if(l())break;if(h){var t=Atomics.load(p,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS);if(0<t){var E=Atomics.load(p,AUDIO_STATE$$module$src$constants.RTMIDI_INDEX),x=E;for(let w=0;w<t;w++){x=(E+MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants*w)%MIDI_BUFFER_SIZE$$module$src$constants;const J=Atomics.load(n,x),L=Atomics.load(n,x+1),M=Atomics.load(n,x+2);a.csoundPushMidiMessage(m,J,L,M)}Atomics.store(p,AUDIO_STATE$$module$src$constants.RTMIDI_INDEX,\n(x+1)%MIDI_BUFFER_SIZE$$module$src$constants);Atomics.sub(p,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS,t)}}const H=Atomics.load(p,AUDIO_STATE$$module$src$constants.BUFFER_LEN);t=Atomics.load(p,AUDIO_STATE$$module$src$constants.AVAIL_IN_BUFS)>=H;E=a.csoundGetSpin(m);x=a.csoundGetSpout(m);const K=t&&new Float64Array(f.wasi.memory.buffer,E,q*y),N=new Float64Array(f.wasi.memory.buffer,x,q*D);E=Atomics.load(p,AUDIO_STATE$$module$src$constants.FRAMES_REQUESTED);for(x=0;x<E;x++){if(0===A)if(0===\nC)C=a.csoundPerformKsmps(m),!v&&Atomics.add(p,AUDIO_STATE$$module$src$constants.AVAIL_OUT_BUFS,q),v=!1;else if(0!==C){Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_PERFORMING,0);l(!0);return}B.forEach((w,J)=>{w[F]=(N[A*D+J]||0)/z});t&&(r.forEach((w,J)=>{K[A*y+J]=(w[G]||0)*z}),G=t&&(G+1)%RING_BUFFER_SIZE$$module$src$constants);F=(F+1)%RING_BUFFER_SIZE$$module$src$constants;A=(A+1)%q}t&&Atomics.sub(p,AUDIO_STATE$$module$src$constants.AVAIL_IN_BUFS,E);1===Atomics.compareExchange(p,AUDIO_STATE$$module$src$constants.HAS_PENDING_CALLBACKS,\n1,0)&&await new Promise(w=>{pollPromise$$module$src$workers$sab_worker=w;b()});if(l())break;t=Atomics.load(p,AUDIO_STATE$$module$src$constants.OUTPUT_READ_INDEX);t=Math.max(2048-(F<t?F+RING_BUFFER_SIZE$$module$src$constants-t:F-t),0);Atomics.store(p,AUDIO_STATE$$module$src$constants.FRAMES_REQUESTED,t);0===t&&await new Promise(w=>setTimeout(w,H/u*1E3))}},initMessagePort$$module$src$workers$sab_worker=({port:a})=>{const b=new $jscompDefaultExport$$module$src$utils$message_port_state;b.post=c=>a.postMessage({log:c});\nb.broadcastPlayState=c=>a.postMessage({playStateChange:c});b.broadcastSabUnlocked=()=>a.postMessage({sabWorker:"unlocked"});b.ready=!0;return b},initCallbackReplyPort$$module$src$workers$sab_worker=({port:a})=>{a.addEventListener("message",b=>{if(b.data&&b.data.unlock)b=unlockPromise$$module$src$workers$sab_worker,unlockPromise$$module$src$workers$sab_worker=void 0,b&&b();else{b=b.data;var c=b.reduce((d,{id:e,argumentz:f,apiKey:g})=>{try{const h=combined$$module$src$workers$sab_worker.get(g),k=h&&\nh.apply({},f||[]);d.push({id:e,answer:k})}catch(h){throw Error(h);}return d},[]);a.postMessage(c);c=pollPromise$$module$src$workers$sab_worker;pollPromise$$module$src$workers$sab_worker=void 0;c&&c(b)}});a.start()},renderFunction$$module$src$workers$sab_worker=({libraryCsound:a,callbacksRequest:b,releaseStop:c,releasePause:d,releaseResumed:e,workerMessagePort:f})=>async({audioStateBuffer:g,csound:h})=>{g=new Int32Array(g);Atomics.store(g,AUDIO_STATE$$module$src$constants.IS_RENDERING,1);for(f.broadcastSabUnlocked();1!==\nAtomics.load(g,AUDIO_STATE$$module$src$constants.STOP)&&0===a.csoundPerformKsmps(h);)1===Atomics.load(g,AUDIO_STATE$$module$src$constants.IS_PAUSED)&&(d(),Atomics.wait(g,AUDIO_STATE$$module$src$constants.IS_PAUSED,0),e()),1===Atomics.compareExchange(g,AUDIO_STATE$$module$src$constants.HAS_PENDING_CALLBACKS,1,0)&&await new Promise(k=>{pollPromise$$module$src$workers$sab_worker=k;b()});Atomics.store(g,AUDIO_STATE$$module$src$constants.IS_RENDERING,0);f.broadcastPlayState("renderEnded");c()},initialize$$module$src$workers$sab_worker=\nasync({wasmDataURI:a,withPlugins:b=[],messagePort:c,callbackPort:d})=>{logSABWorker$$module$src$logger("initializing SABWorker and WASM")();const e=initMessagePort$$module$src$workers$sab_worker({port:c}),f=()=>d.postMessage("poll"),g=()=>d.postMessage("releaseStop"),h=()=>d.postMessage("releasePause"),k=()=>d.postMessage("releaseResumed");initCallbackReplyPort$$module$src$workers$sab_worker({port:d});const [l,n]=await $jscompDefaultExport$$module$src$module({wasmDataURI:a,withPlugins:b,messagePort:e});\nl.wasi=n;const m=$jscompDefaultExport$$module$src$libcsound(l);a=pipe$$module$node_modules$rambda$dist$rambda_mjs(assoc$$module$node_modules$rambda$dist$rambda_mjs("csoundStart",(p,q)=>handleCsoundStart$$module$src$workers$common_utils(e,m,n,sabCreateRealtimeAudioThread$$module$src$workers$sab_worker({libraryCsound:m,callbacksRequest:f,wasm:l,workerMessagePort:e,releaseStop:g,releasePause:h,releaseResumed:k}),renderFunction$$module$src$workers$sab_worker({libraryCsound:m,callbacksRequest:f,workerMessagePort:e,\nwasi:n,releaseStop:g,releasePause:h,releaseResumed:k}))(q)),assoc$$module$node_modules$rambda$dist$rambda_mjs("wasm",l))(m);combined$$module$src$workers$sab_worker=new Map(Object.entries(a));m.csoundInitialize(0);return m.csoundCreate()},sabWorker$$module$src$workers$sab_worker={initialize:initialize$$module$src$workers$sab_worker,callUncloned:callUncloned$$module$src$workers$sab_worker};\nexpose$$module$node_modules$comlink$dist$esm$comlink_mjs({initialize:sabWorker$$module$src$workers$sab_worker.initialize,callUncloned:sabWorker$$module$src$workers$sab_worker.callUncloned});var module$src$workers$sab_worker={};module$src$workers$sab_worker.sabWorker=sabWorker$$module$src$workers$sab_worker;}).call(this);\n//# sourceMappingURL=__compiled.sab.worker.js.map\n'])),
+module$dist$__compiled_sab_worker_inline={};module$dist$__compiled_sab_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_sab_worker_inline;class SharedArrayBufferMainThread$$module$src$mains$sab_main{constructor({audioContext:a,audioWorker:b,audioContextIsProvided:c,inputChannelCount:d,outputChannelCount:e}){this.hasSharedArrayBuffer=!0;this.ipcMessagePorts=new IPCMessagePorts$$module$src$mains$messages_main;this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.publicEvents=new PublicEventAPI$$module$src$events(this);b.ipcMessagePorts=this.ipcMessagePorts;this.audioContextIsProvided=c;this.audioWorker=b;this.audioWorker.onPlayStateChange=
+this.audioWorker.onPlayStateChange.bind(b);this.currentPlayState=this.csoundInstance=void 0;this.currentDerivedPlayState="stop";this.exportApi={};this.callbackId=0;this.callbackBuffer={};this.audioStateBuffer=new SharedArrayBuffer(initialSharedState$$module$src$constants.length*Int32Array.BYTES_PER_ELEMENT);this.audioStatePointer=new Int32Array(this.audioStateBuffer);c&&Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.SAMPLE_RATE,a.sampleRate);d&&Atomics.store(this.audioStatePointer,
+AUDIO_STATE$$module$src$constants.NCHNLS_I,d);e&&Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.NCHNLS,e);this.audioStreamIn=new SharedArrayBuffer(MAX_CHANNELS$$module$src$constants*RING_BUFFER_SIZE$$module$src$constants*Float64Array.BYTES_PER_ELEMENT);this.audioStreamOut=new SharedArrayBuffer(MAX_CHANNELS$$module$src$constants*RING_BUFFER_SIZE$$module$src$constants*Float64Array.BYTES_PER_ELEMENT);this.midiBufferSAB=new SharedArrayBuffer(MIDI_BUFFER_SIZE$$module$src$constants*
+MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants*Int32Array.BYTES_PER_ELEMENT);this.midiBuffer=new Int32Array(this.midiBufferSAB);this.onPlayStateChange=this.onPlayStateChange.bind(this);this.prepareRealtimePerformance=this.prepareRealtimePerformance.bind(this);logSABMain$$module$src$logger("SharedArrayBufferMainThread got constructed")()}async terminateInstance(){this.csoundWorker&&(this.csoundWorker.terminate(),delete this.csoundWorker);this.audioWorker&&this.audioWorker.terminateInstance&&(await this.audioWorker.terminateInstance(),
+delete this.audioWorker.terminateInstance);this.proxyPort&&(this.proxyPort[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),delete this.proxyPort);this.publicEvents&&this.publicEvents.terminateInstance();Object.keys(this.exportApi).forEach(a=>delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}get api(){return this.exportApi}handleMidiInput({data:[a,b,c]}){var d=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS);const e=Atomics.load(this.audioStatePointer,
+AUDIO_STATE$$module$src$constants.RTMIDI_INDEX);d=(d*MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants+e)%MIDI_BUFFER_SIZE$$module$src$constants;Atomics.store(this.midiBuffer,d,a);Atomics.store(this.midiBuffer,d+1,b);Atomics.store(this.midiBuffer,d+2,c);Atomics.add(this.audioStatePointer,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS,1)}async csoundPause(){if(this.eventPromises.isWaiting("pause"))return-1;this.eventPromises.createPausePromise();Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED,
+1);await this.eventPromises.waitForPause();this.onPlayStateChange("realtimePerformancePaused");return 0}async csoundResume(){1===Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED)&&1!==Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.STOP)&&1===Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PERFORMING)&&(Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED,0),Atomics.notify(this.audioStatePointer,
+AUDIO_STATE$$module$src$constants.IS_PAUSED),this.onPlayStateChange("realtimePerformanceResumed"))}async onPlayStateChange(a){if(void 0===this)console.log("Failed to announce playstatechange",a);else if(this.currentPlayState=a,this.publicEvents&&a){switch(a){case "realtimePerformanceStarted":logSABMain$$module$src$logger("event: realtimePerformanceStarted received, proceeding to call prepareRealtimePerformance")();try{await this.prepareRealtimePerformance()}catch(b){console.error(b)}break;case "realtimePerformanceEnded":this.eventPromises.createStopPromise();
+Object.values(this.callbackBuffer).forEach(({argumentz:b,apiKey:c,resolveCallback:d})=>this.proxyPort.callUncloned(c,b).then(d));this.callbackBuffer={};logSABMain$$module$src$logger("event: realtimePerformanceEnded received, beginning cleanup")();initialSharedState$$module$src$constants.forEach((b,c)=>{Atomics.store(this.audioStatePointer,c,b)});break;case "renderStarted":this.publicEvents.triggerRenderStarted(this);this.eventPromises.releaseStartPromise();break;case "renderEnded":logSABMain$$module$src$logger("event: renderEnded received, beginning cleanup")(),
+this.publicEvents.triggerRenderEnded(this),this.eventPromises&&this.eventPromises.releaseStopPromise()}try{await this.audioWorker.onPlayStateChange(a)}catch(b){console.error(b)}}}async prepareRealtimePerformance(){logSABMain$$module$src$logger("prepareRealtimePerformance")();const a=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.NCHNLS),b=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.NCHNLS_I);this.audioWorker.isRequestingInput=Atomics.load(this.audioStatePointer,
+AUDIO_STATE$$module$src$constants.IS_REQUESTING_MIC);this.audioWorker.isRequestingMidi=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_REQUESTING_RTMIDI);const c=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.KSMPS),d=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.SAMPLE_RATE);this.audioWorker.ksmps=c;this.audioWorker.sampleRate=d;this.audioWorker.inputCount=b;this.audioWorker.outputsCount=a}async initialize({wasmDataURI:a,withPlugins:b}){b&&
+!isEmpty$$module$node_modules$rambda$dist$rambda_mjs(b)&&(b=await fetchPlugins$$module$src$utils(b));logSABMain$$module$src$logger("initialization: instantiate the SABWorker Thread")();const c=new Worker($jscompDefaultExport$$module$dist$__compiled_sab_worker_inline());this.csoundWorker=c;const d=this.audioStateBuffer,e=this.audioStatePointer,f=this.audioStreamIn,g=this.audioStreamOut,h=this.midiBuffer;logSABMain$$module$src$logger("providing the audioWorker a pointer to SABMain's instance")();this.audioWorker.csoundWorkerMain=
+this;logSABMain$$module$src$logger("adding message eventListeners for mainMessagePort and mainMessagePortAudio")();this.ipcMessagePorts.mainMessagePort.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePort.start();this.ipcMessagePorts.mainMessagePortAudio.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePortAudio.start();logSABMain$$module$src$logger("(postMessage) making a message channel from SABMain to SABWorker via workerMessagePort")();
+this.ipcMessagePorts.sabMainCallbackReply.addEventListener("message",m=>{switch(m.data){case "poll":this.ipcMessagePorts&&this.ipcMessagePorts.sabMainCallbackReply.postMessage(Object.keys(this.callbackBuffer).map(l=>({id:l,apiKey:this.callbackBuffer[l].apiKey,argumentz:this.callbackBuffer[l].argumentz})));break;case "releaseStop":this.onPlayStateChange("renderStarted"===this.currentPlayState?"renderEnded":"realtimePerformanceEnded");this.publicEvents&&this.publicEvents.triggerRealtimePerformanceEnded(this);
+this.eventPromises&&this.eventPromises.releaseStopPromise();break;case "releasePause":this.publicEvents.triggerRealtimePerformancePaused(this);this.eventPromises.releasePausePromise();break;case "releaseResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);this.eventPromises.releaseResumePromise();break;default:m.data.forEach(({id:l,answer:p})=>{this.callbackBuffer[l].resolveCallback(p);delete this.callbackBuffer[l]})}});this.ipcMessagePorts.sabMainCallbackReply.start();const k=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(c);
+a=a();this.proxyPort=k;const n=await k.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({wasmDataURI:a,wasmTransformerDataURI:this.wasmTransformerDataURI,messagePort:this.ipcMessagePorts.workerMessagePort,callbackPort:this.ipcMessagePorts.sabWorkerCallbackReply,withPlugins:b},[a,this.ipcMessagePorts.workerMessagePort,this.ipcMessagePorts.sabWorkerCallbackReply]));this.csoundInstance=n;this.ipcMessagePorts.mainMessagePort.start();this.ipcMessagePorts.mainMessagePortAudio.start();
+logSABMain$$module$src$logger("A proxy port from SABMain to SABWorker established")();this.exportApi.pause=this.csoundPause.bind(this);this.exportApi.resume=this.csoundResume.bind(this);this.exportApi.terminateInstance=this.terminateInstance.bind(this);this.exportApi.enableAudioInput=()=>console.warn("enableAudioInput was ignored: please use -iadc option before calling start with useWorker=true");this.exportApi.getNode=async()=>{const m=this.audioWorker.audioWorkletNode;return m?m:await new Promise(l=>
+{this.exportApi.once("onAudioNodeCreated",l)})};this.exportApi.getAudioContext=async()=>this.audioWorker.audioContext;this.exportApi=this.publicEvents.decorateAPI(this.exportApi);this.exportApi.addListener("message",console.log);for(const m of Object.keys(api$$module$src$libcsound)){const l=makeProxyCallback$$module$src$utils(k,n,m,this.currentPlayState),p=api$$module$src$libcsound[m];switch(m){case "csoundCreate":break;case "csoundStart":b=async function(){if(!n||"number"!==typeof n)return console.error("starting csound failed because csound instance wasn't created"),
+-1;if(this.eventPromises.isWaiting("start"))return-1;this.eventPromises.createStartPromise();const q=await l({audioStateBuffer:d,audioStreamIn:f,audioStreamOut:g,midiBuffer:h,csound:n});await this.eventPromises.waitForStart();this.ipcMessagePorts&&this.ipcMessagePorts.sabMainCallbackReply.postMessage({unlock:!0});return q};b.toString=()=>p.toString();this.exportApi.start=b.bind(this);break;case "csoundStop":b=async()=>{logSABMain$$module$src$logger(["Checking if it's safe to call stop:",stopableStates$$module$src$utils.has(this.currentPlayState),
+"currentPlayState is",this.currentPlayState].join("\n"))();return this.eventPromises.isWaiting("stop")?(logSABMain$$module$src$logger("already waiting to stop, doing nothing")(),-1):stopableStates$$module$src$utils.has(this.currentPlayState)?(logSABMain$$module$src$logger("Marking SAB's state to STOP")(),this.eventPromises.createStopPromise(),Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.STOP,1),logSABMain$$module$src$logger("Marking that performance is not running anymore (stops the audio too)")(),
+Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PERFORMING,0),"realtimePerformancePaused"===this.currentPlayState&&(Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED,0),Atomics.notify(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED)),"renderStarted"!==this.currentPlayState&&!Atomics.compareExchange(this.audioStatePointer,AUDIO_STATE$$module$src$constants.CSOUND_LOCK,0,1)&&Atomics.notify(this.audioStatePointer,AUDIO_STATE$$module$src$constants.CSOUND_LOCK),
+await this.eventPromises.waitForStop(),0):-1};this.exportApi.stop=b.bind(this);b.toString=()=>p.toString();break;case "csoundReset":b=async()=>{if(this.currentPlayState){if(this.eventPromises.isWaiting("reset"))return-1;stopableStates$$module$src$utils.has(this.currentPlayState)&&await this.exportApi.stop();this.ipcMessagePorts.restartAudioWorkerPorts();this.audioContextIsProvided||(await this.audioWorker.terminateInstance(),delete this.audioWorker.audioContext);return await l([])}};this.exportApi.reset=
+b.bind(this);b.toString=()=>p.toString();break;case "csoundPushMidiMessage":b=async(q=0,u=0,t=0)=>{this.handleMidiInput({data:[q,u,t]})};this.exportApi.midiMessage=b.bind(this);b.toString=()=>p.toString();break;case "fs":this.exportApi.fs={};Object.keys(p).forEach(q=>{const u=makeProxyCallback$$module$src$utils(k,n,q,this.currentPlayState);u.toString=()=>p[q].toString();this.exportApi.fs[q]=u});break;default:b=async(...q)=>{if("realtimePerformanceStarted"===this.currentPlayState||"renderStarted"===
+this.currentPlayState||this.eventPromises.isWaitingToStart()){const u=this.callbackId;this.callbackId+=1;const t=new Promise((x,r)=>{const y=setTimeout(()=>r(Error(`Worker timed out so ${csoundApiRename$$module$src$utils(m)}() wasn't called!`)),1E4);this.callbackBuffer[u]={resolveCallback:v=>{clearTimeout(y);x(v)},apiKey:m,argumentz:[n,...q]}});Atomics.compareExchange(e,AUDIO_STATE$$module$src$constants.HAS_PENDING_CALLBACKS,0,1);return await t}return await l.apply(void 0,q)},b.toString=()=>p.toString(),
+this.exportApi[csoundApiRename$$module$src$utils(m)]=b}}logSABMain$$module$src$logger("PUBLIC API Generated and stored")()}}var $jscompDefaultExport$$module$src$mains$sab_main=SharedArrayBufferMainThread$$module$src$mains$sab_main,module$src$mains$sab_main={};module$src$mains$sab_main.default=$jscompDefaultExport$$module$src$mains$sab_main;async function requestMidi$$module$src$utils$request_midi({onMidiMessage:a}){logMidiRequest$$module$src$logger("requesting for web-midi connection")();if(navigator&&navigator.requestMIDIAccess)try{const b=await navigator.requestMIDIAccess();if(b.inputs){const c=b.inputs.values();for(let d=c.next();d&&!d.done;d=c.next())logMidiRequest$$module$src$logger(`Connecting midi-input: ${d.value.name||"unkown"}`)(),d.value.onmidimessage=a}else logMidiRequest$$module$src$logger("no midi-device detected")()}catch(b){logMidiRequest$$module$src$logger("error while connecting web-midi: "+
+b)()}else logMidiRequest$$module$src$logger("no web-midi support found, midi-input will not work!")()}var module$src$utils$request_midi={};module$src$utils$request_midi.requestMidi=requestMidi$$module$src$utils$request_midi;var $jscompDefaultExport$$module$dist$__compiled_worklet_worker_inline=()=>"data:application/javascript;base64,bGV0IHNlbGYgPSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmO2dvb2cuZXhwb3J0UGF0aF89ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnNwbGl0KCIuIik7ZD1kfHxnb29nLmdsb2JhbDthWzBdaW4gZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkLmV4ZWNTY3JpcHR8fGQuZXhlY1NjcmlwdCgidmFyICIrYVswXSk7Zm9yKHZhciBlO2EubGVuZ3RoJiYoZT1hLnNoaWZ0KCkpOylpZihhLmxlbmd0aHx8dm9pZCAwPT09YilkPWRbZV0mJmRbZV0hPT1PYmplY3QucHJvdG90eXBlW2VdP2RbZV06ZFtlXT17fTtlbHNlIGlmKCFjJiZnb29nLmlzT2JqZWN0KGIpJiZnb29nLmlzT2JqZWN0KGRbZV0pKWZvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJihkW2VdW2ZdPWJbZl0pO2Vsc2UgZFtlXT1ifTsKZ29vZy5kZWZpbmU9ZnVuY3Rpb24oYSxiKXtpZighQ09NUElMRUQpe3ZhciBjPWdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTLGQ9Z29vZy5nbG9iYWwuQ0xPU1VSRV9ERUZJTkVTO2MmJnZvaWQgMD09PWMubm9kZVR5cGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpP2I9Y1thXTpkJiZ2b2lkIDA9PT1kLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxhKSYmKGI9ZFthXSl9cmV0dXJuIGJ9O2dvb2cuRkVBVFVSRVNFVF9ZRUFSPTIwMjA7Z29vZy5ERUJVRz0hMDtnb29nLkxPQ0FMRT0iZW4iO2dvb2cuZ2V0TG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuTE9DQUxFfTtnb29nLlRSVVNURURfU0lURT0hMDtnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRztnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITE7Cmdvb2cucHJvdmlkZT1mdW5jdGlvbihhKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuIik7aWYoIUNPTVBJTEVEJiZnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhhKX07Z29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGEsYixjKXtpZighQ09NUElMRUQpe2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV07Zm9yKHZhciBkPWE7KGQ9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIuIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGQpOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZF09ITB9Z29vZy5leHBvcnRQYXRoXyhhLGIsYyl9O2dvb2cuTk9OQ0VfUEFUVEVSTl89L15bXHcrL18tXStbPV17MCwyfSQvOwpnb29nLmdldFNjcmlwdE5vbmNlXz1mdW5jdGlvbihhKXthPShhfHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yJiZhLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKSkmJihhPWEubm9uY2V8fGEuZ2V0QXR0cmlidXRlKCJub25jZSIpKSYmZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KGEpP2E6IiJ9O2dvb2cuVkFMSURfTU9EVUxFX1JFXz0vXlthLXpBLVpfJF1bYS16QS1aMC05Ll8kXSokLzsKZ29vZy5tb2R1bGU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPT10eXBlb2YgYXx8IWF8fC0xPT1hLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pKXRocm93IEVycm9yKCJJbnZhbGlkIG1vZHVsZSBpZGVudGlmaWVyIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoIk1vZHVsZSAiK2ErIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS4iKTtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLiIpOwpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lPWE7aWYoIUNPTVBJTEVEKXtpZihnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV19fTtnb29nLm1vZHVsZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cubW9kdWxlLmdldEludGVybmFsXyhhKX07Z29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXJldHVybiBnb29nLmxvYWRlZE1vZHVsZXNfW2FdLmV4cG9ydHM7aWYoIWdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1thXSlyZXR1cm4gYT1nb29nLmdldE9iamVjdEJ5TmFtZShhKSxudWxsIT1hP2E6bnVsbH1yZXR1cm4gbnVsbH07Z29vZy5Nb2R1bGVUeXBlPXtFUzY6ImVzNiIsR09PRzoiZ29vZyJ9O2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7Cmdvb2cuaXNJbk1vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKXx8Z29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXygpfTtnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe3JldHVybiEhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5HT09HfTtnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5FUzYpcmV0dXJuITA7dmFyIGE9Z29vZy5nbG9iYWwuJGpzY29tcDtyZXR1cm4gYT8iZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRDdXJyZW50TW9kdWxlUGF0aD8hMTohIWEuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTohMX07Cmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ZnVuY3Rpb24oKXtpZighQ09NUElMRUQmJiFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGUiKTtpZighQ09NUElMRUQmJiFnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlLiIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9Owpnb29nLmRlY2xhcmVNb2R1bGVJZD1mdW5jdGlvbihhKXtpZighQ09NUElMRUQpe2lmKCFnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuIik7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGV4aXN0cy4nKTt9aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8pZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZT1hO2Vsc2V7dmFyIGI9Z29vZy5nbG9iYWwuJGpzY29tcDtpZighYnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGIuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSAiJysKYSsnIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuJyk7Yj1iLnJlcXVpcmUoYi5nZXRDdXJyZW50TW9kdWxlUGF0aCgpKTtnb29nLmxvYWRlZE1vZHVsZXNfW2FdPXtleHBvcnRzOmIsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmF9fX07Z29vZy5zZXRUZXN0T25seT1mdW5jdGlvbihhKXtpZihnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFKXRocm93IGE9YXx8IiIsRXJyb3IoIkltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCIrKGE/IjogIithOiIuIikpO307Z29vZy5mb3J3YXJkRGVjbGFyZT1mdW5jdGlvbihhKXt9O0NPTVBJTEVEfHwoZ29vZy5pc1Byb3ZpZGVkXz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNffHwhZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2FdJiZudWxsIT1nb29nLmdldE9iamVjdEJ5TmFtZShhKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXsiZ29vZy5tb2R1bGUiOiEwfSk7Cmdvb2cuZ2V0T2JqZWN0QnlOYW1lPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxnb29nLmdsb2JhbDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sbnVsbD09YilyZXR1cm4gbnVsbDtyZXR1cm4gYn07Z29vZy5hZGREZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQpeyFDT01QSUxFRCYmZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCYmZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShhLGIsYyxkKX07Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSPSEwO2dvb2cubG9nVG9Db25zb2xlXz1mdW5jdGlvbihhKXtnb29nLmdsb2JhbC5jb25zb2xlJiZnb29nLmdsb2JhbC5jb25zb2xlLmVycm9yKGEpfTsKZ29vZy5yZXF1aXJlPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSJiZnb29nLmRlYnVnTG9hZGVyXy5yZXF1ZXN0ZWQoYSk7aWYoZ29vZy5pc1Byb3ZpZGVkXyhhKSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXJldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oYSl9ZWxzZSBpZihnb29nLkVOQUJMRV9ERUJVR19MT0FERVIpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7dHJ5e2dvb2cuZGVidWdMb2FkZXJfLmxvYWRfKGEpfWZpbmFsbHl7Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89Yn19cmV0dXJuIG51bGx9fTtnb29nLnJlcXVpcmVUeXBlPWZ1bmN0aW9uKGEpe3JldHVybnt9fTtnb29nLmJhc2VQYXRoPSIiO2dvb2cuYWJzdHJhY3RNZXRob2Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigidW5pbXBsZW1lbnRlZCBhYnN0cmFjdCBtZXRob2QiKTt9Owpnb29nLmFkZFNpbmdsZXRvbkdldHRlcj1mdW5jdGlvbihhKXthLmluc3RhbmNlXz12b2lkIDA7YS5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe2lmKGEuaW5zdGFuY2VfKXJldHVybiBhLmluc3RhbmNlXztnb29nLkRFQlVHJiYoZ29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zX1tnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfLmxlbmd0aF09YSk7cmV0dXJuIGEuaW5zdGFuY2VfPW5ldyBhfX07Z29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zXz1bXTtnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUw9ITA7Z29vZy5TRUFMX01PRFVMRV9FWFBPUlRTPWdvb2cuREVCVUc7Z29vZy5sb2FkZWRNb2R1bGVzXz17fTtnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEPSFDT01QSUxFRCYmZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSO2dvb2cuVFJBTlNQSUxFPSJkZXRlY3QiO2dvb2cuQVNTVU1FX0VTX01PRFVMRVNfVFJBTlNQSUxFRD0hMTtnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU9Imdvb2ciOwpnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbDsKZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZToiIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExLHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkdPT0d9O3ZhciBjPXt9LGQ9YztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpZD1hLmNhbGwodm9pZCAwLGQpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSlkPWdvb2cubG9hZE1vZHVsZUZyb21Tb3VyY2VfLmNhbGwodm9pZCAwLGQsYSk7ZWxzZSB0aHJvdyBFcnJvcigiSW52YWxpZCBtb2R1bGUgZGVmaW5pdGlvbiIpO3ZhciBlPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7aWYoInN0cmluZyI9PT10eXBlb2YgZSYmZSlnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlLGQsYyE9PWQpOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmCk9iamVjdC5zZWFsJiYib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJk9iamVjdC5zZWFsKGQpLGdvb2cubG9hZGVkTW9kdWxlc19bZV09e2V4cG9ydHM6ZCx0eXBlOmdvb2cuTW9kdWxlVHlwZS5HT09HLG1vZHVsZUlkOmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWV9O2Vsc2UgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIG5hbWUgIicrZSsnIicpO31maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPWJ9fTtnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhLGIpe2V2YWwoZ29vZy5DTE9TVVJFX0VWQUxfUFJFRklMVEVSXy5jcmVhdGVTY3JpcHQoYikpO3JldHVybiBhfTtnb29nLm5vcm1hbGl6ZVBhdGhfPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLyIpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KSIuIj09YVtiXT9hLnNwbGljZShiLDEpOmImJiIuLiI9PWFbYl0mJmFbYi0xXSYmIi4uIiE9YVtiLTFdP2Euc3BsaWNlKC0tYiwyKTpiKys7cmV0dXJuIGEuam9pbigiLyIpfTsKZ29vZy5sb2FkRmlsZVN5bmNfPWZ1bmN0aW9uKGEpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMpcmV0dXJuIGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMoYSk7dHJ5e3ZhciBiPW5ldyBnb29nLmdsb2JhbC5YTUxIdHRwUmVxdWVzdDtiLm9wZW4oImdldCIsYSwhMSk7Yi5zZW5kKCk7cmV0dXJuIDA9PWIuc3RhdHVzfHwyMDA9PWIuc3RhdHVzP2IucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtnb29nLnR5cGVPZj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0IiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtnb29nLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO3JldHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RofTsKZ29vZy5pc0RhdGVMaWtlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmlzT2JqZWN0KGEpJiYiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRGdWxsWWVhcn07Z29vZy5pc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0Ij09YiYmbnVsbCE9YXx8ImZ1bmN0aW9uIj09Yn07Z29vZy5nZXRVaWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGdvb2cuVUlEX1BST1BFUlRZXykmJmFbZ29vZy5VSURfUFJPUEVSVFlfXXx8KGFbZ29vZy5VSURfUFJPUEVSVFlfXT0rK2dvb2cudWlkQ291bnRlcl8pfTtnb29nLmhhc1VpZD1mdW5jdGlvbihhKXtyZXR1cm4hIWFbZ29vZy5VSURfUFJPUEVSVFlfXX07Z29vZy5yZW1vdmVVaWQ9ZnVuY3Rpb24oYSl7bnVsbCE9PWEmJiJyZW1vdmVBdHRyaWJ1dGUiaW4gYSYmYS5yZW1vdmVBdHRyaWJ1dGUoZ29vZy5VSURfUFJPUEVSVFlfKTt0cnl7ZGVsZXRlIGFbZ29vZy5VSURfUFJPUEVSVFlfXX1jYXRjaChiKXt9fTsKZ29vZy5VSURfUFJPUEVSVFlfPSJjbG9zdXJlX3VpZF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO2dvb2cudWlkQ291bnRlcl89MDtnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO2lmKCJvYmplY3QiPT1ifHwiYXJyYXkiPT1iKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEuY2xvbmUpcmV0dXJuIGEuY2xvbmUoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBNYXAmJmEgaW5zdGFuY2VvZiBNYXApcmV0dXJuIG5ldyBNYXAoYSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZhIGluc3RhbmNlb2YgU2V0KXJldHVybiBuZXcgU2V0KGEpO2I9ImFycmF5Ij09Yj9bXTp7fTtmb3IodmFyIGMgaW4gYSliW2NdPWdvb2cuY2xvbmVPYmplY3QoYVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGF9O2dvb2cuYmluZE5hdGl2ZV89ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9Owpnb29nLmJpbmRKc189ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O2dvb2cuYmluZD1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIik/Z29vZy5iaW5kPWdvb2cuYmluZE5hdGl2ZV86Z29vZy5iaW5kPWdvb2cuYmluZEpzXztyZXR1cm4gZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Cmdvb2cucGFydGlhbD1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Z29vZy5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07Z29vZy5nbG9iYWxFdmFsPWZ1bmN0aW9uKGEpeygwLGV2YWwpKGEpfTsKZ29vZy5nZXRDc3NOYW1lPWZ1bmN0aW9uKGEsYil7aWYoIi4iPT1TdHJpbmcoYSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4gWW91IHBhc3NlZDogJythKTt2YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bZV18fGV9LGQ9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCItIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoO2crKylmLnB1c2goYyhlW2ddKSk7cmV0dXJuIGYuam9pbigiLSIpfTtkPWdvb2cuY3NzTmFtZU1hcHBpbmdfPyJCWV9XSE9MRSI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/YzpkOmZ1bmN0aW9uKGUpe3JldHVybiBlfTthPWI/YSsiLSIrZChiKTpkKGEpO3JldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTj9nb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTihhKTphfTsKZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihhLGIpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWE7Z29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz1ifTshQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyk7Z29vZy5HZXRNc2dPcHRpb25zPWZ1bmN0aW9uKCl7fTsKZ29vZy5nZXRNc2c9ZnVuY3Rpb24oYSxiLGMpe2MmJmMuaHRtbCYmKGE9YS5yZXBsYWNlKC88L2csIiZsdDsiKSk7YyYmYy51bmVzY2FwZUh0bWxFbnRpdGllcyYmKGE9YS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyZxdW90Oy9nLCciJykucmVwbGFjZSgvJmFtcDsvZywiJiIpKTtiJiYoYT1hLnJlcGxhY2UoL1x7XCQoW159XSspfS9nLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIG51bGwhPWImJmUgaW4gYj9iW2VdOmR9KSk7cmV0dXJuIGF9O2dvb2cuZ2V0TXNnV2l0aEZhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZXhwb3J0U3ltYm9sPWZ1bmN0aW9uKGEsYixjKXtnb29nLmV4cG9ydFBhdGhfKGEsYiwhMCxjKX07Z29vZy5leHBvcnRQcm9wZXJ0eT1mdW5jdGlvbihhLGIsYyl7YVtiXT1jfTsKZ29vZy5pbmhlcml0cz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5zdXBlckNsYXNzXz1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuYmFzZT1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O2dvb2cuc2NvcGU9ZnVuY3Rpb24oYSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLiIpO2EuY2FsbChnb29nLmdsb2JhbCl9O0NPTVBJTEVEfHwoZ29vZy5nbG9iYWwuQ09NUElMRUQ9Q09NUElMRUQpOwpnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jb25zdHJ1Y3RvcixkPWIuc3RhdGljcztjJiZjIT1PYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yfHwoYz1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4iKTt9KTtjPWdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXyhjLGEpO2EmJmdvb2cuaW5oZXJpdHMoYyxhKTtkZWxldGUgYi5jb25zdHJ1Y3RvcjtkZWxldGUgYi5zdGF0aWNzO2dvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjLnByb3RvdHlwZSxiKTtudWxsIT1kJiYoZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoYyk6Z29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGMsZCkpO3JldHVybiBjfTtnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTPWdvb2cuREVCVUc7Cmdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTP2Z1bmN0aW9uKCl7dmFyIGM9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7Y1tnb29nLlVJRF9QUk9QRVJUWV9dPWNbZ29vZy5VSURfUFJPUEVSVFlfXTtyZXR1cm4gY306YX07Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU189ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYykmJihhW2NdPWJbY10pO2Zvcih2YXIgZD0wO2Q8Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO2QrKyljPWdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2RdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGMpJiYoYVtjXT1iW2NdKX07Z29vZy5pZGVudGl0eV89ZnVuY3Rpb24oYSl7cmV0dXJuIGF9Owpnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzO2lmKCFjfHwhYy5jcmVhdGVQb2xpY3kpcmV0dXJuIGI7dHJ5e2I9Yy5jcmVhdGVQb2xpY3koYSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlffSl9Y2F0Y2goZCl7Z29vZy5sb2dUb0NvbnNvbGVfKGQubWVzc2FnZSl9cmV0dXJuIGJ9OwohQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmlzRWRnZV89ZnVuY3Rpb24oKXtyZXR1cm4hIShnb29nLmdsb2JhbC5uYXZpZ2F0b3ImJmdvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ/Z29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudDoiIikubWF0Y2goL0VkZ2VcLyhcZCspKFwuXGQpKi9pKX0sZ29vZy5pbkh0bWxEb2N1bWVudF89ZnVuY3Rpb24oKXt2YXIgYT1nb29nLmdsb2JhbC5kb2N1bWVudDtyZXR1cm4gbnVsbCE9YSYmIndyaXRlImluIGF9LGdvb2cuaXNEb2N1bWVudExvYWRpbmdfPWZ1bmN0aW9uKCl7dmFyIGE9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7cmV0dXJuIGEuYXR0YWNoRXZlbnQ/ImNvbXBsZXRlIiE9YS5yZWFkeVN0YXRlOiJsb2FkaW5nIj09YS5yZWFkeVN0YXRlfSxnb29nLmZpbmRCYXNlUGF0aF89ZnVuY3Rpb24oKXtpZih2b2lkIDAhPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIJiYic3RyaW5nIj09PXR5cGVvZiBnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSClnb29nLmJhc2VQYXRoPQpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50LGI9YS5jdXJyZW50U2NyaXB0O2E9Yj9bYl06YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiU0NSSVBUIik7Zm9yKGI9YS5sZW5ndGgtMTswPD1iOy0tYil7dmFyIGM9YVtiXS5zcmMsZD1jLmxhc3RJbmRleE9mKCI/Iik7ZD0tMT09ZD9jLmxlbmd0aDpkO2lmKCJiYXNlLmpzIj09Yy5zbGljZShkLTcsZCkpe2dvb2cuYmFzZVBhdGg9Yy5zbGljZSgwLGQtNyk7YnJlYWt9fX19LGdvb2cuZmluZEJhc2VQYXRoXygpLGdvb2cucHJvdGVjdFNjcmlwdFRhZ189ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvPFwvKFNDUklQVCkvaWcsIlxceDNjLyQxIil9LGdvb2cuRGVidWdMb2FkZXJfPWZ1bmN0aW9uKCl7dGhpcy5kZXBlbmRlbmNpZXNfPXt9O3RoaXMuaWRUb1BhdGhfPXt9O3RoaXMud3JpdHRlbl89e307dGhpcy5sb2FkaW5nRGVwc189CltdO3RoaXMuZGVwc1RvTG9hZF89W107dGhpcy5wYXVzZWRfPSExO3RoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3Rvcnk7dGhpcy5kZWZlcnJlZENhbGxiYWNrc189e307dGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtkJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChkLDApLGQ9bnVsbCl9dmFyIGQ9YjtpZihhLmxlbmd0aCl7Yj1bXTtmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGFbZV0pO2lmKCFmKXRocm93IEVycm9yKCJVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICIrYVtlXSk7Yi5wdXNoKHRoaXMuZGVwZW5kZW5jaWVzX1tmXSl9Zj1nb29nLnJlcXVpcmU7dmFyIGc9MDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKWYoYVtlXSksYltlXS5vbkxvYWQoZnVuY3Rpb24oKXsrK2c9PWEubGVuZ3RoJiZjKCl9KX1lbHNlIGMoKX0sCmdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCsiZGVwcy5qcyIpLCJkZXBzLmpzIixbXSxbXSx7fSkpO3RoaXMubG9hZERlcHNfKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5yZXF1ZXN0ZWQ9ZnVuY3Rpb24oYSxiKXsoYT10aGlzLmdldFBhdGhGcm9tRGVwc18oYSkpJiYoYnx8dGhpcy5hcmVEZXBzTG9hZGVkXyh0aGlzLmRlcGVuZGVuY2llc19bYV0ucmVxdWlyZXMpKSYmKGI9dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bYV0pJiYoZGVsZXRlIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2FdLGIoKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5zZXREZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihhKXt0aGlzLmZhY3RvcnlfPWF9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkXz0KZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRQYXRoRnJvbURlcHNfKGEpKXt2YXIgYj10aGlzLGM9W10sZD1mdW5jdGlvbihlKXt2YXIgZj1iLmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIWYpdGhyb3cgRXJyb3IoIkJhZCBkZXBlbmRlbmN5IHBhdGggb3Igc3ltYm9sOiAiK2UpO2lmKCFiLndyaXR0ZW5fW2ZdKXtiLndyaXR0ZW5fW2ZdPSEwO2U9Yi5kZXBlbmRlbmNpZXNfW2ZdO2ZvcihmPTA7ZjxlLnJlcXVpcmVzLmxlbmd0aDtmKyspZ29vZy5pc1Byb3ZpZGVkXyhlLnJlcXVpcmVzW2ZdKXx8ZChlLnJlcXVpcmVzW2ZdKTtjLnB1c2goZSl9fTtkKGEpO2E9ISF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aDt0aGlzLmRlcHNUb0xvYWRfPXRoaXMuZGVwc1RvTG9hZF8uY29uY2F0KGMpO3RoaXMucGF1c2VkX3x8YXx8dGhpcy5sb2FkRGVwc18oKX1lbHNlIGdvb2cubG9nVG9Db25zb2xlXygiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAiK2EpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPQpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9dGhpcy5wYXVzZWRfO3RoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoJiYhYjspKGZ1bmN0aW9uKCl7dmFyIGM9ITEsZD1hLmRlcHNUb0xvYWRfLnNoaWZ0KCksZT0hMTthLmxvYWRpbmdfKGQpO3ZhciBmPXtwYXVzZTpmdW5jdGlvbigpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7Yj0hMH0scmVzdW1lOmZ1bmN0aW9uKCl7Yz9hLnJlc3VtZV8oKTpiPSExfSxsb2FkZWQ6ZnVuY3Rpb24oKXtpZihlKXRocm93IEVycm9yKCJEb3VibGUgY2FsbCB0byBsb2FkZWQuIik7ZT0hMDthLmxvYWRlZF8oZCl9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIGc9W10saD0wO2g8YS5sb2FkaW5nRGVwc18ubGVuZ3RoO2grKylnLnB1c2goYS5sb2FkaW5nRGVwc19baF0pO3JldHVybiBnfSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihnKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTpnLAptb2R1bGVOYW1lOiIiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITF9fSxyZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoLGwpe2wmJihnb29nLmxvYWRlZE1vZHVsZXNfW2xdPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmx8fCIifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoKXtnb29nLmxvYWRlZE1vZHVsZXNfW2ddPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKGcpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciB3aXRoIGRlZmVyIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7YS5kZWZlcl8oZCxnKX0sYXJlRGVwc0xvYWRlZDpmdW5jdGlvbigpe3JldHVybiBhLmFyZURlcHNMb2FkZWRfKGQucmVxdWlyZXMpfX07CnRyeXtkLmxvYWQoZil9ZmluYWxseXtjPSEwfX0pKCk7YiYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihhKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGEpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDtiKyspaWYodGhpcy5sb2FkaW5nRGVwc19bYl09PWEpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZShiLDEpO2JyZWFrfWZvcihiPTA7Yjx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDtiKyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1tiXT09CmEucGF0aCl7dGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoYiwxKTticmVha31pZih0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg9PXRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoJiYhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgpZm9yKDt0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDspdGhpcy5yZXF1ZXN0ZWQodGhpcy5kZWZlcnJlZFF1ZXVlXy5zaGlmdCgpLCEwKTthLmxvYWRlZCgpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZF89ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhhW2JdKTtpZighY3x8IShjIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NffHxnb29nLmlzUHJvdmlkZWRfKGFbYl0pKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW4gdGhpcy5pZFRvUGF0aF8/CnRoaXMuaWRUb1BhdGhfW2FdOmEgaW4gdGhpcy5kZXBlbmRlbmNpZXNfP2E6bnVsbH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmRlZmVyXz1mdW5jdGlvbihhLGIpe3RoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2EucGF0aF09Yjt0aGlzLmRlZmVycmVkUXVldWVfLnB1c2goYS5wYXRoKX0sZ29vZy5Mb2FkQ29udHJvbGxlcj1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wZW5kaW5nPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuc2V0TW9kdWxlU3RhdGU9CmZ1bmN0aW9uKGEpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJNb2R1bGVTdGF0ZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24oYSl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkRlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnBhdGg9YTt0aGlzLnJlbGF0aXZlUGF0aD1iO3RoaXMucHJvdmlkZXM9Yzt0aGlzLnJlcXVpcmVzPWQ7dGhpcy5sb2FkRmxhZ3M9ZTt0aGlzLmxvYWRlZF89ITE7dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucGF0aCxiPWEuaW5kZXhPZigiOi8vIik7MDw9YiYmKGE9YS5zdWJzdHJpbmcoYiszKSxiPWEuaW5kZXhPZigiLyIpLDA8PWImJihhPWEuc3Vic3RyaW5nKGIrMSkpKTtyZXR1cm4gYX0sCmdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKGEpe3RoaXMubG9hZGVkXz9hKCk6dGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGEpfSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3RoaXMubG9hZGVkXz0hMDt2YXIgYT10aGlzLmxvYWRDYWxsYmFja3NfO3RoaXMubG9hZENhbGxiYWNrc189W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspYVtiXSgpfSxnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSExLGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF89e30sZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzIpO2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYl09YTtyZXR1cm4gYn0sZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oYSl7ZGVsZXRlIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYV19LApnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfPWZ1bmN0aW9uKGEsYil7aWYoYSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKXtmb3IodmFyIGM9Z29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1thXSxkPVtdLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWQucHVzaChhcmd1bWVudHNbZV0pO2MuYXBwbHkodm9pZCAwLGQpfWVsc2UgdGhyb3cgRXJyb3IoIkNhbGxiYWNrIGtleSAiK2ErIiBkb2VzIG5vdCBleGlzdCAod2FzIGJhc2UuanMgbG9hZGVkIG1vcmUgdGhhbiBvbmNlPykuIik7fSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpP2EubG9hZGVkKCk6YS5wYXVzZSgpO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGI9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7aWYoImNvbXBsZXRlIj09CmIucmVhZHlTdGF0ZSYmIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyl7aWYoL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSl7YS5sb2FkZWQoKTtyZXR1cm59dGhyb3cgRXJyb3IoJ0Nhbm5vdCB3cml0ZSAiJyt0aGlzLnBhdGgrJyIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpO312YXIgYz1nb29nLmdldFNjcmlwdE5vbmNlXygpO2lmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBkPWZ1bmN0aW9uKGgpe2gucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9aC5yZWFkeVN0YXRlP2gub25sb2FkPWQ6KGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGUpLGEubG9hZGVkKCkpfTt2YXIgZT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZCk7Yz1jPycgbm9uY2U9IicrYysnIic6IiI7dmFyIGY9JzxzY3JpcHQgc3JjPSInK3RoaXMucGF0aCsnIicrCmMrKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8/IiBkZWZlciI6IiIpKycgaWQ9InNjcmlwdC0nK2UrJyI+XHgzYy9zY3JpcHQ+JztmKz0iPHNjcmlwdCIrYysiPiI7Zj1nb29nLkRlcGVuZGVuY3kuZGVmZXJfP2YrKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NyaXB0LSIrZSsiJykub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgdGhpcyk7XG59O1xuIik6ZisoImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjcmlwdC0iK2UrIicpKTsiKTtmKz0iXHgzYy9zY3JpcHQ+IjtiLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoZik6Zil9ZWxzZXt2YXIgZz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2cuZGVmZXI9Z29vZy5EZXBlbmRlbmN5LmRlZmVyXztnLmFzeW5jPSExO2MmJihnLm5vbmNlPQpjKTtnLm9ubG9hZD1mdW5jdGlvbigpe2cub25sb2FkPW51bGw7YS5sb2FkZWQoKX07Zy5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoO2IuaGVhZC5hcHBlbmRDaGlsZChnKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oIkNhbm5vdCB1c2UgZGVmYXVsdCBkZWJ1ZyBsb2FkZXIgb3V0c2lkZSBvZiBIVE1MIGRvY3VtZW50cy4iKSwiZGVwcy5qcyI9PXRoaXMucmVsYXRpdmVQYXRoPyhnb29nLmxvZ1RvQ29uc29sZV8oIkNvbnNpZGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBUIGJlZm9yZSBsb2FkaW5nIGJhc2UuanMsIG9yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuIiksYS5sb2FkZWQoKSk6YS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGEsCmIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLkRlcGVuZGVuY3kpLGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGssbSl7dmFyIG49IiIscD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuPScgbm9uY2U9IicrcCsnIicpO2s9bT8nPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luJytuKyI+IittKyJceDNjL3NjcmlwdD4iOic8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInK2srJyInK24rIj5ceDNjL3NjcmlwdD4iO2Qud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChrKTprKX1mdW5jdGlvbiBjKGssbSl7dmFyIG49ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLmRlZmVyPSEwO24uYXN5bmM9ITE7bi50eXBlPSJtb2R1bGUiO24uc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsCiEwKTt2YXIgcD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuLm5vbmNlPXApO20/bi50ZXh0PWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdChtKTptOm4uc3JjPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTChrKTprO2QuaGVhZC5hcHBlbmRDaGlsZChuKX1pZihnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCk/YS5sb2FkZWQoKTphLnBhdXNlKCk7ZWxzZSBpZihnb29nLmluSHRtbERvY3VtZW50XygpKXt2YXIgZD1nb29nLmdsb2JhbC5kb2N1bWVudCxlPXRoaXM7aWYoZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSl7dmFyIGY9Yjtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2UgZj1jO3ZhciBnPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGcpOwphLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSk7Zih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrZysnIiknKTtmKHRoaXMucGF0aCx2b2lkIDApO3ZhciBoPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihrKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhoKTthLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyhlLnBhdGgsayxnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKX0pO2Yodm9pZCAwLCdpbXBvcnQgKiBhcyBtIGZyb20gIicrdGhpcy5wYXRoKyciOyBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInK2grJyIsIG0pJyk7dmFyIGw9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18obCk7YS5jbGVhck1vZHVsZVN0YXRlKCk7YS5sb2FkZWQoKX0pO2Yodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInKwpsKyciKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuIiksYS5wYXVzZSgpfSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe2dvb2cuRGVwZW5kZW5jeS5jYWxsKHRoaXMsYSxiLGMsZCxlKTt0aGlzLmNvbnRlbnRzXz1udWxsO3RoaXMubGF6eUZldGNoXz0hZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8ISgibm9Nb2R1bGUiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2UuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhlLnBhdGgpO2UuY29udGVudHNfJiYoZS5jb250ZW50c189CmUudHJhbnNmb3JtKGUuY29udGVudHNfKSxlLmNvbnRlbnRzXyYmKGUuY29udGVudHNfKz0iXG4vLyMgc291cmNlVVJMPSIrZS5wYXRoKSl9ZnVuY3Rpb24gYygpe2UubGF6eUZldGNoXyYmYigpO2lmKGUuY29udGVudHNfKXtmJiZhLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpO3RyeXt2YXIgaz1lLmNvbnRlbnRzXztlLmNvbnRlbnRzXz1udWxsO2dvb2cuZ2xvYmFsRXZhbChnb29nLkNMT1NVUkVfRVZBTF9QUkVGSUxURVJfLmNyZWF0ZVNjcmlwdChrKSk7aWYoZil2YXIgbT1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfWZpbmFsbHl7ZiYmYS5jbGVhck1vZHVsZVN0YXRlKCl9ZiYmZ29vZy5nbG9iYWwuJGpzY29tcC5yZXF1aXJlLmVuc3VyZShbZS5nZXRQYXRoTmFtZSgpXSxmdW5jdGlvbigpe2EucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKGUucGF0aCxnb29nLmdsb2JhbC4kanNjb21wLnJlcXVpcmUoZS5nZXRQYXRoTmFtZSgpKSxtKX0pO2EubG9hZGVkKCl9fQpmdW5jdGlvbiBkKCl7dmFyIGs9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhtKTtjKCl9KSxuPWdvb2cuZ2V0U2NyaXB0Tm9uY2VfKCk7bj0iPHNjcmlwdCIrKG4/JyBub25jZT0iJytuKyciJzoiIikrIj4iK2dvb2cucHJvdGVjdFNjcmlwdFRhZ18oJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrbSsnIik7JykrIlx4M2Mvc2NyaXB0PiI7ay53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKG4pOm4pfXZhciBlPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWIoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCIiLHRoaXMuY29udGVudHNfKT8odGhpcy5jb250ZW50c189bnVsbCxhLmxvYWRlZCgpKToKYS5wYXVzZSgpO2Vsc2V7dmFyIGY9dGhpcy5sb2FkRmxhZ3MubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuRVM2O3RoaXMubGF6eUZldGNoX3x8YigpO3ZhciBnPTE8YS5wZW5kaW5nKCkubGVuZ3RoO2lmKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8mJihnfHxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSlhLmRlZmVyKGZ1bmN0aW9uKCl7YygpfSk7ZWxzZXt2YXIgaD1nb29nLmdsb2JhbC5kb2N1bWVudDtnPWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJigiQWN0aXZlWE9iamVjdCJpbiBnb29nLmdsb2JhbHx8Z29vZy5pc0VkZ2VfKCkpO2lmKGYmJmdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkmJiFnKXtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwO2EucGF1c2UoKTt2YXIgbD1oLm9ucmVhZHlzdGF0ZWNoYW5nZTtoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJpbnRlcmFjdGl2ZSI9PWgucmVhZHlTdGF0ZSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPQpsLGMoKSxhLnJlc3VtZSgpKTsiZnVuY3Rpb24iPT09dHlwZW9mIGwmJmwuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWVsc2UgZ29vZy5pbkh0bWxEb2N1bWVudF8oKSYmZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKT9kKCk6YygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYSl7fSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQsZSl7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGEsYixjLGQsZSl9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYiwKYyxkLGUpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxhLGIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZ2b2lkIDAhPT1nb29nLmdsb2JhbC5KU09OPyJnb29nLmxvYWRNb2R1bGUoIitnb29nLmdsb2JhbC5KU09OLnN0cmluZ2lmeShhKyJcbi8vIyBzb3VyY2VVUkw9Iit0aGlzLnBhdGgrIlxuIikrIik7IjonZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsidXNlIHN0cmljdCI7JythKyJcbjtyZXR1cm4gZXhwb3J0c30pO1xuLy8jIHNvdXJjZVVSTD0iK3RoaXMucGF0aCsiXG4ifSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkKXtiPQpifHxbXTthPWEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBlPWdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCthKTtkJiYiYm9vbGVhbiIhPT10eXBlb2YgZHx8KGQ9ZD97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSk7Yz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koZSxhLGIsYyxkKTt0aGlzLmRlcGVuZGVuY2llc19bZV09Yztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuaWRUb1BhdGhfW2JbY11dPWU7dGhpcy5pZFRvUGF0aF9bYV09ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBlLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkdPT0c/bmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koYSxiLGMsZCxlKTplLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNj9nb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ/Cm5ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGEsYixjLGQsZSk6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShhLGIsYyxkLGUpOm5ldyBnb29nLkRlcGVuZGVuY3koYSxiLGMsZCxlKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oYSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoYSl9LGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrIiNiYXNlIik6bnVsbCxnb29nLmdsb2JhbC5DTE9TVVJFX05PX0RFUFN8fGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpLApnb29nLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2dvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChhLGIpfSk7aWYoIUNPTVBJTEVEKXt2YXIgaXNDaHJvbWU4Nz0hMTt0cnl7aXNDaHJvbWU4Nz1ldmFsKGdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eVNjcmlwdCkhPT1nb29nLmdsb2JhbC50cnVzdGVkVHlwZXMuZW1wdHlTY3JpcHR9Y2F0Y2goYSl7fWdvb2cuQ0xPU1VSRV9FVkFMX1BSRUZJTFRFUl89Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzJiZpc0Nocm9tZTg3JiZnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeSgiZ29vZyNiYXNlI2Rldm9ubHkjZXZhbCIpfHx7Y3JlYXRlU2NyaXB0Omdvb2cuaWRlbnRpdHlffX07Y29uc3QgcHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxjcmVhdGVFbmRwb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSx0aHJvd01hcmtlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxpc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPWE9PiJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hfHwiZnVuY3Rpb24iPT09dHlwZW9mIGEscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz0Ke2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiZhW3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdLHNlcmlhbGl6ZShhKXtjb25zdCB7cG9ydDE6Yixwb3J0MjpjfT1uZXcgTWVzc2FnZUNoYW5uZWw7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKTtyZXR1cm5bYyxbY11dfSxkZXNlcmlhbGl6ZShhKXthLnN0YXJ0KCk7cmV0dXJuIHdyYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKX19LHRocm93VHJhbnNmZXJIYW5kbGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9e2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiYKdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyBpbiBhLHNlcmlhbGl6ZSh7dmFsdWU6YX0pe3JldHVyblthIGluc3RhbmNlb2YgRXJyb3I/e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6YS5tZXNzYWdlLG5hbWU6YS5uYW1lLHN0YWNrOmEuc3RhY2t9fTp7aXNFcnJvcjohMSx2YWx1ZTphfSxbXV19LGRlc2VyaWFsaXplKGEpe2lmKGEuaXNFcnJvcil0aHJvdyBPYmplY3QuYXNzaWduKEVycm9yKGEudmFsdWUubWVzc2FnZSksYS52YWx1ZSk7dGhyb3cgYS52YWx1ZTt9fSx0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9bmV3IE1hcChbWyJwcm94eSIscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc10sWyJ0aHJvdyIsdGhyb3dUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc11dKTsKZnVuY3Rpb24gZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiPXNlbGYpe2IuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShkKXtpZihkJiZkLmRhdGEpe3ZhciB7aWQ6Zix0eXBlOmcscGF0aDpofT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxkLmRhdGEpLGw9KGQuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTt0cnl7Y29uc3QgbT1oLnNsaWNlKDAsLTEpLnJlZHVjZSgocCxxKT0+cFtxXSxhKSxuPWgucmVkdWNlKChwLHEpPT5wW3FdLGEpO3N3aXRjaChnKXtjYXNlICJHRVQiOnZhciBrPW47YnJlYWs7Y2FzZSAiU0VUIjptW2guc2xpY2UoLTEpWzBdXT1mcm9tV2lyZVZhbHVlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZC5kYXRhLnZhbHVlKTsKaz0hMDticmVhaztjYXNlICJBUFBMWSI6az1uLmFwcGx5KG0sbCk7YnJlYWs7Y2FzZSAiQ09OU1RSVUNUIjpjb25zdCBwPW5ldyBuKC4uLmwpO2s9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhwKTticmVhaztjYXNlICJFTkRQT0lOVCI6Y29uc3Qge3BvcnQxOnEscG9ydDI6cn09bmV3IE1lc3NhZ2VDaGFubmVsO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEscik7az10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHEsW3FdKTticmVhaztjYXNlICJSRUxFQVNFIjprPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gobSl7az17dmFsdWU6bSxbdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc106MH19UHJvbWlzZS5yZXNvbHZlKGspLmNhdGNoKG09Pgooe3ZhbHVlOm0sW3Rocm93TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOjB9KSkudGhlbihtPT57Y29uc3QgW24scF09dG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhtKTtiLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6Zn0pLHApOyJSRUxFQVNFIj09PWcmJihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhiKSl9KX19KTtiLnN0YXJ0JiZiLnN0YXJ0KCl9ZnVuY3Rpb24gaXNNZXNzYWdlUG9ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3JldHVybiJNZXNzYWdlUG9ydCI9PT1hLmNvbnN0cnVjdG9yLm5hbWV9CmZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtpc01lc3NhZ2VQb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSkmJmEuY2xvc2UoKX1mdW5jdGlvbiB3cmFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXtyZXR1cm4gY3JlYXRlUHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLFtdLGIpfWZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7aWYoYSl0aHJvdyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIik7fQpmdW5jdGlvbiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsYj1bXSxjPWZ1bmN0aW9uKCl7fSl7bGV0IGQ9ITE7Y29uc3QgZT1uZXcgUHJveHkoYyx7Z2V0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtpZihnPT09cmVsZWFzZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMpcmV0dXJuKCk9PnJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJSRUxFQVNFIixwYXRoOmIubWFwKGg9PmgudG9TdHJpbmcoKSl9KS50aGVuKCgpPT57Y2xvc2VFbmRQb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpO2Q9ITB9KTtpZigidGhlbiI9PT0KZyl7aWYoMD09PWIubGVuZ3RoKXJldHVybnt0aGVuOigpPT5lfTtmPXJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJHRVQiLHBhdGg6Yi5tYXAoaD0+aC50b1N0cmluZygpKX0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtyZXR1cm4gZi50aGVuLmJpbmQoZil9cmV0dXJuIGNyZWF0ZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxbLi4uYixnXSl9LHNldChmLGcsaCl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbbCxrXT10b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGgpO3JldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSwKe3R5cGU6IlNFVCIscGF0aDpbLi4uYixnXS5tYXAobT0+bS50b1N0cmluZygpKSx2YWx1ZTpsfSxrKS50aGVuKGZyb21XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyl9LGFwcGx5KGYsZyxoKXt0aHJvd0lmUHJveHlSZWxlYXNlZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGQpO2Y9YltiLmxlbmd0aC0xXTtpZihmPT09Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtpZigiYmluZCI9PT1mKXJldHVybiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsCmIuc2xpY2UoMCwtMSkpO2NvbnN0IFtsLGtdPXByb2Nlc3NBcmd1bWVudHMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhoKTtyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkFQUExZIixwYXRoOmIubWFwKG09Pm0udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omx9LGspLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX0sY29uc3RydWN0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbaCxsXT1wcm9jZXNzQXJndW1lbnRzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZyk7cmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLAp7dHlwZToiQ09OU1RSVUNUIixwYXRoOmIubWFwKGs9PmsudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omh9LGwpLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX19KTtyZXR1cm4gZX1mdW5jdGlvbiBteUZsYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhKX0KZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2E9YS5tYXAodG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyk7cmV0dXJuW2EubWFwKGI9PmJbMF0pLG15RmxhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEubWFwKGI9PmJbMV0pKV19Y29uc3QgdHJhbnNmZXJDYWNoZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHRyYW5zZmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXt0cmFuc2ZlckNhY2hlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuc2V0KGEsYik7cmV0dXJuIGF9CmZ1bmN0aW9uIHByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oYSx7W3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOiEwfSl9ZnVuY3Rpb24gd2luZG93RW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGI9c2VsZixjPSIqIil7cmV0dXJue3Bvc3RNZXNzYWdlOihkLGUpPT5hLnBvc3RNZXNzYWdlKGQsYyxlKSxhZGRFdmVudExpc3RlbmVyOmIuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKGIpLHJlbW92ZUV2ZW50TGlzdGVuZXI6Yi5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoYil9fQpmdW5jdGlvbiB0b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2Zvcihjb25zdCBbYixjXW9mIHRyYW5zZmVySGFuZGxlcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylpZihjLmNhbkhhbmRsZShhKSl7Y29uc3QgW2QsZV09Yy5zZXJpYWxpemUoYSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmIsdmFsdWU6ZH0sZV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmF9LHRyYW5zZmVyQ2FjaGUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy5nZXQoYSl8fFtdXX0KZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIkhBTkRMRVIiOnJldHVybiB0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZ2V0KGEubmFtZSkuZGVzZXJpYWxpemUoYS52YWx1ZSk7Y2FzZSAiUkFXIjpyZXR1cm4gYS52YWx1ZX19CmZ1bmN0aW9uIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGIsYyl7cmV0dXJuIG5ldyBQcm9taXNlKGQ9Pntjb25zdCBlPWdlbmVyYXRlVVVJRCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKCk7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBoKGcpe2cuZGF0YSYmZy5kYXRhLmlkJiZnLmRhdGEuaWQ9PT1lJiYoYS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixoKSxkKGcuZGF0YSkpfSk7YS5zdGFydCYmYS5zdGFydCgpO2EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6ZX0sYiksYyl9KX0KZnVuY3Rpb24gZ2VuZXJhdGVVVUlEJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoKXtyZXR1cm4gQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz17fTttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuY3JlYXRlRW5kcG9pbnQ9Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZXhwb3NlPWV4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHk9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHlNYXJrZXI9cHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucmVsZWFzZVByb3h5PXJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy50cmFuc2Zlcj10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMudHJhbnNmZXJIYW5kbGVycz10cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndpbmRvd0VuZHBvaW50PXdpbmRvd0VuZHBvaW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndyYXA9d3JhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO2Z1bmN0aW9uIE1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlKCl7fU1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5yZWFkeT0hMTtNZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5wcm90b3R5cGUucG9ydD12b2lkIDA7TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUucHJvdG90eXBlLnBvc3Q9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5icm9hZGNhc3RQbGF5U3RhdGU9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS53b3JrZXJTdGF0ZT12b2lkIDA7Ck1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS52YW5pbGxhV29ya2VyU3RhdGU9dm9pZCAwO3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUsbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9e307bW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUuTWVzc2FnZVBvcnRTdGF0ZT1NZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTttb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTtjb25zdCBERUZBVUxUX0JVRkZFUl9MRU4kJG1vZHVsZSRzcmMkY29uc3RhbnRzPTEyOCxNQVhfQ0hBTk5FTFMkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTMyLFJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTE2Mzg0LE1JRElfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTEwMjQsTUlESV9CVUZGRVJfUEFZTE9BRF9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cz0zLENBTExCQUNLX0RBVEFfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTE2Mzg0LGluaXRpYWxTaGFyZWRTdGF0ZSQkbW9kdWxlJHNyYyRjb25zdGFudHM9WzAsNDA5NiwwLDAsMCwwLC0xLC0xLC0xLC0xLDAsREVGQVVMVF9CVUZGRVJfTEVOJCRtb2R1bGUkc3JjJGNvbnN0YW50cywwLDAsMCwwLDAsMCwwLDBdLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cz17Q1NPVU5EX0xPQ0s6MCxGUkFNRVNfUkVRVUVTVEVEOjEsSVNfUEVSRk9STUlORzoyLElTX1JFTkRFUklORzozLApJU19QQVVTRUQ6NCxTVE9QOjUsU0FNUExFX1JBVEU6NixLU01QUzo3LE5DSE5MUzo4LE5DSE5MU19JOjksSVNfUkVRVUVTVElOR19NSUM6MTAsQlVGRkVSX0xFTjoxMSxPVVRQVVRfUkVBRF9JTkRFWDoxMixPVVRQVVRfV1JJVEVfSU5ERVg6MTMsQVZBSUxfSU5fQlVGUzoxNCxBVkFJTF9PVVRfQlVGUzoxNSxJU19SRVFVRVNUSU5HX1JUTUlESToxNixSVE1JRElfSU5ERVg6MTcsQVZBSUxfUlRNSURJX0VWRU5UUzoxOCxIQVNfUEVORElOR19DQUxMQkFDS1M6MTl9LERBVEFfVFlQRSQkbW9kdWxlJHNyYyRjb25zdGFudHM9e05VTUJFUjowLFNUUklORzoxLEZMT0FUXzMyOjIsRkxPQVRfNjQ6M307dmFyIG1vZHVsZSRzcmMkY29uc3RhbnRzPXt9O21vZHVsZSRzcmMkY29uc3RhbnRzLkFVRElPX1NUQVRFPUFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5DQUxMQkFDS19EQVRBX0JVRkZFUl9TSVpFPUNBTExCQUNLX0RBVEFfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzOwptb2R1bGUkc3JjJGNvbnN0YW50cy5EQVRBX1RZUEU9REFUQV9UWVBFJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5ERUZBVUxUX0JVRkZFUl9MRU49REVGQVVMVF9CVUZGRVJfTEVOJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5NQVhfQ0hBTk5FTFM9TUFYX0NIQU5ORUxTJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5NSURJX0JVRkZFUl9QQVlMT0FEX1NJWkU9TUlESV9CVUZGRVJfUEFZTE9BRF9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5NSURJX0JVRkZFUl9TSVpFPU1JRElfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzO21vZHVsZSRzcmMkY29uc3RhbnRzLlJJTkdfQlVGRkVSX1NJWkU9UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM7bW9kdWxlJHNyYyRjb25zdGFudHMuaW5pdGlhbFNoYXJlZFN0YXRlPWluaXRpYWxTaGFyZWRTdGF0ZSQkbW9kdWxlJHNyYyRjb25zdGFudHM7dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleD17ZGVmYXVsdDp7fX07bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQuX19lc01vZHVsZT0hMDttb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5Mb2dnZXJGYWN0b3J5PW1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVscz12b2lkIDA7bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzPXtsb2dfcmFpc2VfZXJyb3I6MSxsb2dfd2l0aF93YXJuaW5nczoyLHRyYWNlOjMsZGVidWc6NCxpbmZvOjUsd2Fybjo2LGVycm9yOjcsZGlzYWJsZTo4fTsKdmFyIExvZ2dlckZhY3RvcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtpZih2b2lkIDA9PT1iJiYoYj0ibG9nX3dpdGhfd2FybmluZ3MiKSx2b2lkIDA9PT1jJiYoYz1udWxsKSx0aGlzLmxvZ0xldmVsPWIsIW1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tiXSl0aHJvdyBFcnJvcigiSW52YWxpZCBsb2cgbGV2ZWwgIitiKyIgYWxsb3dlZDogIitKU09OLnN0cmluZ2lmeShtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHMpKTt0aGlzLm1vY2tDb25zb2xlPWN8fGNvbnNvbGV9cmV0dXJuIGEucHJvdG90eXBlLmR1bW15PWZ1bmN0aW9uKCl7fSxhLnByb3RvdHlwZS5zZXRMb2dXYXJuaW5ncz1mdW5jdGlvbihiKXt0aGlzLmxvZ0xldmVsPWJ9LGEucHJvdG90eXBlLmdldExvZ1dhcm5pbmdzPQpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvZ0xldmVsfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXJDb2xvcj1mdW5jdGlvbihiLGMsZCl7cmV0dXJuIHRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYix0aGlzLmdldENvbG9yU3R5bGUoYyksZCl9LGEucHJvdG90eXBlLmdldFNpbmdsZUxvZ2dlcj1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMuZ2V0UmFuZG9tQ29sb3IoYik7cmV0dXJuIHRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYix0aGlzLmdldENvbG9yU3R5bGUoZCksYyl9LGEucHJvdG90eXBlLmdldFNpbmdsZUxvZ2dlclN0eWxlPWZ1bmN0aW9uKGIsYyxkLGUpe3ZhciBmPXRoaXM7cmV0dXJuIHZvaWQgMD09PWUmJihlPSJsb2dfd2l0aF93YXJuaW5ncyIpLGZ1bmN0aW9uKCl7Zm9yKHZhciBnPVtdLGg9MDtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWdbaF09YXJndW1lbnRzW2hdO2lmKG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tmLmxvZ0xldmVsXT4KbW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzW2VdKXJldHVybiBmLmR1bW15O2c9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZyk7aD1nLnNoaWZ0KCkuc3BsaXQoInt9Iik7Zm9yKHZhciBsPVtmLm1vY2tDb25zb2xlLCIlYyIrYixjXSxrPTA7azxoLmxlbmd0aDtrKyspbC5wdXNoKGhba10pLHZvaWQgMCE9PWdba10mJmwucHVzaChnW2tdKTtpZihoLmxlbmd0aC0xIT09Zy5sZW5ndGgpaWYoImxvZ193aXRoX3dhcm5pbmdzIj09PWYubG9nTGV2ZWwpZi5tb2NrQ29uc29sZS5lcnJvcigiTWlzc01hdGNoIGFtb3VudCBvZiBhcmd1bWVudHMiKTtlbHNlIGlmKCJsb2dfcmFpc2VfZXJyb3IiPT09Zi5sb2dMZXZlbCl0aHJvdyBFcnJvcigiTWlzc01hdGNoIGFtb3VudCBvZiBhcmd1bWVudHMiKTtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYXBwbHkoZCxsKX19LGEucHJvdG90eXBlLmdldExvZ2dlckNvbG9yPWZ1bmN0aW9uKGIsCmMpe3JldHVybiB0aGlzLmdldExvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGMpKX0sYS5wcm90b3R5cGUuZ2V0Q29sb3JTdHlsZT1mdW5jdGlvbihiKXtyZXR1cm4iY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAiK2IrIjsgcGFkZGluZzogMnB4IDZweDsgYm9yZGVyLXJhZGl1czogMnB4OyBmb250LXNpemU6IDEwcHgifSxhLmdldEhhc2g9ZnVuY3Rpb24oYixjKXt2b2lkIDA9PT1jJiYoYz0wKTt2YXIgZD0zNzM1OTI4NTU5XmM7Y149MTEwMzU0Nzk5MTtmb3IodmFyIGU9MCxmO2U8Yi5sZW5ndGg7ZSsrKWY9Yi5jaGFyQ29kZUF0KGUpLGQ9TWF0aC5pbXVsKGReZiwyNjU0NDM1NzYxKSxjPU1hdGguaW11bChjXmYsMTU5NzMzNDY3Nyk7cmV0dXJuIGQ9TWF0aC5pbXVsKGReZD4+PjE2LDIyNDY4MjI1MDcpXk1hdGguaW11bChjXmM+Pj4xMywzMjY2NDg5OTA5KSw0Mjk0OTY3Mjk2KigyMDk3MTUxJihNYXRoLmltdWwoY15jPj4+MTYsMjI0NjgyMjUwNyleTWF0aC5pbXVsKGReCmQ+Pj4xMywzMjY2NDg5OTA5KSkpKyhkPj4+MCl9LGEucHJvdG90eXBlLmdldFJhbmRvbUNvbG9yPWZ1bmN0aW9uKGIpe3ZvaWQgMD09PWImJihiPSIiKTtiPWEuZ2V0SGFzaChiKTtmb3IodmFyIGM9IiMiLGQ9MDszPmQ7ZCsrKWMrPSgiMDAiKyg4KyhiPj43KmQmMTI3KSkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTIpO3JldHVybiBjfSxhLnByb3RvdHlwZS5nZXRMb2dnZXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZ2V0TG9nZ2VyQ29sb3IoYix0aGlzLmdldFJhbmRvbUNvbG9yKGIpKX0sYS5wcm90b3R5cGUuZ2V0TG9nZ2VyU3R5bGU9ZnVuY3Rpb24oYixjKXtyZXR1cm57dHJhY2U6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS50cmFjZSwidHJhY2UiKSxkZWJ1Zzp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmRlYnVnLCJkZWJ1ZyIpLGxvZzp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmxvZywKImluZm8iKSx3YXJuOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUud2Fybiwid2FybiIpLGVycm9yOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUuZXJyb3IsImVycm9yIil9fSxhfSgpO21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LkxvZ2dlckZhY3Rvcnk9TG9nZ2VyRmFjdG9yeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4O2xldCBsb2dXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU0FCTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU0FCV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dWQU5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dWQU5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ09sZFNwbk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ09sZFNwbldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nSW5kZXgkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NQTk1haW5TaW5nbGUkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyOwpjb25zdCBpc1Byb2QkJG1vZHVsZSRzcmMkbG9nZ2VyPTE7bG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1NBQldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nVkFOV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dPbGRTcG5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTUE5NYWluU2luZ2xlJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTsKbG9nU2luZ2xldGhyZWFkV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ0NvbW1vblV0aWxzJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dXYXNtTW9kdWxlJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dNaWRpUmVxdWVzdCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307dmFyICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fSxtb2R1bGUkc3JjJGxvZ2dlcj17fTttb2R1bGUkc3JjJGxvZ2dlci5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dDb21tb25VdGlscz1sb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nSW5kZXg9bG9nSW5kZXgkJG1vZHVsZSRzcmMkbG9nZ2VyOwptb2R1bGUkc3JjJGxvZ2dlci5sb2dNaWRpUmVxdWVzdD1sb2dNaWRpUmVxdWVzdCQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nT2xkU3BuTWFpbj1sb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dPbGRTcG5Xb3JrZXI9bG9nT2xkU3BuV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTQUJNYWluPWxvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NBQldvcmtlcj1sb2dTQUJXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NQTk1haW5TaW5nbGU9bG9nU1BOTWFpblNpbmdsZSQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nU2luZ2xldGhyZWFkV29ya2xldE1haW49bG9nU2luZ2xldGhyZWFkV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyOwptb2R1bGUkc3JjJGxvZ2dlci5sb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyPWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1ZBTk1haW49bG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nVkFOV29ya2VyPWxvZ1ZBTldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV2FzbU1vZHVsZT1sb2dXYXNtTW9kdWxlJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dXb3JrbGV0TWFpbj1sb2dXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV29ya2xldFdvcmtlcj1sb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjtjb25zdCBoYW5kbGVDc291bmRTdGFydCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz0oYSxiLGMsZCxlKT0+Zj0+e2NvbnN0IHtjc291bmQ6Z309ZixoPTE9PT1iLmNzb3VuZFNob3VsZERhZW1vbml6ZShnKTtoJiYoYi5jc291bmRTZXRPcHRpb24oZywiLS1kYWVtb24iKSxiLmNzb3VuZFNldE9wdGlvbihnLCItb2RhYyIpKTtjb25zdCBsPWIuY3NvdW5kU3RhcnQoZyksaz1iLmNzb3VuZEdldE91dHB1dE5hbWUoZyl8fCJ0ZXN0LndhdiI7bG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyKGBoYW5kbGVDc291bmRTdGFydDogYWN0dWFsIGNzb3VuZFN0YXJ0IHJlc3VsdCAke2x9LCBvdXRwdXROYW1lOiAke2t9YCkoKTswIT09bCYmYS5wb3N0KGBlcnJvcjogY3NvdW5kU3RhcnQgZmFpbGVkIHdoaWxlIHRyeWluZyB0byByZW5kZXIgJHtrfSxgKyIgbG9vayBvdXQgZm9yIGVycm9ycyBpbiBvcHRpb25zIGFuZCBzeW50YXgiKTtzZXRUaW1lb3V0KCgpPT57Y29uc3QgbT0KYi5faXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQoZyk7aWYoaHx8bXx8ay5pbmNsdWRlcygiZGFjIikpZChmKTtlbHNlIGlmKGEuYnJvYWRjYXN0UGxheVN0YXRlKCJyZW5kZXJTdGFydGVkIiksZSllKGYpO2Vsc2UgZm9yKDswPT09Yi5jc291bmRQZXJmb3JtS3NtcHMoZyk7KTt9LDApO3JldHVybiBsfSxpbnN0YW50aWF0ZUF1ZGlvUGFja2V0JCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzPShhLGIpPT57Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGE7ZCsrKWMucHVzaChuZXcgRmxvYXQ2NEFycmF5KGIpKTtyZXR1cm4gY30scmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9KHtsaWJyYXJ5Q3NvdW5kOmEsd29ya2VyTWVzc2FnZVBvcnQ6Yn0pPT5hc3luYyh7Y3NvdW5kOmN9KT0+e2NvbnN0IGQ9YS5jc291bmRHZXRLcihjKTtsZXQgZT0wLGY9MDtmb3IoOygicmVuZGVyU3RhcnRlZCI9PT1iLnZhbmlsbGFXb3JrZXJTdGF0ZXx8InJlbmRlclN0YXJ0ZWQiPT09CmIud29ya2VyU3RhdGUpJiYwPT09ZTspZT1hLmNzb3VuZFBlcmZvcm1Lc21wcyhjKSxmKz0xLCJmdW5jdGlvbiI9PT10eXBlb2Ygc2V0VGltZW91dCYmMD09PWUmJjA9PT1mJSgyKmQpJiZhd2FpdCBuZXcgUHJvbWlzZShnPT5zZXRUaW1lb3V0KGcsMCkpO2IuYnJvYWRjYXN0UGxheVN0YXRlKCJyZW5kZXJFbmRlZCIpfTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz17fTttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLmhhbmRsZUNzb3VuZFN0YXJ0PWhhbmRsZUNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO21vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMuaW5zdGFudGlhdGVBdWRpb1BhY2tldD1pbnN0YW50aWF0ZUF1ZGlvUGFja2V0JCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO21vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMucmVuZGVyRnVuY3Rpb249cmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM7Y29uc3QgVkFOSUxMQV9JTlBVVF9XUklURV9CVUZGRVJfTEVOJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXI9MjA0OCxhY3RpdmVOb2RlcyQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyPW5ldyBNYXA7CmZ1bmN0aW9uIHByb2Nlc3NTaGFyZWRBcnJheUJ1ZmZlciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKGEsYil7dmFyIGM9MT09PUF0b21pY3MubG9hZCh0aGlzLnNoYXJlZEFycmF5QnVmZmVyLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cy5JU19QRVJGT1JNSU5HKSxkPTE9PT1BdG9taWNzLmxvYWQodGhpcy5zaGFyZWRBcnJheUJ1ZmZlcixBVURJT19TVEFURSQkbW9kdWxlJHNyYyRjb25zdGFudHMuSVNfUEFVU0VEKTtjb25zdCBlPTE9PT1BdG9taWNzLmxvYWQodGhpcy5zaGFyZWRBcnJheUJ1ZmZlcixBVURJT19TVEFURSQkbW9kdWxlJHNyYyRjb25zdGFudHMuU1RPUCk7dGhpcy5zdGFydFByb21peiYmKHRoaXMuc3RhcnRQcm9taXooKSxkZWxldGUgdGhpcy5zdGFydFByb21peik7aWYoIXRoaXMuc2hhcmVkQXJyYXlCdWZmZXJ8fGR8fCFjfHxlKXJldHVybiB0aGlzLmlzUGVyZm9ybWluZ0xhc3RUaW1lPWMsdGhpcy5ub3RpZmllZE9uY2U9dGhpcy5maXJzdEJ1ZmZlclJlYWR5PQohMSwoYlswXXx8W10pLmZvckVhY2goZz0+Zy5maWxsKDApKSwhMDt0aGlzLmlzUGVyZm9ybWluZ0xhc3RUaW1lPWM7YT1hJiZhWzBdO2I9YiYmYlswXTtjPWJbMF0ubGVuZ3RoO3RoaXMuYnVmZmVyTGVuZ3RoIT09YyYmKHRoaXMuYnVmZmVyTGVuZ3RoPWMsQXRvbWljcy5zdG9yZSh0aGlzLnNoYXJlZEFycmF5QnVmZmVyLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cy5CVUZGRVJfTEVOLGMpKTtkPWEmJjA8YS5sZW5ndGg/KHRoaXMuaW5wdXRXcml0ZUluZGV4K2MpJVJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzOjA7Y29uc3QgZj1iJiYwPGIubGVuZ3RoPyh0aGlzLm91dHB1dFJlYWRJbmRleCtjKSVSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50czowO2lmKEF0b21pY3MubG9hZCh0aGlzLnNoYXJlZEFycmF5QnVmZmVyLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cy5BVkFJTF9PVVRfQlVGUyk+PWMpdGhpcy5idWZmZXJVbmRlcnJ1bkNvdW50JiYKKHRoaXMuYnVmZmVyVW5kZXJydW5Db3VudD0wKSxiLmZvckVhY2goKGcsaCk9PntnLnNldCh0aGlzLnNhYk91dHB1dENoYW5uZWxzW2hdLnN1YmFycmF5KHRoaXMub3V0cHV0UmVhZEluZGV4LGY8dGhpcy5vdXRwdXRSZWFkSW5kZXg/UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6ZikpfSksYSYmYVswXSYmMDxhWzBdLmxlbmd0aCYmKGEuZm9yRWFjaCgoZyxoKT0+e3RoaXMuc2FiSW5wdXRDaGFubmVsc1toXS5zZXQoZyx0aGlzLmlucHV0V3JpdGVJbmRleCl9KSx0aGlzLmlucHV0V3JpdGVJbmRleD1kLEF0b21pY3MuYWRkKHRoaXMuc2hhcmVkQXJyYXlCdWZmZXIsQVVESU9fU1RBVEUkJG1vZHVsZSRzcmMkY29uc3RhbnRzLkFWQUlMX0lOX0JVRlMsYVswXS5sZW5ndGgpKSx0aGlzLm91dHB1dFJlYWRJbmRleD1mLEF0b21pY3Muc3ViKHRoaXMuc2hhcmVkQXJyYXlCdWZmZXIsQVVESU9fU1RBVEUkJG1vZHVsZSRzcmMkY29uc3RhbnRzLkFWQUlMX09VVF9CVUZTLApjKSxBdG9taWNzLnN0b3JlKHRoaXMuc2hhcmVkQXJyYXlCdWZmZXIsQVVESU9fU1RBVEUkJG1vZHVsZSRzcmMkY29uc3RhbnRzLk9VVFBVVF9SRUFEX0lOREVYLHRoaXMub3V0cHV0UmVhZEluZGV4KTtlbHNle2lmKDQwOTg8dGhpcy5vdXRwdXRSZWFkSW5kZXgpY29uc29sZS5sb2coImJ1ZmZlciB1bmRlcnJ1biIpO2Vsc2UgcmV0dXJuITA7dGhpcy5idWZmZXJVbmRlcnJ1bkNvdW50Kz0xO2lmKDEwMD09PXRoaXMuYnVmZmVyVW5kZXJydW5Db3VudClyZXR1cm4gdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5wb3N0KCJGQVRBTDogMTAwIGJ1ZmZlcnMgZmFpbGVkIGluIGEgcm93IiksdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VFbmRlZCIpLCExfXJldHVybiEwfQpmdW5jdGlvbiBwcm9jZXNzVmFuaWxsYUJ1ZmZlcnMkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcihhLGIpe2lmKCF0aGlzLnZhbmlsbGFJbml0aWFsaXplZClyZXR1cm4gdGhpcy5hdWRpb0ZyYW1lUG9ydC5yZXF1ZXN0RnJhbWVzKHtyZWFkSW5kZXg6MCxudW1GcmFtZXM6ODE5Mn0pLHRoaXMucGVuZGluZ0ZyYW1lcys9ODE5Mix0aGlzLnZhbmlsbGFJbml0aWFsaXplZD0hMCx0aGlzLnN0YXJ0UHJvbWl6JiYodGhpcy5zdGFydFByb21peigpLGRlbGV0ZSB0aGlzLnN0YXJ0UHJvbWl6KSwhMDtpZighdGhpcy52YW5pbGxhRmlyc3RUcmFuc2ZlckRvbmUpcmV0dXJuKGImJmJbMF18fFtdKS5mb3JFYWNoKGY9PmYuZmlsbCgwKSksITA7YT1hJiZhWzBdO2NvbnN0IGM9KGI9YiYmYlswXSk/YlswXS5sZW5ndGg6MCxkPWImJjA8Yi5sZW5ndGg/KHRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleCtiWzBdLmxlbmd0aCklUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6CjAsZT1hJiYwPGEubGVuZ3RoPyh0aGlzLnZhbmlsbGFJbnB1dFJlYWRJbmRleCthWzBdLmxlbmd0aCklUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6MDtpZihjJiZ0aGlzLnZhbmlsbGFBdmFpbGFibGVGcmFtZXM+PWMpe2IuZm9yRWFjaCgoZixnKT0+e2Yuc2V0KHRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzW2ddLnN1YmFycmF5KHRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleCxkPHRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleD9SSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50czpkKSl9KTtpZihhJiYwPGEubGVuZ3RoJiYoYS5mb3JFYWNoKChmLGcpPT57dGhpcy52YW5pbGxhSW5wdXRDaGFubmVsc1tnXS5zZXQoZix0aGlzLnZhbmlsbGFJbnB1dFJlYWRJbmRleCl9KSwwPT09ZSVWQU5JTExBX0lOUFVUX1dSSVRFX0JVRkZFUl9MRU4kJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcikpe2NvbnN0IGY9W10sZz0oMD09PWU/UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6CmUpLVZBTklMTEFfSU5QVVRfV1JJVEVfQlVGRkVSX0xFTiQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyLGg9MD09PWU/UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6ZTt0aGlzLnZhbmlsbGFJbnB1dENoYW5uZWxzLmZvckVhY2gobD0+e2YucHVzaChsLnN1YmFycmF5KGcsaCkpfSk7dGhpcy5hdWRpb0lucHV0UG9ydC50cmFuc2ZlcklucHV0RnJhbWVzKGYpfXRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleD1kO3RoaXMudmFuaWxsYUlucHV0UmVhZEluZGV4PWU7dGhpcy52YW5pbGxhQXZhaWxhYmxlRnJhbWVzLT1jO3RoaXMuYnVmZmVyVW5kZXJydW5Db3VudD0wfWVsc2UgaWYoMTx0aGlzLmJ1ZmZlclVuZGVycnVuQ291bnQmJjEyPnRoaXMuYnVmZmVyVW5kZXJydW5Db3VudCYmKHRoaXMud29ya2VyTWVzc2FnZVBvcnQucG9zdCgiQnVmZmVyIHVuZGVycnVuIiksdGhpcy5idWZmZXJVbmRlcnJ1bkNvdW50Kz0xKSwxMDA9PT10aGlzLmJ1ZmZlclVuZGVycnVuQ291bnQpcmV0dXJuIHRoaXMud29ya2VyTWVzc2FnZVBvcnQucG9zdCgiRkFUQUw6IDEwMCBidWZmZXJzIGZhaWxlZCBpbiBhIHJvdyIpLAp0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZUVuZGVkIiksITE7YT0yMDQ4LXRoaXMudmFuaWxsYUF2YWlsYWJsZUZyYW1lczswPGEmJih0aGlzLmF1ZGlvRnJhbWVQb3J0LnJlcXVlc3RGcmFtZXMoe3JlYWRJbmRleDoodGhpcy52YW5pbGxhQXZhaWxhYmxlRnJhbWVzK2QrdGhpcy5wZW5kaW5nRnJhbWVzKSVSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cyxudW1GcmFtZXM6YX0pLHRoaXMucGVuZGluZ0ZyYW1lcys9YSk7cmV0dXJuITB9CmNsYXNzIENzb3VuZFdvcmtsZXRQcm9jZXNzb3IkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3Nvcntjb25zdHJ1Y3Rvcih7cHJvY2Vzc29yT3B0aW9uczp7Y29udGV4dFVpZDphLGlucHV0c0NvdW50OmIsb3V0cHV0c0NvdW50OmMsa3NtcHM6ZCxtYXliZVNoYXJlZEFycmF5QnVmZmVyOmUsbWF5YmVTaGFyZWRBcnJheUJ1ZmZlckF1ZGlvSW46ZixtYXliZVNoYXJlZEFycmF5QnVmZmVyQXVkaW9PdXQ6Z319KXtzdXBlcigpO2FjdGl2ZU5vZGVzJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIuc2V0KGAke2F9Tm9kZWAsdGhpcyk7dGhpcy5tZXNzYWdlUG9ydHNSZWFkeT0hMTt0aGlzLmN1cnJlbnRQbGF5U3RhdGU9dm9pZCAwO3RoaXMucGF1c2U9dGhpcy5wYXVzZS5iaW5kKHRoaXMpO3RoaXMucmVzdW1lPXRoaXMucmVzdW1lLmJpbmQodGhpcyk7dGhpcy5pc1BhdXNlZD0hMTt0aGlzLmtzbXBzPWQ7dGhpcy5pbnB1dHNDb3VudD0KYjt0aGlzLm91dHB1dHNDb3VudD1jO3RoaXMuYnVmZmVyVW5kZXJydW5Db3VudD10aGlzLm91dHB1dFJlYWRJbmRleD10aGlzLmlucHV0V3JpdGVJbmRleD0wO3RoaXMuaXNQZXJmb3JtaW5nTGFzdFRpbWU9ITE7dGhpcy5wcmVQcm9jZXNzQ291bnQ9MDtpZihlKXt0aGlzLnNoYXJlZEFycmF5QnVmZmVyPWU7dGhpcy5hdWRpb1N0cmVhbUluPWY7dGhpcy5hdWRpb1N0cmVhbU91dD1nO3RoaXMuc2FiT3V0cHV0Q2hhbm5lbHM9W107dGhpcy5zYWJJbnB1dENoYW5uZWxzPVtdO2ZvcihhPTA7YTxiOysrYSl0aGlzLnNhYklucHV0Q2hhbm5lbHMucHVzaChuZXcgRmxvYXQ2NEFycmF5KHRoaXMuYXVkaW9TdHJlYW1JbixSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cyphLFJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzKSk7Zm9yKGI9MDtiPGM7KytiKXRoaXMuc2FiT3V0cHV0Q2hhbm5lbHMucHVzaChuZXcgRmxvYXQ2NEFycmF5KHRoaXMuYXVkaW9TdHJlYW1PdXQsClJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzKmIsUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHMpKTt0aGlzLmFjdHVhbFByb2Nlc3M9cHJvY2Vzc1NoYXJlZEFycmF5QnVmZmVyJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIuYmluZCh0aGlzKX1lbHNlIHRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzPVtdLHRoaXMudmFuaWxsYUlucHV0Q2hhbm5lbHM9W10sdGhpcy5wZW5kaW5nRnJhbWVzPXRoaXMudmFuaWxsYUF2YWlsYWJsZUZyYW1lcz10aGlzLnZhbmlsbGFJbnB1dFJlYWRJbmRleD10aGlzLnZhbmlsbGFPdXRwdXRSZWFkSW5kZXg9MCx0aGlzLnZhbmlsbGFGaXJzdFRyYW5zZmVyRG9uZT10aGlzLnZhbmlsbGFJbml0aWFsaXplZD0hMSx0aGlzLm1pbkJ1ZmZlclNpemU9NDA5Nix0aGlzLnZhbmlsbGFJbnB1dENoYW5uZWxzPWluc3RhbnRpYXRlQXVkaW9QYWNrZXQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoYiwKUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHMpLHRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzPWluc3RhbnRpYXRlQXVkaW9QYWNrZXQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoYyxSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cyksdGhpcy5hY3R1YWxQcm9jZXNzPXByb2Nlc3NWYW5pbGxhQnVmZmVycyQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyLmJpbmQodGhpcyksdGhpcy51cGRhdGVWYW5pbGxhRnJhbWVzPXRoaXMudXBkYXRlVmFuaWxsYUZyYW1lcy5iaW5kKHRoaXMpO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHtpbml0aWFsaXplOmluaXRpYWxpemUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcixwYXVzZTp0aGlzLnBhdXNlLHJlc3VtZTp0aGlzLnJlc3VtZX0sdGhpcy5wb3J0KTtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigiV29ya2VyIHRocmVhZCB3YXMgY29uc3RydWN0ZWQiKSgpfWluaXRDYWxsYmFja3Moe3dvcmtlck1lc3NhZ2VQb3J0OmEsCmF1ZGlvSW5wdXRQb3J0OmIsYXVkaW9GcmFtZVBvcnQ6YyxzdGFydFByb21pejpkfSl7bG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImluaXRDYWxsYmFja3MgaW4gd29ya2VyIikoKTthJiYodGhpcy53b3JrZXJNZXNzYWdlUG9ydD1hKTtiJiYodGhpcy5hdWRpb0lucHV0UG9ydD1iKTtjJiYodGhpcy5hdWRpb0ZyYW1lUG9ydD1jKTt0aGlzLm1lc3NhZ2VQb3J0c1JlYWR5PSEwO3RoaXMuc3RhcnRQcm9taXo9ZH11cGRhdGVWYW5pbGxhRnJhbWVzKHthdWRpb1BhY2tldDphLG51bUZyYW1lczpiLHJlYWRJbmRleDpjfSl7dGhpcy5wZW5kaW5nRnJhbWVzLT1iO2lmKGEpe2ZvcihsZXQgZD0wO2Q8dGhpcy5vdXRwdXRzQ291bnQ7KytkKXtsZXQgZT0hMSxmOyhjK2IpJVJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPGMmJihlPSEwLGY9UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHMtYyk7ZT8odGhpcy52YW5pbGxhT3V0cHV0Q2hhbm5lbHNbZF0uc2V0KGFbZF0uc3ViYXJyYXkoMCwKZiksYyksdGhpcy52YW5pbGxhT3V0cHV0Q2hhbm5lbHNbZF0uc2V0KGFbZF0uc3ViYXJyYXkoZiksMCkpOnRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzW2RdLnNldChhW2RdLGMpfXRoaXMudmFuaWxsYUF2YWlsYWJsZUZyYW1lcys9Yjt0aGlzLnZhbmlsbGFGaXJzdFRyYW5zZmVyRG9uZXx8KHRoaXMudmFuaWxsYUZpcnN0VHJhbnNmZXJEb25lPSEwKX19cGF1c2UoKXt0aGlzLmlzUGF1c2VkPSEwO3RoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlUGF1c2VkIil9cmVzdW1lKCl7dGhpcy5pc1BhdXNlZD0hMTt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZVJlc3VtZWQiKX1wcm9jZXNzKGEsYil7cmV0dXJuIHRoaXMuaXNQYXVzZWR8fCF0aGlzLm1lc3NhZ2VQb3J0c1JlYWR5PyEwOnRoaXMuYWN0dWFsUHJvY2VzcyhhLGIpfX0KZnVuY3Rpb24gaW5pdE1lc3NhZ2VQb3J0JCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIoe3BvcnQ6YX0pe2xvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0TWVzc2FnZVBvcnQgaW4gd29ya2VyIikoKTtjb25zdCBiPW5ldyAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU7Yi5wb3N0PWM9PmEucG9zdE1lc3NhZ2Uoe2xvZzpjfSk7Yi5icm9hZGNhc3RQbGF5U3RhdGU9Yz0+YS5wb3N0TWVzc2FnZSh7cGxheVN0YXRlQ2hhbmdlOmN9KTtiLnJlYWR5PSEwO3JldHVybiBifQpmdW5jdGlvbiBpbml0UmVxdWVzdFBvcnQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcih7cmVxdWVzdFBvcnQ6YSxhdWRpb05vZGU6Yn0pe2xvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0UmVxdWVzdFBvcnQgaW4gd29ya2VyIikoKTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGM9Pntjb25zdCB7YXVkaW9QYWNrZXQ6ZCxyZWFkSW5kZXg6ZSxudW1GcmFtZXM6Zn09Yy5kYXRhO2IudXBkYXRlVmFuaWxsYUZyYW1lcyh7YXVkaW9QYWNrZXQ6ZCxudW1GcmFtZXM6ZixyZWFkSW5kZXg6ZX0pfSk7YS5zdGFydCgpO3JldHVybntyZXF1ZXN0RnJhbWVzOmM9PmEucG9zdE1lc3NhZ2UoYykscmVhZHk6ITB9fQpmdW5jdGlvbiBpbml0QXVkaW9JbnB1dFBvcnQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcih7aW5wdXRQb3J0OmF9KXtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigiaW5pdEF1ZGlvSW5wdXRQb3J0IGluIHdvcmtlciIpKCk7cmV0dXJue3JlYWR5OiExLHRyYW5zZmVySW5wdXRGcmFtZXM6Yj0+YS5wb3N0TWVzc2FnZShiKX19CmNvbnN0IGluaXRpYWxpemUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcj1hc3luYyh7Y29udGV4dFVpZDphLGlucHV0UG9ydDpiLG1lc3NhZ2VQb3J0OmMscmVxdWVzdFBvcnQ6ZH0pPT57YT1hY3RpdmVOb2RlcyQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyLmdldChgJHthfU5vZGVgKTtjPWluaXRNZXNzYWdlUG9ydCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKHtwb3J0OmN9KTtiPWluaXRBdWRpb0lucHV0UG9ydCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKHtpbnB1dFBvcnQ6Yn0pO2Q9aW5pdFJlcXVlc3RQb3J0JCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIoe3JlcXVlc3RQb3J0OmQsYXVkaW9Ob2RlOmF9KTtsZXQgZTtjb25zdCBmPW5ldyBQcm9taXNlKGc9PntlPWd9KTthLmluaXRDYWxsYmFja3Moe3dvcmtlck1lc3NhZ2VQb3J0OmMsYXVkaW9JbnB1dFBvcnQ6YixhdWRpb0ZyYW1lUG9ydDpkLApzdGFydFByb21pejplfSk7YXdhaXQgZn07cmVnaXN0ZXJQcm9jZXNzb3IoImNzb3VuZC13b3JrbGV0LXByb2Nlc3NvciIsQ3NvdW5kV29ya2xldFByb2Nlc3NvciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyPXt9OwovLyMgc291cmNlTWFwcGluZ1VSTD1fX2NvbXBpbGVkLndvcmtsZXQud29ya2VyLmpzLm1hcAo=",
+module$dist$__compiled_worklet_worker_inline={};module$dist$__compiled_worklet_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_worklet_worker_inline;let UID$$module$src$mains$worklet_main=0;
+class AudioWorkletMainThread$$module$src$mains$worklet_main{constructor({audioContext:a,audioContextIsProvided:b,autoConnect:c}){this.autoConnect=c;this.audioContextIsProvided=b;this.ipcMessagePorts=void 0;this.audioContext=a;this.softwareBufferSize=this.hardwareBufferSize=this.outputsCount=this.inputsCount=this.sampleRate=this.ksmps=this.workletProxy=this.csoundWorkerMain=this.currentPlayState=this.audioWorkletNode=void 0;this.initialize=this.initialize.bind(this);this.onPlayStateChange=this.onPlayStateChange.bind(this);
+this.terminateInstance=this.terminateInstance.bind(this);this.createWorkletNode=this.createWorkletNode.bind(this);logWorkletMain$$module$src$logger("AudioWorkletMainThread was constructed")()}async terminateInstance(){this.audioWorkletNode&&(this.audioWorkletNode.disconnect(),delete this.audioWorkletNode);if(this.audioContext){if("closed"!==this.audioContext.state)try{await this.audioContext.close()}catch{}delete this.audioContext}this.workletProxy&&(this.workletProxy[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),
+delete this.workletProxy)}createWorkletNode(a,b,c){a=new AudioWorkletNode(a,"csound-worklet-processor",{inputChannelCount:b?[b]:0,outputChannelCount:[this.outputsCount||2],processorOptions:{contextUid:c,isRequestingInput:this.isRequestingInput,inputsCount:b,outputsCount:this.outputsCount,ksmps:this.ksmps,maybeSharedArrayBuffer:this.csoundWorkerMain.hasSharedArrayBuffer&&this.csoundWorkerMain.audioStatePointer,maybeSharedArrayBufferAudioIn:this.csoundWorkerMain.hasSharedArrayBuffer&&this.csoundWorkerMain.audioStreamIn,
+maybeSharedArrayBufferAudioOut:this.csoundWorkerMain.hasSharedArrayBuffer&&this.csoundWorkerMain.audioStreamOut}});this.csoundWorkerMain.publicEvents.triggerOnAudioNodeCreated(a);return a}async onPlayStateChange(a){this.currentPlayState=a;switch(a){case "realtimePerformanceStarted":logWorkletMain$$module$src$logger("event received: realtimePerformanceStarted")();await this.initialize();this.csoundWorkerMain&&this.csoundWorkerMain.eventPromises&&(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformanceStarted(this),
+this.csoundWorkerMain.eventPromises&&await this.csoundWorkerMain.eventPromises.releaseStartPromise());break;case "realtimePerformanceEnded":logWorkletMain$$module$src$logger("event received: realtimePerformanceEnded"+!this.csoundWorkerMain.hasSharedArrayBuffer?" cleaning up ports":"")();if(!this.audioContextIsProvided&&this.autoConnect&&this.audioContext&&"closed"!==this.audioContext.state)try{await this.audioContext.close()}catch{}this.autoConnect&&this.audioWorkletNode&&(this.audioWorkletNode.disconnect(),
+delete this.audioWorkletNode);this.workletProxy&&(this.workletProxy[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),delete this.workletProxy);this.workletWorkerUrl&&(window.URL||window.webkitURL).revokeObjectURL(this.workletWorkerUrl);this.audioWorkletNode&&delete this.audioWorkletNode;this.softwareBufferSize=this.hardwareBufferSize=this.outputsCount=this.inputsCount=this.sampleRate=this.currentPlayState=void 0;break;case "realtimePerformancePaused":this.csoundWorkerMain&&this.csoundWorkerMain.eventPromises&&
+(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformancePaused(this),await this.csoundWorkerMain.eventPromises.releasePausePromise());break;case "realtimePerformanceResumed":this.csoundWorkerMain&&this.csoundWorkerMain.eventPromises&&(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformanceResumed(this),await this.csoundWorkerMain.eventPromises.releaseResumePromise())}}async initialize(){this.audioContext||(this.audioContextIsProvided&&
+console.error("fatal: the provided AudioContext was undefined"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));"closed"===this.audioContext.state&&(this.audioContextIsProvided&&console.error("fatal: the provided AudioContext was closed, falling back new AudioContext"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));this.sampleRate!==this.audioContext.sampleRate&&(this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}),
+this.audioContextIsProvided&&console.error("Internal error: sample rate was ignored from provided audioContext"));this.workletWorkerUrl=$jscompDefaultExport$$module$dist$__compiled_worklet_worker_inline();try{await this.audioContext.audioWorklet.addModule(this.workletWorkerUrl)}catch(c){console.error("Error calling audioWorklet.addModule",c)}logWorkletMain$$module$src$logger("WorkletWorker module added")();if(this.csoundWorkerMain){var a=`audioWorklet${UID$$module$src$mains$worklet_main}`;UID$$module$src$mains$worklet_main+=
+1;this.isRequestingMidi&&(logWorkletMain$$module$src$logger("requesting for web-midi connection"),requestMidi$$module$src$utils$request_midi({onMidiMessage:this.csoundWorkerMain.handleMidiInput.bind(this.csoundWorkerMain)}));if(this.isRequestingInput){let c;var b=new Promise(f=>{c=f});const d=void 0===navigator.mediaDevices?navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia:navigator.mediaDevices.getUserMedia,e=f=>{if(f){f=this.audioContext.createMediaStreamSource(f);
+this.inputsCount=f.channelCount;const g=this.createWorkletNode(this.audioContext,f.channelCount,a);this.audioWorkletNode=g;this.autoConnect&&f.connect(g).connect(this.audioContext.destination)}else this.inputsCount=0,this.audioWorkletNode=this.createWorkletNode(this.audioContext,0,a),this.autoConnect&&this.audioWorkletNode.connect(this.audioContext.destination);c&&c()};logWorkletMain$$module$src$logger("requesting microphone access")();void 0===navigator.mediaDevices?d.call(navigator,{audio:{optional:[{echoCancellation:!1,
+sampleSize:32}]}},e,console.error):d.call(navigator.mediaDevices,{audio:{echoCancellation:!1,sampleSize:32}}).then(e).catch(console.error)}else this.audioWorkletNode=this.createWorkletNode(this.audioContext,0,a),logWorkletMain$$module$src$logger("connecting Node to AudioContext destination")(),this.autoConnect&&this.audioWorkletNode.connect(this.audioContext.destination);b&&await b;this.workletProxy=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(this.audioWorkletNode.port);this.ipcMessagePorts.mainMessagePortAudio.addEventListener("message",
+messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePortAudio.start();await this.workletProxy.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({contextUid:a,messagePort:this.ipcMessagePorts.workerMessagePortAudio,requestPort:this.ipcMessagePorts.audioWorkerFrameRequestPort,inputPort:this.ipcMessagePorts.audioWorkerAudioInputPort},[this.ipcMessagePorts.workerMessagePortAudio,this.ipcMessagePorts.audioWorkerFrameRequestPort,this.ipcMessagePorts.audioWorkerAudioInputPort]));
+logWorkletMain$$module$src$logger("initialization finished in main")()}else console.error("fatal: worker not reachable from worklet-main thread")}}var $jscompDefaultExport$$module$src$mains$worklet_main=AudioWorkletMainThread$$module$src$mains$worklet_main,module$src$mains$worklet_main={};module$src$mains$worklet_main.default=$jscompDefaultExport$$module$src$mains$worklet_main;const requestMicrophoneNode$$module$src$mains$io_utils=a=>{const b=void 0===navigator.mediaDevices?navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia:navigator.mediaDevices.getUserMedia;console.log("requesting microphone access");void 0===navigator.mediaDevices?b.call(navigator,{audio:{optional:[{echoCancellation:!1,sampleSize:32}]}},a,console.error):b.call(navigator.mediaDevices,{audio:{echoCancellation:!1,sampleSize:32}}).then(a).catch(console.error)};
+async function enableAudioInput$$module$src$mains$io_utils(){console.log("enabling audio input");requestMicrophoneNode$$module$src$mains$io_utils(async a=>{if(a){a=(await this.getAudioContext()).createMediaStreamSource(a);this.inputsCount=a.channelCount;const b=await this.getNode();a.connect(b)}})}var module$src$mains$io_utils={};module$src$mains$io_utils.enableAudioInput=enableAudioInput$$module$src$mains$io_utils;module$src$mains$io_utils.requestMicrophoneNode=requestMicrophoneNode$$module$src$mains$io_utils;var $jscompDefaultExport$$module$dist$__compiled_old_spn_worker_inline=()=>(window.URL||window.webkitURL).createObjectURL(new Blob(['(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(".");d=d||goog.global;a[0]in d||"undefined"==typeof d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE="en";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(".")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;\ngoog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;\ngoog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error(\'Module with namespace "\'+a+\'" already exists.\');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error(\'Module with namespace "\'+\na+\'" has been loaded incorrectly.\');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0});\ngoog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath="";goog.abstractMethod=function(){throw Error("unimplemented abstract method");};\ngoog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME="goog";\ngoog.hasBadLetScoping=null;\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if("function"===typeof a)d=a.call(void 0,d);else if("string"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error("Invalid module definition");var e=goog.moduleLoaderState_.moduleName;if("string"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&\nObject.seal&&"object"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error(\'Invalid module name "\'+e+\'"\');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};\ngoog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};\ngoog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};\ngoog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split("-");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join("-")};d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};\ngoog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,"&lt;"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&apos;/g,"\'").replace(/&quot;/g,\'"\').replace(/&amp;/g,"&"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};\ngoog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"").match(/Edge\\/(\\d+)(\\.\\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?"complete"!=a.readyState:"loading"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&"string"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=\ngoog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?");d=-1==d?c.length:d;if("base.js"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,"\\\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=\n[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error("Unregonized namespace: "+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},\ngoog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=\nfunction(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error("Bad dependency path or symbol: "+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_("goog.require could not find: "+a)},goog.DebugLoader_.prototype.loadDeps_=\nfunction(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error("Cannot call pause after the call to load.");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error("Double call to loaded.");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,\nmoduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||""})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error("Cannot register with defer after the call to load.");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};\ntry{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==\na.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?\nthis.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=\nfunction(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf("://");0<=b&&(a=a.substring(b+3),b=a.indexOf("/"),0<=b&&(a=a.substring(b+1)));return a},\ngoog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},\ngoog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error("Callback key "+a+" does not exist (was base.js loaded more than once?).");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==\nb.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error(\'Cannot write "\'+this.path+\'" after document load\');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&"complete"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?\' nonce="\'+c+\'"\':"";var f=\'<script src="\'+this.path+\'"\'+\nc+(goog.Dependency.defer_?" defer":"")+\' id="script-\'+e+\'">\\x3c/script>\';f+="<script"+c+">";f=goog.Dependency.defer_?f+("document.getElementById(\'script-"+e+"\').onload = function() {\\n goog.Dependency.callback_(\'"+e+"\', this);\\n};\\n"):f+("goog.Dependency.callback_(\'"+e+"\', document.getElementById(\'script-"+e+"\'));");f+="\\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement("script");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=\nc);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,\nb,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,m){var n="",p=goog.getScriptNonce_();p&&(n=\' nonce="\'+p+\'"\');l=m?\'<script type="module" crossorigin\'+n+">"+m+"\\x3c/script>":\'<script type="module" crossorigin src="\'+l+\'"\'+n+">\\x3c/script>";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,m){var n=d.createElement("script");n.defer=!0;n.async=!1;n.type="module";n.setAttribute("crossorigin",\n!0);var p=goog.getScriptNonce_();p&&(n.nonce=p);m?n.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(n)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);\na.setModuleState(goog.ModuleType.ES6)});f(void 0,\'goog.Dependency.callback_("\'+g+\'")\');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,\'import * as m from "\'+this.path+\'"; goog.Dependency.callback_("\'+h+\'", m)\');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,\'goog.Dependency.callback_("\'+\nk+\'")\')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=\ne.transform(e.contents_),e.contents_&&(e.contents_+="\\n//# sourceURL="+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var l=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(l));if(f)var m=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),m)});a.loaded()}}\nfunction d(){var l=goog.global.document,m=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(m);c()}),n=goog.getScriptNonce_();n="<script"+(n?\' nonce="\'+n+\'"\':"")+">"+goog.protectScriptTag_(\'goog.Dependency.callback_("\'+m+\'");\')+"\\x3c/script>";l.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(n):n)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,a.loaded()):\na.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&("ActiveXObject"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){"interactive"==h.readyState&&(h.onreadystatechange=\nk,c(),a.resume());"function"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,\nc,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?"goog.loadModule("+goog.global.JSON.stringify(a+"\\n//# sourceURL="+this.path+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+a+"\\n;return exports});\\n//# sourceURL="+this.path+"\\n"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=\nb||[];a=a.replace(/\\\\/g,"/");var e=goog.normalizePath_(goog.basePath+a);d&&"boolean"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?\nnew goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),\ngoog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy("goog#base#devonly#eval")||{createScript:goog.identity_}};const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.proxy"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.endpoint"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.releaseProxy"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.thrown"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>"object"===typeof a&&null!==a||"function"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=\n{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&\nthrowMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([["proxy",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],["throw",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);\nfunction expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener("message",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const m=h.slice(0,-1).reduce((p,q)=>p[q],a),n=h.reduce((p,q)=>p[q],a);switch(g){case "GET":var l=n;break;case "SET":m[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);\nl=!0;break;case "APPLY":l=n.apply(m,k);break;case "CONSTRUCT":const p=new n(...k);l=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case "ENDPOINT":const {port1:q,port2:r}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,r);l=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case "RELEASE":l=void 0;break;default:return}}catch(m){l={value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(l).catch(m=>\n({value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(m=>{const [n,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(m);b.postMessage(Object.assign(Object.assign({},n),{id:f}),p);"RELEASE"===g&&(b.removeEventListener("message",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return"MessagePort"===a.constructor.name}\nfunction closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error("Proxy has been released and is not useable");}\nfunction createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"RELEASE",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if("then"===\ng){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"GET",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,l]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"SET",path:[...b,g].map(m=>m.toString()),value:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"ENDPOINT"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if("bind"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\nb.slice(0,-1));const [k,l]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"APPLY",path:b.map(m=>m.toString()),argumentList:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"CONSTRUCT",path:b.map(l=>l.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}\nfunction processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}\nfunction proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c="*"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}\nfunction toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:"HANDLER",name:b,value:d},e]}return[{type:"RAW",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}\nfunction fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case "HANDLER":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case "RAW":return a.value}}\nfunction requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener("message",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener("message",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}\nfunction generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};\nvar LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b="log_with_warnings"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error("Invalid log level "+b+" allowed: "+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=\nfunction(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e="log_with_warnings"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>\nmodule$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split("{}");for(var k=[f.mockConsole,"%c"+b,c],l=0;l<h.length;l++)k.push(h[l]),void 0!==g[l]&&k.push(g[l]);if(h.length-1!==g.length)if("log_with_warnings"===f.logLevel)f.mockConsole.error("MissMatch amount of arguments");else if("log_raise_error"===f.logLevel)throw Error("MissMatch amount of arguments");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,\nc){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return"color: white; background-color: "+b+"; padding: 2px 6px; border-radius: 2px; font-size: 10px"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^\nd>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b="");b=a.getHash(b);for(var c="#",d=0;3>d;d++)c+=("00"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,"trace"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,"debug"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,\n"info"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,"warn"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,"error")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;\nconst isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};\nlogSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;\nmodule$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;\nmodule$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const handleCsoundStart$$module$src$workers$common_utils=(a,b,c,d,e)=>f=>{const {csound:g}=f,h=1===b.csoundShouldDaemonize(g);h&&(b.csoundSetOption(g,"--daemon"),b.csoundSetOption(g,"-odac"));const k=b.csoundStart(g),l=b.csoundGetOutputName(g)||"test.wav";logCommonUtils$$module$src$logger(`handleCsoundStart: actual csoundStart result ${k}, outputName: ${l}`)();0!==k&&a.post(`error: csoundStart failed while trying to render ${l},`+" look out for errors in options and syntax");setTimeout(()=>{const m=\nb._isRequestingRtMidiInput(g);if(h||m||l.includes("dac"))d(f);else if(a.broadcastPlayState("renderStarted"),e)e(f);else for(;0===b.csoundPerformKsmps(g););},0);return k},instantiateAudioPacket$$module$src$workers$common_utils=(a,b)=>{const c=[];for(let d=0;d<a;d++)c.push(new Float64Array(b));return c},renderFunction$$module$src$workers$common_utils=({libraryCsound:a,workerMessagePort:b})=>async({csound:c})=>{const d=a.csoundGetKr(c);let e=0,f=0;for(;("renderStarted"===b.vanillaWorkerState||"renderStarted"===\nb.workerState)&&0===e;)e=a.csoundPerformKsmps(c),f+=1,"function"===typeof setTimeout&&0===e&&0===f%(2*d)&&await new Promise(g=>setTimeout(g,0));b.broadcastPlayState("renderEnded")};var module$src$workers$common_utils={};module$src$workers$common_utils.handleCsoundStart=handleCsoundStart$$module$src$workers$common_utils;module$src$workers$common_utils.instantiateAudioPacket=instantiateAudioPacket$$module$src$workers$common_utils;module$src$workers$common_utils.renderFunction=renderFunction$$module$src$workers$common_utils;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;\nMessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;const WebkitAudioContext$$module$src$utils$new_audio_context=()=>{if(void 0!==window.webkitAudioContext)return window.webkitAudioContext;if(void 0!==window.AudioContext)return window.AudioContext},newAudioContext$$module$src$utils$new_audio_context=()=>{const a=WebkitAudioContext$$module$src$utils$new_audio_context();if(a)return new a};var module$src$utils$new_audio_context={};module$src$utils$new_audio_context.WebkitAudioContext=WebkitAudioContext$$module$src$utils$new_audio_context;\nmodule$src$utils$new_audio_context.newAudioContext=newAudioContext$$module$src$utils$new_audio_context;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}\nfunction adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}\nfunction and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}\nfunction anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.split("").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}\nfunction apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;\nfunction __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&"constructor"!==c&&("object"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),"function"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}\nfunction __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&"undefined"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}\nfunction __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,\nb,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;\nfor(;d<f;d++){if("object"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);"function"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&"constructor"!==e&&("object"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):"function"===typeof a[e]&&(d[e]=a[e](...c)));return d}\nfunction applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;\nfunction assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d="string"===typeof a?a.split(".").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e="object"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&\nisArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}\nfunction _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)}}}\nfunction curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error("First argument to _arity must be a non-negative integer no greater than ten");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}\nfunction bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}\nfunction chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error("min must not be greater than max in clamp(min, max, value)");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]="object"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}\nclass ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError("reduce: list must be array or iterable");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}\nconst reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);\nfunction _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)};default:throw Error("First argument to _arity must be a non-negative integer no greater than ten");}}\nfunction _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}\nfunction pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("pipe requires at least one argument");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}\nfunction compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("compose requires at least one argument");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof a?`${a}${b}`:[...a,...b]}\nfunction cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}\nfunction mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nfunction map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}\nfunction converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}\nfunction count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}\nconst dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}\nfunction type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return"Null";if(void 0===a)return"Undefined";if(Number.isNaN(a))return"NaN";a=Object.prototype.toString.call(a).slice(8,-1);return"AsyncFunction"===a?"Promise":a}\nfunction _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}\nfunction parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return["Error","TypeError"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}\nfunction equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if("Function"===c)return void 0===a.name?!1:a.name===b.name;if(["NaN","Undefined","Null"].includes(c))return!0;if("Number"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if(["String","Boolean"].includes(c))return a.toString()===\nb.toString();if("Array"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);\nif(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if("Set"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if("Object"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});\nreturn f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \\\'indexOf\\\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}\nclass _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Null","Undefined","NaN"].includes(b)?b in this.items?!1:this.items[b]=!0:["Object","Array"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}\nfunction uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}\nfunction drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}\nfunction dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if("function"!==typeof a)throw Error(`\'predicate\' is from wrong type ${typeof a}`);if(!c&&"string"!==typeof b)throw Error(`\'iterable\' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):\n(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join("")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}\nfunction dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}\nfunction dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join("")}\nfunction either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}\nfunction endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if("string"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}\nfunction prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}\nfunction evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if("Object"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return"Function"===e?a[d](c):"Object"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}\nfunction evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error("iterableType !== rulesType");if(!["Object","Array"].includes(c))throw Error(`\'iterable\' and \'rules\' are from wrong type ${c}`);return"Object"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,\nb)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}\nfunction filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error("Incorrect iterable input");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}\nfunction findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}\nfunction flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}\nfunction flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error("R.flip doesn\'t work with arity > 4");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}\nfunction fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}\nfunction groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError("list.reduce is not a function");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),l=0===e.length;h=h===b.length-1;if(k)return l&&e.push(f),e.push(g),h&&d.push(e),g;if(l)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},\nvoid 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b="."){return"string"===typeof a?a.split(b):a}\nfunction path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}\nfunction hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[0]||"":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;\nfunction identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===("boolean"===typeof a?a:a(...d))?b(...d):c(...d)}\nconst ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}\nfunction indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}\nfunction indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}\nfunction init$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}\nfunction intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}\nfunction isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Undefined","NaN","Number","Null"].includes(b)?!1:a?"Object"===b?0===Object.keys(a).length:"Array"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}\nfunction join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[a.length-1]||"":a[a.length-1]}\nfunction lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||"string"===typeof a?a.length:NaN}\nfunction lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return"[object String]"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}\nfunction updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}\nfunction lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}\nfunction mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}\nfunction mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}\nfunction mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}\nfunction mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}\nconst mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}\nfunction _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,\nd,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],\nb,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}\nfunction moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error("Rambda.move does not support negative indexes");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}\nfunction not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}\nfunction omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}\nfunction on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}\nfunction once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});\nfunction overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}\nfunction partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}\nfunction pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}\nfunction pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof b?[a].concat(b.split("")):[a].concat(b)}\nconst product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error("propsToPick is not a list");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}\nconst propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError("Both arguments to range must be numbers");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}\nfunction reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}\nconst replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.split("").reverse().join(""):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}\nconst set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}\nfunction split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||"Function"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}\nfunction take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():"string"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}\nfunction splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property \'slice\' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&"string"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,\nb)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error("First argument to splitEvery must be a positive integer");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}\nfunction splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property \'length\' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}\nfunction startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}\nfunction subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}\nfunction symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}\nfunction T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}\nfunction takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return"string"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}\nfunction takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join("")}\nfunction takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join("")}\nfunction tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof a)throw new TypeError(`\\u2018test\\u2019 requires a value of type RegExp as its first argument; received "${a}"`);return-1!==b.search(a)}\nfunction times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError("n must be an integer");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}\nfunction toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}\nfunction trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>["Promise","Function"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));\nfunction tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn \'${a}\'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}\nfunction union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}\nfunction uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}\nfunction uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}\nfunction unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}\nfunction values$$module$node_modules$rambda$dist$rambda_mjs(a){return"Object"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}\nfunction whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}\nfunction whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}\nfunction whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}\nfunction without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}\nfunction zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}\nfunction zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;let startPromize$$module$src$workers$old_spn_worker;\nconst getAudioContext$$module$src$workers$old_spn_worker=a=>window[a]||window.parent[`__csound_wasm_iframe_parent_${a}`]||newAudioContext$$module$src$utils$new_audio_context(),closeAndDeleteContext$$module$src$workers$old_spn_worker=async a=>{const b=window[a],c=window.parent[`__csound_wasm_iframe_parent_${a}`];if(b){if("closed"!==b.state)try{await b.close()}catch(d){}delete window[a]}if(c){if(b!==c&&"closed"!==c.state)try{await c.close()}catch(d){}delete window.parent[`__csound_wasm_iframe_parent_${a}`]}},getAudioNode$$module$src$workers$old_spn_worker=\na=>window[a+"Node"]||window.parent[`__csound_wasm_iframe_parent_${a}Node`],setAudioNode$$module$src$workers$old_spn_worker=(a,b)=>{window[a]?window[`${a}Node`]=b:window.parent[`__csound_wasm_iframe_parent_${a}Node`]=b},disconnectAudioNode$$module$src$workers$old_spn_worker=a=>{(a=getAudioNode$$module$src$workers$old_spn_worker(a))&&a.disconnect()},deleteAudioNode$$module$src$workers$old_spn_worker=a=>{window[a+"Node"]&&delete window[a+"Node"];window.parent[`__csound_wasm_iframe_parent_${a}Node`]&&\ndelete window.parent[`__csound_wasm_iframe_parent_${a}Node`]},PERIODS$$module$src$workers$old_spn_worker=4,spnInstances$$module$src$workers$old_spn_worker=new Map;\nclass CsoundScriptNodeProcessor$$module$src$workers$old_spn_worker{constructor({audioContext:a,contextUid:b,hardwareBufferSize:c,softwareBufferSize:d,inputsCount:e,outputsCount:f,sampleRate:g,audioContextIsProvided:h,autoConnect:k}){this.autoConnect=k;this.audioContextIsProvided=h;this.hardwareBufferSize=c;this.softwareBufferSize=d;this.inputsCount=e;this.outputsCount=f;this.sampleRate=g;this.vanillaOutputChannels=[];this.vanillaInputChannels=[];this.pendingFrames=this.vanillaAvailableFrames=this.vanillaInputReadIndex=\nthis.vanillaOutputReadIndex=0;this.vanillaFirstTransferDone=this.vanillaInitialized=!1;this.vanillaInputChannels=instantiateAudioPacket$$module$src$workers$common_utils(e,c);this.vanillaOutputChannels=instantiateAudioPacket$$module$src$workers$common_utils(f,c);this.audioContext=a;this.contextUid=b;this.scriptNode=this.audioContext.createScriptProcessor(this.softwareBufferSize,e,f);this.process=this.process.bind(this);a=this.process.bind(this);this.scriptNode.onaudioprocess=a;this.autoConnect?setAudioNode$$module$src$workers$old_spn_worker(b,\nthis.scriptNode.connect(this.audioContext.destination)):setAudioNode$$module$src$workers$old_spn_worker(b,this.scriptNode.context.destination);this.updateVanillaFrames=this.updateVanillaFrames.bind(this);this.initCallbacks=this.initCallbacks.bind(this)}async initCallbacks({workerMessagePort:a,transferInputFrames:b,requestPort:c}){this.workerMessagePort=a;this.transferInputFrames=b;this.requestPort=c;if("suspended"===this.audioContext.state){for(a=0;100>a;)if(await new Promise(d=>setTimeout(d,100)),\n"suspended"===this.audioContext.state)a+=1;else return;this.workerMessagePort.broadcastPlayState("realtimePerformancePaused")}}updateVanillaFrames({audioPacket:a,numFrames:b,readIndex:c}){this.pendingFrames-=b;if(a){for(let d=0;d<this.outputsCount;++d){let e=!1,f=b;(c+b)%this.hardwareBufferSize<c&&(e=!0,f=this.hardwareBufferSize-c);this.vanillaOutputChannels[d].set(a[d].subarray(0,f),c);e&&this.vanillaOutputChannels[d].set(a[d].subarray(f))}this.vanillaAvailableFrames+=b}this.vanillaFirstTransferDone||\n(this.vanillaFirstTransferDone=!0,startPromize$$module$src$workers$old_spn_worker&&startPromize$$module$src$workers$old_spn_worker())}process({inputBuffer:a,outputBuffer:b}){if("realtimePerformanceEnded"===this.workerMessagePort.vanillaWorkerState)return setPlayState$$module$src$workers$old_spn_worker({contextUid:this.contextUid,newPlayState:"realtimePerformanceEnded"}),!0;if(!this.vanillaInitialized){var c=this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker;this.requestPort.postMessage({readIndex:0,\nnumFrames:c});this.pendingFrames+=c;return this.vanillaInitialized=!0}if(!this.vanillaFirstTransferDone)return!0;c=range$$module$node_modules$rambda$dist$rambda_mjs(0,this.inputsCount).map(h=>a.getChannelData(h));const d=range$$module$node_modules$rambda$dist$rambda_mjs(0,this.outputsCount).map(h=>b.getChannelData(h));var e=0<c.length;const f=(this.vanillaOutputReadIndex+d[0].length)%this.hardwareBufferSize,g=e?(this.vanillaInputReadIndex+c[0].length)%this.hardwareBufferSize:0;if("realtimePerformanceStarted"!==\nthis.workerMessagePort.vanillaWorkerState&&"realtimePerformanceResumed"!==this.workerMessagePort.vanillaWorkerState)return d.forEach(h=>{h.fill(0)}),!0;if(this.vanillaAvailableFrames>=d[0].length){d.forEach((h,k)=>{h.set(this.vanillaOutputChannels[k].subarray(this.vanillaOutputReadIndex,f<this.vanillaOutputReadIndex?this.hardwareBufferSize:f))});if(0<this.inputsCount&&e&&0<c[0].length&&(e=this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker,c.forEach((h,k)=>{this.vanillaInputChannels[k].set(h,\nthis.vanillaInputReadIndex)}),0===g%e)){const h=[],k=(0===g?this.hardwareBufferSize:g)-e,l=0===g?this.hardwareBufferSize:g;this.vanillaInputChannels.forEach(m=>{h.push(m.subarray(k,l))});this.transferInputFrames(h)}this.vanillaOutputReadIndex=f;this.vanillaInputReadIndex=g;this.vanillaAvailableFrames-=d[0].length;this.bufferUnderrunCount=0}else 1<this.bufferUnderrunCount&&12>this.bufferUnderrunCount&&(this.workerMessagePort.post("Buffer underrun"),this.bufferUnderrunCount+=1),100===this.bufferUnderrunCount&&\n(this.workerMessagePort.post("FATAL: 100 buffers failed in a row"),this.workerMessagePort.broadcastPlayState("realtimePerformanceEnded"));this.vanillaAvailableFrames<this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker&&this.pendingFrames<this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker&&(this.requestPort.postMessage({readIndex:(this.vanillaAvailableFrames+f+this.pendingFrames)%this.hardwareBufferSize,numFrames:this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker}),\nthis.pendingFrames+=this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker);return!0}}\nconst initAudioInputPort$$module$src$workers$old_spn_worker=({audioInputPort:a})=>b=>a.postMessage(b),initMessagePort$$module$src$workers$old_spn_worker=({port:a})=>{const b=new $jscompDefaultExport$$module$src$utils$message_port_state;b.post=c=>a.postMessage({log:c});b.broadcastPlayState=c=>{"realtimePerformanceStarted"===b.vanillaWorkerState&&"realtimePerformanceStarted"===c||a.postMessage({playStateChange:c})};b.ready=!0;return b},initRequestPort$$module$src$workers$old_spn_worker=({requestPort:a,\nspnClassInstance:b})=>{a.addEventListener("message",c=>{const {audioPacket:d,readIndex:e,numFrames:f}=c.data;b.updateVanillaFrames({audioPacket:d,numFrames:f,readIndex:e})});a.start();return a},setPlayState$$module$src$workers$old_spn_worker=async({contextUid:a,newPlayState:b})=>{const c=spnInstances$$module$src$workers$old_spn_worker.get(a);c&&("resume"===b?("suspended"===c.audioContext.state&&c.audioContext.resume(),"running"===c.audioContext.state&&c.workerMessagePort.broadcastPlayState("realtimePerformanceResumed")):\nc.workerMessagePort&&("realtimePerformanceEnded"===b&&"realtimePerformanceEnded"!==c.workerMessagePort.vanillaWorkerState?(c.workerMessagePort.broadcastPlayState("realtimePerformanceEnded"),c.autoConnect&&disconnectAudioNode$$module$src$workers$old_spn_worker(a),deleteAudioNode$$module$src$workers$old_spn_worker(a),spnInstances$$module$src$workers$old_spn_worker.delete(a),c.autoConnect&&!c.audioContextIsProvided&&closeAndDeleteContext$$module$src$workers$old_spn_worker(a)):"realtimePerformanceResumed"===\nb&&"suspended"===c.audioContext.state&&c.audioContext.resume(),c.workerMessagePort.vanillaWorkerState=b))},initialize$$module$src$workers$old_spn_worker=async({contextUid:a,hardwareBufferSize:b,softwareBufferSize:c,inputsCount:d,outputsCount:e,sampleRate:f,audioInputPort:g,messagePort:h,requestPort:k,audioContextIsProvided:l,autoConnect:m,initialPlayState:n})=>{logOldSpnWorker$$module$src$logger("initializing old-spn worker in iframe")();startPromize$$module$src$workers$old_spn_worker=void 0;const p=\ngetAudioContext$$module$src$workers$old_spn_worker(a);b=new CsoundScriptNodeProcessor$$module$src$workers$old_spn_worker({audioContext:p,contextUid:a,hardwareBufferSize:b,softwareBufferSize:c,inputsCount:d,outputsCount:e,sampleRate:f,audioContextIsProvided:l,autoConnect:m});h=initMessagePort$$module$src$workers$old_spn_worker({port:h});g=initAudioInputPort$$module$src$workers$old_spn_worker({audioInputPort:g,spnClassInstance:b});initRequestPort$$module$src$workers$old_spn_worker({requestPort:k,spnClassInstance:b});\nb.initCallbacks({workerMessagePort:h,transferInputFrames:g,requestPort:k});spnInstances$$module$src$workers$old_spn_worker.set(a,b);if("realtimePerformanceStarted"===n)return await new Promise((q,r)=>{startPromize$$module$src$workers$old_spn_worker=q;setTimeout(()=>{if("function"===typeof startPromize$$module$src$workers$old_spn_worker)return r(Error("a call to start() timed out")),startPromize$$module$src$workers$old_spn_worker=void 0,-1},6E5)})};\nexpose$$module$node_modules$comlink$dist$esm$comlink_mjs({initialize:initialize$$module$src$workers$old_spn_worker,setPlayState:setPlayState$$module$src$workers$old_spn_worker},windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(window.parent));var module$src$workers$old_spn_worker={};}).call(this);\n//# sourceMappingURL=__compiled.old-spn.worker.js.map\n'])),
+module$dist$__compiled_old_spn_worker_inline={};module$dist$__compiled_old_spn_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_old_spn_worker_inline;let spnWorker$$module$src$mains$old_spn_main,proxyPort$$module$src$mains$old_spn_main,UID$$module$src$mains$old_spn_main=0;
+class ScriptProcessorNodeMainThread$$module$src$mains$old_spn_main{constructor({audioContext:a,audioContextIsProvided:b,autoConnect:c}){this.autoConnect=c;this.audioContextIsProvided=b;this.audioContext=a;this.softwareBufferSize=this.hardwareBufferSize=this.outputsCount=this.inputsCount=this.sampleRate=this.csoundWorkerMain=this.currentPlayState=void 0;this.scriptProcessorNode=!0;logOldSpnMain$$module$src$logger("ScriptProcessorNodeMainThread was constructed")()}async terminateInstance(){window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]&&
+(window[`__csound_wasm_iframe_parent_${this.contextUid}Node`].disconnect(),delete window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]);if(this.audioContext){if("closed"!==this.audioContext.state)try{await this.audioContext.close()}catch(a){}delete this.audioContext}proxyPort$$module$src$mains$old_spn_main&&(proxyPort$$module$src$mains$old_spn_main[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),proxyPort$$module$src$mains$old_spn_main=void 0);this.iFrameElement&&this.iFrameElement.remove();
+spnWorker$$module$src$mains$old_spn_main=void 0;UID$$module$src$mains$old_spn_main=0}async onPlayStateChange(a){if(this.currentPlayState!==a){switch(a){case "realtimePerformanceStarted":logOldSpnMain$$module$src$logger("event received: realtimePerformanceStarted")();this.currentPlayState=a;await this.initialize();await this.csoundWorkerMain.eventPromises.releaseStartPromise();this.publicEvents.triggerRealtimePerformanceStarted(this.csoundWorkerMain);break;case "realtimePerformanceEnded":logOldSpnMain$$module$src$logger("event received: realtimePerformanceEnded")();
+window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]&&(window[`__csound_wasm_iframe_parent_${this.contextUid}Node`].disconnect(),delete window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]);break;case "realtimePerformancePaused":this.csoundWorkerMain&&this.csoundWorkerMain.eventPromises&&(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformancePaused(this),await this.csoundWorkerMain.eventPromises.releasePausePromise());break;case "realtimePerformanceResumed":this.csoundWorkerMain&&
+this.csoundWorkerMain.eventPromises&&(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformanceResumed(this),await this.csoundWorkerMain.eventPromises.releaseResumePromise())}this.currentPlayState=a;!proxyPort$$module$src$mains$old_spn_main||"realtimePerformanceStarted"===a&&"renderStarted"===a||await proxyPort$$module$src$mains$old_spn_main.setPlayState({contextUid:this.contextUid,newPlayState:a})}}async initIframe(){if(void 0===window||void 0===window.document)throw new TypeError("Can only run SPN in Browser scope");
+const a=window.document;var b=['<!doctype html>\n<html lang="en">\n<head>\n<meta charset="UTF-8">\n</head>\n<body>',`<script type="text/javascript" src="${$jscompDefaultExport$$module$dist$__compiled_old_spn_worker_inline()}"></script>`,"</body>"].join("\n");b=new Blob([b],{type:"text/html"});this.iFrameElement=document.createElement("iframe");this.iFrameElement.src=URL.createObjectURL(b);this.iFrameElement.sandbox.add("allow-scripts","allow-same-origin");this.iFrameElement.style.cssText="position:absolute;left:0;top:-999px;width:1px;height:1px;";
+b=new Promise(c=>{this.iFrameElement.onload=()=>{c()}});a.body.append(this.iFrameElement);try{await b}catch(c){console.error(c)}spnWorker$$module$src$mains$old_spn_main=this.iFrameElement.contentWindow}async initialize(){if(!spnWorker$$module$src$mains$old_spn_main&&(await this.initIframe(),!spnWorker$$module$src$mains$old_spn_main)){console.error("SPN FATAL: Couldn't create iFrame");return}var a=`audioWorklet${UID$$module$src$mains$old_spn_main}`;this.contextUid=a;UID$$module$src$mains$old_spn_main+=
+1;proxyPort$$module$src$mains$old_spn_main||(proxyPort$$module$src$mains$old_spn_main=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(spnWorker$$module$src$mains$old_spn_main)));this.audioContext||(this.audioContextIsProvided&&console.error("fatal: the provided AudioContext was undefined"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));"closed"===this.audioContext.state&&(this.audioContextIsProvided&&
+console.error("fatal: the provided AudioContext was closed, falling back new AudioContext"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));this.audioContextIsProvided||this.sampleRate===this.audioContext.sampleRate||(this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));spnWorker$$module$src$mains$old_spn_main[a]=this.audioContext;window[`__csound_wasm_iframe_parent_${a}`]=this.audioContext;let b;this.isRequestingInput&&
+await new Promise(c=>{requestMicrophoneNode$$module$src$mains$io_utils(d=>{d&&(b=this.audioContext.createMediaStreamSource(d));c()})});logOldSpnMain$$module$src$logger("initializing proxyPort")();await proxyPort$$module$src$mains$old_spn_main.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({contextUid:a,hardwareBufferSize:32768,softwareBufferSize:2048,inputsCount:this.inputsCount,outputsCount:this.outputsCount,sampleRate:this.sampleRate,audioInputPort:this.ipcMessagePorts.audioWorkerAudioInputPort,
+messagePort:this.ipcMessagePorts.workerMessagePort2,requestPort:this.ipcMessagePorts.audioWorkerFrameRequestPort,audioContextIsProvided:this.audioContextIsProvided,autoConnect:this.autoConnect,initialPlayState:this.currentPlayState},[this.ipcMessagePorts.audioWorkerAudioInputPort,this.ipcMessagePorts.workerMessagePort2,this.ipcMessagePorts.audioWorkerFrameRequestPort]));logOldSpnMain$$module$src$logger("done initializing proxyPort")();(a=spnWorker$$module$src$mains$old_spn_main[`${a}Node`]||window[`__csound_wasm_iframe_parent_${a}Node`])&&
+b&&b.connect(a);this.publicEvents.triggerOnAudioNodeCreated(a);this.isRequestingMidi&&this.csoundWorkerMain&&this.csoundWorkerMain.handleMidiInput&&(logOldSpnMain$$module$src$logger("requesting for web-midi connection")(),requestMidi$$module$src$utils$request_midi({onMidiMessage:this.csoundWorkerMain.handleMidiInput.bind(this.csoundWorkerMain)}))}}var $jscompDefaultExport$$module$src$mains$old_spn_main=ScriptProcessorNodeMainThread$$module$src$mains$old_spn_main,module$src$mains$old_spn_main={};
+module$src$mains$old_spn_main.default=$jscompDefaultExport$$module$src$mains$old_spn_main;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=new WebAssembly.Global({value:"i32",mutable:!0},0);const h=new WebAssembly.Global({value:"i32",mutable:!0},0);let k=c.length;"function"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);"function"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k,
+b.exports.csoundModuleInit),k+=1);"function"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);"function"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=c.length,
+"function"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),"function"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error("Plugin doesn't export nececcary functions to quality as csound plugin.")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt);
+const WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants=
+10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants=
+20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants=
+31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41,
+WASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants=
+52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants=
+62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants=
+73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants=
+7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants=
+18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants=
+3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants=
+16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants=
+goog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants=
+goog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants=
+goog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants=
+goog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|
+WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|
+WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|
+WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|
+WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants=
+WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|
+WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|
+WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|
+WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|
+WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|
+WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,
+RIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants=
+1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants=
+0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;
+module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants;
+module$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants;
+module$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name="CustomError";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name="AssertionError";
+goog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split("%s");let c="";const d=a.length-1;for(let e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:"%s");return c+a[d]}
+function module$contents$goog$asserts_doAssertFailure(a,b,c,d){let e="Assertion failed",f;c?(e+=": "+c,f=d):a&&(e+=": "+a,f=b);a=new module$contents$goog$asserts_AssertionError(""+e,f||[]);module$contents$goog$asserts_errorHandler_(a)}goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(module$contents$goog$asserts_errorHandler_=a)};
+goog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&module$contents$goog$asserts_doAssertFailure("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&module$contents$goog$asserts_doAssertFailure("Expected to exist: %s.",[a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&module$contents$goog$asserts_errorHandler_(new module$contents$goog$asserts_AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"number"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"string"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"function"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&module$contents$goog$asserts_doAssertFailure("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!Array.isArray(a)&&module$contents$goog$asserts_doAssertFailure("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"boolean"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||module$contents$goog$asserts_doAssertFailure("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||module$contents$goog$asserts_doAssertFailure("Expected instanceof %s but got %s.",[module$contents$goog$asserts_getType(b),module$contents$goog$asserts_getType(a)],c,Array.prototype.slice.call(arguments,3));return a};
+goog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||"number"==typeof a&&isFinite(a)||module$contents$goog$asserts_doAssertFailure("Expected %s to be a finite number but it is not.",[a],b,Array.prototype.slice.call(arguments,2));return a};
+function module$contents$goog$asserts_getType(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;const module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.ASSUME_NATIVE_FUNCTIONS=module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS;function module$contents$goog$array_peek(a){return a[a.length-1]}goog.array.peek=module$contents$goog$array_peek;goog.array.last=module$contents$goog$array_peek;
+const module$contents$goog$array_indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};goog.array.indexOf=module$contents$goog$array_indexOf;
+const module$contents$goog$array_lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};
+goog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEach=module$contents$goog$array_forEach;
+function module$contents$goog$array_forEachRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)}goog.array.forEachRight=module$contents$goog$array_forEachRight;
+const module$contents$goog$array_filter=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){const d=a.length,e=[];let f=0;const g="string"===typeof a?a.split(""):a;for(let h=0;h<d;h++)if(h in g){const k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};goog.array.filter=module$contents$goog$array_filter;
+const module$contents$goog$array_map=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){const d=a.length,e=Array(d),f="string"===typeof a?a.split(""):a;for(let g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};goog.array.map=module$contents$goog$array_map;
+const module$contents$goog$array_reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEach(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduce=module$contents$goog$array_reduce;
+const module$contents$goog$array_reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEachRight(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduceRight=module$contents$goog$array_reduceRight;
+const module$contents$goog$array_some=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};goog.array.some=module$contents$goog$array_some;
+const module$contents$goog$array_every=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.every=module$contents$goog$array_every;
+function module$contents$goog$array_count(a,b,c){let d=0;module$contents$goog$array_forEach(a,function(e,f,g){b.call(c,e,f,g)&&++d},c);return d}goog.array.count=module$contents$goog$array_count;function module$contents$goog$array_find(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find;
+function module$contents$goog$array_findIndex(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1}goog.array.findIndex=module$contents$goog$array_findIndex;function module$contents$goog$array_findRight(a,b,c){b=module$contents$goog$array_findIndexRight(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight;
+function module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty;
+function module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt;
+function module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore;
+function module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast;
+function module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf;
+function module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)}
+goog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0<b){const c=Array(b);for(let d=0;d<b;d++)c[d]=a[d];return c}return[]}const module$contents$goog$array_clone=goog.array.toArray=module$contents$goog$array_toArray;goog.array.clone=module$contents$goog$array_toArray;
+function module$contents$goog$array_extend(a,b){for(let c=1;c<arguments.length;c++){const d=arguments[c];if(goog.isArrayLike(d)){const e=a.length||0,f=d.length||0;a.length=e+f;for(let g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}}goog.array.extend=module$contents$goog$array_extend;function module$contents$goog$array_splice(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,module$contents$goog$array_slice(arguments,1))}goog.array.splice=module$contents$goog$array_splice;
+function module$contents$goog$array_slice(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice;
+function module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e<a.length;){const g=a[e++],h=c(g);Object.prototype.hasOwnProperty.call(f,h)||(f[h]=!0,b[d++]=g)}b.length=d}goog.array.removeDuplicates=module$contents$goog$array_removeDuplicates;
+function module$contents$goog$array_binarySearch(a,b,c){return module$contents$goog$array_binarySearch_(a,c||module$contents$goog$array_defaultCompare,!1,b)}goog.array.binarySearch=module$contents$goog$array_binarySearch;function module$contents$goog$array_binarySelect(a,b,c){return module$contents$goog$array_binarySearch_(a,b,!0,void 0,c)}goog.array.binarySelect=module$contents$goog$array_binarySelect;
+function module$contents$goog$array_binarySearch_(a,b,c,d,e){let f=0,g=a.length,h;for(;f<g;){const k=f+(g-f>>>1);let n;n=c?b.call(e,a[k],k,a):b(d,a[k]);0<n?f=k+1:(g=k,h=!n)}return h?f:-f-1}function module$contents$goog$array_sort(a,b){a.sort(b||module$contents$goog$array_defaultCompare)}goog.array.sort=module$contents$goog$array_sort;
+function module$contents$goog$array_stableSort(a,b){const c=Array(a.length);for(let e=0;e<a.length;e++)c[e]={index:e,value:a[e]};const d=b||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(c,function(e,f){return d(e.value,f.value)||e.index-f.index});for(b=0;b<a.length;b++)a[b]=c[b].value}goog.array.stableSort=module$contents$goog$array_stableSort;
+function module$contents$goog$array_sortByKey(a,b,c){const d=c||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(a,function(e,f){return d(b(e),b(f))})}goog.array.sortByKey=module$contents$goog$array_sortByKey;function module$contents$goog$array_sortObjectsByKey(a,b,c){module$contents$goog$array_sortByKey(a,function(d){return d[b]},c)}goog.array.sortObjectsByKey=module$contents$goog$array_sortObjectsByKey;
+function module$contents$goog$array_isSorted(a,b,c){b=b||module$contents$goog$array_defaultCompare;for(let d=1;d<a.length;d++){const e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0}goog.array.isSorted=module$contents$goog$array_isSorted;function module$contents$goog$array_equals(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;const d=a.length;c=c||module$contents$goog$array_defaultCompareEquality;for(let e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0}
+goog.array.equals=module$contents$goog$array_equals;function module$contents$goog$array_compare3(a,b,c){c=c||module$contents$goog$array_defaultCompare;const d=Math.min(a.length,b.length);for(let e=0;e<d;e++){const f=c(a[e],b[e]);if(0!=f)return f}return module$contents$goog$array_defaultCompare(a.length,b.length)}goog.array.compare3=module$contents$goog$array_compare3;function module$contents$goog$array_defaultCompare(a,b){return a>b?1:a<b?-1:0}goog.array.defaultCompare=module$contents$goog$array_defaultCompare;
+function module$contents$goog$array_inverseDefaultCompare(a,b){return-module$contents$goog$array_defaultCompare(a,b)}goog.array.inverseDefaultCompare=module$contents$goog$array_inverseDefaultCompare;function module$contents$goog$array_defaultCompareEquality(a,b){return a===b}goog.array.defaultCompareEquality=module$contents$goog$array_defaultCompareEquality;
+function module$contents$goog$array_binaryInsert(a,b,c){c=module$contents$goog$array_binarySearch(a,b,c);return 0>c?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove;
+function module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;e<a.length;e++){const f=a[e],g=b.call(c,f,e,a);void 0!==g&&(d[g]||(d[g]=[])).push(f)}return d}goog.array.bucket=module$contents$goog$array_bucket;function module$contents$goog$array_bucketToMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d],f=b(e,d,a);if(void 0!==f){let g=c.get(f);g||(g=[],c.set(f,g));g.push(e)}}return c}goog.array.bucketToMap=module$contents$goog$array_bucketToMap;
+function module$contents$goog$array_toObject(a,b,c){const d={};module$contents$goog$array_forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d}goog.array.toObject=module$contents$goog$array_toObject;function module$contents$goog$array_toMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d];c.set(b(e,d,a),e)}return c}goog.array.toMap=module$contents$goog$array_toMap;
+function module$contents$goog$array_range(a,b,c){const d=[];let e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;d<b;d++)c[d]=a;return c}goog.array.repeat=module$contents$goog$array_repeat;
+function module$contents$goog$array_flatten(a){const b=[];for(let d=0;d<arguments.length;d++){const e=arguments[d];if(Array.isArray(e))for(let f=0;f<e.length;f+=8192){var c=module$contents$goog$array_slice(e,f,f+8192);c=module$contents$goog$array_flatten.apply(null,c);for(let g=0;g<c.length;g++)b.push(c[g])}else b.push(e)}return b}goog.array.flatten=module$contents$goog$array_flatten;
+function module$contents$goog$array_rotate(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])}goog.array.moveItem=module$contents$goog$array_moveItem;
+function module$contents$goog$array_zip(a){if(!arguments.length)return[];const b=[];let c=arguments[0].length;for(var d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){const e=[];for(let f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b}goog.array.zip=module$contents$goog$array_zip;function module$contents$goog$array_shuffle(a,b){b=b||Math.random;for(let c=a.length-1;0<c;c--){const d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}}
+goog.array.shuffle=module$contents$goog$array_shuffle;function module$contents$goog$array_copyByIndex(a,b){const c=[];module$contents$goog$array_forEach(b,function(d){c.push(a[d])});return c}goog.array.copyByIndex=module$contents$goog$array_copyByIndex;function module$contents$goog$array_concatMap(a,b,c){return module$contents$goog$array_concat.apply([],module$contents$goog$array_map(a,b,c))}goog.array.concatMap=module$contents$goog$array_concatMap;goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s",goog.dom.asserts.debugStringForType_(a))}return a};
+goog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&"undefined"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAnchorElement")};
+goog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLButtonElement")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLLinkElement")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLImageElement")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAudioElement")};
+goog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLVideoElement")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLInputElement")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLTextAreaElement")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLCanvasElement")};
+goog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLEmbedElement")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFormElement")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFrameElement")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLIFrameElement")};
+goog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLObjectElement")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLScriptElement")};
+goog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return"<object could not be stringified>"}else return void 0===a?"undefined":null===a?"null":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};
+goog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}};
+goog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}};
+goog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e<c;e++)d=b[e].apply(this,arguments);return d}};goog.functions.and=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(!b[d].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(b[d].apply(this,arguments))return!0;return!1}};
+goog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){let b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){let b=a;return function(){if(b){const c=b;b=null;c()}}};
+goog.functions.debounce=function(a,b,c){let d=0;return function(e){goog.global.clearTimeout(d);const f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){let d=0,e=!1,f=[];const g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);let k=f;f=[];a.apply(c,k)};return function(k){f=arguments;d?e=!0:h()}};
+goog.functions.rateLimit=function(a,b,c){let d=0;const e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.functions.isFunction=a=>"function"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||"";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};
+goog.DEBUG&&(goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got '"+a+"'");return"type_error:Const"};
+goog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+"#html":"";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={};
+class module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof
+module$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeScript, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeScript"}static stringify_(a){return JSON.stringify(a).replace(/</g,"\\x3c")}static createSafeScriptSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScript(a):
+a;return new module$contents$goog$html$SafeScript_SafeScript(a,module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE)}}module$contents$goog$html$SafeScript_SafeScript.EMPTY=function(){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("")}();goog.html.SafeScript=module$contents$goog$html$SafeScript_SafeScript;goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.UrlObject_=function(){};goog.fs.url.UrlObject_.prototype.createObjectURL=function(a){};goog.fs.url.UrlObject_.prototype.revokeObjectURL=function(a){};
+goog.fs.url.getUrlObject_=function(){const a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error("This browser doesn't seem to support blob URLs");};goog.fs.url.findUrlObject_=function(){return void 0!==goog.global.URL&&void 0!==goog.global.URL.createObjectURL?goog.global.URL:void 0!==goog.global.createObjectURL?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.fs.blob={};goog.fs.blob.getBlob=function(a){var b=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==b){b=new b;for(let c=0;c<arguments.length;c++)b.append(arguments[c]);return b.getBlob()}return goog.fs.blob.getBlobWithProperties(Array.prototype.slice.call(arguments))};
+goog.fs.blob.getBlobWithProperties=function(a,b,c){var d=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==d){d=new d;for(let e=0;e<a.length;e++)d.append(a[e],c);return d.getBlob(b)}if(void 0!==goog.global.Blob)return d={},b&&(d.type=b),c&&(d.endings=c),new Blob(a,d);throw Error("This browser doesn't seem to support creating Blobs");};goog.html.TrustedResourceUrl=class{constructor(a,b){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=b===goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+""}};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};
+goog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",c[2]||"",a)+goog.html.TrustedResourceUrl.stringifyParams_("#",d,b))};goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};
+goog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail("expected object of type TrustedResourceUrl, got '"+a+"' of type "+goog.typeOf(a));return"type_error:TrustedResourceUrl"};
+goog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error("Invalid TrustedResourceUrl format: "+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(d,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error('Found marker, "'+e+'", in format string, "'+c+'", but no valid label mapping found in args: '+JSON.stringify(b));d=b[e];return d instanceof goog.string.Const?goog.string.Const.unwrap(d):
+encodeURIComponent(String(d))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=RegExp("^((https:)?//[0-9a-z.:[\\]-]+/|/[^/\\\\]|[^:/\\\\%]+/|[^:/\\\\%]*[?#]|about:blank#)","i");goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;
+goog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b="",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.TrustedResourceUrl.fromSafeScript=function(a){a=goog.fs.blob.getBlobWithProperties([module$contents$goog$html$SafeScript_SafeScript.unwrap(a)],"text/javascript");a=goog.fs.url.createObjectUrl(a);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};
+goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScriptURL(a):a;return new goog.html.TrustedResourceUrl(a,goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};
+goog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if("string"===typeof c)return c?a+encodeURIComponent(c):"";for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var e=c[d];e=Array.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?"&":"")+encodeURIComponent(d)+"="+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))};
+goog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};
+goog.string.internal.newLineToBr=function(a,b){return a.replace(/(\r\n|\r|\n)/g,b?"<br />":"<br>")};
+goog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,"&amp;").replace(goog.string.internal.LT_RE_,"&lt;").replace(goog.string.internal.GT_RE_,"&gt;").replace(goog.string.internal.QUOT_RE_,"&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.internal.NULL_RE_,"&#0;");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.internal.AMP_RE_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.internal.LT_RE_,
+"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.internal.GT_RE_,"&gt;"));-1!=a.indexOf('"')&&(a=a.replace(goog.string.internal.QUOT_RE_,"&quot;"));-1!=a.indexOf("'")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;"));-1!=a.indexOf("\x00")&&(a=a.replace(goog.string.internal.NULL_RE_,"&#0;"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/"/g;goog.string.internal.SINGLE_QUOTE_RE_=/'/g;
+goog.string.internal.NULL_RE_=/\x00/g;goog.string.internal.ALL_RE_=/[\x00&<>"']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g," &#160;"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};
+goog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(".");b=goog.string.internal.trim(String(b)).split(".");const d=Math.max(a.length,b.length);for(let g=0;0==c&&g<d;g++){var e=a[g]||"",f=b[g]||"";do{e=/(\d*)(\D*)(.*)/.exec(e)||["","","",""];f=/(\d*)(\D*)(.*)/.exec(f)||["","","",""];if(0==e[0].length&&0==f[0].length)break;c=0==e[1].length?0:parseInt(e[1],10);const h=0==f[1].length?0:parseInt(f[1],10);c=goog.string.internal.compareElements_(c,h)||
+goog.string.internal.compareElements_(0==e[2].length,0==f[2].length)||goog.string.internal.compareElements_(e[2],f[2]);e=e[3];f=f[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};
+goog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};
+goog.html.SAFE_MIME_TYPE_PATTERN_=RegExp('^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\w+=(?:\\w+|"[\\w;,= ]+"))*$',"i");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};
+goog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)};
+goog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert("MediaSource"in goog.global,"No support for MediaSource");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\/]+=*$/i;
+goog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,"");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SIP_URL_PATTERN_=RegExp("^sip[s]?:[+a-z0-9_.!$%&'*\\/=^`{|}~-]+@([a-z0-9-]+\\.)+[a-z0-9]{2,63}$","i");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"fb-messenger://share")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"whatsapp://send")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf("#");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"ssh://")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\/\/([^\/]+)\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\/\/([^\/]+)\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\/\/([^\/]+)\//,a,b)};
+goog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(d){return goog.string.Const.unwrap(d)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};
+goog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.trySanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SAFE_URL_PATTERN_.test(a)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):goog.html.SafeUrl.tryFromDataUrl(a)};
+goog.html.SafeUrl.sanitize=function(a){return goog.html.SafeUrl.trySanitize(a)||goog.html.SafeUrl.INNOCUOUS_URL};
+goog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),"%s does not match the safe URL pattern",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){return new goog.html.SafeUrl(a,goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};goog.html.SafeUrl.INNOCUOUS_URL=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.SafeUrl.INNOCUOUS_STRING);goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");const module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE={};
+class module$contents$goog$html$SafeStyle_SafeStyle{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=b===module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;(0,goog.asserts.assert)((0,goog.string.internal.endsWith)(a,";"),`Last character of style string is not ';': ${a}`);(0,goog.asserts.assert)((0,goog.string.internal.contains)(a,
+":"),"Style string must contain at least one ':', to specify a \"name: value\" pair: "+a);return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_}toString(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString()}static unwrap(a){if(a instanceof module$contents$goog$html$SafeStyle_SafeStyle&&a.constructor===module$contents$goog$html$SafeStyle_SafeStyle)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;
+(0,goog.asserts.fail)(`expected object of type SafeStyle, got '${a}`+"' of type "+goog.typeOf(a));return"type_error:SafeStyle"}static createSafeStyleSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyle_SafeStyle(a,module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE)}static create(a){let b="";for(let c in a)if(Object.prototype.hasOwnProperty.call(a,c)){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(`Name allows only [-_a-zA-Z0-9], got: ${c}`);let d=a[c];null!=d&&
+(d=Array.isArray(d)?d.map(module$contents$goog$html$SafeStyle_sanitizePropertyValue).join(" "):module$contents$goog$html$SafeStyle_sanitizePropertyValue(d),b+=`${c}:${d};`)}return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c);
+return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING="zClosurez";
+function module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return'url("'+goog.html.SafeUrl.unwrap(a).replace(/</g,"%3c").replace(/[\\"]/g,"\\$&")+'")';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):module$contents$goog$html$SafeStyle_sanitizePropertyValueString(String(a));if(/[{;}]/.test(a))throw new module$contents$goog$asserts_AssertionError("Value does not allow [{;}], got: %s.",[a]);return a}
+function module$contents$goog$html$SafeStyle_sanitizePropertyValueString(a){const b=a.replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_URL_RE,"url");if(module$contents$goog$html$SafeStyle_VALUE_RE.test(b)){if(module$contents$goog$html$SafeStyle_COMMENT_RE.test(a))return(0,goog.asserts.fail)(`String value disallows comments, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;
+if(!module$contents$goog$html$SafeStyle_hasBalancedQuotes(a))return(0,goog.asserts.fail)(`String value requires balanced quotes, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;if(!module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a))return(0,goog.asserts.fail)("String value requires balanced square brackets and one identifier per pair of brackets, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING}else return(0,goog.asserts.fail)(`String value allows only ${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}`+
+" and simple functions, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;return module$contents$goog$html$SafeStyle_sanitizeUrl(a)}function module$contents$goog$html$SafeStyle_hasBalancedQuotes(a){let b=!0,c=!0;for(let d=0;d<a.length;d++){const e=a.charAt(d);"'"==e&&c?b=!b:'"'==e&&b&&(c=!c)}return b&&c}
+function module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a){let b=!0;const c=/^[-_a-zA-Z0-9]$/;for(let d=0;d<a.length;d++){const e=a.charAt(d);if("]"==e){if(b)return!1;b=!0}else if("["==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b}
+const module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS="[-,.\"'%_!#/ a-zA-Z0-9\\[\\]]",module$contents$goog$html$SafeStyle_VALUE_RE=new RegExp(`^${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}+\$`),module$contents$goog$html$SafeStyle_URL_RE=RegExp("\\b(url\\([ \t\n]*)('[ -&(-\\[\\]-~]*'|\"[ !#-\\[\\]-~]*\"|[!#-&*-\\[\\]-~]*)([ \t\n]*\\))","g"),module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS="calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax radial-gradient repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)? steps var".split(" "),
+module$contents$goog$html$SafeStyle_FUNCTIONS_RE=new RegExp("\\b("+module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS.join("|")+")\\([-+*/0-9a-zA-Z.%#\\[\\], ]+\\)","g"),module$contents$goog$html$SafeStyle_COMMENT_RE=/\/\*/;function module$contents$goog$html$SafeStyle_sanitizeUrl(a){return a.replace(module$contents$goog$html$SafeStyle_URL_RE,(b,c,d,e)=>{let f="";d=d.replace(/^(['"])(.*)\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})}
+goog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1}
+function module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)}
+function module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a}function module$contents$goog$object_containsKey(a,b){return null!==a&&b in a}
+function module$contents$goog$object_containsValue(a,b){for(const c in a)if(a[c]==b)return!0;return!1}function module$contents$goog$object_findKey(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return d}function module$contents$goog$object_findValue(a,b,c){return(b=module$contents$goog$object_findKey(a,b,c))&&a[b]}function module$contents$goog$object_isEmpty(a){for(const b in a)return!1;return!0}function module$contents$goog$object_clear(a){for(const b in a)delete a[b]}
+function module$contents$goog$object_remove(a,b){let c;(c=b in a)&&delete a[b];return c}function module$contents$goog$object_add(a,b,c){if(null!==a&&b in a)throw Error(`The object already contains the key "${b}"`);module$contents$goog$object_set(a,b,c)}function module$contents$goog$object_get(a,b,c){return null!==a&&b in a?a[b]:c}function module$contents$goog$object_set(a,b,c){a[b]=c}function module$contents$goog$object_setIfUndefined(a,b,c){return b in a?a[b]:a[b]=c}
+function module$contents$goog$object_setWithReturnValueIfNotSet(a,b,c){if(b in a)return a[b];c=c();return a[b]=c}function module$contents$goog$object_equals(a,b){for(const c in a)if(!(c in b)||a[c]!==b[c])return!1;for(const c in b)if(!(c in a))return!1;return!0}function module$contents$goog$object_clone(a){const b={};for(const c in a)b[c]=a[c];return b}
+function module$contents$goog$object_unsafeClone(a){if(!a||"object"!==typeof a)return a;if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);if(a instanceof Date)return new Date(a.getTime());const b=Array.isArray(a)?[]:"function"!==typeof ArrayBuffer||"function"!==typeof ArrayBuffer.isView||!ArrayBuffer.isView(a)||a instanceof DataView?{}:new a.constructor(a.length);for(const c in a)b[c]=
+module$contents$goog$object_unsafeClone(a[c]);return b}function module$contents$goog$object_transpose(a){const b={};for(const c in a)b[a[c]]=c;return b}const module$contents$goog$object_PROTOTYPE_FIELDS="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
+function module$contents$goog$object_extend(a,b){let c,d;for(let e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(let f=0;f<module$contents$goog$object_PROTOTYPE_FIELDS.length;f++)c=module$contents$goog$object_PROTOTYPE_FIELDS[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}}
+function module$contents$goog$object_create(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");const c={};for(let d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c}
+function module$contents$goog$object_createSet(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_createSet.apply(null,arguments[0]);const c={};for(let d=0;d<b;d++)c[arguments[d]]=!0;return c}function module$contents$goog$object_createImmutableView(a){let b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b}function module$contents$goog$object_isImmutableView(a){return!!Object.isFrozen&&Object.isFrozen(a)}
+function module$contents$goog$object_getAllPropertyNames(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return module$contents$goog$object_getKeys(a);const d={};for(;a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){const e=Object.getOwnPropertyNames(a);for(let f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return module$contents$goog$object_getKeys(d)}
+function module$contents$goog$object_getSuperClass(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor}goog.object.add=module$contents$goog$object_add;goog.object.clear=module$contents$goog$object_clear;goog.object.clone=module$contents$goog$object_clone;goog.object.contains=module$contents$goog$object_contains;goog.object.containsKey=module$contents$goog$object_containsKey;goog.object.containsValue=module$contents$goog$object_containsValue;goog.object.create=module$contents$goog$object_create;
+goog.object.createImmutableView=module$contents$goog$object_createImmutableView;goog.object.createSet=module$contents$goog$object_createSet;goog.object.equals=module$contents$goog$object_equals;goog.object.every=module$contents$goog$object_every;goog.object.extend=module$contents$goog$object_extend;goog.object.filter=module$contents$goog$object_filter;goog.object.findKey=module$contents$goog$object_findKey;goog.object.findValue=module$contents$goog$object_findValue;goog.object.forEach=module$contents$goog$object_forEach;
+goog.object.get=module$contents$goog$object_get;goog.object.getAllPropertyNames=module$contents$goog$object_getAllPropertyNames;goog.object.getAnyKey=module$contents$goog$object_getAnyKey;goog.object.getAnyValue=module$contents$goog$object_getAnyValue;goog.object.getCount=module$contents$goog$object_getCount;goog.object.getKeys=module$contents$goog$object_getKeys;goog.object.getSuperClass=module$contents$goog$object_getSuperClass;goog.object.getValueByKeys=module$contents$goog$object_getValueByKeys;
+goog.object.getValues=module$contents$goog$object_getValues;goog.object.isEmpty=module$contents$goog$object_isEmpty;goog.object.isImmutableView=module$contents$goog$object_isImmutableView;goog.object.map=module$contents$goog$object_map;goog.object.remove=module$contents$goog$object_remove;goog.object.set=module$contents$goog$object_set;goog.object.setIfUndefined=module$contents$goog$object_setIfUndefined;goog.object.setWithReturnValueIfNotSet=module$contents$goog$object_setWithReturnValueIfNotSet;
+goog.object.some=module$contents$goog$object_some;goog.object.transpose=module$contents$goog$object_transpose;goog.object.unsafeClone=module$contents$goog$object_unsafeClone;const module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE={};
+class module$contents$goog$html$SafeStyleSheet_SafeStyleSheet{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=b===module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString()}static createRule(a,b){if((0,goog.string.internal.contains)(a,"<"))throw Error(`Selector does not allow '<', got: ${a}`);const c=a.replace(/('|")((?!\1)[^\r\n\f\\]|\\[\s\S])*\1/g,
+"");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\]()=^$|]+$/.test(c))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: "+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error("() and [] in selector must be balanced, got: "+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/</g,"\\3C ")+"}";
+return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}static hasBalancedBrackets_(a){const b={"(":")","[":"]"},c=[];for(let d=0;d<a.length;d++){const e=a[d];if(b[e])c.push(b[e]);else if(module$contents$goog$object_contains(b,e)&&c.pop()!=e)return!1}return 0==c.length}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments,
+c);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,"<"),`Forbidden '<' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof
+module$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeStyleSheet, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}}
+module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A="A";goog.dom.TagName.ABBR="ABBR";goog.dom.TagName.ACRONYM="ACRONYM";goog.dom.TagName.ADDRESS="ADDRESS";goog.dom.TagName.APPLET="APPLET";goog.dom.TagName.AREA="AREA";goog.dom.TagName.ARTICLE="ARTICLE";goog.dom.TagName.ASIDE="ASIDE";goog.dom.TagName.AUDIO="AUDIO";goog.dom.TagName.B="B";goog.dom.TagName.BASE="BASE";goog.dom.TagName.BASEFONT="BASEFONT";goog.dom.TagName.BDI="BDI";goog.dom.TagName.BDO="BDO";
+goog.dom.TagName.BIG="BIG";goog.dom.TagName.BLOCKQUOTE="BLOCKQUOTE";goog.dom.TagName.BODY="BODY";goog.dom.TagName.BR="BR";goog.dom.TagName.BUTTON="BUTTON";goog.dom.TagName.CANVAS="CANVAS";goog.dom.TagName.CAPTION="CAPTION";goog.dom.TagName.CENTER="CENTER";goog.dom.TagName.CITE="CITE";goog.dom.TagName.CODE="CODE";goog.dom.TagName.COL="COL";goog.dom.TagName.COLGROUP="COLGROUP";goog.dom.TagName.COMMAND="COMMAND";goog.dom.TagName.DATA="DATA";goog.dom.TagName.DATALIST="DATALIST";goog.dom.TagName.DD="DD";
+goog.dom.TagName.DEL="DEL";goog.dom.TagName.DETAILS="DETAILS";goog.dom.TagName.DFN="DFN";goog.dom.TagName.DIALOG="DIALOG";goog.dom.TagName.DIR="DIR";goog.dom.TagName.DIV="DIV";goog.dom.TagName.DL="DL";goog.dom.TagName.DT="DT";goog.dom.TagName.EM="EM";goog.dom.TagName.EMBED="EMBED";goog.dom.TagName.FIELDSET="FIELDSET";goog.dom.TagName.FIGCAPTION="FIGCAPTION";goog.dom.TagName.FIGURE="FIGURE";goog.dom.TagName.FONT="FONT";goog.dom.TagName.FOOTER="FOOTER";goog.dom.TagName.FORM="FORM";
+goog.dom.TagName.FRAME="FRAME";goog.dom.TagName.FRAMESET="FRAMESET";goog.dom.TagName.H1="H1";goog.dom.TagName.H2="H2";goog.dom.TagName.H3="H3";goog.dom.TagName.H4="H4";goog.dom.TagName.H5="H5";goog.dom.TagName.H6="H6";goog.dom.TagName.HEAD="HEAD";goog.dom.TagName.HEADER="HEADER";goog.dom.TagName.HGROUP="HGROUP";goog.dom.TagName.HR="HR";goog.dom.TagName.HTML="HTML";goog.dom.TagName.I="I";goog.dom.TagName.IFRAME="IFRAME";goog.dom.TagName.IMG="IMG";goog.dom.TagName.INPUT="INPUT";
+goog.dom.TagName.INS="INS";goog.dom.TagName.ISINDEX="ISINDEX";goog.dom.TagName.KBD="KBD";goog.dom.TagName.KEYGEN="KEYGEN";goog.dom.TagName.LABEL="LABEL";goog.dom.TagName.LEGEND="LEGEND";goog.dom.TagName.LI="LI";goog.dom.TagName.LINK="LINK";goog.dom.TagName.MAIN="MAIN";goog.dom.TagName.MAP="MAP";goog.dom.TagName.MARK="MARK";goog.dom.TagName.MATH="MATH";goog.dom.TagName.MENU="MENU";goog.dom.TagName.MENUITEM="MENUITEM";goog.dom.TagName.META="META";goog.dom.TagName.METER="METER";
+goog.dom.TagName.NAV="NAV";goog.dom.TagName.NOFRAMES="NOFRAMES";goog.dom.TagName.NOSCRIPT="NOSCRIPT";goog.dom.TagName.OBJECT="OBJECT";goog.dom.TagName.OL="OL";goog.dom.TagName.OPTGROUP="OPTGROUP";goog.dom.TagName.OPTION="OPTION";goog.dom.TagName.OUTPUT="OUTPUT";goog.dom.TagName.P="P";goog.dom.TagName.PARAM="PARAM";goog.dom.TagName.PICTURE="PICTURE";goog.dom.TagName.PRE="PRE";goog.dom.TagName.PROGRESS="PROGRESS";goog.dom.TagName.Q="Q";goog.dom.TagName.RP="RP";goog.dom.TagName.RT="RT";
+goog.dom.TagName.RTC="RTC";goog.dom.TagName.RUBY="RUBY";goog.dom.TagName.S="S";goog.dom.TagName.SAMP="SAMP";goog.dom.TagName.SCRIPT="SCRIPT";goog.dom.TagName.SECTION="SECTION";goog.dom.TagName.SELECT="SELECT";goog.dom.TagName.SMALL="SMALL";goog.dom.TagName.SOURCE="SOURCE";goog.dom.TagName.SPAN="SPAN";goog.dom.TagName.STRIKE="STRIKE";goog.dom.TagName.STRONG="STRONG";goog.dom.TagName.STYLE="STYLE";goog.dom.TagName.SUB="SUB";goog.dom.TagName.SUMMARY="SUMMARY";goog.dom.TagName.SUP="SUP";
+goog.dom.TagName.SVG="SVG";goog.dom.TagName.TABLE="TABLE";goog.dom.TagName.TBODY="TBODY";goog.dom.TagName.TD="TD";goog.dom.TagName.TEMPLATE="TEMPLATE";goog.dom.TagName.TEXTAREA="TEXTAREA";goog.dom.TagName.TFOOT="TFOOT";goog.dom.TagName.TH="TH";goog.dom.TagName.THEAD="THEAD";goog.dom.TagName.TIME="TIME";goog.dom.TagName.TITLE="TITLE";goog.dom.TagName.TR="TR";goog.dom.TagName.TRACK="TRACK";goog.dom.TagName.TT="TT";goog.dom.TagName.U="U";goog.dom.TagName.UL="UL";goog.dom.TagName.VAR="VAR";
+goog.dom.TagName.VIDEO="VIDEO";goog.dom.TagName.WBR="WBR";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE="",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a};
+const module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:""}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null}
+function module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData();
+function module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal="string"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal}
+function module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal}
+function module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)}
+function module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp("([A-Z][\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?","g"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT;
+goog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent;
+goog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_=
+!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error("Unsafe call to resetForTesting");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("fullVersionList");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("platformVersion");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:"Android Browser",CHROMIUM:"Chromium",EDGE:"Microsoft Edge",FIREFOX:"Firefox",IE:"Internet Explorer",OPERA:"Opera",SAFARI:"Safari",SILK:"Silk"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand;
+function module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0<a.brands.length}
+function module$contents$goog$labs$userAgent$browser_hasFullVersionList(){return module$contents$goog$labs$userAgent$browser_isAtLeast(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM,98)}function module$contents$goog$labs$userAgent$browser_matchOpera(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Opera")}
+function module$contents$goog$labs$userAgent$browser_matchIE(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Trident")||module$contents$goog$labs$userAgent$util_matchUserAgent("MSIE")}function module$contents$goog$labs$userAgent$browser_matchEdgeHtml(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Edge")}
+function module$contents$goog$labs$userAgent$browser_matchEdgeChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.EDGE):module$contents$goog$labs$userAgent$util_matchUserAgent("Edg/")}
+function module$contents$goog$labs$userAgent$browser_matchOperaChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.OPERA):module$contents$goog$labs$userAgent$util_matchUserAgent("OPR")}
+function module$contents$goog$labs$userAgent$browser_matchFirefox(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Firefox")||module$contents$goog$labs$userAgent$util_matchUserAgent("FxiOS")}
+function module$contents$goog$labs$userAgent$browser_matchSafari(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Safari")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchCoast()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_matchEdgeChromium()||module$contents$goog$labs$userAgent$browser_matchOperaChromium()||
+module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_isSilk()||module$contents$goog$labs$userAgent$util_matchUserAgent("Android"))}function module$contents$goog$labs$userAgent$browser_matchCoast(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Coast")}
+function module$contents$goog$labs$userAgent$browser_matchIosWebview(){return(module$contents$goog$labs$userAgent$util_matchUserAgent("iPad")||module$contents$goog$labs$userAgent$util_matchUserAgent("iPhone"))&&!module$contents$goog$labs$userAgent$browser_matchSafari()&&!module$contents$goog$labs$userAgent$browser_matchChrome()&&!module$contents$goog$labs$userAgent$browser_matchCoast()&&!module$contents$goog$labs$userAgent$browser_matchFirefox()&&module$contents$goog$labs$userAgent$util_matchUserAgent("AppleWebKit")}
+function module$contents$goog$labs$userAgent$browser_matchChrome(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM):(module$contents$goog$labs$userAgent$util_matchUserAgent("Chrome")||module$contents$goog$labs$userAgent$util_matchUserAgent("CriOS"))&&!module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_isSilk()}
+function module$contents$goog$labs$userAgent$browser_matchAndroidBrowser(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Android")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_isSilk())}const module$contents$goog$labs$userAgent$browser_isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;
+goog.labs.userAgent.browser.isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;const module$contents$goog$labs$userAgent$browser_isIE=module$contents$goog$labs$userAgent$browser_matchIE;goog.labs.userAgent.browser.isIE=module$contents$goog$labs$userAgent$browser_matchIE;const module$contents$goog$labs$userAgent$browser_isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;goog.labs.userAgent.browser.isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;
+const module$contents$goog$labs$userAgent$browser_isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;goog.labs.userAgent.browser.isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;const module$contents$goog$labs$userAgent$browser_isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;goog.labs.userAgent.browser.isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;
+const module$contents$goog$labs$userAgent$browser_isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;goog.labs.userAgent.browser.isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;const module$contents$goog$labs$userAgent$browser_isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;goog.labs.userAgent.browser.isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;const module$contents$goog$labs$userAgent$browser_isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;
+goog.labs.userAgent.browser.isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;const module$contents$goog$labs$userAgent$browser_isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;goog.labs.userAgent.browser.isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;const module$contents$goog$labs$userAgent$browser_isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;goog.labs.userAgent.browser.isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;
+const module$contents$goog$labs$userAgent$browser_isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;goog.labs.userAgent.browser.isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;function module$contents$goog$labs$userAgent$browser_isSilk(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Silk")}goog.labs.userAgent.browser.isSilk=module$contents$goog$labs$userAgent$browser_isSilk;
+function module$contents$goog$labs$userAgent$browser_createVersionMap(a){const b={};a.forEach(c=>{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||""}
+function module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b(["Version","Opera"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()?
+b(["Edge"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b(["Edg"]):module$contents$goog$labs$userAgent$browser_isSilk()?b(["Silk"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b(["Chrome","CriOS","HeadlessChrome"]):(a=a[2])&&a[1]||""}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion;
+function module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher;
+function module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\d\.]*)/.exec(a);if(b&&b[1])return b[1];b="";const c=/MSIE +([\d\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\/(\d.\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b}
+function module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):"";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c(["Version",
+"Opera"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c(["OPR"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c(["Edge"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c(["Edg"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c(["Chrome","CriOS","HeadlessChrome"])}return a===
+module$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&&
+a[1]||"":""}
+function module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(".")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(""===b)return NaN;b=b.split(".")}return 0===b.length?NaN:Number(b[0])}
+function module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast;
+function module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost;
+class module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a=
+await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;
+async function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions;
+goog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()};
+function module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b="";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(""===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a,
+c,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf;
+function module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return""}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)}
+goog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={};
+class module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&&
+a.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got '${a}' of type `+goog.typeOf(a));return"type_error:SafeHtml"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof
+module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\x3c!--"+
+goog.string.internal.htmlEscape(a)+"--\x3e")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:"");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?
+`Tag name <${a}> is not allowed for SafeHtml.`:"");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:""},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?
+"The browser does not support sandboxed iframes.":"");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a);
+a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if("language"==d||"src"==d||"text"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set "${d}" attribute`:"");}c="";a=module$contents$goog$array_concat(a);for(d=0;d<
+a.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:"text/css"},{},b);let c="";a=module$contents$goog$array_concat(a);for(let d=0;d<a.length;d++)c+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(a[d]);
+a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",b,a)}static createMetaRefresh(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(module$contents$goog$labs$userAgent$browser_matchIE()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml())&&goog.string.internal.contains(a,";")&&(a="'"+a.replace(/'/g,"%27")+"'");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",
+{"http-equiv":"refresh",content:(b||0)+"; url="+a})}static join(a,b){a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);const c=[],d=e=>{Array.isArray(e)?e.forEach(d):(e=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(e),c.push(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(e)))};b.forEach(d);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c.join(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static concat(a){return module$contents$goog$html$SafeHtml_SafeHtml.join(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY,
+Array.prototype.slice.call(arguments))}static createSafeHtmlSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createHTML(a):a;return new module$contents$goog$html$SafeHtml_SafeHtml(a,module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE)}static createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(a,b,c){b=`<${a}`+module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes(a,b);null==c?c=[]:Array.isArray(c)||(c=[c]);goog.dom.tags.isVoidTag(a.toLowerCase())?
+(goog.asserts.assert(!c.length,`Void tag <${a}> does not allow content.`),b+=">"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=">"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+"</"+a+">");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c="";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?
+`Invalid attribute name "${d}".`:"");const e=b[d];null!=e&&(c+=" "+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,"Must be lower case"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c,
+f)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override "${e}" attribute, got "`+f+'" with value "'+c[f]+'"':"");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape;
+const module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0,
+[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0};
+function module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'Attribute "style" not supported.':"");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?
+`Attribute "${b}`+'" requires goog.string.Const value, "'+c+'" given.':"");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if("string"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute "${b}" on tag "${a}`+'" requires goog.html.SafeUrl, goog.string.Const, or string, value "'+
+c+'" given.':"");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert("string"===typeof c||"number"===typeof c,"String or number value expected, got "+typeof c+" with value: "+c);return`${b}="`+goog.string.internal.htmlEscape(String(c))+'"'}
+function module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'The "style" attribute requires goog.html.SafeStyle or map of style properties, '+typeof a+" given: "+a:"");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)}
+module$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||"",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>")}();
+goog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};
+goog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&"undefined"===typeof document)return!1;var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement});
+goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};
+goog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};
+goog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML to be immediatelly used."),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};
+goog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)};
+goog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};
+goog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};
+goog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};
+goog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};
+goog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):
+b instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};
+goog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute("nonce",b)};
+goog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))};
+goog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||"";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)};
+goog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,"text/html")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)};
+goog.dom.safe.createImageFromBlob=function(a){if(!/^image\/.*/g.test(a.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};
+goog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_("script[nonce]",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_('style[nonce],link[rel="stylesheet"][nonce]',a)};goog.dom.safe.NONCE_PATTERN_=/^[\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:"":""};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\u00a0",ZERO_WIDTH_SPACE:"\u200b"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;
+goog.string.subs=function(a,b){const c=a.split("%s");let d="";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;
+goog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\t\n\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};
+goog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\u0080"<=a&&"\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")};
+goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;
+goog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g<f;g++){c=d[g];const h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\d+|\D+/g)};
+goog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\d+|\.\d+|\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\+/g," "))};goog.string.newLineToBr=goog.string.internal.newLineToBr;
+goog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,"&#101;"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};
+goog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};
+goog.string.unescapeEntitiesUsingDom_=function(a,b){const c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"'};let d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;"#"==f.charAt(0)&&(f=Number("0"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),
+e+" ")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:return"#"!=c.charAt(0)||(c=Number("0"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};
+goog.string.preserveSpaces=function(a){return a.replace(/(^|[\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;d<c;d++){const e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};
+goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\x0B",'"':'\\"',"\\":"\\\\","<":"\\u003C"};goog.string.jsEscapeCache_={"'":"\\'"};
+goog.string.quote=function(a){a=String(a);const b=['"'];for(let c=0;c<a.length;c++){const d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('"');return b.join("")};goog.string.escapeString=function(a){const b=[];for(let c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};
+goog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];let b;const c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\x",16>c||256<c)b+="0"}else b="\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains;
+goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b<a.length&&0<c&&(d=a.slice(0,b)+a.slice(b+c));return d};goog.string.remove=function(a,b){return a.replace(b,"")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,"")};
+goog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,c.replace(/\$/g,"$$$$"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};
+goog.string.padNumber=function(a,b,c){if(!Number.isFinite(a))return String(a);a=void 0!==c?a.toFixed(c):String(a);c=a.indexOf(".");-1===c&&(c=a.length);const d="-"===a[0]?"-":"";d&&(a=a.substring(1));return d+goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};
+goog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){let b=0;for(let c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};
+goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};goog.string.toTitleCase=function(a,b){b="string"===typeof b?goog.string.regExpEscape(b):"\\s";return a.replace(new RegExp("(^"+(b?"|["+b+"]+":"")+")([a-z])","g"),function(c,d,e){return d+e.toUpperCase()})};
+goog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return"string"===typeof a?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};
+goog.string.lastComponent=function(a,b){if(b)"string"==typeof b&&(b=[b]);else return a;let c=-1;for(let d=0;d<b.length;d++){if(""==b[d])continue;const e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};
+goog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.string.path={};goog.string.path.baseName=function(a){const b=a.lastIndexOf("/")+1;return a.slice(b)};goog.string.path.basename=goog.string.path.baseName;goog.string.path.dirname=function(a){const b=a.lastIndexOf("/")+1;a=a.slice(0,b);/^\/+$/.test(a)||(a=a.replace(/\/+$/,""));return a};goog.string.path.extension=function(a){a=goog.string.path.baseName(a).replace(/\.+/g,".");const b=a.lastIndexOf(".");return 0>=b?"":a.slice(b+1)};
+goog.string.path.join=function(a){let b=arguments[0];for(let c=1;c<arguments.length;c++){const d=arguments[c];b=goog.string.startsWith(d,"/")?d:""==b||goog.string.endsWith(b,"/")?b+d:b+("/"+d)}return b};
+goog.string.path.normalizePath=function(a){if(""==a)return".";let b="";goog.string.startsWith(a,"/")&&(b="/",goog.string.startsWith(a,"//")&&!goog.string.startsWith(a,"///")&&(b="//"));a=a.split("/");const c=[];for(let d=0;d<a.length;d++){const e=a[d];""!=e&&"."!=e&&(".."!=e||!b&&!c.length||".."==module$contents$goog$array_peek(c)?c.push(e):c.pop())}return b+c.join("/")||"."};goog.string.path.split=function(a){const b=goog.string.path.dirname(a);a=goog.string.path.baseName(a);return[b,a]};const DEBUG_WASI$$module$src$filesystem$wasi=!1;function assertLeadingSlash$$module$src$filesystem$wasi(a){return/^\//g.test(a)?a:`/${a}`}function removeLeadingSlash$$module$src$filesystem$wasi(a){return a.replace(/^\//g,"")}function shouldOpenReader$$module$src$filesystem$wasi(a){return(a&(WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants))!==goog.global.BigInt(0)}
+function performanceNowPoly$$module$src$filesystem$wasi(){if("undefined"===typeof performance||"undefined"===typeof performance.now){const a=Date.now();return Date.now()-a}return performance.now()}function concatUint8Arrays$$module$src$filesystem$wasi(a){var b=a.reduce((d,e)=>d+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}}
+const WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:"/dev/stdin",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:"/dev/stdout",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:"/dev/stderr",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:"/",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0};
+WASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)"function"===c.kind&&c.module.startsWith("wasi_")&&("object"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b};
+WASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a};
+WASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START);
+default:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("clock_time_get",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_advise",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_allocate",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_close",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_datasync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_get",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants),
+!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_flags",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_rights",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_get",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b,
+goog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_size",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_times",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_pread",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_dir_name",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_get",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log("fd_pwrite",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_read",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((l,p)=>l+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,n=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,"\x00"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;f<c;f++){var m=b+8*f;const l=g.getUint32(m,!0);m=g.getUint32(m+
+4,!0);n||(k+=m,Array.from({length:m},(p,q)=>q).reduce((p,q)=>{if(n)return p;const [u,t]=p;let x=p=0,r=!1,y=0,v;if(0===q)for(;!r;)v=e[p]?e[p].byteLength:0,y<=h&&v+y>h?(r=!0,x=h-y):(y+=v,p+=1);else p=u,x=t;e[p]?(g.setUint8(l+q,e[p][x]),x+1>=e[p].byteLength?(p=u+1,x=0):x+=1):(g.setUint8(l+q,"\x00"),h+=q,n=!0);return[p,x]},[0,0]),n||(h+=m))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error("Reading non existent file",a,this.fd[a])};
+WASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_readdir",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_renumber",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_seek",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break;
+case WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_sync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_tell",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_write",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0<this.fd[a].buffers.length?[concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)]:this.fd[a].buffers;let f=0;for(let k=0;k<c;k++){var g=b+8*k,h=e.getUint32(g,!0);g=e.getUint32(g+4,!0);f+=g;h=new Uint8Array(e.buffer,h,g);if(this.fd[a].buffers[0]&&
+this.fd[a].seekPos<this.fd[a].buffers[0].length){const n=Number(this.fd[a].seekPos);h.slice(0,g).forEach((m,l)=>{this.fd[a].buffers[0][n+l]=m})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_create_directory",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_get",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_set_times",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_link",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_open",a,b,c,d,e,f,g,h,k,arguments);const n=this.getMemory();var m=(this.fd[a]||{path:"/"}).path,l=new Uint8Array(n.buffer,c,d);l=decoder$$module$src$utils$text_encoders.decode(l);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?"":m,l)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(";; opening path",
+p,"withREader",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith("/..")||"/._"===p||"/.AppleDouble"===p)return WASI_EBADF$$module$src$filesystem$constants;(m=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?l=m.fd:(l=this.fd.length,this.fd[l]={fd:l});this.fd[l]={...this.fd[l],path:p,type:"file",seekPos:goog.global.BigInt(0),buffers:m?this.fd[l].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("should open a read handle for",
+p);n.setUint32(k,l,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_readlink",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_remove_directory",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_rename",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_symlink",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3<a&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_unlink_file",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.poll_oneoff=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("poll_oneoff",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.proc_exit=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_exit",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.proc_raise=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_raise",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.random_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("random_get",a,b);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sched_yield=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sched_yield",arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.sock_recv=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_recv",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sock_send=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_send",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.sock_shutdown=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_shutdown",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.findBuffers=function(a){const b=Object.values(this.fd).find(({path:c})=>c===a);return[b&&b.buffers,b.fd]};
+WASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+"/").replace("//","/"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\//g.test(d.replace(b,""))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,""))).filter(d=>!!d)};
+WASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]};
+WASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can't append to non-existing file ${a}`)};
+WASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn't been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)};
+WASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)};
+WASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0<c.length?console.warn(`mkdir: path ${a} already exists`):(a=Object.keys(this.fd).length,this.fd[a]={fd:a,path:b})};var module$src$filesystem$wasi={};module$src$filesystem$wasi.WASI=WASI$$module$src$filesystem$wasi;const CompressionMethod$$module$src$zlib$zlib={DEFLATE:8,RESERVED:15};var module$src$zlib$zlib={};module$src$zlib$zlib.CompressionMethod=CompressionMethod$$module$src$zlib$zlib;/*
+ zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */
+function Huffman$$module$src$zlib$huffman(a){const b=a.length;let c=0,d=Number.POSITIVE_INFINITY,e,f,g,h;let k,n;for(k=0;k<b;++k)a[k]>c&&(c=a[k]),a[k]<d&&(d=a[k]);const m=1<<c,l=new Uint32Array(m);e=1;f=0;for(g=2;e<=c;){for(k=0;k<b;++k)if(a[k]===e){h=0;var p=f;for(n=0;n<e;++n)h=h<<1|p&1,p>>=1;p=e<<16|k;for(n=h;n<m;n+=g)l[n]=p;++f}++e;f<<=1;g<<=1}return[l,c,d]}var module$src$zlib$huffman={};module$src$zlib$huffman.Huffman=Huffman$$module$src$zlib$huffman;const ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate=32768;
+function RawInflate$$module$src$zlib$rawinflate(a,b){this.blocks=[];this.bufferSize=ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate;this.bitsbuflen=this.bitsbuf=this.ip=this.totalpos=0;this.input=new Uint8Array(a);this.bfinal=!1;this.bufferType=RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE;this.resize=!1;if(b||!(b={}))b.index&&(this.ip=b.index),b.bufferSize&&(this.bufferSize=b.bufferSize),b.bufferType&&(this.bufferType=b.bufferType),b.resize&&(this.resize=b.resize);switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.op=
+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;this.output=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength+this.bufferSize+RawInflate$$module$src$zlib$rawinflate.MaxCopyLength);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.op=0;this.output=new Uint8Array(this.bufferSize);break;default:throw Error("invalid inflate mode");}}RawInflate$$module$src$zlib$rawinflate.BufferType={BLOCK:0,ADAPTIVE:1};
+RawInflate$$module$src$zlib$rawinflate.prototype.decompress=function(){for(;!this.bfinal;)this.parseBlock();switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:return this.concatBufferBlock();case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:return this.concatBufferDynamic();default:throw Error("invalid inflate mode");}};RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength=32768;RawInflate$$module$src$zlib$rawinflate.MaxCopyLength=258;
+RawInflate$$module$src$zlib$rawinflate.Order=function(a){return new Uint16Array(a)}([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);RawInflate$$module$src$zlib$rawinflate.LengthCodeTable=function(a){return new Uint16Array(a)}([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]);RawInflate$$module$src$zlib$rawinflate.LengthExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]);
+RawInflate$$module$src$zlib$rawinflate.DistCodeTable=function(a){return new Uint16Array(a)}([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);RawInflate$$module$src$zlib$rawinflate.DistExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);
+RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable=function(a){return a}(function(){const a=new Uint8Array(288);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=143>=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=5;return Huffman$$module$src$zlib$huffman(a)}());
+RawInflate$$module$src$zlib$rawinflate.prototype.parseBlock=function(){let a=this.readBits(3);a&1&&(this.bfinal=!0);a>>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error("unknown BTYPE: "+a);}};
+RawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error("input buffer is broken");for(;c<a;)b|=d[e++]<<c,c+=8;this.bitsbuf=b>>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<<a)-1};
+RawInflate$$module$src$zlib$rawinflate.prototype.readCodeByTable=function(a){let b=this.bitsbuf,c=this.bitsbuflen;var d=this.input;let e=this.ip;var f=d.length;const g=a[0];for(a=a[1];c<a&&!(e>=f);)b|=d[e++]<<c,c+=8;d=g[b&(1<<a)-1];f=d>>>16;if(f>c)throw Error("invalid code length: "+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535};
+RawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error("invalid uncompressed block header: LEN");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error("invalid uncompressed block header: NLEN");e=a[b++]|a[b++]<<8;if(f===~e)throw Error("invalid uncompressed block header: length verify");if(b+f>a.length)throw Error("input buffer is broken");
+switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error("invalid inflate mode");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c};
+RawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);
+break;default:throw Error("invalid inflate mode");}};
+RawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;e<c;++e)d[RawInflate$$module$src$zlib$rawinflate.Order[e]]=this.readBits(3);d=Huffman$$module$src$zlib$huffman(d);c=new Uint8Array(a+b);e=0;for(b=a+b;e<b;){var f=this.readCodeByTable(d);switch(f){case 16:for(f=3+this.readBits(2);f--;)c[e++]=g;break;case 17:for(f=
+3+this.readBits(3);f--;)c[e++]=0;var g=0;break;case 18:for(f=11+this.readBits(7);f--;)c[e++]=0;g=0;break;default:g=c[e++]=f}}g=Huffman$$module$src$zlib$huffman(c.subarray(0,a));a=Huffman$$module$src$zlib$huffman(c.subarray(a));switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(g,a);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(g,a);break;default:throw Error("invalid inflate mode");}};
+RawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanBlock=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;const e=c.length-RawInflate$$module$src$zlib$rawinflate.MaxCopyLength;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,n=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,l=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=
+e&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0<n[f]&&(h+=this.readBits(n[f])),f=this.readCodeByTable(b),g=m[f],0<l[f]&&(g+=this.readBits(l[f])),d>=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};
+RawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,n=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,l=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]=
+f;else for(f-=257,h=k[f],0<n[f]&&(h+=this.readBits(n[f])),f=this.readCodeByTable(b),g=m[f],0<l[f]&&(g+=this.readBits(l[f])),d+h>e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};
+RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;
+return c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&("number"===typeof a.fixRatio&&(b=a.fixRatio),"number"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a<d.length?d.length+a:d.length<<1):a=d.length*b;a=new Uint8Array(a);a.set(d);return this.output=a};
+RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferBlock=function(){let a=0;const b=this.output,c=this.blocks;let d;const e=new Uint8Array(this.totalpos+(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));let f,g,h,k;if(0===c.length)return this.output.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,this.op);f=0;for(g=c.length;f<g;++f)for(d=c[f],h=0,k=d.length;h<k;++h)e[a++]=d[h];f=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;for(g=this.op;f<
+g;++f)e[a++]=b[f];this.blocks=[];return this.buffer=e};RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferDynamic=function(){let a;const b=this.op;this.resize?(a=new Uint8Array(b),a.set(this.output.subarray(0,b))):a=this.output.subarray(0,b);return this.buffer=a};var module$src$zlib$rawinflate={};module$src$zlib$rawinflate.RawInflate=RawInflate$$module$src$zlib$rawinflate;function Util$$module$src$zlib$util(){}Util$$module$src$zlib$util.stringToByteArray=function(a){a=[...a];let b,c;b=0;for(c=a.length;b<c;b++)a[b]=(a[b].charPointAt(0)&255)>>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){"string"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0<d;){e=d>Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0};
+Adler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error("unsupported compression method");}if(0!==((c<<8)+d)%31)throw Error("invalid fcheck flag:"+((c<<8)+d)%31);if(d&32)throw Error("fdict flag is not supported");this.rawinflate=
+new RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType;
+Inflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error("invalid adler-32 checksum");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\n$/g.test(d);e=/^\n/g.test(d);var k=d.split("\n").filter(m=>0<m.length),n=[];if(0===k.length&&h||e)n.push(c.join("")),clearArray$$module$src$utils$clear_array(c);k.forEach((m,l)=>{l+1===k.length?h?0===l?(n.push(c.join("")+m),
+clearArray$$module$src$utils$clear_array(c)):n.push(m):c.push(m):0===l?(n.push(c.join("")+m),clearArray$$module$src$utils$clear_array(c)):n.push(m)});n.forEach(m=>{m.replace(/(\r\n|\n|\r)/gm,"")&&b.post({log:m})})}},assertPluginExports$$module$src$module=a=>{if(a&&"object"===typeof a&&"object"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,"A csound plugin turns out to be neither a plugin, opcode or module.\nPerhaps csdl.h or module.h wasn't imported correctly?");
+return!1}console.error("A csound plugin didn't export __wasm_call_ctors.\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors");return!1}console.error("Error instantiating a csound plugin, instance and/or export is missing!");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let n=0,m=1;for(;;){const l=a[c++];n+=(l&127)*m;m*=128;if(!(l&128))break}return n}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error("Wasm magic number is missing!");
+if(0!==a[8])return logWasmModule$$module$src$logger("Dylink section wasn't found in wasm binary, assuming static wasm."),"static";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]==="d".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="y".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="l".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="i".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="n".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="k".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===
+".".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="0".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory,
+streamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]};
+var $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{"/":"/"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if("static"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(v,z)=>{v=await v;
+let B,w;try{B=new Uint8Array(z),w=getBinaryHeaderData$$module$src$module(B)}catch(C){console.error("Error in plugin",C)}w&&v.push({headerData:w,wasmPluginBytes:B});return v},[]);var n=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((v,{headerData:z})=>"static"===z?0:v+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+n;const m=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),l=new WebAssembly.Table({initial:k+
+1,element:"anyfunc"});e.setMemory(m);const p=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);n=new WebAssembly.Global({value:"i32",mutable:!1},n);const q=new WebAssembly.Global({value:"i32",mutable:!1},1),u=new WebAssembly.Global({value:"i32",mutable:!0},0);a=await WebAssembly.compile(a);const t=e.getImports(a);let x=[],r=d;t.env=t.env||{};t.env.memory=m;t.env.__indirect_function_table=
+l;t.env.__stack_pointer=p;t.env.__memory_base=n;t.env.__table_base=q;t.env.csoundLoadModules=v=>{x.forEach(z=>{void 0===y?console.error("csound-wasm internal: timing problem detected!"):dlinit$$module$src$dlinit(y,z,l,v)});return 0};t.env._ZTH5errno=function(){};t.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:m,messagePort:c,streamBuffer:[]});t.env.printDebugCallback=(v,z)=>{v=new Uint8Array(m.buffer,v,z);v=uint2String$$module$src$utils$text_encoders(v);console.log(v)};
+t["GOT.mem"]=t["GOT.mem"]||{};t["GOT.mem"].__heap_base=f;t["GOT.func"]=t["GOT.func"]||{};const y=await WebAssembly.instantiate(a,t);c=Object.assign({},y.exports);a={};a.exports=Object.assign(c,{memory:m});x=await b.reduce(async(v,{headerData:z,wasmPluginBytes:B})=>{v=await v;try{const {memorySize:w,memoryAlign:C,tableSize:F}=z,E=await WebAssembly.compile(B),A=e.getImports(E),G=new WebAssembly.Global({value:"i32",mutable:!1},r*PAGE_SIZE$$module$src$module);l.grow(F);A.env=Object.assign({},A.env);A.env.memory=
+m;A.env.__indirect_function_table=l;A.env.__memory_base=G;A.env.__stack_pointer=p;A.env.__table_base=q;A.env.csoundLoadModules=u;delete A.env.csoundWasiJsMessageCallback;r+=Math.ceil((w+C)/PAGE_SIZE$$module$src$module);const D=await WebAssembly.instantiate(E,A);assertPluginExports$$module$src$module(D)&&(D.exports.__wasm_call_ctors(),v.push(D))}catch(w){console.error("Error while compiling csound-plugin",w)}return v},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]},
+module$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;
+MessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;class ScriptProcessorNodeSingleThread$$module$src$mains$spn_main{constructor({audioContext:a,inputChannelCount:b=1,outputChannelCount:c=2}){this.publicEvents=new PublicEventAPI$$module$src$events(this);this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.audioContext=a;this.onaudioprocess=this.onaudioprocess.bind(this);this.currentPlayState=void 0;this.onPlayStateChange=this.onPlayStateChange.bind(this);this.start=this.start.bind(this);this.stop=this.stop.bind(this);this.pause=
+this.pause.bind(this);this.resume=this.resume.bind(this);this.csoundApi=this.csoundInstance=this.wasm=void 0;this.exportApi={};this.spn=a.createScriptProcessor(0,b,c);this.spn.audioContext=a;this.spn.inputChannelCount=b;this.spn.outputChannelCount=c;this.spn.onaudioprocess=this.onaudioprocess;this.node=this.spn;this.exportApi.getNode=async()=>this.spn;this.sampleRate=a.sampleRate;this.messagePort=new $jscompDefaultExport$$module$src$utils$message_port_state;this.messagePort.post=d=>messageEventHandler$$module$src$mains$messages_main(this)({data:{log:d}});
+this.messagePort.ready=!0;this.started=this.running=!1}async terminateInstance(){this.spn&&(this.spn.disconnect(),delete this.spn);this.audioContext&&("closed"!==this.audioContext.state&&await this.audioContext.close(),delete this.audioContext);this.publicEvents&&(this.publicEvents.terminateInstance(),delete this.publicEvents);Object.keys(this.exportApi).forEach(a=>delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}async onPlayStateChange(a){if(this.publicEvents&&this.currentPlayState!==
+a)switch(this.currentPlayState=a,a){case "realtimePerformanceStarted":this.publicEvents.triggerRealtimePerformanceStarted(this);break;case "realtimePerformanceEnded":this.publicEvents.triggerRealtimePerformanceEnded(this);break;case "realtimePerformancePaused":this.publicEvents.triggerRealtimePerformancePaused(this);break;case "realtimePerformanceResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);break;case "renderStarted":this.publicEvents.triggerRenderStarted(this);break;case "renderEnded":this.publicEvents.triggerRenderEnded(this)}}async pause(){this.started&&
+this.running&&(this.running=!1,this.onPlayStateChange("realtimePerformancePaused"))}async resume(){this.started&&!this.running&&(this.running=!0,this.onPlayStateChange("realtimePerformanceResumed"))}async stop(){if(this.started){this.eventPromises.createStopPromise();const a=this.csoundApi.csoundStop(this.csoundInstance);await this.eventPromises.waitForStop();this.watcherStdOut&&(this.watcherStdOut.close(),delete this.watcherStdOut);this.watcherStdErr&&(this.watcherStdErr.close(),delete this.watcherStdErr);
+delete this.csoundInputBuffer;delete this.csoundOutputBuffer;delete this.currentPlayState;return a}}async start(){if(this.csoundApi){var a=(this.csoundApi.csoundGetOutputName(this.csoundInstance)||"test.wav").includes("dac");if(a&&"realtimePerformanceStarted"!==this.currentPlayState){this.result=0;this.csoundApi.csoundSetOption(this.csoundInstance,"--sample-rate="+this.sampleRate);this.nchnls_i=this.nchnls=-1;this.cnt=this.ksmps=a=this.csoundApi.csoundGetKsmps(this.csoundInstance);this.nchnls=this.csoundApi.csoundGetNchnls(this.csoundInstance);
+this.nchnls_i=this.csoundApi.csoundGetNchnlsInput(this.csoundInstance);var b=this.csoundApi.csoundGetSpout(this.csoundInstance);this.csoundOutputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,b,a*this.nchnls);b=this.csoundApi.csoundGetSpin(this.csoundInstance);this.csoundInputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,b,a*this.nchnls_i);this.zerodBFS=this.csoundApi.csoundGet0dBFS(this.csoundInstance);this.publicEvents.triggerOnAudioNodeCreated(this.spn);this.eventPromises.createStartPromise();
+a=this.csoundApi.csoundStart(this.csoundInstance);this.csoundApi._isRequestingRtMidiInput(this.csoundInstance)&&requestMidi$$module$src$utils$request_midi({onMidiMessage:({data:c})=>this.csoundApi.csoundPushMidiMessage(this.csoundInstance,c[0],c[1],c[2])});this.running=!0;await this.eventPromises.waitForStart();return a}if(!a&&"renderStarted"!==this.currentPlayState)return a=this.csoundApi.csoundStart(this.csoundInstance),this.onPlayStateChange("renderStarted"),setTimeout(()=>{let c=0;for(;0===c&&
+this.csoundApi&&this.csoundInstance;)c=this.csoundApi.csoundPerformKsmps(this.csoundInstance);this.onPlayStateChange&&this.onPlayStateChange("renderEnded")},0),a}else console.error("starting csound failed because csound instance wasn't created")}async initialize({wasmDataURI:a,withPlugins:b,autoConnect:c}){this.plugins||!b||isEmpty$$module$node_modules$rambda$dist$rambda_mjs(b)||(b=await fetchPlugins$$module$src$utils(b));if(!this.wasm){const [f,g]=await $jscompDefaultExport$$module$src$module({wasmDataURI:a(),
+withPlugins:b,messagePort:this.messagePort});this.wasm=f;this.wasi=g;f.wasi=g}const d=$jscompDefaultExport$$module$src$libcsound(this.wasm);this.csoundApi=d;const e=await d.csoundCreate(0);this.csoundInstance=e;c&&this.spn.connect(this.audioContext.destination);this.resetCsound(!1);Object.keys(d).reduce((f,g)=>{if(["mkdir","readdir","writeFile"].includes(g)){f.fs=f.fs||{};var h=async(...k)=>makeSingleThreadCallback$$module$src$utils(this.wasm,d[g]).apply({},k);h.toString=d[g].toString;f.fs[g]=h}else h=
+csoundApiRename$$module$src$utils(g),f[h]=(...k)=>makeSingleThreadCallback$$module$src$utils(e,d[g]).apply({},k),f[h].toString=d[g].toString;return f},this.exportApi);this.exportApi.pause=this.pause.bind(this);this.exportApi.resume=this.resume.bind(this);this.exportApi.start=this.start.bind(this);this.exportApi.stop=this.stop.bind(this);this.exportApi.terminateInstance=this.terminateInstance.bind(this);this.exportApi.getAudioContext=async()=>this.audioContext;this.exportApi.name="Csound: ScriptProcessor Node, Single-threaded";
+this.exportApi=this.publicEvents.decorateAPI(this.exportApi);this.exportApi.reset=()=>this.resetCsound(!0);this.exportApi.addListener("message",console.log);return this.exportApi}async resetCsound(a){if(a&&"realtimePerformanceEnded"!==this.currentPlayState&&"realtimePerformanceStarted"!==this.currentPlayState)return-1;if("realtimePerformanceStarted"===this.currentPlayState)this.onPlayStateChange("realtimePerformanceEnded");this.started=this.running=!1;this.result=0;const b=this.csoundInstance,c=this.csoundApi;
+a&&c.csoundReset(b);c.csoundSetOption(b,"--sample-rate="+this.sampleRate);this.nchnls_i=this.nchnls=-1;delete this.csoundOutputBuffer;delete this.csoundInputBuffer}onaudioprocess(a){if(this.csoundApi&&!["renderStarted","renderEnded"].includes(this.currentPlayState)){if(null===this.csoundOutputBuffer||!1===this.running){var b=a.outputBuffer,c=b.getChannelData(0);if(c){c=c.length;for(var d=0;d<c;d++)for(var e=0;e<b.numberOfChannels;e++)b.getChannelData(e)[d]=0}}this.running&&!this.started&&(this.started=
+!0,this.onPlayStateChange("realtimePerformanceStarted"),this.eventPromises&&this.eventPromises.releaseStartPromise());b=a.inputBuffer;a=a.outputBuffer;c=a.getChannelData(0).length;d=this.csoundOutputBuffer;e=this.csoundInputBuffer;var f=this.ksmps,g=this.zerodBFS,h=this.nchnls,k=this.nchnls_i,n=this.cnt||0,m=this.result||0;for(let u=0;u<c;u++,n++){n===f&&0===m&&(m=this.csoundApi.csoundPerformKsmps(this.csoundInstance),n=0,0!==m&&(this.started=this.running=!1,this.onPlayStateChange("realtimePerformanceEnded"),
+this.eventPromises&&this.eventPromises.releaseStopPromise()));d&&0!==d.length||(d=this.csoundOutputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,this.csoundApi.csoundGetSpout(this.csoundInstance),f*h));e&&0!==e.length||(e=this.csoundInputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,this.csoundApi.csoundGetSpin(this.csoundInstance),f*k));var l=Math.min(this.nchnls_i,b.numberOfChannels);for(var p=0;p<l;p++){var q=b.getChannelData(p);e[n*k+p]=q[u]*g}if(this.nchnls===a.numberOfChannels)for(l=
+0;l<a.numberOfChannels;l++)a.getChannelData(l)[u]=0===m?d[n*h+l]/g:0;else 2===this.nchnls&&1===a.numberOfChannels?a.getChannelData(0)[u]=0===m?.5*(d[n*h]/g+d[n*h+1]/g):0:1===this.nchnls&&2===a.numberOfChannels&&(l=a.getChannelData(0),p=a.getChannelData(1),0===m?(q=d[n*h]/g,l[u]=q,p[u]=q):(l[u]=0,p[u]=0))}this.cnt=n;this.result=m}}}var $jscompDefaultExport$$module$src$mains$spn_main=ScriptProcessorNodeSingleThread$$module$src$mains$spn_main,module$src$mains$spn_main={};
+module$src$mains$spn_main.default=$jscompDefaultExport$$module$src$mains$spn_main;var $jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline=()=>"data:application/javascript;base64,bGV0IHNlbGYgPSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmO2dvb2cuZXhwb3J0UGF0aF89ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnNwbGl0KCIuIik7ZD1kfHxnb29nLmdsb2JhbDthWzBdaW4gZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkLmV4ZWNTY3JpcHR8fGQuZXhlY1NjcmlwdCgidmFyICIrYVswXSk7Zm9yKHZhciBlO2EubGVuZ3RoJiYoZT1hLnNoaWZ0KCkpOylpZihhLmxlbmd0aHx8dm9pZCAwPT09YilkPWRbZV0mJmRbZV0hPT1PYmplY3QucHJvdG90eXBlW2VdP2RbZV06ZFtlXT17fTtlbHNlIGlmKCFjJiZnb29nLmlzT2JqZWN0KGIpJiZnb29nLmlzT2JqZWN0KGRbZV0pKWZvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJihkW2VdW2ZdPWJbZl0pO2Vsc2UgZFtlXT1ifTsKZ29vZy5kZWZpbmU9ZnVuY3Rpb24oYSxiKXtpZighQ09NUElMRUQpe3ZhciBjPWdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTLGQ9Z29vZy5nbG9iYWwuQ0xPU1VSRV9ERUZJTkVTO2MmJnZvaWQgMD09PWMubm9kZVR5cGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpP2I9Y1thXTpkJiZ2b2lkIDA9PT1kLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxhKSYmKGI9ZFthXSl9cmV0dXJuIGJ9O2dvb2cuRkVBVFVSRVNFVF9ZRUFSPTIwMjA7Z29vZy5ERUJVRz0hMDtnb29nLkxPQ0FMRT0iZW4iO2dvb2cuZ2V0TG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuTE9DQUxFfTtnb29nLlRSVVNURURfU0lURT0hMDtnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRztnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITE7Cmdvb2cucHJvdmlkZT1mdW5jdGlvbihhKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuIik7aWYoIUNPTVBJTEVEJiZnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhhKX07Z29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGEsYixjKXtpZighQ09NUElMRUQpe2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV07Zm9yKHZhciBkPWE7KGQ9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIuIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGQpOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZF09ITB9Z29vZy5leHBvcnRQYXRoXyhhLGIsYyl9O2dvb2cuTk9OQ0VfUEFUVEVSTl89L15bXHcrL18tXStbPV17MCwyfSQvOwpnb29nLmdldFNjcmlwdE5vbmNlXz1mdW5jdGlvbihhKXthPShhfHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yJiZhLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKSkmJihhPWEubm9uY2V8fGEuZ2V0QXR0cmlidXRlKCJub25jZSIpKSYmZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KGEpP2E6IiJ9O2dvb2cuVkFMSURfTU9EVUxFX1JFXz0vXlthLXpBLVpfJF1bYS16QS1aMC05Ll8kXSokLzsKZ29vZy5tb2R1bGU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPT10eXBlb2YgYXx8IWF8fC0xPT1hLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pKXRocm93IEVycm9yKCJJbnZhbGlkIG1vZHVsZSBpZGVudGlmaWVyIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoIk1vZHVsZSAiK2ErIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS4iKTtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLiIpOwpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lPWE7aWYoIUNPTVBJTEVEKXtpZihnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV19fTtnb29nLm1vZHVsZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cubW9kdWxlLmdldEludGVybmFsXyhhKX07Z29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXJldHVybiBnb29nLmxvYWRlZE1vZHVsZXNfW2FdLmV4cG9ydHM7aWYoIWdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1thXSlyZXR1cm4gYT1nb29nLmdldE9iamVjdEJ5TmFtZShhKSxudWxsIT1hP2E6bnVsbH1yZXR1cm4gbnVsbH07Z29vZy5Nb2R1bGVUeXBlPXtFUzY6ImVzNiIsR09PRzoiZ29vZyJ9O2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7Cmdvb2cuaXNJbk1vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKXx8Z29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXygpfTtnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe3JldHVybiEhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5HT09HfTtnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5FUzYpcmV0dXJuITA7dmFyIGE9Z29vZy5nbG9iYWwuJGpzY29tcDtyZXR1cm4gYT8iZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRDdXJyZW50TW9kdWxlUGF0aD8hMTohIWEuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTohMX07Cmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ZnVuY3Rpb24oKXtpZighQ09NUElMRUQmJiFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGUiKTtpZighQ09NUElMRUQmJiFnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlLiIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9Owpnb29nLmRlY2xhcmVNb2R1bGVJZD1mdW5jdGlvbihhKXtpZighQ09NUElMRUQpe2lmKCFnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuIik7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGV4aXN0cy4nKTt9aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8pZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZT1hO2Vsc2V7dmFyIGI9Z29vZy5nbG9iYWwuJGpzY29tcDtpZighYnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGIuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSAiJysKYSsnIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuJyk7Yj1iLnJlcXVpcmUoYi5nZXRDdXJyZW50TW9kdWxlUGF0aCgpKTtnb29nLmxvYWRlZE1vZHVsZXNfW2FdPXtleHBvcnRzOmIsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmF9fX07Z29vZy5zZXRUZXN0T25seT1mdW5jdGlvbihhKXtpZihnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFKXRocm93IGE9YXx8IiIsRXJyb3IoIkltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCIrKGE/IjogIithOiIuIikpO307Z29vZy5mb3J3YXJkRGVjbGFyZT1mdW5jdGlvbihhKXt9O0NPTVBJTEVEfHwoZ29vZy5pc1Byb3ZpZGVkXz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNffHwhZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2FdJiZudWxsIT1nb29nLmdldE9iamVjdEJ5TmFtZShhKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXsiZ29vZy5tb2R1bGUiOiEwfSk7Cmdvb2cuZ2V0T2JqZWN0QnlOYW1lPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxnb29nLmdsb2JhbDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sbnVsbD09YilyZXR1cm4gbnVsbDtyZXR1cm4gYn07Z29vZy5hZGREZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQpeyFDT01QSUxFRCYmZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCYmZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShhLGIsYyxkKX07Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSPSEwO2dvb2cubG9nVG9Db25zb2xlXz1mdW5jdGlvbihhKXtnb29nLmdsb2JhbC5jb25zb2xlJiZnb29nLmdsb2JhbC5jb25zb2xlLmVycm9yKGEpfTsKZ29vZy5yZXF1aXJlPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSJiZnb29nLmRlYnVnTG9hZGVyXy5yZXF1ZXN0ZWQoYSk7aWYoZ29vZy5pc1Byb3ZpZGVkXyhhKSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXJldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oYSl9ZWxzZSBpZihnb29nLkVOQUJMRV9ERUJVR19MT0FERVIpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7dHJ5e2dvb2cuZGVidWdMb2FkZXJfLmxvYWRfKGEpfWZpbmFsbHl7Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89Yn19cmV0dXJuIG51bGx9fTtnb29nLnJlcXVpcmVUeXBlPWZ1bmN0aW9uKGEpe3JldHVybnt9fTtnb29nLmJhc2VQYXRoPSIiO2dvb2cuYWJzdHJhY3RNZXRob2Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigidW5pbXBsZW1lbnRlZCBhYnN0cmFjdCBtZXRob2QiKTt9Owpnb29nLmFkZFNpbmdsZXRvbkdldHRlcj1mdW5jdGlvbihhKXthLmluc3RhbmNlXz12b2lkIDA7YS5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe2lmKGEuaW5zdGFuY2VfKXJldHVybiBhLmluc3RhbmNlXztnb29nLkRFQlVHJiYoZ29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zX1tnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfLmxlbmd0aF09YSk7cmV0dXJuIGEuaW5zdGFuY2VfPW5ldyBhfX07Z29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zXz1bXTtnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUw9ITA7Z29vZy5TRUFMX01PRFVMRV9FWFBPUlRTPWdvb2cuREVCVUc7Z29vZy5sb2FkZWRNb2R1bGVzXz17fTtnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEPSFDT01QSUxFRCYmZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSO2dvb2cuVFJBTlNQSUxFPSJkZXRlY3QiO2dvb2cuQVNTVU1FX0VTX01PRFVMRVNfVFJBTlNQSUxFRD0hMTtnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU9Imdvb2ciOwpnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbDsKZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZToiIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExLHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkdPT0d9O3ZhciBjPXt9LGQ9YztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpZD1hLmNhbGwodm9pZCAwLGQpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSlkPWdvb2cubG9hZE1vZHVsZUZyb21Tb3VyY2VfLmNhbGwodm9pZCAwLGQsYSk7ZWxzZSB0aHJvdyBFcnJvcigiSW52YWxpZCBtb2R1bGUgZGVmaW5pdGlvbiIpO3ZhciBlPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7aWYoInN0cmluZyI9PT10eXBlb2YgZSYmZSlnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlLGQsYyE9PWQpOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmCk9iamVjdC5zZWFsJiYib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJk9iamVjdC5zZWFsKGQpLGdvb2cubG9hZGVkTW9kdWxlc19bZV09e2V4cG9ydHM6ZCx0eXBlOmdvb2cuTW9kdWxlVHlwZS5HT09HLG1vZHVsZUlkOmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWV9O2Vsc2UgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIG5hbWUgIicrZSsnIicpO31maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPWJ9fTtnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhLGIpe2V2YWwoZ29vZy5DTE9TVVJFX0VWQUxfUFJFRklMVEVSXy5jcmVhdGVTY3JpcHQoYikpO3JldHVybiBhfTtnb29nLm5vcm1hbGl6ZVBhdGhfPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLyIpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KSIuIj09YVtiXT9hLnNwbGljZShiLDEpOmImJiIuLiI9PWFbYl0mJmFbYi0xXSYmIi4uIiE9YVtiLTFdP2Euc3BsaWNlKC0tYiwyKTpiKys7cmV0dXJuIGEuam9pbigiLyIpfTsKZ29vZy5sb2FkRmlsZVN5bmNfPWZ1bmN0aW9uKGEpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMpcmV0dXJuIGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMoYSk7dHJ5e3ZhciBiPW5ldyBnb29nLmdsb2JhbC5YTUxIdHRwUmVxdWVzdDtiLm9wZW4oImdldCIsYSwhMSk7Yi5zZW5kKCk7cmV0dXJuIDA9PWIuc3RhdHVzfHwyMDA9PWIuc3RhdHVzP2IucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtnb29nLnR5cGVPZj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0IiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtnb29nLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO3JldHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RofTsKZ29vZy5pc0RhdGVMaWtlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmlzT2JqZWN0KGEpJiYiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRGdWxsWWVhcn07Z29vZy5pc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0Ij09YiYmbnVsbCE9YXx8ImZ1bmN0aW9uIj09Yn07Z29vZy5nZXRVaWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGdvb2cuVUlEX1BST1BFUlRZXykmJmFbZ29vZy5VSURfUFJPUEVSVFlfXXx8KGFbZ29vZy5VSURfUFJPUEVSVFlfXT0rK2dvb2cudWlkQ291bnRlcl8pfTtnb29nLmhhc1VpZD1mdW5jdGlvbihhKXtyZXR1cm4hIWFbZ29vZy5VSURfUFJPUEVSVFlfXX07Z29vZy5yZW1vdmVVaWQ9ZnVuY3Rpb24oYSl7bnVsbCE9PWEmJiJyZW1vdmVBdHRyaWJ1dGUiaW4gYSYmYS5yZW1vdmVBdHRyaWJ1dGUoZ29vZy5VSURfUFJPUEVSVFlfKTt0cnl7ZGVsZXRlIGFbZ29vZy5VSURfUFJPUEVSVFlfXX1jYXRjaChiKXt9fTsKZ29vZy5VSURfUFJPUEVSVFlfPSJjbG9zdXJlX3VpZF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO2dvb2cudWlkQ291bnRlcl89MDtnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO2lmKCJvYmplY3QiPT1ifHwiYXJyYXkiPT1iKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEuY2xvbmUpcmV0dXJuIGEuY2xvbmUoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBNYXAmJmEgaW5zdGFuY2VvZiBNYXApcmV0dXJuIG5ldyBNYXAoYSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZhIGluc3RhbmNlb2YgU2V0KXJldHVybiBuZXcgU2V0KGEpO2I9ImFycmF5Ij09Yj9bXTp7fTtmb3IodmFyIGMgaW4gYSliW2NdPWdvb2cuY2xvbmVPYmplY3QoYVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGF9O2dvb2cuYmluZE5hdGl2ZV89ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9Owpnb29nLmJpbmRKc189ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O2dvb2cuYmluZD1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIik/Z29vZy5iaW5kPWdvb2cuYmluZE5hdGl2ZV86Z29vZy5iaW5kPWdvb2cuYmluZEpzXztyZXR1cm4gZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Cmdvb2cucGFydGlhbD1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Z29vZy5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07Z29vZy5nbG9iYWxFdmFsPWZ1bmN0aW9uKGEpeygwLGV2YWwpKGEpfTsKZ29vZy5nZXRDc3NOYW1lPWZ1bmN0aW9uKGEsYil7aWYoIi4iPT1TdHJpbmcoYSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4gWW91IHBhc3NlZDogJythKTt2YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bZV18fGV9LGQ9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCItIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoO2crKylmLnB1c2goYyhlW2ddKSk7cmV0dXJuIGYuam9pbigiLSIpfTtkPWdvb2cuY3NzTmFtZU1hcHBpbmdfPyJCWV9XSE9MRSI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/YzpkOmZ1bmN0aW9uKGUpe3JldHVybiBlfTthPWI/YSsiLSIrZChiKTpkKGEpO3JldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTj9nb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTihhKTphfTsKZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihhLGIpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWE7Z29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz1ifTshQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyk7Z29vZy5HZXRNc2dPcHRpb25zPWZ1bmN0aW9uKCl7fTsKZ29vZy5nZXRNc2c9ZnVuY3Rpb24oYSxiLGMpe2MmJmMuaHRtbCYmKGE9YS5yZXBsYWNlKC88L2csIiZsdDsiKSk7YyYmYy51bmVzY2FwZUh0bWxFbnRpdGllcyYmKGE9YS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyZxdW90Oy9nLCciJykucmVwbGFjZSgvJmFtcDsvZywiJiIpKTtiJiYoYT1hLnJlcGxhY2UoL1x7XCQoW159XSspfS9nLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIG51bGwhPWImJmUgaW4gYj9iW2VdOmR9KSk7cmV0dXJuIGF9O2dvb2cuZ2V0TXNnV2l0aEZhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZXhwb3J0U3ltYm9sPWZ1bmN0aW9uKGEsYixjKXtnb29nLmV4cG9ydFBhdGhfKGEsYiwhMCxjKX07Z29vZy5leHBvcnRQcm9wZXJ0eT1mdW5jdGlvbihhLGIsYyl7YVtiXT1jfTsKZ29vZy5pbmhlcml0cz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5zdXBlckNsYXNzXz1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuYmFzZT1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O2dvb2cuc2NvcGU9ZnVuY3Rpb24oYSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLiIpO2EuY2FsbChnb29nLmdsb2JhbCl9O0NPTVBJTEVEfHwoZ29vZy5nbG9iYWwuQ09NUElMRUQ9Q09NUElMRUQpOwpnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jb25zdHJ1Y3RvcixkPWIuc3RhdGljcztjJiZjIT1PYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yfHwoYz1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4iKTt9KTtjPWdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXyhjLGEpO2EmJmdvb2cuaW5oZXJpdHMoYyxhKTtkZWxldGUgYi5jb25zdHJ1Y3RvcjtkZWxldGUgYi5zdGF0aWNzO2dvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjLnByb3RvdHlwZSxiKTtudWxsIT1kJiYoZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoYyk6Z29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGMsZCkpO3JldHVybiBjfTtnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTPWdvb2cuREVCVUc7Cmdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTP2Z1bmN0aW9uKCl7dmFyIGM9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7Y1tnb29nLlVJRF9QUk9QRVJUWV9dPWNbZ29vZy5VSURfUFJPUEVSVFlfXTtyZXR1cm4gY306YX07Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU189ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYykmJihhW2NdPWJbY10pO2Zvcih2YXIgZD0wO2Q8Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO2QrKyljPWdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2RdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGMpJiYoYVtjXT1iW2NdKX07Z29vZy5pZGVudGl0eV89ZnVuY3Rpb24oYSl7cmV0dXJuIGF9Owpnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzO2lmKCFjfHwhYy5jcmVhdGVQb2xpY3kpcmV0dXJuIGI7dHJ5e2I9Yy5jcmVhdGVQb2xpY3koYSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlffSl9Y2F0Y2goZCl7Z29vZy5sb2dUb0NvbnNvbGVfKGQubWVzc2FnZSl9cmV0dXJuIGJ9OwohQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmlzRWRnZV89ZnVuY3Rpb24oKXtyZXR1cm4hIShnb29nLmdsb2JhbC5uYXZpZ2F0b3ImJmdvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ/Z29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudDoiIikubWF0Y2goL0VkZ2VcLyhcZCspKFwuXGQpKi9pKX0sZ29vZy5pbkh0bWxEb2N1bWVudF89ZnVuY3Rpb24oKXt2YXIgYT1nb29nLmdsb2JhbC5kb2N1bWVudDtyZXR1cm4gbnVsbCE9YSYmIndyaXRlImluIGF9LGdvb2cuaXNEb2N1bWVudExvYWRpbmdfPWZ1bmN0aW9uKCl7dmFyIGE9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7cmV0dXJuIGEuYXR0YWNoRXZlbnQ/ImNvbXBsZXRlIiE9YS5yZWFkeVN0YXRlOiJsb2FkaW5nIj09YS5yZWFkeVN0YXRlfSxnb29nLmZpbmRCYXNlUGF0aF89ZnVuY3Rpb24oKXtpZih2b2lkIDAhPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIJiYic3RyaW5nIj09PXR5cGVvZiBnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSClnb29nLmJhc2VQYXRoPQpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50LGI9YS5jdXJyZW50U2NyaXB0O2E9Yj9bYl06YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiU0NSSVBUIik7Zm9yKGI9YS5sZW5ndGgtMTswPD1iOy0tYil7dmFyIGM9YVtiXS5zcmMsZD1jLmxhc3RJbmRleE9mKCI/Iik7ZD0tMT09ZD9jLmxlbmd0aDpkO2lmKCJiYXNlLmpzIj09Yy5zbGljZShkLTcsZCkpe2dvb2cuYmFzZVBhdGg9Yy5zbGljZSgwLGQtNyk7YnJlYWt9fX19LGdvb2cuZmluZEJhc2VQYXRoXygpLGdvb2cucHJvdGVjdFNjcmlwdFRhZ189ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvPFwvKFNDUklQVCkvaWcsIlxceDNjLyQxIil9LGdvb2cuRGVidWdMb2FkZXJfPWZ1bmN0aW9uKCl7dGhpcy5kZXBlbmRlbmNpZXNfPXt9O3RoaXMuaWRUb1BhdGhfPXt9O3RoaXMud3JpdHRlbl89e307dGhpcy5sb2FkaW5nRGVwc189CltdO3RoaXMuZGVwc1RvTG9hZF89W107dGhpcy5wYXVzZWRfPSExO3RoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3Rvcnk7dGhpcy5kZWZlcnJlZENhbGxiYWNrc189e307dGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtkJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChkLDApLGQ9bnVsbCl9dmFyIGQ9YjtpZihhLmxlbmd0aCl7Yj1bXTtmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGFbZV0pO2lmKCFmKXRocm93IEVycm9yKCJVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICIrYVtlXSk7Yi5wdXNoKHRoaXMuZGVwZW5kZW5jaWVzX1tmXSl9Zj1nb29nLnJlcXVpcmU7dmFyIGc9MDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKWYoYVtlXSksYltlXS5vbkxvYWQoZnVuY3Rpb24oKXsrK2c9PWEubGVuZ3RoJiZjKCl9KX1lbHNlIGMoKX0sCmdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCsiZGVwcy5qcyIpLCJkZXBzLmpzIixbXSxbXSx7fSkpO3RoaXMubG9hZERlcHNfKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5yZXF1ZXN0ZWQ9ZnVuY3Rpb24oYSxiKXsoYT10aGlzLmdldFBhdGhGcm9tRGVwc18oYSkpJiYoYnx8dGhpcy5hcmVEZXBzTG9hZGVkXyh0aGlzLmRlcGVuZGVuY2llc19bYV0ucmVxdWlyZXMpKSYmKGI9dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bYV0pJiYoZGVsZXRlIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2FdLGIoKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5zZXREZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihhKXt0aGlzLmZhY3RvcnlfPWF9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkXz0KZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRQYXRoRnJvbURlcHNfKGEpKXt2YXIgYj10aGlzLGM9W10sZD1mdW5jdGlvbihlKXt2YXIgZj1iLmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIWYpdGhyb3cgRXJyb3IoIkJhZCBkZXBlbmRlbmN5IHBhdGggb3Igc3ltYm9sOiAiK2UpO2lmKCFiLndyaXR0ZW5fW2ZdKXtiLndyaXR0ZW5fW2ZdPSEwO2U9Yi5kZXBlbmRlbmNpZXNfW2ZdO2ZvcihmPTA7ZjxlLnJlcXVpcmVzLmxlbmd0aDtmKyspZ29vZy5pc1Byb3ZpZGVkXyhlLnJlcXVpcmVzW2ZdKXx8ZChlLnJlcXVpcmVzW2ZdKTtjLnB1c2goZSl9fTtkKGEpO2E9ISF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aDt0aGlzLmRlcHNUb0xvYWRfPXRoaXMuZGVwc1RvTG9hZF8uY29uY2F0KGMpO3RoaXMucGF1c2VkX3x8YXx8dGhpcy5sb2FkRGVwc18oKX1lbHNlIGdvb2cubG9nVG9Db25zb2xlXygiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAiK2EpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPQpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9dGhpcy5wYXVzZWRfO3RoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoJiYhYjspKGZ1bmN0aW9uKCl7dmFyIGM9ITEsZD1hLmRlcHNUb0xvYWRfLnNoaWZ0KCksZT0hMTthLmxvYWRpbmdfKGQpO3ZhciBmPXtwYXVzZTpmdW5jdGlvbigpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7Yj0hMH0scmVzdW1lOmZ1bmN0aW9uKCl7Yz9hLnJlc3VtZV8oKTpiPSExfSxsb2FkZWQ6ZnVuY3Rpb24oKXtpZihlKXRocm93IEVycm9yKCJEb3VibGUgY2FsbCB0byBsb2FkZWQuIik7ZT0hMDthLmxvYWRlZF8oZCl9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIGc9W10saD0wO2g8YS5sb2FkaW5nRGVwc18ubGVuZ3RoO2grKylnLnB1c2goYS5sb2FkaW5nRGVwc19baF0pO3JldHVybiBnfSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihnKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTpnLAptb2R1bGVOYW1lOiIiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITF9fSxyZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoLGspe2smJihnb29nLmxvYWRlZE1vZHVsZXNfW2tdPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmt8fCIifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoKXtnb29nLmxvYWRlZE1vZHVsZXNfW2ddPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKGcpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciB3aXRoIGRlZmVyIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7YS5kZWZlcl8oZCxnKX0sYXJlRGVwc0xvYWRlZDpmdW5jdGlvbigpe3JldHVybiBhLmFyZURlcHNMb2FkZWRfKGQucmVxdWlyZXMpfX07CnRyeXtkLmxvYWQoZil9ZmluYWxseXtjPSEwfX0pKCk7YiYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihhKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGEpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDtiKyspaWYodGhpcy5sb2FkaW5nRGVwc19bYl09PWEpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZShiLDEpO2JyZWFrfWZvcihiPTA7Yjx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDtiKyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1tiXT09CmEucGF0aCl7dGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoYiwxKTticmVha31pZih0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg9PXRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoJiYhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgpZm9yKDt0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDspdGhpcy5yZXF1ZXN0ZWQodGhpcy5kZWZlcnJlZFF1ZXVlXy5zaGlmdCgpLCEwKTthLmxvYWRlZCgpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZF89ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhhW2JdKTtpZighY3x8IShjIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NffHxnb29nLmlzUHJvdmlkZWRfKGFbYl0pKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW4gdGhpcy5pZFRvUGF0aF8/CnRoaXMuaWRUb1BhdGhfW2FdOmEgaW4gdGhpcy5kZXBlbmRlbmNpZXNfP2E6bnVsbH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmRlZmVyXz1mdW5jdGlvbihhLGIpe3RoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2EucGF0aF09Yjt0aGlzLmRlZmVycmVkUXVldWVfLnB1c2goYS5wYXRoKX0sZ29vZy5Mb2FkQ29udHJvbGxlcj1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wZW5kaW5nPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuc2V0TW9kdWxlU3RhdGU9CmZ1bmN0aW9uKGEpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJNb2R1bGVTdGF0ZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24oYSl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkRlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnBhdGg9YTt0aGlzLnJlbGF0aXZlUGF0aD1iO3RoaXMucHJvdmlkZXM9Yzt0aGlzLnJlcXVpcmVzPWQ7dGhpcy5sb2FkRmxhZ3M9ZTt0aGlzLmxvYWRlZF89ITE7dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucGF0aCxiPWEuaW5kZXhPZigiOi8vIik7MDw9YiYmKGE9YS5zdWJzdHJpbmcoYiszKSxiPWEuaW5kZXhPZigiLyIpLDA8PWImJihhPWEuc3Vic3RyaW5nKGIrMSkpKTtyZXR1cm4gYX0sCmdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKGEpe3RoaXMubG9hZGVkXz9hKCk6dGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGEpfSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3RoaXMubG9hZGVkXz0hMDt2YXIgYT10aGlzLmxvYWRDYWxsYmFja3NfO3RoaXMubG9hZENhbGxiYWNrc189W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspYVtiXSgpfSxnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSExLGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF89e30sZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzIpO2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYl09YTtyZXR1cm4gYn0sZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oYSl7ZGVsZXRlIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYV19LApnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfPWZ1bmN0aW9uKGEsYil7aWYoYSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKXtmb3IodmFyIGM9Z29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1thXSxkPVtdLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWQucHVzaChhcmd1bWVudHNbZV0pO2MuYXBwbHkodm9pZCAwLGQpfWVsc2UgdGhyb3cgRXJyb3IoIkNhbGxiYWNrIGtleSAiK2ErIiBkb2VzIG5vdCBleGlzdCAod2FzIGJhc2UuanMgbG9hZGVkIG1vcmUgdGhhbiBvbmNlPykuIik7fSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpP2EubG9hZGVkKCk6YS5wYXVzZSgpO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGI9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7aWYoImNvbXBsZXRlIj09CmIucmVhZHlTdGF0ZSYmIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyl7aWYoL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSl7YS5sb2FkZWQoKTtyZXR1cm59dGhyb3cgRXJyb3IoJ0Nhbm5vdCB3cml0ZSAiJyt0aGlzLnBhdGgrJyIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpO312YXIgYz1nb29nLmdldFNjcmlwdE5vbmNlXygpO2lmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBkPWZ1bmN0aW9uKGgpe2gucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9aC5yZWFkeVN0YXRlP2gub25sb2FkPWQ6KGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGUpLGEubG9hZGVkKCkpfTt2YXIgZT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZCk7Yz1jPycgbm9uY2U9IicrYysnIic6IiI7dmFyIGY9JzxzY3JpcHQgc3JjPSInK3RoaXMucGF0aCsnIicrCmMrKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8/IiBkZWZlciI6IiIpKycgaWQ9InNjcmlwdC0nK2UrJyI+XHgzYy9zY3JpcHQ+JztmKz0iPHNjcmlwdCIrYysiPiI7Zj1nb29nLkRlcGVuZGVuY3kuZGVmZXJfP2YrKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NyaXB0LSIrZSsiJykub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgdGhpcyk7XG59O1xuIik6ZisoImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjcmlwdC0iK2UrIicpKTsiKTtmKz0iXHgzYy9zY3JpcHQ+IjtiLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoZik6Zil9ZWxzZXt2YXIgZz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2cuZGVmZXI9Z29vZy5EZXBlbmRlbmN5LmRlZmVyXztnLmFzeW5jPSExO2MmJihnLm5vbmNlPQpjKTtnLm9ubG9hZD1mdW5jdGlvbigpe2cub25sb2FkPW51bGw7YS5sb2FkZWQoKX07Zy5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoO2IuaGVhZC5hcHBlbmRDaGlsZChnKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oIkNhbm5vdCB1c2UgZGVmYXVsdCBkZWJ1ZyBsb2FkZXIgb3V0c2lkZSBvZiBIVE1MIGRvY3VtZW50cy4iKSwiZGVwcy5qcyI9PXRoaXMucmVsYXRpdmVQYXRoPyhnb29nLmxvZ1RvQ29uc29sZV8oIkNvbnNpZGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBUIGJlZm9yZSBsb2FkaW5nIGJhc2UuanMsIG9yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuIiksYS5sb2FkZWQoKSk6YS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGEsCmIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLkRlcGVuZGVuY3kpLGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGwsbSl7dmFyIG49IiIscD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuPScgbm9uY2U9IicrcCsnIicpO2w9bT8nPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luJytuKyI+IittKyJceDNjL3NjcmlwdD4iOic8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInK2wrJyInK24rIj5ceDNjL3NjcmlwdD4iO2Qud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChsKTpsKX1mdW5jdGlvbiBjKGwsbSl7dmFyIG49ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLmRlZmVyPSEwO24uYXN5bmM9ITE7bi50eXBlPSJtb2R1bGUiO24uc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsCiEwKTt2YXIgcD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuLm5vbmNlPXApO20/bi50ZXh0PWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdChtKTptOm4uc3JjPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTChsKTpsO2QuaGVhZC5hcHBlbmRDaGlsZChuKX1pZihnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCk/YS5sb2FkZWQoKTphLnBhdXNlKCk7ZWxzZSBpZihnb29nLmluSHRtbERvY3VtZW50XygpKXt2YXIgZD1nb29nLmdsb2JhbC5kb2N1bWVudCxlPXRoaXM7aWYoZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSl7dmFyIGY9Yjtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2UgZj1jO3ZhciBnPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGcpOwphLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSk7Zih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrZysnIiknKTtmKHRoaXMucGF0aCx2b2lkIDApO3ZhciBoPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihsKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhoKTthLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyhlLnBhdGgsbCxnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKX0pO2Yodm9pZCAwLCdpbXBvcnQgKiBhcyBtIGZyb20gIicrdGhpcy5wYXRoKyciOyBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInK2grJyIsIG0pJyk7dmFyIGs9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18oayk7YS5jbGVhck1vZHVsZVN0YXRlKCk7YS5sb2FkZWQoKX0pO2Yodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInKwprKyciKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuIiksYS5wYXVzZSgpfSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe2dvb2cuRGVwZW5kZW5jeS5jYWxsKHRoaXMsYSxiLGMsZCxlKTt0aGlzLmNvbnRlbnRzXz1udWxsO3RoaXMubGF6eUZldGNoXz0hZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8ISgibm9Nb2R1bGUiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2UuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhlLnBhdGgpO2UuY29udGVudHNfJiYoZS5jb250ZW50c189CmUudHJhbnNmb3JtKGUuY29udGVudHNfKSxlLmNvbnRlbnRzXyYmKGUuY29udGVudHNfKz0iXG4vLyMgc291cmNlVVJMPSIrZS5wYXRoKSl9ZnVuY3Rpb24gYygpe2UubGF6eUZldGNoXyYmYigpO2lmKGUuY29udGVudHNfKXtmJiZhLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpO3RyeXt2YXIgbD1lLmNvbnRlbnRzXztlLmNvbnRlbnRzXz1udWxsO2dvb2cuZ2xvYmFsRXZhbChnb29nLkNMT1NVUkVfRVZBTF9QUkVGSUxURVJfLmNyZWF0ZVNjcmlwdChsKSk7aWYoZil2YXIgbT1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfWZpbmFsbHl7ZiYmYS5jbGVhck1vZHVsZVN0YXRlKCl9ZiYmZ29vZy5nbG9iYWwuJGpzY29tcC5yZXF1aXJlLmVuc3VyZShbZS5nZXRQYXRoTmFtZSgpXSxmdW5jdGlvbigpe2EucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKGUucGF0aCxnb29nLmdsb2JhbC4kanNjb21wLnJlcXVpcmUoZS5nZXRQYXRoTmFtZSgpKSxtKX0pO2EubG9hZGVkKCl9fQpmdW5jdGlvbiBkKCl7dmFyIGw9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhtKTtjKCl9KSxuPWdvb2cuZ2V0U2NyaXB0Tm9uY2VfKCk7bj0iPHNjcmlwdCIrKG4/JyBub25jZT0iJytuKyciJzoiIikrIj4iK2dvb2cucHJvdGVjdFNjcmlwdFRhZ18oJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrbSsnIik7JykrIlx4M2Mvc2NyaXB0PiI7bC53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKG4pOm4pfXZhciBlPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWIoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCIiLHRoaXMuY29udGVudHNfKT8odGhpcy5jb250ZW50c189bnVsbCxhLmxvYWRlZCgpKToKYS5wYXVzZSgpO2Vsc2V7dmFyIGY9dGhpcy5sb2FkRmxhZ3MubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuRVM2O3RoaXMubGF6eUZldGNoX3x8YigpO3ZhciBnPTE8YS5wZW5kaW5nKCkubGVuZ3RoO2lmKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8mJihnfHxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSlhLmRlZmVyKGZ1bmN0aW9uKCl7YygpfSk7ZWxzZXt2YXIgaD1nb29nLmdsb2JhbC5kb2N1bWVudDtnPWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJigiQWN0aXZlWE9iamVjdCJpbiBnb29nLmdsb2JhbHx8Z29vZy5pc0VkZ2VfKCkpO2lmKGYmJmdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkmJiFnKXtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwO2EucGF1c2UoKTt2YXIgaz1oLm9ucmVhZHlzdGF0ZWNoYW5nZTtoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJpbnRlcmFjdGl2ZSI9PWgucmVhZHlTdGF0ZSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPQprLGMoKSxhLnJlc3VtZSgpKTsiZnVuY3Rpb24iPT09dHlwZW9mIGsmJmsuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWVsc2UgZ29vZy5pbkh0bWxEb2N1bWVudF8oKSYmZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKT9kKCk6YygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYSl7fSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQsZSl7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGEsYixjLGQsZSl9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYiwKYyxkLGUpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxhLGIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZ2b2lkIDAhPT1nb29nLmdsb2JhbC5KU09OPyJnb29nLmxvYWRNb2R1bGUoIitnb29nLmdsb2JhbC5KU09OLnN0cmluZ2lmeShhKyJcbi8vIyBzb3VyY2VVUkw9Iit0aGlzLnBhdGgrIlxuIikrIik7IjonZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsidXNlIHN0cmljdCI7JythKyJcbjtyZXR1cm4gZXhwb3J0c30pO1xuLy8jIHNvdXJjZVVSTD0iK3RoaXMucGF0aCsiXG4ifSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkKXtiPQpifHxbXTthPWEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBlPWdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCthKTtkJiYiYm9vbGVhbiIhPT10eXBlb2YgZHx8KGQ9ZD97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSk7Yz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koZSxhLGIsYyxkKTt0aGlzLmRlcGVuZGVuY2llc19bZV09Yztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuaWRUb1BhdGhfW2JbY11dPWU7dGhpcy5pZFRvUGF0aF9bYV09ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBlLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkdPT0c/bmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koYSxiLGMsZCxlKTplLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNj9nb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ/Cm5ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGEsYixjLGQsZSk6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShhLGIsYyxkLGUpOm5ldyBnb29nLkRlcGVuZGVuY3koYSxiLGMsZCxlKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oYSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoYSl9LGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrIiNiYXNlIik6bnVsbCxnb29nLmdsb2JhbC5DTE9TVVJFX05PX0RFUFN8fGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpLApnb29nLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2dvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChhLGIpfSk7aWYoIUNPTVBJTEVEKXt2YXIgaXNDaHJvbWU4Nz0hMTt0cnl7aXNDaHJvbWU4Nz1ldmFsKGdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eVNjcmlwdCkhPT1nb29nLmdsb2JhbC50cnVzdGVkVHlwZXMuZW1wdHlTY3JpcHR9Y2F0Y2goYSl7fWdvb2cuQ0xPU1VSRV9FVkFMX1BSRUZJTFRFUl89Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzJiZpc0Nocm9tZTg3JiZnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeSgiZ29vZyNiYXNlI2Rldm9ubHkjZXZhbCIpfHx7Y3JlYXRlU2NyaXB0Omdvb2cuaWRlbnRpdHlffX07Y29uc3QgcHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxjcmVhdGVFbmRwb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSx0aHJvd01hcmtlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxpc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPWE9PiJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hfHwiZnVuY3Rpb24iPT09dHlwZW9mIGEscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz0Ke2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiZhW3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdLHNlcmlhbGl6ZShhKXtjb25zdCB7cG9ydDE6Yixwb3J0MjpjfT1uZXcgTWVzc2FnZUNoYW5uZWw7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKTtyZXR1cm5bYyxbY11dfSxkZXNlcmlhbGl6ZShhKXthLnN0YXJ0KCk7cmV0dXJuIHdyYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKX19LHRocm93VHJhbnNmZXJIYW5kbGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9e2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiYKdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyBpbiBhLHNlcmlhbGl6ZSh7dmFsdWU6YX0pe3JldHVyblthIGluc3RhbmNlb2YgRXJyb3I/e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6YS5tZXNzYWdlLG5hbWU6YS5uYW1lLHN0YWNrOmEuc3RhY2t9fTp7aXNFcnJvcjohMSx2YWx1ZTphfSxbXV19LGRlc2VyaWFsaXplKGEpe2lmKGEuaXNFcnJvcil0aHJvdyBPYmplY3QuYXNzaWduKEVycm9yKGEudmFsdWUubWVzc2FnZSksYS52YWx1ZSk7dGhyb3cgYS52YWx1ZTt9fSx0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9bmV3IE1hcChbWyJwcm94eSIscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc10sWyJ0aHJvdyIsdGhyb3dUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc11dKTsKZnVuY3Rpb24gZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiPXNlbGYpe2IuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShkKXtpZihkJiZkLmRhdGEpe3ZhciB7aWQ6Zix0eXBlOmcscGF0aDpofT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxkLmRhdGEpLGs9KGQuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTt0cnl7Y29uc3QgbT1oLnNsaWNlKDAsLTEpLnJlZHVjZSgocCxxKT0+cFtxXSxhKSxuPWgucmVkdWNlKChwLHEpPT5wW3FdLGEpO3N3aXRjaChnKXtjYXNlICJHRVQiOnZhciBsPW47YnJlYWs7Y2FzZSAiU0VUIjptW2guc2xpY2UoLTEpWzBdXT1mcm9tV2lyZVZhbHVlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZC5kYXRhLnZhbHVlKTsKbD0hMDticmVhaztjYXNlICJBUFBMWSI6bD1uLmFwcGx5KG0sayk7YnJlYWs7Y2FzZSAiQ09OU1RSVUNUIjpjb25zdCBwPW5ldyBuKC4uLmspO2w9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhwKTticmVhaztjYXNlICJFTkRQT0lOVCI6Y29uc3Qge3BvcnQxOnEscG9ydDI6dX09bmV3IE1lc3NhZ2VDaGFubmVsO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsdSk7bD10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHEsW3FdKTticmVhaztjYXNlICJSRUxFQVNFIjpsPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gobSl7bD17dmFsdWU6bSxbdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc106MH19UHJvbWlzZS5yZXNvbHZlKGwpLmNhdGNoKG09Pgooe3ZhbHVlOm0sW3Rocm93TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOjB9KSkudGhlbihtPT57Y29uc3QgW24scF09dG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhtKTtiLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6Zn0pLHApOyJSRUxFQVNFIj09PWcmJihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhiKSl9KX19KTtiLnN0YXJ0JiZiLnN0YXJ0KCl9ZnVuY3Rpb24gaXNNZXNzYWdlUG9ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3JldHVybiJNZXNzYWdlUG9ydCI9PT1hLmNvbnN0cnVjdG9yLm5hbWV9CmZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtpc01lc3NhZ2VQb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSkmJmEuY2xvc2UoKX1mdW5jdGlvbiB3cmFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXtyZXR1cm4gY3JlYXRlUHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLFtdLGIpfWZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7aWYoYSl0aHJvdyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIik7fQpmdW5jdGlvbiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsYj1bXSxjPWZ1bmN0aW9uKCl7fSl7bGV0IGQ9ITE7Y29uc3QgZT1uZXcgUHJveHkoYyx7Z2V0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtpZihnPT09cmVsZWFzZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMpcmV0dXJuKCk9PnJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJSRUxFQVNFIixwYXRoOmIubWFwKGg9PmgudG9TdHJpbmcoKSl9KS50aGVuKCgpPT57Y2xvc2VFbmRQb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpO2Q9ITB9KTtpZigidGhlbiI9PT0KZyl7aWYoMD09PWIubGVuZ3RoKXJldHVybnt0aGVuOigpPT5lfTtmPXJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJHRVQiLHBhdGg6Yi5tYXAoaD0+aC50b1N0cmluZygpKX0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtyZXR1cm4gZi50aGVuLmJpbmQoZil9cmV0dXJuIGNyZWF0ZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxbLi4uYixnXSl9LHNldChmLGcsaCl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbayxsXT10b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGgpO3JldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSwKe3R5cGU6IlNFVCIscGF0aDpbLi4uYixnXS5tYXAobT0+bS50b1N0cmluZygpKSx2YWx1ZTprfSxsKS50aGVuKGZyb21XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyl9LGFwcGx5KGYsZyxoKXt0aHJvd0lmUHJveHlSZWxlYXNlZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGQpO2Y9YltiLmxlbmd0aC0xXTtpZihmPT09Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtpZigiYmluZCI9PT1mKXJldHVybiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsCmIuc2xpY2UoMCwtMSkpO2NvbnN0IFtrLGxdPXByb2Nlc3NBcmd1bWVudHMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhoKTtyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkFQUExZIixwYXRoOmIubWFwKG09Pm0udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omt9LGwpLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX0sY29uc3RydWN0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbaCxrXT1wcm9jZXNzQXJndW1lbnRzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZyk7cmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLAp7dHlwZToiQ09OU1RSVUNUIixwYXRoOmIubWFwKGw9PmwudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omh9LGspLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX19KTtyZXR1cm4gZX1mdW5jdGlvbiBteUZsYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhKX0KZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2E9YS5tYXAodG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyk7cmV0dXJuW2EubWFwKGI9PmJbMF0pLG15RmxhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEubWFwKGI9PmJbMV0pKV19Y29uc3QgdHJhbnNmZXJDYWNoZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHRyYW5zZmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXt0cmFuc2ZlckNhY2hlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuc2V0KGEsYik7cmV0dXJuIGF9CmZ1bmN0aW9uIHByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oYSx7W3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOiEwfSl9ZnVuY3Rpb24gd2luZG93RW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGI9c2VsZixjPSIqIil7cmV0dXJue3Bvc3RNZXNzYWdlOihkLGUpPT5hLnBvc3RNZXNzYWdlKGQsYyxlKSxhZGRFdmVudExpc3RlbmVyOmIuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKGIpLHJlbW92ZUV2ZW50TGlzdGVuZXI6Yi5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoYil9fQpmdW5jdGlvbiB0b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2Zvcihjb25zdCBbYixjXW9mIHRyYW5zZmVySGFuZGxlcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylpZihjLmNhbkhhbmRsZShhKSl7Y29uc3QgW2QsZV09Yy5zZXJpYWxpemUoYSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmIsdmFsdWU6ZH0sZV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmF9LHRyYW5zZmVyQ2FjaGUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy5nZXQoYSl8fFtdXX0KZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIkhBTkRMRVIiOnJldHVybiB0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZ2V0KGEubmFtZSkuZGVzZXJpYWxpemUoYS52YWx1ZSk7Y2FzZSAiUkFXIjpyZXR1cm4gYS52YWx1ZX19CmZ1bmN0aW9uIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGIsYyl7cmV0dXJuIG5ldyBQcm9taXNlKGQ9Pntjb25zdCBlPWdlbmVyYXRlVVVJRCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKCk7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBoKGcpe2cuZGF0YSYmZy5kYXRhLmlkJiZnLmRhdGEuaWQ9PT1lJiYoYS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixoKSxkKGcuZGF0YSkpfSk7YS5zdGFydCYmYS5zdGFydCgpO2EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6ZX0sYiksYyl9KX0KZnVuY3Rpb24gZ2VuZXJhdGVVVUlEJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoKXtyZXR1cm4gQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz17fTttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuY3JlYXRlRW5kcG9pbnQ9Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZXhwb3NlPWV4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHk9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHlNYXJrZXI9cHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucmVsZWFzZVByb3h5PXJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy50cmFuc2Zlcj10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMudHJhbnNmZXJIYW5kbGVycz10cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndpbmRvd0VuZHBvaW50PXdpbmRvd0VuZHBvaW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndyYXA9d3JhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO2Z1bmN0aW9uIE1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlKCl7fU1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5yZWFkeT0hMTtNZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5wcm90b3R5cGUucG9ydD12b2lkIDA7TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUucHJvdG90eXBlLnBvc3Q9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5icm9hZGNhc3RQbGF5U3RhdGU9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS53b3JrZXJTdGF0ZT12b2lkIDA7Ck1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS52YW5pbGxhV29ya2VyU3RhdGU9dm9pZCAwO3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUsbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9e307bW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUuTWVzc2FnZVBvcnRTdGF0ZT1NZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTttb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTtjb25zdCBjc291bmRDcmVhdGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uPWE9PigpPT5hLmV4cG9ydHMuY3NvdW5kQ3JlYXRlV2FzaSgpO2Nzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJjcmVhdGUgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kRGVzdHJveShiKTtjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi50b1N0cmluZz0oKT0+ImRlc3Ryb3kgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmRHZXRBUElWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT4oKT0+YS5leHBvcnRzLmNzb3VuZEdldEFQSVZlcnNpb24oKTsKY3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRBUElWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KCk9PmEuZXhwb3J0cy5jc291bmRHZXRWZXJzaW9uKCk7Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kSW5pdGlhbGl6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KGIsYyk9PmEuZXhwb3J0cy5jc291bmRJbml0aWFsaXplKGMpO2Nzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLnRvU3RyaW5nPSgpPT4iaW5pdGlhbGl6ZSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwp2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249e307bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kQ3JlYXRlPWNzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kRGVzdHJveT1jc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjttb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi5jc291bmRHZXRBUElWZXJzaW9uPWNzb3VuZEdldEFQSVZlcnNpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uO21vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLmNzb3VuZEdldFZlcnNpb249Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kSW5pdGlhbGl6ZT1jc291bmRJbml0aWFsaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjtjb25zdCBXSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzPTE7ZnVuY3Rpb24gVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoKXt0aGlzLmVuY29kaW5nPSJ1dGY4IjtyZXR1cm4gdGhpc31UZXh0RW5jb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcigicGFzc2VkIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgIithKyIgIit0eXBlb2YgYSk7YT11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYSkpO2NvbnN0IGI9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgpO1suLi5hXS5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7YltkXT1jLmNvZGVQb2ludEF0KDApfSk7cmV0dXJuIGJ9OwpmdW5jdGlvbiBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycygpe3RoaXMuZW5jb2Rpbmc9InV0ZjgiO3RoaXMuaWdub3JlQk9NPSExO3RoaXMudHJpbU51bGw9YT0+e2NvbnN0IGI9YS5pbmRleE9mKCJceDAwIik7cmV0dXJuLTE8Yj9hLnNsaWNlKDAsTWF0aC5tYXgoMCxiKSk6YX07dGhpcy5kZWNvZGU9ZnVuY3Rpb24oYSxiKXtpZih2b2lkIDA9PT1hKXJldHVybiIiO2lmKCJib29sZWFuIiE9PXR5cGVvZih2b2lkIDAhPT1iJiYic3RyZWFtImluIGI/Yi5zdHJlYW06ITEpKXRocm93IG5ldyBUeXBlRXJyb3IoInN0cmVhbSBvcHRpb24gbXVzdCBiZSBib29sZWFuIik7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGEpKXthPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpO2NvbnN0IGM9QXJyYXkuZnJvbSh7bGVuZ3RoOmEubGVuZ3RofSk7YS5mb3JFYWNoKGZ1bmN0aW9uKGQsZSl7Y1tlXT1TdHJpbmcuZnJvbUNvZGVQb2ludChkKX0pOwpyZXR1cm4gdGhpcy50cmltTnVsbChjLmpvaW4oIiIpKX10aHJvdyBuZXcgVHlwZUVycm9yKCJwYXNzZWQgYXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIgdmlldyIpO319CmNvbnN0IGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1XSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzP25ldyBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczpuZXcgVGV4dERlY29kZXIoInV0ZjgiKSxlbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9V0lUSF9URVhUX0VOQ09ERVJfUE9MWUZJTEwkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz9uZXcgVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM6bmV3IFRleHRFbmNvZGVyKCJ1dGY4IiksdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1hPT5kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKGEpO3ZhciBtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9e307Cm1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGVyPWRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczttb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2Rlcj1lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7bW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLnVpbnQyU3RyaW5nPXVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7Y29uc3QgdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsPWE9Pntjb25zdCBiPWEuaW5kZXhPZigiXHgwMCIpO3JldHVybi0xPGI/YS5zdWJzdHIoMCxiKTphfTt2YXIgbW9kdWxlJHNyYyR1dGlscyR0cmltX251bGw9e307bW9kdWxlJHNyYyR1dGlscyR0cmltX251bGwudHJpbU51bGw9dHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsO2NvbnN0IGZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57YS5leHBvcnRzLmZyZWVTdHJpbmdNZW0oYil9LHB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57KHtidWZmZXI6YX09YS53YXNpLm1lbW9yeSk7Yj1uZXcgVWludDhBcnJheShhLGIpO2I9dWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhiKTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKGIpfSxzdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycz0oYSxiKT0+e2lmKCJzdHJpbmciIT09dHlwZW9mIGIpY29uc29sZS5lcnJvcigiRXhwZWN0ZWQgc3RyaW5nIGJ1dCBnb3QiLHR5cGVvZiBiKTtlbHNle2I9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShiKTt2YXIgYz1hLmV4cG9ydHMuYWxsb2NTdHJpbmdNZW0oYi5sZW5ndGgpOwooe2J1ZmZlcjphfT1hLndhc2kubWVtb3J5KTsobmV3IFVpbnQ4QXJyYXkoYSxjLGIubGVuZ3RoKzEpKS5zZXQoYik7cmV0dXJuIGN9fTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM9e307bW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMuZnJlZVN0cmluZ1B0cj1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVyczttb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycy5wdHIyc3RyaW5nPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzO21vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzLnN0cmluZzJwdHI9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM7Y29uc3QgY3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFBhcnNlT3JjKGIsYyk7Y3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBhcnNlT3JjID0gYXN5bmMgKG9yY2hlc3RyYSkgPT4gT2JqZWN0OyI7Y29uc3QgY3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZENvbXBpbGVUcmVlKGIsYyk7Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVUcmVlID0gYXN5bmMgKHRyZWUpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kQ29tcGlsZU9yYyhiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVPcmMgPSBhc3luYyAob3JjaGVzdHJhKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+e2M9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtiPWEuZXhwb3J0cy5jc291bmRFdmFsQ29kZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZEV2YWxDb2RlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjc291bmRFdmFsQ29kZSA9IGFzeW5jIChvcmNoZXN0cmEpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFN0YXJ0V2FzaShiKTtjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4ic3RhcnQgPSBhc3luYyAoKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2xldCBkO3RyeXtkPWEuZXhwb3J0cy5jc291bmRDb21waWxlQ3NkKGIsYyl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBkfTtjc291bmRDb21waWxlQ3NkJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjb21waWxlQ3NkID0gYXN5bmMgKHBhdGgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlQ3NkVGV4dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZENvbXBpbGVDc2RUZXh0KGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVDc2RUZXh0ID0gYXN5bmMgKGNzb3VuZERvY3VtZW50KSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFBlcmZvcm0oYik7Y3NvdW5kUGVyZm9ybSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4icGVyZm9ybSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUtzbXBzV2FzaShiKTtjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBlcmZvcm1Lc21wcyA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFBlcmZvcm1CdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUJ1ZmZlcihiKTtjc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJwZXJmb3JtQnVmZmVyID0gYXN5bmMgKGNzb3VuZCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTdG9wKGIpOwpjc291bmRTdG9wJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJzdG9wID0gYXN5bmMgKCkgPT4gdW5kZWZpbmVkOyI7Y29uc3QgY3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRDbGVhbnVwKGIpO2Nzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNsZWFudXAgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRSZXNldFdhc2koYik7Y3NvdW5kUmVzZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InJlc2V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENsZWFudXA9Y3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRDb21waWxlQ3NkPWNzb3VuZENvbXBpbGVDc2QkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZUNzZFRleHQ9Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZU9yYz1jc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENvbXBpbGVUcmVlPWNzb3VuZENvbXBpbGVUcmVlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7Cm1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRFdmFsQ29kZT1jc291bmRFdmFsQ29kZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQYXJzZU9yYz1jc291bmRQYXJzZU9yYyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQZXJmb3JtPWNzb3VuZFBlcmZvcm0kJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kUGVyZm9ybUJ1ZmZlcj1jc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFBlcmZvcm1Lc21wcz1jc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFJlc2V0PWNzb3VuZFJlc2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0YXJ0PWNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0b3A9Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO2NvbnN0IHNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXM9e2ludDo0LE1ZRkxUOjQsY2hhcjoxfSxzaXplb2ZTdHJ1Y3QkJG1vZHVsZSRzcmMkdXRpbHMkbmF0aXZlX3NpemVzPWE9PmEucmVkdWNlKChiLFssYywuLi5kXSk9PmIrKCJjaGFyIj09PWM/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tjXSpkWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbY10pLDApO3ZhciBtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcz17fTttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplT2ZQcmltaXRpdmU9c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplczttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplb2ZTdHJ1Y3Q9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcztjb25zdCBzdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD0oYSxiKT0+e1thXT1hLnJlZHVjZSgoW2MsZF0sW2UsZiwuLi5nXSk9PntnPSJjaGFyIj09PWY/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tmXSpnWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbZl07Zj0iY2hhciI9PT1mP3RyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGIuc3ViYXJyYXkoZCxnKSkpfHwiIjpiW2RdO2NbZV09ZjtyZXR1cm5bYyxkK2ddfSxbe30sMF0pO3JldHVybiBhfTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD17fTsKbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdC5zdHJ1Y3RCdWZmZXJUb09iamVjdD1zdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdDtjb25zdCBDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGVidWdfbW9kZSIsImludCJdLFsiYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiaGFyZHdhcmVfYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiZGlzcGxheXMiLCJpbnQiXSxbImFzY2lpX2dyYXBocyIsImludCJdLFsicG9zdHNjcmlwdF9ncmFwaHMiLCJpbnQiXSxbIm1lc3NhZ2VfbGV2ZWwiLCJpbnQiXSxbInRlbXBvIiwiaW50Il0sWyJyaW5nX2JlbGwiLCJpbnQiXSxbInVzZV9jc2NvcmUiLCJpbnQiXSxbInRlcm1pbmF0ZV9vbl9taWRpIiwiaW50Il0sWyJoZWFydGJlYXQiLCJpbnQiXSxbImRlZmVyX2dlbjAxX2xvYWQiLCJpbnQiXSxbIm1pZGlfa2V5IiwiaW50Il0sWyJtaWRpX2tleV9jcHMiLCJpbnQiXSxbIm1pZGlfa2V5X29jdCIsImludCJdLFsibWlkaV9rZXlfcGNoIiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5IiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5X2FtcCIsImludCJdLFsibm9fZGVmYXVsdF9wYXRocyIsCiJpbnQiXSxbIm51bWJlcl9vZl90aHJlYWRzIiwiaW50Il0sWyJzeW50YXhfY2hlY2tfb25seSIsImludCJdLFsiY3NkX2xpbmVfY291bnRzIiwiaW50Il0sWyJjb21wdXRlX3dlaWdodHMiLCJpbnQiXSxbInJlYWx0aW1lX21vZGUiLCJpbnQiXSxbInNhbXBsZV9hY2N1cmF0ZSIsImludCJdLFsic2FtcGxlX3JhdGVfb3ZlcnJpZGUiLCJNWUZMVCJdLFsiY29udHJvbF9yYXRlX292ZXJyaWRlIiwiTVlGTFQiXSxbIm5jaG5sc19vdmVycmlkZSIsImludCJdLFsibmNobmxzX2lfb3ZlcnJpZGUiLCJpbnQiXSxbImUwZGJmc19vdmVycmlkZSIsIk1ZRkxUIl0sWyJkYWVtb24iLCJpbnQiXSxbImtzbXBzX292ZXJyaWRlIiwiaW50Il0sWyJGRlRfbGlicmFyeSIsImludCJdXSxDU19NSURJREVWSUNFJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGV2aWNlX25hbWUiLCJjaGFyIiw2NF0sWyJpbnRlcmZhY2VfbmFtZSIsImNoYXIiLDY0XSxbImRldmljZV9pZCIsImNoYXIiLDY0XSxbIm1pZGlfbW9kdWxlIiwKImNoYXIiLDY0XSxbImlzT3V0cHV0IiwiaW50Il1dO3ZhciBtb2R1bGUkc3JjJHN0cnVjdHVyZXM9e307Y29uc3QgY3NvdW5kR2V0U3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcihiKTtjc291bmRHZXRTciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRTciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEtyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0S3IoYik7Y3NvdW5kR2V0S3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0S3IgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRLc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEtzbXBzKGIpO2Nzb3VuZEdldEtzbXBzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldEtzbXBzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldE5jaG5scyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE5jaG5scyhiKTtjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0TmNobmxzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0TmNobmxzSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXROY2hubHNJbnB1dChiKTtjc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXROY2hubHNJbnB1dCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0MGRCRlMoYik7CmNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldDBkQkZTID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRBNChiKTtjc291bmRHZXRBNCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRBNCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyhiKTtjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0Q3VycmVudFRpbWVTYW1wbGVzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNpemVPZk1ZRkxUJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQoYik7Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0U2l6ZU9mTVlGTFQgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFNldE9wdGlvbihiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJzZXRPcHRpb24gPSBhc3luYyAob3B0aW9uKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT4oYixjKT0+e2EuZXhwb3J0cy5jc291bmRTZXRQYXJhbXMoYixjKX07Y3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldFBhcmFtcyA9IGFzeW5jIChjc291bmRQYXJhbXMpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2NvbnN0IGQ9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcyhDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXMpLGU9YS5leHBvcnRzLmFsbG9jQ3NvdW5kUGFyYW1zU3RydWN0KCk7Yz1uZXcgVWludDhBcnJheShjLGUsZCk7YS5leHBvcnRzLmNzb3VuZEdldFBhcmFtcyhiLGUpO2I9c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NPVU5EX1BBUkFNUyQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGMpO2EuZXhwb3J0cy5mcmVlQ3NvdW5kUGFyYW1zKGUpO3JldHVybiBifTtjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0UGFyYW1zID0gYXN5bmMgKCkgPT4gQ1NPVU5EX1BBUkFNUzsiOwpjb25zdCBjc291bmRHZXREZWJ1ZyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldERlYnVnKGIpO2Nzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldERlYnVnID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57YS5leHBvcnRzLmNzb3VuZFNldERlYnVnKGIsYyl9O2Nzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldERlYnVnID0gYXN5bmMgKG51bWJlcikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldDBkQkZTPWNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0QTQ9Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcz1jc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldERlYnVnPWNzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXRLcj1jc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0S3NtcHM9Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzOwptb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHM9Y3NvdW5kR2V0TmNobmxzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHNJbnB1dD1jc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0UGFyYW1zPWNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQ9Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldFNyPWNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kU2V0RGVidWc9Y3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldE9wdGlvbj1jc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldFBhcmFtcz1jc291bmRTZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO2NvbnN0IGNzb3VuZEdldElucHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldElucHV0QnVmZmVyU2l6ZShiKTtjc291bmRHZXRJbnB1dEJ1ZmZlclNpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE91dHB1dEJ1ZmZlclNpemUoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRJbnB1dEJ1ZmZlcihiKTsKY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXIgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRPdXRwdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXRCdWZmZXIoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldE91dHB1dEJ1ZmZlciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcGluKGIpO2Nzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0U3BpbiA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldFNwb3V0KGIpO2Nzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldFNwb3V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldElucHV0QnVmZmVyPWNzb3VuZEdldElucHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRJbnB1dEJ1ZmZlclNpemU9Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRPdXRwdXRCdWZmZXI9Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzsKbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8uY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZT1jc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRTcGluPWNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvO21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldFNwb3V0PWNzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbztmdW5jdGlvbiBhZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5hZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOk51bWJlcihhKStOdW1iZXIoYil9Y29uc3QgY2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSk7ZnVuY3Rpb24gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9W10pe3JldHVybiguLi5jKT0+e2M9Wy4uLmIsLi4uY107cmV0dXJuIGMubGVuZ3RoPj1hLmxlbmd0aD9hKC4uLmMpOmN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKX19CmZ1bmN0aW9uIGFkanVzdEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2NvbnN0IGQ9MD5hP2MubGVuZ3RoK2E6YTtpZihhPj1jLmxlbmd0aHx8MD5kKXJldHVybiBjO2E9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7YVtkXT1iKGFbZF0pO3JldHVybiBhfWNvbnN0IGFkanVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYWRqdXN0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspaWYoIWEoYltjXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYWxsUGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+e2xldCBjPTA7Zm9yKDtjPGEubGVuZ3RoOyl7aWYoIWFbY10oLi4uYikpcmV0dXJuITE7YysrfXJldHVybiEwfX1mdW5jdGlvbiBhbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYj0+YX0KZnVuY3Rpb24gYW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJiZifWZ1bmN0aW9uIGFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9MDtmb3IoO2M8Yi5sZW5ndGg7KXtpZihhKGJbY10sYykpcmV0dXJuITA7YysrfXJldHVybiExfQpmdW5jdGlvbiBhbnlQYXNzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuKC4uLmIpPT57bGV0IGM9MDtmb3IoO2M8YS5sZW5ndGg7KXtpZihhW2NdKC4uLmIpKXJldHVybiEwO2MrK31yZXR1cm4hMX19ZnVuY3Rpb24gYXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLnNwbGl0KCIiKS5jb25jYXQoYSk7Y29uc3QgYz1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjLnB1c2goYSk7cmV0dXJuIGN9CmZ1bmN0aW9uIGFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmEuYXBwbHkodGhpcyxiKX1jb25zdCB7aXNBcnJheTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN9PUFycmF5OwpmdW5jdGlvbiBfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9MCl7Zm9yKGNvbnN0IGMgaW4gYSkhMSE9PWEuaGFzT3duUHJvcGVydHkoYykmJiJjb25zdHJ1Y3RvciIhPT1jJiYoIm9iamVjdCI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2NdKSkpLCJmdW5jdGlvbiI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixhW2NdLmxlbmd0aCkpKTtyZXR1cm4gYn0KZnVuY3Rpb24gX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2NvbnN0IGE9W107bGV0IGI9MDtjb25zdCBjPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKDtiPGMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFyZ3VtZW50c1tiXTspYVtiXT1hcmd1bWVudHNbYl0sYisrO3JldHVybiBhfQpmdW5jdGlvbiBfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXt2YXIgZD1iLWMubGVuZ3RoO2lmKDE9PT1kKXJldHVybiBmPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZikpO2lmKDI9PT1kKXJldHVybihmLGcpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZixnKSk7aWYoMz09PWQpcmV0dXJuKGYsZyxoKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLApiLF9fZmlsdGVyVW5kZWZpbmVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoLi4uYyxmLGcsaCkpO2lmKDQ9PT1kKXJldHVybihmLGcsaCxrKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyguLi5jLGYsZyxoLGspKTtpZig0PGQpcmV0dXJuKC4uLmYpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsLi4uZikpO2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSl7dmFyIGU9W107ZD0wO2NvbnN0IGY9YS5sZW5ndGg7CmZvcig7ZDxmO2QrKyl7aWYoIm9iamVjdCI9PT10eXBlb2YgYVtkXXx8aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pKWVbZF09X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdLGIsYyk7ImZ1bmN0aW9uIj09PXR5cGVvZiBhW2RdJiYoZVtkXT1hW2RdKC4uLmMpKX1yZXR1cm4gZX1kPXt9O2ZvcihlIGluIGEpITEhPT1hLmhhc093blByb3BlcnR5KGUpJiYiY29uc3RydWN0b3IiIT09ZSYmKCJvYmplY3QiPT09dHlwZW9mIGFbZV0/ZFtlXT1fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZV0sYixjKToiZnVuY3Rpb24iPT09dHlwZW9mIGFbZV0mJihkW2VdPWFbZV0oLi4uYykpKTtyZXR1cm4gZH0KZnVuY3Rpb24gYXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPV9fZmluZEhpZ2hlc3RBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpO3JldHVybiAwPT09Yz8oKT0+KHt9KTpfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyxiKX1mdW5jdGlvbiBhc3NvY0ZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LGMse1thXTpifSl9Y29uc3QgYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIF9pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYTw8MD09PWF9Y29uc3QgaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9TnVtYmVyLmlzSW50ZWdlcnx8X2lzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBhc3NvY1BhdGhGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtjb25zdCBkPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiLiIpLm1hcChlPT5pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhOdW1iZXIoZSkpP051bWJlcihlKTplKTphO2lmKDA9PT1kLmxlbmd0aClyZXR1cm4gYjthPWRbMF07aWYoMTxkLmxlbmd0aCl7Y29uc3QgZT0ib2JqZWN0Ij09PXR5cGVvZiBjJiZudWxsIT09YyYmYy5oYXNPd25Qcm9wZXJ0eShhKT9jW2FdOmlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGRbMV0pP1tdOnt9O2I9YXNzb2NQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkLDEpLGIsZSl9cmV0dXJuIGlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpJiYKaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpPyhjPWNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpLGNbYV09YixjKTphc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKX1jb25zdCBhc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jUGF0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBkPTA7bGV0IGU9MDtjb25zdCBmPWIubGVuZ3RoLGc9YXJndW1lbnRzLmxlbmd0aCxoPUFycmF5KGYrZyk7Zm9yKDtkPGY7KWhbZF09YltkXSxkKys7Zm9yKDtlPGc7KWhbZitlXT1hcmd1bWVudHNbZV0sZSsrO2Q9YS1oLmxlbmd0aDtyZXR1cm4gaC5sZW5ndGg+PWE/Yy5hcHBseSh0aGlzLGgpOl9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxoLGMpKX19CmZ1bmN0aW9uIF9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihjLGQsZSxmKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNjpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07CmNhc2UgNzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDg6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDk6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtLG4pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fQpmdW5jdGlvbiBjdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5jdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKDEwPGEpdGhyb3cgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIF9hcml0eSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpO3JldHVybiBfYXJpdHkkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsX2N1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsW10sYikpfQpmdW5jdGlvbiBiaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS5sZW5ndGgsKC4uLmMpPT5hLmFwcGx5KGIsYykpfWZ1bmN0aW9uIGJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5ib3RoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTooLi4uYyk9PmEoLi4uYykmJmIoLi4uYyl9CmZ1bmN0aW9uIGNoYWluJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOltdLmNvbmNhdCguLi5iLm1hcChhKSl9ZnVuY3Rpb24gY2xhbXBGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZihhPmIpdGhyb3cgRXJyb3IoIm1pbiBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4IGluIGNsYW1wKG1pbiwgbWF4LCB2YWx1ZSkiKTtpZihjPj1hJiZjPD1iKXJldHVybiBjO2lmKGM+YilyZXR1cm4gYjtpZihjPGEpcmV0dXJuIGF9Y29uc3QgY2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGNsYW1wRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGNsb25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk/QXJyYXkoYS5sZW5ndGgpOnt9O2lmKGEmJmEuZ2V0VGltZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2Zvcihjb25zdCBjIGluIGEpe2NvbnN0IGQ9YVtjXTtiW2NdPSJvYmplY3QiPT09dHlwZW9mIGQmJm51bGwhPT1kP2QuZ2V0VGltZT9uZXcgRGF0ZShkLmdldFRpbWUoKSk6Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkKTpkfXJldHVybiBifWZ1bmN0aW9uIGNvbXBsZW1lbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PiFhKC4uLmIpfQpjbGFzcyBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN7Y29uc3RydWN0b3IoYSl7dGhpcy52YWx1ZT1hfX1mdW5jdGlvbiByZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZHVjZTogbGlzdCBtdXN0IGJlIGFycmF5IG9yIGl0ZXJhYmxlIik7bGV0IGQ9MDtjb25zdCBlPWMubGVuZ3RoO2Zvcig7ZDxlOyl7Yj1hKGIsY1tkXSxkLGMpO2lmKGIgaW5zdGFuY2VvZiBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpcmV0dXJuIGIudmFsdWU7ZCsrfXJldHVybiBifQpjb25zdCByZWR1Y2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpLHJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT5uZXcgUmVkdWNlU3RvcHBlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpOwpmdW5jdGlvbiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihjLGQpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihjLGQsZSl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTsKY2FzZSA3OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCxrKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgOTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0sbil7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtkZWZhdWx0OnRocm93IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKTt9fQpmdW5jdGlvbiBfcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuY2FsbCh0aGlzLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19CmZ1bmN0aW9uIHBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJwaXBlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhcmd1bWVudHNbMF0ubGVuZ3RoLHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX3BpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyxhcmd1bWVudHNbMF0sQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEsSW5maW5pdHkpKSl9CmZ1bmN0aW9uIGNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJjb21wb3NlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBwaXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCkucmV2ZXJzZSgpKX1mdW5jdGlvbiBjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5jb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOiJzdHJpbmciPT09dHlwZW9mIGE/YCR7YX0ke2J9YDpbLi4uYSwuLi5iXX0KZnVuY3Rpb24gY29uZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBiPT57bGV0IGM9ITEsZDthLmZvckVhY2goKFtlLGZdKT0+eyFjJiZlKGIpJiYoYz0hMCxkPWYoYikpfSk7cmV0dXJuIGR9fWNvbnN0IHtrZXlzOmtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzfT1PYmplY3Q7ZnVuY3Rpb24gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYz0hMSl7bGV0IGQ9MDtjb25zdCBlPUFycmF5KGIubGVuZ3RoKTtmb3IoO2Q8Yi5sZW5ndGg7KWVbZF09Yz9hKGJbZF0sZCk6YShiW2RdKSxkKys7cmV0dXJuIGV9CmZ1bmN0aW9uIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGc9Pm1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZyk7bGV0IGM9MDtjb25zdCBkPWtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLGU9ZC5sZW5ndGgsZj17fTtmb3IoO2M8ZTspe2NvbnN0IGc9ZFtjXTtmW2ddPWEoYltnXSxnLGIpO2MrK31yZXR1cm4gZn1jb25zdCBtYXBPYmpJbmRleGVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7CmZ1bmN0aW9uIG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9Pm1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoIWIpdGhyb3cgRXJyb3IoSU5DT1JSRUNUX0lURVJBQkxFX0lOUFVUKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP21hcEFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTptYXBPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBtYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmI+YT9iOmF9CmZ1bmN0aW9uIGNvbnZlcmdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9Pm1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsZS5sZW5ndGgpLDAsYik7cmV0dXJuIGN1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQ9PmQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGIpKX0pfQpmdW5jdGlvbiBjb3VudCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmNvdW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/Yi5maWx0ZXIoYz0+YShjKSkubGVuZ3RoOjB9ZnVuY3Rpb24gY291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmNvdW50QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9e307Yi5mb3JFYWNoKGQ9PntkPWEoZCk7Y1tkXT9jW2RdKys6Y1tkXT0xfSk7cmV0dXJuIGN9CmNvbnN0IGRlYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PmEtMTtmdW5jdGlvbiBpc0ZhbHN5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIHZvaWQgMD09PWF8fG51bGw9PT1hfHwhMD09PU51bWJlci5pc05hTihhKX1mdW5jdGlvbiBkZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5kZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzRmFsc3kkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKT9hOmJ9CmZ1bmN0aW9uIHR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtpZihudWxsPT09YSlyZXR1cm4iTnVsbCI7aWYodm9pZCAwPT09YSlyZXR1cm4iVW5kZWZpbmVkIjtpZihOdW1iZXIuaXNOYU4oYSkpcmV0dXJuIk5hTiI7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkuc2xpY2UoOCwtMSk7cmV0dXJuIkFzeW5jRnVuY3Rpb24iPT09YT8iUHJvbWlzZSI6YX0KZnVuY3Rpb24gX2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpKXRocm93IEVycm9yKGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAnaW5kZXhPZicgb2YgJHtifWApO3ZhciBjPXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtpZighWyJPYmplY3QiLCJBcnJheSIsIk5hTiIsIlJlZ0V4cCJdLmluY2x1ZGVzKGMpKXJldHVybiBiLmxhc3RJbmRleE9mKGEpOyh7bGVuZ3RoOmN9PWIpO2xldCBkPS0xO2Zvcig7LTE8LS1jJiYtMT09PWQ7KWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGJbY10sYSkmJihkPWMpO3JldHVybiBkfQpmdW5jdGlvbiBfaW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgQ2Fubm90IHJlYWQgcHJvcGVydHkgJ2luZGV4T2YnIG9mICR7Yn1gKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoIVsiT2JqZWN0IiwiQXJyYXkiLCJOYU4iLCJSZWdFeHAiXS5pbmNsdWRlcyhjKSlyZXR1cm4gYi5pbmRleE9mKGEpO2xldCBkPWM9LTE7Y29uc3Qge2xlbmd0aDplfT1iO2Zvcig7KytjPGUmJi0xPT09ZDspZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYltjXSxhKSYmKGQ9Yyk7cmV0dXJuIGR9CmZ1bmN0aW9uIF9hcnJheUZyb21JdGVyYXRvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2NvbnN0IGI9W107bGV0IGM7Zm9yKDshKGM9YS5uZXh0KCkpLmRvbmU7KWIucHVzaChjLnZhbHVlKTtyZXR1cm4gYn1mdW5jdGlvbiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoYS5zaXplIT09Yi5zaXplKXJldHVybiExO2E9X2FycmF5RnJvbUl0ZXJhdG9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS52YWx1ZXMoKSk7Y29uc3QgYz1fYXJyYXlGcm9tSXRlcmF0b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLnZhbHVlcygpKTtyZXR1cm4gMD09PWEuZmlsdGVyKGQ9Pi0xPT09X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkLGMpKS5sZW5ndGh9CmZ1bmN0aW9uIHBhcnNlRXJyb3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPWEuX19wcm90b19fLnRvU3RyaW5nKCk7cmV0dXJuWyJFcnJvciIsIlR5cGVFcnJvciJdLmluY2x1ZGVzKGIpP1tiLGEubWVzc2FnZV06W119ZnVuY3Rpb24gcGFyc2VEYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9EYXRlU3RyaW5nP1shMCxhLmdldFRpbWUoKV06WyExXX1mdW5jdGlvbiBwYXJzZVJlZ2V4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEuY29uc3RydWN0b3IhPT1SZWdFeHA/WyExXTpbITAsYS50b1N0cmluZygpXX0KZnVuY3Rpb24gZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoYyE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlyZXR1cm4hMTtpZigiRnVuY3Rpb24iPT09YylyZXR1cm4gdm9pZCAwPT09YS5uYW1lPyExOmEubmFtZT09PWIubmFtZTtpZihbIk5hTiIsIlVuZGVmaW5lZCIsIk51bGwiXS5pbmNsdWRlcyhjKSlyZXR1cm4hMDtpZigiTnVtYmVyIj09PWMpcmV0dXJuIE9iamVjdC5pcygtMCxhKSE9PU9iamVjdC5pcygtMCxiKT8hMTphLnRvU3RyaW5nKCk9PT1iLnRvU3RyaW5nKCk7aWYoWyJTdHJpbmciLCJCb29sZWFuIl0uaW5jbHVkZXMoYykpcmV0dXJuIGEudG9TdHJpbmcoKT09PQpiLnRvU3RyaW5nKCk7aWYoIkFycmF5Ij09PWMpe2M9QXJyYXkuZnJvbShhKTtjb25zdCBmPUFycmF5LmZyb20oYik7aWYoYy50b1N0cmluZygpIT09Zi50b1N0cmluZygpKXJldHVybiExO2xldCBnPSEwO2MuZm9yRWFjaCgoaCxrKT0+e2cmJihoPT09ZltrXXx8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxmW2tdKXx8KGc9ITEpKX0pO3JldHVybiBnfXZhciBkPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxlPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtpZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZURhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtlPXBhcnNlRGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpOwppZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7ZT1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZFswXSlyZXR1cm4gZVswXT9kWzBdPT09ZVswXSYmZFsxXT09PWVbMV06ITE7aWYoIlNldCI9PT1jKXJldHVybiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYik7aWYoIk9iamVjdCI9PT1jKXtjPU9iamVjdC5rZXlzKGEpO2lmKGMubGVuZ3RoIT09T2JqZWN0LmtleXMoYikubGVuZ3RoKXJldHVybiExO2xldCBmPSEwO2MuZm9yRWFjaChnPT57aWYoZil7Y29uc3QgaD1hW2ddO2c9YltnXTtoPT09Z3x8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxnKXx8KGY9ITEpfX0pOwpyZXR1cm4gZn1yZXR1cm4hMX1mdW5jdGlvbiBpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmluY2x1ZGVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLmluY2x1ZGVzKGEpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5IFwnaW5kZXhPZlwnIG9mICR7Yn1gKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpPy0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTohMX0KY2xhc3MgX1NldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpze2NvbnN0cnVjdG9yKCl7dGhpcy5zZXQ9bmV3IFNldDt0aGlzLml0ZW1zPXt9fWNoZWNrVW5pcXVlbmVzcyhhKXt2YXIgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJOdWxsIiwiVW5kZWZpbmVkIiwiTmFOIl0uaW5jbHVkZXMoYik/YiBpbiB0aGlzLml0ZW1zPyExOnRoaXMuaXRlbXNbYl09ITA6WyJPYmplY3QiLCJBcnJheSJdLmluY2x1ZGVzKGIpP2IgaW4gdGhpcy5pdGVtcz8tMT09PV9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSx0aGlzLml0ZW1zW2JdKT8odGhpcy5pdGVtc1tiXS5wdXNoKGEpLCEwKTohMToodGhpcy5pdGVtc1tiXT1bYV0sITApOihiPXRoaXMuc2V0LnNpemUsdGhpcy5zZXQuYWRkKGEpLHRoaXMuc2V0LnNpemUhPT1iKX19CmZ1bmN0aW9uIHVuaXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPW5ldyBfU2V0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMsYz1bXTthLmZvckVhY2goZD0+e2IuY2hlY2tVbmlxdWVuZXNzKGQpJiZjLnB1c2goZCl9KTtyZXR1cm4gY31mdW5jdGlvbiBkaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZGlmZmVyZW5jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6dW5pcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLmZpbHRlcihjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpKX0KZnVuY3Rpb24gZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+ZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZihudWxsPT09Ynx8dm9pZCAwPT09YilyZXR1cm57fTtjb25zdCBjPXt9O2Zvcihjb25zdCBkIGluIGIpY1tkXT1iW2RdO2RlbGV0ZSBjW2FdO3JldHVybiBjfWZ1bmN0aW9uIGRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS9ifQpmdW5jdGlvbiBkcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Yi5zbGljZSgwPGE/YTowKX1mdW5jdGlvbiBkcm9wTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRyb3BMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPGE/Yi5zbGljZSgwLC1hKTpiLnNsaWNlKCl9CmZ1bmN0aW9uIGRyb3BMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxnKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7Y29uc3QgYz1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKGAncHJlZGljYXRlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYX1gKTtpZighYyYmInN0cmluZyIhPT10eXBlb2YgYil0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYn1gKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPWIubGVuZ3RoO2Zvcig7MDxmOylmLS0sZHx8ITEhPT1hKGJbZl0pP2QmJmUucHVzaChiW2ZdKToKKGQ9ITAsZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lLnJldmVyc2UoKTplLnJldmVyc2UoKS5qb2luKCIiKX1mdW5jdGlvbiBkcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYCR7YX0gaXMgbm90IGEgbGlzdGApO2NvbnN0IGI9W107YS5yZWR1Y2UoKGMsZCk9PntlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGQpfHxiLnB1c2goZCk7cmV0dXJuIGR9LHZvaWQgMCk7cmV0dXJuIGJ9CmZ1bmN0aW9uIGRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgJHtifSBpcyBub3QgYSBsaXN0YCk7Y29uc3QgYz1bXTtiLnJlZHVjZSgoZCxlKT0+e2lmKHZvaWQgMD09PWQpcmV0dXJuIGMucHVzaChlKSxlO2EoZCxlKXx8Yy5wdXNoKGUpO3JldHVybiBlfSx2b2lkIDApO3JldHVybiBjfQpmdW5jdGlvbiBkcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWQ/ZS5wdXNoKGJbZl0pOmEoYltmXSl8fChkfHwoZD0hMCksZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIGVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6KC4uLmMpPT4hKCFhKC4uLmMpJiYhYiguLi5jKSl9CmZ1bmN0aW9uIGVuZHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKCJzdHJpbmciPT09dHlwZW9mIGIpcmV0dXJuIGIuZW5kc1dpdGgoYSk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSlyZXR1cm4hMTtjb25zdCBjPWIubGVuZ3RoLWEubGVuZ3RoO2xldCBkPSEwO3JldHVybiBhLmZpbHRlcigoZSxmKT0+e2lmKCFkKXJldHVybiExOyhlPWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGUsYltmK2NdKSl8fChkPSExKTtyZXR1cm4gZX0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoYilyZXR1cm4gYlthXX1mdW5jdGlvbiBlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKX1jb25zdCBlcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGV2b2x2ZUFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygoYyxkKT0+IkZ1bmN0aW9uIj09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9hW2RdKGMpOmMsYiwhMCl9CmZ1bmN0aW9uIGV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChjLGQpPT57aWYoIk9iamVjdCI9PT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYykpe2NvbnN0IGU9dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pO3JldHVybiJGdW5jdGlvbiI9PT1lP2FbZF0oYyk6Ik9iamVjdCI9PT1lP2V2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0sYyk6Y31yZXR1cm4iRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pP2FbZF0oYyk6Y30sYil9CmZ1bmN0aW9uIGV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7Y29uc3QgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSksZD10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZCE9PWMpdGhyb3cgRXJyb3IoIml0ZXJhYmxlVHlwZSAhPT0gcnVsZXNUeXBlIik7aWYoIVsiT2JqZWN0IiwiQXJyYXkiXS5pbmNsdWRlcyhjKSl0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBhbmQgJ3J1bGVzJyBhcmUgZnJvbSB3cm9uZyB0eXBlICR7Y31gKTtyZXR1cm4iT2JqZWN0Ij09PWQ/ZXZvbHZlT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTpldm9sdmVBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsCmIpfWZ1bmN0aW9uIEYkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe3JldHVybiExfWZ1bmN0aW9uIGZpbHRlck9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7Y29uc3QgYz17fTtmb3IoY29uc3QgZCBpbiBiKWEoYltkXSxkLGIpJiYoY1tkXT1iW2RdKTtyZXR1cm4gY31mdW5jdGlvbiBmaWx0ZXJBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjPSExKXtsZXQgZD0wO2NvbnN0IGU9Yi5sZW5ndGgsZj1bXTtmb3IoO2Q8ZTspKGM/YShiW2RdLGQpOmEoYltkXSkpJiZmLnB1c2goYltkXSksZCsrO3JldHVybiBmfQpmdW5jdGlvbiBmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5maWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFiKXRocm93IEVycm9yKCJJbmNvcnJlY3QgaXRlcmFibGUgaW5wdXQiKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2ZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLCExKTpmaWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBmaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9MDtjb25zdCBkPWIubGVuZ3RoO2Zvcig7YzxkOyl7Y29uc3QgZT1iW2NdO2lmKGEoZSkpcmV0dXJuIGU7YysrfX1mdW5jdGlvbiBmaW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5maW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2NvbnN0IGM9Yi5sZW5ndGg7bGV0IGQ9LTE7Zm9yKDsrK2Q8YzspaWYoYShiW2RdKSlyZXR1cm4gZDtyZXR1cm4tMX0KZnVuY3Rpb24gZmluZExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5maW5kTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9Yi5sZW5ndGg7Zm9yKDswPD0tLWM7KWlmKGEoYltjXSkpcmV0dXJuIGJbY119ZnVuY3Rpb24gZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmZpbmRMYXN0SW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2xldCBjPWIubGVuZ3RoO2Zvcig7MDw9LS1jOylpZihhKGJbY10pKXJldHVybiBjO3JldHVybi0xfQpmdW5jdGlvbiBmbGF0dGVuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtiPXZvaWQgMD09PWI/W106Yjtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKylpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtjXSk/ZmxhdHRlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbY10sYik6Yi5wdXNoKGFbY10pO3JldHVybiBifQpmdW5jdGlvbiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PntpZigxPT09Yi5sZW5ndGgpcmV0dXJuIGM9PmEoYyxiWzBdKTtpZigyPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdKTtpZigzPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdLGJbMl0pO2lmKDQ9PT1iLmxlbmd0aClyZXR1cm4gYShiWzFdLGJbMF0sYlsyXSxiWzNdKTt0aHJvdyBFcnJvcigiUi5mbGlwIGRvZXNuJ3Qgd29yayB3aXRoIGFyaXR5ID4gNCIpO319ZnVuY3Rpb24gZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0KZnVuY3Rpb24gZm9yRWFjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKHZvaWQgMCE9PWIpe2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDspYShiW2NdKSxjKys7ZWxzZXtjPTA7ZD1rZXlzJDEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjb25zdCBlPWQubGVuZ3RoO2Zvcig7YzxlOyl7Y29uc3QgZj1kW2NdO2EoYltmXSxmLGIpO2MrK319cmV0dXJuIGJ9fQpmdW5jdGlvbiBmcm9tUGFpcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPXt9O2EuZm9yRWFjaCgoW2MsZF0pPT5iW2NdPWQpO3JldHVybiBifWZ1bmN0aW9uIGdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5ncm91cEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF0sZj1hKGUpO2NbZl18fChjW2ZdPVtdKTtjW2ZdLnB1c2goZSl9cmV0dXJuIGN9CmZ1bmN0aW9uIGdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJsaXN0LnJlZHVjZSBpcyBub3QgYSBmdW5jdGlvbiIpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoMT09PWIubGVuZ3RoKXJldHVybltjXTtjb25zdCBkPVtdO2xldCBlPVtdO2MucmVkdWNlKChmLGcsaCk9PntpZigwPT09aClyZXR1cm4gZztjb25zdCBrPWEoZixnKSxsPTA9PT1lLmxlbmd0aDtoPWg9PT1iLmxlbmd0aC0xO2lmKGspcmV0dXJuIGwmJmUucHVzaChmKSxlLnB1c2goZyksaCYmZC5wdXNoKGUpLGc7aWYobClyZXR1cm4gZC5wdXNoKFtmXSksaCYmZC5wdXNoKFtnXSksZztkLnB1c2goZSk7aCYmZC5wdXNoKFtnXSk7ZT1bXTtyZXR1cm4gZ30sCnZvaWQgMCk7cmV0dXJuIGR9ZnVuY3Rpb24gaGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+aGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiP2IuaGFzT3duUHJvcGVydHkoYSk6ITF9ZnVuY3Rpb24gY3JlYXRlUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYj0iLiIpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdChiKTphfQpmdW5jdGlvbiBwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1iLGQ9MCxlPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtkPGUubGVuZ3RoOyl7aWYobnVsbD09PWN8fHZvaWQgMD09PWN8fG51bGw9PT1jW2VbZF1dKXJldHVybjtjPWNbZVtkXV07ZCsrfXJldHVybiBjfX0KZnVuY3Rpb24gaGFzUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pmhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnZvaWQgMCE9PXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfWZ1bmN0aW9uIGhlYWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhP2FbMF18fCIiOmFbMF19ZnVuY3Rpb24gX29iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYT09PWI/MCE9PWF8fDEvYT09PTEvYjphIT09YSYmYiE9PWJ9Y29uc3Qgb2JqZWN0SXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1PYmplY3QuaXN8fF9vYmplY3RJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBpZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOm9iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBpZGVudGl0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBhfWZ1bmN0aW9uIGlmRWxzZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiguLi5kKT0+ITA9PT0oImJvb2xlYW4iPT09dHlwZW9mIGE/YTphKC4uLmQpKT9iKC4uLmQpOmMoLi4uZCl9CmNvbnN0IGlmRWxzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaWZFbHNlRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyksaW5jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+YSsxO2Z1bmN0aW9uIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1twYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKV09ZX1yZXR1cm4gY30KZnVuY3Rpb24gaW5kZXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1thKGUpXT1lfXJldHVybiBjfQpmdW5jdGlvbiBpbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOl9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBiYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7bGV0IGQ9LTEse2xlbmd0aDplfT1hO2M9Yz5lP2U6YzswPmMmJihjKz1lKTtlPWI+Yz8wOmMtYj4+PjA7Yj4+Pj0wO2ZvcihjPUFycmF5KGUpOysrZDxlOyljW2RdPWFbZCtiXTtyZXR1cm4gY30KZnVuY3Rpb24gaW5pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zbGljZSgwLC0xKTphLmxlbmd0aD9iYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLDAsLTEpOltdfWZ1bmN0aW9uIGludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+aW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGEpLGIpfQpmdW5jdGlvbiBpbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGY9PmludGVyc3BlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtsZXQgYz0tMTtjb25zdCBkPWIubGVuZ3RoLGU9W107Zm9yKDsrK2M8ZDspYz09PWQtMT9lLnB1c2goYltjXSk6ZS5wdXNoKGJbY10sYSk7cmV0dXJuIGV9ZnVuY3Rpb24gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bnVsbCE9YiYmYi5jb25zdHJ1Y3Rvcj09PWF8fGIgaW5zdGFuY2VvZiBhfQpmdW5jdGlvbiBpc0VtcHR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJVbmRlZmluZWQiLCJOYU4iLCJOdW1iZXIiLCJOdWxsIl0uaW5jbHVkZXMoYik/ITE6YT8iT2JqZWN0Ij09PWI/MD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aDoiQXJyYXkiPT09Yj8wPT09YS5sZW5ndGg6ITE6ITB9ZnVuY3Rpb24gaXNOaWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gdm9pZCAwPT09YXx8bnVsbD09PWF9CmZ1bmN0aW9uIGpvaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5qb2luJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiLmpvaW4oYSl9ZnVuY3Rpb24ganV4dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+YS5tYXAoYz0+YyguLi5iKSl9ZnVuY3Rpb24ga2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBPYmplY3Qua2V5cyhhKX1mdW5jdGlvbiBsYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hW2EubGVuZ3RoLTFdfHwiIjphW2EubGVuZ3RoLTFdfQpmdW5jdGlvbiBsYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pl9sYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBsZW5ndGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfHwic3RyaW5nIj09PXR5cGVvZiBhP2EubGVuZ3RoOk5hTn0KZnVuY3Rpb24gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gYyhhKGQpKS5tYXAoZT0+YihlLGQpKX19fWZ1bmN0aW9uIG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz0wPmE/Yi5sZW5ndGgrYTphO3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpP2IuY2hhckF0KGMpOmJbY119CmZ1bmN0aW9uIHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2M9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7cmV0dXJuLTE9PT1hP2MuZmlsbChiLGEpOmMuZmlsbChiLGEsYSsxKX1jb25zdCB1cGRhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBsZW5zSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLHVwZGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBsZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBsZW5zJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLGFzc29jUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX0KZnVuY3Rpb24gbGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBtYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm1hdGNoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPWIubWF0Y2goYSk7cmV0dXJuIG51bGw9PT1jP1tdOmN9CmZ1bmN0aW9uIG1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXRoTW9kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTohaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl8fCFpc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKXx8MT5iP05hTjooYSViK2IpJWJ9ZnVuY3Rpb24gbWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT5hKGIpP2M6Yn1jb25zdCBtYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gc3VtJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEucmVkdWNlKChiLGMpPT5iK2MsMCl9ZnVuY3Rpb24gbWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBzdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKS9hLmxlbmd0aH1mdW5jdGlvbiBtZWRpYW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXt2YXIgYj1hLmxlbmd0aDtpZigwPT09YilyZXR1cm4gTmFOO2NvbnN0IGM9Mi1iJTI7Yj0oYi1jKS8yO3JldHVybiBtZWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwwKS5zb3J0KChkLGUpPT5kPT09ZT8wOmQ8ZT8tMToxKS5zbGljZShiLGIrYykpfQpmdW5jdGlvbiBtZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6T2JqZWN0LmFzc2lnbih7fSxhfHx7fSxifHx7fSl9ZnVuY3Rpb24gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtsZXQgYj17fTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT57Yj1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKX0sYSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIG1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGQ9PnsiT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2RdKT8iT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9jW2RdPW1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtkXSxiW2RdKTpjW2RdPWJbZF06Y1tkXT1iW2RdfSk7cmV0dXJuIGN9CmZ1bmN0aW9uIG1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsYSl9ZnVuY3Rpb24gbWVyZ2VXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Y29uc3QgZD17fTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGU9PntkW2VdPXZvaWQgMD09PWNbZV0/YltlXTphKGJbZV0sY1tlXSl9KTtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGU9Pnt2b2lkIDA9PT1kW2VdJiYoZFtlXT12b2lkIDA9PT1iW2VdP2NbZV06YShiW2VdLGNbZV0pKX0pO3JldHVybiBkfQpjb25zdCBtZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1lcmdlV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIG1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YjxhP2I6YX1mdW5jdGlvbiBtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGMpPGEoYik/YzpifWNvbnN0IG1pbkJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBvd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXt2YXIgYz1PYmplY3Qua2V5cyhhKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGEpO2ImJihkPWQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZSkuZW51bWVyYWJsZX0pKTtjLnB1c2guYXBwbHkoYyxkKX1yZXR1cm4gY30KZnVuY3Rpb24gX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtmb3IodmFyIGI9MTtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKXt2YXIgYz1udWxsIT1hcmd1bWVudHNbYl0/YXJndW1lbnRzW2JdOnt9O2IlMj9vd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoT2JqZWN0KGMpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe19kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCxjW2RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGEsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYykpOm93bktleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhPYmplY3QoYykpLmZvckVhY2goZnVuY3Rpb24oZCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsCmQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjLGQpKX0pfXJldHVybiBhfWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtiIGluIGE/T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7dmFsdWU6YyxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmFbYl09YztyZXR1cm4gYX1mdW5jdGlvbiBpc0l0ZXJhYmxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSl8fCJPYmplY3QiPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfQpmdW5jdGlvbiBtb2RpZnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXNJdGVyYWJsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpJiZ2b2lkIDAhPT1jW2FdP2lzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT91cGRhdGVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYihjW2FdKSxjKTpfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thXTpiKGNbYV0pfSk6Y31jb25zdCBtb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZGlmeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7YT1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoMT09PWEubGVuZ3RoKXJldHVybiBfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thWzBdXTpiKGNbYVswXV0pfSk7aWYodm9pZCAwPT09cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYykpcmV0dXJuIGM7Yj1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwxKSxiLGNbYVswXV0pO3JldHVybiBiPT09Y1thWzBdXT9jOmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVswXSwKYixjKX1jb25zdCBtb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gbW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJWJ9CmZ1bmN0aW9uIG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZigwPmF8fDA+Yil0aHJvdyBFcnJvcigiUmFtYmRhLm1vdmUgZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSBpbmRleGVzIik7aWYoYT5jLmxlbmd0aC0xfHxiPmMubGVuZ3RoLTEpcmV0dXJuIGM7Y29uc3QgZD1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKTtkW2FdPWNbYl07ZFtiXT1jW2FdO3JldHVybiBkfWNvbnN0IG1vdmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gbXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tdWx0aXBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YSpifWZ1bmN0aW9uIG5lZ2F0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybi1hfWZ1bmN0aW9uIG5vbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKylpZihhKGJbY10pKXJldHVybiExO3JldHVybiEwfQpmdW5jdGlvbiBub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4hYX1mdW5jdGlvbiBvYmpPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9iak9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTp7W2FdOmJ9fWZ1bmN0aW9uIG9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuW2FdfQpmdW5jdGlvbiBvbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+b21pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe3ZhciBjPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLCIsIiksZD17fTtmb3IoY29uc3QgZSBpbiBiKWMuaW5jbHVkZXMoZSl8fChkW2VdPWJbZV0pO3JldHVybiBkfX0KZnVuY3Rpb24gb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxkKXtyZXR1cm4gMz09PWFyZ3VtZW50cy5sZW5ndGg/ZT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxlKToyPT09YXJndW1lbnRzLmxlbmd0aD8oZSxmKT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsZSxmKTphKGIoYyksYihkKSl9ZnVuY3Rpb24gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtsZXQgYztyZXR1cm4gZnVuY3Rpb24oKXthJiYoYz1hLmFwcGx5KGJ8fHRoaXMsYXJndW1lbnRzKSxhPW51bGwpO3JldHVybiBjfX0KZnVuY3Rpb24gb25jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2NvbnN0IGM9b25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtyZXR1cm4gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKX1yZXR1cm4gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphfHxifWNvbnN0IElkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+KHt4OmEsbWFwOmI9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihhKSl9KTsKZnVuY3Rpb24gb3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGQ9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihkKSkpKGMpLnh9Y29uc3Qgb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMob3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXJ0aWFsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPWEubGVuZ3RoO3JldHVybiguLi5kKT0+Yi5sZW5ndGgrZC5sZW5ndGg+PWM/YSguLi5iLC4uLmQpOnBhcnRpYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLC4uLlsuLi5iLC4uLmRdKX1mdW5jdGlvbiBwYXJ0aWFsT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYz0+YShtZXJnZURlZXBSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwYXJ0aXRpb25PYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2NvbnN0IGM9e30sZD17fTtPYmplY3QuZW50cmllcyhiKS5mb3JFYWNoKChbZSxmXSk9PnthKGYsZSk/Y1tlXT1mOmRbZV09Zn0pO3JldHVybltjLGRdfWZ1bmN0aW9uIHBhcnRpdGlvbkFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGM9ITEpe2NvbnN0IGQ9W10sZT1bXTtsZXQgZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOykoYz9hKGJbZl0sZik6YShiW2ZdKSk/ZC5wdXNoKGJbZl0pOmUucHVzaChiW2ZdKTtyZXR1cm5bZCxlXX0KZnVuY3Rpb24gcGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpOnBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil9CmZ1bmN0aW9uIHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKSxiKX1jb25zdCBwYXRoRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9Y29uc3QgcGF0aE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcGF0aHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS5tYXAoYz0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwaWNrJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGljayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWNbZV1pbiBiJiYoZFtjW2VdXT1iW2NbZV1dKSxlKys7cmV0dXJuIGR9fQpmdW5jdGlvbiBwaWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGlja0FsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWRbY1tlXV09Y1tlXWluIGI/YltjW2VdXTp2b2lkIDAsZSsrO3JldHVybiBkfX0KZnVuY3Rpb24gcGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5wbHVjayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz1bXTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkPT57dm9pZCAwIT09ZFthXSYmYy5wdXNoKGRbYV0pfSxiKTtyZXR1cm4gY31mdW5jdGlvbiBwcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cHJlcGVuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6InN0cmluZyI9PT10eXBlb2YgYj9bYV0uY29uY2F0KGIuc3BsaXQoIiIpKTpbYV0uY29uY2F0KGIpfQpjb25zdCBwcm9kdWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcywxKTtmdW5jdGlvbiBwcm9wRXFGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYz9lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKTohMX1jb25zdCBwcm9wRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwcm9wSXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGNbYl0pfWNvbnN0IHByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcElzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gcHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGM/ZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjW2JdKTphfWNvbnN0IHByb3BPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIHByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoInByb3BzVG9QaWNrIGlzIG5vdCBhIGxpc3QiKTtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT5iW2NdLGEpfWZ1bmN0aW9uIHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9CmNvbnN0IHByb3BTYXRpc2ZpZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYoTnVtYmVyLmlzTmFOKE51bWJlcihhKSl8fE51bWJlci5pc05hTihOdW1iZXIoYikpKXRocm93IG5ldyBUeXBlRXJyb3IoIkJvdGggYXJndW1lbnRzIHRvIHJhbmdlIG11c3QgYmUgbnVtYmVycyIpO2lmKGI8YSlyZXR1cm5bXTtjb25zdCBjPWItYSxkPUFycmF5KGMpO2ZvcihsZXQgZT0wO2U8YztlKyspZFtlXT1hK2U7cmV0dXJuIGR9CmZ1bmN0aW9uIHJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+IWEoYyksYil9ZnVuY3Rpb24gcmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpBcnJheShiKS5maWxsKGEpfWZ1bmN0aW9uIHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5yZXBsYWNlKGEsYil9CmNvbnN0IHJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTtmdW5jdGlvbiByZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6YS5zbGljZSgpLnJldmVyc2UoKX1mdW5jdGlvbiBzZXRGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYWx3YXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYiksYyl9CmNvbnN0IHNldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoc2V0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gc2xpY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5zbGljZShhLGIpfWNvbnN0IHNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhzbGljZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBzb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c29ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikuc29ydChhKX1mdW5jdGlvbiBzb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLnNvcnQoKGMsZCk9PntjPWEoYyk7ZD1hKGQpO3JldHVybiBjPT09ZD8wOmM8ZD8tMToxfSl9CmZ1bmN0aW9uIHNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c3BsaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmIuc3BsaXQoYSl9ZnVuY3Rpb24gbWF5YmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Yj1hJiYiRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2IoKTpiO2M9YXx8IkZ1bmN0aW9uIiE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT9jOmMoKTtyZXR1cm4gYT9iOmN9CmZ1bmN0aW9uIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT50YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPmE/Yi5zbGljZSgpOiJzdHJpbmciPT09dHlwZW9mIGI/Yi5zbGljZSgwLGEpOmJhc2VTbGljZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsMCxhKX0KZnVuY3Rpb24gc3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PnNwbGl0QXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdzbGljZScgb2YgJHtifWApO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikmJiJzdHJpbmciIT09dHlwZW9mIGIpcmV0dXJuW1tdLFtdXTtjb25zdCBjPW1heWJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoMD5hLDA+Yi5sZW5ndGgrYT8wOmIubGVuZ3RoK2EsYSk7cmV0dXJuW3Rha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLApiKV19ZnVuY3Rpb24gc3BsaXRFdmVyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKDE+YSl0aHJvdyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gc3BsaXRFdmVyeSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2NvbnN0IGM9W107bGV0IGQ9MDtmb3IoO2Q8Yi5sZW5ndGg7KWMucHVzaChiLnNsaWNlKGQsZCs9YSkpO3JldHVybiBjfQpmdW5jdGlvbiBzcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5zcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdsZW5ndGgnIG9mICR7Yn1gKTtjb25zdCBjPVtdLGQ9W107bGV0IGU9ITEsZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOyllP2QucHVzaChiW2ZdKTphKGJbZl0pPyhkLnB1c2goYltmXSksZT0hMCk6Yy5wdXNoKGJbZl0pO3JldHVybltjLGRdfQpmdW5jdGlvbiBzdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+c3RhcnRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoInN0cmluZyI9PT10eXBlb2YgYilyZXR1cm4gYi5zdGFydHNXaXRoKGEpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpcmV0dXJuITE7bGV0IGM9ITA7cmV0dXJuIGEuZmlsdGVyKChkLGUpPT57aWYoIWMpcmV0dXJuITE7KGQ9ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxiW2VdKSl8fChjPSExKTtyZXR1cm4gZH0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBzdWJ0cmFjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphLWJ9CmZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGEpLGZpbHRlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9PiFpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYSksYikpfQpmdW5jdGlvbiBUJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKXtyZXR1cm4hMH1mdW5jdGlvbiB0YWlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygxLGEpfQpmdW5jdGlvbiB0YWtlTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPWIubGVuZ3RoO2lmKDA+YSlyZXR1cm4gYi5zbGljZSgpO2xldCBkPWE+Yz9jOmE7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYj9iLnNsaWNlKGMtZCk6YmFzZVNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjLWQsYyl9CmZ1bmN0aW9uIHRha2VMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBmPT50YWtlTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7bGV0IGM9ITE7Y29uc3QgZD1bXTtsZXQgZT1iLmxlbmd0aDtmb3IoOyFjfHwwPT09ZTspZS0tLCExPT09YShiW2VdKT9jPSEwOmN8fGQucHVzaChiW2VdKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2QucmV2ZXJzZSgpOmQucmV2ZXJzZSgpLmpvaW4oIiIpfQpmdW5jdGlvbiB0YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT50YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMDtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWEoYltmXSk/ZCYmZS5wdXNoKGJbZl0pOmQmJihkPSExKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIHRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7YShiKTtyZXR1cm4gYn1mdW5jdGlvbiB0ZXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoInN0cmluZyI9PT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGBcdTIwMTh0ZXN0XHUyMDE5IHJlcXVpcmVzIGEgdmFsdWUgb2YgdHlwZSBSZWdFeHAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50OyByZWNlaXZlZCAiJHthfSJgKTtyZXR1cm4tMSE9PWIuc2VhcmNoKGEpfQpmdW5jdGlvbiB0aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRpbWVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZighaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYil8fDA+Yil0aHJvdyBuZXcgUmFuZ2VFcnJvcigibiBtdXN0IGJlIGFuIGludGVnZXIiKTtyZXR1cm4gbWFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxyYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKDAsYikpfWZ1bmN0aW9uIHRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpfQpmdW5jdGlvbiB0b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGEpfWZ1bmN0aW9uIHRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9TdHJpbmcoKX1mdW5jdGlvbiB0b1VwcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9VcHBlckNhc2UoKX1mdW5jdGlvbiB0cmFuc3Bvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS5yZWR1Y2UoKGIsYyk9PntjLmZvckVhY2goKGQsZSk9PmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2VdKT9iW2VdLnB1c2goZCk6Yi5wdXNoKFtkXSkpO3JldHVybiBifSxbXSl9CmZ1bmN0aW9uIHRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50cmltKCl9Y29uc3QgaXNGdW5jdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PlsiUHJvbWlzZSIsIkZ1bmN0aW9uIl0uaW5jbHVkZXModHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKTsKZnVuY3Rpb24gdHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKCFpc0Z1bmN0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYFIudHJ5Q2F0Y2ggfCBmbiAnJHthfSdgKTtjb25zdCBjPWlzRnVuY3Rpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtyZXR1cm4oLi4uZCk9Pnt0cnl7cmV0dXJuIGEoLi4uZCl9Y2F0Y2goZSl7cmV0dXJuIGM/YihlLC4uLmQpOmJ9fX1mdW5jdGlvbiB1bmFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGZ1bmN0aW9uKC4uLmIpe3JldHVybiBhLmNhbGwodGhpcyxiKX19CmZ1bmN0aW9uIHVuaW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7Yi5mb3JFYWNoKGQ9PntpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYSl8fGMucHVzaChkKX0pO3JldHVybiBjfQpmdW5jdGlvbiB1bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT51bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9bmV3IFNldDtyZXR1cm4gYi5maWx0ZXIoZD0+e2lmKGMuaGFzKGEoZCkpKXJldHVybiExO2MuYWRkKGEoZCkpO3JldHVybiEwfSl9ZnVuY3Rpb24gaW5jbHVkZXNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2xldCBkPSExLGU9LTE7Zm9yKDsrK2U8Yy5sZW5ndGgmJiFkOylhKGIsY1tlXSkmJihkPSEwKTtyZXR1cm4gZH0KZnVuY3Rpb24gdW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT51bmlxV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9LTE7Y29uc3QgZD1bXTtmb3IoOysrYzxiLmxlbmd0aDspe2NvbnN0IGU9YltjXTtpbmNsdWRlc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUsZCl8fGQucHVzaChlKX1yZXR1cm4gZH1mdW5jdGlvbiB1bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmM9PmEoYyk/YzpiKGMpfQpmdW5jdGlvbiB1bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2FdKT9tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9Pl9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyh7fSxiKSx7fSx7W2FdOmN9KSxiW2FdKTpbYl19CmZ1bmN0aW9uIHZhbHVlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJPYmplY3QiIT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpP1tdOk9iamVjdC52YWx1ZXMoYSl9Y29uc3QgQ29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT4oe3g6YSxtYXA6Yj0+Q29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0pO2Z1bmN0aW9uIHZpZXckJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT52aWV3JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphKENvbnN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpKGIpLnh9CmZ1bmN0aW9uIHdoZW5GbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT9iKGMpOmN9Y29uc3Qgd2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMod2hlbkZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIHdoZXJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZih2b2lkIDA9PT1iKXJldHVybiBkPT53aGVyZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9ITA7Zm9yKGNvbnN0IGQgaW4gYSl7aWYoIWMpY29udGludWU7Y29uc3QgZT1hW2RdKGJbZF0pO2MmJiExPT09ZSYmKGM9ITEpfXJldHVybiBjfQpmdW5jdGlvbiB3aGVyZUFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYodm9pZCAwPT09YilyZXR1cm4gYz0+d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2Zvcihjb25zdCBjIGluIGEpaWYoYVtjXShiW2NdKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gd2hlcmVFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PndoZXJlRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9PmVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYltlXSksYSk7cmV0dXJuIE9iamVjdC5rZXlzKGMpLmxlbmd0aD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aH0KZnVuY3Rpb24gd2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/Yz0+d2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGMsZCk9Pi0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxhKT9jOmMuY29uY2F0KGQpLFtdLGIpfWZ1bmN0aW9uIHhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ISFhJiYhYnx8ISFiJiYhYX0KZnVuY3Rpb24gemlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPVtdLGQ9TWF0aC5taW4oYS5sZW5ndGgsYi5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8ZDtlKyspY1tlXT1bYVtlXSxiW2VdXTtyZXR1cm4gY31mdW5jdGlvbiB6aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT56aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aCxhKS5yZWR1Y2UoKGMsZCxlKT0+e2NbZF09YltlXTtyZXR1cm4gY30se30pfQpmdW5jdGlvbiB6aXBXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aD5jLmxlbmd0aD9jLmxlbmd0aDpiLmxlbmd0aCxiKS5tYXAoKGQsZSk9PmEoZCxjW2VdKSl9Y29uc3QgemlwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoemlwV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9e307bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLkY9RiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuVD1UJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLl9fZmluZEhpZ2hlc3RBcml0eT1fX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuX2FyaXR5PV9hcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5faW5kZXhPZj1faW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fbGFzdEluZGV4T2Y9X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fcGlwZT1fcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hZGQ9YWRkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFkanVzdD1hZGp1c3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYWxsPWFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbGxQYXNzPWFsbFBhc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFsd2F5cz1hbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYW5kPWFuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbnk9YW55JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFueVBhc3M9YW55UGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBlbmQ9YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseT1hcHBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseVNwZWM9YXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jPWFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jUGF0aD1hc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYmluZD1iaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ib3RoPWJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2hhaW49Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xhbXA9Y2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xvbmU9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29tcGxlbWVudD1jb21wbGVtZW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb21wb3NlPWNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29uY2F0PWNvbmNhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb25kPWNvbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29udmVyZ2U9Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY291bnQ9Y291bnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmNvdW50Qnk9Y291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeT1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeU49Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRlYz1kZWMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGVmYXVsdFRvPWRlZmF1bHRUbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGlmZmVyZW5jZT1kaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRpc3NvYz1kaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGl2aWRlPWRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wPWRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZHJvcExhc3Q9ZHJvcExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BMYXN0V2hpbGU9ZHJvcExhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0cz1kcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0c1dpdGg9ZHJvcFJlcGVhdHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BXaGlsZT1kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVpdGhlcj1laXRoZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZW5kc1dpdGg9ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXFQcm9wcz1lcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVxdWFscz1lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlPWV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlQXJyYXk9ZXZvbHZlQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlT2JqZWN0PWV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maWx0ZXI9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlckFycmF5PWZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlck9iamVjdD1maWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmQ9ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maW5kSW5kZXg9ZmluZEluZGV4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0PWZpbmRMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0SW5kZXg9ZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mbGF0dGVuPWZsYXR0ZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZsaXA9ZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mb3JFYWNoPWZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZnJvbVBhaXJzPWZyb21QYWlycyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ncm91cEJ5PWdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZ3JvdXBXaXRoPWdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGFzPWhhcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5oYXNQYXRoPWhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGVhZD1oZWFkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlkZW50aWNhbD1pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaWRlbnRpdHk9aWRlbnRpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlmRWxzZT1pZkVsc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5jPWluYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmNsdWRlcz1pbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmRleEJ5PWluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5kZXhPZj1pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbml0PWluaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW50ZXJzZWN0aW9uPWludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbnRlcnNwZXJzZT1pbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pcz1pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pc0VtcHR5PWlzRW1wdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlzTmlsPWlzTmlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmpvaW49am9pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5qdXh0PWp1eHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMua2V5cz1rZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmxhc3Q9bGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGFzdEluZGV4T2Y9bGFzdEluZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuZ3RoPWxlbmd0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zPWxlbnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc0luZGV4PWxlbnNJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zUGF0aD1sZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc1Byb3A9bGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWFwPW1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBBcnJheT1tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmpJbmRleGVkPW1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmplY3Q9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRjaD1tYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRoTW9kPW1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWF4PW1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeT1tYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeUZuPW1heEJ5Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lYW49bWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tZWRpYW49bWVkaWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlPW1lcmdlUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VBbGw9bWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VEZWVwUmlnaHQ9bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlTGVmdD1tZXJnZUxlZnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VSaWdodD1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlV2l0aD1tZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluPW1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5taW5CeT1taW5CeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluQnlGbj1taW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeT1tb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kaWZ5UGF0aD1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeVBhdGhGbj1tb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kdWxvPW1vZHVsbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW92ZT1tb3ZlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm11bHRpcGx5PW11bHRpcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5lZ2F0ZT1uZWdhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubm9uZT1ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5vdD1ub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm50aD1udGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2JqT2Y9b2JqT2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2Y9b2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub21pdD1vbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm9uPW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5vbmNlPW9uY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3I9b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3Zlcj1vdmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpYWw9cGFydGlhbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXJ0aWFsT2JqZWN0PXBhcnRpYWxPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpdGlvbj1wYXJ0aXRpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uQXJyYXk9cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uT2JqZWN0PXBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRoPXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aEVxPXBhdGhFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aE9yPXBhdGhPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRocz1wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5waWNrPXBpY2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGlja0FsbD1waWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBpcGU9cGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGx1Y2s9cGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJlcGVuZD1wcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb2R1Y3Q9cHJvZHVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wPXByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcEVxPXByb3BFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcElzPXByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wT3I9cHJvcE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb3BTYXRpc2ZpZXM9cHJvcFNhdGlzZmllcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wcz1wcm9wcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yYW5nZT1yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVkdWNlPXJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VGbj1yZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VTdG9wcGVyPXJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVqZWN0PXJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBlYXQ9cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBsYWNlPXJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmV2ZXJzZT1yZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNldD1zZXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc2xpY2U9c2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc29ydD1zb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zb3J0Qnk9c29ydEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0PXNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0QXQ9c3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zcGxpdEV2ZXJ5PXNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3BsaXRXaGVuPXNwbGl0V2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3RhcnRzV2l0aD1zdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1YnRyYWN0PXN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1bT1zdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3ltbWV0cmljRGlmZmVyZW5jZT1zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhaWw9dGFpbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudGFrZT10YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0PXRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0V2hpbGU9dGFrZUxhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50YWtlV2hpbGU9dGFrZVdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhcD10YXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRlc3Q9dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50aW1lcz10aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b0xvd2VyPXRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudG9QYWlycz10b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRvU3RyaW5nPXRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b1VwcGVyPXRvVXBwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJhbnNwb3NlPXRyYW5zcG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50cmltPXRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJ5Q2F0Y2g9dHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHlwZT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51bmFwcGx5PXVuYXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pb249dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcT11bmlxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVuaXFCeT11bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcVdpdGg9dW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVubGVzcz11bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW53aW5kPXVud2luZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51cGRhdGU9dXBkYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVwZGF0ZUZuPXVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZhbHVlcz12YWx1ZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZpZXc9dmlldyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aGVuPXdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmU9d2hlcmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVBbnk9d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVFcT13aGVyZUVxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aXRob3V0PXdpdGhvdXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMueG9yPXhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy56aXA9emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnppcE9iaj16aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuemlwV2l0aD16aXBXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Y29uc3QgY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT57YS5leHBvcnRzLmNzb3VuZFNldE1pZGlDYWxsYmFja3MoYil9LGNzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMpPT57Y29uc3Qge2J1ZmZlcjpkfT1hLndhc2kubWVtb3J5LGU9YS5leHBvcnRzLmNzb3VuZEdldE1JRElEZXZMaXN0KGIsdm9pZCAwLGM/MTowKTtpZigwPT09ZSlyZXR1cm5bXTtjb25zdCBmPXNpemVvZlN0cnVjdCQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXMoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzKSxnPWEuZXhwb3J0cy5hbGxvY0NzTWlkaURldmljZVN0cnVjdChlKTthLmV4cG9ydHMuY3NvdW5kR2V0TUlESURldkxpc3QoYixnLGM/MTowKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KGQsZyxmKmUpO2I9cmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygwLAplKS5tYXAoaz0+c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGguc3ViYXJyYXkoaypmLGYpKSk7YS5leHBvcnRzLmZyZWVDc01pZGlEZXZpY2VTdHJ1Y3QoZyk7cmV0dXJuIGJ9O2Nzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLnRvU3RyaW5nPSgpPT4iZ2V0TUlESURldkxpc3QgPSBhc3luYyAoaXNPdXRwdXQpID0+IE9iamVjdDsiOwpjb25zdCBjc291bmRHZXRSdE1pZGlOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldFJ0TWlkaU5hbWUoYik7Yz1uZXcgVWludDhBcnJheShjLGIsMTI4KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS50b1N0cmluZz0oKT0+ImdldFJ0TWlkaU5hbWUgPSBhc3luYyAoKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldE1pZGlPdXRGaWxlTmFtZShiKTtjPW5ldyBVaW50OEFycmF5KGMsYiwxMjgpO2ImJjA8Yi5sZW5ndGgmJmZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7cmV0dXJuIHRyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGMpKXx8IiJ9LF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT5hLmV4cG9ydHMuaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQoYiksY3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMsZCxlKT0+e2EuZXhwb3J0cy5wdXNoTWlkaU1lc3NhZ2UoYiwKYyxkLGUpfTtjc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkudG9TdHJpbmc9KCk9PiJtaWRpTWVzc2FnZSA9IGFzeW5jIChzdGF0dXMsIGRhdGExLCBkYXRhMikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk9e307bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5faXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQ9X2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpO21vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkuY3NvdW5kR2V0TUlESURldkxpc3Q9Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRHZXRNaWRpT3V0RmlsZU5hbWU9Y3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpOwptb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZEdldFJ0TWlkaU5hbWU9Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaTttb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZFB1c2hNaWRpTWVzc2FnZT1jc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRTZXRNaWRpQ2FsbGJhY2tzPWNzb3VuZFNldE1pZGlDYWxsYmFja3MkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7Y29uc3QgY3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJpbnB1dE1lc3NhZ2UgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlQXN5bmMoYixjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBifTtjc291bmRJbnB1dE1lc3NhZ2VBc3luYyQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLnRvU3RyaW5nPSgpPT4iaW5wdXRNZXNzYWdlQXN5bmMgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0Q29udHJvbENoYW5uZWxXYXNpKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+ImdldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2EuZXhwb3J0cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbChiLGMsZCk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKX07Y3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lLCB2YWx1ZSkgPT4gdm9pZDsiOwpjb25zdCBjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0U3RyaW5nQ2hhbm5lbFdhc2koYixjKTtjb25zdCBkPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGIpO3JldHVybiBkfTtjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJnZXRTdHJpbmdDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kU2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzPWE9PihiLGMsZCk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZD1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGQpO2EuZXhwb3J0cy5jc291bmRTZXRTdHJpbmdDaGFubmVsKGIsYyxkKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsZCl9O2Nzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldFN0cmluZ0NoYW5uZWwgPSBhc3luYyAoY2hhbm5lbE5hbWUsIHZhbHVlKSA9PiB2b2lkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldENvbnRyb2xDaGFubmVsPWNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldFN0cmluZ0NoYW5uZWw9Y3NvdW5kR2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRJbnB1dE1lc3NhZ2U9Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZElucHV0TWVzc2FnZUFzeW5jPWNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7Cm1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbD1jc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRTdHJpbmdDaGFubmVsPWNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cztjb25zdCBjc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz1hPT5iPT57dmFyIHtidWZmZXI6Y309YS53YXNpLm1lbW9yeTtiPWEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0T3V0cHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXROYW1lID0gYXN5bmMgKCkgPT4gU3RyaW5nOyI7CmNvbnN0IGNzb3VuZEdldElucHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW89YT0+Yj0+e3ZhciB7YnVmZmVyOmN9PWEud2FzaS5tZW1vcnk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0SW5wdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby50b1N0cmluZz0oKT0+ImdldElucHV0TmFtZSA9IGFzeW5jIChjc291bmQpID0+IFN0cmluZzsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz17fTttb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby5jc291bmRHZXRJbnB1dE5hbWU9Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbzsKbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8uY3NvdW5kR2V0T3V0cHV0TmFtZT1jc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbztjb25zdCBjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYT1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2Q9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtiPWEuZXhwb3J0cy5jc291bmRBcHBlbmRFbnYoYixjLGQpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtyZXR1cm4gYn07Y3NvdW5kQXBwZW5kRW52JCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEudG9TdHJpbmc9KCk9PiJhcHBlbmRFbnYgPSBhc3luYyAoY3NvdW5kLCB2YXJpYWJsZSwgdmFsdWUpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTaG91bGREYWVtb25pemUoYik7CnZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmE9e307bW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhLmNzb3VuZEFwcGVuZEVudj1jc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYTttb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEuY3NvdW5kU2hvdWxkRGFlbW9uaXplPWNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhO2NvbnN0IGNzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZElzU2NvcmVQZW5kaW5nKGIpO2Nzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJpc1Njb3JlUGVuZGluZyA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kU2V0U2NvcmVQZW5kaW5nKGIsYyk7Y3NvdW5kU2V0U2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJzZXRTY29yZVBlbmRpbmcgPSBhc3luYyAocGVuZGluZykgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFJlYWRTY29yZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4icmVhZFNjb3JlID0gYXN5bmMgKHNjb3JlKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRTY29yZVRpbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2NvcmVUaW1lKGIpO2Nzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4iZ2V0U2NvcmVUaW1lID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMoYik7Y3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJnZXRTY29yZU9mZnNldFNlY29uZHMgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyhiLGMpO2Nzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4ic2V0U2NvcmVPZmZzZXRTZWNvbmRzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFJld2luZFNjb3JlKGIpO2Nzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJyZXdpbmRTY29yZSA9IGFzeW5jICgpID0+IHVuZGVmaW5lZDsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9e307bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcz1jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kR2V0U2NvcmVUaW1lPWNzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nOwptb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kSXNTY29yZVBlbmRpbmc9Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kUmVhZFNjb3JlPWNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRSZXdpbmRTY29yZT1jc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRTZXRTY29yZU9mZnNldFNlY29uZHM9Y3NvdW5kU2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc7bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZFNldFNjb3JlUGVuZGluZz1jc291bmRTZXRTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZztjb25zdCBjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVMZW5ndGgoYixjKTtjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVMZW5ndGggPSBhc3luYyAodGFibGVOdW0pID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+YS5leHBvcnRzLmNzb3VuZFRhYmxlR2V0KGIsYyxkKTtjc291bmRUYWJsZUdldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVHZXQgPSBhc3luYyAodGFibGVOdW0sIHRhYmxlSW5kZXgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkLGUpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVTZXQoYixjLGQsZSk7CmNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJ0YWJsZVNldCA9IGFzeW5jICh0YWJsZU51bSwgdGFibGVJbmRleCwgdmFsdWUpID0+IHVuZGVmaW5lZDsiO2NvbnN0IGNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+e2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jRmxvYXRBcnJheShkLmxlbmd0aCk7KG5ldyBGbG9hdDY0QXJyYXkoYS53YXNpLm1lbW9yeS5idWZmZXIsZSxkLmxlbmd0aCkpLnNldChkKTthLmV4cG9ydHMuY3NvdW5kVGFibGVDb3B5SW4oYixjLGUpO2EuZXhwb3J0cy5mcmVlRmxvYXRBcnJheU1lbShlKX07Y3NvdW5kVGFibGVDb3B5SW4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS50b1N0cmluZz0oKT0+InRhYmxlQ29weUluID0gYXN5bmMgKHRhYmxlTnVtLCBmbG9hdDY0QXJyYXkpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+e3ZhciBkPWEuZXhwb3J0cy5jc291bmRUYWJsZUxlbmd0aChiLGMpO2lmKDA8ZCl7Y29uc3QgZT1hLmV4cG9ydHMuYWxsb2NGbG9hdEFycmF5KGQpO2EuZXhwb3J0cy5jc291bmRUYWJsZUNvcHlPdXQoYixjLGUpOyh7YnVmZmVyOmJ9PWEud2FzaS5tZW1vcnkpO2Q9bmV3IEZsb2F0NjRBcnJheShiLGUsZCk7YS5leHBvcnRzLmZyZWVGbG9hdEFycmF5TWVtKGUpO3JldHVybiBGbG9hdDY0QXJyYXkuZnJvbShkKX19O2Nzb3VuZFRhYmxlQ29weU91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVDb3B5T3V0ID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7Y29uc3QgY3NvdW5kR2V0VGFibGUkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKY3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9Y3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc7Y29uc3QgY3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyk9Pntjb25zdCBkPWEuZXhwb3J0cy5hbGxvY0Zsb2F0QXJyYXkoMTAyNCk7YS5leHBvcnRzLmNzb3VuZEdldFRhYmxlQXJncyhiLGQsYyk7KHtidWZmZXI6Yn09YS53YXNpLm1lbW9yeSk7Yj1uZXcgRmxvYXQ2NEFycmF5KGIsZCwxMDI0KTthLmV4cG9ydHMuZnJlZUZsb2F0QXJyYXlNZW0oZCk7cmV0dXJuIGJ9O2Nzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0VGFibGVBcmdzID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7CmNvbnN0IGNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJpc05hbWVkR0VOID0gYXN5bmMgKHRhYmxlTnVtKSA9PiBudW1iZXI7Ijtjb25zdCBjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT57dmFyIGQ9YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtpZigwPGQpe2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jU3RyaW5nTWVtKGQpO2EuZXhwb3J0cy5jc291bmRHZXROYW1lZEdFTihiLGUsYyxkKTsoe2J1ZmZlcjpifT1hLndhc2kubWVtb3J5KTtkPW5ldyBVaW50OEFycmF5KGIsZSxkKTtyZXR1cm4gdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhkKX19Owpjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0TmFtZWRHRU4gPSBhc3luYyAodGFibGVOdW0pID0+ID9zdHJpbmc7Ijt2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPXt9O21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXROYW1lZEdFTj1jc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXRUYWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kR2V0VGFibGVBcmdzPWNzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRJc05hbWVkR0VOPWNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weUluPWNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU7bW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weU91dD1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVHZXQ9Y3NvdW5kVGFibGVHZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVMZW5ndGg9Y3NvdW5kVGFibGVMZW5ndGgkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVTZXQ9Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTtmdW5jdGlvbiB3cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyxkKT0+e2I9InN0cmluZyI9PT10eXBlb2YgZD9lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2RlKGQpOmQ7YS53YXNpLndyaXRlRmlsZShjLGIpfX13cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCwgZGF0YSkgPT4gdm9pZCI7ZnVuY3Rpb24gYXBwZW5kRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjLGQpPT57Yj0ic3RyaW5nIj09PXR5cGVvZiBkP2VuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoZCk6ZDthLndhc2kuYXBwZW5kRmlsZShjLGIpfX1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgsIGRhdGEpID0+IHZvaWQiOwpmdW5jdGlvbiByZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLnJlYWRGaWxlKGMpfXJlYWRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+ID9VaW50OEFycmF5IjtmdW5jdGlvbiB1bmxpbmskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS51bmxpbmsoYyl9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO2Z1bmN0aW9uIHJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS5yZWFkZGlyKGMpfXJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCkgPT4gc3RyaW5nW10iOwpmdW5jdGlvbiBta2RpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLm1rZGlyKGMpfW1rZGlyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzPXt9O21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMuYXBwZW5kRmlsZT1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMubWtkaXI9bWtkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy5yZWFkRmlsZT1yZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnJlYWRkaXI9cmVhZGRpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy51bmxpbms9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMud3JpdGVGaWxlPXdyaXRlRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcztjb25zdCBhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kPXtjc291bmRDcmVhdGU6Y3NvdW5kQ3JlYXRlJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmREZXN0cm95OmNzb3VuZERlc3Ryb3kkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZEdldEFQSVZlcnNpb246Y3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24sY3NvdW5kR2V0VmVyc2lvbjpjc291bmRHZXRWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmRJbml0aWFsaXplOmNzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZFBhcnNlT3JjOmNzb3VuZFBhcnNlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kQ29tcGlsZVRyZWU6Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRDb21waWxlT3JjOmNzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSwKY3NvdW5kRXZhbENvZGU6Y3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRTdGFydDpjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2Q6Y3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2RUZXh0OmNzb3VuZENvbXBpbGVDc2RUZXh0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybTpjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybUtzbXBzOmNzb3VuZFBlcmZvcm1Lc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFBlcmZvcm1CdWZmZXI6Y3NvdW5kUGVyZm9ybUJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFN0b3A6Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLApjc291bmRDbGVhbnVwOmNzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRSZXNldDpjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZEdldFNyOmNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRLcjpjc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0S3NtcHM6Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sczpjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sc0lucHV0OmNzb3VuZEdldE5jaG5sc0lucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXQwZEJGUzpjc291bmRHZXQwZEJGUyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0QTQ6Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLApjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXM6Y3NvdW5kR2V0Q3VycmVudFRpbWVTYW1wbGVzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRTaXplT2ZNWUZMVDpjc291bmRHZXRTaXplT2ZNWUZMVCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0T3B0aW9uOmNzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0UGFyYW1zOmNzb3VuZFNldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0UGFyYW1zOmNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0RGVidWc6Y3NvdW5kR2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZFNldERlYnVnOmNzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRJbnB1dEJ1ZmZlclNpemU6Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbywKY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZTpjc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRJbnB1dEJ1ZmZlcjpjc291bmRHZXRJbnB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0T3V0cHV0QnVmZmVyOmNzb3VuZEdldE91dHB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0U3Bpbjpjc291bmRHZXRTcGluJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRTcG91dDpjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0TUlESURldkxpc3Q6Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kU2V0TWlkaUNhbGxiYWNrczpjc291bmRTZXRNaWRpQ2FsbGJhY2tzJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLGNzb3VuZEdldFJ0TWlkaU5hbWU6Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSwKY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lOmNzb3VuZEdldE1pZGlPdXRGaWxlTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSxjc291bmRQdXNoTWlkaU1lc3NhZ2U6Y3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dDpfaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kSW5wdXRNZXNzYWdlOmNzb3VuZElucHV0TWVzc2FnZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLGNzb3VuZElucHV0TWVzc2FnZUFzeW5jOmNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMsY3NvdW5kR2V0Q29udHJvbENoYW5uZWw6Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRDb250cm9sQ2hhbm5lbDpjc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLApjc291bmRHZXRTdHJpbmdDaGFubmVsOmNzb3VuZEdldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRTdHJpbmdDaGFubmVsOmNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRHZXRJbnB1dE5hbWU6Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbyxjc291bmRHZXRPdXRwdXROYW1lOmNzb3VuZEdldE91dHB1dE5hbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRnZW5lcmFsX2lvLGNzb3VuZEFwcGVuZEVudjpjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYSxjc291bmRTaG91bGREYWVtb25pemU6Y3NvdW5kU2hvdWxkRGFlbW9uaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEsY3NvdW5kSXNTY29yZVBlbmRpbmc6Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZywKY3NvdW5kU2V0U2NvcmVQZW5kaW5nOmNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFJlYWRTY29yZTpjc291bmRSZWFkU2NvcmUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRHZXRTY29yZVRpbWU6Y3NvdW5kR2V0U2NvcmVUaW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcsY3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzOmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kczpjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRSZXdpbmRTY29yZTpjc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFRhYmxlTGVuZ3RoOmNzb3VuZFRhYmxlTGVuZ3RoJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsCmNzb3VuZFRhYmxlR2V0OmNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kVGFibGVTZXQ6Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRUYWJsZUNvcHlJbjpjc291bmRUYWJsZUNvcHlJbiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLGNzb3VuZFRhYmxlQ29weU91dDpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZTpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZUFyZ3M6Y3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kSXNOYW1lZEdFTjpjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kR2V0TmFtZWRHRU46Y3NvdW5kR2V0TmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxmczptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzfTsKdmFyICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZD1mdW5jdGlvbihhKXtyZXR1cm4gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhbcmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGIsYyk9PmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyxhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kW2NdKGEpLGIpLHt9LGtleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiZnMiKShhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kKSkpLHJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChiLGMpPT5hc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsCmFwaSQkbW9kdWxlJHNyYyRsaWJjc291bmQuZnNbY10oYSksYikse30sa2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMpKV0pfSxtb2R1bGUkc3JjJGxpYmNzb3VuZD17fTttb2R1bGUkc3JjJGxpYmNzb3VuZC5hcGk9YXBpJCRtb2R1bGUkc3JjJGxpYmNzb3VuZDttb2R1bGUkc3JjJGxpYmNzb3VuZC5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZDtjb25zdCBkbGluaXQkJG1vZHVsZSRzcmMkZGxpbml0PShhLGIsYyxkKT0+e2lmKGIuZXhwb3J0cy5jc291bmRNb2R1bGVJbml0KXt2YXIgZT1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LDApLGc9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7Y29uc3QgaD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKTtsZXQgaz1jLmxlbmd0aDsiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRNb2R1bGVDcmVhdGUmJihjLmdyb3coMSksZS52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZSksays9MSk7ImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kTW9kdWxlSW5pdCYmKGMuZ3JvdygxKSxmLnZhbHVlPWssYy5zZXQoaywKYi5leHBvcnRzLmNzb3VuZE1vZHVsZUluaXQpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kmJihjLmdyb3coMSksZy52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZUVycm9yQ29kZVRvU3RyaW5nJiYoYy5ncm93KDEpLGgudmFsdWU9ayxjLnNldChrLGIuZXhwb3J0cy5jc291bmRNb2R1bGVFcnJvckNvZGVUb1N0cmluZykpO2EuZXhwb3J0cy5jc291bmRXYXNpTG9hZFBsdWdpbihkLGUsZixnLGgpfWVsc2UgYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8Yi5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQ/KGU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCksZj1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxnPWMubGVuZ3RoLAoiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRfb3Bjb2RlX2luaXQmJihlLnZhbHVlPWcsYy5ncm93KDEpLGMuc2V0KGcsYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdCksZys9MSksImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCYmKGYudmFsdWU9ZyxjLmdyb3coMSksYy5zZXQoZyxiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCkpLGEuZXhwb3J0cy5jc291bmRXYXNpTG9hZE9wY29kZUxpYnJhcnkoZCxmLGUpKTpjb25zb2xlLmVycm9yKCJQbHVnaW4gZG9lc24ndCBleHBvcnQgbmVjZWNjYXJ5IGZ1bmN0aW9ucyB0byBxdWFsaXR5IGFzIGNzb3VuZCBwbHVnaW4uIil9O3ZhciBtb2R1bGUkc3JjJGRsaW5pdD17fTttb2R1bGUkc3JjJGRsaW5pdC5kbGluaXQ9ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdDt2b2lkIDAhPT1nb29nLmdsb2JhbCYmKGdvb2cuZ2xvYmFsPXt9KTtnb29nLmdsb2JhbC5CaWdJbnR8fChnb29nLmdsb2JhbC5CaWdJbnQ9dm9pZCAwPT09QmlnSW50P051bWJlcjpCaWdJbnQpOwpjb25zdCBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9FQUREUklOVVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMsV0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NSxXQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRUFMUkVBRFkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NyxXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTgsV0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTksV0FTSV9FQlVTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTAsV0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTEsV0FTSV9FQ0hJTEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTIsV0FTSV9FQ09OTkFCT1JURUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9FQ09OTlJFRlVTRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTQsV0FTSV9FQ09OTlJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE1LFdBU0lfRURFQURMSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNixXQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNyxXQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTgsV0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9FRVhJU1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjIwLFdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIxLFdBU0lfRUZCSUckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjIsV0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9FSURSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNCxXQVNJX0VJTFNFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNSxXQVNJX0VJTlBST0dSRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI2LFdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjcsV0FTSV9FSU5WQUwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjgsV0FTSV9FSU8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjksV0FTSV9FSVNDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMwLFdBU0lfRUlTRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQozMSxXQVNJX0VMT09QJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMyLFdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMzLFdBU0lfRU1MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTM0LFdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzUsV0FTSV9FTVVMVElIT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzYsV0FTSV9FTkFNRVRPT0xPTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzcsV0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOCxXQVNJX0VORVRSRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOSxXQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQwLFdBU0lfRU5GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQxLApXQVNJX0VOT0JVRlMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDIsV0FTSV9FTk9ERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDMsV0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDQsV0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ1LFdBU0lfRU5PTENLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ2LFdBU0lfRU5PTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00NyxXQVNJX0VOT01FTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OCxXQVNJX0VOT01TRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OSxXQVNJX0VOT1BST1RPT1BUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUwLFdBU0lfRU5PU1BDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUxLFdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQo1MixXQVNJX0VOT1RDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUzLFdBU0lfRU5PVERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NCxXQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NSxXQVNJX0VOT1RSRUNPVkVSQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NixXQVNJX0VOT1RTT0NLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTU3LFdBU0lfRU5PVFNVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OCxXQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OSxXQVNJX0VOWElPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYwLFdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYxLFdBU0lfRU9XTkVSREVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KNjIsV0FTSV9FUEVSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02MyxXQVNJX0VQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY0LFdBU0lfRVBST1RPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY1LFdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY2LFdBU0lfRVBST1RPVFlQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02NyxXQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02OCxXQVNJX0VST0ZTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY5LFdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTcwLFdBU0lfRVNSQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzEsV0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzIsV0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjczLFdBU0lfRVRYVEJTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03NCxXQVNJX0VYREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTc1LFdBU0lfRU5PVENBUEFCTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzYsV0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TSUdBTFJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TSUdCVVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX1NJR0NITEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfU0lHSFVQJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYsV0FTSV9TSUdJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjcsV0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1NJR0tJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OSxXQVNJX1NJR1BJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTAsV0FTSV9TSUdRVUlUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTExLFdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xMixXQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE0LFdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNSxXQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTYsV0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE3LFdBU0lfU0lHVFRPVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTgsV0FTSV9TSUdVUkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9TSUdVU1IxJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIwLFdBU0lfU0lHVVNSMiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMSxXQVNJX1NJR1ZUQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMixXQVNJX1NJR1hDUFUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9TSUdYRlNaJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI0LFdBU0lfRklMRVRZUEVfVU5LTk9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRklMRVRZUEVfQkxPQ0tfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjMsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRklMRVRZUEVfU1lNQk9MSUNfTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03LFdBU0lfRkRGTEFHX0FQUEVORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRkRGTEFHX0RTWU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GREZMQUdfTk9OQkxPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz04LFdBU0lfRkRGTEFHX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjE2LFdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEpLFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMiksV0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0KSxXQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgpLFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYpLFdBU0lfUklHSFRfRkRfVEVMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzIpLFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCg2NCksV0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEyOCksV0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjU2KSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoNTEyKSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwMjQpLFdBU0lfUklHSFRfUEFUSF9MSU5LX1NPVVJDRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjA0OCksV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQpnb29nLmdsb2JhbC5CaWdJbnQoNDA5NiksV0FTSV9SSUdIVF9QQVRIX09QRU4kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgxOTIpLFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYzODQpLFdBU0lfUklHSFRfUEFUSF9SRUFETElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzI3NjgpLFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg2NTUzNiksV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEzMTA3MiksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KZ29vZy5nbG9iYWwuQmlnSW50KDI2MjE0NCksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg1MjQyODgpLFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwNDg1NzYpLFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgyMDk3MTUyKSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0MTk0MzA0KSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoODM4ODYwOCksV0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCgxNjc3NzIxNiksV0FTSV9SSUdIVF9QQVRIX1JFTU9WRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDMzNTU0NDMyKSxXQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDY3MTA4ODY0KSxXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgxMzQyMTc3MjgpLFdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjY4NDM1NDU2KSxSSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX0ZEX1NFRUskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FEVklTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FMTE9DQVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfT1BFTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFQURMSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQ0hBUkFDVEVSX0RFVklDRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMsUklHSFRTX0NIQVJBQ1RFUl9ERVZJQ0VfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KV0FTSV9SSUdIVF9GRF9EQVRBU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9URUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMCksUklHSFRTX0RJUkVDVE9SWV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19ESVJFQ1RPUllfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8UklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cywKUklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX0VWRU5UVFlQRV9DTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0VWRU5UVFlQRV9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfRklMRVNUQVRfU0VUX0FUSU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjEsV0FTSV9GSUxFU1RBVF9TRVRfQVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9GSUxFU1RBVF9TRVRfTVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX09fQ1JFQVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX09fVFJVTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1BSRU9QRU5UWVBFX0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRElSQ09PS0lFX1NUQVJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjAsV0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9XSEVOQ0VfQ1VSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI7dmFyIG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9e307bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQUxMPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19ESVJFQ1RPUllfQkFTRT1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfRElSRUNUT1JZX0lOSEVSSVRJTkc9UklHSFRTX0RJUkVDVE9SWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRT1SSUdIVFNfUkVHVUxBUl9GSUxFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfUkVHVUxBUl9GSUxFX0lOSEVSSVRJTkc9UklHSFRTX1JFR1VMQVJfRklMRV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1NPQ0tFVF9CQVNFPVJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19TT0NLRVRfSU5IRVJJVElORz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1RUWV9CQVNFPVJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfVFRZX0lOSEVSSVRJTkc9UklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9DTE9DS19NT05PVE9OSUM9V0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRD1XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfQ0xPQ0tfUkVBTFRJTUU9V0FTSV9DTE9DS19SRUFMVElNRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1RIUkVBRF9DUFVUSU1FX0lEPVdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0RJUkNPT0tJRV9TVEFSVD1XQVNJX0RJUkNPT0tJRV9TVEFSVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRTJCSUc9V0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFDQ0VTPVdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUREUklOVVNFPVdBU0lfRUFERFJJTlVTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBRERSTk9UQVZBSUw9V0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUZOT1NVUFBPUlQ9V0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBR0FJTj1XQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFMUkVBRFk9V0FTSV9FQUxSRUFEWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUJBREY9V0FTSV9FQkFERiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VCQURNU0c9V0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQlVTWT1XQVNJX0VCVVNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ0FOQ0VMRUQ9V0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VDSElMRD1XQVNJX0VDSElMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5BQk9SVEVEPVdBU0lfRUNPTk5BQk9SVEVEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5SRUZVU0VEPVdBU0lfRUNPTk5SRUZVU0VEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ09OTlJFU0VUPVdBU0lfRUNPTk5SRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURFQURMSz1XQVNJX0VERUFETEskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VERVNUQUREUlJFUT1XQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURPTT1XQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRFFVT1Q9V0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VFWElTVD1XQVNJX0VFWElTVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUZBVUxUPVdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRkJJRz1XQVNJX0VGQklHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSE9TVFVOUkVBQ0g9V0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJRFJNPVdBU0lfRUlEUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSUxTRVE9V0FTSV9FSUxTRVEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlBST0dSRVNTPVdBU0lfRUlOUFJPR1JFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlRSPVdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlZBTD1XQVNJX0VJTlZBTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUlPPVdBU0lfRUlPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSVNDT05OPVdBU0lfRUlTQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJU0RJUj1XQVNJX0VJU0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUxPT1A9V0FTSV9FTE9PUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU1GSUxFPVdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTUxJTks9V0FTSV9FTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNU0dTSVpFPVdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNVUxUSUhPUD1XQVNJX0VNVUxUSUhPUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOQU1FVE9PTE9ORz1XQVNJX0VOQU1FVE9PTE9ORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVERPV049V0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVFJFU0VUPVdBU0lfRU5FVFJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkVUVU5SRUFDSD1XQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkZJTEU9V0FTSV9FTkZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9CVUZTPVdBU0lfRU5PQlVGUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PREVWPVdBU0lfRU5PREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9FTlQ9V0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0VYRUM9V0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9MQ0s9V0FTSV9FTk9MQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0xJTks9V0FTSV9FTk9MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PTUVNPVdBU0lfRU5PTUVNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9NU0c9V0FTSV9FTk9NU0ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1BST1RPT1BUPVdBU0lfRU5PUFJPVE9PUFQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1NQQz1XQVNJX0VOT1NQQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PU1lTPVdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENBUEFCTEU9V0FTSV9FTk9UQ0FQQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENPTk49V0FTSV9FTk9UQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVERJUj1XQVNJX0VOT1RESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RFTVBUWT1XQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFJFQ09WRVJBQkxFPVdBU0lfRU5PVFJFQ09WRVJBQkxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNPQ0s9V0FTSV9FTk9UU09DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNVUD1XQVNJX0VOT1RTVVAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RUWT1XQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5YSU89V0FTSV9FTlhJTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9WRVJGTE9XPVdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9XTkVSREVBRD1XQVNJX0VPV05FUkRFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQRVJNPVdBU0lfRVBFUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQSVBFPVdBU0lfRVBJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQUk9UTz1XQVNJX0VQUk9UTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPTk9TVVBQT1JUPVdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPVFlQRT1XQVNJX0VQUk9UT1RZUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VSQU5HRT1XQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVJPRlM9V0FTSV9FUk9GUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVNQSVBFPVdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1JDSD1XQVNJX0VTUkNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1RBTEU9V0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1VDQ0VTUz1XQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVElNRURPVVQ9V0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VUWFRCU1k9V0FTSV9FVFhUQlNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfQ0xPQ0s9V0FTSV9FVkVOVFRZUEVfQ0xPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VWRU5UVFlQRV9GRF9SRUFEPVdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfRkRfV1JJVEU9V0FTSV9FVkVOVFRZUEVfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VYREVWPVdBU0lfRVhERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19BUFBFTkQ9V0FTSV9GREZMQUdfQVBQRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GREZMQUdfRFNZTkM9V0FTSV9GREZMQUdfRFNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19OT05CTE9DSz1XQVNJX0ZERkxBR19OT05CTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19SU1lOQz1XQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRkRGTEFHX1NZTkM9V0FTSV9GREZMQUdfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU09V0FTSV9GSUxFU1RBVF9TRVRfQVRJTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFU1RBVF9TRVRfTVRJTT1XQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0U9V0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX0NIQVJBQ1RFUl9ERVZJQ0U9V0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlk9V0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEU9V0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9TVFJFQU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NZTUJPTElDX0xJTks9V0FTSV9GSUxFVFlQRV9TWU1CT0xJQ19MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfVU5LTk9XTj1XQVNJX0ZJTEVUWVBFX1VOS05PV04kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fQ1JFQVQ9V0FTSV9PX0NSRUFUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0RJUkVDVE9SWT1XQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0VYQ0w9V0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fVFJVTkM9V0FTSV9PX1RSVU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUFJFT1BFTlRZUEVfRElSPVdBU0lfUFJFT1BFTlRZUEVfRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9BRFZJU0U9V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0FMTE9DQVRFPVdBU0lfUklHSFRfRkRfQUxMT0NBVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0RBVEFTWU5DPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1M9V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUPVdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRT1XQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVM9V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1JFQUQ9V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfUkVBRERJUj1XQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1NFRUs9V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9TWU5DPVdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfVEVMTD1XQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1dSSVRFPVdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlk9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVD1XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0U9V0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUPVdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9PUEVOPVdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRUFETElOSz1XQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWT1XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFPVdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQ9V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1NZTUxJTks9V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURT1XQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOPVdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0FCUlQ9V0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdBTFJNPVdBU0lfU0lHQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQlVTPVdBU0lfU0lHQlVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdDSExEPVdBU0lfU0lHQ0hMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQ09OVD1XQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0ZQRT1XQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0hVUD1XQVNJX1NJR0hVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHSUxMPVdBU0lfU0lHSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdJTlQ9V0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0tJTEw9V0FTSV9TSUdLSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdQSVBFPVdBU0lfU0lHUElQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHUVVJVD1XQVNJX1NJR1FVSVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdTRUdWPVdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHU1RPUD1XQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RFUk09V0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdUUkFQPVdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFNUUD1XQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RUSU49V0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFRPVT1XQVNJX1NJR1RUT1UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VSRz1XQVNJX1NJR1VSRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVVNSMT1XQVNJX1NJR1VTUjEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VTUjI9V0FTSV9TSUdVU1IyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdWVEFMUk09V0FTSV9TSUdWVEFMUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdYQ1BVPVdBU0lfU0lHWENQVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHWEZTWj1XQVNJX1NJR1hGU1okJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NUREVSUl9GSUxFTk89V0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TVERJTl9GSUxFTk89V0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NURE9VVF9GSUxFTk89V0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfV0hFTkNFX0NVUj1XQVNJX1dIRU5DRV9DVVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1dIRU5DRV9FTkQ9V0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9XSEVOQ0VfU0VUPVdBU0lfV0hFTkNFX1NFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cztnb29nLmRlYnVnPXt9O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IoYSxiKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IpO2Vsc2V7Y29uc3QgYz1FcnJvcigpLnN0YWNrO2MmJih0aGlzLnN0YWNrPWMpfWEmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGEpKTt2b2lkIDAhPT1iJiYodGhpcy5jYXVzZT1iKTt0aGlzLnJlcG9ydEVycm9yVG9TZXJ2ZXI9ITB9Z29vZy5pbmhlcml0cyhtb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLEVycm9yKTttb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLnByb3RvdHlwZS5uYW1lPSJDdXN0b21FcnJvciI7Z29vZy5kZWJ1Zy5FcnJvcj1tb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yO2dvb2cuZG9tPXt9O2dvb2cuZG9tLk5vZGVUeXBlPXtFTEVNRU5UOjEsQVRUUklCVVRFOjIsVEVYVDozLENEQVRBX1NFQ1RJT046NCxFTlRJVFlfUkVGRVJFTkNFOjUsRU5USVRZOjYsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo3LENPTU1FTlQ6OCxET0NVTUVOVDo5LERPQ1VNRU5UX1RZUEU6MTAsRE9DVU1FTlRfRlJBR01FTlQ6MTEsTk9UQVRJT046MTJ9O2dvb2cuYXNzZXJ0cz17fTtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFM9Z29vZy5ERUJVRztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX0Fzc2VydGlvbkVycm9yKGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvci5jYWxsKHRoaXMsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYikpO3RoaXMubWVzc2FnZVBhdHRlcm49YX1nb29nLmluaGVyaXRzKG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IsbW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvcik7Z29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yPW1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3I7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvci5wcm90b3R5cGUubmFtZT0iQXNzZXJ0aW9uRXJyb3IiOwpnb29nLmFzc2VydHMuREVGQVVMVF9FUlJPUl9IQU5ETEVSPWZ1bmN0aW9uKGEpe3Rocm93IGE7fTtsZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19lcnJvckhhbmRsZXJfPWdvb2cuYXNzZXJ0cy5ERUZBVUxUX0VSUk9SX0hBTkRMRVI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYil7YT1hLnNwbGl0KCIlcyIpO2xldCBjPSIiO2NvbnN0IGQ9YS5sZW5ndGgtMTtmb3IobGV0IGU9MDtlPGQ7ZSsrKWMrPWFbZV0rKGU8Yi5sZW5ndGg/YltlXToiJXMiKTtyZXR1cm4gYythW2RdfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZShhLGIsYyxkKXtsZXQgZT0iQXNzZXJ0aW9uIGZhaWxlZCIsZjtjPyhlKz0iOiAiK2MsZj1kKTphJiYoZSs9IjogIithLGY9Yik7YT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiIitlLGZ8fFtdKTttb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8oYSl9Z29vZy5hc3NlcnRzLnNldEVycm9ySGFuZGxlcj1mdW5jdGlvbihhKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl89YSl9Owpnb29nLmFzc2VydHMuYXNzZXJ0PWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiIixudWxsLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Z29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cz1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZudWxsPT1hJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgdG8gZXhpc3Q6ICVzLiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5mYWlsPWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8obmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IoIkZhaWx1cmUiKyhhPyI6ICIrYToiIiksQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSl9O2dvb2cuYXNzZXJ0cy5hc3NlcnROdW1iZXI9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmIm51bWJlciIhPT10eXBlb2YgYSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG51bWJlciBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJzdHJpbmciIT09dHlwZW9mIGEmJm1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBzdHJpbmcgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTtnb29nLmFzc2VydHMuYXNzZXJ0RnVuY3Rpb249ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmImZ1bmN0aW9uIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgZnVuY3Rpb24gYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydE9iamVjdD1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc09iamVjdChhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG9iamVjdCBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9O2dvb2cuYXNzZXJ0cy5hc3NlcnRBcnJheT1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhQXJyYXkuaXNBcnJheShhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIGFycmF5IGJ1dCBnb3QgJXM6ICVzLiIsW2dvb2cudHlwZU9mKGEpLGFdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5hc3NlcnRCb29sZWFuPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJib29sZWFuIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgYm9vbGVhbiBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0RWxlbWVudD1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Z29vZy5pc09iamVjdChhKSYmYS5ub2RlVHlwZT09Z29vZy5kb20uTm9kZVR5cGUuRUxFTUVOVHx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIEVsZW1lbnQgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2Y9ZnVuY3Rpb24oYSxiLGMsZCl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8YSBpbnN0YW5jZW9mIGJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBpbnN0YW5jZW9mICVzIGJ1dCBnb3QgJXMuIixbbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19nZXRUeXBlKGIpLG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKV0sYyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMykpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEZpbml0ZT1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Im51bWJlciI9PXR5cGVvZiBhJiZpc0Zpbml0ZShhKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkICVzIHRvIGJlIGEgZmluaXRlIG51bWJlciBidXQgaXQgaXMgbm90LiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEZ1bmN0aW9uP2EuZGlzcGxheU5hbWV8fGEubmFtZXx8InVua25vd24gdHlwZSBuYW1lIjphIGluc3RhbmNlb2YgT2JqZWN0P2EuY29uc3RydWN0b3IuZGlzcGxheU5hbWV8fGEuY29uc3RydWN0b3IubmFtZXx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpOm51bGw9PT1hPyJudWxsIjp0eXBlb2YgYX07Z29vZy5hcnJheT17fTtnb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTPWdvb2cuVFJVU1RFRF9TSVRFO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TPTIwMTI8Z29vZy5GRUFUVVJFU0VUX1lFQVI7Z29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGEpe3JldHVybiBhW2EubGVuZ3RoLTFdfWdvb2cuYXJyYXkucGVlaz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrO2dvb2cuYXJyYXkubGFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbmRleE9mPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXtjPW51bGw9PWM/MDowPmM/TWF0aC5tYXgoMCxhLmxlbmd0aCtjKTpjO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuInN0cmluZyIhPT10eXBlb2YgYnx8MSE9Yi5sZW5ndGg/LTE6YS5pbmRleE9mKGIsYyk7Zm9yKDtjPGEubGVuZ3RoO2MrKylpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfTtnb29nLmFycmF5LmluZGV4T2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbGFzdEluZGV4T2Y9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYSxiLG51bGw9PWM/YS5sZW5ndGgtMTpjKX06ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbD09Yz9hLmxlbmd0aC0xOmM7MD5jJiYoYz1NYXRoLm1heCgwLGEubGVuZ3RoK2MpKTtpZigic3RyaW5nIj09PXR5cGVvZiBhKXJldHVybiJzdHJpbmciIT09dHlwZW9mIGJ8fDEhPWIubGVuZ3RoPy0xOmEubGFzdEluZGV4T2YoYixjKTtmb3IoOzA8PWM7Yy0tKWlmKGMgaW4gYSYmYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9Owpnb29nLmFycmF5Lmxhc3RJbmRleE9mPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2xhc3RJbmRleE9mO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2g9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZm9yRWFjaCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpfTtnb29nLmFycmF5LmZvckVhY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsYixjKXt2YXIgZD1hLmxlbmd0aDtjb25zdCBlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IoLS1kOzA8PWQ7LS1kKWQgaW4gZSYmYi5jYWxsKGMsZVtkXSxkLGEpfWdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2hSaWdodDsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmlsdGVyPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmZpbHRlcik/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPVtdO2xldCBmPTA7Y29uc3QgZz0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBoPTA7aDxkO2grKylpZihoIGluIGcpe2NvbnN0IGs9Z1toXTtiLmNhbGwoYyxrLGgsYSkmJihlW2YrK109ayl9cmV0dXJuIGV9O2dvb2cuYXJyYXkuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbHRlcjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbWFwPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLm1hcCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPUFycmF5KGQpLGY9InN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKTphO2ZvcihsZXQgZz0wO2c8ZDtnKyspZyBpbiBmJiYoZVtnXT1iLmNhbGwoYyxmW2ddLGcsYSkpO3JldHVybiBlfTtnb29nLmFycmF5Lm1hcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9tYXA7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZT1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYobW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfQVNTVU1FX05BVElWRV9GVU5DVElPTlN8fEFycmF5LnByb3RvdHlwZS5yZWR1Y2UpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2QmJihiPWdvb2cuYmluZChiLGQpKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMsZCl7bGV0IGU9Yzttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoKGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9Yik7ZCYmKGI9Z29vZy5iaW5kKGIsZCkpO3JldHVybiBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjLGQpe2xldCBlPWM7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuc29tZSk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKSlyZXR1cm4hMDtyZXR1cm4hMX07Z29vZy5hcnJheS5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2V2ZXJ5PWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmV2ZXJ5KT9mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1hLmxlbmd0aCk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJiFiLmNhbGwoYyxlW2ZdLGYsYSkpcmV0dXJuITE7cmV0dXJuITB9O2dvb2cuYXJyYXkuZXZlcnk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXZlcnk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvdW50KGEsYixjKXtsZXQgZD0wO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYsZyl7Yi5jYWxsKGMsZSxmLGcpJiYrK2R9LGMpO3JldHVybiBkfWdvb2cuYXJyYXkuY291bnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY291bnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZChhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleChhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWlmKGYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpKXJldHVybiBmO3JldHVybi0xfWdvb2cuYXJyYXkuZmluZEluZGV4PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kUmlnaHQoYSxiLGMpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZEluZGV4UmlnaHQoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZFJpZ2h0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXhSaWdodChhLGIsYyl7dmFyIGQ9YS5sZW5ndGg7Y29uc3QgZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKC0tZDswPD1kO2QtLSlpZihkIGluIGUmJmIuY2FsbChjLGVbZF0sZCxhKSlyZXR1cm4gZDtyZXR1cm4tMX1nb29nLmFycmF5LmZpbmRJbmRleFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleFJpZ2h0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zKGEsYil7cmV0dXJuIDA8PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxiKX1nb29nLmFycmF5LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzRW1wdHkoYSl7cmV0dXJuIDA9PWEubGVuZ3RofWdvb2cuYXJyYXkuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pc0VtcHR5OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jbGVhcihhKXtpZighQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGI9YS5sZW5ndGgtMTswPD1iO2ItLSlkZWxldGUgYVtiXTthLmxlbmd0aD0wfWdvb2cuYXJyYXkuY2xlYXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY2xlYXI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0KGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29udGFpbnMoYSxiKXx8YS5wdXNoKGIpfWdvb2cuYXJyYXkuaW5zZXJ0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRBdChhLGIsYyl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYywwLGIpfWdvb2cuYXJyYXkuaW5zZXJ0QXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQoYSxiLGMpe2dvb2cucGFydGlhbChtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2UsYSxjLDApLmFwcGx5KG51bGwsYil9Z29vZy5hcnJheS5pbnNlcnRBcnJheUF0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QmVmb3JlKGEsYixjKXtsZXQgZDsyPT1hcmd1bWVudHMubGVuZ3RofHwwPihkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxjKSk/YS5wdXNoKGIpOm1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYixkKX1nb29nLmFycmF5Lmluc2VydEJlZm9yZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRCZWZvcmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZShhLGIpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZihhLGIpO2xldCBjOyhjPTA8PWIpJiZtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpO3JldHVybiBjfWdvb2cuYXJyYXkucmVtb3ZlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVMYXN0KGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9sYXN0SW5kZXhPZihhLGIpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUxhc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlTGFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMT09QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKS5sZW5ndGh9Z29vZy5hcnJheS5yZW1vdmVBdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVJZihhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUlmPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZUlmOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZihhLGIsYyl7bGV0IGQ9MDttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoUmlnaHQoYSxmdW5jdGlvbihlLGYpe2IuY2FsbChjLGUsZixhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxmKSYmZCsrfSk7cmV0dXJuIGR9Z29vZy5hcnJheS5yZW1vdmVBbGxJZj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQoYSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sYXJndW1lbnRzKX1nb29nLmFycmF5LmNvbmNhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbihhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfQpnb29nLmFycmF5LmpvaW49bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5KGEpe2NvbnN0IGI9YS5sZW5ndGg7aWYoMDxiKXtjb25zdCBjPUFycmF5KGIpO2ZvcihsZXQgZD0wO2Q8YjtkKyspY1tkXT1hW2RdO3JldHVybiBjfXJldHVybltdfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2Nsb25lPWdvb2cuYXJyYXkudG9BcnJheT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5O2dvb2cuYXJyYXkuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9BcnJheTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXh0ZW5kKGEsYil7Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107aWYoZ29vZy5pc0FycmF5TGlrZShkKSl7Y29uc3QgZT1hLmxlbmd0aHx8MCxmPWQubGVuZ3RofHwwO2EubGVuZ3RoPWUrZjtmb3IobGV0IGc9MDtnPGY7ZysrKWFbZStnXT1kW2ddfWVsc2UgYS5wdXNoKGQpfX1nb29nLmFycmF5LmV4dGVuZD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9leHRlbmQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoYXJndW1lbnRzLDEpKX1nb29nLmFycmF5LnNwbGljZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2U7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYixjKX1nb29nLmFycmF5LnNsaWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzKGEsYixjKXtiPWJ8fGE7dmFyIGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGdvb2cuaXNPYmplY3QoZyk/Im8iK2dvb2cuZ2V0VWlkKGcpOih0eXBlb2YgZykuY2hhckF0KDApK2d9O2M9Y3x8ZDtsZXQgZT1kPTA7Y29uc3QgZj17fTtmb3IoO2U8YS5sZW5ndGg7KXtjb25zdCBnPWFbZSsrXSxoPWMoZyk7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGYsaCl8fChmW2hdPSEwLGJbZCsrXT1nKX1iLmxlbmd0aD1kfWdvb2cuYXJyYXkucmVtb3ZlRHVwbGljYXRlcz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2hfKGEsY3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUsITEsYil9Z29vZy5hcnJheS5iaW5hcnlTZWFyY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5U2VhcmNoO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlbGVjdChhLGIsYyl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLCEwLHZvaWQgMCxjKX1nb29nLmFycmF5LmJpbmFyeVNlbGVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWxlY3Q7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLGMsZCxlKXtsZXQgZj0wLGc9YS5sZW5ndGgsaDtmb3IoO2Y8Zzspe2NvbnN0IGs9ZisoZy1mPj4+MSk7bGV0IGw7bD1jP2IuY2FsbChlLGFba10sayxhKTpiKGQsYVtrXSk7MDxsP2Y9aysxOihnPWssaD0hbCl9cmV0dXJuIGg/ZjotZi0xfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYSxiKXthLnNvcnQoYnx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUpfWdvb2cuYXJyYXkuc29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0KGEsYil7Y29uc3QgYz1BcnJheShhLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspY1tlXT17aW5kZXg6ZSx2YWx1ZTphW2VdfTtjb25zdCBkPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYyxmdW5jdGlvbihlLGYpe3JldHVybiBkKGUudmFsdWUsZi52YWx1ZSl8fGUuaW5kZXgtZi5pbmRleH0pO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYVtiXT1jW2JdLnZhbHVlfWdvb2cuYXJyYXkuc3RhYmxlU29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxiLGMpe2NvbnN0IGQ9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc29ydChhLGZ1bmN0aW9uKGUsZil7cmV0dXJuIGQoYihlKSxiKGYpKX0pfWdvb2cuYXJyYXkuc29ydEJ5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRCeUtleTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0T2JqZWN0c0J5S2V5KGEsYixjKXttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxmdW5jdGlvbihkKXtyZXR1cm4gZFtiXX0sYyl9Z29vZy5hcnJheS5zb3J0T2JqZWN0c0J5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRPYmplY3RzQnlLZXk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkKGEsYixjKXtiPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO2ZvcihsZXQgZD0xO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWIoYVtkLTFdLGFbZF0pO2lmKDA8ZXx8MD09ZSYmYylyZXR1cm4hMX1yZXR1cm4hMH1nb29nLmFycmF5LmlzU29ydGVkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2VxdWFscyhhLGIsYyl7aWYoIWdvb2cuaXNBcnJheUxpa2UoYSl8fCFnb29nLmlzQXJyYXlMaWtlKGIpfHxhLmxlbmd0aCE9Yi5sZW5ndGgpcmV0dXJuITE7Y29uc3QgZD1hLmxlbmd0aDtjPWN8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7Zm9yKGxldCBlPTA7ZTxkO2UrKylpZighYyhhW2VdLGJbZV0pKXJldHVybiExO3JldHVybiEwfQpnb29nLmFycmF5LmVxdWFscz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9lcXVhbHM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTMoYSxiLGMpe2M9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7Y29uc3QgZD1NYXRoLm1pbihhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxkO2UrKyl7Y29uc3QgZj1jKGFbZV0sYltlXSk7aWYoMCE9ZilyZXR1cm4gZn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYS5sZW5ndGgsYi5sZW5ndGgpfWdvb2cuYXJyYXkuY29tcGFyZTM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYSxiKXtyZXR1cm4gYT5iPzE6YTxiPy0xOjB9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9kZWZhdWx0Q29tcGFyZTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlKGEsYil7cmV0dXJuLW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlKGEsYil9Z29vZy5hcnJheS5pbnZlcnNlRGVmYXVsdENvbXBhcmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHkoYSxiKXtyZXR1cm4gYT09PWJ9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZUVxdWFsaXR5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeUluc2VydChhLGIsYyl7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpO3JldHVybiAwPmM/KG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYiwtKGMrMSkpLCEwKTohMX1nb29nLmFycmF5LmJpbmFyeUluc2VydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlJbnNlcnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5UmVtb3ZlKGEsYixjKXtiPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaChhLGIsYyk7cmV0dXJuIDA8PWI/bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKTohMX1nb29nLmFycmF5LmJpbmFyeVJlbW92ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlSZW1vdmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldChhLGIsYyl7Y29uc3QgZD17fTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7Y29uc3QgZj1hW2VdLGc9Yi5jYWxsKGMsZixlLGEpO3ZvaWQgMCE9PWcmJihkW2ddfHwoZFtnXT1bXSkpLnB1c2goZil9cmV0dXJuIGR9Z29vZy5hcnJheS5idWNrZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldFRvTWFwKGEsYil7Y29uc3QgYz1uZXcgTWFwO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWFbZF0sZj1iKGUsZCxhKTtpZih2b2lkIDAhPT1mKXtsZXQgZz1jLmdldChmKTtnfHwoZz1bXSxjLnNldChmLGcpKTtnLnB1c2goZSl9fXJldHVybiBjfWdvb2cuYXJyYXkuYnVja2V0VG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0VG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3RvT2JqZWN0KGEsYixjKXtjb25zdCBkPXt9O21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYpe2RbYi5jYWxsKGMsZSxmLGEpXT1lfSk7cmV0dXJuIGR9Z29vZy5hcnJheS50b09iamVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b09iamVjdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b01hcChhLGIpe2NvbnN0IGM9bmV3IE1hcDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdO2Muc2V0KGIoZSxkLGEpLGUpfXJldHVybiBjfWdvb2cuYXJyYXkudG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JhbmdlKGEsYixjKXtjb25zdCBkPVtdO2xldCBlPTAsZj1hO2M9Y3x8MTt2b2lkIDAhPT1iJiYoZT1hLGY9Yik7aWYoMD5jKihmLWUpKXJldHVybltdO2lmKDA8Yylmb3IoYT1lO2E8ZjthKz1jKWQucHVzaChhKTtlbHNlIGZvcihhPWU7YT5mO2ErPWMpZC5wdXNoKGEpO3JldHVybiBkfWdvb2cuYXJyYXkucmFuZ2U9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmFuZ2U7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVwZWF0KGEsYil7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbZF09YTtyZXR1cm4gY31nb29nLmFycmF5LnJlcGVhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZXBlYXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZsYXR0ZW4oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXtjb25zdCBlPWFyZ3VtZW50c1tkXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7Zis9ODE5Mil7dmFyIGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoZSxmLGYrODE5Mik7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuLmFwcGx5KG51bGwsYyk7Zm9yKGxldCBnPTA7ZzxjLmxlbmd0aDtnKyspYi5wdXNoKGNbZ10pfWVsc2UgYi5wdXNoKGUpfXJldHVybiBifWdvb2cuYXJyYXkuZmxhdHRlbj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGUoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTthLmxlbmd0aCYmKGIlPWEubGVuZ3RoLDA8Yj9BcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShhLGEuc3BsaWNlKC1iLGIpKTowPmImJkFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGEsYS5zcGxpY2UoMCwtYikpKTtyZXR1cm4gYX1nb29nLmFycmF5LnJvdGF0ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGU7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW0oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9YiYmYjxhLmxlbmd0aCk7Z29vZy5hc3NlcnRzLmFzc2VydCgwPD1jJiZjPGEubGVuZ3RoKTtiPUFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYywwLGJbMF0pfWdvb2cuYXJyYXkubW92ZUl0ZW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3ppcChhKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bXTtjb25zdCBiPVtdO2xldCBjPWFyZ3VtZW50c1swXS5sZW5ndGg7Zm9yKHZhciBkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKylhcmd1bWVudHNbZF0ubGVuZ3RoPGMmJihjPWFyZ3VtZW50c1tkXS5sZW5ndGgpO2ZvcihkPTA7ZDxjO2QrKyl7Y29uc3QgZT1bXTtmb3IobGV0IGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7ZisrKWUucHVzaChhcmd1bWVudHNbZl1bZF0pO2IucHVzaChlKX1yZXR1cm4gYn1nb29nLmFycmF5LnppcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV96aXA7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZShhLGIpe2I9Ynx8TWF0aC5yYW5kb207Zm9yKGxldCBjPWEubGVuZ3RoLTE7MDxjO2MtLSl7Y29uc3QgZD1NYXRoLmZsb29yKGIoKSooYysxKSksZT1hW2NdO2FbY109YVtkXTthW2RdPWV9fQpnb29nLmFycmF5LnNodWZmbGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb3B5QnlJbmRleChhLGIpe2NvbnN0IGM9W107bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaChiLGZ1bmN0aW9uKGQpe2MucHVzaChhW2RdKX0pO3JldHVybiBjfWdvb2cuYXJyYXkuY29weUJ5SW5kZXg9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29weUJ5SW5kZXg7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0TWFwKGEsYixjKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0LmFwcGx5KFtdLG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X21hcChhLGIsYykpfWdvb2cuYXJyYXkuY29uY2F0TWFwPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbmNhdE1hcDtnb29nLmRvbS5hc3NlcnRzPXt9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbj1mdW5jdGlvbihhKXtpZihnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMpe3ZhciBiPWdvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93XyhhKTtiJiYoIWF8fCEoYSBpbnN0YW5jZW9mIGIuTG9jYXRpb24pJiZhIGluc3RhbmNlb2YgYi5FbGVtZW50KSYmZ29vZy5hc3NlcnRzLmZhaWwoIkFyZ3VtZW50IGlzIG5vdCBhIExvY2F0aW9uIChvciBhIG5vbi1FbGVtZW50IG1vY2spOyBnb3Q6ICVzIixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpfXJldHVybiBhfTsKZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXz1mdW5jdGlvbihhLGIpe2lmKGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyl7dmFyIGM9Z29vZy5kb20uYXNzZXJ0cy5nZXRXaW5kb3dfKGEpO2MmJiJ1bmRlZmluZWQiIT10eXBlb2YgY1tiXSYmKGEmJihhIGluc3RhbmNlb2YgY1tiXXx8IShhIGluc3RhbmNlb2YgYy5Mb2NhdGlvbnx8YSBpbnN0YW5jZW9mIGMuRWxlbWVudCkpfHxnb29nLmFzc2VydHMuZmFpbCgiQXJndW1lbnQgaXMgbm90IGEgJXMgKG9yIGEgbm9uLUVsZW1lbnQsIG5vbi1Mb2NhdGlvbiBtb2NrKTsgZ290OiAlcyIsYixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpKX1yZXR1cm4gYX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBbmNob3JFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxBbmNob3JFbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEJ1dHRvbkVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEJ1dHRvbkVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxMaW5rRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MTGlua0VsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxJbWFnZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEltYWdlRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MQXVkaW9FbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MVmlkZW9FbGVtZW50Iil9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxJbnB1dEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxUZXh0QXJlYUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFRleHRBcmVhRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTENhbnZhc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTENhbnZhc0VsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MRW1iZWRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxFbWJlZEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGb3JtRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MRm9ybUVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEZyYW1lRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTElGcmFtZUVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MT2JqZWN0RWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFNjcmlwdEVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFNjcmlwdEVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXz1mdW5jdGlvbihhKXtpZihnb29nLmlzT2JqZWN0KGEpKXRyeXtyZXR1cm4gYS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8YS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9Y2F0Y2goYil7cmV0dXJuIjxvYmplY3QgY291bGQgbm90IGJlIHN0cmluZ2lmaWVkPiJ9ZWxzZSByZXR1cm4gdm9pZCAwPT09YT8idW5kZWZpbmVkIjpudWxsPT09YT8ibnVsbCI6dHlwZW9mIGF9O2dvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93Xz1mdW5jdGlvbihhKXt0cnl7dmFyIGI9YSYmYS5vd25lckRvY3VtZW50LGM9YiYmKGIuZGVmYXVsdFZpZXd8fGIucGFyZW50V2luZG93KTtjPWN8fGdvb2cuZ2xvYmFsO2lmKGMuRWxlbWVudCYmYy5Mb2NhdGlvbilyZXR1cm4gY31jYXRjaChkKXt9cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zPXt9O2dvb2cuZnVuY3Rpb25zLmNvbnN0YW50PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhfX07Z29vZy5mdW5jdGlvbnMuRkFMU0U9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Z29vZy5mdW5jdGlvbnMuVFJVRT1mdW5jdGlvbigpe3JldHVybiEwfTtnb29nLmZ1bmN0aW9ucy5OVUxMPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zLlVOREVGSU5FRD1mdW5jdGlvbigpe307Z29vZy5mdW5jdGlvbnMuRU1QVFk9Z29vZy5mdW5jdGlvbnMuVU5ERUZJTkVEO2dvb2cuZnVuY3Rpb25zLmlkZW50aXR5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZnVuY3Rpb25zLmVycm9yPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3Rocm93IEVycm9yKGEpO319O2dvb2cuZnVuY3Rpb25zLmZhaWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgYTt9fTsKZ29vZy5mdW5jdGlvbnMubG9jaz1mdW5jdGlvbihhLGIpe2I9Ynx8MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwLGIpKX19O2dvb2cuZnVuY3Rpb25zLm50aD1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzW2FdfX07Z29vZy5mdW5jdGlvbnMucGFydGlhbFJpZ2h0PWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IGQ9dGhpcztkPT09Z29vZy5nbG9iYWwmJihkPXZvaWQgMCk7Y29uc3QgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2UucHVzaC5hcHBseShlLGMpO3JldHVybiBhLmFwcGx5KGQsZSl9fTsKZ29vZy5mdW5jdGlvbnMud2l0aFJldHVyblZhbHVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZnVuY3Rpb25zLnNlcXVlbmNlKGEsZ29vZy5mdW5jdGlvbnMuY29uc3RhbnQoYikpfTtnb29nLmZ1bmN0aW9ucy5lcXVhbFRvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiP2E9PWM6YT09PWN9fTtnb29nLmZ1bmN0aW9ucy5jb21wb3NlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hcmd1bWVudHMsZD1jLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZTtkJiYoZT1jW2QtMV0uYXBwbHkodGhpcyxhcmd1bWVudHMpKTtmb3IobGV0IGY9ZC0yOzA8PWY7Zi0tKWU9Y1tmXS5jYWxsKHRoaXMsZSk7cmV0dXJuIGV9fTsKZ29vZy5mdW5jdGlvbnMuc2VxdWVuY2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZDtmb3IobGV0IGU9MDtlPGM7ZSsrKWQ9YltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGR9fTtnb29nLmZ1bmN0aW9ucy5hbmQ9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtmb3IobGV0IGQ9MDtkPGM7ZCsrKWlmKCFiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMTtyZXR1cm4hMH19O2dvb2cuZnVuY3Rpb25zLm9yPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YXJndW1lbnRzLGM9Yi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKGxldCBkPTA7ZDxjO2QrKylpZihiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMDtyZXR1cm4hMX19Owpnb29nLmZ1bmN0aW9ucy5ub3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIWEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07Z29vZy5mdW5jdGlvbnMuY3JlYXRlPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oKXt9O2MucHJvdG90eXBlPWEucHJvdG90eXBlO2M9bmV3IGM7YS5hcHBseShjLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7cmV0dXJuIGN9O2dvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRT0hMDtnb29nLmZ1bmN0aW9ucy5jYWNoZVJldHVyblZhbHVlPWZ1bmN0aW9uKGEpe2xldCBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWdvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRSlyZXR1cm4gYSgpO2J8fChjPWEoKSxiPSEwKTtyZXR1cm4gY319O2dvb2cuZnVuY3Rpb25zLm9uY2U9ZnVuY3Rpb24oYSl7bGV0IGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXtjb25zdCBjPWI7Yj1udWxsO2MoKX19fTsKZ29vZy5mdW5jdGlvbnMuZGVib3VuY2U9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTA7cmV0dXJuIGZ1bmN0aW9uKGUpe2dvb2cuZ2xvYmFsLmNsZWFyVGltZW91dChkKTtjb25zdCBmPWFyZ3VtZW50cztkPWdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmFwcGx5KGMsZil9LGIpfX07Z29vZy5mdW5jdGlvbnMudGhyb3R0bGU9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTAsZT0hMSxmPVtdO2NvbnN0IGc9ZnVuY3Rpb24oKXtkPTA7ZSYmKGU9ITEsaCgpKX0saD1mdW5jdGlvbigpe2Q9Z29vZy5nbG9iYWwuc2V0VGltZW91dChnLGIpO2xldCBrPWY7Zj1bXTthLmFwcGx5KGMsayl9O3JldHVybiBmdW5jdGlvbihrKXtmPWFyZ3VtZW50cztkP2U9ITA6aCgpfX07Cmdvb2cuZnVuY3Rpb25zLnJhdGVMaW1pdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9MDtjb25zdCBlPWZ1bmN0aW9uKCl7ZD0wfTtyZXR1cm4gZnVuY3Rpb24oZil7ZHx8KGQ9Z29vZy5nbG9iYWwuc2V0VGltZW91dChlLGIpLGEuYXBwbHkoYyxhcmd1bWVudHMpKX19O2dvb2cuZnVuY3Rpb25zLmlzRnVuY3Rpb249YT0+ImZ1bmN0aW9uIj09PXR5cGVvZiBhO2dvb2cuc3RyaW5nPXt9O2dvb2cuc3RyaW5nLlR5cGVkU3RyaW5nPWZ1bmN0aW9uKCl7fTtnb29nLnN0cmluZy5Db25zdD1mdW5jdGlvbihhLGIpe3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXz1hPT09Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8mJmJ8fCIiO3RoaXMuU1RSSU5HX0NPTlNUX1RZUEVfTUFSS0VSX19HT09HX1NUUklOR19TRUNVUklUWV9QUklWQVRFXz1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl99O2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwO2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlX307Cmdvb2cuREVCVUcmJihnb29nLnN0cmluZy5Db25zdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ29uc3R7Iit0aGlzLnN0cmluZ0NvbnN0VmFsdWVXaXRoU2VjdXJpdHlDb250cmFjdF9fZ29vZ1N0cmluZ1NlY3VyaXR5UHJpdmF0ZV8rIn0ifSk7Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuc3RyaW5nLkNvbnN0JiZhLlNUUklOR19DT05TVF9UWVBFX01BUktFUl9fR09PR19TVFJJTkdfU0VDVVJJVFlfUFJJVkFURV89PT1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl8pcmV0dXJuIGEuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgQ29uc3QsIGdvdCAnIithKyInIik7cmV0dXJuInR5cGVfZXJyb3I6Q29uc3QifTsKZ29vZy5zdHJpbmcuQ29uc3QuZnJvbT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IGdvb2cuc3RyaW5nLkNvbnN0KGdvb2cuc3RyaW5nLkNvbnN0LkdPT0dfU1RSSU5HX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfLGEpfTtnb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl89e307Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Z29vZy5zdHJpbmcuQ29uc3QuRU1QVFk9Z29vZy5zdHJpbmcuQ29uc3QuZnJvbSgiIik7Z29vZy5odG1sPXt9O2dvb2cuaHRtbC50cnVzdGVkdHlwZXM9e307Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRT1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FKyIjaHRtbCI6IiI7Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oKXtpZighZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV8mJihnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV89Z29vZy5jcmVhdGVUcnVzdGVkVHlwZXNQb2xpY3koZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSkpO3JldHVybiBnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV99O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFPXt9OwpjbGFzcyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV89Yj09PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO3JldHVybiAwPT09YS5sZW5ndGg/bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBmcm9tSnNvbihhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnN0cmluZ2lmeV8oYSkpfWdldFR5cGVkU3RyaW5nVmFsdWUoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXN0YXRpYyB1bndyYXAoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYSkudG9TdHJpbmcoKX1zdGF0aWMgdW53cmFwVHJ1c3RlZFNjcmlwdChhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdClyZXR1cm4gYS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTY3JpcHQsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVNjcmlwdCJ9c3RhdGljIHN0cmluZ2lmeV8oYSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpLnJlcGxhY2UoLzwvZywiXFx4M2MiKX1zdGF0aWMgY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVTY3JpcHQoYSk6CmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdChhLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX19bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk9ZnVuY3Rpb24oKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCIiKX0oKTtnb29nLmh0bWwuU2FmZVNjcmlwdD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdDtnb29nLmZzPXt9O2dvb2cuZnMudXJsPXt9O2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0XygpLmNyZWF0ZU9iamVjdFVSTChhKX07Z29vZy5mcy51cmwucmV2b2tlT2JqZWN0VXJsPWZ1bmN0aW9uKGEpe2dvb2cuZnMudXJsLmdldFVybE9iamVjdF8oKS5yZXZva2VPYmplY3RVUkwoYSl9O2dvb2cuZnMudXJsLlVybE9iamVjdF89ZnVuY3Rpb24oKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLnJldm9rZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9Owpnb29nLmZzLnVybC5nZXRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7Y29uc3QgYT1nb29nLmZzLnVybC5maW5kVXJsT2JqZWN0XygpO2lmKG51bGwhPWEpcmV0dXJuIGE7dGhyb3cgRXJyb3IoIlRoaXMgYnJvd3NlciBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBibG9iIFVSTHMiKTt9O2dvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PWdvb2cuZ2xvYmFsLlVSTCYmdm9pZCAwIT09Z29vZy5nbG9iYWwuVVJMLmNyZWF0ZU9iamVjdFVSTD9nb29nLmdsb2JhbC5VUkw6dm9pZCAwIT09Z29vZy5nbG9iYWwuY3JlYXRlT2JqZWN0VVJMP2dvb2cuZ2xvYmFsOm51bGx9O2dvb2cuZnMudXJsLmJyb3dzZXJTdXBwb3J0c09iamVjdFVybHM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9Z29vZy5mcy51cmwuZmluZFVybE9iamVjdF8oKX07Z29vZy5mcy5ibG9iPXt9O2dvb2cuZnMuYmxvYi5nZXRCbG9iPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cuZ2xvYmFsLkJsb2JCdWlsZGVyfHxnb29nLmdsb2JhbC5XZWJLaXRCbG9iQnVpbGRlcjtpZih2b2lkIDAhPT1iKXtiPW5ldyBiO2ZvcihsZXQgYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYi5hcHBlbmQoYXJndW1lbnRzW2NdKTtyZXR1cm4gYi5nZXRCbG9iKCl9cmV0dXJuIGdvb2cuZnMuYmxvYi5nZXRCbG9iV2l0aFByb3BlcnRpZXMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9Owpnb29nLmZzLmJsb2IuZ2V0QmxvYldpdGhQcm9wZXJ0aWVzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1nb29nLmdsb2JhbC5CbG9iQnVpbGRlcnx8Z29vZy5nbG9iYWwuV2ViS2l0QmxvYkJ1aWxkZXI7aWYodm9pZCAwIT09ZCl7ZD1uZXcgZDtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKylkLmFwcGVuZChhW2VdLGMpO3JldHVybiBkLmdldEJsb2IoYil9aWYodm9pZCAwIT09Z29vZy5nbG9iYWwuQmxvYilyZXR1cm4gZD17fSxiJiYoZC50eXBlPWIpLGMmJihkLmVuZGluZ3M9YyksbmV3IEJsb2IoYSxkKTt0aHJvdyBFcnJvcigiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IGNyZWF0aW5nIEJsb2JzIik7fTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfP2E6IiJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfKyIifX07Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuY2xvbmVXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYil7dmFyIGM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAodGhpcyk7Yz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLlVSTF9QQVJBTV9QQVJTRVJfLmV4ZWMoYyk7dmFyIGQ9Y1szXXx8IiI7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoY1sxXStnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnN0cmluZ2lmeVBhcmFtc18oIj8iLGNbMl18fCIiLGEpK2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuc3RyaW5naWZ5UGFyYW1zXygiIyIsZCxiKSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRTY3JpcHRVUkwoYSkudG9TdHJpbmcoKX07Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgVHJ1c3RlZFJlc291cmNlVXJsLCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybCJ9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdD1mdW5jdGlvbihhLGIpe3ZhciBjPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKTtpZighZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5CQVNFX1VSTF8udGVzdChjKSl0aHJvdyBFcnJvcigiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiAiK2MpO2E9Yy5yZXBsYWNlKGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuRk9STUFUX01BUktFUl8sZnVuY3Rpb24oZCxlKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZSkpdGhyb3cgRXJyb3IoJ0ZvdW5kIG1hcmtlciwgIicrZSsnIiwgaW4gZm9ybWF0IHN0cmluZywgIicrYysnIiwgYnV0IG5vIHZhbGlkIGxhYmVsIG1hcHBpbmcgZm91bmQgaW4gYXJnczogJytKU09OLnN0cmluZ2lmeShiKSk7ZD1iW2VdO3JldHVybiBkIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGQpOgplbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGQpKX0pO3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmNyZWF0ZVRydXN0ZWRSZXNvdXJjZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkZPUk1BVF9NQVJLRVJfPS8leyhcdyspfS9nO2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQkFTRV9VUkxfPVJlZ0V4cCgiXigoaHR0cHM6KT8vL1swLTlhLXouOltcXF0tXSsvfC9bXi9cXFxcXXxbXjovXFxcXCVdKy98W146L1xcXFwlXSpbPyNdfGFib3V0OmJsYW5rIykiLCJpIik7Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5VUkxfUEFSQU1fUEFSU0VSXz0vXihbXj8jXSopKFw/W14jXSopPygjW1xzXFNdKik/LzsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5mb3JtYXRXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdChhLGIpLmNsb25lV2l0aFBhcmFtcyhjLGQpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudHM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1nb29nLnN0cmluZy5Db25zdC51bndyYXAoYVtjXSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21TYWZlU2NyaXB0PWZ1bmN0aW9uKGEpe2E9Z29vZy5mcy5ibG9iLmdldEJsb2JXaXRoUHJvcGVydGllcyhbbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQudW53cmFwKGEpXSwidGV4dC9qYXZhc2NyaXB0Iik7YT1nb29nLmZzLnVybC5jcmVhdGVPYmplY3RVcmwoYSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmdldFBvbGljeVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgpO2E9Yj9iLmNyZWF0ZVNjcmlwdFVSTChhKTphO3JldHVybiBuZXcgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybChhLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8pfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1jKXJldHVybiBiO2lmKCJzdHJpbmciPT09dHlwZW9mIGMpcmV0dXJuIGM/YStlbmNvZGVVUklDb21wb25lbnQoYyk6IiI7Zm9yKHZhciBkIGluIGMpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkpe3ZhciBlPWNbZF07ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdO251bGwhPWcmJihifHwoYj1hKSxiKz0oYi5sZW5ndGg+YS5sZW5ndGg/IiYiOiIiKStlbmNvZGVVUklDb21wb25lbnQoZCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZykpKX19cmV0dXJuIGJ9O2dvb2cuc3RyaW5nLmludGVybmFsPXt9O2dvb2cuc3RyaW5nLmludGVybmFsLnN0YXJ0c1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09YS5sYXN0SW5kZXhPZihiLDApfTtnb29nLnN0cmluZy5pbnRlcm5hbC5lbmRzV2l0aD1mdW5jdGlvbihhLGIpe2NvbnN0IGM9YS5sZW5ndGgtYi5sZW5ndGg7cmV0dXJuIDA8PWMmJmEuaW5kZXhPZihiLGMpPT1jfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWZ1bmN0aW9uKGEsYil7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUoYixhLnNsaWNlKDAsYi5sZW5ndGgpKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlQ29tcGFyZShiLGEuc2xpY2UoYS5sZW5ndGgtYi5sZW5ndGgpKX07Cmdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVxdWFscz1mdW5jdGlvbihhLGIpe3JldHVybiBhLnRvTG93ZXJDYXNlKCk9PWIudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKiQvLnRlc3QoYSl9O2dvb2cuc3RyaW5nLmludGVybmFsLnRyaW09Z29vZy5UUlVTVEVEX1NJVEUmJlN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihhKXtyZXR1cm4gYS50cmltKCl9OmZ1bmN0aW9uKGEpe3JldHVybi9eW1xzXHhhMF0qKFtcc1xTXSo/KVtcc1x4YTBdKiQvLmV4ZWMoYSlbMV19O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXthPVN0cmluZyhhKS50b0xvd2VyQ2FzZSgpO2I9U3RyaW5nKGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGE8Yj8tMTphPT1iPzA6MX07Cmdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csYj8iPGJyIC8+IjoiPGJyPiIpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuaHRtbEVzY2FwZT1mdW5jdGlvbihhLGIpe2lmKGIpYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXywiJmx0OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfLCImZ3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5RVU9UX1JFXywiJnF1b3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTlVMTF9SRV8sIiYjMDsiKTtlbHNle2lmKCFnb29nLnN0cmluZy5pbnRlcm5hbC5BTExfUkVfLnRlc3QoYSkpcmV0dXJuIGE7LTEhPWEuaW5kZXhPZigiJiIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKSk7LTEhPWEuaW5kZXhPZigiPCIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTFRfUkVfLAoiJmx0OyIpKTstMSE9YS5pbmRleE9mKCI+IikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5HVF9SRV8sIiZndDsiKSk7LTEhPWEuaW5kZXhPZignIicpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuUVVPVF9SRV8sIiZxdW90OyIpKTstMSE9YS5pbmRleE9mKCInIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpKTstMSE9YS5pbmRleE9mKCJceDAwIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXywiJiMwOyIpKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXz0vJi9nO2dvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXz0vPC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkdUX1JFXz0vPi9nO2dvb2cuc3RyaW5nLmludGVybmFsLlFVT1RfUkVfPS8iL2c7Z29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXz0vJy9nOwpnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXz0vXHgwMC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV89L1tceDAwJjw+IiddLztnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybi0xIT1hLmluZGV4T2YoYil9O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEudG9Mb3dlckNhc2UoKSxiLnRvTG93ZXJDYXNlKCkpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zPWZ1bmN0aW9uKGEsYil7dmFyIGM9MDthPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW0oU3RyaW5nKGEpKS5zcGxpdCgiLiIpO2I9Z29vZy5zdHJpbmcuaW50ZXJuYWwudHJpbShTdHJpbmcoYikpLnNwbGl0KCIuIik7Y29uc3QgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBnPTA7MD09YyYmZzxkO2crKyl7dmFyIGU9YVtnXXx8IiIsZj1iW2ddfHwiIjtkb3tlPS8oXGQqKShcRCopKC4qKS8uZXhlYyhlKXx8WyIiLCIiLCIiLCIiXTtmPS8oXGQqKShcRCopKC4qKS8uZXhlYyhmKXx8WyIiLCIiLCIiLCIiXTtpZigwPT1lWzBdLmxlbmd0aCYmMD09ZlswXS5sZW5ndGgpYnJlYWs7Yz0wPT1lWzFdLmxlbmd0aD8wOnBhcnNlSW50KGVbMV0sMTApO2NvbnN0IGg9MD09ZlsxXS5sZW5ndGg/MDpwYXJzZUludChmWzFdLDEwKTtjPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oYyxoKXx8Cmdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oMD09ZVsyXS5sZW5ndGgsMD09ZlsyXS5sZW5ndGgpfHxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlRWxlbWVudHNfKGVbMl0sZlsyXSk7ZT1lWzNdO2Y9ZlszXX13aGlsZSgwPT1jKX1yZXR1cm4gY307Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXz1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH07Z29vZy5odG1sLlNhZmVVcmw9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz9hOiIifXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX19O2dvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc9ImFib3V0OmludmFsaWQjekNsb3N1cmV6Ijtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuZ2V0VHlwZWRTdHJpbmdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9Owpnb29nLmh0bWwuU2FmZVVybC51bndyYXA9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsJiZhLmNvbnN0cnVjdG9yPT09Z29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV87Z29vZy5hc3NlcnRzLmZhaWwoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVVcmwsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVVybCJ9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKSl9Owpnb29nLmh0bWwuU0FGRV9NSU1FX1RZUEVfUEFUVEVSTl89UmVnRXhwKCdeKD86YXVkaW8vKD86M2dwcDJ8M2dwcHxhYWN8TDE2fG1pZGl8bXAzfG1wNHxtcGVnfG9nYXxvZ2d8b3B1c3x4LW00YXx4LW1hdHJvc2thfHgtd2F2fHdhdnx3ZWJtKXxmb250L1xcdyt8aW1hZ2UvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwfHgtaWNvbnxoZWljfGhlaWYpfHZpZGVvLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtfHF1aWNrdGltZXx4LW1hdHJvc2thKSkoPzo7XFx3Kz0oPzpcXHcrfCJbXFx3Oyw9IF0rIikpKiQnLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuaXNTYWZlTWltZVR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuZnJvbUJsb2I9ZnVuY3Rpb24oYSl7YT1nb29nLmh0bWwuU2FmZVVybC5pc1NhZmVNaW1lVHlwZShhLnR5cGUpP2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybChhKTpnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLnJldm9rZU9iamVjdFVybD1mdW5jdGlvbihhKXthPWEuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpO2EhPT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HJiZnb29nLmZzLnVybC5yZXZva2VPYmplY3RVcmwoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tTWVkaWFTb3VyY2U9ZnVuY3Rpb24oYSl7Z29vZy5hc3NlcnRzLmFzc2VydCgiTWVkaWFTb3VyY2UiaW4gZ29vZy5nbG9iYWwsIk5vIHN1cHBvcnQgZm9yIE1lZGlhU291cmNlIik7YT1hIGluc3RhbmNlb2YgTWVkaWFTb3VyY2U/Z29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsKGEpOmdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLkRBVEFfVVJMX1BBVFRFUk5fPS9eZGF0YTooLiopO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaTsKZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmw9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7YT1hLnJlcGxhY2UoLyglMEF8JTBEKS9nLCIiKTtyZXR1cm4gYS5tYXRjaChnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl8pP2dvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKTpudWxsfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tRGF0YVVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmwoYSl8fGdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19VUkx9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21UZWxVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ0ZWw6Iil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXz1SZWdFeHAoIl5zaXBbc10/OlsrYS16MC05Xy4hJCUmJypcXC89XmB7fH1+LV0rQChbYS16MC05LV0rXFwuKStbYS16MC05XXsyLDYzfSQiLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNpcFVybD1mdW5jdGlvbihhKXtnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXy50ZXN0KGRlY29kZVVSSUNvbXBvbmVudChhKSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21GYWNlYm9va01lc3NlbmdlclVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsImZiLW1lc3NlbmdlcjovL3NoYXJlIil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tV2hhdHNBcHBVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ3aGF0c2FwcDovL3NlbmQiKXx8KGE9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNtc1VybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNtczoiKSYmZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfKGEpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5kZXhPZigiIyIpOzA8YiYmKGE9YS5zdWJzdHJpbmcoMCxiKSk7Yj1hLm1hdGNoKC9bPyZdYm9keT0vZ2kpO2lmKCFiKXJldHVybiEwO2lmKDE8Yi5sZW5ndGgpcmV0dXJuITE7YT1hLm1hdGNoKC9bPyZdYm9keT0oW14mXSopLylbMV07aWYoIWEpcmV0dXJuITA7dHJ5e2RlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChjKXtyZXR1cm4hMX1yZXR1cm4vXig/OlthLXowLTlcLV8ufl18JVswLTlhLWZdezJ9KSskL2kudGVzdChhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNzaFVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNzaDovLyIpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVDaHJvbWVFeHRlbnNpb25Vcmw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVFeHRlbnNpb25VcmxfKC9eY2hyb21lLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVGaXJlZm94RXh0ZW5zaW9uVXJsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXygvXm1vei1leHRlbnNpb246XC9cLyhbXlwvXSspXC8vLGEsYil9O2dvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRWRnZUV4dGVuc2lvblVybD1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUV4dGVuc2lvblVybF8oL15tcy1icm93c2VyLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Cmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXz1mdW5jdGlvbihhLGIsYyl7KGE9YS5leGVjKGIpKT8oYT1hWzFdLC0xPT0oYyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0P1tnb29nLnN0cmluZy5Db25zdC51bndyYXAoYyldOmMubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBnb29nLnN0cmluZy5Db25zdC51bndyYXAoZCl9KSkuaW5kZXhPZihhKSYmKGI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORykpOmI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tVHJ1c3RlZFJlc291cmNlVXJsPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYSkpfTsKZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pO2dvb2cuaHRtbC5TYWZlVXJsLlNBRkVfVVJMX1BBVFRFUk49Z29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fO2dvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClyZXR1cm4gYTthPSJvYmplY3QiPT10eXBlb2YgYSYmYS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2EuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhhKTtyZXR1cm4gZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fLnRlc3QoYSk/Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpOmdvb2cuaHRtbC5TYWZlVXJsLnRyeUZyb21EYXRhVXJsKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplKGEpfHxnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfVVJMfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQ9ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7aWYoYiYmL15kYXRhOi9pLnRlc3QoYSkmJihiPWdvb2cuaHRtbC5TYWZlVXJsLmZyb21EYXRhVXJsKGEpLGIuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpPT1hKSlyZXR1cm4gYjtnb29nLmFzc2VydHMuYXNzZXJ0KGdvb2cuaHRtbC5TQUZFX1VSTF9QQVRURVJOXy50ZXN0KGEpLCIlcyBkb2VzIG5vdCBtYXRjaCB0aGUgc2FmZSBVUkwgcGF0dGVybiIsYSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz17fTtnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBnb29nLmh0bWwuU2FmZVVybChhLGdvb2cuaHRtbC5TYWZlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfKX07Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1VSTD1nb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7Z29vZy5odG1sLlNhZmVVcmwuQUJPVVRfQkxBTks9Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJhYm91dDpibGFuayIpO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlV3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT9hOiIiO3RoaXMuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMH1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKCgwLGdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoKShhLCI7IiksYExhc3QgY2hhcmFjdGVyIG9mIHN0eWxlIHN0cmluZyBpcyBub3QgJzsnOiAke2F9YCk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsCiI6IiksIlN0eWxlIHN0cmluZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lICc6JywgdG8gc3BlY2lmeSBhIFwibmFtZTogdmFsdWVcIiBwYWlyOiAiK2EpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV99dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlJiZhLmNvbnN0cnVjdG9yPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV87CigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZVN0eWxlLCBnb3QgJyR7YX1gKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVN0eWxlIn1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlKGEpe2xldCBiPSIiO2ZvcihsZXQgYyBpbiBhKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpKXtpZighL15bLV9hLXpBLVowLTldKyQvLnRlc3QoYykpdGhyb3cgRXJyb3IoYE5hbWUgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05XSwgZ290OiAke2N9YCk7bGV0IGQ9YVtjXTtudWxsIT1kJiYKKGQ9QXJyYXkuaXNBcnJheShkKT9kLm1hcChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUpLmpvaW4oIiAiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoZCksYis9YCR7Y306JHtkfTtgKX1yZXR1cm4gYj9tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYik6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZfXN0YXRpYyBjb25jYXQoYSl7bGV0IGI9IiI7Y29uc3QgYz1kPT57QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goYyk6Yis9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChkKX07QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhcmd1bWVudHMsYyk7CnJldHVybiBiP21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuRU1QVFl9fW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HPSJ6Q2xvc3VyZXoiOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKXJldHVybid1cmwoIicrZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLnJlcGxhY2UoLzwvZywiJTNjIikucmVwbGFjZSgvW1xcIl0vZywiXFwkJiIpKyciKSc7YT1hIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpOm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX3Nhbml0aXplUHJvcGVydHlWYWx1ZVN0cmluZyhTdHJpbmcoYSkpO2lmKC9bezt9XS8udGVzdChhKSl0aHJvdyBuZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiVmFsdWUgZG9lcyBub3QgYWxsb3cgW3s7fV0sIGdvdDogJXMuIixbYV0pO3JldHVybiBhfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWVTdHJpbmcoYSl7Y29uc3QgYj1hLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfVVJMX1JFLCJ1cmwiKTtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRS50ZXN0KGIpKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT01NRU5UX1JFLnRlc3QoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgZGlzYWxsb3dzIGNvbW1lbnRzLCBnb3Q6ICR7YX1gKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORzsKaWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkUXVvdGVzKGEpKXJldHVybigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgU3RyaW5nIHZhbHVlIHJlcXVpcmVzIGJhbGFuY2VkIHF1b3RlcywgZ290OiAke2F9YCksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkc7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkU3F1YXJlQnJhY2tldHMoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKCJTdHJpbmcgdmFsdWUgcmVxdWlyZXMgYmFsYW5jZWQgc3F1YXJlIGJyYWNrZXRzIGFuZCBvbmUgaWRlbnRpZmllciBwZXIgcGFpciBvZiBicmFja2V0cywgZ290OiAiK2EpLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HfWVsc2UgcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgYWxsb3dzIG9ubHkgJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfWArCiIgYW5kIHNpbXBsZSBmdW5jdGlvbnMsIGdvdDogIithKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRRdW90ZXMoYSl7bGV0IGI9ITAsYz0hMDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hLmNoYXJBdChkKTsiJyI9PWUmJmM/Yj0hYjonIic9PWUmJmImJihjPSFjKX1yZXR1cm4gYiYmY30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRTcXVhcmVCcmFja2V0cyhhKXtsZXQgYj0hMDtjb25zdCBjPS9eWy1fYS16QS1aMC05XSQvO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWEuY2hhckF0KGQpO2lmKCJdIj09ZSl7aWYoYilyZXR1cm4hMTtiPSEwfWVsc2UgaWYoIlsiPT1lKXtpZighYilyZXR1cm4hMTtiPSExfWVsc2UgaWYoIWImJiFjLnRlc3QoZSkpcmV0dXJuITF9cmV0dXJuIGJ9CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1ZBTFVFX0FMTE9XRURfQ0hBUlM9IlstLC5cIiclXyEjLyBhLXpBLVowLTlcXFtcXF1dIixtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRT1uZXcgUmVnRXhwKGBeJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfStcJGApLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1VSTF9SRT1SZWdFeHAoIlxcYih1cmxcXChbIFx0XG5dKikoJ1sgLSYoLVxcW1xcXS1+XSonfFwiWyAhIy1cXFtcXF0tfl0qXCJ8WyEjLSYqLVxcW1xcXS1+XSopKFsgXHRcbl0qXFwpKSIsImciKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUz0iY2FsYyBjdWJpYy1iZXppZXIgZml0LWNvbnRlbnQgaHNsIGhzbGEgbGluZWFyLWdyYWRpZW50IG1hdHJpeCBtaW5tYXggcmFkaWFsLWdyYWRpZW50IHJlcGVhdCByZ2IgcmdiYSAocm90YXRlfHNjYWxlfHRyYW5zbGF0ZSkoWHxZfFp8M2QpPyBzdGVwcyB2YXIiLnNwbGl0KCIgIiksCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0ZVTkNUSU9OU19SRT1uZXcgUmVnRXhwKCJcXGIoIittb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUy5qb2luKCJ8IikrIilcXChbLSsqLzAtOWEtekEtWi4lI1xcW1xcXSwgXStcXCkiLCJnIiksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09NTUVOVF9SRT0vXC9cKi87ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl7cmV0dXJuIGEucmVwbGFjZShtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9VUkxfUkUsKGIsYyxkLGUpPT57bGV0IGY9IiI7ZD1kLnJlcGxhY2UoL14oWyciXSkoLiopXDEkLywoZyxoLGspPT57Zj1oO3JldHVybiBrfSk7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShkKS5nZXRUeXBlZFN0cmluZ1ZhbHVlKCk7cmV0dXJuIGMrZitiK2YrZX0pfQpnb29nLmh0bWwuU2FmZVN0eWxlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZTtnb29nLm9iamVjdD17fTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZm9yRWFjaChhLGIsYyl7Zm9yKGNvbnN0IGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbHRlcihhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWIuY2FsbChjLGFbZV0sZSxhKSYmKGRbZV09YVtlXSk7cmV0dXJuIGR9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcChhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWRbZV09Yi5jYWxsKGMsYVtlXSxlLGEpO3JldHVybiBkfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lKGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V2ZXJ5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKCFiLmNhbGwoYyxhW2RdLGQsYSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldENvdW50KGEpe2xldCBiPTA7Zm9yKGNvbnN0IGMgaW4gYSliKys7cmV0dXJuIGJ9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldEFueUtleShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhhLGIpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZShhLGIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0VmFsdWVzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1kO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5cyhhLGIpe3ZhciBjPWdvb2cuaXNBcnJheUxpa2UoYik7Y29uc3QgZD1jP2I6YXJndW1lbnRzO2ZvcihjPWM/MDoxO2M8ZC5sZW5ndGg7YysrKXtpZihudWxsPT1hKXJldHVybjthPWFbZFtjXV19cmV0dXJuIGF9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NvbnRhaW5zS2V5KGEsYil7cmV0dXJuIG51bGwhPT1hJiZiIGluIGF9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWluc1ZhbHVlKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZihhW2NdPT1iKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maW5kS2V5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4gZH1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZFZhbHVlKGEsYixjKXtyZXR1cm4oYj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleShhLGIsYykpJiZhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9pc0VtcHR5KGEpe2Zvcihjb25zdCBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NsZWFyKGEpe2Zvcihjb25zdCBiIGluIGEpZGVsZXRlIGFbYl19CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9yZW1vdmUoYSxiKXtsZXQgYzsoYz1iIGluIGEpJiZkZWxldGUgYVtiXTtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfYWRkKGEsYixjKXtpZihudWxsIT09YSYmYiBpbiBhKXRocm93IEVycm9yKGBUaGUgb2JqZWN0IGFscmVhZHkgY29udGFpbnMgdGhlIGtleSAiJHtifSJgKTttb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0KGEsYixjKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0KGEsYixjKXtyZXR1cm4gbnVsbCE9PWEmJmIgaW4gYT9hW2JdOmN9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldChhLGIsYyl7YVtiXT1jfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zZXRJZlVuZGVmaW5lZChhLGIsYyl7cmV0dXJuIGIgaW4gYT9hW2JdOmFbYl09Y30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0KGEsYixjKXtpZihiIGluIGEpcmV0dXJuIGFbYl07Yz1jKCk7cmV0dXJuIGFbYl09Y31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXF1YWxzKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZighKGMgaW4gYil8fGFbY10hPT1iW2NdKXJldHVybiExO2Zvcihjb25zdCBjIGluIGIpaWYoIShjIGluIGEpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jbG9uZShhKXtjb25zdCBiPXt9O2Zvcihjb25zdCBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdW5zYWZlQ2xvbmUoYSl7aWYoIWF8fCJvYmplY3QiIT09dHlwZW9mIGEpcmV0dXJuIGE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhLmNsb25lKXJldHVybiBhLmNsb25lKCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgTWFwJiZhIGluc3RhbmNlb2YgTWFwKXJldHVybiBuZXcgTWFwKGEpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFNldCYmYSBpbnN0YW5jZW9mIFNldClyZXR1cm4gbmV3IFNldChhKTtpZihhIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2NvbnN0IGI9QXJyYXkuaXNBcnJheShhKT9bXToiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyfHwiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlld3x8IUFycmF5QnVmZmVyLmlzVmlldyhhKXx8YSBpbnN0YW5jZW9mIERhdGFWaWV3P3t9Om5ldyBhLmNvbnN0cnVjdG9yKGEubGVuZ3RoKTtmb3IoY29uc3QgYyBpbiBhKWJbY109Cm1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZShhW2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlKGEpe2NvbnN0IGI9e307Zm9yKGNvbnN0IGMgaW4gYSliW2FbY11dPWM7cmV0dXJuIGJ9Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFM9ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V4dGVuZChhLGIpe2xldCBjLGQ7Zm9yKGxldCBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKGxldCBmPTA7Zjxtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfUFJPVE9UWVBFX0ZJRUxEUy5sZW5ndGg7ZisrKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFNbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZShhKXtjb25zdCBiPWFyZ3VtZW50cy5sZW5ndGg7aWYoMT09YiYmQXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlLmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtpZihiJTIpdGhyb3cgRXJyb3IoIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzIik7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCs9MiljW2FyZ3VtZW50c1tkXV09YXJndW1lbnRzW2QrMV07cmV0dXJuIGN9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jcmVhdGVTZXQoYSl7Y29uc3QgYj1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PWImJkFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldC5hcHBseShudWxsLGFyZ3VtZW50c1swXSk7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbYXJndW1lbnRzW2RdXT0hMDtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldyhhKXtsZXQgYj1hO09iamVjdC5pc0Zyb3plbiYmIU9iamVjdC5pc0Zyb3plbihhKSYmKGI9T2JqZWN0LmNyZWF0ZShhKSxPYmplY3QuZnJlZXplKGIpKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNJbW11dGFibGVWaWV3KGEpe3JldHVybiEhT2JqZWN0LmlzRnJvemVuJiZPYmplY3QuaXNGcm96ZW4oYSl9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzKGEsYixjKXtpZighYSlyZXR1cm5bXTtpZighT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fCFPYmplY3QuZ2V0UHJvdG90eXBlT2YpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpO2NvbnN0IGQ9e307Zm9yKDthJiYoYSE9PU9iamVjdC5wcm90b3R5cGV8fGIpJiYoYSE9PUZ1bmN0aW9uLnByb3RvdHlwZXx8Yyk7KXtjb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGEpO2ZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7ZisrKWRbZVtmXV09ITA7YT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGQpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0U3VwZXJDbGFzcyhhKXtyZXR1cm4oYT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYS5wcm90b3R5cGUpKSYmYS5jb25zdHJ1Y3Rvcn1nb29nLm9iamVjdC5hZGQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2FkZDtnb29nLm9iamVjdC5jbGVhcj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY2xlYXI7Z29vZy5vYmplY3QuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2Nsb25lO2dvb2cub2JqZWN0LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucztnb29nLm9iamVjdC5jb250YWluc0tleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNLZXk7Z29vZy5vYmplY3QuY29udGFpbnNWYWx1ZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZTtnb29nLm9iamVjdC5jcmVhdGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZTsKZ29vZy5vYmplY3QuY3JlYXRlSW1tdXRhYmxlVmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5jcmVhdGVTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldDtnb29nLm9iamVjdC5lcXVhbHM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2VxdWFscztnb29nLm9iamVjdC5ldmVyeT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXZlcnk7Z29vZy5vYmplY3QuZXh0ZW5kPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9leHRlbmQ7Z29vZy5vYmplY3QuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maWx0ZXI7Z29vZy5vYmplY3QuZmluZEtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleTtnb29nLm9iamVjdC5maW5kVmFsdWU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbmRWYWx1ZTtnb29nLm9iamVjdC5mb3JFYWNoPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9mb3JFYWNoOwpnb29nLm9iamVjdC5nZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldDtnb29nLm9iamVjdC5nZXRBbGxQcm9wZXJ0eU5hbWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzO2dvb2cub2JqZWN0LmdldEFueUtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0QW55S2V5O2dvb2cub2JqZWN0LmdldEFueVZhbHVlPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZTtnb29nLm9iamVjdC5nZXRDb3VudD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0Q291bnQ7Z29vZy5vYmplY3QuZ2V0S2V5cz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0S2V5cztnb29nLm9iamVjdC5nZXRTdXBlckNsYXNzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRTdXBlckNsYXNzO2dvb2cub2JqZWN0LmdldFZhbHVlQnlLZXlzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5czsKZ29vZy5vYmplY3QuZ2V0VmFsdWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZXM7Z29vZy5vYmplY3QuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNFbXB0eTtnb29nLm9iamVjdC5pc0ltbXV0YWJsZVZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2lzSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5tYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcDtnb29nLm9iamVjdC5yZW1vdmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3JlbW92ZTtnb29nLm9iamVjdC5zZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldDtnb29nLm9iamVjdC5zZXRJZlVuZGVmaW5lZD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0SWZVbmRlZmluZWQ7Z29vZy5vYmplY3Quc2V0V2l0aFJldHVyblZhbHVlSWZOb3RTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0Owpnb29nLm9iamVjdC5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lO2dvb2cub2JqZWN0LnRyYW5zcG9zZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlO2dvb2cub2JqZWN0LnVuc2FmZUNsb25lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXR7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIGNyZWF0ZVJ1bGUoYSxiKXtpZigoMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYSwiPCIpKXRocm93IEVycm9yKGBTZWxlY3RvciBkb2VzIG5vdCBhbGxvdyAnPCcsIGdvdDogJHthfWApO2NvbnN0IGM9YS5yZXBsYWNlKC8oJ3wiKSgoPyFcMSlbXlxyXG5cZlxcXXxcXFtcc1xTXSkqXDEvZywKIiIpO2lmKCEvXlstX2EtekEtWjAtOSMuOiogLD4rfltcXSgpPV4kfF0rJC8udGVzdChjKSl0aHJvdyBFcnJvcigiU2VsZWN0b3IgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05Iy46KiAsPit+W1xcXSgpPV4kfF0gYW5kIHN0cmluZ3MsIGdvdDogIithKTtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5oYXNCYWxhbmNlZEJyYWNrZXRzXyhjKSl0aHJvdyBFcnJvcigiKCkgYW5kIFtdIGluIHNlbGVjdG9yIG11c3QgYmUgYmFsYW5jZWQsIGdvdDogIithKTtiIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlfHwoYj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlKGIpKTthPWAke2F9e2ArbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChiKS5yZXBsYWNlKC88L2csIlxcM0MgIikrIn0iOwpyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBoYXNCYWxhbmNlZEJyYWNrZXRzXyhhKXtjb25zdCBiPXsiKCI6IikiLCJbIjoiXSJ9LGM9W107Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe2NvbnN0IGU9YVtkXTtpZihiW2VdKWMucHVzaChiW2VdKTtlbHNlIGlmKG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhiLGUpJiZjLnBvcCgpIT1lKXJldHVybiExfXJldHVybiAwPT1jLmxlbmd0aH1zdGF0aWMgY29uY2F0KGEpe2xldCBiPSIiO2NvbnN0IGM9ZD0+e0FycmF5LmlzQXJyYXkoZCk/ZC5mb3JFYWNoKGMpOmIrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGQpfTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGFyZ3VtZW50cywKYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWTsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KSghKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsIjwiKSxgRm9yYmlkZGVuICc8JyBjaGFyYWN0ZXIgaW4gc3R5bGUgc2hlZXQgc3RyaW5nOiAke2F9YCk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX1nZXRUeXBlZFN0cmluZ1ZhbHVlKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVffXN0YXRpYyB1bndyYXAoYSl7aWYoYSBpbnN0YW5jZW9mCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0KXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTdHlsZVNoZWV0LCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlNhZmVTdHlsZVNoZWV0In1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKXtyZXR1cm4gbmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEUpfX0KbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0LmNyZWF0ZVNhZmVTdHlsZVNoZWV0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0O2dvb2cuZG9tLkh0bWxFbGVtZW50PWZ1bmN0aW9uKCl7fTtnb29nLmRvbS5UYWdOYW1lPWNsYXNze3N0YXRpYyBjYXN0KGEsYil7cmV0dXJuIGF9Y29uc3RydWN0b3IoKXt9dG9TdHJpbmcoKXt9fTtnb29nLmRvbS5UYWdOYW1lLkE9IkEiO2dvb2cuZG9tLlRhZ05hbWUuQUJCUj0iQUJCUiI7Z29vZy5kb20uVGFnTmFtZS5BQ1JPTllNPSJBQ1JPTllNIjtnb29nLmRvbS5UYWdOYW1lLkFERFJFU1M9IkFERFJFU1MiO2dvb2cuZG9tLlRhZ05hbWUuQVBQTEVUPSJBUFBMRVQiO2dvb2cuZG9tLlRhZ05hbWUuQVJFQT0iQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5BUlRJQ0xFPSJBUlRJQ0xFIjtnb29nLmRvbS5UYWdOYW1lLkFTSURFPSJBU0lERSI7Z29vZy5kb20uVGFnTmFtZS5BVURJTz0iQVVESU8iO2dvb2cuZG9tLlRhZ05hbWUuQj0iQiI7Z29vZy5kb20uVGFnTmFtZS5CQVNFPSJCQVNFIjtnb29nLmRvbS5UYWdOYW1lLkJBU0VGT05UPSJCQVNFRk9OVCI7Z29vZy5kb20uVGFnTmFtZS5CREk9IkJESSI7Z29vZy5kb20uVGFnTmFtZS5CRE89IkJETyI7Cmdvb2cuZG9tLlRhZ05hbWUuQklHPSJCSUciO2dvb2cuZG9tLlRhZ05hbWUuQkxPQ0tRVU9URT0iQkxPQ0tRVU9URSI7Z29vZy5kb20uVGFnTmFtZS5CT0RZPSJCT0RZIjtnb29nLmRvbS5UYWdOYW1lLkJSPSJCUiI7Z29vZy5kb20uVGFnTmFtZS5CVVRUT049IkJVVFRPTiI7Z29vZy5kb20uVGFnTmFtZS5DQU5WQVM9IkNBTlZBUyI7Z29vZy5kb20uVGFnTmFtZS5DQVBUSU9OPSJDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkNFTlRFUj0iQ0VOVEVSIjtnb29nLmRvbS5UYWdOYW1lLkNJVEU9IkNJVEUiO2dvb2cuZG9tLlRhZ05hbWUuQ09ERT0iQ09ERSI7Z29vZy5kb20uVGFnTmFtZS5DT0w9IkNPTCI7Z29vZy5kb20uVGFnTmFtZS5DT0xHUk9VUD0iQ09MR1JPVVAiO2dvb2cuZG9tLlRhZ05hbWUuQ09NTUFORD0iQ09NTUFORCI7Z29vZy5kb20uVGFnTmFtZS5EQVRBPSJEQVRBIjtnb29nLmRvbS5UYWdOYW1lLkRBVEFMSVNUPSJEQVRBTElTVCI7Z29vZy5kb20uVGFnTmFtZS5ERD0iREQiOwpnb29nLmRvbS5UYWdOYW1lLkRFTD0iREVMIjtnb29nLmRvbS5UYWdOYW1lLkRFVEFJTFM9IkRFVEFJTFMiO2dvb2cuZG9tLlRhZ05hbWUuREZOPSJERk4iO2dvb2cuZG9tLlRhZ05hbWUuRElBTE9HPSJESUFMT0ciO2dvb2cuZG9tLlRhZ05hbWUuRElSPSJESVIiO2dvb2cuZG9tLlRhZ05hbWUuRElWPSJESVYiO2dvb2cuZG9tLlRhZ05hbWUuREw9IkRMIjtnb29nLmRvbS5UYWdOYW1lLkRUPSJEVCI7Z29vZy5kb20uVGFnTmFtZS5FTT0iRU0iO2dvb2cuZG9tLlRhZ05hbWUuRU1CRUQ9IkVNQkVEIjtnb29nLmRvbS5UYWdOYW1lLkZJRUxEU0VUPSJGSUVMRFNFVCI7Z29vZy5kb20uVGFnTmFtZS5GSUdDQVBUSU9OPSJGSUdDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkZJR1VSRT0iRklHVVJFIjtnb29nLmRvbS5UYWdOYW1lLkZPTlQ9IkZPTlQiO2dvb2cuZG9tLlRhZ05hbWUuRk9PVEVSPSJGT09URVIiO2dvb2cuZG9tLlRhZ05hbWUuRk9STT0iRk9STSI7Cmdvb2cuZG9tLlRhZ05hbWUuRlJBTUU9IkZSQU1FIjtnb29nLmRvbS5UYWdOYW1lLkZSQU1FU0VUPSJGUkFNRVNFVCI7Z29vZy5kb20uVGFnTmFtZS5IMT0iSDEiO2dvb2cuZG9tLlRhZ05hbWUuSDI9IkgyIjtnb29nLmRvbS5UYWdOYW1lLkgzPSJIMyI7Z29vZy5kb20uVGFnTmFtZS5IND0iSDQiO2dvb2cuZG9tLlRhZ05hbWUuSDU9Ikg1Ijtnb29nLmRvbS5UYWdOYW1lLkg2PSJINiI7Z29vZy5kb20uVGFnTmFtZS5IRUFEPSJIRUFEIjtnb29nLmRvbS5UYWdOYW1lLkhFQURFUj0iSEVBREVSIjtnb29nLmRvbS5UYWdOYW1lLkhHUk9VUD0iSEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLkhSPSJIUiI7Z29vZy5kb20uVGFnTmFtZS5IVE1MPSJIVE1MIjtnb29nLmRvbS5UYWdOYW1lLkk9IkkiO2dvb2cuZG9tLlRhZ05hbWUuSUZSQU1FPSJJRlJBTUUiO2dvb2cuZG9tLlRhZ05hbWUuSU1HPSJJTUciO2dvb2cuZG9tLlRhZ05hbWUuSU5QVVQ9IklOUFVUIjsKZ29vZy5kb20uVGFnTmFtZS5JTlM9IklOUyI7Z29vZy5kb20uVGFnTmFtZS5JU0lOREVYPSJJU0lOREVYIjtnb29nLmRvbS5UYWdOYW1lLktCRD0iS0JEIjtnb29nLmRvbS5UYWdOYW1lLktFWUdFTj0iS0VZR0VOIjtnb29nLmRvbS5UYWdOYW1lLkxBQkVMPSJMQUJFTCI7Z29vZy5kb20uVGFnTmFtZS5MRUdFTkQ9IkxFR0VORCI7Z29vZy5kb20uVGFnTmFtZS5MST0iTEkiO2dvb2cuZG9tLlRhZ05hbWUuTElOSz0iTElOSyI7Z29vZy5kb20uVGFnTmFtZS5NQUlOPSJNQUlOIjtnb29nLmRvbS5UYWdOYW1lLk1BUD0iTUFQIjtnb29nLmRvbS5UYWdOYW1lLk1BUks9Ik1BUksiO2dvb2cuZG9tLlRhZ05hbWUuTUFUSD0iTUFUSCI7Z29vZy5kb20uVGFnTmFtZS5NRU5VPSJNRU5VIjtnb29nLmRvbS5UYWdOYW1lLk1FTlVJVEVNPSJNRU5VSVRFTSI7Z29vZy5kb20uVGFnTmFtZS5NRVRBPSJNRVRBIjtnb29nLmRvbS5UYWdOYW1lLk1FVEVSPSJNRVRFUiI7Cmdvb2cuZG9tLlRhZ05hbWUuTkFWPSJOQVYiO2dvb2cuZG9tLlRhZ05hbWUuTk9GUkFNRVM9Ik5PRlJBTUVTIjtnb29nLmRvbS5UYWdOYW1lLk5PU0NSSVBUPSJOT1NDUklQVCI7Z29vZy5kb20uVGFnTmFtZS5PQkpFQ1Q9Ik9CSkVDVCI7Z29vZy5kb20uVGFnTmFtZS5PTD0iT0wiO2dvb2cuZG9tLlRhZ05hbWUuT1BUR1JPVVA9Ik9QVEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLk9QVElPTj0iT1BUSU9OIjtnb29nLmRvbS5UYWdOYW1lLk9VVFBVVD0iT1VUUFVUIjtnb29nLmRvbS5UYWdOYW1lLlA9IlAiO2dvb2cuZG9tLlRhZ05hbWUuUEFSQU09IlBBUkFNIjtnb29nLmRvbS5UYWdOYW1lLlBJQ1RVUkU9IlBJQ1RVUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJFPSJQUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJPR1JFU1M9IlBST0dSRVNTIjtnb29nLmRvbS5UYWdOYW1lLlE9IlEiO2dvb2cuZG9tLlRhZ05hbWUuUlA9IlJQIjtnb29nLmRvbS5UYWdOYW1lLlJUPSJSVCI7Cmdvb2cuZG9tLlRhZ05hbWUuUlRDPSJSVEMiO2dvb2cuZG9tLlRhZ05hbWUuUlVCWT0iUlVCWSI7Z29vZy5kb20uVGFnTmFtZS5TPSJTIjtnb29nLmRvbS5UYWdOYW1lLlNBTVA9IlNBTVAiO2dvb2cuZG9tLlRhZ05hbWUuU0NSSVBUPSJTQ1JJUFQiO2dvb2cuZG9tLlRhZ05hbWUuU0VDVElPTj0iU0VDVElPTiI7Z29vZy5kb20uVGFnTmFtZS5TRUxFQ1Q9IlNFTEVDVCI7Z29vZy5kb20uVGFnTmFtZS5TTUFMTD0iU01BTEwiO2dvb2cuZG9tLlRhZ05hbWUuU09VUkNFPSJTT1VSQ0UiO2dvb2cuZG9tLlRhZ05hbWUuU1BBTj0iU1BBTiI7Z29vZy5kb20uVGFnTmFtZS5TVFJJS0U9IlNUUklLRSI7Z29vZy5kb20uVGFnTmFtZS5TVFJPTkc9IlNUUk9ORyI7Z29vZy5kb20uVGFnTmFtZS5TVFlMRT0iU1RZTEUiO2dvb2cuZG9tLlRhZ05hbWUuU1VCPSJTVUIiO2dvb2cuZG9tLlRhZ05hbWUuU1VNTUFSWT0iU1VNTUFSWSI7Z29vZy5kb20uVGFnTmFtZS5TVVA9IlNVUCI7Cmdvb2cuZG9tLlRhZ05hbWUuU1ZHPSJTVkciO2dvb2cuZG9tLlRhZ05hbWUuVEFCTEU9IlRBQkxFIjtnb29nLmRvbS5UYWdOYW1lLlRCT0RZPSJUQk9EWSI7Z29vZy5kb20uVGFnTmFtZS5URD0iVEQiO2dvb2cuZG9tLlRhZ05hbWUuVEVNUExBVEU9IlRFTVBMQVRFIjtnb29nLmRvbS5UYWdOYW1lLlRFWFRBUkVBPSJURVhUQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5URk9PVD0iVEZPT1QiO2dvb2cuZG9tLlRhZ05hbWUuVEg9IlRIIjtnb29nLmRvbS5UYWdOYW1lLlRIRUFEPSJUSEVBRCI7Z29vZy5kb20uVGFnTmFtZS5USU1FPSJUSU1FIjtnb29nLmRvbS5UYWdOYW1lLlRJVExFPSJUSVRMRSI7Z29vZy5kb20uVGFnTmFtZS5UUj0iVFIiO2dvb2cuZG9tLlRhZ05hbWUuVFJBQ0s9IlRSQUNLIjtnb29nLmRvbS5UYWdOYW1lLlRUPSJUVCI7Z29vZy5kb20uVGFnTmFtZS5VPSJVIjtnb29nLmRvbS5UYWdOYW1lLlVMPSJVTCI7Z29vZy5kb20uVGFnTmFtZS5WQVI9IlZBUiI7Cmdvb2cuZG9tLlRhZ05hbWUuVklERU89IlZJREVPIjtnb29nLmRvbS5UYWdOYW1lLldCUj0iV0JSIjtnb29nLmxhYnM9e307Z29vZy5sYWJzLnVzZXJBZ2VudD17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9VU0VfQ0xJRU5UX0hJTlRTX09WRVJSSURFPSIiLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFM9ITE7bGV0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X2ZvcmNlQ2xpZW50SGludHNJblRlc3RzPSExO2dvb2cubGFicy51c2VyQWdlbnQuc2V0VXNlQ2xpZW50SGludHNGb3JUZXN0aW5nPWE9Pnttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cz1hfTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfdXNlQ2xpZW50SGludHNSdW50aW1lT3ZlcnJpZGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfVVNFX0NMSUVOVF9ISU5UU19PVkVSUklERT8hIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFNfT1ZFUlJJREUpOiExO2dvb2cubGFicy51c2VyQWdlbnQudXNlQ2xpZW50SGludHM9KCk9Pm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFN8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X3VzZUNsaWVudEhpbnRzUnVudGltZU92ZXJyaWRlfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cztnb29nLmxhYnMudXNlckFnZW50LnV0aWw9e307Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9BU1NVTUVfQ0xJRU5UX0hJTlRTX1NVUFBPUlQ9ITE7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKXt2YXIgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdmlnYXRvcigpO3JldHVybiBhJiYoYT1hLnVzZXJBZ2VudCk/YToiIn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudERhdGEoKXtjb25zdCBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCk7cmV0dXJuIGE/YS51c2VyQWdlbnREYXRhfHxudWxsOm51bGx9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLm5hdmlnYXRvcn1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnRJbnRlcm5hbD1udWxsLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudChhKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsPSJzdHJpbmciPT09dHlwZW9mIGE/YTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZygpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCl7cmV0dXJuIG51bGw9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50SW50ZXJuYWw/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudERhdGEoYSl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnREYXRhSW50ZXJuYWw9YX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3Jlc2V0VXNlckFnZW50RGF0YSgpe21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudERhdGFJbnRlcm5hbH0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChhKXtpZighKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiBiP2IuYnJhbmRzLnNvbWUoKHticmFuZDpjfSk9PmMmJigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKShjLGEpKTohMX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KGEpe2NvbnN0IGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtyZXR1cm4oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYixhKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoYSl7Y29uc3QgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudCgpO3JldHVybigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zKShiLGEpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXMoYSl7Y29uc3QgYj1SZWdFeHAoIihbQS1aXVtcXHcgXSspLyhbXlxcc10rKVxccyooPzpcXCgoLio/KVxcKSk/IiwiZyIpLGM9W107bGV0IGQ7Zm9yKDtkPWIuZXhlYyhhKTspYy5wdXNoKFtkWzFdLGRbMl0sZFszXXx8dm9pZCAwXSk7cmV0dXJuIGN9Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLkFTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX0FTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmV4dHJhY3RWZXJzaW9uVHVwbGVzPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXM7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldE5hdGl2ZVVzZXJBZ2VudFN0cmluZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZztnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50O2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50RGF0YUJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50SWdub3JlQ2FzZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50SWdub3JlQ2FzZTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwucmVzZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfcmVzZXRVc2VyQWdlbnREYXRhO2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5zZXRVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnNldFVzZXJBZ2VudERhdGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnREYXRhO3ZhciBtb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5VmFsdWU9e0FzeW5jVmFsdWU6Y2xhc3N7Z2V0SWZMb2FkZWQoKXt9bG9hZCgpe319LEhpZ2hFbnRyb3B5VmFsdWU6Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rZXlfPWE7dGhpcy5wcm9taXNlXz10aGlzLnZhbHVlXz12b2lkIDA7dGhpcy5wZW5kaW5nXz0hMX1nZXRJZkxvYWRlZCgpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpKXJldHVybiB0aGlzLnZhbHVlX31hc3luYyBsb2FkKCl7Y29uc3QgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKTtpZihhKXJldHVybiB0aGlzLnByb21pc2VffHwodGhpcy5wZW5kaW5nXz0hMCx0aGlzLnByb21pc2VfPShhc3luYygpPT57dHJ5e3JldHVybiB0aGlzLnZhbHVlXz0oYXdhaXQgYS5nZXRIaWdoRW50cm9weVZhbHVlcyhbdGhpcy5rZXlfXSkpW3RoaXMua2V5X119ZmluYWxseXt0aGlzLnBlbmRpbmdfPQohMX19KSgpKSxhd2FpdCB0aGlzLnByb21pc2VffXJlc2V0Rm9yVGVzdGluZygpe2lmKHRoaXMucGVuZGluZ18pdGhyb3cgRXJyb3IoIlVuc2FmZSBjYWxsIHRvIHJlc2V0Rm9yVGVzdGluZyIpO3RoaXMudmFsdWVfPXRoaXMucHJvbWlzZV89dm9pZCAwO3RoaXMucGVuZGluZ189ITF9fSxWZXJzaW9uOmNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMudmVyc2lvblN0cmluZ189YX10b1ZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKCl7cmV0dXJuIHRoaXMudmVyc2lvblN0cmluZ199aXNBdExlYXN0KGEpe3JldHVybiAwPD0oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlVmVyc2lvbnMpKHRoaXMudmVyc2lvblN0cmluZ18sYSl9fX07dmFyIG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhPXt9O21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdD1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoImZ1bGxWZXJzaW9uTGlzdCIpO21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLnBsYXRmb3JtVmVyc2lvbj1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoInBsYXRmb3JtVmVyc2lvbiIpO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlcj17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kPXtBTkRST0lEX0JST1dTRVI6IkFuZHJvaWQgQnJvd3NlciIsQ0hST01JVU06IkNocm9taXVtIixFREdFOiJNaWNyb3NvZnQgRWRnZSIsRklSRUZPWDoiRmlyZWZveCIsSUU6IkludGVybmV0IEV4cGxvcmVyIixPUEVSQToiT3BlcmEiLFNBRkFSSToiU2FmYXJpIixTSUxLOiJTaWxrIn07Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLkJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKGE9ITEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfQVNTVU1FX0NMSUVOVF9ISU5UU19TVVBQT1JUKXJldHVybiEwO2lmKCFhJiYhKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTthPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiEhYSYmMDxhLmJyYW5kcy5sZW5ndGh9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaGFzRnVsbFZlcnNpb25MaXN0KCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdExlYXN0KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU0sOTgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIk9wZXJhIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlRyaWRlbnQiKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiTVNJRSIpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkVkZ2UiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5FREdFKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJFZGcvIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLk9QRVJBKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJPUFIiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiRmlyZWZveCIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJGeGlPUyIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoU2FmYXJpKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNhZmFyaSIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0KCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bSgpfHwKbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3QoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoKT8hMTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDb2FzdCIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldygpe3JldHVybihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJpUGFkIil8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoImlQaG9uZSIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hTYWZhcmkoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDb2FzdCgpJiYhbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQXBwbGVXZWJLaXQiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5DSFJPTUlVTSk6KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkNocm9tZSIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDcmlPUyIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXIoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCkpfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNPcGVyYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmE7Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzSUU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0lFPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzT3BlcmFDaHJvbWl1bT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYUNocm9taXVtPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRmlyZWZveD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRmlyZWZveDtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNGaXJlZm94PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ29hc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0Owpnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDb2FzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3Q7Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0lvc1dlYnZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElvc1dlYnZpZXc7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSW9zV2Vidmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldztjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBbmRyb2lkQnJvd3Nlcj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXI7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQW5kcm9pZEJyb3dzZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEFuZHJvaWRCcm93c2VyO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNpbGsiKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTaWxrPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2NyZWF0ZVZlcnNpb25NYXAoYSl7Y29uc3QgYj17fTthLmZvckVhY2goYz0+e2JbY1swXV09Y1sxXX0pO3JldHVybiBjPT5iW2MuZmluZChkPT5kIGluIGIpXXx8IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbigpe3ZhciBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCk7aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCkpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0SUVWZXJzaW9uKGEpO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9leHRyYWN0VmVyc2lvblR1cGxlcyhhKTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfY3JlYXRlVmVyc2lvbk1hcChhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCk/YihbIlZlcnNpb24iLCJPcGVyYSJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKT8KYihbIkVkZ2UiXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpP2IoWyJFZGciXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKT9iKFsiU2lsayJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ2hyb21lKCk/YihbIkNocm9tZSIsIkNyaU9TIiwiSGVhZGxlc3NDaHJvbWUiXSk6KGE9YVsyXSkmJmFbMV18fCIifWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcihhKXtyZXR1cm4gMDw9KDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zKShtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb24oKSxhKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNWZXJzaW9uT3JIaWdoZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYSl7dmFyIGI9L3J2OiAqKFtcZFwuXSopLy5leGVjKGEpO2lmKGImJmJbMV0pcmV0dXJuIGJbMV07Yj0iIjtjb25zdCBjPS9NU0lFICsoW1xkXC5dKykvLmV4ZWMoYSk7aWYoYyYmY1sxXSlpZihhPS9UcmlkZW50XC8oXGQuXGQpLy5leGVjKGEpLCI3LjAiPT1jWzFdKWlmKGEmJmFbMV0pc3dpdGNoKGFbMV0pe2Nhc2UgIjQuMCI6Yj0iOC4wIjticmVhaztjYXNlICI1LjAiOmI9IjkuMCI7YnJlYWs7Y2FzZSAiNi4wIjpiPSIxMC4wIjticmVhaztjYXNlICI3LjAiOmI9IjExLjAifWVsc2UgYj0iNy4wIjtlbHNlIGI9Y1sxXTtyZXR1cm4gYn0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtpZihhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5JRSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYik6IiI7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2V4dHJhY3RWZXJzaW9uVHVwbGVzKGIpO2NvbnN0IGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9jcmVhdGVWZXJzaW9uTWFwKGIpO3N3aXRjaChhKXtjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuT1BFUkE6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCkpcmV0dXJuIGMoWyJWZXJzaW9uIiwKIk9wZXJhIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCkpcmV0dXJuIGMoWyJPUFIiXSk7YnJlYWs7Y2FzZSBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkVER0U6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VIdG1sKCkpcmV0dXJuIGMoWyJFZGdlIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlQ2hyb21pdW0oKSlyZXR1cm4gYyhbIkVkZyJdKTticmVhaztjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU06aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpKXJldHVybiBjKFsiQ2hyb21lIiwiQ3JpT1MiLCJIZWFkbGVzc0Nocm9tZSJdKX1yZXR1cm4gYT09PQptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkZJUkVGT1gmJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94KCl8fGE9PT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLlNBRkFSSSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaSgpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5BTkRST0lEX0JST1dTRVImJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hBbmRyb2lkQnJvd3NlcigpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLJiZtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpPyhhPWJbMl0pJiYKYVsxXXx8IiI6IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdmVyc2lvbk9mXyhhKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpJiZhIT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLKXt2YXIgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmN9KT0+Yz09PWEpO2lmKCFifHwhYi52ZXJzaW9uKXJldHVybiBOYU47Yj1iLnZlcnNpb24uc3BsaXQoIi4iKX1lbHNle2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSk7aWYoIiI9PT1iKXJldHVybiBOYU47Yj1iLnNwbGl0KCIuIil9cmV0dXJuIDA9PT1iLmxlbmd0aD9OYU46TnVtYmVyKGJbMF0pfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk+PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRMZWFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0F0TW9zdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk8PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRNb3N0PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdE1vc3Q7CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfSGlnaEVudHJvcHlCcmFuZFZlcnNpb257Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuYnJhbmRfPWE7dGhpcy52ZXJzaW9uXz1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYyk7dGhpcy51c2VVYWNoXz1ifWdldElmTG9hZGVkKCl7aWYodGhpcy51c2VVYWNoXyl7dmFyIGE9bW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmdldElmTG9hZGVkKCk7aWYodm9pZCAwIT09YSlyZXR1cm4gYT1hLmZpbmQoKHticmFuZDpifSk9PnRoaXMuYnJhbmRfPT09YiksKDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYSksbmV3IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlWYWx1ZS5WZXJzaW9uKGEudmVyc2lvbil9aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkKXJldHVybiB0aGlzLnZlcnNpb25ffWFzeW5jIGxvYWQoKXtpZih0aGlzLnVzZVVhY2hfKXt2YXIgYT0KYXdhaXQgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmxvYWQoKTtpZih2b2lkIDAhPT1hKXJldHVybiBhPWEuZmluZCgoe2JyYW5kOmJ9KT0+dGhpcy5icmFuZF89PT1iKSwoMCxnb29nLmFzc2VydHMuYXNzZXJ0RXhpc3RzKShhKSxuZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYS52ZXJzaW9uKX1lbHNlIGF3YWl0IDA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwO3JldHVybiB0aGlzLnZlcnNpb25ffX1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSExOwphc3luYyBmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2xvYWRGdWxsVmVyc2lvbnMoKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCghMCkmJmF3YWl0IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdC5sb2FkKCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwfWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5sb2FkRnVsbFZlcnNpb25zPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbG9hZEZ1bGxWZXJzaW9uczsKZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLnJlc2V0Rm9yVGVzdGluZz0oKT0+e21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfcHJlVWFjaEhhc0xvYWRlZD0hMTttb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5RGF0YS5mdWxsVmVyc2lvbkxpc3QucmVzZXRGb3JUZXN0aW5nKCl9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2Z1bGxWZXJzaW9uT2YoYSl7bGV0IGI9IiI7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9oYXNGdWxsVmVyc2lvbkxpc3QoKXx8KGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSkpO2NvbnN0IGM9YSE9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuU0lMSyYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoITApO2lmKGMpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmR9KT0+ZD09PWEpKXJldHVybn1lbHNlIGlmKCIiPT09YilyZXR1cm47cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0hpZ2hFbnRyb3B5QnJhbmRWZXJzaW9uKGEsCmMsYil9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmZ1bGxWZXJzaW9uT2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKGEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCEwKSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mKGEpO2lmKGIpe2lmKGI9Yi5nZXRJZkxvYWRlZCgpKXJldHVybiBiLnRvVmVyc2lvblN0cmluZ0ZvckxvZ2dpbmcoKTtiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpLmJyYW5kcy5maW5kKCh7YnJhbmQ6Y30pPT5jPT09YSk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYik7cmV0dXJuIGIudmVyc2lvbn1yZXR1cm4iIn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl9Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uU3RyaW5nRm9yTG9nZ2luZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nO2dvb2cuZG9tLnRhZ3M9e307Z29vZy5kb20udGFncy5WT0lEX1RBR1NfPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH07Z29vZy5kb20udGFncy5pc1ZvaWRUYWc9ZnVuY3Rpb24oYSl7cmV0dXJuITA9PT1nb29nLmRvbS50YWdzLlZPSURfVEFHU19bYV19O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT17fTsKY2xhc3MgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfPWI9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU/YToiIjt0aGlzLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITB9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChhKS50b1N0cmluZygpfXN0YXRpYyB1bndyYXBUcnVzdGVkSFRNTChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbCYmCmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbChgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZUh0bWwsIGdvdCAnJHthfScgb2YgdHlwZSBgK2dvb2cudHlwZU9mKGEpKTtyZXR1cm4idHlwZV9lcnJvcjpTYWZlSHRtbCJ9c3RhdGljIGh0bWxFc2NhcGUoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKGEpKX1zdGF0aWMgaHRtbEVzY2FwZVByZXNlcnZpbmdOZXdsaW5lcyhhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbClyZXR1cm4gYTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGh0bWxFc2NhcGVQcmVzZXJ2aW5nTmV3bGluZXNBbmRTcGFjZXMoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmh0bWxFc2NhcGUoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbW1lbnQoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiXHgzYyEtLSIrCmdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSkrIi0tXHgzZSIpfXN0YXRpYyBjcmVhdGUoYSxiLGMpe21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudmVyaWZ5VGFnTmFtZShTdHJpbmcoYSkpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoU3RyaW5nKGEpLGIsYyl9c3RhdGljIHZlcmlmeVRhZ05hbWUoYSl7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfVkFMSURfTkFNRVNfSU5fVEFHLnRlc3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YEludmFsaWQgdGFnIG5hbWUgPCR7YX0+LmA6IiIpO2lmKGEudG9VcHBlckNhc2UoKWluIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfTk9UX0FMTE9XRURfVEFHX05BTUVTKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgVGFnIG5hbWUgPCR7YX0+IGlzIG5vdCBhbGxvd2VkIGZvciBTYWZlSHRtbC5gOiIiKTt9c3RhdGljIGNyZWF0ZUlmcmFtZShhLGIsYyxkKXthJiZnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChhKTtjb25zdCBlPXt9O2Uuc3JjPWF8fG51bGw7ZS5zcmNkb2M9YiYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYik7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse3NhbmRib3g6IiJ9LGMpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoImlmcmFtZSIsYSxkKX1zdGF0aWMgY3JlYXRlU2FuZGJveElmcmFtZShhLGIsYyxkKXtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jYW5Vc2VTYW5kYm94SWZyYW1lKCkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/CiJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHNhbmRib3hlZCBpZnJhbWVzLiI6IiIpO2NvbnN0IGU9e307ZS5zcmM9YT9nb29nLmh0bWwuU2FmZVVybC51bndyYXAoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemUoYSkpOm51bGw7ZS5zcmNkb2M9Ynx8bnVsbDtlLnNhbmRib3g9IiI7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse30sYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiaWZyYW1lIixhLGQpfXN0YXRpYyBjYW5Vc2VTYW5kYm94SWZyYW1lKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLkhUTUxJRnJhbWVFbGVtZW50JiYic2FuZGJveCJpbiBnb29nLmdsb2JhbC5IVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGV9c3RhdGljIGNyZWF0ZVNjcmlwdFNyYyhhLGIpe2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGEpOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXMoe3NyYzphfSx7fSxiKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGEpfXN0YXRpYyBjcmVhdGVTY3JpcHQoYSxiKXtmb3IodmFyIGMgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixjKSl7dmFyIGQ9Yy50b0xvd2VyQ2FzZSgpO2lmKCJsYW5ndWFnZSI9PWR8fCJzcmMiPT1kfHwidGV4dCI9PWQpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YENhbm5vdCBzZXQgIiR7ZH0iIGF0dHJpYnV0ZWA6IiIpO31jPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihkPTA7ZDwKYS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcChhW2RdKTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGIsYSl9c3RhdGljIGNyZWF0ZVN0eWxlKGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKHt0eXBlOiJ0ZXh0L2NzcyJ9LHt9LGIpO2xldCBjPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGFbZF0pOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzdHlsZSIsYixhKX1zdGF0aWMgY3JlYXRlTWV0YVJlZnJlc2goYSxiKXthPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShhKSk7KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKSkmJmdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEsIjsiKSYmKGE9IiciK2EucmVwbGFjZSgvJy9nLCIlMjciKSsiJyIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIm1ldGEiLAp7Imh0dHAtZXF1aXYiOiJyZWZyZXNoIixjb250ZW50OihifHwwKSsiOyB1cmw9IithfSl9c3RhdGljIGpvaW4oYSxiKXthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtjb25zdCBjPVtdLGQ9ZT0+e0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGQpOihlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShlKSxjLnB1c2gobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoZSkpKX07Yi5mb3JFYWNoKGQpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYy5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbmNhdChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU1QVFksCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfXN0YXRpYyBjcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVIVE1MKGEpOmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhLGIsYyl7Yj1gPCR7YX1gK21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpO251bGw9PWM/Yz1bXTpBcnJheS5pc0FycmF5KGMpfHwoYz1bY10pO2dvb2cuZG9tLnRhZ3MuaXNWb2lkVGFnKGEudG9Mb3dlckNhc2UoKSk/Cihnb29nLmFzc2VydHMuYXNzZXJ0KCFjLmxlbmd0aCxgVm9pZCB0YWcgPCR7YX0+IGRvZXMgbm90IGFsbG93IGNvbnRlbnQuYCksYis9Ij4iKTooYz1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbmNhdChjKSxiKz0iPiIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYykrIjwvIithKyI+Iik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpe2xldCBjPSIiO2lmKGIpZm9yKGxldCBkIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZCkpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1ZBTElEX05BTUVTX0lOX1RBRy50ZXN0KGQpKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgSW52YWxpZCBhdHRyaWJ1dGUgbmFtZSAiJHtkfSIuYDoiIik7Y29uc3QgZT1iW2RdO251bGwhPWUmJihjKz0iICIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRBdHRyTmFtZUFuZFZhbHVlKGEsZCxlKSl9cmV0dXJuIGN9c3RhdGljIGNvbWJpbmVBdHRyaWJ1dGVzKGEsYixjKXtjb25zdCBkPXt9O2Zvcih2YXIgZSBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGUpJiYoZ29vZy5hc3NlcnRzLmFzc2VydChlLnRvTG93ZXJDYXNlKCk9PWUsIk11c3QgYmUgbG93ZXIgY2FzZSIpLGRbZV09YVtlXSk7Zm9yKGNvbnN0IGYgaW4gYilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixmKSYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQoZi50b0xvd2VyQ2FzZSgpPT1mLCJNdXN0IGJlIGxvd2VyIGNhc2UiKSxkW2ZdPWJbZl0pO2lmKGMpZm9yKGNvbnN0IGYgaW4gYylpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYywKZikpe2U9Zi50b0xvd2VyQ2FzZSgpO2lmKGUgaW4gYSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz9gQ2Fubm90IG92ZXJyaWRlICIke2V9IiBhdHRyaWJ1dGUsIGdvdCAiYCtmKyciIHdpdGggdmFsdWUgIicrY1tmXSsnIic6IiIpO2UgaW4gYiYmZGVsZXRlIGRbZV07ZFtmXT1jW2ZdfXJldHVybiBkfX1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz1nb29nLkRFQlVHO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuU1VQUE9SVF9TVFlMRV9BVFRSSUJVVEU9ITA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5mcm9tPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9WQUxJRF9OQU1FU19JTl9UQUc9L15bYS16QS1aMC05LV0rJC8sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUz17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9OT1RfQUxMT1dFRF9UQUdfTkFNRVM9e1tnb29nLmRvbS5UYWdOYW1lLkFQUExFVF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuQkFTRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuRU1CRURdOiEwLFtnb29nLmRvbS5UYWdOYW1lLklGUkFNRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTElOS106ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUFUSF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUVUQV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuT0JKRUNUXTohMCxbZ29vZy5kb20uVGFnTmFtZS5TQ1JJUFRdOiEwLApbZ29vZy5kb20uVGFnTmFtZS5TVFlMRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuU1ZHXTohMCxbZ29vZy5kb20uVGFnTmFtZS5URU1QTEFURV06ITB9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldEF0dHJOYW1lQW5kVmFsdWUoYSxiLGMpe2lmKGMgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCljPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChjKTtlbHNlIGlmKCJzdHlsZSI9PWIudG9Mb3dlckNhc2UoKSlpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLlNVUFBPUlRfU1RZTEVfQVRUUklCVVRFKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRTdHlsZVZhbHVlKGMpO2Vsc2UgdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J0F0dHJpYnV0ZSAic3R5bGUiIG5vdCBzdXBwb3J0ZWQuJzoiIik7ZWxzZXtpZigvXm9uL2kudGVzdChiKSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz8KYEF0dHJpYnV0ZSAiJHtifWArJyIgcmVxdWlyZXMgZ29vZy5zdHJpbmcuQ29uc3QgdmFsdWUsICInK2MrJyIgZ2l2ZW4uJzoiIik7aWYoYi50b0xvd2VyQ2FzZSgpaW4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUylpZihjIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCljPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGMpO2Vsc2UgaWYoYyBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKWM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGMpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYyljPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKGMpLmdldFR5cGVkU3RyaW5nVmFsdWUoKTtlbHNlIHRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTP2BBdHRyaWJ1dGUgIiR7Yn0iIG9uIHRhZyAiJHthfWArJyIgcmVxdWlyZXMgZ29vZy5odG1sLlNhZmVVcmwsIGdvb2cuc3RyaW5nLkNvbnN0LCBvciBzdHJpbmcsIHZhbHVlICInKwpjKyciIGdpdmVuLic6IiIpO31jLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmcmJihjPWMuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpKTtnb29nLmFzc2VydHMuYXNzZXJ0KCJzdHJpbmciPT09dHlwZW9mIGN8fCJudW1iZXIiPT09dHlwZW9mIGMsIlN0cmluZyBvciBudW1iZXIgdmFsdWUgZXhwZWN0ZWQsIGdvdCAiK3R5cGVvZiBjKyIgd2l0aCB2YWx1ZTogIitjKTtyZXR1cm5gJHtifT0iYCtnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKFN0cmluZyhjKSkrJyInfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldFN0eWxlVmFsdWUoYSl7aWYoIWdvb2cuaXNPYmplY3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J1RoZSAic3R5bGUiIGF0dHJpYnV0ZSByZXF1aXJlcyBnb29nLmh0bWwuU2FmZVN0eWxlIG9yIG1hcCBvZiBzdHlsZSBwcm9wZXJ0aWVzLCAnK3R5cGVvZiBhKyIgZ2l2ZW46ICIrYToiIik7YSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXx8KGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLmNyZWF0ZShhKSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYSl9Cm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRE9DVFlQRV9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiPCFET0NUWVBFIGh0bWw+Iil9KCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbChnb29nLmdsb2JhbC50cnVzdGVkVHlwZXMmJmdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eUhUTUx8fCIiLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURSk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5CUj1mdW5jdGlvbigpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIjxicj4iKX0oKTsKZ29vZy5odG1sLlNhZmVIdG1sPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWw7Z29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zPXt9O2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU2NyaXB0RnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVTdHlsZUZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU3R5bGVTaGVldEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnRydXN0ZWRSZXNvdXJjZVVybEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9O2dvb2cuZG9tLnNhZmU9e307Z29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbj17QUZURVJCRUdJTjoiYWZ0ZXJiZWdpbiIsQUZURVJFTkQ6ImFmdGVyZW5kIixCRUZPUkVCRUdJTjoiYmVmb3JlYmVnaW4iLEJFRk9SRUVORDoiYmVmb3JlZW5kIn07Z29vZy5kb20uc2FmZS5pbnNlcnRBZGphY2VudEh0bWw9ZnVuY3Rpb24oYSxiLGMpe2EuaW5zZXJ0QWRqYWNlbnRIVE1MKGIsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChjKSl9O2dvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTXz17TUFUSDohMCxTQ1JJUFQ6ITAsU1RZTEU6ITAsU1ZHOiEwLFRFTVBMQVRFOiEwfTsKZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfPWdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWUoZnVuY3Rpb24oKXtpZihnb29nLkRFQlVHJiYidW5kZWZpbmVkIj09PXR5cGVvZiBkb2N1bWVudClyZXR1cm4hMTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2EuYXBwZW5kQ2hpbGQoYik7aWYoZ29vZy5ERUJVRyYmIWEuZmlyc3RDaGlsZClyZXR1cm4hMTtiPWEuZmlyc3RDaGlsZC5maXJzdENoaWxkO2EuaW5uZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWSk7cmV0dXJuIWIucGFyZW50RWxlbWVudH0pOwpnb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfKCkpZm9yKDthLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmxhc3RDaGlsZCk7YS5pbm5lckhUTUw9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0SW5uZXJIdG1sPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZhLnRhZ05hbWUpe3ZhciBjPWEudGFnTmFtZS50b1VwcGVyQ2FzZSgpO2lmKGdvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTX1tjXSl0aHJvdyBFcnJvcigiZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGNvbnRlbnQgb2YgIithLnRhZ05hbWUrIi4iKTt9Z29vZy5kb20uc2FmZS51bnNhZmVTZXRJbm5lckh0bWxEb05vdFVzZU9yRWxzZShhLGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWxGcm9tQ29uc3RhbnQ9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChhLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJDb25zdGFudCBIVE1MIHRvIGJlIGltbWVkaWF0ZWxseSB1c2VkLiIpLGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChiKSkpfTtnb29nLmRvbS5zYWZlLnNldE91dGVySHRtbD1mdW5jdGlvbihhLGIpe2Eub3V0ZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwoYil9Owpnb29nLmRvbS5zYWZlLnNldEZvcm1FbGVtZW50QWN0aW9uPWZ1bmN0aW9uKGEsYil7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZvcm1FbGVtZW50KGEpLmFjdGlvbj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuc2V0QnV0dG9uRm9ybUFjdGlvbj1mdW5jdGlvbihhLGIpe2I9YiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP2I6Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQoYik7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxCdXR0b25FbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbnB1dEZvcm1BY3Rpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldFN0eWxlPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5jc3NUZXh0PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuZG9jdW1lbnRXcml0ZT1mdW5jdGlvbihhLGIpe2Eud3JpdGUobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSl9Owpnb29nLmRvbS5zYWZlLnNldEFuY2hvckhyZWY9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEFuY2hvckVsZW1lbnQoYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmhyZWY9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEF1ZGlvU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBdWRpb0VsZW1lbnQoYSk7aWYoIShiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpKXt2YXIgYz0vXmRhdGE6YXVkaW9cLy9pLnRlc3QoYik7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiLGMpfWEuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0VmlkZW9TcmM9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudChhKTtpZighKGIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBjPS9eZGF0YTp2aWRlb1wvL2kudGVzdChiKTtiPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIsYyl9YS5zcmM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEVtYmVkU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxFbWJlZEVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldEZyYW1lU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYil9Owpnb29nLmRvbS5zYWZlLnNldElmcmFtZVNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSUZyYW1lRWxlbWVudChhKTthLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKX07Z29vZy5kb20uc2FmZS5zZXRJZnJhbWVTcmNkb2M9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQoYSk7YS5zcmNkb2M9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0TGlua0hyZWZBbmRSZWw9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MTGlua0VsZW1lbnQoYSk7YS5yZWw9Yztnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucyhjLCJzdHlsZXNoZWV0Iik/KGdvb2cuYXNzZXJ0cy5hc3NlcnQoYiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwsJ1VSTCBtdXN0IGJlIFRydXN0ZWRSZXNvdXJjZVVybCBiZWNhdXNlICJyZWwiIGNvbnRhaW5zICJzdHlsZXNoZWV0IicpLGEuaHJlZj1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKSwoYj1nb29nLmRvbS5zYWZlLmdldFN0eWxlTm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKSYmYS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixiKSk6YS5ocmVmPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsP2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGIpOgpiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpOmdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKSl9O2dvb2cuZG9tLnNhZmUuc2V0T2JqZWN0RGF0YT1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudChhKTthLmRhdGE9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldFNjcmlwdFNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MU2NyaXB0RWxlbWVudChhKTtnb29nLmRvbS5zYWZlLnNldE5vbmNlRm9yU2NyaXB0RWxlbWVudF8oYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRDb250ZW50PWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxTY3JpcHRFbGVtZW50KGEpO2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50XyhhKTthLnRleHRDb250ZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYil9O2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50Xz1mdW5jdGlvbihhKXtjb25zdCBiPWdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpO2ImJmEuc2V0QXR0cmlidXRlKCJub25jZSIsYil9Owpnb29nLmRvbS5zYWZlLnNldExvY2F0aW9uSHJlZj1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihhKTtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EuaHJlZj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuYXNzaWduTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb24oYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmFzc2lnbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTsKZ29vZy5kb20uc2FmZS5yZXBsYWNlTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EucmVwbGFjZShnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTtnb29nLmRvbS5zYWZlLm9wZW5JbldpbmRvdz1mdW5jdGlvbihhLGIsYyxkKXthPWEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9hOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGEpO2I9Ynx8Z29vZy5nbG9iYWw7Yz1jIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGMpOmN8fCIiO3JldHVybiB2b2lkIDAhPT1kP2Iub3Blbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYSksYyxkKTpiLm9wZW4oZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLGMpfTsKZ29vZy5kb20uc2FmZS5wYXJzZUZyb21TdHJpbmdIdG1sPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nKGEsYiwidGV4dC9odG1sIil9O2dvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5wYXJzZUZyb21TdHJpbmcobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSxjKX07Cmdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYj1mdW5jdGlvbihhKXtpZighL15pbWFnZVwvLiovZy50ZXN0KGEudHlwZSkpdGhyb3cgRXJyb3IoImdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYiBvbmx5IGFjY2VwdHMgTUlNRSB0eXBlIGltYWdlLy4qLiIpO3ZhciBiPWdvb2cuZ2xvYmFsLlVSTC5jcmVhdGVPYmplY3RVUkwoYSk7YT1uZXcgZ29vZy5nbG9iYWwuSW1hZ2U7YS5vbmxvYWQ9ZnVuY3Rpb24oKXtnb29nLmdsb2JhbC5VUkwucmV2b2tlT2JqZWN0VVJMKGIpfTthLnNyYz1iO3JldHVybiBhfTtnb29nLmRvbS5zYWZlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKGIpKX07Cmdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLnNhZmUuZ2V0Tm9uY2VfKCJzY3JpcHRbbm9uY2VdIixhKX07Z29vZy5kb20uc2FmZS5nZXRTdHlsZU5vbmNlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5zYWZlLmdldE5vbmNlXygnc3R5bGVbbm9uY2VdLGxpbmtbcmVsPSJzdHlsZXNoZWV0Il1bbm9uY2VdJyxhKX07Z29vZy5kb20uc2FmZS5OT05DRV9QQVRURVJOXz0vXltcdysvXy1dK1s9XXswLDJ9JC87Z29vZy5kb20uc2FmZS5nZXROb25jZV89ZnVuY3Rpb24oYSxiKXtiPShifHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuIGIucXVlcnlTZWxlY3Rvcj8oYT1iLnF1ZXJ5U2VsZWN0b3IoYSkpJiYoYT1hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZSgibm9uY2UiKSkmJmdvb2cuZG9tLnNhZmUuTk9OQ0VfUEFUVEVSTl8udGVzdChhKT9hOiIiOiIifTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLlVuaWNvZGU9e05CU1A6Ilx1MDBhMCIsWkVST19XSURUSF9TUEFDRToiXHUyMDBiIn07Z29vZy5zdHJpbmcuc3RhcnRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5zdGFydHNXaXRoO2dvb2cuc3RyaW5nLmVuZHNXaXRoPWdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoO2dvb2cuc3RyaW5nLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFcXVhbHM9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRXF1YWxzOwpnb29nLnN0cmluZy5zdWJzPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hLnNwbGl0KCIlcyIpO2xldCBkPSIiO2NvbnN0IGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2Zvcig7ZS5sZW5ndGgmJjE8Yy5sZW5ndGg7KWQrPWMuc2hpZnQoKStlLnNoaWZ0KCk7cmV0dXJuIGQrYy5qb2luKCIlcyIpfTtnb29nLnN0cmluZy5jb2xsYXBzZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rL2csIiAiKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9O2dvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2U9Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZTtnb29nLnN0cmluZy5pc0VtcHR5U3RyaW5nPWZ1bmN0aW9uKGEpe3JldHVybiAwPT1hLmxlbmd0aH07Z29vZy5zdHJpbmcuaXNFbXB0eT1nb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlOwpnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlU2FmZT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5tYWtlU2FmZShhKSl9O2dvb2cuc3RyaW5nLmlzRW1wdHlTYWZlPWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2VTYWZlO2dvb2cuc3RyaW5nLmlzQnJlYWtpbmdXaGl0ZXNwYWNlPWZ1bmN0aW9uKGEpe3JldHVybiEvW15cdFxuXHIgXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNBbHBoYT1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNOdW1lcmljPWZ1bmN0aW9uKGEpe3JldHVybiEvW14wLTldLy50ZXN0KGEpfTtnb29nLnN0cmluZy5pc0FscGhhTnVtZXJpYz1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aMC05XS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNTcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4iICI9PWF9Owpnb29nLnN0cmluZy5pc1VuaWNvZGVDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiAxPT1hLmxlbmd0aCYmIiAiPD1hJiYifiI+PWF8fCJcdTAwODAiPD1hJiYiXHVmZmZkIj49YX07Z29vZy5zdHJpbmcuc3RyaXBOZXdsaW5lcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXHJcbnxccnxcbikrL2csIiAiKX07Z29vZy5zdHJpbmcuY2Fub25pY2FsaXplTmV3bGluZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csIlxuIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHhhMHxccy9nLCIgIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVNwYWNlcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9ceGEwfFsgXHRdKy9nLCIgIil9Owpnb29nLnN0cmluZy5jb2xsYXBzZUJyZWFraW5nU3BhY2VzPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1tcdFxyXG4gXSsvZywiICIpLnJlcGxhY2UoL15bXHRcclxuIF0rfFtcdFxyXG4gXSskL2csIiIpfTtnb29nLnN0cmluZy50cmltPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW07Z29vZy5zdHJpbmcudHJpbUxlZnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXltcc1x4YTBdKy8sIiIpfTtnb29nLnN0cmluZy50cmltUmlnaHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rJC8sIiIpfTtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb21wYXJlPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU7Cmdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV89ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEpcmV0dXJuLTE7aWYoIWIpcmV0dXJuIDE7Y29uc3QgZD1hLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZT1iLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZj1NYXRoLm1pbihkLmxlbmd0aCxlLmxlbmd0aCk7Zm9yKGxldCBnPTA7ZzxmO2crKyl7Yz1kW2ddO2NvbnN0IGg9ZVtnXTtpZihjIT1oKXJldHVybiBhPXBhcnNlSW50KGMsMTApLCFpc05hTihhKSYmKGI9cGFyc2VJbnQoaCwxMCksIWlzTmFOKGIpJiZhLWIpP2EtYjpjPGg/LTE6MX1yZXR1cm4gZC5sZW5ndGghPWUubGVuZ3RoP2QubGVuZ3RoLWUubGVuZ3RoOmE8Yj8tMToxfTtnb29nLnN0cmluZy5pbnRBd2FyZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcubnVtYmVyQXdhcmVDb21wYXJlXyhhLGIsL1xkK3xcRCsvZyl9Owpnb29nLnN0cmluZy5mbG9hdEF3YXJlQ29tcGFyZT1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLnN0cmluZy5udW1iZXJBd2FyZUNvbXBhcmVfKGEsYiwvXGQrfFwuXGQrfFxEKy9nKX07Z29vZy5zdHJpbmcubnVtZXJhdGVDb21wYXJlPWdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlO2dvb2cuc3RyaW5nLnVybEVuY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSl9O2dvb2cuc3RyaW5nLnVybERlY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEucmVwbGFjZSgvXCsvZywiICIpKX07Z29vZy5zdHJpbmcubmV3TGluZVRvQnI9Z29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnI7Cmdvb2cuc3RyaW5nLmh0bWxFc2NhcGU9ZnVuY3Rpb24oYSxiKXthPWdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSxiKTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuRV9SRV8sIiYjMTAxOyIpKTtyZXR1cm4gYX07Z29vZy5zdHJpbmcuRV9SRV89L2UvZztnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLnN0cmluZy5jb250YWlucyhhLCImIik/IWdvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HJiYiZG9jdW1lbnQiaW4gZ29vZy5nbG9iYWw/Z29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXyhhKTpnb29nLnN0cmluZy51bmVzY2FwZVB1cmVYbWxFbnRpdGllc18oYSk6YX07Cmdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNXaXRoRG9jdW1lbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcuY29udGFpbnMoYSwiJiIpP2dvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNVc2luZ0RvbV8oYSxiKTphfTsKZ29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXz1mdW5jdGlvbihhLGIpe2NvbnN0IGM9eyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIid9O2xldCBkO2Q9Yj9iLmNyZWF0ZUVsZW1lbnQoImRpdiIpOmdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBhLnJlcGxhY2UoZ29vZy5zdHJpbmcuSFRNTF9FTlRJVFlfUEFUVEVSTl8sZnVuY3Rpb24oZSxmKXtsZXQgZz1jW2VdO2lmKGcpcmV0dXJuIGc7IiMiPT1mLmNoYXJBdCgwKSYmKGY9TnVtYmVyKCIwIitmLnNsaWNlKDEpKSxpc05hTihmKXx8KGc9U3RyaW5nLmZyb21DaGFyQ29kZShmKSkpO2d8fChnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChkLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJTaW5nbGUgSFRNTCBlbnRpdHkuIiksCmUrIiAiKSksZz1kLmZpcnN0Q2hpbGQubm9kZVZhbHVlLnNsaWNlKDAsLTEpKTtyZXR1cm4gY1tlXT1nfSl9O2dvb2cuc3RyaW5nLnVuZXNjYXBlUHVyZVhtbEVudGl0aWVzXz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8mKFteO10rKTsvZyxmdW5jdGlvbihiLGMpe3N3aXRjaChjKXtjYXNlICJhbXAiOnJldHVybiImIjtjYXNlICJsdCI6cmV0dXJuIjwiO2Nhc2UgImd0IjpyZXR1cm4iPiI7Y2FzZSAicXVvdCI6cmV0dXJuJyInO2RlZmF1bHQ6cmV0dXJuIiMiIT1jLmNoYXJBdCgwKXx8KGM9TnVtYmVyKCIwIitjLnNsaWNlKDEpKSxpc05hTihjKSk/YjpTdHJpbmcuZnJvbUNoYXJDb2RlKGMpfX0pfTtnb29nLnN0cmluZy5IVE1MX0VOVElUWV9QQVRURVJOXz0vJihbXjtcczwmXSspOz8vZztnb29nLnN0cmluZy53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTsKZ29vZy5zdHJpbmcucHJlc2VydmVTcGFjZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKF58W1xuIF0pIC9nLCIkMSIrZ29vZy5zdHJpbmcuVW5pY29kZS5OQlNQKX07Z29vZy5zdHJpbmcuc3RyaXBRdW90ZXM9ZnVuY3Rpb24oYSxiKXtjb25zdCBjPWIubGVuZ3RoO2ZvcihsZXQgZD0wO2Q8YztkKyspe2NvbnN0IGU9MT09Yz9iOmIuY2hhckF0KGQpO2lmKGEuY2hhckF0KDApPT1lJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09ZSlyZXR1cm4gYS5zdWJzdHJpbmcoMSxhLmxlbmd0aC0xKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcudHJ1bmNhdGU9ZnVuY3Rpb24oYSxiLGMpe2MmJihhPWdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXMoYSkpO2EubGVuZ3RoPmImJihhPWEuc3Vic3RyaW5nKDAsYi0zKSsiLi4uIik7YyYmKGE9Z29vZy5zdHJpbmcuaHRtbEVzY2FwZShhKSk7cmV0dXJuIGF9Owpnb29nLnN0cmluZy50cnVuY2F0ZU1pZGRsZT1mdW5jdGlvbihhLGIsYyxkKXtjJiYoYT1nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzKGEpKTtpZihkJiZhLmxlbmd0aD5iKXtkPmImJihkPWIpO3ZhciBlPWEubGVuZ3RoLWQ7YT1hLnN1YnN0cmluZygwLGItZCkrIi4uLiIrYS5zdWJzdHJpbmcoZSl9ZWxzZSBhLmxlbmd0aD5iJiYoZD1NYXRoLmZsb29yKGIvMiksZT1hLmxlbmd0aC1kLGE9YS5zdWJzdHJpbmcoMCxkK2IlMikrIi4uLiIrYS5zdWJzdHJpbmcoZSkpO2MmJihhPWdvb2cuc3RyaW5nLmh0bWxFc2NhcGUoYSkpO3JldHVybiBhfTtnb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfPXsiXHgwMCI6IlxcMCIsIlxiIjoiXFxiIiwiXGYiOiJcXGYiLCJcbiI6IlxcbiIsIlxyIjoiXFxyIiwiXHQiOiJcXHQiLCJcdiI6IlxceDBCIiwnIic6J1xcIicsIlxcIjoiXFxcXCIsIjwiOiJcXHUwMDNDIn07Z29vZy5zdHJpbmcuanNFc2NhcGVDYWNoZV89eyInIjoiXFwnIn07Cmdvb2cuc3RyaW5nLnF1b3RlPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO2NvbnN0IGI9WyciJ107Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspe2NvbnN0IGQ9YS5jaGFyQXQoYyksZT1kLmNoYXJDb2RlQXQoMCk7YltjKzFdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bZF18fCgzMTxlJiYxMjc+ZT9kOmdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoZCkpfWIucHVzaCgnIicpO3JldHVybiBiLmpvaW4oIiIpfTtnb29nLnN0cmluZy5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKyliW2NdPWdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoYS5jaGFyQXQoYykpO3JldHVybiBiLmpvaW4oIiIpfTsKZ29vZy5zdHJpbmcuZXNjYXBlQ2hhcj1mdW5jdGlvbihhKXtpZihhIGluIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfKXJldHVybiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlX1thXTtpZihhIGluIGdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc18pcmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bYV07bGV0IGI7Y29uc3QgYz1hLmNoYXJDb2RlQXQoMCk7aWYoMzE8YyYmMTI3PmMpYj1hO2Vsc2V7aWYoMjU2PmMpe2lmKGI9IlxceCIsMTY+Y3x8MjU2PGMpYis9IjAifWVsc2UgYj0iXFx1Iiw0MDk2PmMmJihiKz0iMCIpO2IrPWMudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9cmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWJ9O2dvb2cuc3RyaW5nLmNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zOwpnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb250YWlucz1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucztnb29nLnN0cmluZy5jb3VudE9mPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJmI/YS5zcGxpdChiKS5sZW5ndGgtMTowfTtnb29nLnN0cmluZy5yZW1vdmVBdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9YTswPD1iJiZiPGEubGVuZ3RoJiYwPGMmJihkPWEuc2xpY2UoMCxiKSthLnNsaWNlKGIrYykpO3JldHVybiBkfTtnb29nLnN0cmluZy5yZW1vdmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5yZXBsYWNlKGIsIiIpfTtnb29nLnN0cmluZy5yZW1vdmVBbGw9ZnVuY3Rpb24oYSxiKXtiPW5ldyBSZWdFeHAoZ29vZy5zdHJpbmcucmVnRXhwRXNjYXBlKGIpLCJnIik7cmV0dXJuIGEucmVwbGFjZShiLCIiKX07Cmdvb2cuc3RyaW5nLnJlcGxhY2VBbGw9ZnVuY3Rpb24oYSxiLGMpe2I9bmV3IFJlZ0V4cChnb29nLnN0cmluZy5yZWdFeHBFc2NhcGUoYiksImciKTtyZXR1cm4gYS5yZXBsYWNlKGIsYy5yZXBsYWNlKC9cJC9nLCIkJCQkIikpfTtnb29nLnN0cmluZy5yZWdFeHBFc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oWy0oKVxbXF17fSs/Ki4kXF58LDojPCFcXF0pL2csIlxcJDEiKS5yZXBsYWNlKC9ceDA4L2csIlxceDA4Iil9O2dvb2cuc3RyaW5nLnJlcGVhdD1TdHJpbmcucHJvdG90eXBlLnJlcGVhdD9mdW5jdGlvbihhLGIpe3JldHVybiBhLnJlcGVhdChiKX06ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkoYisxKS5qb2luKGEpfTsKZ29vZy5zdHJpbmcucGFkTnVtYmVyPWZ1bmN0aW9uKGEsYixjKXtpZighTnVtYmVyLmlzRmluaXRlKGEpKXJldHVybiBTdHJpbmcoYSk7YT12b2lkIDAhPT1jP2EudG9GaXhlZChjKTpTdHJpbmcoYSk7Yz1hLmluZGV4T2YoIi4iKTstMT09PWMmJihjPWEubGVuZ3RoKTtjb25zdCBkPSItIj09PWFbMF0/Ii0iOiIiO2QmJihhPWEuc3Vic3RyaW5nKDEpKTtyZXR1cm4gZCtnb29nLnN0cmluZy5yZXBlYXQoIjAiLE1hdGgubWF4KDAsYi1jKSkrYX07Z29vZy5zdHJpbmcubWFrZVNhZmU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6U3RyaW5nKGEpfTtnb29nLnN0cmluZy5nZXRSYW5kb21TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSleZ29vZy5ub3coKSkudG9TdHJpbmcoMzYpfTsKZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVWZXJzaW9ucztnb29nLnN0cmluZy5oYXNoQ29kZT1mdW5jdGlvbihhKXtsZXQgYj0wO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7KytjKWI9MzEqYithLmNoYXJDb2RlQXQoYyk+Pj4wO3JldHVybiBifTtnb29nLnN0cmluZy51bmlxdWVTdHJpbmdDb3VudGVyXz0yMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCl8MDtnb29nLnN0cmluZy5jcmVhdGVVbmlxdWVTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iZ29vZ18iK2dvb2cuc3RyaW5nLnVuaXF1ZVN0cmluZ0NvdW50ZXJfKyt9O2dvb2cuc3RyaW5nLnRvTnVtYmVyPWZ1bmN0aW9uKGEpe2NvbnN0IGI9TnVtYmVyKGEpO3JldHVybiAwPT1iJiZnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlKGEpP05hTjpifTtnb29nLnN0cmluZy5pc0xvd2VyQ2FtZWxDYXNlPWZ1bmN0aW9uKGEpe3JldHVybi9eW2Etel0rKFtBLVpdW2Etel0qKSokLy50ZXN0KGEpfTsKZ29vZy5zdHJpbmcuaXNVcHBlckNhbWVsQ2FzZT1mdW5jdGlvbihhKXtyZXR1cm4vXihbQS1aXVthLXpdKikrJC8udGVzdChhKX07Z29vZy5zdHJpbmcudG9DYW1lbENhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC9cLShbYS16XSkvZyxmdW5jdGlvbihiLGMpe3JldHVybiBjLnRvVXBwZXJDYXNlKCl9KX07Z29vZy5zdHJpbmcudG9TZWxlY3RvckNhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCl9O2dvb2cuc3RyaW5nLnRvVGl0bGVDYXNlPWZ1bmN0aW9uKGEsYil7Yj0ic3RyaW5nIj09PXR5cGVvZiBiP2dvb2cuc3RyaW5nLnJlZ0V4cEVzY2FwZShiKToiXFxzIjtyZXR1cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoIiheIisoYj8ifFsiK2IrIl0rIjoiIikrIikoW2Etel0pIiwiZyIpLGZ1bmN0aW9uKGMsZCxlKXtyZXR1cm4gZCtlLnRvVXBwZXJDYXNlKCl9KX07Cmdvb2cuc3RyaW5nLmNhcGl0YWxpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhLmNoYXJBdCgwKSkudG9VcHBlckNhc2UoKStTdHJpbmcoYS5zbGljZSgxKSkudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcucGFyc2VJbnQ9ZnVuY3Rpb24oYSl7aXNGaW5pdGUoYSkmJihhPVN0cmluZyhhKSk7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT8vXlxzKi0/MHgvaS50ZXN0KGEpP3BhcnNlSW50KGEsMTYpOnBhcnNlSW50KGEsMTApOk5hTn07Z29vZy5zdHJpbmcuc3BsaXRMaW1pdD1mdW5jdGlvbihhLGIsYyl7YT1hLnNwbGl0KGIpO2NvbnN0IGQ9W107Zm9yKDswPGMmJmEubGVuZ3RoOylkLnB1c2goYS5zaGlmdCgpKSxjLS07YS5sZW5ndGgmJmQucHVzaChhLmpvaW4oYikpO3JldHVybiBkfTsKZ29vZy5zdHJpbmcubGFzdENvbXBvbmVudD1mdW5jdGlvbihhLGIpe2lmKGIpInN0cmluZyI9PXR5cGVvZiBiJiYoYj1bYl0pO2Vsc2UgcmV0dXJuIGE7bGV0IGM9LTE7Zm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKCIiPT1iW2RdKWNvbnRpbnVlO2NvbnN0IGU9YS5sYXN0SW5kZXhPZihiW2RdKTtlPmMmJihjPWUpfXJldHVybi0xPT1jP2E6YS5zbGljZShjKzEpfTsKZ29vZy5zdHJpbmcuZWRpdERpc3RhbmNlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1bXSxkPVtdO2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEubGVuZ3RofHwhYi5sZW5ndGgpcmV0dXJuIE1hdGgubWF4KGEubGVuZ3RoLGIubGVuZ3RoKTtmb3IodmFyIGU9MDtlPGIubGVuZ3RoKzE7ZSsrKWNbZV09ZTtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtkWzBdPWUrMTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKylkW2YrMV09TWF0aC5taW4oZFtmXSsxLGNbZisxXSsxLGNbZl0rTnVtYmVyKGFbZV0hPWJbZl0pKTtmb3IoZj0wO2Y8Yy5sZW5ndGg7ZisrKWNbZl09ZFtmXX1yZXR1cm4gZFtiLmxlbmd0aF19O2dvb2cuc3RyaW5nLnBhdGg9e307Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZT1mdW5jdGlvbihhKXtjb25zdCBiPWEubGFzdEluZGV4T2YoIi8iKSsxO3JldHVybiBhLnNsaWNlKGIpfTtnb29nLnN0cmluZy5wYXRoLmJhc2VuYW1lPWdvb2cuc3RyaW5nLnBhdGguYmFzZU5hbWU7Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLyIpKzE7YT1hLnNsaWNlKDAsYik7L15cLyskLy50ZXN0KGEpfHwoYT1hLnJlcGxhY2UoL1wvKyQvLCIiKSk7cmV0dXJuIGF9O2dvb2cuc3RyaW5nLnBhdGguZXh0ZW5zaW9uPWZ1bmN0aW9uKGEpe2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKS5yZXBsYWNlKC9cLisvZywiLiIpO2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLiIpO3JldHVybiAwPj1iPyIiOmEuc2xpY2UoYisxKX07Cmdvb2cuc3RyaW5nLnBhdGguam9pbj1mdW5jdGlvbihhKXtsZXQgYj1hcmd1bWVudHNbMF07Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107Yj1nb29nLnN0cmluZy5zdGFydHNXaXRoKGQsIi8iKT9kOiIiPT1ifHxnb29nLnN0cmluZy5lbmRzV2l0aChiLCIvIik/YitkOmIrKCIvIitkKX1yZXR1cm4gYn07Cmdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aD1mdW5jdGlvbihhKXtpZigiIj09YSlyZXR1cm4iLiI7bGV0IGI9IiI7Z29vZy5zdHJpbmcuc3RhcnRzV2l0aChhLCIvIikmJihiPSIvIixnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vIikmJiFnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vLyIpJiYoYj0iLy8iKSk7YT1hLnNwbGl0KCIvIik7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdOyIiIT1lJiYiLiIhPWUmJigiLi4iIT1lfHwhYiYmIWMubGVuZ3RofHwiLi4iPT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGMpP2MucHVzaChlKTpjLnBvcCgpKX1yZXR1cm4gYitjLmpvaW4oIi8iKXx8Ii4ifTtnb29nLnN0cmluZy5wYXRoLnNwbGl0PWZ1bmN0aW9uKGEpe2NvbnN0IGI9Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lKGEpO2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKTtyZXR1cm5bYixhXX07Y29uc3QgREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ITE7ZnVuY3Rpb24gYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4vXlwvL2cudGVzdChhKT9hOmAvJHthfWB9ZnVuY3Rpb24gcmVtb3ZlTGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4gYS5yZXBsYWNlKC9eXC8vZywiIil9ZnVuY3Rpb24gc2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7cmV0dXJuKGEmKFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpKSE9PWdvb2cuZ2xvYmFsLkJpZ0ludCgwKX0KZnVuY3Rpb24gcGVyZm9ybWFuY2VOb3dQb2x5JCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHBlcmZvcm1hbmNlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe2NvbnN0IGE9RGF0ZS5ub3coKTtyZXR1cm4gRGF0ZS5ub3coKS1hfXJldHVybiBwZXJmb3JtYW5jZS5ub3coKX1mdW5jdGlvbiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7dmFyIGI9YS5yZWR1Y2UoKGQsZSk9PmQrZS5sZW5ndGgsMCk7aWYoMCE9PWEubGVuZ3RoKXtiPW5ldyBVaW50OEFycmF5KGIpO3ZhciBjPTA7Zm9yKGNvbnN0IGQgb2YgYSliLnNldChkLGMpLGMrPWQubGVuZ3RoO3JldHVybiBifX0KY29uc3QgV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ZnVuY3Rpb24oe30pe3RoaXMuZmQ9QXJyYXkuZnJvbSh7bGVuZ3RoOjR9KTt0aGlzLmZkWzBdPXtmZDowLHBhdGg6Ii9kZXYvc3RkaW4iLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6W10sb3BlbjohMX07dGhpcy5mZFsxXT17ZmQ6MSxwYXRoOiIvZGV2L3N0ZG91dCIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmZkWzJdPXtmZDoyLHBhdGg6Ii9kZXYvc3RkZXJyIixzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltdLG9wZW46ITF9O3RoaXMuZmRbM109e2ZkOjMscGF0aDoiLyIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmdldE1lbW9yeT10aGlzLmdldE1lbW9yeS5iaW5kKHRoaXMpO3RoaXMuQ1BVVElNRV9TVEFSVD0wfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEpe3RoaXMuQ1BVVElNRV9TVEFSVD1wZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCk7YS5leHBvcnRzLl9zdGFydCgpfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZ2V0SW1wb3J0cz1mdW5jdGlvbihhKXtjb25zdCBiPXt9O2E9V2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMoYSk7Zm9yKGNvbnN0IGMgb2YgYSkiZnVuY3Rpb24iPT09Yy5raW5kJiZjLm1vZHVsZS5zdGFydHNXaXRoKCJ3YXNpXyIpJiYoIm9iamVjdCIhPT10eXBlb2YgYltjLm1vZHVsZV0mJihiW2MubW9kdWxlXT17fSksYltjLm1vZHVsZV1bYy5uYW1lXT10aGlzW2MubmFtZV0uYmluZCh0aGlzKSk7cmV0dXJuIGJ9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2V0TWVtb3J5PWZ1bmN0aW9uKGEpe3RoaXMubWVtb3J5PWF9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5nZXRNZW1vcnk9ZnVuY3Rpb24oKXt0aGlzLnZpZXcmJnRoaXMudmlldy5idWZmZXImJnRoaXMudmlldy5idWZmZXIuYnl0ZUxlbmd0aHx8KHRoaXMudmlldz1uZXcgRGF0YVZpZXcodGhpcy5tZW1vcnkuYnVmZmVyKSk7cmV0dXJuIHRoaXMudmlld307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLm1zVG9Ocz1mdW5jdGlvbihhKXtjb25zdCBiPU1hdGgudHJ1bmMoYSk7YT1nb29nLmdsb2JhbC5CaWdJbnQoTWF0aC5yb3VuZCgxRTYqKGEtYikpKTtyZXR1cm4gZ29vZy5nbG9iYWwuQmlnSW50KGIpKmdvb2cuZ2xvYmFsLkJpZ0ludCgxRTYpK2F9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUubm93PWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIFdBU0lfQ0xPQ0tfTU9OT1RPTklDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiBNYXRoLmZsb29yKHBlcmZvcm1hbmNlTm93UG9seSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKSk7Y2FzZSBXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiB0aGlzLm1zVG9OcyhEYXRlLm5vdygpKTtjYXNlIFdBU0lfQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOmNhc2UgV0FTSV9DTE9DS19USFJFQURfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpyZXR1cm4gTWF0aC5mbG9vcihwZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCktdGhpcy5DUFVUSU1FX1NUQVJUKTsKZGVmYXVsdDpyZXR1cm4gMH19O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5hcmdzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmFyZ3Nfc2l6ZXNfZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJhcmdzX3NpemVzX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfcmVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfdGltZV9nZXQ9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiY2xvY2tfdGltZV9nZXQiLGEsYixjLGFyZ3VtZW50cyk7Y29uc3QgZD10aGlzLmdldE1lbW9yeSgpLGU9dGhpcy5ub3coYSk7ZC5zZXRCaWdVaW50NjQoYyxnb29nLmdsb2JhbC5CaWdJbnQoZSksITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmVudmlyb25fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJlbnZpcm9uX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5lbnZpcm9uX3NpemVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZW52aXJvbl9zaXplc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FkdmlzZT1mdW5jdGlvbihhLGIsYyxkKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FkdmlzZSIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FsbG9jYXRlPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FsbG9jYXRlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9jbG9zZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Nsb3NlIixhLGFyZ3VtZW50cyk7dGhpcy5mZFthXSYmKHRoaXMuZmRbYV0ub3Blbj0hMSk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9kYXRhc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2RhdGFzeW5jIixhLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmRzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmRzdGF0X2dldCIsYSxiLGFyZ3VtZW50cyk7Y29uc3QgYz10aGlzLmdldE1lbW9yeSgpO2Muc2V0VWludDgoYis0LFdBU0lfRklMRVRZUEVfUkVHVUxBUl9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtjLnNldFVpbnQxNihiKzIsMCwhMCk7Yy5zZXRVaW50MTYoYis0LDAsITApO2Muc2V0QmlnVWludDY0KGIrOCxnb29nLmdsb2JhbC5CaWdJbnQoUklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKSwhMCk7Yy5zZXRCaWdVaW50NjQoYis4KzgsZ29vZy5nbG9iYWwuQmlnSW50KFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyksCiEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfZmxhZ3M9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfZmxhZ3MiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfcmlnaHRzPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfcmlnaHRzIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfZ2V0IixhLGIsYXJndW1lbnRzKTtsZXQgYz0wO3RoaXMuZmRbYV0mJihjPXRoaXMuZmRbYV0uYnVmZmVycy5yZWR1Y2UoZnVuY3Rpb24oZSxmKXtyZXR1cm4gZSsobnVsbD09Zj92b2lkIDA6Zi5ieXRlTGVuZ3RoKT9udWxsPT1mP3ZvaWQgMDpmLmJ5dGVMZW5ndGg6MH0sMCkpO2NvbnN0IGQ9dGhpcy5nZXRNZW1vcnkoKTtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldFVpbnQ4KGIsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2IrPTg7ZC5zZXRCaWdVaW50NjQoYiwKZ29vZy5nbG9iYWwuQmlnSW50KDEpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsZ29vZy5nbG9iYWwuQmlnSW50KGMpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsdGhpcy5tc1RvTnModGhpcy5DUFVUSU1FX1NUQVJUKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLHRoaXMubXNUb05zKHRoaXMuQ1BVVElNRV9TVEFSVCksITApO2Quc2V0QmlnVWludDY0KGIrOCx0aGlzLm1zVG9Ocyh0aGlzLkNQVVRJTUVfU1RBUlQpLCEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X3NldF9zaXplPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9maWxlc3RhdF9zZXRfc2l6ZSIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmlsZXN0YXRfc2V0X3RpbWVzPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9wcmVhZD1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlYWQiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3ByZXN0YXRfZGlyX25hbWU9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlc3RhdF9kaXJfbmFtZSIsYSxiLGMsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0mJiF0aGlzLmZkW2EtMV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7KHtwYXRoOmN9PXRoaXMuZmRbYV0pO2E9dGhpcy5nZXRNZW1vcnkoKTtjPWVuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoYyk7KG5ldyBVaW50OEFycmF5KGEuYnVmZmVyKSkuc2V0KGMsYik7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcHJlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3ByZXN0YXRfZ2V0IixhLGIsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7dmFyIHtwYXRoOmN9PXRoaXMuZmRbYV07YT10aGlzLmdldE1lbW9yeSgpO2M9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShjKTthLnNldFVpbnQ4KGIsV0FTSV9QUkVPUEVOVFlQRV9ESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2Euc2V0VWludDMyKGIrNCxjLmJ5dGVMZW5ndGgsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3B3cml0ZT1mdW5jdGlvbihhLGIsYyxkLGUpe2NvbnNvbGUubG9nKCJmZF9wd3JpdGUiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3JlYWQ9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9yZWFkIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmZkW2FdJiZ0aGlzLmZkW2FdLmJ1ZmZlcnM7dmFyIGY9ZS5yZWR1Y2UoKG4scCk9Pm4rcC5sZW5ndGgsMCk7Y29uc3QgZz10aGlzLmdldE1lbW9yeSgpO2lmKGUmJjAhPT1lLmxlbmd0aCl7dmFyIGg9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyksaz0wLGw9ITE7aWYoaD49ZilyZXR1cm4gaz1nLmdldFVpbnQzMihiLCEwKSxnLnNldFVpbnQ4KGssIlx4MDAiKSxnLnNldFVpbnQzMihkLDAsITApLFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Zm9yKGY9MDtmPGM7ZisrKXt2YXIgbT1iKzgqZjtjb25zdCBuPWcuZ2V0VWludDMyKG0sITApO209Zy5nZXRVaW50MzIobSsKNCwhMCk7bHx8KGsrPW0sQXJyYXkuZnJvbSh7bGVuZ3RoOm19LChwLHEpPT5xKS5yZWR1Y2UoKHAscSk9PntpZihsKXJldHVybiBwO2NvbnN0IFt1LHRdPXA7bGV0IHY9cD0wLEE9ITEseT0wLHI7aWYoMD09PXEpZm9yKDshQTspcj1lW3BdP2VbcF0uYnl0ZUxlbmd0aDowLHk8PWgmJnIreT5oPyhBPSEwLHY9aC15KTooeSs9cixwKz0xKTtlbHNlIHA9dSx2PXQ7ZVtwXT8oZy5zZXRVaW50OChuK3EsZVtwXVt2XSksdisxPj1lW3BdLmJ5dGVMZW5ndGg/KHA9dSsxLHY9MCk6dis9MSk6KGcuc2V0VWludDgobitxLCJceDAwIiksaCs9cSxsPSEwKTtyZXR1cm5bcCx2XX0sWzAsMF0pLGx8fChoKz1tKSl9dGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludChoKTtnLnNldFVpbnQzMihkLGssITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfWNvbnNvbGUuZXJyb3IoIlJlYWRpbmcgbm9uIGV4aXN0ZW50IGZpbGUiLGEsdGhpcy5mZFthXSl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcmVhZGRpcj1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVhZGRpciIsYSxiLGMsZCxlLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9yZW51bWJlcj1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVudW1iZXIiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3NlZWs9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9zZWVrIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmdldE1lbW9yeSgpO3N3aXRjaChjKXtjYXNlIFdBU0lfV0hFTkNFX0NVUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czp2YXIgZjt0aGlzLmZkW2FdLnNlZWtQb3M9KG51bGwhPShmPXRoaXMuZmRbYV0uc2Vla1Bvcyk/Zjpnb29nLmdsb2JhbC5CaWdJbnQoMCkpK2dvb2cuZ2xvYmFsLkJpZ0ludChiKTticmVhaztjYXNlIFdBU0lfV0hFTkNFX0VORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpmPSh0aGlzLmZkW2FdLmJ1ZmZlcnN8fFtdKS5yZWR1Y2UoKGcsaCk9PmcraC5sZW5ndGgsMCk7dGhpcy5mZFthXS5zZWVrUG9zPUJpZ0ludChmKStCaWdJbnQoYik7YnJlYWs7CmNhc2UgV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnRoaXMuZmRbYV0uc2Vla1Bvcz1CaWdJbnQoYil9ZS5zZXRCaWdVaW50NjQoZCx0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3N5bmMiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF90ZWxsPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF90ZWxsIixhLGIsYXJndW1lbnRzKTtjb25zdCBjPXRoaXMuZ2V0TWVtb3J5KCk7dGhpcy5mZFthXS5zZWVrUG9zfHwodGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSk7Yy5zZXRCaWdVaW50NjQoYix0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3dyaXRlPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfd3JpdGUiLHtmZDphLGlvdnM6Yixpb3ZzTGVuZ3RoOmMsbndyaXR0ZW46ZH0pO2NvbnN0IGU9dGhpcy5nZXRNZW1vcnkoKTt0aGlzLmZkW2FdLmJ1ZmZlcnM9dGhpcy5mZFthXS5idWZmZXJzfHxbXTt0aGlzLmZkW2FdLmJ1ZmZlcnM9MDx0aGlzLmZkW2FdLmJ1ZmZlcnMubGVuZ3RoP1tjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kodGhpcy5mZFthXS5idWZmZXJzKV06dGhpcy5mZFthXS5idWZmZXJzO2xldCBmPTA7Zm9yKGxldCBrPTA7azxjO2srKyl7dmFyIGc9Yis4KmssaD1lLmdldFVpbnQzMihnLCEwKTtnPWUuZ2V0VWludDMyKGcrNCwhMCk7Zis9ZztoPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGgsZyk7aWYodGhpcy5mZFthXS5idWZmZXJzWzBdJiYKdGhpcy5mZFthXS5zZWVrUG9zPHRoaXMuZmRbYV0uYnVmZmVyc1swXS5sZW5ndGgpe2NvbnN0IGw9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyk7aC5zbGljZSgwLGcpLmZvckVhY2goKG0sbik9Pnt0aGlzLmZkW2FdLmJ1ZmZlcnNbMF1bbCtuXT1tfSl9ZWxzZSB0aGlzLmZkW2FdLmJ1ZmZlcnMucHVzaChoLnNsaWNlKDAsZykpfXRoaXMuZmRbYV0uc2Vla1Bvcys9Z29vZy5nbG9iYWwuQmlnSW50KGYpO2Uuc2V0VWludDMyKGQsZiwhMCk7WzEsMl0uaW5jbHVkZXMoYSkmJmNvbnNvbGUubG9nKGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGUoY29uY2F0VWludDhBcnJheXMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHRoaXMuZmRbYV0uYnVmZmVycykpKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2NyZWF0ZV9kaXJlY3Rvcnk9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9jcmVhdGVfZGlyZWN0b3J5IixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9maWxlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfZ2V0IixhLGIsYyxkLGUsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2ZpbGVzdGF0X3NldF90aW1lcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGUsZixnLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2xpbms9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX2xpbmsiLGEsYixjLGQsZSxmLGcsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX29wZW49ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9vcGVuIixhLGIsYyxkLGUsZixnLGgsayxhcmd1bWVudHMpO2NvbnN0IGw9dGhpcy5nZXRNZW1vcnkoKTt2YXIgbT0odGhpcy5mZFthXXx8e3BhdGg6Ii8ifSkucGF0aCxuPW5ldyBVaW50OEFycmF5KGwuYnVmZmVyLGMsZCk7bj1kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKG4pO2NvbnN0IHA9YXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGdvb2cuc3RyaW5nLnBhdGguam9pbigzPT09YT8iIjptLG4pKSk7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCI7OyBvcGVuaW5nIHBhdGgiLApwLCJ3aXRoUkVhZGVyIixzaG91bGRPcGVuUmVhZGVyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShmKSk7aWYocC5zdGFydHNXaXRoKCIvLi4iKXx8Ii8uXyI9PT1wfHwiLy5BcHBsZURvdWJsZSI9PT1wKXJldHVybiBXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOyhtPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZChxPT5xLnBhdGg9PT1wJiZBcnJheS5pc0FycmF5KHEuYnVmZmVycykpKT9uPW0uZmQ6KG49dGhpcy5mZC5sZW5ndGgsdGhpcy5mZFtuXT17ZmQ6bn0pO3RoaXMuZmRbbl09ey4uLnRoaXMuZmRbbl0scGF0aDpwLHR5cGU6ImZpbGUiLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6bT90aGlzLmZkW25dLmJ1ZmZlcnM6W10sb3BlbjohMH07c2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZikmJkRFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic2hvdWxkIG9wZW4gYSByZWFkIGhhbmRsZSBmb3IiLApwKTtsLnNldFVpbnQzMihrLG4sITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZWFkbGluaz1mdW5jdGlvbihhLGIsYyxkLGUsZil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3JlYWRsaW5rIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZW1vdmVfZGlyZWN0b3J5PWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVtb3ZlX2RpcmVjdG9yeSIsYSxiLGMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfcmVuYW1lPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVuYW1lIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9zeW1saW5rPWZ1bmN0aW9uKGEsYixjLGQsZSl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3N5bWxpbmsiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfdW5saW5rX2ZpbGU9ZnVuY3Rpb24oYSxiLGMpezM8YSYmREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3VubGlua19maWxlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucG9sbF9vbmVvZmY9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwb2xsX29uZW9mZiIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnByb2NfZXhpdD1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfZXhpdCIsYSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucHJvY19yYWlzZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfcmFpc2UiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yYW5kb21fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJyYW5kb21fZ2V0IixhLGIpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2NoZWRfeWllbGQ9ZnVuY3Rpb24oKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInNjaGVkX3lpZWxkIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfcmVjdj1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19yZWN2Iixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfc2VuZD1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19zZW5kIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5zb2NrX3NodXRkb3duPWZ1bmN0aW9uKCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJzb2NrX3NodXRkb3duIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZpbmRCdWZmZXJzPWZ1bmN0aW9uKGEpe2NvbnN0IGI9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDpjfSk9PmM9PT1hKTtyZXR1cm5bYiYmYi5idWZmZXJzLGIuZmRdfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnJlYWRkaXI9ZnVuY3Rpb24oYSl7Y29uc3QgYj0oYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGEpKSsiLyIpLnJlcGxhY2UoIi8vIiwiLyIpLGM9W107T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5mb3JFYWNoKCh7cGF0aDpkfSk9PiEvXC8vZy50ZXN0KGQucmVwbGFjZShiLCIiKSkmJmMucHVzaChkKSk7cmV0dXJuIGMubWFwKGQ9PnJlbW92ZUxlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZC5yZXBsYWNlKGIsIiIpKSkuZmlsdGVyKGQ9PiEhZCl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUud3JpdGVGaWxlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpO2E9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoO2NvbnN0IGQ9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDplfSk9PmU9PT1jKTt0aGlzLmZkW2FdPXtmZDphLHBhdGg6YyxzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltiXX07ZCYmZGVsZXRlIHRoaXMuZmRbZF19OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuYXBwZW5kRmlsZT1mdW5jdGlvbihhLGIpe3ZhciBjPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSk7W2NdPXRoaXMuZmluZEJ1ZmZlcnMoYyk7Yz9jLnB1c2goYik6Y29uc29sZS5lcnJvcihgQ2FuJ3QgYXBwZW5kIHRvIG5vbi1leGlzdGluZyBmaWxlICR7YX1gKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkRmlsZT1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksW2MsZF09dGhpcy5maW5kQnVmZmVycyhiKTt0aGlzLmZkW2RdJiZ0aGlzLmZkW2RdLm9wZW4mJmNvbnNvbGUud2FybihgcmVhZEZpbGU6IGZpbGUgJHthfSBoYXNuJ3QgYmVlbiBjbG9zZWQgeWV0IWApO2lmKGMpcmV0dXJuIGNvbmNhdFVpbnQ4QXJyYXlzJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShjKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkU3RkT3V0PWZ1bmN0aW9uKCl7Y29uc3QgYT1PYmplY3QudmFsdWVzKHRoaXMuZmRbMF0pO3JldHVybiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSYmYS5idWZmZXJzfHxbXSl9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS51bmxpbms9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpOyhhPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZCgoe3BhdGg6Y30pPT5jPT09YikpP2RlbGV0ZSB0aGlzLmZkW2FdOmNvbnNvbGUuZXJyb3IoYFdoaWxlIHRyeWluZyB0byB1bmxpbmsgJHtifSwgcGF0aCBub3QgZm91bmRgKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5ta2Rpcj1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksYz1bXTtPYmplY3QudmFsdWVzKHRoaXMuZmQpLmZvckVhY2goKHtwYXRoOmR9KT0+ZC5zdGFydHNXaXRoKGIpJiZjLnB1c2goZCkpOzA8Yy5sZW5ndGg/Y29uc29sZS53YXJuKGBta2RpcjogcGF0aCAke2F9IGFscmVhZHkgZXhpc3RzYCk6KGE9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoLHRoaXMuZmRbYV09e2ZkOmEscGF0aDpifSl9O3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaT17fTttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5XQVNJPVdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpO2Z1bmN0aW9uIGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYSl7Zm9yKDswPGEubGVuZ3RoOylhLnBvcCgpfXZhciBtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5PXt9O21vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkuY2xlYXJBcnJheT1jbGVhckFycmF5JCRtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5O3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9e2RlZmF1bHQ6e319O21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0Ll9fZXNNb2R1bGU9ITA7bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQuTG9nZ2VyRmFjdG9yeT1tb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHM9dm9pZCAwO21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVscz17bG9nX3JhaXNlX2Vycm9yOjEsbG9nX3dpdGhfd2FybmluZ3M6Mix0cmFjZTozLGRlYnVnOjQsaW5mbzo1LHdhcm46NixlcnJvcjo3LGRpc2FibGU6OH07CnZhciBMb2dnZXJGYWN0b3J5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7aWYodm9pZCAwPT09YiYmKGI9ImxvZ193aXRoX3dhcm5pbmdzIiksdm9pZCAwPT09YyYmKGM9bnVsbCksdGhpcy5sb2dMZXZlbD1iLCFtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbYl0pdGhyb3cgRXJyb3IoIkludmFsaWQgbG9nIGxldmVsICIrYisiIGFsbG93ZWQ6ICIrSlNPTi5zdHJpbmdpZnkobW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzKSk7dGhpcy5tb2NrQ29uc29sZT1jfHxjb25zb2xlfXJldHVybiBhLnByb3RvdHlwZS5kdW1teT1mdW5jdGlvbigpe30sYS5wcm90b3R5cGUuc2V0TG9nV2FybmluZ3M9ZnVuY3Rpb24oYil7dGhpcy5sb2dMZXZlbD1ifSxhLnByb3RvdHlwZS5nZXRMb2dXYXJuaW5ncz0KZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2dMZXZlbH0sYS5wcm90b3R5cGUuZ2V0U2luZ2xlTG9nZ2VyQ29sb3I9ZnVuY3Rpb24oYixjLGQpe3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGMpLGQpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXI9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLmdldFJhbmRvbUNvbG9yKGIpO3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGQpLGMpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXJTdHlsZT1mdW5jdGlvbihiLGMsZCxlKXt2YXIgZj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT0ibG9nX3dpdGhfd2FybmluZ3MiKSxmdW5jdGlvbigpe2Zvcih2YXIgZz1bXSxoPTA7aDxhcmd1bWVudHMubGVuZ3RoO2grKylnW2hdPWFyZ3VtZW50c1toXTtpZihtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbZi5sb2dMZXZlbF0+Cm1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tlXSlyZXR1cm4gZi5kdW1teTtnPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGcpO2g9Zy5zaGlmdCgpLnNwbGl0KCJ7fSIpO2Zvcih2YXIgaz1bZi5tb2NrQ29uc29sZSwiJWMiK2IsY10sbD0wO2w8aC5sZW5ndGg7bCsrKWsucHVzaChoW2xdKSx2b2lkIDAhPT1nW2xdJiZrLnB1c2goZ1tsXSk7aWYoaC5sZW5ndGgtMSE9PWcubGVuZ3RoKWlmKCJsb2dfd2l0aF93YXJuaW5ncyI9PT1mLmxvZ0xldmVsKWYubW9ja0NvbnNvbGUuZXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7ZWxzZSBpZigibG9nX3JhaXNlX2Vycm9yIj09PWYubG9nTGV2ZWwpdGhyb3cgRXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KGQsayl9fSxhLnByb3RvdHlwZS5nZXRMb2dnZXJDb2xvcj1mdW5jdGlvbihiLApjKXtyZXR1cm4gdGhpcy5nZXRMb2dnZXJTdHlsZShiLHRoaXMuZ2V0Q29sb3JTdHlsZShjKSl9LGEucHJvdG90eXBlLmdldENvbG9yU3R5bGU9ZnVuY3Rpb24oYil7cmV0dXJuImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogIitiKyI7IHBhZGRpbmc6IDJweCA2cHg7IGJvcmRlci1yYWRpdXM6IDJweDsgZm9udC1zaXplOiAxMHB4In0sYS5nZXRIYXNoPWZ1bmN0aW9uKGIsYyl7dm9pZCAwPT09YyYmKGM9MCk7dmFyIGQ9MzczNTkyODU1OV5jO2NePTExMDM1NDc5OTE7Zm9yKHZhciBlPTAsZjtlPGIubGVuZ3RoO2UrKylmPWIuY2hhckNvZGVBdChlKSxkPU1hdGguaW11bChkXmYsMjY1NDQzNTc2MSksYz1NYXRoLmltdWwoY15mLDE1OTczMzQ2NzcpO3JldHVybiBkPU1hdGguaW11bChkXmQ+Pj4xNiwyMjQ2ODIyNTA3KV5NYXRoLmltdWwoY15jPj4+MTMsMzI2NjQ4OTkwOSksNDI5NDk2NzI5NiooMjA5NzE1MSYoTWF0aC5pbXVsKGNeYz4+PjE2LDIyNDY4MjI1MDcpXk1hdGguaW11bChkXgpkPj4+MTMsMzI2NjQ4OTkwOSkpKSsoZD4+PjApfSxhLnByb3RvdHlwZS5nZXRSYW5kb21Db2xvcj1mdW5jdGlvbihiKXt2b2lkIDA9PT1iJiYoYj0iIik7Yj1hLmdldEhhc2goYik7Zm9yKHZhciBjPSIjIixkPTA7Mz5kO2QrKyljKz0oIjAwIisoOCsoYj4+NypkJjEyNykpLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC0yKTtyZXR1cm4gY30sYS5wcm90b3R5cGUuZ2V0TG9nZ2VyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmdldExvZ2dlckNvbG9yKGIsdGhpcy5nZXRSYW5kb21Db2xvcihiKSl9LGEucHJvdG90eXBlLmdldExvZ2dlclN0eWxlPWZ1bmN0aW9uKGIsYyl7cmV0dXJue3RyYWNlOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUudHJhY2UsInRyYWNlIiksZGVidWc6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5kZWJ1ZywiZGVidWciKSxsb2c6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5sb2csCiJpbmZvIiksd2Fybjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLndhcm4sIndhcm4iKSxlcnJvcjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmVycm9yLCJlcnJvciIpfX0sYX0oKTttb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5Mb2dnZXJGYWN0b3J5PUxvZ2dlckZhY3RvcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleDtsZXQgbG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTUE5NYWluU2luZ2xlJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTaW5nbGV0aHJlYWRXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ01pZGlSZXF1ZXN0JCRtb2R1bGUkc3JjJGxvZ2dlcjsKY29uc3QgaXNQcm9kJCRtb2R1bGUkc3JjJGxvZ2dlcj0xO2xvZ1dvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dJbmRleCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nU1BOTWFpblNpbmdsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307CmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e30sbW9kdWxlJHNyYyRsb2dnZXI9e307bW9kdWxlJHNyYyRsb2dnZXIuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nQ29tbW9uVXRpbHM9bG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ0luZGV4PWxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nTWlkaVJlcXVlc3Q9bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ09sZFNwbk1haW49bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nT2xkU3BuV29ya2VyPWxvZ09sZFNwbldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nU0FCTWFpbj1sb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTQUJXb3JrZXI9bG9nU0FCV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTUE5NYWluU2luZ2xlPWxvZ1NQTk1haW5TaW5nbGUkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluPWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlcj1sb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dWQU5NYWluPWxvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1ZBTldvcmtlcj1sb2dWQU5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dhc21Nb2R1bGU9bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV29ya2xldE1haW49bG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dvcmtsZXRXb3JrZXI9bG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7Y29uc3QgQ29tcHJlc3Npb25NZXRob2QkJG1vZHVsZSRzcmMkemxpYiR6bGliPXtERUZMQVRFOjgsUkVTRVJWRUQ6MTV9O3ZhciBtb2R1bGUkc3JjJHpsaWIkemxpYj17fTttb2R1bGUkc3JjJHpsaWIkemxpYi5Db21wcmVzc2lvbk1ldGhvZD1Db21wcmVzc2lvbk1ldGhvZCQkbW9kdWxlJHNyYyR6bGliJHpsaWI7LyoKIHpsaWIuanMgMjAxMiAtIGltYXlhIFsgaHR0cHM6Ly9naXRodWIuY29tL2ltYXlhL3psaWIuanMgXSBUaGUgTUlUIExpY2Vuc2UgKi8KZnVuY3Rpb24gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl7Y29uc3QgYj1hLmxlbmd0aDtsZXQgYz0wLGQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGUsZixnLGg7bGV0IGssbDtmb3Ioaz0wO2s8YjsrK2spYVtrXT5jJiYoYz1hW2tdKSxhW2tdPGQmJihkPWFba10pO2NvbnN0IG09MTw8YyxuPW5ldyBVaW50MzJBcnJheShtKTtlPTE7Zj0wO2ZvcihnPTI7ZTw9Yzspe2ZvcihrPTA7azxiOysraylpZihhW2tdPT09ZSl7aD0wO3ZhciBwPWY7Zm9yKGw9MDtsPGU7KytsKWg9aDw8MXxwJjEscD4+PTE7cD1lPDwxNnxrO2ZvcihsPWg7bDxtO2wrPWcpbltsXT1wOysrZn0rK2U7Zjw8PTE7Zzw8PTF9cmV0dXJuW24sYyxkXX12YXIgbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW49e307bW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4uSHVmZm1hbj1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbjtjb25zdCBaTElCX1JBV19JTkZMQVRFX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT0zMjc2ODsKZnVuY3Rpb24gUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUoYSxiKXt0aGlzLmJsb2Nrcz1bXTt0aGlzLmJ1ZmZlclNpemU9WkxJQl9SQVdfSU5GTEFURV9CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGU7dGhpcy5iaXRzYnVmbGVuPXRoaXMuYml0c2J1Zj10aGlzLmlwPXRoaXMudG90YWxwb3M9MDt0aGlzLmlucHV0PW5ldyBVaW50OEFycmF5KGEpO3RoaXMuYmZpbmFsPSExO3RoaXMuYnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFO3RoaXMucmVzaXplPSExO2lmKGJ8fCEoYj17fSkpYi5pbmRleCYmKHRoaXMuaXA9Yi5pbmRleCksYi5idWZmZXJTaXplJiYodGhpcy5idWZmZXJTaXplPWIuYnVmZmVyU2l6ZSksYi5idWZmZXJUeXBlJiYodGhpcy5idWZmZXJUeXBlPWIuYnVmZmVyVHlwZSksYi5yZXNpemUmJih0aGlzLnJlc2l6ZT1iLnJlc2l6ZSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMub3A9ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoK3RoaXMuYnVmZmVyU2l6ZStSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5vcD0wO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyU2l6ZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGU9e0JMT0NLOjAsQURBUFRJVkU6MX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5kZWNvbXByZXNzPWZ1bmN0aW9uKCl7Zm9yKDshdGhpcy5iZmluYWw7KXRoaXMucGFyc2VCbG9jaygpO3N3aXRjaCh0aGlzLmJ1ZmZlclR5cGUpe2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5CTE9DSzpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJCbG9jaygpO2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5BREFQVElWRTpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJEeW5hbWljKCk7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aD0zMjc2ODtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoPTI1ODsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMjU4LDI1OF0pO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkxlbmd0aEV4dHJhVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGEpfShbMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwLDAsMF0pOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0Q29kZVRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVWludDE2QXJyYXkoYSl9KFsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzddKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSl9KFswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXSk7ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkTGl0ZXJhbExlbmd0aFRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBhfShmdW5jdGlvbigpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoMjg4KTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09MTQzPj1iPzg6MjU1Pj1iPzk6Mjc5Pj1iPzc6ODtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkRGlzdGFuY2VUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gYX0oZnVuY3Rpb24oKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KDMwKTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09NTtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucGFyc2VCbG9jaz1mdW5jdGlvbigpe2xldCBhPXRoaXMucmVhZEJpdHMoMyk7YSYxJiYodGhpcy5iZmluYWw9ITApO2E+Pj49MTtzd2l0Y2goYSl7Y2FzZSAwOnRoaXMucGFyc2VVbmNvbXByZXNzZWRCbG9jaygpO2JyZWFrO2Nhc2UgMTp0aGlzLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2soKTticmVhaztjYXNlIDI6dGhpcy5wYXJzZUR5bmFtaWNIdWZmbWFuQmxvY2soKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJ1bmtub3duIEJUWVBFOiAiK2EpO319OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucmVhZEJpdHM9ZnVuY3Rpb24oYSl7bGV0IGI9dGhpcy5iaXRzYnVmLGM9dGhpcy5iaXRzYnVmbGVuO2NvbnN0IGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO2lmKGUrKGEtYys3Pj4zKT49ZC5sZW5ndGgpdGhyb3cgRXJyb3IoImlucHV0IGJ1ZmZlciBpcyBicm9rZW4iKTtmb3IoO2M8YTspYnw9ZFtlKytdPDxjLGMrPTg7dGhpcy5iaXRzYnVmPWI+Pj5hO3RoaXMuYml0c2J1Zmxlbj1jLWE7dGhpcy5pcD1lO3JldHVybiBiJigxPDxhKS0xfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnJlYWRDb2RlQnlUYWJsZT1mdW5jdGlvbihhKXtsZXQgYj10aGlzLmJpdHNidWYsYz10aGlzLmJpdHNidWZsZW47dmFyIGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO3ZhciBmPWQubGVuZ3RoO2NvbnN0IGc9YVswXTtmb3IoYT1hWzFdO2M8YSYmIShlPj1mKTspYnw9ZFtlKytdPDxjLGMrPTg7ZD1nW2ImKDE8PGEpLTFdO2Y9ZD4+PjE2O2lmKGY+Yyl0aHJvdyBFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aDogIitmKTt0aGlzLmJpdHNidWY9Yj4+Zjt0aGlzLmJpdHNidWZsZW49Yy1mO3RoaXMuaXA9ZTtyZXR1cm4gZCY2NTUzNX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5wYXJzZVVuY29tcHJlc3NlZEJsb2NrPWZ1bmN0aW9uKCl7Y29uc3QgYT10aGlzLmlucHV0O2xldCBiPXRoaXMuaXAsYz10aGlzLm91dHB1dCxkPXRoaXMub3A7dmFyIGU9YS5sZW5ndGg7bGV0IGY7Y29uc3QgZz1jLmxlbmd0aDt0aGlzLmJpdHNidWZsZW49dGhpcy5iaXRzYnVmPTA7aWYoYisxPj1lKXRocm93IEVycm9yKCJpbnZhbGlkIHVuY29tcHJlc3NlZCBibG9jayBoZWFkZXI6IExFTiIpO2Y9YVtiKytdfGFbYisrXTw8ODtpZihiKzE+PWUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogTkxFTiIpO2U9YVtiKytdfGFbYisrXTw8ODtpZihmPT09fmUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogbGVuZ3RoIHZlcmlmeSIpO2lmKGIrZj5hLmxlbmd0aCl0aHJvdyBFcnJvcigiaW5wdXQgYnVmZmVyIGlzIGJyb2tlbiIpOwpzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6Zm9yKDtkK2Y+Yy5sZW5ndGg7KWU9Zy1kLGYtPWUsYy5zZXQoYS5zdWJhcnJheShiLGIrZSksZCksZCs9ZSxiKz1lLHRoaXMub3A9ZCxjPXRoaXMuZXhwYW5kQnVmZmVyQmxvY2soKSxkPXRoaXMub3A7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOmZvcig7ZCtmPmMubGVuZ3RoOyljPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoe2ZpeFJhdGlvOjJ9KTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJpbnZhbGlkIGluZmxhdGUgbW9kZSIpO31jLnNldChhLnN1YmFycmF5KGIsYitmKSxkKTt0aGlzLmlwPWIrZjt0aGlzLm9wPWQrZjt0aGlzLm91dHB1dD1jfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2s9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5kZWNvZGVIdWZmbWFuQWRhcHRpdmUoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6dGhpcy5kZWNvZGVIdWZmbWFuQmxvY2soUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTsKYnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRHluYW1pY0h1ZmZtYW5CbG9jaz1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZEJpdHMoNSkrMjU3LGI9dGhpcy5yZWFkQml0cyg1KSsxLGM9dGhpcy5yZWFkQml0cyg0KSs0LGQ9bmV3IFVpbnQ4QXJyYXkoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXIubGVuZ3RoKTtsZXQgZTtmb3IoZT0wO2U8YzsrK2UpZFtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5PcmRlcltlXV09dGhpcy5yZWFkQml0cygzKTtkPUh1ZmZtYW4kJG1vZHVsZSRzcmMkemxpYiRodWZmbWFuKGQpO2M9bmV3IFVpbnQ4QXJyYXkoYStiKTtlPTA7Zm9yKGI9YStiO2U8Yjspe3ZhciBmPXRoaXMucmVhZENvZGVCeVRhYmxlKGQpO3N3aXRjaChmKXtjYXNlIDE2OmZvcihmPTMrdGhpcy5yZWFkQml0cygyKTtmLS07KWNbZSsrXT1nO2JyZWFrO2Nhc2UgMTc6Zm9yKGY9CjMrdGhpcy5yZWFkQml0cygzKTtmLS07KWNbZSsrXT0wO3ZhciBnPTA7YnJlYWs7Y2FzZSAxODpmb3IoZj0xMSt0aGlzLnJlYWRCaXRzKDcpO2YtLTspY1tlKytdPTA7Zz0wO2JyZWFrO2RlZmF1bHQ6Zz1jW2UrK109Zn19Zz1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbihjLnN1YmFycmF5KDAsYSkpO2E9SHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYy5zdWJhcnJheShhKSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOnRoaXMuZGVjb2RlSHVmZm1hbkFkYXB0aXZlKGcsYSk7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMuZGVjb2RlSHVmZm1hbkJsb2NrKGcsYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5CbG9jaz1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2NvbnN0IGU9Yy5sZW5ndGgtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4Q29weUxlbmd0aDt2YXIgZjtsZXQgZyxoO2NvbnN0IGs9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoQ29kZVRhYmxlLGw9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoRXh0cmFUYWJsZSxtPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RDb2RlVGFibGUsbj1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZTtmb3IoOzI1NiE9PShmPXRoaXMucmVhZENvZGVCeVRhYmxlKGEpKTspaWYoMjU2PmYpZD49CmUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKSxjW2QrK109ZjtlbHNlIGZvcihmLT0yNTcsaD1rW2ZdLDA8bFtmXSYmKGgrPXRoaXMucmVhZEJpdHMobFtmXSkpLGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYiksZz1tW2ZdLDA8bltmXSYmKGcrPXRoaXMucmVhZEJpdHMobltmXSkpLGQ+PWUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5BZGFwdGl2ZT1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2xldCBlPWMubGVuZ3RoO3ZhciBmO2xldCBnLGg7Y29uc3Qgaz1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGUsbD1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhFeHRyYVRhYmxlLG09UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRGlzdENvZGVUYWJsZSxuPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RFeHRyYVRhYmxlO2Zvcig7MjU2IT09KGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYSkpOylpZigyNTY+ZilkPj1lJiYoYz10aGlzLmV4cGFuZEJ1ZmZlckFkYXB0aXZlKCksZT1jLmxlbmd0aCksY1tkKytdPQpmO2Vsc2UgZm9yKGYtPTI1NyxoPWtbZl0sMDxsW2ZdJiYoaCs9dGhpcy5yZWFkQml0cyhsW2ZdKSksZj10aGlzLnJlYWRDb2RlQnlUYWJsZShiKSxnPW1bZl0sMDxuW2ZdJiYoZys9dGhpcy5yZWFkQml0cyhuW2ZdKSksZCtoPmUmJihjPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoKSxlPWMubGVuZ3RoKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckJsb2NrPWZ1bmN0aW9uKGEpe2E9bmV3IFVpbnQ4QXJyYXkodGhpcy5vcC1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCk7Y29uc3QgYj10aGlzLm9wLVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLGM9dGhpcy5vdXRwdXQ7YS5zZXQoYy5zdWJhcnJheShSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCxhLmxlbmd0aCkpO3RoaXMuYmxvY2tzLnB1c2goYSk7dGhpcy50b3RhbHBvcys9YS5sZW5ndGg7Yy5zZXQoYy5zdWJhcnJheShiLGIrUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTt0aGlzLm9wPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoOwpyZXR1cm4gY307UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckFkYXB0aXZlPWZ1bmN0aW9uKGEpe2xldCBiPU1hdGgudHJ1bmModGhpcy5pbnB1dC5sZW5ndGgvdGhpcy5pcCsxKTtjb25zdCBjPXRoaXMuaW5wdXQsZD10aGlzLm91dHB1dDthJiYoIm51bWJlciI9PT10eXBlb2YgYS5maXhSYXRpbyYmKGI9YS5maXhSYXRpbyksIm51bWJlciI9PT10eXBlb2YgYS5hZGRSYXRpbyYmKGIrPWEuYWRkUmF0aW8pKTsyPmI/KGE9KGMubGVuZ3RoLXRoaXMuaXApL3RoaXMuY3VycmVudExpdGxlblRhYmxlWzJdLGE9TWF0aC50cnVuYyhhLzIqMjU4KSxhPWE8ZC5sZW5ndGg/ZC5sZW5ndGgrYTpkLmxlbmd0aDw8MSk6YT1kLmxlbmd0aCpiO2E9bmV3IFVpbnQ4QXJyYXkoYSk7YS5zZXQoZCk7cmV0dXJuIHRoaXMub3V0cHV0PWF9OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUuY29uY2F0QnVmZmVyQmxvY2s9ZnVuY3Rpb24oKXtsZXQgYT0wO2NvbnN0IGI9dGhpcy5vdXRwdXQsYz10aGlzLmJsb2NrcztsZXQgZDtjb25zdCBlPW5ldyBVaW50OEFycmF5KHRoaXMudG90YWxwb3MrKHRoaXMub3AtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTtsZXQgZixnLGgsaztpZigwPT09Yy5sZW5ndGgpcmV0dXJuIHRoaXMub3V0cHV0LnN1YmFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLHRoaXMub3ApO2Y9MDtmb3IoZz1jLmxlbmd0aDtmPGc7KytmKWZvcihkPWNbZl0saD0wLGs9ZC5sZW5ndGg7aDxrOysraCllW2ErK109ZFtoXTtmPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO2ZvcihnPXRoaXMub3A7ZjwKZzsrK2YpZVthKytdPWJbZl07dGhpcy5ibG9ja3M9W107cmV0dXJuIHRoaXMuYnVmZmVyPWV9O1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5jb25jYXRCdWZmZXJEeW5hbWljPWZ1bmN0aW9uKCl7bGV0IGE7Y29uc3QgYj10aGlzLm9wO3RoaXMucmVzaXplPyhhPW5ldyBVaW50OEFycmF5KGIpLGEuc2V0KHRoaXMub3V0cHV0LnN1YmFycmF5KDAsYikpKTphPXRoaXMub3V0cHV0LnN1YmFycmF5KDAsYik7cmV0dXJuIHRoaXMuYnVmZmVyPWF9O3ZhciBtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5SYXdJbmZsYXRlPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlO2Z1bmN0aW9uIFV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsKCl7fVV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsLnN0cmluZ1RvQnl0ZUFycmF5PWZ1bmN0aW9uKGEpe2E9Wy4uLmFdO2xldCBiLGM7Yj0wO2ZvcihjPWEubGVuZ3RoO2I8YztiKyspYVtiXT0oYVtiXS5jaGFyUG9pbnRBdCgwKSYyNTUpPj4+MDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW2FdKX07dmFyIG1vZHVsZSRzcmMkemxpYiR1dGlsPXt9O21vZHVsZSRzcmMkemxpYiR1dGlsLlV0aWw9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWw7ZnVuY3Rpb24gQWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYSl7InN0cmluZyI9PT10eXBlb2YgYSYmKGE9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWwuc3RyaW5nVG9CeXRlQXJyYXkoYSkpO3JldHVybiBBZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGUoMSxhKX1BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGU9ZnVuY3Rpb24oYSxiKXtsZXQgYz1hJjY1NTM1O2E9YT4+PjE2JjY1NTM1O2xldCBkPWIubGVuZ3RoLGUsZj0wO2Zvcig7MDxkOyl7ZT1kPkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj9BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5PcHRpbWl6YXRpb25QYXJhbWV0ZXI6ZDtkLT1lO2RvIGMrPWJbZisrXSxhKz1jO3doaWxlKC0tZSk7YyU9NjU1MjE7YSU9NjU1MjF9cmV0dXJuKGE8PDE2fGMpPj4+MH07CkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj0xMDI0O3ZhciBtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMj17fTttb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5BZGxlcjMyPUFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyO2Z1bmN0aW9uIEluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlKGEsYil7dGhpcy5pbnB1dD1hO3RoaXMuaXA9MDtpZihifHwhKGI9e30pKWIuaW5kZXgmJih0aGlzLmlwPWIuaW5kZXgpLGIudmVyaWZ5JiYodGhpcy52ZXJpZnk9Yi52ZXJpZnkpO2NvbnN0IGM9YVt0aGlzLmlwKytdLGQ9YVt0aGlzLmlwKytdO3N3aXRjaChjJjE1KXtjYXNlIENvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFOnRoaXMubWV0aG9kPUNvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoInVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1ldGhvZCIpO31pZigwIT09KChjPDw4KStkKSUzMSl0aHJvdyBFcnJvcigiaW52YWxpZCBmY2hlY2sgZmxhZzoiKygoYzw8OCkrZCklMzEpO2lmKGQmMzIpdGhyb3cgRXJyb3IoImZkaWN0IGZsYWcgaXMgbm90IHN1cHBvcnRlZCIpO3RoaXMucmF3aW5mbGF0ZT0KbmV3IFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlKGEse2luZGV4OnRoaXMuaXAsYnVmZmVyU2l6ZTpiLmJ1ZmZlclNpemUsYnVmZmVyVHlwZTpiLmJ1ZmZlclR5cGUscmVzaXplOmIucmVzaXplfSl9SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJGluZmxhdGUuQnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlOwpJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5wcm90b3R5cGUuZGVjb21wcmVzcz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5wdXQ7Y29uc3QgYj10aGlzLnJhd2luZmxhdGUuZGVjb21wcmVzcygpO3RoaXMuaXA9dGhpcy5yYXdpbmZsYXRlLmlwO2lmKHRoaXMudmVyaWZ5JiYoYT0oYVt0aGlzLmlwKytdPDwyNHxhW3RoaXMuaXArK108PDE2fGFbdGhpcy5pcCsrXTw8OHxhW3RoaXMuaXArK10pPj4+MCxhIT09QWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYikpKXRocm93IEVycm9yKCJpbnZhbGlkIGFkbGVyLTMyIGNoZWNrc3VtIik7cmV0dXJuIGJ9O3ZhciBtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5JbmZsYXRlPUluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlO2NvbnN0IFBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGU9NjU1MzYsUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZT0xNixjc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlPSh7bWVtb3J5OmEsbWVzc2FnZVBvcnQ6YixzdHJlYW1CdWZmZXI6Y30pPT5mdW5jdGlvbihkLGUsZixnKXtpZihhKXtkPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGcsZik7ZD11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGQpO3ZhciBoPS9cbiQvZy50ZXN0KGQpO2U9L15cbi9nLnRlc3QoZCk7dmFyIGs9ZC5zcGxpdCgiXG4iKS5maWx0ZXIobT0+MDxtLmxlbmd0aCksbD1bXTtpZigwPT09ay5sZW5ndGgmJmh8fGUpbC5wdXNoKGMuam9pbigiIikpLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYyk7ay5mb3JFYWNoKChtLG4pPT57bisxPT09ay5sZW5ndGg/aD8wPT09bj8obC5wdXNoKGMuam9pbigiIikrbSksCmNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKTpjLnB1c2gobSk6MD09PW4/KGwucHVzaChjLmpvaW4oIiIpK20pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKX0pO2wuZm9yRWFjaChtPT57bS5yZXBsYWNlKC8oXHJcbnxcbnxccikvZ20sIiIpJiZiLnBvc3Qoe2xvZzptfSl9KX19LGFzc2VydFBsdWdpbkV4cG9ydHMkJG1vZHVsZSRzcmMkbW9kdWxlPWE9PntpZihhJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYib2JqZWN0Ij09PXR5cGVvZiBhLmV4cG9ydHMpe2lmKGEuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycyl7aWYoYS5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZXx8YS5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8YS5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQpcmV0dXJuITA7Y29uc29sZS5lcnJvcihhLmV4cG9ydHMsIkEgY3NvdW5kIHBsdWdpbiB0dXJucyBvdXQgdG8gYmUgbmVpdGhlciBhIHBsdWdpbiwgb3Bjb2RlIG9yIG1vZHVsZS5cblBlcmhhcHMgY3NkbC5oIG9yIG1vZHVsZS5oIHdhc24ndCBpbXBvcnRlZCBjb3JyZWN0bHk/Iik7CnJldHVybiExfWNvbnNvbGUuZXJyb3IoIkEgY3NvdW5kIHBsdWdpbiBkaWRuJ3QgZXhwb3J0IF9fd2FzbV9jYWxsX2N0b3JzLlxuUGxlYXNlIHJlLXJ1biB3YXNtLWxkIHdpdGggZWl0aGVyIC0tZXhwb3J0LWFsbCBvciBpbmNsdWRlIC0tZXhwb3J0PV9fd2FzbV9jYWxsX2N0b3JzIik7cmV0dXJuITF9Y29uc29sZS5lcnJvcigiRXJyb3IgaW5zdGFudGlhdGluZyBhIGNzb3VuZCBwbHVnaW4sIGluc3RhbmNlIGFuZC9vciBleHBvcnQgaXMgbWlzc2luZyEiKTtyZXR1cm4hMX0sZ2V0QmluYXJ5SGVhZGVyRGF0YSQkbW9kdWxlJHNyYyRtb2R1bGU9YT0+e2Z1bmN0aW9uIGIoKXtsZXQgbD0wLG09MTtmb3IoOzspe2NvbnN0IG49YVtjKytdO2wrPShuJjEyNykqbTttKj0xMjg7aWYoIShuJjEyOCkpYnJlYWt9cmV0dXJuIGx9MTgzNjI3ODAxNiE9PShuZXcgVWludDMyQXJyYXkoKG5ldyBVaW50OEFycmF5KGEuc3ViYXJyYXkoMCwyNCkpKS5idWZmZXIpKVswXSYmY29uc29sZS5lcnJvcigiV2FzbSBtYWdpYyBudW1iZXIgaXMgbWlzc2luZyEiKTsKaWYoMCE9PWFbOF0pcmV0dXJuIGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyKCJEeWxpbmsgc2VjdGlvbiB3YXNuJ3QgZm91bmQgaW4gd2FzbSBiaW5hcnksIGFzc3VtaW5nIHN0YXRpYyB3YXNtLiIpLCJzdGF0aWMiO2xldCBjPTk7Y29uc3QgZD1iKCk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iZCIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09InkiLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJsIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iaSIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09Im4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJrIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0KIi4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSIwIi5jb2RlUG9pbnRBdCgwKSk7Yys9Mztjb25zdCBlPWIoKSxmPWIoKSxnPWIoKSxoPWIoKSxrPWIoKTtyZXR1cm57c2VjdGlvblNpemU6ZCxtZW1vcnlTaXplOmUsbWVtb3J5QWxpZ246ZixuZWVkZWREeW5saWJzQ291bnQ6ayx0YWJsZVNpemU6Zyx0YWJsZUFsaWduOmh9fSxsb2FkU3RhdGljV2FzbSQkbW9kdWxlJHNyYyRtb2R1bGU9YXN5bmMoe3dhc21CeXRlczphLHdhc2k6YixtZXNzYWdlUG9ydDpjfSk9Pntjb25zdCBkPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoYSk7YT1uZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjE2Mzg0fSk7Y29uc3QgZT1iLmdldEltcG9ydHMoZCk7ZS5lbnY9ZS5lbnZ8fHt9O2UuZW52LmNzb3VuZExvYWRNb2R1bGVzPSgpPT4wO2UuZW52Lm1lbW9yeT1hO2UuZW52LmNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjaz1jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlKHttZW1vcnk6ZS5lbnYubWVtb3J5LApzdHJlYW1CdWZmZXI6W10sbWVzc2FnZVBvcnQ6Y30pO2M9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZCxlKTtiLnNldE1lbW9yeShhKTtiLnN0YXJ0KGMpO2MuZXhwb3J0cy5fX3dhc2lfanNfY3NvdW5kU2V0TWVzc2FnZVN0cmluZ0NhbGxiYWNrKCk7cmV0dXJuW2MsYl19Owp2YXIgJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbW9kdWxlPWFzeW5jIGZ1bmN0aW9uKHt3YXNtRGF0YVVSSTphLHdpdGhQbHVnaW5zOmI9W10sbWVzc2FnZVBvcnQ6Y30pe3ZhciBkPXt9O2NvbnN0IGU9bmV3IFdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHtwcmVvcGVuczp7Ii8iOiIvIn19KTthPW5ldyBVaW50OEFycmF5KGEpO2E9KG5ldyBJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZShhKSkuZGVjb21wcmVzcygpO3ZhciBmPWdldEJpbmFyeUhlYWRlckRhdGEkJG1vZHVsZSRzcmMkbW9kdWxlKGEpO2lmKCJzdGF0aWMiPT09ZilyZXR1cm4gYXdhaXQgbG9hZFN0YXRpY1dhc20kJG1vZHVsZSRzcmMkbW9kdWxlKHttZXNzYWdlUG9ydDpjLHdhc21CeXRlczphLHdhc21GczpkLHdhc2k6ZX0pO2NvbnN0IHttZW1vcnlTaXplOmcsbWVtb3J5QWxpZ246aCx0YWJsZVNpemU6a309ZjtiPWF3YWl0IGIucmVkdWNlKGFzeW5jKHIsdyk9PntyPWF3YWl0IHI7CmxldCBCLHo7dHJ5e0I9bmV3IFVpbnQ4QXJyYXkodyksej1nZXRCaW5hcnlIZWFkZXJEYXRhJCRtb2R1bGUkc3JjJG1vZHVsZShCKX1jYXRjaChDKXtjb25zb2xlLmVycm9yKCJFcnJvciBpbiBwbHVnaW4iLEMpfXomJnIucHVzaCh7aGVhZGVyRGF0YTp6LHdhc21QbHVnaW5CeXRlczpCfSk7cmV0dXJuIHJ9LFtdKTt2YXIgbD0xMjgqUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZTtkPU1hdGguY2VpbCgoZytoKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPU1hdGguY2VpbChiLnJlZHVjZSgocix7aGVhZGVyRGF0YTp3fSk9PiJzdGF0aWMiPT09dz8wOnIrKHcubWVtb3J5U2l6ZStoKSwwKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPWQrZitsO2NvbnN0IG09bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDpmLG1heGltdW06MTAyNCpQQUdFU19QRVJfTUIkJG1vZHVsZSRzcmMkbW9kdWxlfSksbj1uZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6aysKMSxlbGVtZW50OiJhbnlmdW5jIn0pO2Uuc2V0TWVtb3J5KG0pO2NvbnN0IHA9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sZipQQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LGYqUEFHRV9TSVpFJCRtb2R1bGUkc3JjJG1vZHVsZSk7bD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxsKTtjb25zdCBxPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITF9LDEpLHU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7YT1hd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGEpO2NvbnN0IHQ9ZS5nZXRJbXBvcnRzKGEpO2xldCB2PVtdLEE9ZDt0LmVudj10LmVudnx8e307dC5lbnYubWVtb3J5PW07dC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT0Kbjt0LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt0LmVudi5fX21lbW9yeV9iYXNlPWw7dC5lbnYuX190YWJsZV9iYXNlPXE7dC5lbnYuY3NvdW5kTG9hZE1vZHVsZXM9cj0+e3YuZm9yRWFjaCh3PT57dm9pZCAwPT09eT9jb25zb2xlLmVycm9yKCJjc291bmQtd2FzbSBpbnRlcm5hbDogdGltaW5nIHByb2JsZW0gZGV0ZWN0ZWQhIik6ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdCh5LHcsbixyKX0pO3JldHVybiAwfTt0LmVudi5fWlRINWVycm5vPWZ1bmN0aW9uKCl7fTt0LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s9Y3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrJCRtb2R1bGUkc3JjJG1vZHVsZSh7bWVtb3J5Om0sbWVzc2FnZVBvcnQ6YyxzdHJlYW1CdWZmZXI6W119KTt0LmVudi5wcmludERlYnVnQ2FsbGJhY2s9KHIsdyk9PntyPW5ldyBVaW50OEFycmF5KG0uYnVmZmVyLHIsdyk7cj11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKHIpO2NvbnNvbGUubG9nKHIpfTsKdFsiR09ULm1lbSJdPXRbIkdPVC5tZW0iXXx8e307dFsiR09ULm1lbSJdLl9faGVhcF9iYXNlPWY7dFsiR09ULmZ1bmMiXT10WyJHT1QuZnVuYyJdfHx7fTtjb25zdCB5PWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGEsdCk7Yz1PYmplY3QuYXNzaWduKHt9LHkuZXhwb3J0cyk7YT17fTthLmV4cG9ydHM9T2JqZWN0LmFzc2lnbihjLHttZW1vcnk6bX0pO3Y9YXdhaXQgYi5yZWR1Y2UoYXN5bmMocix7aGVhZGVyRGF0YTp3LHdhc21QbHVnaW5CeXRlczpCfSk9PntyPWF3YWl0IHI7dHJ5e2NvbnN0IHttZW1vcnlTaXplOnosbWVtb3J5QWxpZ246Qyx0YWJsZVNpemU6Rn09dyxFPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoQikseD1lLmdldEltcG9ydHMoRSksRz1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxBKlBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO24uZ3JvdyhGKTt4LmVudj1PYmplY3QuYXNzaWduKHt9LHguZW52KTt4LmVudi5tZW1vcnk9Cm07eC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT1uO3guZW52Ll9fbWVtb3J5X2Jhc2U9Rzt4LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt4LmVudi5fX3RhYmxlX2Jhc2U9cTt4LmVudi5jc291bmRMb2FkTW9kdWxlcz11O2RlbGV0ZSB4LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s7QSs9TWF0aC5jZWlsKCh6K0MpL1BBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO2NvbnN0IEQ9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSx4KTthc3NlcnRQbHVnaW5FeHBvcnRzJCRtb2R1bGUkc3JjJG1vZHVsZShEKSYmKEQuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycygpLHIucHVzaChEKSl9Y2F0Y2goeil7Y29uc29sZS5lcnJvcigiRXJyb3Igd2hpbGUgY29tcGlsaW5nIGNzb3VuZC1wbHVnaW4iLHopfXJldHVybiByfSxbXSk7ZS5zdGFydChhKTthLmV4cG9ydHMuX193YXNpX2pzX2Nzb3VuZFNldE1lc3NhZ2VTdHJpbmdDYWxsYmFjaygpO3JldHVyblthLGVdfSwKbW9kdWxlJHNyYyRtb2R1bGU9e307bW9kdWxlJHNyYyRtb2R1bGUuY3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrPWNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjayQkbW9kdWxlJHNyYyRtb2R1bGU7bW9kdWxlJHNyYyRtb2R1bGUuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGU7Y29uc3QgaGFuZGxlQ3NvdW5kU3RhcnQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9KGEsYixjLGQsZSk9PmY9Pntjb25zdCB7Y3NvdW5kOmd9PWYsaD0xPT09Yi5jc291bmRTaG91bGREYWVtb25pemUoZyk7aCYmKGIuY3NvdW5kU2V0T3B0aW9uKGcsIi0tZGFlbW9uIiksYi5jc291bmRTZXRPcHRpb24oZywiLW9kYWMiKSk7Y29uc3Qgaz1iLmNzb3VuZFN0YXJ0KGcpLGw9Yi5jc291bmRHZXRPdXRwdXROYW1lKGcpfHwidGVzdC53YXYiO2xvZ0NvbW1vblV0aWxzJCRtb2R1bGUkc3JjJGxvZ2dlcihgaGFuZGxlQ3NvdW5kU3RhcnQ6IGFjdHVhbCBjc291bmRTdGFydCByZXN1bHQgJHtrfSwgb3V0cHV0TmFtZTogJHtsfWApKCk7MCE9PWsmJmEucG9zdChgZXJyb3I6IGNzb3VuZFN0YXJ0IGZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gcmVuZGVyICR7bH0sYCsiIGxvb2sgb3V0IGZvciBlcnJvcnMgaW4gb3B0aW9ucyBhbmQgc3ludGF4Iik7c2V0VGltZW91dCgoKT0+e2NvbnN0IG09CmIuX2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0KGcpO2lmKGh8fG18fGwuaW5jbHVkZXMoImRhYyIpKWQoZik7ZWxzZSBpZihhLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLGUpZShmKTtlbHNlIGZvcig7MD09PWIuY3NvdW5kUGVyZm9ybUtzbXBzKGcpOyk7fSwwKTtyZXR1cm4ga30saW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz0oYSxiKT0+e2NvbnN0IGM9W107Zm9yKGxldCBkPTA7ZDxhO2QrKyljLnB1c2gobmV3IEZsb2F0NjRBcnJheShiKSk7cmV0dXJuIGN9LHJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzPSh7bGlicmFyeUNzb3VuZDphLHdvcmtlck1lc3NhZ2VQb3J0OmJ9KT0+YXN5bmMoe2Nzb3VuZDpjfSk9Pntjb25zdCBkPWEuY3NvdW5kR2V0S3IoYyk7bGV0IGU9MCxmPTA7Zm9yKDsoInJlbmRlclN0YXJ0ZWQiPT09Yi52YW5pbGxhV29ya2VyU3RhdGV8fCJyZW5kZXJTdGFydGVkIj09PQpiLndvcmtlclN0YXRlKSYmMD09PWU7KWU9YS5jc291bmRQZXJmb3JtS3NtcHMoYyksZis9MSwiZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQmJjA9PT1lJiYwPT09ZiUoMipkKSYmYXdhaXQgbmV3IFByb21pc2UoZz0+c2V0VGltZW91dChnLDApKTtiLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKX07dmFyIG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9e307bW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscy5oYW5kbGVDc291bmRTdGFydD1oYW5kbGVDc291bmRTdGFydCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLmluc3RhbnRpYXRlQXVkaW9QYWNrZXQ9aW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLnJlbmRlckZ1bmN0aW9uPXJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO2xldCBsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLGNvbWJpbmVkJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyO2NvbnN0IHJ0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyPVtdLGNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1hc3luYyhhLGIpPT4oYT1jb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5nZXQoYSkpJiZhLmFwcGx5KHt9LGJ8fFtdKTsKY2xhc3MgV29ya2xldFNpbmdsZXRocmVhZFdvcmtlciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvcntzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCl7cmV0dXJuW119Y29uc3RydWN0b3IoYSl7c3VwZXIoYSk7dGhpcy5zYW1wbGVSYXRlPXNhbXBsZVJhdGU7dGhpcy5vcHRpb25zPWE7dGhpcy5pbml0aWFsaXplPXRoaXMuaW5pdGlhbGl6ZS5iaW5kKHRoaXMpO3RoaXMucGF1c2U9dGhpcy5wYXVzZS5iaW5kKHRoaXMpO3RoaXMucHJvY2Vzcz10aGlzLnByb2Nlc3MuYmluZCh0aGlzKTt0aGlzLnJlc3VtZT10aGlzLnJlc3VtZS5iaW5kKHRoaXMpO3RoaXMuc3RhcnQ9dGhpcy5zdGFydC5iaW5kKHRoaXMpO3RoaXMuaXNQYXVzZWQ9dGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPSExO3RoaXMuY2FsbFVuY2xvbmVkPSgpPT5jb25zb2xlLmVycm9yKCJDc291bmQgd29ya2xldCB0aHJlYWQgaXMgc3RpbGwgdW5pbml0aWFsaXplZCEiKTsKdGhpcy5wb3J0LnN0YXJ0KCk7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanModGhpcyx0aGlzLnBvcnQpO3RoaXMud29ya2VyTWVzc2FnZVBvcnQ9bmV3ICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTt0aGlzLmluaXRpYWxpemVNZXNzYWdlUG9ydD0oe21lc3NhZ2VQb3J0OmIscnRtaWRpUG9ydDpjfSk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LnBvc3Q9ZD0+Yi5wb3N0TWVzc2FnZSh7bG9nOmR9KTt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZT1kPT57dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSE9PWQmJih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LndvcmtlclN0YXRlPWQpO2IucG9zdE1lc3NhZ2Uoe3BsYXlTdGF0ZUNoYW5nZTpkfSl9O3RoaXMud29ya2VyTWVzc2FnZVBvcnQucmVhZHk9ITA7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImluaXRSdE1pZGlFdmVudFBvcnQiKSgpOwp0aGlzLnJ0bWlkaVBvcnQ9Yzt0aGlzLnJ0bWlkaVBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtkYXRhOmR9KT0+e3J0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLnB1c2goZCl9KTt0aGlzLnJ0bWlkaVBvcnQuc3RhcnQoKX19YXN5bmMgaW5pdGlhbGl6ZShhLGIpe2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0aWFsaXppbmcgd29ya2xldC5zaW5nbGV0aHJlYWQud29ya2VyIikoKTtsZXQgYztjb25zdCBkPW5ldyBQcm9taXNlKGU9PntjPWV9KTskanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGUoe3dhc21EYXRhVVJJOmEsd2l0aFBsdWdpbnM6YixtZXNzYWdlUG9ydDp0aGlzLndvcmtlck1lc3NhZ2VQb3J0fSkudGhlbigoW2UsZl0pPT57dGhpcy53YXNtPWU7dGhpcy53YXNpPWY7ZS53YXNpPWY7bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj0KJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbGliY3NvdW5kKGUpO3RoaXMuY2FsbFVuY2xvbmVkPWNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcjt0aGlzLmNzb3VuZD1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZENyZWF0ZSgwKTt0aGlzLnJlc3VsdD0wO3RoaXMuc3RhcnRlZD10aGlzLmlzUmVuZGVyaW5nPXRoaXMucnVubmluZz0hMTt0aGlzLnJlc2V0Q3NvdW5kKCExKTtlPXBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRDcmVhdGUiLGFzeW5jIGc9PnRoaXMuY3NvdW5kKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRSZXNldCIsdGhpcy5yZXNldENzb3VuZC5iaW5kKHRoaXMpKSwKYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RhcnQiLHRoaXMuc3RhcnQuYmluZCh0aGlzKSksYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RvcCIsdGhpcy5zdG9wLmJpbmQodGhpcykpLGFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoIndhc20iLGUpKShsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTtjb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1uZXcgTWFwKE9iamVjdC5lbnRyaWVzKGUpKTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigid2FzbSBpbml0aWFsaXplZCBhbmQgYXBpIGdlbmVyYXRlZCIpKCk7YygpfSk7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoIndhaXRpbmcgb24gd2FzbSBpbml0aWFsaXphdGlvbiB0byBjb21wbGV0ZSIpKCk7CmF3YWl0IGR9YXN5bmMgcmVzZXRDc291bmQoYSl7aWYoYSYmIXRoaXMud29ya2VyTWVzc2FnZVBvcnR8fGEmJiJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiIT09dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIiE9PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUpcmV0dXJuLTE7YSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIj09PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUmJnRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiKTt0aGlzLnN0YXJ0ZWQ9dGhpcy5ydW5uaW5nPSExO3RoaXMucmVzdWx0PTA7Y29uc3QgYj10aGlzLmNzb3VuZDthJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFJlc2V0KGIpO2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyhiKTsKdGhpcy5zYW1wbGVSYXRlJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFNldE9wdGlvbihiLCItLXNhbXBsZS1yYXRlPSIrdGhpcy5zYW1wbGVSYXRlKTt0aGlzLm5jaG5sc19pPXRoaXMubmNobmxzPS0xO2RlbGV0ZSB0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcn1zdG9wKCl7dGhpcy5jc291bmQmJmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU3RvcCh0aGlzLmNzb3VuZCk7dGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VFbmRlZCIpfXBhdXNlKCl7dGhpcy5pc1BhdXNlZHx8KHRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlUGF1c2VkIiksdGhpcy5pc1BhdXNlZD0hMCl9cmVzdW1lKCl7dGhpcy5pc1BhdXNlZCYmCih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZVJlc3VtZWQiKSx0aGlzLmlzUGF1c2VkPSExKX1wcm9jZXNzKGEsYil7aWYoISh0aGlzLmlzUmVuZGVyaW5nfHwhdGhpcy5pc1BhdXNlZCYmdGhpcy5jc291bmRPdXRwdXRCdWZmZXImJnRoaXMucnVubmluZykpe2E9YlswXTtiPWFbMF0ubGVuZ3RoO2Zvcih2YXIgYz0wO2M8YjtjKyspZm9yKHZhciBkPTA7ZDxhLm51bWJlck9mQ2hhbm5lbHM7ZCsrKWFbZF1bY109MDtyZXR1cm4hMH10aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb24mJih0aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb249ITEsdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIikpOzA8cnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIubGVuZ3RoJiYocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuZm9yRWFjaChxPT4Ke2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kUHVzaE1pZGlNZXNzYWdlKHRoaXMuY3NvdW5kLHFbMF0scVsxXSxxWzJdKX0pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIpKTthPWFbMF07Yj1iWzBdO2M9YlswXS5sZW5ndGg7ZD10aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcjtsZXQgZT10aGlzLmNzb3VuZElucHV0QnVmZmVyO2NvbnN0IGY9dGhpcy5rc21wcyxnPXRoaXMuemVyb2RCRlM7bGV0IGg9dGhpcy5jbnQ7Y29uc3Qgaz10aGlzLm5jaG5scyxsPXRoaXMubmNobmxzX2k7bGV0IG09dGhpcy5yZXN1bHQ7Zm9yKGxldCBxPTA7cTxjO3ErKyxoKyspe2g+PWYmJjA9PT1tJiYobT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFBlcmZvcm1Lc21wcyh0aGlzLmNzb3VuZCksCmg9MCwwIT09bSYmKHRoaXMuc3RhcnRlZD10aGlzLnJ1bm5pbmc9ITEsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRDbGVhbnVwKHRoaXMuY3NvdW5kKSx0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZUVuZGVkIikpKTtkJiYwIT09ZC5sZW5ndGh8fChkPXRoaXMuY3NvdW5kT3V0cHV0QnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkodGhpcy53YXNtLndhc2kubWVtb3J5LmJ1ZmZlcixsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldFNwb3V0KHRoaXMuY3NvdW5kKSxmKmspKTtlJiYwIT09ZS5sZW5ndGh8fChlPXRoaXMuY3NvdW5kSW5wdXRCdWZmZXI9bmV3IEZsb2F0NjRBcnJheSh0aGlzLndhc20ud2FzaS5tZW1vcnkuYnVmZmVyLGxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3Bpbih0aGlzLmNzb3VuZCksCmYqbCkpO3ZhciBuPU1hdGgubWluKHRoaXMubmNobmxzX2ksYS5sZW5ndGgpO2Zvcih2YXIgcD0wO3A8bjtwKyspZVtoKmwrcF09YVtwXVtxXSpnO2lmKHRoaXMubmNobmxzPT09Yi5sZW5ndGgpZm9yKGNvbnN0IFt1LHRdb2YgYi5lbnRyaWVzKCkpdFtxXT0wPT09bT9kW2gqayt1XS9nOjA7ZWxzZSBpZigyPT09dGhpcy5uY2hubHMmJjE9PT1iLmxlbmd0aCliWzBdW3FdPTA9PT1tPy41KihkW2gqa10vZytkW2gqaysxXS9nKTowO2Vsc2UgaWYoMT09PXRoaXMubmNobmxzJiYyPT09Yi5sZW5ndGgpaWYobj1iWzBdLHA9YlsxXSwwPT09bSl7Y29uc3QgdT1kW2gqa10vZztuW3FdPXU7cFtxXT11fWVsc2UgbltxXT0wLHBbcV09MH10aGlzLmNudD1oO3RoaXMucmVzdWx0PW07cmV0dXJuITB9YXN5bmMgaXNSZXF1ZXN0aW5nSW5wdXQoKXtyZXR1cm4obGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRJbnB1dE5hbWUodGhpcy5jc291bmQpfHwKIiIpLmluY2x1ZGVzKCJhZGMiKX1hc3luYyBpc1JlcXVlc3RpbmdSZWFsdGltZU91dHB1dCgpe3JldHVybihsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldE91dHB1dE5hbWUodGhpcy5jc291bmQpfHwiIikuaW5jbHVkZXMoImRhYyIpfWFzeW5jIHN0YXJ0KCl7bGV0IGE9LTE7aWYodGhpcy5zdGFydGVkKWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHdhcyBhc2tlZCB0byBzdGFydCBidXQgaXQgYWxyZWFkeSBoYXMhIikoKTtlbHNle2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHRocmVhZCBpcyBzdGFydGluZy4uIikoKTtjb25zdCBiPXRoaXMuY3NvdW5kLGM9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRLc21wcyhiKTsKdGhpcy5jbnQ9dGhpcy5rc21wcz1jO3RoaXMubmNobmxzPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0TmNobmxzKGIpO3RoaXMubmNobmxzX2k9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXROY2hubHNJbnB1dChiKTt0aGlzLnplcm9kQkZTPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0MGRCRlMoYik7YT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFN0YXJ0KGIpO2lmKDAhPT1hKXJldHVybiBhO2lmKGF3YWl0IHRoaXMuaXNSZXF1ZXN0aW5nUmVhbHRpbWVPdXRwdXQoKSl0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsCmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3BvdXQoYiksYyp0aGlzLm5jaG5scyksdGhpcy5jc291bmRJbnB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRTcGluKGIpLGMqdGhpcy5uY2hubHNfaSksbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImNzb3VuZFN0YXJ0IGNhbGxlZCB3aXRoIHt9IHJldHVybiB2YWwiLGEpKCksdGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPXRoaXMuc3RhcnRlZD0hMDtlbHNlIHJldHVybiB0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLHRoaXMuaXNSZW5kZXJpbmc9ITAscmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoe2xpYnJhcnlDc291bmQ6bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciwKd29ya2VyTWVzc2FnZVBvcnQ6dGhpcy53b3JrZXJNZXNzYWdlUG9ydCx3YXNpOnRoaXMud2FzaX0pKHtjc291bmQ6Yn0pLnRoZW4oKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSkuY2F0Y2goKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSksMH10aGlzLnJ1bm5pbmc9ITA7cmV0dXJuIGF9fXJlZ2lzdGVyUHJvY2Vzc29yKCJjc291bmQtc2luZ2xldGhyZWFkLXdvcmtsZXQtcHJvY2Vzc29yIixXb3JrbGV0U2luZ2xldGhyZWFkV29ya2VyJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj17fTsKLy8jIHNvdXJjZVVSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcwovLyMgc291cmNlTWFwcGluZ1VSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcy5tYXAK",
+module$dist$__compiled_worklet_singlethread_worker_inline={};module$dist$__compiled_worklet_singlethread_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline;const initializeModule$$module$src$mains$worklet_singlethread_main=async a=>{logSinglethreadWorkletMain$$module$src$logger("Initialize Module")();try{await a.audioWorklet.addModule($jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline())}catch(b){return console.error("Error calling audioWorklet.addModule",b),!1}return!0};
+class SingleThreadAudioWorkletMainThread$$module$src$mains$worklet_singlethread_main{constructor({audioContext:a,inputChannelCount:b=1,outputChannelCount:c=2}){this.exportApi={};this.ipcMessagePorts=new IPCMessagePorts$$module$src$mains$messages_main;this.publicEvents=new PublicEventAPI$$module$src$events(this);this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.audioContext=a;this.inputChannelCount=b;this.outputChannelCount=c;this.messageCallbacks=[];this.onPlayStateChange=
+this.onPlayStateChange.bind(this);this.currentPlayState=void 0}async terminateInstance(){this.node&&(this.node.disconnect(),delete this.node);this.audioContext&&("closed"!==this.audioContext.state&&await this.audioContext.close(),delete this.audioContext);this.workletProxy&&(this.workletProxy[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),delete this.workletProxy);this.publicEvents&&(this.publicEvents.terminateInstance(),delete this.publicEvents);Object.keys(this.exportApi).forEach(a=>
+delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}async onPlayStateChange(a){if(this.currentPlayState!==a&&this.publicEvents)switch(this.currentPlayState=a,a){case "realtimePerformanceStarted":this.eventPromises.isWaitingToStart()&&(logSinglethreadWorkletMain$$module$src$logger("Start promise resolved")(),this.eventPromises.releaseStartPromise());this.publicEvents.triggerRealtimePerformanceStarted(this);break;case "realtimePerformanceEnded":this.midiPortStarted=!1;this.currentPlayState=
+void 0;this.publicEvents&&this.publicEvents.triggerRealtimePerformanceEnded(this);this.eventPromises&&this.eventPromises.isWaitingToStop()&&this.eventPromises.releaseStopPromise();this.eventPromises&&this.eventPromises.releaseStartPromise();break;case "realtimePerformancePaused":this.publicEvents.triggerRealtimePerformancePaused(this);break;case "realtimePerformanceResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);break;case "renderStarted":this.eventPromises.isWaitingToStart()&&
+(logSinglethreadWorkletMain$$module$src$logger("Start promise resolved")(),this.publicEvents.triggerRenderStarted(this),this.eventPromises.releaseStartPromise());break;case "renderEnded":this.publicEvents.triggerRenderEnded(this),this.eventPromises&&this.eventPromises.isWaitingToStop()&&this.eventPromises.releaseStopPromise(),this.eventPromises&&this.eventPromises.releaseStartPromise()}}async csoundPause(){void 0!==this.workletProxy&&await this.workletProxy.pause()}async csoundResume(){void 0!==this.workletProxy&&
+await this.workletProxy.resume()}handleMidiInput({data:a}){this.ipcMessagePorts.csoundMainRtMidiPort.postMessage&&this.ipcMessagePorts.csoundMainRtMidiPort.postMessage(a)}async initialize({wasmDataURI:a,withPlugins:b,autoConnect:c}){b&&0<b.length&&(b=await fetchPlugins$$module$src$utils(b));await initializeModule$$module$src$mains$worklet_singlethread_main(this.audioContext);this.node=new AudioWorkletNode(this.audioContext,"csound-singlethread-worklet-processor",{inputChannelCount:this.inputChannelCount?
+[this.inputChannelCount]:0,outputChannelCount:[this.outputChannelCount||2]});c&&this.node.connect(this.audioContext.destination);try{logSinglethreadWorkletMain$$module$src$logger("wrapping Comlink proxy endpoint on the audioWorkletNode.port")(),this.workletProxy=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(this.node.port)}catch(e){console.error("COMLINK ERROR",e)}await this.workletProxy.initializeMessagePort(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({messagePort:this.ipcMessagePorts.workerMessagePort,
+rtmidiPort:this.ipcMessagePorts.csoundWorkerRtMidiPort},[this.ipcMessagePorts.workerMessagePort,this.ipcMessagePorts.csoundWorkerRtMidiPort]));this.ipcMessagePorts.mainMessagePort.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePort.start();await this.workletProxy.initialize(a(),b);const d=await makeProxyCallback$$module$src$utils(this.workletProxy,void 0,"csoundCreate",this.currentPlayState)();this.csoundInstance=d;await makeProxyCallback$$module$src$utils(this.workletProxy,
+d,"csoundInitialize",this.currentPlayState)(0);this.exportApi.pause=this.csoundPause.bind(this);this.exportApi.resume=this.csoundResume.bind(this);this.exportApi.terminateInstance=this.terminateInstance.bind(this);this.exportApi.getAudioContext=async()=>this.audioContext;this.exportApi.getNode=async()=>this.node;this.exportApi.enableAudioInput=enableAudioInput$$module$src$mains$io_utils.bind(this.exportApi);this.exportApi.name="Csound: Audio Worklet, Single-threaded";this.exportApi=this.publicEvents.decorateAPI(this.exportApi);
+this.exportApi.addListener("message",console.log);for(const e of Object.keys(api$$module$src$libcsound)){const f=api$$module$src$libcsound[e],g=makeProxyCallback$$module$src$utils(this.workletProxy,d,e,this.currentPlayState);switch(e){case "csoundCreate":break;case "csoundStart":a=async function(){this.eventPromises.createStartPromise();var h=await this.workletProxy.isRequestingInput();if(await this.workletProxy.isRequestingRealtimeOutput())return h&&this.exportApi.enableAudioInput(),await this.exportApi._isRequestingRtMidiInput(d)&&
+requestMidi$$module$src$utils$request_midi({onMidiMessage:this.handleMidiInput.bind(this)}),h=await g({csound:d}),this.publicEvents.triggerOnAudioNodeCreated(this.node),await this.eventPromises.waitForStart(),h;g({csound:d});this.publicEvents.triggerOnAudioNodeCreated(this.node);await this.eventPromises.waitForStart();return 0};a.toString=()=>f.toString();this.exportApi.start=a.bind(this);break;case "csoundStop":a=async()=>{if(this.eventPromises.isWaitingToStop())return logSinglethreadWorkletMain$$module$src$logger("already waiting to stop, doing nothing")(),
+-1;this.eventPromises.createStopPromise();const h=await g();await this.eventPromises.waitForStop();return h};a.toString=()=>f.toString();this.exportApi.stop=a.bind(this);break;case "fs":this.exportApi.fs={};Object.keys(f).forEach(h=>{const k=makeProxyCallback$$module$src$utils(this.workletProxy,d,h,this.currentPlayState);k.toString=()=>f[h].toString();this.exportApi.fs[h]=k});break;default:g.toString=()=>f.toString(),this.exportApi[csoundApiRename$$module$src$utils(e)]=g}}return this.exportApi}}
+var $jscompDefaultExport$$module$src$mains$worklet_singlethread_main=SingleThreadAudioWorkletMainThread$$module$src$mains$worklet_singlethread_main,module$src$mains$worklet_singlethread_main={};module$src$mains$worklet_singlethread_main.default=$jscompDefaultExport$$module$src$mains$worklet_singlethread_main;(0,module$node_modules$unmute_ios_audio$index.default)();
+const Csound$$module$src$index=async function({audioContext:a,inputChannelCount:b,outputChannelCount:c,autoConnect:d=!0,withPlugins:e=[],useWorker:f=!1,useSAB:g=!0,useSPN:h=!1}={}){const k=a&&WebkitAudioContext$$module$src$utils()&&a instanceof WebkitAudioContext$$module$src$utils();k||(a=a||new (WebkitAudioContext$$module$src$utils())({latencyHint:"interactive"}));isSafari$$module$src$utils()&&a.resume();const n=areWorkletsSupported$$module$src$utils(),m=isScriptProcessorNodeSupported$$module$src$utils();
+if(f){n?logIndex$$module$src$logger("worklet support detected")():m?logIndex$$module$src$logger("scriptProcessorNode support detected")():console.error("No WebAudio Support detected");var l;!h&&n?l=new $jscompDefaultExport$$module$src$mains$worklet_main({audioContext:a,audioContextIsProvided:k,autoConnect:d}):m&&(l=new $jscompDefaultExport$$module$src$mains$old_spn_main({audioContext:a,audioContextIsProvided:k,autoConnect:d}));if(l)return(d=isSabSupported$$module$src$utils())?g&&logIndex$$module$src$logger("using SharedArrayBuffers")():
+logIndex$$module$src$logger("SharedArrayBuffers not found, falling back to Vanilla concurrency")(),a=d&&n&&g?new $jscompDefaultExport$$module$src$mains$sab_main({audioWorker:l,audioContext:a,audioContextIsProvided:k,inputChannelCount:b,outputChannelCount:c}):new $jscompDefaultExport$$module$src$mains$vanilla_main({audioWorker:l,audioContextIsProvided:k}),logIndex$$module$src$logger("starting Csound thread initialization via WebWorker")(),await a.initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,
+withPlugins:e}),e=a.api}else{if(n&&!h)return logIndex$$module$src$logger("Single Thread AudioWorklet")(),(new $jscompDefaultExport$$module$src$mains$worklet_singlethread_main({audioContext:a,inputChannelCount:b||2,outputChannelCount:c||2})).initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,withPlugins:e,autoConnect:d});if(m)return logIndex$$module$src$logger("Single Thread ScriptProcessorNode")(),await (new $jscompDefaultExport$$module$src$mains$spn_main({audioContext:a,
+inputChannelCount:b||2,outputChannelCount:c||2})).initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,withPlugins:e,autoConnect:d})}console.error("No detectable WebAudioAPI in current environment")};goog.exportSymbol("Csound$$module$src$index",Csound$$module$src$index);var module$src$index={};module$src$index.Csound=Csound$$module$src$index;
+const Csound = Csound$$module$src$index;
+Csound.toString = () => 'async (options) => CsoundObj;';
+export { Csound }
+export default Csound
+//# sourceMappingURL=csound.js.map
diff --git a/site/code/csound.js.map b/site/code/csound.js.map
new file mode 100644
index 0000000..e123831
--- /dev/null
+++ b/site/code/csound.js.map
@@ -0,0 +1,9 @@
+{
+"version":3,
+"file":"/Users/hlolli/csound/csound/wasm/browser/dist/csound.js",
+"lineCount":898,
+"mappings":"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",
+"sources":["src/com/google/javascript/jscomp/js/base.js","./node_modules/google-closure-library/closure/goog/base.js","./dist/__csound_wasm.inline.js","node_modules/comlink/src/comlink.ts","./node_modules/lines-logger/lib/index.js","./src/logger.js","./src/modules/instantiation.js","./src/utils/text-encoders.js","./src/utils/trim-null.js","./src/utils/string-pointers.js","./src/modules/performance.js","./src/utils/native-sizes.js","./src/utils/structure-buffer-to-object.js","./src/structures.js","./src/modules/attributes.js","./src/modules/rtaudio.js","./node_modules/rambda/dist/rambda.mjs","./src/modules/rtmidi.js","./src/modules/control-events.js","./src/modules/general-io.js","./src/modules/extra.js","./src/modules/score-handling.js","./src/modules/table.js","./src/filesystem/worker-fs.js","./src/libcsound.js","./src/utils.js","./src/mains/messages.main.js","./src/utils/clear-array.js","./src/utils/event-promises.js","./node_modules/eventemitter3/umd/eventemitter3.min.js","./src/events.js","./dist/__compiled.vanilla.worker.inline.js","./src/mains/vanilla.main.js","./node_modules/unmute-ios-audio/index.js","./src/constants.js","./dist/__compiled.sab.worker.inline.js","./src/mains/sab.main.js","./src/utils/request-midi.js","./dist/__compiled.worklet.worker.inline.js","./src/mains/worklet.main.js","./src/mains/io.utils.js","./dist/__compiled.old-spn.worker.inline.js","./src/mains/old-spn.main.js","./src/dlinit.js","./src/filesystem/constants.js","./node_modules/google-closure-library/closure/goog/debug/error.js","./node_modules/google-closure-library/closure/goog/dom/nodetype.js","./node_modules/google-closure-library/closure/goog/asserts/asserts.js","./node_modules/google-closure-library/closure/goog/array/array.js","./node_modules/google-closure-library/closure/goog/dom/asserts.js","./node_modules/google-closure-library/closure/goog/functions/functions.js","./node_modules/google-closure-library/closure/goog/string/typedstring.js","./node_modules/google-closure-library/closure/goog/string/const.js","./node_modules/google-closure-library/closure/goog/html/trustedtypes.js","./node_modules/google-closure-library/closure/goog/html/safescript.js","./node_modules/google-closure-library/closure/goog/fs/url.js","./node_modules/google-closure-library/closure/goog/fs/blob.js","./node_modules/google-closure-library/closure/goog/html/trustedresourceurl.js","./node_modules/google-closure-library/closure/goog/string/internal.js","./node_modules/google-closure-library/closure/goog/html/safeurl.js","./node_modules/google-closure-library/closure/goog/html/safestyle.js","./node_modules/google-closure-library/closure/goog/object/object.js","./node_modules/google-closure-library/closure/goog/html/safestylesheet.js","./node_modules/google-closure-library/closure/goog/dom/htmlelement.js","./node_modules/google-closure-library/closure/goog/dom/tagname.js","./node_modules/google-closure-library/closure/goog/labs/useragent/useragent.js","./node_modules/google-closure-library/closure/goog/labs/useragent/util.js","./node_modules/google-closure-library/closure/goog/labs/useragent/highentropy/highentropyvalue.js","./node_modules/google-closure-library/closure/goog/labs/useragent/highentropy/highentropydata.js","./node_modules/google-closure-library/closure/goog/labs/useragent/browser.js","./node_modules/google-closure-library/closure/goog/dom/tags.js","./node_modules/google-closure-library/closure/goog/html/safehtml.js","./node_modules/google-closure-library/closure/goog/html/uncheckedconversions.js","./node_modules/google-closure-library/closure/goog/dom/safe.js","./node_modules/google-closure-library/closure/goog/string/string.js","./node_modules/google-closure-library/closure/goog/string/path.js","./src/filesystem/wasi.js","./src/zlib/zlib.js","./src/zlib/huffman.js","./src/zlib/rawinflate.js","./src/zlib/util.js","./src/zlib/adler32.js","./src/zlib/inflate.js","./src/module.js","./src/utils/message-port-state.js","./src/mains/spn.main.js","./dist/__compiled.worklet.singlethread.worker.inline.js","./src/mains/worklet.singlethread.main.js","./src/index.js"],
+"sourcesContent":["","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Bootstrap for the Google JS Library (Closure).\n *\n * In uncompiled mode base.js will attempt to load Closure's deps file, unless\n * the global <code>CLOSURE_NO_DEPS</code> is set to true. This allows projects\n * to include their own deps file(s) from different locations.\n *\n * Avoid including base.js more than once. This is strictly discouraged and not\n * supported. goog.require(...) won't work properly in that case.\n *\n * @provideGoog\n */\n\n\n/**\n * @define {boolean} Overridden to true by the compiler.\n */\nvar COMPILED = false;\n\n\n/**\n * Base namespace for the Closure library. Checks to see goog is already\n * defined in the current scope before assigning to prevent clobbering if\n * base.js is loaded more than once.\n *\n * @const\n */\nvar goog = goog || {};\n\n/**\n * Reference to the global object.\n * https://www.ecma-international.org/ecma-262/9.0/index.html#sec-global-object\n *\n * More info on this implementation here:\n * https://docs.google.com/document/d/1NAeW4Wk7I7FV0Y2tcUFvQdGMc89k2vdgSXInw8_nvCI/edit\n *\n * @const\n * @suppress {undefinedVars} self won't be referenced unless `this` is falsy.\n * @type {!Global}\n */\ngoog.global =\n // Check `this` first for backwards compatibility.\n // Valid unless running as an ES module or in a function wrapper called\n // without setting `this` properly.\n // Note that base.js can't usefully be imported as an ES module, but it may\n // be compiled into bundles that are loadable as ES modules.\n this ||\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/self\n // For in-page browser environments and workers.\n self;\n\n\n/**\n * A hook for overriding the define values in uncompiled mode.\n *\n * In uncompiled mode, `CLOSURE_UNCOMPILED_DEFINES` may be defined before\n * loading base.js. If a key is defined in `CLOSURE_UNCOMPILED_DEFINES`,\n * `goog.define` will use the value instead of the default value. This\n * allows flags to be overwritten without compilation (this is normally\n * accomplished with the compiler's \"define\" flag).\n *\n * Example:\n * <pre>\n * var CLOSURE_UNCOMPILED_DEFINES = {'goog.DEBUG': false};\n * </pre>\n *\n * @type {Object<string, (string|number|boolean)>|undefined}\n */\ngoog.global.CLOSURE_UNCOMPILED_DEFINES;\n\n\n/**\n * A hook for overriding the define values in uncompiled or compiled mode,\n * like CLOSURE_UNCOMPILED_DEFINES but effective in compiled code. In\n * uncompiled code CLOSURE_UNCOMPILED_DEFINES takes precedence.\n *\n * Also unlike CLOSURE_UNCOMPILED_DEFINES the values must be number, boolean or\n * string literals or the compiler will emit an error.\n *\n * While any @define value may be set, only those set with goog.define will be\n * effective for uncompiled code.\n *\n * Example:\n * <pre>\n * var CLOSURE_DEFINES = {'goog.DEBUG': false} ;\n * </pre>\n *\n * Currently the Closure Compiler will only recognize very simple definitions of\n * this value when looking for values to apply to compiled code and ignore all\n * other references. Specifically, it looks the value defined at the variable\n * declaration, as with the example above.\n *\n * TODO(user): Improve the recognized definitions.\n *\n * @type {!Object<string, (string|number|boolean)>|null|undefined}\n */\ngoog.global.CLOSURE_DEFINES;\n\n\n/**\n * Builds an object structure for the provided namespace path, ensuring that\n * names that already exist are not overwritten. For example:\n * \"a.b.c\" -> a = {};a.b={};a.b.c={};\n * Used by goog.provide and goog.exportSymbol.\n * @param {string} name The name of the object that this file defines.\n * @param {*=} object The object to expose at the end of the path.\n * @param {boolean=} overwriteImplicit If object is set and a previous call\n * implicitly constructed the namespace given by name, this parameter\n * controls whether object should overwrite the implicitly constructed\n * namespace or be merged into it. Defaults to false.\n * @param {?Object=} objectToExportTo The object to add the path to; if this\n * field is not specified, its value defaults to `goog.global`.\n * @private\n */\ngoog.exportPath_ = function(name, object, overwriteImplicit, objectToExportTo) {\n var parts = name.split('.');\n var cur = objectToExportTo || goog.global;\n\n // Internet Explorer exhibits strange behavior when throwing errors from\n // methods externed in this manner. See the testExportSymbolExceptions in\n // base_test.html for an example.\n if (!(parts[0] in cur) && typeof cur.execScript != 'undefined') {\n cur.execScript('var ' + parts[0]);\n }\n\n for (var part; parts.length && (part = parts.shift());) {\n if (!parts.length && object !== undefined) {\n if (!overwriteImplicit && goog.isObject(object) &&\n goog.isObject(cur[part])) {\n // Merge properties on object (the input parameter) with the existing\n // implicitly defined namespace, so as to not clobber previously\n // defined child namespaces.\n for (var prop in object) {\n if (object.hasOwnProperty(prop)) {\n cur[part][prop] = object[prop];\n }\n }\n } else {\n // Either there is no existing implicit namespace, or overwriteImplicit\n // is set to true, so directly assign object (the input parameter) to\n // the namespace.\n cur[part] = object;\n }\n } else if (cur[part] && cur[part] !== Object.prototype[part]) {\n cur = cur[part];\n } else {\n cur = cur[part] = {};\n }\n }\n};\n\n\n/**\n * Defines a named value. In uncompiled mode, the value is retrieved from\n * CLOSURE_DEFINES or CLOSURE_UNCOMPILED_DEFINES if the object is defined and\n * has the property specified, and otherwise used the defined defaultValue.\n * When compiled the default can be overridden using the compiler options or the\n * value set in the CLOSURE_DEFINES object. Returns the defined value so that it\n * can be used safely in modules. Note that the value type MUST be either\n * boolean, number, or string.\n *\n * @param {string} name The distinguished name to provide.\n * @param {T} defaultValue\n * @return {T} The defined value.\n * @template T\n */\ngoog.define = function(name, defaultValue) {\n var value = defaultValue;\n if (!COMPILED) {\n var uncompiledDefines = goog.global.CLOSURE_UNCOMPILED_DEFINES;\n var defines = goog.global.CLOSURE_DEFINES;\n if (uncompiledDefines &&\n // Anti DOM-clobbering runtime check (b/37736576).\n /** @type {?} */ (uncompiledDefines).nodeType === undefined &&\n Object.prototype.hasOwnProperty.call(uncompiledDefines, name)) {\n value = uncompiledDefines[name];\n } else if (\n defines &&\n // Anti DOM-clobbering runtime check (b/37736576).\n /** @type {?} */ (defines).nodeType === undefined &&\n Object.prototype.hasOwnProperty.call(defines, name)) {\n value = defines[name];\n }\n }\n return value;\n};\n\n\n/**\n * @define {number} Integer year indicating the set of browser features that are\n * guaranteed to be present. This is defined to include exactly features that\n * work correctly on all \"modern\" browsers that are stable on January 1 of the\n * specified year. For example,\n * ```js\n * if (goog.FEATURESET_YEAR >= 2019) {\n * // use APIs known to be available on all major stable browsers Jan 1, 2019\n * } else {\n * // polyfill for older browsers\n * }\n * ```\n * This is intended to be the primary define for removing\n * unnecessary browser compatibility code (such as ponyfills and workarounds),\n * and should inform the default value for most other defines:\n * ```js\n * const ASSUME_NATIVE_PROMISE =\n * goog.define('ASSUME_NATIVE_PROMISE', goog.FEATURESET_YEAR >= 2016);\n * ```\n *\n * The default assumption is that IE9 is the lowest supported browser, which was\n * first available Jan 1, 2012.\n *\n * TODO(user): Reference more thorough documentation when it's available.\n */\ngoog.FEATURESET_YEAR = goog.define('goog.FEATURESET_YEAR', 2012);\n\n\n/**\n * @define {boolean} DEBUG is provided as a convenience so that debugging code\n * that should not be included in a production. It can be easily stripped\n * by specifying --define goog.DEBUG=false to the Closure Compiler aka\n * JSCompiler. For example, most toString() methods should be declared inside an\n * \"if (goog.DEBUG)\" conditional because they are generally used for debugging\n * purposes and it is difficult for the JSCompiler to statically determine\n * whether they are used.\n */\ngoog.DEBUG = goog.define('goog.DEBUG', true);\n\n\n/**\n * @define {string} LOCALE defines the locale being used for compilation. It is\n * used to select locale specific data to be compiled in js binary. BUILD rule\n * can specify this value by \"--define goog.LOCALE=<locale_name>\" as a compiler\n * option.\n *\n * Take into account that the locale code format is important. You should use\n * the canonical Unicode format with hyphen as a delimiter. Language must be\n * lowercase, Language Script - Capitalized, Region - UPPERCASE.\n * There are few examples: pt-BR, en, en-US, sr-Latin-BO, zh-Hans-CN.\n *\n * See more info about locale codes here:\n * http://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers\n *\n * For language codes you should use values defined by ISO 693-1. See it here\n * http://www.w3.org/WAI/ER/IG/ert/iso639.htm. There is only one exception from\n * this rule: the Hebrew language. For legacy reasons the old code (iw) should\n * be used instead of the new code (he).\n *\n */\ngoog.LOCALE = goog.define('goog.LOCALE', 'en'); // default to en\n\n\n/**\n * Same as `goog.LOCALE`, which should be used instead.\n *\n * Using this method just makes it harder for closure-compiler to optimize\n * your locale-specific code, since it has to take the extra step of inlining\n * this function to discover and remove code that is not used for the target\n * locale.\n *\n * @return {string}\n * @deprecated use `goog.LOCALE`\n */\ngoog.getLocale = function() {\n return goog.LOCALE;\n};\n\n\n/**\n * @define {boolean} Whether this code is running on trusted sites.\n *\n * On untrusted sites, several native functions can be defined or overridden by\n * external libraries like Prototype, Datejs, and JQuery and setting this flag\n * to false forces closure to use its own implementations when possible.\n *\n * If your JavaScript can be loaded by a third party site and you are wary about\n * relying on non-standard implementations, specify\n * \"--define goog.TRUSTED_SITE=false\" to the compiler.\n */\ngoog.TRUSTED_SITE = goog.define('goog.TRUSTED_SITE', true);\n\n\n/**\n * @define {boolean} Whether code that calls {@link goog.setTestOnly} should\n * be disallowed in the compilation unit.\n */\ngoog.DISALLOW_TEST_ONLY_CODE =\n goog.define('goog.DISALLOW_TEST_ONLY_CODE', COMPILED && !goog.DEBUG);\n\n\n/**\n * @define {boolean} Whether to use a Chrome app CSP-compliant method for\n * loading scripts via goog.require. @see appendScriptSrcNode_.\n */\ngoog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING =\n goog.define('goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING', false);\n\n\n/**\n * Defines a namespace in Closure.\n *\n * A namespace may only be defined once in a codebase. It may be defined using\n * goog.provide() or goog.module().\n *\n * The presence of one or more goog.provide() calls in a file indicates\n * that the file defines the given objects/namespaces.\n * Provided symbols must not be null or undefined.\n *\n * In addition, goog.provide() creates the object stubs for a namespace\n * (for example, goog.provide(\"goog.foo.bar\") will create the object\n * goog.foo.bar if it does not already exist).\n *\n * Build tools also scan for provide/require/module statements\n * to discern dependencies, build dependency files (see deps.js), etc.\n *\n * @see goog.require\n * @see goog.module\n * @param {string} name Namespace provided by this file in the form\n * \"goog.package.part\".\n * deprecated Use goog.module (see b/159289405)\n */\ngoog.provide = function(name) {\n if (goog.isInModuleLoader_()) {\n throw new Error('goog.provide cannot be used within a module.');\n }\n if (!COMPILED) {\n // Ensure that the same namespace isn't provided twice.\n // A goog.module/goog.provide maps a goog.require to a specific file\n if (goog.isProvided_(name)) {\n throw new Error('Namespace \"' + name + '\" already declared.');\n }\n }\n\n goog.constructNamespace_(name);\n};\n\n\n/**\n * @param {string} name Namespace provided by this file in the form\n * \"goog.package.part\".\n * @param {?Object=} object The object to embed in the namespace.\n * @param {boolean=} overwriteImplicit If object is set and a previous call\n * implicitly constructed the namespace given by name, this parameter\n * controls whether opt_obj should overwrite the implicitly constructed\n * namespace or be merged into it. Defaults to false.\n * @private\n */\ngoog.constructNamespace_ = function(name, object, overwriteImplicit) {\n if (!COMPILED) {\n delete goog.implicitNamespaces_[name];\n\n var namespace = name;\n while ((namespace = namespace.substring(0, namespace.lastIndexOf('.')))) {\n if (goog.getObjectByName(namespace)) {\n break;\n }\n goog.implicitNamespaces_[namespace] = true;\n }\n }\n\n goog.exportPath_(name, object, overwriteImplicit);\n};\n\n\n/**\n * According to the CSP3 spec a nonce must be a valid base64 string.\n * @see https://www.w3.org/TR/CSP3/#grammardef-base64-value\n * @private @const\n */\ngoog.NONCE_PATTERN_ = /^[\\w+/_-]+[=]{0,2}$/;\n\n\n/**\n * Returns CSP nonce, if set for any script tag.\n * @param {?Window=} opt_window The window context used to retrieve the nonce.\n * Defaults to global context.\n * @return {string} CSP nonce or empty string if no nonce is present.\n * @private\n */\ngoog.getScriptNonce_ = function(opt_window) {\n var doc = (opt_window || goog.global).document;\n var script = doc.querySelector && doc.querySelector('script[nonce]');\n if (script) {\n // Try to get the nonce from the IDL property first, because browsers that\n // implement additional nonce protection features (currently only Chrome) to\n // prevent nonce stealing via CSS do not expose the nonce via attributes.\n // See https://github.com/whatwg/html/issues/2369\n var nonce = script['nonce'] || script.getAttribute('nonce');\n if (nonce && goog.NONCE_PATTERN_.test(nonce)) {\n return nonce;\n }\n }\n return '';\n};\n\n\n/**\n * Module identifier validation regexp.\n * Note: This is a conservative check, it is very possible to be more lenient,\n * the primary exclusion here is \"/\" and \"\\\" and a leading \".\", these\n * restrictions are intended to leave the door open for using goog.require\n * with relative file paths rather than module identifiers.\n * @private\n */\ngoog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\n\n\n/**\n * Defines a module in Closure.\n *\n * Marks that this file must be loaded as a module and claims the namespace.\n *\n * A namespace may only be defined once in a codebase. It may be defined using\n * goog.provide() or goog.module().\n *\n * goog.module() has three requirements:\n * - goog.module may not be used in the same file as goog.provide.\n * - goog.module must be the first statement in the file.\n * - only one goog.module is allowed per file.\n *\n * When a goog.module annotated file is loaded, it is enclosed in\n * a strict function closure. This means that:\n * - any variables declared in a goog.module file are private to the file\n * (not global), though the compiler is expected to inline the module.\n * - The code must obey all the rules of \"strict\" JavaScript.\n * - the file will be marked as \"use strict\"\n *\n * NOTE: unlike goog.provide, goog.module does not declare any symbols by\n * itself. If declared symbols are desired, use\n * goog.module.declareLegacyNamespace().\n *\n *\n * See the public goog.module proposal: http://goo.gl/Va1hin\n *\n * @param {string} name Namespace provided by this file in the form\n * \"goog.package.part\", is expected but not required.\n * @return {void}\n */\ngoog.module = function(name) {\n if (typeof name !== 'string' || !name ||\n name.search(goog.VALID_MODULE_RE_) == -1) {\n throw new Error('Invalid module identifier');\n }\n if (!goog.isInGoogModuleLoader_()) {\n throw new Error(\n 'Module ' + name + ' has been loaded incorrectly. Note, ' +\n 'modules cannot be loaded as normal scripts. They require some kind of ' +\n 'pre-processing step. You\\'re likely trying to load a module via a ' +\n 'script tag or as a part of a concatenated bundle without rewriting the ' +\n 'module. For more info see: ' +\n 'https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.');\n }\n if (goog.moduleLoaderState_.moduleName) {\n throw new Error('goog.module may only be called once per module.');\n }\n\n // Store the module name for the loader.\n goog.moduleLoaderState_.moduleName = name;\n if (!COMPILED) {\n // Ensure that the same namespace isn't provided twice.\n // A goog.module/goog.provide maps a goog.require to a specific file\n if (goog.isProvided_(name)) {\n throw new Error('Namespace \"' + name + '\" already declared.');\n }\n delete goog.implicitNamespaces_[name];\n }\n};\n\n\n/**\n * @param {string} name The module identifier.\n * @return {?} The module exports for an already loaded module or null.\n *\n * Note: This is not an alternative to goog.require, it does not\n * indicate a hard dependency, instead it is used to indicate\n * an optional dependency or to access the exports of a module\n * that has already been loaded.\n * @suppress {missingProvide}\n */\ngoog.module.get = function(name) {\n return goog.module.getInternal_(name);\n};\n\n\n/**\n * @param {string} name The module identifier.\n * @return {?} The module exports for an already loaded module or null.\n * @private\n */\ngoog.module.getInternal_ = function(name) {\n if (!COMPILED) {\n if (name in goog.loadedModules_) {\n return goog.loadedModules_[name].exports;\n } else if (!goog.implicitNamespaces_[name]) {\n var ns = goog.getObjectByName(name);\n return ns != null ? ns : null;\n }\n }\n return null;\n};\n\n/**\n * Types of modules the debug loader can load.\n * @enum {string}\n */\ngoog.ModuleType = {\n ES6: 'es6',\n GOOG: 'goog'\n};\n\n\n/**\n * @private {?{\n * moduleName: (string|undefined),\n * declareLegacyNamespace:boolean,\n * type: ?goog.ModuleType\n * }}\n */\ngoog.moduleLoaderState_ = null;\n\n\n/**\n * @private\n * @return {boolean} Whether a goog.module or an es6 module is currently being\n * initialized.\n */\ngoog.isInModuleLoader_ = function() {\n return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_();\n};\n\n\n/**\n * @private\n * @return {boolean} Whether a goog.module is currently being initialized.\n */\ngoog.isInGoogModuleLoader_ = function() {\n return !!goog.moduleLoaderState_ &&\n goog.moduleLoaderState_.type == goog.ModuleType.GOOG;\n};\n\n\n/**\n * @private\n * @return {boolean} Whether an es6 module is currently being initialized.\n */\ngoog.isInEs6ModuleLoader_ = function() {\n var inLoader = !!goog.moduleLoaderState_ &&\n goog.moduleLoaderState_.type == goog.ModuleType.ES6;\n\n if (inLoader) {\n return true;\n }\n\n var jscomp = goog.global['$jscomp'];\n\n if (jscomp) {\n // jscomp may not have getCurrentModulePath if this is a compiled bundle\n // that has some of the runtime, but not all of it. This can happen if\n // optimizations are turned on so the unused runtime is removed but renaming\n // and Closure pass are off (so $jscomp is still named $jscomp and the\n // goog.provide/require calls still exist).\n if (typeof jscomp.getCurrentModulePath != 'function') {\n return false;\n }\n\n // Bundled ES6 module.\n return !!jscomp.getCurrentModulePath();\n }\n\n return false;\n};\n\n\n/**\n * Provide the module's exports as a globally accessible object under the\n * module's declared name. This is intended to ease migration to goog.module\n * for files that have existing usages.\n * @suppress {missingProvide}\n */\ngoog.module.declareLegacyNamespace = function() {\n if (!COMPILED && !goog.isInGoogModuleLoader_()) {\n throw new Error(\n 'goog.module.declareLegacyNamespace must be called from ' +\n 'within a goog.module');\n }\n if (!COMPILED && !goog.moduleLoaderState_.moduleName) {\n throw new Error(\n 'goog.module must be called prior to ' +\n 'goog.module.declareLegacyNamespace.');\n }\n goog.moduleLoaderState_.declareLegacyNamespace = true;\n};\n\n\n/**\n * Associates an ES6 module with a Closure module ID so that is available via\n * goog.require. The associated ID acts like a goog.module ID - it does not\n * create any global names, it is merely available via goog.require /\n * goog.module.get / goog.forwardDeclare / goog.requireType. goog.require and\n * goog.module.get will return the entire module as if it was import *'d. This\n * allows Closure files to reference ES6 modules for the sake of migration.\n *\n * @param {string} namespace\n * @suppress {missingProvide}\n */\ngoog.declareModuleId = function(namespace) {\n if (!COMPILED) {\n if (!goog.isInEs6ModuleLoader_()) {\n throw new Error(\n 'goog.declareModuleId may only be called from ' +\n 'within an ES6 module');\n }\n if (goog.moduleLoaderState_ && goog.moduleLoaderState_.moduleName) {\n throw new Error(\n 'goog.declareModuleId may only be called once per module.');\n }\n if (namespace in goog.loadedModules_) {\n throw new Error(\n 'Module with namespace \"' + namespace + '\" already exists.');\n }\n }\n if (goog.moduleLoaderState_) {\n // Not bundled - debug loading.\n goog.moduleLoaderState_.moduleName = namespace;\n } else {\n // Bundled - not debug loading, no module loader state.\n var jscomp = goog.global['$jscomp'];\n if (!jscomp || typeof jscomp.getCurrentModulePath != 'function') {\n throw new Error(\n 'Module with namespace \"' + namespace +\n '\" has been loaded incorrectly.');\n }\n var exports = jscomp.require(jscomp.getCurrentModulePath());\n goog.loadedModules_[namespace] = {\n exports: exports,\n type: goog.ModuleType.ES6,\n moduleId: namespace\n };\n }\n};\n\n\n/**\n * Marks that the current file should only be used for testing, and never for\n * live code in production.\n *\n * In the case of unit tests, the message may optionally be an exact namespace\n * for the test (e.g. 'goog.stringTest'). The linter will then ignore the extra\n * provide (if not explicitly defined in the code).\n *\n * @param {string=} opt_message Optional message to add to the error that's\n * raised when used in production code.\n */\ngoog.setTestOnly = function(opt_message) {\n if (goog.DISALLOW_TEST_ONLY_CODE) {\n opt_message = opt_message || '';\n throw new Error(\n 'Importing test-only code into non-debug environment' +\n (opt_message ? ': ' + opt_message : '.'));\n }\n};\n\n\n/**\n * Forward declares a symbol. This is an indication to the compiler that the\n * symbol may be used in the source yet is not required and may not be provided\n * in compilation.\n *\n * The most common usage of forward declaration is code that takes a type as a\n * function parameter but does not need to require it. By forward declaring\n * instead of requiring, no hard dependency is made, and (if not required\n * elsewhere) the namespace may never be required and thus, not be pulled\n * into the JavaScript binary. If it is required elsewhere, it will be type\n * checked as normal.\n *\n * Before using goog.forwardDeclare, please read the documentation at\n * https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation to\n * understand the options and tradeoffs when working with forward declarations.\n *\n * @param {string} name The namespace to forward declare in the form of\n * \"goog.package.part\".\n * @deprecated See go/noforwarddeclaration, Use `goog.requireType` instead.\n */\ngoog.forwardDeclare = function(name) {};\n\n\n/**\n * Forward declare type information. Used to assign types to goog.global\n * referenced object that would otherwise result in unknown type references\n * and thus block property disambiguation.\n */\ngoog.forwardDeclare('Document');\ngoog.forwardDeclare('HTMLScriptElement');\ngoog.forwardDeclare('XMLHttpRequest');\n\n\nif (!COMPILED) {\n /**\n * Check if the given name has been goog.provided. This will return false for\n * names that are available only as implicit namespaces.\n * @param {string} name name of the object to look for.\n * @return {boolean} Whether the name has been provided.\n * @private\n */\n goog.isProvided_ = function(name) {\n return (name in goog.loadedModules_) ||\n (!goog.implicitNamespaces_[name] && goog.getObjectByName(name) != null);\n };\n\n /**\n * Namespaces implicitly defined by goog.provide. For example,\n * goog.provide('goog.events.Event') implicitly declares that 'goog' and\n * 'goog.events' must be namespaces.\n *\n * @type {!Object<string, (boolean|undefined)>}\n * @private\n */\n goog.implicitNamespaces_ = {'goog.module': true};\n\n // NOTE: We add goog.module as an implicit namespace as goog.module is defined\n // here and because the existing module package has not been moved yet out of\n // the goog.module namespace. This satisifies both the debug loader and\n // ahead-of-time dependency management.\n}\n\n\n/**\n * Returns an object based on its fully qualified external name. The object\n * is not found if null or undefined. If you are using a compilation pass that\n * renames property names beware that using this function will not find renamed\n * properties.\n *\n * @param {string} name The fully qualified name.\n * @param {Object=} opt_obj The object within which to look; default is\n * |goog.global|.\n * @return {?} The value (object or primitive) or, if not found, null.\n */\ngoog.getObjectByName = function(name, opt_obj) {\n var parts = name.split('.');\n var cur = opt_obj || goog.global;\n for (var i = 0; i < parts.length; i++) {\n cur = cur[parts[i]];\n if (cur == null) {\n return null;\n }\n }\n return cur;\n};\n\n\n/**\n * Adds a dependency from a file to the files it requires.\n * @param {string} relPath The path to the js file.\n * @param {!Array<string>} provides An array of strings with\n * the names of the objects this file provides.\n * @param {!Array<string>} requires An array of strings with\n * the names of the objects this file requires.\n * @param {boolean|!Object<string>=} opt_loadFlags Parameters indicating\n * how the file must be loaded. The boolean 'true' is equivalent\n * to {'module': 'goog'} for backwards-compatibility. Valid properties\n * and values include {'module': 'goog'} and {'lang': 'es6'}.\n */\ngoog.addDependency = function(relPath, provides, requires, opt_loadFlags) {\n if (!COMPILED && goog.DEPENDENCIES_ENABLED) {\n goog.debugLoader_.addDependency(relPath, provides, requires, opt_loadFlags);\n }\n};\n\n\n// NOTE(nnaze): The debug DOM loader was included in base.js as an original way\n// to do \"debug-mode\" development. The dependency system can sometimes be\n// confusing, as can the debug DOM loader's asynchronous nature.\n//\n// With the DOM loader, a call to goog.require() is not blocking -- the script\n// will not load until some point after the current script. If a namespace is\n// needed at runtime, it needs to be defined in a previous script, or loaded via\n// require() with its registered dependencies.\n//\n// User-defined namespaces may need their own deps file. For a reference on\n// creating a deps file, see:\n// Externally: https://developers.google.com/closure/library/docs/depswriter\n//\n// Because of legacy clients, the DOM loader can't be easily removed from\n// base.js. Work was done to make it disableable or replaceable for\n// different environments (DOM-less JavaScript interpreters like Rhino or V8,\n// for example). See bootstrap/ for more information.\n\n\n/**\n * @define {boolean} Whether to enable the debug loader.\n *\n * If enabled, a call to goog.require() will attempt to load the namespace by\n * appending a script tag to the DOM (if the namespace has been registered).\n *\n * If disabled, goog.require() will simply assert that the namespace has been\n * provided (and depend on the fact that some outside tool correctly ordered\n * the script).\n */\ngoog.ENABLE_DEBUG_LOADER = goog.define('goog.ENABLE_DEBUG_LOADER', true);\n\n\n/**\n * @param {string} msg\n * @private\n */\ngoog.logToConsole_ = function(msg) {\n if (goog.global.console) {\n goog.global.console['error'](msg);\n }\n};\n\n\n/**\n * Implements a system for the dynamic resolution of dependencies that works in\n * parallel with the BUILD system.\n *\n * Note that all calls to goog.require will be stripped by the compiler.\n *\n * @see goog.provide\n * @param {string} namespace Namespace (as was given in goog.provide,\n * goog.module, or goog.declareModuleId) in the form\n * \"goog.package.part\".\n * @return {?} If called within a goog.module or ES6 module file, the associated\n * namespace or module otherwise null.\n */\ngoog.require = function(namespace) {\n if (!COMPILED) {\n // Might need to lazy load on old IE.\n if (goog.ENABLE_DEBUG_LOADER) {\n goog.debugLoader_.requested(namespace);\n }\n\n // If the object already exists we do not need to do anything.\n if (goog.isProvided_(namespace)) {\n if (goog.isInModuleLoader_()) {\n return goog.module.getInternal_(namespace);\n }\n } else if (goog.ENABLE_DEBUG_LOADER) {\n var moduleLoaderState = goog.moduleLoaderState_;\n goog.moduleLoaderState_ = null;\n try {\n goog.debugLoader_.load_(namespace);\n } finally {\n goog.moduleLoaderState_ = moduleLoaderState;\n }\n }\n\n return null;\n }\n};\n\n\n/**\n * Requires a symbol for its type information. This is an indication to the\n * compiler that the symbol may appear in type annotations, yet it is not\n * referenced at runtime.\n *\n * When called within a goog.module or ES6 module file, the return value may be\n * assigned to or destructured into a variable, but it may not be otherwise used\n * in code outside of a type annotation.\n *\n * Note that all calls to goog.requireType will be stripped by the compiler.\n *\n * @param {string} namespace Namespace (as was given in goog.provide,\n * goog.module, or goog.declareModuleId) in the form\n * \"goog.package.part\".\n * @return {?}\n */\ngoog.requireType = function(namespace) {\n // Return an empty object so that single-level destructuring of the return\n // value doesn't crash at runtime when using the debug loader. Multi-level\n // destructuring isn't supported.\n return {};\n};\n\n\n/**\n * Path for included scripts.\n * @type {string}\n */\ngoog.basePath = '';\n\n\n/**\n * A hook for overriding the base path.\n * @type {string|undefined}\n */\ngoog.global.CLOSURE_BASE_PATH;\n\n\n/**\n * Whether to attempt to load Closure's deps file. By default, when uncompiled,\n * deps files will attempt to be loaded.\n * @type {boolean|undefined}\n */\ngoog.global.CLOSURE_NO_DEPS;\n\n\n/**\n * A function to import a single script. This is meant to be overridden when\n * Closure is being run in non-HTML contexts, such as web workers. It's defined\n * in the global scope so that it can be set before base.js is loaded, which\n * allows deps.js to be imported properly.\n *\n * The first parameter the script source, which is a relative URI. The second,\n * optional parameter is the script contents, in the event the script needed\n * transformation. It should return true if the script was imported, false\n * otherwise.\n * @type {(function(string, string=): boolean)|undefined}\n */\ngoog.global.CLOSURE_IMPORT_SCRIPT;\n\n\n/**\n * When defining a class Foo with an abstract method bar(), you can do:\n * Foo.prototype.bar = goog.abstractMethod\n *\n * Now if a subclass of Foo fails to override bar(), an error will be thrown\n * when bar() is invoked.\n *\n * @type {!Function}\n * @throws {Error} when invoked to indicate the method should be overridden.\n * @deprecated Use \"@abstract\" annotation instead of goog.abstractMethod in new\n * code. See\n * https://github.com/google/closure-compiler/wiki/@abstract-classes-and-methods\n */\ngoog.abstractMethod = function() {\n throw new Error('unimplemented abstract method');\n};\n\n\n/**\n * Adds a `getInstance` static method that always returns the same\n * instance object.\n * @param {!Function} ctor The constructor for the class to add the static\n * method to.\n * @suppress {missingProperties} 'instance_' isn't a property on 'Function'\n * but we don't have a better type to use here.\n */\ngoog.addSingletonGetter = function(ctor) {\n // instance_ is immediately set to prevent issues with sealed constructors\n // such as are encountered when a constructor is returned as the export object\n // of a goog.module in unoptimized code.\n // Delcare type to avoid conformance violations that ctor.instance_ is unknown\n /** @type {undefined|!Object} @suppress {underscore} */\n ctor.instance_ = undefined;\n ctor.getInstance = function() {\n if (ctor.instance_) {\n return ctor.instance_;\n }\n if (goog.DEBUG) {\n // NOTE: JSCompiler can't optimize away Array#push.\n goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = ctor;\n }\n // Cast to avoid conformance violations that ctor.instance_ is unknown\n return /** @type {!Object|undefined} */ (ctor.instance_) = new ctor;\n };\n};\n\n\n/**\n * All singleton classes that have been instantiated, for testing. Don't read\n * it directly, use the `goog.testing.singleton` module. The compiler\n * removes this variable if unused.\n * @type {!Array<!Function>}\n * @private\n */\ngoog.instantiatedSingletons_ = [];\n\n\n/**\n * @define {boolean} Whether to load goog.modules using `eval` when using\n * the debug loader. This provides a better debugging experience as the\n * source is unmodified and can be edited using Chrome Workspaces or similar.\n * However in some environments the use of `eval` is banned\n * so we provide an alternative.\n */\ngoog.LOAD_MODULE_USING_EVAL = goog.define('goog.LOAD_MODULE_USING_EVAL', true);\n\n\n/**\n * @define {boolean} Whether the exports of goog.modules should be sealed when\n * possible.\n */\ngoog.SEAL_MODULE_EXPORTS = goog.define('goog.SEAL_MODULE_EXPORTS', goog.DEBUG);\n\n\n/**\n * The registry of initialized modules:\n * The module identifier or path to module exports map.\n * @private @const {!Object<string, {exports:?,type:string,moduleId:string}>}\n */\ngoog.loadedModules_ = {};\n\n\n/**\n * True if the debug loader enabled and used.\n * @const {boolean}\n */\ngoog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER;\n\n\n/**\n * @define {string} How to decide whether to transpile. Valid values\n * are 'always', 'never', and 'detect'. The default ('detect') is to\n * use feature detection to determine which language levels need\n * transpilation.\n */\n// NOTE(sdh): we could expand this to accept a language level to bypass\n// detection: e.g. goog.TRANSPILE == 'es5' would transpile ES6 files but\n// would leave ES3 and ES5 files alone.\ngoog.TRANSPILE = goog.define('goog.TRANSPILE', 'detect');\n\n/**\n * @define {boolean} If true assume that ES modules have already been\n * transpiled by the jscompiler (in the same way that transpile.js would\n * transpile them - to jscomp modules). Useful only for servers that wish to use\n * the debug loader and transpile server side. Thus this is only respected if\n * goog.TRANSPILE is \"never\".\n */\ngoog.ASSUME_ES_MODULES_TRANSPILED =\n goog.define('goog.ASSUME_ES_MODULES_TRANSPILED', false);\n\n\n/**\n * @define {string} Trusted Types policy name. If non-empty then Closure will\n * use Trusted Types.\n */\ngoog.TRUSTED_TYPES_POLICY_NAME =\n goog.define('goog.TRUSTED_TYPES_POLICY_NAME', 'goog');\n\n\n/**\n * @package {?boolean}\n * Visible for testing.\n */\ngoog.hasBadLetScoping = null;\n\n\n/**\n * @param {function(?):?|string} moduleDef The module definition.\n */\ngoog.loadModule = function(moduleDef) {\n // NOTE: we allow function definitions to be either in the from\n // of a string to eval (which keeps the original source intact) or\n // in a eval forbidden environment (CSP) we allow a function definition\n // which in its body must call `goog.module`, and return the exports\n // of the module.\n var previousState = goog.moduleLoaderState_;\n try {\n goog.moduleLoaderState_ = {\n moduleName: '',\n declareLegacyNamespace: false,\n type: goog.ModuleType.GOOG\n };\n var origExports = {};\n var exports = origExports;\n if (typeof moduleDef === 'function') {\n exports = moduleDef.call(undefined, exports);\n } else if (typeof moduleDef === 'string') {\n exports = goog.loadModuleFromSource_.call(undefined, exports, moduleDef);\n } else {\n throw new Error('Invalid module definition');\n }\n\n var moduleName = goog.moduleLoaderState_.moduleName;\n if (typeof moduleName === 'string' && moduleName) {\n // Don't seal legacy namespaces as they may be used as a parent of\n // another namespace\n if (goog.moduleLoaderState_.declareLegacyNamespace) {\n // Whether exports was overwritten via default export assignment.\n // This is important for legacy namespaces as it dictates whether\n // previously a previously loaded implicit namespace should be clobbered\n // or not.\n var isDefaultExport = origExports !== exports;\n goog.constructNamespace_(moduleName, exports, isDefaultExport);\n } else if (\n goog.SEAL_MODULE_EXPORTS && Object.seal &&\n typeof exports == 'object' && exports != null) {\n Object.seal(exports);\n }\n\n var data = {\n exports: exports,\n type: goog.ModuleType.GOOG,\n moduleId: goog.moduleLoaderState_.moduleName\n };\n goog.loadedModules_[moduleName] = data;\n } else {\n throw new Error('Invalid module name \\\"' + moduleName + '\\\"');\n }\n } finally {\n goog.moduleLoaderState_ = previousState;\n }\n};\n\n\n/**\n * @private @const\n */\ngoog.loadModuleFromSource_ =\n /** @type {function(!Object, string):?} */ (function(exports) {\n // NOTE: we avoid declaring parameters or local variables here to avoid\n // masking globals or leaking values into the module definition.\n 'use strict';\n eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(arguments[1]));\n return exports;\n });\n\n\n/**\n * Normalize a file path by removing redundant \"..\" and extraneous \".\" file\n * path components.\n * @param {string} path\n * @return {string}\n * @private\n */\ngoog.normalizePath_ = function(path) {\n var components = path.split('/');\n var i = 0;\n while (i < components.length) {\n if (components[i] == '.') {\n components.splice(i, 1);\n } else if (\n i && components[i] == '..' && components[i - 1] &&\n components[i - 1] != '..') {\n components.splice(--i, 2);\n } else {\n i++;\n }\n }\n return components.join('/');\n};\n\n\n/**\n * Provides a hook for loading a file when using Closure's goog.require() API\n * with goog.modules. In particular this hook is provided to support Node.js.\n *\n * @type {(function(string):string)|undefined}\n */\ngoog.global.CLOSURE_LOAD_FILE_SYNC;\n\n\n/**\n * Loads file by synchronous XHR. Should not be used in production environments.\n * @param {string} src Source URL.\n * @return {?string} File contents, or null if load failed.\n * @private\n */\ngoog.loadFileSync_ = function(src) {\n if (goog.global.CLOSURE_LOAD_FILE_SYNC) {\n return goog.global.CLOSURE_LOAD_FILE_SYNC(src);\n } else {\n try {\n /** @type {XMLHttpRequest} */\n var xhr = new goog.global['XMLHttpRequest']();\n xhr.open('get', src, false);\n xhr.send();\n // NOTE: Successful http: requests have a status of 200, but successful\n // file: requests may have a status of zero. Any other status, or a\n // thrown exception (particularly in case of file: requests) indicates\n // some sort of error, which we treat as a missing or unavailable file.\n return xhr.status == 0 || xhr.status == 200 ? xhr.responseText : null;\n } catch (err) {\n // No need to rethrow or log, since errors should show up on their own.\n return null;\n }\n }\n};\n\n//==============================================================================\n// Language Enhancements\n//==============================================================================\n\n\n/**\n * This is a \"fixed\" version of the typeof operator. It differs from the typeof\n * operator in such a way that null returns 'null' and arrays return 'array'.\n * @param {?} value The value to get the type of.\n * @return {string} The name of the type.\n */\ngoog.typeOf = function(value) {\n var s = typeof value;\n\n if (s != 'object') {\n return s;\n }\n\n if (!value) {\n return 'null';\n }\n\n if (Array.isArray(value)) {\n return 'array';\n }\n return s;\n};\n\n\n/**\n * Returns true if the object looks like an array. To qualify as array like\n * the value needs to be either a NodeList or an object with a Number length\n * property. Note that for this function neither strings nor functions are\n * considered \"array-like\".\n *\n * @param {?} val Variable to test.\n * @return {boolean} Whether variable is an array.\n */\ngoog.isArrayLike = function(val) {\n var type = goog.typeOf(val);\n // We do not use goog.isObject here in order to exclude function values.\n return type == 'array' || type == 'object' && typeof val.length == 'number';\n};\n\n\n/**\n * Returns true if the object looks like a Date. To qualify as Date-like the\n * value needs to be an object and have a getFullYear() function.\n * @param {?} val Variable to test.\n * @return {boolean} Whether variable is a like a Date.\n */\ngoog.isDateLike = function(val) {\n return goog.isObject(val) && typeof val.getFullYear == 'function';\n};\n\n\n/**\n * Returns true if the specified value is an object. This includes arrays and\n * functions.\n * @param {?} val Variable to test.\n * @return {boolean} Whether variable is an object.\n */\ngoog.isObject = function(val) {\n var type = typeof val;\n return type == 'object' && val != null || type == 'function';\n // return Object(val) === val also works, but is slower, especially if val is\n // not an object.\n};\n\n\n/**\n * Gets a unique ID for an object. This mutates the object so that further calls\n * with the same object as a parameter returns the same value. The unique ID is\n * guaranteed to be unique across the current session amongst objects that are\n * passed into `getUid`. There is no guarantee that the ID is unique or\n * consistent across sessions. It is unsafe to generate unique ID for function\n * prototypes.\n *\n * @param {Object} obj The object to get the unique ID for.\n * @return {number} The unique ID for the object.\n */\ngoog.getUid = function(obj) {\n // TODO(arv): Make the type stricter, do not accept null.\n return Object.prototype.hasOwnProperty.call(obj, goog.UID_PROPERTY_) &&\n obj[goog.UID_PROPERTY_] ||\n (obj[goog.UID_PROPERTY_] = ++goog.uidCounter_);\n};\n\n\n/**\n * Whether the given object is already assigned a unique ID.\n *\n * This does not modify the object.\n *\n * @param {!Object} obj The object to check.\n * @return {boolean} Whether there is an assigned unique id for the object.\n */\ngoog.hasUid = function(obj) {\n return !!obj[goog.UID_PROPERTY_];\n};\n\n\n/**\n * Removes the unique ID from an object. This is useful if the object was\n * previously mutated using `goog.getUid` in which case the mutation is\n * undone.\n * @param {Object} obj The object to remove the unique ID field from.\n */\ngoog.removeUid = function(obj) {\n // TODO(arv): Make the type stricter, do not accept null.\n\n // In IE, DOM nodes are not instances of Object and throw an exception if we\n // try to delete. Instead we try to use removeAttribute.\n if (obj !== null && 'removeAttribute' in obj) {\n obj.removeAttribute(goog.UID_PROPERTY_);\n }\n\n try {\n delete obj[goog.UID_PROPERTY_];\n } catch (ex) {\n }\n};\n\n\n/**\n * Name for unique ID property. Initialized in a way to help avoid collisions\n * with other closure JavaScript on the same page.\n * @type {string}\n * @private\n */\ngoog.UID_PROPERTY_ = 'closure_uid_' + ((Math.random() * 1e9) >>> 0);\n\n\n/**\n * Counter for UID.\n * @type {number}\n * @private\n */\ngoog.uidCounter_ = 0;\n\n\n/**\n * Clones a value. The input may be an Object, Array, or basic type. Objects and\n * arrays will be cloned recursively.\n *\n * WARNINGS:\n * <code>goog.cloneObject</code> does not detect reference loops. Objects that\n * refer to themselves will cause infinite recursion.\n *\n * <code>goog.cloneObject</code> is unaware of unique identifiers, and copies\n * UIDs created by <code>getUid</code> into cloned results.\n *\n * @param {*} obj The value to clone.\n * @return {*} A clone of the input value.\n * @deprecated goog.cloneObject is unsafe. Prefer the goog.object methods.\n */\ngoog.cloneObject = function(obj) {\n var type = goog.typeOf(obj);\n if (type == 'object' || type == 'array') {\n if (typeof obj.clone === 'function') {\n return obj.clone();\n }\n if (typeof Map !== 'undefined' && obj instanceof Map) {\n return new Map(obj);\n } else if (typeof Set !== 'undefined' && obj instanceof Set) {\n return new Set(obj);\n }\n var clone = type == 'array' ? [] : {};\n for (var key in obj) {\n clone[key] = goog.cloneObject(obj[key]);\n }\n return clone;\n }\n\n return obj;\n};\n\n\n/**\n * A native implementation of goog.bind.\n * @param {?function(this:T, ...)} fn A function to partially apply.\n * @param {T} selfObj Specifies the object which this should point to when the\n * function is run.\n * @param {...*} var_args Additional arguments that are partially applied to the\n * function.\n * @return {!Function} A partially-applied form of the function goog.bind() was\n * invoked as a method of.\n * @template T\n * @private\n */\ngoog.bindNative_ = function(fn, selfObj, var_args) {\n return /** @type {!Function} */ (fn.call.apply(fn.bind, arguments));\n};\n\n\n/**\n * A pure-JS implementation of goog.bind.\n * @param {?function(this:T, ...)} fn A function to partially apply.\n * @param {T} selfObj Specifies the object which this should point to when the\n * function is run.\n * @param {...*} var_args Additional arguments that are partially applied to the\n * function.\n * @return {!Function} A partially-applied form of the function goog.bind() was\n * invoked as a method of.\n * @template T\n * @private\n */\ngoog.bindJs_ = function(fn, selfObj, var_args) {\n if (!fn) {\n throw new Error();\n }\n\n if (arguments.length > 2) {\n var boundArgs = Array.prototype.slice.call(arguments, 2);\n return function() {\n // Prepend the bound arguments to the current arguments.\n var newArgs = Array.prototype.slice.call(arguments);\n Array.prototype.unshift.apply(newArgs, boundArgs);\n return fn.apply(selfObj, newArgs);\n };\n\n } else {\n return function() {\n return fn.apply(selfObj, arguments);\n };\n }\n};\n\n\n/**\n * Partially applies this function to a particular 'this object' and zero or\n * more arguments. The result is a new function with some arguments of the first\n * function pre-filled and the value of this 'pre-specified'.\n *\n * Remaining arguments specified at call-time are appended to the pre-specified\n * ones.\n *\n * Also see: {@link #partial}.\n *\n * Usage:\n * <pre>var barMethBound = goog.bind(myFunction, myObj, 'arg1', 'arg2');\n * barMethBound('arg3', 'arg4');</pre>\n *\n * @param {?function(this:T, ...)} fn A function to partially apply.\n * @param {T} selfObj Specifies the object which this should point to when the\n * function is run.\n * @param {...*} var_args Additional arguments that are partially applied to the\n * function.\n * @return {!Function} A partially-applied form of the function goog.bind() was\n * invoked as a method of.\n * @template T\n * @suppress {deprecated} See above.\n * @deprecated use `=> {}` or Function.prototype.bind instead.\n */\ngoog.bind = function(fn, selfObj, var_args) {\n // TODO(nicksantos): narrow the type signature.\n if (Function.prototype.bind &&\n // NOTE(nicksantos): Somebody pulled base.js into the default Chrome\n // extension environment. This means that for Chrome extensions, they get\n // the implementation of Function.prototype.bind that calls goog.bind\n // instead of the native one. Even worse, we don't want to introduce a\n // circular dependency between goog.bind and Function.prototype.bind, so\n // we have to hack this to make sure it works correctly.\n Function.prototype.bind.toString().indexOf('native code') != -1) {\n goog.bind = goog.bindNative_;\n } else {\n goog.bind = goog.bindJs_;\n }\n return goog.bind.apply(null, arguments);\n};\n\n\n/**\n * Like goog.bind(), except that a 'this object' is not required. Useful when\n * the target function is already bound.\n *\n * Usage:\n * var g = goog.partial(f, arg1, arg2);\n * g(arg3, arg4);\n *\n * @param {Function} fn A function to partially apply.\n * @param {...*} var_args Additional arguments that are partially applied to fn.\n * @return {!Function} A partially-applied form of the function goog.partial()\n * was invoked as a method of.\n */\ngoog.partial = function(fn, var_args) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function() {\n // Clone the array (with slice()) and append additional arguments\n // to the existing arguments.\n var newArgs = args.slice();\n newArgs.push.apply(newArgs, arguments);\n return fn.apply(/** @type {?} */ (this), newArgs);\n };\n};\n\n\n/**\n * @return {number} An integer value representing the number of milliseconds\n * between midnight, January 1, 1970 and the current time.\n * @deprecated Use Date.now\n */\ngoog.now = function() {\n return Date.now();\n};\n\n\n/**\n * Evals JavaScript in the global scope.\n *\n * Throws an exception if neither execScript or eval is defined.\n * @param {string|!TrustedScript} script JavaScript string.\n */\ngoog.globalEval = function(script) {\n (0, eval)(script);\n};\n\n\n/**\n * Optional map of CSS class names to obfuscated names used with\n * goog.getCssName().\n * @private {!Object<string, string>|undefined}\n * @see goog.setCssNameMapping\n */\ngoog.cssNameMapping_;\n\n\n/**\n * Optional obfuscation style for CSS class names. Should be set to either\n * 'BY_WHOLE' or 'BY_PART' if defined.\n * @type {string|undefined}\n * @private\n * @see goog.setCssNameMapping\n */\ngoog.cssNameMappingStyle_;\n\n\n\n/**\n * A hook for modifying the default behavior goog.getCssName. The function\n * if present, will receive the standard output of the goog.getCssName as\n * its input.\n *\n * @type {(function(string):string)|undefined}\n */\ngoog.global.CLOSURE_CSS_NAME_MAP_FN;\n\n\n/**\n * Handles strings that are intended to be used as CSS class names.\n *\n * This function works in tandem with @see goog.setCssNameMapping.\n *\n * Without any mapping set, the arguments are simple joined with a hyphen and\n * passed through unaltered.\n *\n * When there is a mapping, there are two possible styles in which these\n * mappings are used. In the BY_PART style, each part (i.e. in between hyphens)\n * of the passed in css name is rewritten according to the map. In the BY_WHOLE\n * style, the full css name is looked up in the map directly. If a rewrite is\n * not specified by the map, the compiler will output a warning.\n *\n * When the mapping is passed to the compiler, it will replace calls to\n * goog.getCssName with the strings from the mapping, e.g.\n * var x = goog.getCssName('foo');\n * var y = goog.getCssName(this.baseClass, 'active');\n * becomes:\n * var x = 'foo';\n * var y = this.baseClass + '-active';\n *\n * If one argument is passed it will be processed, if two are passed only the\n * modifier will be processed, as it is assumed the first argument was generated\n * as a result of calling goog.getCssName.\n *\n * @param {string} className The class name.\n * @param {string=} opt_modifier A modifier to be appended to the class name.\n * @return {string} The class name or the concatenation of the class name and\n * the modifier.\n */\ngoog.getCssName = function(className, opt_modifier) {\n // String() is used for compatibility with compiled soy where the passed\n // className can be non-string objects.\n if (String(className).charAt(0) == '.') {\n throw new Error(\n 'className passed in goog.getCssName must not start with \".\".' +\n ' You passed: ' + className);\n }\n\n var getMapping = function(cssName) {\n return goog.cssNameMapping_[cssName] || cssName;\n };\n\n var renameByParts = function(cssName) {\n // Remap all the parts individually.\n var parts = cssName.split('-');\n var mapped = [];\n for (var i = 0; i < parts.length; i++) {\n mapped.push(getMapping(parts[i]));\n }\n return mapped.join('-');\n };\n\n var rename;\n if (goog.cssNameMapping_) {\n rename =\n goog.cssNameMappingStyle_ == 'BY_WHOLE' ? getMapping : renameByParts;\n } else {\n rename = function(a) {\n return a;\n };\n }\n\n var result =\n opt_modifier ? className + '-' + rename(opt_modifier) : rename(className);\n\n // The special CLOSURE_CSS_NAME_MAP_FN allows users to specify further\n // processing of the class name.\n if (goog.global.CLOSURE_CSS_NAME_MAP_FN) {\n return goog.global.CLOSURE_CSS_NAME_MAP_FN(result);\n }\n\n return result;\n};\n\n\n/**\n * Sets the map to check when returning a value from goog.getCssName(). Example:\n * <pre>\n * goog.setCssNameMapping({\n * \"goog\": \"a\",\n * \"disabled\": \"b\",\n * });\n *\n * var x = goog.getCssName('goog');\n * // The following evaluates to: \"a a-b\".\n * goog.getCssName('goog') + ' ' + goog.getCssName(x, 'disabled')\n * </pre>\n * When declared as a map of string literals to string literals, the JSCompiler\n * will replace all calls to goog.getCssName() using the supplied map if the\n * --process_closure_primitives flag is set.\n *\n * @param {!Object} mapping A map of strings to strings where keys are possible\n * arguments to goog.getCssName() and values are the corresponding values\n * that should be returned.\n * @param {string=} opt_style The style of css name mapping. There are two valid\n * options: 'BY_PART', and 'BY_WHOLE'.\n * @see goog.getCssName for a description.\n */\ngoog.setCssNameMapping = function(mapping, opt_style) {\n goog.cssNameMapping_ = mapping;\n goog.cssNameMappingStyle_ = opt_style;\n};\n\n\n/**\n * To use CSS renaming in compiled mode, one of the input files should have a\n * call to goog.setCssNameMapping() with an object literal that the JSCompiler\n * can extract and use to replace all calls to goog.getCssName(). In uncompiled\n * mode, JavaScript code should be loaded before this base.js file that declares\n * a global variable, CLOSURE_CSS_NAME_MAPPING, which is used below. This is\n * to ensure that the mapping is loaded before any calls to goog.getCssName()\n * are made in uncompiled mode.\n *\n * A hook for overriding the CSS name mapping.\n * @type {!Object<string, string>|undefined}\n */\ngoog.global.CLOSURE_CSS_NAME_MAPPING;\n\n\nif (!COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING) {\n // This does not call goog.setCssNameMapping() because the JSCompiler\n // requires that goog.setCssNameMapping() be called with an object literal.\n goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING;\n}\n\n/**\n * Options bag type for `goog.getMsg()` third argument.\n *\n * It is important to note that these options need to be known at compile time,\n * so they must always be provided to `goog.getMsg()` as an actual object\n * literal in the function call. Otherwise, closure-compiler will report an\n * error.\n * @record\n */\ngoog.GetMsgOptions = function() {};\n\n/**\n * If `true`, escape '<' in the message string to '&lt;'.\n *\n * Used by Closure Templates where the generated code size and performance is\n * critical which is why {@link goog.html.SafeHtmlFormatter} is not used.\n * The value must be literal `true` or `false`.\n * @type {boolean|undefined}\n */\ngoog.GetMsgOptions.prototype.html;\n\n/**\n * If `true`, unescape common html entities: &gt;, &lt;, &apos;, &quot; and\n * &amp;.\n *\n * Used for messages not in HTML context, such as with the `textContent`\n * property.\n * The value must be literal `true` or `false`.\n * @type {boolean|undefined}\n */\ngoog.GetMsgOptions.prototype.unescapeHtmlEntities;\n\n/**\n * Associates placeholder names with strings showing how their values are\n * obtained.\n *\n * This field is intended for use in automatically generated JS code.\n * Human-written code should use meaningful placeholder names instead.\n *\n * closure-compiler uses this as the contents of the `<ph>` tag in the\n * XMB file it generates or defaults to `-` for historical reasons.\n *\n * Must be an object literal.\n * Ignored at runtime.\n * Keys are placeholder names.\n * Values are string literals indicating how the value is obtained.\n * Typically this is a snippet of source code.\n * @type {!Object<string, string>|undefined}\n */\ngoog.GetMsgOptions.prototype.original_code;\n\n/**\n * Associates placeholder names with example values.\n *\n * closure-compiler uses this as the contents of the `<ex>` tag in the\n * XMB file it generates or defaults to `-` for historical reasons.\n *\n * Must be an object literal.\n * Ignored at runtime.\n * Keys are placeholder names.\n * Values are string literals containing example placeholder values.\n * (e.g. \"George McFly\" for a name placeholder)\n * @type {!Object<string, string>|undefined}\n */\ngoog.GetMsgOptions.prototype.example;\n\n/**\n * Gets a localized message.\n *\n * This function is a compiler primitive. If you give the compiler a localized\n * message bundle, it will replace the string at compile-time with a localized\n * version, and expand goog.getMsg call to a concatenated string.\n *\n * Messages must be initialized in the form:\n * <code>\n * var MSG_NAME = goog.getMsg('Hello {$placeholder}', {'placeholder': 'world'});\n * </code>\n *\n * This function produces a string which should be treated as plain text. Use\n * {@link goog.html.SafeHtmlFormatter} in conjunction with goog.getMsg to\n * produce SafeHtml.\n *\n * @param {string} str Translatable string, places holders in the form {$foo}.\n * @param {!Object<string, string>=} opt_values Maps place holder name to value.\n * @param {!goog.GetMsgOptions=} opt_options see `goog.GetMsgOptions`\n * @return {string} message with placeholders filled.\n */\ngoog.getMsg = function(str, opt_values, opt_options) {\n if (opt_options && opt_options.html) {\n // Note that '&' is not replaced because the translation can contain HTML\n // entities.\n str = str.replace(/</g, '&lt;');\n }\n if (opt_options && opt_options.unescapeHtmlEntities) {\n // Note that \"&amp;\" must be the last to avoid \"creating\" new entities.\n str = str.replace(/&lt;/g, '<')\n .replace(/&gt;/g, '>')\n .replace(/&apos;/g, '\\'')\n .replace(/&quot;/g, '\"')\n .replace(/&amp;/g, '&');\n }\n if (opt_values) {\n str = str.replace(/\\{\\$([^}]+)}/g, function(match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] :\n match;\n });\n }\n return str;\n};\n\n\n/**\n * Gets a localized message. If the message does not have a translation, gives a\n * fallback message.\n *\n * This is useful when introducing a new message that has not yet been\n * translated into all languages.\n *\n * This function is a compiler primitive. Must be used in the form:\n * <code>var x = goog.getMsgWithFallback(MSG_A, MSG_B);</code>\n * where MSG_A and MSG_B were initialized with goog.getMsg.\n *\n * @param {string} a The preferred message.\n * @param {string} b The fallback message.\n * @return {string} The best translated message.\n */\ngoog.getMsgWithFallback = function(a, b) {\n return a;\n};\n\n\n/**\n * Exposes an unobfuscated global namespace path for the given object.\n * Note that fields of the exported object *will* be obfuscated, unless they are\n * exported in turn via this function or goog.exportProperty.\n *\n * Also handy for making public items that are defined in anonymous closures.\n *\n * ex. goog.exportSymbol('public.path.Foo', Foo);\n *\n * ex. goog.exportSymbol('public.path.Foo.staticFunction', Foo.staticFunction);\n * public.path.Foo.staticFunction();\n *\n * ex. goog.exportSymbol('public.path.Foo.prototype.myMethod',\n * Foo.prototype.myMethod);\n * new public.path.Foo().myMethod();\n *\n * @param {string} publicPath Unobfuscated name to export.\n * @param {*} object Object the name should point to.\n * @param {?Object=} objectToExportTo The object to add the path to; default\n * is goog.global.\n */\ngoog.exportSymbol = function(publicPath, object, objectToExportTo) {\n goog.exportPath_(\n publicPath, object, /* overwriteImplicit= */ true, objectToExportTo);\n};\n\n\n/**\n * Exports a property unobfuscated into the object's namespace.\n * ex. goog.exportProperty(Foo, 'staticFunction', Foo.staticFunction);\n * ex. goog.exportProperty(Foo.prototype, 'myMethod', Foo.prototype.myMethod);\n * @param {Object} object Object whose static property is being exported.\n * @param {string} publicName Unobfuscated name to export.\n * @param {*} symbol Object the name should point to.\n */\ngoog.exportProperty = function(object, publicName, symbol) {\n object[publicName] = symbol;\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * Usage:\n * <pre>\n * function ParentClass(a, b) { }\n * ParentClass.prototype.foo = function(a) { };\n *\n * function ChildClass(a, b, c) {\n * ChildClass.base(this, 'constructor', a, b);\n * }\n * goog.inherits(ChildClass, ParentClass);\n *\n * var child = new ChildClass('a', 'b', 'see');\n * child.foo(); // This works.\n * </pre>\n *\n * @param {!Function} childCtor Child class.\n * @param {!Function} parentCtor Parent class.\n * @suppress {strictMissingProperties} superClass_ and base is not defined on\n * Function.\n * @deprecated Use ECMAScript class syntax instead.\n */\ngoog.inherits = function(childCtor, parentCtor) {\n /** @constructor */\n function tempCtor() {}\n tempCtor.prototype = parentCtor.prototype;\n childCtor.superClass_ = parentCtor.prototype;\n childCtor.prototype = new tempCtor();\n /** @override */\n childCtor.prototype.constructor = childCtor;\n\n /**\n * Calls superclass constructor/method.\n *\n * This function is only available if you use goog.inherits to\n * express inheritance relationships between classes.\n *\n * NOTE: This is a replacement for goog.base and for superClass_\n * property defined in childCtor.\n *\n * @param {!Object} me Should always be \"this\".\n * @param {string} methodName The method name to call. Calling\n * superclass constructor can be done with the special string\n * 'constructor'.\n * @param {...*} var_args The arguments to pass to superclass\n * method/constructor.\n * @return {*} The return value of the superclass method/constructor.\n */\n childCtor.base = function(me, methodName, var_args) {\n // Copying using loop to avoid deop due to passing arguments object to\n // function. This is faster in many JS engines as of late 2014.\n var args = new Array(arguments.length - 2);\n for (var i = 2; i < arguments.length; i++) {\n args[i - 2] = arguments[i];\n }\n return parentCtor.prototype[methodName].apply(me, args);\n };\n};\n\n\n/**\n * Allow for aliasing within scope functions. This function exists for\n * uncompiled code - in compiled code the calls will be inlined and the aliases\n * applied. In uncompiled code the function is simply run since the aliases as\n * written are valid JavaScript.\n *\n *\n * @param {function()} fn Function to call. This function can contain aliases\n * to namespaces (e.g. \"var dom = goog.dom\") or classes\n * (e.g. \"var Timer = goog.Timer\").\n * @deprecated Use goog.module instead.\n */\ngoog.scope = function(fn) {\n if (goog.isInModuleLoader_()) {\n throw new Error('goog.scope is not supported within a module.');\n }\n fn.call(goog.global);\n};\n\n\n/*\n * To support uncompiled, strict mode bundles that use eval to divide source\n * like so:\n * eval('someSource;//# sourceUrl sourcefile.js');\n * We need to export the globally defined symbols \"goog\" and \"COMPILED\".\n * Exporting \"goog\" breaks the compiler optimizations, so we required that\n * be defined externally.\n * NOTE: We don't use goog.exportSymbol here because we don't want to trigger\n * extern generation when that compiler option is enabled.\n */\nif (!COMPILED) {\n goog.global['COMPILED'] = COMPILED;\n}\n\n\n//==============================================================================\n// goog.defineClass implementation\n//==============================================================================\n\n\n/**\n * Creates a restricted form of a Closure \"class\":\n * - from the compiler's perspective, the instance returned from the\n * constructor is sealed (no new properties may be added). This enables\n * better checks.\n * - the compiler will rewrite this definition to a form that is optimal\n * for type checking and optimization (initially this will be a more\n * traditional form).\n *\n * @param {Function} superClass The superclass, Object or null.\n * @param {goog.defineClass.ClassDescriptor} def\n * An object literal describing\n * the class. It may have the following properties:\n * \"constructor\": the constructor function\n * \"statics\": an object literal containing methods to add to the constructor\n * as \"static\" methods or a function that will receive the constructor\n * function as its only parameter to which static properties can\n * be added.\n * all other properties are added to the prototype.\n * @return {!Function} The class constructor.\n * @deprecated Use ECMAScript class syntax instead.\n */\ngoog.defineClass = function(superClass, def) {\n // TODO(johnlenz): consider making the superClass an optional parameter.\n var constructor = def.constructor;\n var statics = def.statics;\n // Wrap the constructor prior to setting up the prototype and static methods.\n if (!constructor || constructor == Object.prototype.constructor) {\n constructor = function() {\n throw new Error(\n 'cannot instantiate an interface (no constructor defined).');\n };\n }\n\n var cls = goog.defineClass.createSealingConstructor_(constructor, superClass);\n if (superClass) {\n goog.inherits(cls, superClass);\n }\n\n // Remove all the properties that should not be copied to the prototype.\n delete def.constructor;\n delete def.statics;\n\n goog.defineClass.applyProperties_(cls.prototype, def);\n if (statics != null) {\n if (statics instanceof Function) {\n statics(cls);\n } else {\n goog.defineClass.applyProperties_(cls, statics);\n }\n }\n\n return cls;\n};\n\n\n/**\n * @typedef {{\n * constructor: (!Function|undefined),\n * statics: (Object|undefined|function(Function):void)\n * }}\n */\ngoog.defineClass.ClassDescriptor;\n\n\n/**\n * @define {boolean} Whether the instances returned by goog.defineClass should\n * be sealed when possible.\n *\n * When sealing is disabled the constructor function will not be wrapped by\n * goog.defineClass, making it incompatible with ES6 class methods.\n */\ngoog.defineClass.SEAL_CLASS_INSTANCES =\n goog.define('goog.defineClass.SEAL_CLASS_INSTANCES', goog.DEBUG);\n\n\n/**\n * If goog.defineClass.SEAL_CLASS_INSTANCES is enabled and Object.seal is\n * defined, this function will wrap the constructor in a function that seals the\n * results of the provided constructor function.\n *\n * @param {!Function} ctr The constructor whose results maybe be sealed.\n * @param {Function} superClass The superclass constructor.\n * @return {!Function} The replacement constructor.\n * @private\n */\ngoog.defineClass.createSealingConstructor_ = function(ctr, superClass) {\n if (!goog.defineClass.SEAL_CLASS_INSTANCES) {\n // Do now wrap the constructor when sealing is disabled. Angular code\n // depends on this for injection to work properly.\n return ctr;\n }\n\n // NOTE: The sealing behavior has been removed\n\n /**\n * @this {Object}\n * @return {?}\n */\n var wrappedCtr = function() {\n // Don't seal an instance of a subclass when it calls the constructor of\n // its super class as there is most likely still setup to do.\n var instance = ctr.apply(this, arguments) || this;\n instance[goog.UID_PROPERTY_] = instance[goog.UID_PROPERTY_];\n\n return instance;\n };\n\n return wrappedCtr;\n};\n\n\n\n// TODO(johnlenz): share these values with the goog.object\n/**\n * The names of the fields that are defined on Object.prototype.\n * @type {!Array<string>}\n * @private\n * @const\n */\ngoog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n\n// TODO(johnlenz): share this function with the goog.object\n/**\n * @param {!Object} target The object to add properties to.\n * @param {!Object} source The object to copy properties from.\n * @private\n */\ngoog.defineClass.applyProperties_ = function(target, source) {\n // TODO(johnlenz): update this to support ES5 getters/setters\n\n var key;\n for (key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n\n // For IE the for-in-loop does not contain any properties that are not\n // enumerable on the prototype object (for example isPrototypeOf from\n // Object.prototype) and it will also not include 'replace' on objects that\n // extend String and change 'replace' (not that it is common for anyone to\n // extend anything except Object).\n for (var i = 0; i < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; i++) {\n key = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[i];\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n};\n\n/**\n * Returns the parameter.\n * @param {string} s\n * @return {string}\n * @private\n */\ngoog.identity_ = function(s) {\n return s;\n};\n\n\n/**\n * Creates Trusted Types policy if Trusted Types are supported by the browser.\n * The policy just blesses any string as a Trusted Type. It is not visibility\n * restricted because anyone can also call trustedTypes.createPolicy directly.\n * However, the allowed names should be restricted by a HTTP header and the\n * reference to the created policy should be visibility restricted.\n * @param {string} name\n * @return {?TrustedTypePolicy}\n */\ngoog.createTrustedTypesPolicy = function(name) {\n var policy = null;\n var policyFactory = goog.global.trustedTypes;\n if (!policyFactory || !policyFactory.createPolicy) {\n return policy;\n }\n // trustedTypes.createPolicy throws if called with a name that is already\n // registered, even in report-only mode. Until the API changes, catch the\n // error not to break the applications functionally. In such case, the code\n // will fall back to using regular Safe Types.\n // TODO(koto): Remove catching once createPolicy API stops throwing.\n try {\n policy = policyFactory.createPolicy(name, {\n createHTML: goog.identity_,\n createScript: goog.identity_,\n createScriptURL: goog.identity_\n });\n } catch (e) {\n goog.logToConsole_(e.message);\n }\n return policy;\n};\n\n// There's a bug in the compiler where without collapse properties the\n// Closure namespace defines do not guard code correctly. To help reduce code\n// size also check for !COMPILED even though it redundant until this is fixed.\nif (!COMPILED && goog.DEPENDENCIES_ENABLED) {\n\n\n /**\n * Tries to detect whether the current browser is Edge, based on the user\n * agent. This matches only pre-Chromium Edge.\n * @see https://docs.microsoft.com/en-us/microsoft-edge/web-platform/user-agent-string\n * @return {boolean} True if the current browser is Edge.\n * @private\n */\n goog.isEdge_ = function() {\n var userAgent = goog.global.navigator && goog.global.navigator.userAgent ?\n goog.global.navigator.userAgent :\n '';\n var edgeRe = /Edge\\/(\\d+)(\\.\\d)*/i;\n return !!userAgent.match(edgeRe);\n };\n\n\n /**\n * Tries to detect whether is in the context of an HTML document.\n * @return {boolean} True if it looks like HTML document.\n * @private\n */\n goog.inHtmlDocument_ = function() {\n /** @type {!Document} */\n var doc = goog.global.document;\n return doc != null && 'write' in doc; // XULDocument misses write.\n };\n\n\n /**\n * We'd like to check for if the document readyState is 'loading'; however\n * there are bugs on IE 10 and below where the readyState being anything other\n * than 'complete' is not reliable.\n * @return {boolean}\n * @private\n */\n goog.isDocumentLoading_ = function() {\n // attachEvent is available on IE 6 thru 10 only, and thus can be used to\n // detect those browsers.\n /** @type {!HTMLDocument} */\n var doc = goog.global.document;\n return doc.attachEvent ? doc.readyState != 'complete' :\n doc.readyState == 'loading';\n };\n\n\n /**\n * Tries to detect the base path of base.js script that bootstraps Closure.\n * @private\n */\n goog.findBasePath_ = function() {\n if (goog.global.CLOSURE_BASE_PATH != undefined &&\n // Anti DOM-clobbering runtime check (b/37736576).\n typeof goog.global.CLOSURE_BASE_PATH === 'string') {\n goog.basePath = goog.global.CLOSURE_BASE_PATH;\n return;\n } else if (!goog.inHtmlDocument_()) {\n return;\n }\n /** @type {!Document} */\n var doc = goog.global.document;\n // If we have a currentScript available, use it exclusively.\n var currentScript = doc.currentScript;\n if (currentScript) {\n var scripts = [currentScript];\n } else {\n var scripts = doc.getElementsByTagName('SCRIPT');\n }\n // Search backwards since the current script is in almost all cases the one\n // that has base.js.\n for (var i = scripts.length - 1; i >= 0; --i) {\n var script = /** @type {!HTMLScriptElement} */ (scripts[i]);\n var src = script.src;\n var qmark = src.lastIndexOf('?');\n var l = qmark == -1 ? src.length : qmark;\n if (src.slice(l - 7, l) == 'base.js') {\n goog.basePath = src.slice(0, l - 7);\n return;\n }\n }\n };\n\n goog.findBasePath_();\n\n /**\n * Rewrites closing script tags in input to avoid ending an enclosing script\n * tag.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n goog.protectScriptTag_ = function(str) {\n return str.replace(/<\\/(SCRIPT)/ig, '\\\\x3c/$1');\n };\n\n\n /**\n * A debug loader is responsible for downloading and executing javascript\n * files in an unbundled, uncompiled environment.\n *\n * This can be custimized via the setDependencyFactory method, or by\n * CLOSURE_IMPORT_SCRIPT/CLOSURE_LOAD_FILE_SYNC.\n *\n * @struct @constructor @final @private\n */\n goog.DebugLoader_ = function() {\n /** @private @const {!Object<string, !goog.Dependency>} */\n this.dependencies_ = {};\n /** @private @const {!Object<string, string>} */\n this.idToPath_ = {};\n /** @private @const {!Object<string, boolean>} */\n this.written_ = {};\n /** @private @const {!Array<!goog.Dependency>} */\n this.loadingDeps_ = [];\n /** @private {!Array<!goog.Dependency>} */\n this.depsToLoad_ = [];\n /** @private {boolean} */\n this.paused_ = false;\n /** @private {!goog.DependencyFactory} */\n this.factory_ = new goog.DependencyFactory();\n /** @private @const {!Object<string, !Function>} */\n this.deferredCallbacks_ = {};\n /** @private @const {!Array<string>} */\n this.deferredQueue_ = [];\n };\n\n /**\n * @param {!Array<string>} namespaces\n * @param {function(): undefined} callback Function to call once all the\n * namespaces have loaded.\n */\n goog.DebugLoader_.prototype.bootstrap = function(namespaces, callback) {\n var cb = callback;\n function resolve() {\n if (cb) {\n goog.global.setTimeout(cb, 0);\n cb = null;\n }\n }\n\n if (!namespaces.length) {\n resolve();\n return;\n }\n\n var deps = [];\n for (var i = 0; i < namespaces.length; i++) {\n var path = this.getPathFromDeps_(namespaces[i]);\n if (!path) {\n throw new Error('Unregonized namespace: ' + namespaces[i]);\n }\n deps.push(this.dependencies_[path]);\n }\n\n var require = goog.require;\n var loaded = 0;\n for (var i = 0; i < namespaces.length; i++) {\n require(namespaces[i]);\n deps[i].onLoad(function() {\n if (++loaded == namespaces.length) {\n resolve();\n }\n });\n }\n };\n\n\n /**\n * Loads the Closure Dependency file.\n *\n * Exposed a public function so CLOSURE_NO_DEPS can be set to false, base\n * loaded, setDependencyFactory called, and then this called. i.e. allows\n * custom loading of the deps file.\n */\n goog.DebugLoader_.prototype.loadClosureDeps = function() {\n // Circumvent addDependency, which would try to transpile deps.js if\n // transpile is set to always.\n var relPath = 'deps.js';\n this.depsToLoad_.push(this.factory_.createDependency(\n goog.normalizePath_(goog.basePath + relPath), relPath, [], [], {}));\n this.loadDeps_();\n };\n\n\n /**\n * Notifies the debug loader when a dependency has been requested.\n *\n * @param {string} absPathOrId Path of the dependency or goog id.\n * @param {boolean=} opt_force\n */\n goog.DebugLoader_.prototype.requested = function(absPathOrId, opt_force) {\n var path = this.getPathFromDeps_(absPathOrId);\n if (path &&\n (opt_force || this.areDepsLoaded_(this.dependencies_[path].requires))) {\n var callback = this.deferredCallbacks_[path];\n if (callback) {\n delete this.deferredCallbacks_[path];\n callback();\n }\n }\n };\n\n\n /**\n * Sets the dependency factory, which can be used to create custom\n * goog.Dependency implementations to control how dependencies are loaded.\n *\n * @param {!goog.DependencyFactory} factory\n */\n goog.DebugLoader_.prototype.setDependencyFactory = function(factory) {\n this.factory_ = factory;\n };\n\n\n /**\n * Travserses the dependency graph and queues the given dependency, and all of\n * its transitive dependencies, for loading and then starts loading if not\n * paused.\n *\n * @param {string} namespace\n * @private\n */\n goog.DebugLoader_.prototype.load_ = function(namespace) {\n if (!this.getPathFromDeps_(namespace)) {\n var errorMessage = 'goog.require could not find: ' + namespace;\n goog.logToConsole_(errorMessage);\n } else {\n var loader = this;\n\n var deps = [];\n\n /** @param {string} namespace */\n var visit = function(namespace) {\n var path = loader.getPathFromDeps_(namespace);\n\n if (!path) {\n throw new Error('Bad dependency path or symbol: ' + namespace);\n }\n\n if (loader.written_[path]) {\n return;\n }\n\n loader.written_[path] = true;\n\n var dep = loader.dependencies_[path];\n for (var i = 0; i < dep.requires.length; i++) {\n if (!goog.isProvided_(dep.requires[i])) {\n visit(dep.requires[i]);\n }\n }\n\n deps.push(dep);\n };\n\n visit(namespace);\n\n var wasLoading = !!this.depsToLoad_.length;\n this.depsToLoad_ = this.depsToLoad_.concat(deps);\n\n if (!this.paused_ && !wasLoading) {\n this.loadDeps_();\n }\n }\n };\n\n\n /**\n * Loads any queued dependencies until they are all loaded or paused.\n *\n * @private\n */\n goog.DebugLoader_.prototype.loadDeps_ = function() {\n var loader = this;\n var paused = this.paused_;\n\n while (this.depsToLoad_.length && !paused) {\n (function() {\n var loadCallDone = false;\n var dep = loader.depsToLoad_.shift();\n\n var loaded = false;\n loader.loading_(dep);\n\n var controller = {\n pause: function() {\n if (loadCallDone) {\n throw new Error('Cannot call pause after the call to load.');\n } else {\n paused = true;\n }\n },\n resume: function() {\n if (loadCallDone) {\n loader.resume_();\n } else {\n // Some dep called pause and then resume in the same load call.\n // Just keep running this same loop.\n paused = false;\n }\n },\n loaded: function() {\n if (loaded) {\n throw new Error('Double call to loaded.');\n }\n\n loaded = true;\n loader.loaded_(dep);\n },\n pending: function() {\n // Defensive copy.\n var pending = [];\n for (var i = 0; i < loader.loadingDeps_.length; i++) {\n pending.push(loader.loadingDeps_[i]);\n }\n return pending;\n },\n /**\n * @param {goog.ModuleType} type\n */\n setModuleState: function(type) {\n goog.moduleLoaderState_ = {\n type: type,\n moduleName: '',\n declareLegacyNamespace: false\n };\n },\n /** @type {function(string, string, string=)} */\n registerEs6ModuleExports: function(\n path, exports, opt_closureNamespace) {\n if (opt_closureNamespace) {\n goog.loadedModules_[opt_closureNamespace] = {\n exports: exports,\n type: goog.ModuleType.ES6,\n moduleId: opt_closureNamespace || ''\n };\n }\n },\n /** @type {function(string, ?)} */\n registerGoogModuleExports: function(moduleId, exports) {\n goog.loadedModules_[moduleId] = {\n exports: exports,\n type: goog.ModuleType.GOOG,\n moduleId: moduleId\n };\n },\n clearModuleState: function() {\n goog.moduleLoaderState_ = null;\n },\n defer: function(callback) {\n if (loadCallDone) {\n throw new Error(\n 'Cannot register with defer after the call to load.');\n }\n loader.defer_(dep, callback);\n },\n areDepsLoaded: function() {\n return loader.areDepsLoaded_(dep.requires);\n }\n };\n\n try {\n dep.load(controller);\n } finally {\n loadCallDone = true;\n }\n })();\n }\n\n if (paused) {\n this.pause_();\n }\n };\n\n\n /** @private */\n goog.DebugLoader_.prototype.pause_ = function() {\n this.paused_ = true;\n };\n\n\n /** @private */\n goog.DebugLoader_.prototype.resume_ = function() {\n if (this.paused_) {\n this.paused_ = false;\n this.loadDeps_();\n }\n };\n\n\n /**\n * Marks the given dependency as loading (load has been called but it has not\n * yet marked itself as finished). Useful for dependencies that want to know\n * what else is loading. Example: goog.modules cannot eval if there are\n * loading dependencies.\n *\n * @param {!goog.Dependency} dep\n * @private\n */\n goog.DebugLoader_.prototype.loading_ = function(dep) {\n this.loadingDeps_.push(dep);\n };\n\n\n /**\n * Marks the given dependency as having finished loading and being available\n * for require.\n *\n * @param {!goog.Dependency} dep\n * @private\n */\n goog.DebugLoader_.prototype.loaded_ = function(dep) {\n for (var i = 0; i < this.loadingDeps_.length; i++) {\n if (this.loadingDeps_[i] == dep) {\n this.loadingDeps_.splice(i, 1);\n break;\n }\n }\n\n for (var i = 0; i < this.deferredQueue_.length; i++) {\n if (this.deferredQueue_[i] == dep.path) {\n this.deferredQueue_.splice(i, 1);\n break;\n }\n }\n\n if (this.loadingDeps_.length == this.deferredQueue_.length &&\n !this.depsToLoad_.length) {\n // Something has asked to load these, but they may not be directly\n // required again later, so load them now that we know we're done loading\n // everything else. e.g. a goog module entry point.\n while (this.deferredQueue_.length) {\n this.requested(this.deferredQueue_.shift(), true);\n }\n }\n\n dep.loaded();\n };\n\n\n /**\n * @param {!Array<string>} pathsOrIds\n * @return {boolean}\n * @private\n */\n goog.DebugLoader_.prototype.areDepsLoaded_ = function(pathsOrIds) {\n for (var i = 0; i < pathsOrIds.length; i++) {\n var path = this.getPathFromDeps_(pathsOrIds[i]);\n if (!path ||\n (!(path in this.deferredCallbacks_) &&\n !goog.isProvided_(pathsOrIds[i]))) {\n return false;\n }\n }\n\n return true;\n };\n\n\n /**\n * @param {string} absPathOrId\n * @return {?string}\n * @private\n */\n goog.DebugLoader_.prototype.getPathFromDeps_ = function(absPathOrId) {\n if (absPathOrId in this.idToPath_) {\n return this.idToPath_[absPathOrId];\n } else if (absPathOrId in this.dependencies_) {\n return absPathOrId;\n } else {\n return null;\n }\n };\n\n\n /**\n * @param {!goog.Dependency} dependency\n * @param {!Function} callback\n * @private\n */\n goog.DebugLoader_.prototype.defer_ = function(dependency, callback) {\n this.deferredCallbacks_[dependency.path] = callback;\n this.deferredQueue_.push(dependency.path);\n };\n\n\n /**\n * Interface for goog.Dependency implementations to have some control over\n * loading of dependencies.\n *\n * @record\n */\n goog.LoadController = function() {};\n\n\n /**\n * Tells the controller to halt loading of more dependencies.\n */\n goog.LoadController.prototype.pause = function() {};\n\n\n /**\n * Tells the controller to resume loading of more dependencies if paused.\n */\n goog.LoadController.prototype.resume = function() {};\n\n\n /**\n * Tells the controller that this dependency has finished loading.\n *\n * This causes this to be removed from pending() and any load callbacks to\n * fire.\n */\n goog.LoadController.prototype.loaded = function() {};\n\n\n /**\n * List of dependencies on which load has been called but which have not\n * called loaded on their controller. This includes the current dependency.\n *\n * @return {!Array<!goog.Dependency>}\n */\n goog.LoadController.prototype.pending = function() {};\n\n\n /**\n * Registers an object as an ES6 module's exports so that goog.modules may\n * require it by path.\n *\n * @param {string} path Full path of the module.\n * @param {?} exports\n * @param {string=} opt_closureNamespace Closure namespace to associate with\n * this module.\n */\n goog.LoadController.prototype.registerEs6ModuleExports = function(\n path, exports, opt_closureNamespace) {};\n\n\n /**\n * Sets the current module state.\n *\n * @param {goog.ModuleType} type Type of module.\n */\n goog.LoadController.prototype.setModuleState = function(type) {};\n\n\n /**\n * Clears the current module state.\n */\n goog.LoadController.prototype.clearModuleState = function() {};\n\n\n /**\n * Registers a callback to call once the dependency is actually requested\n * via goog.require + all of the immediate dependencies have been loaded or\n * all other files have been loaded. Allows for lazy loading until\n * require'd without pausing dependency loading, which is needed on old IE.\n *\n * @param {!Function} callback\n */\n goog.LoadController.prototype.defer = function(callback) {};\n\n\n /**\n * @return {boolean}\n */\n goog.LoadController.prototype.areDepsLoaded = function() {};\n\n\n /**\n * Basic super class for all dependencies Closure Library can load.\n *\n * This default implementation is designed to load untranspiled, non-module\n * scripts in a web broswer.\n *\n * For goog.modules see {@see goog.GoogModuleDependency}.\n * For untranspiled ES6 modules {@see goog.Es6ModuleDependency}.\n *\n * @param {string} path Absolute path of this script.\n * @param {string} relativePath Path of this script relative to goog.basePath.\n * @param {!Array<string>} provides goog.provided or goog.module symbols\n * in this file.\n * @param {!Array<string>} requires goog symbols or relative paths to Closure\n * this depends on.\n * @param {!Object<string, string>} loadFlags\n * @struct @constructor\n */\n goog.Dependency = function(\n path, relativePath, provides, requires, loadFlags) {\n /** @const */\n this.path = path;\n /** @const */\n this.relativePath = relativePath;\n /** @const */\n this.provides = provides;\n /** @const */\n this.requires = requires;\n /** @const */\n this.loadFlags = loadFlags;\n /** @private {boolean} */\n this.loaded_ = false;\n /** @private {!Array<function()>} */\n this.loadCallbacks_ = [];\n };\n\n\n /**\n * @return {string} The pathname part of this dependency's path if it is a\n * URI.\n */\n goog.Dependency.prototype.getPathName = function() {\n var pathName = this.path;\n var protocolIndex = pathName.indexOf('://');\n if (protocolIndex >= 0) {\n pathName = pathName.substring(protocolIndex + 3);\n var slashIndex = pathName.indexOf('/');\n if (slashIndex >= 0) {\n pathName = pathName.substring(slashIndex + 1);\n }\n }\n return pathName;\n };\n\n\n /**\n * @param {function()} callback Callback to fire as soon as this has loaded.\n * @final\n */\n goog.Dependency.prototype.onLoad = function(callback) {\n if (this.loaded_) {\n callback();\n } else {\n this.loadCallbacks_.push(callback);\n }\n };\n\n\n /**\n * Marks this dependency as loaded and fires any callbacks registered with\n * onLoad.\n * @final\n */\n goog.Dependency.prototype.loaded = function() {\n this.loaded_ = true;\n var callbacks = this.loadCallbacks_;\n this.loadCallbacks_ = [];\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i]();\n }\n };\n\n\n /**\n * Whether or not document.written / appended script tags should be deferred.\n *\n * @private {boolean}\n */\n goog.Dependency.defer_ = false;\n\n\n /**\n * Map of script ready / state change callbacks. Old IE cannot handle putting\n * these properties on goog.global.\n *\n * @private @const {!Object<string, function(?):undefined>}\n */\n goog.Dependency.callbackMap_ = {};\n\n\n /**\n * @param {function(...?):?} callback\n * @return {string}\n * @private\n */\n goog.Dependency.registerCallback_ = function(callback) {\n var key = Math.random().toString(32);\n goog.Dependency.callbackMap_[key] = callback;\n return key;\n };\n\n\n /**\n * @param {string} key\n * @private\n */\n goog.Dependency.unregisterCallback_ = function(key) {\n delete goog.Dependency.callbackMap_[key];\n };\n\n\n /**\n * @param {string} key\n * @param {...?} var_args\n * @private\n * @suppress {unusedPrivateMembers}\n */\n goog.Dependency.callback_ = function(key, var_args) {\n if (key in goog.Dependency.callbackMap_) {\n var callback = goog.Dependency.callbackMap_[key];\n var args = [];\n for (var i = 1; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n callback.apply(undefined, args);\n } else {\n var errorMessage = 'Callback key ' + key +\n ' does not exist (was base.js loaded more than once?).';\n throw Error(errorMessage);\n }\n };\n\n\n /**\n * Starts loading this dependency. This dependency can pause loading if it\n * needs to and resume it later via the controller interface.\n *\n * When this is loaded it should call controller.loaded(). Note that this will\n * end up calling the loaded method of this dependency; there is no need to\n * call it explicitly.\n *\n * @param {!goog.LoadController} controller\n */\n goog.Dependency.prototype.load = function(controller) {\n if (goog.global.CLOSURE_IMPORT_SCRIPT) {\n if (goog.global.CLOSURE_IMPORT_SCRIPT(this.path)) {\n controller.loaded();\n } else {\n controller.pause();\n }\n return;\n }\n\n if (!goog.inHtmlDocument_()) {\n goog.logToConsole_(\n 'Cannot use default debug loader outside of HTML documents.');\n if (this.relativePath == 'deps.js') {\n // Some old code is relying on base.js auto loading deps.js failing with\n // no error before later setting CLOSURE_IMPORT_SCRIPT.\n // CLOSURE_IMPORT_SCRIPT should be set *before* base.js is loaded, or\n // CLOSURE_NO_DEPS set to true.\n goog.logToConsole_(\n 'Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, ' +\n 'or setting CLOSURE_NO_DEPS to true.');\n controller.loaded();\n } else {\n controller.pause();\n }\n return;\n }\n\n /** @type {!HTMLDocument} */\n var doc = goog.global.document;\n\n // If the user tries to require a new symbol after document load,\n // something has gone terribly wrong. Doing a document.write would\n // wipe out the page. This does not apply to the CSP-compliant method\n // of writing script tags.\n if (doc.readyState == 'complete' &&\n !goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING) {\n // Certain test frameworks load base.js multiple times, which tries\n // to write deps.js each time. If that happens, just fail silently.\n // These frameworks wipe the page between each load of base.js, so this\n // is OK.\n var isDeps = /\\bdeps.js$/.test(this.path);\n if (isDeps) {\n controller.loaded();\n return;\n } else {\n throw Error('Cannot write \"' + this.path + '\" after document load');\n }\n }\n\n var nonce = goog.getScriptNonce_();\n if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING &&\n goog.isDocumentLoading_()) {\n var key;\n var callback = function(script) {\n if (script.readyState && script.readyState != 'complete') {\n script.onload = callback;\n return;\n }\n goog.Dependency.unregisterCallback_(key);\n controller.loaded();\n };\n key = goog.Dependency.registerCallback_(callback);\n\n var defer = goog.Dependency.defer_ ? ' defer' : '';\n var nonceAttr = nonce ? ' nonce=\"' + nonce + '\"' : '';\n var script = '<script src=\"' + this.path + '\"' + nonceAttr + defer +\n ' id=\"script-' + key + '\"><\\/script>';\n\n script += '<script' + nonceAttr + '>';\n\n if (goog.Dependency.defer_) {\n script += 'document.getElementById(\\'script-' + key +\n '\\').onload = function() {\\n' +\n ' goog.Dependency.callback_(\\'' + key + '\\', this);\\n' +\n '};\\n';\n } else {\n script += 'goog.Dependency.callback_(\\'' + key +\n '\\', document.getElementById(\\'script-' + key + '\\'));';\n }\n\n script += '<\\/script>';\n\n doc.write(\n goog.TRUSTED_TYPES_POLICY_ ?\n goog.TRUSTED_TYPES_POLICY_.createHTML(script) :\n script);\n } else {\n var scriptEl =\n /** @type {!HTMLScriptElement} */ (doc.createElement('script'));\n scriptEl.defer = goog.Dependency.defer_;\n scriptEl.async = false;\n\n // If CSP nonces are used, propagate them to dynamically created scripts.\n // This is necessary to allow nonce-based CSPs without 'strict-dynamic'.\n if (nonce) {\n scriptEl.nonce = nonce;\n }\n\n scriptEl.onload = function() {\n scriptEl.onload = null;\n controller.loaded();\n };\n\n scriptEl.src = goog.TRUSTED_TYPES_POLICY_ ?\n goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path) :\n this.path;\n doc.head.appendChild(scriptEl);\n }\n };\n\n\n /**\n * @param {string} path Absolute path of this script.\n * @param {string} relativePath Path of this script relative to goog.basePath.\n * @param {!Array<string>} provides Should be an empty array.\n * TODO(johnplaisted) add support for adding closure namespaces to ES6\n * modules for interop purposes.\n * @param {!Array<string>} requires goog symbols or relative paths to Closure\n * this depends on.\n * @param {!Object<string, string>} loadFlags\n * @struct @constructor\n * @extends {goog.Dependency}\n */\n goog.Es6ModuleDependency = function(\n path, relativePath, provides, requires, loadFlags) {\n goog.Es6ModuleDependency.base(\n this, 'constructor', path, relativePath, provides, requires, loadFlags);\n };\n goog.inherits(goog.Es6ModuleDependency, goog.Dependency);\n\n\n /**\n * @override\n * @param {!goog.LoadController} controller\n */\n goog.Es6ModuleDependency.prototype.load = function(controller) {\n if (goog.global.CLOSURE_IMPORT_SCRIPT) {\n if (goog.global.CLOSURE_IMPORT_SCRIPT(this.path)) {\n controller.loaded();\n } else {\n controller.pause();\n }\n return;\n }\n\n if (!goog.inHtmlDocument_()) {\n goog.logToConsole_(\n 'Cannot use default debug loader outside of HTML documents.');\n controller.pause();\n return;\n }\n\n /** @type {!HTMLDocument} */\n var doc = goog.global.document;\n\n var dep = this;\n\n // TODO(johnplaisted): Does document.writing really speed up anything? Any\n // difference between this and just waiting for interactive mode and then\n // appending?\n function write(src, contents) {\n var nonceAttr = '';\n var nonce = goog.getScriptNonce_();\n if (nonce) {\n nonceAttr = ' nonce=\"' + nonce + '\"';\n }\n\n if (contents) {\n var script = '<script type=\"module\" crossorigin' + nonceAttr + '>' +\n contents + '</' +\n 'script>';\n doc.write(\n goog.TRUSTED_TYPES_POLICY_ ?\n goog.TRUSTED_TYPES_POLICY_.createHTML(script) :\n script);\n } else {\n var script = '<script type=\"module\" crossorigin src=\"' + src + '\"' +\n nonceAttr + '></' +\n 'script>';\n doc.write(\n goog.TRUSTED_TYPES_POLICY_ ?\n goog.TRUSTED_TYPES_POLICY_.createHTML(script) :\n script);\n }\n }\n\n function append(src, contents) {\n var scriptEl =\n /** @type {!HTMLScriptElement} */ (doc.createElement('script'));\n scriptEl.defer = true;\n scriptEl.async = false;\n scriptEl.type = 'module';\n scriptEl.setAttribute('crossorigin', true);\n\n // If CSP nonces are used, propagate them to dynamically created scripts.\n // This is necessary to allow nonce-based CSPs without 'strict-dynamic'.\n var nonce = goog.getScriptNonce_();\n if (nonce) {\n scriptEl.nonce = nonce;\n }\n\n if (contents) {\n scriptEl.text = goog.TRUSTED_TYPES_POLICY_ ?\n goog.TRUSTED_TYPES_POLICY_.createScript(contents) :\n contents;\n } else {\n scriptEl.src = goog.TRUSTED_TYPES_POLICY_ ?\n goog.TRUSTED_TYPES_POLICY_.createScriptURL(src) :\n src;\n }\n\n doc.head.appendChild(scriptEl);\n }\n\n var create;\n\n if (goog.isDocumentLoading_()) {\n create = write;\n // We can ONLY call document.write if we are guaranteed that any\n // non-module script tags document.written after this are deferred.\n // Small optimization, in theory document.writing is faster.\n goog.Dependency.defer_ = true;\n } else {\n create = append;\n }\n\n // Write 4 separate tags here:\n // 1) Sets the module state at the correct time (just before execution).\n // 2) A src node for this, which just hopefully lets the browser load it a\n // little early (no need to parse #3).\n // 3) Import the module and register it.\n // 4) Clear the module state at the correct time. Guaranteed to run even\n // if there is an error in the module (#3 will not run if there is an\n // error in the module).\n var beforeKey = goog.Dependency.registerCallback_(function() {\n goog.Dependency.unregisterCallback_(beforeKey);\n controller.setModuleState(goog.ModuleType.ES6);\n });\n create(undefined, 'goog.Dependency.callback_(\"' + beforeKey + '\")');\n\n // TODO(johnplaisted): Does this really speed up anything?\n create(this.path, undefined);\n\n var registerKey = goog.Dependency.registerCallback_(function(exports) {\n goog.Dependency.unregisterCallback_(registerKey);\n controller.registerEs6ModuleExports(\n dep.path, exports, goog.moduleLoaderState_.moduleName);\n });\n create(\n undefined,\n 'import * as m from \"' + this.path + '\"; goog.Dependency.callback_(\"' +\n registerKey + '\", m)');\n\n var afterKey = goog.Dependency.registerCallback_(function() {\n goog.Dependency.unregisterCallback_(afterKey);\n controller.clearModuleState();\n controller.loaded();\n });\n create(undefined, 'goog.Dependency.callback_(\"' + afterKey + '\")');\n };\n\n\n /**\n * Superclass of any dependency that needs to be loaded into memory,\n * transformed, and then eval'd (goog.modules and transpiled files).\n *\n * @param {string} path Absolute path of this script.\n * @param {string} relativePath Path of this script relative to goog.basePath.\n * @param {!Array<string>} provides goog.provided or goog.module symbols\n * in this file.\n * @param {!Array<string>} requires goog symbols or relative paths to Closure\n * this depends on.\n * @param {!Object<string, string>} loadFlags\n * @struct @constructor @abstract\n * @extends {goog.Dependency}\n */\n goog.TransformedDependency = function(\n path, relativePath, provides, requires, loadFlags) {\n goog.TransformedDependency.base(\n this, 'constructor', path, relativePath, provides, requires, loadFlags);\n /** @private {?string} */\n this.contents_ = null;\n\n /**\n * Whether to lazily make the synchronous XHR (when goog.require'd) or make\n * the synchronous XHR when initially loading. On FireFox 61 there is a bug\n * where an ES6 module cannot make a synchronous XHR (rather, it can, but if\n * it does then no other ES6 modules will load after).\n *\n * tl;dr we lazy load due to bugs on older browsers and eager load due to\n * bugs on newer ones.\n *\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1477090\n *\n * @private @const {boolean}\n */\n this.lazyFetch_ = !goog.inHtmlDocument_() ||\n !('noModule' in goog.global.document.createElement('script'));\n };\n goog.inherits(goog.TransformedDependency, goog.Dependency);\n\n\n /**\n * @override\n * @param {!goog.LoadController} controller\n */\n goog.TransformedDependency.prototype.load = function(controller) {\n var dep = this;\n\n function fetch() {\n dep.contents_ = goog.loadFileSync_(dep.path);\n\n if (dep.contents_) {\n dep.contents_ = dep.transform(dep.contents_);\n if (dep.contents_) {\n dep.contents_ += '\\n//# sourceURL=' + dep.path;\n }\n }\n }\n\n if (goog.global.CLOSURE_IMPORT_SCRIPT) {\n fetch();\n if (this.contents_ &&\n goog.global.CLOSURE_IMPORT_SCRIPT('', this.contents_)) {\n this.contents_ = null;\n controller.loaded();\n } else {\n controller.pause();\n }\n return;\n }\n\n\n var isEs6 = this.loadFlags['module'] == goog.ModuleType.ES6;\n\n if (!this.lazyFetch_) {\n fetch();\n }\n\n function load() {\n if (dep.lazyFetch_) {\n fetch();\n }\n\n if (!dep.contents_) {\n // loadFileSync_ or transform are responsible. Assume they logged an\n // error.\n return;\n }\n\n if (isEs6) {\n controller.setModuleState(goog.ModuleType.ES6);\n }\n\n var namespace;\n\n try {\n var contents = dep.contents_;\n dep.contents_ = null;\n goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(contents));\n if (isEs6) {\n namespace = goog.moduleLoaderState_.moduleName;\n }\n } finally {\n if (isEs6) {\n controller.clearModuleState();\n }\n }\n\n if (isEs6) {\n // Due to circular dependencies this may not be available for require\n // right now.\n goog.global['$jscomp']['require']['ensure'](\n [dep.getPathName()], function() {\n controller.registerEs6ModuleExports(\n dep.path,\n goog.global['$jscomp']['require'](dep.getPathName()),\n namespace);\n });\n }\n\n controller.loaded();\n }\n\n // Do not fetch now; in FireFox 47 the synchronous XHR doesn't block all\n // events. If we fetched now and then document.write'd the contents the\n // document.write would be an eval and would execute too soon! Instead write\n // a script tag to fetch and eval synchronously at the correct time.\n function fetchInOwnScriptThenLoad() {\n /** @type {!HTMLDocument} */\n var doc = goog.global.document;\n\n var key = goog.Dependency.registerCallback_(function() {\n goog.Dependency.unregisterCallback_(key);\n load();\n });\n\n var nonce = goog.getScriptNonce_();\n var nonceAttr = nonce ? ' nonce=\"' + nonce + '\"' : '';\n var script = '<script' + nonceAttr + '>' +\n goog.protectScriptTag_('goog.Dependency.callback_(\"' + key + '\");') +\n '</' +\n 'script>';\n doc.write(\n goog.TRUSTED_TYPES_POLICY_ ?\n goog.TRUSTED_TYPES_POLICY_.createHTML(script) :\n script);\n }\n\n // If one thing is pending it is this.\n var anythingElsePending = controller.pending().length > 1;\n\n // Additionally if we are meant to defer scripts but the page is still\n // loading (e.g. an ES6 module is loading) then also defer. Or if we are\n // meant to defer and anything else is pending then defer (those may be\n // scripts that did not need transformation and are just script tags with\n // defer set to true, and we need to evaluate after that deferred script).\n var needsAsyncLoading = goog.Dependency.defer_ &&\n (anythingElsePending || goog.isDocumentLoading_());\n\n if (needsAsyncLoading) {\n // Note that we only defer when we have to rather than 100% of the time.\n // Always defering would work, but then in theory the order of\n // goog.require calls would then matter. We want to enforce that most of\n // the time the order of the require calls does not matter.\n controller.defer(function() {\n load();\n });\n return;\n }\n // TODO(johnplaisted): Externs are missing onreadystatechange for\n // HTMLDocument.\n /** @type {?} */\n var doc = goog.global.document;\n\n var isInternetExplorerOrEdge = goog.inHtmlDocument_() &&\n ('ActiveXObject' in goog.global || goog.isEdge_());\n\n // Don't delay in any version of IE or pre-Chromium Edge. There's a bug\n // around this that will cause out of order script execution. This means\n // that on older IE ES6 modules will load too early (while the document is\n // still loading + the dom is not available). The other option is to load\n // too late (when the document is complete and the onload even will never\n // fire). This seems to be the lesser of two evils as scripts already act\n // like the former.\n if (isEs6 && goog.inHtmlDocument_() && goog.isDocumentLoading_() &&\n !isInternetExplorerOrEdge) {\n goog.Dependency.defer_ = true;\n // Transpiled ES6 modules still need to load like regular ES6 modules,\n // aka only after the document is interactive.\n controller.pause();\n var oldCallback = doc.onreadystatechange;\n doc.onreadystatechange = function() {\n if (doc.readyState == 'interactive') {\n doc.onreadystatechange = oldCallback;\n load();\n controller.resume();\n }\n if (typeof oldCallback === 'function') {\n oldCallback.apply(undefined, arguments);\n }\n };\n } else {\n // Always eval on old IE.\n if (!goog.inHtmlDocument_() || !goog.isDocumentLoading_()) {\n load();\n } else {\n fetchInOwnScriptThenLoad();\n }\n }\n };\n\n\n /**\n * @param {string} contents\n * @return {string}\n * @abstract\n */\n goog.TransformedDependency.prototype.transform = function(contents) {};\n\n\n /**\n * An ES6 module dependency that was transpiled to a jscomp module outside\n * of the debug loader, e.g. server side.\n *\n * @param {string} path Absolute path of this script.\n * @param {string} relativePath Path of this script relative to goog.basePath.\n * @param {!Array<string>} provides goog.provided or goog.module symbols\n * in this file.\n * @param {!Array<string>} requires goog symbols or relative paths to Closure\n * this depends on.\n * @param {!Object<string, string>} loadFlags\n * @struct @constructor\n * @extends {goog.TransformedDependency}\n */\n goog.PreTranspiledEs6ModuleDependency = function(\n path, relativePath, provides, requires, loadFlags) {\n goog.PreTranspiledEs6ModuleDependency.base(\n this, 'constructor', path, relativePath, provides, requires, loadFlags);\n };\n goog.inherits(\n goog.PreTranspiledEs6ModuleDependency, goog.TransformedDependency);\n\n\n /**\n * @override\n * @param {string} contents\n * @return {string}\n */\n goog.PreTranspiledEs6ModuleDependency.prototype.transform = function(\n contents) {\n return contents;\n };\n\n\n /**\n * A goog.module, transpiled or not. Will always perform some minimal\n * transformation even when not transpiled to wrap in a goog.loadModule\n * statement.\n *\n * @param {string} path Absolute path of this script.\n * @param {string} relativePath Path of this script relative to goog.basePath.\n * @param {!Array<string>} provides goog.provided or goog.module symbols\n * in this file.\n * @param {!Array<string>} requires goog symbols or relative paths to Closure\n * this depends on.\n * @param {!Object<string, string>} loadFlags\n * @struct @constructor\n * @extends {goog.TransformedDependency}\n */\n goog.GoogModuleDependency = function(\n path, relativePath, provides, requires, loadFlags) {\n goog.GoogModuleDependency.base(\n this, 'constructor', path, relativePath, provides, requires, loadFlags);\n };\n goog.inherits(goog.GoogModuleDependency, goog.TransformedDependency);\n\n\n /**\n * @override\n * @param {string} contents\n * @return {string}\n */\n goog.GoogModuleDependency.prototype.transform = function(contents) {\n if (!goog.LOAD_MODULE_USING_EVAL || goog.global.JSON === undefined) {\n return '' +\n 'goog.loadModule(function(exports) {' +\n '\"use strict\";' + contents +\n '\\n' + // terminate any trailing single line comment.\n ';return exports' +\n '});' +\n '\\n//# sourceURL=' + this.path + '\\n';\n } else {\n return '' +\n 'goog.loadModule(' +\n goog.global.JSON.stringify(\n contents + '\\n//# sourceURL=' + this.path + '\\n') +\n ');';\n }\n };\n\n\n /**\n * @param {string} relPath\n * @param {!Array<string>|undefined} provides\n * @param {!Array<string>} requires\n * @param {boolean|!Object<string>=} opt_loadFlags\n * @see goog.addDependency\n */\n goog.DebugLoader_.prototype.addDependency = function(\n relPath, provides, requires, opt_loadFlags) {\n provides = provides || [];\n relPath = relPath.replace(/\\\\/g, '/');\n var path = goog.normalizePath_(goog.basePath + relPath);\n if (!opt_loadFlags || typeof opt_loadFlags === 'boolean') {\n opt_loadFlags = opt_loadFlags ? {'module': goog.ModuleType.GOOG} : {};\n }\n var dep = this.factory_.createDependency(\n path, relPath, provides, requires, opt_loadFlags);\n this.dependencies_[path] = dep;\n for (var i = 0; i < provides.length; i++) {\n this.idToPath_[provides[i]] = path;\n }\n this.idToPath_[relPath] = path;\n };\n\n\n /**\n * Creates goog.Dependency instances for the debug loader to load.\n *\n * Should be overridden to have the debug loader use custom subclasses of\n * goog.Dependency.\n *\n * @struct @constructor\n */\n goog.DependencyFactory = function() {};\n\n\n /**\n * @param {string} path Absolute path of the file.\n * @param {string} relativePath Path relative to closure\u2019s base.js.\n * @param {!Array<string>} provides Array of provided goog.provide/module ids.\n * @param {!Array<string>} requires Array of required goog.provide/module /\n * relative ES6 module paths.\n * @param {!Object<string, string>} loadFlags\n * @return {!goog.Dependency}\n */\n goog.DependencyFactory.prototype.createDependency = function(\n path, relativePath, provides, requires, loadFlags) {\n\n if (loadFlags['module'] == goog.ModuleType.GOOG) {\n return new goog.GoogModuleDependency(\n path, relativePath, provides, requires, loadFlags);\n } else {\n if (loadFlags['module'] == goog.ModuleType.ES6) {\n if (goog.ASSUME_ES_MODULES_TRANSPILED) {\n return new goog.PreTranspiledEs6ModuleDependency(\n path, relativePath, provides, requires, loadFlags);\n } else {\n return new goog.Es6ModuleDependency(\n path, relativePath, provides, requires, loadFlags);\n }\n } else {\n return new goog.Dependency(\n path, relativePath, provides, requires, loadFlags);\n }\n }\n };\n\n\n /** @private @const */\n goog.debugLoader_ = new goog.DebugLoader_();\n\n\n /**\n * Loads the Closure Dependency file.\n *\n * Exposed a public function so CLOSURE_NO_DEPS can be set to false, base\n * loaded, setDependencyFactory called, and then this called. i.e. allows\n * custom loading of the deps file.\n */\n goog.loadClosureDeps = function() {\n goog.debugLoader_.loadClosureDeps();\n };\n\n\n /**\n * Sets the dependency factory, which can be used to create custom\n * goog.Dependency implementations to control how dependencies are loaded.\n *\n * Note: if you wish to call this function and provide your own implemnetation\n * it is a wise idea to set CLOSURE_NO_DEPS to true, otherwise the dependency\n * file and all of its goog.addDependency calls will use the default factory.\n * You can call goog.loadClosureDeps to load the Closure dependency file\n * later, after your factory is injected.\n *\n * @param {!goog.DependencyFactory} factory\n */\n goog.setDependencyFactory = function(factory) {\n goog.debugLoader_.setDependencyFactory(factory);\n };\n\n\n /**\n * Trusted Types policy for the debug loader.\n * @private @const {?TrustedTypePolicy}\n */\n goog.TRUSTED_TYPES_POLICY_ = goog.TRUSTED_TYPES_POLICY_NAME ?\n goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME + '#base') :\n null;\n\n if (!goog.global.CLOSURE_NO_DEPS) {\n goog.debugLoader_.loadClosureDeps();\n }\n\n\n /**\n * Bootstraps the given namespaces and calls the callback once they are\n * available either via goog.require. This is a replacement for using\n * `goog.require` to bootstrap Closure JavaScript. Previously a `goog.require`\n * in an HTML file would guarantee that the require'd namespace was available\n * in the next immediate script tag. With ES6 modules this no longer a\n * guarantee.\n *\n * @param {!Array<string>} namespaces\n * @param {function(): ?} callback Function to call once all the namespaces\n * have loaded. Always called asynchronously.\n */\n goog.bootstrap = function(namespaces, callback) {\n goog.debugLoader_.bootstrap(namespaces, callback);\n };\n}\n\n\nif (!COMPILED) {\n var isChrome87 = false;\n // Cannot run check for Chrome <87 bug in case of strict CSP environments.\n // TODO(user): Remove once Chrome <87 bug is no longer a problem.\n try {\n isChrome87 = eval(goog.global.trustedTypes.emptyScript) !==\n goog.global.trustedTypes.emptyScript;\n } catch (err) {\n }\n\n /**\n * Trusted Types for running dev servers.\n *\n * @private @const\n */\n goog.CLOSURE_EVAL_PREFILTER_ =\n // Detect Chrome <87 bug with TT and eval.\n goog.global.trustedTypes && isChrome87 &&\n goog.createTrustedTypesPolicy('goog#base#devonly#eval') ||\n {createScript: goog.identity_};\n}\n","function atobPolyfill(input) {\n var chars =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var str = String(input).replace(/[=]+$/, \"\");\n if (str.length % 4 === 1) {\n console.error(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n (buffer = str.charAt(idx++));\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n bc++ % 4)\n && (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n ) {\n buffer = chars.indexOf(buffer);\n }\n return output;\n }\n function bufferFromBrowser(base64Data) {\n if (typeof AudioWorkletGlobalScope != \"undefined\") {\n return atobPolyfill(base64Data);\n } else {\n return window.atob(base64Data);\n }\n }\n\n /** @noinline */\n function __toArrayBuffer(base64Data) {\n var binary = bufferFromBrowser(base64Data);\n var bytes = new Uint8Array(binary.length);\n for (var i = 0; i < binary.length; ++i) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes.buffer;\n }\n\n export default () => __toArrayBuffer(\"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\");\n ","/**\n * Copyright 2019 Google Inc. All Rights Reserved.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Endpoint,\n EventSource,\n Message,\n MessageType,\n PostMessageWithOrigin,\n WireValue,\n WireValueType,\n} from \"./protocol\";\nexport { Endpoint };\n\nexport const proxyMarker = Symbol(\"Comlink.proxy\");\nexport const createEndpoint = Symbol(\"Comlink.endpoint\");\nexport const releaseProxy = Symbol(\"Comlink.releaseProxy\");\n\nconst throwMarker = Symbol(\"Comlink.thrown\");\n\n/**\n * Interface of values that were marked to be proxied with `comlink.proxy()`.\n * Can also be implemented by classes.\n */\nexport interface ProxyMarked {\n [proxyMarker]: true;\n}\n\n/**\n * Takes a type and wraps it in a Promise, if it not already is one.\n * This is to avoid `Promise<Promise<T>>`.\n *\n * This is the inverse of `Unpromisify<T>`.\n */\ntype Promisify<T> = T extends Promise<unknown> ? T : Promise<T>;\n/**\n * Takes a type that may be Promise and unwraps the Promise type.\n * If `P` is not a Promise, it returns `P`.\n *\n * This is the inverse of `Promisify<T>`.\n */\ntype Unpromisify<P> = P extends Promise<infer T> ? T : P;\n\n/**\n * Takes the raw type of a remote property and returns the type that is visible to the local thread on the proxy.\n *\n * Note: This needs to be its own type alias, otherwise it will not distribute over unions.\n * See https://www.typescriptlang.org/docs/handbook/advanced-types.html#distributive-conditional-types\n */\ntype RemoteProperty<T> =\n // If the value is a method, comlink will proxy it automatically.\n // Objects are only proxied if they are marked to be proxied.\n // Otherwise, the property is converted to a Promise that resolves the cloned value.\n T extends Function | ProxyMarked ? Remote<T> : Promisify<T>;\n\n/**\n * Takes the raw type of a property as a remote thread would see it through a proxy (e.g. when passed in as a function\n * argument) and returns the type that the local thread has to supply.\n *\n * This is the inverse of `RemoteProperty<T>`.\n *\n * Note: This needs to be its own type alias, otherwise it will not distribute over unions. See\n * https://www.typescriptlang.org/docs/handbook/advanced-types.html#distributive-conditional-types\n */\ntype LocalProperty<T> = T extends Function | ProxyMarked\n ? Local<T>\n : Unpromisify<T>;\n\n/**\n * Proxies `T` if it is a `ProxyMarked`, clones it otherwise (as handled by structured cloning and transfer handlers).\n */\nexport type ProxyOrClone<T> = T extends ProxyMarked ? Remote<T> : T;\n/**\n * Inverse of `ProxyOrClone<T>`.\n */\nexport type UnproxyOrClone<T> = T extends RemoteObject<ProxyMarked>\n ? Local<T>\n : T;\n\n/**\n * Takes the raw type of a remote object in the other thread and returns the type as it is visible to the local thread\n * when proxied with `Comlink.proxy()`.\n *\n * This does not handle call signatures, which is handled by the more general `Remote<T>` type.\n *\n * @template T The raw type of a remote object as seen in the other thread.\n */\nexport type RemoteObject<T> = { [P in keyof T]: RemoteProperty<T[P]> };\n/**\n * Takes the type of an object as a remote thread would see it through a proxy (e.g. when passed in as a function\n * argument) and returns the type that the local thread has to supply.\n *\n * This does not handle call signatures, which is handled by the more general `Local<T>` type.\n *\n * This is the inverse of `RemoteObject<T>`.\n *\n * @template T The type of a proxied object.\n */\nexport type LocalObject<T> = { [P in keyof T]: LocalProperty<T[P]> };\n\n/**\n * Additional special comlink methods available on each proxy returned by `Comlink.wrap()`.\n */\nexport interface ProxyMethods {\n [createEndpoint]: () => Promise<MessagePort>;\n [releaseProxy]: () => void;\n}\n\n/**\n * Takes the raw type of a remote object, function or class in the other thread and returns the type as it is visible to\n * the local thread from the proxy return value of `Comlink.wrap()` or `Comlink.proxy()`.\n */\nexport type Remote<T> =\n // Handle properties\n RemoteObject<T> &\n // Handle call signature (if present)\n (T extends (...args: infer TArguments) => infer TReturn\n ? (\n ...args: { [I in keyof TArguments]: UnproxyOrClone<TArguments[I]> }\n ) => Promisify<ProxyOrClone<Unpromisify<TReturn>>>\n : unknown) &\n // Handle construct signature (if present)\n // The return of construct signatures is always proxied (whether marked or not)\n (T extends { new (...args: infer TArguments): infer TInstance }\n ? {\n new (\n ...args: {\n [I in keyof TArguments]: UnproxyOrClone<TArguments[I]>;\n }\n ): Promisify<Remote<TInstance>>;\n }\n : unknown) &\n // Include additional special comlink methods available on the proxy.\n ProxyMethods;\n\n/**\n * Expresses that a type can be either a sync or async.\n */\ntype MaybePromise<T> = Promise<T> | T;\n\n/**\n * Takes the raw type of a remote object, function or class as a remote thread would see it through a proxy (e.g. when\n * passed in as a function argument) and returns the type the local thread has to supply.\n *\n * This is the inverse of `Remote<T>`. It takes a `Remote<T>` and returns its original input `T`.\n */\nexport type Local<T> =\n // Omit the special proxy methods (they don't need to be supplied, comlink adds them)\n Omit<LocalObject<T>, keyof ProxyMethods> &\n // Handle call signatures (if present)\n (T extends (...args: infer TArguments) => infer TReturn\n ? (\n ...args: { [I in keyof TArguments]: ProxyOrClone<TArguments[I]> }\n ) => // The raw function could either be sync or async, but is always proxied automatically\n MaybePromise<UnproxyOrClone<Unpromisify<TReturn>>>\n : unknown) &\n // Handle construct signature (if present)\n // The return of construct signatures is always proxied (whether marked or not)\n (T extends { new (...args: infer TArguments): infer TInstance }\n ? {\n new (\n ...args: {\n [I in keyof TArguments]: ProxyOrClone<TArguments[I]>;\n }\n ): // The raw constructor could either be sync or async, but is always proxied automatically\n MaybePromise<Local<Unpromisify<TInstance>>>;\n }\n : unknown);\n\nconst isObject = (val: unknown): val is object =>\n (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n\n/**\n * Customizes the serialization of certain values as determined by `canHandle()`.\n *\n * @template T The input type being handled by this transfer handler.\n * @template S The serialized type sent over the wire.\n */\nexport interface TransferHandler<T, S> {\n /**\n * Gets called for every value to determine whether this transfer handler\n * should serialize the value, which includes checking that it is of the right\n * type (but can perform checks beyond that as well).\n */\n canHandle(value: unknown): value is T;\n\n /**\n * Gets called with the value if `canHandle()` returned `true` to produce a\n * value that can be sent in a message, consisting of structured-cloneable\n * values and/or transferrable objects.\n */\n serialize(value: T): [S, Transferable[]];\n\n /**\n * Gets called to deserialize an incoming value that was serialized in the\n * other thread with this transfer handler (known through the name it was\n * registered under).\n */\n deserialize(value: S): T;\n}\n\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler: TransferHandler<object, MessagePort> = {\n canHandle: (val): val is ProxyMarked =>\n isObject(val) && (val as ProxyMarked)[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n\ninterface ThrownValue {\n [throwMarker]: unknown; // just needs to be present\n value: unknown;\n}\ntype SerializedThrownValue =\n | { isError: true; value: Error }\n | { isError: false; value: unknown };\n\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler: TransferHandler<\n ThrownValue,\n SerializedThrownValue\n> = {\n canHandle: (value): value is ThrownValue =>\n isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized: SerializedThrownValue;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n } else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(\n new Error(serialized.value.message),\n serialized.value\n );\n }\n throw serialized.value;\n },\n};\n\n/**\n * Allows customizing the serialization of certain values.\n */\nexport const transferHandlers = new Map<\n string,\n TransferHandler<unknown, unknown>\n>([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\n\nexport function expose(obj: any, ep: Endpoint = self as any) {\n ep.addEventListener(\"message\", function callback(ev: MessageEvent) {\n if (!ev || !ev.data) {\n return;\n }\n const { id, type, path } = {\n path: [] as string[],\n ...(ev.data as Message),\n };\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case MessageType.GET:\n {\n returnValue = rawValue;\n }\n break;\n case MessageType.SET:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case MessageType.APPLY:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case MessageType.CONSTRUCT:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case MessageType.ENDPOINT:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case MessageType.RELEASE:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n } catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage({ ...wireValue, id }, transferables);\n if (type === MessageType.RELEASE) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback as any);\n closeEndPoint(ep);\n }\n });\n } as any);\n if (ep.start) {\n ep.start();\n }\n}\n\nfunction isMessagePort(endpoint: Endpoint): endpoint is MessagePort {\n return endpoint.constructor.name === \"MessagePort\";\n}\n\nfunction closeEndPoint(endpoint: Endpoint) {\n if (isMessagePort(endpoint)) endpoint.close();\n}\n\nexport function wrap<T>(ep: Endpoint, target?: any): Remote<T> {\n return createProxy<T>(ep, [], target) as any;\n}\n\nfunction throwIfProxyReleased(isReleased: boolean) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\n\nfunction createProxy<T>(\n ep: Endpoint,\n path: (string | number | symbol)[] = [],\n target: object = function () {}\n): Remote<T> {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n return requestResponseMessage(ep, {\n type: MessageType.RELEASE,\n path: path.map((p) => p.toString()),\n }).then(() => {\n closeEndPoint(ep);\n isProxyReleased = true;\n });\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, {\n type: MessageType.GET,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously \u00af\\_(\u30c4)_/\u00af\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(\n ep,\n {\n type: MessageType.SET,\n path: [...path, prop].map((p) => p.toString()),\n value,\n },\n transferables\n ).then(fromWireValue) as any;\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if ((last as any) === createEndpoint) {\n return requestResponseMessage(ep, {\n type: MessageType.ENDPOINT,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn\u2019t happen.\n if (last === \"bind\") {\n return createProxy(ep, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(\n ep,\n {\n type: MessageType.APPLY,\n path: path.map((p) => p.toString()),\n argumentList,\n },\n transferables\n ).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(\n ep,\n {\n type: MessageType.CONSTRUCT,\n path: path.map((p) => p.toString()),\n argumentList,\n },\n transferables\n ).then(fromWireValue);\n },\n });\n return proxy as any;\n}\n\nfunction myFlat<T>(arr: (T | T[])[]): T[] {\n return Array.prototype.concat.apply([], arr);\n}\n\nfunction processArguments(argumentList: any[]): [WireValue[], Transferable[]] {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\n\nconst transferCache = new WeakMap<any, Transferable[]>();\nexport function transfer<T>(obj: T, transfers: Transferable[]): T {\n transferCache.set(obj, transfers);\n return obj;\n}\n\nexport function proxy<T>(obj: T): T & ProxyMarked {\n return Object.assign(obj, { [proxyMarker]: true }) as any;\n}\n\nexport function windowEndpoint(\n w: PostMessageWithOrigin,\n context: EventSource = self,\n targetOrigin = \"*\"\n): Endpoint {\n return {\n postMessage: (msg: any, transferables: Transferable[]) =>\n w.postMessage(msg, targetOrigin, transferables),\n addEventListener: context.addEventListener.bind(context),\n removeEventListener: context.removeEventListener.bind(context),\n };\n}\n\nfunction toWireValue(value: any): [WireValue, Transferable[]] {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: WireValueType.HANDLER,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: WireValueType.RAW,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\n\nfunction fromWireValue(value: WireValue): any {\n switch (value.type) {\n case WireValueType.HANDLER:\n return transferHandlers.get(value.name)!.deserialize(value.value);\n case WireValueType.RAW:\n return value.value;\n }\n}\n\nfunction requestResponseMessage(\n ep: Endpoint,\n msg: Message,\n transfers?: Transferable[]\n): Promise<WireValue> {\n return new Promise((resolve) => {\n const id = generateUUID();\n ep.addEventListener(\"message\", function l(ev: MessageEvent) {\n if (!ev.data || !ev.data.id || ev.data.id !== id) {\n return;\n }\n ep.removeEventListener(\"message\", l as any);\n resolve(ev.data);\n } as any);\n if (ep.start) {\n ep.start();\n }\n ep.postMessage({ id, ...msg }, transfers);\n });\n}\n\nfunction generateUUID(): string {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n","\"use strict\";exports.__esModule=!0,exports.LoggerFactory=exports.logLevels=void 0,exports.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};var LoggerFactory=function(){function LoggerFactory(logLevel,mockConsole){if(void 0===logLevel&&(logLevel=\"log_with_warnings\"),void 0===mockConsole&&(mockConsole=null),this.logLevel=logLevel,!exports.logLevels[logLevel])throw Error(\"Invalid log level \"+logLevel+\" allowed: \"+JSON.stringify(exports.logLevels));this.mockConsole=mockConsole||console}return LoggerFactory.prototype.dummy=function(){},LoggerFactory.prototype.setLogWarnings=function(logWarnings){this.logLevel=logWarnings},LoggerFactory.prototype.getLogWarnings=function(){return this.logLevel},LoggerFactory.prototype.getSingleLoggerColor=function(name,color,fn){return this.getSingleLoggerStyle(name,this.getColorStyle(color),fn)},LoggerFactory.prototype.getSingleLogger=function(name,fn){var color=this.getRandomColor(name);return this.getSingleLoggerStyle(name,this.getColorStyle(color),fn)},LoggerFactory.prototype.getSingleLoggerStyle=function(name,style,fn,minLevel){var _this=this;return void 0===minLevel&&(minLevel=\"log_with_warnings\"),function(){for(var args1=[],_i=0;_i<arguments.length;_i++)args1[_i]=arguments[_i];if(exports.logLevels[_this.logLevel]>exports.logLevels[minLevel])return _this.dummy;for(var args=Array.prototype.slice.call(args1),parts=args.shift().split(\"{}\"),params=[_this.mockConsole,\"%c\"+name,style],i=0;i<parts.length;i++)params.push(parts[i]),void 0!==args[i]&&params.push(args[i]);if(parts.length-1!==args.length)if(\"log_with_warnings\"===_this.logLevel)_this.mockConsole.error(\"MissMatch amount of arguments\");else if(\"log_raise_error\"===_this.logLevel)throw new Error(\"MissMatch amount of arguments\");return Function.prototype.bind.apply(fn,params)}},LoggerFactory.prototype.getLoggerColor=function(name,color){return this.getLoggerStyle(name,this.getColorStyle(color))},LoggerFactory.prototype.getColorStyle=function(color){return\"color: white; background-color: \"+color+\"; padding: 2px 6px; border-radius: 2px; font-size: 10px\"},LoggerFactory.getHash=function(str,seed){void 0===seed&&(seed=0);for(var h1=3735928559^seed,h2=1103547991^seed,i=0,ch=void 0;i<str.length;i++)ch=str.charCodeAt(i),h1=Math.imul(h1^ch,2654435761),h2=Math.imul(h2^ch,1597334677);return h1=Math.imul(h1^h1>>>16,2246822507)^Math.imul(h2^h2>>>13,3266489909),4294967296*(2097151&(h2=Math.imul(h2^h2>>>16,2246822507)^Math.imul(h1^h1>>>13,3266489909)))+(h1>>>0)},LoggerFactory.prototype.getRandomColor=function(str){void 0===str&&(str=\"\");for(var hash=LoggerFactory.getHash(str),color=\"#\",i=0;i<3;i++)color+=(\"00\"+(8+(hash>>7*i&127)).toString(16)).substr(-2);return color},LoggerFactory.prototype.getLogger=function(name){return this.getLoggerColor(name,this.getRandomColor(name))},LoggerFactory.prototype.getLoggerStyle=function(name,style){return{trace:this.getSingleLoggerStyle(name,style,this.mockConsole.trace,\"trace\"),debug:this.getSingleLoggerStyle(name,style,this.mockConsole.debug,\"debug\"),log:this.getSingleLoggerStyle(name,style,this.mockConsole.log,\"info\"),warn:this.getSingleLoggerStyle(name,style,this.mockConsole.warn,\"warn\"),error:this.getSingleLoggerStyle(name,style,this.mockConsole.error,\"error\")}},LoggerFactory}();exports.LoggerFactory=LoggerFactory;","import LoggerFactoryNS from \"lines-logger/lib/index.js\";\n\nlet logWorkletMain,\n logWorkletWorker,\n logSABMain,\n logSABWorker,\n logVANMain,\n logVANWorker,\n logOldSpnMain,\n logOldSpnWorker,\n logIndex,\n logSPNMainSingle,\n logSinglethreadWorkletMain,\n logSinglethreadWorkletWorker,\n logCommonUtils,\n logWasmModule,\n logMidiRequest;\n\n/** @define {boolean} */\nconst isProd = goog.define(\"PRODUCTION\", false);\n\nif (isProd) {\n /**\n * @suppress {checkTypes}\n */\n logWorkletMain = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logWorkletWorker = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logSABMain = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logSABWorker = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logVANMain = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logVANWorker = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logOldSpnMain = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logOldSpnWorker = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logIndex = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logSPNMainSingle = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logSinglethreadWorkletMain = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logSinglethreadWorkletWorker = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logCommonUtils = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logWasmModule = (ignore1) => (ignore2) => {};\n /**\n * @suppress {checkTypes}\n */\n logMidiRequest = (ignore1) => (ignore2) => {};\n} else {\n // catches chromium and chrome\n\n const loggerFactory = new LoggerFactoryNS.LoggerFactory();\n\n const indexLogger = loggerFactory.getLoggerColor(\"index.js\", \"#1E88E5\");\n const workletMainLogger = loggerFactory.getLoggerColor(\"WorkletMain\", \"#6D4C41\");\n const workletWorkerLogger = loggerFactory.getLoggerColor(\"WorkletWorker\", \"#D7CCC8\");\n const sabMainLogger = loggerFactory.getLoggerColor(\"Sab_Main\", \"#000000\");\n const sabWorkerLogger = loggerFactory.getLoggerColor(\"Sab_Worker\", \"#222222\");\n const vanMainLogger = loggerFactory.getLoggerColor(\"Van_Main\", \"#F4511E\");\n const vanWorkerLogger = loggerFactory.getLoggerColor(\"Van_Worker\", \"#FFAB91\");\n const oldSpnMainLogger = loggerFactory.getLoggerColor(\"OldSpn_Main\", \"#8E24AA\");\n const oldSpnWorkerLogger = loggerFactory.getLoggerColor(\"OldSpn_Worker\", \"#E1BEE7\");\n const singleWorkletMainLogger = loggerFactory.getLoggerColor(\n \"WorkletSinglethread_Main\",\n \"#1E88E5\",\n );\n const singleWorkletWorkerLogger = loggerFactory.getLoggerColor(\n \"WorkletSinglethread_Worker\",\n \"#90CAF9\",\n );\n const commonUtilsLogger = loggerFactory.getLoggerColor(\"common.utils.js\", \"#FFD600\");\n const wasmModuleLogger = loggerFactory.getLoggerColor(\"module.js\", \"#FFF59D\");\n const midiRequestLogger = loggerFactory.getLoggerColor(\"utils/request-midi.js\", \"#FFD600\");\n\n logWorkletMain = workletMainLogger.log;\n logWorkletWorker = workletWorkerLogger.log;\n logSABMain = sabMainLogger.log;\n logSABWorker = sabWorkerLogger.log;\n logVANMain = vanMainLogger.log;\n logVANWorker = vanWorkerLogger.log;\n logOldSpnMain = oldSpnMainLogger.log;\n logOldSpnWorker = oldSpnWorkerLogger.log;\n logIndex = indexLogger.log;\n logSPNMainSingle =\n (...argz) =>\n () =>\n console.log(...argz); // TODO\n logSinglethreadWorkletMain = singleWorkletMainLogger.log;\n logSinglethreadWorkletWorker = singleWorkletWorkerLogger.log;\n logCommonUtils = commonUtilsLogger.log;\n logWasmModule = wasmModuleLogger.log;\n logMidiRequest = midiRequestLogger.log;\n}\n\n/**\n * @suppress {checkTypes}\n */\nexport default (ignore1) => (ignore2) => {};\n\nexport {\n logWorkletMain,\n logWorkletWorker,\n logSABMain,\n logSABWorker,\n logVANMain,\n logVANWorker,\n logOldSpnMain,\n logOldSpnWorker,\n logIndex,\n logSPNMainSingle,\n logSinglethreadWorkletMain,\n logSinglethreadWorkletWorker,\n logCommonUtils,\n logWasmModule,\n logMidiRequest,\n};\n","/*\n csound instantiation module from <csound.h>\n https://csound.com/docs/api/modules.html\n*/\n\n/**\n * creates Csound instance\n * (inferred in @csound/wasm/browser)\n */\nexport const csoundCreate = (wasm) => () => wasm.exports.csoundCreateWasi();\n\ncsoundCreate.toString = () => \"create = async () => undefined;\";\n\n/**\n * Destroys an instance of Csound and frees memory\n * @async\n * @function\n * @name destroy\n * @memberof CsoundObj\n * @return {Promise.<undefined>}\n */\nexport const csoundDestroy = (wasm) => (csound) => wasm.exports.csoundDestroy(csound);\n\ncsoundDestroy.toString = () => \"destroy = async () => undefined;\";\n\n/**\n * Returns the API version as int\n * @async\n * @function\n * @name getAPIVersion\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetAPIVersion = (wasm) => () => wasm.exports.csoundGetAPIVersion();\n\ncsoundGetAPIVersion.toString = () => \"getAPIVersion = async () => Number;\";\n\n/**\n * Returns the Csound version as int\n * @async\n * @function\n * @name getVersion\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetVersion = (wasm) => () => wasm.exports.csoundGetVersion();\n\ncsoundGetVersion.toString = () => \"getVersion = async () => Number;\";\n\n/**\n * Initialise Csound with specific flags.\n * This function is called internally by csoundCreate(),\n * so there is generally no need to use it explicitly\n * unless you need to avoid default initilization that\n * sets signal handlers and atexit() callbacks.\n * @async\n * @function\n * @name initialize\n * @memberof CsoundObj\n * @return {Promise.<number>} - Return value is zero on success,\n * positive if initialisation was done already, and negative on error.\n */\nexport const csoundInitialize = (wasm) => (_, flags) => wasm.exports.csoundInitialize(flags);\n\ncsoundInitialize.toString = () => \"initialize = async () => Number;\";\n","/** @define {boolean} */\nconst WITH_TEXT_ENCODER_POLYFILL = goog.define(\"WITH_TEXT_ENCODER_POLYFILL\", false);\n\n/** @constructor */\nfunction TextEncoderPoly() {\n this.encoding = \"utf8\";\n return this;\n}\n\nTextEncoderPoly.prototype.encode = function (string_) {\n if (typeof string_ !== \"string\") {\n throw new TypeError(\"passed argument must be of type string \" + string_ + \" \" + typeof string_);\n }\n const binstr = unescape(encodeURIComponent(string_));\n const array = new Uint8Array(binstr.length);\n [...binstr].forEach(function (char, index) {\n array[index] = char.codePointAt(0);\n });\n return array;\n};\n\n/** @constructor */\nfunction TextDecoderPoly() {\n this.encoding = \"utf8\";\n this.ignoreBOM = false;\n\n this.trimNull = (a) => {\n const c = a.indexOf(\"\\0\");\n if (c > -1) {\n return a.slice(0, Math.max(0, c));\n }\n return a;\n };\n\n this.decode = function (view, options) {\n if (view === undefined) {\n return \"\";\n }\n\n const stream = options !== undefined && \"stream\" in options ? options.stream : false;\n if (typeof stream !== \"boolean\") {\n throw new TypeError(\"stream option must be boolean\");\n }\n\n if (ArrayBuffer.isView(view)) {\n const array = new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n const charArray = Array.from({ length: array.length });\n array.forEach(function (charcode, index) {\n charArray[index] = String.fromCodePoint(charcode);\n });\n return this.trimNull(charArray.join(\"\"));\n } else {\n throw new TypeError(\"passed argument must be an array buffer view\");\n }\n };\n}\n\nexport const decoder = WITH_TEXT_ENCODER_POLYFILL ? new TextDecoderPoly() : new TextDecoder(\"utf8\");\n\nexport const encoder = WITH_TEXT_ENCODER_POLYFILL ? new TextEncoderPoly() : new TextEncoder(\"utf8\");\n\nexport const uint2String = (uint) => decoder.decode(uint);\n","export const trimNull = (a) => {\n const c = a.indexOf(\"\\0\");\n if (c > -1) {\n // eslint-disable-next-line unicorn/prefer-string-slice\n return a.substr(0, c);\n }\n return a;\n};\n","import { encoder, uint2String } from \"./text-encoders.js\";\nimport { trimNull } from \"./trim-null.js\";\n\n/**\n * @param {WasmInst} wasm\n * @param {number} ptr\n */\nexport const freeStringPtr = (wasm, ptr) => {\n wasm.exports.freeStringMem(ptr);\n};\n\nexport const ptr2string = (wasm, stringPtr) => {\n const { buffer } = wasm.wasi.memory;\n const intArray = new Uint8Array(buffer, stringPtr);\n const result = uint2String(intArray);\n return trimNull(result);\n};\n\nexport const string2ptr = (wasm, string) => {\n if (typeof string !== \"string\") {\n console.error(\"Expected string but got\", typeof string);\n return;\n }\n\n const stringBuf = encoder.encode(string);\n const offset = wasm.exports.allocStringMem(stringBuf.length);\n const { buffer } = wasm.wasi.memory;\n const outBuf = new Uint8Array(buffer, offset, stringBuf.length + 1);\n outBuf.set(stringBuf);\n return offset;\n};\n","import { freeStringPtr, string2ptr } from \"../utils/string-pointers.js\";\n\n/*\n csound performance module from <csound.h>\n https://csound.com/docs/api/modules.html\n*/\n\n/**\n * Parses a csound orchestra string\n * @async\n * @function\n * @name parseOrc\n * @memberof CsoundObj\n * @param {string} orc\n * @return {Promise.<object>}\n */\nexport const csoundParseOrc = (wasm) => (csound, orc) => wasm.exports.csoundParseOrc(csound, orc);\n\ncsoundParseOrc.toString = () => \"parseOrc = async (orchestra) => Object;\";\n\n/**\n * Compiles AST tree\n * @async\n * @function\n * @name compileTree\n * @memberof CsoundObj\n * @param {object} tree\n * @return {Promise.<number>}\n */\nexport const csoundCompileTree = (wasm) => (csound, tree) =>\n wasm.exports.csoundCompileTree(csound, tree);\n\ncsoundCompileTree.toString = () => \"compileTree = async (tree) => Number;\";\n\n// TODO\n// csoundDeleteTree (CSOUND *csound, TREE *tree)\n\n/**\n * Compiles a csound orchestra string\n * @async\n * @function\n * @name compileOrc\n * @memberof CsoundObj\n * @param {string} orc\n * @return {Promise.<number>}\n */\nexport const csoundCompileOrc = (wasm) => (csound, orc) => {\n const stringPtr = string2ptr(wasm, orc);\n const result = wasm.exports.csoundCompileOrc(csound, stringPtr);\n freeStringPtr(wasm, stringPtr);\n return result;\n};\n\ncsoundCompileOrc.toString = () => \"compileOrc = async (orchestra) => Number;\";\n\n/**\n * Compiles a csound orchestra string\n * @async\n * @function\n * @name evalCode\n * @memberof CsoundObj\n * @param {string} orc\n * @return {Promise.<number>}\n */\nexport const csoundEvalCode = (wasm) => (csound, orc) => {\n const stringPtr = string2ptr(wasm, orc);\n const result = wasm.exports.csoundEvalCode(csound, stringPtr);\n freeStringPtr(wasm, stringPtr);\n return result;\n};\n\ncsoundEvalCode.toString = () => \"csoundEvalCode = async (orchestra) => Number;\";\n\n// TODO\n// csoundInitializeCscore (CSOUND *, FILE *insco, FILE *outsco)\n\n// TODO\n// csoundCompileArgs (CSOUND *, int argc, const char **argv)\n\n/**\n * Prepares Csound for performance\n * @async\n * @function\n * @name start\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundStart = (wasm) => (csound) => wasm.exports.csoundStartWasi(csound);\n\ncsoundStart.toString = () => \"start = async () => Number;\";\n\n// TODO\n// csoundCompile (CSOUND *, int argc, const char **argv)\n\n/**\n * Compiles a Csound input file but does not perform it.\n * @async\n * @function\n * @name compileCsd\n * @memberof CsoundObj\n * @param {string} path\n * @return {Promise.<number>}\n */\nexport const csoundCompileCsd = (wasm) => (csound, path) => {\n const stringPtr = string2ptr(wasm, path);\n\n let result;\n try {\n result = wasm.exports.csoundCompileCsd(csound, stringPtr);\n } catch (error) {\n console.error(error);\n }\n freeStringPtr(wasm, stringPtr);\n return result;\n};\n\ncsoundCompileCsd.toString = () => \"compileCsd = async (path) => Number;\";\n\n/**\n * Compiles a CSD string but does not perform it.\n * @async\n * @function\n * @name compileCsdText\n * @memberof CsoundObj\n * @param {string} orc\n * @return {Promise.<number>}\n */\nexport const csoundCompileCsdText = (wasm) => (csound, orc) => {\n const stringPtr = string2ptr(wasm, orc);\n const result = wasm.exports.csoundCompileCsdText(csound, stringPtr);\n freeStringPtr(wasm, stringPtr);\n return result;\n};\n\ncsoundCompileCsdText.toString = () => \"compileCsdText = async (csoundDocument) => Number;\";\n\n/**\n * Performs(plays) audio until end is reached\n * @async\n * @function\n * @name perform\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundPerform = (wasm) => (csound) => wasm.exports.csoundPerform(csound);\n\ncsoundPerform.toString = () => \"perform = async () => Number;\";\n\n/**\n * Performs(plays) 1 ksmps worth of sample(s)\n * @async\n * @function\n * @name performKsmps\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundPerformKsmps = (wasm) => (csound) => wasm.exports.csoundPerformKsmpsWasi(csound);\n\ncsoundPerformKsmps.toString = () => \"performKsmps = async (csound) => Number;\";\n\n/**\n * Performs(plays) 1 buffer worth of audio\n * @async\n * @function\n * @name performBuffer\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundPerformBuffer = (wasm) => (csound) => wasm.exports.csoundPerformBuffer(csound);\n\ncsoundPerformBuffer.toString = () => \"performBuffer = async (csound) => Number;\";\n\n/**\n * Stops a csoundPerform\n * @async\n * @function\n * @name stop\n * @memberof CsoundObj\n * @return {Promise.<undefined>}\n */\nexport const csoundStop = (wasm) => (csound) => wasm.exports.csoundStop(csound);\n\ncsoundStop.toString = () => \"stop = async () => undefined;\";\n\n/**\n * Prints information about the end of a performance,\n * and closes audio and MIDI devices.\n * @async\n * @function\n * @name cleanup\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundCleanup = (wasm) => (csound) => wasm.exports.csoundCleanup(csound);\n\ncsoundCleanup.toString = () => \"cleanup = async () => Number;\";\n\n/**\n * Prints information about the end of a performance,\n * and closes audio and MIDI devices.\n * @async\n * @function\n * @name reset\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundReset = (wasm) => (csound) => wasm.exports.csoundResetWasi(csound);\n\ncsoundReset.toString = () => \"reset = async () => Number;\";\n","export const sizeOfPrimitive = {\n int: 4,\n MYFLT: 4,\n char: 1,\n};\n\nexport const sizeofStruct = (jsStruct) => {\n const result = jsStruct.reduce((total, [_, primitive, ...rest]) => {\n return (total +=\n primitive === \"char\" ? sizeOfPrimitive[primitive] * rest[0] : sizeOfPrimitive[primitive]);\n }, 0);\n return result;\n};\n","import { sizeOfPrimitive } from \"./native-sizes.js\";\nimport { uint2String } from \"./text-encoders.js\";\nimport { trimNull } from \"./trim-null.js\";\n\nexport const structBufferToObject = (jsStruct, buffer) => {\n const [result] = jsStruct.reduce(\n ([parameters, offset], [parameterName, primitive, ...rest]) => {\n const currentSize =\n primitive === \"char\" ? sizeOfPrimitive[primitive] * rest[0] : sizeOfPrimitive[primitive];\n const currentValue =\n primitive === \"char\"\n ? trimNull(uint2String(buffer.subarray(offset, currentSize))) || \"\"\n : buffer[offset];\n parameters[parameterName] = currentValue;\n return [parameters, offset + currentSize];\n },\n [{}, 0],\n );\n return result;\n};\n","/**\n * @typedef CSOUND_PARAMS\n * @property {number} debug_mode\n * @property {number} buffer_frames\n * @property {number} hardware_buffer_frames\n * @property {number} displays\n * @property {number} ascii_graphs\n * @property {number} postscript_graphs\n * @property {number} message_level\n * @property {number} tempo\n * @property {number} ring_bell\n * @property {number} use_cscore\n * @property {number} terminate_on_midi\n * @property {number} heartbeat\n * @property {number} defer_gen01_load\n * @property {number} midi_key\n * @property {number} midi_key_cps\n * @property {number} midi_key_oct\n * @property {number} midi_key_pch\n * @property {number} midi_velocity\n */\nexport const CSOUND_PARAMS = [\n /* debug mode, 0 or 1 */\n [\"debug_mode\", \"int\"],\n /* number of frames in in/out buffers */\n [\"buffer_frames\", \"int\"],\n /* number of frames in in/out hardware buffers */\n [\"hardware_buffer_frames\", \"int\"],\n /* graph displays, 0 or 1 */\n [\"displays\", \"int\"],\n /* use ASCII graphs, 0 or 1 */\n [\"ascii_graphs\", \"int\"],\n /* use postscript graphs, 0 or 1 */\n [\"postscript_graphs\", \"int\"],\n /* message printout control */\n [\"message_level\", \"int\"],\n /* tempo (sets Beatmode) */\n [\"tempo\", \"int\"],\n /* bell, 0 or 1 */\n [\"ring_bell\", \"int\"],\n /* use cscore for processing */\n [\"use_cscore\", \"int\"],\n /* terminate performance at the end */\n [\"terminate_on_midi\", \"int\"],\n /* print heart beat, 0 or 1 */\n [\"heartbeat\", \"int\"],\n /* defer GEN01 load, 0 or 1 */\n [\"defer_gen01_load\", \"int\"],\n /* pfield to map midi key no */\n [\"midi_key\", \"int\"],\n /* pfield to map midi key no as cps */\n [\"midi_key_cps\", \"int\"],\n /* pfield to map midi key no as oct */\n [\"midi_key_oct\", \"int\"],\n /* pfield to map midi key no as pch */\n [\"midi_key_pch\", \"int\"],\n /* pfield to map midi velocity */\n [\"midi_velocity\", \"int\"],\n /* pfield to map midi velocity as amplitude */\n [\"midi_velocity_amp\", \"int\"],\n /* disable relative paths from files, 0 or 1 */\n [\"no_default_paths\", \"int\"],\n /* number of threads for multicore performance */\n [\"number_of_threads\", \"int\"],\n /* do not compile, only check syntax */\n [\"syntax_check_only\", \"int\"],\n /* csd line error reporting */\n [\"csd_line_counts\", \"int\"],\n /* deprecated, kept for backwards comp. */\n [\"compute_weights\", \"int\"],\n /* use realtime priority mode, 0 or 1 */\n [\"realtime_mode\", \"int\"],\n /* use sample-level score event accuracy */\n [\"sample_accurate\", \"int\"],\n /* overriding sample rate */\n [\"sample_rate_override\", \"MYFLT\"],\n /* overriding control rate */\n [\"control_rate_override\", \"MYFLT\"],\n /* overriding number of out channels */\n [\"nchnls_override\", \"int\"],\n /* overriding number of in channels */\n [\"nchnls_i_override\", \"int\"],\n /* overriding 0dbfs */\n [\"e0dbfs_override\", \"MYFLT\"],\n /* daemon mode */\n [\"daemon\", \"int\"],\n /* ksmps override */\n [\"ksmps_override\", \"int\"],\n /* fft_lib */\n [\"FFT_library\", \"int\"],\n];\n\n/**\n * @typedef CS_MIDIDEVICE Array<Array.<string | number>>>\n */\nexport const CS_MIDIDEVICE = [\n /* debug mode, 0 or 1 */\n [\"device_name\", \"char\", 64],\n [\"interface_name\", \"char\", 64],\n [\"device_id\", \"char\", 64],\n [\"midi_module\", \"char\", 64],\n [\"isOutput\", \"int\"],\n];\n","/* eslint-disable unicorn/prevent-abbreviations */\nimport { freeStringPtr, string2ptr } from \"../utils/string-pointers.js\";\nimport { structBufferToObject } from \"../utils/structure-buffer-to-object.js\";\nimport { sizeofStruct } from \"../utils/native-sizes.js\";\nimport { CSOUND_PARAMS } from \"../structures.js\";\n\n/*\n csound attribute module from <csound.h>\n https://csound.com/docs/api/modules.html\n*/\n\n/**\n * Returns the sample rate from Csound instance\n * @async\n * @function\n * @name getSr\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetSr = (wasm) => (csound) => wasm.exports.csoundGetSr(csound);\n\ncsoundGetSr.toString = () => \"getSr = async () => Number;\";\n\n/**\n * Returns the control rate from Csound instance\n * @async\n * @function\n * @name getKr\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetKr = (wasm) => (csound) => wasm.exports.csoundGetKr(csound);\n\ncsoundGetKr.toString = () => \"getKr = async () => Number;\";\n\n/**\n * Returns the ksmps value (kr/sr) from Csound instance\n * @async\n * @function\n * @name getKsmps\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetKsmps = (wasm) => (csound) => wasm.exports.csoundGetKsmps(csound);\n\ncsoundGetKsmps.toString = () => \"getKsmps = async () => Number;\";\n\n/**\n * Returns the number of output channels from Csound instance\n * @async\n * @function\n * @name getNchnls\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetNchnls = (wasm) => (csound) => wasm.exports.csoundGetNchnls(csound);\n\ncsoundGetNchnls.toString = () => \"getNchnls = async () => Number;\";\n\n/**\n * Returns the number of input channels from Csound instance\n * @async\n * @function\n * @name getNchnlsInput\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetNchnlsInput = (wasm) => (csound) => wasm.exports.csoundGetNchnlsInput(csound);\n\ncsoundGetNchnlsInput.toString = () => \"getNchnlsInput = async () => Number;\";\n\n/**\n * Returns the value of csoundGet0dBFS\n * @async\n * @function\n * @name get0dBFS\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGet0dBFS = (wasm) => (csound) => wasm.exports.csoundGet0dBFS(csound);\n\ncsoundGet0dBFS.toString = () => \"get0dBFS = async () => Number;\";\n\n/**\n * Returns the A4 frequency reference\n * @async\n * @function\n * @name getA4\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetA4 = (wasm) => (csound) => wasm.exports.csoundGetA4(csound);\n\ncsoundGetA4.toString = () => \"getA4 = async () => Number;\";\n\n/**\n * Return the current performance time in samples\n * @async\n * @function\n * @name getCurrentTimeSamples\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetCurrentTimeSamples = (wasm) => (csound) =>\n wasm.exports.csoundGetCurrentTimeSamples(csound);\n\ncsoundGetCurrentTimeSamples.toString = () => \"getCurrentTimeSamples = async () => Number;\";\n\n/**\n * Return the size of MYFLT in number of bytes\n * @async\n * @function\n * @name getSizeOfMYFLT\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetSizeOfMYFLT = (wasm) => (csound) => wasm.exports.csoundGetSizeOfMYFLT(csound);\n\ncsoundGetSizeOfMYFLT.toString = () => \"getSizeOfMYFLT = async () => Number;\";\n\n// TODO (do these make any sense in wasm?)\n// csoundGetHostData\n// csoundSetHostData\n\n/**\n * Set a single csound option (flag),\n * no spaces are allowed in the string.\n * @async\n * @function\n * @name setOption\n * @memberof CsoundObj\n * @param {string} option\n * @return {Promise.<number>}\n */\nexport const csoundSetOption = (wasm) => (csound, option) => {\n const stringPtr = string2ptr(wasm, option);\n const result = wasm.exports.csoundSetOption(csound, stringPtr);\n freeStringPtr(wasm, stringPtr);\n return result;\n};\n\ncsoundSetOption.toString = () => \"setOption = async (option) => Number;\";\n\n/**\n * Configure Csound with a given set of\n * parameters defined in the CSOUND_PARAMS structure.\n * These parameters are the part of the OPARMS struct\n * that are configurable through command line flags.\n * The CSOUND_PARAMS structure can be obtained using\n * csoundGetParams().\n * These options should only be changed before\n * performance has started.\n * @async\n * @function\n * @name setParams\n * @memberof CsoundObj\n * @param {CSOUND_PARAMS} csoundParams - csoundParams object\n * @return {Promise.<undefined>}\n */\nexport const csoundSetParams = (wasm) => (csound, csoundParameters) => {\n wasm.exports.csoundSetParams(csound, csoundParameters);\n};\n\ncsoundSetParams.toString = () => \"setParams = async (csoundParams) => undefined;\";\n\n/**\n * Get the current set of parameters\n * from a Csound instance\n * in a CSOUND_PARAMS structure.\n * @async\n * @function\n * @name getParams\n * @memberof CsoundObj\n * @return {Promise.<CSOUND_PARAMS>} - CSOUND_PARAMS object\n */\nexport const csoundGetParams = (wasm) => (csound) => {\n const { buffer } = wasm.wasi.memory;\n const structLength = sizeofStruct(CSOUND_PARAMS);\n const structOffset = wasm.exports.allocCsoundParamsStruct();\n const structBuffer = new Uint8Array(buffer, structOffset, structLength);\n wasm.exports.csoundGetParams(csound, structOffset);\n const currentCsoundParameters = structBufferToObject(CSOUND_PARAMS, structBuffer);\n wasm.exports.freeCsoundParams(structOffset);\n return currentCsoundParameters;\n};\n\ncsoundGetParams.toString = () => \"getParams = async () => CSOUND_PARAMS;\";\n\n/**\n * Returns whether Csound is set to print debug messages\n * sent through the DebugMsg() internal API function.\n * Anything different to 0 means true.\n * @async\n * @function\n * @name getDebug\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetDebug = (wasm) => (csound) => wasm.exports.csoundGetDebug(csound);\n\ncsoundGetDebug.toString = () => \"getDebug = async () => Number;\";\n\n/**\n * Return the size of MYFLT in number of bytes\n * @async\n * @function\n * @name setDebug\n * @memberof CsoundObj\n * @param {number} debug\n * @return {Promise.<undefined>}\n */\nexport const csoundSetDebug = (wasm) => (csound, debug) => {\n wasm.exports.csoundSetDebug(csound, debug);\n};\n\ncsoundSetDebug.toString = () => \"setDebug = async (number) => undefined;\";\n","/*\n Realtime Audio I/O module from <csound.h>\n https://csound.com/docs/api/modules.html\n*/\n\n/**\n * Returns the number of samples in Csound's input buffer.\n * @async\n * @function\n * @name getInputBufferSize\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetInputBufferSize = (wasm) => (csound) =>\n wasm.exports.csoundGetInputBufferSize(csound);\n\ncsoundGetInputBufferSize.toString = () => \"getInputBufferSize = async () => Number;\";\n\n/**\n * Returns the number of samples in Csound's output buffer.\n * @async\n * @function\n * @name getOutputBufferSize\n * @memberof CsoundObj\n * @return {Promise.<number>}\n */\nexport const csoundGetOutputBufferSize = (wasm) => (csound) =>\n wasm.exports.csoundGetOutputBufferSize(csound);\n\ncsoundGetOutputBufferSize.toString = () => \"getOutputBufferSize = async () => Number;\";\n\n/**\n * Returns the address of the Csound audio input buffer.\n * @function\n */\nexport const csoundGetInputBuffer = (wasm /* WasmInst */) => (csound /* CsoundInst */) =>\n wasm.exports.csoundGetInputBuffer(csound);\n\ncsoundGetInputBuffer.toString = () => \"getInputBuffer = async () => Number;\";\n\n/**\n * Returns the address of the Csound audio output buffer.\n * @function\n */\nexport const csoundGetOutputBuffer = (wasm /* WasmInst */) => (csound /* CsoundInst */) =>\n wasm.exports.csoundGetOutputBuffer(csound);\n\ncsoundGetOutputBuffer.toString = () => \"getOutputBuffer = async () => Number;\";\n\n/**\n * Returns the address of the Csound audio input working buffer (spin).\n * Enables external software to write audio into Csound before calling csoundPerformKsmps.\n * @function\n */\nexport const csoundGetSpin = (wasm /* WasmInst */) => (csound /* CsoundInst */) =>\n wasm.exports.csoundGetSpin(csound);\n\ncsoundGetSpin.toString = () => \"getSpin = async (csound) => Number;\";\n\n/**\n * Returns the address of the Csound audio output working buffer (spout).\n * Enables external software to read audio from Csound after calling csoundPerformKsmps.\n * @function\n */\nexport const csoundGetSpout = (wasm /* WasmInst */) => (csound /* CsoundInst */) =>\n wasm.exports.csoundGetSpout(csound);\n\ncsoundGetSpout.toString = () => \"getSpout = async () => Number;\";\n\n// PUBLIC void \tcsoundSetRTAudioModule (CSOUND *csound, const char *module)\n// PUBLIC int \tcsoundGetModule (CSOUND *csound, int number, char **name, char **type)\n\n// PUBLIC void \tcsoundClearSpin (CSOUND *)\n// PUBLIC void \tcsoundAddSpinSample (CSOUND *csound, int frame, int channel, MYFLT sample)\n// PUBLIC void \tcsoundSetSpinSample (CSOUND *csound, int frame, int channel, MYFLT sample)\n\n// PUBLIC MYFLT \tcsoundGetSpoutSample (CSOUND *csound, int frame, int channel)\n// PUBLIC void ** \tcsoundGetRtRecordUserData (CSOUND *)\n// PUBLIC void ** \tcsoundGetRtPlayUserData (CSOUND *)\n// PUBLIC void \tcsoundSetHostImplementedAudioIO (CSOUND *, int state, int bufSize)\n// PUBLIC int \tcsoundGetAudioDevList (CSOUND *csound, CS_AUDIODEVICE *list, int isOutput)\n// PUBLIC void \tcsoundSetPlayopenCallback (CSOUND *, int(*playopen__)(CSOUND *, const csRtAudioParams *parm))\n// PUBLIC void \tcsoundSetRtplayCallback (CSOUND *, void(*rtplay__)(CSOUND *, const MYFLT *outBuf, int nbytes))\n// PUBLIC void \tcsoundSetRecopenCallback (CSOUND *, int(*recopen_)(CSOUND *, const csRtAudioParams *parm))\n// PUBLIC void \tcsoundSetRtrecordCallback (CSOUND *, int(*rtrecord__)(CSOUND *, MYFLT *inBuf, int nbytes))\n// PUBLIC void \tcsoundSetRtcloseCallback (CSOUND *, void(*rtclose__)(CSOUND *))\n// PUBLIC void \tcsoundSetAudioDeviceListCallback (CSOUND *csound, int(*audiodevlist__)(CSOUND *, CS_AUDIODEVICE *list, int isOutput))\n","function add(a, b) {\n if (arguments.length === 1) return _b => add(a, _b);\n return Number(a) + Number(b);\n}\n\nconst cloneList = list => Array.prototype.slice.call(list);\n\nfunction curry(fn, args = []) {\n return (..._args) => (rest => rest.length >= fn.length ? fn(...rest) : curry(fn, rest))([...args, ..._args]);\n}\n\nfunction adjustFn(index, replaceFn, list) {\n const actualIndex = index < 0 ? list.length + index : index;\n if (index >= list.length || actualIndex < 0) return list;\n const clone = cloneList(list);\n clone[actualIndex] = replaceFn(clone[actualIndex]);\n return clone;\n}\nconst adjust = curry(adjustFn);\n\nfunction all(predicate, list) {\n if (arguments.length === 1) return _list => all(predicate, _list);\n for (let i = 0; i < list.length; i++) {\n if (!predicate(list[i])) return false;\n }\n return true;\n}\n\nfunction allPass(predicates) {\n return (...input) => {\n let counter = 0;\n while (counter < predicates.length) {\n if (!predicates[counter](...input)) {\n return false;\n }\n counter++;\n }\n return true;\n };\n}\n\nfunction always(x) {\n return _ => x;\n}\n\nfunction and(a, b) {\n if (arguments.length === 1) return _b => and(a, _b);\n return a && b;\n}\n\nfunction any(predicate, list) {\n if (arguments.length === 1) return _list => any(predicate, _list);\n let counter = 0;\n while (counter < list.length) {\n if (predicate(list[counter], counter)) {\n return true;\n }\n counter++;\n }\n return false;\n}\n\nfunction anyPass(predicates) {\n return (...input) => {\n let counter = 0;\n while (counter < predicates.length) {\n if (predicates[counter](...input)) {\n return true;\n }\n counter++;\n }\n return false;\n };\n}\n\nfunction append(x, input) {\n if (arguments.length === 1) return _input => append(x, _input);\n if (typeof input === 'string') return input.split('').concat(x);\n const clone = cloneList(input);\n clone.push(x);\n return clone;\n}\n\nfunction apply(fn, args) {\n if (arguments.length === 1) {\n return _args => apply(fn, _args);\n }\n return fn.apply(this, args);\n}\n\nconst {\n isArray\n} = Array;\n\nfunction __findHighestArity(spec, max = 0) {\n for (const key in spec) {\n if (spec.hasOwnProperty(key) === false || key === 'constructor') continue;\n if (typeof spec[key] === 'object') {\n max = Math.max(max, __findHighestArity(spec[key]));\n }\n if (typeof spec[key] === 'function') {\n max = Math.max(max, spec[key].length);\n }\n }\n return max;\n}\nfunction __filterUndefined() {\n const defined = [];\n let i = 0;\n const l = arguments.length;\n while (i < l) {\n if (typeof arguments[i] === 'undefined') break;\n defined[i] = arguments[i];\n i++;\n }\n return defined;\n}\nfunction __applySpecWithArity(spec, arity, cache) {\n const remaining = arity - cache.length;\n if (remaining === 1) return x => __applySpecWithArity(spec, arity, __filterUndefined(...cache, x));\n if (remaining === 2) return (x, y) => __applySpecWithArity(spec, arity, __filterUndefined(...cache, x, y));\n if (remaining === 3) return (x, y, z) => __applySpecWithArity(spec, arity, __filterUndefined(...cache, x, y, z));\n if (remaining === 4) return (x, y, z, a) => __applySpecWithArity(spec, arity, __filterUndefined(...cache, x, y, z, a));\n if (remaining > 4) return (...args) => __applySpecWithArity(spec, arity, __filterUndefined(...cache, ...args));\n if (isArray(spec)) {\n const ret = [];\n let i = 0;\n const l = spec.length;\n for (; i < l; i++) {\n if (typeof spec[i] === 'object' || isArray(spec[i])) {\n ret[i] = __applySpecWithArity(spec[i], arity, cache);\n }\n if (typeof spec[i] === 'function') {\n ret[i] = spec[i](...cache);\n }\n }\n return ret;\n }\n const ret = {};\n for (const key in spec) {\n if (spec.hasOwnProperty(key) === false || key === 'constructor') continue;\n if (typeof spec[key] === 'object') {\n ret[key] = __applySpecWithArity(spec[key], arity, cache);\n continue;\n }\n if (typeof spec[key] === 'function') {\n ret[key] = spec[key](...cache);\n }\n }\n return ret;\n}\nfunction applySpec(spec, ...args) {\n const arity = __findHighestArity(spec);\n if (arity === 0) {\n return () => ({});\n }\n const toReturn = __applySpecWithArity(spec, arity, args);\n return toReturn;\n}\n\nfunction assocFn(prop, newValue, obj) {\n return Object.assign({}, obj, {\n [prop]: newValue\n });\n}\nconst assoc = curry(assocFn);\n\nfunction _isInteger(n) {\n return n << 0 === n;\n}\nconst isInteger = Number.isInteger || _isInteger;\n\nfunction assocPathFn(path, newValue, input) {\n const pathArrValue = typeof path === 'string' ? path.split('.').map(x => isInteger(Number(x)) ? Number(x) : x) : path;\n if (pathArrValue.length === 0) {\n return newValue;\n }\n const index = pathArrValue[0];\n if (pathArrValue.length > 1) {\n const condition = typeof input !== 'object' || input === null || !input.hasOwnProperty(index);\n const nextInput = condition ? isInteger(pathArrValue[1]) ? [] : {} : input[index];\n newValue = assocPathFn(Array.prototype.slice.call(pathArrValue, 1), newValue, nextInput);\n }\n if (isInteger(index) && isArray(input)) {\n const arr = cloneList(input);\n arr[index] = newValue;\n return arr;\n }\n return assoc(index, newValue, input);\n}\nconst assocPath = curry(assocPathFn);\n\nfunction _curryN(n, cache, fn) {\n return function () {\n let ci = 0;\n let ai = 0;\n const cl = cache.length;\n const al = arguments.length;\n const args = new Array(cl + al);\n while (ci < cl) {\n args[ci] = cache[ci];\n ci++;\n }\n while (ai < al) {\n args[cl + ai] = arguments[ai];\n ai++;\n }\n const remaining = n - args.length;\n return args.length >= n ? fn.apply(this, args) : _arity$1(remaining, _curryN(n, args, fn));\n };\n}\nfunction _arity$1(n, fn) {\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n case 1:\n return function (_1) {\n return fn.apply(this, arguments);\n };\n case 2:\n return function (_1, _2) {\n return fn.apply(this, arguments);\n };\n case 3:\n return function (_1, _2, _3) {\n return fn.apply(this, arguments);\n };\n case 4:\n return function (_1, _2, _3, _4) {\n return fn.apply(this, arguments);\n };\n case 5:\n return function (_1, _2, _3, _4, _5) {\n return fn.apply(this, arguments);\n };\n case 6:\n return function (_1, _2, _3, _4, _5, _6) {\n return fn.apply(this, arguments);\n };\n case 7:\n return function (_1, _2, _3, _4, _5, _6, _7) {\n return fn.apply(this, arguments);\n };\n case 8:\n return function (_1, _2, _3, _4, _5, _6, _7, _8) {\n return fn.apply(this, arguments);\n };\n case 9:\n return function (_1, _2, _3, _4, _5, _6, _7, _8, _9) {\n return fn.apply(this, arguments);\n };\n default:\n return function (_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) {\n return fn.apply(this, arguments);\n };\n }\n}\nfunction curryN(n, fn) {\n if (arguments.length === 1) return _fn => curryN(n, _fn);\n if (n > 10) {\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n return _arity$1(n, _curryN(n, [], fn));\n}\n\nfunction bind(fn, thisObj) {\n if (arguments.length === 1) {\n return _thisObj => bind(fn, _thisObj);\n }\n return curryN(fn.length, (...args) => fn.apply(thisObj, args));\n}\n\nfunction both(f, g) {\n if (arguments.length === 1) return _g => both(f, _g);\n return (...input) => f(...input) && g(...input);\n}\n\nfunction chain(fn, list) {\n if (arguments.length === 1) {\n return _list => chain(fn, _list);\n }\n return [].concat(...list.map(fn));\n}\n\nfunction clampFn(min, max, input) {\n if (min > max) {\n throw new Error('min must not be greater than max in clamp(min, max, value)');\n }\n if (input >= min && input <= max) return input;\n if (input > max) return max;\n if (input < min) return min;\n}\nconst clamp = curry(clampFn);\n\nfunction clone(input) {\n const out = isArray(input) ? Array(input.length) : {};\n if (input && input.getTime) return new Date(input.getTime());\n for (const key in input) {\n const v = input[key];\n out[key] = typeof v === 'object' && v !== null ? v.getTime ? new Date(v.getTime()) : clone(v) : v;\n }\n return out;\n}\n\nfunction complement(fn) {\n return (...input) => !fn(...input);\n}\n\nclass ReduceStopper {\n constructor(value) {\n this.value = value;\n }\n}\nfunction reduceFn(reducer, acc, list) {\n if (!isArray(list)) {\n throw new TypeError('reduce: list must be array or iterable');\n }\n let index = 0;\n const len = list.length;\n while (index < len) {\n acc = reducer(acc, list[index], index, list);\n if (acc instanceof ReduceStopper) {\n return acc.value;\n }\n index++;\n }\n return acc;\n}\nconst reduce = curry(reduceFn);\nconst reduceStopper = value => new ReduceStopper(value);\n\nfunction _arity(n, fn) {\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}\nfunction _pipe(f, g) {\n return function () {\n return g.call(this, f.apply(this, arguments));\n };\n}\nfunction pipe() {\n if (arguments.length === 0) {\n throw new Error('pipe requires at least one argument');\n }\n return _arity(arguments[0].length, reduceFn(_pipe, arguments[0], Array.prototype.slice.call(arguments, 1, Infinity)));\n}\n\nfunction compose() {\n if (arguments.length === 0) {\n throw new Error('compose requires at least one argument');\n }\n return pipe.apply(this, Array.prototype.slice.call(arguments, 0).reverse());\n}\n\nfunction concat(x, y) {\n if (arguments.length === 1) return _y => concat(x, _y);\n return typeof x === 'string' ? `${x}${y}` : [...x, ...y];\n}\n\nfunction cond(conditions) {\n return input => {\n let done = false;\n let toReturn;\n conditions.forEach(([predicate, resultClosure]) => {\n if (!done && predicate(input)) {\n done = true;\n toReturn = resultClosure(input);\n }\n });\n return toReturn;\n };\n}\n\nconst {\n keys: keys$1\n} = Object;\n\nfunction mapArray(fn, list, isIndexed = false) {\n let index = 0;\n const willReturn = Array(list.length);\n while (index < list.length) {\n willReturn[index] = isIndexed ? fn(list[index], index) : fn(list[index]);\n index++;\n }\n return willReturn;\n}\nfunction mapObject(fn, obj) {\n if (arguments.length === 1) {\n return _obj => mapObject(fn, _obj);\n }\n let index = 0;\n const objKeys = keys$1(obj);\n const len = objKeys.length;\n const willReturn = {};\n while (index < len) {\n const key = objKeys[index];\n willReturn[key] = fn(obj[key], key, obj);\n index++;\n }\n return willReturn;\n}\nconst mapObjIndexed = mapObject;\nfunction map(fn, iterable) {\n if (arguments.length === 1) return _iterable => map(fn, _iterable);\n if (!iterable) {\n throw new Error(INCORRECT_ITERABLE_INPUT);\n }\n if (isArray(iterable)) return mapArray(fn, iterable);\n return mapObject(fn, iterable);\n}\n\nfunction max(x, y) {\n if (arguments.length === 1) return _y => max(x, _y);\n return y > x ? y : x;\n}\n\nfunction converge(fn, transformers) {\n if (arguments.length === 1) return _transformers => converge(fn, _transformers);\n const highestArity = reduce((a, b) => max(a, b.length), 0, transformers);\n return curryN(highestArity, function () {\n return fn.apply(this, map(g => g.apply(this, arguments), transformers));\n });\n}\n\nfunction count(predicate, list) {\n if (arguments.length === 1) {\n return _list => count(predicate, _list);\n }\n if (!isArray(list)) return 0;\n return list.filter(x => predicate(x)).length;\n}\n\nfunction countBy(fn, list) {\n if (arguments.length === 1) {\n return _list => countBy(fn, _list);\n }\n const willReturn = {};\n list.forEach(item => {\n const key = fn(item);\n if (!willReturn[key]) {\n willReturn[key] = 1;\n } else {\n willReturn[key]++;\n }\n });\n return willReturn;\n}\n\nconst dec = x => x - 1;\n\nfunction isFalsy(input) {\n return input === undefined || input === null || Number.isNaN(input) === true;\n}\nfunction defaultTo(defaultArgument, input) {\n if (arguments.length === 1) {\n return _input => defaultTo(defaultArgument, _input);\n }\n return isFalsy(input) ? defaultArgument : input;\n}\n\nfunction type(input) {\n if (input === null) {\n return 'Null';\n } else if (input === undefined) {\n return 'Undefined';\n } else if (Number.isNaN(input)) {\n return 'NaN';\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1);\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult;\n}\n\nfunction _lastIndexOf(valueToFind, list) {\n if (!isArray(list)) {\n throw new Error(`Cannot read property 'indexOf' of ${list}`);\n }\n const typeOfValue = type(valueToFind);\n if (!['Object', 'Array', 'NaN', 'RegExp'].includes(typeOfValue)) return list.lastIndexOf(valueToFind);\n const {\n length\n } = list;\n let index = length;\n let foundIndex = -1;\n while (--index > -1 && foundIndex === -1) {\n if (equals(list[index], valueToFind)) {\n foundIndex = index;\n }\n }\n return foundIndex;\n}\nfunction _indexOf(valueToFind, list) {\n if (!isArray(list)) {\n throw new Error(`Cannot read property 'indexOf' of ${list}`);\n }\n const typeOfValue = type(valueToFind);\n if (!['Object', 'Array', 'NaN', 'RegExp'].includes(typeOfValue)) return list.indexOf(valueToFind);\n let index = -1;\n let foundIndex = -1;\n const {\n length\n } = list;\n while (++index < length && foundIndex === -1) {\n if (equals(list[index], valueToFind)) {\n foundIndex = index;\n }\n }\n return foundIndex;\n}\nfunction _arrayFromIterator(iter) {\n const list = [];\n let next;\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n return list;\n}\nfunction _equalsSets(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n const aList = _arrayFromIterator(a.values());\n const bList = _arrayFromIterator(b.values());\n const filtered = aList.filter(aInstance => _indexOf(aInstance, bList) === -1);\n return filtered.length === 0;\n}\nfunction parseError(maybeError) {\n const typeofError = maybeError.__proto__.toString();\n if (!['Error', 'TypeError'].includes(typeofError)) return [];\n return [typeofError, maybeError.message];\n}\nfunction parseDate(maybeDate) {\n if (!maybeDate.toDateString) return [false];\n return [true, maybeDate.getTime()];\n}\nfunction parseRegex(maybeRegex) {\n if (maybeRegex.constructor !== RegExp) return [false];\n return [true, maybeRegex.toString()];\n}\nfunction equals(a, b) {\n if (arguments.length === 1) return _b => equals(a, _b);\n const aType = type(a);\n if (aType !== type(b)) return false;\n if (aType === 'Function') {\n return a.name === undefined ? false : a.name === b.name;\n }\n if (['NaN', 'Undefined', 'Null'].includes(aType)) return true;\n if (aType === 'Number') {\n if (Object.is(-0, a) !== Object.is(-0, b)) return false;\n return a.toString() === b.toString();\n }\n if (['String', 'Boolean'].includes(aType)) {\n return a.toString() === b.toString();\n }\n if (aType === 'Array') {\n const aClone = Array.from(a);\n const bClone = Array.from(b);\n if (aClone.toString() !== bClone.toString()) {\n return false;\n }\n let loopArrayFlag = true;\n aClone.forEach((aCloneInstance, aCloneIndex) => {\n if (loopArrayFlag) {\n if (aCloneInstance !== bClone[aCloneIndex] && !equals(aCloneInstance, bClone[aCloneIndex])) {\n loopArrayFlag = false;\n }\n }\n });\n return loopArrayFlag;\n }\n const aRegex = parseRegex(a);\n const bRegex = parseRegex(b);\n if (aRegex[0]) {\n return bRegex[0] ? aRegex[1] === bRegex[1] : false;\n } else if (bRegex[0]) return false;\n const aDate = parseDate(a);\n const bDate = parseDate(b);\n if (aDate[0]) {\n return bDate[0] ? aDate[1] === bDate[1] : false;\n } else if (bDate[0]) return false;\n const aError = parseError(a);\n const bError = parseError(b);\n if (aError[0]) {\n return bError[0] ? aError[0] === bError[0] && aError[1] === bError[1] : false;\n }\n if (aType === 'Set') {\n return _equalsSets(a, b);\n }\n if (aType === 'Object') {\n const aKeys = Object.keys(a);\n if (aKeys.length !== Object.keys(b).length) {\n return false;\n }\n let loopObjectFlag = true;\n aKeys.forEach(aKeyInstance => {\n if (loopObjectFlag) {\n const aValue = a[aKeyInstance];\n const bValue = b[aKeyInstance];\n if (aValue !== bValue && !equals(aValue, bValue)) {\n loopObjectFlag = false;\n }\n }\n });\n return loopObjectFlag;\n }\n return false;\n}\n\nfunction includes(valueToFind, iterable) {\n if (arguments.length === 1) return _iterable => includes(valueToFind, _iterable);\n if (typeof iterable === 'string') {\n return iterable.includes(valueToFind);\n }\n if (!iterable) {\n throw new TypeError(`Cannot read property \\'indexOf\\' of ${iterable}`);\n }\n if (!isArray(iterable)) return false;\n return _indexOf(valueToFind, iterable) > -1;\n}\n\nclass _Set {\n constructor() {\n this.set = new Set();\n this.items = {};\n }\n checkUniqueness(item) {\n const type$1 = type(item);\n if (['Null', 'Undefined', 'NaN'].includes(type$1)) {\n if (type$1 in this.items) {\n return false;\n }\n this.items[type$1] = true;\n return true;\n }\n if (!['Object', 'Array'].includes(type$1)) {\n const prevSize = this.set.size;\n this.set.add(item);\n return this.set.size !== prevSize;\n }\n if (!(type$1 in this.items)) {\n this.items[type$1] = [item];\n return true;\n }\n if (_indexOf(item, this.items[type$1]) === -1) {\n this.items[type$1].push(item);\n return true;\n }\n return false;\n }\n}\n\nfunction uniq(list) {\n const set = new _Set();\n const willReturn = [];\n list.forEach(item => {\n if (set.checkUniqueness(item)) {\n willReturn.push(item);\n }\n });\n return willReturn;\n}\n\nfunction difference(a, b) {\n if (arguments.length === 1) return _b => difference(a, _b);\n return uniq(a).filter(aInstance => !includes(aInstance, b));\n}\n\nfunction dissoc(prop, obj) {\n if (arguments.length === 1) return _obj => dissoc(prop, _obj);\n if (obj === null || obj === undefined) return {};\n const willReturn = {};\n for (const p in obj) {\n willReturn[p] = obj[p];\n }\n delete willReturn[prop];\n return willReturn;\n}\n\nfunction divide(a, b) {\n if (arguments.length === 1) return _b => divide(a, _b);\n return a / b;\n}\n\nfunction drop(howManyToDrop, listOrString) {\n if (arguments.length === 1) return _list => drop(howManyToDrop, _list);\n return listOrString.slice(howManyToDrop > 0 ? howManyToDrop : 0);\n}\n\nfunction dropLast(howManyToDrop, listOrString) {\n if (arguments.length === 1) {\n return _listOrString => dropLast(howManyToDrop, _listOrString);\n }\n return howManyToDrop > 0 ? listOrString.slice(0, -howManyToDrop) : listOrString.slice();\n}\n\nfunction dropLastWhile(predicate, iterable) {\n if (arguments.length === 1) {\n return _iterable => dropLastWhile(predicate, _iterable);\n }\n if (iterable.length === 0) return iterable;\n const isArray$1 = isArray(iterable);\n if (typeof predicate !== 'function') {\n throw new Error(`'predicate' is from wrong type ${typeof predicate}`);\n }\n if (!isArray$1 && typeof iterable !== 'string') {\n throw new Error(`'iterable' is from wrong type ${typeof iterable}`);\n }\n let found = false;\n const toReturn = [];\n let counter = iterable.length;\n while (counter > 0) {\n counter--;\n if (!found && predicate(iterable[counter]) === false) {\n found = true;\n toReturn.push(iterable[counter]);\n } else if (found) {\n toReturn.push(iterable[counter]);\n }\n }\n return isArray$1 ? toReturn.reverse() : toReturn.reverse().join('');\n}\n\nfunction dropRepeats(list) {\n if (!isArray(list)) {\n throw new Error(`${list} is not a list`);\n }\n const toReturn = [];\n list.reduce((prev, current) => {\n if (!equals(prev, current)) {\n toReturn.push(current);\n }\n return current;\n }, undefined);\n return toReturn;\n}\n\nfunction dropRepeatsWith(predicate, list) {\n if (arguments.length === 1) {\n return _iterable => dropRepeatsWith(predicate, _iterable);\n }\n if (!isArray(list)) {\n throw new Error(`${list} is not a list`);\n }\n const toReturn = [];\n list.reduce((prev, current) => {\n if (prev === undefined) {\n toReturn.push(current);\n return current;\n }\n if (!predicate(prev, current)) {\n toReturn.push(current);\n }\n return current;\n }, undefined);\n return toReturn;\n}\n\nfunction dropWhile(predicate, iterable) {\n if (arguments.length === 1) {\n return _iterable => dropWhile(predicate, _iterable);\n }\n const isArray$1 = isArray(iterable);\n if (!isArray$1 && typeof iterable !== 'string') {\n throw new Error('`iterable` is neither list nor a string');\n }\n let flag = false;\n const holder = [];\n let counter = -1;\n while (counter++ < iterable.length - 1) {\n if (flag) {\n holder.push(iterable[counter]);\n } else if (!predicate(iterable[counter])) {\n if (!flag) flag = true;\n holder.push(iterable[counter]);\n }\n }\n return isArray$1 ? holder : holder.join('');\n}\n\nfunction either(firstPredicate, secondPredicate) {\n if (arguments.length === 1) {\n return _secondPredicate => either(firstPredicate, _secondPredicate);\n }\n return (...input) => Boolean(firstPredicate(...input) || secondPredicate(...input));\n}\n\nfunction endsWith(target, iterable) {\n if (arguments.length === 1) return _iterable => endsWith(target, _iterable);\n if (typeof iterable === 'string') {\n return iterable.endsWith(target);\n }\n if (!isArray(target)) return false;\n const diff = iterable.length - target.length;\n let correct = true;\n const filtered = target.filter((x, index) => {\n if (!correct) return false;\n const result = equals(x, iterable[index + diff]);\n if (!result) correct = false;\n return result;\n });\n return filtered.length === target.length;\n}\n\nfunction prop(propToFind, obj) {\n if (arguments.length === 1) return _obj => prop(propToFind, _obj);\n if (!obj) return undefined;\n return obj[propToFind];\n}\n\nfunction eqPropsFn(property, objA, objB) {\n return equals(prop(property, objA), prop(property, objB));\n}\nconst eqProps = curry(eqPropsFn);\n\nfunction evolveArray(rules, list) {\n return mapArray((x, i) => {\n if (type(rules[i]) === 'Function') {\n return rules[i](x);\n }\n return x;\n }, list, true);\n}\nfunction evolveObject(rules, iterable) {\n return mapObject((x, prop) => {\n if (type(x) === 'Object') {\n const typeRule = type(rules[prop]);\n if (typeRule === 'Function') {\n return rules[prop](x);\n }\n if (typeRule === 'Object') {\n return evolve(rules[prop], x);\n }\n return x;\n }\n if (type(rules[prop]) === 'Function') {\n return rules[prop](x);\n }\n return x;\n }, iterable);\n}\nfunction evolve(rules, iterable) {\n if (arguments.length === 1) {\n return _iterable => evolve(rules, _iterable);\n }\n const rulesType = type(rules);\n const iterableType = type(iterable);\n if (iterableType !== rulesType) {\n throw new Error('iterableType !== rulesType');\n }\n if (!['Object', 'Array'].includes(rulesType)) {\n throw new Error(`'iterable' and 'rules' are from wrong type ${rulesType}`);\n }\n if (iterableType === 'Object') {\n return evolveObject(rules, iterable);\n }\n return evolveArray(rules, iterable);\n}\n\nfunction F() {\n return false;\n}\n\nfunction filterObject(predicate, obj) {\n const willReturn = {};\n for (const prop in obj) {\n if (predicate(obj[prop], prop, obj)) {\n willReturn[prop] = obj[prop];\n }\n }\n return willReturn;\n}\nfunction filterArray(predicate, list, indexed = false) {\n let index = 0;\n const len = list.length;\n const willReturn = [];\n while (index < len) {\n const predicateResult = indexed ? predicate(list[index], index) : predicate(list[index]);\n if (predicateResult) {\n willReturn.push(list[index]);\n }\n index++;\n }\n return willReturn;\n}\nfunction filter(predicate, iterable) {\n if (arguments.length === 1) return _iterable => filter(predicate, _iterable);\n if (!iterable) {\n throw new Error('Incorrect iterable input');\n }\n if (isArray(iterable)) return filterArray(predicate, iterable, false);\n return filterObject(predicate, iterable);\n}\n\nfunction find(predicate, list) {\n if (arguments.length === 1) return _list => find(predicate, _list);\n let index = 0;\n const len = list.length;\n while (index < len) {\n const x = list[index];\n if (predicate(x)) {\n return x;\n }\n index++;\n }\n}\n\nfunction findIndex(predicate, list) {\n if (arguments.length === 1) return _list => findIndex(predicate, _list);\n const len = list.length;\n let index = -1;\n while (++index < len) {\n if (predicate(list[index])) {\n return index;\n }\n }\n return -1;\n}\n\nfunction findLast(predicate, list) {\n if (arguments.length === 1) return _list => findLast(predicate, _list);\n let index = list.length;\n while (--index >= 0) {\n if (predicate(list[index])) {\n return list[index];\n }\n }\n return undefined;\n}\n\nfunction findLastIndex(fn, list) {\n if (arguments.length === 1) return _list => findLastIndex(fn, _list);\n let index = list.length;\n while (--index >= 0) {\n if (fn(list[index])) {\n return index;\n }\n }\n return -1;\n}\n\nfunction flatten(list, input) {\n const willReturn = input === undefined ? [] : input;\n for (let i = 0; i < list.length; i++) {\n if (isArray(list[i])) {\n flatten(list[i], willReturn);\n } else {\n willReturn.push(list[i]);\n }\n }\n return willReturn;\n}\n\nfunction flipFn(fn) {\n return (...input) => {\n if (input.length === 1) {\n return holder => fn(holder, input[0]);\n } else if (input.length === 2) {\n return fn(input[1], input[0]);\n } else if (input.length === 3) {\n return fn(input[1], input[0], input[2]);\n } else if (input.length === 4) {\n return fn(input[1], input[0], input[2], input[3]);\n }\n throw new Error('R.flip doesn\\'t work with arity > 4');\n };\n}\nfunction flip(fn) {\n return flipFn(fn);\n}\n\nfunction forEach(fn, list) {\n if (arguments.length === 1) return _list => forEach(fn, _list);\n if (list === undefined) {\n return;\n }\n if (isArray(list)) {\n let index = 0;\n const len = list.length;\n while (index < len) {\n fn(list[index]);\n index++;\n }\n } else {\n let index = 0;\n const listKeys = keys$1(list);\n const len = listKeys.length;\n while (index < len) {\n const key = listKeys[index];\n fn(list[key], key, list);\n index++;\n }\n }\n return list;\n}\n\nfunction fromPairs(listOfPairs) {\n const toReturn = {};\n listOfPairs.forEach(([prop, value]) => toReturn[prop] = value);\n return toReturn;\n}\n\nfunction groupBy(groupFn, list) {\n if (arguments.length === 1) return _list => groupBy(groupFn, _list);\n const result = {};\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n const key = groupFn(item);\n if (!result[key]) {\n result[key] = [];\n }\n result[key].push(item);\n }\n return result;\n}\n\nfunction groupWith(compareFn, list) {\n if (!isArray(list)) throw new TypeError('list.reduce is not a function');\n const clone = cloneList(list);\n if (list.length === 1) return [clone];\n const toReturn = [];\n let holder = [];\n clone.reduce((prev, current, i) => {\n if (i === 0) return current;\n const okCompare = compareFn(prev, current);\n const holderIsEmpty = holder.length === 0;\n const lastCall = i === list.length - 1;\n if (okCompare) {\n if (holderIsEmpty) holder.push(prev);\n holder.push(current);\n if (lastCall) toReturn.push(holder);\n return current;\n }\n if (holderIsEmpty) {\n toReturn.push([prev]);\n if (lastCall) toReturn.push([current]);\n return current;\n }\n toReturn.push(holder);\n if (lastCall) toReturn.push([current]);\n holder = [];\n return current;\n }, undefined);\n return toReturn;\n}\n\nfunction has(prop, obj) {\n if (arguments.length === 1) return _obj => has(prop, _obj);\n if (!obj) return false;\n return obj.hasOwnProperty(prop);\n}\n\nfunction createPath(path, delimiter = '.') {\n return typeof path === 'string' ? path.split(delimiter) : path;\n}\n\nfunction path(pathInput, obj) {\n if (arguments.length === 1) return _obj => path(pathInput, _obj);\n if (obj === null || obj === undefined) {\n return undefined;\n }\n let willReturn = obj;\n let counter = 0;\n const pathArrValue = createPath(pathInput);\n while (counter < pathArrValue.length) {\n if (willReturn === null || willReturn === undefined) {\n return undefined;\n }\n if (willReturn[pathArrValue[counter]] === null) return undefined;\n willReturn = willReturn[pathArrValue[counter]];\n counter++;\n }\n return willReturn;\n}\n\nfunction hasPath(pathInput, obj) {\n if (arguments.length === 1) {\n return objHolder => hasPath(pathInput, objHolder);\n }\n return path(pathInput, obj) !== undefined;\n}\n\nfunction head(listOrString) {\n if (typeof listOrString === 'string') return listOrString[0] || '';\n return listOrString[0];\n}\n\nfunction _objectIs(a, b) {\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b;\n }\n return a !== a && b !== b;\n}\nconst objectIs = Object.is || _objectIs;\n\nfunction identical(a, b) {\n if (arguments.length === 1) return _b => identical(a, _b);\n return objectIs(a, b);\n}\n\nfunction identity(x) {\n return x;\n}\n\nfunction ifElseFn(condition, onTrue, onFalse) {\n return (...input) => {\n const conditionResult = typeof condition === 'boolean' ? condition : condition(...input);\n if (conditionResult === true) {\n return onTrue(...input);\n }\n return onFalse(...input);\n };\n}\nconst ifElse = curry(ifElseFn);\n\nconst inc = x => x + 1;\n\nfunction indexByPath(pathInput, list) {\n const toReturn = {};\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n toReturn[path(pathInput, item)] = item;\n }\n return toReturn;\n}\nfunction indexBy(condition, list) {\n if (arguments.length === 1) {\n return _list => indexBy(condition, _list);\n }\n if (typeof condition === 'string') {\n return indexByPath(condition, list);\n }\n const toReturn = {};\n for (let i = 0; i < list.length; i++) {\n const item = list[i];\n toReturn[condition(item)] = item;\n }\n return toReturn;\n}\n\nfunction indexOf(valueToFind, list) {\n if (arguments.length === 1) {\n return _list => _indexOf(valueToFind, _list);\n }\n return _indexOf(valueToFind, list);\n}\n\nfunction baseSlice(array, start, end) {\n let index = -1;\n let {\n length\n } = array;\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n const result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nfunction init(listOrString) {\n if (typeof listOrString === 'string') return listOrString.slice(0, -1);\n return listOrString.length ? baseSlice(listOrString, 0, -1) : [];\n}\n\nfunction intersection(listA, listB) {\n if (arguments.length === 1) return _list => intersection(listA, _list);\n return filter(x => includes(x, listA), listB);\n}\n\nfunction intersperse(separator, list) {\n if (arguments.length === 1) return _list => intersperse(separator, _list);\n let index = -1;\n const len = list.length;\n const willReturn = [];\n while (++index < len) {\n if (index === len - 1) {\n willReturn.push(list[index]);\n } else {\n willReturn.push(list[index], separator);\n }\n }\n return willReturn;\n}\n\nfunction is(targetPrototype, x) {\n if (arguments.length === 1) return _x => is(targetPrototype, _x);\n return x != null && x.constructor === targetPrototype || x instanceof targetPrototype;\n}\n\nfunction isEmpty(input) {\n const inputType = type(input);\n if (['Undefined', 'NaN', 'Number', 'Null'].includes(inputType)) return false;\n if (!input) return true;\n if (inputType === 'Object') {\n return Object.keys(input).length === 0;\n }\n if (inputType === 'Array') {\n return input.length === 0;\n }\n return false;\n}\n\nfunction isNil(x) {\n return x === undefined || x === null;\n}\n\nfunction join(glue, list) {\n if (arguments.length === 1) return _list => join(glue, _list);\n return list.join(glue);\n}\n\nfunction juxt(listOfFunctions) {\n return (...args) => listOfFunctions.map(fn => fn(...args));\n}\n\nfunction keys(x) {\n return Object.keys(x);\n}\n\nfunction last(listOrString) {\n if (typeof listOrString === 'string') {\n return listOrString[listOrString.length - 1] || '';\n }\n return listOrString[listOrString.length - 1];\n}\n\nfunction lastIndexOf(valueToFind, list) {\n if (arguments.length === 1) {\n return _list => _lastIndexOf(valueToFind, _list);\n }\n return _lastIndexOf(valueToFind, list);\n}\n\nfunction length(x) {\n if (isArray(x)) return x.length;\n if (typeof x === 'string') return x.length;\n return NaN;\n}\n\nfunction lens(getter, setter) {\n return function (functor) {\n return function (target) {\n return functor(getter(target)).map(focus => setter(focus, target));\n };\n };\n}\n\nfunction nth(index, input) {\n if (arguments.length === 1) return _input => nth(index, _input);\n const idx = index < 0 ? input.length + index : index;\n return Object.prototype.toString.call(input) === '[object String]' ? input.charAt(idx) : input[idx];\n}\n\nfunction updateFn(index, newValue, list) {\n const clone = cloneList(list);\n if (index === -1) return clone.fill(newValue, index);\n return clone.fill(newValue, index, index + 1);\n}\nconst update = curry(updateFn);\n\nfunction lensIndex(index) {\n return lens(nth(index), update(index));\n}\n\nfunction lensPath(key) {\n return lens(path(key), assocPath(key));\n}\n\nfunction lensProp(key) {\n return lens(prop(key), assoc(key));\n}\n\nfunction match(pattern, input) {\n if (arguments.length === 1) return _input => match(pattern, _input);\n const willReturn = input.match(pattern);\n return willReturn === null ? [] : willReturn;\n}\n\nfunction mathMod(x, y) {\n if (arguments.length === 1) return _y => mathMod(x, _y);\n if (!isInteger(x) || !isInteger(y) || y < 1) return NaN;\n return (x % y + y) % y;\n}\n\nfunction maxByFn(compareFn, x, y) {\n return compareFn(y) > compareFn(x) ? y : x;\n}\nconst maxBy = curry(maxByFn);\n\nfunction sum(list) {\n return list.reduce((prev, current) => prev + current, 0);\n}\n\nfunction mean(list) {\n return sum(list) / list.length;\n}\n\nfunction median(list) {\n const len = list.length;\n if (len === 0) return NaN;\n const width = 2 - len % 2;\n const idx = (len - width) / 2;\n return mean(Array.prototype.slice.call(list, 0).sort((a, b) => {\n if (a === b) return 0;\n return a < b ? -1 : 1;\n }).slice(idx, idx + width));\n}\n\nfunction mergeRight(target, newProps) {\n if (arguments.length === 1) return _newProps => mergeRight(target, _newProps);\n return Object.assign({}, target || {}, newProps || {});\n}\n\nfunction mergeAll(arr) {\n let willReturn = {};\n map(val => {\n willReturn = mergeRight(willReturn, val);\n }, arr);\n return willReturn;\n}\n\nfunction mergeDeepRight(target, source) {\n if (arguments.length === 1) {\n return sourceHolder => mergeDeepRight(target, sourceHolder);\n }\n const willReturn = clone(target);\n Object.keys(source).forEach(key => {\n if (type(source[key]) === 'Object') {\n if (type(target[key]) === 'Object') {\n willReturn[key] = mergeDeepRight(target[key], source[key]);\n } else {\n willReturn[key] = source[key];\n }\n } else {\n willReturn[key] = source[key];\n }\n });\n return willReturn;\n}\n\nfunction mergeLeft(x, y) {\n if (arguments.length === 1) return _y => mergeLeft(x, _y);\n return mergeRight(y, x);\n}\n\nfunction mergeWithFn(mergeFn, a, b) {\n const willReturn = {};\n Object.keys(a).forEach(key => {\n if (b[key] === undefined) {\n willReturn[key] = a[key];\n } else {\n willReturn[key] = mergeFn(a[key], b[key]);\n }\n });\n Object.keys(b).forEach(key => {\n if (willReturn[key] !== undefined) return;\n if (a[key] === undefined) {\n willReturn[key] = b[key];\n } else {\n willReturn[key] = mergeFn(a[key], b[key]);\n }\n });\n return willReturn;\n}\nconst mergeWith = curry(mergeWithFn);\n\nfunction min(x, y) {\n if (arguments.length === 1) return _y => min(x, _y);\n return y < x ? y : x;\n}\n\nfunction minByFn(compareFn, x, y) {\n return compareFn(y) < compareFn(x) ? y : x;\n}\nconst minBy = curry(minByFn);\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction isIterable(input) {\n return Array.isArray(input) || type(input) === 'Object';\n}\n\nfunction modifyFn(property, fn, iterable) {\n if (!isIterable(iterable)) return iterable;\n if (iterable[property] === undefined) return iterable;\n if (isArray(iterable)) {\n return updateFn(property, fn(iterable[property]), iterable);\n }\n return _objectSpread2(_objectSpread2({}, iterable), {}, {\n [property]: fn(iterable[property])\n });\n}\nconst modify = curry(modifyFn);\n\nfunction modifyPathFn(pathInput, fn, object) {\n const path$1 = createPath(pathInput);\n if (path$1.length === 1) {\n return _objectSpread2(_objectSpread2({}, object), {}, {\n [path$1[0]]: fn(object[path$1[0]])\n });\n }\n if (path(path$1, object) === undefined) return object;\n const val = modifyPath(Array.prototype.slice.call(path$1, 1), fn, object[path$1[0]]);\n if (val === object[path$1[0]]) {\n return object;\n }\n return assoc(path$1[0], val, object);\n}\nconst modifyPath = curry(modifyPathFn);\n\nfunction modulo(x, y) {\n if (arguments.length === 1) return _y => modulo(x, _y);\n return x % y;\n}\n\nfunction moveFn(fromIndex, toIndex, list) {\n if (fromIndex < 0 || toIndex < 0) {\n throw new Error('Rambda.move does not support negative indexes');\n }\n if (fromIndex > list.length - 1 || toIndex > list.length - 1) return list;\n const clone = cloneList(list);\n clone[fromIndex] = list[toIndex];\n clone[toIndex] = list[fromIndex];\n return clone;\n}\nconst move = curry(moveFn);\n\nfunction multiply(x, y) {\n if (arguments.length === 1) return _y => multiply(x, _y);\n return x * y;\n}\n\nfunction negate(x) {\n return -x;\n}\n\nfunction none(predicate, list) {\n if (arguments.length === 1) return _list => none(predicate, _list);\n for (let i = 0; i < list.length; i++) {\n if (predicate(list[i])) return false;\n }\n return true;\n}\n\nfunction not(input) {\n return !input;\n}\n\nfunction objOf(key, value) {\n if (arguments.length === 1) {\n return _value => objOf(key, _value);\n }\n return {\n [key]: value\n };\n}\n\nfunction of(value) {\n return [value];\n}\n\nfunction omit(propsToOmit, obj) {\n if (arguments.length === 1) return _obj => omit(propsToOmit, _obj);\n if (obj === null || obj === undefined) {\n return undefined;\n }\n const propsToOmitValue = createPath(propsToOmit, ',');\n const willReturn = {};\n for (const key in obj) {\n if (!propsToOmitValue.includes(key)) {\n willReturn[key] = obj[key];\n }\n }\n return willReturn;\n}\n\nfunction on(binaryFn, unaryFn, a, b) {\n if (arguments.length === 3) {\n return _b => on(binaryFn, unaryFn, a, _b);\n }\n if (arguments.length === 2) {\n return (_a, _b) => on(binaryFn, unaryFn, _a, _b);\n }\n return binaryFn(unaryFn(a), unaryFn(b));\n}\n\nfunction onceFn(fn, context) {\n let result;\n return function () {\n if (fn) {\n result = fn.apply(context || this, arguments);\n fn = null;\n }\n return result;\n };\n}\nfunction once(fn, context) {\n if (arguments.length === 1) {\n const wrap = onceFn(fn, context);\n return curry(wrap);\n }\n return onceFn(fn, context);\n}\n\nfunction or(a, b) {\n if (arguments.length === 1) return _b => or(a, _b);\n return a || b;\n}\n\nconst Identity = x => ({\n x,\n map: fn => Identity(fn(x))\n});\nfunction overFn(lens, fn, object) {\n return lens(x => Identity(fn(x)))(object).x;\n}\nconst over = curry(overFn);\n\nfunction partial(fn, ...args) {\n const len = fn.length;\n return (...rest) => {\n if (args.length + rest.length >= len) {\n return fn(...args, ...rest);\n }\n return partial(fn, ...[...args, ...rest]);\n };\n}\n\nfunction partialObject(fn, input) {\n return nextInput => fn(mergeDeepRight(nextInput, input));\n}\n\nfunction partitionObject(predicate, iterable) {\n const yes = {};\n const no = {};\n Object.entries(iterable).forEach(([prop, value]) => {\n if (predicate(value, prop)) {\n yes[prop] = value;\n } else {\n no[prop] = value;\n }\n });\n return [yes, no];\n}\nfunction partitionArray(predicate, list, indexed = false) {\n const yes = [];\n const no = [];\n let counter = -1;\n while (counter++ < list.length - 1) {\n if (indexed ? predicate(list[counter], counter) : predicate(list[counter])) {\n yes.push(list[counter]);\n } else {\n no.push(list[counter]);\n }\n }\n return [yes, no];\n}\nfunction partition(predicate, iterable) {\n if (arguments.length === 1) {\n return listHolder => partition(predicate, listHolder);\n }\n if (!isArray(iterable)) return partitionObject(predicate, iterable);\n return partitionArray(predicate, iterable);\n}\n\nfunction pathEqFn(pathToSearch, target, input) {\n return equals(path(pathToSearch, input), target);\n}\nconst pathEq = curry(pathEqFn);\n\nfunction pathOrFn(defaultValue, pathInput, obj) {\n return defaultTo(defaultValue, path(pathInput, obj));\n}\nconst pathOr = curry(pathOrFn);\n\nfunction paths(pathsToSearch, obj) {\n if (arguments.length === 1) {\n return _obj => paths(pathsToSearch, _obj);\n }\n return pathsToSearch.map(singlePath => path(singlePath, obj));\n}\n\nfunction pick(propsToPick, input) {\n if (arguments.length === 1) return _input => pick(propsToPick, _input);\n if (input === null || input === undefined) {\n return undefined;\n }\n const keys = createPath(propsToPick, ',');\n const willReturn = {};\n let counter = 0;\n while (counter < keys.length) {\n if (keys[counter] in input) {\n willReturn[keys[counter]] = input[keys[counter]];\n }\n counter++;\n }\n return willReturn;\n}\n\nfunction pickAll(propsToPick, obj) {\n if (arguments.length === 1) return _obj => pickAll(propsToPick, _obj);\n if (obj === null || obj === undefined) {\n return undefined;\n }\n const keysValue = createPath(propsToPick, ',');\n const willReturn = {};\n let counter = 0;\n while (counter < keysValue.length) {\n if (keysValue[counter] in obj) {\n willReturn[keysValue[counter]] = obj[keysValue[counter]];\n } else {\n willReturn[keysValue[counter]] = undefined;\n }\n counter++;\n }\n return willReturn;\n}\n\nfunction pluck(property, list) {\n if (arguments.length === 1) return _list => pluck(property, _list);\n const willReturn = [];\n map(x => {\n if (x[property] !== undefined) {\n willReturn.push(x[property]);\n }\n }, list);\n return willReturn;\n}\n\nfunction prepend(x, input) {\n if (arguments.length === 1) return _input => prepend(x, _input);\n if (typeof input === 'string') return [x].concat(input.split(''));\n return [x].concat(input);\n}\n\nconst product = reduce(multiply, 1);\n\nfunction propEqFn(propToFind, valueToMatch, obj) {\n if (!obj) return false;\n return equals(valueToMatch, prop(propToFind, obj));\n}\nconst propEq = curry(propEqFn);\n\nfunction propIsFn(targetPrototype, property, obj) {\n return is(targetPrototype, obj[property]);\n}\nconst propIs = curry(propIsFn);\n\nfunction propOrFn(defaultValue, property, obj) {\n if (!obj) return defaultValue;\n return defaultTo(defaultValue, obj[property]);\n}\nconst propOr = curry(propOrFn);\n\nfunction props(propsToPick, obj) {\n if (arguments.length === 1) {\n return _obj => props(propsToPick, _obj);\n }\n if (!isArray(propsToPick)) {\n throw new Error('propsToPick is not a list');\n }\n return mapArray(prop => obj[prop], propsToPick);\n}\n\nfunction propSatisfiesFn(predicate, property, obj) {\n return predicate(prop(property, obj));\n}\nconst propSatisfies = curry(propSatisfiesFn);\n\nfunction range(start, end) {\n if (arguments.length === 1) return _end => range(start, _end);\n if (Number.isNaN(Number(start)) || Number.isNaN(Number(end))) {\n throw new TypeError('Both arguments to range must be numbers');\n }\n if (end < start) return [];\n const len = end - start;\n const willReturn = Array(len);\n for (let i = 0; i < len; i++) {\n willReturn[i] = start + i;\n }\n return willReturn;\n}\n\nfunction reject(predicate, list) {\n if (arguments.length === 1) return _list => reject(predicate, _list);\n return filter(x => !predicate(x), list);\n}\n\nfunction repeat(x, timesToRepeat) {\n if (arguments.length === 1) {\n return _timesToRepeat => repeat(x, _timesToRepeat);\n }\n return Array(timesToRepeat).fill(x);\n}\n\nfunction replaceFn(pattern, replacer, str) {\n return str.replace(pattern, replacer);\n}\nconst replace = curry(replaceFn);\n\nfunction reverse(listOrString) {\n if (typeof listOrString === 'string') {\n return listOrString.split('').reverse().join('');\n }\n const clone = listOrString.slice();\n return clone.reverse();\n}\n\nfunction setFn(lens, replacer, x) {\n return over(lens, always(replacer), x);\n}\nconst set = curry(setFn);\n\nfunction sliceFn(from, to, list) {\n return list.slice(from, to);\n}\nconst slice = curry(sliceFn);\n\nfunction sort(sortFn, list) {\n if (arguments.length === 1) return _list => sort(sortFn, _list);\n return cloneList(list).sort(sortFn);\n}\n\nfunction sortBy(sortFn, list) {\n if (arguments.length === 1) return _list => sortBy(sortFn, _list);\n const clone = cloneList(list);\n return clone.sort((a, b) => {\n const aSortResult = sortFn(a);\n const bSortResult = sortFn(b);\n if (aSortResult === bSortResult) return 0;\n return aSortResult < bSortResult ? -1 : 1;\n });\n}\n\nfunction split(separator, str) {\n if (arguments.length === 1) return _str => split(separator, _str);\n return str.split(separator);\n}\n\nfunction maybe(ifRule, whenIf, whenElse) {\n const whenIfInput = ifRule && type(whenIf) === 'Function' ? whenIf() : whenIf;\n const whenElseInput = !ifRule && type(whenElse) === 'Function' ? whenElse() : whenElse;\n return ifRule ? whenIfInput : whenElseInput;\n}\n\nfunction take(howMany, listOrString) {\n if (arguments.length === 1) return _listOrString => take(howMany, _listOrString);\n if (howMany < 0) return listOrString.slice();\n if (typeof listOrString === 'string') return listOrString.slice(0, howMany);\n return baseSlice(listOrString, 0, howMany);\n}\n\nfunction splitAt(index, input) {\n if (arguments.length === 1) {\n return _list => splitAt(index, _list);\n }\n if (!input) throw new TypeError(`Cannot read property 'slice' of ${input}`);\n if (!isArray(input) && typeof input !== 'string') return [[], []];\n const correctIndex = maybe(index < 0, input.length + index < 0 ? 0 : input.length + index, index);\n return [take(correctIndex, input), drop(correctIndex, input)];\n}\n\nfunction splitEvery(sliceLength, listOrString) {\n if (arguments.length === 1) {\n return _listOrString => splitEvery(sliceLength, _listOrString);\n }\n if (sliceLength < 1) {\n throw new Error('First argument to splitEvery must be a positive integer');\n }\n const willReturn = [];\n let counter = 0;\n while (counter < listOrString.length) {\n willReturn.push(listOrString.slice(counter, counter += sliceLength));\n }\n return willReturn;\n}\n\nfunction splitWhen(predicate, input) {\n if (arguments.length === 1) {\n return _input => splitWhen(predicate, _input);\n }\n if (!input) throw new TypeError(`Cannot read property 'length' of ${input}`);\n const preFound = [];\n const postFound = [];\n let found = false;\n let counter = -1;\n while (counter++ < input.length - 1) {\n if (found) {\n postFound.push(input[counter]);\n } else if (predicate(input[counter])) {\n postFound.push(input[counter]);\n found = true;\n } else {\n preFound.push(input[counter]);\n }\n }\n return [preFound, postFound];\n}\n\nfunction startsWith(target, iterable) {\n if (arguments.length === 1) return _iterable => startsWith(target, _iterable);\n if (typeof iterable === 'string') {\n return iterable.startsWith(target);\n }\n if (!isArray(target)) return false;\n let correct = true;\n const filtered = target.filter((x, index) => {\n if (!correct) return false;\n const result = equals(x, iterable[index]);\n if (!result) correct = false;\n return result;\n });\n return filtered.length === target.length;\n}\n\nfunction subtract(a, b) {\n if (arguments.length === 1) return _b => subtract(a, _b);\n return a - b;\n}\n\nfunction symmetricDifference(x, y) {\n if (arguments.length === 1) {\n return _y => symmetricDifference(x, _y);\n }\n return concat(filter(value => !includes(value, y), x), filter(value => !includes(value, x), y));\n}\n\nfunction T() {\n return true;\n}\n\nfunction tail(listOrString) {\n return drop(1, listOrString);\n}\n\nfunction takeLast(howMany, listOrString) {\n if (arguments.length === 1) return _listOrString => takeLast(howMany, _listOrString);\n const len = listOrString.length;\n if (howMany < 0) return listOrString.slice();\n let numValue = howMany > len ? len : howMany;\n if (typeof listOrString === 'string') return listOrString.slice(len - numValue);\n numValue = len - numValue;\n return baseSlice(listOrString, numValue, len);\n}\n\nfunction takeLastWhile(predicate, input) {\n if (arguments.length === 1) {\n return _input => takeLastWhile(predicate, _input);\n }\n if (input.length === 0) return input;\n let found = false;\n const toReturn = [];\n let counter = input.length;\n while (!found || counter === 0) {\n counter--;\n if (predicate(input[counter]) === false) {\n found = true;\n } else if (!found) {\n toReturn.push(input[counter]);\n }\n }\n return isArray(input) ? toReturn.reverse() : toReturn.reverse().join('');\n}\n\nfunction takeWhile(predicate, iterable) {\n if (arguments.length === 1) {\n return _iterable => takeWhile(predicate, _iterable);\n }\n const isArray$1 = isArray(iterable);\n if (!isArray$1 && typeof iterable !== 'string') {\n throw new Error('`iterable` is neither list nor a string');\n }\n let flag = true;\n const holder = [];\n let counter = -1;\n while (counter++ < iterable.length - 1) {\n if (!predicate(iterable[counter])) {\n if (flag) flag = false;\n } else if (flag) {\n holder.push(iterable[counter]);\n }\n }\n return isArray$1 ? holder : holder.join('');\n}\n\nfunction tap(fn, x) {\n if (arguments.length === 1) return _x => tap(fn, _x);\n fn(x);\n return x;\n}\n\nfunction test(pattern, str) {\n if (arguments.length === 1) return _str => test(pattern, _str);\n if (typeof pattern === 'string') {\n throw new TypeError(`\u2018test\u2019 requires a value of type RegExp as its first argument; received \"${pattern}\"`);\n }\n return str.search(pattern) !== -1;\n}\n\nfunction times(fn, howMany) {\n if (arguments.length === 1) return _howMany => times(fn, _howMany);\n if (!isInteger(howMany) || howMany < 0) {\n throw new RangeError('n must be an integer');\n }\n return map(fn, range(0, howMany));\n}\n\nfunction toLower(str) {\n return str.toLowerCase();\n}\n\nfunction toPairs(obj) {\n return Object.entries(obj);\n}\n\nfunction toString(x) {\n return x.toString();\n}\n\nfunction toUpper(str) {\n return str.toUpperCase();\n}\n\nfunction transpose(array) {\n return array.reduce((acc, el) => {\n el.forEach((nestedEl, i) => isArray(acc[i]) ? acc[i].push(nestedEl) : acc.push([nestedEl]));\n return acc;\n }, []);\n}\n\nfunction trim(str) {\n return str.trim();\n}\n\nconst isFunction = x => ['Promise', 'Function'].includes(type(x));\nfunction tryCatch(fn, fallback) {\n if (!isFunction(fn)) {\n throw new Error(`R.tryCatch | fn '${fn}'`);\n }\n const passFallback = isFunction(fallback);\n return (...inputs) => {\n try {\n return fn(...inputs);\n } catch (e) {\n return passFallback ? fallback(e, ...inputs) : fallback;\n }\n };\n}\n\nfunction unapply(fn) {\n return function (...args) {\n return fn.call(this, args);\n };\n}\n\nfunction union(x, y) {\n if (arguments.length === 1) return _y => union(x, _y);\n const toReturn = cloneList(x);\n y.forEach(yInstance => {\n if (!includes(yInstance, x)) toReturn.push(yInstance);\n });\n return toReturn;\n}\n\nfunction uniqBy(fn, list) {\n if (arguments.length === 1) {\n return _list => uniqBy(fn, _list);\n }\n const set = new Set();\n return list.filter(item => {\n if (set.has(fn(item))) return false;\n set.add(fn(item));\n return true;\n });\n}\n\nfunction includesWith(predicate, target, list) {\n let willReturn = false;\n let index = -1;\n while (++index < list.length && !willReturn) {\n const value = list[index];\n if (predicate(target, value)) {\n willReturn = true;\n }\n }\n return willReturn;\n}\nfunction uniqWith(predicate, list) {\n if (arguments.length === 1) return _list => uniqWith(predicate, _list);\n let index = -1;\n const willReturn = [];\n while (++index < list.length) {\n const value = list[index];\n if (!includesWith(predicate, value, willReturn)) {\n willReturn.push(value);\n }\n }\n return willReturn;\n}\n\nfunction unless(predicate, whenFalse) {\n if (arguments.length === 1) {\n return _whenFalse => unless(predicate, _whenFalse);\n }\n return input => predicate(input) ? input : whenFalse(input);\n}\n\nfunction unwind(property, obj) {\n if (arguments.length === 1) {\n return _obj => unwind(property, _obj);\n }\n if (!isArray(obj[property])) return [obj];\n return mapArray(x => _objectSpread2(_objectSpread2({}, obj), {}, {\n [property]: x\n }), obj[property]);\n}\n\nfunction values(obj) {\n if (type(obj) !== 'Object') return [];\n return Object.values(obj);\n}\n\nconst Const = x => ({\n x,\n map: fn => Const(x)\n});\nfunction view(lens, target) {\n if (arguments.length === 1) return _target => view(lens, _target);\n return lens(Const)(target).x;\n}\n\nfunction whenFn(predicate, whenTrueFn, input) {\n if (!predicate(input)) return input;\n return whenTrueFn(input);\n}\nconst when = curry(whenFn);\n\nfunction where(conditions, input) {\n if (input === undefined) {\n return _input => where(conditions, _input);\n }\n let flag = true;\n for (const prop in conditions) {\n if (!flag) continue;\n const result = conditions[prop](input[prop]);\n if (flag && result === false) {\n flag = false;\n }\n }\n return flag;\n}\n\nfunction whereAny(conditions, input) {\n if (input === undefined) {\n return _input => whereAny(conditions, _input);\n }\n for (const prop in conditions) {\n if (conditions[prop](input[prop])) {\n return true;\n }\n }\n return false;\n}\n\nfunction whereEq(condition, input) {\n if (arguments.length === 1) {\n return _input => whereEq(condition, _input);\n }\n const result = filter((conditionValue, conditionProp) => equals(conditionValue, input[conditionProp]), condition);\n return Object.keys(result).length === Object.keys(condition).length;\n}\n\nfunction without(matchAgainst, source) {\n if (source === undefined) {\n return _source => without(matchAgainst, _source);\n }\n return reduce((prev, current) => _indexOf(current, matchAgainst) > -1 ? prev : prev.concat(current), [], source);\n}\n\nfunction xor(a, b) {\n if (arguments.length === 1) return _b => xor(a, _b);\n return Boolean(a) && !b || Boolean(b) && !a;\n}\n\nfunction zip(left, right) {\n if (arguments.length === 1) return _right => zip(left, _right);\n const result = [];\n const length = Math.min(left.length, right.length);\n for (let i = 0; i < length; i++) {\n result[i] = [left[i], right[i]];\n }\n return result;\n}\n\nfunction zipObj(keys, values) {\n if (arguments.length === 1) return yHolder => zipObj(keys, yHolder);\n return take(values.length, keys).reduce((prev, xInstance, i) => {\n prev[xInstance] = values[i];\n return prev;\n }, {});\n}\n\nfunction zipWithFn(fn, x, y) {\n return take(x.length > y.length ? y.length : x.length, x).map((xInstance, i) => fn(xInstance, y[i]));\n}\nconst zipWith = curry(zipWithFn);\n\nexport { F, T, __findHighestArity, _arity, _indexOf, _lastIndexOf, _pipe, add, adjust, all, allPass, always, and, any, anyPass, append, apply, applySpec, assoc, assocPath, bind, both, chain, clamp, clone, complement, compose, concat, cond, converge, count, countBy, curry, curryN, dec, defaultTo, difference, dissoc, divide, drop, dropLast, dropLastWhile, dropRepeats, dropRepeatsWith, dropWhile, either, endsWith, eqProps, equals, evolve, evolveArray, evolveObject, filter, filterArray, filterObject, find, findIndex, findLast, findLastIndex, flatten, flip, forEach, fromPairs, groupBy, groupWith, has, hasPath, head, identical, identity, ifElse, inc, includes, indexBy, indexOf, init, intersection, intersperse, is, isEmpty, isNil, join, juxt, keys, last, lastIndexOf, length, lens, lensIndex, lensPath, lensProp, map, mapArray, mapObjIndexed, mapObject, match, mathMod, max, maxBy, maxByFn, mean, median, mergeRight as merge, mergeAll, mergeDeepRight, mergeLeft, mergeRight, mergeWith, min, minBy, minByFn, modify, modifyPath, modifyPathFn, modulo, move, multiply, negate, none, not, nth, objOf, of, omit, on, once, or, over, partial, partialObject, partition, partitionArray, partitionObject, path, pathEq, pathOr, paths, pick, pickAll, pipe, pluck, prepend, product, prop, propEq, propIs, propOr, propSatisfies, props, range, reduce, reduceFn, reduceStopper, reject, repeat, replace, reverse, set, slice, sort, sortBy, split, splitAt, splitEvery, splitWhen, startsWith, subtract, sum, symmetricDifference, tail, take, takeLast, takeLastWhile, takeWhile, tap, test, times, toLower, toPairs, toString, toUpper, transpose, trim, tryCatch, type, unapply, union, uniq, uniqBy, uniqWith, unless, unwind, update, updateFn, values, view, when, where, whereAny, whereEq, without, xor, zip, zipObj, zipWith };\n","import { range } from \"rambda/dist/rambda.mjs\";\nimport { freeStringPtr } from \"../utils/string-pointers.js\";\nimport { trimNull } from \"../utils/trim-null.js\";\nimport { structBufferToObject } from \"../utils/structure-buffer-to-object.js\";\nimport { sizeofStruct } from \"../utils/native-sizes.js\";\nimport { uint2String } from \"../utils/text-encoders.js\";\nimport { CS_MIDIDEVICE } from \"../structures.js\";\n\nexport const csoundSetMidiCallbacks = (wasm) => (csound /* CsoundInst */) => {\n wasm.exports.csoundSetMidiCallbacks(csound);\n};\n\n/**\n * This function can be called to obtain a list of available input or output midi devices.\n * If list is NULL, the function will only return the number of devices\n * (isOutput=1 for out devices, 0 for in devices).\n * @function\n */\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport const csoundGetMIDIDevList = (wasm) => (csound /* CsoundInst */, isOutput /* number */) => {\n const { buffer } = wasm.wasi.memory;\n const numberOfDevices = wasm.exports.csoundGetMIDIDevList(csound, undefined, isOutput ? 1 : 0);\n if (numberOfDevices === 0) return [];\n const structLength = sizeofStruct(CS_MIDIDEVICE);\n const structOffset = wasm.exports.allocCsMidiDeviceStruct(numberOfDevices);\n wasm.exports.csoundGetMIDIDevList(csound, structOffset, isOutput ? 1 : 0);\n const structBuffer = new Uint8Array(buffer, structOffset, structLength * numberOfDevices);\n /** @type CS_MIDIDEVICE */\n const out = range(0, numberOfDevices).map((index) =>\n structBufferToObject(CS_MIDIDEVICE, structBuffer.subarray(index * structLength, structLength)),\n );\n wasm.exports.freeCsMidiDeviceStruct(structOffset);\n return out;\n};\n\ncsoundGetMIDIDevList.toString = () => \"getMIDIDevList = async (isOutput) => Object;\";\n\n/**\n * This function can be called to obtain a list of available input or output midi devices.\n * If list is NULL, the function will only return the number of devices\n * (isOutput=1 for out devices, 0 for in devices).\n * @function\n */\nexport const csoundGetRtMidiName = (wasm) => (csound /* CsoundInst */) => {\n const { buffer } = wasm.wasi.memory;\n const ptr = wasm.exports.getRtMidiName(csound);\n const stringBuffer = new Uint8Array(buffer, ptr, 128);\n return trimNull(uint2String(stringBuffer)) || \"\";\n};\n\ncsoundGetRtMidiName.toString = () => \"getRtMidiName = async () => String;\";\n\nexport const csoundGetMidiOutFileName = (wasm) => (csound /* CsoundInst */) => {\n const { buffer } = wasm.wasi.memory;\n const ptr = wasm.exports.getMidiOutFileName(csound);\n const stringBuffer = new Uint8Array(buffer, ptr, 128);\n ptr && ptr.length > 0 && freeStringPtr(wasm, ptr);\n return trimNull(uint2String(stringBuffer)) || \"\";\n};\n\nexport const _isRequestingRtMidiInput = (wasm) => (csound /* CsoundInst */) => {\n return wasm.exports.isRequestingRtMidiInput(csound);\n};\n\n/**\n * Emit a midi message with a given triplet of values\n * in the range of 0 to 127.\n * @function\n */\nexport const csoundPushMidiMessage =\n (wasm) =>\n (csound /* CsoundInst */, status /* number */, data1 /* number */, data2 /* number */) => {\n wasm.exports.pushMidiMessage(csound, status, data1, data2);\n };\n\ncsoundPushMidiMessage.toString = () => \"midiMessage = async (status, data1, data2) => undefined;\";\n\n// PUBLIC void \tcsoundSetMIDIModule (CSOUND *csound, const char *module)\n// PUBLIC void \tcsoundSetHostImplementedMIDIIO (CSOUND *csound, int state)\n// PUBLIC int \tcsoundGetMIDIDevList (CSOUND *csound, CS_MIDIDEVICE *list, int isOutput)\n// PUBLIC void \tcsoundSetExternalMidiInOpenCallback (CSOUND *, int(*func)(CSOUND *, void **userData, const char *devName))\n// PUBLIC void \tcsoundSetExternalMidiReadCallback (CSOUND *, int(*func)(CSOUND *, void *userData, unsigned char *buf, int nBytes))\n// PUBLIC void \tcsoundSetExternalMidiInCloseCallback (CSOUND *, int(*func)(CSOUND *, void *userData))\n// PUBLIC void \tcsoundSetExternalMidiOutOpenCallback (CSOUND *, int(*func)(CSOUND *, void **userData, const char *devName))\n// PUBLIC void \tcsoundSetExternalMidiWriteCallback (CSOUND *, int(*func)(CSOUND *, void *userData, const unsigned char *buf, int nBytes))\n// PUBLIC void \tcsoundSetExternalMidiOutCloseCallback (CSOUND *, int(*func)(CSOUND *, void *userData))\n// PUBLIC void \tcsoundSetExternalMidiErrorStringCallback (CSOUND *, const char *(*func)(int))\n// PUBLIC void \tcsoundSetMIDIDeviceListCallback (CSOUND *csound, int(*mididevlist__)(CSOUND *, CS_MIDIDEVICE *list, int isOutput))\n","import { freeStringPtr, ptr2string, string2ptr } from \"../utils/string-pointers.js\";\n\n/*\n csound control-events module from <csound.h>\n https://csound.com/docs/api/modules.html\n*/\n\n/**\n * Inputs an immediate score event\n * without any pre-process parsing\n * @async\n * @function\n * @name inputMessage\n * @memberof CsoundObj\n * @param {string} scoreEvent\n * @return {Promise.<number>}\n */\nexport const csoundInputMessage = (wasm) => (csound, scoEvent) => {\n const stringPtr = string2ptr(wasm, scoEvent);\n const result = wasm.exports.csoundInputMessage(csound, stringPtr);\n freeStringPtr(wasm, stringPtr);\n return result;\n};\n\ncsoundInputMessage.toString = () => \"inputMessage = async (scoreEvent) => Number;\";\n\n/**\n * Inputs an immediate score event\n * without any pre-process parsing\n * @async\n * @function\n * @name inputMessageAsync\n * @memberof CsoundObj\n * @param {string} scoreEvent\n * @return {Promise.<number>}\n */\nexport const csoundInputMessageAsync = (wasm) => (csound, scoEvent) => {\n const stringPtr = string2ptr(wasm, scoEvent);\n const result = wasm.exports.csoundInputMessageAsync(csound, stringPtr);\n freeStringPtr(wasm, stringPtr);\n return result;\n};\n\ncsoundInputMessageAsync.toString = () => \"inputMessageAsync = async (scoreEvent) => Number;\";\n\n/**\n * Retrieves the value of control channel identified by channelName.\n * If the err argument is not NULL, the error (or success) code finding\n * or accessing the channel is stored in it.\n * @async\n * @function\n * @name getControlChannel\n * @memberof CsoundObj\n * @param {string} channelName\n * @return {Promise.<undefined>}\n */\nexport const csoundGetControlChannel = (wasm) => (csound, channelName) => {\n const stringPtr = string2ptr(wasm, channelName);\n const result = wasm.exports.csoundGetControlChannelWasi(csound, stringPtr);\n freeStringPtr(wasm, stringPtr);\n return result;\n};\n\ncsoundGetControlChannel.toString = () => \"getControlChannel = async (channelName) => Number;\";\n\n/**\n * Sets the value of control channel identified by channelName\n * @async\n * @function\n * @name setControlChannel\n * @memberof CsoundObj\n * @param {string} channelName\n * @param {number} value\n * @return {Promise.<undefined>}\n */\nexport const csoundSetControlChannel = (wasm) => (csound, channelName, value) => {\n const stringPtr = string2ptr(wasm, channelName);\n wasm.exports.csoundSetControlChannel(csound, stringPtr, value);\n freeStringPtr(wasm, stringPtr);\n};\n\ncsoundSetControlChannel.toString = () => \"setControlChannel = async (channelName, value) => void;\";\n\n/**\n * Retrieves the string channel identified by channelName\n * @async\n * @function\n * @name getStringChannel\n * @memberof CsoundObj\n * @param {string} channelName\n * @return {Promise.<undefined>}\n */\nexport const csoundGetStringChannel = (wasm) => (csound, channelName) => {\n const stringPtr = string2ptr(wasm, channelName);\n const pointerToResult = wasm.exports.csoundGetStringChannelWasi(csound, stringPtr);\n const result = ptr2string(wasm, pointerToResult);\n\n freeStringPtr(wasm, stringPtr);\n freeStringPtr(wasm, pointerToResult);\n return result;\n};\n\ncsoundGetStringChannel.toString = () => \"getStringChannel = async (channelName) => String;\";\n\n/**\n * Sets the string channel value identified by channelName\n * @async\n * @function\n * @name setStringChannel\n * @memberof CsoundObj\n * @param {string} channelName\n * @param {string} value\n * @return {Promise.<undefined>}\n */\nexport const csoundSetStringChannel = (wasm) => (csound, channelName, value) => {\n const stringPtr = string2ptr(wasm, channelName);\n const stringPtr2 = string2ptr(wasm, value);\n wasm.exports.csoundSetStringChannel(csound, stringPtr, stringPtr2);\n freeStringPtr(wasm, stringPtr);\n freeStringPtr(wasm, stringPtr2);\n};\n\ncsoundSetStringChannel.toString = () => \"setStringChannel = async (channelName, value) => void;\";\n\n// csoundGetChannelPtr (CSOUND *, MYFLT **p, const char *name, int type)\n// csoundListChannels (CSOUND *, controlChannelInfo_t **lst)\n// csoundDeleteChannelList (CSOUND *, controlChannelInfo_t *lst)\n// csoundSetControlChannelHints (CSOUND *, const char *name, controlChannelHints_t hints)\n// csoundGetControlChannelHints (CSOUND *, const char *name, controlChannelHints_t *hints)\n// csoundGetChannelLock (CSOUND *, const char *name)\n// csoundSetControlChannel (CSOUND *csound, const char *name, MYFLT val)\n// csoundGetChannelDatasize (CSOUND *csound, const char *name)\n// csoundSetInputChannelCallback (CSOUND *csound, channelCallback_t inputChannelCalback)\n// csoundSetOutputChannelCallback (CSOUND *csound, channelCallback_t outputChannelCalback)\n// csoundSetPvsChannel (CSOUND *, const PVSDATEXT *fin, const char *name)\n// csoundGetPvsChannel (CSOUND *csound, PVSDATEXT *fout, const char *name)\n// csoundScoreEvent (CSOUND *, char type, const MYFLT *pFields, long numFields)\n// csoundScoreEventAsync (CSOUND *, char type, const MYFLT *pFields, long numFields)\n// csoundScoreEventAbsolute (CSOUND *, char type, const MYFLT *pfields, long numFields, double time_ofs)\n// csoundScoreEventAbsoluteAsync (CSOUND *, char type, const MYFLT *pfields, long numFields, double time_ofs)\n// csoundKillInstance (CSOUND *csound, MYFLT instr, char *instrName, int mode, int allow_release)\n// csoundRegisterSenseEventCallback (CSOUND *, void(*func)(CSOUND *, void *), void *userData)\n// csoundKeyPress (CSOUND *, char c)\n// csoundRegisterKeyboardCallback (CSOUND *, int(*func)(void *userData, void *p, unsigned int type), void *userData, unsigned int type)\n// csoundRemoveKeyboardCallback (CSOUND *csound, int(*func)(void *, void *, unsigned int))\n","import { uint2String } from \"../utils/text-encoders.js\";\nimport { trimNull } from \"../utils/trim-null.js\";\n\n/*\n csound general i/o module from <csound.h>\n https://csound.com/docs/api/modules.html\n*/\n\n/**\n * Returns the audio output name (-o)\n * @function\n * @name getOutputName\n * @memberof CsoundObj\n * @return {Promise.<string>}\n */\nexport const csoundGetOutputName = (wasm) => (csound) => {\n const { buffer } = wasm.wasi.memory;\n const ptr = wasm.exports.csoundGetOutputName(csound);\n const stringBuffer = new Uint8Array(buffer, ptr, 64);\n return trimNull(uint2String(stringBuffer)) || \"\";\n};\n\ncsoundGetOutputName.toString = () => \"getOutputName = async () => String;\";\n\n/**\n * Returns the audio input name (-i)\n * @function\n * @name getInputName\n * @memberof CsoundObj\n * @return {Promise.<string>}\n */\nexport const csoundGetInputName = (wasm) => (csound) => {\n const { buffer } = wasm.wasi.memory;\n const ptr = wasm.exports.csoundGetInputName(csound);\n const stringBuffer = new Uint8Array(buffer, ptr, 64);\n return trimNull(uint2String(stringBuffer)) || \"\";\n};\n\ncsoundGetInputName.toString = () => \"getInputName = async (csound) => String;\";\n\n// PUBLIC void \tcsoundSetOutput (CSOUND *csound, const char *name, const char *type, const char *format)\n// PUBLIC void \tcsoundGetOutputFormat (CSOUND *csound, char *type, char *format)\n// PUBLIC void \tcsoundSetInput (CSOUND *csound, const char *name)\n// PUBLIC void \tcsoundSetMIDIInput (CSOUND *csound, const char *name)\n// PUBLIC void \tcsoundSetMIDIFileInput (CSOUND *csound, const char *name)\n// PUBLIC void \tcsoundSetMIDIOutput (CSOUND *csound, const char *name)\n// PUBLIC void \tcsoundSetMIDIFileOutput (CSOUND *csound, const char *name)\n// PUBLIC void \tcsoundSetFileOpenCallback (CSOUND *p, void(*func)(CSOUND *, const char *, int, int, int))\n","/* eslint-disable unicorn/prevent-abbreviations */\nimport { freeStringPtr, string2ptr } from \"../utils/string-pointers.js\";\n\n/**\n * Append 'value' to environment variable 'name'\n * added for internal usage of csound-wasm, feel\n * free to use as well ;)\n */\nexport const csoundAppendEnv = (wasm) => (csound, variable, value) => {\n const varStringPtr = string2ptr(wasm, variable);\n const valueStringPtr = string2ptr(wasm, value);\n const res = wasm.exports.csoundAppendEnv(csound, varStringPtr, valueStringPtr);\n freeStringPtr(wasm, varStringPtr);\n freeStringPtr(wasm, valueStringPtr);\n return res;\n};\n\ncsoundAppendEnv.toString = () => \"appendEnv = async (csound, variable, value) => Number;\";\n\n// deliberately no jsdocs because this is internal only\nexport const csoundShouldDaemonize = (wasm) => (csound) =>\n wasm.exports.csoundShouldDaemonize(csound);\n","import { freeStringPtr, string2ptr } from \"../utils/string-pointers.js\";\n/*\n csound Score Handling module from <csound.h>\n https://csound.com/docs/api/modules.html\n*/\n\n/**\n * Sees whether Csound score events are performed or not,\n * independently of real-time MIDI events\n * @function\n */\nexport const csoundIsScorePending = (wasm) => (csound /* CsoundInst */) =>\n wasm.exports.csoundIsScorePending(csound);\n\ncsoundIsScorePending.toString = () => \"isScorePending = async () => Number;\";\n\n/**\n * Sets whether Csound score events are performed or not\n * (real-time events will continue to be performed).\n * Can be used by external software, such as a VST host,\n * to turn off performance of score events (while continuing to perform real-time events),\n * for example to mute a Csound score while working on other tracks of a piece,\n * or to play the Csound instruments live.\n * @function\n */\nexport const csoundSetScorePending = (wasm) => (csound /* CsoundInst */, pending /* number */) =>\n wasm.exports.csoundSetScorePending(csound, pending);\n\ncsoundSetScorePending.toString = () => \"setScorePending = async (pending) => Number;\";\n\n/**\n * Read, preprocess, and load a score from an ASCII string It can be called repeatedly,\n * with the new score events being added to the currently scheduled ones.\n * @function\n */\nexport const csoundReadScore = (wasm) => (csound /* CsoundInst */, score /* string */) => {\n const stringPtr = string2ptr(wasm, score);\n const result = wasm.exports.csoundReadScore(csound, stringPtr);\n freeStringPtr(wasm, stringPtr);\n return result;\n};\n\ncsoundReadScore.toString = () => \"readScore = async (score) => Number;\";\n\n/**\n * Returns the current score time in seconds since the beginning of performance.\n * @function\n */\nexport const csoundGetScoreTime = (wasm) => (csound /* CsoundInst */) =>\n wasm.exports.csoundGetScoreTime(csound);\n\ncsoundGetScoreTime.toString = () => \"getScoreTime = async () => Number;\";\n\n/**\n * Returns the score time beginning at which score events will actually immediately be performed\n * @function\n */\nexport const csoundGetScoreOffsetSeconds = (wasm) => (csound /* CsoundInst */) =>\n wasm.exports.csoundGetScoreOffsetSeconds(csound);\n\ncsoundGetScoreOffsetSeconds.toString = () => \"getScoreOffsetSeconds = async () => Number;\";\n\n/**\n * Csound score events prior to the specified time are not performed,\n * and performance begins immediately at the specified time\n * (real-time events will continue to be performed as they are received).\n * Can be used by external software, such as a VST host, to begin\n * score performance midway through a Csound score,\n * for example to repeat a loop in a sequencer,\n * or to synchronize other events with the Csound score.\n * @function\n */\nexport const csoundSetScoreOffsetSeconds = (wasm) => (csound /* CsoundInst */, time /* string */) =>\n wasm.exports.csoundSetScoreOffsetSeconds(csound, time);\n\ncsoundSetScoreOffsetSeconds.toString = () => \"setScoreOffsetSeconds = async () => Number;\";\n\n/**\n * Rewinds a compiled Csound score to the time specified with csoundObj.setScoreOffsetSeconds().\n * @function\n */\nexport const csoundRewindScore = (wasm) => (csound) =>\n wasm.exports.csoundRewindScore(csound /* CsoundInst */);\n\ncsoundRewindScore.toString = () => \"rewindScore = async () => undefined;\";\n\n// PUBLIC void \tcsoundSetCscoreCallback (CSOUND *, void(*cscoreCallback_)(CSOUND *))\n// PUBLIC int \tcsoundScoreSort (CSOUND *, FILE *inFile, FILE *outFile)\n// PUBLIC int \tcsoundScoreExtract (CSOUND *, FILE *inFile, FILE *outFile, FILE *extractFile)\n","/* eslint-disable unicorn/prevent-abbreviations */\nimport { uint2String } from \"../utils/text-encoders.js\";\n/*\n csound table module from <csound.h>\n https://csound.com/docs/api/group___t_a_b_l_e.html\n*/\n\n/**\n * Returns the length of a function table\n * (not including the guard point),\n * or -1 if the table does not exist.\n * @function\n */\nexport const csoundTableLength = (wasm) => (csound /* CsoundInst */, tableNumber /* string */) =>\n wasm.exports.csoundTableLength(csound, tableNumber);\n\ncsoundTableLength.toString = () => \"tableLength = async (tableNum) => Number;\";\n\n/**\n * Returns the value of a slot in a function table.\n * The table number and index are assumed to be valid.\n * @function\n */\nexport const csoundTableGet =\n (wasm) => (csound /* CsoundInst */, tableNumber /* string */, tableIndex /* string */) =>\n wasm.exports.csoundTableGet(csound, tableNumber, tableIndex);\n\ncsoundTableGet.toString = () => \"tableGet = async (tableNum, tableIndex) => Number;\";\n\n/**\n * Sets the value of a slot in a function table.\n * The table number and index are assumed to be valid.\n * @function\n */\nexport const csoundTableSet =\n (wasm) =>\n (\n csound /* CsoundInst */,\n tableNumber /* string */,\n tableIndex /* string */,\n value /* string */,\n ) =>\n wasm.exports.csoundTableSet(csound, tableNumber, tableIndex, value);\n\ncsoundTableSet.toString = () => \"tableSet = async (tableNum, tableIndex, value) => undefined;\";\n\n/**\n * Copy the contents of an Array or TypedArray from javascript into a given csound function table.\n * The table number is assumed to be valid, and the table needs to have sufficient space\n * to receive all the array contents.\n * The table number and index are assumed to be valid.\n */\nexport const csoundTableCopyIn =\n (wasm) => (csound /* CsoundInst */, tableNumber /* string */, array /* ArrayLike<number> */) => {\n const arrayPtr = wasm.exports.allocFloatArray(array.length);\n const buffer = new Float64Array(wasm.wasi.memory.buffer, arrayPtr, array.length);\n buffer.set(array);\n wasm.exports.csoundTableCopyIn(csound, tableNumber, arrayPtr);\n wasm.exports.freeFloatArrayMem(arrayPtr);\n };\n\ncsoundTableCopyIn.toString = () => \"tableCopyIn = async (tableNum, float64Array) => undefined;\";\n\n/**\n * Copies the contents of a function table from csound into Float64Array.\n * The function returns a Float64Array if the table exists, otherwise\n * it returns undefined.\n * @function\n */\nexport const csoundTableCopyOut = (wasm) => (csound /* CsoundInst */, tableNumber /* string */) => {\n const tableLength = wasm.exports.csoundTableLength(csound, tableNumber);\n if (tableLength > 0) {\n const arrayPtr = wasm.exports.allocFloatArray(tableLength);\n wasm.exports.csoundTableCopyOut(csound, tableNumber, arrayPtr);\n const { buffer } = wasm.wasi.memory;\n const jsArray = new Float64Array(buffer, arrayPtr, tableLength);\n wasm.exports.freeFloatArrayMem(arrayPtr);\n return Float64Array.from(jsArray);\n }\n};\n\ncsoundTableCopyOut.toString = () => \"tableCopyOut = async (tableNum) => ?Float64Array;\";\n\n/**\n * @name getTable\n * @alias csoundTableCopyOut\n * @async\n * @function\n */\nexport const csoundGetTable = csoundTableCopyOut;\ncsoundGetTable.toString = csoundTableCopyOut.toString;\n\n/**\n * Copies the contents of a function table from csound into Float64Array.\n * The function returns a Float64Array if the table exists, otherwise\n * it returns undefined.\n */\nexport const csoundGetTableArgs = (wasm) => (csound /* CsoundInst */, tableNumber /* string */) => {\n const arrayPtr = wasm.exports.allocFloatArray(1024);\n wasm.exports.csoundGetTableArgs(csound, arrayPtr, tableNumber);\n const { buffer } = wasm.wasi.memory;\n const jsArray = new Float64Array(buffer, arrayPtr, 1024);\n wasm.exports.freeFloatArrayMem(arrayPtr);\n return jsArray;\n};\n\ncsoundGetTableArgs.toString = () => \"getTableArgs = async (tableNum) => ?Float64Array;\";\n\n/**\n * Checks if a given GEN number num is a named GEN if so,\n * it returns the string length (excluding terminating NULL char).\n * Otherwise it returns 0.\n */\nexport const csoundIsNamedGEN = (wasm) => (csound /* CsoundInst */, tableNumber /* string */) =>\n wasm.exports.csoundIsNamedGEN(csound, tableNumber);\n\ncsoundIsNamedGEN.toString = () => \"isNamedGEN = async (tableNum) => number;\";\n\n/**\n * Gets the GEN name from a number num, if this is a named GEN.\n * If the table number doesn't represent a named GEN, it will\n * return undefined.\n */\nexport const csoundGetNamedGEN = (wasm) => (csound /* CsoundInst */, tableNumber /* string */) => {\n const stringLength = wasm.exports.csoundIsNamedGEN(csound, tableNumber);\n if (stringLength > 0) {\n const offset = wasm.exports.allocStringMem(stringLength);\n wasm.exports.csoundGetNamedGEN(csound, offset, tableNumber, stringLength);\n const { buffer } = wasm.wasi.memory;\n const stringBuffer = new Uint8Array(buffer, offset, stringLength);\n const result = uint2String(stringBuffer);\n return result;\n }\n};\n\ncsoundGetNamedGEN.toString = () => \"getNamedGEN = async (tableNum) => ?string;\";\n","import { encoder } from \"../utils/text-encoders.js\";\n\nexport function writeFile(wasm) {\n return (_, path, data_) => {\n const data = typeof data_ === \"string\" ? encoder.encode(data_) : data_;\n wasm.wasi.writeFile(path, data);\n };\n}\n\nwriteFile.toString = () => \"async (path, data) => void\";\n\nexport function appendFile(wasm) {\n return (_, path, data_) => {\n const data = typeof data_ === \"string\" ? encoder.encode(data_) : data_;\n wasm.wasi.appendFile(path, data);\n };\n}\n\nappendFile.toString = () => \"async (path, data) => void\";\n\nexport function readFile(wasm) {\n return (_, path) => {\n return wasm.wasi.readFile(path);\n };\n}\n\nreadFile.toString = () => \"async (path) => ?Uint8Array\";\n\nexport function unlink(wasm) {\n return (_, path) => {\n return wasm.wasi.unlink(path);\n };\n}\n\nunlink.toString = () => \"async (path) => void\";\n\nexport function readdir(wasm) {\n return (_, path) => wasm.wasi.readdir(path);\n}\n\nreaddir.toString = () => \"async (path) => string[]\";\n\nexport function mkdir(wasm) {\n return (_, path) => {\n return wasm.wasi.mkdir(path);\n };\n}\n\nmkdir.toString = () => \"async (path) => void\";\n","import {\n csoundCreate,\n csoundDestroy,\n csoundGetAPIVersion,\n csoundGetVersion,\n csoundInitialize,\n} from \"./modules/instantiation\";\nimport {\n csoundParseOrc,\n csoundCompileTree,\n csoundCompileOrc,\n csoundEvalCode,\n csoundStart,\n csoundCompileCsd,\n csoundCompileCsdText,\n csoundPerform,\n csoundPerformKsmps,\n csoundPerformBuffer,\n csoundStop,\n csoundCleanup,\n csoundReset,\n} from \"./modules/performance\";\nimport {\n csoundGetSr,\n csoundGetKr,\n csoundGetKsmps,\n csoundGetNchnls,\n csoundGetNchnlsInput,\n csoundGet0dBFS,\n csoundGetA4,\n csoundGetCurrentTimeSamples,\n csoundGetSizeOfMYFLT,\n csoundSetOption,\n csoundSetParams as csoundSetParameters,\n csoundGetParams as csoundGetParameters,\n csoundGetDebug,\n csoundSetDebug,\n} from \"./modules/attributes\";\nimport {\n csoundGetInputBufferSize,\n csoundGetOutputBufferSize,\n csoundGetInputBuffer,\n csoundGetOutputBuffer,\n csoundGetSpin,\n csoundGetSpout,\n} from \"./modules/rtaudio\";\nimport {\n csoundGetMIDIDevList as csoundGetMIDIDevelopmentList,\n csoundSetMidiCallbacks,\n csoundGetRtMidiName,\n csoundGetMidiOutFileName,\n csoundPushMidiMessage,\n _isRequestingRtMidiInput,\n} from \"./modules/rtmidi\";\nimport {\n csoundInputMessage,\n csoundInputMessageAsync,\n csoundGetControlChannel,\n csoundSetControlChannel,\n csoundGetStringChannel,\n csoundSetStringChannel,\n} from \"./modules/control-events\";\nimport { csoundGetInputName, csoundGetOutputName } from \"./modules/general-io\";\nimport { csoundAppendEnv as csoundAppendEnvironment, csoundShouldDaemonize } from \"./modules/extra\";\nimport {\n csoundIsScorePending,\n csoundSetScorePending,\n csoundReadScore,\n csoundGetScoreTime,\n csoundGetScoreOffsetSeconds,\n csoundSetScoreOffsetSeconds,\n csoundRewindScore,\n} from \"./modules/score-handling\";\nimport {\n csoundTableLength,\n csoundTableGet,\n csoundTableSet,\n csoundTableCopyIn,\n csoundTableCopyOut,\n csoundGetTable,\n csoundGetTableArgs as csoundGetTableArguments,\n csoundIsNamedGEN,\n csoundGetNamedGEN,\n} from \"./modules/table\";\nimport * as fs from \"./filesystem/worker-fs\";\n\nimport { assoc, dissoc, keys, mergeAll, reduce } from \"rambda/dist/rambda.mjs\";\n\ngoog.declareModuleId(\"libcsound\");\n\n/*\n Don't call these functions directly.\n They are closures that take wasm instance as\n first argument before they can be called as\n documented.\n*/\nexport const api = {\n // @module/instantiation\n csoundCreate,\n csoundDestroy,\n csoundGetAPIVersion,\n csoundGetVersion,\n csoundInitialize,\n // @module/performance\n csoundParseOrc,\n csoundCompileTree,\n csoundCompileOrc,\n csoundEvalCode,\n csoundStart,\n csoundCompileCsd,\n csoundCompileCsdText,\n csoundPerform,\n csoundPerformKsmps,\n csoundPerformBuffer,\n csoundStop,\n csoundCleanup,\n csoundReset,\n // @module/attributes\n csoundGetSr,\n csoundGetKr,\n csoundGetKsmps,\n csoundGetNchnls,\n csoundGetNchnlsInput,\n csoundGet0dBFS,\n csoundGetA4,\n csoundGetCurrentTimeSamples,\n csoundGetSizeOfMYFLT,\n csoundSetOption,\n csoundSetParams: csoundSetParameters,\n csoundGetParams: csoundGetParameters,\n csoundGetDebug,\n csoundSetDebug,\n // @module/rtaudio\n csoundGetInputBufferSize,\n csoundGetOutputBufferSize,\n csoundGetInputBuffer,\n csoundGetOutputBuffer,\n csoundGetSpin,\n csoundGetSpout,\n // @module/rtmidi\n csoundGetMIDIDevList: csoundGetMIDIDevelopmentList,\n csoundSetMidiCallbacks,\n csoundGetRtMidiName,\n csoundGetMidiOutFileName,\n csoundPushMidiMessage,\n _isRequestingRtMidiInput,\n // @module/control_events\n csoundInputMessage,\n csoundInputMessageAsync,\n csoundGetControlChannel,\n csoundSetControlChannel,\n csoundGetStringChannel,\n csoundSetStringChannel,\n // @module/general_io\n csoundGetInputName,\n csoundGetOutputName,\n // @module/extra\n csoundAppendEnv: csoundAppendEnvironment,\n csoundShouldDaemonize,\n // @module/score-handling\n csoundIsScorePending,\n csoundSetScorePending,\n csoundReadScore,\n csoundGetScoreTime,\n csoundGetScoreOffsetSeconds,\n csoundSetScoreOffsetSeconds,\n csoundRewindScore,\n // @module/table\n csoundTableLength,\n csoundTableGet,\n csoundTableSet,\n csoundTableCopyIn,\n csoundTableCopyOut,\n csoundGetTable,\n csoundGetTableArgs: csoundGetTableArguments,\n csoundIsNamedGEN,\n csoundGetNamedGEN,\n // filesystem\n fs,\n};\n\nexport default function (wasm) {\n return mergeAll([\n reduce((accumulator, k) => assoc(k, api[k](wasm), accumulator), {}, keys(dissoc(\"fs\")(api))),\n reduce((accumulator, k) => assoc(k, api.fs[k](wasm), accumulator), {}, keys(fs)),\n ]);\n}\n","export const appendBuffers = (buffer1, buffer2) => {\n const temporary = new Uint8Array(buffer1.byteLength + buffer2.byteLength);\n temporary.set(new Uint8Array(buffer1), 0);\n temporary.set(new Uint8Array(buffer2), buffer1.byteLength);\n return temporary.buffer;\n};\n\nexport const nearestPowerOf2 = (n) => {\n return 1 << (31 - Math.clz32(n));\n};\n\nexport const isIos = () => /iPhone|iPad|iPod/.test(navigator.userAgent);\n\nconst isFirefox = () => navigator.userAgent.toLowerCase().includes(\"firefox\");\n\nexport const isSafari = () =>\n typeof navigator.vendor === \"string\" && navigator.vendor.includes(\"Apple\");\n\nexport const isSabSupported = () =>\n !isFirefox() && window && window.Atomics !== undefined && window.SharedArrayBuffer !== undefined;\n\nexport const areWorkletsSupported = () => AudioNode !== undefined && AudioWorkletNode !== undefined;\n\nexport const WebkitAudioContext = () => {\n if (window.webkitAudioContext !== undefined) {\n return window.webkitAudioContext;\n } else if (window.AudioContext !== undefined) {\n return window.AudioContext;\n }\n};\n\nexport const isScriptProcessorNodeSupported = () => {\n const audioContext = WebkitAudioContext();\n return audioContext !== undefined && audioContext.prototype.createScriptProcessor !== undefined;\n};\n\nexport const csoundApiRename = (apiName) => {\n let minusCsound = apiName.replace(/^csound/i, \"\");\n if (apiName === \"csoundPushMidiMessage\") {\n minusCsound = \"midiMessage\";\n }\n return minusCsound.charAt(0).toLowerCase() + minusCsound.slice(1);\n};\n\nexport const stopableStates = new Set([\n \"realtimePerformanceStarted\",\n \"realtimePerformancePaused\",\n \"realtimePerformanceResumed\",\n \"renderStarted\",\n]);\n\nexport const makeProxyCallback =\n (proxyPort, csoundInstance, apiK, playState) =>\n async (...arguments_) => {\n if (!playState || !stopableStates.has(playState)) {\n const modifiedFs = {}; // getModifiedPersistentStorage();\n Object.values(modifiedFs).length > 0 &&\n (await proxyPort.callUncloned(\"syncWorkerFs\", [csoundInstance, modifiedFs]));\n }\n return await proxyPort.callUncloned(apiK, [csoundInstance, ...arguments_]);\n };\n\nexport const makeSingleThreadCallback =\n (csoundInstance, apiCallback) =>\n async (...arguments_) => {\n return await apiCallback.apply({}, [csoundInstance, ...arguments_]);\n };\n\nexport const fetchPlugins = async (withPlugins) => {\n return await Promise.all(\n withPlugins.map(async (url) => {\n const response = await fetch(url);\n return response.arrayBuffer();\n }),\n );\n};\n","// exec log-event: msg => cb(msg)\nexport const messageEventHandler = (worker) => (event) => {\n if (event.data.log) {\n if (worker && worker.publicEvents && worker.publicEvents.triggerMessage) {\n worker.publicEvents.triggerMessage(event.data.log);\n } else {\n // in case of errors, this can happen\n // in which case, it's good to see the log\n console.log(\n typeof event.data.log === \"object\" && typeof event.data.log.log === \"string\"\n ? event.data.log.log\n : event.data.log,\n );\n }\n } else if (event.data.playStateChange && worker && worker.onPlayStateChange) {\n worker.onPlayStateChange(event.data.playStateChange);\n }\n};\n\nconst iterableMessageChannel = () => {\n const { port1, port2 } = new MessageChannel();\n return [port1, port2];\n};\n\nconst safelyClosePorts = ([p1, p2]) => {\n if (p1.close !== undefined) {\n try {\n p1.close();\n // eslint-disable unicorn/prefer-optional-catch-binding\n } catch (_) {}\n }\n if (p2.close !== undefined) {\n try {\n p2.close();\n // eslint-disable unicorn/prefer-optional-catch-binding\n } catch (_) {}\n }\n};\n\nexport class IPCMessagePorts {\n constructor() {\n const { port1: mainMessagePort, port2: workerMessagePort } = new MessageChannel();\n this.mainMessagePort = mainMessagePort;\n this.workerMessagePort = workerMessagePort;\n const { port1: mainMessagePortAudio, port2: workerMessagePortAudio } = new MessageChannel();\n this.mainMessagePortAudio = mainMessagePortAudio;\n this.workerMessagePortAudio = workerMessagePortAudio;\n const { port1: csoundWorkerFrameRequestPort, port2: audioWorkerFrameRequestPort } =\n new MessageChannel();\n this.csoundWorkerFrameRequestPort = csoundWorkerFrameRequestPort;\n this.audioWorkerFrameRequestPort = audioWorkerFrameRequestPort;\n const { port1: csoundWorkerAudioInputPort, port2: audioWorkerAudioInputPort } =\n new MessageChannel();\n this.csoundWorkerAudioInputPort = csoundWorkerAudioInputPort;\n this.audioWorkerAudioInputPort = audioWorkerAudioInputPort;\n const { port1: csoundWorkerRtMidiPort, port2: csoundMainRtMidiPort } = new MessageChannel();\n this.csoundWorkerRtMidiPort = csoundWorkerRtMidiPort;\n this.csoundMainRtMidiPort = csoundMainRtMidiPort;\n\n const { port1: sabWorkerCallbackReply, port2: sabMainCallbackReply } = new MessageChannel();\n this.sabWorkerCallbackReply = sabWorkerCallbackReply;\n this.sabMainCallbackReply = sabMainCallbackReply;\n\n // old-spn worker-port\n const { port1: mainMessagePort2, port2: workerMessagePort2 } = new MessageChannel();\n this.mainMessagePort2 = mainMessagePort2;\n this.workerMessagePort2 = workerMessagePort2;\n\n this.restartAudioWorkerPorts = this.restartAudioWorkerPorts.bind(this);\n }\n\n restartAudioWorkerPorts() {\n safelyClosePorts([this.csoundWorkerAudioInputPort, this.audioWorkerAudioInputPort]);\n [this.csoundWorkerAudioInputPort, this.audioWorkerAudioInputPort] = iterableMessageChannel();\n\n safelyClosePorts([this.mainMessagePortAudio, this.workerMessagePortAudio]);\n [this.mainMessagePortAudio, this.workerMessagePortAudio] = iterableMessageChannel();\n\n safelyClosePorts([this.csoundWorkerFrameRequestPort, this.audioWorkerFrameRequestPort]);\n [this.csoundWorkerFrameRequestPort, this.audioWorkerFrameRequestPort] =\n iterableMessageChannel();\n\n safelyClosePorts([this.mainMessagePort2, this.workerMessagePort2]);\n [this.mainMessagePort2, this.workerMessagePort2] = iterableMessageChannel();\n }\n}\n","export function clearArray(array) {\n while (array.length > 0) {\n array.pop();\n }\n}\n","// utilities which declutter\n// promises which hold back releases\n// of certain async events\n// for internal usecases only\nimport { equals, reject } from \"rambda/dist/rambda.mjs\";\nimport { clearArray } from \"./clear-array\";\n\nexport class EventPromises {\n constructor() {\n this.timeoutTimers = [];\n\n this.startPromise = undefined;\n this.startResolver = undefined;\n\n this.stopPromise = undefined;\n this.stopResolver = undefined;\n\n this.pausePromise = undefined;\n this.pauseResolver = undefined;\n\n this.resumePromise = undefined;\n this.resumeResolver = undefined;\n\n this.createStartPromise = this.createStartPromise.bind(this);\n this.releaseStartPromise = this.releaseStartPromise.bind(this);\n\n this.createStopPromise = this.createStopPromise.bind(this);\n this.releaseStopPromise = this.releaseStopPromise.bind(this);\n\n this.createPausePromise = this.createPausePromise.bind(this);\n this.releasePausePromise = this.releasePausePromise.bind(this);\n\n this.createResumePromise = this.createResumePromise.bind(this);\n this.releaseResumePromise = this.releaseResumePromise.bind(this);\n\n this.waitForStart = this.waitForStart.bind(this);\n this.waitForStop = this.waitForStop.bind(this);\n\n this.isWaitingToStart = this.isWaitingToStart.bind(this);\n this.isWaitingToStop = this.isWaitingToStop.bind(this);\n }\n\n isWaitingToStart() {\n return this.startPromise !== undefined;\n }\n\n isWaitingToStop() {\n return this.stopPromise !== undefined;\n }\n\n isWaiting(eventAsking) {\n if (this.startPromise !== undefined) {\n console.error(`cannot ${eventAsking} while starting, did you forget to 'await'?`);\n return true;\n }\n\n if (this.stopPromise !== undefined) {\n console.error(`cannot ${eventAsking} while stopping, did you forget to 'await'?`);\n return true;\n }\n\n if (this.pausePromise !== undefined) {\n console.error(`cannot ${eventAsking} while pausing, did you forget to 'await'?`);\n return true;\n }\n\n if (this.resumePromise !== undefined) {\n console.error(`cannot ${eventAsking} while resuming, did you forget to 'await'?`);\n return true;\n }\n\n return false;\n }\n\n async waitForStart() {\n return this.startPromise ? await this.startPromise : -1;\n }\n\n async waitForStop() {\n return this.stopPromise ?? -1;\n }\n\n async waitForPause() {\n return this.pausePromise ?? -1;\n }\n\n async waitForResume() {\n return this.resumePromise ?? -1;\n }\n\n createStartPromise() {\n if (!this.startPromise) {\n this.startPromise = new Promise((resolve) => {\n this.startResolver = resolve;\n const timer = setTimeout(() => {\n this.timeoutTimers = reject(equals(timer), this.timeoutTimers);\n if (this.startPromise) {\n console.warn(\"start promise timed out\");\n this.startResolver();\n delete this.startResolver;\n this.startPromise && delete this.startPromise;\n }\n }, 2000);\n this.timeoutTimers.push(timer);\n });\n }\n }\n\n releaseStartPromise() {\n // first timer cleanup\n try {\n this.timeoutTimers.forEach(clearTimeout);\n clearArray(this.timeoutTimers);\n } catch (error) {\n console.error(error);\n }\n // then resolve\n if (this.startResolver) {\n this.startResolver();\n delete this.startResolver;\n }\n if (this.startPromise) {\n delete this.startPromise;\n }\n }\n\n createStopPromise() {\n if (!this.stopPromise) {\n this.stopPromise = new Promise((resolve) => {\n this.stopResolver = resolve;\n const timer = setTimeout(() => {\n this.timeoutTimers = reject(equals(timer), this.timeoutTimers);\n if (this.stopPromise) {\n console.warn(\"stop promise timed out\");\n this.stopResolver();\n delete this.stopResolver;\n this.stopPromise && delete this.stopPromise;\n }\n }, 2000);\n this.timeoutTimers.push(timer);\n });\n }\n }\n\n releaseStopPromise() {\n // first timer cleanup\n try {\n this.timeoutTimers.forEach(clearTimeout);\n clearArray(this.timeoutTimers);\n } catch (error) {\n console.error(error);\n }\n // then resolve\n if (this.stopResolver) {\n this.stopResolver();\n delete this.stopResolver;\n }\n if (this.stopPromise) {\n delete this.stopPromise;\n }\n }\n\n createPausePromise() {\n if (!this.pausePromise) {\n this.pausePromise = new Promise((resolve) => {\n this.pauseResolver = resolve;\n const timer = setTimeout(() => {\n this.timeoutTimers = reject(equals(timer), this.timeoutTimers);\n if (this.pausePromise) {\n console.warn(\"pause promise timed out\");\n this.pauseResolver();\n delete this.pauseResolver;\n this.pausePromise && delete this.pausePromise;\n }\n }, 2000);\n this.timeoutTimers.push(timer);\n });\n }\n }\n\n releasePausePromise() {\n // first timer cleanup\n try {\n this.timeoutTimers.forEach(clearTimeout);\n clearArray(this.timeoutTimers);\n } catch (error) {\n console.error(error);\n }\n // then resolve\n if (this.pauseResolver) {\n this.pauseResolver();\n delete this.pauseResolver;\n }\n if (this.pausePromise) {\n delete this.pausePromise;\n }\n }\n\n createResumePromise() {\n if (!this.resumePromise) {\n this.resumePromise = new Promise((resolve) => {\n this.resumeResolver = resolve;\n const timer = setTimeout(() => {\n this.timeoutTimers = reject(equals(timer), this.timeoutTimers);\n if (this.resumePromise) {\n console.warn(\"resume promise timed out\");\n this.resumeResolver();\n delete this.resumeResolver;\n this.resumePromise && delete this.resumePromise;\n }\n }, 2000);\n this.timeoutTimers.push(timer);\n });\n }\n }\n\n releaseResumePromise() {\n // first timer cleanup\n try {\n this.timeoutTimers.forEach(clearTimeout);\n clearArray(this.timeoutTimers);\n } catch (error) {\n console.error(error);\n }\n // then resolve\n if (this.resumeResolver) {\n this.resumeResolver();\n delete this.resumeResolver;\n }\n if (this.resumePromise) {\n delete this.resumePromise;\n }\n }\n}\n","!function(e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).EventEmitter3=e()}(function(){return function i(s,f,c){function u(t,e){if(!f[t]){if(!s[t]){var n=\"function\"==typeof require&&require;if(!e&&n)return n(t,!0);if(a)return a(t,!0);var r=new Error(\"Cannot find module '\"+t+\"'\");throw r.code=\"MODULE_NOT_FOUND\",r}var o=f[t]={exports:{}};s[t][0].call(o.exports,function(e){return u(s[t][1][e]||e)},o,o.exports,i,s,f,c)}return f[t].exports}for(var a=\"function\"==typeof require&&require,e=0;e<c.length;e++)u(c[e]);return u}({1:[function(e,t,n){\"use strict\";var r=Object.prototype.hasOwnProperty,v=\"~\";function o(){}function f(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function i(e,t,n,r,o){if(\"function\"!=typeof n)throw new TypeError(\"The listener must be a function\");var i=new f(n,r||e,o),s=v?v+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],i]:e._events[s].push(i):(e._events[s]=i,e._eventsCount++),e}function u(e,t){0==--e._eventsCount?e._events=new o:delete e._events[t]}function s(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),(new o).__proto__||(v=!1)),s.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;for(t in e=this._events)r.call(e,t)&&n.push(v?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},s.prototype.listeners=function(e){var t=v?v+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,o=n.length,i=new Array(o);r<o;r++)i[r]=n[r].fn;return i},s.prototype.listenerCount=function(e){var t=v?v+e:e,n=this._events[t];return n?n.fn?1:n.length:0},s.prototype.emit=function(e,t,n,r,o,i){var s=v?v+e:e;if(!this._events[s])return!1;var f,c=this._events[s],u=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),u){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,r),!0;case 5:return c.fn.call(c.context,t,n,r,o),!0;case 6:return c.fn.call(c.context,t,n,r,o,i),!0}for(p=1,f=new Array(u-1);p<u;p++)f[p-1]=arguments[p];c.fn.apply(c.context,f)}else for(var a,l=c.length,p=0;p<l;p++)switch(c[p].once&&this.removeListener(e,c[p].fn,void 0,!0),u){case 1:c[p].fn.call(c[p].context);break;case 2:c[p].fn.call(c[p].context,t);break;case 3:c[p].fn.call(c[p].context,t,n);break;case 4:c[p].fn.call(c[p].context,t,n,r);break;default:if(!f)for(a=1,f=new Array(u-1);a<u;a++)f[a-1]=arguments[a];c[p].fn.apply(c[p].context,f)}return!0},s.prototype.on=function(e,t,n){return i(this,e,t,n,!1)},s.prototype.once=function(e,t,n){return i(this,e,t,n,!0)},s.prototype.removeListener=function(e,t,n,r){var o=v?v+e:e;if(!this._events[o])return this;if(!t)return u(this,o),this;var i=this._events[o];if(i.fn)i.fn!==t||r&&!i.once||n&&i.context!==n||u(this,o);else{for(var s=0,f=[],c=i.length;s<c;s++)(i[s].fn!==t||r&&!i[s].once||n&&i[s].context!==n)&&f.push(i[s]);f.length?this._events[o]=1===f.length?f[0]:f:u(this,o)}return this},s.prototype.removeAllListeners=function(e){var t;return e?(t=v?v+e:e,this._events[t]&&u(this,t)):(this._events=new o,this._eventsCount=0),this},s.prototype.off=s.prototype.removeListener,s.prototype.addListener=s.prototype.on,s.prefixed=v,s.EventEmitter=s,void 0!==t&&(t.exports=s)},{}]},{},[1])(1)});","import EE3 from \"eventemitter3/umd/eventemitter3.min.js\";\n\n/**\n * @template PublicEvents\n * @readonly\n * @enum {number}\n * @property {string} \"play\" called anytime performance goes from pause/stop to a running state.\n * @property {string} \"pause\" called after any successful csound.pause() calls.\n * @property {string} \"stop\" called after end of performance or after a successful csound.stop().\n * @property {string} \"realtimePerformanceStarted\" called at the start of realtime performance but not on resume or render.\n * @property {string} \"realtimePerformancePaused\" only called if csound.pause() was successfully called during performance.\n * @property {string} \"realtimePerformanceResumed\" only called if csound.resume() was successfully called after a pause.\n * @property {string} \"realtimePerformanceEnded\" called after end of performance or after a successful csound.stop().\n * @property {string} \"renderStarted\" called at the start of offline/non-realtime render to disk.\n * @property {string} \"renderEnded\" called at the end of offline/non-realtime render to disk.\n * @property {string} \"onAudioNodeCreated\" called when an audioNode is created from the AudioContext before realtime performance.\n * the event callback will include the audioNode itself, which is needed if autoConnect is set to false.\n * @property {string} \"message\" the main entrypoint to csound's messaging (-m) system,\n * a default event listener will print the message to the browser console, this default\n * listener can be removed by the user.\n * @suppress {misplacedTypeAnnotation}\n */\n\nexport class PublicEventAPI {\n constructor(parent) {\n this.parent = parent;\n this.eventEmitter = new EE3();\n this.currentDerivedPlayState = undefined;\n this.decorateAPI = this.decorateAPI.bind(this);\n this.triggerRealtimePerformanceStarted = this.triggerRealtimePerformanceStarted.bind(this);\n this.triggerRealtimePerformancePaused = this.triggerRealtimePerformancePaused.bind(this);\n this.triggerRealtimePerformanceResumed = this.triggerRealtimePerformanceResumed.bind(this);\n this.triggerRealtimePerformanceEnded = this.triggerRealtimePerformanceEnded.bind(this);\n this.triggerRenderStarted = this.triggerRenderStarted.bind(this);\n this.triggerRenderEnded = this.triggerRenderEnded.bind(this);\n this.triggerOnAudioNodeCreated = this.triggerOnAudioNodeCreated.bind(this);\n this.terminateInstance = this.terminateInstance.bind(this);\n }\n\n terminateInstance() {\n this.eventEmitter.removeAllListeners([\n \"play\",\n \"pause\",\n \"stop\",\n \"realtimePerformanceStarted\",\n \"realtimePerformancePaused\",\n \"realtimePerformanceResumed\",\n \"realtimePerformanceEnded\",\n \"renderStarted\",\n \"renderEnded\",\n \"onAudioNodeCreated\",\n \"message\",\n ]);\n Object.keys(this).forEach((key) => delete this[key]);\n }\n\n triggerRealtimePerformanceStarted() {\n this.eventEmitter.emit(\"realtimePerformanceStarted\");\n if (this.currentDerivedPlayState !== \"play\") {\n this.eventEmitter.emit(\"play\");\n this.currentDerivedPlayState = \"play\";\n }\n }\n\n triggerRealtimePerformancePaused() {\n this.eventEmitter.emit(\"realtimePerformancePaused\");\n if (this.currentDerivedPlayState !== \"pause\") {\n this.eventEmitter.emit(\"pause\");\n this.currentDerivedPlayState = \"pause\";\n }\n }\n\n triggerRealtimePerformanceResumed() {\n this.eventEmitter.emit(\"realtimePerformanceResumed\");\n if (this.currentDerivedPlayState !== \"play\") {\n this.eventEmitter.emit(\"play\");\n this.currentDerivedPlayState = \"play\";\n }\n }\n\n triggerRealtimePerformanceEnded() {\n this.eventEmitter.emit(\"realtimePerformanceEnded\");\n if (this.currentDerivedPlayState !== \"stop\") {\n this.eventEmitter.emit(\"stop\");\n this.currentDerivedPlayState = \"stop\";\n }\n }\n\n triggerRenderStarted() {\n this.eventEmitter.emit(\"renderStarted\");\n if (this.currentDerivedPlayState !== \"stop\") {\n this.eventEmitter.emit(\"stop\");\n this.currentDerivedPlayState = \"stop\";\n }\n }\n\n triggerRenderEnded() {\n this.eventEmitter.emit(\"renderEnded\");\n if (this.currentDerivedPlayState !== \"stop\") {\n this.eventEmitter.emit(\"stop\");\n this.currentDerivedPlayState = \"stop\";\n }\n }\n\n triggerOnAudioNodeCreated(audioNode) {\n this.eventEmitter.emit(\"onAudioNodeCreated\", audioNode);\n }\n\n triggerMessage({ log }) {\n this.eventEmitter.emit(\"message\", log);\n }\n\n decorateAPI(exportApi) {\n /**\n * Returns an array listing the events for which the emitter has registered listeners.\n * The values in the array are strings.\n * @function\n * @name eventNames\n * @memberof CsoundObj\n * @return {Array<string>}\n */\n exportApi.eventNames = this.eventEmitter.eventNames.bind(this.eventEmitter);\n /**\n * Returns the number of listeners listening to the event named eventName.\n * @function\n * @name listenerCount\n * @memberof CsoundObj\n * @return {number}\n */\n exportApi.listenerCount = this.eventEmitter.listenerCount.bind(this.eventEmitter);\n /**\n * Returns a copy of the array of listeners for the event named eventName.\n * @function\n * @name listeners\n * @memberof CsoundObj\n * @param {PublicEvents} eventName\n * @return {Array.<function()>}\n */\n exportApi.listeners = this.eventEmitter.listeners.bind(this.eventEmitter);\n /**\n * Alias for removeListener()\n * @function\n * @name off\n * @memberof CsoundObj\n * @param {PublicEvents} eventName\n * @param {function()} listener\n * @return {EventEmitter}\n */\n exportApi.off = this.eventEmitter.off.bind(this.eventEmitter);\n /**\n * Adds the listener function to the end of the listeners array for the event named eventName.\n * No checks are made to see if the listener has already been added.\n * Multiple calls passing the same combination of eventName and listener\n * will result in the listener being added, and called, multiple times.\n * @function\n * @name on\n * @memberof CsoundObj\n * @param {PublicEvents} eventName\n * @param {function()} listener\n * @return {EventEmitter}\n */\n exportApi.on = this.eventEmitter.on.bind(this.eventEmitter);\n /**\n * Alias for \"on\"\n * @function\n * @name addListener\n * @memberof CsoundObj\n * @param {PublicEvents} eventName\n * @param {function()} listener\n * @return {EventEmitter}\n */\n exportApi.addListener = this.eventEmitter.on.bind(this.eventEmitter);\n /**\n * Adds a one-time listener function for the event named eventName.\n * The next time eventName is triggered, this listener is removed and then invoked.\n * @function\n * @name once\n * @memberof CsoundObj\n * @param {PublicEvents} eventName\n * @param {function()} listener\n * @return {EventEmitter}\n */\n exportApi.once = this.eventEmitter.once.bind(this.eventEmitter);\n /**\n * Removes all listeners, or those of the specified eventName.\n * It is bad practice to remove listeners added elsewhere in the code,\n * particularly when the EventEmitter instance was created by some other\n * component or module.\n * Returns a reference to the EventEmitter, so that calls can be chained.\n * @function\n * @name removeAllListeners\n * @memberof CsoundObj\n * @param {PublicEvents} eventName\n * @return {EventEmitter}\n */\n exportApi.removeAllListeners = this.eventEmitter.removeAllListeners.bind(this.eventEmitter);\n /**\n * Removes the specified listener from the listener array for the event named eventName.\n * removeListener() will remove, at most, one instance of a listener from the listener array.\n * If any single listener has been added multiple times to the listener array for the specified eventName,\n * then removeListener() must be called multiple times to remove each instance.\n * Removes the specified listener from the listener array for the event named eventName.\n * @function\n * @name removeListener\n * @memberof CsoundObj\n * @param {PublicEvents} eventName\n * @param {function()} listener\n * @return {EventEmitter}\n */\n exportApi.removeListener = this.eventEmitter.removeListener.bind(this.eventEmitter);\n return exportApi;\n }\n}\n","export default () => (window.URL || window.webkitURL).createObjectURL(new Blob([\"(function(){/*\\n\\n Copyright The Closure Library Authors.\\n SPDX-License-Identifier: Apache-2.0\\n*/\\nvar $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(\\\".\\\");d=d||goog.global;a[0]in d||\\\"undefined\\\"==typeof d.execScript||d.execScript(\\\"var \\\"+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};\\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE=\\\"en\\\";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error(\\\"goog.provide cannot be used within a module.\\\");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace \\\"'+a+'\\\" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(\\\".\\\")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\\\\w+/_-]+[=]{0,2}$/;\\ngoog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector(\\\"script[nonce]\\\"))&&(a=a.nonce||a.getAttribute(\\\"nonce\\\"))&&goog.NONCE_PATTERN_.test(a)?a:\\\"\\\"};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\\ngoog.module=function(a){if(\\\"string\\\"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error(\\\"Invalid module identifier\\\");if(!goog.isInGoogModuleLoader_())throw Error(\\\"Module \\\"+a+\\\" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.\\\");if(goog.moduleLoaderState_.moduleName)throw Error(\\\"goog.module may only be called once per module.\\\");\\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace \\\"'+a+'\\\" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:\\\"es6\\\",GOOG:\\\"goog\\\"};goog.moduleLoaderState_=null;\\ngoog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?\\\"function\\\"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error(\\\"goog.module.declareLegacyNamespace must be called from within a goog.module\\\");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error(\\\"goog.module must be called prior to goog.module.declareLegacyNamespace.\\\");goog.moduleLoaderState_.declareLegacyNamespace=!0};\\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error(\\\"goog.declareModuleId may only be called from within an ES6 module\\\");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error(\\\"goog.declareModuleId may only be called once per module.\\\");if(a in goog.loadedModules_)throw Error('Module with namespace \\\"'+a+'\\\" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||\\\"function\\\"!=typeof b.getCurrentModulePath)throw Error('Module with namespace \\\"'+\\na+'\\\" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||\\\"\\\",Error(\\\"Importing test-only code into non-debug environment\\\"+(a?\\\": \\\"+a:\\\".\\\"));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={\\\"goog.module\\\":!0});\\ngoog.getObjectByName=function(a,b){a=a.split(\\\".\\\");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath=\\\"\\\";goog.abstractMethod=function(){throw Error(\\\"unimplemented abstract method\\\");};\\ngoog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE=\\\"detect\\\";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME=\\\"goog\\\";\\ngoog.hasBadLetScoping=null;\\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:\\\"\\\",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if(\\\"function\\\"===typeof a)d=a.call(void 0,d);else if(\\\"string\\\"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error(\\\"Invalid module definition\\\");var e=goog.moduleLoaderState_.moduleName;if(\\\"string\\\"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&\\nObject.seal&&\\\"object\\\"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name \\\"'+e+'\\\"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split(\\\"/\\\");for(var b=0;b<a.length;)\\\".\\\"==a[b]?a.splice(b,1):b&&\\\"..\\\"==a[b]&&a[b-1]&&\\\"..\\\"!=a[b-1]?a.splice(--b,2):b++;return a.join(\\\"/\\\")};\\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open(\\\"get\\\",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return\\\"object\\\"!=b?b:a?Array.isArray(a)?\\\"array\\\":b:\\\"null\\\"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return\\\"array\\\"==b||\\\"object\\\"==b&&\\\"number\\\"==typeof a.length};\\ngoog.isDateLike=function(a){return goog.isObject(a)&&\\\"function\\\"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return\\\"object\\\"==b&&null!=a||\\\"function\\\"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&\\\"removeAttribute\\\"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};\\ngoog.UID_PROPERTY_=\\\"closure_uid_\\\"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if(\\\"object\\\"==b||\\\"array\\\"==b){if(\\\"function\\\"===typeof a.clone)return a.clone();if(\\\"undefined\\\"!==typeof Map&&a instanceof Map)return new Map(a);if(\\\"undefined\\\"!==typeof Set&&a instanceof Set)return new Set(a);b=\\\"array\\\"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\\\"native code\\\")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};\\ngoog.getCssName=function(a,b){if(\\\".\\\"==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with \\\".\\\". You passed: '+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split(\\\"-\\\");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join(\\\"-\\\")};d=goog.cssNameMapping_?\\\"BY_WHOLE\\\"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+\\\"-\\\"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};\\ngoog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,\\\"&lt;\\\"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,\\\"<\\\").replace(/&gt;/g,\\\">\\\").replace(/&apos;/g,\\\"'\\\").replace(/&quot;/g,'\\\"').replace(/&amp;/g,\\\"&\\\"));b&&(a=a.replace(/\\\\{\\\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};\\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error(\\\"goog.scope is not supported within a module.\\\");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error(\\\"cannot instantiate an interface (no constructor defined).\\\");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_=\\\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\\\".split(\\\" \\\");\\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};\\ngoog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};\\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:\\\"\\\").match(/Edge\\\\/(\\\\d+)(\\\\.\\\\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&\\\"write\\\"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?\\\"complete\\\"!=a.readyState:\\\"loading\\\"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&\\\"string\\\"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=\\ngoog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName(\\\"SCRIPT\\\");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf(\\\"?\\\");d=-1==d?c.length:d;if(\\\"base.js\\\"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\\\\/(SCRIPT)/ig,\\\"\\\\\\\\x3c/$1\\\")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=\\n[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error(\\\"Unregonized namespace: \\\"+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},\\ngoog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+\\\"deps.js\\\"),\\\"deps.js\\\",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=\\nfunction(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error(\\\"Bad dependency path or symbol: \\\"+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_(\\\"goog.require could not find: \\\"+a)},goog.DebugLoader_.prototype.loadDeps_=\\nfunction(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error(\\\"Cannot call pause after the call to load.\\\");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error(\\\"Double call to loaded.\\\");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,\\nmoduleName:\\\"\\\",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||\\\"\\\"})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error(\\\"Cannot register with defer after the call to load.\\\");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};\\ntry{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==\\na.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?\\nthis.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=\\nfunction(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf(\\\"://\\\");0<=b&&(a=a.substring(b+3),b=a.indexOf(\\\"/\\\"),0<=b&&(a=a.substring(b+1)));return a},\\ngoog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},\\ngoog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error(\\\"Callback key \\\"+a+\\\" does not exist (was base.js loaded more than once?).\\\");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if(\\\"complete\\\"==\\nb.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write \\\"'+this.path+'\\\" after document load');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&\\\"complete\\\"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?' nonce=\\\"'+c+'\\\"':\\\"\\\";var f='<script src=\\\"'+this.path+'\\\"'+\\nc+(goog.Dependency.defer_?\\\" defer\\\":\\\"\\\")+' id=\\\"script-'+e+'\\\">\\\\x3c/script>';f+=\\\"<script\\\"+c+\\\">\\\";f=goog.Dependency.defer_?f+(\\\"document.getElementById('script-\\\"+e+\\\"').onload = function() {\\\\n goog.Dependency.callback_('\\\"+e+\\\"', this);\\\\n};\\\\n\\\"):f+(\\\"goog.Dependency.callback_('\\\"+e+\\\"', document.getElementById('script-\\\"+e+\\\"'));\\\");f+=\\\"\\\\x3c/script>\\\";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement(\\\"script\\\");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=\\nc);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_(\\\"Cannot use default debug loader outside of HTML documents.\\\"),\\\"deps.js\\\"==this.relativePath?(goog.logToConsole_(\\\"Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true.\\\"),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,\\nb,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,m){var n=\\\"\\\",p=goog.getScriptNonce_();p&&(n=' nonce=\\\"'+p+'\\\"');l=m?'<script type=\\\"module\\\" crossorigin'+n+\\\">\\\"+m+\\\"\\\\x3c/script>\\\":'<script type=\\\"module\\\" crossorigin src=\\\"'+l+'\\\"'+n+\\\">\\\\x3c/script>\\\";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,m){var n=d.createElement(\\\"script\\\");n.defer=!0;n.async=!1;n.type=\\\"module\\\";n.setAttribute(\\\"crossorigin\\\",\\n!0);var p=goog.getScriptNonce_();p&&(n.nonce=p);m?n.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(n)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);\\na.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_(\\\"'+g+'\\\")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from \\\"'+this.path+'\\\"; goog.Dependency.callback_(\\\"'+h+'\\\", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_(\\\"'+\\nk+'\\\")')}else goog.logToConsole_(\\\"Cannot use default debug loader outside of HTML documents.\\\"),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!(\\\"noModule\\\"in goog.global.document.createElement(\\\"script\\\"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=\\ne.transform(e.contents_),e.contents_&&(e.contents_+=\\\"\\\\n//# sourceURL=\\\"+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var l=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(l));if(f)var m=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),m)});a.loaded()}}\\nfunction d(){var l=goog.global.document,m=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(m);c()}),n=goog.getScriptNonce_();n=\\\"<script\\\"+(n?' nonce=\\\"'+n+'\\\"':\\\"\\\")+\\\">\\\"+goog.protectScriptTag_('goog.Dependency.callback_(\\\"'+m+'\\\");')+\\\"\\\\x3c/script>\\\";l.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(n):n)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT(\\\"\\\",this.contents_)?(this.contents_=null,a.loaded()):\\na.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&(\\\"ActiveXObject\\\"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){\\\"interactive\\\"==h.readyState&&(h.onreadystatechange=\\nk,c(),a.resume());\\\"function\\\"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,\\nc,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?\\\"goog.loadModule(\\\"+goog.global.JSON.stringify(a+\\\"\\\\n//# sourceURL=\\\"+this.path+\\\"\\\\n\\\")+\\\");\\\":'goog.loadModule(function(exports) {\\\"use strict\\\";'+a+\\\"\\\\n;return exports});\\\\n//# sourceURL=\\\"+this.path+\\\"\\\\n\\\"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=\\nb||[];a=a.replace(/\\\\\\\\/g,\\\"/\\\");var e=goog.normalizePath_(goog.basePath+a);d&&\\\"boolean\\\"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?\\nnew goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+\\\"#base\\\"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),\\ngoog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy(\\\"goog#base#devonly#eval\\\")||{createScript:goog.identity_}};const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.proxy\\\"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.endpoint\\\"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.releaseProxy\\\"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.thrown\\\"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>\\\"object\\\"===typeof a&&null!==a||\\\"function\\\"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=\\n{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&\\nthrowMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([[\\\"proxy\\\",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],[\\\"throw\\\",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);\\nfunction expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener(\\\"message\\\",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const m=h.slice(0,-1).reduce((p,q)=>p[q],a),n=h.reduce((p,q)=>p[q],a);switch(g){case \\\"GET\\\":var l=n;break;case \\\"SET\\\":m[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);\\nl=!0;break;case \\\"APPLY\\\":l=n.apply(m,k);break;case \\\"CONSTRUCT\\\":const p=new n(...k);l=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case \\\"ENDPOINT\\\":const {port1:q,port2:w}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,w);l=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case \\\"RELEASE\\\":l=void 0;break;default:return}}catch(m){l={value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(l).catch(m=>\\n({value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(m=>{const [n,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(m);b.postMessage(Object.assign(Object.assign({},n),{id:f}),p);\\\"RELEASE\\\"===g&&(b.removeEventListener(\\\"message\\\",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return\\\"MessagePort\\\"===a.constructor.name}\\nfunction closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error(\\\"Proxy has been released and is not useable\\\");}\\nfunction createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"RELEASE\\\",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if(\\\"then\\\"===\\ng){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"GET\\\",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,l]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\\n{type:\\\"SET\\\",path:[...b,g].map(m=>m.toString()),value:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"ENDPOINT\\\"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if(\\\"bind\\\"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\\nb.slice(0,-1));const [k,l]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"APPLY\\\",path:b.map(m=>m.toString()),argumentList:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\\n{type:\\\"CONSTRUCT\\\",path:b.map(l=>l.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}\\nfunction processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}\\nfunction proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c=\\\"*\\\"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}\\nfunction toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:\\\"HANDLER\\\",name:b,value:d},e]}return[{type:\\\"RAW\\\",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}\\nfunction fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case \\\"HANDLER\\\":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case \\\"RAW\\\":return a.value}}\\nfunction requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener(\\\"message\\\",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener(\\\"message\\\",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}\\nfunction generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join(\\\"-\\\")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;\\nmodule$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;\\nmodule$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;\\nMessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};\\nvar LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b=\\\"log_with_warnings\\\"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error(\\\"Invalid log level \\\"+b+\\\" allowed: \\\"+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=\\nfunction(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e=\\\"log_with_warnings\\\"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>\\nmodule$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split(\\\"{}\\\");for(var k=[f.mockConsole,\\\"%c\\\"+b,c],l=0;l<h.length;l++)k.push(h[l]),void 0!==g[l]&&k.push(g[l]);if(h.length-1!==g.length)if(\\\"log_with_warnings\\\"===f.logLevel)f.mockConsole.error(\\\"MissMatch amount of arguments\\\");else if(\\\"log_raise_error\\\"===f.logLevel)throw Error(\\\"MissMatch amount of arguments\\\");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,\\nc){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return\\\"color: white; background-color: \\\"+b+\\\"; padding: 2px 6px; border-radius: 2px; font-size: 10px\\\"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^\\nd>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b=\\\"\\\");b=a.getHash(b);for(var c=\\\"#\\\",d=0;3>d;d++)c+=(\\\"00\\\"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,\\\"trace\\\"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,\\\"debug\\\"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,\\n\\\"info\\\"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,\\\"warn\\\"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,\\\"error\\\")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;\\nconst isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};\\nlogSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;\\nmodule$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;\\nmodule$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const DEFAULT_BUFFER_LEN$$module$src$constants=128,MAX_CHANNELS$$module$src$constants=32,RING_BUFFER_SIZE$$module$src$constants=16384,MIDI_BUFFER_SIZE$$module$src$constants=1024,MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants=3,CALLBACK_DATA_BUFFER_SIZE$$module$src$constants=16384,initialSharedState$$module$src$constants=[0,4096,0,0,0,0,-1,-1,-1,-1,0,DEFAULT_BUFFER_LEN$$module$src$constants,0,0,0,0,0,0,0,0],AUDIO_STATE$$module$src$constants={CSOUND_LOCK:0,FRAMES_REQUESTED:1,IS_PERFORMING:2,IS_RENDERING:3,\\nIS_PAUSED:4,STOP:5,SAMPLE_RATE:6,KSMPS:7,NCHNLS:8,NCHNLS_I:9,IS_REQUESTING_MIC:10,BUFFER_LEN:11,OUTPUT_READ_INDEX:12,OUTPUT_WRITE_INDEX:13,AVAIL_IN_BUFS:14,AVAIL_OUT_BUFS:15,IS_REQUESTING_RTMIDI:16,RTMIDI_INDEX:17,AVAIL_RTMIDI_EVENTS:18,HAS_PENDING_CALLBACKS:19},DATA_TYPE$$module$src$constants={NUMBER:0,STRING:1,FLOAT_32:2,FLOAT_64:3};var module$src$constants={};module$src$constants.AUDIO_STATE=AUDIO_STATE$$module$src$constants;module$src$constants.CALLBACK_DATA_BUFFER_SIZE=CALLBACK_DATA_BUFFER_SIZE$$module$src$constants;\\nmodule$src$constants.DATA_TYPE=DATA_TYPE$$module$src$constants;module$src$constants.DEFAULT_BUFFER_LEN=DEFAULT_BUFFER_LEN$$module$src$constants;module$src$constants.MAX_CHANNELS=MAX_CHANNELS$$module$src$constants;module$src$constants.MIDI_BUFFER_PAYLOAD_SIZE=MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants;module$src$constants.MIDI_BUFFER_SIZE=MIDI_BUFFER_SIZE$$module$src$constants;module$src$constants.RING_BUFFER_SIZE=RING_BUFFER_SIZE$$module$src$constants;module$src$constants.initialSharedState=initialSharedState$$module$src$constants;const handleCsoundStart$$module$src$workers$common_utils=(a,b,c,d,e)=>f=>{const {csound:g}=f,h=1===b.csoundShouldDaemonize(g);h&&(b.csoundSetOption(g,\\\"--daemon\\\"),b.csoundSetOption(g,\\\"-odac\\\"));const k=b.csoundStart(g),l=b.csoundGetOutputName(g)||\\\"test.wav\\\";logCommonUtils$$module$src$logger(`handleCsoundStart: actual csoundStart result ${k}, outputName: ${l}`)();0!==k&&a.post(`error: csoundStart failed while trying to render ${l},`+\\\" look out for errors in options and syntax\\\");setTimeout(()=>{const m=\\nb._isRequestingRtMidiInput(g);if(h||m||l.includes(\\\"dac\\\"))d(f);else if(a.broadcastPlayState(\\\"renderStarted\\\"),e)e(f);else for(;0===b.csoundPerformKsmps(g););},0);return k},instantiateAudioPacket$$module$src$workers$common_utils=(a,b)=>{const c=[];for(let d=0;d<a;d++)c.push(new Float64Array(b));return c},renderFunction$$module$src$workers$common_utils=({libraryCsound:a,workerMessagePort:b})=>async({csound:c})=>{const d=a.csoundGetKr(c);let e=0,f=0;for(;(\\\"renderStarted\\\"===b.vanillaWorkerState||\\\"renderStarted\\\"===\\nb.workerState)&&0===e;)e=a.csoundPerformKsmps(c),f+=1,\\\"function\\\"===typeof setTimeout&&0===e&&0===f%(2*d)&&await new Promise(g=>setTimeout(g,0));b.broadcastPlayState(\\\"renderEnded\\\")};var module$src$workers$common_utils={};module$src$workers$common_utils.handleCsoundStart=handleCsoundStart$$module$src$workers$common_utils;module$src$workers$common_utils.instantiateAudioPacket=instantiateAudioPacket$$module$src$workers$common_utils;module$src$workers$common_utils.renderFunction=renderFunction$$module$src$workers$common_utils;const csoundCreate$$module$src$modules$instantiation=a=>()=>a.exports.csoundCreateWasi();csoundCreate$$module$src$modules$instantiation.toString=()=>\\\"create = async () => undefined;\\\";const csoundDestroy$$module$src$modules$instantiation=a=>b=>a.exports.csoundDestroy(b);csoundDestroy$$module$src$modules$instantiation.toString=()=>\\\"destroy = async () => undefined;\\\";const csoundGetAPIVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetAPIVersion();\\ncsoundGetAPIVersion$$module$src$modules$instantiation.toString=()=>\\\"getAPIVersion = async () => Number;\\\";const csoundGetVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetVersion();csoundGetVersion$$module$src$modules$instantiation.toString=()=>\\\"getVersion = async () => Number;\\\";const csoundInitialize$$module$src$modules$instantiation=a=>(b,c)=>a.exports.csoundInitialize(c);csoundInitialize$$module$src$modules$instantiation.toString=()=>\\\"initialize = async () => Number;\\\";\\nvar module$src$modules$instantiation={};module$src$modules$instantiation.csoundCreate=csoundCreate$$module$src$modules$instantiation;module$src$modules$instantiation.csoundDestroy=csoundDestroy$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetAPIVersion=csoundGetAPIVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetVersion=csoundGetVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundInitialize=csoundInitialize$$module$src$modules$instantiation;const WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders=!1;function TextEncoderPoly$$module$src$utils$text_encoders(){this.encoding=\\\"utf8\\\";return this}TextEncoderPoly$$module$src$utils$text_encoders.prototype.encode=function(a){if(\\\"string\\\"!==typeof a)throw new TypeError(\\\"passed argument must be of type string \\\"+a+\\\" \\\"+typeof a);a=unescape(encodeURIComponent(a));const b=new Uint8Array(a.length);[...a].forEach(function(c,d){b[d]=c.codePointAt(0)});return b};\\nfunction TextDecoderPoly$$module$src$utils$text_encoders(){this.encoding=\\\"utf8\\\";this.ignoreBOM=!1;this.trimNull=a=>{const b=a.indexOf(\\\"\\\\x00\\\");return-1<b?a.slice(0,Math.max(0,b)):a};this.decode=function(a,b){if(void 0===a)return\\\"\\\";if(\\\"boolean\\\"!==typeof(void 0!==b&&\\\"stream\\\"in b?b.stream:!1))throw new TypeError(\\\"stream option must be boolean\\\");if(ArrayBuffer.isView(a)){a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);const c=Array.from({length:a.length});a.forEach(function(d,e){c[e]=String.fromCodePoint(d)});\\nreturn this.trimNull(c.join(\\\"\\\"))}throw new TypeError(\\\"passed argument must be an array buffer view\\\");}}\\nconst decoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextDecoderPoly$$module$src$utils$text_encoders:new TextDecoder(\\\"utf8\\\"),encoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextEncoderPoly$$module$src$utils$text_encoders:new TextEncoder(\\\"utf8\\\"),uint2String$$module$src$utils$text_encoders=a=>decoder$$module$src$utils$text_encoders.decode(a);var module$src$utils$text_encoders={};\\nmodule$src$utils$text_encoders.decoder=decoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.encoder=encoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.uint2String=uint2String$$module$src$utils$text_encoders;const trimNull$$module$src$utils$trim_null=a=>{const b=a.indexOf(\\\"\\\\x00\\\");return-1<b?a.substr(0,b):a};var module$src$utils$trim_null={};module$src$utils$trim_null.trimNull=trimNull$$module$src$utils$trim_null;const freeStringPtr$$module$src$utils$string_pointers=(a,b)=>{a.exports.freeStringMem(b)},ptr2string$$module$src$utils$string_pointers=(a,b)=>{({buffer:a}=a.wasi.memory);b=new Uint8Array(a,b);b=uint2String$$module$src$utils$text_encoders(b);return trimNull$$module$src$utils$trim_null(b)},string2ptr$$module$src$utils$string_pointers=(a,b)=>{if(\\\"string\\\"!==typeof b)console.error(\\\"Expected string but got\\\",typeof b);else{b=encoder$$module$src$utils$text_encoders.encode(b);var c=a.exports.allocStringMem(b.length);\\n({buffer:a}=a.wasi.memory);(new Uint8Array(a,c,b.length+1)).set(b);return c}};var module$src$utils$string_pointers={};module$src$utils$string_pointers.freeStringPtr=freeStringPtr$$module$src$utils$string_pointers;module$src$utils$string_pointers.ptr2string=ptr2string$$module$src$utils$string_pointers;module$src$utils$string_pointers.string2ptr=string2ptr$$module$src$utils$string_pointers;const csoundParseOrc$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundParseOrc(b,c);csoundParseOrc$$module$src$modules$performance.toString=()=>\\\"parseOrc = async (orchestra) => Object;\\\";const csoundCompileTree$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundCompileTree(b,c);csoundCompileTree$$module$src$modules$performance.toString=()=>\\\"compileTree = async (tree) => Number;\\\";\\nconst csoundCompileOrc$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileOrc(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileOrc$$module$src$modules$performance.toString=()=>\\\"compileOrc = async (orchestra) => Number;\\\";\\nconst csoundEvalCode$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundEvalCode(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundEvalCode$$module$src$modules$performance.toString=()=>\\\"csoundEvalCode = async (orchestra) => Number;\\\";const csoundStart$$module$src$modules$performance=a=>b=>a.exports.csoundStartWasi(b);csoundStart$$module$src$modules$performance.toString=()=>\\\"start = async () => Number;\\\";\\nconst csoundCompileCsd$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);let d;try{d=a.exports.csoundCompileCsd(b,c)}catch(e){console.error(e)}freeStringPtr$$module$src$utils$string_pointers(a,c);return d};csoundCompileCsd$$module$src$modules$performance.toString=()=>\\\"compileCsd = async (path) => Number;\\\";\\nconst csoundCompileCsdText$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileCsdText(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileCsdText$$module$src$modules$performance.toString=()=>\\\"compileCsdText = async (csoundDocument) => Number;\\\";const csoundPerform$$module$src$modules$performance=a=>b=>a.exports.csoundPerform(b);csoundPerform$$module$src$modules$performance.toString=()=>\\\"perform = async () => Number;\\\";\\nconst csoundPerformKsmps$$module$src$modules$performance=a=>b=>a.exports.csoundPerformKsmpsWasi(b);csoundPerformKsmps$$module$src$modules$performance.toString=()=>\\\"performKsmps = async (csound) => Number;\\\";const csoundPerformBuffer$$module$src$modules$performance=a=>b=>a.exports.csoundPerformBuffer(b);csoundPerformBuffer$$module$src$modules$performance.toString=()=>\\\"performBuffer = async (csound) => Number;\\\";const csoundStop$$module$src$modules$performance=a=>b=>a.exports.csoundStop(b);\\ncsoundStop$$module$src$modules$performance.toString=()=>\\\"stop = async () => undefined;\\\";const csoundCleanup$$module$src$modules$performance=a=>b=>a.exports.csoundCleanup(b);csoundCleanup$$module$src$modules$performance.toString=()=>\\\"cleanup = async () => Number;\\\";const csoundReset$$module$src$modules$performance=a=>b=>a.exports.csoundResetWasi(b);csoundReset$$module$src$modules$performance.toString=()=>\\\"reset = async () => Number;\\\";var module$src$modules$performance={};\\nmodule$src$modules$performance.csoundCleanup=csoundCleanup$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsd=csoundCompileCsd$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsdText=csoundCompileCsdText$$module$src$modules$performance;module$src$modules$performance.csoundCompileOrc=csoundCompileOrc$$module$src$modules$performance;module$src$modules$performance.csoundCompileTree=csoundCompileTree$$module$src$modules$performance;\\nmodule$src$modules$performance.csoundEvalCode=csoundEvalCode$$module$src$modules$performance;module$src$modules$performance.csoundParseOrc=csoundParseOrc$$module$src$modules$performance;module$src$modules$performance.csoundPerform=csoundPerform$$module$src$modules$performance;module$src$modules$performance.csoundPerformBuffer=csoundPerformBuffer$$module$src$modules$performance;module$src$modules$performance.csoundPerformKsmps=csoundPerformKsmps$$module$src$modules$performance;\\nmodule$src$modules$performance.csoundReset=csoundReset$$module$src$modules$performance;module$src$modules$performance.csoundStart=csoundStart$$module$src$modules$performance;module$src$modules$performance.csoundStop=csoundStop$$module$src$modules$performance;const sizeOfPrimitive$$module$src$utils$native_sizes={int:4,MYFLT:4,char:1},sizeofStruct$$module$src$utils$native_sizes=a=>a.reduce((b,[,c,...d])=>b+(\\\"char\\\"===c?sizeOfPrimitive$$module$src$utils$native_sizes[c]*d[0]:sizeOfPrimitive$$module$src$utils$native_sizes[c]),0);var module$src$utils$native_sizes={};module$src$utils$native_sizes.sizeOfPrimitive=sizeOfPrimitive$$module$src$utils$native_sizes;module$src$utils$native_sizes.sizeofStruct=sizeofStruct$$module$src$utils$native_sizes;const structBufferToObject$$module$src$utils$structure_buffer_to_object=(a,b)=>{[a]=a.reduce(([c,d],[e,f,...g])=>{g=\\\"char\\\"===f?sizeOfPrimitive$$module$src$utils$native_sizes[f]*g[0]:sizeOfPrimitive$$module$src$utils$native_sizes[f];f=\\\"char\\\"===f?trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(b.subarray(d,g)))||\\\"\\\":b[d];c[e]=f;return[c,d+g]},[{},0]);return a};var module$src$utils$structure_buffer_to_object={};\\nmodule$src$utils$structure_buffer_to_object.structBufferToObject=structBufferToObject$$module$src$utils$structure_buffer_to_object;const CSOUND_PARAMS$$module$src$structures=[[\\\"debug_mode\\\",\\\"int\\\"],[\\\"buffer_frames\\\",\\\"int\\\"],[\\\"hardware_buffer_frames\\\",\\\"int\\\"],[\\\"displays\\\",\\\"int\\\"],[\\\"ascii_graphs\\\",\\\"int\\\"],[\\\"postscript_graphs\\\",\\\"int\\\"],[\\\"message_level\\\",\\\"int\\\"],[\\\"tempo\\\",\\\"int\\\"],[\\\"ring_bell\\\",\\\"int\\\"],[\\\"use_cscore\\\",\\\"int\\\"],[\\\"terminate_on_midi\\\",\\\"int\\\"],[\\\"heartbeat\\\",\\\"int\\\"],[\\\"defer_gen01_load\\\",\\\"int\\\"],[\\\"midi_key\\\",\\\"int\\\"],[\\\"midi_key_cps\\\",\\\"int\\\"],[\\\"midi_key_oct\\\",\\\"int\\\"],[\\\"midi_key_pch\\\",\\\"int\\\"],[\\\"midi_velocity\\\",\\\"int\\\"],[\\\"midi_velocity_amp\\\",\\\"int\\\"],[\\\"no_default_paths\\\",\\n\\\"int\\\"],[\\\"number_of_threads\\\",\\\"int\\\"],[\\\"syntax_check_only\\\",\\\"int\\\"],[\\\"csd_line_counts\\\",\\\"int\\\"],[\\\"compute_weights\\\",\\\"int\\\"],[\\\"realtime_mode\\\",\\\"int\\\"],[\\\"sample_accurate\\\",\\\"int\\\"],[\\\"sample_rate_override\\\",\\\"MYFLT\\\"],[\\\"control_rate_override\\\",\\\"MYFLT\\\"],[\\\"nchnls_override\\\",\\\"int\\\"],[\\\"nchnls_i_override\\\",\\\"int\\\"],[\\\"e0dbfs_override\\\",\\\"MYFLT\\\"],[\\\"daemon\\\",\\\"int\\\"],[\\\"ksmps_override\\\",\\\"int\\\"],[\\\"FFT_library\\\",\\\"int\\\"]],CS_MIDIDEVICE$$module$src$structures=[[\\\"device_name\\\",\\\"char\\\",64],[\\\"interface_name\\\",\\\"char\\\",64],[\\\"device_id\\\",\\\"char\\\",64],[\\\"midi_module\\\",\\n\\\"char\\\",64],[\\\"isOutput\\\",\\\"int\\\"]];var module$src$structures={};const csoundGetSr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSr(b);csoundGetSr$$module$src$modules$attributes.toString=()=>\\\"getSr = async () => Number;\\\";const csoundGetKr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKr(b);csoundGetKr$$module$src$modules$attributes.toString=()=>\\\"getKr = async () => Number;\\\";const csoundGetKsmps$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKsmps(b);csoundGetKsmps$$module$src$modules$attributes.toString=()=>\\\"getKsmps = async () => Number;\\\";\\nconst csoundGetNchnls$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnls(b);csoundGetNchnls$$module$src$modules$attributes.toString=()=>\\\"getNchnls = async () => Number;\\\";const csoundGetNchnlsInput$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnlsInput(b);csoundGetNchnlsInput$$module$src$modules$attributes.toString=()=>\\\"getNchnlsInput = async () => Number;\\\";const csoundGet0dBFS$$module$src$modules$attributes=a=>b=>a.exports.csoundGet0dBFS(b);\\ncsoundGet0dBFS$$module$src$modules$attributes.toString=()=>\\\"get0dBFS = async () => Number;\\\";const csoundGetA4$$module$src$modules$attributes=a=>b=>a.exports.csoundGetA4(b);csoundGetA4$$module$src$modules$attributes.toString=()=>\\\"getA4 = async () => Number;\\\";const csoundGetCurrentTimeSamples$$module$src$modules$attributes=a=>b=>a.exports.csoundGetCurrentTimeSamples(b);csoundGetCurrentTimeSamples$$module$src$modules$attributes.toString=()=>\\\"getCurrentTimeSamples = async () => Number;\\\";\\nconst csoundGetSizeOfMYFLT$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSizeOfMYFLT(b);csoundGetSizeOfMYFLT$$module$src$modules$attributes.toString=()=>\\\"getSizeOfMYFLT = async () => Number;\\\";const csoundSetOption$$module$src$modules$attributes=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundSetOption(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundSetOption$$module$src$modules$attributes.toString=()=>\\\"setOption = async (option) => Number;\\\";\\nconst csoundSetParams$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetParams(b,c)};csoundSetParams$$module$src$modules$attributes.toString=()=>\\\"setParams = async (csoundParams) => undefined;\\\";\\nconst csoundGetParams$$module$src$modules$attributes=a=>b=>{var {buffer:c}=a.wasi.memory;const d=sizeofStruct$$module$src$utils$native_sizes(CSOUND_PARAMS$$module$src$structures),e=a.exports.allocCsoundParamsStruct();c=new Uint8Array(c,e,d);a.exports.csoundGetParams(b,e);b=structBufferToObject$$module$src$utils$structure_buffer_to_object(CSOUND_PARAMS$$module$src$structures,c);a.exports.freeCsoundParams(e);return b};csoundGetParams$$module$src$modules$attributes.toString=()=>\\\"getParams = async () => CSOUND_PARAMS;\\\";\\nconst csoundGetDebug$$module$src$modules$attributes=a=>b=>a.exports.csoundGetDebug(b);csoundGetDebug$$module$src$modules$attributes.toString=()=>\\\"getDebug = async () => Number;\\\";const csoundSetDebug$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetDebug(b,c)};csoundSetDebug$$module$src$modules$attributes.toString=()=>\\\"setDebug = async (number) => undefined;\\\";var module$src$modules$attributes={};module$src$modules$attributes.csoundGet0dBFS=csoundGet0dBFS$$module$src$modules$attributes;\\nmodule$src$modules$attributes.csoundGetA4=csoundGetA4$$module$src$modules$attributes;module$src$modules$attributes.csoundGetCurrentTimeSamples=csoundGetCurrentTimeSamples$$module$src$modules$attributes;module$src$modules$attributes.csoundGetDebug=csoundGetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKr=csoundGetKr$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKsmps=csoundGetKsmps$$module$src$modules$attributes;\\nmodule$src$modules$attributes.csoundGetNchnls=csoundGetNchnls$$module$src$modules$attributes;module$src$modules$attributes.csoundGetNchnlsInput=csoundGetNchnlsInput$$module$src$modules$attributes;module$src$modules$attributes.csoundGetParams=csoundGetParams$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSizeOfMYFLT=csoundGetSizeOfMYFLT$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSr=csoundGetSr$$module$src$modules$attributes;\\nmodule$src$modules$attributes.csoundSetDebug=csoundSetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundSetOption=csoundSetOption$$module$src$modules$attributes;module$src$modules$attributes.csoundSetParams=csoundSetParams$$module$src$modules$attributes;const csoundGetInputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBufferSize(b);csoundGetInputBufferSize$$module$src$modules$rtaudio.toString=()=>\\\"getInputBufferSize = async () => Number;\\\";const csoundGetOutputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBufferSize(b);csoundGetOutputBufferSize$$module$src$modules$rtaudio.toString=()=>\\\"getOutputBufferSize = async () => Number;\\\";const csoundGetInputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBuffer(b);\\ncsoundGetInputBuffer$$module$src$modules$rtaudio.toString=()=>\\\"getInputBuffer = async () => Number;\\\";const csoundGetOutputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBuffer(b);csoundGetOutputBuffer$$module$src$modules$rtaudio.toString=()=>\\\"getOutputBuffer = async () => Number;\\\";const csoundGetSpin$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpin(b);csoundGetSpin$$module$src$modules$rtaudio.toString=()=>\\\"getSpin = async (csound) => Number;\\\";\\nconst csoundGetSpout$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpout(b);csoundGetSpout$$module$src$modules$rtaudio.toString=()=>\\\"getSpout = async () => Number;\\\";var module$src$modules$rtaudio={};module$src$modules$rtaudio.csoundGetInputBuffer=csoundGetInputBuffer$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetInputBufferSize=csoundGetInputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetOutputBuffer=csoundGetOutputBuffer$$module$src$modules$rtaudio;\\nmodule$src$modules$rtaudio.csoundGetOutputBufferSize=csoundGetOutputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpin=csoundGetSpin$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpout=csoundGetSpout$$module$src$modules$rtaudio;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}\\nfunction adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}\\nfunction and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}\\nfunction anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(\\\"string\\\"===typeof b)return b.split(\\\"\\\").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}\\nfunction apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;\\nfunction __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&\\\"constructor\\\"!==c&&(\\\"object\\\"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),\\\"function\\\"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}\\nfunction __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&\\\"undefined\\\"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}\\nfunction __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,\\nb,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;\\nfor(;d<f;d++){if(\\\"object\\\"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);\\\"function\\\"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&\\\"constructor\\\"!==e&&(\\\"object\\\"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):\\\"function\\\"===typeof a[e]&&(d[e]=a[e](...c)));return d}\\nfunction applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;\\nfunction assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=\\\"string\\\"===typeof a?a.split(\\\".\\\").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e=\\\"object\\\"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&\\nisArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}\\nfunction _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)}}}\\nfunction curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error(\\\"First argument to _arity must be a non-negative integer no greater than ten\\\");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}\\nfunction bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}\\nfunction chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error(\\\"min must not be greater than max in clamp(min, max, value)\\\");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]=\\\"object\\\"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}\\nclass ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError(\\\"reduce: list must be array or iterable\\\");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}\\nconst reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);\\nfunction _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)};default:throw Error(\\\"First argument to _arity must be a non-negative integer no greater than ten\\\");}}\\nfunction _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}\\nfunction pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error(\\\"pipe requires at least one argument\\\");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}\\nfunction compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error(\\\"compose requires at least one argument\\\");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):\\\"string\\\"===typeof a?`${a}${b}`:[...a,...b]}\\nfunction cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}\\nfunction mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\\nfunction map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\\nfunction max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}\\nfunction converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}\\nfunction count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}\\nconst dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}\\nfunction type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return\\\"Null\\\";if(void 0===a)return\\\"Undefined\\\";if(Number.isNaN(a))return\\\"NaN\\\";a=Object.prototype.toString.call(a).slice(8,-1);return\\\"AsyncFunction\\\"===a?\\\"Promise\\\":a}\\nfunction _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(![\\\"Object\\\",\\\"Array\\\",\\\"NaN\\\",\\\"RegExp\\\"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\\nfunction _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(![\\\"Object\\\",\\\"Array\\\",\\\"NaN\\\",\\\"RegExp\\\"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\\nfunction _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}\\nfunction parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return[\\\"Error\\\",\\\"TypeError\\\"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}\\nfunction equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if(\\\"Function\\\"===c)return void 0===a.name?!1:a.name===b.name;if([\\\"NaN\\\",\\\"Undefined\\\",\\\"Null\\\"].includes(c))return!0;if(\\\"Number\\\"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if([\\\"String\\\",\\\"Boolean\\\"].includes(c))return a.toString()===\\nb.toString();if(\\\"Array\\\"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);\\nif(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if(\\\"Set\\\"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if(\\\"Object\\\"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});\\nreturn f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(\\\"string\\\"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \\\\'indexOf\\\\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}\\nclass _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return[\\\"Null\\\",\\\"Undefined\\\",\\\"NaN\\\"].includes(b)?b in this.items?!1:this.items[b]=!0:[\\\"Object\\\",\\\"Array\\\"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}\\nfunction uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\\nfunction dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}\\nfunction drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}\\nfunction dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(\\\"function\\\"!==typeof a)throw Error(`'predicate' is from wrong type ${typeof a}`);if(!c&&\\\"string\\\"!==typeof b)throw Error(`'iterable' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):\\n(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join(\\\"\\\")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}\\nfunction dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}\\nfunction dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&\\\"string\\\"!==typeof b)throw Error(\\\"`iterable` is neither list nor a string\\\");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join(\\\"\\\")}\\nfunction either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}\\nfunction endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(\\\"string\\\"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}\\nfunction prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>\\\"Function\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}\\nfunction evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if(\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return\\\"Function\\\"===e?a[d](c):\\\"Object\\\"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return\\\"Function\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}\\nfunction evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error(\\\"iterableType !== rulesType\\\");if(![\\\"Object\\\",\\\"Array\\\"].includes(c))throw Error(`'iterable' and 'rules' are from wrong type ${c}`);return\\\"Object\\\"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,\\nb)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}\\nfunction filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(\\\"Incorrect iterable input\\\");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\\nfunction find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}\\nfunction findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}\\nfunction flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}\\nfunction flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error(\\\"R.flip doesn't work with arity > 4\\\");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}\\nfunction forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}\\nfunction fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}\\nfunction groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError(\\\"list.reduce is not a function\\\");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),l=0===e.length;h=h===b.length-1;if(k)return l&&e.push(f),e.push(g),h&&d.push(e),g;if(l)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},\\nvoid 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b=\\\".\\\"){return\\\"string\\\"===typeof a?a.split(b):a}\\nfunction path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}\\nfunction hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a[0]||\\\"\\\":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;\\nfunction identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===(\\\"boolean\\\"===typeof a?a:a(...d))?b(...d):c(...d)}\\nconst ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}\\nfunction indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(\\\"string\\\"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}\\nfunction indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}\\nfunction init$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}\\nfunction intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}\\nfunction isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return[\\\"Undefined\\\",\\\"NaN\\\",\\\"Number\\\",\\\"Null\\\"].includes(b)?!1:a?\\\"Object\\\"===b?0===Object.keys(a).length:\\\"Array\\\"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}\\nfunction join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a[a.length-1]||\\\"\\\":a[a.length-1]}\\nfunction lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||\\\"string\\\"===typeof a?a.length:NaN}\\nfunction lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return\\\"[object String]\\\"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}\\nfunction updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}\\nfunction lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}\\nfunction mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}\\nfunction mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}\\nfunction mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}\\nfunction mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}\\nconst mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}\\nfunction _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,\\nd,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}\\nfunction modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],\\nb,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}\\nfunction moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error(\\\"Rambda.move does not support negative indexes\\\");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}\\nfunction not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}\\nfunction omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,\\\",\\\"),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}\\nfunction on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}\\nfunction once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});\\nfunction overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\\nfunction partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}\\nfunction partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\\nfunction pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\\nfunction pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,\\\",\\\"),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}\\nfunction pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,\\\",\\\"),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}\\nfunction pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):\\\"string\\\"===typeof b?[a].concat(b.split(\\\"\\\")):[a].concat(b)}\\nconst product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(\\\"propsToPick is not a list\\\");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}\\nconst propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError(\\\"Both arguments to range must be numbers\\\");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}\\nfunction reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}\\nconst replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a.split(\\\"\\\").reverse().join(\\\"\\\"):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}\\nconst set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}\\nfunction split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&\\\"Function\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||\\\"Function\\\"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}\\nfunction take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():\\\"string\\\"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}\\nfunction splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property 'slice' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&\\\"string\\\"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,\\nb)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error(\\\"First argument to splitEvery must be a positive integer\\\");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}\\nfunction splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property 'length' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}\\nfunction startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(\\\"string\\\"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}\\nfunction subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}\\nfunction symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}\\nfunction T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}\\nfunction takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return\\\"string\\\"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}\\nfunction takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join(\\\"\\\")}\\nfunction takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&\\\"string\\\"!==typeof b)throw Error(\\\"`iterable` is neither list nor a string\\\");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join(\\\"\\\")}\\nfunction tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(\\\"string\\\"===typeof a)throw new TypeError(`\\\\u2018test\\\\u2019 requires a value of type RegExp as its first argument; received \\\"${a}\\\"`);return-1!==b.search(a)}\\nfunction times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError(\\\"n must be an integer\\\");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}\\nfunction toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}\\nfunction trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>[\\\"Promise\\\",\\\"Function\\\"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));\\nfunction tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn '${a}'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}\\nfunction union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}\\nfunction uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}\\nfunction uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}\\nfunction unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}\\nfunction values$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"Object\\\"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}\\nfunction whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}\\nfunction whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}\\nfunction whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}\\nfunction without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}\\nfunction zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}\\nfunction zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;const csoundSetMidiCallbacks$$module$src$modules$rtmidi=a=>b=>{a.exports.csoundSetMidiCallbacks(b)},csoundGetMIDIDevList$$module$src$modules$rtmidi=a=>(b,c)=>{const {buffer:d}=a.wasi.memory,e=a.exports.csoundGetMIDIDevList(b,void 0,c?1:0);if(0===e)return[];const f=sizeofStruct$$module$src$utils$native_sizes(CS_MIDIDEVICE$$module$src$structures),g=a.exports.allocCsMidiDeviceStruct(e);a.exports.csoundGetMIDIDevList(b,g,c?1:0);const h=new Uint8Array(d,g,f*e);b=range$$module$node_modules$rambda$dist$rambda_mjs(0,\\ne).map(k=>structBufferToObject$$module$src$utils$structure_buffer_to_object(CS_MIDIDEVICE$$module$src$structures,h.subarray(k*f,f)));a.exports.freeCsMidiDeviceStruct(g);return b};csoundGetMIDIDevList$$module$src$modules$rtmidi.toString=()=>\\\"getMIDIDevList = async (isOutput) => Object;\\\";\\nconst csoundGetRtMidiName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getRtMidiName(b);c=new Uint8Array(c,b,128);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||\\\"\\\"};csoundGetRtMidiName$$module$src$modules$rtmidi.toString=()=>\\\"getRtMidiName = async () => String;\\\";\\nconst csoundGetMidiOutFileName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getMidiOutFileName(b);c=new Uint8Array(c,b,128);b&&0<b.length&&freeStringPtr$$module$src$utils$string_pointers(a,b);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||\\\"\\\"},_isRequestingRtMidiInput$$module$src$modules$rtmidi=a=>b=>a.exports.isRequestingRtMidiInput(b),csoundPushMidiMessage$$module$src$modules$rtmidi=a=>(b,c,d,e)=>{a.exports.pushMidiMessage(b,\\nc,d,e)};csoundPushMidiMessage$$module$src$modules$rtmidi.toString=()=>\\\"midiMessage = async (status, data1, data2) => undefined;\\\";var module$src$modules$rtmidi={};module$src$modules$rtmidi._isRequestingRtMidiInput=_isRequestingRtMidiInput$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMIDIDevList=csoundGetMIDIDevList$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMidiOutFileName=csoundGetMidiOutFileName$$module$src$modules$rtmidi;\\nmodule$src$modules$rtmidi.csoundGetRtMidiName=csoundGetRtMidiName$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundPushMidiMessage=csoundPushMidiMessage$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundSetMidiCallbacks=csoundSetMidiCallbacks$$module$src$modules$rtmidi;const csoundInputMessage$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessage(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessage$$module$src$modules$control_events.toString=()=>\\\"inputMessage = async (scoreEvent) => Number;\\\";\\nconst csoundInputMessageAsync$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessageAsync(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessageAsync$$module$src$modules$control_events.toString=()=>\\\"inputMessageAsync = async (scoreEvent) => Number;\\\";\\nconst csoundGetControlChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetControlChannelWasi(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundGetControlChannel$$module$src$modules$control_events.toString=()=>\\\"getControlChannel = async (channelName) => Number;\\\";\\nconst csoundSetControlChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);a.exports.csoundSetControlChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c)};csoundSetControlChannel$$module$src$modules$control_events.toString=()=>\\\"setControlChannel = async (channelName, value) => void;\\\";\\nconst csoundGetStringChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetStringChannelWasi(b,c);const d=ptr2string$$module$src$utils$string_pointers(a,b);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,b);return d};csoundGetStringChannel$$module$src$modules$control_events.toString=()=>\\\"getStringChannel = async (channelName) => String;\\\";\\nconst csoundSetStringChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);a.exports.csoundSetStringChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d)};csoundSetStringChannel$$module$src$modules$control_events.toString=()=>\\\"setStringChannel = async (channelName, value) => void;\\\";var module$src$modules$control_events={};\\nmodule$src$modules$control_events.csoundGetControlChannel=csoundGetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundGetStringChannel=csoundGetStringChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessage=csoundInputMessage$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessageAsync=csoundInputMessageAsync$$module$src$modules$control_events;\\nmodule$src$modules$control_events.csoundSetControlChannel=csoundSetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundSetStringChannel=csoundSetStringChannel$$module$src$modules$control_events;const csoundGetOutputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetOutputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||\\\"\\\"};csoundGetOutputName$$module$src$modules$general_io.toString=()=>\\\"getOutputName = async () => String;\\\";\\nconst csoundGetInputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetInputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||\\\"\\\"};csoundGetInputName$$module$src$modules$general_io.toString=()=>\\\"getInputName = async (csound) => String;\\\";var module$src$modules$general_io={};module$src$modules$general_io.csoundGetInputName=csoundGetInputName$$module$src$modules$general_io;\\nmodule$src$modules$general_io.csoundGetOutputName=csoundGetOutputName$$module$src$modules$general_io;const csoundAppendEnv$$module$src$modules$extra=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);b=a.exports.csoundAppendEnv(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d);return b};csoundAppendEnv$$module$src$modules$extra.toString=()=>\\\"appendEnv = async (csound, variable, value) => Number;\\\";const csoundShouldDaemonize$$module$src$modules$extra=a=>b=>a.exports.csoundShouldDaemonize(b);\\nvar module$src$modules$extra={};module$src$modules$extra.csoundAppendEnv=csoundAppendEnv$$module$src$modules$extra;module$src$modules$extra.csoundShouldDaemonize=csoundShouldDaemonize$$module$src$modules$extra;const csoundIsScorePending$$module$src$modules$score_handling=a=>b=>a.exports.csoundIsScorePending(b);csoundIsScorePending$$module$src$modules$score_handling.toString=()=>\\\"isScorePending = async () => Number;\\\";const csoundSetScorePending$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScorePending(b,c);csoundSetScorePending$$module$src$modules$score_handling.toString=()=>\\\"setScorePending = async (pending) => Number;\\\";\\nconst csoundReadScore$$module$src$modules$score_handling=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundReadScore(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundReadScore$$module$src$modules$score_handling.toString=()=>\\\"readScore = async (score) => Number;\\\";const csoundGetScoreTime$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreTime(b);csoundGetScoreTime$$module$src$modules$score_handling.toString=()=>\\\"getScoreTime = async () => Number;\\\";\\nconst csoundGetScoreOffsetSeconds$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreOffsetSeconds(b);csoundGetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>\\\"getScoreOffsetSeconds = async () => Number;\\\";const csoundSetScoreOffsetSeconds$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScoreOffsetSeconds(b,c);csoundSetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>\\\"setScoreOffsetSeconds = async () => Number;\\\";\\nconst csoundRewindScore$$module$src$modules$score_handling=a=>b=>a.exports.csoundRewindScore(b);csoundRewindScore$$module$src$modules$score_handling.toString=()=>\\\"rewindScore = async () => undefined;\\\";var module$src$modules$score_handling={};module$src$modules$score_handling.csoundGetScoreOffsetSeconds=csoundGetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundGetScoreTime=csoundGetScoreTime$$module$src$modules$score_handling;\\nmodule$src$modules$score_handling.csoundIsScorePending=csoundIsScorePending$$module$src$modules$score_handling;module$src$modules$score_handling.csoundReadScore=csoundReadScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundRewindScore=csoundRewindScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScoreOffsetSeconds=csoundSetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScorePending=csoundSetScorePending$$module$src$modules$score_handling;const csoundTableLength$$module$src$modules$table=a=>(b,c)=>a.exports.csoundTableLength(b,c);csoundTableLength$$module$src$modules$table.toString=()=>\\\"tableLength = async (tableNum) => Number;\\\";const csoundTableGet$$module$src$modules$table=a=>(b,c,d)=>a.exports.csoundTableGet(b,c,d);csoundTableGet$$module$src$modules$table.toString=()=>\\\"tableGet = async (tableNum, tableIndex) => Number;\\\";const csoundTableSet$$module$src$modules$table=a=>(b,c,d,e)=>a.exports.csoundTableSet(b,c,d,e);\\ncsoundTableSet$$module$src$modules$table.toString=()=>\\\"tableSet = async (tableNum, tableIndex, value) => undefined;\\\";const csoundTableCopyIn$$module$src$modules$table=a=>(b,c,d)=>{const e=a.exports.allocFloatArray(d.length);(new Float64Array(a.wasi.memory.buffer,e,d.length)).set(d);a.exports.csoundTableCopyIn(b,c,e);a.exports.freeFloatArrayMem(e)};csoundTableCopyIn$$module$src$modules$table.toString=()=>\\\"tableCopyIn = async (tableNum, float64Array) => undefined;\\\";\\nconst csoundTableCopyOut$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundTableLength(b,c);if(0<d){const e=a.exports.allocFloatArray(d);a.exports.csoundTableCopyOut(b,c,e);({buffer:b}=a.wasi.memory);d=new Float64Array(b,e,d);a.exports.freeFloatArrayMem(e);return Float64Array.from(d)}};csoundTableCopyOut$$module$src$modules$table.toString=()=>\\\"tableCopyOut = async (tableNum) => ?Float64Array;\\\";const csoundGetTable$$module$src$modules$table=csoundTableCopyOut$$module$src$modules$table;\\ncsoundTableCopyOut$$module$src$modules$table.toString=csoundTableCopyOut$$module$src$modules$table.toString;const csoundGetTableArgs$$module$src$modules$table=a=>(b,c)=>{const d=a.exports.allocFloatArray(1024);a.exports.csoundGetTableArgs(b,d,c);({buffer:b}=a.wasi.memory);b=new Float64Array(b,d,1024);a.exports.freeFloatArrayMem(d);return b};csoundGetTableArgs$$module$src$modules$table.toString=()=>\\\"getTableArgs = async (tableNum) => ?Float64Array;\\\";\\nconst csoundIsNamedGEN$$module$src$modules$table=a=>(b,c)=>a.exports.csoundIsNamedGEN(b,c);csoundIsNamedGEN$$module$src$modules$table.toString=()=>\\\"isNamedGEN = async (tableNum) => number;\\\";const csoundGetNamedGEN$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundIsNamedGEN(b,c);if(0<d){const e=a.exports.allocStringMem(d);a.exports.csoundGetNamedGEN(b,e,c,d);({buffer:b}=a.wasi.memory);d=new Uint8Array(b,e,d);return uint2String$$module$src$utils$text_encoders(d)}};\\ncsoundGetNamedGEN$$module$src$modules$table.toString=()=>\\\"getNamedGEN = async (tableNum) => ?string;\\\";var module$src$modules$table={};module$src$modules$table.csoundGetNamedGEN=csoundGetNamedGEN$$module$src$modules$table;module$src$modules$table.csoundGetTable=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundGetTableArgs=csoundGetTableArgs$$module$src$modules$table;module$src$modules$table.csoundIsNamedGEN=csoundIsNamedGEN$$module$src$modules$table;\\nmodule$src$modules$table.csoundTableCopyIn=csoundTableCopyIn$$module$src$modules$table;module$src$modules$table.csoundTableCopyOut=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundTableGet=csoundTableGet$$module$src$modules$table;module$src$modules$table.csoundTableLength=csoundTableLength$$module$src$modules$table;module$src$modules$table.csoundTableSet=csoundTableSet$$module$src$modules$table;function writeFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b=\\\"string\\\"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.writeFile(c,b)}}writeFile$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path, data) => void\\\";function appendFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b=\\\"string\\\"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.appendFile(c,b)}}appendFile$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path, data) => void\\\";\\nfunction readFile$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readFile(c)}readFile$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path) => ?Uint8Array\\\";function unlink$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.unlink(c)}unlink$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path) => void\\\";function readdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readdir(c)}readdir$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path) => string[]\\\";\\nfunction mkdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.mkdir(c)}mkdir$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path) => void\\\";var module$src$filesystem$worker_fs={};module$src$filesystem$worker_fs.appendFile=appendFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.mkdir=mkdir$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readFile=readFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readdir=readdir$$module$src$filesystem$worker_fs;\\nmodule$src$filesystem$worker_fs.unlink=unlink$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.writeFile=writeFile$$module$src$filesystem$worker_fs;const api$$module$src$libcsound={csoundCreate:csoundCreate$$module$src$modules$instantiation,csoundDestroy:csoundDestroy$$module$src$modules$instantiation,csoundGetAPIVersion:csoundGetAPIVersion$$module$src$modules$instantiation,csoundGetVersion:csoundGetVersion$$module$src$modules$instantiation,csoundInitialize:csoundInitialize$$module$src$modules$instantiation,csoundParseOrc:csoundParseOrc$$module$src$modules$performance,csoundCompileTree:csoundCompileTree$$module$src$modules$performance,csoundCompileOrc:csoundCompileOrc$$module$src$modules$performance,\\ncsoundEvalCode:csoundEvalCode$$module$src$modules$performance,csoundStart:csoundStart$$module$src$modules$performance,csoundCompileCsd:csoundCompileCsd$$module$src$modules$performance,csoundCompileCsdText:csoundCompileCsdText$$module$src$modules$performance,csoundPerform:csoundPerform$$module$src$modules$performance,csoundPerformKsmps:csoundPerformKsmps$$module$src$modules$performance,csoundPerformBuffer:csoundPerformBuffer$$module$src$modules$performance,csoundStop:csoundStop$$module$src$modules$performance,\\ncsoundCleanup:csoundCleanup$$module$src$modules$performance,csoundReset:csoundReset$$module$src$modules$performance,csoundGetSr:csoundGetSr$$module$src$modules$attributes,csoundGetKr:csoundGetKr$$module$src$modules$attributes,csoundGetKsmps:csoundGetKsmps$$module$src$modules$attributes,csoundGetNchnls:csoundGetNchnls$$module$src$modules$attributes,csoundGetNchnlsInput:csoundGetNchnlsInput$$module$src$modules$attributes,csoundGet0dBFS:csoundGet0dBFS$$module$src$modules$attributes,csoundGetA4:csoundGetA4$$module$src$modules$attributes,\\ncsoundGetCurrentTimeSamples:csoundGetCurrentTimeSamples$$module$src$modules$attributes,csoundGetSizeOfMYFLT:csoundGetSizeOfMYFLT$$module$src$modules$attributes,csoundSetOption:csoundSetOption$$module$src$modules$attributes,csoundSetParams:csoundSetParams$$module$src$modules$attributes,csoundGetParams:csoundGetParams$$module$src$modules$attributes,csoundGetDebug:csoundGetDebug$$module$src$modules$attributes,csoundSetDebug:csoundSetDebug$$module$src$modules$attributes,csoundGetInputBufferSize:csoundGetInputBufferSize$$module$src$modules$rtaudio,\\ncsoundGetOutputBufferSize:csoundGetOutputBufferSize$$module$src$modules$rtaudio,csoundGetInputBuffer:csoundGetInputBuffer$$module$src$modules$rtaudio,csoundGetOutputBuffer:csoundGetOutputBuffer$$module$src$modules$rtaudio,csoundGetSpin:csoundGetSpin$$module$src$modules$rtaudio,csoundGetSpout:csoundGetSpout$$module$src$modules$rtaudio,csoundGetMIDIDevList:csoundGetMIDIDevList$$module$src$modules$rtmidi,csoundSetMidiCallbacks:csoundSetMidiCallbacks$$module$src$modules$rtmidi,csoundGetRtMidiName:csoundGetRtMidiName$$module$src$modules$rtmidi,\\ncsoundGetMidiOutFileName:csoundGetMidiOutFileName$$module$src$modules$rtmidi,csoundPushMidiMessage:csoundPushMidiMessage$$module$src$modules$rtmidi,_isRequestingRtMidiInput:_isRequestingRtMidiInput$$module$src$modules$rtmidi,csoundInputMessage:csoundInputMessage$$module$src$modules$control_events,csoundInputMessageAsync:csoundInputMessageAsync$$module$src$modules$control_events,csoundGetControlChannel:csoundGetControlChannel$$module$src$modules$control_events,csoundSetControlChannel:csoundSetControlChannel$$module$src$modules$control_events,\\ncsoundGetStringChannel:csoundGetStringChannel$$module$src$modules$control_events,csoundSetStringChannel:csoundSetStringChannel$$module$src$modules$control_events,csoundGetInputName:csoundGetInputName$$module$src$modules$general_io,csoundGetOutputName:csoundGetOutputName$$module$src$modules$general_io,csoundAppendEnv:csoundAppendEnv$$module$src$modules$extra,csoundShouldDaemonize:csoundShouldDaemonize$$module$src$modules$extra,csoundIsScorePending:csoundIsScorePending$$module$src$modules$score_handling,\\ncsoundSetScorePending:csoundSetScorePending$$module$src$modules$score_handling,csoundReadScore:csoundReadScore$$module$src$modules$score_handling,csoundGetScoreTime:csoundGetScoreTime$$module$src$modules$score_handling,csoundGetScoreOffsetSeconds:csoundGetScoreOffsetSeconds$$module$src$modules$score_handling,csoundSetScoreOffsetSeconds:csoundSetScoreOffsetSeconds$$module$src$modules$score_handling,csoundRewindScore:csoundRewindScore$$module$src$modules$score_handling,csoundTableLength:csoundTableLength$$module$src$modules$table,\\ncsoundTableGet:csoundTableGet$$module$src$modules$table,csoundTableSet:csoundTableSet$$module$src$modules$table,csoundTableCopyIn:csoundTableCopyIn$$module$src$modules$table,csoundTableCopyOut:csoundTableCopyOut$$module$src$modules$table,csoundGetTable:csoundTableCopyOut$$module$src$modules$table,csoundGetTableArgs:csoundGetTableArgs$$module$src$modules$table,csoundIsNamedGEN:csoundIsNamedGEN$$module$src$modules$table,csoundGetNamedGEN:csoundGetNamedGEN$$module$src$modules$table,fs:module$src$filesystem$worker_fs};\\nvar $jscompDefaultExport$$module$src$libcsound=function(a){return mergeAll$$module$node_modules$rambda$dist$rambda_mjs([reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,api$$module$src$libcsound[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(dissoc$$module$node_modules$rambda$dist$rambda_mjs(\\\"fs\\\")(api$$module$src$libcsound))),reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,\\napi$$module$src$libcsound.fs[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(module$src$filesystem$worker_fs))])},module$src$libcsound={};module$src$libcsound.api=api$$module$src$libcsound;module$src$libcsound.default=$jscompDefaultExport$$module$src$libcsound;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0),f=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0),g=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0);const h=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0);let k=c.length;\\\"function\\\"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);\\\"function\\\"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k,\\nb.exports.csoundModuleInit),k+=1);\\\"function\\\"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);\\\"function\\\"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0),f=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0),g=c.length,\\n\\\"function\\\"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),\\\"function\\\"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error(\\\"Plugin doesn't export nececcary functions to quality as csound plugin.\\\")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt);\\nconst WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants=\\n10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants=\\n20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants=\\n31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41,\\nWASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants=\\n52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants=\\n62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants=\\n73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants=\\n7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants=\\n18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants=\\n3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants=\\n16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants=\\ngoog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants=\\ngoog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants=\\ngoog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants=\\ngoog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|\\nWASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|\\nWASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|\\nWASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|\\nWASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants=\\nWASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\\nWASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|\\nWASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|\\nWASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|\\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,\\nRIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants=\\n1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants=\\n0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name=\\\"CustomError\\\";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name=\\\"AssertionError\\\";\\ngoog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split(\\\"%s\\\");let c=\\\"\\\";const d=a.length-1;for(let e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:\\\"%s\\\");return c+a[d]}\\nfunction module$contents$goog$asserts_doAssertFailure(a,b,c,d){let e=\\\"Assertion failed\\\",f;c?(e+=\\\": \\\"+c,f=d):a&&(e+=\\\": \\\"+a,f=b);a=new module$contents$goog$asserts_AssertionError(\\\"\\\"+e,f||[]);module$contents$goog$asserts_errorHandler_(a)}goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(module$contents$goog$asserts_errorHandler_=a)};\\ngoog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&module$contents$goog$asserts_doAssertFailure(\\\"\\\",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected to exist: %s.\\\",[a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&module$contents$goog$asserts_errorHandler_(new module$contents$goog$asserts_AssertionError(\\\"Failure\\\"+(a?\\\": \\\"+a:\\\"\\\"),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&\\\"number\\\"!==typeof a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected number but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&\\\"string\\\"!==typeof a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected string but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&\\\"function\\\"!==typeof a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected function but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&module$contents$goog$asserts_doAssertFailure(\\\"Expected object but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!Array.isArray(a)&&module$contents$goog$asserts_doAssertFailure(\\\"Expected array but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&\\\"boolean\\\"!==typeof a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected boolean but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||module$contents$goog$asserts_doAssertFailure(\\\"Expected Element but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||module$contents$goog$asserts_doAssertFailure(\\\"Expected instanceof %s but got %s.\\\",[module$contents$goog$asserts_getType(b),module$contents$goog$asserts_getType(a)],c,Array.prototype.slice.call(arguments,3));return a};\\ngoog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||\\\"number\\\"==typeof a&&isFinite(a)||module$contents$goog$asserts_doAssertFailure(\\\"Expected %s to be a finite number but it is not.\\\",[a],b,Array.prototype.slice.call(arguments,2));return a};\\nfunction module$contents$goog$asserts_getType(a){return a instanceof Function?a.displayName||a.name||\\\"unknown type name\\\":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?\\\"null\\\":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;const module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.ASSUME_NATIVE_FUNCTIONS=module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS;function module$contents$goog$array_peek(a){return a[a.length-1]}goog.array.peek=module$contents$goog$array_peek;goog.array.last=module$contents$goog$array_peek;\\nconst module$contents$goog$array_indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(\\\"string\\\"===typeof a)return\\\"string\\\"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};goog.array.indexOf=module$contents$goog$array_indexOf;\\nconst module$contents$goog$array_lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(\\\"string\\\"===typeof a)return\\\"string\\\"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};\\ngoog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEach=module$contents$goog$array_forEach;\\nfunction module$contents$goog$array_forEachRight(a,b,c){var d=a.length;const e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)}goog.array.forEachRight=module$contents$goog$array_forEachRight;\\nconst module$contents$goog$array_filter=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){const d=a.length,e=[];let f=0;const g=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let h=0;h<d;h++)if(h in g){const k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};goog.array.filter=module$contents$goog$array_filter;\\nconst module$contents$goog$array_map=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){const d=a.length,e=Array(d),f=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};goog.array.map=module$contents$goog$array_map;\\nconst module$contents$goog$array_reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEach(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduce=module$contents$goog$array_reduce;\\nconst module$contents$goog$array_reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEachRight(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduceRight=module$contents$goog$array_reduceRight;\\nconst module$contents$goog$array_some=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){const d=a.length,e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};goog.array.some=module$contents$goog$array_some;\\nconst module$contents$goog$array_every=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){const d=a.length,e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.every=module$contents$goog$array_every;\\nfunction module$contents$goog$array_count(a,b,c){let d=0;module$contents$goog$array_forEach(a,function(e,f,g){b.call(c,e,f,g)&&++d},c);return d}goog.array.count=module$contents$goog$array_count;function module$contents$goog$array_find(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0>b?null:\\\"string\\\"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find;\\nfunction module$contents$goog$array_findIndex(a,b,c){const d=a.length,e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1}goog.array.findIndex=module$contents$goog$array_findIndex;function module$contents$goog$array_findRight(a,b,c){b=module$contents$goog$array_findIndexRight(a,b,c);return 0>b?null:\\\"string\\\"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight;\\nfunction module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty;\\nfunction module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt;\\nfunction module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore;\\nfunction module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast;\\nfunction module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf;\\nfunction module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)}\\ngoog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0<b){const c=Array(b);for(let d=0;d<b;d++)c[d]=a[d];return c}return[]}const module$contents$goog$array_clone=goog.array.toArray=module$contents$goog$array_toArray;goog.array.clone=module$contents$goog$array_toArray;\\nfunction module$contents$goog$array_extend(a,b){for(let c=1;c<arguments.length;c++){const d=arguments[c];if(goog.isArrayLike(d)){const e=a.length||0,f=d.length||0;a.length=e+f;for(let g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}}goog.array.extend=module$contents$goog$array_extend;function module$contents$goog$array_splice(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,module$contents$goog$array_slice(arguments,1))}goog.array.splice=module$contents$goog$array_splice;\\nfunction module$contents$goog$array_slice(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice;\\nfunction module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?\\\"o\\\"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e<a.length;){const g=a[e++],h=c(g);Object.prototype.hasOwnProperty.call(f,h)||(f[h]=!0,b[d++]=g)}b.length=d}goog.array.removeDuplicates=module$contents$goog$array_removeDuplicates;\\nfunction module$contents$goog$array_binarySearch(a,b,c){return module$contents$goog$array_binarySearch_(a,c||module$contents$goog$array_defaultCompare,!1,b)}goog.array.binarySearch=module$contents$goog$array_binarySearch;function module$contents$goog$array_binarySelect(a,b,c){return module$contents$goog$array_binarySearch_(a,b,!0,void 0,c)}goog.array.binarySelect=module$contents$goog$array_binarySelect;\\nfunction module$contents$goog$array_binarySearch_(a,b,c,d,e){let f=0,g=a.length,h;for(;f<g;){const k=f+(g-f>>>1);let l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:-f-1}function module$contents$goog$array_sort(a,b){a.sort(b||module$contents$goog$array_defaultCompare)}goog.array.sort=module$contents$goog$array_sort;\\nfunction module$contents$goog$array_stableSort(a,b){const c=Array(a.length);for(let e=0;e<a.length;e++)c[e]={index:e,value:a[e]};const d=b||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(c,function(e,f){return d(e.value,f.value)||e.index-f.index});for(b=0;b<a.length;b++)a[b]=c[b].value}goog.array.stableSort=module$contents$goog$array_stableSort;\\nfunction module$contents$goog$array_sortByKey(a,b,c){const d=c||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(a,function(e,f){return d(b(e),b(f))})}goog.array.sortByKey=module$contents$goog$array_sortByKey;function module$contents$goog$array_sortObjectsByKey(a,b,c){module$contents$goog$array_sortByKey(a,function(d){return d[b]},c)}goog.array.sortObjectsByKey=module$contents$goog$array_sortObjectsByKey;\\nfunction module$contents$goog$array_isSorted(a,b,c){b=b||module$contents$goog$array_defaultCompare;for(let d=1;d<a.length;d++){const e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0}goog.array.isSorted=module$contents$goog$array_isSorted;function module$contents$goog$array_equals(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;const d=a.length;c=c||module$contents$goog$array_defaultCompareEquality;for(let e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0}\\ngoog.array.equals=module$contents$goog$array_equals;function module$contents$goog$array_compare3(a,b,c){c=c||module$contents$goog$array_defaultCompare;const d=Math.min(a.length,b.length);for(let e=0;e<d;e++){const f=c(a[e],b[e]);if(0!=f)return f}return module$contents$goog$array_defaultCompare(a.length,b.length)}goog.array.compare3=module$contents$goog$array_compare3;function module$contents$goog$array_defaultCompare(a,b){return a>b?1:a<b?-1:0}goog.array.defaultCompare=module$contents$goog$array_defaultCompare;\\nfunction module$contents$goog$array_inverseDefaultCompare(a,b){return-module$contents$goog$array_defaultCompare(a,b)}goog.array.inverseDefaultCompare=module$contents$goog$array_inverseDefaultCompare;function module$contents$goog$array_defaultCompareEquality(a,b){return a===b}goog.array.defaultCompareEquality=module$contents$goog$array_defaultCompareEquality;\\nfunction module$contents$goog$array_binaryInsert(a,b,c){c=module$contents$goog$array_binarySearch(a,b,c);return 0>c?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove;\\nfunction module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;e<a.length;e++){const f=a[e],g=b.call(c,f,e,a);void 0!==g&&(d[g]||(d[g]=[])).push(f)}return d}goog.array.bucket=module$contents$goog$array_bucket;function module$contents$goog$array_bucketToMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d],f=b(e,d,a);if(void 0!==f){let g=c.get(f);g||(g=[],c.set(f,g));g.push(e)}}return c}goog.array.bucketToMap=module$contents$goog$array_bucketToMap;\\nfunction module$contents$goog$array_toObject(a,b,c){const d={};module$contents$goog$array_forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d}goog.array.toObject=module$contents$goog$array_toObject;function module$contents$goog$array_toMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d];c.set(b(e,d,a),e)}return c}goog.array.toMap=module$contents$goog$array_toMap;\\nfunction module$contents$goog$array_range(a,b,c){const d=[];let e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;d<b;d++)c[d]=a;return c}goog.array.repeat=module$contents$goog$array_repeat;\\nfunction module$contents$goog$array_flatten(a){const b=[];for(let d=0;d<arguments.length;d++){const e=arguments[d];if(Array.isArray(e))for(let f=0;f<e.length;f+=8192){var c=module$contents$goog$array_slice(e,f,f+8192);c=module$contents$goog$array_flatten.apply(null,c);for(let g=0;g<c.length;g++)b.push(c[g])}else b.push(e)}return b}goog.array.flatten=module$contents$goog$array_flatten;\\nfunction module$contents$goog$array_rotate(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])}goog.array.moveItem=module$contents$goog$array_moveItem;\\nfunction module$contents$goog$array_zip(a){if(!arguments.length)return[];const b=[];let c=arguments[0].length;for(var d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){const e=[];for(let f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b}goog.array.zip=module$contents$goog$array_zip;function module$contents$goog$array_shuffle(a,b){b=b||Math.random;for(let c=a.length-1;0<c;c--){const d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}}\\ngoog.array.shuffle=module$contents$goog$array_shuffle;function module$contents$goog$array_copyByIndex(a,b){const c=[];module$contents$goog$array_forEach(b,function(d){c.push(a[d])});return c}goog.array.copyByIndex=module$contents$goog$array_copyByIndex;function module$contents$goog$array_concatMap(a,b,c){return module$contents$goog$array_concat.apply([],module$contents$goog$array_map(a,b,c))}goog.array.concatMap=module$contents$goog$array_concatMap;goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail(\\\"Argument is not a Location (or a non-Element mock); got: %s\\\",goog.dom.asserts.debugStringForType_(a))}return a};\\ngoog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&\\\"undefined\\\"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail(\\\"Argument is not a %s (or a non-Element, non-Location mock); got: %s\\\",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLAnchorElement\\\")};\\ngoog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLButtonElement\\\")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLLinkElement\\\")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLImageElement\\\")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLAudioElement\\\")};\\ngoog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLVideoElement\\\")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLInputElement\\\")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLTextAreaElement\\\")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLCanvasElement\\\")};\\ngoog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLEmbedElement\\\")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLFormElement\\\")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLFrameElement\\\")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLIFrameElement\\\")};\\ngoog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLObjectElement\\\")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLScriptElement\\\")};\\ngoog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return\\\"<object could not be stringified>\\\"}else return void 0===a?\\\"undefined\\\":null===a?\\\"null\\\":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};\\ngoog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}};\\ngoog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}};\\ngoog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e<c;e++)d=b[e].apply(this,arguments);return d}};goog.functions.and=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(!b[d].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(b[d].apply(this,arguments))return!0;return!1}};\\ngoog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){let b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){let b=a;return function(){if(b){const c=b;b=null;c()}}};\\ngoog.functions.debounce=function(a,b,c){let d=0;return function(e){goog.global.clearTimeout(d);const f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){let d=0,e=!1,f=[];const g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);let k=f;f=[];a.apply(c,k)};return function(k){f=arguments;d?e=!0:h()}};\\ngoog.functions.rateLimit=function(a,b,c){let d=0;const e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.functions.isFunction=a=>\\\"function\\\"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||\\\"\\\";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};\\ngoog.DEBUG&&(goog.string.Const.prototype.toString=function(){return\\\"Const{\\\"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+\\\"}\\\"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail(\\\"expected object of type Const, got '\\\"+a+\\\"'\\\");return\\\"type_error:Const\\\"};\\ngoog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from(\\\"\\\");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+\\\"#html\\\":\\\"\\\";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={};\\nclass module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:\\\"\\\";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof\\nmodule$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)(\\\"expected object of type SafeScript, got '\\\"+a+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:SafeScript\\\"}static stringify_(a){return JSON.stringify(a).replace(/</g,\\\"\\\\\\\\x3c\\\")}static createSafeScriptSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScript(a):\\na;return new module$contents$goog$html$SafeScript_SafeScript(a,module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE)}}module$contents$goog$html$SafeScript_SafeScript.EMPTY=function(){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(\\\"\\\")}();goog.html.SafeScript=module$contents$goog$html$SafeScript_SafeScript;goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.UrlObject_=function(){};goog.fs.url.UrlObject_.prototype.createObjectURL=function(a){};goog.fs.url.UrlObject_.prototype.revokeObjectURL=function(a){};\\ngoog.fs.url.getUrlObject_=function(){const a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error(\\\"This browser doesn't seem to support blob URLs\\\");};goog.fs.url.findUrlObject_=function(){return void 0!==goog.global.URL&&void 0!==goog.global.URL.createObjectURL?goog.global.URL:void 0!==goog.global.createObjectURL?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.fs.blob={};goog.fs.blob.getBlob=function(a){var b=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==b){b=new b;for(let c=0;c<arguments.length;c++)b.append(arguments[c]);return b.getBlob()}return goog.fs.blob.getBlobWithProperties(Array.prototype.slice.call(arguments))};\\ngoog.fs.blob.getBlobWithProperties=function(a,b,c){var d=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==d){d=new d;for(let e=0;e<a.length;e++)d.append(a[e],c);return d.getBlob(b)}if(void 0!==goog.global.Blob)return d={},b&&(d.type=b),c&&(d.endings=c),new Blob(a,d);throw Error(\\\"This browser doesn't seem to support creating Blobs\\\");};goog.html.TrustedResourceUrl=class{constructor(a,b){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=b===goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:\\\"\\\"}toString(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+\\\"\\\"}};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};\\ngoog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||\\\"\\\";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_(\\\"?\\\",c[2]||\\\"\\\",a)+goog.html.TrustedResourceUrl.stringifyParams_(\\\"#\\\",d,b))};goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};\\ngoog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail(\\\"expected object of type TrustedResourceUrl, got '\\\"+a+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:TrustedResourceUrl\\\"};\\ngoog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error(\\\"Invalid TrustedResourceUrl format: \\\"+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(d,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error('Found marker, \\\"'+e+'\\\", in format string, \\\"'+c+'\\\", but no valid label mapping found in args: '+JSON.stringify(b));d=b[e];return d instanceof goog.string.Const?goog.string.Const.unwrap(d):\\nencodeURIComponent(String(d))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\\\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=RegExp(\\\"^((https:)?//[0-9a-z.:[\\\\\\\\]-]+/|/[^/\\\\\\\\\\\\\\\\]|[^:/\\\\\\\\\\\\\\\\%]+/|[^:/\\\\\\\\\\\\\\\\%]*[?#]|about:blank#)\\\",\\\"i\\\");goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\\\?[^#]*)?(#[\\\\s\\\\S]*)?/;\\ngoog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b=\\\"\\\",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.TrustedResourceUrl.fromSafeScript=function(a){a=goog.fs.blob.getBlobWithProperties([module$contents$goog$html$SafeScript_SafeScript.unwrap(a)],\\\"text/javascript\\\");a=goog.fs.url.createObjectUrl(a);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};\\ngoog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScriptURL(a):a;return new goog.html.TrustedResourceUrl(a,goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};\\ngoog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if(\\\"string\\\"===typeof c)return c?a+encodeURIComponent(c):\\\"\\\";for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var e=c[d];e=Array.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?\\\"&\\\":\\\"\\\")+encodeURIComponent(d)+\\\"=\\\"+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))};\\ngoog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\\\\s\\\\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\\\\s\\\\xa0]*([\\\\s\\\\S]*?)[\\\\s\\\\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};\\ngoog.string.internal.newLineToBr=function(a,b){return a.replace(/(\\\\r\\\\n|\\\\r|\\\\n)/g,b?\\\"<br />\\\":\\\"<br>\\\")};\\ngoog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,\\\"&amp;\\\").replace(goog.string.internal.LT_RE_,\\\"&lt;\\\").replace(goog.string.internal.GT_RE_,\\\"&gt;\\\").replace(goog.string.internal.QUOT_RE_,\\\"&quot;\\\").replace(goog.string.internal.SINGLE_QUOTE_RE_,\\\"&#39;\\\").replace(goog.string.internal.NULL_RE_,\\\"&#0;\\\");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf(\\\"&\\\")&&(a=a.replace(goog.string.internal.AMP_RE_,\\\"&amp;\\\"));-1!=a.indexOf(\\\"<\\\")&&(a=a.replace(goog.string.internal.LT_RE_,\\n\\\"&lt;\\\"));-1!=a.indexOf(\\\">\\\")&&(a=a.replace(goog.string.internal.GT_RE_,\\\"&gt;\\\"));-1!=a.indexOf('\\\"')&&(a=a.replace(goog.string.internal.QUOT_RE_,\\\"&quot;\\\"));-1!=a.indexOf(\\\"'\\\")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,\\\"&#39;\\\"));-1!=a.indexOf(\\\"\\\\x00\\\")&&(a=a.replace(goog.string.internal.NULL_RE_,\\\"&#0;\\\"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/\\\"/g;goog.string.internal.SINGLE_QUOTE_RE_=/'/g;\\ngoog.string.internal.NULL_RE_=/\\\\x00/g;goog.string.internal.ALL_RE_=/[\\\\x00&<>\\\"']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g,\\\" &#160;\\\"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};\\ngoog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(\\\".\\\");b=goog.string.internal.trim(String(b)).split(\\\".\\\");const d=Math.max(a.length,b.length);for(let g=0;0==c&&g<d;g++){var e=a[g]||\\\"\\\",f=b[g]||\\\"\\\";do{e=/(\\\\d*)(\\\\D*)(.*)/.exec(e)||[\\\"\\\",\\\"\\\",\\\"\\\",\\\"\\\"];f=/(\\\\d*)(\\\\D*)(.*)/.exec(f)||[\\\"\\\",\\\"\\\",\\\"\\\",\\\"\\\"];if(0==e[0].length&&0==f[0].length)break;c=0==e[1].length?0:parseInt(e[1],10);const h=0==f[1].length?0:parseInt(f[1],10);c=goog.string.internal.compareElements_(c,h)||\\ngoog.string.internal.compareElements_(0==e[2].length,0==f[2].length)||goog.string.internal.compareElements_(e[2],f[2]);e=e[3];f=f[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:\\\"\\\"}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING=\\\"about:invalid#zClosurez\\\";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};\\ngoog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail(\\\"expected object of type SafeUrl, got '\\\"+a+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:SafeUrl\\\"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};\\ngoog.html.SAFE_MIME_TYPE_PATTERN_=RegExp('^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\\\\\\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\\\\\\\w+=(?:\\\\\\\\w+|\\\"[\\\\\\\\w;,= ]+\\\"))*$',\\\"i\\\");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};\\ngoog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)};\\ngoog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert(\\\"MediaSource\\\"in goog.global,\\\"No support for MediaSource\\\");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\\\\/]+=*$/i;\\ngoog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,\\\"\\\");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"tel:\\\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SIP_URL_PATTERN_=RegExp(\\\"^sip[s]?:[+a-z0-9_.!$%&'*\\\\\\\\/=^`{|}~-]+@([a-z0-9-]+\\\\\\\\.)+[a-z0-9]{2,63}$\\\",\\\"i\\\");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"fb-messenger://share\\\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"whatsapp://send\\\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"sms:\\\")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf(\\\"#\\\");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\\\\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"ssh://\\\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\\\/\\\\/([^\\\\/]+)\\\\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\\\/\\\\/([^\\\\/]+)\\\\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\\\/\\\\/([^\\\\/]+)\\\\//,a,b)};\\ngoog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(d){return goog.string.Const.unwrap(d)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};\\ngoog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.trySanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a=\\\"object\\\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SAFE_URL_PATTERN_.test(a)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):goog.html.SafeUrl.tryFromDataUrl(a)};\\ngoog.html.SafeUrl.sanitize=function(a){return goog.html.SafeUrl.trySanitize(a)||goog.html.SafeUrl.INNOCUOUS_URL};\\ngoog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a=\\\"object\\\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),\\\"%s does not match the safe URL pattern\\\",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){return new goog.html.SafeUrl(a,goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};goog.html.SafeUrl.INNOCUOUS_URL=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.SafeUrl.INNOCUOUS_STRING);goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\\\"about:blank\\\");const module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE={};\\nclass module$contents$goog$html$SafeStyle_SafeStyle{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=b===module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE?a:\\\"\\\";this.implementsGoogStringTypedString=!0}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;(0,goog.asserts.assert)((0,goog.string.internal.endsWith)(a,\\\";\\\"),`Last character of style string is not ';': ${a}`);(0,goog.asserts.assert)((0,goog.string.internal.contains)(a,\\n\\\":\\\"),\\\"Style string must contain at least one ':', to specify a \\\\\\\"name: value\\\\\\\" pair: \\\"+a);return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_}toString(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString()}static unwrap(a){if(a instanceof module$contents$goog$html$SafeStyle_SafeStyle&&a.constructor===module$contents$goog$html$SafeStyle_SafeStyle)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;\\n(0,goog.asserts.fail)(`expected object of type SafeStyle, got '${a}`+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:SafeStyle\\\"}static createSafeStyleSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyle_SafeStyle(a,module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE)}static create(a){let b=\\\"\\\";for(let c in a)if(Object.prototype.hasOwnProperty.call(a,c)){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(`Name allows only [-_a-zA-Z0-9], got: ${c}`);let d=a[c];null!=d&&\\n(d=Array.isArray(d)?d.map(module$contents$goog$html$SafeStyle_sanitizePropertyValue).join(\\\" \\\"):module$contents$goog$html$SafeStyle_sanitizePropertyValue(d),b+=`${c}:${d};`)}return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}static concat(a){let b=\\\"\\\";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c);\\nreturn b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(\\\"\\\");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING=\\\"zClosurez\\\";\\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return'url(\\\"'+goog.html.SafeUrl.unwrap(a).replace(/</g,\\\"%3c\\\").replace(/[\\\\\\\\\\\"]/g,\\\"\\\\\\\\$&\\\")+'\\\")';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):module$contents$goog$html$SafeStyle_sanitizePropertyValueString(String(a));if(/[{;}]/.test(a))throw new module$contents$goog$asserts_AssertionError(\\\"Value does not allow [{;}], got: %s.\\\",[a]);return a}\\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValueString(a){const b=a.replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,\\\"$1\\\").replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,\\\"$1\\\").replace(module$contents$goog$html$SafeStyle_URL_RE,\\\"url\\\");if(module$contents$goog$html$SafeStyle_VALUE_RE.test(b)){if(module$contents$goog$html$SafeStyle_COMMENT_RE.test(a))return(0,goog.asserts.fail)(`String value disallows comments, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;\\nif(!module$contents$goog$html$SafeStyle_hasBalancedQuotes(a))return(0,goog.asserts.fail)(`String value requires balanced quotes, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;if(!module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a))return(0,goog.asserts.fail)(\\\"String value requires balanced square brackets and one identifier per pair of brackets, got: \\\"+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING}else return(0,goog.asserts.fail)(`String value allows only ${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}`+\\n\\\" and simple functions, got: \\\"+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;return module$contents$goog$html$SafeStyle_sanitizeUrl(a)}function module$contents$goog$html$SafeStyle_hasBalancedQuotes(a){let b=!0,c=!0;for(let d=0;d<a.length;d++){const e=a.charAt(d);\\\"'\\\"==e&&c?b=!b:'\\\"'==e&&b&&(c=!c)}return b&&c}\\nfunction module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a){let b=!0;const c=/^[-_a-zA-Z0-9]$/;for(let d=0;d<a.length;d++){const e=a.charAt(d);if(\\\"]\\\"==e){if(b)return!1;b=!0}else if(\\\"[\\\"==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b}\\nconst module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS=\\\"[-,.\\\\\\\"'%_!#/ a-zA-Z0-9\\\\\\\\[\\\\\\\\]]\\\",module$contents$goog$html$SafeStyle_VALUE_RE=new RegExp(`^${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}+\\\\$`),module$contents$goog$html$SafeStyle_URL_RE=RegExp(\\\"\\\\\\\\b(url\\\\\\\\([ \\\\t\\\\n]*)('[ -&(-\\\\\\\\[\\\\\\\\]-~]*'|\\\\\\\"[ !#-\\\\\\\\[\\\\\\\\]-~]*\\\\\\\"|[!#-&*-\\\\\\\\[\\\\\\\\]-~]*)([ \\\\t\\\\n]*\\\\\\\\))\\\",\\\"g\\\"),module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS=\\\"calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax radial-gradient repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)? steps var\\\".split(\\\" \\\"),\\nmodule$contents$goog$html$SafeStyle_FUNCTIONS_RE=new RegExp(\\\"\\\\\\\\b(\\\"+module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS.join(\\\"|\\\")+\\\")\\\\\\\\([-+*/0-9a-zA-Z.%#\\\\\\\\[\\\\\\\\], ]+\\\\\\\\)\\\",\\\"g\\\"),module$contents$goog$html$SafeStyle_COMMENT_RE=/\\\\/\\\\*/;function module$contents$goog$html$SafeStyle_sanitizeUrl(a){return a.replace(module$contents$goog$html$SafeStyle_URL_RE,(b,c,d,e)=>{let f=\\\"\\\";d=d.replace(/^(['\\\"])(.*)\\\\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})}\\ngoog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1}\\nfunction module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)}\\nfunction module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a}function module$contents$goog$object_containsKey(a,b){return null!==a&&b in a}\\nfunction module$contents$goog$object_containsValue(a,b){for(const c in a)if(a[c]==b)return!0;return!1}function module$contents$goog$object_findKey(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return d}function module$contents$goog$object_findValue(a,b,c){return(b=module$contents$goog$object_findKey(a,b,c))&&a[b]}function module$contents$goog$object_isEmpty(a){for(const b in a)return!1;return!0}function module$contents$goog$object_clear(a){for(const b in a)delete a[b]}\\nfunction module$contents$goog$object_remove(a,b){let c;(c=b in a)&&delete a[b];return c}function module$contents$goog$object_add(a,b,c){if(null!==a&&b in a)throw Error(`The object already contains the key \\\"${b}\\\"`);module$contents$goog$object_set(a,b,c)}function module$contents$goog$object_get(a,b,c){return null!==a&&b in a?a[b]:c}function module$contents$goog$object_set(a,b,c){a[b]=c}function module$contents$goog$object_setIfUndefined(a,b,c){return b in a?a[b]:a[b]=c}\\nfunction module$contents$goog$object_setWithReturnValueIfNotSet(a,b,c){if(b in a)return a[b];c=c();return a[b]=c}function module$contents$goog$object_equals(a,b){for(const c in a)if(!(c in b)||a[c]!==b[c])return!1;for(const c in b)if(!(c in a))return!1;return!0}function module$contents$goog$object_clone(a){const b={};for(const c in a)b[c]=a[c];return b}\\nfunction module$contents$goog$object_unsafeClone(a){if(!a||\\\"object\\\"!==typeof a)return a;if(\\\"function\\\"===typeof a.clone)return a.clone();if(\\\"undefined\\\"!==typeof Map&&a instanceof Map)return new Map(a);if(\\\"undefined\\\"!==typeof Set&&a instanceof Set)return new Set(a);if(a instanceof Date)return new Date(a.getTime());const b=Array.isArray(a)?[]:\\\"function\\\"!==typeof ArrayBuffer||\\\"function\\\"!==typeof ArrayBuffer.isView||!ArrayBuffer.isView(a)||a instanceof DataView?{}:new a.constructor(a.length);for(const c in a)b[c]=\\nmodule$contents$goog$object_unsafeClone(a[c]);return b}function module$contents$goog$object_transpose(a){const b={};for(const c in a)b[a[c]]=c;return b}const module$contents$goog$object_PROTOTYPE_FIELDS=\\\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\\\".split(\\\" \\\");\\nfunction module$contents$goog$object_extend(a,b){let c,d;for(let e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(let f=0;f<module$contents$goog$object_PROTOTYPE_FIELDS.length;f++)c=module$contents$goog$object_PROTOTYPE_FIELDS[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}}\\nfunction module$contents$goog$object_create(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_create.apply(null,arguments[0]);if(b%2)throw Error(\\\"Uneven number of arguments\\\");const c={};for(let d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c}\\nfunction module$contents$goog$object_createSet(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_createSet.apply(null,arguments[0]);const c={};for(let d=0;d<b;d++)c[arguments[d]]=!0;return c}function module$contents$goog$object_createImmutableView(a){let b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b}function module$contents$goog$object_isImmutableView(a){return!!Object.isFrozen&&Object.isFrozen(a)}\\nfunction module$contents$goog$object_getAllPropertyNames(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return module$contents$goog$object_getKeys(a);const d={};for(;a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){const e=Object.getOwnPropertyNames(a);for(let f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return module$contents$goog$object_getKeys(d)}\\nfunction module$contents$goog$object_getSuperClass(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor}goog.object.add=module$contents$goog$object_add;goog.object.clear=module$contents$goog$object_clear;goog.object.clone=module$contents$goog$object_clone;goog.object.contains=module$contents$goog$object_contains;goog.object.containsKey=module$contents$goog$object_containsKey;goog.object.containsValue=module$contents$goog$object_containsValue;goog.object.create=module$contents$goog$object_create;\\ngoog.object.createImmutableView=module$contents$goog$object_createImmutableView;goog.object.createSet=module$contents$goog$object_createSet;goog.object.equals=module$contents$goog$object_equals;goog.object.every=module$contents$goog$object_every;goog.object.extend=module$contents$goog$object_extend;goog.object.filter=module$contents$goog$object_filter;goog.object.findKey=module$contents$goog$object_findKey;goog.object.findValue=module$contents$goog$object_findValue;goog.object.forEach=module$contents$goog$object_forEach;\\ngoog.object.get=module$contents$goog$object_get;goog.object.getAllPropertyNames=module$contents$goog$object_getAllPropertyNames;goog.object.getAnyKey=module$contents$goog$object_getAnyKey;goog.object.getAnyValue=module$contents$goog$object_getAnyValue;goog.object.getCount=module$contents$goog$object_getCount;goog.object.getKeys=module$contents$goog$object_getKeys;goog.object.getSuperClass=module$contents$goog$object_getSuperClass;goog.object.getValueByKeys=module$contents$goog$object_getValueByKeys;\\ngoog.object.getValues=module$contents$goog$object_getValues;goog.object.isEmpty=module$contents$goog$object_isEmpty;goog.object.isImmutableView=module$contents$goog$object_isImmutableView;goog.object.map=module$contents$goog$object_map;goog.object.remove=module$contents$goog$object_remove;goog.object.set=module$contents$goog$object_set;goog.object.setIfUndefined=module$contents$goog$object_setIfUndefined;goog.object.setWithReturnValueIfNotSet=module$contents$goog$object_setWithReturnValueIfNotSet;\\ngoog.object.some=module$contents$goog$object_some;goog.object.transpose=module$contents$goog$object_transpose;goog.object.unsafeClone=module$contents$goog$object_unsafeClone;const module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE={};\\nclass module$contents$goog$html$SafeStyleSheet_SafeStyleSheet{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=b===module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE?a:\\\"\\\";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString()}static createRule(a,b){if((0,goog.string.internal.contains)(a,\\\"<\\\"))throw Error(`Selector does not allow '<', got: ${a}`);const c=a.replace(/('|\\\")((?!\\\\1)[^\\\\r\\\\n\\\\f\\\\\\\\]|\\\\\\\\[\\\\s\\\\S])*\\\\1/g,\\n\\\"\\\");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|]+$/.test(c))throw Error(\\\"Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\\\\\]()=^$|] and strings, got: \\\"+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error(\\\"() and [] in selector must be balanced, got: \\\"+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/</g,\\\"\\\\\\\\3C \\\")+\\\"}\\\";\\nreturn module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}static hasBalancedBrackets_(a){const b={\\\"(\\\":\\\")\\\",\\\"[\\\":\\\"]\\\"},c=[];for(let d=0;d<a.length;d++){const e=a[d];if(b[e])c.push(b[e]);else if(module$contents$goog$object_contains(b,e)&&c.pop()!=e)return!1}return 0==c.length}static concat(a){let b=\\\"\\\";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments,\\nc);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,\\\"<\\\"),`Forbidden '<' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof\\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)(\\\"expected object of type SafeStyleSheet, got '\\\"+a+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:SafeStyleSheet\\\"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}}\\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(\\\"\\\");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A=\\\"A\\\";goog.dom.TagName.ABBR=\\\"ABBR\\\";goog.dom.TagName.ACRONYM=\\\"ACRONYM\\\";goog.dom.TagName.ADDRESS=\\\"ADDRESS\\\";goog.dom.TagName.APPLET=\\\"APPLET\\\";goog.dom.TagName.AREA=\\\"AREA\\\";goog.dom.TagName.ARTICLE=\\\"ARTICLE\\\";goog.dom.TagName.ASIDE=\\\"ASIDE\\\";goog.dom.TagName.AUDIO=\\\"AUDIO\\\";goog.dom.TagName.B=\\\"B\\\";goog.dom.TagName.BASE=\\\"BASE\\\";goog.dom.TagName.BASEFONT=\\\"BASEFONT\\\";goog.dom.TagName.BDI=\\\"BDI\\\";goog.dom.TagName.BDO=\\\"BDO\\\";\\ngoog.dom.TagName.BIG=\\\"BIG\\\";goog.dom.TagName.BLOCKQUOTE=\\\"BLOCKQUOTE\\\";goog.dom.TagName.BODY=\\\"BODY\\\";goog.dom.TagName.BR=\\\"BR\\\";goog.dom.TagName.BUTTON=\\\"BUTTON\\\";goog.dom.TagName.CANVAS=\\\"CANVAS\\\";goog.dom.TagName.CAPTION=\\\"CAPTION\\\";goog.dom.TagName.CENTER=\\\"CENTER\\\";goog.dom.TagName.CITE=\\\"CITE\\\";goog.dom.TagName.CODE=\\\"CODE\\\";goog.dom.TagName.COL=\\\"COL\\\";goog.dom.TagName.COLGROUP=\\\"COLGROUP\\\";goog.dom.TagName.COMMAND=\\\"COMMAND\\\";goog.dom.TagName.DATA=\\\"DATA\\\";goog.dom.TagName.DATALIST=\\\"DATALIST\\\";goog.dom.TagName.DD=\\\"DD\\\";\\ngoog.dom.TagName.DEL=\\\"DEL\\\";goog.dom.TagName.DETAILS=\\\"DETAILS\\\";goog.dom.TagName.DFN=\\\"DFN\\\";goog.dom.TagName.DIALOG=\\\"DIALOG\\\";goog.dom.TagName.DIR=\\\"DIR\\\";goog.dom.TagName.DIV=\\\"DIV\\\";goog.dom.TagName.DL=\\\"DL\\\";goog.dom.TagName.DT=\\\"DT\\\";goog.dom.TagName.EM=\\\"EM\\\";goog.dom.TagName.EMBED=\\\"EMBED\\\";goog.dom.TagName.FIELDSET=\\\"FIELDSET\\\";goog.dom.TagName.FIGCAPTION=\\\"FIGCAPTION\\\";goog.dom.TagName.FIGURE=\\\"FIGURE\\\";goog.dom.TagName.FONT=\\\"FONT\\\";goog.dom.TagName.FOOTER=\\\"FOOTER\\\";goog.dom.TagName.FORM=\\\"FORM\\\";\\ngoog.dom.TagName.FRAME=\\\"FRAME\\\";goog.dom.TagName.FRAMESET=\\\"FRAMESET\\\";goog.dom.TagName.H1=\\\"H1\\\";goog.dom.TagName.H2=\\\"H2\\\";goog.dom.TagName.H3=\\\"H3\\\";goog.dom.TagName.H4=\\\"H4\\\";goog.dom.TagName.H5=\\\"H5\\\";goog.dom.TagName.H6=\\\"H6\\\";goog.dom.TagName.HEAD=\\\"HEAD\\\";goog.dom.TagName.HEADER=\\\"HEADER\\\";goog.dom.TagName.HGROUP=\\\"HGROUP\\\";goog.dom.TagName.HR=\\\"HR\\\";goog.dom.TagName.HTML=\\\"HTML\\\";goog.dom.TagName.I=\\\"I\\\";goog.dom.TagName.IFRAME=\\\"IFRAME\\\";goog.dom.TagName.IMG=\\\"IMG\\\";goog.dom.TagName.INPUT=\\\"INPUT\\\";\\ngoog.dom.TagName.INS=\\\"INS\\\";goog.dom.TagName.ISINDEX=\\\"ISINDEX\\\";goog.dom.TagName.KBD=\\\"KBD\\\";goog.dom.TagName.KEYGEN=\\\"KEYGEN\\\";goog.dom.TagName.LABEL=\\\"LABEL\\\";goog.dom.TagName.LEGEND=\\\"LEGEND\\\";goog.dom.TagName.LI=\\\"LI\\\";goog.dom.TagName.LINK=\\\"LINK\\\";goog.dom.TagName.MAIN=\\\"MAIN\\\";goog.dom.TagName.MAP=\\\"MAP\\\";goog.dom.TagName.MARK=\\\"MARK\\\";goog.dom.TagName.MATH=\\\"MATH\\\";goog.dom.TagName.MENU=\\\"MENU\\\";goog.dom.TagName.MENUITEM=\\\"MENUITEM\\\";goog.dom.TagName.META=\\\"META\\\";goog.dom.TagName.METER=\\\"METER\\\";\\ngoog.dom.TagName.NAV=\\\"NAV\\\";goog.dom.TagName.NOFRAMES=\\\"NOFRAMES\\\";goog.dom.TagName.NOSCRIPT=\\\"NOSCRIPT\\\";goog.dom.TagName.OBJECT=\\\"OBJECT\\\";goog.dom.TagName.OL=\\\"OL\\\";goog.dom.TagName.OPTGROUP=\\\"OPTGROUP\\\";goog.dom.TagName.OPTION=\\\"OPTION\\\";goog.dom.TagName.OUTPUT=\\\"OUTPUT\\\";goog.dom.TagName.P=\\\"P\\\";goog.dom.TagName.PARAM=\\\"PARAM\\\";goog.dom.TagName.PICTURE=\\\"PICTURE\\\";goog.dom.TagName.PRE=\\\"PRE\\\";goog.dom.TagName.PROGRESS=\\\"PROGRESS\\\";goog.dom.TagName.Q=\\\"Q\\\";goog.dom.TagName.RP=\\\"RP\\\";goog.dom.TagName.RT=\\\"RT\\\";\\ngoog.dom.TagName.RTC=\\\"RTC\\\";goog.dom.TagName.RUBY=\\\"RUBY\\\";goog.dom.TagName.S=\\\"S\\\";goog.dom.TagName.SAMP=\\\"SAMP\\\";goog.dom.TagName.SCRIPT=\\\"SCRIPT\\\";goog.dom.TagName.SECTION=\\\"SECTION\\\";goog.dom.TagName.SELECT=\\\"SELECT\\\";goog.dom.TagName.SMALL=\\\"SMALL\\\";goog.dom.TagName.SOURCE=\\\"SOURCE\\\";goog.dom.TagName.SPAN=\\\"SPAN\\\";goog.dom.TagName.STRIKE=\\\"STRIKE\\\";goog.dom.TagName.STRONG=\\\"STRONG\\\";goog.dom.TagName.STYLE=\\\"STYLE\\\";goog.dom.TagName.SUB=\\\"SUB\\\";goog.dom.TagName.SUMMARY=\\\"SUMMARY\\\";goog.dom.TagName.SUP=\\\"SUP\\\";\\ngoog.dom.TagName.SVG=\\\"SVG\\\";goog.dom.TagName.TABLE=\\\"TABLE\\\";goog.dom.TagName.TBODY=\\\"TBODY\\\";goog.dom.TagName.TD=\\\"TD\\\";goog.dom.TagName.TEMPLATE=\\\"TEMPLATE\\\";goog.dom.TagName.TEXTAREA=\\\"TEXTAREA\\\";goog.dom.TagName.TFOOT=\\\"TFOOT\\\";goog.dom.TagName.TH=\\\"TH\\\";goog.dom.TagName.THEAD=\\\"THEAD\\\";goog.dom.TagName.TIME=\\\"TIME\\\";goog.dom.TagName.TITLE=\\\"TITLE\\\";goog.dom.TagName.TR=\\\"TR\\\";goog.dom.TagName.TRACK=\\\"TRACK\\\";goog.dom.TagName.TT=\\\"TT\\\";goog.dom.TagName.U=\\\"U\\\";goog.dom.TagName.UL=\\\"UL\\\";goog.dom.TagName.VAR=\\\"VAR\\\";\\ngoog.dom.TagName.VIDEO=\\\"VIDEO\\\";goog.dom.TagName.WBR=\\\"WBR\\\";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE=\\\"\\\",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a};\\nconst module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:\\\"\\\"}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null}\\nfunction module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData();\\nfunction module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal=\\\"string\\\"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal}\\nfunction module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal}\\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)}\\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp(\\\"([A-Z][\\\\\\\\w ]+)/([^\\\\\\\\s]+)\\\\\\\\s*(?:\\\\\\\\((.*?)\\\\\\\\))?\\\",\\\"g\\\"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT;\\ngoog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent;\\ngoog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_=\\n!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error(\\\"Unsafe call to resetForTesting\\\");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue(\\\"fullVersionList\\\");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue(\\\"platformVersion\\\");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:\\\"Android Browser\\\",CHROMIUM:\\\"Chromium\\\",EDGE:\\\"Microsoft Edge\\\",FIREFOX:\\\"Firefox\\\",IE:\\\"Internet Explorer\\\",OPERA:\\\"Opera\\\",SAFARI:\\\"Safari\\\",SILK:\\\"Silk\\\"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand;\\nfunction module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0<a.brands.length}\\nfunction module$contents$goog$labs$userAgent$browser_hasFullVersionList(){return module$contents$goog$labs$userAgent$browser_isAtLeast(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM,98)}function module$contents$goog$labs$userAgent$browser_matchOpera(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Opera\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchIE(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Trident\\\")||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"MSIE\\\")}function module$contents$goog$labs$userAgent$browser_matchEdgeHtml(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Edge\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchEdgeChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.EDGE):module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Edg/\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchOperaChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.OPERA):module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"OPR\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchFirefox(){return module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Firefox\\\")||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"FxiOS\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchSafari(){return module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Safari\\\")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchCoast()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_matchEdgeChromium()||module$contents$goog$labs$userAgent$browser_matchOperaChromium()||\\nmodule$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_isSilk()||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Android\\\"))}function module$contents$goog$labs$userAgent$browser_matchCoast(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Coast\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchIosWebview(){return(module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"iPad\\\")||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"iPhone\\\"))&&!module$contents$goog$labs$userAgent$browser_matchSafari()&&!module$contents$goog$labs$userAgent$browser_matchChrome()&&!module$contents$goog$labs$userAgent$browser_matchCoast()&&!module$contents$goog$labs$userAgent$browser_matchFirefox()&&module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"AppleWebKit\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchChrome(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM):(module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Chrome\\\")||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"CriOS\\\"))&&!module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_isSilk()}\\nfunction module$contents$goog$labs$userAgent$browser_matchAndroidBrowser(){return module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Android\\\")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_isSilk())}const module$contents$goog$labs$userAgent$browser_isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;\\ngoog.labs.userAgent.browser.isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;const module$contents$goog$labs$userAgent$browser_isIE=module$contents$goog$labs$userAgent$browser_matchIE;goog.labs.userAgent.browser.isIE=module$contents$goog$labs$userAgent$browser_matchIE;const module$contents$goog$labs$userAgent$browser_isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;goog.labs.userAgent.browser.isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;\\nconst module$contents$goog$labs$userAgent$browser_isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;goog.labs.userAgent.browser.isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;const module$contents$goog$labs$userAgent$browser_isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;goog.labs.userAgent.browser.isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;\\nconst module$contents$goog$labs$userAgent$browser_isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;goog.labs.userAgent.browser.isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;const module$contents$goog$labs$userAgent$browser_isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;goog.labs.userAgent.browser.isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;const module$contents$goog$labs$userAgent$browser_isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;\\ngoog.labs.userAgent.browser.isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;const module$contents$goog$labs$userAgent$browser_isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;goog.labs.userAgent.browser.isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;const module$contents$goog$labs$userAgent$browser_isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;goog.labs.userAgent.browser.isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;\\nconst module$contents$goog$labs$userAgent$browser_isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;goog.labs.userAgent.browser.isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;function module$contents$goog$labs$userAgent$browser_isSilk(){return module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Silk\\\")}goog.labs.userAgent.browser.isSilk=module$contents$goog$labs$userAgent$browser_isSilk;\\nfunction module$contents$goog$labs$userAgent$browser_createVersionMap(a){const b={};a.forEach(c=>{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||\\\"\\\"}\\nfunction module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b([\\\"Version\\\",\\\"Opera\\\"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()?\\nb([\\\"Edge\\\"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b([\\\"Edg\\\"]):module$contents$goog$labs$userAgent$browser_isSilk()?b([\\\"Silk\\\"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b([\\\"Chrome\\\",\\\"CriOS\\\",\\\"HeadlessChrome\\\"]):(a=a[2])&&a[1]||\\\"\\\"}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion;\\nfunction module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher;\\nfunction module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\\\\d\\\\.]*)/.exec(a);if(b&&b[1])return b[1];b=\\\"\\\";const c=/MSIE +([\\\\d\\\\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\\\\/(\\\\d.\\\\d)/.exec(a),\\\"7.0\\\"==c[1])if(a&&a[1])switch(a[1]){case \\\"4.0\\\":b=\\\"8.0\\\";break;case \\\"5.0\\\":b=\\\"9.0\\\";break;case \\\"6.0\\\":b=\\\"10.0\\\";break;case \\\"7.0\\\":b=\\\"11.0\\\"}else b=\\\"7.0\\\";else b=c[1];return b}\\nfunction module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):\\\"\\\";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c([\\\"Version\\\",\\n\\\"Opera\\\"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c([\\\"OPR\\\"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c([\\\"Edge\\\"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c([\\\"Edg\\\"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c([\\\"Chrome\\\",\\\"CriOS\\\",\\\"HeadlessChrome\\\"])}return a===\\nmodule$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&&\\na[1]||\\\"\\\":\\\"\\\"}\\nfunction module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(\\\".\\\")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(\\\"\\\"===b)return NaN;b=b.split(\\\".\\\")}return 0===b.length?NaN:Number(b[0])}\\nfunction module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,\\\"Major version must be an integer\\\");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast;\\nfunction module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,\\\"Major version must be an integer\\\");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost;\\nclass module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a=\\nawait module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;\\nasync function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions;\\ngoog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()};\\nfunction module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b=\\\"\\\";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(\\\"\\\"===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a,\\nc,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf;\\nfunction module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return\\\"\\\"}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)}\\ngoog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={};\\nclass module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:\\\"\\\";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&&\\na.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got '${a}' of type `+goog.typeOf(a));return\\\"type_error:SafeHtml\\\"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=\\\"object\\\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof\\nmodule$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\\\"\\\\x3c!--\\\"+\\ngoog.string.internal.htmlEscape(a)+\\\"--\\\\x3e\\\")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:\\\"\\\");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\\n`Tag name <${a}> is not allowed for SafeHtml.`:\\\"\\\");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:\\\"\\\"},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"iframe\\\",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\\n\\\"The browser does not support sandboxed iframes.\\\":\\\"\\\");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox=\\\"\\\";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"iframe\\\",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&\\\"sandbox\\\"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a);\\na=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"script\\\",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if(\\\"language\\\"==d||\\\"src\\\"==d||\\\"text\\\"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set \\\"${d}\\\" attribute`:\\\"\\\");}c=\\\"\\\";a=module$contents$goog$array_concat(a);for(d=0;d<\\na.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"script\\\",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:\\\"text/css\\\"},{},b);let c=\\\"\\\";a=module$contents$goog$array_concat(a);for(let d=0;d<a.length;d++)c+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(a[d]);\\na=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"style\\\",b,a)}static createMetaRefresh(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(module$contents$goog$labs$userAgent$browser_matchIE()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml())&&goog.string.internal.contains(a,\\\";\\\")&&(a=\\\"'\\\"+a.replace(/'/g,\\\"%27\\\")+\\\"'\\\");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"meta\\\",\\n{\\\"http-equiv\\\":\\\"refresh\\\",content:(b||0)+\\\"; url=\\\"+a})}static join(a,b){a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);const c=[],d=e=>{Array.isArray(e)?e.forEach(d):(e=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(e),c.push(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(e)))};b.forEach(d);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c.join(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static concat(a){return module$contents$goog$html$SafeHtml_SafeHtml.join(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY,\\nArray.prototype.slice.call(arguments))}static createSafeHtmlSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createHTML(a):a;return new module$contents$goog$html$SafeHtml_SafeHtml(a,module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE)}static createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(a,b,c){b=`<${a}`+module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes(a,b);null==c?c=[]:Array.isArray(c)||(c=[c]);goog.dom.tags.isVoidTag(a.toLowerCase())?\\n(goog.asserts.assert(!c.length,`Void tag <${a}> does not allow content.`),b+=\\\">\\\"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=\\\">\\\"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+\\\"</\\\"+a+\\\">\\\");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c=\\\"\\\";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\\n`Invalid attribute name \\\"${d}\\\".`:\\\"\\\");const e=b[d];null!=e&&(c+=\\\" \\\"+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,\\\"Must be lower case\\\"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,\\\"Must be lower case\\\"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c,\\nf)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override \\\"${e}\\\" attribute, got \\\"`+f+'\\\" with value \\\"'+c[f]+'\\\"':\\\"\\\");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape;\\nconst module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0,\\n[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0};\\nfunction module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if(\\\"style\\\"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'Attribute \\\"style\\\" not supported.':\\\"\\\");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\\n`Attribute \\\"${b}`+'\\\" requires goog.string.Const value, \\\"'+c+'\\\" given.':\\\"\\\");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if(\\\"string\\\"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute \\\"${b}\\\" on tag \\\"${a}`+'\\\" requires goog.html.SafeUrl, goog.string.Const, or string, value \\\"'+\\nc+'\\\" given.':\\\"\\\");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert(\\\"string\\\"===typeof c||\\\"number\\\"===typeof c,\\\"String or number value expected, got \\\"+typeof c+\\\" with value: \\\"+c);return`${b}=\\\"`+goog.string.internal.htmlEscape(String(c))+'\\\"'}\\nfunction module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'The \\\"style\\\" attribute requires goog.html.SafeStyle or map of style properties, '+typeof a+\\\" given: \\\"+a:\\\"\\\");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)}\\nmodule$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\\\"<!DOCTYPE html>\\\")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||\\\"\\\",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\\\"<br>\\\")}();\\ngoog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:\\\"afterbegin\\\",AFTEREND:\\\"afterend\\\",BEFOREBEGIN:\\\"beforebegin\\\",BEFOREEND:\\\"beforeend\\\"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};\\ngoog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&\\\"undefined\\\"===typeof document)return!1;var a=document.createElement(\\\"div\\\"),b=document.createElement(\\\"div\\\");b.appendChild(document.createElement(\\\"div\\\"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement});\\ngoog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\\ngoog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error(\\\"goog.dom.safe.setInnerHtml cannot be used to set content of \\\"+a.tagName+\\\".\\\");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};\\ngoog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from(\\\"Constant HTML to be immediatelly used.\\\"),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\\ngoog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)};\\ngoog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\\ngoog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\\\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};\\ngoog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\\\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};\\ngoog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\\ngoog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,\\\"stylesheet\\\")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because \\\"rel\\\" contains \\\"stylesheet\\\"'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute(\\\"nonce\\\",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):\\nb instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};\\ngoog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute(\\\"nonce\\\",b)};\\ngoog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))};\\ngoog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||\\\"\\\";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)};\\ngoog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,\\\"text/html\\\")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)};\\ngoog.dom.safe.createImageFromBlob=function(a){if(!/^image\\\\/.*/g.test(a.type))throw Error(\\\"goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.\\\");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\\ngoog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_(\\\"script[nonce]\\\",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_('style[nonce],link[rel=\\\"stylesheet\\\"][nonce]',a)};goog.dom.safe.NONCE_PATTERN_=/^[\\\\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute(\\\"nonce\\\"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:\\\"\\\":\\\"\\\"};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:\\\"\\\\u00a0\\\",ZERO_WIDTH_SPACE:\\\"\\\\u200b\\\"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;\\ngoog.string.subs=function(a,b){const c=a.split(\\\"%s\\\");let d=\\\"\\\";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join(\\\"%s\\\")};goog.string.collapseWhitespace=function(a){return a.replace(/[\\\\s\\\\xa0]+/g,\\\" \\\").replace(/^\\\\s+|\\\\s+$/g,\\\"\\\")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;\\ngoog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\\\\t\\\\n\\\\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return\\\" \\\"==a};\\ngoog.string.isUnicodeChar=function(a){return 1==a.length&&\\\" \\\"<=a&&\\\"~\\\">=a||\\\"\\\\u0080\\\"<=a&&\\\"\\\\ufffd\\\">=a};goog.string.stripNewlines=function(a){return a.replace(/(\\\\r\\\\n|\\\\r|\\\\n)+/g,\\\" \\\")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\\\\r\\\\n|\\\\r|\\\\n)/g,\\\"\\\\n\\\")};goog.string.normalizeWhitespace=function(a){return a.replace(/\\\\xa0|\\\\s/g,\\\" \\\")};goog.string.normalizeSpaces=function(a){return a.replace(/\\\\xa0|[ \\\\t]+/g,\\\" \\\")};\\ngoog.string.collapseBreakingSpaces=function(a){return a.replace(/[\\\\t\\\\r\\\\n ]+/g,\\\" \\\").replace(/^[\\\\t\\\\r\\\\n ]+|[\\\\t\\\\r\\\\n ]+$/g,\\\"\\\")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\\\\s\\\\xa0]+/,\\\"\\\")};goog.string.trimRight=function(a){return a.replace(/[\\\\s\\\\xa0]+$/,\\\"\\\")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;\\ngoog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g<f;g++){c=d[g];const h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\\\d+|\\\\D+/g)};\\ngoog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\\\d+|\\\\.\\\\d+|\\\\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\\\\+/g,\\\" \\\"))};goog.string.newLineToBr=goog.string.internal.newLineToBr;\\ngoog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,\\\"&#101;\\\"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,\\\"&\\\")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&\\\"document\\\"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};\\ngoog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,\\\"&\\\")?goog.string.unescapeEntitiesUsingDom_(a,b):a};\\ngoog.string.unescapeEntitiesUsingDom_=function(a,b){const c={\\\"&amp;\\\":\\\"&\\\",\\\"&lt;\\\":\\\"<\\\",\\\"&gt;\\\":\\\">\\\",\\\"&quot;\\\":'\\\"'};let d;d=b?b.createElement(\\\"div\\\"):goog.global.document.createElement(\\\"div\\\");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;\\\"#\\\"==f.charAt(0)&&(f=Number(\\\"0\\\"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from(\\\"Single HTML entity.\\\"),\\ne+\\\" \\\")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case \\\"amp\\\":return\\\"&\\\";case \\\"lt\\\":return\\\"<\\\";case \\\"gt\\\":return\\\">\\\";case \\\"quot\\\":return'\\\"';default:return\\\"#\\\"!=c.charAt(0)||(c=Number(\\\"0\\\"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\\\\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g,\\\" &#160;\\\"),b)};\\ngoog.string.preserveSpaces=function(a){return a.replace(/(^|[\\\\n ]) /g,\\\"$1\\\"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;d<c;d++){const e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+\\\"...\\\");c&&(a=goog.string.htmlEscape(a));return a};\\ngoog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+\\\"...\\\"+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+\\\"...\\\"+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={\\\"\\\\x00\\\":\\\"\\\\\\\\0\\\",\\\"\\\\b\\\":\\\"\\\\\\\\b\\\",\\\"\\\\f\\\":\\\"\\\\\\\\f\\\",\\\"\\\\n\\\":\\\"\\\\\\\\n\\\",\\\"\\\\r\\\":\\\"\\\\\\\\r\\\",\\\"\\\\t\\\":\\\"\\\\\\\\t\\\",\\\"\\\\v\\\":\\\"\\\\\\\\x0B\\\",'\\\"':'\\\\\\\\\\\"',\\\"\\\\\\\\\\\":\\\"\\\\\\\\\\\\\\\\\\\",\\\"<\\\":\\\"\\\\\\\\u003C\\\"};goog.string.jsEscapeCache_={\\\"'\\\":\\\"\\\\\\\\'\\\"};\\ngoog.string.quote=function(a){a=String(a);const b=['\\\"'];for(let c=0;c<a.length;c++){const d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('\\\"');return b.join(\\\"\\\")};goog.string.escapeString=function(a){const b=[];for(let c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join(\\\"\\\")};\\ngoog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];let b;const c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b=\\\"\\\\\\\\x\\\",16>c||256<c)b+=\\\"0\\\"}else b=\\\"\\\\\\\\u\\\",4096>c&&(b+=\\\"0\\\");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains;\\ngoog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b<a.length&&0<c&&(d=a.slice(0,b)+a.slice(b+c));return d};goog.string.remove=function(a,b){return a.replace(b,\\\"\\\")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),\\\"g\\\");return a.replace(b,\\\"\\\")};\\ngoog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),\\\"g\\\");return a.replace(b,c.replace(/\\\\$/g,\\\"$$$$\\\"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\\\\[\\\\]{}+?*.$\\\\^|,:#<!\\\\\\\\])/g,\\\"\\\\\\\\$1\\\").replace(/\\\\x08/g,\\\"\\\\\\\\x08\\\")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};\\ngoog.string.padNumber=function(a,b,c){if(!Number.isFinite(a))return String(a);a=void 0!==c?a.toFixed(c):String(a);c=a.indexOf(\\\".\\\");-1===c&&(c=a.length);const d=\\\"-\\\"===a[0]?\\\"-\\\":\\\"\\\";d&&(a=a.substring(1));return d+goog.string.repeat(\\\"0\\\",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?\\\"\\\":String(a)};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};\\ngoog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){let b=0;for(let c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return\\\"goog_\\\"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};\\ngoog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\\\\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,\\\"-$1\\\").toLowerCase()};goog.string.toTitleCase=function(a,b){b=\\\"string\\\"===typeof b?goog.string.regExpEscape(b):\\\"\\\\\\\\s\\\";return a.replace(new RegExp(\\\"(^\\\"+(b?\\\"|[\\\"+b+\\\"]+\\\":\\\"\\\")+\\\")([a-z])\\\",\\\"g\\\"),function(c,d,e){return d+e.toUpperCase()})};\\ngoog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return\\\"string\\\"===typeof a?/^\\\\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};\\ngoog.string.lastComponent=function(a,b){if(b)\\\"string\\\"==typeof b&&(b=[b]);else return a;let c=-1;for(let d=0;d<b.length;d++){if(\\\"\\\"==b[d])continue;const e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};\\ngoog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.string.path={};goog.string.path.baseName=function(a){const b=a.lastIndexOf(\\\"/\\\")+1;return a.slice(b)};goog.string.path.basename=goog.string.path.baseName;goog.string.path.dirname=function(a){const b=a.lastIndexOf(\\\"/\\\")+1;a=a.slice(0,b);/^\\\\/+$/.test(a)||(a=a.replace(/\\\\/+$/,\\\"\\\"));return a};goog.string.path.extension=function(a){a=goog.string.path.baseName(a).replace(/\\\\.+/g,\\\".\\\");const b=a.lastIndexOf(\\\".\\\");return 0>=b?\\\"\\\":a.slice(b+1)};\\ngoog.string.path.join=function(a){let b=arguments[0];for(let c=1;c<arguments.length;c++){const d=arguments[c];b=goog.string.startsWith(d,\\\"/\\\")?d:\\\"\\\"==b||goog.string.endsWith(b,\\\"/\\\")?b+d:b+(\\\"/\\\"+d)}return b};\\ngoog.string.path.normalizePath=function(a){if(\\\"\\\"==a)return\\\".\\\";let b=\\\"\\\";goog.string.startsWith(a,\\\"/\\\")&&(b=\\\"/\\\",goog.string.startsWith(a,\\\"//\\\")&&!goog.string.startsWith(a,\\\"///\\\")&&(b=\\\"//\\\"));a=a.split(\\\"/\\\");const c=[];for(let d=0;d<a.length;d++){const e=a[d];\\\"\\\"!=e&&\\\".\\\"!=e&&(\\\"..\\\"!=e||!b&&!c.length||\\\"..\\\"==module$contents$goog$array_peek(c)?c.push(e):c.pop())}return b+c.join(\\\"/\\\")||\\\".\\\"};goog.string.path.split=function(a){const b=goog.string.path.dirname(a);a=goog.string.path.baseName(a);return[b,a]};const DEBUG_WASI$$module$src$filesystem$wasi=!1;function assertLeadingSlash$$module$src$filesystem$wasi(a){return/^\\\\//g.test(a)?a:`/${a}`}function removeLeadingSlash$$module$src$filesystem$wasi(a){return a.replace(/^\\\\//g,\\\"\\\")}function shouldOpenReader$$module$src$filesystem$wasi(a){return(a&(WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants))!==goog.global.BigInt(0)}\\nfunction performanceNowPoly$$module$src$filesystem$wasi(){if(\\\"undefined\\\"===typeof performance||\\\"undefined\\\"===typeof performance.now){const a=Date.now();return Date.now()-a}return performance.now()}function concatUint8Arrays$$module$src$filesystem$wasi(a){var b=a.reduce((d,e)=>d+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}}\\nconst WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:\\\"/dev/stdin\\\",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:\\\"/dev/stdout\\\",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:\\\"/dev/stderr\\\",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:\\\"/\\\",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0};\\nWASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)\\\"function\\\"===c.kind&&c.module.startsWith(\\\"wasi_\\\")&&(\\\"object\\\"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b};\\nWASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a};\\nWASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START);\\ndefault:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"args_get\\\",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"args_sizes_get\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"args_get\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"clock_time_get\\\",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"environ_get\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"environ_sizes_get\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_advise\\\",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_allocate\\\",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_close\\\",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_datasync\\\",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_fdstat_get\\\",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants),\\n!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_fdstat_set_flags\\\",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_fdstat_set_rights\\\",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_filestat_get\\\",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b,\\ngoog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_filestat_set_size\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_filestat_set_times\\\",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_pread\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_prestat_dir_name\\\",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_prestat_get\\\",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log(\\\"fd_pwrite\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_read\\\",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((n,p)=>n+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,l=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,\\\"\\\\x00\\\"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;f<c;f++){var m=b+8*f;const n=g.getUint32(m,!0);m=g.getUint32(m+\\n4,!0);l||(k+=m,Array.from({length:m},(p,q)=>q).reduce((p,q)=>{if(l)return p;const [w,r]=p;let u=p=0,A=!1,x=0,t;if(0===q)for(;!A;)t=e[p]?e[p].byteLength:0,x<=h&&t+x>h?(A=!0,u=h-x):(x+=t,p+=1);else p=w,u=r;e[p]?(g.setUint8(n+q,e[p][u]),u+1>=e[p].byteLength?(p=w+1,u=0):u+=1):(g.setUint8(n+q,\\\"\\\\x00\\\"),h+=q,l=!0);return[p,u]},[0,0]),l||(h+=m))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error(\\\"Reading non existent file\\\",a,this.fd[a])};\\nWASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_readdir\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_renumber\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_seek\\\",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break;\\ncase WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_sync\\\",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_tell\\\",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_write\\\",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0<this.fd[a].buffers.length?[concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)]:this.fd[a].buffers;let f=0;for(let k=0;k<c;k++){var g=b+8*k,h=e.getUint32(g,!0);g=e.getUint32(g+4,!0);f+=g;h=new Uint8Array(e.buffer,h,g);if(this.fd[a].buffers[0]&&\\nthis.fd[a].seekPos<this.fd[a].buffers[0].length){const l=Number(this.fd[a].seekPos);h.slice(0,g).forEach((m,n)=>{this.fd[a].buffers[0][l+n]=m})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_create_directory\\\",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_filestat_get\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_filestat_set_times\\\",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_link\\\",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_open\\\",a,b,c,d,e,f,g,h,k,arguments);const l=this.getMemory();var m=(this.fd[a]||{path:\\\"/\\\"}).path,n=new Uint8Array(l.buffer,c,d);n=decoder$$module$src$utils$text_encoders.decode(n);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?\\\"\\\":m,n)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\";; opening path\\\",\\np,\\\"withREader\\\",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith(\\\"/..\\\")||\\\"/._\\\"===p||\\\"/.AppleDouble\\\"===p)return WASI_EBADF$$module$src$filesystem$constants;(m=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?n=m.fd:(n=this.fd.length,this.fd[n]={fd:n});this.fd[n]={...this.fd[n],path:p,type:\\\"file\\\",seekPos:goog.global.BigInt(0),buffers:m?this.fd[n].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"should open a read handle for\\\",\\np);l.setUint32(k,n,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_readlink\\\",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_remove_directory\\\",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_rename\\\",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_symlink\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3<a&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_unlink_file\\\",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.poll_oneoff=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"poll_oneoff\\\",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.proc_exit=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"proc_exit\\\",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.proc_raise=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"proc_raise\\\",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.random_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"random_get\\\",a,b);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sched_yield=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"sched_yield\\\",arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.sock_recv=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"sock_recv\\\",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sock_send=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"sock_send\\\",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.sock_shutdown=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"sock_shutdown\\\",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.findBuffers=function(a){const b=Object.values(this.fd).find(({path:c})=>c===a);return[b&&b.buffers,b.fd]};\\nWASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+\\\"/\\\").replace(\\\"//\\\",\\\"/\\\"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\\\\//g.test(d.replace(b,\\\"\\\"))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,\\\"\\\"))).filter(d=>!!d)};\\nWASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]};\\nWASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can't append to non-existing file ${a}`)};\\nWASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn't been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)};\\nWASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)};\\nWASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0<c.length?console.warn(`mkdir: path ${a} already exists`):(a=Object.keys(this.fd).length,this.fd[a]={fd:a,path:b})};var module$src$filesystem$wasi={};module$src$filesystem$wasi.WASI=WASI$$module$src$filesystem$wasi;function clearArray$$module$src$utils$clear_array(a){for(;0<a.length;)a.pop()}var module$src$utils$clear_array={};module$src$utils$clear_array.clearArray=clearArray$$module$src$utils$clear_array;const CompressionMethod$$module$src$zlib$zlib={DEFLATE:8,RESERVED:15};var module$src$zlib$zlib={};module$src$zlib$zlib.CompressionMethod=CompressionMethod$$module$src$zlib$zlib;/*\\n zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */\\nfunction Huffman$$module$src$zlib$huffman(a){const b=a.length;let c=0,d=Number.POSITIVE_INFINITY,e,f,g,h;let k,l;for(k=0;k<b;++k)a[k]>c&&(c=a[k]),a[k]<d&&(d=a[k]);const m=1<<c,n=new Uint32Array(m);e=1;f=0;for(g=2;e<=c;){for(k=0;k<b;++k)if(a[k]===e){h=0;var p=f;for(l=0;l<e;++l)h=h<<1|p&1,p>>=1;p=e<<16|k;for(l=h;l<m;l+=g)n[l]=p;++f}++e;f<<=1;g<<=1}return[n,c,d]}var module$src$zlib$huffman={};module$src$zlib$huffman.Huffman=Huffman$$module$src$zlib$huffman;const ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate=32768;\\nfunction RawInflate$$module$src$zlib$rawinflate(a,b){this.blocks=[];this.bufferSize=ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate;this.bitsbuflen=this.bitsbuf=this.ip=this.totalpos=0;this.input=new Uint8Array(a);this.bfinal=!1;this.bufferType=RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE;this.resize=!1;if(b||!(b={}))b.index&&(this.ip=b.index),b.bufferSize&&(this.bufferSize=b.bufferSize),b.bufferType&&(this.bufferType=b.bufferType),b.resize&&(this.resize=b.resize);switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.op=\\nRawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;this.output=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength+this.bufferSize+RawInflate$$module$src$zlib$rawinflate.MaxCopyLength);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.op=0;this.output=new Uint8Array(this.bufferSize);break;default:throw Error(\\\"invalid inflate mode\\\");}}RawInflate$$module$src$zlib$rawinflate.BufferType={BLOCK:0,ADAPTIVE:1};\\nRawInflate$$module$src$zlib$rawinflate.prototype.decompress=function(){for(;!this.bfinal;)this.parseBlock();switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:return this.concatBufferBlock();case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:return this.concatBufferDynamic();default:throw Error(\\\"invalid inflate mode\\\");}};RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength=32768;RawInflate$$module$src$zlib$rawinflate.MaxCopyLength=258;\\nRawInflate$$module$src$zlib$rawinflate.Order=function(a){return new Uint16Array(a)}([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);RawInflate$$module$src$zlib$rawinflate.LengthCodeTable=function(a){return new Uint16Array(a)}([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]);RawInflate$$module$src$zlib$rawinflate.LengthExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]);\\nRawInflate$$module$src$zlib$rawinflate.DistCodeTable=function(a){return new Uint16Array(a)}([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);RawInflate$$module$src$zlib$rawinflate.DistExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\\nRawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable=function(a){return a}(function(){const a=new Uint8Array(288);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=143>=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=5;return Huffman$$module$src$zlib$huffman(a)}());\\nRawInflate$$module$src$zlib$rawinflate.prototype.parseBlock=function(){let a=this.readBits(3);a&1&&(this.bfinal=!0);a>>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error(\\\"unknown BTYPE: \\\"+a);}};\\nRawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error(\\\"input buffer is broken\\\");for(;c<a;)b|=d[e++]<<c,c+=8;this.bitsbuf=b>>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<<a)-1};\\nRawInflate$$module$src$zlib$rawinflate.prototype.readCodeByTable=function(a){let b=this.bitsbuf,c=this.bitsbuflen;var d=this.input;let e=this.ip;var f=d.length;const g=a[0];for(a=a[1];c<a&&!(e>=f);)b|=d[e++]<<c,c+=8;d=g[b&(1<<a)-1];f=d>>>16;if(f>c)throw Error(\\\"invalid code length: \\\"+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535};\\nRawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error(\\\"invalid uncompressed block header: LEN\\\");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error(\\\"invalid uncompressed block header: NLEN\\\");e=a[b++]|a[b++]<<8;if(f===~e)throw Error(\\\"invalid uncompressed block header: length verify\\\");if(b+f>a.length)throw Error(\\\"input buffer is broken\\\");\\nswitch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error(\\\"invalid inflate mode\\\");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c};\\nRawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);\\nbreak;default:throw Error(\\\"invalid inflate mode\\\");}};\\nRawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;e<c;++e)d[RawInflate$$module$src$zlib$rawinflate.Order[e]]=this.readBits(3);d=Huffman$$module$src$zlib$huffman(d);c=new Uint8Array(a+b);e=0;for(b=a+b;e<b;){var f=this.readCodeByTable(d);switch(f){case 16:for(f=3+this.readBits(2);f--;)c[e++]=g;break;case 17:for(f=\\n3+this.readBits(3);f--;)c[e++]=0;var g=0;break;case 18:for(f=11+this.readBits(7);f--;)c[e++]=0;g=0;break;default:g=c[e++]=f}}g=Huffman$$module$src$zlib$huffman(c.subarray(0,a));a=Huffman$$module$src$zlib$huffman(c.subarray(a));switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(g,a);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(g,a);break;default:throw Error(\\\"invalid inflate mode\\\");}};\\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanBlock=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;const e=c.length-RawInflate$$module$src$zlib$rawinflate.MaxCopyLength;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,n=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=\\ne&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=m[f],0<n[f]&&(g+=this.readBits(n[f])),d>=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,n=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]=\\nf;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=m[f],0<n[f]&&(g+=this.readBits(n[f])),d+h>e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\\nRawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;\\nreturn c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&(\\\"number\\\"===typeof a.fixRatio&&(b=a.fixRatio),\\\"number\\\"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a<d.length?d.length+a:d.length<<1):a=d.length*b;a=new Uint8Array(a);a.set(d);return this.output=a};\\nRawInflate$$module$src$zlib$rawinflate.prototype.concatBufferBlock=function(){let a=0;const b=this.output,c=this.blocks;let d;const e=new Uint8Array(this.totalpos+(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));let f,g,h,k;if(0===c.length)return this.output.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,this.op);f=0;for(g=c.length;f<g;++f)for(d=c[f],h=0,k=d.length;h<k;++h)e[a++]=d[h];f=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;for(g=this.op;f<\\ng;++f)e[a++]=b[f];this.blocks=[];return this.buffer=e};RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferDynamic=function(){let a;const b=this.op;this.resize?(a=new Uint8Array(b),a.set(this.output.subarray(0,b))):a=this.output.subarray(0,b);return this.buffer=a};var module$src$zlib$rawinflate={};module$src$zlib$rawinflate.RawInflate=RawInflate$$module$src$zlib$rawinflate;function Util$$module$src$zlib$util(){}Util$$module$src$zlib$util.stringToByteArray=function(a){a=[...a];let b,c;b=0;for(c=a.length;b<c;b++)a[b]=(a[b].charPointAt(0)&255)>>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){\\\"string\\\"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0<d;){e=d>Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0};\\nAdler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error(\\\"unsupported compression method\\\");}if(0!==((c<<8)+d)%31)throw Error(\\\"invalid fcheck flag:\\\"+((c<<8)+d)%31);if(d&32)throw Error(\\\"fdict flag is not supported\\\");this.rawinflate=\\nnew RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType;\\nInflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error(\\\"invalid adler-32 checksum\\\");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\\\\n$/g.test(d);e=/^\\\\n/g.test(d);var k=d.split(\\\"\\\\n\\\").filter(m=>0<m.length),l=[];if(0===k.length&&h||e)l.push(c.join(\\\"\\\")),clearArray$$module$src$utils$clear_array(c);k.forEach((m,n)=>{n+1===k.length?h?0===n?(l.push(c.join(\\\"\\\")+m),\\nclearArray$$module$src$utils$clear_array(c)):l.push(m):c.push(m):0===n?(l.push(c.join(\\\"\\\")+m),clearArray$$module$src$utils$clear_array(c)):l.push(m)});l.forEach(m=>{m.replace(/(\\\\r\\\\n|\\\\n|\\\\r)/gm,\\\"\\\")&&b.post({log:m})})}},assertPluginExports$$module$src$module=a=>{if(a&&\\\"object\\\"===typeof a&&\\\"object\\\"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,\\\"A csound plugin turns out to be neither a plugin, opcode or module.\\\\nPerhaps csdl.h or module.h wasn't imported correctly?\\\");\\nreturn!1}console.error(\\\"A csound plugin didn't export __wasm_call_ctors.\\\\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors\\\");return!1}console.error(\\\"Error instantiating a csound plugin, instance and/or export is missing!\\\");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let l=0,m=1;for(;;){const n=a[c++];l+=(n&127)*m;m*=128;if(!(n&128))break}return l}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error(\\\"Wasm magic number is missing!\\\");\\nif(0!==a[8])return logWasmModule$$module$src$logger(\\\"Dylink section wasn't found in wasm binary, assuming static wasm.\\\"),\\\"static\\\";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]===\\\"d\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"y\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"l\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"i\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"n\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"k\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\n\\\".\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"0\\\".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory,\\nstreamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]};\\nvar $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{\\\"/\\\":\\\"/\\\"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if(\\\"static\\\"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(t,z)=>{t=await t;\\nlet v,y;try{v=new Uint8Array(z),y=getBinaryHeaderData$$module$src$module(v)}catch(C){console.error(\\\"Error in plugin\\\",C)}y&&t.push({headerData:y,wasmPluginBytes:v});return t},[]);var l=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((t,{headerData:z})=>\\\"static\\\"===z?0:t+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+l;const m=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),n=new WebAssembly.Table({initial:k+\\n1,element:\\\"anyfunc\\\"});e.setMemory(m);const p=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},f*PAGE_SIZE$$module$src$module);l=new WebAssembly.Global({value:\\\"i32\\\",mutable:!1},l);const q=new WebAssembly.Global({value:\\\"i32\\\",mutable:!1},1),w=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0);a=await WebAssembly.compile(a);const r=e.getImports(a);let u=[],A=d;r.env=r.env||{};r.env.memory=m;r.env.__indirect_function_table=\\nn;r.env.__stack_pointer=p;r.env.__memory_base=l;r.env.__table_base=q;r.env.csoundLoadModules=t=>{u.forEach(z=>{void 0===x?console.error(\\\"csound-wasm internal: timing problem detected!\\\"):dlinit$$module$src$dlinit(x,z,n,t)});return 0};r.env._ZTH5errno=function(){};r.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:m,messagePort:c,streamBuffer:[]});r.env.printDebugCallback=(t,z)=>{t=new Uint8Array(m.buffer,t,z);t=uint2String$$module$src$utils$text_encoders(t);console.log(t)};\\nr[\\\"GOT.mem\\\"]=r[\\\"GOT.mem\\\"]||{};r[\\\"GOT.mem\\\"].__heap_base=f;r[\\\"GOT.func\\\"]=r[\\\"GOT.func\\\"]||{};const x=await WebAssembly.instantiate(a,r);c=Object.assign({},x.exports);a={};a.exports=Object.assign(c,{memory:m});u=await b.reduce(async(t,{headerData:z,wasmPluginBytes:v})=>{t=await t;try{const {memorySize:y,memoryAlign:C,tableSize:F}=z,E=await WebAssembly.compile(v),B=e.getImports(E),G=new WebAssembly.Global({value:\\\"i32\\\",mutable:!1},A*PAGE_SIZE$$module$src$module);n.grow(F);B.env=Object.assign({},B.env);B.env.memory=\\nm;B.env.__indirect_function_table=n;B.env.__memory_base=G;B.env.__stack_pointer=p;B.env.__table_base=q;B.env.csoundLoadModules=w;delete B.env.csoundWasiJsMessageCallback;A+=Math.ceil((y+C)/PAGE_SIZE$$module$src$module);const D=await WebAssembly.instantiate(E,B);assertPluginExports$$module$src$module(D)&&(D.exports.__wasm_call_ctors(),t.push(D))}catch(y){console.error(\\\"Error while compiling csound-plugin\\\",y)}return t},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]},\\nmodule$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;let combined$$module$src$workers$vanilla_worker,audioProcessCallback$$module$src$workers$vanilla_worker=()=>{};\\nconst rtmidiQueue$$module$src$workers$vanilla_worker=[],createAudioInputBuffers$$module$src$workers$vanilla_worker=(a,b)=>{for(let c=0;c<b;++c)a.buffers.push(new Float64Array(RING_BUFFER_SIZE$$module$src$constants))},generateAudioFrames$$module$src$workers$vanilla_worker=(a,b)=>{if(\\\"realtimePerformanceEnded\\\"!==b.vanillaWorkerState)return audioProcessCallback$$module$src$workers$vanilla_worker(a)},createRealtimeAudioThread$$module$src$workers$vanilla_worker=({libraryCsound:a,wasm:b,workerMessagePort:c,\\naudioInputs:d,inputChannelCount:e,outputChannelCount:f,sampleRate:g})=>({csound:h})=>{var k=a.csoundGetInputName(h).includes(\\\"adc\\\");g&&a.csoundSetOption(h,`--sr=${g}`);f&&a.csoundSetOption(h,`--nchnls=${f}`);e&&a.csoundSetOption(h,`--nchnls_i=${e}`);const l=a.csoundGetNchnls(h),m=0<e?e:k?a.csoundGetNchnlsInput(h):0,n=a.csoundGet0dBFS(h);k=a.csoundGetSpin(h);const p=a.csoundGetSpout(h),q=a.csoundGetKsmps(h);let w=new Float64Array(b.wasi.memory.buffer,k,q*m),r=new Float64Array(b.wasi.memory.buffer,\\np,q*l),u=0,A=0;c.broadcastPlayState(\\\"realtimePerformanceStarted\\\");audioProcessCallback$$module$src$workers$vanilla_worker=({numFrames:x})=>{const t=instantiateAudioPacket$$module$src$workers$common_utils(l,x),z=0<d.buffers.length&&d.availableFrames>=x;0<rtmidiQueue$$module$src$workers$vanilla_worker.length&&(rtmidiQueue$$module$src$workers$vanilla_worker.forEach(v=>{a.csoundPushMidiMessage(h,v[0],v[1],v[2])}),clearArray$$module$src$utils$clear_array(rtmidiQueue$$module$src$workers$vanilla_worker));\\nfor(let v=0;v<x;v++){A=(A+1)%q;if(\\\"realtimePerformanceEnded\\\"===c.vanillaWorkerState)return 0===u&&(a.csoundStop(h),u=a.csoundPerformKsmps(h)),c.broadcastPlayState(\\\"realtimePerformanceEnded\\\"),audioProcessCallback$$module$src$workers$vanilla_worker=()=>{},clearArray$$module$src$utils$clear_array(rtmidiQueue$$module$src$workers$vanilla_worker),d.port=void 0,{framesLeft:v};if(0===A&&0===u&&(u=a.csoundPerformKsmps(h),0!==u))return c.broadcastPlayState(\\\"realtimePerformanceEnded\\\"),audioProcessCallback$$module$src$workers$vanilla_worker=\\n()=>{},clearArray$$module$src$utils$clear_array(rtmidiQueue$$module$src$workers$vanilla_worker),d.port=void 0,{framesLeft:v};0===w.length&&(w=new Float64Array(b.wasi.memory.buffer,a.csoundGetSpin(h),q*m));0===r.length&&(r=new Float64Array(b.wasi.memory.buffer,a.csoundGetSpout(h),q*l));t.forEach((y,C)=>{0<r.length&&(y[v]=(r[A*l+C]||0)/n)});if(z)for(let y=0;y<m;y++)w[A*m+y]=(d.buffers[y][v+d.inputReadIndex%RING_BUFFER_SIZE$$module$src$constants]||0)*n}z&&(d.availableFrames-=x,d.inputReadIndex+=x%RING_BUFFER_SIZE$$module$src$constants);\\nreturn{audioPacket:t,framesLeft:0}}},callUncloned$$module$src$workers$vanilla_worker=async(a,b)=>(a=combined$$module$src$workers$vanilla_worker.get(a))&&a.apply({},b||[]),initMessagePort$$module$src$workers$vanilla_worker=({port:a})=>{logVANWorker$$module$src$logger(\\\"initMessagePort\\\")();const b=new $jscompDefaultExport$$module$src$utils$message_port_state;b.port=a;b.post=c=>a.postMessage({log:c});b.broadcastPlayState=c=>{b.vanillaWorkerState=c;a.postMessage({playStateChange:c})};b.ready=!0;return b},\\ninitRequestPort$$module$src$workers$vanilla_worker=({csoundWorkerFrameRequestPort:a,workerMessagePort:b})=>{logVANWorker$$module$src$logger(\\\"initRequestPort\\\")();a.addEventListener(\\\"message\\\",c=>{const {framesLeft:d=0,audioPacket:e}=generateAudioFrames$$module$src$workers$vanilla_worker(c.data,b)||{};a.postMessage({numFrames:c.data.numFrames-d,audioPacket:e,...c.data})});a.start();return a},initAudioInputPort$$module$src$workers$vanilla_worker=({port:a})=>{logVANWorker$$module$src$logger(\\\"initAudioInputPort\\\")();\\nconst b={availableFrames:0,buffers:[],inputReadIndex:0,inputWriteIndex:0,port:a};b.port.addEventListener(\\\"message\\\",({data:c})=>{0===b.buffers.length&&createAudioInputBuffers$$module$src$workers$vanilla_worker(b,c.length);b.buffers.forEach((d,e)=>{d.set(c[e],b.inputWriteIndex)});b.inputWriteIndex+=c[0].length;b.availableFrames+=c[0].length;b.inputWriteIndex>=RING_BUFFER_SIZE$$module$src$constants&&(b.inputWriteIndex=0)});b.port.start();return b},initRtMidiEventPort$$module$src$workers$vanilla_worker=\\n({rtmidiPort:a})=>{logVANWorker$$module$src$logger(\\\"initRtMidiEventPort\\\")();a.addEventListener(\\\"message\\\",({data:b})=>{rtmidiQueue$$module$src$workers$vanilla_worker.push(b)});a.start();return a},initialize$$module$src$workers$vanilla_worker=async({audioInputPort:a,inputChannelCount:b,messagePort:c,outputChannelCount:d,requestPort:e,rtmidiPort:f,wasmDataURI:g,wasmTransformerDataURI:h,withPlugins:k=[]})=>{logVANWorker$$module$src$logger(\\\"initializing wasm and exposing csoundAPI functions from worker to main\\\")();\\nconst l=initMessagePort$$module$src$workers$vanilla_worker({port:c}),m=initAudioInputPort$$module$src$workers$vanilla_worker({port:a});initRequestPort$$module$src$workers$vanilla_worker({csoundWorkerFrameRequestPort:e,workerMessagePort:l});initRtMidiEventPort$$module$src$workers$vanilla_worker({rtmidiPort:f});const [n,p]=await $jscompDefaultExport$$module$src$module({wasmDataURI:g,wasmTransformerDataURI:h,withPlugins:k,messagePort:l});n.wasi=p;const q=$jscompDefaultExport$$module$src$libcsound(n);\\na=pipe$$module$node_modules$rambda$dist$rambda_mjs(assoc$$module$node_modules$rambda$dist$rambda_mjs(\\\"csoundStart\\\",(r,u)=>handleCsoundStart$$module$src$workers$common_utils(l,q,p,createRealtimeAudioThread$$module$src$workers$vanilla_worker({audioInputs:m,inputChannelCount:b,libraryCsound:q,outputChannelCount:d,wasm:n,wasi:p,workerMessagePort:l}),renderFunction$$module$src$workers$common_utils({inputChannelCount:b,libraryCsound:q,outputChannelCount:d,wasm:n,workerMessagePort:l}))(u)),assoc$$module$node_modules$rambda$dist$rambda_mjs(\\\"wasm\\\",\\nn))(q);combined$$module$src$workers$vanilla_worker=new Map(Object.entries(a));q.csoundInitialize(0);const w=q.csoundCreate();l.port.addEventListener(\\\"message\\\",r=>{r.data&&r.data.newPlayState&&(\\\"realtimePerformanceEnded\\\"===r.data.newPlayState&&(q.csoundStop(w),\\\"realtimePerformanceEnded\\\"!==l.vanillaWorkerState&&q.csoundPerformKsmps(w),l.broadcastPlayState(\\\"realtimePerformanceEnded\\\")),l.vanillaWorkerState=r.data.newPlayState)});l.port.start();return w};\\nexpose$$module$node_modules$comlink$dist$esm$comlink_mjs({initialize:initialize$$module$src$workers$vanilla_worker,callUncloned:callUncloned$$module$src$workers$vanilla_worker});var module$src$workers$vanilla_worker={};}).call(this);\\n//# sourceMappingURL=__compiled.vanilla.worker.js.map\\n\"]));","import * as Comlink from \"comlink/dist/esm/comlink.mjs\";\nimport { logVANMain as log } from \"../logger\";\nimport { api as API } from \"../libcsound\";\nimport { isEmpty } from \"rambda/dist/rambda.mjs\";\nimport { csoundApiRename, fetchPlugins, makeProxyCallback, stopableStates } from \"../utils\";\nimport { IPCMessagePorts, messageEventHandler } from \"./messages.main\";\nimport { EventPromises } from \"../utils/event-promises\";\nimport { PublicEventAPI } from \"../events\";\nimport VanillaWorker from \"../../dist/__compiled.vanilla.worker.inline.js\";\n\nclass VanillaWorkerMainThread {\n constructor({\n audioContext,\n audioWorker,\n audioContextIsProvided,\n inputChannelCount,\n outputChannelCount,\n }) {\n this.ipcMessagePorts = new IPCMessagePorts();\n this.eventPromises = new EventPromises();\n this.publicEvents = new PublicEventAPI(this);\n\n audioWorker.ipcMessagePorts = this.ipcMessagePorts;\n audioWorker.csoundWorkerMain = this;\n audioWorker.publicEvents = this.publicEvents;\n\n this.audioWorker = audioWorker;\n this.audioContextIsProvided = audioContextIsProvided;\n\n if (audioContextIsProvided) {\n this.sampleRate = audioContext.sampleRate;\n }\n if (inputChannelCount) {\n this.inputChannelCount = inputChannelCount;\n }\n\n if (outputChannelCount) {\n this.outputChannelCount = outputChannelCount;\n }\n\n this.exportApi = {};\n this.csoundInstance = undefined;\n this.currentPlayState = undefined;\n // this.messageCallbacks = [];\n this.midiPortStarted = false;\n this.onPlayStateChange = this.onPlayStateChange.bind(this);\n }\n\n async terminateInstance() {\n if (this.csoundWorker) {\n this.csoundWorker.terminate();\n delete this.csoundWorker;\n }\n if (this.audioWorker && this.audioWorker.terminateInstance) {\n await this.audioWorker.terminateInstance();\n delete this.audioWorker.terminateInstance;\n }\n if (this.proxyPort) {\n this.proxyPort[Comlink.releaseProxy]();\n delete this.proxyPort;\n }\n if (this.publicEvents) {\n this.publicEvents.terminateInstance();\n }\n Object.keys(this.exportApi).forEach((key) => delete this.exportApi[key]);\n Object.keys(this).forEach((key) => delete this[key]);\n }\n\n get api() {\n return this.exportApi;\n }\n\n handleMidiInput({ data: payload }) {\n this.ipcMessagePorts.csoundMainRtMidiPort.postMessage &&\n this.ipcMessagePorts.csoundMainRtMidiPort.postMessage(payload);\n }\n\n async prepareRealtimePerformance() {\n if (!this.csoundInstance) {\n console.error(`fatal error: csound instance not found?`);\n return;\n }\n\n this.audioWorker.sampleRate = await this.exportApi.getSr(this.csoundInstance);\n const inputName = await this.exportApi.getInputName(this.csoundInstance);\n this.audioWorker.isRequestingInput = inputName.includes(\"adc\");\n this.audioWorker.isRequestingMidi = await this.exportApi._isRequestingRtMidiInput(\n this.csoundInstance,\n );\n this.audioWorker.outputsCount = await this.exportApi.getNchnls(this.csoundInstance);\n // TODO fix upstream: await this.exportApi.csoundGetNchnlsInput(this.csound);\n\n this.audioWorker.inputsCount = this.audioWorker.isRequestingInput ? 1 : 0;\n // if (this.audioWorker.scriptProcessorNode) {\n // this.audioWorker.softwareBufferSize *= 2;\n // }\n\n log(`vars for rtPerf set`)();\n }\n\n async onPlayStateChange(newPlayState) {\n if (!this.publicEvents) {\n // prevent error after termination\n return;\n }\n this.currentPlayState = newPlayState;\n\n switch (newPlayState) {\n case \"realtimePerformanceStarted\": {\n log(`event: realtimePerformanceStarted from worker, now preparingRT..`)();\n await this.prepareRealtimePerformance();\n break;\n }\n\n case \"realtimePerformanceEnded\": {\n log(`event: realtimePerformanceEnded`)();\n // a noop if the stop promise already exists\n this.eventPromises.createStopPromise();\n this.midiPortStarted = false;\n this.publicEvents.triggerRealtimePerformanceEnded(this);\n await this.eventPromises.releaseStopPromise();\n break;\n }\n\n case \"renderStarted\": {\n await this.eventPromises.releaseStartPromise();\n this.publicEvents.triggerRenderStarted(this);\n break;\n }\n case \"renderEnded\": {\n log(`event: renderEnded received, beginning cleanup`)();\n this.publicEvents.triggerRenderEnded(this);\n await this.eventPromises.releaseStopPromise();\n break;\n }\n\n default: {\n break;\n }\n }\n\n // forward the message from worker to the audioWorker\n if (!this.audioWorker.ipcMessagePorts) {\n this.audioWorker.ipcMessagePorts = this.ipcMessagePorts;\n }\n await this.audioWorker.onPlayStateChange(newPlayState);\n }\n\n async csoundPause() {\n if (this.eventPromises.isWaiting(\"pause\")) {\n return -1;\n } else {\n this.eventPromises.createPausePromise();\n\n this.audioWorker && this.audioWorker.workletProxy !== undefined\n ? await this.audioWorker.workletProxy.pause()\n : await this.audioWorker.onPlayStateChange(\"realtimePerformancePaused\");\n\n await this.eventPromises.waitForPause();\n return 0;\n }\n }\n\n async csoundResume() {\n if (this.eventPromises.isWaiting(\"resume\")) {\n return -1;\n } else {\n this.eventPromises.createResumePromise();\n this.audioWorker && this.audioWorker.workletProxy !== undefined\n ? await this.audioWorker.workletProxy.resume()\n : await this.audioWorker.onPlayStateChange(\"realtimePerformanceResumed\");\n\n await this.eventPromises.waitForResume();\n return 0;\n }\n }\n\n async initialize({ wasmDataURI, withPlugins }) {\n const wasmBytes = wasmDataURI();\n if (typeof this.audioWorker.initIframe === \"function\") {\n await this.audioWorker.initIframe();\n }\n\n if (withPlugins && !isEmpty(withPlugins)) {\n withPlugins = await fetchPlugins(withPlugins);\n }\n log(`vanilla.main: initialize`)();\n this.csoundWorker = this.csoundWorker || new Worker(VanillaWorker());\n this.ipcMessagePorts.mainMessagePort.addEventListener(\"message\", messageEventHandler(this));\n this.ipcMessagePorts.mainMessagePort2.addEventListener(\"message\", messageEventHandler(this));\n this.ipcMessagePorts.mainMessagePort.start();\n\n const proxyPort = Comlink.wrap(this.csoundWorker);\n this.proxyPort = proxyPort;\n\n this.csoundInstance = await proxyPort.initialize(\n Comlink.transfer(\n {\n wasmDataURI: wasmBytes,\n messagePort: this.ipcMessagePorts.workerMessagePort,\n requestPort: this.ipcMessagePorts.csoundWorkerFrameRequestPort,\n audioInputPort: this.ipcMessagePorts.csoundWorkerAudioInputPort,\n rtmidiPort: this.ipcMessagePorts.csoundWorkerRtMidiPort,\n // these values are only set if the user provided them\n // during init or by passing audioContext\n sampleRate: this.sampleRate,\n inputChannelCount: this.inputChannelCount,\n outputChannelCount: this.outputChannelCount,\n withPlugins,\n },\n [\n wasmBytes,\n this.ipcMessagePorts.workerMessagePort,\n this.ipcMessagePorts.csoundWorkerFrameRequestPort,\n this.ipcMessagePorts.csoundWorkerAudioInputPort,\n this.ipcMessagePorts.csoundWorkerRtMidiPort,\n ],\n ),\n );\n\n this.exportApi.pause = this.csoundPause.bind(this);\n this.exportApi.resume = this.csoundResume.bind(this);\n this.exportApi.terminateInstance = this.terminateInstance.bind(this);\n\n this.exportApi.getAudioContext = async () => this.audioWorker.audioContext;\n\n this.exportApi.getNode = async () => {\n const maybeNode = this.audioWorker.audioWorkletNode;\n if (maybeNode) {\n return maybeNode;\n } else {\n const node = await new Promise((resolve) => {\n this.exportApi.once(\"onAudioNodeCreated\", resolve);\n });\n return node;\n }\n };\n\n this.exportApi = this.publicEvents.decorateAPI(this.exportApi);\n this.exportApi.enableAudioInput = () =>\n console.warn(\n `enableAudioInput was ignored: please use -iadc option before calling start with useWorker=true`,\n );\n\n // the default message listener\n this.exportApi.addListener(\"message\", console.log);\n\n for (const apiK of Object.keys(API)) {\n const reference = API[apiK];\n const proxyCallback = makeProxyCallback(\n proxyPort,\n this.csoundInstance,\n apiK,\n this.currentPlayState,\n );\n\n switch (apiK) {\n case \"csoundCreate\": {\n break;\n }\n\n case \"csoundStart\": {\n const csoundStart = async function () {\n if (this.eventPromises.isWaiting(\"start\")) {\n return -1;\n } else {\n this.eventPromises.createStartPromise();\n\n const startResult = await proxyCallback({\n csound: this.csoundInstance,\n });\n await this.eventPromises.waitForStart();\n\n return startResult;\n }\n };\n\n csoundStart.toString = () => reference.toString();\n this.exportApi.start = csoundStart.bind(this);\n break;\n }\n\n case \"csoundStop\": {\n const csoundStop = async function () {\n if (this.eventPromises.isWaiting(\"stop\")) {\n return -1;\n } else {\n this.eventPromises.createStopPromise();\n this.ipcMessagePorts.mainMessagePort.postMessage({\n newPlayState:\n this.currentPlayState === \"renderStarted\"\n ? \"renderEnded\"\n : \"realtimePerformanceEnded\",\n });\n\n await this.eventPromises.waitForStop();\n return 0;\n }\n };\n this.exportApi.stop = csoundStop.bind(this);\n csoundStop.toString = reference.toString;\n break;\n }\n\n case \"csoundReset\": {\n const csoundReset = async () => {\n // no start = noReset\n if (!this.currentPlayState) {\n return;\n }\n if (this.eventPromises.isWaiting(\"reset\")) {\n return -1;\n } else {\n if (stopableStates.has(this.currentPlayState)) {\n await this.exportApi.stop();\n }\n const resetResult = await proxyCallback([]);\n if (!this.audioContextIsProvided) {\n await this.audioWorker.terminateInstance();\n delete this.audioWorker.audioContext;\n }\n\n this.ipcMessagePorts.restartAudioWorkerPorts();\n\n return resetResult;\n }\n };\n this.exportApi.reset = csoundReset.bind(this);\n csoundReset.toString = reference.toString;\n break;\n }\n\n case \"fs\": {\n this.exportApi.fs = {};\n Object.keys(reference).forEach((method) => {\n const proxyFsCallback = makeProxyCallback(\n proxyPort,\n this.csoundInstance,\n method,\n this.currentPlayState,\n );\n proxyFsCallback.toString = reference[method].toString;\n this.exportApi.fs[method] = proxyFsCallback;\n });\n break;\n }\n\n default: {\n proxyCallback.toString = reference.toString;\n this.exportApi[csoundApiRename(apiK)] = proxyCallback;\n break;\n }\n }\n }\n log(`exportAPI generated`)();\n }\n}\n\nexport default VanillaWorkerMainThread;\n","/*! unmute-ios-audio. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\nmodule.exports = unmuteIosAudio\n\nconst USER_ACTIVATION_EVENTS = [\n 'auxclick',\n 'click',\n 'contextmenu',\n 'dblclick',\n 'keydown',\n 'keyup',\n 'mousedown',\n 'mouseup',\n 'touchend'\n]\n\nfunction unmuteIosAudio () {\n const AudioContext = window.webkitAudioContext\n\n // To detect iOS, check for touch device and confirm Safari-only\n // webkitAudioContext is present.\n const isIos = navigator.maxTouchPoints > 0 && AudioContext != null\n\n if (!isIos) return\n\n // state can be 'blocked', 'pending', 'allowed'\n let htmlAudioState = 'blocked'\n let webAudioState = 'blocked'\n\n let audio\n let context\n let source\n\n const sampleRate = (new AudioContext()).sampleRate\n const silentAudioFile = createSilentAudioFile(sampleRate)\n\n USER_ACTIVATION_EVENTS.forEach(eventName => {\n window.addEventListener(\n eventName, handleUserActivation, { capture: true, passive: true }\n )\n })\n\n // Return a seven samples long 8 bit mono WAVE file\n function createSilentAudioFile (sampleRate) {\n const arrayBuffer = new ArrayBuffer(10)\n const dataView = new DataView(arrayBuffer)\n\n dataView.setUint32(0, sampleRate, true)\n dataView.setUint32(4, sampleRate, true)\n dataView.setUint16(8, 1, true)\n\n const missingCharacters =\n window.btoa(String.fromCharCode(...new Uint8Array(arrayBuffer)))\n .slice(0, 13)\n\n return `data:audio/wav;base64,UklGRisAAABXQVZFZm10IBAAAAABAAEA${missingCharacters}AgAZGF0YQcAAACAgICAgICAAAA=`\n }\n\n function handleUserActivation (e) {\n if (htmlAudioState === 'blocked') {\n htmlAudioState = 'pending'\n createHtmlAudio()\n }\n if (webAudioState === 'blocked') {\n webAudioState = 'pending'\n createWebAudio()\n }\n }\n\n function createHtmlAudio () {\n audio = document.createElement('audio')\n\n audio.setAttribute('x-webkit-airplay', 'deny') // Disable the iOS control center media widget\n audio.preload = 'auto'\n audio.loop = true\n audio.src = silentAudioFile\n audio.load()\n\n audio.play().then(\n () => {\n htmlAudioState = 'allowed'\n maybeCleanup()\n },\n () => {\n htmlAudioState = 'blocked'\n\n audio.pause()\n audio.removeAttribute('src')\n audio.load()\n audio = null\n }\n )\n }\n\n function createWebAudio () {\n context = new AudioContext()\n\n source = context.createBufferSource()\n source.buffer = context.createBuffer(1, 1, 22050) // .045 msec of silence\n source.connect(context.destination)\n source.start()\n\n if (context.state === 'running') {\n webAudioState = 'allowed'\n maybeCleanup()\n } else {\n webAudioState = 'blocked'\n\n source.disconnect(context.destination)\n source = null\n\n context.close()\n context = null\n }\n }\n\n function maybeCleanup () {\n if (htmlAudioState !== 'allowed' || webAudioState !== 'allowed') return\n\n USER_ACTIVATION_EVENTS.forEach(eventName => {\n window.removeEventListener(\n eventName, handleUserActivation, { capture: true, passive: true }\n )\n })\n }\n}\n","export const DEFAULT_BUFFER_LEN = 128;\nexport const MAX_CHANNELS = 32;\nexport const RING_BUFFER_SIZE = 16384;\nexport const MIDI_BUFFER_SIZE = 1024;\nexport const MIDI_BUFFER_PAYLOAD_SIZE = 3;\nexport const CALLBACK_DATA_BUFFER_SIZE = 16384;\n\nexport const initialSharedState = [\n 0, // 1 = csound worker is locked\n 4096, // n = framesRequested (4096 is only initial and will thereafter be max'd to 2048)\n 0, // 1 = Csound is currently performing\n 0, // 1 = Csound is currently rendering\n 0, // 1 = Csound is currently paused\n 0, // 1 = STOP\n -1, // n = sample rate\n -1, // n = ksmps\n -1, // n = nchnls\n -1, // n = ncnls_i\n 0, // n = if 1 then it's requesting microphone\n DEFAULT_BUFFER_LEN, // number of samples per process\n 0, // n = buffer read index of output buffer\n 0, // n = buffer write index of output buffer\n 0, // n = number of input buffers available\n 0, // n = number of output buffers available\n 0, // n = if 1 then is requesting rtmidi\n 0, // n = rtmidi buffer index\n 0, // n = available rtmidi events in buffer\n 0, // n = has pending callbacks\n];\n\n// Enum helper for SAB\nexport const AUDIO_STATE = {\n CSOUND_LOCK: 0,\n FRAMES_REQUESTED: 1,\n IS_PERFORMING: 2,\n IS_RENDERING: 3,\n IS_PAUSED: 4,\n STOP: 5,\n SAMPLE_RATE: 6,\n KSMPS: 7,\n NCHNLS: 8,\n NCHNLS_I: 9,\n IS_REQUESTING_MIC: 10,\n BUFFER_LEN: 11,\n OUTPUT_READ_INDEX: 12,\n OUTPUT_WRITE_INDEX: 13,\n AVAIL_IN_BUFS: 14,\n AVAIL_OUT_BUFS: 15,\n IS_REQUESTING_RTMIDI: 16,\n RTMIDI_INDEX: 17,\n AVAIL_RTMIDI_EVENTS: 18,\n HAS_PENDING_CALLBACKS: 19,\n};\n\nexport const DATA_TYPE = {\n NUMBER: 0,\n STRING: 1,\n FLOAT_32: 2,\n FLOAT_64: 3,\n};\n","export default () => (window.URL || window.webkitURL).createObjectURL(new Blob([\"(function(){/*\\n\\n Copyright The Closure Library Authors.\\n SPDX-License-Identifier: Apache-2.0\\n*/\\nvar $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(\\\".\\\");d=d||goog.global;a[0]in d||\\\"undefined\\\"==typeof d.execScript||d.execScript(\\\"var \\\"+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};\\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE=\\\"en\\\";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error(\\\"goog.provide cannot be used within a module.\\\");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace \\\"'+a+'\\\" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(\\\".\\\")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\\\\w+/_-]+[=]{0,2}$/;\\ngoog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector(\\\"script[nonce]\\\"))&&(a=a.nonce||a.getAttribute(\\\"nonce\\\"))&&goog.NONCE_PATTERN_.test(a)?a:\\\"\\\"};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\\ngoog.module=function(a){if(\\\"string\\\"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error(\\\"Invalid module identifier\\\");if(!goog.isInGoogModuleLoader_())throw Error(\\\"Module \\\"+a+\\\" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.\\\");if(goog.moduleLoaderState_.moduleName)throw Error(\\\"goog.module may only be called once per module.\\\");\\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace \\\"'+a+'\\\" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:\\\"es6\\\",GOOG:\\\"goog\\\"};goog.moduleLoaderState_=null;\\ngoog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?\\\"function\\\"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error(\\\"goog.module.declareLegacyNamespace must be called from within a goog.module\\\");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error(\\\"goog.module must be called prior to goog.module.declareLegacyNamespace.\\\");goog.moduleLoaderState_.declareLegacyNamespace=!0};\\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error(\\\"goog.declareModuleId may only be called from within an ES6 module\\\");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error(\\\"goog.declareModuleId may only be called once per module.\\\");if(a in goog.loadedModules_)throw Error('Module with namespace \\\"'+a+'\\\" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||\\\"function\\\"!=typeof b.getCurrentModulePath)throw Error('Module with namespace \\\"'+\\na+'\\\" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||\\\"\\\",Error(\\\"Importing test-only code into non-debug environment\\\"+(a?\\\": \\\"+a:\\\".\\\"));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={\\\"goog.module\\\":!0});\\ngoog.getObjectByName=function(a,b){a=a.split(\\\".\\\");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath=\\\"\\\";goog.abstractMethod=function(){throw Error(\\\"unimplemented abstract method\\\");};\\ngoog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE=\\\"detect\\\";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME=\\\"goog\\\";\\ngoog.hasBadLetScoping=null;\\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:\\\"\\\",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if(\\\"function\\\"===typeof a)d=a.call(void 0,d);else if(\\\"string\\\"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error(\\\"Invalid module definition\\\");var e=goog.moduleLoaderState_.moduleName;if(\\\"string\\\"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&\\nObject.seal&&\\\"object\\\"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name \\\"'+e+'\\\"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split(\\\"/\\\");for(var b=0;b<a.length;)\\\".\\\"==a[b]?a.splice(b,1):b&&\\\"..\\\"==a[b]&&a[b-1]&&\\\"..\\\"!=a[b-1]?a.splice(--b,2):b++;return a.join(\\\"/\\\")};\\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open(\\\"get\\\",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return\\\"object\\\"!=b?b:a?Array.isArray(a)?\\\"array\\\":b:\\\"null\\\"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return\\\"array\\\"==b||\\\"object\\\"==b&&\\\"number\\\"==typeof a.length};\\ngoog.isDateLike=function(a){return goog.isObject(a)&&\\\"function\\\"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return\\\"object\\\"==b&&null!=a||\\\"function\\\"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&\\\"removeAttribute\\\"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};\\ngoog.UID_PROPERTY_=\\\"closure_uid_\\\"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if(\\\"object\\\"==b||\\\"array\\\"==b){if(\\\"function\\\"===typeof a.clone)return a.clone();if(\\\"undefined\\\"!==typeof Map&&a instanceof Map)return new Map(a);if(\\\"undefined\\\"!==typeof Set&&a instanceof Set)return new Set(a);b=\\\"array\\\"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\\\"native code\\\")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};\\ngoog.getCssName=function(a,b){if(\\\".\\\"==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with \\\".\\\". You passed: '+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split(\\\"-\\\");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join(\\\"-\\\")};d=goog.cssNameMapping_?\\\"BY_WHOLE\\\"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+\\\"-\\\"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};\\ngoog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,\\\"&lt;\\\"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,\\\"<\\\").replace(/&gt;/g,\\\">\\\").replace(/&apos;/g,\\\"'\\\").replace(/&quot;/g,'\\\"').replace(/&amp;/g,\\\"&\\\"));b&&(a=a.replace(/\\\\{\\\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};\\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error(\\\"goog.scope is not supported within a module.\\\");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error(\\\"cannot instantiate an interface (no constructor defined).\\\");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_=\\\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\\\".split(\\\" \\\");\\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};\\ngoog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};\\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:\\\"\\\").match(/Edge\\\\/(\\\\d+)(\\\\.\\\\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&\\\"write\\\"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?\\\"complete\\\"!=a.readyState:\\\"loading\\\"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&\\\"string\\\"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=\\ngoog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName(\\\"SCRIPT\\\");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf(\\\"?\\\");d=-1==d?c.length:d;if(\\\"base.js\\\"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\\\\/(SCRIPT)/ig,\\\"\\\\\\\\x3c/$1\\\")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=\\n[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error(\\\"Unregonized namespace: \\\"+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},\\ngoog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+\\\"deps.js\\\"),\\\"deps.js\\\",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=\\nfunction(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error(\\\"Bad dependency path or symbol: \\\"+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_(\\\"goog.require could not find: \\\"+a)},goog.DebugLoader_.prototype.loadDeps_=\\nfunction(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error(\\\"Cannot call pause after the call to load.\\\");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error(\\\"Double call to loaded.\\\");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,\\nmoduleName:\\\"\\\",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||\\\"\\\"})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error(\\\"Cannot register with defer after the call to load.\\\");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};\\ntry{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==\\na.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?\\nthis.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=\\nfunction(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf(\\\"://\\\");0<=b&&(a=a.substring(b+3),b=a.indexOf(\\\"/\\\"),0<=b&&(a=a.substring(b+1)));return a},\\ngoog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},\\ngoog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error(\\\"Callback key \\\"+a+\\\" does not exist (was base.js loaded more than once?).\\\");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if(\\\"complete\\\"==\\nb.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write \\\"'+this.path+'\\\" after document load');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&\\\"complete\\\"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?' nonce=\\\"'+c+'\\\"':\\\"\\\";var f='<script src=\\\"'+this.path+'\\\"'+\\nc+(goog.Dependency.defer_?\\\" defer\\\":\\\"\\\")+' id=\\\"script-'+e+'\\\">\\\\x3c/script>';f+=\\\"<script\\\"+c+\\\">\\\";f=goog.Dependency.defer_?f+(\\\"document.getElementById('script-\\\"+e+\\\"').onload = function() {\\\\n goog.Dependency.callback_('\\\"+e+\\\"', this);\\\\n};\\\\n\\\"):f+(\\\"goog.Dependency.callback_('\\\"+e+\\\"', document.getElementById('script-\\\"+e+\\\"'));\\\");f+=\\\"\\\\x3c/script>\\\";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement(\\\"script\\\");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=\\nc);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_(\\\"Cannot use default debug loader outside of HTML documents.\\\"),\\\"deps.js\\\"==this.relativePath?(goog.logToConsole_(\\\"Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true.\\\"),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,\\nb,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,n){var m=\\\"\\\",p=goog.getScriptNonce_();p&&(m=' nonce=\\\"'+p+'\\\"');l=n?'<script type=\\\"module\\\" crossorigin'+m+\\\">\\\"+n+\\\"\\\\x3c/script>\\\":'<script type=\\\"module\\\" crossorigin src=\\\"'+l+'\\\"'+m+\\\">\\\\x3c/script>\\\";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,n){var m=d.createElement(\\\"script\\\");m.defer=!0;m.async=!1;m.type=\\\"module\\\";m.setAttribute(\\\"crossorigin\\\",\\n!0);var p=goog.getScriptNonce_();p&&(m.nonce=p);n?m.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(n):n:m.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(m)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);\\na.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_(\\\"'+g+'\\\")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from \\\"'+this.path+'\\\"; goog.Dependency.callback_(\\\"'+h+'\\\", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_(\\\"'+\\nk+'\\\")')}else goog.logToConsole_(\\\"Cannot use default debug loader outside of HTML documents.\\\"),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!(\\\"noModule\\\"in goog.global.document.createElement(\\\"script\\\"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=\\ne.transform(e.contents_),e.contents_&&(e.contents_+=\\\"\\\\n//# sourceURL=\\\"+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var l=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(l));if(f)var n=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),n)});a.loaded()}}\\nfunction d(){var l=goog.global.document,n=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(n);c()}),m=goog.getScriptNonce_();m=\\\"<script\\\"+(m?' nonce=\\\"'+m+'\\\"':\\\"\\\")+\\\">\\\"+goog.protectScriptTag_('goog.Dependency.callback_(\\\"'+n+'\\\");')+\\\"\\\\x3c/script>\\\";l.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(m):m)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT(\\\"\\\",this.contents_)?(this.contents_=null,a.loaded()):\\na.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&(\\\"ActiveXObject\\\"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){\\\"interactive\\\"==h.readyState&&(h.onreadystatechange=\\nk,c(),a.resume());\\\"function\\\"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,\\nc,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?\\\"goog.loadModule(\\\"+goog.global.JSON.stringify(a+\\\"\\\\n//# sourceURL=\\\"+this.path+\\\"\\\\n\\\")+\\\");\\\":'goog.loadModule(function(exports) {\\\"use strict\\\";'+a+\\\"\\\\n;return exports});\\\\n//# sourceURL=\\\"+this.path+\\\"\\\\n\\\"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=\\nb||[];a=a.replace(/\\\\\\\\/g,\\\"/\\\");var e=goog.normalizePath_(goog.basePath+a);d&&\\\"boolean\\\"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?\\nnew goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+\\\"#base\\\"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),\\ngoog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy(\\\"goog#base#devonly#eval\\\")||{createScript:goog.identity_}};const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.proxy\\\"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.endpoint\\\"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.releaseProxy\\\"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.thrown\\\"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>\\\"object\\\"===typeof a&&null!==a||\\\"function\\\"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=\\n{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&\\nthrowMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([[\\\"proxy\\\",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],[\\\"throw\\\",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);\\nfunction expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener(\\\"message\\\",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const n=h.slice(0,-1).reduce((p,q)=>p[q],a),m=h.reduce((p,q)=>p[q],a);switch(g){case \\\"GET\\\":var l=m;break;case \\\"SET\\\":n[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);\\nl=!0;break;case \\\"APPLY\\\":l=m.apply(n,k);break;case \\\"CONSTRUCT\\\":const p=new m(...k);l=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case \\\"ENDPOINT\\\":const {port1:q,port2:B}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,B);l=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case \\\"RELEASE\\\":l=void 0;break;default:return}}catch(n){l={value:n,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(l).catch(n=>\\n({value:n,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(n=>{const [m,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(n);b.postMessage(Object.assign(Object.assign({},m),{id:f}),p);\\\"RELEASE\\\"===g&&(b.removeEventListener(\\\"message\\\",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return\\\"MessagePort\\\"===a.constructor.name}\\nfunction closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error(\\\"Proxy has been released and is not useable\\\");}\\nfunction createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"RELEASE\\\",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if(\\\"then\\\"===\\ng){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"GET\\\",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,l]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\\n{type:\\\"SET\\\",path:[...b,g].map(n=>n.toString()),value:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"ENDPOINT\\\"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if(\\\"bind\\\"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\\nb.slice(0,-1));const [k,l]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"APPLY\\\",path:b.map(n=>n.toString()),argumentList:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\\n{type:\\\"CONSTRUCT\\\",path:b.map(l=>l.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}\\nfunction processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}\\nfunction proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c=\\\"*\\\"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}\\nfunction toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:\\\"HANDLER\\\",name:b,value:d},e]}return[{type:\\\"RAW\\\",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}\\nfunction fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case \\\"HANDLER\\\":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case \\\"RAW\\\":return a.value}}\\nfunction requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener(\\\"message\\\",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener(\\\"message\\\",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}\\nfunction generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join(\\\"-\\\")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;\\nmodule$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;\\nmodule$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;\\nMessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;const csoundCreate$$module$src$modules$instantiation=a=>()=>a.exports.csoundCreateWasi();csoundCreate$$module$src$modules$instantiation.toString=()=>\\\"create = async () => undefined;\\\";const csoundDestroy$$module$src$modules$instantiation=a=>b=>a.exports.csoundDestroy(b);csoundDestroy$$module$src$modules$instantiation.toString=()=>\\\"destroy = async () => undefined;\\\";const csoundGetAPIVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetAPIVersion();\\ncsoundGetAPIVersion$$module$src$modules$instantiation.toString=()=>\\\"getAPIVersion = async () => Number;\\\";const csoundGetVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetVersion();csoundGetVersion$$module$src$modules$instantiation.toString=()=>\\\"getVersion = async () => Number;\\\";const csoundInitialize$$module$src$modules$instantiation=a=>(b,c)=>a.exports.csoundInitialize(c);csoundInitialize$$module$src$modules$instantiation.toString=()=>\\\"initialize = async () => Number;\\\";\\nvar module$src$modules$instantiation={};module$src$modules$instantiation.csoundCreate=csoundCreate$$module$src$modules$instantiation;module$src$modules$instantiation.csoundDestroy=csoundDestroy$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetAPIVersion=csoundGetAPIVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetVersion=csoundGetVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundInitialize=csoundInitialize$$module$src$modules$instantiation;const WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders=!1;function TextEncoderPoly$$module$src$utils$text_encoders(){this.encoding=\\\"utf8\\\";return this}TextEncoderPoly$$module$src$utils$text_encoders.prototype.encode=function(a){if(\\\"string\\\"!==typeof a)throw new TypeError(\\\"passed argument must be of type string \\\"+a+\\\" \\\"+typeof a);a=unescape(encodeURIComponent(a));const b=new Uint8Array(a.length);[...a].forEach(function(c,d){b[d]=c.codePointAt(0)});return b};\\nfunction TextDecoderPoly$$module$src$utils$text_encoders(){this.encoding=\\\"utf8\\\";this.ignoreBOM=!1;this.trimNull=a=>{const b=a.indexOf(\\\"\\\\x00\\\");return-1<b?a.slice(0,Math.max(0,b)):a};this.decode=function(a,b){if(void 0===a)return\\\"\\\";if(\\\"boolean\\\"!==typeof(void 0!==b&&\\\"stream\\\"in b?b.stream:!1))throw new TypeError(\\\"stream option must be boolean\\\");if(ArrayBuffer.isView(a)){a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);const c=Array.from({length:a.length});a.forEach(function(d,e){c[e]=String.fromCodePoint(d)});\\nreturn this.trimNull(c.join(\\\"\\\"))}throw new TypeError(\\\"passed argument must be an array buffer view\\\");}}\\nconst decoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextDecoderPoly$$module$src$utils$text_encoders:new TextDecoder(\\\"utf8\\\"),encoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextEncoderPoly$$module$src$utils$text_encoders:new TextEncoder(\\\"utf8\\\"),uint2String$$module$src$utils$text_encoders=a=>decoder$$module$src$utils$text_encoders.decode(a);var module$src$utils$text_encoders={};\\nmodule$src$utils$text_encoders.decoder=decoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.encoder=encoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.uint2String=uint2String$$module$src$utils$text_encoders;const trimNull$$module$src$utils$trim_null=a=>{const b=a.indexOf(\\\"\\\\x00\\\");return-1<b?a.substr(0,b):a};var module$src$utils$trim_null={};module$src$utils$trim_null.trimNull=trimNull$$module$src$utils$trim_null;const freeStringPtr$$module$src$utils$string_pointers=(a,b)=>{a.exports.freeStringMem(b)},ptr2string$$module$src$utils$string_pointers=(a,b)=>{({buffer:a}=a.wasi.memory);b=new Uint8Array(a,b);b=uint2String$$module$src$utils$text_encoders(b);return trimNull$$module$src$utils$trim_null(b)},string2ptr$$module$src$utils$string_pointers=(a,b)=>{if(\\\"string\\\"!==typeof b)console.error(\\\"Expected string but got\\\",typeof b);else{b=encoder$$module$src$utils$text_encoders.encode(b);var c=a.exports.allocStringMem(b.length);\\n({buffer:a}=a.wasi.memory);(new Uint8Array(a,c,b.length+1)).set(b);return c}};var module$src$utils$string_pointers={};module$src$utils$string_pointers.freeStringPtr=freeStringPtr$$module$src$utils$string_pointers;module$src$utils$string_pointers.ptr2string=ptr2string$$module$src$utils$string_pointers;module$src$utils$string_pointers.string2ptr=string2ptr$$module$src$utils$string_pointers;const csoundParseOrc$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundParseOrc(b,c);csoundParseOrc$$module$src$modules$performance.toString=()=>\\\"parseOrc = async (orchestra) => Object;\\\";const csoundCompileTree$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundCompileTree(b,c);csoundCompileTree$$module$src$modules$performance.toString=()=>\\\"compileTree = async (tree) => Number;\\\";\\nconst csoundCompileOrc$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileOrc(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileOrc$$module$src$modules$performance.toString=()=>\\\"compileOrc = async (orchestra) => Number;\\\";\\nconst csoundEvalCode$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundEvalCode(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundEvalCode$$module$src$modules$performance.toString=()=>\\\"csoundEvalCode = async (orchestra) => Number;\\\";const csoundStart$$module$src$modules$performance=a=>b=>a.exports.csoundStartWasi(b);csoundStart$$module$src$modules$performance.toString=()=>\\\"start = async () => Number;\\\";\\nconst csoundCompileCsd$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);let d;try{d=a.exports.csoundCompileCsd(b,c)}catch(e){console.error(e)}freeStringPtr$$module$src$utils$string_pointers(a,c);return d};csoundCompileCsd$$module$src$modules$performance.toString=()=>\\\"compileCsd = async (path) => Number;\\\";\\nconst csoundCompileCsdText$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileCsdText(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileCsdText$$module$src$modules$performance.toString=()=>\\\"compileCsdText = async (csoundDocument) => Number;\\\";const csoundPerform$$module$src$modules$performance=a=>b=>a.exports.csoundPerform(b);csoundPerform$$module$src$modules$performance.toString=()=>\\\"perform = async () => Number;\\\";\\nconst csoundPerformKsmps$$module$src$modules$performance=a=>b=>a.exports.csoundPerformKsmpsWasi(b);csoundPerformKsmps$$module$src$modules$performance.toString=()=>\\\"performKsmps = async (csound) => Number;\\\";const csoundPerformBuffer$$module$src$modules$performance=a=>b=>a.exports.csoundPerformBuffer(b);csoundPerformBuffer$$module$src$modules$performance.toString=()=>\\\"performBuffer = async (csound) => Number;\\\";const csoundStop$$module$src$modules$performance=a=>b=>a.exports.csoundStop(b);\\ncsoundStop$$module$src$modules$performance.toString=()=>\\\"stop = async () => undefined;\\\";const csoundCleanup$$module$src$modules$performance=a=>b=>a.exports.csoundCleanup(b);csoundCleanup$$module$src$modules$performance.toString=()=>\\\"cleanup = async () => Number;\\\";const csoundReset$$module$src$modules$performance=a=>b=>a.exports.csoundResetWasi(b);csoundReset$$module$src$modules$performance.toString=()=>\\\"reset = async () => Number;\\\";var module$src$modules$performance={};\\nmodule$src$modules$performance.csoundCleanup=csoundCleanup$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsd=csoundCompileCsd$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsdText=csoundCompileCsdText$$module$src$modules$performance;module$src$modules$performance.csoundCompileOrc=csoundCompileOrc$$module$src$modules$performance;module$src$modules$performance.csoundCompileTree=csoundCompileTree$$module$src$modules$performance;\\nmodule$src$modules$performance.csoundEvalCode=csoundEvalCode$$module$src$modules$performance;module$src$modules$performance.csoundParseOrc=csoundParseOrc$$module$src$modules$performance;module$src$modules$performance.csoundPerform=csoundPerform$$module$src$modules$performance;module$src$modules$performance.csoundPerformBuffer=csoundPerformBuffer$$module$src$modules$performance;module$src$modules$performance.csoundPerformKsmps=csoundPerformKsmps$$module$src$modules$performance;\\nmodule$src$modules$performance.csoundReset=csoundReset$$module$src$modules$performance;module$src$modules$performance.csoundStart=csoundStart$$module$src$modules$performance;module$src$modules$performance.csoundStop=csoundStop$$module$src$modules$performance;const sizeOfPrimitive$$module$src$utils$native_sizes={int:4,MYFLT:4,char:1},sizeofStruct$$module$src$utils$native_sizes=a=>a.reduce((b,[,c,...d])=>b+(\\\"char\\\"===c?sizeOfPrimitive$$module$src$utils$native_sizes[c]*d[0]:sizeOfPrimitive$$module$src$utils$native_sizes[c]),0);var module$src$utils$native_sizes={};module$src$utils$native_sizes.sizeOfPrimitive=sizeOfPrimitive$$module$src$utils$native_sizes;module$src$utils$native_sizes.sizeofStruct=sizeofStruct$$module$src$utils$native_sizes;const structBufferToObject$$module$src$utils$structure_buffer_to_object=(a,b)=>{[a]=a.reduce(([c,d],[e,f,...g])=>{g=\\\"char\\\"===f?sizeOfPrimitive$$module$src$utils$native_sizes[f]*g[0]:sizeOfPrimitive$$module$src$utils$native_sizes[f];f=\\\"char\\\"===f?trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(b.subarray(d,g)))||\\\"\\\":b[d];c[e]=f;return[c,d+g]},[{},0]);return a};var module$src$utils$structure_buffer_to_object={};\\nmodule$src$utils$structure_buffer_to_object.structBufferToObject=structBufferToObject$$module$src$utils$structure_buffer_to_object;const CSOUND_PARAMS$$module$src$structures=[[\\\"debug_mode\\\",\\\"int\\\"],[\\\"buffer_frames\\\",\\\"int\\\"],[\\\"hardware_buffer_frames\\\",\\\"int\\\"],[\\\"displays\\\",\\\"int\\\"],[\\\"ascii_graphs\\\",\\\"int\\\"],[\\\"postscript_graphs\\\",\\\"int\\\"],[\\\"message_level\\\",\\\"int\\\"],[\\\"tempo\\\",\\\"int\\\"],[\\\"ring_bell\\\",\\\"int\\\"],[\\\"use_cscore\\\",\\\"int\\\"],[\\\"terminate_on_midi\\\",\\\"int\\\"],[\\\"heartbeat\\\",\\\"int\\\"],[\\\"defer_gen01_load\\\",\\\"int\\\"],[\\\"midi_key\\\",\\\"int\\\"],[\\\"midi_key_cps\\\",\\\"int\\\"],[\\\"midi_key_oct\\\",\\\"int\\\"],[\\\"midi_key_pch\\\",\\\"int\\\"],[\\\"midi_velocity\\\",\\\"int\\\"],[\\\"midi_velocity_amp\\\",\\\"int\\\"],[\\\"no_default_paths\\\",\\n\\\"int\\\"],[\\\"number_of_threads\\\",\\\"int\\\"],[\\\"syntax_check_only\\\",\\\"int\\\"],[\\\"csd_line_counts\\\",\\\"int\\\"],[\\\"compute_weights\\\",\\\"int\\\"],[\\\"realtime_mode\\\",\\\"int\\\"],[\\\"sample_accurate\\\",\\\"int\\\"],[\\\"sample_rate_override\\\",\\\"MYFLT\\\"],[\\\"control_rate_override\\\",\\\"MYFLT\\\"],[\\\"nchnls_override\\\",\\\"int\\\"],[\\\"nchnls_i_override\\\",\\\"int\\\"],[\\\"e0dbfs_override\\\",\\\"MYFLT\\\"],[\\\"daemon\\\",\\\"int\\\"],[\\\"ksmps_override\\\",\\\"int\\\"],[\\\"FFT_library\\\",\\\"int\\\"]],CS_MIDIDEVICE$$module$src$structures=[[\\\"device_name\\\",\\\"char\\\",64],[\\\"interface_name\\\",\\\"char\\\",64],[\\\"device_id\\\",\\\"char\\\",64],[\\\"midi_module\\\",\\n\\\"char\\\",64],[\\\"isOutput\\\",\\\"int\\\"]];var module$src$structures={};const csoundGetSr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSr(b);csoundGetSr$$module$src$modules$attributes.toString=()=>\\\"getSr = async () => Number;\\\";const csoundGetKr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKr(b);csoundGetKr$$module$src$modules$attributes.toString=()=>\\\"getKr = async () => Number;\\\";const csoundGetKsmps$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKsmps(b);csoundGetKsmps$$module$src$modules$attributes.toString=()=>\\\"getKsmps = async () => Number;\\\";\\nconst csoundGetNchnls$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnls(b);csoundGetNchnls$$module$src$modules$attributes.toString=()=>\\\"getNchnls = async () => Number;\\\";const csoundGetNchnlsInput$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnlsInput(b);csoundGetNchnlsInput$$module$src$modules$attributes.toString=()=>\\\"getNchnlsInput = async () => Number;\\\";const csoundGet0dBFS$$module$src$modules$attributes=a=>b=>a.exports.csoundGet0dBFS(b);\\ncsoundGet0dBFS$$module$src$modules$attributes.toString=()=>\\\"get0dBFS = async () => Number;\\\";const csoundGetA4$$module$src$modules$attributes=a=>b=>a.exports.csoundGetA4(b);csoundGetA4$$module$src$modules$attributes.toString=()=>\\\"getA4 = async () => Number;\\\";const csoundGetCurrentTimeSamples$$module$src$modules$attributes=a=>b=>a.exports.csoundGetCurrentTimeSamples(b);csoundGetCurrentTimeSamples$$module$src$modules$attributes.toString=()=>\\\"getCurrentTimeSamples = async () => Number;\\\";\\nconst csoundGetSizeOfMYFLT$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSizeOfMYFLT(b);csoundGetSizeOfMYFLT$$module$src$modules$attributes.toString=()=>\\\"getSizeOfMYFLT = async () => Number;\\\";const csoundSetOption$$module$src$modules$attributes=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundSetOption(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundSetOption$$module$src$modules$attributes.toString=()=>\\\"setOption = async (option) => Number;\\\";\\nconst csoundSetParams$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetParams(b,c)};csoundSetParams$$module$src$modules$attributes.toString=()=>\\\"setParams = async (csoundParams) => undefined;\\\";\\nconst csoundGetParams$$module$src$modules$attributes=a=>b=>{var {buffer:c}=a.wasi.memory;const d=sizeofStruct$$module$src$utils$native_sizes(CSOUND_PARAMS$$module$src$structures),e=a.exports.allocCsoundParamsStruct();c=new Uint8Array(c,e,d);a.exports.csoundGetParams(b,e);b=structBufferToObject$$module$src$utils$structure_buffer_to_object(CSOUND_PARAMS$$module$src$structures,c);a.exports.freeCsoundParams(e);return b};csoundGetParams$$module$src$modules$attributes.toString=()=>\\\"getParams = async () => CSOUND_PARAMS;\\\";\\nconst csoundGetDebug$$module$src$modules$attributes=a=>b=>a.exports.csoundGetDebug(b);csoundGetDebug$$module$src$modules$attributes.toString=()=>\\\"getDebug = async () => Number;\\\";const csoundSetDebug$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetDebug(b,c)};csoundSetDebug$$module$src$modules$attributes.toString=()=>\\\"setDebug = async (number) => undefined;\\\";var module$src$modules$attributes={};module$src$modules$attributes.csoundGet0dBFS=csoundGet0dBFS$$module$src$modules$attributes;\\nmodule$src$modules$attributes.csoundGetA4=csoundGetA4$$module$src$modules$attributes;module$src$modules$attributes.csoundGetCurrentTimeSamples=csoundGetCurrentTimeSamples$$module$src$modules$attributes;module$src$modules$attributes.csoundGetDebug=csoundGetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKr=csoundGetKr$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKsmps=csoundGetKsmps$$module$src$modules$attributes;\\nmodule$src$modules$attributes.csoundGetNchnls=csoundGetNchnls$$module$src$modules$attributes;module$src$modules$attributes.csoundGetNchnlsInput=csoundGetNchnlsInput$$module$src$modules$attributes;module$src$modules$attributes.csoundGetParams=csoundGetParams$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSizeOfMYFLT=csoundGetSizeOfMYFLT$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSr=csoundGetSr$$module$src$modules$attributes;\\nmodule$src$modules$attributes.csoundSetDebug=csoundSetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundSetOption=csoundSetOption$$module$src$modules$attributes;module$src$modules$attributes.csoundSetParams=csoundSetParams$$module$src$modules$attributes;const csoundGetInputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBufferSize(b);csoundGetInputBufferSize$$module$src$modules$rtaudio.toString=()=>\\\"getInputBufferSize = async () => Number;\\\";const csoundGetOutputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBufferSize(b);csoundGetOutputBufferSize$$module$src$modules$rtaudio.toString=()=>\\\"getOutputBufferSize = async () => Number;\\\";const csoundGetInputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBuffer(b);\\ncsoundGetInputBuffer$$module$src$modules$rtaudio.toString=()=>\\\"getInputBuffer = async () => Number;\\\";const csoundGetOutputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBuffer(b);csoundGetOutputBuffer$$module$src$modules$rtaudio.toString=()=>\\\"getOutputBuffer = async () => Number;\\\";const csoundGetSpin$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpin(b);csoundGetSpin$$module$src$modules$rtaudio.toString=()=>\\\"getSpin = async (csound) => Number;\\\";\\nconst csoundGetSpout$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpout(b);csoundGetSpout$$module$src$modules$rtaudio.toString=()=>\\\"getSpout = async () => Number;\\\";var module$src$modules$rtaudio={};module$src$modules$rtaudio.csoundGetInputBuffer=csoundGetInputBuffer$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetInputBufferSize=csoundGetInputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetOutputBuffer=csoundGetOutputBuffer$$module$src$modules$rtaudio;\\nmodule$src$modules$rtaudio.csoundGetOutputBufferSize=csoundGetOutputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpin=csoundGetSpin$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpout=csoundGetSpout$$module$src$modules$rtaudio;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}\\nfunction adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}\\nfunction and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}\\nfunction anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(\\\"string\\\"===typeof b)return b.split(\\\"\\\").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}\\nfunction apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;\\nfunction __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&\\\"constructor\\\"!==c&&(\\\"object\\\"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),\\\"function\\\"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}\\nfunction __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&\\\"undefined\\\"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}\\nfunction __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,\\nb,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;\\nfor(;d<f;d++){if(\\\"object\\\"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);\\\"function\\\"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&\\\"constructor\\\"!==e&&(\\\"object\\\"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):\\\"function\\\"===typeof a[e]&&(d[e]=a[e](...c)));return d}\\nfunction applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;\\nfunction assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=\\\"string\\\"===typeof a?a.split(\\\".\\\").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e=\\\"object\\\"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&\\nisArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}\\nfunction _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,n){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,l,n,m){return b.apply(this,arguments)}}}\\nfunction curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error(\\\"First argument to _arity must be a non-negative integer no greater than ten\\\");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}\\nfunction bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}\\nfunction chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error(\\\"min must not be greater than max in clamp(min, max, value)\\\");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]=\\\"object\\\"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}\\nclass ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError(\\\"reduce: list must be array or iterable\\\");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}\\nconst reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);\\nfunction _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,n){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,l,n,m){return b.apply(this,arguments)};default:throw Error(\\\"First argument to _arity must be a non-negative integer no greater than ten\\\");}}\\nfunction _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}\\nfunction pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error(\\\"pipe requires at least one argument\\\");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}\\nfunction compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error(\\\"compose requires at least one argument\\\");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):\\\"string\\\"===typeof a?`${a}${b}`:[...a,...b]}\\nfunction cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}\\nfunction mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\\nfunction map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\\nfunction max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}\\nfunction converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}\\nfunction count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}\\nconst dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}\\nfunction type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return\\\"Null\\\";if(void 0===a)return\\\"Undefined\\\";if(Number.isNaN(a))return\\\"NaN\\\";a=Object.prototype.toString.call(a).slice(8,-1);return\\\"AsyncFunction\\\"===a?\\\"Promise\\\":a}\\nfunction _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(![\\\"Object\\\",\\\"Array\\\",\\\"NaN\\\",\\\"RegExp\\\"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\\nfunction _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(![\\\"Object\\\",\\\"Array\\\",\\\"NaN\\\",\\\"RegExp\\\"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\\nfunction _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}\\nfunction parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return[\\\"Error\\\",\\\"TypeError\\\"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}\\nfunction equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if(\\\"Function\\\"===c)return void 0===a.name?!1:a.name===b.name;if([\\\"NaN\\\",\\\"Undefined\\\",\\\"Null\\\"].includes(c))return!0;if(\\\"Number\\\"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if([\\\"String\\\",\\\"Boolean\\\"].includes(c))return a.toString()===\\nb.toString();if(\\\"Array\\\"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);\\nif(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if(\\\"Set\\\"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if(\\\"Object\\\"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});\\nreturn f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(\\\"string\\\"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \\\\'indexOf\\\\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}\\nclass _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return[\\\"Null\\\",\\\"Undefined\\\",\\\"NaN\\\"].includes(b)?b in this.items?!1:this.items[b]=!0:[\\\"Object\\\",\\\"Array\\\"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}\\nfunction uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\\nfunction dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}\\nfunction drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}\\nfunction dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(\\\"function\\\"!==typeof a)throw Error(`'predicate' is from wrong type ${typeof a}`);if(!c&&\\\"string\\\"!==typeof b)throw Error(`'iterable' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):\\n(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join(\\\"\\\")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}\\nfunction dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}\\nfunction dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&\\\"string\\\"!==typeof b)throw Error(\\\"`iterable` is neither list nor a string\\\");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join(\\\"\\\")}\\nfunction either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}\\nfunction endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(\\\"string\\\"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}\\nfunction prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>\\\"Function\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}\\nfunction evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if(\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return\\\"Function\\\"===e?a[d](c):\\\"Object\\\"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return\\\"Function\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}\\nfunction evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error(\\\"iterableType !== rulesType\\\");if(![\\\"Object\\\",\\\"Array\\\"].includes(c))throw Error(`'iterable' and 'rules' are from wrong type ${c}`);return\\\"Object\\\"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,\\nb)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}\\nfunction filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(\\\"Incorrect iterable input\\\");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\\nfunction find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}\\nfunction findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}\\nfunction flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}\\nfunction flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error(\\\"R.flip doesn't work with arity > 4\\\");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}\\nfunction forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}\\nfunction fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}\\nfunction groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError(\\\"list.reduce is not a function\\\");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),l=0===e.length;h=h===b.length-1;if(k)return l&&e.push(f),e.push(g),h&&d.push(e),g;if(l)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},\\nvoid 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b=\\\".\\\"){return\\\"string\\\"===typeof a?a.split(b):a}\\nfunction path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}\\nfunction hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a[0]||\\\"\\\":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;\\nfunction identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===(\\\"boolean\\\"===typeof a?a:a(...d))?b(...d):c(...d)}\\nconst ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}\\nfunction indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(\\\"string\\\"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}\\nfunction indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}\\nfunction init$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}\\nfunction intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}\\nfunction isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return[\\\"Undefined\\\",\\\"NaN\\\",\\\"Number\\\",\\\"Null\\\"].includes(b)?!1:a?\\\"Object\\\"===b?0===Object.keys(a).length:\\\"Array\\\"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}\\nfunction join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a[a.length-1]||\\\"\\\":a[a.length-1]}\\nfunction lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||\\\"string\\\"===typeof a?a.length:NaN}\\nfunction lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return\\\"[object String]\\\"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}\\nfunction updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}\\nfunction lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}\\nfunction mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}\\nfunction mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}\\nfunction mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}\\nfunction mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}\\nconst mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}\\nfunction _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,\\nd,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}\\nfunction modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],\\nb,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}\\nfunction moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error(\\\"Rambda.move does not support negative indexes\\\");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}\\nfunction not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}\\nfunction omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,\\\",\\\"),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}\\nfunction on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}\\nfunction once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});\\nfunction overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\\nfunction partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}\\nfunction partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\\nfunction pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\\nfunction pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,\\\",\\\"),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}\\nfunction pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,\\\",\\\"),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}\\nfunction pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):\\\"string\\\"===typeof b?[a].concat(b.split(\\\"\\\")):[a].concat(b)}\\nconst product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(\\\"propsToPick is not a list\\\");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}\\nconst propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError(\\\"Both arguments to range must be numbers\\\");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}\\nfunction reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}\\nconst replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a.split(\\\"\\\").reverse().join(\\\"\\\"):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}\\nconst set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}\\nfunction split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&\\\"Function\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||\\\"Function\\\"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}\\nfunction take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():\\\"string\\\"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}\\nfunction splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property 'slice' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&\\\"string\\\"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,\\nb)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error(\\\"First argument to splitEvery must be a positive integer\\\");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}\\nfunction splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property 'length' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}\\nfunction startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(\\\"string\\\"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}\\nfunction subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}\\nfunction symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}\\nfunction T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}\\nfunction takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return\\\"string\\\"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}\\nfunction takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join(\\\"\\\")}\\nfunction takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&\\\"string\\\"!==typeof b)throw Error(\\\"`iterable` is neither list nor a string\\\");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join(\\\"\\\")}\\nfunction tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(\\\"string\\\"===typeof a)throw new TypeError(`\\\\u2018test\\\\u2019 requires a value of type RegExp as its first argument; received \\\"${a}\\\"`);return-1!==b.search(a)}\\nfunction times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError(\\\"n must be an integer\\\");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}\\nfunction toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}\\nfunction trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>[\\\"Promise\\\",\\\"Function\\\"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));\\nfunction tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn '${a}'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}\\nfunction union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}\\nfunction uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}\\nfunction uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}\\nfunction unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}\\nfunction values$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"Object\\\"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}\\nfunction whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}\\nfunction whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}\\nfunction whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}\\nfunction without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}\\nfunction zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}\\nfunction zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;const csoundSetMidiCallbacks$$module$src$modules$rtmidi=a=>b=>{a.exports.csoundSetMidiCallbacks(b)},csoundGetMIDIDevList$$module$src$modules$rtmidi=a=>(b,c)=>{const {buffer:d}=a.wasi.memory,e=a.exports.csoundGetMIDIDevList(b,void 0,c?1:0);if(0===e)return[];const f=sizeofStruct$$module$src$utils$native_sizes(CS_MIDIDEVICE$$module$src$structures),g=a.exports.allocCsMidiDeviceStruct(e);a.exports.csoundGetMIDIDevList(b,g,c?1:0);const h=new Uint8Array(d,g,f*e);b=range$$module$node_modules$rambda$dist$rambda_mjs(0,\\ne).map(k=>structBufferToObject$$module$src$utils$structure_buffer_to_object(CS_MIDIDEVICE$$module$src$structures,h.subarray(k*f,f)));a.exports.freeCsMidiDeviceStruct(g);return b};csoundGetMIDIDevList$$module$src$modules$rtmidi.toString=()=>\\\"getMIDIDevList = async (isOutput) => Object;\\\";\\nconst csoundGetRtMidiName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getRtMidiName(b);c=new Uint8Array(c,b,128);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||\\\"\\\"};csoundGetRtMidiName$$module$src$modules$rtmidi.toString=()=>\\\"getRtMidiName = async () => String;\\\";\\nconst csoundGetMidiOutFileName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getMidiOutFileName(b);c=new Uint8Array(c,b,128);b&&0<b.length&&freeStringPtr$$module$src$utils$string_pointers(a,b);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||\\\"\\\"},_isRequestingRtMidiInput$$module$src$modules$rtmidi=a=>b=>a.exports.isRequestingRtMidiInput(b),csoundPushMidiMessage$$module$src$modules$rtmidi=a=>(b,c,d,e)=>{a.exports.pushMidiMessage(b,\\nc,d,e)};csoundPushMidiMessage$$module$src$modules$rtmidi.toString=()=>\\\"midiMessage = async (status, data1, data2) => undefined;\\\";var module$src$modules$rtmidi={};module$src$modules$rtmidi._isRequestingRtMidiInput=_isRequestingRtMidiInput$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMIDIDevList=csoundGetMIDIDevList$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMidiOutFileName=csoundGetMidiOutFileName$$module$src$modules$rtmidi;\\nmodule$src$modules$rtmidi.csoundGetRtMidiName=csoundGetRtMidiName$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundPushMidiMessage=csoundPushMidiMessage$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundSetMidiCallbacks=csoundSetMidiCallbacks$$module$src$modules$rtmidi;const csoundInputMessage$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessage(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessage$$module$src$modules$control_events.toString=()=>\\\"inputMessage = async (scoreEvent) => Number;\\\";\\nconst csoundInputMessageAsync$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessageAsync(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessageAsync$$module$src$modules$control_events.toString=()=>\\\"inputMessageAsync = async (scoreEvent) => Number;\\\";\\nconst csoundGetControlChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetControlChannelWasi(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundGetControlChannel$$module$src$modules$control_events.toString=()=>\\\"getControlChannel = async (channelName) => Number;\\\";\\nconst csoundSetControlChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);a.exports.csoundSetControlChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c)};csoundSetControlChannel$$module$src$modules$control_events.toString=()=>\\\"setControlChannel = async (channelName, value) => void;\\\";\\nconst csoundGetStringChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetStringChannelWasi(b,c);const d=ptr2string$$module$src$utils$string_pointers(a,b);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,b);return d};csoundGetStringChannel$$module$src$modules$control_events.toString=()=>\\\"getStringChannel = async (channelName) => String;\\\";\\nconst csoundSetStringChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);a.exports.csoundSetStringChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d)};csoundSetStringChannel$$module$src$modules$control_events.toString=()=>\\\"setStringChannel = async (channelName, value) => void;\\\";var module$src$modules$control_events={};\\nmodule$src$modules$control_events.csoundGetControlChannel=csoundGetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundGetStringChannel=csoundGetStringChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessage=csoundInputMessage$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessageAsync=csoundInputMessageAsync$$module$src$modules$control_events;\\nmodule$src$modules$control_events.csoundSetControlChannel=csoundSetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundSetStringChannel=csoundSetStringChannel$$module$src$modules$control_events;const csoundGetOutputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetOutputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||\\\"\\\"};csoundGetOutputName$$module$src$modules$general_io.toString=()=>\\\"getOutputName = async () => String;\\\";\\nconst csoundGetInputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetInputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||\\\"\\\"};csoundGetInputName$$module$src$modules$general_io.toString=()=>\\\"getInputName = async (csound) => String;\\\";var module$src$modules$general_io={};module$src$modules$general_io.csoundGetInputName=csoundGetInputName$$module$src$modules$general_io;\\nmodule$src$modules$general_io.csoundGetOutputName=csoundGetOutputName$$module$src$modules$general_io;const csoundAppendEnv$$module$src$modules$extra=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);b=a.exports.csoundAppendEnv(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d);return b};csoundAppendEnv$$module$src$modules$extra.toString=()=>\\\"appendEnv = async (csound, variable, value) => Number;\\\";const csoundShouldDaemonize$$module$src$modules$extra=a=>b=>a.exports.csoundShouldDaemonize(b);\\nvar module$src$modules$extra={};module$src$modules$extra.csoundAppendEnv=csoundAppendEnv$$module$src$modules$extra;module$src$modules$extra.csoundShouldDaemonize=csoundShouldDaemonize$$module$src$modules$extra;const csoundIsScorePending$$module$src$modules$score_handling=a=>b=>a.exports.csoundIsScorePending(b);csoundIsScorePending$$module$src$modules$score_handling.toString=()=>\\\"isScorePending = async () => Number;\\\";const csoundSetScorePending$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScorePending(b,c);csoundSetScorePending$$module$src$modules$score_handling.toString=()=>\\\"setScorePending = async (pending) => Number;\\\";\\nconst csoundReadScore$$module$src$modules$score_handling=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundReadScore(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundReadScore$$module$src$modules$score_handling.toString=()=>\\\"readScore = async (score) => Number;\\\";const csoundGetScoreTime$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreTime(b);csoundGetScoreTime$$module$src$modules$score_handling.toString=()=>\\\"getScoreTime = async () => Number;\\\";\\nconst csoundGetScoreOffsetSeconds$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreOffsetSeconds(b);csoundGetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>\\\"getScoreOffsetSeconds = async () => Number;\\\";const csoundSetScoreOffsetSeconds$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScoreOffsetSeconds(b,c);csoundSetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>\\\"setScoreOffsetSeconds = async () => Number;\\\";\\nconst csoundRewindScore$$module$src$modules$score_handling=a=>b=>a.exports.csoundRewindScore(b);csoundRewindScore$$module$src$modules$score_handling.toString=()=>\\\"rewindScore = async () => undefined;\\\";var module$src$modules$score_handling={};module$src$modules$score_handling.csoundGetScoreOffsetSeconds=csoundGetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundGetScoreTime=csoundGetScoreTime$$module$src$modules$score_handling;\\nmodule$src$modules$score_handling.csoundIsScorePending=csoundIsScorePending$$module$src$modules$score_handling;module$src$modules$score_handling.csoundReadScore=csoundReadScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundRewindScore=csoundRewindScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScoreOffsetSeconds=csoundSetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScorePending=csoundSetScorePending$$module$src$modules$score_handling;const csoundTableLength$$module$src$modules$table=a=>(b,c)=>a.exports.csoundTableLength(b,c);csoundTableLength$$module$src$modules$table.toString=()=>\\\"tableLength = async (tableNum) => Number;\\\";const csoundTableGet$$module$src$modules$table=a=>(b,c,d)=>a.exports.csoundTableGet(b,c,d);csoundTableGet$$module$src$modules$table.toString=()=>\\\"tableGet = async (tableNum, tableIndex) => Number;\\\";const csoundTableSet$$module$src$modules$table=a=>(b,c,d,e)=>a.exports.csoundTableSet(b,c,d,e);\\ncsoundTableSet$$module$src$modules$table.toString=()=>\\\"tableSet = async (tableNum, tableIndex, value) => undefined;\\\";const csoundTableCopyIn$$module$src$modules$table=a=>(b,c,d)=>{const e=a.exports.allocFloatArray(d.length);(new Float64Array(a.wasi.memory.buffer,e,d.length)).set(d);a.exports.csoundTableCopyIn(b,c,e);a.exports.freeFloatArrayMem(e)};csoundTableCopyIn$$module$src$modules$table.toString=()=>\\\"tableCopyIn = async (tableNum, float64Array) => undefined;\\\";\\nconst csoundTableCopyOut$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundTableLength(b,c);if(0<d){const e=a.exports.allocFloatArray(d);a.exports.csoundTableCopyOut(b,c,e);({buffer:b}=a.wasi.memory);d=new Float64Array(b,e,d);a.exports.freeFloatArrayMem(e);return Float64Array.from(d)}};csoundTableCopyOut$$module$src$modules$table.toString=()=>\\\"tableCopyOut = async (tableNum) => ?Float64Array;\\\";const csoundGetTable$$module$src$modules$table=csoundTableCopyOut$$module$src$modules$table;\\ncsoundTableCopyOut$$module$src$modules$table.toString=csoundTableCopyOut$$module$src$modules$table.toString;const csoundGetTableArgs$$module$src$modules$table=a=>(b,c)=>{const d=a.exports.allocFloatArray(1024);a.exports.csoundGetTableArgs(b,d,c);({buffer:b}=a.wasi.memory);b=new Float64Array(b,d,1024);a.exports.freeFloatArrayMem(d);return b};csoundGetTableArgs$$module$src$modules$table.toString=()=>\\\"getTableArgs = async (tableNum) => ?Float64Array;\\\";\\nconst csoundIsNamedGEN$$module$src$modules$table=a=>(b,c)=>a.exports.csoundIsNamedGEN(b,c);csoundIsNamedGEN$$module$src$modules$table.toString=()=>\\\"isNamedGEN = async (tableNum) => number;\\\";const csoundGetNamedGEN$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundIsNamedGEN(b,c);if(0<d){const e=a.exports.allocStringMem(d);a.exports.csoundGetNamedGEN(b,e,c,d);({buffer:b}=a.wasi.memory);d=new Uint8Array(b,e,d);return uint2String$$module$src$utils$text_encoders(d)}};\\ncsoundGetNamedGEN$$module$src$modules$table.toString=()=>\\\"getNamedGEN = async (tableNum) => ?string;\\\";var module$src$modules$table={};module$src$modules$table.csoundGetNamedGEN=csoundGetNamedGEN$$module$src$modules$table;module$src$modules$table.csoundGetTable=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundGetTableArgs=csoundGetTableArgs$$module$src$modules$table;module$src$modules$table.csoundIsNamedGEN=csoundIsNamedGEN$$module$src$modules$table;\\nmodule$src$modules$table.csoundTableCopyIn=csoundTableCopyIn$$module$src$modules$table;module$src$modules$table.csoundTableCopyOut=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundTableGet=csoundTableGet$$module$src$modules$table;module$src$modules$table.csoundTableLength=csoundTableLength$$module$src$modules$table;module$src$modules$table.csoundTableSet=csoundTableSet$$module$src$modules$table;function writeFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b=\\\"string\\\"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.writeFile(c,b)}}writeFile$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path, data) => void\\\";function appendFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b=\\\"string\\\"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.appendFile(c,b)}}appendFile$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path, data) => void\\\";\\nfunction readFile$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readFile(c)}readFile$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path) => ?Uint8Array\\\";function unlink$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.unlink(c)}unlink$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path) => void\\\";function readdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readdir(c)}readdir$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path) => string[]\\\";\\nfunction mkdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.mkdir(c)}mkdir$$module$src$filesystem$worker_fs.toString=()=>\\\"async (path) => void\\\";var module$src$filesystem$worker_fs={};module$src$filesystem$worker_fs.appendFile=appendFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.mkdir=mkdir$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readFile=readFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readdir=readdir$$module$src$filesystem$worker_fs;\\nmodule$src$filesystem$worker_fs.unlink=unlink$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.writeFile=writeFile$$module$src$filesystem$worker_fs;const api$$module$src$libcsound={csoundCreate:csoundCreate$$module$src$modules$instantiation,csoundDestroy:csoundDestroy$$module$src$modules$instantiation,csoundGetAPIVersion:csoundGetAPIVersion$$module$src$modules$instantiation,csoundGetVersion:csoundGetVersion$$module$src$modules$instantiation,csoundInitialize:csoundInitialize$$module$src$modules$instantiation,csoundParseOrc:csoundParseOrc$$module$src$modules$performance,csoundCompileTree:csoundCompileTree$$module$src$modules$performance,csoundCompileOrc:csoundCompileOrc$$module$src$modules$performance,\\ncsoundEvalCode:csoundEvalCode$$module$src$modules$performance,csoundStart:csoundStart$$module$src$modules$performance,csoundCompileCsd:csoundCompileCsd$$module$src$modules$performance,csoundCompileCsdText:csoundCompileCsdText$$module$src$modules$performance,csoundPerform:csoundPerform$$module$src$modules$performance,csoundPerformKsmps:csoundPerformKsmps$$module$src$modules$performance,csoundPerformBuffer:csoundPerformBuffer$$module$src$modules$performance,csoundStop:csoundStop$$module$src$modules$performance,\\ncsoundCleanup:csoundCleanup$$module$src$modules$performance,csoundReset:csoundReset$$module$src$modules$performance,csoundGetSr:csoundGetSr$$module$src$modules$attributes,csoundGetKr:csoundGetKr$$module$src$modules$attributes,csoundGetKsmps:csoundGetKsmps$$module$src$modules$attributes,csoundGetNchnls:csoundGetNchnls$$module$src$modules$attributes,csoundGetNchnlsInput:csoundGetNchnlsInput$$module$src$modules$attributes,csoundGet0dBFS:csoundGet0dBFS$$module$src$modules$attributes,csoundGetA4:csoundGetA4$$module$src$modules$attributes,\\ncsoundGetCurrentTimeSamples:csoundGetCurrentTimeSamples$$module$src$modules$attributes,csoundGetSizeOfMYFLT:csoundGetSizeOfMYFLT$$module$src$modules$attributes,csoundSetOption:csoundSetOption$$module$src$modules$attributes,csoundSetParams:csoundSetParams$$module$src$modules$attributes,csoundGetParams:csoundGetParams$$module$src$modules$attributes,csoundGetDebug:csoundGetDebug$$module$src$modules$attributes,csoundSetDebug:csoundSetDebug$$module$src$modules$attributes,csoundGetInputBufferSize:csoundGetInputBufferSize$$module$src$modules$rtaudio,\\ncsoundGetOutputBufferSize:csoundGetOutputBufferSize$$module$src$modules$rtaudio,csoundGetInputBuffer:csoundGetInputBuffer$$module$src$modules$rtaudio,csoundGetOutputBuffer:csoundGetOutputBuffer$$module$src$modules$rtaudio,csoundGetSpin:csoundGetSpin$$module$src$modules$rtaudio,csoundGetSpout:csoundGetSpout$$module$src$modules$rtaudio,csoundGetMIDIDevList:csoundGetMIDIDevList$$module$src$modules$rtmidi,csoundSetMidiCallbacks:csoundSetMidiCallbacks$$module$src$modules$rtmidi,csoundGetRtMidiName:csoundGetRtMidiName$$module$src$modules$rtmidi,\\ncsoundGetMidiOutFileName:csoundGetMidiOutFileName$$module$src$modules$rtmidi,csoundPushMidiMessage:csoundPushMidiMessage$$module$src$modules$rtmidi,_isRequestingRtMidiInput:_isRequestingRtMidiInput$$module$src$modules$rtmidi,csoundInputMessage:csoundInputMessage$$module$src$modules$control_events,csoundInputMessageAsync:csoundInputMessageAsync$$module$src$modules$control_events,csoundGetControlChannel:csoundGetControlChannel$$module$src$modules$control_events,csoundSetControlChannel:csoundSetControlChannel$$module$src$modules$control_events,\\ncsoundGetStringChannel:csoundGetStringChannel$$module$src$modules$control_events,csoundSetStringChannel:csoundSetStringChannel$$module$src$modules$control_events,csoundGetInputName:csoundGetInputName$$module$src$modules$general_io,csoundGetOutputName:csoundGetOutputName$$module$src$modules$general_io,csoundAppendEnv:csoundAppendEnv$$module$src$modules$extra,csoundShouldDaemonize:csoundShouldDaemonize$$module$src$modules$extra,csoundIsScorePending:csoundIsScorePending$$module$src$modules$score_handling,\\ncsoundSetScorePending:csoundSetScorePending$$module$src$modules$score_handling,csoundReadScore:csoundReadScore$$module$src$modules$score_handling,csoundGetScoreTime:csoundGetScoreTime$$module$src$modules$score_handling,csoundGetScoreOffsetSeconds:csoundGetScoreOffsetSeconds$$module$src$modules$score_handling,csoundSetScoreOffsetSeconds:csoundSetScoreOffsetSeconds$$module$src$modules$score_handling,csoundRewindScore:csoundRewindScore$$module$src$modules$score_handling,csoundTableLength:csoundTableLength$$module$src$modules$table,\\ncsoundTableGet:csoundTableGet$$module$src$modules$table,csoundTableSet:csoundTableSet$$module$src$modules$table,csoundTableCopyIn:csoundTableCopyIn$$module$src$modules$table,csoundTableCopyOut:csoundTableCopyOut$$module$src$modules$table,csoundGetTable:csoundTableCopyOut$$module$src$modules$table,csoundGetTableArgs:csoundGetTableArgs$$module$src$modules$table,csoundIsNamedGEN:csoundIsNamedGEN$$module$src$modules$table,csoundGetNamedGEN:csoundGetNamedGEN$$module$src$modules$table,fs:module$src$filesystem$worker_fs};\\nvar $jscompDefaultExport$$module$src$libcsound=function(a){return mergeAll$$module$node_modules$rambda$dist$rambda_mjs([reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,api$$module$src$libcsound[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(dissoc$$module$node_modules$rambda$dist$rambda_mjs(\\\"fs\\\")(api$$module$src$libcsound))),reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,\\napi$$module$src$libcsound.fs[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(module$src$filesystem$worker_fs))])},module$src$libcsound={};module$src$libcsound.api=api$$module$src$libcsound;module$src$libcsound.default=$jscompDefaultExport$$module$src$libcsound;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0),f=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0),g=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0);const h=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0);let k=c.length;\\\"function\\\"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);\\\"function\\\"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k,\\nb.exports.csoundModuleInit),k+=1);\\\"function\\\"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);\\\"function\\\"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0),f=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0),g=c.length,\\n\\\"function\\\"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),\\\"function\\\"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error(\\\"Plugin doesn't export nececcary functions to quality as csound plugin.\\\")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt);\\nconst WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants=\\n10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants=\\n20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants=\\n31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41,\\nWASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants=\\n52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants=\\n62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants=\\n73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants=\\n7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants=\\n18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants=\\n3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants=\\n16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants=\\ngoog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants=\\ngoog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants=\\ngoog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants=\\ngoog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|\\nWASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|\\nWASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|\\nWASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|\\nWASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants=\\nWASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\\nWASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|\\nWASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|\\nWASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|\\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,\\nRIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants=\\n1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants=\\n0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants;\\nmodule$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name=\\\"CustomError\\\";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name=\\\"AssertionError\\\";\\ngoog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split(\\\"%s\\\");let c=\\\"\\\";const d=a.length-1;for(let e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:\\\"%s\\\");return c+a[d]}\\nfunction module$contents$goog$asserts_doAssertFailure(a,b,c,d){let e=\\\"Assertion failed\\\",f;c?(e+=\\\": \\\"+c,f=d):a&&(e+=\\\": \\\"+a,f=b);a=new module$contents$goog$asserts_AssertionError(\\\"\\\"+e,f||[]);module$contents$goog$asserts_errorHandler_(a)}goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(module$contents$goog$asserts_errorHandler_=a)};\\ngoog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&module$contents$goog$asserts_doAssertFailure(\\\"\\\",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected to exist: %s.\\\",[a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&module$contents$goog$asserts_errorHandler_(new module$contents$goog$asserts_AssertionError(\\\"Failure\\\"+(a?\\\": \\\"+a:\\\"\\\"),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&\\\"number\\\"!==typeof a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected number but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&\\\"string\\\"!==typeof a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected string but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&\\\"function\\\"!==typeof a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected function but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&module$contents$goog$asserts_doAssertFailure(\\\"Expected object but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!Array.isArray(a)&&module$contents$goog$asserts_doAssertFailure(\\\"Expected array but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&\\\"boolean\\\"!==typeof a&&module$contents$goog$asserts_doAssertFailure(\\\"Expected boolean but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||module$contents$goog$asserts_doAssertFailure(\\\"Expected Element but got %s: %s.\\\",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\\ngoog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||module$contents$goog$asserts_doAssertFailure(\\\"Expected instanceof %s but got %s.\\\",[module$contents$goog$asserts_getType(b),module$contents$goog$asserts_getType(a)],c,Array.prototype.slice.call(arguments,3));return a};\\ngoog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||\\\"number\\\"==typeof a&&isFinite(a)||module$contents$goog$asserts_doAssertFailure(\\\"Expected %s to be a finite number but it is not.\\\",[a],b,Array.prototype.slice.call(arguments,2));return a};\\nfunction module$contents$goog$asserts_getType(a){return a instanceof Function?a.displayName||a.name||\\\"unknown type name\\\":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?\\\"null\\\":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;const module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.ASSUME_NATIVE_FUNCTIONS=module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS;function module$contents$goog$array_peek(a){return a[a.length-1]}goog.array.peek=module$contents$goog$array_peek;goog.array.last=module$contents$goog$array_peek;\\nconst module$contents$goog$array_indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(\\\"string\\\"===typeof a)return\\\"string\\\"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};goog.array.indexOf=module$contents$goog$array_indexOf;\\nconst module$contents$goog$array_lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(\\\"string\\\"===typeof a)return\\\"string\\\"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};\\ngoog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEach=module$contents$goog$array_forEach;\\nfunction module$contents$goog$array_forEachRight(a,b,c){var d=a.length;const e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)}goog.array.forEachRight=module$contents$goog$array_forEachRight;\\nconst module$contents$goog$array_filter=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){const d=a.length,e=[];let f=0;const g=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let h=0;h<d;h++)if(h in g){const k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};goog.array.filter=module$contents$goog$array_filter;\\nconst module$contents$goog$array_map=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){const d=a.length,e=Array(d),f=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};goog.array.map=module$contents$goog$array_map;\\nconst module$contents$goog$array_reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEach(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduce=module$contents$goog$array_reduce;\\nconst module$contents$goog$array_reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEachRight(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduceRight=module$contents$goog$array_reduceRight;\\nconst module$contents$goog$array_some=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){const d=a.length,e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};goog.array.some=module$contents$goog$array_some;\\nconst module$contents$goog$array_every=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){const d=a.length,e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.every=module$contents$goog$array_every;\\nfunction module$contents$goog$array_count(a,b,c){let d=0;module$contents$goog$array_forEach(a,function(e,f,g){b.call(c,e,f,g)&&++d},c);return d}goog.array.count=module$contents$goog$array_count;function module$contents$goog$array_find(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0>b?null:\\\"string\\\"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find;\\nfunction module$contents$goog$array_findIndex(a,b,c){const d=a.length,e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1}goog.array.findIndex=module$contents$goog$array_findIndex;function module$contents$goog$array_findRight(a,b,c){b=module$contents$goog$array_findIndexRight(a,b,c);return 0>b?null:\\\"string\\\"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight;\\nfunction module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e=\\\"string\\\"===typeof a?a.split(\\\"\\\"):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty;\\nfunction module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt;\\nfunction module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore;\\nfunction module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast;\\nfunction module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf;\\nfunction module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)}\\ngoog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0<b){const c=Array(b);for(let d=0;d<b;d++)c[d]=a[d];return c}return[]}const module$contents$goog$array_clone=goog.array.toArray=module$contents$goog$array_toArray;goog.array.clone=module$contents$goog$array_toArray;\\nfunction module$contents$goog$array_extend(a,b){for(let c=1;c<arguments.length;c++){const d=arguments[c];if(goog.isArrayLike(d)){const e=a.length||0,f=d.length||0;a.length=e+f;for(let g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}}goog.array.extend=module$contents$goog$array_extend;function module$contents$goog$array_splice(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,module$contents$goog$array_slice(arguments,1))}goog.array.splice=module$contents$goog$array_splice;\\nfunction module$contents$goog$array_slice(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice;\\nfunction module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?\\\"o\\\"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e<a.length;){const g=a[e++],h=c(g);Object.prototype.hasOwnProperty.call(f,h)||(f[h]=!0,b[d++]=g)}b.length=d}goog.array.removeDuplicates=module$contents$goog$array_removeDuplicates;\\nfunction module$contents$goog$array_binarySearch(a,b,c){return module$contents$goog$array_binarySearch_(a,c||module$contents$goog$array_defaultCompare,!1,b)}goog.array.binarySearch=module$contents$goog$array_binarySearch;function module$contents$goog$array_binarySelect(a,b,c){return module$contents$goog$array_binarySearch_(a,b,!0,void 0,c)}goog.array.binarySelect=module$contents$goog$array_binarySelect;\\nfunction module$contents$goog$array_binarySearch_(a,b,c,d,e){let f=0,g=a.length,h;for(;f<g;){const k=f+(g-f>>>1);let l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:-f-1}function module$contents$goog$array_sort(a,b){a.sort(b||module$contents$goog$array_defaultCompare)}goog.array.sort=module$contents$goog$array_sort;\\nfunction module$contents$goog$array_stableSort(a,b){const c=Array(a.length);for(let e=0;e<a.length;e++)c[e]={index:e,value:a[e]};const d=b||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(c,function(e,f){return d(e.value,f.value)||e.index-f.index});for(b=0;b<a.length;b++)a[b]=c[b].value}goog.array.stableSort=module$contents$goog$array_stableSort;\\nfunction module$contents$goog$array_sortByKey(a,b,c){const d=c||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(a,function(e,f){return d(b(e),b(f))})}goog.array.sortByKey=module$contents$goog$array_sortByKey;function module$contents$goog$array_sortObjectsByKey(a,b,c){module$contents$goog$array_sortByKey(a,function(d){return d[b]},c)}goog.array.sortObjectsByKey=module$contents$goog$array_sortObjectsByKey;\\nfunction module$contents$goog$array_isSorted(a,b,c){b=b||module$contents$goog$array_defaultCompare;for(let d=1;d<a.length;d++){const e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0}goog.array.isSorted=module$contents$goog$array_isSorted;function module$contents$goog$array_equals(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;const d=a.length;c=c||module$contents$goog$array_defaultCompareEquality;for(let e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0}\\ngoog.array.equals=module$contents$goog$array_equals;function module$contents$goog$array_compare3(a,b,c){c=c||module$contents$goog$array_defaultCompare;const d=Math.min(a.length,b.length);for(let e=0;e<d;e++){const f=c(a[e],b[e]);if(0!=f)return f}return module$contents$goog$array_defaultCompare(a.length,b.length)}goog.array.compare3=module$contents$goog$array_compare3;function module$contents$goog$array_defaultCompare(a,b){return a>b?1:a<b?-1:0}goog.array.defaultCompare=module$contents$goog$array_defaultCompare;\\nfunction module$contents$goog$array_inverseDefaultCompare(a,b){return-module$contents$goog$array_defaultCompare(a,b)}goog.array.inverseDefaultCompare=module$contents$goog$array_inverseDefaultCompare;function module$contents$goog$array_defaultCompareEquality(a,b){return a===b}goog.array.defaultCompareEquality=module$contents$goog$array_defaultCompareEquality;\\nfunction module$contents$goog$array_binaryInsert(a,b,c){c=module$contents$goog$array_binarySearch(a,b,c);return 0>c?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove;\\nfunction module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;e<a.length;e++){const f=a[e],g=b.call(c,f,e,a);void 0!==g&&(d[g]||(d[g]=[])).push(f)}return d}goog.array.bucket=module$contents$goog$array_bucket;function module$contents$goog$array_bucketToMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d],f=b(e,d,a);if(void 0!==f){let g=c.get(f);g||(g=[],c.set(f,g));g.push(e)}}return c}goog.array.bucketToMap=module$contents$goog$array_bucketToMap;\\nfunction module$contents$goog$array_toObject(a,b,c){const d={};module$contents$goog$array_forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d}goog.array.toObject=module$contents$goog$array_toObject;function module$contents$goog$array_toMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d];c.set(b(e,d,a),e)}return c}goog.array.toMap=module$contents$goog$array_toMap;\\nfunction module$contents$goog$array_range(a,b,c){const d=[];let e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;d<b;d++)c[d]=a;return c}goog.array.repeat=module$contents$goog$array_repeat;\\nfunction module$contents$goog$array_flatten(a){const b=[];for(let d=0;d<arguments.length;d++){const e=arguments[d];if(Array.isArray(e))for(let f=0;f<e.length;f+=8192){var c=module$contents$goog$array_slice(e,f,f+8192);c=module$contents$goog$array_flatten.apply(null,c);for(let g=0;g<c.length;g++)b.push(c[g])}else b.push(e)}return b}goog.array.flatten=module$contents$goog$array_flatten;\\nfunction module$contents$goog$array_rotate(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])}goog.array.moveItem=module$contents$goog$array_moveItem;\\nfunction module$contents$goog$array_zip(a){if(!arguments.length)return[];const b=[];let c=arguments[0].length;for(var d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){const e=[];for(let f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b}goog.array.zip=module$contents$goog$array_zip;function module$contents$goog$array_shuffle(a,b){b=b||Math.random;for(let c=a.length-1;0<c;c--){const d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}}\\ngoog.array.shuffle=module$contents$goog$array_shuffle;function module$contents$goog$array_copyByIndex(a,b){const c=[];module$contents$goog$array_forEach(b,function(d){c.push(a[d])});return c}goog.array.copyByIndex=module$contents$goog$array_copyByIndex;function module$contents$goog$array_concatMap(a,b,c){return module$contents$goog$array_concat.apply([],module$contents$goog$array_map(a,b,c))}goog.array.concatMap=module$contents$goog$array_concatMap;goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail(\\\"Argument is not a Location (or a non-Element mock); got: %s\\\",goog.dom.asserts.debugStringForType_(a))}return a};\\ngoog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&\\\"undefined\\\"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail(\\\"Argument is not a %s (or a non-Element, non-Location mock); got: %s\\\",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLAnchorElement\\\")};\\ngoog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLButtonElement\\\")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLLinkElement\\\")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLImageElement\\\")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLAudioElement\\\")};\\ngoog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLVideoElement\\\")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLInputElement\\\")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLTextAreaElement\\\")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLCanvasElement\\\")};\\ngoog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLEmbedElement\\\")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLFormElement\\\")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLFrameElement\\\")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLIFrameElement\\\")};\\ngoog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLObjectElement\\\")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,\\\"HTMLScriptElement\\\")};\\ngoog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return\\\"<object could not be stringified>\\\"}else return void 0===a?\\\"undefined\\\":null===a?\\\"null\\\":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};\\ngoog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}};\\ngoog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}};\\ngoog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e<c;e++)d=b[e].apply(this,arguments);return d}};goog.functions.and=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(!b[d].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(b[d].apply(this,arguments))return!0;return!1}};\\ngoog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){let b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){let b=a;return function(){if(b){const c=b;b=null;c()}}};\\ngoog.functions.debounce=function(a,b,c){let d=0;return function(e){goog.global.clearTimeout(d);const f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){let d=0,e=!1,f=[];const g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);let k=f;f=[];a.apply(c,k)};return function(k){f=arguments;d?e=!0:h()}};\\ngoog.functions.rateLimit=function(a,b,c){let d=0;const e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.functions.isFunction=a=>\\\"function\\\"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||\\\"\\\";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};\\ngoog.DEBUG&&(goog.string.Const.prototype.toString=function(){return\\\"Const{\\\"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+\\\"}\\\"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail(\\\"expected object of type Const, got '\\\"+a+\\\"'\\\");return\\\"type_error:Const\\\"};\\ngoog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from(\\\"\\\");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+\\\"#html\\\":\\\"\\\";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={};\\nclass module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:\\\"\\\";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof\\nmodule$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)(\\\"expected object of type SafeScript, got '\\\"+a+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:SafeScript\\\"}static stringify_(a){return JSON.stringify(a).replace(/</g,\\\"\\\\\\\\x3c\\\")}static createSafeScriptSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScript(a):\\na;return new module$contents$goog$html$SafeScript_SafeScript(a,module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE)}}module$contents$goog$html$SafeScript_SafeScript.EMPTY=function(){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(\\\"\\\")}();goog.html.SafeScript=module$contents$goog$html$SafeScript_SafeScript;goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.UrlObject_=function(){};goog.fs.url.UrlObject_.prototype.createObjectURL=function(a){};goog.fs.url.UrlObject_.prototype.revokeObjectURL=function(a){};\\ngoog.fs.url.getUrlObject_=function(){const a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error(\\\"This browser doesn't seem to support blob URLs\\\");};goog.fs.url.findUrlObject_=function(){return void 0!==goog.global.URL&&void 0!==goog.global.URL.createObjectURL?goog.global.URL:void 0!==goog.global.createObjectURL?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.fs.blob={};goog.fs.blob.getBlob=function(a){var b=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==b){b=new b;for(let c=0;c<arguments.length;c++)b.append(arguments[c]);return b.getBlob()}return goog.fs.blob.getBlobWithProperties(Array.prototype.slice.call(arguments))};\\ngoog.fs.blob.getBlobWithProperties=function(a,b,c){var d=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==d){d=new d;for(let e=0;e<a.length;e++)d.append(a[e],c);return d.getBlob(b)}if(void 0!==goog.global.Blob)return d={},b&&(d.type=b),c&&(d.endings=c),new Blob(a,d);throw Error(\\\"This browser doesn't seem to support creating Blobs\\\");};goog.html.TrustedResourceUrl=class{constructor(a,b){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=b===goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:\\\"\\\"}toString(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+\\\"\\\"}};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};\\ngoog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||\\\"\\\";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_(\\\"?\\\",c[2]||\\\"\\\",a)+goog.html.TrustedResourceUrl.stringifyParams_(\\\"#\\\",d,b))};goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};\\ngoog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail(\\\"expected object of type TrustedResourceUrl, got '\\\"+a+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:TrustedResourceUrl\\\"};\\ngoog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error(\\\"Invalid TrustedResourceUrl format: \\\"+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(d,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error('Found marker, \\\"'+e+'\\\", in format string, \\\"'+c+'\\\", but no valid label mapping found in args: '+JSON.stringify(b));d=b[e];return d instanceof goog.string.Const?goog.string.Const.unwrap(d):\\nencodeURIComponent(String(d))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\\\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=RegExp(\\\"^((https:)?//[0-9a-z.:[\\\\\\\\]-]+/|/[^/\\\\\\\\\\\\\\\\]|[^:/\\\\\\\\\\\\\\\\%]+/|[^:/\\\\\\\\\\\\\\\\%]*[?#]|about:blank#)\\\",\\\"i\\\");goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\\\?[^#]*)?(#[\\\\s\\\\S]*)?/;\\ngoog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b=\\\"\\\",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.TrustedResourceUrl.fromSafeScript=function(a){a=goog.fs.blob.getBlobWithProperties([module$contents$goog$html$SafeScript_SafeScript.unwrap(a)],\\\"text/javascript\\\");a=goog.fs.url.createObjectUrl(a);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};\\ngoog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScriptURL(a):a;return new goog.html.TrustedResourceUrl(a,goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};\\ngoog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if(\\\"string\\\"===typeof c)return c?a+encodeURIComponent(c):\\\"\\\";for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var e=c[d];e=Array.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?\\\"&\\\":\\\"\\\")+encodeURIComponent(d)+\\\"=\\\"+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))};\\ngoog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\\\\s\\\\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\\\\s\\\\xa0]*([\\\\s\\\\S]*?)[\\\\s\\\\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};\\ngoog.string.internal.newLineToBr=function(a,b){return a.replace(/(\\\\r\\\\n|\\\\r|\\\\n)/g,b?\\\"<br />\\\":\\\"<br>\\\")};\\ngoog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,\\\"&amp;\\\").replace(goog.string.internal.LT_RE_,\\\"&lt;\\\").replace(goog.string.internal.GT_RE_,\\\"&gt;\\\").replace(goog.string.internal.QUOT_RE_,\\\"&quot;\\\").replace(goog.string.internal.SINGLE_QUOTE_RE_,\\\"&#39;\\\").replace(goog.string.internal.NULL_RE_,\\\"&#0;\\\");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf(\\\"&\\\")&&(a=a.replace(goog.string.internal.AMP_RE_,\\\"&amp;\\\"));-1!=a.indexOf(\\\"<\\\")&&(a=a.replace(goog.string.internal.LT_RE_,\\n\\\"&lt;\\\"));-1!=a.indexOf(\\\">\\\")&&(a=a.replace(goog.string.internal.GT_RE_,\\\"&gt;\\\"));-1!=a.indexOf('\\\"')&&(a=a.replace(goog.string.internal.QUOT_RE_,\\\"&quot;\\\"));-1!=a.indexOf(\\\"'\\\")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,\\\"&#39;\\\"));-1!=a.indexOf(\\\"\\\\x00\\\")&&(a=a.replace(goog.string.internal.NULL_RE_,\\\"&#0;\\\"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/\\\"/g;goog.string.internal.SINGLE_QUOTE_RE_=/'/g;\\ngoog.string.internal.NULL_RE_=/\\\\x00/g;goog.string.internal.ALL_RE_=/[\\\\x00&<>\\\"']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g,\\\" &#160;\\\"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};\\ngoog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(\\\".\\\");b=goog.string.internal.trim(String(b)).split(\\\".\\\");const d=Math.max(a.length,b.length);for(let g=0;0==c&&g<d;g++){var e=a[g]||\\\"\\\",f=b[g]||\\\"\\\";do{e=/(\\\\d*)(\\\\D*)(.*)/.exec(e)||[\\\"\\\",\\\"\\\",\\\"\\\",\\\"\\\"];f=/(\\\\d*)(\\\\D*)(.*)/.exec(f)||[\\\"\\\",\\\"\\\",\\\"\\\",\\\"\\\"];if(0==e[0].length&&0==f[0].length)break;c=0==e[1].length?0:parseInt(e[1],10);const h=0==f[1].length?0:parseInt(f[1],10);c=goog.string.internal.compareElements_(c,h)||\\ngoog.string.internal.compareElements_(0==e[2].length,0==f[2].length)||goog.string.internal.compareElements_(e[2],f[2]);e=e[3];f=f[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:\\\"\\\"}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING=\\\"about:invalid#zClosurez\\\";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};\\ngoog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail(\\\"expected object of type SafeUrl, got '\\\"+a+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:SafeUrl\\\"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};\\ngoog.html.SAFE_MIME_TYPE_PATTERN_=RegExp('^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\\\\\\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\\\\\\\w+=(?:\\\\\\\\w+|\\\"[\\\\\\\\w;,= ]+\\\"))*$',\\\"i\\\");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};\\ngoog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)};\\ngoog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert(\\\"MediaSource\\\"in goog.global,\\\"No support for MediaSource\\\");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\\\\/]+=*$/i;\\ngoog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,\\\"\\\");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"tel:\\\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SIP_URL_PATTERN_=RegExp(\\\"^sip[s]?:[+a-z0-9_.!$%&'*\\\\\\\\/=^`{|}~-]+@([a-z0-9-]+\\\\\\\\.)+[a-z0-9]{2,63}$\\\",\\\"i\\\");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"fb-messenger://share\\\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"whatsapp://send\\\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"sms:\\\")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf(\\\"#\\\");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\\\\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,\\\"ssh://\\\")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\\\/\\\\/([^\\\\/]+)\\\\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\\\/\\\\/([^\\\\/]+)\\\\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\\\/\\\\/([^\\\\/]+)\\\\//,a,b)};\\ngoog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(d){return goog.string.Const.unwrap(d)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};\\ngoog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.trySanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a=\\\"object\\\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SAFE_URL_PATTERN_.test(a)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):goog.html.SafeUrl.tryFromDataUrl(a)};\\ngoog.html.SafeUrl.sanitize=function(a){return goog.html.SafeUrl.trySanitize(a)||goog.html.SafeUrl.INNOCUOUS_URL};\\ngoog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a=\\\"object\\\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),\\\"%s does not match the safe URL pattern\\\",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\\ngoog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){return new goog.html.SafeUrl(a,goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};goog.html.SafeUrl.INNOCUOUS_URL=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.SafeUrl.INNOCUOUS_STRING);goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\\\"about:blank\\\");const module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE={};\\nclass module$contents$goog$html$SafeStyle_SafeStyle{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=b===module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE?a:\\\"\\\";this.implementsGoogStringTypedString=!0}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;(0,goog.asserts.assert)((0,goog.string.internal.endsWith)(a,\\\";\\\"),`Last character of style string is not ';': ${a}`);(0,goog.asserts.assert)((0,goog.string.internal.contains)(a,\\n\\\":\\\"),\\\"Style string must contain at least one ':', to specify a \\\\\\\"name: value\\\\\\\" pair: \\\"+a);return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_}toString(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString()}static unwrap(a){if(a instanceof module$contents$goog$html$SafeStyle_SafeStyle&&a.constructor===module$contents$goog$html$SafeStyle_SafeStyle)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;\\n(0,goog.asserts.fail)(`expected object of type SafeStyle, got '${a}`+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:SafeStyle\\\"}static createSafeStyleSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyle_SafeStyle(a,module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE)}static create(a){let b=\\\"\\\";for(let c in a)if(Object.prototype.hasOwnProperty.call(a,c)){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(`Name allows only [-_a-zA-Z0-9], got: ${c}`);let d=a[c];null!=d&&\\n(d=Array.isArray(d)?d.map(module$contents$goog$html$SafeStyle_sanitizePropertyValue).join(\\\" \\\"):module$contents$goog$html$SafeStyle_sanitizePropertyValue(d),b+=`${c}:${d};`)}return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}static concat(a){let b=\\\"\\\";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c);\\nreturn b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(\\\"\\\");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING=\\\"zClosurez\\\";\\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return'url(\\\"'+goog.html.SafeUrl.unwrap(a).replace(/</g,\\\"%3c\\\").replace(/[\\\\\\\\\\\"]/g,\\\"\\\\\\\\$&\\\")+'\\\")';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):module$contents$goog$html$SafeStyle_sanitizePropertyValueString(String(a));if(/[{;}]/.test(a))throw new module$contents$goog$asserts_AssertionError(\\\"Value does not allow [{;}], got: %s.\\\",[a]);return a}\\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValueString(a){const b=a.replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,\\\"$1\\\").replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,\\\"$1\\\").replace(module$contents$goog$html$SafeStyle_URL_RE,\\\"url\\\");if(module$contents$goog$html$SafeStyle_VALUE_RE.test(b)){if(module$contents$goog$html$SafeStyle_COMMENT_RE.test(a))return(0,goog.asserts.fail)(`String value disallows comments, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;\\nif(!module$contents$goog$html$SafeStyle_hasBalancedQuotes(a))return(0,goog.asserts.fail)(`String value requires balanced quotes, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;if(!module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a))return(0,goog.asserts.fail)(\\\"String value requires balanced square brackets and one identifier per pair of brackets, got: \\\"+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING}else return(0,goog.asserts.fail)(`String value allows only ${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}`+\\n\\\" and simple functions, got: \\\"+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;return module$contents$goog$html$SafeStyle_sanitizeUrl(a)}function module$contents$goog$html$SafeStyle_hasBalancedQuotes(a){let b=!0,c=!0;for(let d=0;d<a.length;d++){const e=a.charAt(d);\\\"'\\\"==e&&c?b=!b:'\\\"'==e&&b&&(c=!c)}return b&&c}\\nfunction module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a){let b=!0;const c=/^[-_a-zA-Z0-9]$/;for(let d=0;d<a.length;d++){const e=a.charAt(d);if(\\\"]\\\"==e){if(b)return!1;b=!0}else if(\\\"[\\\"==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b}\\nconst module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS=\\\"[-,.\\\\\\\"'%_!#/ a-zA-Z0-9\\\\\\\\[\\\\\\\\]]\\\",module$contents$goog$html$SafeStyle_VALUE_RE=new RegExp(`^${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}+\\\\$`),module$contents$goog$html$SafeStyle_URL_RE=RegExp(\\\"\\\\\\\\b(url\\\\\\\\([ \\\\t\\\\n]*)('[ -&(-\\\\\\\\[\\\\\\\\]-~]*'|\\\\\\\"[ !#-\\\\\\\\[\\\\\\\\]-~]*\\\\\\\"|[!#-&*-\\\\\\\\[\\\\\\\\]-~]*)([ \\\\t\\\\n]*\\\\\\\\))\\\",\\\"g\\\"),module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS=\\\"calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax radial-gradient repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)? steps var\\\".split(\\\" \\\"),\\nmodule$contents$goog$html$SafeStyle_FUNCTIONS_RE=new RegExp(\\\"\\\\\\\\b(\\\"+module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS.join(\\\"|\\\")+\\\")\\\\\\\\([-+*/0-9a-zA-Z.%#\\\\\\\\[\\\\\\\\], ]+\\\\\\\\)\\\",\\\"g\\\"),module$contents$goog$html$SafeStyle_COMMENT_RE=/\\\\/\\\\*/;function module$contents$goog$html$SafeStyle_sanitizeUrl(a){return a.replace(module$contents$goog$html$SafeStyle_URL_RE,(b,c,d,e)=>{let f=\\\"\\\";d=d.replace(/^(['\\\"])(.*)\\\\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})}\\ngoog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1}\\nfunction module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)}\\nfunction module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a}function module$contents$goog$object_containsKey(a,b){return null!==a&&b in a}\\nfunction module$contents$goog$object_containsValue(a,b){for(const c in a)if(a[c]==b)return!0;return!1}function module$contents$goog$object_findKey(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return d}function module$contents$goog$object_findValue(a,b,c){return(b=module$contents$goog$object_findKey(a,b,c))&&a[b]}function module$contents$goog$object_isEmpty(a){for(const b in a)return!1;return!0}function module$contents$goog$object_clear(a){for(const b in a)delete a[b]}\\nfunction module$contents$goog$object_remove(a,b){let c;(c=b in a)&&delete a[b];return c}function module$contents$goog$object_add(a,b,c){if(null!==a&&b in a)throw Error(`The object already contains the key \\\"${b}\\\"`);module$contents$goog$object_set(a,b,c)}function module$contents$goog$object_get(a,b,c){return null!==a&&b in a?a[b]:c}function module$contents$goog$object_set(a,b,c){a[b]=c}function module$contents$goog$object_setIfUndefined(a,b,c){return b in a?a[b]:a[b]=c}\\nfunction module$contents$goog$object_setWithReturnValueIfNotSet(a,b,c){if(b in a)return a[b];c=c();return a[b]=c}function module$contents$goog$object_equals(a,b){for(const c in a)if(!(c in b)||a[c]!==b[c])return!1;for(const c in b)if(!(c in a))return!1;return!0}function module$contents$goog$object_clone(a){const b={};for(const c in a)b[c]=a[c];return b}\\nfunction module$contents$goog$object_unsafeClone(a){if(!a||\\\"object\\\"!==typeof a)return a;if(\\\"function\\\"===typeof a.clone)return a.clone();if(\\\"undefined\\\"!==typeof Map&&a instanceof Map)return new Map(a);if(\\\"undefined\\\"!==typeof Set&&a instanceof Set)return new Set(a);if(a instanceof Date)return new Date(a.getTime());const b=Array.isArray(a)?[]:\\\"function\\\"!==typeof ArrayBuffer||\\\"function\\\"!==typeof ArrayBuffer.isView||!ArrayBuffer.isView(a)||a instanceof DataView?{}:new a.constructor(a.length);for(const c in a)b[c]=\\nmodule$contents$goog$object_unsafeClone(a[c]);return b}function module$contents$goog$object_transpose(a){const b={};for(const c in a)b[a[c]]=c;return b}const module$contents$goog$object_PROTOTYPE_FIELDS=\\\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\\\".split(\\\" \\\");\\nfunction module$contents$goog$object_extend(a,b){let c,d;for(let e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(let f=0;f<module$contents$goog$object_PROTOTYPE_FIELDS.length;f++)c=module$contents$goog$object_PROTOTYPE_FIELDS[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}}\\nfunction module$contents$goog$object_create(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_create.apply(null,arguments[0]);if(b%2)throw Error(\\\"Uneven number of arguments\\\");const c={};for(let d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c}\\nfunction module$contents$goog$object_createSet(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_createSet.apply(null,arguments[0]);const c={};for(let d=0;d<b;d++)c[arguments[d]]=!0;return c}function module$contents$goog$object_createImmutableView(a){let b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b}function module$contents$goog$object_isImmutableView(a){return!!Object.isFrozen&&Object.isFrozen(a)}\\nfunction module$contents$goog$object_getAllPropertyNames(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return module$contents$goog$object_getKeys(a);const d={};for(;a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){const e=Object.getOwnPropertyNames(a);for(let f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return module$contents$goog$object_getKeys(d)}\\nfunction module$contents$goog$object_getSuperClass(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor}goog.object.add=module$contents$goog$object_add;goog.object.clear=module$contents$goog$object_clear;goog.object.clone=module$contents$goog$object_clone;goog.object.contains=module$contents$goog$object_contains;goog.object.containsKey=module$contents$goog$object_containsKey;goog.object.containsValue=module$contents$goog$object_containsValue;goog.object.create=module$contents$goog$object_create;\\ngoog.object.createImmutableView=module$contents$goog$object_createImmutableView;goog.object.createSet=module$contents$goog$object_createSet;goog.object.equals=module$contents$goog$object_equals;goog.object.every=module$contents$goog$object_every;goog.object.extend=module$contents$goog$object_extend;goog.object.filter=module$contents$goog$object_filter;goog.object.findKey=module$contents$goog$object_findKey;goog.object.findValue=module$contents$goog$object_findValue;goog.object.forEach=module$contents$goog$object_forEach;\\ngoog.object.get=module$contents$goog$object_get;goog.object.getAllPropertyNames=module$contents$goog$object_getAllPropertyNames;goog.object.getAnyKey=module$contents$goog$object_getAnyKey;goog.object.getAnyValue=module$contents$goog$object_getAnyValue;goog.object.getCount=module$contents$goog$object_getCount;goog.object.getKeys=module$contents$goog$object_getKeys;goog.object.getSuperClass=module$contents$goog$object_getSuperClass;goog.object.getValueByKeys=module$contents$goog$object_getValueByKeys;\\ngoog.object.getValues=module$contents$goog$object_getValues;goog.object.isEmpty=module$contents$goog$object_isEmpty;goog.object.isImmutableView=module$contents$goog$object_isImmutableView;goog.object.map=module$contents$goog$object_map;goog.object.remove=module$contents$goog$object_remove;goog.object.set=module$contents$goog$object_set;goog.object.setIfUndefined=module$contents$goog$object_setIfUndefined;goog.object.setWithReturnValueIfNotSet=module$contents$goog$object_setWithReturnValueIfNotSet;\\ngoog.object.some=module$contents$goog$object_some;goog.object.transpose=module$contents$goog$object_transpose;goog.object.unsafeClone=module$contents$goog$object_unsafeClone;const module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE={};\\nclass module$contents$goog$html$SafeStyleSheet_SafeStyleSheet{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=b===module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE?a:\\\"\\\";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString()}static createRule(a,b){if((0,goog.string.internal.contains)(a,\\\"<\\\"))throw Error(`Selector does not allow '<', got: ${a}`);const c=a.replace(/('|\\\")((?!\\\\1)[^\\\\r\\\\n\\\\f\\\\\\\\]|\\\\\\\\[\\\\s\\\\S])*\\\\1/g,\\n\\\"\\\");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|]+$/.test(c))throw Error(\\\"Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\\\\\]()=^$|] and strings, got: \\\"+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error(\\\"() and [] in selector must be balanced, got: \\\"+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/</g,\\\"\\\\\\\\3C \\\")+\\\"}\\\";\\nreturn module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}static hasBalancedBrackets_(a){const b={\\\"(\\\":\\\")\\\",\\\"[\\\":\\\"]\\\"},c=[];for(let d=0;d<a.length;d++){const e=a[d];if(b[e])c.push(b[e]);else if(module$contents$goog$object_contains(b,e)&&c.pop()!=e)return!1}return 0==c.length}static concat(a){let b=\\\"\\\";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments,\\nc);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,\\\"<\\\"),`Forbidden '<' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof\\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)(\\\"expected object of type SafeStyleSheet, got '\\\"+a+\\\"' of type \\\"+goog.typeOf(a));return\\\"type_error:SafeStyleSheet\\\"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}}\\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(\\\"\\\");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A=\\\"A\\\";goog.dom.TagName.ABBR=\\\"ABBR\\\";goog.dom.TagName.ACRONYM=\\\"ACRONYM\\\";goog.dom.TagName.ADDRESS=\\\"ADDRESS\\\";goog.dom.TagName.APPLET=\\\"APPLET\\\";goog.dom.TagName.AREA=\\\"AREA\\\";goog.dom.TagName.ARTICLE=\\\"ARTICLE\\\";goog.dom.TagName.ASIDE=\\\"ASIDE\\\";goog.dom.TagName.AUDIO=\\\"AUDIO\\\";goog.dom.TagName.B=\\\"B\\\";goog.dom.TagName.BASE=\\\"BASE\\\";goog.dom.TagName.BASEFONT=\\\"BASEFONT\\\";goog.dom.TagName.BDI=\\\"BDI\\\";goog.dom.TagName.BDO=\\\"BDO\\\";\\ngoog.dom.TagName.BIG=\\\"BIG\\\";goog.dom.TagName.BLOCKQUOTE=\\\"BLOCKQUOTE\\\";goog.dom.TagName.BODY=\\\"BODY\\\";goog.dom.TagName.BR=\\\"BR\\\";goog.dom.TagName.BUTTON=\\\"BUTTON\\\";goog.dom.TagName.CANVAS=\\\"CANVAS\\\";goog.dom.TagName.CAPTION=\\\"CAPTION\\\";goog.dom.TagName.CENTER=\\\"CENTER\\\";goog.dom.TagName.CITE=\\\"CITE\\\";goog.dom.TagName.CODE=\\\"CODE\\\";goog.dom.TagName.COL=\\\"COL\\\";goog.dom.TagName.COLGROUP=\\\"COLGROUP\\\";goog.dom.TagName.COMMAND=\\\"COMMAND\\\";goog.dom.TagName.DATA=\\\"DATA\\\";goog.dom.TagName.DATALIST=\\\"DATALIST\\\";goog.dom.TagName.DD=\\\"DD\\\";\\ngoog.dom.TagName.DEL=\\\"DEL\\\";goog.dom.TagName.DETAILS=\\\"DETAILS\\\";goog.dom.TagName.DFN=\\\"DFN\\\";goog.dom.TagName.DIALOG=\\\"DIALOG\\\";goog.dom.TagName.DIR=\\\"DIR\\\";goog.dom.TagName.DIV=\\\"DIV\\\";goog.dom.TagName.DL=\\\"DL\\\";goog.dom.TagName.DT=\\\"DT\\\";goog.dom.TagName.EM=\\\"EM\\\";goog.dom.TagName.EMBED=\\\"EMBED\\\";goog.dom.TagName.FIELDSET=\\\"FIELDSET\\\";goog.dom.TagName.FIGCAPTION=\\\"FIGCAPTION\\\";goog.dom.TagName.FIGURE=\\\"FIGURE\\\";goog.dom.TagName.FONT=\\\"FONT\\\";goog.dom.TagName.FOOTER=\\\"FOOTER\\\";goog.dom.TagName.FORM=\\\"FORM\\\";\\ngoog.dom.TagName.FRAME=\\\"FRAME\\\";goog.dom.TagName.FRAMESET=\\\"FRAMESET\\\";goog.dom.TagName.H1=\\\"H1\\\";goog.dom.TagName.H2=\\\"H2\\\";goog.dom.TagName.H3=\\\"H3\\\";goog.dom.TagName.H4=\\\"H4\\\";goog.dom.TagName.H5=\\\"H5\\\";goog.dom.TagName.H6=\\\"H6\\\";goog.dom.TagName.HEAD=\\\"HEAD\\\";goog.dom.TagName.HEADER=\\\"HEADER\\\";goog.dom.TagName.HGROUP=\\\"HGROUP\\\";goog.dom.TagName.HR=\\\"HR\\\";goog.dom.TagName.HTML=\\\"HTML\\\";goog.dom.TagName.I=\\\"I\\\";goog.dom.TagName.IFRAME=\\\"IFRAME\\\";goog.dom.TagName.IMG=\\\"IMG\\\";goog.dom.TagName.INPUT=\\\"INPUT\\\";\\ngoog.dom.TagName.INS=\\\"INS\\\";goog.dom.TagName.ISINDEX=\\\"ISINDEX\\\";goog.dom.TagName.KBD=\\\"KBD\\\";goog.dom.TagName.KEYGEN=\\\"KEYGEN\\\";goog.dom.TagName.LABEL=\\\"LABEL\\\";goog.dom.TagName.LEGEND=\\\"LEGEND\\\";goog.dom.TagName.LI=\\\"LI\\\";goog.dom.TagName.LINK=\\\"LINK\\\";goog.dom.TagName.MAIN=\\\"MAIN\\\";goog.dom.TagName.MAP=\\\"MAP\\\";goog.dom.TagName.MARK=\\\"MARK\\\";goog.dom.TagName.MATH=\\\"MATH\\\";goog.dom.TagName.MENU=\\\"MENU\\\";goog.dom.TagName.MENUITEM=\\\"MENUITEM\\\";goog.dom.TagName.META=\\\"META\\\";goog.dom.TagName.METER=\\\"METER\\\";\\ngoog.dom.TagName.NAV=\\\"NAV\\\";goog.dom.TagName.NOFRAMES=\\\"NOFRAMES\\\";goog.dom.TagName.NOSCRIPT=\\\"NOSCRIPT\\\";goog.dom.TagName.OBJECT=\\\"OBJECT\\\";goog.dom.TagName.OL=\\\"OL\\\";goog.dom.TagName.OPTGROUP=\\\"OPTGROUP\\\";goog.dom.TagName.OPTION=\\\"OPTION\\\";goog.dom.TagName.OUTPUT=\\\"OUTPUT\\\";goog.dom.TagName.P=\\\"P\\\";goog.dom.TagName.PARAM=\\\"PARAM\\\";goog.dom.TagName.PICTURE=\\\"PICTURE\\\";goog.dom.TagName.PRE=\\\"PRE\\\";goog.dom.TagName.PROGRESS=\\\"PROGRESS\\\";goog.dom.TagName.Q=\\\"Q\\\";goog.dom.TagName.RP=\\\"RP\\\";goog.dom.TagName.RT=\\\"RT\\\";\\ngoog.dom.TagName.RTC=\\\"RTC\\\";goog.dom.TagName.RUBY=\\\"RUBY\\\";goog.dom.TagName.S=\\\"S\\\";goog.dom.TagName.SAMP=\\\"SAMP\\\";goog.dom.TagName.SCRIPT=\\\"SCRIPT\\\";goog.dom.TagName.SECTION=\\\"SECTION\\\";goog.dom.TagName.SELECT=\\\"SELECT\\\";goog.dom.TagName.SMALL=\\\"SMALL\\\";goog.dom.TagName.SOURCE=\\\"SOURCE\\\";goog.dom.TagName.SPAN=\\\"SPAN\\\";goog.dom.TagName.STRIKE=\\\"STRIKE\\\";goog.dom.TagName.STRONG=\\\"STRONG\\\";goog.dom.TagName.STYLE=\\\"STYLE\\\";goog.dom.TagName.SUB=\\\"SUB\\\";goog.dom.TagName.SUMMARY=\\\"SUMMARY\\\";goog.dom.TagName.SUP=\\\"SUP\\\";\\ngoog.dom.TagName.SVG=\\\"SVG\\\";goog.dom.TagName.TABLE=\\\"TABLE\\\";goog.dom.TagName.TBODY=\\\"TBODY\\\";goog.dom.TagName.TD=\\\"TD\\\";goog.dom.TagName.TEMPLATE=\\\"TEMPLATE\\\";goog.dom.TagName.TEXTAREA=\\\"TEXTAREA\\\";goog.dom.TagName.TFOOT=\\\"TFOOT\\\";goog.dom.TagName.TH=\\\"TH\\\";goog.dom.TagName.THEAD=\\\"THEAD\\\";goog.dom.TagName.TIME=\\\"TIME\\\";goog.dom.TagName.TITLE=\\\"TITLE\\\";goog.dom.TagName.TR=\\\"TR\\\";goog.dom.TagName.TRACK=\\\"TRACK\\\";goog.dom.TagName.TT=\\\"TT\\\";goog.dom.TagName.U=\\\"U\\\";goog.dom.TagName.UL=\\\"UL\\\";goog.dom.TagName.VAR=\\\"VAR\\\";\\ngoog.dom.TagName.VIDEO=\\\"VIDEO\\\";goog.dom.TagName.WBR=\\\"WBR\\\";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE=\\\"\\\",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a};\\nconst module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:\\\"\\\"}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null}\\nfunction module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData();\\nfunction module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal=\\\"string\\\"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal}\\nfunction module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal}\\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)}\\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp(\\\"([A-Z][\\\\\\\\w ]+)/([^\\\\\\\\s]+)\\\\\\\\s*(?:\\\\\\\\((.*?)\\\\\\\\))?\\\",\\\"g\\\"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT;\\ngoog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent;\\ngoog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_=\\n!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error(\\\"Unsafe call to resetForTesting\\\");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue(\\\"fullVersionList\\\");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue(\\\"platformVersion\\\");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:\\\"Android Browser\\\",CHROMIUM:\\\"Chromium\\\",EDGE:\\\"Microsoft Edge\\\",FIREFOX:\\\"Firefox\\\",IE:\\\"Internet Explorer\\\",OPERA:\\\"Opera\\\",SAFARI:\\\"Safari\\\",SILK:\\\"Silk\\\"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand;\\nfunction module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0<a.brands.length}\\nfunction module$contents$goog$labs$userAgent$browser_hasFullVersionList(){return module$contents$goog$labs$userAgent$browser_isAtLeast(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM,98)}function module$contents$goog$labs$userAgent$browser_matchOpera(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Opera\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchIE(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Trident\\\")||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"MSIE\\\")}function module$contents$goog$labs$userAgent$browser_matchEdgeHtml(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Edge\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchEdgeChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.EDGE):module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Edg/\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchOperaChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.OPERA):module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"OPR\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchFirefox(){return module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Firefox\\\")||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"FxiOS\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchSafari(){return module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Safari\\\")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchCoast()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_matchEdgeChromium()||module$contents$goog$labs$userAgent$browser_matchOperaChromium()||\\nmodule$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_isSilk()||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Android\\\"))}function module$contents$goog$labs$userAgent$browser_matchCoast(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Coast\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchIosWebview(){return(module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"iPad\\\")||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"iPhone\\\"))&&!module$contents$goog$labs$userAgent$browser_matchSafari()&&!module$contents$goog$labs$userAgent$browser_matchChrome()&&!module$contents$goog$labs$userAgent$browser_matchCoast()&&!module$contents$goog$labs$userAgent$browser_matchFirefox()&&module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"AppleWebKit\\\")}\\nfunction module$contents$goog$labs$userAgent$browser_matchChrome(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM):(module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Chrome\\\")||module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"CriOS\\\"))&&!module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_isSilk()}\\nfunction module$contents$goog$labs$userAgent$browser_matchAndroidBrowser(){return module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Android\\\")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_isSilk())}const module$contents$goog$labs$userAgent$browser_isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;\\ngoog.labs.userAgent.browser.isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;const module$contents$goog$labs$userAgent$browser_isIE=module$contents$goog$labs$userAgent$browser_matchIE;goog.labs.userAgent.browser.isIE=module$contents$goog$labs$userAgent$browser_matchIE;const module$contents$goog$labs$userAgent$browser_isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;goog.labs.userAgent.browser.isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;\\nconst module$contents$goog$labs$userAgent$browser_isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;goog.labs.userAgent.browser.isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;const module$contents$goog$labs$userAgent$browser_isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;goog.labs.userAgent.browser.isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;\\nconst module$contents$goog$labs$userAgent$browser_isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;goog.labs.userAgent.browser.isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;const module$contents$goog$labs$userAgent$browser_isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;goog.labs.userAgent.browser.isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;const module$contents$goog$labs$userAgent$browser_isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;\\ngoog.labs.userAgent.browser.isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;const module$contents$goog$labs$userAgent$browser_isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;goog.labs.userAgent.browser.isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;const module$contents$goog$labs$userAgent$browser_isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;goog.labs.userAgent.browser.isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;\\nconst module$contents$goog$labs$userAgent$browser_isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;goog.labs.userAgent.browser.isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;function module$contents$goog$labs$userAgent$browser_isSilk(){return module$contents$goog$labs$userAgent$util_matchUserAgent(\\\"Silk\\\")}goog.labs.userAgent.browser.isSilk=module$contents$goog$labs$userAgent$browser_isSilk;\\nfunction module$contents$goog$labs$userAgent$browser_createVersionMap(a){const b={};a.forEach(c=>{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||\\\"\\\"}\\nfunction module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b([\\\"Version\\\",\\\"Opera\\\"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()?\\nb([\\\"Edge\\\"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b([\\\"Edg\\\"]):module$contents$goog$labs$userAgent$browser_isSilk()?b([\\\"Silk\\\"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b([\\\"Chrome\\\",\\\"CriOS\\\",\\\"HeadlessChrome\\\"]):(a=a[2])&&a[1]||\\\"\\\"}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion;\\nfunction module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher;\\nfunction module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\\\\d\\\\.]*)/.exec(a);if(b&&b[1])return b[1];b=\\\"\\\";const c=/MSIE +([\\\\d\\\\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\\\\/(\\\\d.\\\\d)/.exec(a),\\\"7.0\\\"==c[1])if(a&&a[1])switch(a[1]){case \\\"4.0\\\":b=\\\"8.0\\\";break;case \\\"5.0\\\":b=\\\"9.0\\\";break;case \\\"6.0\\\":b=\\\"10.0\\\";break;case \\\"7.0\\\":b=\\\"11.0\\\"}else b=\\\"7.0\\\";else b=c[1];return b}\\nfunction module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):\\\"\\\";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c([\\\"Version\\\",\\n\\\"Opera\\\"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c([\\\"OPR\\\"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c([\\\"Edge\\\"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c([\\\"Edg\\\"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c([\\\"Chrome\\\",\\\"CriOS\\\",\\\"HeadlessChrome\\\"])}return a===\\nmodule$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&&\\na[1]||\\\"\\\":\\\"\\\"}\\nfunction module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(\\\".\\\")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(\\\"\\\"===b)return NaN;b=b.split(\\\".\\\")}return 0===b.length?NaN:Number(b[0])}\\nfunction module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,\\\"Major version must be an integer\\\");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast;\\nfunction module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,\\\"Major version must be an integer\\\");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost;\\nclass module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a=\\nawait module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;\\nasync function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions;\\ngoog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()};\\nfunction module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b=\\\"\\\";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(\\\"\\\"===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a,\\nc,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf;\\nfunction module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return\\\"\\\"}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)}\\ngoog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={};\\nclass module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:\\\"\\\";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&&\\na.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got '${a}' of type `+goog.typeOf(a));return\\\"type_error:SafeHtml\\\"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=\\\"object\\\"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof\\nmodule$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\\\"\\\\x3c!--\\\"+\\ngoog.string.internal.htmlEscape(a)+\\\"--\\\\x3e\\\")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:\\\"\\\");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\\n`Tag name <${a}> is not allowed for SafeHtml.`:\\\"\\\");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:\\\"\\\"},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"iframe\\\",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\\n\\\"The browser does not support sandboxed iframes.\\\":\\\"\\\");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox=\\\"\\\";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"iframe\\\",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&\\\"sandbox\\\"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a);\\na=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"script\\\",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if(\\\"language\\\"==d||\\\"src\\\"==d||\\\"text\\\"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set \\\"${d}\\\" attribute`:\\\"\\\");}c=\\\"\\\";a=module$contents$goog$array_concat(a);for(d=0;d<\\na.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"script\\\",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:\\\"text/css\\\"},{},b);let c=\\\"\\\";a=module$contents$goog$array_concat(a);for(let d=0;d<a.length;d++)c+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(a[d]);\\na=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"style\\\",b,a)}static createMetaRefresh(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(module$contents$goog$labs$userAgent$browser_matchIE()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml())&&goog.string.internal.contains(a,\\\";\\\")&&(a=\\\"'\\\"+a.replace(/'/g,\\\"%27\\\")+\\\"'\\\");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\\\"meta\\\",\\n{\\\"http-equiv\\\":\\\"refresh\\\",content:(b||0)+\\\"; url=\\\"+a})}static join(a,b){a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);const c=[],d=e=>{Array.isArray(e)?e.forEach(d):(e=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(e),c.push(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(e)))};b.forEach(d);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c.join(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static concat(a){return module$contents$goog$html$SafeHtml_SafeHtml.join(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY,\\nArray.prototype.slice.call(arguments))}static createSafeHtmlSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createHTML(a):a;return new module$contents$goog$html$SafeHtml_SafeHtml(a,module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE)}static createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(a,b,c){b=`<${a}`+module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes(a,b);null==c?c=[]:Array.isArray(c)||(c=[c]);goog.dom.tags.isVoidTag(a.toLowerCase())?\\n(goog.asserts.assert(!c.length,`Void tag <${a}> does not allow content.`),b+=\\\">\\\"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=\\\">\\\"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+\\\"</\\\"+a+\\\">\\\");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c=\\\"\\\";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\\n`Invalid attribute name \\\"${d}\\\".`:\\\"\\\");const e=b[d];null!=e&&(c+=\\\" \\\"+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,\\\"Must be lower case\\\"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,\\\"Must be lower case\\\"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c,\\nf)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override \\\"${e}\\\" attribute, got \\\"`+f+'\\\" with value \\\"'+c[f]+'\\\"':\\\"\\\");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape;\\nconst module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0,\\n[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0};\\nfunction module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if(\\\"style\\\"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'Attribute \\\"style\\\" not supported.':\\\"\\\");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\\n`Attribute \\\"${b}`+'\\\" requires goog.string.Const value, \\\"'+c+'\\\" given.':\\\"\\\");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if(\\\"string\\\"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute \\\"${b}\\\" on tag \\\"${a}`+'\\\" requires goog.html.SafeUrl, goog.string.Const, or string, value \\\"'+\\nc+'\\\" given.':\\\"\\\");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert(\\\"string\\\"===typeof c||\\\"number\\\"===typeof c,\\\"String or number value expected, got \\\"+typeof c+\\\" with value: \\\"+c);return`${b}=\\\"`+goog.string.internal.htmlEscape(String(c))+'\\\"'}\\nfunction module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'The \\\"style\\\" attribute requires goog.html.SafeStyle or map of style properties, '+typeof a+\\\" given: \\\"+a:\\\"\\\");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)}\\nmodule$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\\\"<!DOCTYPE html>\\\")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||\\\"\\\",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\\\"<br>\\\")}();\\ngoog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};\\ngoog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),\\\"must provide justification\\\");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),\\\"must provide non-empty justification\\\");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:\\\"afterbegin\\\",AFTEREND:\\\"afterend\\\",BEFOREBEGIN:\\\"beforebegin\\\",BEFOREEND:\\\"beforeend\\\"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};\\ngoog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&\\\"undefined\\\"===typeof document)return!1;var a=document.createElement(\\\"div\\\"),b=document.createElement(\\\"div\\\");b.appendChild(document.createElement(\\\"div\\\"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement});\\ngoog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\\ngoog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error(\\\"goog.dom.safe.setInnerHtml cannot be used to set content of \\\"+a.tagName+\\\".\\\");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};\\ngoog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from(\\\"Constant HTML to be immediatelly used.\\\"),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\\ngoog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)};\\ngoog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\\ngoog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\\\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};\\ngoog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\\\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};\\ngoog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\\ngoog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,\\\"stylesheet\\\")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because \\\"rel\\\" contains \\\"stylesheet\\\"'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute(\\\"nonce\\\",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):\\nb instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};\\ngoog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute(\\\"nonce\\\",b)};\\ngoog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))};\\ngoog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||\\\"\\\";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)};\\ngoog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,\\\"text/html\\\")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)};\\ngoog.dom.safe.createImageFromBlob=function(a){if(!/^image\\\\/.*/g.test(a.type))throw Error(\\\"goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.\\\");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\\ngoog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_(\\\"script[nonce]\\\",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_('style[nonce],link[rel=\\\"stylesheet\\\"][nonce]',a)};goog.dom.safe.NONCE_PATTERN_=/^[\\\\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute(\\\"nonce\\\"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:\\\"\\\":\\\"\\\"};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:\\\"\\\\u00a0\\\",ZERO_WIDTH_SPACE:\\\"\\\\u200b\\\"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;\\ngoog.string.subs=function(a,b){const c=a.split(\\\"%s\\\");let d=\\\"\\\";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join(\\\"%s\\\")};goog.string.collapseWhitespace=function(a){return a.replace(/[\\\\s\\\\xa0]+/g,\\\" \\\").replace(/^\\\\s+|\\\\s+$/g,\\\"\\\")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;\\ngoog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\\\\t\\\\n\\\\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return\\\" \\\"==a};\\ngoog.string.isUnicodeChar=function(a){return 1==a.length&&\\\" \\\"<=a&&\\\"~\\\">=a||\\\"\\\\u0080\\\"<=a&&\\\"\\\\ufffd\\\">=a};goog.string.stripNewlines=function(a){return a.replace(/(\\\\r\\\\n|\\\\r|\\\\n)+/g,\\\" \\\")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\\\\r\\\\n|\\\\r|\\\\n)/g,\\\"\\\\n\\\")};goog.string.normalizeWhitespace=function(a){return a.replace(/\\\\xa0|\\\\s/g,\\\" \\\")};goog.string.normalizeSpaces=function(a){return a.replace(/\\\\xa0|[ \\\\t]+/g,\\\" \\\")};\\ngoog.string.collapseBreakingSpaces=function(a){return a.replace(/[\\\\t\\\\r\\\\n ]+/g,\\\" \\\").replace(/^[\\\\t\\\\r\\\\n ]+|[\\\\t\\\\r\\\\n ]+$/g,\\\"\\\")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\\\\s\\\\xa0]+/,\\\"\\\")};goog.string.trimRight=function(a){return a.replace(/[\\\\s\\\\xa0]+$/,\\\"\\\")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;\\ngoog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g<f;g++){c=d[g];const h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\\\d+|\\\\D+/g)};\\ngoog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\\\d+|\\\\.\\\\d+|\\\\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\\\\+/g,\\\" \\\"))};goog.string.newLineToBr=goog.string.internal.newLineToBr;\\ngoog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,\\\"&#101;\\\"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,\\\"&\\\")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&\\\"document\\\"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};\\ngoog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,\\\"&\\\")?goog.string.unescapeEntitiesUsingDom_(a,b):a};\\ngoog.string.unescapeEntitiesUsingDom_=function(a,b){const c={\\\"&amp;\\\":\\\"&\\\",\\\"&lt;\\\":\\\"<\\\",\\\"&gt;\\\":\\\">\\\",\\\"&quot;\\\":'\\\"'};let d;d=b?b.createElement(\\\"div\\\"):goog.global.document.createElement(\\\"div\\\");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;\\\"#\\\"==f.charAt(0)&&(f=Number(\\\"0\\\"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from(\\\"Single HTML entity.\\\"),\\ne+\\\" \\\")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case \\\"amp\\\":return\\\"&\\\";case \\\"lt\\\":return\\\"<\\\";case \\\"gt\\\":return\\\">\\\";case \\\"quot\\\":return'\\\"';default:return\\\"#\\\"!=c.charAt(0)||(c=Number(\\\"0\\\"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\\\\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g,\\\" &#160;\\\"),b)};\\ngoog.string.preserveSpaces=function(a){return a.replace(/(^|[\\\\n ]) /g,\\\"$1\\\"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;d<c;d++){const e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+\\\"...\\\");c&&(a=goog.string.htmlEscape(a));return a};\\ngoog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+\\\"...\\\"+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+\\\"...\\\"+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={\\\"\\\\x00\\\":\\\"\\\\\\\\0\\\",\\\"\\\\b\\\":\\\"\\\\\\\\b\\\",\\\"\\\\f\\\":\\\"\\\\\\\\f\\\",\\\"\\\\n\\\":\\\"\\\\\\\\n\\\",\\\"\\\\r\\\":\\\"\\\\\\\\r\\\",\\\"\\\\t\\\":\\\"\\\\\\\\t\\\",\\\"\\\\v\\\":\\\"\\\\\\\\x0B\\\",'\\\"':'\\\\\\\\\\\"',\\\"\\\\\\\\\\\":\\\"\\\\\\\\\\\\\\\\\\\",\\\"<\\\":\\\"\\\\\\\\u003C\\\"};goog.string.jsEscapeCache_={\\\"'\\\":\\\"\\\\\\\\'\\\"};\\ngoog.string.quote=function(a){a=String(a);const b=['\\\"'];for(let c=0;c<a.length;c++){const d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('\\\"');return b.join(\\\"\\\")};goog.string.escapeString=function(a){const b=[];for(let c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join(\\\"\\\")};\\ngoog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];let b;const c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b=\\\"\\\\\\\\x\\\",16>c||256<c)b+=\\\"0\\\"}else b=\\\"\\\\\\\\u\\\",4096>c&&(b+=\\\"0\\\");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains;\\ngoog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b<a.length&&0<c&&(d=a.slice(0,b)+a.slice(b+c));return d};goog.string.remove=function(a,b){return a.replace(b,\\\"\\\")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),\\\"g\\\");return a.replace(b,\\\"\\\")};\\ngoog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),\\\"g\\\");return a.replace(b,c.replace(/\\\\$/g,\\\"$$$$\\\"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\\\\[\\\\]{}+?*.$\\\\^|,:#<!\\\\\\\\])/g,\\\"\\\\\\\\$1\\\").replace(/\\\\x08/g,\\\"\\\\\\\\x08\\\")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};\\ngoog.string.padNumber=function(a,b,c){if(!Number.isFinite(a))return String(a);a=void 0!==c?a.toFixed(c):String(a);c=a.indexOf(\\\".\\\");-1===c&&(c=a.length);const d=\\\"-\\\"===a[0]?\\\"-\\\":\\\"\\\";d&&(a=a.substring(1));return d+goog.string.repeat(\\\"0\\\",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?\\\"\\\":String(a)};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};\\ngoog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){let b=0;for(let c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return\\\"goog_\\\"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};\\ngoog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\\\\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,\\\"-$1\\\").toLowerCase()};goog.string.toTitleCase=function(a,b){b=\\\"string\\\"===typeof b?goog.string.regExpEscape(b):\\\"\\\\\\\\s\\\";return a.replace(new RegExp(\\\"(^\\\"+(b?\\\"|[\\\"+b+\\\"]+\\\":\\\"\\\")+\\\")([a-z])\\\",\\\"g\\\"),function(c,d,e){return d+e.toUpperCase()})};\\ngoog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return\\\"string\\\"===typeof a?/^\\\\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};\\ngoog.string.lastComponent=function(a,b){if(b)\\\"string\\\"==typeof b&&(b=[b]);else return a;let c=-1;for(let d=0;d<b.length;d++){if(\\\"\\\"==b[d])continue;const e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};\\ngoog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.string.path={};goog.string.path.baseName=function(a){const b=a.lastIndexOf(\\\"/\\\")+1;return a.slice(b)};goog.string.path.basename=goog.string.path.baseName;goog.string.path.dirname=function(a){const b=a.lastIndexOf(\\\"/\\\")+1;a=a.slice(0,b);/^\\\\/+$/.test(a)||(a=a.replace(/\\\\/+$/,\\\"\\\"));return a};goog.string.path.extension=function(a){a=goog.string.path.baseName(a).replace(/\\\\.+/g,\\\".\\\");const b=a.lastIndexOf(\\\".\\\");return 0>=b?\\\"\\\":a.slice(b+1)};\\ngoog.string.path.join=function(a){let b=arguments[0];for(let c=1;c<arguments.length;c++){const d=arguments[c];b=goog.string.startsWith(d,\\\"/\\\")?d:\\\"\\\"==b||goog.string.endsWith(b,\\\"/\\\")?b+d:b+(\\\"/\\\"+d)}return b};\\ngoog.string.path.normalizePath=function(a){if(\\\"\\\"==a)return\\\".\\\";let b=\\\"\\\";goog.string.startsWith(a,\\\"/\\\")&&(b=\\\"/\\\",goog.string.startsWith(a,\\\"//\\\")&&!goog.string.startsWith(a,\\\"///\\\")&&(b=\\\"//\\\"));a=a.split(\\\"/\\\");const c=[];for(let d=0;d<a.length;d++){const e=a[d];\\\"\\\"!=e&&\\\".\\\"!=e&&(\\\"..\\\"!=e||!b&&!c.length||\\\"..\\\"==module$contents$goog$array_peek(c)?c.push(e):c.pop())}return b+c.join(\\\"/\\\")||\\\".\\\"};goog.string.path.split=function(a){const b=goog.string.path.dirname(a);a=goog.string.path.baseName(a);return[b,a]};const DEBUG_WASI$$module$src$filesystem$wasi=!1;function assertLeadingSlash$$module$src$filesystem$wasi(a){return/^\\\\//g.test(a)?a:`/${a}`}function removeLeadingSlash$$module$src$filesystem$wasi(a){return a.replace(/^\\\\//g,\\\"\\\")}function shouldOpenReader$$module$src$filesystem$wasi(a){return(a&(WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants))!==goog.global.BigInt(0)}\\nfunction performanceNowPoly$$module$src$filesystem$wasi(){if(\\\"undefined\\\"===typeof performance||\\\"undefined\\\"===typeof performance.now){const a=Date.now();return Date.now()-a}return performance.now()}function concatUint8Arrays$$module$src$filesystem$wasi(a){var b=a.reduce((d,e)=>d+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}}\\nconst WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:\\\"/dev/stdin\\\",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:\\\"/dev/stdout\\\",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:\\\"/dev/stderr\\\",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:\\\"/\\\",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0};\\nWASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)\\\"function\\\"===c.kind&&c.module.startsWith(\\\"wasi_\\\")&&(\\\"object\\\"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b};\\nWASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a};\\nWASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START);\\ndefault:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"args_get\\\",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"args_sizes_get\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"args_get\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"clock_time_get\\\",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"environ_get\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"environ_sizes_get\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_advise\\\",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_allocate\\\",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_close\\\",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_datasync\\\",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_fdstat_get\\\",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants),\\n!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_fdstat_set_flags\\\",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_fdstat_set_rights\\\",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_filestat_get\\\",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b,\\ngoog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_filestat_set_size\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_filestat_set_times\\\",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_pread\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_prestat_dir_name\\\",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_prestat_get\\\",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log(\\\"fd_pwrite\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_read\\\",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((m,p)=>m+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,l=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,\\\"\\\\x00\\\"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;f<c;f++){var n=b+8*f;const m=g.getUint32(n,!0);n=g.getUint32(n+\\n4,!0);l||(k+=n,Array.from({length:n},(p,q)=>q).reduce((p,q)=>{if(l)return p;const [B,r]=p;let v=p=0,D=!1,y=0,u;if(0===q)for(;!D;)u=e[p]?e[p].byteLength:0,y<=h&&u+y>h?(D=!0,v=h-y):(y+=u,p+=1);else p=B,v=r;e[p]?(g.setUint8(m+q,e[p][v]),v+1>=e[p].byteLength?(p=B+1,v=0):v+=1):(g.setUint8(m+q,\\\"\\\\x00\\\"),h+=q,l=!0);return[p,v]},[0,0]),l||(h+=n))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error(\\\"Reading non existent file\\\",a,this.fd[a])};\\nWASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_readdir\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_renumber\\\",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_seek\\\",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break;\\ncase WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_sync\\\",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_tell\\\",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"fd_write\\\",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0<this.fd[a].buffers.length?[concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)]:this.fd[a].buffers;let f=0;for(let k=0;k<c;k++){var g=b+8*k,h=e.getUint32(g,!0);g=e.getUint32(g+4,!0);f+=g;h=new Uint8Array(e.buffer,h,g);if(this.fd[a].buffers[0]&&\\nthis.fd[a].seekPos<this.fd[a].buffers[0].length){const l=Number(this.fd[a].seekPos);h.slice(0,g).forEach((n,m)=>{this.fd[a].buffers[0][l+m]=n})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_create_directory\\\",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_filestat_get\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_filestat_set_times\\\",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_link\\\",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_open\\\",a,b,c,d,e,f,g,h,k,arguments);const l=this.getMemory();var n=(this.fd[a]||{path:\\\"/\\\"}).path,m=new Uint8Array(l.buffer,c,d);m=decoder$$module$src$utils$text_encoders.decode(m);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?\\\"\\\":n,m)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\";; opening path\\\",\\np,\\\"withREader\\\",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith(\\\"/..\\\")||\\\"/._\\\"===p||\\\"/.AppleDouble\\\"===p)return WASI_EBADF$$module$src$filesystem$constants;(n=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?m=n.fd:(m=this.fd.length,this.fd[m]={fd:m});this.fd[m]={...this.fd[m],path:p,type:\\\"file\\\",seekPos:goog.global.BigInt(0),buffers:n?this.fd[m].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"should open a read handle for\\\",\\np);l.setUint32(k,m,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_readlink\\\",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_remove_directory\\\",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_rename\\\",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_symlink\\\",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3<a&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"path_unlink_file\\\",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.poll_oneoff=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"poll_oneoff\\\",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.proc_exit=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"proc_exit\\\",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.proc_raise=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"proc_raise\\\",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.random_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"random_get\\\",a,b);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sched_yield=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"sched_yield\\\",arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.sock_recv=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"sock_recv\\\",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sock_send=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"sock_send\\\",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\\nWASI$$module$src$filesystem$wasi.prototype.sock_shutdown=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log(\\\"sock_shutdown\\\",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.findBuffers=function(a){const b=Object.values(this.fd).find(({path:c})=>c===a);return[b&&b.buffers,b.fd]};\\nWASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+\\\"/\\\").replace(\\\"//\\\",\\\"/\\\"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\\\\//g.test(d.replace(b,\\\"\\\"))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,\\\"\\\"))).filter(d=>!!d)};\\nWASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]};\\nWASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can't append to non-existing file ${a}`)};\\nWASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn't been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)};\\nWASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)};\\nWASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0<c.length?console.warn(`mkdir: path ${a} already exists`):(a=Object.keys(this.fd).length,this.fd[a]={fd:a,path:b})};var module$src$filesystem$wasi={};module$src$filesystem$wasi.WASI=WASI$$module$src$filesystem$wasi;function clearArray$$module$src$utils$clear_array(a){for(;0<a.length;)a.pop()}var module$src$utils$clear_array={};module$src$utils$clear_array.clearArray=clearArray$$module$src$utils$clear_array;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};\\nvar LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b=\\\"log_with_warnings\\\"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error(\\\"Invalid log level \\\"+b+\\\" allowed: \\\"+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=\\nfunction(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e=\\\"log_with_warnings\\\"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>\\nmodule$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split(\\\"{}\\\");for(var k=[f.mockConsole,\\\"%c\\\"+b,c],l=0;l<h.length;l++)k.push(h[l]),void 0!==g[l]&&k.push(g[l]);if(h.length-1!==g.length)if(\\\"log_with_warnings\\\"===f.logLevel)f.mockConsole.error(\\\"MissMatch amount of arguments\\\");else if(\\\"log_raise_error\\\"===f.logLevel)throw Error(\\\"MissMatch amount of arguments\\\");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,\\nc){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return\\\"color: white; background-color: \\\"+b+\\\"; padding: 2px 6px; border-radius: 2px; font-size: 10px\\\"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^\\nd>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b=\\\"\\\");b=a.getHash(b);for(var c=\\\"#\\\",d=0;3>d;d++)c+=(\\\"00\\\"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,\\\"trace\\\"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,\\\"debug\\\"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,\\n\\\"info\\\"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,\\\"warn\\\"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,\\\"error\\\")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;\\nconst isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};\\nlogSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;\\nmodule$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;\\nmodule$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const CompressionMethod$$module$src$zlib$zlib={DEFLATE:8,RESERVED:15};var module$src$zlib$zlib={};module$src$zlib$zlib.CompressionMethod=CompressionMethod$$module$src$zlib$zlib;/*\\n zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */\\nfunction Huffman$$module$src$zlib$huffman(a){const b=a.length;let c=0,d=Number.POSITIVE_INFINITY,e,f,g,h;let k,l;for(k=0;k<b;++k)a[k]>c&&(c=a[k]),a[k]<d&&(d=a[k]);const n=1<<c,m=new Uint32Array(n);e=1;f=0;for(g=2;e<=c;){for(k=0;k<b;++k)if(a[k]===e){h=0;var p=f;for(l=0;l<e;++l)h=h<<1|p&1,p>>=1;p=e<<16|k;for(l=h;l<n;l+=g)m[l]=p;++f}++e;f<<=1;g<<=1}return[m,c,d]}var module$src$zlib$huffman={};module$src$zlib$huffman.Huffman=Huffman$$module$src$zlib$huffman;const ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate=32768;\\nfunction RawInflate$$module$src$zlib$rawinflate(a,b){this.blocks=[];this.bufferSize=ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate;this.bitsbuflen=this.bitsbuf=this.ip=this.totalpos=0;this.input=new Uint8Array(a);this.bfinal=!1;this.bufferType=RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE;this.resize=!1;if(b||!(b={}))b.index&&(this.ip=b.index),b.bufferSize&&(this.bufferSize=b.bufferSize),b.bufferType&&(this.bufferType=b.bufferType),b.resize&&(this.resize=b.resize);switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.op=\\nRawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;this.output=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength+this.bufferSize+RawInflate$$module$src$zlib$rawinflate.MaxCopyLength);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.op=0;this.output=new Uint8Array(this.bufferSize);break;default:throw Error(\\\"invalid inflate mode\\\");}}RawInflate$$module$src$zlib$rawinflate.BufferType={BLOCK:0,ADAPTIVE:1};\\nRawInflate$$module$src$zlib$rawinflate.prototype.decompress=function(){for(;!this.bfinal;)this.parseBlock();switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:return this.concatBufferBlock();case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:return this.concatBufferDynamic();default:throw Error(\\\"invalid inflate mode\\\");}};RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength=32768;RawInflate$$module$src$zlib$rawinflate.MaxCopyLength=258;\\nRawInflate$$module$src$zlib$rawinflate.Order=function(a){return new Uint16Array(a)}([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);RawInflate$$module$src$zlib$rawinflate.LengthCodeTable=function(a){return new Uint16Array(a)}([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]);RawInflate$$module$src$zlib$rawinflate.LengthExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]);\\nRawInflate$$module$src$zlib$rawinflate.DistCodeTable=function(a){return new Uint16Array(a)}([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);RawInflate$$module$src$zlib$rawinflate.DistExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\\nRawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable=function(a){return a}(function(){const a=new Uint8Array(288);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=143>=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=5;return Huffman$$module$src$zlib$huffman(a)}());\\nRawInflate$$module$src$zlib$rawinflate.prototype.parseBlock=function(){let a=this.readBits(3);a&1&&(this.bfinal=!0);a>>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error(\\\"unknown BTYPE: \\\"+a);}};\\nRawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error(\\\"input buffer is broken\\\");for(;c<a;)b|=d[e++]<<c,c+=8;this.bitsbuf=b>>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<<a)-1};\\nRawInflate$$module$src$zlib$rawinflate.prototype.readCodeByTable=function(a){let b=this.bitsbuf,c=this.bitsbuflen;var d=this.input;let e=this.ip;var f=d.length;const g=a[0];for(a=a[1];c<a&&!(e>=f);)b|=d[e++]<<c,c+=8;d=g[b&(1<<a)-1];f=d>>>16;if(f>c)throw Error(\\\"invalid code length: \\\"+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535};\\nRawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error(\\\"invalid uncompressed block header: LEN\\\");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error(\\\"invalid uncompressed block header: NLEN\\\");e=a[b++]|a[b++]<<8;if(f===~e)throw Error(\\\"invalid uncompressed block header: length verify\\\");if(b+f>a.length)throw Error(\\\"input buffer is broken\\\");\\nswitch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error(\\\"invalid inflate mode\\\");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c};\\nRawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);\\nbreak;default:throw Error(\\\"invalid inflate mode\\\");}};\\nRawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;e<c;++e)d[RawInflate$$module$src$zlib$rawinflate.Order[e]]=this.readBits(3);d=Huffman$$module$src$zlib$huffman(d);c=new Uint8Array(a+b);e=0;for(b=a+b;e<b;){var f=this.readCodeByTable(d);switch(f){case 16:for(f=3+this.readBits(2);f--;)c[e++]=g;break;case 17:for(f=\\n3+this.readBits(3);f--;)c[e++]=0;var g=0;break;case 18:for(f=11+this.readBits(7);f--;)c[e++]=0;g=0;break;default:g=c[e++]=f}}g=Huffman$$module$src$zlib$huffman(c.subarray(0,a));a=Huffman$$module$src$zlib$huffman(c.subarray(a));switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(g,a);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(g,a);break;default:throw Error(\\\"invalid inflate mode\\\");}};\\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanBlock=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;const e=c.length-RawInflate$$module$src$zlib$rawinflate.MaxCopyLength;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,n=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,m=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=\\ne&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=n[f],0<m[f]&&(g+=this.readBits(m[f])),d>=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,n=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,m=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]=\\nf;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=n[f],0<m[f]&&(g+=this.readBits(m[f])),d+h>e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\\nRawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;\\nreturn c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&(\\\"number\\\"===typeof a.fixRatio&&(b=a.fixRatio),\\\"number\\\"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a<d.length?d.length+a:d.length<<1):a=d.length*b;a=new Uint8Array(a);a.set(d);return this.output=a};\\nRawInflate$$module$src$zlib$rawinflate.prototype.concatBufferBlock=function(){let a=0;const b=this.output,c=this.blocks;let d;const e=new Uint8Array(this.totalpos+(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));let f,g,h,k;if(0===c.length)return this.output.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,this.op);f=0;for(g=c.length;f<g;++f)for(d=c[f],h=0,k=d.length;h<k;++h)e[a++]=d[h];f=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;for(g=this.op;f<\\ng;++f)e[a++]=b[f];this.blocks=[];return this.buffer=e};RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferDynamic=function(){let a;const b=this.op;this.resize?(a=new Uint8Array(b),a.set(this.output.subarray(0,b))):a=this.output.subarray(0,b);return this.buffer=a};var module$src$zlib$rawinflate={};module$src$zlib$rawinflate.RawInflate=RawInflate$$module$src$zlib$rawinflate;function Util$$module$src$zlib$util(){}Util$$module$src$zlib$util.stringToByteArray=function(a){a=[...a];let b,c;b=0;for(c=a.length;b<c;b++)a[b]=(a[b].charPointAt(0)&255)>>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){\\\"string\\\"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0<d;){e=d>Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0};\\nAdler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error(\\\"unsupported compression method\\\");}if(0!==((c<<8)+d)%31)throw Error(\\\"invalid fcheck flag:\\\"+((c<<8)+d)%31);if(d&32)throw Error(\\\"fdict flag is not supported\\\");this.rawinflate=\\nnew RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType;\\nInflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error(\\\"invalid adler-32 checksum\\\");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\\\\n$/g.test(d);e=/^\\\\n/g.test(d);var k=d.split(\\\"\\\\n\\\").filter(n=>0<n.length),l=[];if(0===k.length&&h||e)l.push(c.join(\\\"\\\")),clearArray$$module$src$utils$clear_array(c);k.forEach((n,m)=>{m+1===k.length?h?0===m?(l.push(c.join(\\\"\\\")+n),\\nclearArray$$module$src$utils$clear_array(c)):l.push(n):c.push(n):0===m?(l.push(c.join(\\\"\\\")+n),clearArray$$module$src$utils$clear_array(c)):l.push(n)});l.forEach(n=>{n.replace(/(\\\\r\\\\n|\\\\n|\\\\r)/gm,\\\"\\\")&&b.post({log:n})})}},assertPluginExports$$module$src$module=a=>{if(a&&\\\"object\\\"===typeof a&&\\\"object\\\"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,\\\"A csound plugin turns out to be neither a plugin, opcode or module.\\\\nPerhaps csdl.h or module.h wasn't imported correctly?\\\");\\nreturn!1}console.error(\\\"A csound plugin didn't export __wasm_call_ctors.\\\\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors\\\");return!1}console.error(\\\"Error instantiating a csound plugin, instance and/or export is missing!\\\");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let l=0,n=1;for(;;){const m=a[c++];l+=(m&127)*n;n*=128;if(!(m&128))break}return l}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error(\\\"Wasm magic number is missing!\\\");\\nif(0!==a[8])return logWasmModule$$module$src$logger(\\\"Dylink section wasn't found in wasm binary, assuming static wasm.\\\"),\\\"static\\\";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]===\\\"d\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"y\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"l\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"i\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"n\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"k\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\n\\\".\\\".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\\\"0\\\".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory,\\nstreamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]};\\nvar $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{\\\"/\\\":\\\"/\\\"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if(\\\"static\\\"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(u,z)=>{u=await u;\\nlet C,A;try{C=new Uint8Array(z),A=getBinaryHeaderData$$module$src$module(C)}catch(G){console.error(\\\"Error in plugin\\\",G)}A&&u.push({headerData:A,wasmPluginBytes:C});return u},[]);var l=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((u,{headerData:z})=>\\\"static\\\"===z?0:u+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+l;const n=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),m=new WebAssembly.Table({initial:k+\\n1,element:\\\"anyfunc\\\"});e.setMemory(n);const p=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},f*PAGE_SIZE$$module$src$module);l=new WebAssembly.Global({value:\\\"i32\\\",mutable:!1},l);const q=new WebAssembly.Global({value:\\\"i32\\\",mutable:!1},1),B=new WebAssembly.Global({value:\\\"i32\\\",mutable:!0},0);a=await WebAssembly.compile(a);const r=e.getImports(a);let v=[],D=d;r.env=r.env||{};r.env.memory=n;r.env.__indirect_function_table=\\nm;r.env.__stack_pointer=p;r.env.__memory_base=l;r.env.__table_base=q;r.env.csoundLoadModules=u=>{v.forEach(z=>{void 0===y?console.error(\\\"csound-wasm internal: timing problem detected!\\\"):dlinit$$module$src$dlinit(y,z,m,u)});return 0};r.env._ZTH5errno=function(){};r.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:n,messagePort:c,streamBuffer:[]});r.env.printDebugCallback=(u,z)=>{u=new Uint8Array(n.buffer,u,z);u=uint2String$$module$src$utils$text_encoders(u);console.log(u)};\\nr[\\\"GOT.mem\\\"]=r[\\\"GOT.mem\\\"]||{};r[\\\"GOT.mem\\\"].__heap_base=f;r[\\\"GOT.func\\\"]=r[\\\"GOT.func\\\"]||{};const y=await WebAssembly.instantiate(a,r);c=Object.assign({},y.exports);a={};a.exports=Object.assign(c,{memory:n});v=await b.reduce(async(u,{headerData:z,wasmPluginBytes:C})=>{u=await u;try{const {memorySize:A,memoryAlign:G,tableSize:F}=z,I=await WebAssembly.compile(C),t=e.getImports(I),E=new WebAssembly.Global({value:\\\"i32\\\",mutable:!1},D*PAGE_SIZE$$module$src$module);m.grow(F);t.env=Object.assign({},t.env);t.env.memory=\\nn;t.env.__indirect_function_table=m;t.env.__memory_base=E;t.env.__stack_pointer=p;t.env.__table_base=q;t.env.csoundLoadModules=B;delete t.env.csoundWasiJsMessageCallback;D+=Math.ceil((A+G)/PAGE_SIZE$$module$src$module);const x=await WebAssembly.instantiate(I,t);assertPluginExports$$module$src$module(x)&&(x.exports.__wasm_call_ctors(),u.push(x))}catch(A){console.error(\\\"Error while compiling csound-plugin\\\",A)}return u},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]},\\nmodule$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;const handleCsoundStart$$module$src$workers$common_utils=(a,b,c,d,e)=>f=>{const {csound:g}=f,h=1===b.csoundShouldDaemonize(g);h&&(b.csoundSetOption(g,\\\"--daemon\\\"),b.csoundSetOption(g,\\\"-odac\\\"));const k=b.csoundStart(g),l=b.csoundGetOutputName(g)||\\\"test.wav\\\";logCommonUtils$$module$src$logger(`handleCsoundStart: actual csoundStart result ${k}, outputName: ${l}`)();0!==k&&a.post(`error: csoundStart failed while trying to render ${l},`+\\\" look out for errors in options and syntax\\\");setTimeout(()=>{const n=\\nb._isRequestingRtMidiInput(g);if(h||n||l.includes(\\\"dac\\\"))d(f);else if(a.broadcastPlayState(\\\"renderStarted\\\"),e)e(f);else for(;0===b.csoundPerformKsmps(g););},0);return k},instantiateAudioPacket$$module$src$workers$common_utils=(a,b)=>{const c=[];for(let d=0;d<a;d++)c.push(new Float64Array(b));return c},renderFunction$$module$src$workers$common_utils=({libraryCsound:a,workerMessagePort:b})=>async({csound:c})=>{const d=a.csoundGetKr(c);let e=0,f=0;for(;(\\\"renderStarted\\\"===b.vanillaWorkerState||\\\"renderStarted\\\"===\\nb.workerState)&&0===e;)e=a.csoundPerformKsmps(c),f+=1,\\\"function\\\"===typeof setTimeout&&0===e&&0===f%(2*d)&&await new Promise(g=>setTimeout(g,0));b.broadcastPlayState(\\\"renderEnded\\\")};var module$src$workers$common_utils={};module$src$workers$common_utils.handleCsoundStart=handleCsoundStart$$module$src$workers$common_utils;module$src$workers$common_utils.instantiateAudioPacket=instantiateAudioPacket$$module$src$workers$common_utils;module$src$workers$common_utils.renderFunction=renderFunction$$module$src$workers$common_utils;const DEFAULT_BUFFER_LEN$$module$src$constants=128,MAX_CHANNELS$$module$src$constants=32,RING_BUFFER_SIZE$$module$src$constants=16384,MIDI_BUFFER_SIZE$$module$src$constants=1024,MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants=3,CALLBACK_DATA_BUFFER_SIZE$$module$src$constants=16384,initialSharedState$$module$src$constants=[0,4096,0,0,0,0,-1,-1,-1,-1,0,DEFAULT_BUFFER_LEN$$module$src$constants,0,0,0,0,0,0,0,0],AUDIO_STATE$$module$src$constants={CSOUND_LOCK:0,FRAMES_REQUESTED:1,IS_PERFORMING:2,IS_RENDERING:3,\\nIS_PAUSED:4,STOP:5,SAMPLE_RATE:6,KSMPS:7,NCHNLS:8,NCHNLS_I:9,IS_REQUESTING_MIC:10,BUFFER_LEN:11,OUTPUT_READ_INDEX:12,OUTPUT_WRITE_INDEX:13,AVAIL_IN_BUFS:14,AVAIL_OUT_BUFS:15,IS_REQUESTING_RTMIDI:16,RTMIDI_INDEX:17,AVAIL_RTMIDI_EVENTS:18,HAS_PENDING_CALLBACKS:19},DATA_TYPE$$module$src$constants={NUMBER:0,STRING:1,FLOAT_32:2,FLOAT_64:3};var module$src$constants={};module$src$constants.AUDIO_STATE=AUDIO_STATE$$module$src$constants;module$src$constants.CALLBACK_DATA_BUFFER_SIZE=CALLBACK_DATA_BUFFER_SIZE$$module$src$constants;\\nmodule$src$constants.DATA_TYPE=DATA_TYPE$$module$src$constants;module$src$constants.DEFAULT_BUFFER_LEN=DEFAULT_BUFFER_LEN$$module$src$constants;module$src$constants.MAX_CHANNELS=MAX_CHANNELS$$module$src$constants;module$src$constants.MIDI_BUFFER_PAYLOAD_SIZE=MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants;module$src$constants.MIDI_BUFFER_SIZE=MIDI_BUFFER_SIZE$$module$src$constants;module$src$constants.RING_BUFFER_SIZE=RING_BUFFER_SIZE$$module$src$constants;module$src$constants.initialSharedState=initialSharedState$$module$src$constants;let combined$$module$src$workers$sab_worker,pollPromise$$module$src$workers$sab_worker,unlockPromise$$module$src$workers$sab_worker;\\nconst callUncloned$$module$src$workers$sab_worker=async(a,b)=>(a=combined$$module$src$workers$sab_worker.get(a))&&a.apply({},b||[]),sabCreateRealtimeAudioThread$$module$src$workers$sab_worker=({libraryCsound:a,callbacksRequest:b,releaseStop:c,releasePause:d,releaseResumed:e,wasm:f,workerMessagePort:g})=>async({audioStateBuffer:h,audioStreamIn:k,audioStreamOut:l,midiBuffer:n,csound:m})=>{const p=new Int32Array(h);initialSharedState$$module$src$constants.forEach((H,K)=>{Atomics.store(p,K,H)});h=a._isRequestingRtMidiInput(m);\\nvar q=0===Atomics.load(p,AUDIO_STATE$$module$src$constants.NCHNLS_I)&&a.csoundGetInputName(m).includes(\\\"adc\\\"),B=Atomics.load(p,AUDIO_STATE$$module$src$constants.NCHNLS),r=Atomics.load(p,AUDIO_STATE$$module$src$constants.NCHNLS_I),v=Atomics.load(p,AUDIO_STATE$$module$src$constants.SAMPLE_RATE);-1<B&&a.csoundSetOption(m,`--nchnls=${B}`);-1<r&&a.csoundSetOption(m,`--nchnls_i=${r}`);-1<v&&a.csoundSetOption(m,`--sr=${v}`);const D=a.csoundGetNchnls(m),y=r||q?a.csoundGetNchnlsInput(m):0,u=Atomics.load(p,\\nAUDIO_STATE$$module$src$constants.SAMPLE_RATE)||a.csoundGetSr(m);Atomics.store(p,AUDIO_STATE$$module$src$constants.NCHNLS,D);Atomics.store(p,AUDIO_STATE$$module$src$constants.NCHNLS_I,y);Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_REQUESTING_MIC,q?1:0);Atomics.store(p,AUDIO_STATE$$module$src$constants.SAMPLE_RATE,a.csoundGetSr(m));Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_REQUESTING_RTMIDI,h);q=a.csoundGetKsmps(m);Atomics.store(p,AUDIO_STATE$$module$src$constants.KSMPS,q);const z=\\na.csoundGet0dBFS(m);B=[];r=[];for(v=0;v<D;++v)B.push(new Float64Array(l,RING_BUFFER_SIZE$$module$src$constants*v,RING_BUFFER_SIZE$$module$src$constants));for(l=0;l<y;++l)r.push(new Float64Array(k,RING_BUFFER_SIZE$$module$src$constants*l,RING_BUFFER_SIZE$$module$src$constants));g.broadcastPlayState(\\\"realtimePerformanceStarted\\\");Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_PERFORMING,1);logSABWorker$$module$src$logger(\\\"Atomic.wait started (thread is now locked)\\\\n\\\")();k=!0;let C=0,A=0,G=0,F=\\n0,I;l=(H=!1)=>1===Atomics.load(p,AUDIO_STATE$$module$src$constants.STOP)||1!==Atomics.load(p,AUDIO_STATE$$module$src$constants.IS_PERFORMING)||0!==C||H?(0===C&&(logSABWorker$$module$src$logger(\\\"calling csoundStop and one performKsmps to trigger endof logs\\\")(),a.csoundStop(m),a.csoundPerformKsmps(m)),logSABWorker$$module$src$logger(\\\"triggering realtimePerformanceEnded event\\\")(),g.broadcastPlayState(\\\"realtimePerformanceEnded\\\"),logSABWorker$$module$src$logger(\\\"End of realtimePerformance loop!\\\")(),c(),\\n!0):!1;for(v=!0;!v||(I=Atomics.wait(p,AUDIO_STATE$$module$src$constants.CSOUND_LOCK,1,1E4));){if(\\\"timed-out\\\"===I){l(!0);break}k&&(k=!1,await new Promise(w=>{unlockPromise$$module$src$workers$sab_worker=w;g.broadcastSabUnlocked()}),logSABWorker$$module$src$logger(\\\"Atomic.wait unlocked, performance started\\\")());1===Atomics.load(p,AUDIO_STATE$$module$src$constants.IS_PAUSED)&&(await new Promise(w=>setTimeout(w,0)),d(),await new Promise(w=>setTimeout(w,0)),Atomics.wait(p,AUDIO_STATE$$module$src$constants.IS_PAUSED,\\n0),await new Promise(w=>setTimeout(w,0)),e(),await new Promise(w=>setTimeout(w,0)));if(l())break;if(h){var t=Atomics.load(p,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS);if(0<t){var E=Atomics.load(p,AUDIO_STATE$$module$src$constants.RTMIDI_INDEX),x=E;for(let w=0;w<t;w++){x=(E+MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants*w)%MIDI_BUFFER_SIZE$$module$src$constants;const J=Atomics.load(n,x),L=Atomics.load(n,x+1),M=Atomics.load(n,x+2);a.csoundPushMidiMessage(m,J,L,M)}Atomics.store(p,AUDIO_STATE$$module$src$constants.RTMIDI_INDEX,\\n(x+1)%MIDI_BUFFER_SIZE$$module$src$constants);Atomics.sub(p,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS,t)}}const H=Atomics.load(p,AUDIO_STATE$$module$src$constants.BUFFER_LEN);t=Atomics.load(p,AUDIO_STATE$$module$src$constants.AVAIL_IN_BUFS)>=H;E=a.csoundGetSpin(m);x=a.csoundGetSpout(m);const K=t&&new Float64Array(f.wasi.memory.buffer,E,q*y),N=new Float64Array(f.wasi.memory.buffer,x,q*D);E=Atomics.load(p,AUDIO_STATE$$module$src$constants.FRAMES_REQUESTED);for(x=0;x<E;x++){if(0===A)if(0===\\nC)C=a.csoundPerformKsmps(m),!v&&Atomics.add(p,AUDIO_STATE$$module$src$constants.AVAIL_OUT_BUFS,q),v=!1;else if(0!==C){Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_PERFORMING,0);l(!0);return}B.forEach((w,J)=>{w[F]=(N[A*D+J]||0)/z});t&&(r.forEach((w,J)=>{K[A*y+J]=(w[G]||0)*z}),G=t&&(G+1)%RING_BUFFER_SIZE$$module$src$constants);F=(F+1)%RING_BUFFER_SIZE$$module$src$constants;A=(A+1)%q}t&&Atomics.sub(p,AUDIO_STATE$$module$src$constants.AVAIL_IN_BUFS,E);1===Atomics.compareExchange(p,AUDIO_STATE$$module$src$constants.HAS_PENDING_CALLBACKS,\\n1,0)&&await new Promise(w=>{pollPromise$$module$src$workers$sab_worker=w;b()});if(l())break;t=Atomics.load(p,AUDIO_STATE$$module$src$constants.OUTPUT_READ_INDEX);t=Math.max(2048-(F<t?F+RING_BUFFER_SIZE$$module$src$constants-t:F-t),0);Atomics.store(p,AUDIO_STATE$$module$src$constants.FRAMES_REQUESTED,t);0===t&&await new Promise(w=>setTimeout(w,H/u*1E3))}},initMessagePort$$module$src$workers$sab_worker=({port:a})=>{const b=new $jscompDefaultExport$$module$src$utils$message_port_state;b.post=c=>a.postMessage({log:c});\\nb.broadcastPlayState=c=>a.postMessage({playStateChange:c});b.broadcastSabUnlocked=()=>a.postMessage({sabWorker:\\\"unlocked\\\"});b.ready=!0;return b},initCallbackReplyPort$$module$src$workers$sab_worker=({port:a})=>{a.addEventListener(\\\"message\\\",b=>{if(b.data&&b.data.unlock)b=unlockPromise$$module$src$workers$sab_worker,unlockPromise$$module$src$workers$sab_worker=void 0,b&&b();else{b=b.data;var c=b.reduce((d,{id:e,argumentz:f,apiKey:g})=>{try{const h=combined$$module$src$workers$sab_worker.get(g),k=h&&\\nh.apply({},f||[]);d.push({id:e,answer:k})}catch(h){throw Error(h);}return d},[]);a.postMessage(c);c=pollPromise$$module$src$workers$sab_worker;pollPromise$$module$src$workers$sab_worker=void 0;c&&c(b)}});a.start()},renderFunction$$module$src$workers$sab_worker=({libraryCsound:a,callbacksRequest:b,releaseStop:c,releasePause:d,releaseResumed:e,workerMessagePort:f})=>async({audioStateBuffer:g,csound:h})=>{g=new Int32Array(g);Atomics.store(g,AUDIO_STATE$$module$src$constants.IS_RENDERING,1);for(f.broadcastSabUnlocked();1!==\\nAtomics.load(g,AUDIO_STATE$$module$src$constants.STOP)&&0===a.csoundPerformKsmps(h);)1===Atomics.load(g,AUDIO_STATE$$module$src$constants.IS_PAUSED)&&(d(),Atomics.wait(g,AUDIO_STATE$$module$src$constants.IS_PAUSED,0),e()),1===Atomics.compareExchange(g,AUDIO_STATE$$module$src$constants.HAS_PENDING_CALLBACKS,1,0)&&await new Promise(k=>{pollPromise$$module$src$workers$sab_worker=k;b()});Atomics.store(g,AUDIO_STATE$$module$src$constants.IS_RENDERING,0);f.broadcastPlayState(\\\"renderEnded\\\");c()},initialize$$module$src$workers$sab_worker=\\nasync({wasmDataURI:a,withPlugins:b=[],messagePort:c,callbackPort:d})=>{logSABWorker$$module$src$logger(\\\"initializing SABWorker and WASM\\\")();const e=initMessagePort$$module$src$workers$sab_worker({port:c}),f=()=>d.postMessage(\\\"poll\\\"),g=()=>d.postMessage(\\\"releaseStop\\\"),h=()=>d.postMessage(\\\"releasePause\\\"),k=()=>d.postMessage(\\\"releaseResumed\\\");initCallbackReplyPort$$module$src$workers$sab_worker({port:d});const [l,n]=await $jscompDefaultExport$$module$src$module({wasmDataURI:a,withPlugins:b,messagePort:e});\\nl.wasi=n;const m=$jscompDefaultExport$$module$src$libcsound(l);a=pipe$$module$node_modules$rambda$dist$rambda_mjs(assoc$$module$node_modules$rambda$dist$rambda_mjs(\\\"csoundStart\\\",(p,q)=>handleCsoundStart$$module$src$workers$common_utils(e,m,n,sabCreateRealtimeAudioThread$$module$src$workers$sab_worker({libraryCsound:m,callbacksRequest:f,wasm:l,workerMessagePort:e,releaseStop:g,releasePause:h,releaseResumed:k}),renderFunction$$module$src$workers$sab_worker({libraryCsound:m,callbacksRequest:f,workerMessagePort:e,\\nwasi:n,releaseStop:g,releasePause:h,releaseResumed:k}))(q)),assoc$$module$node_modules$rambda$dist$rambda_mjs(\\\"wasm\\\",l))(m);combined$$module$src$workers$sab_worker=new Map(Object.entries(a));m.csoundInitialize(0);return m.csoundCreate()},sabWorker$$module$src$workers$sab_worker={initialize:initialize$$module$src$workers$sab_worker,callUncloned:callUncloned$$module$src$workers$sab_worker};\\nexpose$$module$node_modules$comlink$dist$esm$comlink_mjs({initialize:sabWorker$$module$src$workers$sab_worker.initialize,callUncloned:sabWorker$$module$src$workers$sab_worker.callUncloned});var module$src$workers$sab_worker={};module$src$workers$sab_worker.sabWorker=sabWorker$$module$src$workers$sab_worker;}).call(this);\\n//# sourceMappingURL=__compiled.sab.worker.js.map\\n\"]));","import * as Comlink from \"comlink/dist/esm/comlink.mjs\";\nimport { api as API } from \"../libcsound\";\nimport { messageEventHandler, IPCMessagePorts } from \"./messages.main\";\nimport {\n AUDIO_STATE,\n MAX_CHANNELS,\n RING_BUFFER_SIZE,\n MIDI_BUFFER_PAYLOAD_SIZE,\n MIDI_BUFFER_SIZE,\n initialSharedState,\n} from \"../constants\";\nimport { logSABMain as log } from \"../logger\";\nimport { isEmpty } from \"rambda/dist/rambda.mjs\";\nimport { csoundApiRename, fetchPlugins, makeProxyCallback, stopableStates } from \"../utils\";\nimport { EventPromises } from \"../utils/event-promises\";\nimport { PublicEventAPI } from \"../events\";\nimport SABWorker from \"../../dist/__compiled.sab.worker.inline.js\";\n\nclass SharedArrayBufferMainThread {\n constructor({\n audioContext,\n audioWorker,\n audioContextIsProvided,\n inputChannelCount,\n outputChannelCount,\n }) {\n this.hasSharedArrayBuffer = true;\n this.ipcMessagePorts = new IPCMessagePorts();\n this.eventPromises = new EventPromises();\n this.publicEvents = new PublicEventAPI(this);\n audioWorker.ipcMessagePorts = this.ipcMessagePorts;\n\n this.audioContextIsProvided = audioContextIsProvided;\n this.audioWorker = audioWorker;\n this.audioWorker.onPlayStateChange = this.audioWorker.onPlayStateChange.bind(audioWorker);\n this.csoundInstance = undefined;\n this.currentPlayState = undefined;\n this.currentDerivedPlayState = \"stop\";\n this.exportApi = {};\n\n this.callbackId = 0;\n this.callbackBuffer = {};\n\n this.audioStateBuffer = new SharedArrayBuffer(\n initialSharedState.length * Int32Array.BYTES_PER_ELEMENT,\n );\n\n this.audioStatePointer = new Int32Array(this.audioStateBuffer);\n\n if (audioContextIsProvided) {\n Atomics.store(this.audioStatePointer, AUDIO_STATE.SAMPLE_RATE, audioContext.sampleRate);\n }\n\n if (inputChannelCount) {\n Atomics.store(this.audioStatePointer, AUDIO_STATE.NCHNLS_I, inputChannelCount);\n }\n\n if (outputChannelCount) {\n Atomics.store(this.audioStatePointer, AUDIO_STATE.NCHNLS, outputChannelCount);\n }\n\n this.audioStreamIn = new SharedArrayBuffer(\n MAX_CHANNELS * RING_BUFFER_SIZE * Float64Array.BYTES_PER_ELEMENT,\n );\n this.audioStreamOut = new SharedArrayBuffer(\n MAX_CHANNELS * RING_BUFFER_SIZE * Float64Array.BYTES_PER_ELEMENT,\n );\n\n this.midiBufferSAB = new SharedArrayBuffer(\n MIDI_BUFFER_SIZE * MIDI_BUFFER_PAYLOAD_SIZE * Int32Array.BYTES_PER_ELEMENT,\n );\n\n this.midiBuffer = new Int32Array(this.midiBufferSAB);\n\n this.onPlayStateChange = this.onPlayStateChange.bind(this);\n this.prepareRealtimePerformance = this.prepareRealtimePerformance.bind(this);\n\n log(`SharedArrayBufferMainThread got constructed`)();\n }\n\n async terminateInstance() {\n if (this.csoundWorker) {\n this.csoundWorker.terminate();\n delete this.csoundWorker;\n }\n if (this.audioWorker && this.audioWorker.terminateInstance) {\n await this.audioWorker.terminateInstance();\n delete this.audioWorker.terminateInstance;\n }\n if (this.proxyPort) {\n this.proxyPort[Comlink.releaseProxy]();\n delete this.proxyPort;\n }\n if (this.publicEvents) {\n this.publicEvents.terminateInstance();\n }\n Object.keys(this.exportApi).forEach((key) => delete this.exportApi[key]);\n Object.keys(this).forEach((key) => delete this[key]);\n }\n\n get api() {\n return this.exportApi;\n }\n\n handleMidiInput({ data: [status, data1, data2] }) {\n const currentQueueLength = Atomics.load(\n this.audioStatePointer,\n AUDIO_STATE.AVAIL_RTMIDI_EVENTS,\n );\n const rtmidiBufferIndex = Atomics.load(this.audioStatePointer, AUDIO_STATE.RTMIDI_INDEX);\n const nextIndex =\n (currentQueueLength * MIDI_BUFFER_PAYLOAD_SIZE + rtmidiBufferIndex) % MIDI_BUFFER_SIZE;\n\n Atomics.store(this.midiBuffer, nextIndex, status);\n Atomics.store(this.midiBuffer, nextIndex + 1, data1);\n Atomics.store(this.midiBuffer, nextIndex + 2, data2);\n Atomics.add(this.audioStatePointer, AUDIO_STATE.AVAIL_RTMIDI_EVENTS, 1);\n }\n\n async csoundPause() {\n if (this.eventPromises.isWaiting(\"pause\")) {\n return -1;\n } else {\n this.eventPromises.createPausePromise();\n\n Atomics.store(this.audioStatePointer, AUDIO_STATE.IS_PAUSED, 1);\n await this.eventPromises.waitForPause();\n this.onPlayStateChange(\"realtimePerformancePaused\");\n return 0;\n }\n }\n\n async csoundResume() {\n if (\n Atomics.load(this.audioStatePointer, AUDIO_STATE.IS_PAUSED) === 1 &&\n Atomics.load(this.audioStatePointer, AUDIO_STATE.STOP) !== 1 &&\n Atomics.load(this.audioStatePointer, AUDIO_STATE.IS_PERFORMING) === 1\n ) {\n Atomics.store(this.audioStatePointer, AUDIO_STATE.IS_PAUSED, 0);\n Atomics.notify(this.audioStatePointer, AUDIO_STATE.IS_PAUSED);\n this.onPlayStateChange(\"realtimePerformanceResumed\");\n }\n }\n\n async onPlayStateChange(newPlayState) {\n if (this === undefined) {\n console.log(\"Failed to announce playstatechange\", newPlayState);\n return;\n }\n this.currentPlayState = newPlayState;\n if (!this.publicEvents || !newPlayState) {\n // prevent late timers from calling terminated fn\n return;\n }\n switch (newPlayState) {\n case \"realtimePerformanceStarted\": {\n log(\n `event: realtimePerformanceStarted received,` +\n ` proceeding to call prepareRealtimePerformance`,\n )();\n try {\n await this.prepareRealtimePerformance();\n } catch (error) {\n console.error(error);\n }\n break;\n }\n case \"realtimePerformanceEnded\": {\n this.eventPromises.createStopPromise();\n\n // flush out events sent during the time which the worker was stopping\n Object.values(this.callbackBuffer).forEach(({ argumentz, apiKey, resolveCallback }) =>\n this.proxyPort.callUncloned(apiKey, argumentz).then(resolveCallback),\n );\n this.callbackBuffer = {};\n log(`event: realtimePerformanceEnded received, beginning cleanup`)();\n // re-initialize SAB\n initialSharedState.forEach((value, index) => {\n Atomics.store(this.audioStatePointer, index, value);\n });\n break;\n }\n case \"renderStarted\": {\n this.publicEvents.triggerRenderStarted(this);\n this.eventPromises.releaseStartPromise();\n break;\n }\n case \"renderEnded\": {\n log(`event: renderEnded received, beginning cleanup`)();\n this.publicEvents.triggerRenderEnded(this);\n this.eventPromises && this.eventPromises.releaseStopPromise();\n break;\n }\n default: {\n break;\n }\n }\n\n // forward the message from worker to the audioWorker\n try {\n await this.audioWorker.onPlayStateChange(newPlayState);\n } catch (error) {\n console.error(error);\n }\n }\n\n async prepareRealtimePerformance() {\n log(`prepareRealtimePerformance`)();\n const outputsCount = Atomics.load(this.audioStatePointer, AUDIO_STATE.NCHNLS);\n const inputCount = Atomics.load(this.audioStatePointer, AUDIO_STATE.NCHNLS_I);\n\n this.audioWorker.isRequestingInput = Atomics.load(\n this.audioStatePointer,\n AUDIO_STATE.IS_REQUESTING_MIC,\n );\n this.audioWorker.isRequestingMidi = Atomics.load(\n this.audioStatePointer,\n AUDIO_STATE.IS_REQUESTING_RTMIDI,\n );\n\n const ksmps = Atomics.load(this.audioStatePointer, AUDIO_STATE.KSMPS);\n const sampleRate = Atomics.load(this.audioStatePointer, AUDIO_STATE.SAMPLE_RATE);\n\n this.audioWorker.ksmps = ksmps;\n this.audioWorker.sampleRate = sampleRate;\n this.audioWorker.inputCount = inputCount;\n this.audioWorker.outputsCount = outputsCount;\n }\n\n async initialize({ wasmDataURI, withPlugins }) {\n if (withPlugins && !isEmpty(withPlugins)) {\n withPlugins = await fetchPlugins(withPlugins);\n }\n\n log(`initialization: instantiate the SABWorker Thread`)();\n // clearFsLastmods();\n const csoundWorker = new Worker(SABWorker());\n this.csoundWorker = csoundWorker;\n const audioStateBuffer = this.audioStateBuffer;\n const audioStatePointer = this.audioStatePointer;\n const audioStreamIn = this.audioStreamIn;\n const audioStreamOut = this.audioStreamOut;\n const midiBuffer = this.midiBuffer;\n\n log(`providing the audioWorker a pointer to SABMain's instance`)();\n this.audioWorker.csoundWorkerMain = this;\n\n // both audio worker and csound worker use 1 handler\n // simplifies flow of data (csound main.worker is always first to receive)\n log(`adding message eventListeners for mainMessagePort and mainMessagePortAudio`)();\n this.ipcMessagePorts.mainMessagePort.addEventListener(\"message\", messageEventHandler(this));\n this.ipcMessagePorts.mainMessagePort.start();\n this.ipcMessagePorts.mainMessagePortAudio.addEventListener(\n \"message\",\n messageEventHandler(this),\n );\n this.ipcMessagePorts.mainMessagePortAudio.start();\n log(`(postMessage) making a message channel from SABMain to SABWorker via workerMessagePort`)();\n\n this.ipcMessagePorts.sabMainCallbackReply.addEventListener(\"message\", (event) => {\n switch (event.data) {\n case \"poll\": {\n this.ipcMessagePorts &&\n this.ipcMessagePorts.sabMainCallbackReply.postMessage(\n Object.keys(this.callbackBuffer).map((id) => ({\n id,\n apiKey: this.callbackBuffer[id].apiKey,\n argumentz: this.callbackBuffer[id].argumentz,\n })),\n );\n break;\n }\n case \"releaseStop\": {\n this.onPlayStateChange(\n this.currentPlayState === \"renderStarted\" ? \"renderEnded\" : \"realtimePerformanceEnded\",\n );\n this.publicEvents && this.publicEvents.triggerRealtimePerformanceEnded(this);\n this.eventPromises && this.eventPromises.releaseStopPromise();\n break;\n }\n case \"releasePause\": {\n this.publicEvents.triggerRealtimePerformancePaused(this);\n this.eventPromises.releasePausePromise();\n break;\n }\n case \"releaseResumed\": {\n this.publicEvents.triggerRealtimePerformanceResumed(this);\n this.eventPromises.releaseResumePromise();\n break;\n }\n default: {\n event.data.forEach(({ id, answer }) => {\n this.callbackBuffer[id].resolveCallback(answer);\n delete this.callbackBuffer[id];\n });\n }\n }\n });\n this.ipcMessagePorts.sabMainCallbackReply.start();\n\n const proxyPort = Comlink.wrap(csoundWorker);\n const wasmBytes = wasmDataURI();\n this.proxyPort = proxyPort;\n const csoundInstance = await proxyPort.initialize(\n Comlink.transfer(\n {\n wasmDataURI: wasmBytes,\n wasmTransformerDataURI: this.wasmTransformerDataURI,\n messagePort: this.ipcMessagePorts.workerMessagePort,\n callbackPort: this.ipcMessagePorts.sabWorkerCallbackReply,\n withPlugins,\n },\n [\n wasmBytes,\n this.ipcMessagePorts.workerMessagePort,\n this.ipcMessagePorts.sabWorkerCallbackReply,\n ],\n ),\n );\n this.csoundInstance = csoundInstance;\n\n this.ipcMessagePorts.mainMessagePort.start();\n this.ipcMessagePorts.mainMessagePortAudio.start();\n\n log(`A proxy port from SABMain to SABWorker established`)();\n\n this.exportApi.pause = this.csoundPause.bind(this);\n this.exportApi.resume = this.csoundResume.bind(this);\n this.exportApi.terminateInstance = this.terminateInstance.bind(this);\n // this.exportApi.fs = this.fs;\n\n this.exportApi.enableAudioInput = () =>\n console.warn(\n `enableAudioInput was ignored: please use -iadc option before calling start with useWorker=true`,\n );\n\n this.exportApi.getNode = async () => {\n const maybeNode = this.audioWorker.audioWorkletNode;\n if (maybeNode) {\n return maybeNode;\n } else {\n const node = await new Promise((resolve) => {\n this.exportApi.once(\"onAudioNodeCreated\", resolve);\n });\n return node;\n }\n };\n\n this.exportApi.getAudioContext = async () => this.audioWorker.audioContext;\n\n this.exportApi = this.publicEvents.decorateAPI(this.exportApi);\n\n // the default message listener\n this.exportApi.addListener(\"message\", console.log);\n\n for (const apiKey of Object.keys(API)) {\n const proxyCallback = makeProxyCallback(\n proxyPort,\n csoundInstance,\n apiKey,\n this.currentPlayState,\n );\n const reference = API[apiKey];\n\n switch (apiKey) {\n case \"csoundCreate\": {\n break;\n }\n case \"csoundStart\": {\n const csoundStart = async function () {\n if (!csoundInstance || typeof csoundInstance !== \"number\") {\n console.error(\"starting csound failed because csound instance wasn't created\");\n return -1;\n }\n if (this.eventPromises.isWaiting(\"start\")) {\n return -1;\n } else {\n this.eventPromises.createStartPromise();\n\n const startResult = await proxyCallback({\n audioStateBuffer,\n audioStreamIn,\n audioStreamOut,\n midiBuffer,\n csound: csoundInstance,\n });\n\n await this.eventPromises.waitForStart();\n\n this.ipcMessagePorts &&\n this.ipcMessagePorts.sabMainCallbackReply.postMessage({ unlock: true });\n\n return startResult;\n }\n };\n\n csoundStart.toString = () => reference.toString();\n this.exportApi.start = csoundStart.bind(this);\n break;\n }\n case \"csoundStop\": {\n const csoundStop = async () => {\n log(\n [\n \"Checking if it's safe to call stop:\",\n stopableStates.has(this.currentPlayState),\n \"currentPlayState is\",\n this.currentPlayState,\n ].join(\"\\n\"),\n )();\n if (this.eventPromises.isWaiting(\"stop\")) {\n log(\"already waiting to stop, doing nothing\")();\n return -1;\n } else if (stopableStates.has(this.currentPlayState)) {\n log(\"Marking SAB's state to STOP\")();\n\n this.eventPromises.createStopPromise();\n\n Atomics.store(this.audioStatePointer, AUDIO_STATE.STOP, 1);\n log(\"Marking that performance is not running anymore (stops the audio too)\")();\n Atomics.store(this.audioStatePointer, AUDIO_STATE.IS_PERFORMING, 0);\n\n // A potential case where the thread is locked because of pause\n if (this.currentPlayState === \"realtimePerformancePaused\") {\n Atomics.store(this.audioStatePointer, AUDIO_STATE.IS_PAUSED, 0);\n Atomics.notify(this.audioStatePointer, AUDIO_STATE.IS_PAUSED);\n }\n if (this.currentPlayState !== \"renderStarted\") {\n !Atomics.compareExchange(this.audioStatePointer, AUDIO_STATE.CSOUND_LOCK, 0, 1) &&\n Atomics.notify(this.audioStatePointer, AUDIO_STATE.CSOUND_LOCK);\n }\n await this.eventPromises.waitForStop();\n return 0;\n } else {\n return -1;\n }\n };\n this.exportApi.stop = csoundStop.bind(this);\n csoundStop.toString = () => reference.toString();\n break;\n }\n\n case \"csoundReset\": {\n const csoundReset = async () => {\n // no start = noReset\n if (!this.currentPlayState) {\n return;\n }\n\n if (this.eventPromises.isWaiting(\"reset\")) {\n return -1;\n } else {\n if (stopableStates.has(this.currentPlayState)) {\n await this.exportApi.stop();\n }\n this.ipcMessagePorts.restartAudioWorkerPorts();\n if (!this.audioContextIsProvided) {\n await this.audioWorker.terminateInstance();\n delete this.audioWorker.audioContext;\n }\n const resetResult = await proxyCallback([]);\n return resetResult;\n }\n };\n this.exportApi.reset = csoundReset.bind(this);\n csoundReset.toString = () => reference.toString();\n break;\n }\n case \"csoundPushMidiMessage\": {\n const midiMessage = async (status = 0, data1 = 0, data2 = 0) => {\n this.handleMidiInput({ data: [status, data1, data2] });\n };\n this.exportApi.midiMessage = midiMessage.bind(this);\n midiMessage.toString = () => reference.toString();\n break;\n }\n\n case \"fs\": {\n this.exportApi.fs = {};\n Object.keys(reference).forEach((method) => {\n const proxyFsCallback = makeProxyCallback(\n proxyPort,\n csoundInstance,\n method,\n this.currentPlayState,\n );\n proxyFsCallback.toString = () => reference[method].toString();\n this.exportApi.fs[method] = proxyFsCallback;\n });\n break;\n }\n\n default: {\n // avoiding deadlock by sending the IPC callback\n // while thread is unlocked\n const bufferWrappedCallback = async (...arguments_) => {\n if (\n this.currentPlayState === \"realtimePerformanceStarted\" ||\n this.currentPlayState === \"renderStarted\" ||\n this.eventPromises.isWaitingToStart()\n // startPromiz indicates that startup is in progress\n // and any events send before it's resolved are swallowed\n ) {\n const callbackId = this.callbackId;\n this.callbackId += 1;\n const returnPromise = new Promise((resolve, reject) => {\n const timeout = setTimeout(\n () =>\n reject(\n new Error(`Worker timed out so ${csoundApiRename(apiKey)}() wasn't called!`),\n ),\n 10000,\n );\n const resolveCallback = (answer) => {\n clearTimeout(timeout);\n resolve(answer);\n };\n this.callbackBuffer[callbackId] = {\n resolveCallback,\n apiKey,\n argumentz: [csoundInstance, ...arguments_],\n };\n });\n Atomics.compareExchange(audioStatePointer, AUDIO_STATE.HAS_PENDING_CALLBACKS, 0, 1);\n return await returnPromise;\n } else {\n return await proxyCallback.apply(undefined, arguments_);\n }\n };\n bufferWrappedCallback.toString = () => reference.toString();\n this.exportApi[csoundApiRename(apiKey)] = bufferWrappedCallback;\n break;\n }\n }\n }\n log(`PUBLIC API Generated and stored`)();\n }\n}\n\nexport default SharedArrayBufferMainThread;\n","import { logMidiRequest as log } from \"../logger\";\n\nexport async function requestMidi({ onMidiMessage /** function(number,number,number):void */ }) {\n log(\"requesting for web-midi connection\")();\n\n if (navigator && navigator.requestMIDIAccess) {\n try {\n const midiDevices = await navigator.requestMIDIAccess();\n\n if (midiDevices.inputs) {\n /** @type {Iterator}\n * @supress {JSC_WRONG_ARGUMENT_COUNT}\n */\n const midiInputs = midiDevices.inputs.values();\n for (let input = midiInputs.next(); input && !input.done; input = midiInputs.next()) {\n log(`Connecting midi-input: ${input.value.name || \"unkown\"}`)();\n input.value.onmidimessage = onMidiMessage;\n }\n } else {\n log(\"no midi-device detected\")();\n }\n } catch (error) {\n log(\"error while connecting web-midi: \" + error)();\n }\n } else {\n log(\"no web-midi support found, midi-input will not work!\")();\n }\n}\n","export default () => \"data:application/javascript;base64,bGV0IHNlbGYgPSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmO2dvb2cuZXhwb3J0UGF0aF89ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnNwbGl0KCIuIik7ZD1kfHxnb29nLmdsb2JhbDthWzBdaW4gZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkLmV4ZWNTY3JpcHR8fGQuZXhlY1NjcmlwdCgidmFyICIrYVswXSk7Zm9yKHZhciBlO2EubGVuZ3RoJiYoZT1hLnNoaWZ0KCkpOylpZihhLmxlbmd0aHx8dm9pZCAwPT09YilkPWRbZV0mJmRbZV0hPT1PYmplY3QucHJvdG90eXBlW2VdP2RbZV06ZFtlXT17fTtlbHNlIGlmKCFjJiZnb29nLmlzT2JqZWN0KGIpJiZnb29nLmlzT2JqZWN0KGRbZV0pKWZvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJihkW2VdW2ZdPWJbZl0pO2Vsc2UgZFtlXT1ifTsKZ29vZy5kZWZpbmU9ZnVuY3Rpb24oYSxiKXtpZighQ09NUElMRUQpe3ZhciBjPWdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTLGQ9Z29vZy5nbG9iYWwuQ0xPU1VSRV9ERUZJTkVTO2MmJnZvaWQgMD09PWMubm9kZVR5cGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpP2I9Y1thXTpkJiZ2b2lkIDA9PT1kLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxhKSYmKGI9ZFthXSl9cmV0dXJuIGJ9O2dvb2cuRkVBVFVSRVNFVF9ZRUFSPTIwMjA7Z29vZy5ERUJVRz0hMDtnb29nLkxPQ0FMRT0iZW4iO2dvb2cuZ2V0TG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuTE9DQUxFfTtnb29nLlRSVVNURURfU0lURT0hMDtnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRztnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITE7Cmdvb2cucHJvdmlkZT1mdW5jdGlvbihhKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuIik7aWYoIUNPTVBJTEVEJiZnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhhKX07Z29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGEsYixjKXtpZighQ09NUElMRUQpe2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV07Zm9yKHZhciBkPWE7KGQ9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIuIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGQpOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZF09ITB9Z29vZy5leHBvcnRQYXRoXyhhLGIsYyl9O2dvb2cuTk9OQ0VfUEFUVEVSTl89L15bXHcrL18tXStbPV17MCwyfSQvOwpnb29nLmdldFNjcmlwdE5vbmNlXz1mdW5jdGlvbihhKXthPShhfHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yJiZhLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKSkmJihhPWEubm9uY2V8fGEuZ2V0QXR0cmlidXRlKCJub25jZSIpKSYmZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KGEpP2E6IiJ9O2dvb2cuVkFMSURfTU9EVUxFX1JFXz0vXlthLXpBLVpfJF1bYS16QS1aMC05Ll8kXSokLzsKZ29vZy5tb2R1bGU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPT10eXBlb2YgYXx8IWF8fC0xPT1hLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pKXRocm93IEVycm9yKCJJbnZhbGlkIG1vZHVsZSBpZGVudGlmaWVyIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoIk1vZHVsZSAiK2ErIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS4iKTtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLiIpOwpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lPWE7aWYoIUNPTVBJTEVEKXtpZihnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV19fTtnb29nLm1vZHVsZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cubW9kdWxlLmdldEludGVybmFsXyhhKX07Z29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXJldHVybiBnb29nLmxvYWRlZE1vZHVsZXNfW2FdLmV4cG9ydHM7aWYoIWdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1thXSlyZXR1cm4gYT1nb29nLmdldE9iamVjdEJ5TmFtZShhKSxudWxsIT1hP2E6bnVsbH1yZXR1cm4gbnVsbH07Z29vZy5Nb2R1bGVUeXBlPXtFUzY6ImVzNiIsR09PRzoiZ29vZyJ9O2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7Cmdvb2cuaXNJbk1vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKXx8Z29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXygpfTtnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe3JldHVybiEhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5HT09HfTtnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5FUzYpcmV0dXJuITA7dmFyIGE9Z29vZy5nbG9iYWwuJGpzY29tcDtyZXR1cm4gYT8iZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRDdXJyZW50TW9kdWxlUGF0aD8hMTohIWEuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTohMX07Cmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ZnVuY3Rpb24oKXtpZighQ09NUElMRUQmJiFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGUiKTtpZighQ09NUElMRUQmJiFnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlLiIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9Owpnb29nLmRlY2xhcmVNb2R1bGVJZD1mdW5jdGlvbihhKXtpZighQ09NUElMRUQpe2lmKCFnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuIik7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGV4aXN0cy4nKTt9aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8pZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZT1hO2Vsc2V7dmFyIGI9Z29vZy5nbG9iYWwuJGpzY29tcDtpZighYnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGIuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSAiJysKYSsnIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuJyk7Yj1iLnJlcXVpcmUoYi5nZXRDdXJyZW50TW9kdWxlUGF0aCgpKTtnb29nLmxvYWRlZE1vZHVsZXNfW2FdPXtleHBvcnRzOmIsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmF9fX07Z29vZy5zZXRUZXN0T25seT1mdW5jdGlvbihhKXtpZihnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFKXRocm93IGE9YXx8IiIsRXJyb3IoIkltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCIrKGE/IjogIithOiIuIikpO307Z29vZy5mb3J3YXJkRGVjbGFyZT1mdW5jdGlvbihhKXt9O0NPTVBJTEVEfHwoZ29vZy5pc1Byb3ZpZGVkXz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNffHwhZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2FdJiZudWxsIT1nb29nLmdldE9iamVjdEJ5TmFtZShhKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXsiZ29vZy5tb2R1bGUiOiEwfSk7Cmdvb2cuZ2V0T2JqZWN0QnlOYW1lPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxnb29nLmdsb2JhbDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sbnVsbD09YilyZXR1cm4gbnVsbDtyZXR1cm4gYn07Z29vZy5hZGREZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQpeyFDT01QSUxFRCYmZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCYmZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShhLGIsYyxkKX07Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSPSEwO2dvb2cubG9nVG9Db25zb2xlXz1mdW5jdGlvbihhKXtnb29nLmdsb2JhbC5jb25zb2xlJiZnb29nLmdsb2JhbC5jb25zb2xlLmVycm9yKGEpfTsKZ29vZy5yZXF1aXJlPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSJiZnb29nLmRlYnVnTG9hZGVyXy5yZXF1ZXN0ZWQoYSk7aWYoZ29vZy5pc1Byb3ZpZGVkXyhhKSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXJldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oYSl9ZWxzZSBpZihnb29nLkVOQUJMRV9ERUJVR19MT0FERVIpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7dHJ5e2dvb2cuZGVidWdMb2FkZXJfLmxvYWRfKGEpfWZpbmFsbHl7Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89Yn19cmV0dXJuIG51bGx9fTtnb29nLnJlcXVpcmVUeXBlPWZ1bmN0aW9uKGEpe3JldHVybnt9fTtnb29nLmJhc2VQYXRoPSIiO2dvb2cuYWJzdHJhY3RNZXRob2Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigidW5pbXBsZW1lbnRlZCBhYnN0cmFjdCBtZXRob2QiKTt9Owpnb29nLmFkZFNpbmdsZXRvbkdldHRlcj1mdW5jdGlvbihhKXthLmluc3RhbmNlXz12b2lkIDA7YS5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe2lmKGEuaW5zdGFuY2VfKXJldHVybiBhLmluc3RhbmNlXztnb29nLkRFQlVHJiYoZ29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zX1tnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfLmxlbmd0aF09YSk7cmV0dXJuIGEuaW5zdGFuY2VfPW5ldyBhfX07Z29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zXz1bXTtnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUw9ITA7Z29vZy5TRUFMX01PRFVMRV9FWFBPUlRTPWdvb2cuREVCVUc7Z29vZy5sb2FkZWRNb2R1bGVzXz17fTtnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEPSFDT01QSUxFRCYmZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSO2dvb2cuVFJBTlNQSUxFPSJkZXRlY3QiO2dvb2cuQVNTVU1FX0VTX01PRFVMRVNfVFJBTlNQSUxFRD0hMTtnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU9Imdvb2ciOwpnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbDsKZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZToiIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExLHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkdPT0d9O3ZhciBjPXt9LGQ9YztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpZD1hLmNhbGwodm9pZCAwLGQpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSlkPWdvb2cubG9hZE1vZHVsZUZyb21Tb3VyY2VfLmNhbGwodm9pZCAwLGQsYSk7ZWxzZSB0aHJvdyBFcnJvcigiSW52YWxpZCBtb2R1bGUgZGVmaW5pdGlvbiIpO3ZhciBlPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7aWYoInN0cmluZyI9PT10eXBlb2YgZSYmZSlnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlLGQsYyE9PWQpOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmCk9iamVjdC5zZWFsJiYib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJk9iamVjdC5zZWFsKGQpLGdvb2cubG9hZGVkTW9kdWxlc19bZV09e2V4cG9ydHM6ZCx0eXBlOmdvb2cuTW9kdWxlVHlwZS5HT09HLG1vZHVsZUlkOmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWV9O2Vsc2UgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIG5hbWUgIicrZSsnIicpO31maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPWJ9fTtnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhLGIpe2V2YWwoZ29vZy5DTE9TVVJFX0VWQUxfUFJFRklMVEVSXy5jcmVhdGVTY3JpcHQoYikpO3JldHVybiBhfTtnb29nLm5vcm1hbGl6ZVBhdGhfPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLyIpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KSIuIj09YVtiXT9hLnNwbGljZShiLDEpOmImJiIuLiI9PWFbYl0mJmFbYi0xXSYmIi4uIiE9YVtiLTFdP2Euc3BsaWNlKC0tYiwyKTpiKys7cmV0dXJuIGEuam9pbigiLyIpfTsKZ29vZy5sb2FkRmlsZVN5bmNfPWZ1bmN0aW9uKGEpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMpcmV0dXJuIGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMoYSk7dHJ5e3ZhciBiPW5ldyBnb29nLmdsb2JhbC5YTUxIdHRwUmVxdWVzdDtiLm9wZW4oImdldCIsYSwhMSk7Yi5zZW5kKCk7cmV0dXJuIDA9PWIuc3RhdHVzfHwyMDA9PWIuc3RhdHVzP2IucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtnb29nLnR5cGVPZj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0IiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtnb29nLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO3JldHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RofTsKZ29vZy5pc0RhdGVMaWtlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmlzT2JqZWN0KGEpJiYiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRGdWxsWWVhcn07Z29vZy5pc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0Ij09YiYmbnVsbCE9YXx8ImZ1bmN0aW9uIj09Yn07Z29vZy5nZXRVaWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGdvb2cuVUlEX1BST1BFUlRZXykmJmFbZ29vZy5VSURfUFJPUEVSVFlfXXx8KGFbZ29vZy5VSURfUFJPUEVSVFlfXT0rK2dvb2cudWlkQ291bnRlcl8pfTtnb29nLmhhc1VpZD1mdW5jdGlvbihhKXtyZXR1cm4hIWFbZ29vZy5VSURfUFJPUEVSVFlfXX07Z29vZy5yZW1vdmVVaWQ9ZnVuY3Rpb24oYSl7bnVsbCE9PWEmJiJyZW1vdmVBdHRyaWJ1dGUiaW4gYSYmYS5yZW1vdmVBdHRyaWJ1dGUoZ29vZy5VSURfUFJPUEVSVFlfKTt0cnl7ZGVsZXRlIGFbZ29vZy5VSURfUFJPUEVSVFlfXX1jYXRjaChiKXt9fTsKZ29vZy5VSURfUFJPUEVSVFlfPSJjbG9zdXJlX3VpZF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO2dvb2cudWlkQ291bnRlcl89MDtnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO2lmKCJvYmplY3QiPT1ifHwiYXJyYXkiPT1iKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEuY2xvbmUpcmV0dXJuIGEuY2xvbmUoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBNYXAmJmEgaW5zdGFuY2VvZiBNYXApcmV0dXJuIG5ldyBNYXAoYSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZhIGluc3RhbmNlb2YgU2V0KXJldHVybiBuZXcgU2V0KGEpO2I9ImFycmF5Ij09Yj9bXTp7fTtmb3IodmFyIGMgaW4gYSliW2NdPWdvb2cuY2xvbmVPYmplY3QoYVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGF9O2dvb2cuYmluZE5hdGl2ZV89ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9Owpnb29nLmJpbmRKc189ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O2dvb2cuYmluZD1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIik/Z29vZy5iaW5kPWdvb2cuYmluZE5hdGl2ZV86Z29vZy5iaW5kPWdvb2cuYmluZEpzXztyZXR1cm4gZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Cmdvb2cucGFydGlhbD1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Z29vZy5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07Z29vZy5nbG9iYWxFdmFsPWZ1bmN0aW9uKGEpeygwLGV2YWwpKGEpfTsKZ29vZy5nZXRDc3NOYW1lPWZ1bmN0aW9uKGEsYil7aWYoIi4iPT1TdHJpbmcoYSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4gWW91IHBhc3NlZDogJythKTt2YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bZV18fGV9LGQ9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCItIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoO2crKylmLnB1c2goYyhlW2ddKSk7cmV0dXJuIGYuam9pbigiLSIpfTtkPWdvb2cuY3NzTmFtZU1hcHBpbmdfPyJCWV9XSE9MRSI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/YzpkOmZ1bmN0aW9uKGUpe3JldHVybiBlfTthPWI/YSsiLSIrZChiKTpkKGEpO3JldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTj9nb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTihhKTphfTsKZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihhLGIpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWE7Z29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz1ifTshQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyk7Z29vZy5HZXRNc2dPcHRpb25zPWZ1bmN0aW9uKCl7fTsKZ29vZy5nZXRNc2c9ZnVuY3Rpb24oYSxiLGMpe2MmJmMuaHRtbCYmKGE9YS5yZXBsYWNlKC88L2csIiZsdDsiKSk7YyYmYy51bmVzY2FwZUh0bWxFbnRpdGllcyYmKGE9YS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyZxdW90Oy9nLCciJykucmVwbGFjZSgvJmFtcDsvZywiJiIpKTtiJiYoYT1hLnJlcGxhY2UoL1x7XCQoW159XSspfS9nLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIG51bGwhPWImJmUgaW4gYj9iW2VdOmR9KSk7cmV0dXJuIGF9O2dvb2cuZ2V0TXNnV2l0aEZhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZXhwb3J0U3ltYm9sPWZ1bmN0aW9uKGEsYixjKXtnb29nLmV4cG9ydFBhdGhfKGEsYiwhMCxjKX07Z29vZy5leHBvcnRQcm9wZXJ0eT1mdW5jdGlvbihhLGIsYyl7YVtiXT1jfTsKZ29vZy5pbmhlcml0cz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5zdXBlckNsYXNzXz1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuYmFzZT1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O2dvb2cuc2NvcGU9ZnVuY3Rpb24oYSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLiIpO2EuY2FsbChnb29nLmdsb2JhbCl9O0NPTVBJTEVEfHwoZ29vZy5nbG9iYWwuQ09NUElMRUQ9Q09NUElMRUQpOwpnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jb25zdHJ1Y3RvcixkPWIuc3RhdGljcztjJiZjIT1PYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yfHwoYz1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4iKTt9KTtjPWdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXyhjLGEpO2EmJmdvb2cuaW5oZXJpdHMoYyxhKTtkZWxldGUgYi5jb25zdHJ1Y3RvcjtkZWxldGUgYi5zdGF0aWNzO2dvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjLnByb3RvdHlwZSxiKTtudWxsIT1kJiYoZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoYyk6Z29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGMsZCkpO3JldHVybiBjfTtnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTPWdvb2cuREVCVUc7Cmdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTP2Z1bmN0aW9uKCl7dmFyIGM9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7Y1tnb29nLlVJRF9QUk9QRVJUWV9dPWNbZ29vZy5VSURfUFJPUEVSVFlfXTtyZXR1cm4gY306YX07Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU189ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYykmJihhW2NdPWJbY10pO2Zvcih2YXIgZD0wO2Q8Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO2QrKyljPWdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2RdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGMpJiYoYVtjXT1iW2NdKX07Z29vZy5pZGVudGl0eV89ZnVuY3Rpb24oYSl7cmV0dXJuIGF9Owpnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzO2lmKCFjfHwhYy5jcmVhdGVQb2xpY3kpcmV0dXJuIGI7dHJ5e2I9Yy5jcmVhdGVQb2xpY3koYSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlffSl9Y2F0Y2goZCl7Z29vZy5sb2dUb0NvbnNvbGVfKGQubWVzc2FnZSl9cmV0dXJuIGJ9OwohQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmlzRWRnZV89ZnVuY3Rpb24oKXtyZXR1cm4hIShnb29nLmdsb2JhbC5uYXZpZ2F0b3ImJmdvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ/Z29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudDoiIikubWF0Y2goL0VkZ2VcLyhcZCspKFwuXGQpKi9pKX0sZ29vZy5pbkh0bWxEb2N1bWVudF89ZnVuY3Rpb24oKXt2YXIgYT1nb29nLmdsb2JhbC5kb2N1bWVudDtyZXR1cm4gbnVsbCE9YSYmIndyaXRlImluIGF9LGdvb2cuaXNEb2N1bWVudExvYWRpbmdfPWZ1bmN0aW9uKCl7dmFyIGE9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7cmV0dXJuIGEuYXR0YWNoRXZlbnQ/ImNvbXBsZXRlIiE9YS5yZWFkeVN0YXRlOiJsb2FkaW5nIj09YS5yZWFkeVN0YXRlfSxnb29nLmZpbmRCYXNlUGF0aF89ZnVuY3Rpb24oKXtpZih2b2lkIDAhPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIJiYic3RyaW5nIj09PXR5cGVvZiBnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSClnb29nLmJhc2VQYXRoPQpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50LGI9YS5jdXJyZW50U2NyaXB0O2E9Yj9bYl06YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiU0NSSVBUIik7Zm9yKGI9YS5sZW5ndGgtMTswPD1iOy0tYil7dmFyIGM9YVtiXS5zcmMsZD1jLmxhc3RJbmRleE9mKCI/Iik7ZD0tMT09ZD9jLmxlbmd0aDpkO2lmKCJiYXNlLmpzIj09Yy5zbGljZShkLTcsZCkpe2dvb2cuYmFzZVBhdGg9Yy5zbGljZSgwLGQtNyk7YnJlYWt9fX19LGdvb2cuZmluZEJhc2VQYXRoXygpLGdvb2cucHJvdGVjdFNjcmlwdFRhZ189ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvPFwvKFNDUklQVCkvaWcsIlxceDNjLyQxIil9LGdvb2cuRGVidWdMb2FkZXJfPWZ1bmN0aW9uKCl7dGhpcy5kZXBlbmRlbmNpZXNfPXt9O3RoaXMuaWRUb1BhdGhfPXt9O3RoaXMud3JpdHRlbl89e307dGhpcy5sb2FkaW5nRGVwc189CltdO3RoaXMuZGVwc1RvTG9hZF89W107dGhpcy5wYXVzZWRfPSExO3RoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3Rvcnk7dGhpcy5kZWZlcnJlZENhbGxiYWNrc189e307dGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtkJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChkLDApLGQ9bnVsbCl9dmFyIGQ9YjtpZihhLmxlbmd0aCl7Yj1bXTtmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGFbZV0pO2lmKCFmKXRocm93IEVycm9yKCJVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICIrYVtlXSk7Yi5wdXNoKHRoaXMuZGVwZW5kZW5jaWVzX1tmXSl9Zj1nb29nLnJlcXVpcmU7dmFyIGc9MDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKWYoYVtlXSksYltlXS5vbkxvYWQoZnVuY3Rpb24oKXsrK2c9PWEubGVuZ3RoJiZjKCl9KX1lbHNlIGMoKX0sCmdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCsiZGVwcy5qcyIpLCJkZXBzLmpzIixbXSxbXSx7fSkpO3RoaXMubG9hZERlcHNfKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5yZXF1ZXN0ZWQ9ZnVuY3Rpb24oYSxiKXsoYT10aGlzLmdldFBhdGhGcm9tRGVwc18oYSkpJiYoYnx8dGhpcy5hcmVEZXBzTG9hZGVkXyh0aGlzLmRlcGVuZGVuY2llc19bYV0ucmVxdWlyZXMpKSYmKGI9dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bYV0pJiYoZGVsZXRlIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2FdLGIoKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5zZXREZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihhKXt0aGlzLmZhY3RvcnlfPWF9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkXz0KZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRQYXRoRnJvbURlcHNfKGEpKXt2YXIgYj10aGlzLGM9W10sZD1mdW5jdGlvbihlKXt2YXIgZj1iLmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIWYpdGhyb3cgRXJyb3IoIkJhZCBkZXBlbmRlbmN5IHBhdGggb3Igc3ltYm9sOiAiK2UpO2lmKCFiLndyaXR0ZW5fW2ZdKXtiLndyaXR0ZW5fW2ZdPSEwO2U9Yi5kZXBlbmRlbmNpZXNfW2ZdO2ZvcihmPTA7ZjxlLnJlcXVpcmVzLmxlbmd0aDtmKyspZ29vZy5pc1Byb3ZpZGVkXyhlLnJlcXVpcmVzW2ZdKXx8ZChlLnJlcXVpcmVzW2ZdKTtjLnB1c2goZSl9fTtkKGEpO2E9ISF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aDt0aGlzLmRlcHNUb0xvYWRfPXRoaXMuZGVwc1RvTG9hZF8uY29uY2F0KGMpO3RoaXMucGF1c2VkX3x8YXx8dGhpcy5sb2FkRGVwc18oKX1lbHNlIGdvb2cubG9nVG9Db25zb2xlXygiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAiK2EpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPQpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9dGhpcy5wYXVzZWRfO3RoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoJiYhYjspKGZ1bmN0aW9uKCl7dmFyIGM9ITEsZD1hLmRlcHNUb0xvYWRfLnNoaWZ0KCksZT0hMTthLmxvYWRpbmdfKGQpO3ZhciBmPXtwYXVzZTpmdW5jdGlvbigpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7Yj0hMH0scmVzdW1lOmZ1bmN0aW9uKCl7Yz9hLnJlc3VtZV8oKTpiPSExfSxsb2FkZWQ6ZnVuY3Rpb24oKXtpZihlKXRocm93IEVycm9yKCJEb3VibGUgY2FsbCB0byBsb2FkZWQuIik7ZT0hMDthLmxvYWRlZF8oZCl9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIGc9W10saD0wO2g8YS5sb2FkaW5nRGVwc18ubGVuZ3RoO2grKylnLnB1c2goYS5sb2FkaW5nRGVwc19baF0pO3JldHVybiBnfSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihnKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTpnLAptb2R1bGVOYW1lOiIiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITF9fSxyZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoLGwpe2wmJihnb29nLmxvYWRlZE1vZHVsZXNfW2xdPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmx8fCIifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoKXtnb29nLmxvYWRlZE1vZHVsZXNfW2ddPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKGcpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciB3aXRoIGRlZmVyIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7YS5kZWZlcl8oZCxnKX0sYXJlRGVwc0xvYWRlZDpmdW5jdGlvbigpe3JldHVybiBhLmFyZURlcHNMb2FkZWRfKGQucmVxdWlyZXMpfX07CnRyeXtkLmxvYWQoZil9ZmluYWxseXtjPSEwfX0pKCk7YiYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihhKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGEpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDtiKyspaWYodGhpcy5sb2FkaW5nRGVwc19bYl09PWEpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZShiLDEpO2JyZWFrfWZvcihiPTA7Yjx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDtiKyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1tiXT09CmEucGF0aCl7dGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoYiwxKTticmVha31pZih0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg9PXRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoJiYhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgpZm9yKDt0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDspdGhpcy5yZXF1ZXN0ZWQodGhpcy5kZWZlcnJlZFF1ZXVlXy5zaGlmdCgpLCEwKTthLmxvYWRlZCgpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZF89ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhhW2JdKTtpZighY3x8IShjIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NffHxnb29nLmlzUHJvdmlkZWRfKGFbYl0pKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW4gdGhpcy5pZFRvUGF0aF8/CnRoaXMuaWRUb1BhdGhfW2FdOmEgaW4gdGhpcy5kZXBlbmRlbmNpZXNfP2E6bnVsbH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmRlZmVyXz1mdW5jdGlvbihhLGIpe3RoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2EucGF0aF09Yjt0aGlzLmRlZmVycmVkUXVldWVfLnB1c2goYS5wYXRoKX0sZ29vZy5Mb2FkQ29udHJvbGxlcj1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wZW5kaW5nPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuc2V0TW9kdWxlU3RhdGU9CmZ1bmN0aW9uKGEpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJNb2R1bGVTdGF0ZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24oYSl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkRlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnBhdGg9YTt0aGlzLnJlbGF0aXZlUGF0aD1iO3RoaXMucHJvdmlkZXM9Yzt0aGlzLnJlcXVpcmVzPWQ7dGhpcy5sb2FkRmxhZ3M9ZTt0aGlzLmxvYWRlZF89ITE7dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucGF0aCxiPWEuaW5kZXhPZigiOi8vIik7MDw9YiYmKGE9YS5zdWJzdHJpbmcoYiszKSxiPWEuaW5kZXhPZigiLyIpLDA8PWImJihhPWEuc3Vic3RyaW5nKGIrMSkpKTtyZXR1cm4gYX0sCmdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKGEpe3RoaXMubG9hZGVkXz9hKCk6dGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGEpfSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3RoaXMubG9hZGVkXz0hMDt2YXIgYT10aGlzLmxvYWRDYWxsYmFja3NfO3RoaXMubG9hZENhbGxiYWNrc189W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspYVtiXSgpfSxnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSExLGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF89e30sZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzIpO2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYl09YTtyZXR1cm4gYn0sZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oYSl7ZGVsZXRlIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYV19LApnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfPWZ1bmN0aW9uKGEsYil7aWYoYSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKXtmb3IodmFyIGM9Z29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1thXSxkPVtdLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWQucHVzaChhcmd1bWVudHNbZV0pO2MuYXBwbHkodm9pZCAwLGQpfWVsc2UgdGhyb3cgRXJyb3IoIkNhbGxiYWNrIGtleSAiK2ErIiBkb2VzIG5vdCBleGlzdCAod2FzIGJhc2UuanMgbG9hZGVkIG1vcmUgdGhhbiBvbmNlPykuIik7fSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpP2EubG9hZGVkKCk6YS5wYXVzZSgpO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGI9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7aWYoImNvbXBsZXRlIj09CmIucmVhZHlTdGF0ZSYmIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyl7aWYoL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSl7YS5sb2FkZWQoKTtyZXR1cm59dGhyb3cgRXJyb3IoJ0Nhbm5vdCB3cml0ZSAiJyt0aGlzLnBhdGgrJyIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpO312YXIgYz1nb29nLmdldFNjcmlwdE5vbmNlXygpO2lmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBkPWZ1bmN0aW9uKGgpe2gucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9aC5yZWFkeVN0YXRlP2gub25sb2FkPWQ6KGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGUpLGEubG9hZGVkKCkpfTt2YXIgZT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZCk7Yz1jPycgbm9uY2U9IicrYysnIic6IiI7dmFyIGY9JzxzY3JpcHQgc3JjPSInK3RoaXMucGF0aCsnIicrCmMrKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8/IiBkZWZlciI6IiIpKycgaWQ9InNjcmlwdC0nK2UrJyI+XHgzYy9zY3JpcHQ+JztmKz0iPHNjcmlwdCIrYysiPiI7Zj1nb29nLkRlcGVuZGVuY3kuZGVmZXJfP2YrKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NyaXB0LSIrZSsiJykub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgdGhpcyk7XG59O1xuIik6ZisoImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjcmlwdC0iK2UrIicpKTsiKTtmKz0iXHgzYy9zY3JpcHQ+IjtiLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoZik6Zil9ZWxzZXt2YXIgZz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2cuZGVmZXI9Z29vZy5EZXBlbmRlbmN5LmRlZmVyXztnLmFzeW5jPSExO2MmJihnLm5vbmNlPQpjKTtnLm9ubG9hZD1mdW5jdGlvbigpe2cub25sb2FkPW51bGw7YS5sb2FkZWQoKX07Zy5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoO2IuaGVhZC5hcHBlbmRDaGlsZChnKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oIkNhbm5vdCB1c2UgZGVmYXVsdCBkZWJ1ZyBsb2FkZXIgb3V0c2lkZSBvZiBIVE1MIGRvY3VtZW50cy4iKSwiZGVwcy5qcyI9PXRoaXMucmVsYXRpdmVQYXRoPyhnb29nLmxvZ1RvQ29uc29sZV8oIkNvbnNpZGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBUIGJlZm9yZSBsb2FkaW5nIGJhc2UuanMsIG9yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuIiksYS5sb2FkZWQoKSk6YS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGEsCmIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLkRlcGVuZGVuY3kpLGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGssbSl7dmFyIG49IiIscD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuPScgbm9uY2U9IicrcCsnIicpO2s9bT8nPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luJytuKyI+IittKyJceDNjL3NjcmlwdD4iOic8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInK2srJyInK24rIj5ceDNjL3NjcmlwdD4iO2Qud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChrKTprKX1mdW5jdGlvbiBjKGssbSl7dmFyIG49ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLmRlZmVyPSEwO24uYXN5bmM9ITE7bi50eXBlPSJtb2R1bGUiO24uc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsCiEwKTt2YXIgcD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuLm5vbmNlPXApO20/bi50ZXh0PWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdChtKTptOm4uc3JjPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTChrKTprO2QuaGVhZC5hcHBlbmRDaGlsZChuKX1pZihnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCk/YS5sb2FkZWQoKTphLnBhdXNlKCk7ZWxzZSBpZihnb29nLmluSHRtbERvY3VtZW50XygpKXt2YXIgZD1nb29nLmdsb2JhbC5kb2N1bWVudCxlPXRoaXM7aWYoZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSl7dmFyIGY9Yjtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2UgZj1jO3ZhciBnPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGcpOwphLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSk7Zih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrZysnIiknKTtmKHRoaXMucGF0aCx2b2lkIDApO3ZhciBoPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihrKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhoKTthLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyhlLnBhdGgsayxnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKX0pO2Yodm9pZCAwLCdpbXBvcnQgKiBhcyBtIGZyb20gIicrdGhpcy5wYXRoKyciOyBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInK2grJyIsIG0pJyk7dmFyIGw9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18obCk7YS5jbGVhck1vZHVsZVN0YXRlKCk7YS5sb2FkZWQoKX0pO2Yodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInKwpsKyciKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuIiksYS5wYXVzZSgpfSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe2dvb2cuRGVwZW5kZW5jeS5jYWxsKHRoaXMsYSxiLGMsZCxlKTt0aGlzLmNvbnRlbnRzXz1udWxsO3RoaXMubGF6eUZldGNoXz0hZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8ISgibm9Nb2R1bGUiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2UuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhlLnBhdGgpO2UuY29udGVudHNfJiYoZS5jb250ZW50c189CmUudHJhbnNmb3JtKGUuY29udGVudHNfKSxlLmNvbnRlbnRzXyYmKGUuY29udGVudHNfKz0iXG4vLyMgc291cmNlVVJMPSIrZS5wYXRoKSl9ZnVuY3Rpb24gYygpe2UubGF6eUZldGNoXyYmYigpO2lmKGUuY29udGVudHNfKXtmJiZhLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpO3RyeXt2YXIgaz1lLmNvbnRlbnRzXztlLmNvbnRlbnRzXz1udWxsO2dvb2cuZ2xvYmFsRXZhbChnb29nLkNMT1NVUkVfRVZBTF9QUkVGSUxURVJfLmNyZWF0ZVNjcmlwdChrKSk7aWYoZil2YXIgbT1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfWZpbmFsbHl7ZiYmYS5jbGVhck1vZHVsZVN0YXRlKCl9ZiYmZ29vZy5nbG9iYWwuJGpzY29tcC5yZXF1aXJlLmVuc3VyZShbZS5nZXRQYXRoTmFtZSgpXSxmdW5jdGlvbigpe2EucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKGUucGF0aCxnb29nLmdsb2JhbC4kanNjb21wLnJlcXVpcmUoZS5nZXRQYXRoTmFtZSgpKSxtKX0pO2EubG9hZGVkKCl9fQpmdW5jdGlvbiBkKCl7dmFyIGs9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhtKTtjKCl9KSxuPWdvb2cuZ2V0U2NyaXB0Tm9uY2VfKCk7bj0iPHNjcmlwdCIrKG4/JyBub25jZT0iJytuKyciJzoiIikrIj4iK2dvb2cucHJvdGVjdFNjcmlwdFRhZ18oJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrbSsnIik7JykrIlx4M2Mvc2NyaXB0PiI7ay53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKG4pOm4pfXZhciBlPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWIoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCIiLHRoaXMuY29udGVudHNfKT8odGhpcy5jb250ZW50c189bnVsbCxhLmxvYWRlZCgpKToKYS5wYXVzZSgpO2Vsc2V7dmFyIGY9dGhpcy5sb2FkRmxhZ3MubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuRVM2O3RoaXMubGF6eUZldGNoX3x8YigpO3ZhciBnPTE8YS5wZW5kaW5nKCkubGVuZ3RoO2lmKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8mJihnfHxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSlhLmRlZmVyKGZ1bmN0aW9uKCl7YygpfSk7ZWxzZXt2YXIgaD1nb29nLmdsb2JhbC5kb2N1bWVudDtnPWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJigiQWN0aXZlWE9iamVjdCJpbiBnb29nLmdsb2JhbHx8Z29vZy5pc0VkZ2VfKCkpO2lmKGYmJmdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkmJiFnKXtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwO2EucGF1c2UoKTt2YXIgbD1oLm9ucmVhZHlzdGF0ZWNoYW5nZTtoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJpbnRlcmFjdGl2ZSI9PWgucmVhZHlTdGF0ZSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPQpsLGMoKSxhLnJlc3VtZSgpKTsiZnVuY3Rpb24iPT09dHlwZW9mIGwmJmwuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWVsc2UgZ29vZy5pbkh0bWxEb2N1bWVudF8oKSYmZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKT9kKCk6YygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYSl7fSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQsZSl7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGEsYixjLGQsZSl9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYiwKYyxkLGUpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxhLGIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZ2b2lkIDAhPT1nb29nLmdsb2JhbC5KU09OPyJnb29nLmxvYWRNb2R1bGUoIitnb29nLmdsb2JhbC5KU09OLnN0cmluZ2lmeShhKyJcbi8vIyBzb3VyY2VVUkw9Iit0aGlzLnBhdGgrIlxuIikrIik7IjonZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsidXNlIHN0cmljdCI7JythKyJcbjtyZXR1cm4gZXhwb3J0c30pO1xuLy8jIHNvdXJjZVVSTD0iK3RoaXMucGF0aCsiXG4ifSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkKXtiPQpifHxbXTthPWEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBlPWdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCthKTtkJiYiYm9vbGVhbiIhPT10eXBlb2YgZHx8KGQ9ZD97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSk7Yz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koZSxhLGIsYyxkKTt0aGlzLmRlcGVuZGVuY2llc19bZV09Yztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuaWRUb1BhdGhfW2JbY11dPWU7dGhpcy5pZFRvUGF0aF9bYV09ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBlLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkdPT0c/bmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koYSxiLGMsZCxlKTplLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNj9nb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ/Cm5ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGEsYixjLGQsZSk6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShhLGIsYyxkLGUpOm5ldyBnb29nLkRlcGVuZGVuY3koYSxiLGMsZCxlKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oYSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoYSl9LGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrIiNiYXNlIik6bnVsbCxnb29nLmdsb2JhbC5DTE9TVVJFX05PX0RFUFN8fGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpLApnb29nLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2dvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChhLGIpfSk7aWYoIUNPTVBJTEVEKXt2YXIgaXNDaHJvbWU4Nz0hMTt0cnl7aXNDaHJvbWU4Nz1ldmFsKGdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eVNjcmlwdCkhPT1nb29nLmdsb2JhbC50cnVzdGVkVHlwZXMuZW1wdHlTY3JpcHR9Y2F0Y2goYSl7fWdvb2cuQ0xPU1VSRV9FVkFMX1BSRUZJTFRFUl89Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzJiZpc0Nocm9tZTg3JiZnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeSgiZ29vZyNiYXNlI2Rldm9ubHkjZXZhbCIpfHx7Y3JlYXRlU2NyaXB0Omdvb2cuaWRlbnRpdHlffX07Y29uc3QgcHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxjcmVhdGVFbmRwb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSx0aHJvd01hcmtlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxpc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPWE9PiJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hfHwiZnVuY3Rpb24iPT09dHlwZW9mIGEscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz0Ke2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiZhW3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdLHNlcmlhbGl6ZShhKXtjb25zdCB7cG9ydDE6Yixwb3J0MjpjfT1uZXcgTWVzc2FnZUNoYW5uZWw7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKTtyZXR1cm5bYyxbY11dfSxkZXNlcmlhbGl6ZShhKXthLnN0YXJ0KCk7cmV0dXJuIHdyYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKX19LHRocm93VHJhbnNmZXJIYW5kbGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9e2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiYKdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyBpbiBhLHNlcmlhbGl6ZSh7dmFsdWU6YX0pe3JldHVyblthIGluc3RhbmNlb2YgRXJyb3I/e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6YS5tZXNzYWdlLG5hbWU6YS5uYW1lLHN0YWNrOmEuc3RhY2t9fTp7aXNFcnJvcjohMSx2YWx1ZTphfSxbXV19LGRlc2VyaWFsaXplKGEpe2lmKGEuaXNFcnJvcil0aHJvdyBPYmplY3QuYXNzaWduKEVycm9yKGEudmFsdWUubWVzc2FnZSksYS52YWx1ZSk7dGhyb3cgYS52YWx1ZTt9fSx0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9bmV3IE1hcChbWyJwcm94eSIscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc10sWyJ0aHJvdyIsdGhyb3dUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc11dKTsKZnVuY3Rpb24gZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiPXNlbGYpe2IuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShkKXtpZihkJiZkLmRhdGEpe3ZhciB7aWQ6Zix0eXBlOmcscGF0aDpofT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxkLmRhdGEpLGw9KGQuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTt0cnl7Y29uc3QgbT1oLnNsaWNlKDAsLTEpLnJlZHVjZSgocCxxKT0+cFtxXSxhKSxuPWgucmVkdWNlKChwLHEpPT5wW3FdLGEpO3N3aXRjaChnKXtjYXNlICJHRVQiOnZhciBrPW47YnJlYWs7Y2FzZSAiU0VUIjptW2guc2xpY2UoLTEpWzBdXT1mcm9tV2lyZVZhbHVlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZC5kYXRhLnZhbHVlKTsKaz0hMDticmVhaztjYXNlICJBUFBMWSI6az1uLmFwcGx5KG0sbCk7YnJlYWs7Y2FzZSAiQ09OU1RSVUNUIjpjb25zdCBwPW5ldyBuKC4uLmwpO2s9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhwKTticmVhaztjYXNlICJFTkRQT0lOVCI6Y29uc3Qge3BvcnQxOnEscG9ydDI6cn09bmV3IE1lc3NhZ2VDaGFubmVsO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEscik7az10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHEsW3FdKTticmVhaztjYXNlICJSRUxFQVNFIjprPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gobSl7az17dmFsdWU6bSxbdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc106MH19UHJvbWlzZS5yZXNvbHZlKGspLmNhdGNoKG09Pgooe3ZhbHVlOm0sW3Rocm93TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOjB9KSkudGhlbihtPT57Y29uc3QgW24scF09dG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhtKTtiLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6Zn0pLHApOyJSRUxFQVNFIj09PWcmJihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhiKSl9KX19KTtiLnN0YXJ0JiZiLnN0YXJ0KCl9ZnVuY3Rpb24gaXNNZXNzYWdlUG9ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3JldHVybiJNZXNzYWdlUG9ydCI9PT1hLmNvbnN0cnVjdG9yLm5hbWV9CmZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtpc01lc3NhZ2VQb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSkmJmEuY2xvc2UoKX1mdW5jdGlvbiB3cmFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXtyZXR1cm4gY3JlYXRlUHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLFtdLGIpfWZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7aWYoYSl0aHJvdyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIik7fQpmdW5jdGlvbiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsYj1bXSxjPWZ1bmN0aW9uKCl7fSl7bGV0IGQ9ITE7Y29uc3QgZT1uZXcgUHJveHkoYyx7Z2V0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtpZihnPT09cmVsZWFzZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMpcmV0dXJuKCk9PnJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJSRUxFQVNFIixwYXRoOmIubWFwKGg9PmgudG9TdHJpbmcoKSl9KS50aGVuKCgpPT57Y2xvc2VFbmRQb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpO2Q9ITB9KTtpZigidGhlbiI9PT0KZyl7aWYoMD09PWIubGVuZ3RoKXJldHVybnt0aGVuOigpPT5lfTtmPXJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJHRVQiLHBhdGg6Yi5tYXAoaD0+aC50b1N0cmluZygpKX0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtyZXR1cm4gZi50aGVuLmJpbmQoZil9cmV0dXJuIGNyZWF0ZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxbLi4uYixnXSl9LHNldChmLGcsaCl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbbCxrXT10b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGgpO3JldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSwKe3R5cGU6IlNFVCIscGF0aDpbLi4uYixnXS5tYXAobT0+bS50b1N0cmluZygpKSx2YWx1ZTpsfSxrKS50aGVuKGZyb21XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyl9LGFwcGx5KGYsZyxoKXt0aHJvd0lmUHJveHlSZWxlYXNlZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGQpO2Y9YltiLmxlbmd0aC0xXTtpZihmPT09Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtpZigiYmluZCI9PT1mKXJldHVybiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsCmIuc2xpY2UoMCwtMSkpO2NvbnN0IFtsLGtdPXByb2Nlc3NBcmd1bWVudHMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhoKTtyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkFQUExZIixwYXRoOmIubWFwKG09Pm0udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omx9LGspLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX0sY29uc3RydWN0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbaCxsXT1wcm9jZXNzQXJndW1lbnRzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZyk7cmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLAp7dHlwZToiQ09OU1RSVUNUIixwYXRoOmIubWFwKGs9PmsudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omh9LGwpLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX19KTtyZXR1cm4gZX1mdW5jdGlvbiBteUZsYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhKX0KZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2E9YS5tYXAodG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyk7cmV0dXJuW2EubWFwKGI9PmJbMF0pLG15RmxhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEubWFwKGI9PmJbMV0pKV19Y29uc3QgdHJhbnNmZXJDYWNoZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHRyYW5zZmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXt0cmFuc2ZlckNhY2hlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuc2V0KGEsYik7cmV0dXJuIGF9CmZ1bmN0aW9uIHByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oYSx7W3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOiEwfSl9ZnVuY3Rpb24gd2luZG93RW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGI9c2VsZixjPSIqIil7cmV0dXJue3Bvc3RNZXNzYWdlOihkLGUpPT5hLnBvc3RNZXNzYWdlKGQsYyxlKSxhZGRFdmVudExpc3RlbmVyOmIuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKGIpLHJlbW92ZUV2ZW50TGlzdGVuZXI6Yi5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoYil9fQpmdW5jdGlvbiB0b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2Zvcihjb25zdCBbYixjXW9mIHRyYW5zZmVySGFuZGxlcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylpZihjLmNhbkhhbmRsZShhKSl7Y29uc3QgW2QsZV09Yy5zZXJpYWxpemUoYSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmIsdmFsdWU6ZH0sZV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmF9LHRyYW5zZmVyQ2FjaGUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy5nZXQoYSl8fFtdXX0KZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIkhBTkRMRVIiOnJldHVybiB0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZ2V0KGEubmFtZSkuZGVzZXJpYWxpemUoYS52YWx1ZSk7Y2FzZSAiUkFXIjpyZXR1cm4gYS52YWx1ZX19CmZ1bmN0aW9uIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGIsYyl7cmV0dXJuIG5ldyBQcm9taXNlKGQ9Pntjb25zdCBlPWdlbmVyYXRlVVVJRCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKCk7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBoKGcpe2cuZGF0YSYmZy5kYXRhLmlkJiZnLmRhdGEuaWQ9PT1lJiYoYS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixoKSxkKGcuZGF0YSkpfSk7YS5zdGFydCYmYS5zdGFydCgpO2EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6ZX0sYiksYyl9KX0KZnVuY3Rpb24gZ2VuZXJhdGVVVUlEJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoKXtyZXR1cm4gQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz17fTttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuY3JlYXRlRW5kcG9pbnQ9Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZXhwb3NlPWV4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHk9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHlNYXJrZXI9cHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucmVsZWFzZVByb3h5PXJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy50cmFuc2Zlcj10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMudHJhbnNmZXJIYW5kbGVycz10cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndpbmRvd0VuZHBvaW50PXdpbmRvd0VuZHBvaW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndyYXA9d3JhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO2Z1bmN0aW9uIE1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlKCl7fU1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5yZWFkeT0hMTtNZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5wcm90b3R5cGUucG9ydD12b2lkIDA7TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUucHJvdG90eXBlLnBvc3Q9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5icm9hZGNhc3RQbGF5U3RhdGU9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS53b3JrZXJTdGF0ZT12b2lkIDA7Ck1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS52YW5pbGxhV29ya2VyU3RhdGU9dm9pZCAwO3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUsbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9e307bW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUuTWVzc2FnZVBvcnRTdGF0ZT1NZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTttb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTtjb25zdCBERUZBVUxUX0JVRkZFUl9MRU4kJG1vZHVsZSRzcmMkY29uc3RhbnRzPTEyOCxNQVhfQ0hBTk5FTFMkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTMyLFJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTE2Mzg0LE1JRElfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTEwMjQsTUlESV9CVUZGRVJfUEFZTE9BRF9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cz0zLENBTExCQUNLX0RBVEFfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTE2Mzg0LGluaXRpYWxTaGFyZWRTdGF0ZSQkbW9kdWxlJHNyYyRjb25zdGFudHM9WzAsNDA5NiwwLDAsMCwwLC0xLC0xLC0xLC0xLDAsREVGQVVMVF9CVUZGRVJfTEVOJCRtb2R1bGUkc3JjJGNvbnN0YW50cywwLDAsMCwwLDAsMCwwLDBdLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cz17Q1NPVU5EX0xPQ0s6MCxGUkFNRVNfUkVRVUVTVEVEOjEsSVNfUEVSRk9STUlORzoyLElTX1JFTkRFUklORzozLApJU19QQVVTRUQ6NCxTVE9QOjUsU0FNUExFX1JBVEU6NixLU01QUzo3LE5DSE5MUzo4LE5DSE5MU19JOjksSVNfUkVRVUVTVElOR19NSUM6MTAsQlVGRkVSX0xFTjoxMSxPVVRQVVRfUkVBRF9JTkRFWDoxMixPVVRQVVRfV1JJVEVfSU5ERVg6MTMsQVZBSUxfSU5fQlVGUzoxNCxBVkFJTF9PVVRfQlVGUzoxNSxJU19SRVFVRVNUSU5HX1JUTUlESToxNixSVE1JRElfSU5ERVg6MTcsQVZBSUxfUlRNSURJX0VWRU5UUzoxOCxIQVNfUEVORElOR19DQUxMQkFDS1M6MTl9LERBVEFfVFlQRSQkbW9kdWxlJHNyYyRjb25zdGFudHM9e05VTUJFUjowLFNUUklORzoxLEZMT0FUXzMyOjIsRkxPQVRfNjQ6M307dmFyIG1vZHVsZSRzcmMkY29uc3RhbnRzPXt9O21vZHVsZSRzcmMkY29uc3RhbnRzLkFVRElPX1NUQVRFPUFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5DQUxMQkFDS19EQVRBX0JVRkZFUl9TSVpFPUNBTExCQUNLX0RBVEFfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzOwptb2R1bGUkc3JjJGNvbnN0YW50cy5EQVRBX1RZUEU9REFUQV9UWVBFJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5ERUZBVUxUX0JVRkZFUl9MRU49REVGQVVMVF9CVUZGRVJfTEVOJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5NQVhfQ0hBTk5FTFM9TUFYX0NIQU5ORUxTJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5NSURJX0JVRkZFUl9QQVlMT0FEX1NJWkU9TUlESV9CVUZGRVJfUEFZTE9BRF9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5NSURJX0JVRkZFUl9TSVpFPU1JRElfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzO21vZHVsZSRzcmMkY29uc3RhbnRzLlJJTkdfQlVGRkVSX1NJWkU9UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM7bW9kdWxlJHNyYyRjb25zdGFudHMuaW5pdGlhbFNoYXJlZFN0YXRlPWluaXRpYWxTaGFyZWRTdGF0ZSQkbW9kdWxlJHNyYyRjb25zdGFudHM7dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleD17ZGVmYXVsdDp7fX07bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQuX19lc01vZHVsZT0hMDttb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5Mb2dnZXJGYWN0b3J5PW1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVscz12b2lkIDA7bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzPXtsb2dfcmFpc2VfZXJyb3I6MSxsb2dfd2l0aF93YXJuaW5nczoyLHRyYWNlOjMsZGVidWc6NCxpbmZvOjUsd2Fybjo2LGVycm9yOjcsZGlzYWJsZTo4fTsKdmFyIExvZ2dlckZhY3RvcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtpZih2b2lkIDA9PT1iJiYoYj0ibG9nX3dpdGhfd2FybmluZ3MiKSx2b2lkIDA9PT1jJiYoYz1udWxsKSx0aGlzLmxvZ0xldmVsPWIsIW1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tiXSl0aHJvdyBFcnJvcigiSW52YWxpZCBsb2cgbGV2ZWwgIitiKyIgYWxsb3dlZDogIitKU09OLnN0cmluZ2lmeShtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHMpKTt0aGlzLm1vY2tDb25zb2xlPWN8fGNvbnNvbGV9cmV0dXJuIGEucHJvdG90eXBlLmR1bW15PWZ1bmN0aW9uKCl7fSxhLnByb3RvdHlwZS5zZXRMb2dXYXJuaW5ncz1mdW5jdGlvbihiKXt0aGlzLmxvZ0xldmVsPWJ9LGEucHJvdG90eXBlLmdldExvZ1dhcm5pbmdzPQpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvZ0xldmVsfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXJDb2xvcj1mdW5jdGlvbihiLGMsZCl7cmV0dXJuIHRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYix0aGlzLmdldENvbG9yU3R5bGUoYyksZCl9LGEucHJvdG90eXBlLmdldFNpbmdsZUxvZ2dlcj1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMuZ2V0UmFuZG9tQ29sb3IoYik7cmV0dXJuIHRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYix0aGlzLmdldENvbG9yU3R5bGUoZCksYyl9LGEucHJvdG90eXBlLmdldFNpbmdsZUxvZ2dlclN0eWxlPWZ1bmN0aW9uKGIsYyxkLGUpe3ZhciBmPXRoaXM7cmV0dXJuIHZvaWQgMD09PWUmJihlPSJsb2dfd2l0aF93YXJuaW5ncyIpLGZ1bmN0aW9uKCl7Zm9yKHZhciBnPVtdLGg9MDtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWdbaF09YXJndW1lbnRzW2hdO2lmKG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tmLmxvZ0xldmVsXT4KbW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzW2VdKXJldHVybiBmLmR1bW15O2c9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZyk7aD1nLnNoaWZ0KCkuc3BsaXQoInt9Iik7Zm9yKHZhciBsPVtmLm1vY2tDb25zb2xlLCIlYyIrYixjXSxrPTA7azxoLmxlbmd0aDtrKyspbC5wdXNoKGhba10pLHZvaWQgMCE9PWdba10mJmwucHVzaChnW2tdKTtpZihoLmxlbmd0aC0xIT09Zy5sZW5ndGgpaWYoImxvZ193aXRoX3dhcm5pbmdzIj09PWYubG9nTGV2ZWwpZi5tb2NrQ29uc29sZS5lcnJvcigiTWlzc01hdGNoIGFtb3VudCBvZiBhcmd1bWVudHMiKTtlbHNlIGlmKCJsb2dfcmFpc2VfZXJyb3IiPT09Zi5sb2dMZXZlbCl0aHJvdyBFcnJvcigiTWlzc01hdGNoIGFtb3VudCBvZiBhcmd1bWVudHMiKTtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYXBwbHkoZCxsKX19LGEucHJvdG90eXBlLmdldExvZ2dlckNvbG9yPWZ1bmN0aW9uKGIsCmMpe3JldHVybiB0aGlzLmdldExvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGMpKX0sYS5wcm90b3R5cGUuZ2V0Q29sb3JTdHlsZT1mdW5jdGlvbihiKXtyZXR1cm4iY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAiK2IrIjsgcGFkZGluZzogMnB4IDZweDsgYm9yZGVyLXJhZGl1czogMnB4OyBmb250LXNpemU6IDEwcHgifSxhLmdldEhhc2g9ZnVuY3Rpb24oYixjKXt2b2lkIDA9PT1jJiYoYz0wKTt2YXIgZD0zNzM1OTI4NTU5XmM7Y149MTEwMzU0Nzk5MTtmb3IodmFyIGU9MCxmO2U8Yi5sZW5ndGg7ZSsrKWY9Yi5jaGFyQ29kZUF0KGUpLGQ9TWF0aC5pbXVsKGReZiwyNjU0NDM1NzYxKSxjPU1hdGguaW11bChjXmYsMTU5NzMzNDY3Nyk7cmV0dXJuIGQ9TWF0aC5pbXVsKGReZD4+PjE2LDIyNDY4MjI1MDcpXk1hdGguaW11bChjXmM+Pj4xMywzMjY2NDg5OTA5KSw0Mjk0OTY3Mjk2KigyMDk3MTUxJihNYXRoLmltdWwoY15jPj4+MTYsMjI0NjgyMjUwNyleTWF0aC5pbXVsKGReCmQ+Pj4xMywzMjY2NDg5OTA5KSkpKyhkPj4+MCl9LGEucHJvdG90eXBlLmdldFJhbmRvbUNvbG9yPWZ1bmN0aW9uKGIpe3ZvaWQgMD09PWImJihiPSIiKTtiPWEuZ2V0SGFzaChiKTtmb3IodmFyIGM9IiMiLGQ9MDszPmQ7ZCsrKWMrPSgiMDAiKyg4KyhiPj43KmQmMTI3KSkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTIpO3JldHVybiBjfSxhLnByb3RvdHlwZS5nZXRMb2dnZXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZ2V0TG9nZ2VyQ29sb3IoYix0aGlzLmdldFJhbmRvbUNvbG9yKGIpKX0sYS5wcm90b3R5cGUuZ2V0TG9nZ2VyU3R5bGU9ZnVuY3Rpb24oYixjKXtyZXR1cm57dHJhY2U6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS50cmFjZSwidHJhY2UiKSxkZWJ1Zzp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmRlYnVnLCJkZWJ1ZyIpLGxvZzp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmxvZywKImluZm8iKSx3YXJuOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUud2Fybiwid2FybiIpLGVycm9yOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUuZXJyb3IsImVycm9yIil9fSxhfSgpO21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LkxvZ2dlckZhY3Rvcnk9TG9nZ2VyRmFjdG9yeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4O2xldCBsb2dXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU0FCTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU0FCV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dWQU5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dWQU5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ09sZFNwbk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ09sZFNwbldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nSW5kZXgkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NQTk1haW5TaW5nbGUkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyOwpjb25zdCBpc1Byb2QkJG1vZHVsZSRzcmMkbG9nZ2VyPTE7bG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1NBQldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nVkFOV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dPbGRTcG5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTUE5NYWluU2luZ2xlJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTsKbG9nU2luZ2xldGhyZWFkV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ0NvbW1vblV0aWxzJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dXYXNtTW9kdWxlJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dNaWRpUmVxdWVzdCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307dmFyICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fSxtb2R1bGUkc3JjJGxvZ2dlcj17fTttb2R1bGUkc3JjJGxvZ2dlci5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dDb21tb25VdGlscz1sb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nSW5kZXg9bG9nSW5kZXgkJG1vZHVsZSRzcmMkbG9nZ2VyOwptb2R1bGUkc3JjJGxvZ2dlci5sb2dNaWRpUmVxdWVzdD1sb2dNaWRpUmVxdWVzdCQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nT2xkU3BuTWFpbj1sb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dPbGRTcG5Xb3JrZXI9bG9nT2xkU3BuV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTQUJNYWluPWxvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NBQldvcmtlcj1sb2dTQUJXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NQTk1haW5TaW5nbGU9bG9nU1BOTWFpblNpbmdsZSQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nU2luZ2xldGhyZWFkV29ya2xldE1haW49bG9nU2luZ2xldGhyZWFkV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyOwptb2R1bGUkc3JjJGxvZ2dlci5sb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyPWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1ZBTk1haW49bG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nVkFOV29ya2VyPWxvZ1ZBTldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV2FzbU1vZHVsZT1sb2dXYXNtTW9kdWxlJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dXb3JrbGV0TWFpbj1sb2dXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV29ya2xldFdvcmtlcj1sb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjtjb25zdCBoYW5kbGVDc291bmRTdGFydCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz0oYSxiLGMsZCxlKT0+Zj0+e2NvbnN0IHtjc291bmQ6Z309ZixoPTE9PT1iLmNzb3VuZFNob3VsZERhZW1vbml6ZShnKTtoJiYoYi5jc291bmRTZXRPcHRpb24oZywiLS1kYWVtb24iKSxiLmNzb3VuZFNldE9wdGlvbihnLCItb2RhYyIpKTtjb25zdCBsPWIuY3NvdW5kU3RhcnQoZyksaz1iLmNzb3VuZEdldE91dHB1dE5hbWUoZyl8fCJ0ZXN0LndhdiI7bG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyKGBoYW5kbGVDc291bmRTdGFydDogYWN0dWFsIGNzb3VuZFN0YXJ0IHJlc3VsdCAke2x9LCBvdXRwdXROYW1lOiAke2t9YCkoKTswIT09bCYmYS5wb3N0KGBlcnJvcjogY3NvdW5kU3RhcnQgZmFpbGVkIHdoaWxlIHRyeWluZyB0byByZW5kZXIgJHtrfSxgKyIgbG9vayBvdXQgZm9yIGVycm9ycyBpbiBvcHRpb25zIGFuZCBzeW50YXgiKTtzZXRUaW1lb3V0KCgpPT57Y29uc3QgbT0KYi5faXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQoZyk7aWYoaHx8bXx8ay5pbmNsdWRlcygiZGFjIikpZChmKTtlbHNlIGlmKGEuYnJvYWRjYXN0UGxheVN0YXRlKCJyZW5kZXJTdGFydGVkIiksZSllKGYpO2Vsc2UgZm9yKDswPT09Yi5jc291bmRQZXJmb3JtS3NtcHMoZyk7KTt9LDApO3JldHVybiBsfSxpbnN0YW50aWF0ZUF1ZGlvUGFja2V0JCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzPShhLGIpPT57Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGE7ZCsrKWMucHVzaChuZXcgRmxvYXQ2NEFycmF5KGIpKTtyZXR1cm4gY30scmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9KHtsaWJyYXJ5Q3NvdW5kOmEsd29ya2VyTWVzc2FnZVBvcnQ6Yn0pPT5hc3luYyh7Y3NvdW5kOmN9KT0+e2NvbnN0IGQ9YS5jc291bmRHZXRLcihjKTtsZXQgZT0wLGY9MDtmb3IoOygicmVuZGVyU3RhcnRlZCI9PT1iLnZhbmlsbGFXb3JrZXJTdGF0ZXx8InJlbmRlclN0YXJ0ZWQiPT09CmIud29ya2VyU3RhdGUpJiYwPT09ZTspZT1hLmNzb3VuZFBlcmZvcm1Lc21wcyhjKSxmKz0xLCJmdW5jdGlvbiI9PT10eXBlb2Ygc2V0VGltZW91dCYmMD09PWUmJjA9PT1mJSgyKmQpJiZhd2FpdCBuZXcgUHJvbWlzZShnPT5zZXRUaW1lb3V0KGcsMCkpO2IuYnJvYWRjYXN0UGxheVN0YXRlKCJyZW5kZXJFbmRlZCIpfTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz17fTttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLmhhbmRsZUNzb3VuZFN0YXJ0PWhhbmRsZUNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO21vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMuaW5zdGFudGlhdGVBdWRpb1BhY2tldD1pbnN0YW50aWF0ZUF1ZGlvUGFja2V0JCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO21vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMucmVuZGVyRnVuY3Rpb249cmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM7Y29uc3QgVkFOSUxMQV9JTlBVVF9XUklURV9CVUZGRVJfTEVOJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXI9MjA0OCxhY3RpdmVOb2RlcyQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyPW5ldyBNYXA7CmZ1bmN0aW9uIHByb2Nlc3NTaGFyZWRBcnJheUJ1ZmZlciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKGEsYil7dmFyIGM9MT09PUF0b21pY3MubG9hZCh0aGlzLnNoYXJlZEFycmF5QnVmZmVyLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cy5JU19QRVJGT1JNSU5HKSxkPTE9PT1BdG9taWNzLmxvYWQodGhpcy5zaGFyZWRBcnJheUJ1ZmZlcixBVURJT19TVEFURSQkbW9kdWxlJHNyYyRjb25zdGFudHMuSVNfUEFVU0VEKTtjb25zdCBlPTE9PT1BdG9taWNzLmxvYWQodGhpcy5zaGFyZWRBcnJheUJ1ZmZlcixBVURJT19TVEFURSQkbW9kdWxlJHNyYyRjb25zdGFudHMuU1RPUCk7dGhpcy5zdGFydFByb21peiYmKHRoaXMuc3RhcnRQcm9taXooKSxkZWxldGUgdGhpcy5zdGFydFByb21peik7aWYoIXRoaXMuc2hhcmVkQXJyYXlCdWZmZXJ8fGR8fCFjfHxlKXJldHVybiB0aGlzLmlzUGVyZm9ybWluZ0xhc3RUaW1lPWMsdGhpcy5ub3RpZmllZE9uY2U9dGhpcy5maXJzdEJ1ZmZlclJlYWR5PQohMSwoYlswXXx8W10pLmZvckVhY2goZz0+Zy5maWxsKDApKSwhMDt0aGlzLmlzUGVyZm9ybWluZ0xhc3RUaW1lPWM7YT1hJiZhWzBdO2I9YiYmYlswXTtjPWJbMF0ubGVuZ3RoO3RoaXMuYnVmZmVyTGVuZ3RoIT09YyYmKHRoaXMuYnVmZmVyTGVuZ3RoPWMsQXRvbWljcy5zdG9yZSh0aGlzLnNoYXJlZEFycmF5QnVmZmVyLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cy5CVUZGRVJfTEVOLGMpKTtkPWEmJjA8YS5sZW5ndGg/KHRoaXMuaW5wdXRXcml0ZUluZGV4K2MpJVJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzOjA7Y29uc3QgZj1iJiYwPGIubGVuZ3RoPyh0aGlzLm91dHB1dFJlYWRJbmRleCtjKSVSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50czowO2lmKEF0b21pY3MubG9hZCh0aGlzLnNoYXJlZEFycmF5QnVmZmVyLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cy5BVkFJTF9PVVRfQlVGUyk+PWMpdGhpcy5idWZmZXJVbmRlcnJ1bkNvdW50JiYKKHRoaXMuYnVmZmVyVW5kZXJydW5Db3VudD0wKSxiLmZvckVhY2goKGcsaCk9PntnLnNldCh0aGlzLnNhYk91dHB1dENoYW5uZWxzW2hdLnN1YmFycmF5KHRoaXMub3V0cHV0UmVhZEluZGV4LGY8dGhpcy5vdXRwdXRSZWFkSW5kZXg/UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6ZikpfSksYSYmYVswXSYmMDxhWzBdLmxlbmd0aCYmKGEuZm9yRWFjaCgoZyxoKT0+e3RoaXMuc2FiSW5wdXRDaGFubmVsc1toXS5zZXQoZyx0aGlzLmlucHV0V3JpdGVJbmRleCl9KSx0aGlzLmlucHV0V3JpdGVJbmRleD1kLEF0b21pY3MuYWRkKHRoaXMuc2hhcmVkQXJyYXlCdWZmZXIsQVVESU9fU1RBVEUkJG1vZHVsZSRzcmMkY29uc3RhbnRzLkFWQUlMX0lOX0JVRlMsYVswXS5sZW5ndGgpKSx0aGlzLm91dHB1dFJlYWRJbmRleD1mLEF0b21pY3Muc3ViKHRoaXMuc2hhcmVkQXJyYXlCdWZmZXIsQVVESU9fU1RBVEUkJG1vZHVsZSRzcmMkY29uc3RhbnRzLkFWQUlMX09VVF9CVUZTLApjKSxBdG9taWNzLnN0b3JlKHRoaXMuc2hhcmVkQXJyYXlCdWZmZXIsQVVESU9fU1RBVEUkJG1vZHVsZSRzcmMkY29uc3RhbnRzLk9VVFBVVF9SRUFEX0lOREVYLHRoaXMub3V0cHV0UmVhZEluZGV4KTtlbHNle2lmKDQwOTg8dGhpcy5vdXRwdXRSZWFkSW5kZXgpY29uc29sZS5sb2coImJ1ZmZlciB1bmRlcnJ1biIpO2Vsc2UgcmV0dXJuITA7dGhpcy5idWZmZXJVbmRlcnJ1bkNvdW50Kz0xO2lmKDEwMD09PXRoaXMuYnVmZmVyVW5kZXJydW5Db3VudClyZXR1cm4gdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5wb3N0KCJGQVRBTDogMTAwIGJ1ZmZlcnMgZmFpbGVkIGluIGEgcm93IiksdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VFbmRlZCIpLCExfXJldHVybiEwfQpmdW5jdGlvbiBwcm9jZXNzVmFuaWxsYUJ1ZmZlcnMkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcihhLGIpe2lmKCF0aGlzLnZhbmlsbGFJbml0aWFsaXplZClyZXR1cm4gdGhpcy5hdWRpb0ZyYW1lUG9ydC5yZXF1ZXN0RnJhbWVzKHtyZWFkSW5kZXg6MCxudW1GcmFtZXM6ODE5Mn0pLHRoaXMucGVuZGluZ0ZyYW1lcys9ODE5Mix0aGlzLnZhbmlsbGFJbml0aWFsaXplZD0hMCx0aGlzLnN0YXJ0UHJvbWl6JiYodGhpcy5zdGFydFByb21peigpLGRlbGV0ZSB0aGlzLnN0YXJ0UHJvbWl6KSwhMDtpZighdGhpcy52YW5pbGxhRmlyc3RUcmFuc2ZlckRvbmUpcmV0dXJuKGImJmJbMF18fFtdKS5mb3JFYWNoKGY9PmYuZmlsbCgwKSksITA7YT1hJiZhWzBdO2NvbnN0IGM9KGI9YiYmYlswXSk/YlswXS5sZW5ndGg6MCxkPWImJjA8Yi5sZW5ndGg/KHRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleCtiWzBdLmxlbmd0aCklUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6CjAsZT1hJiYwPGEubGVuZ3RoPyh0aGlzLnZhbmlsbGFJbnB1dFJlYWRJbmRleCthWzBdLmxlbmd0aCklUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6MDtpZihjJiZ0aGlzLnZhbmlsbGFBdmFpbGFibGVGcmFtZXM+PWMpe2IuZm9yRWFjaCgoZixnKT0+e2Yuc2V0KHRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzW2ddLnN1YmFycmF5KHRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleCxkPHRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleD9SSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50czpkKSl9KTtpZihhJiYwPGEubGVuZ3RoJiYoYS5mb3JFYWNoKChmLGcpPT57dGhpcy52YW5pbGxhSW5wdXRDaGFubmVsc1tnXS5zZXQoZix0aGlzLnZhbmlsbGFJbnB1dFJlYWRJbmRleCl9KSwwPT09ZSVWQU5JTExBX0lOUFVUX1dSSVRFX0JVRkZFUl9MRU4kJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcikpe2NvbnN0IGY9W10sZz0oMD09PWU/UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6CmUpLVZBTklMTEFfSU5QVVRfV1JJVEVfQlVGRkVSX0xFTiQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyLGg9MD09PWU/UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6ZTt0aGlzLnZhbmlsbGFJbnB1dENoYW5uZWxzLmZvckVhY2gobD0+e2YucHVzaChsLnN1YmFycmF5KGcsaCkpfSk7dGhpcy5hdWRpb0lucHV0UG9ydC50cmFuc2ZlcklucHV0RnJhbWVzKGYpfXRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleD1kO3RoaXMudmFuaWxsYUlucHV0UmVhZEluZGV4PWU7dGhpcy52YW5pbGxhQXZhaWxhYmxlRnJhbWVzLT1jO3RoaXMuYnVmZmVyVW5kZXJydW5Db3VudD0wfWVsc2UgaWYoMTx0aGlzLmJ1ZmZlclVuZGVycnVuQ291bnQmJjEyPnRoaXMuYnVmZmVyVW5kZXJydW5Db3VudCYmKHRoaXMud29ya2VyTWVzc2FnZVBvcnQucG9zdCgiQnVmZmVyIHVuZGVycnVuIiksdGhpcy5idWZmZXJVbmRlcnJ1bkNvdW50Kz0xKSwxMDA9PT10aGlzLmJ1ZmZlclVuZGVycnVuQ291bnQpcmV0dXJuIHRoaXMud29ya2VyTWVzc2FnZVBvcnQucG9zdCgiRkFUQUw6IDEwMCBidWZmZXJzIGZhaWxlZCBpbiBhIHJvdyIpLAp0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZUVuZGVkIiksITE7YT0yMDQ4LXRoaXMudmFuaWxsYUF2YWlsYWJsZUZyYW1lczswPGEmJih0aGlzLmF1ZGlvRnJhbWVQb3J0LnJlcXVlc3RGcmFtZXMoe3JlYWRJbmRleDoodGhpcy52YW5pbGxhQXZhaWxhYmxlRnJhbWVzK2QrdGhpcy5wZW5kaW5nRnJhbWVzKSVSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cyxudW1GcmFtZXM6YX0pLHRoaXMucGVuZGluZ0ZyYW1lcys9YSk7cmV0dXJuITB9CmNsYXNzIENzb3VuZFdvcmtsZXRQcm9jZXNzb3IkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3Nvcntjb25zdHJ1Y3Rvcih7cHJvY2Vzc29yT3B0aW9uczp7Y29udGV4dFVpZDphLGlucHV0c0NvdW50OmIsb3V0cHV0c0NvdW50OmMsa3NtcHM6ZCxtYXliZVNoYXJlZEFycmF5QnVmZmVyOmUsbWF5YmVTaGFyZWRBcnJheUJ1ZmZlckF1ZGlvSW46ZixtYXliZVNoYXJlZEFycmF5QnVmZmVyQXVkaW9PdXQ6Z319KXtzdXBlcigpO2FjdGl2ZU5vZGVzJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIuc2V0KGAke2F9Tm9kZWAsdGhpcyk7dGhpcy5tZXNzYWdlUG9ydHNSZWFkeT0hMTt0aGlzLmN1cnJlbnRQbGF5U3RhdGU9dm9pZCAwO3RoaXMucGF1c2U9dGhpcy5wYXVzZS5iaW5kKHRoaXMpO3RoaXMucmVzdW1lPXRoaXMucmVzdW1lLmJpbmQodGhpcyk7dGhpcy5pc1BhdXNlZD0hMTt0aGlzLmtzbXBzPWQ7dGhpcy5pbnB1dHNDb3VudD0KYjt0aGlzLm91dHB1dHNDb3VudD1jO3RoaXMuYnVmZmVyVW5kZXJydW5Db3VudD10aGlzLm91dHB1dFJlYWRJbmRleD10aGlzLmlucHV0V3JpdGVJbmRleD0wO3RoaXMuaXNQZXJmb3JtaW5nTGFzdFRpbWU9ITE7dGhpcy5wcmVQcm9jZXNzQ291bnQ9MDtpZihlKXt0aGlzLnNoYXJlZEFycmF5QnVmZmVyPWU7dGhpcy5hdWRpb1N0cmVhbUluPWY7dGhpcy5hdWRpb1N0cmVhbU91dD1nO3RoaXMuc2FiT3V0cHV0Q2hhbm5lbHM9W107dGhpcy5zYWJJbnB1dENoYW5uZWxzPVtdO2ZvcihhPTA7YTxiOysrYSl0aGlzLnNhYklucHV0Q2hhbm5lbHMucHVzaChuZXcgRmxvYXQ2NEFycmF5KHRoaXMuYXVkaW9TdHJlYW1JbixSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cyphLFJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzKSk7Zm9yKGI9MDtiPGM7KytiKXRoaXMuc2FiT3V0cHV0Q2hhbm5lbHMucHVzaChuZXcgRmxvYXQ2NEFycmF5KHRoaXMuYXVkaW9TdHJlYW1PdXQsClJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzKmIsUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHMpKTt0aGlzLmFjdHVhbFByb2Nlc3M9cHJvY2Vzc1NoYXJlZEFycmF5QnVmZmVyJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIuYmluZCh0aGlzKX1lbHNlIHRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzPVtdLHRoaXMudmFuaWxsYUlucHV0Q2hhbm5lbHM9W10sdGhpcy5wZW5kaW5nRnJhbWVzPXRoaXMudmFuaWxsYUF2YWlsYWJsZUZyYW1lcz10aGlzLnZhbmlsbGFJbnB1dFJlYWRJbmRleD10aGlzLnZhbmlsbGFPdXRwdXRSZWFkSW5kZXg9MCx0aGlzLnZhbmlsbGFGaXJzdFRyYW5zZmVyRG9uZT10aGlzLnZhbmlsbGFJbml0aWFsaXplZD0hMSx0aGlzLm1pbkJ1ZmZlclNpemU9NDA5Nix0aGlzLnZhbmlsbGFJbnB1dENoYW5uZWxzPWluc3RhbnRpYXRlQXVkaW9QYWNrZXQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoYiwKUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHMpLHRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzPWluc3RhbnRpYXRlQXVkaW9QYWNrZXQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoYyxSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cyksdGhpcy5hY3R1YWxQcm9jZXNzPXByb2Nlc3NWYW5pbGxhQnVmZmVycyQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyLmJpbmQodGhpcyksdGhpcy51cGRhdGVWYW5pbGxhRnJhbWVzPXRoaXMudXBkYXRlVmFuaWxsYUZyYW1lcy5iaW5kKHRoaXMpO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHtpbml0aWFsaXplOmluaXRpYWxpemUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcixwYXVzZTp0aGlzLnBhdXNlLHJlc3VtZTp0aGlzLnJlc3VtZX0sdGhpcy5wb3J0KTtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigiV29ya2VyIHRocmVhZCB3YXMgY29uc3RydWN0ZWQiKSgpfWluaXRDYWxsYmFja3Moe3dvcmtlck1lc3NhZ2VQb3J0OmEsCmF1ZGlvSW5wdXRQb3J0OmIsYXVkaW9GcmFtZVBvcnQ6YyxzdGFydFByb21pejpkfSl7bG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImluaXRDYWxsYmFja3MgaW4gd29ya2VyIikoKTthJiYodGhpcy53b3JrZXJNZXNzYWdlUG9ydD1hKTtiJiYodGhpcy5hdWRpb0lucHV0UG9ydD1iKTtjJiYodGhpcy5hdWRpb0ZyYW1lUG9ydD1jKTt0aGlzLm1lc3NhZ2VQb3J0c1JlYWR5PSEwO3RoaXMuc3RhcnRQcm9taXo9ZH11cGRhdGVWYW5pbGxhRnJhbWVzKHthdWRpb1BhY2tldDphLG51bUZyYW1lczpiLHJlYWRJbmRleDpjfSl7dGhpcy5wZW5kaW5nRnJhbWVzLT1iO2lmKGEpe2ZvcihsZXQgZD0wO2Q8dGhpcy5vdXRwdXRzQ291bnQ7KytkKXtsZXQgZT0hMSxmOyhjK2IpJVJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPGMmJihlPSEwLGY9UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHMtYyk7ZT8odGhpcy52YW5pbGxhT3V0cHV0Q2hhbm5lbHNbZF0uc2V0KGFbZF0uc3ViYXJyYXkoMCwKZiksYyksdGhpcy52YW5pbGxhT3V0cHV0Q2hhbm5lbHNbZF0uc2V0KGFbZF0uc3ViYXJyYXkoZiksMCkpOnRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzW2RdLnNldChhW2RdLGMpfXRoaXMudmFuaWxsYUF2YWlsYWJsZUZyYW1lcys9Yjt0aGlzLnZhbmlsbGFGaXJzdFRyYW5zZmVyRG9uZXx8KHRoaXMudmFuaWxsYUZpcnN0VHJhbnNmZXJEb25lPSEwKX19cGF1c2UoKXt0aGlzLmlzUGF1c2VkPSEwO3RoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlUGF1c2VkIil9cmVzdW1lKCl7dGhpcy5pc1BhdXNlZD0hMTt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZVJlc3VtZWQiKX1wcm9jZXNzKGEsYil7cmV0dXJuIHRoaXMuaXNQYXVzZWR8fCF0aGlzLm1lc3NhZ2VQb3J0c1JlYWR5PyEwOnRoaXMuYWN0dWFsUHJvY2VzcyhhLGIpfX0KZnVuY3Rpb24gaW5pdE1lc3NhZ2VQb3J0JCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIoe3BvcnQ6YX0pe2xvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0TWVzc2FnZVBvcnQgaW4gd29ya2VyIikoKTtjb25zdCBiPW5ldyAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU7Yi5wb3N0PWM9PmEucG9zdE1lc3NhZ2Uoe2xvZzpjfSk7Yi5icm9hZGNhc3RQbGF5U3RhdGU9Yz0+YS5wb3N0TWVzc2FnZSh7cGxheVN0YXRlQ2hhbmdlOmN9KTtiLnJlYWR5PSEwO3JldHVybiBifQpmdW5jdGlvbiBpbml0UmVxdWVzdFBvcnQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcih7cmVxdWVzdFBvcnQ6YSxhdWRpb05vZGU6Yn0pe2xvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0UmVxdWVzdFBvcnQgaW4gd29ya2VyIikoKTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGM9Pntjb25zdCB7YXVkaW9QYWNrZXQ6ZCxyZWFkSW5kZXg6ZSxudW1GcmFtZXM6Zn09Yy5kYXRhO2IudXBkYXRlVmFuaWxsYUZyYW1lcyh7YXVkaW9QYWNrZXQ6ZCxudW1GcmFtZXM6ZixyZWFkSW5kZXg6ZX0pfSk7YS5zdGFydCgpO3JldHVybntyZXF1ZXN0RnJhbWVzOmM9PmEucG9zdE1lc3NhZ2UoYykscmVhZHk6ITB9fQpmdW5jdGlvbiBpbml0QXVkaW9JbnB1dFBvcnQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcih7aW5wdXRQb3J0OmF9KXtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigiaW5pdEF1ZGlvSW5wdXRQb3J0IGluIHdvcmtlciIpKCk7cmV0dXJue3JlYWR5OiExLHRyYW5zZmVySW5wdXRGcmFtZXM6Yj0+YS5wb3N0TWVzc2FnZShiKX19CmNvbnN0IGluaXRpYWxpemUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcj1hc3luYyh7Y29udGV4dFVpZDphLGlucHV0UG9ydDpiLG1lc3NhZ2VQb3J0OmMscmVxdWVzdFBvcnQ6ZH0pPT57YT1hY3RpdmVOb2RlcyQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyLmdldChgJHthfU5vZGVgKTtjPWluaXRNZXNzYWdlUG9ydCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKHtwb3J0OmN9KTtiPWluaXRBdWRpb0lucHV0UG9ydCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKHtpbnB1dFBvcnQ6Yn0pO2Q9aW5pdFJlcXVlc3RQb3J0JCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIoe3JlcXVlc3RQb3J0OmQsYXVkaW9Ob2RlOmF9KTtsZXQgZTtjb25zdCBmPW5ldyBQcm9taXNlKGc9PntlPWd9KTthLmluaXRDYWxsYmFja3Moe3dvcmtlck1lc3NhZ2VQb3J0OmMsYXVkaW9JbnB1dFBvcnQ6YixhdWRpb0ZyYW1lUG9ydDpkLApzdGFydFByb21pejplfSk7YXdhaXQgZn07cmVnaXN0ZXJQcm9jZXNzb3IoImNzb3VuZC13b3JrbGV0LXByb2Nlc3NvciIsQ3NvdW5kV29ya2xldFByb2Nlc3NvciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyPXt9OwovLyMgc291cmNlTWFwcGluZ1VSTD1fX2NvbXBpbGVkLndvcmtsZXQud29ya2VyLmpzLm1hcAo=\";\n ","import * as Comlink from \"comlink/dist/esm/comlink.mjs\";\nimport { logWorkletMain as log } from \"../logger\";\nimport { WebkitAudioContext } from \"../utils\";\nimport { requestMidi } from \"../utils/request-midi\";\nimport { messageEventHandler } from \"./messages.main\";\nimport WorkletWorker from \"../../dist/__compiled.worklet.worker.inline.js\";\n\nlet UID = 0;\n\nclass AudioWorkletMainThread {\n constructor({ audioContext, audioContextIsProvided, autoConnect }) {\n this.autoConnect = autoConnect;\n this.audioContextIsProvided = audioContextIsProvided;\n this.ipcMessagePorts = undefined;\n this.audioContext = audioContext;\n this.audioWorkletNode = undefined;\n this.currentPlayState = undefined;\n this.csoundWorkerMain = undefined;\n this.workletProxy = undefined;\n\n // never default these, get it from\n // csound-worker before starting\n this.ksmps = undefined;\n this.sampleRate = undefined;\n this.inputsCount = undefined;\n this.outputsCount = undefined;\n this.hardwareBufferSize = undefined;\n this.softwareBufferSize = undefined;\n\n this.initialize = this.initialize.bind(this);\n this.onPlayStateChange = this.onPlayStateChange.bind(this);\n this.terminateInstance = this.terminateInstance.bind(this);\n this.createWorkletNode = this.createWorkletNode.bind(this);\n log(\"AudioWorkletMainThread was constructed\")();\n }\n\n async terminateInstance() {\n if (this.audioWorkletNode) {\n this.audioWorkletNode.disconnect();\n delete this.audioWorkletNode;\n }\n if (this.audioContext) {\n if (this.audioContext.state !== \"closed\") {\n try {\n await this.audioContext.close();\n } catch {}\n }\n delete this.audioContext;\n }\n if (this.workletProxy) {\n this.workletProxy[Comlink.releaseProxy]();\n delete this.workletProxy;\n }\n }\n\n createWorkletNode(audioContext, inputsCount, contextUid) {\n const audioNode = new AudioWorkletNode(audioContext, \"csound-worklet-processor\", {\n inputChannelCount: inputsCount ? [inputsCount] : 0,\n outputChannelCount: [this.outputsCount || 2],\n processorOptions: {\n contextUid,\n isRequestingInput: this.isRequestingInput,\n inputsCount,\n outputsCount: this.outputsCount,\n ksmps: this.ksmps,\n maybeSharedArrayBuffer:\n this.csoundWorkerMain.hasSharedArrayBuffer && this.csoundWorkerMain.audioStatePointer,\n maybeSharedArrayBufferAudioIn:\n this.csoundWorkerMain.hasSharedArrayBuffer && this.csoundWorkerMain.audioStreamIn,\n maybeSharedArrayBufferAudioOut:\n this.csoundWorkerMain.hasSharedArrayBuffer && this.csoundWorkerMain.audioStreamOut,\n },\n });\n this.csoundWorkerMain.publicEvents.triggerOnAudioNodeCreated(audioNode);\n return audioNode;\n }\n\n async onPlayStateChange(newPlayState) {\n this.currentPlayState = newPlayState;\n\n switch (newPlayState) {\n case \"realtimePerformanceStarted\": {\n log(\"event received: realtimePerformanceStarted\")();\n await this.initialize();\n\n if (this.csoundWorkerMain && this.csoundWorkerMain.eventPromises) {\n this.csoundWorkerMain.publicEvents &&\n this.csoundWorkerMain.publicEvents.triggerRealtimePerformanceStarted(this);\n this.csoundWorkerMain.eventPromises &&\n (await this.csoundWorkerMain.eventPromises.releaseStartPromise());\n }\n break;\n }\n case \"realtimePerformanceEnded\": {\n log(\n \"event received: realtimePerformanceEnded\" + !this.csoundWorkerMain.hasSharedArrayBuffer\n ? ` cleaning up ports`\n : \"\",\n )();\n if (\n !this.audioContextIsProvided &&\n this.autoConnect &&\n this.audioContext &&\n this.audioContext.state !== \"closed\"\n ) {\n try {\n await this.audioContext.close();\n } catch {}\n }\n\n if (this.autoConnect && this.audioWorkletNode) {\n this.audioWorkletNode.disconnect();\n delete this.audioWorkletNode;\n }\n if (this.workletProxy) {\n this.workletProxy[Comlink.releaseProxy]();\n delete this.workletProxy;\n }\n\n if (this.workletWorkerUrl) {\n (window.URL || window.webkitURL).revokeObjectURL(this.workletWorkerUrl);\n }\n\n this.audioWorkletNode && delete this.audioWorkletNode;\n this.currentPlayState = undefined;\n this.sampleRate = undefined;\n this.inputsCount = undefined;\n this.outputsCount = undefined;\n this.hardwareBufferSize = undefined;\n this.softwareBufferSize = undefined;\n break;\n }\n\n case \"realtimePerformancePaused\": {\n if (this.csoundWorkerMain && this.csoundWorkerMain.eventPromises) {\n this.csoundWorkerMain.publicEvents &&\n this.csoundWorkerMain.publicEvents.triggerRealtimePerformancePaused(this);\n await this.csoundWorkerMain.eventPromises.releasePausePromise();\n }\n break;\n }\n\n case \"realtimePerformanceResumed\": {\n if (this.csoundWorkerMain && this.csoundWorkerMain.eventPromises) {\n this.csoundWorkerMain.publicEvents &&\n this.csoundWorkerMain.publicEvents.triggerRealtimePerformanceResumed(this);\n await this.csoundWorkerMain.eventPromises.releaseResumePromise();\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n async initialize() {\n if (!this.audioContext) {\n if (this.audioContextIsProvided) {\n console.error(`fatal: the provided AudioContext was undefined`);\n }\n this.audioContext = new (WebkitAudioContext())({ sampleRate: this.sampleRate });\n }\n\n if (this.audioContext.state === \"closed\") {\n if (this.audioContextIsProvided) {\n console.error(`fatal: the provided AudioContext was closed, falling back new AudioContext`);\n }\n this.audioContext = new (WebkitAudioContext())({ sampleRate: this.sampleRate });\n }\n\n if (this.sampleRate !== this.audioContext.sampleRate) {\n this.audioContext = new (WebkitAudioContext())({ sampleRate: this.sampleRate });\n // if this.audioContextIsProvided is true\n // it should already be picked\n if (this.audioContextIsProvided) {\n console.error(\"Internal error: sample rate was ignored from provided audioContext\");\n }\n }\n this.workletWorkerUrl = WorkletWorker();\n\n try {\n await this.audioContext.audioWorklet.addModule(this.workletWorkerUrl);\n } catch (error) {\n console.error(\"Error calling audioWorklet.addModule\", error);\n }\n\n log(\"WorkletWorker module added\")();\n\n if (!this.csoundWorkerMain) {\n console.error(`fatal: worker not reachable from worklet-main thread`);\n return;\n }\n\n const contextUid = `audioWorklet${UID}`;\n UID += 1;\n\n if (this.isRequestingMidi) {\n log(\"requesting for web-midi connection\");\n requestMidi({\n onMidiMessage: this.csoundWorkerMain.handleMidiInput.bind(this.csoundWorkerMain),\n });\n }\n\n let microphonePromise;\n\n if (this.isRequestingInput) {\n let resolveMicrophonePromise;\n microphonePromise = new Promise((resolve) => {\n resolveMicrophonePromise = resolve;\n });\n const getUserMedia =\n navigator.mediaDevices === undefined\n ? navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia\n : navigator.mediaDevices.getUserMedia;\n\n const microphoneCallback = (stream) => {\n if (stream) {\n const liveInput = this.audioContext.createMediaStreamSource(stream);\n this.inputsCount = liveInput.channelCount;\n const newNode = this.createWorkletNode(\n this.audioContext,\n liveInput.channelCount,\n contextUid,\n );\n this.audioWorkletNode = newNode;\n if (this.autoConnect) {\n liveInput.connect(newNode).connect(this.audioContext.destination);\n }\n } else {\n // Continue as before if user cancels\n this.inputsCount = 0;\n const newNode = this.createWorkletNode(this.audioContext, 0, contextUid);\n this.audioWorkletNode = newNode;\n if (this.autoConnect) {\n this.audioWorkletNode.connect(this.audioContext.destination);\n }\n }\n resolveMicrophonePromise && resolveMicrophonePromise();\n };\n\n log(\"requesting microphone access\")();\n navigator.mediaDevices === undefined\n ? getUserMedia.call(\n navigator,\n {\n audio: {\n optional: [{ echoCancellation: false, sampleSize: 32 }],\n },\n },\n microphoneCallback,\n console.error,\n )\n : getUserMedia\n .call(navigator.mediaDevices, {\n audio: { echoCancellation: false, sampleSize: 32 },\n })\n .then(microphoneCallback)\n .catch(console.error);\n } else {\n const newNode = this.createWorkletNode(this.audioContext, 0, contextUid);\n this.audioWorkletNode = newNode;\n\n log(\"connecting Node to AudioContext destination\")();\n if (this.autoConnect) {\n this.audioWorkletNode.connect(this.audioContext.destination);\n }\n }\n\n microphonePromise && (await microphonePromise);\n this.workletProxy = Comlink.wrap(this.audioWorkletNode.port);\n\n this.ipcMessagePorts.mainMessagePortAudio.addEventListener(\n \"message\",\n messageEventHandler(this),\n );\n this.ipcMessagePorts.mainMessagePortAudio.start();\n\n await this.workletProxy.initialize(\n Comlink.transfer(\n {\n contextUid,\n messagePort: this.ipcMessagePorts.workerMessagePortAudio,\n requestPort: this.ipcMessagePorts.audioWorkerFrameRequestPort,\n inputPort: this.ipcMessagePorts.audioWorkerAudioInputPort,\n },\n [\n this.ipcMessagePorts.workerMessagePortAudio,\n this.ipcMessagePorts.audioWorkerFrameRequestPort,\n this.ipcMessagePorts.audioWorkerAudioInputPort,\n ],\n ),\n );\n\n log(\"initialization finished in main\")();\n }\n}\n\nexport default AudioWorkletMainThread;\n","export const requestMicrophoneNode = (microphoneCallback) => {\n const getUserMedia =\n navigator.mediaDevices === undefined\n ? navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia\n : navigator.mediaDevices.getUserMedia;\n\n console.log(\"requesting microphone access\");\n navigator.mediaDevices === undefined\n ? getUserMedia.call(\n navigator,\n {\n audio: {\n optional: [{ echoCancellation: false, sampleSize: 32 }],\n },\n },\n microphoneCallback,\n console.error,\n )\n : getUserMedia\n .call(navigator.mediaDevices, {\n audio: { echoCancellation: false, sampleSize: 32 },\n })\n .then(microphoneCallback)\n .catch(console.error);\n};\n\n// rebind this to exportApi instance to use\nexport async function enableAudioInput() {\n console.log(\"enabling audio input\");\n requestMicrophoneNode(async (stream) => {\n if (stream) {\n const audioContext = await this.getAudioContext();\n const liveInput = audioContext.createMediaStreamSource(stream);\n this.inputsCount = liveInput.channelCount;\n\n // if (this.autoConnect) {\n const node = await this.getNode();\n liveInput.connect(node);\n // }\n }\n });\n}\n","export default () => (window.URL || window.webkitURL).createObjectURL(new Blob([\"(function(){/*\\n\\n Copyright The Closure Library Authors.\\n SPDX-License-Identifier: Apache-2.0\\n*/\\nvar $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(\\\".\\\");d=d||goog.global;a[0]in d||\\\"undefined\\\"==typeof d.execScript||d.execScript(\\\"var \\\"+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};\\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE=\\\"en\\\";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error(\\\"goog.provide cannot be used within a module.\\\");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace \\\"'+a+'\\\" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(\\\".\\\")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\\\\w+/_-]+[=]{0,2}$/;\\ngoog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector(\\\"script[nonce]\\\"))&&(a=a.nonce||a.getAttribute(\\\"nonce\\\"))&&goog.NONCE_PATTERN_.test(a)?a:\\\"\\\"};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\\ngoog.module=function(a){if(\\\"string\\\"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error(\\\"Invalid module identifier\\\");if(!goog.isInGoogModuleLoader_())throw Error(\\\"Module \\\"+a+\\\" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.\\\");if(goog.moduleLoaderState_.moduleName)throw Error(\\\"goog.module may only be called once per module.\\\");\\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace \\\"'+a+'\\\" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:\\\"es6\\\",GOOG:\\\"goog\\\"};goog.moduleLoaderState_=null;\\ngoog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?\\\"function\\\"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error(\\\"goog.module.declareLegacyNamespace must be called from within a goog.module\\\");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error(\\\"goog.module must be called prior to goog.module.declareLegacyNamespace.\\\");goog.moduleLoaderState_.declareLegacyNamespace=!0};\\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error(\\\"goog.declareModuleId may only be called from within an ES6 module\\\");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error(\\\"goog.declareModuleId may only be called once per module.\\\");if(a in goog.loadedModules_)throw Error('Module with namespace \\\"'+a+'\\\" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||\\\"function\\\"!=typeof b.getCurrentModulePath)throw Error('Module with namespace \\\"'+\\na+'\\\" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||\\\"\\\",Error(\\\"Importing test-only code into non-debug environment\\\"+(a?\\\": \\\"+a:\\\".\\\"));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={\\\"goog.module\\\":!0});\\ngoog.getObjectByName=function(a,b){a=a.split(\\\".\\\");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath=\\\"\\\";goog.abstractMethod=function(){throw Error(\\\"unimplemented abstract method\\\");};\\ngoog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE=\\\"detect\\\";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME=\\\"goog\\\";\\ngoog.hasBadLetScoping=null;\\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:\\\"\\\",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if(\\\"function\\\"===typeof a)d=a.call(void 0,d);else if(\\\"string\\\"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error(\\\"Invalid module definition\\\");var e=goog.moduleLoaderState_.moduleName;if(\\\"string\\\"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&\\nObject.seal&&\\\"object\\\"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name \\\"'+e+'\\\"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split(\\\"/\\\");for(var b=0;b<a.length;)\\\".\\\"==a[b]?a.splice(b,1):b&&\\\"..\\\"==a[b]&&a[b-1]&&\\\"..\\\"!=a[b-1]?a.splice(--b,2):b++;return a.join(\\\"/\\\")};\\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open(\\\"get\\\",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return\\\"object\\\"!=b?b:a?Array.isArray(a)?\\\"array\\\":b:\\\"null\\\"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return\\\"array\\\"==b||\\\"object\\\"==b&&\\\"number\\\"==typeof a.length};\\ngoog.isDateLike=function(a){return goog.isObject(a)&&\\\"function\\\"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return\\\"object\\\"==b&&null!=a||\\\"function\\\"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&\\\"removeAttribute\\\"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};\\ngoog.UID_PROPERTY_=\\\"closure_uid_\\\"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if(\\\"object\\\"==b||\\\"array\\\"==b){if(\\\"function\\\"===typeof a.clone)return a.clone();if(\\\"undefined\\\"!==typeof Map&&a instanceof Map)return new Map(a);if(\\\"undefined\\\"!==typeof Set&&a instanceof Set)return new Set(a);b=\\\"array\\\"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf(\\\"native code\\\")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};\\ngoog.getCssName=function(a,b){if(\\\".\\\"==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with \\\".\\\". You passed: '+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split(\\\"-\\\");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join(\\\"-\\\")};d=goog.cssNameMapping_?\\\"BY_WHOLE\\\"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+\\\"-\\\"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};\\ngoog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,\\\"&lt;\\\"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,\\\"<\\\").replace(/&gt;/g,\\\">\\\").replace(/&apos;/g,\\\"'\\\").replace(/&quot;/g,'\\\"').replace(/&amp;/g,\\\"&\\\"));b&&(a=a.replace(/\\\\{\\\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};\\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error(\\\"goog.scope is not supported within a module.\\\");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error(\\\"cannot instantiate an interface (no constructor defined).\\\");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_=\\\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\\\".split(\\\" \\\");\\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};\\ngoog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};\\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:\\\"\\\").match(/Edge\\\\/(\\\\d+)(\\\\.\\\\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&\\\"write\\\"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?\\\"complete\\\"!=a.readyState:\\\"loading\\\"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&\\\"string\\\"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=\\ngoog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName(\\\"SCRIPT\\\");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf(\\\"?\\\");d=-1==d?c.length:d;if(\\\"base.js\\\"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\\\\/(SCRIPT)/ig,\\\"\\\\\\\\x3c/$1\\\")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=\\n[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error(\\\"Unregonized namespace: \\\"+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},\\ngoog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+\\\"deps.js\\\"),\\\"deps.js\\\",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=\\nfunction(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error(\\\"Bad dependency path or symbol: \\\"+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_(\\\"goog.require could not find: \\\"+a)},goog.DebugLoader_.prototype.loadDeps_=\\nfunction(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error(\\\"Cannot call pause after the call to load.\\\");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error(\\\"Double call to loaded.\\\");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,\\nmoduleName:\\\"\\\",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||\\\"\\\"})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error(\\\"Cannot register with defer after the call to load.\\\");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};\\ntry{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==\\na.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?\\nthis.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=\\nfunction(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf(\\\"://\\\");0<=b&&(a=a.substring(b+3),b=a.indexOf(\\\"/\\\"),0<=b&&(a=a.substring(b+1)));return a},\\ngoog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},\\ngoog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error(\\\"Callback key \\\"+a+\\\" does not exist (was base.js loaded more than once?).\\\");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if(\\\"complete\\\"==\\nb.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write \\\"'+this.path+'\\\" after document load');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&\\\"complete\\\"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?' nonce=\\\"'+c+'\\\"':\\\"\\\";var f='<script src=\\\"'+this.path+'\\\"'+\\nc+(goog.Dependency.defer_?\\\" defer\\\":\\\"\\\")+' id=\\\"script-'+e+'\\\">\\\\x3c/script>';f+=\\\"<script\\\"+c+\\\">\\\";f=goog.Dependency.defer_?f+(\\\"document.getElementById('script-\\\"+e+\\\"').onload = function() {\\\\n goog.Dependency.callback_('\\\"+e+\\\"', this);\\\\n};\\\\n\\\"):f+(\\\"goog.Dependency.callback_('\\\"+e+\\\"', document.getElementById('script-\\\"+e+\\\"'));\\\");f+=\\\"\\\\x3c/script>\\\";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement(\\\"script\\\");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=\\nc);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_(\\\"Cannot use default debug loader outside of HTML documents.\\\"),\\\"deps.js\\\"==this.relativePath?(goog.logToConsole_(\\\"Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true.\\\"),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,\\nb,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,m){var n=\\\"\\\",p=goog.getScriptNonce_();p&&(n=' nonce=\\\"'+p+'\\\"');l=m?'<script type=\\\"module\\\" crossorigin'+n+\\\">\\\"+m+\\\"\\\\x3c/script>\\\":'<script type=\\\"module\\\" crossorigin src=\\\"'+l+'\\\"'+n+\\\">\\\\x3c/script>\\\";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,m){var n=d.createElement(\\\"script\\\");n.defer=!0;n.async=!1;n.type=\\\"module\\\";n.setAttribute(\\\"crossorigin\\\",\\n!0);var p=goog.getScriptNonce_();p&&(n.nonce=p);m?n.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(n)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);\\na.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_(\\\"'+g+'\\\")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from \\\"'+this.path+'\\\"; goog.Dependency.callback_(\\\"'+h+'\\\", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_(\\\"'+\\nk+'\\\")')}else goog.logToConsole_(\\\"Cannot use default debug loader outside of HTML documents.\\\"),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!(\\\"noModule\\\"in goog.global.document.createElement(\\\"script\\\"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=\\ne.transform(e.contents_),e.contents_&&(e.contents_+=\\\"\\\\n//# sourceURL=\\\"+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var l=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(l));if(f)var m=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),m)});a.loaded()}}\\nfunction d(){var l=goog.global.document,m=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(m);c()}),n=goog.getScriptNonce_();n=\\\"<script\\\"+(n?' nonce=\\\"'+n+'\\\"':\\\"\\\")+\\\">\\\"+goog.protectScriptTag_('goog.Dependency.callback_(\\\"'+m+'\\\");')+\\\"\\\\x3c/script>\\\";l.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(n):n)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT(\\\"\\\",this.contents_)?(this.contents_=null,a.loaded()):\\na.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&(\\\"ActiveXObject\\\"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){\\\"interactive\\\"==h.readyState&&(h.onreadystatechange=\\nk,c(),a.resume());\\\"function\\\"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,\\nc,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?\\\"goog.loadModule(\\\"+goog.global.JSON.stringify(a+\\\"\\\\n//# sourceURL=\\\"+this.path+\\\"\\\\n\\\")+\\\");\\\":'goog.loadModule(function(exports) {\\\"use strict\\\";'+a+\\\"\\\\n;return exports});\\\\n//# sourceURL=\\\"+this.path+\\\"\\\\n\\\"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=\\nb||[];a=a.replace(/\\\\\\\\/g,\\\"/\\\");var e=goog.normalizePath_(goog.basePath+a);d&&\\\"boolean\\\"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?\\nnew goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+\\\"#base\\\"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),\\ngoog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy(\\\"goog#base#devonly#eval\\\")||{createScript:goog.identity_}};const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.proxy\\\"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.endpoint\\\"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.releaseProxy\\\"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol(\\\"Comlink.thrown\\\"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>\\\"object\\\"===typeof a&&null!==a||\\\"function\\\"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=\\n{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&\\nthrowMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([[\\\"proxy\\\",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],[\\\"throw\\\",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);\\nfunction expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener(\\\"message\\\",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const m=h.slice(0,-1).reduce((p,q)=>p[q],a),n=h.reduce((p,q)=>p[q],a);switch(g){case \\\"GET\\\":var l=n;break;case \\\"SET\\\":m[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);\\nl=!0;break;case \\\"APPLY\\\":l=n.apply(m,k);break;case \\\"CONSTRUCT\\\":const p=new n(...k);l=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case \\\"ENDPOINT\\\":const {port1:q,port2:r}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,r);l=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case \\\"RELEASE\\\":l=void 0;break;default:return}}catch(m){l={value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(l).catch(m=>\\n({value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(m=>{const [n,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(m);b.postMessage(Object.assign(Object.assign({},n),{id:f}),p);\\\"RELEASE\\\"===g&&(b.removeEventListener(\\\"message\\\",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return\\\"MessagePort\\\"===a.constructor.name}\\nfunction closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error(\\\"Proxy has been released and is not useable\\\");}\\nfunction createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"RELEASE\\\",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if(\\\"then\\\"===\\ng){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"GET\\\",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,l]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\\n{type:\\\"SET\\\",path:[...b,g].map(m=>m.toString()),value:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"ENDPOINT\\\"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if(\\\"bind\\\"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\\nb.slice(0,-1));const [k,l]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:\\\"APPLY\\\",path:b.map(m=>m.toString()),argumentList:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\\n{type:\\\"CONSTRUCT\\\",path:b.map(l=>l.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}\\nfunction processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}\\nfunction proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c=\\\"*\\\"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}\\nfunction toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:\\\"HANDLER\\\",name:b,value:d},e]}return[{type:\\\"RAW\\\",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}\\nfunction fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case \\\"HANDLER\\\":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case \\\"RAW\\\":return a.value}}\\nfunction requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener(\\\"message\\\",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener(\\\"message\\\",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}\\nfunction generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join(\\\"-\\\")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;\\nmodule$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;\\nmodule$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};\\nvar LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b=\\\"log_with_warnings\\\"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error(\\\"Invalid log level \\\"+b+\\\" allowed: \\\"+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=\\nfunction(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e=\\\"log_with_warnings\\\"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>\\nmodule$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split(\\\"{}\\\");for(var k=[f.mockConsole,\\\"%c\\\"+b,c],l=0;l<h.length;l++)k.push(h[l]),void 0!==g[l]&&k.push(g[l]);if(h.length-1!==g.length)if(\\\"log_with_warnings\\\"===f.logLevel)f.mockConsole.error(\\\"MissMatch amount of arguments\\\");else if(\\\"log_raise_error\\\"===f.logLevel)throw Error(\\\"MissMatch amount of arguments\\\");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,\\nc){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return\\\"color: white; background-color: \\\"+b+\\\"; padding: 2px 6px; border-radius: 2px; font-size: 10px\\\"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^\\nd>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b=\\\"\\\");b=a.getHash(b);for(var c=\\\"#\\\",d=0;3>d;d++)c+=(\\\"00\\\"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,\\\"trace\\\"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,\\\"debug\\\"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,\\n\\\"info\\\"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,\\\"warn\\\"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,\\\"error\\\")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;\\nconst isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};\\nlogSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;\\nmodule$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;\\nmodule$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const handleCsoundStart$$module$src$workers$common_utils=(a,b,c,d,e)=>f=>{const {csound:g}=f,h=1===b.csoundShouldDaemonize(g);h&&(b.csoundSetOption(g,\\\"--daemon\\\"),b.csoundSetOption(g,\\\"-odac\\\"));const k=b.csoundStart(g),l=b.csoundGetOutputName(g)||\\\"test.wav\\\";logCommonUtils$$module$src$logger(`handleCsoundStart: actual csoundStart result ${k}, outputName: ${l}`)();0!==k&&a.post(`error: csoundStart failed while trying to render ${l},`+\\\" look out for errors in options and syntax\\\");setTimeout(()=>{const m=\\nb._isRequestingRtMidiInput(g);if(h||m||l.includes(\\\"dac\\\"))d(f);else if(a.broadcastPlayState(\\\"renderStarted\\\"),e)e(f);else for(;0===b.csoundPerformKsmps(g););},0);return k},instantiateAudioPacket$$module$src$workers$common_utils=(a,b)=>{const c=[];for(let d=0;d<a;d++)c.push(new Float64Array(b));return c},renderFunction$$module$src$workers$common_utils=({libraryCsound:a,workerMessagePort:b})=>async({csound:c})=>{const d=a.csoundGetKr(c);let e=0,f=0;for(;(\\\"renderStarted\\\"===b.vanillaWorkerState||\\\"renderStarted\\\"===\\nb.workerState)&&0===e;)e=a.csoundPerformKsmps(c),f+=1,\\\"function\\\"===typeof setTimeout&&0===e&&0===f%(2*d)&&await new Promise(g=>setTimeout(g,0));b.broadcastPlayState(\\\"renderEnded\\\")};var module$src$workers$common_utils={};module$src$workers$common_utils.handleCsoundStart=handleCsoundStart$$module$src$workers$common_utils;module$src$workers$common_utils.instantiateAudioPacket=instantiateAudioPacket$$module$src$workers$common_utils;module$src$workers$common_utils.renderFunction=renderFunction$$module$src$workers$common_utils;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;\\nMessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;const WebkitAudioContext$$module$src$utils$new_audio_context=()=>{if(void 0!==window.webkitAudioContext)return window.webkitAudioContext;if(void 0!==window.AudioContext)return window.AudioContext},newAudioContext$$module$src$utils$new_audio_context=()=>{const a=WebkitAudioContext$$module$src$utils$new_audio_context();if(a)return new a};var module$src$utils$new_audio_context={};module$src$utils$new_audio_context.WebkitAudioContext=WebkitAudioContext$$module$src$utils$new_audio_context;\\nmodule$src$utils$new_audio_context.newAudioContext=newAudioContext$$module$src$utils$new_audio_context;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}\\nfunction adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}\\nfunction and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}\\nfunction anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(\\\"string\\\"===typeof b)return b.split(\\\"\\\").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}\\nfunction apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;\\nfunction __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&\\\"constructor\\\"!==c&&(\\\"object\\\"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),\\\"function\\\"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}\\nfunction __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&\\\"undefined\\\"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}\\nfunction __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,\\nb,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;\\nfor(;d<f;d++){if(\\\"object\\\"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);\\\"function\\\"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&\\\"constructor\\\"!==e&&(\\\"object\\\"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):\\\"function\\\"===typeof a[e]&&(d[e]=a[e](...c)));return d}\\nfunction applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;\\nfunction assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=\\\"string\\\"===typeof a?a.split(\\\".\\\").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e=\\\"object\\\"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&\\nisArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}\\nfunction _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)}}}\\nfunction curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error(\\\"First argument to _arity must be a non-negative integer no greater than ten\\\");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}\\nfunction bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}\\nfunction chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error(\\\"min must not be greater than max in clamp(min, max, value)\\\");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]=\\\"object\\\"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}\\nclass ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError(\\\"reduce: list must be array or iterable\\\");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}\\nconst reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);\\nfunction _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)};default:throw Error(\\\"First argument to _arity must be a non-negative integer no greater than ten\\\");}}\\nfunction _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}\\nfunction pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error(\\\"pipe requires at least one argument\\\");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}\\nfunction compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error(\\\"compose requires at least one argument\\\");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):\\\"string\\\"===typeof a?`${a}${b}`:[...a,...b]}\\nfunction cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}\\nfunction mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\\nfunction map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\\nfunction max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}\\nfunction converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}\\nfunction count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}\\nconst dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}\\nfunction type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return\\\"Null\\\";if(void 0===a)return\\\"Undefined\\\";if(Number.isNaN(a))return\\\"NaN\\\";a=Object.prototype.toString.call(a).slice(8,-1);return\\\"AsyncFunction\\\"===a?\\\"Promise\\\":a}\\nfunction _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(![\\\"Object\\\",\\\"Array\\\",\\\"NaN\\\",\\\"RegExp\\\"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\\nfunction _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(![\\\"Object\\\",\\\"Array\\\",\\\"NaN\\\",\\\"RegExp\\\"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\\nfunction _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}\\nfunction parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return[\\\"Error\\\",\\\"TypeError\\\"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}\\nfunction equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if(\\\"Function\\\"===c)return void 0===a.name?!1:a.name===b.name;if([\\\"NaN\\\",\\\"Undefined\\\",\\\"Null\\\"].includes(c))return!0;if(\\\"Number\\\"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if([\\\"String\\\",\\\"Boolean\\\"].includes(c))return a.toString()===\\nb.toString();if(\\\"Array\\\"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);\\nif(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if(\\\"Set\\\"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if(\\\"Object\\\"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});\\nreturn f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(\\\"string\\\"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \\\\'indexOf\\\\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}\\nclass _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return[\\\"Null\\\",\\\"Undefined\\\",\\\"NaN\\\"].includes(b)?b in this.items?!1:this.items[b]=!0:[\\\"Object\\\",\\\"Array\\\"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}\\nfunction uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\\nfunction dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}\\nfunction drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}\\nfunction dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(\\\"function\\\"!==typeof a)throw Error(`'predicate' is from wrong type ${typeof a}`);if(!c&&\\\"string\\\"!==typeof b)throw Error(`'iterable' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):\\n(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join(\\\"\\\")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}\\nfunction dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}\\nfunction dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&\\\"string\\\"!==typeof b)throw Error(\\\"`iterable` is neither list nor a string\\\");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join(\\\"\\\")}\\nfunction either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}\\nfunction endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(\\\"string\\\"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}\\nfunction prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>\\\"Function\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}\\nfunction evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if(\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return\\\"Function\\\"===e?a[d](c):\\\"Object\\\"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return\\\"Function\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}\\nfunction evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error(\\\"iterableType !== rulesType\\\");if(![\\\"Object\\\",\\\"Array\\\"].includes(c))throw Error(`'iterable' and 'rules' are from wrong type ${c}`);return\\\"Object\\\"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,\\nb)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}\\nfunction filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(\\\"Incorrect iterable input\\\");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\\nfunction find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}\\nfunction findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}\\nfunction flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}\\nfunction flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error(\\\"R.flip doesn't work with arity > 4\\\");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}\\nfunction forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}\\nfunction fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}\\nfunction groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError(\\\"list.reduce is not a function\\\");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),l=0===e.length;h=h===b.length-1;if(k)return l&&e.push(f),e.push(g),h&&d.push(e),g;if(l)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},\\nvoid 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b=\\\".\\\"){return\\\"string\\\"===typeof a?a.split(b):a}\\nfunction path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}\\nfunction hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a[0]||\\\"\\\":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;\\nfunction identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===(\\\"boolean\\\"===typeof a?a:a(...d))?b(...d):c(...d)}\\nconst ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}\\nfunction indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(\\\"string\\\"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}\\nfunction indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}\\nfunction init$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}\\nfunction intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}\\nfunction isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return[\\\"Undefined\\\",\\\"NaN\\\",\\\"Number\\\",\\\"Null\\\"].includes(b)?!1:a?\\\"Object\\\"===b?0===Object.keys(a).length:\\\"Array\\\"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}\\nfunction join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a[a.length-1]||\\\"\\\":a[a.length-1]}\\nfunction lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||\\\"string\\\"===typeof a?a.length:NaN}\\nfunction lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return\\\"[object String]\\\"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}\\nfunction updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}\\nfunction lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}\\nfunction mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}\\nfunction mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}\\nfunction mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}\\nfunction mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}\\nconst mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}\\nfunction _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,\\nd,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||\\\"Object\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}\\nfunction modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],\\nb,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}\\nfunction moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error(\\\"Rambda.move does not support negative indexes\\\");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}\\nfunction not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}\\nfunction omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,\\\",\\\"),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}\\nfunction on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}\\nfunction once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});\\nfunction overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\\nfunction partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}\\nfunction partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\\nfunction pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\\nfunction pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,\\\",\\\"),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}\\nfunction pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,\\\",\\\"),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}\\nfunction pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):\\\"string\\\"===typeof b?[a].concat(b.split(\\\"\\\")):[a].concat(b)}\\nconst product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(\\\"propsToPick is not a list\\\");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}\\nconst propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError(\\\"Both arguments to range must be numbers\\\");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}\\nfunction reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}\\nconst replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"string\\\"===typeof a?a.split(\\\"\\\").reverse().join(\\\"\\\"):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}\\nconst set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);\\nfunction sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}\\nfunction split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&\\\"Function\\\"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||\\\"Function\\\"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}\\nfunction take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():\\\"string\\\"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}\\nfunction splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property 'slice' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&\\\"string\\\"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,\\nb)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error(\\\"First argument to splitEvery must be a positive integer\\\");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}\\nfunction splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property 'length' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}\\nfunction startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(\\\"string\\\"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}\\nfunction subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}\\nfunction symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}\\nfunction T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}\\nfunction takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return\\\"string\\\"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}\\nfunction takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join(\\\"\\\")}\\nfunction takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&\\\"string\\\"!==typeof b)throw Error(\\\"`iterable` is neither list nor a string\\\");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join(\\\"\\\")}\\nfunction tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(\\\"string\\\"===typeof a)throw new TypeError(`\\\\u2018test\\\\u2019 requires a value of type RegExp as its first argument; received \\\"${a}\\\"`);return-1!==b.search(a)}\\nfunction times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError(\\\"n must be an integer\\\");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}\\nfunction toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}\\nfunction trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>[\\\"Promise\\\",\\\"Function\\\"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));\\nfunction tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn '${a}'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}\\nfunction union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}\\nfunction uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}\\nfunction uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}\\nfunction unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}\\nfunction values$$module$node_modules$rambda$dist$rambda_mjs(a){return\\\"Object\\\"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}\\nfunction whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}\\nfunction whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}\\nfunction whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}\\nfunction without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}\\nfunction zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}\\nfunction zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;\\nmodule$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;let startPromize$$module$src$workers$old_spn_worker;\\nconst getAudioContext$$module$src$workers$old_spn_worker=a=>window[a]||window.parent[`__csound_wasm_iframe_parent_${a}`]||newAudioContext$$module$src$utils$new_audio_context(),closeAndDeleteContext$$module$src$workers$old_spn_worker=async a=>{const b=window[a],c=window.parent[`__csound_wasm_iframe_parent_${a}`];if(b){if(\\\"closed\\\"!==b.state)try{await b.close()}catch(d){}delete window[a]}if(c){if(b!==c&&\\\"closed\\\"!==c.state)try{await c.close()}catch(d){}delete window.parent[`__csound_wasm_iframe_parent_${a}`]}},getAudioNode$$module$src$workers$old_spn_worker=\\na=>window[a+\\\"Node\\\"]||window.parent[`__csound_wasm_iframe_parent_${a}Node`],setAudioNode$$module$src$workers$old_spn_worker=(a,b)=>{window[a]?window[`${a}Node`]=b:window.parent[`__csound_wasm_iframe_parent_${a}Node`]=b},disconnectAudioNode$$module$src$workers$old_spn_worker=a=>{(a=getAudioNode$$module$src$workers$old_spn_worker(a))&&a.disconnect()},deleteAudioNode$$module$src$workers$old_spn_worker=a=>{window[a+\\\"Node\\\"]&&delete window[a+\\\"Node\\\"];window.parent[`__csound_wasm_iframe_parent_${a}Node`]&&\\ndelete window.parent[`__csound_wasm_iframe_parent_${a}Node`]},PERIODS$$module$src$workers$old_spn_worker=4,spnInstances$$module$src$workers$old_spn_worker=new Map;\\nclass CsoundScriptNodeProcessor$$module$src$workers$old_spn_worker{constructor({audioContext:a,contextUid:b,hardwareBufferSize:c,softwareBufferSize:d,inputsCount:e,outputsCount:f,sampleRate:g,audioContextIsProvided:h,autoConnect:k}){this.autoConnect=k;this.audioContextIsProvided=h;this.hardwareBufferSize=c;this.softwareBufferSize=d;this.inputsCount=e;this.outputsCount=f;this.sampleRate=g;this.vanillaOutputChannels=[];this.vanillaInputChannels=[];this.pendingFrames=this.vanillaAvailableFrames=this.vanillaInputReadIndex=\\nthis.vanillaOutputReadIndex=0;this.vanillaFirstTransferDone=this.vanillaInitialized=!1;this.vanillaInputChannels=instantiateAudioPacket$$module$src$workers$common_utils(e,c);this.vanillaOutputChannels=instantiateAudioPacket$$module$src$workers$common_utils(f,c);this.audioContext=a;this.contextUid=b;this.scriptNode=this.audioContext.createScriptProcessor(this.softwareBufferSize,e,f);this.process=this.process.bind(this);a=this.process.bind(this);this.scriptNode.onaudioprocess=a;this.autoConnect?setAudioNode$$module$src$workers$old_spn_worker(b,\\nthis.scriptNode.connect(this.audioContext.destination)):setAudioNode$$module$src$workers$old_spn_worker(b,this.scriptNode.context.destination);this.updateVanillaFrames=this.updateVanillaFrames.bind(this);this.initCallbacks=this.initCallbacks.bind(this)}async initCallbacks({workerMessagePort:a,transferInputFrames:b,requestPort:c}){this.workerMessagePort=a;this.transferInputFrames=b;this.requestPort=c;if(\\\"suspended\\\"===this.audioContext.state){for(a=0;100>a;)if(await new Promise(d=>setTimeout(d,100)),\\n\\\"suspended\\\"===this.audioContext.state)a+=1;else return;this.workerMessagePort.broadcastPlayState(\\\"realtimePerformancePaused\\\")}}updateVanillaFrames({audioPacket:a,numFrames:b,readIndex:c}){this.pendingFrames-=b;if(a){for(let d=0;d<this.outputsCount;++d){let e=!1,f=b;(c+b)%this.hardwareBufferSize<c&&(e=!0,f=this.hardwareBufferSize-c);this.vanillaOutputChannels[d].set(a[d].subarray(0,f),c);e&&this.vanillaOutputChannels[d].set(a[d].subarray(f))}this.vanillaAvailableFrames+=b}this.vanillaFirstTransferDone||\\n(this.vanillaFirstTransferDone=!0,startPromize$$module$src$workers$old_spn_worker&&startPromize$$module$src$workers$old_spn_worker())}process({inputBuffer:a,outputBuffer:b}){if(\\\"realtimePerformanceEnded\\\"===this.workerMessagePort.vanillaWorkerState)return setPlayState$$module$src$workers$old_spn_worker({contextUid:this.contextUid,newPlayState:\\\"realtimePerformanceEnded\\\"}),!0;if(!this.vanillaInitialized){var c=this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker;this.requestPort.postMessage({readIndex:0,\\nnumFrames:c});this.pendingFrames+=c;return this.vanillaInitialized=!0}if(!this.vanillaFirstTransferDone)return!0;c=range$$module$node_modules$rambda$dist$rambda_mjs(0,this.inputsCount).map(h=>a.getChannelData(h));const d=range$$module$node_modules$rambda$dist$rambda_mjs(0,this.outputsCount).map(h=>b.getChannelData(h));var e=0<c.length;const f=(this.vanillaOutputReadIndex+d[0].length)%this.hardwareBufferSize,g=e?(this.vanillaInputReadIndex+c[0].length)%this.hardwareBufferSize:0;if(\\\"realtimePerformanceStarted\\\"!==\\nthis.workerMessagePort.vanillaWorkerState&&\\\"realtimePerformanceResumed\\\"!==this.workerMessagePort.vanillaWorkerState)return d.forEach(h=>{h.fill(0)}),!0;if(this.vanillaAvailableFrames>=d[0].length){d.forEach((h,k)=>{h.set(this.vanillaOutputChannels[k].subarray(this.vanillaOutputReadIndex,f<this.vanillaOutputReadIndex?this.hardwareBufferSize:f))});if(0<this.inputsCount&&e&&0<c[0].length&&(e=this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker,c.forEach((h,k)=>{this.vanillaInputChannels[k].set(h,\\nthis.vanillaInputReadIndex)}),0===g%e)){const h=[],k=(0===g?this.hardwareBufferSize:g)-e,l=0===g?this.hardwareBufferSize:g;this.vanillaInputChannels.forEach(m=>{h.push(m.subarray(k,l))});this.transferInputFrames(h)}this.vanillaOutputReadIndex=f;this.vanillaInputReadIndex=g;this.vanillaAvailableFrames-=d[0].length;this.bufferUnderrunCount=0}else 1<this.bufferUnderrunCount&&12>this.bufferUnderrunCount&&(this.workerMessagePort.post(\\\"Buffer underrun\\\"),this.bufferUnderrunCount+=1),100===this.bufferUnderrunCount&&\\n(this.workerMessagePort.post(\\\"FATAL: 100 buffers failed in a row\\\"),this.workerMessagePort.broadcastPlayState(\\\"realtimePerformanceEnded\\\"));this.vanillaAvailableFrames<this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker&&this.pendingFrames<this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker&&(this.requestPort.postMessage({readIndex:(this.vanillaAvailableFrames+f+this.pendingFrames)%this.hardwareBufferSize,numFrames:this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker}),\\nthis.pendingFrames+=this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker);return!0}}\\nconst initAudioInputPort$$module$src$workers$old_spn_worker=({audioInputPort:a})=>b=>a.postMessage(b),initMessagePort$$module$src$workers$old_spn_worker=({port:a})=>{const b=new $jscompDefaultExport$$module$src$utils$message_port_state;b.post=c=>a.postMessage({log:c});b.broadcastPlayState=c=>{\\\"realtimePerformanceStarted\\\"===b.vanillaWorkerState&&\\\"realtimePerformanceStarted\\\"===c||a.postMessage({playStateChange:c})};b.ready=!0;return b},initRequestPort$$module$src$workers$old_spn_worker=({requestPort:a,\\nspnClassInstance:b})=>{a.addEventListener(\\\"message\\\",c=>{const {audioPacket:d,readIndex:e,numFrames:f}=c.data;b.updateVanillaFrames({audioPacket:d,numFrames:f,readIndex:e})});a.start();return a},setPlayState$$module$src$workers$old_spn_worker=async({contextUid:a,newPlayState:b})=>{const c=spnInstances$$module$src$workers$old_spn_worker.get(a);c&&(\\\"resume\\\"===b?(\\\"suspended\\\"===c.audioContext.state&&c.audioContext.resume(),\\\"running\\\"===c.audioContext.state&&c.workerMessagePort.broadcastPlayState(\\\"realtimePerformanceResumed\\\")):\\nc.workerMessagePort&&(\\\"realtimePerformanceEnded\\\"===b&&\\\"realtimePerformanceEnded\\\"!==c.workerMessagePort.vanillaWorkerState?(c.workerMessagePort.broadcastPlayState(\\\"realtimePerformanceEnded\\\"),c.autoConnect&&disconnectAudioNode$$module$src$workers$old_spn_worker(a),deleteAudioNode$$module$src$workers$old_spn_worker(a),spnInstances$$module$src$workers$old_spn_worker.delete(a),c.autoConnect&&!c.audioContextIsProvided&&closeAndDeleteContext$$module$src$workers$old_spn_worker(a)):\\\"realtimePerformanceResumed\\\"===\\nb&&\\\"suspended\\\"===c.audioContext.state&&c.audioContext.resume(),c.workerMessagePort.vanillaWorkerState=b))},initialize$$module$src$workers$old_spn_worker=async({contextUid:a,hardwareBufferSize:b,softwareBufferSize:c,inputsCount:d,outputsCount:e,sampleRate:f,audioInputPort:g,messagePort:h,requestPort:k,audioContextIsProvided:l,autoConnect:m,initialPlayState:n})=>{logOldSpnWorker$$module$src$logger(\\\"initializing old-spn worker in iframe\\\")();startPromize$$module$src$workers$old_spn_worker=void 0;const p=\\ngetAudioContext$$module$src$workers$old_spn_worker(a);b=new CsoundScriptNodeProcessor$$module$src$workers$old_spn_worker({audioContext:p,contextUid:a,hardwareBufferSize:b,softwareBufferSize:c,inputsCount:d,outputsCount:e,sampleRate:f,audioContextIsProvided:l,autoConnect:m});h=initMessagePort$$module$src$workers$old_spn_worker({port:h});g=initAudioInputPort$$module$src$workers$old_spn_worker({audioInputPort:g,spnClassInstance:b});initRequestPort$$module$src$workers$old_spn_worker({requestPort:k,spnClassInstance:b});\\nb.initCallbacks({workerMessagePort:h,transferInputFrames:g,requestPort:k});spnInstances$$module$src$workers$old_spn_worker.set(a,b);if(\\\"realtimePerformanceStarted\\\"===n)return await new Promise((q,r)=>{startPromize$$module$src$workers$old_spn_worker=q;setTimeout(()=>{if(\\\"function\\\"===typeof startPromize$$module$src$workers$old_spn_worker)return r(Error(\\\"a call to start() timed out\\\")),startPromize$$module$src$workers$old_spn_worker=void 0,-1},6E5)})};\\nexpose$$module$node_modules$comlink$dist$esm$comlink_mjs({initialize:initialize$$module$src$workers$old_spn_worker,setPlayState:setPlayState$$module$src$workers$old_spn_worker},windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(window.parent));var module$src$workers$old_spn_worker={};}).call(this);\\n//# sourceMappingURL=__compiled.old-spn.worker.js.map\\n\"]));","import * as Comlink from \"comlink/dist/esm/comlink.mjs\";\nimport { logOldSpnMain as log } from \"../logger\";\nimport { WebkitAudioContext } from \"../utils\";\nimport { requestMidi } from \"../utils/request-midi\";\nimport { requestMicrophoneNode } from \"./io.utils\";\nimport ScriptProcessorNodeWorker from \"../../dist/__compiled.old-spn.worker.inline.js\";\n\n// we reuse the spnWorker\n// since it handles multiple\n// audio Contexts via UID.\nlet spnWorker;\nlet proxyPort;\n\nlet UID = 0;\n\nclass ScriptProcessorNodeMainThread {\n constructor({ audioContext, audioContextIsProvided, autoConnect }) {\n this.autoConnect = autoConnect;\n this.audioContextIsProvided = audioContextIsProvided;\n\n this.audioContext = audioContext;\n this.currentPlayState = undefined;\n this.csoundWorkerMain = undefined;\n\n // never default these, get it from\n // csound-worker before starting\n this.sampleRate = undefined;\n this.inputsCount = undefined;\n this.outputsCount = undefined;\n this.hardwareBufferSize = undefined;\n this.softwareBufferSize = undefined;\n\n this.scriptProcessorNode = true;\n log(\"ScriptProcessorNodeMainThread was constructed\")();\n }\n\n async terminateInstance() {\n if (window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]) {\n window[`__csound_wasm_iframe_parent_${this.contextUid}Node`].disconnect();\n delete window[`__csound_wasm_iframe_parent_${this.contextUid}Node`];\n }\n if (this.audioContext) {\n if (this.audioContext.state !== \"closed\") {\n try {\n await this.audioContext.close();\n } catch (error) {}\n }\n delete this.audioContext;\n }\n if (proxyPort) {\n proxyPort[Comlink.releaseProxy]();\n proxyPort = undefined;\n }\n if (this.iFrameElement) {\n this.iFrameElement.remove();\n }\n spnWorker = undefined;\n UID = 0;\n }\n\n async onPlayStateChange(newPlayState) {\n if (this.currentPlayState === newPlayState) {\n return;\n }\n\n switch (newPlayState) {\n case \"realtimePerformanceStarted\": {\n log(\"event received: realtimePerformanceStarted\")();\n this.currentPlayState = newPlayState;\n await this.initialize();\n await this.csoundWorkerMain.eventPromises.releaseStartPromise();\n this.publicEvents.triggerRealtimePerformanceStarted(this.csoundWorkerMain);\n break;\n }\n case \"realtimePerformanceEnded\": {\n log(\"event received: realtimePerformanceEnded\")();\n if (window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]) {\n window[`__csound_wasm_iframe_parent_${this.contextUid}Node`].disconnect();\n delete window[`__csound_wasm_iframe_parent_${this.contextUid}Node`];\n }\n break;\n }\n\n case \"realtimePerformancePaused\": {\n if (this.csoundWorkerMain && this.csoundWorkerMain.eventPromises) {\n this.csoundWorkerMain.publicEvents &&\n this.csoundWorkerMain.publicEvents.triggerRealtimePerformancePaused(this);\n await this.csoundWorkerMain.eventPromises.releasePausePromise();\n }\n break;\n }\n\n case \"realtimePerformanceResumed\": {\n if (this.csoundWorkerMain && this.csoundWorkerMain.eventPromises) {\n this.csoundWorkerMain.publicEvents &&\n this.csoundWorkerMain.publicEvents.triggerRealtimePerformanceResumed(this);\n await this.csoundWorkerMain.eventPromises.releaseResumePromise();\n }\n break;\n }\n\n default: {\n break;\n }\n }\n this.currentPlayState = newPlayState;\n if (\n proxyPort &&\n (newPlayState !== \"realtimePerformanceStarted\" || newPlayState !== \"renderStarted\")\n ) {\n await proxyPort.setPlayState({\n contextUid: this.contextUid,\n newPlayState,\n });\n }\n }\n\n async initIframe() {\n // HACK FROM (but it works just fine when adding modern security models)\n // https://github.com/GoogleChromeLabs/audioworklet-polyfill/blob/274792e5e3d189e04c9496bed24129118539b4b5/src/realm.js#L18-L20\n if (window === undefined || window.document === undefined) {\n throw new TypeError(\"Can only run SPN in Browser scope\");\n }\n\n const parentScope = window.document;\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const iFrameHtml = [\n `<!doctype html>`,\n `<html lang=\"en\">`,\n `<head>`,\n `<meta charset=\"UTF-8\">`,\n `</head>`,\n `<body>`,\n `<script type=\"text/javascript\" src=\"${ScriptProcessorNodeWorker()}\">\u003c/script>`,\n `</body>`,\n ].join(\"\\n\");\n\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const iFrameBlob = new Blob([iFrameHtml], { type: \"text/html\" });\n this.iFrameElement = document.createElement(\"iframe\");\n\n this.iFrameElement.src = URL.createObjectURL(iFrameBlob);\n this.iFrameElement.sandbox.add(\"allow-scripts\", \"allow-same-origin\");\n\n this.iFrameElement.style.cssText = \"position:absolute;left:0;top:-999px;width:1px;height:1px;\";\n\n // appending early to have access to contentWindow\n // eslint-disable-next-line unicorn/prevent-abbreviations\n const iFrameOnLoad = new Promise((resolve) => {\n // eslint-disable-next-line unicorn/prefer-add-event-listener\n this.iFrameElement.onload = () => {\n resolve();\n };\n });\n\n parentScope.body.append(this.iFrameElement);\n\n try {\n await iFrameOnLoad;\n } catch (error) {\n console.error(error);\n }\n\n spnWorker = this.iFrameElement.contentWindow;\n }\n\n async initialize() {\n if (!spnWorker) {\n await this.initIframe();\n if (!spnWorker) {\n console.error(\"SPN FATAL: Couldn't create iFrame\");\n return;\n }\n }\n const contextUid = `audioWorklet${UID}`;\n this.contextUid = contextUid;\n UID += 1;\n\n if (!proxyPort) {\n proxyPort = Comlink.wrap(Comlink.windowEndpoint(spnWorker));\n }\n\n if (!this.audioContext) {\n if (this.audioContextIsProvided) {\n console.error(`fatal: the provided AudioContext was undefined`);\n }\n this.audioContext = new (WebkitAudioContext())({ sampleRate: this.sampleRate });\n }\n if (this.audioContext.state === \"closed\") {\n if (this.audioContextIsProvided) {\n console.error(`fatal: the provided AudioContext was closed, falling back new AudioContext`);\n }\n this.audioContext = new (WebkitAudioContext())({ sampleRate: this.sampleRate });\n }\n\n if (!this.audioContextIsProvided && this.sampleRate !== this.audioContext.sampleRate) {\n this.audioContext = new (WebkitAudioContext())({ sampleRate: this.sampleRate });\n }\n\n // just set it both on parent and iframe\n // since 1 works on linux and other one on mac\n // leaking globals indeed\n spnWorker[contextUid] = this.audioContext;\n window[`__csound_wasm_iframe_parent_${contextUid}`] = this.audioContext;\n\n let liveInput;\n if (this.isRequestingInput) {\n await new Promise((resolve) => {\n const microphoneCallback = (stream) => {\n if (stream) {\n liveInput = this.audioContext.createMediaStreamSource(stream);\n }\n resolve();\n };\n requestMicrophoneNode(microphoneCallback);\n });\n }\n\n log(\"initializing proxyPort\")();\n\n await proxyPort.initialize(\n Comlink.transfer(\n {\n contextUid,\n hardwareBufferSize: 32768,\n softwareBufferSize: 2048,\n inputsCount: this.inputsCount,\n outputsCount: this.outputsCount,\n sampleRate: this.sampleRate,\n audioInputPort: this.ipcMessagePorts.audioWorkerAudioInputPort,\n messagePort: this.ipcMessagePorts.workerMessagePort2,\n requestPort: this.ipcMessagePorts.audioWorkerFrameRequestPort,\n audioContextIsProvided: this.audioContextIsProvided,\n autoConnect: this.autoConnect,\n initialPlayState: this.currentPlayState,\n },\n [\n this.ipcMessagePorts.audioWorkerAudioInputPort,\n this.ipcMessagePorts.workerMessagePort2,\n this.ipcMessagePorts.audioWorkerFrameRequestPort,\n ],\n ),\n );\n log(\"done initializing proxyPort\")();\n\n const audioNode =\n spnWorker[`${contextUid}Node`] || window[`__csound_wasm_iframe_parent_${contextUid}Node`];\n audioNode && liveInput && liveInput.connect(audioNode);\n\n this.publicEvents.triggerOnAudioNodeCreated(audioNode);\n\n if (this.isRequestingMidi && this.csoundWorkerMain && this.csoundWorkerMain.handleMidiInput) {\n log(\"requesting for web-midi connection\")();\n requestMidi({\n onMidiMessage: this.csoundWorkerMain.handleMidiInput.bind(this.csoundWorkerMain),\n });\n }\n }\n}\n\nexport default ScriptProcessorNodeMainThread;\n","export const dlinit = (hostInstance, pluginInstance, table, csoundInstance) => {\n if (pluginInstance.exports.csoundModuleInit) {\n const csoundModuleCreate = new WebAssembly.Global({ value: \"i32\", mutable: true }, 0);\n const csoundModuleInit = new WebAssembly.Global({ value: \"i32\", mutable: true }, 0);\n const csoundModuleDestroy = new WebAssembly.Global({ value: \"i32\", mutable: true }, 0);\n const csoundModuleErrorCodeToString = new WebAssembly.Global(\n { value: \"i32\", mutable: true },\n 0,\n );\n\n let tableEnd = table.length;\n\n if (typeof pluginInstance.exports.csoundModuleCreate === \"function\") {\n table.grow(1);\n csoundModuleCreate.value = tableEnd;\n table.set(tableEnd, pluginInstance.exports.csoundModuleCreate);\n tableEnd += 1;\n }\n\n if (typeof pluginInstance.exports.csoundModuleInit === \"function\") {\n table.grow(1);\n csoundModuleInit.value = tableEnd;\n table.set(tableEnd, pluginInstance.exports.csoundModuleInit);\n tableEnd += 1;\n }\n\n if (typeof pluginInstance.exports.csoundModuleDestroy === \"function\") {\n table.grow(1);\n csoundModuleDestroy.value = tableEnd;\n table.set(tableEnd, pluginInstance.exports.csoundModuleDestroy);\n tableEnd += 1;\n }\n\n if (typeof pluginInstance.exports.csoundModuleErrorCodeToString === \"function\") {\n table.grow(1);\n csoundModuleErrorCodeToString.value = tableEnd;\n table.set(tableEnd, pluginInstance.exports.csoundModuleErrorCodeToString);\n tableEnd += 1;\n }\n\n hostInstance.exports.csoundWasiLoadPlugin(\n csoundInstance,\n csoundModuleCreate,\n csoundModuleInit,\n csoundModuleDestroy,\n csoundModuleErrorCodeToString,\n );\n } else if (pluginInstance.exports.csound_opcode_init || pluginInstance.exports.csound_fgen_init) {\n const csoundOpcodeInit = new WebAssembly.Global({ value: \"i32\", mutable: true }, 0);\n const csoundFgenInit = new WebAssembly.Global({ value: \"i32\", mutable: true }, 0);\n\n let tableEnd = table.length;\n\n if (typeof pluginInstance.exports.csound_opcode_init === \"function\") {\n csoundOpcodeInit.value = tableEnd;\n table.grow(1);\n table.set(tableEnd, pluginInstance.exports.csound_opcode_init);\n tableEnd += 1;\n }\n\n if (typeof pluginInstance.exports.csound_fgen_init === \"function\") {\n csoundFgenInit.value = tableEnd;\n table.grow(1);\n table.set(tableEnd, pluginInstance.exports.csound_fgen_init);\n tableEnd += 1;\n }\n\n hostInstance.exports.csoundWasiLoadOpcodeLibrary(\n csoundInstance,\n csoundFgenInit,\n csoundOpcodeInit,\n );\n } else {\n console.error(\"Plugin doesn't export nececcary functions to quality as csound plugin.\");\n }\n};\n","/*\nThis file is based on @wasmerio/wasi-js which in turn is based on\nwasi Node implementation made by Gus Caplan.\n * https://github.com/wasmerio/wasmer-js\n * https://github.com/devsnek/node-wasi\n\nCopyright 2017 Syrus <me@syrusakbary.com>\nCopyright 2019 Gus Caplan\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to\ndeal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or\nsell copies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.\n*/\n\nif (goog.global !== undefined) {\n goog.global = {};\n}\n\nif (!goog.global.BigInt) {\n goog.global.BigInt = BigInt === undefined ? Number : BigInt;\n}\n\nexport const WASI_ESUCCESS = 0;\nexport const WASI_E2BIG = 1;\nexport const WASI_EACCES = 2;\nexport const WASI_EADDRINUSE = 3;\nexport const WASI_EADDRNOTAVAIL = 4;\nexport const WASI_EAFNOSUPPORT = 5;\nexport const WASI_EAGAIN = 6;\nexport const WASI_EALREADY = 7;\nexport const WASI_EBADF = 8;\nexport const WASI_EBADMSG = 9;\nexport const WASI_EBUSY = 10;\nexport const WASI_ECANCELED = 11;\nexport const WASI_ECHILD = 12;\nexport const WASI_ECONNABORTED = 13;\nexport const WASI_ECONNREFUSED = 14;\nexport const WASI_ECONNRESET = 15;\nexport const WASI_EDEADLK = 16;\nexport const WASI_EDESTADDRREQ = 17;\nexport const WASI_EDOM = 18;\nexport const WASI_EDQUOT = 19;\nexport const WASI_EEXIST = 20;\nexport const WASI_EFAULT = 21;\nexport const WASI_EFBIG = 22;\nexport const WASI_EHOSTUNREACH = 23;\nexport const WASI_EIDRM = 24;\nexport const WASI_EILSEQ = 25;\nexport const WASI_EINPROGRESS = 26;\nexport const WASI_EINTR = 27;\nexport const WASI_EINVAL = 28;\nexport const WASI_EIO = 29;\nexport const WASI_EISCONN = 30;\nexport const WASI_EISDIR = 31;\nexport const WASI_ELOOP = 32;\nexport const WASI_EMFILE = 33;\nexport const WASI_EMLINK = 34;\nexport const WASI_EMSGSIZE = 35;\nexport const WASI_EMULTIHOP = 36;\nexport const WASI_ENAMETOOLONG = 37;\nexport const WASI_ENETDOWN = 38;\nexport const WASI_ENETRESET = 39;\nexport const WASI_ENETUNREACH = 40;\nexport const WASI_ENFILE = 41;\nexport const WASI_ENOBUFS = 42;\nexport const WASI_ENODEV = 43;\nexport const WASI_ENOENT = 44;\nexport const WASI_ENOEXEC = 45;\nexport const WASI_ENOLCK = 46;\nexport const WASI_ENOLINK = 47;\nexport const WASI_ENOMEM = 48;\nexport const WASI_ENOMSG = 49;\nexport const WASI_ENOPROTOOPT = 50;\nexport const WASI_ENOSPC = 51;\nexport const WASI_ENOSYS = 52;\nexport const WASI_ENOTCONN = 53;\nexport const WASI_ENOTDIR = 54;\nexport const WASI_ENOTEMPTY = 55;\nexport const WASI_ENOTRECOVERABLE = 56;\nexport const WASI_ENOTSOCK = 57;\nexport const WASI_ENOTSUP = 58;\nexport const WASI_ENOTTY = 59;\nexport const WASI_ENXIO = 60;\nexport const WASI_EOVERFLOW = 61;\nexport const WASI_EOWNERDEAD = 62;\nexport const WASI_EPERM = 63;\nexport const WASI_EPIPE = 64;\nexport const WASI_EPROTO = 65;\nexport const WASI_EPROTONOSUPPORT = 66;\nexport const WASI_EPROTOTYPE = 67;\nexport const WASI_ERANGE = 68;\nexport const WASI_EROFS = 69;\nexport const WASI_ESPIPE = 70;\nexport const WASI_ESRCH = 71;\nexport const WASI_ESTALE = 72;\nexport const WASI_ETIMEDOUT = 73;\nexport const WASI_ETXTBSY = 74;\nexport const WASI_EXDEV = 75;\nexport const WASI_ENOTCAPABLE = 76;\n\nexport const WASI_SIGABRT = 0;\nexport const WASI_SIGALRM = 1;\nexport const WASI_SIGBUS = 2;\nexport const WASI_SIGCHLD = 3;\nexport const WASI_SIGCONT = 4;\nexport const WASI_SIGFPE = 5;\nexport const WASI_SIGHUP = 6;\nexport const WASI_SIGILL = 7;\nexport const WASI_SIGINT = 8;\nexport const WASI_SIGKILL = 9;\nexport const WASI_SIGPIPE = 10;\nexport const WASI_SIGQUIT = 11;\nexport const WASI_SIGSEGV = 12;\nexport const WASI_SIGSTOP = 13;\nexport const WASI_SIGTERM = 14;\nexport const WASI_SIGTRAP = 15;\nexport const WASI_SIGTSTP = 16;\nexport const WASI_SIGTTIN = 17;\nexport const WASI_SIGTTOU = 18;\nexport const WASI_SIGURG = 19;\nexport const WASI_SIGUSR1 = 20;\nexport const WASI_SIGUSR2 = 21;\nexport const WASI_SIGVTALRM = 22;\nexport const WASI_SIGXCPU = 23;\nexport const WASI_SIGXFSZ = 24;\n\nexport const WASI_FILETYPE_UNKNOWN = 0;\nexport const WASI_FILETYPE_BLOCK_DEVICE = 1;\nexport const WASI_FILETYPE_CHARACTER_DEVICE = 2;\nexport const WASI_FILETYPE_DIRECTORY = 3;\nexport const WASI_FILETYPE_REGULAR_FILE = 4;\nexport const WASI_FILETYPE_SOCKET_DGRAM = 5;\nexport const WASI_FILETYPE_SOCKET_STREAM = 6;\nexport const WASI_FILETYPE_SYMBOLIC_LINK = 7;\n\nexport const WASI_FDFLAG_APPEND = 0x0001;\nexport const WASI_FDFLAG_DSYNC = 0x0002;\nexport const WASI_FDFLAG_NONBLOCK = 0x0004;\nexport const WASI_FDFLAG_RSYNC = 0x0008;\nexport const WASI_FDFLAG_SYNC = 0x0010;\n\nexport const WASI_RIGHT_FD_DATASYNC = goog.global.BigInt(0x0000000000000001);\nexport const WASI_RIGHT_FD_READ = goog.global.BigInt(0x0000000000000002);\nexport const WASI_RIGHT_FD_SEEK = goog.global.BigInt(0x0000000000000004);\nexport const WASI_RIGHT_FD_FDSTAT_SET_FLAGS = goog.global.BigInt(0x0000000000000008);\nexport const WASI_RIGHT_FD_SYNC = goog.global.BigInt(0x0000000000000010);\nexport const WASI_RIGHT_FD_TELL = goog.global.BigInt(0x0000000000000020);\nexport const WASI_RIGHT_FD_WRITE = goog.global.BigInt(0x0000000000000040);\nexport const WASI_RIGHT_FD_ADVISE = goog.global.BigInt(0x0000000000000080);\nexport const WASI_RIGHT_FD_ALLOCATE = goog.global.BigInt(0x0000000000000100);\nexport const WASI_RIGHT_PATH_CREATE_DIRECTORY = goog.global.BigInt(0x0000000000000200);\nexport const WASI_RIGHT_PATH_CREATE_FILE = goog.global.BigInt(0x0000000000000400);\nexport const WASI_RIGHT_PATH_LINK_SOURCE = goog.global.BigInt(0x0000000000000800);\nexport const WASI_RIGHT_PATH_LINK_TARGET = goog.global.BigInt(0x0000000000001000);\nexport const WASI_RIGHT_PATH_OPEN = goog.global.BigInt(0x0000000000002000);\nexport const WASI_RIGHT_FD_READDIR = goog.global.BigInt(0x0000000000004000);\nexport const WASI_RIGHT_PATH_READLINK = goog.global.BigInt(0x0000000000008000);\nexport const WASI_RIGHT_PATH_RENAME_SOURCE = goog.global.BigInt(0x0000000000010000);\nexport const WASI_RIGHT_PATH_RENAME_TARGET = goog.global.BigInt(0x0000000000020000);\nexport const WASI_RIGHT_PATH_FILESTAT_GET = goog.global.BigInt(0x0000000000040000);\nexport const WASI_RIGHT_PATH_FILESTAT_SET_SIZE = goog.global.BigInt(0x0000000000080000);\nexport const WASI_RIGHT_PATH_FILESTAT_SET_TIMES = goog.global.BigInt(0x0000000000100000);\nexport const WASI_RIGHT_FD_FILESTAT_GET = goog.global.BigInt(0x0000000000200000);\nexport const WASI_RIGHT_FD_FILESTAT_SET_SIZE = goog.global.BigInt(0x0000000000400000);\nexport const WASI_RIGHT_FD_FILESTAT_SET_TIMES = goog.global.BigInt(0x0000000000800000);\nexport const WASI_RIGHT_PATH_SYMLINK = goog.global.BigInt(0x0000000001000000);\nexport const WASI_RIGHT_PATH_REMOVE_DIRECTORY = goog.global.BigInt(0x0000000002000000);\nexport const WASI_RIGHT_PATH_UNLINK_FILE = goog.global.BigInt(0x0000000004000000);\nexport const WASI_RIGHT_POLL_FD_READWRITE = goog.global.BigInt(0x0000000008000000);\nexport const WASI_RIGHT_SOCK_SHUTDOWN = goog.global.BigInt(0x0000000010000000);\n\nexport const RIGHTS_ALL =\n WASI_RIGHT_FD_DATASYNC |\n WASI_RIGHT_FD_READ |\n WASI_RIGHT_FD_SEEK |\n WASI_RIGHT_FD_FDSTAT_SET_FLAGS |\n WASI_RIGHT_FD_SYNC |\n WASI_RIGHT_FD_TELL |\n WASI_RIGHT_FD_WRITE |\n WASI_RIGHT_FD_ADVISE |\n WASI_RIGHT_FD_ALLOCATE |\n WASI_RIGHT_PATH_CREATE_DIRECTORY |\n WASI_RIGHT_PATH_CREATE_FILE |\n WASI_RIGHT_PATH_LINK_SOURCE |\n WASI_RIGHT_PATH_LINK_TARGET |\n WASI_RIGHT_PATH_OPEN |\n WASI_RIGHT_FD_READDIR |\n WASI_RIGHT_PATH_READLINK |\n WASI_RIGHT_PATH_RENAME_SOURCE |\n WASI_RIGHT_PATH_RENAME_TARGET |\n WASI_RIGHT_PATH_FILESTAT_GET |\n WASI_RIGHT_PATH_FILESTAT_SET_SIZE |\n WASI_RIGHT_PATH_FILESTAT_SET_TIMES |\n WASI_RIGHT_FD_FILESTAT_GET |\n WASI_RIGHT_FD_FILESTAT_SET_TIMES |\n WASI_RIGHT_FD_FILESTAT_SET_SIZE |\n WASI_RIGHT_PATH_SYMLINK |\n WASI_RIGHT_PATH_UNLINK_FILE |\n WASI_RIGHT_PATH_REMOVE_DIRECTORY |\n WASI_RIGHT_POLL_FD_READWRITE |\n WASI_RIGHT_SOCK_SHUTDOWN;\n\nexport const RIGHTS_BLOCK_DEVICE_BASE = RIGHTS_ALL;\nexport const RIGHTS_BLOCK_DEVICE_INHERITING = RIGHTS_ALL;\n\nexport const RIGHTS_CHARACTER_DEVICE_BASE = RIGHTS_ALL;\nexport const RIGHTS_CHARACTER_DEVICE_INHERITING = RIGHTS_ALL;\n\nexport const RIGHTS_REGULAR_FILE_BASE =\n WASI_RIGHT_FD_DATASYNC |\n WASI_RIGHT_FD_READ |\n WASI_RIGHT_FD_SEEK |\n WASI_RIGHT_FD_FDSTAT_SET_FLAGS |\n WASI_RIGHT_FD_SYNC |\n WASI_RIGHT_FD_TELL |\n WASI_RIGHT_FD_WRITE |\n WASI_RIGHT_FD_ADVISE |\n WASI_RIGHT_FD_ALLOCATE |\n WASI_RIGHT_FD_FILESTAT_GET |\n WASI_RIGHT_FD_FILESTAT_SET_SIZE |\n WASI_RIGHT_FD_FILESTAT_SET_TIMES |\n WASI_RIGHT_POLL_FD_READWRITE;\n\nexport const RIGHTS_REGULAR_FILE_INHERITING = goog.global.BigInt(0);\n\nexport const RIGHTS_DIRECTORY_BASE =\n WASI_RIGHT_FD_FDSTAT_SET_FLAGS |\n WASI_RIGHT_FD_SYNC |\n WASI_RIGHT_FD_ADVISE |\n WASI_RIGHT_PATH_CREATE_DIRECTORY |\n WASI_RIGHT_PATH_CREATE_FILE |\n WASI_RIGHT_PATH_LINK_SOURCE |\n WASI_RIGHT_PATH_LINK_TARGET |\n WASI_RIGHT_PATH_OPEN |\n WASI_RIGHT_FD_READDIR |\n WASI_RIGHT_PATH_READLINK |\n WASI_RIGHT_PATH_RENAME_SOURCE |\n WASI_RIGHT_PATH_RENAME_TARGET |\n WASI_RIGHT_PATH_FILESTAT_GET |\n WASI_RIGHT_PATH_FILESTAT_SET_SIZE |\n WASI_RIGHT_PATH_FILESTAT_SET_TIMES |\n WASI_RIGHT_FD_FILESTAT_GET |\n WASI_RIGHT_FD_FILESTAT_SET_TIMES |\n WASI_RIGHT_PATH_SYMLINK |\n WASI_RIGHT_PATH_UNLINK_FILE |\n WASI_RIGHT_PATH_REMOVE_DIRECTORY |\n WASI_RIGHT_POLL_FD_READWRITE;\n\nexport const RIGHTS_DIRECTORY_INHERITING = RIGHTS_DIRECTORY_BASE | RIGHTS_REGULAR_FILE_BASE;\n\nexport const RIGHTS_SOCKET_BASE =\n WASI_RIGHT_FD_READ |\n WASI_RIGHT_FD_FDSTAT_SET_FLAGS |\n WASI_RIGHT_FD_WRITE |\n WASI_RIGHT_FD_FILESTAT_GET |\n WASI_RIGHT_POLL_FD_READWRITE |\n WASI_RIGHT_SOCK_SHUTDOWN;\n\nexport const RIGHTS_SOCKET_INHERITING = RIGHTS_ALL;\n\nexport const RIGHTS_TTY_BASE =\n WASI_RIGHT_FD_READ |\n WASI_RIGHT_FD_FDSTAT_SET_FLAGS |\n WASI_RIGHT_FD_WRITE |\n WASI_RIGHT_FD_FILESTAT_GET |\n WASI_RIGHT_POLL_FD_READWRITE;\n\nexport const RIGHTS_TTY_INHERITING = goog.global.BigInt(0);\n\nexport const WASI_CLOCK_REALTIME = 0;\nexport const WASI_CLOCK_MONOTONIC = 1;\nexport const WASI_CLOCK_PROCESS_CPUTIME_ID = 2;\nexport const WASI_CLOCK_THREAD_CPUTIME_ID = 3;\n\nexport const WASI_EVENTTYPE_CLOCK = 0;\nexport const WASI_EVENTTYPE_FD_READ = 1;\nexport const WASI_EVENTTYPE_FD_WRITE = 2;\n\nexport const WASI_FILESTAT_SET_ATIM = Math.trunc(1);\nexport const WASI_FILESTAT_SET_ATIM_NOW = 1 << 1;\nexport const WASI_FILESTAT_SET_MTIM = 1 << 2;\nexport const WASI_FILESTAT_SET_MTIM_NOW = 1 << 3;\n\nexport const WASI_O_CREAT = Math.trunc(1);\nexport const WASI_O_DIRECTORY = 1 << 1;\nexport const WASI_O_EXCL = 1 << 2;\nexport const WASI_O_TRUNC = 1 << 3;\n\nexport const WASI_PREOPENTYPE_DIR = 0;\n\nexport const WASI_DIRCOOKIE_START = 0;\n\nexport const WASI_STDIN_FILENO = 0;\nexport const WASI_STDOUT_FILENO = 1;\nexport const WASI_STDERR_FILENO = 2;\n\nexport const WASI_WHENCE_SET = 0;\nexport const WASI_WHENCE_CUR = 1;\nexport const WASI_WHENCE_END = 2;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Provides a base class for custom Error objects such that the\n * stack is correctly maintained.\n *\n * You should never need to throw DebugError(msg) directly, Error(msg) is\n * sufficient.\n */\n\ngoog.module('goog.debug.Error');\ngoog.module.declareLegacyNamespace();\n\n\n\n/**\n * Base class for custom error objects.\n * @param {*=} msg The message associated with the error.\n * @param {{\n * message: (?|undefined),\n * name: (?|undefined),\n * lineNumber: (?|undefined),\n * fileName: (?|undefined),\n * stack: (?|undefined),\n * cause: (?|undefined),\n * }=} cause The original error object to chain with.\n * @constructor\n * @extends {Error}\n */\nfunction DebugError(msg = undefined, cause = undefined) {\n // Attempt to ensure there is a stack trace.\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, DebugError);\n } else {\n const stack = new Error().stack;\n if (stack) {\n /** @override @type {string} */\n this.stack = stack;\n }\n }\n\n if (msg) {\n /** @override @type {string} */\n this.message = String(msg);\n }\n\n if (cause !== undefined) {\n /** @type {?} */\n this.cause = cause;\n }\n\n /**\n * Whether to report this error to the server. Setting this to false will\n * cause the error reporter to not report the error back to the server,\n * which can be useful if the client knows that the error has already been\n * logged on the server.\n * @type {boolean}\n */\n this.reportErrorToServer = true;\n}\ngoog.inherits(DebugError, Error);\n\n\n/** @override @type {string} */\nDebugError.prototype.name = 'CustomError';\n\n\nexports = DebugError;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Definition of goog.dom.NodeType.\n */\n\ngoog.provide('goog.dom.NodeType');\n\n\n/**\n * Constants for the nodeType attribute in the Node interface.\n *\n * These constants match those specified in the Node interface. These are\n * usually present on the Node object in recent browsers, but not in older\n * browsers (specifically, early IEs) and thus are given here.\n *\n * In some browsers (early IEs), these are not defined on the Node object,\n * so they are provided here.\n *\n * See http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1950641247\n * @enum {number}\n */\ngoog.dom.NodeType = {\n ELEMENT: 1,\n ATTRIBUTE: 2,\n TEXT: 3,\n CDATA_SECTION: 4,\n ENTITY_REFERENCE: 5,\n ENTITY: 6,\n PROCESSING_INSTRUCTION: 7,\n COMMENT: 8,\n DOCUMENT: 9,\n DOCUMENT_TYPE: 10,\n DOCUMENT_FRAGMENT: 11,\n NOTATION: 12\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Utilities to check the preconditions, postconditions and\n * invariants runtime.\n *\n * Methods in this package are given special treatment by the compiler\n * for type-inference. For example, <code>goog.asserts.assert(foo)</code>\n * will make the compiler treat <code>foo</code> as non-nullable. Similarly,\n * <code>goog.asserts.assertNumber(foo)</code> informs the compiler about the\n * type of <code>foo</code>. Where applicable, such assertions are preferable to\n * casts by jsdoc with <code>@type</code>.\n *\n * The compiler has an option to disable asserts. So code like:\n * <code>\n * var x = goog.asserts.assert(foo());\n * goog.asserts.assert(bar());\n * </code>\n * will be transformed into:\n * <code>\n * var x = foo();\n * </code>\n * The compiler will leave in foo() (because its return value is used),\n * but it will remove bar() because it assumes it does not have side-effects.\n *\n * Additionally, note the compiler will consider the type to be \"tightened\" for\n * all statements <em>after</em> the assertion. For example:\n * <code>\n * const /** ?Object &#ast;/ value = foo();\n * goog.asserts.assert(value);\n * // \"value\" is of type {!Object} at this point.\n * </code>\n */\n\ngoog.module('goog.asserts');\ngoog.module.declareLegacyNamespace();\n\nconst DebugError = goog.require('goog.debug.Error');\nconst NodeType = goog.require('goog.dom.NodeType');\n\n\n// NOTE: this needs to be exported directly and referenced via the exports\n// object because unit tests stub it out.\n/**\n * @define {boolean} Whether to strip out asserts or to leave them in.\n */\nexports.ENABLE_ASSERTS = goog.define('goog.asserts.ENABLE_ASSERTS', goog.DEBUG);\n\n\n\n/**\n * Error object for failed assertions.\n * @param {string} messagePattern The pattern that was used to form message.\n * @param {!Array<*>} messageArgs The items to substitute into the pattern.\n * @constructor\n * @extends {DebugError}\n * @final\n */\nfunction AssertionError(messagePattern, messageArgs) {\n DebugError.call(this, subs(messagePattern, messageArgs));\n\n /**\n * The message pattern used to format the error message. Error handlers can\n * use this to uniquely identify the assertion.\n * @type {string}\n */\n this.messagePattern = messagePattern;\n}\ngoog.inherits(AssertionError, DebugError);\nexports.AssertionError = AssertionError;\n\n/** @override @type {string} */\nAssertionError.prototype.name = 'AssertionError';\n\n\n/**\n * The default error handler.\n * @param {!AssertionError} e The exception to be handled.\n * @return {void}\n */\nexports.DEFAULT_ERROR_HANDLER = function(e) {\n throw e;\n};\n\n\n/**\n * The handler responsible for throwing or logging assertion errors.\n * @type {function(!AssertionError)}\n */\nlet errorHandler_ = exports.DEFAULT_ERROR_HANDLER;\n\n\n/**\n * Does simple python-style string substitution.\n * subs(\"foo%s hot%s\", \"bar\", \"dog\") becomes \"foobar hotdog\".\n * @param {string} pattern The string containing the pattern.\n * @param {!Array<*>} subs The items to substitute into the pattern.\n * @return {string} A copy of `str` in which each occurrence of\n * `%s` has been replaced an argument from `var_args`.\n */\nfunction subs(pattern, subs) {\n const splitParts = pattern.split('%s');\n let returnString = '';\n\n // Replace up to the last split part. We are inserting in the\n // positions between split parts.\n const subLast = splitParts.length - 1;\n for (let i = 0; i < subLast; i++) {\n // keep unsupplied as '%s'\n const sub = (i < subs.length) ? subs[i] : '%s';\n returnString += splitParts[i] + sub;\n }\n return returnString + splitParts[subLast];\n}\n\n\n/**\n * Throws an exception with the given message and \"Assertion failed\" prefixed\n * onto it.\n * @param {string} defaultMessage The message to use if givenMessage is empty.\n * @param {?Array<*>} defaultArgs The substitution arguments for defaultMessage.\n * @param {string|undefined} givenMessage Message supplied by the caller.\n * @param {!Array<*>} givenArgs The substitution arguments for givenMessage.\n * @throws {AssertionError} When the value is not a number.\n */\nfunction doAssertFailure(defaultMessage, defaultArgs, givenMessage, givenArgs) {\n let message = 'Assertion failed';\n let args;\n if (givenMessage) {\n message += ': ' + givenMessage;\n args = givenArgs;\n } else if (defaultMessage) {\n message += ': ' + defaultMessage;\n args = defaultArgs;\n }\n // The '' + works around an Opera 10 bug in the unit tests. Without it,\n // a stack trace is added to var message above. With this, a stack trace is\n // not added until this line (it causes the extra garbage to be added after\n // the assertion message instead of in the middle of it).\n const e = new AssertionError('' + message, args || []);\n errorHandler_(e);\n}\n\n\n/**\n * Sets a custom error handler that can be used to customize the behavior of\n * assertion failures, for example by turning all assertion failures into log\n * messages.\n * @param {function(!AssertionError)} errorHandler\n * @return {void}\n */\nexports.setErrorHandler = function(errorHandler) {\n if (exports.ENABLE_ASSERTS) {\n errorHandler_ = errorHandler;\n }\n};\n\n\n/**\n * Checks if the condition evaluates to true if ENABLE_ASSERTS is\n * true.\n * @template T\n * @param {T} condition The condition to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {T} The value of the condition.\n * @throws {AssertionError} When the condition evaluates to false.\n * @closurePrimitive {asserts.truthy}\n */\nexports.assert = function(condition, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS && !condition) {\n doAssertFailure(\n '', null, opt_message, Array.prototype.slice.call(arguments, 2));\n }\n return condition;\n};\n\n\n/**\n * Checks if `value` is `null` or `undefined` if goog.asserts.ENABLE_ASSERTS is\n * true.\n *\n * @param {T} value The value to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {R} `value` with its type narrowed to exclude `null` and `undefined`.\n *\n * @template T\n * @template R :=\n * mapunion(T, (V) =>\n * cond(eq(V, 'null'),\n * none(),\n * cond(eq(V, 'undefined'),\n * none(),\n * V)))\n * =:\n *\n * @throws {!AssertionError} When `value` is `null` or `undefined`.\n * @closurePrimitive {asserts.matchesReturn}\n */\nexports.assertExists = function(value, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS && value == null) {\n doAssertFailure(\n 'Expected to exist: %s.', [value], opt_message,\n Array.prototype.slice.call(arguments, 2));\n }\n return value;\n};\n\n\n/**\n * Fails if goog.asserts.ENABLE_ASSERTS is true. This function is useful in case\n * when we want to add a check in the unreachable area like switch-case\n * statement:\n *\n * <pre>\n * switch(type) {\n * case FOO: doSomething(); break;\n * case BAR: doSomethingElse(); break;\n * default: goog.asserts.fail('Unrecognized type: ' + type);\n * // We have only 2 types - \"default:\" section is unreachable code.\n * }\n * </pre>\n *\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {void}\n * @throws {AssertionError} Failure.\n * @closurePrimitive {asserts.fail}\n */\nexports.fail = function(opt_message, var_args) {\n if (exports.ENABLE_ASSERTS) {\n errorHandler_(new AssertionError(\n 'Failure' + (opt_message ? ': ' + opt_message : ''),\n Array.prototype.slice.call(arguments, 1)));\n }\n};\n\n\n/**\n * Checks if the value is a number if goog.asserts.ENABLE_ASSERTS is true.\n * @param {*} value The value to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {number} The value, guaranteed to be a number when asserts enabled.\n * @throws {AssertionError} When the value is not a number.\n * @closurePrimitive {asserts.matchesReturn}\n */\nexports.assertNumber = function(value, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS && typeof value !== 'number') {\n doAssertFailure(\n 'Expected number but got %s: %s.', [goog.typeOf(value), value],\n opt_message, Array.prototype.slice.call(arguments, 2));\n }\n return /** @type {number} */ (value);\n};\n\n\n/**\n * Checks if the value is a string if goog.asserts.ENABLE_ASSERTS is true.\n * @param {*} value The value to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {string} The value, guaranteed to be a string when asserts enabled.\n * @throws {AssertionError} When the value is not a string.\n * @closurePrimitive {asserts.matchesReturn}\n */\nexports.assertString = function(value, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS && typeof value !== 'string') {\n doAssertFailure(\n 'Expected string but got %s: %s.', [goog.typeOf(value), value],\n opt_message, Array.prototype.slice.call(arguments, 2));\n }\n return /** @type {string} */ (value);\n};\n\n\n/**\n * Checks if the value is a function if goog.asserts.ENABLE_ASSERTS is true.\n * @param {*} value The value to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {!Function} The value, guaranteed to be a function when asserts\n * enabled.\n * @throws {AssertionError} When the value is not a function.\n * @closurePrimitive {asserts.matchesReturn}\n */\nexports.assertFunction = function(value, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS && typeof value !== 'function') {\n doAssertFailure(\n 'Expected function but got %s: %s.', [goog.typeOf(value), value],\n opt_message, Array.prototype.slice.call(arguments, 2));\n }\n return /** @type {!Function} */ (value);\n};\n\n\n/**\n * Checks if the value is an Object if goog.asserts.ENABLE_ASSERTS is true.\n * @param {*} value The value to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {!Object} The value, guaranteed to be a non-null object.\n * @throws {AssertionError} When the value is not an object.\n * @closurePrimitive {asserts.matchesReturn}\n */\nexports.assertObject = function(value, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS && !goog.isObject(value)) {\n doAssertFailure(\n 'Expected object but got %s: %s.', [goog.typeOf(value), value],\n opt_message, Array.prototype.slice.call(arguments, 2));\n }\n return /** @type {!Object} */ (value);\n};\n\n\n/**\n * Checks if the value is an Array if ENABLE_ASSERTS is true.\n * @param {*} value The value to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {!Array<?>} The value, guaranteed to be a non-null array.\n * @throws {AssertionError} When the value is not an array.\n * @closurePrimitive {asserts.matchesReturn}\n */\nexports.assertArray = function(value, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS && !Array.isArray(value)) {\n doAssertFailure(\n 'Expected array but got %s: %s.', [goog.typeOf(value), value],\n opt_message, Array.prototype.slice.call(arguments, 2));\n }\n return /** @type {!Array<?>} */ (value);\n};\n\n\n/**\n * Checks if the value is a boolean if goog.asserts.ENABLE_ASSERTS is true.\n * @param {*} value The value to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {boolean} The value, guaranteed to be a boolean when asserts are\n * enabled.\n * @throws {AssertionError} When the value is not a boolean.\n * @closurePrimitive {asserts.matchesReturn}\n */\nexports.assertBoolean = function(value, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS && typeof value !== 'boolean') {\n doAssertFailure(\n 'Expected boolean but got %s: %s.', [goog.typeOf(value), value],\n opt_message, Array.prototype.slice.call(arguments, 2));\n }\n return /** @type {boolean} */ (value);\n};\n\n\n/**\n * Checks if the value is a DOM Element if goog.asserts.ENABLE_ASSERTS is true.\n * @param {*} value The value to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @return {!Element} The value, likely to be a DOM Element when asserts are\n * enabled.\n * @throws {AssertionError} When the value is not an Element.\n * @closurePrimitive {asserts.matchesReturn}\n * @deprecated Use goog.asserts.dom.assertIsElement instead.\n */\nexports.assertElement = function(value, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS &&\n (!goog.isObject(value) ||\n /** @type {!Node} */ (value).nodeType != NodeType.ELEMENT)) {\n doAssertFailure(\n 'Expected Element but got %s: %s.', [goog.typeOf(value), value],\n opt_message, Array.prototype.slice.call(arguments, 2));\n }\n return /** @type {!Element} */ (value);\n};\n\n\n/**\n * Checks if the value is an instance of the user-defined type if\n * goog.asserts.ENABLE_ASSERTS is true.\n *\n * The compiler may tighten the type returned by this function.\n *\n * Do not use this to ensure a value is an HTMLElement or a subclass! Cross-\n * document DOM inherits from separate - though identical - browser classes, and\n * such a check will unexpectedly fail. Please use the methods in\n * goog.asserts.dom for these purposes.\n *\n * @param {?} value The value to check.\n * @param {function(new: T, ...)} type A user-defined constructor.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @throws {AssertionError} When the value is not an instance of\n * type.\n * @return {T}\n * @template T\n * @closurePrimitive {asserts.matchesReturn}\n */\nexports.assertInstanceof = function(value, type, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS && !(value instanceof type)) {\n doAssertFailure(\n 'Expected instanceof %s but got %s.', [getType(type), getType(value)],\n opt_message, Array.prototype.slice.call(arguments, 3));\n }\n return value;\n};\n\n\n/**\n * Checks whether the value is a finite number, if ENABLE_ASSERTS\n * is true.\n *\n * @param {*} value The value to check.\n * @param {string=} opt_message Error message in case of failure.\n * @param {...*} var_args The items to substitute into the failure message.\n * @throws {AssertionError} When the value is not a number, or is\n * a non-finite number such as NaN, Infinity or -Infinity.\n * @return {number} The value initially passed in.\n */\nexports.assertFinite = function(value, opt_message, var_args) {\n if (exports.ENABLE_ASSERTS &&\n (typeof value != 'number' || !isFinite(value))) {\n doAssertFailure(\n 'Expected %s to be a finite number but it is not.', [value],\n opt_message, Array.prototype.slice.call(arguments, 2));\n }\n return /** @type {number} */ (value);\n};\n\n/**\n * Returns the type of a value. If a constructor is passed, and a suitable\n * string cannot be found, 'unknown type name' will be returned.\n * @param {*} value A constructor, object, or primitive.\n * @return {string} The best display name for the value, or 'unknown type name'.\n */\nfunction getType(value) {\n if (value instanceof Function) {\n return value.displayName || value.name || 'unknown type name';\n } else if (value instanceof Object) {\n return /** @type {string} */ (value.constructor.displayName) ||\n value.constructor.name || Object.prototype.toString.call(value);\n } else {\n return value === null ? 'null' : typeof value;\n }\n}\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Utilities for manipulating arrays.\n */\n\n\ngoog.module('goog.array');\ngoog.module.declareLegacyNamespace();\n\nconst asserts = goog.require('goog.asserts');\n\n\n/**\n * @define {boolean} NATIVE_ARRAY_PROTOTYPES indicates whether the code should\n * rely on Array.prototype functions, if available.\n *\n * The Array.prototype functions can be defined by external libraries like\n * Prototype and setting this flag to false forces closure to use its own\n * goog.array implementation.\n *\n * If your javascript can be loaded by a third party site and you are wary about\n * relying on the prototype functions, specify\n * \"--define goog.NATIVE_ARRAY_PROTOTYPES=false\" to the JSCompiler.\n *\n * Setting goog.TRUSTED_SITE to false will automatically set\n * NATIVE_ARRAY_PROTOTYPES to false.\n */\ngoog.NATIVE_ARRAY_PROTOTYPES =\n goog.define('goog.NATIVE_ARRAY_PROTOTYPES', goog.TRUSTED_SITE);\n\n\n/**\n * @define {boolean} If true, JSCompiler will use the native implementation of\n * array functions where appropriate (e.g., `Array#filter`) and remove the\n * unused pure JS implementation.\n */\nconst ASSUME_NATIVE_FUNCTIONS = goog.define(\n 'goog.array.ASSUME_NATIVE_FUNCTIONS', goog.FEATURESET_YEAR > 2012);\nexports.ASSUME_NATIVE_FUNCTIONS = ASSUME_NATIVE_FUNCTIONS;\n\n\n/**\n * Returns the last element in an array without removing it.\n * Same as {@link goog.array.last}.\n * @param {IArrayLike<T>|string} array The array.\n * @return {T} Last item in array.\n * @template T\n */\nfunction peek(array) {\n return array[array.length - 1];\n}\nexports.peek = peek;\n\n\n/**\n * Returns the last element in an array without removing it.\n * Same as {@link goog.array.peek}.\n * @param {IArrayLike<T>|string} array The array.\n * @return {T} Last item in array.\n * @template T\n */\nexports.last = peek;\n\n// NOTE(arv): Since most of the array functions are generic it allows you to\n// pass an array-like object. Strings have a length and are considered array-\n// like. However, the 'in' operator does not work on strings so we cannot just\n// use the array path even if the browser supports indexing into strings. We\n// therefore end up splitting the string.\n\n\n/**\n * Returns the index of the first element of an array with a specified value, or\n * -1 if the element is not present in the array.\n *\n * See {@link http://tinyurl.com/developer-mozilla-org-array-indexof}\n *\n * @param {IArrayLike<T>|string} arr The array to be searched.\n * @param {T} obj The object for which we are searching.\n * @param {number=} opt_fromIndex The index at which to start the search. If\n * omitted the search starts at index 0.\n * @return {number} The index of the first matching array element.\n * @template T\n */\nconst indexOf = goog.NATIVE_ARRAY_PROTOTYPES &&\n (ASSUME_NATIVE_FUNCTIONS || Array.prototype.indexOf) ?\n function(arr, obj, opt_fromIndex) {\n asserts.assert(arr.length != null);\n\n return Array.prototype.indexOf.call(arr, obj, opt_fromIndex);\n } :\n function(arr, obj, opt_fromIndex) {\n const fromIndex = opt_fromIndex == null ?\n 0 :\n (opt_fromIndex < 0 ? Math.max(0, arr.length + opt_fromIndex) :\n opt_fromIndex);\n\n if (typeof arr === 'string') {\n // Array.prototype.indexOf uses === so only strings should be found.\n if (typeof obj !== 'string' || obj.length != 1) {\n return -1;\n }\n return arr.indexOf(obj, fromIndex);\n }\n\n for (let i = fromIndex; i < arr.length; i++) {\n if (i in arr && arr[i] === obj) return i;\n }\n return -1;\n };\nexports.indexOf = indexOf;\n\n\n/**\n * Returns the index of the last element of an array with a specified value, or\n * -1 if the element is not present in the array.\n *\n * See {@link http://tinyurl.com/developer-mozilla-org-array-lastindexof}\n *\n * @param {!IArrayLike<T>|string} arr The array to be searched.\n * @param {T} obj The object for which we are searching.\n * @param {?number=} opt_fromIndex The index at which to start the search. If\n * omitted the search starts at the end of the array.\n * @return {number} The index of the last matching array element.\n * @template T\n */\nconst lastIndexOf = goog.NATIVE_ARRAY_PROTOTYPES &&\n (ASSUME_NATIVE_FUNCTIONS || Array.prototype.lastIndexOf) ?\n function(arr, obj, opt_fromIndex) {\n asserts.assert(arr.length != null);\n\n // Firefox treats undefined and null as 0 in the fromIndex argument which\n // leads it to always return -1\n const fromIndex = opt_fromIndex == null ? arr.length - 1 : opt_fromIndex;\n return Array.prototype.lastIndexOf.call(arr, obj, fromIndex);\n } :\n function(arr, obj, opt_fromIndex) {\n let fromIndex = opt_fromIndex == null ? arr.length - 1 : opt_fromIndex;\n\n if (fromIndex < 0) {\n fromIndex = Math.max(0, arr.length + fromIndex);\n }\n\n if (typeof arr === 'string') {\n // Array.prototype.lastIndexOf uses === so only strings should be found.\n if (typeof obj !== 'string' || obj.length != 1) {\n return -1;\n }\n return arr.lastIndexOf(obj, fromIndex);\n }\n\n for (let i = fromIndex; i >= 0; i--) {\n if (i in arr && arr[i] === obj) return i;\n }\n return -1;\n };\nexports.lastIndexOf = lastIndexOf;\n\n\n/**\n * Calls a function for each element in an array. Skips holes in the array.\n * See {@link http://tinyurl.com/developer-mozilla-org-array-foreach}\n *\n * @param {IArrayLike<T>|string} arr Array or array like object over\n * which to iterate.\n * @param {?function(this: S, T, number, ?): ?} f The function to call for every\n * element. This function takes 3 arguments (the element, the index and the\n * array). The return value is ignored.\n * @param {S=} opt_obj The object to be used as the value of 'this' within f.\n * @template T,S\n */\nconst forEach = goog.NATIVE_ARRAY_PROTOTYPES &&\n (ASSUME_NATIVE_FUNCTIONS || Array.prototype.forEach) ?\n function(arr, f, opt_obj) {\n asserts.assert(arr.length != null);\n\n Array.prototype.forEach.call(arr, f, opt_obj);\n } :\n function(arr, f, opt_obj) {\n const l = arr.length; // must be fixed during loop... see docs\n const arr2 = (typeof arr === 'string') ? arr.split('') : arr;\n for (let i = 0; i < l; i++) {\n if (i in arr2) {\n f.call(/** @type {?} */ (opt_obj), arr2[i], i, arr);\n }\n }\n };\nexports.forEach = forEach;\n\n\n/**\n * Calls a function for each element in an array, starting from the last\n * element rather than the first.\n *\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {?function(this: S, T, number, ?): ?} f The function to call for every\n * element. This function\n * takes 3 arguments (the element, the index and the array). The return\n * value is ignored.\n * @param {S=} opt_obj The object to be used as the value of 'this'\n * within f.\n * @template T,S\n */\nfunction forEachRight(arr, f, opt_obj) {\n const l = arr.length; // must be fixed during loop... see docs\n const arr2 = (typeof arr === 'string') ? arr.split('') : arr;\n for (let i = l - 1; i >= 0; --i) {\n if (i in arr2) {\n f.call(/** @type {?} */ (opt_obj), arr2[i], i, arr);\n }\n }\n}\nexports.forEachRight = forEachRight;\n\n\n/**\n * Calls a function for each element in an array, and if the function returns\n * true adds the element to a new array.\n *\n * See {@link http://tinyurl.com/developer-mozilla-org-array-filter}\n *\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, T, number, ?):boolean} f The function to call for\n * every element. This function\n * takes 3 arguments (the element, the index and the array) and must\n * return a Boolean. If the return value is true the element is added to the\n * result array. If it is false the element is not included.\n * @param {S=} opt_obj The object to be used as the value of 'this'\n * within f.\n * @return {!Array<T>} a new array in which only elements that passed the test\n * are present.\n * @template T,S\n */\nconst filter = goog.NATIVE_ARRAY_PROTOTYPES &&\n (ASSUME_NATIVE_FUNCTIONS || Array.prototype.filter) ?\n function(arr, f, opt_obj) {\n asserts.assert(arr.length != null);\n\n return Array.prototype.filter.call(arr, f, opt_obj);\n } :\n function(arr, f, opt_obj) {\n const l = arr.length; // must be fixed during loop... see docs\n const res = [];\n let resLength = 0;\n const arr2 = (typeof arr === 'string') ? arr.split('') : arr;\n for (let i = 0; i < l; i++) {\n if (i in arr2) {\n const val = arr2[i]; // in case f mutates arr2\n if (f.call(/** @type {?} */ (opt_obj), val, i, arr)) {\n res[resLength++] = val;\n }\n }\n }\n return res;\n };\nexports.filter = filter;\n\n\n/**\n * Calls a function for each element in an array and inserts the result into a\n * new array.\n *\n * See {@link http://tinyurl.com/developer-mozilla-org-array-map}\n *\n * @param {IArrayLike<VALUE>|string} arr Array or array like object\n * over which to iterate.\n * @param {function(this:THIS, VALUE, number, ?): RESULT} f The function to call\n * for every element. This function takes 3 arguments (the element,\n * the index and the array) and should return something. The result will be\n * inserted into a new array.\n * @param {THIS=} opt_obj The object to be used as the value of 'this' within f.\n * @return {!Array<RESULT>} a new array with the results from f.\n * @template THIS, VALUE, RESULT\n */\nconst map = goog.NATIVE_ARRAY_PROTOTYPES &&\n (ASSUME_NATIVE_FUNCTIONS || Array.prototype.map) ?\n function(arr, f, opt_obj) {\n asserts.assert(arr.length != null);\n\n return Array.prototype.map.call(arr, f, opt_obj);\n } :\n function(arr, f, opt_obj) {\n const l = arr.length; // must be fixed during loop... see docs\n const res = new Array(l);\n const arr2 = (typeof arr === 'string') ? arr.split('') : arr;\n for (let i = 0; i < l; i++) {\n if (i in arr2) {\n res[i] = f.call(/** @type {?} */ (opt_obj), arr2[i], i, arr);\n }\n }\n return res;\n };\nexports.map = map;\n\n\n/**\n * Passes every element of an array into a function and accumulates the result.\n *\n * See {@link http://tinyurl.com/developer-mozilla-org-array-reduce}\n * Note that this implementation differs from the native Array.prototype.reduce\n * in that the initial value is assumed to be defined (the MDN docs linked above\n * recommend not omitting this parameter, although it is technically optional).\n *\n * For example:\n * var a = [1, 2, 3, 4];\n * reduce(a, function(r, v, i, arr) {return r + v;}, 0);\n * returns 10\n *\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {function(this:S, R, T, number, ?) : R} f The function to call for\n * every element. This function\n * takes 4 arguments (the function's previous result or the initial value,\n * the value of the current array element, the current array index, and the\n * array itself)\n * function(previousValue, currentValue, index, array).\n * @param {?} val The initial value to pass into the function on the first call.\n * @param {S=} opt_obj The object to be used as the value of 'this'\n * within f.\n * @return {R} Result of evaluating f repeatedly across the values of the array.\n * @template T,S,R\n */\nconst reduce = goog.NATIVE_ARRAY_PROTOTYPES &&\n (ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduce) ?\n function(arr, f, val, opt_obj) {\n asserts.assert(arr.length != null);\n if (opt_obj) {\n f = goog.bind(f, opt_obj);\n }\n return Array.prototype.reduce.call(arr, f, val);\n } :\n function(arr, f, val, opt_obj) {\n let rval = val;\n forEach(arr, function(val, index) {\n rval = f.call(/** @type {?} */ (opt_obj), rval, val, index, arr);\n });\n return rval;\n };\nexports.reduce = reduce;\n\n\n/**\n * Passes every element of an array into a function and accumulates the result,\n * starting from the last element and working towards the first.\n *\n * See {@link http://tinyurl.com/developer-mozilla-org-array-reduceright}\n *\n * For example:\n * var a = ['a', 'b', 'c'];\n * reduceRight(a, function(r, v, i, arr) {return r + v;}, '');\n * returns 'cba'\n *\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, R, T, number, ?) : R} f The function to call for\n * every element. This function\n * takes 4 arguments (the function's previous result or the initial value,\n * the value of the current array element, the current array index, and the\n * array itself)\n * function(previousValue, currentValue, index, array).\n * @param {?} val The initial value to pass into the function on the first call.\n * @param {S=} opt_obj The object to be used as the value of 'this'\n * within f.\n * @return {R} Object returned as a result of evaluating f repeatedly across the\n * values of the array.\n * @template T,S,R\n */\nconst reduceRight = goog.NATIVE_ARRAY_PROTOTYPES &&\n (ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduceRight) ?\n function(arr, f, val, opt_obj) {\n asserts.assert(arr.length != null);\n asserts.assert(f != null);\n if (opt_obj) {\n f = goog.bind(f, opt_obj);\n }\n return Array.prototype.reduceRight.call(arr, f, val);\n } :\n function(arr, f, val, opt_obj) {\n let rval = val;\n forEachRight(arr, function(val, index) {\n rval = f.call(/** @type {?} */ (opt_obj), rval, val, index, arr);\n });\n return rval;\n };\nexports.reduceRight = reduceRight;\n\n\n/**\n * Calls f for each element of an array. If any call returns true, some()\n * returns true (without checking the remaining elements). If all calls\n * return false, some() returns false.\n *\n * See {@link http://tinyurl.com/developer-mozilla-org-array-some}\n *\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, T, number, ?) : boolean} f The function to call for\n * for every element. This function takes 3 arguments (the element, the\n * index and the array) and should return a boolean.\n * @param {S=} opt_obj The object to be used as the value of 'this'\n * within f.\n * @return {boolean} true if any element passes the test.\n * @template T,S\n */\nconst some = goog.NATIVE_ARRAY_PROTOTYPES &&\n (ASSUME_NATIVE_FUNCTIONS || Array.prototype.some) ?\n function(arr, f, opt_obj) {\n asserts.assert(arr.length != null);\n\n return Array.prototype.some.call(arr, f, opt_obj);\n } :\n function(arr, f, opt_obj) {\n const l = arr.length; // must be fixed during loop... see docs\n const arr2 = (typeof arr === 'string') ? arr.split('') : arr;\n for (let i = 0; i < l; i++) {\n if (i in arr2 && f.call(/** @type {?} */ (opt_obj), arr2[i], i, arr)) {\n return true;\n }\n }\n return false;\n };\nexports.some = some;\n\n\n/**\n * Call f for each element of an array. If all calls return true, every()\n * returns true. If any call returns false, every() returns false and\n * does not continue to check the remaining elements.\n *\n * See {@link http://tinyurl.com/developer-mozilla-org-array-every}\n *\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, T, number, ?) : boolean} f The function to call for\n * for every element. This function takes 3 arguments (the element, the\n * index and the array) and should return a boolean.\n * @param {S=} opt_obj The object to be used as the value of 'this'\n * within f.\n * @return {boolean} false if any element fails the test.\n * @template T,S\n */\nconst every = goog.NATIVE_ARRAY_PROTOTYPES &&\n (ASSUME_NATIVE_FUNCTIONS || Array.prototype.every) ?\n function(arr, f, opt_obj) {\n asserts.assert(arr.length != null);\n\n return Array.prototype.every.call(arr, f, opt_obj);\n } :\n function(arr, f, opt_obj) {\n const l = arr.length; // must be fixed during loop... see docs\n const arr2 = (typeof arr === 'string') ? arr.split('') : arr;\n for (let i = 0; i < l; i++) {\n if (i in arr2 && !f.call(/** @type {?} */ (opt_obj), arr2[i], i, arr)) {\n return false;\n }\n }\n return true;\n };\nexports.every = every;\n\n\n/**\n * Counts the array elements that fulfill the predicate, i.e. for which the\n * callback function returns true. Skips holes in the array.\n *\n * @param {!IArrayLike<T>|string} arr Array or array like object\n * over which to iterate.\n * @param {function(this: S, T, number, ?): boolean} f The function to call for\n * every element. Takes 3 arguments (the element, the index and the array).\n * @param {S=} opt_obj The object to be used as the value of 'this' within f.\n * @return {number} The number of the matching elements.\n * @template T,S\n */\nfunction count(arr, f, opt_obj) {\n let count = 0;\n forEach(arr, function(element, index, arr) {\n if (f.call(/** @type {?} */ (opt_obj), element, index, arr)) {\n ++count;\n }\n }, opt_obj);\n return count;\n}\nexports.count = count;\n\n\n/**\n * Search an array for the first element that satisfies a given condition and\n * return that element.\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, T, number, ?) : boolean} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array) and should return a boolean.\n * @param {S=} opt_obj An optional \"this\" context for the function.\n * @return {T|null} The first array element that passes the test, or null if no\n * element is found.\n * @template T,S\n */\nfunction find(arr, f, opt_obj) {\n const i = findIndex(arr, f, opt_obj);\n return i < 0 ? null : typeof arr === 'string' ? arr.charAt(i) : arr[i];\n}\nexports.find = find;\n\n\n/**\n * Search an array for the first element that satisfies a given condition and\n * return its index.\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, T, number, ?) : boolean} f The function to call for\n * every element. This function\n * takes 3 arguments (the element, the index and the array) and should\n * return a boolean.\n * @param {S=} opt_obj An optional \"this\" context for the function.\n * @return {number} The index of the first array element that passes the test,\n * or -1 if no element is found.\n * @template T,S\n */\nfunction findIndex(arr, f, opt_obj) {\n const l = arr.length; // must be fixed during loop... see docs\n const arr2 = (typeof arr === 'string') ? arr.split('') : arr;\n for (let i = 0; i < l; i++) {\n if (i in arr2 && f.call(/** @type {?} */ (opt_obj), arr2[i], i, arr)) {\n return i;\n }\n }\n return -1;\n}\nexports.findIndex = findIndex;\n\n\n/**\n * Search an array (in reverse order) for the last element that satisfies a\n * given condition and return that element.\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, T, number, ?) : boolean} f The function to call\n * for every element. This function\n * takes 3 arguments (the element, the index and the array) and should\n * return a boolean.\n * @param {S=} opt_obj An optional \"this\" context for the function.\n * @return {T|null} The last array element that passes the test, or null if no\n * element is found.\n * @template T,S\n */\nfunction findRight(arr, f, opt_obj) {\n const i = findIndexRight(arr, f, opt_obj);\n return i < 0 ? null : typeof arr === 'string' ? arr.charAt(i) : arr[i];\n}\nexports.findRight = findRight;\n\n\n/**\n * Search an array (in reverse order) for the last element that satisfies a\n * given condition and return its index.\n * @param {IArrayLike<T>|string} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, T, number, ?) : boolean} f The function to call\n * for every element. This function\n * takes 3 arguments (the element, the index and the array) and should\n * return a boolean.\n * @param {S=} opt_obj An optional \"this\" context for the function.\n * @return {number} The index of the last array element that passes the test,\n * or -1 if no element is found.\n * @template T,S\n */\nfunction findIndexRight(arr, f, opt_obj) {\n const l = arr.length; // must be fixed during loop... see docs\n const arr2 = (typeof arr === 'string') ? arr.split('') : arr;\n for (let i = l - 1; i >= 0; i--) {\n if (i in arr2 && f.call(/** @type {?} */ (opt_obj), arr2[i], i, arr)) {\n return i;\n }\n }\n return -1;\n}\nexports.findIndexRight = findIndexRight;\n\n\n/**\n * Whether the array contains the given object.\n * @param {IArrayLike<?>|string} arr The array to test for the presence of the\n * element.\n * @param {*} obj The object for which to test.\n * @return {boolean} true if obj is present.\n */\nfunction contains(arr, obj) {\n return indexOf(arr, obj) >= 0;\n}\nexports.contains = contains;\n\n\n/**\n * Whether the array is empty.\n * @param {IArrayLike<?>|string} arr The array to test.\n * @return {boolean} true if empty.\n */\nfunction isEmpty(arr) {\n return arr.length == 0;\n}\nexports.isEmpty = isEmpty;\n\n\n/**\n * Clears the array.\n * @param {IArrayLike<?>} arr Array or array like object to clear.\n */\nfunction clear(arr) {\n // For non real arrays we don't have the magic length so we delete the\n // indices.\n if (!Array.isArray(arr)) {\n for (let i = arr.length - 1; i >= 0; i--) {\n delete arr[i];\n }\n }\n arr.length = 0;\n}\nexports.clear = clear;\n\n\n/**\n * Pushes an item into an array, if it's not already in the array.\n * @param {Array<T>} arr Array into which to insert the item.\n * @param {T} obj Value to add.\n * @template T\n */\nfunction insert(arr, obj) {\n if (!contains(arr, obj)) {\n arr.push(obj);\n }\n}\nexports.insert = insert;\n\n\n/**\n * Inserts an object at the given index of the array.\n * @param {IArrayLike<?>} arr The array to modify.\n * @param {*} obj The object to insert.\n * @param {number=} opt_i The index at which to insert the object. If omitted,\n * treated as 0. A negative index is counted from the end of the array.\n */\nfunction insertAt(arr, obj, opt_i) {\n splice(arr, opt_i, 0, obj);\n}\nexports.insertAt = insertAt;\n\n\n/**\n * Inserts at the given index of the array, all elements of another array.\n * @param {IArrayLike<?>} arr The array to modify.\n * @param {IArrayLike<?>} elementsToAdd The array of elements to add.\n * @param {number=} opt_i The index at which to insert the object. If omitted,\n * treated as 0. A negative index is counted from the end of the array.\n */\nfunction insertArrayAt(arr, elementsToAdd, opt_i) {\n goog.partial(splice, arr, opt_i, 0).apply(null, elementsToAdd);\n}\nexports.insertArrayAt = insertArrayAt;\n\n\n/**\n * Inserts an object into an array before a specified object.\n * @param {Array<T>} arr The array to modify.\n * @param {T} obj The object to insert.\n * @param {T=} opt_obj2 The object before which obj should be inserted. If obj2\n * is omitted or not found, obj is inserted at the end of the array.\n * @template T\n */\nfunction insertBefore(arr, obj, opt_obj2) {\n let i;\n if (arguments.length == 2 || (i = indexOf(arr, opt_obj2)) < 0) {\n arr.push(obj);\n } else {\n insertAt(arr, obj, i);\n }\n}\nexports.insertBefore = insertBefore;\n\n\n/**\n * Removes the first occurrence of a particular value from an array.\n * @param {IArrayLike<T>} arr Array from which to remove\n * value.\n * @param {T} obj Object to remove.\n * @return {boolean} True if an element was removed.\n * @template T\n */\nfunction remove(arr, obj) {\n const i = indexOf(arr, obj);\n let rv;\n if ((rv = i >= 0)) {\n removeAt(arr, i);\n }\n return rv;\n}\nexports.remove = remove;\n\n\n/**\n * Removes the last occurrence of a particular value from an array.\n * @param {!IArrayLike<T>} arr Array from which to remove value.\n * @param {T} obj Object to remove.\n * @return {boolean} True if an element was removed.\n * @template T\n */\nfunction removeLast(arr, obj) {\n const i = lastIndexOf(arr, obj);\n if (i >= 0) {\n removeAt(arr, i);\n return true;\n }\n return false;\n}\nexports.removeLast = removeLast;\n\n\n/**\n * Removes from an array the element at index i\n * @param {IArrayLike<?>} arr Array or array like object from which to\n * remove value.\n * @param {number} i The index to remove.\n * @return {boolean} True if an element was removed.\n */\nfunction removeAt(arr, i) {\n asserts.assert(arr.length != null);\n\n // use generic form of splice\n // splice returns the removed items and if successful the length of that\n // will be 1\n return Array.prototype.splice.call(arr, i, 1).length == 1;\n}\nexports.removeAt = removeAt;\n\n\n/**\n * Removes the first value that satisfies the given condition.\n * @param {IArrayLike<T>} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, T, number, ?) : boolean} f The function to call\n * for every element. This function\n * takes 3 arguments (the element, the index and the array) and should\n * return a boolean.\n * @param {S=} opt_obj An optional \"this\" context for the function.\n * @return {boolean} True if an element was removed.\n * @template T,S\n */\nfunction removeIf(arr, f, opt_obj) {\n const i = findIndex(arr, f, opt_obj);\n if (i >= 0) {\n removeAt(arr, i);\n return true;\n }\n return false;\n}\nexports.removeIf = removeIf;\n\n\n/**\n * Removes all values that satisfy the given condition.\n * @param {IArrayLike<T>} arr Array or array\n * like object over which to iterate.\n * @param {?function(this:S, T, number, ?) : boolean} f The function to call\n * for every element. This function\n * takes 3 arguments (the element, the index and the array) and should\n * return a boolean.\n * @param {S=} opt_obj An optional \"this\" context for the function.\n * @return {number} The number of items removed\n * @template T,S\n */\nfunction removeAllIf(arr, f, opt_obj) {\n let removedCount = 0;\n forEachRight(arr, function(val, index) {\n if (f.call(/** @type {?} */ (opt_obj), val, index, arr)) {\n if (removeAt(arr, index)) {\n removedCount++;\n }\n }\n });\n return removedCount;\n}\nexports.removeAllIf = removeAllIf;\n\n\n/**\n * Returns a new array that is the result of joining the arguments. If arrays\n * are passed then their items are added, however, if non-arrays are passed they\n * will be added to the return array as is.\n *\n * Note that ArrayLike objects will be added as is, rather than having their\n * items added.\n *\n * concat([1, 2], [3, 4]) -> [1, 2, 3, 4]\n * concat(0, [1, 2]) -> [0, 1, 2]\n * concat([1, 2], null) -> [1, 2, null]\n *\n * @param {...*} var_args Items to concatenate. Arrays will have each item\n * added, while primitives and objects will be added as is.\n * @return {!Array<?>} The new resultant array.\n */\nfunction concat(var_args) {\n return Array.prototype.concat.apply([], arguments);\n}\nexports.concat = concat;\n\n\n/**\n * Returns a new array that contains the contents of all the arrays passed.\n * @param {...!Array<T>} var_args\n * @return {!Array<T>}\n * @template T\n */\nfunction join(var_args) {\n return Array.prototype.concat.apply([], arguments);\n}\nexports.join = join;\n\n\n/**\n * Converts an object to an array.\n * @param {IArrayLike<T>|string} object The object to convert to an\n * array.\n * @return {!Array<T>} The object converted into an array. If object has a\n * length property, every property indexed with a non-negative number\n * less than length will be included in the result. If object does not\n * have a length property, an empty array will be returned.\n * @template T\n */\nfunction toArray(object) {\n const length = object.length;\n\n // If length is not a number the following is false. This case is kept for\n // backwards compatibility since there are callers that pass objects that are\n // not array like.\n if (length > 0) {\n const rv = new Array(length);\n for (let i = 0; i < length; i++) {\n rv[i] = object[i];\n }\n return rv;\n }\n return [];\n}\nexports.toArray = toArray;\n\n\n/**\n * Does a shallow copy of an array.\n * @param {IArrayLike<T>|string} arr Array or array-like object to\n * clone.\n * @return {!Array<T>} Clone of the input array.\n * @template T\n */\nconst clone = toArray;\nexports.clone = clone;\n\n\n/**\n * Extends an array with another array, element, or \"array like\" object.\n * This function operates 'in-place', it does not create a new Array.\n *\n * Example:\n * var a = [];\n * extend(a, [0, 1]);\n * a; // [0, 1]\n * extend(a, 2);\n * a; // [0, 1, 2]\n *\n * @param {Array<VALUE>} arr1 The array to modify.\n * @param {...(IArrayLike<VALUE>|VALUE)} var_args The elements or arrays of\n * elements to add to arr1.\n * @template VALUE\n */\nfunction extend(arr1, var_args) {\n for (let i = 1; i < arguments.length; i++) {\n const arr2 = arguments[i];\n if (goog.isArrayLike(arr2)) {\n const len1 = arr1.length || 0;\n const len2 = arr2.length || 0;\n arr1.length = len1 + len2;\n for (let j = 0; j < len2; j++) {\n arr1[len1 + j] = arr2[j];\n }\n } else {\n arr1.push(arr2);\n }\n }\n}\nexports.extend = extend;\n\n\n/**\n * Adds or removes elements from an array. This is a generic version of Array\n * splice. This means that it might work on other objects similar to arrays,\n * such as the arguments object.\n *\n * @param {IArrayLike<T>} arr The array to modify.\n * @param {number|undefined} index The index at which to start changing the\n * array. If not defined, treated as 0.\n * @param {number} howMany How many elements to remove (0 means no removal. A\n * value below 0 is treated as zero and so is any other non number. Numbers\n * are floored).\n * @param {...T} var_args Optional, additional elements to insert into the\n * array.\n * @return {!Array<T>} the removed elements.\n * @template T\n */\nfunction splice(arr, index, howMany, var_args) {\n asserts.assert(arr.length != null);\n\n return Array.prototype.splice.apply(arr, slice(arguments, 1));\n}\nexports.splice = splice;\n\n\n/**\n * Returns a new array from a segment of an array. This is a generic version of\n * Array slice. This means that it might work on other objects similar to\n * arrays, such as the arguments object.\n *\n * @param {IArrayLike<T>|string} arr The array from\n * which to copy a segment.\n * @param {number} start The index of the first element to copy.\n * @param {number=} opt_end The index after the last element to copy.\n * @return {!Array<T>} A new array containing the specified segment of the\n * original array.\n * @template T\n */\nfunction slice(arr, start, opt_end) {\n asserts.assert(arr.length != null);\n\n // passing 1 arg to slice is not the same as passing 2 where the second is\n // null or undefined (in that case the second argument is treated as 0).\n // we could use slice on the arguments object and then use apply instead of\n // testing the length\n if (arguments.length <= 2) {\n return Array.prototype.slice.call(arr, start);\n } else {\n return Array.prototype.slice.call(arr, start, opt_end);\n }\n}\nexports.slice = slice;\n\n\n/**\n * Removes all duplicates from an array (retaining only the first\n * occurrence of each array element). This function modifies the\n * array in place and doesn't change the order of the non-duplicate items.\n *\n * For objects, duplicates are identified as having the same unique ID as\n * defined by {@link goog.getUid}.\n *\n * Alternatively you can specify a custom hash function that returns a unique\n * value for each item in the array it should consider unique.\n *\n * Runtime: N,\n * Worstcase space: 2N (no dupes)\n *\n * @param {IArrayLike<T>} arr The array from which to remove\n * duplicates.\n * @param {Array=} opt_rv An optional array in which to return the results,\n * instead of performing the removal inplace. If specified, the original\n * array will remain unchanged.\n * @param {function(T):string=} opt_hashFn An optional function to use to\n * apply to every item in the array. This function should return a unique\n * value for each item in the array it should consider unique.\n * @template T\n */\nfunction removeDuplicates(arr, opt_rv, opt_hashFn) {\n const returnArray = opt_rv || arr;\n const defaultHashFn = function(item) {\n // Prefix each type with a single character representing the type to\n // prevent conflicting keys (e.g. true and 'true').\n return goog.isObject(item) ? 'o' + goog.getUid(item) :\n (typeof item).charAt(0) + item;\n };\n const hashFn = opt_hashFn || defaultHashFn;\n\n let cursorInsert = 0;\n let cursorRead = 0;\n const seen = {};\n\n while (cursorRead < arr.length) {\n const current = arr[cursorRead++];\n const key = hashFn(current);\n if (!Object.prototype.hasOwnProperty.call(seen, key)) {\n seen[key] = true;\n returnArray[cursorInsert++] = current;\n }\n }\n returnArray.length = cursorInsert;\n}\nexports.removeDuplicates = removeDuplicates;\n\n\n/**\n * Searches the specified array for the specified target using the binary\n * search algorithm. If no opt_compareFn is specified, elements are compared\n * using <code>defaultCompare</code>, which compares the elements\n * using the built in < and > operators. This will produce the expected\n * behavior for homogeneous arrays of String(s) and Number(s). The array\n * specified <b>must</b> be sorted in ascending order (as defined by the\n * comparison function). If the array is not sorted, results are undefined.\n * If the array contains multiple instances of the specified target value, the\n * left-most instance will be found.\n *\n * Runtime: O(log n)\n *\n * @param {IArrayLike<VALUE>} arr The array to be searched.\n * @param {TARGET} target The sought value.\n * @param {function(TARGET, VALUE): number=} opt_compareFn Optional comparison\n * function by which the array is ordered. Should take 2 arguments to\n * compare, the target value and an element from your array, and return a\n * negative number, zero, or a positive number depending on whether the\n * first argument is less than, equal to, or greater than the second.\n * @return {number} Lowest index of the target value if found, otherwise\n * (-(insertion point) - 1). The insertion point is where the value should\n * be inserted into arr to preserve the sorted property. Return value >= 0\n * iff target is found.\n * @template TARGET, VALUE\n */\nfunction binarySearch(arr, target, opt_compareFn) {\n return binarySearch_(\n arr, opt_compareFn || defaultCompare, false /* isEvaluator */, target);\n}\nexports.binarySearch = binarySearch;\n\n\n/**\n * Selects an index in the specified array using the binary search algorithm.\n * The evaluator receives an element and determines whether the desired index\n * is before, at, or after it. The evaluator must be consistent (formally,\n * map(map(arr, evaluator, opt_obj), goog.math.sign)\n * must be monotonically non-increasing).\n *\n * Runtime: O(log n)\n *\n * @param {IArrayLike<VALUE>} arr The array to be searched.\n * @param {function(this:THIS, VALUE, number, ?): number} evaluator\n * Evaluator function that receives 3 arguments (the element, the index and\n * the array). Should return a negative number, zero, or a positive number\n * depending on whether the desired index is before, at, or after the\n * element passed to it.\n * @param {THIS=} opt_obj The object to be used as the value of 'this'\n * within evaluator.\n * @return {number} Index of the leftmost element matched by the evaluator, if\n * such exists; otherwise (-(insertion point) - 1). The insertion point is\n * the index of the first element for which the evaluator returns negative,\n * or arr.length if no such element exists. The return value is non-negative\n * iff a match is found.\n * @template THIS, VALUE\n */\nfunction binarySelect(arr, evaluator, opt_obj) {\n return binarySearch_(\n arr, evaluator, true /* isEvaluator */, undefined /* opt_target */,\n opt_obj);\n}\nexports.binarySelect = binarySelect;\n\n\n/**\n * Implementation of a binary search algorithm which knows how to use both\n * comparison functions and evaluators. If an evaluator is provided, will call\n * the evaluator with the given optional data object, conforming to the\n * interface defined in binarySelect. Otherwise, if a comparison function is\n * provided, will call the comparison function against the given data object.\n *\n * This implementation purposefully does not use goog.bind or goog.partial for\n * performance reasons.\n *\n * Runtime: O(log n)\n *\n * @param {IArrayLike<?>} arr The array to be searched.\n * @param {function(?, ?, ?): number | function(?, ?): number} compareFn\n * Either an evaluator or a comparison function, as defined by binarySearch\n * and binarySelect above.\n * @param {boolean} isEvaluator Whether the function is an evaluator or a\n * comparison function.\n * @param {?=} opt_target If the function is a comparison function, then\n * this is the target to binary search for.\n * @param {Object=} opt_selfObj If the function is an evaluator, this is an\n * optional this object for the evaluator.\n * @return {number} Lowest index of the target value if found, otherwise\n * (-(insertion point) - 1). The insertion point is where the value should\n * be inserted into arr to preserve the sorted property. Return value >= 0\n * iff target is found.\n * @private\n */\nfunction binarySearch_(arr, compareFn, isEvaluator, opt_target, opt_selfObj) {\n let left = 0; // inclusive\n let right = arr.length; // exclusive\n let found;\n while (left < right) {\n const middle = left + ((right - left) >>> 1);\n let compareResult;\n if (isEvaluator) {\n compareResult = compareFn.call(opt_selfObj, arr[middle], middle, arr);\n } else {\n // NOTE(dimvar): To avoid this cast, we'd have to use function overloading\n // for the type of binarySearch_, which the type system can't express yet.\n compareResult = /** @type {function(?, ?): number} */ (compareFn)(\n opt_target, arr[middle]);\n }\n if (compareResult > 0) {\n left = middle + 1;\n } else {\n right = middle;\n // We are looking for the lowest index so we can't return immediately.\n found = !compareResult;\n }\n }\n // left is the index if found, or the insertion point otherwise.\n // Avoiding bitwise not operator, as that causes a loss in precision for array\n // indexes outside the bounds of a 32-bit signed integer. Array indexes have\n // a maximum value of 2^32-2 https://tc39.es/ecma262/#array-index\n return found ? left : -left - 1;\n}\n\n\n/**\n * Sorts the specified array into ascending order. If no opt_compareFn is\n * specified, elements are compared using\n * <code>defaultCompare</code>, which compares the elements using\n * the built in < and > operators. This will produce the expected behavior\n * for homogeneous arrays of String(s) and Number(s), unlike the native sort,\n * but will give unpredictable results for heterogeneous lists of strings and\n * numbers with different numbers of digits.\n *\n * This sort is not guaranteed to be stable.\n *\n * Runtime: Same as `Array.prototype.sort`\n *\n * @param {Array<T>} arr The array to be sorted.\n * @param {?function(T,T):number=} opt_compareFn Optional comparison\n * function by which the\n * array is to be ordered. Should take 2 arguments to compare, and return a\n * negative number, zero, or a positive number depending on whether the\n * first argument is less than, equal to, or greater than the second.\n * @template T\n */\nfunction sort(arr, opt_compareFn) {\n // TODO(arv): Update type annotation since null is not accepted.\n arr.sort(opt_compareFn || defaultCompare);\n}\nexports.sort = sort;\n\n\n/**\n * Sorts the specified array into ascending order in a stable way. If no\n * opt_compareFn is specified, elements are compared using\n * <code>defaultCompare</code>, which compares the elements using\n * the built in < and > operators. This will produce the expected behavior\n * for homogeneous arrays of String(s) and Number(s).\n *\n * Runtime: Same as `Array.prototype.sort`, plus an additional\n * O(n) overhead of copying the array twice.\n *\n * @param {Array<T>} arr The array to be sorted.\n * @param {?function(T, T): number=} opt_compareFn Optional comparison function\n * by which the array is to be ordered. Should take 2 arguments to compare,\n * and return a negative number, zero, or a positive number depending on\n * whether the first argument is less than, equal to, or greater than the\n * second.\n * @template T\n */\nfunction stableSort(arr, opt_compareFn) {\n const compArr = new Array(arr.length);\n for (let i = 0; i < arr.length; i++) {\n compArr[i] = {index: i, value: arr[i]};\n }\n const valueCompareFn = opt_compareFn || defaultCompare;\n function stableCompareFn(obj1, obj2) {\n return valueCompareFn(obj1.value, obj2.value) || obj1.index - obj2.index;\n }\n sort(compArr, stableCompareFn);\n for (let i = 0; i < arr.length; i++) {\n arr[i] = compArr[i].value;\n }\n}\nexports.stableSort = stableSort;\n\n\n/**\n * Sort the specified array into ascending order based on item keys\n * returned by the specified key function.\n * If no opt_compareFn is specified, the keys are compared in ascending order\n * using <code>defaultCompare</code>.\n *\n * Runtime: O(S(f(n)), where S is runtime of <code>sort</code>\n * and f(n) is runtime of the key function.\n *\n * @param {Array<T>} arr The array to be sorted.\n * @param {function(T): K} keyFn Function taking array element and returning\n * a key used for sorting this element.\n * @param {?function(K, K): number=} opt_compareFn Optional comparison function\n * by which the keys are to be ordered. Should take 2 arguments to compare,\n * and return a negative number, zero, or a positive number depending on\n * whether the first argument is less than, equal to, or greater than the\n * second.\n * @template T,K\n */\nfunction sortByKey(arr, keyFn, opt_compareFn) {\n const keyCompareFn = opt_compareFn || defaultCompare;\n sort(arr, function(a, b) {\n return keyCompareFn(keyFn(a), keyFn(b));\n });\n}\nexports.sortByKey = sortByKey;\n\n\n/**\n * Sorts an array of objects by the specified object key and compare\n * function. If no compare function is provided, the key values are\n * compared in ascending order using <code>defaultCompare</code>.\n * This won't work for keys that get renamed by the compiler. So use\n * {'foo': 1, 'bar': 2} rather than {foo: 1, bar: 2}.\n * @param {Array<Object>} arr An array of objects to sort.\n * @param {string} key The object key to sort by.\n * @param {Function=} opt_compareFn The function to use to compare key\n * values.\n */\nfunction sortObjectsByKey(arr, key, opt_compareFn) {\n sortByKey(arr, function(obj) {\n return obj[key];\n }, opt_compareFn);\n}\nexports.sortObjectsByKey = sortObjectsByKey;\n\n\n/**\n * Tells if the array is sorted.\n * @param {!IArrayLike<T>} arr The array.\n * @param {?function(T,T):number=} opt_compareFn Function to compare the\n * array elements.\n * Should take 2 arguments to compare, and return a negative number, zero,\n * or a positive number depending on whether the first argument is less\n * than, equal to, or greater than the second.\n * @param {boolean=} opt_strict If true no equal elements are allowed.\n * @return {boolean} Whether the array is sorted.\n * @template T\n */\nfunction isSorted(arr, opt_compareFn, opt_strict) {\n const compare = opt_compareFn || defaultCompare;\n for (let i = 1; i < arr.length; i++) {\n const compareResult = compare(arr[i - 1], arr[i]);\n if (compareResult > 0 || compareResult == 0 && opt_strict) {\n return false;\n }\n }\n return true;\n}\nexports.isSorted = isSorted;\n\n\n/**\n * Compares two arrays for equality. Two arrays are considered equal if they\n * have the same length and their corresponding elements are equal according to\n * the comparison function.\n *\n * @param {IArrayLike<A>} arr1 The first array to compare.\n * @param {IArrayLike<B>} arr2 The second array to compare.\n * @param {?function(A,B):boolean=} opt_equalsFn Optional comparison function.\n * Should take 2 arguments to compare, and return true if the arguments\n * are equal. Defaults to {@link goog.array.defaultCompareEquality} which\n * compares the elements using the built-in '===' operator.\n * @return {boolean} Whether the two arrays are equal.\n * @template A\n * @template B\n */\nfunction equals(arr1, arr2, opt_equalsFn) {\n if (!goog.isArrayLike(arr1) || !goog.isArrayLike(arr2) ||\n arr1.length != arr2.length) {\n return false;\n }\n const l = arr1.length;\n const equalsFn = opt_equalsFn || defaultCompareEquality;\n for (let i = 0; i < l; i++) {\n if (!equalsFn(arr1[i], arr2[i])) {\n return false;\n }\n }\n return true;\n}\nexports.equals = equals;\n\n\n/**\n * 3-way array compare function.\n * @param {!IArrayLike<VALUE>} arr1 The first array to\n * compare.\n * @param {!IArrayLike<VALUE>} arr2 The second array to\n * compare.\n * @param {function(VALUE, VALUE): number=} opt_compareFn Optional comparison\n * function by which the array is to be ordered. Should take 2 arguments to\n * compare, and return a negative number, zero, or a positive number\n * depending on whether the first argument is less than, equal to, or\n * greater than the second.\n * @return {number} Negative number, zero, or a positive number depending on\n * whether the first argument is less than, equal to, or greater than the\n * second.\n * @template VALUE\n */\nfunction compare3(arr1, arr2, opt_compareFn) {\n const compare = opt_compareFn || defaultCompare;\n const l = Math.min(arr1.length, arr2.length);\n for (let i = 0; i < l; i++) {\n const result = compare(arr1[i], arr2[i]);\n if (result != 0) {\n return result;\n }\n }\n return defaultCompare(arr1.length, arr2.length);\n}\nexports.compare3 = compare3;\n\n\n/**\n * Compares its two arguments for order, using the built in < and >\n * operators.\n * @param {VALUE} a The first object to be compared.\n * @param {VALUE} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second,\n * respectively.\n * @template VALUE\n */\nfunction defaultCompare(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\nexports.defaultCompare = defaultCompare;\n\n\n/**\n * Compares its two arguments for inverse order, using the built in < and >\n * operators.\n * @param {VALUE} a The first object to be compared.\n * @param {VALUE} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is greater than, equal to, or less than the second,\n * respectively.\n * @template VALUE\n */\nfunction inverseDefaultCompare(a, b) {\n return -defaultCompare(a, b);\n}\nexports.inverseDefaultCompare = inverseDefaultCompare;\n\n\n/**\n * Compares its two arguments for equality, using the built in === operator.\n * @param {*} a The first object to compare.\n * @param {*} b The second object to compare.\n * @return {boolean} True if the two arguments are equal, false otherwise.\n */\nfunction defaultCompareEquality(a, b) {\n return a === b;\n}\nexports.defaultCompareEquality = defaultCompareEquality;\n\n\n/**\n * Inserts a value into a sorted array. The array is not modified if the\n * value is already present.\n * @param {IArrayLike<VALUE>} array The array to modify.\n * @param {VALUE} value The object to insert.\n * @param {function(VALUE, VALUE): number=} opt_compareFn Optional comparison\n * function by which the array is ordered. Should take 2 arguments to\n * compare, and return a negative number, zero, or a positive number\n * depending on whether the first argument is less than, equal to, or\n * greater than the second.\n * @return {boolean} True if an element was inserted.\n * @template VALUE\n */\nfunction binaryInsert(array, value, opt_compareFn) {\n const index = binarySearch(array, value, opt_compareFn);\n if (index < 0) {\n insertAt(array, value, -(index + 1));\n return true;\n }\n return false;\n}\nexports.binaryInsert = binaryInsert;\n\n\n/**\n * Removes a value from a sorted array.\n * @param {!IArrayLike<VALUE>} array The array to modify.\n * @param {VALUE} value The object to remove.\n * @param {function(VALUE, VALUE): number=} opt_compareFn Optional comparison\n * function by which the array is ordered. Should take 2 arguments to\n * compare, and return a negative number, zero, or a positive number\n * depending on whether the first argument is less than, equal to, or\n * greater than the second.\n * @return {boolean} True if an element was removed.\n * @template VALUE\n */\nfunction binaryRemove(array, value, opt_compareFn) {\n const index = binarySearch(array, value, opt_compareFn);\n return (index >= 0) ? removeAt(array, index) : false;\n}\nexports.binaryRemove = binaryRemove;\n\n\n/**\n * Splits an array into disjoint buckets according to a splitting function.\n * @param {IArrayLike<T>} array The array.\n * @param {function(this:S, T, number, !IArrayLike<T>):?} sorter Function to\n * call for every element. This takes 3 arguments (the element, the index\n * and the array) and must return a valid object key (a string, number,\n * etc), or undefined, if that object should not be placed in a bucket.\n * @param {S=} opt_obj The object to be used as the value of 'this' within\n * sorter.\n * @return {!Object<!Array<T>>} An object, with keys being all of the unique\n * return values of sorter, and values being arrays containing the items for\n * which the splitter returned that key.\n * @template T,S\n */\nfunction bucket(array, sorter, opt_obj) {\n const buckets = {};\n\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n const key = sorter.call(/** @type {?} */ (opt_obj), value, i, array);\n if (key !== undefined) {\n // Push the value to the right bucket, creating it if necessary.\n const bucket = buckets[key] || (buckets[key] = []);\n bucket.push(value);\n }\n }\n\n return buckets;\n}\nexports.bucket = bucket;\n\n\n/**\n * Splits an array into disjoint buckets according to a splitting function.\n * @param {!IArrayLike<V>} array The array.\n * @param {function(V, number, !IArrayLike<V>):(K|undefined)} sorter Function to\n * call for every element. This takes 3 arguments (the element, the index,\n * and the array) and must return a value to use as a key, or undefined, if\n * that object should not be placed in a bucket.\n * @return {!Map<K, !Array<V>>} A map, with keys being all of the unique\n * return values of sorter, and values being arrays containing the items for\n * which the splitter returned that key.\n * @template K,V\n */\nfunction bucketToMap(array, sorter) {\n const /** !Map<K, !Array<V>> */ buckets = new Map();\n\n for (let i = 0; i < array.length; i++) {\n const value = array[i];\n const key = sorter(value, i, array);\n if (key !== undefined) {\n // Push the value to the right bucket, creating it if necessary.\n let bucket = buckets.get(key);\n if (!bucket) {\n bucket = [];\n buckets.set(key, bucket);\n }\n bucket.push(value);\n }\n }\n\n return buckets;\n}\nexports.bucketToMap = bucketToMap;\n\n\n/**\n * Creates a new object built from the provided array and the key-generation\n * function.\n * @param {IArrayLike<T>} arr Array or array like object over\n * which to iterate whose elements will be the values in the new object.\n * @param {?function(this:S, T, number, ?) : string} keyFunc The function to\n * call for every element. This function takes 3 arguments (the element, the\n * index and the array) and should return a string that will be used as the\n * key for the element in the new object. If the function returns the same\n * key for more than one element, the value for that key is\n * implementation-defined.\n * @param {S=} opt_obj The object to be used as the value of 'this'\n * within keyFunc.\n * @return {!Object<T>} The new object.\n * @template T,S\n */\nfunction toObject(arr, keyFunc, opt_obj) {\n const ret = {};\n forEach(arr, function(element, index) {\n ret[keyFunc.call(/** @type {?} */ (opt_obj), element, index, arr)] =\n element;\n });\n return ret;\n}\nexports.toObject = toObject;\n\n\n/**\n * Creates a new ES6 Map built from the provided array and the key-generation\n * function.\n * @param {!IArrayLike<V>} arr Array or array like object over which to iterate\n * whose elements will be the values in the new object.\n * @param {?function(V, number, ?) : K} keyFunc The function to call for every\n * element. This function takes 3 arguments (the element, the index, and the\n * array) and should return a value that will be used as the key for the\n * element in the new object. If the function returns the same key for more\n * than one element, the value for that key is implementation-defined.\n * @return {!Map<K, V>} The new map.\n * @template K,V\n */\nfunction toMap(arr, keyFunc) {\n const /** !Map<K, V> */ map = new Map();\n\n for (let i = 0; i < arr.length; i++) {\n const element = arr[i];\n map.set(keyFunc(element, i, arr), element);\n }\n\n return map;\n}\nexports.toMap = toMap;\n\n\n/**\n * Creates a range of numbers in an arithmetic progression.\n *\n * Range takes 1, 2, or 3 arguments:\n * <pre>\n * range(5) is the same as range(0, 5, 1) and produces [0, 1, 2, 3, 4]\n * range(2, 5) is the same as range(2, 5, 1) and produces [2, 3, 4]\n * range(-2, -5, -1) produces [-2, -3, -4]\n * range(-2, -5, 1) produces [], since stepping by 1 wouldn't ever reach -5.\n * </pre>\n *\n * @param {number} startOrEnd The starting value of the range if an end argument\n * is provided. Otherwise, the start value is 0, and this is the end value.\n * @param {number=} opt_end The optional end value of the range.\n * @param {number=} opt_step The step size between range values. Defaults to 1\n * if opt_step is undefined or 0.\n * @return {!Array<number>} An array of numbers for the requested range. May be\n * an empty array if adding the step would not converge toward the end\n * value.\n */\nfunction range(startOrEnd, opt_end, opt_step) {\n const array = [];\n let start = 0;\n let end = startOrEnd;\n const step = opt_step || 1;\n if (opt_end !== undefined) {\n start = startOrEnd;\n end = opt_end;\n }\n\n if (step * (end - start) < 0) {\n // Sign mismatch: start + step will never reach the end value.\n return [];\n }\n\n if (step > 0) {\n for (let i = start; i < end; i += step) {\n array.push(i);\n }\n } else {\n for (let i = start; i > end; i += step) {\n array.push(i);\n }\n }\n return array;\n}\nexports.range = range;\n\n\n/**\n * Returns an array consisting of the given value repeated N times.\n *\n * @param {VALUE} value The value to repeat.\n * @param {number} n The repeat count.\n * @return {!Array<VALUE>} An array with the repeated value.\n * @template VALUE\n */\nfunction repeat(value, n) {\n const array = [];\n for (let i = 0; i < n; i++) {\n array[i] = value;\n }\n return array;\n}\nexports.repeat = repeat;\n\n\n/**\n * Returns an array consisting of every argument with all arrays\n * expanded in-place recursively.\n *\n * @param {...*} var_args The values to flatten.\n * @return {!Array<?>} An array containing the flattened values.\n */\nfunction flatten(var_args) {\n const CHUNK_SIZE = 8192;\n\n const result = [];\n for (let i = 0; i < arguments.length; i++) {\n const element = arguments[i];\n if (Array.isArray(element)) {\n for (let c = 0; c < element.length; c += CHUNK_SIZE) {\n const chunk = slice(element, c, c + CHUNK_SIZE);\n const recurseResult = flatten.apply(null, chunk);\n for (let r = 0; r < recurseResult.length; r++) {\n result.push(recurseResult[r]);\n }\n }\n } else {\n result.push(element);\n }\n }\n return result;\n}\nexports.flatten = flatten;\n\n\n/**\n * Rotates an array in-place. After calling this method, the element at\n * index i will be the element previously at index (i - n) %\n * array.length, for all values of i between 0 and array.length - 1,\n * inclusive.\n *\n * For example, suppose list comprises [t, a, n, k, s]. After invoking\n * rotate(array, 1) (or rotate(array, -4)), array will comprise [s, t, a, n, k].\n *\n * @param {!Array<T>} array The array to rotate.\n * @param {number} n The amount to rotate.\n * @return {!Array<T>} The array.\n * @template T\n */\nfunction rotate(array, n) {\n asserts.assert(array.length != null);\n\n if (array.length) {\n n %= array.length;\n if (n > 0) {\n Array.prototype.unshift.apply(array, array.splice(-n, n));\n } else if (n < 0) {\n Array.prototype.push.apply(array, array.splice(0, -n));\n }\n }\n return array;\n}\nexports.rotate = rotate;\n\n\n/**\n * Moves one item of an array to a new position keeping the order of the rest\n * of the items. Example use case: keeping a list of JavaScript objects\n * synchronized with the corresponding list of DOM elements after one of the\n * elements has been dragged to a new position.\n * @param {!IArrayLike<?>} arr The array to modify.\n * @param {number} fromIndex Index of the item to move between 0 and\n * `arr.length - 1`.\n * @param {number} toIndex Target index between 0 and `arr.length - 1`.\n */\nfunction moveItem(arr, fromIndex, toIndex) {\n asserts.assert(fromIndex >= 0 && fromIndex < arr.length);\n asserts.assert(toIndex >= 0 && toIndex < arr.length);\n // Remove 1 item at fromIndex.\n const removedItems = Array.prototype.splice.call(arr, fromIndex, 1);\n // Insert the removed item at toIndex.\n Array.prototype.splice.call(arr, toIndex, 0, removedItems[0]);\n // We don't use goog.array.insertAt and goog.array.removeAt, because they're\n // significantly slower than splice.\n}\nexports.moveItem = moveItem;\n\n\n/**\n * Creates a new array for which the element at position i is an array of the\n * ith element of the provided arrays. The returned array will only be as long\n * as the shortest array provided; additional values are ignored. For example,\n * the result of zipping [1, 2] and [3, 4, 5] is [[1,3], [2, 4]].\n *\n * This is similar to the zip() function in Python. See {@link\n * http://docs.python.org/library/functions.html#zip}\n *\n * @param {...!IArrayLike<?>} var_args Arrays to be combined.\n * @return {!Array<!Array<?>>} A new array of arrays created from\n * provided arrays.\n */\nfunction zip(var_args) {\n if (!arguments.length) {\n return [];\n }\n const result = [];\n let minLen = arguments[0].length;\n for (let i = 1; i < arguments.length; i++) {\n if (arguments[i].length < minLen) {\n minLen = arguments[i].length;\n }\n }\n for (let i = 0; i < minLen; i++) {\n const value = [];\n for (let j = 0; j < arguments.length; j++) {\n value.push(arguments[j][i]);\n }\n result.push(value);\n }\n return result;\n}\nexports.zip = zip;\n\n\n/**\n * Shuffles the values in the specified array using the Fisher-Yates in-place\n * shuffle (also known as the Knuth Shuffle). By default, calls Math.random()\n * and so resets the state of that random number generator. Similarly, may reset\n * the state of any other specified random number generator.\n *\n * Runtime: O(n)\n *\n * @param {!Array<?>} arr The array to be shuffled.\n * @param {function():number=} opt_randFn Optional random function to use for\n * shuffling.\n * Takes no arguments, and returns a random number on the interval [0, 1).\n * Defaults to Math.random() using JavaScript's built-in Math library.\n */\nfunction shuffle(arr, opt_randFn) {\n const randFn = opt_randFn || Math.random;\n\n for (let i = arr.length - 1; i > 0; i--) {\n // Choose a random array index in [0, i] (inclusive with i).\n const j = Math.floor(randFn() * (i + 1));\n\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n }\n}\nexports.shuffle = shuffle;\n\n\n/**\n * Returns a new array of elements from arr, based on the indexes of elements\n * provided by index_arr. For example, the result of index copying\n * ['a', 'b', 'c'] with index_arr [1,0,0,2] is ['b', 'a', 'a', 'c'].\n *\n * @param {!IArrayLike<T>} arr The array to get a indexed copy from.\n * @param {!IArrayLike<number>} index_arr An array of indexes to get from arr.\n * @return {!Array<T>} A new array of elements from arr in index_arr order.\n * @template T\n */\nfunction copyByIndex(arr, index_arr) {\n const result = [];\n forEach(index_arr, function(index) {\n result.push(arr[index]);\n });\n return result;\n}\nexports.copyByIndex = copyByIndex;\n\n\n/**\n * Maps each element of the input array into zero or more elements of the output\n * array.\n *\n * @param {!IArrayLike<VALUE>|string} arr Array or array like object\n * over which to iterate.\n * @param {function(this:THIS, VALUE, number, ?): !Array<RESULT>} f The function\n * to call for every element. This function takes 3 arguments (the element,\n * the index and the array) and should return an array. The result will be\n * used to extend a new array.\n * @param {THIS=} opt_obj The object to be used as the value of 'this' within f.\n * @return {!Array<RESULT>} a new array with the concatenation of all arrays\n * returned from f.\n * @template THIS, VALUE, RESULT\n */\nfunction concatMap(arr, f, opt_obj) {\n return concat.apply([], map(arr, f, opt_obj));\n}\nexports.concatMap = concatMap;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\ngoog.provide('goog.dom.asserts');\n\ngoog.require('goog.asserts');\n\n/**\n * @fileoverview Custom assertions to ensure that an element has the appropriate\n * type.\n *\n * Using a goog.dom.safe wrapper on an object on the incorrect type (via an\n * incorrect static type cast) can result in security bugs: For instance,\n * g.d.s.setAnchorHref ensures that the URL assigned to the .href attribute\n * satisfies the SafeUrl contract, i.e., is safe to dereference as a hyperlink.\n * However, the value assigned to a HTMLLinkElement's .href property requires\n * the stronger TrustedResourceUrl contract, since it can refer to a stylesheet.\n * Thus, using g.d.s.setAnchorHref on an (incorrectly statically typed) object\n * of type HTMLLinkElement can result in a security vulnerability.\n * Assertions of the correct run-time type help prevent such incorrect use.\n *\n * In some cases, code using the DOM API is tested using mock objects (e.g., a\n * plain object such as {'href': url} instead of an actual Location object).\n * To allow such mocking, the assertions permit objects of types that are not\n * relevant DOM API objects at all (for instance, not Element or Location).\n *\n * Note that instanceof checks don't work straightforwardly in older versions of\n * IE, or across frames (see,\n * http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object,\n * http://stackoverflow.com/questions/26248599/instanceof-htmlelement-in-iframe-is-not-element-or-object).\n *\n * Hence, these assertions may pass vacuously in such scenarios. The resulting\n * risk of security bugs is limited by the following factors:\n * - A bug can only arise in scenarios involving incorrect static typing (the\n * wrapper methods are statically typed to demand objects of the appropriate,\n * precise type).\n * - Typically, code is tested and exercised in multiple browsers.\n */\n\n/**\n * Asserts that a given object is a Location.\n *\n * To permit this assertion to pass in the context of tests where DOM APIs might\n * be mocked, also accepts any other type except for subtypes of {!Element}.\n * This is to ensure that, for instance, HTMLLinkElement is not being used in\n * place of a Location, since this could result in security bugs due to stronger\n * contracts required for assignments to the href property of the latter.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!Location}\n */\ngoog.dom.asserts.assertIsLocation = function(o) {\n 'use strict';\n if (goog.asserts.ENABLE_ASSERTS) {\n var win = goog.dom.asserts.getWindow_(o);\n if (win) {\n if (!o || (!(o instanceof win.Location) && o instanceof win.Element)) {\n goog.asserts.fail(\n 'Argument is not a Location (or a non-Element mock); got: %s',\n goog.dom.asserts.debugStringForType_(o));\n }\n }\n }\n return /** @type {!Location} */ (o);\n};\n\n\n/**\n * Asserts that a given object is either the given subtype of Element\n * or a non-Element, non-Location Mock.\n *\n * To permit this assertion to pass in the context of tests where DOM\n * APIs might be mocked, also accepts any other type except for\n * subtypes of {!Element}. This is to ensure that, for instance,\n * HTMLScriptElement is not being used in place of a HTMLImageElement,\n * since this could result in security bugs due to stronger contracts\n * required for assignments to the src property of the latter.\n *\n * The DOM type is looked up in the window the object belongs to. In\n * some contexts, this might not be possible (e.g. when running tests\n * outside a browser, cross-domain lookup). In this case, the\n * assertions are skipped.\n *\n * @param {?Object} o The object whose type to assert.\n * @param {string} typename The name of the DOM type.\n * @return {!Element} The object.\n * @private\n */\n// TODO(bangert): Make an analog of goog.dom.TagName to correctly handle casts?\ngoog.dom.asserts.assertIsElementType_ = function(o, typename) {\n 'use strict';\n if (goog.asserts.ENABLE_ASSERTS) {\n var win = goog.dom.asserts.getWindow_(o);\n if (win && typeof win[typename] != 'undefined') {\n if (!o ||\n (!(o instanceof win[typename]) &&\n (o instanceof win.Location || o instanceof win.Element))) {\n goog.asserts.fail(\n 'Argument is not a %s (or a non-Element, non-Location mock); ' +\n 'got: %s',\n typename, goog.dom.asserts.debugStringForType_(o));\n }\n }\n }\n return /** @type {!Element} */ (o);\n};\n\n/**\n * Asserts that a given object is a HTMLAnchorElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not of type Location nor a subtype\n * of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLAnchorElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlAnchorElement instead.\n */\ngoog.dom.asserts.assertIsHTMLAnchorElement = function(o) {\n 'use strict';\n return /** @type {!HTMLAnchorElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLAnchorElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLButtonElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLButtonElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlButtonElement instead.\n */\ngoog.dom.asserts.assertIsHTMLButtonElement = function(o) {\n 'use strict';\n return /** @type {!HTMLButtonElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLButtonElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLLinkElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLLinkElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlLinkElement instead.\n */\ngoog.dom.asserts.assertIsHTMLLinkElement = function(o) {\n 'use strict';\n return /** @type {!HTMLLinkElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLLinkElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLImageElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLImageElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlImageElement instead.\n */\ngoog.dom.asserts.assertIsHTMLImageElement = function(o) {\n 'use strict';\n return /** @type {!HTMLImageElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLImageElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLAudioElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLAudioElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlAudioElement instead.\n */\ngoog.dom.asserts.assertIsHTMLAudioElement = function(o) {\n 'use strict';\n return /** @type {!HTMLAudioElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLAudioElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLVideoElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLVideoElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlVideoElement instead.\n */\ngoog.dom.asserts.assertIsHTMLVideoElement = function(o) {\n 'use strict';\n return /** @type {!HTMLVideoElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLVideoElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLInputElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLInputElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlInputElement instead.\n */\ngoog.dom.asserts.assertIsHTMLInputElement = function(o) {\n 'use strict';\n return /** @type {!HTMLInputElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLInputElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLTextAreaElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLTextAreaElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlTextAreaElement instead.\n */\ngoog.dom.asserts.assertIsHTMLTextAreaElement = function(o) {\n 'use strict';\n return /** @type {!HTMLTextAreaElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLTextAreaElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLCanvasElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLCanvasElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlCanvasElement instead.\n */\ngoog.dom.asserts.assertIsHTMLCanvasElement = function(o) {\n 'use strict';\n return /** @type {!HTMLCanvasElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLCanvasElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLEmbedElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLEmbedElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlEmbedElement instead.\n */\ngoog.dom.asserts.assertIsHTMLEmbedElement = function(o) {\n 'use strict';\n return /** @type {!HTMLEmbedElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLEmbedElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLFormElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLFormElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlFormElement instead.\n */\ngoog.dom.asserts.assertIsHTMLFormElement = function(o) {\n 'use strict';\n return /** @type {!HTMLFormElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLFormElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLFrameElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLFrameElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlFrameElement instead.\n */\ngoog.dom.asserts.assertIsHTMLFrameElement = function(o) {\n 'use strict';\n return /** @type {!HTMLFrameElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLFrameElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLIFrameElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLIFrameElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlIFrameElement instead.\n */\ngoog.dom.asserts.assertIsHTMLIFrameElement = function(o) {\n 'use strict';\n return /** @type {!HTMLIFrameElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLIFrameElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLObjectElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLObjectElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlObjectElement instead.\n */\ngoog.dom.asserts.assertIsHTMLObjectElement = function(o) {\n 'use strict';\n return /** @type {!HTMLObjectElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLObjectElement'));\n};\n\n/**\n * Asserts that a given object is a HTMLScriptElement.\n *\n * To permit this assertion to pass in the context of tests where elements might\n * be mocked, also accepts objects that are not a subtype of Element.\n *\n * @param {?Object} o The object whose type to assert.\n * @return {!HTMLScriptElement}\n * @deprecated Use goog.asserts.dom.assertIsHtmlScriptElement instead.\n */\ngoog.dom.asserts.assertIsHTMLScriptElement = function(o) {\n 'use strict';\n return /** @type {!HTMLScriptElement} */ (\n goog.dom.asserts.assertIsElementType_(o, 'HTMLScriptElement'));\n};\n\n/**\n * Returns a string representation of a value's type.\n *\n * @param {*} value An object, or primitive.\n * @return {string} The best display name for the value.\n * @private\n */\ngoog.dom.asserts.debugStringForType_ = function(value) {\n 'use strict';\n if (goog.isObject(value)) {\n try {\n return /** @type {string|undefined} */ (value.constructor.displayName) ||\n value.constructor.name || Object.prototype.toString.call(value);\n } catch (e) {\n return '<object could not be stringified>';\n }\n } else {\n return value === undefined ? 'undefined' :\n value === null ? 'null' : typeof value;\n }\n};\n\n/**\n * Gets window of element.\n * @param {?Object} o\n * @return {?Window}\n * @private\n * @suppress {strictMissingProperties} ownerDocument not defined on Object\n */\ngoog.dom.asserts.getWindow_ = function(o) {\n 'use strict';\n try {\n var doc = o && o.ownerDocument;\n // This can throw \u201cBlocked a frame with origin \"chrome-extension://...\" from\n // accessing a cross-origin frame\u201d in Chrome extension.\n var win =\n doc && /** @type {?Window} */ (doc.defaultView || doc.parentWindow);\n win = win || /** @type {!Window} */ (goog.global);\n // This can throw \u201cPermission denied to access property \"Element\" on\n // cross-origin object\u201d.\n if (win.Element && win.Location) {\n return win;\n }\n } catch (ex) {\n }\n return null;\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Utilities for creating functions. Loosely inspired by these\n * java classes from the Guava library:\n * com.google.common.base.Functions\n * https://google.github.io/guava/releases/snapshot-jre/api/docs/index.html?com/google/common/base/Functions.html\n *\n * com.google.common.base.Predicates\n * https://google.github.io/guava/releases/snapshot-jre/api/docs/index.html?com/google/common/base/Predicates.html\n *\n * More about these can be found at\n * https://github.com/google/guava/wiki/FunctionalExplained\n */\n\n\ngoog.provide('goog.functions');\n\n\n/**\n * Creates a function that always returns the same value.\n * @param {T} retValue The value to return.\n * @return {function():T} The new function.\n * @template T\n */\ngoog.functions.constant = function(retValue) {\n 'use strict';\n return function() {\n 'use strict';\n return retValue;\n };\n};\n\n\n/**\n * Always returns false.\n * @type {function(...): boolean}\n */\ngoog.functions.FALSE = function() {\n 'use strict';\n return false;\n};\n\n\n/**\n * Always returns true.\n * @type {function(...): boolean}\n */\ngoog.functions.TRUE = function() {\n 'use strict';\n return true;\n};\n\n\n/**\n * Always returns `null`.\n * @type {function(...): null}\n */\ngoog.functions.NULL = function() {\n 'use strict';\n return null;\n};\n\n\n/**\n * Always returns `undefined`.\n * @type {function(...): undefined}\n */\ngoog.functions.UNDEFINED = function() {\n return undefined;\n};\n\n/**\n * Always returns `undefined` (loosely-typed version).\n * @type {!Function}\n */\ngoog.functions.EMPTY = /** @type {?} */ (goog.functions.UNDEFINED);\n\n\n/**\n * A simple function that returns the first argument of whatever is passed\n * into it.\n * @param {T=} opt_returnValue The single value that will be returned.\n * @param {...*} var_args Optional trailing arguments. These are ignored.\n * @return {T} The first argument passed in, or undefined if nothing was passed.\n * @template T\n */\ngoog.functions.identity = function(opt_returnValue, var_args) {\n 'use strict';\n return opt_returnValue;\n};\n\n\n/**\n * Creates a function that always throws an error with the given message.\n * @param {string} message The error message.\n * @return {!Function} The error-throwing function.\n */\ngoog.functions.error = function(message) {\n 'use strict';\n return function() {\n 'use strict';\n throw new Error(message);\n };\n};\n\n\n/**\n * Creates a function that throws the given object.\n * @param {*} err An object to be thrown.\n * @return {!Function} The error-throwing function.\n */\ngoog.functions.fail = function(err) {\n 'use strict';\n return function() {\n 'use strict';\n throw err;\n };\n};\n\n\n/**\n * Given a function, create a function that keeps opt_numArgs arguments and\n * silently discards all additional arguments.\n * @param {Function} f The original function.\n * @param {number=} opt_numArgs The number of arguments to keep. Defaults to 0.\n * @return {!Function} A version of f that only keeps the first opt_numArgs\n * arguments.\n */\ngoog.functions.lock = function(f, opt_numArgs) {\n 'use strict';\n opt_numArgs = opt_numArgs || 0;\n return function() {\n 'use strict';\n const self = /** @type {*} */ (this);\n return f.apply(self, Array.prototype.slice.call(arguments, 0, opt_numArgs));\n };\n};\n\n\n/**\n * Creates a function that returns its nth argument.\n * @param {number} n The position of the return argument.\n * @return {!Function} A new function.\n */\ngoog.functions.nth = function(n) {\n 'use strict';\n return function() {\n 'use strict';\n return arguments[n];\n };\n};\n\n\n/**\n * Like goog.partial(), except that arguments are added after arguments to the\n * returned function.\n *\n * Usage:\n * function f(arg1, arg2, arg3, arg4) { ... }\n * var g = goog.functions.partialRight(f, arg3, arg4);\n * g(arg1, arg2);\n *\n * @param {!Function} fn A function to partially apply.\n * @param {...*} var_args Additional arguments that are partially applied to fn\n * at the end.\n * @return {!Function} A partially-applied form of the function goog.partial()\n * was invoked as a method of.\n */\ngoog.functions.partialRight = function(fn, var_args) {\n 'use strict';\n const rightArgs = Array.prototype.slice.call(arguments, 1);\n return function() {\n 'use strict';\n // Even in strict mode, IE10/11 and Edge (non-Chromium) use global context\n // when free-calling functions. To catch cases where people were using this\n // erroneously, we explicitly change the context to undefined to match\n // strict mode specifications.\n let self = /** @type {*} */ (this);\n if (self === goog.global) {\n self = undefined;\n }\n const newArgs = Array.prototype.slice.call(arguments);\n newArgs.push.apply(newArgs, rightArgs);\n return fn.apply(self, newArgs);\n };\n};\n\n\n/**\n * Given a function, create a new function that swallows its return value\n * and replaces it with a new one.\n * @param {Function} f A function.\n * @param {T} retValue A new return value.\n * @return {function(...?):T} A new function.\n * @template T\n */\ngoog.functions.withReturnValue = function(f, retValue) {\n 'use strict';\n return goog.functions.sequence(f, goog.functions.constant(retValue));\n};\n\n\n/**\n * Creates a function that returns whether its argument equals the given value.\n *\n * Example:\n * var key = goog.object.findKey(obj, goog.functions.equalTo('needle'));\n *\n * @param {*} value The value to compare to.\n * @param {boolean=} opt_useLooseComparison Whether to use a loose (==)\n * comparison rather than a strict (===) one. Defaults to false.\n * @return {function(*):boolean} The new function.\n */\ngoog.functions.equalTo = function(value, opt_useLooseComparison) {\n 'use strict';\n return function(other) {\n 'use strict';\n return opt_useLooseComparison ? (value == other) : (value === other);\n };\n};\n\n\n/**\n * Creates the composition of the functions passed in.\n * For example, (goog.functions.compose(f, g))(a) is equivalent to f(g(a)).\n * @param {function(...?):T} fn The final function.\n * @param {...Function} var_args A list of functions.\n * @return {function(...?):T} The composition of all inputs.\n * @template T\n */\ngoog.functions.compose = function(fn, var_args) {\n 'use strict';\n const functions = arguments;\n const length = functions.length;\n return function() {\n 'use strict';\n const self = /** @type {*} */ (this);\n let result;\n if (length) {\n result = functions[length - 1].apply(self, arguments);\n }\n\n for (let i = length - 2; i >= 0; i--) {\n result = functions[i].call(self, result);\n }\n return result;\n };\n};\n\n\n/**\n * Creates a function that calls the functions passed in in sequence, and\n * returns the value of the last function. For example,\n * (goog.functions.sequence(f, g))(x) is equivalent to f(x),g(x).\n * @param {...Function} var_args A list of functions.\n * @return {!Function} A function that calls all inputs in sequence.\n */\ngoog.functions.sequence = function(var_args) {\n 'use strict';\n const functions = arguments;\n const length = functions.length;\n return function() {\n 'use strict';\n const self = /** @type {*} */ (this);\n let result;\n for (let i = 0; i < length; i++) {\n result = functions[i].apply(self, arguments);\n }\n return result;\n };\n};\n\n\n/**\n * Creates a function that returns true if each of its components evaluates\n * to true. The components are evaluated in order, and the evaluation will be\n * short-circuited as soon as a function returns false.\n * For example, (goog.functions.and(f, g))(x) is equivalent to f(x) && g(x).\n * @param {...Function} var_args A list of functions.\n * @return {function(...?):boolean} A function that ANDs its component\n * functions.\n */\ngoog.functions.and = function(var_args) {\n 'use strict';\n const functions = arguments;\n const length = functions.length;\n return function() {\n 'use strict';\n const self = /** @type {*} */ (this);\n for (let i = 0; i < length; i++) {\n if (!functions[i].apply(self, arguments)) {\n return false;\n }\n }\n return true;\n };\n};\n\n\n/**\n * Creates a function that returns true if any of its components evaluates\n * to true. The components are evaluated in order, and the evaluation will be\n * short-circuited as soon as a function returns true.\n * For example, (goog.functions.or(f, g))(x) is equivalent to f(x) || g(x).\n * @param {...Function} var_args A list of functions.\n * @return {function(...?):boolean} A function that ORs its component\n * functions.\n */\ngoog.functions.or = function(var_args) {\n 'use strict';\n const functions = arguments;\n const length = functions.length;\n return function() {\n 'use strict';\n const self = /** @type {*} */ (this);\n for (let i = 0; i < length; i++) {\n if (functions[i].apply(self, arguments)) {\n return true;\n }\n }\n return false;\n };\n};\n\n\n/**\n * Creates a function that returns the Boolean opposite of a provided function.\n * For example, (goog.functions.not(f))(x) is equivalent to !f(x).\n * @param {!Function} f The original function.\n * @return {function(...?):boolean} A function that delegates to f and returns\n * opposite.\n */\ngoog.functions.not = function(f) {\n 'use strict';\n return function() {\n 'use strict';\n const self = /** @type {*} */ (this);\n return !f.apply(self, arguments);\n };\n};\n\n\n/**\n * Generic factory function to construct an object given the constructor\n * and the arguments. Intended to be bound to create object factories.\n *\n * Example:\n *\n * var factory = goog.partial(goog.functions.create, Class);\n *\n * @param {function(new:T, ...)} constructor The constructor for the Object.\n * @param {...*} var_args The arguments to be passed to the constructor.\n * @return {T} A new instance of the class given in `constructor`.\n * @template T\n * @deprecated This function does not work with ES6 class constructors. Use\n * arrow functions + spread args instead.\n */\ngoog.functions.create = function(constructor, var_args) {\n 'use strict';\n /**\n * @constructor\n * @final\n */\n const temp = function() {};\n temp.prototype = constructor.prototype;\n\n // obj will have constructor's prototype in its chain and\n // 'obj instanceof constructor' will be true.\n const obj = new temp();\n\n // obj is initialized by constructor.\n // arguments is only array-like so lacks shift(), but can be used with\n // the Array prototype function.\n constructor.apply(obj, Array.prototype.slice.call(arguments, 1));\n return obj;\n};\n\n\n/**\n * @define {boolean} Whether the return value cache should be used.\n * This should only be used to disable caches when testing.\n */\ngoog.functions.CACHE_RETURN_VALUE =\n goog.define('goog.functions.CACHE_RETURN_VALUE', true);\n\n\n/**\n * Gives a wrapper function that caches the return value of a parameterless\n * function when first called.\n *\n * When called for the first time, the given function is called and its\n * return value is cached (thus this is only appropriate for idempotent\n * functions). Subsequent calls will return the cached return value. This\n * allows the evaluation of expensive functions to be delayed until first used.\n *\n * To cache the return values of functions with parameters, see goog.memoize.\n *\n * @param {function():T} fn A function to lazily evaluate.\n * @return {function():T} A wrapped version the function.\n * @template T\n */\ngoog.functions.cacheReturnValue = function(fn) {\n 'use strict';\n let called = false;\n let value;\n\n return function() {\n 'use strict';\n if (!goog.functions.CACHE_RETURN_VALUE) {\n return fn();\n }\n\n if (!called) {\n value = fn();\n called = true;\n }\n\n return value;\n };\n};\n\n\n/**\n * Wraps a function to allow it to be called, at most, once. All\n * additional calls are no-ops.\n *\n * This is particularly useful for initialization functions\n * that should be called, at most, once.\n *\n * @param {function():*} f Function to call.\n * @return {function():undefined} Wrapped function.\n */\ngoog.functions.once = function(f) {\n 'use strict';\n // Keep a reference to the function that we null out when we're done with\n // it -- that way, the function can be GC'd when we're done with it.\n let inner = f;\n return function() {\n 'use strict';\n if (inner) {\n const tmp = inner;\n inner = null;\n tmp();\n }\n };\n};\n\n\n/**\n * Wraps a function to allow it to be called, at most, once per interval\n * (specified in milliseconds). If the wrapper function is called N times within\n * that interval, only the Nth call will go through.\n *\n * This is particularly useful for batching up repeated actions where the\n * last action should win. This can be used, for example, for refreshing an\n * autocomplete pop-up every so often rather than updating with every keystroke,\n * since the final text typed by the user is the one that should produce the\n * final autocomplete results. For more stateful debouncing with support for\n * pausing, resuming, and canceling debounced actions, use\n * `goog.async.Debouncer`.\n *\n * @param {function(this:SCOPE, ...?)} f Function to call.\n * @param {number} interval Interval over which to debounce. The function will\n * only be called after the full interval has elapsed since the last call.\n * @param {SCOPE=} opt_scope Object in whose scope to call the function.\n * @return {function(...?): undefined} Wrapped function.\n * @template SCOPE\n */\ngoog.functions.debounce = function(f, interval, opt_scope) {\n 'use strict';\n let timeout = 0;\n return /** @type {function(...?)} */ (function(var_args) {\n 'use strict';\n goog.global.clearTimeout(timeout);\n const args = arguments;\n timeout = goog.global.setTimeout(function() {\n 'use strict';\n f.apply(opt_scope, args);\n }, interval);\n });\n};\n\n\n/**\n * Wraps a function to allow it to be called, at most, once per interval\n * (specified in milliseconds). If the wrapper function is called N times in\n * that interval, both the 1st and the Nth calls will go through.\n *\n * This is particularly useful for limiting repeated user requests where the\n * the last action should win, but you also don't want to wait until the end of\n * the interval before sending a request out, as it leads to a perception of\n * slowness for the user.\n *\n * @param {function(this:SCOPE, ...?)} f Function to call.\n * @param {number} interval Interval over which to throttle. The function can\n * only be called once per interval.\n * @param {SCOPE=} opt_scope Object in whose scope to call the function.\n * @return {function(...?): undefined} Wrapped function.\n * @template SCOPE\n */\ngoog.functions.throttle = function(f, interval, opt_scope) {\n 'use strict';\n let timeout = 0;\n let shouldFire = false;\n let storedArgs = [];\n\n const handleTimeout = function() {\n 'use strict';\n timeout = 0;\n if (shouldFire) {\n shouldFire = false;\n fire();\n }\n };\n\n const fire = function() {\n 'use strict';\n timeout = goog.global.setTimeout(handleTimeout, interval);\n let args = storedArgs;\n storedArgs = []; // Avoid a space leak by clearing stored arguments.\n f.apply(opt_scope, args);\n };\n\n return /** @type {function(...?)} */ (function(var_args) {\n 'use strict';\n storedArgs = arguments;\n if (!timeout) {\n fire();\n } else {\n shouldFire = true;\n }\n });\n};\n\n\n/**\n * Wraps a function to allow it to be called, at most, once per interval\n * (specified in milliseconds). If the wrapper function is called N times within\n * that interval, only the 1st call will go through.\n *\n * This is particularly useful for limiting repeated user requests where the\n * first request is guaranteed to have all the data required to perform the\n * final action, so there's no need to wait until the end of the interval before\n * sending the request out.\n *\n * @param {function(this:SCOPE, ...?)} f Function to call.\n * @param {number} interval Interval over which to rate-limit. The function will\n * only be called once per interval, and ignored for the remainer of the\n * interval.\n * @param {SCOPE=} opt_scope Object in whose scope to call the function.\n * @return {function(...?): undefined} Wrapped function.\n * @template SCOPE\n */\ngoog.functions.rateLimit = function(f, interval, opt_scope) {\n 'use strict';\n let timeout = 0;\n\n const handleTimeout = function() {\n 'use strict';\n timeout = 0;\n };\n\n return /** @type {function(...?)} */ (function(var_args) {\n 'use strict';\n if (!timeout) {\n timeout = goog.global.setTimeout(handleTimeout, interval);\n f.apply(opt_scope, arguments);\n }\n });\n};\n\n/**\n * Returns true if the specified value is a function.\n * @param {*} val Variable to test.\n * @return {boolean} Whether variable is a function.\n */\ngoog.functions.isFunction = (val) => {\n return typeof val === 'function';\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\ngoog.provide('goog.string.TypedString');\n\n\n\n/**\n * Wrapper for strings that conform to a data type or language.\n *\n * Implementations of this interface are wrappers for strings, and typically\n * associate a type contract with the wrapped string. Concrete implementations\n * of this interface may choose to implement additional run-time type checking,\n * see for example `goog.html.SafeHtml`. If available, client code that\n * needs to ensure type membership of an object should use the type's function\n * to assert type membership, such as `goog.html.SafeHtml.unwrap`.\n * @interface\n */\ngoog.string.TypedString = function() {};\n\n\n/**\n * Interface marker of the TypedString interface.\n *\n * This property can be used to determine at runtime whether or not an object\n * implements this interface. All implementations of this interface set this\n * property to `true`.\n * @type {boolean}\n */\ngoog.string.TypedString.prototype.implementsGoogStringTypedString;\n\n\n/**\n * Retrieves this wrapped string's value.\n * @return {string} The wrapped string's value.\n */\ngoog.string.TypedString.prototype.getTypedStringValue;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\ngoog.provide('goog.string.Const');\n\ngoog.require('goog.asserts');\ngoog.require('goog.string.TypedString');\n\n\n\n/**\n * Wrapper for compile-time-constant strings.\n *\n * Const is a wrapper for strings that can only be created from program\n * constants (i.e., string literals). This property relies on a custom Closure\n * compiler check that `goog.string.Const.from` is only invoked on\n * compile-time-constant expressions.\n *\n * Const is useful in APIs whose correct and secure use requires that certain\n * arguments are not attacker controlled: Compile-time constants are inherently\n * under the control of the application and not under control of external\n * attackers, and hence are safe to use in such contexts.\n *\n * Instances of this type must be created via its factory method\n * `goog.string.Const.from` and not by invoking its constructor. The\n * constructor intentionally takes no parameters and the type is immutable;\n * hence only a default instance corresponding to the empty string can be\n * obtained via constructor invocation. Use goog.string.Const.EMPTY\n * instead of using this constructor to get an empty Const string.\n *\n * @see goog.string.Const#from\n * @constructor\n * @final\n * @struct\n * @implements {goog.string.TypedString}\n * @param {Object=} opt_token package-internal implementation detail.\n * @param {string=} opt_content package-internal implementation detail.\n */\ngoog.string.Const = function(opt_token, opt_content) {\n 'use strict';\n /**\n * The wrapped value of this Const object. The field has a purposely ugly\n * name to make (non-compiled) code that attempts to directly access this\n * field stand out.\n * @private {string}\n */\n this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ =\n ((opt_token ===\n goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_) &&\n opt_content) ||\n '';\n\n /**\n * A type marker used to implement additional run-time type checking.\n * @see goog.string.Const#unwrap\n * @const {!Object}\n * @private\n */\n this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ =\n goog.string.Const.TYPE_MARKER_;\n};\n\n\n/**\n * @override\n * @const\n */\ngoog.string.Const.prototype.implementsGoogStringTypedString = true;\n\n\n/**\n * Returns this Const's value as a string.\n *\n * IMPORTANT: In code where it is security-relevant that an object's type is\n * indeed `goog.string.Const`, use `goog.string.Const.unwrap`\n * instead of this method.\n *\n * @see goog.string.Const#unwrap\n * @override\n * @return {string}\n */\ngoog.string.Const.prototype.getTypedStringValue = function() {\n 'use strict';\n return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_;\n};\n\n\nif (goog.DEBUG) {\n /**\n * Returns a debug-string representation of this value.\n *\n * To obtain the actual string value wrapped inside an object of this type,\n * use `goog.string.Const.unwrap`.\n *\n * @see goog.string.Const#unwrap\n * @override\n * @return {string}\n */\n goog.string.Const.prototype.toString = function() {\n 'use strict';\n return 'Const{' +\n this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ +\n '}';\n };\n}\n\n\n/**\n * Performs a runtime check that the provided object is indeed an instance\n * of `goog.string.Const`, and returns its value.\n * @param {!goog.string.Const} stringConst The object to extract from.\n * @return {string} The Const object's contained string, unless the run-time\n * type check fails. In that case, `unwrap` returns an innocuous\n * string, or, if assertions are enabled, throws\n * `goog.asserts.AssertionError`.\n */\ngoog.string.Const.unwrap = function(stringConst) {\n 'use strict';\n // Perform additional run-time type-checking to ensure that stringConst is\n // indeed an instance of the expected type. This provides some additional\n // protection against security bugs due to application code that disables type\n // checks.\n if (stringConst instanceof goog.string.Const &&\n stringConst.constructor === goog.string.Const &&\n stringConst.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ ===\n goog.string.Const.TYPE_MARKER_) {\n return stringConst\n .stringConstValueWithSecurityContract__googStringSecurityPrivate_;\n } else {\n goog.asserts.fail(\n 'expected object of type Const, got \\'' + stringConst + '\\'');\n return 'type_error:Const';\n }\n};\n\n\n/**\n * Creates a Const object from a compile-time constant string.\n *\n * It is illegal to invoke this function on an expression whose\n * compile-time-constant value cannot be determined by the Closure compiler.\n *\n * Correct invocations include,\n * <pre>\n * var s = goog.string.Const.from('hello');\n * var t = goog.string.Const.from('hello' + 'world');\n * </pre>\n *\n * In contrast, the following are illegal:\n * <pre>\n * var s = goog.string.Const.from(getHello());\n * var t = goog.string.Const.from('hello' + world);\n * </pre>\n *\n * @param {string} s A constant string from which to create a Const.\n * @return {!goog.string.Const} A Const object initialized to stringConst.\n */\ngoog.string.Const.from = function(s) {\n 'use strict';\n return new goog.string.Const(\n goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_, s);\n};\n\n/**\n * Type marker for the Const type, used to implement additional run-time\n * type checking.\n * @const {!Object}\n * @private\n */\ngoog.string.Const.TYPE_MARKER_ = {};\n\n/**\n * @type {!Object}\n * @private\n * @const\n */\ngoog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ = {};\n\n/**\n * A Const instance wrapping the empty string.\n * @const {!goog.string.Const}\n */\ngoog.string.Const.EMPTY = goog.string.Const.from('');\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Policy to convert strings to Trusted Types. See\n * https://github.com/WICG/trusted-types for details.\n */\n\ngoog.provide('goog.html.trustedtypes');\n\n\n/**\n * @define {string} Name for the Trusted Types policy used in Closure Safe\n * Types. Differs from `goog.TRUSTED_TYPES_POLICY_NAME` in that the latter is\n * also used for other purposes like the debug loader. If empty, Closure Safe\n * Types will not use Trusted Types. Default is `goog.TRUSTED_TYPES_POLICY_NAME`\n * plus the suffix `#html`, unless `goog.TRUSTED_TYPES_POLICY_NAME` is empty.\n * @package\n */\ngoog.html.trustedtypes.POLICY_NAME = goog.define(\n 'goog.html.trustedtypes.POLICY_NAME',\n goog.TRUSTED_TYPES_POLICY_NAME ? goog.TRUSTED_TYPES_POLICY_NAME + '#html' :\n '');\n\n\n/**\n * Cached result of goog.createTrustedTypesPolicy.\n * @type {?TrustedTypePolicy|undefined}\n * @private\n */\ngoog.html.trustedtypes.cachedPolicy_;\n\n\n/**\n * Creates a (singleton) Trusted Type Policy for Safe HTML Types.\n * @return {?TrustedTypePolicy}\n * @package\n */\ngoog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse = function() {\n 'use strict';\n if (!goog.html.trustedtypes.POLICY_NAME) {\n // Binary not configured for Trusted Types.\n return null;\n }\n\n if (goog.html.trustedtypes.cachedPolicy_ === undefined) {\n goog.html.trustedtypes.cachedPolicy_ =\n goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME);\n }\n\n return goog.html.trustedtypes.cachedPolicy_;\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview The SafeScript type and its builders.\n *\n * TODO(xtof): Link to document stating type contract.\n */\n\ngoog.module('goog.html.SafeScript');\ngoog.module.declareLegacyNamespace();\n\nconst Const = goog.require('goog.string.Const');\nconst TypedString = goog.require('goog.string.TypedString');\nconst trustedtypes = goog.require('goog.html.trustedtypes');\nconst {fail} = goog.require('goog.asserts');\n\n/**\n * Token used to ensure that object is created only from this file. No code\n * outside of this file can access this token.\n * @const {!Object}\n */\nconst CONSTRUCTOR_TOKEN_PRIVATE = {};\n\n/**\n * A string-like object which represents JavaScript code and that carries the\n * security type contract that its value, as a string, will not cause execution\n * of unconstrained attacker controlled code (XSS) when evaluated as JavaScript\n * in a browser.\n *\n * Instances of this type must be created via the factory method\n * `SafeScript.fromConstant` and not by invoking its constructor. The\n * constructor intentionally takes an extra parameter that cannot be constructed\n * outside of this file and the type is immutable; hence only a default instance\n * corresponding to the empty string can be obtained via constructor invocation.\n *\n * A SafeScript's string representation can safely be interpolated as the\n * content of a script element within HTML. The SafeScript string should not be\n * escaped before interpolation.\n *\n * Note that the SafeScript might contain text that is attacker-controlled but\n * that text should have been interpolated with appropriate escaping,\n * sanitization and/or validation into the right location in the script, such\n * that it is highly constrained in its effect (for example, it had to match a\n * set of whitelisted words).\n *\n * A SafeScript can be constructed via security-reviewed unchecked\n * conversions. In this case producers of SafeScript must ensure themselves that\n * the SafeScript does not contain unsafe script. Note in particular that\n * `&lt;` is dangerous, even when inside JavaScript strings, and so should\n * always be forbidden or JavaScript escaped in user controlled input. For\n * example, if `&lt;/script&gt;&lt;script&gt;evil&lt;/script&gt;\"` were\n * interpolated inside a JavaScript string, it would break out of the context\n * of the original script element and `evil` would execute. Also note\n * that within an HTML script (raw text) element, HTML character references,\n * such as \"&lt;\" are not allowed. See\n * http://www.w3.org/TR/html5/scripting-1.html#restrictions-for-contents-of-script-elements.\n * Creating SafeScript objects HAS SIDE-EFFECTS due to calling Trusted Types Web\n * API.\n *\n * @see SafeScript#fromConstant\n * @final\n * @implements {TypedString}\n */\nclass SafeScript {\n /**\n * @param {!TrustedScript|string} value\n * @param {!Object} token package-internal implementation detail.\n */\n constructor(value, token) {\n /**\n * The contained value of this SafeScript. The field has a purposely ugly\n * name to make (non-compiled) code that attempts to directly access this\n * field stand out.\n * @private {!TrustedScript|string}\n */\n this.privateDoNotAccessOrElseSafeScriptWrappedValue_ =\n (token === CONSTRUCTOR_TOKEN_PRIVATE) ? value : '';\n\n /**\n * @override\n * @const\n */\n this.implementsGoogStringTypedString = true;\n }\n\n /**\n * Returns a string-representation of this value.\n *\n * To obtain the actual string value wrapped in a SafeScript, use\n * `SafeScript.unwrap`.\n *\n * @return {string}\n * @see SafeScript#unwrap\n * @override\n */\n toString() {\n return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString();\n }\n\n /**\n * Creates a SafeScript object from a compile-time constant string.\n *\n * @param {!Const} script A compile-time-constant string from which to create\n * a SafeScript.\n * @return {!SafeScript} A SafeScript object initialized to `script`.\n */\n static fromConstant(script) {\n const scriptString = Const.unwrap(script);\n if (scriptString.length === 0) {\n return SafeScript.EMPTY;\n }\n return SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(\n scriptString);\n }\n\n /**\n * Creates a SafeScript JSON representation from anything that could be passed\n * to JSON.stringify.\n * @param {*} val\n * @return {!SafeScript}\n */\n static fromJson(val) {\n return SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(\n SafeScript.stringify_(val));\n }\n\n /**\n * Returns this SafeScript's value as a string.\n *\n * IMPORTANT: In code where it is security relevant that an object's type is\n * indeed `SafeScript`, use `SafeScript.unwrap` instead of\n * this method. If in doubt, assume that it's security relevant. In\n * particular, note that goog.html functions which return a goog.html type do\n * not guarantee the returned instance is of the right type. For example:\n *\n * <pre>\n * var fakeSafeHtml = new String('fake');\n * fakeSafeHtml.__proto__ = goog.html.SafeHtml.prototype;\n * var newSafeHtml = goog.html.SafeHtml.htmlEscape(fakeSafeHtml);\n * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by\n * // goog.html.SafeHtml.htmlEscape() as fakeSafeHtml\n * // instanceof goog.html.SafeHtml.\n * </pre>\n *\n * @see SafeScript#unwrap\n * @override\n */\n getTypedStringValue() {\n return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString();\n }\n\n /**\n * Performs a runtime check that the provided object is indeed a\n * SafeScript object, and returns its value.\n *\n * @param {!SafeScript} safeScript The object to extract from.\n * @return {string} The safeScript object's contained string, unless\n * the run-time type check fails. In that case, `unwrap` returns an\n * innocuous string, or, if assertions are enabled, throws\n * `asserts.AssertionError`.\n */\n static unwrap(safeScript) {\n return SafeScript.unwrapTrustedScript(safeScript).toString();\n }\n\n /**\n * Unwraps value as TrustedScript if supported or as a string if not.\n * @param {!SafeScript} safeScript\n * @return {!TrustedScript|string}\n * @see SafeScript.unwrap\n */\n static unwrapTrustedScript(safeScript) {\n // Perform additional Run-time type-checking to ensure that\n // safeScript is indeed an instance of the expected type. This\n // provides some additional protection against security bugs due to\n // application code that disables type checks.\n // Specifically, the following checks are performed:\n // 1. The object is an instance of the expected type.\n // 2. The object is not an instance of a subclass.\n if (safeScript instanceof SafeScript &&\n safeScript.constructor === SafeScript) {\n return safeScript.privateDoNotAccessOrElseSafeScriptWrappedValue_;\n } else {\n fail(\n 'expected object of type SafeScript, got \\'' + safeScript +\n '\\' of type ' + goog.typeOf(safeScript));\n return 'type_error:SafeScript';\n }\n }\n\n /**\n * Converts the given value to an embeddable JSON string and returns it. The\n * resulting string can be embedded in HTML because the '<' character is\n * encoded.\n *\n * @param {*} val\n * @return {string}\n * @private\n */\n static stringify_(val) {\n const json = JSON.stringify(val);\n return json.replace(/</g, '\\\\x3c');\n }\n\n /**\n * Package-internal utility method to create SafeScript instances.\n *\n * @param {string} script The string to initialize the SafeScript object with.\n * @return {!SafeScript} The initialized SafeScript object.\n * @package\n */\n static createSafeScriptSecurityPrivateDoNotAccessOrElse(script) {\n /** @noinline */\n const noinlineScript = script;\n const policy = trustedtypes.getPolicyPrivateDoNotAccessOrElse();\n const trustedScript =\n policy ? policy.createScript(noinlineScript) : noinlineScript;\n return new SafeScript(trustedScript, CONSTRUCTOR_TOKEN_PRIVATE);\n }\n}\n\n/**\n * A SafeScript instance corresponding to the empty string.\n * @const {!SafeScript}\n */\nSafeScript.EMPTY = /** @type {!SafeScript} */ ({\n // NOTE: this compiles to nothing, but hides the possible side effect of\n // SafeScript creation (due to calling trustedTypes.createPolicy) from the\n // compiler so that the entire call can be removed if the result is not used.\n valueOf: function() {\n return SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse('');\n },\n}.valueOf());\n\n\nexports = SafeScript;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Wrapper for URL and its createObjectUrl and revokeObjectUrl\n * methods that are part of the HTML5 File API.\n */\n\ngoog.provide('goog.fs.url');\n\n\n/**\n * Creates a blob URL for a blob object.\n * Throws an error if the browser does not support Object Urls.\n *\n * @param {!File|!Blob|!MediaSource|!MediaStream} obj The object for which\n * to create the URL.\n * @return {string} The URL for the object.\n */\ngoog.fs.url.createObjectUrl = function(obj) {\n 'use strict';\n return goog.fs.url.getUrlObject_().createObjectURL(obj);\n};\n\n\n/**\n * Revokes a URL created by {@link goog.fs.url.createObjectUrl}.\n * Throws an error if the browser does not support Object Urls.\n *\n * @param {string} url The URL to revoke.\n * @return {void}\n */\ngoog.fs.url.revokeObjectUrl = function(url) {\n 'use strict';\n goog.fs.url.getUrlObject_().revokeObjectURL(url);\n};\n\n\n/**\n * @record\n * @private\n */\ngoog.fs.url.UrlObject_ = function() {};\n\n/**\n * @param {!File|!Blob|!MediaSource|!MediaStream} arg\n * @return {string}\n */\ngoog.fs.url.UrlObject_.prototype.createObjectURL = function(arg) {};\n\n/**\n * @param {string} s\n * @return {void}\n */\ngoog.fs.url.UrlObject_.prototype.revokeObjectURL = function(s) {};\n\n\n/**\n * Get the object that has the createObjectURL and revokeObjectURL functions for\n * this browser.\n *\n * @return {!goog.fs.url.UrlObject_} The object for this browser.\n * @private\n */\ngoog.fs.url.getUrlObject_ = function() {\n 'use strict';\n const urlObject = goog.fs.url.findUrlObject_();\n if (urlObject != null) {\n return urlObject;\n } else {\n throw new Error('This browser doesn\\'t seem to support blob URLs');\n }\n};\n\n\n/**\n * Finds the object that has the createObjectURL and revokeObjectURL functions\n * for this browser.\n *\n * @return {?goog.fs.url.UrlObject_} The object for this browser or null if the\n * browser does not support Object Urls.\n * @private\n */\ngoog.fs.url.findUrlObject_ = function() {\n 'use strict';\n // This is what the spec says to do\n // http://dev.w3.org/2006/webapi/FileAPI/#dfn-createObjectURL\n if (goog.global.URL !== undefined &&\n goog.global.URL.createObjectURL !== undefined) {\n return /** @type {!goog.fs.url.UrlObject_} */ (goog.global.URL);\n // This is what the spec used to say to do\n } else if (goog.global.createObjectURL !== undefined) {\n return /** @type {!goog.fs.url.UrlObject_} */ (goog.global);\n } else {\n return null;\n }\n};\n\n\n/**\n * Checks whether this browser supports Object Urls. If not, calls to\n * createObjectUrl and revokeObjectUrl will result in an error.\n *\n * @return {boolean} True if this browser supports Object Urls.\n */\ngoog.fs.url.browserSupportsObjectUrls = function() {\n 'use strict';\n return goog.fs.url.findUrlObject_() != null;\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Wrappers for the HTML5 File API. These wrappers closely mirror\n * the underlying APIs, but use Closure-style events and Deferred return values.\n * Their existence also makes it possible to mock the FileSystem API for testing\n * in browsers that don't support it natively.\n *\n * When adding public functions to anything under this namespace, be sure to add\n * its mock counterpart to goog.testing.fs.\n */\n\ngoog.provide('goog.fs.blob');\n\n\n\n/**\n * Concatenates one or more values together and converts them to a Blob.\n *\n * @param {...(string|!Blob|!ArrayBuffer)} var_args The values that will make up\n * the resulting blob.\n * @return {!Blob} The blob.\n */\ngoog.fs.blob.getBlob = function(var_args) {\n 'use strict';\n const BlobBuilder = goog.global.BlobBuilder || goog.global.WebKitBlobBuilder;\n\n if (BlobBuilder !== undefined) {\n const bb = new BlobBuilder();\n for (let i = 0; i < arguments.length; i++) {\n bb.append(arguments[i]);\n }\n return bb.getBlob();\n } else {\n return goog.fs.blob.getBlobWithProperties(\n Array.prototype.slice.call(arguments));\n }\n};\n\n\n/**\n * Creates a blob with the given properties.\n * See https://developer.mozilla.org/en-US/docs/Web/API/Blob for more details.\n *\n * @param {!Array<string|!Blob|!ArrayBuffer>} parts The values that will make up\n * the resulting blob (subset supported by both BlobBuilder.append() and\n * Blob constructor).\n * @param {string=} opt_type The MIME type of the Blob.\n * @param {string=} opt_endings Specifies how strings containing newlines are to\n * be written out.\n * @return {!Blob} The blob.\n */\ngoog.fs.blob.getBlobWithProperties = function(parts, opt_type, opt_endings) {\n 'use strict';\n const BlobBuilder = goog.global.BlobBuilder || goog.global.WebKitBlobBuilder;\n\n if (BlobBuilder !== undefined) {\n const bb = new BlobBuilder();\n for (let i = 0; i < parts.length; i++) {\n bb.append(parts[i], opt_endings);\n }\n return bb.getBlob(opt_type);\n } else if (goog.global.Blob !== undefined) {\n const properties = {};\n if (opt_type) {\n properties['type'] = opt_type;\n }\n if (opt_endings) {\n properties['endings'] = opt_endings;\n }\n return new Blob(parts, properties);\n } else {\n throw new Error('This browser doesn\\'t seem to support creating Blobs');\n }\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview The TrustedResourceUrl type and its builders.\n *\n * TODO(xtof): Link to document stating type contract.\n */\n\ngoog.provide('goog.html.TrustedResourceUrl');\n\ngoog.require('goog.asserts');\ngoog.require('goog.fs.blob');\ngoog.require('goog.fs.url');\ngoog.require('goog.html.SafeScript');\ngoog.require('goog.html.trustedtypes');\ngoog.require('goog.string.Const');\ngoog.require('goog.string.TypedString');\n\n\n\n/**\n * A URL which is under application control and from which script, CSS, and\n * other resources that represent executable code, can be fetched.\n *\n * Given that the URL can only be constructed from strings under application\n * control and is used to load resources, bugs resulting in a malformed URL\n * should not have a security impact and are likely to be easily detectable\n * during testing. Given the wide number of non-RFC compliant URLs in use,\n * stricter validation could prevent some applications from being able to use\n * this type.\n *\n * Instances of this type must be created via the factory method,\n * (`fromConstant`, `fromConstants`, `format` or `formatWithParams`), and not by\n * invoking its constructor. The constructor intentionally takes an extra\n * parameter that cannot be constructed outside of this file and the type is\n * immutable; hence only a default instance corresponding to the empty string\n * can be obtained via constructor invocation.\n *\n * Creating TrustedResourceUrl objects HAS SIDE-EFFECTS due to calling\n * Trusted Types Web API.\n *\n * @see goog.html.TrustedResourceUrl#fromConstant\n * @final\n * @struct\n * @implements {goog.string.TypedString}\n */\ngoog.html.TrustedResourceUrl = class {\n /**\n * @param {!TrustedScriptURL|string} value\n * @param {!Object} token package-internal implementation detail.\n */\n constructor(value, token) {\n /**\n * The contained value of this TrustedResourceUrl. The field has a\n * purposely ugly name to make (non-compiled) code that attempts to directly\n * access this field stand out.\n * @const\n * @private {!TrustedScriptURL|string}\n */\n this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ =\n (token === goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_) ?\n value :\n '';\n }\n\n /**\n * Returns a string-representation of this value.\n *\n * To obtain the actual string value wrapped in a TrustedResourceUrl, use\n * `goog.html.TrustedResourceUrl.unwrap`.\n *\n * @return {string}\n * @see goog.html.TrustedResourceUrl#unwrap\n * @override\n */\n toString() {\n return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ + '';\n }\n};\n\n\n/**\n * @override\n * @const\n */\ngoog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString = true;\n\n\n/**\n * Returns this TrustedResourceUrl's value as a string.\n *\n * IMPORTANT: In code where it is security relevant that an object's type is\n * indeed `TrustedResourceUrl`, use\n * `goog.html.TrustedResourceUrl.unwrap` instead of this method. If in\n * doubt, assume that it's security relevant. In particular, note that\n * goog.html functions which return a goog.html type do not guarantee that\n * the returned instance is of the right type. For example:\n *\n * <pre>\n * var fakeSafeHtml = new String('fake');\n * fakeSafeHtml.__proto__ = goog.html.SafeHtml.prototype;\n * var newSafeHtml = goog.html.SafeHtml.htmlEscape(fakeSafeHtml);\n * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by\n * // goog.html.SafeHtml.htmlEscape() as fakeSafeHtml instanceof\n * // goog.html.SafeHtml.\n * </pre>\n *\n * @see goog.html.TrustedResourceUrl#unwrap\n * @override\n */\ngoog.html.TrustedResourceUrl.prototype.getTypedStringValue = function() {\n 'use strict';\n return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_\n .toString();\n};\n\n\n/**\n * Creates a new TrustedResourceUrl with params added to URL. Both search and\n * hash params can be specified.\n *\n * @param {string|?Object<string, *>|undefined} searchParams Search parameters\n * to add to URL. See goog.html.TrustedResourceUrl.stringifyParams_ for\n * exact format definition.\n * @param {(string|?Object<string, *>)=} opt_hashParams Hash parameters to add\n * to URL. See goog.html.TrustedResourceUrl.stringifyParams_ for exact\n * format definition.\n * @return {!goog.html.TrustedResourceUrl} New TrustedResourceUrl with params.\n */\ngoog.html.TrustedResourceUrl.prototype.cloneWithParams = function(\n searchParams, opt_hashParams) {\n 'use strict';\n var url = goog.html.TrustedResourceUrl.unwrap(this);\n var parts = goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(url);\n var urlBase = parts[1];\n var urlSearch = parts[2] || '';\n var urlHash = parts[3] || '';\n\n return goog.html.TrustedResourceUrl\n .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(\n urlBase +\n goog.html.TrustedResourceUrl.stringifyParams_(\n '?', urlSearch, searchParams) +\n goog.html.TrustedResourceUrl.stringifyParams_(\n '#', urlHash, opt_hashParams));\n};\n\n/**\n * Performs a runtime check that the provided object is indeed a\n * TrustedResourceUrl object, and returns its value.\n *\n * @param {!goog.html.TrustedResourceUrl} trustedResourceUrl The object to\n * extract from.\n * @return {string} The trustedResourceUrl object's contained string, unless\n * the run-time type check fails. In that case, `unwrap` returns an\n * innocuous string, or, if assertions are enabled, throws\n * `goog.asserts.AssertionError`.\n */\ngoog.html.TrustedResourceUrl.unwrap = function(trustedResourceUrl) {\n 'use strict';\n return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(trustedResourceUrl)\n .toString();\n};\n\n\n/**\n * Unwraps value as TrustedScriptURL if supported or as a string if not.\n * @param {!goog.html.TrustedResourceUrl} trustedResourceUrl\n * @return {!TrustedScriptURL|string}\n * @see goog.html.TrustedResourceUrl.unwrap\n */\ngoog.html.TrustedResourceUrl.unwrapTrustedScriptURL = function(\n trustedResourceUrl) {\n 'use strict';\n // Perform additional Run-time type-checking to ensure that\n // trustedResourceUrl is indeed an instance of the expected type. This\n // provides some additional protection against security bugs due to\n // application code that disables type checks.\n // Specifically, the following checks are performed:\n // 1. The object is an instance of the expected type.\n // 2. The object is not an instance of a subclass.\n if (trustedResourceUrl instanceof goog.html.TrustedResourceUrl &&\n trustedResourceUrl.constructor === goog.html.TrustedResourceUrl) {\n return trustedResourceUrl\n .privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;\n } else {\n goog.asserts.fail('expected object of type TrustedResourceUrl, got \\'' +\n trustedResourceUrl + '\\' of type ' + goog.typeOf(trustedResourceUrl));\n return 'type_error:TrustedResourceUrl';\n }\n};\n\n\n/**\n * Creates a TrustedResourceUrl from a format string and arguments.\n *\n * The arguments for interpolation into the format string map labels to values.\n * Values of type `goog.string.Const` are interpolated without modifcation.\n * Values of other types are cast to string and encoded with\n * encodeURIComponent.\n *\n * `%{<label>}` markers are used in the format string to indicate locations\n * to be interpolated with the valued mapped to the given label. `<label>`\n * must contain only alphanumeric and `_` characters.\n *\n * The format string must match goog.html.TrustedResourceUrl.BASE_URL_.\n *\n * Example usage:\n *\n * var url = goog.html.TrustedResourceUrl.format(goog.string.Const.from(\n * 'https://www.google.com/search?q=%{query}'), {'query': searchTerm});\n *\n * var url = goog.html.TrustedResourceUrl.format(goog.string.Const.from(\n * '//www.youtube.com/v/%{videoId}?hl=en&fs=1%{autoplay}'), {\n * 'videoId': videoId,\n * 'autoplay': opt_autoplay ?\n * goog.string.Const.from('&autoplay=1') : goog.string.Const.EMPTY\n * });\n *\n * While this function can be used to create a TrustedResourceUrl from only\n * constants, fromConstant() and fromConstants() are generally preferable for\n * that purpose.\n *\n * @param {!goog.string.Const} format The format string.\n * @param {!Object<string, (string|number|!goog.string.Const)>} args Mapping\n * of labels to values to be interpolated into the format string.\n * goog.string.Const values are interpolated without encoding.\n * @return {!goog.html.TrustedResourceUrl}\n * @throws {!Error} On an invalid format string or if a label used in the\n * the format string is not present in args.\n */\ngoog.html.TrustedResourceUrl.format = function(format, args) {\n 'use strict';\n var formatStr = goog.string.Const.unwrap(format);\n if (!goog.html.TrustedResourceUrl.BASE_URL_.test(formatStr)) {\n throw new Error('Invalid TrustedResourceUrl format: ' + formatStr);\n }\n var result = formatStr.replace(\n goog.html.TrustedResourceUrl.FORMAT_MARKER_, function(match, id) {\n 'use strict';\n if (!Object.prototype.hasOwnProperty.call(args, id)) {\n throw new Error(\n 'Found marker, \"' + id + '\", in format string, \"' + formatStr +\n '\", but no valid label mapping found ' +\n 'in args: ' + JSON.stringify(args));\n }\n var arg = args[id];\n if (arg instanceof goog.string.Const) {\n return goog.string.Const.unwrap(arg);\n } else {\n return encodeURIComponent(String(arg));\n }\n });\n return goog.html.TrustedResourceUrl\n .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(result);\n};\n\n\n/**\n * @private @const {!RegExp}\n */\ngoog.html.TrustedResourceUrl.FORMAT_MARKER_ = /%{(\\w+)}/g;\n\n\n/**\n * The URL must be absolute, scheme-relative or path-absolute. So it must\n * start with:\n * - https:// followed by allowed origin characters.\n * - // followed by allowed origin characters.\n * - Any absolute or relative path.\n *\n * Based on\n * https://url.spec.whatwg.org/commit-snapshots/56b74ce7cca8883eab62e9a12666e2fac665d03d/#url-parsing\n * an initial / which is not followed by another / or \\ will end up in the \"path\n * state\" and from there it can only go to \"fragment state\" and \"query state\".\n *\n * We don't enforce a well-formed domain name. So '.' or '1.2' are valid.\n * That's ok because the origin comes from a compile-time constant.\n *\n * A regular expression is used instead of goog.uri for several reasons:\n * - Strictness. E.g. we don't want any userinfo component and we don't\n * want '/./, nor \\' in the first path component.\n * - Small trusted base. goog.uri is generic and might need to change,\n * reasoning about all the ways it can parse a URL now and in the future\n * is error-prone.\n * - Code size. We expect many calls to .format(), many of which might\n * not be using goog.uri.\n * - Simplicity. Using goog.uri would likely not result in simpler nor shorter\n * code.\n * @private @const {!RegExp}\n */\ngoog.html.TrustedResourceUrl.BASE_URL_ = new RegExp(\n '^((https:)?//[0-9a-z.:[\\\\]-]+/' // Origin.\n + '|/[^/\\\\\\\\]' // Absolute path.\n + '|[^:/\\\\\\\\%]+/' // Relative path.\n + '|[^:/\\\\\\\\%]*[?#]' // Query string or fragment.\n + '|about:blank#' // about:blank with fragment.\n + ')',\n 'i');\n\n/**\n * RegExp for splitting a URL into the base, search field, and hash field.\n *\n * @private @const {!RegExp}\n */\ngoog.html.TrustedResourceUrl.URL_PARAM_PARSER_ =\n /^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/;\n\n\n/**\n * Formats the URL same as TrustedResourceUrl.format and then adds extra URL\n * parameters.\n *\n * Example usage:\n *\n * // Creates '//www.youtube.com/v/abc?autoplay=1' for videoId='abc' and\n * // opt_autoplay=1. Creates '//www.youtube.com/v/abc' for videoId='abc'\n * // and opt_autoplay=undefined.\n * var url = goog.html.TrustedResourceUrl.formatWithParams(\n * goog.string.Const.from('//www.youtube.com/v/%{videoId}'),\n * {'videoId': videoId},\n * {'autoplay': opt_autoplay});\n *\n * @param {!goog.string.Const} format The format string.\n * @param {!Object<string, (string|number|!goog.string.Const)>} args Mapping\n * of labels to values to be interpolated into the format string.\n * goog.string.Const values are interpolated without encoding.\n * @param {string|?Object<string, *>|undefined} searchParams Parameters to add\n * to URL. See goog.html.TrustedResourceUrl.stringifyParams_ for exact\n * format definition.\n * @param {(string|?Object<string, *>)=} opt_hashParams Hash parameters to add\n * to URL. See goog.html.TrustedResourceUrl.stringifyParams_ for exact\n * format definition.\n * @return {!goog.html.TrustedResourceUrl}\n * @throws {!Error} On an invalid format string or if a label used in the\n * the format string is not present in args.\n */\ngoog.html.TrustedResourceUrl.formatWithParams = function(\n format, args, searchParams, opt_hashParams) {\n 'use strict';\n var url = goog.html.TrustedResourceUrl.format(format, args);\n return url.cloneWithParams(searchParams, opt_hashParams);\n};\n\n\n/**\n * Creates a TrustedResourceUrl object from a compile-time constant string.\n *\n * Compile-time constant strings are inherently program-controlled and hence\n * trusted.\n *\n * @param {!goog.string.Const} url A compile-time-constant string from which to\n * create a TrustedResourceUrl.\n * @return {!goog.html.TrustedResourceUrl} A TrustedResourceUrl object\n * initialized to `url`.\n */\ngoog.html.TrustedResourceUrl.fromConstant = function(url) {\n 'use strict';\n return goog.html.TrustedResourceUrl\n .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(\n goog.string.Const.unwrap(url));\n};\n\n\n/**\n * Creates a TrustedResourceUrl object from a compile-time constant strings.\n *\n * Compile-time constant strings are inherently program-controlled and hence\n * trusted.\n *\n * @param {!Array<!goog.string.Const>} parts Compile-time-constant strings from\n * which to create a TrustedResourceUrl.\n * @return {!goog.html.TrustedResourceUrl} A TrustedResourceUrl object\n * initialized to concatenation of `parts`.\n */\ngoog.html.TrustedResourceUrl.fromConstants = function(parts) {\n 'use strict';\n var unwrapped = '';\n for (var i = 0; i < parts.length; i++) {\n unwrapped += goog.string.Const.unwrap(parts[i]);\n }\n return goog.html.TrustedResourceUrl\n .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(unwrapped);\n};\n\n/**\n * Creates a TrustedResourceUrl object by generating a Blob from a SafeScript\n * object and then calling createObjectURL with that blob.\n *\n * SafeScript objects are trusted to contain executable JavaScript code.\n *\n * Caller must call goog.fs.url.revokeObjectUrl() on the unwrapped url to\n * release the underlying blob.\n *\n * Throws if browser doesn't support blob construction.\n *\n * @param {!goog.html.SafeScript} safeScript A script from which to create a\n * TrustedResourceUrl.\n * @return {!goog.html.TrustedResourceUrl} A TrustedResourceUrl object\n * initialized to a new blob URL.\n */\ngoog.html.TrustedResourceUrl.fromSafeScript = function(safeScript) {\n 'use strict';\n var blob = goog.fs.blob.getBlobWithProperties(\n [goog.html.SafeScript.unwrap(safeScript)], 'text/javascript');\n var url = goog.fs.url.createObjectUrl(blob);\n return goog.html.TrustedResourceUrl\n .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(url);\n};\n\n\n/**\n * Token used to ensure that object is created only from this file. No code\n * outside of this file can access this token.\n * @private {!Object}\n * @const\n */\ngoog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {};\n\n\n/**\n * Package-internal utility method to create TrustedResourceUrl instances.\n *\n * @param {string} url The string to initialize the TrustedResourceUrl object\n * with.\n * @return {!goog.html.TrustedResourceUrl} The initialized TrustedResourceUrl\n * object.\n * @package\n */\ngoog.html.TrustedResourceUrl\n .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse = function(url) {\n 'use strict';\n /** @noinline */\n const noinlineUrl = url;\n const policy = goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();\n const value = policy ? policy.createScriptURL(noinlineUrl) : noinlineUrl;\n return new goog.html.TrustedResourceUrl(\n value, goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_);\n};\n\n\n/**\n * Stringifies the passed params to be used as either a search or hash field of\n * a URL.\n *\n * @param {string} prefix The prefix character for the given field ('?' or '#').\n * @param {string} currentString The existing field value (including the prefix\n * character, if the field is present).\n * @param {string|?Object<string, *>|undefined} params The params to set or\n * append to the field.\n * - If `undefined` or `null`, the field remains unchanged.\n * - If a string, then the string will be escaped and the field will be\n * overwritten with that value.\n * - If an Object, that object is treated as a set of key-value pairs to be\n * appended to the current field. Note that JavaScript doesn't guarantee the\n * order of values in an object which might result in non-deterministic order\n * of the parameters. However, browsers currently preserve the order. The\n * rules for each entry:\n * - If an array, it will be processed as if each entry were an additional\n * parameter with exactly the same key, following the same logic below.\n * - If `undefined` or `null`, it will be skipped.\n * - Otherwise, it will be turned into a string, escaped, and appended.\n * @return {string}\n * @private\n */\ngoog.html.TrustedResourceUrl.stringifyParams_ = function(\n prefix, currentString, params) {\n 'use strict';\n if (params == null) {\n // Do not modify the field.\n return currentString;\n }\n if (typeof params === 'string') {\n // Set field to the passed string.\n return params ? prefix + encodeURIComponent(params) : '';\n }\n // Add on parameters to field from key-value object.\n for (var key in params) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty#Using_hasOwnProperty_as_a_property_name\n if (Object.prototype.hasOwnProperty.call(params, key)) {\n var value = params[key];\n var outputValues = Array.isArray(value) ? value : [value];\n for (var i = 0; i < outputValues.length; i++) {\n var outputValue = outputValues[i];\n if (outputValue != null) {\n if (!currentString) {\n currentString = prefix;\n }\n currentString += (currentString.length > prefix.length ? '&' : '') +\n encodeURIComponent(key) + '=' +\n encodeURIComponent(String(outputValue));\n }\n }\n }\n }\n return currentString;\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview String functions called from Closure packages that couldn't\n * depend on each other. Outside Closure, use goog.string function which\n * delegate to these.\n */\n\n\ngoog.provide('goog.string.internal');\n\n\n/**\n * Fast prefix-checker.\n * @param {string} str The string to check.\n * @param {string} prefix A string to look for at the start of `str`.\n * @return {boolean} True if `str` begins with `prefix`.\n * @see goog.string.startsWith\n */\ngoog.string.internal.startsWith = function(str, prefix) {\n 'use strict';\n return str.lastIndexOf(prefix, 0) == 0;\n};\n\n\n/**\n * Fast suffix-checker.\n * @param {string} str The string to check.\n * @param {string} suffix A string to look for at the end of `str`.\n * @return {boolean} True if `str` ends with `suffix`.\n * @see goog.string.endsWith\n */\ngoog.string.internal.endsWith = function(str, suffix) {\n 'use strict';\n const l = str.length - suffix.length;\n return l >= 0 && str.indexOf(suffix, l) == l;\n};\n\n\n/**\n * Case-insensitive prefix-checker.\n * @param {string} str The string to check.\n * @param {string} prefix A string to look for at the end of `str`.\n * @return {boolean} True if `str` begins with `prefix` (ignoring\n * case).\n * @see goog.string.caseInsensitiveStartsWith\n */\ngoog.string.internal.caseInsensitiveStartsWith = function(str, prefix) {\n 'use strict';\n return (\n goog.string.internal.caseInsensitiveCompare(\n prefix, str.slice(0, prefix.length)) == 0);\n};\n\n\n/**\n * Case-insensitive suffix-checker.\n * @param {string} str The string to check.\n * @param {string} suffix A string to look for at the end of `str`.\n * @return {boolean} True if `str` ends with `suffix` (ignoring\n * case).\n * @see goog.string.caseInsensitiveEndsWith\n */\ngoog.string.internal.caseInsensitiveEndsWith = function(str, suffix) {\n 'use strict';\n return (\n goog.string.internal.caseInsensitiveCompare(\n suffix, str.slice(str.length - suffix.length)) == 0);\n};\n\n\n/**\n * Case-insensitive equality checker.\n * @param {string} str1 First string to check.\n * @param {string} str2 Second string to check.\n * @return {boolean} True if `str1` and `str2` are the same string,\n * ignoring case.\n * @see goog.string.caseInsensitiveEquals\n */\ngoog.string.internal.caseInsensitiveEquals = function(str1, str2) {\n 'use strict';\n return str1.toLowerCase() == str2.toLowerCase();\n};\n\n\n/**\n * Checks if a string is empty or contains only whitespaces.\n * @param {string} str The string to check.\n * @return {boolean} Whether `str` is empty or whitespace only.\n * @see goog.string.isEmptyOrWhitespace\n */\ngoog.string.internal.isEmptyOrWhitespace = function(str) {\n 'use strict';\n // testing length == 0 first is actually slower in all browsers (about the\n // same in Opera).\n // Since IE doesn't include non-breaking-space (0xa0) in their \\s character\n // class (as required by section 7.2 of the ECMAScript spec), we explicitly\n // include it in the regexp to enforce consistent cross-browser behavior.\n return /^[\\s\\xa0]*$/.test(str);\n};\n\n\n/**\n * Trims white spaces to the left and right of a string.\n * @param {string} str The string to trim.\n * @return {string} A trimmed copy of `str`.\n */\ngoog.string.internal.trim =\n (goog.TRUSTED_SITE && String.prototype.trim) ? function(str) {\n 'use strict';\n return str.trim();\n } : function(str) {\n 'use strict';\n // Since IE doesn't include non-breaking-space (0xa0) in their \\s\n // character class (as required by section 7.2 of the ECMAScript spec),\n // we explicitly include it in the regexp to enforce consistent\n // cross-browser behavior.\n // NOTE: We don't use String#replace because it might have side effects\n // causing this function to not compile to 0 bytes.\n return /^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(str)[1];\n };\n\n\n/**\n * A string comparator that ignores case.\n * -1 = str1 less than str2\n * 0 = str1 equals str2\n * 1 = str1 greater than str2\n *\n * @param {string} str1 The string to compare.\n * @param {string} str2 The string to compare `str1` to.\n * @return {number} The comparator result, as described above.\n * @see goog.string.caseInsensitiveCompare\n */\ngoog.string.internal.caseInsensitiveCompare = function(str1, str2) {\n 'use strict';\n const test1 = String(str1).toLowerCase();\n const test2 = String(str2).toLowerCase();\n\n if (test1 < test2) {\n return -1;\n } else if (test1 == test2) {\n return 0;\n } else {\n return 1;\n }\n};\n\n\n/**\n * Converts \\n to <br>s or <br />s.\n * @param {string} str The string in which to convert newlines.\n * @param {boolean=} opt_xml Whether to use XML compatible tags.\n * @return {string} A copy of `str` with converted newlines.\n * @see goog.string.newLineToBr\n */\ngoog.string.internal.newLineToBr = function(str, opt_xml) {\n 'use strict';\n return str.replace(/(\\r\\n|\\r|\\n)/g, opt_xml ? '<br />' : '<br>');\n};\n\n\n/**\n * Escapes double quote '\"' and single quote '\\'' characters in addition to\n * '&', '<', and '>' so that a string can be included in an HTML tag attribute\n * value within double or single quotes.\n * @param {string} str string to be escaped.\n * @param {boolean=} opt_isLikelyToContainHtmlChars\n * @return {string} An escaped copy of `str`.\n * @see goog.string.htmlEscape\n */\ngoog.string.internal.htmlEscape = function(\n str, opt_isLikelyToContainHtmlChars) {\n 'use strict';\n if (opt_isLikelyToContainHtmlChars) {\n str = str.replace(goog.string.internal.AMP_RE_, '&amp;')\n .replace(goog.string.internal.LT_RE_, '&lt;')\n .replace(goog.string.internal.GT_RE_, '&gt;')\n .replace(goog.string.internal.QUOT_RE_, '&quot;')\n .replace(goog.string.internal.SINGLE_QUOTE_RE_, '&#39;')\n .replace(goog.string.internal.NULL_RE_, '&#0;');\n return str;\n\n } else {\n // quick test helps in the case when there are no chars to replace, in\n // worst case this makes barely a difference to the time taken\n if (!goog.string.internal.ALL_RE_.test(str)) return str;\n\n // str.indexOf is faster than regex.test in this case\n if (str.indexOf('&') != -1) {\n str = str.replace(goog.string.internal.AMP_RE_, '&amp;');\n }\n if (str.indexOf('<') != -1) {\n str = str.replace(goog.string.internal.LT_RE_, '&lt;');\n }\n if (str.indexOf('>') != -1) {\n str = str.replace(goog.string.internal.GT_RE_, '&gt;');\n }\n if (str.indexOf('\"') != -1) {\n str = str.replace(goog.string.internal.QUOT_RE_, '&quot;');\n }\n if (str.indexOf('\\'') != -1) {\n str = str.replace(goog.string.internal.SINGLE_QUOTE_RE_, '&#39;');\n }\n if (str.indexOf('\\x00') != -1) {\n str = str.replace(goog.string.internal.NULL_RE_, '&#0;');\n }\n return str;\n }\n};\n\n\n/**\n * Regular expression that matches an ampersand, for use in escaping.\n * @const {!RegExp}\n * @private\n */\ngoog.string.internal.AMP_RE_ = /&/g;\n\n\n/**\n * Regular expression that matches a less than sign, for use in escaping.\n * @const {!RegExp}\n * @private\n */\ngoog.string.internal.LT_RE_ = /</g;\n\n\n/**\n * Regular expression that matches a greater than sign, for use in escaping.\n * @const {!RegExp}\n * @private\n */\ngoog.string.internal.GT_RE_ = />/g;\n\n\n/**\n * Regular expression that matches a double quote, for use in escaping.\n * @const {!RegExp}\n * @private\n */\ngoog.string.internal.QUOT_RE_ = /\"/g;\n\n\n/**\n * Regular expression that matches a single quote, for use in escaping.\n * @const {!RegExp}\n * @private\n */\ngoog.string.internal.SINGLE_QUOTE_RE_ = /'/g;\n\n\n/**\n * Regular expression that matches null character, for use in escaping.\n * @const {!RegExp}\n * @private\n */\ngoog.string.internal.NULL_RE_ = /\\x00/g;\n\n\n/**\n * Regular expression that matches any character that needs to be escaped.\n * @const {!RegExp}\n * @private\n */\ngoog.string.internal.ALL_RE_ = /[\\x00&<>\"']/;\n\n\n/**\n * Do escaping of whitespace to preserve spatial formatting. We use character\n * entity #160 to make it safer for xml.\n * @param {string} str The string in which to escape whitespace.\n * @param {boolean=} opt_xml Whether to use XML compatible tags.\n * @return {string} An escaped copy of `str`.\n * @see goog.string.whitespaceEscape\n */\ngoog.string.internal.whitespaceEscape = function(str, opt_xml) {\n 'use strict';\n // This doesn't use goog.string.preserveSpaces for backwards compatibility.\n return goog.string.internal.newLineToBr(\n str.replace(/ /g, ' &#160;'), opt_xml);\n};\n\n\n/**\n * Determines whether a string contains a substring.\n * @param {string} str The string to search.\n * @param {string} subString The substring to search for.\n * @return {boolean} Whether `str` contains `subString`.\n * @see goog.string.contains\n */\ngoog.string.internal.contains = function(str, subString) {\n 'use strict';\n return str.indexOf(subString) != -1;\n};\n\n\n/**\n * Determines whether a string contains a substring, ignoring case.\n * @param {string} str The string to search.\n * @param {string} subString The substring to search for.\n * @return {boolean} Whether `str` contains `subString`.\n * @see goog.string.caseInsensitiveContains\n */\ngoog.string.internal.caseInsensitiveContains = function(str, subString) {\n 'use strict';\n return goog.string.internal.contains(\n str.toLowerCase(), subString.toLowerCase());\n};\n\n\n/**\n * Compares two version numbers.\n *\n * @param {string|number} version1 Version of first item.\n * @param {string|number} version2 Version of second item.\n *\n * @return {number} 1 if `version1` is higher.\n * 0 if arguments are equal.\n * -1 if `version2` is higher.\n * @see goog.string.compareVersions\n */\ngoog.string.internal.compareVersions = function(version1, version2) {\n 'use strict';\n let order = 0;\n // Trim leading and trailing whitespace and split the versions into\n // subversions.\n const v1Subs = goog.string.internal.trim(String(version1)).split('.');\n const v2Subs = goog.string.internal.trim(String(version2)).split('.');\n const subCount = Math.max(v1Subs.length, v2Subs.length);\n\n // Iterate over the subversions, as long as they appear to be equivalent.\n for (let subIdx = 0; order == 0 && subIdx < subCount; subIdx++) {\n let v1Sub = v1Subs[subIdx] || '';\n let v2Sub = v2Subs[subIdx] || '';\n\n do {\n // Split the subversions into pairs of numbers and qualifiers (like 'b').\n // Two different RegExp objects are use to make it clear the code\n // is side-effect free\n const v1Comp = /(\\d*)(\\D*)(.*)/.exec(v1Sub) || ['', '', '', ''];\n const v2Comp = /(\\d*)(\\D*)(.*)/.exec(v2Sub) || ['', '', '', ''];\n // Break if there are no more matches.\n if (v1Comp[0].length == 0 && v2Comp[0].length == 0) {\n break;\n }\n\n // Parse the numeric part of the subversion. A missing number is\n // equivalent to 0.\n const v1CompNum = v1Comp[1].length == 0 ? 0 : parseInt(v1Comp[1], 10);\n const v2CompNum = v2Comp[1].length == 0 ? 0 : parseInt(v2Comp[1], 10);\n\n // Compare the subversion components. The number has the highest\n // precedence. Next, if the numbers are equal, a subversion without any\n // qualifier is always higher than a subversion with any qualifier. Next,\n // the qualifiers are compared as strings.\n order = goog.string.internal.compareElements_(v1CompNum, v2CompNum) ||\n goog.string.internal.compareElements_(\n v1Comp[2].length == 0, v2Comp[2].length == 0) ||\n goog.string.internal.compareElements_(v1Comp[2], v2Comp[2]);\n // Stop as soon as an inequality is discovered.\n\n v1Sub = v1Comp[3];\n v2Sub = v2Comp[3];\n } while (order == 0);\n }\n\n return order;\n};\n\n\n/**\n * Compares elements of a version number.\n *\n * @param {string|number|boolean} left An element from a version number.\n * @param {string|number|boolean} right An element from a version number.\n *\n * @return {number} 1 if `left` is higher.\n * 0 if arguments are equal.\n * -1 if `right` is higher.\n * @private\n */\ngoog.string.internal.compareElements_ = function(left, right) {\n 'use strict';\n if (left < right) {\n return -1;\n } else if (left > right) {\n return 1;\n }\n return 0;\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview The SafeUrl type and its builders.\n *\n * TODO(xtof): Link to document stating type contract.\n */\n\ngoog.provide('goog.html.SafeUrl');\n\ngoog.require('goog.asserts');\ngoog.require('goog.fs.url');\ngoog.require('goog.html.TrustedResourceUrl');\ngoog.require('goog.string.Const');\ngoog.require('goog.string.TypedString');\ngoog.require('goog.string.internal');\n\n\n\n/**\n * A string that is safe to use in URL context in DOM APIs and HTML documents.\n *\n * A SafeUrl is a string-like object that carries the security type contract\n * that its value as a string will not cause untrusted script execution\n * when evaluated as a hyperlink URL in a browser.\n *\n * Values of this type are guaranteed to be safe to use in URL/hyperlink\n * contexts, such as assignment to URL-valued DOM properties, in the sense that\n * the use will not result in a Cross-Site-Scripting vulnerability. Similarly,\n * SafeUrls can be interpolated into the URL context of an HTML template (e.g.,\n * inside a href attribute). However, appropriate HTML-escaping must still be\n * applied.\n *\n * Note that, as documented in `goog.html.SafeUrl.unwrap`, this type's\n * contract does not guarantee that instances are safe to interpolate into HTML\n * without appropriate escaping.\n *\n * Note also that this type's contract does not imply any guarantees regarding\n * the resource the URL refers to. In particular, SafeUrls are <b>not</b>\n * safe to use in a context where the referred-to resource is interpreted as\n * trusted code, e.g., as the src of a script tag.\n *\n * Instances of this type must be created via the factory methods\n * (`goog.html.SafeUrl.fromConstant`, `goog.html.SafeUrl.sanitize`),\n * etc and not by invoking its constructor. The constructor intentionally takes\n * an extra parameter that cannot be constructed outside of this file and the\n * type is immutable; hence only a default instance corresponding to the empty\n * string can be obtained via constructor invocation.\n *\n * @see goog.html.SafeUrl#fromConstant\n * @see goog.html.SafeUrl#from\n * @see goog.html.SafeUrl#sanitize\n * @final\n * @struct\n * @implements {goog.string.TypedString}\n */\ngoog.html.SafeUrl = class {\n /**\n * @param {string} value\n * @param {!Object} token package-internal implementation detail.\n */\n constructor(value, token) {\n /**\n * The contained value of this SafeUrl. The field has a purposely ugly\n * name to make (non-compiled) code that attempts to directly access this\n * field stand out.\n * @private {string}\n */\n this.privateDoNotAccessOrElseSafeUrlWrappedValue_ =\n (token === goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_) ? value : '';\n }\n\n /**\n * Returns a string-representation of this value.\n *\n * To obtain the actual string value wrapped in a SafeUrl, use\n * `goog.html.SafeUrl.unwrap`.\n *\n * @return {string}\n * @see goog.html.SafeUrl#unwrap\n * @override\n */\n toString() {\n return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString();\n }\n};\n\n\n/**\n * The innocuous string generated by goog.html.SafeUrl.sanitize when passed\n * an unsafe URL.\n *\n * about:invalid is registered in\n * http://www.w3.org/TR/css3-values/#about-invalid.\n * http://tools.ietf.org/html/rfc6694#section-2.2.1 permits about URLs to\n * contain a fragment, which is not to be considered when determining if an\n * about URL is well-known.\n *\n * Using about:invalid seems preferable to using a fixed data URL, since\n * browsers might choose to not report CSP violations on it, as legitimate\n * CSS function calls to attr() can result in this URL being produced. It is\n * also a standard URL which matches exactly the semantics we need:\n * \"The about:invalid URI references a non-existent document with a generic\n * error condition. It can be used when a URI is necessary, but the default\n * value shouldn't be resolveable as any type of document\".\n *\n * @const {string}\n */\ngoog.html.SafeUrl.INNOCUOUS_STRING = 'about:invalid#zClosurez';\n\n\n/**\n * @override\n * @const\n */\ngoog.html.SafeUrl.prototype.implementsGoogStringTypedString = true;\n\n\n/**\n * Returns this SafeUrl's value as a string.\n *\n * IMPORTANT: In code where it is security relevant that an object's type is\n * indeed `SafeUrl`, use `goog.html.SafeUrl.unwrap` instead of this\n * method. If in doubt, assume that it's security relevant. In particular, note\n * that goog.html functions which return a goog.html type do not guarantee that\n * the returned instance is of the right type.\n *\n * IMPORTANT: The guarantees of the SafeUrl type contract only extend to the\n * behavior of browsers when interpreting URLs. Values of SafeUrl objects MUST\n * be appropriately escaped before embedding in a HTML document. Note that the\n * required escaping is context-sensitive (e.g. a different escaping is\n * required for embedding a URL in a style property within a style\n * attribute, as opposed to embedding in a href attribute).\n *\n * @see goog.html.SafeUrl#unwrap\n * @override\n */\ngoog.html.SafeUrl.prototype.getTypedStringValue = function() {\n 'use strict';\n return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString();\n};\n\n/**\n * Performs a runtime check that the provided object is indeed a SafeUrl\n * object, and returns its value.\n *\n * IMPORTANT: The guarantees of the SafeUrl type contract only extend to the\n * behavior of browsers when interpreting URLs. Values of SafeUrl objects MUST\n * be appropriately escaped before embedding in a HTML document. Note that the\n * required escaping is context-sensitive (e.g. a different escaping is\n * required for embedding a URL in a style property within a style\n * attribute, as opposed to embedding in a href attribute).\n *\n * @param {!goog.html.SafeUrl} safeUrl The object to extract from.\n * @return {string} The SafeUrl object's contained string, unless the run-time\n * type check fails. In that case, `unwrap` returns an innocuous\n * string, or, if assertions are enabled, throws\n * `goog.asserts.AssertionError`.\n */\ngoog.html.SafeUrl.unwrap = function(safeUrl) {\n 'use strict';\n // Perform additional Run-time type-checking to ensure that safeUrl is indeed\n // an instance of the expected type. This provides some additional protection\n // against security bugs due to application code that disables type checks.\n // Specifically, the following checks are performed:\n // 1. The object is an instance of the expected type.\n // 2. The object is not an instance of a subclass.\n if (safeUrl instanceof goog.html.SafeUrl &&\n safeUrl.constructor === goog.html.SafeUrl) {\n return safeUrl.privateDoNotAccessOrElseSafeUrlWrappedValue_;\n } else {\n goog.asserts.fail(\n 'expected object of type SafeUrl, got \\'' + safeUrl + '\\' of type ' +\n goog.typeOf(safeUrl));\n return 'type_error:SafeUrl';\n }\n};\n\n\n/**\n * Creates a SafeUrl object from a compile-time constant string.\n *\n * Compile-time constant strings are inherently program-controlled and hence\n * trusted.\n *\n * @param {!goog.string.Const} url A compile-time-constant string from which to\n * create a SafeUrl.\n * @return {!goog.html.SafeUrl} A SafeUrl object initialized to `url`.\n */\ngoog.html.SafeUrl.fromConstant = function(url) {\n 'use strict';\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n goog.string.Const.unwrap(url));\n};\n\n\n/**\n * A pattern that matches Blob or data types that can have SafeUrls created\n * from URL.createObjectURL(blob) or via a data: URI.\n *\n * This has some parameter support (most notably, we haven't implemented the\n * more complex parts like %-encoded characters or non-alphanumerical ones for\n * simplicity's sake). The specs are fairly complex, and they don't\n * always match Chrome's behavior: we settled on a subset where we're confident\n * all parties involved agree.\n *\n * The spec is available at https://mimesniff.spec.whatwg.org/ (and see\n * https://tools.ietf.org/html/rfc2397 for data: urls, which override some of\n * it).\n * @const\n * @private\n */\ngoog.html.SAFE_MIME_TYPE_PATTERN_ = new RegExp(\n // Note: Due to content-sniffing concerns, only add MIME types for\n // media formats.\n '^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|' +\n 'font/\\\\w+|' +\n 'image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|' +\n 'video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))' +\n '(?:;\\\\w+=(?:\\\\w+|\"[\\\\w;,= ]+\"))*$', // MIME type parameters\n 'i');\n\n\n/**\n * @param {string} mimeType The MIME type to check if safe.\n * @return {boolean} True if the MIME type is safe and creating a Blob via\n * `SafeUrl.fromBlob()` with that type will not fail due to the type. False\n * otherwise.\n */\ngoog.html.SafeUrl.isSafeMimeType = function(mimeType) {\n 'use strict';\n return goog.html.SAFE_MIME_TYPE_PATTERN_.test(mimeType);\n};\n\n\n/**\n * Creates a SafeUrl wrapping a blob URL for the given `blob`.\n *\n * The blob URL is created with `URL.createObjectURL`. If the MIME type\n * for `blob` is not of a known safe audio, image or video MIME type,\n * then the SafeUrl will wrap {@link #INNOCUOUS_STRING}.\n *\n * Note: Call {@link revokeObjectUrl} on the URL after it's used\n * to prevent memory leaks.\n *\n * @see http://www.w3.org/TR/FileAPI/#url\n * @param {!Blob} blob\n * @return {!goog.html.SafeUrl} The blob URL, or an innocuous string wrapped\n * as a SafeUrl.\n */\ngoog.html.SafeUrl.fromBlob = function(blob) {\n 'use strict';\n var url = goog.html.SafeUrl.isSafeMimeType(blob.type) ?\n goog.fs.url.createObjectUrl(blob) :\n goog.html.SafeUrl.INNOCUOUS_STRING;\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url);\n};\n\n\n/**\n * Revokes an object URL created for a safe URL created {@link fromBlob()}.\n * @param {!goog.html.SafeUrl} safeUrl SafeUrl wrapping a blob object.\n * @return {void}\n */\ngoog.html.SafeUrl.revokeObjectUrl = function(safeUrl) {\n 'use strict';\n var url = safeUrl.getTypedStringValue();\n if (url !== goog.html.SafeUrl.INNOCUOUS_STRING) {\n goog.fs.url.revokeObjectUrl(url);\n }\n};\n\n\n/**\n * Creates a SafeUrl wrapping a blob URL created for a MediaSource.\n * @param {!MediaSource} mediaSource\n * @return {!goog.html.SafeUrl} The blob URL.\n */\ngoog.html.SafeUrl.fromMediaSource = function(mediaSource) {\n 'use strict';\n goog.asserts.assert(\n 'MediaSource' in goog.global, 'No support for MediaSource');\n const url = mediaSource instanceof MediaSource ?\n goog.fs.url.createObjectUrl(mediaSource) :\n goog.html.SafeUrl.INNOCUOUS_STRING;\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url);\n};\n\n\n/**\n * Matches a base-64 data URL, with the first match group being the MIME type.\n * @const\n * @private\n */\ngoog.html.DATA_URL_PATTERN_ = /^data:(.*);base64,[a-z0-9+\\/]+=*$/i;\n\n\n/**\n * Attempts to create a SafeUrl wrapping a `data:` URL, after validating it\n * matches a known-safe media MIME type. If it doesn't match, return `null`.\n *\n * @param {string} dataUrl A valid base64 data URL with one of the whitelisted\n * media MIME types.\n * @return {?goog.html.SafeUrl} A matching safe URL, or `null` if it does not\n * pass.\n */\ngoog.html.SafeUrl.tryFromDataUrl = function(dataUrl) {\n 'use strict';\n // For defensive purposes, in case users cast around the parameter type.\n dataUrl = String(dataUrl);\n // RFC4648 suggest to ignore CRLF in base64 encoding.\n // See https://tools.ietf.org/html/rfc4648.\n // Remove the CR (%0D) and LF (%0A) from the dataUrl.\n var filteredDataUrl = dataUrl.replace(/(%0A|%0D)/g, '');\n var match = filteredDataUrl.match(goog.html.DATA_URL_PATTERN_);\n // Note: The only risk of XSS here is if the `data:` URL results in a\n // same-origin document. In which case content-sniffing might cause the\n // browser to interpret the contents as html.\n // All modern browsers consider `data:` URL documents to have unique empty\n // origins. Only Firefox for versions prior to v57 behaves differently:\n // https://blog.mozilla.org/security/2017/10/04/treating-data-urls-unique-origins-firefox-57/\n // Older versions of IE don't understand `data:` urls, so it is not an issue.\n if (match) {\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n filteredDataUrl);\n }\n return null;\n};\n\n\n/**\n * Creates a SafeUrl wrapping a `data:` URL, after validating it matches a\n * known-safe media MIME type. If it doesn't match, return\n * `goog.html.SafeUrl.INNOCUOUS_URL`.\n *\n * @param {string} dataUrl A valid base64 data URL with one of the whitelisted\n * media MIME types.\n * @return {!goog.html.SafeUrl} A matching safe URL, or\n * `goog.html.SafeUrl.INNOCUOUS_URL` if it does not pass.\n */\ngoog.html.SafeUrl.fromDataUrl = function(dataUrl) {\n 'use strict';\n return goog.html.SafeUrl.tryFromDataUrl(dataUrl) ||\n goog.html.SafeUrl.INNOCUOUS_URL;\n};\n\n\n/**\n * Creates a SafeUrl wrapping a tel: URL.\n *\n * @param {string} telUrl A tel URL.\n * @return {!goog.html.SafeUrl} A matching safe URL, or {@link INNOCUOUS_STRING}\n * wrapped as a SafeUrl if it does not pass.\n */\ngoog.html.SafeUrl.fromTelUrl = function(telUrl) {\n 'use strict';\n // There's a risk that a tel: URL could immediately place a call once\n // clicked, without requiring user confirmation. For that reason it is\n // handled in this separate function.\n if (!goog.string.internal.caseInsensitiveStartsWith(telUrl, 'tel:')) {\n telUrl = goog.html.SafeUrl.INNOCUOUS_STRING;\n }\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n telUrl);\n};\n\n\n/**\n * Matches a sip/sips URL. We only allow urls that consist of an email address.\n * The characters '?' and '#' are not allowed in the local part of the email\n * address.\n * @const\n * @private\n */\ngoog.html.SIP_URL_PATTERN_ = new RegExp(\n '^sip[s]?:[+a-z0-9_.!$%&\\'*\\\\/=^`{|}~-]+@([a-z0-9-]+\\\\.)+[a-z0-9]{2,63}$',\n 'i');\n\n\n/**\n * Creates a SafeUrl wrapping a sip: URL. We only allow urls that consist of an\n * email address. The characters '?' and '#' are not allowed in the local part\n * of the email address.\n *\n * @param {string} sipUrl A sip URL.\n * @return {!goog.html.SafeUrl} A matching safe URL, or {@link INNOCUOUS_STRING}\n * wrapped as a SafeUrl if it does not pass.\n */\ngoog.html.SafeUrl.fromSipUrl = function(sipUrl) {\n 'use strict';\n if (!goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(sipUrl))) {\n sipUrl = goog.html.SafeUrl.INNOCUOUS_STRING;\n }\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n sipUrl);\n};\n\n\n/**\n * Creates a SafeUrl wrapping a fb-messenger://share URL.\n *\n * @param {string} facebookMessengerUrl A facebook messenger URL.\n * @return {!goog.html.SafeUrl} A matching safe URL, or {@link INNOCUOUS_STRING}\n * wrapped as a SafeUrl if it does not pass.\n */\ngoog.html.SafeUrl.fromFacebookMessengerUrl = function(facebookMessengerUrl) {\n 'use strict';\n if (!goog.string.internal.caseInsensitiveStartsWith(\n facebookMessengerUrl, 'fb-messenger://share')) {\n facebookMessengerUrl = goog.html.SafeUrl.INNOCUOUS_STRING;\n }\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n facebookMessengerUrl);\n};\n\n/**\n * Creates a SafeUrl wrapping a whatsapp://send URL.\n *\n * @param {string} whatsAppUrl A WhatsApp URL.\n * @return {!goog.html.SafeUrl} A matching safe URL, or {@link INNOCUOUS_STRING}\n * wrapped as a SafeUrl if it does not pass.\n */\ngoog.html.SafeUrl.fromWhatsAppUrl = function(whatsAppUrl) {\n 'use strict';\n if (!goog.string.internal.caseInsensitiveStartsWith(\n whatsAppUrl, 'whatsapp://send')) {\n whatsAppUrl = goog.html.SafeUrl.INNOCUOUS_STRING;\n }\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n whatsAppUrl);\n};\n\n/**\n * Creates a SafeUrl wrapping a sms: URL.\n *\n * @param {string} smsUrl A sms URL.\n * @return {!goog.html.SafeUrl} A matching safe URL, or {@link INNOCUOUS_STRING}\n * wrapped as a SafeUrl if it does not pass.\n */\ngoog.html.SafeUrl.fromSmsUrl = function(smsUrl) {\n 'use strict';\n if (!goog.string.internal.caseInsensitiveStartsWith(smsUrl, 'sms:') ||\n !goog.html.SafeUrl.isSmsUrlBodyValid_(smsUrl)) {\n smsUrl = goog.html.SafeUrl.INNOCUOUS_STRING;\n }\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n smsUrl);\n};\n\n\n/**\n * Validates SMS URL `body` parameter, which is optional and should appear at\n * most once and should be percent-encoded if present. Rejects many malformed\n * bodies, but may spuriously reject some URLs and does not reject all malformed\n * sms: URLs.\n *\n * @param {string} smsUrl A sms URL.\n * @return {boolean} Whether SMS URL has a valid `body` parameter if it exists.\n * @private\n */\ngoog.html.SafeUrl.isSmsUrlBodyValid_ = function(smsUrl) {\n 'use strict';\n var hash = smsUrl.indexOf('#');\n if (hash > 0) {\n smsUrl = smsUrl.substring(0, hash);\n }\n var bodyParams = smsUrl.match(/[?&]body=/gi);\n // \"body\" param is optional\n if (!bodyParams) {\n return true;\n }\n // \"body\" MUST only appear once\n if (bodyParams.length > 1) {\n return false;\n }\n // Get the encoded `body` parameter value.\n var bodyValue = smsUrl.match(/[?&]body=([^&]*)/)[1];\n if (!bodyValue) {\n return true;\n }\n try {\n decodeURIComponent(bodyValue);\n } catch (error) {\n return false;\n }\n return /^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(bodyValue);\n};\n\n\n/**\n * Creates a SafeUrl wrapping a ssh: URL.\n *\n * @param {string} sshUrl A ssh URL.\n * @return {!goog.html.SafeUrl} A matching safe URL, or {@link INNOCUOUS_STRING}\n * wrapped as a SafeUrl if it does not pass.\n */\ngoog.html.SafeUrl.fromSshUrl = function(sshUrl) {\n 'use strict';\n if (!goog.string.internal.caseInsensitiveStartsWith(sshUrl, 'ssh://')) {\n sshUrl = goog.html.SafeUrl.INNOCUOUS_STRING;\n }\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n sshUrl);\n};\n\n/**\n * Sanitizes a Chrome extension URL to SafeUrl, given a compile-time-constant\n * extension identifier. Can also be restricted to chrome extensions.\n *\n * @param {string} url The url to sanitize. Should start with the extension\n * scheme and the extension identifier.\n * @param {!goog.string.Const|!Array<!goog.string.Const>} extensionId The\n * extension id to accept, as a compile-time constant or an array of those.\n *\n * @return {!goog.html.SafeUrl} Either `url` if it's deemed safe, or\n * `INNOCUOUS_STRING` if it's not.\n */\ngoog.html.SafeUrl.sanitizeChromeExtensionUrl = function(url, extensionId) {\n 'use strict';\n return goog.html.SafeUrl.sanitizeExtensionUrl_(\n /^chrome-extension:\\/\\/([^\\/]+)\\//, url, extensionId);\n};\n\n/**\n * Sanitizes a Firefox extension URL to SafeUrl, given a compile-time-constant\n * extension identifier. Can also be restricted to chrome extensions.\n *\n * @param {string} url The url to sanitize. Should start with the extension\n * scheme and the extension identifier.\n * @param {!goog.string.Const|!Array<!goog.string.Const>} extensionId The\n * extension id to accept, as a compile-time constant or an array of those.\n *\n * @return {!goog.html.SafeUrl} Either `url` if it's deemed safe, or\n * `INNOCUOUS_STRING` if it's not.\n */\ngoog.html.SafeUrl.sanitizeFirefoxExtensionUrl = function(url, extensionId) {\n 'use strict';\n return goog.html.SafeUrl.sanitizeExtensionUrl_(\n /^moz-extension:\\/\\/([^\\/]+)\\//, url, extensionId);\n};\n\n/**\n * Sanitizes a Edge extension URL to SafeUrl, given a compile-time-constant\n * extension identifier. Can also be restricted to chrome extensions.\n *\n * @param {string} url The url to sanitize. Should start with the extension\n * scheme and the extension identifier.\n * @param {!goog.string.Const|!Array<!goog.string.Const>} extensionId The\n * extension id to accept, as a compile-time constant or an array of those.\n *\n * @return {!goog.html.SafeUrl} Either `url` if it's deemed safe, or\n * `INNOCUOUS_STRING` if it's not.\n */\ngoog.html.SafeUrl.sanitizeEdgeExtensionUrl = function(url, extensionId) {\n 'use strict';\n return goog.html.SafeUrl.sanitizeExtensionUrl_(\n /^ms-browser-extension:\\/\\/([^\\/]+)\\//, url, extensionId);\n};\n\n/**\n * Private helper for converting extension URLs to SafeUrl, given the scheme for\n * that particular extension type. Use the sanitizeFirefoxExtensionUrl,\n * sanitizeChromeExtensionUrl or sanitizeEdgeExtensionUrl unless you're building\n * new helpers.\n *\n * @private\n * @param {!RegExp} scheme The scheme to accept as a RegExp extracting the\n * extension identifier.\n * @param {string} url The url to sanitize. Should start with the extension\n * scheme and the extension identifier.\n * @param {!goog.string.Const|!Array<!goog.string.Const>} extensionId The\n * extension id to accept, as a compile-time constant or an array of those.\n *\n * @return {!goog.html.SafeUrl} Either `url` if it's deemed safe, or\n * `INNOCUOUS_STRING` if it's not.\n */\ngoog.html.SafeUrl.sanitizeExtensionUrl_ = function(scheme, url, extensionId) {\n 'use strict';\n var matches = scheme.exec(url);\n if (!matches) {\n url = goog.html.SafeUrl.INNOCUOUS_STRING;\n } else {\n var extractedExtensionId = matches[1];\n var acceptedExtensionIds;\n if (extensionId instanceof goog.string.Const) {\n acceptedExtensionIds = [goog.string.Const.unwrap(extensionId)];\n } else {\n acceptedExtensionIds = extensionId.map(function unwrap(x) {\n 'use strict';\n return goog.string.Const.unwrap(x);\n });\n }\n if (acceptedExtensionIds.indexOf(extractedExtensionId) == -1) {\n url = goog.html.SafeUrl.INNOCUOUS_STRING;\n }\n }\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url);\n};\n\n\n/**\n * Creates a SafeUrl from TrustedResourceUrl. This is safe because\n * TrustedResourceUrl is more tightly restricted than SafeUrl.\n *\n * @param {!goog.html.TrustedResourceUrl} trustedResourceUrl\n * @return {!goog.html.SafeUrl}\n */\ngoog.html.SafeUrl.fromTrustedResourceUrl = function(trustedResourceUrl) {\n 'use strict';\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n goog.html.TrustedResourceUrl.unwrap(trustedResourceUrl));\n};\n\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that satisfy\n * the SafeUrl contract.\n *\n * This regular expression matches a subset of URLs that will not cause script\n * execution if used in URL context within a HTML document. Specifically, this\n * regular expression matches if (comment from here on and regex copied from\n * Soy's EscapingConventions):\n * (1) Either a protocol in a whitelist (http, https, mailto or ftp).\n * (2) or no protocol. A protocol must be followed by a colon. The below\n * allows that by allowing colons only after one of the characters [/?#].\n * A colon after a hash (#) must be in the fragment.\n * Otherwise, a colon after a (?) must be in a query.\n * Otherwise, a colon after a single solidus (/) must be in a path.\n * Otherwise, a colon after a double solidus (//) must be in the authority\n * (before port).\n *\n * @private\n * @const {!RegExp}\n */\ngoog.html.SAFE_URL_PATTERN_ =\n /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;\n\n/**\n * Public version of goog.html.SAFE_URL_PATTERN_. Updating\n * goog.html.SAFE_URL_PATTERN_ doesn't seem to be backward compatible.\n * Namespace is also changed to goog.html.SafeUrl so it can be imported using\n * goog.require('goog.dom.SafeUrl').\n *\n * TODO(bangert): Remove SAFE_URL_PATTERN_\n * @const {!RegExp}\n */\ngoog.html.SafeUrl.SAFE_URL_PATTERN = goog.html.SAFE_URL_PATTERN_;\n\n/**\n * Attempts to create a SafeUrl object from `url`. The input string is validated\n * to match a pattern of commonly used safe URLs. If validation fails, `null` is\n * returned.\n *\n * `url` may be a URL with the `http:`, `https:`, `mailto:`, `ftp:` or `data`\n * scheme, or a relative URL (i.e., a URL without a scheme; specifically, a\n * scheme-relative, absolute-path-relative, or path-relative URL).\n *\n * @see http://url.spec.whatwg.org/#concept-relative-url\n * @param {string|!goog.string.TypedString} url The URL to validate.\n * @return {?goog.html.SafeUrl} The validated URL, wrapped as a SafeUrl, or null\n * if validation fails.\n */\ngoog.html.SafeUrl.trySanitize = function(url) {\n 'use strict';\n if (url instanceof goog.html.SafeUrl) {\n return url;\n }\n if (typeof url == 'object' && url.implementsGoogStringTypedString) {\n url = /** @type {!goog.string.TypedString} */ (url).getTypedStringValue();\n } else {\n // For defensive purposes, in case users cast around the parameter type.\n url = String(url);\n }\n if (!goog.html.SAFE_URL_PATTERN_.test(url)) {\n return goog.html.SafeUrl.tryFromDataUrl(url);\n }\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url);\n};\n\n/**\n * Creates a SafeUrl object from `url`. If `url` is a\n * `goog.html.SafeUrl` then it is simply returned. Otherwise the input string is\n * validated to match a pattern of commonly used safe URLs. If validation fails,\n * `goog.html.SafeUrl.INNOCUOUS_URL` is returned.\n *\n * `url` may be a URL with the `http:`, `https:`, `mailto:`, `ftp:` or `data`\n * scheme, or a relative URL (i.e., a URL without a scheme; specifically, a\n * scheme-relative, absolute-path-relative, or path-relative URL).\n *\n * @see http://url.spec.whatwg.org/#concept-relative-url\n * @param {string|!goog.string.TypedString} url The URL to validate.\n * @return {!goog.html.SafeUrl} The validated URL, wrapped as a SafeUrl.\n */\ngoog.html.SafeUrl.sanitize = function(url) {\n 'use strict';\n return goog.html.SafeUrl.trySanitize(url) || goog.html.SafeUrl.INNOCUOUS_URL;\n};\n\n/**\n * Creates a SafeUrl object from `url`. If `url` is a\n * `goog.html.SafeUrl` then it is simply returned. Otherwise the input string is\n * validated to match a pattern of commonly used safe URLs.\n *\n * `url` may be a URL with the http, https, mailto or ftp scheme,\n * or a relative URL (i.e., a URL without a scheme; specifically, a\n * scheme-relative, absolute-path-relative, or path-relative URL).\n *\n * This function asserts (using goog.asserts) that the URL matches this pattern.\n * If it does not, in addition to failing the assert, an innocuous URL will be\n * returned.\n *\n * @see http://url.spec.whatwg.org/#concept-relative-url\n * @param {string|!goog.string.TypedString} url The URL to validate.\n * @param {boolean=} opt_allowDataUrl Whether to allow valid data: URLs.\n * @return {!goog.html.SafeUrl} The validated URL, wrapped as a SafeUrl.\n */\ngoog.html.SafeUrl.sanitizeAssertUnchanged = function(url, opt_allowDataUrl) {\n 'use strict';\n if (url instanceof goog.html.SafeUrl) {\n return url;\n } else if (typeof url == 'object' && url.implementsGoogStringTypedString) {\n url = /** @type {!goog.string.TypedString} */ (url).getTypedStringValue();\n } else {\n url = String(url);\n }\n if (opt_allowDataUrl && /^data:/i.test(url)) {\n var safeUrl = goog.html.SafeUrl.fromDataUrl(url);\n if (safeUrl.getTypedStringValue() == url) {\n return safeUrl;\n }\n }\n if (!goog.asserts.assert(\n goog.html.SAFE_URL_PATTERN_.test(url),\n '%s does not match the safe URL pattern', url)) {\n url = goog.html.SafeUrl.INNOCUOUS_STRING;\n }\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url);\n};\n\n/**\n * Token used to ensure that object is created only from this file. No code\n * outside of this file can access this token.\n * @private {!Object}\n * @const\n */\ngoog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {};\n\n/**\n * Package-internal utility method to create SafeUrl instances.\n *\n * @param {string} url The string to initialize the SafeUrl object with.\n * @return {!goog.html.SafeUrl} The initialized SafeUrl object.\n * @package\n */\ngoog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse = function(\n url) {\n 'use strict';\n return new goog.html.SafeUrl(\n url, goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_);\n};\n\n\n/**\n * `INNOCUOUS_STRING` wrapped in a `SafeUrl`.\n * @const {!goog.html.SafeUrl}\n */\ngoog.html.SafeUrl.INNOCUOUS_URL =\n goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n goog.html.SafeUrl.INNOCUOUS_STRING);\n\n\n/**\n * A SafeUrl corresponding to the special about:blank url.\n * @const {!goog.html.SafeUrl}\n */\ngoog.html.SafeUrl.ABOUT_BLANK =\n goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(\n 'about:blank');\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview The SafeStyle type and its builders.\n *\n * TODO(xtof): Link to document stating type contract.\n */\n\ngoog.module('goog.html.SafeStyle');\ngoog.module.declareLegacyNamespace();\n\nconst Const = goog.require('goog.string.Const');\nconst SafeUrl = goog.require('goog.html.SafeUrl');\nconst TypedString = goog.require('goog.string.TypedString');\nconst {AssertionError, assert, fail} = goog.require('goog.asserts');\nconst {contains, endsWith} = goog.require('goog.string.internal');\n\n/**\n * Token used to ensure that object is created only from this file. No code\n * outside of this file can access this token.\n * @type {!Object}\n * @const\n */\nconst CONSTRUCTOR_TOKEN_PRIVATE = {};\n\n/**\n * A string-like object which represents a sequence of CSS declarations\n * (`propertyName1: propertyvalue1; propertyName2: propertyValue2; ...`)\n * and that carries the security type contract that its value, as a string,\n * will not cause untrusted script execution (XSS) when evaluated as CSS in a\n * browser.\n *\n * Instances of this type must be created via the factory methods\n * (`SafeStyle.create` or `SafeStyle.fromConstant`)\n * and not by invoking its constructor. The constructor intentionally takes an\n * extra parameter that cannot be constructed outside of this file and the type\n * is immutable; hence only a default instance corresponding to the empty string\n * can be obtained via constructor invocation.\n *\n * SafeStyle's string representation can safely be:\n * <ul>\n * <li>Interpolated as the content of a *quoted* HTML style attribute.\n * However, the SafeStyle string *must be HTML-attribute-escaped* before\n * interpolation.\n * <li>Interpolated as the content of a {}-wrapped block within a stylesheet.\n * '<' characters in the SafeStyle string *must be CSS-escaped* before\n * interpolation. The SafeStyle string is also guaranteed not to be able\n * to introduce new properties or elide existing ones.\n * <li>Interpolated as the content of a {}-wrapped block within an HTML\n * &lt;style&gt; element. '<' characters in the SafeStyle string\n * *must be CSS-escaped* before interpolation.\n * <li>Assigned to the style property of a DOM node. The SafeStyle string\n * should not be escaped before being assigned to the property.\n * </ul>\n *\n * A SafeStyle may never contain literal angle brackets. Otherwise, it could\n * be unsafe to place a SafeStyle into a &lt;style&gt; tag (where it can't\n * be HTML escaped). For example, if the SafeStyle containing\n * `font: 'foo &lt;style/&gt;&lt;script&gt;evil&lt;/script&gt;'` were\n * interpolated within a &lt;style&gt; tag, this would then break out of the\n * style context into HTML.\n *\n * A SafeStyle may contain literal single or double quotes, and as such the\n * entire style string must be escaped when used in a style attribute (if\n * this were not the case, the string could contain a matching quote that\n * would escape from the style attribute).\n *\n * Values of this type must be composable, i.e. for any two values\n * `style1` and `style2` of this type,\n * `SafeStyle.unwrap(style1) +\n * SafeStyle.unwrap(style2)` must itself be a value that satisfies\n * the SafeStyle type constraint. This requirement implies that for any value\n * `style` of this type, `SafeStyle.unwrap(style)` must\n * not end in a \"property value\" or \"property name\" context. For example,\n * a value of `background:url(\"` or `font-` would not satisfy the\n * SafeStyle contract. This is because concatenating such strings with a\n * second value that itself does not contain unsafe CSS can result in an\n * overall string that does. For example, if `javascript:evil())\"` is\n * appended to `background:url(\"}, the resulting string may result in\n * the execution of a malicious script.\n *\n * TODO(mlourenco): Consider whether we should implement UTF-8 interchange\n * validity checks and blacklisting of newlines (including Unicode ones) and\n * other whitespace characters (\\t, \\f). Document here if so and also update\n * SafeStyle.fromConstant().\n *\n * The following example values comply with this type's contract:\n * <ul>\n * <li><pre>width: 1em;</pre>\n * <li><pre>height:1em;</pre>\n * <li><pre>width: 1em;height: 1em;</pre>\n * <li><pre>background:url('http://url');</pre>\n * </ul>\n * In addition, the empty string is safe for use in a CSS attribute.\n *\n * The following example values do NOT comply with this type's contract:\n * <ul>\n * <li><pre>background: red</pre> (missing a trailing semi-colon)\n * <li><pre>background:</pre> (missing a value and a trailing semi-colon)\n * <li><pre>1em</pre> (missing an attribute name, which provides context for\n * the value)\n * </ul>\n *\n * @see SafeStyle#create\n * @see SafeStyle#fromConstant\n * @see http://www.w3.org/TR/css3-syntax/\n * @final\n * @struct\n * @implements {TypedString}\n */\nclass SafeStyle {\n /**\n * @param {string} value\n * @param {!Object} token package-internal implementation detail.\n */\n constructor(value, token) {\n /**\n * The contained value of this SafeStyle. The field has a purposely\n * ugly name to make (non-compiled) code that attempts to directly access\n * this field stand out.\n * @private {string}\n */\n this.privateDoNotAccessOrElseSafeStyleWrappedValue_ =\n (token === CONSTRUCTOR_TOKEN_PRIVATE) ? value : '';\n\n /**\n * @override\n * @const {boolean}\n */\n this.implementsGoogStringTypedString = true;\n }\n\n\n /**\n * Creates a SafeStyle object from a compile-time constant string.\n *\n * `style` should be in the format\n * `name: value; [name: value; ...]` and must not have any < or >\n * characters in it. This is so that SafeStyle's contract is preserved,\n * allowing the SafeStyle to correctly be interpreted as a sequence of CSS\n * declarations and without affecting the syntactic structure of any\n * surrounding CSS and HTML.\n *\n * This method performs basic sanity checks on the format of `style`\n * but does not constrain the format of `name` and `value`, except\n * for disallowing tag characters.\n *\n * @param {!Const} style A compile-time-constant string from which\n * to create a SafeStyle.\n * @return {!SafeStyle} A SafeStyle object initialized to\n * `style`.\n */\n static fromConstant(style) {\n const styleString = Const.unwrap(style);\n if (styleString.length === 0) {\n return SafeStyle.EMPTY;\n }\n assert(\n endsWith(styleString, ';'),\n `Last character of style string is not ';': ${styleString}`);\n assert(\n contains(styleString, ':'),\n 'Style string must contain at least one \\':\\', to ' +\n 'specify a \"name: value\" pair: ' + styleString);\n return SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(\n styleString);\n };\n\n\n /**\n * Returns this SafeStyle's value as a string.\n *\n * IMPORTANT: In code where it is security relevant that an object's type is\n * indeed `SafeStyle`, use `SafeStyle.unwrap` instead of\n * this method. If in doubt, assume that it's security relevant. In\n * particular, note that goog.html functions which return a goog.html type do\n * not guarantee the returned instance is of the right type. For example:\n *\n * <pre>\n * var fakeSafeHtml = new String('fake');\n * fakeSafeHtml.__proto__ = goog.html.SafeHtml.prototype;\n * var newSafeHtml = goog.html.SafeHtml.htmlEscape(fakeSafeHtml);\n * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by\n * // goog.html.SafeHtml.htmlEscape() as fakeSafeHtml\n * // instanceof goog.html.SafeHtml.\n * </pre>\n *\n * @return {string}\n * @see SafeStyle#unwrap\n * @override\n */\n getTypedStringValue() {\n return this.privateDoNotAccessOrElseSafeStyleWrappedValue_;\n }\n\n\n /**\n * Returns a string-representation of this value.\n *\n * To obtain the actual string value wrapped in a SafeStyle, use\n * `SafeStyle.unwrap`.\n *\n * @return {string}\n * @see SafeStyle#unwrap\n * @override\n */\n toString() {\n return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString();\n }\n\n\n /**\n * Performs a runtime check that the provided object is indeed a\n * SafeStyle object, and returns its value.\n *\n * @param {!SafeStyle} safeStyle The object to extract from.\n * @return {string} The safeStyle object's contained string, unless\n * the run-time type check fails. In that case, `unwrap` returns an\n * innocuous string, or, if assertions are enabled, throws\n * `AssertionError`.\n */\n static unwrap(safeStyle) {\n // Perform additional Run-time type-checking to ensure that\n // safeStyle is indeed an instance of the expected type. This\n // provides some additional protection against security bugs due to\n // application code that disables type checks.\n // Specifically, the following checks are performed:\n // 1. The object is an instance of the expected type.\n // 2. The object is not an instance of a subclass.\n if (safeStyle instanceof SafeStyle && safeStyle.constructor === SafeStyle) {\n return safeStyle.privateDoNotAccessOrElseSafeStyleWrappedValue_;\n } else {\n fail(\n `expected object of type SafeStyle, got '${safeStyle}` +\n '\\' of type ' + goog.typeOf(safeStyle));\n return 'type_error:SafeStyle';\n }\n }\n\n\n /**\n * Package-internal utility method to create SafeStyle instances.\n *\n * @param {string} style The string to initialize the SafeStyle object with.\n * @return {!SafeStyle} The initialized SafeStyle object.\n * @package\n */\n static createSafeStyleSecurityPrivateDoNotAccessOrElse(style) {\n return new SafeStyle(style, CONSTRUCTOR_TOKEN_PRIVATE);\n }\n\n /**\n * Creates a new SafeStyle object from the properties specified in the map.\n * @param {!SafeStyle.PropertyMap} map Mapping of property names to\n * their values, for example {'margin': '1px'}. Names must consist of\n * [-_a-zA-Z0-9]. Values might be strings consisting of\n * [-,.'\"%_!# a-zA-Z0-9[\\]], where \", ', and [] must be properly balanced.\n * We also allow simple functions like rgb() and url() which sanitizes its\n * contents. Other values must be wrapped in Const. URLs might\n * be passed as SafeUrl which will be wrapped into url(\"\"). We\n * also support array whose elements are joined with ' '. Null value\n * causes skipping the property.\n * @return {!SafeStyle}\n * @throws {!Error} If invalid name is provided.\n * @throws {!AssertionError} If invalid value is provided. With\n * disabled assertions, invalid value is replaced by\n * SafeStyle.INNOCUOUS_STRING.\n */\n static create(map) {\n let style = '';\n for (let name in map) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty#Using_hasOwnProperty_as_a_property_name\n if (Object.prototype.hasOwnProperty.call(map, name)) {\n if (!/^[-_a-zA-Z0-9]+$/.test(name)) {\n throw new Error(`Name allows only [-_a-zA-Z0-9], got: ${name}`);\n }\n let value = map[name];\n if (value == null) {\n continue;\n }\n if (Array.isArray(value)) {\n value = value.map(sanitizePropertyValue).join(' ');\n } else {\n value = sanitizePropertyValue(value);\n }\n style += `${name}:${value};`;\n }\n }\n if (!style) {\n return SafeStyle.EMPTY;\n }\n return SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(style);\n };\n\n /**\n * Creates a new SafeStyle object by concatenating the values.\n * @param {...(!SafeStyle|!Array<!SafeStyle>)} var_args\n * SafeStyles to concatenate.\n * @return {!SafeStyle}\n */\n static concat(var_args) {\n let style = '';\n\n /**\n * @param {!SafeStyle|!Array<!SafeStyle>} argument\n */\n const addArgument = argument => {\n if (Array.isArray(argument)) {\n argument.forEach(addArgument);\n } else {\n style += SafeStyle.unwrap(argument);\n }\n };\n\n Array.prototype.forEach.call(arguments, addArgument);\n if (!style) {\n return SafeStyle.EMPTY;\n }\n return SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(style);\n };\n}\n\n/**\n * A SafeStyle instance corresponding to the empty string.\n * @const {!SafeStyle}\n */\nSafeStyle.EMPTY = SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse('');\n\n\n/**\n * The innocuous string generated by SafeStyle.create when passed\n * an unsafe value.\n * @const {string}\n */\nSafeStyle.INNOCUOUS_STRING = 'zClosurez';\n\n\n/**\n * A single property value.\n * @typedef {string|!Const|!SafeUrl}\n */\nSafeStyle.PropertyValue;\n\n\n/**\n * Mapping of property names to their values.\n * We don't support numbers even though some values might be numbers (e.g.\n * line-height or 0 for any length). The reason is that most numeric values need\n * units (e.g. '1px') and allowing numbers could cause users forgetting about\n * them.\n * @typedef {!Object<string, ?SafeStyle.PropertyValue|\n * ?Array<!SafeStyle.PropertyValue>>}\n */\nSafeStyle.PropertyMap;\n\n\n\n/**\n * Checks and converts value to string.\n * @param {!SafeStyle.PropertyValue} value\n * @return {string}\n */\nfunction sanitizePropertyValue(value) {\n if (value instanceof SafeUrl) {\n const url = SafeUrl.unwrap(value);\n return 'url(\"' + url.replace(/</g, '%3c').replace(/[\\\\\"]/g, '\\\\$&') + '\")';\n }\n const result = value instanceof Const ?\n Const.unwrap(value) :\n sanitizePropertyValueString(String(value));\n // These characters can be used to change context and we don't want that even\n // with const values.\n if (/[{;}]/.test(result)) {\n throw new AssertionError('Value does not allow [{;}], got: %s.', [result]);\n }\n return result;\n}\n\n\n/**\n * Checks string value.\n * @param {string} value\n * @return {string}\n */\nfunction sanitizePropertyValueString(value) {\n // Some CSS property values permit nested functions. We allow one level of\n // nesting, and all nested functions must also be in the FUNCTIONS_RE_ list.\n const valueWithoutFunctions = value.replace(FUNCTIONS_RE, '$1')\n .replace(FUNCTIONS_RE, '$1')\n .replace(URL_RE, 'url');\n if (!VALUE_RE.test(valueWithoutFunctions)) {\n fail(\n `String value allows only ${VALUE_ALLOWED_CHARS}` +\n ' and simple functions, got: ' + value);\n return SafeStyle.INNOCUOUS_STRING;\n } else if (COMMENT_RE.test(value)) {\n fail(`String value disallows comments, got: ${value}`);\n return SafeStyle.INNOCUOUS_STRING;\n } else if (!hasBalancedQuotes(value)) {\n fail(`String value requires balanced quotes, got: ${value}`);\n return SafeStyle.INNOCUOUS_STRING;\n } else if (!hasBalancedSquareBrackets(value)) {\n fail(\n 'String value requires balanced square brackets and one' +\n ' identifier per pair of brackets, got: ' + value);\n return SafeStyle.INNOCUOUS_STRING;\n }\n return sanitizeUrl(value);\n}\n\n\n/**\n * Checks that quotes (\" and ') are properly balanced inside a string. Assumes\n * that neither escape (\\) nor any other character that could result in\n * breaking out of a string parsing context are allowed;\n * see http://www.w3.org/TR/css3-syntax/#string-token-diagram.\n * @param {string} value Untrusted CSS property value.\n * @return {boolean} True if property value is safe with respect to quote\n * balancedness.\n */\nfunction hasBalancedQuotes(value) {\n let outsideSingle = true;\n let outsideDouble = true;\n for (let i = 0; i < value.length; i++) {\n const c = value.charAt(i);\n if (c == '\\'' && outsideDouble) {\n outsideSingle = !outsideSingle;\n } else if (c == '\"' && outsideSingle) {\n outsideDouble = !outsideDouble;\n }\n }\n return outsideSingle && outsideDouble;\n}\n\n\n/**\n * Checks that square brackets ([ and ]) are properly balanced inside a string,\n * and that the content in the square brackets is one ident-token;\n * see https://www.w3.org/TR/css-syntax-3/#ident-token-diagram.\n * For practicality, and in line with other restrictions posed on SafeStyle\n * strings, we restrict the character set allowable in the ident-token to\n * [-_a-zA-Z0-9].\n * @param {string} value Untrusted CSS property value.\n * @return {boolean} True if property value is safe with respect to square\n * bracket balancedness.\n */\nfunction hasBalancedSquareBrackets(value) {\n let outside = true;\n const tokenRe = /^[-_a-zA-Z0-9]$/;\n for (let i = 0; i < value.length; i++) {\n const c = value.charAt(i);\n if (c == ']') {\n if (outside) return false; // Unbalanced ].\n outside = true;\n } else if (c == '[') {\n if (!outside) return false; // No nesting.\n outside = false;\n } else if (!outside && !tokenRe.test(c)) {\n return false;\n }\n }\n return outside;\n}\n\n\n/**\n * Characters allowed in VALUE_RE.\n * @type {string}\n */\nconst VALUE_ALLOWED_CHARS = '[-,.\"\\'%_!#/ a-zA-Z0-9\\\\[\\\\]]';\n\n\n/**\n * Regular expression for safe values.\n * Quotes (\" and ') are allowed, but a check must be done elsewhere to ensure\n * they're balanced.\n * Square brackets ([ and ]) are allowed, but a check must be done elsewhere\n * to ensure they're balanced. The content inside a pair of square brackets must\n * be one alphanumeric identifier.\n * ',' allows multiple values to be assigned to the same property\n * (e.g. background-attachment or font-family) and hence could allow\n * multiple values to get injected, but that should pose no risk of XSS.\n * The expression checks only for XSS safety, not for CSS validity.\n * @const {!RegExp}\n */\nconst VALUE_RE = new RegExp(`^${VALUE_ALLOWED_CHARS}+\\$`);\n\n\n/**\n * Regular expression for url(). We support URLs allowed by\n * https://www.w3.org/TR/css-syntax-3/#url-token-diagram without using escape\n * sequences. Use percent-encoding if you need to use special characters like\n * backslash.\n * @const {!RegExp}\n */\nconst URL_RE = new RegExp(\n '\\\\b(url\\\\([ \\t\\n]*)(' +\n '\\'[ -&(-\\\\[\\\\]-~]*\\'' + // Printable characters except ' and \\.\n '|\"[ !#-\\\\[\\\\]-~]*\"' + // Printable characters except \" and \\.\n '|[!#-&*-\\\\[\\\\]-~]*' + // Printable characters except [ \"'()\\\\].\n ')([ \\t\\n]*\\\\))',\n 'g');\n\n/**\n * Names of functions allowed in FUNCTIONS_RE.\n * @const {!Array<string>}\n */\nconst ALLOWED_FUNCTIONS = [\n 'calc',\n 'cubic-bezier',\n 'fit-content',\n 'hsl',\n 'hsla',\n 'linear-gradient',\n 'matrix',\n 'minmax',\n 'radial-gradient',\n 'repeat',\n 'rgb',\n 'rgba',\n '(rotate|scale|translate)(X|Y|Z|3d)?',\n 'steps',\n 'var',\n];\n\n\n/**\n * Regular expression for simple functions.\n * @const {!RegExp}\n */\nconst FUNCTIONS_RE = new RegExp(\n '\\\\b(' + ALLOWED_FUNCTIONS.join('|') + ')' +\n '\\\\([-+*/0-9a-zA-Z.%#\\\\[\\\\], ]+\\\\)',\n 'g');\n\n\n/**\n * Regular expression for comments. These are disallowed in CSS property values.\n * @const {!RegExp}\n */\nconst COMMENT_RE = /\\/\\*/;\n\n\n/**\n * Sanitize URLs inside url().\n * NOTE: We could also consider using CSS.escape once that's available in the\n * browsers. However, loosely matching URL e.g. with url\\(.*\\) and then escaping\n * the contents would result in a slightly different language than CSS leading\n * to confusion of users. E.g. url(\")\") is valid in CSS but it would be invalid\n * as seen by our parser. On the other hand, url(\\) is invalid in CSS but our\n * parser would be fine with it.\n * @param {string} value Untrusted CSS property value.\n * @return {string}\n */\nfunction sanitizeUrl(value) {\n return value.replace(URL_RE, (match, before, url, after) => {\n let quote = '';\n url = url.replace(/^(['\"])(.*)\\1$/, (match, start, inside) => {\n quote = start;\n return inside;\n });\n const sanitized = SafeUrl.sanitize(url).getTypedStringValue();\n return before + quote + sanitized + quote + after;\n });\n}\n\n\nexports = SafeStyle;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Utilities for manipulating objects/maps/hashes.\n */\ngoog.module('goog.object');\ngoog.module.declareLegacyNamespace();\n\n/**\n * Calls a function for each element in an object/map/hash.\n * @param {?Object<K,V>} obj The object over which to iterate.\n * @param {function(this:T,V,?,?Object<K,V>):?} f The function to call for every\n * element. This function takes 3 arguments (the value, the key and the\n * object) and the return value is ignored.\n * @param {T=} opt_obj This is used as the 'this' object within f.\n * @return {void}\n * @template T,K,V\n */\nfunction forEach(obj, f, opt_obj) {\n for (const key in obj) {\n f.call(/** @type {?} */ (opt_obj), obj[key], key, obj);\n }\n}\n\n/**\n * Calls a function for each element in an object/map/hash. If that call returns\n * true, adds the element to a new object.\n * @param {?Object<K,V>} obj The object over which to iterate.\n * @param {function(this:T,V,?,?Object<K,V>):boolean} f The function to call for\n * every element. This function takes 3 arguments (the value, the key and\n * the object) and should return a boolean. If the return value is true the\n * element is added to the result object. If it is false the element is not\n * included.\n * @param {T=} opt_obj This is used as the 'this' object within f.\n * @return {!Object<K,V>} a new object in which only elements that passed the\n * test are present.\n * @template T,K,V\n */\nfunction filter(obj, f, opt_obj) {\n const res = {};\n for (const key in obj) {\n if (f.call(/** @type {?} */ (opt_obj), obj[key], key, obj)) {\n res[key] = obj[key];\n }\n }\n return res;\n}\n\n/**\n * For every element in an object/map/hash calls a function and inserts the\n * result into a new object.\n * @param {?Object<K,V>} obj The object over which to iterate.\n * @param {function(this:T,V,?,?Object<K,V>):R} f The function to call for every\n * element. This function takes 3 arguments (the value, the key and the\n * object) and should return something. The result will be inserted into a\n * new object.\n * @param {T=} opt_obj This is used as the 'this' object within f.\n * @return {!Object<K,R>} a new object with the results from f.\n * @template T,K,V,R\n */\nfunction map(obj, f, opt_obj) {\n const res = {};\n for (const key in obj) {\n res[key] = f.call(/** @type {?} */ (opt_obj), obj[key], key, obj);\n }\n return res;\n}\n\n/**\n * Calls a function for each element in an object/map/hash. If any\n * call returns true, returns true (without checking the rest). If\n * all calls return false, returns false.\n * @param {?Object<K,V>} obj The object to check.\n * @param {function(this:T,V,?,?Object<K,V>):boolean} f The function to call for\n * every element. This function takes 3 arguments (the value, the key and\n * the object) and should return a boolean.\n * @param {T=} opt_obj This is used as the 'this' object within f.\n * @return {boolean} true if any element passes the test.\n * @template T,K,V\n */\nfunction some(obj, f, opt_obj) {\n for (const key in obj) {\n if (f.call(/** @type {?} */ (opt_obj), obj[key], key, obj)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Calls a function for each element in an object/map/hash. If\n * all calls return true, returns true. If any call returns false, returns\n * false at this point and does not continue to check the remaining elements.\n * @param {?Object<K,V>} obj The object to check.\n * @param {?function(this:T,V,?,?Object<K,V>):boolean} f The function to call\n * for every element. This function takes 3 arguments (the value, the key\n * and the object) and should return a boolean.\n * @param {T=} opt_obj This is used as the 'this' object within f.\n * @return {boolean} false if any element fails the test.\n * @template T,K,V\n */\nfunction every(obj, f, opt_obj) {\n for (const key in obj) {\n if (!f.call(/** @type {?} */ (opt_obj), obj[key], key, obj)) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Returns the number of key-value pairs in the object map.\n * @param {?Object} obj The object for which to get the number of key-value\n * pairs.\n * @return {number} The number of key-value pairs in the object map.\n */\nfunction getCount(obj) {\n let rv = 0;\n for (const key in obj) {\n rv++;\n }\n return rv;\n}\n\n/**\n * Returns one key from the object map, if any exists.\n * For map literals the returned key will be the first one in most of the\n * browsers (a know exception is Konqueror).\n * @param {?Object} obj The object to pick a key from.\n * @return {string|undefined} The key or undefined if the object is empty.\n */\nfunction getAnyKey(obj) {\n for (const key in obj) {\n return key;\n }\n}\n\n/**\n * Returns one value from the object map, if any exists.\n * For map literals the returned value will be the first one in most of the\n * browsers (a know exception is Konqueror).\n * @param {?Object<K,V>} obj The object to pick a value from.\n * @return {V|undefined} The value or undefined if the object is empty.\n * @template K,V\n */\nfunction getAnyValue(obj) {\n for (const key in obj) {\n return obj[key];\n }\n}\n\n/**\n * Whether the object/hash/map contains the given object as a value.\n * An alias for containsValue(obj, val).\n * @param {?Object<K,V>} obj The object in which to look for val.\n * @param {V} val The object for which to check.\n * @return {boolean} true if val is present.\n * @template K,V\n */\nfunction contains(obj, val) {\n return containsValue(obj, val);\n}\n\n/**\n * Returns the values of the object/map/hash.\n * @param {?Object<K,V>} obj The object from which to get the values.\n * @return {!Array<V>} The values in the object/map/hash.\n * @template K,V\n */\nfunction getValues(obj) {\n const res = [];\n let i = 0;\n for (const key in obj) {\n res[i++] = obj[key];\n }\n return res;\n}\n\n/**\n * Returns the keys of the object/map/hash.\n * @param {?Object} obj The object from which to get the keys.\n * @return {!Array<string>} Array of property keys.\n */\nfunction getKeys(obj) {\n const res = [];\n let i = 0;\n for (const key in obj) {\n res[i++] = key;\n }\n return res;\n}\n\n/**\n * Get a value from an object multiple levels deep. This is useful for\n * pulling values from deeply nested objects, such as JSON responses.\n * Example usage: getValueByKeys(jsonObj, 'foo', 'entries', 3)\n * @param {?Object} obj An object to get the value from. Can be array-like.\n * @param {...(string|number|!IArrayLike<number|string>)} var_args A number of\n * keys (as strings, or numbers, for array-like objects). Can also be\n * specified as a single array of keys.\n * @return {*} The resulting value. If, at any point, the value for a key in the\n * current object is null or undefined, returns undefined.\n */\nfunction getValueByKeys(obj, var_args) {\n const isArrayLike = goog.isArrayLike(var_args);\n const keys = isArrayLike ?\n /** @type {!IArrayLike<number|string>} */ (var_args) :\n arguments;\n\n // Start with the 2nd parameter for the variable parameters syntax.\n for (let i = isArrayLike ? 0 : 1; i < keys.length; i++) {\n if (obj == null) return undefined;\n obj = obj[keys[i]];\n }\n\n return obj;\n}\n\n/**\n * Whether the object/map/hash contains the given key.\n * @param {?Object} obj The object in which to look for key.\n * @param {?} key The key for which to check.\n * @return {boolean} true If the map contains the key.\n */\nfunction containsKey(obj, key) {\n return obj !== null && key in obj;\n}\n\n/**\n * Whether the object/map/hash contains the given value. This is O(n).\n * @param {?Object<K,V>} obj The object in which to look for val.\n * @param {V} val The value for which to check.\n * @return {boolean} true If the map contains the value.\n * @template K,V\n */\nfunction containsValue(obj, val) {\n for (const key in obj) {\n if (obj[key] == val) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Searches an object for an element that satisfies the given condition and\n * returns its key.\n * @param {?Object<K,V>} obj The object to search in.\n * @param {function(this:T,V,string,?Object<K,V>):boolean} f The function to\n * call for every element. Takes 3 arguments (the value, the key and the\n * object) and should return a boolean.\n * @param {T=} thisObj An optional \"this\" context for the function.\n * @return {string|undefined} The key of an element for which the function\n * returns true or undefined if no such element is found.\n * @template T,K,V\n */\nfunction findKey(obj, f, thisObj = undefined) {\n for (const key in obj) {\n if (f.call(/** @type {?} */ (thisObj), obj[key], key, obj)) {\n return key;\n }\n }\n return undefined;\n}\n\n/**\n * Searches an object for an element that satisfies the given condition and\n * returns its value.\n * @param {?Object<K,V>} obj The object to search in.\n * @param {function(this:T,V,string,?Object<K,V>):boolean} f The function to\n * call for every element. Takes 3 arguments (the value, the key and the\n * object) and should return a boolean.\n * @param {T=} thisObj An optional \"this\" context for the function.\n * @return {V} The value of an element for which the function returns true or\n * undefined if no such element is found.\n * @template T,K,V\n */\nfunction findValue(obj, f, thisObj = undefined) {\n const key = findKey(obj, f, thisObj);\n return key && obj[key];\n}\n\n/**\n * Whether the object/map/hash is empty.\n * @param {?Object} obj The object to test.\n * @return {boolean} true if obj is empty.\n */\nfunction isEmpty(obj) {\n for (const key in obj) {\n return false;\n }\n return true;\n}\n\n/**\n * Removes all key value pairs from the object/map/hash.\n * @param {?Object} obj The object to clear.\n * @return {void}\n */\nfunction clear(obj) {\n for (const i in obj) {\n delete obj[i];\n }\n}\n\n/**\n * Removes a key-value pair based on the key.\n * @param {?Object} obj The object from which to remove the key.\n * @param {?} key The key to remove.\n * @return {boolean} Whether an element was removed.\n */\nfunction remove(obj, key) {\n let rv;\n if (rv = key in /** @type {!Object} */ (obj)) {\n delete obj[key];\n }\n return rv;\n}\n\n/**\n * Adds a key-value pair to the object. Throws an exception if the key is\n * already in use. Use set if you want to change an existing pair.\n * @param {?Object<K,V>} obj The object to which to add the key-value pair.\n * @param {string} key The key to add.\n * @param {V} val The value to add.\n * @return {void}\n * @template K,V\n */\nfunction add(obj, key, val) {\n if (obj !== null && key in obj) {\n throw new Error(`The object already contains the key \"${key}\"`);\n }\n set(obj, key, val);\n}\n\n/**\n * Returns the value for the given key.\n * @param {?Object<K,V>} obj The object from which to get the value.\n * @param {string} key The key for which to get the value.\n * @param {R=} val The value to return if no item is found for the given key\n * (default is undefined).\n * @return {V|R|undefined} The value for the given key.\n * @template K,V,R\n */\nfunction get(obj, key, val = undefined) {\n if (obj !== null && key in obj) {\n return obj[key];\n }\n return val;\n}\n\n/**\n * Adds a key-value pair to the object/map/hash.\n * @param {?Object<K,V>} obj The object to which to add the key-value pair.\n * @param {string} key The key to add.\n * @param {V} value The value to add.\n * @template K,V\n * @return {void}\n */\nfunction set(obj, key, value) {\n obj[key] = value;\n}\n\n/**\n * Adds a key-value pair to the object/map/hash if it doesn't exist yet.\n * @param {?Object<K,V>} obj The object to which to add the key-value pair.\n * @param {string} key The key to add.\n * @param {V} value The value to add if the key wasn't present.\n * @return {V} The value of the entry at the end of the function.\n * @template K,V\n */\nfunction setIfUndefined(obj, key, value) {\n return key in /** @type {!Object} */ (obj) ? obj[key] : (obj[key] = value);\n}\n\n/**\n * Sets a key and value to an object if the key is not set. The value will be\n * the return value of the given function. If the key already exists, the\n * object will not be changed and the function will not be called (the function\n * will be lazily evaluated -- only called if necessary).\n * This function is particularly useful when used with an `Object` which is\n * acting as a cache.\n * @param {?Object<K,V>} obj The object to which to add the key-value pair.\n * @param {string} key The key to add.\n * @param {function():V} f The value to add if the key wasn't present.\n * @return {V} The value of the entry at the end of the function.\n * @template K,V\n */\nfunction setWithReturnValueIfNotSet(obj, key, f) {\n if (key in obj) {\n return obj[key];\n }\n\n const val = f();\n obj[key] = val;\n return val;\n}\n\n/**\n * Compares two objects for equality using === on the values.\n * @param {!Object<K,V>} a\n * @param {!Object<K,V>} b\n * @return {boolean}\n * @template K,V\n */\nfunction equals(a, b) {\n for (const k in a) {\n if (!(k in b) || a[k] !== b[k]) {\n return false;\n }\n }\n for (const k in b) {\n if (!(k in a)) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Returns a shallow clone of the object.\n * @param {?Object<K,V>} obj Object to clone.\n * @return {!Object<K,V>} Clone of the input object.\n * @template K,V\n */\nfunction clone(obj) {\n const res = {};\n for (const key in obj) {\n res[key] = obj[key];\n }\n return res;\n}\n\n/**\n * Clones a value. The input may be an Object, Array, or basic type. Objects and\n * arrays will be cloned recursively.\n * WARNINGS:\n * <code>unsafeClone</code> does not detect reference loops. Objects\n * that refer to themselves will cause infinite recursion.\n * <code>unsafeClone</code> is unaware of unique identifiers, and\n * copies UIDs created by <code>getUid</code> into cloned results.\n * @param {T} obj The value to clone.\n * @return {T} A clone of the input value.\n * @template T\n */\nfunction unsafeClone(obj) {\n if (!obj || typeof obj !== 'object') return obj;\n if (typeof obj.clone === 'function') return obj.clone();\n if (typeof Map !== 'undefined' && obj instanceof Map) {\n return new Map(obj);\n } else if (typeof Set !== 'undefined' && obj instanceof Set) {\n return new Set(obj);\n } else if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n const clone = Array.isArray(obj) ? [] :\n typeof ArrayBuffer === 'function' &&\n typeof ArrayBuffer.isView === 'function' && ArrayBuffer.isView(obj) &&\n !(obj instanceof DataView) ?\n new obj.constructor(obj.length) :\n {};\n for (const key in obj) {\n clone[key] = unsafeClone(obj[key]);\n }\n return clone;\n}\n\n/**\n * Returns a new object in which all the keys and values are interchanged\n * (keys become values and values become keys). If multiple keys map to the\n * same value, the chosen transposed value is implementation-dependent.\n * @param {?Object} obj The object to transpose.\n * @return {!Object} The transposed object.\n */\nfunction transpose(obj) {\n const transposed = {};\n for (const key in obj) {\n transposed[obj[key]] = key;\n }\n return transposed;\n}\n\n/**\n * The names of the fields that are defined on Object.prototype.\n * @type {!Array<string>}\n */\nconst PROTOTYPE_FIELDS = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf',\n];\n\n/**\n * Extends an object with another object.\n * This operates 'in-place'; it does not create a new Object.\n * Example:\n * var o = {};\n * extend(o, {a: 0, b: 1});\n * o; // {a: 0, b: 1}\n * extend(o, {b: 2, c: 3});\n * o; // {a: 0, b: 2, c: 3}\n * @param {?Object} target The object to modify. Existing properties will be\n * overwritten if they are also present in one of the objects in `var_args`.\n * @param {...(?Object|undefined)} var_args The objects from which values\n * will be copied.\n * @return {void}\n * @deprecated Prefer Object.assign\n */\nfunction extend(target, var_args) {\n let key;\n let source;\n for (let i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (key in source) {\n target[key] = source[key];\n }\n\n // For IE the for-in-loop does not contain any properties that are not\n // enumerable on the prototype object (for example isPrototypeOf from\n // Object.prototype) and it will also not include 'replace' on objects that\n // extend String and change 'replace' (not that it is common for anyone to\n // extend anything except Object).\n\n for (let j = 0; j < PROTOTYPE_FIELDS.length; j++) {\n key = PROTOTYPE_FIELDS[j];\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n}\n\n/**\n * Creates a new object built from the key-value pairs provided as arguments.\n * @param {...*} var_args If only one argument is provided and it is an array\n * then this is used as the arguments, otherwise even arguments are used as\n * the property names and odd arguments are used as the property values.\n * @return {!Object} The new object.\n * @throws {!Error} If there are uneven number of arguments or there is only one\n * non array argument.\n */\nfunction create(var_args) {\n const argLength = arguments.length;\n if (argLength == 1 && Array.isArray(arguments[0])) {\n return create.apply(null, arguments[0]);\n }\n\n if (argLength % 2) {\n throw new Error('Uneven number of arguments');\n }\n\n const rv = {};\n for (let i = 0; i < argLength; i += 2) {\n rv[arguments[i]] = arguments[i + 1];\n }\n return rv;\n}\n\n/**\n * Creates a new object where the property names come from the arguments but\n * the value is always set to true\n * @param {...*} var_args If only one argument is provided and it is an array\n * then this is used as the arguments, otherwise the arguments are used as\n * the property names.\n * @return {!Object} The new object.\n */\nfunction createSet(var_args) {\n const argLength = arguments.length;\n if (argLength == 1 && Array.isArray(arguments[0])) {\n return createSet.apply(null, arguments[0]);\n }\n\n const rv = {};\n for (let i = 0; i < argLength; i++) {\n rv[arguments[i]] = true;\n }\n return rv;\n}\n\n/**\n * Creates an immutable view of the underlying object, if the browser\n * supports immutable objects.\n * In default mode, writes to this view will fail silently. In strict mode,\n * they will throw an error.\n * @param {!Object<K,V>} obj An object.\n * @return {!Object<K,V>} An immutable view of that object, or the original\n * object if this browser does not support immutables.\n * @template K,V\n */\nfunction createImmutableView(obj) {\n let result = obj;\n if (Object.isFrozen && !Object.isFrozen(obj)) {\n result = Object.create(obj);\n Object.freeze(result);\n }\n return result;\n}\n\n/**\n * @param {!Object} obj An object.\n * @return {boolean} Whether this is an immutable view of the object.\n */\nfunction isImmutableView(obj) {\n return !!Object.isFrozen && Object.isFrozen(obj);\n}\n\n/**\n * Get all properties names on a given Object regardless of enumerability.\n * <p> If the browser does not support `Object.getOwnPropertyNames` nor\n * `Object.getPrototypeOf` then this is equivalent to using\n * `getKeys`\n * @param {?Object} obj The object to get the properties of.\n * @param {boolean=} includeObjectPrototype Whether properties defined on\n * `Object.prototype` should be included in the result.\n * @param {boolean=} includeFunctionPrototype Whether properties defined on\n * `Function.prototype` should be included in the result.\n * @return {!Array<string>}\n * @public\n */\nfunction getAllPropertyNames(\n obj, includeObjectPrototype = undefined,\n includeFunctionPrototype = undefined) {\n if (!obj) {\n return [];\n }\n\n // Naively use a for..in loop to get the property names if the browser doesn't\n // support any other APIs for getting it.\n if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) {\n return getKeys(obj);\n }\n\n const visitedSet = {};\n\n // Traverse the prototype chain and add all properties to the visited set.\n let proto = obj;\n while (proto && (proto !== Object.prototype || !!includeObjectPrototype) &&\n (proto !== Function.prototype || !!includeFunctionPrototype)) {\n const names = Object.getOwnPropertyNames(proto);\n for (let i = 0; i < names.length; i++) {\n visitedSet[names[i]] = true;\n }\n proto = Object.getPrototypeOf(proto);\n }\n\n return getKeys(visitedSet);\n}\n\n/**\n * Given a ES5 or ES6 class reference, return its super class / super\n * constructor.\n * This should be used in rare cases where you need to walk up the inheritance\n * tree (this is generally a bad idea). But this work with ES5 and ES6 classes,\n * unlike relying on the superClass_ property.\n * Note: To start walking up the hierarchy from an instance call this with its\n * `constructor` property; e.g. `getSuperClass(instance.constructor)`.\n * @param {function(new: ?)} constructor\n * @return {?Object}\n */\nfunction getSuperClass(constructor) {\n const proto = Object.getPrototypeOf(constructor.prototype);\n return proto && proto.constructor;\n}\n\nexports = {\n add,\n clear,\n clone,\n contains,\n containsKey,\n containsValue,\n create,\n createImmutableView,\n createSet,\n equals,\n every,\n extend,\n filter,\n findKey,\n findValue,\n forEach,\n get,\n getAllPropertyNames,\n getAnyKey,\n getAnyValue,\n getCount,\n getKeys,\n getSuperClass,\n getValueByKeys,\n getValues,\n isEmpty,\n isImmutableView,\n map,\n remove,\n set,\n setIfUndefined,\n setWithReturnValueIfNotSet,\n some,\n transpose,\n unsafeClone,\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview The SafeStyleSheet type and its builders.\n *\n * TODO(xtof): Link to document stating type contract.\n */\n\ngoog.module('goog.html.SafeStyleSheet');\ngoog.module.declareLegacyNamespace();\n\nconst Const = goog.require('goog.string.Const');\nconst SafeStyle = goog.require('goog.html.SafeStyle');\nconst TypedString = goog.require('goog.string.TypedString');\nconst googObject = goog.require('goog.object');\nconst {assert, fail} = goog.require('goog.asserts');\nconst {contains} = goog.require('goog.string.internal');\n\n/**\n * Token used to ensure that object is created only from this file. No code\n * outside of this file can access this token.\n * @const {!Object}\n */\nconst CONSTRUCTOR_TOKEN_PRIVATE = {};\n\n/**\n * A string-like object which represents a CSS style sheet and that carries the\n * security type contract that its value, as a string, will not cause untrusted\n * script execution (XSS) when evaluated as CSS in a browser.\n *\n * Instances of this type must be created via the factory method\n * `SafeStyleSheet.fromConstant` and not by invoking its constructor. The\n * constructor intentionally takes an extra parameter that cannot be constructed\n * outside of this file and the type is immutable; hence only a default instance\n * corresponding to the empty string can be obtained via constructor invocation.\n *\n * A SafeStyleSheet's string representation can safely be interpolated as the\n * content of a style element within HTML. The SafeStyleSheet string should\n * not be escaped before interpolation.\n *\n * Values of this type must be composable, i.e. for any two values\n * `styleSheet1` and `styleSheet2` of this type,\n * `SafeStyleSheet.unwrap(styleSheet1) + SafeStyleSheet.unwrap(styleSheet2)`\n * must itself be a value that satisfies the SafeStyleSheet type constraint.\n * This requirement implies that for any value `styleSheet` of this type,\n * `SafeStyleSheet.unwrap(styleSheet1)` must end in\n * \"beginning of rule\" context.\n *\n * A SafeStyleSheet can be constructed via security-reviewed unchecked\n * conversions. In this case producers of SafeStyleSheet must ensure themselves\n * that the SafeStyleSheet does not contain unsafe script. Note in particular\n * that `&lt;` is dangerous, even when inside CSS strings, and so should\n * always be forbidden or CSS-escaped in user controlled input. For example, if\n * `&lt;/style&gt;&lt;script&gt;evil&lt;/script&gt;\"` were interpolated\n * inside a CSS string, it would break out of the context of the original\n * style element and `evil` would execute. Also note that within an HTML\n * style (raw text) element, HTML character references, such as\n * `&amp;lt;`, are not allowed. See\n * http://www.w3.org/TR/html5/scripting-1.html#restrictions-for-contents-of-script-elements\n * (similar considerations apply to the style element).\n *\n * @see SafeStyleSheet#fromConstant\n * @final\n * @implements {TypedString}\n */\nclass SafeStyleSheet {\n /**\n * @param {string} value\n * @param {!Object} token package-internal implementation detail.\n */\n constructor(value, token) {\n /**\n * The contained value of this SafeStyleSheet. The field has a purposely\n * ugly name to make (non-compiled) code that attempts to directly access\n * this field stand out.\n * @private {string}\n */\n this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ =\n (token === CONSTRUCTOR_TOKEN_PRIVATE) ? value : '';\n\n /**\n * @override\n * @const\n */\n this.implementsGoogStringTypedString = true;\n }\n\n /**\n * Returns a string-representation of this value.\n *\n * To obtain the actual string value wrapped in a SafeStyleSheet, use\n * `SafeStyleSheet.unwrap`.\n *\n * @return {string}\n * @see SafeStyleSheet#unwrap\n * @override\n */\n toString() {\n return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString();\n }\n\n /**\n * Creates a style sheet consisting of one selector and one style definition.\n * Use {@link SafeStyleSheet.concat} to create longer style sheets.\n * This function doesn't support @import, @media and similar constructs.\n * @param {string} selector CSS selector, e.g. '#id' or 'tag .class, #id'. We\n * support CSS3 selectors: https://w3.org/TR/css3-selectors/#selectors.\n * @param {!SafeStyle.PropertyMap|!SafeStyle} style Style\n * definition associated with the selector.\n * @return {!SafeStyleSheet}\n * @throws {!Error} If invalid selector is provided.\n */\n static createRule(selector, style) {\n if (contains(selector, '<')) {\n throw new Error(`Selector does not allow '<', got: ${selector}`);\n }\n\n // Remove strings.\n const selectorToCheck =\n selector.replace(/('|\")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g, '');\n\n // Check characters allowed in CSS3 selectors.\n if (!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(selectorToCheck)) {\n throw new Error(\n 'Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and ' +\n 'strings, got: ' + selector);\n }\n\n // Check balanced () and [].\n if (!SafeStyleSheet.hasBalancedBrackets_(selectorToCheck)) {\n throw new Error(\n '() and [] in selector must be balanced, got: ' + selector);\n }\n\n if (!(style instanceof SafeStyle)) {\n style = SafeStyle.create(style);\n }\n const styleSheet =\n `${selector}{` + SafeStyle.unwrap(style).replace(/</g, '\\\\3C ') + '}';\n return SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(\n styleSheet);\n }\n\n /**\n * Checks if a string has balanced () and [] brackets.\n * @param {string} s String to check.\n * @return {boolean}\n * @private\n */\n static hasBalancedBrackets_(s) {\n const brackets = {'(': ')', '[': ']'};\n const expectedBrackets = [];\n for (let i = 0; i < s.length; i++) {\n const ch = s[i];\n if (brackets[ch]) {\n expectedBrackets.push(brackets[ch]);\n } else if (googObject.contains(brackets, ch)) {\n if (expectedBrackets.pop() != ch) {\n return false;\n }\n }\n }\n return expectedBrackets.length == 0;\n }\n\n /**\n * Creates a new SafeStyleSheet object by concatenating values.\n * @param {...(!SafeStyleSheet|!Array<!SafeStyleSheet>)}\n * var_args Values to concatenate.\n * @return {!SafeStyleSheet}\n */\n static concat(var_args) {\n let result = '';\n\n /**\n * @param {!SafeStyleSheet|!Array<!SafeStyleSheet>}\n * argument\n */\n const addArgument = argument => {\n if (Array.isArray(argument)) {\n argument.forEach(addArgument);\n } else {\n result += SafeStyleSheet.unwrap(argument);\n }\n };\n\n Array.prototype.forEach.call(arguments, addArgument);\n return SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(\n result);\n }\n\n /**\n * Creates a SafeStyleSheet object from a compile-time constant string.\n *\n * `styleSheet` must not have any &lt; characters in it, so that\n * the syntactic structure of the surrounding HTML is not affected.\n *\n * @param {!Const} styleSheet A compile-time-constant string from\n * which to create a SafeStyleSheet.\n * @return {!SafeStyleSheet} A SafeStyleSheet object initialized to\n * `styleSheet`.\n */\n static fromConstant(styleSheet) {\n const styleSheetString = Const.unwrap(styleSheet);\n if (styleSheetString.length === 0) {\n return SafeStyleSheet.EMPTY;\n }\n // > is a valid character in CSS selectors and there's no strict need to\n // block it if we already block <.\n assert(\n !contains(styleSheetString, '<'),\n `Forbidden '<' character in style sheet string: ${styleSheetString}`);\n return SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(\n styleSheetString);\n }\n\n /**\n * Returns this SafeStyleSheet's value as a string.\n *\n * IMPORTANT: In code where it is security relevant that an object's type is\n * indeed `SafeStyleSheet`, use `SafeStyleSheet.unwrap`\n * instead of this method. If in doubt, assume that it's security relevant. In\n * particular, note that goog.html functions which return a goog.html type do\n * not guarantee the returned instance is of the right type. For example:\n *\n * <pre>\n * var fakeSafeHtml = new String('fake');\n * fakeSafeHtml.__proto__ = goog.html.SafeHtml.prototype;\n * var newSafeHtml = goog.html.SafeHtml.htmlEscape(fakeSafeHtml);\n * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by\n * // goog.html.SafeHtml.htmlEscape() as fakeSafeHtml\n * // instanceof goog.html.SafeHtml.\n * </pre>\n *\n * @see SafeStyleSheet#unwrap\n * @override\n */\n getTypedStringValue() {\n return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;\n }\n\n /**\n * Performs a runtime check that the provided object is indeed a\n * SafeStyleSheet object, and returns its value.\n *\n * @param {!SafeStyleSheet} safeStyleSheet The object to extract from.\n * @return {string} The safeStyleSheet object's contained string, unless\n * the run-time type check fails. In that case, `unwrap` returns an\n * innocuous string, or, if assertions are enabled, throws\n * `asserts.AssertionError`.\n */\n static unwrap(safeStyleSheet) {\n // Perform additional Run-time type-checking to ensure that\n // safeStyleSheet is indeed an instance of the expected type. This\n // provides some additional protection against security bugs due to\n // application code that disables type checks.\n // Specifically, the following checks are performed:\n // 1. The object is an instance of the expected type.\n // 2. The object is not an instance of a subclass.\n if (safeStyleSheet instanceof SafeStyleSheet &&\n safeStyleSheet.constructor === SafeStyleSheet) {\n return safeStyleSheet.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;\n } else {\n fail(\n 'expected object of type SafeStyleSheet, got \\'' + safeStyleSheet +\n '\\' of type ' + goog.typeOf(safeStyleSheet));\n return 'type_error:SafeStyleSheet';\n }\n }\n\n /**\n * Package-internal utility method to create SafeStyleSheet instances.\n *\n * @param {string} styleSheet The string to initialize the SafeStyleSheet\n * object with.\n * @return {!SafeStyleSheet} The initialized SafeStyleSheet object.\n * @package\n */\n static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(styleSheet) {\n return new SafeStyleSheet(styleSheet, CONSTRUCTOR_TOKEN_PRIVATE);\n }\n}\n\n/**\n * A SafeStyleSheet instance corresponding to the empty string.\n * @const {!SafeStyleSheet}\n */\nSafeStyleSheet.EMPTY =\n SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse('');\n\n\nexports = SafeStyleSheet;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\ngoog.provide('goog.dom.HtmlElement');\n\n\n\n/**\n * This subclass of HTMLElement is used when only a HTMLElement is possible and\n * not any of its subclasses. Normally, a type can refer to an instance of\n * itself or an instance of any subtype. More concretely, if HTMLElement is used\n * then the compiler must assume that it might still be e.g. HTMLScriptElement.\n * With this, the type check knows that it couldn't be any special element.\n *\n * @constructor\n * @extends {HTMLElement}\n */\ngoog.dom.HtmlElement = function() {};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Defines the goog.dom.TagName class. Its constants enumerate\n * all HTML tag names specified in either the W3C HTML 4.01 index of elements\n * or the HTML5.1 specification.\n *\n * References:\n * https://www.w3.org/TR/html401/index/elements.html\n * https://www.w3.org/TR/html51/dom.html#elements\n */\ngoog.provide('goog.dom.TagName');\n\ngoog.require('goog.dom.HtmlElement');\n\n/**\n * A tag name for an HTML element.\n *\n * This type is a lie. All instances are actually strings. Do not implement it.\n *\n * It exists because we need an object type to host the template type parameter,\n * and that's not possible with literal or enum types. It is a record type so\n * that runtime type checks don't try to validate the lie.\n *\n * @template T\n * @record\n */\ngoog.dom.TagName = class {\n /**\n * Cast a string into the tagname for the associated constructor.\n *\n * @template T\n * @param {string} name\n * @param {function(new:T, ...?)} type\n * @return {!goog.dom.TagName<T>}\n */\n static cast(name, type) {\n return /** @type {?} */ (name);\n }\n\n /** @suppress {unusedPrivateMembers} */\n constructor() {\n /** @private {null} */\n this.googDomTagName_doNotImplementThisTypeOrElse_;\n\n /** @private {T} */\n this.ensureTypeScriptRemembersTypeT_;\n }\n\n /**\n * Appease the compiler that instances are stringafiable for the\n * purpose of being a dictionary key.\n *\n * Never implemented; always backed by `String::toString`.\n *\n * @override\n * @return {string}\n */\n toString() {}\n};\n\n\n\n/** @const {!goog.dom.TagName<!HTMLAnchorElement>} */\ngoog.dom.TagName.A = /** @type {?} */ ('A');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.ABBR = /** @type {?} */ ('ABBR');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.ACRONYM = /** @type {?} */ ('ACRONYM');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.ADDRESS = /** @type {?} */ ('ADDRESS');\n\n/** @const {!goog.dom.TagName<!HTMLAppletElement>} */\ngoog.dom.TagName.APPLET = /** @type {?} */ ('APPLET');\n\n/** @const {!goog.dom.TagName<!HTMLAreaElement>} */\ngoog.dom.TagName.AREA = /** @type {?} */ ('AREA');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.ARTICLE = /** @type {?} */ ('ARTICLE');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.ASIDE = /** @type {?} */ ('ASIDE');\n\n/** @const {!goog.dom.TagName<!HTMLAudioElement>} */\ngoog.dom.TagName.AUDIO = /** @type {?} */ ('AUDIO');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.B = /** @type {?} */ ('B');\n\n/** @const {!goog.dom.TagName<!HTMLBaseElement>} */\ngoog.dom.TagName.BASE = /** @type {?} */ ('BASE');\n\n/** @const {!goog.dom.TagName<!HTMLBaseFontElement>} */\ngoog.dom.TagName.BASEFONT = /** @type {?} */ ('BASEFONT');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.BDI = /** @type {?} */ ('BDI');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.BDO = /** @type {?} */ ('BDO');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.BIG = /** @type {?} */ ('BIG');\n\n/** @const {!goog.dom.TagName<!HTMLQuoteElement>} */\ngoog.dom.TagName.BLOCKQUOTE = /** @type {?} */ ('BLOCKQUOTE');\n\n/** @const {!goog.dom.TagName<!HTMLBodyElement>} */\ngoog.dom.TagName.BODY = /** @type {?} */ ('BODY');\n\n/** @const {!goog.dom.TagName<!HTMLBRElement>} */\ngoog.dom.TagName.BR = /** @type {?} */ ('BR');\n\n/** @const {!goog.dom.TagName<!HTMLButtonElement>} */\ngoog.dom.TagName.BUTTON = /** @type {?} */ ('BUTTON');\n\n/** @const {!goog.dom.TagName<!HTMLCanvasElement>} */\ngoog.dom.TagName.CANVAS = /** @type {?} */ ('CANVAS');\n\n/** @const {!goog.dom.TagName<!HTMLTableCaptionElement>} */\ngoog.dom.TagName.CAPTION = /** @type {?} */ ('CAPTION');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.CENTER = /** @type {?} */ ('CENTER');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.CITE = /** @type {?} */ ('CITE');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.CODE = /** @type {?} */ ('CODE');\n\n/** @const {!goog.dom.TagName<!HTMLTableColElement>} */\ngoog.dom.TagName.COL = /** @type {?} */ ('COL');\n\n/** @const {!goog.dom.TagName<!HTMLTableColElement>} */\ngoog.dom.TagName.COLGROUP = /** @type {?} */ ('COLGROUP');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.COMMAND = /** @type {?} */ ('COMMAND');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.DATA = /** @type {?} */ ('DATA');\n\n/** @const {!goog.dom.TagName<!HTMLDataListElement>} */\ngoog.dom.TagName.DATALIST = /** @type {?} */ ('DATALIST');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.DD = /** @type {?} */ ('DD');\n\n/** @const {!goog.dom.TagName<!HTMLModElement>} */\ngoog.dom.TagName.DEL = /** @type {?} */ ('DEL');\n\n/** @const {!goog.dom.TagName<!HTMLDetailsElement>} */\ngoog.dom.TagName.DETAILS = /** @type {?} */ ('DETAILS');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.DFN = /** @type {?} */ ('DFN');\n\n/** @const {!goog.dom.TagName<!HTMLDialogElement>} */\ngoog.dom.TagName.DIALOG = /** @type {?} */ ('DIALOG');\n\n/** @const {!goog.dom.TagName<!HTMLDirectoryElement>} */\ngoog.dom.TagName.DIR = /** @type {?} */ ('DIR');\n\n/** @const {!goog.dom.TagName<!HTMLDivElement>} */\ngoog.dom.TagName.DIV = /** @type {?} */ ('DIV');\n\n/** @const {!goog.dom.TagName<!HTMLDListElement>} */\ngoog.dom.TagName.DL = /** @type {?} */ ('DL');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.DT = /** @type {?} */ ('DT');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.EM = /** @type {?} */ ('EM');\n\n/** @const {!goog.dom.TagName<!HTMLEmbedElement>} */\ngoog.dom.TagName.EMBED = /** @type {?} */ ('EMBED');\n\n/** @const {!goog.dom.TagName<!HTMLFieldSetElement>} */\ngoog.dom.TagName.FIELDSET = /** @type {?} */ ('FIELDSET');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.FIGCAPTION = /** @type {?} */ ('FIGCAPTION');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.FIGURE = /** @type {?} */ ('FIGURE');\n\n/** @const {!goog.dom.TagName<!HTMLFontElement>} */\ngoog.dom.TagName.FONT = /** @type {?} */ ('FONT');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.FOOTER = /** @type {?} */ ('FOOTER');\n\n/** @const {!goog.dom.TagName<!HTMLFormElement>} */\ngoog.dom.TagName.FORM = /** @type {?} */ ('FORM');\n\n/** @const {!goog.dom.TagName<!HTMLFrameElement>} */\ngoog.dom.TagName.FRAME = /** @type {?} */ ('FRAME');\n\n/** @const {!goog.dom.TagName<!HTMLFrameSetElement>} */\ngoog.dom.TagName.FRAMESET = /** @type {?} */ ('FRAMESET');\n\n/** @const {!goog.dom.TagName<!HTMLHeadingElement>} */\ngoog.dom.TagName.H1 = /** @type {?} */ ('H1');\n\n/** @const {!goog.dom.TagName<!HTMLHeadingElement>} */\ngoog.dom.TagName.H2 = /** @type {?} */ ('H2');\n\n/** @const {!goog.dom.TagName<!HTMLHeadingElement>} */\ngoog.dom.TagName.H3 = /** @type {?} */ ('H3');\n\n/** @const {!goog.dom.TagName<!HTMLHeadingElement>} */\ngoog.dom.TagName.H4 = /** @type {?} */ ('H4');\n\n/** @const {!goog.dom.TagName<!HTMLHeadingElement>} */\ngoog.dom.TagName.H5 = /** @type {?} */ ('H5');\n\n/** @const {!goog.dom.TagName<!HTMLHeadingElement>} */\ngoog.dom.TagName.H6 = /** @type {?} */ ('H6');\n\n/** @const {!goog.dom.TagName<!HTMLHeadElement>} */\ngoog.dom.TagName.HEAD = /** @type {?} */ ('HEAD');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.HEADER = /** @type {?} */ ('HEADER');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.HGROUP = /** @type {?} */ ('HGROUP');\n\n/** @const {!goog.dom.TagName<!HTMLHRElement>} */\ngoog.dom.TagName.HR = /** @type {?} */ ('HR');\n\n/** @const {!goog.dom.TagName<!HTMLHtmlElement>} */\ngoog.dom.TagName.HTML = /** @type {?} */ ('HTML');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.I = /** @type {?} */ ('I');\n\n/** @const {!goog.dom.TagName<!HTMLIFrameElement>} */\ngoog.dom.TagName.IFRAME = /** @type {?} */ ('IFRAME');\n\n/** @const {!goog.dom.TagName<!HTMLImageElement>} */\ngoog.dom.TagName.IMG = /** @type {?} */ ('IMG');\n\n/** @const {!goog.dom.TagName<!HTMLInputElement>} */\ngoog.dom.TagName.INPUT = /** @type {?} */ ('INPUT');\n\n/** @const {!goog.dom.TagName<!HTMLModElement>} */\ngoog.dom.TagName.INS = /** @type {?} */ ('INS');\n\n/** @const {!goog.dom.TagName<!HTMLIsIndexElement>} */\ngoog.dom.TagName.ISINDEX = /** @type {?} */ ('ISINDEX');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.KBD = /** @type {?} */ ('KBD');\n\n// HTMLKeygenElement is deprecated.\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.KEYGEN = /** @type {?} */ ('KEYGEN');\n\n/** @const {!goog.dom.TagName<!HTMLLabelElement>} */\ngoog.dom.TagName.LABEL = /** @type {?} */ ('LABEL');\n\n/** @const {!goog.dom.TagName<!HTMLLegendElement>} */\ngoog.dom.TagName.LEGEND = /** @type {?} */ ('LEGEND');\n\n/** @const {!goog.dom.TagName<!HTMLLIElement>} */\ngoog.dom.TagName.LI = /** @type {?} */ ('LI');\n\n/** @const {!goog.dom.TagName<!HTMLLinkElement>} */\ngoog.dom.TagName.LINK = /** @type {?} */ ('LINK');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.MAIN = /** @type {?} */ ('MAIN');\n\n/** @const {!goog.dom.TagName<!HTMLMapElement>} */\ngoog.dom.TagName.MAP = /** @type {?} */ ('MAP');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.MARK = /** @type {?} */ ('MARK');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.MATH = /** @type {?} */ ('MATH');\n\n/** @const {!goog.dom.TagName<!HTMLMenuElement>} */\ngoog.dom.TagName.MENU = /** @type {?} */ ('MENU');\n\n/** @const {!goog.dom.TagName<!HTMLMenuItemElement>} */\ngoog.dom.TagName.MENUITEM = /** @type {?} */ ('MENUITEM');\n\n/** @const {!goog.dom.TagName<!HTMLMetaElement>} */\ngoog.dom.TagName.META = /** @type {?} */ ('META');\n\n/** @const {!goog.dom.TagName<!HTMLMeterElement>} */\ngoog.dom.TagName.METER = /** @type {?} */ ('METER');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.NAV = /** @type {?} */ ('NAV');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.NOFRAMES = /** @type {?} */ ('NOFRAMES');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.NOSCRIPT = /** @type {?} */ ('NOSCRIPT');\n\n/** @const {!goog.dom.TagName<!HTMLObjectElement>} */\ngoog.dom.TagName.OBJECT = /** @type {?} */ ('OBJECT');\n\n/** @const {!goog.dom.TagName<!HTMLOListElement>} */\ngoog.dom.TagName.OL = /** @type {?} */ ('OL');\n\n/** @const {!goog.dom.TagName<!HTMLOptGroupElement>} */\ngoog.dom.TagName.OPTGROUP = /** @type {?} */ ('OPTGROUP');\n\n/** @const {!goog.dom.TagName<!HTMLOptionElement>} */\ngoog.dom.TagName.OPTION = /** @type {?} */ ('OPTION');\n\n/** @const {!goog.dom.TagName<!HTMLOutputElement>} */\ngoog.dom.TagName.OUTPUT = /** @type {?} */ ('OUTPUT');\n\n/** @const {!goog.dom.TagName<!HTMLParagraphElement>} */\ngoog.dom.TagName.P = /** @type {?} */ ('P');\n\n/** @const {!goog.dom.TagName<!HTMLParamElement>} */\ngoog.dom.TagName.PARAM = /** @type {?} */ ('PARAM');\n\n/** @const {!goog.dom.TagName<!HTMLPictureElement>} */\ngoog.dom.TagName.PICTURE = /** @type {?} */ ('PICTURE');\n\n/** @const {!goog.dom.TagName<!HTMLPreElement>} */\ngoog.dom.TagName.PRE = /** @type {?} */ ('PRE');\n\n/** @const {!goog.dom.TagName<!HTMLProgressElement>} */\ngoog.dom.TagName.PROGRESS = /** @type {?} */ ('PROGRESS');\n\n/** @const {!goog.dom.TagName<!HTMLQuoteElement>} */\ngoog.dom.TagName.Q = /** @type {?} */ ('Q');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.RP = /** @type {?} */ ('RP');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.RT = /** @type {?} */ ('RT');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.RTC = /** @type {?} */ ('RTC');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.RUBY = /** @type {?} */ ('RUBY');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.S = /** @type {?} */ ('S');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.SAMP = /** @type {?} */ ('SAMP');\n\n/** @const {!goog.dom.TagName<!HTMLScriptElement>} */\ngoog.dom.TagName.SCRIPT = /** @type {?} */ ('SCRIPT');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.SECTION = /** @type {?} */ ('SECTION');\n\n/** @const {!goog.dom.TagName<!HTMLSelectElement>} */\ngoog.dom.TagName.SELECT = /** @type {?} */ ('SELECT');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.SMALL = /** @type {?} */ ('SMALL');\n\n/** @const {!goog.dom.TagName<!HTMLSourceElement>} */\ngoog.dom.TagName.SOURCE = /** @type {?} */ ('SOURCE');\n\n/** @const {!goog.dom.TagName<!HTMLSpanElement>} */\ngoog.dom.TagName.SPAN = /** @type {?} */ ('SPAN');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.STRIKE = /** @type {?} */ ('STRIKE');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.STRONG = /** @type {?} */ ('STRONG');\n\n/** @const {!goog.dom.TagName<!HTMLStyleElement>} */\ngoog.dom.TagName.STYLE = /** @type {?} */ ('STYLE');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.SUB = /** @type {?} */ ('SUB');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.SUMMARY = /** @type {?} */ ('SUMMARY');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.SUP = /** @type {?} */ ('SUP');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.SVG = /** @type {?} */ ('SVG');\n\n/** @const {!goog.dom.TagName<!HTMLTableElement>} */\ngoog.dom.TagName.TABLE = /** @type {?} */ ('TABLE');\n\n/** @const {!goog.dom.TagName<!HTMLTableSectionElement>} */\ngoog.dom.TagName.TBODY = /** @type {?} */ ('TBODY');\n\n/** @const {!goog.dom.TagName<!HTMLTableCellElement>} */\ngoog.dom.TagName.TD = /** @type {?} */ ('TD');\n\n/** @const {!goog.dom.TagName<!HTMLTemplateElement>} */\ngoog.dom.TagName.TEMPLATE = /** @type {?} */ ('TEMPLATE');\n\n/** @const {!goog.dom.TagName<!HTMLTextAreaElement>} */\ngoog.dom.TagName.TEXTAREA = /** @type {?} */ ('TEXTAREA');\n\n/** @const {!goog.dom.TagName<!HTMLTableSectionElement>} */\ngoog.dom.TagName.TFOOT = /** @type {?} */ ('TFOOT');\n\n/** @const {!goog.dom.TagName<!HTMLTableCellElement>} */\ngoog.dom.TagName.TH = /** @type {?} */ ('TH');\n\n/** @const {!goog.dom.TagName<!HTMLTableSectionElement>} */\ngoog.dom.TagName.THEAD = /** @type {?} */ ('THEAD');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.TIME = /** @type {?} */ ('TIME');\n\n/** @const {!goog.dom.TagName<!HTMLTitleElement>} */\ngoog.dom.TagName.TITLE = /** @type {?} */ ('TITLE');\n\n/** @const {!goog.dom.TagName<!HTMLTableRowElement>} */\ngoog.dom.TagName.TR = /** @type {?} */ ('TR');\n\n/** @const {!goog.dom.TagName<!HTMLTrackElement>} */\ngoog.dom.TagName.TRACK = /** @type {?} */ ('TRACK');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.TT = /** @type {?} */ ('TT');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.U = /** @type {?} */ ('U');\n\n/** @const {!goog.dom.TagName<!HTMLUListElement>} */\ngoog.dom.TagName.UL = /** @type {?} */ ('UL');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.VAR = /** @type {?} */ ('VAR');\n\n/** @const {!goog.dom.TagName<!HTMLVideoElement>} */\ngoog.dom.TagName.VIDEO = /** @type {?} */ ('VIDEO');\n\n/** @const {!goog.dom.TagName<!goog.dom.HtmlElement>} */\ngoog.dom.TagName.WBR = /** @type {?} */ ('WBR');\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Defines for goog.labs.userAgent.\n */\n\ngoog.module('goog.labs.userAgent');\ngoog.module.declareLegacyNamespace();\n\n/**\n * @define {string} Optional runtime override for the USE_CLIENT_HINTS flag.\n * If this is set (for example, to 'foo.bar') then any value of USE_CLIENT_HINTS\n * will be overridden by `globalThis.foo.bar` if it is non-null.\n * This flag will be removed in December 2021.\n */\nconst USE_CLIENT_HINTS_OVERRIDE =\n goog.define('goog.labs.userAgent.USE_CLIENT_HINTS_OVERRIDE', '');\n\n/**\n * @define {boolean} If true, use navigator.userAgentData\n * TODO(user) Flip flag in 2021/12.\n */\nconst USE_CLIENT_HINTS =\n goog.define('goog.labs.userAgent.USE_CLIENT_HINTS', false);\n\nlet forceClientHintsInTests = false;\n\n/**\n * Sets whether to use client hints APIs in tests for codepaths that\n * - were originally implemented as checks against the navigator.userAgent\n * string.\n * - have an alternative implementation that uses Client Hints APIs.\n *\n * See the jsdoc on useClientHints for cases where this flag will be\n * ineffective, and the Client Hints APIs would be used regardless.\n * DO NOT call this function in production code - it will cause de-optimization.\n * @param {boolean} use Whether or not to use Client Hints API codepaths in\n * goog.labs.useragent.* modules.\n */\nexports.setUseClientHintsForTesting = (use) => {\n forceClientHintsInTests = use;\n};\n\n/** @const {boolean} */\nconst useClientHintsRuntimeOverride = USE_CLIENT_HINTS_OVERRIDE ?\n !!goog.getObjectByName(USE_CLIENT_HINTS_OVERRIDE) :\n false;\n\n/**\n * Whether to use UserAgent-Client Hints API surfaces in parts of the\n * labs.userAgent package that previously only relied on the navigator.userAgent\n * string. Newer labs.userAgent API surfaces may ignore the result of this\n * function as they are considered opt-in API surfaces.\n * @const {function():boolean}\n */\nexports.useClientHints = () => {\n return USE_CLIENT_HINTS || useClientHintsRuntimeOverride ||\n forceClientHintsInTests;\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Utilities used by goog.labs.userAgent tools. These functions\n * should not be used outside of goog.labs.userAgent.*.\n *\n */\n\ngoog.module('goog.labs.userAgent.util');\ngoog.module.declareLegacyNamespace();\n\nconst {caseInsensitiveContains, contains} = goog.require('goog.string.internal');\nconst {useClientHints} = goog.require('goog.labs.userAgent');\n\n/**\n * @const {boolean} If true, use navigator.userAgentData without check.\n * TODO(user): FEATURESET_YEAR >= 2023 if it supports mobile and all the\n * brands we need. See https://caniuse.com/mdn-api_navigator_useragentdata.\n */\nconst ASSUME_CLIENT_HINTS_SUPPORT = false;\n\n/**\n * Gets the native userAgent string from navigator if it exists.\n * If navigator or navigator.userAgent string is missing, returns an empty\n * string.\n * @return {string}\n */\nfunction getNativeUserAgentString() {\n const navigator = getNavigator();\n if (navigator) {\n const userAgent = navigator.userAgent;\n if (userAgent) {\n return userAgent;\n }\n }\n return '';\n}\n\n/**\n * Gets the native userAgentData object from navigator if it exists.\n * If navigator.userAgentData object is missing returns null.\n * @return {?NavigatorUAData}\n */\nfunction getNativeUserAgentData() {\n const navigator = getNavigator();\n // TODO(user): Use navigator?.userAgent ?? null once it's supported.\n if (navigator) {\n return navigator.userAgentData || null;\n }\n return null;\n}\n\n/**\n * Getter for the native navigator.\n * @return {!Navigator}\n */\nfunction getNavigator() {\n return goog.global.navigator;\n}\n\n/**\n * A possible override for applications which wish to not check\n * navigator.userAgent but use a specified value for detection instead.\n * @type {?string}\n */\nlet userAgentInternal = null;\n\n/**\n * A possible override for applications which wish to not check\n * navigator.userAgentData but use a specified value for detection instead.\n * @type {?NavigatorUAData}\n */\nlet userAgentDataInternal = getNativeUserAgentData();\n\n/**\n * Override the user agent string with the given value.\n * This should only be used for testing within the goog.labs.userAgent\n * namespace.\n * Pass `null` to use the native browser object instead.\n * @param {?string=} userAgent The userAgent override.\n * @return {void}\n */\nfunction setUserAgent(userAgent = undefined) {\n userAgentInternal =\n typeof userAgent === 'string' ? userAgent : getNativeUserAgentString();\n}\n\n/** @return {string} The user agent string. */\nfunction getUserAgent() {\n return userAgentInternal == null ? getNativeUserAgentString() :\n userAgentInternal;\n}\n\n/**\n * Override the user agent data object with the given value.\n * This should only be used for testing within the goog.labs.userAgent\n * namespace.\n * Pass `null` to specify the absence of userAgentData. Note that this behavior\n * is different from setUserAgent.\n * @param {?NavigatorUAData} userAgentData The userAgentData override.\n */\nfunction setUserAgentData(userAgentData) {\n userAgentDataInternal = userAgentData;\n}\n\n/**\n * If the user agent data object was overridden using setUserAgentData,\n * reset it so that it uses the native browser object instead, if it exists.\n */\nfunction resetUserAgentData() {\n userAgentDataInternal = getNativeUserAgentData();\n}\n\n/** @return {?NavigatorUAData} Navigator.userAgentData if exist */\nfunction getUserAgentData() {\n return userAgentDataInternal;\n}\n\n/**\n * Checks if any string in userAgentData.brands matches str.\n * Returns false if userAgentData is not supported.\n * @param {string} str\n * @return {boolean} Whether any brand string from userAgentData contains the\n * given string.\n */\nfunction matchUserAgentDataBrand(str) {\n if (!useClientHints()) return false;\n const data = getUserAgentData();\n if (!data) return false;\n return data.brands.some(({brand}) => brand && contains(brand, str));\n}\n\n/**\n * @param {string} str\n * @return {boolean} Whether the user agent contains the given string.\n */\nfunction matchUserAgent(str) {\n const userAgent = getUserAgent();\n return contains(userAgent, str);\n}\n\n/**\n * @param {string} str\n * @return {boolean} Whether the user agent contains the given string, ignoring\n * case.\n */\nfunction matchUserAgentIgnoreCase(str) {\n const userAgent = getUserAgent();\n return caseInsensitiveContains(userAgent, str);\n}\n\n/**\n * Parses the user agent into tuples for each section.\n * @param {string} userAgent\n * @return {!Array<!Array<string>>} Tuples of key, version, and the contents of\n * the parenthetical.\n */\nfunction extractVersionTuples(userAgent) {\n // Matches each section of a user agent string.\n // Example UA:\n // Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us)\n // AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405\n // This has three version tuples: Mozilla, AppleWebKit, and Mobile.\n\n const versionRegExp = new RegExp(\n // Key. Note that a key may have a space.\n // (i.e. 'Mobile Safari' in 'Mobile Safari/5.0')\n '([A-Z][\\\\w ]+)' +\n\n '/' + // slash\n '([^\\\\s]+)' + // version (i.e. '5.0b')\n '\\\\s*' + // whitespace\n '(?:\\\\((.*?)\\\\))?', // parenthetical info. parentheses not matched.\n 'g');\n\n const data = [];\n let match;\n\n // Iterate and collect the version tuples. Each iteration will be the\n // next regex match.\n while (match = versionRegExp.exec(userAgent)) {\n data.push([\n match[1], // key\n match[2], // value\n // || undefined as this is not undefined in IE7 and IE8\n match[3] || undefined // info\n ]);\n }\n\n return data;\n}\n\nexports = {\n ASSUME_CLIENT_HINTS_SUPPORT,\n extractVersionTuples,\n getNativeUserAgentString,\n getUserAgent,\n getUserAgentData,\n matchUserAgent,\n matchUserAgentDataBrand,\n matchUserAgentIgnoreCase,\n resetUserAgentData,\n setUserAgent,\n setUserAgentData,\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Provides helper classes and objects to work with High Entropy\n * user agent values.\n */\n\ngoog.module('goog.labs.userAgent.highEntropy.highEntropyValue');\n\nconst util = goog.require('goog.labs.userAgent.util');\nconst {compareVersions} = goog.require('goog.string.internal');\n\n/**\n * Represents a value that can be asynchronously loaded.\n * @interface\n * @template VALUE_TYPE\n */\nclass AsyncValue {\n /**\n * Get the value represented by this AsyncValue instance, if it was\n * previously requested.\n * @return {VALUE_TYPE|undefined}\n */\n getIfLoaded() {}\n\n /**\n * Request the value represented by this AsyncValue instance.\n * @return {!Promise<VALUE_TYPE>}\n */\n load() {}\n}\nexports.AsyncValue = AsyncValue;\n\n/**\n * Represents a high-entropy value.\n * High-entropy values must be specifically requested from the Promise-based\n * Client Hints API.\n * @template VALUE_TYPE The type of the value wrapped by this HighEntropyValue\n * instance.\n * @implements {AsyncValue<VALUE_TYPE>}\n */\nclass HighEntropyValue {\n /**\n * Constructs a new HighEntropyValue instance.\n * @param {string} key The name of the high-entropy value, used when\n * requesting it from the browser.\n */\n constructor(key) {\n /**\n * The key used to request the high-entropy value from the browser.\n * @const {string}\n * @private\n */\n this.key_ = key;\n\n /**\n * The value represented by this HighEntropyValue instance. If it hasn't\n * been successfully requested yet, its value will be undefined.\n * @type {VALUE_TYPE|undefined}\n * @protected\n */\n this.value_ = undefined;\n\n /**\n * The high-entropy value request. If it hasn't been requested yet, this\n * value will be undefined.\n * @type {!Promise<VALUE_TYPE>|undefined}\n * @private\n */\n this.promise_ = undefined;\n\n this.pending_ = false;\n }\n\n /**\n * @return {VALUE_TYPE|undefined}\n * @override\n */\n getIfLoaded() {\n const userAgentData = util.getUserAgentData();\n if (!userAgentData) {\n return undefined;\n }\n return this.value_;\n }\n\n /**\n * @return {!Promise<VALUE_TYPE>}\n * @override\n */\n async load() {\n const userAgentData = util.getUserAgentData();\n if (!userAgentData) return undefined;\n if (!this.promise_) {\n this.pending_ = true;\n this.promise_ = (async () => {\n try {\n const dataValues =\n await userAgentData.getHighEntropyValues([this.key_]);\n this.value_ =\n /** @type {!Object<string, VALUE_TYPE>} */ (\n dataValues)[this.key_];\n return this.value_;\n } finally {\n this.pending_ = false;\n }\n })();\n }\n return await this.promise_;\n }\n\n resetForTesting() {\n if (this.pending_) {\n // There is a pending request that may set this.value_ at any time.\n // Therefore, it can't be guaranteed that this object is actually in a\n // clean state.\n throw new Error('Unsafe call to resetForTesting');\n }\n this.promise_ = undefined;\n this.value_ = undefined;\n this.pending_ = false;\n }\n}\nexports.HighEntropyValue = HighEntropyValue;\n\n/**\n * An object that wraps a version string.\n * This allows for easy version comparisons.\n */\nclass Version {\n /**\n * @param {string} versionString The underlying version string.\n */\n constructor(versionString) {\n /**\n * @const {string}\n * @private\n */\n this.versionString_ = versionString;\n }\n\n /**\n * Returns the underlying version string.\n * @return {string}\n */\n toVersionStringForLogging() {\n return this.versionString_;\n }\n\n /**\n * Returns true if the underlying version string is equal to or greater than\n * the given version.\n * @param {string} version The version to compare against.\n * @return {boolean}\n */\n isAtLeast(version) {\n return compareVersions(this.versionString_, version) >= 0;\n }\n}\nexports.Version = Version;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Provides access to high-entropy user agent values.\n */\n\ngoog.module('goog.labs.userAgent.highEntropy.highEntropyData');\n\nconst {HighEntropyValue} = goog.require('goog.labs.userAgent.highEntropy.highEntropyValue');\n\n/**\n * @type {!HighEntropyValue<!Array<!NavigatorUABrandVersion>|undefined>}\n */\nconst fullVersionList = new HighEntropyValue('fullVersionList');\nexports.fullVersionList = fullVersionList;\n\n/**\n * @type {!HighEntropyValue<string>}\n */\nconst platformVersion = new HighEntropyValue('platformVersion');\nexports.platformVersion = platformVersion;","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Closure user agent detection (Browser).\n * @see <a href=\"http://www.useragentstring.com/\">User agent strings</a>\n * For more information on rendering engine, platform, or device see the other\n * sub-namespaces in goog.labs.userAgent, goog.labs.userAgent.platform,\n * goog.labs.userAgent.device respectively.)\n */\n\ngoog.module('goog.labs.userAgent.browser');\ngoog.module.declareLegacyNamespace();\n\nconst util = goog.require('goog.labs.userAgent.util');\nconst {AsyncValue, Version} = goog.require('goog.labs.userAgent.highEntropy.highEntropyValue');\nconst {assert, assertExists} = goog.require('goog.asserts');\nconst {compareVersions} = goog.require('goog.string.internal');\nconst {fullVersionList} = goog.require('goog.labs.userAgent.highEntropy.highEntropyData');\nconst {useClientHints} = goog.require('goog.labs.userAgent');\n\n// TODO(nnaze): Refactor to remove excessive exclusion logic in matching\n// functions.\n\n/**\n * A browser brand represents an opaque string that is used for making\n * brand-specific version checks in userAgentData.\n * @enum {string}\n */\nconst Brand = {\n /**\n * The browser brand for Android Browser.\n * Do not depend on the value of this string. Because Android Browser has not\n * implemented userAgentData yet, the value of this string is not guaranteed\n * to stay the same in future revisions.\n */\n ANDROID_BROWSER: 'Android Browser',\n /**\n * The browser brand for Chromium, including Chromium-based Edge and Opera.\n */\n CHROMIUM: 'Chromium',\n /**\n * The browser brand for Edge.\n * This brand can be used to get the version of both EdgeHTML and\n * Chromium-based Edge.\n */\n EDGE: 'Microsoft Edge',\n /**\n * The browser brand for Firefox.\n * Do not depend on the value of this string. Because Firefox has not\n * implemented userAgentData yet, the value of this string is not guaranteed\n * to stay the same in future revisions.\n */\n FIREFOX: 'Firefox',\n /**\n * The browser brand for Internet Explorer.\n * Do not depend on the value of this string. Because IE will never support\n * userAgentData, the value of this string should be treated as opaque (it's\n * used internally for legacy-userAgent fallback).\n */\n IE: 'Internet Explorer',\n /**\n * The browser brand for Opera.\n * This brand can be used to get the version of both Presto- and\n * Chromium-based Opera.\n */\n OPERA: 'Opera',\n /**\n * The browser brand for Safari.\n * Do not depend on the value of this string. Because Safari has not\n * implemented userAgentData yet, the value of this string is not guaranteed\n * to stay the same in future revisions.\n */\n SAFARI: 'Safari',\n /**\n * The browser brand for Silk.\n * See\n * https://docs.aws.amazon.com/silk/latest/developerguide/what-is-silk.html\n * Do not depend on the value of this string. Because Silk does not\n * identify itself in userAgentData yet, the value of this string is not\n * guaranteed to stay the same in future revisions.\n */\n SILK: 'Silk',\n};\nexports.Brand = Brand;\n\n/**\n * @param {boolean=} ignoreClientHintsFlag Iff truthy, the `useClientHints`\n * function will not be called when evaluating if User-Agent Client Hints\n * Brand data can be used. For existing labs.userAgent API surfaces with\n * widespread use, this should be a falsy value so that usage of the Client\n * Hints APIs can be gated behind flags / experiment rollouts.\n * @return {boolean} Whether to use navigator.userAgentData to determine\n * browser's brand.\n */\nfunction useUserAgentDataBrand(ignoreClientHintsFlag = false) {\n if (util.ASSUME_CLIENT_HINTS_SUPPORT) return true;\n // High-entropy API surfaces should not be gated behind the useClientHints\n // check (as in production it is gated behind a define).\n if (!ignoreClientHintsFlag && !useClientHints()) return false;\n const userAgentData = util.getUserAgentData();\n return !!userAgentData && userAgentData.brands.length > 0;\n}\n\n/**\n * @return {boolean} Whether this browser is likely to have the fullVersionList\n * high-entropy Client Hint.\n */\nfunction hasFullVersionList() {\n // https://chromiumdash.appspot.com/commits?commit=1eb643c3057e64ff4d22468432ad16c4cab12879&platform=Linux\n // indicates that for all platforms Chromium 98 shipped this feature.\n // See also\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-CH-UA-Full-Version-List#browser_compatibility\n return isAtLeast(Brand.CHROMIUM, 98);\n}\n\n/**\n * @return {boolean} Whether the user's browser is Opera. Note: Chromium based\n * Opera (Opera 15+) is detected as Chrome to avoid unnecessary special\n * casing.\n */\nfunction matchOpera() {\n if (useUserAgentDataBrand()) {\n // Pre-Chromium Edge doesn't support navigator.userAgentData.\n return false;\n }\n return util.matchUserAgent('Opera');\n}\n\n/** @return {boolean} Whether the user's browser is IE. */\nfunction matchIE() {\n if (useUserAgentDataBrand()) {\n // IE doesn't support navigator.userAgentData.\n return false;\n }\n return util.matchUserAgent('Trident') || util.matchUserAgent('MSIE');\n}\n\n/**\n * @return {boolean} Whether the user's browser is Edge. This refers to\n * EdgeHTML based Edge.\n */\nfunction matchEdgeHtml() {\n if (useUserAgentDataBrand()) {\n // Pre-Chromium Edge doesn't support navigator.userAgentData.\n return false;\n }\n return util.matchUserAgent('Edge');\n}\n\n/** @return {boolean} Whether the user's browser is Chromium based Edge. */\nfunction matchEdgeChromium() {\n if (useUserAgentDataBrand()) {\n return util.matchUserAgentDataBrand(Brand.EDGE);\n }\n return util.matchUserAgent('Edg/');\n}\n\n/** @return {boolean} Whether the user's browser is Chromium based Opera. */\nfunction matchOperaChromium() {\n if (useUserAgentDataBrand()) {\n return util.matchUserAgentDataBrand(Brand.OPERA);\n }\n return util.matchUserAgent('OPR');\n}\n\n/** @return {boolean} Whether the user's browser is Firefox. */\nfunction matchFirefox() {\n // Firefox doesn't support navigator.userAgentData yet, so use\n // navigator.userAgent.\n return util.matchUserAgent('Firefox') || util.matchUserAgent('FxiOS');\n}\n\n/** @return {boolean} Whether the user's browser is Safari. */\nfunction matchSafari() {\n // Apple-based browsers don't support navigator.userAgentData yet, so use\n // navigator.userAgent.\n return util.matchUserAgent('Safari') &&\n !(matchChrome() || matchCoast() || matchOpera() || matchEdgeHtml() ||\n matchEdgeChromium() || matchOperaChromium() || matchFirefox() ||\n isSilk() || util.matchUserAgent('Android'));\n}\n\n/**\n * @return {boolean} Whether the user's browser is Coast (Opera's Webkit-based\n * iOS browser).\n */\nfunction matchCoast() {\n if (useUserAgentDataBrand()) {\n // Coast doesn't support navigator.userAgentData.\n return false;\n }\n return util.matchUserAgent('Coast');\n}\n\n/** @return {boolean} Whether the user's browser is iOS Webview. */\nfunction matchIosWebview() {\n // Apple-based browsers don't support navigator.userAgentData yet, so use\n // navigator.userAgent.\n // iOS Webview does not show up as Chrome or Safari.\n return (util.matchUserAgent('iPad') || util.matchUserAgent('iPhone')) &&\n !matchSafari() && !matchChrome() && !matchCoast() && !matchFirefox() &&\n util.matchUserAgent('AppleWebKit');\n}\n\n/**\n * @return {boolean} Whether the user's browser is any Chromium browser. This\n * returns true for Chrome, Opera 15+, and Edge Chromium.\n */\nfunction matchChrome() {\n if (useUserAgentDataBrand()) {\n return util.matchUserAgentDataBrand(Brand.CHROMIUM);\n }\n return ((util.matchUserAgent('Chrome') || util.matchUserAgent('CriOS')) &&\n !matchEdgeHtml()) ||\n isSilk();\n}\n\n/** @return {boolean} Whether the user's browser is the Android browser. */\nfunction matchAndroidBrowser() {\n // Android can appear in the user agent string for Chrome on Android.\n // This is not the Android standalone browser if it does.\n return util.matchUserAgent('Android') &&\n !(isChrome() || isFirefox() || isOpera() || isSilk());\n}\n\n/** @return {boolean} Whether the user's browser is Opera. */\nconst isOpera = matchOpera;\nexports.isOpera = isOpera;\n\n/** @return {boolean} Whether the user's browser is IE. */\nconst isIE = matchIE;\nexports.isIE = isIE;\n\n/** @return {boolean} Whether the user's browser is EdgeHTML based Edge. */\nconst isEdge = matchEdgeHtml;\nexports.isEdge = isEdge;\n\n/** @return {boolean} Whether the user's browser is Chromium based Edge. */\nconst isEdgeChromium = matchEdgeChromium;\nexports.isEdgeChromium = isEdgeChromium;\n\n/** @return {boolean} Whether the user's browser is Chromium based Opera. */\nconst isOperaChromium = matchOperaChromium;\nexports.isOperaChromium = isOperaChromium;\n\n/** @return {boolean} Whether the user's browser is Firefox. */\nconst isFirefox = matchFirefox;\nexports.isFirefox = isFirefox;\n\n/** @return {boolean} Whether the user's browser is Safari. */\nconst isSafari = matchSafari;\nexports.isSafari = isSafari;\n\n/**\n * @return {boolean} Whether the user's browser is Coast (Opera's Webkit-based\n * iOS browser).\n */\nconst isCoast = matchCoast;\nexports.isCoast = isCoast;\n\n/** @return {boolean} Whether the user's browser is iOS Webview. */\nconst isIosWebview = matchIosWebview;\nexports.isIosWebview = isIosWebview;\n\n/**\n * @return {boolean} Whether the user's browser is any Chromium based browser (\n * Chrome, Blink-based Opera (15+) and Edge Chromium).\n */\nconst isChrome = matchChrome;\nexports.isChrome = isChrome;\n\n/** @return {boolean} Whether the user's browser is the Android browser. */\nconst isAndroidBrowser = matchAndroidBrowser;\nexports.isAndroidBrowser = isAndroidBrowser;\n\n/**\n * For more information, see:\n * http://docs.aws.amazon.com/silk/latest/developerguide/user-agent.html\n * @return {boolean} Whether the user's browser is Silk.\n */\nfunction isSilk() {\n // As of Silk 93, Silk does not identify itself in userAgentData.brands.\n // When Silk changes this behavior, update this method to call\n // matchUserAgentDataBrand (akin to isChrome, etc.)\n return util.matchUserAgent('Silk');\n}\nexports.isSilk = isSilk;\n\n/**\n * A helper function that returns a function mapping a list of candidate\n * version tuple keys to the first version string present under a key.\n * Ex:\n * <code>\n * // Arg extracted from \"Foo/1.2.3 Bar/0.2021\"\n * const mapVersion = createVersionMap([[\"Foo\", \"1.2.3\"], [\"Bar\", \"0.2021\"]]);\n * mapVersion([\"Bar\", \"Foo\"]); // returns \"0.2021\"\n * mapVersion([\"Baz\", \"Foo\"]); // returns \"1.2.3\"\n * mapVersion([\"Baz\", \"???\"]); // returns \"\"\n * </code>\n * @param {!Array<!Array<string>>} versionTuples Version tuples pre-extracted\n * from a user agent string.\n * @return {function(!Array<string>): string} The version string, or empty\n * string if it doesn't exist under the given key.\n */\nfunction createVersionMap(versionTuples) {\n // Construct a map for easy lookup.\n const versionMap = {};\n versionTuples.forEach((tuple) => {\n // Note that the tuple is of length three, but we only care about the\n // first two.\n const key = tuple[0];\n const value = tuple[1];\n versionMap[key] = value;\n });\n\n // Gives the value with the first key it finds, otherwise empty string.\n return (keys) => versionMap[keys.find((key) => key in versionMap)] || '';\n}\n\n/**\n * Returns the browser version.\n *\n * Note that for browsers with multiple brands, this function assumes a primary\n * brand and returns the version for that brand.\n *\n * Additionally, this function is not userAgentData-aware and will return\n * incorrect values when the User Agent string is frozen. The current status of\n * User Agent string freezing is available here:\n * https://www.chromestatus.com/feature/5704553745874944\n *\n * To mitigate both of these potential issues, use\n * getVersionStringForLogging() or fullVersionOf() instead.\n *\n * @return {string} The browser version or empty string if version cannot be\n * determined. Note that for Internet Explorer, this returns the version of\n * the browser, not the version of the rendering engine. (IE 8 in\n * compatibility mode will return 8.0 rather than 7.0. To determine the\n * rendering engine version, look at document.documentMode instead. See\n * http://msdn.microsoft.com/en-us/library/cc196988(v=vs.85).aspx for more\n * details.)\n */\nfunction getVersion() {\n const userAgentString = util.getUserAgent();\n\n // Special case IE since IE's version is inside the parenthesis and\n // without the '/'.\n if (isIE()) {\n return getIEVersion(userAgentString);\n }\n\n const versionTuples = util.extractVersionTuples(userAgentString);\n const lookUpValueWithKeys = createVersionMap(versionTuples);\n\n // Check Opera before Chrome since Opera 15+ has \"Chrome\" in the string.\n // See\n // http://my.opera.com/ODIN/blog/2013/07/15/opera-user-agent-strings-opera-15-and-beyond\n if (isOpera()) {\n // Opera 10 has Version/10.0 but Opera/9.8, so look for \"Version\" first.\n // Opera uses 'OPR' for more recent UAs.\n return lookUpValueWithKeys(['Version', 'Opera']);\n }\n\n // Check Edge before Chrome since it has Chrome in the string.\n if (isEdge()) {\n return lookUpValueWithKeys(['Edge']);\n }\n\n // Check Chromium Edge before Chrome since it has Chrome in the string.\n if (isEdgeChromium()) {\n return lookUpValueWithKeys(['Edg']);\n }\n\n // Check Silk before Chrome since it may have Chrome in its string and be\n // treated as Chrome.\n if (isSilk()) {\n return lookUpValueWithKeys(['Silk']);\n }\n\n if (isChrome()) {\n return lookUpValueWithKeys(['Chrome', 'CriOS', 'HeadlessChrome']);\n }\n\n // Usually products browser versions are in the third tuple after \"Mozilla\"\n // and the engine.\n const tuple = versionTuples[2];\n return tuple && tuple[1] || '';\n}\nexports.getVersion = getVersion;\n\n/**\n * Returns whether the current browser's version is at least as high as the\n * given one.\n *\n * Note that for browsers with multiple brands, this function assumes a primary\n * brand and checks the version for that brand.\n *\n * Additionally, this function is not userAgentData-aware and will return\n * incorrect values when the User Agent string is frozen. The current status of\n * User Agent string freezing is available here:\n * https://www.chromestatus.com/feature/5704553745874944\n *\n * To mitigate both of these potential issues, use isAtLeast()/isAtMost() or\n * fullVersionOf() instead.\n *\n * @param {string|number} version The version to check.\n * @return {boolean} Whether the browser version is higher or the same as the\n * given version.\n * @deprecated Use isAtLeast()/isAtMost() instead.\n */\nfunction isVersionOrHigher(version) {\n return compareVersions(getVersion(), version) >= 0;\n}\nexports.isVersionOrHigher = isVersionOrHigher;\n\n/**\n * A helper function to determine IE version. More information:\n * http://msdn.microsoft.com/en-us/library/ie/bg182625(v=vs.85).aspx#uaString\n * http://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx\n * http://blogs.msdn.com/b/ie/archive/2010/03/23/introducing-ie9-s-user-agent-string.aspx\n * http://blogs.msdn.com/b/ie/archive/2009/01/09/the-internet-explorer-8-user-agent-string-updated-edition.aspx\n * @param {string} userAgent the User-Agent.\n * @return {string}\n */\nfunction getIEVersion(userAgent) {\n // IE11 may identify itself as MSIE 9.0 or MSIE 10.0 due to an IE 11 upgrade\n // bug. Example UA:\n // Mozilla/5.0 (MSIE 9.0; Windows NT 6.1; WOW64; Trident/7.0; rv:11.0)\n // like Gecko.\n // See http://www.whatismybrowser.com/developers/unknown-user-agent-fragments.\n const rv = /rv: *([\\d\\.]*)/.exec(userAgent);\n if (rv && rv[1]) {\n return rv[1];\n }\n\n let version = '';\n const msie = /MSIE +([\\d\\.]+)/.exec(userAgent);\n if (msie && msie[1]) {\n // IE in compatibility mode usually identifies itself as MSIE 7.0; in this\n // case, use the Trident version to determine the version of IE. For more\n // details, see the links above.\n const tridentVersion = /Trident\\/(\\d.\\d)/.exec(userAgent);\n if (msie[1] == '7.0') {\n if (tridentVersion && tridentVersion[1]) {\n switch (tridentVersion[1]) {\n case '4.0':\n version = '8.0';\n break;\n case '5.0':\n version = '9.0';\n break;\n case '6.0':\n version = '10.0';\n break;\n case '7.0':\n version = '11.0';\n break;\n }\n } else {\n version = '7.0';\n }\n } else {\n version = msie[1];\n }\n }\n return version;\n}\n\n/**\n * A helper function to return the navigator.userAgent-supplied full version\n * number of the current browser or an empty string, based on whether the\n * current browser is the one specified.\n * @param {string} browser The brand whose version should be returned.\n * @return {string}\n */\nfunction getFullVersionFromUserAgentString(browser) {\n const userAgentString = util.getUserAgent();\n // Special case IE since IE's version is inside the parenthesis and\n // without the '/'.\n if (browser === Brand.IE) {\n return isIE() ? getIEVersion(userAgentString) : '';\n }\n\n const versionTuples = util.extractVersionTuples(userAgentString);\n const lookUpValueWithKeys = createVersionMap(versionTuples);\n switch (browser) {\n case Brand.OPERA:\n // Opera 10 has Version/10.0 but Opera/9.8, so look for \"Version\"\n // first. Opera uses 'OPR' for more recent UAs.\n if (isOpera()) {\n return lookUpValueWithKeys(['Version', 'Opera']);\n } else if (isOperaChromium()) {\n return lookUpValueWithKeys(['OPR']);\n }\n break;\n case Brand.EDGE:\n if (isEdge()) {\n return lookUpValueWithKeys(['Edge']);\n } else if (isEdgeChromium()) {\n return lookUpValueWithKeys(['Edg']);\n }\n break;\n case Brand.CHROMIUM:\n if (isChrome()) {\n return lookUpValueWithKeys(['Chrome', 'CriOS', 'HeadlessChrome']);\n }\n break;\n }\n\n // For the following browsers, the browser version is in the third tuple after\n // \"Mozilla\" and the engine.\n if ((browser === Brand.FIREFOX && isFirefox()) ||\n (browser === Brand.SAFARI && isSafari()) ||\n (browser === Brand.ANDROID_BROWSER && isAndroidBrowser()) ||\n (browser === Brand.SILK && isSilk())) {\n const tuple = versionTuples[2];\n return tuple && tuple[1] || '';\n }\n\n return '';\n}\n\n/**\n * Returns the major version of the given browser brand, or NaN if the current\n * browser is not the given brand.\n * Note that the major version number may be different depending on which\n * browser is specified. The returned value can be used to make browser version\n * comparisons using comparison operators.\n * @private\n * @param {!Brand} browser The brand whose version should be returned.\n * @return {number} The major version number associated with the current\n * browser under the given brand, or NaN if the current browser doesn't match\n * the given brand.\n */\nfunction versionOf_(browser) {\n let versionParts;\n // Silk currently does not identify itself in its userAgentData.brands array,\n // so if checking its version, always fall back to the user agent string.\n if (useUserAgentDataBrand() && browser !== Brand.SILK) {\n const data = util.getUserAgentData();\n const matchingBrand = data.brands.find(({brand}) => brand === browser);\n if (!matchingBrand || !matchingBrand.version) {\n return NaN;\n }\n versionParts = matchingBrand.version.split('.');\n } else {\n const fullVersion = getFullVersionFromUserAgentString(browser);\n if (fullVersion === '') {\n return NaN;\n }\n versionParts = fullVersion.split('.');\n }\n if (versionParts.length === 0) {\n return NaN;\n }\n const majorVersion = versionParts[0];\n return Number(majorVersion); // Returns NaN if it is not parseable.\n}\n\n/**\n * Returns true if the current browser matches the given brand and is at least\n * the given major version. The major version must be a whole number (i.e.\n * decimals should not be used to represent a minor version).\n * @param {!Brand} brand The brand whose version should be returned.\n * @param {number} majorVersion The major version number to compare against.\n * This must be a whole number.\n * @return {boolean} Whether the current browser both matches the given brand\n * and is at least the given version.\n */\nfunction isAtLeast(brand, majorVersion) {\n assert(\n Math.floor(majorVersion) === majorVersion,\n 'Major version must be an integer');\n return versionOf_(brand) >= majorVersion;\n}\nexports.isAtLeast = isAtLeast;\n\n/**\n * Returns true if the current browser matches the given brand and is at most\n * the given version. The major version must be a whole number (i.e. decimals\n * should not be used to represent a minor version).\n * @param {!Brand} brand The brand whose version should be returned.\n * @param {number} majorVersion The major version number to compare against.\n * This must be a whole number.\n * @return {boolean} Whether the current browser both matches the given brand\n * and is at most the given version.\n */\nfunction isAtMost(brand, majorVersion) {\n assert(\n Math.floor(majorVersion) === majorVersion,\n 'Major version must be an integer');\n return versionOf_(brand) <= majorVersion;\n}\nexports.isAtMost = isAtMost;\n\n/**\n * Loads the high-entropy browser brand/version data and wraps the correct\n * version string in a Version object.\n * @implements {AsyncValue<!Version>}\n */\nclass HighEntropyBrandVersion {\n /**\n * @param {string} brand The brand whose version is retrieved in this\n * container.\n * @param {boolean} useUach Whether to attempt to use the User-Agent Client\n * Hints (UACH) API surface.\n * @param {string} fallbackVersion The fallback version derived from the\n * userAgent string.\n */\n constructor(brand, useUach, fallbackVersion) {\n /** @private @const {string} */\n this.brand_ = brand;\n\n /** @private @const {!Version} */\n this.version_ = new Version(fallbackVersion);\n\n /** @private @const {boolean} */\n this.useUach_ = useUach;\n }\n\n /**\n * @return {!Version|undefined}\n * @override\n */\n getIfLoaded() {\n if (this.useUach_) {\n const loadedVersionList = fullVersionList.getIfLoaded();\n if (loadedVersionList !== undefined) {\n const matchingBrand =\n loadedVersionList.find(({brand}) => this.brand_ === brand);\n // We assumed in fullVersionOf that if the fullVersionList is defined\n // the brands must match. Double-check this here.\n assertExists(matchingBrand);\n return new Version(matchingBrand.version);\n }\n // Fallthrough to fallback on Pre-UACH implementation\n }\n // We want to make sure the loading semantics of the Pre-UACH implementation\n // match those of the UACH implementation. Loading must happen before any\n // data can be retrieved from getIfLoaded.\n // For HighEntropyBrandVersion, loading can either be done by calling #load\n // or by calling the module-local loadFullVersions function.\n if (preUachHasLoaded) {\n return this.version_;\n }\n return;\n }\n\n /**\n * @return {!Promise<!Version>}\n * @override\n */\n async load() {\n if (this.useUach_) {\n const loadedVersionList = await fullVersionList.load();\n if (loadedVersionList !== undefined) {\n const matchingBrand =\n loadedVersionList.find(({brand}) => this.brand_ === brand);\n assertExists(matchingBrand);\n return new Version(matchingBrand.version);\n }\n // Fallthrough to fallback on Pre-UACH implementation\n } else {\n // Await something so that calling load with or without UACH API\n // availability results in waiting at least one macrotask before allowing\n // access to the cached version information.\n await 0;\n }\n // Regardless of whether we are using UACH APIs, we can now allow access to\n // the fallback case\n preUachHasLoaded = true;\n return this.version_;\n }\n}\n\n/**\n * Whether full version data should be considered available when using UACH\n * fallback implementations. This is flipped to true when either\n * loadFullVersions or HighEntropyBrandVersion.prototype.load are called,\n * matching the global singleton semantics of the UACH codepaths.\n */\nlet preUachHasLoaded = false;\n\n/**\n * Requests all full browser versions to be cached. When the returned promise\n * resolves, subsequent calls to `fullVersionOf(...).getIfLoaded()` will return\n * a value.\n *\n * This method should be avoided in favor of directly awaiting\n * `fullVersionOf(...).load()` where it is used.\n *\n * @return {!Promise<void>}\n */\nasync function loadFullVersions() {\n if (useUserAgentDataBrand(true)) {\n await fullVersionList.load();\n }\n preUachHasLoaded = true;\n}\nexports.loadFullVersions = loadFullVersions;\n\n/**\n * Resets module-local caches used by functionality in this module.\n * This is only for use by goog.labs.userAgent.testUtil.resetUserAgent (and\n * labs.userAgent tests).\n * @package\n */\nexports.resetForTesting = () => {\n preUachHasLoaded = false;\n fullVersionList.resetForTesting();\n};\n\n\n/**\n * Returns an object that provides access to the full version string of the\n * current browser -- or undefined, based on whether the current browser matches\n * the requested browser brand. Note that the full version string is a\n * high-entropy value, and must be asynchronously loaded before it can be\n * accessed synchronously.\n * @param {!Brand} browser The brand whose version should be returned.\n * @return {!AsyncValue<!Version>|undefined} An object that can be used\n * to get or load the full version string as a high-entropy value, or\n * undefined if the current browser doesn't match the given brand.\n */\nfunction fullVersionOf(browser) {\n let fallbackVersionString = '';\n // If we are reasonably certain now that the browser we are on has the\n // fullVersionList high-entropy hint, then we can skip computing the fallback\n // value as we won't end up using it.\n if (!hasFullVersionList()) {\n fallbackVersionString = getFullVersionFromUserAgentString(browser);\n }\n // Silk has the UACH API surface, but currently does not identify itself in\n // the userAgentData.brands array. Fallback to using userAgent string version\n // for Silk.\n const useUach = browser !== Brand.SILK && useUserAgentDataBrand(true);\n if (useUach) {\n const data = util.getUserAgentData();\n // Operate under the assumption that the low-entropy and high-entropy lists\n // of brand/version pairs contain an identical set of brands. Therefore, if\n // the low-entropy list doesn't contain the given brand, return undefined.\n if (!data.brands.find(({brand}) => brand === browser)) {\n return undefined;\n }\n } else if (fallbackVersionString === '') {\n return undefined;\n }\n return new HighEntropyBrandVersion(browser, useUach, fallbackVersionString);\n}\nexports.fullVersionOf = fullVersionOf;\n\n\n/**\n * Returns a version string for the current browser or undefined, based on\n * whether the current browser is the one specified.\n * This value should ONLY be used for logging/debugging purposes. Do not use it\n * to branch code paths. For comparing versions, use isAtLeast()/isAtMost() or\n * fullVersionOf() instead.\n * @param {!Brand} browser The brand whose version should be returned.\n * @return {string} The version as a string.\n */\nfunction getVersionStringForLogging(browser) {\n if (useUserAgentDataBrand(true)) {\n const fullVersionObj = fullVersionOf(browser);\n if (fullVersionObj) {\n const fullVersion = fullVersionObj.getIfLoaded();\n if (fullVersion) {\n return fullVersion.toVersionStringForLogging();\n }\n // No full version, return the major version instead.\n const data = util.getUserAgentData();\n const matchingBrand = data.brands.find(({brand}) => brand === browser);\n // Checking for the existence of matchingBrand is not necessary because\n // the existence of fullVersionObj implies that there is already a\n // matching brand.\n assertExists(matchingBrand);\n return matchingBrand.version;\n }\n // If fullVersionObj is undefined, this doesn't mean that the full version\n // is unavailable, but rather that the current browser doesn't match the\n // input `browser` argument.\n return '';\n } else {\n return getFullVersionFromUserAgentString(browser);\n }\n}\nexports.getVersionStringForLogging = getVersionStringForLogging;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Utilities for HTML element tag names.\n */\ngoog.provide('goog.dom.tags');\n\ngoog.require('goog.object');\n\n\n/**\n * The void elements specified by\n * http://www.w3.org/TR/html-markup/syntax.html#void-elements.\n * @const @private {!Object<string, boolean>}\n */\ngoog.dom.tags.VOID_TAGS_ = goog.object.createSet(\n 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input',\n 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr');\n\n\n/**\n * Checks whether the tag is void (with no contents allowed and no legal end\n * tag), for example 'br'.\n * @param {string} tagName The tag name in lower case.\n * @return {boolean}\n */\ngoog.dom.tags.isVoidTag = function(tagName) {\n 'use strict';\n return goog.dom.tags.VOID_TAGS_[tagName] === true;\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n\n/**\n * @fileoverview The SafeHtml type and its builders.\n *\n * TODO(xtof): Link to document stating type contract.\n */\n\ngoog.module('goog.html.SafeHtml');\ngoog.module.declareLegacyNamespace();\n\nconst Const = goog.require('goog.string.Const');\nconst SafeScript = goog.require('goog.html.SafeScript');\nconst SafeStyle = goog.require('goog.html.SafeStyle');\nconst SafeStyleSheet = goog.require('goog.html.SafeStyleSheet');\nconst SafeUrl = goog.require('goog.html.SafeUrl');\nconst TagName = goog.require('goog.dom.TagName');\nconst TrustedResourceUrl = goog.require('goog.html.TrustedResourceUrl');\nconst TypedString = goog.require('goog.string.TypedString');\nconst asserts = goog.require('goog.asserts');\nconst browser = goog.require('goog.labs.userAgent.browser');\nconst googArray = goog.require('goog.array');\nconst googObject = goog.require('goog.object');\nconst internal = goog.require('goog.string.internal');\nconst tags = goog.require('goog.dom.tags');\nconst trustedtypes = goog.require('goog.html.trustedtypes');\n\n\n/**\n * Token used to ensure that object is created only from this file. No code\n * outside of this file can access this token.\n * @type {!Object}\n * @const\n */\nconst CONSTRUCTOR_TOKEN_PRIVATE = {};\n\n/**\n * A string that is safe to use in HTML context in DOM APIs and HTML documents.\n *\n * A SafeHtml is a string-like object that carries the security type contract\n * that its value as a string will not cause untrusted script execution when\n * evaluated as HTML in a browser.\n *\n * Values of this type are guaranteed to be safe to use in HTML contexts,\n * such as, assignment to the innerHTML DOM property, or interpolation into\n * a HTML template in HTML PC_DATA context, in the sense that the use will not\n * result in a Cross-Site-Scripting vulnerability.\n *\n * Instances of this type must be created via the factory methods\n * (`SafeHtml.create`, `SafeHtml.htmlEscape`),\n * etc and not by invoking its constructor. The constructor intentionally takes\n * an extra parameter that cannot be constructed outside of this file and the\n * type is immutable; hence only a default instance corresponding to the empty\n * string can be obtained via constructor invocation.\n *\n * Creating SafeHtml objects HAS SIDE-EFFECTS due to calling Trusted Types Web\n * API.\n *\n * Note that there is no `SafeHtml.fromConstant`. The reason is that\n * the following code would create an unsafe HTML:\n *\n * ```\n * SafeHtml.concat(\n * SafeHtml.fromConstant(Const.from('<script>')),\n * SafeHtml.htmlEscape(userInput),\n * SafeHtml.fromConstant(Const.from('<\\/script>')));\n * ```\n *\n * There's `goog.dom.constHtmlToNode` to create a node from constant strings\n * only.\n *\n * @see SafeHtml.create\n * @see SafeHtml.htmlEscape\n * @final\n * @struct\n * @implements {TypedString}\n */\nclass SafeHtml {\n /**\n * @param {!TrustedHTML|string} value\n * @param {!Object} token package-internal implementation detail.\n */\n constructor(value, token) {\n /**\n * The contained value of this SafeHtml. The field has a purposely ugly\n * name to make (non-compiled) code that attempts to directly access this\n * field stand out.\n * @private {!TrustedHTML|string}\n */\n this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ =\n (token === CONSTRUCTOR_TOKEN_PRIVATE) ? value : '';\n\n /**\n * @override\n * @const {boolean}\n */\n this.implementsGoogStringTypedString = true;\n }\n\n\n /**\n * Returns this SafeHtml's value as string.\n *\n * IMPORTANT: In code where it is security relevant that an object's type is\n * indeed `SafeHtml`, use `SafeHtml.unwrap` instead of\n * this method. If in doubt, assume that it's security relevant. In\n * particular, note that goog.html functions which return a goog.html type do\n * not guarantee that the returned instance is of the right type. For example:\n *\n * <pre>\n * var fakeSafeHtml = new String('fake');\n * fakeSafeHtml.__proto__ = SafeHtml.prototype;\n * var newSafeHtml = SafeHtml.htmlEscape(fakeSafeHtml);\n * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by\n * // SafeHtml.htmlEscape() as fakeSafeHtml\n * // instanceof SafeHtml.\n * </pre>\n *\n * @return {string}\n * @see SafeHtml.unwrap\n * @override\n */\n getTypedStringValue() {\n return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString();\n }\n\n\n /**\n * Returns a string-representation of this value.\n *\n * To obtain the actual string value wrapped in a SafeHtml, use\n * `SafeHtml.unwrap`.\n *\n * @return {string}\n * @see SafeHtml.unwrap\n * @override\n */\n toString() {\n return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString();\n }\n\n /**\n * Performs a runtime check that the provided object is indeed a SafeHtml\n * object, and returns its value.\n * @param {!SafeHtml} safeHtml The object to extract from.\n * @return {string} The SafeHtml object's contained string, unless the\n * run-time type check fails. In that case, `unwrap` returns an innocuous\n * string, or, if assertions are enabled, throws\n * `asserts.AssertionError`.\n */\n static unwrap(safeHtml) {\n return SafeHtml.unwrapTrustedHTML(safeHtml).toString();\n }\n\n\n /**\n * Unwraps value as TrustedHTML if supported or as a string if not.\n * @param {!SafeHtml} safeHtml\n * @return {!TrustedHTML|string}\n * @see SafeHtml.unwrap\n */\n static unwrapTrustedHTML(safeHtml) {\n // Perform additional run-time type-checking to ensure that safeHtml is\n // indeed an instance of the expected type. This provides some additional\n // protection against security bugs due to application code that disables\n // type checks. Specifically, the following checks are performed:\n // 1. The object is an instance of the expected type.\n // 2. The object is not an instance of a subclass.\n if (safeHtml instanceof SafeHtml && safeHtml.constructor === SafeHtml) {\n return safeHtml.privateDoNotAccessOrElseSafeHtmlWrappedValue_;\n } else {\n asserts.fail(\n `expected object of type SafeHtml, got '${safeHtml}' of type ` +\n goog.typeOf(safeHtml));\n return 'type_error:SafeHtml';\n }\n }\n\n /**\n * Returns HTML-escaped text as a SafeHtml object.\n *\n * @param {!SafeHtml.TextOrHtml_} textOrHtml The text to escape. If\n * the parameter is of type SafeHtml it is returned directly (no escaping\n * is done).\n * @return {!SafeHtml} The escaped text, wrapped as a SafeHtml.\n */\n static htmlEscape(textOrHtml) {\n if (textOrHtml instanceof SafeHtml) {\n return textOrHtml;\n }\n const textIsObject = typeof textOrHtml == 'object';\n let textAsString;\n if (textIsObject &&\n /** @type {?} */ (textOrHtml).implementsGoogStringTypedString) {\n textAsString =\n /** @type {!TypedString} */ (textOrHtml).getTypedStringValue();\n } else {\n textAsString = String(textOrHtml);\n }\n return SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\n internal.htmlEscape(textAsString));\n }\n\n\n /**\n * Returns HTML-escaped text as a SafeHtml object, with newlines changed to\n * &lt;br&gt;.\n * @param {!SafeHtml.TextOrHtml_} textOrHtml The text to escape. If\n * the parameter is of type SafeHtml it is returned directly (no escaping\n * is done).\n * @return {!SafeHtml} The escaped text, wrapped as a SafeHtml.\n */\n static htmlEscapePreservingNewlines(textOrHtml) {\n if (textOrHtml instanceof SafeHtml) {\n return textOrHtml;\n }\n const html = SafeHtml.htmlEscape(textOrHtml);\n return SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\n internal.newLineToBr(SafeHtml.unwrap(html)));\n }\n\n\n /**\n * Returns HTML-escaped text as a SafeHtml object, with newlines changed to\n * &lt;br&gt; and escaping whitespace to preserve spatial formatting.\n * Character entity #160 is used to make it safer for XML.\n * @param {!SafeHtml.TextOrHtml_} textOrHtml The text to escape. If\n * the parameter is of type SafeHtml it is returned directly (no escaping\n * is done).\n * @return {!SafeHtml} The escaped text, wrapped as a SafeHtml.\n */\n static htmlEscapePreservingNewlinesAndSpaces(textOrHtml) {\n if (textOrHtml instanceof SafeHtml) {\n return textOrHtml;\n }\n const html = SafeHtml.htmlEscape(textOrHtml);\n return SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\n internal.whitespaceEscape(SafeHtml.unwrap(html)));\n }\n\n /**\n * Converts an arbitrary string into an HTML comment by HTML-escaping the\n * contents and embedding the result between HTML comment markers.\n *\n * Escaping is needed because Internet Explorer supports conditional comments\n * and so may render HTML markup within comments.\n *\n * @param {string} text\n * @return {!SafeHtml}\n */\n static comment(text) {\n return SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\n '\u003c!--' + internal.htmlEscape(text) + '--\u003e');\n }\n\n /**\n * Creates a SafeHtml content consisting of a tag with optional attributes and\n * optional content.\n *\n * For convenience tag names and attribute names are accepted as regular\n * strings, instead of Const. Nevertheless, you should not pass\n * user-controlled values to these parameters. Note that these parameters are\n * syntactically validated at runtime, and invalid values will result in\n * an exception.\n *\n * Example usage:\n *\n * SafeHtml.create('br');\n * SafeHtml.create('div', {'class': 'a'});\n * SafeHtml.create('p', {}, 'a');\n * SafeHtml.create('p', {}, SafeHtml.create('br'));\n *\n * SafeHtml.create('span', {\n * 'style': {'margin': '0'}\n * });\n *\n * To guarantee SafeHtml's type contract is upheld there are restrictions on\n * attribute values and tag names.\n *\n * - For attributes which contain script code (on*), a Const is\n * required.\n * - For attributes which contain style (style), a SafeStyle or a\n * SafeStyle.PropertyMap is required.\n * - For attributes which are interpreted as URLs (e.g. src, href) a\n * SafeUrl, Const or string is required. If a string\n * is passed, it will be sanitized with SafeUrl.sanitize().\n * - For tags which can load code or set security relevant page metadata,\n * more specific SafeHtml.create*() functions must be used. Tags\n * which are not supported by this function are applet, base, embed, iframe,\n * link, math, meta, object, script, style, svg, and template.\n *\n * @param {!TagName|string} tagName The name of the tag. Only tag names\n * consisting of [a-zA-Z0-9-] are allowed. Tag names documented above are\n * disallowed.\n * @param {?Object<string, ?SafeHtml.AttributeValue>=} attributes Mapping\n * from attribute names to their values. Only attribute names consisting\n * of [a-zA-Z0-9-] are allowed. Value of null or undefined causes the\n * attribute to be omitted.\n * @param {!SafeHtml.TextOrHtml_|\n * !Array<!SafeHtml.TextOrHtml_>=} content Content to HTML-escape and put\n * inside the tag. This must be empty for void tags like <br>. Array elements\n * are concatenated.\n * @return {!SafeHtml} The SafeHtml content with the tag.\n * @throws {!Error} If invalid tag name, attribute name, or attribute value is\n * provided.\n * @throws {!asserts.AssertionError} If content for void tag is provided.\n * @deprecated Use a recommended templating system like Lit instead.\n * More information: go/goog.html-readme // LINE-INTERNAL\n */\n static create(tagName, attributes = undefined, content = undefined) {\n SafeHtml.verifyTagName(String(tagName));\n return SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\n String(tagName), attributes, content);\n }\n\n\n /**\n * Verifies if the tag name is valid and if it doesn't change the context.\n * E.g. STRONG is fine but SCRIPT throws because it changes context. See\n * SafeHtml.create for an explanation of allowed tags.\n * @param {string} tagName\n * @return {void}\n * @throws {!Error} If invalid tag name is provided.\n * @package\n */\n static verifyTagName(tagName) {\n if (!VALID_NAMES_IN_TAG.test(tagName)) {\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ? `Invalid tag name <${tagName}>.` :\n '');\n }\n if (tagName.toUpperCase() in NOT_ALLOWED_TAG_NAMES) {\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ?\n\n `Tag name <${tagName}> is not allowed for SafeHtml.` :\n '');\n }\n }\n\n\n /**\n * Creates a SafeHtml representing an iframe tag.\n *\n * This by default restricts the iframe as much as possible by setting the\n * sandbox attribute to the empty string. If the iframe requires less\n * restrictions, set the sandbox attribute as tight as possible, but do not\n * rely on the sandbox as a security feature because it is not supported by\n * older browsers. If a sandbox is essential to security (e.g. for third-party\n * frames), use createSandboxIframe which checks for browser support.\n *\n * @see https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe#attr-sandbox\n *\n * @param {?TrustedResourceUrl=} src The value of the src\n * attribute. If null or undefined src will not be set.\n * @param {?SafeHtml=} srcdoc The value of the srcdoc attribute.\n * If null or undefined srcdoc will not be set.\n * @param {?Object<string, ?SafeHtml.AttributeValue>=} attributes Mapping\n * from attribute names to their values. Only attribute names consisting\n * of [a-zA-Z0-9-] are allowed. Value of null or undefined causes the\n * attribute to be omitted.\n * @param {!SafeHtml.TextOrHtml_|\n * !Array<!SafeHtml.TextOrHtml_>=} content Content to HTML-escape and put\n * inside the tag. Array elements are concatenated.\n * @return {!SafeHtml} The SafeHtml content with the tag.\n * @throws {!Error} If invalid tag name, attribute name, or attribute value is\n * provided. If attributes\n * contains the src or srcdoc attributes.\n */\n static createIframe(\n src = undefined, srcdoc = undefined, attributes = undefined,\n content = undefined) {\n if (src) {\n // Check whether this is really TrustedResourceUrl.\n TrustedResourceUrl.unwrap(src);\n }\n\n const fixedAttributes = {};\n fixedAttributes['src'] = src || null;\n fixedAttributes['srcdoc'] = srcdoc && SafeHtml.unwrap(srcdoc);\n const defaultAttributes = {'sandbox': ''};\n const combinedAttrs = SafeHtml.combineAttributes(\n fixedAttributes, defaultAttributes, attributes);\n return SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\n 'iframe', combinedAttrs, content);\n }\n\n\n /**\n * Creates a SafeHtml representing a sandboxed iframe tag.\n *\n * The sandbox attribute is enforced in its most restrictive mode, an empty\n * string. Consequently, the security requirements for the src and srcdoc\n * attributes are relaxed compared to SafeHtml.createIframe. This function\n * will throw on browsers that do not support the sandbox attribute, as\n * determined by SafeHtml.canUseSandboxIframe.\n *\n * The SafeHtml returned by this function can trigger downloads with no\n * user interaction on Chrome (though only a few, further attempts are\n * blocked). Firefox and IE will block all downloads from the sandbox.\n *\n * @see https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe#attr-sandbox\n * @see https://lists.w3.org/Archives/Public/public-whatwg-archive/2013Feb/0112.html\n *\n * @param {string|!SafeUrl=} src The value of the src\n * attribute. If null or undefined src will not be set.\n * @param {string=} srcdoc The value of the srcdoc attribute.\n * If null or undefined srcdoc will not be set. Will not be sanitized.\n * @param {!Object<string, ?SafeHtml.AttributeValue>=} attributes Mapping\n * from attribute names to their values. Only attribute names consisting\n * of [a-zA-Z0-9-] are allowed. Value of null or undefined causes the\n * attribute to be omitted.\n * @param {!SafeHtml.TextOrHtml_|\n * !Array<!SafeHtml.TextOrHtml_>=} content Content to HTML-escape and put\n * inside the tag. Array elements are concatenated.\n * @return {!SafeHtml} The SafeHtml content with the tag.\n * @throws {!Error} If invalid tag name, attribute name, or attribute value is\n * provided. If attributes\n * contains the src, srcdoc or sandbox attributes. If browser does not support\n * the sandbox attribute on iframe.\n */\n static createSandboxIframe(\n src = undefined, srcdoc = undefined, attributes = undefined,\n content = undefined) {\n if (!SafeHtml.canUseSandboxIframe()) {\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ?\n 'The browser does not support sandboxed iframes.' :\n '');\n }\n\n const fixedAttributes = {};\n if (src) {\n // Note that sanitize is a no-op on SafeUrl.\n fixedAttributes['src'] = SafeUrl.unwrap(SafeUrl.sanitize(src));\n } else {\n fixedAttributes['src'] = null;\n }\n fixedAttributes['srcdoc'] = srcdoc || null;\n fixedAttributes['sandbox'] = '';\n const combinedAttrs =\n SafeHtml.combineAttributes(fixedAttributes, {}, attributes);\n return SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\n 'iframe', combinedAttrs, content);\n }\n\n\n /**\n * Checks if the user agent supports sandboxed iframes.\n * @return {boolean}\n */\n static canUseSandboxIframe() {\n return goog.global['HTMLIFrameElement'] &&\n ('sandbox' in goog.global['HTMLIFrameElement'].prototype);\n }\n\n\n /**\n * Creates a SafeHtml representing a script tag with the src attribute.\n * @param {!TrustedResourceUrl} src The value of the src\n * attribute.\n * @param {?Object<string, ?SafeHtml.AttributeValue>=}\n * attributes\n * Mapping from attribute names to their values. Only attribute names\n * consisting of [a-zA-Z0-9-] are allowed. Value of null or undefined\n * causes the attribute to be omitted.\n * @return {!SafeHtml} The SafeHtml content with the tag.\n * @throws {!Error} If invalid attribute name or value is provided. If\n * attributes contains the\n * src attribute.\n */\n static createScriptSrc(src, attributes = undefined) {\n // TODO(mlourenco): The charset attribute should probably be blocked. If\n // its value is attacker controlled, the script contains attacker controlled\n // sub-strings (even if properly escaped) and the server does not set\n // charset then XSS is likely possible.\n // https://html.spec.whatwg.org/multipage/scripting.html#dom-script-charset\n\n // Check whether this is really TrustedResourceUrl.\n TrustedResourceUrl.unwrap(src);\n\n const fixedAttributes = {'src': src};\n const defaultAttributes = {};\n const combinedAttrs = SafeHtml.combineAttributes(\n fixedAttributes, defaultAttributes, attributes);\n return SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\n 'script', combinedAttrs);\n }\n\n /**\n * Creates a SafeHtml representing a script tag. Does not allow the language,\n * src, text or type attributes to be set.\n * @param {!SafeScript|!Array<!SafeScript>}\n * script Content to put inside the tag. Array elements are\n * concatenated.\n * @param {?Object<string, ?SafeHtml.AttributeValue>=} attributes Mapping\n * from attribute names to their values. Only attribute names consisting\n * of [a-zA-Z0-9-] are allowed. Value of null or undefined causes the\n * attribute to be omitted.\n * @return {!SafeHtml} The SafeHtml content with the tag.\n * @throws {!Error} If invalid attribute name or attribute value is provided.\n * If attributes contains the\n * language, src or text attribute.\n */\n static createScript(script, attributes = undefined) {\n for (let attr in attributes) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty#Using_hasOwnProperty_as_a_property_name\n if (Object.prototype.hasOwnProperty.call(attributes, attr)) {\n const attrLower = attr.toLowerCase();\n if (attrLower == 'language' || attrLower == 'src' ||\n attrLower == 'text') {\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ?\n `Cannot set \"${attrLower}\" attribute` :\n '');\n }\n }\n }\n\n let content = '';\n script = googArray.concat(script);\n for (let i = 0; i < script.length; i++) {\n content += SafeScript.unwrap(script[i]);\n }\n // Convert to SafeHtml so that it's not HTML-escaped. This is safe because\n // as part of its contract, SafeScript should have no dangerous '<'.\n const htmlContent =\n SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(content);\n return SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\n 'script', attributes, htmlContent);\n }\n\n\n /**\n * Creates a SafeHtml representing a style tag. The type attribute is set\n * to \"text/css\".\n * @param {!SafeStyleSheet|!Array<!SafeStyleSheet>}\n * styleSheet Content to put inside the tag. Array elements are\n * concatenated.\n * @param {?Object<string, ?SafeHtml.AttributeValue>=} attributes Mapping\n * from attribute names to their values. Only attribute names consisting\n * of [a-zA-Z0-9-] are allowed. Value of null or undefined causes the\n * attribute to be omitted.\n * @return {!SafeHtml} The SafeHtml content with the tag.\n * @throws {!Error} If invalid attribute name or attribute value is provided.\n * If attributes contains the\n * type attribute.\n */\n static createStyle(styleSheet, attributes = undefined) {\n const fixedAttributes = {'type': 'text/css'};\n const defaultAttributes = {};\n const combinedAttrs = SafeHtml.combineAttributes(\n fixedAttributes, defaultAttributes, attributes);\n\n let content = '';\n styleSheet = googArray.concat(styleSheet);\n for (let i = 0; i < styleSheet.length; i++) {\n content += SafeStyleSheet.unwrap(styleSheet[i]);\n }\n // Convert to SafeHtml so that it's not HTML-escaped. This is safe because\n // as part of its contract, SafeStyleSheet should have no dangerous '<'.\n const htmlContent =\n SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(content);\n return SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\n 'style', combinedAttrs, htmlContent);\n }\n\n\n /**\n * Creates a SafeHtml representing a meta refresh tag.\n * @param {!SafeUrl|string} url Where to redirect. If a string is\n * passed, it will be sanitized with SafeUrl.sanitize().\n * @param {number=} secs Number of seconds until the page should be\n * reloaded. Will be set to 0 if unspecified.\n * @return {!SafeHtml} The SafeHtml content with the tag.\n */\n static createMetaRefresh(url, secs = undefined) {\n // Note that sanitize is a no-op on SafeUrl.\n let unwrappedUrl = SafeUrl.unwrap(SafeUrl.sanitize(url));\n\n if (browser.isIE() || browser.isEdge()) {\n // IE/EDGE can't parse the content attribute if the url contains a\n // semicolon. We can fix this by adding quotes around the url, but then we\n // can't parse quotes in the URL correctly. Also, it seems that IE/EDGE\n // did not unescape semicolons in these URLs at some point in the past. We\n // take a best-effort approach.\n //\n // If the URL has semicolons (which may happen in some cases, see\n // http://www.w3.org/TR/1999/REC-html401-19991224/appendix/notes.html#h-B.2\n // for instance), wrap it in single quotes to protect the semicolons.\n // If the URL has semicolons and single quotes, url-encode the single\n // quotes as well.\n //\n // This is imperfect. Notice that both ' and ; are reserved characters in\n // URIs, so this could do the wrong thing, but at least it will do the\n // wrong thing in only rare cases.\n if (internal.contains(unwrappedUrl, ';')) {\n unwrappedUrl = '\\'' + unwrappedUrl.replace(/'/g, '%27') + '\\'';\n }\n }\n const attributes = {\n 'http-equiv': 'refresh',\n 'content': (secs || 0) + '; url=' + unwrappedUrl,\n };\n\n // This function will handle the HTML escaping for attributes.\n return SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\n 'meta', attributes);\n }\n\n /**\n * Creates a new SafeHtml object by joining the parts with separator.\n * @param {!SafeHtml.TextOrHtml_} separator\n * @param {!Array<!SafeHtml.TextOrHtml_|\n * !Array<!SafeHtml.TextOrHtml_>>} parts Parts to join. If a part\n * contains an array then each member of this array is also joined with\n * the separator.\n * @return {!SafeHtml}\n */\n static join(separator, parts) {\n const separatorHtml = SafeHtml.htmlEscape(separator);\n const content = [];\n\n /**\n * @param {!SafeHtml.TextOrHtml_|\n * !Array<!SafeHtml.TextOrHtml_>} argument\n */\n const addArgument = (argument) => {\n if (Array.isArray(argument)) {\n argument.forEach(addArgument);\n } else {\n const html = SafeHtml.htmlEscape(argument);\n content.push(SafeHtml.unwrap(html));\n }\n };\n\n parts.forEach(addArgument);\n return SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\n content.join(SafeHtml.unwrap(separatorHtml)));\n }\n\n\n /**\n * Creates a new SafeHtml object by concatenating values.\n * @param {...(!SafeHtml.TextOrHtml_|\n * !Array<!SafeHtml.TextOrHtml_>)} var_args Values to concatenate.\n * @return {!SafeHtml}\n */\n static concat(var_args) {\n return SafeHtml.join(SafeHtml.EMPTY, Array.prototype.slice.call(arguments));\n }\n\n /**\n * Package-internal utility method to create SafeHtml instances.\n *\n * @param {string} html The string to initialize the SafeHtml object with.\n * @return {!SafeHtml} The initialized SafeHtml object.\n * @package\n */\n static createSafeHtmlSecurityPrivateDoNotAccessOrElse(html) {\n /** @noinline */\n const noinlineHtml = html;\n const policy = trustedtypes.getPolicyPrivateDoNotAccessOrElse();\n const trustedHtml = policy ? policy.createHTML(noinlineHtml) : noinlineHtml;\n return new SafeHtml(trustedHtml, CONSTRUCTOR_TOKEN_PRIVATE);\n }\n\n\n /**\n * Like create() but does not restrict which tags can be constructed.\n *\n * @param {string} tagName Tag name. Set or validated by caller.\n * @param {?Object<string, ?SafeHtml.AttributeValue>=} attributes\n * @param {(!SafeHtml.TextOrHtml_|\n * !Array<!SafeHtml.TextOrHtml_>)=} content\n * @return {!SafeHtml}\n * @throws {!Error} If invalid or unsafe attribute name or value is provided.\n * @throws {!asserts.AssertionError} If content for void tag is provided.\n * @package\n */\n static createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(\n tagName, attributes = undefined, content = undefined) {\n let result = `<${tagName}`;\n result += SafeHtml.stringifyAttributes(tagName, attributes);\n\n if (content == null) {\n content = [];\n } else if (!Array.isArray(content)) {\n content = [content];\n }\n\n if (tags.isVoidTag(tagName.toLowerCase())) {\n asserts.assert(\n !content.length, `Void tag <${tagName}> does not allow content.`);\n result += '>';\n } else {\n const html = SafeHtml.concat(content);\n result += '>' + SafeHtml.unwrap(html) + '</' + tagName + '>';\n }\n\n return SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(result);\n }\n\n\n /**\n * Creates a string with attributes to insert after tagName.\n * @param {string} tagName\n * @param {?Object<string, ?SafeHtml.AttributeValue>=} attributes\n * @return {string} Returns an empty string if there are no attributes,\n * returns a string starting with a space otherwise.\n * @throws {!Error} If attribute value is unsafe for the given tag and\n * attribute.\n * @package\n */\n static stringifyAttributes(tagName, attributes = undefined) {\n let result = '';\n if (attributes) {\n for (let name in attributes) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty#Using_hasOwnProperty_as_a_property_name\n if (Object.prototype.hasOwnProperty.call(attributes, name)) {\n if (!VALID_NAMES_IN_TAG.test(name)) {\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ?\n `Invalid attribute name \"${name}\".` :\n '');\n }\n const value = attributes[name];\n if (value == null) {\n continue;\n }\n result += ' ' + getAttrNameAndValue(tagName, name, value);\n }\n }\n }\n return result;\n }\n\n\n /**\n * @param {!Object<string, ?SafeHtml.AttributeValue>} fixedAttributes\n * @param {!Object<string, string>} defaultAttributes\n * @param {?Object<string, ?SafeHtml.AttributeValue>=} attributes Optional\n * attributes passed to create*().\n * @return {!Object<string, ?SafeHtml.AttributeValue>}\n * @throws {!Error} If attributes contains an attribute with the same name as\n * an attribute in fixedAttributes.\n * @package\n */\n static combineAttributes(\n fixedAttributes, defaultAttributes, attributes = undefined) {\n const combinedAttributes = {};\n\n for (const name in fixedAttributes) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty#Using_hasOwnProperty_as_a_property_name\n if (Object.prototype.hasOwnProperty.call(fixedAttributes, name)) {\n asserts.assert(name.toLowerCase() == name, 'Must be lower case');\n combinedAttributes[name] = fixedAttributes[name];\n }\n }\n for (const name in defaultAttributes) {\n if (Object.prototype.hasOwnProperty.call(defaultAttributes, name)) {\n asserts.assert(name.toLowerCase() == name, 'Must be lower case');\n combinedAttributes[name] = defaultAttributes[name];\n }\n }\n\n if (attributes) {\n for (const name in attributes) {\n if (Object.prototype.hasOwnProperty.call(attributes, name)) {\n const nameLower = name.toLowerCase();\n if (nameLower in fixedAttributes) {\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ?\n `Cannot override \"${nameLower}\" attribute, got \"` + name +\n '\" with value \"' + attributes[name] + '\"' :\n '');\n }\n if (nameLower in defaultAttributes) {\n delete combinedAttributes[nameLower];\n }\n combinedAttributes[name] = attributes[name];\n }\n }\n }\n\n return combinedAttributes;\n }\n}\n\n\n/**\n * @define {boolean} Whether to strip out error messages or to leave them in.\n */\nSafeHtml.ENABLE_ERROR_MESSAGES =\n goog.define('goog.html.SafeHtml.ENABLE_ERROR_MESSAGES', goog.DEBUG);\n\n\n/**\n * Whether the `style` attribute is supported. Set to false to avoid the byte\n * weight of `SafeStyle` where unneeded. An error will be thrown if\n * the `style` attribute is used.\n * @define {boolean}\n */\nSafeHtml.SUPPORT_STYLE_ATTRIBUTE =\n goog.define('goog.html.SafeHtml.SUPPORT_STYLE_ATTRIBUTE', true);\n\n\n/**\n * Shorthand for union of types that can sensibly be converted to strings\n * or might already be SafeHtml (as SafeHtml is a TypedString).\n * @private\n * @typedef {string|number|boolean|!TypedString}\n */\nSafeHtml.TextOrHtml_;\n\n\n/**\n * Coerces an arbitrary object into a SafeHtml object.\n *\n * If `textOrHtml` is already of type `SafeHtml`, the same\n * object is returned. Otherwise, `textOrHtml` is coerced to string, and\n * HTML-escaped.\n *\n * @param {!SafeHtml.TextOrHtml_} textOrHtml The text or SafeHtml to\n * coerce.\n * @return {!SafeHtml} The resulting SafeHtml object.\n * @deprecated Use SafeHtml.htmlEscape.\n */\nSafeHtml.from = SafeHtml.htmlEscape;\n\n\n/**\n * @const\n */\nconst VALID_NAMES_IN_TAG = /^[a-zA-Z0-9-]+$/;\n\n\n/**\n * Set of attributes containing URL as defined at\n * http://www.w3.org/TR/html5/index.html#attributes-1.\n * @const {!Object<string,boolean>}\n */\nconst URL_ATTRIBUTES = googObject.createSet(\n 'action', 'cite', 'data', 'formaction', 'href', 'manifest', 'poster',\n 'src');\n\n\n/**\n * Tags which are unsupported via create(). They might be supported via a\n * tag-specific create method. These are tags which might require a\n * TrustedResourceUrl in one of their attributes or a restricted type for\n * their content.\n * @const {!Object<string,boolean>}\n */\nconst NOT_ALLOWED_TAG_NAMES = googObject.createSet(\n TagName.APPLET, TagName.BASE, TagName.EMBED, TagName.IFRAME, TagName.LINK,\n TagName.MATH, TagName.META, TagName.OBJECT, TagName.SCRIPT, TagName.STYLE,\n TagName.SVG, TagName.TEMPLATE);\n\n\n/**\n * @typedef {string|number|!TypedString|\n * !SafeStyle.PropertyMap|undefined|null}\n */\nSafeHtml.AttributeValue;\n\n\n/**\n * @param {string} tagName The tag name.\n * @param {string} name The attribute name.\n * @param {!SafeHtml.AttributeValue} value The attribute value.\n * @return {string} A \"name=value\" string.\n * @throws {!Error} If attribute value is unsafe for the given tag and\n * attribute.\n * @private\n */\nfunction getAttrNameAndValue(tagName, name, value) {\n // If it's goog.string.Const, allow any valid attribute name.\n if (value instanceof Const) {\n value = Const.unwrap(value);\n } else if (name.toLowerCase() == 'style') {\n if (SafeHtml.SUPPORT_STYLE_ATTRIBUTE) {\n value = getStyleValue(value);\n } else {\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute \"style\" not supported.' :\n '');\n }\n } else if (/^on/i.test(name)) {\n // TODO(jakubvrana): Disallow more attributes with a special meaning.\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ? `Attribute \"${name}` +\n '\" requires goog.string.Const value, \"' + value + '\" given.' :\n '');\n // URL attributes handled differently according to tag.\n } else if (name.toLowerCase() in URL_ATTRIBUTES) {\n if (value instanceof TrustedResourceUrl) {\n value = TrustedResourceUrl.unwrap(value);\n } else if (value instanceof SafeUrl) {\n value = SafeUrl.unwrap(value);\n } else if (typeof value === 'string') {\n value = SafeUrl.sanitize(value).getTypedStringValue();\n } else {\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ?\n `Attribute \"${name}\" on tag \"${tagName}` +\n '\" requires goog.html.SafeUrl, goog.string.Const, or' +\n ' string, value \"' + value + '\" given.' :\n '');\n }\n }\n\n // Accept SafeUrl, TrustedResourceUrl, etc. for attributes which only require\n // HTML-escaping.\n if (/** @type {?} */ (value).implementsGoogStringTypedString) {\n // Ok to call getTypedStringValue() since there's no reliance on the type\n // contract for security here.\n value =\n /** @type {!TypedString} */ (value).getTypedStringValue();\n }\n\n asserts.assert(\n typeof value === 'string' || typeof value === 'number',\n 'String or number value expected, got ' + (typeof value) +\n ' with value: ' + value);\n return `${name}=\"` + internal.htmlEscape(String(value)) + '\"';\n}\n\n\n/**\n * Gets value allowed in \"style\" attribute.\n * @param {!SafeHtml.AttributeValue} value It could be SafeStyle or a\n * map which will be passed to SafeStyle.create.\n * @return {string} Unwrapped value.\n * @throws {!Error} If string value is given.\n * @private\n */\nfunction getStyleValue(value) {\n if (!goog.isObject(value)) {\n throw new Error(\n SafeHtml.ENABLE_ERROR_MESSAGES ?\n 'The \"style\" attribute requires goog.html.SafeStyle or map ' +\n 'of style properties, ' + (typeof value) + ' given: ' + value :\n '');\n }\n if (!(value instanceof SafeStyle)) {\n // Process the property bag into a style object.\n value = SafeStyle.create(value);\n }\n return SafeStyle.unwrap(value);\n}\n\n\n/**\n * A SafeHtml instance corresponding to the HTML doctype: \"<!DOCTYPE html>\".\n * @const {!SafeHtml}\n */\nSafeHtml.DOCTYPE_HTML = /** @type {!SafeHtml} */ ({\n // NOTE: this compiles to nothing, but hides the possible side effect of\n // SafeHtml creation (due to calling trustedTypes.createPolicy) from the\n // compiler so that the entire call can be removed if the result is not used.\n valueOf: function() {\n return SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\n '<!DOCTYPE html>');\n },\n}.valueOf());\n\n/**\n * A SafeHtml instance corresponding to the empty string.\n * @const {!SafeHtml}\n */\nSafeHtml.EMPTY = new SafeHtml(\n (goog.global.trustedTypes && goog.global.trustedTypes.emptyHTML) || '',\n CONSTRUCTOR_TOKEN_PRIVATE);\n\n/**\n * A SafeHtml instance corresponding to the <br> tag.\n * @const {!SafeHtml}\n */\nSafeHtml.BR = /** @type {!SafeHtml} */ ({\n // NOTE: this compiles to nothing, but hides the possible side effect of\n // SafeHtml creation (due to calling trustedTypes.createPolicy) from the\n // compiler so that the entire call can be removed if the result is not used.\n valueOf: function() {\n return SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse('<br>');\n },\n}.valueOf());\n\n\nexports = SafeHtml;\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Unchecked conversions to create values of goog.html types from\n * plain strings. Use of these functions could potentially result in instances\n * of goog.html types that violate their type contracts, and hence result in\n * security vulnerabilties.\n *\n * Therefore, all uses of the methods herein must be carefully security\n * reviewed. Avoid use of the methods in this file whenever possible; instead\n * prefer to create instances of goog.html types using inherently safe builders\n * or template systems.\n *\n *\n */\n\n\ngoog.provide('goog.html.uncheckedconversions');\n\ngoog.require('goog.asserts');\ngoog.require('goog.html.SafeHtml');\ngoog.require('goog.html.SafeScript');\ngoog.require('goog.html.SafeStyle');\ngoog.require('goog.html.SafeStyleSheet');\ngoog.require('goog.html.SafeUrl');\ngoog.require('goog.html.TrustedResourceUrl');\ngoog.require('goog.string.Const');\ngoog.require('goog.string.internal');\n\n\n/**\n * Performs an \"unchecked conversion\" to SafeHtml from a plain string that is\n * known to satisfy the SafeHtml type contract.\n *\n * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure\n * that the value of `html` satisfies the SafeHtml type contract in all\n * possible program states.\n *\n *\n * @param {!goog.string.Const} justification A constant string explaining why\n * this use of this method is safe. May include a security review ticket\n * number.\n * @param {string} html A string that is claimed to adhere to the SafeHtml\n * contract.\n * @return {!goog.html.SafeHtml} The value of html, wrapped in a SafeHtml\n * object.\n */\ngoog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract =\n function(justification, html) {\n 'use strict';\n // unwrap() called inside an assert so that justification can be optimized\n // away in production code.\n goog.asserts.assertString(\n goog.string.Const.unwrap(justification), 'must provide justification');\n goog.asserts.assert(\n !goog.string.internal.isEmptyOrWhitespace(\n goog.string.Const.unwrap(justification)),\n 'must provide non-empty justification');\n return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(\n html);\n};\n\n\n/**\n * Performs an \"unchecked conversion\" to SafeScript from a plain string that is\n * known to satisfy the SafeScript type contract.\n *\n * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure\n * that the value of `script` satisfies the SafeScript type contract in\n * all possible program states.\n *\n *\n * @param {!goog.string.Const} justification A constant string explaining why\n * this use of this method is safe. May include a security review ticket\n * number.\n * @param {string} script The string to wrap as a SafeScript.\n * @return {!goog.html.SafeScript} The value of `script`, wrapped in a\n * SafeScript object.\n */\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract =\n function(justification, script) {\n 'use strict';\n // unwrap() called inside an assert so that justification can be optimized\n // away in production code.\n goog.asserts.assertString(\n goog.string.Const.unwrap(justification), 'must provide justification');\n goog.asserts.assert(\n !goog.string.internal.isEmptyOrWhitespace(\n goog.string.Const.unwrap(justification)),\n 'must provide non-empty justification');\n return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(\n script);\n};\n\n\n/**\n * Performs an \"unchecked conversion\" to SafeStyle from a plain string that is\n * known to satisfy the SafeStyle type contract.\n *\n * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure\n * that the value of `style` satisfies the SafeStyle type contract in all\n * possible program states.\n *\n *\n * @param {!goog.string.Const} justification A constant string explaining why\n * this use of this method is safe. May include a security review ticket\n * number.\n * @param {string} style The string to wrap as a SafeStyle.\n * @return {!goog.html.SafeStyle} The value of `style`, wrapped in a\n * SafeStyle object.\n */\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract =\n function(justification, style) {\n 'use strict';\n // unwrap() called inside an assert so that justification can be optimized\n // away in production code.\n goog.asserts.assertString(\n goog.string.Const.unwrap(justification), 'must provide justification');\n goog.asserts.assert(\n !goog.string.internal.isEmptyOrWhitespace(\n goog.string.Const.unwrap(justification)),\n 'must provide non-empty justification');\n return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(\n style);\n};\n\n\n/**\n * Performs an \"unchecked conversion\" to SafeStyleSheet from a plain string\n * that is known to satisfy the SafeStyleSheet type contract.\n *\n * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure\n * that the value of `styleSheet` satisfies the SafeStyleSheet type\n * contract in all possible program states.\n *\n *\n * @param {!goog.string.Const} justification A constant string explaining why\n * this use of this method is safe. May include a security review ticket\n * number.\n * @param {string} styleSheet The string to wrap as a SafeStyleSheet.\n * @return {!goog.html.SafeStyleSheet} The value of `styleSheet`, wrapped\n * in a SafeStyleSheet object.\n */\ngoog.html.uncheckedconversions\n .safeStyleSheetFromStringKnownToSatisfyTypeContract = function(\n justification, styleSheet) {\n 'use strict';\n // unwrap() called inside an assert so that justification can be optimized\n // away in production code.\n goog.asserts.assertString(\n goog.string.Const.unwrap(justification), 'must provide justification');\n goog.asserts.assert(\n !goog.string.internal.isEmptyOrWhitespace(\n goog.string.Const.unwrap(justification)),\n 'must provide non-empty justification');\n return goog.html.SafeStyleSheet\n .createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(styleSheet);\n};\n\n\n/**\n * Performs an \"unchecked conversion\" to SafeUrl from a plain string that is\n * known to satisfy the SafeUrl type contract.\n *\n * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure\n * that the value of `url` satisfies the SafeUrl type contract in all\n * possible program states.\n *\n *\n * @param {!goog.string.Const} justification A constant string explaining why\n * this use of this method is safe. May include a security review ticket\n * number.\n * @param {string} url The string to wrap as a SafeUrl.\n * @return {!goog.html.SafeUrl} The value of `url`, wrapped in a SafeUrl\n * object.\n */\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract =\n function(justification, url) {\n 'use strict';\n // unwrap() called inside an assert so that justification can be optimized\n // away in production code.\n goog.asserts.assertString(\n goog.string.Const.unwrap(justification), 'must provide justification');\n goog.asserts.assert(\n !goog.string.internal.isEmptyOrWhitespace(\n goog.string.Const.unwrap(justification)),\n 'must provide non-empty justification');\n return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url);\n};\n\n\n/**\n * Performs an \"unchecked conversion\" to TrustedResourceUrl from a plain string\n * that is known to satisfy the TrustedResourceUrl type contract.\n *\n * IMPORTANT: Uses of this method must be carefully security-reviewed to ensure\n * that the value of `url` satisfies the TrustedResourceUrl type contract\n * in all possible program states.\n *\n *\n * @param {!goog.string.Const} justification A constant string explaining why\n * this use of this method is safe. May include a security review ticket\n * number.\n * @param {string} url The string to wrap as a TrustedResourceUrl.\n * @return {!goog.html.TrustedResourceUrl} The value of `url`, wrapped in\n * a TrustedResourceUrl object.\n */\ngoog.html.uncheckedconversions\n .trustedResourceUrlFromStringKnownToSatisfyTypeContract = function(\n justification, url) {\n 'use strict';\n // unwrap() called inside an assert so that justification can be optimized\n // away in production code.\n goog.asserts.assertString(\n goog.string.Const.unwrap(justification), 'must provide justification');\n goog.asserts.assert(\n !goog.string.internal.isEmptyOrWhitespace(\n goog.string.Const.unwrap(justification)),\n 'must provide non-empty justification');\n return goog.html.TrustedResourceUrl\n .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(url);\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Type-safe wrappers for unsafe DOM APIs.\n *\n * This file provides type-safe wrappers for DOM APIs that can result in\n * cross-site scripting (XSS) vulnerabilities, if the API is supplied with\n * untrusted (attacker-controlled) input. Instead of plain strings, the type\n * safe wrappers consume values of types from the goog.html package whose\n * contract promises that values are safe to use in the corresponding context.\n *\n * Hence, a program that exclusively uses the wrappers in this file (i.e., whose\n * only reference to security-sensitive raw DOM APIs are in this file) is\n * guaranteed to be free of XSS due to incorrect use of such DOM APIs (modulo\n * correctness of code that produces values of the respective goog.html types,\n * and absent code that violates type safety).\n *\n * For example, assigning to an element's .innerHTML property a string that is\n * derived (even partially) from untrusted input typically results in an XSS\n * vulnerability. The type-safe wrapper goog.dom.safe.setInnerHtml consumes a\n * value of type goog.html.SafeHtml, whose contract states that using its values\n * in a HTML context will not result in XSS. Hence a program that is free of\n * direct assignments to any element's innerHTML property (with the exception of\n * the assignment to .innerHTML in this file) is guaranteed to be free of XSS\n * due to assignment of untrusted strings to the innerHTML property.\n */\n\ngoog.provide('goog.dom.safe');\ngoog.provide('goog.dom.safe.InsertAdjacentHtmlPosition');\n\ngoog.require('goog.asserts');\ngoog.require('goog.dom.asserts');\ngoog.require('goog.functions');\ngoog.require('goog.html.SafeHtml');\ngoog.require('goog.html.SafeScript');\ngoog.require('goog.html.SafeStyle');\ngoog.require('goog.html.SafeUrl');\ngoog.require('goog.html.TrustedResourceUrl');\ngoog.require('goog.html.uncheckedconversions');\ngoog.require('goog.string.Const');\ngoog.require('goog.string.internal');\n\n\n/** @enum {string} */\ngoog.dom.safe.InsertAdjacentHtmlPosition = {\n AFTERBEGIN: 'afterbegin',\n AFTEREND: 'afterend',\n BEFOREBEGIN: 'beforebegin',\n BEFOREEND: 'beforeend'\n};\n\n\n/**\n * Inserts known-safe HTML into a Node, at the specified position.\n * @param {!Node} node The node on which to call insertAdjacentHTML.\n * @param {!goog.dom.safe.InsertAdjacentHtmlPosition} position Position where\n * to insert the HTML.\n * @param {!goog.html.SafeHtml} html The known-safe HTML to insert.\n */\ngoog.dom.safe.insertAdjacentHtml = function(node, position, html) {\n 'use strict';\n node.insertAdjacentHTML(position, goog.html.SafeHtml.unwrapTrustedHTML(html));\n};\n\n\n/**\n * Tags not allowed in goog.dom.safe.setInnerHtml.\n * @private @const {!Object<string, boolean>}\n */\ngoog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_ = {\n 'MATH': true,\n 'SCRIPT': true,\n 'STYLE': true,\n 'SVG': true,\n 'TEMPLATE': true\n};\n\n\n/**\n * Whether assigning to innerHTML results in a non-spec-compliant clean-up. Used\n * to define goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse.\n *\n * <p>As mentioned in https://stackoverflow.com/questions/28741528, re-rendering\n * an element in IE by setting innerHTML causes IE to recursively disconnect all\n * parent/children connections that were in the previous contents of the\n * element. Unfortunately, this can unexpectedly result in confusing cases where\n * a function is run (typically asynchronously) on element that has since\n * disconnected from the DOM but assumes the presence of its children. A simple\n * workaround is to remove all children first. Testing on IE11 via\n * https://jsperf.com/innerhtml-vs-removechild/239, removeChild seems to be\n * ~10x faster than innerHTML='' for a large number of children (perhaps due\n * to the latter's recursive behavior), implying that this workaround would\n * not hurt performance and might actually improve it.\n * @return {boolean}\n * @private\n */\ngoog.dom.safe.isInnerHtmlCleanupRecursive_ =\n goog.functions.cacheReturnValue(function() {\n 'use strict';\n // `document` missing in some test frameworks.\n if (goog.DEBUG && typeof document === 'undefined') {\n return false;\n }\n // Create 3 nested <div>s without using innerHTML.\n // We're not chaining the appendChilds in one call, as this breaks\n // in a DocumentFragment.\n var div = document.createElement('div');\n var childDiv = document.createElement('div');\n childDiv.appendChild(document.createElement('div'));\n div.appendChild(childDiv);\n // `firstChild` is null in Google Js Test.\n if (goog.DEBUG && !div.firstChild) {\n return false;\n }\n var innerChild = div.firstChild.firstChild;\n div.innerHTML =\n goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY);\n return !innerChild.parentElement;\n });\n\n\n/**\n * Assigns HTML to an element's innerHTML property. Helper to use only here and\n * in soy.js.\n * @param {?Element|?ShadowRoot} elem The element whose innerHTML is to be\n * assigned to.\n * @param {!goog.html.SafeHtml} html\n */\ngoog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse = function(elem, html) {\n 'use strict';\n // See comment above goog.dom.safe.isInnerHtmlCleanupRecursive_.\n if (goog.dom.safe.isInnerHtmlCleanupRecursive_()) {\n while (elem.lastChild) {\n elem.removeChild(elem.lastChild);\n }\n }\n elem.innerHTML = goog.html.SafeHtml.unwrapTrustedHTML(html);\n};\n\n\n/**\n * Assigns known-safe HTML to an element's innerHTML property.\n * @param {!Element|!ShadowRoot} elem The element whose innerHTML is to be\n * assigned to.\n * @param {!goog.html.SafeHtml} html The known-safe HTML to assign.\n * @throws {Error} If called with one of these tags: math, script, style, svg,\n * template.\n */\ngoog.dom.safe.setInnerHtml = function(elem, html) {\n 'use strict';\n if (goog.asserts.ENABLE_ASSERTS && /** @type {?} */ (elem).tagName) {\n var tagName = /** @type {!Element} */ (elem).tagName.toUpperCase();\n if (goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[tagName]) {\n throw new Error(\n 'goog.dom.safe.setInnerHtml cannot be used to set content of ' +\n /** @type {!Element} */ (elem).tagName + '.');\n }\n }\n\n goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(elem, html);\n};\n\n\n/**\n * Assigns constant HTML to an element's innerHTML property.\n * @param {!Element} element The element whose innerHTML is to be assigned to.\n * @param {!goog.string.Const} constHtml The known-safe HTML to assign.\n * @throws {!Error} If called with one of these tags: math, script, style, svg,\n * template.\n */\ngoog.dom.safe.setInnerHtmlFromConstant = function(element, constHtml) {\n 'use strict';\n goog.dom.safe.setInnerHtml(\n element,\n goog.html.uncheckedconversions\n .safeHtmlFromStringKnownToSatisfyTypeContract(\n goog.string.Const.from('Constant HTML to be immediatelly used.'),\n goog.string.Const.unwrap(constHtml)));\n};\n\n\n/**\n * Assigns known-safe HTML to an element's outerHTML property.\n * @param {!Element} elem The element whose outerHTML is to be assigned to.\n * @param {!goog.html.SafeHtml} html The known-safe HTML to assign.\n */\ngoog.dom.safe.setOuterHtml = function(elem, html) {\n 'use strict';\n elem.outerHTML = goog.html.SafeHtml.unwrapTrustedHTML(html);\n};\n\n\n/**\n * Safely assigns a URL a form element's action property.\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to\n * form's action property. If url is of type string however, it is first\n * sanitized using goog.html.SafeUrl.sanitize.\n *\n * Example usage:\n * goog.dom.safe.setFormElementAction(formEl, url);\n * which is a safe alternative to\n * formEl.action = url;\n * The latter can result in XSS vulnerabilities if url is a\n * user-/attacker-controlled value.\n *\n * @param {!Element} form The form element whose action property\n * is to be assigned to.\n * @param {string|!goog.html.SafeUrl} url The URL to assign.\n * @return {void}\n * @see goog.html.SafeUrl#sanitize\n */\ngoog.dom.safe.setFormElementAction = function(form, url) {\n 'use strict';\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url);\n }\n goog.dom.asserts.assertIsHTMLFormElement(form).action =\n goog.html.SafeUrl.unwrap(safeUrl);\n};\n\n/**\n * Safely assigns a URL to a button element's formaction property.\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to\n * button's formaction property. If url is of type string however, it is first\n * sanitized using goog.html.SafeUrl.sanitize.\n *\n * Example usage:\n * goog.dom.safe.setButtonFormAction(buttonEl, url);\n * which is a safe alternative to\n * buttonEl.action = url;\n * The latter can result in XSS vulnerabilities if url is a\n * user-/attacker-controlled value.\n *\n * @param {!Element} button The button element whose action property\n * is to be assigned to.\n * @param {string|!goog.html.SafeUrl} url The URL to assign.\n * @return {void}\n * @see goog.html.SafeUrl#sanitize\n */\ngoog.dom.safe.setButtonFormAction = function(button, url) {\n 'use strict';\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url);\n }\n goog.dom.asserts.assertIsHTMLButtonElement(button).formAction =\n goog.html.SafeUrl.unwrap(safeUrl);\n};\n/**\n * Safely assigns a URL to an input element's formaction property.\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to\n * input's formaction property. If url is of type string however, it is first\n * sanitized using goog.html.SafeUrl.sanitize.\n *\n * Example usage:\n * goog.dom.safe.setInputFormAction(inputEl, url);\n * which is a safe alternative to\n * inputEl.action = url;\n * The latter can result in XSS vulnerabilities if url is a\n * user-/attacker-controlled value.\n *\n * @param {!Element} input The input element whose action property\n * is to be assigned to.\n * @param {string|!goog.html.SafeUrl} url The URL to assign.\n * @return {void}\n * @see goog.html.SafeUrl#sanitize\n */\ngoog.dom.safe.setInputFormAction = function(input, url) {\n 'use strict';\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url);\n }\n goog.dom.asserts.assertIsHTMLInputElement(input).formAction =\n goog.html.SafeUrl.unwrap(safeUrl);\n};\n\n/**\n * Sets the given element's style property to the contents of the provided\n * SafeStyle object.\n * @param {!Element} elem\n * @param {!goog.html.SafeStyle} style\n * @return {void}\n */\ngoog.dom.safe.setStyle = function(elem, style) {\n 'use strict';\n elem.style.cssText = goog.html.SafeStyle.unwrap(style);\n};\n\n\n/**\n * Writes known-safe HTML to a document.\n * @param {!Document} doc The document to be written to.\n * @param {!goog.html.SafeHtml} html The known-safe HTML to assign.\n * @return {void}\n */\ngoog.dom.safe.documentWrite = function(doc, html) {\n 'use strict';\n doc.write(goog.html.SafeHtml.unwrapTrustedHTML(html));\n};\n\n\n/**\n * Safely assigns a URL to an anchor element's href property.\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to\n * anchor's href property. If url is of type string however, it is first\n * sanitized using goog.html.SafeUrl.sanitize.\n *\n * Example usage:\n * goog.dom.safe.setAnchorHref(anchorEl, url);\n * which is a safe alternative to\n * anchorEl.href = url;\n * The latter can result in XSS vulnerabilities if url is a\n * user-/attacker-controlled value.\n *\n * @param {!HTMLAnchorElement} anchor The anchor element whose href property\n * is to be assigned to.\n * @param {string|!goog.html.SafeUrl} url The URL to assign.\n * @return {void}\n * @see goog.html.SafeUrl#sanitize\n */\ngoog.dom.safe.setAnchorHref = function(anchor, url) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLAnchorElement(anchor);\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url);\n }\n anchor.href = goog.html.SafeUrl.unwrap(safeUrl);\n};\n\n\n/**\n * Safely assigns a URL to a audio element's src property.\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to\n * audio's src property. If url is of type string however, it is first\n * sanitized using goog.html.SafeUrl.sanitize.\n *\n * @param {!HTMLAudioElement} audioElement The audio element whose src property\n * is to be assigned to.\n * @param {string|!goog.html.SafeUrl} url The URL to assign.\n * @return {void}\n * @see goog.html.SafeUrl#sanitize\n */\ngoog.dom.safe.setAudioSrc = function(audioElement, url) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLAudioElement(audioElement);\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n var allowDataUrl = /^data:audio\\//i.test(url);\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url, allowDataUrl);\n }\n audioElement.src = goog.html.SafeUrl.unwrap(safeUrl);\n};\n\n/**\n * Safely assigns a URL to a video element's src property.\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to\n * video's src property. If url is of type string however, it is first\n * sanitized using goog.html.SafeUrl.sanitize.\n *\n * @param {!HTMLVideoElement} videoElement The video element whose src property\n * is to be assigned to.\n * @param {string|!goog.html.SafeUrl} url The URL to assign.\n * @return {void}\n * @see goog.html.SafeUrl#sanitize\n */\ngoog.dom.safe.setVideoSrc = function(videoElement, url) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLVideoElement(videoElement);\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n var allowDataUrl = /^data:video\\//i.test(url);\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url, allowDataUrl);\n }\n videoElement.src = goog.html.SafeUrl.unwrap(safeUrl);\n};\n\n/**\n * Safely assigns a URL to an embed element's src property.\n *\n * Example usage:\n * goog.dom.safe.setEmbedSrc(embedEl, url);\n * which is a safe alternative to\n * embedEl.src = url;\n * The latter can result in loading untrusted code unless it is ensured that\n * the URL refers to a trustworthy resource.\n *\n * @param {!HTMLEmbedElement} embed The embed element whose src property\n * is to be assigned to.\n * @param {!goog.html.TrustedResourceUrl} url The URL to assign.\n */\ngoog.dom.safe.setEmbedSrc = function(embed, url) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLEmbedElement(embed);\n embed.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(url);\n};\n\n\n/**\n * Safely assigns a URL to a frame element's src property.\n *\n * Example usage:\n * goog.dom.safe.setFrameSrc(frameEl, url);\n * which is a safe alternative to\n * frameEl.src = url;\n * The latter can result in loading untrusted code unless it is ensured that\n * the URL refers to a trustworthy resource.\n *\n * @param {!HTMLFrameElement} frame The frame element whose src property\n * is to be assigned to.\n * @param {!goog.html.TrustedResourceUrl} url The URL to assign.\n * @return {void}\n */\ngoog.dom.safe.setFrameSrc = function(frame, url) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLFrameElement(frame);\n frame.src = goog.html.TrustedResourceUrl.unwrap(url);\n};\n\n\n/**\n * Safely assigns a URL to an iframe element's src property.\n *\n * Example usage:\n * goog.dom.safe.setIframeSrc(iframeEl, url);\n * which is a safe alternative to\n * iframeEl.src = url;\n * The latter can result in loading untrusted code unless it is ensured that\n * the URL refers to a trustworthy resource.\n *\n * @param {!HTMLIFrameElement} iframe The iframe element whose src property\n * is to be assigned to.\n * @param {!goog.html.TrustedResourceUrl} url The URL to assign.\n * @return {void}\n */\ngoog.dom.safe.setIframeSrc = function(iframe, url) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLIFrameElement(iframe);\n iframe.src = goog.html.TrustedResourceUrl.unwrap(url);\n};\n\n\n/**\n * Safely assigns HTML to an iframe element's srcdoc property.\n *\n * Example usage:\n * goog.dom.safe.setIframeSrcdoc(iframeEl, safeHtml);\n * which is a safe alternative to\n * iframeEl.srcdoc = html;\n * The latter can result in loading untrusted code.\n *\n * @param {!HTMLIFrameElement} iframe The iframe element whose srcdoc property\n * is to be assigned to.\n * @param {!goog.html.SafeHtml} html The HTML to assign.\n * @return {void}\n */\ngoog.dom.safe.setIframeSrcdoc = function(iframe, html) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLIFrameElement(iframe);\n iframe.srcdoc = goog.html.SafeHtml.unwrapTrustedHTML(html);\n};\n\n\n/**\n * Safely sets a link element's href and rel properties. Whether or not\n * the URL assigned to href has to be a goog.html.TrustedResourceUrl\n * depends on the value of the rel property. If rel contains \"stylesheet\"\n * then a TrustedResourceUrl is required.\n *\n * Example usage:\n * goog.dom.safe.setLinkHrefAndRel(linkEl, url, 'stylesheet');\n * which is a safe alternative to\n * linkEl.rel = 'stylesheet';\n * linkEl.href = url;\n * The latter can result in loading untrusted code unless it is ensured that\n * the URL refers to a trustworthy resource.\n *\n * @param {!HTMLLinkElement} link The link element whose href property\n * is to be assigned to.\n * @param {string|!goog.html.SafeUrl|!goog.html.TrustedResourceUrl} url The URL\n * to assign to the href property. Must be a TrustedResourceUrl if the\n * value assigned to rel contains \"stylesheet\". A string value is\n * sanitized with goog.html.SafeUrl.sanitize.\n * @param {string} rel The value to assign to the rel property.\n * @return {void}\n * @throws {Error} if rel contains \"stylesheet\" and url is not a\n * TrustedResourceUrl\n * @see goog.html.SafeUrl#sanitize\n */\ngoog.dom.safe.setLinkHrefAndRel = function(link, url, rel) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLLinkElement(link);\n link.rel = rel;\n if (goog.string.internal.caseInsensitiveContains(rel, 'stylesheet')) {\n goog.asserts.assert(\n url instanceof goog.html.TrustedResourceUrl,\n 'URL must be TrustedResourceUrl because \"rel\" contains \"stylesheet\"');\n link.href = goog.html.TrustedResourceUrl.unwrap(url);\n const win = link.ownerDocument && link.ownerDocument.defaultView;\n const nonce = goog.dom.safe.getStyleNonce(win);\n if (nonce) {\n link.setAttribute('nonce', nonce);\n }\n } else if (url instanceof goog.html.TrustedResourceUrl) {\n link.href = goog.html.TrustedResourceUrl.unwrap(url);\n } else if (url instanceof goog.html.SafeUrl) {\n link.href = goog.html.SafeUrl.unwrap(url);\n } else { // string\n // SafeUrl.sanitize must return legitimate SafeUrl when passed a string.\n link.href = goog.html.SafeUrl.unwrap(\n goog.html.SafeUrl.sanitizeAssertUnchanged(url));\n }\n};\n\n\n/**\n * Safely assigns a URL to an object element's data property.\n *\n * Example usage:\n * goog.dom.safe.setObjectData(objectEl, url);\n * which is a safe alternative to\n * objectEl.data = url;\n * The latter can result in loading untrusted code unless setit is ensured that\n * the URL refers to a trustworthy resource.\n *\n * @param {!HTMLObjectElement} object The object element whose data property\n * is to be assigned to.\n * @param {!goog.html.TrustedResourceUrl} url The URL to assign.\n * @return {void}\n */\ngoog.dom.safe.setObjectData = function(object, url) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLObjectElement(object);\n object.data = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(url);\n};\n\n\n/**\n * Safely assigns a URL to a script element's src property.\n *\n * Example usage:\n * goog.dom.safe.setScriptSrc(scriptEl, url);\n * which is a safe alternative to\n * scriptEl.src = url;\n * The latter can result in loading untrusted code unless it is ensured that\n * the URL refers to a trustworthy resource.\n *\n * @param {!HTMLScriptElement} script The script element whose src property\n * is to be assigned to.\n * @param {!goog.html.TrustedResourceUrl} url The URL to assign.\n * @return {void}\n */\ngoog.dom.safe.setScriptSrc = function(script, url) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLScriptElement(script);\n goog.dom.safe.setNonceForScriptElement_(script);\n script.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(url);\n};\n\n\n/**\n * Safely assigns a value to a script element's content.\n *\n * Example usage:\n * goog.dom.safe.setScriptContent(scriptEl, content);\n * which is a safe alternative to\n * scriptEl.text = content;\n * The latter can result in executing untrusted code unless it is ensured that\n * the code is loaded from a trustworthy resource.\n *\n * @param {!HTMLScriptElement} script The script element whose content is being\n * set.\n * @param {!goog.html.SafeScript} content The content to assign.\n * @return {void}\n */\ngoog.dom.safe.setScriptContent = function(script, content) {\n 'use strict';\n goog.dom.asserts.assertIsHTMLScriptElement(script);\n goog.dom.safe.setNonceForScriptElement_(script);\n script.textContent = goog.html.SafeScript.unwrapTrustedScript(content);\n};\n\n\n/**\n * Set nonce-based CSPs to dynamically created scripts.\n * @param {!HTMLScriptElement} script The script element whose nonce value\n * is to be calculated\n * @private\n */\ngoog.dom.safe.setNonceForScriptElement_ = function(script) {\n 'use strict';\n var win = script.ownerDocument && script.ownerDocument.defaultView;\n const nonce = goog.dom.safe.getScriptNonce(win);\n if (nonce) {\n script.setAttribute('nonce', nonce);\n }\n};\n\n\n/**\n * Safely assigns a URL to a Location object's href property.\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to\n * loc's href property. If url is of type string however, it is first sanitized\n * using goog.html.SafeUrl.sanitize.\n *\n * Example usage:\n * goog.dom.safe.setLocationHref(document.location, redirectUrl);\n * which is a safe alternative to\n * document.location.href = redirectUrl;\n * The latter can result in XSS vulnerabilities if redirectUrl is a\n * user-/attacker-controlled value.\n *\n * @param {!Location} loc The Location object whose href property is to be\n * assigned to.\n * @param {string|!goog.html.SafeUrl} url The URL to assign.\n * @return {void}\n * @see goog.html.SafeUrl#sanitize\n\n */\ngoog.dom.safe.setLocationHref = function(loc, url) {\n 'use strict';\n goog.dom.asserts.assertIsLocation(loc);\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url);\n }\n loc.href = goog.html.SafeUrl.unwrap(safeUrl);\n};\n\n/**\n * Safely assigns the URL of a Location object.\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and\n * passed to Location#assign. If url is of type string however, it is\n * first sanitized using goog.html.SafeUrl.sanitize.\n *\n * Example usage:\n * goog.dom.safe.assignLocation(document.location, newUrl);\n * which is a safe alternative to\n * document.location.assign(newUrl);\n * The latter can result in XSS vulnerabilities if newUrl is a\n * user-/attacker-controlled value.\n *\n * This has the same behaviour as setLocationHref, however some test\n * mock Location.assign instead of a property assignment.\n *\n * @param {!Location} loc The Location object which is to be assigned.\n * @param {string|!goog.html.SafeUrl} url The URL to assign.\n * @return {void}\n * @see goog.html.SafeUrl#sanitize\n */\ngoog.dom.safe.assignLocation = function(loc, url) {\n 'use strict';\n goog.dom.asserts.assertIsLocation(loc);\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url);\n }\n loc.assign(goog.html.SafeUrl.unwrap(safeUrl));\n};\n\n\n/**\n * Safely replaces the URL of a Location object.\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and\n * passed to Location#replace. If url is of type string however, it is\n * first sanitized using goog.html.SafeUrl.sanitize.\n *\n * Example usage:\n * goog.dom.safe.replaceLocation(document.location, newUrl);\n * which is a safe alternative to\n * document.location.replace(newUrl);\n * The latter can result in XSS vulnerabilities if newUrl is a\n * user-/attacker-controlled value.\n *\n * @param {!Location} loc The Location object which is to be replaced.\n * @param {string|!goog.html.SafeUrl} url The URL to assign.\n * @return {void}\n * @see goog.html.SafeUrl#sanitize\n */\ngoog.dom.safe.replaceLocation = function(loc, url) {\n 'use strict';\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url);\n }\n loc.replace(goog.html.SafeUrl.unwrap(safeUrl));\n};\n\n\n/**\n * Safely opens a URL in a new window (via window.open).\n *\n * If url is of type goog.html.SafeUrl, its value is unwrapped and passed in to\n * window.open. If url is of type string however, it is first sanitized\n * using goog.html.SafeUrl.sanitize.\n *\n * Note that this function does not prevent leakages via the referer that is\n * sent by window.open. It is advised to only use this to open 1st party URLs.\n *\n * Example usage:\n * goog.dom.safe.openInWindow(url);\n * which is a safe alternative to\n * window.open(url);\n * The latter can result in XSS vulnerabilities if url is a\n * user-/attacker-controlled value.\n *\n * @param {string|!goog.html.SafeUrl} url The URL to open.\n * @param {Window=} opt_openerWin Window of which to call the .open() method.\n * Defaults to the global window.\n * @param {!goog.string.Const|string=} opt_name Name of the window to open in.\n * Can be _top, etc as allowed by window.open(). This accepts string for\n * legacy reasons. Pass goog.string.Const if possible.\n * @param {string=} opt_specs Comma-separated list of specifications, same as\n * in window.open().\n * @return {Window} Window the url was opened in.\n */\ngoog.dom.safe.openInWindow = function(url, opt_openerWin, opt_name, opt_specs) {\n 'use strict';\n /** @type {!goog.html.SafeUrl} */\n var safeUrl;\n if (url instanceof goog.html.SafeUrl) {\n safeUrl = url;\n } else {\n safeUrl = goog.html.SafeUrl.sanitizeAssertUnchanged(url);\n }\n var win = opt_openerWin || goog.global;\n // If opt_name is undefined, simply passing that in to open() causes IE to\n // reuse the current window instead of opening a new one. Thus we pass '' in\n // instead, which according to spec opens a new window. See\n // https://html.spec.whatwg.org/multipage/browsers.html#dom-open .\n var name = opt_name instanceof goog.string.Const ?\n goog.string.Const.unwrap(opt_name) :\n opt_name || '';\n // Do not pass opt_specs to window.open unless it was provided by the caller.\n // IE11 will use it as a signal to open a new window rather than a new tab\n // (even if it is undefined).\n if (opt_specs !== undefined) {\n return win.open(goog.html.SafeUrl.unwrap(safeUrl), name, opt_specs);\n } else {\n return win.open(goog.html.SafeUrl.unwrap(safeUrl), name);\n }\n};\n\n\n/**\n * Parses the HTML as 'text/html'.\n * @param {!DOMParser} parser\n * @param {!goog.html.SafeHtml} html The HTML to be parsed.\n * @return {!Document}\n */\ngoog.dom.safe.parseFromStringHtml = function(parser, html) {\n 'use strict';\n return goog.dom.safe.parseFromString(parser, html, 'text/html');\n};\n\n\n/**\n * Parses the string.\n * @param {!DOMParser} parser\n * @param {!goog.html.SafeHtml} content Note: We don't have a special type for\n * XML or SVG supported by this function so we use SafeHtml.\n * @param {string} type\n * @return {!Document}\n */\ngoog.dom.safe.parseFromString = function(parser, content, type) {\n 'use strict';\n return parser.parseFromString(\n goog.html.SafeHtml.unwrapTrustedHTML(content), type);\n};\n\n\n/**\n * Safely creates an HTMLImageElement from a Blob.\n *\n * Example usage:\n * goog.dom.safe.createImageFromBlob(blob);\n * which is a safe alternative to\n * image.src = createObjectUrl(blob)\n * The latter can result in executing malicious same-origin scripts from a bad\n * Blob.\n * @param {!Blob} blob The blob to create the image from.\n * @return {!HTMLImageElement} The image element created from the blob.\n * @throws {!Error} If called with a Blob with a MIME type other than image/.*.\n */\ngoog.dom.safe.createImageFromBlob = function(blob) {\n 'use strict';\n // Any image/* MIME type is accepted as safe.\n if (!/^image\\/.*/g.test(blob.type)) {\n throw new Error(\n 'goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.');\n }\n var objectUrl = goog.global.URL.createObjectURL(blob);\n var image = new goog.global.Image();\n image.onload = function() {\n 'use strict';\n goog.global.URL.revokeObjectURL(objectUrl);\n };\n image.src = objectUrl;\n return image;\n};\n\n/**\n * Creates a DocumentFragment by parsing html in the context of a Range.\n * @param {!Range} range The Range object starting from the context node to\n * create a fragment in.\n * @param {!goog.html.SafeHtml} html HTML to create a fragment from.\n * @return {?DocumentFragment}\n */\ngoog.dom.safe.createContextualFragment = function(range, html) {\n 'use strict';\n return range.createContextualFragment(\n goog.html.SafeHtml.unwrapTrustedHTML(html));\n};\n\n/**\n * Returns CSP script nonce, if set for any <script> tag.\n * @param {?Window=} opt_window The window context used to retrieve the nonce.\n * Defaults to global context.\n * @return {string} CSP nonce or empty string if no nonce is present.\n */\ngoog.dom.safe.getScriptNonce = function(opt_window) {\n return goog.dom.safe.getNonce_('script[nonce]', opt_window);\n};\n\n/**\n * Returns CSP style nonce, if set for any <style> or <link rel=\"stylesheet\">\n * tag.\n * @param {?Window=} opt_window The window context used to retrieve the nonce.\n * Defaults to global context.\n * @return {string} CSP nonce or empty string if no nonce is present.\n */\ngoog.dom.safe.getStyleNonce = function(opt_window) {\n return goog.dom.safe.getNonce_(\n 'style[nonce],link[rel=\"stylesheet\"][nonce]', opt_window);\n};\n\n/**\n * According to the CSP3 spec a nonce must be a valid base64 string.\n * @see https://www.w3.org/TR/CSP3/#grammardef-base64-value\n * @private @const\n */\ngoog.dom.safe.NONCE_PATTERN_ = /^[\\w+/_-]+[=]{0,2}$/;\n\n/**\n * Returns CSP nonce, if set for any tag of given type.\n * @param {string} selector Selector for locating the element with nonce.\n * @param {?Window=} win The window context used to retrieve the nonce.\n * @return {string} CSP nonce or empty string if no nonce is present.\n * @private\n */\ngoog.dom.safe.getNonce_ = function(selector, win) {\n const doc = (win || goog.global).document;\n if (!doc.querySelector) {\n return '';\n }\n let el = doc.querySelector(selector);\n if (el) {\n // Try to get the nonce from the IDL property first, because browsers that\n // implement additional nonce protection features (currently only Chrome) to\n // prevent nonce stealing via CSS do not expose the nonce via attributes.\n // See https://github.com/whatwg/html/issues/2369\n const nonce = el['nonce'] || el.getAttribute('nonce');\n if (nonce && goog.dom.safe.NONCE_PATTERN_.test(nonce)) {\n return nonce;\n }\n }\n return '';\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Utilities for string manipulation.\n */\n\n\n/**\n * Namespace for string utilities\n */\ngoog.provide('goog.string');\ngoog.provide('goog.string.Unicode');\n\ngoog.require('goog.dom.safe');\ngoog.require('goog.html.uncheckedconversions');\ngoog.require('goog.string.Const');\ngoog.require('goog.string.internal');\n\n\n/**\n * @define {boolean} Enables HTML escaping of lowercase letter \"e\" which helps\n * with detection of double-escaping as this letter is frequently used.\n */\ngoog.string.DETECT_DOUBLE_ESCAPING =\n goog.define('goog.string.DETECT_DOUBLE_ESCAPING', false);\n\n\n/**\n * @define {boolean} Whether to force non-dom html unescaping.\n */\ngoog.string.FORCE_NON_DOM_HTML_UNESCAPING =\n goog.define('goog.string.FORCE_NON_DOM_HTML_UNESCAPING', false);\n\n\n/**\n * Common Unicode string characters.\n * @enum {string}\n */\ngoog.string.Unicode = {\n NBSP: '\\xa0',\n ZERO_WIDTH_SPACE: '\\u200b' // This is equivalent to <wbr>.\n};\n\n\n/**\n * Fast prefix-checker.\n * @param {string} str The string to check.\n * @param {string} prefix A string to look for at the start of `str`.\n * @return {boolean} True if `str` begins with `prefix`.\n */\ngoog.string.startsWith = goog.string.internal.startsWith;\n\n\n/**\n * Fast suffix-checker.\n * @param {string} str The string to check.\n * @param {string} suffix A string to look for at the end of `str`.\n * @return {boolean} True if `str` ends with `suffix`.\n */\ngoog.string.endsWith = goog.string.internal.endsWith;\n\n\n/**\n * Case-insensitive prefix-checker.\n * @param {string} str The string to check.\n * @param {string} prefix A string to look for at the end of `str`.\n * @return {boolean} True if `str` begins with `prefix` (ignoring\n * case).\n */\ngoog.string.caseInsensitiveStartsWith =\n goog.string.internal.caseInsensitiveStartsWith;\n\n\n/**\n * Case-insensitive suffix-checker.\n * @param {string} str The string to check.\n * @param {string} suffix A string to look for at the end of `str`.\n * @return {boolean} True if `str` ends with `suffix` (ignoring\n * case).\n */\ngoog.string.caseInsensitiveEndsWith =\n goog.string.internal.caseInsensitiveEndsWith;\n\n\n/**\n * Case-insensitive equality checker.\n * @param {string} str1 First string to check.\n * @param {string} str2 Second string to check.\n * @return {boolean} True if `str1` and `str2` are the same string,\n * ignoring case.\n */\ngoog.string.caseInsensitiveEquals = goog.string.internal.caseInsensitiveEquals;\n\n\n/**\n * Does simple python-style string substitution.\n * subs(\"foo%s hot%s\", \"bar\", \"dog\") becomes \"foobar hotdog\".\n * @param {string} str The string containing the pattern.\n * @param {...*} var_args The items to substitute into the pattern.\n * @return {string} A copy of `str` in which each occurrence of\n * {@code %s} has been replaced an argument from `var_args`.\n */\ngoog.string.subs = function(str, var_args) {\n 'use strict';\n const splitParts = str.split('%s');\n let returnString = '';\n\n const subsArguments = Array.prototype.slice.call(arguments, 1);\n while (subsArguments.length &&\n // Replace up to the last split part. We are inserting in the\n // positions between split parts.\n splitParts.length > 1) {\n returnString += splitParts.shift() + subsArguments.shift();\n }\n\n return returnString + splitParts.join('%s'); // Join unused '%s'\n};\n\n\n/**\n * Converts multiple whitespace chars (spaces, non-breaking-spaces, new lines\n * and tabs) to a single space, and strips leading and trailing whitespace.\n * @param {string} str Input string.\n * @return {string} A copy of `str` with collapsed whitespace.\n */\ngoog.string.collapseWhitespace = function(str) {\n 'use strict';\n // Since IE doesn't include non-breaking-space (0xa0) in their \\s character\n // class (as required by section 7.2 of the ECMAScript spec), we explicitly\n // include it in the regexp to enforce consistent cross-browser behavior.\n return str.replace(/[\\s\\xa0]+/g, ' ').replace(/^\\s+|\\s+$/g, '');\n};\n\n\n/**\n * Checks if a string is empty or contains only whitespaces.\n * @param {string} str The string to check.\n * @return {boolean} Whether `str` is empty or whitespace only.\n */\ngoog.string.isEmptyOrWhitespace = goog.string.internal.isEmptyOrWhitespace;\n\n\n/**\n * Checks if a string is empty.\n * @param {string} str The string to check.\n * @return {boolean} Whether `str` is empty.\n */\ngoog.string.isEmptyString = function(str) {\n 'use strict';\n return str.length == 0;\n};\n\n\n/**\n * Checks if a string is empty or contains only whitespaces.\n *\n * @param {string} str The string to check.\n * @return {boolean} Whether `str` is empty or whitespace only.\n * @deprecated Use goog.string.isEmptyOrWhitespace instead.\n */\ngoog.string.isEmpty = goog.string.isEmptyOrWhitespace;\n\n\n/**\n * Checks if a string is null, undefined, empty or contains only whitespaces.\n * @param {*} str The string to check.\n * @return {boolean} Whether `str` is null, undefined, empty, or\n * whitespace only.\n * @deprecated Use goog.string.isEmptyOrWhitespace(goog.string.makeSafe(str))\n * instead.\n */\ngoog.string.isEmptyOrWhitespaceSafe = function(str) {\n 'use strict';\n return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(str));\n};\n\n\n/**\n * Checks if a string is null, undefined, empty or contains only whitespaces.\n *\n * @param {*} str The string to check.\n * @return {boolean} Whether `str` is null, undefined, empty, or\n * whitespace only.\n * @deprecated Use goog.string.isEmptyOrWhitespace instead.\n */\ngoog.string.isEmptySafe = goog.string.isEmptyOrWhitespaceSafe;\n\n\n/**\n * Checks if a string is all breaking whitespace.\n * @param {string} str The string to check.\n * @return {boolean} Whether the string is all breaking whitespace.\n */\ngoog.string.isBreakingWhitespace = function(str) {\n 'use strict';\n return !/[^\\t\\n\\r ]/.test(str);\n};\n\n\n/**\n * Checks if a string contains all letters.\n * @param {string} str string to check.\n * @return {boolean} True if `str` consists entirely of letters.\n */\ngoog.string.isAlpha = function(str) {\n 'use strict';\n return !/[^a-zA-Z]/.test(str);\n};\n\n\n/**\n * Checks if a string contains only numbers.\n * @param {*} str string to check. If not a string, it will be\n * casted to one.\n * @return {boolean} True if `str` is numeric.\n */\ngoog.string.isNumeric = function(str) {\n 'use strict';\n return !/[^0-9]/.test(str);\n};\n\n\n/**\n * Checks if a string contains only numbers or letters.\n * @param {string} str string to check.\n * @return {boolean} True if `str` is alphanumeric.\n */\ngoog.string.isAlphaNumeric = function(str) {\n 'use strict';\n return !/[^a-zA-Z0-9]/.test(str);\n};\n\n\n/**\n * Checks if a character is a space character.\n * @param {string} ch Character to check.\n * @return {boolean} True if `ch` is a space.\n */\ngoog.string.isSpace = function(ch) {\n 'use strict';\n return ch == ' ';\n};\n\n\n/**\n * Checks if a character is a valid unicode character.\n * @param {string} ch Character to check.\n * @return {boolean} True if `ch` is a valid unicode character.\n */\ngoog.string.isUnicodeChar = function(ch) {\n 'use strict';\n return ch.length == 1 && ch >= ' ' && ch <= '~' ||\n ch >= '\\u0080' && ch <= '\\uFFFD';\n};\n\n\n/**\n * Takes a string and replaces newlines with a space. Multiple lines are\n * replaced with a single space.\n * @param {string} str The string from which to strip newlines.\n * @return {string} A copy of `str` stripped of newlines.\n */\ngoog.string.stripNewlines = function(str) {\n 'use strict';\n return str.replace(/(\\r\\n|\\r|\\n)+/g, ' ');\n};\n\n\n/**\n * Replaces Windows and Mac new lines with unix style: \\r or \\r\\n with \\n.\n * @param {string} str The string to in which to canonicalize newlines.\n * @return {string} `str` A copy of {@code} with canonicalized newlines.\n */\ngoog.string.canonicalizeNewlines = function(str) {\n 'use strict';\n return str.replace(/(\\r\\n|\\r|\\n)/g, '\\n');\n};\n\n\n/**\n * Normalizes whitespace in a string, replacing all whitespace chars with\n * a space.\n * @param {string} str The string in which to normalize whitespace.\n * @return {string} A copy of `str` with all whitespace normalized.\n */\ngoog.string.normalizeWhitespace = function(str) {\n 'use strict';\n return str.replace(/\\xa0|\\s/g, ' ');\n};\n\n\n/**\n * Normalizes spaces in a string, replacing all consecutive spaces and tabs\n * with a single space. Replaces non-breaking space with a space.\n * @param {string} str The string in which to normalize spaces.\n * @return {string} A copy of `str` with all consecutive spaces and tabs\n * replaced with a single space.\n */\ngoog.string.normalizeSpaces = function(str) {\n 'use strict';\n return str.replace(/\\xa0|[ \\t]+/g, ' ');\n};\n\n\n/**\n * Removes the breaking spaces from the left and right of the string and\n * collapses the sequences of breaking spaces in the middle into single spaces.\n * The original and the result strings render the same way in HTML.\n * @param {string} str A string in which to collapse spaces.\n * @return {string} Copy of the string with normalized breaking spaces.\n */\ngoog.string.collapseBreakingSpaces = function(str) {\n 'use strict';\n return str.replace(/[\\t\\r\\n ]+/g, ' ')\n .replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g, '');\n};\n\n\n/**\n * Trims white spaces to the left and right of a string.\n * @param {string} str The string to trim.\n * @return {string} A trimmed copy of `str`.\n */\ngoog.string.trim = goog.string.internal.trim;\n\n\n/**\n * Trims whitespaces at the left end of a string.\n * @param {string} str The string to left trim.\n * @return {string} A trimmed copy of `str`.\n */\ngoog.string.trimLeft = function(str) {\n 'use strict';\n // Since IE doesn't include non-breaking-space (0xa0) in their \\s character\n // class (as required by section 7.2 of the ECMAScript spec), we explicitly\n // include it in the regexp to enforce consistent cross-browser behavior.\n return str.replace(/^[\\s\\xa0]+/, '');\n};\n\n\n/**\n * Trims whitespaces at the right end of a string.\n * @param {string} str The string to right trim.\n * @return {string} A trimmed copy of `str`.\n */\ngoog.string.trimRight = function(str) {\n 'use strict';\n // Since IE doesn't include non-breaking-space (0xa0) in their \\s character\n // class (as required by section 7.2 of the ECMAScript spec), we explicitly\n // include it in the regexp to enforce consistent cross-browser behavior.\n return str.replace(/[\\s\\xa0]+$/, '');\n};\n\n\n/**\n * A string comparator that ignores case.\n * -1 = str1 less than str2\n * 0 = str1 equals str2\n * 1 = str1 greater than str2\n *\n * @param {string} str1 The string to compare.\n * @param {string} str2 The string to compare `str1` to.\n * @return {number} The comparator result, as described above.\n */\ngoog.string.caseInsensitiveCompare =\n goog.string.internal.caseInsensitiveCompare;\n\n\n/**\n * Compares two strings interpreting their numeric substrings as numbers.\n *\n * @param {string} str1 First string.\n * @param {string} str2 Second string.\n * @param {!RegExp} tokenizerRegExp Splits a string into substrings of\n * non-negative integers, non-numeric characters and optionally fractional\n * numbers starting with a decimal point.\n * @return {number} Negative if str1 < str2, 0 is str1 == str2, positive if\n * str1 > str2.\n * @private\n */\ngoog.string.numberAwareCompare_ = function(str1, str2, tokenizerRegExp) {\n 'use strict';\n if (str1 == str2) {\n return 0;\n }\n if (!str1) {\n return -1;\n }\n if (!str2) {\n return 1;\n }\n\n // Using match to split the entire string ahead of time turns out to be faster\n // for most inputs than using RegExp.exec or iterating over each character.\n const tokens1 = str1.toLowerCase().match(tokenizerRegExp);\n const tokens2 = str2.toLowerCase().match(tokenizerRegExp);\n\n const count = Math.min(tokens1.length, tokens2.length);\n\n for (let i = 0; i < count; i++) {\n const a = tokens1[i];\n const b = tokens2[i];\n\n // Compare pairs of tokens, returning if one token sorts before the other.\n if (a != b) {\n // Only if both tokens are integers is a special comparison required.\n // Decimal numbers are sorted as strings (e.g., '.09' < '.1').\n const num1 = parseInt(a, 10);\n if (!isNaN(num1)) {\n const num2 = parseInt(b, 10);\n if (!isNaN(num2) && num1 - num2) {\n return num1 - num2;\n }\n }\n return a < b ? -1 : 1;\n }\n }\n\n // If one string is a substring of the other, the shorter string sorts first.\n if (tokens1.length != tokens2.length) {\n return tokens1.length - tokens2.length;\n }\n\n // The two strings must be equivalent except for case (perfect equality is\n // tested at the head of the function.) Revert to default ASCII string\n // comparison to stabilize the sort.\n return str1 < str2 ? -1 : 1;\n};\n\n\n/**\n * String comparison function that handles non-negative integer numbers in a\n * way humans might expect. Using this function, the string 'File 2.jpg' sorts\n * before 'File 10.jpg', and 'Version 1.9' before 'Version 1.10'. The comparison\n * is mostly case-insensitive, though strings that are identical except for case\n * are sorted with the upper-case strings before lower-case.\n *\n * This comparison function is up to 50x slower than either the default or the\n * case-insensitive compare. It should not be used in time-critical code, but\n * should be fast enough to sort several hundred short strings (like filenames)\n * with a reasonable delay.\n *\n * @param {string} str1 The string to compare in a numerically sensitive way.\n * @param {string} str2 The string to compare `str1` to.\n * @return {number} less than 0 if str1 < str2, 0 if str1 == str2, greater than\n * 0 if str1 > str2.\n */\ngoog.string.intAwareCompare = function(str1, str2) {\n 'use strict';\n return goog.string.numberAwareCompare_(str1, str2, /\\d+|\\D+/g);\n};\n\n\n/**\n * String comparison function that handles non-negative integer and fractional\n * numbers in a way humans might expect. Using this function, the string\n * 'File 2.jpg' sorts before 'File 10.jpg', and '3.14' before '3.2'. Equivalent\n * to {@link goog.string.intAwareCompare} apart from the way how it interprets\n * dots.\n *\n * @param {string} str1 The string to compare in a numerically sensitive way.\n * @param {string} str2 The string to compare `str1` to.\n * @return {number} less than 0 if str1 < str2, 0 if str1 == str2, greater than\n * 0 if str1 > str2.\n */\ngoog.string.floatAwareCompare = function(str1, str2) {\n 'use strict';\n return goog.string.numberAwareCompare_(str1, str2, /\\d+|\\.\\d+|\\D+/g);\n};\n\n\n/**\n * Alias for {@link goog.string.floatAwareCompare}.\n *\n * @param {string} str1\n * @param {string} str2\n * @return {number}\n */\ngoog.string.numerateCompare = goog.string.floatAwareCompare;\n\n\n/**\n * URL-encodes a string\n * @param {*} str The string to url-encode.\n * @return {string} An encoded copy of `str` that is safe for urls.\n * Note that '#', ':', and other characters used to delimit portions\n * of URLs *will* be encoded.\n */\ngoog.string.urlEncode = function(str) {\n 'use strict';\n return encodeURIComponent(String(str));\n};\n\n\n/**\n * URL-decodes the string. We need to specially handle '+'s because\n * the javascript library doesn't convert them to spaces.\n * @param {string} str The string to url decode.\n * @return {string} The decoded `str`.\n */\ngoog.string.urlDecode = function(str) {\n 'use strict';\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n};\n\n\n/**\n * Converts \\n to <br>s or <br />s.\n * @param {string} str The string in which to convert newlines.\n * @param {boolean=} opt_xml Whether to use XML compatible tags.\n * @return {string} A copy of `str` with converted newlines.\n */\ngoog.string.newLineToBr = goog.string.internal.newLineToBr;\n\n\n/**\n * Escapes double quote '\"' and single quote '\\'' characters in addition to\n * '&', '<', and '>' so that a string can be included in an HTML tag attribute\n * value within double or single quotes.\n *\n * It should be noted that > doesn't need to be escaped for the HTML or XML to\n * be valid, but it has been decided to escape it for consistency with other\n * implementations.\n *\n * With goog.string.DETECT_DOUBLE_ESCAPING, this function escapes also the\n * lowercase letter \"e\".\n *\n * NOTE(user):\n * HtmlEscape is often called during the generation of large blocks of HTML.\n * Using statics for the regular expressions and strings is an optimization\n * that can more than half the amount of time IE spends in this function for\n * large apps, since strings and regexes both contribute to GC allocations.\n *\n * Testing for the presence of a character before escaping increases the number\n * of function calls, but actually provides a speed increase for the average\n * case -- since the average case often doesn't require the escaping of all 4\n * characters and indexOf() is much cheaper than replace().\n * The worst case does suffer slightly from the additional calls, therefore the\n * opt_isLikelyToContainHtmlChars option has been included for situations\n * where all 4 HTML entities are very likely to be present and need escaping.\n *\n * Some benchmarks (times tended to fluctuate +-0.05ms):\n * FireFox IE6\n * (no chars / average (mix of cases) / all 4 chars)\n * no checks 0.13 / 0.22 / 0.22 0.23 / 0.53 / 0.80\n * indexOf 0.08 / 0.17 / 0.26 0.22 / 0.54 / 0.84\n * indexOf + re test 0.07 / 0.17 / 0.28 0.19 / 0.50 / 0.85\n *\n * An additional advantage of checking if replace actually needs to be called\n * is a reduction in the number of object allocations, so as the size of the\n * application grows the difference between the various methods would increase.\n *\n * @param {string} str string to be escaped.\n * @param {boolean=} opt_isLikelyToContainHtmlChars Don't perform a check to see\n * if the character needs replacing - use this option if you expect each of\n * the characters to appear often. Leave false if you expect few html\n * characters to occur in your strings, such as if you are escaping HTML.\n * @return {string} An escaped copy of `str`.\n */\ngoog.string.htmlEscape = function(str, opt_isLikelyToContainHtmlChars) {\n 'use strict';\n str = goog.string.internal.htmlEscape(str, opt_isLikelyToContainHtmlChars);\n if (goog.string.DETECT_DOUBLE_ESCAPING) {\n str = str.replace(goog.string.E_RE_, '&#101;');\n }\n return str;\n};\n\n\n/**\n * Regular expression that matches a lowercase letter \"e\", for use in escaping.\n * @const {!RegExp}\n * @private\n */\ngoog.string.E_RE_ = /e/g;\n\n\n/**\n * Unescapes an HTML string.\n *\n * @param {string} str The string to unescape.\n * @return {string} An unescaped copy of `str`.\n */\ngoog.string.unescapeEntities = function(str) {\n 'use strict';\n if (goog.string.contains(str, '&')) {\n // We are careful not to use a DOM if we do not have one or we explicitly\n // requested non-DOM html unescaping.\n if (!goog.string.FORCE_NON_DOM_HTML_UNESCAPING &&\n 'document' in goog.global) {\n return goog.string.unescapeEntitiesUsingDom_(str);\n } else {\n // Fall back on pure XML entities\n return goog.string.unescapePureXmlEntities_(str);\n }\n }\n return str;\n};\n\n\n/**\n * Unescapes a HTML string using the provided document.\n *\n * @param {string} str The string to unescape.\n * @param {!Document} document A document to use in escaping the string.\n * @return {string} An unescaped copy of `str`.\n */\ngoog.string.unescapeEntitiesWithDocument = function(str, document) {\n 'use strict';\n if (goog.string.contains(str, '&')) {\n return goog.string.unescapeEntitiesUsingDom_(str, document);\n }\n return str;\n};\n\n\n/**\n * Unescapes an HTML string using a DOM to resolve non-XML, non-numeric\n * entities. This function is XSS-safe and whitespace-preserving.\n * @private\n * @param {string} str The string to unescape.\n * @param {Document=} opt_document An optional document to use for creating\n * elements. If this is not specified then the default window.document\n * will be used.\n * @return {string} The unescaped `str` string.\n */\ngoog.string.unescapeEntitiesUsingDom_ = function(str, opt_document) {\n 'use strict';\n /** @type {!Object<string, string>} */\n const seen = {'&amp;': '&', '&lt;': '<', '&gt;': '>', '&quot;': '\"'};\n /** @type {!Element} */\n let div;\n if (opt_document) {\n div = opt_document.createElement('div');\n } else {\n div = goog.global.document.createElement('div');\n }\n // Match as many valid entity characters as possible. If the actual entity\n // happens to be shorter, it will still work as innerHTML will return the\n // trailing characters unchanged. Since the entity characters do not include\n // open angle bracket, there is no chance of XSS from the innerHTML use.\n // Since no whitespace is passed to innerHTML, whitespace is preserved.\n return str.replace(goog.string.HTML_ENTITY_PATTERN_, function(s, entity) {\n 'use strict';\n // Check for cached entity.\n let value = seen[s];\n if (value) {\n return value;\n }\n // Check for numeric entity.\n if (entity.charAt(0) == '#') {\n // Prefix with 0 so that hex entities (e.g. &#x10) parse as hex numbers.\n const n = Number('0' + entity.slice(1));\n if (!isNaN(n)) {\n value = String.fromCharCode(n);\n }\n }\n // Fall back to innerHTML otherwise.\n if (!value) {\n // Append a non-entity character to avoid a bug in Webkit that parses\n // an invalid entity at the end of innerHTML text as the empty string.\n goog.dom.safe.setInnerHtml(\n div,\n goog.html.uncheckedconversions\n .safeHtmlFromStringKnownToSatisfyTypeContract(\n goog.string.Const.from('Single HTML entity.'), s + ' '));\n // Then remove the trailing character from the result.\n value = div.firstChild.nodeValue.slice(0, -1);\n }\n // Cache and return.\n return seen[s] = value;\n });\n};\n\n\n/**\n * Unescapes XML entities.\n * @private\n * @param {string} str The string to unescape.\n * @return {string} An unescaped copy of `str`.\n */\ngoog.string.unescapePureXmlEntities_ = function(str) {\n 'use strict';\n return str.replace(/&([^;]+);/g, function(s, entity) {\n 'use strict';\n switch (entity) {\n case 'amp':\n return '&';\n case 'lt':\n return '<';\n case 'gt':\n return '>';\n case 'quot':\n return '\"';\n default:\n if (entity.charAt(0) == '#') {\n // Prefix with 0 so that hex entities (e.g. &#x10) parse as hex.\n const n = Number('0' + entity.slice(1));\n if (!isNaN(n)) {\n return String.fromCharCode(n);\n }\n }\n // For invalid entities we just return the entity\n return s;\n }\n });\n};\n\n\n/**\n * Regular expression that matches an HTML entity.\n * See also HTML5: Tokenization / Tokenizing character references.\n * @private\n * @type {!RegExp}\n */\ngoog.string.HTML_ENTITY_PATTERN_ = /&([^;\\s<&]+);?/g;\n\n\n/**\n * Do escaping of whitespace to preserve spatial formatting. We use character\n * entity #160 to make it safer for xml.\n * @param {string} str The string in which to escape whitespace.\n * @param {boolean=} opt_xml Whether to use XML compatible tags.\n * @return {string} An escaped copy of `str`.\n */\ngoog.string.whitespaceEscape = function(str, opt_xml) {\n 'use strict';\n // This doesn't use goog.string.preserveSpaces for backwards compatibility.\n return goog.string.newLineToBr(str.replace(/ /g, ' &#160;'), opt_xml);\n};\n\n\n/**\n * Preserve spaces that would be otherwise collapsed in HTML by replacing them\n * with non-breaking space Unicode characters.\n * @param {string} str The string in which to preserve whitespace.\n * @return {string} A copy of `str` with preserved whitespace.\n */\ngoog.string.preserveSpaces = function(str) {\n 'use strict';\n return str.replace(/(^|[\\n ]) /g, '$1' + goog.string.Unicode.NBSP);\n};\n\n\n/**\n * Strip quote characters around a string. The second argument is a string of\n * characters to treat as quotes. This can be a single character or a string of\n * multiple character and in that case each of those are treated as possible\n * quote characters. For example:\n *\n * <pre>\n * goog.string.stripQuotes('\"abc\"', '\"`') --\u003e 'abc'\n * goog.string.stripQuotes('`abc`', '\"`') --\u003e 'abc'\n * </pre>\n *\n * @param {string} str The string to strip.\n * @param {string} quoteChars The quote characters to strip.\n * @return {string} A copy of `str` without the quotes.\n */\ngoog.string.stripQuotes = function(str, quoteChars) {\n 'use strict';\n const length = quoteChars.length;\n for (let i = 0; i < length; i++) {\n const quoteChar = length == 1 ? quoteChars : quoteChars.charAt(i);\n if (str.charAt(0) == quoteChar && str.charAt(str.length - 1) == quoteChar) {\n return str.substring(1, str.length - 1);\n }\n }\n return str;\n};\n\n\n/**\n * Truncates a string to a certain length and adds '...' if necessary. The\n * length also accounts for the ellipsis, so a maximum length of 10 and a string\n * 'Hello World!' produces 'Hello W...'.\n * @param {string} str The string to truncate.\n * @param {number} chars Max number of characters.\n * @param {boolean=} opt_protectEscapedCharacters Whether to protect escaped\n * characters from being cut off in the middle.\n * @return {string} The truncated `str` string.\n */\ngoog.string.truncate = function(str, chars, opt_protectEscapedCharacters) {\n 'use strict';\n if (opt_protectEscapedCharacters) {\n str = goog.string.unescapeEntities(str);\n }\n\n if (str.length > chars) {\n str = str.substring(0, chars - 3) + '...';\n }\n\n if (opt_protectEscapedCharacters) {\n str = goog.string.htmlEscape(str);\n }\n\n return str;\n};\n\n\n/**\n * Truncate a string in the middle, adding \"...\" if necessary,\n * and favoring the beginning of the string.\n * @param {string} str The string to truncate the middle of.\n * @param {number} chars Max number of characters.\n * @param {boolean=} opt_protectEscapedCharacters Whether to protect escaped\n * characters from being cutoff in the middle.\n * @param {number=} opt_trailingChars Optional number of trailing characters to\n * leave at the end of the string, instead of truncating as close to the\n * middle as possible.\n * @return {string} A truncated copy of `str`.\n */\ngoog.string.truncateMiddle = function(\n str, chars, opt_protectEscapedCharacters, opt_trailingChars) {\n 'use strict';\n if (opt_protectEscapedCharacters) {\n str = goog.string.unescapeEntities(str);\n }\n\n if (opt_trailingChars && str.length > chars) {\n if (opt_trailingChars > chars) {\n opt_trailingChars = chars;\n }\n const endPoint = str.length - opt_trailingChars;\n const startPoint = chars - opt_trailingChars;\n str = str.substring(0, startPoint) + '...' + str.substring(endPoint);\n } else if (str.length > chars) {\n // Favor the beginning of the string:\n let half = Math.floor(chars / 2);\n const endPos = str.length - half;\n half += chars % 2;\n str = str.substring(0, half) + '...' + str.substring(endPos);\n }\n\n if (opt_protectEscapedCharacters) {\n str = goog.string.htmlEscape(str);\n }\n\n return str;\n};\n\n\n/**\n * Special chars that need to be escaped for goog.string.quote.\n * @private {!Object<string, string>}\n */\ngoog.string.specialEscapeChars_ = {\n '\\0': '\\\\0',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\x0B': '\\\\x0B', // '\\v' is not supported in JScript\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n // To support the use case of embedding quoted strings inside of script\n // tags, we have to make sure HTML comments and opening/closing script tags do\n // not appear in the resulting string. The specific strings that must be\n // escaped are documented at:\n // https://html.spec.whatwg.org/multipage/scripting.html#restrictions-for-contents-of-script-elements\n '<': '\\\\u003C' // NOTE: JSON.parse crashes on '\\\\x3c'.\n};\n\n\n/**\n * Character mappings used internally for goog.string.escapeChar.\n * @private {!Object<string, string>}\n */\ngoog.string.jsEscapeCache_ = {\n '\\'': '\\\\\\''\n};\n\n\n/**\n * Encloses a string in double quotes and escapes characters so that the\n * string is a valid JS string. The resulting string is safe to embed in\n * `<script>` tags as \"<\" is escaped.\n * @param {string} s The string to quote.\n * @return {string} A copy of `s` surrounded by double quotes.\n */\ngoog.string.quote = function(s) {\n 'use strict';\n s = String(s);\n const sb = ['\"'];\n for (let i = 0; i < s.length; i++) {\n const ch = s.charAt(i);\n const cc = ch.charCodeAt(0);\n sb[i + 1] = goog.string.specialEscapeChars_[ch] ||\n ((cc > 31 && cc < 127) ? ch : goog.string.escapeChar(ch));\n }\n sb.push('\"');\n return sb.join('');\n};\n\n\n/**\n * Takes a string and returns the escaped string for that input string.\n * @param {string} str The string to escape.\n * @return {string} An escaped string representing `str`.\n */\ngoog.string.escapeString = function(str) {\n 'use strict';\n const sb = [];\n for (let i = 0; i < str.length; i++) {\n sb[i] = goog.string.escapeChar(str.charAt(i));\n }\n return sb.join('');\n};\n\n\n/**\n * Takes a character and returns the escaped string for that character. For\n * example escapeChar(String.fromCharCode(15)) -> \"\\\\x0E\".\n * @param {string} c The character to escape.\n * @return {string} An escaped string representing `c`.\n */\ngoog.string.escapeChar = function(c) {\n 'use strict';\n if (c in goog.string.jsEscapeCache_) {\n return goog.string.jsEscapeCache_[c];\n }\n\n if (c in goog.string.specialEscapeChars_) {\n return goog.string.jsEscapeCache_[c] = goog.string.specialEscapeChars_[c];\n }\n\n let rv = c;\n const cc = c.charCodeAt(0);\n if (cc > 31 && cc < 127) {\n rv = c;\n } else {\n // tab is 9 but handled above\n if (cc < 256) {\n rv = '\\\\x';\n if (cc < 16 || cc > 256) {\n rv += '0';\n }\n } else {\n rv = '\\\\u';\n if (cc < 4096) { // \\u1000\n rv += '0';\n }\n }\n rv += cc.toString(16).toUpperCase();\n }\n\n return goog.string.jsEscapeCache_[c] = rv;\n};\n\n\n/**\n * Determines whether a string contains a substring.\n * @param {string} str The string to search.\n * @param {string} subString The substring to search for.\n * @return {boolean} Whether `str` contains `subString`.\n */\ngoog.string.contains = goog.string.internal.contains;\n\n\n/**\n * Determines whether a string contains a substring, ignoring case.\n * @param {string} str The string to search.\n * @param {string} subString The substring to search for.\n * @return {boolean} Whether `str` contains `subString`.\n */\ngoog.string.caseInsensitiveContains =\n goog.string.internal.caseInsensitiveContains;\n\n\n/**\n * Returns the non-overlapping occurrences of ss in s.\n * If either s or ss evalutes to false, then returns zero.\n * @param {string} s The string to look in.\n * @param {string} ss The string to look for.\n * @return {number} Number of occurrences of ss in s.\n */\ngoog.string.countOf = function(s, ss) {\n 'use strict';\n return s && ss ? s.split(ss).length - 1 : 0;\n};\n\n\n/**\n * Removes a substring of a specified length at a specific\n * index in a string.\n * @param {string} s The base string from which to remove.\n * @param {number} index The index at which to remove the substring.\n * @param {number} stringLength The length of the substring to remove.\n * @return {string} A copy of `s` with the substring removed or the full\n * string if nothing is removed or the input is invalid.\n */\ngoog.string.removeAt = function(s, index, stringLength) {\n 'use strict';\n let resultStr = s;\n // If the index is greater or equal to 0 then remove substring\n if (index >= 0 && index < s.length && stringLength > 0) {\n resultStr = s.slice(0, index) + s.slice(index + stringLength);\n }\n return resultStr;\n};\n\n\n/**\n * Removes the first occurrence of a substring from a string.\n * @param {string} str The base string from which to remove.\n * @param {string} substr The string to remove.\n * @return {string} A copy of `str` with `substr` removed or the\n * full string if nothing is removed.\n */\ngoog.string.remove = function(str, substr) {\n 'use strict';\n return str.replace(substr, '');\n};\n\n\n/**\n * Removes all occurrences of a substring from a string.\n * @param {string} s The base string from which to remove.\n * @param {string} ss The string to remove.\n * @return {string} A copy of `s` with `ss` removed or the full\n * string if nothing is removed.\n */\ngoog.string.removeAll = function(s, ss) {\n 'use strict';\n const re = new RegExp(goog.string.regExpEscape(ss), 'g');\n return s.replace(re, '');\n};\n\n\n/**\n * Replaces all occurrences of a substring of a string with a new substring.\n * @param {string} s The base string from which to remove.\n * @param {string} ss The string to replace.\n * @param {string} replacement The replacement string.\n * @return {string} A copy of `s` with `ss` replaced by\n * `replacement` or the original string if nothing is replaced.\n */\ngoog.string.replaceAll = function(s, ss, replacement) {\n 'use strict';\n const re = new RegExp(goog.string.regExpEscape(ss), 'g');\n return s.replace(re, replacement.replace(/\\$/g, '$$$$'));\n};\n\n\n/**\n * Escapes characters in the string that are not safe to use in a RegExp.\n * @param {*} s The string to escape. If not a string, it will be casted\n * to one.\n * @return {string} A RegExp safe, escaped copy of `s`.\n */\ngoog.string.regExpEscape = function(s) {\n 'use strict';\n return String(s)\n .replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g, '\\\\$1')\n .replace(/\\x08/g, '\\\\x08');\n};\n\n\n/**\n * Repeats a string n times.\n * @param {string} string The string to repeat.\n * @param {number} length The number of times to repeat.\n * @return {string} A string containing `length` repetitions of\n * `string`.\n */\ngoog.string.repeat = (String.prototype.repeat) ? function(string, length) {\n 'use strict';\n // The native method is over 100 times faster than the alternative.\n return string.repeat(length);\n} : function(string, length) {\n 'use strict';\n return new Array(length + 1).join(string);\n};\n\n\n/**\n * Pads number to given length and optionally rounds it to a given precision.\n * For example:\n * <pre>padNumber(1.25, 2, 3) -> '01.250'\n * padNumber(1.25, 2) -> '01.25'\n * padNumber(1.25, 2, 1) -> '01.3'\n * padNumber(1.25, 0) -> '1.25'</pre>\n *\n * @param {number} num The number to pad.\n * @param {number} length The desired length.\n * @param {number=} opt_precision The desired precision.\n * @return {string} `num` as a string with the given options.\n */\ngoog.string.padNumber = function(num, length, opt_precision) {\n 'use strict';\n if (!Number.isFinite(num)) return String(num);\n let s =\n (opt_precision !== undefined) ? num.toFixed(opt_precision) : String(num);\n let index = s.indexOf('.');\n if (index === -1) {\n index = s.length;\n }\n const sign = s[0] === '-' ? '-' : '';\n if (sign) {\n s = s.substring(1);\n }\n return sign + goog.string.repeat('0', Math.max(0, length - index)) + s;\n};\n\n\n/**\n * Returns a string representation of the given object, with\n * null and undefined being returned as the empty string.\n *\n * @param {*} obj The object to convert.\n * @return {string} A string representation of the `obj`.\n */\ngoog.string.makeSafe = function(obj) {\n 'use strict';\n return obj == null ? '' : String(obj);\n};\n\n/**\n * Returns a string with at least 64-bits of randomness.\n *\n * Doesn't trust JavaScript's random function entirely. Uses a combination of\n * random and current timestamp, and then encodes the string in base-36 to\n * make it shorter.\n *\n * @return {string} A random string, e.g. sn1s7vb4gcic.\n */\ngoog.string.getRandomString = function() {\n 'use strict';\n const x = 2147483648;\n return Math.floor(Math.random() * x).toString(36) +\n Math.abs(Math.floor(Math.random() * x) ^ goog.now()).toString(36);\n};\n\n\n/**\n * Compares two version numbers.\n *\n * @param {string|number} version1 Version of first item.\n * @param {string|number} version2 Version of second item.\n *\n * @return {number} 1 if `version1` is higher.\n * 0 if arguments are equal.\n * -1 if `version2` is higher.\n */\ngoog.string.compareVersions = goog.string.internal.compareVersions;\n\n\n/**\n * String hash function similar to java.lang.String.hashCode().\n * The hash code for a string is computed as\n * s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n * where s[i] is the ith character of the string and n is the length of\n * the string. We mod the result to make it between 0 (inclusive) and 2^32\n * (exclusive).\n * @param {string} str A string.\n * @return {number} Hash value for `str`, between 0 (inclusive) and 2^32\n * (exclusive). The empty string returns 0.\n */\ngoog.string.hashCode = function(str) {\n 'use strict';\n let result = 0;\n for (let i = 0; i < str.length; ++i) {\n // Normalize to 4 byte range, 0 ... 2^32.\n result = (31 * result + str.charCodeAt(i)) >>> 0;\n }\n return result;\n};\n\n\n/**\n * The most recent unique ID. |0 is equivalent to Math.floor in this case.\n * @type {number}\n * @private\n */\ngoog.string.uniqueStringCounter_ = Math.random() * 0x80000000 | 0;\n\n\n/**\n * Generates and returns a string which is unique in the current document.\n * This is useful, for example, to create unique IDs for DOM elements.\n * @return {string} A unique id.\n */\ngoog.string.createUniqueString = function() {\n 'use strict';\n return 'goog_' + goog.string.uniqueStringCounter_++;\n};\n\n\n/**\n * Converts the supplied string to a number, which may be Infinity or NaN.\n * This function strips whitespace: (toNumber(' 123') === 123)\n * This function accepts scientific notation: (toNumber('1e1') === 10)\n *\n * This is better than JavaScript's built-in conversions because, sadly:\n * (Number(' ') === 0) and (parseFloat('123a') === 123)\n *\n * @param {string} str The string to convert.\n * @return {number} The number the supplied string represents, or NaN.\n */\ngoog.string.toNumber = function(str) {\n 'use strict';\n const num = Number(str);\n if (num == 0 && goog.string.isEmptyOrWhitespace(str)) {\n return NaN;\n }\n return num;\n};\n\n\n/**\n * Returns whether the given string is lower camel case (e.g. \"isFooBar\").\n *\n * Note that this assumes the string is entirely letters.\n * @see http://en.wikipedia.org/wiki/CamelCase#Variations_and_synonyms\n *\n * @param {string} str String to test.\n * @return {boolean} Whether the string is lower camel case.\n */\ngoog.string.isLowerCamelCase = function(str) {\n 'use strict';\n return /^[a-z]+([A-Z][a-z]*)*$/.test(str);\n};\n\n\n/**\n * Returns whether the given string is upper camel case (e.g. \"FooBarBaz\").\n *\n * Note that this assumes the string is entirely letters.\n * @see http://en.wikipedia.org/wiki/CamelCase#Variations_and_synonyms\n *\n * @param {string} str String to test.\n * @return {boolean} Whether the string is upper camel case.\n */\ngoog.string.isUpperCamelCase = function(str) {\n 'use strict';\n return /^([A-Z][a-z]*)+$/.test(str);\n};\n\n\n/**\n * Converts a string from selector-case to camelCase (e.g. from\n * \"multi-part-string\" to \"multiPartString\"), useful for converting\n * CSS selectors and HTML dataset keys to their equivalent JS properties.\n * @param {string} str The string in selector-case form.\n * @return {string} The string in camelCase form.\n */\ngoog.string.toCamelCase = function(str) {\n 'use strict';\n return String(str).replace(/\\-([a-z])/g, function(all, match) {\n 'use strict';\n return match.toUpperCase();\n });\n};\n\n\n/**\n * Converts a string from camelCase to selector-case (e.g. from\n * \"multiPartString\" to \"multi-part-string\"), useful for converting JS\n * style and dataset properties to equivalent CSS selectors and HTML keys.\n * @param {string} str The string in camelCase form.\n * @return {string} The string in selector-case form.\n */\ngoog.string.toSelectorCase = function(str) {\n 'use strict';\n return String(str).replace(/([A-Z])/g, '-$1').toLowerCase();\n};\n\n\n/**\n * Converts a string into TitleCase. First character of the string is always\n * capitalized in addition to the first letter of every subsequent word.\n * Words are delimited by one or more whitespaces by default. Custom delimiters\n * can optionally be specified to replace the default, which doesn't preserve\n * whitespace delimiters and instead must be explicitly included if needed.\n *\n * Default delimiter => \" \":\n * goog.string.toTitleCase('oneTwoThree') => 'OneTwoThree'\n * goog.string.toTitleCase('one two three') => 'One Two Three'\n * goog.string.toTitleCase(' one two ') => ' One Two '\n * goog.string.toTitleCase('one_two_three') => 'One_two_three'\n * goog.string.toTitleCase('one-two-three') => 'One-two-three'\n *\n * Custom delimiter => \"_-.\":\n * goog.string.toTitleCase('oneTwoThree', '_-.') => 'OneTwoThree'\n * goog.string.toTitleCase('one two three', '_-.') => 'One two three'\n * goog.string.toTitleCase(' one two ', '_-.') => ' one two '\n * goog.string.toTitleCase('one_two_three', '_-.') => 'One_Two_Three'\n * goog.string.toTitleCase('one-two-three', '_-.') => 'One-Two-Three'\n * goog.string.toTitleCase('one...two...three', '_-.') => 'One...Two...Three'\n * goog.string.toTitleCase('one. two. three', '_-.') => 'One. two. three'\n * goog.string.toTitleCase('one-two.three', '_-.') => 'One-Two.Three'\n *\n * @param {string} str String value in camelCase form.\n * @param {string=} opt_delimiters Custom delimiter character set used to\n * distinguish words in the string value. Each character represents a\n * single delimiter. When provided, default whitespace delimiter is\n * overridden and must be explicitly included if needed.\n * @return {string} String value in TitleCase form.\n */\ngoog.string.toTitleCase = function(str, opt_delimiters) {\n 'use strict';\n let delimiters = (typeof opt_delimiters === 'string') ?\n goog.string.regExpEscape(opt_delimiters) :\n '\\\\s';\n\n // For IE8, we need to prevent using an empty character set. Otherwise,\n // incorrect matching will occur.\n delimiters = delimiters ? '|[' + delimiters + ']+' : '';\n\n const regexp = new RegExp('(^' + delimiters + ')([a-z])', 'g');\n return str.replace(regexp, function(all, p1, p2) {\n 'use strict';\n return p1 + p2.toUpperCase();\n });\n};\n\n\n/**\n * Capitalizes a string, i.e. converts the first letter to uppercase\n * and all other letters to lowercase, e.g.:\n *\n * goog.string.capitalize('one') => 'One'\n * goog.string.capitalize('ONE') => 'One'\n * goog.string.capitalize('one two') => 'One two'\n *\n * Note that this function does not trim initial whitespace.\n *\n * @param {string} str String value to capitalize.\n * @return {string} String value with first letter in uppercase.\n */\ngoog.string.capitalize = function(str) {\n 'use strict';\n return String(str.charAt(0)).toUpperCase() +\n String(str.slice(1)).toLowerCase();\n};\n\n\n/**\n * Parse a string in decimal or hexidecimal ('0xFFFF') form.\n *\n * To parse a particular radix, please use parseInt(string, radix) directly. See\n * https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt\n *\n * This is a wrapper for the built-in parseInt function that will only parse\n * numbers as base 10 or base 16. Some JS implementations assume strings\n * starting with \"0\" are intended to be octal. ES3 allowed but discouraged\n * this behavior. ES5 forbids it. This function emulates the ES5 behavior.\n *\n * For more information, see Mozilla JS Reference: http://goo.gl/8RiFj\n *\n * @param {string|number|null|undefined} value The value to be parsed.\n * @return {number} The number, parsed. If the string failed to parse, this\n * will be NaN.\n */\ngoog.string.parseInt = function(value) {\n 'use strict';\n // Force finite numbers to strings.\n if (isFinite(value)) {\n value = String(value);\n }\n\n if (typeof value === 'string') {\n // If the string starts with '0x' or '-0x', parse as hex.\n return /^\\s*-?0x/i.test(value) ? parseInt(value, 16) : parseInt(value, 10);\n }\n\n return NaN;\n};\n\n\n/**\n * Splits a string on a separator a limited number of times.\n *\n * This implementation is more similar to Python or Java, where the limit\n * parameter specifies the maximum number of splits rather than truncating\n * the number of results.\n *\n * See http://docs.python.org/2/library/stdtypes.html#str.split\n * See JavaDoc: http://goo.gl/F2AsY\n * See Mozilla reference: http://goo.gl/dZdZs\n *\n * @param {string} str String to split.\n * @param {string} separator The separator.\n * @param {number} limit The limit to the number of splits. The resulting array\n * will have a maximum length of limit+1. Negative numbers are the same\n * as zero.\n * @return {!Array<string>} The string, split.\n */\ngoog.string.splitLimit = function(str, separator, limit) {\n 'use strict';\n const parts = str.split(separator);\n const returnVal = [];\n\n // Only continue doing this while we haven't hit the limit and we have\n // parts left.\n while (limit > 0 && parts.length) {\n returnVal.push(parts.shift());\n limit--;\n }\n\n // If there are remaining parts, append them to the end.\n if (parts.length) {\n returnVal.push(parts.join(separator));\n }\n\n return returnVal;\n};\n\n\n/**\n * Finds the characters to the right of the last instance of any separator\n *\n * This function is similar to goog.string.path.baseName, except it can take a\n * list of characters to split the string on. It will return the rightmost\n * grouping of characters to the right of any separator as a left-to-right\n * oriented string.\n *\n * @see goog.string.path.baseName\n * @param {string} str The string\n * @param {string|!Array<string>} separators A list of separator characters\n * @return {string} The last part of the string with respect to the separators\n */\ngoog.string.lastComponent = function(str, separators) {\n 'use strict';\n if (!separators) {\n return str;\n } else if (typeof separators == 'string') {\n separators = [separators];\n }\n\n let lastSeparatorIndex = -1;\n for (let i = 0; i < separators.length; i++) {\n if (separators[i] == '') {\n continue;\n }\n const currentSeparatorIndex = str.lastIndexOf(separators[i]);\n if (currentSeparatorIndex > lastSeparatorIndex) {\n lastSeparatorIndex = currentSeparatorIndex;\n }\n }\n if (lastSeparatorIndex == -1) {\n return str;\n }\n return str.slice(lastSeparatorIndex + 1);\n};\n\n\n/**\n * Computes the Levenshtein edit distance between two strings.\n * @param {string} a\n * @param {string} b\n * @return {number} The edit distance between the two strings.\n */\ngoog.string.editDistance = function(a, b) {\n 'use strict';\n const v0 = [];\n const v1 = [];\n\n if (a == b) {\n return 0;\n }\n\n if (!a.length || !b.length) {\n return Math.max(a.length, b.length);\n }\n\n for (let i = 0; i < b.length + 1; i++) {\n v0[i] = i;\n }\n\n for (let i = 0; i < a.length; i++) {\n v1[0] = i + 1;\n\n for (let j = 0; j < b.length; j++) {\n const cost = Number(a[i] != b[j]);\n // Cost for the substring is the minimum of adding one character, removing\n // one character, or a swap.\n v1[j + 1] = Math.min(v1[j] + 1, v0[j + 1] + 1, v0[j] + cost);\n }\n\n for (let j = 0; j < v0.length; j++) {\n v0[j] = v1[j];\n }\n }\n\n return v1[b.length];\n};\n","/**\n * @license\n * Copyright The Closure Library Authors.\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Utilities for dealing with POSIX path strings. Based on\n * Python's os.path and posixpath.\n */\n\ngoog.provide('goog.string.path');\n\ngoog.require('goog.array');\ngoog.require('goog.string');\n\n\n/**\n * Returns the final component of a pathname.\n * See http://docs.python.org/library/os.path.html#os.path.basename\n * @param {string} path A pathname.\n * @return {string} path The final component of a pathname, i.e. everything\n * after the final slash.\n */\ngoog.string.path.baseName = function(path) {\n 'use strict';\n const i = path.lastIndexOf('/') + 1;\n return path.slice(i);\n};\n\n\n/**\n * Alias to goog.string.path.baseName.\n * @param {string} path A pathname.\n * @return {string} path The final component of a pathname.\n * @deprecated Use goog.string.path.baseName.\n */\ngoog.string.path.basename = goog.string.path.baseName;\n\n\n/**\n * Returns the directory component of a pathname.\n * See http://docs.python.org/library/os.path.html#os.path.dirname\n * @param {string} path A pathname.\n * @return {string} The directory component of a pathname, i.e. everything\n * leading up to the final slash.\n */\ngoog.string.path.dirname = function(path) {\n 'use strict';\n const i = path.lastIndexOf('/') + 1;\n let head = path.slice(0, i);\n // If the path isn't all forward slashes, trim the trailing slashes.\n if (!/^\\/+$/.test(head)) {\n head = head.replace(/\\/+$/, '');\n }\n return head;\n};\n\n\n/**\n * Extracts the extension part of a pathname.\n * @param {string} path The path name to process.\n * @return {string} The extension if any, otherwise the empty string.\n */\ngoog.string.path.extension = function(path) {\n 'use strict';\n const separator = '.';\n // Combining all adjacent periods in the basename to a single period.\n const baseName = goog.string.path.baseName(path).replace(/\\.+/g, separator);\n const separatorIndex = baseName.lastIndexOf(separator);\n return separatorIndex <= 0 ? '' : baseName.slice(separatorIndex + 1);\n};\n\n\n// TODO(johnlenz): goog.string.path.join should not accept undefined\n/**\n * Joins one or more path components (e.g. 'foo/' and 'bar' make 'foo/bar').\n * An absolute component will discard all previous component.\n * See http://docs.python.org/library/os.path.html#os.path.join\n * @param {...(string|undefined)} var_args One of more path components.\n * @return {string} The path components joined.\n */\ngoog.string.path.join = function(var_args) {\n 'use strict';\n let path = arguments[0];\n\n for (let i = 1; i < arguments.length; i++) {\n const arg = arguments[i];\n if (goog.string.startsWith(arg, '/')) {\n path = arg;\n } else if (path == '' || goog.string.endsWith(path, '/')) {\n path += arg;\n } else {\n path += '/' + arg;\n }\n }\n\n return path;\n};\n\n\n/**\n * Normalizes a pathname by collapsing duplicate separators, parent directory\n * references ('..'), and current directory references ('.').\n * See http://docs.python.org/library/os.path.html#os.path.normpath\n * @param {string} path One or more path components.\n * @return {string} The path after normalization.\n */\ngoog.string.path.normalizePath = function(path) {\n 'use strict';\n if (path == '') {\n return '.';\n }\n\n let initialSlashes = '';\n // POSIX will keep two slashes, but three or more will be collapsed to one.\n if (goog.string.startsWith(path, '/')) {\n initialSlashes = '/';\n if (goog.string.startsWith(path, '//') &&\n !goog.string.startsWith(path, '///')) {\n initialSlashes = '//';\n }\n }\n\n const parts = path.split('/');\n const newParts = [];\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n\n // '' and '.' don't change the directory, ignore.\n if (part == '' || part == '.') {\n continue;\n }\n\n // A '..' should pop a directory unless this is not an absolute path and\n // we're at the root, or we've travelled upwards relatively in the last\n // iteration.\n if (part != '..' || (!initialSlashes && !newParts.length) ||\n goog.array.peek(newParts) == '..') {\n newParts.push(part);\n } else {\n newParts.pop();\n }\n }\n\n const returnPath = initialSlashes + newParts.join('/');\n return returnPath || '.';\n};\n\n\n/**\n * Splits a pathname into \"dirname\" and \"baseName\" components, where \"baseName\"\n * is everything after the final slash. Either part may return an empty string.\n * See http://docs.python.org/library/os.path.html#os.path.split\n * @param {string} path A pathname.\n * @return {!Array<string>} An array of [dirname, basename].\n */\ngoog.string.path.split = function(path) {\n 'use strict';\n const head = goog.string.path.dirname(path);\n const tail = goog.string.path.baseName(path);\n return [head, tail];\n};\n\n// TODO(nnaze): Implement other useful functions from os.path\n","import { encoder, decoder } from \"../utils/text-encoders.js\";\nimport * as constants from \"./constants.js\";\n\nconst { normalizePath } = goog.require(\"goog.string.path\");\n\n/** @define {boolean} */\nconst DEBUG_WASI = goog.define(\"DEBUG_WASI\", false);\n\nfunction assertLeadingSlash(path) {\n return /^\\//g.test(path) ? path : `/${path}`;\n}\n\nfunction removeLeadingSlash(path) {\n return path.replace(/^\\//g, \"\");\n}\n\nfunction shouldOpenReader(rights) {\n return (\n (rights & (constants.WASI_RIGHT_FD_READ | constants.WASI_RIGHT_FD_READDIR)) !==\n goog.global.BigInt(0)\n );\n}\n\nfunction performanceNowPoly() {\n /* eslint-disable-next-line unicorn/no-typeof-undefined */\n if (typeof performance === \"undefined\" || typeof performance.now === \"undefined\") {\n const nowOffset = Date.now();\n return Date.now() - nowOffset;\n } else {\n return performance.now();\n }\n}\n\nfunction concatUint8Arrays(arrays) {\n // sum of individual array lengths\n const totalLength = arrays.reduce((accumulator, value) => accumulator + value.length, 0);\n\n if (arrays.length === 0) return;\n\n const result = new Uint8Array(totalLength);\n\n // for each array - copy it over result\n // next array is copied right after the previous one\n let length = 0;\n for (const array of arrays) {\n result.set(array, length);\n length += array.length;\n }\n\n return result;\n}\n\nexport const WASI = function ({ preopens }) {\n this.fd = Array.from({ length: 4 });\n\n this.fd[0] = {\n fd: 0,\n path: \"/dev/stdin\",\n seekPos: goog.global.BigInt(0),\n buffers: [],\n open: false,\n };\n this.fd[1] = {\n fd: 1,\n path: \"/dev/stdout\",\n seekPos: goog.global.BigInt(0),\n buffers: [],\n open: false,\n };\n this.fd[2] = {\n fd: 2,\n path: \"/dev/stderr\",\n seekPos: goog.global.BigInt(0),\n buffers: [],\n open: false,\n };\n this.fd[3] = { fd: 3, path: \"/\", seekPos: goog.global.BigInt(0), buffers: [], open: false };\n\n this.getMemory = this.getMemory.bind(this);\n this.CPUTIME_START = 0;\n};\n\n/**\n * @function\n * @param {!WebAssembly.Instance} instance\n */\nWASI.prototype.start = function (instance) {\n this.CPUTIME_START = performanceNowPoly();\n const exports = instance.exports;\n exports._start();\n};\n\n/**\n * @function\n * @param {!WebAssembly.Module} instance\n */\nWASI.prototype.getImports = function (module) {\n const options = {};\n const neededImports = WebAssembly.Module.imports(module);\n\n for (const neededImport of neededImports) {\n if (neededImport.kind === \"function\" && neededImport.module.startsWith(\"wasi_\")) {\n if (typeof options[neededImport.module] !== \"object\") {\n options[neededImport.module] = {};\n }\n options[neededImport.module][neededImport.name] = this[neededImport.name].bind(this);\n }\n }\n\n return options;\n};\n\n/**\n * @function\n * @param {!WebAssembly.Memory} memory\n */\nWASI.prototype.setMemory = function (memory) {\n this.memory = memory;\n};\n\n/**\n * @function\n * @return {DataView}\n */\nWASI.prototype.getMemory = function () {\n if (!this.view || !this.view.buffer || !this.view.buffer.byteLength) {\n this.view = new DataView(this.memory.buffer);\n }\n return this.view;\n};\n\nWASI.prototype.msToNs = function (ms) {\n const msInt = Math.trunc(ms);\n const decimal = goog.global.BigInt(Math.round((ms - msInt) * 1000000));\n const ns = goog.global.BigInt(msInt) * goog.global.BigInt(1000000);\n return ns + decimal;\n};\n\nWASI.prototype.now = function (clockId) {\n switch (clockId) {\n case constants.WASI_CLOCK_MONOTONIC: {\n return Math.floor(performanceNowPoly());\n }\n case constants.WASI_CLOCK_REALTIME: {\n return this.msToNs(Date.now());\n }\n case constants.WASI_CLOCK_PROCESS_CPUTIME_ID:\n case constants.WASI_CLOCK_THREAD_CPUTIME_ID: {\n return Math.floor(performanceNowPoly() - this.CPUTIME_START);\n }\n default: {\n return 0;\n }\n }\n};\n\nWASI.prototype.args_get = function (argv, argvBuf) {\n if (DEBUG_WASI) {\n console.log(\"args_get\", argv, argvBuf, constants);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.args_sizes_get = function (argc, argvBufSize) {\n if (DEBUG_WASI) {\n console.log(\"args_sizes_get\", argc, argvBufSize, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.clock_res_get = function (clockId, resolution) {\n if (DEBUG_WASI) {\n console.log(\"args_get\", clockId, resolution, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.clock_time_get = function (clockId, precision, time) {\n if (DEBUG_WASI) {\n console.log(\"clock_time_get\", clockId, precision, time, arguments);\n }\n const memory = this.getMemory();\n const nextTime = this.now(clockId);\n memory.setBigUint64(time, goog.global.BigInt(nextTime), true);\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.environ_get = function (environ, environBuf) {\n if (DEBUG_WASI) {\n console.log(\"environ_get\", environ, environBuf, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.environ_sizes_get = function (environCount, environBufSize) {\n if (DEBUG_WASI) {\n console.log(\"environ_sizes_get\", environCount, environBufSize, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.fd_advise = function (fd, offset, length_, advice) {\n if (DEBUG_WASI) {\n console.log(\"fd_advise\", fd, offset, length_, advice, arguments);\n }\n return constants.WASI_ENOSYS;\n};\nWASI.prototype.fd_allocate = function (fd, offset, length_) {\n if (DEBUG_WASI) {\n console.log(\"fd_allocate\", fd, offset, length_, arguments);\n }\n return constants.WASI_ENOSYS;\n};\nWASI.prototype.fd_close = function (fd) {\n if (DEBUG_WASI) {\n console.log(\"fd_close\", fd, arguments);\n }\n if (this.fd[fd]) {\n this.fd[fd].open = false;\n }\n\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.fd_datasync = function (fd) {\n if (DEBUG_WASI) {\n console.log(\"fd_datasync\", fd, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\n\n// always write access in browser scope\nWASI.prototype.fd_fdstat_get = function (fd, bufPtr) {\n if (DEBUG_WASI) {\n console.log(\"fd_fdstat_get\", fd, bufPtr, arguments);\n }\n\n const memory = this.getMemory();\n\n memory.setUint8(bufPtr + 4, constants.WASI_FILETYPE_REGULAR_FILE);\n memory.setUint16(bufPtr + 2, 0, true);\n memory.setUint16(bufPtr + 4, 0, true);\n memory.setBigUint64(bufPtr + 8, goog.global.BigInt(constants.RIGHTS_REGULAR_FILE_BASE), true);\n memory.setBigUint64(\n bufPtr + 8 + 8,\n goog.global.BigInt(constants.RIGHTS_REGULAR_FILE_INHERITING),\n true,\n );\n\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_fdstat_set_flags = function (fd, flags) {\n if (DEBUG_WASI) {\n console.log(\"fd_fdstat_set_flags\", fd, flags, arguments);\n }\n return constants.WASI_ENOSYS;\n};\nWASI.prototype.fd_fdstat_set_rights = function (fd, fsRightsBase, fsRightsInheriting) {\n if (DEBUG_WASI) {\n console.log(\"fd_fdstat_set_rights\", fd, fsRightsBase, fsRightsInheriting, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_filestat_get = function (fd, bufPtr) {\n if (DEBUG_WASI) {\n console.log(\"fd_filestat_get\", fd, bufPtr, arguments);\n }\n let filesize = 0;\n\n if (this.fd[fd]) {\n filesize = this.fd[fd].buffers.reduce(function (accumulator, uintArray) {\n return accumulator + uintArray?.byteLength ? uintArray?.byteLength : 0;\n }, 0);\n }\n\n const memory = this.getMemory();\n memory.setBigUint64(bufPtr, goog.global.BigInt(fd), true);\n bufPtr += 8;\n memory.setBigUint64(bufPtr, goog.global.BigInt(fd), true);\n bufPtr += 8;\n memory.setUint8(bufPtr, constants.WASI_FILETYPE_REGULAR_FILE);\n bufPtr += 8;\n memory.setBigUint64(bufPtr, goog.global.BigInt(1), true);\n bufPtr += 8;\n memory.setBigUint64(bufPtr, goog.global.BigInt(filesize), true);\n bufPtr += 8;\n memory.setBigUint64(bufPtr, this.msToNs(this.CPUTIME_START), true);\n bufPtr += 8;\n memory.setBigUint64(bufPtr, this.msToNs(this.CPUTIME_START), true);\n bufPtr += 8;\n memory.setBigUint64(bufPtr, this.msToNs(this.CPUTIME_START), true);\n\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_filestat_set_size = function (fd, newSize) {\n if (DEBUG_WASI) {\n console.log(\"fd_filestat_set_size\", fd, newSize, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_filestat_set_times = function (fd, stAtim, stMtim, filestatFags) {\n if (DEBUG_WASI) {\n console.log(\"fd_filestat_set_times\", fd, stAtim, stMtim, filestatFags, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_pread = function (fd, iovs, iovsLength, offset, nread) {\n if (DEBUG_WASI) {\n console.log(\"fd_pread\", fd, iovs, iovsLength, offset, nread, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_prestat_dir_name = function (fd, pathPtr, pathLength) {\n if (DEBUG_WASI) {\n console.log(\"fd_prestat_dir_name\", fd, pathPtr, pathLength, this.fd[fd]);\n }\n if (!this.fd[fd] && !this.fd[fd - 1]) {\n return constants.WASI_EBADF;\n }\n\n const { path: directoryName } = this.fd[fd];\n\n const memory = this.getMemory();\n\n const directoryNameBuffer = encoder.encode(directoryName);\n new Uint8Array(memory.buffer).set(directoryNameBuffer, pathPtr);\n\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_prestat_get = function (fd, bufPtr) {\n if (DEBUG_WASI) {\n console.log(\"fd_prestat_get\", fd, bufPtr, this.fd[fd]);\n }\n if (!this.fd[fd]) {\n return constants.WASI_EBADF;\n }\n const { path: directoryName } = this.fd[fd];\n const memory = this.getMemory();\n\n const directoryNameBuffer = encoder.encode(directoryName);\n memory.setUint8(bufPtr, constants.WASI_PREOPENTYPE_DIR);\n memory.setUint32(bufPtr + 4, directoryNameBuffer.byteLength, true);\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_pwrite = function (fd, iovs, iovsLength, offset, nwritten) {\n console.log(\"fd_pwrite\", fd, iovs, iovsLength, offset, nwritten, arguments);\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_read = function (fd, iovs, iovsLength, nread) {\n if (DEBUG_WASI) {\n console.log(\"fd_read\", fd, iovs, iovsLength, nread, arguments);\n }\n const buffers = this.fd[fd] && this.fd[fd].buffers;\n const totalBuffersLength = buffers.reduce((accumulator, b) => accumulator + b.length, 0);\n const memory = this.getMemory();\n\n if (!buffers || buffers.length === 0) {\n console.error(\"Reading non existent file\", fd, this.fd[fd]);\n return;\n }\n\n let read = Number(this.fd[fd].seekPos);\n\n let thisRead = 0;\n let reduced = false;\n\n // check for EOF\n if (read >= totalBuffersLength) {\n const buf = memory.getUint32(iovs, true);\n memory.setUint8(buf, \"\\0\");\n memory.setUint32(nread, 0, true);\n return constants.WASI_ESUCCESS;\n }\n\n for (let index = 0; index < iovsLength; index++) {\n const ptr = iovs + index * 8;\n const buf = memory.getUint32(ptr, true);\n const bufLength = memory.getUint32(ptr + 4, true);\n\n if (!reduced) {\n thisRead += bufLength;\n Array.from({ length: bufLength }, (_, index) => index).reduce(\n (accumulator, currentRead) => {\n if (reduced) {\n return accumulator;\n }\n const [chunkIndex, chunkOffset] = accumulator;\n let currentChunkIndex = 0;\n let currentChunkOffset = 0;\n\n let found = false;\n let leadup = 0;\n\n let currentBufferChunkLength = buffers[currentChunkIndex]\n ? buffers[currentChunkIndex].byteLength\n : 0;\n\n if (currentRead === 0) {\n while (!found) {\n currentBufferChunkLength = buffers[currentChunkIndex]\n ? buffers[currentChunkIndex].byteLength\n : 0;\n if (leadup <= read && currentBufferChunkLength + leadup > read) {\n found = true;\n currentChunkOffset = read - leadup;\n } else {\n leadup += currentBufferChunkLength;\n currentChunkIndex += 1;\n }\n }\n } else {\n currentChunkIndex = chunkIndex;\n currentChunkOffset = chunkOffset;\n }\n\n if (buffers[currentChunkIndex]) {\n memory.setUint8(buf + currentRead, buffers[currentChunkIndex][currentChunkOffset]);\n\n if (currentChunkOffset + 1 >= buffers[currentChunkIndex].byteLength) {\n currentChunkIndex = chunkIndex + 1;\n currentChunkOffset = 0;\n } else {\n currentChunkOffset += 1;\n }\n } else {\n memory.setUint8(buf + currentRead, \"\\0\");\n read += currentRead;\n reduced = true;\n }\n\n return [currentChunkIndex, currentChunkOffset];\n },\n [0, 0],\n );\n if (!reduced) {\n read += bufLength;\n }\n }\n }\n\n this.fd[fd].seekPos = goog.global.BigInt(read);\n memory.setUint32(nread, thisRead, true);\n\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_readdir = function (fd, bufPtr, bufLength, cookie, bufusedPtr) {\n if (DEBUG_WASI) {\n console.log(\"fd_readdir\", fd, bufPtr, bufLength, cookie, bufusedPtr, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_renumber = function (from, to) {\n if (DEBUG_WASI) {\n console.log(\"fd_renumber\", from, to, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.fd_seek = function (fd, offset, whence, newOffsetPtr) {\n if (DEBUG_WASI) {\n console.log(\"fd_seek\", fd, offset, whence, newOffsetPtr, arguments);\n }\n const memory = this.getMemory();\n\n switch (whence) {\n case constants.WASI_WHENCE_CUR: {\n this.fd[fd].seekPos =\n (this.fd[fd].seekPos ?? goog.global.BigInt(0)) + goog.global.BigInt(offset);\n break;\n }\n case constants.WASI_WHENCE_END: {\n const currentLength = (this.fd[fd].buffers || []).reduce(\n (accumulator, value) => accumulator + value.length,\n 0,\n );\n this.fd[fd].seekPos = BigInt(currentLength) + BigInt(offset);\n break;\n }\n\n case constants.WASI_WHENCE_SET: {\n this.fd[fd].seekPos = BigInt(offset);\n break;\n }\n }\n\n memory.setBigUint64(newOffsetPtr, this.fd[fd].seekPos, true);\n\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.fd_sync = function (fd) {\n if (DEBUG_WASI) {\n console.log(\"fd_sync\", fd, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.fd_tell = function (fd, offsetPtr) {\n if (DEBUG_WASI) {\n console.log(\"fd_tell\", fd, offsetPtr, arguments);\n }\n const memory = this.getMemory();\n\n if (!this.fd[fd].seekPos) {\n this.fd[fd].seekPos = goog.global.BigInt(0);\n }\n\n memory.setBigUint64(offsetPtr, this.fd[fd].seekPos, true);\n\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.fd_write = function (fd, iovs, iovsLength, nwritten) {\n if (DEBUG_WASI) {\n console.log(\"fd_write\", { fd, iovs, iovsLength, nwritten });\n }\n\n const memory = this.getMemory();\n this.fd[fd].buffers = this.fd[fd].buffers || [];\n this.fd[fd].buffers =\n this.fd[fd].buffers.length > 0 ? [concatUint8Arrays(this.fd[fd].buffers)] : this.fd[fd].buffers;\n\n let written = 0;\n\n for (let index = 0; index < iovsLength; index++) {\n const ptr = iovs + index * 8;\n const buf = memory.getUint32(ptr, true);\n const bufLength = memory.getUint32(ptr + 4, true);\n written += bufLength;\n const chunk = new Uint8Array(memory.buffer, buf, bufLength);\n if (this.fd[fd].buffers[0] && this.fd[fd].seekPos < this.fd[fd].buffers[0].length) {\n const seekPosInt = Number(this.fd[fd].seekPos);\n chunk.slice(0, bufLength).forEach((b, i) => {\n this.fd[fd].buffers[0][seekPosInt + i] = b;\n });\n } else {\n this.fd[fd].buffers.push(chunk.slice(0, bufLength));\n }\n }\n\n this.fd[fd].seekPos += goog.global.BigInt(written);\n\n memory.setUint32(nwritten, written, true);\n\n if ([1, 2].includes(fd)) {\n console.log(decoder.decode(concatUint8Arrays(this.fd[fd].buffers)));\n }\n\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.path_create_directory = function (fd, pathPtr, pathLength) {\n if (DEBUG_WASI) {\n console.log(\"path_create_directory\", fd, pathPtr, pathLength, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.path_filestat_get = function (fd, flags, pathPtr, pathLength, bufPtr) {\n if (DEBUG_WASI) {\n console.log(\"path_filestat_get\", fd, flags, pathPtr, pathLength, bufPtr, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.path_filestat_set_times = function (\n fd,\n dirflags,\n pathPtr,\n pathLength,\n stAtim,\n stMtim,\n fstflags,\n) {\n if (DEBUG_WASI) {\n console.log(\n \"path_filestat_set_times\",\n fd,\n dirflags,\n pathPtr,\n pathLength,\n stAtim,\n stMtim,\n fstflags,\n arguments,\n );\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.path_link = function (\n oldFd,\n oldFlags,\n oldPath,\n oldPathLength,\n newFd,\n newPath,\n newPathLength,\n) {\n if (DEBUG_WASI) {\n console.log(\n \"path_link\",\n oldFd,\n oldFlags,\n oldPath,\n oldPathLength,\n newFd,\n newPath,\n newPathLength,\n arguments,\n );\n }\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.path_open = function (\n dirfd,\n dirflags,\n pathPtr,\n pathLength,\n oflags,\n fsRightsBase,\n fsRightsInheriting,\n fsFlags,\n fd,\n) {\n if (DEBUG_WASI) {\n console.log(\n \"path_open\",\n dirfd,\n dirflags,\n pathPtr,\n pathLength,\n oflags,\n fsRightsBase,\n fsRightsInheriting,\n fsFlags,\n fd,\n arguments,\n );\n }\n const memory = this.getMemory();\n const directoryPath = (this.fd[dirfd] || { path: \"/\" }).path;\n const pathOpenBytes = new Uint8Array(memory.buffer, pathPtr, pathLength);\n const pathOpenString = decoder.decode(pathOpenBytes);\n const pathOpen = assertLeadingSlash(\n normalizePath(goog.string.path.join(dirfd === 3 ? \"\" : directoryPath, pathOpenString)),\n );\n\n if (DEBUG_WASI) {\n console.log(\";; opening path\", pathOpen, \"withREader\", shouldOpenReader(fsRightsBase));\n }\n\n if (pathOpen.startsWith(\"/..\") || pathOpen === \"/._\" || pathOpen === \"/.AppleDouble\") {\n return constants.WASI_EBADF;\n }\n\n const alreadyExists = Object.values(this.fd).find(\n (entry) => entry.path === pathOpen && Array.isArray(entry.buffers),\n );\n let actualFd;\n\n if (alreadyExists) {\n actualFd = alreadyExists.fd;\n } else {\n actualFd = this.fd.length;\n this.fd[actualFd] = { fd: actualFd };\n }\n\n let fileType = \"file\";\n\n this.fd[actualFd] = {\n ...this.fd[actualFd],\n path: pathOpen,\n type: fileType,\n seekPos: goog.global.BigInt(0),\n buffers: alreadyExists ? this.fd[actualFd].buffers : [],\n open: true,\n };\n\n if ((oflags & constants.WASI_O_DIRECTORY) !== 0) {\n fileType = \"dir\";\n }\n\n if (shouldOpenReader(fsRightsBase) && DEBUG_WASI) {\n console.log(\"should open a read handle for\", pathOpen);\n }\n\n memory.setUint32(fd, actualFd, true);\n\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.path_readlink = function (fd, pathPtr, pathLength, buf, bufLength, bufused) {\n if (DEBUG_WASI) {\n console.log(\"path_readlink\", fd, pathPtr, pathLength, buf, bufLength, bufused, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.path_remove_directory = function (fd, pathPtr, pathLength) {\n if (DEBUG_WASI) {\n console.log(\"path_remove_directory\", fd, pathPtr, pathLength);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.path_rename = function (\n oldFd,\n oldPath,\n oldPathLength,\n newFd,\n newPath,\n newPathLength,\n) {\n if (DEBUG_WASI) {\n console.log(\n \"path_rename\",\n oldFd,\n oldPath,\n oldPathLength,\n newFd,\n newPath,\n newPathLength,\n arguments,\n );\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.path_symlink = function (oldPath, oldPathLength, fd, newPath, newPathLength) {\n if (DEBUG_WASI) {\n console.log(\"path_symlink\", oldPath, oldPathLength, fd, newPath, newPathLength, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.path_unlink_file = function (fd, pathPtr, pathLength) {\n if (fd > 3 && DEBUG_WASI) {\n console.log(\"path_unlink_file\", fd, pathPtr, pathLength, arguments);\n }\n // actual file removal goes here\n\n return constants.WASI_ESUCCESS;\n};\n\nWASI.prototype.poll_oneoff = function (sin, sout, nsubscriptions, nevents) {\n if (DEBUG_WASI) {\n console.log(\"poll_oneoff\", sin, sout, nsubscriptions, nevents, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.proc_exit = function (rval) {\n if (DEBUG_WASI) {\n console.log(\"proc_exit\", rval, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.proc_raise = function (sig) {\n if (DEBUG_WASI) {\n console.log(\"proc_raise\", sig, arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.random_get = function (bufPtr, bufLength) {\n if (DEBUG_WASI) {\n console.log(\"random_get\", bufPtr, bufLength);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.sched_yield = function () {\n if (DEBUG_WASI) {\n console.log(\"sched_yield\", arguments);\n }\n return constants.WASI_ESUCCESS;\n};\nWASI.prototype.sock_recv = function () {\n if (DEBUG_WASI) {\n console.log(\"sock_recv\", arguments);\n }\n return constants.WASI_ENOSYS;\n};\nWASI.prototype.sock_send = function () {\n if (DEBUG_WASI) {\n console.log(\"sock_send\", arguments);\n }\n return constants.WASI_ENOSYS;\n};\nWASI.prototype.sock_shutdown = function () {\n if (DEBUG_WASI) {\n console.log(\"sock_shutdown\", arguments);\n }\n return constants.WASI_ENOSYS;\n};\n\n// helpers\n\nWASI.prototype.findBuffers = function (filePath /* string */) {\n const maybeFd = Object.values(this.fd).find(({ path }) => path === filePath);\n return [maybeFd && maybeFd.buffers, maybeFd.fd];\n};\n\n// fs api\n\nWASI.prototype.readdir = function (dirname /* string */) {\n const prefixPath = (assertLeadingSlash(normalizePath(dirname)) + \"/\").replace(\"//\", \"/\");\n const files = [];\n Object.values(this.fd).forEach(({ path }) => {\n // console.log({\n // path,\n // prefixPath,\n // replaced: path.replace(prefixPath, \"\"),\n // isTrue: !/\\//g.test(path.replace(prefixPath, \"\")),\n // });\n return !/\\//g.test(path.replace(prefixPath, \"\")) && files.push(path);\n });\n return files.map((p) => removeLeadingSlash(p.replace(prefixPath, \"\"))).filter((p) => !!p);\n};\n\nWASI.prototype.writeFile = function (fname /* string */, data /* Uint8Array */) {\n const filePath = assertLeadingSlash(normalizePath(fname));\n\n const nextFd = Object.keys(this.fd).length;\n const maybeOldFd = Object.values(this.fd).find(({ path }) => path === filePath);\n\n this.fd[nextFd] = {\n fd: nextFd,\n path: filePath,\n seekPos: goog.global.BigInt(0),\n buffers: [data],\n };\n\n if (maybeOldFd) {\n delete this.fd[maybeOldFd];\n }\n};\n\nWASI.prototype.appendFile = function (fname /* string */, data /* Uint8Array */) {\n const filePath = assertLeadingSlash(normalizePath(fname));\n\n const [buffers] = this.findBuffers(filePath);\n\n if (buffers) {\n buffers.push(data);\n } else {\n console.error(`Can't append to non-existing file ${fname}`);\n }\n};\n\nWASI.prototype.readFile = function (fname /* string */) {\n const filePath = assertLeadingSlash(normalizePath(fname));\n\n const [buffers, fd] = this.findBuffers(filePath);\n if (this.fd[fd] && this.fd[fd].open) {\n console.warn(`readFile: file ${fname} hasn't been closed yet!`);\n }\n\n if (buffers) {\n return concatUint8Arrays(buffers);\n }\n};\n\nWASI.prototype.readStdOut = function () {\n const maybeFd = Object.values(this.fd[0]);\n const buffers = (maybeFd && maybeFd.buffers) || [];\n return concatUint8Arrays(buffers);\n};\n\nWASI.prototype.unlink = function (fname /* string */) {\n const filePath = assertLeadingSlash(normalizePath(fname));\n const maybeFd = Object.values(this.fd).find(({ path }) => path === filePath);\n\n if (maybeFd) {\n delete this.fd[maybeFd];\n } else {\n console.error(`While trying to unlink ${filePath}, path not found`);\n }\n};\n\nWASI.prototype.mkdir = function (dirname /* string */) {\n const cleanPath = assertLeadingSlash(normalizePath(dirname));\n const files = [];\n Object.values(this.fd).forEach(({ path }) => {\n return path.startsWith(cleanPath) && files.push(path);\n });\n\n const alreadyExist = files.length > 0;\n if (alreadyExist) {\n console.warn(`mkdir: path ${dirname} already exists`);\n } else {\n const nextFd = Object.keys(this.fd).length;\n this.fd[nextFd] = {\n fd: nextFd,\n path: cleanPath,\n };\n }\n};\n","/**\n * @fileoverview Zlib namespace. Zlib \u306e\u4ed5\u69d8\u306b\u6e96\u62e0\u3057\u305f\u5727\u7e2e\u306f Deflate \u3067\u5b9f\u88c5\n * \u3055\u308c\u3066\u3044\u308b. \u3053\u308c\u306f Inflate \u3068\u306e\u5171\u5b58\u3092\u8003\u616e\u3057\u3066\u3044\u308b\u70ba.\n */\n\n/**\n * Compression Method\n * @enum {number}\n */\nexport const CompressionMethod = {\n DEFLATE: 8,\n RESERVED: 15,\n};\n","/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */\n/* eslint-disable unicorn/numeric-separators-style,camelcase,no-unused-expressions */\n\n/**\n * build huffman table from length list.\n * @param {Uint8Array} lengths length list.\n * @return {Array.<number,number,number>} huffman table.\n */\nexport function Huffman(lengths) {\n /** @type {number} length list size. */\n const listSize = lengths.length;\n /** @type {number} max code length for table size. */\n let maxCodeLength = 0;\n /** @type {number} min code length for table size. */\n let minCodeLength = Number.POSITIVE_INFINITY;\n /** @type {number} bit length. */\n let bitLength;\n /** @type {number} huffman code. */\n let code;\n /**\n * @type {number} skip length for table filling.\n */\n let skip;\n /** @type {number} reversed code. */\n let reversed;\n /** @type {number} reverse temp. */\n let rtemp;\n /** @type {number} loop counter. */\n let index;\n /** @type {number} loop limit. */\n let il;\n /** @type {number} loop counter. */\n let index_;\n /** @type {number} table value. */\n let value;\n\n // Math.max \u306f\u9045\u3044\u306e\u3067\u6700\u9577\u306e\u5024\u306f for-loop \u3067\u53d6\u5f97\u3059\u308b\n for (index = 0, il = listSize; index < il; ++index) {\n if (lengths[index] > maxCodeLength) {\n maxCodeLength = lengths[index];\n }\n if (lengths[index] < minCodeLength) {\n minCodeLength = lengths[index];\n }\n }\n\n /** @type {number} table size. */\n const size = 1 << maxCodeLength;\n /** @type {Uint8Array|Uint16Array|Uint32Array} huffman code table. */\n const table = new Uint32Array(size);\n\n // \u30d3\u30c3\u30c8\u9577\u306e\u77ed\u3044\u9806\u304b\u3089\u30cf\u30d5\u30de\u30f3\u7b26\u53f7\u3092\u5272\u308a\u5f53\u3066\u308b\n for (bitLength = 1, code = 0, skip = 2; bitLength <= maxCodeLength; ) {\n for (index = 0; index < listSize; ++index) {\n if (lengths[index] === bitLength) {\n // \u30d3\u30c3\u30c8\u30aa\u30fc\u30c0\u30fc\u304c\u9006\u306b\u306a\u308b\u305f\u3081\u30d3\u30c3\u30c8\u9577\u5206\u4e26\u3073\u3092\u53cd\u8ee2\u3059\u308b\n for (reversed = 0, rtemp = code, index_ = 0; index_ < bitLength; ++index_) {\n reversed = (reversed << 1) | (rtemp & 1);\n rtemp >>= 1;\n }\n\n // \u6700\u5927\u30d3\u30c3\u30c8\u9577\u3092\u3082\u3068\u306b\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u308b\u305f\u3081\u3001\n // \u6700\u5927\u30d3\u30c3\u30c8\u9577\u4ee5\u5916\u3067\u306f 0 / 1 \u3069\u3061\u3089\u3067\u3082\u826f\u3044\u7b87\u6240\u304c\u3067\u304d\u308b\n // \u305d\u306e\u3069\u3061\u3089\u3067\u3082\u826f\u3044\u5834\u6240\u306f\u540c\u3058\u5024\u3067\u57cb\u3081\u308b\u3053\u3068\u3067\n // \u672c\u6765\u306e\u30d3\u30c3\u30c8\u9577\u4ee5\u4e0a\u306e\u30d3\u30c3\u30c8\u6570\u53d6\u5f97\u3057\u3066\u3082\u554f\u984c\u304c\u8d77\u3053\u3089\u306a\u3044\u3088\u3046\u306b\u3059\u308b\n value = (bitLength << 16) | index;\n for (index_ = reversed; index_ < size; index_ += skip) {\n table[index_] = value;\n }\n\n ++code;\n }\n }\n\n // \u6b21\u306e\u30d3\u30c3\u30c8\u9577\u3078\n ++bitLength;\n code <<= 1;\n skip <<= 1;\n }\n\n return [table, maxCodeLength, minCodeLength];\n}\n","/* eslint-disable unicorn/numeric-separators-style,camelcase,no-unused-expressions,unicorn/prevent-abbreviations */\n\nimport { Huffman } from \"./huffman\";\n\n/** @define {number} buffer block size. */\nconst ZLIB_RAW_INFLATE_BUFFER_SIZE = 0x8000; // [ 0x8000 >= ZLIB_BUFFER_BLOCK_SIZE ]\n\n/**\n * @constructor\n * @param {!(Uint8Array)} input\n * @param {Object} [opt_parameters]\n *\n * opt_params \u306f\u4ee5\u4e0b\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u6307\u5b9a\u3059\u308b\u4e8b\u304c\u3067\u304d\u307e\u3059\u3002\n * - index: input buffer \u306e deflate \u30b3\u30f3\u30c6\u30ca\u306e\u958b\u59cb\u4f4d\u7f6e.\n * - blockSize: \u30d0\u30c3\u30d5\u30a1\u306e\u30d6\u30ed\u30c3\u30af\u30b5\u30a4\u30ba.\n * - bufferType: RawInflate.BufferType \u306e\u5024\u306b\u3088\u3063\u3066\u30d0\u30c3\u30d5\u30a1\u306e\u7ba1\u7406\u65b9\u6cd5\u3092\u6307\u5b9a\u3059\u308b.\n * - resize: \u78ba\u4fdd\u3057\u305f\u30d0\u30c3\u30d5\u30a1\u304c\u5b9f\u969b\u306e\u5927\u304d\u3055\u3088\u308a\u5927\u304d\u304b\u3063\u305f\u5834\u5408\u306b\u5207\u308a\u8a70\u3081\u308b.\n */\nexport function RawInflate(input, opt_parameters) {\n /** @type {!(Uint8Array)} inflated buffer */\n this.buffer;\n /** @type {!Array.<(Uint8Array)>} */\n this.blocks = [];\n /** @type {number} block size. */\n this.bufferSize = ZLIB_RAW_INFLATE_BUFFER_SIZE;\n /** @type {!number} total output buffer pointer. */\n this.totalpos = 0;\n /** @type {!number} input buffer pointer. */\n this.ip = 0;\n /** @type {!number} bit stream reader buffer. */\n this.bitsbuf = 0;\n /** @type {!number} bit stream reader buffer size. */\n this.bitsbuflen = 0;\n /** @type {!(Uint8Array)} input buffer. */\n this.input = new Uint8Array(input);\n /** @type {!(Uint8Array)} output buffer. */\n this.output;\n /** @type {!number} output buffer pointer. */\n this.op;\n /** @type {boolean} is final block flag. */\n this.bfinal = false;\n /** @type {RawInflate.BufferType} buffer management. */\n this.bufferType = RawInflate.BufferType.ADAPTIVE;\n /** @type {boolean} resize flag for memory size optimization. */\n this.resize = false;\n\n // option parameters\n if (opt_parameters || !(opt_parameters = {})) {\n if (opt_parameters.index) {\n this.ip = opt_parameters.index;\n }\n if (opt_parameters.bufferSize) {\n this.bufferSize = opt_parameters.bufferSize;\n }\n if (opt_parameters.bufferType) {\n this.bufferType = opt_parameters.bufferType;\n }\n if (opt_parameters.resize) {\n this.resize = opt_parameters.resize;\n }\n }\n\n // initialize\n switch (this.bufferType) {\n case RawInflate.BufferType.BLOCK: {\n this.op = RawInflate.MaxBackwardLength;\n this.output = new Uint8Array(\n RawInflate.MaxBackwardLength + this.bufferSize + RawInflate.MaxCopyLength,\n );\n break;\n }\n case RawInflate.BufferType.ADAPTIVE: {\n this.op = 0;\n this.output = new Uint8Array(this.bufferSize);\n break;\n }\n default: {\n throw new Error(\"invalid inflate mode\");\n }\n }\n}\n\n/**\n * @enum {number}\n */\nRawInflate.BufferType = {\n BLOCK: 0,\n ADAPTIVE: 1,\n};\n\n/**\n * decompress.\n * @return {!(Uint8Array)} inflated buffer.\n */\nRawInflate.prototype.decompress = function () {\n while (!this.bfinal) {\n this.parseBlock();\n }\n\n switch (this.bufferType) {\n case RawInflate.BufferType.BLOCK: {\n return this.concatBufferBlock();\n }\n case RawInflate.BufferType.ADAPTIVE: {\n return this.concatBufferDynamic();\n }\n default: {\n throw new Error(\"invalid inflate mode\");\n }\n }\n};\n\n/**\n * @const\n * @type {number} max backward length for LZ77.\n */\nRawInflate.MaxBackwardLength = 32768;\n\n/**\n * @const\n * @type {number} max copy length for LZ77.\n */\nRawInflate.MaxCopyLength = 258;\n\n/**\n * huffman order\n * @const\n * @type {!(Uint8Array)}\n */\nRawInflate.Order = (function (table) {\n return new Uint16Array(table);\n})([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n\n/**\n * huffman length code table.\n * @const\n * @type {!(Uint16Array)}\n */\nRawInflate.LengthCodeTable = (function (table) {\n return new Uint16Array(table);\n})([\n 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x000a, 0x000b, 0x000d, 0x000f, 0x0011,\n 0x0013, 0x0017, 0x001b, 0x001f, 0x0023, 0x002b, 0x0033, 0x003b, 0x0043, 0x0053, 0x0063, 0x0073,\n 0x0083, 0x00a3, 0x00c3, 0x00e3, 0x0102, 0x0102, 0x0102,\n]);\n\n/**\n * huffman length extra-bits table.\n * @const\n * @type {!(Uint8Array)}\n */\nRawInflate.LengthExtraTable = (function (table) {\n return new Uint8Array(table);\n})([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0]);\n\n/**\n * huffman dist code table.\n * @const\n * @type {!(Uint16Array)}\n */\nRawInflate.DistCodeTable = (function (table) {\n return new Uint16Array(table);\n})([\n 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0007, 0x0009, 0x000d, 0x0011, 0x0019, 0x0021, 0x0031,\n 0x0041, 0x0061, 0x0081, 0x00c1, 0x0101, 0x0181, 0x0201, 0x0301, 0x0401, 0x0601, 0x0801, 0x0c01,\n 0x1001, 0x1801, 0x2001, 0x3001, 0x4001, 0x6001,\n]);\n\n/**\n * huffman dist extra-bits table.\n * @const\n * @type {!(Uint8Array)}\n */\nRawInflate.DistExtraTable = (function (table) {\n return new Uint8Array(table);\n})([\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13,\n]);\n\n/**\n * fixed huffman length code table\n * @const\n * @type {!Array}\n */\nRawInflate.FixedLiteralLengthTable = (function (table) {\n return table;\n})(\n (function () {\n const lengths = new Uint8Array(288);\n let index, il;\n\n for (index = 0, il = lengths.length; index < il; ++index) {\n lengths[index] = index <= 143 ? 8 : index <= 255 ? 9 : index <= 279 ? 7 : 8;\n }\n\n return Huffman(lengths);\n })(),\n);\n\n/**\n * fixed huffman distance code table\n * @const\n * @type {!Array}\n */\nRawInflate.FixedDistanceTable = (function (table) {\n return table;\n})(\n (function () {\n const lengths = new Uint8Array(30);\n let index, il;\n\n for (index = 0, il = lengths.length; index < il; ++index) {\n lengths[index] = 5;\n }\n\n return Huffman(lengths);\n })(),\n);\n\n/**\n * parse deflated block.\n */\nRawInflate.prototype.parseBlock = function () {\n /** @type {number} header */\n let hdr = this.readBits(3);\n\n // BFINAL\n if (hdr & 0x1) {\n this.bfinal = true;\n }\n\n // BTYPE\n hdr >>>= 1;\n switch (hdr) {\n // uncompressed\n case 0: {\n this.parseUncompressedBlock();\n break;\n }\n // fixed huffman\n case 1: {\n this.parseFixedHuffmanBlock();\n break;\n }\n // dynamic huffman\n case 2: {\n this.parseDynamicHuffmanBlock();\n break;\n }\n // reserved or other\n default: {\n throw new Error(\"unknown BTYPE: \" + hdr);\n }\n }\n};\n\n/**\n * read inflate bits\n * @param {number} length bits length.\n * @return {number} read bits.\n */\nRawInflate.prototype.readBits = function (length) {\n let bitsbuf = this.bitsbuf;\n let bitsbuflen = this.bitsbuflen;\n const input = this.input;\n let ip = this.ip;\n\n /** @type {number} */\n const inputLength = input.length;\n\n if (ip + ((length - bitsbuflen + 7) >> 3) >= inputLength) {\n throw new Error(\"input buffer is broken\");\n }\n\n // not enough buffer\n while (bitsbuflen < length) {\n bitsbuf |= input[ip++] << bitsbuflen;\n bitsbuflen += 8;\n }\n\n /** @type {number} input and output byte. */\n const octet = bitsbuf & /* MASK */ ((1 << length) - 1);\n bitsbuf >>>= length;\n bitsbuflen -= length;\n\n this.bitsbuf = bitsbuf;\n this.bitsbuflen = bitsbuflen;\n this.ip = ip;\n\n return octet;\n};\n\n/**\n * read huffman code using table\n * @param {Array.<number>|Uint8Array|Uint16Array|null} table huffman code table.\n * @return {number} huffman code.\n */\nRawInflate.prototype.readCodeByTable = function (table) {\n let bitsbuf = this.bitsbuf;\n let bitsbuflen = this.bitsbuflen;\n const input = this.input;\n let ip = this.ip;\n\n /** @type {number} */\n const inputLength = input.length;\n /** @type {!(Uint8Array)} huffman code table */\n const codeTable = table[0];\n /** @type {number} */\n const maxCodeLength = table[1];\n\n // not enough buffer\n while (bitsbuflen < maxCodeLength) {\n if (ip >= inputLength) {\n break;\n }\n bitsbuf |= input[ip++] << bitsbuflen;\n bitsbuflen += 8;\n }\n\n // read max length\n /** @type {number} code length & code (16bit, 16bit) */\n const codeWithLength = codeTable[bitsbuf & ((1 << maxCodeLength) - 1)];\n /** @type {number} code bits length */\n const codeLength = codeWithLength >>> 16;\n\n if (codeLength > bitsbuflen) {\n throw new Error(\"invalid code length: \" + codeLength);\n }\n\n this.bitsbuf = bitsbuf >> codeLength;\n this.bitsbuflen = bitsbuflen - codeLength;\n this.ip = ip;\n\n return codeWithLength & 0xffff;\n};\n\n/**\n * parse uncompressed block.\n */\nRawInflate.prototype.parseUncompressedBlock = function () {\n const input = this.input;\n let ip = this.ip;\n let output = this.output;\n let op = this.op;\n\n /** @type {number} */\n const inputLength = input.length;\n /** @type {number} block length */\n let length_;\n /** @type {number} output buffer length */\n const olength = output.length;\n /** @type {number} copy counter */\n let preCopy;\n\n // skip buffered header bits\n this.bitsbuf = 0;\n this.bitsbuflen = 0;\n\n // len\n if (ip + 1 >= inputLength) {\n throw new Error(\"invalid uncompressed block header: LEN\");\n }\n length_ = input[ip++] | (input[ip++] << 8);\n\n // nlen\n if (ip + 1 >= inputLength) {\n throw new Error(\"invalid uncompressed block header: NLEN\");\n }\n\n /** @type {number} number for check block length */\n const nlen = input[ip++] | (input[ip++] << 8);\n\n // check len & nlen\n if (length_ === ~nlen) {\n throw new Error(\"invalid uncompressed block header: length verify\");\n }\n\n // check size\n if (ip + length_ > input.length) {\n throw new Error(\"input buffer is broken\");\n }\n\n // expand buffer\n switch (this.bufferType) {\n case RawInflate.BufferType.BLOCK: {\n // pre copy\n while (op + length_ > output.length) {\n preCopy = olength - op;\n length_ -= preCopy;\n output.set(input.subarray(ip, ip + preCopy), op);\n op += preCopy;\n ip += preCopy;\n\n this.op = op;\n output = this.expandBufferBlock();\n op = this.op;\n }\n break;\n }\n case RawInflate.BufferType.ADAPTIVE: {\n while (op + length_ > output.length) {\n output = this.expandBufferAdaptive({ fixRatio: 2 });\n }\n break;\n }\n default: {\n throw new Error(\"invalid inflate mode\");\n }\n }\n\n // copy\n output.set(input.subarray(ip, ip + length_), op);\n op += length_;\n ip += length_;\n\n this.ip = ip;\n this.op = op;\n this.output = output;\n};\n\n/**\n * parse fixed huffman block.\n */\nRawInflate.prototype.parseFixedHuffmanBlock = function () {\n switch (this.bufferType) {\n case RawInflate.BufferType.ADAPTIVE: {\n this.decodeHuffmanAdaptive(RawInflate.FixedLiteralLengthTable, RawInflate.FixedDistanceTable);\n break;\n }\n case RawInflate.BufferType.BLOCK: {\n this.decodeHuffmanBlock(RawInflate.FixedLiteralLengthTable, RawInflate.FixedDistanceTable);\n break;\n }\n default: {\n throw new Error(\"invalid inflate mode\");\n }\n }\n};\n\n/**\n * parse dynamic huffman block.\n */\nRawInflate.prototype.parseDynamicHuffmanBlock = function () {\n /** @type {number} number of literal and length codes. */\n const hlit = this.readBits(5) + 257;\n /** @type {number} number of distance codes. */\n const hdist = this.readBits(5) + 1;\n /** @type {number} number of code lengths. */\n const hclen = this.readBits(4) + 4;\n /** @type {Uint8Array} code lengths. */\n const codeLengths = new Uint8Array(RawInflate.Order.length);\n /** @type {number} */\n let code;\n /** @type {number} */\n let previous;\n /** @type {number} */\n let repeat;\n /** @type {number} loop counter. */\n let index;\n /** @type {number} loop limit. */\n let il;\n\n // decode code lengths\n for (index = 0; index < hclen; ++index) {\n codeLengths[RawInflate.Order[index]] = this.readBits(3);\n }\n\n // decode length table\n /** @type {Array.<number,number,number>} code lengths table. */\n const codeLengthsTable = Huffman(codeLengths);\n /** @type {Uint8Array} code length table. */\n const lengthTable = new Uint8Array(hlit + hdist);\n for (index = 0, il = hlit + hdist; index < il; ) {\n code = this.readCodeByTable(codeLengthsTable);\n switch (code) {\n case 16: {\n repeat = 3 + this.readBits(2);\n while (repeat--) {\n lengthTable[index++] = previous;\n }\n break;\n }\n case 17: {\n repeat = 3 + this.readBits(3);\n while (repeat--) {\n lengthTable[index++] = 0;\n }\n previous = 0;\n break;\n }\n case 18: {\n repeat = 11 + this.readBits(7);\n while (repeat--) {\n lengthTable[index++] = 0;\n }\n previous = 0;\n break;\n }\n default: {\n lengthTable[index++] = code;\n previous = code;\n break;\n }\n }\n }\n\n /** @type {Array.<number>|Uint8Array|null} literal and length code table. */\n const litlenTable = Huffman(lengthTable.subarray(0, hlit));\n /** @type {Array.<number>|Uint8Array} distance code table. */\n const distTable = Huffman(lengthTable.subarray(hlit));\n\n switch (this.bufferType) {\n case RawInflate.BufferType.ADAPTIVE: {\n this.decodeHuffmanAdaptive(litlenTable, distTable);\n break;\n }\n case RawInflate.BufferType.BLOCK: {\n this.decodeHuffmanBlock(litlenTable, distTable);\n break;\n }\n default: {\n throw new Error(\"invalid inflate mode\");\n }\n }\n};\n\n/**\n * decode huffman code\n * @param {Array.<number>|Uint8Array|Uint16Array} litlen literal and length code table.\n * @param {Array.<number>|Uint8Array} dist distination code table.\n */\nRawInflate.prototype.decodeHuffmanBlock = function (litlen, dist) {\n let output = this.output;\n let op = this.op;\n\n this.currentLitlenTable = litlen;\n\n /** @type {number} output position limit. */\n const olength = output.length - RawInflate.MaxCopyLength;\n /** @type {number} huffman code. */\n let code;\n /** @type {number} table index. */\n let ti;\n /** @type {number} huffman code distination. */\n let codeDist;\n /** @type {number} huffman code length. */\n let codeLength;\n\n const lengthCodeTable = RawInflate.LengthCodeTable;\n const lengthExtraTable = RawInflate.LengthExtraTable;\n const distCodeTable = RawInflate.DistCodeTable;\n const distExtraTable = RawInflate.DistExtraTable;\n\n while ((code = this.readCodeByTable(litlen)) !== 256) {\n // literal\n if (code < 256) {\n if (op >= olength) {\n this.op = op;\n output = this.expandBufferBlock();\n op = this.op;\n }\n output[op++] = code;\n\n continue;\n }\n\n // length code\n ti = code - 257;\n codeLength = lengthCodeTable[ti];\n if (lengthExtraTable[ti] > 0) {\n codeLength += this.readBits(lengthExtraTable[ti]);\n }\n\n // dist code\n code = this.readCodeByTable(dist);\n codeDist = distCodeTable[code];\n if (distExtraTable[code] > 0) {\n codeDist += this.readBits(distExtraTable[code]);\n }\n\n // lz77 decode\n if (op >= olength) {\n this.op = op;\n output = this.expandBufferBlock();\n op = this.op;\n }\n while (codeLength--) {\n output[op] = output[op++ - codeDist];\n }\n }\n\n while (this.bitsbuflen >= 8) {\n this.bitsbuflen -= 8;\n this.ip--;\n }\n this.op = op;\n};\n\n/**\n * decode huffman code (adaptive)\n * @param {Array.<number>|Uint8Array|Uint16Array} litlen literal and length code table.\n * @param {Array.<number>|Uint8Array} dist distination code table.\n */\nRawInflate.prototype.decodeHuffmanAdaptive = function (litlen, dist) {\n let output = this.output;\n let op = this.op;\n\n this.currentLitlenTable = litlen;\n\n /** @type {number} output position limit. */\n let olength = output.length;\n /** @type {number} huffman code. */\n let code;\n /** @type {number} table index. */\n let ti;\n /** @type {number} huffman code distination. */\n let codeDist;\n /** @type {number} huffman code length. */\n let codeLength;\n\n const lengthCodeTable = RawInflate.LengthCodeTable;\n const lengthExtraTable = RawInflate.LengthExtraTable;\n const distCodeTable = RawInflate.DistCodeTable;\n const distExtraTable = RawInflate.DistExtraTable;\n\n while ((code = this.readCodeByTable(litlen)) !== 256) {\n // literal\n if (code < 256) {\n if (op >= olength) {\n output = this.expandBufferAdaptive();\n olength = output.length;\n }\n output[op++] = code;\n\n continue;\n }\n\n // length code\n ti = code - 257;\n codeLength = lengthCodeTable[ti];\n if (lengthExtraTable[ti] > 0) {\n codeLength += this.readBits(lengthExtraTable[ti]);\n }\n\n // dist code\n code = this.readCodeByTable(dist);\n codeDist = distCodeTable[code];\n if (distExtraTable[code] > 0) {\n codeDist += this.readBits(distExtraTable[code]);\n }\n\n // lz77 decode\n if (op + codeLength > olength) {\n output = this.expandBufferAdaptive();\n olength = output.length;\n }\n while (codeLength--) {\n output[op] = output[op++ - codeDist];\n }\n }\n\n while (this.bitsbuflen >= 8) {\n this.bitsbuflen -= 8;\n this.ip--;\n }\n this.op = op;\n};\n\n/**\n * expand output buffer.\n * @param {Object} [opt_parameter]\n * @return {!(Uint8Array)} output buffer.\n */\nRawInflate.prototype.expandBufferBlock = function (opt_parameter) {\n /** @type {!(Uint8Array)} store buffer. */\n const buffer = new Uint8Array(this.op - RawInflate.MaxBackwardLength);\n /** @type {number} backward base point */\n const backward = this.op - RawInflate.MaxBackwardLength;\n\n const output = this.output;\n\n // copy to output buffer\n buffer.set(output.subarray(RawInflate.MaxBackwardLength, buffer.length));\n\n this.blocks.push(buffer);\n this.totalpos += buffer.length;\n\n // copy to backward buffer\n output.set(output.subarray(backward, backward + RawInflate.MaxBackwardLength));\n\n this.op = RawInflate.MaxBackwardLength;\n\n return output;\n};\n\n/**\n * expand output buffer. (adaptive)\n * @param {Object=} opt_parameter\n * @return {!(Uint8Array)} output buffer pointer.\n */\nRawInflate.prototype.expandBufferAdaptive = function (opt_parameter) {\n /** @type {number} expantion ratio. */\n let ratio = Math.trunc(this.input.length / this.ip + 1);\n /** @type {number} maximum number of huffman code. */\n let maxHuffCode;\n /** @type {number} new output buffer size. */\n let newSize;\n /** @type {number} max inflate size. */\n let maxInflateSize;\n\n const input = this.input;\n const output = this.output;\n\n if (opt_parameter) {\n if (typeof opt_parameter.fixRatio === \"number\") {\n ratio = opt_parameter.fixRatio;\n }\n if (typeof opt_parameter.addRatio === \"number\") {\n ratio += opt_parameter.addRatio;\n }\n }\n\n // calculate new buffer size\n if (ratio < 2) {\n maxHuffCode = (input.length - this.ip) / this.currentLitlenTable[2];\n maxInflateSize = Math.trunc((maxHuffCode / 2) * 258);\n newSize = maxInflateSize < output.length ? output.length + maxInflateSize : output.length << 1;\n } else {\n newSize = output.length * ratio;\n }\n\n // buffer expantion\n /** @type {!(Uint8Array)} store buffer. */\n const buffer = new Uint8Array(newSize);\n buffer.set(output);\n\n this.output = buffer;\n\n return this.output;\n};\n\n/**\n * concat output buffer.\n * @return {!(Uint8Array)} output buffer.\n */\nRawInflate.prototype.concatBufferBlock = function () {\n /** @type {number} buffer pointer. */\n let pos = 0;\n /** @type {number} buffer pointer. */\n const limit = this.totalpos + (this.op - RawInflate.MaxBackwardLength);\n /** @type {!(Uint8Array)} output block array. */\n const output = this.output;\n /** @type {!Array} blocks array. */\n const blocks = this.blocks;\n /** @type {!(Uint8Array)} output block array. */\n let block;\n /** @type {!(Uint8Array)} output buffer. */\n const buffer = new Uint8Array(limit);\n /** @type {number} loop counter. */\n let index;\n /** @type {number} loop limiter. */\n let il;\n /** @type {number} loop counter. */\n let index_;\n /** @type {number} loop limiter. */\n let jl;\n\n // single buffer\n if (blocks.length === 0) {\n return this.output.subarray(RawInflate.MaxBackwardLength, this.op);\n }\n\n // copy to buffer\n for (index = 0, il = blocks.length; index < il; ++index) {\n block = blocks[index];\n for (index_ = 0, jl = block.length; index_ < jl; ++index_) {\n buffer[pos++] = block[index_];\n }\n }\n\n // current buffer\n for (index = RawInflate.MaxBackwardLength, il = this.op; index < il; ++index) {\n buffer[pos++] = output[index];\n }\n\n this.blocks = [];\n this.buffer = buffer;\n\n return this.buffer;\n};\n\n/**\n * concat output buffer. (dynamic)\n * @return {!(Uint8Array)} output buffer.\n */\nRawInflate.prototype.concatBufferDynamic = function () {\n /** @type {Uint8Array} output buffer. */\n let buffer;\n const op = this.op;\n if (this.resize) {\n buffer = new Uint8Array(op);\n buffer.set(this.output.subarray(0, op));\n } else {\n buffer = this.output.subarray(0, op);\n }\n\n this.buffer = buffer;\n\n return this.buffer;\n};\n","/**\n * @fileoverview \u96d1\u591a\u306a\u95a2\u6570\u7fa4\u3092\u307e\u3068\u3081\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u5b9f\u88c5.\n */\n\nexport function Util() {}\n\n/**\n * Byte String \u304b\u3089 Byte Array \u306b\u5909\u63db.\n * @param {!string} string_\n * @return {Uint8Array} byte array.\n */\nUtil.stringToByteArray = function (string_) {\n /** @type {!Array.<(string|number)>} */\n const temporary = [...string_];\n /** @type {number} */\n let index;\n /** @type {number} */\n let il;\n\n for (index = 0, il = temporary.length; index < il; index++) {\n temporary[index] = (temporary[index].charPointAt(0) & 0xff) >>> 0;\n }\n\n return new Uint8Array([temporary]);\n};\n","/* eslint-disable unicorn/numeric-separators-style,camelcase,no-unused-expressions */\nimport { Util } from \"./util\";\n/**\n * @fileoverview Adler32 checksum \u5b9f\u88c5.\n */\n\n/**\n * Adler32 \u30cf\u30c3\u30b7\u30e5\u5024\u306e\u4f5c\u6210\n * @param {Uint8Array|string} array\n * @return {number} Adler32\n */\nexport function Adler32(array) {\n if (typeof array === \"string\") {\n array = Util.stringToByteArray(array);\n }\n return Adler32.update(1, array);\n}\n\n/**\n * Adler32 \u30cf\u30c3\u30b7\u30e5\u5024\u306e\u66f4\u65b0\n * @param {number} adler\n * @param {Uint8Array} array\n * @return {number} Adler32\n */\nAdler32.update = function (adler, array) {\n /** @type {number} */\n let s1 = adler & 0xffff;\n /** @type {number} */\n let s2 = (adler >>> 16) & 0xffff;\n /** @type {number} array length */\n let length_ = array.length;\n /** @type {number} loop length (don't overflow) */\n let tlen;\n /** @type {number} array index */\n let index = 0;\n\n while (length_ > 0) {\n tlen = length_ > Adler32.OptimizationParameter ? Adler32.OptimizationParameter : length_;\n length_ -= tlen;\n do {\n s1 += array[index++];\n s2 += s1;\n } while (--tlen);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return ((s2 << 16) | s1) >>> 0;\n};\n\n/**\n * Adler32 \u6700\u9069\u5316\u30d1\u30e9\u30e1\u30fc\u30bf\n * \u73fe\u72b6\u3067\u306f 1024 \u7a0b\u5ea6\u304c\u6700\u9069.\n * @see http://jsperf.com/adler-32-simple-vs-optimized/3\n * @define {number}\n */\nAdler32.OptimizationParameter = 1024;\n","/* eslint-disable unicorn/numeric-separators-style,camelcase,no-unused-expressions */\n\nimport { CompressionMethod } from \"./zlib\";\nimport { RawInflate } from \"./rawinflate\";\nimport { Adler32 } from \"./adler32\";\n\n/**\n * @constructor\n * @param {Uint8Array} input\n * @param {Object} [opt_parameters]\n *\n * opt_params \u306f\u4ee5\u4e0b\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u6307\u5b9a\u3059\u308b\u4e8b\u304c\u3067\u304d\u307e\u3059\u3002\n * - index: input buffer \u306e deflate \u30b3\u30f3\u30c6\u30ca\u306e\u958b\u59cb\u4f4d\u7f6e.\n * - blockSize: \u30d0\u30c3\u30d5\u30a1\u306e\u30d6\u30ed\u30c3\u30af\u30b5\u30a4\u30ba.\n * - verify: \u4f38\u5f35\u304c\u7d42\u308f\u3063\u305f\u5f8c adler-32 checksum \u306e\u691c\u8a3c\u3092\u884c\u3046\u304b.\n * - bufferType: Inflate.BufferType \u306e\u5024\u306b\u3088\u3063\u3066\u30d0\u30c3\u30d5\u30a1\u306e\u7ba1\u7406\u65b9\u6cd5\u3092\u6307\u5b9a\u3059\u308b.\n * Inflate.BufferType \u306f RawInflate.BufferType \u306e\u30a8\u30a4\u30ea\u30a2\u30b9.\n */\nexport function Inflate(input, opt_parameters) {\n /** @type {Uint8Array} */\n this.input = input;\n /** @type {number} */\n this.ip = 0;\n /** @type {RawInflate} */\n this.rawinflate;\n /** @type {(boolean|undefined)} verify flag. */\n this.verify;\n\n // option parameters\n if (opt_parameters || !(opt_parameters = {})) {\n if (opt_parameters.index) {\n this.ip = opt_parameters.index;\n }\n if (opt_parameters.verify) {\n this.verify = opt_parameters.verify;\n }\n }\n\n // Compression Method and Flags\n /** @type {number} */\n const cmf = input[this.ip++];\n /** @type {number} */\n const flg = input[this.ip++];\n\n // compression method\n switch (cmf & 0x0f) {\n case CompressionMethod.DEFLATE: {\n this.method = CompressionMethod.DEFLATE;\n break;\n }\n default: {\n throw new Error(\"unsupported compression method\");\n }\n }\n\n // fcheck\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new Error(\"invalid fcheck flag:\" + (((cmf << 8) + flg) % 31));\n }\n\n // fdict (not supported)\n if (flg & 0x20) {\n throw new Error(\"fdict flag is not supported\");\n }\n\n // RawInflate\n this.rawinflate = new RawInflate(input, {\n index: this.ip,\n bufferSize: opt_parameters.bufferSize,\n bufferType: opt_parameters.bufferType,\n resize: opt_parameters.resize,\n });\n}\n\n/**\n * @enum {number}\n */\nInflate.BufferType = RawInflate.BufferType;\n\n/**\n * decompress.\n * @return {Uint8Array} inflated buffer.\n */\nInflate.prototype.decompress = function () {\n /** @type {Uint8Array} input buffer. */\n const input = this.input;\n /** @type {number} adler-32 checksum */\n let adler32;\n /** @type {Uint8Array} inflated buffer. */\n const buffer = this.rawinflate.decompress();\n this.ip = this.rawinflate.ip;\n\n // verify adler-32\n if (this.verify) {\n adler32 =\n ((input[this.ip++] << 24) |\n (input[this.ip++] << 16) |\n (input[this.ip++] << 8) |\n input[this.ip++]) >>>\n 0;\n\n if (adler32 !== Adler32(buffer)) {\n throw new Error(\"invalid adler-32 checksum\");\n }\n }\n\n return buffer;\n};\n","import { dlinit } from \"./dlinit\";\nimport { WASI } from \"./filesystem/wasi\";\nimport { clearArray } from \"./utils/clear-array\";\nimport { uint2String } from \"./utils/text-encoders.js\";\nimport { logWasmModule as log } from \"./logger\";\nimport { Inflate } from \"./zlib/inflate.js\";\n\nconst { assert } = goog.require(\"goog.asserts\");\n\nconst PAGE_SIZE = 65536;\nconst PAGES_PER_MB = 16; // 1048576 bytes per MB / PAGE_SIZE\n\nexport const csoundWasiJsMessageCallback = ({ memory, messagePort, streamBuffer, wasi }) => {\n return function (csound_, attribute, length_, offset) {\n if (!memory) {\n return;\n }\n const buf = new Uint8Array(memory.buffer, offset, length_);\n const string = uint2String(buf);\n const endsWithNewline = /\\n$/g.test(string);\n const startsWithNewline = /^\\n/g.test(string);\n const chunks = string.split(\"\\n\").filter((item) => item.length > 0);\n const printableChunks = [];\n if ((chunks.length === 0 && endsWithNewline) || startsWithNewline) {\n printableChunks.push(streamBuffer.join(\"\"));\n clearArray(streamBuffer);\n }\n chunks.forEach((chunk, index) => {\n // if it's last chunk\n if (index + 1 === chunks.length) {\n if (endsWithNewline) {\n if (index === 0) {\n printableChunks.push(streamBuffer.join(\"\") + chunk);\n clearArray(streamBuffer);\n } else {\n printableChunks.push(chunk);\n }\n } else {\n streamBuffer.push(chunk);\n }\n } else if (index === 0) {\n printableChunks.push(streamBuffer.join(\"\") + chunk);\n clearArray(streamBuffer);\n } else {\n printableChunks.push(chunk);\n }\n });\n printableChunks.forEach((chunk) => {\n const maybePrintable = chunk.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n if (maybePrintable) {\n messagePort.post({ log: chunk });\n }\n });\n };\n};\n\nconst assertPluginExports = (pluginInstance) => {\n if (\n !pluginInstance ||\n typeof pluginInstance !== \"object\" ||\n typeof pluginInstance.exports !== \"object\"\n ) {\n console.error(\"Error instantiating a csound plugin, instance and/or export is missing!\");\n return false;\n } else if (!pluginInstance.exports.__wasm_call_ctors) {\n console.error(\n \"A csound plugin didn't export __wasm_call_ctors.\\n\" +\n \"Please re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors\",\n );\n return false;\n } else if (\n !pluginInstance.exports.csoundModuleCreate &&\n !pluginInstance.exports.csound_opcode_init &&\n !pluginInstance.exports.csound_fgen_init\n ) {\n console.error(\n pluginInstance.exports,\n \"A csound plugin turns out to be neither a plugin, opcode or module.\\n\" +\n \"Perhaps csdl.h or module.h wasn't imported correctly?\",\n );\n return false;\n } else {\n return true;\n }\n};\n\nconst getBinaryHeaderData = (wasmBytes) => {\n const magicBytes = new Uint32Array(new Uint8Array(wasmBytes.subarray(0, 24)).buffer);\n // eslint-disable-next-line unicorn/number-literal-case\n if (magicBytes[0] !== 0x6d736100) {\n console.error(\"Wasm magic number is missing!\");\n }\n if (wasmBytes[8] !== 0) {\n log(\"Dylink section wasn't found in wasm binary, assuming static wasm.\");\n return \"static\";\n }\n\n let next = 9;\n function getLEB() {\n let returnValue = 0;\n let mul = 1;\n while (1) {\n const byte = wasmBytes[next++];\n // eslint-disable-next-line unicorn/number-literal-case\n returnValue += (byte & 0x7f) * mul;\n mul *= 0x80;\n if (!(byte & 0x80)) break;\n }\n return returnValue;\n }\n\n const sectionSize = getLEB();\n next++; // size of \"dylink\" string\n assert(wasmBytes[next] === \"d\".codePointAt(0));\n next++;\n assert(wasmBytes[next] === \"y\".codePointAt(0));\n next++;\n assert(wasmBytes[next] === \"l\".codePointAt(0));\n next++;\n assert(wasmBytes[next] === \"i\".codePointAt(0));\n next++;\n assert(wasmBytes[next] === \"n\".codePointAt(0));\n next++;\n assert(wasmBytes[next] === \"k\".codePointAt(0));\n next++;\n assert(wasmBytes[next] === \".\".codePointAt(0));\n next++;\n assert(wasmBytes[next] === \"0\".codePointAt(0));\n next += 3;\n\n const memorySize = getLEB();\n const memoryAlign = getLEB();\n const tableSize = getLEB();\n const tableAlign = getLEB();\n const neededDynlibsCount = getLEB();\n\n return { sectionSize, memorySize, memoryAlign, neededDynlibsCount, tableSize, tableAlign };\n};\n\n// currently dl is default, static is good for low level debugging\nconst loadStaticWasm = async ({ wasmBytes, wasmFs, wasi, messagePort }) => {\n const module = await WebAssembly.compile(wasmBytes);\n const memory = new WebAssembly.Memory({ initial: 65536 / 4 });\n const streamBuffer = [];\n const options = wasi.getImports(module);\n options.env = options.env || {};\n options.env.csoundLoadModules = () => 0;\n options.env.memory = memory;\n options.env.csoundWasiJsMessageCallback = csoundWasiJsMessageCallback({\n memory: options.env.memory,\n streamBuffer,\n messagePort,\n });\n\n const instance = await WebAssembly.instantiate(module, options);\n\n wasi.setMemory(memory);\n wasi.start(instance);\n instance.exports.__wasi_js_csoundSetMessageStringCallback();\n return [instance, wasi];\n};\n\nexport default async function ({ wasmDataURI, withPlugins = [], messagePort }) {\n const wasmFs = {};\n\n const wasi = new WASI({ preopens: { \"/\": \"/\" } });\n\n const wasmCompressed = new Uint8Array(wasmDataURI);\n const wasmZlib = new Inflate(wasmCompressed);\n\n const wasmBytes = wasmZlib.decompress();\n\n const magicData = getBinaryHeaderData(wasmBytes);\n if (magicData === \"static\") {\n return await loadStaticWasm({ messagePort, wasmBytes, wasmFs, wasi });\n }\n const { memorySize, memoryAlign, tableSize } = magicData;\n\n // get the header data from plugins which we need before\n // initializing the main module\n withPlugins = await withPlugins.reduce(async (accumulator, wasmPlugin) => {\n const accumulator_ = await accumulator;\n\n let wasmPluginBytes;\n let pluginHeaderData;\n try {\n wasmPluginBytes = new Uint8Array(wasmPlugin);\n pluginHeaderData = getBinaryHeaderData(wasmPluginBytes);\n } catch (error) {\n console.error(\"Error in plugin\", error);\n }\n if (pluginHeaderData) {\n accumulator_.push({ headerData: pluginHeaderData, wasmPluginBytes });\n }\n return accumulator_;\n }, []);\n\n // The `fixedMemoryBase` is equivalent to the stack size. Note that the stack size grows down towards the code\n // section. This means that if the stack overflows then it will write over the Csound and plugin code which will\n // cause all kinds of strange behavior including errors that make no sense, no output of sound, or sound output will\n // be horrendously loud static and garbage sounds.\n //\n // TODO: Investigate using the --stack-first linker flag to move the stack to the beginning of memory so it doesn't\n // write over anything if it overflows.\n //\n const fixedMemoryBase = 128 * PAGES_PER_MB;\n const initialMemory = Math.ceil((memorySize + memoryAlign) / PAGE_SIZE);\n const pluginsMemory = Math.ceil(\n withPlugins.reduce(\n (accumulator, { headerData }) =>\n headerData === \"static\" ? 0 : accumulator + (headerData.memorySize + memoryAlign),\n 0,\n ) / PAGE_SIZE,\n );\n\n const totalInitialMemory = initialMemory + pluginsMemory + fixedMemoryBase;\n\n // Request a max of 1gb of memory so devices use less CPU when growing memory. This has a noticeable effect on low-\n // powered devices like the Oculus Quest 2.\n const memory = new WebAssembly.Memory({\n initial: totalInitialMemory,\n maximum: 1024 * PAGES_PER_MB,\n });\n\n const table = new WebAssembly.Table({ initial: tableSize + 1, element: \"anyfunc\" });\n\n wasi.setMemory(memory);\n\n const stackPointer = new WebAssembly.Global(\n { value: \"i32\", mutable: true },\n totalInitialMemory * PAGE_SIZE,\n );\n const heapBase = new WebAssembly.Global(\n { value: \"i32\", mutable: true },\n totalInitialMemory * PAGE_SIZE,\n );\n const memoryBase = new WebAssembly.Global({ value: \"i32\", mutable: false }, fixedMemoryBase);\n const tableBase = new WebAssembly.Global({ value: \"i32\", mutable: false }, 1);\n const __dummy = new WebAssembly.Global({ value: \"i32\", mutable: true }, 0);\n\n const module = await WebAssembly.compile(wasmBytes);\n const options = wasi.getImports(module);\n let withPlugins_ = [];\n\n let currentMemorySegment = initialMemory;\n\n const csoundLoadModules = (csoundInstance) => {\n withPlugins_.forEach((pluginInstance) => {\n if (instance === undefined) {\n console.error(\"csound-wasm internal: timing problem detected!\");\n } else {\n dlinit(instance, pluginInstance, table, csoundInstance);\n }\n });\n return 0;\n };\n\n options.env = options.env || {};\n options.env.memory = memory;\n options.env.__indirect_function_table = table;\n options.env.__stack_pointer = stackPointer;\n options.env.__memory_base = memoryBase;\n options.env.__table_base = tableBase;\n options.env.csoundLoadModules = csoundLoadModules;\n\n // TODO find out what's leaking this thread-local errno (cpp?)\n options.env._ZTH5errno = function () {};\n\n const streamBuffer = [];\n options.env.csoundWasiJsMessageCallback = csoundWasiJsMessageCallback({\n memory,\n messagePort,\n streamBuffer,\n });\n\n options.env.printDebugCallback = (offset, length) => {\n const buf = new Uint8Array(memory.buffer, offset, length);\n const string = uint2String(buf);\n console.log(string);\n };\n\n options[\"GOT.mem\"] = options[\"GOT.mem\"] || {};\n options[\"GOT.mem\"].__heap_base = heapBase;\n\n options[\"GOT.func\"] = options[\"GOT.func\"] || {};\n\n const instance = await WebAssembly.instantiate(module, options);\n const moduleExports = Object.assign({}, instance.exports);\n const instance_ = {};\n instance_.exports = Object.assign(moduleExports, {\n memory,\n });\n\n withPlugins_ = await withPlugins.reduce(async (accumulator, { headerData, wasmPluginBytes }) => {\n accumulator = await accumulator;\n try {\n const {\n memorySize: pluginMemorySize,\n memoryAlign: pluginMemoryAlign,\n tableSize: pluginTableSize,\n } = headerData;\n\n const plugin = await WebAssembly.compile(wasmPluginBytes);\n const pluginOptions = wasi.getImports(plugin);\n\n const pluginMemoryBase = new WebAssembly.Global(\n { value: \"i32\", mutable: false },\n currentMemorySegment * PAGE_SIZE,\n );\n\n table.grow(pluginTableSize);\n\n pluginOptions.env = Object.assign({}, pluginOptions.env);\n pluginOptions.env.memory = memory;\n pluginOptions.env.__indirect_function_table = table;\n pluginOptions.env.__memory_base = pluginMemoryBase;\n pluginOptions.env.__stack_pointer = stackPointer;\n pluginOptions.env.__table_base = tableBase;\n pluginOptions.env.csoundLoadModules = __dummy;\n delete pluginOptions.env.csoundWasiJsMessageCallback;\n\n currentMemorySegment += Math.ceil((pluginMemorySize + pluginMemoryAlign) / PAGE_SIZE);\n\n const pluginInstance = await WebAssembly.instantiate(plugin, pluginOptions);\n\n if (assertPluginExports(pluginInstance)) {\n pluginInstance.exports.__wasm_call_ctors();\n accumulator.push(pluginInstance);\n }\n } catch (error) {\n console.error(\"Error while compiling csound-plugin\", error);\n }\n return accumulator;\n }, []);\n\n wasi.start(instance_);\n\n instance_.exports.__wasi_js_csoundSetMessageStringCallback();\n return [instance_, wasi];\n}\n","/**\n * @constructor\n */\nexport function MessagePortState() {}\n\n/**\n * @type {boolean}\n */\nMessagePortState.prototype.ready = false;\n\n/**\n * @type {Function|undefined}\n */\nMessagePortState.prototype.port = undefined;\n\n/**\n * @type {Function}\n */\nMessagePortState.prototype.post = () => {};\n/**\n * @type {Function}\n */\nMessagePortState.prototype.broadcastPlayState = () => {};\n/**\n * @type {string|undefined}\n */\nMessagePortState.prototype.workerState = undefined;\n/**\n * @type {string|undefined}\n */\nMessagePortState.prototype.vanillaWorkerState = undefined;\n\nexport default MessagePortState;\n","/*\n CsoundScriptProcessor.js\n\n Copyright (C) 2018 Steven Yi, Victor Lazzarini\n\n This file is part of Csound.\n\n The Csound Library is free software; you can redistribute it\n and/or modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n Csound is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with Csound; if not, write to the Free Software\n Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n 02110-1301 USA\n*/\n\nimport libcsoundFactory from \"../libcsound\";\nimport loadWasm from \"../module\";\nimport MessagePortState from \"../utils/message-port-state\";\nimport { isEmpty } from \"rambda/dist/rambda.mjs\";\nimport { csoundApiRename, fetchPlugins, makeSingleThreadCallback } from \"../utils\";\nimport { messageEventHandler } from \"./messages.main\";\nimport { PublicEventAPI } from \"../events\";\nimport { EventPromises } from \"../utils/event-promises\";\nimport { requestMidi } from \"../utils/request-midi\";\n\nclass ScriptProcessorNodeSingleThread {\n constructor({ audioContext, inputChannelCount = 1, outputChannelCount = 2 }) {\n this.publicEvents = new PublicEventAPI(this);\n this.eventPromises = new EventPromises();\n this.audioContext = audioContext;\n this.onaudioprocess = this.onaudioprocess.bind(this);\n this.currentPlayState = undefined;\n this.onPlayStateChange = this.onPlayStateChange.bind(this);\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.pause = this.pause.bind(this);\n this.resume = this.resume.bind(this);\n this.wasm = undefined;\n this.csoundInstance = undefined;\n this.csoundApi = undefined;\n this.exportApi = {};\n this.spn = audioContext.createScriptProcessor(0, inputChannelCount, outputChannelCount);\n this.spn.audioContext = audioContext;\n this.spn.inputChannelCount = inputChannelCount;\n this.spn.outputChannelCount = outputChannelCount;\n this.spn.onaudioprocess = this.onaudioprocess;\n this.node = this.spn;\n this.exportApi.getNode = async () => this.spn;\n this.sampleRate = audioContext.sampleRate;\n // this is the only actual single-thread usecase\n // so we get away with just forwarding it as if it's form\n // a message port\n this.messagePort = new MessagePortState();\n this.messagePort.post = (log) => messageEventHandler(this)({ data: { log } });\n this.messagePort.ready = true;\n\n // imports from original csound-wasm\n this.running = false;\n this.started = false;\n }\n\n async terminateInstance() {\n if (this.spn) {\n this.spn.disconnect();\n delete this.spn;\n }\n if (this.audioContext) {\n if (this.audioContext.state !== \"closed\") {\n await this.audioContext.close();\n }\n delete this.audioContext;\n }\n if (this.publicEvents) {\n this.publicEvents.terminateInstance();\n delete this.publicEvents;\n }\n Object.keys(this.exportApi).forEach((key) => delete this.exportApi[key]);\n Object.keys(this).forEach((key) => delete this[key]);\n }\n\n async onPlayStateChange(newPlayState) {\n if (!this.publicEvents || this.currentPlayState === newPlayState) {\n return;\n }\n this.currentPlayState = newPlayState;\n switch (newPlayState) {\n case \"realtimePerformanceStarted\": {\n this.publicEvents.triggerRealtimePerformanceStarted(this);\n break;\n }\n\n case \"realtimePerformanceEnded\": {\n this.publicEvents.triggerRealtimePerformanceEnded(this);\n break;\n }\n case \"realtimePerformancePaused\": {\n this.publicEvents.triggerRealtimePerformancePaused(this);\n break;\n }\n case \"realtimePerformanceResumed\": {\n this.publicEvents.triggerRealtimePerformanceResumed(this);\n break;\n }\n case \"renderStarted\": {\n this.publicEvents.triggerRenderStarted(this);\n break;\n }\n case \"renderEnded\": {\n this.publicEvents.triggerRenderEnded(this);\n\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n async pause() {\n if (this.started && this.running) {\n this.running = false;\n this.onPlayStateChange(\"realtimePerformancePaused\");\n }\n }\n\n async resume() {\n if (this.started && !this.running) {\n this.running = true;\n this.onPlayStateChange(\"realtimePerformanceResumed\");\n }\n }\n\n async stop() {\n if (this.started) {\n this.eventPromises.createStopPromise();\n const stopResult = this.csoundApi.csoundStop(this.csoundInstance);\n await this.eventPromises.waitForStop();\n if (this.watcherStdOut) {\n this.watcherStdOut.close();\n delete this.watcherStdOut;\n }\n\n if (this.watcherStdErr) {\n this.watcherStdErr.close();\n delete this.watcherStdErr;\n }\n\n delete this.csoundInputBuffer;\n delete this.csoundOutputBuffer;\n delete this.currentPlayState;\n return stopResult;\n }\n }\n\n async start() {\n if (!this.csoundApi) {\n console.error(\"starting csound failed because csound instance wasn't created\");\n return;\n }\n\n const outputName = this.csoundApi.csoundGetOutputName(this.csoundInstance) || \"test.wav\";\n const isExpectingRealtimeOutput = outputName.includes(\"dac\");\n\n if (isExpectingRealtimeOutput && this.currentPlayState !== \"realtimePerformanceStarted\") {\n this.result = 0;\n this.csoundApi.csoundSetOption(this.csoundInstance, \"--sample-rate=\" + this.sampleRate);\n this.nchnls = -1;\n this.nchnls_i = -1;\n\n const ksmps = this.csoundApi.csoundGetKsmps(this.csoundInstance);\n this.ksmps = ksmps;\n this.cnt = ksmps;\n\n this.nchnls = this.csoundApi.csoundGetNchnls(this.csoundInstance);\n this.nchnls_i = this.csoundApi.csoundGetNchnlsInput(this.csoundInstance);\n\n const outputPointer = this.csoundApi.csoundGetSpout(this.csoundInstance);\n this.csoundOutputBuffer = new Float64Array(\n this.wasm.wasi.memory.buffer,\n outputPointer,\n ksmps * this.nchnls,\n );\n\n const inputPointer = this.csoundApi.csoundGetSpin(this.csoundInstance);\n this.csoundInputBuffer = new Float64Array(\n this.wasm.wasi.memory.buffer,\n inputPointer,\n ksmps * this.nchnls_i,\n );\n this.zerodBFS = this.csoundApi.csoundGet0dBFS(this.csoundInstance);\n\n this.publicEvents.triggerOnAudioNodeCreated(this.spn);\n this.eventPromises.createStartPromise();\n\n const startResult = this.csoundApi.csoundStart(this.csoundInstance);\n if (this.csoundApi._isRequestingRtMidiInput(this.csoundInstance)) {\n requestMidi({\n onMidiMessage: ({ data: event }) =>\n this.csoundApi.csoundPushMidiMessage(this.csoundInstance, event[0], event[1], event[2]),\n });\n }\n this.running = true;\n await this.eventPromises.waitForStart();\n return startResult;\n } else if (!isExpectingRealtimeOutput && this.currentPlayState !== \"renderStarted\") {\n const startResult = this.csoundApi.csoundStart(this.csoundInstance);\n this.onPlayStateChange(\"renderStarted\");\n\n setTimeout(() => {\n let lastResult = 0;\n while (lastResult === 0 && this.csoundApi && this.csoundInstance) {\n lastResult = this.csoundApi.csoundPerformKsmps(this.csoundInstance);\n }\n\n this.onPlayStateChange && this.onPlayStateChange(\"renderEnded\");\n }, 0);\n\n return startResult;\n }\n }\n\n async initialize({ wasmDataURI, withPlugins, autoConnect }) {\n if (!this.plugins && withPlugins && !isEmpty(withPlugins)) {\n withPlugins = await fetchPlugins(withPlugins);\n }\n\n if (!this.wasm) {\n const [wasm, wasi] = await loadWasm({\n wasmDataURI: wasmDataURI(),\n withPlugins,\n messagePort: this.messagePort,\n });\n this.wasm = wasm;\n this.wasi = wasi;\n wasm.wasi = wasi;\n }\n\n // libcsound\n const csoundApi = libcsoundFactory(this.wasm);\n this.csoundApi = csoundApi;\n const csoundInstance = await csoundApi.csoundCreate(0);\n this.csoundInstance = csoundInstance;\n\n if (autoConnect) {\n this.spn.connect(this.audioContext.destination);\n }\n\n this.resetCsound(false);\n\n // csoundObj\n Object.keys(csoundApi).reduce((accumulator, apiName) => {\n if ([\"mkdir\", \"readdir\", \"writeFile\"].includes(apiName)) {\n accumulator.fs = accumulator.fs || {};\n const reference = csoundApi[apiName];\n const callback = async (...arguments_) =>\n makeSingleThreadCallback(this.wasm, csoundApi[apiName]).apply({}, arguments_);\n callback.toString = reference.toString;\n accumulator.fs[apiName] = callback;\n } else {\n const renamedApiName = csoundApiRename(apiName);\n accumulator[renamedApiName] = (...arguments_) => {\n return makeSingleThreadCallback(csoundInstance, csoundApi[apiName]).apply({}, arguments_);\n };\n accumulator[renamedApiName].toString = csoundApi[apiName].toString;\n }\n\n return accumulator;\n }, this.exportApi);\n\n this.exportApi.pause = this.pause.bind(this);\n this.exportApi.resume = this.resume.bind(this);\n this.exportApi.start = this.start.bind(this);\n this.exportApi.stop = this.stop.bind(this);\n this.exportApi.terminateInstance = this.terminateInstance.bind(this);\n this.exportApi.getAudioContext = async () => this.audioContext;\n this.exportApi.name = \"Csound: ScriptProcessor Node, Single-threaded\";\n // this.exportApi.fs = persistentFilesystem;\n\n this.exportApi = this.publicEvents.decorateAPI(this.exportApi);\n\n this.exportApi.reset = () => this.resetCsound(true);\n // the default message listener\n this.exportApi.addListener(\"message\", console.log);\n return this.exportApi;\n }\n\n async resetCsound(callReset) {\n if (\n callReset &&\n this.currentPlayState !== \"realtimePerformanceEnded\" &&\n this.currentPlayState !== \"realtimePerformanceStarted\"\n ) {\n // reset can't be called until performance has started or ended!\n return -1;\n }\n if (this.currentPlayState === \"realtimePerformanceStarted\") {\n this.onPlayStateChange(\"realtimePerformanceEnded\");\n }\n\n this.running = false;\n this.started = false;\n this.result = 0;\n\n const cs = this.csoundInstance;\n const libraryCsound = this.csoundApi;\n\n if (callReset) {\n libraryCsound.csoundReset(cs);\n }\n\n libraryCsound.csoundSetOption(cs, \"--sample-rate=\" + this.sampleRate);\n this.nchnls = -1;\n this.nchnls_i = -1;\n delete this.csoundOutputBuffer;\n delete this.csoundInputBuffer;\n }\n\n onaudioprocess(event) {\n if (!this.csoundApi || [\"renderStarted\", \"renderEnded\"].includes(this.currentPlayState)) {\n return;\n }\n if (this.csoundOutputBuffer === null || this.running === false) {\n const output = event.outputBuffer;\n const channelData = output.getChannelData(0);\n\n if (channelData) {\n const bufferLength = channelData.length;\n\n for (let index = 0; index < bufferLength; index++) {\n for (let channel = 0; channel < output.numberOfChannels; channel++) {\n const outputChannel = output.getChannelData(channel);\n outputChannel[index] = 0;\n }\n }\n }\n }\n\n if (this.running && !this.started) {\n this.started = true;\n this.onPlayStateChange(\"realtimePerformanceStarted\");\n this.eventPromises && this.eventPromises.releaseStartPromise();\n }\n\n const input = event.inputBuffer;\n const output = event.outputBuffer;\n\n const bufferLength = output.getChannelData(0).length;\n\n let csOut = this.csoundOutputBuffer;\n let csIn = this.csoundInputBuffer;\n\n const ksmps = this.ksmps;\n const zerodBFS = this.zerodBFS;\n\n const nchnls = this.nchnls;\n const nchnlsIn = this.nchnls_i;\n\n let cnt = this.cnt || 0;\n let result = this.result || 0;\n\n for (let index = 0; index < bufferLength; index++, cnt++) {\n if (cnt === ksmps && result === 0) {\n // if we need more samples from Csound\n result = this.csoundApi.csoundPerformKsmps(this.csoundInstance);\n cnt = 0;\n if (result !== 0) {\n this.running = false;\n this.started = false;\n this.onPlayStateChange(\"realtimePerformanceEnded\");\n this.eventPromises && this.eventPromises.releaseStopPromise();\n }\n }\n\n /* Check if MEMGROWTH occured from csoundPerformKsmps or otherwise. If so,\n rest output ant input buffers to new pointer locations. */\n if (!csOut || csOut.length === 0) {\n csOut = this.csoundOutputBuffer = new Float64Array(\n this.wasm.wasi.memory.buffer,\n this.csoundApi.csoundGetSpout(this.csoundInstance),\n ksmps * nchnls,\n );\n }\n\n if (!csIn || csIn.length === 0) {\n csIn = this.csoundInputBuffer = new Float64Array(\n this.wasm.wasi.memory.buffer,\n this.csoundApi.csoundGetSpin(this.csoundInstance),\n ksmps * nchnlsIn,\n );\n }\n\n // handle 1->1, 1->2, 2->1, 2->2 input channel count mixing and nchnls_i\n const inputChanMax = Math.min(this.nchnls_i, input.numberOfChannels);\n for (let channel = 0; channel < inputChanMax; channel++) {\n const inputChannel = input.getChannelData(channel);\n csIn[cnt * nchnlsIn + channel] = inputChannel[index] * zerodBFS;\n }\n\n // Output Channel mixing matches behavior of:\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Basic_concepts_behind_Web_Audio_API#Up-mixing_and_down-mixing\n\n // handle 1->1, 1->2, 2->1, 2->2 output channel count mixing and nchnls\n if (this.nchnls === output.numberOfChannels) {\n for (let channel = 0; channel < output.numberOfChannels; channel++) {\n const outputChannel = output.getChannelData(channel);\n outputChannel[index] = result === 0 ? csOut[cnt * nchnls + channel] / zerodBFS : 0;\n }\n } else if (this.nchnls === 2 && output.numberOfChannels === 1) {\n const outputChannel = output.getChannelData(0);\n if (result === 0) {\n const left = csOut[cnt * nchnls] / zerodBFS;\n const right = csOut[cnt * nchnls + 1] / zerodBFS;\n outputChannel[index] = 0.5 * (left + right);\n } else {\n outputChannel[index] = 0;\n }\n } else if (this.nchnls === 1 && output.numberOfChannels === 2) {\n const outChan0 = output.getChannelData(0);\n const outChan1 = output.getChannelData(1);\n\n if (result === 0) {\n const value = csOut[cnt * nchnls] / zerodBFS;\n outChan0[index] = value;\n outChan1[index] = value;\n } else {\n outChan0[index] = 0;\n outChan1[index] = 0;\n }\n } else {\n // FIXME: we do not support other cases at this time\n }\n\n // for (let channel = 0; channel < input.numberOfChannels; channel++) {\n // const inputChannel = input.getChannelData(channel);\n // csIn[cnt * nchnls_i + channel] = inputChannel[i] * zerodBFS;\n // }\n // for (let channel = 0; channel < output.numberOfChannels; channel++) {\n // const outputChannel = output.getChannelData(channel);\n // if (result == 0) outputChannel[i] = csOut[cnt * nchnls + channel] / zerodBFS;\n // else outputChannel[i] = 0;\n // }\n }\n\n this.cnt = cnt;\n this.result = result;\n }\n}\n\nexport default ScriptProcessorNodeSingleThread;\n","export default () => \"data:application/javascript;base64,bGV0IHNlbGYgPSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmO2dvb2cuZXhwb3J0UGF0aF89ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnNwbGl0KCIuIik7ZD1kfHxnb29nLmdsb2JhbDthWzBdaW4gZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkLmV4ZWNTY3JpcHR8fGQuZXhlY1NjcmlwdCgidmFyICIrYVswXSk7Zm9yKHZhciBlO2EubGVuZ3RoJiYoZT1hLnNoaWZ0KCkpOylpZihhLmxlbmd0aHx8dm9pZCAwPT09YilkPWRbZV0mJmRbZV0hPT1PYmplY3QucHJvdG90eXBlW2VdP2RbZV06ZFtlXT17fTtlbHNlIGlmKCFjJiZnb29nLmlzT2JqZWN0KGIpJiZnb29nLmlzT2JqZWN0KGRbZV0pKWZvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJihkW2VdW2ZdPWJbZl0pO2Vsc2UgZFtlXT1ifTsKZ29vZy5kZWZpbmU9ZnVuY3Rpb24oYSxiKXtpZighQ09NUElMRUQpe3ZhciBjPWdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTLGQ9Z29vZy5nbG9iYWwuQ0xPU1VSRV9ERUZJTkVTO2MmJnZvaWQgMD09PWMubm9kZVR5cGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpP2I9Y1thXTpkJiZ2b2lkIDA9PT1kLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxhKSYmKGI9ZFthXSl9cmV0dXJuIGJ9O2dvb2cuRkVBVFVSRVNFVF9ZRUFSPTIwMjA7Z29vZy5ERUJVRz0hMDtnb29nLkxPQ0FMRT0iZW4iO2dvb2cuZ2V0TG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuTE9DQUxFfTtnb29nLlRSVVNURURfU0lURT0hMDtnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRztnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITE7Cmdvb2cucHJvdmlkZT1mdW5jdGlvbihhKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuIik7aWYoIUNPTVBJTEVEJiZnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhhKX07Z29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGEsYixjKXtpZighQ09NUElMRUQpe2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV07Zm9yKHZhciBkPWE7KGQ9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIuIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGQpOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZF09ITB9Z29vZy5leHBvcnRQYXRoXyhhLGIsYyl9O2dvb2cuTk9OQ0VfUEFUVEVSTl89L15bXHcrL18tXStbPV17MCwyfSQvOwpnb29nLmdldFNjcmlwdE5vbmNlXz1mdW5jdGlvbihhKXthPShhfHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yJiZhLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKSkmJihhPWEubm9uY2V8fGEuZ2V0QXR0cmlidXRlKCJub25jZSIpKSYmZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KGEpP2E6IiJ9O2dvb2cuVkFMSURfTU9EVUxFX1JFXz0vXlthLXpBLVpfJF1bYS16QS1aMC05Ll8kXSokLzsKZ29vZy5tb2R1bGU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPT10eXBlb2YgYXx8IWF8fC0xPT1hLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pKXRocm93IEVycm9yKCJJbnZhbGlkIG1vZHVsZSBpZGVudGlmaWVyIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoIk1vZHVsZSAiK2ErIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS4iKTtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLiIpOwpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lPWE7aWYoIUNPTVBJTEVEKXtpZihnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV19fTtnb29nLm1vZHVsZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cubW9kdWxlLmdldEludGVybmFsXyhhKX07Z29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXJldHVybiBnb29nLmxvYWRlZE1vZHVsZXNfW2FdLmV4cG9ydHM7aWYoIWdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1thXSlyZXR1cm4gYT1nb29nLmdldE9iamVjdEJ5TmFtZShhKSxudWxsIT1hP2E6bnVsbH1yZXR1cm4gbnVsbH07Z29vZy5Nb2R1bGVUeXBlPXtFUzY6ImVzNiIsR09PRzoiZ29vZyJ9O2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7Cmdvb2cuaXNJbk1vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKXx8Z29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXygpfTtnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe3JldHVybiEhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5HT09HfTtnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5FUzYpcmV0dXJuITA7dmFyIGE9Z29vZy5nbG9iYWwuJGpzY29tcDtyZXR1cm4gYT8iZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRDdXJyZW50TW9kdWxlUGF0aD8hMTohIWEuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTohMX07Cmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ZnVuY3Rpb24oKXtpZighQ09NUElMRUQmJiFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGUiKTtpZighQ09NUElMRUQmJiFnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlLiIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9Owpnb29nLmRlY2xhcmVNb2R1bGVJZD1mdW5jdGlvbihhKXtpZighQ09NUElMRUQpe2lmKCFnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuIik7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGV4aXN0cy4nKTt9aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8pZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZT1hO2Vsc2V7dmFyIGI9Z29vZy5nbG9iYWwuJGpzY29tcDtpZighYnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGIuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSAiJysKYSsnIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuJyk7Yj1iLnJlcXVpcmUoYi5nZXRDdXJyZW50TW9kdWxlUGF0aCgpKTtnb29nLmxvYWRlZE1vZHVsZXNfW2FdPXtleHBvcnRzOmIsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmF9fX07Z29vZy5zZXRUZXN0T25seT1mdW5jdGlvbihhKXtpZihnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFKXRocm93IGE9YXx8IiIsRXJyb3IoIkltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCIrKGE/IjogIithOiIuIikpO307Z29vZy5mb3J3YXJkRGVjbGFyZT1mdW5jdGlvbihhKXt9O0NPTVBJTEVEfHwoZ29vZy5pc1Byb3ZpZGVkXz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNffHwhZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2FdJiZudWxsIT1nb29nLmdldE9iamVjdEJ5TmFtZShhKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXsiZ29vZy5tb2R1bGUiOiEwfSk7Cmdvb2cuZ2V0T2JqZWN0QnlOYW1lPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxnb29nLmdsb2JhbDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sbnVsbD09YilyZXR1cm4gbnVsbDtyZXR1cm4gYn07Z29vZy5hZGREZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQpeyFDT01QSUxFRCYmZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCYmZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShhLGIsYyxkKX07Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSPSEwO2dvb2cubG9nVG9Db25zb2xlXz1mdW5jdGlvbihhKXtnb29nLmdsb2JhbC5jb25zb2xlJiZnb29nLmdsb2JhbC5jb25zb2xlLmVycm9yKGEpfTsKZ29vZy5yZXF1aXJlPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSJiZnb29nLmRlYnVnTG9hZGVyXy5yZXF1ZXN0ZWQoYSk7aWYoZ29vZy5pc1Byb3ZpZGVkXyhhKSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXJldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oYSl9ZWxzZSBpZihnb29nLkVOQUJMRV9ERUJVR19MT0FERVIpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7dHJ5e2dvb2cuZGVidWdMb2FkZXJfLmxvYWRfKGEpfWZpbmFsbHl7Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89Yn19cmV0dXJuIG51bGx9fTtnb29nLnJlcXVpcmVUeXBlPWZ1bmN0aW9uKGEpe3JldHVybnt9fTtnb29nLmJhc2VQYXRoPSIiO2dvb2cuYWJzdHJhY3RNZXRob2Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigidW5pbXBsZW1lbnRlZCBhYnN0cmFjdCBtZXRob2QiKTt9Owpnb29nLmFkZFNpbmdsZXRvbkdldHRlcj1mdW5jdGlvbihhKXthLmluc3RhbmNlXz12b2lkIDA7YS5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe2lmKGEuaW5zdGFuY2VfKXJldHVybiBhLmluc3RhbmNlXztnb29nLkRFQlVHJiYoZ29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zX1tnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfLmxlbmd0aF09YSk7cmV0dXJuIGEuaW5zdGFuY2VfPW5ldyBhfX07Z29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zXz1bXTtnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUw9ITA7Z29vZy5TRUFMX01PRFVMRV9FWFBPUlRTPWdvb2cuREVCVUc7Z29vZy5sb2FkZWRNb2R1bGVzXz17fTtnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEPSFDT01QSUxFRCYmZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSO2dvb2cuVFJBTlNQSUxFPSJkZXRlY3QiO2dvb2cuQVNTVU1FX0VTX01PRFVMRVNfVFJBTlNQSUxFRD0hMTtnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU9Imdvb2ciOwpnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbDsKZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZToiIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExLHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkdPT0d9O3ZhciBjPXt9LGQ9YztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpZD1hLmNhbGwodm9pZCAwLGQpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSlkPWdvb2cubG9hZE1vZHVsZUZyb21Tb3VyY2VfLmNhbGwodm9pZCAwLGQsYSk7ZWxzZSB0aHJvdyBFcnJvcigiSW52YWxpZCBtb2R1bGUgZGVmaW5pdGlvbiIpO3ZhciBlPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7aWYoInN0cmluZyI9PT10eXBlb2YgZSYmZSlnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlLGQsYyE9PWQpOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmCk9iamVjdC5zZWFsJiYib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJk9iamVjdC5zZWFsKGQpLGdvb2cubG9hZGVkTW9kdWxlc19bZV09e2V4cG9ydHM6ZCx0eXBlOmdvb2cuTW9kdWxlVHlwZS5HT09HLG1vZHVsZUlkOmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWV9O2Vsc2UgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIG5hbWUgIicrZSsnIicpO31maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPWJ9fTtnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhLGIpe2V2YWwoZ29vZy5DTE9TVVJFX0VWQUxfUFJFRklMVEVSXy5jcmVhdGVTY3JpcHQoYikpO3JldHVybiBhfTtnb29nLm5vcm1hbGl6ZVBhdGhfPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLyIpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KSIuIj09YVtiXT9hLnNwbGljZShiLDEpOmImJiIuLiI9PWFbYl0mJmFbYi0xXSYmIi4uIiE9YVtiLTFdP2Euc3BsaWNlKC0tYiwyKTpiKys7cmV0dXJuIGEuam9pbigiLyIpfTsKZ29vZy5sb2FkRmlsZVN5bmNfPWZ1bmN0aW9uKGEpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMpcmV0dXJuIGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMoYSk7dHJ5e3ZhciBiPW5ldyBnb29nLmdsb2JhbC5YTUxIdHRwUmVxdWVzdDtiLm9wZW4oImdldCIsYSwhMSk7Yi5zZW5kKCk7cmV0dXJuIDA9PWIuc3RhdHVzfHwyMDA9PWIuc3RhdHVzP2IucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtnb29nLnR5cGVPZj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0IiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtnb29nLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO3JldHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RofTsKZ29vZy5pc0RhdGVMaWtlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmlzT2JqZWN0KGEpJiYiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRGdWxsWWVhcn07Z29vZy5pc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0Ij09YiYmbnVsbCE9YXx8ImZ1bmN0aW9uIj09Yn07Z29vZy5nZXRVaWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGdvb2cuVUlEX1BST1BFUlRZXykmJmFbZ29vZy5VSURfUFJPUEVSVFlfXXx8KGFbZ29vZy5VSURfUFJPUEVSVFlfXT0rK2dvb2cudWlkQ291bnRlcl8pfTtnb29nLmhhc1VpZD1mdW5jdGlvbihhKXtyZXR1cm4hIWFbZ29vZy5VSURfUFJPUEVSVFlfXX07Z29vZy5yZW1vdmVVaWQ9ZnVuY3Rpb24oYSl7bnVsbCE9PWEmJiJyZW1vdmVBdHRyaWJ1dGUiaW4gYSYmYS5yZW1vdmVBdHRyaWJ1dGUoZ29vZy5VSURfUFJPUEVSVFlfKTt0cnl7ZGVsZXRlIGFbZ29vZy5VSURfUFJPUEVSVFlfXX1jYXRjaChiKXt9fTsKZ29vZy5VSURfUFJPUEVSVFlfPSJjbG9zdXJlX3VpZF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO2dvb2cudWlkQ291bnRlcl89MDtnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO2lmKCJvYmplY3QiPT1ifHwiYXJyYXkiPT1iKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEuY2xvbmUpcmV0dXJuIGEuY2xvbmUoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBNYXAmJmEgaW5zdGFuY2VvZiBNYXApcmV0dXJuIG5ldyBNYXAoYSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZhIGluc3RhbmNlb2YgU2V0KXJldHVybiBuZXcgU2V0KGEpO2I9ImFycmF5Ij09Yj9bXTp7fTtmb3IodmFyIGMgaW4gYSliW2NdPWdvb2cuY2xvbmVPYmplY3QoYVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGF9O2dvb2cuYmluZE5hdGl2ZV89ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9Owpnb29nLmJpbmRKc189ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O2dvb2cuYmluZD1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIik/Z29vZy5iaW5kPWdvb2cuYmluZE5hdGl2ZV86Z29vZy5iaW5kPWdvb2cuYmluZEpzXztyZXR1cm4gZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Cmdvb2cucGFydGlhbD1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Z29vZy5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07Z29vZy5nbG9iYWxFdmFsPWZ1bmN0aW9uKGEpeygwLGV2YWwpKGEpfTsKZ29vZy5nZXRDc3NOYW1lPWZ1bmN0aW9uKGEsYil7aWYoIi4iPT1TdHJpbmcoYSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4gWW91IHBhc3NlZDogJythKTt2YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bZV18fGV9LGQ9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCItIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoO2crKylmLnB1c2goYyhlW2ddKSk7cmV0dXJuIGYuam9pbigiLSIpfTtkPWdvb2cuY3NzTmFtZU1hcHBpbmdfPyJCWV9XSE9MRSI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/YzpkOmZ1bmN0aW9uKGUpe3JldHVybiBlfTthPWI/YSsiLSIrZChiKTpkKGEpO3JldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTj9nb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTihhKTphfTsKZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihhLGIpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWE7Z29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz1ifTshQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyk7Z29vZy5HZXRNc2dPcHRpb25zPWZ1bmN0aW9uKCl7fTsKZ29vZy5nZXRNc2c9ZnVuY3Rpb24oYSxiLGMpe2MmJmMuaHRtbCYmKGE9YS5yZXBsYWNlKC88L2csIiZsdDsiKSk7YyYmYy51bmVzY2FwZUh0bWxFbnRpdGllcyYmKGE9YS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyZxdW90Oy9nLCciJykucmVwbGFjZSgvJmFtcDsvZywiJiIpKTtiJiYoYT1hLnJlcGxhY2UoL1x7XCQoW159XSspfS9nLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIG51bGwhPWImJmUgaW4gYj9iW2VdOmR9KSk7cmV0dXJuIGF9O2dvb2cuZ2V0TXNnV2l0aEZhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZXhwb3J0U3ltYm9sPWZ1bmN0aW9uKGEsYixjKXtnb29nLmV4cG9ydFBhdGhfKGEsYiwhMCxjKX07Z29vZy5leHBvcnRQcm9wZXJ0eT1mdW5jdGlvbihhLGIsYyl7YVtiXT1jfTsKZ29vZy5pbmhlcml0cz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5zdXBlckNsYXNzXz1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuYmFzZT1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O2dvb2cuc2NvcGU9ZnVuY3Rpb24oYSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLiIpO2EuY2FsbChnb29nLmdsb2JhbCl9O0NPTVBJTEVEfHwoZ29vZy5nbG9iYWwuQ09NUElMRUQ9Q09NUElMRUQpOwpnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jb25zdHJ1Y3RvcixkPWIuc3RhdGljcztjJiZjIT1PYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yfHwoYz1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4iKTt9KTtjPWdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXyhjLGEpO2EmJmdvb2cuaW5oZXJpdHMoYyxhKTtkZWxldGUgYi5jb25zdHJ1Y3RvcjtkZWxldGUgYi5zdGF0aWNzO2dvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjLnByb3RvdHlwZSxiKTtudWxsIT1kJiYoZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoYyk6Z29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGMsZCkpO3JldHVybiBjfTtnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTPWdvb2cuREVCVUc7Cmdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTP2Z1bmN0aW9uKCl7dmFyIGM9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7Y1tnb29nLlVJRF9QUk9QRVJUWV9dPWNbZ29vZy5VSURfUFJPUEVSVFlfXTtyZXR1cm4gY306YX07Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU189ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYykmJihhW2NdPWJbY10pO2Zvcih2YXIgZD0wO2Q8Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO2QrKyljPWdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2RdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGMpJiYoYVtjXT1iW2NdKX07Z29vZy5pZGVudGl0eV89ZnVuY3Rpb24oYSl7cmV0dXJuIGF9Owpnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzO2lmKCFjfHwhYy5jcmVhdGVQb2xpY3kpcmV0dXJuIGI7dHJ5e2I9Yy5jcmVhdGVQb2xpY3koYSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlffSl9Y2F0Y2goZCl7Z29vZy5sb2dUb0NvbnNvbGVfKGQubWVzc2FnZSl9cmV0dXJuIGJ9OwohQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmlzRWRnZV89ZnVuY3Rpb24oKXtyZXR1cm4hIShnb29nLmdsb2JhbC5uYXZpZ2F0b3ImJmdvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ/Z29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudDoiIikubWF0Y2goL0VkZ2VcLyhcZCspKFwuXGQpKi9pKX0sZ29vZy5pbkh0bWxEb2N1bWVudF89ZnVuY3Rpb24oKXt2YXIgYT1nb29nLmdsb2JhbC5kb2N1bWVudDtyZXR1cm4gbnVsbCE9YSYmIndyaXRlImluIGF9LGdvb2cuaXNEb2N1bWVudExvYWRpbmdfPWZ1bmN0aW9uKCl7dmFyIGE9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7cmV0dXJuIGEuYXR0YWNoRXZlbnQ/ImNvbXBsZXRlIiE9YS5yZWFkeVN0YXRlOiJsb2FkaW5nIj09YS5yZWFkeVN0YXRlfSxnb29nLmZpbmRCYXNlUGF0aF89ZnVuY3Rpb24oKXtpZih2b2lkIDAhPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIJiYic3RyaW5nIj09PXR5cGVvZiBnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSClnb29nLmJhc2VQYXRoPQpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50LGI9YS5jdXJyZW50U2NyaXB0O2E9Yj9bYl06YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiU0NSSVBUIik7Zm9yKGI9YS5sZW5ndGgtMTswPD1iOy0tYil7dmFyIGM9YVtiXS5zcmMsZD1jLmxhc3RJbmRleE9mKCI/Iik7ZD0tMT09ZD9jLmxlbmd0aDpkO2lmKCJiYXNlLmpzIj09Yy5zbGljZShkLTcsZCkpe2dvb2cuYmFzZVBhdGg9Yy5zbGljZSgwLGQtNyk7YnJlYWt9fX19LGdvb2cuZmluZEJhc2VQYXRoXygpLGdvb2cucHJvdGVjdFNjcmlwdFRhZ189ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvPFwvKFNDUklQVCkvaWcsIlxceDNjLyQxIil9LGdvb2cuRGVidWdMb2FkZXJfPWZ1bmN0aW9uKCl7dGhpcy5kZXBlbmRlbmNpZXNfPXt9O3RoaXMuaWRUb1BhdGhfPXt9O3RoaXMud3JpdHRlbl89e307dGhpcy5sb2FkaW5nRGVwc189CltdO3RoaXMuZGVwc1RvTG9hZF89W107dGhpcy5wYXVzZWRfPSExO3RoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3Rvcnk7dGhpcy5kZWZlcnJlZENhbGxiYWNrc189e307dGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtkJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChkLDApLGQ9bnVsbCl9dmFyIGQ9YjtpZihhLmxlbmd0aCl7Yj1bXTtmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGFbZV0pO2lmKCFmKXRocm93IEVycm9yKCJVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICIrYVtlXSk7Yi5wdXNoKHRoaXMuZGVwZW5kZW5jaWVzX1tmXSl9Zj1nb29nLnJlcXVpcmU7dmFyIGc9MDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKWYoYVtlXSksYltlXS5vbkxvYWQoZnVuY3Rpb24oKXsrK2c9PWEubGVuZ3RoJiZjKCl9KX1lbHNlIGMoKX0sCmdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCsiZGVwcy5qcyIpLCJkZXBzLmpzIixbXSxbXSx7fSkpO3RoaXMubG9hZERlcHNfKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5yZXF1ZXN0ZWQ9ZnVuY3Rpb24oYSxiKXsoYT10aGlzLmdldFBhdGhGcm9tRGVwc18oYSkpJiYoYnx8dGhpcy5hcmVEZXBzTG9hZGVkXyh0aGlzLmRlcGVuZGVuY2llc19bYV0ucmVxdWlyZXMpKSYmKGI9dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bYV0pJiYoZGVsZXRlIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2FdLGIoKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5zZXREZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihhKXt0aGlzLmZhY3RvcnlfPWF9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkXz0KZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRQYXRoRnJvbURlcHNfKGEpKXt2YXIgYj10aGlzLGM9W10sZD1mdW5jdGlvbihlKXt2YXIgZj1iLmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIWYpdGhyb3cgRXJyb3IoIkJhZCBkZXBlbmRlbmN5IHBhdGggb3Igc3ltYm9sOiAiK2UpO2lmKCFiLndyaXR0ZW5fW2ZdKXtiLndyaXR0ZW5fW2ZdPSEwO2U9Yi5kZXBlbmRlbmNpZXNfW2ZdO2ZvcihmPTA7ZjxlLnJlcXVpcmVzLmxlbmd0aDtmKyspZ29vZy5pc1Byb3ZpZGVkXyhlLnJlcXVpcmVzW2ZdKXx8ZChlLnJlcXVpcmVzW2ZdKTtjLnB1c2goZSl9fTtkKGEpO2E9ISF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aDt0aGlzLmRlcHNUb0xvYWRfPXRoaXMuZGVwc1RvTG9hZF8uY29uY2F0KGMpO3RoaXMucGF1c2VkX3x8YXx8dGhpcy5sb2FkRGVwc18oKX1lbHNlIGdvb2cubG9nVG9Db25zb2xlXygiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAiK2EpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPQpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9dGhpcy5wYXVzZWRfO3RoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoJiYhYjspKGZ1bmN0aW9uKCl7dmFyIGM9ITEsZD1hLmRlcHNUb0xvYWRfLnNoaWZ0KCksZT0hMTthLmxvYWRpbmdfKGQpO3ZhciBmPXtwYXVzZTpmdW5jdGlvbigpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7Yj0hMH0scmVzdW1lOmZ1bmN0aW9uKCl7Yz9hLnJlc3VtZV8oKTpiPSExfSxsb2FkZWQ6ZnVuY3Rpb24oKXtpZihlKXRocm93IEVycm9yKCJEb3VibGUgY2FsbCB0byBsb2FkZWQuIik7ZT0hMDthLmxvYWRlZF8oZCl9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIGc9W10saD0wO2g8YS5sb2FkaW5nRGVwc18ubGVuZ3RoO2grKylnLnB1c2goYS5sb2FkaW5nRGVwc19baF0pO3JldHVybiBnfSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihnKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTpnLAptb2R1bGVOYW1lOiIiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITF9fSxyZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoLGspe2smJihnb29nLmxvYWRlZE1vZHVsZXNfW2tdPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmt8fCIifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoKXtnb29nLmxvYWRlZE1vZHVsZXNfW2ddPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKGcpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciB3aXRoIGRlZmVyIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7YS5kZWZlcl8oZCxnKX0sYXJlRGVwc0xvYWRlZDpmdW5jdGlvbigpe3JldHVybiBhLmFyZURlcHNMb2FkZWRfKGQucmVxdWlyZXMpfX07CnRyeXtkLmxvYWQoZil9ZmluYWxseXtjPSEwfX0pKCk7YiYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihhKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGEpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDtiKyspaWYodGhpcy5sb2FkaW5nRGVwc19bYl09PWEpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZShiLDEpO2JyZWFrfWZvcihiPTA7Yjx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDtiKyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1tiXT09CmEucGF0aCl7dGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoYiwxKTticmVha31pZih0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg9PXRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoJiYhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgpZm9yKDt0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDspdGhpcy5yZXF1ZXN0ZWQodGhpcy5kZWZlcnJlZFF1ZXVlXy5zaGlmdCgpLCEwKTthLmxvYWRlZCgpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZF89ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhhW2JdKTtpZighY3x8IShjIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NffHxnb29nLmlzUHJvdmlkZWRfKGFbYl0pKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW4gdGhpcy5pZFRvUGF0aF8/CnRoaXMuaWRUb1BhdGhfW2FdOmEgaW4gdGhpcy5kZXBlbmRlbmNpZXNfP2E6bnVsbH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmRlZmVyXz1mdW5jdGlvbihhLGIpe3RoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2EucGF0aF09Yjt0aGlzLmRlZmVycmVkUXVldWVfLnB1c2goYS5wYXRoKX0sZ29vZy5Mb2FkQ29udHJvbGxlcj1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wZW5kaW5nPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuc2V0TW9kdWxlU3RhdGU9CmZ1bmN0aW9uKGEpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJNb2R1bGVTdGF0ZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24oYSl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkRlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnBhdGg9YTt0aGlzLnJlbGF0aXZlUGF0aD1iO3RoaXMucHJvdmlkZXM9Yzt0aGlzLnJlcXVpcmVzPWQ7dGhpcy5sb2FkRmxhZ3M9ZTt0aGlzLmxvYWRlZF89ITE7dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucGF0aCxiPWEuaW5kZXhPZigiOi8vIik7MDw9YiYmKGE9YS5zdWJzdHJpbmcoYiszKSxiPWEuaW5kZXhPZigiLyIpLDA8PWImJihhPWEuc3Vic3RyaW5nKGIrMSkpKTtyZXR1cm4gYX0sCmdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKGEpe3RoaXMubG9hZGVkXz9hKCk6dGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGEpfSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3RoaXMubG9hZGVkXz0hMDt2YXIgYT10aGlzLmxvYWRDYWxsYmFja3NfO3RoaXMubG9hZENhbGxiYWNrc189W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspYVtiXSgpfSxnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSExLGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF89e30sZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzIpO2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYl09YTtyZXR1cm4gYn0sZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oYSl7ZGVsZXRlIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYV19LApnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfPWZ1bmN0aW9uKGEsYil7aWYoYSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKXtmb3IodmFyIGM9Z29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1thXSxkPVtdLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWQucHVzaChhcmd1bWVudHNbZV0pO2MuYXBwbHkodm9pZCAwLGQpfWVsc2UgdGhyb3cgRXJyb3IoIkNhbGxiYWNrIGtleSAiK2ErIiBkb2VzIG5vdCBleGlzdCAod2FzIGJhc2UuanMgbG9hZGVkIG1vcmUgdGhhbiBvbmNlPykuIik7fSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpP2EubG9hZGVkKCk6YS5wYXVzZSgpO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGI9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7aWYoImNvbXBsZXRlIj09CmIucmVhZHlTdGF0ZSYmIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyl7aWYoL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSl7YS5sb2FkZWQoKTtyZXR1cm59dGhyb3cgRXJyb3IoJ0Nhbm5vdCB3cml0ZSAiJyt0aGlzLnBhdGgrJyIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpO312YXIgYz1nb29nLmdldFNjcmlwdE5vbmNlXygpO2lmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBkPWZ1bmN0aW9uKGgpe2gucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9aC5yZWFkeVN0YXRlP2gub25sb2FkPWQ6KGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGUpLGEubG9hZGVkKCkpfTt2YXIgZT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZCk7Yz1jPycgbm9uY2U9IicrYysnIic6IiI7dmFyIGY9JzxzY3JpcHQgc3JjPSInK3RoaXMucGF0aCsnIicrCmMrKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8/IiBkZWZlciI6IiIpKycgaWQ9InNjcmlwdC0nK2UrJyI+XHgzYy9zY3JpcHQ+JztmKz0iPHNjcmlwdCIrYysiPiI7Zj1nb29nLkRlcGVuZGVuY3kuZGVmZXJfP2YrKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NyaXB0LSIrZSsiJykub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgdGhpcyk7XG59O1xuIik6ZisoImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjcmlwdC0iK2UrIicpKTsiKTtmKz0iXHgzYy9zY3JpcHQ+IjtiLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoZik6Zil9ZWxzZXt2YXIgZz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2cuZGVmZXI9Z29vZy5EZXBlbmRlbmN5LmRlZmVyXztnLmFzeW5jPSExO2MmJihnLm5vbmNlPQpjKTtnLm9ubG9hZD1mdW5jdGlvbigpe2cub25sb2FkPW51bGw7YS5sb2FkZWQoKX07Zy5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoO2IuaGVhZC5hcHBlbmRDaGlsZChnKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oIkNhbm5vdCB1c2UgZGVmYXVsdCBkZWJ1ZyBsb2FkZXIgb3V0c2lkZSBvZiBIVE1MIGRvY3VtZW50cy4iKSwiZGVwcy5qcyI9PXRoaXMucmVsYXRpdmVQYXRoPyhnb29nLmxvZ1RvQ29uc29sZV8oIkNvbnNpZGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBUIGJlZm9yZSBsb2FkaW5nIGJhc2UuanMsIG9yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuIiksYS5sb2FkZWQoKSk6YS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGEsCmIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLkRlcGVuZGVuY3kpLGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGwsbSl7dmFyIG49IiIscD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuPScgbm9uY2U9IicrcCsnIicpO2w9bT8nPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luJytuKyI+IittKyJceDNjL3NjcmlwdD4iOic8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInK2wrJyInK24rIj5ceDNjL3NjcmlwdD4iO2Qud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChsKTpsKX1mdW5jdGlvbiBjKGwsbSl7dmFyIG49ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLmRlZmVyPSEwO24uYXN5bmM9ITE7bi50eXBlPSJtb2R1bGUiO24uc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsCiEwKTt2YXIgcD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuLm5vbmNlPXApO20/bi50ZXh0PWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdChtKTptOm4uc3JjPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTChsKTpsO2QuaGVhZC5hcHBlbmRDaGlsZChuKX1pZihnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCk/YS5sb2FkZWQoKTphLnBhdXNlKCk7ZWxzZSBpZihnb29nLmluSHRtbERvY3VtZW50XygpKXt2YXIgZD1nb29nLmdsb2JhbC5kb2N1bWVudCxlPXRoaXM7aWYoZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSl7dmFyIGY9Yjtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2UgZj1jO3ZhciBnPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGcpOwphLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSk7Zih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrZysnIiknKTtmKHRoaXMucGF0aCx2b2lkIDApO3ZhciBoPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihsKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhoKTthLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyhlLnBhdGgsbCxnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKX0pO2Yodm9pZCAwLCdpbXBvcnQgKiBhcyBtIGZyb20gIicrdGhpcy5wYXRoKyciOyBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInK2grJyIsIG0pJyk7dmFyIGs9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18oayk7YS5jbGVhck1vZHVsZVN0YXRlKCk7YS5sb2FkZWQoKX0pO2Yodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInKwprKyciKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuIiksYS5wYXVzZSgpfSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe2dvb2cuRGVwZW5kZW5jeS5jYWxsKHRoaXMsYSxiLGMsZCxlKTt0aGlzLmNvbnRlbnRzXz1udWxsO3RoaXMubGF6eUZldGNoXz0hZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8ISgibm9Nb2R1bGUiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2UuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhlLnBhdGgpO2UuY29udGVudHNfJiYoZS5jb250ZW50c189CmUudHJhbnNmb3JtKGUuY29udGVudHNfKSxlLmNvbnRlbnRzXyYmKGUuY29udGVudHNfKz0iXG4vLyMgc291cmNlVVJMPSIrZS5wYXRoKSl9ZnVuY3Rpb24gYygpe2UubGF6eUZldGNoXyYmYigpO2lmKGUuY29udGVudHNfKXtmJiZhLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpO3RyeXt2YXIgbD1lLmNvbnRlbnRzXztlLmNvbnRlbnRzXz1udWxsO2dvb2cuZ2xvYmFsRXZhbChnb29nLkNMT1NVUkVfRVZBTF9QUkVGSUxURVJfLmNyZWF0ZVNjcmlwdChsKSk7aWYoZil2YXIgbT1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfWZpbmFsbHl7ZiYmYS5jbGVhck1vZHVsZVN0YXRlKCl9ZiYmZ29vZy5nbG9iYWwuJGpzY29tcC5yZXF1aXJlLmVuc3VyZShbZS5nZXRQYXRoTmFtZSgpXSxmdW5jdGlvbigpe2EucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKGUucGF0aCxnb29nLmdsb2JhbC4kanNjb21wLnJlcXVpcmUoZS5nZXRQYXRoTmFtZSgpKSxtKX0pO2EubG9hZGVkKCl9fQpmdW5jdGlvbiBkKCl7dmFyIGw9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhtKTtjKCl9KSxuPWdvb2cuZ2V0U2NyaXB0Tm9uY2VfKCk7bj0iPHNjcmlwdCIrKG4/JyBub25jZT0iJytuKyciJzoiIikrIj4iK2dvb2cucHJvdGVjdFNjcmlwdFRhZ18oJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrbSsnIik7JykrIlx4M2Mvc2NyaXB0PiI7bC53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKG4pOm4pfXZhciBlPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWIoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCIiLHRoaXMuY29udGVudHNfKT8odGhpcy5jb250ZW50c189bnVsbCxhLmxvYWRlZCgpKToKYS5wYXVzZSgpO2Vsc2V7dmFyIGY9dGhpcy5sb2FkRmxhZ3MubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuRVM2O3RoaXMubGF6eUZldGNoX3x8YigpO3ZhciBnPTE8YS5wZW5kaW5nKCkubGVuZ3RoO2lmKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8mJihnfHxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSlhLmRlZmVyKGZ1bmN0aW9uKCl7YygpfSk7ZWxzZXt2YXIgaD1nb29nLmdsb2JhbC5kb2N1bWVudDtnPWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJigiQWN0aXZlWE9iamVjdCJpbiBnb29nLmdsb2JhbHx8Z29vZy5pc0VkZ2VfKCkpO2lmKGYmJmdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkmJiFnKXtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwO2EucGF1c2UoKTt2YXIgaz1oLm9ucmVhZHlzdGF0ZWNoYW5nZTtoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJpbnRlcmFjdGl2ZSI9PWgucmVhZHlTdGF0ZSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPQprLGMoKSxhLnJlc3VtZSgpKTsiZnVuY3Rpb24iPT09dHlwZW9mIGsmJmsuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWVsc2UgZ29vZy5pbkh0bWxEb2N1bWVudF8oKSYmZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKT9kKCk6YygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYSl7fSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQsZSl7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGEsYixjLGQsZSl9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYiwKYyxkLGUpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxhLGIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZ2b2lkIDAhPT1nb29nLmdsb2JhbC5KU09OPyJnb29nLmxvYWRNb2R1bGUoIitnb29nLmdsb2JhbC5KU09OLnN0cmluZ2lmeShhKyJcbi8vIyBzb3VyY2VVUkw9Iit0aGlzLnBhdGgrIlxuIikrIik7IjonZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsidXNlIHN0cmljdCI7JythKyJcbjtyZXR1cm4gZXhwb3J0c30pO1xuLy8jIHNvdXJjZVVSTD0iK3RoaXMucGF0aCsiXG4ifSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkKXtiPQpifHxbXTthPWEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBlPWdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCthKTtkJiYiYm9vbGVhbiIhPT10eXBlb2YgZHx8KGQ9ZD97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSk7Yz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koZSxhLGIsYyxkKTt0aGlzLmRlcGVuZGVuY2llc19bZV09Yztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuaWRUb1BhdGhfW2JbY11dPWU7dGhpcy5pZFRvUGF0aF9bYV09ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBlLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkdPT0c/bmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koYSxiLGMsZCxlKTplLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNj9nb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ/Cm5ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGEsYixjLGQsZSk6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShhLGIsYyxkLGUpOm5ldyBnb29nLkRlcGVuZGVuY3koYSxiLGMsZCxlKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oYSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoYSl9LGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrIiNiYXNlIik6bnVsbCxnb29nLmdsb2JhbC5DTE9TVVJFX05PX0RFUFN8fGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpLApnb29nLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2dvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChhLGIpfSk7aWYoIUNPTVBJTEVEKXt2YXIgaXNDaHJvbWU4Nz0hMTt0cnl7aXNDaHJvbWU4Nz1ldmFsKGdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eVNjcmlwdCkhPT1nb29nLmdsb2JhbC50cnVzdGVkVHlwZXMuZW1wdHlTY3JpcHR9Y2F0Y2goYSl7fWdvb2cuQ0xPU1VSRV9FVkFMX1BSRUZJTFRFUl89Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzJiZpc0Nocm9tZTg3JiZnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeSgiZ29vZyNiYXNlI2Rldm9ubHkjZXZhbCIpfHx7Y3JlYXRlU2NyaXB0Omdvb2cuaWRlbnRpdHlffX07Y29uc3QgcHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxjcmVhdGVFbmRwb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSx0aHJvd01hcmtlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxpc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPWE9PiJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hfHwiZnVuY3Rpb24iPT09dHlwZW9mIGEscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz0Ke2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiZhW3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdLHNlcmlhbGl6ZShhKXtjb25zdCB7cG9ydDE6Yixwb3J0MjpjfT1uZXcgTWVzc2FnZUNoYW5uZWw7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKTtyZXR1cm5bYyxbY11dfSxkZXNlcmlhbGl6ZShhKXthLnN0YXJ0KCk7cmV0dXJuIHdyYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKX19LHRocm93VHJhbnNmZXJIYW5kbGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9e2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiYKdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyBpbiBhLHNlcmlhbGl6ZSh7dmFsdWU6YX0pe3JldHVyblthIGluc3RhbmNlb2YgRXJyb3I/e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6YS5tZXNzYWdlLG5hbWU6YS5uYW1lLHN0YWNrOmEuc3RhY2t9fTp7aXNFcnJvcjohMSx2YWx1ZTphfSxbXV19LGRlc2VyaWFsaXplKGEpe2lmKGEuaXNFcnJvcil0aHJvdyBPYmplY3QuYXNzaWduKEVycm9yKGEudmFsdWUubWVzc2FnZSksYS52YWx1ZSk7dGhyb3cgYS52YWx1ZTt9fSx0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9bmV3IE1hcChbWyJwcm94eSIscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc10sWyJ0aHJvdyIsdGhyb3dUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc11dKTsKZnVuY3Rpb24gZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiPXNlbGYpe2IuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShkKXtpZihkJiZkLmRhdGEpe3ZhciB7aWQ6Zix0eXBlOmcscGF0aDpofT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxkLmRhdGEpLGs9KGQuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTt0cnl7Y29uc3QgbT1oLnNsaWNlKDAsLTEpLnJlZHVjZSgocCxxKT0+cFtxXSxhKSxuPWgucmVkdWNlKChwLHEpPT5wW3FdLGEpO3N3aXRjaChnKXtjYXNlICJHRVQiOnZhciBsPW47YnJlYWs7Y2FzZSAiU0VUIjptW2guc2xpY2UoLTEpWzBdXT1mcm9tV2lyZVZhbHVlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZC5kYXRhLnZhbHVlKTsKbD0hMDticmVhaztjYXNlICJBUFBMWSI6bD1uLmFwcGx5KG0sayk7YnJlYWs7Y2FzZSAiQ09OU1RSVUNUIjpjb25zdCBwPW5ldyBuKC4uLmspO2w9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhwKTticmVhaztjYXNlICJFTkRQT0lOVCI6Y29uc3Qge3BvcnQxOnEscG9ydDI6dX09bmV3IE1lc3NhZ2VDaGFubmVsO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsdSk7bD10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHEsW3FdKTticmVhaztjYXNlICJSRUxFQVNFIjpsPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gobSl7bD17dmFsdWU6bSxbdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc106MH19UHJvbWlzZS5yZXNvbHZlKGwpLmNhdGNoKG09Pgooe3ZhbHVlOm0sW3Rocm93TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOjB9KSkudGhlbihtPT57Y29uc3QgW24scF09dG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhtKTtiLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6Zn0pLHApOyJSRUxFQVNFIj09PWcmJihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhiKSl9KX19KTtiLnN0YXJ0JiZiLnN0YXJ0KCl9ZnVuY3Rpb24gaXNNZXNzYWdlUG9ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3JldHVybiJNZXNzYWdlUG9ydCI9PT1hLmNvbnN0cnVjdG9yLm5hbWV9CmZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtpc01lc3NhZ2VQb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSkmJmEuY2xvc2UoKX1mdW5jdGlvbiB3cmFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXtyZXR1cm4gY3JlYXRlUHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLFtdLGIpfWZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7aWYoYSl0aHJvdyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIik7fQpmdW5jdGlvbiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsYj1bXSxjPWZ1bmN0aW9uKCl7fSl7bGV0IGQ9ITE7Y29uc3QgZT1uZXcgUHJveHkoYyx7Z2V0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtpZihnPT09cmVsZWFzZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMpcmV0dXJuKCk9PnJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJSRUxFQVNFIixwYXRoOmIubWFwKGg9PmgudG9TdHJpbmcoKSl9KS50aGVuKCgpPT57Y2xvc2VFbmRQb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpO2Q9ITB9KTtpZigidGhlbiI9PT0KZyl7aWYoMD09PWIubGVuZ3RoKXJldHVybnt0aGVuOigpPT5lfTtmPXJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJHRVQiLHBhdGg6Yi5tYXAoaD0+aC50b1N0cmluZygpKX0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtyZXR1cm4gZi50aGVuLmJpbmQoZil9cmV0dXJuIGNyZWF0ZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxbLi4uYixnXSl9LHNldChmLGcsaCl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbayxsXT10b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGgpO3JldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSwKe3R5cGU6IlNFVCIscGF0aDpbLi4uYixnXS5tYXAobT0+bS50b1N0cmluZygpKSx2YWx1ZTprfSxsKS50aGVuKGZyb21XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyl9LGFwcGx5KGYsZyxoKXt0aHJvd0lmUHJveHlSZWxlYXNlZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGQpO2Y9YltiLmxlbmd0aC0xXTtpZihmPT09Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtpZigiYmluZCI9PT1mKXJldHVybiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsCmIuc2xpY2UoMCwtMSkpO2NvbnN0IFtrLGxdPXByb2Nlc3NBcmd1bWVudHMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhoKTtyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkFQUExZIixwYXRoOmIubWFwKG09Pm0udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omt9LGwpLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX0sY29uc3RydWN0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbaCxrXT1wcm9jZXNzQXJndW1lbnRzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZyk7cmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLAp7dHlwZToiQ09OU1RSVUNUIixwYXRoOmIubWFwKGw9PmwudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omh9LGspLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX19KTtyZXR1cm4gZX1mdW5jdGlvbiBteUZsYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhKX0KZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2E9YS5tYXAodG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyk7cmV0dXJuW2EubWFwKGI9PmJbMF0pLG15RmxhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEubWFwKGI9PmJbMV0pKV19Y29uc3QgdHJhbnNmZXJDYWNoZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHRyYW5zZmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXt0cmFuc2ZlckNhY2hlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuc2V0KGEsYik7cmV0dXJuIGF9CmZ1bmN0aW9uIHByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oYSx7W3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOiEwfSl9ZnVuY3Rpb24gd2luZG93RW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGI9c2VsZixjPSIqIil7cmV0dXJue3Bvc3RNZXNzYWdlOihkLGUpPT5hLnBvc3RNZXNzYWdlKGQsYyxlKSxhZGRFdmVudExpc3RlbmVyOmIuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKGIpLHJlbW92ZUV2ZW50TGlzdGVuZXI6Yi5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoYil9fQpmdW5jdGlvbiB0b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2Zvcihjb25zdCBbYixjXW9mIHRyYW5zZmVySGFuZGxlcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylpZihjLmNhbkhhbmRsZShhKSl7Y29uc3QgW2QsZV09Yy5zZXJpYWxpemUoYSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmIsdmFsdWU6ZH0sZV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmF9LHRyYW5zZmVyQ2FjaGUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy5nZXQoYSl8fFtdXX0KZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIkhBTkRMRVIiOnJldHVybiB0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZ2V0KGEubmFtZSkuZGVzZXJpYWxpemUoYS52YWx1ZSk7Y2FzZSAiUkFXIjpyZXR1cm4gYS52YWx1ZX19CmZ1bmN0aW9uIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGIsYyl7cmV0dXJuIG5ldyBQcm9taXNlKGQ9Pntjb25zdCBlPWdlbmVyYXRlVVVJRCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKCk7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBoKGcpe2cuZGF0YSYmZy5kYXRhLmlkJiZnLmRhdGEuaWQ9PT1lJiYoYS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixoKSxkKGcuZGF0YSkpfSk7YS5zdGFydCYmYS5zdGFydCgpO2EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6ZX0sYiksYyl9KX0KZnVuY3Rpb24gZ2VuZXJhdGVVVUlEJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoKXtyZXR1cm4gQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz17fTttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuY3JlYXRlRW5kcG9pbnQ9Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZXhwb3NlPWV4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHk9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHlNYXJrZXI9cHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucmVsZWFzZVByb3h5PXJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy50cmFuc2Zlcj10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMudHJhbnNmZXJIYW5kbGVycz10cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndpbmRvd0VuZHBvaW50PXdpbmRvd0VuZHBvaW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndyYXA9d3JhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO2Z1bmN0aW9uIE1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlKCl7fU1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5yZWFkeT0hMTtNZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5wcm90b3R5cGUucG9ydD12b2lkIDA7TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUucHJvdG90eXBlLnBvc3Q9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5icm9hZGNhc3RQbGF5U3RhdGU9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS53b3JrZXJTdGF0ZT12b2lkIDA7Ck1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS52YW5pbGxhV29ya2VyU3RhdGU9dm9pZCAwO3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUsbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9e307bW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUuTWVzc2FnZVBvcnRTdGF0ZT1NZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTttb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTtjb25zdCBjc291bmRDcmVhdGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uPWE9PigpPT5hLmV4cG9ydHMuY3NvdW5kQ3JlYXRlV2FzaSgpO2Nzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJjcmVhdGUgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kRGVzdHJveShiKTtjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi50b1N0cmluZz0oKT0+ImRlc3Ryb3kgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmRHZXRBUElWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT4oKT0+YS5leHBvcnRzLmNzb3VuZEdldEFQSVZlcnNpb24oKTsKY3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRBUElWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KCk9PmEuZXhwb3J0cy5jc291bmRHZXRWZXJzaW9uKCk7Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kSW5pdGlhbGl6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KGIsYyk9PmEuZXhwb3J0cy5jc291bmRJbml0aWFsaXplKGMpO2Nzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLnRvU3RyaW5nPSgpPT4iaW5pdGlhbGl6ZSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwp2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249e307bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kQ3JlYXRlPWNzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kRGVzdHJveT1jc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjttb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi5jc291bmRHZXRBUElWZXJzaW9uPWNzb3VuZEdldEFQSVZlcnNpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uO21vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLmNzb3VuZEdldFZlcnNpb249Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kSW5pdGlhbGl6ZT1jc291bmRJbml0aWFsaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjtjb25zdCBXSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzPTE7ZnVuY3Rpb24gVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoKXt0aGlzLmVuY29kaW5nPSJ1dGY4IjtyZXR1cm4gdGhpc31UZXh0RW5jb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcigicGFzc2VkIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgIithKyIgIit0eXBlb2YgYSk7YT11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYSkpO2NvbnN0IGI9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgpO1suLi5hXS5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7YltkXT1jLmNvZGVQb2ludEF0KDApfSk7cmV0dXJuIGJ9OwpmdW5jdGlvbiBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycygpe3RoaXMuZW5jb2Rpbmc9InV0ZjgiO3RoaXMuaWdub3JlQk9NPSExO3RoaXMudHJpbU51bGw9YT0+e2NvbnN0IGI9YS5pbmRleE9mKCJceDAwIik7cmV0dXJuLTE8Yj9hLnNsaWNlKDAsTWF0aC5tYXgoMCxiKSk6YX07dGhpcy5kZWNvZGU9ZnVuY3Rpb24oYSxiKXtpZih2b2lkIDA9PT1hKXJldHVybiIiO2lmKCJib29sZWFuIiE9PXR5cGVvZih2b2lkIDAhPT1iJiYic3RyZWFtImluIGI/Yi5zdHJlYW06ITEpKXRocm93IG5ldyBUeXBlRXJyb3IoInN0cmVhbSBvcHRpb24gbXVzdCBiZSBib29sZWFuIik7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGEpKXthPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpO2NvbnN0IGM9QXJyYXkuZnJvbSh7bGVuZ3RoOmEubGVuZ3RofSk7YS5mb3JFYWNoKGZ1bmN0aW9uKGQsZSl7Y1tlXT1TdHJpbmcuZnJvbUNvZGVQb2ludChkKX0pOwpyZXR1cm4gdGhpcy50cmltTnVsbChjLmpvaW4oIiIpKX10aHJvdyBuZXcgVHlwZUVycm9yKCJwYXNzZWQgYXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIgdmlldyIpO319CmNvbnN0IGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1XSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzP25ldyBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczpuZXcgVGV4dERlY29kZXIoInV0ZjgiKSxlbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9V0lUSF9URVhUX0VOQ09ERVJfUE9MWUZJTEwkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz9uZXcgVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM6bmV3IFRleHRFbmNvZGVyKCJ1dGY4IiksdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1hPT5kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKGEpO3ZhciBtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9e307Cm1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGVyPWRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczttb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2Rlcj1lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7bW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLnVpbnQyU3RyaW5nPXVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7Y29uc3QgdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsPWE9Pntjb25zdCBiPWEuaW5kZXhPZigiXHgwMCIpO3JldHVybi0xPGI/YS5zdWJzdHIoMCxiKTphfTt2YXIgbW9kdWxlJHNyYyR1dGlscyR0cmltX251bGw9e307bW9kdWxlJHNyYyR1dGlscyR0cmltX251bGwudHJpbU51bGw9dHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsO2NvbnN0IGZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57YS5leHBvcnRzLmZyZWVTdHJpbmdNZW0oYil9LHB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57KHtidWZmZXI6YX09YS53YXNpLm1lbW9yeSk7Yj1uZXcgVWludDhBcnJheShhLGIpO2I9dWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhiKTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKGIpfSxzdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycz0oYSxiKT0+e2lmKCJzdHJpbmciIT09dHlwZW9mIGIpY29uc29sZS5lcnJvcigiRXhwZWN0ZWQgc3RyaW5nIGJ1dCBnb3QiLHR5cGVvZiBiKTtlbHNle2I9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShiKTt2YXIgYz1hLmV4cG9ydHMuYWxsb2NTdHJpbmdNZW0oYi5sZW5ndGgpOwooe2J1ZmZlcjphfT1hLndhc2kubWVtb3J5KTsobmV3IFVpbnQ4QXJyYXkoYSxjLGIubGVuZ3RoKzEpKS5zZXQoYik7cmV0dXJuIGN9fTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM9e307bW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMuZnJlZVN0cmluZ1B0cj1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVyczttb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycy5wdHIyc3RyaW5nPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzO21vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzLnN0cmluZzJwdHI9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM7Y29uc3QgY3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFBhcnNlT3JjKGIsYyk7Y3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBhcnNlT3JjID0gYXN5bmMgKG9yY2hlc3RyYSkgPT4gT2JqZWN0OyI7Y29uc3QgY3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZENvbXBpbGVUcmVlKGIsYyk7Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVUcmVlID0gYXN5bmMgKHRyZWUpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kQ29tcGlsZU9yYyhiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVPcmMgPSBhc3luYyAob3JjaGVzdHJhKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+e2M9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtiPWEuZXhwb3J0cy5jc291bmRFdmFsQ29kZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZEV2YWxDb2RlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjc291bmRFdmFsQ29kZSA9IGFzeW5jIChvcmNoZXN0cmEpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFN0YXJ0V2FzaShiKTtjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4ic3RhcnQgPSBhc3luYyAoKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2xldCBkO3RyeXtkPWEuZXhwb3J0cy5jc291bmRDb21waWxlQ3NkKGIsYyl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBkfTtjc291bmRDb21waWxlQ3NkJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjb21waWxlQ3NkID0gYXN5bmMgKHBhdGgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlQ3NkVGV4dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZENvbXBpbGVDc2RUZXh0KGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVDc2RUZXh0ID0gYXN5bmMgKGNzb3VuZERvY3VtZW50KSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFBlcmZvcm0oYik7Y3NvdW5kUGVyZm9ybSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4icGVyZm9ybSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUtzbXBzV2FzaShiKTtjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBlcmZvcm1Lc21wcyA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFBlcmZvcm1CdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUJ1ZmZlcihiKTtjc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJwZXJmb3JtQnVmZmVyID0gYXN5bmMgKGNzb3VuZCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTdG9wKGIpOwpjc291bmRTdG9wJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJzdG9wID0gYXN5bmMgKCkgPT4gdW5kZWZpbmVkOyI7Y29uc3QgY3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRDbGVhbnVwKGIpO2Nzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNsZWFudXAgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRSZXNldFdhc2koYik7Y3NvdW5kUmVzZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InJlc2V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENsZWFudXA9Y3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRDb21waWxlQ3NkPWNzb3VuZENvbXBpbGVDc2QkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZUNzZFRleHQ9Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZU9yYz1jc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENvbXBpbGVUcmVlPWNzb3VuZENvbXBpbGVUcmVlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7Cm1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRFdmFsQ29kZT1jc291bmRFdmFsQ29kZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQYXJzZU9yYz1jc291bmRQYXJzZU9yYyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQZXJmb3JtPWNzb3VuZFBlcmZvcm0kJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kUGVyZm9ybUJ1ZmZlcj1jc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFBlcmZvcm1Lc21wcz1jc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFJlc2V0PWNzb3VuZFJlc2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0YXJ0PWNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0b3A9Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO2NvbnN0IHNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXM9e2ludDo0LE1ZRkxUOjQsY2hhcjoxfSxzaXplb2ZTdHJ1Y3QkJG1vZHVsZSRzcmMkdXRpbHMkbmF0aXZlX3NpemVzPWE9PmEucmVkdWNlKChiLFssYywuLi5kXSk9PmIrKCJjaGFyIj09PWM/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tjXSpkWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbY10pLDApO3ZhciBtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcz17fTttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplT2ZQcmltaXRpdmU9c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplczttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplb2ZTdHJ1Y3Q9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcztjb25zdCBzdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD0oYSxiKT0+e1thXT1hLnJlZHVjZSgoW2MsZF0sW2UsZiwuLi5nXSk9PntnPSJjaGFyIj09PWY/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tmXSpnWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbZl07Zj0iY2hhciI9PT1mP3RyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGIuc3ViYXJyYXkoZCxnKSkpfHwiIjpiW2RdO2NbZV09ZjtyZXR1cm5bYyxkK2ddfSxbe30sMF0pO3JldHVybiBhfTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD17fTsKbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdC5zdHJ1Y3RCdWZmZXJUb09iamVjdD1zdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdDtjb25zdCBDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGVidWdfbW9kZSIsImludCJdLFsiYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiaGFyZHdhcmVfYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiZGlzcGxheXMiLCJpbnQiXSxbImFzY2lpX2dyYXBocyIsImludCJdLFsicG9zdHNjcmlwdF9ncmFwaHMiLCJpbnQiXSxbIm1lc3NhZ2VfbGV2ZWwiLCJpbnQiXSxbInRlbXBvIiwiaW50Il0sWyJyaW5nX2JlbGwiLCJpbnQiXSxbInVzZV9jc2NvcmUiLCJpbnQiXSxbInRlcm1pbmF0ZV9vbl9taWRpIiwiaW50Il0sWyJoZWFydGJlYXQiLCJpbnQiXSxbImRlZmVyX2dlbjAxX2xvYWQiLCJpbnQiXSxbIm1pZGlfa2V5IiwiaW50Il0sWyJtaWRpX2tleV9jcHMiLCJpbnQiXSxbIm1pZGlfa2V5X29jdCIsImludCJdLFsibWlkaV9rZXlfcGNoIiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5IiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5X2FtcCIsImludCJdLFsibm9fZGVmYXVsdF9wYXRocyIsCiJpbnQiXSxbIm51bWJlcl9vZl90aHJlYWRzIiwiaW50Il0sWyJzeW50YXhfY2hlY2tfb25seSIsImludCJdLFsiY3NkX2xpbmVfY291bnRzIiwiaW50Il0sWyJjb21wdXRlX3dlaWdodHMiLCJpbnQiXSxbInJlYWx0aW1lX21vZGUiLCJpbnQiXSxbInNhbXBsZV9hY2N1cmF0ZSIsImludCJdLFsic2FtcGxlX3JhdGVfb3ZlcnJpZGUiLCJNWUZMVCJdLFsiY29udHJvbF9yYXRlX292ZXJyaWRlIiwiTVlGTFQiXSxbIm5jaG5sc19vdmVycmlkZSIsImludCJdLFsibmNobmxzX2lfb3ZlcnJpZGUiLCJpbnQiXSxbImUwZGJmc19vdmVycmlkZSIsIk1ZRkxUIl0sWyJkYWVtb24iLCJpbnQiXSxbImtzbXBzX292ZXJyaWRlIiwiaW50Il0sWyJGRlRfbGlicmFyeSIsImludCJdXSxDU19NSURJREVWSUNFJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGV2aWNlX25hbWUiLCJjaGFyIiw2NF0sWyJpbnRlcmZhY2VfbmFtZSIsImNoYXIiLDY0XSxbImRldmljZV9pZCIsImNoYXIiLDY0XSxbIm1pZGlfbW9kdWxlIiwKImNoYXIiLDY0XSxbImlzT3V0cHV0IiwiaW50Il1dO3ZhciBtb2R1bGUkc3JjJHN0cnVjdHVyZXM9e307Y29uc3QgY3NvdW5kR2V0U3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcihiKTtjc291bmRHZXRTciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRTciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEtyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0S3IoYik7Y3NvdW5kR2V0S3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0S3IgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRLc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEtzbXBzKGIpO2Nzb3VuZEdldEtzbXBzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldEtzbXBzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldE5jaG5scyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE5jaG5scyhiKTtjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0TmNobmxzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0TmNobmxzSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXROY2hubHNJbnB1dChiKTtjc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXROY2hubHNJbnB1dCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0MGRCRlMoYik7CmNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldDBkQkZTID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRBNChiKTtjc291bmRHZXRBNCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRBNCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyhiKTtjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0Q3VycmVudFRpbWVTYW1wbGVzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNpemVPZk1ZRkxUJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQoYik7Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0U2l6ZU9mTVlGTFQgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFNldE9wdGlvbihiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJzZXRPcHRpb24gPSBhc3luYyAob3B0aW9uKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT4oYixjKT0+e2EuZXhwb3J0cy5jc291bmRTZXRQYXJhbXMoYixjKX07Y3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldFBhcmFtcyA9IGFzeW5jIChjc291bmRQYXJhbXMpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2NvbnN0IGQ9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcyhDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXMpLGU9YS5leHBvcnRzLmFsbG9jQ3NvdW5kUGFyYW1zU3RydWN0KCk7Yz1uZXcgVWludDhBcnJheShjLGUsZCk7YS5leHBvcnRzLmNzb3VuZEdldFBhcmFtcyhiLGUpO2I9c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NPVU5EX1BBUkFNUyQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGMpO2EuZXhwb3J0cy5mcmVlQ3NvdW5kUGFyYW1zKGUpO3JldHVybiBifTtjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0UGFyYW1zID0gYXN5bmMgKCkgPT4gQ1NPVU5EX1BBUkFNUzsiOwpjb25zdCBjc291bmRHZXREZWJ1ZyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldERlYnVnKGIpO2Nzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldERlYnVnID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57YS5leHBvcnRzLmNzb3VuZFNldERlYnVnKGIsYyl9O2Nzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldERlYnVnID0gYXN5bmMgKG51bWJlcikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldDBkQkZTPWNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0QTQ9Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcz1jc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldERlYnVnPWNzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXRLcj1jc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0S3NtcHM9Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzOwptb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHM9Y3NvdW5kR2V0TmNobmxzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHNJbnB1dD1jc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0UGFyYW1zPWNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQ9Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldFNyPWNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kU2V0RGVidWc9Y3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldE9wdGlvbj1jc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldFBhcmFtcz1jc291bmRTZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO2NvbnN0IGNzb3VuZEdldElucHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldElucHV0QnVmZmVyU2l6ZShiKTtjc291bmRHZXRJbnB1dEJ1ZmZlclNpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE91dHB1dEJ1ZmZlclNpemUoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRJbnB1dEJ1ZmZlcihiKTsKY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXIgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRPdXRwdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXRCdWZmZXIoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldE91dHB1dEJ1ZmZlciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcGluKGIpO2Nzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0U3BpbiA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldFNwb3V0KGIpO2Nzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldFNwb3V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldElucHV0QnVmZmVyPWNzb3VuZEdldElucHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRJbnB1dEJ1ZmZlclNpemU9Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRPdXRwdXRCdWZmZXI9Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzsKbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8uY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZT1jc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRTcGluPWNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvO21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldFNwb3V0PWNzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbztmdW5jdGlvbiBhZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5hZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOk51bWJlcihhKStOdW1iZXIoYil9Y29uc3QgY2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSk7ZnVuY3Rpb24gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9W10pe3JldHVybiguLi5jKT0+e2M9Wy4uLmIsLi4uY107cmV0dXJuIGMubGVuZ3RoPj1hLmxlbmd0aD9hKC4uLmMpOmN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKX19CmZ1bmN0aW9uIGFkanVzdEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2NvbnN0IGQ9MD5hP2MubGVuZ3RoK2E6YTtpZihhPj1jLmxlbmd0aHx8MD5kKXJldHVybiBjO2E9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7YVtkXT1iKGFbZF0pO3JldHVybiBhfWNvbnN0IGFkanVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYWRqdXN0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspaWYoIWEoYltjXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYWxsUGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+e2xldCBjPTA7Zm9yKDtjPGEubGVuZ3RoOyl7aWYoIWFbY10oLi4uYikpcmV0dXJuITE7YysrfXJldHVybiEwfX1mdW5jdGlvbiBhbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYj0+YX0KZnVuY3Rpb24gYW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJiZifWZ1bmN0aW9uIGFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9MDtmb3IoO2M8Yi5sZW5ndGg7KXtpZihhKGJbY10sYykpcmV0dXJuITA7YysrfXJldHVybiExfQpmdW5jdGlvbiBhbnlQYXNzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuKC4uLmIpPT57bGV0IGM9MDtmb3IoO2M8YS5sZW5ndGg7KXtpZihhW2NdKC4uLmIpKXJldHVybiEwO2MrK31yZXR1cm4hMX19ZnVuY3Rpb24gYXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLnNwbGl0KCIiKS5jb25jYXQoYSk7Y29uc3QgYz1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjLnB1c2goYSk7cmV0dXJuIGN9CmZ1bmN0aW9uIGFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmEuYXBwbHkodGhpcyxiKX1jb25zdCB7aXNBcnJheTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN9PUFycmF5OwpmdW5jdGlvbiBfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9MCl7Zm9yKGNvbnN0IGMgaW4gYSkhMSE9PWEuaGFzT3duUHJvcGVydHkoYykmJiJjb25zdHJ1Y3RvciIhPT1jJiYoIm9iamVjdCI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2NdKSkpLCJmdW5jdGlvbiI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixhW2NdLmxlbmd0aCkpKTtyZXR1cm4gYn0KZnVuY3Rpb24gX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2NvbnN0IGE9W107bGV0IGI9MDtjb25zdCBjPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKDtiPGMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFyZ3VtZW50c1tiXTspYVtiXT1hcmd1bWVudHNbYl0sYisrO3JldHVybiBhfQpmdW5jdGlvbiBfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXt2YXIgZD1iLWMubGVuZ3RoO2lmKDE9PT1kKXJldHVybiBmPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZikpO2lmKDI9PT1kKXJldHVybihmLGcpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZixnKSk7aWYoMz09PWQpcmV0dXJuKGYsZyxoKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLApiLF9fZmlsdGVyVW5kZWZpbmVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoLi4uYyxmLGcsaCkpO2lmKDQ9PT1kKXJldHVybihmLGcsaCxrKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyguLi5jLGYsZyxoLGspKTtpZig0PGQpcmV0dXJuKC4uLmYpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsLi4uZikpO2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSl7dmFyIGU9W107ZD0wO2NvbnN0IGY9YS5sZW5ndGg7CmZvcig7ZDxmO2QrKyl7aWYoIm9iamVjdCI9PT10eXBlb2YgYVtkXXx8aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pKWVbZF09X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdLGIsYyk7ImZ1bmN0aW9uIj09PXR5cGVvZiBhW2RdJiYoZVtkXT1hW2RdKC4uLmMpKX1yZXR1cm4gZX1kPXt9O2ZvcihlIGluIGEpITEhPT1hLmhhc093blByb3BlcnR5KGUpJiYiY29uc3RydWN0b3IiIT09ZSYmKCJvYmplY3QiPT09dHlwZW9mIGFbZV0/ZFtlXT1fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZV0sYixjKToiZnVuY3Rpb24iPT09dHlwZW9mIGFbZV0mJihkW2VdPWFbZV0oLi4uYykpKTtyZXR1cm4gZH0KZnVuY3Rpb24gYXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPV9fZmluZEhpZ2hlc3RBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpO3JldHVybiAwPT09Yz8oKT0+KHt9KTpfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyxiKX1mdW5jdGlvbiBhc3NvY0ZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LGMse1thXTpifSl9Y29uc3QgYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIF9pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYTw8MD09PWF9Y29uc3QgaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9TnVtYmVyLmlzSW50ZWdlcnx8X2lzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBhc3NvY1BhdGhGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtjb25zdCBkPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiLiIpLm1hcChlPT5pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhOdW1iZXIoZSkpP051bWJlcihlKTplKTphO2lmKDA9PT1kLmxlbmd0aClyZXR1cm4gYjthPWRbMF07aWYoMTxkLmxlbmd0aCl7Y29uc3QgZT0ib2JqZWN0Ij09PXR5cGVvZiBjJiZudWxsIT09YyYmYy5oYXNPd25Qcm9wZXJ0eShhKT9jW2FdOmlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGRbMV0pP1tdOnt9O2I9YXNzb2NQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkLDEpLGIsZSl9cmV0dXJuIGlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpJiYKaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpPyhjPWNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpLGNbYV09YixjKTphc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKX1jb25zdCBhc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jUGF0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBkPTA7bGV0IGU9MDtjb25zdCBmPWIubGVuZ3RoLGc9YXJndW1lbnRzLmxlbmd0aCxoPUFycmF5KGYrZyk7Zm9yKDtkPGY7KWhbZF09YltkXSxkKys7Zm9yKDtlPGc7KWhbZitlXT1hcmd1bWVudHNbZV0sZSsrO2Q9YS1oLmxlbmd0aDtyZXR1cm4gaC5sZW5ndGg+PWE/Yy5hcHBseSh0aGlzLGgpOl9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxoLGMpKX19CmZ1bmN0aW9uIF9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihjLGQsZSxmKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNjpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07CmNhc2UgNzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDg6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDk6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtLG4pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fQpmdW5jdGlvbiBjdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5jdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKDEwPGEpdGhyb3cgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIF9hcml0eSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpO3JldHVybiBfYXJpdHkkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsX2N1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsW10sYikpfQpmdW5jdGlvbiBiaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS5sZW5ndGgsKC4uLmMpPT5hLmFwcGx5KGIsYykpfWZ1bmN0aW9uIGJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5ib3RoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTooLi4uYyk9PmEoLi4uYykmJmIoLi4uYyl9CmZ1bmN0aW9uIGNoYWluJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOltdLmNvbmNhdCguLi5iLm1hcChhKSl9ZnVuY3Rpb24gY2xhbXBGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZihhPmIpdGhyb3cgRXJyb3IoIm1pbiBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4IGluIGNsYW1wKG1pbiwgbWF4LCB2YWx1ZSkiKTtpZihjPj1hJiZjPD1iKXJldHVybiBjO2lmKGM+YilyZXR1cm4gYjtpZihjPGEpcmV0dXJuIGF9Y29uc3QgY2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGNsYW1wRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGNsb25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk/QXJyYXkoYS5sZW5ndGgpOnt9O2lmKGEmJmEuZ2V0VGltZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2Zvcihjb25zdCBjIGluIGEpe2NvbnN0IGQ9YVtjXTtiW2NdPSJvYmplY3QiPT09dHlwZW9mIGQmJm51bGwhPT1kP2QuZ2V0VGltZT9uZXcgRGF0ZShkLmdldFRpbWUoKSk6Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkKTpkfXJldHVybiBifWZ1bmN0aW9uIGNvbXBsZW1lbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PiFhKC4uLmIpfQpjbGFzcyBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN7Y29uc3RydWN0b3IoYSl7dGhpcy52YWx1ZT1hfX1mdW5jdGlvbiByZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZHVjZTogbGlzdCBtdXN0IGJlIGFycmF5IG9yIGl0ZXJhYmxlIik7bGV0IGQ9MDtjb25zdCBlPWMubGVuZ3RoO2Zvcig7ZDxlOyl7Yj1hKGIsY1tkXSxkLGMpO2lmKGIgaW5zdGFuY2VvZiBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpcmV0dXJuIGIudmFsdWU7ZCsrfXJldHVybiBifQpjb25zdCByZWR1Y2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpLHJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT5uZXcgUmVkdWNlU3RvcHBlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpOwpmdW5jdGlvbiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihjLGQpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihjLGQsZSl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTsKY2FzZSA3OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCxrKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgOTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0sbil7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtkZWZhdWx0OnRocm93IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKTt9fQpmdW5jdGlvbiBfcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuY2FsbCh0aGlzLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19CmZ1bmN0aW9uIHBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJwaXBlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhcmd1bWVudHNbMF0ubGVuZ3RoLHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX3BpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyxhcmd1bWVudHNbMF0sQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEsSW5maW5pdHkpKSl9CmZ1bmN0aW9uIGNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJjb21wb3NlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBwaXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCkucmV2ZXJzZSgpKX1mdW5jdGlvbiBjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5jb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOiJzdHJpbmciPT09dHlwZW9mIGE/YCR7YX0ke2J9YDpbLi4uYSwuLi5iXX0KZnVuY3Rpb24gY29uZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBiPT57bGV0IGM9ITEsZDthLmZvckVhY2goKFtlLGZdKT0+eyFjJiZlKGIpJiYoYz0hMCxkPWYoYikpfSk7cmV0dXJuIGR9fWNvbnN0IHtrZXlzOmtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzfT1PYmplY3Q7ZnVuY3Rpb24gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYz0hMSl7bGV0IGQ9MDtjb25zdCBlPUFycmF5KGIubGVuZ3RoKTtmb3IoO2Q8Yi5sZW5ndGg7KWVbZF09Yz9hKGJbZF0sZCk6YShiW2RdKSxkKys7cmV0dXJuIGV9CmZ1bmN0aW9uIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGc9Pm1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZyk7bGV0IGM9MDtjb25zdCBkPWtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLGU9ZC5sZW5ndGgsZj17fTtmb3IoO2M8ZTspe2NvbnN0IGc9ZFtjXTtmW2ddPWEoYltnXSxnLGIpO2MrK31yZXR1cm4gZn1jb25zdCBtYXBPYmpJbmRleGVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7CmZ1bmN0aW9uIG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9Pm1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoIWIpdGhyb3cgRXJyb3IoSU5DT1JSRUNUX0lURVJBQkxFX0lOUFVUKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP21hcEFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTptYXBPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBtYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmI+YT9iOmF9CmZ1bmN0aW9uIGNvbnZlcmdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9Pm1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsZS5sZW5ndGgpLDAsYik7cmV0dXJuIGN1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQ9PmQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGIpKX0pfQpmdW5jdGlvbiBjb3VudCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmNvdW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/Yi5maWx0ZXIoYz0+YShjKSkubGVuZ3RoOjB9ZnVuY3Rpb24gY291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmNvdW50QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9e307Yi5mb3JFYWNoKGQ9PntkPWEoZCk7Y1tkXT9jW2RdKys6Y1tkXT0xfSk7cmV0dXJuIGN9CmNvbnN0IGRlYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PmEtMTtmdW5jdGlvbiBpc0ZhbHN5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIHZvaWQgMD09PWF8fG51bGw9PT1hfHwhMD09PU51bWJlci5pc05hTihhKX1mdW5jdGlvbiBkZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5kZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzRmFsc3kkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKT9hOmJ9CmZ1bmN0aW9uIHR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtpZihudWxsPT09YSlyZXR1cm4iTnVsbCI7aWYodm9pZCAwPT09YSlyZXR1cm4iVW5kZWZpbmVkIjtpZihOdW1iZXIuaXNOYU4oYSkpcmV0dXJuIk5hTiI7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkuc2xpY2UoOCwtMSk7cmV0dXJuIkFzeW5jRnVuY3Rpb24iPT09YT8iUHJvbWlzZSI6YX0KZnVuY3Rpb24gX2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpKXRocm93IEVycm9yKGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAnaW5kZXhPZicgb2YgJHtifWApO3ZhciBjPXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtpZighWyJPYmplY3QiLCJBcnJheSIsIk5hTiIsIlJlZ0V4cCJdLmluY2x1ZGVzKGMpKXJldHVybiBiLmxhc3RJbmRleE9mKGEpOyh7bGVuZ3RoOmN9PWIpO2xldCBkPS0xO2Zvcig7LTE8LS1jJiYtMT09PWQ7KWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGJbY10sYSkmJihkPWMpO3JldHVybiBkfQpmdW5jdGlvbiBfaW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgQ2Fubm90IHJlYWQgcHJvcGVydHkgJ2luZGV4T2YnIG9mICR7Yn1gKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoIVsiT2JqZWN0IiwiQXJyYXkiLCJOYU4iLCJSZWdFeHAiXS5pbmNsdWRlcyhjKSlyZXR1cm4gYi5pbmRleE9mKGEpO2xldCBkPWM9LTE7Y29uc3Qge2xlbmd0aDplfT1iO2Zvcig7KytjPGUmJi0xPT09ZDspZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYltjXSxhKSYmKGQ9Yyk7cmV0dXJuIGR9CmZ1bmN0aW9uIF9hcnJheUZyb21JdGVyYXRvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2NvbnN0IGI9W107bGV0IGM7Zm9yKDshKGM9YS5uZXh0KCkpLmRvbmU7KWIucHVzaChjLnZhbHVlKTtyZXR1cm4gYn1mdW5jdGlvbiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoYS5zaXplIT09Yi5zaXplKXJldHVybiExO2E9X2FycmF5RnJvbUl0ZXJhdG9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS52YWx1ZXMoKSk7Y29uc3QgYz1fYXJyYXlGcm9tSXRlcmF0b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLnZhbHVlcygpKTtyZXR1cm4gMD09PWEuZmlsdGVyKGQ9Pi0xPT09X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkLGMpKS5sZW5ndGh9CmZ1bmN0aW9uIHBhcnNlRXJyb3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPWEuX19wcm90b19fLnRvU3RyaW5nKCk7cmV0dXJuWyJFcnJvciIsIlR5cGVFcnJvciJdLmluY2x1ZGVzKGIpP1tiLGEubWVzc2FnZV06W119ZnVuY3Rpb24gcGFyc2VEYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9EYXRlU3RyaW5nP1shMCxhLmdldFRpbWUoKV06WyExXX1mdW5jdGlvbiBwYXJzZVJlZ2V4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEuY29uc3RydWN0b3IhPT1SZWdFeHA/WyExXTpbITAsYS50b1N0cmluZygpXX0KZnVuY3Rpb24gZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoYyE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlyZXR1cm4hMTtpZigiRnVuY3Rpb24iPT09YylyZXR1cm4gdm9pZCAwPT09YS5uYW1lPyExOmEubmFtZT09PWIubmFtZTtpZihbIk5hTiIsIlVuZGVmaW5lZCIsIk51bGwiXS5pbmNsdWRlcyhjKSlyZXR1cm4hMDtpZigiTnVtYmVyIj09PWMpcmV0dXJuIE9iamVjdC5pcygtMCxhKSE9PU9iamVjdC5pcygtMCxiKT8hMTphLnRvU3RyaW5nKCk9PT1iLnRvU3RyaW5nKCk7aWYoWyJTdHJpbmciLCJCb29sZWFuIl0uaW5jbHVkZXMoYykpcmV0dXJuIGEudG9TdHJpbmcoKT09PQpiLnRvU3RyaW5nKCk7aWYoIkFycmF5Ij09PWMpe2M9QXJyYXkuZnJvbShhKTtjb25zdCBmPUFycmF5LmZyb20oYik7aWYoYy50b1N0cmluZygpIT09Zi50b1N0cmluZygpKXJldHVybiExO2xldCBnPSEwO2MuZm9yRWFjaCgoaCxrKT0+e2cmJihoPT09ZltrXXx8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxmW2tdKXx8KGc9ITEpKX0pO3JldHVybiBnfXZhciBkPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxlPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtpZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZURhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtlPXBhcnNlRGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpOwppZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7ZT1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZFswXSlyZXR1cm4gZVswXT9kWzBdPT09ZVswXSYmZFsxXT09PWVbMV06ITE7aWYoIlNldCI9PT1jKXJldHVybiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYik7aWYoIk9iamVjdCI9PT1jKXtjPU9iamVjdC5rZXlzKGEpO2lmKGMubGVuZ3RoIT09T2JqZWN0LmtleXMoYikubGVuZ3RoKXJldHVybiExO2xldCBmPSEwO2MuZm9yRWFjaChnPT57aWYoZil7Y29uc3QgaD1hW2ddO2c9YltnXTtoPT09Z3x8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxnKXx8KGY9ITEpfX0pOwpyZXR1cm4gZn1yZXR1cm4hMX1mdW5jdGlvbiBpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmluY2x1ZGVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLmluY2x1ZGVzKGEpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5IFwnaW5kZXhPZlwnIG9mICR7Yn1gKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpPy0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTohMX0KY2xhc3MgX1NldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpze2NvbnN0cnVjdG9yKCl7dGhpcy5zZXQ9bmV3IFNldDt0aGlzLml0ZW1zPXt9fWNoZWNrVW5pcXVlbmVzcyhhKXt2YXIgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJOdWxsIiwiVW5kZWZpbmVkIiwiTmFOIl0uaW5jbHVkZXMoYik/YiBpbiB0aGlzLml0ZW1zPyExOnRoaXMuaXRlbXNbYl09ITA6WyJPYmplY3QiLCJBcnJheSJdLmluY2x1ZGVzKGIpP2IgaW4gdGhpcy5pdGVtcz8tMT09PV9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSx0aGlzLml0ZW1zW2JdKT8odGhpcy5pdGVtc1tiXS5wdXNoKGEpLCEwKTohMToodGhpcy5pdGVtc1tiXT1bYV0sITApOihiPXRoaXMuc2V0LnNpemUsdGhpcy5zZXQuYWRkKGEpLHRoaXMuc2V0LnNpemUhPT1iKX19CmZ1bmN0aW9uIHVuaXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPW5ldyBfU2V0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMsYz1bXTthLmZvckVhY2goZD0+e2IuY2hlY2tVbmlxdWVuZXNzKGQpJiZjLnB1c2goZCl9KTtyZXR1cm4gY31mdW5jdGlvbiBkaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZGlmZmVyZW5jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6dW5pcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLmZpbHRlcihjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpKX0KZnVuY3Rpb24gZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+ZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZihudWxsPT09Ynx8dm9pZCAwPT09YilyZXR1cm57fTtjb25zdCBjPXt9O2Zvcihjb25zdCBkIGluIGIpY1tkXT1iW2RdO2RlbGV0ZSBjW2FdO3JldHVybiBjfWZ1bmN0aW9uIGRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS9ifQpmdW5jdGlvbiBkcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Yi5zbGljZSgwPGE/YTowKX1mdW5jdGlvbiBkcm9wTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRyb3BMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPGE/Yi5zbGljZSgwLC1hKTpiLnNsaWNlKCl9CmZ1bmN0aW9uIGRyb3BMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxnKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7Y29uc3QgYz1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKGAncHJlZGljYXRlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYX1gKTtpZighYyYmInN0cmluZyIhPT10eXBlb2YgYil0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYn1gKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPWIubGVuZ3RoO2Zvcig7MDxmOylmLS0sZHx8ITEhPT1hKGJbZl0pP2QmJmUucHVzaChiW2ZdKToKKGQ9ITAsZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lLnJldmVyc2UoKTplLnJldmVyc2UoKS5qb2luKCIiKX1mdW5jdGlvbiBkcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYCR7YX0gaXMgbm90IGEgbGlzdGApO2NvbnN0IGI9W107YS5yZWR1Y2UoKGMsZCk9PntlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGQpfHxiLnB1c2goZCk7cmV0dXJuIGR9LHZvaWQgMCk7cmV0dXJuIGJ9CmZ1bmN0aW9uIGRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgJHtifSBpcyBub3QgYSBsaXN0YCk7Y29uc3QgYz1bXTtiLnJlZHVjZSgoZCxlKT0+e2lmKHZvaWQgMD09PWQpcmV0dXJuIGMucHVzaChlKSxlO2EoZCxlKXx8Yy5wdXNoKGUpO3JldHVybiBlfSx2b2lkIDApO3JldHVybiBjfQpmdW5jdGlvbiBkcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWQ/ZS5wdXNoKGJbZl0pOmEoYltmXSl8fChkfHwoZD0hMCksZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIGVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6KC4uLmMpPT4hKCFhKC4uLmMpJiYhYiguLi5jKSl9CmZ1bmN0aW9uIGVuZHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKCJzdHJpbmciPT09dHlwZW9mIGIpcmV0dXJuIGIuZW5kc1dpdGgoYSk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSlyZXR1cm4hMTtjb25zdCBjPWIubGVuZ3RoLWEubGVuZ3RoO2xldCBkPSEwO3JldHVybiBhLmZpbHRlcigoZSxmKT0+e2lmKCFkKXJldHVybiExOyhlPWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGUsYltmK2NdKSl8fChkPSExKTtyZXR1cm4gZX0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoYilyZXR1cm4gYlthXX1mdW5jdGlvbiBlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKX1jb25zdCBlcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGV2b2x2ZUFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygoYyxkKT0+IkZ1bmN0aW9uIj09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9hW2RdKGMpOmMsYiwhMCl9CmZ1bmN0aW9uIGV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChjLGQpPT57aWYoIk9iamVjdCI9PT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYykpe2NvbnN0IGU9dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pO3JldHVybiJGdW5jdGlvbiI9PT1lP2FbZF0oYyk6Ik9iamVjdCI9PT1lP2V2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0sYyk6Y31yZXR1cm4iRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pP2FbZF0oYyk6Y30sYil9CmZ1bmN0aW9uIGV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7Y29uc3QgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSksZD10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZCE9PWMpdGhyb3cgRXJyb3IoIml0ZXJhYmxlVHlwZSAhPT0gcnVsZXNUeXBlIik7aWYoIVsiT2JqZWN0IiwiQXJyYXkiXS5pbmNsdWRlcyhjKSl0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBhbmQgJ3J1bGVzJyBhcmUgZnJvbSB3cm9uZyB0eXBlICR7Y31gKTtyZXR1cm4iT2JqZWN0Ij09PWQ/ZXZvbHZlT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTpldm9sdmVBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsCmIpfWZ1bmN0aW9uIEYkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe3JldHVybiExfWZ1bmN0aW9uIGZpbHRlck9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7Y29uc3QgYz17fTtmb3IoY29uc3QgZCBpbiBiKWEoYltkXSxkLGIpJiYoY1tkXT1iW2RdKTtyZXR1cm4gY31mdW5jdGlvbiBmaWx0ZXJBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjPSExKXtsZXQgZD0wO2NvbnN0IGU9Yi5sZW5ndGgsZj1bXTtmb3IoO2Q8ZTspKGM/YShiW2RdLGQpOmEoYltkXSkpJiZmLnB1c2goYltkXSksZCsrO3JldHVybiBmfQpmdW5jdGlvbiBmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5maWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFiKXRocm93IEVycm9yKCJJbmNvcnJlY3QgaXRlcmFibGUgaW5wdXQiKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2ZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLCExKTpmaWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBmaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9MDtjb25zdCBkPWIubGVuZ3RoO2Zvcig7YzxkOyl7Y29uc3QgZT1iW2NdO2lmKGEoZSkpcmV0dXJuIGU7YysrfX1mdW5jdGlvbiBmaW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5maW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2NvbnN0IGM9Yi5sZW5ndGg7bGV0IGQ9LTE7Zm9yKDsrK2Q8YzspaWYoYShiW2RdKSlyZXR1cm4gZDtyZXR1cm4tMX0KZnVuY3Rpb24gZmluZExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5maW5kTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9Yi5sZW5ndGg7Zm9yKDswPD0tLWM7KWlmKGEoYltjXSkpcmV0dXJuIGJbY119ZnVuY3Rpb24gZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmZpbmRMYXN0SW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2xldCBjPWIubGVuZ3RoO2Zvcig7MDw9LS1jOylpZihhKGJbY10pKXJldHVybiBjO3JldHVybi0xfQpmdW5jdGlvbiBmbGF0dGVuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtiPXZvaWQgMD09PWI/W106Yjtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKylpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtjXSk/ZmxhdHRlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbY10sYik6Yi5wdXNoKGFbY10pO3JldHVybiBifQpmdW5jdGlvbiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PntpZigxPT09Yi5sZW5ndGgpcmV0dXJuIGM9PmEoYyxiWzBdKTtpZigyPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdKTtpZigzPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdLGJbMl0pO2lmKDQ9PT1iLmxlbmd0aClyZXR1cm4gYShiWzFdLGJbMF0sYlsyXSxiWzNdKTt0aHJvdyBFcnJvcigiUi5mbGlwIGRvZXNuJ3Qgd29yayB3aXRoIGFyaXR5ID4gNCIpO319ZnVuY3Rpb24gZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0KZnVuY3Rpb24gZm9yRWFjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKHZvaWQgMCE9PWIpe2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDspYShiW2NdKSxjKys7ZWxzZXtjPTA7ZD1rZXlzJDEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjb25zdCBlPWQubGVuZ3RoO2Zvcig7YzxlOyl7Y29uc3QgZj1kW2NdO2EoYltmXSxmLGIpO2MrK319cmV0dXJuIGJ9fQpmdW5jdGlvbiBmcm9tUGFpcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPXt9O2EuZm9yRWFjaCgoW2MsZF0pPT5iW2NdPWQpO3JldHVybiBifWZ1bmN0aW9uIGdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5ncm91cEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF0sZj1hKGUpO2NbZl18fChjW2ZdPVtdKTtjW2ZdLnB1c2goZSl9cmV0dXJuIGN9CmZ1bmN0aW9uIGdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJsaXN0LnJlZHVjZSBpcyBub3QgYSBmdW5jdGlvbiIpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoMT09PWIubGVuZ3RoKXJldHVybltjXTtjb25zdCBkPVtdO2xldCBlPVtdO2MucmVkdWNlKChmLGcsaCk9PntpZigwPT09aClyZXR1cm4gZztjb25zdCBrPWEoZixnKSxsPTA9PT1lLmxlbmd0aDtoPWg9PT1iLmxlbmd0aC0xO2lmKGspcmV0dXJuIGwmJmUucHVzaChmKSxlLnB1c2goZyksaCYmZC5wdXNoKGUpLGc7aWYobClyZXR1cm4gZC5wdXNoKFtmXSksaCYmZC5wdXNoKFtnXSksZztkLnB1c2goZSk7aCYmZC5wdXNoKFtnXSk7ZT1bXTtyZXR1cm4gZ30sCnZvaWQgMCk7cmV0dXJuIGR9ZnVuY3Rpb24gaGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+aGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiP2IuaGFzT3duUHJvcGVydHkoYSk6ITF9ZnVuY3Rpb24gY3JlYXRlUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYj0iLiIpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdChiKTphfQpmdW5jdGlvbiBwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1iLGQ9MCxlPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtkPGUubGVuZ3RoOyl7aWYobnVsbD09PWN8fHZvaWQgMD09PWN8fG51bGw9PT1jW2VbZF1dKXJldHVybjtjPWNbZVtkXV07ZCsrfXJldHVybiBjfX0KZnVuY3Rpb24gaGFzUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pmhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnZvaWQgMCE9PXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfWZ1bmN0aW9uIGhlYWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhP2FbMF18fCIiOmFbMF19ZnVuY3Rpb24gX29iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYT09PWI/MCE9PWF8fDEvYT09PTEvYjphIT09YSYmYiE9PWJ9Y29uc3Qgb2JqZWN0SXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1PYmplY3QuaXN8fF9vYmplY3RJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBpZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOm9iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBpZGVudGl0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBhfWZ1bmN0aW9uIGlmRWxzZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiguLi5kKT0+ITA9PT0oImJvb2xlYW4iPT09dHlwZW9mIGE/YTphKC4uLmQpKT9iKC4uLmQpOmMoLi4uZCl9CmNvbnN0IGlmRWxzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaWZFbHNlRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyksaW5jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+YSsxO2Z1bmN0aW9uIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1twYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKV09ZX1yZXR1cm4gY30KZnVuY3Rpb24gaW5kZXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1thKGUpXT1lfXJldHVybiBjfQpmdW5jdGlvbiBpbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOl9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBiYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7bGV0IGQ9LTEse2xlbmd0aDplfT1hO2M9Yz5lP2U6YzswPmMmJihjKz1lKTtlPWI+Yz8wOmMtYj4+PjA7Yj4+Pj0wO2ZvcihjPUFycmF5KGUpOysrZDxlOyljW2RdPWFbZCtiXTtyZXR1cm4gY30KZnVuY3Rpb24gaW5pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zbGljZSgwLC0xKTphLmxlbmd0aD9iYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLDAsLTEpOltdfWZ1bmN0aW9uIGludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+aW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGEpLGIpfQpmdW5jdGlvbiBpbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGY9PmludGVyc3BlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtsZXQgYz0tMTtjb25zdCBkPWIubGVuZ3RoLGU9W107Zm9yKDsrK2M8ZDspYz09PWQtMT9lLnB1c2goYltjXSk6ZS5wdXNoKGJbY10sYSk7cmV0dXJuIGV9ZnVuY3Rpb24gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bnVsbCE9YiYmYi5jb25zdHJ1Y3Rvcj09PWF8fGIgaW5zdGFuY2VvZiBhfQpmdW5jdGlvbiBpc0VtcHR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJVbmRlZmluZWQiLCJOYU4iLCJOdW1iZXIiLCJOdWxsIl0uaW5jbHVkZXMoYik/ITE6YT8iT2JqZWN0Ij09PWI/MD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aDoiQXJyYXkiPT09Yj8wPT09YS5sZW5ndGg6ITE6ITB9ZnVuY3Rpb24gaXNOaWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gdm9pZCAwPT09YXx8bnVsbD09PWF9CmZ1bmN0aW9uIGpvaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5qb2luJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiLmpvaW4oYSl9ZnVuY3Rpb24ganV4dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+YS5tYXAoYz0+YyguLi5iKSl9ZnVuY3Rpb24ga2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBPYmplY3Qua2V5cyhhKX1mdW5jdGlvbiBsYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hW2EubGVuZ3RoLTFdfHwiIjphW2EubGVuZ3RoLTFdfQpmdW5jdGlvbiBsYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pl9sYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBsZW5ndGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfHwic3RyaW5nIj09PXR5cGVvZiBhP2EubGVuZ3RoOk5hTn0KZnVuY3Rpb24gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gYyhhKGQpKS5tYXAoZT0+YihlLGQpKX19fWZ1bmN0aW9uIG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz0wPmE/Yi5sZW5ndGgrYTphO3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpP2IuY2hhckF0KGMpOmJbY119CmZ1bmN0aW9uIHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2M9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7cmV0dXJuLTE9PT1hP2MuZmlsbChiLGEpOmMuZmlsbChiLGEsYSsxKX1jb25zdCB1cGRhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBsZW5zSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLHVwZGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBsZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBsZW5zJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLGFzc29jUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX0KZnVuY3Rpb24gbGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBtYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm1hdGNoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPWIubWF0Y2goYSk7cmV0dXJuIG51bGw9PT1jP1tdOmN9CmZ1bmN0aW9uIG1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXRoTW9kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTohaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl8fCFpc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKXx8MT5iP05hTjooYSViK2IpJWJ9ZnVuY3Rpb24gbWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT5hKGIpP2M6Yn1jb25zdCBtYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gc3VtJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEucmVkdWNlKChiLGMpPT5iK2MsMCl9ZnVuY3Rpb24gbWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBzdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKS9hLmxlbmd0aH1mdW5jdGlvbiBtZWRpYW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXt2YXIgYj1hLmxlbmd0aDtpZigwPT09YilyZXR1cm4gTmFOO2NvbnN0IGM9Mi1iJTI7Yj0oYi1jKS8yO3JldHVybiBtZWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwwKS5zb3J0KChkLGUpPT5kPT09ZT8wOmQ8ZT8tMToxKS5zbGljZShiLGIrYykpfQpmdW5jdGlvbiBtZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6T2JqZWN0LmFzc2lnbih7fSxhfHx7fSxifHx7fSl9ZnVuY3Rpb24gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtsZXQgYj17fTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT57Yj1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKX0sYSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIG1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGQ9PnsiT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2RdKT8iT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9jW2RdPW1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtkXSxiW2RdKTpjW2RdPWJbZF06Y1tkXT1iW2RdfSk7cmV0dXJuIGN9CmZ1bmN0aW9uIG1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsYSl9ZnVuY3Rpb24gbWVyZ2VXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Y29uc3QgZD17fTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGU9PntkW2VdPXZvaWQgMD09PWNbZV0/YltlXTphKGJbZV0sY1tlXSl9KTtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGU9Pnt2b2lkIDA9PT1kW2VdJiYoZFtlXT12b2lkIDA9PT1iW2VdP2NbZV06YShiW2VdLGNbZV0pKX0pO3JldHVybiBkfQpjb25zdCBtZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1lcmdlV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIG1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YjxhP2I6YX1mdW5jdGlvbiBtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGMpPGEoYik/YzpifWNvbnN0IG1pbkJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBvd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXt2YXIgYz1PYmplY3Qua2V5cyhhKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGEpO2ImJihkPWQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZSkuZW51bWVyYWJsZX0pKTtjLnB1c2guYXBwbHkoYyxkKX1yZXR1cm4gY30KZnVuY3Rpb24gX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtmb3IodmFyIGI9MTtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKXt2YXIgYz1udWxsIT1hcmd1bWVudHNbYl0/YXJndW1lbnRzW2JdOnt9O2IlMj9vd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoT2JqZWN0KGMpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe19kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCxjW2RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGEsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYykpOm93bktleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhPYmplY3QoYykpLmZvckVhY2goZnVuY3Rpb24oZCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsCmQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjLGQpKX0pfXJldHVybiBhfWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtiIGluIGE/T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7dmFsdWU6YyxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmFbYl09YztyZXR1cm4gYX1mdW5jdGlvbiBpc0l0ZXJhYmxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSl8fCJPYmplY3QiPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfQpmdW5jdGlvbiBtb2RpZnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXNJdGVyYWJsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpJiZ2b2lkIDAhPT1jW2FdP2lzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT91cGRhdGVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYihjW2FdKSxjKTpfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thXTpiKGNbYV0pfSk6Y31jb25zdCBtb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZGlmeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7YT1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoMT09PWEubGVuZ3RoKXJldHVybiBfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thWzBdXTpiKGNbYVswXV0pfSk7aWYodm9pZCAwPT09cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYykpcmV0dXJuIGM7Yj1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwxKSxiLGNbYVswXV0pO3JldHVybiBiPT09Y1thWzBdXT9jOmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVswXSwKYixjKX1jb25zdCBtb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gbW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJWJ9CmZ1bmN0aW9uIG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZigwPmF8fDA+Yil0aHJvdyBFcnJvcigiUmFtYmRhLm1vdmUgZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSBpbmRleGVzIik7aWYoYT5jLmxlbmd0aC0xfHxiPmMubGVuZ3RoLTEpcmV0dXJuIGM7Y29uc3QgZD1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKTtkW2FdPWNbYl07ZFtiXT1jW2FdO3JldHVybiBkfWNvbnN0IG1vdmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gbXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tdWx0aXBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YSpifWZ1bmN0aW9uIG5lZ2F0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybi1hfWZ1bmN0aW9uIG5vbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKylpZihhKGJbY10pKXJldHVybiExO3JldHVybiEwfQpmdW5jdGlvbiBub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4hYX1mdW5jdGlvbiBvYmpPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9iak9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTp7W2FdOmJ9fWZ1bmN0aW9uIG9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuW2FdfQpmdW5jdGlvbiBvbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+b21pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe3ZhciBjPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLCIsIiksZD17fTtmb3IoY29uc3QgZSBpbiBiKWMuaW5jbHVkZXMoZSl8fChkW2VdPWJbZV0pO3JldHVybiBkfX0KZnVuY3Rpb24gb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxkKXtyZXR1cm4gMz09PWFyZ3VtZW50cy5sZW5ndGg/ZT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxlKToyPT09YXJndW1lbnRzLmxlbmd0aD8oZSxmKT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsZSxmKTphKGIoYyksYihkKSl9ZnVuY3Rpb24gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtsZXQgYztyZXR1cm4gZnVuY3Rpb24oKXthJiYoYz1hLmFwcGx5KGJ8fHRoaXMsYXJndW1lbnRzKSxhPW51bGwpO3JldHVybiBjfX0KZnVuY3Rpb24gb25jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2NvbnN0IGM9b25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtyZXR1cm4gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKX1yZXR1cm4gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphfHxifWNvbnN0IElkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+KHt4OmEsbWFwOmI9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihhKSl9KTsKZnVuY3Rpb24gb3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGQ9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihkKSkpKGMpLnh9Y29uc3Qgb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMob3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXJ0aWFsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPWEubGVuZ3RoO3JldHVybiguLi5kKT0+Yi5sZW5ndGgrZC5sZW5ndGg+PWM/YSguLi5iLC4uLmQpOnBhcnRpYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLC4uLlsuLi5iLC4uLmRdKX1mdW5jdGlvbiBwYXJ0aWFsT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYz0+YShtZXJnZURlZXBSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwYXJ0aXRpb25PYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2NvbnN0IGM9e30sZD17fTtPYmplY3QuZW50cmllcyhiKS5mb3JFYWNoKChbZSxmXSk9PnthKGYsZSk/Y1tlXT1mOmRbZV09Zn0pO3JldHVybltjLGRdfWZ1bmN0aW9uIHBhcnRpdGlvbkFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGM9ITEpe2NvbnN0IGQ9W10sZT1bXTtsZXQgZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOykoYz9hKGJbZl0sZik6YShiW2ZdKSk/ZC5wdXNoKGJbZl0pOmUucHVzaChiW2ZdKTtyZXR1cm5bZCxlXX0KZnVuY3Rpb24gcGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpOnBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil9CmZ1bmN0aW9uIHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKSxiKX1jb25zdCBwYXRoRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9Y29uc3QgcGF0aE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcGF0aHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS5tYXAoYz0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwaWNrJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGljayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWNbZV1pbiBiJiYoZFtjW2VdXT1iW2NbZV1dKSxlKys7cmV0dXJuIGR9fQpmdW5jdGlvbiBwaWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGlja0FsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWRbY1tlXV09Y1tlXWluIGI/YltjW2VdXTp2b2lkIDAsZSsrO3JldHVybiBkfX0KZnVuY3Rpb24gcGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5wbHVjayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz1bXTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkPT57dm9pZCAwIT09ZFthXSYmYy5wdXNoKGRbYV0pfSxiKTtyZXR1cm4gY31mdW5jdGlvbiBwcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cHJlcGVuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6InN0cmluZyI9PT10eXBlb2YgYj9bYV0uY29uY2F0KGIuc3BsaXQoIiIpKTpbYV0uY29uY2F0KGIpfQpjb25zdCBwcm9kdWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcywxKTtmdW5jdGlvbiBwcm9wRXFGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYz9lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKTohMX1jb25zdCBwcm9wRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwcm9wSXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGNbYl0pfWNvbnN0IHByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcElzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gcHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGM/ZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjW2JdKTphfWNvbnN0IHByb3BPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIHByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoInByb3BzVG9QaWNrIGlzIG5vdCBhIGxpc3QiKTtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT5iW2NdLGEpfWZ1bmN0aW9uIHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9CmNvbnN0IHByb3BTYXRpc2ZpZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYoTnVtYmVyLmlzTmFOKE51bWJlcihhKSl8fE51bWJlci5pc05hTihOdW1iZXIoYikpKXRocm93IG5ldyBUeXBlRXJyb3IoIkJvdGggYXJndW1lbnRzIHRvIHJhbmdlIG11c3QgYmUgbnVtYmVycyIpO2lmKGI8YSlyZXR1cm5bXTtjb25zdCBjPWItYSxkPUFycmF5KGMpO2ZvcihsZXQgZT0wO2U8YztlKyspZFtlXT1hK2U7cmV0dXJuIGR9CmZ1bmN0aW9uIHJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+IWEoYyksYil9ZnVuY3Rpb24gcmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpBcnJheShiKS5maWxsKGEpfWZ1bmN0aW9uIHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5yZXBsYWNlKGEsYil9CmNvbnN0IHJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTtmdW5jdGlvbiByZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6YS5zbGljZSgpLnJldmVyc2UoKX1mdW5jdGlvbiBzZXRGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYWx3YXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYiksYyl9CmNvbnN0IHNldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoc2V0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gc2xpY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5zbGljZShhLGIpfWNvbnN0IHNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhzbGljZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBzb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c29ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikuc29ydChhKX1mdW5jdGlvbiBzb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLnNvcnQoKGMsZCk9PntjPWEoYyk7ZD1hKGQpO3JldHVybiBjPT09ZD8wOmM8ZD8tMToxfSl9CmZ1bmN0aW9uIHNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c3BsaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmIuc3BsaXQoYSl9ZnVuY3Rpb24gbWF5YmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Yj1hJiYiRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2IoKTpiO2M9YXx8IkZ1bmN0aW9uIiE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT9jOmMoKTtyZXR1cm4gYT9iOmN9CmZ1bmN0aW9uIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT50YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPmE/Yi5zbGljZSgpOiJzdHJpbmciPT09dHlwZW9mIGI/Yi5zbGljZSgwLGEpOmJhc2VTbGljZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsMCxhKX0KZnVuY3Rpb24gc3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PnNwbGl0QXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdzbGljZScgb2YgJHtifWApO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikmJiJzdHJpbmciIT09dHlwZW9mIGIpcmV0dXJuW1tdLFtdXTtjb25zdCBjPW1heWJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoMD5hLDA+Yi5sZW5ndGgrYT8wOmIubGVuZ3RoK2EsYSk7cmV0dXJuW3Rha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLApiKV19ZnVuY3Rpb24gc3BsaXRFdmVyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKDE+YSl0aHJvdyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gc3BsaXRFdmVyeSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2NvbnN0IGM9W107bGV0IGQ9MDtmb3IoO2Q8Yi5sZW5ndGg7KWMucHVzaChiLnNsaWNlKGQsZCs9YSkpO3JldHVybiBjfQpmdW5jdGlvbiBzcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5zcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdsZW5ndGgnIG9mICR7Yn1gKTtjb25zdCBjPVtdLGQ9W107bGV0IGU9ITEsZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOyllP2QucHVzaChiW2ZdKTphKGJbZl0pPyhkLnB1c2goYltmXSksZT0hMCk6Yy5wdXNoKGJbZl0pO3JldHVybltjLGRdfQpmdW5jdGlvbiBzdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+c3RhcnRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoInN0cmluZyI9PT10eXBlb2YgYilyZXR1cm4gYi5zdGFydHNXaXRoKGEpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpcmV0dXJuITE7bGV0IGM9ITA7cmV0dXJuIGEuZmlsdGVyKChkLGUpPT57aWYoIWMpcmV0dXJuITE7KGQ9ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxiW2VdKSl8fChjPSExKTtyZXR1cm4gZH0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBzdWJ0cmFjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphLWJ9CmZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGEpLGZpbHRlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9PiFpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYSksYikpfQpmdW5jdGlvbiBUJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKXtyZXR1cm4hMH1mdW5jdGlvbiB0YWlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygxLGEpfQpmdW5jdGlvbiB0YWtlTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPWIubGVuZ3RoO2lmKDA+YSlyZXR1cm4gYi5zbGljZSgpO2xldCBkPWE+Yz9jOmE7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYj9iLnNsaWNlKGMtZCk6YmFzZVNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjLWQsYyl9CmZ1bmN0aW9uIHRha2VMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBmPT50YWtlTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7bGV0IGM9ITE7Y29uc3QgZD1bXTtsZXQgZT1iLmxlbmd0aDtmb3IoOyFjfHwwPT09ZTspZS0tLCExPT09YShiW2VdKT9jPSEwOmN8fGQucHVzaChiW2VdKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2QucmV2ZXJzZSgpOmQucmV2ZXJzZSgpLmpvaW4oIiIpfQpmdW5jdGlvbiB0YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT50YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMDtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWEoYltmXSk/ZCYmZS5wdXNoKGJbZl0pOmQmJihkPSExKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIHRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7YShiKTtyZXR1cm4gYn1mdW5jdGlvbiB0ZXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoInN0cmluZyI9PT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGBcdTIwMTh0ZXN0XHUyMDE5IHJlcXVpcmVzIGEgdmFsdWUgb2YgdHlwZSBSZWdFeHAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50OyByZWNlaXZlZCAiJHthfSJgKTtyZXR1cm4tMSE9PWIuc2VhcmNoKGEpfQpmdW5jdGlvbiB0aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRpbWVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZighaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYil8fDA+Yil0aHJvdyBuZXcgUmFuZ2VFcnJvcigibiBtdXN0IGJlIGFuIGludGVnZXIiKTtyZXR1cm4gbWFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxyYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKDAsYikpfWZ1bmN0aW9uIHRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpfQpmdW5jdGlvbiB0b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGEpfWZ1bmN0aW9uIHRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9TdHJpbmcoKX1mdW5jdGlvbiB0b1VwcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9VcHBlckNhc2UoKX1mdW5jdGlvbiB0cmFuc3Bvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS5yZWR1Y2UoKGIsYyk9PntjLmZvckVhY2goKGQsZSk9PmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2VdKT9iW2VdLnB1c2goZCk6Yi5wdXNoKFtkXSkpO3JldHVybiBifSxbXSl9CmZ1bmN0aW9uIHRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50cmltKCl9Y29uc3QgaXNGdW5jdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PlsiUHJvbWlzZSIsIkZ1bmN0aW9uIl0uaW5jbHVkZXModHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKTsKZnVuY3Rpb24gdHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKCFpc0Z1bmN0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYFIudHJ5Q2F0Y2ggfCBmbiAnJHthfSdgKTtjb25zdCBjPWlzRnVuY3Rpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtyZXR1cm4oLi4uZCk9Pnt0cnl7cmV0dXJuIGEoLi4uZCl9Y2F0Y2goZSl7cmV0dXJuIGM/YihlLC4uLmQpOmJ9fX1mdW5jdGlvbiB1bmFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGZ1bmN0aW9uKC4uLmIpe3JldHVybiBhLmNhbGwodGhpcyxiKX19CmZ1bmN0aW9uIHVuaW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7Yi5mb3JFYWNoKGQ9PntpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYSl8fGMucHVzaChkKX0pO3JldHVybiBjfQpmdW5jdGlvbiB1bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT51bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9bmV3IFNldDtyZXR1cm4gYi5maWx0ZXIoZD0+e2lmKGMuaGFzKGEoZCkpKXJldHVybiExO2MuYWRkKGEoZCkpO3JldHVybiEwfSl9ZnVuY3Rpb24gaW5jbHVkZXNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2xldCBkPSExLGU9LTE7Zm9yKDsrK2U8Yy5sZW5ndGgmJiFkOylhKGIsY1tlXSkmJihkPSEwKTtyZXR1cm4gZH0KZnVuY3Rpb24gdW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT51bmlxV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9LTE7Y29uc3QgZD1bXTtmb3IoOysrYzxiLmxlbmd0aDspe2NvbnN0IGU9YltjXTtpbmNsdWRlc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUsZCl8fGQucHVzaChlKX1yZXR1cm4gZH1mdW5jdGlvbiB1bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmM9PmEoYyk/YzpiKGMpfQpmdW5jdGlvbiB1bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2FdKT9tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9Pl9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyh7fSxiKSx7fSx7W2FdOmN9KSxiW2FdKTpbYl19CmZ1bmN0aW9uIHZhbHVlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJPYmplY3QiIT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpP1tdOk9iamVjdC52YWx1ZXMoYSl9Y29uc3QgQ29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT4oe3g6YSxtYXA6Yj0+Q29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0pO2Z1bmN0aW9uIHZpZXckJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT52aWV3JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphKENvbnN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpKGIpLnh9CmZ1bmN0aW9uIHdoZW5GbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT9iKGMpOmN9Y29uc3Qgd2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMod2hlbkZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIHdoZXJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZih2b2lkIDA9PT1iKXJldHVybiBkPT53aGVyZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9ITA7Zm9yKGNvbnN0IGQgaW4gYSl7aWYoIWMpY29udGludWU7Y29uc3QgZT1hW2RdKGJbZF0pO2MmJiExPT09ZSYmKGM9ITEpfXJldHVybiBjfQpmdW5jdGlvbiB3aGVyZUFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYodm9pZCAwPT09YilyZXR1cm4gYz0+d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2Zvcihjb25zdCBjIGluIGEpaWYoYVtjXShiW2NdKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gd2hlcmVFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PndoZXJlRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9PmVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYltlXSksYSk7cmV0dXJuIE9iamVjdC5rZXlzKGMpLmxlbmd0aD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aH0KZnVuY3Rpb24gd2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/Yz0+d2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGMsZCk9Pi0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxhKT9jOmMuY29uY2F0KGQpLFtdLGIpfWZ1bmN0aW9uIHhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ISFhJiYhYnx8ISFiJiYhYX0KZnVuY3Rpb24gemlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPVtdLGQ9TWF0aC5taW4oYS5sZW5ndGgsYi5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8ZDtlKyspY1tlXT1bYVtlXSxiW2VdXTtyZXR1cm4gY31mdW5jdGlvbiB6aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT56aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aCxhKS5yZWR1Y2UoKGMsZCxlKT0+e2NbZF09YltlXTtyZXR1cm4gY30se30pfQpmdW5jdGlvbiB6aXBXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aD5jLmxlbmd0aD9jLmxlbmd0aDpiLmxlbmd0aCxiKS5tYXAoKGQsZSk9PmEoZCxjW2VdKSl9Y29uc3QgemlwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoemlwV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9e307bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLkY9RiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuVD1UJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLl9fZmluZEhpZ2hlc3RBcml0eT1fX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuX2FyaXR5PV9hcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5faW5kZXhPZj1faW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fbGFzdEluZGV4T2Y9X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fcGlwZT1fcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hZGQ9YWRkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFkanVzdD1hZGp1c3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYWxsPWFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbGxQYXNzPWFsbFBhc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFsd2F5cz1hbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYW5kPWFuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbnk9YW55JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFueVBhc3M9YW55UGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBlbmQ9YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseT1hcHBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseVNwZWM9YXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jPWFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jUGF0aD1hc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYmluZD1iaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ib3RoPWJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2hhaW49Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xhbXA9Y2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xvbmU9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29tcGxlbWVudD1jb21wbGVtZW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb21wb3NlPWNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29uY2F0PWNvbmNhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb25kPWNvbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29udmVyZ2U9Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY291bnQ9Y291bnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmNvdW50Qnk9Y291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeT1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeU49Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRlYz1kZWMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGVmYXVsdFRvPWRlZmF1bHRUbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGlmZmVyZW5jZT1kaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRpc3NvYz1kaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGl2aWRlPWRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wPWRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZHJvcExhc3Q9ZHJvcExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BMYXN0V2hpbGU9ZHJvcExhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0cz1kcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0c1dpdGg9ZHJvcFJlcGVhdHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BXaGlsZT1kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVpdGhlcj1laXRoZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZW5kc1dpdGg9ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXFQcm9wcz1lcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVxdWFscz1lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlPWV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlQXJyYXk9ZXZvbHZlQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlT2JqZWN0PWV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maWx0ZXI9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlckFycmF5PWZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlck9iamVjdD1maWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmQ9ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maW5kSW5kZXg9ZmluZEluZGV4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0PWZpbmRMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0SW5kZXg9ZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mbGF0dGVuPWZsYXR0ZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZsaXA9ZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mb3JFYWNoPWZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZnJvbVBhaXJzPWZyb21QYWlycyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ncm91cEJ5PWdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZ3JvdXBXaXRoPWdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGFzPWhhcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5oYXNQYXRoPWhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGVhZD1oZWFkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlkZW50aWNhbD1pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaWRlbnRpdHk9aWRlbnRpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlmRWxzZT1pZkVsc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5jPWluYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmNsdWRlcz1pbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmRleEJ5PWluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5kZXhPZj1pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbml0PWluaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW50ZXJzZWN0aW9uPWludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbnRlcnNwZXJzZT1pbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pcz1pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pc0VtcHR5PWlzRW1wdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlzTmlsPWlzTmlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmpvaW49am9pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5qdXh0PWp1eHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMua2V5cz1rZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmxhc3Q9bGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGFzdEluZGV4T2Y9bGFzdEluZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuZ3RoPWxlbmd0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zPWxlbnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc0luZGV4PWxlbnNJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zUGF0aD1sZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc1Byb3A9bGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWFwPW1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBBcnJheT1tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmpJbmRleGVkPW1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmplY3Q9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRjaD1tYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRoTW9kPW1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWF4PW1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeT1tYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeUZuPW1heEJ5Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lYW49bWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tZWRpYW49bWVkaWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlPW1lcmdlUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VBbGw9bWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VEZWVwUmlnaHQ9bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlTGVmdD1tZXJnZUxlZnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VSaWdodD1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlV2l0aD1tZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluPW1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5taW5CeT1taW5CeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluQnlGbj1taW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeT1tb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kaWZ5UGF0aD1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeVBhdGhGbj1tb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kdWxvPW1vZHVsbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW92ZT1tb3ZlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm11bHRpcGx5PW11bHRpcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5lZ2F0ZT1uZWdhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubm9uZT1ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5vdD1ub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm50aD1udGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2JqT2Y9b2JqT2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2Y9b2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub21pdD1vbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm9uPW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5vbmNlPW9uY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3I9b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3Zlcj1vdmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpYWw9cGFydGlhbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXJ0aWFsT2JqZWN0PXBhcnRpYWxPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpdGlvbj1wYXJ0aXRpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uQXJyYXk9cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uT2JqZWN0PXBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRoPXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aEVxPXBhdGhFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aE9yPXBhdGhPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRocz1wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5waWNrPXBpY2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGlja0FsbD1waWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBpcGU9cGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGx1Y2s9cGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJlcGVuZD1wcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb2R1Y3Q9cHJvZHVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wPXByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcEVxPXByb3BFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcElzPXByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wT3I9cHJvcE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb3BTYXRpc2ZpZXM9cHJvcFNhdGlzZmllcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wcz1wcm9wcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yYW5nZT1yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVkdWNlPXJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VGbj1yZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VTdG9wcGVyPXJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVqZWN0PXJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBlYXQ9cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBsYWNlPXJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmV2ZXJzZT1yZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNldD1zZXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc2xpY2U9c2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc29ydD1zb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zb3J0Qnk9c29ydEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0PXNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0QXQ9c3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zcGxpdEV2ZXJ5PXNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3BsaXRXaGVuPXNwbGl0V2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3RhcnRzV2l0aD1zdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1YnRyYWN0PXN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1bT1zdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3ltbWV0cmljRGlmZmVyZW5jZT1zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhaWw9dGFpbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudGFrZT10YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0PXRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0V2hpbGU9dGFrZUxhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50YWtlV2hpbGU9dGFrZVdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhcD10YXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRlc3Q9dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50aW1lcz10aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b0xvd2VyPXRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudG9QYWlycz10b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRvU3RyaW5nPXRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b1VwcGVyPXRvVXBwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJhbnNwb3NlPXRyYW5zcG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50cmltPXRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJ5Q2F0Y2g9dHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHlwZT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51bmFwcGx5PXVuYXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pb249dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcT11bmlxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVuaXFCeT11bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcVdpdGg9dW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVubGVzcz11bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW53aW5kPXVud2luZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51cGRhdGU9dXBkYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVwZGF0ZUZuPXVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZhbHVlcz12YWx1ZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZpZXc9dmlldyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aGVuPXdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmU9d2hlcmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVBbnk9d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVFcT13aGVyZUVxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aXRob3V0PXdpdGhvdXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMueG9yPXhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy56aXA9emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnppcE9iaj16aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuemlwV2l0aD16aXBXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Y29uc3QgY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT57YS5leHBvcnRzLmNzb3VuZFNldE1pZGlDYWxsYmFja3MoYil9LGNzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMpPT57Y29uc3Qge2J1ZmZlcjpkfT1hLndhc2kubWVtb3J5LGU9YS5leHBvcnRzLmNzb3VuZEdldE1JRElEZXZMaXN0KGIsdm9pZCAwLGM/MTowKTtpZigwPT09ZSlyZXR1cm5bXTtjb25zdCBmPXNpemVvZlN0cnVjdCQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXMoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzKSxnPWEuZXhwb3J0cy5hbGxvY0NzTWlkaURldmljZVN0cnVjdChlKTthLmV4cG9ydHMuY3NvdW5kR2V0TUlESURldkxpc3QoYixnLGM/MTowKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KGQsZyxmKmUpO2I9cmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygwLAplKS5tYXAoaz0+c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGguc3ViYXJyYXkoaypmLGYpKSk7YS5leHBvcnRzLmZyZWVDc01pZGlEZXZpY2VTdHJ1Y3QoZyk7cmV0dXJuIGJ9O2Nzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLnRvU3RyaW5nPSgpPT4iZ2V0TUlESURldkxpc3QgPSBhc3luYyAoaXNPdXRwdXQpID0+IE9iamVjdDsiOwpjb25zdCBjc291bmRHZXRSdE1pZGlOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldFJ0TWlkaU5hbWUoYik7Yz1uZXcgVWludDhBcnJheShjLGIsMTI4KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS50b1N0cmluZz0oKT0+ImdldFJ0TWlkaU5hbWUgPSBhc3luYyAoKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldE1pZGlPdXRGaWxlTmFtZShiKTtjPW5ldyBVaW50OEFycmF5KGMsYiwxMjgpO2ImJjA8Yi5sZW5ndGgmJmZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7cmV0dXJuIHRyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGMpKXx8IiJ9LF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT5hLmV4cG9ydHMuaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQoYiksY3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMsZCxlKT0+e2EuZXhwb3J0cy5wdXNoTWlkaU1lc3NhZ2UoYiwKYyxkLGUpfTtjc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkudG9TdHJpbmc9KCk9PiJtaWRpTWVzc2FnZSA9IGFzeW5jIChzdGF0dXMsIGRhdGExLCBkYXRhMikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk9e307bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5faXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQ9X2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpO21vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkuY3NvdW5kR2V0TUlESURldkxpc3Q9Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRHZXRNaWRpT3V0RmlsZU5hbWU9Y3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpOwptb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZEdldFJ0TWlkaU5hbWU9Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaTttb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZFB1c2hNaWRpTWVzc2FnZT1jc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRTZXRNaWRpQ2FsbGJhY2tzPWNzb3VuZFNldE1pZGlDYWxsYmFja3MkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7Y29uc3QgY3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJpbnB1dE1lc3NhZ2UgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlQXN5bmMoYixjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBifTtjc291bmRJbnB1dE1lc3NhZ2VBc3luYyQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLnRvU3RyaW5nPSgpPT4iaW5wdXRNZXNzYWdlQXN5bmMgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0Q29udHJvbENoYW5uZWxXYXNpKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+ImdldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2EuZXhwb3J0cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbChiLGMsZCk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKX07Y3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lLCB2YWx1ZSkgPT4gdm9pZDsiOwpjb25zdCBjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0U3RyaW5nQ2hhbm5lbFdhc2koYixjKTtjb25zdCBkPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGIpO3JldHVybiBkfTtjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJnZXRTdHJpbmdDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kU2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzPWE9PihiLGMsZCk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZD1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGQpO2EuZXhwb3J0cy5jc291bmRTZXRTdHJpbmdDaGFubmVsKGIsYyxkKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsZCl9O2Nzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldFN0cmluZ0NoYW5uZWwgPSBhc3luYyAoY2hhbm5lbE5hbWUsIHZhbHVlKSA9PiB2b2lkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldENvbnRyb2xDaGFubmVsPWNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldFN0cmluZ0NoYW5uZWw9Y3NvdW5kR2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRJbnB1dE1lc3NhZ2U9Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZElucHV0TWVzc2FnZUFzeW5jPWNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7Cm1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbD1jc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRTdHJpbmdDaGFubmVsPWNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cztjb25zdCBjc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz1hPT5iPT57dmFyIHtidWZmZXI6Y309YS53YXNpLm1lbW9yeTtiPWEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0T3V0cHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXROYW1lID0gYXN5bmMgKCkgPT4gU3RyaW5nOyI7CmNvbnN0IGNzb3VuZEdldElucHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW89YT0+Yj0+e3ZhciB7YnVmZmVyOmN9PWEud2FzaS5tZW1vcnk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0SW5wdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby50b1N0cmluZz0oKT0+ImdldElucHV0TmFtZSA9IGFzeW5jIChjc291bmQpID0+IFN0cmluZzsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz17fTttb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby5jc291bmRHZXRJbnB1dE5hbWU9Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbzsKbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8uY3NvdW5kR2V0T3V0cHV0TmFtZT1jc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbztjb25zdCBjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYT1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2Q9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtiPWEuZXhwb3J0cy5jc291bmRBcHBlbmRFbnYoYixjLGQpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtyZXR1cm4gYn07Y3NvdW5kQXBwZW5kRW52JCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEudG9TdHJpbmc9KCk9PiJhcHBlbmRFbnYgPSBhc3luYyAoY3NvdW5kLCB2YXJpYWJsZSwgdmFsdWUpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTaG91bGREYWVtb25pemUoYik7CnZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmE9e307bW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhLmNzb3VuZEFwcGVuZEVudj1jc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYTttb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEuY3NvdW5kU2hvdWxkRGFlbW9uaXplPWNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhO2NvbnN0IGNzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZElzU2NvcmVQZW5kaW5nKGIpO2Nzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJpc1Njb3JlUGVuZGluZyA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kU2V0U2NvcmVQZW5kaW5nKGIsYyk7Y3NvdW5kU2V0U2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJzZXRTY29yZVBlbmRpbmcgPSBhc3luYyAocGVuZGluZykgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFJlYWRTY29yZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4icmVhZFNjb3JlID0gYXN5bmMgKHNjb3JlKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRTY29yZVRpbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2NvcmVUaW1lKGIpO2Nzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4iZ2V0U2NvcmVUaW1lID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMoYik7Y3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJnZXRTY29yZU9mZnNldFNlY29uZHMgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyhiLGMpO2Nzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4ic2V0U2NvcmVPZmZzZXRTZWNvbmRzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFJld2luZFNjb3JlKGIpO2Nzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJyZXdpbmRTY29yZSA9IGFzeW5jICgpID0+IHVuZGVmaW5lZDsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9e307bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcz1jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kR2V0U2NvcmVUaW1lPWNzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nOwptb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kSXNTY29yZVBlbmRpbmc9Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kUmVhZFNjb3JlPWNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRSZXdpbmRTY29yZT1jc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRTZXRTY29yZU9mZnNldFNlY29uZHM9Y3NvdW5kU2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc7bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZFNldFNjb3JlUGVuZGluZz1jc291bmRTZXRTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZztjb25zdCBjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVMZW5ndGgoYixjKTtjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVMZW5ndGggPSBhc3luYyAodGFibGVOdW0pID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+YS5leHBvcnRzLmNzb3VuZFRhYmxlR2V0KGIsYyxkKTtjc291bmRUYWJsZUdldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVHZXQgPSBhc3luYyAodGFibGVOdW0sIHRhYmxlSW5kZXgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkLGUpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVTZXQoYixjLGQsZSk7CmNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJ0YWJsZVNldCA9IGFzeW5jICh0YWJsZU51bSwgdGFibGVJbmRleCwgdmFsdWUpID0+IHVuZGVmaW5lZDsiO2NvbnN0IGNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+e2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jRmxvYXRBcnJheShkLmxlbmd0aCk7KG5ldyBGbG9hdDY0QXJyYXkoYS53YXNpLm1lbW9yeS5idWZmZXIsZSxkLmxlbmd0aCkpLnNldChkKTthLmV4cG9ydHMuY3NvdW5kVGFibGVDb3B5SW4oYixjLGUpO2EuZXhwb3J0cy5mcmVlRmxvYXRBcnJheU1lbShlKX07Y3NvdW5kVGFibGVDb3B5SW4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS50b1N0cmluZz0oKT0+InRhYmxlQ29weUluID0gYXN5bmMgKHRhYmxlTnVtLCBmbG9hdDY0QXJyYXkpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+e3ZhciBkPWEuZXhwb3J0cy5jc291bmRUYWJsZUxlbmd0aChiLGMpO2lmKDA8ZCl7Y29uc3QgZT1hLmV4cG9ydHMuYWxsb2NGbG9hdEFycmF5KGQpO2EuZXhwb3J0cy5jc291bmRUYWJsZUNvcHlPdXQoYixjLGUpOyh7YnVmZmVyOmJ9PWEud2FzaS5tZW1vcnkpO2Q9bmV3IEZsb2F0NjRBcnJheShiLGUsZCk7YS5leHBvcnRzLmZyZWVGbG9hdEFycmF5TWVtKGUpO3JldHVybiBGbG9hdDY0QXJyYXkuZnJvbShkKX19O2Nzb3VuZFRhYmxlQ29weU91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVDb3B5T3V0ID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7Y29uc3QgY3NvdW5kR2V0VGFibGUkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKY3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9Y3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc7Y29uc3QgY3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyk9Pntjb25zdCBkPWEuZXhwb3J0cy5hbGxvY0Zsb2F0QXJyYXkoMTAyNCk7YS5leHBvcnRzLmNzb3VuZEdldFRhYmxlQXJncyhiLGQsYyk7KHtidWZmZXI6Yn09YS53YXNpLm1lbW9yeSk7Yj1uZXcgRmxvYXQ2NEFycmF5KGIsZCwxMDI0KTthLmV4cG9ydHMuZnJlZUZsb2F0QXJyYXlNZW0oZCk7cmV0dXJuIGJ9O2Nzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0VGFibGVBcmdzID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7CmNvbnN0IGNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJpc05hbWVkR0VOID0gYXN5bmMgKHRhYmxlTnVtKSA9PiBudW1iZXI7Ijtjb25zdCBjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT57dmFyIGQ9YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtpZigwPGQpe2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jU3RyaW5nTWVtKGQpO2EuZXhwb3J0cy5jc291bmRHZXROYW1lZEdFTihiLGUsYyxkKTsoe2J1ZmZlcjpifT1hLndhc2kubWVtb3J5KTtkPW5ldyBVaW50OEFycmF5KGIsZSxkKTtyZXR1cm4gdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhkKX19Owpjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0TmFtZWRHRU4gPSBhc3luYyAodGFibGVOdW0pID0+ID9zdHJpbmc7Ijt2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPXt9O21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXROYW1lZEdFTj1jc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXRUYWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kR2V0VGFibGVBcmdzPWNzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRJc05hbWVkR0VOPWNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weUluPWNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU7bW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weU91dD1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVHZXQ9Y3NvdW5kVGFibGVHZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVMZW5ndGg9Y3NvdW5kVGFibGVMZW5ndGgkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVTZXQ9Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTtmdW5jdGlvbiB3cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyxkKT0+e2I9InN0cmluZyI9PT10eXBlb2YgZD9lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2RlKGQpOmQ7YS53YXNpLndyaXRlRmlsZShjLGIpfX13cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCwgZGF0YSkgPT4gdm9pZCI7ZnVuY3Rpb24gYXBwZW5kRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjLGQpPT57Yj0ic3RyaW5nIj09PXR5cGVvZiBkP2VuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoZCk6ZDthLndhc2kuYXBwZW5kRmlsZShjLGIpfX1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgsIGRhdGEpID0+IHZvaWQiOwpmdW5jdGlvbiByZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLnJlYWRGaWxlKGMpfXJlYWRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+ID9VaW50OEFycmF5IjtmdW5jdGlvbiB1bmxpbmskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS51bmxpbmsoYyl9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO2Z1bmN0aW9uIHJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS5yZWFkZGlyKGMpfXJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCkgPT4gc3RyaW5nW10iOwpmdW5jdGlvbiBta2RpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLm1rZGlyKGMpfW1rZGlyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzPXt9O21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMuYXBwZW5kRmlsZT1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMubWtkaXI9bWtkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy5yZWFkRmlsZT1yZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnJlYWRkaXI9cmVhZGRpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy51bmxpbms9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMud3JpdGVGaWxlPXdyaXRlRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcztjb25zdCBhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kPXtjc291bmRDcmVhdGU6Y3NvdW5kQ3JlYXRlJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmREZXN0cm95OmNzb3VuZERlc3Ryb3kkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZEdldEFQSVZlcnNpb246Y3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24sY3NvdW5kR2V0VmVyc2lvbjpjc291bmRHZXRWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmRJbml0aWFsaXplOmNzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZFBhcnNlT3JjOmNzb3VuZFBhcnNlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kQ29tcGlsZVRyZWU6Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRDb21waWxlT3JjOmNzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSwKY3NvdW5kRXZhbENvZGU6Y3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRTdGFydDpjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2Q6Y3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2RUZXh0OmNzb3VuZENvbXBpbGVDc2RUZXh0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybTpjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybUtzbXBzOmNzb3VuZFBlcmZvcm1Lc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFBlcmZvcm1CdWZmZXI6Y3NvdW5kUGVyZm9ybUJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFN0b3A6Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLApjc291bmRDbGVhbnVwOmNzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRSZXNldDpjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZEdldFNyOmNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRLcjpjc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0S3NtcHM6Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sczpjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sc0lucHV0OmNzb3VuZEdldE5jaG5sc0lucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXQwZEJGUzpjc291bmRHZXQwZEJGUyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0QTQ6Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLApjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXM6Y3NvdW5kR2V0Q3VycmVudFRpbWVTYW1wbGVzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRTaXplT2ZNWUZMVDpjc291bmRHZXRTaXplT2ZNWUZMVCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0T3B0aW9uOmNzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0UGFyYW1zOmNzb3VuZFNldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0UGFyYW1zOmNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0RGVidWc6Y3NvdW5kR2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZFNldERlYnVnOmNzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRJbnB1dEJ1ZmZlclNpemU6Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbywKY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZTpjc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRJbnB1dEJ1ZmZlcjpjc291bmRHZXRJbnB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0T3V0cHV0QnVmZmVyOmNzb3VuZEdldE91dHB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0U3Bpbjpjc291bmRHZXRTcGluJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRTcG91dDpjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0TUlESURldkxpc3Q6Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kU2V0TWlkaUNhbGxiYWNrczpjc291bmRTZXRNaWRpQ2FsbGJhY2tzJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLGNzb3VuZEdldFJ0TWlkaU5hbWU6Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSwKY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lOmNzb3VuZEdldE1pZGlPdXRGaWxlTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSxjc291bmRQdXNoTWlkaU1lc3NhZ2U6Y3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dDpfaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kSW5wdXRNZXNzYWdlOmNzb3VuZElucHV0TWVzc2FnZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLGNzb3VuZElucHV0TWVzc2FnZUFzeW5jOmNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMsY3NvdW5kR2V0Q29udHJvbENoYW5uZWw6Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRDb250cm9sQ2hhbm5lbDpjc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLApjc291bmRHZXRTdHJpbmdDaGFubmVsOmNzb3VuZEdldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRTdHJpbmdDaGFubmVsOmNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRHZXRJbnB1dE5hbWU6Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbyxjc291bmRHZXRPdXRwdXROYW1lOmNzb3VuZEdldE91dHB1dE5hbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRnZW5lcmFsX2lvLGNzb3VuZEFwcGVuZEVudjpjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYSxjc291bmRTaG91bGREYWVtb25pemU6Y3NvdW5kU2hvdWxkRGFlbW9uaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEsY3NvdW5kSXNTY29yZVBlbmRpbmc6Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZywKY3NvdW5kU2V0U2NvcmVQZW5kaW5nOmNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFJlYWRTY29yZTpjc291bmRSZWFkU2NvcmUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRHZXRTY29yZVRpbWU6Y3NvdW5kR2V0U2NvcmVUaW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcsY3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzOmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kczpjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRSZXdpbmRTY29yZTpjc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFRhYmxlTGVuZ3RoOmNzb3VuZFRhYmxlTGVuZ3RoJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsCmNzb3VuZFRhYmxlR2V0OmNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kVGFibGVTZXQ6Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRUYWJsZUNvcHlJbjpjc291bmRUYWJsZUNvcHlJbiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLGNzb3VuZFRhYmxlQ29weU91dDpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZTpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZUFyZ3M6Y3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kSXNOYW1lZEdFTjpjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kR2V0TmFtZWRHRU46Y3NvdW5kR2V0TmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxmczptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzfTsKdmFyICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZD1mdW5jdGlvbihhKXtyZXR1cm4gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhbcmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGIsYyk9PmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyxhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kW2NdKGEpLGIpLHt9LGtleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiZnMiKShhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kKSkpLHJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChiLGMpPT5hc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsCmFwaSQkbW9kdWxlJHNyYyRsaWJjc291bmQuZnNbY10oYSksYikse30sa2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMpKV0pfSxtb2R1bGUkc3JjJGxpYmNzb3VuZD17fTttb2R1bGUkc3JjJGxpYmNzb3VuZC5hcGk9YXBpJCRtb2R1bGUkc3JjJGxpYmNzb3VuZDttb2R1bGUkc3JjJGxpYmNzb3VuZC5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZDtjb25zdCBkbGluaXQkJG1vZHVsZSRzcmMkZGxpbml0PShhLGIsYyxkKT0+e2lmKGIuZXhwb3J0cy5jc291bmRNb2R1bGVJbml0KXt2YXIgZT1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LDApLGc9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7Y29uc3QgaD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKTtsZXQgaz1jLmxlbmd0aDsiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRNb2R1bGVDcmVhdGUmJihjLmdyb3coMSksZS52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZSksays9MSk7ImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kTW9kdWxlSW5pdCYmKGMuZ3JvdygxKSxmLnZhbHVlPWssYy5zZXQoaywKYi5leHBvcnRzLmNzb3VuZE1vZHVsZUluaXQpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kmJihjLmdyb3coMSksZy52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZUVycm9yQ29kZVRvU3RyaW5nJiYoYy5ncm93KDEpLGgudmFsdWU9ayxjLnNldChrLGIuZXhwb3J0cy5jc291bmRNb2R1bGVFcnJvckNvZGVUb1N0cmluZykpO2EuZXhwb3J0cy5jc291bmRXYXNpTG9hZFBsdWdpbihkLGUsZixnLGgpfWVsc2UgYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8Yi5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQ/KGU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCksZj1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxnPWMubGVuZ3RoLAoiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRfb3Bjb2RlX2luaXQmJihlLnZhbHVlPWcsYy5ncm93KDEpLGMuc2V0KGcsYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdCksZys9MSksImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCYmKGYudmFsdWU9ZyxjLmdyb3coMSksYy5zZXQoZyxiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCkpLGEuZXhwb3J0cy5jc291bmRXYXNpTG9hZE9wY29kZUxpYnJhcnkoZCxmLGUpKTpjb25zb2xlLmVycm9yKCJQbHVnaW4gZG9lc24ndCBleHBvcnQgbmVjZWNjYXJ5IGZ1bmN0aW9ucyB0byBxdWFsaXR5IGFzIGNzb3VuZCBwbHVnaW4uIil9O3ZhciBtb2R1bGUkc3JjJGRsaW5pdD17fTttb2R1bGUkc3JjJGRsaW5pdC5kbGluaXQ9ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdDt2b2lkIDAhPT1nb29nLmdsb2JhbCYmKGdvb2cuZ2xvYmFsPXt9KTtnb29nLmdsb2JhbC5CaWdJbnR8fChnb29nLmdsb2JhbC5CaWdJbnQ9dm9pZCAwPT09QmlnSW50P051bWJlcjpCaWdJbnQpOwpjb25zdCBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9FQUREUklOVVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMsV0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NSxXQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRUFMUkVBRFkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NyxXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTgsV0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTksV0FTSV9FQlVTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTAsV0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTEsV0FTSV9FQ0hJTEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTIsV0FTSV9FQ09OTkFCT1JURUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9FQ09OTlJFRlVTRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTQsV0FTSV9FQ09OTlJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE1LFdBU0lfRURFQURMSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNixXQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNyxXQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTgsV0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9FRVhJU1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjIwLFdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIxLFdBU0lfRUZCSUckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjIsV0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9FSURSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNCxXQVNJX0VJTFNFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNSxXQVNJX0VJTlBST0dSRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI2LFdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjcsV0FTSV9FSU5WQUwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjgsV0FTSV9FSU8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjksV0FTSV9FSVNDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMwLFdBU0lfRUlTRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQozMSxXQVNJX0VMT09QJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMyLFdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMzLFdBU0lfRU1MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTM0LFdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzUsV0FTSV9FTVVMVElIT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzYsV0FTSV9FTkFNRVRPT0xPTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzcsV0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOCxXQVNJX0VORVRSRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOSxXQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQwLFdBU0lfRU5GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQxLApXQVNJX0VOT0JVRlMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDIsV0FTSV9FTk9ERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDMsV0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDQsV0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ1LFdBU0lfRU5PTENLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ2LFdBU0lfRU5PTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00NyxXQVNJX0VOT01FTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OCxXQVNJX0VOT01TRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OSxXQVNJX0VOT1BST1RPT1BUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUwLFdBU0lfRU5PU1BDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUxLFdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQo1MixXQVNJX0VOT1RDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUzLFdBU0lfRU5PVERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NCxXQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NSxXQVNJX0VOT1RSRUNPVkVSQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NixXQVNJX0VOT1RTT0NLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTU3LFdBU0lfRU5PVFNVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OCxXQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OSxXQVNJX0VOWElPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYwLFdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYxLFdBU0lfRU9XTkVSREVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KNjIsV0FTSV9FUEVSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02MyxXQVNJX0VQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY0LFdBU0lfRVBST1RPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY1LFdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY2LFdBU0lfRVBST1RPVFlQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02NyxXQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02OCxXQVNJX0VST0ZTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY5LFdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTcwLFdBU0lfRVNSQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzEsV0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzIsV0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjczLFdBU0lfRVRYVEJTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03NCxXQVNJX0VYREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTc1LFdBU0lfRU5PVENBUEFCTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzYsV0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TSUdBTFJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TSUdCVVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX1NJR0NITEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfU0lHSFVQJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYsV0FTSV9TSUdJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjcsV0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1NJR0tJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OSxXQVNJX1NJR1BJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTAsV0FTSV9TSUdRVUlUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTExLFdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xMixXQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE0LFdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNSxXQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTYsV0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE3LFdBU0lfU0lHVFRPVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTgsV0FTSV9TSUdVUkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9TSUdVU1IxJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIwLFdBU0lfU0lHVVNSMiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMSxXQVNJX1NJR1ZUQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMixXQVNJX1NJR1hDUFUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9TSUdYRlNaJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI0LFdBU0lfRklMRVRZUEVfVU5LTk9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRklMRVRZUEVfQkxPQ0tfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjMsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRklMRVRZUEVfU1lNQk9MSUNfTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03LFdBU0lfRkRGTEFHX0FQUEVORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRkRGTEFHX0RTWU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GREZMQUdfTk9OQkxPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz04LFdBU0lfRkRGTEFHX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjE2LFdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEpLFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMiksV0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0KSxXQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgpLFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYpLFdBU0lfUklHSFRfRkRfVEVMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzIpLFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCg2NCksV0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEyOCksV0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjU2KSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoNTEyKSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwMjQpLFdBU0lfUklHSFRfUEFUSF9MSU5LX1NPVVJDRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjA0OCksV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQpnb29nLmdsb2JhbC5CaWdJbnQoNDA5NiksV0FTSV9SSUdIVF9QQVRIX09QRU4kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgxOTIpLFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYzODQpLFdBU0lfUklHSFRfUEFUSF9SRUFETElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzI3NjgpLFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg2NTUzNiksV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEzMTA3MiksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KZ29vZy5nbG9iYWwuQmlnSW50KDI2MjE0NCksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg1MjQyODgpLFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwNDg1NzYpLFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgyMDk3MTUyKSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0MTk0MzA0KSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoODM4ODYwOCksV0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCgxNjc3NzIxNiksV0FTSV9SSUdIVF9QQVRIX1JFTU9WRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDMzNTU0NDMyKSxXQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDY3MTA4ODY0KSxXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgxMzQyMTc3MjgpLFdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjY4NDM1NDU2KSxSSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX0ZEX1NFRUskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FEVklTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FMTE9DQVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfT1BFTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFQURMSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQ0hBUkFDVEVSX0RFVklDRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMsUklHSFRTX0NIQVJBQ1RFUl9ERVZJQ0VfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KV0FTSV9SSUdIVF9GRF9EQVRBU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9URUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMCksUklHSFRTX0RJUkVDVE9SWV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19ESVJFQ1RPUllfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8UklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cywKUklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX0VWRU5UVFlQRV9DTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0VWRU5UVFlQRV9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfRklMRVNUQVRfU0VUX0FUSU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjEsV0FTSV9GSUxFU1RBVF9TRVRfQVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9GSUxFU1RBVF9TRVRfTVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX09fQ1JFQVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX09fVFJVTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1BSRU9QRU5UWVBFX0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRElSQ09PS0lFX1NUQVJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjAsV0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9XSEVOQ0VfQ1VSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI7dmFyIG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9e307bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQUxMPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19ESVJFQ1RPUllfQkFTRT1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfRElSRUNUT1JZX0lOSEVSSVRJTkc9UklHSFRTX0RJUkVDVE9SWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRT1SSUdIVFNfUkVHVUxBUl9GSUxFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfUkVHVUxBUl9GSUxFX0lOSEVSSVRJTkc9UklHSFRTX1JFR1VMQVJfRklMRV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1NPQ0tFVF9CQVNFPVJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19TT0NLRVRfSU5IRVJJVElORz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1RUWV9CQVNFPVJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfVFRZX0lOSEVSSVRJTkc9UklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9DTE9DS19NT05PVE9OSUM9V0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRD1XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfQ0xPQ0tfUkVBTFRJTUU9V0FTSV9DTE9DS19SRUFMVElNRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1RIUkVBRF9DUFVUSU1FX0lEPVdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0RJUkNPT0tJRV9TVEFSVD1XQVNJX0RJUkNPT0tJRV9TVEFSVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRTJCSUc9V0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFDQ0VTPVdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUREUklOVVNFPVdBU0lfRUFERFJJTlVTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBRERSTk9UQVZBSUw9V0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUZOT1NVUFBPUlQ9V0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBR0FJTj1XQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFMUkVBRFk9V0FTSV9FQUxSRUFEWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUJBREY9V0FTSV9FQkFERiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VCQURNU0c9V0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQlVTWT1XQVNJX0VCVVNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ0FOQ0VMRUQ9V0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VDSElMRD1XQVNJX0VDSElMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5BQk9SVEVEPVdBU0lfRUNPTk5BQk9SVEVEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5SRUZVU0VEPVdBU0lfRUNPTk5SRUZVU0VEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ09OTlJFU0VUPVdBU0lfRUNPTk5SRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURFQURMSz1XQVNJX0VERUFETEskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VERVNUQUREUlJFUT1XQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURPTT1XQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRFFVT1Q9V0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VFWElTVD1XQVNJX0VFWElTVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUZBVUxUPVdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRkJJRz1XQVNJX0VGQklHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSE9TVFVOUkVBQ0g9V0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJRFJNPVdBU0lfRUlEUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSUxTRVE9V0FTSV9FSUxTRVEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlBST0dSRVNTPVdBU0lfRUlOUFJPR1JFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlRSPVdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlZBTD1XQVNJX0VJTlZBTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUlPPVdBU0lfRUlPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSVNDT05OPVdBU0lfRUlTQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJU0RJUj1XQVNJX0VJU0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUxPT1A9V0FTSV9FTE9PUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU1GSUxFPVdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTUxJTks9V0FTSV9FTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNU0dTSVpFPVdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNVUxUSUhPUD1XQVNJX0VNVUxUSUhPUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOQU1FVE9PTE9ORz1XQVNJX0VOQU1FVE9PTE9ORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVERPV049V0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVFJFU0VUPVdBU0lfRU5FVFJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkVUVU5SRUFDSD1XQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkZJTEU9V0FTSV9FTkZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9CVUZTPVdBU0lfRU5PQlVGUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PREVWPVdBU0lfRU5PREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9FTlQ9V0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0VYRUM9V0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9MQ0s9V0FTSV9FTk9MQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0xJTks9V0FTSV9FTk9MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PTUVNPVdBU0lfRU5PTUVNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9NU0c9V0FTSV9FTk9NU0ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1BST1RPT1BUPVdBU0lfRU5PUFJPVE9PUFQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1NQQz1XQVNJX0VOT1NQQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PU1lTPVdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENBUEFCTEU9V0FTSV9FTk9UQ0FQQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENPTk49V0FTSV9FTk9UQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVERJUj1XQVNJX0VOT1RESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RFTVBUWT1XQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFJFQ09WRVJBQkxFPVdBU0lfRU5PVFJFQ09WRVJBQkxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNPQ0s9V0FTSV9FTk9UU09DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNVUD1XQVNJX0VOT1RTVVAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RUWT1XQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5YSU89V0FTSV9FTlhJTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9WRVJGTE9XPVdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9XTkVSREVBRD1XQVNJX0VPV05FUkRFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQRVJNPVdBU0lfRVBFUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQSVBFPVdBU0lfRVBJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQUk9UTz1XQVNJX0VQUk9UTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPTk9TVVBQT1JUPVdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPVFlQRT1XQVNJX0VQUk9UT1RZUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VSQU5HRT1XQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVJPRlM9V0FTSV9FUk9GUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVNQSVBFPVdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1JDSD1XQVNJX0VTUkNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1RBTEU9V0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1VDQ0VTUz1XQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVElNRURPVVQ9V0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VUWFRCU1k9V0FTSV9FVFhUQlNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfQ0xPQ0s9V0FTSV9FVkVOVFRZUEVfQ0xPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VWRU5UVFlQRV9GRF9SRUFEPVdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfRkRfV1JJVEU9V0FTSV9FVkVOVFRZUEVfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VYREVWPVdBU0lfRVhERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19BUFBFTkQ9V0FTSV9GREZMQUdfQVBQRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GREZMQUdfRFNZTkM9V0FTSV9GREZMQUdfRFNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19OT05CTE9DSz1XQVNJX0ZERkxBR19OT05CTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19SU1lOQz1XQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRkRGTEFHX1NZTkM9V0FTSV9GREZMQUdfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU09V0FTSV9GSUxFU1RBVF9TRVRfQVRJTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFU1RBVF9TRVRfTVRJTT1XQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0U9V0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX0NIQVJBQ1RFUl9ERVZJQ0U9V0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlk9V0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEU9V0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9TVFJFQU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NZTUJPTElDX0xJTks9V0FTSV9GSUxFVFlQRV9TWU1CT0xJQ19MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfVU5LTk9XTj1XQVNJX0ZJTEVUWVBFX1VOS05PV04kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fQ1JFQVQ9V0FTSV9PX0NSRUFUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0RJUkVDVE9SWT1XQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0VYQ0w9V0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fVFJVTkM9V0FTSV9PX1RSVU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUFJFT1BFTlRZUEVfRElSPVdBU0lfUFJFT1BFTlRZUEVfRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9BRFZJU0U9V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0FMTE9DQVRFPVdBU0lfUklHSFRfRkRfQUxMT0NBVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0RBVEFTWU5DPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1M9V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUPVdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRT1XQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVM9V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1JFQUQ9V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfUkVBRERJUj1XQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1NFRUs9V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9TWU5DPVdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfVEVMTD1XQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1dSSVRFPVdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlk9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVD1XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0U9V0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUPVdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9PUEVOPVdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRUFETElOSz1XQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWT1XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFPVdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQ9V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1NZTUxJTks9V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURT1XQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOPVdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0FCUlQ9V0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdBTFJNPVdBU0lfU0lHQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQlVTPVdBU0lfU0lHQlVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdDSExEPVdBU0lfU0lHQ0hMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQ09OVD1XQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0ZQRT1XQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0hVUD1XQVNJX1NJR0hVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHSUxMPVdBU0lfU0lHSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdJTlQ9V0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0tJTEw9V0FTSV9TSUdLSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdQSVBFPVdBU0lfU0lHUElQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHUVVJVD1XQVNJX1NJR1FVSVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdTRUdWPVdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHU1RPUD1XQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RFUk09V0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdUUkFQPVdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFNUUD1XQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RUSU49V0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFRPVT1XQVNJX1NJR1RUT1UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VSRz1XQVNJX1NJR1VSRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVVNSMT1XQVNJX1NJR1VTUjEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VTUjI9V0FTSV9TSUdVU1IyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdWVEFMUk09V0FTSV9TSUdWVEFMUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdYQ1BVPVdBU0lfU0lHWENQVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHWEZTWj1XQVNJX1NJR1hGU1okJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NUREVSUl9GSUxFTk89V0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TVERJTl9GSUxFTk89V0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NURE9VVF9GSUxFTk89V0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfV0hFTkNFX0NVUj1XQVNJX1dIRU5DRV9DVVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1dIRU5DRV9FTkQ9V0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9XSEVOQ0VfU0VUPVdBU0lfV0hFTkNFX1NFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cztnb29nLmRlYnVnPXt9O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IoYSxiKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IpO2Vsc2V7Y29uc3QgYz1FcnJvcigpLnN0YWNrO2MmJih0aGlzLnN0YWNrPWMpfWEmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGEpKTt2b2lkIDAhPT1iJiYodGhpcy5jYXVzZT1iKTt0aGlzLnJlcG9ydEVycm9yVG9TZXJ2ZXI9ITB9Z29vZy5pbmhlcml0cyhtb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLEVycm9yKTttb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLnByb3RvdHlwZS5uYW1lPSJDdXN0b21FcnJvciI7Z29vZy5kZWJ1Zy5FcnJvcj1tb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yO2dvb2cuZG9tPXt9O2dvb2cuZG9tLk5vZGVUeXBlPXtFTEVNRU5UOjEsQVRUUklCVVRFOjIsVEVYVDozLENEQVRBX1NFQ1RJT046NCxFTlRJVFlfUkVGRVJFTkNFOjUsRU5USVRZOjYsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo3LENPTU1FTlQ6OCxET0NVTUVOVDo5LERPQ1VNRU5UX1RZUEU6MTAsRE9DVU1FTlRfRlJBR01FTlQ6MTEsTk9UQVRJT046MTJ9O2dvb2cuYXNzZXJ0cz17fTtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFM9Z29vZy5ERUJVRztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX0Fzc2VydGlvbkVycm9yKGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvci5jYWxsKHRoaXMsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYikpO3RoaXMubWVzc2FnZVBhdHRlcm49YX1nb29nLmluaGVyaXRzKG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IsbW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvcik7Z29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yPW1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3I7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvci5wcm90b3R5cGUubmFtZT0iQXNzZXJ0aW9uRXJyb3IiOwpnb29nLmFzc2VydHMuREVGQVVMVF9FUlJPUl9IQU5ETEVSPWZ1bmN0aW9uKGEpe3Rocm93IGE7fTtsZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19lcnJvckhhbmRsZXJfPWdvb2cuYXNzZXJ0cy5ERUZBVUxUX0VSUk9SX0hBTkRMRVI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYil7YT1hLnNwbGl0KCIlcyIpO2xldCBjPSIiO2NvbnN0IGQ9YS5sZW5ndGgtMTtmb3IobGV0IGU9MDtlPGQ7ZSsrKWMrPWFbZV0rKGU8Yi5sZW5ndGg/YltlXToiJXMiKTtyZXR1cm4gYythW2RdfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZShhLGIsYyxkKXtsZXQgZT0iQXNzZXJ0aW9uIGZhaWxlZCIsZjtjPyhlKz0iOiAiK2MsZj1kKTphJiYoZSs9IjogIithLGY9Yik7YT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiIitlLGZ8fFtdKTttb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8oYSl9Z29vZy5hc3NlcnRzLnNldEVycm9ySGFuZGxlcj1mdW5jdGlvbihhKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl89YSl9Owpnb29nLmFzc2VydHMuYXNzZXJ0PWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiIixudWxsLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Z29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cz1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZudWxsPT1hJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgdG8gZXhpc3Q6ICVzLiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5mYWlsPWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8obmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IoIkZhaWx1cmUiKyhhPyI6ICIrYToiIiksQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSl9O2dvb2cuYXNzZXJ0cy5hc3NlcnROdW1iZXI9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmIm51bWJlciIhPT10eXBlb2YgYSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG51bWJlciBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJzdHJpbmciIT09dHlwZW9mIGEmJm1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBzdHJpbmcgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTtnb29nLmFzc2VydHMuYXNzZXJ0RnVuY3Rpb249ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmImZ1bmN0aW9uIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgZnVuY3Rpb24gYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydE9iamVjdD1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc09iamVjdChhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG9iamVjdCBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9O2dvb2cuYXNzZXJ0cy5hc3NlcnRBcnJheT1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhQXJyYXkuaXNBcnJheShhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIGFycmF5IGJ1dCBnb3QgJXM6ICVzLiIsW2dvb2cudHlwZU9mKGEpLGFdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5hc3NlcnRCb29sZWFuPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJib29sZWFuIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgYm9vbGVhbiBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0RWxlbWVudD1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Z29vZy5pc09iamVjdChhKSYmYS5ub2RlVHlwZT09Z29vZy5kb20uTm9kZVR5cGUuRUxFTUVOVHx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIEVsZW1lbnQgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2Y9ZnVuY3Rpb24oYSxiLGMsZCl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8YSBpbnN0YW5jZW9mIGJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBpbnN0YW5jZW9mICVzIGJ1dCBnb3QgJXMuIixbbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19nZXRUeXBlKGIpLG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKV0sYyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMykpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEZpbml0ZT1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Im51bWJlciI9PXR5cGVvZiBhJiZpc0Zpbml0ZShhKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkICVzIHRvIGJlIGEgZmluaXRlIG51bWJlciBidXQgaXQgaXMgbm90LiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEZ1bmN0aW9uP2EuZGlzcGxheU5hbWV8fGEubmFtZXx8InVua25vd24gdHlwZSBuYW1lIjphIGluc3RhbmNlb2YgT2JqZWN0P2EuY29uc3RydWN0b3IuZGlzcGxheU5hbWV8fGEuY29uc3RydWN0b3IubmFtZXx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpOm51bGw9PT1hPyJudWxsIjp0eXBlb2YgYX07Z29vZy5hcnJheT17fTtnb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTPWdvb2cuVFJVU1RFRF9TSVRFO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TPTIwMTI8Z29vZy5GRUFUVVJFU0VUX1lFQVI7Z29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGEpe3JldHVybiBhW2EubGVuZ3RoLTFdfWdvb2cuYXJyYXkucGVlaz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrO2dvb2cuYXJyYXkubGFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbmRleE9mPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXtjPW51bGw9PWM/MDowPmM/TWF0aC5tYXgoMCxhLmxlbmd0aCtjKTpjO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuInN0cmluZyIhPT10eXBlb2YgYnx8MSE9Yi5sZW5ndGg/LTE6YS5pbmRleE9mKGIsYyk7Zm9yKDtjPGEubGVuZ3RoO2MrKylpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfTtnb29nLmFycmF5LmluZGV4T2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbGFzdEluZGV4T2Y9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYSxiLG51bGw9PWM/YS5sZW5ndGgtMTpjKX06ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbD09Yz9hLmxlbmd0aC0xOmM7MD5jJiYoYz1NYXRoLm1heCgwLGEubGVuZ3RoK2MpKTtpZigic3RyaW5nIj09PXR5cGVvZiBhKXJldHVybiJzdHJpbmciIT09dHlwZW9mIGJ8fDEhPWIubGVuZ3RoPy0xOmEubGFzdEluZGV4T2YoYixjKTtmb3IoOzA8PWM7Yy0tKWlmKGMgaW4gYSYmYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9Owpnb29nLmFycmF5Lmxhc3RJbmRleE9mPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2xhc3RJbmRleE9mO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2g9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZm9yRWFjaCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpfTtnb29nLmFycmF5LmZvckVhY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsYixjKXt2YXIgZD1hLmxlbmd0aDtjb25zdCBlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IoLS1kOzA8PWQ7LS1kKWQgaW4gZSYmYi5jYWxsKGMsZVtkXSxkLGEpfWdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2hSaWdodDsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmlsdGVyPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmZpbHRlcik/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPVtdO2xldCBmPTA7Y29uc3QgZz0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBoPTA7aDxkO2grKylpZihoIGluIGcpe2NvbnN0IGs9Z1toXTtiLmNhbGwoYyxrLGgsYSkmJihlW2YrK109ayl9cmV0dXJuIGV9O2dvb2cuYXJyYXkuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbHRlcjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbWFwPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLm1hcCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPUFycmF5KGQpLGY9InN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKTphO2ZvcihsZXQgZz0wO2c8ZDtnKyspZyBpbiBmJiYoZVtnXT1iLmNhbGwoYyxmW2ddLGcsYSkpO3JldHVybiBlfTtnb29nLmFycmF5Lm1hcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9tYXA7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZT1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYobW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfQVNTVU1FX05BVElWRV9GVU5DVElPTlN8fEFycmF5LnByb3RvdHlwZS5yZWR1Y2UpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2QmJihiPWdvb2cuYmluZChiLGQpKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMsZCl7bGV0IGU9Yzttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoKGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9Yik7ZCYmKGI9Z29vZy5iaW5kKGIsZCkpO3JldHVybiBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjLGQpe2xldCBlPWM7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuc29tZSk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKSlyZXR1cm4hMDtyZXR1cm4hMX07Z29vZy5hcnJheS5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2V2ZXJ5PWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmV2ZXJ5KT9mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1hLmxlbmd0aCk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJiFiLmNhbGwoYyxlW2ZdLGYsYSkpcmV0dXJuITE7cmV0dXJuITB9O2dvb2cuYXJyYXkuZXZlcnk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXZlcnk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvdW50KGEsYixjKXtsZXQgZD0wO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYsZyl7Yi5jYWxsKGMsZSxmLGcpJiYrK2R9LGMpO3JldHVybiBkfWdvb2cuYXJyYXkuY291bnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY291bnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZChhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleChhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWlmKGYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpKXJldHVybiBmO3JldHVybi0xfWdvb2cuYXJyYXkuZmluZEluZGV4PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kUmlnaHQoYSxiLGMpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZEluZGV4UmlnaHQoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZFJpZ2h0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXhSaWdodChhLGIsYyl7dmFyIGQ9YS5sZW5ndGg7Y29uc3QgZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKC0tZDswPD1kO2QtLSlpZihkIGluIGUmJmIuY2FsbChjLGVbZF0sZCxhKSlyZXR1cm4gZDtyZXR1cm4tMX1nb29nLmFycmF5LmZpbmRJbmRleFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleFJpZ2h0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zKGEsYil7cmV0dXJuIDA8PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxiKX1nb29nLmFycmF5LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzRW1wdHkoYSl7cmV0dXJuIDA9PWEubGVuZ3RofWdvb2cuYXJyYXkuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pc0VtcHR5OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jbGVhcihhKXtpZighQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGI9YS5sZW5ndGgtMTswPD1iO2ItLSlkZWxldGUgYVtiXTthLmxlbmd0aD0wfWdvb2cuYXJyYXkuY2xlYXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY2xlYXI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0KGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29udGFpbnMoYSxiKXx8YS5wdXNoKGIpfWdvb2cuYXJyYXkuaW5zZXJ0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRBdChhLGIsYyl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYywwLGIpfWdvb2cuYXJyYXkuaW5zZXJ0QXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQoYSxiLGMpe2dvb2cucGFydGlhbChtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2UsYSxjLDApLmFwcGx5KG51bGwsYil9Z29vZy5hcnJheS5pbnNlcnRBcnJheUF0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QmVmb3JlKGEsYixjKXtsZXQgZDsyPT1hcmd1bWVudHMubGVuZ3RofHwwPihkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxjKSk/YS5wdXNoKGIpOm1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYixkKX1nb29nLmFycmF5Lmluc2VydEJlZm9yZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRCZWZvcmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZShhLGIpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZihhLGIpO2xldCBjOyhjPTA8PWIpJiZtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpO3JldHVybiBjfWdvb2cuYXJyYXkucmVtb3ZlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVMYXN0KGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9sYXN0SW5kZXhPZihhLGIpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUxhc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlTGFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMT09QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKS5sZW5ndGh9Z29vZy5hcnJheS5yZW1vdmVBdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVJZihhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUlmPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZUlmOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZihhLGIsYyl7bGV0IGQ9MDttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoUmlnaHQoYSxmdW5jdGlvbihlLGYpe2IuY2FsbChjLGUsZixhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxmKSYmZCsrfSk7cmV0dXJuIGR9Z29vZy5hcnJheS5yZW1vdmVBbGxJZj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQoYSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sYXJndW1lbnRzKX1nb29nLmFycmF5LmNvbmNhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbihhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfQpnb29nLmFycmF5LmpvaW49bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5KGEpe2NvbnN0IGI9YS5sZW5ndGg7aWYoMDxiKXtjb25zdCBjPUFycmF5KGIpO2ZvcihsZXQgZD0wO2Q8YjtkKyspY1tkXT1hW2RdO3JldHVybiBjfXJldHVybltdfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2Nsb25lPWdvb2cuYXJyYXkudG9BcnJheT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5O2dvb2cuYXJyYXkuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9BcnJheTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXh0ZW5kKGEsYil7Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107aWYoZ29vZy5pc0FycmF5TGlrZShkKSl7Y29uc3QgZT1hLmxlbmd0aHx8MCxmPWQubGVuZ3RofHwwO2EubGVuZ3RoPWUrZjtmb3IobGV0IGc9MDtnPGY7ZysrKWFbZStnXT1kW2ddfWVsc2UgYS5wdXNoKGQpfX1nb29nLmFycmF5LmV4dGVuZD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9leHRlbmQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoYXJndW1lbnRzLDEpKX1nb29nLmFycmF5LnNwbGljZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2U7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYixjKX1nb29nLmFycmF5LnNsaWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzKGEsYixjKXtiPWJ8fGE7dmFyIGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGdvb2cuaXNPYmplY3QoZyk/Im8iK2dvb2cuZ2V0VWlkKGcpOih0eXBlb2YgZykuY2hhckF0KDApK2d9O2M9Y3x8ZDtsZXQgZT1kPTA7Y29uc3QgZj17fTtmb3IoO2U8YS5sZW5ndGg7KXtjb25zdCBnPWFbZSsrXSxoPWMoZyk7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGYsaCl8fChmW2hdPSEwLGJbZCsrXT1nKX1iLmxlbmd0aD1kfWdvb2cuYXJyYXkucmVtb3ZlRHVwbGljYXRlcz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2hfKGEsY3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUsITEsYil9Z29vZy5hcnJheS5iaW5hcnlTZWFyY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5U2VhcmNoO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlbGVjdChhLGIsYyl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLCEwLHZvaWQgMCxjKX1nb29nLmFycmF5LmJpbmFyeVNlbGVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWxlY3Q7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLGMsZCxlKXtsZXQgZj0wLGc9YS5sZW5ndGgsaDtmb3IoO2Y8Zzspe2NvbnN0IGs9ZisoZy1mPj4+MSk7bGV0IGw7bD1jP2IuY2FsbChlLGFba10sayxhKTpiKGQsYVtrXSk7MDxsP2Y9aysxOihnPWssaD0hbCl9cmV0dXJuIGg/ZjotZi0xfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYSxiKXthLnNvcnQoYnx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUpfWdvb2cuYXJyYXkuc29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0KGEsYil7Y29uc3QgYz1BcnJheShhLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspY1tlXT17aW5kZXg6ZSx2YWx1ZTphW2VdfTtjb25zdCBkPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYyxmdW5jdGlvbihlLGYpe3JldHVybiBkKGUudmFsdWUsZi52YWx1ZSl8fGUuaW5kZXgtZi5pbmRleH0pO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYVtiXT1jW2JdLnZhbHVlfWdvb2cuYXJyYXkuc3RhYmxlU29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxiLGMpe2NvbnN0IGQ9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc29ydChhLGZ1bmN0aW9uKGUsZil7cmV0dXJuIGQoYihlKSxiKGYpKX0pfWdvb2cuYXJyYXkuc29ydEJ5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRCeUtleTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0T2JqZWN0c0J5S2V5KGEsYixjKXttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxmdW5jdGlvbihkKXtyZXR1cm4gZFtiXX0sYyl9Z29vZy5hcnJheS5zb3J0T2JqZWN0c0J5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRPYmplY3RzQnlLZXk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkKGEsYixjKXtiPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO2ZvcihsZXQgZD0xO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWIoYVtkLTFdLGFbZF0pO2lmKDA8ZXx8MD09ZSYmYylyZXR1cm4hMX1yZXR1cm4hMH1nb29nLmFycmF5LmlzU29ydGVkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2VxdWFscyhhLGIsYyl7aWYoIWdvb2cuaXNBcnJheUxpa2UoYSl8fCFnb29nLmlzQXJyYXlMaWtlKGIpfHxhLmxlbmd0aCE9Yi5sZW5ndGgpcmV0dXJuITE7Y29uc3QgZD1hLmxlbmd0aDtjPWN8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7Zm9yKGxldCBlPTA7ZTxkO2UrKylpZighYyhhW2VdLGJbZV0pKXJldHVybiExO3JldHVybiEwfQpnb29nLmFycmF5LmVxdWFscz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9lcXVhbHM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTMoYSxiLGMpe2M9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7Y29uc3QgZD1NYXRoLm1pbihhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxkO2UrKyl7Y29uc3QgZj1jKGFbZV0sYltlXSk7aWYoMCE9ZilyZXR1cm4gZn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYS5sZW5ndGgsYi5sZW5ndGgpfWdvb2cuYXJyYXkuY29tcGFyZTM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYSxiKXtyZXR1cm4gYT5iPzE6YTxiPy0xOjB9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9kZWZhdWx0Q29tcGFyZTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlKGEsYil7cmV0dXJuLW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlKGEsYil9Z29vZy5hcnJheS5pbnZlcnNlRGVmYXVsdENvbXBhcmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHkoYSxiKXtyZXR1cm4gYT09PWJ9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZUVxdWFsaXR5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeUluc2VydChhLGIsYyl7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpO3JldHVybiAwPmM/KG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYiwtKGMrMSkpLCEwKTohMX1nb29nLmFycmF5LmJpbmFyeUluc2VydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlJbnNlcnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5UmVtb3ZlKGEsYixjKXtiPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaChhLGIsYyk7cmV0dXJuIDA8PWI/bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKTohMX1nb29nLmFycmF5LmJpbmFyeVJlbW92ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlSZW1vdmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldChhLGIsYyl7Y29uc3QgZD17fTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7Y29uc3QgZj1hW2VdLGc9Yi5jYWxsKGMsZixlLGEpO3ZvaWQgMCE9PWcmJihkW2ddfHwoZFtnXT1bXSkpLnB1c2goZil9cmV0dXJuIGR9Z29vZy5hcnJheS5idWNrZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldFRvTWFwKGEsYil7Y29uc3QgYz1uZXcgTWFwO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWFbZF0sZj1iKGUsZCxhKTtpZih2b2lkIDAhPT1mKXtsZXQgZz1jLmdldChmKTtnfHwoZz1bXSxjLnNldChmLGcpKTtnLnB1c2goZSl9fXJldHVybiBjfWdvb2cuYXJyYXkuYnVja2V0VG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0VG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3RvT2JqZWN0KGEsYixjKXtjb25zdCBkPXt9O21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYpe2RbYi5jYWxsKGMsZSxmLGEpXT1lfSk7cmV0dXJuIGR9Z29vZy5hcnJheS50b09iamVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b09iamVjdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b01hcChhLGIpe2NvbnN0IGM9bmV3IE1hcDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdO2Muc2V0KGIoZSxkLGEpLGUpfXJldHVybiBjfWdvb2cuYXJyYXkudG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JhbmdlKGEsYixjKXtjb25zdCBkPVtdO2xldCBlPTAsZj1hO2M9Y3x8MTt2b2lkIDAhPT1iJiYoZT1hLGY9Yik7aWYoMD5jKihmLWUpKXJldHVybltdO2lmKDA8Yylmb3IoYT1lO2E8ZjthKz1jKWQucHVzaChhKTtlbHNlIGZvcihhPWU7YT5mO2ErPWMpZC5wdXNoKGEpO3JldHVybiBkfWdvb2cuYXJyYXkucmFuZ2U9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmFuZ2U7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVwZWF0KGEsYil7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbZF09YTtyZXR1cm4gY31nb29nLmFycmF5LnJlcGVhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZXBlYXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZsYXR0ZW4oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXtjb25zdCBlPWFyZ3VtZW50c1tkXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7Zis9ODE5Mil7dmFyIGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoZSxmLGYrODE5Mik7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuLmFwcGx5KG51bGwsYyk7Zm9yKGxldCBnPTA7ZzxjLmxlbmd0aDtnKyspYi5wdXNoKGNbZ10pfWVsc2UgYi5wdXNoKGUpfXJldHVybiBifWdvb2cuYXJyYXkuZmxhdHRlbj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGUoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTthLmxlbmd0aCYmKGIlPWEubGVuZ3RoLDA8Yj9BcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShhLGEuc3BsaWNlKC1iLGIpKTowPmImJkFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGEsYS5zcGxpY2UoMCwtYikpKTtyZXR1cm4gYX1nb29nLmFycmF5LnJvdGF0ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGU7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW0oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9YiYmYjxhLmxlbmd0aCk7Z29vZy5hc3NlcnRzLmFzc2VydCgwPD1jJiZjPGEubGVuZ3RoKTtiPUFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYywwLGJbMF0pfWdvb2cuYXJyYXkubW92ZUl0ZW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3ppcChhKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bXTtjb25zdCBiPVtdO2xldCBjPWFyZ3VtZW50c1swXS5sZW5ndGg7Zm9yKHZhciBkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKylhcmd1bWVudHNbZF0ubGVuZ3RoPGMmJihjPWFyZ3VtZW50c1tkXS5sZW5ndGgpO2ZvcihkPTA7ZDxjO2QrKyl7Y29uc3QgZT1bXTtmb3IobGV0IGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7ZisrKWUucHVzaChhcmd1bWVudHNbZl1bZF0pO2IucHVzaChlKX1yZXR1cm4gYn1nb29nLmFycmF5LnppcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV96aXA7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZShhLGIpe2I9Ynx8TWF0aC5yYW5kb207Zm9yKGxldCBjPWEubGVuZ3RoLTE7MDxjO2MtLSl7Y29uc3QgZD1NYXRoLmZsb29yKGIoKSooYysxKSksZT1hW2NdO2FbY109YVtkXTthW2RdPWV9fQpnb29nLmFycmF5LnNodWZmbGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb3B5QnlJbmRleChhLGIpe2NvbnN0IGM9W107bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaChiLGZ1bmN0aW9uKGQpe2MucHVzaChhW2RdKX0pO3JldHVybiBjfWdvb2cuYXJyYXkuY29weUJ5SW5kZXg9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29weUJ5SW5kZXg7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0TWFwKGEsYixjKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0LmFwcGx5KFtdLG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X21hcChhLGIsYykpfWdvb2cuYXJyYXkuY29uY2F0TWFwPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbmNhdE1hcDtnb29nLmRvbS5hc3NlcnRzPXt9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbj1mdW5jdGlvbihhKXtpZihnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMpe3ZhciBiPWdvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93XyhhKTtiJiYoIWF8fCEoYSBpbnN0YW5jZW9mIGIuTG9jYXRpb24pJiZhIGluc3RhbmNlb2YgYi5FbGVtZW50KSYmZ29vZy5hc3NlcnRzLmZhaWwoIkFyZ3VtZW50IGlzIG5vdCBhIExvY2F0aW9uIChvciBhIG5vbi1FbGVtZW50IG1vY2spOyBnb3Q6ICVzIixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpfXJldHVybiBhfTsKZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXz1mdW5jdGlvbihhLGIpe2lmKGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyl7dmFyIGM9Z29vZy5kb20uYXNzZXJ0cy5nZXRXaW5kb3dfKGEpO2MmJiJ1bmRlZmluZWQiIT10eXBlb2YgY1tiXSYmKGEmJihhIGluc3RhbmNlb2YgY1tiXXx8IShhIGluc3RhbmNlb2YgYy5Mb2NhdGlvbnx8YSBpbnN0YW5jZW9mIGMuRWxlbWVudCkpfHxnb29nLmFzc2VydHMuZmFpbCgiQXJndW1lbnQgaXMgbm90IGEgJXMgKG9yIGEgbm9uLUVsZW1lbnQsIG5vbi1Mb2NhdGlvbiBtb2NrKTsgZ290OiAlcyIsYixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpKX1yZXR1cm4gYX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBbmNob3JFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxBbmNob3JFbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEJ1dHRvbkVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEJ1dHRvbkVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxMaW5rRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MTGlua0VsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxJbWFnZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEltYWdlRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MQXVkaW9FbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MVmlkZW9FbGVtZW50Iil9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxJbnB1dEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxUZXh0QXJlYUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFRleHRBcmVhRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTENhbnZhc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTENhbnZhc0VsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MRW1iZWRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxFbWJlZEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGb3JtRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MRm9ybUVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEZyYW1lRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTElGcmFtZUVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MT2JqZWN0RWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFNjcmlwdEVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFNjcmlwdEVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXz1mdW5jdGlvbihhKXtpZihnb29nLmlzT2JqZWN0KGEpKXRyeXtyZXR1cm4gYS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8YS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9Y2F0Y2goYil7cmV0dXJuIjxvYmplY3QgY291bGQgbm90IGJlIHN0cmluZ2lmaWVkPiJ9ZWxzZSByZXR1cm4gdm9pZCAwPT09YT8idW5kZWZpbmVkIjpudWxsPT09YT8ibnVsbCI6dHlwZW9mIGF9O2dvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93Xz1mdW5jdGlvbihhKXt0cnl7dmFyIGI9YSYmYS5vd25lckRvY3VtZW50LGM9YiYmKGIuZGVmYXVsdFZpZXd8fGIucGFyZW50V2luZG93KTtjPWN8fGdvb2cuZ2xvYmFsO2lmKGMuRWxlbWVudCYmYy5Mb2NhdGlvbilyZXR1cm4gY31jYXRjaChkKXt9cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zPXt9O2dvb2cuZnVuY3Rpb25zLmNvbnN0YW50PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhfX07Z29vZy5mdW5jdGlvbnMuRkFMU0U9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Z29vZy5mdW5jdGlvbnMuVFJVRT1mdW5jdGlvbigpe3JldHVybiEwfTtnb29nLmZ1bmN0aW9ucy5OVUxMPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zLlVOREVGSU5FRD1mdW5jdGlvbigpe307Z29vZy5mdW5jdGlvbnMuRU1QVFk9Z29vZy5mdW5jdGlvbnMuVU5ERUZJTkVEO2dvb2cuZnVuY3Rpb25zLmlkZW50aXR5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZnVuY3Rpb25zLmVycm9yPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3Rocm93IEVycm9yKGEpO319O2dvb2cuZnVuY3Rpb25zLmZhaWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgYTt9fTsKZ29vZy5mdW5jdGlvbnMubG9jaz1mdW5jdGlvbihhLGIpe2I9Ynx8MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwLGIpKX19O2dvb2cuZnVuY3Rpb25zLm50aD1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzW2FdfX07Z29vZy5mdW5jdGlvbnMucGFydGlhbFJpZ2h0PWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IGQ9dGhpcztkPT09Z29vZy5nbG9iYWwmJihkPXZvaWQgMCk7Y29uc3QgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2UucHVzaC5hcHBseShlLGMpO3JldHVybiBhLmFwcGx5KGQsZSl9fTsKZ29vZy5mdW5jdGlvbnMud2l0aFJldHVyblZhbHVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZnVuY3Rpb25zLnNlcXVlbmNlKGEsZ29vZy5mdW5jdGlvbnMuY29uc3RhbnQoYikpfTtnb29nLmZ1bmN0aW9ucy5lcXVhbFRvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiP2E9PWM6YT09PWN9fTtnb29nLmZ1bmN0aW9ucy5jb21wb3NlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hcmd1bWVudHMsZD1jLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZTtkJiYoZT1jW2QtMV0uYXBwbHkodGhpcyxhcmd1bWVudHMpKTtmb3IobGV0IGY9ZC0yOzA8PWY7Zi0tKWU9Y1tmXS5jYWxsKHRoaXMsZSk7cmV0dXJuIGV9fTsKZ29vZy5mdW5jdGlvbnMuc2VxdWVuY2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZDtmb3IobGV0IGU9MDtlPGM7ZSsrKWQ9YltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGR9fTtnb29nLmZ1bmN0aW9ucy5hbmQ9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtmb3IobGV0IGQ9MDtkPGM7ZCsrKWlmKCFiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMTtyZXR1cm4hMH19O2dvb2cuZnVuY3Rpb25zLm9yPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YXJndW1lbnRzLGM9Yi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKGxldCBkPTA7ZDxjO2QrKylpZihiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMDtyZXR1cm4hMX19Owpnb29nLmZ1bmN0aW9ucy5ub3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIWEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07Z29vZy5mdW5jdGlvbnMuY3JlYXRlPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oKXt9O2MucHJvdG90eXBlPWEucHJvdG90eXBlO2M9bmV3IGM7YS5hcHBseShjLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7cmV0dXJuIGN9O2dvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRT0hMDtnb29nLmZ1bmN0aW9ucy5jYWNoZVJldHVyblZhbHVlPWZ1bmN0aW9uKGEpe2xldCBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWdvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRSlyZXR1cm4gYSgpO2J8fChjPWEoKSxiPSEwKTtyZXR1cm4gY319O2dvb2cuZnVuY3Rpb25zLm9uY2U9ZnVuY3Rpb24oYSl7bGV0IGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXtjb25zdCBjPWI7Yj1udWxsO2MoKX19fTsKZ29vZy5mdW5jdGlvbnMuZGVib3VuY2U9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTA7cmV0dXJuIGZ1bmN0aW9uKGUpe2dvb2cuZ2xvYmFsLmNsZWFyVGltZW91dChkKTtjb25zdCBmPWFyZ3VtZW50cztkPWdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmFwcGx5KGMsZil9LGIpfX07Z29vZy5mdW5jdGlvbnMudGhyb3R0bGU9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTAsZT0hMSxmPVtdO2NvbnN0IGc9ZnVuY3Rpb24oKXtkPTA7ZSYmKGU9ITEsaCgpKX0saD1mdW5jdGlvbigpe2Q9Z29vZy5nbG9iYWwuc2V0VGltZW91dChnLGIpO2xldCBrPWY7Zj1bXTthLmFwcGx5KGMsayl9O3JldHVybiBmdW5jdGlvbihrKXtmPWFyZ3VtZW50cztkP2U9ITA6aCgpfX07Cmdvb2cuZnVuY3Rpb25zLnJhdGVMaW1pdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9MDtjb25zdCBlPWZ1bmN0aW9uKCl7ZD0wfTtyZXR1cm4gZnVuY3Rpb24oZil7ZHx8KGQ9Z29vZy5nbG9iYWwuc2V0VGltZW91dChlLGIpLGEuYXBwbHkoYyxhcmd1bWVudHMpKX19O2dvb2cuZnVuY3Rpb25zLmlzRnVuY3Rpb249YT0+ImZ1bmN0aW9uIj09PXR5cGVvZiBhO2dvb2cuc3RyaW5nPXt9O2dvb2cuc3RyaW5nLlR5cGVkU3RyaW5nPWZ1bmN0aW9uKCl7fTtnb29nLnN0cmluZy5Db25zdD1mdW5jdGlvbihhLGIpe3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXz1hPT09Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8mJmJ8fCIiO3RoaXMuU1RSSU5HX0NPTlNUX1RZUEVfTUFSS0VSX19HT09HX1NUUklOR19TRUNVUklUWV9QUklWQVRFXz1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl99O2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwO2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlX307Cmdvb2cuREVCVUcmJihnb29nLnN0cmluZy5Db25zdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ29uc3R7Iit0aGlzLnN0cmluZ0NvbnN0VmFsdWVXaXRoU2VjdXJpdHlDb250cmFjdF9fZ29vZ1N0cmluZ1NlY3VyaXR5UHJpdmF0ZV8rIn0ifSk7Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuc3RyaW5nLkNvbnN0JiZhLlNUUklOR19DT05TVF9UWVBFX01BUktFUl9fR09PR19TVFJJTkdfU0VDVVJJVFlfUFJJVkFURV89PT1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl8pcmV0dXJuIGEuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgQ29uc3QsIGdvdCAnIithKyInIik7cmV0dXJuInR5cGVfZXJyb3I6Q29uc3QifTsKZ29vZy5zdHJpbmcuQ29uc3QuZnJvbT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IGdvb2cuc3RyaW5nLkNvbnN0KGdvb2cuc3RyaW5nLkNvbnN0LkdPT0dfU1RSSU5HX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfLGEpfTtnb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl89e307Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Z29vZy5zdHJpbmcuQ29uc3QuRU1QVFk9Z29vZy5zdHJpbmcuQ29uc3QuZnJvbSgiIik7Z29vZy5odG1sPXt9O2dvb2cuaHRtbC50cnVzdGVkdHlwZXM9e307Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRT1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FKyIjaHRtbCI6IiI7Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oKXtpZighZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV8mJihnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV89Z29vZy5jcmVhdGVUcnVzdGVkVHlwZXNQb2xpY3koZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSkpO3JldHVybiBnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV99O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFPXt9OwpjbGFzcyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV89Yj09PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO3JldHVybiAwPT09YS5sZW5ndGg/bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBmcm9tSnNvbihhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnN0cmluZ2lmeV8oYSkpfWdldFR5cGVkU3RyaW5nVmFsdWUoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXN0YXRpYyB1bndyYXAoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYSkudG9TdHJpbmcoKX1zdGF0aWMgdW53cmFwVHJ1c3RlZFNjcmlwdChhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdClyZXR1cm4gYS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTY3JpcHQsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVNjcmlwdCJ9c3RhdGljIHN0cmluZ2lmeV8oYSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpLnJlcGxhY2UoLzwvZywiXFx4M2MiKX1zdGF0aWMgY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVTY3JpcHQoYSk6CmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdChhLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX19bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk9ZnVuY3Rpb24oKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCIiKX0oKTtnb29nLmh0bWwuU2FmZVNjcmlwdD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdDtnb29nLmZzPXt9O2dvb2cuZnMudXJsPXt9O2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0XygpLmNyZWF0ZU9iamVjdFVSTChhKX07Z29vZy5mcy51cmwucmV2b2tlT2JqZWN0VXJsPWZ1bmN0aW9uKGEpe2dvb2cuZnMudXJsLmdldFVybE9iamVjdF8oKS5yZXZva2VPYmplY3RVUkwoYSl9O2dvb2cuZnMudXJsLlVybE9iamVjdF89ZnVuY3Rpb24oKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLnJldm9rZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9Owpnb29nLmZzLnVybC5nZXRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7Y29uc3QgYT1nb29nLmZzLnVybC5maW5kVXJsT2JqZWN0XygpO2lmKG51bGwhPWEpcmV0dXJuIGE7dGhyb3cgRXJyb3IoIlRoaXMgYnJvd3NlciBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBibG9iIFVSTHMiKTt9O2dvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PWdvb2cuZ2xvYmFsLlVSTCYmdm9pZCAwIT09Z29vZy5nbG9iYWwuVVJMLmNyZWF0ZU9iamVjdFVSTD9nb29nLmdsb2JhbC5VUkw6dm9pZCAwIT09Z29vZy5nbG9iYWwuY3JlYXRlT2JqZWN0VVJMP2dvb2cuZ2xvYmFsOm51bGx9O2dvb2cuZnMudXJsLmJyb3dzZXJTdXBwb3J0c09iamVjdFVybHM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9Z29vZy5mcy51cmwuZmluZFVybE9iamVjdF8oKX07Z29vZy5mcy5ibG9iPXt9O2dvb2cuZnMuYmxvYi5nZXRCbG9iPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cuZ2xvYmFsLkJsb2JCdWlsZGVyfHxnb29nLmdsb2JhbC5XZWJLaXRCbG9iQnVpbGRlcjtpZih2b2lkIDAhPT1iKXtiPW5ldyBiO2ZvcihsZXQgYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYi5hcHBlbmQoYXJndW1lbnRzW2NdKTtyZXR1cm4gYi5nZXRCbG9iKCl9cmV0dXJuIGdvb2cuZnMuYmxvYi5nZXRCbG9iV2l0aFByb3BlcnRpZXMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9Owpnb29nLmZzLmJsb2IuZ2V0QmxvYldpdGhQcm9wZXJ0aWVzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1nb29nLmdsb2JhbC5CbG9iQnVpbGRlcnx8Z29vZy5nbG9iYWwuV2ViS2l0QmxvYkJ1aWxkZXI7aWYodm9pZCAwIT09ZCl7ZD1uZXcgZDtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKylkLmFwcGVuZChhW2VdLGMpO3JldHVybiBkLmdldEJsb2IoYil9aWYodm9pZCAwIT09Z29vZy5nbG9iYWwuQmxvYilyZXR1cm4gZD17fSxiJiYoZC50eXBlPWIpLGMmJihkLmVuZGluZ3M9YyksbmV3IEJsb2IoYSxkKTt0aHJvdyBFcnJvcigiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IGNyZWF0aW5nIEJsb2JzIik7fTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfP2E6IiJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfKyIifX07Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuY2xvbmVXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYil7dmFyIGM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAodGhpcyk7Yz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLlVSTF9QQVJBTV9QQVJTRVJfLmV4ZWMoYyk7dmFyIGQ9Y1szXXx8IiI7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoY1sxXStnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnN0cmluZ2lmeVBhcmFtc18oIj8iLGNbMl18fCIiLGEpK2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuc3RyaW5naWZ5UGFyYW1zXygiIyIsZCxiKSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRTY3JpcHRVUkwoYSkudG9TdHJpbmcoKX07Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgVHJ1c3RlZFJlc291cmNlVXJsLCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybCJ9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdD1mdW5jdGlvbihhLGIpe3ZhciBjPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKTtpZighZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5CQVNFX1VSTF8udGVzdChjKSl0aHJvdyBFcnJvcigiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiAiK2MpO2E9Yy5yZXBsYWNlKGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuRk9STUFUX01BUktFUl8sZnVuY3Rpb24oZCxlKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZSkpdGhyb3cgRXJyb3IoJ0ZvdW5kIG1hcmtlciwgIicrZSsnIiwgaW4gZm9ybWF0IHN0cmluZywgIicrYysnIiwgYnV0IG5vIHZhbGlkIGxhYmVsIG1hcHBpbmcgZm91bmQgaW4gYXJnczogJytKU09OLnN0cmluZ2lmeShiKSk7ZD1iW2VdO3JldHVybiBkIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGQpOgplbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGQpKX0pO3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmNyZWF0ZVRydXN0ZWRSZXNvdXJjZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkZPUk1BVF9NQVJLRVJfPS8leyhcdyspfS9nO2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQkFTRV9VUkxfPVJlZ0V4cCgiXigoaHR0cHM6KT8vL1swLTlhLXouOltcXF0tXSsvfC9bXi9cXFxcXXxbXjovXFxcXCVdKy98W146L1xcXFwlXSpbPyNdfGFib3V0OmJsYW5rIykiLCJpIik7Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5VUkxfUEFSQU1fUEFSU0VSXz0vXihbXj8jXSopKFw/W14jXSopPygjW1xzXFNdKik/LzsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5mb3JtYXRXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdChhLGIpLmNsb25lV2l0aFBhcmFtcyhjLGQpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudHM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1nb29nLnN0cmluZy5Db25zdC51bndyYXAoYVtjXSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21TYWZlU2NyaXB0PWZ1bmN0aW9uKGEpe2E9Z29vZy5mcy5ibG9iLmdldEJsb2JXaXRoUHJvcGVydGllcyhbbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQudW53cmFwKGEpXSwidGV4dC9qYXZhc2NyaXB0Iik7YT1nb29nLmZzLnVybC5jcmVhdGVPYmplY3RVcmwoYSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmdldFBvbGljeVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgpO2E9Yj9iLmNyZWF0ZVNjcmlwdFVSTChhKTphO3JldHVybiBuZXcgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybChhLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8pfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1jKXJldHVybiBiO2lmKCJzdHJpbmciPT09dHlwZW9mIGMpcmV0dXJuIGM/YStlbmNvZGVVUklDb21wb25lbnQoYyk6IiI7Zm9yKHZhciBkIGluIGMpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkpe3ZhciBlPWNbZF07ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdO251bGwhPWcmJihifHwoYj1hKSxiKz0oYi5sZW5ndGg+YS5sZW5ndGg/IiYiOiIiKStlbmNvZGVVUklDb21wb25lbnQoZCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZykpKX19cmV0dXJuIGJ9O2dvb2cuc3RyaW5nLmludGVybmFsPXt9O2dvb2cuc3RyaW5nLmludGVybmFsLnN0YXJ0c1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09YS5sYXN0SW5kZXhPZihiLDApfTtnb29nLnN0cmluZy5pbnRlcm5hbC5lbmRzV2l0aD1mdW5jdGlvbihhLGIpe2NvbnN0IGM9YS5sZW5ndGgtYi5sZW5ndGg7cmV0dXJuIDA8PWMmJmEuaW5kZXhPZihiLGMpPT1jfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWZ1bmN0aW9uKGEsYil7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUoYixhLnNsaWNlKDAsYi5sZW5ndGgpKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlQ29tcGFyZShiLGEuc2xpY2UoYS5sZW5ndGgtYi5sZW5ndGgpKX07Cmdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVxdWFscz1mdW5jdGlvbihhLGIpe3JldHVybiBhLnRvTG93ZXJDYXNlKCk9PWIudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKiQvLnRlc3QoYSl9O2dvb2cuc3RyaW5nLmludGVybmFsLnRyaW09Z29vZy5UUlVTVEVEX1NJVEUmJlN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihhKXtyZXR1cm4gYS50cmltKCl9OmZ1bmN0aW9uKGEpe3JldHVybi9eW1xzXHhhMF0qKFtcc1xTXSo/KVtcc1x4YTBdKiQvLmV4ZWMoYSlbMV19O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXthPVN0cmluZyhhKS50b0xvd2VyQ2FzZSgpO2I9U3RyaW5nKGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGE8Yj8tMTphPT1iPzA6MX07Cmdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csYj8iPGJyIC8+IjoiPGJyPiIpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuaHRtbEVzY2FwZT1mdW5jdGlvbihhLGIpe2lmKGIpYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXywiJmx0OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfLCImZ3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5RVU9UX1JFXywiJnF1b3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTlVMTF9SRV8sIiYjMDsiKTtlbHNle2lmKCFnb29nLnN0cmluZy5pbnRlcm5hbC5BTExfUkVfLnRlc3QoYSkpcmV0dXJuIGE7LTEhPWEuaW5kZXhPZigiJiIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKSk7LTEhPWEuaW5kZXhPZigiPCIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTFRfUkVfLAoiJmx0OyIpKTstMSE9YS5pbmRleE9mKCI+IikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5HVF9SRV8sIiZndDsiKSk7LTEhPWEuaW5kZXhPZignIicpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuUVVPVF9SRV8sIiZxdW90OyIpKTstMSE9YS5pbmRleE9mKCInIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpKTstMSE9YS5pbmRleE9mKCJceDAwIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXywiJiMwOyIpKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXz0vJi9nO2dvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXz0vPC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkdUX1JFXz0vPi9nO2dvb2cuc3RyaW5nLmludGVybmFsLlFVT1RfUkVfPS8iL2c7Z29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXz0vJy9nOwpnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXz0vXHgwMC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV89L1tceDAwJjw+IiddLztnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybi0xIT1hLmluZGV4T2YoYil9O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEudG9Mb3dlckNhc2UoKSxiLnRvTG93ZXJDYXNlKCkpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zPWZ1bmN0aW9uKGEsYil7dmFyIGM9MDthPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW0oU3RyaW5nKGEpKS5zcGxpdCgiLiIpO2I9Z29vZy5zdHJpbmcuaW50ZXJuYWwudHJpbShTdHJpbmcoYikpLnNwbGl0KCIuIik7Y29uc3QgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBnPTA7MD09YyYmZzxkO2crKyl7dmFyIGU9YVtnXXx8IiIsZj1iW2ddfHwiIjtkb3tlPS8oXGQqKShcRCopKC4qKS8uZXhlYyhlKXx8WyIiLCIiLCIiLCIiXTtmPS8oXGQqKShcRCopKC4qKS8uZXhlYyhmKXx8WyIiLCIiLCIiLCIiXTtpZigwPT1lWzBdLmxlbmd0aCYmMD09ZlswXS5sZW5ndGgpYnJlYWs7Yz0wPT1lWzFdLmxlbmd0aD8wOnBhcnNlSW50KGVbMV0sMTApO2NvbnN0IGg9MD09ZlsxXS5sZW5ndGg/MDpwYXJzZUludChmWzFdLDEwKTtjPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oYyxoKXx8Cmdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oMD09ZVsyXS5sZW5ndGgsMD09ZlsyXS5sZW5ndGgpfHxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlRWxlbWVudHNfKGVbMl0sZlsyXSk7ZT1lWzNdO2Y9ZlszXX13aGlsZSgwPT1jKX1yZXR1cm4gY307Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXz1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH07Z29vZy5odG1sLlNhZmVVcmw9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz9hOiIifXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX19O2dvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc9ImFib3V0OmludmFsaWQjekNsb3N1cmV6Ijtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuZ2V0VHlwZWRTdHJpbmdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9Owpnb29nLmh0bWwuU2FmZVVybC51bndyYXA9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsJiZhLmNvbnN0cnVjdG9yPT09Z29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV87Z29vZy5hc3NlcnRzLmZhaWwoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVVcmwsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVVybCJ9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKSl9Owpnb29nLmh0bWwuU0FGRV9NSU1FX1RZUEVfUEFUVEVSTl89UmVnRXhwKCdeKD86YXVkaW8vKD86M2dwcDJ8M2dwcHxhYWN8TDE2fG1pZGl8bXAzfG1wNHxtcGVnfG9nYXxvZ2d8b3B1c3x4LW00YXx4LW1hdHJvc2thfHgtd2F2fHdhdnx3ZWJtKXxmb250L1xcdyt8aW1hZ2UvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwfHgtaWNvbnxoZWljfGhlaWYpfHZpZGVvLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtfHF1aWNrdGltZXx4LW1hdHJvc2thKSkoPzo7XFx3Kz0oPzpcXHcrfCJbXFx3Oyw9IF0rIikpKiQnLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuaXNTYWZlTWltZVR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuZnJvbUJsb2I9ZnVuY3Rpb24oYSl7YT1nb29nLmh0bWwuU2FmZVVybC5pc1NhZmVNaW1lVHlwZShhLnR5cGUpP2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybChhKTpnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLnJldm9rZU9iamVjdFVybD1mdW5jdGlvbihhKXthPWEuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpO2EhPT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HJiZnb29nLmZzLnVybC5yZXZva2VPYmplY3RVcmwoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tTWVkaWFTb3VyY2U9ZnVuY3Rpb24oYSl7Z29vZy5hc3NlcnRzLmFzc2VydCgiTWVkaWFTb3VyY2UiaW4gZ29vZy5nbG9iYWwsIk5vIHN1cHBvcnQgZm9yIE1lZGlhU291cmNlIik7YT1hIGluc3RhbmNlb2YgTWVkaWFTb3VyY2U/Z29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsKGEpOmdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLkRBVEFfVVJMX1BBVFRFUk5fPS9eZGF0YTooLiopO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaTsKZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmw9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7YT1hLnJlcGxhY2UoLyglMEF8JTBEKS9nLCIiKTtyZXR1cm4gYS5tYXRjaChnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl8pP2dvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKTpudWxsfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tRGF0YVVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmwoYSl8fGdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19VUkx9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21UZWxVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ0ZWw6Iil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXz1SZWdFeHAoIl5zaXBbc10/OlsrYS16MC05Xy4hJCUmJypcXC89XmB7fH1+LV0rQChbYS16MC05LV0rXFwuKStbYS16MC05XXsyLDYzfSQiLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNpcFVybD1mdW5jdGlvbihhKXtnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXy50ZXN0KGRlY29kZVVSSUNvbXBvbmVudChhKSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21GYWNlYm9va01lc3NlbmdlclVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsImZiLW1lc3NlbmdlcjovL3NoYXJlIil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tV2hhdHNBcHBVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ3aGF0c2FwcDovL3NlbmQiKXx8KGE9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNtc1VybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNtczoiKSYmZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfKGEpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5kZXhPZigiIyIpOzA8YiYmKGE9YS5zdWJzdHJpbmcoMCxiKSk7Yj1hLm1hdGNoKC9bPyZdYm9keT0vZ2kpO2lmKCFiKXJldHVybiEwO2lmKDE8Yi5sZW5ndGgpcmV0dXJuITE7YT1hLm1hdGNoKC9bPyZdYm9keT0oW14mXSopLylbMV07aWYoIWEpcmV0dXJuITA7dHJ5e2RlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChjKXtyZXR1cm4hMX1yZXR1cm4vXig/OlthLXowLTlcLV8ufl18JVswLTlhLWZdezJ9KSskL2kudGVzdChhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNzaFVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNzaDovLyIpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVDaHJvbWVFeHRlbnNpb25Vcmw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVFeHRlbnNpb25VcmxfKC9eY2hyb21lLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVGaXJlZm94RXh0ZW5zaW9uVXJsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXygvXm1vei1leHRlbnNpb246XC9cLyhbXlwvXSspXC8vLGEsYil9O2dvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRWRnZUV4dGVuc2lvblVybD1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUV4dGVuc2lvblVybF8oL15tcy1icm93c2VyLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Cmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXz1mdW5jdGlvbihhLGIsYyl7KGE9YS5leGVjKGIpKT8oYT1hWzFdLC0xPT0oYyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0P1tnb29nLnN0cmluZy5Db25zdC51bndyYXAoYyldOmMubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBnb29nLnN0cmluZy5Db25zdC51bndyYXAoZCl9KSkuaW5kZXhPZihhKSYmKGI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORykpOmI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tVHJ1c3RlZFJlc291cmNlVXJsPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYSkpfTsKZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pO2dvb2cuaHRtbC5TYWZlVXJsLlNBRkVfVVJMX1BBVFRFUk49Z29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fO2dvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClyZXR1cm4gYTthPSJvYmplY3QiPT10eXBlb2YgYSYmYS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2EuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhhKTtyZXR1cm4gZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fLnRlc3QoYSk/Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpOmdvb2cuaHRtbC5TYWZlVXJsLnRyeUZyb21EYXRhVXJsKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplKGEpfHxnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfVVJMfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQ9ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7aWYoYiYmL15kYXRhOi9pLnRlc3QoYSkmJihiPWdvb2cuaHRtbC5TYWZlVXJsLmZyb21EYXRhVXJsKGEpLGIuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpPT1hKSlyZXR1cm4gYjtnb29nLmFzc2VydHMuYXNzZXJ0KGdvb2cuaHRtbC5TQUZFX1VSTF9QQVRURVJOXy50ZXN0KGEpLCIlcyBkb2VzIG5vdCBtYXRjaCB0aGUgc2FmZSBVUkwgcGF0dGVybiIsYSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz17fTtnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBnb29nLmh0bWwuU2FmZVVybChhLGdvb2cuaHRtbC5TYWZlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfKX07Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1VSTD1nb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7Z29vZy5odG1sLlNhZmVVcmwuQUJPVVRfQkxBTks9Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJhYm91dDpibGFuayIpO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlV3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT9hOiIiO3RoaXMuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMH1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKCgwLGdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoKShhLCI7IiksYExhc3QgY2hhcmFjdGVyIG9mIHN0eWxlIHN0cmluZyBpcyBub3QgJzsnOiAke2F9YCk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsCiI6IiksIlN0eWxlIHN0cmluZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lICc6JywgdG8gc3BlY2lmeSBhIFwibmFtZTogdmFsdWVcIiBwYWlyOiAiK2EpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV99dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlJiZhLmNvbnN0cnVjdG9yPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV87CigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZVN0eWxlLCBnb3QgJyR7YX1gKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVN0eWxlIn1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlKGEpe2xldCBiPSIiO2ZvcihsZXQgYyBpbiBhKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpKXtpZighL15bLV9hLXpBLVowLTldKyQvLnRlc3QoYykpdGhyb3cgRXJyb3IoYE5hbWUgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05XSwgZ290OiAke2N9YCk7bGV0IGQ9YVtjXTtudWxsIT1kJiYKKGQ9QXJyYXkuaXNBcnJheShkKT9kLm1hcChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUpLmpvaW4oIiAiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoZCksYis9YCR7Y306JHtkfTtgKX1yZXR1cm4gYj9tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYik6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZfXN0YXRpYyBjb25jYXQoYSl7bGV0IGI9IiI7Y29uc3QgYz1kPT57QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goYyk6Yis9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChkKX07QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhcmd1bWVudHMsYyk7CnJldHVybiBiP21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuRU1QVFl9fW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HPSJ6Q2xvc3VyZXoiOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKXJldHVybid1cmwoIicrZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLnJlcGxhY2UoLzwvZywiJTNjIikucmVwbGFjZSgvW1xcIl0vZywiXFwkJiIpKyciKSc7YT1hIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpOm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX3Nhbml0aXplUHJvcGVydHlWYWx1ZVN0cmluZyhTdHJpbmcoYSkpO2lmKC9bezt9XS8udGVzdChhKSl0aHJvdyBuZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiVmFsdWUgZG9lcyBub3QgYWxsb3cgW3s7fV0sIGdvdDogJXMuIixbYV0pO3JldHVybiBhfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWVTdHJpbmcoYSl7Y29uc3QgYj1hLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfVVJMX1JFLCJ1cmwiKTtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRS50ZXN0KGIpKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT01NRU5UX1JFLnRlc3QoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgZGlzYWxsb3dzIGNvbW1lbnRzLCBnb3Q6ICR7YX1gKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORzsKaWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkUXVvdGVzKGEpKXJldHVybigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgU3RyaW5nIHZhbHVlIHJlcXVpcmVzIGJhbGFuY2VkIHF1b3RlcywgZ290OiAke2F9YCksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkc7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkU3F1YXJlQnJhY2tldHMoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKCJTdHJpbmcgdmFsdWUgcmVxdWlyZXMgYmFsYW5jZWQgc3F1YXJlIGJyYWNrZXRzIGFuZCBvbmUgaWRlbnRpZmllciBwZXIgcGFpciBvZiBicmFja2V0cywgZ290OiAiK2EpLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HfWVsc2UgcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgYWxsb3dzIG9ubHkgJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfWArCiIgYW5kIHNpbXBsZSBmdW5jdGlvbnMsIGdvdDogIithKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRRdW90ZXMoYSl7bGV0IGI9ITAsYz0hMDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hLmNoYXJBdChkKTsiJyI9PWUmJmM/Yj0hYjonIic9PWUmJmImJihjPSFjKX1yZXR1cm4gYiYmY30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRTcXVhcmVCcmFja2V0cyhhKXtsZXQgYj0hMDtjb25zdCBjPS9eWy1fYS16QS1aMC05XSQvO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWEuY2hhckF0KGQpO2lmKCJdIj09ZSl7aWYoYilyZXR1cm4hMTtiPSEwfWVsc2UgaWYoIlsiPT1lKXtpZighYilyZXR1cm4hMTtiPSExfWVsc2UgaWYoIWImJiFjLnRlc3QoZSkpcmV0dXJuITF9cmV0dXJuIGJ9CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1ZBTFVFX0FMTE9XRURfQ0hBUlM9IlstLC5cIiclXyEjLyBhLXpBLVowLTlcXFtcXF1dIixtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRT1uZXcgUmVnRXhwKGBeJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfStcJGApLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1VSTF9SRT1SZWdFeHAoIlxcYih1cmxcXChbIFx0XG5dKikoJ1sgLSYoLVxcW1xcXS1+XSonfFwiWyAhIy1cXFtcXF0tfl0qXCJ8WyEjLSYqLVxcW1xcXS1+XSopKFsgXHRcbl0qXFwpKSIsImciKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUz0iY2FsYyBjdWJpYy1iZXppZXIgZml0LWNvbnRlbnQgaHNsIGhzbGEgbGluZWFyLWdyYWRpZW50IG1hdHJpeCBtaW5tYXggcmFkaWFsLWdyYWRpZW50IHJlcGVhdCByZ2IgcmdiYSAocm90YXRlfHNjYWxlfHRyYW5zbGF0ZSkoWHxZfFp8M2QpPyBzdGVwcyB2YXIiLnNwbGl0KCIgIiksCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0ZVTkNUSU9OU19SRT1uZXcgUmVnRXhwKCJcXGIoIittb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUy5qb2luKCJ8IikrIilcXChbLSsqLzAtOWEtekEtWi4lI1xcW1xcXSwgXStcXCkiLCJnIiksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09NTUVOVF9SRT0vXC9cKi87ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl7cmV0dXJuIGEucmVwbGFjZShtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9VUkxfUkUsKGIsYyxkLGUpPT57bGV0IGY9IiI7ZD1kLnJlcGxhY2UoL14oWyciXSkoLiopXDEkLywoZyxoLGspPT57Zj1oO3JldHVybiBrfSk7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShkKS5nZXRUeXBlZFN0cmluZ1ZhbHVlKCk7cmV0dXJuIGMrZitiK2YrZX0pfQpnb29nLmh0bWwuU2FmZVN0eWxlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZTtnb29nLm9iamVjdD17fTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZm9yRWFjaChhLGIsYyl7Zm9yKGNvbnN0IGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbHRlcihhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWIuY2FsbChjLGFbZV0sZSxhKSYmKGRbZV09YVtlXSk7cmV0dXJuIGR9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcChhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWRbZV09Yi5jYWxsKGMsYVtlXSxlLGEpO3JldHVybiBkfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lKGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V2ZXJ5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKCFiLmNhbGwoYyxhW2RdLGQsYSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldENvdW50KGEpe2xldCBiPTA7Zm9yKGNvbnN0IGMgaW4gYSliKys7cmV0dXJuIGJ9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldEFueUtleShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhhLGIpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZShhLGIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0VmFsdWVzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1kO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5cyhhLGIpe3ZhciBjPWdvb2cuaXNBcnJheUxpa2UoYik7Y29uc3QgZD1jP2I6YXJndW1lbnRzO2ZvcihjPWM/MDoxO2M8ZC5sZW5ndGg7YysrKXtpZihudWxsPT1hKXJldHVybjthPWFbZFtjXV19cmV0dXJuIGF9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NvbnRhaW5zS2V5KGEsYil7cmV0dXJuIG51bGwhPT1hJiZiIGluIGF9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWluc1ZhbHVlKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZihhW2NdPT1iKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maW5kS2V5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4gZH1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZFZhbHVlKGEsYixjKXtyZXR1cm4oYj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleShhLGIsYykpJiZhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9pc0VtcHR5KGEpe2Zvcihjb25zdCBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NsZWFyKGEpe2Zvcihjb25zdCBiIGluIGEpZGVsZXRlIGFbYl19CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9yZW1vdmUoYSxiKXtsZXQgYzsoYz1iIGluIGEpJiZkZWxldGUgYVtiXTtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfYWRkKGEsYixjKXtpZihudWxsIT09YSYmYiBpbiBhKXRocm93IEVycm9yKGBUaGUgb2JqZWN0IGFscmVhZHkgY29udGFpbnMgdGhlIGtleSAiJHtifSJgKTttb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0KGEsYixjKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0KGEsYixjKXtyZXR1cm4gbnVsbCE9PWEmJmIgaW4gYT9hW2JdOmN9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldChhLGIsYyl7YVtiXT1jfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zZXRJZlVuZGVmaW5lZChhLGIsYyl7cmV0dXJuIGIgaW4gYT9hW2JdOmFbYl09Y30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0KGEsYixjKXtpZihiIGluIGEpcmV0dXJuIGFbYl07Yz1jKCk7cmV0dXJuIGFbYl09Y31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXF1YWxzKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZighKGMgaW4gYil8fGFbY10hPT1iW2NdKXJldHVybiExO2Zvcihjb25zdCBjIGluIGIpaWYoIShjIGluIGEpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jbG9uZShhKXtjb25zdCBiPXt9O2Zvcihjb25zdCBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdW5zYWZlQ2xvbmUoYSl7aWYoIWF8fCJvYmplY3QiIT09dHlwZW9mIGEpcmV0dXJuIGE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhLmNsb25lKXJldHVybiBhLmNsb25lKCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgTWFwJiZhIGluc3RhbmNlb2YgTWFwKXJldHVybiBuZXcgTWFwKGEpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFNldCYmYSBpbnN0YW5jZW9mIFNldClyZXR1cm4gbmV3IFNldChhKTtpZihhIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2NvbnN0IGI9QXJyYXkuaXNBcnJheShhKT9bXToiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyfHwiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlld3x8IUFycmF5QnVmZmVyLmlzVmlldyhhKXx8YSBpbnN0YW5jZW9mIERhdGFWaWV3P3t9Om5ldyBhLmNvbnN0cnVjdG9yKGEubGVuZ3RoKTtmb3IoY29uc3QgYyBpbiBhKWJbY109Cm1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZShhW2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlKGEpe2NvbnN0IGI9e307Zm9yKGNvbnN0IGMgaW4gYSliW2FbY11dPWM7cmV0dXJuIGJ9Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFM9ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V4dGVuZChhLGIpe2xldCBjLGQ7Zm9yKGxldCBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKGxldCBmPTA7Zjxtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfUFJPVE9UWVBFX0ZJRUxEUy5sZW5ndGg7ZisrKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFNbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZShhKXtjb25zdCBiPWFyZ3VtZW50cy5sZW5ndGg7aWYoMT09YiYmQXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlLmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtpZihiJTIpdGhyb3cgRXJyb3IoIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzIik7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCs9MiljW2FyZ3VtZW50c1tkXV09YXJndW1lbnRzW2QrMV07cmV0dXJuIGN9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jcmVhdGVTZXQoYSl7Y29uc3QgYj1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PWImJkFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldC5hcHBseShudWxsLGFyZ3VtZW50c1swXSk7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbYXJndW1lbnRzW2RdXT0hMDtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldyhhKXtsZXQgYj1hO09iamVjdC5pc0Zyb3plbiYmIU9iamVjdC5pc0Zyb3plbihhKSYmKGI9T2JqZWN0LmNyZWF0ZShhKSxPYmplY3QuZnJlZXplKGIpKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNJbW11dGFibGVWaWV3KGEpe3JldHVybiEhT2JqZWN0LmlzRnJvemVuJiZPYmplY3QuaXNGcm96ZW4oYSl9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzKGEsYixjKXtpZighYSlyZXR1cm5bXTtpZighT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fCFPYmplY3QuZ2V0UHJvdG90eXBlT2YpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpO2NvbnN0IGQ9e307Zm9yKDthJiYoYSE9PU9iamVjdC5wcm90b3R5cGV8fGIpJiYoYSE9PUZ1bmN0aW9uLnByb3RvdHlwZXx8Yyk7KXtjb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGEpO2ZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7ZisrKWRbZVtmXV09ITA7YT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGQpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0U3VwZXJDbGFzcyhhKXtyZXR1cm4oYT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYS5wcm90b3R5cGUpKSYmYS5jb25zdHJ1Y3Rvcn1nb29nLm9iamVjdC5hZGQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2FkZDtnb29nLm9iamVjdC5jbGVhcj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY2xlYXI7Z29vZy5vYmplY3QuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2Nsb25lO2dvb2cub2JqZWN0LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucztnb29nLm9iamVjdC5jb250YWluc0tleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNLZXk7Z29vZy5vYmplY3QuY29udGFpbnNWYWx1ZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZTtnb29nLm9iamVjdC5jcmVhdGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZTsKZ29vZy5vYmplY3QuY3JlYXRlSW1tdXRhYmxlVmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5jcmVhdGVTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldDtnb29nLm9iamVjdC5lcXVhbHM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2VxdWFscztnb29nLm9iamVjdC5ldmVyeT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXZlcnk7Z29vZy5vYmplY3QuZXh0ZW5kPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9leHRlbmQ7Z29vZy5vYmplY3QuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maWx0ZXI7Z29vZy5vYmplY3QuZmluZEtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleTtnb29nLm9iamVjdC5maW5kVmFsdWU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbmRWYWx1ZTtnb29nLm9iamVjdC5mb3JFYWNoPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9mb3JFYWNoOwpnb29nLm9iamVjdC5nZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldDtnb29nLm9iamVjdC5nZXRBbGxQcm9wZXJ0eU5hbWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzO2dvb2cub2JqZWN0LmdldEFueUtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0QW55S2V5O2dvb2cub2JqZWN0LmdldEFueVZhbHVlPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZTtnb29nLm9iamVjdC5nZXRDb3VudD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0Q291bnQ7Z29vZy5vYmplY3QuZ2V0S2V5cz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0S2V5cztnb29nLm9iamVjdC5nZXRTdXBlckNsYXNzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRTdXBlckNsYXNzO2dvb2cub2JqZWN0LmdldFZhbHVlQnlLZXlzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5czsKZ29vZy5vYmplY3QuZ2V0VmFsdWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZXM7Z29vZy5vYmplY3QuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNFbXB0eTtnb29nLm9iamVjdC5pc0ltbXV0YWJsZVZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2lzSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5tYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcDtnb29nLm9iamVjdC5yZW1vdmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3JlbW92ZTtnb29nLm9iamVjdC5zZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldDtnb29nLm9iamVjdC5zZXRJZlVuZGVmaW5lZD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0SWZVbmRlZmluZWQ7Z29vZy5vYmplY3Quc2V0V2l0aFJldHVyblZhbHVlSWZOb3RTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0Owpnb29nLm9iamVjdC5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lO2dvb2cub2JqZWN0LnRyYW5zcG9zZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlO2dvb2cub2JqZWN0LnVuc2FmZUNsb25lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXR7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIGNyZWF0ZVJ1bGUoYSxiKXtpZigoMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYSwiPCIpKXRocm93IEVycm9yKGBTZWxlY3RvciBkb2VzIG5vdCBhbGxvdyAnPCcsIGdvdDogJHthfWApO2NvbnN0IGM9YS5yZXBsYWNlKC8oJ3wiKSgoPyFcMSlbXlxyXG5cZlxcXXxcXFtcc1xTXSkqXDEvZywKIiIpO2lmKCEvXlstX2EtekEtWjAtOSMuOiogLD4rfltcXSgpPV4kfF0rJC8udGVzdChjKSl0aHJvdyBFcnJvcigiU2VsZWN0b3IgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05Iy46KiAsPit+W1xcXSgpPV4kfF0gYW5kIHN0cmluZ3MsIGdvdDogIithKTtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5oYXNCYWxhbmNlZEJyYWNrZXRzXyhjKSl0aHJvdyBFcnJvcigiKCkgYW5kIFtdIGluIHNlbGVjdG9yIG11c3QgYmUgYmFsYW5jZWQsIGdvdDogIithKTtiIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlfHwoYj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlKGIpKTthPWAke2F9e2ArbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChiKS5yZXBsYWNlKC88L2csIlxcM0MgIikrIn0iOwpyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBoYXNCYWxhbmNlZEJyYWNrZXRzXyhhKXtjb25zdCBiPXsiKCI6IikiLCJbIjoiXSJ9LGM9W107Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe2NvbnN0IGU9YVtkXTtpZihiW2VdKWMucHVzaChiW2VdKTtlbHNlIGlmKG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhiLGUpJiZjLnBvcCgpIT1lKXJldHVybiExfXJldHVybiAwPT1jLmxlbmd0aH1zdGF0aWMgY29uY2F0KGEpe2xldCBiPSIiO2NvbnN0IGM9ZD0+e0FycmF5LmlzQXJyYXkoZCk/ZC5mb3JFYWNoKGMpOmIrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGQpfTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGFyZ3VtZW50cywKYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWTsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KSghKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsIjwiKSxgRm9yYmlkZGVuICc8JyBjaGFyYWN0ZXIgaW4gc3R5bGUgc2hlZXQgc3RyaW5nOiAke2F9YCk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX1nZXRUeXBlZFN0cmluZ1ZhbHVlKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVffXN0YXRpYyB1bndyYXAoYSl7aWYoYSBpbnN0YW5jZW9mCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0KXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTdHlsZVNoZWV0LCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlNhZmVTdHlsZVNoZWV0In1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKXtyZXR1cm4gbmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEUpfX0KbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0LmNyZWF0ZVNhZmVTdHlsZVNoZWV0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0O2dvb2cuZG9tLkh0bWxFbGVtZW50PWZ1bmN0aW9uKCl7fTtnb29nLmRvbS5UYWdOYW1lPWNsYXNze3N0YXRpYyBjYXN0KGEsYil7cmV0dXJuIGF9Y29uc3RydWN0b3IoKXt9dG9TdHJpbmcoKXt9fTtnb29nLmRvbS5UYWdOYW1lLkE9IkEiO2dvb2cuZG9tLlRhZ05hbWUuQUJCUj0iQUJCUiI7Z29vZy5kb20uVGFnTmFtZS5BQ1JPTllNPSJBQ1JPTllNIjtnb29nLmRvbS5UYWdOYW1lLkFERFJFU1M9IkFERFJFU1MiO2dvb2cuZG9tLlRhZ05hbWUuQVBQTEVUPSJBUFBMRVQiO2dvb2cuZG9tLlRhZ05hbWUuQVJFQT0iQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5BUlRJQ0xFPSJBUlRJQ0xFIjtnb29nLmRvbS5UYWdOYW1lLkFTSURFPSJBU0lERSI7Z29vZy5kb20uVGFnTmFtZS5BVURJTz0iQVVESU8iO2dvb2cuZG9tLlRhZ05hbWUuQj0iQiI7Z29vZy5kb20uVGFnTmFtZS5CQVNFPSJCQVNFIjtnb29nLmRvbS5UYWdOYW1lLkJBU0VGT05UPSJCQVNFRk9OVCI7Z29vZy5kb20uVGFnTmFtZS5CREk9IkJESSI7Z29vZy5kb20uVGFnTmFtZS5CRE89IkJETyI7Cmdvb2cuZG9tLlRhZ05hbWUuQklHPSJCSUciO2dvb2cuZG9tLlRhZ05hbWUuQkxPQ0tRVU9URT0iQkxPQ0tRVU9URSI7Z29vZy5kb20uVGFnTmFtZS5CT0RZPSJCT0RZIjtnb29nLmRvbS5UYWdOYW1lLkJSPSJCUiI7Z29vZy5kb20uVGFnTmFtZS5CVVRUT049IkJVVFRPTiI7Z29vZy5kb20uVGFnTmFtZS5DQU5WQVM9IkNBTlZBUyI7Z29vZy5kb20uVGFnTmFtZS5DQVBUSU9OPSJDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkNFTlRFUj0iQ0VOVEVSIjtnb29nLmRvbS5UYWdOYW1lLkNJVEU9IkNJVEUiO2dvb2cuZG9tLlRhZ05hbWUuQ09ERT0iQ09ERSI7Z29vZy5kb20uVGFnTmFtZS5DT0w9IkNPTCI7Z29vZy5kb20uVGFnTmFtZS5DT0xHUk9VUD0iQ09MR1JPVVAiO2dvb2cuZG9tLlRhZ05hbWUuQ09NTUFORD0iQ09NTUFORCI7Z29vZy5kb20uVGFnTmFtZS5EQVRBPSJEQVRBIjtnb29nLmRvbS5UYWdOYW1lLkRBVEFMSVNUPSJEQVRBTElTVCI7Z29vZy5kb20uVGFnTmFtZS5ERD0iREQiOwpnb29nLmRvbS5UYWdOYW1lLkRFTD0iREVMIjtnb29nLmRvbS5UYWdOYW1lLkRFVEFJTFM9IkRFVEFJTFMiO2dvb2cuZG9tLlRhZ05hbWUuREZOPSJERk4iO2dvb2cuZG9tLlRhZ05hbWUuRElBTE9HPSJESUFMT0ciO2dvb2cuZG9tLlRhZ05hbWUuRElSPSJESVIiO2dvb2cuZG9tLlRhZ05hbWUuRElWPSJESVYiO2dvb2cuZG9tLlRhZ05hbWUuREw9IkRMIjtnb29nLmRvbS5UYWdOYW1lLkRUPSJEVCI7Z29vZy5kb20uVGFnTmFtZS5FTT0iRU0iO2dvb2cuZG9tLlRhZ05hbWUuRU1CRUQ9IkVNQkVEIjtnb29nLmRvbS5UYWdOYW1lLkZJRUxEU0VUPSJGSUVMRFNFVCI7Z29vZy5kb20uVGFnTmFtZS5GSUdDQVBUSU9OPSJGSUdDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkZJR1VSRT0iRklHVVJFIjtnb29nLmRvbS5UYWdOYW1lLkZPTlQ9IkZPTlQiO2dvb2cuZG9tLlRhZ05hbWUuRk9PVEVSPSJGT09URVIiO2dvb2cuZG9tLlRhZ05hbWUuRk9STT0iRk9STSI7Cmdvb2cuZG9tLlRhZ05hbWUuRlJBTUU9IkZSQU1FIjtnb29nLmRvbS5UYWdOYW1lLkZSQU1FU0VUPSJGUkFNRVNFVCI7Z29vZy5kb20uVGFnTmFtZS5IMT0iSDEiO2dvb2cuZG9tLlRhZ05hbWUuSDI9IkgyIjtnb29nLmRvbS5UYWdOYW1lLkgzPSJIMyI7Z29vZy5kb20uVGFnTmFtZS5IND0iSDQiO2dvb2cuZG9tLlRhZ05hbWUuSDU9Ikg1Ijtnb29nLmRvbS5UYWdOYW1lLkg2PSJINiI7Z29vZy5kb20uVGFnTmFtZS5IRUFEPSJIRUFEIjtnb29nLmRvbS5UYWdOYW1lLkhFQURFUj0iSEVBREVSIjtnb29nLmRvbS5UYWdOYW1lLkhHUk9VUD0iSEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLkhSPSJIUiI7Z29vZy5kb20uVGFnTmFtZS5IVE1MPSJIVE1MIjtnb29nLmRvbS5UYWdOYW1lLkk9IkkiO2dvb2cuZG9tLlRhZ05hbWUuSUZSQU1FPSJJRlJBTUUiO2dvb2cuZG9tLlRhZ05hbWUuSU1HPSJJTUciO2dvb2cuZG9tLlRhZ05hbWUuSU5QVVQ9IklOUFVUIjsKZ29vZy5kb20uVGFnTmFtZS5JTlM9IklOUyI7Z29vZy5kb20uVGFnTmFtZS5JU0lOREVYPSJJU0lOREVYIjtnb29nLmRvbS5UYWdOYW1lLktCRD0iS0JEIjtnb29nLmRvbS5UYWdOYW1lLktFWUdFTj0iS0VZR0VOIjtnb29nLmRvbS5UYWdOYW1lLkxBQkVMPSJMQUJFTCI7Z29vZy5kb20uVGFnTmFtZS5MRUdFTkQ9IkxFR0VORCI7Z29vZy5kb20uVGFnTmFtZS5MST0iTEkiO2dvb2cuZG9tLlRhZ05hbWUuTElOSz0iTElOSyI7Z29vZy5kb20uVGFnTmFtZS5NQUlOPSJNQUlOIjtnb29nLmRvbS5UYWdOYW1lLk1BUD0iTUFQIjtnb29nLmRvbS5UYWdOYW1lLk1BUks9Ik1BUksiO2dvb2cuZG9tLlRhZ05hbWUuTUFUSD0iTUFUSCI7Z29vZy5kb20uVGFnTmFtZS5NRU5VPSJNRU5VIjtnb29nLmRvbS5UYWdOYW1lLk1FTlVJVEVNPSJNRU5VSVRFTSI7Z29vZy5kb20uVGFnTmFtZS5NRVRBPSJNRVRBIjtnb29nLmRvbS5UYWdOYW1lLk1FVEVSPSJNRVRFUiI7Cmdvb2cuZG9tLlRhZ05hbWUuTkFWPSJOQVYiO2dvb2cuZG9tLlRhZ05hbWUuTk9GUkFNRVM9Ik5PRlJBTUVTIjtnb29nLmRvbS5UYWdOYW1lLk5PU0NSSVBUPSJOT1NDUklQVCI7Z29vZy5kb20uVGFnTmFtZS5PQkpFQ1Q9Ik9CSkVDVCI7Z29vZy5kb20uVGFnTmFtZS5PTD0iT0wiO2dvb2cuZG9tLlRhZ05hbWUuT1BUR1JPVVA9Ik9QVEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLk9QVElPTj0iT1BUSU9OIjtnb29nLmRvbS5UYWdOYW1lLk9VVFBVVD0iT1VUUFVUIjtnb29nLmRvbS5UYWdOYW1lLlA9IlAiO2dvb2cuZG9tLlRhZ05hbWUuUEFSQU09IlBBUkFNIjtnb29nLmRvbS5UYWdOYW1lLlBJQ1RVUkU9IlBJQ1RVUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJFPSJQUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJPR1JFU1M9IlBST0dSRVNTIjtnb29nLmRvbS5UYWdOYW1lLlE9IlEiO2dvb2cuZG9tLlRhZ05hbWUuUlA9IlJQIjtnb29nLmRvbS5UYWdOYW1lLlJUPSJSVCI7Cmdvb2cuZG9tLlRhZ05hbWUuUlRDPSJSVEMiO2dvb2cuZG9tLlRhZ05hbWUuUlVCWT0iUlVCWSI7Z29vZy5kb20uVGFnTmFtZS5TPSJTIjtnb29nLmRvbS5UYWdOYW1lLlNBTVA9IlNBTVAiO2dvb2cuZG9tLlRhZ05hbWUuU0NSSVBUPSJTQ1JJUFQiO2dvb2cuZG9tLlRhZ05hbWUuU0VDVElPTj0iU0VDVElPTiI7Z29vZy5kb20uVGFnTmFtZS5TRUxFQ1Q9IlNFTEVDVCI7Z29vZy5kb20uVGFnTmFtZS5TTUFMTD0iU01BTEwiO2dvb2cuZG9tLlRhZ05hbWUuU09VUkNFPSJTT1VSQ0UiO2dvb2cuZG9tLlRhZ05hbWUuU1BBTj0iU1BBTiI7Z29vZy5kb20uVGFnTmFtZS5TVFJJS0U9IlNUUklLRSI7Z29vZy5kb20uVGFnTmFtZS5TVFJPTkc9IlNUUk9ORyI7Z29vZy5kb20uVGFnTmFtZS5TVFlMRT0iU1RZTEUiO2dvb2cuZG9tLlRhZ05hbWUuU1VCPSJTVUIiO2dvb2cuZG9tLlRhZ05hbWUuU1VNTUFSWT0iU1VNTUFSWSI7Z29vZy5kb20uVGFnTmFtZS5TVVA9IlNVUCI7Cmdvb2cuZG9tLlRhZ05hbWUuU1ZHPSJTVkciO2dvb2cuZG9tLlRhZ05hbWUuVEFCTEU9IlRBQkxFIjtnb29nLmRvbS5UYWdOYW1lLlRCT0RZPSJUQk9EWSI7Z29vZy5kb20uVGFnTmFtZS5URD0iVEQiO2dvb2cuZG9tLlRhZ05hbWUuVEVNUExBVEU9IlRFTVBMQVRFIjtnb29nLmRvbS5UYWdOYW1lLlRFWFRBUkVBPSJURVhUQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5URk9PVD0iVEZPT1QiO2dvb2cuZG9tLlRhZ05hbWUuVEg9IlRIIjtnb29nLmRvbS5UYWdOYW1lLlRIRUFEPSJUSEVBRCI7Z29vZy5kb20uVGFnTmFtZS5USU1FPSJUSU1FIjtnb29nLmRvbS5UYWdOYW1lLlRJVExFPSJUSVRMRSI7Z29vZy5kb20uVGFnTmFtZS5UUj0iVFIiO2dvb2cuZG9tLlRhZ05hbWUuVFJBQ0s9IlRSQUNLIjtnb29nLmRvbS5UYWdOYW1lLlRUPSJUVCI7Z29vZy5kb20uVGFnTmFtZS5VPSJVIjtnb29nLmRvbS5UYWdOYW1lLlVMPSJVTCI7Z29vZy5kb20uVGFnTmFtZS5WQVI9IlZBUiI7Cmdvb2cuZG9tLlRhZ05hbWUuVklERU89IlZJREVPIjtnb29nLmRvbS5UYWdOYW1lLldCUj0iV0JSIjtnb29nLmxhYnM9e307Z29vZy5sYWJzLnVzZXJBZ2VudD17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9VU0VfQ0xJRU5UX0hJTlRTX09WRVJSSURFPSIiLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFM9ITE7bGV0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X2ZvcmNlQ2xpZW50SGludHNJblRlc3RzPSExO2dvb2cubGFicy51c2VyQWdlbnQuc2V0VXNlQ2xpZW50SGludHNGb3JUZXN0aW5nPWE9Pnttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cz1hfTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfdXNlQ2xpZW50SGludHNSdW50aW1lT3ZlcnJpZGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfVVNFX0NMSUVOVF9ISU5UU19PVkVSUklERT8hIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFNfT1ZFUlJJREUpOiExO2dvb2cubGFicy51c2VyQWdlbnQudXNlQ2xpZW50SGludHM9KCk9Pm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFN8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X3VzZUNsaWVudEhpbnRzUnVudGltZU92ZXJyaWRlfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cztnb29nLmxhYnMudXNlckFnZW50LnV0aWw9e307Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9BU1NVTUVfQ0xJRU5UX0hJTlRTX1NVUFBPUlQ9ITE7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKXt2YXIgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdmlnYXRvcigpO3JldHVybiBhJiYoYT1hLnVzZXJBZ2VudCk/YToiIn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudERhdGEoKXtjb25zdCBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCk7cmV0dXJuIGE/YS51c2VyQWdlbnREYXRhfHxudWxsOm51bGx9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLm5hdmlnYXRvcn1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnRJbnRlcm5hbD1udWxsLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudChhKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsPSJzdHJpbmciPT09dHlwZW9mIGE/YTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZygpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCl7cmV0dXJuIG51bGw9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50SW50ZXJuYWw/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudERhdGEoYSl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnREYXRhSW50ZXJuYWw9YX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3Jlc2V0VXNlckFnZW50RGF0YSgpe21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudERhdGFJbnRlcm5hbH0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChhKXtpZighKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiBiP2IuYnJhbmRzLnNvbWUoKHticmFuZDpjfSk9PmMmJigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKShjLGEpKTohMX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KGEpe2NvbnN0IGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtyZXR1cm4oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYixhKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoYSl7Y29uc3QgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudCgpO3JldHVybigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zKShiLGEpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXMoYSl7Y29uc3QgYj1SZWdFeHAoIihbQS1aXVtcXHcgXSspLyhbXlxcc10rKVxccyooPzpcXCgoLio/KVxcKSk/IiwiZyIpLGM9W107bGV0IGQ7Zm9yKDtkPWIuZXhlYyhhKTspYy5wdXNoKFtkWzFdLGRbMl0sZFszXXx8dm9pZCAwXSk7cmV0dXJuIGN9Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLkFTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX0FTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmV4dHJhY3RWZXJzaW9uVHVwbGVzPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXM7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldE5hdGl2ZVVzZXJBZ2VudFN0cmluZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZztnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50O2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50RGF0YUJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50SWdub3JlQ2FzZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50SWdub3JlQ2FzZTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwucmVzZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfcmVzZXRVc2VyQWdlbnREYXRhO2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5zZXRVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnNldFVzZXJBZ2VudERhdGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnREYXRhO3ZhciBtb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5VmFsdWU9e0FzeW5jVmFsdWU6Y2xhc3N7Z2V0SWZMb2FkZWQoKXt9bG9hZCgpe319LEhpZ2hFbnRyb3B5VmFsdWU6Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rZXlfPWE7dGhpcy5wcm9taXNlXz10aGlzLnZhbHVlXz12b2lkIDA7dGhpcy5wZW5kaW5nXz0hMX1nZXRJZkxvYWRlZCgpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpKXJldHVybiB0aGlzLnZhbHVlX31hc3luYyBsb2FkKCl7Y29uc3QgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKTtpZihhKXJldHVybiB0aGlzLnByb21pc2VffHwodGhpcy5wZW5kaW5nXz0hMCx0aGlzLnByb21pc2VfPShhc3luYygpPT57dHJ5e3JldHVybiB0aGlzLnZhbHVlXz0oYXdhaXQgYS5nZXRIaWdoRW50cm9weVZhbHVlcyhbdGhpcy5rZXlfXSkpW3RoaXMua2V5X119ZmluYWxseXt0aGlzLnBlbmRpbmdfPQohMX19KSgpKSxhd2FpdCB0aGlzLnByb21pc2VffXJlc2V0Rm9yVGVzdGluZygpe2lmKHRoaXMucGVuZGluZ18pdGhyb3cgRXJyb3IoIlVuc2FmZSBjYWxsIHRvIHJlc2V0Rm9yVGVzdGluZyIpO3RoaXMudmFsdWVfPXRoaXMucHJvbWlzZV89dm9pZCAwO3RoaXMucGVuZGluZ189ITF9fSxWZXJzaW9uOmNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMudmVyc2lvblN0cmluZ189YX10b1ZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKCl7cmV0dXJuIHRoaXMudmVyc2lvblN0cmluZ199aXNBdExlYXN0KGEpe3JldHVybiAwPD0oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlVmVyc2lvbnMpKHRoaXMudmVyc2lvblN0cmluZ18sYSl9fX07dmFyIG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhPXt9O21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdD1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoImZ1bGxWZXJzaW9uTGlzdCIpO21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLnBsYXRmb3JtVmVyc2lvbj1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoInBsYXRmb3JtVmVyc2lvbiIpO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlcj17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kPXtBTkRST0lEX0JST1dTRVI6IkFuZHJvaWQgQnJvd3NlciIsQ0hST01JVU06IkNocm9taXVtIixFREdFOiJNaWNyb3NvZnQgRWRnZSIsRklSRUZPWDoiRmlyZWZveCIsSUU6IkludGVybmV0IEV4cGxvcmVyIixPUEVSQToiT3BlcmEiLFNBRkFSSToiU2FmYXJpIixTSUxLOiJTaWxrIn07Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLkJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKGE9ITEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfQVNTVU1FX0NMSUVOVF9ISU5UU19TVVBQT1JUKXJldHVybiEwO2lmKCFhJiYhKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTthPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiEhYSYmMDxhLmJyYW5kcy5sZW5ndGh9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaGFzRnVsbFZlcnNpb25MaXN0KCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdExlYXN0KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU0sOTgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIk9wZXJhIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlRyaWRlbnQiKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiTVNJRSIpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkVkZ2UiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5FREdFKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJFZGcvIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLk9QRVJBKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJPUFIiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiRmlyZWZveCIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJGeGlPUyIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoU2FmYXJpKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNhZmFyaSIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0KCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bSgpfHwKbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3QoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoKT8hMTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDb2FzdCIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldygpe3JldHVybihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJpUGFkIil8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoImlQaG9uZSIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hTYWZhcmkoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDb2FzdCgpJiYhbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQXBwbGVXZWJLaXQiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5DSFJPTUlVTSk6KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkNocm9tZSIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDcmlPUyIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXIoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCkpfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNPcGVyYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmE7Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzSUU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0lFPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzT3BlcmFDaHJvbWl1bT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYUNocm9taXVtPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRmlyZWZveD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRmlyZWZveDtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNGaXJlZm94PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ29hc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0Owpnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDb2FzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3Q7Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0lvc1dlYnZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElvc1dlYnZpZXc7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSW9zV2Vidmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldztjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBbmRyb2lkQnJvd3Nlcj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXI7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQW5kcm9pZEJyb3dzZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEFuZHJvaWRCcm93c2VyO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNpbGsiKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTaWxrPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2NyZWF0ZVZlcnNpb25NYXAoYSl7Y29uc3QgYj17fTthLmZvckVhY2goYz0+e2JbY1swXV09Y1sxXX0pO3JldHVybiBjPT5iW2MuZmluZChkPT5kIGluIGIpXXx8IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbigpe3ZhciBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCk7aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCkpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0SUVWZXJzaW9uKGEpO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9leHRyYWN0VmVyc2lvblR1cGxlcyhhKTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfY3JlYXRlVmVyc2lvbk1hcChhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCk/YihbIlZlcnNpb24iLCJPcGVyYSJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKT8KYihbIkVkZ2UiXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpP2IoWyJFZGciXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKT9iKFsiU2lsayJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ2hyb21lKCk/YihbIkNocm9tZSIsIkNyaU9TIiwiSGVhZGxlc3NDaHJvbWUiXSk6KGE9YVsyXSkmJmFbMV18fCIifWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcihhKXtyZXR1cm4gMDw9KDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zKShtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb24oKSxhKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNWZXJzaW9uT3JIaWdoZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYSl7dmFyIGI9L3J2OiAqKFtcZFwuXSopLy5leGVjKGEpO2lmKGImJmJbMV0pcmV0dXJuIGJbMV07Yj0iIjtjb25zdCBjPS9NU0lFICsoW1xkXC5dKykvLmV4ZWMoYSk7aWYoYyYmY1sxXSlpZihhPS9UcmlkZW50XC8oXGQuXGQpLy5leGVjKGEpLCI3LjAiPT1jWzFdKWlmKGEmJmFbMV0pc3dpdGNoKGFbMV0pe2Nhc2UgIjQuMCI6Yj0iOC4wIjticmVhaztjYXNlICI1LjAiOmI9IjkuMCI7YnJlYWs7Y2FzZSAiNi4wIjpiPSIxMC4wIjticmVhaztjYXNlICI3LjAiOmI9IjExLjAifWVsc2UgYj0iNy4wIjtlbHNlIGI9Y1sxXTtyZXR1cm4gYn0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtpZihhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5JRSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYik6IiI7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2V4dHJhY3RWZXJzaW9uVHVwbGVzKGIpO2NvbnN0IGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9jcmVhdGVWZXJzaW9uTWFwKGIpO3N3aXRjaChhKXtjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuT1BFUkE6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCkpcmV0dXJuIGMoWyJWZXJzaW9uIiwKIk9wZXJhIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCkpcmV0dXJuIGMoWyJPUFIiXSk7YnJlYWs7Y2FzZSBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkVER0U6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VIdG1sKCkpcmV0dXJuIGMoWyJFZGdlIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlQ2hyb21pdW0oKSlyZXR1cm4gYyhbIkVkZyJdKTticmVhaztjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU06aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpKXJldHVybiBjKFsiQ2hyb21lIiwiQ3JpT1MiLCJIZWFkbGVzc0Nocm9tZSJdKX1yZXR1cm4gYT09PQptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkZJUkVGT1gmJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94KCl8fGE9PT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLlNBRkFSSSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaSgpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5BTkRST0lEX0JST1dTRVImJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hBbmRyb2lkQnJvd3NlcigpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLJiZtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpPyhhPWJbMl0pJiYKYVsxXXx8IiI6IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdmVyc2lvbk9mXyhhKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpJiZhIT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLKXt2YXIgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmN9KT0+Yz09PWEpO2lmKCFifHwhYi52ZXJzaW9uKXJldHVybiBOYU47Yj1iLnZlcnNpb24uc3BsaXQoIi4iKX1lbHNle2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSk7aWYoIiI9PT1iKXJldHVybiBOYU47Yj1iLnNwbGl0KCIuIil9cmV0dXJuIDA9PT1iLmxlbmd0aD9OYU46TnVtYmVyKGJbMF0pfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk+PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRMZWFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0F0TW9zdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk8PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRNb3N0PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdE1vc3Q7CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfSGlnaEVudHJvcHlCcmFuZFZlcnNpb257Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuYnJhbmRfPWE7dGhpcy52ZXJzaW9uXz1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYyk7dGhpcy51c2VVYWNoXz1ifWdldElmTG9hZGVkKCl7aWYodGhpcy51c2VVYWNoXyl7dmFyIGE9bW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmdldElmTG9hZGVkKCk7aWYodm9pZCAwIT09YSlyZXR1cm4gYT1hLmZpbmQoKHticmFuZDpifSk9PnRoaXMuYnJhbmRfPT09YiksKDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYSksbmV3IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlWYWx1ZS5WZXJzaW9uKGEudmVyc2lvbil9aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkKXJldHVybiB0aGlzLnZlcnNpb25ffWFzeW5jIGxvYWQoKXtpZih0aGlzLnVzZVVhY2hfKXt2YXIgYT0KYXdhaXQgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmxvYWQoKTtpZih2b2lkIDAhPT1hKXJldHVybiBhPWEuZmluZCgoe2JyYW5kOmJ9KT0+dGhpcy5icmFuZF89PT1iKSwoMCxnb29nLmFzc2VydHMuYXNzZXJ0RXhpc3RzKShhKSxuZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYS52ZXJzaW9uKX1lbHNlIGF3YWl0IDA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwO3JldHVybiB0aGlzLnZlcnNpb25ffX1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSExOwphc3luYyBmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2xvYWRGdWxsVmVyc2lvbnMoKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCghMCkmJmF3YWl0IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdC5sb2FkKCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwfWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5sb2FkRnVsbFZlcnNpb25zPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbG9hZEZ1bGxWZXJzaW9uczsKZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLnJlc2V0Rm9yVGVzdGluZz0oKT0+e21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfcHJlVWFjaEhhc0xvYWRlZD0hMTttb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5RGF0YS5mdWxsVmVyc2lvbkxpc3QucmVzZXRGb3JUZXN0aW5nKCl9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2Z1bGxWZXJzaW9uT2YoYSl7bGV0IGI9IiI7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9oYXNGdWxsVmVyc2lvbkxpc3QoKXx8KGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSkpO2NvbnN0IGM9YSE9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuU0lMSyYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoITApO2lmKGMpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmR9KT0+ZD09PWEpKXJldHVybn1lbHNlIGlmKCIiPT09YilyZXR1cm47cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0hpZ2hFbnRyb3B5QnJhbmRWZXJzaW9uKGEsCmMsYil9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmZ1bGxWZXJzaW9uT2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKGEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCEwKSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mKGEpO2lmKGIpe2lmKGI9Yi5nZXRJZkxvYWRlZCgpKXJldHVybiBiLnRvVmVyc2lvblN0cmluZ0ZvckxvZ2dpbmcoKTtiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpLmJyYW5kcy5maW5kKCh7YnJhbmQ6Y30pPT5jPT09YSk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYik7cmV0dXJuIGIudmVyc2lvbn1yZXR1cm4iIn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl9Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uU3RyaW5nRm9yTG9nZ2luZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nO2dvb2cuZG9tLnRhZ3M9e307Z29vZy5kb20udGFncy5WT0lEX1RBR1NfPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH07Z29vZy5kb20udGFncy5pc1ZvaWRUYWc9ZnVuY3Rpb24oYSl7cmV0dXJuITA9PT1nb29nLmRvbS50YWdzLlZPSURfVEFHU19bYV19O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT17fTsKY2xhc3MgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfPWI9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU/YToiIjt0aGlzLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITB9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChhKS50b1N0cmluZygpfXN0YXRpYyB1bndyYXBUcnVzdGVkSFRNTChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbCYmCmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbChgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZUh0bWwsIGdvdCAnJHthfScgb2YgdHlwZSBgK2dvb2cudHlwZU9mKGEpKTtyZXR1cm4idHlwZV9lcnJvcjpTYWZlSHRtbCJ9c3RhdGljIGh0bWxFc2NhcGUoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKGEpKX1zdGF0aWMgaHRtbEVzY2FwZVByZXNlcnZpbmdOZXdsaW5lcyhhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbClyZXR1cm4gYTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGh0bWxFc2NhcGVQcmVzZXJ2aW5nTmV3bGluZXNBbmRTcGFjZXMoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmh0bWxFc2NhcGUoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbW1lbnQoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiXHgzYyEtLSIrCmdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSkrIi0tXHgzZSIpfXN0YXRpYyBjcmVhdGUoYSxiLGMpe21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudmVyaWZ5VGFnTmFtZShTdHJpbmcoYSkpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoU3RyaW5nKGEpLGIsYyl9c3RhdGljIHZlcmlmeVRhZ05hbWUoYSl7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfVkFMSURfTkFNRVNfSU5fVEFHLnRlc3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YEludmFsaWQgdGFnIG5hbWUgPCR7YX0+LmA6IiIpO2lmKGEudG9VcHBlckNhc2UoKWluIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfTk9UX0FMTE9XRURfVEFHX05BTUVTKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgVGFnIG5hbWUgPCR7YX0+IGlzIG5vdCBhbGxvd2VkIGZvciBTYWZlSHRtbC5gOiIiKTt9c3RhdGljIGNyZWF0ZUlmcmFtZShhLGIsYyxkKXthJiZnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChhKTtjb25zdCBlPXt9O2Uuc3JjPWF8fG51bGw7ZS5zcmNkb2M9YiYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYik7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse3NhbmRib3g6IiJ9LGMpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoImlmcmFtZSIsYSxkKX1zdGF0aWMgY3JlYXRlU2FuZGJveElmcmFtZShhLGIsYyxkKXtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jYW5Vc2VTYW5kYm94SWZyYW1lKCkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/CiJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHNhbmRib3hlZCBpZnJhbWVzLiI6IiIpO2NvbnN0IGU9e307ZS5zcmM9YT9nb29nLmh0bWwuU2FmZVVybC51bndyYXAoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemUoYSkpOm51bGw7ZS5zcmNkb2M9Ynx8bnVsbDtlLnNhbmRib3g9IiI7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse30sYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiaWZyYW1lIixhLGQpfXN0YXRpYyBjYW5Vc2VTYW5kYm94SWZyYW1lKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLkhUTUxJRnJhbWVFbGVtZW50JiYic2FuZGJveCJpbiBnb29nLmdsb2JhbC5IVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGV9c3RhdGljIGNyZWF0ZVNjcmlwdFNyYyhhLGIpe2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGEpOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXMoe3NyYzphfSx7fSxiKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGEpfXN0YXRpYyBjcmVhdGVTY3JpcHQoYSxiKXtmb3IodmFyIGMgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixjKSl7dmFyIGQ9Yy50b0xvd2VyQ2FzZSgpO2lmKCJsYW5ndWFnZSI9PWR8fCJzcmMiPT1kfHwidGV4dCI9PWQpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YENhbm5vdCBzZXQgIiR7ZH0iIGF0dHJpYnV0ZWA6IiIpO31jPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihkPTA7ZDwKYS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcChhW2RdKTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGIsYSl9c3RhdGljIGNyZWF0ZVN0eWxlKGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKHt0eXBlOiJ0ZXh0L2NzcyJ9LHt9LGIpO2xldCBjPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGFbZF0pOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzdHlsZSIsYixhKX1zdGF0aWMgY3JlYXRlTWV0YVJlZnJlc2goYSxiKXthPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShhKSk7KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKSkmJmdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEsIjsiKSYmKGE9IiciK2EucmVwbGFjZSgvJy9nLCIlMjciKSsiJyIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIm1ldGEiLAp7Imh0dHAtZXF1aXYiOiJyZWZyZXNoIixjb250ZW50OihifHwwKSsiOyB1cmw9IithfSl9c3RhdGljIGpvaW4oYSxiKXthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtjb25zdCBjPVtdLGQ9ZT0+e0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGQpOihlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShlKSxjLnB1c2gobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoZSkpKX07Yi5mb3JFYWNoKGQpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYy5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbmNhdChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU1QVFksCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfXN0YXRpYyBjcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVIVE1MKGEpOmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhLGIsYyl7Yj1gPCR7YX1gK21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpO251bGw9PWM/Yz1bXTpBcnJheS5pc0FycmF5KGMpfHwoYz1bY10pO2dvb2cuZG9tLnRhZ3MuaXNWb2lkVGFnKGEudG9Mb3dlckNhc2UoKSk/Cihnb29nLmFzc2VydHMuYXNzZXJ0KCFjLmxlbmd0aCxgVm9pZCB0YWcgPCR7YX0+IGRvZXMgbm90IGFsbG93IGNvbnRlbnQuYCksYis9Ij4iKTooYz1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbmNhdChjKSxiKz0iPiIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYykrIjwvIithKyI+Iik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpe2xldCBjPSIiO2lmKGIpZm9yKGxldCBkIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZCkpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1ZBTElEX05BTUVTX0lOX1RBRy50ZXN0KGQpKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgSW52YWxpZCBhdHRyaWJ1dGUgbmFtZSAiJHtkfSIuYDoiIik7Y29uc3QgZT1iW2RdO251bGwhPWUmJihjKz0iICIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRBdHRyTmFtZUFuZFZhbHVlKGEsZCxlKSl9cmV0dXJuIGN9c3RhdGljIGNvbWJpbmVBdHRyaWJ1dGVzKGEsYixjKXtjb25zdCBkPXt9O2Zvcih2YXIgZSBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGUpJiYoZ29vZy5hc3NlcnRzLmFzc2VydChlLnRvTG93ZXJDYXNlKCk9PWUsIk11c3QgYmUgbG93ZXIgY2FzZSIpLGRbZV09YVtlXSk7Zm9yKGNvbnN0IGYgaW4gYilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixmKSYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQoZi50b0xvd2VyQ2FzZSgpPT1mLCJNdXN0IGJlIGxvd2VyIGNhc2UiKSxkW2ZdPWJbZl0pO2lmKGMpZm9yKGNvbnN0IGYgaW4gYylpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYywKZikpe2U9Zi50b0xvd2VyQ2FzZSgpO2lmKGUgaW4gYSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz9gQ2Fubm90IG92ZXJyaWRlICIke2V9IiBhdHRyaWJ1dGUsIGdvdCAiYCtmKyciIHdpdGggdmFsdWUgIicrY1tmXSsnIic6IiIpO2UgaW4gYiYmZGVsZXRlIGRbZV07ZFtmXT1jW2ZdfXJldHVybiBkfX1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz1nb29nLkRFQlVHO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuU1VQUE9SVF9TVFlMRV9BVFRSSUJVVEU9ITA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5mcm9tPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9WQUxJRF9OQU1FU19JTl9UQUc9L15bYS16QS1aMC05LV0rJC8sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUz17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9OT1RfQUxMT1dFRF9UQUdfTkFNRVM9e1tnb29nLmRvbS5UYWdOYW1lLkFQUExFVF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuQkFTRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuRU1CRURdOiEwLFtnb29nLmRvbS5UYWdOYW1lLklGUkFNRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTElOS106ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUFUSF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUVUQV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuT0JKRUNUXTohMCxbZ29vZy5kb20uVGFnTmFtZS5TQ1JJUFRdOiEwLApbZ29vZy5kb20uVGFnTmFtZS5TVFlMRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuU1ZHXTohMCxbZ29vZy5kb20uVGFnTmFtZS5URU1QTEFURV06ITB9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldEF0dHJOYW1lQW5kVmFsdWUoYSxiLGMpe2lmKGMgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCljPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChjKTtlbHNlIGlmKCJzdHlsZSI9PWIudG9Mb3dlckNhc2UoKSlpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLlNVUFBPUlRfU1RZTEVfQVRUUklCVVRFKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRTdHlsZVZhbHVlKGMpO2Vsc2UgdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J0F0dHJpYnV0ZSAic3R5bGUiIG5vdCBzdXBwb3J0ZWQuJzoiIik7ZWxzZXtpZigvXm9uL2kudGVzdChiKSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz8KYEF0dHJpYnV0ZSAiJHtifWArJyIgcmVxdWlyZXMgZ29vZy5zdHJpbmcuQ29uc3QgdmFsdWUsICInK2MrJyIgZ2l2ZW4uJzoiIik7aWYoYi50b0xvd2VyQ2FzZSgpaW4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUylpZihjIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCljPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGMpO2Vsc2UgaWYoYyBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKWM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGMpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYyljPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKGMpLmdldFR5cGVkU3RyaW5nVmFsdWUoKTtlbHNlIHRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTP2BBdHRyaWJ1dGUgIiR7Yn0iIG9uIHRhZyAiJHthfWArJyIgcmVxdWlyZXMgZ29vZy5odG1sLlNhZmVVcmwsIGdvb2cuc3RyaW5nLkNvbnN0LCBvciBzdHJpbmcsIHZhbHVlICInKwpjKyciIGdpdmVuLic6IiIpO31jLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmcmJihjPWMuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpKTtnb29nLmFzc2VydHMuYXNzZXJ0KCJzdHJpbmciPT09dHlwZW9mIGN8fCJudW1iZXIiPT09dHlwZW9mIGMsIlN0cmluZyBvciBudW1iZXIgdmFsdWUgZXhwZWN0ZWQsIGdvdCAiK3R5cGVvZiBjKyIgd2l0aCB2YWx1ZTogIitjKTtyZXR1cm5gJHtifT0iYCtnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKFN0cmluZyhjKSkrJyInfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldFN0eWxlVmFsdWUoYSl7aWYoIWdvb2cuaXNPYmplY3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J1RoZSAic3R5bGUiIGF0dHJpYnV0ZSByZXF1aXJlcyBnb29nLmh0bWwuU2FmZVN0eWxlIG9yIG1hcCBvZiBzdHlsZSBwcm9wZXJ0aWVzLCAnK3R5cGVvZiBhKyIgZ2l2ZW46ICIrYToiIik7YSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXx8KGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLmNyZWF0ZShhKSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYSl9Cm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRE9DVFlQRV9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiPCFET0NUWVBFIGh0bWw+Iil9KCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbChnb29nLmdsb2JhbC50cnVzdGVkVHlwZXMmJmdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eUhUTUx8fCIiLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURSk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5CUj1mdW5jdGlvbigpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIjxicj4iKX0oKTsKZ29vZy5odG1sLlNhZmVIdG1sPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWw7Z29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zPXt9O2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU2NyaXB0RnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVTdHlsZUZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU3R5bGVTaGVldEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnRydXN0ZWRSZXNvdXJjZVVybEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9O2dvb2cuZG9tLnNhZmU9e307Z29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbj17QUZURVJCRUdJTjoiYWZ0ZXJiZWdpbiIsQUZURVJFTkQ6ImFmdGVyZW5kIixCRUZPUkVCRUdJTjoiYmVmb3JlYmVnaW4iLEJFRk9SRUVORDoiYmVmb3JlZW5kIn07Z29vZy5kb20uc2FmZS5pbnNlcnRBZGphY2VudEh0bWw9ZnVuY3Rpb24oYSxiLGMpe2EuaW5zZXJ0QWRqYWNlbnRIVE1MKGIsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChjKSl9O2dvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTXz17TUFUSDohMCxTQ1JJUFQ6ITAsU1RZTEU6ITAsU1ZHOiEwLFRFTVBMQVRFOiEwfTsKZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfPWdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWUoZnVuY3Rpb24oKXtpZihnb29nLkRFQlVHJiYidW5kZWZpbmVkIj09PXR5cGVvZiBkb2N1bWVudClyZXR1cm4hMTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2EuYXBwZW5kQ2hpbGQoYik7aWYoZ29vZy5ERUJVRyYmIWEuZmlyc3RDaGlsZClyZXR1cm4hMTtiPWEuZmlyc3RDaGlsZC5maXJzdENoaWxkO2EuaW5uZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWSk7cmV0dXJuIWIucGFyZW50RWxlbWVudH0pOwpnb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfKCkpZm9yKDthLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmxhc3RDaGlsZCk7YS5pbm5lckhUTUw9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0SW5uZXJIdG1sPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZhLnRhZ05hbWUpe3ZhciBjPWEudGFnTmFtZS50b1VwcGVyQ2FzZSgpO2lmKGdvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTX1tjXSl0aHJvdyBFcnJvcigiZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGNvbnRlbnQgb2YgIithLnRhZ05hbWUrIi4iKTt9Z29vZy5kb20uc2FmZS51bnNhZmVTZXRJbm5lckh0bWxEb05vdFVzZU9yRWxzZShhLGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWxGcm9tQ29uc3RhbnQ9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChhLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJDb25zdGFudCBIVE1MIHRvIGJlIGltbWVkaWF0ZWxseSB1c2VkLiIpLGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChiKSkpfTtnb29nLmRvbS5zYWZlLnNldE91dGVySHRtbD1mdW5jdGlvbihhLGIpe2Eub3V0ZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwoYil9Owpnb29nLmRvbS5zYWZlLnNldEZvcm1FbGVtZW50QWN0aW9uPWZ1bmN0aW9uKGEsYil7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZvcm1FbGVtZW50KGEpLmFjdGlvbj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuc2V0QnV0dG9uRm9ybUFjdGlvbj1mdW5jdGlvbihhLGIpe2I9YiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP2I6Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQoYik7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxCdXR0b25FbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbnB1dEZvcm1BY3Rpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldFN0eWxlPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5jc3NUZXh0PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuZG9jdW1lbnRXcml0ZT1mdW5jdGlvbihhLGIpe2Eud3JpdGUobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSl9Owpnb29nLmRvbS5zYWZlLnNldEFuY2hvckhyZWY9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEFuY2hvckVsZW1lbnQoYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmhyZWY9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEF1ZGlvU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBdWRpb0VsZW1lbnQoYSk7aWYoIShiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpKXt2YXIgYz0vXmRhdGE6YXVkaW9cLy9pLnRlc3QoYik7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiLGMpfWEuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0VmlkZW9TcmM9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudChhKTtpZighKGIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBjPS9eZGF0YTp2aWRlb1wvL2kudGVzdChiKTtiPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIsYyl9YS5zcmM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEVtYmVkU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxFbWJlZEVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldEZyYW1lU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYil9Owpnb29nLmRvbS5zYWZlLnNldElmcmFtZVNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSUZyYW1lRWxlbWVudChhKTthLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKX07Z29vZy5kb20uc2FmZS5zZXRJZnJhbWVTcmNkb2M9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQoYSk7YS5zcmNkb2M9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0TGlua0hyZWZBbmRSZWw9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MTGlua0VsZW1lbnQoYSk7YS5yZWw9Yztnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucyhjLCJzdHlsZXNoZWV0Iik/KGdvb2cuYXNzZXJ0cy5hc3NlcnQoYiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwsJ1VSTCBtdXN0IGJlIFRydXN0ZWRSZXNvdXJjZVVybCBiZWNhdXNlICJyZWwiIGNvbnRhaW5zICJzdHlsZXNoZWV0IicpLGEuaHJlZj1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKSwoYj1nb29nLmRvbS5zYWZlLmdldFN0eWxlTm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKSYmYS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixiKSk6YS5ocmVmPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsP2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGIpOgpiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpOmdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKSl9O2dvb2cuZG9tLnNhZmUuc2V0T2JqZWN0RGF0YT1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudChhKTthLmRhdGE9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldFNjcmlwdFNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MU2NyaXB0RWxlbWVudChhKTtnb29nLmRvbS5zYWZlLnNldE5vbmNlRm9yU2NyaXB0RWxlbWVudF8oYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRDb250ZW50PWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxTY3JpcHRFbGVtZW50KGEpO2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50XyhhKTthLnRleHRDb250ZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYil9O2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50Xz1mdW5jdGlvbihhKXtjb25zdCBiPWdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpO2ImJmEuc2V0QXR0cmlidXRlKCJub25jZSIsYil9Owpnb29nLmRvbS5zYWZlLnNldExvY2F0aW9uSHJlZj1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihhKTtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EuaHJlZj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuYXNzaWduTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb24oYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmFzc2lnbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTsKZ29vZy5kb20uc2FmZS5yZXBsYWNlTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EucmVwbGFjZShnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTtnb29nLmRvbS5zYWZlLm9wZW5JbldpbmRvdz1mdW5jdGlvbihhLGIsYyxkKXthPWEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9hOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGEpO2I9Ynx8Z29vZy5nbG9iYWw7Yz1jIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGMpOmN8fCIiO3JldHVybiB2b2lkIDAhPT1kP2Iub3Blbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYSksYyxkKTpiLm9wZW4oZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLGMpfTsKZ29vZy5kb20uc2FmZS5wYXJzZUZyb21TdHJpbmdIdG1sPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nKGEsYiwidGV4dC9odG1sIil9O2dvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5wYXJzZUZyb21TdHJpbmcobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSxjKX07Cmdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYj1mdW5jdGlvbihhKXtpZighL15pbWFnZVwvLiovZy50ZXN0KGEudHlwZSkpdGhyb3cgRXJyb3IoImdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYiBvbmx5IGFjY2VwdHMgTUlNRSB0eXBlIGltYWdlLy4qLiIpO3ZhciBiPWdvb2cuZ2xvYmFsLlVSTC5jcmVhdGVPYmplY3RVUkwoYSk7YT1uZXcgZ29vZy5nbG9iYWwuSW1hZ2U7YS5vbmxvYWQ9ZnVuY3Rpb24oKXtnb29nLmdsb2JhbC5VUkwucmV2b2tlT2JqZWN0VVJMKGIpfTthLnNyYz1iO3JldHVybiBhfTtnb29nLmRvbS5zYWZlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKGIpKX07Cmdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLnNhZmUuZ2V0Tm9uY2VfKCJzY3JpcHRbbm9uY2VdIixhKX07Z29vZy5kb20uc2FmZS5nZXRTdHlsZU5vbmNlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5zYWZlLmdldE5vbmNlXygnc3R5bGVbbm9uY2VdLGxpbmtbcmVsPSJzdHlsZXNoZWV0Il1bbm9uY2VdJyxhKX07Z29vZy5kb20uc2FmZS5OT05DRV9QQVRURVJOXz0vXltcdysvXy1dK1s9XXswLDJ9JC87Z29vZy5kb20uc2FmZS5nZXROb25jZV89ZnVuY3Rpb24oYSxiKXtiPShifHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuIGIucXVlcnlTZWxlY3Rvcj8oYT1iLnF1ZXJ5U2VsZWN0b3IoYSkpJiYoYT1hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZSgibm9uY2UiKSkmJmdvb2cuZG9tLnNhZmUuTk9OQ0VfUEFUVEVSTl8udGVzdChhKT9hOiIiOiIifTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLlVuaWNvZGU9e05CU1A6Ilx1MDBhMCIsWkVST19XSURUSF9TUEFDRToiXHUyMDBiIn07Z29vZy5zdHJpbmcuc3RhcnRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5zdGFydHNXaXRoO2dvb2cuc3RyaW5nLmVuZHNXaXRoPWdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoO2dvb2cuc3RyaW5nLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFcXVhbHM9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRXF1YWxzOwpnb29nLnN0cmluZy5zdWJzPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hLnNwbGl0KCIlcyIpO2xldCBkPSIiO2NvbnN0IGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2Zvcig7ZS5sZW5ndGgmJjE8Yy5sZW5ndGg7KWQrPWMuc2hpZnQoKStlLnNoaWZ0KCk7cmV0dXJuIGQrYy5qb2luKCIlcyIpfTtnb29nLnN0cmluZy5jb2xsYXBzZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rL2csIiAiKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9O2dvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2U9Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZTtnb29nLnN0cmluZy5pc0VtcHR5U3RyaW5nPWZ1bmN0aW9uKGEpe3JldHVybiAwPT1hLmxlbmd0aH07Z29vZy5zdHJpbmcuaXNFbXB0eT1nb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlOwpnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlU2FmZT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5tYWtlU2FmZShhKSl9O2dvb2cuc3RyaW5nLmlzRW1wdHlTYWZlPWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2VTYWZlO2dvb2cuc3RyaW5nLmlzQnJlYWtpbmdXaGl0ZXNwYWNlPWZ1bmN0aW9uKGEpe3JldHVybiEvW15cdFxuXHIgXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNBbHBoYT1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNOdW1lcmljPWZ1bmN0aW9uKGEpe3JldHVybiEvW14wLTldLy50ZXN0KGEpfTtnb29nLnN0cmluZy5pc0FscGhhTnVtZXJpYz1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aMC05XS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNTcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4iICI9PWF9Owpnb29nLnN0cmluZy5pc1VuaWNvZGVDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiAxPT1hLmxlbmd0aCYmIiAiPD1hJiYifiI+PWF8fCJcdTAwODAiPD1hJiYiXHVmZmZkIj49YX07Z29vZy5zdHJpbmcuc3RyaXBOZXdsaW5lcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXHJcbnxccnxcbikrL2csIiAiKX07Z29vZy5zdHJpbmcuY2Fub25pY2FsaXplTmV3bGluZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csIlxuIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHhhMHxccy9nLCIgIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVNwYWNlcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9ceGEwfFsgXHRdKy9nLCIgIil9Owpnb29nLnN0cmluZy5jb2xsYXBzZUJyZWFraW5nU3BhY2VzPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1tcdFxyXG4gXSsvZywiICIpLnJlcGxhY2UoL15bXHRcclxuIF0rfFtcdFxyXG4gXSskL2csIiIpfTtnb29nLnN0cmluZy50cmltPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW07Z29vZy5zdHJpbmcudHJpbUxlZnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXltcc1x4YTBdKy8sIiIpfTtnb29nLnN0cmluZy50cmltUmlnaHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rJC8sIiIpfTtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb21wYXJlPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU7Cmdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV89ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEpcmV0dXJuLTE7aWYoIWIpcmV0dXJuIDE7Y29uc3QgZD1hLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZT1iLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZj1NYXRoLm1pbihkLmxlbmd0aCxlLmxlbmd0aCk7Zm9yKGxldCBnPTA7ZzxmO2crKyl7Yz1kW2ddO2NvbnN0IGg9ZVtnXTtpZihjIT1oKXJldHVybiBhPXBhcnNlSW50KGMsMTApLCFpc05hTihhKSYmKGI9cGFyc2VJbnQoaCwxMCksIWlzTmFOKGIpJiZhLWIpP2EtYjpjPGg/LTE6MX1yZXR1cm4gZC5sZW5ndGghPWUubGVuZ3RoP2QubGVuZ3RoLWUubGVuZ3RoOmE8Yj8tMToxfTtnb29nLnN0cmluZy5pbnRBd2FyZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcubnVtYmVyQXdhcmVDb21wYXJlXyhhLGIsL1xkK3xcRCsvZyl9Owpnb29nLnN0cmluZy5mbG9hdEF3YXJlQ29tcGFyZT1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLnN0cmluZy5udW1iZXJBd2FyZUNvbXBhcmVfKGEsYiwvXGQrfFwuXGQrfFxEKy9nKX07Z29vZy5zdHJpbmcubnVtZXJhdGVDb21wYXJlPWdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlO2dvb2cuc3RyaW5nLnVybEVuY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSl9O2dvb2cuc3RyaW5nLnVybERlY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEucmVwbGFjZSgvXCsvZywiICIpKX07Z29vZy5zdHJpbmcubmV3TGluZVRvQnI9Z29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnI7Cmdvb2cuc3RyaW5nLmh0bWxFc2NhcGU9ZnVuY3Rpb24oYSxiKXthPWdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSxiKTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuRV9SRV8sIiYjMTAxOyIpKTtyZXR1cm4gYX07Z29vZy5zdHJpbmcuRV9SRV89L2UvZztnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLnN0cmluZy5jb250YWlucyhhLCImIik/IWdvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HJiYiZG9jdW1lbnQiaW4gZ29vZy5nbG9iYWw/Z29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXyhhKTpnb29nLnN0cmluZy51bmVzY2FwZVB1cmVYbWxFbnRpdGllc18oYSk6YX07Cmdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNXaXRoRG9jdW1lbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcuY29udGFpbnMoYSwiJiIpP2dvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNVc2luZ0RvbV8oYSxiKTphfTsKZ29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXz1mdW5jdGlvbihhLGIpe2NvbnN0IGM9eyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIid9O2xldCBkO2Q9Yj9iLmNyZWF0ZUVsZW1lbnQoImRpdiIpOmdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBhLnJlcGxhY2UoZ29vZy5zdHJpbmcuSFRNTF9FTlRJVFlfUEFUVEVSTl8sZnVuY3Rpb24oZSxmKXtsZXQgZz1jW2VdO2lmKGcpcmV0dXJuIGc7IiMiPT1mLmNoYXJBdCgwKSYmKGY9TnVtYmVyKCIwIitmLnNsaWNlKDEpKSxpc05hTihmKXx8KGc9U3RyaW5nLmZyb21DaGFyQ29kZShmKSkpO2d8fChnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChkLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJTaW5nbGUgSFRNTCBlbnRpdHkuIiksCmUrIiAiKSksZz1kLmZpcnN0Q2hpbGQubm9kZVZhbHVlLnNsaWNlKDAsLTEpKTtyZXR1cm4gY1tlXT1nfSl9O2dvb2cuc3RyaW5nLnVuZXNjYXBlUHVyZVhtbEVudGl0aWVzXz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8mKFteO10rKTsvZyxmdW5jdGlvbihiLGMpe3N3aXRjaChjKXtjYXNlICJhbXAiOnJldHVybiImIjtjYXNlICJsdCI6cmV0dXJuIjwiO2Nhc2UgImd0IjpyZXR1cm4iPiI7Y2FzZSAicXVvdCI6cmV0dXJuJyInO2RlZmF1bHQ6cmV0dXJuIiMiIT1jLmNoYXJBdCgwKXx8KGM9TnVtYmVyKCIwIitjLnNsaWNlKDEpKSxpc05hTihjKSk/YjpTdHJpbmcuZnJvbUNoYXJDb2RlKGMpfX0pfTtnb29nLnN0cmluZy5IVE1MX0VOVElUWV9QQVRURVJOXz0vJihbXjtcczwmXSspOz8vZztnb29nLnN0cmluZy53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTsKZ29vZy5zdHJpbmcucHJlc2VydmVTcGFjZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKF58W1xuIF0pIC9nLCIkMSIrZ29vZy5zdHJpbmcuVW5pY29kZS5OQlNQKX07Z29vZy5zdHJpbmcuc3RyaXBRdW90ZXM9ZnVuY3Rpb24oYSxiKXtjb25zdCBjPWIubGVuZ3RoO2ZvcihsZXQgZD0wO2Q8YztkKyspe2NvbnN0IGU9MT09Yz9iOmIuY2hhckF0KGQpO2lmKGEuY2hhckF0KDApPT1lJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09ZSlyZXR1cm4gYS5zdWJzdHJpbmcoMSxhLmxlbmd0aC0xKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcudHJ1bmNhdGU9ZnVuY3Rpb24oYSxiLGMpe2MmJihhPWdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXMoYSkpO2EubGVuZ3RoPmImJihhPWEuc3Vic3RyaW5nKDAsYi0zKSsiLi4uIik7YyYmKGE9Z29vZy5zdHJpbmcuaHRtbEVzY2FwZShhKSk7cmV0dXJuIGF9Owpnb29nLnN0cmluZy50cnVuY2F0ZU1pZGRsZT1mdW5jdGlvbihhLGIsYyxkKXtjJiYoYT1nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzKGEpKTtpZihkJiZhLmxlbmd0aD5iKXtkPmImJihkPWIpO3ZhciBlPWEubGVuZ3RoLWQ7YT1hLnN1YnN0cmluZygwLGItZCkrIi4uLiIrYS5zdWJzdHJpbmcoZSl9ZWxzZSBhLmxlbmd0aD5iJiYoZD1NYXRoLmZsb29yKGIvMiksZT1hLmxlbmd0aC1kLGE9YS5zdWJzdHJpbmcoMCxkK2IlMikrIi4uLiIrYS5zdWJzdHJpbmcoZSkpO2MmJihhPWdvb2cuc3RyaW5nLmh0bWxFc2NhcGUoYSkpO3JldHVybiBhfTtnb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfPXsiXHgwMCI6IlxcMCIsIlxiIjoiXFxiIiwiXGYiOiJcXGYiLCJcbiI6IlxcbiIsIlxyIjoiXFxyIiwiXHQiOiJcXHQiLCJcdiI6IlxceDBCIiwnIic6J1xcIicsIlxcIjoiXFxcXCIsIjwiOiJcXHUwMDNDIn07Z29vZy5zdHJpbmcuanNFc2NhcGVDYWNoZV89eyInIjoiXFwnIn07Cmdvb2cuc3RyaW5nLnF1b3RlPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO2NvbnN0IGI9WyciJ107Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspe2NvbnN0IGQ9YS5jaGFyQXQoYyksZT1kLmNoYXJDb2RlQXQoMCk7YltjKzFdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bZF18fCgzMTxlJiYxMjc+ZT9kOmdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoZCkpfWIucHVzaCgnIicpO3JldHVybiBiLmpvaW4oIiIpfTtnb29nLnN0cmluZy5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKyliW2NdPWdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoYS5jaGFyQXQoYykpO3JldHVybiBiLmpvaW4oIiIpfTsKZ29vZy5zdHJpbmcuZXNjYXBlQ2hhcj1mdW5jdGlvbihhKXtpZihhIGluIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfKXJldHVybiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlX1thXTtpZihhIGluIGdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc18pcmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bYV07bGV0IGI7Y29uc3QgYz1hLmNoYXJDb2RlQXQoMCk7aWYoMzE8YyYmMTI3PmMpYj1hO2Vsc2V7aWYoMjU2PmMpe2lmKGI9IlxceCIsMTY+Y3x8MjU2PGMpYis9IjAifWVsc2UgYj0iXFx1Iiw0MDk2PmMmJihiKz0iMCIpO2IrPWMudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9cmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWJ9O2dvb2cuc3RyaW5nLmNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zOwpnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb250YWlucz1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucztnb29nLnN0cmluZy5jb3VudE9mPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJmI/YS5zcGxpdChiKS5sZW5ndGgtMTowfTtnb29nLnN0cmluZy5yZW1vdmVBdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9YTswPD1iJiZiPGEubGVuZ3RoJiYwPGMmJihkPWEuc2xpY2UoMCxiKSthLnNsaWNlKGIrYykpO3JldHVybiBkfTtnb29nLnN0cmluZy5yZW1vdmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5yZXBsYWNlKGIsIiIpfTtnb29nLnN0cmluZy5yZW1vdmVBbGw9ZnVuY3Rpb24oYSxiKXtiPW5ldyBSZWdFeHAoZ29vZy5zdHJpbmcucmVnRXhwRXNjYXBlKGIpLCJnIik7cmV0dXJuIGEucmVwbGFjZShiLCIiKX07Cmdvb2cuc3RyaW5nLnJlcGxhY2VBbGw9ZnVuY3Rpb24oYSxiLGMpe2I9bmV3IFJlZ0V4cChnb29nLnN0cmluZy5yZWdFeHBFc2NhcGUoYiksImciKTtyZXR1cm4gYS5yZXBsYWNlKGIsYy5yZXBsYWNlKC9cJC9nLCIkJCQkIikpfTtnb29nLnN0cmluZy5yZWdFeHBFc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oWy0oKVxbXF17fSs/Ki4kXF58LDojPCFcXF0pL2csIlxcJDEiKS5yZXBsYWNlKC9ceDA4L2csIlxceDA4Iil9O2dvb2cuc3RyaW5nLnJlcGVhdD1TdHJpbmcucHJvdG90eXBlLnJlcGVhdD9mdW5jdGlvbihhLGIpe3JldHVybiBhLnJlcGVhdChiKX06ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkoYisxKS5qb2luKGEpfTsKZ29vZy5zdHJpbmcucGFkTnVtYmVyPWZ1bmN0aW9uKGEsYixjKXtpZighTnVtYmVyLmlzRmluaXRlKGEpKXJldHVybiBTdHJpbmcoYSk7YT12b2lkIDAhPT1jP2EudG9GaXhlZChjKTpTdHJpbmcoYSk7Yz1hLmluZGV4T2YoIi4iKTstMT09PWMmJihjPWEubGVuZ3RoKTtjb25zdCBkPSItIj09PWFbMF0/Ii0iOiIiO2QmJihhPWEuc3Vic3RyaW5nKDEpKTtyZXR1cm4gZCtnb29nLnN0cmluZy5yZXBlYXQoIjAiLE1hdGgubWF4KDAsYi1jKSkrYX07Z29vZy5zdHJpbmcubWFrZVNhZmU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6U3RyaW5nKGEpfTtnb29nLnN0cmluZy5nZXRSYW5kb21TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSleZ29vZy5ub3coKSkudG9TdHJpbmcoMzYpfTsKZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVWZXJzaW9ucztnb29nLnN0cmluZy5oYXNoQ29kZT1mdW5jdGlvbihhKXtsZXQgYj0wO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7KytjKWI9MzEqYithLmNoYXJDb2RlQXQoYyk+Pj4wO3JldHVybiBifTtnb29nLnN0cmluZy51bmlxdWVTdHJpbmdDb3VudGVyXz0yMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCl8MDtnb29nLnN0cmluZy5jcmVhdGVVbmlxdWVTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iZ29vZ18iK2dvb2cuc3RyaW5nLnVuaXF1ZVN0cmluZ0NvdW50ZXJfKyt9O2dvb2cuc3RyaW5nLnRvTnVtYmVyPWZ1bmN0aW9uKGEpe2NvbnN0IGI9TnVtYmVyKGEpO3JldHVybiAwPT1iJiZnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlKGEpP05hTjpifTtnb29nLnN0cmluZy5pc0xvd2VyQ2FtZWxDYXNlPWZ1bmN0aW9uKGEpe3JldHVybi9eW2Etel0rKFtBLVpdW2Etel0qKSokLy50ZXN0KGEpfTsKZ29vZy5zdHJpbmcuaXNVcHBlckNhbWVsQ2FzZT1mdW5jdGlvbihhKXtyZXR1cm4vXihbQS1aXVthLXpdKikrJC8udGVzdChhKX07Z29vZy5zdHJpbmcudG9DYW1lbENhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC9cLShbYS16XSkvZyxmdW5jdGlvbihiLGMpe3JldHVybiBjLnRvVXBwZXJDYXNlKCl9KX07Z29vZy5zdHJpbmcudG9TZWxlY3RvckNhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCl9O2dvb2cuc3RyaW5nLnRvVGl0bGVDYXNlPWZ1bmN0aW9uKGEsYil7Yj0ic3RyaW5nIj09PXR5cGVvZiBiP2dvb2cuc3RyaW5nLnJlZ0V4cEVzY2FwZShiKToiXFxzIjtyZXR1cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoIiheIisoYj8ifFsiK2IrIl0rIjoiIikrIikoW2Etel0pIiwiZyIpLGZ1bmN0aW9uKGMsZCxlKXtyZXR1cm4gZCtlLnRvVXBwZXJDYXNlKCl9KX07Cmdvb2cuc3RyaW5nLmNhcGl0YWxpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhLmNoYXJBdCgwKSkudG9VcHBlckNhc2UoKStTdHJpbmcoYS5zbGljZSgxKSkudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcucGFyc2VJbnQ9ZnVuY3Rpb24oYSl7aXNGaW5pdGUoYSkmJihhPVN0cmluZyhhKSk7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT8vXlxzKi0/MHgvaS50ZXN0KGEpP3BhcnNlSW50KGEsMTYpOnBhcnNlSW50KGEsMTApOk5hTn07Z29vZy5zdHJpbmcuc3BsaXRMaW1pdD1mdW5jdGlvbihhLGIsYyl7YT1hLnNwbGl0KGIpO2NvbnN0IGQ9W107Zm9yKDswPGMmJmEubGVuZ3RoOylkLnB1c2goYS5zaGlmdCgpKSxjLS07YS5sZW5ndGgmJmQucHVzaChhLmpvaW4oYikpO3JldHVybiBkfTsKZ29vZy5zdHJpbmcubGFzdENvbXBvbmVudD1mdW5jdGlvbihhLGIpe2lmKGIpInN0cmluZyI9PXR5cGVvZiBiJiYoYj1bYl0pO2Vsc2UgcmV0dXJuIGE7bGV0IGM9LTE7Zm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKCIiPT1iW2RdKWNvbnRpbnVlO2NvbnN0IGU9YS5sYXN0SW5kZXhPZihiW2RdKTtlPmMmJihjPWUpfXJldHVybi0xPT1jP2E6YS5zbGljZShjKzEpfTsKZ29vZy5zdHJpbmcuZWRpdERpc3RhbmNlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1bXSxkPVtdO2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEubGVuZ3RofHwhYi5sZW5ndGgpcmV0dXJuIE1hdGgubWF4KGEubGVuZ3RoLGIubGVuZ3RoKTtmb3IodmFyIGU9MDtlPGIubGVuZ3RoKzE7ZSsrKWNbZV09ZTtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtkWzBdPWUrMTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKylkW2YrMV09TWF0aC5taW4oZFtmXSsxLGNbZisxXSsxLGNbZl0rTnVtYmVyKGFbZV0hPWJbZl0pKTtmb3IoZj0wO2Y8Yy5sZW5ndGg7ZisrKWNbZl09ZFtmXX1yZXR1cm4gZFtiLmxlbmd0aF19O2dvb2cuc3RyaW5nLnBhdGg9e307Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZT1mdW5jdGlvbihhKXtjb25zdCBiPWEubGFzdEluZGV4T2YoIi8iKSsxO3JldHVybiBhLnNsaWNlKGIpfTtnb29nLnN0cmluZy5wYXRoLmJhc2VuYW1lPWdvb2cuc3RyaW5nLnBhdGguYmFzZU5hbWU7Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLyIpKzE7YT1hLnNsaWNlKDAsYik7L15cLyskLy50ZXN0KGEpfHwoYT1hLnJlcGxhY2UoL1wvKyQvLCIiKSk7cmV0dXJuIGF9O2dvb2cuc3RyaW5nLnBhdGguZXh0ZW5zaW9uPWZ1bmN0aW9uKGEpe2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKS5yZXBsYWNlKC9cLisvZywiLiIpO2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLiIpO3JldHVybiAwPj1iPyIiOmEuc2xpY2UoYisxKX07Cmdvb2cuc3RyaW5nLnBhdGguam9pbj1mdW5jdGlvbihhKXtsZXQgYj1hcmd1bWVudHNbMF07Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107Yj1nb29nLnN0cmluZy5zdGFydHNXaXRoKGQsIi8iKT9kOiIiPT1ifHxnb29nLnN0cmluZy5lbmRzV2l0aChiLCIvIik/YitkOmIrKCIvIitkKX1yZXR1cm4gYn07Cmdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aD1mdW5jdGlvbihhKXtpZigiIj09YSlyZXR1cm4iLiI7bGV0IGI9IiI7Z29vZy5zdHJpbmcuc3RhcnRzV2l0aChhLCIvIikmJihiPSIvIixnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vIikmJiFnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vLyIpJiYoYj0iLy8iKSk7YT1hLnNwbGl0KCIvIik7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdOyIiIT1lJiYiLiIhPWUmJigiLi4iIT1lfHwhYiYmIWMubGVuZ3RofHwiLi4iPT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGMpP2MucHVzaChlKTpjLnBvcCgpKX1yZXR1cm4gYitjLmpvaW4oIi8iKXx8Ii4ifTtnb29nLnN0cmluZy5wYXRoLnNwbGl0PWZ1bmN0aW9uKGEpe2NvbnN0IGI9Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lKGEpO2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKTtyZXR1cm5bYixhXX07Y29uc3QgREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ITE7ZnVuY3Rpb24gYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4vXlwvL2cudGVzdChhKT9hOmAvJHthfWB9ZnVuY3Rpb24gcmVtb3ZlTGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4gYS5yZXBsYWNlKC9eXC8vZywiIil9ZnVuY3Rpb24gc2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7cmV0dXJuKGEmKFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpKSE9PWdvb2cuZ2xvYmFsLkJpZ0ludCgwKX0KZnVuY3Rpb24gcGVyZm9ybWFuY2VOb3dQb2x5JCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHBlcmZvcm1hbmNlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe2NvbnN0IGE9RGF0ZS5ub3coKTtyZXR1cm4gRGF0ZS5ub3coKS1hfXJldHVybiBwZXJmb3JtYW5jZS5ub3coKX1mdW5jdGlvbiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7dmFyIGI9YS5yZWR1Y2UoKGQsZSk9PmQrZS5sZW5ndGgsMCk7aWYoMCE9PWEubGVuZ3RoKXtiPW5ldyBVaW50OEFycmF5KGIpO3ZhciBjPTA7Zm9yKGNvbnN0IGQgb2YgYSliLnNldChkLGMpLGMrPWQubGVuZ3RoO3JldHVybiBifX0KY29uc3QgV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ZnVuY3Rpb24oe30pe3RoaXMuZmQ9QXJyYXkuZnJvbSh7bGVuZ3RoOjR9KTt0aGlzLmZkWzBdPXtmZDowLHBhdGg6Ii9kZXYvc3RkaW4iLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6W10sb3BlbjohMX07dGhpcy5mZFsxXT17ZmQ6MSxwYXRoOiIvZGV2L3N0ZG91dCIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmZkWzJdPXtmZDoyLHBhdGg6Ii9kZXYvc3RkZXJyIixzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltdLG9wZW46ITF9O3RoaXMuZmRbM109e2ZkOjMscGF0aDoiLyIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmdldE1lbW9yeT10aGlzLmdldE1lbW9yeS5iaW5kKHRoaXMpO3RoaXMuQ1BVVElNRV9TVEFSVD0wfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEpe3RoaXMuQ1BVVElNRV9TVEFSVD1wZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCk7YS5leHBvcnRzLl9zdGFydCgpfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZ2V0SW1wb3J0cz1mdW5jdGlvbihhKXtjb25zdCBiPXt9O2E9V2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMoYSk7Zm9yKGNvbnN0IGMgb2YgYSkiZnVuY3Rpb24iPT09Yy5raW5kJiZjLm1vZHVsZS5zdGFydHNXaXRoKCJ3YXNpXyIpJiYoIm9iamVjdCIhPT10eXBlb2YgYltjLm1vZHVsZV0mJihiW2MubW9kdWxlXT17fSksYltjLm1vZHVsZV1bYy5uYW1lXT10aGlzW2MubmFtZV0uYmluZCh0aGlzKSk7cmV0dXJuIGJ9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2V0TWVtb3J5PWZ1bmN0aW9uKGEpe3RoaXMubWVtb3J5PWF9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5nZXRNZW1vcnk9ZnVuY3Rpb24oKXt0aGlzLnZpZXcmJnRoaXMudmlldy5idWZmZXImJnRoaXMudmlldy5idWZmZXIuYnl0ZUxlbmd0aHx8KHRoaXMudmlldz1uZXcgRGF0YVZpZXcodGhpcy5tZW1vcnkuYnVmZmVyKSk7cmV0dXJuIHRoaXMudmlld307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLm1zVG9Ocz1mdW5jdGlvbihhKXtjb25zdCBiPU1hdGgudHJ1bmMoYSk7YT1nb29nLmdsb2JhbC5CaWdJbnQoTWF0aC5yb3VuZCgxRTYqKGEtYikpKTtyZXR1cm4gZ29vZy5nbG9iYWwuQmlnSW50KGIpKmdvb2cuZ2xvYmFsLkJpZ0ludCgxRTYpK2F9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUubm93PWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIFdBU0lfQ0xPQ0tfTU9OT1RPTklDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiBNYXRoLmZsb29yKHBlcmZvcm1hbmNlTm93UG9seSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKSk7Y2FzZSBXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiB0aGlzLm1zVG9OcyhEYXRlLm5vdygpKTtjYXNlIFdBU0lfQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOmNhc2UgV0FTSV9DTE9DS19USFJFQURfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpyZXR1cm4gTWF0aC5mbG9vcihwZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCktdGhpcy5DUFVUSU1FX1NUQVJUKTsKZGVmYXVsdDpyZXR1cm4gMH19O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5hcmdzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmFyZ3Nfc2l6ZXNfZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJhcmdzX3NpemVzX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfcmVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfdGltZV9nZXQ9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiY2xvY2tfdGltZV9nZXQiLGEsYixjLGFyZ3VtZW50cyk7Y29uc3QgZD10aGlzLmdldE1lbW9yeSgpLGU9dGhpcy5ub3coYSk7ZC5zZXRCaWdVaW50NjQoYyxnb29nLmdsb2JhbC5CaWdJbnQoZSksITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmVudmlyb25fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJlbnZpcm9uX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5lbnZpcm9uX3NpemVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZW52aXJvbl9zaXplc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FkdmlzZT1mdW5jdGlvbihhLGIsYyxkKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FkdmlzZSIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FsbG9jYXRlPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FsbG9jYXRlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9jbG9zZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Nsb3NlIixhLGFyZ3VtZW50cyk7dGhpcy5mZFthXSYmKHRoaXMuZmRbYV0ub3Blbj0hMSk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9kYXRhc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2RhdGFzeW5jIixhLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmRzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmRzdGF0X2dldCIsYSxiLGFyZ3VtZW50cyk7Y29uc3QgYz10aGlzLmdldE1lbW9yeSgpO2Muc2V0VWludDgoYis0LFdBU0lfRklMRVRZUEVfUkVHVUxBUl9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtjLnNldFVpbnQxNihiKzIsMCwhMCk7Yy5zZXRVaW50MTYoYis0LDAsITApO2Muc2V0QmlnVWludDY0KGIrOCxnb29nLmdsb2JhbC5CaWdJbnQoUklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKSwhMCk7Yy5zZXRCaWdVaW50NjQoYis4KzgsZ29vZy5nbG9iYWwuQmlnSW50KFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyksCiEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfZmxhZ3M9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfZmxhZ3MiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfcmlnaHRzPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfcmlnaHRzIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfZ2V0IixhLGIsYXJndW1lbnRzKTtsZXQgYz0wO3RoaXMuZmRbYV0mJihjPXRoaXMuZmRbYV0uYnVmZmVycy5yZWR1Y2UoZnVuY3Rpb24oZSxmKXtyZXR1cm4gZSsobnVsbD09Zj92b2lkIDA6Zi5ieXRlTGVuZ3RoKT9udWxsPT1mP3ZvaWQgMDpmLmJ5dGVMZW5ndGg6MH0sMCkpO2NvbnN0IGQ9dGhpcy5nZXRNZW1vcnkoKTtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldFVpbnQ4KGIsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2IrPTg7ZC5zZXRCaWdVaW50NjQoYiwKZ29vZy5nbG9iYWwuQmlnSW50KDEpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsZ29vZy5nbG9iYWwuQmlnSW50KGMpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsdGhpcy5tc1RvTnModGhpcy5DUFVUSU1FX1NUQVJUKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLHRoaXMubXNUb05zKHRoaXMuQ1BVVElNRV9TVEFSVCksITApO2Quc2V0QmlnVWludDY0KGIrOCx0aGlzLm1zVG9Ocyh0aGlzLkNQVVRJTUVfU1RBUlQpLCEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X3NldF9zaXplPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9maWxlc3RhdF9zZXRfc2l6ZSIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmlsZXN0YXRfc2V0X3RpbWVzPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9wcmVhZD1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlYWQiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3ByZXN0YXRfZGlyX25hbWU9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlc3RhdF9kaXJfbmFtZSIsYSxiLGMsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0mJiF0aGlzLmZkW2EtMV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7KHtwYXRoOmN9PXRoaXMuZmRbYV0pO2E9dGhpcy5nZXRNZW1vcnkoKTtjPWVuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoYyk7KG5ldyBVaW50OEFycmF5KGEuYnVmZmVyKSkuc2V0KGMsYik7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcHJlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3ByZXN0YXRfZ2V0IixhLGIsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7dmFyIHtwYXRoOmN9PXRoaXMuZmRbYV07YT10aGlzLmdldE1lbW9yeSgpO2M9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShjKTthLnNldFVpbnQ4KGIsV0FTSV9QUkVPUEVOVFlQRV9ESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2Euc2V0VWludDMyKGIrNCxjLmJ5dGVMZW5ndGgsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3B3cml0ZT1mdW5jdGlvbihhLGIsYyxkLGUpe2NvbnNvbGUubG9nKCJmZF9wd3JpdGUiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3JlYWQ9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9yZWFkIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmZkW2FdJiZ0aGlzLmZkW2FdLmJ1ZmZlcnM7dmFyIGY9ZS5yZWR1Y2UoKG4scCk9Pm4rcC5sZW5ndGgsMCk7Y29uc3QgZz10aGlzLmdldE1lbW9yeSgpO2lmKGUmJjAhPT1lLmxlbmd0aCl7dmFyIGg9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyksaz0wLGw9ITE7aWYoaD49ZilyZXR1cm4gaz1nLmdldFVpbnQzMihiLCEwKSxnLnNldFVpbnQ4KGssIlx4MDAiKSxnLnNldFVpbnQzMihkLDAsITApLFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Zm9yKGY9MDtmPGM7ZisrKXt2YXIgbT1iKzgqZjtjb25zdCBuPWcuZ2V0VWludDMyKG0sITApO209Zy5nZXRVaW50MzIobSsKNCwhMCk7bHx8KGsrPW0sQXJyYXkuZnJvbSh7bGVuZ3RoOm19LChwLHEpPT5xKS5yZWR1Y2UoKHAscSk9PntpZihsKXJldHVybiBwO2NvbnN0IFt1LHRdPXA7bGV0IHY9cD0wLEE9ITEseT0wLHI7aWYoMD09PXEpZm9yKDshQTspcj1lW3BdP2VbcF0uYnl0ZUxlbmd0aDowLHk8PWgmJnIreT5oPyhBPSEwLHY9aC15KTooeSs9cixwKz0xKTtlbHNlIHA9dSx2PXQ7ZVtwXT8oZy5zZXRVaW50OChuK3EsZVtwXVt2XSksdisxPj1lW3BdLmJ5dGVMZW5ndGg/KHA9dSsxLHY9MCk6dis9MSk6KGcuc2V0VWludDgobitxLCJceDAwIiksaCs9cSxsPSEwKTtyZXR1cm5bcCx2XX0sWzAsMF0pLGx8fChoKz1tKSl9dGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludChoKTtnLnNldFVpbnQzMihkLGssITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfWNvbnNvbGUuZXJyb3IoIlJlYWRpbmcgbm9uIGV4aXN0ZW50IGZpbGUiLGEsdGhpcy5mZFthXSl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcmVhZGRpcj1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVhZGRpciIsYSxiLGMsZCxlLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9yZW51bWJlcj1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVudW1iZXIiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3NlZWs9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9zZWVrIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmdldE1lbW9yeSgpO3N3aXRjaChjKXtjYXNlIFdBU0lfV0hFTkNFX0NVUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czp2YXIgZjt0aGlzLmZkW2FdLnNlZWtQb3M9KG51bGwhPShmPXRoaXMuZmRbYV0uc2Vla1Bvcyk/Zjpnb29nLmdsb2JhbC5CaWdJbnQoMCkpK2dvb2cuZ2xvYmFsLkJpZ0ludChiKTticmVhaztjYXNlIFdBU0lfV0hFTkNFX0VORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpmPSh0aGlzLmZkW2FdLmJ1ZmZlcnN8fFtdKS5yZWR1Y2UoKGcsaCk9PmcraC5sZW5ndGgsMCk7dGhpcy5mZFthXS5zZWVrUG9zPUJpZ0ludChmKStCaWdJbnQoYik7YnJlYWs7CmNhc2UgV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnRoaXMuZmRbYV0uc2Vla1Bvcz1CaWdJbnQoYil9ZS5zZXRCaWdVaW50NjQoZCx0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3N5bmMiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF90ZWxsPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF90ZWxsIixhLGIsYXJndW1lbnRzKTtjb25zdCBjPXRoaXMuZ2V0TWVtb3J5KCk7dGhpcy5mZFthXS5zZWVrUG9zfHwodGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSk7Yy5zZXRCaWdVaW50NjQoYix0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3dyaXRlPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfd3JpdGUiLHtmZDphLGlvdnM6Yixpb3ZzTGVuZ3RoOmMsbndyaXR0ZW46ZH0pO2NvbnN0IGU9dGhpcy5nZXRNZW1vcnkoKTt0aGlzLmZkW2FdLmJ1ZmZlcnM9dGhpcy5mZFthXS5idWZmZXJzfHxbXTt0aGlzLmZkW2FdLmJ1ZmZlcnM9MDx0aGlzLmZkW2FdLmJ1ZmZlcnMubGVuZ3RoP1tjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kodGhpcy5mZFthXS5idWZmZXJzKV06dGhpcy5mZFthXS5idWZmZXJzO2xldCBmPTA7Zm9yKGxldCBrPTA7azxjO2srKyl7dmFyIGc9Yis4KmssaD1lLmdldFVpbnQzMihnLCEwKTtnPWUuZ2V0VWludDMyKGcrNCwhMCk7Zis9ZztoPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGgsZyk7aWYodGhpcy5mZFthXS5idWZmZXJzWzBdJiYKdGhpcy5mZFthXS5zZWVrUG9zPHRoaXMuZmRbYV0uYnVmZmVyc1swXS5sZW5ndGgpe2NvbnN0IGw9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyk7aC5zbGljZSgwLGcpLmZvckVhY2goKG0sbik9Pnt0aGlzLmZkW2FdLmJ1ZmZlcnNbMF1bbCtuXT1tfSl9ZWxzZSB0aGlzLmZkW2FdLmJ1ZmZlcnMucHVzaChoLnNsaWNlKDAsZykpfXRoaXMuZmRbYV0uc2Vla1Bvcys9Z29vZy5nbG9iYWwuQmlnSW50KGYpO2Uuc2V0VWludDMyKGQsZiwhMCk7WzEsMl0uaW5jbHVkZXMoYSkmJmNvbnNvbGUubG9nKGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGUoY29uY2F0VWludDhBcnJheXMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHRoaXMuZmRbYV0uYnVmZmVycykpKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2NyZWF0ZV9kaXJlY3Rvcnk9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9jcmVhdGVfZGlyZWN0b3J5IixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9maWxlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfZ2V0IixhLGIsYyxkLGUsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2ZpbGVzdGF0X3NldF90aW1lcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGUsZixnLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2xpbms9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX2xpbmsiLGEsYixjLGQsZSxmLGcsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX29wZW49ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9vcGVuIixhLGIsYyxkLGUsZixnLGgsayxhcmd1bWVudHMpO2NvbnN0IGw9dGhpcy5nZXRNZW1vcnkoKTt2YXIgbT0odGhpcy5mZFthXXx8e3BhdGg6Ii8ifSkucGF0aCxuPW5ldyBVaW50OEFycmF5KGwuYnVmZmVyLGMsZCk7bj1kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKG4pO2NvbnN0IHA9YXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGdvb2cuc3RyaW5nLnBhdGguam9pbigzPT09YT8iIjptLG4pKSk7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCI7OyBvcGVuaW5nIHBhdGgiLApwLCJ3aXRoUkVhZGVyIixzaG91bGRPcGVuUmVhZGVyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShmKSk7aWYocC5zdGFydHNXaXRoKCIvLi4iKXx8Ii8uXyI9PT1wfHwiLy5BcHBsZURvdWJsZSI9PT1wKXJldHVybiBXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOyhtPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZChxPT5xLnBhdGg9PT1wJiZBcnJheS5pc0FycmF5KHEuYnVmZmVycykpKT9uPW0uZmQ6KG49dGhpcy5mZC5sZW5ndGgsdGhpcy5mZFtuXT17ZmQ6bn0pO3RoaXMuZmRbbl09ey4uLnRoaXMuZmRbbl0scGF0aDpwLHR5cGU6ImZpbGUiLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6bT90aGlzLmZkW25dLmJ1ZmZlcnM6W10sb3BlbjohMH07c2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZikmJkRFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic2hvdWxkIG9wZW4gYSByZWFkIGhhbmRsZSBmb3IiLApwKTtsLnNldFVpbnQzMihrLG4sITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZWFkbGluaz1mdW5jdGlvbihhLGIsYyxkLGUsZil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3JlYWRsaW5rIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZW1vdmVfZGlyZWN0b3J5PWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVtb3ZlX2RpcmVjdG9yeSIsYSxiLGMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfcmVuYW1lPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVuYW1lIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9zeW1saW5rPWZ1bmN0aW9uKGEsYixjLGQsZSl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3N5bWxpbmsiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfdW5saW5rX2ZpbGU9ZnVuY3Rpb24oYSxiLGMpezM8YSYmREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3VubGlua19maWxlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucG9sbF9vbmVvZmY9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwb2xsX29uZW9mZiIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnByb2NfZXhpdD1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfZXhpdCIsYSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucHJvY19yYWlzZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfcmFpc2UiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yYW5kb21fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJyYW5kb21fZ2V0IixhLGIpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2NoZWRfeWllbGQ9ZnVuY3Rpb24oKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInNjaGVkX3lpZWxkIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfcmVjdj1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19yZWN2Iixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfc2VuZD1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19zZW5kIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5zb2NrX3NodXRkb3duPWZ1bmN0aW9uKCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJzb2NrX3NodXRkb3duIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZpbmRCdWZmZXJzPWZ1bmN0aW9uKGEpe2NvbnN0IGI9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDpjfSk9PmM9PT1hKTtyZXR1cm5bYiYmYi5idWZmZXJzLGIuZmRdfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnJlYWRkaXI9ZnVuY3Rpb24oYSl7Y29uc3QgYj0oYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGEpKSsiLyIpLnJlcGxhY2UoIi8vIiwiLyIpLGM9W107T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5mb3JFYWNoKCh7cGF0aDpkfSk9PiEvXC8vZy50ZXN0KGQucmVwbGFjZShiLCIiKSkmJmMucHVzaChkKSk7cmV0dXJuIGMubWFwKGQ9PnJlbW92ZUxlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZC5yZXBsYWNlKGIsIiIpKSkuZmlsdGVyKGQ9PiEhZCl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUud3JpdGVGaWxlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpO2E9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoO2NvbnN0IGQ9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDplfSk9PmU9PT1jKTt0aGlzLmZkW2FdPXtmZDphLHBhdGg6YyxzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltiXX07ZCYmZGVsZXRlIHRoaXMuZmRbZF19OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuYXBwZW5kRmlsZT1mdW5jdGlvbihhLGIpe3ZhciBjPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSk7W2NdPXRoaXMuZmluZEJ1ZmZlcnMoYyk7Yz9jLnB1c2goYik6Y29uc29sZS5lcnJvcihgQ2FuJ3QgYXBwZW5kIHRvIG5vbi1leGlzdGluZyBmaWxlICR7YX1gKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkRmlsZT1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksW2MsZF09dGhpcy5maW5kQnVmZmVycyhiKTt0aGlzLmZkW2RdJiZ0aGlzLmZkW2RdLm9wZW4mJmNvbnNvbGUud2FybihgcmVhZEZpbGU6IGZpbGUgJHthfSBoYXNuJ3QgYmVlbiBjbG9zZWQgeWV0IWApO2lmKGMpcmV0dXJuIGNvbmNhdFVpbnQ4QXJyYXlzJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShjKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkU3RkT3V0PWZ1bmN0aW9uKCl7Y29uc3QgYT1PYmplY3QudmFsdWVzKHRoaXMuZmRbMF0pO3JldHVybiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSYmYS5idWZmZXJzfHxbXSl9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS51bmxpbms9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpOyhhPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZCgoe3BhdGg6Y30pPT5jPT09YikpP2RlbGV0ZSB0aGlzLmZkW2FdOmNvbnNvbGUuZXJyb3IoYFdoaWxlIHRyeWluZyB0byB1bmxpbmsgJHtifSwgcGF0aCBub3QgZm91bmRgKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5ta2Rpcj1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksYz1bXTtPYmplY3QudmFsdWVzKHRoaXMuZmQpLmZvckVhY2goKHtwYXRoOmR9KT0+ZC5zdGFydHNXaXRoKGIpJiZjLnB1c2goZCkpOzA8Yy5sZW5ndGg/Y29uc29sZS53YXJuKGBta2RpcjogcGF0aCAke2F9IGFscmVhZHkgZXhpc3RzYCk6KGE9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoLHRoaXMuZmRbYV09e2ZkOmEscGF0aDpifSl9O3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaT17fTttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5XQVNJPVdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpO2Z1bmN0aW9uIGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYSl7Zm9yKDswPGEubGVuZ3RoOylhLnBvcCgpfXZhciBtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5PXt9O21vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkuY2xlYXJBcnJheT1jbGVhckFycmF5JCRtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5O3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9e2RlZmF1bHQ6e319O21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0Ll9fZXNNb2R1bGU9ITA7bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQuTG9nZ2VyRmFjdG9yeT1tb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHM9dm9pZCAwO21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVscz17bG9nX3JhaXNlX2Vycm9yOjEsbG9nX3dpdGhfd2FybmluZ3M6Mix0cmFjZTozLGRlYnVnOjQsaW5mbzo1LHdhcm46NixlcnJvcjo3LGRpc2FibGU6OH07CnZhciBMb2dnZXJGYWN0b3J5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7aWYodm9pZCAwPT09YiYmKGI9ImxvZ193aXRoX3dhcm5pbmdzIiksdm9pZCAwPT09YyYmKGM9bnVsbCksdGhpcy5sb2dMZXZlbD1iLCFtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbYl0pdGhyb3cgRXJyb3IoIkludmFsaWQgbG9nIGxldmVsICIrYisiIGFsbG93ZWQ6ICIrSlNPTi5zdHJpbmdpZnkobW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzKSk7dGhpcy5tb2NrQ29uc29sZT1jfHxjb25zb2xlfXJldHVybiBhLnByb3RvdHlwZS5kdW1teT1mdW5jdGlvbigpe30sYS5wcm90b3R5cGUuc2V0TG9nV2FybmluZ3M9ZnVuY3Rpb24oYil7dGhpcy5sb2dMZXZlbD1ifSxhLnByb3RvdHlwZS5nZXRMb2dXYXJuaW5ncz0KZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2dMZXZlbH0sYS5wcm90b3R5cGUuZ2V0U2luZ2xlTG9nZ2VyQ29sb3I9ZnVuY3Rpb24oYixjLGQpe3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGMpLGQpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXI9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLmdldFJhbmRvbUNvbG9yKGIpO3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGQpLGMpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXJTdHlsZT1mdW5jdGlvbihiLGMsZCxlKXt2YXIgZj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT0ibG9nX3dpdGhfd2FybmluZ3MiKSxmdW5jdGlvbigpe2Zvcih2YXIgZz1bXSxoPTA7aDxhcmd1bWVudHMubGVuZ3RoO2grKylnW2hdPWFyZ3VtZW50c1toXTtpZihtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbZi5sb2dMZXZlbF0+Cm1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tlXSlyZXR1cm4gZi5kdW1teTtnPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGcpO2g9Zy5zaGlmdCgpLnNwbGl0KCJ7fSIpO2Zvcih2YXIgaz1bZi5tb2NrQ29uc29sZSwiJWMiK2IsY10sbD0wO2w8aC5sZW5ndGg7bCsrKWsucHVzaChoW2xdKSx2b2lkIDAhPT1nW2xdJiZrLnB1c2goZ1tsXSk7aWYoaC5sZW5ndGgtMSE9PWcubGVuZ3RoKWlmKCJsb2dfd2l0aF93YXJuaW5ncyI9PT1mLmxvZ0xldmVsKWYubW9ja0NvbnNvbGUuZXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7ZWxzZSBpZigibG9nX3JhaXNlX2Vycm9yIj09PWYubG9nTGV2ZWwpdGhyb3cgRXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KGQsayl9fSxhLnByb3RvdHlwZS5nZXRMb2dnZXJDb2xvcj1mdW5jdGlvbihiLApjKXtyZXR1cm4gdGhpcy5nZXRMb2dnZXJTdHlsZShiLHRoaXMuZ2V0Q29sb3JTdHlsZShjKSl9LGEucHJvdG90eXBlLmdldENvbG9yU3R5bGU9ZnVuY3Rpb24oYil7cmV0dXJuImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogIitiKyI7IHBhZGRpbmc6IDJweCA2cHg7IGJvcmRlci1yYWRpdXM6IDJweDsgZm9udC1zaXplOiAxMHB4In0sYS5nZXRIYXNoPWZ1bmN0aW9uKGIsYyl7dm9pZCAwPT09YyYmKGM9MCk7dmFyIGQ9MzczNTkyODU1OV5jO2NePTExMDM1NDc5OTE7Zm9yKHZhciBlPTAsZjtlPGIubGVuZ3RoO2UrKylmPWIuY2hhckNvZGVBdChlKSxkPU1hdGguaW11bChkXmYsMjY1NDQzNTc2MSksYz1NYXRoLmltdWwoY15mLDE1OTczMzQ2NzcpO3JldHVybiBkPU1hdGguaW11bChkXmQ+Pj4xNiwyMjQ2ODIyNTA3KV5NYXRoLmltdWwoY15jPj4+MTMsMzI2NjQ4OTkwOSksNDI5NDk2NzI5NiooMjA5NzE1MSYoTWF0aC5pbXVsKGNeYz4+PjE2LDIyNDY4MjI1MDcpXk1hdGguaW11bChkXgpkPj4+MTMsMzI2NjQ4OTkwOSkpKSsoZD4+PjApfSxhLnByb3RvdHlwZS5nZXRSYW5kb21Db2xvcj1mdW5jdGlvbihiKXt2b2lkIDA9PT1iJiYoYj0iIik7Yj1hLmdldEhhc2goYik7Zm9yKHZhciBjPSIjIixkPTA7Mz5kO2QrKyljKz0oIjAwIisoOCsoYj4+NypkJjEyNykpLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC0yKTtyZXR1cm4gY30sYS5wcm90b3R5cGUuZ2V0TG9nZ2VyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmdldExvZ2dlckNvbG9yKGIsdGhpcy5nZXRSYW5kb21Db2xvcihiKSl9LGEucHJvdG90eXBlLmdldExvZ2dlclN0eWxlPWZ1bmN0aW9uKGIsYyl7cmV0dXJue3RyYWNlOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUudHJhY2UsInRyYWNlIiksZGVidWc6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5kZWJ1ZywiZGVidWciKSxsb2c6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5sb2csCiJpbmZvIiksd2Fybjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLndhcm4sIndhcm4iKSxlcnJvcjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmVycm9yLCJlcnJvciIpfX0sYX0oKTttb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5Mb2dnZXJGYWN0b3J5PUxvZ2dlckZhY3RvcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleDtsZXQgbG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTUE5NYWluU2luZ2xlJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTaW5nbGV0aHJlYWRXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ01pZGlSZXF1ZXN0JCRtb2R1bGUkc3JjJGxvZ2dlcjsKY29uc3QgaXNQcm9kJCRtb2R1bGUkc3JjJGxvZ2dlcj0xO2xvZ1dvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dJbmRleCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nU1BOTWFpblNpbmdsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307CmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e30sbW9kdWxlJHNyYyRsb2dnZXI9e307bW9kdWxlJHNyYyRsb2dnZXIuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nQ29tbW9uVXRpbHM9bG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ0luZGV4PWxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nTWlkaVJlcXVlc3Q9bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ09sZFNwbk1haW49bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nT2xkU3BuV29ya2VyPWxvZ09sZFNwbldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nU0FCTWFpbj1sb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTQUJXb3JrZXI9bG9nU0FCV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTUE5NYWluU2luZ2xlPWxvZ1NQTk1haW5TaW5nbGUkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluPWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlcj1sb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dWQU5NYWluPWxvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1ZBTldvcmtlcj1sb2dWQU5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dhc21Nb2R1bGU9bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV29ya2xldE1haW49bG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dvcmtsZXRXb3JrZXI9bG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7Y29uc3QgQ29tcHJlc3Npb25NZXRob2QkJG1vZHVsZSRzcmMkemxpYiR6bGliPXtERUZMQVRFOjgsUkVTRVJWRUQ6MTV9O3ZhciBtb2R1bGUkc3JjJHpsaWIkemxpYj17fTttb2R1bGUkc3JjJHpsaWIkemxpYi5Db21wcmVzc2lvbk1ldGhvZD1Db21wcmVzc2lvbk1ldGhvZCQkbW9kdWxlJHNyYyR6bGliJHpsaWI7LyoKIHpsaWIuanMgMjAxMiAtIGltYXlhIFsgaHR0cHM6Ly9naXRodWIuY29tL2ltYXlhL3psaWIuanMgXSBUaGUgTUlUIExpY2Vuc2UgKi8KZnVuY3Rpb24gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl7Y29uc3QgYj1hLmxlbmd0aDtsZXQgYz0wLGQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGUsZixnLGg7bGV0IGssbDtmb3Ioaz0wO2s8YjsrK2spYVtrXT5jJiYoYz1hW2tdKSxhW2tdPGQmJihkPWFba10pO2NvbnN0IG09MTw8YyxuPW5ldyBVaW50MzJBcnJheShtKTtlPTE7Zj0wO2ZvcihnPTI7ZTw9Yzspe2ZvcihrPTA7azxiOysraylpZihhW2tdPT09ZSl7aD0wO3ZhciBwPWY7Zm9yKGw9MDtsPGU7KytsKWg9aDw8MXxwJjEscD4+PTE7cD1lPDwxNnxrO2ZvcihsPWg7bDxtO2wrPWcpbltsXT1wOysrZn0rK2U7Zjw8PTE7Zzw8PTF9cmV0dXJuW24sYyxkXX12YXIgbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW49e307bW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4uSHVmZm1hbj1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbjtjb25zdCBaTElCX1JBV19JTkZMQVRFX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT0zMjc2ODsKZnVuY3Rpb24gUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUoYSxiKXt0aGlzLmJsb2Nrcz1bXTt0aGlzLmJ1ZmZlclNpemU9WkxJQl9SQVdfSU5GTEFURV9CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGU7dGhpcy5iaXRzYnVmbGVuPXRoaXMuYml0c2J1Zj10aGlzLmlwPXRoaXMudG90YWxwb3M9MDt0aGlzLmlucHV0PW5ldyBVaW50OEFycmF5KGEpO3RoaXMuYmZpbmFsPSExO3RoaXMuYnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFO3RoaXMucmVzaXplPSExO2lmKGJ8fCEoYj17fSkpYi5pbmRleCYmKHRoaXMuaXA9Yi5pbmRleCksYi5idWZmZXJTaXplJiYodGhpcy5idWZmZXJTaXplPWIuYnVmZmVyU2l6ZSksYi5idWZmZXJUeXBlJiYodGhpcy5idWZmZXJUeXBlPWIuYnVmZmVyVHlwZSksYi5yZXNpemUmJih0aGlzLnJlc2l6ZT1iLnJlc2l6ZSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMub3A9ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoK3RoaXMuYnVmZmVyU2l6ZStSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5vcD0wO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyU2l6ZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGU9e0JMT0NLOjAsQURBUFRJVkU6MX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5kZWNvbXByZXNzPWZ1bmN0aW9uKCl7Zm9yKDshdGhpcy5iZmluYWw7KXRoaXMucGFyc2VCbG9jaygpO3N3aXRjaCh0aGlzLmJ1ZmZlclR5cGUpe2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5CTE9DSzpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJCbG9jaygpO2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5BREFQVElWRTpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJEeW5hbWljKCk7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aD0zMjc2ODtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoPTI1ODsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMjU4LDI1OF0pO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkxlbmd0aEV4dHJhVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGEpfShbMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwLDAsMF0pOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0Q29kZVRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVWludDE2QXJyYXkoYSl9KFsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzddKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSl9KFswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXSk7ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkTGl0ZXJhbExlbmd0aFRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBhfShmdW5jdGlvbigpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoMjg4KTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09MTQzPj1iPzg6MjU1Pj1iPzk6Mjc5Pj1iPzc6ODtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkRGlzdGFuY2VUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gYX0oZnVuY3Rpb24oKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KDMwKTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09NTtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucGFyc2VCbG9jaz1mdW5jdGlvbigpe2xldCBhPXRoaXMucmVhZEJpdHMoMyk7YSYxJiYodGhpcy5iZmluYWw9ITApO2E+Pj49MTtzd2l0Y2goYSl7Y2FzZSAwOnRoaXMucGFyc2VVbmNvbXByZXNzZWRCbG9jaygpO2JyZWFrO2Nhc2UgMTp0aGlzLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2soKTticmVhaztjYXNlIDI6dGhpcy5wYXJzZUR5bmFtaWNIdWZmbWFuQmxvY2soKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJ1bmtub3duIEJUWVBFOiAiK2EpO319OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucmVhZEJpdHM9ZnVuY3Rpb24oYSl7bGV0IGI9dGhpcy5iaXRzYnVmLGM9dGhpcy5iaXRzYnVmbGVuO2NvbnN0IGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO2lmKGUrKGEtYys3Pj4zKT49ZC5sZW5ndGgpdGhyb3cgRXJyb3IoImlucHV0IGJ1ZmZlciBpcyBicm9rZW4iKTtmb3IoO2M8YTspYnw9ZFtlKytdPDxjLGMrPTg7dGhpcy5iaXRzYnVmPWI+Pj5hO3RoaXMuYml0c2J1Zmxlbj1jLWE7dGhpcy5pcD1lO3JldHVybiBiJigxPDxhKS0xfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnJlYWRDb2RlQnlUYWJsZT1mdW5jdGlvbihhKXtsZXQgYj10aGlzLmJpdHNidWYsYz10aGlzLmJpdHNidWZsZW47dmFyIGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO3ZhciBmPWQubGVuZ3RoO2NvbnN0IGc9YVswXTtmb3IoYT1hWzFdO2M8YSYmIShlPj1mKTspYnw9ZFtlKytdPDxjLGMrPTg7ZD1nW2ImKDE8PGEpLTFdO2Y9ZD4+PjE2O2lmKGY+Yyl0aHJvdyBFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aDogIitmKTt0aGlzLmJpdHNidWY9Yj4+Zjt0aGlzLmJpdHNidWZsZW49Yy1mO3RoaXMuaXA9ZTtyZXR1cm4gZCY2NTUzNX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5wYXJzZVVuY29tcHJlc3NlZEJsb2NrPWZ1bmN0aW9uKCl7Y29uc3QgYT10aGlzLmlucHV0O2xldCBiPXRoaXMuaXAsYz10aGlzLm91dHB1dCxkPXRoaXMub3A7dmFyIGU9YS5sZW5ndGg7bGV0IGY7Y29uc3QgZz1jLmxlbmd0aDt0aGlzLmJpdHNidWZsZW49dGhpcy5iaXRzYnVmPTA7aWYoYisxPj1lKXRocm93IEVycm9yKCJpbnZhbGlkIHVuY29tcHJlc3NlZCBibG9jayBoZWFkZXI6IExFTiIpO2Y9YVtiKytdfGFbYisrXTw8ODtpZihiKzE+PWUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogTkxFTiIpO2U9YVtiKytdfGFbYisrXTw8ODtpZihmPT09fmUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogbGVuZ3RoIHZlcmlmeSIpO2lmKGIrZj5hLmxlbmd0aCl0aHJvdyBFcnJvcigiaW5wdXQgYnVmZmVyIGlzIGJyb2tlbiIpOwpzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6Zm9yKDtkK2Y+Yy5sZW5ndGg7KWU9Zy1kLGYtPWUsYy5zZXQoYS5zdWJhcnJheShiLGIrZSksZCksZCs9ZSxiKz1lLHRoaXMub3A9ZCxjPXRoaXMuZXhwYW5kQnVmZmVyQmxvY2soKSxkPXRoaXMub3A7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOmZvcig7ZCtmPmMubGVuZ3RoOyljPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoe2ZpeFJhdGlvOjJ9KTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJpbnZhbGlkIGluZmxhdGUgbW9kZSIpO31jLnNldChhLnN1YmFycmF5KGIsYitmKSxkKTt0aGlzLmlwPWIrZjt0aGlzLm9wPWQrZjt0aGlzLm91dHB1dD1jfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2s9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5kZWNvZGVIdWZmbWFuQWRhcHRpdmUoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6dGhpcy5kZWNvZGVIdWZmbWFuQmxvY2soUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTsKYnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRHluYW1pY0h1ZmZtYW5CbG9jaz1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZEJpdHMoNSkrMjU3LGI9dGhpcy5yZWFkQml0cyg1KSsxLGM9dGhpcy5yZWFkQml0cyg0KSs0LGQ9bmV3IFVpbnQ4QXJyYXkoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXIubGVuZ3RoKTtsZXQgZTtmb3IoZT0wO2U8YzsrK2UpZFtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5PcmRlcltlXV09dGhpcy5yZWFkQml0cygzKTtkPUh1ZmZtYW4kJG1vZHVsZSRzcmMkemxpYiRodWZmbWFuKGQpO2M9bmV3IFVpbnQ4QXJyYXkoYStiKTtlPTA7Zm9yKGI9YStiO2U8Yjspe3ZhciBmPXRoaXMucmVhZENvZGVCeVRhYmxlKGQpO3N3aXRjaChmKXtjYXNlIDE2OmZvcihmPTMrdGhpcy5yZWFkQml0cygyKTtmLS07KWNbZSsrXT1nO2JyZWFrO2Nhc2UgMTc6Zm9yKGY9CjMrdGhpcy5yZWFkQml0cygzKTtmLS07KWNbZSsrXT0wO3ZhciBnPTA7YnJlYWs7Y2FzZSAxODpmb3IoZj0xMSt0aGlzLnJlYWRCaXRzKDcpO2YtLTspY1tlKytdPTA7Zz0wO2JyZWFrO2RlZmF1bHQ6Zz1jW2UrK109Zn19Zz1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbihjLnN1YmFycmF5KDAsYSkpO2E9SHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYy5zdWJhcnJheShhKSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOnRoaXMuZGVjb2RlSHVmZm1hbkFkYXB0aXZlKGcsYSk7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMuZGVjb2RlSHVmZm1hbkJsb2NrKGcsYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5CbG9jaz1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2NvbnN0IGU9Yy5sZW5ndGgtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4Q29weUxlbmd0aDt2YXIgZjtsZXQgZyxoO2NvbnN0IGs9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoQ29kZVRhYmxlLGw9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoRXh0cmFUYWJsZSxtPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RDb2RlVGFibGUsbj1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZTtmb3IoOzI1NiE9PShmPXRoaXMucmVhZENvZGVCeVRhYmxlKGEpKTspaWYoMjU2PmYpZD49CmUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKSxjW2QrK109ZjtlbHNlIGZvcihmLT0yNTcsaD1rW2ZdLDA8bFtmXSYmKGgrPXRoaXMucmVhZEJpdHMobFtmXSkpLGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYiksZz1tW2ZdLDA8bltmXSYmKGcrPXRoaXMucmVhZEJpdHMobltmXSkpLGQ+PWUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5BZGFwdGl2ZT1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2xldCBlPWMubGVuZ3RoO3ZhciBmO2xldCBnLGg7Y29uc3Qgaz1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGUsbD1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhFeHRyYVRhYmxlLG09UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRGlzdENvZGVUYWJsZSxuPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RFeHRyYVRhYmxlO2Zvcig7MjU2IT09KGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYSkpOylpZigyNTY+ZilkPj1lJiYoYz10aGlzLmV4cGFuZEJ1ZmZlckFkYXB0aXZlKCksZT1jLmxlbmd0aCksY1tkKytdPQpmO2Vsc2UgZm9yKGYtPTI1NyxoPWtbZl0sMDxsW2ZdJiYoaCs9dGhpcy5yZWFkQml0cyhsW2ZdKSksZj10aGlzLnJlYWRDb2RlQnlUYWJsZShiKSxnPW1bZl0sMDxuW2ZdJiYoZys9dGhpcy5yZWFkQml0cyhuW2ZdKSksZCtoPmUmJihjPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoKSxlPWMubGVuZ3RoKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckJsb2NrPWZ1bmN0aW9uKGEpe2E9bmV3IFVpbnQ4QXJyYXkodGhpcy5vcC1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCk7Y29uc3QgYj10aGlzLm9wLVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLGM9dGhpcy5vdXRwdXQ7YS5zZXQoYy5zdWJhcnJheShSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCxhLmxlbmd0aCkpO3RoaXMuYmxvY2tzLnB1c2goYSk7dGhpcy50b3RhbHBvcys9YS5sZW5ndGg7Yy5zZXQoYy5zdWJhcnJheShiLGIrUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTt0aGlzLm9wPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoOwpyZXR1cm4gY307UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckFkYXB0aXZlPWZ1bmN0aW9uKGEpe2xldCBiPU1hdGgudHJ1bmModGhpcy5pbnB1dC5sZW5ndGgvdGhpcy5pcCsxKTtjb25zdCBjPXRoaXMuaW5wdXQsZD10aGlzLm91dHB1dDthJiYoIm51bWJlciI9PT10eXBlb2YgYS5maXhSYXRpbyYmKGI9YS5maXhSYXRpbyksIm51bWJlciI9PT10eXBlb2YgYS5hZGRSYXRpbyYmKGIrPWEuYWRkUmF0aW8pKTsyPmI/KGE9KGMubGVuZ3RoLXRoaXMuaXApL3RoaXMuY3VycmVudExpdGxlblRhYmxlWzJdLGE9TWF0aC50cnVuYyhhLzIqMjU4KSxhPWE8ZC5sZW5ndGg/ZC5sZW5ndGgrYTpkLmxlbmd0aDw8MSk6YT1kLmxlbmd0aCpiO2E9bmV3IFVpbnQ4QXJyYXkoYSk7YS5zZXQoZCk7cmV0dXJuIHRoaXMub3V0cHV0PWF9OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUuY29uY2F0QnVmZmVyQmxvY2s9ZnVuY3Rpb24oKXtsZXQgYT0wO2NvbnN0IGI9dGhpcy5vdXRwdXQsYz10aGlzLmJsb2NrcztsZXQgZDtjb25zdCBlPW5ldyBVaW50OEFycmF5KHRoaXMudG90YWxwb3MrKHRoaXMub3AtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTtsZXQgZixnLGgsaztpZigwPT09Yy5sZW5ndGgpcmV0dXJuIHRoaXMub3V0cHV0LnN1YmFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLHRoaXMub3ApO2Y9MDtmb3IoZz1jLmxlbmd0aDtmPGc7KytmKWZvcihkPWNbZl0saD0wLGs9ZC5sZW5ndGg7aDxrOysraCllW2ErK109ZFtoXTtmPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO2ZvcihnPXRoaXMub3A7ZjwKZzsrK2YpZVthKytdPWJbZl07dGhpcy5ibG9ja3M9W107cmV0dXJuIHRoaXMuYnVmZmVyPWV9O1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5jb25jYXRCdWZmZXJEeW5hbWljPWZ1bmN0aW9uKCl7bGV0IGE7Y29uc3QgYj10aGlzLm9wO3RoaXMucmVzaXplPyhhPW5ldyBVaW50OEFycmF5KGIpLGEuc2V0KHRoaXMub3V0cHV0LnN1YmFycmF5KDAsYikpKTphPXRoaXMub3V0cHV0LnN1YmFycmF5KDAsYik7cmV0dXJuIHRoaXMuYnVmZmVyPWF9O3ZhciBtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5SYXdJbmZsYXRlPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlO2Z1bmN0aW9uIFV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsKCl7fVV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsLnN0cmluZ1RvQnl0ZUFycmF5PWZ1bmN0aW9uKGEpe2E9Wy4uLmFdO2xldCBiLGM7Yj0wO2ZvcihjPWEubGVuZ3RoO2I8YztiKyspYVtiXT0oYVtiXS5jaGFyUG9pbnRBdCgwKSYyNTUpPj4+MDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW2FdKX07dmFyIG1vZHVsZSRzcmMkemxpYiR1dGlsPXt9O21vZHVsZSRzcmMkemxpYiR1dGlsLlV0aWw9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWw7ZnVuY3Rpb24gQWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYSl7InN0cmluZyI9PT10eXBlb2YgYSYmKGE9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWwuc3RyaW5nVG9CeXRlQXJyYXkoYSkpO3JldHVybiBBZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGUoMSxhKX1BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGU9ZnVuY3Rpb24oYSxiKXtsZXQgYz1hJjY1NTM1O2E9YT4+PjE2JjY1NTM1O2xldCBkPWIubGVuZ3RoLGUsZj0wO2Zvcig7MDxkOyl7ZT1kPkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj9BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5PcHRpbWl6YXRpb25QYXJhbWV0ZXI6ZDtkLT1lO2RvIGMrPWJbZisrXSxhKz1jO3doaWxlKC0tZSk7YyU9NjU1MjE7YSU9NjU1MjF9cmV0dXJuKGE8PDE2fGMpPj4+MH07CkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj0xMDI0O3ZhciBtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMj17fTttb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5BZGxlcjMyPUFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyO2Z1bmN0aW9uIEluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlKGEsYil7dGhpcy5pbnB1dD1hO3RoaXMuaXA9MDtpZihifHwhKGI9e30pKWIuaW5kZXgmJih0aGlzLmlwPWIuaW5kZXgpLGIudmVyaWZ5JiYodGhpcy52ZXJpZnk9Yi52ZXJpZnkpO2NvbnN0IGM9YVt0aGlzLmlwKytdLGQ9YVt0aGlzLmlwKytdO3N3aXRjaChjJjE1KXtjYXNlIENvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFOnRoaXMubWV0aG9kPUNvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoInVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1ldGhvZCIpO31pZigwIT09KChjPDw4KStkKSUzMSl0aHJvdyBFcnJvcigiaW52YWxpZCBmY2hlY2sgZmxhZzoiKygoYzw8OCkrZCklMzEpO2lmKGQmMzIpdGhyb3cgRXJyb3IoImZkaWN0IGZsYWcgaXMgbm90IHN1cHBvcnRlZCIpO3RoaXMucmF3aW5mbGF0ZT0KbmV3IFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlKGEse2luZGV4OnRoaXMuaXAsYnVmZmVyU2l6ZTpiLmJ1ZmZlclNpemUsYnVmZmVyVHlwZTpiLmJ1ZmZlclR5cGUscmVzaXplOmIucmVzaXplfSl9SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJGluZmxhdGUuQnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlOwpJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5wcm90b3R5cGUuZGVjb21wcmVzcz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5wdXQ7Y29uc3QgYj10aGlzLnJhd2luZmxhdGUuZGVjb21wcmVzcygpO3RoaXMuaXA9dGhpcy5yYXdpbmZsYXRlLmlwO2lmKHRoaXMudmVyaWZ5JiYoYT0oYVt0aGlzLmlwKytdPDwyNHxhW3RoaXMuaXArK108PDE2fGFbdGhpcy5pcCsrXTw8OHxhW3RoaXMuaXArK10pPj4+MCxhIT09QWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYikpKXRocm93IEVycm9yKCJpbnZhbGlkIGFkbGVyLTMyIGNoZWNrc3VtIik7cmV0dXJuIGJ9O3ZhciBtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5JbmZsYXRlPUluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlO2NvbnN0IFBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGU9NjU1MzYsUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZT0xNixjc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlPSh7bWVtb3J5OmEsbWVzc2FnZVBvcnQ6YixzdHJlYW1CdWZmZXI6Y30pPT5mdW5jdGlvbihkLGUsZixnKXtpZihhKXtkPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGcsZik7ZD11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGQpO3ZhciBoPS9cbiQvZy50ZXN0KGQpO2U9L15cbi9nLnRlc3QoZCk7dmFyIGs9ZC5zcGxpdCgiXG4iKS5maWx0ZXIobT0+MDxtLmxlbmd0aCksbD1bXTtpZigwPT09ay5sZW5ndGgmJmh8fGUpbC5wdXNoKGMuam9pbigiIikpLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYyk7ay5mb3JFYWNoKChtLG4pPT57bisxPT09ay5sZW5ndGg/aD8wPT09bj8obC5wdXNoKGMuam9pbigiIikrbSksCmNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKTpjLnB1c2gobSk6MD09PW4/KGwucHVzaChjLmpvaW4oIiIpK20pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKX0pO2wuZm9yRWFjaChtPT57bS5yZXBsYWNlKC8oXHJcbnxcbnxccikvZ20sIiIpJiZiLnBvc3Qoe2xvZzptfSl9KX19LGFzc2VydFBsdWdpbkV4cG9ydHMkJG1vZHVsZSRzcmMkbW9kdWxlPWE9PntpZihhJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYib2JqZWN0Ij09PXR5cGVvZiBhLmV4cG9ydHMpe2lmKGEuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycyl7aWYoYS5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZXx8YS5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8YS5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQpcmV0dXJuITA7Y29uc29sZS5lcnJvcihhLmV4cG9ydHMsIkEgY3NvdW5kIHBsdWdpbiB0dXJucyBvdXQgdG8gYmUgbmVpdGhlciBhIHBsdWdpbiwgb3Bjb2RlIG9yIG1vZHVsZS5cblBlcmhhcHMgY3NkbC5oIG9yIG1vZHVsZS5oIHdhc24ndCBpbXBvcnRlZCBjb3JyZWN0bHk/Iik7CnJldHVybiExfWNvbnNvbGUuZXJyb3IoIkEgY3NvdW5kIHBsdWdpbiBkaWRuJ3QgZXhwb3J0IF9fd2FzbV9jYWxsX2N0b3JzLlxuUGxlYXNlIHJlLXJ1biB3YXNtLWxkIHdpdGggZWl0aGVyIC0tZXhwb3J0LWFsbCBvciBpbmNsdWRlIC0tZXhwb3J0PV9fd2FzbV9jYWxsX2N0b3JzIik7cmV0dXJuITF9Y29uc29sZS5lcnJvcigiRXJyb3IgaW5zdGFudGlhdGluZyBhIGNzb3VuZCBwbHVnaW4sIGluc3RhbmNlIGFuZC9vciBleHBvcnQgaXMgbWlzc2luZyEiKTtyZXR1cm4hMX0sZ2V0QmluYXJ5SGVhZGVyRGF0YSQkbW9kdWxlJHNyYyRtb2R1bGU9YT0+e2Z1bmN0aW9uIGIoKXtsZXQgbD0wLG09MTtmb3IoOzspe2NvbnN0IG49YVtjKytdO2wrPShuJjEyNykqbTttKj0xMjg7aWYoIShuJjEyOCkpYnJlYWt9cmV0dXJuIGx9MTgzNjI3ODAxNiE9PShuZXcgVWludDMyQXJyYXkoKG5ldyBVaW50OEFycmF5KGEuc3ViYXJyYXkoMCwyNCkpKS5idWZmZXIpKVswXSYmY29uc29sZS5lcnJvcigiV2FzbSBtYWdpYyBudW1iZXIgaXMgbWlzc2luZyEiKTsKaWYoMCE9PWFbOF0pcmV0dXJuIGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyKCJEeWxpbmsgc2VjdGlvbiB3YXNuJ3QgZm91bmQgaW4gd2FzbSBiaW5hcnksIGFzc3VtaW5nIHN0YXRpYyB3YXNtLiIpLCJzdGF0aWMiO2xldCBjPTk7Y29uc3QgZD1iKCk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iZCIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09InkiLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJsIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iaSIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09Im4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJrIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0KIi4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSIwIi5jb2RlUG9pbnRBdCgwKSk7Yys9Mztjb25zdCBlPWIoKSxmPWIoKSxnPWIoKSxoPWIoKSxrPWIoKTtyZXR1cm57c2VjdGlvblNpemU6ZCxtZW1vcnlTaXplOmUsbWVtb3J5QWxpZ246ZixuZWVkZWREeW5saWJzQ291bnQ6ayx0YWJsZVNpemU6Zyx0YWJsZUFsaWduOmh9fSxsb2FkU3RhdGljV2FzbSQkbW9kdWxlJHNyYyRtb2R1bGU9YXN5bmMoe3dhc21CeXRlczphLHdhc2k6YixtZXNzYWdlUG9ydDpjfSk9Pntjb25zdCBkPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoYSk7YT1uZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjE2Mzg0fSk7Y29uc3QgZT1iLmdldEltcG9ydHMoZCk7ZS5lbnY9ZS5lbnZ8fHt9O2UuZW52LmNzb3VuZExvYWRNb2R1bGVzPSgpPT4wO2UuZW52Lm1lbW9yeT1hO2UuZW52LmNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjaz1jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlKHttZW1vcnk6ZS5lbnYubWVtb3J5LApzdHJlYW1CdWZmZXI6W10sbWVzc2FnZVBvcnQ6Y30pO2M9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZCxlKTtiLnNldE1lbW9yeShhKTtiLnN0YXJ0KGMpO2MuZXhwb3J0cy5fX3dhc2lfanNfY3NvdW5kU2V0TWVzc2FnZVN0cmluZ0NhbGxiYWNrKCk7cmV0dXJuW2MsYl19Owp2YXIgJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbW9kdWxlPWFzeW5jIGZ1bmN0aW9uKHt3YXNtRGF0YVVSSTphLHdpdGhQbHVnaW5zOmI9W10sbWVzc2FnZVBvcnQ6Y30pe3ZhciBkPXt9O2NvbnN0IGU9bmV3IFdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHtwcmVvcGVuczp7Ii8iOiIvIn19KTthPW5ldyBVaW50OEFycmF5KGEpO2E9KG5ldyBJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZShhKSkuZGVjb21wcmVzcygpO3ZhciBmPWdldEJpbmFyeUhlYWRlckRhdGEkJG1vZHVsZSRzcmMkbW9kdWxlKGEpO2lmKCJzdGF0aWMiPT09ZilyZXR1cm4gYXdhaXQgbG9hZFN0YXRpY1dhc20kJG1vZHVsZSRzcmMkbW9kdWxlKHttZXNzYWdlUG9ydDpjLHdhc21CeXRlczphLHdhc21GczpkLHdhc2k6ZX0pO2NvbnN0IHttZW1vcnlTaXplOmcsbWVtb3J5QWxpZ246aCx0YWJsZVNpemU6a309ZjtiPWF3YWl0IGIucmVkdWNlKGFzeW5jKHIsdyk9PntyPWF3YWl0IHI7CmxldCBCLHo7dHJ5e0I9bmV3IFVpbnQ4QXJyYXkodyksej1nZXRCaW5hcnlIZWFkZXJEYXRhJCRtb2R1bGUkc3JjJG1vZHVsZShCKX1jYXRjaChDKXtjb25zb2xlLmVycm9yKCJFcnJvciBpbiBwbHVnaW4iLEMpfXomJnIucHVzaCh7aGVhZGVyRGF0YTp6LHdhc21QbHVnaW5CeXRlczpCfSk7cmV0dXJuIHJ9LFtdKTt2YXIgbD0xMjgqUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZTtkPU1hdGguY2VpbCgoZytoKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPU1hdGguY2VpbChiLnJlZHVjZSgocix7aGVhZGVyRGF0YTp3fSk9PiJzdGF0aWMiPT09dz8wOnIrKHcubWVtb3J5U2l6ZStoKSwwKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPWQrZitsO2NvbnN0IG09bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDpmLG1heGltdW06MTAyNCpQQUdFU19QRVJfTUIkJG1vZHVsZSRzcmMkbW9kdWxlfSksbj1uZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6aysKMSxlbGVtZW50OiJhbnlmdW5jIn0pO2Uuc2V0TWVtb3J5KG0pO2NvbnN0IHA9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sZipQQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LGYqUEFHRV9TSVpFJCRtb2R1bGUkc3JjJG1vZHVsZSk7bD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxsKTtjb25zdCBxPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITF9LDEpLHU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7YT1hd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGEpO2NvbnN0IHQ9ZS5nZXRJbXBvcnRzKGEpO2xldCB2PVtdLEE9ZDt0LmVudj10LmVudnx8e307dC5lbnYubWVtb3J5PW07dC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT0Kbjt0LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt0LmVudi5fX21lbW9yeV9iYXNlPWw7dC5lbnYuX190YWJsZV9iYXNlPXE7dC5lbnYuY3NvdW5kTG9hZE1vZHVsZXM9cj0+e3YuZm9yRWFjaCh3PT57dm9pZCAwPT09eT9jb25zb2xlLmVycm9yKCJjc291bmQtd2FzbSBpbnRlcm5hbDogdGltaW5nIHByb2JsZW0gZGV0ZWN0ZWQhIik6ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdCh5LHcsbixyKX0pO3JldHVybiAwfTt0LmVudi5fWlRINWVycm5vPWZ1bmN0aW9uKCl7fTt0LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s9Y3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrJCRtb2R1bGUkc3JjJG1vZHVsZSh7bWVtb3J5Om0sbWVzc2FnZVBvcnQ6YyxzdHJlYW1CdWZmZXI6W119KTt0LmVudi5wcmludERlYnVnQ2FsbGJhY2s9KHIsdyk9PntyPW5ldyBVaW50OEFycmF5KG0uYnVmZmVyLHIsdyk7cj11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKHIpO2NvbnNvbGUubG9nKHIpfTsKdFsiR09ULm1lbSJdPXRbIkdPVC5tZW0iXXx8e307dFsiR09ULm1lbSJdLl9faGVhcF9iYXNlPWY7dFsiR09ULmZ1bmMiXT10WyJHT1QuZnVuYyJdfHx7fTtjb25zdCB5PWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGEsdCk7Yz1PYmplY3QuYXNzaWduKHt9LHkuZXhwb3J0cyk7YT17fTthLmV4cG9ydHM9T2JqZWN0LmFzc2lnbihjLHttZW1vcnk6bX0pO3Y9YXdhaXQgYi5yZWR1Y2UoYXN5bmMocix7aGVhZGVyRGF0YTp3LHdhc21QbHVnaW5CeXRlczpCfSk9PntyPWF3YWl0IHI7dHJ5e2NvbnN0IHttZW1vcnlTaXplOnosbWVtb3J5QWxpZ246Qyx0YWJsZVNpemU6Rn09dyxFPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoQikseD1lLmdldEltcG9ydHMoRSksRz1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxBKlBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO24uZ3JvdyhGKTt4LmVudj1PYmplY3QuYXNzaWduKHt9LHguZW52KTt4LmVudi5tZW1vcnk9Cm07eC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT1uO3guZW52Ll9fbWVtb3J5X2Jhc2U9Rzt4LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt4LmVudi5fX3RhYmxlX2Jhc2U9cTt4LmVudi5jc291bmRMb2FkTW9kdWxlcz11O2RlbGV0ZSB4LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s7QSs9TWF0aC5jZWlsKCh6K0MpL1BBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO2NvbnN0IEQ9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSx4KTthc3NlcnRQbHVnaW5FeHBvcnRzJCRtb2R1bGUkc3JjJG1vZHVsZShEKSYmKEQuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycygpLHIucHVzaChEKSl9Y2F0Y2goeil7Y29uc29sZS5lcnJvcigiRXJyb3Igd2hpbGUgY29tcGlsaW5nIGNzb3VuZC1wbHVnaW4iLHopfXJldHVybiByfSxbXSk7ZS5zdGFydChhKTthLmV4cG9ydHMuX193YXNpX2pzX2Nzb3VuZFNldE1lc3NhZ2VTdHJpbmdDYWxsYmFjaygpO3JldHVyblthLGVdfSwKbW9kdWxlJHNyYyRtb2R1bGU9e307bW9kdWxlJHNyYyRtb2R1bGUuY3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrPWNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjayQkbW9kdWxlJHNyYyRtb2R1bGU7bW9kdWxlJHNyYyRtb2R1bGUuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGU7Y29uc3QgaGFuZGxlQ3NvdW5kU3RhcnQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9KGEsYixjLGQsZSk9PmY9Pntjb25zdCB7Y3NvdW5kOmd9PWYsaD0xPT09Yi5jc291bmRTaG91bGREYWVtb25pemUoZyk7aCYmKGIuY3NvdW5kU2V0T3B0aW9uKGcsIi0tZGFlbW9uIiksYi5jc291bmRTZXRPcHRpb24oZywiLW9kYWMiKSk7Y29uc3Qgaz1iLmNzb3VuZFN0YXJ0KGcpLGw9Yi5jc291bmRHZXRPdXRwdXROYW1lKGcpfHwidGVzdC53YXYiO2xvZ0NvbW1vblV0aWxzJCRtb2R1bGUkc3JjJGxvZ2dlcihgaGFuZGxlQ3NvdW5kU3RhcnQ6IGFjdHVhbCBjc291bmRTdGFydCByZXN1bHQgJHtrfSwgb3V0cHV0TmFtZTogJHtsfWApKCk7MCE9PWsmJmEucG9zdChgZXJyb3I6IGNzb3VuZFN0YXJ0IGZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gcmVuZGVyICR7bH0sYCsiIGxvb2sgb3V0IGZvciBlcnJvcnMgaW4gb3B0aW9ucyBhbmQgc3ludGF4Iik7c2V0VGltZW91dCgoKT0+e2NvbnN0IG09CmIuX2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0KGcpO2lmKGh8fG18fGwuaW5jbHVkZXMoImRhYyIpKWQoZik7ZWxzZSBpZihhLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLGUpZShmKTtlbHNlIGZvcig7MD09PWIuY3NvdW5kUGVyZm9ybUtzbXBzKGcpOyk7fSwwKTtyZXR1cm4ga30saW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz0oYSxiKT0+e2NvbnN0IGM9W107Zm9yKGxldCBkPTA7ZDxhO2QrKyljLnB1c2gobmV3IEZsb2F0NjRBcnJheShiKSk7cmV0dXJuIGN9LHJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzPSh7bGlicmFyeUNzb3VuZDphLHdvcmtlck1lc3NhZ2VQb3J0OmJ9KT0+YXN5bmMoe2Nzb3VuZDpjfSk9Pntjb25zdCBkPWEuY3NvdW5kR2V0S3IoYyk7bGV0IGU9MCxmPTA7Zm9yKDsoInJlbmRlclN0YXJ0ZWQiPT09Yi52YW5pbGxhV29ya2VyU3RhdGV8fCJyZW5kZXJTdGFydGVkIj09PQpiLndvcmtlclN0YXRlKSYmMD09PWU7KWU9YS5jc291bmRQZXJmb3JtS3NtcHMoYyksZis9MSwiZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQmJjA9PT1lJiYwPT09ZiUoMipkKSYmYXdhaXQgbmV3IFByb21pc2UoZz0+c2V0VGltZW91dChnLDApKTtiLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKX07dmFyIG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9e307bW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscy5oYW5kbGVDc291bmRTdGFydD1oYW5kbGVDc291bmRTdGFydCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLmluc3RhbnRpYXRlQXVkaW9QYWNrZXQ9aW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLnJlbmRlckZ1bmN0aW9uPXJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO2xldCBsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLGNvbWJpbmVkJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyO2NvbnN0IHJ0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyPVtdLGNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1hc3luYyhhLGIpPT4oYT1jb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5nZXQoYSkpJiZhLmFwcGx5KHt9LGJ8fFtdKTsKY2xhc3MgV29ya2xldFNpbmdsZXRocmVhZFdvcmtlciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvcntzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCl7cmV0dXJuW119Y29uc3RydWN0b3IoYSl7c3VwZXIoYSk7dGhpcy5zYW1wbGVSYXRlPXNhbXBsZVJhdGU7dGhpcy5vcHRpb25zPWE7dGhpcy5pbml0aWFsaXplPXRoaXMuaW5pdGlhbGl6ZS5iaW5kKHRoaXMpO3RoaXMucGF1c2U9dGhpcy5wYXVzZS5iaW5kKHRoaXMpO3RoaXMucHJvY2Vzcz10aGlzLnByb2Nlc3MuYmluZCh0aGlzKTt0aGlzLnJlc3VtZT10aGlzLnJlc3VtZS5iaW5kKHRoaXMpO3RoaXMuc3RhcnQ9dGhpcy5zdGFydC5iaW5kKHRoaXMpO3RoaXMuaXNQYXVzZWQ9dGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPSExO3RoaXMuY2FsbFVuY2xvbmVkPSgpPT5jb25zb2xlLmVycm9yKCJDc291bmQgd29ya2xldCB0aHJlYWQgaXMgc3RpbGwgdW5pbml0aWFsaXplZCEiKTsKdGhpcy5wb3J0LnN0YXJ0KCk7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanModGhpcyx0aGlzLnBvcnQpO3RoaXMud29ya2VyTWVzc2FnZVBvcnQ9bmV3ICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTt0aGlzLmluaXRpYWxpemVNZXNzYWdlUG9ydD0oe21lc3NhZ2VQb3J0OmIscnRtaWRpUG9ydDpjfSk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LnBvc3Q9ZD0+Yi5wb3N0TWVzc2FnZSh7bG9nOmR9KTt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZT1kPT57dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSE9PWQmJih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LndvcmtlclN0YXRlPWQpO2IucG9zdE1lc3NhZ2Uoe3BsYXlTdGF0ZUNoYW5nZTpkfSl9O3RoaXMud29ya2VyTWVzc2FnZVBvcnQucmVhZHk9ITA7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImluaXRSdE1pZGlFdmVudFBvcnQiKSgpOwp0aGlzLnJ0bWlkaVBvcnQ9Yzt0aGlzLnJ0bWlkaVBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtkYXRhOmR9KT0+e3J0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLnB1c2goZCl9KTt0aGlzLnJ0bWlkaVBvcnQuc3RhcnQoKX19YXN5bmMgaW5pdGlhbGl6ZShhLGIpe2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0aWFsaXppbmcgd29ya2xldC5zaW5nbGV0aHJlYWQud29ya2VyIikoKTtsZXQgYztjb25zdCBkPW5ldyBQcm9taXNlKGU9PntjPWV9KTskanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGUoe3dhc21EYXRhVVJJOmEsd2l0aFBsdWdpbnM6YixtZXNzYWdlUG9ydDp0aGlzLndvcmtlck1lc3NhZ2VQb3J0fSkudGhlbigoW2UsZl0pPT57dGhpcy53YXNtPWU7dGhpcy53YXNpPWY7ZS53YXNpPWY7bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj0KJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbGliY3NvdW5kKGUpO3RoaXMuY2FsbFVuY2xvbmVkPWNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcjt0aGlzLmNzb3VuZD1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZENyZWF0ZSgwKTt0aGlzLnJlc3VsdD0wO3RoaXMuc3RhcnRlZD10aGlzLmlzUmVuZGVyaW5nPXRoaXMucnVubmluZz0hMTt0aGlzLnJlc2V0Q3NvdW5kKCExKTtlPXBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRDcmVhdGUiLGFzeW5jIGc9PnRoaXMuY3NvdW5kKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRSZXNldCIsdGhpcy5yZXNldENzb3VuZC5iaW5kKHRoaXMpKSwKYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RhcnQiLHRoaXMuc3RhcnQuYmluZCh0aGlzKSksYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RvcCIsdGhpcy5zdG9wLmJpbmQodGhpcykpLGFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoIndhc20iLGUpKShsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTtjb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1uZXcgTWFwKE9iamVjdC5lbnRyaWVzKGUpKTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigid2FzbSBpbml0aWFsaXplZCBhbmQgYXBpIGdlbmVyYXRlZCIpKCk7YygpfSk7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoIndhaXRpbmcgb24gd2FzbSBpbml0aWFsaXphdGlvbiB0byBjb21wbGV0ZSIpKCk7CmF3YWl0IGR9YXN5bmMgcmVzZXRDc291bmQoYSl7aWYoYSYmIXRoaXMud29ya2VyTWVzc2FnZVBvcnR8fGEmJiJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiIT09dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIiE9PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUpcmV0dXJuLTE7YSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIj09PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUmJnRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiKTt0aGlzLnN0YXJ0ZWQ9dGhpcy5ydW5uaW5nPSExO3RoaXMucmVzdWx0PTA7Y29uc3QgYj10aGlzLmNzb3VuZDthJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFJlc2V0KGIpO2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyhiKTsKdGhpcy5zYW1wbGVSYXRlJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFNldE9wdGlvbihiLCItLXNhbXBsZS1yYXRlPSIrdGhpcy5zYW1wbGVSYXRlKTt0aGlzLm5jaG5sc19pPXRoaXMubmNobmxzPS0xO2RlbGV0ZSB0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcn1zdG9wKCl7dGhpcy5jc291bmQmJmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU3RvcCh0aGlzLmNzb3VuZCk7dGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VFbmRlZCIpfXBhdXNlKCl7dGhpcy5pc1BhdXNlZHx8KHRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlUGF1c2VkIiksdGhpcy5pc1BhdXNlZD0hMCl9cmVzdW1lKCl7dGhpcy5pc1BhdXNlZCYmCih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZVJlc3VtZWQiKSx0aGlzLmlzUGF1c2VkPSExKX1wcm9jZXNzKGEsYil7aWYoISh0aGlzLmlzUmVuZGVyaW5nfHwhdGhpcy5pc1BhdXNlZCYmdGhpcy5jc291bmRPdXRwdXRCdWZmZXImJnRoaXMucnVubmluZykpe2E9YlswXTtiPWFbMF0ubGVuZ3RoO2Zvcih2YXIgYz0wO2M8YjtjKyspZm9yKHZhciBkPTA7ZDxhLm51bWJlck9mQ2hhbm5lbHM7ZCsrKWFbZF1bY109MDtyZXR1cm4hMH10aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb24mJih0aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb249ITEsdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIikpOzA8cnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIubGVuZ3RoJiYocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuZm9yRWFjaChxPT4Ke2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kUHVzaE1pZGlNZXNzYWdlKHRoaXMuY3NvdW5kLHFbMF0scVsxXSxxWzJdKX0pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIpKTthPWFbMF07Yj1iWzBdO2M9YlswXS5sZW5ndGg7ZD10aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcjtsZXQgZT10aGlzLmNzb3VuZElucHV0QnVmZmVyO2NvbnN0IGY9dGhpcy5rc21wcyxnPXRoaXMuemVyb2RCRlM7bGV0IGg9dGhpcy5jbnQ7Y29uc3Qgaz10aGlzLm5jaG5scyxsPXRoaXMubmNobmxzX2k7bGV0IG09dGhpcy5yZXN1bHQ7Zm9yKGxldCBxPTA7cTxjO3ErKyxoKyspe2g+PWYmJjA9PT1tJiYobT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFBlcmZvcm1Lc21wcyh0aGlzLmNzb3VuZCksCmg9MCwwIT09bSYmKHRoaXMuc3RhcnRlZD10aGlzLnJ1bm5pbmc9ITEsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRDbGVhbnVwKHRoaXMuY3NvdW5kKSx0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZUVuZGVkIikpKTtkJiYwIT09ZC5sZW5ndGh8fChkPXRoaXMuY3NvdW5kT3V0cHV0QnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkodGhpcy53YXNtLndhc2kubWVtb3J5LmJ1ZmZlcixsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldFNwb3V0KHRoaXMuY3NvdW5kKSxmKmspKTtlJiYwIT09ZS5sZW5ndGh8fChlPXRoaXMuY3NvdW5kSW5wdXRCdWZmZXI9bmV3IEZsb2F0NjRBcnJheSh0aGlzLndhc20ud2FzaS5tZW1vcnkuYnVmZmVyLGxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3Bpbih0aGlzLmNzb3VuZCksCmYqbCkpO3ZhciBuPU1hdGgubWluKHRoaXMubmNobmxzX2ksYS5sZW5ndGgpO2Zvcih2YXIgcD0wO3A8bjtwKyspZVtoKmwrcF09YVtwXVtxXSpnO2lmKHRoaXMubmNobmxzPT09Yi5sZW5ndGgpZm9yKGNvbnN0IFt1LHRdb2YgYi5lbnRyaWVzKCkpdFtxXT0wPT09bT9kW2gqayt1XS9nOjA7ZWxzZSBpZigyPT09dGhpcy5uY2hubHMmJjE9PT1iLmxlbmd0aCliWzBdW3FdPTA9PT1tPy41KihkW2gqa10vZytkW2gqaysxXS9nKTowO2Vsc2UgaWYoMT09PXRoaXMubmNobmxzJiYyPT09Yi5sZW5ndGgpaWYobj1iWzBdLHA9YlsxXSwwPT09bSl7Y29uc3QgdT1kW2gqa10vZztuW3FdPXU7cFtxXT11fWVsc2UgbltxXT0wLHBbcV09MH10aGlzLmNudD1oO3RoaXMucmVzdWx0PW07cmV0dXJuITB9YXN5bmMgaXNSZXF1ZXN0aW5nSW5wdXQoKXtyZXR1cm4obGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRJbnB1dE5hbWUodGhpcy5jc291bmQpfHwKIiIpLmluY2x1ZGVzKCJhZGMiKX1hc3luYyBpc1JlcXVlc3RpbmdSZWFsdGltZU91dHB1dCgpe3JldHVybihsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldE91dHB1dE5hbWUodGhpcy5jc291bmQpfHwiIikuaW5jbHVkZXMoImRhYyIpfWFzeW5jIHN0YXJ0KCl7bGV0IGE9LTE7aWYodGhpcy5zdGFydGVkKWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHdhcyBhc2tlZCB0byBzdGFydCBidXQgaXQgYWxyZWFkeSBoYXMhIikoKTtlbHNle2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHRocmVhZCBpcyBzdGFydGluZy4uIikoKTtjb25zdCBiPXRoaXMuY3NvdW5kLGM9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRLc21wcyhiKTsKdGhpcy5jbnQ9dGhpcy5rc21wcz1jO3RoaXMubmNobmxzPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0TmNobmxzKGIpO3RoaXMubmNobmxzX2k9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXROY2hubHNJbnB1dChiKTt0aGlzLnplcm9kQkZTPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0MGRCRlMoYik7YT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFN0YXJ0KGIpO2lmKDAhPT1hKXJldHVybiBhO2lmKGF3YWl0IHRoaXMuaXNSZXF1ZXN0aW5nUmVhbHRpbWVPdXRwdXQoKSl0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsCmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3BvdXQoYiksYyp0aGlzLm5jaG5scyksdGhpcy5jc291bmRJbnB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRTcGluKGIpLGMqdGhpcy5uY2hubHNfaSksbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImNzb3VuZFN0YXJ0IGNhbGxlZCB3aXRoIHt9IHJldHVybiB2YWwiLGEpKCksdGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPXRoaXMuc3RhcnRlZD0hMDtlbHNlIHJldHVybiB0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLHRoaXMuaXNSZW5kZXJpbmc9ITAscmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoe2xpYnJhcnlDc291bmQ6bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciwKd29ya2VyTWVzc2FnZVBvcnQ6dGhpcy53b3JrZXJNZXNzYWdlUG9ydCx3YXNpOnRoaXMud2FzaX0pKHtjc291bmQ6Yn0pLnRoZW4oKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSkuY2F0Y2goKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSksMH10aGlzLnJ1bm5pbmc9ITA7cmV0dXJuIGF9fXJlZ2lzdGVyUHJvY2Vzc29yKCJjc291bmQtc2luZ2xldGhyZWFkLXdvcmtsZXQtcHJvY2Vzc29yIixXb3JrbGV0U2luZ2xldGhyZWFkV29ya2VyJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj17fTsKLy8jIHNvdXJjZVVSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcwovLyMgc291cmNlTWFwcGluZ1VSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcy5tYXAK\";\n ","/*\n worklet.singlethread.js\n\n Copyright (C) 2018 Steven Yi, Victor Lazzarini\n\n This file is part of Csound.\n\n The Csound Library is free software; you can redistribute it\n and/or modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License, or (at your option) any later version.\n\n Csound is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public\n License along with Csound; if not, write to the Free Software\n Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n 02110-1301 USA\n*/\n\nimport * as Comlink from \"comlink/dist/esm/comlink.mjs\";\nimport { logSinglethreadWorkletMain as log } from \"../logger.js\";\nimport { csoundApiRename, fetchPlugins, makeProxyCallback } from \"../utils.js\";\nimport { messageEventHandler, IPCMessagePorts } from \"./messages.main.js\";\nimport { api as API } from \"../libcsound.js\";\nimport { PublicEventAPI } from \"../events.js\";\nimport { enableAudioInput } from \"./io.utils.js\";\nimport { requestMidi } from \"../utils/request-midi.js\";\nimport { EventPromises } from \"../utils/event-promises.js\";\nimport WorkletWorker from \"../../dist/__compiled.worklet.singlethread.worker.inline.js\";\n\nconst initializeModule = async (audioContext) => {\n log(\"Initialize Module\")();\n try {\n await audioContext.audioWorklet.addModule(WorkletWorker());\n } catch (error) {\n console.error(\"Error calling audioWorklet.addModule\", error);\n return false;\n }\n return true;\n};\n\nclass SingleThreadAudioWorkletMainThread {\n constructor({ audioContext, inputChannelCount = 1, outputChannelCount = 2 }) {\n this.exportApi = {};\n this.ipcMessagePorts = new IPCMessagePorts();\n this.publicEvents = new PublicEventAPI(this);\n this.eventPromises = new EventPromises();\n\n this.audioContext = audioContext;\n this.inputChannelCount = inputChannelCount;\n this.outputChannelCount = outputChannelCount;\n\n this.messageCallbacks = [];\n this.onPlayStateChange = this.onPlayStateChange.bind(this);\n this.currentPlayState = undefined;\n }\n\n async terminateInstance() {\n if (this.node) {\n this.node.disconnect();\n delete this.node;\n }\n if (this.audioContext) {\n if (this.audioContext.state !== \"closed\") {\n await this.audioContext.close();\n }\n delete this.audioContext;\n }\n if (this.workletProxy) {\n this.workletProxy[Comlink.releaseProxy]();\n delete this.workletProxy;\n }\n if (this.publicEvents) {\n this.publicEvents.terminateInstance();\n delete this.publicEvents;\n }\n Object.keys(this.exportApi).forEach((key) => delete this.exportApi[key]);\n Object.keys(this).forEach((key) => delete this[key]);\n }\n\n async onPlayStateChange(newPlayState) {\n if (this.currentPlayState === newPlayState || !this.publicEvents) {\n return;\n }\n\n this.currentPlayState = newPlayState;\n\n switch (newPlayState) {\n case \"realtimePerformanceStarted\": {\n if (this.eventPromises.isWaitingToStart()) {\n log(\"Start promise resolved\")();\n this.eventPromises.releaseStartPromise();\n }\n this.publicEvents.triggerRealtimePerformanceStarted(this);\n break;\n }\n\n case \"realtimePerformanceEnded\": {\n this.midiPortStarted = false;\n this.currentPlayState = undefined;\n this.publicEvents && this.publicEvents.triggerRealtimePerformanceEnded(this);\n this.eventPromises &&\n this.eventPromises.isWaitingToStop() &&\n this.eventPromises.releaseStopPromise();\n // just to be double sure that there's no hanging promise\n this.eventPromises && this.eventPromises.releaseStartPromise();\n break;\n }\n case \"realtimePerformancePaused\": {\n this.publicEvents.triggerRealtimePerformancePaused(this);\n break;\n }\n case \"realtimePerformanceResumed\": {\n this.publicEvents.triggerRealtimePerformanceResumed(this);\n break;\n }\n case \"renderStarted\": {\n if (this.eventPromises.isWaitingToStart()) {\n log(\"Start promise resolved\")();\n this.publicEvents.triggerRenderStarted(this);\n this.eventPromises.releaseStartPromise();\n }\n break;\n }\n case \"renderEnded\": {\n this.publicEvents.triggerRenderEnded(this);\n this.eventPromises &&\n this.eventPromises.isWaitingToStop() &&\n this.eventPromises.releaseStopPromise();\n // just to be double sure that there's no hanging promise\n this.eventPromises && this.eventPromises.releaseStartPromise();\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n async csoundPause() {\n if (this.workletProxy !== undefined) {\n await this.workletProxy.pause();\n }\n }\n\n async csoundResume() {\n if (this.workletProxy !== undefined) {\n await this.workletProxy.resume();\n }\n }\n\n handleMidiInput({ data: payload }) {\n this.ipcMessagePorts.csoundMainRtMidiPort.postMessage &&\n this.ipcMessagePorts.csoundMainRtMidiPort.postMessage(payload);\n }\n\n async initialize({ wasmDataURI, withPlugins, autoConnect }) {\n if (withPlugins && withPlugins.length > 0) {\n withPlugins = await fetchPlugins(withPlugins);\n }\n\n await initializeModule(this.audioContext);\n\n this.node = new AudioWorkletNode(this.audioContext, \"csound-singlethread-worklet-processor\", {\n inputChannelCount: this.inputChannelCount ? [this.inputChannelCount] : 0,\n outputChannelCount: [this.outputChannelCount || 2],\n });\n\n if (autoConnect) {\n this.node.connect(this.audioContext.destination);\n }\n\n try {\n log(\"wrapping Comlink proxy endpoint on the audioWorkletNode.port\")();\n this.workletProxy = Comlink.wrap(this.node.port);\n } catch (error) {\n console.error(\"COMLINK ERROR\", error);\n }\n\n await this.workletProxy.initializeMessagePort(\n Comlink.transfer(\n {\n messagePort: this.ipcMessagePorts.workerMessagePort,\n rtmidiPort: this.ipcMessagePorts.csoundWorkerRtMidiPort,\n },\n [this.ipcMessagePorts.workerMessagePort, this.ipcMessagePorts.csoundWorkerRtMidiPort],\n ),\n );\n this.ipcMessagePorts.mainMessagePort.addEventListener(\"message\", messageEventHandler(this));\n this.ipcMessagePorts.mainMessagePort.start();\n\n await this.workletProxy.initialize(wasmDataURI(), withPlugins);\n const csoundInstance = await makeProxyCallback(\n this.workletProxy,\n undefined,\n \"csoundCreate\",\n this.currentPlayState,\n )();\n this.csoundInstance = csoundInstance;\n await makeProxyCallback(\n this.workletProxy,\n csoundInstance,\n \"csoundInitialize\",\n this.currentPlayState,\n )(0);\n\n this.exportApi.pause = this.csoundPause.bind(this);\n this.exportApi.resume = this.csoundResume.bind(this);\n this.exportApi.terminateInstance = this.terminateInstance.bind(this);\n\n this.exportApi.getAudioContext = async () => this.audioContext;\n this.exportApi.getNode = async () => this.node;\n this.exportApi.enableAudioInput = enableAudioInput.bind(this.exportApi);\n\n this.exportApi.name = \"Csound: Audio Worklet, Single-threaded\";\n this.exportApi = this.publicEvents.decorateAPI(this.exportApi);\n // the default message listener\n this.exportApi.addListener(\"message\", console.log);\n\n for (const apiK of Object.keys(API)) {\n const reference = API[apiK];\n const proxyCallback = makeProxyCallback(\n this.workletProxy,\n csoundInstance,\n apiK,\n this.currentPlayState,\n );\n switch (apiK) {\n case \"csoundCreate\": {\n break;\n }\n\n case \"csoundStart\": {\n const csoundStart = async function () {\n this.eventPromises.createStartPromise();\n const isRequestingInput = await this.workletProxy.isRequestingInput();\n const isRequestingRealtimeOutput = await this.workletProxy.isRequestingRealtimeOutput();\n\n if (isRequestingRealtimeOutput) {\n if (isRequestingInput) {\n this.exportApi.enableAudioInput();\n }\n\n const isRequestingMidi = await this.exportApi._isRequestingRtMidiInput(\n csoundInstance,\n );\n\n if (isRequestingMidi) {\n requestMidi({\n onMidiMessage: this.handleMidiInput.bind(this),\n });\n }\n\n const startResult = await proxyCallback({ csound: csoundInstance });\n this.publicEvents.triggerOnAudioNodeCreated(this.node);\n await this.eventPromises.waitForStart();\n return startResult;\n } else {\n // because worklet worker can't return while rendering\n proxyCallback({ csound: csoundInstance });\n this.publicEvents.triggerOnAudioNodeCreated(this.node);\n await this.eventPromises.waitForStart();\n return 0;\n }\n };\n\n csoundStart.toString = () => reference.toString();\n this.exportApi.start = csoundStart.bind(this);\n break;\n }\n case \"csoundStop\": {\n const csoundStop = async () => {\n if (this.eventPromises.isWaitingToStop()) {\n log(\"already waiting to stop, doing nothing\")();\n return -1;\n } else {\n this.eventPromises.createStopPromise();\n const stopResult = await proxyCallback();\n await this.eventPromises.waitForStop();\n return stopResult;\n }\n };\n csoundStop.toString = () => reference.toString();\n this.exportApi.stop = csoundStop.bind(this);\n break;\n }\n\n case \"fs\": {\n this.exportApi.fs = {};\n Object.keys(reference).forEach((method) => {\n const proxyFsCallback = makeProxyCallback(\n this.workletProxy,\n csoundInstance,\n method,\n this.currentPlayState,\n );\n proxyFsCallback.toString = () => reference[method].toString();\n this.exportApi.fs[method] = proxyFsCallback;\n });\n break;\n }\n\n default: {\n proxyCallback.toString = () => reference.toString();\n this.exportApi[csoundApiRename(apiK)] = proxyCallback;\n break;\n }\n }\n }\n\n return this.exportApi;\n }\n}\n\nexport default SingleThreadAudioWorkletMainThread;\n","/* eslint-disable no-unused-vars */\n\nimport wasmDataURI from \"../dist/__csound_wasm.inline.js\";\nimport VanillaWorkerMainThread from \"./mains/vanilla.main\";\nimport unmuteIosAudio from \"unmute-ios-audio/index.js\";\nimport SharedArrayBufferMainThread from \"./mains/sab.main\";\nimport AudioWorkletMainThread from \"./mains/worklet.main\";\nimport ScriptProcessorNodeMainThread from \"./mains/old-spn.main\";\nimport ScriptProcessorNodeSingleThread from \"./mains/spn.main\";\nimport SingleThreadAudioWorkletMainThread from \"./mains/worklet.singlethread.main\";\nimport { logIndex as log } from \"./logger\";\nimport {\n areWorkletsSupported,\n isSafari,\n isSabSupported,\n isScriptProcessorNodeSupported,\n WebkitAudioContext,\n} from \"./utils\";\n\nunmuteIosAudio();\n\n/**\n * CsoundObj API.\n * @async\n * @export\n * @expose\n * @return {Promise.<CsoundObj|undefined>}\n * @suppress {misplacedTypeAnnotation}\n */\nexport const Csound = async function ({\n audioContext,\n inputChannelCount,\n outputChannelCount,\n autoConnect = true,\n withPlugins = [],\n useWorker = false,\n useSAB = true,\n useSPN = false,\n} = {}) {\n const audioContextIsProvided =\n audioContext && WebkitAudioContext() && audioContext instanceof WebkitAudioContext();\n\n if (!audioContextIsProvided) {\n // default to creating an audio context for SingleThread\n audioContext = audioContext || new (WebkitAudioContext())({ latencyHint: \"interactive\" });\n }\n\n if (isSafari()) {\n audioContext.resume();\n }\n\n const workletSupport = areWorkletsSupported();\n const spnSupport = isScriptProcessorNodeSupported();\n\n // SingleThread implementations\n if (!useWorker) {\n if (workletSupport && !useSPN) {\n log(\"Single Thread AudioWorklet\")();\n const instance = new SingleThreadAudioWorkletMainThread({\n audioContext,\n inputChannelCount: inputChannelCount || 2,\n outputChannelCount: outputChannelCount || 2,\n });\n return instance.initialize({ wasmDataURI, withPlugins, autoConnect });\n } else if (spnSupport) {\n log(\"Single Thread ScriptProcessorNode\")();\n const instance = new ScriptProcessorNodeSingleThread({\n audioContext,\n inputChannelCount: inputChannelCount || 2,\n outputChannelCount: outputChannelCount || 2,\n });\n return await instance.initialize({\n wasmDataURI,\n withPlugins,\n autoConnect,\n });\n } else {\n console.error(\"No detectable WebAudioAPI in current environment\");\n return;\n }\n }\n\n if (workletSupport) {\n // closure-compiler keepme\n log(`worklet support detected`)();\n } else if (spnSupport) {\n // closure-compiler keepme\n log(`scriptProcessorNode support detected`)();\n } else {\n console.error(`No WebAudio Support detected`);\n }\n\n let audioWorker;\n let csoundWasmApi;\n\n if (!useSPN && workletSupport) {\n audioWorker = new AudioWorkletMainThread({ audioContext, audioContextIsProvided, autoConnect });\n } else if (spnSupport) {\n audioWorker = new ScriptProcessorNodeMainThread({\n audioContext,\n audioContextIsProvided,\n autoConnect,\n });\n }\n\n if (!audioWorker) {\n console.error(\"No detectable WebAudioAPI in current environment\");\n return;\n }\n\n const hasSABSupport = isSabSupported();\n\n if (hasSABSupport) {\n useSAB && log(`using SharedArrayBuffers`)();\n } else {\n log(`SharedArrayBuffers not found, falling back to Vanilla concurrency`)();\n }\n\n const worker =\n hasSABSupport && workletSupport && useSAB\n ? new SharedArrayBufferMainThread({\n audioWorker,\n audioContext,\n audioContextIsProvided,\n inputChannelCount,\n outputChannelCount,\n })\n : new VanillaWorkerMainThread({\n audioWorker,\n audioContextIsProvided,\n });\n\n if (worker) {\n log(`starting Csound thread initialization via WebWorker`)();\n await worker.initialize({ wasmDataURI, withPlugins });\n csoundWasmApi = worker.api;\n } else {\n console.error(\"No detectable WebAssembly support in current environment\");\n return;\n }\n\n return csoundWasmApi;\n};\n"],
+"names":["COMPILED","goog","global","self","exportPath_","goog.exportPath_","name","object","overwriteImplicit","objectToExportTo","parts","split","cur","execScript","part","length","shift","undefined","Object","prototype","isObject","prop","hasOwnProperty","define","goog.define","defaultValue","uncompiledDefines","CLOSURE_UNCOMPILED_DEFINES","defines","CLOSURE_DEFINES","nodeType","call","value","FEATURESET_YEAR","DEBUG","LOCALE","getLocale","goog.getLocale","TRUSTED_SITE","DISALLOW_TEST_ONLY_CODE","ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING","provide","goog.provide","isInModuleLoader_","Error","isProvided_","constructNamespace_","goog.constructNamespace_","implicitNamespaces_","namespace","substring","lastIndexOf","getObjectByName","NONCE_PATTERN_","getScriptNonce_","goog.getScriptNonce_","opt_window","doc","document","script","querySelector","nonce","getAttribute","test","VALID_MODULE_RE_","module","goog.module","search","isInGoogModuleLoader_","moduleLoaderState_","moduleName","get","goog.module.get","getInternal_","goog.module.getInternal_","loadedModules_","exports","ns","ModuleType","ES6","GOOG","goog.isInModuleLoader_","isInEs6ModuleLoader_","goog.isInGoogModuleLoader_","type","goog.isInEs6ModuleLoader_","jscomp","getCurrentModulePath","declareLegacyNamespace","goog.module.declareLegacyNamespace","declareModuleId","goog.declareModuleId","require","moduleId","setTestOnly","goog.setTestOnly","opt_message","forwardDeclare","goog.forwardDeclare","goog.isProvided_","goog.getObjectByName","opt_obj","i","addDependency","goog.addDependency","relPath","provides","requires","opt_loadFlags","DEPENDENCIES_ENABLED","debugLoader_","ENABLE_DEBUG_LOADER","logToConsole_","goog.logToConsole_","msg","console","goog.require","requested","moduleLoaderState","load_","requireType","goog.requireType","basePath","abstractMethod","goog.abstractMethod","addSingletonGetter","goog.addSingletonGetter","ctor","instance_","getInstance","ctor.getInstance","instantiatedSingletons_","LOAD_MODULE_USING_EVAL","SEAL_MODULE_EXPORTS","TRANSPILE","ASSUME_ES_MODULES_TRANSPILED","TRUSTED_TYPES_POLICY_NAME","hasBadLetScoping","loadModule","goog.loadModule","moduleDef","previousState","origExports","loadModuleFromSource_","seal","data","eval","CLOSURE_EVAL_PREFILTER_","createScript","normalizePath_","goog.normalizePath_","path","components","splice","join","loadFileSync_","goog.loadFileSync_","src","CLOSURE_LOAD_FILE_SYNC","xhr","open","send","status","responseText","err","typeOf","goog.typeOf","s","Array","isArray","isArrayLike","goog.isArrayLike","val","isDateLike","goog.isDateLike","getFullYear","goog.isObject","getUid","goog.getUid","obj","UID_PROPERTY_","uidCounter_","hasUid","goog.hasUid","removeUid","goog.removeUid","removeAttribute","ex","Math","random","cloneObject","goog.cloneObject","clone","Map","Set","key","bindNative_","goog.bindNative_","fn","selfObj","var_args","apply","bind","arguments","bindJs_","goog.bindJs_","boundArgs","slice","newArgs","unshift","goog.bind","Function","toString","indexOf","partial","goog.partial","args","push","now","goog.now","Date","globalEval","goog.globalEval","getCssName","goog.getCssName","className","opt_modifier","String","charAt","getMapping","cssName","cssNameMapping_","renameByParts","mapped","rename","cssNameMappingStyle_","a","result","CLOSURE_CSS_NAME_MAP_FN","setCssNameMapping","goog.setCssNameMapping","mapping","opt_style","CLOSURE_CSS_NAME_MAPPING","GetMsgOptions","goog.GetMsgOptions","getMsg","goog.getMsg","str","opt_values","opt_options","html","replace","unescapeHtmlEntities","match","getMsgWithFallback","goog.getMsgWithFallback","b","exportSymbol","goog.exportSymbol","publicPath","exportProperty","goog.exportProperty","publicName","symbol","inherits","goog.inherits","childCtor","parentCtor","tempCtor","superClass_","constructor","base","childCtor.base","me","methodName","scope","goog.scope","defineClass","goog.defineClass","superClass","def","statics","cls","createSealingConstructor_","applyProperties_","SEAL_CLASS_INSTANCES","goog.defineClass.createSealingConstructor_","ctr","wrappedCtr","instance","OBJECT_PROTOTYPE_FIELDS_","goog.defineClass.applyProperties_","target","source","identity_","goog.identity_","createTrustedTypesPolicy","goog.createTrustedTypesPolicy","policy","policyFactory","trustedTypes","createPolicy","createHTML","createScriptURL","e","message","isEdge_","goog.isEdge_","navigator","userAgent","edgeRe","inHtmlDocument_","goog.inHtmlDocument_","isDocumentLoading_","goog.isDocumentLoading_","attachEvent","readyState","findBasePath_","goog.findBasePath_","CLOSURE_BASE_PATH","currentScript","scripts","getElementsByTagName","qmark","l","protectScriptTag_","goog.protectScriptTag_","DebugLoader_","goog.DebugLoader_","dependencies_","idToPath_","written_","loadingDeps_","depsToLoad_","paused_","factory_","DependencyFactory","deferredCallbacks_","deferredQueue_","bootstrap","goog.DebugLoader_.prototype.bootstrap","namespaces","callback","resolve","cb","setTimeout","deps","getPathFromDeps_","loaded","onLoad","loadClosureDeps","goog.DebugLoader_.prototype.loadClosureDeps","createDependency","loadDeps_","goog.DebugLoader_.prototype.requested","absPathOrId","opt_force","areDepsLoaded_","setDependencyFactory","goog.DebugLoader_.prototype.setDependencyFactory","factory","goog.DebugLoader_.prototype.load_","loader","visit","dep","wasLoading","concat","goog.DebugLoader_.prototype.loadDeps_","paused","loadCallDone","loading_","controller","pause","resume","resume_","loaded_","pending","setModuleState","registerEs6ModuleExports","opt_closureNamespace","registerGoogModuleExports","clearModuleState","defer","defer_","areDepsLoaded","load","pause_","goog.DebugLoader_.prototype.pause_","goog.DebugLoader_.prototype.resume_","goog.DebugLoader_.prototype.loading_","goog.DebugLoader_.prototype.loaded_","goog.DebugLoader_.prototype.areDepsLoaded_","pathsOrIds","goog.DebugLoader_.prototype.getPathFromDeps_","goog.DebugLoader_.prototype.defer_","dependency","LoadController","goog.LoadController","goog.LoadController.prototype.pause","goog.LoadController.prototype.resume","goog.LoadController.prototype.loaded","goog.LoadController.prototype.pending","goog.LoadController.prototype.registerEs6ModuleExports","goog.LoadController.prototype.setModuleState","goog.LoadController.prototype.clearModuleState","goog.LoadController.prototype.defer","goog.LoadController.prototype.areDepsLoaded","Dependency","goog.Dependency","relativePath","loadFlags","loadCallbacks_","getPathName","goog.Dependency.prototype.getPathName","pathName","protocolIndex","slashIndex","goog.Dependency.prototype.onLoad","goog.Dependency.prototype.loaded","callbacks","callbackMap_","registerCallback_","goog.Dependency.registerCallback_","unregisterCallback_","goog.Dependency.unregisterCallback_","callback_","goog.Dependency.callback_","goog.Dependency.prototype.load","CLOSURE_IMPORT_SCRIPT","isDeps","onload","nonceAttr","write","TRUSTED_TYPES_POLICY_","scriptEl","createElement","async","scriptEl.onload","head","appendChild","Es6ModuleDependency","goog.Es6ModuleDependency","goog.Es6ModuleDependency.base","goog.Es6ModuleDependency.prototype.load","contents","append","setAttribute","text","create","beforeKey","registerKey","afterKey","TransformedDependency","goog.TransformedDependency","goog.TransformedDependency.base","contents_","lazyFetch_","goog.TransformedDependency.prototype.load","fetch","transform","isEs6","fetchInOwnScriptThenLoad","anythingElsePending","isInternetExplorerOrEdge","oldCallback","onreadystatechange","doc.onreadystatechange","goog.TransformedDependency.prototype.transform","PreTranspiledEs6ModuleDependency","goog.PreTranspiledEs6ModuleDependency","goog.PreTranspiledEs6ModuleDependency.base","goog.PreTranspiledEs6ModuleDependency.prototype.transform","GoogModuleDependency","goog.GoogModuleDependency","goog.GoogModuleDependency.base","goog.GoogModuleDependency.prototype.transform","JSON","stringify","goog.DebugLoader_.prototype.addDependency","goog.DependencyFactory","goog.DependencyFactory.prototype.createDependency","goog.loadClosureDeps","goog.setDependencyFactory","CLOSURE_NO_DEPS","goog.bootstrap","isChrome87","emptyScript","atobPolyfill","input","error","bc","bs","buffer","idx","output","fromCharCode","chars","bufferFromBrowser","base64Data","AudioWorkletGlobalScope","window","atob","__toArrayBuffer","binary","bytes","Uint8Array","charCodeAt","$jscompDefaultExport","$jscomp$tmp$exports$module$name","proxyMarker","Symbol","createEndpoint","releaseProxy","throwMarker","proxyTransferHandler","canHandle","serialize","port1","port2","MessageChannel","expose","deserialize","port","start","wrap","throwTransferHandler","serialized","isError","stack","assign","transferHandlers","ep","addEventListener","ev","id","argumentList","map","fromWireValue","parent","reduce","rawValue","returnValue","proxy","transfer","Promise","catch","then","wireValue","transferables","toWireValue","postMessage","removeEventListener","closeEndPoint","isMessagePort","endpoint","close","createProxy","throwIfProxyReleased","isReleased","isProxyReleased","Proxy","_target","requestResponseMessage","p","r","set","_thisArg","rawArgumentList","last","processArguments","construct","myFlat","arr","processed","v","transferCache","WeakMap","transfers","windowEndpoint","w","context","targetOrigin","handler","serializedValue","generateUUID","fill","floor","Number","MAX_SAFE_INTEGER","__esModule","LoggerFactory","logLevels","log_raise_error","log_with_warnings","trace","debug","info","warn","disable","logLevel","mockConsole","dummy","LoggerFactory.prototype.dummy","setLogWarnings","LoggerFactory.prototype.setLogWarnings","logWarnings","getLogWarnings","LoggerFactory.prototype.getLogWarnings","getSingleLoggerColor","LoggerFactory.prototype.getSingleLoggerColor","color","getSingleLoggerStyle","getColorStyle","getSingleLogger","LoggerFactory.prototype.getSingleLogger","getRandomColor","LoggerFactory.prototype.getSingleLoggerStyle","style","minLevel","_this","args1","_i","params","getLoggerColor","LoggerFactory.prototype.getLoggerColor","getLoggerStyle","LoggerFactory.prototype.getColorStyle","getHash","LoggerFactory.getHash","seed","h1","h2","ch","imul","LoggerFactory.prototype.getRandomColor","hash","substr","getLogger","LoggerFactory.prototype.getLogger","LoggerFactory.prototype.getLoggerStyle","log","logWorkletMain","logWorkletWorker","logSABMain","logSABWorker","logVANMain","logVANWorker","logOldSpnMain","logOldSpnWorker","logIndex","logSPNMainSingle","logSinglethreadWorkletMain","logSinglethreadWorkletWorker","logCommonUtils","logWasmModule","logMidiRequest","isProd","ignore1","ignore2","csoundCreate","wasm","csoundCreateWasi","csoundCreate.toString","csoundDestroy","csound","csoundDestroy.toString","csoundGetAPIVersion","csoundGetAPIVersion.toString","csoundGetVersion","csoundGetVersion.toString","csoundInitialize","_","flags","csoundInitialize.toString","WITH_TEXT_ENCODER_POLYFILL","TextEncoderPoly","encoding","encode","TextEncoderPoly.prototype.encode","string_","TypeError","binstr","unescape","encodeURIComponent","array","forEach","char","index","codePointAt","TextDecoderPoly","ignoreBOM","trimNull","this.trimNull","c","max","decode","this.decode","view","options","stream","ArrayBuffer","isView","byteOffset","byteLength","charArray","from","charcode","fromCodePoint","decoder","TextDecoder","encoder","TextEncoder","uint2String","uint","freeStringPtr","ptr","freeStringMem","ptr2string","stringPtr","wasi","memory","intArray","string2ptr","string","stringBuf","offset","allocStringMem","outBuf","csoundParseOrc","orc","csoundParseOrc.toString","csoundCompileTree","tree","csoundCompileTree.toString","csoundCompileOrc","csoundCompileOrc.toString","csoundEvalCode","csoundEvalCode.toString","csoundStart","csoundStartWasi","csoundStart.toString","csoundCompileCsd","csoundCompileCsd.toString","csoundCompileCsdText","csoundCompileCsdText.toString","csoundPerform","csoundPerform.toString","csoundPerformKsmps","csoundPerformKsmpsWasi","csoundPerformKsmps.toString","csoundPerformBuffer","csoundPerformBuffer.toString","csoundStop","csoundStop.toString","csoundCleanup","csoundCleanup.toString","csoundReset","csoundResetWasi","csoundReset.toString","sizeOfPrimitive","int","MYFLT","sizeofStruct","jsStruct","total","primitive","rest","structBufferToObject","parameters","parameterName","currentSize","currentValue","subarray","CSOUND_PARAMS","CS_MIDIDEVICE","csoundGetSr","csoundGetSr.toString","csoundGetKr","csoundGetKr.toString","csoundGetKsmps","csoundGetKsmps.toString","csoundGetNchnls","csoundGetNchnls.toString","csoundGetNchnlsInput","csoundGetNchnlsInput.toString","csoundGet0dBFS","csoundGet0dBFS.toString","csoundGetA4","csoundGetA4.toString","csoundGetCurrentTimeSamples","csoundGetCurrentTimeSamples.toString","csoundGetSizeOfMYFLT","csoundGetSizeOfMYFLT.toString","csoundSetOption","option","csoundSetOption.toString","csoundSetParams","csoundParameters","csoundSetParams.toString","csoundGetParams","structLength","structOffset","allocCsoundParamsStruct","structBuffer","currentCsoundParameters","freeCsoundParams","csoundGetParams.toString","csoundGetDebug","csoundGetDebug.toString","csoundSetDebug","csoundSetDebug.toString","csoundGetInputBufferSize","csoundGetInputBufferSize.toString","csoundGetOutputBufferSize","csoundGetOutputBufferSize.toString","csoundGetInputBuffer","csoundGetInputBuffer.toString","csoundGetOutputBuffer","csoundGetOutputBuffer.toString","csoundGetSpin","csoundGetSpin.toString","csoundGetSpout","csoundGetSpout.toString","add","_b","cloneList","list","curry","_args","adjustFn","replaceFn","actualIndex","adjust","all","predicate","_list","allPass","predicates","counter","always","x","and","any","anyPass","_input","__findHighestArity","spec","__filterUndefined","defined","__applySpecWithArity","arity","cache","remaining","y","z","ret","applySpec","toReturn","assocFn","newValue","assoc","_isInteger","n","isInteger","assocPathFn","pathArrValue","nextInput","assocPath","_curryN","ci","ai","cl","al","_arity$1","_1","_2","_3","_4","_5","_6","_7","_8","_9","_10","curryN","_fn","thisObj","_thisObj","both","f","g","_g","chain","clampFn","min","clamp","out","getTime","complement","ReduceStopper","reduceFn","reducer","acc","len","reduceStopper","_arity","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","_pipe","pipe","Infinity","compose","reverse","_y","cond","conditions","done","resultClosure","keys$1","mapArray","isIndexed","willReturn","mapObject","_obj","objKeys","mapObjIndexed","iterable","_iterable","INCORRECT_ITERABLE_INPUT","converge","transformers","_transformers","highestArity","count","filter","countBy","item","dec","isFalsy","isNaN","defaultTo","defaultArgument","typeResult","_lastIndexOf","valueToFind","typeOfValue","includes","foundIndex","equals","_indexOf","_arrayFromIterator","iter","next","_equalsSets","size","aList","values","bList","filtered","aInstance","parseError","maybeError","typeofError","__proto__","parseDate","maybeDate","toDateString","parseRegex","maybeRegex","RegExp","aType","is","aClone","bClone","loopArrayFlag","aCloneInstance","aCloneIndex","aRegex","bRegex","aDate","bDate","aError","bError","aKeys","keys","loopObjectFlag","aKeyInstance","aValue","bValue","_Set","items","checkUniqueness","type$1","prevSize","uniq","difference","dissoc","divide","drop","howManyToDrop","listOrString","dropLast","_listOrString","dropLastWhile","isArray$1","found","dropRepeats","prev","current","dropRepeatsWith","dropWhile","flag","holder","either","firstPredicate","secondPredicate","_secondPredicate","endsWith","diff","correct","propToFind","eqPropsFn","property","objA","objB","eqProps","evolveArray","rules","evolveObject","typeRule","evolve","rulesType","iterableType","F","filterObject","filterArray","indexed","predicateResult","find","findIndex","findLast","findLastIndex","flatten","flipFn","flip","listKeys","fromPairs","listOfPairs","groupBy","groupFn","groupWith","compareFn","okCompare","holderIsEmpty","lastCall","has","createPath","delimiter","pathInput","hasPath","objHolder","_objectIs","objectIs","identical","identity","ifElseFn","condition","onTrue","onFalse","conditionResult","ifElse","inc","indexByPath","indexBy","baseSlice","end","init","intersection","listA","listB","intersperse","separator","targetPrototype","_x","isEmpty","inputType","isNil","glue","juxt","listOfFunctions","NaN","lens","getter","setter","functor","focus","nth","updateFn","update","lensIndex","lensPath","lensProp","pattern","mathMod","maxByFn","maxBy","sum","mean","median","width","sort","mergeRight","newProps","_newProps","mergeAll","mergeDeepRight","sourceHolder","mergeLeft","mergeWithFn","mergeFn","mergeWith","minByFn","minBy","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","configurable","writable","isIterable","modifyFn","modify","modifyPathFn","path$1","modifyPath","modulo","moveFn","fromIndex","toIndex","move","multiply","negate","none","not","objOf","_value","of","omit","propsToOmit","propsToOmitValue","on","binaryFn","unaryFn","_a","onceFn","once","or","Identity","overFn","over","partialObject","partitionObject","yes","no","entries","partitionArray","partition","listHolder","pathEqFn","pathToSearch","pathEq","pathOrFn","pathOr","paths","pathsToSearch","singlePath","pick","propsToPick","pickAll","keysValue","pluck","prepend","product","propEqFn","valueToMatch","propEq","propIsFn","propIs","propOrFn","propOr","props","propSatisfiesFn","propSatisfies","range","_end","reject","repeat","timesToRepeat","_timesToRepeat","replacer","setFn","sliceFn","to","sortFn","sortBy","aSortResult","bSortResult","_str","maybe","ifRule","whenIf","whenElse","whenIfInput","whenElseInput","take","howMany","splitAt","correctIndex","splitEvery","sliceLength","splitWhen","preFound","postFound","startsWith","subtract","symmetricDifference","T","tail","takeLast","numValue","takeLastWhile","takeWhile","tap","times","_howMany","RangeError","toLower","toLowerCase","toPairs","toUpper","toUpperCase","transpose","el","nestedEl","trim","isFunction","tryCatch","fallback","passFallback","inputs","unapply","union","yInstance","uniqBy","includesWith","uniqWith","unless","whenFalse","_whenFalse","unwind","Const","whenFn","whenTrueFn","when","where","whereAny","whereEq","conditionValue","conditionProp","without","matchAgainst","_source","xor","zip","left","right","_right","zipObj","yHolder","xInstance","zipWithFn","zipWith","csoundSetMidiCallbacks","csoundGetMIDIDevList","isOutput","numberOfDevices","allocCsMidiDeviceStruct","freeCsMidiDeviceStruct","csoundGetMIDIDevList.toString","csoundGetRtMidiName","getRtMidiName","stringBuffer","csoundGetRtMidiName.toString","csoundGetMidiOutFileName","getMidiOutFileName","_isRequestingRtMidiInput","isRequestingRtMidiInput","csoundPushMidiMessage","data1","data2","pushMidiMessage","csoundPushMidiMessage.toString","csoundInputMessage","scoEvent","csoundInputMessage.toString","csoundInputMessageAsync","csoundInputMessageAsync.toString","csoundGetControlChannel","channelName","csoundGetControlChannelWasi","csoundGetControlChannel.toString","csoundSetControlChannel","csoundSetControlChannel.toString","csoundGetStringChannel","pointerToResult","csoundGetStringChannelWasi","csoundGetStringChannel.toString","csoundSetStringChannel","stringPtr2","csoundSetStringChannel.toString","csoundGetOutputName","csoundGetOutputName.toString","csoundGetInputName","csoundGetInputName.toString","csoundAppendEnv","variable","varStringPtr","valueStringPtr","res","csoundAppendEnv.toString","csoundShouldDaemonize","csoundIsScorePending","csoundIsScorePending.toString","csoundSetScorePending","csoundSetScorePending.toString","csoundReadScore","score","csoundReadScore.toString","csoundGetScoreTime","csoundGetScoreTime.toString","csoundGetScoreOffsetSeconds","csoundGetScoreOffsetSeconds.toString","csoundSetScoreOffsetSeconds","time","csoundSetScoreOffsetSeconds.toString","csoundRewindScore","csoundRewindScore.toString","csoundTableLength","tableNumber","csoundTableLength.toString","csoundTableGet","tableIndex","csoundTableGet.toString","csoundTableSet","csoundTableSet.toString","csoundTableCopyIn","arrayPtr","allocFloatArray","Float64Array","freeFloatArrayMem","csoundTableCopyIn.toString","csoundTableCopyOut","tableLength","jsArray","csoundTableCopyOut.toString","csoundGetTable","csoundGetTableArgs","csoundGetTableArgs.toString","csoundIsNamedGEN","csoundIsNamedGEN.toString","csoundGetNamedGEN","stringLength","csoundGetNamedGEN.toString","writeFile","data_","writeFile.toString","appendFile","appendFile.toString","readFile","readFile.toString","unlink","unlink.toString","readdir","readdir.toString","mkdir","mkdir.toString","api","csoundSetParameters","csoundGetParameters","csoundGetMIDIDevelopmentList","csoundAppendEnvironment","csoundGetTableArguments","fs","accumulator","k","appendBuffers","buffer1","buffer2","temporary","nearestPowerOf2","clz32","isIos","isFirefox","isSafari","vendor","isSabSupported","Atomics","SharedArrayBuffer","areWorkletsSupported","AudioNode","AudioWorkletNode","WebkitAudioContext","webkitAudioContext","AudioContext","isScriptProcessorNodeSupported","audioContext","createScriptProcessor","csoundApiRename","apiName","minusCsound","stopableStates","makeProxyCallback","proxyPort","csoundInstance","apiK","playState","arguments_","modifiedFs","callUncloned","makeSingleThreadCallback","apiCallback","fetchPlugins","withPlugins","url","arrayBuffer","response","messageEventHandler","worker","event","publicEvents","triggerMessage","playStateChange","onPlayStateChange","iterableMessageChannel","safelyClosePorts","p1","p2","IPCMessagePorts","mainMessagePort","workerMessagePort","mainMessagePortAudio","workerMessagePortAudio","csoundWorkerFrameRequestPort","audioWorkerFrameRequestPort","csoundWorkerAudioInputPort","audioWorkerAudioInputPort","csoundWorkerRtMidiPort","csoundMainRtMidiPort","sabWorkerCallbackReply","sabMainCallbackReply","mainMessagePort2","workerMessagePort2","restartAudioWorkerPorts","clearArray","pop","EventPromises","timeoutTimers","resumeResolver","resumePromise","pauseResolver","pausePromise","stopResolver","stopPromise","startResolver","startPromise","createStartPromise","releaseStartPromise","createStopPromise","releaseStopPromise","createPausePromise","releasePausePromise","createResumePromise","releaseResumePromise","waitForStart","waitForStop","isWaitingToStart","isWaitingToStop","isWaiting","eventAsking","waitForPause","waitForResume","timer","clearTimeout","module.exports","u","t","code","o","_events","_eventsCount","eventNames","s.prototype.eventNames","listeners","s.prototype.listeners","listenerCount","s.prototype.listenerCount","emit","s.prototype.emit","removeListener","s.prototype.on","s.prototype.once","s.prototype.removeListener","removeAllListeners","s.prototype.removeAllListeners","off","addListener","prefixed","EventEmitter","PublicEventAPI","eventEmitter","EE3","currentDerivedPlayState","decorateAPI","triggerRealtimePerformanceStarted","triggerRealtimePerformancePaused","triggerRealtimePerformanceResumed","triggerRealtimePerformanceEnded","triggerRenderStarted","triggerRenderEnded","triggerOnAudioNodeCreated","terminateInstance","audioNode","exportApi","createObjectURL","URL","webkitURL","Blob","VanillaWorkerMainThread","audioWorker","audioContextIsProvided","inputChannelCount","outputChannelCount","ipcMessagePorts","eventPromises","csoundWorkerMain","sampleRate","currentPlayState","midiPortStarted","csoundWorker","terminate","handleMidiInput","payload","prepareRealtimePerformance","getSr","inputName","getInputName","isRequestingInput","isRequestingMidi","outputsCount","getNchnls","inputsCount","newPlayState","csoundPause","workletProxy","csoundResume","initialize","wasmDataURI","wasmBytes","initIframe","Worker","VanillaWorker","messagePort","requestPort","audioInputPort","rtmidiPort","getAudioContext","this.exportApi.getAudioContext","getNode","this.exportApi.getNode","maybeNode","audioWorkletNode","node","enableAudioInput","this.exportApi.enableAudioInput","API","reference","proxyCallback","startResult","stop","resetResult","reset","method","proxyFsCallback","unmuteIosAudio","handleUserActivation","htmlAudioState","createHtmlAudio","webAudioState","createBufferSource","createBuffer","connect","destination","state","maybeCleanup","disconnect","audio","preload","loop","silentAudioFile","play","USER_ACTIVATION_EVENTS","eventName","capture","passive","maxTouchPoints","createSilentAudioFile","dataView","DataView","setUint32","setUint16","btoa","missingCharacters","DEFAULT_BUFFER_LEN","MAX_CHANNELS","RING_BUFFER_SIZE","MIDI_BUFFER_SIZE","MIDI_BUFFER_PAYLOAD_SIZE","CALLBACK_DATA_BUFFER_SIZE","initialSharedState","AUDIO_STATE","CSOUND_LOCK","FRAMES_REQUESTED","IS_PERFORMING","IS_RENDERING","IS_PAUSED","STOP","SAMPLE_RATE","KSMPS","NCHNLS","NCHNLS_I","IS_REQUESTING_MIC","BUFFER_LEN","OUTPUT_READ_INDEX","OUTPUT_WRITE_INDEX","AVAIL_IN_BUFS","AVAIL_OUT_BUFS","IS_REQUESTING_RTMIDI","RTMIDI_INDEX","AVAIL_RTMIDI_EVENTS","HAS_PENDING_CALLBACKS","DATA_TYPE","NUMBER","STRING","FLOAT_32","FLOAT_64","SharedArrayBufferMainThread","hasSharedArrayBuffer","callbackId","callbackBuffer","audioStateBuffer","Int32Array","BYTES_PER_ELEMENT","audioStatePointer","store","audioStreamIn","audioStreamOut","midiBufferSAB","midiBuffer","currentQueueLength","rtmidiBufferIndex","nextIndex","notify","argumentz","apiKey","resolveCallback","inputCount","ksmps","SABWorker","answer","wasmTransformerDataURI","callbackPort","unlock","compareExchange","midiMessage","midiMessage.toString","proxyFsCallback.toString","bufferWrappedCallback","returnPromise","timeout","bufferWrappedCallback.toString","requestMidi","onMidiMessage","requestMIDIAccess","midiDevices","midiInputs","onmidimessage","UID","AudioWorkletMainThread","autoConnect","softwareBufferSize","hardwareBufferSize","createWorkletNode","contextUid","processorOptions","maybeSharedArrayBuffer","maybeSharedArrayBufferAudioIn","maybeSharedArrayBufferAudioOut","workletWorkerUrl","revokeObjectURL","WorkletWorker","audioWorklet","addModule","resolveMicrophonePromise","microphonePromise","getUserMedia","mediaDevices","webkitGetUserMedia","mozGetUserMedia","microphoneCallback","liveInput","createMediaStreamSource","channelCount","newNode","optional","echoCancellation","sampleSize","inputPort","requestMicrophoneNode","spnWorker","ScriptProcessorNodeMainThread","scriptProcessorNode","iFrameElement","remove","setPlayState","parentScope","iFrameHtml","ScriptProcessorNodeWorker","iFrameBlob","sandbox","cssText","iFrameOnLoad","this.iFrameElement.onload","body","contentWindow","initialPlayState","dlinit","hostInstance","pluginInstance","table","csoundModuleInit","csoundModuleCreate","WebAssembly","Global","mutable","csoundModuleDestroy","csoundModuleErrorCodeToString","tableEnd","grow","csoundWasiLoadPlugin","csound_opcode_init","csound_fgen_init","csoundOpcodeInit","csoundFgenInit","csoundWasiLoadOpcodeLibrary","BigInt","WASI_ESUCCESS","WASI_E2BIG","WASI_EACCES","WASI_EADDRINUSE","WASI_EADDRNOTAVAIL","WASI_EAFNOSUPPORT","WASI_EAGAIN","WASI_EALREADY","WASI_EBADF","WASI_EBADMSG","WASI_EBUSY","WASI_ECANCELED","WASI_ECHILD","WASI_ECONNABORTED","WASI_ECONNREFUSED","WASI_ECONNRESET","WASI_EDEADLK","WASI_EDESTADDRREQ","WASI_EDOM","WASI_EDQUOT","WASI_EEXIST","WASI_EFAULT","WASI_EFBIG","WASI_EHOSTUNREACH","WASI_EIDRM","WASI_EILSEQ","WASI_EINPROGRESS","WASI_EINTR","WASI_EINVAL","WASI_EIO","WASI_EISCONN","WASI_EISDIR","WASI_ELOOP","WASI_EMFILE","WASI_EMLINK","WASI_EMSGSIZE","WASI_EMULTIHOP","WASI_ENAMETOOLONG","WASI_ENETDOWN","WASI_ENETRESET","WASI_ENETUNREACH","WASI_ENFILE","WASI_ENOBUFS","WASI_ENODEV","WASI_ENOENT","WASI_ENOEXEC","WASI_ENOLCK","WASI_ENOLINK","WASI_ENOMEM","WASI_ENOMSG","WASI_ENOPROTOOPT","WASI_ENOSPC","WASI_ENOSYS","WASI_ENOTCONN","WASI_ENOTDIR","WASI_ENOTEMPTY","WASI_ENOTRECOVERABLE","WASI_ENOTSOCK","WASI_ENOTSUP","WASI_ENOTTY","WASI_ENXIO","WASI_EOVERFLOW","WASI_EOWNERDEAD","WASI_EPERM","WASI_EPIPE","WASI_EPROTO","WASI_EPROTONOSUPPORT","WASI_EPROTOTYPE","WASI_ERANGE","WASI_EROFS","WASI_ESPIPE","WASI_ESRCH","WASI_ESTALE","WASI_ETIMEDOUT","WASI_ETXTBSY","WASI_EXDEV","WASI_ENOTCAPABLE","WASI_SIGABRT","WASI_SIGALRM","WASI_SIGBUS","WASI_SIGCHLD","WASI_SIGCONT","WASI_SIGFPE","WASI_SIGHUP","WASI_SIGILL","WASI_SIGINT","WASI_SIGKILL","WASI_SIGPIPE","WASI_SIGQUIT","WASI_SIGSEGV","WASI_SIGSTOP","WASI_SIGTERM","WASI_SIGTRAP","WASI_SIGTSTP","WASI_SIGTTIN","WASI_SIGTTOU","WASI_SIGURG","WASI_SIGUSR1","WASI_SIGUSR2","WASI_SIGVTALRM","WASI_SIGXCPU","WASI_SIGXFSZ","WASI_FILETYPE_UNKNOWN","WASI_FILETYPE_BLOCK_DEVICE","WASI_FILETYPE_CHARACTER_DEVICE","WASI_FILETYPE_DIRECTORY","WASI_FILETYPE_REGULAR_FILE","WASI_FILETYPE_SOCKET_DGRAM","WASI_FILETYPE_SOCKET_STREAM","WASI_FILETYPE_SYMBOLIC_LINK","WASI_FDFLAG_APPEND","WASI_FDFLAG_DSYNC","WASI_FDFLAG_NONBLOCK","WASI_FDFLAG_RSYNC","WASI_FDFLAG_SYNC","WASI_RIGHT_FD_DATASYNC","WASI_RIGHT_FD_READ","WASI_RIGHT_FD_SEEK","WASI_RIGHT_FD_FDSTAT_SET_FLAGS","WASI_RIGHT_FD_SYNC","WASI_RIGHT_FD_TELL","WASI_RIGHT_FD_WRITE","WASI_RIGHT_FD_ADVISE","WASI_RIGHT_FD_ALLOCATE","WASI_RIGHT_PATH_CREATE_DIRECTORY","WASI_RIGHT_PATH_CREATE_FILE","WASI_RIGHT_PATH_LINK_SOURCE","WASI_RIGHT_PATH_LINK_TARGET","WASI_RIGHT_PATH_OPEN","WASI_RIGHT_FD_READDIR","WASI_RIGHT_PATH_READLINK","WASI_RIGHT_PATH_RENAME_SOURCE","WASI_RIGHT_PATH_RENAME_TARGET","WASI_RIGHT_PATH_FILESTAT_GET","WASI_RIGHT_PATH_FILESTAT_SET_SIZE","WASI_RIGHT_PATH_FILESTAT_SET_TIMES","WASI_RIGHT_FD_FILESTAT_GET","WASI_RIGHT_FD_FILESTAT_SET_SIZE","WASI_RIGHT_FD_FILESTAT_SET_TIMES","WASI_RIGHT_PATH_SYMLINK","WASI_RIGHT_PATH_REMOVE_DIRECTORY","WASI_RIGHT_PATH_UNLINK_FILE","WASI_RIGHT_POLL_FD_READWRITE","WASI_RIGHT_SOCK_SHUTDOWN","RIGHTS_ALL","RIGHTS_BLOCK_DEVICE_BASE","RIGHTS_BLOCK_DEVICE_INHERITING","RIGHTS_CHARACTER_DEVICE_BASE","RIGHTS_CHARACTER_DEVICE_INHERITING","RIGHTS_REGULAR_FILE_BASE","RIGHTS_REGULAR_FILE_INHERITING","RIGHTS_DIRECTORY_BASE","RIGHTS_DIRECTORY_INHERITING","RIGHTS_SOCKET_BASE","RIGHTS_SOCKET_INHERITING","RIGHTS_TTY_BASE","RIGHTS_TTY_INHERITING","WASI_CLOCK_REALTIME","WASI_CLOCK_MONOTONIC","WASI_CLOCK_PROCESS_CPUTIME_ID","WASI_CLOCK_THREAD_CPUTIME_ID","WASI_EVENTTYPE_CLOCK","WASI_EVENTTYPE_FD_READ","WASI_EVENTTYPE_FD_WRITE","WASI_FILESTAT_SET_ATIM","WASI_FILESTAT_SET_ATIM_NOW","WASI_FILESTAT_SET_MTIM","WASI_FILESTAT_SET_MTIM_NOW","WASI_O_CREAT","WASI_O_DIRECTORY","WASI_O_EXCL","WASI_O_TRUNC","WASI_PREOPENTYPE_DIR","WASI_DIRCOOKIE_START","WASI_STDIN_FILENO","WASI_STDOUT_FILENO","WASI_STDERR_FILENO","WASI_WHENCE_SET","WASI_WHENCE_CUR","WASI_WHENCE_END","DebugError","cause","captureStackTrace","reportErrorToServer","dom","NodeType","ELEMENT","ATTRIBUTE","TEXT","CDATA_SECTION","ENTITY_REFERENCE","ENTITY","PROCESSING_INSTRUCTION","COMMENT","DOCUMENT","DOCUMENT_TYPE","DOCUMENT_FRAGMENT","NOTATION","ENABLE_ASSERTS","AssertionError","messagePattern","messageArgs","subs","DEFAULT_ERROR_HANDLER","exports.DEFAULT_ERROR_HANDLER","errorHandler_","splitParts","returnString","subLast","sub","doAssertFailure","defaultMessage","defaultArgs","givenMessage","givenArgs","setErrorHandler","exports.setErrorHandler","errorHandler","assert","exports.assert","assertExists","exports.assertExists","fail","exports.fail","assertNumber","exports.assertNumber","assertString","exports.assertString","assertFunction","exports.assertFunction","assertObject","exports.assertObject","assertArray","exports.assertArray","assertBoolean","exports.assertBoolean","assertElement","exports.assertElement","assertInstanceof","exports.assertInstanceof","getType","assertFinite","exports.assertFinite","isFinite","displayName","NATIVE_ARRAY_PROTOTYPES","ASSUME_NATIVE_FUNCTIONS","peek","opt_fromIndex","asserts","arr2","forEachRight","resLength","rval","reduceRight","some","every","element","findRight","findIndexRight","contains","clear","insert","insertAt","opt_i","insertArrayAt","elementsToAdd","insertBefore","opt_obj2","rv","removeAt","removeLast","removeIf","removeAllIf","removedCount","toArray","extend","arr1","len1","len2","j","opt_end","removeDuplicates","opt_rv","opt_hashFn","returnArray","defaultHashFn","hashFn","cursorRead","cursorInsert","seen","binarySearch","opt_compareFn","binarySearch_","defaultCompare","binarySelect","evaluator","isEvaluator","opt_target","opt_selfObj","middle","compareResult","stableSort","compArr","valueCompareFn","stableCompareFn","obj1","obj2","sortByKey","keyFn","keyCompareFn","sortObjectsByKey","isSorted","opt_strict","compare","opt_equalsFn","equalsFn","defaultCompareEquality","compare3","inverseDefaultCompare","binaryInsert","binaryRemove","bucket","sorter","buckets","bucketToMap","toObject","keyFunc","toMap","startOrEnd","opt_step","step","CHUNK_SIZE","chunk","recurseResult","rotate","moveItem","removedItems","minLen","shuffle","opt_randFn","randFn","tmp","copyByIndex","index_arr","concatMap","assertIsLocation","goog.dom.asserts.assertIsLocation","win","getWindow_","Location","Element","debugStringForType_","assertIsElementType_","goog.dom.asserts.assertIsElementType_","typename","assertIsHTMLAnchorElement","goog.dom.asserts.assertIsHTMLAnchorElement","assertIsHTMLButtonElement","goog.dom.asserts.assertIsHTMLButtonElement","assertIsHTMLLinkElement","goog.dom.asserts.assertIsHTMLLinkElement","assertIsHTMLImageElement","goog.dom.asserts.assertIsHTMLImageElement","assertIsHTMLAudioElement","goog.dom.asserts.assertIsHTMLAudioElement","assertIsHTMLVideoElement","goog.dom.asserts.assertIsHTMLVideoElement","assertIsHTMLInputElement","goog.dom.asserts.assertIsHTMLInputElement","assertIsHTMLTextAreaElement","goog.dom.asserts.assertIsHTMLTextAreaElement","assertIsHTMLCanvasElement","goog.dom.asserts.assertIsHTMLCanvasElement","assertIsHTMLEmbedElement","goog.dom.asserts.assertIsHTMLEmbedElement","assertIsHTMLFormElement","goog.dom.asserts.assertIsHTMLFormElement","assertIsHTMLFrameElement","goog.dom.asserts.assertIsHTMLFrameElement","assertIsHTMLIFrameElement","goog.dom.asserts.assertIsHTMLIFrameElement","assertIsHTMLObjectElement","goog.dom.asserts.assertIsHTMLObjectElement","assertIsHTMLScriptElement","goog.dom.asserts.assertIsHTMLScriptElement","goog.dom.asserts.debugStringForType_","goog.dom.asserts.getWindow_","ownerDocument","defaultView","parentWindow","functions","constant","goog.functions.constant","retValue","FALSE","goog.functions.FALSE","TRUE","goog.functions.TRUE","NULL","goog.functions.NULL","UNDEFINED","goog.functions.UNDEFINED","EMPTY","goog.functions.identity","opt_returnValue","goog.functions.error","goog.functions.fail","lock","goog.functions.lock","opt_numArgs","goog.functions.nth","partialRight","goog.functions.partialRight","rightArgs","withReturnValue","goog.functions.withReturnValue","sequence","equalTo","goog.functions.equalTo","opt_useLooseComparison","other","goog.functions.compose","goog.functions.sequence","goog.functions.and","goog.functions.or","goog.functions.not","goog.functions.create","temp","CACHE_RETURN_VALUE","cacheReturnValue","goog.functions.cacheReturnValue","called","goog.functions.once","inner","debounce","goog.functions.debounce","interval","opt_scope","throttle","goog.functions.throttle","shouldFire","storedArgs","handleTimeout","fire","rateLimit","goog.functions.rateLimit","goog.functions.isFunction","TypedString","goog.string.TypedString","goog.string.Const","opt_token","opt_content","stringConstValueWithSecurityContract__googStringSecurityPrivate_","GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_","STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_","TYPE_MARKER_","implementsGoogStringTypedString","getTypedStringValue","goog.string.Const.prototype.getTypedStringValue","goog.string.Const.prototype.toString","unwrap","goog.string.Const.unwrap","stringConst","goog.string.Const.from","trustedtypes","POLICY_NAME","getPolicyPrivateDoNotAccessOrElse","goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse","cachedPolicy_","CONSTRUCTOR_TOKEN_PRIVATE","SafeScript","token","privateDoNotAccessOrElseSafeScriptWrappedValue_","fromConstant","scriptString","createSafeScriptSecurityPrivateDoNotAccessOrElse","fromJson","stringify_","safeScript","unwrapTrustedScript","json","trustedScript","noinlineScript","valueOf","createObjectUrl","goog.fs.url.createObjectUrl","getUrlObject_","revokeObjectUrl","goog.fs.url.revokeObjectUrl","UrlObject_","goog.fs.url.UrlObject_","goog.fs.url.UrlObject_.prototype.createObjectURL","arg","goog.fs.url.UrlObject_.prototype.revokeObjectURL","goog.fs.url.getUrlObject_","urlObject","findUrlObject_","goog.fs.url.findUrlObject_","browserSupportsObjectUrls","goog.fs.url.browserSupportsObjectUrls","blob","getBlob","goog.fs.blob.getBlob","BlobBuilder","WebKitBlobBuilder","bb","getBlobWithProperties","goog.fs.blob.getBlobWithProperties","opt_type","opt_endings","properties","TrustedResourceUrl","privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_","CONSTRUCTOR_TOKEN_PRIVATE_","goog.html.TrustedResourceUrl.prototype.getTypedStringValue","cloneWithParams","goog.html.TrustedResourceUrl.prototype.cloneWithParams","searchParams","opt_hashParams","URL_PARAM_PARSER_","exec","urlHash","createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse","urlBase","stringifyParams_","goog.html.TrustedResourceUrl.unwrap","trustedResourceUrl","unwrapTrustedScriptURL","goog.html.TrustedResourceUrl.unwrapTrustedScriptURL","format","goog.html.TrustedResourceUrl.format","formatStr","BASE_URL_","FORMAT_MARKER_","formatWithParams","goog.html.TrustedResourceUrl.formatWithParams","goog.html.TrustedResourceUrl.fromConstant","fromConstants","goog.html.TrustedResourceUrl.fromConstants","unwrapped","fromSafeScript","goog.html.TrustedResourceUrl.fromSafeScript","goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse","noinlineUrl","goog.html.TrustedResourceUrl.stringifyParams_","prefix","currentString","outputValues","outputValue","internal","goog.string.internal.startsWith","goog.string.internal.endsWith","suffix","caseInsensitiveStartsWith","goog.string.internal.caseInsensitiveStartsWith","caseInsensitiveCompare","caseInsensitiveEndsWith","goog.string.internal.caseInsensitiveEndsWith","caseInsensitiveEquals","goog.string.internal.caseInsensitiveEquals","str1","str2","isEmptyOrWhitespace","goog.string.internal.isEmptyOrWhitespace","goog.string.internal.caseInsensitiveCompare","test1","test2","newLineToBr","goog.string.internal.newLineToBr","opt_xml","htmlEscape","goog.string.internal.htmlEscape","opt_isLikelyToContainHtmlChars","AMP_RE_","LT_RE_","GT_RE_","QUOT_RE_","SINGLE_QUOTE_RE_","NULL_RE_","ALL_RE_","whitespaceEscape","goog.string.internal.whitespaceEscape","goog.string.internal.contains","subString","caseInsensitiveContains","goog.string.internal.caseInsensitiveContains","compareVersions","goog.string.internal.compareVersions","version1","version2","order","v1Subs","v2Subs","subCount","subIdx","v1Sub","v2Sub","v1Comp","v2Comp","v1CompNum","parseInt","v2CompNum","compareElements_","goog.string.internal.compareElements_","SafeUrl","privateDoNotAccessOrElseSafeUrlWrappedValue_","INNOCUOUS_STRING","goog.html.SafeUrl.prototype.getTypedStringValue","goog.html.SafeUrl.unwrap","safeUrl","goog.html.SafeUrl.fromConstant","createSafeUrlSecurityPrivateDoNotAccessOrElse","SAFE_MIME_TYPE_PATTERN_","isSafeMimeType","goog.html.SafeUrl.isSafeMimeType","mimeType","fromBlob","goog.html.SafeUrl.fromBlob","goog.html.SafeUrl.revokeObjectUrl","fromMediaSource","goog.html.SafeUrl.fromMediaSource","mediaSource","MediaSource","DATA_URL_PATTERN_","tryFromDataUrl","goog.html.SafeUrl.tryFromDataUrl","dataUrl","filteredDataUrl","fromDataUrl","goog.html.SafeUrl.fromDataUrl","INNOCUOUS_URL","fromTelUrl","goog.html.SafeUrl.fromTelUrl","telUrl","SIP_URL_PATTERN_","fromSipUrl","goog.html.SafeUrl.fromSipUrl","sipUrl","decodeURIComponent","fromFacebookMessengerUrl","goog.html.SafeUrl.fromFacebookMessengerUrl","facebookMessengerUrl","fromWhatsAppUrl","goog.html.SafeUrl.fromWhatsAppUrl","whatsAppUrl","fromSmsUrl","goog.html.SafeUrl.fromSmsUrl","smsUrl","isSmsUrlBodyValid_","goog.html.SafeUrl.isSmsUrlBodyValid_","bodyParams","bodyValue","fromSshUrl","goog.html.SafeUrl.fromSshUrl","sshUrl","sanitizeChromeExtensionUrl","goog.html.SafeUrl.sanitizeChromeExtensionUrl","extensionId","sanitizeExtensionUrl_","sanitizeFirefoxExtensionUrl","goog.html.SafeUrl.sanitizeFirefoxExtensionUrl","sanitizeEdgeExtensionUrl","goog.html.SafeUrl.sanitizeEdgeExtensionUrl","goog.html.SafeUrl.sanitizeExtensionUrl_","scheme","matches","extractedExtensionId","acceptedExtensionIds","fromTrustedResourceUrl","goog.html.SafeUrl.fromTrustedResourceUrl","SAFE_URL_PATTERN_","SAFE_URL_PATTERN","trySanitize","goog.html.SafeUrl.trySanitize","sanitize","goog.html.SafeUrl.sanitize","sanitizeAssertUnchanged","goog.html.SafeUrl.sanitizeAssertUnchanged","opt_allowDataUrl","goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse","ABOUT_BLANK","SafeStyle","privateDoNotAccessOrElseSafeStyleWrappedValue_","styleString","createSafeStyleSecurityPrivateDoNotAccessOrElse","safeStyle","sanitizePropertyValue","addArgument","argument","sanitizePropertyValueString","valueWithoutFunctions","FUNCTIONS_RE","URL_RE","VALUE_RE","COMMENT_RE","hasBalancedQuotes","hasBalancedSquareBrackets","VALUE_ALLOWED_CHARS","sanitizeUrl","outsideSingle","outsideDouble","outside","tokenRe","ALLOWED_FUNCTIONS","before","after","quote","inside","sanitized","getCount","getAnyKey","getAnyValue","containsValue","getValues","getKeys","getValueByKeys","containsKey","findKey","findValue","setIfUndefined","setWithReturnValueIfNotSet","unsafeClone","transposed","PROTOTYPE_FIELDS","argLength","createSet","createImmutableView","isFrozen","freeze","isImmutableView","getAllPropertyNames","includeObjectPrototype","includeFunctionPrototype","getOwnPropertyNames","getPrototypeOf","visitedSet","proto","names","getSuperClass","SafeStyleSheet","privateDoNotAccessOrElseSafeStyleSheetWrappedValue_","createRule","selector","selectorToCheck","hasBalancedBrackets_","styleSheet","createSafeStyleSheetSecurityPrivateDoNotAccessOrElse","brackets","expectedBrackets","styleSheetString","safeStyleSheet","HtmlElement","goog.dom.HtmlElement","TagName","cast","A","ABBR","ACRONYM","ADDRESS","APPLET","AREA","ARTICLE","ASIDE","AUDIO","B","BASE","BASEFONT","BDI","BDO","BIG","BLOCKQUOTE","BODY","BR","BUTTON","CANVAS","CAPTION","CENTER","CITE","CODE","COL","COLGROUP","COMMAND","DATA","DATALIST","DD","DEL","DETAILS","DFN","DIALOG","DIR","DIV","DL","DT","EM","EMBED","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FORM","FRAME","FRAMESET","H1","H2","H3","H4","H5","H6","HEAD","HEADER","HGROUP","HR","HTML","I","IFRAME","IMG","INPUT","INS","ISINDEX","KBD","KEYGEN","LABEL","LEGEND","LI","LINK","MAIN","MAP","MARK","MATH","MENU","MENUITEM","META","METER","NAV","NOFRAMES","NOSCRIPT","OBJECT","OL","OPTGROUP","OPTION","OUTPUT","P","PARAM","PICTURE","PRE","PROGRESS","Q","RP","RT","RTC","RUBY","S","SAMP","SCRIPT","SECTION","SELECT","SMALL","SOURCE","SPAN","STRIKE","STRONG","STYLE","SUB","SUMMARY","SUP","SVG","TABLE","TBODY","TD","TEMPLATE","TEXTAREA","TFOOT","TH","THEAD","TIME","TITLE","TR","TRACK","TT","U","UL","VAR","VIDEO","WBR","USE_CLIENT_HINTS_OVERRIDE","USE_CLIENT_HINTS","forceClientHintsInTests","setUseClientHintsForTesting","use","exports.setUseClientHintsForTesting","useClientHintsRuntimeOverride","useClientHints","exports.useClientHints","ASSUME_CLIENT_HINTS_SUPPORT","getNativeUserAgentString","getNavigator","getNativeUserAgentData","userAgentData","userAgentInternal","userAgentDataInternal","setUserAgent","getUserAgent","setUserAgentData","resetUserAgentData","getUserAgentData","matchUserAgentDataBrand","brands","brand","matchUserAgent","matchUserAgentIgnoreCase","extractVersionTuples","versionRegExp","getIfLoaded","key_","promise_","value_","pending_","dataValues","getHighEntropyValues","resetForTesting","versionString","versionString_","toVersionStringForLogging","isAtLeast","version","fullVersionList","HighEntropyValue","platformVersion","Brand","ANDROID_BROWSER","CHROMIUM","EDGE","FIREFOX","IE","OPERA","SAFARI","SILK","useUserAgentDataBrand","ignoreClientHintsFlag","hasFullVersionList","matchOpera","matchIE","matchEdgeHtml","matchEdgeChromium","matchOperaChromium","matchFirefox","matchSafari","matchChrome","matchCoast","isSilk","matchIosWebview","matchAndroidBrowser","isChrome","isOpera","isIE","isEdge","isEdgeChromium","isOperaChromium","isCoast","isIosWebview","isAndroidBrowser","createVersionMap","versionTuples","versionMap","tuple","getVersion","userAgentString","getIEVersion","lookUpValueWithKeys","isVersionOrHigher","msie","tridentVersion","getFullVersionFromUserAgentString","browser","versionOf_","matchingBrand","versionParts","fullVersion","majorVersion","isAtMost","HighEntropyBrandVersion","useUach","fallbackVersion","brand_","version_","Version","useUach_","loadedVersionList","preUachHasLoaded","loadFullVersions","exports.resetForTesting","fullVersionOf","fallbackVersionString","getVersionStringForLogging","fullVersionObj","tags","VOID_TAGS_","isVoidTag","goog.dom.tags.isVoidTag","tagName","SafeHtml","privateDoNotAccessOrElseSafeHtmlWrappedValue_","safeHtml","unwrapTrustedHTML","textOrHtml","textAsString","createSafeHtmlSecurityPrivateDoNotAccessOrElse","htmlEscapePreservingNewlines","htmlEscapePreservingNewlinesAndSpaces","comment","attributes","content","verifyTagName","createSafeHtmlTagSecurityPrivateDoNotAccessOrElse","VALID_NAMES_IN_TAG","ENABLE_ERROR_MESSAGES","NOT_ALLOWED_TAG_NAMES","createIframe","srcdoc","fixedAttributes","combinedAttrs","combineAttributes","defaultAttributes","createSandboxIframe","canUseSandboxIframe","createScriptSrc","attr","attrLower","htmlContent","createStyle","createMetaRefresh","secs","unwrappedUrl","separatorHtml","trustedHtml","noinlineHtml","stringifyAttributes","getAttrNameAndValue","combinedAttributes","nameLower","SUPPORT_STYLE_ATTRIBUTE","URL_ATTRIBUTES","getStyleValue","DOCTYPE_HTML","emptyHTML","uncheckedconversions","safeHtmlFromStringKnownToSatisfyTypeContract","goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract","justification","safeScriptFromStringKnownToSatisfyTypeContract","goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract","safeStyleFromStringKnownToSatisfyTypeContract","goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract","safeStyleSheetFromStringKnownToSatisfyTypeContract","goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract","safeUrlFromStringKnownToSatisfyTypeContract","goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract","trustedResourceUrlFromStringKnownToSatisfyTypeContract","goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract","safe","InsertAdjacentHtmlPosition","AFTERBEGIN","AFTEREND","BEFOREBEGIN","BEFOREEND","insertAdjacentHtml","goog.dom.safe.insertAdjacentHtml","position","insertAdjacentHTML","SET_INNER_HTML_DISALLOWED_TAGS_","isInnerHtmlCleanupRecursive_","div","childDiv","firstChild","innerChild","innerHTML","parentElement","unsafeSetInnerHtmlDoNotUseOrElse","goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse","elem","lastChild","removeChild","setInnerHtml","goog.dom.safe.setInnerHtml","setInnerHtmlFromConstant","goog.dom.safe.setInnerHtmlFromConstant","constHtml","setOuterHtml","goog.dom.safe.setOuterHtml","outerHTML","setFormElementAction","goog.dom.safe.setFormElementAction","form","action","setButtonFormAction","goog.dom.safe.setButtonFormAction","button","formAction","setInputFormAction","goog.dom.safe.setInputFormAction","setStyle","goog.dom.safe.setStyle","documentWrite","goog.dom.safe.documentWrite","setAnchorHref","goog.dom.safe.setAnchorHref","anchor","href","setAudioSrc","goog.dom.safe.setAudioSrc","audioElement","allowDataUrl","setVideoSrc","goog.dom.safe.setVideoSrc","videoElement","setEmbedSrc","goog.dom.safe.setEmbedSrc","embed","setFrameSrc","goog.dom.safe.setFrameSrc","frame","setIframeSrc","goog.dom.safe.setIframeSrc","iframe","setIframeSrcdoc","goog.dom.safe.setIframeSrcdoc","setLinkHrefAndRel","goog.dom.safe.setLinkHrefAndRel","link","rel","getStyleNonce","setObjectData","goog.dom.safe.setObjectData","setScriptSrc","goog.dom.safe.setScriptSrc","setNonceForScriptElement_","setScriptContent","goog.dom.safe.setScriptContent","textContent","goog.dom.safe.setNonceForScriptElement_","getScriptNonce","setLocationHref","goog.dom.safe.setLocationHref","loc","assignLocation","goog.dom.safe.assignLocation","replaceLocation","goog.dom.safe.replaceLocation","openInWindow","goog.dom.safe.openInWindow","opt_openerWin","opt_name","opt_specs","parseFromStringHtml","goog.dom.safe.parseFromStringHtml","parser","parseFromString","goog.dom.safe.parseFromString","createImageFromBlob","goog.dom.safe.createImageFromBlob","objectUrl","image","Image","image.onload","createContextualFragment","goog.dom.safe.createContextualFragment","goog.dom.safe.getScriptNonce","getNonce_","goog.dom.safe.getStyleNonce","goog.dom.safe.getNonce_","DETECT_DOUBLE_ESCAPING","FORCE_NON_DOM_HTML_UNESCAPING","Unicode","NBSP","ZERO_WIDTH_SPACE","goog.string.subs","subsArguments","collapseWhitespace","goog.string.collapseWhitespace","isEmptyString","goog.string.isEmptyString","isEmptyOrWhitespaceSafe","goog.string.isEmptyOrWhitespaceSafe","makeSafe","isEmptySafe","isBreakingWhitespace","goog.string.isBreakingWhitespace","isAlpha","goog.string.isAlpha","isNumeric","goog.string.isNumeric","isAlphaNumeric","goog.string.isAlphaNumeric","isSpace","goog.string.isSpace","isUnicodeChar","goog.string.isUnicodeChar","stripNewlines","goog.string.stripNewlines","canonicalizeNewlines","goog.string.canonicalizeNewlines","normalizeWhitespace","goog.string.normalizeWhitespace","normalizeSpaces","goog.string.normalizeSpaces","collapseBreakingSpaces","goog.string.collapseBreakingSpaces","trimLeft","goog.string.trimLeft","trimRight","goog.string.trimRight","numberAwareCompare_","goog.string.numberAwareCompare_","tokenizerRegExp","tokens1","tokens2","num1","num2","intAwareCompare","goog.string.intAwareCompare","floatAwareCompare","goog.string.floatAwareCompare","numerateCompare","urlEncode","goog.string.urlEncode","urlDecode","goog.string.urlDecode","goog.string.htmlEscape","E_RE_","unescapeEntities","goog.string.unescapeEntities","unescapeEntitiesUsingDom_","unescapePureXmlEntities_","unescapeEntitiesWithDocument","goog.string.unescapeEntitiesWithDocument","goog.string.unescapeEntitiesUsingDom_","opt_document","HTML_ENTITY_PATTERN_","entity","nodeValue","goog.string.unescapePureXmlEntities_","goog.string.whitespaceEscape","preserveSpaces","goog.string.preserveSpaces","stripQuotes","goog.string.stripQuotes","quoteChars","quoteChar","truncate","goog.string.truncate","opt_protectEscapedCharacters","truncateMiddle","goog.string.truncateMiddle","opt_trailingChars","endPoint","half","endPos","specialEscapeChars_","jsEscapeCache_","goog.string.quote","sb","cc","escapeChar","escapeString","goog.string.escapeString","goog.string.escapeChar","countOf","goog.string.countOf","ss","goog.string.removeAt","resultStr","goog.string.remove","removeAll","goog.string.removeAll","re","regExpEscape","replaceAll","goog.string.replaceAll","replacement","goog.string.regExpEscape","padNumber","goog.string.padNumber","num","opt_precision","toFixed","sign","goog.string.makeSafe","getRandomString","goog.string.getRandomString","abs","hashCode","goog.string.hashCode","uniqueStringCounter_","createUniqueString","goog.string.createUniqueString","toNumber","goog.string.toNumber","isLowerCamelCase","goog.string.isLowerCamelCase","isUpperCamelCase","goog.string.isUpperCamelCase","toCamelCase","goog.string.toCamelCase","toSelectorCase","goog.string.toSelectorCase","toTitleCase","goog.string.toTitleCase","opt_delimiters","delimiters","regexp","capitalize","goog.string.capitalize","goog.string.parseInt","splitLimit","goog.string.splitLimit","limit","returnVal","lastComponent","goog.string.lastComponent","separators","lastSeparatorIndex","currentSeparatorIndex","editDistance","goog.string.editDistance","v0","v1","cost","baseName","goog.string.path.baseName","basename","dirname","goog.string.path.dirname","extension","goog.string.path.extension","separatorIndex","goog.string.path.join","normalizePath","goog.string.path.normalizePath","initialSlashes","newParts","goog.string.path.split","DEBUG_WASI","assertLeadingSlash","removeLeadingSlash","shouldOpenReader","rights","performanceNowPoly","performance","nowOffset","concatUint8Arrays","arrays","totalLength","WASI","fd","seekPos","buffers","getMemory","CPUTIME_START","WASI.prototype.start","_start","getImports","WASI.prototype.getImports","neededImports","Module","imports","neededImport","kind","setMemory","WASI.prototype.setMemory","WASI.prototype.getMemory","msToNs","WASI.prototype.msToNs","ms","msInt","trunc","decimal","round","WASI.prototype.now","clockId","args_get","WASI.prototype.args_get","argv","argvBuf","constants","args_sizes_get","WASI.prototype.args_sizes_get","argc","argvBufSize","clock_res_get","WASI.prototype.clock_res_get","resolution","clock_time_get","WASI.prototype.clock_time_get","precision","nextTime","setBigUint64","environ_get","WASI.prototype.environ_get","environ","environBuf","environ_sizes_get","WASI.prototype.environ_sizes_get","environCount","environBufSize","fd_advise","WASI.prototype.fd_advise","length_","advice","fd_allocate","WASI.prototype.fd_allocate","fd_close","WASI.prototype.fd_close","fd_datasync","WASI.prototype.fd_datasync","fd_fdstat_get","WASI.prototype.fd_fdstat_get","bufPtr","setUint8","fd_fdstat_set_flags","WASI.prototype.fd_fdstat_set_flags","fd_fdstat_set_rights","WASI.prototype.fd_fdstat_set_rights","fsRightsBase","fsRightsInheriting","fd_filestat_get","WASI.prototype.fd_filestat_get","filesize","uintArray","fd_filestat_set_size","WASI.prototype.fd_filestat_set_size","newSize","fd_filestat_set_times","WASI.prototype.fd_filestat_set_times","stAtim","stMtim","filestatFags","fd_pread","WASI.prototype.fd_pread","iovs","iovsLength","nread","fd_prestat_dir_name","WASI.prototype.fd_prestat_dir_name","pathPtr","pathLength","directoryName","directoryNameBuffer","fd_prestat_get","WASI.prototype.fd_prestat_get","fd_pwrite","WASI.prototype.fd_pwrite","nwritten","fd_read","WASI.prototype.fd_read","totalBuffersLength","read","thisRead","reduced","buf","getUint32","bufLength","currentRead","chunkIndex","chunkOffset","currentChunkOffset","currentChunkIndex","leadup","currentBufferChunkLength","fd_readdir","WASI.prototype.fd_readdir","cookie","bufusedPtr","fd_renumber","WASI.prototype.fd_renumber","fd_seek","WASI.prototype.fd_seek","whence","newOffsetPtr","currentLength","fd_sync","WASI.prototype.fd_sync","fd_tell","WASI.prototype.fd_tell","offsetPtr","fd_write","WASI.prototype.fd_write","written","seekPosInt","path_create_directory","WASI.prototype.path_create_directory","path_filestat_get","WASI.prototype.path_filestat_get","path_filestat_set_times","WASI.prototype.path_filestat_set_times","dirflags","fstflags","path_link","WASI.prototype.path_link","oldFd","oldFlags","oldPath","oldPathLength","newFd","newPath","newPathLength","path_open","WASI.prototype.path_open","dirfd","oflags","fsFlags","directoryPath","pathOpenBytes","pathOpenString","pathOpen","alreadyExists","entry","actualFd","fileType","path_readlink","WASI.prototype.path_readlink","bufused","path_remove_directory","WASI.prototype.path_remove_directory","path_rename","WASI.prototype.path_rename","path_symlink","WASI.prototype.path_symlink","path_unlink_file","WASI.prototype.path_unlink_file","poll_oneoff","WASI.prototype.poll_oneoff","sin","sout","nsubscriptions","nevents","proc_exit","WASI.prototype.proc_exit","proc_raise","WASI.prototype.proc_raise","sig","random_get","WASI.prototype.random_get","sched_yield","WASI.prototype.sched_yield","sock_recv","WASI.prototype.sock_recv","sock_send","WASI.prototype.sock_send","sock_shutdown","WASI.prototype.sock_shutdown","findBuffers","WASI.prototype.findBuffers","filePath","maybeFd","WASI.prototype.readdir","prefixPath","files","WASI.prototype.writeFile","fname","nextFd","maybeOldFd","WASI.prototype.appendFile","WASI.prototype.readFile","readStdOut","WASI.prototype.readStdOut","WASI.prototype.unlink","WASI.prototype.mkdir","cleanPath","CompressionMethod","DEFLATE","RESERVED","Huffman","lengths","listSize","maxCodeLength","minCodeLength","POSITIVE_INFINITY","bitLength","skip","reversed","index_","Uint32Array","rtemp","ZLIB_RAW_INFLATE_BUFFER_SIZE","RawInflate","opt_parameters","blocks","bufferSize","bitsbuflen","bitsbuf","ip","totalpos","bfinal","bufferType","BufferType","ADAPTIVE","resize","BLOCK","op","MaxBackwardLength","MaxCopyLength","decompress","RawInflate.prototype.decompress","parseBlock","concatBufferBlock","concatBufferDynamic","Order","Uint16Array","LengthCodeTable","LengthExtraTable","DistCodeTable","DistExtraTable","FixedLiteralLengthTable","il","FixedDistanceTable","RawInflate.prototype.parseBlock","hdr","readBits","parseUncompressedBlock","parseFixedHuffmanBlock","parseDynamicHuffmanBlock","RawInflate.prototype.readBits","readCodeByTable","RawInflate.prototype.readCodeByTable","inputLength","codeTable","codeWithLength","codeLength","RawInflate.prototype.parseUncompressedBlock","olength","nlen","preCopy","expandBufferBlock","expandBufferAdaptive","fixRatio","RawInflate.prototype.parseFixedHuffmanBlock","decodeHuffmanAdaptive","decodeHuffmanBlock","RawInflate.prototype.parseDynamicHuffmanBlock","hlit","hdist","hclen","codeLengths","codeLengthsTable","lengthTable","previous","litlenTable","distTable","RawInflate.prototype.decodeHuffmanBlock","litlen","dist","currentLitlenTable","codeDist","lengthCodeTable","lengthExtraTable","distCodeTable","distExtraTable","ti","RawInflate.prototype.decodeHuffmanAdaptive","RawInflate.prototype.expandBufferBlock","opt_parameter","backward","RawInflate.prototype.expandBufferAdaptive","ratio","addRatio","maxHuffCode","maxInflateSize","RawInflate.prototype.concatBufferBlock","pos","block","jl","RawInflate.prototype.concatBufferDynamic","Util","stringToByteArray","Util.stringToByteArray","charPointAt","Adler32","Adler32.update","adler","s1","s2","tlen","OptimizationParameter","Inflate","verify","cmf","flg","rawinflate","Inflate.prototype.decompress","adler32","PAGE_SIZE","PAGES_PER_MB","csoundWasiJsMessageCallback","streamBuffer","csound_","attribute","endsWithNewline","startsWithNewline","chunks","printableChunks","maybePrintable","post","assertPluginExports","__wasm_call_ctors","getBinaryHeaderData","getLEB","mul","byte","magicBytes","sectionSize","memorySize","memoryAlign","tableSize","tableAlign","neededDynlibsCount","loadStaticWasm","compile","Memory","initial","env","csoundLoadModules","options.env.csoundLoadModules","instantiate","__wasi_js_csoundSetMessageStringCallback","wasmFs","preopens","wasmCompressed","wasmZlib","magicData","wasmPlugin","accumulator_","wasmPluginBytes","pluginHeaderData","headerData","fixedMemoryBase","initialMemory","ceil","pluginsMemory","totalInitialMemory","maximum","Table","stackPointer","heapBase","memoryBase","tableBase","__dummy","withPlugins_","currentMemorySegment","__indirect_function_table","__stack_pointer","__memory_base","__table_base","_ZTH5errno","options.env._ZTH5errno","printDebugCallback","options.env.printDebugCallback","__heap_base","moduleExports","pluginMemorySize","pluginMemoryAlign","pluginTableSize","plugin","pluginOptions","pluginMemoryBase","MessagePortState","ready","MessagePortState.prototype.post","broadcastPlayState","MessagePortState.prototype.broadcastPlayState","workerState","vanillaWorkerState","ScriptProcessorNodeSingleThread","onaudioprocess","csoundApi","spn","this.messagePort.post","started","running","stopResult","watcherStdOut","watcherStdErr","csoundInputBuffer","csoundOutputBuffer","isExpectingRealtimeOutput","nchnls_i","nchnls","cnt","outputPointer","inputPointer","zerodBFS","lastResult","plugins","loadWasm","libcsoundFactory","resetCsound","renamedApiName","this.exportApi.reset","callReset","cs","libraryCsound","outputBuffer","channelData","getChannelData","bufferLength","channel","numberOfChannels","outputChannel","inputBuffer","csOut","csIn","nchnlsIn","inputChanMax","inputChannel","outChan0","outChan1","initializeModule","SingleThreadAudioWorkletMainThread","messageCallbacks","initializeMessagePort","isRequestingRealtimeOutput","proxyCallback.toString","Csound","useWorker","useSAB","useSPN","latencyHint","workletSupport","spnSupport","hasSABSupport","csoundWasmApi","Csound$$module$src$index"]
+}
diff --git a/site/code/csound.orig.js b/site/code/csound.orig.js
new file mode 100644
index 0000000..fc1706e
--- /dev/null
+++ b/site/code/csound.orig.js
@@ -0,0 +1,903 @@
+/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+var $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(".");d=d||goog.global;a[0]in d||"undefined"==typeof d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};
+goog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE="en";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;
+goog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(".")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\w+/_-]+[=]{0,2}$/;
+goog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;
+goog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");
+goog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;
+goog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};
+goog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};
+goog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error('Module with namespace "'+a+'" already exists.');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error('Module with namespace "'+
+a+'" has been loaded incorrectly.');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0});
+goog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};
+goog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath="";goog.abstractMethod=function(){throw Error("unimplemented abstract method");};
+goog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME="goog";
+goog.hasBadLetScoping=null;
+goog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if("function"===typeof a)d=a.call(void 0,d);else if("string"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error("Invalid module definition");var e=goog.moduleLoaderState_.moduleName;if("string"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&
+Object.seal&&"object"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error('Invalid module name "'+e+'"');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};
+goog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};
+goog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};
+goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};
+goog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};
+goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};
+goog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error('className passed in goog.getCssName must not start with ".". You passed: '+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split("-");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join("-")};d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};
+goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};
+goog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,"&lt;"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&apos;/g,"'").replace(/&quot;/g,'"').replace(/&amp;/g,"&"));b&&(a=a.replace(/\{\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};
+goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);
+goog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;
+goog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
+goog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};
+goog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};
+!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"").match(/Edge\/(\d+)(\.\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?"complete"!=a.readyState:"loading"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&"string"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=
+goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?");d=-1==d?c.length:d;if("base.js"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\/(SCRIPT)/ig,"\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=
+[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error("Unregonized namespace: "+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},
+goog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=
+function(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error("Bad dependency path or symbol: "+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_("goog.require could not find: "+a)},goog.DebugLoader_.prototype.loadDeps_=
+function(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error("Cannot call pause after the call to load.");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error("Double call to loaded.");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,
+moduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||""})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error("Cannot register with defer after the call to load.");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};
+try{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==
+a.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?
+this.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=
+function(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf("://");0<=b&&(a=a.substring(b+3),b=a.indexOf("/"),0<=b&&(a=a.substring(b+1)));return a},
+goog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},
+goog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error("Callback key "+a+" does not exist (was base.js loaded more than once?).");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==
+b.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\bdeps.js$/.test(this.path)){a.loaded();return}throw Error('Cannot write "'+this.path+'" after document load');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&"complete"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?' nonce="'+c+'"':"";var f='<script src="'+this.path+'"'+
+c+(goog.Dependency.defer_?" defer":"")+' id="script-'+e+'">\x3c/script>';f+="<script"+c+">";f=goog.Dependency.defer_?f+("document.getElementById('script-"+e+"').onload = function() {\n goog.Dependency.callback_('"+e+"', this);\n};\n"):f+("goog.Dependency.callback_('"+e+"', document.getElementById('script-"+e+"'));");f+="\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement("script");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=
+c);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,
+b,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(n,m){var l="",p=goog.getScriptNonce_();p&&(l=' nonce="'+p+'"');n=m?'<script type="module" crossorigin'+l+">"+m+"\x3c/script>":'<script type="module" crossorigin src="'+n+'"'+l+">\x3c/script>";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(n):n)}function c(n,m){var l=d.createElement("script");l.defer=!0;l.async=!1;l.type="module";l.setAttribute("crossorigin",
+!0);var p=goog.getScriptNonce_();p&&(l.nonce=p);m?l.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:l.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(n):n;d.head.appendChild(l)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);
+a.setModuleState(goog.ModuleType.ES6)});f(void 0,'goog.Dependency.callback_("'+g+'")');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(n){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,n,goog.moduleLoaderState_.moduleName)});f(void 0,'import * as m from "'+this.path+'"; goog.Dependency.callback_("'+h+'", m)');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,'goog.Dependency.callback_("'+
+k+'")')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=
+e.transform(e.contents_),e.contents_&&(e.contents_+="\n//# sourceURL="+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var n=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(n));if(f)var m=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),m)});a.loaded()}}
+function d(){var n=goog.global.document,m=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(m);c()}),l=goog.getScriptNonce_();l="<script"+(l?' nonce="'+l+'"':"")+">"+goog.protectScriptTag_('goog.Dependency.callback_("'+m+'");')+"\x3c/script>";n.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,a.loaded()):
+a.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&("ActiveXObject"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){"interactive"==h.readyState&&(h.onreadystatechange=
+k,c(),a.resume());"function"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,
+c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?"goog.loadModule("+goog.global.JSON.stringify(a+"\n//# sourceURL="+this.path+"\n")+");":'goog.loadModule(function(exports) {"use strict";'+a+"\n;return exports});\n//# sourceURL="+this.path+"\n"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=
+b||[];a=a.replace(/\\/g,"/");var e=goog.normalizePath_(goog.basePath+a);d&&"boolean"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?
+new goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),
+goog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy("goog#base#devonly#eval")||{createScript:goog.identity_}};function atobPolyfill$$module$dist$__csound_wasm_inline(a){a=String(a).replace(/[=]+$/,"");1===a.length%4&&console.error("'atob' failed: The string to be decoded is not correctly encoded.");for(var b=0,c,d,e=0,f="";d=a.charAt(e++);~d&&(c=b%4?64*c+d:d,b++%4)&&(f+=String.fromCharCode(255&c>>(-2*b&6))))d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(d);return f}
+function bufferFromBrowser$$module$dist$__csound_wasm_inline(a){return"undefined"!=typeof AudioWorkletGlobalScope?atobPolyfill$$module$dist$__csound_wasm_inline(a):window.atob(a)}function __toArrayBuffer$$module$dist$__csound_wasm_inline(a){a=bufferFromBrowser$$module$dist$__csound_wasm_inline(a);for(var b=new Uint8Array(a.length),c=0;c<a.length;++c)b[c]=a.charCodeAt(c);return b.buffer}
+var $jscompDefaultExport$$module$dist$__csound_wasm_inline=()=>__toArrayBuffer$$module$dist$__csound_wasm_inline("eNq8vAdAVEmzKNynz5wzwMyAw+ScmTx8G76933tv3/0va1ruZ7rippf4WBiVuwhcBjfct7sf5oSKijlhzooZM2ZUFMyYMeec89+neyLguvvSAbpOV1VXV1dXV9fpMwPICvSiALqS43J+ysvN/873J4q/8cnnvMtqQG1ImEP9Df7979Tf/0b/PQzA33ioJLVf/079ijgQjkIIRMD0OA4QHkT8mfr5b2y4Tu5+5hogPMAcnBCKK+hfuXss5hfSDWJEff6KkAzCYQkMQpMeAbkPqUKkEyKfA/gO4tZcSbr65W/Uz+gWcBROhXjCSMQkIBCl+88cgzCM+iU0IjTEn/FFrPErxhNBv5JKXPCeiEEmQCXW82csk0IYdP/rr/iek4HwaKjBBsGx/BzUg/qVIBEzGgfHTUxCI4hwxAjEyuQO2wxb7mdiI9y3AMHghbtEALNigEZFJvBnBLH5uN4BRyZjxFNN/cKpwxkR/sLZ9mfMEbTtLwiNGDgaLn9GfFhXAn/BxvoFXaiKuEk3yKqcJJYjI4bIdBA6uY24FNaFzHWYk/gB0YJBclAHWB0kFbcmdIQGSDOkS6QlqkRPOemGsIb6Ds8E6YYYhcdBxELw2JhEYQabjRgSG0zAMURL+jU0pz8TI5JFhfpjuG4RjG4BQs5HLtIBERyPIJoT9Ed6w9MHyDohFRoRkWa/oov0jC7O0r8S0ZwGv5JRhtwE+wUfwfCgyNwHh/QzEsGtTsRH+InnILaQIxEn5JYFQnDmCd5i5yWqRZqSkZOWxPkQMuTP2LF+Jl6NpZCJx3QCyRoLugdLbqLchyCJqzMIhkIB6o34PRonpofcLMQZsTNe58Q8kTUdNA0HiSyOwiftg3GHiICr4gy0P/97tpe/V0HRTxBIuJoqMzM3Pye3yJ9dnNm9d352cW5BfmZx1rd5fqoQXFZzLEmZmYHirOzvMgsLcvOL/UX03ykOLcrMJJIyv80K+Om/Aw4pzCSNQzj5D1mB3MxAflZhoGdBcWZhkf/7XP8PH8RlFfUIZPbwF4N3cSRijkDuv/t/m0+AOs0tQjr/FpM4xPR+eYnZeQVoqMW5vfyYT/muEXTPyUSsAT9g38EhQhzdc5Dlin+zQ0mELeBHc5CX1SPwTuYkjjk3z/9eqdIwI5GLRw607xo04kb379c1ig/5TGZ+Vi8/oN7BzEfMRf6sHEC/mwGp5v8O2H+DodiflwfAb0zCD0W5xf539iEuzCruGWsyxTtY4zFrQaE/HzjewSLDLEXI67/3Z5JFg/z/nRZohdl753NpDNbhnZyCwoK8vMyCfH9B9+6AfqeCRQXZmf4fc4uBnFtr4uxAQe/8nA4FWTkdC3J6oyEClsNrCP4rJOSfAx39gUBWD3/rrLy8b9EaBnyOI7mwCK3kNv5ve/cIExh++87dfGhFCzIze/qzCoMrmKJrUsemGgwGFqBLyZVaQNF2QNNOgFSVU5SBZVkDwsvlmIemKEokh+iGT0MgEhnkBsAwALgsCrfHG+/1CoVevdfnTaU8XhB9ebnmfwIsS1E8nshgkLMIwVIA/dAWQCkgCz/48EPZRwaKH2nj0n/8sffPHq8vlQh1WYRedBd1ueTxAMlofrnA/+OLej8LTdHIAJ+wNPsP7F/Y//AfEykW/CcDsuhfjEIKIBJnZ8iwFMMgo/Ihw12uT1mlksLmgn9MI/67FSFAiH5AC2L/cxC2jP/jF/sbNMgksHicAHz6KfhHm1EoNLIRayIPYX9DANFdz5cxaoaFbIIcKFBLOaBjp4OhqNiBMr9/+lgg44CJ81QWNWSRSjTN0ExYqXj0Q37xFVsh4P8D4J9wxYiHRKMf5hMyPIOIpdEyo7AKLIUuJJhm5WwTLSBkkGcIIc2iChMegDzEwDAUkFNsWhpHoiiG+gyNl0HY1siZWAYgD+LayeVyPmxjk0M5d8kgK8MLEZEpgHSikrRIFMsmsajktW2bxGrlTDsLK2lyidHFtG//+efNKMnoEgrT05EOVBKKLCII0Z2ElUMI/hkNQ8Qg8SI+P4mPLxRY/tqB4ozKqhgIRegyGETc9Q/IEujq8NcOHdq374huhJ28HYCMYTrQUimfz3bmy/l8JoEPkBR5Qpd/oRWMjGJoJJGi0QVA1/ZoXCz6JUuLu2G7ot/2iMAV4RvUC2NrT1EQCWJMGTK2WwJQ8NtDRsHZLOGLLxMSFNyPgmJFSUloahhIMZwvyJHGrAIFSkauQD0QP6ZoFikOWTZsmuDN//rFf88V7gAEL+JGLPKsrwiNwXrQ2B5MRC/iRghLiygK/eJ1wvkKh6PQjRxhJGhoHDspKQnChCUwcpGcgsE1DqEcKSOTqWUIfAW/oogTR7hZQH6bWyQ0UV+TZcoiEzNq9TffQDVUc9aXJbBQoeYwfBWfr6IUICICIN/i4qoWa08H3Rdhqf/C1UlcBQSw7SmWknOLBs2dHLVjEJ5FC+G/Mv9NDv/7/4DqzG/+BhjkrOgPTSurYBlUIqOpZVmMvLOMVQHOPJQcARAUjLpFDpfwLcLI0V028hOFQsEAUpfLGcSnkMXJEDJOAVFzrnMKiUAKUAxUiACbk+Pv3gP0zIU9sS2JScicSRL+NSEhgZ+AZlWE5oNzPxZdSCtUITPGRSQ8t3jeUBVxIe3k6EqQM5wbU9wFuIJ4jFf/MZ+zpEKlSkigaJVKZaFFctb8HbfmkgDXAcUJAjTn9Vo6AXXNygE3bpYTo1RynQIti5Byk1yep8hDVBqNT9GrV34HBl8FQVBYyIi4UQN5QpyapiGk/k1BvLSI4trLaZxXsLQS6YjI3EgkdGh6E5QUiHZ2OcQX+JoHkgAIFHPWCM58zJqjGTkI19CVhswOaewQDIUHCFgo1DEytEoSZEDEGY9iE2iWpuUajQbZF0Lk/tiQSLyG0mqT5Fz6QskjNY1WK6fQBGN/42k0SfJP5CLQuzdC0Eksmnw6AfCS0EKgUX88hqgn57qmQ0oDoi4m0TQVGgwXqiOjQc1B+JdckZFibBSdFeEf1kiF2SjMwomheRSHAJ98YvheDvlyeTzyKLQpyClutDRFy0UiluF8DAIcxeRJQiEC3F+yPJn9CyIwQhQw5UJGzmUpkM8gdoahfwAcBbkIxZALDSR4h6GZK2nw/fcsA/6SDCEaokwoEuEBE9cF8QjirhgUSZBebJKQpRhM5YSzrI0BmB11yWWOfC72QNwVx0NDtjcjo1k0zUiHBEaGbtAvw+cWGwMQE2dfhlIo8LJVUDSyf3QCgDgAt04+YSFX4+OwQSMumoL84AJi0IKQJTBMEnIL9MMiuQyOf5zWeMuVU3iJJv2YlEQzkIJ4aAzHC+XcoJDCuBnERkKsXNIXYkEkgHmQl3HRIcKFbvHFMlwJyIVonKZInAKpxkAWBWT0x3XD8g1oVmnk2egyIiZ8/WT7d24p/k/2Q6JzVOZDkYD2cxQKJCM9gzdNs6RfuAL1BBgDhL8mQ5ns7/KSKA5VNLMsOifN5grYYoLaJ7qLvpGKEbzjkkdy2rBAPHlcACMqo4mOo5FVE0w0zbF9Gm8E/Tg8Mi1Ci5AVhd0BKrE9coDRCIGMgSoVA5M5AKEAUNj6ehpZmsswudZYdLNBfBa+EzZXVg1lLBqLDdkDIi2FbHAMTHx/ygD+idQQ+CfCNIAK5r40w2fDThoXdlgCyC+5J38MlHElSo+IZ6alsRhyBR1pFH1DbPgb+TB8F+L9ef9AKlYoxW1dRiq6i+a6sFGZ+iBq8Lvzc5aoQiPvR4GYomhuTdhsaDXZKIammib5OR8hMqWQyQA7hAJJCayCpbl1bJOTjSWYGUMKLctsJF2hsHGxHckGNLYQFaUeqUBcI1cCxYUXymjkwtO77BSPsMg/gwNkuKc7GhjlFEJGKUslQIicWI6E/q89gjKQfceMtIz+g5ecC3U0K+dDtCtDVMjlMfRPh1JgGPUp+DS8EPpRpRRasELR11zcodGfiJs+KluIptkGWBvaiJDb/zMg0ZE/nEI2kSHZkP0LMiit4EaIeklKAtwxwO/Uc0TMjEVaJbdoHTlDUXjSuNjwKV/IeSAzEqH4xI+jG9HRrcsoMCo8A+07dOgQ4h3NYccESSzyrOxyaiz15ThkCj7KvmRq9NOCdeNtHCjllBlOxX/KBQcjtMXLP7UJ5TYE45GXfkqu8dR46lOhHIWRlsZv/H1mIkttAhW2xcTwaKj3eEprbBjWyuKkEKfDFLpnIyGpeVcslib4S3LQqDSZmA7tvB2azwv1R85d2GgQTJYZbkMkAZ+7APqDEIjQjQji7Th0yenoScWP4ZAPsyhIAUjBnnyIhoawXPbCbQiKBEhTHAJAlqUgJwHK07jEH0ki+nEakrTNSMbcLCYw7xiLHsTwTgrako2o9w7LsPLYugF8akx+x8qno/tmW1gO6IqYlJlMMWAKXiBQBVvaAlwuThbDYpsYUUyAnBWFcjgiFNxgKKV4R2CDbRSoNcXgkxYoD7bi/+ELYpXbhMdCofkWAbRqWPTDzbgIpdi4znJhLIfPAAiT6R+mIu2MDAMhfxq6+8unEF1cAtnC4oLg/9BVQo2kQiUxjsXyOwIzYZ5O/a/pIY9aXFToltyg3/9TF/seakIkT2oDKigjAMxvD5f+X964KO7ULrwxqzjfnkGhRQwU1EwKDKVKqGCiOgvbRMEVs6n/tYG9twnL1agwEjIsZPCREqtmmZZapgSv5mJpFq2Y8uQ6+HcqrXLadiBA8NrYf+TAxnEY9CdgKeTK+VV/5sBmXNmCy4Yxn3CgZJ2QA5WLd2MZ1dtx9d6inaS6iqArF5EuKrZicn0pBtVBsB6DRiKwrJIgqzAoI6BiB+mFxrjDRMghDGbyuHIWLmfjcg4u5+JyHi7n43IBLkvm4m4GE1BGQAUBYxiuLMflWFyOw+WjJZh8i4ClGLcMlyVLMereLi+xwn/AAq57catrGEy5isH8JZh27wqu1QdpBFQQMJuAV4SlhLTrT8BgAkoJKCOgnIAJwR4ImE1ABQFVBGwk4BoBtwi4R8AjAp4RcISAGgJ2EFBNwCUCGgk4TUADAfUE1BLwioCSa2QMBAwmoJSAMgLKCZhAwBECGgi4R0BlUHlSu0XAaQIaCbgUlEIsv5jMw2KCnB+UQsAqAqoI2EhANQE7CKghoDaoPJH5LDg5BJQQZCkBZQQMJqBhEPaJY9hBjjMYhcsTuDyJy2dXiO0JaCTOUbIUg8pgbSUGc1nsyLicj8sFuFyIy0W4XIzLE7g8Sfj52IBryCLGlapRuFI2HoNHZH1PmYBB5SQM6gmoJsiSiRg0ElC6pAbgsZCGFQSUENayqx/j/hZvI+u8P4H1o/6MqaMxqDxFsJUNQa4yjG4koJLwPnuBJS3jYxwul+NyBS5X4nIVLhfgciEuF+FyMS6X4LKiFMur70M6K9tYTWAVgTWYaUocV65Rc+VaXFbhsmEyGhYIhkZAgh0IYkk0BGRFAzLdIGgeQEIBIC4I8HJH4BEBzwh4RUDJVQz6EzCYgFICyggoJ2ACAVMIqCBgNgHzCagkoIqAjQRUE7CDgBoCagmoJ+AIAQ0EnCagkYBLBFwj4BYB9wh4RMAzAl4RUHKNjIiAwQSUElBGQDkBEwiYQkAFAbMJmE/AYgIqCVhFQBUBGwmoJmAHATUE1BJQT8ARAhoIOE1AIwGXCLhGwC0C7hHwiIBnBLwioOQ6GR8BgwkoJaCMgHICKsn0TwjWiKc0YkBWOSC7CeoIA4TEgGyUAG+gRM5uDMlGCsj+Csg+isAODpA9GNFKMajHgGyngGynCFQRliBYT5CHSYNDHCAbIxoVAWUEVGBAQhEgGQIgGQIyAwYkxgASXQCJLmhUhIaiC+4PAxJPkGYYkJCDeieggjRoIKCENODWLNEeQxJlQDDKgGCUASTKABJlAIkyHGzAkEQZ1CsBlZiXRBlAYgQgMYIb2BO0hvm7vpvAY/xFRfkF9A4qOTOT+/hFXu632ZnBjw3RO6nEKGz2Dzn0LorJ7pmTWwQWpeqiSN1z87kPveThD35k5aGPEoHFqWygOAdJp3dTDLrLzadrKA5V0LuY3kOJMzOzf8zKzPf/kNkzKz8nz19E76XE7TqktUaEouwPPiGfp6L3UWaMRF386EcfPSroVdi7GH3Myh/AHxDJyeU+igL6tbK/nyvzh9wcP+jfSkJYv2zbqU3nrpkZ3bqmd2pP11JKgkb1tmkdMzO+6dQ6RNtPiZvR6AOUrHmDDm070XXURzGEjm27pbVJ65YWrKd3atc5E5WZn3Xo3PqvmRnp/6Utblb/e5qlfd202cHf2Vu7rmkd20aaHfqdvTVpdpj603ubZaR17NKhbWbXtG6kzRHK+942rT9P69SpbYcM3OAo9fF7G3yW3i0js0vbrqQ30tEx6sP3tuvWuVtah2Aj0ttxytFyq7QuXTqkt07rlt65U2Z6G8zbQH3wjh7atv1rl87pnbqF9On0RcfPkHZcoxPvbxSkdG7XLqNtN9zo5PsbkamJHsopyv2+Rl0Qve3nnTu0aduVPk39uWX2Lzt3/Sw9I7N1544d26I26K/rN1wH7bt9jvs58zsbIiOE7omCZ6nUlhu2/qJtxudt0djTO7Vp+3W0Ic79ziZRBm8ktntvk65tM9p2/bItmdrz7+2nW9c0tPCiVLvw+5pEq3aR8v6uJukZXUkwufQ7G3T7pgtZBJfJ3Ly3QZeubTPbduzyeVpGOpmbK8Rq720YY7Wr1Me/1wSc0dNbBz31GvUPv90OYdqkoyrCdejcPtqE1ynXbzdFXGltUG+Y+wbleA83569kMDcp93t4Y8Z+671Tg7Qm4yeDvk2ltNygS3rrbl+g+QhP4h3qw9/m7JjekbBHL8u7ZDLe3apN24zWXdO74IgW1e4eZf/tdl+ltwmy3qccv836edv09p+T5fGAsr9PnS5BsQ/fJ7Z15w6duxIrPqK8v82LK1HDe0yZWm7AOX5aBlH2CaVvkSkyJ08pY4sc0V09oxSYh8RmZIw0FGdJuvCc0ryDhFu+oAzNybH+9pJyNGch6QBKUji10I7b/hvM+4oyvYs3spm/pszNmZpt328oZ3Ou0IadmZaRkd6+ExfhMfNbKqU5c4ubdQlsacD/pW3Xzpld0siA+0B1Sz0HI2PfWGq7zp27RVH7QSuhcptX5y7fIA9qw1kJzdrnndtEZrU//OQ3+JAqXbulc+sFzUFXFL0yO3dFOuCWA+B//EMtESIN0YKtB8L/9Edaf9ik+SD48R9pjmbzK9xuMPzPf6gdChhpXaJ0p4fAf/xDejeXMBSG4vcXn5Gp69Cldea/dOiCRLVt147bmFqnZwRDFD0MGt/BnfF5ejvidKVQE8sT60bDoSKWHJn9EdDShPQVCghId+yxiNQes42EvhYkIH07ZXRLQ57/2TdoraR1QAsBNe2YlvFXuqzlFl+27foZSig7ttBiFHS31KJd+teIozn7aOhszk6M05x5DDQR5rzC7PCzUVbv4oLsgiL00JbFffcFjGn1p+ZMRf5Abk7vrLzM7kUFvTL/La8QUfzdu+dm5/rziwNgXKs//9E25CFsfKugE3Ruj3wHZdrIh9BYu2Z0Cy3zLmjbbNsNj4ouh4pm3Ai2T29Nj4WmZiS87xIxZMsYB0PBvbjIn9WrjT+7AD2YZhRnFfsRJje/Bz0eWlvgaFtUVIDZegeCfBOgJZqvbT7mS8/PLY5hmwiV3xcUfZsbyPy2oOC7zBws7vtAZlZODjiTqGiBhklnE+PQ92AK0JNqF3oSTAha0o9qk1GtV1ZhIRKOalMgU1jww8cf0VMhk5Xzr+hmGmRzEerDP9HTIUNuKiCLnnzRQzQ9AyblF2UWdM8MdP8281vuaz70TCgIdP8MPXen5+f4f6RnQdG3ucVFyB7Bp+7ZkFf80Yd59BwOfpRHz4WwZzE9D8bloa8n+Yu/zaPnQz5m/fAjekHw9s+f0AthQiC7eyA381skm14E4wN5/vwPOaH0YlL5AFeWwKS8rF6crxQWFBUjI3QHM+NbFQa6c7dZvfOKyRdkXseJOFz3D5HpioqyfgJl8ckhRHZebmEQOyo+yJYbRIwOseVGs40hbDlhtnLClhPLNjZe2OMfPvwg008mF1wTkHqOn9SvC5JQ/aPMDz4Js1yKoEJcl4OoDz8Oc12JoEJcV4Ooj/8U5roRQYW4bgr4PQK9Mtt0+IxeCvHtv6DbZTCeu+3UtV1aa7qS4Lnb5bAVetL7AInIKcjMy/rJX/QBGJqsCuJyka8GsR+SyQalyU0bfAiGJ2uaNfgos0dWbj7nXWBcsyYfgYnJ8iAu8FM+Ogb6oLjgAzTBWXlgQKh35MPf+YPDIp0HQL9kQZBYiMIDvQKy3LfuiorBV9LQ93yys/Jy/z24VMEAnah1RuaXaV1JxEujV0IxYWzvL+6KuuuGvsIGrkgTCTIDrRkk4Tvw2NkqgvmC4J4445E/E33AQjrI0LV3/hfF6Fyr+Cdwwhv1ZaMueb175OYHwCBZEMmt+9A3kCbEBTvEQaNjoAcolyYFO/QXdy7EMXYJHUF1ySrK6hUAS0Oo9mHUMjqqYe9iFFRBJS0LcxFUu4KiXlnFYDmdGOZNz+dYV9DJYUzH9DbpBLuSlsdg2+Xm+QllFa1oRgn2upqWxJCC6DVRyqT1zsktaOP/vkNuoBg8kEqDBMIfwj+UJuEDwoJCPPHozA9slIsIa/B7WmCVNKh2a+Qyxf5uPRHIAeeckrDE1uicMN+f16W4CNxipE3ReD4fMmhm0HlioCf2LvJNxnqZNBaZjXsAdbLkWBfhphM8czYRwY34iEzZtL82WcVZ+LuFz5igGDTUEDEAnjNNOv0+K683cpMGGZovtCHmBzJRMOxR3BPUyoL2b+PP8xf7gxKw3V4y2rD9WxfkFxcV5AXJn+dy2++rEL19y/TXTMxSyaBXwRjEX+nVUBhSp3uR3w/2y7Sxavfi0Hhr55QDp2Sm6FlCnXbP7dG7CGcQX2YV5eJ4spk1EqZ/6e0v+qllni2sPjK0FjmqQ1LQqgi8o6dthIfYvkWWANjOymPs270HomHz7mRN0ZSWu9jFNplI8i1IcEyWHIMn9jspUxORqBscCFojh+9WEAxdNaw6xnq5Rdm90Yb6We/u3VGU38MGnawr8vwmtH0hWhe0LTah1bIqQmuX1zvQswlxf4j4VVFusx4PsJqQAQLIeX5qQq5jhUGFstA67QZqUloF1UfugKJE60AOGGwIhT3k4NxgwRAXPzuAEkt/JjjGl5JbztzIRzP82TgMXuZrIvi0wkJ/fg6xUNvvUYoILvETI+QuaHcB16MFtUOGxowB8ITfKoInRgUn+GKCI3Ui8hQ/KYgsKPyJoE6H+Nr4UXAK8p3hx6NZDQSys/K7g6G6oB5IdUI+G9KsS+8g5hwRjDHBWW7ky5qOjvCe5yfHmOOLfLTLgCtEjzC2k//HYnCVL4ogkWhwLdom3CDADb40FhO0yc1oPOkee/utsFpkrWQj4+RzBrsdLToDpWPgDl8bwbT9ESWG2WhzQS7Suxfu4i4RFUPHu+49viRKlL8wi0sp24H7hD8W3e2rduBhyHrhOQWPorXh0OAxXx7ZbnNxKtAac4CnIV68Z6GRghdEIMG0xl9Tf0nsQVBcoOxdVMR19CoanxHBvw6JIHbqjVBv+ME4i785jGRgY3BFVn42CjF94hSx9Ej06ReniyJx42nStn+csglDpPGAuOQoWg/yoAEGxgm+K/QXcakywoJKqSSWqXWePysfDIoTEa78AsK3RNoqii8Dp1iD4yIb/GdouXyH/9MBGBIXtHhXHOuiKEPxcEiDiEdEMQyLM0Y3bZGnNCSe07QoQgiA4XGaFvQJf1V7BFE3PAR/YefvUZwa2Qydnl9cAMrikqLQeFmNiuHktszc/N5+MJpwhgUUFIIxcdLIt8kjyR8oJxpG8J1xTtMh99uirCL07ECahSNqKDscF5cYk+5kgGOhaSNLFItBjBVSMUFz7hySOjnkB9ijQ9gpITMihwviMn7q9W1BHpjapLcvwdhwOvxToNjfK6MITJC2arqqwESpIMiV5/cXgkfOSCZJ9ONe/E6SCqM3MTCZNOJmPICyrSlScTS5IzoR+BFcdSbg3C8PvY79gF4DY7bB9nkF32blhTfc1SZVVPbQhLjGJAtrjUNOUQbyr+xiMFMqiZaJGnQpQJY4o5AHrZyDthi0jWUV5XT7qZBLxBSSXrk5uZncs3deLtIrp3evXj+BWdKkNtxNR0RLz8cxZbZUFEZxWzOYI20VRqCUGDPNlSaGcXirBfOkohhXAPOlyTEIYpqbziAbXra9C8E4U3BiuDjiLwpwG+YCMjqScXdJD6EXSsVh9OcFgWIuJwWLQsiMKOTiUN9dUEhATw5/DfQqDICVoScULvsl6lxzBlt/kZ8XRt5wSmJaB/OD1VJRDBqsCfXCbWPo8R5B9Li0VppAsHhhVUmDCygcivE8ZmRxGWYArJMKwmTkpeujqn8tAhuwG5MqGcJGMgTSZXbPfJR6b5JKm6DIg87mqMZ/yvmsXQbYIlWGMZiHDCyDWwvVUlX0E1cscSseOSFyTw9gW2iCMgiCDAdsD2pHIh3m3EE4iUdGOHcS5YISC5C6u6TSWEyQczcREFEMmxrUSJNjxkKwe6SGGGdI50Rw4difg5/c0juDvVL9u1i4ZzjEsS9KdAa3M+K9vjakX3oAI7ugKMalP/ulsrC8GMIBqSaW0Ll79wBOCgvycwKgTioOxZEfchETxwHqI97SUpuD0sizK8kJwnvFoaiRtyFnSk3/JcjhyMhDNJLChTmOSJVNOcK0o1JZU1oH//f+PHAqRGjfhHA6NMd/9f/UpQhRwBmpLvbpPfj4Fu7kbERFMtnNOM5JEwtRilyAglAwhF2QCouKOVywfkkqKkL2ijBclSYWFXOoopwg5hpiKcb/1SeIuC6VZnH+0TQ83pCqIgcYwW7DqtyMmo2uWIMw6RYxJCERZcK020QmoQX1ChPvRDckKoZpd6XGIC1yDpGbTfK2EM+9KDfg3LkFlvtSS5gFJbP+ovysvEj4D7M9lppaYCNbQpjpidT6DlmtY1R/+g4+NMcxnT6TmlviI1tMmOu51PYuabHdvpA6WmQkB92xvv9SKo34ZqB9UVZhT7wFv5KqIxZFx3mYEm71Oorapijrh1jqmyjqX3Pz8mKpb4NUol1ucSy1RJbcPGECfWT84AEG2Bs5WsnCLGCfLHLo9U2uPy8yT/2iKF27YechqRroL4s98wqiB8gi+0wQNVAWCdk4cQRDQ5iMEGZY6KiwG2e7DuTEpzSqIcaDPWqCIWwIDYbL9KFo2CM3gGYKxYxvC7KiVsYomTY6025GHy2LLKvQ81GYOEbWKrILd/kCB/Sxskis5Z74C3pl+P057dBLHEweJ5OGyWgTRJG44zftOnQD40k/pBle3EU5XwT8RTjvmCBTRIg4YoRJE0m7cKJIImUwtVgiU8fkSrHUpTJJ0wjbOh+dhcpkBN2loLBdblEgRAMrCAHzxxBWylQtEtKKi4vAKpkgknR9DNbIhOEDXq63tZxQ4m6xZ2QHZNKWsgowVy9rMaMA8/TCMKFt/vfghsr4zgy4U0Hrnn40gWtNsUc3sVygKpREoikMHd/sSYk6zvnoA7A7Jcjzz+ghK3jeet4pb34Ki49WLzgVMR1Gka44w89KucVR+IshYZ0KinO7R7e47NS11KJTAedpXPJzySlrkpl2KuB4wXVnTJ7/GXplk4tMeMsZ+9wVwt92iiMdhZB3nMqmKSjRIT0HNDqNsesuA6Ww5GgivHjmmSSRU0fypiAXpa6nvJH1Q7A/IW2yi3LJ2f9Zb+T1AjpA64UmATx0CpAPIY2L0ZvAIjBIFx+qopM1XQJXwf+xrDsYohNHH6H7f0RHLmCTXNJ8tj4EZ52yZqfgmd/5fwKHZLKmZ9uEcLTpYSZCBsBxmSQWix630KI5IdPEomPd/7QsCX2qpdvnbbnPmbTJTOvanl4LpdF6hr20USEO58Jh5AVFzBl1a7oKxiC60uugAsnhPmQcedLriP8jI7gUkogPUggJnFWog0hkwVA/X+UW98Qp8nmFEuUcWXno5LOZuIuKxKgz6M5F2WCzqVX0mXE31A2ok4ujFEQj7pr2Db0eirp07vAN+hwaxmbQG6C4M/7oVVqHCHIjbMW1Q0aK4DbBRNyy8xfdgpjNUBziiiC3wMjhP3qkxQNC2nO3eFwnFYoYOnphhMiYdEoha2Z3jgWcjrV9Ol0da/su9NZYxLf0NtgKuReSkpGLHIB0fU4hzg2dKoRn4bIiEc8ZSTOQgcEVhYhznQjiqkKBWVpj5cjbsODz/TVFK443mgKuK5Iwe7u8gqziNPzu9oZCzLFFMJzYm4pWAbJhoVQnKO9WuCsOSbLCIOm2Qk66aka5E7JbRs+C3nk5bbKQl+QjyeCuIokQ8LEadzQE7ikEUSgw0CBv/gCOGe8rHOSD9Jn/Gsh8z/PIQ0VSITrj5xQLMoBHikgmw+FDvAHwWNEqetXhzp4HFSWHNRj1QqHIDXT1/1tvFDlRX12xFPLE/FIhQnNLMHhiXymSEYKkljipwNjXCs07XkPhDt4oFO8gg9EudZhEhhrd8K1C3jIVjHcl4LgYTLuUkXMqsg9yu+hNVVJ0vsih7qiSYxOvtKIeAVCrDp2EBcihRdtO4JBaHOYMIw+rEwp7FuQT76O3w3iu1h69Eg/QO2Dk0KVDVn6P3tzUDNTx0acqemUFvqN3QiF2t+BLb3oXjOc+IYFerncvoHdDmB2ga1CZRe+BbE+UFRRn03shg+/ofZBFb0yzCwJ0LeQXd0c3H31C7w/efvAhfQDGvJbBYWqwSxyNIwMdYECnFlwOhp6kO3Ja1UFRDBcYZJA2fcPTjTs3HWIIGg77Rcj13jrjs4uCQ6LroYC89ifVg1AS3Pv9P5BUHb+EmGYOZRG5gUL0ZBJFqjAH+yDpNXFa0D9FEo0NnaUNSGkVjSbn4ilh384KHh+UuCSxrytx/Ad3nYmhYZLMANxztopgMnJ7oOcicL9JThFq/cApjrw37lb0E85onjqTIxk8fsuEVgjo4xI3wabng76u6GQfOQzo5yK9E63Je5D+LmVTXNq3gYK83sgoA1zBzrhnqNCrBDAwds7J3jTIpWg+c2loprLBUJe0ib0IfhhpEjsUQip1yZuNh1CGu2RN1SWEES7du8ZBGEYSmTFqE0oZkRnt2IQwyqV4x3txMMbV5LMJIUJ5WMEmhLGh/jOaRplxLkmY0uX7QAg9IYRuH4Oe6Ip5jx/MALFrn/QmRdkAv2I7502OQgXfoYFGbzx6pEbDz85FG4MvnptfUnngi+cep0nloS8hMzMHPURlosBGH4JxlCZ+658pYIGCy+qv/+scN3qSmeLuXeH+/ocf17A//fv//PmXEqoP1ZfqTw2kBlNDqYXUImoxtYRaSi2jKqnl1GvYj55ID+aN5JXxRvHG8MbyxvHG8ybwJvEm86bwpvKm8abzKngzeDN5s3izeXN4c3nzePN5C3iLeIt5S3hLect4lbzlvBW8lbxVvNW8Nby1vCreOt563gbeRt4m3mbeFl41bytvO28HbydvF283r4a3h7eXt49Xy9vPO8Cr49XzDvIO8Q7zjvCO8o7xjvMaeCd4J3mneKd5Z3hneed4jbzzvAu8i7xLvMu8K7yrvGu867wbvJu8W7zbvDu8u7x7vPu8B7yHvEe8x7wnvKe8Z7znvJe8V7zXvDe8t7wSpg/Tl+nH9GcGMAOZQcxgZggzlKmmhzGlzHBmBDOSKWN20DvpXfRuuobeQ++l99G19H76AF1H19MH6UP0YfoIfZQ+Rh+nG+h+vBP0SfoUfZY+TZ+hz9Pn6Eb6An2RvkRfpq/R1+kr9FX6Fn2DvknfpW/Td+iH9D36Af2EfkQ/pp/Sz+jn9Av6Nf2SfkW/od/SJbw+vL68/rwBvIG8QbwhvKG8Ut5w3ihmNLOV3k6PYcqZscxEpoKZxSxiFjNLmWXMSmYVU8ksZ9YwG5lNzGZmC1PNbGW2MduZHcxOZhezm6lh9jB7mX1MLbOfOcDUMfXMQeYQc5hZx6xnjjMNzFPmBfOG6c8OYAeyQ9ih7DB2BFvGjmXHsxPZyWwVu57dyG5id7AH2UPs4tT5/Cr+Ov56/gb+Rv4e/j7+AX4dv55/kH+If5h/hF8pXSLdqJvOrGD+21r+Nlt/9UPjCPs8yyPjDscCapFunW6P/ph5BK+/5bH1iXeqa4Wu1HrBfMh+ynmUf946R71Gt1N30njee9u811HvvJPybzWW+9pXvgWpb/SNjonKrfo72vuaDWyp+gQzzz7cesRWZi9VLbW/0IxWb4rbHLclrjpua9y2uO1xO+J2xu2K2x1XE7cnbm/cvrjauLq4+rj9cQfijsc1xJ2IOxl3Ku503Jm4s3Hn4hrjzsddiLsYdynuctyVuOtxN+Kuxl2L2xdfG78//kD84fiG+BvxN+Nvxd+OvxM/N2Fm/J2EBwkPEx4lPE54kvA04VnC84SXCa8SXie8SXibUCLoI+gr6CfoLxggGCgYJBgsGCIYKhgmKBUMF4wQjBSUCUYJRgvGCMoFYwXjBOMFEwQTBZMEkwVTBFMF0wTTBRWCGYKZglmC2YI5grmCeYL5ggWChYJFgsWCJYKlgmWCSsFywQrBSsEqwWrBGsFaQZVgnWC9YJNgs2CDYKPghOCk4LigQbBfcECwT1Ar2CnYJdgu2CHYI9gr2C2oERwVHBMcFhwRbBVsE2wRVAsOCg4J6gT1gtOCM4KzgnOCRsF5wQXBRcFlwVXBdcFNwSXBFcE1wQ3BM8FzwQvBS8ErwRvBW0GJsI+wr3CAcKBwsHCocJiwVDhcOEI4UlgmHCUcLRwjnCycIlwnXC/cINwo3CTcLNwirBZuFW4TbhfuEO4U7hLWCPcJa4X7hQeEdcJ64UHhIeFh4RHhZeEV4TXhdeFj4RPhU+Ez4XPhC+FL4Svha+Eb4VthiaiPqK+ov2iAaJBosGioaJioVDRcNEI0UlQmGiUaLRojKheNFY0TjRdNEE0UTRJNFk0RTRNNF80U1YnqRQdFh0SHRUdER0XHRMdFDaKTovL4sfGj48fEXxBdFF0SXRFdFl0VXRONSFyYeCHxUuLFxMuJVxKvJj5IvJd4P/FR4sPEx4lPEp8mnkk8m/gq8XXis8TniW8SXyT2TSpJ6pfUP2lA0sCkQUmDk4YkDU0alrQ4aUnS0qRlSZVJy5NWJK1MWpW0OmlN0tqkqqRNSRuTNiStS9qSdDlpbquNrca0GtdqfKv+rfq1GigeJB4sHiIeKp4pniWeLZ4jniueJ54vXiBeJF4sXiJeKl4mrhQvF68QrxSvEq8WrxGvFVeJ14nXi7eJt4t3iHeKd4l3izeKN4k3i7eIq8VbxXvEe8X7xLXi/eID4pPi0+Iz4rPiRvE58XnxBfEV8VXxNfF18Q3xTfEt8W3xHfFd8SPxY/ET8VPxM/Fz8QvxS/Er8Wvx0OThyROTBySPSy5N7pc8O3lQ8sDkXcm7k2uS9ySvT96QvDF5U/Lm5C3J1clbk7clb0/ekbwzeW/yvuTa5P3JB5LrkuuTDyYfSj6cfCT5aPKx5OPJDcknkkskfSR9Jf0lAyQDJYMkgyVDJGXxo+KHS0ZKRklGS8ZIyiVjJeMk4yUTJZMkkyVTJFMl0yTTJRWSGZKZklmS+ZIFkoWSRZIlksWSpZJVktWSNZK1kirJOsl6yQbJRkm1ZKtku2SHZJdkt2SPZK9kn6RWsl9yQFInqZcclBySHJYckRyVHJMclzRITkhOSk5LzkgaJeclFyWXJFckVyXXJTckTyXPJM8lLyQvJa8kr+OmSWdJZ0vnSOdK50mP8S9Ir0ovSa9Jr0tvSJfJKmXrpRukG6WbpJulW6SrZeuk1dKt0rn6efphsqGy8bJ1shuqVdJj0rHS09JT0qPSWbLZsjmyubJ5svmyBbKFskWyxbL1sg2yjbJNss2y49RA92L9NNl0WYVshmymbF/KctMq0zim1DDCUGaYJh9p2Kreqd6l3q3er65T71GXyobLRsjWSleb1pjWmqpMm9lqdhu7hd3O7mJr2Lnqeer56kr1GvVadZV6vmmRabu1xlpr3W89YD1orbNutU4wzJDe0N3SHZc2SE9Ky6UnpONke1JqUnanbJGdc553XnBecV50XnZecl51Xndec95w3nTect523nE2Oh85Z0qvSMfK9rD72APsfraOfap6rlqgX6hfqp+vn2SYxExhXqpeqV6rXqiW68tlK/TlhhJ1H3VfdT91pX6R/qb0lvS29I70rvSedIJsoqxa9lj6RPpU+kz6XPpC+lJ6X7pV9tz30vfC99j3Svpa+kb6Vloi6ycbJRstm2eaJJss2ybrI6uQTpVtly2TzjFNMe2QNXhPeE95z3jPenfKdskeOifHTYmbGjdAN0g3WDdEN1Q3QXpQWietl67RV6vXqzeot6nXyCYwi6TXHbtlG+Wb5LeY58xaWb26SnZaf0Z/Vn9O36g/r7+kP+uske2R7VPsVRxQ7FfUKuoUOxT1iu2KI4rdimOKQ4qdisOKXYqDiqOKGsVxxQPFE8VTxTNFqXK4cpZyknKycopyqrJCOU05XTlDOUc5VzlPOV+5WLleuVk5UDVcNUJVphqtGqMqV41VjVONV01QTVRNUk1WTVFNVU1TTVdVqGaoZqpmqWar5qrmqearFqgWqhapFquWqJaqlqkqVStUK1WrVKtVa1RrVVWqdar1qo2qTarNqmrVVtU21XbVDtVO1S7VblWNao9qr2qfqla1X3VAVaeqVx1UHVIdVh1VHVMdVzWoTqhOqk6pzqjOqs6pzqsuqC6qLqkuq66orqquqwarhqgGqYap7umu6B7qHuke67YYqg23DLcNdw33DHcMDw2PDPcNDwyPDU8MzwxPDc8NmwybDZNNU02HU46kHEs5mnI8ZYJuou6G47ajgTpDnaJOU7vdO9273Gep89QF6iJ1ibpMXaGuUteo61Q/2B/eoG5St6jb1F3qHnWfekA9pB5Rj6kn1FPqGfWcekG9pF5Rr6k31CP4ED6Aj+FT+AS+pfrAEtgXDoCD4BA4DA6HI2EZHAVHwzGwHI6F4+B4OAG+gM/gRDgJToYz4HRYAafAqXAaHAgHw6GwFI6AM+EsOBvOgXPhPDgfvoTP4QK4EC6Cy+FiuAQuhctgJVwFV8K1cA1cAVfDzbAKboIb4Dq4Hp6gtsItcAeshtvhNrgT7oK74VbDdsMOQ41hn2GXYa9hv2G3Yadhj6HWcMBQZ6g3nDWcMzQaDhoOGQ4bjhiOGo4ZThlOG84YZrvmuOa65rnmuxa46l2HXUdcB12HXMdcR10LXYtdS1yLXMtdK1wrXatc610bXKtda11VrjWuja7Nri2uatc211bXdtcO1y7XTtduV41rj6vWdcC117XPtd9V5zruOuU66WpwnXCdoxqp9d4N3o3eTd7N3i3eau9W7zbvdu9p1xnXWdc5V6PrguuS66LrsuuK66rrvOu665rrhuum65brjuu2667rnuu+64HroeuR67HrqeuJ64XrpeuNq4+7r/utq5+7v3uAe7B7iHuou9Q9wj3cPdI9yl3mHu0ud49xj3WPd49zT3BPck93z3DPcs92z3cvcC90L3Yvc1e6l7pXule5V7vXuNe6q9zV7q3ube517o3u9e5N7g3uze4t7pvuW+7lyhXKSuUG5UZllXKTsgGehCfgKXgL3oZ34F14BV6F1+E1eAPehPfhMF2pbrhuhG6UbrSuXDdWN0Y3Tjdet0dZq9yvPKDcq9ynrFPWKw8pryrvKq8r7ytvKh8obysfKq8pbyhvKe8oHytfKZ8o3yifKd8qXyhLVI+UT5XPlS+VfVT9VH1Vj3yHlUeUo0xjTIfZI+xp9iR7jj3DXmEvs9fZq+xD9jb7hH3E9uP34d9ib7AD+YP4Jfw37Gv2JXuUPcY2sMfZ3coa5U7lLuV25TLlSuUS5VLlQuUK40rjKuNq4xrjWmOVcZ1xvXGDcYux2rjRuNm4ybjYuMS41LjMWGlcbtxu3GrcZtxh3GncZdwI98MD8DishUfhMfjM/tz+wv7S3sfRz/HE/sr+2v7GXuLo69jnrfXu9+7wHvDWeeu9B72HvYe8R7xHvce8x707vbu8u7013j3evd553vnekd4y7yjvaO8Yb7l3nHesd7x3hnemd4J3oneyd6p3jneud4q3wjvdO8s72zvRPdk91T3NPdM91z3Pvci93b3D/VL3SncanoFnYSM8Dy/Ai/ASvAzvwRq4B+6De+E2w1JXpWuda5PrecqLlNcpr1KepbxJeZvSzz7IPsA+0D7YPsS+Tr9Rv16/Sb9FX61v1JXY+9j72uvMB82HzIfNR8xHzdN9M3xjreOsb639bP1tA23jrROsE62TrFOt06yTrdOtFdYZ1pnWWdbZ1jnWOlgPD8JD8DA8Ao8bThpOGM4bLhguGi4ZLhuuGJYZKg0rDCsNqwyrDWsMaw1VhnWG9YYNho2GRexcdiG7mF3ALmHnsfPZlewydhW7ml3OrmCXspXsHd1z3V3dU90T3TPdZN0U3TTddN1IXZmuzLTHvddd497n3u+udde5D7jr3YfcB92H3Q3uI+4T7qPuk+4L7ovuY+5T7tPuM+6z7uvuG+5RvtG+Mb5xvim+sb5JvnLfBN9k30TfeN85d6P7vHuqb5rvkvuy+4r7qvuy45rjouOS447jruOe46HjseOJ46njmeOF47njpeOV47XjjeOto8TZx9nX2c/Z3znAedNxy1Ghm6GbqZulm62bo5urm6d7ywxn+7D92JHsKHY0O4gdzI5hy9lx7BR2KjuBncROZyvYGexMdhY7m73L3GceM0+Ym8w95gHziJnDvta9ghfZRvYCe4l9zj5ln7Ev2PvsXfYe+4A9oq7kL+ev4K/ir+av5K/hv4FvYQndh75quGm4rr+hv6m/pX+of6S/rb+rv69/oL+nf6x/on+qf6Z/rn+hf6V/rR+gHqgerh6qHqOerB6nHq+uUE9XT1FPVa9TH1UfUx9XN6hPqE+qT6lPq8+oz6rPqRvV59UX1JfUl9VX1FfV19TX1TfUN9W31HfUd9X31PfVD9QP1Y/Uj9VP1E/Vz9TP1S/UL9Wv1K/Vb9Rv1aWa/poBmsGaIZoRmlGa0ZoxmnLNWM04zQrNSs0qzWrNDs1FzW7Nes1GzQbNFs0mTbVmq2abZqdml6ZGs0ezT1Or2a85oKnT1GsOaQ5rjmqOaRo0JzQnNac0pzVnNec0jZoLmuuae5pLmmuah5pHmmea55qXmlea15o3minaqdoSbV9tP21/7QDtIO1g7VDtMG2pdrh2hLZMO0o7RluuHasdpx2vnaCdqJ2sva2dpp2urdDO0M7UztLO1s7RztXO0y7QLtQu0i7WLtEu1S7TVmqXa1doV2pXaVdr12jXaqu067UbtBu1m7SbtVu01dqt2m3a7dod2p3aXdrd2hrtHu0+ba12v/aAtk5brz2oPaQ9rD2iPao9pj2ubdCe0J7UntKe1p7RntWe0zZqz2svaC9qL2kva69or2qvaa9rb2hvau9q72kfaB9qH2ufaJ9qn2mfa19oX2oX6BbqFuuW6JbqVuoqdct1a3VVuvW6DbpNus26Lbpq3VbdNt123Q7dLt1uXY1uj26vbp+uVrdfV687qDusO6K7r3ugG6Mv14/XT9BP1E/ST9ZP0U/Vz9LP1s/Rr9Jv02/X79Tv0u/W1+j36mv1+/UH9HX6g/rD+iP6o/pj+uP6Bv0J/Un9Kf1L/Vt9iaGvoZ9himGqYZphuqHCMMMw0zDLMNvw0vDK8NrwxvDWUGLsY+xr7GfsbxxgHGgcZBxsHGIcahxmLDUON44wjjSWGUcbxxjLjWON44zjjROME42TjJONU4xTjdOM040VxhnGmcZZxtnGOca5xnnG+cYFxoXGRcZTxtPGM8azxnPGRuN54wXjReMl42XjFeN14y3jXeM9433jA+Nj4xPjUdMx03HTdtMO007TLtNuU41pj2mvaZ+p1rTfdMBUZ6o3HTQdMh02HTHdNz0wPTQ9Mj02PTE9Mz03vTC9NL0yvTa9Mb01lZgbTCdMJ02nTKdNZ0xnTedMjabzpgumi6ZLpsumK6arpmum66abplum26Y7prumfub+5gHmgeZB5sHmIeah5mHmUvNw8wjzSHOZeZR5jLncPNY83bzdPMs8z7zAvNC8xLzUXGleYV5pXmVeY15rrjKvM683bzBvNG8ybzZvMVebt5l3mHead5l3m2vMe8x7zfvMteb95uPmBnOj+bz5jPms+aL5kvmK+ar5mvmG+ab5lvmO+a55gGWgZZBlsGWIZahlmKXUMtwywjLSUmYZZRltGWMpt4y1TLRMsky2TLFMs0y3zLHMtQw1DDOctjfap2kqNDM0MzWzNHM0czXzNQs0izVLNMs0lZrnxpfGA/Y6+xHmGLPHstcywDrQOsg62DrUOsw6wjrSOso62jrPOt+6wLrQusi62LrEutS6zFppXW5dYV1pXWVdbV1jXWutsq6zrrdusF6wXrJetl61XrNet96w3rTest6x3rXet56zNlofWB9an7ifuh+7G30XfBd9V3xXfZd9L62vrC+sZ6xnrUetx6wnrCetp61HrA3Wautm6xZrqW24bYRtq22KbZptuq3CNsM2yzbbNsc21zbPNt+2wLbQtsi22LbEttS2zFZpW25bYVtpW2VbbVtjW2tbZ1tvK7ONto20jbJtsG20bbJttm2xVdvG2MptY23jbONtE2wTbZNs2207bDttu2y7bftstbb9tgO2Olu9rca2x3bIdth21HbMNjRlWEppyvCUESkjU8pSRqWMThmTUp5yPuVCyuWUKylXU66n3Ei5m3Iv5X7Kg5SHKY9SHqc8SXmaMtQ+zF5qH24fZR9tL7ePtY+zj7dPsE+yT7ZPsU+1T7NPt1fYZ9hn2Wfb59jn2xfaF9kX25fYl9kr7cvtK+z77avta+1V9nX29fYN9o32TfbN9i32avtW+zb7dvsO+077Lvtue419j32v/bD9iP2o/Zj9uL3BfsJ+0l5vP2g/b79gv2i/ZL9sv2K/ar9mv26/Yb9pv2W/bb9jv2u/Z79vf2B/aH9kH+AY6BjkGOwY4hjqGOYodQx3jHCMdJQ5RjvGOModYx1THdMc0x0VjhmOmY7ZjvmOhY5FjiWOFY6VjvWODY6Njk2OzY4tjmrHVsc2x3bHGsdaR5VjnWOVY7Vjn6XWst9ywFJnqbcctBy2HLEctRyznLKcsZywnLSctTRazlmOWxosVy3XLA8sDy2PLI8t5y0XLfcs9y3XLTcttyw3LLctdyx3LZctVyxvLCXW15a3lleWl5Y+1r7WftYXlueWJ5anlmeW3Y4ax3nHBcc453jnBOdE5yTnZOcU5zTndGeFc4ZzpnOWc7ZzjnOuc55zvnOBc6FzkXOxc4lzqXOZs9K53LnCudK5yrnaudZZ5VznXO/c4Nzo3OTc7NzirHZudW5zbnfucO507nLudtY49zj3Ovc5a537nYeddc6DzkPOo85jzuPOBucJ52nnGec013RXhWuGa6ZrluuO+577vvuB+6H7uful+5X7jfutu8TT19PPM8Az0DPIM9gzxDPUM8xT6hnuGeEZ6SnzjPKM9ozxlHvGesZ5xnsmeCZ6Jnkme6Z4pnqmeaZ7KjwzPDM9szyzPXM8cz3zPAs88z0LPYs8iz1LPEs9yzyVnuWeFZ6VnlWe1Z41nrWeKs86z3rPBs9GzybPZs8WT7Vnq2ebZ7tnh2enZ5dnt6fGs8ez17PPU+vZ76nz1HsOeg55DnuOeI56jnmOexo8JzwnPac8pz1nPGc95zyNnvOeC56Lnkuey54rnquea57rnhuem57+3tuee577ngeeh55HnseeJ56nnmeeF57XnjeeEm8fb19vP+8A70DvIO9g7xDvUO8wb6l3uHeEd6F3kXexd4l3qXeZt9K73LvCu9K7yrvau8a71lvlXec97b3gvei95L3s7e/r4xvg6+d77n3qfel94R3uG+a7633oHewb6HvrfeUd6hviK/G98Zb5Rvhm+mb5Zvvm+Ob65vnm+xb4FvoW+Rb7lviW+pb5Kn3LfSt8K32rfKt9a3xrfVW+db71vg2+jb5Nvs2+Lb5q31bfNt923w7fTt8u325fjW+Pb69vn6/Wt993wFfnq/cd9B3yHfEd9R3zHfc1+E74TvpO+U77zvjO+q77bvhu+m75bvue+J76Hvru+x74nvle+9743vpKUvuk9k3tl9o/dUDqwNRBqYNTh6QOTR2WWpo6InVkalnqqNTRqWNSy1PHpo5LHZ86IXVy6sTUSalTU6ekTk+dllqROiN1Zuqs1Nmpc1Lnps5LnZ+aMGFqLTU2NQG0UrcaJW01lS8Yej4JWKi0ihV//lcEJjyj/vUTyCEWE8SgOl4QUUkQ446EOFZxCJgGgtX/n6s/73eiXP4+3nue53me53meh9d5OudRtBAhaJAGAgaM2kjEoAEaCNBAgAaCBAjSQMCoARqMEjBqK1ECRDj3Xp/U93dW/VnvVV25rqqrk15huXdCaD/NSP/0vF0/8gVz4PR1u2RMhT+wDCeEf3AZzkj/ZLv9PDjsCpaWkFnB8uFVBSuEll4j/W5q0PAFm0CiFbZWF4wJ//Ay7CzT+3Z9zxfsAxtuqktU+CPLcED4R61DpH/wqV0/9QUL4IxWOKPCH1uGc8I/bh1qr6Qf1wrDtitYBZ7etoK19qoV1gn/hHWI9N1aYdsXTNpuhR0q2ApTwj9pHSK9fcmuH/qCI7/CnAp/yk4R4Z+2DpG+SwUXvmBwxBUsHVlVsEz4Z6xDpLdUMDriCjZ8webqgi1CW2FC+g4V7PqCPV+wv7pgtnqFI9Ifnrb0iS84Bd45axkFFf6snSLCP2cdOrqSfl8FK0ddwfCoK1g9uqpgjdAKNkgPjlp67Au2fcFkdcEO4Z+3DpH+/IilD3zBoS84Wl0wX12wIP3Ufh0boPHUrg+OrcC2ud5+jq1U+At2bAj/ojWE9G8P6NgALRVsAF/aGJsU+Et2agj/sh0Swr9i2yP8q7Y5wr9mm1u+1gfnf58VT3ivOvafrbyHGLj7mS24k7gOpMAnG+39sJusvOpft6EQ/g0bCekP99j7ZQ7EI3uFsS84ocLftGNL+LeW4Zz0x1ph6bhraRk4aW9XleMrBf62nVrCv7MM62Q/0QKbx90CW0BdEFPh79qpJfx71iDSw7F1vQvcemTQA449050N3NxlH3sZ8OU1gwHQH9olQ2C83ro2Ajo77JIcmNYMxsDhD/UOAbz+kcEUuLDbLimA/AODGbBZGXNgLlgAPzy33QYnViAVlICdzwzKwHFBBbgjCIFINapAIKgB7/VtHXXgw6sGEfBaYZc0gPl9vWMD+xI7Ci1g+xO7JAYOz+yTsQ3kud6xgCMX7ZIOcL5nkAIvPzXoAgeP2xNAD8gDW0cfuGAJGfGeEwYD4AfBcAmqOQLm2w1yoHhlB2gMPNhkDZsApzYbTIFt2wwKYH9mMAMuPrR2zIGa3czBSR4d7C2rTPzGMbsgBEqCGjBMrV0RcH2/vWgTGN7SExpw/J/bTIjfsxdNiZP/bv0m3vaTvUQObLb3tAnx6xN7hQJoWsKceKe9QtBZidc9sgvKwAb74AmJj/0j2yXxjX36oAAuPtfhBHqX7VDEwPFLBgmw46JBCnz2ja2iBxz/yCADsvUGQyAI9JwF3KgaTID99qleEH922151Dpz7Wo/sp3i6i21vZWCTuhMCd381qAGnHxhEQLtm0AReqR0pcO9Tgy6g26xHbGGf8P1zBhnQ7RoMgLkyhsB1wQh4ct4gB94TjIG6ik6AZ6nBFDind6ECuDa2O3UG/KJ3kDnw+UWDBfC6MoLTfARq86XTrmgZGOhergBP9ekQAhf3GFSBNfowqAH1XQZ1/yoRsGGvZTSA/Tv0aQtMr1tGC5iFBrEv2gbagWUkwIe6pAOce9suSX2NLnBHn5Y94C1BH9j1kUHmawyAx3r3GwIfvWabGwHfD3U3AQt74BwTz/SpNQHOC6bA++pPATw/Zi8yAwaJwRy4+sg+pBbAmccGwRku0adW6Yw/HkDvvj6SgYsjgxDInhhUgccvDWrAi122sDqw9ZXeyoG3dPYbQPeEjgcw2WoZLeDeHh0PoL3BoA3Ma3pfBHrK6ABbdAhT4Np2gy7wrTJ6wBZl9IE39QyXAe8+MBgAxUODIfDhxGAEHLIPx3yZMLKEMfDgK4MJULFBTolvW1wQv/ezvdXOgCtbDebANsECuHvfIEhZhaAEPL9g/SsDr+5YRgWoKiNcZnxlUAXudw1qwNUX9oZeBy6qRgR8dNMyGsB+1WgCh7WOFvDivA4H8O2nBm0gfGGXJMCTvp7XgCM9uyQFOt/peQ1YPDboAc/Kdvf0gTc7eu8AtkcGA+DoGj2wAbNvdTiAe//RDgfxu//JzgbxtcJmPwGu/307G8Q3c1tmATz6UB8swLm11uE5sOlnvXMAQz2+neVMr7F9lM76Nw7gQUcfI8D+m3oXANZd0We7h8bZlV+o7Nmozc/Pt+3nKbBWv5B1geMv7EV7VPjH1lx+fnqnnnWB5CurMPEVpqsrLPh5+6KeYc653xIr51yF8NyqChE/f+97HVagrwqxr9BWBXbJzys79PR2zu1i4CsMqfBPbJfnmMVhqzA75zo59xUWqsAuz/Mr0lo9ngN9VagD274xiM6vqhDz84Ob9AXqebeLFNA7VE8F2CQ/fvCdbSL3BcbA9EdNlwr/1DbJz3+o2hJKXdeGctdVqHRXVah3WcNUXxr7Ci1fIabCP7NNdmm0Gtnvul1kvsJAFdjl8gIdh8JXmHXdMOdUsE6WL/AerONQveB2UbvgKtQvrKrQ4uc1+/ooIX7jxZ+w4QJHVCClgP1qlvHzhe7Mka+QA7m+3pmoApvk57d1Zwafugol4KZ+lap8uqpCjZ+/dkTvP75C81O3i5YqsEt+/vkNPU36Cn1gjYZLgX9hm+THN+x7w6m/vgDKuk+1ALZ4kVvmHdtCCLy9R6MFHqgJ9YsrFf6lbZGff682ti/67/SBh6qQqgJb5Oe57WFInOoxdARMVSBfXaDg56f0zrDwFYLeCjT1INJbVaDKjw8e0idLz3+y9FwXmqsrJPy8UdOXm75CD9DXXX0VYI/LH3+ht56e+5yYAvsEBRX+lZ1nwn9tW77Ec4HSK5fcXR4CewTVS6sK1gj/jbWA9C+0wviSu+nbQKGCCRX+rbVguaQv9cYExKowBPYJRquXlBP+O2sJ6b8pfe73uPB7DC6vKlgi/PfWkssr6V9rj/XLbo8RUKhggwr/wXrAzx9rjykQq0IX2CforV5Sn9Ae34akf6f08WX/CALsEUxXFywI7flvQfo17bF8xe2xAhQqGF5ZqWBv1hE/z7XHFhCrQgzsE7SpYEtKCP+LtYT0L5SeXfEPKMAewXB1wRHhf7WWkH5Se5z5Pc79HhdU+G/Wgz43vC6o9d2S6sAeQdRftaQGoX1XGJN+QUvq9N2S0r5bUpcK/8N6wM+/P6jnF7+kMdBQxoQK/9MOBuH/sh6Q/lGuX9iuuoJlYK2gcnWlwv+2g0H4f6wlpB9I9S551T/dAHu1wpgK/9d6wM9/vGsX9H2FDOhqSQMqpPrmjISn2lUBxCoxA/YI5pSwyS0Iz1rF8mec5nt6o/zMVawtM7So+merKkaE+v6vRf4FtSH5zG2z85n7/EgpoS8IMxLuvq0HoM/c8HJfYuJKzEjYqF/Yg2tuFSUP5WsrJbpWokZCutE+ehvX3CqaHmJXokPC4Qt6P7zmutv3MKDEBSuR+xJTf0XhYe5KlDK+ud+mB6HMXVHN/BtAtlJCX5U2SXhWGLR9iSRzD1cpJfR9bJ+EX3Uuhv5FR0BDGXm26hYfE/asYkF+nOt9zlcMrrt7vHR91T1eJrxkFavkZ1pBdN0dksZ1d/CalLhsJRIS3tbB6/oSPQ99SlyxEiMSrujgTa67fU09zFyJ4AZfa+gOqtxwV4Q33LxqN7QRdkrCaR28+IYbedtDhxJ9K9Ej4V0dvIG/YuiXlVPiqpWYkrDuJ4O5L7HwGyndXCnxmV0R3uQ1Uj3l3/QPPsBejb1BiWs67STM9dad+hJdoKuN9CiRWYkhCWt0LsZArBITYI9gSgk96xBet4qL5b701l0euIqVgXvrDgerKlYJb1jFiPyx+tAa+Dc4oKGMNiXsFk0Ib1rFLvnv6RbNfMUBsFYwpITdoiPCgVWckL9H05wN/OPPwE1zQYlbVqJyiy9ANc3aLVeifstNM7q1UuK2lYhJeKB9dYBYJVJgj6BLCet9j/Bzqzgg/wNNM/cVx7fcNCerK04Jh7pTyO+oD6Xb/hEIaCijcnvVNEPCL6xinfyKdt30FVvAWkFMCZtmm/BLq5iSX9U0+7f9M9FtN80BJb7SMxEJA02z8CVmt90055QY6SHoc76q0L6qQKwSNWCPoP756ocgwjt6CCK/omkmvmLnczfNdHXFLuFdPROR/5X6MPrcv3UCDWWMKWHTnBDe0yMS+du062DoKpaAtYLycNU0K4S5npjIf1fTbAzdKJpDN80WJe7riYmEO5pmz5foD900M0o80BMTCW+r99Ohf2Iaut7PKGG9nxN+rQeoL/jtRJ0Kv/APUMAeQe2LVRXrhGM9T5G/rqb30S9c7xPglD7BO5SwaaaE9vtO3xcc+oKjJahgvrrgeHXBgvSH6uLCFwy+9A9XX65+uCL8P9aiL13B6EtXsAG8/NKgubpga3XBhPRTerrofumm0gPOact9KtiWM8Jv9OBF/tOu3mF9xSmwSVCsXuKM8Fs9h33FP9Po5FS+chVDYJeg+tWqNdYIH+qxjPz39VgW+4pt4K52kVDC1tghnOgpjfxNOjqDr9xghl+5szhavcacsKeHNl9x7isulqCKwWhVxRKhKoYjvj/Q4amPXMVo5A5PgxK26yahHvXbvmLqK3aBjqC3umLfVRySf1HncTzyT3gjdx6nq3ddED7SEx75r2nW5Tv+CQ/YJAjvrFpjlfCxnvDIv6rz2PIV4zvu9LRXV0wIv9MTHvl7tcbMVxwAuwRDStiuR4RTPeGR/5u6NLvjJjNfgjIWqysGd1c/hVbuuoq1u65iHTiljIgSVrHhKsbk39Xp6fiK6V13HruUsD72CAd6/vMVc19xDHQEk9UVp67inPzDOo+le24y5XvuPFburX7+I/xez3/kf6+z0fQVW8AmQUwJPf8R/qDnP/K36fT0fcXsnjuPg9VrHBL+qMdB8o/rhBe+4gzYJZivXuOCsNDTYc6fKqtL1dxNprYEZdTzVWuMCPUc3SK/r1knvmIH6AjSfNUau4R6js78Gke+Yp67Ez5evcaJW+PMrzG4758O77sTXr6/+umQUGuskb9e57Fx302med+dxxYlbI0xob4L6JD/tc5Gz1fsA5sE2eo1Dgh/1rMj+W/qPE59xeK+O4+z1WucEz7Rs+MDVzF84J8dH7iKtQerKtYJZ3p2JH+mLrUf+GfHJSijs7piSqjfBPrk79Vkhn6NowduMvnqimPCX6xiQf4tnZ6FX2PwtTs9pa9XPz0S5laxSn6mJUVf+8dHYI+gSQl7Bm8R/moVE/IPfqF36K/9N3VAoYp9SjzVAyMJh/XrzMQvago0lFFQwho3I5zrgXHMGnJ9wo9dxXCZIaiOVzWuRvhMD4zkv6lfyuKx22Yb2Ks1JpR4ridEEq7c1XuwLzEEulrUiBIv9EhIQl8HaO73tViCMoJvVj8SEqpT4Tc8WuuI1b9xFaNv/CMhJfRISKhOtcl/poqpr9gFOoLe6op9V3FI/m9Vvel+4x8Jv/GPhKt3XRAu9EhI/mtaY/lb/0j4rf/S79vVX/oR/qZHQvIP7tabLvDY4pg4UcE2FV7qRiJ+ZXGXC27p8T9zFQe+4tBVHLmKk2WBQ3okBIJQf9/7rTuRC0oE+vuWhysJJ7TNGqBF1R/64/Nw9aIaxK/pPuKC77TNjquY+opdV7HnKg64YONhvcs+dNscP3TbnFBijZWYk/Dbcb2tTtzX4+WJW1VlslJirZUIiUsW1yccuR1WoelLtnzJ2JVsu5IpF/ygD8X+xP1hTTbxv0W4kkPi1y0ec8Fu9a6YuH+pmU1c7+aUWGclyo/461J9Y/HI/cFRDZjqj3Hqj1YqrLcKEXHZ4hYX1NS6xJfs+JKpK9l1JTMumOR2wciXzIGZSo4pscFKzEjobbaE4LHrTMlD+fFKiTesRI2EhV6j4a9oPvZfDbsSHRLubrLe9HyJvi+RUeJNK5GTcEf39NRfUXiYUaKi+4V4o8Wl7ziIeigIgTV3DKoeat+tXlXdxU0u6Oif89q+QuKhQ4m3dL+4uM8FH/9gMPzOf9sH/HxKvaLEJosLEr6K9Tu0LxFMV2D7I4PSdKVEaCWqJHx9xiCa+kcyX6LpSrSIN1uc+JJdX7LnS/ZdycyVHHFBTW8Mk6k7Z9Op61VBCfUq+H4loXXASlS+9w9l37sS1e9Xl2iQ8Ks+LGJfog1sVImOK9EjYZdWMfAlht+73owood5MSci1irkvsfAlgh9WlygRq73hD5xdtbf+g2tvBLyjkg1Xsk3CIf2laPqD/+AEvlRv+pTYovNPwgmtYuxXMQHuq8TUlViQ8KHeq8s/+g/KH90qwh9Xl6i6OOKCZ/qYawGxVhUDE5VsuxKJi7tccGuq90Sgr5ID4EeVHLoSIxdPuODlCX1Q/ug/KH90vVu4EpWCrz7f18NV4b9gK1zvomJ1iZiEd3/Qe2DhNpYWbmNdV2JAQue4Hp8K99E4LtxvOhNKbNXHAQlb37OE0k+uRBm4qAf28KeVElW9/ZMwjvW45Eu0gP1aRUwJrSIlYfMJvcf5EhmQaBVDSmzT4xAJT/QcWPgSM19iQYntehz6mQHo07X6sytR+9mVqP+8UuJtDZlYq2pxwSHdY4kv2fElU0rUNHRirTLjggsb9c2XL5kDB5QxdiUnruSMC57sswuCJ65kCTh7S716slJih8U1Ejbr4abhSzSBL57prYASO/X2T8JFvaX1fIn+E3eaM0poYzkJ+8/o+eiJeyYugNdS7Z0S71hcmvFbtg5BOPN/RD9zJeqz1SWaJHzw55Zxe+YWkSxBFTquQp+E3p+1w+7XMPIVxq5CQUK0R39GP3PNDH5xb82lX1ZK1DVi4nctrnJBopKRr9D4xc+cEu/pdiB+3+KEC/aoZNeX7PmSfUpEuh2Id1k84oLP9TXvL/4LKg8FFT7QiSDebXHw6+qKlV/dp0XoofrrSoWGnoVIGFmF+Ff/KOQhocKHOiDEeyzuuYoDv4ShhxEVPtLTAAn3bup/w8OvYQHsEQRPV0o0dasQ77U4fMovOPoe96mrGHloUOFj3TnEn1jcdhXTp25XXQ89KrT0LEDCh3/N7hO/hImHKRX26U4i3m/xwlUsz90SKh7C+UqFA/qQIOHBC4PW3K0h9tCmRKwbh/igxV0ueGx/ep35AgMPQ1dxRHzI4gkXvKZbc+YrzIE9ggUlDuvGebYSty2uPFu5INQX+7Vn/qHJQ0SJI7qTiI9aHHPBkUtWsuMrpB66rmSP+JjFAy64+ZOVzH2FsYeJKzklTiyec8FsoIes565C+bn/w7TnKyWO694iPmFxnQt+iq1C87k7dS0PMSVO6qHLl+j7VWUeBpTo6O4i1gPqmAt+VjMLv4iZhzklTutT54UrUX3hFlHzUH+xUuKM7i/i1OIWF1z7K3bz+AId4IKuSKlw1uIu8TmLMy5Y90Df3/qSOXD0tlpDifMWT4i7Fs+44LC9rQQLV7Hkobzgr951exF/anGNCzZokQ1foblwz54tSlzU7UXcs7jDBT/8Jbt3Fv4brIV/QqPCJT2huQpTv6bCr2lGhcu6mYivWFz6jd85XxiEv/mP49/comq/8Wfb+tjxJdq/+c/jJWhVHUpc1Ykh/sziPhc8tH0O/aJGflE5Fa7p1nEVFn5NwUu3ptLLlQqZbiXi6xZXueBnbTN66RbVeOkW1aTEDX3u+BLdl25VPb+qPiVu6t4hHlg84oIHjwwmvuT0pf+fvqTELd07xLrXglf8rxH9XbszXrkCIfBCV1Rf8cfJFteIhxY3uODzMwbxK/8J7SGhRKx7h/gLi3vLRY315uorDF/5p35KfKmbycVTLth1X2+uQKwBL3wnSsF/WfnjYt08wX9Zed5O9ScwQKJVRR4alBjpbiK+Y3Hbl0yB3zt2XQ89StzV5wwJLT3F+TVMPEypcE93k1vUwlUsv+aWUPEQvrZSIdfNQ8LF4/rAfc2tIQZ+atr82pS4r7uJ+IHFXV8y84sYLEu2rOSQEl/r5iHh1F39j7EBv/fL59zXXFBirM+RNa5EDfi9c1hf44/AmtUlYhJ2LfR2uca9aAoUKtGlxDd6DPMlcv+iY2CPYOJKTIm/tXjOBe+rZGmtW0R5rT8Fa1dKPNRj11pXornWLaIFJILYlWgTTyxOueDoIb1h+kVkfpkDSugdc0zC3pqVKPwiZn6Zc0rov5J0FcullfyrF/QZCsRaVA3YJ6iXVlWMCB/rIYz809sNkpJbY8dDSonvdHsQTy3OuODuMYMR8P/3TZhf9ZgS3+t2If7B4pkvGbzuSpZed6ssv766ZIX4R4sjLnhwW50ATnV1QoANH+l9ghI/qVXEP2vjXLBLCSPg997Wc2DHCR0RSjzRxoln2jgXbNV/UBesc6ssATWVLK9bKfGLNk78qzbOBbsCPV2uc6uMgTN7tXFKPNXGiec6AVxQvWGQAVd0xQB4lRkMKfFMrSJ+ro0T/xXb1PqV8IU2RWwfE+H6lfLD3/tf0x0ik/9XBhh5yIH5Fn02rXd9KICutjXjVRcWz4l/s7hUXrng5Vl9OJVdySrws05drby6ZJ34pcVNLngy0Sx8yQQ4p2f5DiVeWZwSa959Ltis/1HIoS85Al7p4T53JceuZMEF2/TZ5SsGG1zF0oaVCq9ZhTLxGourXLDTPuyiDa5iw1dsUmGtjjVxyeKECxZ39KWmL9kDrmreGSVe14MeCTc1vYkvMQU269egghLrrMSMeL3FwRsrF7zQfCtvuJIh8MYpPRS/sVKibFfUiDdY3OCCC/bnIzHxpXN6JgZ+znQ/U+ENPRYQv2lxjwtOJbqd/SKHwL1rup8pUdFjAvFGi6dc8FhP7nNfcgG8o9/dgjdXSrylxwTiTRaHb65ckFpcf9PtOwKuDKxigwqhnhqIN1vc5oJ7PTuF6ZtukV3gHX0l0aPEFt1sxFstHnLB7D3dSr7kxJecUqKqm414m45QZeWCL3/vzbHijxCwVZ9k1cpKie06QsRvWxxzwa26QceXTIENN/UZQIk/ZX0g1CsOyD+nirmvOPYVJ6srTgn11D4n/6oqlja6iuWNrmJl46qKIaHWWCf/hCo2fcWWrxivrtgm1BpT8vfo7b2/0T23ZECyV42ihOIh8ceaPhfceflHljADdtf1LwbAG28ZLIC3Nujd+C0++v6NdY64fl3vxsAO+/itEM91JkPgzgN7M60C29brQRRIr6m7wEQLj4Daf7TmvuWfQ4B7+mRrv7XSi5be0on3WZxxwe4v9f2fL5kDfU1oTInY4gnxQYtnXPDypm002ORKlja5kuVNKyUOWVwhVskaF8z/6TJu+IpN4Jj23aLCYd2exG2LUy54qkX2fckMuLlJx4wSR3TMiI9aXHDBVM94i03uwTMIV+BGpo/0cKXEMfWBOLG4ygWxGhWFrmTDl2y6ki3i4zoAXHBJj+BdX7LnS/ZdyYz4hMUjLqhqlRNfcupLFq7kjPikxcHmlQuua5WVza5kuNmVrG5eXbJG3LG4wQXvapWxL9n2JRNXskN8yuKcOLV4THxWfSA+Z/GU+LzFBXFXXSC+YPGc+FOLF8QX1aUtK3HP4hLxJR0n4ssWV4ivWBwS93XciK+qhcSfWVwn1vtTRJypxcR6T2wS39BZJL6pCRAPLG4T39JZJb6t/hN/bnFKPLS4S/yFxT3iLy3uE3+lg0w8snhAfMfiIfFdHXTie5o/ca75E9/X/IkfaP7EX2v+xGPNn/gbzZ/4W82f+KHmv3Ulnmj+xI80f+LHmj/xd5o/8VTzJ/5e8yf+QfMn/lHzJy40f+KfNH/inzV/4ieaP/FM8yf+RfMn/lXzJ36q+RPPNX/iZ5o38XPNm/iF+vu7+HfPVfYwsgBiQbm6AoWgAqzZaFADQkEd+ECQALGgA2SCHpAL+kDwlsEQCAUjIBdMgHCTwRTIBXMgDLVbIBeUt5GxWbtdwhbtFsgE9SVsNWgCYdWgtYRt6geQCTpL2KHtL+EdbX8J72r7S9il7S9ht7a/hI+0fZ+x8Bnl7S6jsgRl1HxG3Wc0fUbLZyQ+o+Mzej6j7zOGPmPkMyZL2Kt+LGGf+uEzFj6j/LbLqCxBGTWfUfcZTZ/R8hmJz+j4jJ7P6PuMoc8Y+YzJEg6oH7+Dv7xsBT8s9MPF7+AvLd9kaytvGp/ofyKcuGVxmXifxRUXh8T7La66uObiuosjFzdc3HRxy8Wxi9suTlzccXFaW2nOAf3Hl13gtn5h7wFb9ChN3MysRAZ8ri+BBkBFX5cMgcupXTIC9nbskhx4T5+1xCfXGEyAfZ9aiSkw138uVwDvf2A1Z0BdLzIHOrttKwvgN33nEuzgHN3QcQDe0NcVZWDjDT26AjdL+tgF7jw3qAJBqt8EgaY2Vwf2FraXCOjpZRtAWS/bBLb/ezsXxJE2GwM/6ru6NrBeU0mA6/o3uQ5w85oOB/CbanSBF68Z9IA7uV3SBzasM8iAK3WDARDp67sh8NNLgxHw/Xq7JAc+1pkcA7u/soZNgK6+8pkCz/QVXgFc1mhnwA3NaQ5sUgsXwFt62WDnCnx0QL/qAicEZWC3HkIqQL9kEAJ1XVIFMs2lBryX6T0DOKV/C4iAnzbreACv9PesxJv/g50O4spJfZMAHJ/oP30CnuhWSICXamAH+Lml0wHcf2RFu8BH9j1rj7i10BMbsF97z4AjyhgADf2H3EPg9i4dDuATfZuQA++sMxgDM618AuyweEr86IwtowDG5/XWAfyigz8Hdi50NoC+zkbwzgo80BhLwB0NqQx8oYwK8PCWQQj0dUdWgSLRWwfw+JFl1IF5oKd24Kv9+g4BGOs7oOayxkV9pgBr9W4TAye1uTbwsyABvhZ0gIfabQocv2Ov0gWu608ge8Db93Q8gBtaegbcruqTBYgG+mQBfv1CxwNoabY58JbO3BjYfdJgAjz/Y3Y8iDfrzaUAvtPKZ8DsVx0PYLFB3zACX+iWDeq8U2iSJeDLW5ZRBrbq2/kKsF5FQ2BtVW8dwG9bDWrAyRc6HkCmd98IePN/2+kgjjTIJrBPnzQt4LQ6GgPPXtczB1D/Te8dwAld0gHqamkKlNbpdAB3tdke8OkOK9oHDqT6ZAGendTpAG6VdTqAR28YjIDnXVtHDqzRYRgDoT6bJ0BdMAVO6r83KIBrPxjMgFe6F+bAmlcGC2CdGhS8uwJtvUoJeH+7HkSBN/TpVAFeE4TARX0BUQUWA4MacOahQQ4cyOzsj4HdRwwmwDdnDabASFAAn10zaLzHgdF/VtsCvnqqr+KAZ7ssowPsrRt0gU/XaPrAecEA+CG2oiNgIhgDl3TJFJjqk2IG/HhM7+rAN6pRep/j8FJdBz7V20kV2K/jUAeu6R5sADdadkkLuLjdMtrAb2vUD+D+WvUDeP7QavSB8dxgAPysFo6Add+oH8B4bDAFLpbskhlw9XWDBfC2oBRxTgUVYOs6gypwV+uoA+u/1gcScEcv2wJ+1W7bQDtSP4Cv9bJd4L33DfrAbIvBADh5T/0ALp03GAPFA/VjmfFI/QBufqV+AG/pZUu7aNDn6gfwm2pUgcvP7VXqwJmaZTSAkyraAj7aqH4A69arH8DrepUuMNQY+sDXu9QPoHNd/QCqGsMYOPmWwRS4G6kfwFm9ygL4Vaew9AG/C95QP4Boq/oBjPsGdeBdrbQBfKiVtoBQRdvABT15doCNOkFd4Me31Q9g7e/1A1joSI2Aj7W5MfBI99wU2KcDMwOy99QPoHLGoLSb3WpQFWD7BfUDuD1RP4Bf+uoH8NUp9QNo60ZuAyd0TjvABa2jC0weqh/AnnfVDyBTxgh466r6AWzcYzAFPtTLzoAtXfUDCB+rHw02t039AHbpVarAJ1X1AzhQUj+At3erH8BPGkMbOKLj0AFuqmNd4FdBH8h0yQBo6tCNgNu/6f0UOK2MKbDQSmfAw9PqB/CRjkPpQ94+N6kfQEdzqQKvbVQ/gPe10gZwaY36Afykk9wGKs90vwBFpPMB/PCj+rEsqowB8OQ7fd4C5cfqB3BY65gCP+l8zID376kfwJ13DIKPOA4X/rg1CDgrKAOTR/a4UQG+UEboM6rAtGRQ8xl1DxFQfPRfltAEyk2DGIgECZAKUqAQ9IBsr0EGxB8bDIHwE4McSAVzYIv+TzVLTWa726ACxMGfsX4Ar67rgQRoK6MJxG/9Uducz2gDbyujC3SU0QO6Oy0jA3rKGACnVWMEDJSRA+tf2F4mQK6MKbBrh9WYAYUy5sAHGy0j2LsCwWuWUQLOvWYZFSBURgisX9g6akCkjDqwUyttALEymkD5mWXEQKqMNnBYNTpApowUuKXdDoBcGUMgUtdzIFhjGWNgrnVMgUgZBbBWNeZAqowFsPmwZZQ+Zh3KKAPv61VCIFhrGVWgo4w6ECkjAi6pH00gVUYLqNVsHQnwrUaZArku6QK39bJ9IChZRgYcVpOHQKSMEfBKLzsGUmVMgDvKKIBcGTPga21uAQSvW0bwCb/hPLeMKhApowbcV0YDOP2LQQtIdUkM3C7bwjrA9JBBD7gztxoDoKye5sAnFYMpcFi7nQNbtY5Si4OrS0Jg/kTTB7ZpLxGQvv7nbHNLWGfQXELZoLWEikG8hKpBewkNg2QJXYPOEkp/3g5Ma+UfSPS51yPWc2Of+AOLM2I9jAyIGxYPiT+0eET8kcU5cdPiMfFeiyfEH1s8Jf7E4oK4ZfGMeJ/FC+LY4mDfSnzQ4hLxIYvLxIctrhK3La4RH7G4Tqz6kavfcPWbrn6L+KjFMfExi9vEicWJe/2Oe/3UvX7XvX7PvX6f+LjmSXxC8yQ+qXkSdzRP4lOaJ/FpzZP4jOZJnGqe+ziALfuEL4CRYAbMBXOgts9gASSCYP8KDAXhEvYbVIHZAYMaEB40qAOtQwYR0Dts0ADGbYMmEBw1aAH1YwYxkCQGbWBw3CABihMGHaDSMUiB5imDLtA9bdAD8jMGfWCRGmRA7ZzBCAg2/wWbI5ALCiDdYjADCsEciLYaLIBwm0FwgBqCElAIykBUN6j4jBDIPjCoAsFugxoQHjWoA9ElgwiIRwYNIP3RoAkUghYQPzWIgXBu0AYKQQJEzww6QCZIgeC5QReIBT0gfGHQB1JBBhSCARD/ZjAEsoXBaAnhX7RhA+l5Ow7jJeSWMQWmyiiAoGswB7KLf8umf8CdoErsTlAIFIJq7E5QLXYnqA6kgggoBI3YnaCmz2jF7gTFsTtB7didoCR2J6gTuxOUxu4EdYFC0IvdCerH7gRlQCEYxO4EDYFMMIrdCcqBWDCO3QmaAKlgChSCInYnaBa7EzSP3QlaxO4EBQfdCSoDU2VUgOj8f7XpL2HbP7HpH3QnqHnQnaAWUAjig+4EtYFQ00+AVNABCkEKRHWN0mf0DroT1D/oTlB20J2gwUF3goZAPNIoD7oTlAOFYHzQnaAJEM41SqAQFAfdCZoBmWB+0J2gBRALgkPuBJWAVFAGCkHlkDtB4SF3gqpL0AmqHXInqL4EnaAGMFVGEyg++m82fSDc989t+ofcCeoecieoBxSC/iF3gjIg1PQHQCoYAoVgdMidoNxnjA+5EzQ55E7Q9JA7QcUhd4JmQDzSKA+5E7QACkFw2J2gEhDONUqgEFQOuxMUApmgetidoBoQC+qH3QmKgFTQAApNrnnYnaDWYXeC4iXoBLUPuxOULEEnKAWmyugCQdegD2T7bR3ZYXeC8sPuBI2BQjA57E7QFAg1/QJIBTOgEMyBqK5R+oyg7U5Qqe1OULntTlCl7U5Q2HYnqNp2J6gGFIJ6252gqO1OUAMoBM22O0EtIBPEbXeC2kAsSNruBHWAVJC23Qnqtt0J6rXdCcra7sAM2u7AjICpMvK2e8uZAPEBe9kpkAkWQCEIjvA0LigBYWxQXoKGXQFSQQjk1+ySqoeah/oSYoMICA8aNID0mEHTQwsoThnER9yBaQNR1zISIP/UoOMhBYKLmpyHHhAK+h4yIBIMgFQwBDLBCMgF+RF3YMZA0LOMCRAJpkfcCSqWoBM0Bybf24FZAIWgdJSilX9p0z/qTlANKAR1YCGIgDDWKJegA9MEUkHrqDsfsYe2h2QJsUZ51J2g9Kg7MF0PvaPuBPWPuhOUAVFXozzqDszQwwgINMrcwxgIBRMPUyASFEAqmAGZYA7kgsVRd4KCY+4ElYBIUD7mTlBlCTpB1WPuBNWA7LX/btMH8gd2ghrH3AlqA4UgARaCDhDGBukSdGC6QCroHXPno+8h8zBYQqxRHnMnaHTMHZjcw/iYO0GTY+4ETY+5E1Qccwdm5mEOBBrlwkOQuANT8lAGIkEFSAUhkAmqQPC1Ta6WuBNUT9wJioBI0EjcCWom7gTFiTtBbaAQdIBI60gTd4IyoBAMgIVgmLgTNErcCcqBVDBO3PmYeJh6KJYQa5SJO0HzxB2YhYfguDtBpePuBJWBqKtRHncHJvRQBQLNtuahDoSCyEMDiARNIBW0gEwQA4Em1z7uTlBy3J2gDhAJ0uPuBHWXoBPUP+5OUHbcvQcNgVTrGAG5YArMBYWHGRCMDebH3QlaAKkgOAHokrKHChB+axACsaDqITrhjkMDiLqayxK+s0tiIBG0PSRAKuh4SIFM0AUmgh4wE/SBYGqQnXDTHwCRMoZAKhgtQdPPl6DpT4DyNhv2FAgFMyAr/2ub3Ak3/fJJN+yKh/Ckm371pJt+DUgF9SXokoaH5kk3/RYQC2IPnZNu+ulJN/3uEjSGPpAIMg8DIBUMPYyATJADE8EYmAkmJ930pyfd9AsgUsYMSAXzJWj6iyVo+qWOm34ZKCKDEAg6Nv0qEAkaQCJoemgBqSDuuOm3gVSQAMEpuyT10O246feA7LRl9D0MO276o46bft5x058AiWDqoQBSwczDfAnnbR2Ljpt+cMpNvwRkuqR8yk2/cspNPwRSQXUJmn5tCZp+BDRbNuwGEOo4tIBC64hPuemnQCLoeugBqaB/yk0/A1LB4JQb9shDfspNf3zKDXviYXbKTX9+yk1/sQSNoXTaDbvsoQKkgtBDdQlqYQ2YKKMOzAQRkOmSxmk3/eZpN/0WkAriJWj67SVo+p3TbvopUEQGPSDsanJAvlk3EJBuMciBQjAGoq0Gk9Nu+lMgFRRAIZgBUV2T8xkLIPvAIDjjvjArAeFRgzIQXTKoAPHIIDzjDkwVKAQ1IH5qUAfCuUEEFIIGED3TKIFM0AKC5wYxEAvaQPjCIAFSQQcoBOkZd4K6QLYw6C0h1HPhGXeCsiXoBA2BqTJGQNA1GJ9xJ2hyxp2g+Rl3ghZAIQhSd4JKqTtBZSAVVIBCEKbuBFV9Ri11J6ieuhMUpe4ENVJ3gpqpO0Gt1J2gGCgE7dSdoCR1J6gDFII0dSeoC2SCXupOUB+IBVnqTtAASAVDoBCMUneC8tSdoEnqDsw0dQdmlroDM0/dV67BWXdgSkDUMagCiaDmoQ6kgggINewGkAqaZ93nS+yhfdZ94CRn3edLx0PvrJt+/6z7wMmWoHf+IZAIRh5yIBWMPUyWoE+PKTBRRgHMBDMg0yXzs27Yi7PuAyc45z5wSkvQbMtL0PTDc+4DpwqE2wzqS9D0o3Nu+jGQCNoeEiAVdM656adAKuiec8Pue8jOuekPzvlnSw/jc276k3Nu+tMl/N4YgEQw97AAUkFw3kFpCRplGZgoowLMBCGQ6ZLqeTf92nk3/TqQCqIlaPqNJWj6rfNu+jFQRAYpkOvTowsEFwx6QCToA6kgA3LBAAg/NRgCqWAE5IIciC4ajIFcMAHCj2xzUyBP/9ISCiA8azADUkHQZfuCEpB+qxvIZ1SA4KFlhD6jCqTKqPmMOhBMLCPyGQ0gVUbTZ7SA4JFlxD6jDaTKSHxGBwgeW0bqM7pAqoyez+gDwXeavs8YAKkyciDsabZAIpgAuWAKlC8ZFEAsCC6swFBQAoLLGiXQFFSATBACc0EERFcMGkBP0AQKQQuo9Q1iIBW0gYkgAcKrBh0gEaRALugC5c80FyAW9IGhIAOCawYDoCkYAplgBMwFORBlmhzQE0yAQjAFatcNCiAVzICJYA6ENwwWQCIIPqUfghJQvqlhA7GgAgwFIRAMDKpAU1ADMkEdmAsiILpl0AB6giZQCFpA7bZBDKSCNjARJED4uUEHSAQpkAu6QHlo0ANiQR8YCjIg+ELDBpqCMZAJJsBcMAWiLw0KoCeYAYVgDtS+0rCBVBBcpB+CEhCONGwgEVSAXBAC5TsaNhALasBQEAHBXc0WaAqaQCZoAXNBDET3NFugJ0iAQtABarlBCqSCLjAR9IDwvmYLJIIMyAUDoPzAYAjEghwYCsZA8LWmDzQFUyATFMBcMAOisaYP9AQLoBAEPfrxjaYPpIIyMBFUgPBbzRaI9KiQLmGvwQRoCMJL9EOQAJkgB8KPDcqXgZZBDFQFQyASBFfYi6AJBPsMMiAVzJdwwCDqszBBDygEBRDHBrWr1BCkQC6YANFBg/AzMgTJEg4b5EAhKF+jH22DGMgEQyAXBBnbP6J+AKkgAzLBHAiPGkTXyRD0lnDMoAAKQe0GkBikQHhc/QAyQXgTOKF+AIUgB+KT6scA6BjEQCoYAsEpg+AWGYLmEk4bZEAumC/hjEF0m6Kp+gGkgmIJZ9WPz6khSIHonPqxhPMG4RC4oH4ADUEOxILyF7RQEAPhp+oHEAmCL6khaC6hZ5ABhWC+hEsG0Ve8ymX1YwlXDAogFtRGQN8gBTLBBAivGoR3gM/UDyAW5EAhKN8FrhnEQJCpH0AoCO4BN9QPIBNkS7ipfgCFIMqBgfoBhLcMiiXcVj/usxdBChSCyRI+NwgfUGOofgCZIF/CF+rH15xCQQxEX6ofQC4IxsBX6gcQjAyyJdxRP4BIEH1DDUFvCXcNCiC4p358yw0k6APBzH4HypYw1Qcw0BQMgUwwAsIfDKa+aAFkP+rjFZgL5r7owhetPHRFQyB/qicloDw3qAGxoA4UzwxavmgMxC/0HAQMBYkv2vFF+75oBqRr/6v1FJgIhkBYMhgB2esGU1+0AML1ljEDEsHcF134opUJn/vX9P+WA0SbLKPqoQb0BHUPLV80BsqbLaPtIfE1Oh76vmgGJNvUUw9DIBeMPEx90QKI3lZPPcx9jYWHyiPfUyB7Rz31UAPmgrqHli8aA8m76qmHxNfoeOj7ohkw2aWeehgC4QfqqYepL1oA2W711MPc11h4qDxegdnHf9N6CgRN9dRDDWgK6h5avmgMTPaqpx4SX6Pjoe+LZsBkv3rqYQiEB9RTD1NftACyWD31MPc1Fh4q3/meAtkR9dRDDZgL6h5avmgMJMfUUw+Jr9Hx0PdFMyDpqKcehkAuGHmY+qIFEJ1WTz3MfY2Fh/KUS974y7Z9IHjTYAJEhT74gJ6g/P0KFIIaUPvJoAmkghiYCNpA+LNBCiSCLpALMqD8xGAAxIIhMBQ0f2BzM4MEaAp6QCYYAnPBBIh+MSiAnmAGFILgR/rxq0EJSAUhMBFUgfCpegokgiGQRX/FXqVg+7sMmkCuUabAQJAB8RkNGwgFcyDvGoQ/cYkgAtILBgkQfWrQAzJBDgSXDAogE5R/XoHGZYMaEAviJVzR5oBcMATCq9ockAmCJwxKEALhZwbNJdzU5oBYkAH5QJsDoltqIZB9rs3NyBgaREBVEAPFmzbKHpAJhkC02aAAitAg+IUmbzGoAbmgCYRbDVIg3WaQAeF2gwkwFsyBQhD+CrxtEAFRzSABsh3aHBDuNMiBWFAAmaD8lIx3tDkgF8RA+K42B2SCIRBE2hwQfqC9zNmLoAcEC92EQFMwATLBHJgLys/ox28GIdATVIFCEAG1lwYNIBXEwETQBsJXBgmQCMrP6ZigBpQD+2xoArEgAYaCHhC8ZpABTcEAyAQ5MBeMgWiNQQH0BDOgEMyB2lot7AX9SP6qvQoQHTcoL5aPcDqWQFcQA9HnGjYQCIZANjIogEgQ/EbH7hjUgPCuQRNIBSlQ5AYZkN43mADVBwZzIBKEL4GvtTkgEyRA8I02B6SCHMgFBRB8a1B+BXynzQGRIAayqTYHhN+rhUD6ozYHhIVBEPzX30FJEAL5bhtlE0gFCRDuNciAvGmQA4Uy5kD2sUH5tRUIPjGIgHifQQwE+w16wEAwBHJBsYQDBsEaVhob1ID0oDYHBIcMUiASZEAqmADRYW0OyAThWooe0eaAVJAAxTFtDghOaC9ALmiWgPW6CYFy2aAHxIIhMBRMgGCDQQE0BTMgEwSvr8BcUAKiNwxCoCeoAoWgBtTe1DqAVDAHJoLyOiZXUQ0gETSBXBAD5Y0GbSAWpMBQ0AWCtwwyoCkYAJlgCMwFtfWs46r9OpsC6WcGkyWc1LEsr0BbEALhjxo2UPxgkADpzCADQkEORL8YzIHgV4PyBvohiIB8bhAD8TODHlB6bjAEQkGxhBfa3BusVFADioU2B8S/GaRAJsiAQjABolfaHJALwjdZx2vW9QjIBAkQlAx6QCbIga6gAKLEoFyhhqAGZKcMYiASpEB82mAIhGcMJkAqCDay/bMGIZCeM2gC1fPaHBAJsiV0tTkgE8yB4FNt7i1eRRABuSAGgotqIRD3tDmgEBRAdFmb20RRQQ0Ir2pzQPyNQb4EfRtYAENBELKwLQYh0BREQCaIgbkgAaKtBh2gJ+gBhaAP1KoGQyAVjICJIAfCbQbhZhbW/uu2DiD6VqMEqoIcKHbYJXMgE5S38CrvG0RA8Z5BDKQNgx4QCoZA9KFBAQR7DIKtzEVQA/KmQROI9xqkQOljgwwIBZMlfKLNAakgrLKXljYHxPvUQiAT9IBCkAPRAW0OyAXlbazjoDYHZIIYCDS5FEiPaOlAT18Ol7ezDkENqNUMmkAqSICJoAeEOwwyIBEMgFyQA+WdBmMgFhTAUDADgncM5kBT0HybFr7+N2wdQHxUowQagjkQPDYIa6z0kUEERD9qlEAg6AHZTKMEIkEBxL9olDvo2K8aJZAKYqCYG6RA+sxgCFSfa3NAJAh2Ai+0OSATNIHgN20OSAUZkAtyIHipFgLxK23uHZYuiID8NZtLDERrDHpAVjIYAuE6g7BOjXf19gmU3zOIgViQAkNBBgTvG+RAUzABMsEUmAvmQBQZLICeoPwu2xdUgNougxBIBSkQfm67nQDBeoPgvRWYqR8hkJ0waAKxIAGKMwYZkAlyILpgMAeKrkH5/eUnskEE5IIYCC9qlEB6SaMEwssGBTAWBBEvK6gt4Yo2B0R9gxTIrmpzQPiZWgjEgjmQCcJdbC7T5oBUkADxDW0OKAQ5EN/W5oBgqKV/wAnarbdPIGoY9ICeYAgUgglQ+9BgDqSCYDfvyYISEO4xCIFEUAVyQQSUPzJoALGgCQwFQyDUv0gEDZau7deAsaAJpBW7JAUiQQbkmw0mQCqYA+HbBuGHXLLdIAIKZSRAVjPoAcEOgxyI3zEogKBuUN6zAgNBDcgF8RLe1eaA8D2DIZC+r80BQWQQfEQ/BCGQCppA/IE2BxSCDIg+1OaAQjAH4r3aXJOVnjVIl/Cx3j6BRJADuaAAyp8YzIFYsACGgvJett8yqABNQQ3IBHVgLmgC0T6DFtATJEAh6AC1/QYpkAoKIM417I9Z6TmDGBgIUiAXDJdwUcMG4p6G/QlFBSGQX9KwgVCQLKFvkAFjQQ4UgvkSrmrYLV7lM4MIiAQxEGYGPSAWDIFMUADBDW1uHz0V1JZwU5sDCkEK5Le0OSC6rRYC+RfaHJB+aRDup+hX2hwQj9RCIL+jzQHRXYMcyAUFEN3X0g9wCmOdMSA6aNADeoIhUAhyoHbIYAykggKYCGZAeNggiLkrBSUgF4RAuW1QBWJBBAwFDSA4YtAEmoIhkAZ/y9ZxkIU90LCBsaAJFIJ0CQ8NMiCdaNhAKJgDxSOD8BBdF0RLmGrYwEzQA4LvNewl/GBQAIWgfJiOCWpAVBjEQCpIgVwwBMKftTkgEwRt4Ik2BwQztRAoftHmgPhXgwwonmlzQPZcLQSChTZ3hKULIqD4TZsD4pdqIVAIhkD8mh2H8CjbP6YzBpQTgxiIBSkwFPSA4LhBH2gKhkAmGAFzwQSIThhMgZ5gDhSCBVA7aVA+RoMEFWAiCIGwo70A8W7rxwSI1hgECcdSEALBWoPmEsoGCZAJMiAS5EDwhsEciDcYlI8DFYMIKG00iIFQ0FvCWwZDINhkUACpMoITvEpoUAMyQRMoBCkQbdHmgFwwWcJWbQ4IqwbhSRa2XZsDUkECBDu1OSAX5ED4rjYH5IJyh71E2hwQ7TKIgVyQAlFDSwd6p3XGTtEPQQ2onTFoAqkgBiaCNhCmBimQCLpALsiA8lmDARALcmAoGAPBOYMCaApmQCaYA3NB8zTr+FTDBsIPNWxgLJgDhSA8A3xsEAHpJxo2EAp6QNHSsIFIUCzhgIadcpsKakAQG8RLOGiQAoVgCMSCCRAdNgjOsnRBCOSCJhAe0eaATJAt4ag2BwTH1EKgSLS5cyzsuEEEFB1tDshOqYVAmmpzQHjWoACCrjZ3nhqCGhBeMIiAuGfQAIKuDozPaAG5MmKf0QbSC3pA8xkdIPpU94vP6ALBRX0k+Yw+kCsjA9IDf38JgyX09KHlM0ZAdEn3nM8YA8Flfaz5jCmQK6PwGbMlXNGnWBd4rkMHRH09KHqoAT1B3UPLF42B8md6l/KQ+BodD31gcPNvW5OBWDUGHoZLuGkw8jD1Ky2AYqD3MQ9zoHbLYOGhcsH3FBjeVk891C64GnUPrQtu+zEQfK6eekiWMFJPPfT9SrMl3FFPPQyBiWDkYeqLFkDznnrqYe5rLDxUPnXbD4FMNaoeaksYq6ceWkDr6d+xngLht+qphwRIBB0PfV80A+YP1VMPQ19j5GHqt18A0UQ99TAHiu/VUw+Vi26lIRD/qJ56qAFDQd1DyxeNgdpP6qmHxNfoeOhf9Pc+kKrGwMMQCJ+qpx6mfqUFkM3VUw9zYC5YeKj0fE+B5Ll66qHWczXqHlo9f+8DuWq0PSRAHOh/H9dDH8ju22dDBhSvWcbAwxCorTEYeZj6ogUwXGsZMw9zX2PhoXLJ3/tAULKMqocakG0wqHtoLUErjYHwTctoe0iARNDx0PdFM2BeUU89DH2NkYep334BRBvVUw9zoNiinnqoXHYrDYG4qp56qAFDQd1DyxeNgdp29dRD4mt0PPQv+3v/stvtwMPwstvtyMPUr7QAip3qqYc5UHtHPfVQueJ7Cgzr6qmH2hVXo+6hdcXf+1fcbtsekitutx0Pfb/SDIh3qacehsBQMPIw9UULoLZbPfUw9zUWHip9f+/33W6rHmp9t9u6hyaQh1Z0BAz15DgBgmsGU6ApmAOZYAHMBeWrLCwzqAA9QQ0oBHWgdt0g8pc0gVQZLWAiiIHwhkH4GetQCxNg+sggB6LNBnOgKihfI2OrQQRUBTEQbTPoAVXBEIjeNiiA6g6DICNDUAPygwZNIDhkkALpZYMMGAgmQC6YA8EVg/D6Csz62hwQXFXHgNln2hwQXDPIgVmmzQHBdbXwBpsT1IDwhkEMxIIUKDSoIRB9p80BuSC4yctOtTmgKmgCkSAGEh2YNpALUqB806B70x26HhDqkvmAvehVWre4gfTbSQJkgg4wF/SAaGjQB3qCIVAIRkDtC4MJkAqmwERQ+EvmQPilwQJIBMFtGiTIgWK/PfWVP1+BXQcMYqBQP3rAWDAEih8MCmAsCIZkFAY1YCxoAsXPBikwnhlkQCGYAPFGW+kcyAThF/Rjj0EENAQJEAt6QCbIgW7ToAAyQflLMj42qAGZIAa6LYMUyARDoBBMgHyfQfAVt4cGFQKxBtUE8libA6KDBhmQCnJgIJgDuSAYcQP9PwdKQCwIgaGgOnKHrgbkgt4ddqtXWQBz/QZcvsvSc4MK0BPUgEJQB2r3DZpAKmgBE0EChA8MOkAiSP0lPSBXRh8of22QAbEgvgfMNGzgviDIyThkUAMagiYQtw1SoCHIgPiowQRoCOZAnBiE98k4YRABsSABihsGPSC8aZAD2XcGBTAWlB9QQ1ADwqlBDJR+0OaAUDAESoU2B4SC4GsyftbmgFDQBGJBAkRPDDIgFeRAoUHNgehXbW7McRBEQPBUmwOqgh4QCTJgqAMzAIKxQQ40BeOxO3QTIBbUvl2+F/5dexWgN9EHDlAIJkDtkcEUSAVzYCJYAOFjg/JDbiBBBcgFNaD8nUEdiAWRv6QJDJXRAoKpQQw0BW0gEwQTVvqd9aMJZIIMiN4ymAChYA6koUH4iEsEERDuNUiAedOgB4SfGORAaZ9BAYSC8mMyDhjUgFAQA9lFgxQoBEMgzrU5oCsIvqOGIAQKQRMYP9DmgEKQAeOxNgcUgjkw/labm5IhiIDxRJsDCkEPCB9pc0Dw2KAAIkHwPUdKw64B4ffaHJAJUqAQZEDpB7UQCAUFMNehmwHR9wbBD9yEghLQ1CVlIBMkP1JDr1IAk590EwLhz6pRcBMKKkAuqAHlJwZ1IBY0gaGgBQQzLQxoCjpAJkj9JT1gLugD0S8GGdATDIBCEP3EXq78PSsKRH2DAijUsfLPXCKoAeFPBjFQFAYpkG+wokOgJ5gA+ZsGwROepTYahEAuaAKDTQYJkAsyIGoa5EAqmAPBWYPyjM8XQQREghhIBT2gfV6bA1JBAbQvaHO/kCGoAe2L2hyQClKgfUmbA1LBBMgFcyC7bBD+ylwEERBr2AmQX9XmgOgzgxxIBQUwEJSfUkMQArVf9UgLpIIImAgaT93BbQKFYDgH9CrhM27CF7oJgVjQBIaCFhAsDBKgKegAmaAHzAV9IPpNCwN6ghFQCHJ/yQSovTSYAqmgACaCGRC+Mkifs9vW37eiQCEIX1D0ms4YEAsSIL9ukAGpIAfixwZzoCYoL8iYGkRA4weDGIgFPaBRGAyBWFAARdn2EvzG9jcY1IBsl0ETGAtSoBBkQPiBOgaUGgZzIBSEL8nYYxABoSABSk2DHhAKcqD0sUEBhILyK7YvqAHRJwYxkApSINhnMATi/docUAiC4L/x2KPNAQ1BE4gFMZDo0LWBXJACZf3jUheY6OD2gFCXzF9bgeKpXmXNCjRLVqMDZIIeMBf0geh1gyHQE4yAQjABausMpkAqmAMTwQII1xsEa90lZSBRRgXIBSFQLhtUgViQA+Gtf2BFS2xfEAPxXGcMaDzX9IFYUADFFqsRvM6rbDWoAaVtBk0gFKRA6W2DDAgFE6C0w2AOhIJwHXs5aBABhSAB4ssGPaAryIFMUACFoLx+BcZ9bQ4oBDEw/kybAwrBEBhn2hxQCIIyGTe0OaAQNIHwpjYHBAODDIgEOZBr2HMg/Fyb28D2BRFQCGKgNFQLgVCQAUMdugEQbDDIgaZgDJR1yQSIBbU32YteJQN6G3UTAoVgAtTeMpgCqWAOTAQLINxkUK5wzwkqQC6oAeXQoA7Egshf0gSGymgBwWaDGGgK2kAmCDaylyP/0IoCwVGDDMjVsQkw+FLTB3JB+BZNfmIQAakgAdq/aPpAKsiB9lODAkgF5U1kPDOoAakgBoIttpcUiARDIP/YYALMBEFIjU8MQiASNIHqPoMEiAQZUD1gkAORYA5UDxqUN5MhiIDqYYMYiAQ9IBUMgbhtUACZINjCOdWwa0B6TJsDgsQgBSJBBrQFEyAVFMBch24GRFsMgq3chIIS0NQlZSATJFVAr1IA6XbdhMBEUN62/CgwqACJoAbkgjpQrhk0gVjQAoaCBAh2GHSApiD1l/SATBl9YC7IgGinwQDoCaLtK1Bs+0dWFAiP69ABpZMGBRAKym+zjpsGNaAQxMD4lkEKFIIhMP7cYAIUgqBGxhcGIVAImkD8s0ECZIIMCN+03eZAQzAHYkF5BzUEEdDdaBADmaAHdDcZDIFMUADdzQbBTjIENaC71aAJZIIUKAQZkFcNJkCg2c6BeLtB/A4Z7+rQAU1BD8gEfWAuGALRewYjoCeYAIVgCtTeN5gDqWABTARB3V1SBsLIoAIkghDIBVWgvMsgB+I3/rEVfZeVqkERMK4ZxEAh6AHxQQ0byAQF0D2sYb9HhqAGdI9o2EAmSIHuMYMMyAQTIMw0bCAWhO+z9Ik2B5QeGSRAKOgBsSAHGt9pc0AsKEdkfK/NAbEgBho/anNALBgCxXqbywQIywbBLi4RhEC0waAJpIIEKDTsAkh369ABE0H5A162YVABEkENyAV1oPyhQROIBS1gKEiAYI9BB2gKUn9JD8iU0QfmggyIPjIYAD1BtJsng23/xIoCwZvWoByYVQwKINhoUG7Qwg8NakAuiIHBRwYpkAuGwGCvhg3kguBDMj4xCIFc0ASiroYNpIIMCO5oc0BVMAciQXkPNQQR0L6nzQGpoAe072tzQCoogOC5NvcRLyuoAfkWm0sTCLYapEAkyICwajABYkEBBNsNZkDW1Fuwz1gA4V69BTddRgnIlFH2GRUg/FjvyT6jCmTKqPmMOhB+ooPrMxpApoymz2gBYcsyYp/RBjJlJD6jA4T7dFf6jC6QKWMEhD3LyJew3zLGHiZAIph6WPiiwV7u/QN6CvZQ3utqVDzU97qiERAftoyGhyYwFLQ8dHzRFKgdsYyuh56v0fcw8kVzIEvUUw8TYC6Yelj4osHHNOiEeuqh/LGrUfFQ/9j3FChOqacemkDttHrqoeOLpsDwjHrqoedr9D2MfNF8CefVUw8TIBFMPSx80eATGtRVTz2UP3E1Kh7qn/ieAnFPPfXQBIaCloeOL5oCtcvqqYeer9H3MALSx//UegpkV9VTDxNgLph6WPiiQYsGXVNPPZRbrkbFQ73likbA5KZ66qEJhAP11EPHF02B7JZ66qHna/Q9jHzRHAi+VE89TICmYOph4YsG+9jtV+qph/I+V6PioQ4Mbv4z6ylQy9VTD00gFbQ8dHzRFAgeqKceer5G38PIF82B4KF66mECNAVTDwtfNNhPCyfqqYfyflej4qEGxHf12ANEsWXkQE9QAIUgOEDXDxqEQCqoARNBHQgPaVBAImgBuSAGyocNgpilP9UzHVBoLynQvafNAZlgAjRygzkQC8KDwDcGEZAJkiU8NugBhSAHsu8MCiCYGpQP8SrfG9SAQhAD4Q/aHBALhkt4os0BmSA4zMv+os0BqaAJFL9qc0tQkwsgPaIxtJmtIATCowYRkAhiIBckQPmYQQeIBT1gKOgDQWKQAU1BdISlh/Ye1APiueYClJ5pc0AoKB9dgbGgBhSCeAkvDVIgfKW5LKFk65gAsSA4RsbrBiGQCppAsc4gAeL1BhmQCXKgEMyXUDEoJ7zsRoMISN8yiIFgk1oIxKHBcAmbDcLjzPaExgCUTxrEQCxIgaEgA4KOwRBoCkZAJpgAc8EUiE4ZFEBPkJ6gHx9qLkvQXoKTvH9s0eaATNAEGls1FyAWZEuoaS5AJpgv4V3NpcM6BBGQvWcQA8H7mgsQR5oLUAgKINylzZ3iEkENKARNIPzAIAXS3docEDTUQiBWT+dL2GMQn+aSVGMAmoIMyAQ5MBcUQHTWYA70BAugEJTP8Bl1zqACpIIQmAhyIDqpuaQU1V4ioPuRNgdkgh7QaGouQCwolrBPczlLDUFtCYc0F6AQpEB22CADgrbmAsRHNBegEITnlu/a2hwQCxIgPKbNAakgB4pEmwPi42rh+eW7gza3BDU5A6ILGgPQExRAIQi6zPZTgxBIBTVgIqgD4UWDJpAIWkAuiIFyzyC4wEpvaC5L6BikwEyQAcEpzQUYCOZALgg/Bc4ZREBwXnNZQk9zASJBDgSXDAogFpQv8iqXNRcgumIQA6kgBXLBEEj72hxQCIIel3ymzQHRNbUQyK5rc0CuJhdAelljuMRsBSEQXjGIgEQQA7kgAcp9gw4QC3rAUNAHgqsGGdAURJfJeKy5ANFNzQWYCQogGGguVzgfghqQC+IlfGGQAsGXmssS7mkuQCQI+mTkBiEQC5pAfl9zAaIHBhmQCnIgF8yBcKzNXWXYgghIv9XmgOChWgjEj7Q5IA/sl6LwM+CaxgCUM4MYiAUpMBRkQHDdIAeaggmQCabAXDAHohsGC6AnKF/j9hBUgNpNgxBIBSkQ1G23EyB7zSDI+MBZYxACsaAJlNYaJEAoyJZQNsiBWDBfwkaD8nXWIYiA+C2DGMgFPSDdZDAECkEBdENt7gavIqgtYbM2BwRbDNIlbNXmgFgwWUJVmwNyQXiTfmzX5oBMkABpTZsDgh0GORC/o80BhUbZHHCC9NVNAkS3DXpATzAECsEEqH1uMAdSQXCLd0tBCQiHBiGQCKpALoiA8hcGDSAWNIGhYAhkiUZ5m6LvapRA+z31A0gFKVB93yADIsFkCQ2NEkgF4efAXoMIyAUJkH6sUQKFIAeyTwwKIGgZlIe8awtqQC6Il7BPmwPC/QbDJRzQ5oBUEHwBxNocUAiaQH5ImwOiwwYZEB7R5oBMMAeCRJv7kpc9bpAC4Uhvn0AiyIFcUADlOwbBV5wgQQgMBTUguGtQB5qCJpAJWsBckADRPYMO0BOkQCEolnBDoxyx0hMGMVA6aZACoWAIjAUToBAEd4DUIATCsxrlEj7VKIFYkAHhRY0SSAVzIOpplHfpmCACGpe0OSAW9JZwWZsDckGxhCva3D0W1lcLl3BVmwNSQbqEz7Q5oBBMgCjT5oBcEOZkXNfmgOKRlg409cXuBMgEc2AuKN+n6NcGIdATVIFCEAG1sUEDSAUxMBG0gfAbgxRIBF0gF2RA+VuDARALhsBQUH7AHfXGP7d1APljDRtof6eOAamgWEKhYX9NDUENSH/SsIFCkALRzCADCsEE6P6iYQOZIBwDvxpEQPDUIAHiuTYHFIIcCJ9pc0AsKH/D5p5rc0D0wiBewkKbAzLBEEhfanNA8Mog+JaMNTaXEIjWGjSBoGSQALEgA6L1BjlQCOZAXDYoPyRDxyEFwkc6Y0AiyIFcUADlxwZzIBYsgKGgPGEv3xlUgKagBmSCOjAXNIFoatACeoIEKAQdoPa9QQqkggKIWtaP2iN2+6ZBDLQrBimQCoZL2GwwAXJB8JiMLQYhUAiaQLRNwwYKQQZ0t2vYQCaYL+FtDfs7ul4ziIB4hzYHFIIeEO7U5oBYUAD5O9rclKXX1cIlvKvNAZkgBdL3tTkgiNRCIN2tzQFRwyD8npXu0eaATJAA6V5tDgg/NsiBTDABiusGU2AhKIDi7F9awgwIf9Dd4DMWQKyM4AeXUVqCMupA9Zr+T+2A+Ed9vnhoAkNBy0PHF02B+UwfOB56QPSLQd/DyBfNgfxXyxh7mPgaUw8LYKb/y5jgRz48n1tGyUMZCF8YVDzUf3RFIyBbqKcemr5Gy0OyhBs6H0DtJ8sIC06hIAImghgIfzZIgUTQA3JBHyg/MRgCsWAEDAUTINBsp0BTUACZIPqJS27qjgJm2m0PyNb9C5s+EAsKIKgYlH/mkjcNakCujBhINxqkQCEYAlFoMAEKQfBk+WfiBiGQCZpL2GKQAMFWgwyIq9ocUAjmQLhNm5txiSACStu1OSAU9ICgps0BqaAAgro29wsdEyRA+amOAxALJsBQMAeCuUH5V46DIAQyQRWYCyIgembQAHqCGCgEbaCm+zYBUsFkCRNN7uny00OTA7qCBIiuG2RAIMiB7LYmB0SC8pyOfW4QAeHQIAZSQQ8ovtTkgPQrgwKojjS5Z7ysoLaEO9ockAlSILinzQGpYALkgjkQ5AbhczZ3X5sDCkEC5F9rc0A0NsiB/KE2B8SPtPQXnI+FZgtEvxn0gJ5gCBSCHKi9NBgDqaAAJoIZEL4yCBa8fQpKQC4IgXLw3+1oA7EgAoaCBhC8ZtAEmoIhEL/5L/Vfo7P9xxo2UBU0geA7g3QJhUEGZIIJEAnmQPCzQfiSdfxkEC1hpmEDpV80bCAU5Ev41aAAgqcG5VfMRRk1IJ4bxEAmSIFCMASi59ockAuC4L+vwAttDggXaiEQvNTmgFSQAcEam0sO5II5EL5uUH6NDEEEZGWDGIg2GPSAXJABgf7GeQAUOjBDnzECwjWWkfuMMZApYwGEPcsI1gBrLaPkoQwkgoqHOpDq37QioFzW3eChCcSCloeOL5oCxQbL6Hro+Rp9DyPg/+9P8IDoLcsYe5gAPcHUw8IXDday21A99VBe62pUPNSAtKLzAcxLGjYQvW5QAD1BUKJBghCorTOoAamgDkwETSBcr0EBiSAGckHwOqdwoy29BgwETSAXpED7Le0WSAWTJWw1mAO5IFwH1AwiINhhkAC5oAeEOw1yIH3HoACCukF5PV0X1IBUEAPVd7U5IBIMgfB9bQ7IBEGZjN3aHFAIekDtDb07AKlgAkwEcyB806C8gVEKakAuiIByxaABxIIYGAraQLDRIAWagi6QCXrAXDAHsjMa5RssrKFRAu0P1Q8gFeRAdY9BAUSC8pvAJxolkAriJcQGKZALhkB6UKMECkFQYS+HDEIgOGzQBAaCBMgF2RLa2hwQHjGYL+GoNreRhQmiJRzT5oBC0APy49ocEJ0wKICwo829xeYENSDQ5JpAmhrkQKz3wgIYCoJN1NhsEAJNQQ3IBHVgLmgC0RaDFtATJEAh6AC1rQY9IBX0gYlgCIRVgxGQCHIgF4QhL3tfwwbiswYZUDpnkAOhYL6Eixr2ZmoIIiDsGcRAKugBxWUNG0ivGBRAta9hb6GngtoSrmrYQCZIgeCaNgekggmQC+ZAkBmEW9ncdW0OKATJEm5oc0B00yAHwlvaHJAJylUyvtDmgEIQA/lX2hwQjdRCILynzQG5INjGJblBGQh/1m6BQt/1VYFomw6/z6gDqTJaQFXfscVAroy2hwQobzfoeOj7ohnQfMcyBh6GQCYYeZgAkbYfbec2fVufHkAhyIBazSAHUkEBTARzINxhsAASQflt+iGoAOWd6joQC+rAUBABgTaXAeETHQegJJgD+Z5/ZdOvsRdBBIQtgwTIPzHoAYUyciDbZ1AAwX6D8g72EhvUgOCgQQwMBCmQC4ZLOGQwAcLDBsFO9tLW5oDgiEETiAQJkAoyoHpUmwMiwRwIE23uHbYviICwo80BhWAChO/qONQ5H4IakAuaQPk9gwSIBSkwFHSB4H2DDGgKBkAmyIG5YAxEkcEE6Alq77LSU9otMBCkQPyTRgmEggmQ/6pRvsclghBIn2qUQDTXKIFMkAHBC40SyARzoLHQKN/nZQXREn7T5oBc0APCV9ockAkKoBAEEZcE/9paCKSvGTSBYI1BChRrDTIgLhlMgGK9QRG5X81nS9ildymfsQAiZVR2uV/eQyBVRtVDDZgI6h5au9zv2TGQ7NGHhYcEyAUdDz2gKNv2gw8467stIwQyQQTMBTEQNQxSoCfoAYWgD9Q+NBgCqWAETAQ5EGrp8W5GucGW3gNKbxgMgVBQAGNB0GBhgtoSNhk0gTA0SJewzSADYsEECLcbzIFUEH64/Kw0iIC4ZpAAmaAHFIIc6O7Q5oBMUN7Dy76jzQFB3SAG0ve1OSCKtPQlNPWO+xGzFdSAQtAEansNEiAV9ICJIAPCjw0GQCLIgVwwBsqfGBRALJgBQ8EcCFpaaZOX3aXtA2NBBhSCCdD9QA0CMkG4F/jIIAIKQbKElmYLhPs0W6AQFEC0X7P9mL0c0GyBWBADpVibA0LBcAkHtTkgFQSfAIe0OaAQNJdwWJsDorZBBoRHtTkgE8yBNNHmWmzuuEEExCcNmsDkvEELKH31h237wP5dBt3fwR/4//wVO2GEB/7AMh4R6x+7ubx59uLv03+LzJHU6Wl5iIFBw16yDRz40CABNkQGHWBYM0iBxhtaNlD/6Q8toQcsCoM+cPg9uyQDriljAITKyIE77xuMgUczu2QCnNliGVPgohZWADe0uWD/CtzfaFACIq2jDHz0xKACHP3OIASePzaoAo13rGgNeOttgzqwY5tBBHyrV2kAVxcGTeBd7bYFzPQqMfCbRtkGvnrXYAI0PvmjttIDDlIPUw+12EHXQwHs3WtQP+igB6QNg/7BlYNc+iN2Gohft3hAvM7iIfF6i0fEZYtz4g0WF7zg6T+3jGcuDg7R/tPW3JKHENinW7MKbLtnEAEbdD4bwMffGMRA/2vbdhuIdD5TILF1dV2cEVd/sht8ANQFOfDkju4SINIqJsCWSwZToH/791u3gOOCGXDrI7tkDry6bhnBYe7WH+y9rQRkgjJQCCpA8KNBCJQFERDF/8Y6uoTjBk0gO2fQAsILBjGQ9QzSJUT/3noMxCWD3hJ2GvSBYLdBBkzWGQyA8jsGQyD+0GAERBsMciDXJeMlfGQwAYZvGkyBpG5QAOHHBrMlvGUwX8K7BgsgbRkEbZ6NQoMSMNElZaDYb1ABgq0GIZC+Z1AFooMGNSDZZlAHau8bREB22KABFG8bNJegS+K2m0u77eaStN1cOm03l7Tt5tJtu7n02m4u/babS9Z2cxkAgeYybLu5jNpuLjkQay5jP5eJn8sUyDWXws9l5ucyB0LNZeHnEhxxcykBqeZSPuLmUlmCLgmXcMSgCjR1R9WAXqRhA8FRgxawRtAGQkEHSAVdX6MPFIIBEB/TGIBCMAaC42oyEJ5QT4HopFq4hFPq2FHgjBq0hLPqx1G30joQXVI/lnBd/fDQ9tDx0PXQ9zDwMPIwXsIX6oeHmYeFh9IxBxUPVQ91D40l3Fc/gFwQA9EDNQjIBQkQfa2OAbkgBaKxWriEbw16S5iop0t4bJAt4Rs1eQkPDYZLeKSuL+E7g/x38NbvJxgfW3mW2WfPMhPi/RZPiQ9YXBC3LZ4RH7F4TnzU4gXxMYuDZCVOLC4RH7e4THzC4grxSYtD4o7FVeJTFteIT1scEZ+xuEGcWtwkPmxxi/isxTHxOYvbxOctToi7FneIL1icEn9qcZf4osU94p7FmVvvwK135NaXu/WN3fombn1Tt77CrW/m1jd36wuOr8SXND/iVPMjvqz5EWu9IbHWWyW+ovkRa7114r7mSXxV8yTWepvEPc2T+DPNk1j9bbv1J8TXNE+3/tStv0usfvfc+vvE6ndGrH4P3PqHbv0jt/7crX/s1j9x65+69Rdu/TO3/rlb/8KtPzjB+jV/Yq2/TNzT/Im1/vDEyrvRBwf0SyKwpmVQA67tNagDtQ8NImDXboMG8O4HBk1gyy6DFrDufYMYuP2uQRvI6gYJcGefQQf45mODFHjcNOgCGxoGPeClFtYHftbCMmAWGQyAC+8ZDIFDWukIeFcrzYGKVjoGDmulE+CqVjoF7quFBfBAK50BN7TSOfB+ZLAA1milwckV+EkLKwHzdwzKwDcadgV4SysNgaN7DKrApi/0DgFkewzqwNsPDSLg11sGDSDVOprARMeyBbT1KjGw+VuDNrB1YJAAv35o0AFuC9Jlxkt9c3XS/S7cAz4V9IGjrwwy4M6mP2jnA7h402AIXBOMgJP6fiwHzgrGwN0nBhPgi836TqmzAucqf8KaDIQn/7g1GfjthEEDeLXBajSBX79Tkz3EHtrAFn1lkfiMDnDgr1qPifdaPCDeuV23D/D65A9YN4DdT/QWCpw9YN2YAu1tujl8jTlwTRkLoPnX7eSf4u75Xu+LgBJC4u926JwDmx7Za9SBtdpJ5DOawK//w/pL3I5tI22gfFPtBD7JDFKgtd6gCxz8s3Ygibet1RsWcP/S77MGA7EyRsDpB7bOMTBRtybAZmtGQbxOI5m5hAXx86reak6vTigTf6WEikuoEu/UGmouoUH8UO1unnZDj4HORn1kAJpph/j26/qAAG5Udb8DL9br8+C0m+kAeKOi83vaDTUHrv+s8wtk663GFPgy0vkF1mkr8yXs1fkFJl2baukMn1z6TCmfcRkh8IF2WwXCfbbSOrDvlm0/AoYXLKMJnNXgW8DjszrCwNq39LEMrFPHUmCkGl3gs28sow/smllGBuy0N40hcfKBjjDw6rK+5wSu6XRMgM9uW0YBvPGGPkCBILDdL4CjqhGkfNR/awstA5fmenoCbqilVeCiVloDelppBPyq49EAdNBbxAd0BmOXkBCPVaHjErrEa/VA1gPu/mobyYCOztcAOP6R3hOAL8vqH7Bzg8ECaAnKZ1fge0EVuKgaEZCmdkZbwGFBApy1yXeXJSzOiJ/o/XAE1AUTYM9jgxnwvlYRnOOTUZdUgLeUUQOaYxtrAwgFMVAXdIDjKpoCeqPuEZ9XwgC4KciBrwVT4KTWNQdiQem8+weAEPj2kkEd6G/WDIDuXYMmcEgZLeDWwKANvKuM5Lz/mAIO7zLoA58LhsAZwRi4IpgB5ap+tQHGNwxKXW6/LQaVJdwyqAL5CYM6MHxg0ABOCVrAdw8N2sDNLw06wGufGnSB17cZ9IG0azAA4sRgBDzR5sbAYcEUuPytwQzYoowFcO+2+nGBomX1A3i8Sf0AjgnqwK7T6gdw+wv1AzhyRf0AymfUD6B+Uf0AeuvVD+DJKfUDuKGXHQHDteoH8HpJ/QDevax+AJcEC+CcLil9ytvcHfUD6DfUDyD4UP0APteRagAnP1M/gNaXdke1gcu71Q/guebSBTYH6gdQVcYAmKTqB/DjBvUDaL+pfgAHVWMGVD9SP4BCkytdpGM62hVgUFc/gD0j9QO4L2gAu/vqB3Duc4M28LagA4Rn1Q/gq0/VD2CSqB/AE41hBLxZUz+Ao4IpcF8wA77er34Am/epHz0eI66qH0DUUj+AqS6pA2cFDeDD19UPYMPb6gew7RP1Azi7Tf1YgobdB5KD6gdQD9UP4L0D6gew5WP1A7i3V/0Avt+pfgB3J+rHJY62oAKEj9QP4Ge9Sh24fFL9AJ5rty3gtKANXFCTO8B3gi5w8o76AWzXgRkA36rrI6D6jvoB1GL1A3i5Xv0A9t9TP4D1X6oflznrGlQF+GiP+gGU16kfwHvvqh/Ay1f6NAVSjaENbBV0gM3afhf4RK/SBw4dUj+Am3rZEVC8oX4A36rGFLi3Q/0APtApXCwz3lM/rvAMeEH9AHZsVD+AowP1A7hRUT+AdZsNWkBLGW3g2jn1A9imlXaB2+ppH9ip2Q6AE2vUD+DwdvUDuCuYAu231Q9gfFD9AK6H6keft76P1Q9gZ1f9AMZn1A/guObSAM6k6gdQFrSBjrbfATZrLl0g1HHoA090HAZArMmNgPFZ9QPYL5gC04vqB9ATLIDJefXjKl8wrlU/gMcaQxV4Xz2tA0GsfgBb9qofwJGO+gHE2n4H+OEd9QN4p65+AOlX6gfQ1lxGwOmP1A/goopOgVOX1A9gh87pAkhy9eMzvqJQ0Qqwu6l+AHfuqh/ALb1KA/hov/oB3NM5bQPhSfUDyKrqB/Bim/oB7LuufgA7tqsfwJOS+gE80BmbAkPNZQZM76sfwNNc/bjGZ6U2VwG+6KkfwCtBHXhd0ADaH6ofwHvKaAOXdD7Sa/yTpr71J04s7hEft7hPfMLijPikxQPijsVD4lMWj4hPW5wTn7F4TJxaPCE+a/GU+JzFBfF5i2fEXYvnxBcsXhB/anGQrcQXLS79Lj79+wnK/PCSvocjvmxxSHzF4ipx3+Ia8VWL68SfWRwRX7O4QZxZ3CS+bnGL+IbFMfFNi9vEA4sT4lsWd4hvW5wSf67hEw81fOIvNHziLzV84q80fOKRhk98R8MnvqvhE9/T8IlzDZ/4voZP/EDDJ/5awycea/jE32j4xN9q+NdX4ocaPvHE4jLxI82f+LHmT/yd5k881fyJv9f8iX/Q/Il/1PyJC82f+CfNn/hnzZ/4ieZPPNP8iX/R/Il/1fyJn2r+xHPNn/iZ5k/8XPMnfqH5Ey80f+LfNH/il5o/8SvNnzj4YzZ/4tcsnhKvsbggXmvxjLhk8Zz4dYsXxOssDm7wt7EWl4jLFpeJN1hcIX7D4pD4TYurxBWLa8QbLa4Tv2VxRLzJ4gZxaHGTeLPFLeItFsfEWy1uE1ctToi3Wdwh3m5xSvy2xV3imsU94h0W94l3WpwRv2Px4Hfxmd9PMOSH79oPR8TvWZwTv2/xmDjS8Il3afjEH2j4xLs1fOKGhk/8oYZPvEfDv7kSf6ThEzc1fOK9Gj7xxxo+8ScaPnFLwyfep+ET79fwiQ9o+MSxhk98UMMnPqThEx/W8InbGj7xEQ2f+KiGT3xMwydONHzi4xo+8QkNn/ikhk/csXhIfErzJz6t+ROf0fyJU82f+KzmT3xO8yc+r/kTdzV/4guaP/Gnmv+AT37Nn7in+RNf0vyJL2v+xFc0f+K+5k98VfMn/kzzJ76m+RNnmj/xdc2f+IbmT3xT8yceaP7EtzR/4tuaP/Hnmj/xUPMn/kLzJ/5S8yf+SvMnHmn+xHc0f+K7mj/xPc2fONf8ie9r/sQPNH/irzV/4rHmT/yN5k/8reZ/iw9/zZ94ovkTP9L8iR9r/sTfaf7EU82f+HvNn/gHzZ/4R82fuND8iX/S/Il/1vyJn2j+xDPNn/gXzZ/4V82f+KnmTzzX/Imfaf7EzzV/4heaP/FC8yf+TfMnfqn5E7/S/ImDP27zJ37N4inxGosL4rUWz4hLFs+JX7d4QbzO4uA2H/4Wl4jLFpeJN1hcIX7D4pD4TYurxBWLa8QbLa4Tv2VxRLzJ4gZxaHGTeLPFLeItFsfEWy1uE1ctToi3Wdwh3m5xSvy2xV3imsU94h0W94l3WpwRv2PxgLhu8ZD4XYtHxO9ZnBO/b/GYONL8iXdp/sQfaP7EuzV/4obmT/yh5k+8R/P/nM9/zZ+4qfkT79XrETf1y8GQ5wGdj9/F238/Qe13wYFlUP9dcHAZRL8L4mXQ+F1waBk0fxccXgat3wXtZRD/LjiyDNq87ieas1tHO/w//99/+CeXVTb/n5X/7u/c77dDA7wUtIF15w0S4MT9P7iEFHjjxZ+wgwI8+J92UIiPW9wnLv6GHRTin1L9mrCs+I695hA4p4wRcKimf+4FHjzVX30Bt961jAnwWmEZU+DRtwYF0Nxpl8yAOyo6Bz79zWABfCYItqzAFkEJeENQBt55aFABGnV72RCIlFEFNghqwLFXBnXgB0EE3PnGijaAg7sNmsA+vWwL2KiMGPjtpRVtA/sXBglwILBLOsAz7TYFqqrRBU4LesA5Fe0Dpz6wohlwSJcMgPXa7RD4WRkj4BtBDvwkGANPVWMCrNVepsD32ksBrFeNGXBeNebAbmUsgI6KBltX4LouKQH3dQrLQFvbrwCXVTQEhoIqEKloDXhfUAe2CiLgrqABbNJKm8B3ymgBnwhiYKcuaQMvtbAE2KOMDnDqG50P4NF3Bl3gwwcGPeCmGtQHdoQ6H8CXGw0GwE196TgE7h01GAFBxyAHJrrVx8APgskStI4pUOhVCmAimAEzwRy4J1gAJa0jqK7ARWWUgLIyysBX2ksFuKGehsDwkUEVePDQoAbcEdSBe88MIqCnog1gqoU1gc8FLWAuiIFrgjZwRZAAC0EHqGi3KfCVMrpAT/8Lt8S3GvZx1Aeu/Ts7HcSdf2SHg/hC8AeWMASu6b8+HgH7PjfIgcM1e40xcE01JkB2XW8ewMeXDQpg90WDGXDynMEceHnWYAFcsJUH25ia7axEnFtcJj7z8PfZyQCubLfP0RB49weDKjC1l6gRX3poG6sD7+uKaJt7HmgAJ9SLJnDTaraIb2kVMXBb0AZeP26QAOd/NugAZ2O9bwB79V+XEb9ncY/4Y4v7xGcSK5ABNyxhQPyBPjCHwM0T+kwBWpfsFOTAleN6iwDWXzOYAjfftn3Mfgf/7zsbPYMSH7K4tH3lgrf3WDPLQP+oRrh95YrD+q2CuG1xxAXrrliFBnBHFVquQuwqdLhg+qN6DZxVhR5XHNGTP/FRiwfExyweUmDrWSswAnbd1Q3l1jRxa5pxwVuJVZgDwcIgeHt1hRKxKoRv83CnA1AFdADqrkDkCrTIv/JXrW3El9dYoxMuSNRH4uMW97gg/9Eu6ANP7xsMuOKE+kZ80uIxF5zWE9oE2PijdaHgio765jYR1PjY16Eu1VyFSm11hZBYFepc8P59fVIAX/1pu/254JT6Rnza4jbxGYtTrl//l+xOJv5cfzzbA7ZO9AAATPT+kQG79WE1AL5SxrDm7ooR8IVeJa+5O28MfNo0mNRc96fAbjUz2LEC48/tZUvAI62jvMPdCRWfEQLPEoOqz6gta/x1m4hPiIBD2lvDZzSBqwPLaPmMGLj2Qs/+wANlJMDLTXq28xkpEGksXZ/RA957ptH6jBw4/sJgDAyPG0yAdW9qLMCDM3puB+av6aMXKOsBaQ4UugsW/lWCnSuwTXsp7XTvkmXg4Z+xye50HwYhsNXiKnGm16gBu3Vr1YHbyoiBTtWgDdw6qyfune6gd4BChyHb6To68AsduoWOdrpbIwc+158wj4HnpzQUYMNYn4TAJ8oodvqhANsmGgowr+p5aKd7Ay29swJppae/2EbOP7eXqb/jNhcB/z+uzvVf5a779/vJPp+PT3/7yT6fz+d9/2uhixBXCCGEEEIILSuE0CK0CCGEkCWEEMJ+7d7X/Lx+fR6Ozz3G+xpzfuecY/T9zuWe26fNsWVyHlX1Wg37YrCLBAye/acwPQg3fqo9RJgtB2QfIZIIHoMt9opkyH/ksqpVmg5oR0AkEBaCnUwbIZWeJqTNzhFw/7Nu2qZtwZbSdkyUQdRU1tMkpb+1azmi7Vl1QMwFxACHlYfCf2OMkDsahMhWW7DRrRPEFTU4OCTf6gluNUR2q6WVA3E1IEo4vOmFiCrCjpRqjGdRB1EPiAb2tWC3CbigrHqO7HtWAxDXVZsNGdlG0UoEQnybnyAIozuqDdsmiBsBkcJuBDtLwNPbeqXjyCJCZV7HOoh5dTHYNzURBBxYUC+3zU8HhLtxFU4QdzVwR0S2GyKKsGNWZXL7NCK13RDZ7fYAcwg1IfKGKDuihlB6oGKEsGsUhAaIlvpc7HvB7jiyj7CkrTWAcF1ZDUHc10GQMUQiY1klM3goq1RmgnigkwC7rZPAkcWMZVVCeKesyiAe6iTA4doz/Rlkxp5YG2GrsuqCeKSTwBHjjD2xyA57YtEd04gkDsfPhvMos8OyyCLc0NLLg3isk8ARVUfUEEqqD3UQHW0A7Cc6CQhY/VLL3ZF9FwYgnmpDYD/TSbDTkPGdNlcJF5I7p5FZRxR22joqulAC0dUGwX4e7JojmzttHbVcaBuyj8Nr/a4f7bSpGSOsvqWzYdcE8UIbBPtlsBO7DJneZVOTQbh+W2eFIYuOqOyyqakifNfBWwPR0wbBfhXsliO7u2xqeggb7+qsMOTAkGMCukLGsjbQuAuJ7ASxEBCZrCHyWZv+ggslQ1RxSCzWy1ePaCJskEcLxGttGOx+sHsERBUwdOTIkWNDRnZP7DfBju+eBDRHaq1329SkEZ7IIwPibUAUcKjJoeyIiiOqIN6pPODwXml3dtu66iIckkcPxEAbBvt9sEcEPFdAdI8hY3sMGd8zjUxgf1C5IGC3AnJ7rEfIIxyQRwHER20g7GGwKwRsUkDdkQ1HNg3Zwv4U7C4BL1arpd5ji2SIsFYzMQLxWRsI+0uwY3t5BSBkcq8hU3sNmd47jcxgj4KdJ6Coxr/kyDLCnJAVQ1axlWWDgL1Cth3ZcWTXkD3LckjADw08krPHE0XYLGQsN42MY39VP0bAQMisI3OOzBuygP1N5YeApxp4zZF1hHtCNgzZtCw7BNwWsu/IgSOHhhxZltF9vBUUMrHPKzPCvJCpfRPEd/VnOJwRouiIkiPKIMYqPzgs+11nLsL539WfIewUogPihzYY9k+VHwL6ymrsyMh+zj8ho/unkTFsIZMEjITMIPw8qP4NoS9kDsQv9W847JzRL7n9Nle1/fazqw4iEn6itnFYsk392n7v1xwxMMTQ7MgBAk6qEh8wQuKAr4oDE8SigMjisHqrKrEjige8NBuibHaNgPlZVWZPouX/jTaIxQHRx+FYRpXYkxg7IpKfRkTNTuTpxsrq1/L+hgZh7mIQsiCWBEQOOxrsoiMrjqwipFJaJYasY/8W7JYju3mrsz2EbUL2QSwNiAH2smCPHRk7aC1hHOG3o+rfDk4QsYDIHDRE/qBlVUAoSiiCWB4QJewVwa46suFZNRF+CdkCsTIgeo4YelYjhLTmagwirg10aGKvCnb8kCFThyyr9B+C5ioDYnVAFHBYmlb/dsiyqiDskVAF8bs2EHYi2E0Czj/UB0BHdh3ZM2Qfe02wRwSc+Othtxy2F2oxhMv68RI/PCGsDQ5pHI7qDVvOEXmExfpdXQCxLjhUcOi8CIi6IxoI90daFCCS2i/Y64PdJeCGkANHDhGaQo5BbNDIC7QURR2ZBUOkCjawdGGC2KiR4/B6s45MR5QLlkUFREr7A3uTZoKAdeFrV7tgS6CD8EDELoTN2i7YWzQRRowcsaUe/UPQMGNHJoS05gGHbWERZY/YKHMIT9Ue5CFs1WbB3qZpMWLNiXWEbE+tlxGbRuwQ8OOJjktHDhA2vFLrBWK79gp2RpXl6HSSiaNGTCK8FjF1dDrJNLaSzB21JIuOLCF8FrIMQklWsJVknYBPOqdajmwftefdAbFDE4NDrKDT0xGRY1wpVFbRYxPETs0EDq+FyBwzRBZhLETOECUcNNtVJ9QQXmqR1SFothvYmu22EXtO7CPs1yIbGHFoxEhxmhgvGjGBkNEok8Xpx5fCzmhajFhwYhFh8UIgloxYNmKNgPP/OmwUJ7YQZvRiqA1hl7YSdlbTRED2anizOipanzd2IXJ8gtiteTluiPRx6/MyLmQNkTO7SMDeQ7om7ITqcV9BIPZo72Dv1cwQ0L0akN3j1nz2EO7pafRB5NSE4bBPnXrshCHiLiROTBD71IThcOWVmrATNo4CwoGxmjAQ+7WXsA+oyBDQXqZvtI5sOrIFIq/NhH1Qh4YTxi5ETpqQRDi+Xq/E3CPrQglh5Wu9AnOPmgvtk3aLqucefRciJS4nqADGS76vXcgizET0c8o9ii7UEDb+nzDl7tAq2YfzPsIxDWXkIWMXIjOTx3RINQz7sJoesxMz3NfRYksjPNc/EZqZ8aGDKGigOMz9WdiHHlBFiPYDsgbhiAaOw53H4XToOqI3YwdMH8RRTQQO3/6z/uFkI8RP2cvUxCmuY2nb4bD5jd4fOaKAENHzKYIoaqA4bBhrm52y5q3pWbRAHNfqxT6hgROwVFkNPavRKWtrxiBOaknMcm1MMzHL+RIKRGrWiOlZyzoDYUYrwIgFAi6GlV2etZO4gvDzfiBWIZzS3sCe1XFkxI4TuwhZTWQPQlmbHPu0pomAj38KG6PsP4TK9p+Il7lXpq2CfVbTRED2Xli1OUfmXSiAqGjrYJ9Tc0fAST3tuhMaZaseTRDntZcM2SXgbF/3Yhw5RPigmzMjEBc0M6epHj01NacNkUI4V9Epcpo7L5oJHLbe1y0AR5RP20e0CoiLGjkOVzQ3bUd0EHJqbLogLmmkOBT/uf7ZWyNEz9gxEzvDpRcNFIc74XJ41gk5hF/fVLwh1DROHB4HQs0JdSc0IMxpmDgsW6qz0BGDM3ZQDUFc0TjPThzWCJE467X6rCFSZ7nyooHi8ELvKoqOKLlQBlHXSHF4rO+9LY9ou9AFcU0jxaGi7TA+668LKyZEK9yS0UhxOCuHjEdkXcgbooTDGm2QqkfUKn79B8QNjRSHzyd1nlXsQnLfEQMQDZ3z5zg8zuoAQ4jqFl3inDUYyXPcxdHBjsPDXepqELQWi9i6uVc2QI3/fct1HU/n/O6fCx0QN3Vw4/BBa3PkEWMXoucniFs6qc/zo2pGx9F5i8ict8M+B6KpkxmHYkvHkUdUz9tdqRqI21re2Hd0MhOwTQdY97z/unChD0ILbYzDyqM6ny5YRPyCf6K/ML3QMjhc0Fuv/AVbJYULtkqKIPSQqzic2aw2B0GrpOmElhF6OBQvq6tBSH9RDXLEGMRddTFVPj7kQ9qpqt08T1ft40+myu0qrXazCwTsfx2Q5apdyK5U7RNV1RA1s5sE3D0SCB3PsutZ9kDc034we0TAIWUZvWhZxi5alvGL04iE2WkCxkcDIXfRssxftCwLIO5rv5hdIeC8sqx7lg3PsmmIltldAh5qLgee5dCzHIF4oP1jduwSna6yTF6yLFOXLMv0pWlExuw8AfeVZemSZVm+ZFlWQLS1v8xuEHBMWbY9y45n2TVEz+whAev0xCOXLcvoZcsydpkre9qAZqcIOK0ss5cty9xlyzJviILZZQK2658Pq3mWdRcaIB5pA5rdISDd1xd6z3LgwtAQI7OjNX4HlEOWiZollUQYzAQhVePWoDag2TkCNirLYs2SKiEcklA2RMXsOgG/60j2JNueZAdCR/vP7AEB3xf0Ad+TjMxZktG5aUTM7CQB507ryJ7zPzZDWKxlmQPxRL0YDpGdOqLn/AImwswqlS9DtHFYeU11ec7/7A4h8rfDEoHwVK3YFX7mL9ELpSv+0g/hwyutkSvTSWRxiCmi4IgiQl7vIkuGKJtdI+CJ5q55xb/XX7FN3wbxTMUIhwU5jBwxdkTkKlc0VXyuck7IIX3VEJmrhsiCeK5ig8NmOVQcUXVEDcQLFRccbsih64ieI/ogXqqY4PBrtU7Iur9BqNuBl6xPT2cGh5gc8o4oOKIEQtNZxeGysmg4oumINghNZw+HBW2IoSNGjohcm57O+DX+AEJZpK4ZIn3NEFkQms4CDplzqpPXbNdVEG7Lowaip8Meh31y6Dii64g+iFc63HHoVVQHrxsidt0QievcYNVhjsNGIXKOyDuiCOK1Dm8cVsuh7oiGI1og+jqtcXizQT8XHTFE2LlRWxfEG53ON/hNKkTyhiFSNwyRucElV3VDOBwXouSIsiOqIN6p+8Ghu17L1xEdR/RADNTt4PBAWUQahog2DBFvcC9W3Q0OsapeCjgih3BaHgUQH3Qc47BGDjVH1B3RBPFR3QsOjQtavo4YOGIEYqhuZZ4vtee1fOcNkZw3RHqeq7LqTnD4rCyKjig5ogLis7oRHOZKqjzz/vezLnRAfFH7gcONrVq+83bkRG6aELs5jUjicFVflDM3bSBZR+RBjNRu4JC8olc/jqi50ADxVe0GDrc0F72b/rHDhQGIb+o3bvFZUnMRv2V5J1xI3ZpGZHG4rbko3LK8i44og/iu/gKHbZqLpiNaLnRAjNVf4LBWRXd0y/sLhJ95PeUml0LVXzRZe6pm6aZ/akZIyCNniCIO8zpyKk2/74dwQIg6iJ/qL3CIVlR5HNFDeJLUQwXxS/0FDte0U2O3DRFH+CpE8jb3RsNtggwO2aKW722bzoILRRCLAqKKw88z6i88oulCC8TigOjhsEZd/dAjRi6MQSwJiPgdTq0TWr53LCLtQuYOlzgDooBDf0bL1yMqLlRB/BYQTRxuLtfyvePvpx3RA7E0IEY4zGouonctIuZC/C73PAMijcOMEDmPyLtQABELiAoO5zSddY9ouNAEsTwgujh8FGLgEUMXRiBWBESsRRazWr4ti0i5kG5xNTQg8jgs1wIveUTZhQqIeEA0cNhRUuXxiI4LXRCrAmKIw9vjOpPuWUTUhdg9bpMGRAqHxVqdWY/IuZAH8XtAlHFoaTprHlF3oQEiERAdHGLKou8RAxeGINYERPQ+2+yYKs99i0i6kLrPjdOAyOHwTIiiR5RcKINYFxB1HD4J0fKItgsdEMmAGOCw/JzOJI+IPLBfiNEHXFINiCQOy87rTHpgiKwLORAbAqKEw2FlUfWImgt1EBsDoo3DDq2Lnkf0XRiASAVEpM0PbiHibYtIuJBsc681ILI45IQoeETRhRKIzQFRw2HvZp1JbavsLRc6IFTN+jgs2qUzySPGLkQfTlezxEN68B06kx56f+FCDoSqWRGHzWmdSR5RdaEOQtWshcOFbTqTPKLnwgCEqtkYh28aSOyRRcRdSD6aLkUZHEZC5D2i4EIJhEpR9Q/EFp1JHtF0oQ1CpaiHw05N59AjRi5EHk+Xovhj3o5mdCY9toi0C1kQKkUFHOJanWWPqLhQA6FS1MThgtr4jkd0XeiDUCka4VDVdEY7FhFzIdGZLkVpHN4oi5xH5F0oglApquBwStNZ94iGCy0QKkVdHD4qi4FHDF0Yg1Apij0BsUnL94lFpFzIPJkuRXkcFoQoeUTZhSoIlaIGDmMh2h7RcaEHQqVoiMPK3Vq+T/2Qeuqf/J5Ol6IUDg+3a/k6IudCAYSKQBmHO0LUPKLuQhOEikAHh64QfY8YuDACoSIQfUbLLYfEMz+kXEg/m66pORz2ajqLHlFyoQJCNbWOw/iSftk+s99mbRe6ILaov8Dhhr4yjD0i0jUh1p0g0uovcHhW17UGj8i6kAexVf0FDvdq+mXrETUXGiC2qb/A4al+9vc8ou/CEMR29RfP6XKURfy5RSRcSD3n2rv6CxzWzen1m0cUXSiD2KH+AocbV/X+wiNaLnRA7FR/gcMTrYuRR4xdiL7g9r36ixf8EtB0pl9YRMaFHIis+gsc4prOikdUXaiD2K3+AoeCsuh6RM+FAYg96i9wWFrX8n1pEXEXki+5kK/+AocTyiLvEQUXSiBy6i9wOK8n0vCIpgttEPvUX+AwI8TQI0YuRHpcyFd/0eNNoxCpnkWkXciCOKD+AofZ61q+HlHp2VvXGoi8+gscZrTAO47outAHcVD9BQ5HhYi+8kPKhcQrrqSrv8ChIkTOI/IuFEEcVn+Bw0/NRd0jGi60QBTUX+BwV4iBRwxdGIM4ov5igQ+AOsGTC35IuZBZ4Nq6+gsc9pxV5VnwX7YuVEAcU3+Bw75d6i8WvL9woWeIIQ6balq+r/2QciH+mqvv6i9w2H5C/cVr/2XrQh7EcfUXOFxR61p77f2FC01DdHDYcVL9hf9HBy4MQZxQf9FngafVX/S9v3Ah3Z9G5Po4KIti33/ZulAGcVL9BQ45ZdHy/2jbha4hBjhsPqX22P+jkTd+/fkN9/rVX+Aw3qb2+I3/CHJE3hAlHAYltcdv/P2FC3UQM+ovcLippdXziL4LAxCn1F+85aHOqD1+axEJF5Jv+YsE9Rc4DI+rPfaIogslEGX1Fzg8FKLpES0X2iBOq7/AYcOs2mOPGLsQecefMai/eMd0qgdPv7OIzDt/yoYo4nBAS6viEVVn1gzRwuGTKnvXEb13dr+2D0L3awfYul87JiCl6Y0N/E26C4kBf9KhfgOHw5revEcUXCiCqKjfwKEkRMMjmi60QJxTv4HDDg1k6BEjF8YgzqvfeM9fcQmRem8RaRcy7/mrD/UbOOzQcVx+7z+KXKiB0HQ2cfihpdbxiK4LfRCazhEOSzP6pfvBImIuJD5MT2cah/0aSM4j8i4UQWg6KzjMClH3iIYLLRCazi4O3y+r3/jg/YYLYxBV9RsfeSNd0hn10d+ku5D+yB/RqN/A4YdKU8kjyi5UQFxSv4HDemXR9oiOC10Ql9Vv4HBgq86oob/PcCE+nB5ICoftQmQ9IudCAYQGUsbhpBA1j6i70AShgXRw2DHQGTX0SjT0v7YCUVO/8YlKf0jt8ievRAiL5/WUP/EHQeo3cHhySMvXEaVPlkUZxBX1GzjMCdFyRNsRHRBX1W/gMC/E2BGRz95vfJ4g6uo3cNiibjjz2RDZz/YPoOdAXFO/gcNvQlQdUXNEHcR19Rs4JIToOaLviAGIG+o3vnATQj15/IsfUl8MkfwyQTS0wLHn1X8QEBOy4MiiI0uGLGPfVD9CwDohm45sObJtyA72LfUnBNzTIhh98Ur1xf7OLzKaIJrqT0bcnLipM2zkL2lHtiGyIG5rQ2DfUb9CwNxpnWkj/9KPsEF/A1kDcVf9Cg6xnTrTPKueI/ogWtog2PeCPSbguprS2FfvVxAWaaCJr/xJhPoVHHarQc9/9UPPEUUQD7RhsNvqXwh4UVRl86yajmyBeKj+BYcnm9W/eFYjR4xBPNIG+sbtdfUz3/gyorlKffNKhxARMgOio34Gh82aq/I372ccUQXxRBsG+6n6GwIer9W/1+TI7je7rdQD8UwbBrurfoeAa3X98v7u71e+GzL+fRqZwH6u/oeAjfd1Zn73/seRBRAvtIGwX6ofIuCbXrbWPcuGI5uGbGH31B8R8PqpKqdnOUSo6k++RyBeaUNhL6hfGrMO9aIpOfb3M2NDpsfTyAz2a/VPBKyYCYTS2L8HObICoq8Nhq0sGwTc0VuktmfZcWTXkD3LckjA+7TO2B/eX/0wZOwHd3+14bDfqhwRsFDT68kf/hLakXlDFrDfqRwRsOSZKrNnWXdkA8RAGxD7vcoRAR/1xPue5cCRQ0OOsD+oP/vJsaEnnvjp74N+GjL1k1u72oDYyjJHwIKeePGnv8R2ZNmQFWxlWSdg0dYQ0PIs247sgBhqA2J/Urki4Kee+NizjPwyZPTXNDKG/Vn9HQEftcczv/xNgyNzIL5oA2KPVL4IWNATr/7y71eOrBuygf1V/R8Ba/XEe55l35EDEN+0AS3LSORP/z+goycej/zJXpIjVIVMRv40hUxhK8ssAW/PBULBkUVHlkB81wbEHqu8EbBJF06bjmw5sg3ihzagIfsEfNVJNIr8yT7aOzKyaIL4qQ2I/UvlbdEkYKh1mV5kWWYWGTJryBx25G+EmSLg6hud2YssyyrC0X06q0AsCog69uJgtwjI6f1W17PsIfTzWlUglgTEADsa7DEBi/5B2F2LjRhfbEkmFk8Tk9giZghYq6eTX2zjLjiyCOK3gChhLw12lYAnejoNz7K52MbdArEsINrYsWD3CBj9/bC5nDjyJMdGjCyZJsaXTAJ2/u2wt5bYsNMIT5r6l6ogLA+ELPaKYBcIuJjUge3ICsKrRvCoglgZEDXseLCbBGy6pDZgiY27ixDRT6keiFUB0cdeHewRAcf1cKJRQ8YQ1swHZDw6QfweEAnsRLDTBMyFh5NzYj5qU1mAoCSL2EqyQsDbQKw7sRG1mWxaji3LsUvAyU06rh05RNhxTscUiDXae9hrgx37bRIQS6sJ+M2edwph9S21lr9NIzPY64KdJ2CHsiwhnNbn3DLCyZs6pkAktfmw1we7QcCmGTUBCH/uVZ0LXRAbAmKIwze9JIsstYFGXYgtnUbEzU4RcFpHY3apPY6cCwUQGwOijMPzso7jpTaOOsK5G2odQaQCooPDoR06fn0cA4Qf19Uqgtik7YS9OdjRZZOA23UV9WU2juQyQ6aWTSPT2FuCnSNg4ZTO32U20NIyG2gZRFqVCYdj23XeLrOBtj2rjmXVxd6qykTANjVdYx9oJGbIaGwaGcPeptJEwMeKWsOYDTQbs4HmQGxXKcLhU1ZFO2YDrXlWdcuqgZ1RKSLg6HUV7ZgNtO/IgSGH2DtUi5ZPArpauvHlNtDEchtocvn00s3icFBLt7DcBlpcblmVQCirMraWbo2AppZuc7m3fo5sG7KDraXbJ+CVlu7IBzr2gUZWTC/dxAqmX0s3vcIGmllhWWVBKKsctpZukYCtWrqVFTbQqiNrhqxja+m2CPigpdtdYQPtrbCB9kFo6Y5xGGrpxlbaQOMrLavEyumskthauhkCjmjp5lf6oerIoiFL2Fq6VQLuPtI/4eJZNhGye3XWgNipDYW9S70dAeeO6iWPI0eOHBsyEp/YWZWb+CTg5iudsXEbeDpu/WIGxG5tMOw96u4IWFDFKjuygnBJ1b4KYq82GHZO3R0BK1apEsdt4F1H9gzZx96nckTA57Pq7lZ5d7fKkPFV08gEtrJME/ChosrsyDzCQyELhixi71d7R8DZDarUjmwgXBWyacgW9gGVJwLuXwiEgSOHCE+FHBlyjJ1XeVo9CajoXy5Jrvb+DiFyV/3d6gnioDYgth5P3pGl1ZZl2ZEVQ1ax9XgaBESyAdl2ZAdhtZBdQ/aw9XiGBHSUZeR3Q0b/EISM/T6NjGPr8aQIyCjLrCNzCOuFzBuygK3HUyYgqVO85sj677bUGyD0xJvYh1S+CHi2Wv3g794POnJoyBH2YfWDiUlA9Jz6wYT3gwnbPanENDKNXVA5I2Beu6foyFLCdk/ZkBXsIypnBPS1e1qObCds93QM2cU+qv6QgIqe+NiRkTW21KNrpp94DFuPJ0nAFa3LzBp7PFlH5gyZx9bjKRGwQllW11iWtTW2e+qGbGDr8bQJWFCWPUf219juGRhyiK3HE1k7CdivLONrDZlYa7snuXYamcLW48kSkFNrUHBkca0t9RIIPfEy9jGVNwIyv6sTWGuPp+XItiE72EWVNwKOafeMPMvxWts9kXXTyCj2cZW3dSyRjeon1xkys852T9aQOewTKm8EbKmqE3BkdZ3tnpoh69gnVd4IuKIn3nVkb50t9T4IPfEBth7PmIDbWpexpPeXSUMmktPIJLYeT4aA9coyn/T+Mmm7p2jIErYeT5WAT8qy4chm0nZPy5BtbD2eHgHHleXQkaOk7Z6xISPrpx9PfP0k4OUPndnrDZlG2K4nngFR0gbEnlF5I2Amp4+Ijqw4smrIGvYplTcCOsqyg3D1izoBhFUN9ZcgZrUBscsqbwScf/8XwvbawHt2IWMbDBnfMEGc1gbEPqPyRkBdyJwj844sGLKIfVbljYCFhv7hyQ028IYjmyA08BZ2ReWNgJ9aIoMN3l8ipOUxAnFOGxD7vMrbRt4C6B5ecqMhUwiZpvrLjRPEBW1AbCHzBCQDseTEMsJSESsQqtp/2BdV3QhYF4htJ3YQ4iJ2IVzS9sO+rOJGQDkRkJGUd5cITxpaU6kJoqbthz2n4kZASv8OddaROYT4Va0pEFe0/bCvqrgRcEZ3fWopOy3rjmwYsoldV3Ej4Pa8ukvPcoCwUsghiGvaftjXVdw2cVrq5Uhik2WZ3GTI1KZpZBr7hoobAeVD6i43eXfpyDKIhrYf9ryKGwFnlWXLs2w7smPILvZNFTcCthXUB3iWkc2GjG6eIG5p+2E3VdwI+Konntns3aUjc4bMY99WcSPg1D8Pm8uJNYS8Nk8dwh1tP+y7qm0EpPTar7fZm0uE5aoSAxB/KSwpzJZK2xbe+m1SF7DFiAmEmLZjcssE8VfCisK8p8qG/0blWHBicYvlWAIRcixj3ldhw/+Wcmw6seU5tqdz7GA+UF3Df819HdZOHCP8uqLGMj1B6JMHZltlLU2XEb4nptMGzCDMa/VkITzUzsN+pKpGwGn9Gq04sorw/Ybayukc65iPVdTwz6wPgC7C87iWE8LFeXWVIDraeNhPVNQIOHsmEGJbDRlHuKZHk9g6QTzVxsMWMkPAufc6qxHO/64FtdXfdYN4po2H3VVVI2CpHndjq3eVLrRAPNfOw36hskbAaiGHThgh/Ll/WxHES229bRO7p7K2bRLQ+5dhY2Gv0F3p9DZ7qZyB8EpVDIfLMzqaHVFBuKO5rIJY0F7Dfq0qRsCLl6E962zzl5QIZ+bURILoa7Nhv1EVI2B1X0fzdn9JiXBUyPj2CeKtdhv2O1UxAjY0QgeQc2Qe4bSQBRADbTfs96piBJTvqIl0ZMORTUO2sD+oihFw5K3OZoTaeTWRCBe1WUYgPmq/YQ9VxTKTgCWvdTgjxNXqphDmr6uJzEwQn7TfsD+rihFwtqQu0pFlhDkhKyC+aL8ZskFA7h+HzZSxZdlB2KvmuQthpO2G/VVdJAE/j6mL3GHIKMLp2+oid3CbStsNW8gUAU+uhJWedWQOYY+yzINQlgXs7+oiCdh/XAXfkXWEsrJsWJZNQ3YI2HVFBX+Hd5H+3xiBGKtr3DlxaC/RibzTbhkkd/rJs5M7XqpVOJT26B8nRyi01SU6ogLip7pCHA7pYGl5Fm1HdC2LAQ65kn6377T9FNlliNgubpKp+ODQvKQy7RFZhJd/KwwdQuRvhjWAvSjYJfwzmpqqE2u7bK7qIBYHRAN7SbDbBKzW/3Niz5F9S3JgSQ4tyUiWVaSZi2eNmEAQMZmdJqawRcziH1NtKjixaMSSEctGrOFfP6/j1YktI7aN2DFiH/9VoUcbOXBswMjuaWAUW8DE7on/+7vhWad3GzGDIGLWiDkjFvHfru+rFSdWd/tnDhDRgGjh0LsVEF1H9BzRB/FbQAywlwZ7TMAZZRXbY8j4HkMm90xnlcHhRjMg8o4oOKIIQlmVsJVVlYBMIyAbjmw6sgVimXYWdizYPQIuzgXk0JEjR44ty8hergkGO76XXmasgrzXD9e9hsyCWBEQBRx+aieUHVFBGC5VWwdiZUA0cXglRMcRXUf0QcQDYoTD0gtq23J+uOYMEc9NZ5HAFjJNwA9llXNkHuGdkAUQqwKigkNPiLojGo5ogVgdEF0cIvp/LRk4YuiIkWUxNmRs3yTg0Z+F3bDPiCmEgz/Ule3jAqP2C3ZCZYaAlf8lbAYnlvf5EoCwRlUFh8+aqbYjOo7oglirMoLD5nsBEdnvXZcLsf1ccVTdwOGdssh6RG6/ZZEHkVShwCGySF3Vfr/558wGiPWqDDhc/9dhrXvAAGHmu37eQdigUnCA75t6J5E4YIjkAfvhmzrADUatfuyUagEBS9WLFB1ZQtg5r4PAkBXsTcGuE3BQPwhbjmz/4SFkB8Rm7Q7sLaoNBNzdrJ+1jozkuVJ+XQdFnjtd2h3YW4OdJODCZTVheUNmEfYImTNkHnubagUBl2PaDY6sIaw6qEUDYrv2C3ZGtYKAq7f1YdeRfYS4kAMQO7R/sHeqVhzkbg0VbBJqyATCSiGTB7k9pf2EnVUfRsBAFazgyOIfgpAlELu1v7D3qBEj4LuuEDcd2Tpot6naIPZqv2FrLvsEbD2nA9WRY4QjQkYOcfFFGxBbc5k4xOv1ij7sHjJkBqEgZBbEPm1AbM1lkYClQlYcWUU4LGQNxH5tQGzNZYuAfEJH7CF7ndJDWK3H0wdxQBsQO6/aQ8BNrcvYYXtfFj9syMRhvm9qA2IfUvEh4KvWZR4hsUpl2JFFEIe1AbELatYI+KJ12ThsLwqbjmyBOKINiH1UzRoBa3W7dHjYLw4i/MzrrAJxTBuwMD2X8QLnjNZlqmBzmS4YMgOiqA2IrbksEPBIi6hcsLmsOLIK4rg2ILbmsknA70J2CjaXXUf2QJzQBsTWXI4IqAz0YfcIV4Le6Z0cQu6oVtURPoprA2KXVN4I2HAiBOQcmUf4qSdeADGjDWjICgH3XqnZO2KPp4GwVuWsCeKUyhkOG/9p2E1HbM0MEc7NBsIIwqz2G3ZZ1ewoSelLQfKoN3sIP3JaREf5gK39hn1G1YyAh8d0RB+1DqeM8OG0XsGBOKvqhUNX/Un7qA20g7BKiJ4hhjgcUz8SOeZfahHWChE/xmdzVSccHmgg2WM2kNwxG0gehLIo4/BUA6kd8y+xx2wgTUN0cDiigfR9IAMfyMgGEi2yKsKrg0TRCMmilcBUcfpCcRpbF4pzBDw8rRO0aFNTKtpAyyDOqbjgkN6pE9Mj2i50DTHAYes1/Zz1gUWOGyJ2nEsHKh44vNRAMsdtIFlH5EBcULHAYY8GUvWImgsNQ7Rx2KuB9I77Sw5HDEFUVQxO8JlRA4mfsIEkThgieYLrEjr8cVirgRQ8ouhC2RA1HNZpIM0T/hLDER0Ql3S443BYAxn5QMaOiJzkloYO85P8Bd4OHVknLSLjQs4QRRwWaSCVk/790hF1EDV1Szg8Uc3pnrSB9BzRBzGn0xqHakrLt2QRcReSpWlEBoeHF1W3Sn7NzRElEFfU/eDQ0UAaJRtI0xEtEFfV7eBwQQMZesTIhcjMNCI+w4t/DSQ149fWZgyRBVFXN4PDx5NavjM2kIojqiCuqXvBYf1WLV+P6LrQN8QIh8GcCtEp/4J4yhCJU1ydUXeCQ+W4lu8pG0jeEQUQN9SN4HBsi5avRzRcaBmii0O0pkLkAxk6YgyiofZjduIwymv5ztpAUrPWZqVnuaCjdgOHiDrS0qwfUrPWZ1UN0cBhtxDtWb8o5ogeiJtqN3B4OqPlW7aBRMuGiJW5gKN2A4eZbVq+ZT+kHFEwRBmHlr6v1cr+vt0RTRBNtRs4fNfx2/eBDMr2E2AI4rbajdPcHFIdSZz2Q+q0IdKnpxE5HGZ1/BZP+0UuR1RA3FF/gcPt5ao8p/3t0WkbWQfEXfUXOKw9o+XrEZEzxoye4YaS+gscXmguMmf8kHJEzhB5s0sEvNcTqp6xrGr+36iDuKd+A4eCsup5RN+FoSEiZ2lL9YTiZ/3q1VlDpM5yM0r9Bg7HF3Sr4ax9WywivLqmu1YgHmjBY7fVfxCwXK8Tmo5sObIN4qE2gCH7fxBKqlSOHCM8FjJS4TKUNgS2kIkKXdI5Lf+KITMVQ2ZBPNYGMWSxYnNZqdi9h2rFBl4D0dGGwX6i/qVic9l1ZM+RfRBPtYEMOa7YXMbOGTJ+zgaeOMftKG0obCEz52wu844sOLIIoqsNZcgqAcf1Q71xzj/NnbM3FC0Qz9Xv4DB8qe3jiJEjxiBeqN85z2uRpN7AnzdEGuGFEJnz3NHSBsPuqf8hYI0+Y5YdWXFk1ZA17Ffqhwi4p09BHUd2Ee7GddaAWNAGw36t/oiAQ5r+6AVDxi7Y2R+/wKUtbTDsN+qXCKgf0pVqR+YRnmvgBRBv1S/hcEmIuiMaF2ygLUN0cXhxTZ/qHDFE6CqLEYh36peqvI8TIlk1RArhhrLIVKcReRxelVRJHVGu2iKogBioX8LhqRBtR3SqfjfTEEMcPlbDK7vIRa+kFy2L2EXuuKlfwqEvRNYRuYuWRcEQZRxmDqpfckTds2iA+KBygcNRIfqOGHgWI0NEL00cDlTCQBKXDJG8ZKszdYmbdSoHOOwSouiI0iVbnRVD1HFYHQu3EFuX/H2MMzsghlrg2J90/BMw1FE8dkLksnfJl7l8p+MehysJLefLhsg6IgfiixY89kjHPQGtps44R9YcWQfxVf0TDs/DF/KeE/qX7ZkPIXxT+1Tje/ZhHWE1QyRqtvKStWlEFodFqs8FRxRrlkUJxHetf+yxTncCXukTedORrZodvR0QP3Sa43Al3BkaOWFcs4UYmeNunbYD9i8d5nN8MDipbmnObxK7kAURCUkUcZgVouIRVRdqIBYFRAuHl2n9zp/zb18uDAwxxuGafvjHrljLHHcheYXLdQGRweGSBpK/YnkXXCiCWBIQVRw+aCCNK5Z304UWiGhAtLF/C3aPgJYGNvRxjFwYGzJyletRwY5f5eXZG3U/V21caYTzleCRAbEsIAo4zPXCmVh2RMURVRCxgGji8Hq9uhtHdB3RA7Fc6x+HXf8jrO66EWJ1I8TrXKAKhDQOg6QOOEfkEXJ31fKCWBkQFRyePQpne90Rjbp93mqCiAdEF4dRSavbEUOE7/oMMQKxKiBi12h5j+tEu2aI1DVDpK9xNSkg8jjcO6ETzRFlR1RA/B4QDRxuFlXWHNFxRBdEIiCGOGRP6Qi77mUM4bpuRseuc58pIFJ/RJzRkeWInAt5EGsDooxDY6eOrOv+s/+6P1QQeqgdR/QdMfAsRpZF9AYt6z8Kp/UN710QZm5oJ9/gUlUg5HB4rJJSdEQJISpEGYT+oZ8KdjIg6wR0dJW65cg2wmUhO4bsYq8PyAEBz8M4x06MNGyc0cb0OJM4fAmETMMIWSfkjFDCoaOZqjqi1rCZqoPQsBrYmqk2AU80Uz1H9hs2UwNDDrE1U5F5WntlGZ83ZALhoS5EJee5n6bdgb0x2FkChsqy4MgiwkchS4YsY6eCXSPg8qyq3ryt9JYLbRCbAqKPw/qM9sa8v+52IXpzGpG4yQ3+fxDOu5t+7eemtzYQNqu1weFRIFScUL3pp4IRWjh8CV+Hu07oITzJ65SAsEWNDQ6L/k447G4ZIY5QiOvkvzVNyOBwKfzJY94JhVv2GaAIIa22Bof5QGg4oXnL3ny3jdDD4ehZdTG3vIu5Zc3vGMRWLf0mF/nUxTQ5NE4FQqppDyONsEa1JgNiu5Y+dkZdDQEX/lNY106sINzVTqhC0E6oYe9Qk0PAdl1g7DRt3F1H9gzZx96ppoeAUyHJ6G3/DH/biPHb08QE9i41QQQklWTutiWZd2TBkEXsrJoiAhohybon2XBi04gt7N3qkQjYpyQHnuTQkSNDjrH3qGe6Mwkoa+Pc8fc9d/zT9h1uL6plwmG/OiYnlJ1QhZBTx4TDcJt2jkd0nNkDsU8d0x8O6pgid71jumuI2N1pRAqH5hadhHf985gjCiD2qwbgsE/dY82zqDuiYYgODm1l0fcsBo4YgTigjqnFlxNlkWhZFsmWP+TWNCKHw/YdOg1b/g3fERUQebVIOFzTymp5Fm1HdAwxwGFmmY5DzyJyzxDRe9zd1PLGPqQeiYDN+mOxzD1DZh2ZM2Qe+7CaJgL6PwKy6siaI+uGbGAX1DQR8F3/tyk9R/YdOTDkEPuIKsd9Zn+7mqb7hky4kLrPLUhVChw+XFGT5BHF+3YclUEcU2nAYU5PtHnf3/8gzOgAa4MoaoNgH1dpIODluzD9I0eOERaNdWnrAdc9tWGwT6o2PJgExPQZI/3AkBmEHSmtGhAlbSDsGdUGAuLakxVHVhF+fNerYhCntKEsyxYBS+th4F1H9hAOaOB9ELMqBjicPK6y2TZEHGGxEIk29zvVWOGwVy8J844oICxv6PMYiNPaQNhn1GkRcEGLpNH2F0gI328GZAvEWW0g7IpaLwI+qTcbOnLkyDGIc9pAD7nYp9brIUVLyNRDQ6YfGjIDQsgs9gW1XgSsXRkIZUdWEB5fUe8FoqoNhn1RvRcBa4TsOLLryJ4h+9iX1HsRcKWoyvrI3zg9sk+P8UdcflOzhcPFzaqsjyyr/CPrhIuGqOAwq1ao/sjOngbCASFaIGrqpnBYe0jd1CP/XIaQvK1uCsScystjQyQfe2VFuCZE+jGX31ROcPhtXpUV4dJ5HaLOrIK4qvKBQ1QLrY1QFaLjiB6IusoFDuXwGy3SwRYh2jFCvMOtM7VPOJxv6R8xRcgLkXNEAcR1tU84rG+qcHb8dlHHW2gQN7TesRuqFgQc+q4bBB37ej9AWKcOGsK8ljv2TRWLJ/j3AyDxxIjJJ74Gnkwj09i3VCz+INzUYndCCWHXE90WBdFUccAhdUAvpBzRRnipmYEQ0bc17EXBHuC//Jaaryd+N+mpfUCKPuWSlZotHLYLkXlqiOxT+9WdA3FHtQGHsy0deE+9uXpqJ0UDxF3VAhx+7NV3FM+i71kMQLR09j9jS+r1dvyZIRIuJJ9xnUlnPQ6LNujX4zNvnhCW6KQogbiv7YGt/5esGgFzNb19feZ3oR3ZNmQH+0NA9gmIKMuRZzlGuCYh0uXGlPYH9qeATHQnATVlme5alpmuIbOGzGF/DsgiAR/11aTS9V+YXRt4DURb+wV7FJAtAirKsutZ9hzZN+QA+2tAjgn4oCxjz/1u9XMbeOI5V8W0gbB/BWSGgLPKMv/c71o7smjIEnZE/xgNAVe3hqXdeO7vtRBmRmq2QDxSc4XD7Yj+WQBHjBC+qLcdg3isZuoFT/St3mO9MEQa4YKyyLzgdpmaJxx2jlU2HVFBGCuLKognKh44HNTVCyd0EZa0tSggPFWxwOG7msLoS0PEEL4tCpOVeDk9m2kc5jSbOUfkEV5pHEUQms0KDj/fqGw6ooHwS1m0QGg2uzis12wOHDFEeKssxiA0m7EefzyjmxY9L4sIpQc6CHrTs5nHYd1bnYiOKCNcV+2tgHgWEFXsrlolR7Yd2UG4L2TXkD1DDgmICRl5Zcgown31x6+4zKfVj/1CrRT+j/X8sk7MIbxQuwxBxb2A3VPpwD+zNBBrTqxbjg3LsWk5dvBP6NNf34kDy3FoOY4sx+gC/WJJjdWCEZMIyjG1wF1BbR3sBdUN/Hf827BPHFhCeBWAFQCvVSX43yMF/YRwQhuho2OpA6KvqoDDWj3LsSMirzl1wgEce83dQhUB/ve8zsbMayNkEX5903c9EG916ONw9Ub4b1RfexeF8FCPH8I7NVH874tOq4l67U3UaysTA0NE+vzo6+kySt/fQCFoJlJ97vSph+pzrmkmCn2/i9K3KlEyRA2Hx/oq1+z7CyhntkG8D4g+DucyenXgiLEPLPpmGpF4wwXgO/pR+MYiMm/s3UEWxAetbeyPwS4SsKArMpU3/vdkjqwZso49DHaLgOuv9ILJkT2EFeqJ+iA+afVjfw72mIDVm9QTvTVkHGFDXafAW27baTtgj4KdISAXvrLknVhAWKLvy0UIX7U7sL+pZhDwSP+2YcORTYRNelwtEN+1XbDHqhkEXCoFwtCRI0eODRl5N42Mv+OV1mudhgidd0FIu5AB8UP7CfunqgYBb4UsO6HiQtWQTRyOR/W+ySO6CJvn9b4JxC/tL+yI/h0yAnZpQ0YHNncxhBPaTvEBv2UDIoG9ONhpAj7e1YHpyDxCWm/FCiCWBEQROxrsCgHL74fNUh/YwBsImVU6ekD8FhAt7KXB7hLwbr16MEcOEbZpHCMQywJijB0Lduw9X9p1Kyj53pAphHxTR9N77psFRAZbyDwB9/RVu+TIMsJ9NcUVECsCooq9MtgNAvLhykH7vX8OREjp3OlCiAdCD3tVsIcEXF+vHu2D92gfDBn7wM2wgIhj/x7sFAEdBWQ/2OuQ3AebiDyIRECUcfipYlT74J8LXWiAWKQ2DIcHGZXhD/650IWRIaIfuWxW1yv+j35J1IX0R/aTihEO58uqwx8t75ILZRBrwlzUcYjv0JH60W+Hu9A1xACHgxrI2POODE2IDblsFhBJHPYXdWQO/Y2VCzkQ6wKihMPBzToih95rudAwRBuHxZdVZz3vvgtDEMmAiHziS/RZvWv45G+sXEh+4ppVQGRxyO/Szd9P/sbKhbIhajgsvq7C+cnfULnQAbEhIPo47O7riPO8x5+8of7M5S6d/p/5p1OFSH+2iMxne8+fBZHSaY/DLXXxFUdUEXbqKK6B2KTTHYfygs6sz/4nLM7sg9isBY69Rac7ARs1sNgX/7eNELrKKvGFO0la8NhbdboTsE3I/Bf/t40Qnqt+F0Fs0wbA3q7TnYDLKqWNL/4574v34CAy2hBm9wg4PxeK7dCRI0dGRlxK0nE+4tLzSxW+kUWkEdREZCDs1P4wu4D/Y72bcGDFgFUAu7RbzG7iv+5pGGXHiV0j9iBktXnMHuF/+U/h6P9qwBiCgPGvXEDSVjI7jf+aWzoNnZg3YgHCHu0ssyv4P5hXCXRiA+F7Q8sHxF7tNLO7BLy6EH5XDhw5dOQIRE47zezYN65ZCZn8ZsgUwjJdvPzGbSOtJrPz+L/VuEtOLCOMlWQFxH6tJ7MbfyDbIcm2IzuO7II4oAVl9pCA3/5j2FXfvY1C0OOOfedKjxaU2Sn832VUX7/7pavvfk0dxEGtKOxD6qoIWFtWvXVC3YUGiMMB0cHhW0/11iMG3+3m+xBEISCiY24oCpEY28CSY0OkxlzZ0ebC1sByBDzW64+iE0pj77JAHNXuwj6mrouA+QXVY0e2XeiAKGp3GXJAQGus+jz2o/gHfbGqVPQHV3q0aLBPqEgRsExPNPPDkNkf/h0RxEkVJRy2H1VX5ogaQk4edRAlFSEculqqPUf0f9itoAGIGW0fG1jkJ1cO9UTjPw2ZQFj8Sr34T24FaQNhz6oqEXBRT7TgyCLCPXmUQJS1gQxZIyCrH09NhLxekbd+2kWjNojT2lDYZ1SYCHjzn8N560mOnRj5NU1M/KKU6UJV+pcllUFYLEQWxFntJ2wlVSRgVs1/5Zc3eY6sGbKFQ26gJu+X7cjeL9tPfRAVlRoc/h9Zd/6/0hrH/X6f+Z7n4czzfH6553n410LsEBZCCCFkC7HbhBDahGwLCyGEEEK2EMI55+71vq7H4/r8+nxcn5er9e3bsFZfrTrmrhakmj/RQLJGov8g/7H/H9iKLMm5H1oF8f9y1WRqZM4q02LJ981aEptMgvhHtl6YGbLkiLujTxB/bKfIDffCckbmnDLZBfMlK9wb5jziMwVkr8sUF8wzLWWqLLnqbkLDZJrIb+51b5uM203Ckh1HlembzAApuMwo3M2UJQd2aUl6YZjJIJHLRAuDTIElR85oSdlkKojfTS3MNFmy2F2F6ZhMbDLdMDNgScsd4rHJTBB/T5qR+V2ZzCLuWu4Q5xCfySP+XlxcNM+cV6bCkhclLambTAPx9+JWmIlZ8rypJT2T6ZvdDMPMhCVfjrqTUekwk0Z8JpsOMnmW3PH/V7jJlBH/X7NXyFxQpgq0BQ1m+q7bNt2O6SZhps+Say4zMpmxyUzC7aUXsySlJRHif1A5xIcLi+eZi8qUWXKnod3UTKaOTG9pTYPMTXWbwC1Bh5nrrttF/BmNnvmXBmQSZcYsuXhMmZnJpJbM5YP/j8OXzDOX3K8LcFmQY+aOO4dTRHy3hPjtlcl0lKmE3TozFx9rpmW6bWT7GfdIQuaKMjHwh6DHzD7/GsvsbmS647A7Aa4KUj/PZ1JDVbKI32+E+G7u56CbB2JBiZnLbr9VxO+3Zrr1sNsArgnazNx339mZmP12kdRldXtkrivTB24IRsz8vkO7m5r9zkw3lQm6aSARRJn5TOKuxAN+u0XkpD/HRuWmKmXglqDGzKmcZprI+cfqtpA/XLdN5rYyHaAr6DKz9O8AA8A/ggzNDRhRuaPKGLgrmDHz4b77v8aXhpUs4h9koqXzzD1lckBPUGRmfEozFdOtIitvaE2NzH1l6sADQYuZV+6TkbHpJoi/93bDbg94KBgy8+aOZiamOzXdWdhNLZtDX5BdNp85GOv45hHfLSC+WyTjuiXgkaDKzPW6Kg3TbSL+WzlbZB4r0waeCBJm3Of7+yY7QJ677JDKQJUR8FQwZebzVR2G9PKwm0F8N7s86EbAM0GBmY11zZQR/41hFWSV+22rknmuTA0YCprM7HNnazuI/zKzGFntugmZF8p0gZeCATORfovH5jBMkDUuO6XySpUZMBJksmTdYcgh/jDkEX8YCtngMBSB14IKMzvcYagj/jA0EH8YmtngMLSAN4KYmbH77AHgD0Mf8YdhkA0OwxB4K5gws1eQWhFm04h/SM+smFfGGsoC7wR5Zjbqh1ZaYV60Ig2XrYTZKvCnoMFM+7Rm2ma7HeThF62JybxXJgEmgj4zP+qqjEx3jHRidSdkPigzBT4K0ivnMyf+SyACfDaH+Gx+ZZAtAJ8EZWaW3dN9rGa6deS06zbCbhOYCjrMRP8W6AL+p9ZD/JmqPpXPqoxZ8uzfATPAvwNMrQrf96RXzStfVMmxxA8VjZRMpkzmqzJ1M9Qy0kb8i6NOmImBmaCnyl8AhiY7MjKm8oc7RRoFlSzgZyLE38ZcxMteVUos+ei/H8xkakbqUbCZRghtZi5tVTcxlW5kzgqF2+uHMGLmR8v9LafpzhB/+jK1ep755p7ZVvNq1P0BYQHxmSLiM6UwUw6hxszlhnt0RvzPoGW6bTLflemy5EpGQwPEH6uhyYzCzDiEGTPXn6qSWRPe7CyydCaJ1swzP5QpsuTJKmUqJlNFFrtMLczUQ2gxs/CQujHiH0QSZIHrdsmk/gYwZEnNf67YZKbIe//ZdDILlEmtncNCQXbtfKbnvuA2j/huAVnhXlUVySxSpgSkBVVmujf0Vq6B+DtNc615LCKzWJnEZPomMzAyJLNEmSlLCpGWpHPhfS+TM/eaXLCbKIQCMze+uteOiN9MxXSrZH5WpmkyHZOJjSRkMsoMWNJeriVjcysnZjfTcDezEDLr5jP765rJIb6SR+75PwNeN88sVabCkhs5LambTAPx55+bYaYVQsxM5E4s9hB/rPpI2X+XNJllyky0JKOh1Prw6KWRZ5+14cz6IJMNIc/M3dfuDADit1dG/IGokFmuTIMlW90Pt2221zGZOMwkIfSZiYva3shUxkYmZLLKpDewPXf0IsQP5YzkNwSZQghlZg5v0fZqplI30iCzQpkOS3Jue10z1DPSDzODEMbMnH2s7sxUUnnz4i4/z6xUJseS84KimSkh/qmxTGWVhuosWfmzhlqIv4u0TaYTZuIQesxcFQzN7kYmO6YSaSi1cb4k73aXRfzuIsRnchuDTD6EEjOTZXqKqCL+GayGNF/850idzGpl2izZ4S/wme11N5r7DJk1yvSBtYIRM3fdzNR0Z6ab2hR004DrRpvmM4dqqhQQf7OLSOWbe+ghk1OmxpLXDWWaJtMymTaZdcp0WdJzuxmYzNBkRmTWKzNjySe3m8zmMJNFfCbaPM9sUKbIktomZSomU0X2uEydTF6ZFkuObFcmNpnEZHpkNiozZMkVt5uJyUxNJlWYZzYpky1wH3a7ySM+U0B8pkRmszJVlrz+d0ACrPpN3X7BvMRC/B10SLeg7lSb2ayh9BbzEgvxmeyWeWaLMhHgjlWBmXPHJWXE/zlqBek4qZLZqm6TJav/0JIOUnVDsckkZLYp0w23N2Dm+iJ3WcZUJkamYXcWdjNb5zMPtkpyiP+70Tziu4WtQbcIuG6FmcEFzdQRf6qkgfgfU5NMUd1W2I2ZOfBaMz1T6RsZkNmu7hDYIZgwM3X/z1FqW1hJG8luCzJ5lhxz96LSNnMCDjnh71dkdirTYEmyVZm2yXSQmsvEZErKJIA7en1mfnb3zpHpjpGzrjsJu9Owmy7yjsDdOyPEd3PIRdfNF4NuAXDdMjPTmqRmunXEnxlrkNmlbocl7124azI95MpQmT6Z3coMwu2NNePu5DPTTW3nTa3bXnr7PLNH3Qzgujlmdrk7eRHx3dJ28zqNTFndCrBXUGfmrbuTt0y3bbpxmOmxZOzObpvKyNzqMZVfVJmEtzq1gxdu7v1VFvHdCFn3VN3cjnlmn7p5wHVLzOzbIKmabg259lXdOpmKum2TSUymi9x3mR6Z/cqMWNJsacnUZGaI/7Bkauc8c0CZaCdvRt0BLiA+U0R8pkTmoDI1ZfyH8naac25I230yok2mqkyXJWv989VOc87NZEZhZsaS4Xn3trdkrvAi/kZFpSBTZMmXkYYqJXNuxGRqYabFksLwJyRGBhUNJSbcJXNImSFLZgUNTUrmZRni/7IktWueOaxMdtd8yeOL7uET8ZkCssPdRUtkflWmypLb/wPQMJUm8sJtpkWlpkob+E2QMFPcppk+4u8AAyMjMkeUmbIke9k9WO42114Rn4l2zzNHlSmwZPzCnS5D/B8LVpDhRa2pkqkrUwOOCZrMtJe4/4cfealsvNs8JlA5rsqAJa+1YhxGJiYyCyOZPXwY4pOGcogfyiNrh+4xYs88c0KZCksS9xfjdcT//jeMNMk0lIlZ8v64lvTMUB9xf1k+oHJSlQkrGu5OlCqbM2OIq2TK88opVbLAaUGekT3uTlVC/J2qHGYrYbYKNAUNRg6629xG/G3uhNmYyhlV+qxY4W7zyNzmcViZUDmryhQ4J0jv5UMMl9yFCMTf5hzisvm9QbYAtARlRq6421xD/G2uh9kGld9V6bBig7vNXYm/mhVW+lTOqzIALgjGjCxyP+eZuc2pX4Js+pcgmwHaghwjaw5ob0XE3+YS4v9AokzmojJ1ltwca0kL8Te6jfingTjM9FjS3ufeIZvdjH4xJ1bJXFImtW++ZL273pFFfCZCfCa3jw8qKlNiybl17kHUZGomUyfTUabNkhMuk5hM12R6ZK4oMzKZKeIP8QzZnpekK1x+VSaqzJfsXKpjU0D8booVc02czFVlaiwpuI9pNSvmjJcJt8nEynRZEm1QZqDwJ8nQhEdkrikzBja5A8HMw0SS2R9WssgmQbSfjyoqmwNuCIqMvP57QAXwvxpV8+/UqCSqtFgycR/YjRH/q5EgPXeNpEvmpjI94JZgqH96m7qT/eajc8i5RGtmZG4rkzowh64geyDs5hHfLSBV1y2SuaNMCbgrqDLzZZu7umm6TWTFPUmLzD1l2kBPkDDT8v+PCPI5KxlojdvvkMx9ZUbAA8HUdNMHw24GOeS62YN8wlGZCOgLCsz4bhl5V5FUkGdOqmQeKdNkSW6/OzmH+NeFMbLUf1SOzGNlusATwYCZdZOfkDFy0H/JMvLRf70SmYEyM+CpIFOdz+weqpurmpNzRgpVPnmoTBF4LqgwU3XX+OpVc3IOOX/ZPXyRGSrTAl4IUoe4qjpVJY0c2uY+s4ssGWlNFsmt1ZoIOZ6X5DT1p7vdyFonBSRzWVNF5PAaSQlZ4abKyON3korWTCVV5K5bU0OuOKkjEydN3XZ3kryD+KMcI8l1rUkO8TlMd28DXgnGzBS2aWZmuqnDcxlk3S/i4XlmpEwGeC0oMnPHnWJixRutqLLiwR5VG4fNewPE/xq2yLxVJmHJ9626Af3D5s0i8jQrGZIZKzMC3gmmzCwruxv9a7i9jJHsr3zYUZkCS665C+llxG+vYqQWZposKRzQkg7in/his5uEzHtlBiypuv+2bWwyE7ObKZmJMjPggyCqzeGTIAdMBXngs6AAfBEUga+CEjATlIFvggrwXVAFfghqQOpvAnVggaABLBQ0gUWCFpAWtIHFgg6wRBADPwsSICPoAksFPWCZoA8sFwyArGAYHvURsEIrxsBKwQRYJZiGjRkQaUXqNy46C9KAG8kAa7QiC6wVREBOkAPWCfLAekEh/FeKIZRCKIdQCaEKbNC/UgPygjqwUdAANgmawGZBK/xX2iF0QohDSICCot1wRQ/YohV9YKtgAGwTDMPGKIRxCJMQpiHMQkgdCSA6whVo95UcNeSKu1LURPyTTAs5NXUnhglvd79mwA5Bl5ktu9wj/RFzphj5xXVHYXcM7BTMmPnN3YLMUXPqGCm7bnSUK1DK5IBdgiIzu3ZopmK6VeThfwnUqOxWpQ7sEbQYefZA241NNkFG7lVal0xZmR6wVzBkpnZL3YnpTpF3rjsj84syqToXVQRRwoch/i5QAHy2iKw/qGwp4RKKKmVgv6DGzJEb2m7TdFuI/6KJNpkDynSAg4I+M4vdl7eMEnOdE1k9c9c5yfyqTPom23MfWYgQn8khK1wmf5Oz5cqUWfLMXXarmUwd8btpkPlNmSZwRNBhZvkRdwcx3Z7ZXp/MUWUGYXfMzPg39wLTdFO3wj+uydzi9LkyOZY8OKpMEfGZEvLcnXelckyVOite64JFy0TayHFBh8hxRWLghKDHyLbduuMNTXaEbHYXrMdkGspMgJOC1O35zK/+w2eI70bIWvefG93mXLMqeeC0oMTI+2PKVk22hqxStk6lqUojzLYZ6exRNjHZLuL/4+EemTPKjFiyq6AlU5OZmUyqy9lmZdLAOUHUnc9cGGmm0DUn4rrmGieZljI1ljyva0nTZFqIP0vVJvO7Ml2W1N3Fn0HXfPSsa/4Yhcx5ZWYsefFGSzJ3wkwW8fuL7nCyW5kiS1ZeUqZiMlXkkKBGpa1KHbgoaDFy1P1exCabIDn3e9Elc0mZHnBZMGTmmPsZTEx3ilQEMyodVVJ3g+1m7/LnbsuVzSM+W0BW6sdWpHJFlRLwh6DKyKLjyjZMtoksVbZF5aoq7TCbMLK4rGzfZAeI/y+2h2RiZaYseex2l74XZjKI/3XL3uOMsDJFllz++0AJWFnXTBn5pe7uZMhDJ1UzVTNSN1NN5HRJazpIevSfI7GRhNtw3f1OAjcEA90o1x3fM3+1ipTcX8pMySTKzICbgqjHT/uaZnI9ztVqSZ4lS9w56wJL7rlDzpKue4wusaSnJWWWtL+6Uw0sua8lTZaU3rhj1zN/xYEcnGpNQqavzIAlI/cho7HJTJD7LjMl80iZzH0eXYfK5BCfySMfvihTuM85VWUqLGm8VKZuMg1k5jJNMk+Uie+Hx6ZnMn3kjDtjOiAzUGZiMqkHYSaNfHKZzAPO3yqTZ0n6qIZKJlNG/E+qQuaZMg2WxO4Qt02mg/hDHJN5rkyfJWsPa2hkMmPE/8AnZIbKpB9yQsr9pCLEZ3KI/0nlH3KuWJkyS347r9+F2kPzohjxz8oNMi+V6bBk1UxLuibTQ1ruRvXJvFJmzJLL7ll5ZjKp/lz6LpPuc05VmRxLfqxRpoj4TAnxuymTea1MnSUV/wdrJtM2u+mQeaNMjyUjd81saDIjZKvLjMm8VWYCjAWpR5zqdo8cWcR3I2Sn6+YeBd088E5QYqYUab9V060hfr/1sNsA/hS0VXE/3MR0u2a/vbDbB94LRszcfuf+nvaR+XtapO8/2fWYU7PKpIEPgugxv0/+D2wRf46kiPjv4C+R+aRMGZgKasxsPaRK87F5IYzkbqrbJvNZmS5Lth13j5+If44dIsMbyozIfFFmDHwVzJi5sVObyTwJb3YWqSTqRk+Cbg6YCYrMnDqoSuWJeakscTe7RuabMi2WfP97QGwqCbLd7a4b7q4HfBcMw+zEZKdIw21uFmZTA86iC7IDHoH/OZAHfLYwMG+mqKT+FlBlyQtVGqbSNJUWlQWqJCy5pUrfVAamMqSyUJUpS86pkn4aVjKIr2SfcmVAlQJLqqqUTaViKlUqaVWaLNmiSsdUYlNJqCxWZcCSnCpjU5mYypTKElUyzzgLpEoO8JU84iuFZ1ztUKXCkoWq1E2lYSpNKhlVYpZ8/mdAz1T6pjKgslSVCUsW/wsg9TyspBFfyTznYowqeZb8qVtUMpWyqVSoLFelwZKHqrRNpWMqMZWsKn2WdFQZmcrYVCZUVqiSHvKmTpUI8JUc4iv5IdeTVCmzZLcqNVOpm0qDyipVOixZcFZLumaoZ6RPJlJmzJI7Z7RkZoZSL0JJv+D6ljI5lpxxmaIZKhkpk1mjTJ0ls6aWtMxQ20iHzFpleizJu8zQDI2MjMnklEm95JfJf8kE4ociI7mXXKZTpsSSoctUzVDNSJ3MemXaLHnsMokZ6hrpkdmgzIgll11maoZmRlKvuOanTPSKj/q5TAHxQ0UjJTIblamxZJW7FzfNUMtIm8wmZbos+eLufgMzNDQyIrNZmRlLrrtMZhQOZY1EI65DKlNkyUKXqZihqpEamS3KtFjSaGpJbIYSI10yW5UZsuSH+0lNzNDUyIzMNmWyr3krvVtL8sgGJwUjpdfzTFGZKkt6u7SkYYaaRtpktiuTsKTlMn0zNDAyIrNDmSlLvpe0JP0mHMoYid5w7VOZAksqLlM2QxUjNTIlZZos2eYyHTMUG+mS2aXMgCUrXWZshiZGZmR2K5N5y6e5XCaH+KG8keJbLrQqU2HJu51aUjdDDSMtMmVlYpY8cpmeGeobGZLZq8yEJWvcktQ4HEobyY65PKtMniXf3N2vZIbKRqpk9inTYMlNl2mboY6RhExFmT5L0i4zMkNjI1My+5VJv+MsV0lLIsQP5YwU3nEtWJkyS3a5TM0M1Y00yRxUpsOStPu4Zved+Z+Hka9XtaZPpqrMADgkGDNzw13xnplu6s+5XEnUTf/JX4MpkwF+FeSY2fR3geKf5sQT4r+tqEylpkqdJZcOai8tk2kj99xdhMpvqsTAEUGPkRPu+xpNdYT0VB0TOarIBKgLUu8Z2aGZ7HvzWIms9d+1xvVlVfLAcUGJkWPu7lw12VqYrVM5oUojzLa1W3dlLTHZLrLwvro9Mg1l+sBJwYiZXRtUmZruDJmVJakJl5yVSQOnBdGEaz8pzRQQ/xH8IuI/pFki01SmDJwRNJk58UwznYn5VCzi/2/GhMxZZbrAOcGYmc/urdCHObivL64Dq/e5o4tcybtHbMQfuxHy22dNjT9wgdndM4HfBamPfODjd81kEX8bI8R3cx+Dbh44Lygxc2mju2t+NHdN5FfXrZO5oEwDaAvazETnNZOY/XZNtxd2+8BFwYiZsf//sM1+Z+Y4pD5xNVmZNHBZEH3is+lXNFNA/H6LiO+Wwm4Z6AiazLx/5c6pm26M1BOtSchcUaYL/CEYMzMq6FrHzHRT07m0L6qbnnJBWZkMEAuKzHx2H3qrIL5bRc6dVLdG5poydeC6oMXM9Vjd2HQT5LjrdsncUKYXdofM3Luo7sR0p0jVdWdkEmVSn4Nu9Jnr9X8RKACvKu6hCtlxRdkSlZuqlIFbgiYzG/xF6s/mf1ZGtg0lCZnbynSBrmDMzKNP7pfAdFNf5vKHe22R/sJfCymTAe4Kcsxsav6EFBHfLSFXr6lbJnNPmQrQE9TVdR8qbJlu2+y3Q+a+MjHwQNDXTF2VEbLOnaofI2tOqDsh81CZKdAXRF/Zr/twZQHxrzeKSDdRt/SVK9vKlIHHghozT/ynFU23hfRdt03miTIdYCDoMrMgVndgukPkpeuOyDxVZgw8E8yYOfDEvZmchd0s4j9rG824bqxMDhgKisxUHunhrILkh+6JCUn8ww6ZF8rUgZeCFjO/um5suglydK+kS+aVMj1gJBgz82PyF5AJcvO3/wKZ6jhc02PIDGldlaS+zaV5SZJGprEkg/xxSpJFKm4qQrL/FZADbvlvy0R2akkBWPO/A0VgwQvNlBD3ndlloB9rSQW5st89PYTdWgj1cLeNcEUzhFYIbaDmPmjYCZfEISTaa849wYQ76YUz/RAGwEX30DVEDlbdgw6yzB3JcZiZhDANYRZC6nsA6RAyIWSBY4+1kShckgPcIcgDu2P3WPed68vu1xX4U1ACPgrKIVRCqIZQC6HORrY+1XFtIHHOPVwiO9yaFnJ1IGkjz9xUBxk91poYqbtOgtzZpqmu2U8PmS3Tmj6SviwZINsuSYbqXJCMkIdrJWNkUSSZILdWSKZIYaT9zMwOUz9CSRvJGMkia2+7v59EDmyX5JCXOUkeebdOUjDlopGSkbKRipGqkRpScMewjuxbJWkg6y5LmkjFTcXI0v8S6P0w386AbHJ/PzD4wScE3OtS4JsglTozf+PySDNZ5PQn9zyJTLJak0udmV/bVyYP/BCUmLnuvjO2aro1xD9H18mk/jbQABYIYmZWrHV3dlPpI3n3pnpAZqEyE5b85v9/0AVhJo3sdJnMgnlmkTJ5ljTdV8IAJXcjy8gBV6lQSatSBRYLGmG2Dfj/WbFjsjGVJaokwM+CPjPLV7q3/Ii/D42R99fVnZDJKDMFlgrSC+czuXOqRIjv5pCPt9TNLwy6BWCZoMzM53Xab81060jmhrqNsNsElgs6zFSaqnRNt4e8dvvth90BkBWMmUnc79/MdFOLzgRnUtOL5pkVymSAlYIcM3fccSgivluSxOqWw24l7NaZyTZVaZluG6lfU7cTduOw22Pm5llVhqY7Qk657jjsTsJuKj2f6X/8Cckivhshv7tTd7n0PLNKmTwQCarMrGmr0kD812Q2kZtn3LEis0aZNrBWkDCTPaeZvukOkLI/VmRyyoyAdYLU4vnMg3M6dlnEn2yKEP81XrnF88x6ZfLABkGJmTvuJEvVdGtI/5K6dTJ5ZRrARkGbmXt/aiYx3S5y0p90C/fbBzYJRsysfqzKFPEP4jNkkZ6GUkvmlc2qpIGCIFoyH6nVtd0C4rdbRH4ISlS2qFIGtgpqjGy+r3didaTYkzSQrFvTRKZuTQv58kASI1evuBdlyPuHkvzPc3l5RtJA3ripPrKwL0ln5vLJTZWRO6fdPQLxl7TriP+IYSMzPxjb3EMwS37s1FAX8ce4h4yuK9MnU1RmAGwXjJk53FRlZraXWspdwm0vvXSe2aFMjiXnSxoqIn57JeSV216ZzE5lKkBJUGdmfEaVFuK310YWuu11yOxSpseS97s0NDTbGyEv3fbGZHYrMwH2CFLL5jPX/OdwEL+9CPFHL7dsnikrU2LJJ/fDrSJ+ezXEH706mb3KNIBfBG1m9jZVScz2uog/ej0y+5QZseRkSUNTs70Z4o9eavk8U1EmDewXRMvnM8/PqFJA/PaKyAK3vRKZA8rUWPLS/XCbiN9eC3nhttcmc1CZDlAVdJkZu9/lAeIfLYfI94q7G5E5pMyMJbeuKJPJhpks8sxlouw8c1iZIku+PFSmYjJV5KnL1Mj8qkyLJYOpexmM+GOeIP5qcJdMTZkxSz66G5VbMZdvTurI7pakhxzrSlIreUy9JCkhG05J2sjznW6DyKGspIucqUh6K+db/k1b7gNHBCNmtr7QzNR0Z8gx102tmmeOKpMG6oJoFXvxH0BDHrtKEbnopETmmDI1luRKWtJE9mYlLWSjy7TJHFemA5wQdJnZ4272wHSHyFLXHZFpKDMGTgpmzLxxNzsTzeWuq2SRvU6iaJ45pUyRJZfcb3MF2ZiVVJGL+yQ1MqeVqQNNQYuZsbvZsekm2p7rdsmcUaYHnBUMmblwRjMT3YKKZIq8cN0ZmXPKZFfzPFzSkjzyebmkgOz9RVJcPc+0lCkBvwuqzBx1N7thuk3kxV5Ji8x5ZdrABUHCzNamZvrILxXJQF233yGZtjJTltz2H3NbE94ZM4i/M2bXzDMXlYmAS4ICM33XLSP+p11B/E+7SuayMjWgI2gyc87d7A7i7+QxstFJQuaKMgOWdFxmjPg7zQTxd/IpmT+UidbymmDsXngj/jmhiPjrceW188xVZWosyb5TpmkyLZPpkImV6bJk4nYzMJmhyYzJXFNmxpKU200mF2ayiM/kcvPMdWWKLNl3XksqiH/vW0Xuu8+BULmhSosVmUuaiU0lCSs9KokqQ1bsbGtmYirTsJJaN6/cVCW7jrMwrpJHfKWAuEqJyi1Vqqy4+at7QED8C4Am8si9SGiRua1MwpLeRg31Ef+ia4C8FIzCypQVe+r+683CzWQQv5ns+nmmq0yBJRe3aKiM+M1UELeZWlhpsmK0WUs6phKHlS6VO6oMWPHBVcamMgkrMyp3VYk2cObRneUoIP5nXUS+uW5pwzxzT5ky0BPUmPn44yekabotJLdX3TaZ+8p0gAeCLjOHUpoZmO4QuV/WmhGZh8qMgb4glefds/taY8A/FkTIZX8CKz+vPFIlDzwWVJl5sdGdWkfeuP9Lr478sVDSQA4+cAcP+fZZnRbS+tmdEEQym7QmRn64z7n1EH+w+oj/1vMBN+KJe1QBBoKJ6aY2ht008umWupmNQTcLPBXkmXngPjRRMt0y4k+DV8g8U6YKPBc0TLdtuh3En66Ow24CDAV90x2Z7hjxp6snYXcKvBCkN4XdCPHd3CZz2n5T0C0ALwVlZtK31K2Zbh3xx7cRdpvAK0HHdLum20P88e2H3QEwEoxNd2a6qc3h8U1vDroZ4LUgx4zvFhHfLSH++JbDbgV4I6gzk7qmbst024g/vp2wGwNvBT3THZruCPHHdxx2J8BYkCqE3SziuxHij2+uEHTzwDtByXSrpltD/PGth90G8KegzcyCS+omiP/e/i7ij2+PzHtl+sBEMDLdqenOEH98U1uC/aaBD4JoS9gtIL5bRPzxLYXdMvBRUDPdpum2EH9822G3A3wSdJk5uNJ/5Zt5ckX88R2RmSozBj4LZszUz6mS2Rp2s4jfb7Q16OaAL4IiM1vWa78V060i/udWC7t14KugxUzcVCU23QTxP7du2O0BM8GQmSPuFcTEdKeIP76zsJvaNodvguw2XhS1VMkjvltA/PEtknHdEvBdUGVmvftcf8N0m4g/vq2w2wZ+CBJmLp5RpW+6A8Qf32HYHQGpvwNMmdl0RDPpYvh7kUF+XNKabJFPMigTAQsFBWZebdVMGfH7rSDrzmhNlcwiZWpAWtBk5s+6Kh3TjZGp229CZrEyXWCJYMDM9Yc/IWPTnSD7/CVxMj8rk9k+X/LumZbkEJ/JI/7uWtjO1XhlisBSQcV066bbQPzdqhl2W8AyQWy6PdPtI/5uNQi7Q2C5YGK6qR1hN418dN3MjqCbBbKCPDOvXbdkumXknX+5S2aFMlVgpaBhum3T7SBL/MvdsJsAqwR90x2Z7hiZ+Je7YXcKRIL0zrAbIb6bQ165bn5n0C0AqwVlZk48V7dmunXEf+qjQWaNMk1graBjul3T7UlidfthdwDkBGPTnZluqhR+OiNdCroZYJ0gVwq7RcR3S0jddcthtwKsF9TV7WqmhfiH2zby9qLWdMhsUCYG8oKe6Q5Nd4RMXXccdifARkFqV9jNIr4bIQvcw21uV9DNA5sEJdOtmm4NWea69bDbADYL2sycc1+9kSD+dGTXSJ9MQZkRS+78H8DUzMyQzzl3emw3n5pQJdo9X3I8ryWF3eYUMPJSS0pUtqpSBrYJaoyU3rvH+d3mmiriP5vTIVNUpsuS+LR7/bDbvHJFtvk/XyCzXZkxsEMwY2Z2SpXMnvDgZRHfjfbwcQNlckBJUGTmpXsHWjHdqunWwm4d2CVoMfM0cScSEf9TSpBNgi6V3ar0gD2CMSOF/weY7TGf3SibT2mW55WyKjmWuO8aKgK+UjJSprJXlTpL3o3cWx1k9FbSNpkOmV+U6bHkt5F7kEHSq93ZHOSD+6Udk9mnTGov5xrr7poR4r+yO0J8Jrd3nqkoU2LJky3KVBH/nTo1k6mHmTZL1v8jIAH8b0EXuZV1L5Ko7FelDxwQjJi55/7oaGq6M9NN/RJ008BBQfQLF739lUfEd4tIy//RHJnDypSBXwU1Zjbf1H6bpttCll9Vt02mpkwH+E3QZeZurO7AdIfIM9cdkTmizBg4Kpgx032obnHfXB76/z8F8XfpKpLz/1/cvnm4rnCLJY93aShG/KNrgny9rkyXzDFlesBxwZCZj+6bGSaIPxBT052F3VRlDicE2QpvZP8xUAWWXlC2UTHvQJG+O+Itug1128BJQcLMD/eU0q+Yq0qmOwy7I+CUYMpMsandpfeH+80gC2J1s/uDbgScFhSYeb3OPS6abgXxL2WrYbcGNAVNZlLnVOmYbixx+03Cbhc4Ixgws/OYZsamO0FuujvIlMxZZWbAOUHmAM8yt39Ccojv5pEfrls4MM+0lCkCvwsqzKz6F0Ad8L9uDeTjbkmTynlVYpZc/ddAz1T6yKe/DwyIXFBkworniqQOhvfMNPJekczBIJIF2oI8I+PEXVpB/IErI5fdx7EqZC4qUwUuCRrMHHqnmTbiXwh0EPcFCwmVy6r0WfFjiXtnaW70GPH/7eaETEeZKXBFkK6yuw2qRIjv5pDtrpuv8vEHZQrAVUGZmXN1zdSq5p0lcsVfSCETK9MErgliZna4J65e1by+R4pn1B2Qua7MELghSB2azyx+4z6fj/gvHYyQW2VJ7tA8kyiTB24KSsw8/6+BKuB/+DVk8wtl61RuqdIAbgtiZjakNNNDfnN/vdNHdvjHazJdZYbAHcGEmQMH/HfU8Tz7Rd30YfO5gMNcM1cmC9wT5JmZ/DugBPh7WRn5VpZUqPRUqQL3BQ1mCv8WaB82v1rIxGVjKg9USYCHgj4zm69rZnTYnMZB/MdNJ2T6ykyBR4LoVz7dc1qVAuK7ReSMe44q/colc2XKwBNBjZknN9wDr+m2TLdNZqBMJ+x2mVm0zH2ZhukOTXdE5qkyY+CZYKaZ7ZrJ1MJuFvHdqMZFa2VygOsWmUn+OlAx2arJ1qgMVamH2RYzL89pJjbdBFn2h9Z0ybxQpge8FAyZWb5Gh3diulPk/RV1Z2ReKZP6bQ4jQfY3HtOvaSaP+G4B8d0imdfKlIA3giozw22aaZhu03RbZN4q0wbGgoSZsy9+QvqmOzDdIZl3yoyAPwWpIzyiHNFMFvHdCKn6vzU6wsVQZfLARFBi5tcf7o2G6daQG38fqFP5oEoD+ChoM3Lr7wGJqXaRPW63PSqfVOkDU8GImTd3dXSnpjtDTrhu6ihXKJVJA18E0VHON3/VTAHx3SKyPtGaEpmvypSBmaDGTOW6fiuapttClvvPRZH5pkwH+C7oMrNvpr0MTHeIxO44jMj8UGYMpP4uMGNm0NZ+M/Wwm0Vit9+oziU1ZXKA6xaZ2d1Ut2K6VdOtkVmoTB1YJGgxk1momdh0E9Ptkkkr0wMWC4bMFN1HGiamO0Ve+j9WIbNEmdQxrrEJssf4MLO7P+QR3y0gvlskk1GmBCwVVFX57h7NTLdpui0yy5RpA8sFCTNvE830TXeAlNzxHZLJKjMCVgimzDx1T5rp42E3g5y/rjXZ41z6UiYCVgkKzAyOaqZsuhXkoHt2q5KJlKkBqwVNZh64/XZMNz5uTr2SWaNMF1grGDNTX+vuQ4j/L+9SJ3hP4P9M7gSXkpTJAOsEOWaOVd2j1wnzd3PIqCwpk1mvTAXYIKgzc9rtt4X4dyxt5MgXSYdMXpkY2CjoM/PpvwRGQNa9AxgjZR3dCZFNikyBzYKowR8/RNptoWEe1ZHuGUmpwRUVZcrAFkGTmdltd28w3RjZ4L/ojsxWZbrANsGAmWeuOzbdCbLVdadkisrMgO2CzElOJ7luDvHdPOL3WzgZ7LcI7BBUmPn9tPtwK+LfZzbU1ZImlZ2qtICSIGbkgjuvYqr9sDoIq0Ngl2DCyDb3X/yfmkN+qGoacdXMKS6VKJIF9gjyjLx0//EE4PdaNv9OhUpZlSqwV9Bg5s//DWgD2/1FMeTFKklM5RdVEmCfoM/Mtv8dGJns2GQnYXYKVATp05x3dh+YiRB/FHLItCzJn+aCgTIF4ICgzMwa92qvZrp15JGgQeWgKk2gKugo+0+Brqn2kFUHJH0qh1QZAIcFY2Zufv/PkQnyp/s4+FRrXuguNkNWXtNtTDV5jbBNU2lk33JNZZBvI63JIod+0ZoI+fm8yjlkU1lr8sgvDffqA1mxT2uKyIuMe+ZAbripMtJyUxXku1tTRX4MtecasrUiqSMHKuo0kNszrWki592aFtJdqh22kdpe/Sw6yM2Me4RGFvW0JkHyrtxFyq7c09Q9rekjp5dpzQCZuqMxRBa4WzpCMq48Rvr33P0H2eLKU+Srm5ohb/fq30qdmcvkfwHSwHN3Z8loyXpJFnl80r2ZRL45ySHX3T+VR8p9dYpIvyKpnDEv9JHb/rTFGS7pudcZQE3QMt0YufxJkphul8xvyvSAI4IhMzcWu4c7s98pcmoqmZE5qkzq7BzqguzZsJtH/H4LiO8WyRxTpgQcF1SZue+6DdNtIhddt0XmhDJtoCFImLnkrvn2Ef/CboAs2e9e6JM5qcwIOCWYqpLWTPpc2M0YyZ7jgpgyEdAUFJg5G6lbRvyDeAXxT2VVMmeUqQFnBU1m2vu1l84589IOuereQCRkzinTBVqCATOfTrlfd9OdIE3XnZL5XZlZ2M20eKH/RN0c4t+G5JHWVN1Ci0tZyhSBC4IKM3XXrZtuw3SbYbcVdmNmuo/V7ZluHzn9Ut1B2B0CbcGEmQvu55b63XxoE2ldUzfzOxe8lMkClwR5Zj66n1vJdMvI+VjdCpnLylTDboOZZTlV2oh/49dBfhySxGQ6yiTAFUGfmSNuvyPTHSPFvZIJmT+UmYbd9HmewNxLsQjxxyGHTN0b9vx5rqQpUwBiQZmZq+tUqSH+/lBHrgy1pkHmmjJN4Lqgw8wpd0W6a/bbQzpZ9yKPzA1lBkAiGDPT/k0zM9NNXZjLXXcc0he4kqZMBogFOWbap9QtIv44lBB/UalM5pYyFeC6oM7M5yOaaSF+v23kuDsOHTK3lYmBRNBj5t4aVYamO0LeXXZvZ8l0lZkAdwSpNhfB3HHIIr4bIc9cN9fmmp0yecB1q8xcPaWZBuKfL5pI8bN73iRzT5k20BMkzMS/qds33YHpDsPuCLgvSF3khNMPVbKIvz9EyOIX6uYucvFPmTzQF5SY2dlQt2q6NcS/+amTeaRMI+y2mem6t4AJ4o9DF/la15oemcfK9IEnghEzJ90phqnpzpBF7oRT6hJXA5VJA08F0SWeY/41UAB8togsddkSlWeqlIHnghoz/jA0TbeF/Ozuim0y7jB0gCeCLjP+MAxMd4hscPsdhYdhHB6GWXgYMpfDbBaJXDa6HByGHPBcUGTmibt2abJVJD+U1KgMVakDLwQtZvzRjU03QfydrEvGHd0e8EQwZOZ+TjMT050i07JkRualMqkOFzMF2Q4v+r6pm0d8t4A8d90imZEyJeC1oMrM3X8CNEy2iax3nx5tUXmjSsKS7a+0pI/suvcTMkD8S+ghmbfKjICxYAy8E0yJJB8VSV8J95tB/Imo7BWugCoTAe8FBWbW+U8Pm24Fmf01oEplokoN+CBoMrJln3sLYLIxstYd3oTMR2W6wCfBgJnDLzUzNt0J8vWTe/NJZqrMDPgsyPwxn9lfVyWH+G4embhu4Q8ugSpTBFy3wkwlrUrddBvIwqm6TTJflWkBM0Fsuj3kZs69+TTdAZlvygyB74IJM/fdS77U1XC/aeTrZ3UzV7kmqkwWSP09IM+M+yuB0lXzcR/kg8tWqCxQpQosFDSY+ex+/dpmu52r5hwvmUXKJEBa0Gdm83HtZWT2O0bWv5BMyCxWZgosEaTjsBshvptD1rpuPuYKqDIFICMoM3P8ojvJG5uTvMjyE+7VG5mlyjSBZYKO6XZNt4dkXLdPZrkyAyArGDOz9K8CM3MYUtfCw5u+FhzeDLBEkGPGZYuAz5YQf3TLVNzRrQAZQZ2ZvX8ZaAH+ILQRf3A7VNzBjYFlgl6YHZrsCPHHdkzFHdsJkBWkrvO5v5Jmsoj/MvsI8a9Oc9e5uqxMHlgpKDFzx73LrCJ+vzXkurtIViezSpkGEAnamnF/15OYbhd5mpX0wm4fWC0YM1P9h8DsurmP3TCPbTe42qxKBlgryDHz7Kpmiojvlky3HHYrQE5QZ8Ztt3XDvMc02U6YjYF1gh4zJx+40+hmuyNkVpaMyaxXZgJsEKQSrv9c10wWOevvZcgLJ7mEi9jK5IGNgiozy/4G0EjMyzLkWVnSorJJlTawWdBn5qP74kKTHSP+1dOESkGVKbBFEN3k8dFfHL9pLo4jb09LSje5UqlMGfhFUGPmjv9rHNNtITm33zaZfcp0wm6Xme933FlB0x0i+1x3RKaizBjYL0jd4l30Js1kEX8vixB//8jd4qKiMnngkKDEzN3z7jEH8futmW497DaAw4I2M+t2aSYx++2abi/s9oFfBSNmfv9Du5ua/c5MN3U76KaBmiC6zTXnomYKiN9vEen7zwmT+U2ZMnBEUGPm5mXtrnnb3M9Mt03mqDIdoC7oM7P8kLsPIf4MyRjxf4I4IXNMmXSXz1W6z8NGiM/kkO15d2i6XO9RpsySbU/cqyOTqXfNH6+QOaFMhyUblmo3XZPpGemTaSgzZsnWgXsT3DVPTHfC+0j6DleJlMkApwQ5Zra7bhHx3ZLplsNuJezWmfH7bZluG5mUJR0yp5WJw27P7HdouiPTHYfdSdhN3Q33m71rzn4iM9fN3eXimDJ54IygxIzfb9V0a6ZbD7uNsNs2+01Mt4vs2KA1PTJnlemH3ZHZ79R0Z6abuhd004DrRvf4cMMN/RoU7pnHIqRblpTInFOmDLQENWYi122abst022G3E3a7Zr+De+Y5Dxm57ijsjoHfBTOz30wv7GYR3416QTcHuG6xF+63gvjjUEWiFZIamfPK1IGWoKUZ141NNzHdbtjthd2h2e/EHIdpz/zPOWE3dT84Dtn74X7ziO8WEN8tknHdUtitMrPpsWYaiD8OTcQ/TrbIXFCmDbQFCTOj+9pv33QHpjsMu6OwOzX7TT8wH/NF/O9x9kHQjYCLggIzfr9l062YbjXs1sJuk5ma+8BWB/HHIUbOuHM9CZlLynSBy4IBM+tdd2y6E9Odht1Z2M08DPebQ/xxyCMXXLfwMOgWgY6gwozfb910G6bbDLutsBub/fZMt4/ccN1B2B0CVwQTs99UP+ymEd/N9INuFnDdfD/cb8l0y4j/uVXCbhX4Q9Doh/ttm27HdOOwm4TdPjOf/j0wMtkxcuGsZErlqirRI94RrXXPko/MsyRyOyspPeKStjJl4JqgxkzJnS1pmm4Lueq6bTLXlekANwR9Ztb9V8DIZMfarvvox4RKosoUuClIP+bvBBqqREjrnrvgivivtMg/5pK8MmWWfC4qU0O+31WmbjKNMNMEbgtiZpb4L+CT+D8/R/z7lAGZO8pMWLL/lIZST8JM2kjmCRfclcmzJP63QMnMlJFnFUmFyj1VGiyp6WpN+4n57+GRL+5DUjGVnioJcF/QZ+bPt5oZPTG/F6Y7IfNAmSnwUJAezGd6/ysQDcxbPMQfhvyAS+eqlFkyUKVmKnVTaVB5pEqHJWv/BtA1lR6y8IV7rKXyWJUxS34d6SjMTCb1lKN5UmvST7mgqkyOJeV3WlJE/AEvIeuuak2ZzECZCvBUUGemsE4zLcTfQdqm2yHzTJkYeC7oMfPuqvsfd013hPg7yJhMT5kJMBSknvE4/1UzWcQfhwjx3dyz4I6XB14ISswsibXfKuL3W0P8caiTccehAbwUtJnZ5vabmP12TbdHZqBMH3glGDFT366ZqdnvDJld0ZrUcy6EK5MGXguaz/lE1Eo9U3UQv98YWePurgmZN8p0gbeCATMP0u4JxHQnSNF9kp/KWJXMkKeLvwjkAB/JIy5SGHLxXJEi8KegwshGd3vqJttA9pzQmhaZ98rELNn53L0tN5k+csBlhmQmykxYcsk9OrwIK2nEV7IvuOSuSp4le/3rLMTfP8rI81taUyHzUZkq8EnQfMmp80Pu/vHSvJ5HTlckyUsuuSvTBT4LBswsOqzu2HQnEtedkvmizAz4Ksi84vfPdXOI7+aRC/skhVdcYVemCHwTVJhZ7bp1020ge36RNMl8V6YF/BDEzGweaqZnun3kaEUyIJP6+8AQWCCYMLPXdVOjsJtGfnbdzIhL7MpkgUWCPDMXXLdkumVkzz5JhUxamSqwWNBgpu66bdPtIM/3SmIyS5RJgJ8FfWaWHtTMCNmblYyRXyqSCZmMMlNgqSD9mvuZO9cfvTaf5kUm7nE+/5qrwMoUgOWCKjM7j2umgfh34U1k615Ji0xWmTawQpAwc2y7un3E/9XDAKm77pDMSmVGwCrBlJnXx1RJvzGfTELeZiXZN1wGViYCVgsKzDT3u0cv060gVz5rTZXMGmVqwFpBk5nzifumesQfhxjZ47oJmZwyXWCdYMDMi9jdq8x+J0hxhWRKZr0yM2CDIHrLtW93fAuI328R6e1Vt/SWK63KlIGNghoz8f8MNIHTLtsy2TaVTap0gM2CPjMt99f5I8T/z65j5H5W3QmZgjJTYIsgPeZG99SNEN/Njc2fbYz5+1tlCsA2QZmZ+v8G1AD/qFNHXmYlDSpFVZrAdkHMzJX12lzPbLeP3Ezc7x+ZHcoMgZ2CCTNfD7hH9XdhN42kbqqbeTfPlJTJArsEeWaO/nugBPhjWUY+uu1WqOxWpcmSTf5aEfLqmHbXRra787odZJ2bipH82L0+Ri67+xmwsOMOHrvZ4w4eUBZMTDb1Z5BNA1mXzfwZZLOAy+aZmUw1UwqzZWDZMXfsqOzVkirwi6DBzMy9umyH2U4IMZF9ggSoCPqMPFus6iiMjIGf/d+2UNmvJVPggCD9nhM9+jWKAFfNhZB/zx8ZCwpAVVBmZNs/Bmphow5c3ON+NYkc0pImcFjQYWZRRjPd9+ZSP9K97J4syfyqzACoCcbMLB1rZvbeXNidsN+zWpOecJFemQxwRJBj5jd33ylOzJ+1IKMbWlMmc1SZClAX1JlZd939siL+OLSR1a7bIXNMmRg4Lugxs8R/C/zE/FkL4v5/wzGVE6pMgIYg9YFrPVVFsojPRsjOR5Lch6CbB04KSswcvqubWEX84a19MF8LTuaUMg3gtKDNzPPnmklMt2u6vbDbB5qCETPXIs1MTWVmJPWRy7jKRB85Teh++gXEDxURf0q1ROasMjWW7HGZJuJvZQv546YybTLnlOmy5MlQmcFHc6kM2XVZmRGZljJj4HfBjJk33zST+WQu0iL9WGuiT1xEVCYHXBAUmdm9XLurmG5VkqhbI9NWpg5cFLSYGW5VN/5kLtKabjfs9oBLgiEzqf8HmJjtTpErLjujclmV1HQOHUF2yjmeJe4aLeK7BcT/p8ZFMleUKQF/CKrMnD7tvuDfdJuI//aYFpmryrSBWJAwc/LfAn2THSD+y/2GVK6pMgKuC6bMdN1L//TnsJtBZpfVzX7mGowyEZAICsw8/9ldojXdClL82V2iJXNTmRpwS9BkZvcTzXQ+m1M6yLGp9puQua1MF+gKBu42andjs9+J6U7D7gy4I8h80R+iqpJD/H7ziO8WvnB9RZki0BVUmJlcUbeO+P02TLcZdluA22/MzK4tmumZ/fZNd0DmnjJDoCeYMJO5qN2lvpozhYjvZr4G3SxwX5BnZvNJzZRMt4wM/kugQuWBKlXgoaDByJl9irQR/9zQQcqH3R2PTF+ZPkuWHlBmZDJjk5mQeaRMehbuJkJ8Jod8369MfsbVHWXKs3A3NZOpm0yDzBNlOiy5/EVLxsh4qPBsZp7Fv3H93X+VzTeuGyicY0nVZYqIv++VTKYSZuos+XBCQy3E76aN7HWZDpmnyvRYcr2ooaHZzQhZGiszCTOp77w7PaqhLOJ3ExnJfedajTIlljwpaEkV8bupGamTea5MAxgK2sws/6GZ5Lt5qYeU3WupHpkXyoxYUmgoMzWZGeJfS6V+cAFKmegH7/DeaEnhh/lQOrIv0ZoSmVfKlIGRoMZM0385PeKPVQvZ7rrtsNsBXgv6zJz9qsoI8f/F9BhJ/KUBMm+UmQJvBenU2aAbIb6bk7huPnWWLlAAXLfKTO+VKg3EH98mUs6q2yIzVqYNvBP0mXnruiPTHSO7/FtzMn8qMwXeC9IL5jP7jqsbIb6bQ3qx1uQXzDMTZQrAB0GZmaduvzXEn0GsI68vSRpkPirTBD4JYmAqSIDPgm64ogd8EfSBr4IBMBMMwxUj4JtgDHwXTIAfgmm4Ygak/ksgtXAOCwRpYKEgE67IAosEEZAW5IDFgny4ogAsERSBnwUlICMohysqwFJBFVgmqAHLBfVwRQPICprACkELWClohys6wCpBDESCBFgt6IYresAaQR9YKxgAOcEwXDEC1gnGwHrBBNggmIYrZkBekFo0h42CNLBJkAlXZIHNgggoCHLAFkE+XFEAtgqKwDZBCSgKyuGKCrBdUAV2CGrATkE9XNEASoImsEvQAnYL2uGKDrBHEC+aP+bE7sVCD/EvDfrIHvfSZUDmF2UmLElv0VAqfTa8fops+eJOJqTnmX3KjCvzJdWVZ39SWbTB0RTqFx3NoOJOR6n9rNrtqNadU+ljW9SA0vvdqhZU9NSBYk+JbfWg1AG3agA1PY206qCjCRRVHc2g4iFH6TscicOOsqKao5zoiKOCqO6odMfsvqJVTX+8RG1HDUstSx1LiaWepYGlkaWJKHY0s5S+ayhrKWepYKlkqWKpdg+666gBjT01oT9jd0IB8b8rMfKH/78G781/VyrucRvYLxgws+CAKmPTnZjuNOzOgAOCTI9fpDPuBRDiXxLlkStf1C30gm4ROCioMPM0p93VTbeBJG6/zbDbAqqCmJnV/noY4o9DH9nnHosGZA4pMwQOC1L35zMX3H+Jk0V8N0LeflY3f3+e+VWZEkv2uw8lV02mhhz2fxpOpqZMA/hN0Gbm8UdVEtPtIv48cZ/MEWVGLHnlMlOTmZlM+sE8c1SZ6MF8yZdf3B0C8ZmikTKZujJNlqx9riUdxN9HYmTbVfe7QuaYMl3guGDATNb9EMamO0Ee+e8PI3NCmVnYzTzkcfWuZnKI7+aRA+5tSeHhPNNQpgicFFSZWT3VTAPxbx+ayJ7bkhaZU8q0gdOChJm7Bfd3OKY7MN1h2B2F3Skzkdtvuh92M8ila5Jsf55pKhMBZwQFZl6eULdsuhXE//f1VTJnlakBbr9NZu411O2Ybmy6Sdjtht0BMy/cfsemO0F2XJNMyZxTZhYeh+jRfGaaqFtA/P2siBz0f+P8aJ5pKVMGfhc0mblzWjMDpHbU3QLEv0CcIN8rkinh8wpnHvMkUtCSHOJ/+/NItEJSfBxkKiw5fdH/JYN5zkD2uUyLzAVlYmU2uh8C8viI/6uE8GamEX8zM0/m4bbCeZasdjez9MQ8yCH+ZlbDTIMlcdudDEb8zewg/mYmZC4q02fJnWNaMjI3aoy0T7hDQeaSMukBL2u2aihC/I3KIdtdJj+YZy4rUwA6gjIzVy+5s8OIv5V1ZL/rNsJuE7gi6DDzwf2xXtd0e4j/mGCfzB/KDICrgjEzxXPay8wch9RT89T4dJ6JlckA1wQ5Zra5bhHx3RLi7zRlMteVqQA3BHVmjrtuy3TbSC7Rmg6ZRJkYuCnoMbP0iGaGpjtCJmXJmMwtZSbAbUHqGT9r92HDLOK7EXLiuv/jhXmmq0weuCMoMfNpi2aqpltD/PGtk7mrTAO4J2gzs9X9jwuJ6XaR18slPTI9ZfrAfcGImUsdd7kZ8fffmemmngfdNPBAED3nNdljzRQQv98i8l1QovJQlTLQF9QYueqyTZNthdl2mO0AjwRdRh677MBkh2F2ROWxKmPgiWDGyE334JAZhtks4rLRMNhtDhgIihpxVwUrJltFXgpqVJ6qUgeeCVqMdE8pG5tsEma7YbYHPBcMGSmd1MwE8U8MU8Q/283IDJXJvpgvebJdS/KI313hhXlSfzHPvFCmBLwUVJn56H4BGi/MRQPTbYXdNvBKkDCz95hm+oi/2QPEX44ckhkpM2XJsq1akn4Z3uwM4p8HopdBpsCS8+7pr4z4W1kxmRqZ18o0WbLePQp1zG5i5PlySULmjTJd4K1gwEzT/RDGZnsT052G3RkwFmRecbWnrJkc4rt5ZLH7/EfhFReAlCkCfwoq6m5Tt47449BA+lfVbYbdFvBeEDOz8poqPbPfvtnvgMxEmSHwQTBh5pXbb2pkTpkifr+ZUdDNAh8FeWaWn1SlhPg7edlIhcwnZRosueR+t9tmex0jMZkXyiTAVNBn5r67W41G5sKd6U7C7hT4LEi/ns9sdDc7QvyNzBnJvw5udpklXXeza4jfTN1Ig4zbXhOYCjrMvHI3u/vavCY13X7YHQCfBWNmXlxSZWa6qTc80Nzwf3TCJUBlMsBXQY6ZeKV72Eb87kqmWw67FWAmqDPzrqndtRC/3zZy33U7YTcGvgl6zJxa7x62TXeEXHbdcdidAN8Fqbe8hTqnShbx3Qh57Lq5t0E3D/wQlJg5+k0zVdOtIXtdt04m9V8BDWCBoM3Mnj9USUy3i/ifWy/cbx9YqO6ImW3uiWj61pwWNN3UOOimgUXqRuP5zI/1qhTG5kQG4n9upbBbBtLq1pg5fEaVpum2EH8/a4fdDrBY3S4zm1qqDEx3iPj7wyjsjoEl6s6YeeT+wDrzLuxmEX9/iN4F94cc8LOgyMz+Hf7vUMzrUsS/lKqRyShTB5YKWszkxurGZr8J4j633qWyTJUesFwwZOT0vwcmpjoNq6k/uW6uSPbP+Yr3fwHIAz5SQAZ/aPtFKitUKQErBVVm3EXdhsk2Ef+FRS0qq1RpA5EgYeZ7XZW+6Q6QeqztDsmsVmYErBFMmVl6z10Qex92M4jvZt8H3QhYKygw037mXk0g/oNXFcR/4UuVTE6ZGrBO0GSm645dB/FP1zHiX5wnZNYrM2DJR/fENX5vXk0g/lX1LMxkJgz5i14T8yoVuenWFCd8qEGZCksG7uGtbjINxJ+KapHJKxOz5Mc5DfVMpo+cbEmGZDYqM2FJxR2+1AdzkhPxhzjzgU9ZKJNnyVZ3iEuIP8RlxB/iaphpsOR00z3xI/5GdRB/iBMym5XpsyTrDvHIZMaIP8RTMgVl0h954nSHOEJ8Jof4Q1z4yKdHlCmzZKc7fDXEH+I64g9xg8xWZTosWecOcRfxh7iH+EM8CDNjlhxxh3hmblTqU3iIM5/49IoyOZYscoe4iPhMCfGHuEKmqEydJVvdIW6ZTBvxhzgms12ZHksKNfdSD/GHeGRkTGaHMqkpD+f+v+GdmrONRvLTIFNiycT/r7tT80LOSIPMTmXaLDnvH9kQfxO6iL/f9MiUlBmx5K6730zNTZhNzSnqz0Em+jxf8rXp7uifzasyxN9vymR2KVNjSdvdb5om00L8/aZDZrcyXZY8cfebgckMEX+/GZPZo8yMJTX/yPYlPMRZxB/i6Ms8U1amyJLd7hBXvphXVIg/xPUw02LJBXeI4y/mBRTiD3GPzF5lhizJuUM8MZkp4g9x6iuf31Im+5Vrhe4Q5xGfKSD+EJfI7FOmqqH1WtJA/JFoIv5L5lpk9ivTBg4IEmZGpzTTN90B4l9zDMkcVGYUdqfMxBpJz8yJPMRvNzubV6qqRMAhQYGZ5LBmyqZbmZmXSGQOK1MLu01mHq1xz48z82kIpOK/KIbMr8p0gZpgwEzJHd6x6U6Qna47JfObMrOwm/nGfVzZHOCzeeTOCWUL3/hEiipF4KigwsxFd3jrpttATrhuk0xdmVbYjZl5v0fdnun2kVuuOyBzTJkhcFww0cxxdVPfw24aqbtu5jsfNlEmC7hunpnBOlVKiH8lXka6rlsh01CmCpwUNJhJ3N2hbbod5LjrxmROKZOE3b5mTmtmhPjf4vF38+ECMqeVmQJNQfrHfGaNOw7RD3N92kj+B5+pUKYAnBWUmdnkvw38h7k+jRx3Z34bZM4p0wRagg4z+29ppov4W91DyoclfTK/KzNmyXX/zZBme6nUuflnjdz20qlz849UKJMBWoIcM3ePqltE/PZKiH+eLJO5oEyTJVe3urN4yMWz7sEK+eEfrMi0lekCFwUDZk7/X8AY8M9LE8QfhymVS6rMgMuCzIL5zPKCtpJDfCWP+O0WFswzHWWKwBVBhRn3Q6qbbMNkm2G2BfwhiJn5xf8vDKbbR95fV3dA5qoyQyAWTJjZ1VIltTDsppGP7v6bWRh0s8A1QZ6ZZe41SMl0y8jIdSthtwpcFzSYOXlGlbbpdpDXrhuH3QS4Iegzc8p9FmFkumOk5f9nHjKJMlPgpiC9aD5z5IG6EeK7OSTxX2u7aJ65pUwBuC2oMrPg3wMNwD/gNZGb/lBRuaNKwpKJ+5NvwD/wD5DZaVVGVO6qMtUt0l7S6XAvGcS/JI3S88o9VQos+aK9lAG/lwriPwJVo9JTpcmS8xfdvQE59N7dG5C7tyUJmfvKdIEHggEz1d3uA6SSnnsYMt0pmYfKzIC+ILN4PnP5oro55PBElTziu4XFwX6LgNtvhZltp9StI79+UKVhus2w2wq7MTMHW+r2kNpHVfqmOwi7w7A7YebCZfc4tGQuaxRJA/dcNrNkXnmkShZ4LMgzc9L92EpI/Z57GDLdCpknylSBgaDBzEH3ignwd9YO0nXZmMpTVRLgmaDPzON/AoxMdoxs6yg7ofJclfTPQSUCfCWHnHNHIf/zvDJUpcySFR0tqSH+N6mO1KeSBpkXyjSBl4IOM3nX7SJrFOkBx1y2T+WVKgNgJBgz87v7Sc8Q/wuayoTbTWfmmdfKZIA3ghwzsesWEX8PKiF+v2Uyb5WpAGNBnZk9n9zbYsT/lNrIEdftkHmnTAz8Kegxs2Sq7hDx/wfayByHMZkXykyAl4LUUp4H3H6zSMt1I8R3c0uDbh5w3SozvxxQt4H449BEqq7bIvNemYQliyNl+iYzQL65I0NlosoI+CCYMvLRPYeml4XZDLJFkF0WZCPgo6DASMO98yybbAXxd6oqmU/KNFmy82dlOiYTI9+1JKEyVaULfBYMGBkcd698THaC7BRMw+wM+CLILJ+PLHIPmjnEZ/NIy93owvJ55qsyFZbcyylTN5kG8kNLmlRmqrSAb4KYkR3u3twz2T5yRDAIs0Pgu2DCyO/uJ53Khtk04m90JjvP/FAmz5KK+0mXTKaMuBtdoZL6r4EqsEDQYOS1+0m3TbaDHBHEYTYBFgr6jPTWKDsy2TGy64vWTMgsUmYKpAXpFbyudOfmIsR3c5Kb7uXTinlmsTJllvz4h0DNVOqI312DittdE1gi6DCzsarddU23Z3bXJ/OzMmOWfPg7wMxUUivD3aVXBrvLABlBjpmj7reviPhuCfG7K5NZqkydJaljWtIymbbZXifcXgwsE/SYSdzBG5ruyGxvTGa5MqlVbM+9IgR8JUIOut3lVs0rWVXywApBiZln7uBVTbeGFK5pd3UyK5Vps8R9CiQxla7ZXS/cXR9YJRgx88btbmq6M7O7VDTPRMpEETfS/acWgK8UEb+7UhTsrgysFtSYuel21zTdFuJ31yazRpkuS/ra3cBUhmZ3o3B3Y2CtYMbMFbe7zOqwm0X87qLV80xOmeJqMtpdxVSqiN9djYrbXR1YJ2gx87vbXWy6idldl8x6ZYYsea3dTUxlanY3C3eXWjOHDYLsmvnMA7e7POK7BcTvrkgmr0yVJc2/ADRMpYn43bWouN21gY2ChJmNbnd90x2Y3Q3JbFJmqht5WkvSa8NMBvGZ7Np5ZrMyBZbk/wVQNpUK8qjsHmSoFFSpAVsETWauud11TDc23STsdoGtggEzp/z3iZnuxHSnYXcGbBNkcvOZhU80k0N8N58zrwFz80xRmSKwXVBh5s/H6tZNt2G6zbDbAnYIYmYS/2Fw0+0jBf9hcDI7lRkCJcGEmRP+f6peF3bTiO9m1s0zu5TJArsFeWYO/J9AyWTLyO5E2QqVPapUgbKgwcw197VJJttBFt5UNqayV5UE+EXQZ+b7Eh2FEeLPHI6R87G6EzL7lJkCFUF6PRce3DnLCPH7zSGXT6qbXz/P7FemABwQVJm54f9zK8SfzG0iy/23D5A5qEwbqAoSZjYddH+VbboDJHHdIZlDyoyAw4KpbuN299i1wTx2If5Ls7Ib5plflSmyJFvU9iqI314VOe/OdtXIHFemDpwQtJjZ3VY3RvylnQQpnlG3S6ahTA84KRgys9Dtd2L2O0Wabr8zMqeUSeXncFqQzXPndPvNI/4KVwHZ7PZbJNNUpgScEVSZWbxPM428uVuZbovMWWXawDlBwkzkun3THSD73HEYkmkpMwJ+F0yZ+eQ+EZreGHYziO9mN3IhUpkIuCAoMLPkubpl062YbpVMW5kacFHQZGa1+8L4junGyIGse5Ikc0mZLnBZMAY6gglwRTAF/hDMgKuC1KY5xII0cE2QAa4LssANQbSJEyv/FChsMi/cEX/9tkQlUaXGku0F9/SI+MvALSNtMjeV6bJko8sMEP+YPjQyInNLmTFwWzBjpu++ymizeZ2O+BsZbZ5XuqoUWdJTpWIqVcR/RqFGxW2uDtwRtJj58dY9+ZlugvhvteuSuavMkCVfXGZiMlNkhcvMwu2lClxaE2QL85kX/tuCEf8TKCD+ZhcLQbcE9ARVZpopzTQK5qW76bbCbhu4L0iYWX/EPXAVzAOXuQVDMg+UGQEPBVNmXiaaSW8JuxnE7ze7JehGQF9QYMZ9TVEZ8IehgvgLoNUwWwMeCZrMpMfuxb3pxoj/8rkk7HaBx4IBM2/d3WFsDsPE7HcadmfAE0Fm63zmdkozOcTvN488XKXH4sLWoFsEBv8B/l9irgK8kSPpunvGLNtaSLK8rzdOsszMCjMzM8ghhXmZmZmZmZnCzMzMzPC/p5mMfPkPNwe5ua/LVa/fq66pmZJ0UPhGUbpacpb6us1jOidLs9OfvWjkqD4ycvVBzSZL81T+9a2Spfma5XQUaIRzLVQpRrVOlsbSP1/FkqVF4l18H3mLVe1ddJWoGIv20BWXa7WCFQRbJPmKym4HYZVU+cE0KgslYx8ZG2nsq26VzH7qlOX0VFFoPY2q8sioJp7dNKrrU6CXLK2hyFN01BTxkzRqMTLTT5bW5jqLK7jO5uq4zuFah+tcrvtznce1lOt8rgdwXcD1QB1yLtM4SDdGRl1pyKgndRn1iR2VnSxtwHU014Zcx3BtxHUs18bqgyUENtHDJKOpisxIM67LuDaXylIGWqhu9zZKlrZM17RdsrSVbv8H9LQWy/s02uhmv0ejrW7REmLaade79LTXsYXpIIyMjkpSRie9eGR0VssJ3EWi4umqey8joTPKOFiPq4xDdFgZhyoNGYep+WQcLnUZR4hZxpHSknEUjfUyjlZ7yThGDSfjWJVAxnHKWcbxOpeME/RwyDhRT5+Mk/RSk3GyXncyTlEPyDhVz5+M09QnMk7XOJJxhhpUxpmqhoyz9MjLOFtnl3GOzq5qnKuzyzhPZ5dxvs4u4wKdXcaFOruMi3R2GRcrQxmXSEvGpTqOjMt04yRxuY4szxU6sowrlaGMq5SzjKROIaNMzLrLV9NYrPt+jQyFrlWdZVwnZhnX01gtI6U6y7hBdZZxo+oj4yZVTMbNqqGMW1QEGbfqyNK6TQWX53aVRcYdKotCd6oIMu5SEWTcrfrIuEdH7sde7abZw+btbmg8R6OHjOdp9JTxAo1eMl6k0dtIS13XR9bXsvrKel3928+k+59Wf1nL5RuQ9q2iNVAkc3OSpYNkzKMxWMZ8GkNkLKAxVMZCGsNkLKIxXMZiGiPSydAYmU6Gxqg0T26ydLTRXVvLt94YuZbSNVau9SPoGidr+Dha49Mp6+U4Qdbk8bQmphOdSGuSrMdlTZa1XdEp6eQn0JqaPqSsabIGL7mf77/pMp8X4QxZ02XNTG/R5llp4fdaJktn0wr+vz1L56SBvWXOTQuO4Kt5Xho5ktb8dDovKbwgbT4vc2F603DGF6XTkLU4HdbuJbK+/5E6S3X6ZTz9MhnLaSyXsYLGChkraayUsYrGKhmraayWsYDGGhkLaayVsYjGOhmLaayXsYTGhnQqgym7MZ1+D+W3KZ3/5u00N6fN9TK3aM/93LNVxuS8ZOk2GWurJUu3y1hHY4eM9TR2pks5iWXbZQr7+qZrt/27858sZxJxZ2Fgy5wHD1mtbR68ujbP+fDgt7a+7Wq7el0DX3bCcznIRk7K5SL3sCITuPOQ1ygry+UnslxB4jfjCpGPwpSLyS5CAYpSrhgxFB/hShLGxVGCeMpVsF1RoSgrYKioxXeVUBGVylxlSldubWMxrzAI78Nt+2If7Jt0+zG2H5OMZRWGwSr0VOHk/j3NLFcVVbVUS/To2TvPVUc1VC9zNYJYTdTUUivRzdVGLdS+0QE1gJRzie6E3+bqwKFOyu3Pw3AKugNQ6g7EATjwCHcQ99TFQah7o6vHhOqjHuqnXAM0CApB1oYJ3zVCQzRKusbw0JhZBXkq2ISeJsw8U86maKq6NaNUc9WqBZqhRcq1lN0KzdEq5VqjJVof4dpQry3aoG3KtUO7qPDt6e6A9uiQdB3J3vEv6tIpqGlndELnMteF8S6saToYc13RtaTwNlP4extYtoEHC6/M+fBL0074aocYF0Ni+NqXrSUvaIJ4sDWXgFw2CnzJ5SV++81z+chDfsoVkLWQ4cKkiyEWshb8eeEe/yvhnv8r4V57KzzYeH43c0/u7+peAsGjXUaB7BCXLfUaXEwbL87FKpfsuraG1Ot5cQpnK6U85CAXefHeaap8IvOVbrbyLFA2TKEgePThihguSrpiFIcqsZLCK03BX3/xhBAvKINaVMWJ95GXiXrIjl5MOWmhXKWScnlkyWc4P+kKUBCy5P35evfd23r3Mabon1TuYAoi5Sam4A8HQzYL3S8stI/8KI0/FDrOQvt/KPSfP3//vT3/Xel2y8mI42+I1+CidhN3DYmrzwLxARlxJans/iiO/8hTNnBvT93fmFjmCYv/jScsxkXKXKz49UxJWQnkavGjJ2xQ+ScsS7Gsv3Lj/8oTNr5c//kJ6HzILqNKTojJCYqfo0yqcGEmlbl4rW0cOboVuVqquDwtlV2+lrgrUFbIR0F8cJq6kFsKeSJFY0xGmRUhBo16qpYwXJJ0ccRD1eKSwvnBm6jgn8tOraHs2meJy2PVouzUKPyrUVaJy9eoLFBeKaWkQsagTAsRiw9JyxRxe5GqzajP5JRpCYpRknJxZlCB4QpJVxEVwwzif76Nhu5tG/3Hb96wvb15G4yJ/5nMKusDY3yyoEoOeaF8DeWojAsCVGGYkxY1eL66XanFh6f3FnNvcdgMea5EqUcfKJlWRYYrJl0lVArTqlBSOM56sW4203d5iabBfSgrNzIKlH5DLky/LhemX8rF62DqcPHbeFW4ZKsnmWgHU8wlV2kU1LWlTLowPFqM/hjvufwNXZGWuo5goUq0+I4MTUwdZqvUK6ICKqaYb0E9r4qrrCXu9hGi2O2bRuyHfbFfylFeB66KIhTruKiEytgHVVA1PiKtXI3K1fiqEC7LVU/vrYHqqJFyNXngWgzXSrraqB0euGZJ4QRjiv+1Ps/TGy08ag79OWF7x9TsChOlM+YHDRcfKSSrzHowNcXYfOnUYrqrKVdE2WKGi5MsT0koW/TfSG3UXqb2n39GR+/tM9ra+P/Sh6sx8mb9y9tWBtvGFhfNNXyf227+PblcTbl/52dmYdNys1BEdYMZWBrMQGiy1Q1emyya/oLL1VdO5BZlQcHgkxAfzpgplKPU5WupoYcX+e2zhNIzGDhjWsCbZ1yxnpUyVioWVgqFIRp8+qyePX3hdJX1LB2X+Y6ZcvtRfr/DftevQv0q5fWrBlLVUA1V22eZwFk9cNYAH7r2WTZw1gyctQLR2hQFagNlzqEWXNLVQR3UjI6wf4AuDdAHJLzgi2eZOwilOCjp6qIu9o+OUC+Ro6+grgHqu4ZogIbHuUY8QmM0QuOUa8IjNImO0JRHaFr+CM0CqeZojmbts7zA2SJwtgz4WyV81xqt0LrMtUFLtEm6tmiLFpF+uwS/f6Kdvn+6juiAjse5TgkTfN1MuS7U7xLpd6V+10ifGolEljsYByNR5g7hOQ/FITg05Q4j7DA9NMRUcYcH0CNwBA5PuiMZO5ItEsSOCnI4GkfjqDJ3DGPHhM0Ed2ziLnccjsVxKXc8A8eHgVJ3gj4snIgTcGLKnRT8NnAyTsLJV7tTiDtFjylxld2pgfBpOA2n8t0QOE8PnGcEGmfiDJyZdGdR6mychbOT7hycg9NDNNy5LM55ONedj/PcBTgfFxznLmRxLsKFuCjlLmZxLo6KcwnFL4mKQ6lLA6nLcBku5VsscF4eOK/AFbicr7zAeWXgvCoQTeIqJJOuLHGTuxpluDrprsE1uDI6wrUB+roAfT2uw/VJl0rc5m5ACjck3Y24EddGR7gpUcXdjJvcLbjZ3YpbcOtx7jYe4XbchttT7g4e4Y7oCHfyCHeWP8JdgdTduBt38eUROO8JnN3QDffwZRg4u5vA28OAV3cT3YWeYaCXAa+eepkGgd5hoI8JEu1rQLOvSbp+JnGp62/Qz6A//xxgwKu3iQowMNw5KNw52IDmYEKHmMSVbqjBEIOh/HOYAa+BmZ3Dw50jwp0jDWiOJHSUSVztRhuMMhjNP8cY8Bqe2Tk23Dku3DnegOZ4QieYxPVuosEEg4n8c5IBr7HaGeyYbPgETjGYbDDFpNxUwxsyzWCqwTTCp5MP0030tMwIdWYa8JpBxCwhZpnomZkdZjDHgNdsU+bmCjGXCAS5zjOYZ9x8g/lmiVtgAudCg4XGLTJYROdiczDcEoPFBktMX7fUgLClprdbJqplpo2X/nkrEFpuEnArDJYbt9JghXGrDGisMie41YattMZgtcEanm2twVqjX7X4Y0OeWxceZb0Br3UkzQoCG8LARgNeG6QWBDaFgc0GvDYxEA8CW8LAVgNeWxioEuS2TbltN9hmsJ2V2KH0dwSVEH6nwrsMdhrsYil3K7xbpdTPa0HP75FvD30N046G7l6De01J4eeNzU7/r//aovlHfQRNDhs+BFWC+Rc9J7n8Sx8ugzryk0ui3BcHfTIodDE+fgXB46ePyfRy2ulrTfBh+AhXgcMtVoiYq5gwwc+qKVeZmyoHm/74m2o29Jsq9tHPkcxQo74q4xxwqJbUbEN1pVcVVdpnhaI1Et0432qgZlLzDbV4mJgJihPjqPOCUZdyTtMcrihLjRFsrZOIc9jV+f33VRxwgjuQagfhQByU0phjKwRJ1kM9fTCrH7A2AIcdn48g1hAN9YGuURBrDE4+vi2DWBM00dI0iDVDMzTV+RTT0JOzRRBriZZoobMpxqEXD4Ze0rXhodoEmwhry0A7tEW7pGvPQPtwR9x1YCA9/spcJwY6sQzqkSDYmWOgCzqjS8qpCF2j4ieQ0LkODsgP4fg7ODrXoThU5zosiB2Ow3FY9GPBESQ8EkfgyKRGII6KEj+agWM4DY9JumMZOJaJhzkcl/A5B4/D8Sl3AnM4IcrhRJyoHE4KmE8GZ2GYQ8ydwk2n4hScmnSnke60SOd0Bs7A6Tgj6c5k4MxIh7PQBrMw5c6hzjmRzrkJo1mI85LufG45XzU9V412QaAVDcaku5jxi6nFvy5gowX7L2H8UlyCS5PuMsYv0/5LtP/yYP8VjF/JsXhlUoMQV3G/hiT3h5klCShDEmUpdzUzuzrKjONRPNcGPNdxIF6rXcEzeT25rtcTb0KaVAKalByTN7ibcCNuOsHdnDCaj7gl5W4l860hc4yT0osmJZ+TO3EH7ky6u1giDkTcfUw1PRT6F+4q9rKM9QqDjO7BPbon3ajdLWrm7oYyGo4akcn0YITmYR49yr+XCUR7C9dHEw99iOsrXF/iYvL0MlFB+wlXbkwKN0B89IhvYMg3SLhyM1K4IeKTZ2CGb6hwwzQ5MYy44cINFx894hsR8o0UbpTGJkYRN1q40eJDepxGb5YxJuFpbo7ROCxLT06MIy6eeYOMN4kKboLmaDBBNT1pTDInaGya8mNTEzN6n0zT8KxrTWZ8pjV9N0PTVYNT4/OW9OzUjZht+FxpWmpm3qSBychcc4ObF55Jw1JTM3p6OQ8XUCHbLZTCQgb8gGqRFBZrjGIxFZaYQHipFJZpiGIZFZYbMLKcCisCBY3O9PSM2mEVRygV8t1qKazOnGGNFNZqomItFdaFZ1gvhQ2apdhABU5ORjZSYVOgEE3N6A3JqbmFCkVuqxS2Zs6wTQrh1KTCjvAMO6kQTcubNC0Z2U2FPYFCMBo5LKPXyH36pnm/wX0G97MVHpDOA0ogwD+o8EMGDxo8xPDDCj9sonfuIwo/avCIwaNskMcUfsyEb96YDZ+lxw0eN8r6CcWfyBTwSXXIUwZPGjxF9qcVflri9Khfnwmzfla45wyeNXiOuOeFe15ZyPNMpv9fEO5FgxcMXiTuJeFeEh894ns55HtFuFcNXjF4lbjXhHtNfPK8nOn/103CujcMXjd4g8d7U7g3/7L/3zKJiu5tg7eMe8fgbePeNaDxLvv/Pam8b/Cewfvs/w8MPsj0/4cGH7Im1n0k0o8yvfOxSvqJwccGn/DOfhr2zmdyf27wmcHnvLNfGDDyBe/sl+GZvjLg9WWm/782+JoKOe4bKXyT6Z1vRfWdwbcG31Hh+7B3fpD7R4MfDH6kwk8GjPxEhZ9DhV8MeP2cuX2/GvxKhQL3mxR+y5yhuyVVD4vuFj3sLa6nDYR7yd3bopdFb3uT62PBSB97g+trA4V+Frz62qj/+1v0t3VtsRtABAbY6AwDRTXIYqDFICoMtoHwELmHWgyxGEqFYRaMDKPC8FBhhAWv4Tbq/5HaMcpipMUoy1ehdEbbqP/HKDzWYozFWIbHKTwu3K23n8ITLMZbTLBlbqLCE+3v/W/C/p9kMckq68mKT7ZRAadYdshUiykWU8k+TeFpEqdH/To9zHqGcDMtZljMJG6WcLOUhTzTbdSvs4WbYzHbYg7TmSvcXPsX/TrPJiq5+RbzrFtgMd+6hRY0FtoT3CLtXmyxyGKxTbklFkts1K9LLZbyDJ5bJtJlNrrXyy1fOSssllus4J1YGd7rVZYvqNUWqyxW806ssWBkDe/E2vBM6yx4rbVRv663WE+FXLdBChsy93qjFDZZbLTYRIXN4b3eIoWtFlsstlJhmwUj26iwPVTYYcFre6bcOy12UqHQ7ZLCrswZdkthj8Vuiz1UuDc8w31SuN/iPov7qfCABSMPUOHBUOEhC14PZvr1YYuHqVDiHpHCI5kzPCqFxywetXiMCo+HZ3hCCk9aPGHxJBWesmDkKSo8HSo8Y8Hr6Uy/PquOe87iWYvnLF+F0nk+068vKPyixQsWLzL8ksIvZfr1ZYVfsXjZ4hU2yKsKvxr2K/8JQK8J9LrFaxavsw/esLYr3rDRZ7U31SZvWbxp8RYl3hbH28qAHjXtO2Hq7wr3nsW7Fu8R975w7ysVed6x0Uv7A+E+tPjA4kPiPhLuI/HRI76PQ75PhPvU4hOLT4n7TLjPxCfPxxm+z4X7wuJziy+I+1K4L8VHj/i+Cvm+Fu4bi68tviHuW+G+FZ88X2X4vhPue4vvLL4n7gfhfhAfPeL7MeT7SbifLX6y+Jm4X4T7RXzy/Jjh+1W43yx+tfiNuO4ecd098tEjvh5ewNfTI66Xh54eenlJ11u43h755OnhRXx9hOvroY+HvsT1E66f+OgRX/+Qb4BwAz0M8DCQuEHCDRKfPP0zfIOFG+JhsIchxA0Vbqj46BHfsJBvuHAjPAz3MIK4kcKNFJ88wzJ8o4Qb7WGUh9HEjRFujPjoEd/YkG+ccOM9jPMwnrgJwk0QnzxjM3wThZvkYaKHScRNFm6y+OgR35SQb6pw0zxM9TCNuOnCTRefPFMyfDOEm+lhhoeZxM0Sbpb46BHf7JBvjnBzPczxMJe4ecLNE588szN884Vb4GG+hwXELRRuofjoEd+ikG+xcEs8LPawhLilwi0VnzyLMnzLhFvuYZmH5cStEG6F+OgR38qQb5Vwqz2s8rCauDXCrRGfPCszfGuFW+dhrYd1xK0Xbr346BHfhpBvo3CbPGz0sIm4zcJtFp88GzJ8W4Tb6mGLh63EbRNum/joEd/2kG+HcDs97PCwk7hdwu0SnzzbM3y7hdvjYbeHPcTdK9y94qNHfPeFfPcL94CH+z08QNyDwj0oPnnuy/A9JNzDHh7y8DBxjwj3iPjoEd+jId9jwj3u4TEPjxP3hHBPiE+eR73Mt9gnPb7Ln/LwpIenvJR72rNd8bQXvR+fEc+zHp7x8Cx5nhPPc9KjR3rPh3ovCPeihxc8vEjcS8K9JD15ns/k/7Jwr3h42cMrxL0q3Kvio0d8r4V8rwv3hofXPbxB3JvCvSk+eV7L8L0l3Nse3vLwNnHvCPeO+OgR37sh33vCve/hPQ/vE/eBcB+IT553M3wfCveRhw89fETcx8J9LD56xPdJyPepcJ95+NTDZ8R9Ltzn4pPnkwzfF8J96eELD18S95VwX4mPHvF9HfJ9I9y3Hr7x8C1x3wn3nfjk+TrD971wP3j43sMPxP0o3I/io0d8P4V8Pwv3i4efPfxC3K/C/So+eX7K8P0mXHcfv3no7iddD5+4Hj756BFfTz/g6+UT19tHLx+9iesjXB/iYvL09CO+vsL189HXRz/i+gvXX3z0iG9AyDdQuEE+BvoYRNxg4QaLT54BfqY/h/gJ3w31McTHUD/lhvnsz2F+1J/DxTPCx3AfI8gzUjwjpUeP9EaFeqOFG+NjtI8xxI0Vbqz05BmVyX+ccON9jPMxnrgJwk0QHz3imxjyTRJuso9JPiYTN0W4KeKTZ2KGb6pw03xM9TGNuOnCTRcfPeKbEfLNFG6Wj5k+ZhE3W7jZ4pNnRoZvjnBzfczxMZe4ecLNEx894psf8i0QbqGPBT4WErdIuEXik2d+ufou9hPWLfGx2McS1nep6rs0U99l4lnuY5mP5eRZIZ4V0qNHeitDvVXCrfaxysdq4tYIt0Z68qzM5L9WuHU+1vpYR9x64daLD2vTfBtCvo3CbfKx0ccm4jYLt1l88mwol/8WAbf62OJjK/Pfpvy3ZfLf7mN7mnhHSLzTB68d/v+R9h4AdpRV+3ju3ntnZr2BrBI0Kup5gU+joERFBUXJKu4SCAYV/bB9BuXzw7uo3LCuqEBCQkkjPSE9mx7SeyO99957L6RX0vN/nvfMO7M3RH/f7//TITv3Lee8ZWbunfM855zYIjeXsudC9h0hijgvJfNSNTKpamiyqCDxH/9nGNtxm63pLXVLtYdBLiwOaWflxkcjMs74CqXEZgS4Tant/S/mI6HNvWiiAuDaJFNM1keG2Lwizo9+iOT8oT4fg0prk68A+FyzbjVzOxTfzl/tqE6B+NGYtA8Y4j9hPkmKRwmozAnlMefMHRB5B0TepSRMJXd8hvb3auQ0Q9LndAoqTKDLiADPM3ei7s6YAnwXau5G0d1ZGOH/I1ylu2pknkj4/1d8gCks1WVEnZcl08ex3mpkTt+d2JuM5TVJ/AuBLxeP7z2XlIq7lNxLuATXk6dcCR+rHIjPrVC6VykWPhFRNbAkt2CRp6KnrvHLIEkcTThABGhIkXz0iTwshFeAw0PYAXhIhniIW3mpVS+GQHLm07b1p9Ea8wTIbz7DFWZHUMlTSiXPYrFr6GJngXG8QIxD7sphkcEEyMhnsMxJ+Y9vFpSzXzkgj6RCHhWmNipqf7PghXANvqhrANgDAH+WsIcll7PbC8ovr3D88udZ+Ly5D7LqyH1SJ2e+inF+FePUiq/hmvg6UP6vvwhaOVnl9yurnKIAcXyLSMcDEPUAtGvhg+Egvq2DAL4PhB/8cmj4rjwo3y0HxP+QfC9rHi4msP+w1M2aYkgo/mbBc5TwHIF9XuU/QOEPvlnwLAufVVQjAKqRJJzRUFuW8E9DA4CfqAYgjUelXgmwjIRiGTlT3y57fU6HgwOY8SrADMAZfzMNwnE+GY7zx4Dyn8wSx+Bi/RTgRYMcMIyfWAxfNwuqfhb2+rn2ApYBNINYxtMWw5CfEcMAmP9L+VUDIBfVzG8wmP8CevFfOeAVvzENMZzfYjgq7Rl5hnfB73SKv5ffEagwgO3lv0sAT/zBNMxIwxigyJk/2vn8UQVgAbIqp0yAT+Cm0k/Pax3B++fxyMLYldOP+f8ZuwCUQv5Sbl6A1Jy8ILlGplFxAVEJeRHAhA7lrwLoHg8U/VShnf+Gzi/J3+SlcmATFfL3rPmH/IPPiH9C1MvyT3m5EeCJf8grUcdX8ZMTYL00zhKnT1p4/qXQK6MckIQuJhAJXc0Iq8d7I2EI+55I0EIxegAP8iZhh8eBPkAlgIfmhOhzQBywKi0T0VXbip9bRZ8JQnAGhCBaE6QvjzAHHPwIzAFHW5y1T2DTOiQUUigj3NCecEMjwg1tgNFDW2dOpTOm8iilPmq6sLWDGvDhHbTpyjZd0eYRtnmEYH3jfLAe74GorsvqugQdqkegQwWx+iKH1UNYJVsTbHiIrR8yffm5Lz4/oJ+BO1AKUQccxB8GsMWAWP7ARHHaDLLA/SBUD6bB3eIOMgTy32Xrd538BxSyRwF+TrBmWKxpuGoi+oCDOMRIthgZaxpF4/NoghEyGtVjQEJQ9F7GQtM4th4XaSIEgWMcNE1gzYRY00TVRBQCB/GIyWwxOdJESAJHW9Qonj8a8t9jm/ci+Q6agPzprJkey58RygcUgWMGpMxii1mRfKITOCgfuASOtpA/l23mRvIJVeAgxD+fNfNj+QtC+UAocCyAlEVssYjyte/isAVACpwugYylbLEULeqzpr5Z5m6Q5e4GAWhB3AJtVxLkAkSxjChFOTEKwBiI50R0onY+OpG06MSvKfPXZj2hB2uSY8UGVDzNiqcJVGy0FZtYQZzifu2x2Y7zfkUozFaCFIQkthJzKMkHJXIAJewTaqe79+oTjXiVaIQFJP5m9rg57XVzAgxhkYgsoYj9RFyIRuDYA3kHWQQsQp/BOpBDTsRhJ4KwBHGKLHGJIxBRZI4SvlBEgmgETo4D3DjBu/skh3zKghKnoOI0sQkAERj2aTfs+x0OUZ04BNcH+APQCAUgCD7g5AKmf5HIAzpnAGOYSxR8mUCEXIbgK7oWVyhUl/KqLqVCEHKV2I0WXE9oA0APOK4n8h7b9QFKYLObEpYA9lAOREIfoA6UKCMoAVMazHZPas2bxCPQthHBCQ5fMQl5i7ZdLWgRCgEW0YKIBGxrFNIKLZ5izZOAJ2hSs2DE25DUxnZ4ivAEjjYqie3aaYVDKSAJsAQO4hXVdKuAVehWEarAQdCiM/EJXnBdqLcLGtehnDqAK7Bq78B06zp3dZ2BWVjYIkvMonsByS492LkHOt+rnXtyqYBM9CQ+gScpq3ujujaraxOswNEL866kBMAQWeIUtfNxiqTFKe5ml7vNAH4egM9iVVYDVKGyBnF9BhcIjkEQOITwBbCJHCAKbjwACu47Ww5lSwAUOIai5fCCcGIj3MSIUxC4yBKoGGW1AJnAMRwLP4ZFgCn0HtBBjSUyYdFcJ2u8kwXQAsd4yJpIpII3wyQiGmYysQviFDiZAuRkKkflEIqcmaajnsaFVyXTCVNQyQwuwQwuQXxV3kvsgs2IXOCYiepAK2bbClHkAmhGeJkLEAxtAMQCx1ztQRHztYIYBo757JHRi2uhm98iNz8AGjgWYX4ANHAsVDG8ApfagqVkTOtFvowAxnLCG7IcHVZADcAM/ghJZUK5K51cYBg4VqLZakIb/GGzhlfiGrcgRDrCTutcJ4d0ZAFxCI61BUXv2YqNVLWRqophPCPsAZQDmEcEc5SarVx/YBpbiWzkCHBspyoMLeNeDoB1FNcFtAG4Q7EN4BqCk93YvjxEI2f26fbtgwi+yO2n/v3QX+5kEdq4LQ/awCsG4ItDBDFyxDJgDWOHcI5H3BwBZeA4gi7HiGNwYY5zYY7HC3PCLcxJ1wlQBtEMhTJwnCgommYrzlDPmXBhLGahcAahDJycx8LkYRc5YhcX7cIkAfaovktO32WnDxAGUQyFMK4WKGQBAEMxC+IVOGmSfAJABYQTiyBGkQNUgZk0S0YPGyAWoUQgEzheT4IJQ4yCEoFSUD3BCZw2h0cBQAhiE7ApsAk5oixoiYJaaEquKN25WieBWSg6QWQCJ22SDUxbjoSoA9GIHEAJbiBQiXBVa5kOoTpgEB2IRGQBSISj7OxGCRwCR2fUAW/A0SnJi9/95RAcOoGCQAu6UTGAiG6EIxoRleDQiUng6IF2KW3XSyuASejnPFgCRy801QsgH45oBDiiuIAQRH9iDI0AQuiEgEMQiqAGXJXhVAa7qQB6wDEY4t8lCMEFH8rVJAxRVGwhCFQM4zzCE51hUR4oAXUjqR3Aw0jAD/g4WrUTg8Axmtq1YGxSu1ukQcZB8XiiEJYLQ4nAGiYAcYCISSyXSeya0b6TYU4n6DCZqEIWsIMQc+CTJRFeo++5vZrmJgisAcc0NJ9B1IG/LmYSpiDYMDNpCCgQaKhn5lD7XCIOwBpyZh6v0XnJ6G6b7yQvcJKBLuBYAMmLCC1QMjAGHPNxjS5hUQgyuL9og0kAXCDCENm1lukFR7QBp8shboXtu0KvZ/7l2n0Id2hE3MGuG9AFHKtdOzwy2W4dMQdZh3bruTUOZmhEmIGKiS7g2Oi6BYQZgnyYISlb85Z3m1uE7W4RgDHgINoAcAHHtmTRdFuxi713sbft+xLwBhqS9rB4D5rvJaygxiSAEDUyC5KJrzuTE+01CakmeLsrkAJtdJd6U9OpiIuJS5N2rEmh3alAfY3tI8jjn+rqk1tmUCgBp8hnKHwPN9GBqJAemWqJeiL2O8mZGvZpUAObzluldT9OtUhnSnauFFmnQ/5SuA2dYAc0t6P9bTBjLWYbWAGr5VsBS+lxYm7PyO2f0lF9OlzAO1QqQxvIHWTjfpZs3SJtBMsUDYKzMFk1B85LVvU+Ef7E08Hdhe53ZWmt4qD+A21gq7obX0Wfx+nn8dshVPcFVUeeLr1SQNEtWsIC1fcl1XNP8QPqlVIGrxTt9xXtR26ufCXL4Acwb325aCkLM9ilr2J1v5olPVd3qUbmoCRmJmM3sJPVIj8w9f96Xv2/npMUjQRpJTd4+skXX90u6UULsyGd/Tx1E03RseopNnsKjlUJdasqU2cv/AJnxZMw4lZXI24FnIWKIkc9tLkN73dsUx+blmKcikf10+3a8eMCK2IFti4ln4ik1SpO6yZWwJQbRKZctLkjlPZotH0o/Gwk9HPaXwRs6gpjUGecUJgYC9TEWGHuLk4pkzqH3Upht5zQLwhMjHAdQmHtSOgXtb81L1aYe1B3TyT0XiyIMzFCPrZK7suZOmhTxwlVPjV2CoVfi4R+XftbPnWF+QbqvhEJ/SaEwtQo36oAkTqhROqc+TbafNsJjeyMKHwoEvpd7f89gVtRhXkYdQ+rUHSoq3XFUleKszA6psihflp3/wfFowvUqyhrfsiip00JZgNDo5SWw9b4Q2VQ1+OV/hh6PgY7pf5pyNbPwv74OC+f+sUvxb5EKVrlGsD62KDMYAzyJF7Kk3W1PayP/Cb6STFNjz8hd9rAe0h+VgrGdEIZ0znztH0kPI1Hgnb6hfyCnX4pvzS/wkNCC38tv+Z39m9gbPxVRn4F42OKnOlnIRmeRAbMaGVLl5rfQTJsjvL7nHkWcp91cuk5xMH/AYMHEVr+J2ee08H/UZ6TP5aZLERmadpK0bRVxj+/psuQgcERbOg/yZ/rmb9AuHURypkchOdUOJo3QudGmLmqehGfXsSq8RevnUBDU65bABMkJ1ch5XQfUsNjA/N3iP2H/F3+kTP/hNh/qlj0etmOUOnRWfCgU/QRqqt1jfmnLk2QjZUHTQ70azQ01oPJERLJb6bBMQdzIzq9kYjEvkmTI74qaXsE0knLj1Y0p/HRElQSWtCSpkhDZnNMei41b1O8cwwCqqkmgbaRArU88quiPRW0t2YXVqgNkgo6sqIjLUusuJ+GSC6QugpxibrQLKm2x8g9qAEtjkAxqb6HNTv2gPqetD6aXpxjTzeE+5XiTE19wqlU0uxIK2NlIuI0l5j+FDiAAgdaO+NACIRJcQAFyiAn7gH1ArKUklDcu7QyGmtRpEERJ8MgDqbE4eyagcXTjKDYkdaoOBJiR+kyjYqE0qLIsZLVjGM0LSdaANsiGyirWcZGlhP8o9rH05bqXIXwTkyDJC2KtCsCl+Ti0qhYBw1430xhwRSuNmZrvYTMezQv0pSIk2nY0+kcLN2BaDcEEqmDnZlwWzqLGmeT4iyzoWIOJc6hCpRwv+ayYG6owpoPzXzaEWkzxMkCqFhIFY7fnKOpcDFJuBl9XDzwIYIzJ7UcxkC1Da6gghV0LUIDTmolt24VTYRmNe2FMBIKTtZA01pqWsd/YBlcS+NgjqbBdWQuY1YbEm4HNkElbYEwD26Gji3UsYU6UMJZbYUOtQsa0pFjo2Apmco7KS8DCyPtgQnHToauPdSyx230vWYv5e7lauFfPl73sWAfV8s9IuqY/XoLqJ0QytVMqKxlMpZxchi3wPtUdcTaBo9A1VHdqKOqjHKOcczOOkjzCq8cVfKQsxXKCRgLaSKkoRAnpzGhMxR81lKXz0LwOc7hnBP7PKnKowsirnLWXNAbQY2FeJGiobAgMhSWk6qMJlfQ8ionS7tgbe1xzfasTfvgda4GDYTXEkpSjgyCJaQoJyJrIB5iagp4o8DdPrAHqpyYqlwNk2vOU9OClkFnBoSwVhTWmgxlaQ1hb0MY7H/RA6sNbX+cRFu0o+0PR9sCACcFxY1p+GtP29+LMPjpWtDeh+YpNfdJR0jswiJr8EvpbcrVfids3xX2PbQnPxk2QNOdFj8a+bqTjQzvDCp15j14Z+hMe7vhPaQGPvavLNDxWq6xmvdo2sNJf0wyj3OM55jKGRStGO16lEernuUdq3ua1r2rdSQhk4dMc1NGLx2tByW5mlKSzQia8Axte7TwlZpR1DvaGvRGQ+8YLu6YWOvYcBXG0WDHWYynnc9Yex7NeTiZiFWYBClqzpPJkDJFRz8lXgWY9CiP1j1r4MPrm67GNPKNKXg6WsC6x1/o1ZSPbGaSkkxrHk5mYayzqYUGPJrxgH1wrHOdjrvNvHCs82mwo8gFtOqZhTThOf4xxrqYUpZYm90SSFmqY10ay1mmY6WZDscyrrQWwFrHBiQg41jBScSr3FDtdXy6reZUVqNaMBVLSzZryUwmHRkn6zCV9RzEBmur24BBbORUNrohiNkUTmUzbXOcyhZrqttKO52z0GEq2yllB810sgNSdupUdsZydulUaKTDsYsXhhbssRVCcx2OPfFUoicOf0LtA4WZhrt9BcaSjSNjXT0a6xJVjXWq+n1Vzb5HCvQHEC11tNdl85nHjWiiKzAnaYiTk/h4Sm+P0Dp3ijejFpwpUIFnVWA+1xiV53H2AW1zvKkvUMdFmunkIoReQjmNbmrf0f5VCcZocpXDuEYTnVzDx+s6DNrncFxnT1WfZ6ZrREYxf8ORT4yjWTJq94ZW0EbHzzTRvUnrXJZGOhxvoKk+lmmra2GNCy3RljY6xpBSGx3h4mT0/G5NQx2vrLfZ8G0aP7Rhm2RxkkziNjTaVZh2rG5HM5T2a58srk2jXXva6+DajWpK6cSpdIZJjna6ctOFJhCSg2mWK6d1rmPEHU6RO6zXf5Hpzs/daWFQ8T1onLMOGaHgXhTcO6nM4HKa53rSPAfAWE2JlUnOiC2deQ5HX7Tsn1SJA2ieg0Qa6HD0x0IPQhGtdPptqAMZTKuckoS1n9rnUDOUJjszjDY6Q/4vTXANzAhqG0lbnIzEaEbpaEZxgVXgaJrhKHAMpziGU4zubLXLpUK7HI6xqA60YrytqE6WMI7x7KcFsNSxAe10OCZqD4qYrBW01OGYzB7hzTZV50KuMI6prktdM00rnLWO2xs+cWbQKDUTpjua67K02s2CtQjj3lg3saZKyLJZiX8RcGZyQi0O+E1KS1GKliL7yxYlxkOZL754NBSlaCga7qoKi0PaUoUzP1SyCv+a6nZtq8N8zVBVKYaqGpDAYmq1xqvK5zE9ns9jciym4s/RAiG35/f/OIo+/s2CnlSHf80nipsUKL2pDPSmIqU3VcCUFETRgtDjM98s6Moe+Nd8VnsydJB8ttwIqoUCi5uIcp3K6M/9rw0R+rrTie7dKtDZjVD9Rehx1V9SPerkXW7uRfW9qqdJaJEog0WiSC0SFaYObkJYIeSrOWeHgCJV8HUB4ylr7kfx/fFE4Nt9K4hP8O5mQBPV+YDqZExNeaDcGSSgs4aG1awwD4Ei9VCWdgj5bjwXOHYn1LG73NQN97g4rPp+sW/gzi0/yMIAUSyPVJgfojGcuKUkZ0phrChlMJOUPMqN0jtmcsLU4y9OBDORx7LmcZShDsaHAjU+lMP48Lj8KAvjQwPc7c74MIRXIUhPjGJCq4P8tNQ8BV3W8JAzP8eF8XO9ZTm+/wylPo0L5RfydMxzKok9tHPmv+z19F/oRnsDbA0N9Vpiz2fQ7HfyjPyuAj7ZQeSTjVH+AaFK/lBm/geinxNQncpgafijkp+yIFhly2lkkLJvFrTjkGG2I7GpdYL+YZCNiZDshO8j8JteUn5Tzryg41aOU5kzO7zOHcC/5kX+HZ6gJ7YLUyIV9cBxSqipIWf+jon8XedPDf+AgH+42xUC/onP/+Q9SjOEglNhy5flZT5zX5EUqVDNE1oMMlRRTIZiWTt6ZWPKzhhR8WFjBNbGhScppwmiCelPWWd8AMsaguh7DfmQCF2mJVeoihUi4jyV5vlZQ3o7jryde2tB1/ZupOQ+hZ7WLjQJundmd+dWnaO94Z0qnXmbwO7AbXHroBaI2L2a5gec9MTLfy/K6k2yk/SGrD4cSp9QGiSYSkqrtPOCP64uFn2sY3sEvsTYBvFJUEU/MKd1ALSqy7USnmiPwMlgaB0CAWqNkHehdSi1DnVaR8M4ga7qYq0xSpxFAl1HsaujNeXUDBF2hKKxrHUWiPL86CTlpDJps0kod1FJUD6FH2lioH0BeBG1O8JSGQlLE2ljaARTg97kylXiZQ7LAgpnYSCzUWcDj+glhUfdHM5qjhscCua6mnlQQEuDNTaU0dqAqgUQspBCFpKbx5YvwfBAHxWaHmQxGi5h9RJUl7O63CwlWQ2mhqU0OFTkeVND2Eq2pje1vQFfMKv4eRU+P6+fVydUCkwQOFZDwFq2WBvJpzUiTWvEOlojKuhGHTg3asjfxNabnPznaZLAsSkyScSatqomGiVwbIWo7WyxPda0gzfYThopZCeqYZpI5Zkm0HpPrGkvWUooyEY2Cadpv2oKeUv7IeogWxyMNJGzFFkmUP0+FOdZJtD6aKSJtCUcR6HpOGuOx5pOqCbaJXCcgKhTbHEq1nSamqxPtZxB9Vl+PEc7hZyDpvNsfT7SRCMFjvOhkUIuxJouqib6VuO4CFGX2eKyamLfK2ELuleTzQTvE7a4hhYvh1fsdWsJsZQmQZYNGi5Q8TJMF5h/M+tJ3UyJTKh5HQ3eoGs1n2y0WFhDxRB8ycUPelgw1HDx1o2Gi9IPGy6s2SKhHZ3dIkW7xUuGRguaLnJkLekXhbNdgPRJ3R2hW83etGHol0VnWi7UsZoGC5y8g3ezrtDr3KkhsDtfLrvrmxl796A0MpSGu6H0ZAkdqkdHz8petGfwB2tvzq8PPatNJU0Zar+QvphfP+hxJgzoGaDvgAOcJkgZSGsGpQwiJQk2jOqRAtox+LZM48W7rMrQmXooRzLUrjKfofoc/L+0X0QWDF0jmjC4986GEZjx4QqrGUMmYIUnWrOG9aR2dgws5BQIp+liCk0WOTVexE/naU5wSEsqotli2o1miwb/1mxBOfPccJzrNLz1UASrBUEcbbPQtnlWzRjG0o2cDQPjXEoNy6wX9TJoWE4Ny6toWEFrBd86VlLuSshtqDXOZlGdNgst+V/bKyKLhfbbRAuFRcqpYzN0PB3WbKHVgjq2soZu1L9WBGtbuIDKNOIC7qBdoyq9SHZhAXdz+x27aLdjF8FqAduEYxipxAO0T1ivOzedQzRXqKEi8o4uMUco8SglHrPmiWOQeJxWCkiU47ER4wTNE+oNrfLUI9pYCwUtEzg5A3lnaZNA3wyNJOcg15GHIPcDXasPIqlkEnG0yiOSCySXacElNXXARKHOzvnYAdVfoUXmqqUWIQs/naBT+U7QKesE/RQa8N56jQWvoQDMfzVeqCu0oc2ClovSfL/nHMwVHC3sFdHGNidhiL7NtFZkna0COlDCPWvFglaq46bEotIPEYtokVD0QOfbgSrySEWpyD4Blzkq6AIFT6IBZwUX52pKIjLdaKlw1CFo6kFNPflPLxonpBfU9aYZAsYI2mWTbg8qqbKvZQ31hY5+1NGPOlDCWfWHDiUMGeuXHLksl6r1AfIyMG3kuynjJxy1DHWGhSfNMModxtXCv/waGc6C4Vwthx48RaKQ3gcjaZ+g9lG0Vai3siFFiEShBmYsdDluEHSN160ar9ooaAIH7UhC+fBBQzOJlZNpj1CaEA0OOJmKGb1HwdOs3WEaBE/nJKY7sZPplsxvzTxDg14bs0kPsvHlaENyBCFEzLHMoXloOh9NQfpRVJxdFti+9ZUhxBVZRJ6QeiCTGbSYjKCSfHdjPNJ0rsuT0U20QuWA96OOxYogrOKpWU0OkCHvh+yfkjzOD4St5/zWO1EY0waSfziNjWzouD/lJP00jkg/L5qtbp+2gctDdhH9iXFshcwdLLIOxakY6tvpOuwi3Ycbu5tEILOHvsVk+eBkLzZ2H9XupyOx7IesAzrZAxyhCjpI/2H2P+RW/jDdieE0DF9i5zWMiR6FIHoKH6UrMB5pKuh4tGp0HKZAug3jOJFUFEHrTmkdnYat33CMImj9mSQJkuBKJo11DY68hkGQpF54Bn9A/2AQJLnAF2Otl9w6XKYLMOdxJQnnYXUTposwTq5hHfJ8gnPwCebw4RUcrUPTlApsllLvXxpCdT1ep3swJb+BJtZB+FGM9k2eqlcwPYJx0jxVCldgqKG3L72Ac3AGprXVKXmULsE62rdha6VMegG3xu80OgLD71dw0i7VwLSnmA50/5UOENNRR9sxFtRJR0vvX+sAjMXWgi4pbQBfXxz0BnZAgk6mK32A+aTrxsnQC/gRvrny1FgvX+cAjMn04ijg5NuLrr54c+Vk+qQidkOlm0xfevNyMnDrrUypxy+9fXEyAJOp6t4LMYN1MoNjQUN0MvDvVUdeXB1aMDSlDeDpi2No6mZQwvAE3X2L1N3XjKTHLxx8ZSTde+uZ0dQ9hn6+Mga6x6rusU43Oo+zOsbnO/qSEJmSCXTpBSGS3sST6dsrk/ER3ry6lHDaxTEFo3Il8O1VodOcUHjw4nw6hMKdF9UzcDYzBWde+2pLPbPpzCuzIXgOy+HIGyEKFDCXbeYBQ6f/LqKEcSwL8NjDbzh8XOg0L0oJjoXo64awmB2XpGQx3mfRcmlKf+UtSwmOpVUaLg9rVriClSnB+UqMdFVKcCxHY7daq1PFePoBgkrJmhReZxnVex3eaFNmfUrWpcyGlOBkA1Z+I/VvSslGvMFi5Tfrym+usvJbKGsrXmPxyw2ytvGC3AZddd1PtxQghh14iU3JDgxmZ0pt1rsoeHdKdqVkd6rc7OGK7MXLK6B0fNyXEjTch/b7KW8/5D2kOOEBfj6Azw+E8g/irdXGMj8USj5Mye+nBMdhiDqSEtQcweCP6uCPwgtaWx5jy+MpwXEMLU+4O+FkSk5akadSguMEFv40i+Q01zACgM+k5EzKRgBzHc+l5Jy9hc6n5GzKfIAXVyBOKcHJBdxCF6nvUkoupuQSxnNZx3NZF5MSr6TkipV4lbO8ylnqPaJ7ey2lza6nBMc1VAda0SStoN1racHRJK2/F1HQNK0NmqUFR1NUBCri9bDijbTgeJ09Ij7Wm6iTN1F0f7jFb6Vhz2iOaDcImJCuMC1Y3wL1tRWib5m282iZtibUVqxtldbYyNqgddra9N9GHIW0aYOQimnTNi04aZt+3LRLM0wC4iempX06ZzqosA5pNfB3pLSOedI6sagTiu5WsLVzmhb+Lgh2g7gJabg00jG7K8KHpaUrRtuNg++OUAmIGAb5Pdi7B3qL4ps90yqlV1pw9EyXm95s0ZvyafDvkxYU9IHcSsrtixgJaekLuf3SxXhIpqUfothA7gD2GpCOELqBaZU/KC04BqYREIEtBqtmthgSan43LTiGQPNQthiqmmH9GpYWlAyD6uFUPSItw9MyAqpHpskWRxQbBAiD6tHsNtqpFjMmLThGQ+VY1oyNJzsuDURgfFpwjIPYCWkdycRwJJPSgmMiRjKZHSfbkdQwU9I4lSlQPDUt6DMVkt9jg/fi6U7jLk5HIIS0TEf/Genw0pkZqpiVBkgwOy2zEHQY3eekBTVzIHIuO85DlAOEG8Zc5qcFfeejyQJqWMCdjyCDhWn+ylyUloVpWYQmi9PKwFnC9ViKqDRpWQrly9KCmmVosJwylkNGHW24Iq0UrJVpwbGCw9eCVWlcuavTsgqhaFBaU0vXsHRtWtakZS1Ki8JhrEPwREu8XR/q38A5bEwLjg3QvyktqNmE2WxO6+My7bhCW9hya1pwbEHLbWn3kEzLdityR1pwbEs3MjtZJDuhN6Wj2ZVWCtDutODYhYpqWrAnnNXetODYg4paWrAvrNifFhz70hEF7UBacLCAr48q5WBaDqbtc5SLdshJwR4eDqf5fho35JG0vJ82RxE6LG2OpQUnx9Il5jjndSItxxEqDPM+qfM+mVZU5VRaTqXN6bTqgqQzbH4W4WbSchbXwDneoucROxGBwdLA6rmdFxBkJi0XcJVepNpLacFxER8vp+UyhWXkdNpcSQtGdwVLeZWjvsq9c6a3WuYaAsvYVb2ehgGtiSfX8XD08LPRC2fW1JPXPNPMk6aeed0TnLzu4YXX4wuvJ2948iZav+XpC6+Hyajc5h5feD1p7kkLDy+8nkLWrTwMtLUnrTxp7VWYtymmjSdve9IGYtp6mFU7T9p60s4D+cgT9GuP7h3QXTp4uL5UTEf26+RJR086oWFnVnf29KIkd9KTLh736R2PL7mevOOZbp509Ux3T3DSHTPoQRE9PenhSU+o7qUz6OVmAJudJ72tkD6U3sfTn2RaV+m5H4Se9PVY0s+TSs/096SfZwZ4gpMBHn4QUskgTwZ6MghKBkOJDPYijuYQT8W96wmOIVARrt5QTxsM8wTHUOrWguFhxQhPcAz3ost1pCc4WBBUT6u1Q0WN8mSUTYszmtMY7XrAccbNYawnY+0cxnkyxjPjPRnnmQme4GQC5jCRaziJE5nsyURPJmMiUzyZ5JmpnM4UN53q5j0ncZon06zE6Z6855kZnkz3zExPcDITEmd5Mou9MzLVM7MpeY4nsz2ZA8lzKXNuvETzPJU93xMc8+LhL/AEBwsCbbEwXJpFnuBYqBVsuTisWOIJjsXxmi3lzJZ5stSTZXZ7k1w4/tyOXiKWe7jtVniy3JMVHvyzuYYr0XZaAo3Rmm/LLFtly9gLf8xqj2yBNaxYg15rPVnr8sCs9mpkzt2XaJfO82C4ObHgOfIKSPJu7GgFDYujPDa/1j9Ph34avvpRMOum+Fl6N2hysEQcGd45kfy7yPCfUuu29UGZloQTSjXNhJKjHwqE3B7RyT8eKv5EqLiWgECQ1Syb1cEg+Dj9GZQ+0ADxaBIajyZHxkBkRBcRNjZioqI7rXQlDhQts5LvxkzvjrwG/gNDQgYUBknRvJuleXk3McZ7nOHI0QWeB9qYUblf5qhv6nbCW4QuDF+GC0PxwmoaHyWr8VFQDH7AN7EP1l/hRVAE7tesmyl5MPIa+baqCFOfgB3wkHz3CSUF5EV7d0F6ihGkB8lO5PtqdfkBhP0Ag3UcKw2OAhPTD9Hth26BGPodV2bSlKpSF/cdnetFLiiPaVO6K7BpfXmMlAEN+P4EYqTECU/spv6YstnvJ9oPYVKomHFSSBtAlpOfyc8fN/+JfjbFSY4+CjQ9hhP5JSZiSQM6EV6Zv3arToF0W7CX038VpzTxSc6GTGlofVqfQfNnYGnQ+fxOUgz2/oh2/L38nncw3BwYP4WMAvVdKDHPYTDWcSFnsnYSWf0eRdAUEy/hn/TPn+XPFPMXODH8pWi5HfML8oJ5PgPPhhwU5sJXsbqmEUQgaIojEMhfS0wFNNlUJznzktX0kmr6u/xdvcOURBC9ff0Tc0LcFDotwGPhFXm11DSGCPopAOnPgR1AcwyhXG3fNBFek81c4AOGSSFdAMAZaALEhsEXKI4jpZSRKgB+QXNIa0FpLWJpLZ20Vk4aeAI4Wmms9rcpja4LOFranCYYrQ2SIu3wsT3VdLC1HRgnhbWOK/AifRPakymQI2GA2lxoFDRVQg1DoggOZjLpjhLpzmApuhmay8RekD21sYuNgsa92bg3+eBao04Lz97UaeFxOi2QEkB/hQEYzUCuwUBdA3YelCi+jv/5ShLQkCgRQ6CeGcrezmUhpy4L7vbSGCj26h9JqSNjZ4VRCW0xmmQBToN8gVE3ZjF5/F9lMVEhk0Ih5AuomimkDVTxSSBP4AkzjUKmW9rAdAhhphIKydgJKmUgvPhmQSIDnOgN9JC6KJg59FKIoq+XkCWg/ggkCuQ09Lq7ZmKmQEMVv4ifFzG6iLU/6U4s1pGTN0D3g+p0VEDZUuz9Mr3mbh7RhP4JUeB1WYai1Qk+X52zQtY5K7B6HaSt50XHWOokB7xIjsDafI6Ac1Ha7Lb5ZjFM6t0sholGMNHeoAPscmu4m5J3uzWsS47AHgya4Uy0gNFMeOeQE4Cy/Rj1AdIJyAg4EAdWLzGHqZRRS8gCyGngksiU6QgBbp2P8fMxrrODF45z7ifot1DVR0FOQXJVBgAkn+V0zsayz7HnzaKZlJqL7OmCqcOkwp6X44W4Ei6jIv7GhjChawJOrmMZmxCIc/HTc8D40btpQdS7WYipvo6s4/CuB95PrB/e9eQAGOuWoMC+NAfG2oLCHLYPozFhffeLgiA/RUbBScqA7ocXVlsXEMB5JmQ1LolGTZc2RPizQPh5YTEQCRF9xiIhtwl1BPVh9KAvQ1eg+wT1XyS239lh+3xSFYTGnPuB7Ycr0pPuCeqY4EKjYxJ9IFZhfKlE775ckb46DfbuRyw/vLD6U3J/BkHRF8gBGII6KBDMH0jEXnAyGODwEEplGHQi+cDAFPAcGssdpstDCJ8oPuY3gtJHQPojepeiciQxWUYbIbBfpuFGdCyfguYx7MCQI4+6n7iPmrEc0jgi9xoi3eH5GNJEDEnhfJmEIU3WIU3WIbHvFMqbUhBd0FP5eSqxafcNrHC//fKfBpiVKP80Av3gP7GC4UdQF8FrMzEYBf2NDZceIf4lZi4Hw/gixPdhBMFggPJHqN0Ct2eRp4KD+GUx9mwJertAIui9jL2XhUE1lnPUyxlsBh9W8AO9EmqrXLopuN1cxbpVtmE1DScSVqxhxRrX6V6zFtNQ3N/YOCIO9MeabuRAGDmESD+sHxzIZjeN2mYLe1bxUHAB0tFzB3oqqi870XMXYX3nYAV0X/vvIbav8UOI7uNkH2a/n13pfEBkP0dc/2CkkuA+RUR+CGWE+FNA+CPr4RG9x4n1P2AY4JxYP1hMRP2J7h+PXRAeN6egS6F9OQ1dZzjBM/FAz1L2WV4yKvscP5/jJZOJroLzXIQPCPxrvBDni4BFuETphPUJ7iMYE6VfiUkBV0P3hmtE8/kdTVwfx1XF9VEMYB/F2uo1YvnAHpJE9ZvciOo/fhNUn5i++6mgrghWSQsVSFgfBwKHQGZGi1oRy+ePz9YE/mJMP/Y4KM2PXp4DkK/m3aRT1JGIPl+nO0GGYvrGhgeJHA5KTFfKIJBPFB+PNJXRPelAvx46RA0HAlkK7RvrZBCFAKlnKinGIfo5dS7Q3x0U0l+FqIeBDUxeFNYMDGviWCCzQteNwVpDjH9eMj8WOQ4GLQ9pJ8O0IcN+LEvmByPHQfjfxSQY5WJDYCMtvJ/VKCD8xh4bSom9DO7WgvGEoa1/gY1ELlo6kSC/RirQgkkuAMVkK3syZAPfn0SUvyQ/DDliK+kiT4svielJ51Ogk5+ZxB3DOCCE8pFQTiOTE+/XCAfuMUno/6UI+s8C+tfi+SxewIAfDAPi4P6UWcRyF288R8QfPZagBZB+YF7x/JZZQWKWhwNbEQ6MaD8xfyBf2kLhflmNUa7BoF1McXxcp2FDiPrroDNu1Iz7MSuZH18cMBhdcNS8eIfZxCvWxhBXCgDhf5xsxVW/jVXbuaIO9sePNFIBAPTzp1oE3APvV2F7iPXbn2VawMjh+7gehP1Rth9DOGBZATYqeBQwvJRA/2HKzYBBkB8kHJAXtR1VbRR6jLA/f1gc52yOczbKMmHlCQ7agv7mFNH/KDg43Ecplsg+YX24j+rFcS4STKT/PKOsEOgP8oB+wPyu0SVi+mx0mZoY7Zvwfo4oP+8SxfnNdUL9EchfApCfflVgKRHPzymy7y5Kh+rXAqqvOt4klM91fIvIvmL6DO3dnGh+g/zg3jki+a0jYQrnU1ibUFhbQvkU1i4saE8wn5vSAQg/UX38MLOgvw3VHUXxrme6UA+hewL4OcXroyd5N5VGvL47pRGyx9EN0nqySHoS2NUx9Qr/9iZ6z7H1CQsqidLbpDUplcpo3MTss4Tu0a0Pofu8W7GhGRB2Hkgc39IuCe6bwcT0CeDjZAhGnxeiOwfgHps9LCZZDFcpBOstXs9HpZaMTPGmccB9luG5idrHNw1QfGz9WOL4xobfjgD7UjOBVS4K9wQi9fhdRvAeYD1/m+kAKISYPfeFUL06ieoa3AjUE6SfQYRecDILKgDTz6a4DAB/M4eq5hKrl7lQNY9K5sVK5hOfx71CoJ44fd69spBjtVi9WUzQ3mH00LGUYonOE6MHMYlil8diVxCXt/GIUrhTVhGil1Vot5pwvGu0hsA8G62lHkLzxOVzhOd5pyhAbzYSo4/Q+RKzmZqBw28mGp8jKL811ruNsDzXDEA80fjIwXaHXo1E5nHsQEV4me4KK3YToudlCnAexy6s7l4Wyd74Mt0XbgThel6lB5SOQHQeVSg9QJi+aAWvRiL1BOVpRkuFF85h7U/cXp1DdaLA7AVVKEXB0VTRSvZ39s5jqlsRfC7WCeL45iQRe0L3ODmFi/k0V+UMwHvC9TmA9Xy51HWhlHMqhZD9eUohao/jXKqMyD1KL9jY7vq3pra9SAwf0ySYTyw/coC8rNMmkH+ZWD7841U8sXscV3XZ+ZcyCfdc5/CapInoN0k3IoTPURC5x/Gawn8K4dPTxuL4r6PdG2l62lj0/k18BDTPARClJ1DvugGmIrbWMg28HgB9NkLn1YKpNk7i83UUnQc0r3bONmzXhu0ySp1vm6Ytvx2L20FOe6L1oT2/LYKe10t4/1ch1GeyFA3TqIE4TzwXAunUrxITCiNZxBpuLmxaAtIISKTUMxEy0hq2qtQEWCqXP9bljdXGmeKXNHJV1twCObfQw5FVk+l4qD+OaoQ/wJg/vUaW6AHX8WNya5w7vQFipzNeFbwL5Xb5RM7UAiTwSWiqpZogjqGrcM/AzzAZ+RkqUMAAVZoqtpTogPlkRj5p7kSdC54eBmq/O5LFaPWU9XkMXlPGuvjp493gv4i/+KRQAQOoJxnhaLSr1syxH0qX7hQoRlDNfBXdvkravxYzMhW7fR1zQIwjuT9nvoFu37Dd0AqoQZGiBgiprgNQx0KkjIWkb3N8vMNV2He0U5Q7Fi2+Sxp/WPy9UMDDAkQha+qium44QTRyAdcnu8/fD3frB7pbBBTogPhD+SF3q0S+72Ksy6MN4GuYUFfDnHncru3j8drWDwU9oYI02HroeFgTWEJ953AoPylFltiEZonNmZ9ZQT+jIJ3Az4uTGvaoAh6Hku9xWO/mHoc6BHod8numIabYkD6SYXEca52oQaVbqN9Dj/VErABukGR22J6sQj/zB/zFJ7gl6pye0znRN5HJYrMIyf5suWaGzZrni2sz/JH8KQsM4Q90QtTwRyUmh7E2KqbHYU5ezJlyYAZ/xYjLdcDQUxHK/1so/yWBB2KWqAEX/x9SwfyvGmC9gXkFt8qrkNYYeEHjHLGCVxUnaAI7nZPYlEZ/m83FzZ4oQZjcNfIoLDFvESNA9wxQBnUqNH/NyF8BFUADAxrR9J+z4dSrBlSvpG+hqlL3Qo1w5HwLIbgdBbQnUiDtIaCDCuhAAbqoBAxeJWBgMYO/0blQF6GLMwzTv5CYQZaAQVfaWEPEgKhCdxZJ9ygsNMdE1EBlwwE3GSEGoCA52X2cbOy+hQuyxAtw9MZZP8bNZvh0ggVIzEIIoqofoQzCvAZzXs6NcLBzI2R4o2HqTBgt0HCndIRTCmdCHCMgexTRAOsHT0ChSopzIgMNABBgjx02MC7CBnA3T6KSifE2OHCA+Vl1o28asqhEM7Kie4YIAiECDjhDR8eZ0KMpWdWfUHdqdhUdc9xWAyMgTMDYS1oCrEDbOK/COG515Eeho2I0dFmA6q7sgX81Ljq/9KOw6J3CKo12pGlctUQjHanLYRTmqNSs4NBXWvxgJYa+Soe+yg0d/VYTOdCUrVCyht6pTuRaggVUEgVIb8cqNDDr3dZtcFsHZAHHBk3iquGONhN2qIonyFZs3TZunYMTtjk4AcCC2RWBCqpFQ6JzAHvckKxzYdWsrLIfW3eAIl1S1gNRUtaDFCmHQ4EYvAZB52SPOIFHiSncEAO9hKDBCXbOANWIYqGfDGOh6xqeriL2TLgsGhFdznD7tQRIgrYhmkBAIS/4lg7hA/5+cQBDlgBDygEM+HgZAqxHYXO24DfEFZZcSain901xhtKb4QwWaXDbnp+xNeuCo1MLirh5b7KEzoXU4qCHyKeQoEOpaUktLlcr3m0JNagTjU46P2trlm6FKedWqKBDErADPc7RglPrAIO75mxV4EG9CaUzdHWhrnf4T1cAEAQdci7+ESYH5CHajR5QqmCD9ISWXtTSS7X0+D/7D0o/SsxId4ZCIjAKT0JCDABGqWdgGNAZ0swgSh6kizbIemQOZslgu2jYX24w6ghG6M3yrgNeXFSkrEY8t/F5CVbc4EvY4N/6EqrwsZwMEQfCDbGDDWs7gZzO2iqhkRwAgalOhmgX6Ryip0I00Ib4waBYA5mWbvjT3fCBNthwSFlCDNavcBrxhXLCDDOJMWQBNZA5ORdoA0GGLLGGJKAGOmGrfI1njo8a0Fyzssr8G8GGkpuBDQo3RBu+PJSkToWyPAzdtZKnxsYrJ76Ak9UQtwbi1JdQ1kLcOk57XTxtjVbOaSMf66sMUW5Tsv7NbHKrsDlcBXUilM2ajHUr/WaJMuDYpJHKUbo9CuCl27HDCdnphBB4IASR1YBIvBL2EJW4AXVo8GHUgcugyIMKJ/RwiAKAPehc1LvQHKGDYRT0qCQv6BEknVBJJ+IFJf6gIl2E8tAnR2tPu1o4G+I4Hcf2ci3O8qqrErFc4QdgD6V50ZCg/BKX/1IV1ZfdCl1xK8RY5Zp4NcQhighDXA7jlRN2aELkoUF+WtUckAfOC9BDvEKAHlQLo5Vr3KNa4VK9xYBIkE0cgkgEs2VVUx9DTa1K7KEl4YfS/DyqOQAQUNPGqXkZUIROAUiETkG9C6Wd5lLtYNV0JFihyVOdXyGm0IWSHQwBI55OoWssu5ubQXc6F2okJPfYS2oTF6I8cnrRGRKi6OVClROhsNHlFawwlcQrIqQCj0GMg/hEP+ISoJpzhgPcKF4yA90MB4UzVAdEZk/VCOWWhknkgsDEuxr9iKhDg/ww5EixpzMcGcse5Wbo4AhcXVpCWIJNiErgGJO80a3H3WijEwpY4I4kUJGMgAr8RsRHTZFa1e/w5nBEBEYk1SXHTXqGmzRwCBwzXJgjme6ihMduiCliEa/mxSkXVM3TKN7qYk29DpVoRFRCfw8ySjkRirjlYlcFhEJLlhKnAEKRJTSBY7F1sfTtSpBSqe2JV+ioVhB6ULgiCkxeD2AFg8JxGGuJWWjuUyIW6pa4zi1C7JaYitwSNxKNAPJKEVUwCfojbiUQUaoOiZCUAa4BcIKwK+EJQBI5xSZ2VZG/m4CDtfzRe9O5I8K3Wq+Tfcmo5X63HQfcdtAjkUhFllDFIcKERCr2/69cEuV4lZ0+4USfdKIBSliAIqueiDYrP7AJzXd6lkVyNowdz7/l4bqfszXn3GOm3JynZgAV5wlXNAJqoQ0VtJALbq9Rckn11DSXCWEodOFymGIK1yBIcQuAFjlgF3y7TUUZGgBh6MgJY1gkI8uspdVc1lIaFt1JkKnuudvmjVTY/03XH6AGjjeZvpSQBkfUgjiHOitGwEYJgA0+FIFuENLAQ5EjapOKF7WtE90uFK3QhrTTTKUdaPgmtIGjLYo6sYgOiryj7N8XwpXpbGs6cwqasSwP+WgE5EMbEvTA0ZUmY23Y3dX00IL8nKU4utMUHa2GQ0BSQEBgB6u0AEcl5tYX3YF8RJkB+7kbFDAIDgIiA1DEnKUo1TZwZkxGzowVwD+KReEPY10XI+yjHrAPJuu3novDoWyE+myNSMU3yUiiHZqQFFpGpcht1prRxD54dY5hDXOTPqvqx0K9wh8yDurHs3p8yiUJBBCiafEmuk2a5DYJcAgOpiedAmCEvcsNvReJh8Aph65206yH4jR8nE4URROQKhACFKTEuSuSmA5MhOgHiOmERRQAmZvSiQGfddoXOO3wU8SxAKLpqEjzMsGP+SH4QedEnCwFyraMF/dy6lhhHRVXQMdKuiCaVdSxUlePSoh6cImIeOiirSX0UcUbkUhHCQGPDeydkVUW99iI4eLDPMIfULOZAIhshpotukFbnIpnAYOoqm2EQ8x2wiDOHxGCd7L7Lgt97EL33dp9t+vekJ6JrxLvsM6JfzP73Krsd6sCZAPH/lQ2zxURxz7IO8wiOez8BjkgYBwq+QivgqMKbWAfjznJx51k4Bk4jkMyoAwcx3B2int82volnsbHMwRHzFlCG0QycHIOkzrPSX3AfxyEASSWsAYACzpep9zaXHY6rzidwCtwALlQxML+viOYoRCFoXshYQn8vqNzlAMlmhKUQPgvwhNAJRjKNx1twFsEJHCDEJzQPW5BlEJRCSISOGmVxjMLCAR7Z4BomLeJRWC4GcArpg3VOJdBxAFT96J2sYr2ad3jDmnB0Z6eTlrQMa0N4DSIo2P6ZuYejqgz2sGBMEo614W+hPzOeocV76Diaa3oSq9CXrDwJ2SBuhaaHvQupDMhTnqm4XTNEfe2PoW9MeI+OuI+OmJ2gxdhpabFp4K+UPCkVvSjSyEV9GdF/3SU3GxAWvcKroW6V/m+hYOZc5hOhQPSxvoT0p0QJ0OxV8O4V8M5pBF0KJQRGNJIuhPCi5C/93RYVDKajoP2kRVObyydCeE4CDdCeg7iZDy2agIFTqTASdYlcBIETobrIAXKZCfuKboOTrGznBqKe4/ug/AWhO9g5C5YQnfBGeyagT+jmUmxs6yD4CyIna1LNzsWOietY4XLII453GwtmJfWBnAixDEvnWfcofYF9KOE8+ACuhDiKUYXzsX0JZTF+LiEC74EveqjAb9al7JgKXeAvjRpnJrldCykHyFOVmCfV3Kwq6w74SoMdrUOdnXabfMaanQuhMhtSInrqAIl3K/1LFivKuBHiFNjvQjpRIiTTVCxmSq2pGUzfQZz6j2oZh2d7Taq2E6nQdkOFTs4qZ3WjXAnPu6iAjoLPooGnNRubt0e+hAa6y1IL0Gc7IOm/dR0gP8ctB6DB6HuEF0FzWHMCz6Bbgfeh0r1BJQj0HGUOo5SB0o4q2PUcZyugeoUCIdAwclJ6KAvIOVl5DC9+AjNpuU0XQEBzVLLWbfR4P1S7jmuFv7lc/U8C85ztZw9p775wN0WF9xtcTEtOC6ks+o1aHFZehOaK3QdpKcgTq7itrhG9dfpJCjXob6Jusk18aJMkK/RiYpOgvQQzLfmPG2aoVK9Bs0bdByMXAZL4TIIwfAOfIs+gvBjgGB4Ckb3fkv6/tkwvl449tZeOHY4C+JoDceqNvQXbEtvQrgMltNzsA09B2Gn82jL6UDnQemAz/ATxHsrhveISu/kaQJXOA52hhYAFHQkNO/Qb1D9BeEsWGK6cYzOZRB+0Tr5Hl50m/UM5fTyBEdPT804vXlq+tB/kJ6COKmEsL4U1o/+gtIPwvpzwv2jCdNpcAAnTJ/BV+kzaN0G/2YGu/kPcfN33oLg0NE3kD/31E9wMMQOZxH9ANWKo9swwskY6WTQK5Aeg1m6BY62vnpj6FJoxtIHkJ6AOBkHX73xHLVzBsTbqC7BRB03ZU+iKyD7T/Z0IvANnEzvPngG0iMQJ+9h9tMoZzr9AmU65MxQOTPipZzpqTw6B9JNUA04Wjdb6+gmaD0FY/ON1s/lZQZPwbmesU6CdA7EyQJcZgup1/oDyiLoXcxVXxxrXeJWZqlbGfgDWpdAeEbT7Y8zW0HHQbOSLoD09sPJKqzMakqGj99qT9ZA8lqd0dp4ZdZ5qmO9JzjW0cNQV2iDJxus4I1oIRtRUZfpBD2cms2ebPLMFk9wsgXj30ot2zzZ6sk2aNnO8W93OuqaHW78O934d3mCYyfGv9uT3VbNHk92eGavJ3s8s88TnOzD+PdT8gFP9ntyAJIP6vgPxrIPheM/7AmOQ9yR8NHmaYMjnuB434usGjq9o54c9fgYPcbpHUP1Q3zUeTg1Jzw57pmTnuDkJKZ3ioM47ckpT05jEGc4vTNuCA+Zs25659z0znuC4xym94EnH9jpXfDkrGcuenLBM5c8wcklTO8yJV/x5LInVyD5qk7vaiz7Wji9657guMaLSgua+NrgNV9wNPE/ZLQJ352a+rTe+dLUl2Z+I/O6H76rveELjtf92Azypqt6yxccb/p4N/UFx5to5BDuFn4415bOl7OVLzhaonVrX1r7Nna5Ly1808aXt33T1hectPUBzHIk7X1p50t7H8CsT1jWj99kOzrRnZzozr7g6ATRXXzB0dHnDwGvyq+9d3x5xybL6urjedTNl66+dIPw7iyX7lVm14Pae/rSw5eeWIdebrK9fcHRq0rLPq6q0g9L+vqC874YRz9fcPThgrgF7u/jx/8AX/r7MsCvMAP9YjGDfBkIxy5fBvlmiC84GeKDjMchDPXlXV+GYozDsACk41VZguGUNcKX4b6MgKyRPhNc+5rYmc5dboVGuxUa4wuO0RjZWF9GsVe5GecLPoxD2XgfrxgTfBnvywR8nEhxEyHufs38O4mfJ+FzHXTg98tkX/VM4UCn+oJjCgS+5wtq3sOQp+mQp/kcMVtOZ8sZvuCYjpYz3QBnuQHO9gXHLGif48scq2WuLzhmYhPmsUjm+VUzLM/3Zb5vyXpO1kIna5EvOBZC1mJfFvu8q5b4ssA3S31Z4ptlvuBkmd/ALOeoVviy3JcVGPVKHfVKt9CIEuHLKqtkNZdgNZcgejZw59f42m6tLzjW8LILa9b5mut3vS841qGmuhZscFfNRl9wbNA+FLLJ1Wz2Bccm9onh6S0cwRaU3RteA1t98Ly2+bLVl224BrazfjvqhfViduhkdvjWvXMna3ei9m6VyEQQvo3RstuXXb7Z48tu3+z1BSd7/cfNPq7Mfl/2+bIfK3NAhR3wNUbLQUo7mCftEIsOoegOzcN52GeMlvd9OezL+8greMQvRsJrX474chSjPcbBH/flmC/HIf8Ee5/gs0kzV570VcopX3CcxBVzmi1OUz5jtJzxBQVnIPcs5Z7z5awv5yD3vF+MKDy+nPflA8i9wF4X0KumZgm96Kv8S77guOgD3mWLy04zwN1Q81VfcFyB5mtscU01A+O67gtKrkN1kwCqXwukSSCvBRWmacB4sYE0DaRZAPiDdrPXA1VNunIgOF4P4EzGmjeDaLJvBYjR0jwQHG8FSNca6EhaBmF21kBwtAzKTWt2bB1wJDXM2wFO5W0obhMI+rSB5LZs0DaIptsu4JM0kHaBtEf/DoF7goYqOgXFvukcSKdAOqN7l0BQ0wUi32HHroG8E0hXzKVbIOjbDU26U0P3ADufCbM89+C0ewbSI5Ce0NErCO/G3kF4N/YJBEdvdK4MBEcvnPUN+Iu2XyB9A+mHz/0ptj/E1lahA8IszQMDwTGAU9aCQUFxTTM4kEGBDEa/Icx9+G4gQ5BtFY2qaaOhgeBgQREU2l+UgcodznmNCATHcAx2ZCCoGYkZjgo0/0Pg8kqPZssxgeAYjZZj3bTGuWmNDwTHOAxiQiATrJaJgeAYGyD0GItkEhNp6pAmB5ple0ogOCZzrFowNZzpe4HgmKpXBQumhRXTA8ExDRXVtWBGIDhYwHddlTIzkJkYAp6nXMhZnHm41bPDmc8JcN/ODWROYOYFMjcw8wPByfygxCzgVBcGsiCQhViKRboUiwJ1DF8cyOLALKEulbSUzZcFsjSQZbhUlgeMKRHI8kBWYDFW8nJYFcjKQFbhYl5NtWsCwbEaH9cGspbCMrIkMOsCwejWYXXXc9TrOUWGctGEtxsC2RBYpCOA8XdTIBsD2YThbXYX8ZZANgdmayBb8BgMBCfbAqAdHN2OQLYHsgOtd+pkdnIyKncX79rdgewKZDfGuydQiupeDnRfIHsD2YdZ7aeYA4HsD+QAxBzkrA4FcjCQQxjv4UDQ7zC6v8+Rv8+9UDFH2O9oIEcCOYqGx1h9zO0dnniBHLf7dCKg50UgJwJzKpCTgTkdCE5OYwZnKOJsIGcCOQvV53QG53QGFHI+kPNWyAeU/kEQv1vAD8NdpxfddXopEBwXMdbLgVwObKTFQC4g4lggV5CAOhCcXAsQaZF6mxTKdTzRCuHYX0jH/kJo1cuuaaFqaFYoOJoWhlcwSCyF2uCNQsHxemF0Bb8ZVrxVKDjeLIyu4OaFgoMFUXQXFdWiUFoUUklLdJWWaJDSilaF7rW50L02FwqO1oV4bS6UNoVs1LZQWhWadoXSttC0LxSctC9sYDoUktJSyAg7hdKhUDphbp0LpWOh6cIZdnYzTJl3nJKuTkm3QsHRFUq6F0p3q6RHobxTaHoWSo9C06tQcNILSnoXSm8KzEiXQtOHyioLpU+hVEJZX6rpGy9kv0JV179QcPTTZaHoAYWCgwWBthgYLuCgQsExUCvYcnBYMaRQcAyOV/ZdTnZoobxbKEML82LAhFMb5qY2vFBwDMPURhTKCExNzMhC+JSNKpSRhTIK5aNZLqMhRgrq4m+EbY1xMsYWCo4xaDuuUMYVFs2ynrkZi3zyRxKp3OO5k+PRZEKhTCh0lO9tn0+0S8WU7yZVKd9STbF/QiQpBcktZxywngLsHjxOlPedNbwDghCbekHjxCANDQo/AnTIPUyeNxkIAQmcaXA1d3Epkt8mNFxMjoRvmNe0pctXDBG3EddhITMXcz9uR+HtDtJhElwq+wQKPxECOeVIgpvQJLhZ8ylUfEoHjdaflk/z+XAHBoIUuPKZnPksVvWzvCpYz0AyrJfiQDPO5Ji62GEmd+mfu1FpE89kQQyvERHD7fOhNh/WTFRsvoTbSdvfg/Y2QXHWfBntHQ8czz8mJr6vzHwVpV+Tr8rXckwoY76UkS+B9n2X3J8138Dov+GM48wpwwX4Fp7ED8i3NFhMUh6MbOTflm+z/jvFSSV758x3sRBIaMtgMWB2Pyx1S00ximyEmJz5AUb8A2crekQNDD8En/uHWVOiYy9VK74LCFP8aJw5psTUl8c1a0wD8yMItflqc2BuPxnZn36M4f1YDen49BO9cGwkmJr5gWBK8gLB2KX8RcT2+CWWNAwFU1NLENBaSd3xt+9TSF/7X/wd91vo/K1a9VHYUBpyQ5/RT8gpwzy2SuMuRUKZhCaUyZn/sTr/x9lwmFyGl9UfIeyPsK9qYVayFFaGwjIYR9VY+rwOyaaVKQKj+/mY0d3A5DDQmzG6I1NrhVRQ5N9UAdjcIHO/pHlrS8w/0ftl9H4FhO5XcuZVeRnxY16NrKSNpTHH2CShnavkqyWbuyl53CUa90W52kgSE1O6c6B0a3y1RCSweUIHBTI3jubkb2pBy4Q2QLYYHC3z2ZvU3ZrkTZc/Jsv8MSnH8cZH8mWlHYNsoAH3vj0LmMG2Pmb4v8whw8GC5+02qCs12qgw0k0DwyQ1MAxK7DcEC3qoCk0nozxvl0sGKvpQBdnd5HjnlOCtBn6dbT+qqMLzxqSU5i0D8XEQFQyCgrpowEkNJkM0igvj8tjKUGgaRk3D+c8IxoeREVA30jK6R2lAGLcDo6mSLG9SvGEloI6x1IESzMoRvmVcGA2GbG+cTISOSYj5QnnAcsj2JquRlG+ZAl1TqWVqIrLCvUe573G18C8ftNNYMI2r5Qz8j5AJzitbSeBUPpPUcGWAR0lrG5g5VOWCwoDZoxs1j8pUznyO2SWszTfmP2kWolLT12oaGTK5cbIEE1pKwS55DPz5OIflKpbDWsGEIRGpGz7Hehs4Jjd8+ZA5heTtNeRvl7tgMGi5npNdzwTN2mOD7fmQcre5GpvI4NYMtsrbBmm7hGlr41AwsJrqRLfHt88OlaNJbEHoVsP9Lp5qrhgSuHGyB8L2QpgSuGUfhO3n5PY7UU+5dLV3RHRuHAcxicOMyOJCwbxojoRbdJTEbT76NR0ME8UcRxFZ3JHNnqt9QttrThhu6SkyvDVdbRQHpsGHMsHoTM+74T2puWCsmTRc9IskbStd22WrxSSvQI7L+QI511TOtXjFridUHvjZNvNL9BuaGFCB1iHxC47XYnql1pO6XU2p2xohhlTtN8jPBgxEdqULEAMYqIAwUEGkFTxtroJGiuEsWpO7rSFiIpp2A5e1Ns7+wtGDqO1WATRtlQemNo4OTNWpq6GZbCG4M1qAtq35m6skg3ERYzDWbtCiuWulO7T04Fh7OB0PmJ7hWOOsL6RzV6VtSyXG2pdSmLmWxG3gQDrW/rGcATpWzfsiA0hl1YJBrNAstjgGcRJVUJC8ZDDgMDKeDaZiWdtmGOnbmv1FhmMqIzgIR9rGyzynMqogsuKN1qkwYMwYO5WxZHNXDRMj4zGVCZDiEthCyiSdyqRYzmSdCknbOCbzwtCCqQXawKWyvamN/WkSuYMoZkwFWdxgLzLOSvgSrwpnFtifcrNYO6tA4yBrg9kFtNhpFBmldkchZB4HnZs0RjK4ZQFGv1CFLSxQi90iSluUJ20xixYzLoq+1y8poMXOEb0RB4s0fpvtVpZjtCs4eOa4JZ8bnizsvarAmRtB8FYpoHXbdDHlZi1brKV8Wuxc3hhExKJcF0KmgiFkUnkhZNBrc0FkR9xi5YpSvMH3zpptbLGNmrXFdtXMRDE4tkPzTrbYqZqbJFzWGKjeDdUaVEb2QPXeguKY4Y1HIbvtd6pFM8egADQf1hyMJstMt7eS5Y3jkEaYsSM5oiMh1duyvfH+z47H7EhqRJTvCkaZQZ8TkHySDU5G082PN1MOhrdeOWdVA/PI+ErpdjluUfMBJH6I1i3oeglNLlPBZW68XoUvmyv0DMhLGKPvjtexGsrpBqG7nLxu1LyWzDKcDEndsH1rw2ZJvUPjPLd3aMEbJKG6CDMRAPUWS5uD3q207iIdRZjoNgVyt0ptRUYls9qS411OejdqHL3bErzdC7RLHYOjLVq2V961o3anNMAMCN+NSO9GaSfSOnUsnW3bOow3g6Mz2bpa8I7OiSlkbBaZ6InaLayI+d7VtYCZbrXAvQjUceFoqpHrTba3SsH+9dZJgu2Ne7EK2dsw2S1p3iXMLpPQ7DIyALMeqLMemLRWOI1EA5Y3VVFSfpKZCtC8i4OI5Z0ly7sgYnmXmZFQS2I3jpH4SGY3hSG9ls0l05tk7nLSuknsdgGVaZvO43G/lMfj1ondjMpd+m8jy1AsudxIjRXGj8mCyK326Fkc52zL5Z6NSc2BmDzqNiY13waHmY/hLiD72wWSUaJ2kYpZhH4ungwaLmH1EndBFpG0vZS7BM42SYskblclZstKzGAVRLggMlC9Rmewxs0ADB/StClkHaWvC7nwWrder0hH1gYyzpgyytbW8DGyGVT8LdThIsjkwNiGhm1Ow1Pgbas0ULVxbIeGcPF26iWpGWRkZ3yt7tYKjSwju6NrlTxuHCyIDW4U5ULOBGBz89mnPVhxQKeQl2XmQLJqihl5H1M4whV0dO4jjs4NYrc5kUfqrm5OqkBlclPgaRtw5gxp1lGcmQZkbJ9j5wyY3flsbYA5FHkhWiCStilag8zIxXjwTCmjBYG2uKILQ/42jiuuAvHCtYJMbhzX4hVrkiomiVuakLt9QzBlNdg0TfGp6HjRDU0zfm5GUjKbqTXo9RR+NL9BmneVtDMkdD8ONjfm5qLU5MDm1owKZKFq31akdYPVjb2CEAaq4acM+N0MVqOOLinB0QY6RR0z2pHOXSPzm0QQx2Muumk4Zg1wkYjCTaf5J2BEBfGK5tiuANY0ybONvxx29WtkrhYk7v3fi4+TSFdTTeRExEG2fdUbiC/B89CTksKo5Ue0LiMfkUwjUx3f5S/TgCe35MytEHJrKATxG2x7teb92XxUu31MPhqHbyhF+AYmir5dPp6Dxe4TGiqPcTlqEaHPqBxEey6aYueFwNG03WFOGtGhGiM60HCncZ9LzecgzkZ0yBmDsRgI1LZ3Fr+kYR2y5m65myX/UZxkiGf5fA4Wuy9EDWurzi9C9pektiCMQ9F4tZ9q/T1YWkZ8pvFOvhwu7T3/75s7799ubhcv8btYvPwL8Xeo+Frx5tbUwDGaH9zjfmo4jhIN2s0tzLk84C6qPjbzlnC9b4WUWyElivNeo7iuywbOnZSPNTC3QVB+9G4XfJqBOepgWz9OQ2w1JwO22Axtscz/zejd8ul65g7IiM2voQEWSwHrq5GooynGPoqRO7PmruIa2Me75O4s9vGFKvtoJCPCTWRQjiKd/Rex9y4cByruwT6EJvN71WLOneSGfgW1Xwm3JzD36S7V4Z8i2GQZheM+qUO7bNF82+3raP/16HLke9A35H6DNN8ai6PUPIBOiMIhD+bMt+28vh0uMm2ygdpkowzf8Sp/T74XbsDDqHoYVRqhhgSuYqlLa63m+S41j0CDtdDmTAnkl0R3cKmUUs2jmHs9eVTq5cxjWoF43ayoX5xUW20OttoA4bpTNNQKbLafhpX2MflxGQN1y0+wc6r8p7qYT+n98TMdKWy1DLWhhtp65hcYDUJtyC9z5ld2vr8Kx8N43b82v3EzpGnW/CYjvzG/ZQwP+W3RBHuPqQqYaDUsDZ/qqvyZYtGg3VlG6w6v+WdqZLp9LTEgCnKfKm6X0Au/LI5jI55Uo+8+/tJZnH/p88y/SXrd6p0hPhPPetZzOBCLbxZi5Wzi/JzJoEEGkEfYoDr/vqTPvCzuEY/3SHlYWQN/oY5Ba3jZfFRquEee3NbA1IQ6feTV1Efe7aYWlokPPu3Phx21f6o4qTdHzt0cLmKNfK7UCMQYFN8pInfm8GAzeGjeFQu5m3/LCUrw1lBEop6pjV4axb62jWIPUKKWxrFn65uFpkEHABJMdq94RKnFI2plpFYYsv5++UbOfNNu9Tdj9d+Sb1HSA5hD/tWvLVozBI22fIh/YY7+Lv82ITTxHQa0x/W/Krz+PV7/L+PC0UWvqx3yb4MGN9wG4Y2gPUq1h0IWZaYeJNbjrwOPyNRjeMg8Lo/9K+QCgp6Mp/VjlaQhaLK4ITz5KZ2dtPYpeYqT/hm6WwQjZ/5T2+vN0Qg3R4HeHI3Mr7QPbwqCGKnw42+0A+6O38h/ZRmNhhIbQuIz0lCeaYRb4Lfyu7D987wTWP8s6hG3Xv47B+yCs9Lo9Y0Qvb5Ao9c3Mlntgbj1ko36P6+to9Azf6a0v0CaxSoamRyy4efYWveskfZ6UXsBuZAXpbxotb1RdQIAIzz5a7xdTI2vff8mf+Nt/5JU5MMZCY1NkzOv2F17Jdq1V7WjQhrVbawagBlZYhq6RjGsEae9f/xmiIbiGSqVtz/FKqABwQQymmuQ+laoA5hBcNEj0tXaaXIoBiJFs0kbJssI59vWtakS3J5tiGQ0DNt0II5h3385NodnAOx2fR2m0QiYBnasqw1e0xUfuyVUBLEMmws/vlJ6uM4uLz5c9QhjUE9v6ulDREP6QEoly6XSdX42Lxc+6vtTFCMSWiCjP9tpwUC3WAA2cAzkLwuVMNjVANwgvkFcSAdGoAPEcabxzkQXwVDXfBixDj7OhxMF+T8nytegDtw+FUD4Y6yNUzKOasYxqLlu7Hir4tdRRHyQJd0KTSIaYpg3PwZAGpip1OUi4ecAd/BFOL5Qpqs8Qh04nQF5M508F/AGgVY5CCbQf5pVTxP4KFLgg9Ft5kah8KFuAdUtJN4hC6FukU5tkVOIhVvs5Du8A2FWKX8p5D/FqqcIfVCPC2ODFivYYgVaPKlSXCB8OOhR4WqLcKyGwjVOuoM/GjFVfkGUKr8RMQ8V4QLWxBfbJu0cAiCyWfPlb6GePAwEUrazXLZrZ451B+tdmvxGxD44FaIfBEDidnvCir06xwgJyTKcDY49BE9Y9aSDQlKEQl7VqPgusg2qDscy33fXHVARHO+jJlAtR12Ny5avv75074/r3muEfKAhsAZymU8SDNMVIUpyikP4cLx8NqjvoBJM+DxXmbHyCZDAs9mtMvARQiRVVvmS9nVoCdReIVBCLVehRUPZyDUIuc5ygiPRo7kJoQ8X1kZnyeKmLHap8gmXqCqCJB4Akqo3qcuenwJqUqwh9QmX5ExzGu2bF7gfCS0Y4YbNWjIVfl6MG3jLMOi7LiIgE/x9NC/IjV5FiqCY9gRRosT5DRhWPxFF1cfTkWo7F0Q3ZBeV51LnQ15XJ8+lzy8jagIfGoaq18aIeJOMIt5UADIpFo2wfwNcUu/fwSU67wHESPjkGUgdA6GjrlbYdPn8JhnMCsa4eUiVD6FyF2oflkBWDyXyw+q6xEp0k4YXFNfW+DYyAtMaacsfyItwAzVjuCtjAZQQHCknRoKG49B+PNEWDWUTgSQlZhJ7u0g2k1wkG2Aj5j2NZ8N5cRjTdBj/m8z41cwcCpxLmEPmQuA8Qh0aI38eV0olatgapsqyostvmgi/hIDGUnbOMLYNsIxlHFoGOI1ZTi2MV0NQIwdsQ9nfTsNDxDioSYPXVM2CL2sheB26a0B8WY/uG7T7Btf9gSg4PsENDG8z48AzYA1hDGSOdgvCmDUMv0MgA8dWyGLOe6IZ+jarg9np2u/iPu4GoEEcAwTGcB/3QpsDM6BtP/fRhaspJ4KBhgfR/hDRkJtlv0/cPPs9w9MAtHBrclKHEYamsYY8BqjRxPfEKc4Qk4Ahj/t4ngI/sHDFBxB4gagFUAqa8eJVvkSgglf85XAfrzC6jAIUBCdwcg0jZOh7ds7IRcIUwCgwNJgJGYEGWpjJnigFwkWrrbZZ0mkAUKH7CFwCx+u08mkBsAo20OAzxCxu9BXWATVHM4td3M/P9zvsopZpyYqWREa0IgyPX504Bgv+LyPkc8DspggGl6QTFRC/qK0VnQlaUEEXVjAB/r2sqA38QrdFAQxuSzfCGJoGn1hFd8IVDZgHH+gE9TMFPk3/cFUmVAFUgu7KHINK7Etkgqr66Vw0HE3V/PcAJ0rMIAocTIFAIgYRj8gRlhhMgfKuE3evBsjnlIaF4oYTqVCMgkHxcTIS4ghSsGuG4MhoinW57pEEWtdpbCQU6ISOFaAEjnFuY+HLktQGDIhPwKIKbUi1TyIAQdjCBcUvTkXJ77OELuDnx2j7aMDfkdNYMI3LjdlOT+JU0YsoAX4psYuEwy4w2Dk62DlJt6dzqXEekQyXBB9efVSBEu7XAhYsUBVANHBqbPgZB2RAxRKqcCFnchpyRmlDOtvlVEEkgzAGqNiclIsyg0RFVLAaCgQNOKk12DqNjK+J8Ilb4GQ9NG2gJhdiZoMLMUP4YgvmBfTC7cBWqHSxZqBjO3Vstzq2KngBHRpvxlisghgFTnZDB1EKysswXM1e6tpnYYp90LWfWva7jQYUS7kHuFr4l8/Kgyw4mFQ8m3sK2PWQuwcYH5/aCVQcCgPPAKUQnBzFPXCMuo4TrJDj0HVCd+oEtamgkxw0480Qq4h5Q6ysY06z0sEWLvE9UYvSf41X6LgAWBB5JVZBxALYrN4KhCeuqNMJES6X+76cqASaXEdLwBCeNGFAcu3xGj6jg0aX4Xo0I06h0WUUcADaUALQAQNymAN+YinI0DwV3UAtVA6Dydh4MkocasVT05oAhIsoA2FtKIx4A1GHHLAGBmRwou7XaDKU1YHtNJBMBwS56EQMxIXJfxHBYnQxNNG99chLCY4uENmNRcxtr8whXe/uYQcNmY9d1Yj5phcDx0RZ7huYPlRbJUaMzrWvG2AdRonpx/6MEsMRa6Z7M5Dx8KPIMAifSjkuMD6eZSrn3XjNhqZUnktur9QhrRuudXGc/Ig6pPUjAStpsHwzmvHyoxT3pWYs9LoIMdA7nss7PtY6wS3DRIaBwTQ0ZL7mt2dsGJxMwTJMpZj3bIb79yBmmg5/WrwM01MqEMFhcEwnuKXLoentIXgWWsgsVmCwNs29mcNwMS5yPgY7j1rmM7W9zIeWBRzsAqejllnoBls1aszCm0aNYR57BoxZDjErdLArYkErdbBhQvuVXGstWJ3SBgybz4AyEeNG57KWwWT4jFvHuazjPmAuLtW9i6TPoDKlNwsnI1t0CJSwNZyLC6ePyAsMK6MBZQzj5zOUTIO89PYQs0fnsicWtFfnwsD5OPZyTFqwP6UNXFiZD7GHWP0IYs0UA4ZldBlzmNFmzPthpPx65gh0u7gy0H1MdR9zuvGqmdJ3BRtcRk5ofBm8aroFbZ7QzPe8Hz8UPZ8NiqJYM40Ya6ZAM93LB/h4IaUSNEY+g+bHr5o80SD5OL0MtZrvnq+a1GLj48s1CLnOcrnOvpi1dmcAGn3zcjFowEVBEbPaOzuQ5rmnwNfTEMjM9oyQnzNvur6IRYPztxAxvzkC6GsgGmmBjy3TKoLxaGxImnjcrV1nFyIfxGLGoqGettTTjmFppB2ktGe5tHedq2tAGmuGY0OGoGEgGrxopnUbXdp6WOE4Hpe2Hla4tApAeBkc3WKJPbRnFGsmq6nrrQmOOlzCepjgUM4oM/ELe99QaD+VwRAzfcMM9vkW1QFoYLPZv8wrLrz2WPcyos8Q7xjEBoNc5JkQ8xiIRAB/SkTB+/FjQN02ykxaXJu0ApJpBSTTUsDRpTkoj38C44udSyAeUeCihVZUIUR9BK0/kmXK31BUYY3MmFSibqxO/oW6WqqupqorKq6m4CfHwZAoCn8qRqnYSwlcRBKaJyBnbgnj8d/C+4fRRIC93BoCZTUgp4Y65qqoImwiUEr5aIX5GOo+xkmyAnhlMsIrUXG7ThsT/bgV/nGVHSgcHZ7X0j+fxFiAWsqnyoDN1LLYjNzBX3rFd5jPQNZnmJmkIKNj+6yq+xwQUxFg0mXGyGeJXyoO/QTcRhLqNpIzn4fiz0ObdvkCVgFJh+E1Ultxy3pAnRPqMpIzX0bbLys8+hXo/AqWM5zyfaq4TghuflXBTSA3wG6yRG4IXxYtsoX3o+v9WK9MRvf8G9iLELhUV5IS8yB0flselG/nzHeg8zvUWcc8hI4PaQYW7fld/FHMUr6rv1MeRpOH0cQ2uAOopZhiFBVngdh8P7wc6tbInK6ROJiIr5lZ1f7FRUONzNmqF8398UVTh/If+PBFUy//otELBo1uRbdbISij/WronyK0tRdKGS6UGvKxnLkNXW5jFzG8Umvi1yyZV2x+L64Z9iJngci2QTpqqVUvvjJy9CjCJaGNI1y7nJeDfBaSyELRys+h5HNuOPcbUcEG1wtcjMSU4ToRgtx6kTSAb1HiBt+i8Ip5KGQrfBGQ3pf0Min9UIaJGJSvg10Eosf8EvrmRfVIR51hNmqml1Bcrx6SSiQUyM6ZB6zCB3QdkVnCfNt1BJCdioBsoPK4Cpg14uHiF9S/KIe9Lzbfzsi3sftppqGuzX61zQ90vkgWIY8gXQTklsgPpSRrSiEwAuvSBOvuZtO7AWA/Ft7tj6P88fACqGPg0OEyTytyV2qexNCRLUJ+nDM/wcB/goFr258Wv6R5I7LmZxDyM7wSacXPdTiR11EZ8kb8XH6RM79E/19G/X+lzQDbya+z5jfFjSOwTiuYO/0ZAVxXpmBdzvweGq17URYoXZpZIu7Q++IP/CMK1pUBrCsiWGey8kfNC9EAeSESCs7lzJ/t+v8Zw9C+f5G/mBd0C/App7obSU4aZQHQvWheyAghurSU46GrN+hfJU1srqZ+qlDlNuV0mXkJdS/xNwcLNXtEyvwDA0f2CPlnzrzMiiImm5ZXysyraP1q+MwWInRsDSQ9qR5HwOVygOc0snpCRyxE6prRlwJgnQpjQgkCdXC8tyU1NaWEvElLvz5amocVsftRKnq+tyRqR8WtaBxn7mnCdDmideyraSUA1jVi9umCCKDDLwMVqrictKdQLeioPSOILkuIrrPV0YU6XBpqhNJkuXR1XUWzS7BhdzbsYeG6HhhMT52rSyiBrr0xmDxwTgVoLonKWGI/7ZmfVWKA1TEQOlxeCYgYzHIZ7Lo+ZIaEMt9VEZpkQh2P3G8LzpdoHGLQoZ/YAtEc1dQwgnvpcLmcuiSNIlal7cLc1CkgdLhEXPKJnBlHgQTlAv26HM8B0OpDXMz5JWUJyI2/EZB7/F8DciprusqKALkyM5PaZsYrNktbRI5IiFjCFnPc5SSahALjvkmeavZ0+BzWdBF2Sd2PZDE+LtEVJSCHY0msc5n2zEfkVlgdK6ljFeE4WQURq1kuq11Xm5l6DRtGianXEopDYjErMuVyU6PrRg5mk0XlNuEjQDgKUAhONscSt2rPCI3LEo3bTh03QeFQtSu+ZHaHMveEIvaGbkmy110yeokAlisOXIIJTU+NqHSQU0cb1CEmNwthN1l+CA0OE5DTL3PAdJak+EX3lc+vkoRUE+yly8Ds4gozmRfMK2k7KqUm3lINRMOU8aVAbGgWa5rGHwk4CwtJFeqfiNlWZqpLYfTDUW7BtWR73ap/Ik/jMnz/3yofzdHJmL/mqmVU0G3hqGqGo7odPMWaWToYy21uCI7eliJvEafgLVbnH/11+0mcfpLP3I/zhvtU+MPs05Dz6Sx/O5LMOC1ZvH7o+qFpZKWqbj6LCX02S96bfOZFI/gkFGjxFFMcKP2tkbkLFXdFFXfjLnQ/JFHx+ajiC1D/BX7LY6a1pXaNzPpE4lM3zQ6mWcFi7+7AUc0Dky4Wl9FL+aD1DB3pI2pURn20oa46AJCIFJXMW+Jy89HiAmUMlpvbsNq3ZU1NqKqpLgB04tY/XNzbOQF+4m9wfgpU2oeduAP+mqqROV6QuOfm7zo3fcehLA+L6XzV8aslzlHGLGWk9nNmhq8T2v4WtLce6llMqkbkoQ5luGj42/E2lEavFbeb6vjxicmk5eNYf/dCwatZfzFmMZE0L41ACz+l9x1+O/Ll4g7U3REN9TP8w0sDBDD9NkfLz9lCfbPgFFmolDB3hbAvua5yVyTpP2wzZUtm8ZrxAF8zpDbqwyv9i+GV/iXyXsmWvIdfIPdaXUqSxK+XGpmLfqJpIqaj1qlCR+WCk32ZiPI6p0PZXijbF6x7NmLZ4TJKZ3HPfl7v2aypjkncgtJbysytuKlq4GKp8SIWvLpdcIj+aJh3trYGBZic5A/28Ce7ljMuADMm386PovziLNY/xTv1DiUZ1tKmpNux6aekFvl2miHuCZchTj6bM5+zwj/nsjeGqo0YqiYDj+9zSkZ9HGTURB6pOIEIB46Nei8T/emIvqhLk/eT/fGb/WTHAtRB7zrYdyVOfhUleJ1zP9Xl/lK8uiX46ibfzJlvodu3HI8X/LtA+XfIAoer8zvybflOzjxk5/OQvca/i0gA34tImQ+jvf3NnjXFaO9iAhQXaU63MvxIr6E/0nOkl5rvZRBE4FEM79GQoSqmnqVrakyAMvM4uoJZJ/XLzBNo9gQeiqrpR7aZ/ljPmidR92SUhvHHSlP9iYBmF5JPi5R8Wp0cO1LuUvrpZ1pn2XZZ/HL39Zd7VP8Lrf9lcUqjBWTxs/0X+rO9mv5sD5vWJtWOTfXXe0MXFkB+X5LHrrMr9we3vP+jXW1gAP52/5/4t3u9vN/u/N3u1vgv2ukFAcfOZWsVk9PSRtKIFyN/wUsuS4odfr+jQGv/Kn+1acQrpJy/2xkbQF563PwdmiyfLmf+ieH9M7oLXpaXrbRX9OOrYNC94nKGY3UaF9tIAY0drQ5IRSK8SBlrlQVNWWCb36u/32tk3i1I3H1znjvv/EDvfHzSb45ZSX1XzxofNYwTx+8VJUAHygvGA4B/PiLWo0Df2hvgcZvQx23O1MCkakS06SLthdAg/PMx/XSb3Ma6mvIxfj/fLkXu9Vw+US/+1sgxE2QoiF/CKfk0LjrMVwvwdaxP25R8Ru0YeSkiS6KnKwm3GBPptmh0N9rfrXL4ZaRrizSRNTL7v5FYXoWbXPmvuMk9Q25y15Cb3CnkJrcjIQilxg//IqKTflHxeVnjBvY+B0PmvrmV97N2qIEO9psqi28qy0O25g1sG56QcluZuR2lsfeFuTUjt+LB6Ov3k8fvJ2VBdqJ1Q/9+GjLtQzKLh2SNGx+SHISIGMNBaIc70cF5XqCD+6GCQXxBYM4oM7VRClOXfDHH7x2DeRk8FT8l92QNUHR+5TR3rKkvq/lUn5Jl5j5U30cyd1hMuB/LptaNrPkaqr8Gjrejr31dq/W5WQYrh8dQKi9raWztaIQHZ4E+OBuZb0eEZTw+eWXHvGVsHB+gavx6KI6oUnJDRBXGVMG1okbbR7SjpsesbkqkhNaPUjxUS63xnH9eCsnQj4Zt6wkY/CEe9BIoywlSluXxRqZ+2PAJgfkjz0T/I+0aJ8/8UZw8s+TmyTN1fD/XjuAu/yfvhqflaT5bf4Hn6i8sr4x/ykO1vwzb/krweA1hk/I4v2Yj81/akE9X+6zVBg3D0mf0I561Ia2fOTerxXN4Vp7FXY2YLMkoJgtEPyf/4+wkki01ZSh6Xsrk+Zz5EybyJ8enjOnMLymdOWdyGH0uYn43gtgXyWGuMOXFgocrycp/VYNIPfMSxIKoLH/PmX/YFfpHzNT8p/yTS4PrRl6O6d+vyCvcUPCWaRt5TpU0hpLwGVthqcvymmMPP89HrK5fM6aPdBzmLAwjyrJ9ky9tNIjQLAK2C18DaQahMaSc9o83IuJyU7WAxFxlwMLoTdOH5Sa3oekjR9NHWxKSGbUAhhkdRsdwGJpR0wYpoAFEacmR0aMB46sg8hYFugyaOVo6upGDzBAFjsv6vGMiV4exQxdHDR4aWcXQzkFrRwltHP3YOyPQ3p9WDowtw6gvA6DGRVaBmkFqTBrkVDxHowdV3TS6SomLrsLAKsPRfYR2H6HdubQj2YCpNGngKGeQlcZRkJUXzVi3IjBojKPNipYMHLRxuLSaeqXqYCa69pO4kTRs0KoB9opuZJ5pA9qmcSNhxJhGU0Y5LRpTIorxxBvDqZS4cCr4Z56NqTIPo5hv6cULuO7zE25NFrphLKLhwqK7tGYooVjzYMJ8AXSXG7mcAldYs8UKCFxJ64VZRYEro1WumgNTN1Lpw2qtiLjDJbRVbGBv5ARR/jDGhg8LSB0ujmnDAHF1J7bEKrbqRtJogWMrmeRasD2hDWCywLH9JulBdUQ70U52Or59Q9o2dtnkoLtZsZsUca3YQ4OGDSmohPeq2TJpyNhP+nBpFF/FkYp1xJosk93ycmUiNDXp2VqhMVeg4Bgrjjle+FPmeLgxmj6TG3OS1GLNnamxVuQ0NuYMN8aFWjnjQq3IWabCdOFWVOIFUoep6qLOpWqgFdKGcXIF+3KVAq9R4HVLHr4OgU1A26NAcIVDcU+b10gb5pRAFKY45QxXiaVCbjBoKyQFo2sGVOabhVTRoCpOaMsCHSuDqpAmzJ1lAanCbECKsI2wkkcCo/Y2/GEJunAbEoURLAqRKJQuLO3xsQO629gqT6KBtduyoCMKnsZsq6TH1PgqoAuXRvkx33H5MTFYzY2pGrtTYw8GXJEeUNGTEntSBUqs/ZYFvVTFTRnEpR9mEIM9rCQwne0AqrCRVmQgVAzipGx8FRmMj0OoYAgU1EcDja7yf4qqwieYDa0yCupGkw9s02CCLex2YCxVMppKxBRGhH3qQAlnNYE6qqS/ZCAVnEyGDoZSobwMCMdmKnUxgArDqMA0Sy3T3EbXN9MpdzpXC//yaTmDBTO4Wo4E9iT5xHoPzCKfGNo1J2bVoCkyF/zUedQ1n6FTZD50LdCdWkBtKmghB01KMfnE+SSwX5vFqFSOsQZMIbEYJ8swo5uwiiNOMce1iuE3onyYWbNGbwUSi9cy7yV5xQURr7ickVLQZANabuR0N5L6rj02hVT1zeQUW0stucbGhkkhqxgn23A3beeAGBmFjGJERNWZ7oxvoF0qRxNgyq4we+cent6QBbPkZlkwNQemDklTYDL8M9uBXmwZxuWkFzeOMmC+aI65TQLF+DhNoIyIgoOs45MskpMucaeu9ynX4TRpxtzVM6QfK99YM12CZNwgIhyfd4RjzlXJxiroIuOjsP+lcNkvk31clXIsVzHNa5RzncRjuQ45TZQi2CQZP8mSKg+0Y8s8VhKY1jXTujg+SkQC0/o4TIqxrOMoOEopmMXQy3SXjH6SA5+YKc0jrUor5jK8TUYxp9GGBGOlFhvGQyGpuIFpTzEdyC6WDhDTUYff0QlCxpCkCiSfWAOk1LLLoYFRKJiEYhsH5REM1oZEIaO4a8golu4YbA9qsakupSe09OJgezkdj5jebrDgF/ehTDKCe98Y+KTBvwt8ooIG6WBdjkuutRYMSWoD8I1xDInzUepclHJMAArtQDbWxBQ34R1jLqM4CKa7JNsYLmGcy5hk5GswVucS5bUsIuV4bJjYkixjnEzEXCZBjKMVQ8wUncuUWNBUnQsZxjim8trQgmnKUSe52PKLb0YC48+QGbbdC454rLkvPbCO+faqVbNtk5dBQRYcs9FkLpvMZU5VJ2YeWci88eYzPabLfomwUSzXpJcqJC+WChAqK7uJpSHjWBI3XOZqlqv6PCKy4FhGKq1WIbpKMoquUkEistyUiFzPEZHJQd6I4W3SBd3EBVVRmyFKE1/KFojaypluhSb34rwtWVybtORtDKGSZTAV9aagXDKSSUcuN7tJvGXMFHKSyxkvBQ33ov0+ytsHeQ+ol8V+ft5PVwCVT2ayYySr5EOUTAYyucflpCCj5n2M/YiO/UjSuSW4uCk4jqLlcXeNnWBaS4oE/xjHcSz7KRZFZGQdSpgJMzBnXMezZCJbrp4lJp8nKzniIzcwF6iPaS5JQEaMKB3PJbeWD2jcFEq8wlle4Sz16tOdBT1Z24GhjOMq6oOw5roymclTxnFdifhKVNYWUR5M9FEhzVwNuMqWtxySqrTwDdSCwhx6VrxMJnMQMZkrTHNWN0f13crYbpHSX4UpaxhqydqWqK2tAtGgVYqh02JOs0ZRwUmb1OMgNfPtlbRmEJrx9qrC2qc0dFoHSuuQJ60jizqiSPhZyHFuUhCRnMuYEbPIZcTEaLty8DYVpnSD/O7s3d2Rue8gsZlSyGu2CTERRJ8telE+Qqc5jjPk9qFcx3GuAMe5OEVac18ym/FTkL36O0JvLfKbKZ8MZ0tyxo9BthhEzdpisGom3RnHYGh+ly3eVc3YhjArJlQPg2qXFROqR5ADOtKynEdC9Sh2G+VU36F5MFGQNWNYMyaaLGnOt5LmjGMsxI5P6UiU3izKbpYJGMkkdpxkR1JDWc4yGYrBdEafKZA8lQ2mxtN9j7vocmGWK8+ZQURVA+jNxT6pzTNJaM6S14ya2ZA4h/0ctRnOZiRFyzw0mU8F87nxuAP0DluQ4o83mxJTFmpWTM/G0uNykN1ManM5Gc6oWYoGyyhjWSry01muBHFmycSxnOuiBSvJDLccZ1lFarCWrmapJTjLGnJ1dRiO3sykmSp2PefAjJnkNpeT3IyajZjNppQ+MFPOrWczW25JCY7NaLk1pSIdu9mmy7QE50ZkOKN0B/SGg96pDGYmz8Sxk94CWrBbG4D0LDh2c0+0YG9YEXOeq2sBOM84WBA48rzyn+2jlIt2kKugW3hIZwnaM25Hy3o2R0h8jijPyKmOaZHlfIwEZ/h06LRPpNR2bpNpguFMVZSUz3GuMGd5gzqCczaf4FxmLlCtIzeXkdR8icIy4EuT2XyIzGZ4rXHQV7hJhB6U0W1Ta3JRrzGB7XVSneU6hqfE5peV12yaktpMIjNOmqVLP8xk5lxAYo6Y5G8xGV9zkprBZc6C0qws65ZpjNMl16wwrSnGEZhzzKhZEGXULCeDGf3aoXt7dNcEmiqmA/t1JItZOqJhJ1Z3QnWRMok7k79sk8wx5d87pDIriZkEZpx0wwy6UwQTZJKxDHaSzqCnm0F1R2DGOy6l906rW7TW9UnrJakJMzmivmQ3m36kLpv+IXu5gRlAJQOZ/VIGQsmgNC13TkUd0pQpjvkxcQyGCl09pspkAybLtPkyo4t1WFgxPC04hqXdxcoUmjhYEIdPoyhm1BxpAe9RnMYoNtCK0W4OY5hM04YcZZrNG7JqNvg3WTWncDqTdTrUMNVJfI+ZNClxGhNrakpNptPEyQxInAmuEntnkIbTzKLk2cyqKbMheQ5lzomXaG5aZSOLJo65OmEOn+k0tSDQFgt0aZhJE8eCeKKLtII5NXEsitdsCWbGdJpLmETzhgBqmRDrWJYuDjS/JpJrgtKUJna1kku5Eh+RY3OV4+euAM/88GfSTzZOvJrEf2ML/p9C8ah6EgT4xUCwIVB4hqWF9tZU2knRcorLC8vzEpDD6rxyb9FPYIbzBq8BDLFG1hShZRGAi2IBcuiRQfCCgg8f05/mComBvJGNIDESBorJ1gBfowxo2MeUduLJp0Kb//P/l1DY8/9/kTCPEaueUxH3qlEURAz5MuNVeeR/P6tm5vt0hepAXgSA3RcTBerdQBQIqQLa6QF5wDzIgVIS0waYBzPyIMP0yHecaZWglzwU2lN/DbJvEJF9NUrP01pRV9cUEXqU8u3J96MQFj/Apx/AUoS1eQSnj9AYpfv7w/ANqCQE60rBTnEsYFIOpF7RUu66Cq8KghUXaOieRkS9OIAGjGIVRYF4MlTwY6LRUeien34R18pTYAg/9S2YVQLzM5z+LAv466f8A/SL9cC+5GnUh0P7hUoC7vVLwmCzkuFQf6XlLprPPPfG9RstZ7ArJiZYltQB/VaLGeaKeQkWJd0X05MIc5WK8TBPfk+bEivAQvCVhRBOq775Q3FCqcNZg2tDngtX8lHzR8iw4FjWlOlFDnyMXARAYn+SP9eLIvwQErOXQQ6XgfZtBEmNsD24EkI8W3f+Rb1KyuVFB5RJRan5GwRZEkLO/B1i/h5dTf+AmH/ARKGd/2kLNdBPGXAyjzSEumoieFXfrhuDm9A4a/gIAFSmb4nMjUguMW/jpoz04VIYIIcXyomVcTHYPz/sTyOCZpRO/jCOt+J2LbQC4Jl+Zu4C4mZZwmc4WhDX0aq3yYF1JOIKImmiJGLTnmCaJikAVlXvw3F9uKjAziLjQheIckAaRFmcvys9GsILoRthIwb4IaiW1dg+jPRNuY45XJ7PHC4nmIaGlWjfl/L6JiI3+H783I+kTJWv0BqfjQNUsmMQa1SfcscgxtiH6NiHJNyr57tsCWDNYmvlANZUpFKFKRIUYRzDsOgjWSQjHTLGoSjExi+q0a7jGEJs9ouXcJsZR1RN8xcAYWtAqnCcwgCxvnU8k7iWKnEyoTVKJLgG4CzK/KcbC4iNzYi2EXAjaqQVANvUzTIhFnqLvhBn6CVB8A3HDO1BEbO0gkicBeP0PVjL5lD5HLJjdIcBzwUa80fmYYfns3p+InoPXaDTWIBlpRM5axeSIBfKE/KN+RpMxvGNeN3jxOsSEcMY3pgqbEVCX4NXUtrKPGmrWLQq4d7tAOPxNRgY3mqid2VkHBc5xjFGu56Dd3TjHPE7Dwiee38j85hSiOJZIK+czGMPGJ7m/COCh4KtkLuNcrdbIG875IJ0nIpIxzkb+oecY317qEl8jvIVlwNQl7XAnOylZm2xL9SsEYD2QfMBtiDfWHP+AaNDyUGoPkTVhwnZyWGofp/3CkP+aOoDhvvRID+q0kX9yVpoTo7Hkz2RKL6V6ByOExB7KqEjOa0jYaQfHKcxkrPseNaOpEYU7qeCcB36nIfkD9jgg3i6F7CLmhVBLqL/pfAJdFk1MDOCH2VGyDLYD2quQeJ19mMuBCJ2OUJ16PoaYAdidUDpsPHRD7dmwDAUtiNmlyV0R7tIfkifcqJ2qGmOBi0oowVD3WtDxezurYLZ3aEFrQmsEK0jZhd5yLZhqQPq+Caiw2hHrI6P7fah/g4027ukCOXE6NrHUX5snB/n4t+FLYHS4eiCll0L3COSAX4oEggdjq4FjQjXobQHAQkdTU/buLZmRrDwXTUt6K2zImRnUTvdbRRUhhXA7HBUKkSJAuJ4OFgQuHdTRfTsUxS9NGGCbuFAnSUhvc8ppGeGENWLgv+UmKGcFnE8gnhIn63THl6gr8EjCOMB0XN2rPzYPxWM/RNEsX+yQPSK4/QIZWYC1BLFs0BeGZG8SRSWkZEW0MPoJmMlp3DQUzhD92ujyEwlpMdFfY+xnKYR3QOulyOgx4kRx5t+YySgUkYCSihsJ3PQeK7OZS7nomLnEXZ0EF7WLKA0hgPiOB1wV0GoLuHCAUHMUk7KoXXlzG+AfsvRfQUHvoI7oWJWst8qJjuQVWi4mtWr3c4FmueAu7QW16ZmN1DQLkptUBoFAHKpDXQGm90MAgJ2W6wQBgMCXqcoktZtCy9JDQuE+WpUILOTMF6U06CB2U0lLqdBDoAdVOx1KuBtXqDiANjh2Ocu1iKCeGzAyEA4DsQX6yGtcPkNootV4TwWxK/BKuoIgT0qOcppHOWdohXHdA4O50OJBfnMSaJ9BPVwcgpzOM01PMOJnCW+J2cxkXMW2jvP6Zxz00FqVyfxAnMdUOJFQn3mEnE9BfPkMiReAZTH3hlGHLoKyS6SECRfp8zr8RI1SapsYHo4miQjS4iCeywItAWRPfZwyJ5W0MdMK4jqWWAvWrP85Af5r8F8dW2BjkD7sqYlET+XHm+In6iI33DrVHnBVdq7Z2nv+lor+lZ7h97RvvgcKFNmOlcD1H8k3FyBw2pSqa8VoL4Kqa8kvit5sx7ImwlH3oyp7phATcioqbFW9OvrdpX28eKUsl+zppbc7oIty6ca4JU1oa+sOfMZyPlMFNHhs9rTxpctMxJy9o1y9tUhFVGX5S5eTpHjcjm47kKfVPUjeEKjy9JjOUffgShwi9I4dZwsoCsBby99f3XfyvfpN2EdeilnQXQv0piz9Fz2GGa5SId4fzi2b+jYmANPvpGNYs7KA0yT92Dx59V3OQv/VNA1UfpQGV5ZG+sr64vmYfA5H87xXVXq4qpARTFOiyPLyvdRgtiydE/VwLKlpgSCSqVESnPmUazdo9Hjop4O3CXCg5zHoyAB9bXOvqCWIbZskZLey/haStK7FVFNQ8umHOk9pZ9+qnXOXbXYV6p7VP+fWv80dvsX4Gn+Imt+CZ7mL7PmV8XV1EM1bBroq2htzYhXhDfQ3xi8e2pU2Xrmd8UJZbvnzLOY2LPRxP5be/1BwL8kWV2n9D96b4GIKc+VmT9qG2bCI9mcEWb/mMUrZ1aeJ3Vda5kLj9T1vGR4j5scFFun1Zx5EYpfjIJclUu5lfZX/VgheOO01HWd+N+wdn/T6wkzfQmfXsInNVfTe7VG5rWfJmYHVXzLE//Ct3xaQp2DJifUO8i6LOKTjYGAT5GPEKoDzMdVk7UeuZrl07C1BanY2Bzncz7EdawhNdixqDipTudwOkO3j9luaJVnidIhqEsUrFGQ9AmOkIx1FVZLO8H7nB5EuMXDuARZ50E0PBG2+IzKUieirLqeh7NFIyP4LFgF99ngL9aG9z23mvGl/xeO6BzSF7Un7Ve47hljmt4tarAqNV9Bz/vkK3JfztSxPetoTwwRN3xSb/gK8/VicX7oarCqZ76Fni7Fpe35YKRTs1wGMFalaawa4Jb6IXkojE/AwASVbim+Bz3gasvDFQYu/bz7e7IK/UyxDh43f20NLJ3F/Z9Wvjb0W9eXclimCtQyVY47/xGpl8WdX+yiSEv9EvME2moU6ScQRVrJ14wkrQOGnp+oHk18WZSf+LIBHFl4TyeUdA3/c3na/CryQWd/Gpo4s9/oROnKYkCw5i0tDUvofm5+lZFfwZL0O/PjjPwYLugJdUHPmf+2i/ffKguLYv6gMmlLctxq+WOJyaKLdWXJmedtl+e1C9fiT8WkV8OaVA5bUmO9mV80OZ2UOrFUUx+WnPqwqEkgVPjXsF0FFtmyrbPmJRUcu7KUIzR0gVqMymExekleycJU9FfaiRyfugTWIcYX5D/NaA9ylqGmAGlIl3w94eYIy5DqVA9zLnlzGoqUTU1jUAvagRrQlRypjCnxbetP/jYktqFhyLSlxDaJeNna0QjEq669u9xulrWyRF3I0T0jbS2lugtGhw9vkFkNPS7Ycw5GIOUkVtHR3V2XMPTg6E4TRFjCS5ZtlGstPW9Cj9VR9UZD6a3eJSjparnYfSxBtpJVdDnvFFapF7oNSxOWqPu5YVzomI9dagZx6INpP8q3GnHo2u9d2ou4PEOpZCiUtFaRLgg0lAxn1XBUtWMVGpgRbp9G0pDEfRpF85LGhHYEbezTWO7TOA7CsrJlvCNmm4ncpwkciIrUJJjUNjnUry7nNBRNiUnZJWYaRU6nyBmWmT0DIpnekiJlphPYztKzZ9mZzXYC59BAFMV9VhtQCW1A89k5Q073vwv/rGIXuzWA0QfHYrfXrWkJ0jb0NsexNC/Zqg4BbO4isrmXk82dpe95yvme4+NqLvRqQi5sYUMMsmQNl57TvhmpG7EGOWZGgiafG4i1jnlTItrjzVTqsmFmrfu5bKUWFnHztrFkW6hFDUOGXO7IFR1adlELQ0HTBJRTY1BIm9VJ74WWvGjQmJpjayMDHFUchIrX2YJTOwRdagnStJjODARdR6nrGP9xuTCBSNMUBIsPUelEtBunqNQRs7PmDLWcoRYWcWpnoUXNPuY8LT9RiOdS5WZDYobk7ovQpuRsuQRtl6nnstt2QAdXKPmKLtoVa1C9ypKrdtHInkU71Jlr7s6AGeg6R6A8bo35bJgOk4ztBrQAJSIDUA4GIG4arD3UqJJgC6rmbEExf5Z66KzVnLUtaBwyLRnpOYrwXGpaU7QzAeVg++ET0QnGyNrS+BSlx8zS+KPXSQdafWg968h3fBfiuZwkbbTpjKZd0BT2HmKAYZ932BkfTVcae7gu3WgU0ryYEVO7xPTkoKy1R3phUL11vr0L4hurj5MEYw+OPiGNti9Pla9Nyw5O+kPcAIpzJG1g15zjIArTYWlOTE5lCBrSvoNjCCPck0fr7Dsvkquta0LLDi0sjOqMYzhkOs628mjduo92Pf4fcmGqpMm091DAFLf+U8nlVv62M/JgqtMpiRYemndycZLLKk+6AhVJpjaOWc4MorVzXC242zjmxOlYXYt5uJbUDqT5LxkQGicLcS0tgnKNCC2LoXwJ13lJFdVLw+XQwNCczXKahpS/7bJdYjlWUY7jbCPKvU5iTbwcMAOpSJqCcKylPSVcl/U0CFH2BrSBYUjT22+kjUitQ2Rw42QzBryFisjg1kDQ2zjgbU7Ny2Z7OF5NdkmZO2kdUnOQCwqN8e6BGOVuy16I2afj3RcL2u+G65JcYs21hAYhNlEutxyMk5nqdNQuxCfg+2gIi5Cm6D9C45BSvGn2wckxTOc4x3HCMrpPkNvN6Zx0o3jJnNLp/L/QulXQRTcdmH9wXORFoiW0CbGJWoTk8odys7qbAyDRVZqILF0HIdXz6N/4aE1DGmaadqCmtP8gyTk5lQwqTatPDvYfMnXIqNT3INh/dIa0AdEMRJORaquaAROgYyvaf6QVZLRmubQmszYU8jaVMIg0ad6IM2RlTo5zYMYt27sqkL+1pCMp4KB+Z8n5xtHeckjTbvrhWDq7Ycb8bzLDqxK/pRsopN05EhdNGsQeTrenmy7k9GIoaRuYMEkQkXxv6YOGlco1rUxGLfs6jf3IAufPRPC/+94kvjQ1Wtq3DIagIdQ4pMoCv+vkhGzv6mR743iXWTBRRJ63hubg3/JweUa4XmCAWxJ4eLeW5xPBG4EIrj3IAMcxxq01SsaFMjT6NG+ICSSHKxtcE2PKJMxgMiW63JiIjs8ZTHUzQPf3aCKcBj640r5rhsXTUexSZPKqyVRPud2a6TTPYrhpap5NKrixbG+XMBOa51GzS5gJHxdqXlBl7RY6OSB3LyLxl0RvHAuxdktYJEv0erV/XwjnvTTspfGnZakb8wtmOfU52ncj0r61B2jeOFZy7bThalezJqkFJH+T+Z0lARzHal6l8YTXkwxugxUhC2keHRxj24S2z7Ph8yCD68xICMexGfK2ooiEcJRqm228mR0hvIIBquWmAarrgQ/OhygZ4bIXyvYl9SEaX+5kg++363aAWhif+jmtcXkzq5tDrDmEmmdV/WGodwk0of4Iq4+guiGrnzNH3eIeI2/dBanOmhO2vKE5yTG50NTlDEZdoMGo5Qw+ggCOhmfR/hw55TcwwEscA5w/FS0N/BKmZTNlgvHNH4y4PXUYV8NhKNWbz4PrJHwbS+6O8mI2AKubiT9S/C0IfjeJ3DlSt5sx3yV/D5J/qRLfInHbxlpL6RJp8ktjw04z4nRLUrNLyNBuzd4ZUL016yXGlgEZ/Wbxp10Eakp8FrxtVdWBkaiNDT8NZrbgpBMEd2Z3ELI7a6zpd7T7O+yuS9sVDcjStkTtctOdkZZAze5OSvaLJGfrivQiG9tSF1OCoydk9UERSdnO/MDBVLr2IGnXjkjaWZC0VdsAaNPY0zIQ2gaBcko69iClYYONjYZD0P5dUr2Vh82I0zgZhskMZ+8R/Gck+diOgz2CYaUZQy3l1mSMG8ZY8q25keMYbtqMJwObrGucTMBGTuRGTqLAyZaBPRkCp9jQ0lMpcEq8yu+RYc1rfprbyOkkXBsbTJpBpHEyE0ME1XoWe2fA0SbbejbHlgEt/EOEa92JebGK+eFGgmSNgwzs6lqwMKUNGFaaBOybGSM4osVoJ4tR/WsW/JrM7CU2KspSVixFxdNasYyxp3lVLk9pgSVlm5VkZ0ds7FLSsBOOho0Rr9URr9URs9s6Eq65KOupYD0UPKkV5GRbBRtZsREVT7HiSbPJbcxmErG5MVsYgtpsJTWbbGycbMPGbOfG7KD+nZaYvRP6d5GVbXZzY3a5MTyp5GvrdxzOxTKuzX5Sr8mtxskB7MtBCjxEgYcZSxpk6hw51YcoUN534p4yR8ittqBeKO4YmdbKsY7iSJcotRpdM7KbpGhmL2cgaTkNsWd0nc7EQs+mdKzgWuM4y53VgvMpbQDWtSVe55keqP0C/Q/IwCYPOwsSdnEqP6x02pKv66OBMq/5dsvlxmxtmGmlX5N6jZMmICm/RnIsudckXufAv9a0IWm3p6BhF0U07CwDSjOSNFSghPsF9jUp2KqiOU81uDQDS+OkJVS0oorWNrx0a6h4m0xsNTrobNtQheNkZ8HJpgMyWdnSHh9BwCYLm9y8Nho4EpxajShtOjOodBRLGo7H1NSV/3SzAaW7QV138rFND8wLRGy3Az2pshfDSEsv6OhNHb2pAyWcVR/qqCThmrTrSqVdk3NdSup1f8rLgNT9r9nXVPMo2ddKuq6Pf/m0HMKCIVwtZ22oDya23gNKxab2YSRkG8u+JusaJyPAaR5JXaPItZZR0DVad2o0tamgMRz0WFCtSa/OtzU8bcahUinXZgJZ1+BbC04mYkaTKHgyadegWueUcz3FicW4pqZhaiDjeipJ11lQrvXSmE66NV/PZ5BUPxPMa7Kuy8G3FjSZhZYgXZNzDW6i9phjez5CyvVcrgc513PSZj6Z12RX42RBusQs5IAWWZL1Igxosc50cTq6gZaoHDKrLblajQzLeKpMarCoBScrIGwlhYFFvRJEaghbzdmtpigd0hpY5uwk1rLdurTgWItJrE/ji28DnmJ4V02/aDa6TdqEn1o2rNvmtODYCJFbWCRb0pGNgeu91XXYBqOc3dXt+AWWNjvSsj1tdqYFJzuxq7uodndadqVlN2Tt0bnu4QBV0N607LX994XLvj8t+9LmQFr2p83BtODkIKZ5iHIO40dWWg5Dzvsq5/14zY6kVd7RtOA4klbzgtYdC+uOpwXHsXRsXND6E2m6j6TlRNqcSsvJtDmdFpycxsVzhnrPwl6XlrPQe47Ley7Wet4twwdp+cBO40JazqfNxbRcSJtLacHJJSzDZYq5kpbLeIBBzFUd/tV4Ga6lVeD1tOC4RjK9LkcTcFg9Cn7NEzzGPPVvberh1DQDZcszr3uCk9e9UvOGR+IqXOo8edNDvkqP+Sq9UEdd09wLB9sCbAR1JoF/nWdawY/OM609wUlrr4F5m2LaePI20lNCTFvPDrZtLKidp4Nt7wmOdh7WWgs6eNqgoyc4Onh5VgU4JMPHxALYnTmXzqh+CHPp4uHUvINMR57p6glOumIu3TiI7p50gxcdBtGDc+nhRTGqe7q59IIPnZ1LbwRZ8EwfOJp4ptITnFRiLn0pph8YrSCxQkx/nUv/WNCAcC4DPcExAGOqqQWDPG0w2BMcg7wP++rqW8gQangX8RbgUuc1MkO98K1nmCc4hnrxe/twVzXC4cEjPcH5SC9rRnmCYzhaOxxytJvhGLjW2VUb68loz4zzZKxnxnuCk/FeiZlA/RM9meDJRMxwEhdqkpsfQ+M6OVM8wTHZ47duqsrvqKlwsPMsccuDiWIaciJ5Mg2SprNcpleZwAyqmoloDJ7MxFRnufnM9gTHrCot57iquW6q8zzB+TxMdb4nOOZwqm4NF3h4X1royQJQWb0Ks8grFrPYk0WeWeLJYs8s9QQnS716ZhmHsBzedp4sxxhX6H6uqDLflZS1CixWsFYha7VHuMIjP1qXYY2Hn+prPVnjyVqMZp2n4a7XU/AGT9Z7ssGDc53HMLmgrnqyCR83e4KGm9F+C+Vtgbz7NWD5Vn7eqvHj9YHoyTbPZnoLJe+g5J2e4NgBUbs8Qc0uDH63Dn63x7Gz5R623OsJjj1ouc/t3H54I1uRBzzBsQ9rf5BFcpCLGMVOP+TJIcu0OOw6vu/J+0re8uSwZ44iwoxnjnmCk2O4OY5T3wlQVj05gfGc1PGc5GKqxFOenLIST3OWp72YH627e8bTdmc9wXGGl1ZYc87TCL7nPcFxjkkZtOADd2Vc8ATHB+yjQi66mkue4LjIPjH0eJkjuIyye8N9vsKgq1fhjefJVezzNdZfQ72wXsx1ncx1z3KbmviobeIrr1kbvOZblnRTX17zTTNfmvrmdV9w8rqPzL8+n6S+vOHLmz6epL4V9pavLOnmlNY8T1oLFrXwo3DsLX2ypFv50tKXVn6Zac28Am/70tqXt/0K08bH4Nv60saXtpDfjr3b+VF09fa+SungC472frnpyBYd/ZAl3ckXFHSC3M6U28WXzr50gdx3/GLkWvLlHV+6Qm439uqGXjU1SHd3X+X38AVHdx/BadiiJzVri16h5t6+4OgFzX3Yoo9qJvDhC0oqobovVffzpa8v/aC6v487ZoAv/X0ZANUD2W0gVavKQb7gGAiVg1kzOJ7sEB8s6Xd9wTEEYof6YUDxcCTDfcExDCMZwY4jfGVJj/RxKiOheJQv6DMKkkezweh4umO4i2N9GePLWPQf54eXzvhQxQQfLKiJvkzwZSK6T/IFNZMgcjI7TvFlsi9TMJepvqDvVDR5jxre85UmrffYNJ8/H6f7Ms2X6Wgyw9f8AjO5HrN8menLLCif7QtqZqPBHMqYAxm1teFcXzM4zPMFx1zOTwvm+7hyF/gy35cFnJSWLmTpIl8W+rIIpUXhMBb7stiyApeE+pdyDst8wbEU+pf7gprlmM0KX5+ZPu9ytlzJlqt8wbESLVf77knpyxorcq0vOFb7SPPLIlkHvSkdzXpfY5Zv8AXHegbl1IKN4aw2+YJjI7dbCzaHFVt8wbEZFdW1YKsvOFjAt0KVss2Xbb59mHLRtrv5Yg93hNPc6eOG3OXLTt/s9mWXb/b4gpM9fonZy3nt82WvL/sw7/067/2+0h0P+HLANwd91cXMcmx+2JdDvhz2wfrnLXrEl/d9OYJdO8rtPObLUV+O4So9TrUnfMFxHB9P+nKSwjJy0DenfMHoTmEpT3PUpzlFl/ID4IcvZ+yqnvVh5jzny1lfzmF4593V+YEv531zwZcPfHPRF5xc9EvNJY7usi+XfLmM1ld0Mlc4GZV7lbfjNV+u+nIN471Occx1HmCgrwXSJJDXggrTNCDDJZCmgTQLwHAJMKs3Ank9kDeCcvNmIOj3ZpA1bwV87w2wFyqmOfu1CKR5IC3QsCWrWwbh3gWmVSCtAu5T64DU/kBaB6ZNIG/jIRcITtoGSIhJEe0DaRdIe6juEGhCzCCKyt8xkI5WSCdK7xToT3it6xw47CKQLoHFLgLpHJiugbyDsAuB4KRbAOyCSnoE0j2QHlDSMyB2QRV6jfUKVFzvQHD0gopw9foE2qAyEBx9guhy7RtW9AsER19OWQv6B4KDBRFRWkUNCGRAQCUDOY2BaJDSikFuDoMDGWznMCSQQYF5N5Ah4LYEgpOhmMMwruFwTmREIMMCGYGJjAxkODyQOZ2RbjqwtTmJYwIZYyWODWQ0EpoHMhYZEwLByXhInBDIBPbOyKjATKTkSYFMDGQSJE+mzMnxEk0JVPbUQHBM0QlT9HuB4GBB2GJauDTTA8ExjRXackZYMTMQHDPiNZvFmc0OZFYgs4M8orT+qia1cg5XbQ4uwbmBzA0cWfo3ieDmgYK1gQYMrq4BgwMNm5vmn0BDBhc16cquvEVQK5AOzmXY1a+RaZZKfCtOJCBRIgEp0DbFNVVjlhoRibgWpBZoIGJf2ZxFvTWhFYoLv5NA4P37Ep8FoZO/MGJKp1Tno2ehjaxbNI4dNDlATcQmT5Cird7FBfQuxh8u5UfR66PotKAa45NX7VSLgYqLJlu1NdGnZhSo/3Yscl5GoZK8jEKQiJxCFMkoxVVFFsHzOKWex0WzreDPQfDnouwEAsFGJE47VXLTtFMcBJ2Qi2ZQBvUgXYDTo5K+aBspu7uol1V1D1TdEy3dvVw6JXrmzFcg+SuR5PvkPpWsoupIHf3Ihf2qfDV/Yb+mjeC3LF8vWqPJqrDB34Cyb2TJ9g4vgvtrZGokEo2L1uo1INXwuVrR1sH4VPT2a/YSfCiRunm2AxURZj0oWq8fMFJeLG40f0oEN8tU4S6wom7233X8Vy+1SJROmmbglFsC8o6LxqpgCIuvRXe3vJHAXLBZROITeLO4J1ntkWrh/34HIVSP8vulWu2CQ4mPNrGi7mS2cXSA+1RIhk+wHnh4AZsXz93crEm1bNEbvbjWGMhHbSNooyJhpo5scbXi2kXjWfwprH/mejKVaJx4uQD/2blj5mV3hjPmw59juBdjuzPZLRzeruLfc5LJoSZFOjZbvmRSGQwYRucsDG2um9hu+ZMqvo7/+TCQuLwfHH7zpAE3G93Prn6z6vDTH21qhw81Vma1e5LtMpLs1v9/NRgokZTVWQ2DQgnZYkB8bqIcqt9cHqlmRYGbwINJXGjCAjeaDKvuRpVJqtDanKf3YPJpfPRYcAcKKh9MPmkHneSwT5b3u9mYq8VjplhenPUlwZKguLEgF8Bjn4ZBWLXUsav5YLIhZUaL+swt1XRpJkmy//9WRUbwfM7qHmdWJgq4/arkUe6Pn4NS3cR7kg1ZXH9SvzsLbpBdMNQkY9lJyk5Ctu0H+FI32qTs3oU9XyiW5KT+3W4m6obdo9JH7kwWN46uJ2Clj6JpijV16zO6vu4r/nKYT/Kfp/ti0TN9k7iP3TX40J0F1GDpr0l7BdyZwjWgXzxwvfX02ePzzyZwdAN0Q82sxJ28k6GVl2Wy3N0wqPVsOb+wyu5MoyqLJl7chHdaYRJCJN3glvDeroseGEPRZraADF1p7nI9zh41W7RGB81If49ZJSnKxxgpA2thIA+iQT0ruSWhGjB5eDFwWN+v9q0kRxKwQ4FtbW9Ik9Io9SjBKdfNiUM3/VC/ytbfWYDyR51uYb4dv4KnuPzsQvfDHUFxTrLeS3z+gN+YNCnOFPoPnct7EqU+2ozNsDYZKcx8HG20X3Hl2AloR+v53Zk9yYJk42+8fPM0I7gTbZqRB5MiqXuStU1a/3jcin6abuDBZBEL+QOCf9Tzqp/5COo+gmFrYUb/VNc/tzzS7valn6xMXPqeph/oZ2o88rcfz/7487N/PlO9sSrht1FdPtrPfOyR+j/j/wY+jK/1j8ltlaYmZTBNEP9oEJF+5hMquJb++eQj6x5oPuPwpSHT9cu9n/n0I/PGjJ/e+7j5njpmVcJXo5Z8pp/57CMjftKzSYNXO8xQr6xKI/hlIP2MkYzU7Kc+WZXmLszmrgeT4RTvdrfSw8xBIHf3M59H/ecfTFr9tcwXwvqTD/MbXr7Ql6lI5IvhaiDxi/65J252r8B/o6/5su2vgff7mvtUWx3+CcxXdem/xj+iX9z94L9xf3fzDcYh6acuWpVw0bpPvlUJN44vyQOVzCJYIzM5fUsS3zV+4+TLH8F/Hwv/1micfDUV77zk7zwno2lEOSb1wuMMLMLoFV/3Xa4i3fHHbuKmg7tWZ3qLW7DG0YZDXI1IXBHFufSQqPkY1GrNbayBqw72u6Zu9mOIGJPQ328580mo+WSk5lORGmaZkU/3w2an5I5IzWcgTH/GlWG3U/K5SI2wJu8n3GM3+wnHVl9Axy+go3Ln2BsRZZq+xJAyLtWM3PMofqgl8n+muUHeFw6yYVKd8PpxZ+WrbpBIEbnY1+3NmvtRc380yG9QTV760Edvlj5U1TwUq/muPCTf7We+B2Hfi9Q8TDUuDw1qiiM136eaPK+8R2/mlcdW9dCxHtcC/9POj2GJNGZMFo469Zk0Ybj50ffvV4e8NzULzbf0RqJDHi9tjRfTj+ln5KfuJmIWmhqZSU+8lniwccHLAf77BC7h6vgv0zj1Mi/nIntJp1/2Ggcv18Tl7OFzonF1e5k/gva/x98C1CdQXpf98vrrZ9ZRbhJtk6Gs23B+C/67lXpRR91pfGbfT1Nn2L8G/0N5Cv0K9BzllEmdyajuY+wDGYX4zLF9Ju8zdTk57Ov+K4j+89wPZGQiTuujtyz+USu+DfeUxl8S3PmX4Z74l+Ge+Be/yq6k6Bp7hb6x7S635AtZ+BXyEfkIM51kYO6oLoFUL8c7WAa5xTS0EzP++sz4e4j98a8pEp9vYUf5GdJjp1nk5hKfGdvOsgoDMDWLk7xr5fYyuMrWUlfZPzHxCfO2nWQr/Bt61X0yTgv16A1poeRzapcSdBR2zITyTSjhTjSPAj7V0lv2eTyRDYM9fQG9voD5J8PGtfEXQ9QAUGXmS6j+EpYtFRbfo9PUXFFZ82VUfxmrSNbIV3D+Fax0ir8H0Axn5j78RS1vZEaDUs+6+vCsC9Of5PBs/gY4D2gGHUh+Us3du5r55FHzbTTNTxn1Q5czahKz/ZqH+ZTR7nWLCzTeUznu0Uq7jT/QbdTUUVnmO5HvZ5nvBHvH7FGT4EP3qHk4Iw+bejpm3KGzCnCH+tEdim36EW7YH5WrKx0zRT0p9fig0A4/xhBdRCd0+ynXIBzRU6iCT53GdPLhNItC/j7BBP4Tn//zhuV6WleXfrQGwZ00X1T9OJdJjq6zWC50/y26/5bicI4QTpPMMyh45sHkoaSTB/W/012jWy097zR2U5WgTTmmjdLlxx0Cpzvtli1Oqtcdgzb9UZ7P0nOWj6M/h/L+ouNVn7usyWk/daItMy9yAcsxnPIss0WZCoj7G/zw/lYOF7sKeSlL51iK+4f492DA5p/w4vtHP2aKkn9WmlfQ8xVOJJT6KkYbR2by4XTnVlG7Mz6TDqcpTpjGJKkOePC9K2cak2ZRflccryXijXuLbjE2NJM0R4MWlN6CTmIqXfeiJUtbovQCd4oYeiuWtLLt0AblpjVLWnNcruRtDqUNh9LWBm9qi6G4DChwSqGTHlegAzt2wJBOVt22jthgdd6j414nTYJCp73HPuyuZ131ElgJiICrnnup+V7krdfP9KRnXjf46EUvOPTH68UYTr9XP7wfwgtPKdhwPkLjoeqDBwe8+A2I4ZtYklFXPDjhTaIvHqCZBDdLR8BwTropg6OhzNb0KDIEQ6FDHh32KjWaUzczLB6US5WCQTGcEwY1Ugc1EoNC46Eax8mMjgelcZxQAuYgABt3HcAnrx1IjBzc+ESWPnkT6ANXXEA/vHF0xSunI97EKD8KjrGMGKXrn58ppcxMgyA65SUjp7xydcqDR15WPfG4l7PDqasnnszBJOdyCHPt9urQ8nO+IioJGyzQS0l1L2QSmEV00JNFaLCYDRbHV7yu8hLOFM/sKDxT0Q77lFvG1stUn7Zc7tZ31sORZ14/s5JOeT3pm6etVrtWMotOeShfg1ZwyMOxGvNYR7nrqspdT++8bmZDvH2Rk97vGatpE7Zvs27fZmwfGg/VVLFma7x9mm4FJRl47JntVMIMK7u4FvhXk65MMjvdMJlUhf56fc1utt1tB8RkBPy0h7doUteF7nrVbppZ5bF/m1lF79332cL565WZo/ZqOkYdxzRW03GA37yaTtJ/D/515YzQdIJOeVm66522HnRn3B7BSa8WnfRwnIU4+OedoZfeX+msB6zGbT7+pdOezhyOejguQN4lNrqkq6KNLjvBVygYjno4rkCwC9ZUTu88nUmTgmJ1zqNnXhkc9DgTOOX58MzL0kHvdSZWwUzghteUznjl9Ml7Az55qG5O/zvOBI54OK5DRUsUaUAmt1atqKG1jdPUGhrethraUEMbiGhLNzzTjhra019P2kNDBzrmSQdUMxYTNdAbT6fUuaD4E/TDw9EZ4uB/14kOd381XSmyawG3GJePts5LoKLD6Y7hOL889O9ph9OLfXtBX2+bLKUPh1NpnfUqMRy64NH/Lqvhljic/hzFAPriyQDoHsj+A51u96AriN9xXQKVP6hDngu4lINDHoY3lMYeqBxGMcOsGL4NcMBJ+Ohp5KXhDJYElzw65o2kY95jZjRljaH/nYyBrLGUNZaywmtkHOudTx6echQ/oYAXiuZTATaNT/v4aRI/TSrI/7VBHz1dtSl01qvqoCfvgaQ5jfKn001PpkP/DHroud8KoHLbpZ1FwbOg3TrnmTlc2rk2RtNcLO08OuTJPFTPp+cdl3YBOywocN+U+/DA001cqJuIcrjl0SuZM1X3PDwA7US0Gm561kpF7zybXaWM7nk6qOV2UCvYZQW0rqR7Hr3zbEaV5fTOK2doplWMzpTVnCqyDLIVhFPx6wqszUn98mQdxG9w4jda8ZsofhP628wqZgvFb7VhnLZC/DbrnbcN1YzMRC8+ig8F7MCSaogm2YkWuyhpV0H0g0Ov6t28JBiy6cb8Ko/9m/wq2vUQHUBtWCY5DPnvszld7+h39/inuM7kPhbcWlAtUZAJN/8oGzmfPODTdo4nOLITEHGSUZjMKc4RXnjH6YhXrm54cgbVZ+mEx309Z1cNPiV0yZPzGNwHrJIP1LnXKbtAZRcZnEkuQtklq+wylV2GNA3LdJXKrllPvWtQdt1GZrqO6ib0saOy15JUllB3O/jagZ6NKg25VM3dWnS+K1DnuyrpVOhkVwJ3O4LS1ueuBXq3pHtLS3ru6M0Nd7vI8kSHOxytkn2ZVsWHl537Nse124Yd2yTjDWgbd4z87/S7mc53KhwOdzjaQ2BHCuxIgXwihNWd8I2mmVcm0d+uE13unjHvYMTqbyddMeJudLjTF4HuFNI9Gf/2zM+8UmZ6sUGvZN7NTxc8/X2rbnhMvtJHk6/Qz+5Hph9l9KfznfSHvgH0uItv/oFJ7tsgCh6UzGrqFTOE6w2Hu4F0ryunx90Qethl1eWO+zbc/aSHg51NsYJwnZQxUkevskfBwB652CFDABuMSUb3iAoYy4UfS4u+9bQDzQYtXtf56bTGUxeKNAmLTMBCTLSjnsTmkyB5Mp3uzBSOeqp1x5uKUcPNbgqd7bL0uZvGUWvOFUxdxc3gwuSlV8EDkMp1eLoDs9FI/e1kjiZYwc/AG3cAfnfaer4bqku0ktVEK2YRne2i9Cr1zRKKZV4V+tXl1MOOm6Jv7suTKjgvtUr4GrzKpbSHbx2OVahbw4mvpeOdrMXE11kfu3WoUHc6THwDPekm0aFO3/o2OQVwpNuk/nNbknzX28r5bcXHbXScM9vpxLbD+tjtgOSddKWTnaiG5xyOjbjg+Qa/m712263nAw+edFC2l4V7kze8x+5zQ4BL3b6kOUDHOjrR4eQg1sUlVTlExzlwvOk8F7/VHnFX3VGOy6ZTkWOaUeVI5D53Ismf8CednlNuqnCdw/lpNDrjxMCNDudncUGds7M/zyGfR4sP6EZnLlDLRbrWyUVoca50Wc2fQi1XkvqiQD86aLyS7BflTKk01yntOhfA6YNxJRE51WWZKsWHM90N78DN3O3zOk7gZIcxvEmHO/jJldO77g062GXpXoejWSp+B24B6epmJy3RoBWlt0pFt5temO5FV13upDUatmHDNmh4gfhN9PRqy71sx0wpk+hx15bOds+YDlRClzv62+VMJ/X86UQ0SwXn+9/hhx+lv2Ol65OV/ne1XJYUNOjOBt1puIuuEz75UrzDe7KuZyqrznjwxKOzMf30pA8Wo9I65lWiui/d7nih96PznV4vENKfrn0D4GKnWVEGUtrAqkMZhKE4bzwMZQgbDLFD4ZLFPxHfdR2GclHgnoeDyVLgkYeq4anwi2EE+49IxS9X8NqLsEn67Y1krpQ/wD+Ovwdt6pQxWMSxuohjuYhhv3FRv+/Rhc968fUzE+jD1w0+fPGr2iR68cF97/dmMp35fmimqLApgKbReCgc8+iX914MgNKfbxpLMvDvo0/fdGzwDI58Rip+/aeDn16Ps6KhzKZ73yx6+PWDb5/gmJmqpIPfXAxqXjwo+vXNgz8fBkXPPgxqoQ5qIQaFxkPVr88sjgelnnsoycCdzyx1F+kyexUs5+CWp7KaTIUZVAros7eMPnvgKlrvvdWohuMeDnr9uWtxLRd6HZOoyDo0WE9B66teABt4AWyk755sRINNbLAJDaIbm157mN2WeHbquSdbMTvmUsHstuvstnN2mzG7HdZtb2c8O02kgpKM7IQPnZvdHju7vdS5F8pt7hSzn7M7QBc/OYDZHbT+fAdRDbs0jt2cXXRh0rXvMIb3fjw8zZgiRzA8WK6PYnjHdHjHOLzDGN5x+vSZE/Hw1LcPJRk5gQemG95pO7wzHN4Z6D9LPz5zjsM7T7c/OY/hfWD9+z5ANZYUxykOL/r9ezEV/YbSbCpy0d0qlyn2sl5wqo52e7r25X+1Xk39C7++H33Yr0+a0eku3DjAAirhjTSn8SY+wqsPrEY68MGNj7mP6fAHFz5wGenPJy1R3YpOfJbFSFe+SXTle53efP1MGyewLU7owpekCx8+tIeADtaZrwMEIKEKjjbED3UkcOSL7mV155POENeFA+qS5gKoXLr2NdYMK9IVgrqxQbe0e36712KWdk/fsEo96L3Uk0lY1OWP7n446Y1V6oNVUj8/qcQq9aWXn/7chMNfP8ywPyX2twNB4QB+GpDmryArHX/h/ccT+IQOog8gXf4GpQ1zrdDRj959zCxKNfTqo0tfjp59Q+nZx6DE9HBSScyjotMY5RZzNF394OJXZsbQ70+d+zR9ioyDcPjzjaegjIyAWx+VOK8++LlQ/KQq4idzU6bQxw/efeX06jvZrhUutvfS+puJfn044OGnnn0yFWcz6NXHL/OZbkyz0iovyqgCwjb3fC7Eqz+fzIN4Zk6hQx9sf3Tqo4iFad1zuvZB3ELss0uYUkmXPhCwdcdV/lLOZ5n18FsGMcvZYLlde+s7qaJWuDVb6cbnXP3KzGqbSWUN+62BgLV07DPrOEw49a2ma185PfzW0cMvSw8/HCvS8U+GTbzkNlvnvs1osIWCtsSXnOJoWykPPn5b6ebHd0/9Pz7fmqqWSBQkiYFsp9PfJLODEnboHHXUO1my88YLdheuGfUJNHvoFkgfQJzsxQW7D4uiHoCyH5t8gP5/8fvKQTvjQxR6CCM+TF9A8z5HeIRegvD6K6f/3/t0AczS6++Y3ZjjbmNOpAXHcWzHSco4WfUGPMXVcH5/+JnIBmfyb0DYANVv7ywdbVXkuTTcAeEGiD3TEvUE7E4/wAusyKg7IAU0tx6BOC5yF6oXcOku0ydwkrlCdVeqLt1Vlly9cemucemsgyAdA6+n6RXYhL6AP4JLIJaOHoF0BwSzmy6B0dLRNZChCz0+CD08CD04BprmdJVqQX9B+AOWqzegtER1K/oCculae+Gs4AuIo7VXadpQRhsvXjo4CGLp4BPYlr6AQEXYoL0XLZ0K6MDSDtpNF7OjpwlLPbeY6h8I58B4MbvQK7A7nQPfYUVGOtNHMFxMuAbi6AqZVgBjHLrh9qDXIPwF+5qe1NvT6mVwL37q5d34Eu3polf1HoTnoOCkr1cf7oN8iaYDofTHyg6gm2CVl2i7soMoeJCXVXdBOgUm6RQ4kE6B5XQKHEJfwKx6BXJlh7uhwgEQx3Cs7EjKGFl1ZUdR82jrGjgancewwRjvhotyrK7j2Hgdx9E50Iyvso4T6B/YnW6CE1mRgeegmeTWER6COCZBcRCbeKZQ15QbV2qqV4wnKh0D1VGQToI4me49lu8cmKNz4KwqqzSbtXOsn+AcwPpz7aLNo47IJTDyApxLL8Bys8j6Ay5C9WI6AXLR4ASo4pba/svYfxkaLKc3oFnB/ivpJygr0R8+gCvoA5ilD+Bq2x8+fxCxBmu9ll3XVl3rdRzheuvntx4j3GA1bGSzjRCxiX6AZjM1bKGHoGyBhq10CYTzX1ad/qhhu9vWHdbNbweuwJ1u0LusyN0UuRt99tDLz+ylyH10CJR9ELnfev/tRzV9/SiSrn44dmLQh1gEH7/458VhJ/t9jv4I3f3g4geww6o6RlXHIOs4ffzMCao6ab3/TkLVKXr9ySlUw7sPx2HKDcWd4S1tXfrkLBqco6Bz3g0/R86z9PyNl8gHHIn17DMX6eJHdz6cXMIlcplV8Ne7TK89eEHTcy++RK6x9roHJz65jik08TmF13yhg16WfnpN6adHVBjgMd30gApbh703UP0mHfW4Wm/5objmtn8L9m+BBi3pimdasT988JrTE6+cDnmt6JCH92A809ifTnkQ0davNO3YtZ1f5RJpTx8cOuTRLa/MdLQaOrFZJ4joTC8804Ua3rH+ee9AQ1f65UlXVMMXrxs10AlPN48ueHTEw0PKDbqXFdmbInujTx8625lKiuxLbzzpC5H96H4n/VDdn952FAm3Oxw9MeiBLIKbXXyJDHKyB3P0Q3wZrH5271pVQ6lqKGQNo4+dGU5VI6wv3gioGml970aiGk52OAapXP3x5uMSgWfdaPrXZelmRy87d4kwpCq95ibR2Y5+dVW+2iawZIJ/w3Uz0SewS088M5leeJH/3Y/gf0cglx548L1Dynj62sXXzXQ7kRkUOgMDmUmXOzOLE5lNjzyZjYnMoROezEH1XLrYcc3muW2Aex2OeVi8BZSxoOqOL+QknbNdlk52dLO74QG8RH2xlvi3uO+hpb4+Wp3/nduOIfBddlUrfMGxHFVBOJCVrir0xUMVHaBCmavpgdfdrHGN1ClvTSyaznnr0GK9a+F88iINdMrbiBabXAv44uHYREWYjeJRW+gUudU6523FYm/zycbazolv97N0u9vhGFnbfBDX7nqWXLDkq2CDvfrJxl7I6kqBKRafJ/9Fea1/Uf6Rm5eDSfYRsMSqWxZa+tVbGtcMzz6Cs7iNstO8V8loU7acX4XNdqtjwynrLGKjpWP3onaJm/oXPZhsklCq6Mtg7uGD44q+IKkvJl8w3vcf1gDvzU0gwWBTiNpCODlp7Ue+L8oabW6qf1/567dIdbmlGRlog5UnSs/PFH1ei4ovrZveJEWqKFlnSgl+AkyzhDLNcubj0S/xj+MVSHt9AnDKwxFjtPjy3LvzGWclN2Gc8Weo9pbiK2NbQWceO/SJm7FD2R7kX3z6Aj7oUtTGa27dpy6biw8r5awvyb/ypQeTz7HBc+AAf/X3v/vUM+NXfVc5Z5YDzACUXxGwgHENa7P7tBA+PbxFvwre6Ff7mq9FfZUv2tfcr81AOpP7cXUzEyG0fZNxoeGLFw7pW/GQSCIlSRiNHoyG9O1IrDLTKs1DKhacNHkoGtL3tPBheZhDqotY73X7muK47/elWL5fCSIpmylBjUNqbH4IbT+0Q0pldMlKsGQl0ZKVhuMrrKsB4PsqzTQa32Ohjl3fVaJpX1NfdYBrKvWj8f1IC5GmEONjeHh5sq/5cdRXKW19zU+1Gdim5J7S7fNn0PYzNz4d0s/jIf0nshX+Z6V5Go2ejob0i0gseW3yy0pQ2yhWkxVGQ/qNFoLkhiExP4T8tq9pGPXVTBGV5nfa7PcCXhuH9Kp5FtqetUNKhlflfxe/1/oUrkrkjHBB5eW5J5CWMKFpCXOmDItaFt0DzxdPu7wR7cMMhcwPIX95wryA9jl5gTHkG6F9o6j9i7jql6J9XjLCkpslI8SQdBf/gYJ/RLv4TyxZncYvb/5YXY0w39e8gkm8Ei3Zq48s6dRxcPtbD39X2W99yX7jvDUfIWhw0bI1DSuakevGlXP0t76gv0ViXGZClL6lHaLMhFxEvNChlPy3vJuhZSIep8tTWGlas2nrRDTYt2M1LlshWrVVNRqlXtrGA26vFaS/deCAGa8eZR0xtE6xJCW/SWdI6qIdmL4QRxc74FfIgwMgoANO6b6DEYfn174mKc1kaCwFjgw4nPREPPRe5PY49hti84H9Q/5b9DhjPHrHg9MF6JsIr+1P1jX9yIqTfhhmf6ruHy/AgER4lZ78rotQj1aDdNgMUo9jULwAQ7RC+XBcANDhUDYUfYbFkhwjDqUjtIOGpJcRdgHwmodSUOLy78XR8YBdsHqs4Fg2HRsPeFysxiU+RKsJqobR5nFMiAc8SSs08SEGTNYcyqZgaFNjSY40B0nTtEOU6ZADRrp1lII/l3enzrQ71gIWNBLqjM1yGHHo6jGpYRzQPqcB7fEbzs12QeKRZosW/6nOb/c9HIW272cWOV7aAz/QdIbg0MGWFpc65hzGv4xjImnuUYp81CwnTa6bWRFT28iXW0HK3O9JmVsFattqZY2txmWCxkPNGhu7fm1MbSNlbh1LMhrOHirW01dERw3enOraSMIcflcl4q8cZjdk6Pp+ypeTDRj4VvbfiiE+qd22JaKvEZfpEO13sNUOtGrIVk+anVZJQ9LmcLqLtDndFJfskNurBXtJleO27qOMfYnot8n+BFwTHHmuOchz379eI2LPNTOHGdt+sHmfvd5nsgDd0iMJOD6DGneEBLkKc4zVx1BdxOoiUOjU0foEqHSa4fAkHWNPkUun8e4N8xuSKPcY6XOJKLUhoh3w9jzPO1Yn+QFlf4ABP61Lc4FL2VCXxuU57EcWHZAEtzRPm8u6NAx8j9MrWJqrbHE1XuJrCW15PaF6XO7DvuTTsa8Ld4+SZox03x18ukdefCH5lZaf7P8d5jyEhDcK+pFah+P1gkpS64DCFkT701wFaaB7aQFBLQt0O1ziw2h/WpNex/15mzLeLnD7A6od9sflPmwOqh33pz0YduTaNdOg94NJtAPyylxtugGdqIfZ2smvI9OOGQ+/amy6Q9OVjDsGusdJN5CO8jh1OXDqGBmhINqAXpTdqyDagN6WGKerYPMcSh+sQiVbVRZEG9BX566h76Uf5t6fLfoXuA0g/44twb5TPWDY4XQQWg7WvpreUIagxIbA7w663SOz68l/dG/2zwfJtoOEYVCNMPg4hmIDRlDFiHgDRqogx7mDoNG6ARr/XkZzAzIZbTxWqxgLfxy3gtQ7lI1Hrwkqx0XER8kkbaxh8GUS5ATq/jOFQ5hCyhefFXq3TCWhbdZ1v2pw/Ih418DM4Poz/SF5dbCPcf1nufVvwrj4euKyIUL9XFVPAh6OuVSvBeThaQEZGAs4mAXRYFTKQhYujK+wRbik9H9+FCu/mVnCVksKvuVaLS34fhP93+jZ1aIMiq+b5Wy3nO0gHu1W8PMKSH8O+lfyw0roD/g6r1EXHFtvFVLFkrBHlh5O1oKQuI4LQU4emXk50vI2kJCoX1AbycDrBnJe/NR2cfN/r5kUfwiWnkIQoBqi8VCzjUQ98PTipzYD57Mkw7D5O8nSmwSWno5sN30/9+ADOHlZUvP2kppXnGS0/N3k5JWTmreP1LxsmDdxFxdax3colHKYUt6nlPfRjLkRGRefxBRy9uQYpBy3ZLzjqD7BwPiWmGI5fSextacKYm7AacvDO41r/AwFnuGyqpazWCoXIR9yzrP6PBea1gcd0AfhgC5wQBfZ4CJa2gj55jIHdMXS9K5gQODfXSYLL0taHo4POK14y65TAuh3AFiTWc2TCGoeJICVdx2PRrBgXrch8V9H9Ruk4nFKbyaZAYR8vEkMf/8m2XjPgJRHOgppeSDk5Rj3vhWpPKqoNalhb1s+3tsQ1YYq2yTDWWEMbVnQFjWWemfaM3h3B5Z1QBnIdh3JrtN7rnOyuCbpdZ1Jr6sgva5LEPHrysivo8b8iPYIemWhAJL3BILQqCcj2hfttO//vanp/yPvPeDkKI72YU3and3Z1Z1EErn6CAYn5Ag4ocVYQmTn7BfH177DNgfS+2L/ZRRRBuWc7k45oYQyQhkESEgIRaKIyoGc4XueqZ7dPSHh9I+/D/Y0PdPdVdXV1dVh5uke61mYYAszzuPY0rMNVUwdP64baepj0h10Z3up96yFXMCv7cYjfoKNn+hJvM990XVMgsL0UzuZBBGnkN0Ur6zxipmqeXW3e5laoj3dRszwBL/pJaIzSWUmqag36stN77mQMYsRs1Dm2fwOzy5m3O1VRON93+t4BpY+zupQOtiuSdnBdlzwaImLA2w0LjwaWPA6raVJ6SVe6mjQ3U8IZgwIZszoJSsZyTaYCHERhNeHOb3kr/jbB3N++PyZD5SBorf+ciVg0p/8KCh60luVzZo161wCRSuNk3gpgaL1YYsrOmzd+JOv7Hzx6zyjUk5tAE52/+hP9X7pxZ/cpzjZOnOGnCJnNJgz5Uw5sc6cBfnOwtqX5j9byyVytuKiAzHQr+4NVRV7nKp8E01zDi+hOVcznsdLJZB458n5DQBFt42R3GuX6zmWdeZCOVcubOAhdnJOnfkUCH/qUu8S1LYS+7RS+QwvF5jPKumLlGYROfu5kebzpS/VvyCftaho+Xyd+ZLmBC56pLlYPiNfauDBlQRHX6rEcKTdSPPVklxfk6/K1xridY5L68w35NPyjXpzGeS6DHLFUl1iWkmriqhvUKmre811tYyraPgLEA7je7e0I0rLY+6IQkQ9/ISoYdEWvAtRc8HlogjPnkR4TjYhYrlNkO6bktENHtSMak2EyKgYmcM0Y8KHHlfPkpNNpeJaU1lwys5A5CmIaLGa44TC2JUjX/Eaw6vbHgteXfpi5TTwPA2Wj/mkyn96Id4uZyFs53Q5s/KpuNRnIdVZTOVEyupsHQLQiJKFNKm63pwDVjjyUM6tNeeB1XlgpVTP10t8/mE97MWTC5ScPr+wUAmz8eST1Tz7UD5VuYtsYTEeT0ANyTM0nyl4iqSvNRcVXDWZsjf1FzX1mvA9PSlWms/x0kIBnLYQXwC1L5BrkuaLmuZL8bLaF3liYuWzTMlTUUfCtDy5RDWjyS+Nkys625L8qnx1JKzMk69paTTh1zXhN0D3Mp6bKpdZutzIpBVSIh0NuQBbulw8Ijy/Kd+0tlSoiEY7nt8xA5v7xzaCsqPunNGX9kERMp6S1EjduQmi6aOMZEwYSUiccOULMXWN0XN0G+Idm16MnzcF1wrxdaumSsu1aUX0SZdN5ZgbBLEZhCxbSEErokuQ1P37SYsthnLAI1dEv/B8Nrp/YBsiNUc/2culUteqK5+P86WQLy2eHkUa2nypf4P8zf8Q+WdyX6aKfPy5dtU95J8Np3i9nd7GLz7xO6TsHfOFiI86hLcjJdIF2NYhDUopUisi4N3bSSUsL0WdcxzX1N+BbvEva6Vyr8Wef1ihnqlWy8AuVby4Rw1tcft/jfZiM2QllGyNiWxcp1YmJzkbly9m4CK/fVgheamoge1EyfK+NL8ePsrRk1przUmxuZ5Ec1W+J5fInCKnWDIt5GRpUWNO1RFv44X+64+10F/ybSKeyKXecIdNWFmYhEUr7gSiLD7+oFY9plXVdyEIXoj2S9+OzSESTh/CaXns64QRArf1SW4Voc7q23BWjjqrWvM50PucAsI/L59faF0SJfQSCb+YUO3IZX+VkO6ptEnE9cfcJEIl/Fqx9Lq6z17Pk28kLDTRZeKxB2xBaVuYVpdfpij0nubyy5s03ijiO8faKALCt5W2lS/Fkl0FWldZ8oi4Wq6u3B1HXIOIa1T5jLgWt9fGw7bC7AF9EH+dfq3G9Xy5Lsao6wYSKmJxBwmPq/g/4tMfme8xTagA9ToA1H9QuS8m8UOk+iFnyR5ntUjMlfxKlq7S/Bh3P74YE0XN+xNN81MBVL3e/AyRP2NGZfpzjfwFk1bybFj5jwaC1eXndeaXfNjC/AoPf9XApXwu7P8G+X+DFQCwAgfz28s/bMIFfPldV/Oflzu6ht/d/AGp/nCxd5tNVX35ZxSt3t3chJibONf0eKbXHwtHCFm/Qf5UjRNiPXOz/FFubmdq5c9SW80DYjmguBVZbr04cZ3tcNcOYxklAPA6M/Dc5z9XY2k/5NK+xa8z718pwc2Ar/9V/kcH0wF5O1zs/Z6UbsBiPv5vMLfj4e1cWvQ4Nuqocfbs2Dqu5Htc6+gSa1OIXb/AdMONdHMwVeJ6fTxVcpBaujsNenKsdEXWno4gV0886+UIfp3xrDee4YdnfTis6ktCfUHoTq7IkxAA6ZeYfnzcD4+5LB8/HhDTH4B8XJDXtftBXOiXQXiGJXj8euPZEIgrQxwO77VtDeVi3FBHW0tLrs5DIb/nurxWzQgFqnMlvnJ/bFojSWKkE9uxE2nyUXw2yrk46bFG83400rTifSus2et1rKNsAFlHcBxEq3MEvzFOneLVrfk2MH8DeegAIj5Als58AiMmoOQTuTxvHfp4pyK6xk/eRf/jfauORr941Gg0/Dc66feDLF543+519G/PdvDRFXkdTak78gqbmhzz+HDoCReo7xJc3Is597qQs63LmSLU6VZXE8IVZeJxSkZfJ38bA2JHXyXXmqZx19EUzoiZLzEVyWpOz8t0avU30wzUm4GJJmiOu+YXJ7O3E3B3Avy4zidO1MtJvLQqzbVO4cypRdLzdzSnCmZbmGtJwAGzMLWgKzpda1HPDkfLgZkoyzMTmeCL4y6qgx4gXpRJcCcX66ysUudhRZmq9HKOyhQPqRvivamq6sz5SHl+UYLyvak4Dfs1BtOObjhZaz4FLX2KWiI1nYCJ7mJUbz6rDy9SFqUJmHy2Dp1TIJ9HbWuGL5RYcCb2hXgmJl+Cbei068ul+IsF3VS9uUQzxnui1Jmv6Cy2+PI5iN86a96va9w3OE6u48tnq85WRZraOdWby5HvchTbRlQ24aC58oBul1J8qP1WA7dMqTzIuEhFaVNMwR1UpE2DaQt6bYtqvEquspyvxvOrUZHMCF93De34Wjy7ttpcJ9dZO77mnxoHn+14H9NSK6L7s85Qp9Rw5DjH7sN6dQOvQJITLltoe7Ybz55o0rhLFzczji9h43bU+njtiBkqkJ1fZxS3I67U58lWXryr1DWKGnOi3p1UuF0bzU0GTYYzTV2WuNacVnB0PaLWnAE2ZxTZnKnEz1ICZ7NxyNmV81lSNq8zVQJNK5q20dcabY/6WsN+r6EpP1HwtCXUmguVxCcLnu7iVYsmcGFpaNb6WEMzrhNqts8XPP0Oo5Zmz1U9iovpYkc9Xr8a1h7IxagJZP2Ssm9B05dLWICUqrA0WKtOztoP5dLPNMGOXsrm64iPzb9alyZYlxi5faVJEy4TlvbTblXw2RT4HYYes3+9uaLgqL3X0t6thCH3CSK440qlj7GaXFnc//mqgq9fWdSYa8DtGkivya5FxHVyLcdi1yPi+uKW1zcg4ttyg3y7mifwy3d0/bJcMhzIn/BuvINQID9gab/H0v5Q2egR/T+SH1ebnyD+J2CDux+itErrp9AuPrGQn1XzoH75OeQjt6JB/qLg6cis1tyoFH+JJ7+SX8qvajEsu7G0b1DrRvsGoYp+36h2/6D84o8rqk0NiNwkNXJTLfcOKtb1nyBN/GVFtbkZ0tysdf2npK5r8ayWdR1Y6W7RbLfKLXJrtWkn7Vjy9srwvzSueHj/bdL+I3X8l4LPo/w5RNOvLK43f0Mhbsfg7PZa01E6FiXr5CApP6vgUApbZeAxRlKQTwXpqsk4OEOwODqjWXR3VJ4emqTxhkL4dQcVilUuV28OqIq8+zhQS18OuJLhGsBDJd53aTIO3BAsjtyoigGW90BNouf+yyAk0VHbAMeqJFIFDyHpIQ5UHD84AyO4gphhfDoMmYZzsGY95FCMixpyJ+rAqKJjxG3bMCK5GJPrimQLN35Ch7+K8lFKnXOcUQqEjheFe/LKLdhw5TRBPW7cU3MWmL5cuGmihD05WZ5ssojNYoNhPVQn0hU+XV2pNfnClClDP/SS9Twdq1xf2nStVocm9hCXS8yJsLYTkyN84GnPVk/7X1wKllOKZ7O0QLIWTKYCYqQy0o5TcIuHKANHKiPtIAW3kU165hUtPnMFXuTv5RgFo5R6eGNNL1ekf3biF86f1PlrxogRqYf7PZvDD4xJ5BwQJrrqXDl3IZeF5bxyoufL+fECMZ5/4lLvNj69DS4Z/zfQJXMKfWOhroGzwE/aWeCnBA66mttmotPUJeIbzWd518JchAsU3ZKXS8zneLnSfJ6XHx29QIy7L+nGmZ/Dxpm4u1iXiFtiiRh3lzZwiVguqjNfxd1XG+CCvyafqeMgRL6ON4gq6TdIutJcpkK04p2YAi9YruOllfkmLzeYK3i5ES64lR1yyBV1pg3uMLzgKOObdaYt7to2cHjBj+euxt3VDdymTQp15lrcXdvAUYVcVgev+w25vsHcAFluwIsxleXbvJTPhwOdD2sdfU8TfR8X6OIHvNxMR8v3ZXCq8qM6+NofyI8b4Gt/It/jV2zfl5828Cs23v2c4jcxv0CSXzTAq+IDtjp6VblRdUHGv1SisYOtg4MN5NeoPbXO38Q9729K5/L/tuDo/Led+U8Efy+YAdfA0/5hoalGzmpIrqLWWOo3KfU/qqr/FF/U4TaYm/WuVnPEe7XVwbPeLLeOh2f9o7Srh2e9SdrXwbPi/zp41hr573oDe5PbqEA2DX7VZr9rU7X8Vf46Eu71f5gO7FL4iFNf0yGSDnCzgdyeTPW0RB2RuSPzUhSesw+Ha1Pos858xk3artThonXE8Ysirq50dS6Xohfuae7gbfJhW/fYB8P7XpyMQmNf0zOhdjM8slLtbX1P8ZO2evpfxPZFyPpfFpkiwf8mY+fl9MGxGx5vYnfWnx+M2GsrHfjTJcsA3IcUODQDKaH1yxB4MG/th20QeChTD3WKsxZ1xSVqw3HPljHC0fuRWgD9rk1Gxbu7FUf2nCmP1vnwWJt+nKN1UucIgnVIH8+UZSzSNDgCsg14Fu/tJsPxbAL5T9C5M3LigslyjFNixCSnWr9ls359IvqILX5T7SP0I2591ePj6v2/85oH0vxDr3k0/Wl8V9MkWTXF4PsMObOtOavg6A7JtUZiBlJ8WWOSV/Zt9L3O+NOKL2rOKUbppLTuNBtxnnhyXvl7pPMLTXg2wkI4/vO5Z3LlYeqwuIQaU9TBub5Jgv/nF9M6O73efBbiXQQnfVGtaQnhWhaF+1x80Rc79cV3OkUBv1jACF08e+gB+oAvysX6Nklf6GA82vhtjr5b+mrB0beFtebrHKvL11VeXT4tvbK5DHbRSjzdZLdg7eKyiuiU0mbcm4qbcY/2o7lpP+B2srA13T/d5eWMY2+j3njbdPc426a7x982XRy6yjQvN5iQlytNhpdWJsvLJQZUkg3SW1bl8MaMOyuhplKgBDlqqvKSl+Dq0ykUCBtfMiNhljlufJ5DIw9NBrkJC82YMF5RFp+7mpsKJSp6WxUz//0vkc6REJ6JF+7h/1a7hsrnKCyHAChymTznlme9uZj15iRr//YNlXuQFSngH5k53hZf9OCzFAxPCxxGzJFM91s1VFXy+Y0NEhYdT11Vs/FVzem0cNYIX78nERLWmxOK5wKY0EqX0x2oSsmYRoOgUDm+flxDffySLcnaSk6QZnizL83rG6TZ+HH1Vqr4tbOLgkpTSTdIJBUNAq/QUFfHQjWRUCqQVHxuQO9LQK0H0HSaQ+LyWspJ7iO1dEJcPc1t9TSHPG6pesLG1ZMpq56MVk/mH6yeTFn1ZLR6Mo2rJ/Ox1ZOJmKNUPbZyMmWVUzG+qhkrxymqsxgpmXqpoNaoXei2ArotKfUEVWpIpTanUhU0JKGEdR/Va3PVK8RBsh9p9dxQaBKtTqe8uM26MdBGW6rLluqJG7dUn9cVjnGtaqiXoEwvgeolaKyXAHrBU5ZXgjL7TDXYWy19ejxsgXWJcpiSzUpQbzIl0wzKGjKKc7SBltQJOik10KCRgWYkTW2FUGKaBhpElJi6VEeVVUfFKnTpdrI8CqWxO/Lj5+LRIj3rjvyPuKNQ3VGg1Z9Wd5RTd5Qvd0d+0R0JFF1ThVeJ4sHIvZivcQWIrgp7BgP0gy+VXEHFx/adTuzb/cfsuyoFC8fTVCxVVabcXZQbIz0F08KOeUBCqtwQTfNSdWRsQfyjK6LMt6QST5FpVBHN1VOkEk+hDSSuiCyKIxW05zzrCm2eRo04VgVM2RWP2vAkMCErlHXcJCoq0Bf/Iwpsrppz/nXNZVRzGdVcqqQ5lKFMb5njN2KUFdkzxUacQbFL5W3+j5dX0nVaZOtc2YgDbcQr/9lGLNqIS6UPtPTBx9lNeTNON27GYWO7+bebcUrSx27GoYRqPeH/0macatSMw3+jGYfHb8Zh0te4/0Rfk/jUj2/EaVYGXZ5J/zuNOP2xjTh9/EacolGHH2/UKVbn32vEYakR/0/XW2OtpT++H6YykyacbtyE//HSSljWhFONmvAc11fgqlsaO9PaPF5aGl/bdMA2nZKAbZrODCEOocNkCB02NvZ0/JytqaYqZY09XZYEtykJMbzmKJsjrJiA0SOpSB/60J1aJBWrPmPdB26rQio/GzcNVX62sfqECRr5k/q4fv2G4oy9bhwe4Y11RCGrxZNMHaJ5ZlXxXCI7fPFovZ7VnAflQ2WdvUC/OSIiWFuqS+lu0AlHK+OrCgPVXUqVJqnYEYaxluOC8smNsX4qD0FMLWWs0sxxVJr5+yqFvcQqzfIcKv5ddbqJYmL6SirWbV4iPZcpT0oQOwe5siYVR3ITBRpNdVWMbG+aqD6Mrb5CXGi9pGwW/yhlVwr+b6RsqKLCxAPlgH4KdOo4Y2haryPHSl5C6j2UFPWeihWe58lNeat7V9tSoFWwzvVdriigEtRm3FitarXlFaCfGOOCNWStjpCmjOLFtZKlxmNTjpJDtKLGes/Gz7mmUFOVsXrPNtZ7RqKaqlBCyUDvYUyAVenFlekk6svE6suJr+rTFl7SY+7vW2yqHmXIGR96BDVJi6tEG+Jzpeo49IUwVCOKRzWGVnc+G4jqTtt/Sx2OXwBN9vZSTtnnc2rHriru/6g5m+zRJh3R1fAPJp2LCVpzzkpOzTlLSpA+z2ooM+fGJtw0Nlr1HU1hVuW+o2njakBa/N+4GprGaixWIa1YPYlXajWsEpfXOianjTc9to1naeNZ7Yqi/r6Lo3T+d6xhJAMJiaUtds6/zTdJJr8pSdnJrxsTr0pxUucJLq6keUmpk1b4TKq4qHABT08sH75k1HyyOsKJdISTyzl2OHlBmS51DaITOtAjlJPrJA2ogvwVG77a8Xdj6964rKHUcdZhBqc+IVS7Lku3vDwdesiqSPu8pqWKJO04KsfFWifuI0eyC+X8PhvFtWcq4pGqydtOnHXJ0WqF5GAU9RJBvHrQJnRMQtzgSbYBgnCtgfWtU2HbJzfuWVjliWoddkH4h4rHvX1HT4t402tsETQFj6bgF2uwUf0dwxygaLWkQLyi9Xix9aST5OljWo9P6/GPYT1kwIbrcTjLUVNMwA402doarYP8+2ZxPPsY/z/bQMob9bEMpMw+AhTunzMRFzk+zkp0yGZdweVNVIcXfOSwVZ6eCP9duKSaITzAB43F4Fs2SBJbfDfsGH7spCwezlaOHQJdqnsXe5NSi0sX16U+YmVpGIE9pvQYthYmM6H0cWZC6Y+ZCUFM/sGwMkjH3FU+Bymh4JL2OB1z4e/PuUOPRrUTa9qo+K1PJ0VWTLYoexwXlMVVRbHtUZ1ZhloipGaYUzPMq6VGWrdN45o1FWqbkRpTFk5fjdFUap9hmmnl3HBMy42ksmi1lcXHsNFIbbSy5JokakjMKBpJ8/sRQxC1WTI/zkq2TipHNjRUVcCySnOrfCT055SEryyzapQ3V1XyBbEjzfgiHEbZVLIwymacs3iSww1iogaplLy1SI8W6UmaF9aAA/dlDXOt72b+Xav6922kWLdVmaP6rzLryX7UeuiisrQe11pPutx60iXrUQ4ZNZ2yiKpc0XSiY5qOXYDNH8t0cmo6kZoOTaay3OfkGnd+zcqtxFoBLleWZ2lWL7miseTUyGgiRZWsgI3Q+yjbGyQHySJTYeEozdVOKhM7aaZ20lwqpBnthNYC6monuKELVWNpZCfqwMrsJFG8Q4cX927uUR3b4aDyoy8I07g68X36/52XhCv+33tJ+Oz//peEXwTsa5eFfXlycRFudknB0w9Ya3Gon6tfr5bBzb7SCG72NV5a2G/5vsav+bQoirUoB521ilPqR62KIlMMWDnS7JuaRj/v+yY/8FNq/MRkpGmD5G3K8WZXanJ85idtlSS/NxlprkbCq0vvLq+BuRKGcfSHrIIlCfvu8sgCvrssxOcQvxfYg8+jng6+Xy0/orinZwju9YXe8a5OvcoPKfbsCd+JH6wsfLEan51VOYXKq3n+hTjtCv27+bV5J7IkfXv6uiP0pM9u6lFOzrFCcG7pRwtP8E6MWyApf6/R2sY12t1eqX79Cnvgs3rRr+lk8BKT4eWLuija0kS8fNrkeLmAfpEI2Ka8iKnQnqBS+4VmvPzINNe+5QT0LWxYcd9yEq/oW05g3M8UresgAUOnoNvd8OZ7814aNOXVy4gAceSUKy4d852G1s8MuKyhqkXlB7E7PYVfUyGuhe1DAXkqS3WqpmqoOpnfWDGZnKoJQSHeq80hREpa1FWd2lCFT74WOeSDZyfX4ZzpKXp3KoJ1GjwNwR0xoStan/Lzdo9+a/dlDXh8im21J7ZqANOy6QjTb4q5lKXnw3V8mGTbhYdJrnAFOa9QYVuAGoUZCeHqqk6/1JvN5yV+IfiVuJWo8ZsOEiglqzpDYkpFLg0N5HNEZSsmg+tqAQEZtUdZnY7gLk61T6CHaAazOoF9wJm2z5ZKPCneVJTfNC27iRK0WrP4ENSqE2Ma7P9PYuisIjWJHxbvK466b9r4Piq2lKqzbFs5s1CJ7dPw9MxCBgFc/DZ5V84qfJrRhaBtnp0/LLCm6iSBd8eI4qS4SHwJTBk9yHgC1mHteeO3NZD+b3DHg8chIOPwT9WZmgBGFKf4fVUmSVPBNEl0T0QXY5qWx/QvjzmBne0JchJnCyexsy1KnGqbL6o//xH158o1HpXfZMtvMseqi7wcVQ0nFamKPiwSPuo+e9R9pvF9dLSG3ZKGXb6zaFbU4kkfo2bENdbwmY00rNGq4WJM0/KY/uUx+fKY4UryphLJXHl0XXnGqDxmSnlMtjxmdnlMpjxmUaMYXcnL8pKViJdIcrzkJM9LXprygkEKLxja84JxCi/4zJWX5vZ8/UZ2ksZZ/v9T7UTC8pt0+U2q/CYov/HLb7zyG/d/qwlKeNR9+qj71FH3wVH3/lH33lH37t8x+ROLJs+vkJ3/P5t8WB6zQsW4uSRGujx6XXnGVHnMpvKYoDxmR3mMXx6zqzzGK4/ZUx7jlsccaRSja3yNZ0QBL0Gy8KfTabsI/D+peZ/I5n2inZuvPNWLQeulYSTHY5DQeDqgtIPJZY0Hk/7Rg8kqXz1FlVtopsNJt12hrmdYNpx0dThpCfZe16MxQR1OVmiv640obr/063jyMM2U7a7kItHx/xcX5M9uXxVUS3Ar392nOB/wgxRyia89ecFF931Mud69q/ux5VLFlK0c/CafLhCvDwrsejg0SAvKXV3VpLDu/mSBrUmhZ1l43dqy52XhdWvKnpeF160ue14WXreq7HlZeN3Ksudl4XUrysKXlZLgsWoB9Vc3vg9Krm+qL9Xoy6qhsP6Nn1uzhf2U69M/nj6X/8v6lNb51P8aff77OmRdFBXXf8JHFIekUM2RxppT3eP5puNoevY/oungeJru+i9r+oLW+eB/kab/fe0emfgRJYIc1LFi4nHU3n/isdW+a8Jx1D7hH1B7eDy1P3Dnv6r2FU1a5/3/a/W+a/Jx9F43+Th63zXp2Hqvm3RsvddN+T+nd+9/m2dZeRz91k3/iFZUv7umfUSNK1XxH42wip96nBqpm3qcljDln62Rkvtp81Hn4f5fa8R1M49jxEdmHEdlK2YcW2X9P5pBVTn9eCo7ptVuOPawxxCoStNVo61r1yqxXqSq7IpETYpr+N8oi3MYR0qlvJ1aHz/vrhvL8zaOk5vK4tzGcbNvLYvzEp7/urziFB8dl2erP3+UZ7GMPy2L84+hgy9/jA5u+Bgd/OxjdPDr48tzwx8ay1Med+RPZXFB47grbymLSzWOa9G+LC79z9WzxqnyC87H2IB7vDjk8z7GPvzjxSFf8DG2kzp2HPOVl/GfGd9EOzwn1QEp4pd+Vdpe3bJ1Wt+u3rrilD11kqXaoNiay5eEix4BuZJ1Xrfc6erDKqfMQzsSSFBX5TeUuXMHBNy65MnqmKAPmewDzeb83RXXxHORA4AJJIpl27RFp6jDFKeUg0TLl40z5QvARXcrbtnCcaZsZTmTsGSioDxRknttLLifpNPbMIm9n7RLhZKgGIbiUQJJ1yU5mdSRuERHLR83icZGzgX2nV5BaqpcfTWi3ywQMe8h+JoGfQSPaDBA8IAGUwju0WAawRc0GCK4S4MZBJ/UYBbBHRqMENyiwRyCmzSYR3C9BpvqG40KfaNRqW80mvHytY99F3EyzQnoU9iXhgQ7RmnoAkA3NdQS2+Ekx6qczGWeU8Q1LdDfcrnnhLJXN9fnHWmBKxrDKcnKUYuCX21ayAl8r3qCDqW4HAZSzGdO5bsproUhDdfKIaFrTmpEu+rUEvWTcJUT7cv0FgmPk8jjpKN5nGoXAE7ADEUXCwtZBHBphjVycDuZf1i8Ok2cuNrN6R5KKadxMOaxpFigo+y+4AIcPS9nSIqXMyXNy1kS8nK2ZHgRyfJiJOKlSnK8nCN5Xs6VprycJxW8nC+VvHxCmvFygTTn5UI5la+cThAXSjjdYBmcKuBq2okoBlJIC7to0wRvYeJgoVV1fHeG3nXqqLdn6u2K2/X2LBtrb8+2sX/TW7Gx9tbY2A56W2Vj7e05NvZ/6O25Ntbenmdj/6q359tYe/sJG/sXvb3Q3t6mtxfYxBpb1/g/Ns0TWcknisPhjINK7GjrWk5mtZ/MYFmdniMOvRsUH9fpORwTZsvqNNI6zWmd5rVOm2qdVmidVvIiWkVGq6iqvIrO/T9VRcU6OVaN/esqO0scdiUoeqyys/g5akWZyipVZc1UZc1VZWX6OPuf0kdRAcdSzz8hv1uQanXDWDyc4jgVf3+vTvvanltcNsRJAzwPvuqkxLvISZkUvq/wdHexWgV26hfAcWTmnG5xlizRmITudix+gMHlQPpnT3K4s98j5CFFUzxqytXPCitFviL6nhP+45uKis9X0oEElXd0/rjtRKe6zln/0uZQlQSMssiglzYEW2SuNNmCoxtB1ZqcgluhBS0+inWG7lWtKjhqN6gWJqZ6ommmxJsXcrpdCWvzRHMSP0ShAVXOiImdjKiTv+pkJbjIyZpTqP6jPz3RqNOUO3cokdOUc7xPiXIu7hglZ5a2gTmrILqZGpuyWDWcVRFNSzs3lVTV8jiqukBVda6qSkjyAm6WyyLaDbQq9SHqgQXO6B2sg0mi+LN6k0PKHBSuG2fncZdnLeBOoMSASjwDNUol6ha6uiUd6l+LBOjxBa5PDeKOGsSF3R3al+oOJl1wk51efDZCFQOv1Gk4p2rG03jxobxTudNWZQ+aUqK/JoxrUtpu60x+zKMbf7c2puDolzu15hzUxzmsD9Lnpi68nKd32MqFH0l8Qs6TT6BT04cXCg4/S7TEDb95+ZTeYQ8X+ZRqAnefkc/gTrUk3HNOPvtl99M5N1LRLoKBYgMu8zlpqV/rXGm+ALmwyZx8sdZ8iRtrFeX6MtJidzm5uMgYeAv9RKfI7isFu88cWfIJt3gho68XRHfZusVcJl+Ty6xyfGyr5TbeVqt1o2214ibSWnc9xb5a5kprkmLaqv7xpQ3JXC1tdU+ta8yVkVypO8aVl/Q6XkLd7rRGd3lBBWvct5XUd+Q7JPVd+bbB4WW6jdbV5gcFRw8pqzU/giw/Ku6i9mP5MZP/RGnEW5rWmJ+B8M9QOE3y8wJ2zJKfyy+qzX8g4j/U+JDpxkJHPZ2s2vwKEb+CgWlL49amJPcbpRrvpFVtfqdx/ynYTqtoVr/Xh9jehRSrpVp+X2Nq5A9SA2qxFw9oOTehHf4RPP5Ybf4kf7Lt8KaK6BE38LG/8WnY3dj9+232XN0zkl7OLTa6lO6xkla3FKKwGcRnqtlSufWSQzBGvO8S3T6xRZXTSFLbJ7uGgN6/gr5J92KqNc3iGm8GLWtkc0bqlne15kSMzJPP6Qw/sTmlNYbMjm54V2tOi/OeRmu5P/Znhh5M6ZxJOsW9itGtwpedYcT6PiNGBJq9vCO3fpSqi/XzLhQv1A2X8CC+RfOEjuItl6rZNq2Ozq2IOgQB1Ongz/37vcUZqs5KVWdOvWrsAi+hOrlzbqjVm4nx85nKXrFjyRZETzvgu8CcpZitiM7CF2KFGQ2rkSRZRnXEEQw7XHErIg+T7c6uc3oiWBM4RsSKU8N4JVPZhxzYWepEyxUfksVuz4UgXApkhSf9mYRtTKbglL6XjDhAYUpKVnkXieltXvIczjQFxaagSMsszJi5GLwqVFQ6Z/poYBnBmo5Zsxee7LEAsScgVvs4xuLduI2dsWg+uznEnswR1CmIpW+2sZgEgeGp1XDQp2kBK6KXXO9C1I/3j48RuAQqflJuSbeBlTvaldfa78iz+SbJd5LUAluC5taCt+D2HaXNxto02mws+daCybWAYk7Su5PBOrZw/H+SXQM5TdloD+SjgLxjAeHZ2AOVPh1t0+jTUZEiEyMmPmdC787RS9zj+LBq3mmPE2qPU4MeJ+5uZphPguCn5Bzu4yhVzbpZgQqVekpANXuaRM+LXOecY+u48UCR8+igYHd0qzFpjQglZESGCPNbdN9z7ufGOFUwhoOF8BhbaDIFx4NMUVkQ/TT3FsNvlpvruOYEvsDXQaWmPrHQRE86LYpV1DucaPxEtX2BajuktuVU9ne8o4/h3Yl6h3MbmPJMvcOGbvS/3F6T4yR9aB1NJbigDqSqNKY9R86piL7t5I6vuKJRttRt8Gswvsw2Hl+2bTS+lFxF9HMn/AfPMaAK9BwDXkKtlcoPRjNrGlkRK2E168VmTVdELzvOGf80+cKGozzJ9Y08Caoz0g6f+XTU7+uo39HhcTt0GbsW96HnUA9C1yGV1XQddCQnyAkXOU1QuetmMtFJiOSgjnMyegpfK9enzbfQsmLLPjZcLKzIaZUDYkd4OopzBtKewQnZmbY4p1dEux3n9H/CgcyOnXJg5Yyxc/zUI03PEBaO2mS5zVGbw0pT6AEUjukrOZZtEdno5hrNokvzahS9hdo1is1Vl6J5F/2kD085MC7oqYVKPYakmuZsC3EqvGXK+fOxe7JiDwYBygYEZ6jJFLfGTWMEoBVcqwMDJE92tAQes2im0AJcJcqrkyEdTVQU4rLyIxf7rJKF5i6WzUk3GREoq0ZjgjZssqZpJE1RNgdlw9C81pwO8qcXSZ2BiNhTVuvpPCo0+J5d6Kgj9GrdEhplg7eINLIKNKoSGmyxFOdcipNshqvi4PgC7oGrRxS3oessbYD7aeTXVJ8pdO7SLdS9cG/iRtByEepJabfEXUuYEfVFzp8r+Bygc0NcHZ1fb74EDX0ZlC+WL8nFteYS+bK5FPJdYunnuNci6/qrvAt1e61bMRAnUx2L15jLNCUO4WHKgqaMTxq+1XwTmriCn7/fitH4ZfFovNAJmW8rHkgQn0RwJYbgbXVP2zbmGuTBocFy7a38xt1cGsml5nrIeINcLzfUmm9Dvm8X5ftOgYPt78h3q7mTonyvuIvy9xHxA/m+/KCGuynKD0t1wB1s8eRHqK4oUc2PIQb2VzQ/BfEfJ5XDPRZZOT9H5egQvNb8h6r9RvkPjr11T8U2HHCbn0byU/ObgqPj7VrzO5D6XZHUfxbsWQLV3LVW/lC0lWqUNj5KoJo7KcpNjWzlj3HH9MeECgff5s+6mnGz3Gz+HMmfTa3UVkRrHOfkf9VFg1g8Y4ajHszGrE666N0yiLfORbdAbVNyorWmIpaQzUtTV+JSvtl0c3MC5FVOXGE4ISKYBRKeLL4dc1kJT6qIdmSdaWV7aFce5S5CdRe+ugvdKvqjyyNtjrE8wq/MdHqvHbdOoJoWOjnJqEolbgu/UHILduNWTXySsmMHcNJX+DpQZ/VKzzrQFupAdZv5ah1UsRNokgyqdO7QpuQgbjUGwXgKf6s5p+Drptj4O1/OkfNr4QTO5RDqdHMBnsETcFN4dQOtzacLjoJoas1nIepni6JeVOi03NM9sWvM51DIxq2+LU9L0u2va83FyHlxcfHoksKpOhnXoQ42fZevsISuaqzkBuAIVAnxtqvlSv1GoRP3Xf0G/IHd9r2tubzg6Ly81lwBflcUJf1WIWVay7ekdXvTprDC0bPFbzFtlc1VBUd9QnWyz3Uo8BNgrLmvLVym213Xwj90sg7iFp2Jh5yJy7cppKtbrpYL+b1Cp9keJ+d0ETozb1va1rrW/CQ2m58kYv600GmFp1ta18AbAGRFd8A9rOkI5Ma22MDaKW1gjc8QLSP4g5z6g/bYyXqX3cr6Fp12h6WTwau5myrn3CHufl8s4E2FFA8Hlz+2xy7Wl+mmqrXmZpRVDwi/xdyihG4FIZwKLu2quVO1tAch3N1SJPRfyB1vWl1rbmPuv8ht8pdbzF81N7ZSlb9SU57pgNwdyjX1N3xH6evm1TWmowLMeJaI7lvNrVIR6OK05TkiTnGT1FpzB7ECdzjFmu7uFJpzq9Tu3Km6vemJV3AOt0btyS1QbzG9HRWlD6gca1vqUOJdU5MC8VSRXLI5Ncj1d1DAAfGR3wPAfKDDQtoNUEF9sKU+hNSHchdUGQrquvEpqfPJ4BL14Q4UP0JPEQH1kaRudz8F9dGknux7CupjLfVxpG43PQX1elKvJ3U+GVui3kBy47kLqowHuQkklxzgDXKTlFzxAG9WjG+mkNoUR6vGttapDprrNB7nLdMcbbHTmWw6k9mebgbP8q6IZjpO87/fP4S4ONbxh39vsh43kajRGLvo6fO80MHqEVIYf1UO7awjT18qS6PxZhClOR41j8fbVpRmFdGKlPPLf3q5HMzKD1Ko1BFy5d8fIesYWfNUQNR+VtRKnUHokm9xIfvE0hEKJ/CSHKEgJzEufmVTg76heekUhauPd4pCJWcFnK8npyjo4EKUjWEHIUbOsjN3XVVSQYqDR75NPhdCYuzIQx310Kvrku5CLqw1nwTDTyZDYj3RsTgmzKETacJZN3uQslHlRRrZElSwqiufq0EPcpF8vhqdyBc4IvoiR0Rf4nl7tRg+ZpNzrbTvaMNBo/lsJJ9ttCUrGHy9OGz7BmwVnYRcVm0giLRS47E2W0DSQlFFl8vlVNE39e4KFfBbmhKbdbP3kG8mKmoDYm3sADi0pyc0Hl+2xfjS0fFlrbkOnK6znEI9M4H69awgNyizbwvOTiienNBC476r+vyeYJm3htt3y/dhipHWDA+2YuwPlcCP7CBTfsjuxeKU9dlPND1WfnnHTb1/wlMTfio/BzVN8gtlGJ+YUK17exffoqDjEV39rWbHY1vHLyuiO8tW6vyCFCf7krJpUjoBS+kELKUTsJR4aEj2LQovJ2rLv8lkEJeBYjUuq2tWsJ0IzyNkxZXi5HBh++eF864cW3/l8LhBVUiKr6LiJDlTqSntsXI65mqNOaejc85aczIbpn7aQEE4UjQtYCSa/VQVJJ6X/Slepm0RSQtMyQRtKqVTsrNsUc/A4aD+CQSEB7cnh/l5Hb3iQX5p/Pk4BcktP66x5TF9JGDh6iPPIMTdqpUHlflcbk1d/kVd4utpQhyKruPRrlzJnmwi8RUMTsdXGpcqGeCkeOreQj1w71fHBoVr0uK2td/UM/gaoC8fqld0eOVIqlrXJygrY3TxiXP0FU1UYTVQWAs5HV1GciA4FNdE57J4GCmns8QvHhjq64GhKFOj00JbH+u0UM19PnKfX577E4UP0nqoS425UJnylNkLwVC196nk0O8enToSIS6f7grX5MtnLk70+9nScUyKGe9mWiJByziBnhjqy+eIltYjiD+PWvwCHn2hmqcL2Fr8fEU023FO/OdnS0HlaLv+4rOT8fV5Wru6OFVoO8i0ZOP19hFxZUSaIidRgv2Xpq1NBVLq64rSam4NIP/sUHysMbFDsdKcUBE9lfF4kGSvstnREec43eIeR/vFF+yhF7ucwmy7PhqvGiXnckkG3xYVRFdHCQ+K9EkLfeNCiFBen7Alh/ZFuT4JIXsolfEakj5poudzQW2FJ51G75Q57uXLUJ3tFa0R5nqqzuIgKXrIXXzbEsjp1VwCNWdCZl1VqY7ftAgYGFDWTrCaXR/szshpcq6cKVI5Jlb1eUhle0E1tSuPOknLnqVFQp+WwC45n1bomLzVPGDPDYASYWEXUdCWBdFOsFaP1IJFaAJ2hlxk/mIh7gs5o9J3m1diHuUU9x3gPgNgqXl42iyJfq3wH+br3GSg1nwD/eM3oAjLludnccmXorYqZitIAavCen4WVVzJ/lC+WY3+8ArzLZuotWAuxVfjetsGX6PpjArvMO2ztlAQukK5im5eH12NR9fI1ZxetbCPrsWjeGJFx67P+NKTLv0GRKE35GEWuu7SpnRcUK35QazhHxTF/qH80I6mfhS/9ISifwy5f4zWU9LzT6wJ/BQmoO8+2QP+3PwCJsD1Fu31bjS/ZK2V+jrzG/kJ+snfoFv8pa3+3yLyt6XXoL+DrJhwcd3FYFolf2iD1RZHV1tqzU2Q9KZixfDIIA4z/mRv/xwvsfxZsMwif0penWgcV1zYId2CJJhkceJl2ks7ad8G8yynOM8C+dviEv8FUv2lJNVflYrOukq11QHU/iYd5G+lyrodjzrK7dKxVFmdHDxLjgwqVVgXPu6KiRjnX2WV1o2TMdrbHU6hdGZFLSZikK6HozViD6xIJAwxLdPsemQQs/fBjEwnan35SPoiNRtRMkHDwfici9nvGPrxYT+HrYkUcTH9Od9Lzqmo1jMfrc/qz0N/fnTOABf+rQP+ujr4pxX+MvirxF+AwwkrcD0VVw9vmvMIN0U4g79K/KVx/zX89Wd//kDRQwaFurK3QmnLLU0POdzBFfINxpUesj+vPJCeV7yx7InrBYjVwc+XXdZNBkEMgG5DMHbwX3bZFCIE0atfo3BC7k7LXSxyvGCfJ90Ohj275GtMheRKK01XHWulCQNPJXCSEogXm+g103IK+PFhB/pPDsFPBffTOAznVyOcVzB8JvzhmbXwm2foKpOjq0y1xlA8MfqaMSZTBaJVPBFJhe5QWoluoQvR7eBJ4Uvbo+Nuom/wQOETkFKTo+9m8k8hedxXt6MnlU+3x4Yu57Fz5vqT+s02PCfXXBjJhcf8LoTUuAatvrPaXALBLoHOIakV9VJJc0WqUyIq5xfk/VXwjmcX7fSg3PbmG+DdaO2ptbkc0n8T1K+Qy+WKWu7Fwg9C5FsJa34R8pkmDhai7e4r7eAg4SLbm6tBDI6RcwX1hq3pBE3rSFrDDTp6oFqt+Q6ofUepQUTzXcRgSiDfq4ZTTMv3Kbcy+kHB1aWmavMjxPyoVEbm+zGv3egNf8xvQH6qFvAzNSH6Q649/UJ+Wlp1uqrRqhOkIPw15ycEf6MEdfmpxvwOLH8HS+XT4ViIglqsX9QlqDamBtSS89OSVWdN/CdL6s9qnfCI9IyVY+l0rcXWIkct+XPTaLhGRw9QqzXtiljbdkWVt5f2UDm8ZQv1lu3io9T+uz0Pua3sT6o84yfvgJhmgK9khg7IEPvIduZ2wZpUe6xItUyOtq2BXyxkdUVKfWFxOaot/Z/TyP/F3s+2BXrAnjjbzIXnA4fe8HT0cu3U7SHUHm6vcK65k46Pnu5Op7j21JquzSlfe6Jro2ONF6DSMsiB01A28floLMcQsknWodpxHWoYQ+258NSyuPBUY0aSwEgQ+JkSGOUUPDOaq1AyGl50DKPHOGpHcORjeT+2mPwYC1JpqWdyVlED7xpw1862Kj2Rh+1qAsVLFqTacUFqEkIQbzJ7kSnxutQUiDcVt7r+ZKZzCYqLTQjMgL5nskO6m/xnOTLTkVnQzGxH7nbMHHY9s52iLcx1ZG7MdR653uPIPEfuAdf5jsxHCFwXkM1CRxY4shBcF5HqYkfwW4R0S5xCr0d9s9SRJY4sBZt7yXqZI/c65j5HljlmuSMILHfamBWOrKAEkcxxzErSWeXISkdWIdtqyrW6JNcaR9bEcq2lXPc7staR+8HvAUceQAhyraNcDzqyzpEHIddDpPewI/g9hHTrHdJpZzY4gt96dJ2PUOOPUOPKYSMzbHJkoyObUD2PMvpRp5Hn2+zI5liIxyjEFkcec2QLiG91ZCtCEGKbU/ik2e7INsfscGS7Y3Y6gsBOGObjpP+EI4878gQK+KTunPmko6taTzH2aUeecuRpxD7jFNvpMyUl7HJkV2yxz5L/c44868hz4P+8I88jBP6YZLzg2Db7oiMvOmWt9iVHXopz72ZuTEt2O7IHufc6shch5N5He9/vyD5H9kOFB9iADzqCAcMhRw465rAjCByGQR2huC87csSRlyHuK468UtaAX3Xk1bgBv0ZOrzvymiOvg9MbjryBEDi9yQb8liNvOuZtR95yzDuOIPAO9PQuSb/nyLuOvAfS7zvyvm3AH7BKPkgacE/HfGhdeSdXOrksWWcX/Lq40tmVLqjsrq50Zai96cYVhDtc6ebKHW6N6e7C+fdwpbsrPZCupysg1dPFeY0uitzblV6u9OZLLdKHk+njKqO+rvSNGd1JRne5cqcrd4FAP1f6MYSlbzIa4Ep/VwaA0UAXLmKQKwNdGYR0g10BqcFgNMSVIS63sBvqylB3shkGDjIMLG9WTsOZcYQrw10ZgeQjGT3SVWtkitvMKN2Ld5Rb7BdGuzCkMa6Mds1YV8a4ZpwrCIxz25g6F/qrd6XOlXq31jRo3gbXmlZ/x4x3ZbzLweUEt+Cbia5McGUiOE/ic5lEZeARE0x2ZbJrprj64nOqK1N5F8kU10yjmNNKpZhOtjNcme7KDNCayeiZthS5lDarm83dlHuWK3e7ZrYrs1wzxxUE5gCnM5cE5rky15V5kPseyC33JFLDK7nx258Frsx3ZYF7i1lIDgvBoZ2SXkTSi13BbxGqYwmjl1C+iNK/18Qs5ZOlkO1eV+51zTJXlrmV4+L2cx+j7mNi0FjuImhWuLLcNStdQWAlxFtF8Va7ssqV1RBvDcVbQ/FyQeIz1rqy1qXPuJ8m84Ar97vyAERf58o6htqbB93CZ81Drjzomoddecg1611BYL3b2mwg/Udc2eDKI6C/UattIzko9U2ubIoN8lFS3+zKo65sBvXHXHkMIVDf4sIjbXVli2u2ubLVNdtdQWA7qO8g9Z2u7HBlJ6g/7srjrnqjJxjzpCtPuPIkYp5yi97oqRLvp1152mUrf4a8d7nyjCu7wPtZV55FCLyfc+U513qj51153i3zRi+48kKc+0XmfsmVF115Cbl3u7IbIeTew6a015U9ruxF3e1j09zvyj7XHHBlv2sOuoLAQbetOURxD7tyyJXDEPeIK0fckjd62ZWXwckzr5DTq6684sqr4PSaK68hBE6vu/BGb7jyumvedOUN17zlCgJvQUdvk/Q7rrztyjsg/a4r71ID1gG9Z/3C+668HxfmA7L40JUP4FHAopMn+H0IFp09FKaLJ5096YK1ra4eHFA3T7p60g2Qrjs8Aak7vGrT3UMpe3jS3ZMeXskB9fSUUS9Penlk1NsDoz6e9PakDwj09aQvQ+3NnWR0lyd3enIXGPXz4Ef6e9LPk/5IN8ATkBoARgM9GejRAQ3yZJA32QwGBxkMljcppyEe3MBQT4Z4MhTJhzF6mFfugIZ7sUUM94oOaAS3MBzpyQjPjPJkJAZHniAw2mtjxnjQ41hPxngy1qs14zTvOK/kgOo8qfPoX+rJucGTek8awHk8n8t4KgOPYg/lyQTPTPTUAU3yZBLvIpnomckUc3KpFFOo56meTPFkKmhNY/Q0r7EDuslMp9wzPJnumZmezPDM3Z4gcLd3nZlFuWd7MsuT2ZB7DgnMAYHfF2ducz2Z68UjJo8jJk/meXKPB9/kyXyGMGLy0MAXerLAM4s8WeiZxZ4gsNhrbZaQ/FJPlniyFOTvVbXc6xUb2TImuM+TZZ7chwIsJ//lLACd1wrercDjlZ6s9MwqT1Z51nmtZtRqKgL51/BmjUrNkela3q+NI+GXeHM/IyOq8wHePoDbHyUD0XWerIsL+CAL+JAnD3ryEAr4sCcPM9TerPcKK5uYDZ6s92QDjO4Rr3Cp2ejJI57Z5MlGzzzqCQKPelebzSzPY55s9uQxFHgLCixbvNJM6UdmKwXYCgG+p/fbvEKnpfzmb7tnv+fY4Ql+21HunV7hK+ZxT7Z58rh3k3nCk52ePIGIJ217eYrsnvbkKU+exuNnSPsZqg9PWKRdLNKznuzy5FkU6TlPnmOovXk+LtILnjzvyQso0ouegOaLoPGSJy/FeXd7nOPv8WS3J3tQlr0kvpeaU8H3kfd+T/Z5sh8UDniF0Bz05IBnDnly0DOHPUHgsIfRFFO+7MkRT14GoVc8eQWNyurjVaroVdznPPvkNa9wunndk9c884Ynr3vmTU8QeBP29BYpve3JW568DUrvqD29k9jTz8y7NPX3PHnXM+/D6XjmA08Q+ACm/iHzdvLlQzgtv9Z09pGzs6+dmVo78nfxubTlSxffdPOlq2/u8AWBO/zrTHcf+Xv40t2XHsjf04959yQFlbuXb91mb1+J9fHROvv60seXvn47c6cviLnTx/KVL/j18ksOsJ/N0t+HPxvgS39fBiDLQF8QMxBZBvlcrxzs04vhdogvQ+C/fBnk08kN8wXhYT6WxrUodFfDWZYRvgz3zUhfRvhmlC8IjPLbmNEsyxhfRvsyBmUZq2UZWyrLOD9xWzHfevKtB98GXxp8M94X/JCmzq+sY3tUVzWBqSagVKOdXDqKEjkmUo5Jvkz0zWRfJvlmii8ITIEcUynHNF+m+jINckxnnUz3dV6/Dj6LBGeA7UwGZoIyViRnDGIjudu3rWWWL/jdjUSzmWg2EvHt0hzezMHNidaN+XAM83yZ68s8pL3Hl3t8Wvl8Hy1kgS/zfVkAhS/0ZSFD7c0iElgEAi1I4HtmMWVbnGiohVniFyrMUl+W+LLUh2tjxS3z5V7f3OfLMt8s9wWB5X5rs4KFXOnLCl9WIuUqX1aVyKz2sTa/xpfVvqxB5FpyXUuukQ4B7/fjIeADvtzvywNIsY5yrCMBTfCgj0Wb/2Ee8uVBXx5CgodJ4mGQaBcpi/V+YXlHs8GX9b5sQNkf8QsXm42+POLLRp/7E3/8/0jX9JKmFbmKpk2bVpT+y/MfN7lrWhEGjA8QzjTxnIqKbEWK8ZFqb5NfSJtHfdnky6PH4InnTcN4M7R0kEpHuhq12ef1RvOYL/htZmvJpWzcFhu31Rf8tsRxgY3b5ss232z3Zbs/w+ywCXf6gt+OuIX4NuHjNu4JX/B73P+qQyekcU/auKd8we9Jn6fMuzbuaRv3jC/4PR0zd2zcLl92+eZZX54F8+dswud9we85Mo9ylbZXfsGHw3zRlxd885IvL/pmty8I7PavNntoMXt92ePLXtToPm2e+7TSmXe/L/t9c8AHW3pdXw7yLpIDvjnE6j/ks/N7q4k5zLvDiRW3M0fI9GVfjvjysn+LeYXRr1hbuRCbu7/q2/W81+IAZrd8nf+GL6/78gZEedMXJEHkm35lfdwTv0USb/lc21USb/t44feOL2/75l1f3vHNe74g8J7/HfM+y/WBL+/78gGIfUhT/rBkyp0CCNc5kE6BdA5qTZdAugTFhtI1KMAnB9I1kG5Be3NHwMdnmO6B4HdHUG164In0CNj8XdOTNz1xcyIdUy9CNnoH0iuQ3iDcJ5A+IOzYMvcNbJnvDAThO4PKhrhkd5HGXQFLpvL1o3z9A+kXSH+QGRBA/AFBsVIGJnQGMYBcZnAgCA8OaswQSjA0kCGBDIWswwIZGJjhgQwLzIhAEBgRXGlGMtGoQEYGMgr0Rwcy2lIn1TEJ1bGBIDwWVMcxQ10g4wKpA9V6ClwfoOqjeM2NseMDaQhkPMhNCGQCyMGzwiUz5USqR1UwKeDbcP0PM+BAJgVmSiCTAzM1EASmBj8w00hueiDTApkOcjOC2ChnqIQkMjNAxd8dCH4zg7+ZWeQxK7jYuxFWqgqcHfBzzTmBzA5kDmjMVRpzSUOrcx6Z3BPIvEDuQYnmk8Z81mmRxgKmWBjIgkAWgsQiJbGoRGJxgPpfEsjiQJaAxFKSWKokqJV7eX9vbBn4TyVfltTcfYEgfF9QOT62gOVMu5wWoNx/b1awzleU6nxlAJKrAlkZmNWBrArMmkAQWIPaXEtB7w9kbSD3Q9AHAnmA+XI5S2odSa0LSo48UEceyIOBPIQcD5P7w0Gpca6ngjcEsj4wjwSyITAbA0FgY/Ads4nMHg1kUyCPIutm0t4cJFI+FshjQdGQtpDulrhUudA6o62JBrYlVrY9EIS3w8p2BMp+J9k/HsjOwDwRyOOBeTIQBJ4E+6cC9K5PB/JUIE8Ht5pnKM2uQJ4JZBekeTYQ0HgWlfFcIFsD83wgzwXmhUAQeCG4yrzI5C8F8mIgLyH5bq3S3SUt7wlkT2D2BjQCFXNfIub+QBDeDzEPWDEPUsxDgRwMzOFADgXmSCAIHIGYL1PMVwJ5OZBXIOar5PtaIK8G8hr4vh4IaLwOMd8I5A3yi2RvYN6kut5kq8qlbUW8FchbwWTzdqK0d0joXaZ7l+nA5L1A3gnkPdB6n4/fVy+C8NsBehKt8A+0wj8M5INAPoQAnQg57ZRChaOfA8XOKfzTJSWdU9IlVWu6pqCVrqkS+L5bSrql4vetKbkjVTkottnuJNI9RX7osCLtgHrwu/WeKemRMr1S0jNleqcEgd6pNqYPmfRNSZ+U9AWTO1Ox8u8kG817V0ruSpl+KTafV7r2AIv+KTv2GpAS/PqnMN1OyUAmiqRfygyiCINiEaLEE6ZsYEhKq3QoJRqWkqEpMzwlw1JmREoQGJGCG6REo1IyMiWjINFolWg0JbLvp8akZEzKjKVISm1cSsbxQSRjU6YuJeBSl6ocEiukPiXgXg8hGyhXQ4qjSM02nkJMSMn4lJmYkgkpMyklCEyCEJMpxJSUTE7JFAgxlbqfmip542kpmZbiAHJ6CgPIGSmZnpIZqXZmZkpmMtTe3J2Su5lB2xjzzEqUMDslCM9O1Zg5FGlOCkajNjE3FdvEvJTMTck8ML6HCe6JbcKz1jc/JfNTk80CxixADNFIC3mzkECmQs4s4s0iFHhxShanzBLeLkEcIdxLebOUDK1p3MsH9+JByBcZvFmGm2twcx9v7sPNlTpVvtIst5W3IiXLU2ZlSlakzKqUILAq1daspjbXUG9rU7I6JWsh/v0pWZMyD1B79yfaC826lKyLDfdBZnkoJQ8xjTwYV7FvHibjhyH/+pSsT5kNKc31SApxG1PySEo2InITU22i4HhCYo+mBEkfTVUOi+t9M+M327I8lkLQbEnJYymzNSUIbE1dZ7aR/XZKvCMl21KyAxLvTMn2WJqdibzXmMdtuZ9IqR6eTAmCT6L+nkrJ4ynzdEqeSplnUoLAM6lrza6U7CKNSB5ImWdJ/7mUPJuS50D/eeri+RLtFyzNF1OC3wso2EsU/CXqna9mNNVuSronJbtTZm9K9qTMvpQgsA+Wup/0D6Rkf0oOgP5B0j9I+qjtQyR1KGVnZMrocMq2oiMpOZwyL6fkSMq8khIEXkldbV4luddS8mpKXgO510nu9diOU5bAGyT6hrVZTvDeTOlq9FtWTW+n1JjfSRXEvMv28V5K3k3Je2gf76fkfYbamw9Sgoz4F9mQ451U5QTWm1rlh+TxobXKTmn6xXSZIXZOK6cuaU7X09IlLV3T1aZbWjqnzR1p6ZY23dOCQPd0W9ODiXqmUaxeGCCmpVe61vTG6DBt+qRRuN7pol32TUvfNE3pTma5C6M/ppE7mUIZ90vDBvtTnv7gNyAtA9JmYFpzD2LcYHg+TNEROYSphkDqEE9IdGhakHRo2trnMMYPQ/w10g8B5BhuSzUiLcPTZmRaRqTNqLQgMCp9rRmdltEUJ5I+8IAszti0jEnLWBRnHAsyLl16h15HWerJoR6EG+D20mZ8Wm1pQlrq0oK7CWl9qa6PJ6a1iJPSgt9EZJvM/JPTJUMk5SlpreypVthpaa3s6el4ojojLdMxZ0/famamC2LuTqP2Z6XlbgwF0xgAYoLOUHszJy2ghH9BByRmprX2lfZcS3teWuamzT1pmZc289OCwPz0VWYBy74Qvg8eD2VflNYRoJae2RenZXHaLEkXu4elcHl8EMmStLk3TYdHvec8OxRbRvUtIwFNfx+rfzmcX9qswAAwbVamBYGVabwSIfPVaVmF5UcwX4OFR+bLBYl+1oI8j8m63+rpAVuWdVZPD1ok7UNpQVKkQgLE4fFD6cqJsWU8TAkfpoRaM+spzoa0rE+bR9KyIW02pgWBjRBnE8V5FH4wLY9CnM0syGYrkM5XOfxLJyO/tO2AtqYF4a3pGrMtLY+lzfa0bEubHWlBYAfI7iTZx9OyMy2Pg+wTJPsEyVpCTyaEnkoLwk+B0NMU+mkIfZPl+kyc5kSzK239zbNpwW8X0j6HVcq0eT4tz6XNC2lB4IU0hoFk+lJaXoT3A9PdZLo7rWunqss9luReq9N9aUFwH0x1f1r2pM2BtOxPm4NpQeAginGIFA/DA2IODIpHSPEIKSqZly2ZV9KC4Csg8yoL8SoKcbPl+Fpap/WvJ4V4Iy34vY5CvJmW19LmLYwN0+bttCDwNgrxDlm+m5Z3MBYEy/fI8r1SIWgh71vL+MCW5kMrRqdQEOwEwHrnUG2lS1gQ0zVEE+oWStdQuoV4lxLKHQy1N91DASn8C0LI0SW0TUi59Ah1OtQzVC69QsEj3PUKbavXdL1DlaaPTdc3VGnuDAXBOyHNXVaafmGMzuofSr9Q+oe3mgEh3sUMpHiDQhkINwfxBocyGCGINyQU0Ma/oAwSAxqLN9SyGRZakxoeWpMaEQrCI0J8kEL6o9gDjCaTMaGMCmUMmIwNZSxCYDIuFFDCv6AzMpTRjZnUJTTrEy4NyZPxoSA8HlwmhIJ0SDGhsWImWsVMsoqZbCWeEgqCU6CYqVYx08LY9U0PZVoo06GYGay3mZT57lBmhnI3ZJ4VyiyEIPPsUEAb/4IySMwIy13fnJADwpDeqeRz51IH80KZG5p7QpkXmvmhIDAfGKkFIZ1hKAtCWRjCGYZ0hdymTO12McktDuMBgGdfbC1hmiVh/CZ0KeOXJvEgdS8f3BuW9bXLwkLG3BfKstAsD+W+0KwIBYEV4bVmJeVaRQlWh7IylNWQYE0oq0KzljzWhKVXifeHSu0B7lC1LpQHQlkXwhuGgpgHocyHQnkoZDf5MImuD+Xh0GwIZT3GfaEg8AgKuzGUjaQdydrQbCLfR0PZFMqj4LuZHDeTo11Sf8xy3BIWPLM1lC2hbAXHbaEgZhs4bg+tbDtsyp2U7fFQdobyOFI+EQpinkDKJ0N5MpbtqdAuiz8dCrLj9ulQV8CVwjOUaVcoz4SyC/mepTKfDW0Hmij0OSr0+VCeC80LoTyPRcBQEHgRCn2JZd9NIntCeSmUPSjY3lB2h2Yfi7e3TKH7rdAHKPTBUA6EchBCHwoFMYfA/HAoh2Ohj5Doy6EcCc0robwcmldDQeBVKPS1EIPE10N5LZTXYbdvhPIGWUWyLzRvUoy3QnkzlLcgxtsU4G0KoHzfYfS7obwTyrvg9h6L+l5SVE3yPgv6AbxUaD6ElwpNp4wg0Clzremc4dQ2I50z0iWDqW2GU9sMiCM3kZ0ZUOuWic3STQCId2QKWO/LyB0Z6W633OvBdD00nZOk65kpfN30ykjPjPSy6XozXe84HWXDxfTJ8IvdvozomwH2MyN3JruE9MlURL0dJ3dsbHg5+CGn2IdQoQ++fnIdb4rEDUgk2UqCpcskuK8sL76JNHGOEEHJKWiJm9MocLyan/Emm9Ms9Jyvf8weK4UmKh3kiD8K9iyARPeZjSepGIWpLO3iTWrghLJwrRF515hcIdv4mMi2jRBBRAM5JBoCL7J+xLyXmjQ+IvLqo46I1D1X7e49RVS6nE45zoAcMe6nHQFTcmZ7czbkiL8arjFGmVRBnHOkSs65yZxrO93zBN8I15jzxZSwFlc1wloQZ8F3v7q1DzRR3C/nMyCX7FehIrWUlhTpc/I5ivR5iASwunyhHVE78oX2wKu3VLx6jblYLtKPhD25BEQjJXCpXEoCXyk4unNctfmaXCpf42uAJpGy5SfCFdH+yJyAT8XTZX8Z+xeWX8vjGqft4P1LRsiNCv5bwWHVJiw0UwDO33/XY2svbNocL2MCz0+lw0w2yuWbVlQ2a64YbeLLWPqoEIOMFLmTlTxKLxEjmqphVwhsiSpppvmIcGV0s4Kv8KNq3SaL+ZoxQneEPGmGOVkJcBupk/m6plIJlIBlvuLKqou4MjkVEQrkkTNnKr41RyCPnEUCFZaAiDCdAYEqMYrrETmHBAwjsKkUTW2GOV8JfEJgbSTQVAnwu3Skg+H5anjVMLwL5FMkcCEjsFUKv0ufCYMjAWJ65LMkkFcCRdMrpHXvQkBcC7cVv1EvhGp31bC7lnIxyX6Jb3cvkcCanVxCajmlVtwtpeDrh+nVsLqvyNeRT2E/3yhUKuy1HbdLkcvaE9gzw1yu5L4p2CSB5CIlR3APc32r4OsuCdWmjVwhbUjuW4y4kvvR6Vfrtfxqfaa5WilhC0O5mpSyltK1ci0zXAdK2LtQrq8GtvVauYGUrmPEtwstCOmR77QDqge4nvYEts4w31dyQLPK90kuo+SI62GuHxV83TGh2vxEfig/IbkfMeKn+FBB90uo5afrM0sYVny9TkKhEiKuh+l/WUjrh+xA9kD9v5Ffy29qzW+h/t/Jb+V31YDx3Cj/SfK/pfpLuxbK70ktbalVSzWp1RR8/ZC9Gqieavkj89UgQrdPkT/PNDcrAQB55GYSSFkCt8gtTHcrxEm2U4A4/yXt5b9qzX9DHHylLrdVm7/ILfIXkv1vivNXpRYDekgtsNQ6SAdS+1shrRsoVJuOoGY/V6/l5+phcQOFan6y3iFG7zTBE5Lt5ijdOxzBr5tD0r4l3Z3fsZN4DweF7cnP2aUniPTic+lFKniEBIrh0S/ZZ5i+luSdjuDXNybpKUlF8DBHP5Lsz4/bpT9IDuBzGUCSeIQE+om7GcS9FWaawZbkEEc3USBJ15Icyq/amWOYAx0Mjz9zHw6SIxzoYSS/cZeRUMQoKKLxZ+3IOIYM8Yjni421PMY5upXCpfFHFZWT2EM3YQ9dhwTJN+71TtJLd4LDBD7oBGCGjrurzMXeUbvKsMPWPRtTlx+1s8x3jtoYDR2cuvZ8oaK4H05h030fu6kYe7jizlrtFOLTHq6VgwPts28xp6r6gEvUXQOqk81gfcHxqXhdoQKeebmvG8r01I10URZ2d0XXWhGtc9JejJoKbvephWODXlULuvVDXHyf1IPLj9r+4Tsf3atRU+YuT+tuCl1N08tb6oilA3uXyaaZYl+boyQx1qla0a1ghOI3Q0mUwkmXezp06anQ5aQkvu1lKqIH3VJJcG36z5WEg5aKxqX5wfFLk9XSdPnXS5PV0nRqXBpGsjSTUcF+DH5VGVHzHJXFEuiGQVluGCRn3AwYbEutYqBglbmAOSvXcM9znxAu/CNng7lmPqeQVUD2n8x5iD8PXIqqJKKrItriOZ8vA8m5xwHJjXZxxe4jo3h1AZbj1QNYjlcfYDlcL8C/hnNtv9F+lro7AKKR2ES4InNj/PN1jfDP0oxjxZyTJG2uWVXJPHggLScqYyLjPgORsMViC92orR01Kqe0h041E05BdxufgX71sc9AZzojxlQpY+YlqrgqkipoEOhkOdceY8BqsinOQ67GEOPrPzrsRVqoz3wa8n6G6T8rn+Z4VxczLKGLGJHs0SRp+RwLyJqymT+PzF+wab/I0bB8UfNHrLIvSVpPPv9y4uzq7nC+l8fwlG3E7VCJ7Q3yuH4lHrD68VYHFfg7A889/EUdKzs0xYD2HIRPxnMHaSJe8dfMXns7NuDFidw4HJJFxyAOnxPvU+viL8Cfd/tdLh6ehsQZXJsjQw6n7fugPMRDypvx9x38XY+/fkVPlCrsstui1pTtmB7SAHcEuMLXb+IVBrieVxjgOl5hgGt4xWvcFYFu8EJ45gynsGAQ6Wat/yWqPVutiHaiN/dwn8DQTudghDEkU4HsIXd5+U2MxQ8JZG8n4afAnE57mTnx8qM2Df7usTcN1jycXY2EAYZyBuWngYUXQGC0506VxQ2E40xnx5m4CiQFr9SyQ6mCuKWMjfdZ0J0WbL7zCylao27tHcoFmk/j1DR1YIy4TymA9dMIfhoFjKIo2U2i42kqOUfLI8xni491n4Vf261gFAUf8/+8sl8RYMAspQFzoAPm/zIXFyYPviPeUmzY7i64xmNlufh08xWtGSLh5SucqIWcqP3Msv+6XnVvwV+Zy8AW42RpVVvaFUa5Xl6Q4p5ihUD3+v4v7C64thO5tinMP9QZ1yuFAPjWp5u2ylWxndXmanC9GlypJhiauQZXGJi5ltd2GCd7pXGyVsC3+RpYx8i1AHkKYO8tFPbeTsfH7TEqvkZ+yGG1fFcXEC3xH2ld/Fhp/4QDZvmJdQaa4qe8/sz8DGx/zlGz/LxR9C+sdP+hFG5EsuLG3yrdr7neqePmWzFuFmDfW+hmY+0wWgbQsz1Gy7+QP2D8/Sv5rUpniVYr0RoQLQ2aMVT+o+43dhX2G7PbjdWaW+Kqv0VrgZlvlVtNO7U20Ghf8HSwXA1c53+bdpEQ2RnKbV92n2QjsHX7l8IMx/wVz/9azUGz6SB/kQ5255K/JQdAtdIxc4PpiIQd1QswdxEC39lZyNFzJ46ef3X87ccoGdhh/7GOxf3HqjliDol5R1SkBkXspxSxn7dwJ7Jnm+hWZOXAT4yFW3OE7BRHyPjsjMwGkJkVXlqZgWQwEN7rBkt+EMkP5phZBiPPEOYZ4hQb8VCnkDExClSGQb7hzD6cyDNVLYfMbjJkRvwoxo8ilpDR6wIzGlrRPcnMWA6eDQfKHC5faeoobT0xoFIPzg3grGAsR5kj93hupzaB+E/FfRoCPgn7vI6YT6eI+cRnF4R7srcGu2kUYpqjK+OW0nRS4qZjhILWmJlMMpNJ4gTXmLtZ7rsd6ylvADy0VOGziRMVHOZs5jDbHGqPXa/mnMsanEe0qMyDBu5hkntIGU8gkJKbn5Br2cosiBGkC0BuIdMuJDl2sKrwRYSPcjC+mJDBJTGedInTjkDSpQy1J5D0M8cEkuIDYiplJdGkshJKWaXQylVOqQNY7QBMOtKsIec1thOjgGsdTUBEaQwqrTcPMM0DZWnW2TQEl8b40jrzENM8pGk0jkhTMFjPiPWO7WU0/wabn4hT/DYg/0Ym21jGY5NNQ9gpfpsgx2am2RyniSLbbB6DWSnu1MSAU+BNBYFtMKvtTsFiTmUHdLBTdbCzrM09zswAoMYY1BoAUAE+Be6UcmqCp4k9xZMIKFQgUIE8VcTpDOBNmeQ3Rcip/fzveYr4PCr9RkbfaF6wyV4kCpV40xcJNhUEdqOW9lDCGGkqeyHhPprePpWPmffToA4QeSoHYFAHSfsgaRdaKvxUDnHzvUTYwyzNEaJRFYdKDCoCr0AVr9JSAD39lHmdLN8gGlXeAMs3FYlK2OnpQJ8q37fJ18JPwfdd8n2XfAXBt8jSuoz3HMwr3ycqVd5Hwg9s/g+Zv1OMIO3kVgOCivydXeZH8APmL3BnRj7ugvgYk2q68bYbkZBoT1rzdxCaOgLQ1OL52UWE6q+JUO3pfsv0UgBgL2A+kXia6U2YqulTdsA2Eap8EgFoau4klzvB5UqKeiUAq3Y63M+1/S8G8fj1g1zArOJ3F0IDCVdlUxwEMBshq4MIWW2nkFWE2hOzqioZ5hYEUFUZRqBqLfGqiBoBHOZIpiBE3i0QlyqjiErFWgIFGsNi88lIl8rV0o91VcRxxKsuNHUxcrXOrQdoteRCGlzBr95tMONJaLzLxqGMJrjxto18bFGrk1wiVScQrFpjplCOqa5iVAlYBSIVgelA+M1g1EwCVGUmynC3S4/ollzHLEJIZxORupDA1FkEpv7qOMDUxIMTmGphqWYhkakAogoCi9yrzGLmXBJDUpcgJwCoSzUfBw73uoXQLCMUVZYh8j6iTunetZDLmZUYVAJQgfpiaVdSm8CXrYofr6JKo8TpUYg1rqyB5GuJUJW1kPx+EklwqLWKQyXYSAV/0NUm/FB8vVERqfIwVLjeLbwfv2wAGBW/9Xj0iKu94UZXENyIJ5tiGOujRKUmaFQU+TGy3BJDUreA5VYqa6urX2BtYyG2ufGQxE2k2K52vp1ptOg74vrdycQ73WrFqgKmKjsIUoUzI6D7KaJV5SncPu1aQs8Qo6rYVOJSEXiWLxgpDwCpzxGTWqtQVOXEPC+SlgWkgtVuq5E9qpFGiFRB5D6k2U+59rv2NZtKfCCW+CBjDiLJIcJTzeEYs3oYmY9Ysi9bsgClIvgKYoBQReSryPMaM78Wk01Gxq+7dqj3htX9m7wiQRGzWg3MqrWmd9g832Urfo+4VXkP6QlVZag9sKoCavj3DQtvbTRK/tDVjrmTp3wAXMUj3HX2Gg2Gu3hWoK42YTdPBSKoFWEFtVqBenj8QoJo1h4Eot5qegGt+nFYVgF5/AvaoNHLayThXR4V3A+0pR+Y9CfCFQBX1f7AOHIQIwchEujWwR4wrTKQiNYaM5ToWEHioY1LMywRfrin1TMivt6oqFYZiawAtCJyFEKjLa8xMa+x5DUWvMZ5wLWauhjrWodk9Z4gZT1CDSzteI/f1LLIEwlrlYkoMjGsDLUngBUy4N8GT4hzbVzkKVaaqVa6afZ+uicITgeLGRbrKjMaF2xmUk1322qapSUtgVurzZykmuZ68fxlHpGtMg/VdA93fZ1PmRfEqNYFkBmA1oUMtSeoFeTxL2iDxj0lmclwsWW4RBmW4K7A3BMEC4grAK9FjOtVwLjSy3mAuQLbWmtWKoZxpVec5ijQFRDX4kxnjaVNZCvCa0EbsNb7mSYCChagVo7pPDqZ0th4HSviQYJbFdRqiGYlpvVKAlqdIp61FnhWorwoQCFlNpLWxnjhI3G0m0jpUQJcFwLgKpsIb/0VUK70esS5yhYQ2UoiW0nE5trm2Z5tdgHYVtlGSGuD2UHyO7ykZ5vhEOR6BkGuOwlyrTFPMMETns6VNMWT5P8UEaqKdSXOFYFnUJJdFMICXCHEc6rM5+KyrIATJLHnoa4XCHM1L/L2RdCe7djAPUngXno2ZnmJaV5Clt1EvgL/WnjLM3sJgZW9eArU64zbi7DXasJeOyjsVQ7i9hBzH1IOGrhHA+QQFQdDhxPdHCkAHSuHiY39tXmZT/U/8wqfAif7O/MqUbPyKkr3GjGx3zKvayFfB2YWaaYTJPsGQbKKbwE09i3eRQDMmrdpOJAFSFnB722IkVTPu0nUe8SjEyxLpCzGfSzBB1qC92I8+odwjd4iQmeRp5NfD+hsLOdvN2woADAr+HX2G4iaDYGYLZs0dCPw8w6iZxcCPSvdiJ39lelBEFhPgmilJ0BgvQiERQfNqZet797M14doWUXPEjmLwJ3+VeYuZu4Xw2f7IXN/ImUxgED6AWQ/AAt1V1gqA/3CmWYQEbJmMDG0xMwiMMS/0gwllQQzWwugrCL9iURDnhExWHakX5w5EDg7ik8i4GfNaDIaDUatrALH+DCBsUTSAkEL/8j4cYhf5NgyIQQcLQOY3NUTNUscbX2Mo0VgvH+9mUCJJvoygTDZWqJlJ7FcNvNkAmZZFVMImzVTCZidaabFJFsBNQvMLLGyM/AQSFk8n+l3N3fH0VcoQJbg2NmIBiwWz+f4AMRSzLmAJF4i4YXeJcDGXt5p8P4nPUJj5xEd28XMJywWQANfxSiCY2FEmmdRkmexD6gs0LGdAIuVJcizlNSXsjZs3nuhJMXHyjIo6T7G3xcriZNklXQ58YDLWQt6vyLR2UpmXkX4rKxC5tXMvNpnkxKEV1CgyEuqY02Say0htQDQAk9bxM9eDfws3SLVDcjsuiJk9kHfrCf7h8neUtpAto8QNCuPgO1G4mVZC5tAQsGsZjPxrIbwVIJU25gthBkTkUpc6q0KRQXhSNYTkcopLGGpsgNMd5LdzjJ2j5NdDESVJ8DuSZbySZ8NkZ9UaV0/5SeTWV/we8qvMc8w3TNIN4OqLG9HuyjnszEg9TkCUg1BqISiXknwqaPgU3kRsrxE6Km2o90ktxvkvmip7CEVgFFjPCpGhX4hU8SfApNK9CkCB0H0EIkCcQoI6mEQPaLN6giLiDwvE3JqXilrVq+SMrCk+L0Kyq8DZcoEERCp5g2K8QbE+LTtzt70C83MWwSeAm2KQSCArIoylXdw+y6lSoCmf2oENEXshyT2IYhdYE2jU4AHnYLGbZTQU62JLgSgmq7EnxYhp9jVLQBRgk0JOa0l3rRHUGyjRJz2DGgdvWIqnza9mZxQU4JOMezjbYIwrSG4FAnvAp1+lKUfZDnXUupPeCkpDVBKBJYiODD4LzMofvLFIrAUKINAcxFcGuNL0RY017CgoI0T6NIYadrejIgTnwugqSA4MrjJjCLzUYHWNsmMJsx2DJGnMgbkxzJ+bFBsp6q+cYScUsI64gzrCC20zo25GwIBErUBuccz9/gg7vtU8AnMQBhqE72fmKh8EnIq8FQmI+cU5pwS0Pj5aCKLlSydTg24ERxBqcCi3gJIauEl4A6ISgUEFYBUQwAqYaitzSwqHWDTWYScYnsTRRbOSfjf4wCCCvipmcdxk5aB6NN7+CSSeZjoUg4CUFtaORfEArcsIlCxQxzxpgCbLiLktL1ZEie4wCwl/JRo06UB8aUILAPU8T4KtJwQU1kOgUpwUqW60mZeRZoElBJN2o6gUsSsgV7WUp61sV4ireb77ThKAaZyPxKtY6J1SDSjvNIetKpWhKl5mCBTQEoFgfWw7g2QTGGl8ggk26iq2kjZClmziSQ3geQERxVHsKnS3RwIwpuhicco9RZiTWULNLE1QJvcRsSnbIOpbSeJ7SAxRduc5t5BbChNaSfpgfwxEabXE2HqFBGm2ECO4FJtfMyzK4CMzxJtKs+C1XNk9VwiLRia55k9QZxWmxeZ4EXKEmtIR04v8eFLfFgcQ+8OrM3toc3tJQxV9sLm9tHmFHtqDhB+CtSpIHAwaGMOkRWRp4SdwgsGVgSAThF+GeIBgQrCr0Bjryb0XyP914lDlddB/42gsLuJeZMwVIJN3wyINUXgbdj0OwFkfZdMEpBpLUGm7wbmA1rT+0Fpqv8hk3ZKAVwKLCmQpUUwaRuASQElRY5IPoCPI+YLINJuxJHWEkIKwbqnaoAbFcAGAMOqoyLxL0GkakW9UmoIRShpDaGkbhFKiuktqQI9eicBpDUAh8Ic+qekHxGjN5kBxKESNzogBowiMAhgtsHMMyRGbA6BJEOJPhuaKjXXYcQAEjBKtGg1QaMqFjCjndY1SVCjiBlNbsCJjiZU9I9mLOJDwkTHAikKYeooKpChdUSGtiMyFKQakG98ii4rRYdnSU9Q0jFAVCYiySQmmVSulMlkloBF/2ymMsHUOAHMchrvpuFuQpJ8OgtpIaOgN5MJZjK5NgxNdDdpziKGVOGihIoiMAdKmov8jSGi96RKbWF+CkwXECMqC6DnhaS+sJz9ImYHNHQR0KFgv4QJlpB94i1QduJEl/IzZuJDlS6woQgvS91s7mMOAkOFUWKWK0J3eUqrCblXoJoUHyorwWJVYjSriRQ1awgPJUgUgbWwxfspEBCXAIs+gPIQHcryJG+LW33TPEiOD6Yu9VooA8WMxmgBKx6xogivT/0JeFF6shgM+gjIbVTpNlI6TboppT0jEaObUmYzQaOKEAU8tLXZwvwWJIr82wgNLfXz21OJ54qBojuJGiVAFIHHAZ98gpkTfGgt8aFPlWV+OlXoUMSJVitOFKX4KEY0RojqG5YWgIiW3loRI0qkaB1gonRX1Emk1bA7UcUeGLfCRGUvbH9fDBvdT7RoESfa1hwkS+BDD6bkEFgeVi0dZltLVugvM0fI4wh4VOYcy+XlhMsr5PIqQaPyKri8RgSpeZ2oUSJEEXgDunyTXN6KkZ5vgcvbyuVtcrEqeYem8i7xn4CIAkeQmApRonBQhIsSDYrAh6DXKU1cPNGgQHpiixBCP0sSH7mMYNAQWFCV2D5+6zLTjY+78bFaOHBUab6zTRdfiXYnWJSvBXrwY/meMVK0Z7odMaO9GGoPzGjhM4SD9k4TKNonDZSoIHBnurW5i2L1I15U+kGs/oSHgrJW34B0It5yYkUHEAbaALSoEBiK6mOqSjO4LNUQIkhlCFINZaqhlFvVT9So6m04QaK0HaBF8RuWBl6Kj2Qk4GuW86i00gZ0FMHR6TrgRjUmgY7+yoyj6HVpoEelDqLXUy316WL9KHaUfManbcVPsODRajMxEcZiRsm5bDw9mejReNoK9NwgNripRH2aaUR9AjAqCExPX21mUISZRI3KTIhwN+GipTYzK402E6NGZTZ4zqFG5oDTIs5W5sbP55KxTT4vre2zHDYKyKggsABg4IXktYjIUVkEXotZ3MW2uMy1hNyAF11CyCiW8MiNYFHd5zeNsCwjt8RP3keUKMu4HIQVLSorkHEln8tKJqVXhUteRVKr0mVDqNVWVKJIEV6DKlybRqO630JD2wM8ik5gncWI3gTsKN1g+qgh1EOEjsa+MJ34QsJHyxGjgItebzZSwk3EjcomFP1RQkZL3cbmNGQEUnQzAKFgtYWstqTLhlBbmX0bUaPAigI9xQTb08kQKopsu91hbYIYUj/BkCL9E0SWEjj6RLqIGr3aPE2izxA4Ks9Apl2sjl1l1vcsiTwXA0efA5HnyfT5dDz8Lc34X0j0+CKBpAohBXxUENgNHnvSnMCS0T6iRGUfGO0nctQcILv9ZGcpHWTtHyJ4VA6B3WHiRmMIFUkAI3okrWBRAkUReDUNCFWaECpiQYEKvVXxoSAcAYNq3iRTIkQJD4X3I7u3y9i9Q3YJWBS+j6V7L12c8evQ8H0CiT5IE+v5QfoWoEUxNFSsKHGinUKgRBX+2ZpQUacIFa0FVJQuLiyNB7vzQfeweN+D6XtaYGg1IaKEh+rSr6boHdra70M0p+lLNGcRGorlOBLoF+M7+4Fhf9AHh/7KkvmIEcXbCsI/FSRqiA4lRvQ6M4SZh8YQ0aHIPIwgztIXV8MJTUuwoNXAggoRnvz+zlIexeyjY0zoaCQYE6rIRXAotkdinnFxeaBPS7cu5MhPMZ9I08A0DUpX848n4wnEhsoE0J3IBBNLSlkTABFaCM3kGL85GYJPoVanhMVanRpac5xGfKfCQgEJFQRmhFcTF+okuFDknqU6mxWWzGI2dTYnhojOgQRzCfykFc4j9lPnY0B/EgLK5gnLnM+7+WH5CJJTVZJJoKHVgIbKIpIhJlSb/JJQEF4S3kwY6NKw6AruDcFhGfweQZ9Aw5P6fWHZCHI5i5DAQOHrmGAl2RdnUxnAQunu+LCo+tWExa4hTBTQ0FuA4+Qk6v6QYM4HiAMt4kJbmwfJ4SE4O6JCsUCnSnq4zJbXh8kqXajutIgTrTEbWcebCBaVTcC6PUpimwkTlc2IfYywxC0xDHQLirc11FIRGYrwNqTYTsTkDsI/zU4CPYug0KvME6T1JGGh8iQEe0oFe4qCIc/TBIQCBUpzU+l2WemIBUX4WVB/DtIp/lOeh3QvkKKFgCL2JUq3O0Z/7oZ0e6x0hIEivBcp9oWyj0wiwEzN/hgie4CozyIKFCtxpHmYOFA5DCmPqJRHytT3cowEfaVM0lcTSQEGRfg1cHqdkr5BbKi8AUnLEaGIfZuSAv75NkCgkPRdKymhoAi/hxTvU48fEPpJAOj7JQDoVccCgCYQUOTplgH6E4DPknTdMyodIZ8I98jUEOfpFnGeGJ6RYp+MAOvZB7F9M5AOqM6+BHbeZO7KWOn6ZQThfkjRPyP9ySQCotQMyMiADPQRARprBiKxDMyUHAc1NihjRRmciDIkIwgPAamhFGVYRoZmZBhEGU5RRmRkeEZGIHYkRRmVkZEZGQVRRmesBxuTEYTHZLDMlkg3LiMIj0Omugz0UJ+R+oxpyEhdxozPCALjobsJJD8xIxMyMhG6m6S6m2R1NzkjkzEbLdPd1ETgaRlBeBqoT6fAMzIyPSMzIPBMUrw7IzMzcjdiZ1Hg2RmZlZHZEHhOIvDcjCA8FwLPSwS+JyMI34NM8zMyn3wjmZIxCzIyKGMWZmRBxizKCAKLMleaxWSzJCOLM7IEgi9VwZdmSmZ5b0buzZhlZcLflwi/PCMILwenFRR+ZUZWZGQlhF9FqqszsiojqxG7hsKvzciajKyF8Pcnwj+QEYQfgPDrEuEfzAjCDyLTQ9T2wxl5OGPWZ+ShjNmQEQQ2QNuPkPzGjDySkY0QepMKvclq+9GMPJoxm8sEfiwReEtGEN4C6lsp8LaMbM3INgi8nRR3ZGR7RnYgdicFfjwjOzPyOAR+IhH4yYwg/CQEfioR+OmMIPw0Mj2TkWfIN5LNGbMrI7uotUiWZcyzSCzPxsYbRYnxPpexgefJ+4WMvJAxL2a4E1Gm+HHOSxl0a7sz8lJGdqOge6iSvRnZkzH7MrIXi/4ZQWB/po05kJEDzB/JixlzkBQPZeRgRg4h2+FM4QPdXigj+B2GrC9n5Dm0rYy8nDGvZgSBV6HX15jv9Yy8lpHXke8NSvNGRr+aeZNleDPT+IX2W8zwdkbeysjbUMo7SZHe5fP3MvJexrxPIu+WivQBi/RhRj6A3wGPTll+zJuVTlnTJSuds6ZrVhDomm1jumWlWxb5I3kfPiHLlf6s3JGV7lms9GcFzHpk8SFvlh/yZvnFSvIdb5bf8WalV1Z6Z/Edb5Z9Wt+s9MmaO7PSN2vuygoCd2XxHS+p9s9Kv6z0B9UBMXhFBmRLg6WBWfuef1DWIp8HZwW/QVnsIJmVgVkzNCtDsmZYVhAYlr3KDCfNEVkZnpURoDkSNGVkVpU4isKOysZK9CLLYjRVMCYro7NmbFbGZM24rCAwDrTqSKs+K3VZqQetBtJqKJNufCLdhKzgNx76mEgWE6kPBdRowknkMTkrk7JmSlYmZ83UrCAwNXulmUYe07MyLSvTwWOG6mBGGZeZzHx3VvCbmYUrysqsrJmdLVGfk5U5fBLJ7KyZm5W5WTMvK/OyM8w9Wf1sZH5WEJyftZ9xLqCQCyDkjRwcaZKFWf2yZFFWEFwERouz3DYyK4uzZmlWlmTNvVlB4F4IvYxC35eVZVm5D0Ivz8pyCOwohRVZqHplVlZkZSU0sorMVmX1u87VWQRldZabxzaJkgKsYQnXZmVN1tyflbVZ80BWEHgAnNZlscTwYBafdj5Eng9nZV1WHgbP9Vl5MCsPZWV99nSzwQr/CFlvzMojWdkI1pvIehNZC4IbyNUa6aM2w2ZmeCwrm7PyGDJsYYYtcQYEH2UG1c5Wm35bVhDcBu1sT+p+R2KZO7OC3w7EPZ6V7VnzRFYez5ons4LAk7Cmp1iAp7PyVFaeRgGeoTU9Yy1zFxnvUst0I+X5rOX5XFYQfA50n094vpAV/J6HxC8y44tqbzbyJabiwQqJYHuygt9uENiblZeyZl9W9mbN/qwgsB+CHaBgB7NyICsHIdghCnbICnaY9A+rYMVv0o5k7Xc5L1tWrySCvZoVhF+FYK9lrcd5nf7gjSyWkN7MyhtZeTPbzryVlbcYam/ezgqo4V+QQpbXs40+f3onq0tR71o+72UFj3D3XrbRx07vJwJ9YBN+mAjUKRKEO0X4TjeyAnWJ4m/SukbSJZKu0a2mW8SzYiJI2B0jn0i6R+1Mj0h6MISj0iMBefwL2qDRLSpJSG8X0dtF0iuS3hG8XRR7u0j6RObOSPpG5q5IELgrgreL6O0i6RdJ/wjeLlJvF5WWWgZGtqMcFMnAyAyOZFBkhkSCwJDoajOUBIZFMjSSYSAwHARkuM3OXCOQXUZE+nJRKY7ko5HRUa91RyV8RkcyKjJjIhkdmbGRIDA2utaMI5+6SMZFUgc+9ZHUR6XVp4ZIGqJ4+SuS8ZGZEMmEaKaZCKXCz5HdJCh7ciSTIzOF056pGP5EMhUPp0UyMZJpkfVC05l4OmTLWcozEqlnRjIjMndHMjMysyJBYFbUxsymWHPg5CKZA7Hmqv7mUgFJ2XJmXizHPSR9D1jOj2R+ZBZEMi8yCyNZEJlFkSCwCOpcTHpLIlkcyRLQWxrJUi0m6dzLrTOWRXIvRhCgcx8J3kdZYSrLIwRleaROTN0886yIea9k0pXIsyqSVZFZTR2siWR1JGvwcG0kKyJzfyRrI/NAJAg8ANNYR1EejGRdJA9ClIdYsw+xYEr4YQqzPpKHI1kPGhvIYYMV5pEIQXmEwkRJ+9xoBdoUC/Qokz+KfJsxNIrMYxRoSySPRbIFD7fatNsiQXBbBM8WCQhsimR7ZBuZVs8ObnCxM5IdkexExsdJ9vGo+CJchx5PaK08ERVHHE9yQ+6nInkSKAOU7elInqaaE1mfwTdme7vDHHZF9hP1ZyPBbxdYPEe1PI9ZXSTPRfK8FScq2vELyQjzxUheiMxLGH1FZnckCOyO2po9EcdrpLEvkj2R7AP7/ZHsjcwBKnh/VBplH2TSQ5EcjMzhSA5F5kgkCByJrjIvR/Iyc2D9KjKvkNqrmBJF8iqovUY6r1k6lOj1SF6PG8cbkbwRmTcjeRON4624Ht6mwt6OME6L5J3IvMt6eC+SdyN5Dw/fj+QteJqkcXzAxB9Au2Fi2xi2xWQ65RDTKQeHlpPOOdMlJx9GpmtOuuRMt5wg0C13tbkjx/FaTu7ISfccxms56UG4vNLpmYM59cpJz5z0Ap3eJNg7B1Ywpz45BKVPjrZdMqi+Oc15Z87q664chO+Xk3450z8nd+XMgJwgMCB3pRlI1oNyMjAng8B6sB61PTin37wMycmQnBmaKw1ih+VkGJ/Ar+XM8JyAF9gMzzWyvRE52N7InIzIyUiIPIoij8rR9hL8FQUak5PRORmTqzFjmWBsTuerxWKMS8SvY+r6nNTlpB7kGtiQxvPZBO4dNDGHrmBSTsbnZFKunZmck8kMtTdTcgIS+LchJxNyMjGnXUHZvDKXLHTlZGrOTM/JNKCxcoLAjNy1ZiZVc3dOZubkbqhmVo7LXLmS/5/NUs7JyeyczIFYc1mIuTn9tEFTzOOjeXHBi63gnpzlPj8n9+TMgpzMz5mFOUFgYa6tWcQiLSbnJTlZlJMl4Lw0J4vh48h/aa7UCpYx6X05WZYzy3NyHzxaThBYkbvOrMzJSuaAR8yZVaS2OiercrIa1NaQzppcqRWszcnaHFvB/Tm5P2ceyMkDuZlmXY7m+yBL8CBK91BOHoJro9bX5+ThnKzHww05WZeTDTnbCh5h4kdQXJ+UfbMxJrGJTzch9aM5eTRnNpPEYznZnJPH8HBLTjbmzNacbIFTywkC23KtzXaKvCMn23OyAyLvpMg7E5GxKs8m8UROHs/JE6DxJDk8Sb4wjKdyCMpTbBJR8tYyqedncvJ0zuzKyTM582xOEHg218Y8R2bP5+S5nDwPZi9oE3ghV9ZT+ebFuCwvkdNLYLk7J7tzZk9OXsyZvTnZkzP7coLAPrTm/aR3ICf7c3IA9A7m5KC2ZtI5RNEP5+RQTg6DzhESPGJFfzmHoLyctObSCO6VnGZ+lZRfy8mrOXkNmV9n5teZmTCqnCAZYt4otkX97oxW8lZO3syZt3PyVs68kxME3sldZd4lufdy8m5O3oOg72vB38+Vpp85Tj9z8gG8FhJ0ykunfFln0DlvO4MuedsZdM0Lfl2AF++W5ycZeemcl255uSOvMhXbdve8lqhHnmrtiTvpiVy98tIrb3rnYSJ98tI7L33wsK9Ne2deELwzj4/P8rZw/fJyV970z0u/vBmQFwQG5OHTyHtQXgbmZVAePi2vPg2ix1ivIeQ2BISH5mVo3gwjt+F5GZaX4Xg4wnIbmRcER4LbqLyMypvR+ZITHJOXMXyCkVjejM0LStMjL2NtIcljHHmMA7m6vNTlTT15NOSlPi8NeDje8piQFwQngMfEpEST8oLfRDyaTBKT83SK1o6n5OFwpuZlSl6mgso0JpiWp3cp85rTE0oz8oXmZmZeZuRlJlLfnYeFzeKz2XmeL5OH15ybl1l5mZtvZ+blZR5D7c09eQEJ/Ht3XmbnZU6+0RB/fl5nOQvydh5q7xflBcFFEHtxXpAI8YuTOrdZl+TtqH9pHGhn7s3bUf+yvCC8DELel7eWtzwfQxxW5GV5XlbkbzUr8wUxqyj06rysystqCL0mL2sQgtBr8wLy+Be0QWNlSWgyvN8yfCBhuC4vCK8Dwwfzcn/ePJSXB/Pm4bwg8HD+KrOeBrQhL+vzsgEG9Iga0CP5EsRhY1425s0mtQnSfjShvTkvCG8G7cfy8hjTYHSWN1sQL1vynJkxBy5ma567OWxjxDYk356X7Xm7o8PWfEX0NSfoWFi0cD6aVRPbvBxxpEm1cQvDBvfGrYdbrzreycWtHBVvwFe5gAmbRF0cJ/pndl7jRnvxhj66dVCal9CEvOhh3qFkKkeThckiU5Y+PrAHmEegD0q6k1pSgqgimlm2BaFfEDBHnhpysmn+P/b+A86q6twbx2ftfcrMnCkHGHAUlGeNqNhRqYowexwpogKKXRMi1jMaOYoEFRgUHScm9hTBduZgQmI0MbFgKkTT401Me296zL1pN7clt6bq//vdz95r73M4CHrze298P3+dw9571Wc961lPWy1HGCbgwbvZtf4uPHxe4J7j2a95PrptMx9F28JHF+rPsf42PFoAOx7NgAaPPMAPfv41YiZWTtukTQoAK8JjBz47SuHRbu2SK26tQdleTWI0W/DEs0hdYnF3mcL5xgyG/W8ARDCVZ2b1eEFxUeg+NYERb1Vw182ZMvii66YmHNbqW09QZPCdrw+hsOItD7LkJvGi6/EtKMcU7stleeSHh2NAcoorso+BHi9CkUGLe3yMZ8MuhA1rbJaB5/OgpxzfluOtf9aDp1Xn/eTuudWefPHvmLEHeEmFthRfZmjV5tiRTMKP5qRJ7Na8JgLWfQ5pNQ1ag8y8dnZVrmopbpqr6OS85Ku2JYovIh6PlvntPrDaNmI7OCg8yfdvmNV3xA+/lOmthuE9HdVZ/nJE5KQ9WirS3FtFBILXILhZ2uLgHchRQfBKFsMOjorq6q1WEXwZC+nf/4Y/Zn45+5dzq9IS5UO0W4NS6WlDyrNZbiolw5awUJcn4/L8bjurXEDQO2b5M1kH28vA3giOHD+mhB/5ijTjYzI+Wtwynbiol7ZXZvnCkrg+Bg+uQCIos/xm8fr+5r//9OQv7v3Av8/F6V9AYbiEvsDhWSgEfMsO9PiC/IvGg1Qzgb/KFiXLxyhQ3OhQJxktrfPaDYocjfBSRAz48FaVgu6wP3127tl2DCrIsgIfRY+KTugpRLWyEuZHVDGOQtioEk/I5GOMdFo/rNCnBsPROQaVoeFN0hU0h+n4GIPiB0vWp9oCKEzJjg5fuceypKQcNHVG46PHDz768i0YE8j0+Lab8RJ82uD9Ux/me/EDek7ZiDHeoGaw0f2mbFF3D2kWoHvBv/wYhbBSN/A8TdMUmHn1KRieIV7iMa7DkmiKx7IXGDFuLEdj2Aiw5AaviQevh7YVPpIM3ubXMnjFDd5J/8PB281GvfEH7xt18ErBdtYM4E4O4M54AHdiABd1AI/SATxasnYMSK0rHFNdOoi1H4vI0iWFKzge7VjU15Ua2RSG4+KRPBZ1jK4fyWOlk+nTgxwQjIlKG8fjSsdJMT2YxwIn43Qws8zmMB0f49KDeYwUOLy7OKa7XtOYfqeH9y98Lj2mf+Z5Pg67CsUOZOhhyqiiAflBHZC66cYPRnFQGvFXBZXh5jKaGCV750uajIXMBPg9Wbd4cgWPKHbkdBHNN0liLwwHuS+eCrzAm9fuFVIpmnrrU2TqUjTvlCJbl6K4U4pmplDQifwUfG8JmfL9n9bmJEzM1Oc3YlyymC350iQZx5b8mC356PTCwz2ZbHgW2ai16VNx01hnf2VOaY9YVIYcA9pZyKlyfO4w2g8OyflN7tiLFSS3/KO2OTnVorlQfwAvCKgjG16ImC0kGJ/fno/plUQPyDk4eryIYtHOCUxILSlF37k4fXjwXk82zEJKz/EtV5dZNCrOj3e0bKCH+m0W4zGr4zHjh4Mpp+VmSnzOxpP8+G+OG7zkocovyI8Z3K/BcfvJkCscMhyUiCI7GuF3hmMHGi7HTpYjJaGj19xuBsnOQZP+wthhLQ1DJ71mTGYbYXJ8+0uH31X5P0QZg3uj4DP+uGr2JZUvILi10lNQHNfH5Gtw3CKtIyjDBYoG5kei70n8Lkh+Nx2R/d/riOaGHZEKlYahk3YOLcSmyGFxm5r2uGscpnta+/92y8rjW//2W8B1wfUZR3r/Py19dr9b/vF7kLhJn/W09N/Q9eH5P73+23OrkM7pzqGJNZLul3z/8/85+fw7n3saJcTZHkG2dF+1RrV8g0SAHKfxY+nPwhzl41sB23e2oyLX4ZN1pLU27uD/1wdXJt2D50c9Eu8O2AEUtoXKfhSRwn9Pe7rPO1J93pnu85bGfd6a7vNipVLT6+1SlM6RirTV9X1rWMdW9mSKDlpTdFBDCIUo4qmQDvObU5956UhRSZu0pKikNU0lLQpaik5aAFZFCrthB83KDqBrQAuO1I5WvIrPUWUcVcGiss3aIT7tBKqUgVAwQyGMqMaPehIxmZL1IqrMufxeSDIohoRksygm5yNei0EkixHSVw0DyLGwHAt7DXKs3/Xque1vv+GwdR/gGEv6lZRzxz1n/bL7rk/HlDO7Afvtaa/lwP1nZV4578t3ME+HFFJFFwSJO2s4c4fkgfyeQu2Qlzx6pW5It2yuA9NFH1Zfa15ceVO0l12lU7V8Qtygv99A/diQVRf6M3937Z9v+tET2l1JP7b3X5dr//OY8z/HPmncj63smhRz6D9uuvfbT6wfCbtYuUldeJ12U0jVUZT2FCjtgsJHVSB0paWm94vsipGedo2qEdFtiOoYAVToZxellFDYXNfQKJGjh3poUElt5VOUCkbV1jtV6+3U0hpzhMiGMcFHvhDaMMb5JTJ4//lH0jbMG4ia/DQ1rXHUNOfax067/v23xkSzKopo61+19qmZK+67JpYO/Y7Mnvz6indd+qaPkQTS9Deq/9LlP7v4lMNIaKPT9PeNx//2Pyox/Y2pob+VT8w4atJBH6qnv1R4S1rQKGF0pUAbK22be8alGrGXtKfg6JZRKXBHkUb3jsikUkOlXakiuqRTukk6Iz0x9dRLqQSAguwVkvjohI5rxU+XjKtBZfvmWhQ6yq7U0ra0pUBqrWlVm4yqb8QUZbSdoO2962BWmh8rrbyfxIG4e1n4BiJtz5F2Y7aXNjd+s6TrV2OuI+oLFWWg/XUxJDpVlRbsFJMfqdF66myQVsq5VkH2ws7WSA1VIBFSukTa5/iu6c82JlK7JulI2j2vzrbU9ZKwrfdld2JbdNW49O/5cm36n3r16ZO0T/+oNu3Pd50WLpzatH9+lbRb62C439912m/sqE3729eQduPOuPhndUM1ci77sXP5t/+wETmsV+tc9tW5XJ+CeSVyxWZq3VmeZNS/bCSjvuWdXFleSF27cWVxqk9r6PFx1Aqnnuq9W+I39mmJ39iTJX5j/5X4aa9V7HryEnhcolo3uVfrJndzXEP7N+tJ+DwZ3xtsX6vzaa7VXp1vyXvU+olvyS/EDlL1+UlPlu85dV2Fl+02Sz50XbXgSddVa503yk97o+j2Zi0ZwNlKKy6vvEeaI16Ud/7TZkuW2BKmput9oCcfpWlhxpYooWQ4P1qKoxKTjgbrAIYz4AIDa0ENmVXkY1G9JevrBVd5BkUlWOOHVebEl3ytN4qe62ydKypSicWLbXDyCCM+HyiAD1hD5BgtyqEbN77H36n5wqDMzkHdV6SDUKLeDcf8V9gsHmYV5xrCLozR5qfRlk/Q5idoS4WyCPBpv0EUK+nJ1kUpsm2eQilGuE+Ex5g2imk8jGQ4e62YziKsTT96MP/ehjg82hEadUZPB2QRQvHo0F5B1egwMZKv828V2JN1QqgTRjMqqA/2wi7rYDkFWNDIqiHtGuKF/ZjlR1E/du7GUMjY/E696Ue9aVxvOinNoExdkOtNP0XyviP5Bn1nGvadqe078RtEsOd2jiBB5ukfbYo7Ly/5sPO0CTavg4Z9oy0EBrhEQHvUDRqqFgbdw56XtlA57Uw5O4riM8hLuTlyqgunHByj2AscqyVQ2Cgpaj/op5dyZRRqXFouSWfKV9EpXspXUUj7KjyXRzz0flglupet4iMXD13DzjavOmZN3Zh1vVwXtIdjVser/9rHqx+N2IZROmL/L43X0RioCMVjtLJUzIdr3oymwrt+j4m+81c4AiLVZ3R8j9FB21NMudhGIYeGJsRAy6EtCh2bordxYqLQQorkOqKwzjTV7RVp9KNZbxevDBypwA5xDMFLOdQKKSrsrHeoKcdIuc/APdLeNE/GOgplawopCu1MU2ghgiijNFoANBUdDQ3lSTbSSvJBMfKiIVkLXnVgm4h8dTibsINhDTRT6FnfR+Lwdk5q+5EcNiq5UEWeVSRS2JXREpZRI5OtjyJb2IkNi3MQ10nl18lncik+k3aFdSpbKTr/GhHt17P/nq40pymkXFxjpZgqrShIOy7NYzgtXBzpKdbwHfFot3rpsMLmOrBcbH2NntQU5klSH0omoLvlT2+ADs6hZ/GYeYVt137uiHo97u4W7Wc8WhqKFVQgHcoSUj6qUdrdXSmn1FhpqVMC2IXI3V7nZfMY2FYXqNqcr31RTBW7l3Sl6u0SlNpdgXYghXTv7cUuG+np0pi0/BqFmLEjAAaUUBtT3FzXJE3jyq2HhERRXzG9J3V1osZxqcqUaGISUoJyJOQM2Xzwkc+Hxls+Nt6+msf7N9NrCP4S5Oa/Grmp8LMtLDIurqW2uJakuIaCzE+RVVbJqi0hKyeygs5I+HRE3x3R92j91hJUfDlxVSu+TCTOcrqow9cOMU7UFFMepbGUMeq3S7mnxjmx1pX4qOhTi0K7U16ovVXYJQ4+pe99KiowEy+e0nemPtCJFmAUUJL2xqdAmSCjNvfsm4J4P+lK1T5RulMQdnMMiFJdbanjUyWMl3EykeQ50hNTaC0EqeqLsl84gvZOxkltubJvDd66NtehTHPVt1FGpeDprGnRKOlu1AAu1xklshO8MkE6AeE+DrhEJLsVO3XsOKvjo63R+GiLCDq7G3ac1fHRtht27Ip7dXbsKx/O4jHlipArT1aunAVXVmi5WIs6a0+rDgVy7J6MEn04KNBiqwTvucVTlKaNbDCxGpby6BWh6yvF1jsHu2T0TsGe6ugYu6qheRX9zoTfnZTHnYK8RYlTtoYxRZeyI0pZQEqXqF0DXaK28HsUExVcomwYiO/GXe3Ypvr/Erb5VHM920Q/FJbB65Vfu4t72Lm4DZpKs82ED12sPWJz+pXXR3gV6EgoI1u28CLtzsKd3WdkuNhoffTDe/cg3gZz6/0o3A/ffLxl8eaeLsTFIU9hMMM8iGV+XiPuhW/56NvDdzPK6BhMSm5x9RQRa/jjisyo5Cx+o8NQL7kF9TcmdQ1qtFozQyS8ZPA0s/zvmqBJcTDd+zbCDkUMfQFcDPgEvg/Gv6H6kJ/hf4nxyEGXOVcJfoDx+Dc0aFpm+Dui/ERY8Sl2h6WlxZ2/UU6uU49i2hHDLR2ICbcsdQRGL1UdsMXg5U7eas/rx/Wyz8W2C9Fj8RvHWYey3UvG2m6M3r1oL4Z7RvYOXunU68bLdnzwmbxelTrAqxUNr1bkRZ96gf1ia8Xa7oJ0257A6BX2ZTsp1OgnhQbowWgKLxgvPh2CeiAiDkwiDuozesXnkD24r4n3KNpD5RB7mBwqhy21hwdGr7Ev2yOR78iaQw/h+5Yps/xfmTa/wNLgyzsqiT0asUfP8itEK/61x8hRvEHRTpOpMm2pnY6SZ8h0mVG2M1HyzJqSZyHvrNqSj+2Lrr0fsrOTixuPR8LjZ/n3sRL8a+f0Gb17fMj2ymwbSK/tk0D6zrQnoL5+OUH6y/bEEDkJCuYhE+5PlPlDdkFS9EIUvXCWfxeLxr/2JKRaJCfJoiF7siywp8jJ9lQ5RU490y5G0UtksSwp26WylDutIso5LaIT3DUup1fsMpS4rLZVZ6BQXKsoZw7Zs5Lmn42EZ8/yh1k1/rXnINW5vE9xyJ4nZ/HOcXsB709cat+EqnHbuLy5bJejTctrsPgWFPOW2vouREkr5EJZMWQvShJejIQXz/I3hPWBwC7pM3qv4pC9TC6yuIDcluRyKS2zA4HRCxTL9soIe2/tm6uXKA7blSCgsqy0V0vZXiNXyzWn2VXBoL1WVsm119jVyPs2WS1vK9s1cqW9TtbY6+U6uX6evQExa+UGWVu269CKdXrGzXpZv80OArTBuA2KTYCpLzcawfuNpmpvQpDcZMJ0XtzWjbwoMSL6m2nQ3mxQcNQ1t8Sje8gI3odQyK0s5FYUsiYqYNigaW83Msz7EoftbQbNewcvTkzfmCi3m9PsHYYH0oV3iN9pyvYu1naXSSjsbt4tXnwmBOUepr2Xt4vrTYmWN4rzXvF5vB/RuPsRyxZUfV8M8hq7ifcibrabCeVmQlmICr8fYLqbxYftgwQzdT2ixQjESwVgjrD8Km9IlCrK36K32W1J6njEJETxPiPhNYlb7Pt5SWJxWwj9Vl6SaD/ArWuahXclMqAgYJ2PErhH6/rhQ4QvvCpRHgN8jxO+Dxt53NiPGPmwcTcinmY/Svg+ZuSjvACxbJ8kGp9MofEpI0/FaHyaVT0dXg6Z4U6uZ5j4GeM6eJuRbab4sTAt2bI8axwZMf3HUZfeiGjDqxAtuDpePoVu+DSi9DZE+QzA2M6StxMMzG0ULeWC7DAUMHELP2v6Xon/a7LP8b5Eec5stM8z6fNGZY0euWnI2D9v5HNGPo+yv8AUXzB6moSy/i+GSZDji0a+hCRfNuT/XwlvSfyKGbBfNZQBL/BmRF6C+IKxvP6QlyDirE1C/qKRrxt5EVm/Qci/QcgjQL+Z6t9vsepvASmXMfIyC3n5zfoLEJc2ugBRrz9MCvo+C/q+w6624gdhK34Y3ov4Q2T8UdiKH5voEsQfh5cg4uUls9D+FHW4SxBxDDHr+PvaOn7GOn5mapnZz1Ot+QUT/AIJljNyuf1leE3ir4z8Mrkd8Uz7a9b0j0Z+zQsRy7wXUaH9Z+C0qPch2n/llYh6B6L8BtD91gTuGkTk+XdepGj/g7cf2v+Mbj6cZ/+Lif6b9yHKfyPR73Rk/c4oJ/s970Es/jLUYv7ACxHtH40e/v4nXnxY/AVjeAninxlTkD8a+zLb87IbSUo9rxAzryQ0vsHd4ncCb0jc4MmNHpihR2boYScGUXG23cjvjR6pMELczV6aXm/x5GbekrjRDjHlUDrlrV7fBv2v4vO6xFt5Y+I6+3YmfHuYsBD3xm24BhH8kTHv8ErRlYm38ypFud0rPhsOxDsYewdAWxCN6DvD8ntteF2i3AUY7maSu1H0ZDZysr2H3/cgy5SI69/r8WWKu0JxxL6bSd6NJMIY3LPD7/fgu1lvo3+vVuKuVNxoNzHFJlRSZI6i3czvzcjRrSXcH9bR7e5YHLEPhiFLeKMiXh/yKvZh5nkYeZoUnkqUZ8STil6nWGWKKlL0MkbslijFI17UlPeFL028VxGv70eWrZ4g1SN4+4An+NuKij7IYj6IYmYyda99NMw1037II1lgtD6mty7yssXix0M8P84sj3ukHrJpPOyHQ/X5I4z4iFfSqxcjFfrDXmfh5Eyk0Q/ugaUhGbbaPxigZ/um6tX6w7xafyuvN4d1YbL+YBa6fX69v6vyZrA89k6mz6jKPmRzfUavSV9nmxNFrIV+PFdhK9IUuIBjyLbhtV3apH0dPYPUt/We83PtqMBQ3ZbRZV5s3ln4vF8gQKNgfmQGW/DjM78+lwAndcAVWVsRwE1V4IYB3CudCt1GtnKrwsUdrT733uIcqDwBs21SUKgWJFZA2RZDhlBUfgDvMq9hnwAeoJlHB0820zbgxjzewC5jT7LjAqOXsJdD26CbWT27N7LurVkVwn20hPEsYYLATICRIPvCRtjvcTsRCBIRmThkLV57xErPOpgI+8j+G+0kiOEDZFJ8z78cdJqdjCoPlslycNkegioPUWgPRZWHpqs8TKs8nFUeITAPBuyRcqSdIlMet0ehnqPlaDlqCAr/YXLMRjsV9UDn55XpqvCfZmeiHl6UPqtsj0U9x7Ieave+HKf1oKGz8TUbXyGGJkDRP76zcIguANktgWY6Cze1TfAHR0WmbQtJW38wWOes9UKzMoufwc+Pnnszbdrc3OA1NDdn+L8zeEJo/wfZJL4wChj7xHe+/85eHQ1rYytzJVOstM19h+vt/cMg4FealII3ht6ZtjneZZqoHcTWIe3ScavtRETnHO+KqPyiJhgVM+M1St0b7RiuFVtnu5C8a4YqrmvsWHyNnUFJeCgk4Th8jSMnILe4AiS11zbbjbDuWb6aq5fB2nwpvMB2H3VN8GJ/2adkJwS4gGJf0NS+JbtfkLUTZW+ZuMqK7CdSotlJ3tWDonpw+5oWBeLan2kmIc2kEq1OstcDkebAWRASmuYgOYhpJiPN5BII7mAyxUOQ5pBZkAnahkPDpjarHbrWHh5+rlRbdCPILSNHzvCXKE+O7NCzI053FJ9nW9CgHD1ij0HkMRA4GjgVD8CqRmjVTnd7F5U0K3Ymks+MOPYCOytKfqzMkmOr9jhEHuf48Gxlw8fLbDm+Yucgbg49EQx9llboBKKHBVE6Brzfv2r7BOZoxZ6AxCeoy+FQuhz6VaDrBf8VOw/R82g6R2XNZ1nNlm2g0Fwo82VBVW/5r9hFSLyIdmpU1sl8VgwNVDllxJ6qRetN/xULlMkSmpYssmiXaqxe+V+1pyP2dIpaDV2mku0MWSZnVO2ZiDyT2y818iyVz2fLWXJ21Z6DyHMggbXYcxVD58m5cl7Vno+48zE8NfACPprtm+QCeVPVvhlxb1YZSqBDmm3Si/8r9kJEXkjPjWJ6hYJzkRZwsVwkF1fsJbJCLqnaS5H0UspvLecyPJGPpqtcPmJLWuyAlGSgYjGq5IpZKvvFXhl027eCyN9aghl7FZOtjFpYDsRejZirS7Bmr2HMKinLqioM2mtlZcWuVgy8Td5m1wST7XVIel0JNu31THpDMMWuRcjakl0n6xiyXsp61f+g3FDhDf8zacFOgAFbogF7k2GijSbYAXOV4Tcj/BZapwwfMlKOrVT8bTQViz58mwwjCCYq/jYg6DYja2CfVmmm4m91hZbqlbBSqzRWM7BV1co/lA6NO8KXYWe4Ir8SUTftVbzejZB7wpCiGqxyL0LeFYZsSOzWCuxWKlyGfpgI7+/lCz4tQvB+HxJtYqJNdNLFiTbHhjws1820X0fsA1E+veVfHkS+h0Ku8R+hNRsatKQWzVcx5NEjLHgEyKrSrI34dMV0Fv61cCQ5fibk6ioJmvWH92z4neNvfUZjkbIZLsmOta3rEU7nJlyWeeTNqYSI8nih07Q5kRR+UDENj+rgqMTThOMty4MybsYzRH5OcpHrMA9DSV20ZYiILFWKDYbz80Bxa8Sf7pptC1KIMnA1ftuAbY/ioNh2SEcU15lkKEoxCuQ04qgBiIz2WMeQrsWR/3Fs6H8MlZO9aCdqvd1JMXvL3lEx+0i37DMATUMlEFQNCgd6I2W/xXZiYNQhWbYWhdka861HshQSwuJvhpMyrG//sD4OwUkyaTNlhT0Qsl+DICPsgQU50E5G1smkLJpBCt3BMXS9kBqHRNAdKgdTWNjDoXUcvtgeAXCOhG5yZNlOQV1TWJdi/igUeBQ5RfZgUPrR8E0cA33lmOE9VFSiJhwnx0Vm22yUNzsE0C9oJJWVyNqbg8g5Cj3Nvbn4nMv+LQRP3E2J2xtJ3EDgqixRPHCwn6Cgqr+yak9ErhO5iT5LaTePaZrVYVmBTFhQ/ESIgIVItZBSMEtBdxK+TiKPy1JjW4SvRdAPNOvJmuQUgYiggMjKqcyndS7WyCVMSvmwRJZWIR5Oo/A4nYHddhkCl1UhFs6gV/NMyVIsLGC+YYoFPBdALEAwVOw5iDwnjKRQPxeqjwqFjfb8PqNOzCH7JiR6E1QlTfRmyU4jEpfLm2X5WvsWaE4XylvkwiG7AulWzPAvI5ZX2ouC3zRBCPTJxSV7SeBDAlwkl64C579ELiuB8V9Oa6GELCWaGlk2fABfAxBvWsAVcgUzXAkGeUnJvjVoVjdmCfx/JfOWCc9ldGbK1WvtNch7DZQqbd4qWaWCICvXUlvIUjCt1rjQx1mxa/jVa68jzsReDwFxA4C9oQSpsJadvA7ce12VXk65vgKpcJ0MVunbxN+aCiQDAq6jZxNyZKNBzo2mRLlws2HmWyg9hhg8hGDKBAbXi4RbVCTcZFIy4UYTCoUshAJluY6o2+lYuN3oGJlMyYCmL4dg0C65SwUEhULxkyQ2Cogs5ENI2aagqe9h2D3wdrEUAHMvv+9Fmpn8nknBwSflBmuh1MDre0yV0uK9FCYVdXlGBL2J+TexDmUK91FikNXez4j7TYnS4oGY4W8Gw5/p+dDs99yAJZRg2J2FJ/Jj/HDqK7O+dW1mfctalmNCi2FvfUISFNIc/6Wmxhyfo1TMDFK8wL/QS9TAJlBt1pmPfU20BmyrtKglsNS2BZEtW7YdIXfsAK9h5gW2M9b6h+eqfbuO51LIKFSiCUbjazQcJorWMfga45DepY+xIe9Qfl+lDSBdFcflmwbJ5aW7avdB3n04QEjPNAOirpiA8AngEehrrXLfGCYw91AArLUTkWaig0nwJTN8UW5u8WUdTD362F9hmgSLYVKV7F96KvZApDzQQQApsMlOdnJEjdMV9pDAcJJKDi3bw4Cqw2pkzeEo4XB2NkuAHGiicbrNToEwmLLCHhUYtQzK9hhkPSaVdbudiqxTkbWgAE7TIiAPZPqInaGBM0OoVSpUYRgcS6vhOMnSMCgqm5mt+dQwiEVAt8bN5aPb9tIcGLGBpgynqCrK9ovK9Ssx1y9qhnka14jrs1hYAnLSiPJ5h72TgyYy+W1g8SfLqW+pmadC25c6CjtNe5P/Depk1Ua7DEUtc2P5DHydgYIL8Y6DJvD9M6M5gbNcYGINnFP8FOMKCsm5SYrzBAKANkFWzneQXiAXaHtUFoDSCiqG3syBthxhy0swCt4SDbQ3dxYmGv9VPFWdhU909O5a91O9TyefMy4kE2qCngv3oglupvDDCe7c2uaUZtjMknevHUKhNyn4tAkKJwwbn5ow/QvFz4Ttz0IbVBdCmdP3kud1quKHV602J1pZi7REGXh0eOuALSTaIGelNa49yUAVUQN5iBqnpaUQz0rL6MV2TGBUMSzbsSH/GUvq0HrHuWLIOaJiumWcdA/YvVUb5Fy1hdNA56kXY57aKF8o24kobGLNCBW0S+h9oEqnVdhEpeuRnqiK/cWSO9BLJQcstgcGRh1VZctdYpMJoKLvYBR4MFmvfzCG5iFxTa+o64rqh08yP0wOoXqoToSl9kiUN0WOlCllexTKO0q9XXBebbPHIN8xIYR+DOHUxCE5TaZFEE6XqVQVwRRmyMzFdlYQuQrK9jiUeFwC4WzXeiqHMptswZc5cRWaaC6C5lKb8CkzeqGZQimUYNj29VEn7CNnUBfBaXZeEM1Zl+0CVLUghH2hLIz0zpNQ1Em1pS8Sn7xhJkufaU9WgF64a4c9BRGnYCgyYgp5BX0FyijOtUuDyDlQtqejntMVSctkWaT9noHMZ0QVxTWdKb46ClDgZHtWn1G2MGTPibBwe689F2nOpUWANGLPQxrMasv5Q2AF59A3oLPaZ9rlgVFvQNleiPov1PpXIPcKjgxX50WRQn1xpFBfIpdQMbxULoUSxllsuaxCpbC4Pey4EgoohbawH9qyA/geIJP2aRRcga8rZvgVo7mvjBK9FerhlSP2KsRexbxR1Ss1mjPfUh6xVyP6ak4i++Gyh2uo866Sa2TVRnstmrlarpXVQ/ZtSPW2GTSYNdmavsM5Iy7XDdnrEXX9DOjipDwoPTdQ0V0rl4auhMCHxniDrF9lB2WdDJZUY6S6eiPSQ7sLXdcUFTfxm3Piy7UcnQ9HTtUiZV2JWmSzToAnaiSLGiZUAMBNfq+1t7G021A64zjvS22Sf1Vqk36oTYaIWG5vj1LcEaJvgXMvVKlH4u92U7F3h2lWcjL8RWqKaN29gOBd1AIpb95tgu822fcw/D2mpAoiw+8Ly7oPZXE6XL0Pm0PXxGaEQTG8X90WDyCMf1U4EihCHmJJD5mSOhFYUsUEv2qyIwx3vgOGbwlr2IKcjxjBX8VUOBX+IGfDqzoVLg8gbCtbvdXQcFIGwcsRMQeuQ/5szov74eKNR+Muxvw3AvH5IVPcEVIhOTvmxMPhYwpR+scZ+DgwHamrH+b3hzlPy+/LMGmuzyeMVoTJcrx+1FQ5c46/jwC4Jw3mzSNSf4r5nwor4WDBwz4dyqRnGPGMKelUeSSXnjZ/4bmg162T/ynbmtbJmyGDbVoDf3FXGnivauAzVQOHhkG29j/QwGcmGnhznQI+U+NVAVcVrztSwGN1vEsfY9Ua3IUC3lungEdqMxXw7WkFfEGkgM/cpQLuYFIFXNXHoirgDqYefeyvMDVUwCVywzi5pYvEVtiDA8NFYnJI2R4KJB0KJGlph/Eh6n8ZsUdo4JFaRShmq/YoKN5HVCBis1wZ1qQZjkmqmCpYIFah3i3TZsVG+/QkfoZA2I6oCi6qglfssfxq0rVhldgb06R5j9e4ORC5cyqQr3MjdPa6MlXEjtg+5OtDsxNF9QQ5ofjZMHW/C1TpW7XzZF7xOaffip3vUlA1l/lV9cY4NMJVrzXHGvqCgvoKTiYZn4KwU0qQvKdGZHzya5rq2p0q/OzoEzgEsxjP/HFc59ez9NbBfLjeUtdcIga/lvU5pMhSyUV4/Xce3xiQmh5l8q02BCUjfSt+UIijfB7ec+sdE/DY5mRiTYdsRkw8saITrtEsxMxo+SanHTiO831T1Vk6bFs4IdvKlbsb6R3dqrNp2GXNlJOT2bRh24mUOnI3YuSO2hruMxs93RMtc0zfXNV9hzFMx27VGTNMPWrsXvjaC9xYS+2GCMdIlb2H7D59TbHKq7NkSzFLZrgyUyaWrUS7mKW9SdthBf9fWLNIUyYxkptCD6DaH83E6kibVzPSOM5MQdFzWFieDrSqPUIDj9RAN9COkKO26BJM5Rq6EuIYQI8hJlOH7DRtz/S+aBnmEIbVNI4p1WDPtseh+tlynMwu2+PRjuMx0LWQ9BpLLSToM2rDDmHU9CZq6tKd1FQUovAuDJo4KrZhQCyShVXOWsnJBNWLWnkKAk5R2BVFp4boPDWGYnFfm+qoQ5zEkqVgdTwkk5FFGLRz1Y4dtsvQS5jA4ipL+CbPlLOW2rMB1DlytpxThhp6LhCrFZwXDKoSWuIclVyglITS3tQXLbIc4vyULEdVXMetud6Chlwo8FAO2BUo9yJZIReV7MUKJHRQqqCPq1dyyF6O7JeDllyHlOKFOHmdnNqok1NIovFXJpIHuqe89WZ7FeKvQnxYvdiVIVZWKlYm23Jfmzosh+w1SHhNDVZW9c3VtZjDdjWwAj+lXSNvU7VzKTyUUDXlermhTA9lhBWx64CV9bJO1pd0LWY0aopQPPuSJZhD8RLMFG6Ek1lNkba50QxQ3TQ16qbCPEy1Uz2Wj1PPxPdtKPAdLPAdKHCyYgsp32kcutziy43hPJbcwYSa6k6TIO2uyG15s72bqe5mqgIxop13jzay4XLMk3axHNNoz2xS6Kl94nWzWWfvZw33EwOKoAew7tHNYw1DBQXOUysyqXviZcQstVVWtIUaqGxBRY9Qk3xEl+2xoPcx5/upgFLrfD9VTcHLB5Dzg8z5qCqWyPkh5vyQcaPsMXbA41xruY16JP4eM1VqkBmoiRxcmYJW8QSDnqDSqYQJrbIvWYo5ZJ9k/JOMV8Q9ZUAWT3M5JjTGElXJDFRJjBjtfJawTRHExZd4fRYI+jhTfTxB0CeAIF18KZ8Egj7FZn6aSzB18aXdbgQv29HMHWwmFlXu4NLKsn2OzXwuQdDzzIkVlc8bXVrJZZV4+QJyfpE5U4spmfPLCYK+QgR9lWspt3FJJf6+AgT9DQH9G6PsSKv4GoO+RgRE5MMmft1AxsTLLYftNwjGNw1WXNpvcTEll1Ti5dsA4zsmSFZVlu3fckGlI6XvEtff4wJLLK0citdTOlz/ALh2KylxKyejf5Tgmkl+zGakllViSaXg5acg4r9jzX/PlZXy96j5Z0avSTGOnf88NVx+wVWT8gv01S9Zyy8TIH7FNZT2H7iM8jH7a7TbLaMcwjJKLemfjeDvnzDY/oW5/4W5Hfv+V4L4GyPhwsqB2lWVJfvvWkSyrvI/wQuwmBLf/wXM/jfL+++IPLkc6HdGfmd0XeVj9g+koz9yXaX8EeD8ScvS9ZTyJ4ATLaZ0XPUVfr+C7ym6omCDh+8NHtUyXfdxI1dSdhaGc+N1yVBr6DrMuV0veWpR0XKhlkj3UWch3zKJpjOlTtERXTg0gdVIrOhEwyEHpIbmybBthsKi64U2cvvJVlvg6rI2KXDiN9prkiEmMrYjmBqvfKM/T0aditVkRjealG1X2NtdEb2LHavoGycwRKAlaxF7Bej6btmLio1uOpmHWV6jvryy3Rcl7OvG2n59bariDFkBuVsRritTleY0Oykw6q4rQ5s50FV7EEA+CDqcG06TUx5n9epv1BVAbknmofg6lFlMQaE8LGiKvXc6s7vATgk4nTtFjirbowHk0Q7IY1LFq8KzkQqPTHPFTw8RoRZFtKBAdPFPus5ZMosu/sftcYngmS3QioZ154lSFIqbw0ezqkUb4bpriree0G8nJyy1/UG0uqds5wHUeQ418xWQ0GwAIFrcwhT86tvfqOt8YvhVX1JQtepT+gZ1P8otdrEWskSgH2102pHmO02rO12gHrl2L9O4cJ3PiFvnw7FA/52c1Vm42fDMfN2P1djYSPzabklkJplZSU48Ug+BZMbTR1D8QmgUNQe0xlu2qTN7S3Q1iV9/NclrMYq+MhZGj9vctj72yxs1WdZmw4ZkUqv//AbvR2LlIOcE0hvi2uDn71qvKwoZ7rmyzOD4uhWFbWlkvbSrWYAXDeF+MVpC4rzVWXxlOSuukVww8iViK54WOJ/JVrpJgX+ZGy+UVf+x4nJdPDHQ8tu5ilLnAW5PMnYgoiP2AOsEwbraCYJlu5ggUNjGuY7WFavwbIivCwwjj9Pegv/p3vDp3ngiDh6vLlTlNFW7L6L3xbI4RuNfmFMf+AmduhPVqatrWUvWYomULmYtcb0hLfxJUYEHcMnigYg6sMTJQ0ZNlgNkcpXLDGVSxR4S1XgojdDDkPCwErjK4Ux4hBwqR1Q5WyiHVOwUOiCPQoKjSpwTYIJj6EmciqCpJc4BMGg6Cp9eJRuh42ImXYqzkGBWiWxD3RKHynHVkGnMrNjj6cqdgwRzSvRGMEFv8DsyCytBsvwDhZ5Qtf3SL72YB+R2j3lIMK8EZjGfCRag0AVVuvu5WvCkYJjefSuLSmALJzPBKWDQp1TpUZCTKnYxvhZXyQ84H7kUX9GSjilY0oGv06vgAD63plXijjkj6tFKoNvTqvYspDiLazijFGfjiS81pCo0pOScEXseUp1HY10Tnc/nZF3nMQK3vs+5PdHANwv+r8KisjBc1cdftRciyYWpWlZoLWpWVWBW+bpRLYq+RF3vulltxF6mqXXVXyV28q/RGgYYKbp7rWqvVCDeqgXpyo+KuvLX2DJMrZVVGFIwpSr2GhRzDYrRuFV8VEy4BnAV1wD6spqIiyB5WxS9RtZwEch1iL5OoxnMxYHFL4ej+AbE3MDFcNEi8PPtWjC0dbJW1g3Y9cFLrxg7KOvp3h90VtZiLgcJHfk30aIqp7a1KTO4xfQlFtaQvZUKqTOvhg2tK7zcZpbCugp0GxvNqHK8AEQXYt9BF3jx8wSTznsfJlQIqFfQWu4yyVzY3Yy/27ipk3tobaXsKRpTS+nON269R9m+l7W91yQM5D6Wcl9SC9GxyWBq0XP2Vdner6rr/YbZmOIBE/zmFbdUECke0oBGRta8nY2s0MQyBQVBt7tF+8XeT3De78DRBFuN22zjDLBq6OaXDyJptGHgUX4/asC3FVcfMskGGrcJbl3i5F8Z4fTDLt3tvbovDhba2tDJH9ply5lsOc2yw51ZNmyfhEEcevifpCm2kRaZD4NsjrdMkz8DRZ2G2DO0wW61ZMfyLKLP1ko/bjTZJ1zla5w9tpEb4pDgU4D208z3aUBxGRG/DOZZxJi3m4gz7whts+2mBCstuMu4PXAl2GZBhrbZZ2iYraJ99jyNsxJttC+EMy5fZOlf1NWjLJ7m2pc09ZfD1F9G6q/QMqN0/ypTfxWpOT/G9VkvMOCFZL7kb/hN4w0A+eF66a9F5X4dlpqW+2II3oso9xsAd5QabbDYSjTcvkWoaLsh37fNCG23+0bRePsGjbeSGm9M8t3QnvsuknyPVQF+2m54/z4I4wcIgsmmMpBXOv2Q5ts2+yOG/wjhOpGGQfljAsPyfsIQtIs2HAJ/Yqq040JTrsL9cT6MuJg3folGnTIvbo7D+8+Q6OdM9HNd5KuJfhExJhp0eP8lgP2V5nP74pDv1zEs/6iwNNOm+0factXIqvs1Uv0LS/8Xbj3VArhVjn9I9BtG/cbEon0N7LtI0P6bllikiYf3f0diGHX4+y1K/M8IFJp6/8X4Kky9oNv+Dplo4ZXUxCNy/mACsX9EOI28km6cY/ifkZOGXpVWHv7+gGJfMcFkGnVIu8ErqTXHtDd5XEwXhm9E+M3c+MbwWzyWcYtX5Q44/N3kVbDzjeDeirBhT/D3iqlw2xss0bcj7DZP8PefCHuHpwjmhje8vxNZb0eQ3O4lbJ/73u7wIsZ/J2Pv9MhcyFrwwO43aod3M+Jur8Qtb/fEe7Pu+h/tzZryF5yP+3nLGAWjEOq9Oa6VRkljB8fAHG6D6bsvV8mkNF7qOo013uU6UayVRPoooJU6aH1eEdjP0dNvW/SaffX3ly0wx5MYehmJFS+QFDte8Tl9R5e/7rlabIuBUZO4bEeHomM0JI5WPYa3LLklCl3StdWORdDY6d5ULXKcFqn67IDtZuhU9fxfbfdBWfvERY3v7z68f9kf7e/nOjU2EhQrZ+rUXMVORNkTMYOr0gSZRB94ih2xPUETFdltnBGQni32ACQ/gMlNQaE5kKtsAE00O6AW88JG6+A0/eGE/t/82FbWaYGFjRa/afqpTF+3+nlxzepnOTbGne7TSjdmtj6O18ccfYSmcNX2Sm/xqyHdB3K8BLoDZjbXuvlygjZR00Pb3WRPdGYip9jkxBE7352aamEgq9br6zpnX9c5n/RwvLRlgQZBB9Yq45UtS7SRpwZP/uJTQGK0ukXXNi+2pwXRAQ1luyykkmVRSxfYM/RxJh9LdPagGq5sPqPCJW6h3tufP7/rmAPff/endGFzxZ6f0MMFAs3X6b3Lta0o8M0IeHOkCItdjq/ls+LtkG/pE13vPGxX9IkqvkOq+LqlHZfg6xLk1/ZeqsVcpg/ovpttSUpyedUOyIBcyv0urFVVXtF5hAo03ivkqi3UeGUltDdNUnYT0qr8Vu012vZVfHSHSu+1UHrjRs/m5hdZPUJ1d7O9jqtcqtRx5bqKvUGrWyv4v2LXRVj5h7nhiud1Ixa7YGRwBAqui6GeG6q6I6nFKwUd/5hKmGg5j8DZhNX2FmqQtxhHk0NUeDfbW5ntVpOmq2EGDTOooOsm3k7GFK9nKek6log5vd10Fm7zwSAPXbuLjaGKKWAio4+sPnL6yOujWR8t/S3//ef2nx7vzVWuVYUtPvwxc+1L/7pwrvryKjxCSdqrtqP/uDsve3ryTY9sV95VsUXJS7FqR/Wf0T/cccZnvzxX7fBKeJzSmKrt6l931T/6o//Pt7frftGKHSfZcGlB/xnhf5+fS5eedFfAtDIp27uowI3XxwR97KuP/fpvuueIj37+2SfnqouvaqX/HHP7+Ctyv9iuvKpie8DReqp2//4v3XbOAz8/pClaP1AB05ogB1Ttgf2LDr9twkHH+jt0sV4FDGt8aIC7sa2zmpV4dV6zEvVhfDTrtOYW7ivtLDxUK3Ja+G/kheoY7IC42RdiZ6/XIXKU7+9K5ExVZt9Y5Exh5JTXL3LUTqoROZO0yEYiZ1KdyFHIxgcTVdasds7ZaBC19ELk+LIfR4DPHScTZeI2XXCZ5thWH6EPZcTuj3SQPNvCJSD7b7EHIvmBifjBMmwVP7Ho0f5bCB+K0f2ZZXs4wDgcYGj6I5j+7/1Y9KiP9hR7dGB0r03ZTkX6qUif8MppqHRaGsbp+pihj5n6SJZdF/8mZPHHyYzN6pKt2uMTtuRWfEyXuSO211WjG2243MOXPm2iovSEYKIuvF7N44HkRNdt8xzZ0vsi87D4OhFJC2UBJ691tWUkkjij/bA9GUEnq0jSrTYRvKcqo4UMCl0yTnqoNKrY08SnY3aJJjtdue8yOV2WVewZrhlcfE1X7VmOX+uGG6689uWcNP8718GvS69H7PkOfnXMVFVAOfjhlnk4FkoLFI63iM+ThMJOmKlOGiewnJQathfjFVPecskQhZJc6gQWZJNchvxaweVaTEkfmPfeHO7FGahyLw4dN2/VWq/SBCvlKu62LMNFU94SL6/s1aKwLzNC7CrNcy0fvXY1p7mrKp24FceXNYpUlHddiFQ9ewhiKkEhRdUNVbsOqdcl8mI9mcqg+G6xZcRW1v//ZcVfk6z4uw6rsqLDbfb3w22eY6OVSZ00WLjiabAFz2bEHwDDpRm/LN7zCMslPfliU21XKr31qvxwpL8L+TFBjyxoCSZqZ66OZUe3RrSpYHGrDel9d7k6KQUqGZ3P2+36fF1TiP8vxCye0V4s270Rv3ccr52pc9nBjg3v5P5+9droeRElnhehPRqbLdqjlVhuCCHrtjas10blChfqb6bZYidFzEYoQOykgkxSEaKrd7RZFCG/eXk3IiQlRCaoEPm3OiGysJEQ0fTT1Iah/eKW5C9stCS/EKJFD5ggiJCTgzRe5HhcZA+ANXqOzNnkVuRrDb2o4YVX/NqpvYV1U3vR5J7mmI8c9yEHTBfKCp3KW2gXIcfJskhOLttTwhyn6LJ2CAc5FUAoBItlcbhj302uOBmh8acnnGuZQERAQMhpcsaWeP19L9oSGHXcu0LPdiNLPfcj9lyNOM9F6CKoCoTDuXLBllg49BZcX74ZrbpjQ4Y7NOm3V3NlYbL8qWwvDlt1MVvlqbXiALjU3dwMqXCpXDZiL9eIkovQpVBVe0UC0pWQD1dSMFwub92iK/CjBvpqwrjyyw5dasJsUf89G1DQrk02b/pyrbPCVgv+r+q6/EhSiV0TvBQOmOt0wKhpU4JpcwPdImtVnqzjV9Gu50No1oRLCgyfvfbG8LmEBs06GDTVaBU+d2HezKCbEcRN/rp/f4hByS7/wYodZkiyo3M9N3QiJNnPuTbczrkm3uPvh3v8pyhkoSPf3hmCwLVQ/LqbX+qox9e94ddk+67w6934Yr73hM8F9r0MhaO+qmuf5D26jR/JNiFss5HNumvz/tDRfz/CuCOTvv8KvfJ30ytf5dp7/N2FsIfD1VgPI6xCSCvcgUqS6uLJdE16Mp266Ome30IP/QI45gOjq5/gki/brbT8thrH3T5g9ElHPBFPBzxb9CFdao9aH+PyqM26DIrrn6KVUB9AFNfSRyuhTEEhecIEvltTvwq+9ohnPhm5uultDx3uJXrb8fcxXf/0jCFJbIugeTaC5uMKjR40J59AlZ9EgTeywE+F5XzKlOhe/7SW8xn6yVnOdjrTN9Ot/iyd8VUufuL6JxTwXFQFHON4fd6M0LuOej+Ht8+zPZ83jmV/QadMvmAc0/4il0JtVhc73OuOc9O/zoACvO2Jj32BOix0aRTOddrrCEpWXUXcHMlZvIeOv0781DpjGOXqaFhpfD8cPzoJ8/h5SNu+NoP8BrFZhBTCr/xgVyJ9N5ha6auT4CtV+joTKi19+1SihiuDN3ItwVbbisStYAuauNAX6VHDXFKwNRa6bdrpncEfXrz9pj0Xuit3I3RXxkJ3Dc0ZPaAJ0eNrdptC4MsETaJ59u3/11l/eLnviKFe9Rte1OhQBU3aE+vwg7rypsoZcJkUY0o9iFp2RNcHBs/98Lsv17kQF9W5EJ0TkTkODz72+ede2Y0TMeVGbKNApkiOgZzWDwDRnl/MTfbQ+jIDxnj/6tnXTfvXWb8+nnYdl9ycTVcjXmdN94pKk8h/rMvvVverzHb5P61ym/kHdUcd8hdcAXMVrN4YWdtt4GwfXbAsvePtCf0v33ToxfPH/vdc2y9z9cCFE+WECl2QmxIHZKAOyBWcdj/RnhQ29SQ0dd6jtPjsye7uK1p79uSCnBzL8yLBKFKeb7NLELQEA0sBXKrDC3Pxm+3prrVq7+kBCxD3kThfrmnPcrjTXXXO5Ds7Nvj4OFu9kTD2EHm+25p1gVYbnr0zYt8cptSDFkZiG2+J44QXUqH6mc/zYinX9cCdhfaSIJpvL9vLgILLHL1crgoYPI8U4DrRvtBeGRh1OZbtVUh+FZJr76jcVhoF8y/jq8ze08irXUfRxpOrqzTwZBVFG+PVzpvC3XT1UnumXePsPD6u18cN+ljbf/jzLW/d9ufbPqNz7VW7vn/Wab8Y+srXX5zDCXfKXMpuiOMqhHf/th88+tDeX+vaTgF+I+fdK5Tg18tGRN9s+m854+W9K+bcuZThN0OMqwy/LpLh/f9RHIX/RrbrJLwMcw6JwvrtiL4tOb1ST5WFNK8km+kmq+C4XQUJRfntZjNlObfThXvp3KVwtcf1+BC/EYHNpHz3Vb4r9cSLm0cg4xWR79UYPahnc7St7j6K97iC7t74gB7dWPceyvgtFPD3OgHvQ8RHenLRPkwR/bCJ2UAlqmkkElxVo7BtoYjfDEmv59FW3YmzFYr7CsX9SLLNbo0b1bUSf4lb/jxiP6QhlPiPqcRH2g85if94WuL3KhBPaGGU+BT6KORjTPGxpDVPcvltKPF1wTOF/dOU9/Mg7QPj1jeX7cfZ7o8bx6Q/oWW7KfURyHxH1rrSGYK/CqnvGJRb81yh7Pdlh2s5QOHcejS1rtJf1zxD8s+D5A+SZc9l+0WC8sUElC/FVby43X6Zsh9ifgVXP4fCHsL/q8j0AjO9kKhWfxN13NcSqDmH/jVOo1c4h44EL6JV34jjm3ZwJj2cTK9yJt3HXHpawH1bEaKHzGLufISz6vxDcX+bDAd33mwlnFiX79Ug4fuGa2F/wFl2zK+XdF6d0+o/Mo/ZH3PBw0+i6fMh+xKzv2RmxJ6Yn/L7p7F+VOTi6CZdHK2T6JxAx8vPoXb+wgTJpHnZ/ko1qV+BqjXrP/AEll9z+lxXQrsZ85N4mqzRw2TlX5CVU+RAaky+v1EkcIYcr78FEv4tabqbJa9wltyX/+DEhVb4n4bLdP+LS6P1pFnOkuPld+j937PGP3CqXP6AGv+owP4x7srLMF2eGItcFB3PmCdqxCvh7PkrCN3AeegNnjoRNfuNHp/Co2XxepMHM4aJNjJRlORmzzXCnSg7YoeYbMhL99+tHvtPJ9Vv9QY4qf52TyfUH8NsOvovnkkfimfS0X+a9w4v6LJ3cjJdT4zlnDle7vYWYNKcx2pz5lzu9cr2XV6Ignd5bgi821O8v8cTvL4HwL3XU6q4LwX6Jk/wdx9iN3uCBJs9mDfaencaLDYVE64HHYpY/ENR8Q9HhVY8wWsF2Uc8QeQIiqymKtriSdWTLYh/RIvnabB4fR+Kfz+Lf38KuVsZsJVoDAPW6OmwnYUtJsPrFVrSUyCyixmQ7niNz0uvRDtn4yUzutTUufty/e/40T5jL5H39Opy9BEuHCj+Kiy+hUmKzkcZfqleXbXtgahaXbKd0hlV3d5ZeCHb7ut9ENGRGrQdOIMzseaQjF3M3KjAn+JmbhwrclDrXE6ub65bPV+/ufe0us29urWXsBPSzRZFSBElFbSoUenTkfWgTZ29mRFL5S58dakbEF9j+0Q39g5zY+9WXfzKaR2dwIHifd/NmdoTMhbWnZARnZGh3SEixa+HTm2Lkiy6Tkvq0QkiavzJuRgLG5+LwfQH6yqA2jsdFja600FRDEzzHM2ZbX7UsUcpQRytj2P0ES6nr9pp+pXszk1O0JwmM7dw6fxmeN6wdJbH40B/p/Z+lMyuqsrOaryomjla1Fx99OojSAp2x+P0yglbVEfn8ThzdCeuL/NYmIkKm+8YnduKq1jlHtwXoz24C2VRNZ6iUdEQrxWYWVC94FQS5GKELS5x4WxEkKd2Fr6TaVU/M3+dmIXMD7an6XhKQzJ2bqZ6EzahNLVlN+ry7lhiqUsZuTV9S5/o2BuOd7z63PHapQp4OykN9BHNR+qO14U1hyGHlDbGqexdSiGcFiAF69TjQtsdRJtcyzrvmD69hbMBMl73cmiT4EVWco3Xb0dcZT99xLMD+mXThwL2cJJg/6TDJgnImjvRRQ7ANGSS9CABgXN2wJfJqNqZKAfr2NpDChceUayMjKQtRzlQj9ZH/Vb0LXYaCHhaxVH5S9Ee9KrarQqKFg16j8jrWEQd64qOVstMLijnmB1M0QFQooc5IpDZnYXnc6PjRV4xadF10gnyasGvgPfsnnB5JRslM7coNds3t9E8RbPGtqSJ0O2n9qUQT98pmaFsTd/eJ25jtXRuVe7pNn2MCn69degVnxSXnDa5qPFpk5qjG0T44o0ZUlzMJGX8IjshMLqtumz3C3PshxzauolBuBdgm7ViZeIW2+P6jfMRnNKOvCFN2j3IcoCjMm5MwuQTaUrJVsnKLXY72KV0c09JyGECEttiD3cV6gHYI/ZIlHEkyii4M72nBB/+6Gdf9jlvQX+JTloswlKr6PThsp0eNmu6a9aMpJ6ZgvmLKolKYVSicjAep4/ZLkNy2NhxMmdLPG/R5IDp5UCv25S0uPHMhcLi2OiOhI0uVFh0utvBAufHZnuyvp/iANK9SNx7cLIs3qJuj3R/LEXAUuJL/VPN9rQQgNMiAJq4Q2kz5zXsGVGe8MQxe0aB+7gD4f4DObvEZVhK/tyl9LPOCTqI2sK9etloDtAL/ZPqscxHG3pG4QyEaRxmiJf0wLprV9t03FlBOrb0gJ81u5oDzARN8QHxIZlnbKt2Qc0R8Qt3OiJej4lv1zwYTBOVda/mOfZqQ7DSrj6jU7lDdlxfE9k2vZDKs5fafQKjg6hsJ6C0CcSpgr6vPlXxqNqJiTNSRDiSIoVjOD74KgOlY6K6GFfzUimZlBR2QPTEaJIDRzDDx5E0eZs9GMz64C3caSOHpIpqwmTfdOXQA/ZwRB5O1GgRR0SALDlBt/ZVVRdJkK782iH96D5xp7bK1K26eARIj+g9Y6eHqlI+ngnUdSOL7bFBdIlU2c5GY2YnjVGlhNB6URFzVNviQkbbK9FBIfNsX2B0+JRtP4roRxEK04mACUsWZd6QnY8+qZnyW1oz5ZdM9526TXWMqOKo5iXB333mAJ3sK+mCEDRNo04PutQ7uNqeATNKN+cM2LMUweEakJI6BB3dnYvZ5rnqDizb84OHPrv5FV8XfpR0bs8VjoUfdrksf5xrEN2Zq9q4i0IZ0ak+wI166PbN8SIP3RmjizxSXXa5Y5J6e9SInrLlDjK6wglVrvvgppy3akS4Gaca+wdXamBZH1c7DqN+wYqeyb1FZ/PcOq/V4UOPYq3q+g+3vuW68KHrP6q6D8ctdFmrj3X6WN//8BfWvNiy+fm56hqscrXiR9bcse/nyy/MdbtyKunJvf7MH967adOm7811ixUr9A2ulVsQPWRoDRu3euVWo/UMR8+365Ouwf7T5vxk9G+fS1yDPGer/8f+V99z0bwvznWnH1ToGHy7egTvNP3n3NvzrkkLvzk3PvdAT9pC8Xcj/h7Tf2+43OPnc2uP8wYY70L8uwndu41zo6qHsNedgFBJtuks0c7YpA4it0dnxN7PFPcbp+4+wO8HjBu4Dxo9yF8vqILTcKN9mEkeNo6M3NSgaCXqNhR3b9WI3aLVujnCEXgOtb/fH8VsVUeg26dTobMQkR80VboL8fc+hNFdCPdgpDSJfYzuEBl7w1d/MNdyqpAew2py/lZRB9lHuDNnW7wzx9mnH0Xm5Q8vGdP/rblug07VPslUT9Kdq6meMir+ntZGOV9iBb7E/u88vvkrM9/1yeOdS7EKl2L/9EN/O+rfXz7neLoTkf0TCIVDEX8fR65PReV9OgHd3VxV1VlE+VTamdisauhnw3xFt0+nYp9niufpOdYUn1NadHdVjdgvaB5OIeL1i8ijW1Ga6VGkUxEhX2EpX9F6mNvNJBY15Qtahl5cBf9hJdycA5ciOWAh2oTy9VAKc1usbtGhPzGSxF83WBXaPjG+zINyPQOV2fAXveUg78fxJkr8iohnmjF4bw8P6uxIX/DxUtMu7pNcggdRoacBZAX/X2hzQXQ7Tdk2R4K6WXdxL4Gox/8XQsZHl9OUeQon5bWW0K6pQq25opd76Gm6Gl1EQJFkmKGRN0oyPFtM+CV2dJ/oZv7heM1ohmtGp2gsJiG36glF072ZWkl0t4cedaALutyJG/v0iWoGw7Tattp9EbvvdO8wjcWdMVvtRARN5BrYDFdyigpBXdA1YHsYOlP1gatVH4gxwAsmv0b1UG/70OYx+WHQDCbqmUara8400hoOC/bTdVyrseLHc2e2Q02YcjWv8pCjpnuzNenRum7KLf9B5FRgQiuZppE601i2MxA5Ay3TyJl8TFUt4Go9yl1PXpptjwt8PeZo0T5O/zquI9PUZDy/oE3TSybRoEzBLbPV+z4Y6LvAHXYuAucyELJcYe5VjIXKw9W2D4X3xTWnb6SMV3Zut/PcIk89OElOHG9Bh7JAMaqlLlT1hsoF76RUzWKePSUwqneX7WLUtBhqhrZ/iaanTsHTPHW/wzy7LDC66b9szwwbfmaUYzZUbF/nFx1aGH8WEAO8ZApuzb5e/EHY8i5wO+//kHMZmCv0f9MeM7j2ex5WGCHwPAZmXeAOvRtEcYvWad0XBL5OUdbUfUFcd9BETWWbnsWklcRKwQa981IrcX2l94hoJUlfrUDgCu3AuLMu4gSuqJJTspco7jDXyZVKuql4oS0FRtcnle0VIVxXxEi+UpHM2U6qMLpudZ4tB0aPZCpTY1GewFauCoyexlS2q5Puf1vS/dhALGtk9Xh7HSC9Trtfs14feO6ophCGta6n12kTkhOb2K5kE7GbxlzIHRXGKSllXYSkemm4mWJbch8m11npSBg2yrDic0G32NuonmzStUjR+H8n872T+SJwbzeBpxOY0FOSPsV3h++GWa+9k/nuNGxoFKQHhm6Oz27SgaUx95ho6fTIbKfMjECZcZ1OdSac7RxJridRDKpO47K7K0pG7KYke61Ok5H7mT3MfDaUGkqOBxn8oCnp+qZIejwA+XSfyVAa8YdGNk32vvRspofzRvgfvZMJg8yoMENTj5nOeEfBFEuQSuEZQz5Tz2s30oStnNfajBjxS+JFSWVutfhpIlwy/Y9/69xND//q+t4t1dS1/clkQ8V6bbS05xmzNgo8otd6gM64z4sAoLFeErJjBajBfVgg3tP6ChkQSaGrKbzEm//woiPUi8AnjPEH2bcM7uqBvrS8JxOYebSR2Gib5XOHYQNFp2b4DwsKCLe/Sq8j36eA+GxI1JKldPbiZJJBohISZ1OJNYbZe7xSCJHgmYFgZ6Knw0Ts+jqAC4B4FIoVzAIWv38jUyUhJgl5yDf5SGkIigM9nvZ13Mxijx9ICZoh/npQZzCVHz3+Ke1N0Yoxnz2+wWfjg+/ediuv977lQY1gfs1gc+JJhraYJzkab8AHXrOjwjKQFg1glSjDzG9PkL9G2xI2D0dJlFCOYrKWzLg2KmOzPkvIInt0cGpe8WlzeHqrxJSC/0ARzS6ZCbpLTGZzSpFgX5IFtJLTaiVHWsuhNzJMl1xyDiDyhOC7ZtQtIQTgvbwIHnnrcjJLVq+wl1wS3cxohLDgdCqODpBiUCzFzpnCc75H185r7aHsIjbQ0WlOSXTA5pVG9VSaZFy2hkhpkQyxnwPWbAtDSKEIIViQOXyICZFZAupYDaKkJaLUEImoKBzUrmj3Iq3i87p9upAWjicWmogF9qeJ8ZrhayZ8NdLCenp8rYnpSAGKQ9tKWP4CFbbwtYWvdeSce1VyzifknE/IOefIua4PF4E1hTTtYHO+KcfG4qHb47lEK8ZL8vGW8cqFPmU8uvjC5NbTLtYuzTg2FLMc9nyK7zAIHKeHw6OHer+/aDxSc5AoMsmVTMRvSq8Gq4d4wppLw5pLw+o4dQ11F/atZax8Cp4XAYm7jr3kVWNXvGrsxa8a+5ZXjb1QY8emYtH5J2rokcYMBk2UMy5CR5xMZvx8yBTN5mn6I5jepNPvOvmuQaoAsbuOHXnV2KrGLvd4epOCIbUEd2EtVx/2bSbkt//wuRvdQAARZUbdFNJ5obYab4tWcEUiiJsiBCWUEWoKZjOlUIp2ekzxeVTM1CRDT8xFpEQ8R1S6IxCfm1cwFC+RzBev0NO4rcV/YXEKzz8YL4sRk0huT8cFJLemtxk+uIfJCwdQLi7N5inJObh6QhmdReO9WjmeC8PFlxzGVSS9c6kk4ZjzBnoINoebEdSistxiHAoeHhoH5dQjtxJPOznRc/gAHjiIDNu8S7IovBGbOvKamzryRm1q9TU3tfpGbeqW19zULVFTv258PV1O2+Vpu3zXnowiIAsEEBJtLdW5sI2hUu1Tf27QRhTCNprGbTQUjDkB5thGykm2MVciTgUPlY8mVBGpfKd5DNI2M6G2OGnqnvTdhIZ9J2805vMGayobKvm/PPPZTVPfiMznJ57H+6Mc/F5DC1gbndVGR8aGNSl7uJGSkY+UjGbaU/VKRnOkZAAjakfndjaiTRhOd/ZAT2w6mxpMcagqpjIhpnJqSGdCxVTwyCSYyqgSk8JUho9MginW+RfTlhqyvAk1LE/+elieT5gze8Ty/tOY3OBuhFWaWHSEmPS40N72GvY2akvGhXnVcZHTcZHXcYGHJ1k+8qnhwXbtgu/l+cjvCft74zZ75PU2e+QN3ezq62y2Y4vv8D1es/fX1nBtsaftz8M+zUWNR8FsfE9zmn1JzrGwXIqF5XbFwgJwnkIsPpu37AEOU2Zm86swTq8R4/SiWh0nbK7rkuaYhX7PmGyiMRLrfphyT3hnZhe8M/NaeGemnndC7PCRS7PQXMhCGymOkZxRp2EtMz3RkMgaWuu0pRNpYr3ICTwJ34k3QU3gX5qMh5ljyplaxdplyDgVO6s4yynOciHO8sRKiDOVK3UIIXHF8iaf4CxfhzPiMy95J29ySrUcG5JPyxvKdJU5IJst0lznWFI8NZQ97/V8baiSQeNmyv93zWQj+WMLw27LprpLUdCw6TGLyqmgzW55tXbWFoMkKbQxXyM6esWE5ywSObscKJP2EC+ZXeAl87q6X7m1Q0U+NWRsc8y2WtJoVBy1bLHNodc9xYa05XVsSBHgHEWBBJNiF9z4yJ+so+QOFWVhuh6vQcoef17sVc9ErlaP7FFREyqW2mDkzmjrKHRKYRYglEyglJq2ES/mHGYg5vQJxgonGLPzzEwy5NHIIjgmyyHE5MrERcr1jDJ+QdbYqBBnVv+vKJiZOgXTr29RVpvzKppmbTtP8DgluSfYikhe/J1w9VJjXP0vCxSVJJka/0PSooaSZJdYuhC2nFFtrX664aXtbsWipKcgKj3epjgm4KypeI9aP9kP7scTlNt0EN3i1c9PkNB0zCjWoqEDGHTgZGIKyzSYIvWJmQRr2Xqs6UxGTGE66rJEgSfZNIWxzSpQcg0anKtpcK6uwblHbTZpcLbA3mFrI2w3FETnNcA08Dr/gZE/vPLKv26vpHB8yfjXiOKXjUNxt+Pju0extwsUe68FxV4Kxb7g4dWimKoh6TjV0lyqpa8Zt6pY7h63cX1zgdn/t3GbamnuL4/b2Q1ljgqMeq6zYYtfy17O3wUTxv+HMnX/707/+/fdv/bc3mqqnB5fS9JuiHu0uhN3vvwvULhfcZOZlV3XNLZ2TmmTUsY+taG61apx1BcVPw3Kerhxhpd3Xdbf7TrqN7uO+sqNu4x6YddRX9t11Dd2HfXNXUd9a9dR306iDoGNU4u7SHCI504v0cnLXU73fScp7RPGZAb/2sRPNGWwaTdSY/tfMexK8G/cBpC0dtOAv3LqefiNjPyX3+jU83dv9Ab85o3dAAq1N3gDXnijN+Brb/QGfOON3oBvvtEb8K03egO+vQcN+PJfvRqUKNa7acobbW7lO3s+t3Joyu7YVG94LLJ3LZpw3afnRosaJ9UaHi666tTiv/Jur4d4N91+dBo3tLCfvXbLblA0zXhrNSWTNMaT9aPM4lc114t/nTjThjTE3O5GzKJ4yk5dx5zifCQfb1XAqt9g0CZrqnXajov3nw03xzSlJu7k9ZbVv61RWW/yeFoEcnhJDn9XRRObQIH0ZJKZFw3qlswW6wc6x5g40gvrDIpvXJpHQDvZS96RZrLb7YLCfrWKs+GHbVNi6NQS+5pm+PEMsUnNEJvglw9vbDRD/FqQzv8comY3RNTi11FW8OKfm7gkvlF5+6E8FvKpZcVfvCs9gnQEnP6apy44NSJ+/4ce5X/SW63Uu7Bef5nP7nfLPy599jNzG5R5cb3bNUbCjt7qnnlZdb8YR80rc8scoygjMPhsv3ZVRAKFYe+v2wGbtHlP/K1Rg7O1Dc5qg3fjij0uxYJ1l1yyFa6eF0eHK/8i5sWfM75u09szEtDW1VNVqql+g0kTv2bSxK9Dhv+ozSTIyNQSQKYWHxmHj1qK+5LbbNh4/1NCiTGAS9Zyr18aNO5JTfOSDX44P/al5xJOwp5XLtYkIRHE+3i48Uwxb7Nxmb1Ld8SImdy7pfjpmilFybIRygFcS8gCJtepD64Ad85tRTvu0l0N3F1nfF2D+de+z7PNMzGBSCMC6U4TSHoRSiIULoq4+WRdO6CrCJIOOKe3CnFBeLorxSfDsjIKYkZxRQwD45txiALKVyBrGW6udr3ozVwvmg+G3ndz0n8ttcDVUWLmUZtPKDFfCHlFfkD3bRlpQf3NozbGPe4VuNQBlbHMdDsc4Vca1dDkamDf58MddNLER3PY+mgCFxWf3G6kWVoGEJFJbWLNCIGyTRz8hOC7tyBZKFH8BvjN7IRM8avR2jQlPkmI79vsa+8v1NcNe/bTNcD0f3vVyKB37m/m7lkHZ1OL0LSD85Kr7eDm3XVwLkF/Tjs45zoYHSD5mg7OsoNz/5MOzoU9qx2cr+3gHDs4L80DiKjv4FzcwVnt4HzUwZk6DIrvcLjLXv2h5xv0qb82zQd3K4djrUZq+4AyNCwnEwLWQz2vQVm18o387lR2Gg898fhojoZNE0FprsveXC8RmtAcq9VikCsRUxxnrhqwPj9LEIeSuXLbZtuMjNHmRQbYZuQWHykjIWJbiPJoUOQjJoiglmqsWUYklolIzEd+Cp6vfLpGo/QjOim802+A3bQq7ChyT7CuOJ+0E87N/6M47wk1XyN4THZqvRgcvfP6emOtlxw4MLzFj44bGN5QrN0H7k1nbHwY+Fzrc9j4vZqUu4SBsJL4DTwgbmtwlHm/uRXdIdxg5vLTbq5RHVV/baoqt4A4OHejY9a7NfTKtKf19AXn1vgrbmUC8etqryq49/RuecO0d/H4Xz1146mLXmd7z5twxMj7+j7/BupfB/EetbdiPG9XK9xe3B4r7h1OfX4pJfZ3b8Motw5u3OAtZEvr+Yi6ApRF6dETDZZif9zD1jHvtdi3uRjdudeObrpZM5IJ0Z1JFgyHWHbyJ0cs5fcYSw1kjEmwZBRLJsZSfics5VNYMjGWqJbrl+RTa5gz7NxMwojxf/GFm9g8Sozid8JXRH1Lz2Zhsb9r1U0YiFcpEzx/xzCkStCkwkZlCoWS7tvQLWq6PYMSNXjkFVPCQt7//GBoZeqGsabUSS5NtSezNBFoLQvlv2BYy3IalOmVvjSv4yLcamCPCUp1O0CgC/4Xa0aj/tkzLYPJ7hICyQpI+qmDHnrwTxGo0obkFQVKWRnquSZuUrM2iXimaD5pPO0mybvmsaG2FQE56rQ5ZGyxnh8Cjgy0mRRGaS1x6LJndBe+bz3ngFWFOKtF5VR98EKiy6I44zz2AYqJisszLhnFFNL8gWLzWp5BQU1aRmxEzWMZ1ieEDFIYdQsfqccXnvARwRjxC5YdTQqgNMSrJt7s0P1lz+QTGvJeGw0tdySU0Z5ISCmreNehntOBn1ciYG82xbSRjygBHaW0EO4Oak6N+IwjIZ981A8TAyjlopk4GysSDd/tpiGfCAKea1djS1OESC9UjPQDr0VgLeK7DRZkZx0qP++b5gSVmT1G5SSlW7F+7S5aRbMhmolAopkYJJqb+QQaHZm3uJHbHG+wbQ5pPEZPJjWGxU9/ePyo39WQlRwMc13eT7B1xORdaaKBrsC6b899u57IwTjsIUa4TUSPIeKAUjAxGppRCB652l1sSvrsnjyyXBZ3Crnmyvgjh4818Qcwo28IFNbgTh0ia63bsgWndjwiWlw3Pp8xrUk35va4Gw/TbpwcbbzRbhSbbTAEtFObo05tiTq1tb5TC65TW+Oh0lrTqbl0P7LPX0d3t4RFh86ZnmbX3S18a3H1iAa6quq+M3Xfft23V/tdIHVKq5JDc0QOk5UcWsOKS+Fdf3g0S4YPkgMeEOV8gEL4aEmIowUFnB2TQAYfy+MPf5dk05wmm9YU2UwhJK2kkNaIeupGf6SKtfDRkiaigiOiR7KmLSGi5j0moqlKRFOsrySVUZJSH5gSkdi8klSzklRLiqRaI5IqRCTVVk9S7Y6k2tjvLQCirYakmtO0Qor7ixJbIawU2C4M9LQ6YivwreAgEA10QNR95+q+s3Xfmbpvv+7bq/0ucFRJmxJja0SMM0kCRIxtSxNZWwlxCxwB6feS+Duv344Oc/rtSDGr344aM/rtCNLXb0eTHr8TstzRRKAaUqIK+LqNYEq6Dai03VFpR0iVQbH4E6qUhR+ndQF5LbqAT+LL1J0ImOMTxJev08V0QUQkAuKD18SzfnQcHWtIH7GG7BkmTI6iU8XLlZB1JXi9e1xGdA4hn5Q5iVRSnybJjPpWxpqagtledLXrFZRqolIjxKsvm7pWTnWtenRLhO4CP8x0TxD1f/xw6iq360MJadX9RWak3PqVnPq8XYdnFsc+aeU3wr2Z2eDjf2THhw45amMuTcalyQS/2nhzmCZoCmuLFsboUYSkT9KB41e1y2Va6k9+zAiwaGJFpMUpIg22nWKs2HBfZmgNxltQkSerirOqdr5uHnPrY5ziLRltOROrqszvfqry6o1DSrROXep8zdecalFrnNJYQF/W7T1ri/r4P+ZyQ3LGb6NH77WePDnP4dzX0UdlXkh2v/7WTWnXYTYaljozgAfCkrPyevKYftEx2tMSmT18FCQcvm3I0A6MtQtPKFWIpD08jjAbPGsICEmwowEJdtSQYEcdCXbU+YXryM5PyK4T0AJVpKnO4HNKU51Kd36CgySRHxNeJ2BnHWo6dSZ2RlGy0VGKvtvInGb+vE8JBBHpQWTB1IPaImprdcmyJLUs4guojJyf3J7nLJZituWjqKxSGYBvZrKILWRTVJaNqWzY52VO2nNIirYomfG16MgsAp5Suo7SgAFwcnKZ9rodj5Ir/MozHYPpoxvdkYlqSSt/zkb8Oqf9n9/ZZPYU8h7OFrYsHN/TOsCz0PVYUUBG9YKPdslzkqcDncCOMGpTSV7JSAkpS7eIkY5Fof+9M0RGk7Sj8lbtuXZ8OhkQVoz0TBYujGkgAxxHzrmkasEljm09ajSVSdoQWkix893XI53UNSnoiGxTx9Ifoch0bi3Vw9S1gueLxLVJvBbLQz2sQhznYvOYQigfj4Y/Uc8nBgFdXuDQ8ULc+cCdegbxiA9fqXcIOug4WOJ1iH4tY41sZ/EE/+RrDtNNTufNN/CqKXj/0QqvhqfAGBZlmE69Ile4aprA79ASyECHpZXG35nnccjG5QZmUf3ZumwaAB7+hw2Ow+kI8YOf33sjwsiad3X26O4r9P6yFX5jJzrQMYbOUzpI6UYUvTEd5CM6oASzfkIH7sCBxDMi7G7SQ9y5prZzTbpzfTENO9d/tc5FCdq5Km21Buin9V0bChdWoUozXSt+7Mi0YX7yB34YpzWFQ1OMUi9LppDnOK0bbXlHNN/+/wqlmf+rKM00QOllrx2lhirlqr9irHZf8X8Tq9kGWF3++rDqX/E/x+pCXQYaStzDKHEV0FPaG6/o/P0fhhut6KS7/989eJ9SBTU47fjFRqKb1VlfeysR4WytF7a7RWV0a72oyVHNCf2qSKzmbyatG4aWUAskEXEVnYHN+qxHwZ24oQER5g8kD5DxlpZUFA+Jyao+U6pR2ZSRpHoELSj1pKuZ+d1lrvPdlJkXQstkOp/Twsp91EqHDCtqEZ8inC3nxL7klLQkr457RxtpKV5oUp1qAt5fyprWxgsI2QlOpnfThirGHaADIquTDz3ZiEzzVHay4dRPZMM5emiO6IFm+nsr6UU/4mluPWg7qyKoOWV8aLTNE2kGMNfo0y8tI4jo2rQyklUlRLWPxFusI0NBITkYah4BK8smrrlWVambOfDVYROumMAjGyt5IErLdmakNeqUnFtNniIDHT/J1oTBuO990SOz+cimFJk6aFN0S93lCtukjpkM+UC6prrdD4nnA69/wjSOmvwsgg0ySh9Ir52GmFNC6EPlxg/NzysSJtRmXDFpdLVKa0N0ZUN07UzO2QR/pF+L5BYD0WbcJKXUn8jvEKizg6+KuQIpo8l5tWtt0h/5XgfN0DS/gmJnyifuZGdmIjvz/hc31ByNVu/+0TkgHQsR9duc8qrk8P26/iRzJ+OBva/cJxPiL68zAgVYF4rLdmUOoXWhV1HQSFqsi5F4zyK4Uo8fm6fFBuZpscY8LdaZp8W6mVziUcz4HnoT0A0d5CdXs3g375OSffm6rlWV/gp0CAIo3dojyeZEkldQKxLevzCpyh5pTUwfEF8j+aNUnZY/bs6is0AswEph8Cc5gap9sEfCw68X8T4FRXO9oGgKST2jm5RI6s3aPS2Rk4eDUTwKiowFXaY4gcqGVp3DU9nQWnf2ZMIN1NGfnqzUanK7FAqtLICQMVnWSSQndrTe1pJkI0mQQ4ZaSZAI8qox2YYbc8hJd2vOxfu40FnKQU0oUH0FNKMzHHhknFN5N53teFfamnqXnsPbQImrU978ncBzK9sShQidpss2kgOn09NuPhllXW81hGoaVKC4viatT+Wkl6y3daJgT3IxdZx1RHP9L/aSiSXMyF9nL/l6uPPueulkY9Yni6MO5kKhvg363+9eadqYel8qLuY/GJO8L736WV3V84zxuWslKhElNc1geDIloA0li/fV4Zswem1G5Kg1jkGnb6XxaEcSxPwuQczvGsRKTy7pKcc1dZuf0phbpuxqd3v/4qjB+AKSiz0PLY3b5rFtnrbN58sOvMSatpc0JlPPjWrXRifnrWa0linGG4wksKdOCfYj8j4xdHPtElF1QxTu8bwWwLXrBRnkpCypbdRQ5Bmu4et8eXFZvOSkWe8QagnCq3GkVXKq97fGen8miLZ6aSdxhiTVdbrMmpYZHi3UffPikd1bvY2tCV9SYKeozyrN4/MSzlm1MqQ1sQiaFDBPJYmb1fHqZnWc+GDvXhbZYkz8hInaXYuFebV22YbYLnsk8f2oXXajU3P2D5XvYIT/lnA1OirqRpaUChUMIvy7cxDx9ozPoe+O1dsxZ2c74ks1flg3HaNHTpHm67SUfEMnOtBjFsTd2NMckrnkVKfgnPiE0BCylL0ArYfqKn4nje8pWJOsfGklAKGzq5X4xCcf6VUuaRMBTeeMGfmnjmddZxfvDsjykdVDeJGuMK8dEKjpSCuBXDPtfwWU1A3UDZvoBg2HLhJzLjNlN9apq62Ruvr7jbem+7E1nhZpo/bevJMesY/CTkwpVgrxRB8xp1N8BUIBCIisSI/wAUtajyBuCuKhu2O/YFvhKwZDWoecwhp84LscyoTgnV5qq2h62A/Hw/6l+pXhagG6i888gLiNzuCaGjY1rqGhJ+L+zzTYW+pqmOBq4MAaypiZEUnbDO9zzeocKhTCeOZBQEXDBk8g5GY+sTh9A5+Y3Vgb/KZJb1vltHQz+xGdZiKXBLkRApAbWC6EPRX8ARNSSN8O5V86bKd0Er9ttoheKIJaWd4oxI8q2dEy2o4JMrZLxkhXyY6Nih4XFj1Oi2bAXoHhterSPWD3lr3tPjpNNl7GWziN9rETZKxMiEreFxH7oXRcrB5RSVDlw05UVqD3q5esRRrLSdw/NtkevPeU7P6yv52E10nTvcnBoD0ArwdM93pZ6oF4P7BkD5KD7GS8Tp7u9UegHay3nfIuVXuoHKLXqi+yhwPiI+RwOaJsjwxbcySttJtDCKYEx9ujZIocRZAH7dEo8Ojp3jtpzbDQlfYYtGGqHCNTj20iBtAVdhqfa+10ydkZMoM3qxYfuJGFzUTumczNvHjYWeziYxF6bMkeJ8dFXTyrs/BY1pwc04EfiM3EV89lozRZkgFkO6mgGw8QQZdkdRVULppg5RViRQYWSQy8q7xFk8CSBou0Bf1qkzbqT+1SkHbMMEkLr9bnzJkUF9pRgdG79Mt2TIibMcCNltklXSxzrIy144AOLWwv2YtFd+sXCIBF7yPdss9ASAPjCjLOAm7SQBsTtdl9Ueq+rlRcp0umMFELEBEWYDVlj0wUKz2Ruadh+2u2STKJ2XCfruxfAglMkgPRY5rkIE0yWSYT3oMFV+0PgAYmyyFwABU08lA5lJGH8auLV+uSIvRe3YUgAqNEULZHh0g42oF7jBzDfLhP306LkNCFnp9upxVkGro/KzNcQ2ci50yXc5bMIsTH8qvbHqdJZvOafZld08LjNf0cmcP0c2WuHF+yvTJHel0LA03SJ30E5gQ5QYIB2y990p+08EQ5kfnnBU16RS7oVXG8QBZw/dNC/TpJcD0uaEq/FskifnVpu04OxJ6CJp1S4i38ESWe3Fn4gDHFhGvJLpjWBOVZ3cqyuoK2Wk7VotOzOSXQHJHCYYJq2/hos+1c0yRtMPdv2siaOpC7AxSOgjrx2lkCzRYhZ9jYUYBiNAJHl+wYGRNBMaqz8E3PHJncZF1MXWRNCNvwAITNdA+hRg63w6nPBd0K6iqCKvlrbQvjmzmOGF9AfBtBoyOlXdqurR1E8wBNkx0dGIAySsaUbRc46VjQQhdpgRXxQmoWtFfQraxzFUeOdF9r9wlZJ7nmeLuvTJB953OA2LEFDLqJKFEwIqRsLUqzrrSewOhl0yUMiwxZZJvCewAiDpQDlDtm5CA0FTRb0FwYHoQBPLL2sulmDIrDGHM4YhyfBOc8csBOkSmdWFdjZsQ4NcAp1VmPm778eOqOuIXixLIyerltNjB0N9ALktcIYJYRpIP81VwVKHDPztY4SCulA34RxySODmlLcDy/jlEpm2JyZVNix+rXuABolnECPiVjI91zn4LGdSMOWJe9QVQaEqFfxoNsNQTua+0IDgqGOIYVZFK9EfWHpuiRHqbYPxD0x/4y6WqwqR45QCXKgeKTVVEYa2rILQ7HyfoFboU1isqtSugQP+oQOdSh9HA5nF8Z/TpCjmBlR6IjpsiRMqVsj6LcCpr0AnA5ajyYlS9TUWVYYZudhqTTETS9RHEV9dm0zsJPjdnntfRrcSgclln108eNz+mIjns5yNsWXXaKwYORw/WTzeGwzsfzvu0I7JD22gGUdG7UtYc35W0XKXKsdMnYMoaQL+MUj2jvXvjaK2liN8DfG0F7lyCL9onA7+4sfNcr+Lj8Ph9ehZ9Z34JfFu+53bAImOC8+x1t1aGDNkp2hn+2fuUlzw5s1i8QNHiyEvSA6l3S9pht19gOQUtn+Mu1uM6+JrbYjpKiNvc0aFxGNa6yHRsidmyaaRCle+lXt3Sznr1B13sPsJUUt4/ZCVoySNZCy4JY3U8mnmElMHo5fZnE6UqEUsUyJmkeyNKtKknBLhyPINdYRmJlgJJnsz1EvyBEKVOXFToLn82Pz4SY9ELM+iGG/fWj8MtG74pxvmeRzl/fht+YhOCkMcHpQOy2GQJJTzi/lMoySmXdyksmh/NxLQNKaFJ4zLZxeehaoN4nzps1LXrgYP/sPUF9gn7/YB+cRPODkTB/t4wj7wDi95Z9zrHjA0OeLRPKQP2+7aagicErireGo2QigJhIKdhErsHOsD3UbRaATRhlE2X2wIku74FyIBt1kH45ZeYgOZjKzCFE/mP2MIUN+oscvtYeoWmPFOgxJDJ+kWcz51H6dbQcTd12mX4d0zeoyiyIGaNoGoCcBsGN7tZyp/cZ8IjpMmOtnYm4mQ6LUGaIhWOBxePkWKgxx0FtmS3Hn2bnoDlzoazMLVvFYC8wqJkCCUg8ffoFrQVwqdYyQG3FzpN5j9n5GgslhRUsVDigoshJ66CdzOcl/tBJTpZTzrCnoqrFcqosLtslssRVs1SWsuDT9Ot0OZ0FLdOCwnv819kz5cyt9iw5Tc4q2bM13TlyjpytpK4B58q5hPY8/TpfzpfzEB1FXiAXsHPepF+4aJ81Lpc3yfIB+xZ5i71QLnzMrtA6L5IVctFae7GmvUQukYtd51wqlzLnZfp1uVzOUktyGS/Pt1fIgFxxir0yMLwtX95atlcBn1dFDe2yKzVXWcos42p04DVytVxTsqtklayEvlfQdNeKL9eiW8PPCXZ1IPZtCHpbya6RNdFQWw3+32Y+axK1bopT61Sdm6zq3CRV50QN0Akch5NUWwJ180vCmbpmylRKAnV9SQtXuanWND/m+NJRtp2cesJkyAvV51FrMTKoRwnGZUk1OgKuJUEUUNShFukK9Uo2biyKHydjKeRVl5pv9w6MjsuyHR8N4/FqrnbbCfiYAAxiziiU7DlK9sPwxejJdj8EgmfGY1Ts/ES7KttJyDwJwLap/VniGMUAzZFHTi5o4ycjzWSkWW8PRsTBWrjWfQiiDlFAujh8qWQdBpGmw7dsjwg2GJogFORqfyyAIDcqyMt2KrJPPTHOP02mMf905NchWrYztQ0YmzKTygaNjZnx+JTZ8+3xIJE5crzMucbOxWuvzJXea2yAKvokkL4yxmROTiDIfiF4IuyRfu0Rjk/pL3GIsgvmo+wFGIwLZYGOzfl2EQrE2JSTr7Gn4PVUOUVOvcYuhpa0BOUvxe80WSynlTEgl8hSOX28XRYYjkcMxjMwFs+Us+bZsxGEYSjnlO25aO25rrXnyXls7fkBh975csEqDL03yQXX2jcHr2z3MfLeLMvL9i2KAAw+CS9kNhiCOVmhDdKCLpKLWNDFRBsGolxStpcGzxmMwEvlsgF7eXC0LcnlyfBb1Gj4aY9yBCKuLCulXLJXo6arOQRWsvxrAg+j8BpZtcpeG7x04zuBwdWKSQy9t8lqDr1rBetfrwt+d529Xq6T60v2BrmByF2LktZG9C12HZC5XtbJ+pIdRMQg10NrzAZOmm4wDkc3GrnRsPKbDFu30chNRjaasr3ZBL69xQi8R7eYa+0QlbtbjQwZudUM2GGj2d9u5O1h9tvC7O8wcpuRdyD7O5n9diPvNHI7st9hlJrvNME+9i4jdxq5C8F3G0HM3aZk7zGCMu8xV9t7sZrcvsvIvUbehYLeTYDfbRSBfq8W8x4T5Ox7jbzHyHvNKntfBM0mA9RuNrLJyGaUeT+C5X5D/G4KgXwgBPJBIw8YeRBlP2Q4eB428pCRh9GqihEUVQEQI8w6YhxCqwYY3WKkamQLSn6E0Y8gWhSe95nIH/x+I+8z8n6UvZVwbzXtkbH6AXpsP2jkA0Y+iHwRY3nUKPF9yAj+Ho0jivYxo/U+bgSvjwO2D7PKDxuSZSbqy4+wio8kffmEkSfCdn40bOfHjHzUyMcAy5NhO58y8qSRp1DW09zEYp8x8rSx24w8Y+yzRvDyrFlsP04cfsLIx418Alk/yTo+yTpQLe3AiC19ymi7Pm0Ef58i5OBenyGQnyGQSKoJtrPhO4xsN7KDqSKX2WdNsLd9zshnjTxn1Mh5npmfZ+Yw62H2c0Y+ZzoL7zZmr8YmhuraVN45I0LRQ3tRBct8mBEGcsSoVl2mz9i2xVufmEdtxCZd0CAdsWYno+bb0QBnjIyWMdfQMlRv59jAUGbIuDLVuc7CD6fN3xuK6e2xTdAMLXY0nwj08JuJXwHfmUEfv6w+keYyhHcwDcPCpxdqwItcuGq6ubr4vsH8+izKy4eacg5h/PbCeA/pPSeF2bmNvStTVRxPUXF8GMXxDF+CJzaS1+SV16j7ohShrkW4wgYJC+GqLLpZpC0S2lMgkyfVWmGL6kxs9QaSQJm8KwgtMaJR7et5MLqMmtNlmiNUZCMCGR9MUOUYxNEXCd0Z/sw2EzGBqWpTZ+xE/QqdgMuslYnUkVX4zreTUPwBMkkOKNsDQ1gOZO8zg5rQGTsZKQ6WyXJwCQryQaG3T30ch2IMqfO3TOvZHoGqNSdU5eLbqaBTTbZHFCB8jwJ4R5FbHFW8PYw5OnIAIlM0Yo4JDqXaDBk81U6nv3eenYG6Z8oMmVm2s0LoZsUax7HB4bU68rwaHZn6sYnKDZAUkhhiuM/2ywnSP8+eiKTzIHvnlSOhC7E7ALmbUzcdG0EXHpu/SL9OlpOJvVNkEYWwKsjzVQhT8pbtaSF8pznsQUNm9kgcyxklSOTT5Uxibxmxdxaxd7acJWeXqSXbcx32IJUVe1SP7bkFORfSOScXAHsFJZM3RXTzpqi2KRDYRYpryOrlFmJaLpxnVwRGleQylOSLE3RcAh30UrmEshmq8WVy+TxbCgxlswyUIZ6vcE24Uq5kE96qX1fJVcTASnkrhTMkc1mung+RbFQkl+21IUzXuuyrZTWzvw0p1kA6UyzLarmOGHgbMXA9MXCDXC83lCGd19p1DgPrZX2EgUEZtOsKss6GczMbKG+0FTfStIUkvpHy+GqI5eB3TfZmSmaVyXYIYpnSeB6EcmAoj2+lBC1DIhNOSGUH6G0UygT1HUYD3kmxzMbeTllt76CIhmSWOyiX59u7WODdFNByNwq8Rwu8JynwXgpnFvgupnw35TQkdMm+h+GQyUABgoiD91IQUTy/l5K1DAEtmyihHSogou83ETIegFxmZEE2h0I6Jw/GCJkAUa2IiYV1icK6ElYyElYCyTxC+Vy2WygkHqGghlyGlHZC+VS7lQBDBG+lIC5DHqNhH0wa9ihlMA2/DxmwnMcolFUCU/ri5cPmHAjdwFDSfoTCtmw/qtj5qCuEYvdjxA6l7qATuiX7NMPlaWIHzY9E3DOa/Zkk+zZKYsLwLGH4OIWyimOIYsHLJwHDpwgDxS6Fb9l+Rgv5TFLIdspbwrCDMEDG7qCkLVHgIuq5GAbXDc+jLorb5ylxi8PsjgJCPs9O+Lwh280WgNQv8PsLFCBRzin2i0ThF037/4+5twCzK7muRnUP3nvboDEGxs6ql4l/syf5YSA0reSTRnbMdn6PX9DwZ9KaxNMT2SFNRjCiETNLLWxxi7vFzMzMTC1memtVnXNP91h+TJo7X9epU7VrF5y656691y76RJp1ur1OtxPRKrBeBdarQNFsUIENtoCb1Y3JrG7KgclN1HBzDpvtrG6xs7o1hy05bGUnt+WcvO050HVuRw7bc2ZnDkzs5FvLLo3I7hx25bCbhfeo0T3ZeOzNYa8d1H3q6P4c9uXMgRz258zBHJg4yEE9JBGHcziUw2GKOOIG9Ugm5GgOR+2gHtOgHs/hWA7HqfIJ5eNENrEqfFINncrhZA6n3Iimbz6n6Q1gzuRwOoczOffldlbjctaOsycB6ue5HAfsfA7ncuZCDudz5mIOTFzkE39Jml7O4VIOl6lpfUruqs85D8ErEneFspum78tXSaY313K4msM1vv9dl+wbOVzPmZs53MiZWzkwcSvX0tzW69odNXA3h9s53GUD93K4kzP3Nab30uFoah7kygfPPkMa28McHuTMoxwe5szjHJh4nPu6eZLDE1Uqw/2caetRYDsPbT208ypNe9Gp2nslUR086vOuhw4e3vXeMB09p3Unj1p39tDJQ2ePvzk88E4Xr8J0ZQF09djBZIfz8J5ndzgv2eE8dPfsDuehm2d6eujhmV4emOjlcYeTOn089PbQh+r09dwO52U7nId+VmB/lRzgob+HAWx4oPIxkC0HzLI7nGd3OA+DPAymrCEehnhmqJftcB6GeekO52G4bnKH88wIdWIERf2aWzUaiJEeRnpmlIdR3jRTpQJVHuGzdBpHa0DGeBjtYQwHZKyGbZyHsZ4Z72GcZyZ4YGKC19JUyztoopSf5KHawySqNtnDRM9M0dhPdl0V0DTVazaE06j/f91M8zDVM9M9TPNMjQcmarwfmBkSNlPCZnmY4WEWhc32MFPCMDsTNcdrVjRzPczxMNf7DzMvmcZaaV3nodZDHbWe72G+ZxZ4WOBNNQs9gomLPPCz0HvbLPYwzzNLPCz2zFIPTCxl+8s8LFNbZZjimeXSY4WH5R5WUI+V6s7KTIdV0mG1h1UeVlOHNYkOa6XDOg9rPayjDus9rPfMBg8bqMNGDyy2kcb4TRrxTRpxN3ebPWy2y2BLsq62ethq19U2D1s8s93DNs/s8MDEDq6rndJtl4edHnZRt91uXe3O1tUeD3uswL0quc/DXg/7uK72Kx/7ta6YpXV1wK6rgx4OeDhIWYc8HPLM4WxdHfFwJF1XRz0c1c0yHPbMMXXiWLau1P3j6v4JD8c9nGD3T2rhnPJw0jOnPZzyzBkPTJzxvmnOSrFzHs56OMdmz2t4z6sDH/CzPf2C5/5eVOFLHi56uESxlz3wzmVWq3c9r/fSF7grXvknzVUPVzxc5RN+zSsPzXUP1zxc935hbni0+Nz0cMPDTda+5ZXP7KhfJLe95CfJHQ/83OZI3fXAzy2m7nm4Z4fqvkeA54GH+x4eeK3NQw8Plfq5eaSReKRB5fp9rIvHXmlTfNY8SdZGWx9MtvUrTDsf7XwLhvgWDPHR3kcHn2CI77rR0Qe9mzr56Oibzj6Y6Oy3NF18yu/qcyze89HFx3us0c1HV990F8+xm1/a6Hr4ci75Y9PTRw/f9PLR0ze9fTDR2/+66eOjj+qUobtv+kpePx99ffSjvP6S1D+TNMBqFJiBPpgcSK+pQb7r1mDfdWuIDyaHsFtDfQy13RpmuzXcxzAfwyl0hA/WGuG/ZUayEkb6pR11lI9RvuRX+S5jtI/Rvlb+GB9VvhnrY4xvxvlgYpzfwoyXthN8jPcxgYKrHQ+n2i+t/Ik+JlqBk1Ryso9JPiZTtynKxxS2HDBLSk61Sk7zMdXHNMqa7mO6b2r80sqf4WOGn6z8mT5m6mYZanwzS52Y5TfaUWf7mO2bOT7m+NPMXBWY6yc7qgZrXjJYtT6YrKVCdT7qrB7zrR4LfMz3sYB6LEzWwCIfC32z2Mci3yzxwcQSroGlvmAO9W25j6U+lrPGCh/LfLNSM7fCz3aoZOZW+1jtmzU+1lCztT73wXU++FnrdzHrfazyzQYf632z0QcTG/nyssnHJskrw0rfbFZbW3xs9rGFbW1VK1uzVrYlrWz3sd03O3zsYCs7fTB/p9/J7EoWy+6k/3t8MLmH/d/rY6/t/z7b//0+9vnYzxYO+DhAGQd9sPJB/11zSKN5yC/tlod9HLZTfMRPXph8HLVr5piPI7457uOYb074YOIE18xJ9eCUj5M+TlH+abdmTmdr5oyPM1bgWZU85+Osj3NU8bzycV5rhlnS9YLV9aKPCz4uUtYlH5d8czlbM/U+6tM1c8XHFd0sw2XfXFUnrqZrxrmhXVPeNb/BVnE9GaYbPpi8QR1u+rhpm75lm77t45aP22z6TrJM7vq445t7Pu765r4PJu5zmTzQMnmo7jzy8cDHI9Z47OOhb55oAh9nD3jboHzNyWsvmnYB2gamfYB2gekQgIkOwdfNuwHeDVinDE+I0gaU1ylAxwCdgkrTWZzPzkFJUpfAadQ1AJNdgzfMe4HrVrfAdat7ACa7BxWmR4AegbrVM1C3egXoGaAXhfYOwFq9WaQPK6FPUNoq+gboG2iW+gUuo3+A/oGmfUCAftyhAgwIzKAATAwKWpjB0nZIgMEBhlDw0MBO+1Dpm7wxBRhmBQ5XyREBhgcYwYZHKh8j2bKypOQoq2RVgFEBqihrdIDRgRkTlKZ9bICxQTLt4wKM080yjAnMeHVifNBoq5gQYEJgqgNUB9PMRBWYGDTYKiYlgzU5AJOTqdCUAFOsHlOtHtMCTA0wjXpMT0a8JsD0wMwIUBOYmQGYmBm0NLP0dTRbfZsTYFaAOawxN8DswMzTzM0NSg9xbSKnLkBdYOYHmE/NFgTcKhYG4GdB0NYsClAbmMUBFgVmSQAmlgQ/MEvVxjK1sTzA0gDL2caKAMvUBla4FiR5ZYCVgVkVYBUlrw5cs2sCMLkm+A+zNlko65K+rw/A5Hr2fUOADbbvG23fNwXYGGATW9kcYDNlbZGWWwPwsyV422wLsJabUYBtgdkRgIkd1HJngJ3SqAzzArNL2u4OsCvAbsrZo7HYk43F3mQs9gXYF5j9AfazlQMBmH+Amh5MND2UaHo4AJOHqemRAEespketpscCHA1wjC0cD3CcMk4EYOUTQRtzUnN+MihtaKcCnLIL8XSQbEgBztiVfTbA6cCc4/YTmPMBmDjPlX1BPbgY4EKAi5R/ya3sS9nKvhzgshVYr5JXAtQHuEIVryofV7WymSVdr1ldrwe4FuA6Zd0IcCMwN7OVfSvArXRl3w5wWzfLcDMwd9SJO8nK5j83LHeTYbkXgMl7bPN+gPu2qQe2qYcBHgR4yKYeJQP9OMAjbjEBHgembQgm2oYtTbuQmrcP0S5E+7DSdAjZww6hjd+ePijvhq6tjiGY7EiGZacQnUK11TlUW11CdA7RhdW7hq6t90J0DU23EO+FpnsIJrqzrR5qq2eIHiF6snCvEL3YUgJi9Q7RO9RY9gmTfShE31CT0y9En9D0D9EvNANCMDEgbGEGStigEANDDKKwwc4DaXBYmpwhIYZYgUNVcliIoSGGUfnhysfwUJMz1PZihO3FyBAjQoykrFEhRoWmKixNzugQo8NkcsaEGKObZagKzVjqirGhJqdJWYp0jwvLVzUx40OMCzGe9+yCh5mgshNCrUZ7XR02I3YVojrExLCDmRQSOJgcYlJopoSYHJqpIZiYGn7HTFMHpoeYFmI61avRHNWEDhuYIakzQsLAZSlUMTPEzFDgyCyJnB1iVmjmhJgdmrkhmJgbvmbmSWRtiHkhaimyzo1eXTZ680PMt6O3ICzn9hRiQYiFHL1FyseisASO6FleHLouLQmxODRLQywJzbIQTCwLf2iWq60VIZaHWMG2Vkr9la4lVVqlcVgdYlWI1RyHNVJ6bYg1oVkXYm1o1odgYj3HYYMEbQyxIcRGCtokQZvC1Fq2OcRmXiSTsMVOwtYQW0JszSZhmxrbHmJbiO3h22aHRm9H6IAa15edSV92hdgZmt0hdoVmTwgm9oR/bvZKhX0h9obYRxX2S4X96kvS7AHb7MEQB0IczJo9pHYOJe0kDR0Ond5HQhwJzdEQR8Op5lgI5h8LO5rjye0TIU6E5mSIk7x9KgTzT1Hz05J4WhKtuBfNmVBmorPKPst5OhfiXOo2fib8cFmPXO4T/zuMbmhsdGv+K41uJZtbecF5cbRiiKKwsTdVSzlrWGObLEWZz94nPlx2/bnPfJRMnqEytjXl/2Xv+G/n2vwlUzGz/0jkN+XKUYzpIMkP+beY5H0uKfMhhr/2Mq/553+F1/xzzmsezmv+2dQTNfF5honLPZ0EQwIuY2Vk/yH+kN8k5/ny9i2IQltyri+Wd3hHHmZy8LM+ZnJDZLn/aj7Iqw+m5WiN7PAvolhohJiFpirnqdwzvHqmVO4jLKfxwkdaGXpe42Mqp9dX+drXctRCfILnH1h7mWo857zuA/Nr9sp53X9PXvep7zCebUGyRU4ugPh0pfkt25/f4lp1FQCoumEJGtgcvQL4bW2LRrvic9oUU1ubXFzYtK0pNzS3GcoT0PynMnIuPo9QprY8Pt+0l73zBbb1hdReFlr/VdrLGrnYN3+Ki71TLk/j2pf+14xreEkGIlf0f8O0xmQ5XkF5a9MMYeJyhmZylA/lKO9Gz/nJB6a5u2qBFhrLV9G8sXNLzjm3VJqvW22/no6lHONV/Zss8S18E9+qoJntG/i2xvKbGsvvaCy/i+/gu5Xme/R2+X46lnJCS8byv+O/m++X4fu0soVyQstr7l9j+jVu7ppz7QY/LJcz2g8N/dCcD0xL81cs9tdsWI5ncn+hWe1HVO5vE+XytKzBWdbeomVNUmhT2/mumvy7BI55HbSuVcjzDP+jwlSgQjq34pK33i+tZVnDGz+nZe2n5me0p72Jn+HN5nI5Mz8qw4/odJZzTmeVpjVbbu1als8ZYaBf4OeGvi7OptaSri455+lSaf6dZf89HUKZ1DSEb9srmdQ0A+84U9o7cmtpK+tZC/m1NHZr0VTQglYS1FGWNInqpJKpi0uF6aJ8dBGszyz1sKtMEjKndZVFjRiPNZ85mo8V1UOWNDc9sqr11E2COda4FtK2pklyPc1sbKn3S4i+8lShLFdEfjC+84NxJjaZ15gYmGsus1ojq5rr05BcOo5Dc5z2YXKCkVFtWOby0lwuL5nHS6UzoqXVRqtFa0dzri7WiCYL2tfMeFVr6NyCahdJ3fm2YKKuEsUnqfXJ8nMx1qnFGdIwlZMxTWJSW1plQwcWjZ9zYNGbyExZT6z/Cq1omJX5rrxm5kqEdV3BPIqodX2vzYTUyWSm+ZwvM03qyVJhFiofC1MzjVN9kTRYlEveX53+izUMS2Rakx1tSS71XuEwLFfjqdcKX01kMdMwqGHnriLtV0v7NTlazmgeo71MhjEm1lH79RKwIUeDGDZQwEan/cZM+00yg0n7zdJ+i6xh2ELttyofWzPtpek2lbEGMWxnmR1aRTu0ivR2qULav3bKQjaLFrI/adKk7TslI1l/GsloIlto9qrW3pz7rnBy92lU9uXsC+N+3d4voen4HND4WLsZbWY4mBnNWtJoxhpH1Ufaxo7IQsafWTKPmRMSeTztZ96clIE7tY+9RaOYk30mVz63vl1bmcSSveZcDvycZfdoDOPnDFMXZArTE3mR5GSaw3BRxrDWsoldVurnpl72NRnC6nM0foGJq7nmsoBdkypltNbJCJZzRjDcoJo3peBNKeg0uZUr98xtGcXMHVnCZA9j4i57eU817+doDMN91nygmg+yKXwoS5im8FGyMB7LIsbtSTaxRzKG4UlmDeMO5WmH8tBeBjDuUJ7bobxsh5Lhy+5QKpkaxCpKBjG7Q3l2h/LsDuWhqyxi3KGs+au7l+1QsoSlO5SHnrrJHUrGMe1QXrZDNbKRcYfS/b5eskOlW5SnLUo2MWcjk32MiYFec9nFGpvFtEFlXRrqYai6JPOYMpxpTGM0QvYyGcJGWEMYE6M4RlUSR7NXlYxflWaMG6MxmcCxMoNJ4DiVtOYwjKfeE5SPCRojZmmMqu0YTbRmsYmUNUnWMTM5G6MpHqakYzTVw1TdLMNkj9ax8s82NI7RMAYmZlC/1Do2M7WOUbvZmXZzZBTT1jDX49YwT/YxUytbV8ku9pqZLxELZBzDAopY6Lq4MBMiM5nt4mLGMHBGMixhF5cqn4ayZGtI6Op335HdLKTlTE+2VyYoSNfLNYfpK+EKGdEkcqWX7GG0nGkaZEJb6Zk1sqLReAYm1rKb66TjetnQsJ46bnA6bsh03ChDmgRuUsnNHjbJhFZhtigfW6QjszQNW+00bJNBDdsoa7usaGZHNg07ZUdz0yCb2i7dLMMOz+xWN3ZrqbqtZI+MW3utBW2v18rsk3Frv+xq5oBsaiUjWktzSEodliUNh9nkEau+jPxeui0d9cqXNzHHZE/DMQqj4ew3nOHMnJTtzFnNcIrCTktYYjijsLOymaViznnlx5uY87Kh4TzFXJCYizKPOXOZTGVMXKaYeom54qFexrFK2ciupmJkJjvaxNnJzA2ZykpGsubmlurdlikMt1nPWsj0HZyMX56WsvLPmXsyl5n7MpWlJjLWfai6j6yd7BHrPvYEPWsSs7XzRIP8xK6dwE2I7GRtfS3idj4XcXvZypyJTOYxJt71X6OBjJJlH5NxjFC0w/Q7+6UF0kUWMi4Q2cvekb2sq+xlFaab8mkqa/jt7Mxn3f3017LMZ8862xl6smQispfUSa1ocrUQg94Z02ppRtO+5bt+ZN/x/dR6f5nW0J+tD1CpAT6fDOaUvtAHyrCmDg9SC4NlLHNWNVnUmBjKDtOk1sii5jo8IuswLWsjbYdHqckq2dVQxSZHKx+j0w7rGzsb/THSZ4zV2k/22rFqKDG4sfp4lRgvjVXTFZmg4ZqQNV3to9rqP1H6T5KlzVneZHVjYgr1p7WtkbHN6T89E1Ljo8bqP0P6z5TtDTOpwCzlY1aqfzJDszVDc2Rzw5xshuaq/Xk+5vqYl81QrQxutaZOPalTX9OlK9Pb887yZhbK+GZtbjK4NTeLpW9qdqs0S9XlpZm2y2Ryk7bL/WSH87HC2qBWyiYn49tKX6Y3JlbTBrVG4tbKBoe1FLfOdX9dJnC9bHASuEElU1tchdmkfGxS95mlDW2zDEGNLHLY6tMOl25ozhSXbGgyyOlmGbb5MssRPPJLG9oukfl3Wzvbbtpm9/hy/tsr85zZJ+tcapTjcByQVgdlmcNBtnlIw3Eo0/6w78CCI76jgB/13TvhMfv3WZnkWIR3eYN5x/2mva16J6TRCTsnXqL9SRnqtJhOaTJPy2YnA91pn9Y5MHGWi+mctDkvIx3OU5sLbjQvZPpclHlOo3lJi+myrHS4zNGsVz7q08XE2b8iDa5oTJL2r/rJnph06XrSpRtJl24mXbrlg0WvJYY6MPuW37SPw8kl87Z6RZk8DdLc0Tq7q9y7VOKerHQJBnTH//8dBHb+s6/r6DZhWT7dvf+MuNaz/Puf+Pejcju3ruYxsa2wjYiTn+B1Ifk/n2BgOdZPiZRl/Bs2uOfIrTGdyr20JOVZN/QGqZj5ef6lBm18lgzs/9JHbugf513VFPYmmUWnr/Th/3mbDl1bDVG4kAE5MqJ3nExBrFH+CWLBcH+DWDDcXyAWf+wH/BOQVlcuX/VYrLFvMVlAodaGLSy+5L9aiu7E4Y8V6+gVliCnttbGSP/gS/6LvP4Qkx+iU7z8/5n8MP0SmWyKWKDbF7nKn2HyGTrIM/kRJj/ygv9rTH6UyY++4DcVg/cnWYALXWmmtNmQNi5emfNsb0GGeM4xxCtFJUvIZLaCiJ+q/mmWsLTbCgPCb9C28mntKkabisXbKl04E20nqineZ7KZCG17rgzP0aU9tnx9fc+pUJ7e7c/Luz0NZoIvNCeulnHH8GWFEhJ/LMZX2GcrOSN/6krkT3WJpPAUYcN/bUEKWcYgs116Me2S0DZVf5klfl+RKioItb2EP1CXXlaX/lBdsoyySgWqMK+kXRLX03VJQSrMK2V4hehbLHJZXt9yrkt/Wv5lQ1qZHNxdjIrm5lU2ReANLSvNV6nKV6kKc77Gql/jnFrZ8nCXVl+3VwLg1Klv4usC4JyTewvCbhnqZjv1vVKnvo/vq/qfs4RoZ5YC+n3BbgH+XJ16TZ36IV7DDyvl4W7+Iu2UWJ+uU2Kfmb8ow1+Q+hnjr9kpLiat7L/hEsum7G85ZfRxJwvtRw6Ga07iWcY7w9+5KXudFV9Pp0xQnNSrcFet0Eq9ewMVhkCcI6K1MD9jLQvFVZpK27vKUu/ewlusnnm7V5D++ZbonwH+Sb37hXpHVA7/XCn6p/nXUu/+Df/meicimvnXMvwrkblYVLQ8Ypky3m6WUNHamHd44x321aITaXfbyjU1hetaCa4rOriugbu7kLiWKT7nvN07pd7u6CxIznq8qzcS2U3YQneBc8Te3iIqp5dxebkLkmslDlrkOGgOgRP6xkRfNtFP0lOv9n7C2yoFu/VXExiYNiD87csOf5NH++CMc9bcOrSrdBkRQvHNGtHNpOZIAQVOzCiJqRIQJ75ZVebD3lw+7Bn8VmnGO5xofFr3eTNBsibknGOeRvrXBMrFhOU4wHJy18XExFVbbqC6npRLFozwufKXGsJzJabZV810tV0jhA41bHuGa3tGpvdMjW/KLntLfu7FRn7uGu4UoWtlatVybc6ZJ5yAOs25dW3HfJZYoBILVCLpycJcs7wYZgsTL3eLxgmK+67oZBkgV2mWO+WWp8p9i+hceSBgboWwudYC5Zj9AbmyM7ma+q1Ra3Ji/5b0UXtE6Zp9yIF0Zr1wuhShY3sb1V7qnk7vBtfeZteeBG8RPlcrfI5nEb1itqVx+J5/pYTMjRUyFxOZ49eQSr1qdgrKY8YYwnLgZ2euyuxWmd0s86r0kuyGbuxxyY1dF2ppX87J2p8rBdiVTzuzD1Au8Tl+9lPuIck9JLnOvz0mUscvvbKypPNHcs1y8m0/IpyujTmmEsdy/KpzT7jwu+OCs4ibuYyTQu20v5yS17s5LQSv5NDewpzViAmyE3BHD1I3Yudz6Wbj0DsJvKiSKXpXYS4rH5cFcTJL2069AHeH4uEKZV0VjEcUr7T7XBd85/YfQXk3dLNMGN9N9eJmLo1dE4trcctpciuXKnJbuJ5eae8IsLX4nnzd72bg3mvyck883PGQGjxyMh5lvUnAPXpKCIy12B6BvQrhe7zVLkVlEGvE5PjuXN/T6h0E+kmHd4UMdZQDvOkkXK+E871GnI86ENHrIlyv0rznhLyXCbEwn3ToLmSoh5zf0YM69FQ+emY6aOfoxerolVXuLYxPGvSRBn0F98n/va/nkD30pwYDpEEK7lWaQU6DQZmQwYL5pMEQaiB0b4gAPlJwlY9hqQZlpZkbzsaE9Q0X0JcwTnTnB84HvtaMktN5lRC/WgF/owT8jZHze4wxhCVelyTbn7Hqz1hPmmg5j1OJcR53Qfdz32aO95rlnXe8qRYaWIL/vmsmqWuThQFiMrsm8E84ittMpnrlgXWKF+jX2kyX7Oketw4ntsbjo5OCgG3MTN2eyaZ/LXtbmeWVQ87ys+Qp/xaBQL3rWh/5hjAgaonK1EmT+QIDMZ+aLHCDvCAb5IWeW0Vylhfm17SvXfiL1exiNttUWjU1S5J4sfr3jnOjN8sEEAoAZGK5922zQm2tFPqHlWxrlcZwVdKS0D/X9uqs7TXCALVK1mrirCe9AwLlRc/EBq6SjRK6ySJ9myh0sxOyOROyRRCgVslWrZIU+6sw25WP7ckqyRbJDrYlHHCHoMAUN3BgYK1gQO6XdikEIivt0fUeDUMmYK8gQcv7kaSngYKvPR0UxJFMa+tdb3k/0vq4gEEcp9YnlI8TpbXt3ndOes0ylLATUcJmKKGEbwsl1BzJw56fs1w056X2eantltwFTcUFzzX+A4GGF9nZS3oaLhMxZLreYof1fBquqO6V0tMgwVc91fsLQYcWObTgYSuhhzcseniThIdbwhgddmjkVi/o8PvCC3MOL8Q9jsN96XHfy1xVHnhyVbGu9XjITicKPhKGWEsM8U+f2H9XLHb4mPsgFWzrZ7ntBB8SMxwj6DAmbNhQ7Q6+U/tdHqXWxLrZC0NsJSixk3W17+xPNV0EM5quQgpLyOF3iRxS7+7CDgkVVhIjpN49/Ezvnr70lq+9IMKS3r2FFtaaPumpfU259wkyRF9q2C/LTVFC5g6Q3gMSvbW5uBkb6Cfk/0HCCxvghAIJW5qh0o/w4FCBhJXCCodTu+TLe4SffXkTDhwhUPB/mFGqkkKFdGt1OMpodco1OUYF5IMvPLBCsKCyBQryI3hwglSd4NudSu1U+9kv4omCBYkFjhYkqLsCBS0uWGWmqN4UP3sJ4R7ohAskFE5I4dNVaHomvMaJcY75qKGYmSoxU2KS+Z0l/3aCgrMEDbYxc3R/js9Fn+6Uf2PmCh8USjiPU13ru3p1Ph+f+XLJx3zWW5Ask4XCA4UKLmJZQoHMX+y/bZYIUTRLBQ0KCWRimf99QoEy2gr+IxRY6fzxV2osXROr1ESCCLKJNUkTa4UIOpf8qUIBmb+eTWwQAlgtIDAmDihkwiq/SX7dmwUIOgRQ6B8TWzkq29T8dut5v53N71DzO9Q8a+yUmJ0Sk4yCsL//6rA/55PvcD/spSA65Dfyx5egAxLkah70y3c3kVM+Pwf56BxW8SMO4OPl0WwFCP7j56jf9IieEKGA9pE4Ib/8WiF9zDnpTzCnpN4pn2hJot1pIZMNUL/UKZ/anVdzFwT84QK1uyjtLjrttDYu+drAhPZxA7O4X73/I3OFlYTsXRFoVyls71q2yK/rZupxX+k87pN78rrPnO4rzB0pese3QJAAvbts5Z7y7tk1KBVeNPeTbj7w8YD3Hybr+pG88OucFz4e8zF/4oOf+1zGbQNXo52872vlhK++lNzwxzg3fLQNqkxH3kPHgK25xjolZTsH4KdTMNp0UYkuKuHudJWL9ntyq6+VI35X+eD/yHSXZ3CPAN3liF9pesoLumdQ2sx6BdrMegfoJWd8HS3ihPUJ7GJ2zvjVcsVnTr8gmeD+aro/m37dFn+dnvl6DRmo7IFBhRkkz/wEdhsQfLhs1k/+3VestQTGa8b07yoCHv/G/PsV/gX/fuB9EKJSmRNeCiMKHpTbXQoqRr8EKj7LGp9O7ueTv4IOP9IgvSRnMcbIYo1KF1hpttoA/2ecjTaU1ua3BU0SaPwS/wqm/Lja4f8F3nPAaaHNB6UpBX2EeUqnoGQjSDIq35bguTqXJ5+MTV6Q5KoQeWGSy/hXoOQi/eXSq9NfTskc/aUr5ww5phaYLrzg984xbfHgF/wuSpcxXfaC39bG8dYxlgrLrCjLebkC/osFJ/MCJ1sj/1mKJlIsZJJYcSvzDLPYqgOMWzECnZ+FW87j4//Ne13RrZj8BPFTJun3V2t+jde/9pKv54Oef7VGxzv/BteijV2ZV+zKidLlWeQVcWOcDb/NdthL+gQ+n4YFdMErmxtT3hCUdIDUc6z6HHVXrVWh4Em9M33GXSrahl4sP4vPpHgkPt+CMTayEBv2O+5LevptDYGTEvAVFrExKisISH5ZQTYCfEU/Dn+v/EkW5SqJrOuqKrSu+1GoWJUuyO6L1O5FTZq+cJKOvUT45WW8lAW7ak5sMoMmqc4fOySRI4FX7FxIvGBKadbMXcpBUF1jTLoUl0TzFqYF6zHsBl6tNC1t11pmXXOxNzIHwQrCkl/F19W1r6lr31DXsiB15ttZ176D77iuKQKH+XYZvm2+R+2+p641mLPvc86SEFkuCkdzIpQNAUo3Z3/Bqn9h5+xzXKPmL/klzQBZ+Ks2hCjz+Gst3KTdv8HfSOW/dZeKlqU+/xh/K4ySfoI/wU9b0E8wp9gb+LtK87rt8+tZnx1CmcXiUKisv8cb6nOF+vwP6nMaMgs/M29mfa5EpeuzcErzZhneNP9E9f4pnU45PnJu0JoPXa40BD/nENCZEL9oxRgdRfkTmn/Fvzhnwpbm36lHG/7/Nv4db1cSoSQ8SYX/Q/qqunDJLztc0sbhyHwIm5t3BUmad8rwDtHJ8iwWRyXRSVm7BQ4kUrpISldhlc5vMI2QRSndVTWNkMWd3iELPdPKrU0vCeuVQHwsq7kgXKl1yOmixD7K6JPTLCWDNU5gZvmjJqaf8MwG3oOCMl81A9VkGjaLHAjX5GA1kYgckmuWoZlthGbmiWdq00o6NFzQnYU0FZJjROZLSB8dSbdAJkZT+hipP6aB7LGCM6vNOMlU7Kw2UpnbTmN00/ViQq58Rs5Uq2h1rsJ5GMqx0JNj4QTBlq2FXk4SdFkhBHOqTgmQf2Gx5F/4hqlJtU7idbDoTOmfYpetiF0mDc6xDc5Vg3NZbJ6wS1OrBusEa6KODRKxrBViWSHEkp/Z7IQclpNGFkq0RS2xiKIXp6KXWNFLJXop6y4TcmmWS/QKYZpYQdErrU/hSt62XoRYLNHp+KzWwFp/QqxhibWStDZnd+zCU2HL5k+DLbE5G19F18iCa1SYbRK5jSLH6Utgu6622wa07nboUm6F/6K+urncqXUi4FLwZRuzW0V2N1wnezQYe+VhaPYJtbRBNwRItpD/YBZ3gzZr6XZIupUfIstBkg5rdUhQVSiXwgyefMsc0/1jvE9GTVm6QTSAKF3O/wWM0gn4vwmkdLL+11DKvFBK7WM515vWgikTkNIN9W0Vuq2n3An8F3MnDfhxp8FOc1egvNBLQZdvEcEsP83f7AIxGwbowCMujsfq0hPhlnhChdvKEzHreTtPiRkhwUow3T6FmTown1ilXlqkGffFdxsCTU/FLr/9FOwyRS5dI90c3NItU8AF7xBo00OgTYPYHYIqmehN0KaPxFqsEn0ptp+T0q+BlP5CLjWBA4TapNgl33WVj0ENsSZXYbBaG2LxyiEZ2GQdFWuFY3IjJNKyLnRo03BlDNdoSICGQ2im+xoVgilYs40ZpVKjvGyH1kxVCZqxvowulod8F5kY632jsfNiJRFLGXkadKpasKX16JGyk4RgOuxSuCUTUzg0UyUjxSzp0eOGZnoDKTVCLK1Lj4ZmpsBLzOTQzFI+ZpUALbfcUmfG9DeIMMxn0zAfLJtKnSeVEjQzG7864Zm1gjXzmO/Gzw3EDDk7WnzT6TUnFL65kGUXcXwEai5meolwTiwhlLRUEpZmEjTSgjXtQ+KQTRcWJIU1ufhWaSjSYCCVZo3aW+MGQrWEZRafimV+95exTIdjJq/eW7zyT5utQi0dimkjgQjB/KrZoYoJZsmKu9TmLvXR9Xm350QIrmR6j/cLB1LKe96Nwj6hlLUCK12NA0Iq6wRYMusgR+KQRuJQ45EQgOl+KBzR6AmyVHyQVsIsvRJm+Q/mhHViPCl4cqpQysPvjwDy/V8ZASSd/gvCAZ0zIy4m8y+9LwmWrDWXMyBQSOXlFKnMcpMwIMy9pp5ce19Prqc9ueEJC0w9HlsJtrxlYcvb1P2OdYe8K+gyBS05a/ele+rnWGkeSveHDXR/ZHV/LMgSjzPdhVg+oe5tM9ivEVyZ5aYhQcbI5zFPlDLV3X1TdxTq0dFP6QQus5NfXnDRQoRgdnYIpuDLV4liUt9uwjEJX1YKxezOyumLQw9fLw491VBPv0IQZi+FC+GEEqbsIbCytekrGBN9ebufcEq9BPX3y4vCKvsrNMgbZqDyMVDIZ6LQILVqYUoMZsUhamAI709MDtVX441hS7JgVWi4n7whjNDVCFWxjLORulT0kKpU9VHKGcWc4SpepasqXr3h5thFE6k2Y5Q/hvlvqlob+TgWnI+jsThmGlFEAKbUSZFLOm1roCdpoF3Nyb7+vukcGwVZTvFLXo1/Zqarco3iiKCGlYVTqqqrMtMv/4iZJadGB1Cm7otsdK7qpX6LldZhMatXJ2UtNNnAVVG4ZHOzSPVshBAsZr0lUnaJaibLbamwyVpBlO4RXy5wss7FC8EKLq6VGpiVbnF5Za69VWrP4pRmjaDK1G2Req5Te+sFVWI929ug9jZk7Qmt3Mj2NqXtbRZEWSekkllb2N5WN3zCKvPCKi1c2YpYZfk2G4hnp5+wMXb54GcnF8RurcM9cmPEHq7DvQIrsZc39gmh1DrcL5yyVnFDKP6AP9YcVK8OZr2y++ChpOnD6l5DuJKwxrHEMfENQZQseJw3TkjICZ/nNanenyqKyKddFJEGTonCJr/aOGwIdzLfveX56WYsuFIySoFDfuECh2R7cQZY2goudEidEMt6IZbcwZz2wiq9FKvkaNxMB+5WMnDCKgVXOqySUOYdpu765T9wEUJwj5f3BTpq4DKAkuIfspVH6vOjdODK0r1lOOOtqYtPhFviCQenbcAdQ3BlnoBlhQDL9ooaQt0EUwqsbG06CrpER97uJGBSDXYWFNlFSKULEiJYkon3ghZEJvmKkMYH+Scik6LkC5skKklKvoBIt2FJm94q3EfIJPpQfl/p0TfQJpBuLG8SmuQ89xc4SUTyZ0QiFd45KD1VA6WKDRZiBguVLEUK+YYZqraHkYSvOCA0pLjwCsOzuiMkeqSChWAkRY9SXBBTpXcZd3+07o9RjBCM4f2xuhynCCEYR23HBxiv4iTqB2aCVJ9A1e1Av2Kqg/K8YoLwU02y8KQgmd/JQTK/igXiooJM1XBPs0FCpnG4p9uoINN5o0ZxQDTcMyR8BoX/geKq6WImL15US1VkkShjVtAAhGPKzA6SMZ6jSCGKFzLHxvJgYh6nqVZjUxegVpFCKl2okOyLZIFdFgsleCEVWWSDhSyWnksURARLqOdSGztkKW8vU5wQ6bnctvkHChzC5IrgTbNSIlYGCiTsJK+yklcrezWrrlHYELNWktcppgjWUfJ6xf7IgoZI8sZEcho25B/NZpvzotkSgMktLLw1SNrYZtvYrja2M3+HYoeYnWpjl+KJYBfb2K1IItjN23sC8LNV2LhrY29Q3rb/xUO+ixyCvcE/mP1W9H9R+BAmDzAizkFJP5jMgho9FLjpcIFEzBHFEjFHAzBxNGhujmm8jyuOCI5zvE9oFZ8Ist/XJ63OpyT1FJU6beOFnJHOZwOcDHCWOp9TNBGc4+3zih+icbmg4CESYpu+qEYuKZgILrHUZQbq4M9NGyukno1ekfQrQfqt+6a5qgV9TYFEcI2L9LruX+f9N9Pv9BsSeFOhRHCTAm+pwC2ttOT51ATcVlduu67o+k668O6qcqP4IXnctw+3uvpAlw+Y/1BRRMwjdfWxLfyYXX2iWCJ4wtttQ/BzJ0jhjVcUUaSgiCI2qEgr0yF0nXk3BD8dwgrTkTnoGKofehx0s1PI7+zOiirigokokAgTXUO+UoV6pQplE1Y4EXQPaRNWSBHTM5RlOEx3i16S0VsxRUwfxRJRABEm+obNTT8dm9lfMgYoiggGUMZARRIxgyRjYOhGR3M0OGRHh4QYrCghrc3QUIMxTBonsUP4GcrUCEUL0RSPDMsX2a1jVJhsHVUh+BnFQjZuiAqNUWARM9aGDhkXgolxYUuFCBkvFcowKFR4kAnqUxl6hqZauqaxQfh2JC0nJRE/JkuZyRy+56XyG2ZKWP6pNFgIx3uabk/j7TeSeZ4uWTUKHYIa3p8RatXNDDEjxEzKnqXys0Itmmxzsr2eoztz2I25ihli5mlkahVHBLUcmTobPKSOt22oEPVygaKEmIUKFDLNLAqbfUqBQRYpJkgnsySU7OcVHGSpDQ6yjGWWh2D+8rCNWaG2VjCcxWf1RvlZszJs5h5yWmdWhi48iFkTgok1DMOxVn2y4UGwjn1Y78KXrNcIufob0vppuJC2ZlOITWG12ayWNrvhU8ktack0Vkh7sy3ENpbcHibDscMOx05V3Mn+7rIxQXZrOPaQn6vAIHxfsiFC9vL2vhD8bA8dlijGrSruz1o8EOIAxR9MxR+y4g+r1GHWT+KBSPyxEIdCHKP44woPguO8rXggSWyRsnRzCpOpPqVhOa0AITjNqT6jqVZIkDMhznKYzimIiDmvyCDmQggmLvDhuKhKl0JcDHGJhS5rrV0Os62vPkwejSsh6kNzlTSO0FwLwcS1sIW5ruo3QlwPcYPVb4a42aDyLdu32+rbbSp/h1sFoS317V6IWyHusW/3SdcIcZ+3H4R4YFfSwxAPw5KQR6r+KNTWlHb5carUkxCPCe5HeEKkKwIT7aLmpn0kCm6E9hE6RKTgRo6CGwl7L8noqEKdInSM0IlMhc6RRqtLhM4RurBS14itdo30YCRgngIbRcK7otIrSreIm133CN0idI8Ybk11erDOm4l6PdVGrwg9I/RiG71tG30i9I7Qh230Vfm+UbLlq0K/KJnL/hH6RWZAhP6RGRiBiYHs2CDJGxxhUITBrD9E6gxJ1VG0bd0fFmFohGFsb7htb0SE4RFGsPxItTcy0kgmFUZFmqAq5VexA6MjjI7MmIgTNDbCqAhjo9ZmXIQxEcbx9vgI4yNN0IRUzWo1ODFCdYSJbHCSbXByhEkRJrPBKVb8VImfyvrTIkyLzHSJr4kwJUINxc+IMD3CDN6eGWGmFT8rAj8TIjojKwuzI7fcNQVzomSo5lrZ8yR7HivXRqiNTJ1kz48wN8J8yl4QoS7CAt5eGIGfOVaQ5tMySBap8iLm6VyBxbpYzAvwzhJdLOHF1PStjSmzVNKXRVgameURlkVmRQQmVkSvmpUaiFURVkZYxY6vjrCa85JO65ookbA2AtNrqdA6O1TrI6yLsJ41NqjFDVpv6WvexnSQN0XYGJnNETZFZksEJrZwLWxVi9sibI2wjfW3u0W+PSo9Nzuk7c4IOyLs5FjssuO1W83sZvt7IvCzi6m9EfbaYd+Xark/Aj+qdCBKvt4ORsnX26EI/BxkvcMR+DnA1JEIR6yEoxH2ReZYhKOROR6BieNRS3NCmp6McCLCSWp6KsIpjU0Z1TstdU7bcXa/ITVaZ1I9zkZg+ixbOGdH63yEcxHOU8YF9e1ihAsRLlLNS7ZvlyXsMkvXR+DnElNXIlyxml2VHFv2Wtql62mXbkTg5zqL34zAzzWmbkW4ZSvejnA1Mnci3I7M3QhM3I2+Zu6pS/cj3Itwn+o80IP4QA+i64WUf6gijyI8jPCIAh9Lucfqafp2pkJP1I+2MZ5Epl2MtrFpH4OJ9uSddYhZ/90YHWK8G1eajrGd345xafPpFOutKUan2HSJ0Tk2XWMw0ZV131PdbjHei9GNdbvH6K56pZ9OPeLy3zQ9Y/SITa8YPWPTOwYTveOvmj6q2jdGnxh9WbVfLCBelfU7L2Yf+sd8RKwcmAGx/hKUisHPgJh4vIoMYpE30jcqZQyO3/f7Z0ic7lgxhsRmWIyhsRkeg4nhcQszQkqMjDEixkgqMSrGqDj7/VMVa7ZHS/BoNjkmxpjYjFUIp3ExqmKMi1ub8THGxhjP2xNiTIg1k9WxU3qihE+Kwc9ElpysyykxJseYQveQqTFYcCpbnaYGplHzZ5N2p9t2a5RdQ8EzYsyIzUy1OyvG9BizKG12jJkxZvP2nBhzbLtzk3bnxWByXvwLU6scxTaJwWQdC8+P0992to2FamMh8xfFWBSbxWpjCUkVMZawjaUxFsdYytvLYvAznzo2cW0sj5NfRyti8LOc59autKKfNatiMLkqfsOslvTVrPRc0uiaOJmstaRSxGZdjLWxWR+DifVcTRs0QhtjbIixkeOySUtiU5x9y2+2Om+R1C1UamuMrbHZJp23x9gcYzt13hFjGzkTvL0zxk47Lrti7IpLb9671cieGLtj7GGpvbEe+H0x9sbYx0b3S/r+WF+VyaNzICY6cTDGgRgHWeGQChyK9XwlCFQsBIr0iBhHOK9Hdf9o3ODn0zG1eJzsiBjHKeCEbfFkjBMxTrLFU6pwKs5+TmnGTqvvp+PsG/eMhJyNcSbGWQo5Z4Wcj3EuxnkKuZCO7MUYF2JzKcbF2FyOwcRlrvN61b4Soz7GFZa+6p7xq06+2ruWPifX7RjfkE432M5N0iFic0tjfDvG9Ri3OcZ3YtyKcYe378bg5xqVT/W8p5bux7gX4z4LPLB6PozxIMZDtvxIgh+x/PDUsiU0SnWexHjM/Ykj2DavOu3yaEs4Ks+w/3mp1CEvO2K+wrxL/DxvOuapUqc82ufRKd/adM6jYx6debtLHl3ymvaueUXW5rtVHu/l3zLdlI9ueapqzXd6Ze4umd3zmkte9eA7Vb7W9FRmz/xL/g8afCP3UnO98+iVN33y6J03ffNgom/+VdNP7fTPox+3LGo7II8B+ewbeWA+kTAoD6YHUcPBtn9DuFsRP2eNoflkHIblMTRvhucxLG9G5MHEiDxDL0n+KL5PERln6ao8Z64qn62M0bo/hlsUMXFKH2ulj8tjbB7jWH68ujM+rxFXLCalMSHfylTbUZ2ouxNZbVIek0jvUjen5FGdxxSO6tQ8JvONiren5TlA07lN5THdDiHyX6A9sSafdHNG2s2ZeTA9k1VmWUVm5zErj9lUZI5kz81jTh5zKXuebb9W7deydF0e/Mxjaj4tfnYCF+SxIF9nFuatHeWnmzeXm0V5sMlF+TFmcR78LMxXmSUSsUTzlb49aUCW0eqXxzLKW677y/PZF6KFaFfksYKTvTLvOrIqD35WUvBqFV8tcQnSvCbvvnvW5uliuy6PtXmso9j1+cTetCEPpjdwSDfmsSZvNuWxMW8258HE5vxXzRaps5VbVh5bOQzbNH/bNH9O7HaJ3UGMKo8dFLszFbsrD6Z3UexuabQ7L5fB1Aio2dibx5682ZfH3rzZnwcT+7kaD6i1g3kcIC7F1g6ptUNqjTUOS9BhK6hMTr66PMLLn6Sg+lHpcozbV94cz+NY3pzIg4kTlHtSck/lcZJ7FeWeltzTkptUPZMvP88fgXnwc4ZKn8tnfsPn8+DnXD5xK72QjPnFPJi8mJ9gLkmTSxzzV92dy/lEar0UupIHP/UUetUKupoKupYHS17LN13ZTpfXJeU6pXxLUr5lbiTt3MyDnxv50eaWStxycyv319tJiTt58HObi+muStxVifQl8V66su/nwfT9PDe1vN3UCFzl8ZCD8SifbmTc2/LmCd+/SFAtgIm2hRamXUGxbwtoV0D7AmPfFhT7tpBhQe8WkhY6FsB0xwIh9oJa6FxApwI6s06Xgh6WriyIrrz9XgHvFUy3Ah+o7gV0KaB7obXpUUC3Anrwds8Cehb0BPVShV4FhR/MK9hB70J52w1z6+kCVkDvgulbQJ+C6VcAE/0KLU1/KTqggP4FDGCjA6moYCunquoPkuqDChmKlWo+pACmh7DtoZIxrIChBQzj5XDbkREFDC9gBGWOLKQ/CAsYWTBVBYwqmNEFMDGaQzVGtccWMKaAsSw9roBxbL1kVxlfwHiy9ScU3ARXF5I1to3shAKYPbEwxkwqgJ/qQpWZrO5PLnBBcL93PZiSjsDUAqYUzLQCphbM9AKYmF74mqlR+zMKqClgBtuf6UZgZiGzic0qYBZVmJ2oMCdV4dwfm7kFMHsuVZhXAD9zqEKtVKhtpEJdqsL8AuoKZkEB8wtmYQFMLCzQCCgVFhewqIDFVGGJhnxJg9WyNB3zZQUwvYyDvFxVVhSwvIAVvFxpx3xVASsLWEURq9MxX1PA6oJZW8Aa+n8VwMQ6NrhetTcUsL6ADSy90fV5Y4M+bypgE/u8OenzlkJGPtlaALO3ss/bCuBnC/u8XX3envVZInYUsIMidiYidjUYtt0FMHs3RewpgJ9dFLFXIvZKROJPos1gX4Gbwf4C+NlXaGUOaPkfLOBAwRwq4GDBHC6AicOFb5gj6tLRAo4UcJRdOqYxPKYOlfak33B6HC9ku9SJAo4XcKKQ7CYndZbwqQJOUe3TBZws4HThR+aMJJ8t4EwBZyn5XAHn9DhYYecbCLtQwPkCLrArF9WVi64rrtylQrLLFcDPJZapV5n6QmlfupKUuFoAP1cKo801lbimEu5b47rG4kYB1wu4wSm/ySnnP76pFXCzgFtU7bad9dfNnUI5obAC7hRwl6N2r4DbBXO/gHsF86AAJh4UvmoeqluPCnhYwCPWfawBe6wBc3o8KZRzQ5MjetsiKapF8POk0LTLYDnrNDXtdac973QookNRx7u/yxwFH+5YbPYk/dfEdCqCNzoVO5jOxdQFbOgygmHFZnxdK6JjEZ2LYKJLsWlnyTbvFfnu3a2I94roVvyq6V6U72sR3YvoUaTva1Ger0Wrphh3vXTdK7nWiulddKPVp8jR6ltEnyL6Us1+xeQ7tn8RTPdnaN0BRfQumoFFDCiaQUUwMajY3AxWe0OKGFzEELY3tIihks6FMUxdHlZ0350aouHF7KEYUcTwIkYUx5iRKjayWJq2URJYVcSoIqqoyGjdHk0pb5S5+2Ok6NgixhQxlvfHFd0cji9iXNFMKGJ80VQXwUQ1R2OihE0qYmIRk6jdZPZeZzQV0+GYUsQUqptzq25qkWpPK2JasdZML2JqEdOLPzI1kjGjiJoiZlDGzCJmFhucpjmrKMeX2UXMKmJ2Ue99SXfnJCM7twgm5xaTb+R56tC8oizOKsg/prYoTkSdbtSxS/OLmF9MeBG1xQ+XLXvmo39GnsczLvQy+SLZ6ace//6e5YnE2SmlCtrmwwOt1gGCRFDgQi8HyAlVS04xVaydQL9t0vP73VVein9P5/enJ4WjrIX5AIfhg/gAPlhpPmSH8UNaRaqgoMqq3pQl7DGvOir8wzoqPEBTOnKSSPEkO8sfHzef0K4XJJGTE/fNX8OvmU+U2WP8A/w6f+mrwLMM8PKFNIqy+RSexaeaZxFdKg2sIpAeKmzKv5QeUerO8G9ufoeFP4PfwWcqRZTQvLmin2XR/7XwLQG+nI6OTiVV9553V7+L39Xo/B6eF0fCndffwvxXVrbhkSvNC1apF0qj8yJeVPWXWIKcCLxcQVrEi/h9jc5LGp0/0OjYeMmVZEj8kfnjdHR0GqkbHREjzB+X4Y9NM2rWrDQ6f8Kp1smkOrG/vJgGbnHsiG+almzRRkyuNF+jRl9LNIIitpS0+zq+LrfHb3B/IS8ii9ny2q+I2aJKWcyWdxrHbEndG512r1E7y4toZf5napdESnY8iG8qUnLpoHAr/m9T8eJASKcfU6eEA+GCtLzGw8GTs8Erzd/bSn+fVlKwZOnUijrZYMmK0FKBf0h0auhP+48I8I80cDmj0M949TO+//mvOK3fpNb2EPFWDKdcVDhlRW4xP0dr/Lyl+QVruINJf4F/qTT/Su7Dv1GNf03U+DXSH3Tim44N/3dSINq4CC2v2vNI/60M/yb2Q64UlaWSDAhFLciVqneQn73is4gJwQP7ck6plAhRQSIE9UsPJW0lBkRA9gP1d6PQ8EhSZfxfOZJU9f9vOpJUov5XjyQN7JGkz2qq3ECMFPvBjBIBYqqpUoGqHFmt6SyN1jCkUV14YJ+G7Wknk/LAPgEXE3MuUku1mA38IrCshyka+8muq6L4Tc01m96r4961Ky6ObXg6aRay5bs2jrIqlpEdIcZD47PA5c2biZuT06F94jiQ+MBD+9xUumNIXSzlqSI+zBPxgQTcXLPnSweRvm0WqceL1GM3djoN3E7DEjev7iBSzesyUR3sSaRZAOUWZqV0S88d5Quum9fV2byuEeVBAteqZBpHmT/alY/1mldmaV432HndKPoDNlKWDaRsNmfzqkAtybyK+bBVN8uwmSYRdWJbOq/CitwQbNfk2YNGsYOTt1OTJ8pDctCo4iczsYeTt1fKieYgjkOlqA772YVkCA6I6aAuHEwyDilcssbksAgQJDjgcMZwaGGOSVh6uihdS9yYnMjGJOE2BOaUSlpqA05zTM4oH2c0JszSmJzVmDTiOegg0QvZmFwUr8GNiTgOl3SzDBdoGdGYXNaYCGpxhetFcdCOd0UMRhtV2Z0pKoIDE9cZLuWGVLJniuImG0xDrmTK25grUv6OwqWkMZUZfE/5uCfl06frA+a+q34/W60P1LQNsIwHXH+PbEDlx65Duq9TR5VRhsc20HJAagP3UHv3s6adXjraK7e9V+FCryQvHu28D5et/otXI761fIH/fyJhtUb8+3H+LeffDyfXS3JM5N5XyOff3+TfC7pxL1e6E1o6bJQc0f5f+TeX5D/DvwH/Z802SZ4j3L7tyLNO7m9kJ1VU+b/iqIrhvjurYrDvDqvoL6p1clpFF6VjponUnvKYzjNNpOiQZ8mpocipyxT7l1JMEUXNTJnlpJbpNcrFKWxB9mnOne9eaZ7hhDzD6XBVPoKPNO2k5fMbZS5H8Qsl5GMU0uio9xaNjnovnZfxGzIyqS7V5ytUKCZqW1+3kmCtvDLP4lkt509R5qe1on8Ln7LvVUobfBqmki9UwP/Uwvw227DvVJUioIrkqPB4IT6joXDS9IYlaZ9VbXvye6X5PM+h6J+eQ5GcRNGg/S/ii19qwtcu1tBxFPhypd62XA1Fy2M7ScnfZfu/h9/F71XwtSvEf1Zn9AQlg/NfOOo2gJ7jR6gB5YuwqkF7wV3qXUz7w0t4IeWn4vdb8A0sewGzWv4RtXQ1FEePArLTKypMM/yxXsECvKLO/olUt+9glTq7wjTXoNuqOrzC7QA6J940L7OHWLRMOpeG02PxtPzX8DVtAn/Grnwdf5YdF//a04+Ld7Wy8+Lfef958ZloHWnxOf9vzA/cpc6NV50fukuxVj/rfZYvaD/EX7RSWD0F1JtKpuoP8Ndt+JIWfo5LmQxVHhLfhi9nIX6ktU3xydz8GD/WUPxEQ2EJq5UkrP5O48PiWzQ6LN524g31QQJ0rIWWwT9SgM61wM8qzZsUkBwX7460aG5aU4B9DavUEfFcGmnv/pkjZk+1cJOfCP1X/OsvnRZPoclLmXkHpNo3f9r7WPpGlsjpoBLpK1mFXslCvoxp/ZVWWSe9m2lEO+eSnC56PdNSUxy991NUW/yvUVSdAL2i9ZLIpxxowVt9tZ0zSx3sp+8ix0hFfwoboBc0vp9lC3GQ3sncUtT72WDdLcNAkVIRYghlPfT4J1mZQ6kM38qStZlJ0eub1Wh42skR4qmqkyP1NucIqy7sHqrYSb6jNTo93nVybNZJvbGNk8jGp2BUmGrlo1qdZJY6OVGd1BvcxNIb3GS9iGXqiaqadnKaXtvS17Tp6uR020mV5R9Tk+wq7n1O8mdKfqOXOdQkh2Ok73Ds0TypWWvf2WpZqE4jVZf1R69z8/VFrre5Ju5trkG0Pb3CvSbSanL8BZZSxjI3KssyKXqXW25HZYW+yRVxr0Rg5a1V6Te564s4rE8/E+PVp52JgY12YvNl/Ljm3PucdofNyby6FzopsDXN2aaAe9wjxGDdqhc3Uhj08ubOwJiqt7fNKWHVbRfuEAzsZlZyDkbjPWOfdEupqxXmgMocsE+VK+Di7GlqDmlqGp0fX/5591YnzurR7JWuuTkhoSdFTMVJljzlxvZUcnr7abVxOqfv66SNMyp/Vq929hyMcypwzirhfhue1317SDwuUN5FK8/KvJhtEO79TppetprWi8WKepa/oje5pr0Fljry6gflWuNquSMzVOu6ajU8L0Nvx+m58a10bnyx4UEZJSpqS1FRc46JigesqLc3qpUOsXuH0776WC004qWWP+eOyXBU1NIZGWTgi+clwqnYppWmk+imSU/7+6ZzOnBdxDt9+rkYVL67jY7XncyyHuKq6mCMAenBGKGi5mUz0Msrz9inPAJVBfp4yQwkrfb1ygMXOA/9WKa/yvS3r2PMkhFngHIGWLHWaD1Q1wN53dvP3jXETx1kdR4snUuEVIKW0nmY6KgYRp2HexxwBdB7/2EZLX/psAzRS90rCpvKTo0XzfQNMz7t4wQPE37VARksNIl9miwVUqYpPV/Ugam2A4mMaWrZnpCB6SxfowI1XvYS5HYzEU7tbqaGGp2aUX5Z9FKSTRuGyMM8znitJKeHZZDg4Fit8z33zCxQQwvY0FWPVwt1tZBXN9U3DneJUrro/YfLtzDLxIFNA+P9k1mhy4RBysv3M0gleY3X4GVyrQqkB8vzd6kKrPeyZ3ODMjbYGrrcqMuNvOyeCHjKQRkhtlgB2UEZSxsHyyt/qXTmfHb6XPof8z/0chjxvzCM+C+I7D+bDpO/uqt/TUIvyrmCoW9v+lEyS+74DbW/S7Mk3uouMVYrddzGuSbuvA13gr2Nqyd2anOdWt/40Hqr0SEv24UOq8QREU9xhJ05qu4etd0t/w9zTFfHNDoaPQXbU8Zxm1H2gVQ1R2KVaielWinYXqWO5LjUxFFZzVmxWVMeK1U7r4ZJWT0v4io3SafaxQaqXVKJ9GAO+gSq7Xqnmm+u6OpKqpqiVinjaqJaWMYi15RzzRUJVOS6Mq67DL9MBDFl3LAZ2Q57Uyvuliiu9lj72ypzO11BFOSKuQM+1Om76nTDQH2qcJ8VeM2idz1F6vtKKVBfpUivvuO8ush8pQPvm5PkSjV1kodorbRo+7JoizjoJCkcH0rR+N5SND5yLnw1pVDMuurs2xFw5XUS/vh3SvzWCvFbP1ritzZcq8z50MdyvvvXxC/986wobVPdpVoPEWIbnpaPXrSq9datPpb42oda95XWfaW1OzGflA1fe1JZmQbZbQD9fSUoa4CffPEPdARZMWObDtS2nxQe7mfHfYgf+75fakMU1M+eEuunL5wiyOr1crjIsqLGMjON5dfify2WnxMgFuwYiXzKER+8pTM+AmZp6if4mvpqMWJRTWH2UH1yYbPXSxvJz71eigs7RXfLdOLHVJFhk1fnaRqwaX6jn3XumH29FNao9zaOnzvtw3JjRYx9zcyWgik9lodWu77MzfriwvepL7U64KFOhFnUsS/zlY/56kuDNheIMat3uoVuMJOQfqq/OM1Zomh+eqcjaZaZS/1W7pAPR5qdKtLsQpFm25iV6dSu8sHPSmatZhapsnqnS9tc47sF9vQAf262XVEX60/KbEyV0Qn8mmsxaDe+P9Rfi6eF+kuD/SUCdoo8K5G7VDQ944PO1crHHo0PszTXezXX7rwP7KMwy6Y1B7K5Fp32YDrXCvunu2Uk2opK28RRaXXgx5GMR/uqOa5mkyP4KfSkVsJJuxKiVOwpsWi1EE5rITwt2N9rTwv2p80066gj0qqjl7UQ6sWjRT07ekX5uJItBLtvXPX1HXctObqjQnTaF0p02l/+jmP+h16M4jjmV1n8vn+5OG5iE1HcxNf9wF55Nt/X/aRRkXRPiqFLOq4LJShqLhN3uDHeVQdTai73WD9p+L6f7o06yv8GsUhxdc0j8XQVQpCJx6z+RNXbBooj2DaodPED9cor+DFASFYu4UfxcMnLLW/nkZOrye4kgi7sQf5N57QVqFYubq522eDlJs+ne2ygdhvwdBU9kIluQfNfET3QvSP1kqBeFPQyL3rrojcvfp8XfXTRhxfio/bVRV9e/CEv+umiHy/+SIQ4XfTnxbfLsh9IA9SiPeI/jSQYkrWrby9m6a1+sLrW6Lz/8iNNHI3XDBeTt3TCPz0kJWyU2LsYxaJVjuFbFWTf0aNVIqXw0kdSzY21zWnr1NU4Xh3z3MvXeGWMtxka+gm6nMBq9ox/0nkplLfMJDsHk8XudUf7Z6M/RVWmJKMvBaaKzqvnc5rt13SRfDGdytYEtNU2OOpfPF4mZrFb6Vn/s9Oz/t222aBb81SiVlRe1FK/OrVaZ7uVqDhfBcjU5Wc+EeCFKrCQav1VNhOW1SvNFlvNllg+7xK2tzQoP9zELBO51ywXtzcl9FK1lZJLnu5KsXVpgAlkfmmg2BrdXytWL9ZSsXVqd11DxdargOX1Yj0V26gCG6lYz9SUkrzliuUr5TZLuZTlyxa3WuW2ibFrtovOK34vEztIat4p2bsss3cXi+4WwTeDWi3R1+6Uoozvs3L3i9+L/Sx8wF4ftJTfg7w+JJ4vDlHqYUm1fF4c4Y2j6vLRgDvgh9KRPCZeryQft0JOiOOLEyx7UnN8SgReMXpPidELJs5wIM9K6jkRe3GOJc9L6vlsIB2zV8/DRcrMWL3kz4nPm5WrF7dX5a7YcqTyXhGhl7FR7UBdF7WXPF7yelMiL7t0S43fDsjlxW0WJWX3TibyKcTdEPc1h9qZHyg/I+6q14/Usjv+H48p7okqPAmETCUzypSIvE58O/F2Va99qHoduLuJt0sWnai+pqN4vCTsgolOIQOiiv8n0q4Yu2TNibWbTOoxL2Xvgp/3wlai8LrWeii/Z0j6LumuFeLuPk/urvYwXvURcVf0XX568ZqMXX66hy83aZJUT7m8/cXlpVVYNQeG6pGNH5g0PkilSOTlZxAbH5L2cGiYHPw/TD0UqXeYeL087U0VRorZi5EUO0paVUl2VUrmdcf/i9wrNi8/QxKtJHecqqfn/leI0StOryYmjWpYrazqMPldO1FXE3l1U1eTdDWJV19Mvhgmh/o+I613cuj4veL2MjEtbN6Y1FtJUq8700PMy+R1aKZKzBLHF7OozGwRd0np1Ub6W5bRq6syzCGxVw3PY8OfTd6pa1W1TjRfM18UXxF7mVjAdhfq1iIxfLGI7S527S5O2+3C9zuXtSTJ0oteKNKceL9YRrrncjF+m9ZZK9gKNb3CjofKXvXMSlG1n0b6bfEU0q8ov3zQFSA+/WGwQRI3WIn297kuN/Ly13ixSRebQh3/fs4zm3W1mUOzRcRf0n959Ow25W1j3nYxeM0O0Xs/5zFeiojBJP++4GW/HEQDZiogEzjJ2SMqsN4mLRnY7BMfWOxfJvZT/wPS/6DIvzhI/Q+5gToUZi9Zh3X6v0QeUdGjIgLjKLU5pnwco+YBs+xOFtqdTJRgnKCwk5baeyrM3iZPiwOcvE2eEQWYd8vIDBYfWHRgPSza4pTGOTZyXqv9gm5e4NVFEYJFC+bnPK8vh7hsW67XBF1R86IC14sHzM3MXl8XNRjXeX1D3GDcYKdvqie3RArGLd64rUm7rS4nT/IdNXiHD9EnWY7E4OdEDBYvmBtbWP5JUYJFCuZ2FmrSHunyES8fc88TSRh3RQBu+p7t5xOtNMsFJhGY/pAiA7NA+sLJqw95uSZe2Qc+kv6UvOqJK9zEcYXNu6ILkxcMJjpGLUgO1s9i0YNJCqazt0h+XaL09DsxhJ2I92zii2ID5xqzgUPLBv4i1epps3tGrUUHZoVeLEAWMD9dHbnVPT591EYf14ZE9rWiPytecN+oISkYA0gBHagGB4kajEFUcLBYwaXnbohukgg8RHRgHt2RSCIVmJ9hzBkh/Uaw9c8m/RiZFBklUmKV5f9WUWGSgkeKF9x0pX1ox6jaGFZr6k7uG6sBHCeqsBkvmrDIwUxM4AA2YgcTeVTnJkV8ZJ8pc3UnS9bkSI+r5f5ojqcobwr1I214auQ4w0272QmeLgHTJeDDKp6MWY1jvtZkXZ8hPnGyx8yUuJlRih7eJFlPCs8WxdjMEbeYTGIwMZcKz5PCtRHmiUxMU4vaq3PtlR78+aIW6yldELkcxy22J3mIaywi8aJIDGImllDoUgm1rGEso9DlTt3lTl0JEI14hUQ2ZhFXmNXKx2oqHzBLj98a8mAzFjFPuBR/mCzi7MEnj3hD5B58MYg36m4ZGcZkEWv7i5IHX2xiUYm5/0V88Lfq5lZebRObmGRi8LOF1zvEH1bLOzVqu2zzu8UNxm42v8de7xWPGHt5vc+Sivex0/vVkwOWR3yANw5qJA9G2YN/KEpm43Dy8BxRhaMiEuMo2z0mhY7p4cFhZVaIT8zPoch+4arGCbdcHbPYnBK5WHxiJk7z2TgjeSmBmB7hUuBctkTO6/YFkYlxgcIvJrIuReDnInMuS4HLydMhRetdEVGKmbySPg5XVe4qy33AHWB5TeN0XSRiY0nF4hQzcZNjcktt3haxGLep0h2pdIeri/uRq3tXsu5qrbrHIfteu6c79+wdirfEY/NA3GPSjMHEQ4p/JPGPxTbGY4p/4tbZE/W5tHjbimSsldYuTnLai22sxdtBzGNHOCbZGEx0jLkHigMokrEYxtwDHUOxS5wt3q6iHEtkI9JxhemufPKOuXiZpSXUI9ZqEe1YnONKUY97iXqcLd4+4h27xSsOcl/dLSMtmTRk/XKN3eIVD5kZ/dnIgJiLd6BuDnTk40GxGMf8iIw8RORitTw0lm+4bX64qMYYzuZH6Fos42EllvEIEY1biGAsfrG4xKN5Yww7TYpxtnjHxsmaGBe7pTheFSaIb4wJbLdaClXHWrzjHAl5Ygx+xsZcvMnEplPimMgav8nplEwRE1lTMlWsZDNNdGSSj8HEdGpXo8ZIPq4R/5i+4W5KZmZTIjryLCtytorOER8Zc6jFXOVjrqaEWRqYeXYMakVLRi2F1YmObOY3mJIFoh27KREteaHulpFybBapk4vSKVkcM43/hb1/AZDjqu7E4a53dVf3dM1oNBppJPvcsmwLLIMAx5Zsg9SOYolHwGG9G2fDbpzgZUlLbCwwWf8TBcnYxgKc4AQv2IJATw/BxhhwErAMASzABJLl4fBYHuFh3g7hYd5v/J3fPbeqblX3jMayYM23NoyquurWveeec+655557zrlv40beDpLczi/LCGUOSyb+/9v5t45LRsvvAknu0M2/W0cmv5ub/0f8RhTyHQhBZvGGeGR6L3f6n9CTf0Y8Mv0zv/jfIMn/NjHt+C+36EUcmQxr1/sjtnZ9AOHHiEf+AOKRiW/ujH5H/Quq+hDCkulDXNWHBX8fLvEnkclat0OMsRWUjOcckVw1e34cEcowe34iJ+AnEZWM7//VPEF08qciSA+ORuaHn+Zw2s8gLhlhyZ+NbuZYZPoEIpH3qs8B8M8jJFlikRGHzDdfjJ6svgTAOdD4Swg35iPKgYOvRMVS94cuwo+/YMKP1VcRgSxxx/TvHMX9NXxtQo/562/g62+UnUYY8jd1N+7Jgf4WQojRjW+bJ4g//g66gfhjfvhd7sb3EHSsvo8I5JsRgcxf/4C78cPILER+hJhjRB7/mN//BHHJEnaMkGO++Rn3qxJnzBvFiDAGZSfyGf6yGNobnskSBaHHiDzmKGOEHV+OsGPimys5LPd5eMVhx89D2DELrFgEVv7xPS4HIItQRRCyjkOWVD1mSL8wf3s1QpDzwGSD3z+Pgd+/QECyehGikXXsMQKPd6i/RMN5+DEnTgDML7aavRbBof8LwcjqJYhFziOP+dPr8KkdeAxfmPJTBCBrMfNyhOrmEciXcAQyvQzxx7xURd0DBCLTAADnnZnHcx2DrBYQhpzHH3ObfxOXYcfc5g1o8wbTJj69UdpEADLfvoYbuQmVvVaHHr82ZkGWYA+Pw4xu5pJ0Mzd7hd4Xi9Xr8OB18sBNkMIdD16PB2Yb9Q148Ab9IB9Ft6A9/q3+Fs38XYwDhkzMskQqp1drGfRGfPrG+AzvTtd8+SYELoNxb43Nk0OIXQbj3mae5MHLGxC8fBvil9nohjBl9VaELd+MsOVbEbm8V70dx7jejshliVVGnDLfvCN+snonUPYuBCjTuxhldwBld8TMqM2cP94d4yCWf0SgsnoPoo6LwGSO58PXeVAyS7BY4vkMysFx70PPdYCy+gBilIvoZN6KwMccinwnApL3IC75Q/LhQxgP6sOISb4Bocm6IkQm8/8/UjI2Hv6f2Ayej8XyGWKU+SH//Hgse2aW39Un8tKfBFD/iiBmiV1O/0J2KECGT8UcUZST4dOIYQYZPpMj/bOIWNYnrZkniF7+HMiAAGZ++HkmwxcQu4wI5i8yGb6EwGf6EpPhyyCDjllWdyN4GcHKfPNvTIavAhd5kPIe9TWQ4WsgQ5x39euA+RuIQlY6QhkBynxzDyPyW/j424hOpm/zx9/Bx9+xJMt3McS+pyOTvxeXWxX8e8JrOHo/k8OnXPV9xCXfqn5gUI4AZf7/D+LNjHI3L/Qj8xYxyghTZnSBIOlLgcJGOWv9BCHLQN1Pc0T9DBHLQN3PzRNEL98L1CGAmR/u55jByxC7rJ6L8OWbOXyZ+OvLm3sRt6w3zhC3jNBlfvQ8fkTPy52DAdFVTeQIRRSzej5ClRG7zDcvaO5A/LKD+OUXIn55D8cvI89e06DoU676C7x/EWKZOYaZV7Go+5omnJALn5C/RBGEMSOGmS14KPLiZm4K45ZHQpp1OLMvKEEjZUiz/L6u2dtnhzOjxoNlo5glXoZPXtYsRdjLEd6cvh1quhGkf41oZ3lStPSKJnyxX4kKX8k1DxD0bPyxX9F8wB0b/1zXOb6MuSMr5g7grOWLA2tXW2Lt+giyU1FvrYr5Z9zHqeriF96Qk9RPd00IUJt8nFqU5vESKQPoAEDVpQlxFn+8muw5AuAeAGhCIgCjLzD2GUYf5xS1pYpVvX04N51m+3mAXQr6y1drer6cot5XAHstvloDwNbxr3Wnu9PcieP49ri+Op6OX4OPphURdZPXuckEO9S7tT+ndK5PLd96IVMAvEBmuWd4DVlthb0GiIVD5+Vgpx2q1XMk8nAPiMXkahf+7DEjxBWK9XOKUVpxguhOhBARgR8kGIE4cH7yBkYYWgPCaArqvy8vcdL8DYw2vARpaeVZTqPtyUuEKN7AqMNLHPBEsxDlrnm5htbcwKjDS/jS05zIeXm5Ds+BOT7jibuadJOznWBf77ZDb2LMNEzGK4ccavSZgV567QuAMP7p9TUTuenLLsNmWXorCjaStzpOWuJ1v7NI0MJeQfClErJwCWbBMA9VoDDfgFvQ1cQnPBdX8CJYssVlWmDdAJm/uRfgyg3yi+kGrtyOX5eqDi6XMA0CBH+CEumL9WSUArBJCiQIdMoAlnaTN3vOphJ6Gg88mtajRoCfRitrJTp1u/TA2LqmeVDvd4VXCrjbYskyK/i2PvUrYdja6bVAJKDFwV+x8FC316gO9R1qRa8MU2UmWmnkV8xMgZol3GIXmAFc0E4MUwhAa2h1HqlKax+r1nFdTHc6bo86nus6XteF4sRfE/dNfz2rlFSdSSUnkKKMTkjfpKkkr9bLqxNpPZ3YVydpnCDUAqEXvhTRNGpLzEVfPVSKnEIc2Iru6iIbdREJcO2rh+kiiLVAnOt2aWETk+URDN0j+uqR9EhDlk0s6BwnGT+gpUx9YINgIJ/pcCQ41HCA1SIQLb0O7GIoh26gszpEJhVW6zPxOqZ+Hjlv8CYQ94Pj5BDd43IotK+jfEJ+4pbQXbPYsLjaEfgOOMJbVzhazXDyeJ5puWzu7RNGg+hOAXQhq89piEAqPFm4DuayFIOBOn1mr4kinKdNqWhnMha2eFrRu1hNCaZX4LJZeG2XhETTzM3MX1O0aq/wl8hGBlet7jWqzLVjPHNB5BADqYgkChqc9GS1vucI7+xRJ2nZeBJKS99Plq820IYbmHlOFuZ5qDoFIkyXQICOOiWhU9SpAg0Oj6NTZV1ziherhwPjmyiQU+QeYTD+8G7y370KZdxeukhQelsmylimogCXmCWWAzJg/k5fpvEYcwVN8mW4t0wFcTf5bS9AO+P1AilW0w9M8Hv6cl1vyB9EXCLqW8cRht3kY55zxnh5hcpAIkeYxjUiaTbnpLbQWLgoH35xb19NWqWaGDE8SHJRu1aMUSK+qA3bTAdWGD3V7clPKtSBYt1cNkHKjsTY9xpgKDVZiDAoABJjP0mr5JlMZ/h0DT7V8/8etVYqXUfr8AYxYUWsPa3NWYuyc3E6oZpMaLLKX8JdUvvJ/GIDM9WGPvNWQA8xmInVQ3uOxNz3IZVoY4GkU3v7JAqsz5IpoIczknLjThvRYADpEQBJB4LtUY/S9eGMQrz5NbzJY/DpUXTGLrWZa9nMeE1E3G2hLd3kC6Gze0RtG+HKWeHKadF1sKkm5N2DJAkUFW/inIqiuzX1BRyavhyVQdmkpC86nRBY1DqU6vS8grQgqCOPU0maMMkEm0K7K2iSVuxR07hfSVOif07TzA6mqSNK3R61WsOxOo8jh2KCSubwkRYae5imgPiIB04mUgFyRawHxJ48KDMp9Fls+HQy40g0SFS6oXfZc6+IZQLazTLEx8zTlg9P4V+nMCmNNguRgongVPlE03sX0xvvQOQNLoi8T2j8LKbxw/U5lL39XPxSifHbo07vyQmUm7nTp0ufU5AXH5+pJYnE9j1Lna2bkfC+XeoxuiSC+lBSA9SWuL5nqXO40V+nc+jXn6W202N0PJ80KgdP7lE7eg2kVlCPpZ2SV2GHenxvnxw0+SwkUlCbE9qsntgrj5hk8M77jRy+3+r56sn0W/TkPgft+fQfDHvLy/P5yflFGoJZpFgAAf9Tb1ZSLFyiLiA+b/LZ6ncYiv9M/1n9Ltf9OwW9n0JPQfH/AnrrBAt71O9p0iDHguLAPfUH9Pv0BzsQq6d+N6Hf5Wi9MliPq3paUVWRY6Gv/pB8+kMQugjL7/OTPkaURHLv6pHaTb5kW3iGGUC7uskHHWf2aEU/hln6SgjnfKz5eONDPqOPTfSxRU29lpNv2niUJyehpFwonVtZKOkxssJ01Ifar1Zy14y0XJkgopaBxdjX66TVBthV3eTLnnPmMuaYXkMmCu6Unmc8gqsAhrzMPiGF6ELEVI2hCF0iqveztcQY6j4nlEAUoHiZcwXahQflta3HHF5CZmxsQOP+j0XWlZ6reGlDK4p99qkJz3EbbqIVW4+mGRjz9cqegxBimumz2uHRKuizBZyYKQDn6t4sVA9acwnPDzxDPFut7W2SPCy7eHJo5YIEEwOpx6qs54jasYflx3rTjZhFR0tEx251stS/oeeU2qonwmIDWjylNyvn1l7CGgcrq89WD+MWWUulh+9i6XAybdrFeoaH02rjHBW+eqTu7CNBWd3go+hR6jSmrP7FE0OD5wWeGXZpmXFaQqepzT3IC4+29FlenGlouPkBZ2N4S+CcP26yGj9JecUcJYM17nmidOxhuCJor6pN3My5DE6pVciC2cRlS1VpzxOe2gP1AnTEY4AJGk1L7SuJIeVlNIYPxt8qhnvVHjWL+9U0o6PRaZbW7OBZqJyEuK11RtKITQFzjG+mkeN7jsxLfaX4nTJ9my0Zqy8TUzn5YGbiJyeyMJU6TiIfK6N23pu2nJDcqMxRu5jt8A6LJLzb2NsnS6Nn8YT0UB2GLrJfTkjewzNSAzNSNeXPPlE3nqXOYPA20xm0eQ8mocIac2bPl2mor84mn84GA52J5h4tMv8x/H4rTzVb+5iKaBv6wGckw4bQyOeFHr/ogdSoMU//M50UtMIhySDKdo0LhKDTdiHKuSDEDtpOO/aonbh/LJ1Lj93DU9dOmbocmbr2YOoqaFzMXn11Hvl0XkGC3+o5tdmrJIHMXsW0gMmrmzzVie/XFLCgsx/Ii6iXWnYzU0HUTf7USY6mDZHEoqJBURftH23LeElfZbXd6qWYZ0SNa5uKW91kwXV803jvFndX5phXjfTF1/LV2HdcasB44VGD3N4nP/r8/Y1+euVf45sGeZPa/NLo3fEcJR6gLujgyKeZ1zv85jdxeXL7vbc6/Q0u94XI6W3qs+2DOIrh7w7grdOjfnqFBlja8slBKdMOmKrBpb/04sukdNonXxoGSH5fuaBjHVy39/zvv6AAFnIQb+46n0/3ASqdc/ajiv0O1qkNwmsvr9RhdPQFGcmrHcfLkZTuyjBblrjxpbGAK/B7V375gI2bwNRmF/nmx54/vkj66stlDnZB7YZOeeHqT/7uC1cVn5DMquROXiXfeb00h/OvHMfZ15sEGcb9j/v0yn39iZlmK3bCsIX/vJb+z235USPh9486t+PzZfOODtIJuu046UV8iRCe5mJ7zudLkGBOQRAbA4gtupAvbtK7izEs0W9uAnQir3vyI8dx9/U+11COADH6P3SVskaPQZts+FHguF7T/BcmcYIdUqfdSnqb+dJMel/GT378RVwZsO/gypB9DVcG7Xu4MmyP4ovHcDBY5yK2Ao/58n2+4kdDUojkfNrb/w+aSxt9ZqaNDXxSMlMv7jN8H2/s6DCSXFO0d2ejr2AnrVaAhwm61Eh+/ntul5f1hnHucQvOESZUPrkqYGzvw9/jeH7pZ6GK+Id7CQOR8TDWEEYYThGjh981tf0JYx4QOBAkAbhfzq1vUBNVv9eZ1M00shbF+KqlAg/Hl4cdcBNrhQlfztYLut5psFH5vc1QznxGKhujiYFlOZHy7zu4iUkNRQvNNA3FkAgmQ7hh71TGCbmAxOVCeJQxvK48ClH42P+PWPO8pDf77Czo/cf+xHknnbz+ZPzXln/kvyyOnONOnl0x5zaPn1m19oSTV685eV3j5NbJJysp0A7bkyezp5R/4kQ79YKTT+60V7a7J0/zPJugEa3jQhdrgqnlkcNEyJziGTW14OEXTeAj1FaQEGb10KCGyzQMe7zl4OXWsE9v0PujYH4KoZ2ln3gdP9A1uO1NYNsGBylCGQP/ObwxddhvPxx04/ttbaQsQon3OvL28H7HPInbJ9XhD8bAHxTwBwb6UZA/c90YkMnXiYOcYuZxsSOE9sxX84P9+qvLdX+Kyv4Sj8vK5jG7kK+tcVECUytjkiJT+GdfvayoQ4XSaZ+4slMb71jwej939lD4G888Ez8oUM1j1+UPLt7lqxfvsoA70uV78LhWGbp89UiXBW0jXY6ly++0u/xO0+UTE9NhqLz3mzv/5nP7x/TbVc2EPBj10kIYeuT1vub2oVFxD3pv/yb6qCeh9KDRN7Q2pQtgquLCDM/6Ywru3y8BLkxUNAru+iq4VIBrAXkCxpALi4bCXQt3hDsHd8fjzsfdcXyXC6H0RlTTXlfnwIjCUcGBZ3hX9DfK++vK0Ed/3dH+PvfK8Wzppn+N21s3u5dC+mIGcTWOE+xB/oKBuv2KIwG1dxxQaw1CG+01x5QnPvTzyxbniQ4flzbKE6dVeWLTOJ5YY+TqhvasAXxje5W529Se+YVi+J3jpJFoVncn43A7cx/l4PIwO/jZc0fBqGDzLmBzW4nY7Rqxt+WIPdzIMSt4zRVU8k7x7nKzqe0N899TAXXe7L/88yhB5Qs1hS5gy6P89PcBsU9TW7yLacKWr5rXtMhcuUx+W3R2eAV3YjyLyRRxbaEzlusywFGdz1xhnu3lfPYzZw8vmnrOJTKlwRgD1pu+v/C+4AjwXndf4H1CCe8PBF6vBu+K+wvvm162NLwvvy/wnlfC+xOB163BO3VM5c9H7lwa+IFDxXIdrU8aIXJhu6vh2Mg1ntfvNR8Paxt1uQOjAuv8qsC6szFOYqUJdUXATpgmLmh3zN1T2m1z9/R2YrTMryXtlpYqGxtOFjEMWYB1aa/12CyY47toLp0fciOFHsoguH1uMZgDJueUO/q9U3zvcAnOaXTJ6EfNEdk5Kqxsmbk8MrzvhlEySK0NEVQ9r9Db/uI2ILLX6MU9vSa7w588IAsnt1NohAeLFb2QImSSobeordGXBgCkB1W+hzbfcxUMHwGcyQiIbKTXD0EkDcGn3H76ThRAHWj0sG9WazzThFjlueMke/wLQdY/vmYUWUtBEXGTsnjNeAkISMSyEQlebnGLmm+9HmgjD1YUioyNQ/N5vri49UrgPkpfIVozxuq7FrxOgOV2dRXrom7d0tULnor0BIhbckm7zgd2vf/naOq9pqgXt2Prvfl1tXrdXswzqCeCI+idmQ7wwszoMSjh9hpnNszqOE5MPXdpM4HMgPiYkPwriwp+22/et120HlFQLCtaMHSJAS2FZQMAiNnLk1qw8o4ADEXyEehjSjlJIhXAuCE6a0KxCijWyT3snl55N6b7slnRiCvIuPH6/dUi3kiRLwi+EgtfbeFLZqg2/1566dHiPswLQrGSaIE0s9UWviktTFotTBUtTFkt/P3RtvDB115hdVPk3x0LXrXQ655/eRUXWKBXi9zyjzV0QZ+sFrn+n6pFzmGbZK3Iez9z5UhDT68WufZvNUqaFkqSPv/T6gMnTKZzWSQDRXjRa7Ew7uvRvfQMDFRh8h2/PHeptfR0WwXxKgGxbYE4ARA7GsQOQIzmoJniRa9DUR3Ef1wERH3mdLWt7/x5De/Q3qtFPjemyKZqkfe89rJqEX+E2d8orNjKOyU8mOQVXtQOASGIISyHR5UK/lIqCG3pAqxEGitRhXBxLxohHGw1ixHugANBchTWmZaxzixK9xGzDOg+juhffH4Ny1XTlTyIa2j/cQ3trRG0v/3zNUl1F1dDfKWRou/8Qq3ocy+72pHCJ4wU/uQbNDU6No8WkmWCfy+5BAbWyyVwteZPjdI5KmqOrJr/+a4lZRZHONd4/Vv3VAkrml2Ny95wP8UDFkCLcNm1S4uHxVc7VRBvWibqsdxfGkGnVSt+mVQ8YVXcLSruHrFij1psKueIg7KbX/iYUcP3O7kaXm3ystePqgxFk7HV5PcxQR15gX0Nt811/AVmJbR7TdEuaR/803rP2UMecpX0GjueOYKBG0TyxhY4zQKcpi1h33X5csAZ1MAZjIDzZyU4IPcIRG99/TJ1hJ9+Z1kIuqUG0S0jEP2pBZE7BqLnLnd8vuily4LocA2iwyMQ/Z4FUTAGon8RqgUWRGEBUWhB9OrhlcuB6M4aRHeOQHT7PguksATJAur2cr4TNbN48894U4oYrQUnBbyJBe+N/7osDN5Vg/euEXhfuW9P7y6uQoCeG0Xh61+/XHGOoX9kkO6pgXTPCEj3WgOxF42h6ktfv0xp9K6vLDkPcP2nu+9zaurmkVUsEfOiYo2K+RcsLuavW1rML24kqoI4+EhNaR6d/z/0glHN7IJqkeePrsmafVGdIGErHW324tGOfnBxrelq0Zru+wZPy2zwjKhcBZ5Gd3Zc2dmpIenNX6m2ig/3v8OvFnrFiFSHMA+WXOJXa7j7DTV2aY0yzFy50VD7+N7njlDpwmqRF7xhjEyV+tSUfLGZWtpyW/3wilv0h1P4sMTAPQmhihV9tq/UkXFrdS2WonyjNvKk0mmrUreodOW4Sv+5Xqk7Uumbb7J51fZCOWAMC73nXmF7hhQmkRr8R67nXy9fRj0//zvdSb/oJL4M+uk9149qKde8bX+VPIZAX7lxhFP+7fWjxH5KtciHbx5RMlp9GZdgzMryrtVrFsu7pffJYUYjh5rYJcd8E+T744VNsgrF4efVxMsoH3xvefrg4pswETZhaiv0n4zip7a0uP3e/ZXBJnbTTubCbhqBoGw3hdXVhdV1hALXDesiAbbVGhTfqpVxR8v8+61HrueHQspmRS60ihXsjU5NGNdmWREjRfGbnZrcet2SxW+pFX/nG5Ys/kanxqkC+0SleLcoflut+A8E9qlK8RVF8bfWin++rreK5ppe9b9Gh9e7/7ZaVsQqimslF7I1i8xmRiDW1fcteJmLWrX12OnXrJY84YuN0jj4wbgg1uSA3Nw1yNVf3elMXlb9qiyx8axGw7TGVf3NmPXLG781umo/XEPF39bLOKNlPvj6MRNMp8DuHU5t4n/+SJXc/boK+um7qxws/optx67p3rdWysDDbsSnUaTq//nSWKlqFYHf3pGKfPcHLxhbxO0dfltu9bVstU7uFggC4COItNKEDs9IWecxMYNRZ0fuz1vm7X2Zdmh3/q7njsrAO51qmT9/sVVmLGI+//OxiJHqPlKr7tX1BS8IHReE3l8r/l4pHlaKR6b4oS3ex2vlb3vDkgLpilrxO+vFy8IqQGieeNdlLgWPY1q4vERV0Ov543hnR/zpXObm24DYotY3DAqewkRUjvPqcwuOtwxGZe0P69R67Ser1i5ePDidUNB8V61j14noDCp4CE3XRov/y0cvq07JLQ1BrdSPRS9qV+RUvquRz4sdLPUi/Y/e22hH5V7SNfvBKb2GaCuGT6ptfFnaWGG1MT3SxvT9a+Ntf7skD3631u1P3TxWNol6usW7u45Lmb7L2nlv74Ds7aXX4aaI35cVyKPZPVKWH/3MzY30X9P0cFFH4fKH/Zy8kxjUxXsWE3gJ1eO1+F2615rfiwz/9xlFY3mQdkpIJ44BpDfXIL15KUif95LLrKkdUMgaKnPBBG5uqL/lCpTyLC7m5z/9UyQJaPVCMeXu5xQ1Z1NL3LrpDHd6pNe4eckrjA/uTr2qbxQ+JHj28XDy+WiQiT+A6+X+gWMg+N//auTxwO2X7teNdPCKJTp3ba1z1Hqoe+mvo7GndEKrD9WvPvK6uvqC7w64/wAtxjDnAi/Grnar373qjpqowfmP76iB9A0Ru3GF5Zum1oyXYftdBF0Vh9xfxEUqLjpRYRMRJEaCJnjbv6k2WwiSmCKNM7jaGmpeWQG2OCr+nq2mbFHy+2+qyNYkN8DeetXI1vx+1+zN73f76bVaJfCPqZvHdy5bws1skqcLd9Rt4w636rdx2B3ntxHoscKgpf8wj3ceQ40NeA06usHwaJSDyzperoseuqKCBOyDNQQHAhz3I1cobrtqpOjFBl33NAy6kmqz0mgb16aSk+dlQ33Cc7yGZ3MCMhmGok3dfIXNBqEIaqOcYbu9abRblhwvEbWnWby8duTltXgpSkko4REfAfTQZwptKXN7b/nUC4xJ0+0XbWp4vv/+MUY09CcpWEGEFRCRR32Q200k+r1hfOzFMSKkSGtwon2TW/XHjywF7YuuE+VhI5t2ZW4lbMTTUZZ6jJKTfhuoz4LeAW93RdtXYeFg0fveXx2AjvVi/pecuZyOHrmgI1EDqOlR39JMKZSqwWji09N43JyKmaKO1n1i8s9FqA52MFQgLXmgMR55fa2m9hzWhcQjos0X2K6kRZ9chIhauxhvg4IMbirpLV/MyhfT8kVa2hnfqinm9tJ+8RFIcsDrK4d84NMHInVPIJudyStzLXiTIVPyYtcJcyzT0lj+jsHyFf7iWP4L4Lf39vFYTg2W0xEsf6eO5ajAciRYFl2/QCFQDNng55AW6CSvQEyp9jsM9JGRQjlS/tBxi4ClAifM4p6M38Nsd3T3dGyXLnI0gXPjvLbPMqAoIQrUTVr6Kkz/RcQReclbfddF7opqveIjxGA/xEvPcDcS32nHlYbctdn/Qe7Ww29U321ibwa528BWJbl7AhaTcns+FoFyexEWMnJLbBOWuwuxHJHbC/Rq1/zYyHvtcncAqjSTBPezmSeMzV1g43wiT9cWT7VREi8PsVXSvPUr30zLZda8jCsvzzZPz+OnbvH0Dog4eXGaXRymFMd8sbny4ubyxbbKizfiBR6fXXl8S9nC9sqL2/LyOyuP36prd/MnQJu0d4p3ceYXc/5Fv6Ff+9jPNq+fPv71pQlpol/KU7gmwCl8xUqOHK3SOXlTMOQ6SXLA09xDTs4xD3E34rh4/BZ+wR04oi132+DJr++ezo4acvcUcJO+O6y3IBwZ3HCXbDA3KFdMIcrDm4d4NzpnuKfxrQfO0GU/AqO13J7GJJW7WR6bcnc2xoG+uwOOLnL7Rr414WsaWdcbdNzV007M/k1K56bEMLlUeYm0t1a+vcVhFpHb27A3Lrdv5dudcvs+7HXg9qHu3n9gDpTbS/n26VJgP5Jjye0VfKsReAqjeQvQjscYJBvJAUnJYFfyBuGeUY8NDrn/roOd5eSwyyJj7Cj2QS6Z4kaMUUGek8jYoop8YD7ITU5188MZG9bimM0PcCLOIrrlOQoJprGewKOK3xwh7s7BzFR6uDWwq96Q7A4jhT/iGI+5hDxd+T5E/pnqyRsJ/ruzYVfu5JU3UPlI4Y80LG+65C2IEs35OH2N7rGH36nyy4DDEQh9NEh+GXAYFAGHjg44DKQwOi79rFehcgdXTNhACQhrCKKHPdbRKAMUiGYoL7sJufJu32LEd0viVynvaW7yRinvQtKSU9kzw+MRZyGhPH4kyM51FABctxgA140FYHR/0sH+5P2D4eWLwIAXozCMesoBBreAYWtjHACLNd+Ayxs1iuaP4vtB9ftPNI/z9rl7W89pIiuZ/vM5EaLHf+7eiCV1xL89vjb3+Xwf8V+8l8vxX2LnybqrMTaMfYuHcHyWUjvJP8U7T3JYbfG24ddORL1RuMXbTP5DvG0qOufe/L+G5Bm5XHJnncHlucRm1bJKSFazyyVH0Rl5HR0pWEk7eX41m4rkUultQkIImu5LHrPeYaRM9GlVH0lEkERF8iTO0JozvAbezpEvmSbXch6zzVZiSUVEKKxoHSkuzC8zfpn1dbKp9dzQieRLDryTkNRBUpetpw1cNhGoH3LOaeqh9BB66AFkdrhBbSQf+aU2SmdO5bc639ABZL67QW3it5swA/qn8LeP4F+P0Gg+hcs+kn89UmMbmV4f1bu3i7wPyD8kSR/OrSR9gBBB4oeGkONM/vjMLd4FECE+Ujefhe/PprOQh0hxigd6zLlqK3+/jbbStj2qp7/v4XPAec45DWQiUtvp1xWnc6Df+C11bg+5HM7VuRxop6RpAhs8lnx6rN3S4wTgx9Pj6PG71BOA8N+kJ6gn0m9KWofHqfO4qt+i8+i39qgnc6tP1lCjrv8gwJ9P/4HOH6j/yDX/R6m5sGeo/8QP/9MWryFt/XbvZ4nipETqd+gCzkn0O/SfH6d+l2t/Cv0uPWWP+i+6V/+F6zcV3LJL/Veu4L/qCtDi75kXm3SaIrpwqH6f3/8+iKBB+YPy/VPpD+ipQ3URv7+IycJQSUf/W+9tvnoa/Tf13+lpkrZop/pDhqFPf0j9PWoXQ7BLIJCKJF1RAcEzStD+Bz2D/sdQ/RG//6MCgovL93voYtozVM/k989kCBJDgWf1SF3Czy7pq2fTs9Uf92bV/+Sf/7OvLqVL1f9Hf0z/Hz0rvQ1SQqr8k16q/pRL/Glf7aW96s96sXoO/3xOX+2jfWq/Q39G/M+flJ801GUOrrF6rr7Oqssd4tvLnYG6Qj9J1ZUO8e2V/OR5+gmpqxzi26v4Cc8pB5xXquc7xPU83xmqF3AReoHDxNV9uEC90IHYuRqPr3b4uByH/jzPZvFCp5v8kxt5+yb2QpA5uJZ58TbV8uJtlLx4G/jibvGIAkASAoduozHoSbacoaRV3OLF8r6JSywpneZVon9JopqB5Fbc4s1KyQlcZiGQqDuvUn6XbvFSeTcpFy2dhpJhcSNSPNEKEFt/t1IuM/odErsybiGlDqrVyIQ0RNY0Wj1Qc1Juba6mb0M+PFo7VMfhRSoZ8YYQVzQ3UEoeZnLRWWqGSH9EaqBORFMbILDoRAajm+x1po6cXgicjY2WtMjn02vkuXEFTTtU0tsnOHqW6vCtTubzrCL/ZLpHTYpRLSbPZAnsJn8VRLM8IR2PDL08GaVHzMcqeQ6xqggktYbJ1utUs/WeW8vWS22TBHAWSTzR/ESvkU8jklhoh5rqOZKsag+olH+ASaTIuDoLGiG/0yxPH7O7MJmARDeDQLw6loy7f4Y8u0iwmyb6G+Tb1bmE5BcR4aLo+DIp5o7Fk2LOSrYgUhvk10N6DZlQ+H8bzI7wGv0KEwza2dhrIHUQJhbJU7VDbeo5PJtsokfsQWYqeiRPkvuQrJAehWRHbmIAPa3XkHx2RQZJSWt3Op2hMY8nm/nJFtpMW7BsxhOkq8KRV2fJr7MFE48WyjyGzsbcQmdNXiHWma3nNDDHIMWdOod6dM5/UL/eczCx6Px2DNxv/IaG7lyG7lxA5whwebI72gkW0k8e22tI2jsoo/rJ4+nxYNQn9P4Icwz95h6eZh5PT+S1Jxd9Etf4pDL34nk94lknoN/qqyfTkw2PnddN9nk+8rouMzVwyYpSayjdj6T7MaQLxelbIDkhVqhZpPtt9QiiZSSLz5940NX85ee3lfZ9MxSk8ogiZKe7GW2CX1sUYpSm/wBAFslpi6bR9Wj5qUvPgVDQKQ4gFqSba/Q7QABSxL3fszJ+UQukQPYir9LvbvKbzn1olvz0djRlJJJHYR/t5cjR2f5W35fqgKKgSIgnCAyWTv6N4YkPRKD4LFAcmQaQbKVDKSgyIWkz77Uzo6tpcDS+hGRJr9L9QLa/6YSmTbY/byTb39WO5+issuSAy9zcMkQ8YWRezV7h3aT80l7hF9rS7Spfl4vbQkD+Tr1F57OVE9LmkLZz8E/3EpTw+729WNDy4wSNMWA8ZfTYTOs4vkDChVAT9tthT/d6rvKh0mcBP1HgCg/b78VezQbUh6Z6Hr+WBe16PNNPMv9JenuGfJ1DSqw0pS0ZVlsYe1xYixoCkZu+U3xnk8+ZJZ8jLTg9x5icer6YYcxKiQlTGNbSzOtIGTFl8v9NKVgBfTFv+OTuzqp1KHzEr6fxrWTNxPexLom76d+UejFwq847KC7AT2dev4fqvV0mCbqpNDG96MFmgDsfXW4kyekN022GXNAv1005ZrU5Eu3dHE2+QKYGxsz7HMcbtSADB8ZQirbcnYXTiFilPOVpy/ahL5Q+c8bom6fucskz3TK0hAz2YZswfOH9ofRB9zKnlPIFM7L1f09oqoBftSE+s1G/LF0xUvvavCFmX9dGg5uzIvjIM/nKZUu8AALYKfAHc5m1m5U/z5DuHluc+gMSe6ObMyFjcwPycu3DEESB9A6z5Yn7d/M9MI7dJzf5ZzDkUaP9c8tCu9iURzFuMOzUMWz4JyeGIFyeFDjX6bUqSHcE6TbnZe4vGukfWQLp77GQ/t4K0q9dGuk5lvCD5Me5ixDgrz9wYJkEqCF1DPq2MfjUGOVaAaNEZLGu1dLGnXwhvodw+4v7xUtfAC/dt64IPIt26BmOcyR+WIwb5Bu35z5DG8rdkhtqr9PXYet8DPXfZ1H//Tb17yeaPvv5XxiaSqofHZoOL4Gmm3M0ZQ2DoA8CHK1GdxP94E6DpWRtXrnAUoE+OeC43j5vbwkw0st5UlJ+ODnoyu+5uQck+U/UG8+X9qGMBOTgEqaHUKtkE6Ag/SgOvMC61+NyFMldqqvHxUFXZKsdPXkeIHGPEhJvFJafA3fDonnoqp+XR0vD8UbH8RfnJyqkSYnMknzkQSl6TjmRgXGKDWLhO0x1L7m+9EVVtmCSDeaiZtmlD4QxPXRWOHKU6z7muKFgD+NSvoZrBAMEoB43B1XNL2RvAHyGuSiC1wMubi82e976IP4QsGikwnwrd00LryHwGlMTeC0epbreXiyb3fvyzW7uF39OEf9jFUdvPcwjYV+/JVzLAjEYfAz38gjoOQWSIf8DGXJL93yt9Fw4CfchwHTLDrs5F2keEm4GmAWboLjVK3A5F9Qd1/3o43csCvMfO+4RgBpl7rQEyBOAAEgOlQyoUYA8XZlh3z9wnL2LjffKCsIt9n//oFNOQsq1Ta3kpu9BmwsQtQ6saRu4iZsxUp1ypMqA6GFUwXPCM8yU9w7aoWw6b8gCu1HppQu2Ru/eY3pX4BkX3+pdiZXA+mK46CeCkOPHMZBzScE9z3TdxTvDbNZz/ni0S05JI1BI+YBAtBl0R0BKAZIMhSpIa2Qe+5QsnR2+/bS+HQ8t2L2A9ingquUi3qlx0tK8U8D12RKuu3K4Pua6zl5ZAK5Hh91RMDPRhdDCYb0Lawjv1paq7k0qKJeqQb5Q9PkVxpAKZYl4Nqow0sEsESFYNleXiNq1Qvlaf6USFfD8MCvmQM475pLndlysMg9tnz11+/k/Uau3DcldEGGTQ3j7ML/bOgCyDEM58NpxBEvKyWtzFq1tz6NbH1u4+NNc287P/cn063d8btHakrc7HgbTGKo+TvmVARvU8BjcpMISj2Giu+/Pgf8p3MX34ZwKS2JEo9xhCz4jf8n7I8gx/mWPq7DnjIp1gf+WpRea1vqkXAUyQ2ejS8H11iTaz1lJUq04SU1587Ws/thzF1XXi6lydDH5KVef1uP8mYC4oZgz1z5JA+mJpcQHNksZgJlZFtwqzEmionxCNUI7EGR6fSCy/1CuJf6H7Sec81ft+Ze/5yyKtd/wf50rJZ0HhHoUAKEBEAq4NXZAhMxHNWyYQU3/gPLickVuZU2FOFcrjZ7gPqJokEU1jonqHMOURUMqQEP4e9wcs47ySrkRiEwLAGhgSQvy9QvMCkLmtUwn8MP3LPWJFl+MMVc+bhGV/J43v2CZxgeuExBlQY3Bgl7jyIvgkbZHOSqttC1ejjZTUclUt4GpsDOFZYnxUCun/YKXVFAMP5uLPDzwShZiYMBCrihfFgeVPltzI/OlxUUe+ZCbbj9r5tUU7HMaectkn7jGPvFNyi3Zx0UzrrAP2BZ/zD7urlwzH2UfFxAaZ2T9AgzzzUUFyCjTAJWWscM/orGjEH8dRyYXr+0uh/KLc52bgM2q85Nn5idvZH4aZ8y6GSOkFBwFiMVyNSWbdYr1ogpyAgYVAlLJXQ65irFtWMkBBRgqqEp3o6jmAZCikDwOKOKI5BGecbBUcoRjlm+FsJZAArtfLIEWHWuffM9yMN6oYK+RDB1WRLx9lZlxVMOoOu/lsAKuLNBke0KnXFH7+CfAO4e83VqNd8pVeq/RrSzhrvC0RzL4afiNSriEP3m5GK++7HjQKUfxhk0uzyzYvyoWDbsjR/JCLDqigQ1HOhLgn3DxjihvEVqgJ0emxYjv8NHxhm07uT+8MboIvgu8EdxX3qhxBzCr0SrnlULwlF7hgZ4wVcMIE+yDicx2CyKEfWEoL5e6epUZGvEM4Wum0MJdUJjKQye51DuqTOUZptIZKZKDruYsf0nO+vpyOGtECRckaO6J8E9MgSDBowhIADANo1zH6D0XwCUAnqAS20iI+hTiGuRIiICEiCDSIKEI80ENCaB+RG4NBUL9oKR+tBg3PpmJ79w34tsap71a/lZ1f6ncOvK5FrlvTHguAmjIKYQKGxkdLUfI4zueKRbbZdL+yHplrOfQ3fgR71ZBsQ4Chip7T5hwXKDCkQgMVByPOANCJ5KJkYLKDhQ+AZyqoacpceSU/aW/Oyp5qjWvxk4je2zByqG4i4nLq8aLy25SSuBCbIEXHTx1hCS2GEu+IzujY9SGvAsymtJ7Li/srEfYMC1WoWWvLCnrS69GlyDo0zKWIJBzpXQm/8idHBVu94O9S87WnF6w90dczxFpIl1zK7UvH2NPRNsGFShTjGqpbVakiqu7rjedx5SNrLmt0ePVNWTGR/ePKxZIX2SZ5j6xXlLLbbcHkEQngl4DcvFFKz9Q0UU9ckVK+X0hTqEo+4S6jGJtK0nC0C7pgVhwsluR0X/uaawGR+TO79o+x/54Lh1vKwkE577Boz2PhgbnIsR94DwAzsMxZeNC6hc4j4HJWjGHi4UG51oR99G4Y5eEa1hFD5WpgXwL536O80hmBoP7HOcBcB6UNhIb5/s9MYxb40xgK8dakI+1uDJu4uR0LcJt64rsxHPIUeahI+JRL9ugYnDYxGPjBscJ6p4X8g3uNmV+X6o0zAgbVUO4CH0GRF45nBlD1Xch+buywN5BLaZOmA/yxijYVVbCwBXPufXwYgH0LaJsOqPsZo175d0nbQCKCFuC0ICMYi9v+UmLLNrftCyFLajQJkheVVjul0Ly2iqSXRuVVSRX340gGZgtdmGXj+E/wwwpvIDBWy7vG3KQs7YJgsd8sUGUiy/PSBcXDD7C2VhZGGMaeXqgyjKQX5enQiEKtSONWy3Hyhd3EodhFaPCex0xKRx2xKDAQGFU8l8TAAG5GrwWlFkKd2UJRbsyhxxKHj+n2nrEau12l+pQxFd9oNSle5RvtNyQmud2PGppHyknr5EmGNq2ir38COIOv0/EuAg2elKOhtw8HgMNsWUEpQ75cEpr4dIytsa2n8hnLSYZeChfkuZGyBh4i/H9+OoLLCfmXlAcaxQ3+3DyAopjY8Z8texp5NabtaPG9XyACn3B1WIBdrWpzgFnBGLBMRbh5rangQec4sHqw4Ms4C6gyWrJw0+tldxWljSncxk4v+443hLmtdzolJtJ+PFi+9+iv1z9xcuXob94bbdQJsqVvWeMMI30rQclZetihtq3fuXyJc1qZUMVs5qXbF1yM70cuTWfk/R2ADTqRfBzy4vgXtuL4Jjj9YVfWA5enRG8FoatAqejy2SrleXi1ang1SndBi67ouo2UKAl+RvHhZn8mO6rZhFFQ3Lyu8GRN1elYH2H1TwEhX8ia4El7BAblqvM2nqyD7tKlTIowDmE5dwEyH19vqUu3HOh5TypA2qKzpPC9LJxxBYYLEbJb7/vuUfml5H580e+iyCu+taRa1uc/RxqFZRLfNkQCsUO7eKigzr58eTVYlSMxJPh0IJq5mqDYPCuK7ctFBvEA7FCq5ZsDC5VRn5f+5e8T9Yq77PWPLgJ7SQUyLRRzKSRtaPntl0hUvnxglg1C1fXQdH4kJoLWbtG8vZNqlGSXG9dRNTA3845oNzp+eXuFiXUGqgWGNEsjiNyoSAHjBkXAr8Xaz/ZrKkfORgY/FzLiENZMq86BQKIm8Jz51A2Mb+gunofE3bzMnONape3LZlaD1HyVHtjvl3W1wGyQtFy9Hakf4ia3EffpBeQ3bz2UHchnzDbxEC10SEz91LDLmXswl3Eu7QL7SSmCI0Q4j0Ydr1npSK8LiTIFXUJcuUVRoLcjjk1GPVJKYnqC++5Nd6DF82hhSwo9mKHKizxE5W3cSljDNlicrWbykDFDHI4pGigomKHhMKBCgG9DOyI4oWissrmisiW366YRtYuZ8m9iDO0tBccknq/ih2Acm5xbb9fyrziZ+EzRt6Ip5Fr+TAo31rvcl+1YbIBJcW2yXl9BurSUgNulCsvtFs+Kv2jhCnKfZu67HK1nPrxlRW7jmvtkfnJNZhYxzgLAH5y0hcaZlGNeheKTSS7A/7YDvjL7wBj/9+rU70v0tSy8oGuGLBVm48s/H2sdb5an9u9Ulr7pTVAHHULJ/FAnMQrefpQKVIL3f3iokq8QEGIIp11BW0WqUvIx9QS2k2U3uJiNfLtif7TNqtRwWolGxUuJpkr7CRv1pJb6nk10vij3AXMF0TwhdGEEha1KMjpBeL495O7vIS8ZFjjLrK6U3BX0aPl8ttol8B6Y7vkH5nfZvmDPOHaOxDyD0oduKORXBN40fiVe25AtZiyt1Hmlg7aesNnwGvKKxzwoYusxS5DMe9nmFXzHImQukhYWdp9xKTT0LKycH4p5C01y3xhc4OsWRN6zZtUqxR6rYRCTJ062+ETIezi3qcsAAPJixOQKEoVw3YWwxZtYI9VVDgeHGsIJQyJIgAaGXhtd4ZYa0TQPCThSywlfF3CwGTKa7Ao2l3UI3TW8aTg0KBi7oe6FSPRAF57/BnupzU2vCoqWhjkkkIYTMn/6pYjLDQxFBi/hMrI293Hzfp8/1dT2rNsZSFWp0vYysJFbGXY7wjK4VRwXSEaCr+GzJeMWh7ehj2HwnxFEMJEmBtBQmAtlMeB1pR3K9+ybUAjhsTE3845roh7qTsfCk/4aCCGEcIr67N96oM+5abgNv82GAGmAZ0G0jcAmNH4z56LQbfkkDP5gHte4cLEgJjT5vjmx9/SqQy3VA+dEx1Iz/6AJv0rkT2ikcmjNxsf7dE1HzrUAF6BG8iREbw2ZCsyMjqPJDeRFyAC8f5RzLD5BUOTj7+drGQZKQI0TLgNx8Vo8MmnCBqYMU364MyGftzA40QgfhvAEzNSqVQUXQFbwv/atXqsmtZ8TU3Ly6nRcyQVS90jGnD/08tLKW/n0sJtvBi7XutV99n3O2zQkreCpPTtkrTf00Qt8G9kxQ/3Ma70pjqyd3PebpNB8z9C2K95PJPTIf+SHp8wRXvkJIwvIXIEVety/7PfC/Q3rvy+sD/he67rNFB0Iwat2/uNfs+Fd0gJTa/F0287SpKiVd9q07XbhLdJ2QlNVsCwowM3HCixomuSyylg3KKBTNfb/M2yN0Hem2C0N5pB5aA7xyT19/R3Z+Gl2zthR8cbgd5LEjuTGRLQlTabT7tuPG6EFZ7tCMPs7YNwM6JLsm9fKwMGrCSpC+3d2WyRoRJSw6S5o6g2VGLVrA8VEd3N3appiW7kJKEmfN+K8/GjcqjE+mWMl8VQiTFU8LiBx0nZMcj2NsylGCoyl3FXRGg1EadQdlS1bI+BVukoIONERJqMZYvpYan0tMOoN4bpgQtw+15yDV43NoT7DYvmecPKEQABYI+AZfFMlf+F2XGhHR2YbXWj9qzkqADWTuFTwUkWyvHbFWYNOWx2Txah+TBvPrSajwzLBiMsi+lmcaDcRHhIIANIBg0YX4YFA1yCEXb2u8l9ww1XKE18zPOa0O4Wtyqa2ZWtLAhJLY/erJwQIVk9ewWhvGLbqbHD7DhpdvMtW0mkQ2lzoS3DQPQIRxjYR7smHWgsv6BnJTUtKrlJtUstqo3mW9Qu/TZbZgXTpFbvPQMrj2nLbsYnYQaoQFqu40HbGLm4Qpea+XLGh9lfZu2cLi0erghabxqySbB7z/tjapa76BRU5v9ew94y9g2Uba75oweKwBsBDHiUzJaeMaCSL7bTtgA16ur5X8f5K9amNOnzuz9T3xTzxhj1GlUHty8vm2/2ab6p9dKTPvRefPv+sW5ENhut/X+XjTCIRnlpuWx0wyuuuN9s9O3R7LJC43LPobRFUOabH56J4teEczDXlElL0VWzBwXmgCsxCvqSK8Ezd3G+/In1OkbCYQv3AWu7PeSDMsp+Sr9Ce3+h3HQP254VEns9JjjJwTy+3u9/rW5BKeu1K3WWAxZVwSIbrMTKNEthsuDCGiKDSJseuef4WXiTeJgzHOmJr33va35UPjkoCagTMy78nqMCsVrjFfyHlpFpQJaEUHADXhKOeHtJilLx9uqaRANBmWjAHZNmQHllggJwISY36QajRa5ZKKCbhUK+OMFTrl2mv+QFvpMykkqfCWG8xVnSlUGkAmtLOjRb0pHZko41I+IdVgge7lu4T8Ts3qAWLi2hgtNzyMm1OafcTjcbuY1CiUMVlOzmWhp2LeJhTvpv5xxqkAMJQop2qRB0a5MDomDQlLvdMS6wzsf4Y1/2eJdKKVaT/AFU4IQ6WqkHZblZxpgY4AmIYNg9XJqQhWgMDXRNkockh8CRgAt+NZG/ogZNiuM14CcHWGji0qTU7jx3Gfb6Fv8zsBy5W3zBF7g0bbeZSQr6apISkDjBk7q0FblZGYu9RilE2wm1k9dASFV5IfMKbvDxMyj4IcRPQXRB64bQPcR9LLT2jfxZDq1ldd/YDdW9WOWKZK8aX3zil/hjM0JJWkdqczHK8vDTQbkkzb1SJTyhRF7dgTEQB8Y6qgJLtPvJidWt5uuuKLeaX4Z72Wd+4TEYXDK0snDXA2Z0hYA0IkA0OrrCyuiKsKd07EdXKKMrOgaja/7oR9eDo2v+lz+6XvErNLoeHF3Dox9dD46u4S9/dM2Xo+te350eZ9grcQwuqmC4wG9QLF9kwIUy4CIMuEgPOGbYJm4PO2bdh5fMvEKENu47sn8zQW1c2uSNmP7MfheIEOnfNFEMM1RBnd1cy4RdC3CG4YE/HnBRPgaaBIhAn661K5Py8xb+MPhk1E1SC5cpaqkVXHqaAZimFKPNA1NN8K9QRlsk6+yVMuj0OhgtofYpa7TFMt6bZrRNFqNtglZgtEXoe0J8SWglLhPUMj1nDJ2r065PYCE+Y2dbMHwxUSxjJ3pvvq5YR+GFS5GsqqfzVTWeFQvYLk644YbBjDPaFaTdizUouDB0uEyAFtxTjdUVWG6uoGk8mbZ4MxIYAAukSp03J4oWK/b+bvLXnts6MgNmfsGCAX6GBRNG+CnYLfirSUEp0IW/AhHF4kVbS9kBLFc2A4NCoEcFpwVSi2w2mkEelULdcoAJzCZfoDf5QHvQrW3H4yKpNlDeXiidiHNTsTi75qZWZySmDOLhbS+ziKwTruTUxY+oCF1oO/dVdEQV8kRLSZFXlVLkRhDxfkqRoJDLkYiHWEgZykQsnr3jNidHdiVbxV5uXM7Mdi2GfAkGJP4q25SxsfW39GE8LSFhIDb9MYQsXlA7/QZ84iDD5CG1rR2AFujZsugZCkVguqnSEzu9rZye+BHnxEnaTv3rlpSq07NVfFKhZ7IUPV9d0nMjl7Ln2DKs6VwTXOGIQQi7r6e7eaoLsrOIZJ4htpQ0xg18eZP+8mMOGimi8BxR3fIJ3C02pHEvvkXk5jR3zYa07A9ov0I7ZNoVrw+fHJlmvYHlZD4aty631Cg2s0V5w7uaW48jaSTr2HZybGN/ayzyaDHkHWfnhqHcJa1A0iohzY2Fz0v6Gvv5a8vnN+vn3/e8LgzNv/oKs2jFpXxdXD+ORUMu9WN82uQmm5Z+7FAz148benzKVAyGnTT6cj5LN8Ypyo0xirJDCabuKVGU+dKqa8iTi5l2LL04gV6cMDhQsY9SL14W3R+ku1+ju/crT/fj7YSU5I7Ij5fgILaKs67ypLRvfgYi0kQiSfBnoWC5xQLKH6Eu0005I3vxaIQcyaKxG8bo8jds0cIzjiGzNpTjb/waKdTLIwoFk8VEKmukApMj82k0fkaMKjL6bs+ZWHqsFMPjiFFZUFXMRIX75qLjgWJZdTZxaY6OjmJB2SrGyagZgT/Hn21GCGBGCESjKfHYluFSWMIDiijAcIHBvIuU2PAB0kpO2xousYlkzu0HjdzM3bLHQN50iwIzPDrW8GhieLR0n6iFmrrWAU9g6jwdnz0vmxEijGQsJr7EdDnQ2UZHSDx+hMSW7pMkd3puhyXjcmk9IgqDXf/3iA2KFgS3x0hTo51JHBkSU4g/oe0EcsaLAotlrUXbFvmVKbCVi8JuTuSGTUnovfphscHRtogcG2PTRJW23RHCWhSNQdHY6MJHS9G/9Dz4Ivm18dtpjE9RUK/MzysLdHBp1XbRAOEbmvDRLoCjCd8s4kRbQnZPKDWO7J6WsVZsZmDtvicUCd2amm5CWW3aa4JuTeWbtaNHCeIyDd283NiAwdgcoVNBPIrH0MkfT6fWUnTSe8p+xd2nZFuR7KWOTAFH2nleVf0A4K49zGQJX6wSAhlLoSDSG4PIsI7IhiDSniR8k2eSgvnRjJEC8tLQj2j4wjTuokyD2eMI3aWaxeLYdlfSZP5Su4vTXJdjdPWLLvoyTKJFh4l016UIl3C8ldXdnS/Kwt0qzK2sZVckRoZC/C1mZfU0c1T3MI6JefVXXLMKi72dY61Z/Rs0q1/B2XZEtQrEuwAQjapWga1ayeR7DFWrQFSr8ChUK6fY8fy/q1rRsSb2g6qV0LY7/wBXrR5UrWQMzh8b1WrUAnjrIhbAQw9UC+CDFsD5/8csgA9aAEF1mvwl0L2ygbBWk1cMgO/8pe+yDH+ZuyyLbpxIv0fF5jsWEZvvelBsPlDF5vBBsfkAFZu/8nS/xZWEjpU0mXaiTNvNhtzewq06+B1BmrW80yo0VUS2LQj+KAYC5VazM/ooEHGB2CpQOJj4o+xQ0XjFUaFmFIq0/F0ojUKja3lzS0FhUClDtivre3d0YR9AEb3N9WH0wt8IzqTTHjBl96nIT+ErvzSFWUkt3RwVYeUzPSOFy5uR4jEzktVCBGI2K8QMS2L6iTaUNBdGffBGZ65QZq7S06/EXFjFXJnLI04oHjMXvXeRueifHqhz0YNz0cL/k3PRgyr8L4Hu73R9zEU+/92v2cgFSYMxOYPTuoS1yvhjXpMLQrpHmIsaVObQd/m3Y6SvUMgBecgzPnFMYnlIcblIsGWsYS63sGcLCJaMDWoyNqgsB74ls5O/bC/EcgQVE5O1gRFJ32Pue5z3PZZNizDPigpGtabjEJORyZsfwmXXN9iluA8atsY47sbF/BFXfQBjTOq5DyB+FDNKs43ZmFoGsa08U6qkGxDnUdtfNxbQo2LaLz1Ya0BE0tii5v1mxZWwOWZa+8Ai09oH9fOfPCjeHnjiTdjoFy7jHojEf1Cn+WUR/42eFzLxm8veF6zvGMhWkewYRIUPQSzUbi6+YyA7RHaibGoCOtkxONJOT5c/SBlnKXYM/JxcaXWnRzWPYoOnC/JMooom8aVJE1XyxNSs+Q+OxlN1seHTpRSUSfFklIlHLGxNQzXJZtCsUy3NqdZKqHUEqtFRUG3tL5xqD1LtsOek95NioJSKhHDHjlwUA32dPuSjxONrwQg5qVL+apIROVmh2eQYmsX3kWYpGo2EZpHQLKJulW6wESxGulE7SgoKpjQJCk7eRwpG4ykYjVDwfkpKUPv/JQqCeBTVKGhIJ4T8pVLwwflu+ZKzpF88/ys43z04383/qs53D85387/i892D8938g/Pdr67kHD443y2Xag9S7f5Lywel5fABIS3f9UDTWGL0uPRpF0JOgI1tQi5OxP6iRJxYnIi2U3u7TsQudy5dRGkZLkdpaYN67V8gES/3jfAc4wuhqTjiC2Gf8OeClNjkkrSKbn3ik+HcLDb1WqYV4LEplSd25dbruLJVmFS2Cn2wlAlqaOebfN6Sm3wdHZzQ0pwyISzSFdGcUkRt/IlonqQIW2Ame/kEOMQTDvGpIcPc1bCrVi6aXQi3Ooe41EZh29RtMixmCapoEV9aNGlzhyubGbHtADNqyg6J8RCa/Jgjm46t3ao1uunYkk3H0bwanYQ6yY2+D3f51lFsOnrVrY0QAzwsnePDunO8bHIkgK899oSGRO95aMqFhnIJA5wI5Up3+JJ8TUl01FRTXHoF43KFRbaQfwVCtkS2Idq5gzyqnaw7yCfiIG9RFAifAtmmUUWbpgF50wR7dSmUnEZtbI2uHLM12hYK4NNqTqM2dkMlp9GKfIcUz5KCNO0I+xYtWgl+yDMZSV4jYCx33ZnC1sYUrcCTFcIhgsp2mV5K43tMKFR7fChUu4ChslfauR+r1AdXqQsPrlJ/xfWuhQeE3nXggTdlPzhlyxb0L3nevstzO8cw5xwGap7fMMF9mzCsMQPjkgi9mj1wqNBLohYxneIZflOn6EyCu/ZurqVj12JcDyaQZx9/7HpQigO8aYL2RVpQ3ZeQmtr3qFtw2NPgd4ynBuPpHcC/xYAOSWeljOqKiPApwiVOyOcX1M3rSP9eyFdI5g6o1Gk7I0M04RLXli5OeOFSJ5/Am/YEPtF26l93xg/wTvFJZb6dWCrN2ZfKNGdXe76/z93rjeOFyhHByi+OZDMeeaGFPRVpZAcFV3i4a5aZ/ZnyQU75oOeb00ADPVo9y3+5xb8DHVoaYDA2QYBE1x1Vks4lJTmZg7CASygUUlhOYEKR/BAUZ4zrRqtCEYwjCsYevoAjlSjQ4MuRA61+4QxdOsaY+oPKGAwWTU3nVWjmJS/1vEC78C13XFJlXIqiHFFg5Q6MNWwUjPryWU58iTWt8r9FgC/jh6lQRT/GDybZpcaPDBhz/AYGTNynKP9ohEojeQHjgjxxlTyxnRcwtsmTtD1x9LNjnkcJE1cIEy87Z+Coo99XFnH0u1s/f/PRmIMf3P4U1vi/al18QLrpPeij+fe/HDe9P3LcUdmLKUpYgUYyAez3oIVJHoDFD0XCWSZjBf41rhvw9GtqL/PKQCUVPgCMDU00PAzGJ0XxJQlKeTikxkgx6eJMUMmQ4+kJAhX1HInYh26Jk498TOmGDy7K3Dm9oAiIb1AnPi5OOizOmWZ6COSpHMXecx9rRomcCY3DtnMy+BUfdn+xzDJ1teXrltryjUJteYDi7an/F/F2fKPEWPXg8nvw4EicvfZYc/bHHReHWJraDYVGDon2xidf8kyvuhAecrjzuYt++6WXXjb+WyGekHo0jk5o6pfnI7vymBEOLypNt7hCN1+OOX934KzcZ5D9bQvZ1ppaOn2kFfVsPl0UC2o5WsiV2aKsj7wcBdLdvK5c3AY9Sc5Rt0gG+migLJ+Po7KIrKqh65Vr6SJHErSG+oQjOq+rx0urX1lvav0xKIyfYdGKaus1EjKR9Fw920A6X4LpG3febhg7Wpiv/iib3KWmyiOKshWYiKYpViu1KpPQFE4v1k+jvC3loxquYHIX19TQBaeoxQUxfMSRvKELMhZAWOV45XGRTXDGFEbmVNvVi/VKRkZhhjwtlIOLnmaS3D6w0kyEDnX0XQQlx4DlUKrvZhASRNPKLdpdSbyptJI6uHSoi0uXUlxSs8YFMG1y+lkoEDVMGFEk1wH5+c2MubHhLQA9YlwmBMYoD+sH38GDZB8ExhFN+uhhwZ5O/ahzjwDSqABxSgHi5QLEqQgQJ3md5zl7w31+kVxpPSStO+bMbLdyZrZbO6bPvUl55TF9HrNrJUdZFkiisJ1zyKKzk2V+3t6Go24vKtuLYLwJ8syj3EiERjI8CXdmMaYLXy/o8IDiOazR+lkgbFvo/ZVdEPLwVgOnEoxT1IxTWEM8axP4J7loTuHq4u+pcyUnl+eBYujMc2F3fkFsqFhw+GZoBUVGeQDP9XIxag+pBWYzmS2qB1BnOTt9v85OPzBn0ye3+k60nEPhJaFep1HMPdZ5hYCMNN08fSo7BaNlysC/wJykAeHhISAN4unwh56bl0ddFOzo5Kf6kZ/+GNBCyKCVOAtxnF0IWRlDqlIgBVBTkB85AHDMkXrvtQ67AwRyoKNfWlLIk8Lpm7QctkLHfYglMxXHFO2un50now4VpuRZ5fhkPO4JwKh9jBP06rCk5PfsRvLpAP23jgPxZGEQGcuoh4x5jQKlMFNLHbitHy9JPqzhvn0KfSkM/NHj20clQViRBGHye44ri7GGXj6BtZSDPjtiC26IvudQozwqWS+ynFGdj9/sVo5tLXWSfz1qvvRKnvNyvgzAl5Uyo3zpWXwZ2HxZLR9JnXq3s41CUe8rRSFhXm8s83rjmdcrmdej4P/PmTcYw7zRKPNGdeYNxjKvDwZdgnn9xZh3bSU5kRBAzvxmifjppTjvQc57kPOuGOU8ckZ57/LxvPeK0Jk4evaStYknOd89k/PdE4tknfXixVmvWWG9lrBeTC3wQnMM67XqrNdajPUSm/VahvWY8bhMq8px8S+O41rL4LjMl5JjeK61TJ5r5Tynn5hiytOLr57kv8/aWOwBtvbji+NfTS7PVm7wA6FBTlyAw672REFfn9hxYfnXip9YKqnL/e/rV45t8m2OWvbaI5a9JsPYsQ+WamhVgXxoruWRTza/SypWLtOCdtnApWG6K6ZfvO9Kz49CNo9a9V+PDEjeXm/xdQ6071z3zrz5YhniLxil/56tgyyorQCCm1RYrgDCBJVBWS6PBg8N5BG5EL+f3r/4sdGRfWx0ccK3zCD5yIrzHEIYWPKuFDs+hag0AsWj0jtKJDdEM4hhXBJEo8cIGwiGq/Lkg54T5Lg63FjscG/ZnRpdFPq2Hth7+cii0B+jCvrodL4D6ZWrT9n1Qo+hhts9DvXYRY18lwrWPArsxR4v8jx7OdEwpl0sJp73vyFqsD5L3/oSLpAFncYI/H7vWx8toQf/5TXIaeK+RlutFw7mvQ1lulZ7bLgY8GeLV9dmapjjvln8GqmyxgyTfBUnYwcEKmBzrG74vZe+WnfDJ1+6wS335Kx2Jlx5WPsbrcPa6YgTBHBBnqGcYBbLZBWVXKg8+bgoJDLXYYGNnjYsdSQubFqhXaVVItLvvnJF/k6m29iQcjSpt+zdrpWz4GaBRnD9bIFDsWRVU6ADhxV7YjhiSJRplcph8DzfQ5KVcPGptZT6KqhksQlroiKsGQtKW8f4wnFZGHm1sG/XLO0V479pld+0EqEp1v7PyNjtQibtqz8DAaQhkQmirlqCTij4jm8/1xSslUAhNtwtUsjHjCwagt/72g/ltSXOsGdjxnDAOmPmY67y8oTSciqk3PeRw7jYnYrQZHVl2uyTX1+QNsnDJqJPbUw4EeaVqDZ9REczffy25+iNQt282H3LuaJGB+8m5Zd08Llt1GwJLsYhhABWBf/ZRa12dUc0anFRqQYaR/pCaD5ZoyOPcoGIHEE/cRx/37LyWr98fF7rbtHUWnzwtVzvyQIxBnrjdl/88bsvnnhQiBbgGy0AxPv4lU6ubVGgqyOA5e+c63m5QgYb7yKgX/GWK8aBntyBzi8CvjuCCHd8bW6BCHSiIiVni+1gMyJUAzTaJ8cglJTpOKZ0MVV5qiEjj1zpPQOBv2qHJQnh7W45CdMihtmROSs48pwbCJsL0ItgKcy32LzlbLF5i2+xhVUih0Jk4Cmo9RnQjO2MTReZdsvOYPYt+1MR343kK44z3sFmfJ/LTSvHEhgO2l/cqu3byJSs7X5JovK8z5JN0PWKQEApEQnkow/4iDyNNxkNdfaQjqZlR9/vaQFVcMumUfV2OaKqCvcINkJgA6y1ODbCwsa/OGs5i1Q8SmbHJvNI3X6vgQWmo+0c5D9B3wNpKpaEbaObXaOHr2jUNzTnhlBirHT0saS8F3JwA7syh0LivxoxAM7YDr1r/2VWh6jaIbI7BHJuKjdEvuW6IGZBu2XOCyJqbMoFFXkZ3GdRHy5WE4i1aE2eECYUwnhPyJNpj9IjGKGHL/QoJInQw5YkniaKL0TxQJQAEI3MGOPhFpqMzhhPdTztjMB/XolKUWhLKQ80o8LvtjJIbY+4I9ie0HwIAb+2t6+ni8fapsIWFYZqx5y4MrzfdeJ9+XPMOqiqPfk8YQKPXLHD+LBZ7BLI7zy/DIYwIlSQdNgRMYNCP22ZGbmnJYtYBgK2DMTkimXA0aycAZUUkt+H46Vsk7iEfeGAK43N5O1rapBb2ySNi01HVLYvF+9mezXAJagc9CBNNlEeQAEQn0LMq3jukmfsHPjSK0899/CloSPAwPdyErq013NO5w5jH+pvHaaZ0W/wtCEeBL52D5FZlTnGmbxSKCxv00XegtGq1iIAwg9+2Mp8LDU8EdAMt4TjNHJCavJAY618DgHmWjzAxqoeJiR9dLQsGjRtvIKsvlA/EA+BQDwEcD0sAs14UZMLX5QAhihMtNVt+MJ1PcR6IUxAFwlrwmCjliExV8+VFHubOtopoBiuKQm2HtsJVGjLdJNAr04qW4q4bVKrBBrtCFP80mjz3WNJm79z3bbQRujhllbR2lDTtY5aSvNjkIDcvPo7Hbh+QySURPJyY5qPoyz9RL/T7tCMZtBCu7X7TCEZ06qjH3Wq8uJJNgEnXHwSgYBYAoGGEwm1+ZYmQEYPKyEv91cX+sHdsjgAHy8SyzSHW4G72ipwWZrEk084TqTJTIKutYafS4R95B2+FqGiGxfe6Y4wZG1KCHvieuXoFV8IRjfuKBHskxVNNGvAgugAdeX5YXk2VvLKrKxucZt+FK6F40+qkSSiFBsXwyD5kOM098FpxjJpl87r4htfyObCnOpSIHRrUgS4XcBd6STGaO5v7cguAl+AqntaENBxKYRNJygqOxOOdmZUKJvBaWjoFM47R/IMmz3WnmE31tagMsCLGdDXaoFbVwucMWqBa6kFu6tqgae5NBDOXGz6d8e757v59P8yx/FGIV0MPn9x+CROYAS+scD5FeD8RYF7dXGsCZyPAVkuTknMbQDOVN/Vw5Yl2ogY1amO8eRTCbiZQEaPXFZM8dwpJGdlkyPzUJWLWbl/utuWMX3X+dxPkdS6uvSl3AJ39TrX8RdZgTR6tzU1dpyHOZtkTKDvTlaaCntXf/L5tqUVJVUgoG0Qg996EfFkDK/UT994LRcu9O/ePZ+wqvCkCl+qmBbTawq8gEvNt3AtoMLtGqQGWXOI3nygUh3LQanuIa5/hutLjW2pvyEVS60gvKXSJ1vxDq0LxmPyNMJBISFDwPX0WByd8FzpB8Z2n7z0s6/hm7nkq47r73OeU45dRyoG/o2bpK+8XObG2h6Zq6S+FhCZr6no1miry+jPQV5gVUt74YLUjOsM7pEPgU39DE8zCN/jLrghEyMAeZBl4B63znDod/oS8EdeNQC0a4dveCE0WEid5sDOZhiV61sLKDWK146wn5u+TFjvb+4f6730bVfeX9b72VuvPArWW7sY633h8GU11vNNdcJ34xgu7823f/wC/rbXkFc2H37bcYLRGSAXCoDGl1WZOJsZo37m66mVMSICx6w1fTzXYhEwNZjOP7ve+PqLFQTbT6ZyVB0mFArgJREdMgWEkGId8eSHLSV/6mpl91vASm0zxqACvwJjB7anoeQqEe01znGM0DLKi+UbLIebuuc0zmjIuifTj3x5JE3ZclVGGZEn0+yiLSV7HXccHMLBokiUcFT0ZTdHsWdQbEonJPBmLg+O8Y3nA2Sm9CYYXHkrIxEG6PXJDzqRA+/6fdFexw5HG/hWbCBa26btR1u888gp9kPx/Gw898m3HCW3eDv1wPOKZxcZYHp3NvoA8FWRbUtG4dH/ifkG2ebBY+e8/kVXfuw97/z3H2w9w7tA9tjEepwFepP5AgqhZuLFOQf//svvu/7vv/wpLnqhFOUy8RbvQi7jPl7KsPx6evEu3eI9HauoHcW7i4t3s1u8i/mdX3536fZH6f8+vFV5RTHaUnnOX7Ae2JB3G4C3/Q4/C00t++W/exjCA872g9fjv3/bysqba6rbtKX6gr/ltbp+tZmLFV2o9baGp3pLTIB7Gn18CFr80NxazVg90Av4Ld41WgMvHGKH6EhultpUPazhv4lmd5pmiPrTzXgalU+Zwysq2gFPe6x++8qryvEd5I0oL69Ymf1WU6O2TABMraLglw7IoFDkQNGyisoKykoTzZLXQcGmaAhzzpCYk4eDwSsz/jEQaAeXbFtI568sBsKAJfDNjv70FqePCIK7L8HzG53bhulQyp3CeFMxrheqJi4XqBYuO5U/BqSkAKm9/W/nZx764Q98aIfq6EmGV0Tve45RhwNIpzBH4bZc47nyamgKQT+b6L1Vn5B8iKKFTHdmovdG86RdPLnNPEn0E/S16OaQH8liscP/8y6CZ0nQa4v/b2z8f+3hjxym79VmPAZ24PGMw0xl9FA8cUeeOJUnWiwH/FucfCbK9WwXPeaXE70uv4PgQAyg1ADGVZNcfqrXVSswZLrbP/rvf/qdf/vAJ7cOVVxW4hkDo7SB4QOYgCthhJj7n0XpzyU1gXTBvGxTlH5eP4+kUQoKN31+N8T6fDhvmnrYtgXbV9orEJR7VkxgDTZBXetFFy88EXTcD5YVGo0rcOAGY7v7P9SEgdqllBunSa7lwL7dBkA0J8ld7M1tp7c/5Xu9d95M3yPR2tQyd4mYfgwqAO4FuR0aVWae4d5ABATqze8u7VMCtmAGGaZ3Ay8ZdleLH968LSHwxcV97VpiHt8pjwvH9MMNAzKQ6xeqXzehFVhOraBJblJNUqppnZrgDfOBkJB8MwBuuUoGAPowzDwhJ1rL6UmekBLPSmQ90yypMICv4WqHLzsGAQfU0NZp0V7vcIwUEgUhTWYlmNm1pUnM2mFyeezO7EvyqPy7vEpYPinPdgSzcyipSLIoWSmUXEj4HouFYtQBEeXvTBeALHo6/tnvzONyMf65NPdGwHWDuW40V4gnI7AKqZq+Cv1AA1Z9g/tZX3EyMbOxnP9d9ATWl/xHGRCl4xmyCCXRc4pxFxbfkH6Y/064dBN/bBxvGbGCcXMNj5s2JoMZto/hOs0Dlq8fX9lXXfxewWyI33ydxHWS+RHXLnMrX9/L9UzLjKBWojxfZ2w7zwx50ptV/SxCX/9G424lWT9mhHrpq/FLzZppZDWem2draGV6g76bk+lkrVgoendVRS2eONUnbRV5mt1F3NIsrR6qdVpUJHmYI+SQI99KZHcWQxgeB6ucGOgL4RFhuEnDcj+k4wbqOONdZrbPjsOQm4bewx6D10z0aY4Lmc429NBu2CmqVqQ34hXXMmXu5mjS3M1Sau6Op665I5owd4o65i6jgFb1aR2tpeOJBkPu53E0Nxhkxw1oGlJubqhltY9Sq2nNkOa4qKJsgA7IO2M9cxPTvwZ3sbeT5b+0oSWZIQM6fCleX8yvjVwGRdU6iqT7Ia2z8wFB9Al+dO1euex9se9EeyEeKJjPEkqGWZs8Cs19B7EW5n5ikHVZRUlL/USEWJawlIVJdBbi2qV4QMEgm6TJIaH8ZFke0tieyNPidrAgFsUNqCImdx7QuORKFe7iVUxWqsBY2YwqmuTNoxMBBUNqE4MecD1xrR6YYMqq3BFo3tuQCag5oHAg4ATjwOGFrqWdjFTzcV1Ni/x5igqQOgKSV68LlFoKprt1ZT61BhQtCdOddj3eSD13LdFMsgW2kIYOHCUH5fMVKU8b7jZjUYHVvyH3CEbchSkl6WnPIr0CfI1mVdabcz9EljIYxcbtpS8FBgp23jTfvnOThxZtw37EkIpNaJcWDA7pX/Fj55jbk0c6zl7w4Cw/Z/uLyAPcbta3fEO44esG/WAwSG51fEcvOSXgB+Iszoru955qzbxP26Pn2tfKXKsVd+825QtsAfwlnwWYtCMh/wQKMk/sYMGTYB7NMdPHpy6TX0fahqTfhuXbMJHT7BEubNFkfoglhYZ7mFDpNnanXkf3XG2fyH1Qkv2h6wPzso6Uy4XWcgtamiO3Yjp5SqmGZG7h3ecNcUvigZwFFmKCGmKC1xYek4kW2xLXKLOQGAL4/lp9TyFvGyXEV0x6Tr+ipwgMqoBBFA/CnZ8IrBfYXosM1arvfmbWZT2p0Jws6C6aG+sv3SgVJlg9iGst3Ko2Hl2tdS9scuBdu71Ypx7LWnfmtZ52LGt9Ql7r2ceyVqz4seO+gyfg092rZeFeihjyF4YYHIcWhpk7pkm3bHK87juGlOf12ODW8kLta2+FvHsm5N0HBNBVteVHa7RwWqhGtPv5K/LgzeCZiAPfKiWRvNrJAT47t3wE06q3rzQeYfdQ7L/QR7f/+dffNPjBP97ymAHqvfTQ03QLcCbA7+3p6yABM48Hoxm3wu5XOHLFvKwHw7bdKHQpfh7aYixIvEvmZD6uezNvZycfKrCT5Jot6TyIN3qyiYpdx0OMzG333nvvZ3sLBZYHF0m3t/XcZygP+gfU6izOn2XeIcY8QHIAWs0Q94RDWXMha7GZS/c6puYwi8dQNa5QNa5RNa6taGTtspeB0csz7Szde84zyeszQII25WoUq5YGV8UlXneyIlWidi/2ItkHpec803jQHhV4SQleoqU5dB387Zzb1WM1+Dl7dpnqW2Oqb1Wqb9Wqb92k2mX1bXCZi9088IzZhYdrMXWeIGTQvvqYcXZm/pz00dPg8C98aBxh3EOaLrYMFceJ8w4Ns6OC0i2hFCPw6e75wm4HHPFYcnv3Otpyynf+MzD6Davmbn5+kYdEMmpCzJcqk2pJdRfoKYm/ztpPlOSHzzgki/686O2D7dHrN8ysfM5Pti5or3PSX5yfJdTexX5RwMcutkAdMnbGN2+l9tzCknXI2O/0ETs2BOrAdO5Ocaa9Dj2CBxietx1TOMAjeW3AxgOjkQMcJZRAyL2raQCmAXhCE1g7zbv9XEOxiL1wgPb5VuQGtebxm9e62EHSYlDzgDZSEYhsO8lc7CArihFPS0gAYGzXoSE5hwaZN4YdPJsdxjhxdg0vJN8PLN3j0sJGbCscByq6x0V13WNTqXtsuO+6h1/qHgNL93j5qO5x3RK6R2ny3WDrHhcWWsKx1D1+wfP55mNZ63m/EC3h/LzW7cey1msquse1Rvcgf+FYaxwX9DjWoeVFrHG4S2scbqlxiA9iYAdaQg1ZWgfJglwLyXz7S5Lnlmri4m8x1cStqCaX2qoJ5HNNN3lCOYFeVIzrXgMCvdRRRDnZCeWEaxDtxOxhYUbIfJFXWVyoJ/xUiL7tPqsnO2315OKsKc9q6snVdfXkfJ4DF7KEZWcelTTMmmNYoFlhgWaNBZr1uCiHYqBgSf3E03hWAq9qlrg9r9RPdC3kFQqK+FIcFYBBCWCQgHvI5J2xFBSpPhlTfVKpPqlVn9QVlJg8UVCY7mM1lBgaSiwaiullrAGCwlKqKN4hTZuKqE30TMoqylHAOVaNfIqw3DVGRfEKFcXTKsq1hl/rKsp6Ga3tfpEfh0h+tEp9JZG6L8wwFLiqrKMD3qizpL6S4DP9xVOygDrQV4Ac1lc6h7b/9DXf+tBv/sF5W6mzpL5icoYB6y1KjL4CuYAnTTxJ8CQuNJiB7jAbUdqky8IHkxJbm3FF2pjC0i35otRoIHb0p+Wjp6hAYxqKjKepCMYrlJwLcyXHM0tDDAuttA8AIt8aCUTJPB5cLJqf1jEoLrQc8IntV3hr0nRZ6QhY/IpFB1drprYMOVyVbUA4cuicA3+RW5xiqzQoLBJhoR9ERneIC92hKbuyyiMR19j3rukbpt31pZdCvG1IzQXJPqmaMNhorUW1RGwLj8A7upKcmFm96tCQdBwziA5L4hpKxE8BJzPwtOjK0ELv25Zi1a4pVu3XqkQUq0TXgeoSapYMiIy5FA/gLmo4fznAoeoaRNe6y4KmI9B0AE3ndEakXmEizcBtFlBI6hYOVAi4KTpY7grCVVx1PT2qKdELFPMy3aYt3UOlk2cNcFeKWBXhM/LN5mUiAQJdScQYD4dcmpoDvg/TQzqcKub97Pefte9prxh8f+tCkeQSube63FuuioP0jKczEFfID+yZRxYGohoGoteqVDCQAgPp6e4bTRj2Yf7VC/vk895sp9+b3Q19261ptw40b1c7Aidm8CXky55V1pXpkrrEPxi3N6KPLrXRuyGlt2XRkIr/B+SZ24Fql5rZ4WHxHB8X2J09PJRqrDoKF4LBAOlcaWKYTZSUKlACavqyE09dIB6TmUctSQgeli0Pi+onB+ZYmoS7UildlmmjjHVUiUnv2gVd9K64aDkfN+rNW3G9q1y03F3cUkfis4DRizRC014AOgCtLf346Vo1Cg6atnXDEKhk9Zea8rLkYgHwOiGSVLTbur8Y90L5sqVLrAIQpJoGB+uoFwiuKWpuadOS2ALu0LUleCg6HA4SMLoNTpABnJTchirMtvrhv2LPlLdBXmGnwTC45covmthtqMtKQOrsgP8KK81vWNvx9iYsqyUPebI3ZhUazmBN/sO0MHDEtHOdozyzGenLlKACM1GHYhqJcLlEJDA0LK1tqpZRSxJc96o2LrtVB5enqwlcLlJdI6pT/sm0VpN85aGlpnC9xVErZO97Wva+V2pNEiJ+RjT9VdD0Z2mV1vRX8xW74GuMSORuGiX+Ar3zZ9F8ZmAWvWsXts+euv38n6jVLIbWGZ+P42id8Qo5noqvbtdfVcrPmPJEM6a8onU0eSibK+vKirpOoBmaKz9aX3x0YtsptSkUE9iO1NIMtzS2urKurLw9vrw9zuhKt+XoeYJgVGx22SqtUNzNv85xznDfZ8bhbbKCm6Gp27jR2rw9c5M6qZy3T4KEPIlV3dOZKhCWWtfWG0GrJJ7sLgcgrMGnK1ljX6M3xq0llRBuml/lT1F+tS6Pnetd2az+BOuu1bhbPfoxydv8e/5sDf54VXYyreBv1AZcdquH8MW5RD0Uxzf1acVudQrfOfpuI9+5+u5U7rZ6GKWUDrOHH1Sb+Bv3ElTyCDw7OMweaaxbJ2wbqkex5bujTtP4WkMni2/PLK3I43ggS7XDGM0aWTaLoTtLHchAHZ5jmw/GYbtTYrtjEj3oryfchuMmNEEPZeBQ5QQ9RN+tQvPSuEurTKuVxlfhsqqEAbVsqFRRVLu6rMyh1aYWTduDW0YqXI3L6jF9O3u5fSt65gGmU4uebaz3zFt+z06p14Ka651z73vnILfNmjwxcrwtQv40mUUmZFbqypw1KRMcRTJrxDKRNHmS0cvZCXqEgLYBrYAQcvjRSXQa8eXXDEXw6HR5dAZ1cdnMHLeFJtSZdBp/m52lzhYDBG2hKfilbsEksQX6HPd2lns7i95u5k/JpV8jbQ2ms+U6gEZxhtwP4ThhXp9ZvA7Nk9PzQoF5cJK5rs6LDgaSw7YDvHVoFnibFaaQGTU728ika1wN35kM25l0Nrarz9QnGUgv+EfAM/8sKn+YpdCM46dVJT+tgkOCxl8k+Itx6QhRN/MlZUTyZRaInKAVtEorE7PAfpf4glG8So/iVeKjvRoQdDQnz2frrqcz+LacZ+azOZq7flA+wO+DtM5aO2frKir7LG3WmEQ1lvinR9IMVKh1Q0KfBYdaaieM5EdBCNW+QUvmixlMXL/Gb+cF+b+mP9VV0EnmThi54G7QZZXm5zPBKWeWJLqjJNG1rjqTSbSZsbFZSLQZJDpJk+jM5ZBmtiTNbELcFRADeJ/VeF/NQJTT1oxmVdQ9y193aTUgbeOb1dTC5STmlM2aL1aBgqfLID2DLylobVOOZjWlNFZsBYDxvA5Ym7HwvFrou47WDQyWhxZB11rZweYWND6LJ7R2fkhzC/M0Q+vmQaPR9tAayuiWTrIIs1ruxlBkMyiyGVrhqpz55lHT9fMVBUfNGCFljTJDw/dhhiwRO2duf2ebdgibLSJOV1BHzi2coI6cccFzoT7/1MSG3+XMF9W8KuNeoqdPtXkalBY99E4nKWY9msH/Dg6Zs60+SnQqzQH4uYLj+EPUsa5iRdBrBO6Htund7ah12n6dAWlqLTkCGyqHGsM1bhrSWntsMMplXDBhBiiH5QbNQDPJMVD0n7r13mcs+OsDdIYenptTQdG8p7bWY3fUngtPJBqSovXDAXPTH/7RPVf+0/kf3Tos7gY8jI44T5Y8N8PVuwzioXlr7K2bV3Poh6g4Zu7r0qr8xypSdOLBoa07zlQUFuiuuh8sUWgW1wE4bNEZdiWtkRFMM6bKP9w2hF5727P1YmU90VCtt9R0jYkTFuv+ulr31y3a/XWLdv94yobq0Xw5gTv6mCWxcb+6Pk2L9jqj44b0mIHK6ATcPXqgTkgYFScO1Ho6rdBJKo0bVeYsc0FrZ43qi7QGLLXGnCdIa9WJNIGs82qCTlNdyIozoUOcSatwYfYVjeJsXM6mk3A5iX4Nl1+j03E5nc7A5QzajMtmLTxWWSFEz8tDiN7bSH7q+SEWjvirJ3A3Q9ZyQeo4SWF8k8VfZpvgjA0vN8T55JmVmjYO+eUqfWhL4dCyWgTlzmHVxANTvE/u9XDWG4i9aDB8Jdt9aswVjWwy4NODQwrKuuJD/B1Fw6w5XBDTaYjaYb4iuGHY1oSAS1xcswkExF9TkyVghAqgEvryLYrZxjEpHy1IPbDhjrfvLJT8Tq15XfgCgtk5YKOEmKWurhlBReM8YFZ4TyCnIFIGryxslMihPXEfD7brB7AZ7kzkE3j73NyKYD7w2WwQ7MUu3H3MZrZUipu6ORhrVaHvrAplV8c4n0TifFKPucGCVuwP28X+sE11jOliAtfzVFcMCSkMCZOUakPCFK6HjfFhY0XSm6V5Nm2W3Stp2iy7Z2iagkPD4s2q4s2sZLJ9Zs9/bBFdn2cinCBtkO19+FVX2aHfE3Y6nRXARchPV1TdpKb0c5qkqV3ZpPGRmrKK8JsV+Hv8HBYPqFUHsK/hq99Xc3zx+mqtRKes44vbV8fxZR/+HjeHp8fTxCFFvJxN1JSm1ApabfYu9U8PCzPPcRteQm2cbpxm0zQ9wN1spuazDP7IbVKUWSN8Or8/PNT6qD4GA+ItpXbPrIjbTvlM13aQa0qs4EA/b9lHy2vRe74eZ3QTAwWtM78NLI2lIFHTNCd5huU7AaScD6fpOG2Sl2bMa6uNg1xirUrwPtHgTMOBl2V0KtFKCR2vUi3XU8j1SUqw1pqiBJFbUBRAn9isqCK+T0V5AAJ1GZIyUqBVFmhS/XtZZpUm1hTzRCqJdc0GLYauOUB7jbbH9xyeJzAeKTlEtJDvuMxfn00Xi3X137RlxYyGJmNQLRhun7YcwM0YMfYLW1um6VJOD2nSqEXMqIBzsmK6pCkWM3xpi9zpiDwKWExhZax5YJZWQolbxXqTKtso7gZEPBprImW67kAW6lHVl0m67MI0o2E+m57XtKQORKigG28E3cOBntNXCRSzw3m1yhyvbVyAqK2Y/qpNU6pDSjTw97veqn3hc1omzlaxyzpEGLm7lEdenjiDGjp/LDKu+j2dxJkCRE6FOEOEonRBfxv37r1Xn5xIzT1Iig3Lg+TSVoIgbPfI7/YJV+hPOtQBRnW0HXkwRmwES3unNlLV5e1YlVKX0j3MsK6aoknuyhSTdgVN71ArmUNmaCXN7FGrdO2rUPlDvFk1e856LB1p9eVqzTkI2ljDUmVOIQZj3ZPVcfzd8XQcHb9HERHiPg0sqneWyjAiBZ4TyKMTBB7+Yj3/Ws+/EsC/UZ3IaDqJPKzyTqaTDZpO7Cafc5yZHJUeY8rX3hoqoMCUCYDKNl+Y5WMK4CgnSUNV2Hup/iySlAsqpljOdg5hfyEp1CI5to+DAZQ+bmUPdDPqdBryfoImmMlVl7rpm7SvQUqpecc43AccgpG3JfJoBS6xmsbFVyuBWFqZHtCazgyDvwrRK9DsZg34M93kh57zGOmi8eGHd8ku7qlvyvjoYkw+ushPUXPAv4IzG5ImXYU6a4wkqaEIDKNacMDYoYDpslumY/gGHUtfBLjQN33EC3fNx74X/A+kzCRN8tSppuTXClqBVqZpCpOisMoOtarnQEmm2T1qdW7C9U9teGoNcxtYheb2qLVSA69hMUEfR2vBMIoQwbOD2cQRNtnDLHJC8f16+eZEOhEwnMSFTqaT6OS+2kAn0gYOgeBf689sNNDMQ2g9PWQPm3h9eqjdgVPoFMTXbZRfbP5TD+MiD+urh9PD1Sau8hF0Km2iR9DGPMHNI/nho+iR6jR6FGvKp9Gv7VCn86MziPXlPWoz93CzIGsLV7RF2hJ4zwQgZ9GZdNYe1rh9OptfajDa6tFM1cfwo8f01Vbaaqj66G7yL56ztZQT6Vg5UYx4v3c3dHIVFHnHQ8gMkRcv42dy1KshPvbdKNmp2gx8h/8mEJuzh2ndwRxF3U7DVDdpqpsiZuW+EHmbmu61mMgrofOoVRDBO3jN7IgQ2GP2X2DdN5XMmUrWEsuFvtB5Wh2HS5qTWkE6qB0q43pOoIxO2MMkXl/WcaKp4ySm64laCqCODT1QdwM9pM/UPRnUBWin8JNTQPsW03ajOhUiRWp5mNQCAoPOm7jEI0Dh9JAevY9k0p6a0KnqUYwqQ2N1OvGaaCfT+Azs/aaK7S9M3s20ZY82f51FTNVdTFMPNI3l0DchqTdC0o2NMoGzfQ667HluQtSUKBbI1vT+IIYrBVtuWb8OtGuFfTq7J25teR7BxuTV5bkCkl8pwN369BX/SzMEfpD8EHV5s6jLm1RTlxN1mZRJRdEWNbtTrd3a0Z/I9XbsEVPdua5QQrs0cZFCt728hPawyQKjsXp24Qlsgs+pVPLon3AlHsNZIJJbpJin1NLG/QU1WYkalw3nKTvzROm1Qz5NDY0rj+omNCkKOnWHENSiyeBHV85ZcMtEirDIoVfZCmRBbBNfAkpw8aiFy4oiBRlAr4FfQjgJHVorqItCOF1AOJlY/UZ1cuu2PbwwlbtW5cCfh9q7Gutz4NfJGr6yrnRad5m60ml0mVw5/atLTSidU0M2jE1CwZmSB93hQMUmD2QR6o6LRytwWZHnAp5UTaPCxVu8zXxpbvE29Rp25NRdV+nIqW41curXzeDYPHZwbJMAPtxKVF1x+95GOWYu99wWj5Z84VYPZlqPO79g3EDWiSEu58mg2CmDYptqFk5HrcKxKJHx18bg6lBbD0Ok3mvrrYuuNQS6FldboWQLOvJsohgJHZrYlXXyEzWsbzDJD+X8hKHyQZshAvv5gy5O/2hTh7myrZthSFrkHszcIUOaEF/EWabNzFh40rcoHFIi3iHxkAI9xmVXhj8kn5p60ZDF1u5MG/RsU4RM/IycJshf0DaEecHBAafnCaV3CqW3MRFe5vkuGwRaLLg0AFZuQKDbF3QHgu5Q0B1pQqlYU0mQT4L500yCDJFIG1VHiDABIjCbayKkwKomwqTJl0OT1cVyqp9Du92VdQ3CU6sIaEaTu7IJyCDG7YSuwLi/BGqK0bAChHNQSR/jAbgDVlvm1pMrvHVWUFN+MFKpLbcYUZSYe5/vO3K/kAVWglVBvVm4meyMtSPujcOMGXsTINIEEkfQVOHN6QtxpoQ4oRBnhRDnhfZprRvrQw0htD0c+ZHjpUjuKAIn88iVOeTcsxyYvWRYFY/+hJwydoDNXliqVxuQlRa/wnD9cJjAX7CpJzdHT3a+vopVR3IvFgkQ5FMViK0nFFtPJEwVC1M1halawlSJTHNtmeY6GtRsQk9ZuKcsxf2kMNQUGIoXPGAoqLF6ci1nErVSbFUPd/6ksnsyU95ip3H8C3x2KXatrIBpmhyI/XOYrdz+/vfhvzaLaNarjC/Bj24fDgelITFbVXxs7yiunN++8P49/2PFw76/1aTjGKqZwjzkVW1CeD6tn2PtsStbYUbC9GLiCrKMcbILFhVtSVpBHk2JaR+aP63WTIjLNKW4rJatI3smNJ0H6joOZq/VgnbBpZPQtCZJ8stDD01hfocODFFKs+TJvvUCzVA4nM/WDLCqb9Iqvm/q+1jfx/o+0veRvg/1fUj6f8NhYZZdGGT8U8+fGKhT+XidxmU632816U7W4OBcDHR4TapWKWJhF47E6hvLmG7KmG7JmE54TPOlLRNtBxOtHOc6fniXaqbMmRLnXt4a5XPJQX+erVS6MCad5ZxPOksov30ytz+/KrEHM668P8D3dpDP+gworyQ1WatCpM07vz4RyyBuySAW2LQj9BFmgok8i8jEmJkgWHwmIHf73m/8+dc6G97FSu4k+QVb/Y0tDVYIb49X58HZT+44uJwn44AmqbOgswRk05bPJgyAHfm9993bjOJn5QBYsPjbnbfNU25ZarCQrRxmyFzFz/kuFzzp4SF/Vd2K9Ut3NgxphuDgK63RAgAHRc280wrVY1pSzWrVJSpP9klN3q5VBPx99SuV3KWrykx8omJuX/c/Hxf9+73f3Dosu6/87TfdPJz4P/xUzehska/Mpg+SP1+DSFvQp+3nAny2ugQVvhMVwJOjgbaAMr+5nSxNfY6BsJqcy/wx5V27vGsDNQcVbQZbUIODyocvcdR2xVKnGcWwTU7/u7fSVEnkVy6omep2luGoKVtev/KVNvNks/OkWQ47Uxb3+DTLPLOahSMkmE98t2IJnll5H3nGO1Y8Q9MHh2plySMrSh5ZWecRWB3A/iM8MlfhkTUVQH9BPDJn03z6yDyypsYjMAuCR1YKj9hKxcqx+sXq8na2vPW1UosVRkqpVmq7FNCEeE6qCQqJLym1cQnIw2UVnOzVNDWVC7OfnHhTZ1B4z/gD1cRMHogcxnM9k6/C76nkvrCwb7OwP4aFffLHsnDWXIqJk8WZeA3y/iQVJk4oqTKxSwmtMUxcY5PIsImHPEh1NvEKJk4ME68Zw8TJK7M1NSYGBGoOhjP7uQBbAoYzamiuAugi0IXjoAuXYOI1NlOuIW8uWzmmVGKXSqqsnoB1V1JSsC4MEjOYl1pDvjaHBH2bi9E0Hlvz4Oz8EEul1azfHSQX2tYK2B+aW2RXC9ya4pIay4MJF8i9L1wV07ToTWPHh28NoOUNCk8GRXvMoHDGDwqMhlW10RDIaCgVAM3KTavj/n1QAHyL/5vkj1UAmiMKQHNxBQAsR83KOGhSsz4OmpSYceAf1Tjw74MC0HxlltQUAECksxFwTfXxUhsXrV/IuKhxvDd+2m/apZrUssdFU6b9ppn2ZVysrIrGYmi42jgwQ/Fwfgn+N4wvw8DmfywYRCE3NhlXlggtWSJMyxLhkl/0EqFuF8C64FNJyzUrAvz5WBWMNRHtVL6o/oGo/qGo/pGsG+IyDDRrLWqVE5uc6toqepbWdoPTWjitZUuV7zCQ7cV+Wt5O8YfjX+RyIcF654e8fk21yRVvUhkL2SQ1acpi5nSeH6Q8jlNrg1xLDtJWRbdmUsyNiO7iFkTdgXbPfZxlXlYrCichVW7Fw7IhpSdct+Ek1otiqNrFMYNZv4rabeVkOhkxVsKOMCSrg9YyXU2SqzuYzYCfPeJLh2JcJqiFy4w2w62iSC8G2lD3VUSrVCBOC0C5BPjPaJbgZwUFJYf2hLCNJwfVkivpoksiBYZIEcMZCJkQcmURKQCRgiqRsmCYca+CSl8SmBJpJYWY6GaH4j8cDQZDWsUoGFCKIZ4FVtCWMfuZoT6Dy0xuf4Wr0yox7Rma/pnEeYxB8ZGQaKHfhnj6F4Tc5gh6LXRGQGdUQ2dkQ0VBMVwijAbq0jQcnmzF4dhhdww6j5on3WPNk8vnSIOoKVoF41Rq0MOY0ls6R40esSvLlBLIlBLKlBLJlPJvnu/A+4//9LxyxK0XSWMrRydVUrXFRQ8hpE0YPm1VMXnFj6EqNKADH96GLZJg+6m/vvbfP3/6Q/ldIAcE5hX9UFcknqSHn521TC2IPI51Rcb7Z+q/3/jze6/6wtahro9apsY124ZSJT/zUD44CK9QV7pmz14N0ml5HUnLKycb5+I7qmYvi0WpCfVrIHNX5hgpHtolfWtAeBRQE7twLQrmVZOLMvZ3aeOjw/zqkKtbycI+tB3ii3XeYYRGKdSGeWMJpSblt/MU4P5D0PMWhvY54biE5pgbGSXJm30XRj2baGLaGy43g2Nx3uBGaGV3FyeS+HCe6Jq4/4uLSLFxaQTIHfH5urg3HO9D6hY+pOV5HR95tz5K4rYrzSmOvml1t9lsKDQbRkyhxsAeqzmXikd9k0cl82uaVMH0ruhUrBUVundRzrLj/T4OTgBiPO2N5yV6a7w8dbb3U32+UBYILyOjJH7/JiSGPPhuo+rfC5atQSUWUa9gL5NCppIEya0k73dtpZon/o8tXPzo1sdY9T3lqplPfOAH39ya97NwrPz9OZOUTCzWRa7+C5l19k9OeND9+E9LC75G5g+/Rw67LbotI+1i0QwvWDoLtu2FPiZ7WtUDUBfW0hgpf0Z5OmsPs5bF1a0aV7esFFjmwH2Hb/HxPXm8WltvVWUTQ9FauxquhaxdA619k0pL0NKEOrZWIXw5JR5eK3CBJ5kvJ56ulJhrGFjggWbWOjgtYbYPEkMGpZIzjVycCRfzg8oh2F//zPPNgbbCPehGmi9dW8NRYMc4Z+9Wq0Qe8mSj0+jnybyxjdS0xVp6m+pQisDbFIJalykzeUse77J4gQbqLKjV+O6Zak2xDE96zxGFyM7uPQdBukutpRCSa50Rq9lxu9Tx5BFfqJielE7TPXeumLtoJa2i6Wdnae473Nn+rad/4cCbfvjFx3ACpFLvnaDixduR9yih1fxpSmt204o95lvqWOv3oZowWsHT0d0pakopOW5RZfKuL8JtkrrF+4yx36lhv3OTykrsZwnD7ENcezSDr+TUv5lDpIxgptbCfNYpTQHmgL4x1VY5MOpxFqiIXT5pLTH/+Lsw2sxdTEQp32S+HDFJ/iF1AmwlWUrH43eU+RTii5gvSNLBKXkSOEDTcVjK8st+Jof4QlyIP8BQB5udME+ezlWjz3Zbt3MuR2iqKTI/pM6A7UMd6COzgij4mfPTQsQOtj9N//fzrXobjiua4foyH82eO6dm8hMsM9Fujop1svVmL/I1WwfE7mrDeXVizkzueGYqtJQaMxUvbn/gMtN6IxHVA5+dlsdCEM/CFjMUyiEkMzVWNFyWPzwPn+HJeQXftbBcGA7pRFLbP/cn06/f8Tk+h2SIFCc1FoMSSE3R1yJkhzNVZNqw0yWtb03hEntaM3RsFkoKAo5noQ61xrBQUmWhVoWFOjYLxcI8Qvukxj8RvxyOmUprU0BSkLfAIdClN6ux0dAqFHI9Jo1Ny6iaxs1FRl1oVhyrJGp+BkoKptjyqO3QPtiZP/rH74492lqFlTPhw6RfmL42jTV9ba6bvo7e4PXRkA1egeXb4i3f4GX816JilorF+tUsPNIok7N6RRPqQBNiftWaUJev0IQ6loFqvEFrcjGD1uQYg1Zbnm27eBu8nmJ7oyazrFnW4+0veuf3NjzlRZ/fKuF8WUpTlA6HZgG2Tas1qbh5yGf7D7xp21DrHdTJV06dUhMoDWI0gaX6hFEWulVPLsbDLnGC1J5cLnWM72aHPOKLS01cupTgsqLSFTWt10wTSxr6VwjmC0N/V1MlqWFo+pijhcIyZMl4ia6kjm1JRpi5nN0dzHOdMJfAaSaym58vUtvBcoUFDopCrOY5em/Pi5+2zWywYY9tUASKD4eDog68gGSeH1qPQri/GGS8aNvC0FTc3Da0HAyNz5sxQxgvUnFoW9TgwMPqLY5xFD1vZADnw7pI2Xua/nGpvQyR/L6yqsQxa+X5diY1k0mFKimgereUuaduLG5xGZiyO3XZ28yvJxQwHXjX4YUS6Uiax7D/yI8gCPCHeNmQhYEZ67ZpzKyc3IO8aBp/BpB4wMnQjzD0Y4r00G8WAqNllkBm/1L7xETGJ0bsBG37ZJ3ih2f9SIrTeCjG1BVLIkajzWfNogKSh0Ud9m8ZkzFMFU1qUqwPpvcEhKaEKPDFowAXOeU8ljPoW3rdJAcLZR05iESyjk7QhL67FMN8OMjSgWVEnFygSY7rnTSlLyD9aUL680pJd4FcLumihi0eEg1CWTo4JJdrnc/YgfJGeTahn03ws0mTQixE1QcctMDE5/onhwO8PFC8vIZfujBJop5risfX6ccpmhQWo478NqzZlY+EaydIKnbB0U1y5Xw2dBx3kaDGMtcYLzPjKhpjLMXGanOzgyNBlp77yhMDf3j7Pjlf0P59Ye33BeMdsa1p08rZfORgYMkSep0DaK+LXOQk0zxcPYrdHLsemGPXvUoIcagJjg5BBmr2wQ8zJvSw+f2OYzkwo1gmLnaFVh/r8yCNEVaFlqcXA1dmWQrLEZveAz7Xe5VZCB4vQ8Cx0aEsp8qIosErUa45z/fhMItg0WuWpfk9otBKRQ0G6QEcsa1HqEV12m5SBGOyAP4lwVOa3wHU2OedtnPf8EOhDVFziBLRvCSUjOySNiSChqyj2iBou6wh4Y+HZihGFOPUSrntDGVYoQmZIyK75db8YIihmtjhKtUYFbwK8lcIszPrldopFnrRgYPcYFBhgecbY554KcfjvJSbMphVWwLbO+ICPSGS5KDqirw5aIKIW9ojPyS/8PL3+lhDDCnVWRaxtT8hXv6eXjYwTjsUipc/zEBGVJhj4ynUrqdxGbkBnTYqvUzL6fcdoe9oPdYvLMDb9Oi2ExnByCtHzEjKhzF2NX94pFTi8lVxZObY8lFZPkpATRZ45Wcb9Gd+7TN/JAkBbOOPK1wFHHP0vUcQZS95cc2xAYUkNB//K3qZNQ1bIJE09nNQKZa1wj+Se3/0YEAubsmv0quDxRYsY73GfYaLHMmyjIy/ZUoHXkixuLD98bfpJnQjDpIEh2jLSY6usczTzaHPGA6Sr9xu/WK85MPSBI4CipihcCpQyCX6hQJzSQmMLhbmxZ5evNDp093KHNnUosAtBrlMmjul1Qt1CjccDX/RGe5ee2Is45bM4VXJ6+LYWMChB+q/CisZRprOGlwvAvww49V1QGyhaKWukSt1jaqY8vRzcrUcGhNtZ0+bNttxMW5yV+aZLPYuBbrqrKHlBfEl0j0WUHarQLKANoqJPj5o9DhX9LgmRbqVITX4agwCTGp9wAdSAKAvONeM4cVpZj6y+8vK2JJURsVxIbBcI6gajHVh69Bm63oXPKsLkXQhkASkidlWkBylDemXnaoUKUbsfhXbJBMHJToIeHbE1SsU9Y1vrZ5CkDZ1oJDpuJt3PAvlSLcJY1kKq6jwgYpENdA7OfWNOnjUVrB0F9gRtBQhecCOV2JHHykoSKLQHnN1FEUWigJBkS+pWlPJ7tox6VwbgrhJQVwiiHMFcVOCuLYgzhtB3Nk54gosrjhoFtwRsOjnWJw2ERmujcUutSy8XlDHq1fFq0srSryWeL5gqJ8aVHvAq0dt4HVKeRaqEzyaZFQXBBHsp+DNoMC+QbuPi08RsB+V2NdqhytU8ECFQqK5Yr4SicZtvugbNZlmEsBAFz7HrHe315R2e4m7017inmevcC9AFVf6EWSNb3beABC20VzRRzzrcGqygjEgZ6Ii+jHOyTl+kbkcL6xty/DCKmw8kTHsZJNGYmGGouJHgB91h6iodIjKJnOXqGyiqIDkYVFH9Tfsxl38abNRQjGiZJsHJboX5iQE4rZ7+m/nHLoJA2+b3/niGeDr8EtqIWoTRh2P/HnYR/Rp002w5HAwJHeQwZc0ppSSefK4hDfIEuVpp4uM6+QpHyO8K6tt8uUgUb5LNMvhrom7LppngMVXA3Umxdg3NgRPuAGGFGaDpxfx5+Pj/jYXiKgu9C4eXRjW4sI/+9tXP/V3/uHDW6Fgc0Mf8IOW8Br/iZrriprriTOfj8uFS0TgXiwK8dOXyWLtcmsVxnQTn9QtjbISfJ2K0WDqIr1rIobGtqXpt635cVmRuuI11JbAUXgNdXQdqi1Tg5rSadzA0mU0e3mCRWbg8TQ8nsAzWSm5XkrmO9UtSrUqQgnWsaJK2yHeCzoxfuZRbPsJUcLPLfdhfj3gJ0MV2s+8wTxYPqKEcZ/CnhmDkUXvMGD4xWEXASIBKRrOU0jucD7zYNozIasmNR1NFRN1U5ZbODyrdEqd4hWFMOcmsfJdOC6yGIz756HPOpJOVi5ePMZ+bnxwerd5/XOuuPnNdw9v/cE1h43WdUvx7CsvyJ/dyM9u/+oPP/Sy519+uTwrGXsr2/Q8PpkKfeRLP71jQTwQPm7dX+daz+37Rj8L0lv1Lx6i2/8UG0F/cu1Wc3PJVhPD+LX8yRVb08Mobbm4hHUXl9Aeo3VlTZ7WvJtjgty8/kuVbGJx9dCLx24zSyvDPaFlpszCmnAOa0ssSVb8NX2MEHvL3O33Bp5kFhHDXe8w1j4geD+LcMAxg83Fe45ObA/ctLAYirhcP0vs5RAAv9PTijJuP+X1uajzbP6If33cEzcGgC01HgJzSAD1EWGGL26UftQcu+7303drOvn6NGaf9foNYi2LjbWMAtvOG5jzPAL5fVtQE4a31B/c5UvJbXK5JrAO03dwxDeq09wYjLOdXVc+xSHDHrmlZV22spMFh3exjLNMuiuThDAFcojcctHoWr4g73nFC4Qv5IWnC/NIFcLggXH+EKEnR7wUh9LsUm4CIkMD57WZacno4qLnrNVHCAs0yd9NxJ6eAwLYuvkajx27RrvwRbgHEO4hBVq4R3yFcI/lrCxg3pjommxjEKmCh8Ae7hsCanFmC9LAilJTfiNci2+FafZft+1V7GjPBa0h0Vw44slOEFgYCFzjwJNT5A/ztd1rYGkmaQN6Po8Fm2WxYze26lrSc5af+tyeBvaWhXGLnABg1rakGANAGhB0SQjFNwwcTFTYL21jdHYk1Rvx0yeCbEhnNlGck7P/2aoriIKiT20WYxB+2aQZJEHvsGOdUN2Fo/oQsQmsGGmJL/H0Yi1VqalqigIcrl8ZFqjrvWYLxU4XB6ugZbsUrfo2p48XA4Ia1R0OTaISOz2FHr1tyRpXdL3MG7w+CzTVAdEtgdD+hz7XWuavy5riYFvI5uH1aEB4w4AjJfj5PSD1/gAVFLvY9c/rFfUOBNKNxQuOtA2otzDEphubrW7cGGRdw/jUnS/mmCHeDYLBFi2rSMpv4dJkZiZqpu8EMcs1At4mWrSoZmndPhxkgZhfMBZPbUimbxF+mr0ogIYa4DcF0D9MAxYx54sZb5i+VRrFGee29OOVkBFuYvGQVNdJ7gjWqnl/2dQAtBTpUhRq51ejkkXVD2477sp//63bXsHbuSlWhfjTyQscTDE4TkQzz0qBXs3wCFmF2YtWnGtn1EFjfiU/u6/NsQHDIUoN3wvnMeLAtkiwGdC0ScGCUVhu8OnRr88rku8SjOREo1T41vbCrLTqCIGzbuF9OTS01kP3umD7S379hbu/8hN+Psi6W/iBUCulmfRdoMFQngrwgL3LhFLYjcOJGs30r3WhvCeHFlTXQoKWI/f4Wo5M8J/0TaSJSIwQEgOwmAMAih47NMHsApxnEV4M0vcsyMILM3qmM8g1Mkw02WpmCggIr49Ha2gWhKUQ+686z7+s11dzkbukCBx2aFJPpQwL9AXkCMab1ahvUisOtIZWo6KigkkKwd8Bbnbh07o4mQBVJnKp0pQ88KppyxdqiV2RmuI4bm2Wy0lvjugRdeuljMe3/9UBWznL0x/hcIJVHJjl7BWtYQM525vXPu7ih7/wxm3VtdaCVpelzYtvsPItkxW4Pac17AIwFKJxhWDR/46LfD3wTxnjm7K54puySZZqG1Qk03WM6bpJsZ6uGS0yXQu80wZeVYxstzaysZ7RzxExx7vDZiy3qssrrl4yccE5D4vo2JipsIvMl4bmxybGWkx6D4B8inL/5NstzwfrFhmYc9E7rsj6bQNq6EG7QNF8Zp2INreQMbcMqWO7v7QHWSTrH4oGpS9TAxcGHEPcZE7CwmYDI32mzKa9/+o8m/b65JkerDTh+Lx/xEwcwzIWI//jK5Dn8noVFsqEQtejp6qYsW28oJuyS9Kilu313EZq0oQS5APtJlev8Nr7nOe80M0b9fm4PMkhuQt5BHPXKWqwvqM3sVnd4CsUvi/iyvL8Lr5u4F/ijH03eICRsDtPp8kJy/9/xF0FeB230rW0dmM/57X3tSnTmXDKHIYN2A7UaRjLvC7dxOU2jMVwmZmZmZmZmZm5/c9Z6dbx66MP/+9zstrRaDQzGs2ORntXJof9N82parqTC+cdo8+RxgmSr52VyVipk9fyvSUKnb1eQOYkBSdyuYiuEb9BvPLf9WI7IWTGVtEHXPnVP922slYBb1V9CIBePbK0en78zhpYvcHWxGr6Ro0SQWtt4wsRYW3err2NbxsuSL3e/cQ6DGdzy1pBc2FdQtfDutBboCkMREBmBrPWrGmjz8o3Wlu0RtssfJRSnyrMW3agHB3RAR0brBNbbsCWG2T69qRtxJYboxM2brRNsFH88KRabob22CyzzSN/W2BzbJHZloHeViSyNYlsra+0b2OdSaQLtkKXRuuKzuiqr7x3w5a0pqCM7tjSeqC79UQP9BxovchNb/RC76L1QR/OmUA0JbgvUvTNrB9p96PsMlfJH1TbX5eCDUB/q8EAq0UNagdaHZsNRB0GFm0QBkVqlTY4TWwIBmNI0bZlsR7b2lDU23YYiu1qbBgbDccwDC/aiHxER9AHhF5GRolH6fqms9G6ltsYijyWbI3NbBzG2XiMxCiMxhiML7yq2JjWNYHVEzKbiIm2PTWyA7bHDoXXVBlI7EjgTtgRO2W2M1F3plFFKyq3XcjQrtgFuzbYbuxpd9bvntke2MP2ZKu9sBv2arS9sSf2zixDphFqCOrYJ7C9L/bBvg22Hxpsf+xnB2B/HDDUiiQ7CUVMKtrkXM7Jf8rZGOU8MMp5ECU4mN0enNkhOMQODXwdRmYOJ/TwzI7AEXYk7XgKGnEgDsKhOAxTcGThdUlIQQLZqZHsNBfpTneB0gxHUjN5g5kus1kOs5zNdpgKYhJnhsNsF1QZVTLHkfm5DnOczXOY62y+AwvzXY0dpaqjHY5yONoV7ZiwwNE5oRqHY9XJsezkOIfjnB0v5AUOxzsscIU31AOlWCikhS6MARst0v0iNlrssNjZksj1UjVe5rDUYZlrsBMcWHNCiYyzE9XsRJGprg6Gd5JanOxwksPJbpKdIoRTiFAZFXOqC4o6zYF/p7LH04VyOlFayd5D7Rkuop9Z0uNZjlyeLdSz2eYch3OcnRu5PE+6PV9157PuAocLnF2oxddFDqREGmc5EPk8B0IudGHMwrwqt4vF8SUOFzu71OESZ5c5sHCZq7XLVXWF/rvS4XKHK6ntqxyucHa1EopXuWBNlXaNcK51uMbZdQ7XOrvegYXrSeMGVd2o/25yuMHhJtK42eFG0cDNkUJLu0X83upwi7PbHG51drsDC7eTwh0Odwi7Glc7u1OU7nK40+EuUrrb4W6Oe1TEPaq81+EeZ/c53OvsfgcW7ndD7AFVPejwgMODbPdQsJmHos08LOU9TOU94vCIs0cdHnWFN6Ule0xVj3F4hPe4bh4n3hMOTzh7Mu+3zJ5yYPEpF6Z7gD0deXrGgX9Ps82zavxsk809p/vnWPG8w/POXnCptxcdXnB4MVpYoPCSKl52eMnhZRrhK2r2isgE3b/q0hb2msOrDq+5yfa6ql+XxbGLN3TzBrvg05FG9JaU8LbDWw5vR2aDvb0TmX1XlvSeGr3HRu87vO/sA3XPpy0ftB+6RvvI4QOHj1j9scPHTqJ+orHjc5l/n5DBzxxI7zNifF4y4y+E8aUD/74gxlcOrPqKGF+XML4pGfq3MvTvxMJ3rP/e4XtnP0T2fhT/Pzn86PATK38Wt78I9Rfe/erwq7PfhPK7AwmT5LcObPuzAyG/Rbsn+T/U5g+2meYxzdt0zzYzPKZ7zPBNmq+0maqY5THTY5afZLM9m832VG3Q2hwfmZ/rKd48D/7NZZw034NV831mR5UwjvZRvGO8XJSXi/J0UR7HeTveB/EWeMqz0MszsW6RxyJvi8XCEg9SIo1jPIi8wIOQxT7IUx27WOoDV8vEzAke/FtKZk70WOZxIgmeJMon+ehoFGGdLMjJrDrF45T4e7eVqu9Ywe1SCsQq0gVeybDws4cWAQUtFIiRlxYKxObpSqqzdNXx77oyxfWrS2MQpk9Et+jIBpb/wIVhj57qAlH5zLBqv8paKhhUsmmQrUjQSnq9umiFcFZBaP0PXtmdrUwBV8k/Cqiv/qOVltEtsOo2/scS5moB818FXqqhnawdu18n9eE78Q22XurDd+IbDVg7Bley79b5x+HboHWDtcVaIb5qgXbb+G/VHwW39roWrIMu38ZgC+3jb0qtE9tvgE6MuDawjbAhNqq3jSniJtgYmxRtU/qhTfVcDqQ2C6Q21+XHGHlhs0jqr5+FrrfOJNUFPCenyPCrKwlpoz3Q6hb56R6IKQpDD3QrEetJYr3QU9GY9UFv9KlvisKK1i/3kP0CZ6LSX9eWNiB1CsBQk1kt1VDL0U0LVsdiXcZQbKANoh4HE2FwI0OwQRiS2bbYFv238SVC9cStlwHFMRiauhCZNdgwVg2TDSmiCEwPD92OINJIjMDIzEYRaVTodjSLozMbgzE2lt2OI8K4RoZnYzE+Y0Q2AcNDtyI0kbgTm7ptitIabEdW7ahuw9kPwXh2Iv2dWbFzZrtgF9s18LEbdsKu2K3wluaeZsfuaBGDtdIEOse7Nv/6g/nhc+nlkHsOv5+sSKH5pVVLmCxDrSp14fP4RauOZygE3JYpwhRp0KnXWDESaalli/xHIdwxp4GCxNZdnCwra41SXr3cbzZb6vvpsm6dHNbqIFtdP/MptdKkEcU1Q4O1UnDC8JtM+k3amlin0dYNaOthPZFYH+tj3UkGTh5EEpVmAaU1WouS5o8dFNYn5ISnClS6ma6kpRbplT6I36CcUHQzVVLXpZ5X6utCXelmztWVbuZMXelmTtW1gi/t6rqCThMvqU+qrupIRK34xCZv0VKjHMBae4q1FVElXc4SmN3ZSspt0klpSZ8bSiFfBxbCeRRSZa21Sl04j0IfkipKebZGPJGiKp96a1LtzPyUzqLAOrX66rwOGVyj2YEUbAQNcOjaeKUE1lrXU7mqSz1V1gZtG+lyWqNdpq/PS5QOJN8R9DNc0sHC1+er9PX5BZKCSrINdaV5bqRrwTbGRnQ3G5am/iZszw/Q09tsGr4/P6R0sgC2LOrkWGwlT+Kq2Zqqta0J2TqwSbbiiQNyO+FD9IOsW7rc4QI9miTqqeuF3nqxw96gp2mgq+mJPpmlZDjVdIyYfSNmP2L2R3/0a+Bary8GZFYTtVIbu69LfVjzNURfMyj4mtroa6SgelIZCq75GuhaarBdRtdSJdcyr6Sg4bryWTEiKCo4FwwvaWgUCYzGKLqW0Vz5jcHYehuXOrqWcRhftAm5c5xAMQOxibrOo08JxIJfwcQSsR3TMq396E52oi/ZGbvU264ktps8SZEehMfaOJ38Ux2b76FrS9uTOHtx1bdXZnuT+72Dz1PWL8usAQ22D8Xflwj7NnLptw/2y7j62x97aA4GQnpl/wBNopR2XORNMbNJmGSTMTnGt40ENtKTCOFAlg/M7CAcZAeLQCXXggfjkBApBsChcQwO4/Lv0MwOZ4vDNQkp4BEsH6GJSLMp2c2R1NKR1FIY2inkfiqxpmZaIE7T6jAIyuXflLAMDH41msRMFxvOclHPs13sf44LRqElItGIwCoC55ZWkfIo84gEvvNq87Vw/P91z2X/5J7L/+Key/6Fey4P7rmx5J7Ll3PPZf/OPR/UzD2X/5N7Lv+rew7hjTWW3DOV9JFza/73oz/iYRM5SQWLbrlYsfB2bl9EUQRYLszykBOMWUE1DefblMtDB/wmLWalA4LKUygc1Es1csP4Ry215oLWitRWK02eQH5VJIoD85e59GRLsBrv8sqWtjrFWIOg/DDdNaMYq69UfVyFq286wudM/y/P8JGN8+pk3+EUnyW85ha4QupL9hHOQqorBbWoLuo1nPiGj5gqULaKINuKFKoinySFSCieeYSVGylcAatkEk6PIq3VK2T2MgpKG29W05xdHatTqtXC0ScDaQtNh9rkPa/DnoWnp896ZCG0lU3YetX5yScVgMw+8GKBl5hTbB1yirZ8TjEghvNP9BCqkG476QhHdCpcl+fM83i3Qo+jyrALFc66CZQZAetpFMLfOts0dXoKYbMiH0SbB+FEf4vQasvUK+DFVo2MebeIKUd13DnidQl4XUmmm45lzqx76kOk28inTxf0zBjk9lKT3oHXPuisYDfyGmBppNY3UOtHEnwCoX9j0zOoRiRqUYs0szrUoI7jErAHsu9BGIhBGZ9FFRhMsRVGBspDosIVAw9psHoi1MuYhCFjG0rA0IwPqe1K/mljV/GvZ97yh+2gfC8Z6ErV99uWezB3XsF/f+e/5F/8a/tf6lv9h7p9+W81/lujxNIK6YLWIc3foDS/LH75cG1e6xCuzWodwrVpuiZcDVoI1360EK59q1CH2JwqZc3Xf3XN1n++T/xgdjyz6x/pOqUzrXTK0Sqokus8pnUIVdiNtSLBeP7TvzwaKBwMFJDlNjWs66RlWgUqvx4is8GG1IUTgYrykU0MtEm3CiFZYKAdGWgXGdCSuj3vwxlhis8K78anGfXx12Vgzb9aBorIZqgK2ffNbQsWt5A6JR61+dcVYE2zFaDOJo9UurGppgN4+DqLPTQY1ZGXnugpuXsFoorMdNsHvRSZNUvFV6GfNl2E+KnWgJU2gLAB2oBJN+O06I+afayW4DrUobYhXwFWLmcT/bVFQ54HsTyI2zQqD0aVZsmrLuybdWTJhgTO/ozfMKQpYz+wWcZe2XoXsUem5TZKyfjMRkdCY1IfArZGLgdHY1zGmG28SE5grxO28S+qLf+PMVtrxmwTFa9xEbgDdqzjss8pTsPORduF2twlGAsZbwrZMtudtHanNNLBHgTtsY/tSQ+wZ2Z7sWavbfyz6oX/296xtwx5yHap7UOEffTj3fRMZ/vyZt+Mwdt+tn9aGfL2mRX7loW8vX6xAZvM4uTMGtEYIGswUCvGQC1ACozXijF3HyCK1IqK0BioBYgLwVq3sgtLCogB25U5J0fy5sjMpmCKTcXUTkmZQrS9Mc2pbUebrpvpLlOoNjUvzFTgJbxZefp+lgvMzhbibNbPEaIKcxWVCXFeHqHNc0GG+UKcz/qjhKjC0crnC/GYPLd/jAuiHSvEmNCfmheOVzpfiMzrE7jABYkXCnEh6xcJUQVl84WohD6BS4RYHeykeW4/U26/iql9WWX4uaqdKIiS+6eW7JQlJvjjnDlZGX7Z1SnK9iuxf4oz5fSV2R9op5O88vinKwdfVCL/TCWqQ2Ol88vtbCXmYz4/Uj9XydbzYra+UUl9Vv2Z1VdvGj1cqDhEbfi/svzBkC9Wfn+5VL7y+HV2mRi5XAl9XE5GrqAwzOA3WfWVqr9KyX1cxY6uFv2rXbTta3L4NW4fZfcH4loiXCeE64iwJITgSvZHTm5Qht9uVHb/UrtJeDdR4zvx7Ru7WXc3s/kteY7/VpdWhkQ/biPwdkeLv0PpftwR7ejO/O5OVt6lVH+Er2F35/C7Cb9Hif4IL9i9Ofxewu9T0j/CK+3+HH4/4Q8o+x/hXnsBVdwK6Fa2V2T+IQEeolwHiN+Hddd8R0CGpO0AivtYnBWP6y5sCAhBJW0KPClU7QoQ+lSU52mihn2AZ4Ra2hF4VqjaCiD0uSji8znq80R4gaihRK/1Yo7KXQBCX4pSv5yjvkyEV4gaSq9qL0Co3BQg9LWoiNdz1NeJ8IZQVQrbAkLljgChb4X5EUzxbdnFO9opwDtEfVcKeVezQfMjR/rR7D25c+4TvKd9Au0WfJhvD3zoau0jtf9YWwX4mHb3Sdhx+WQ5y/tUGJ9p3yDsFqiHz0uW90UO/4KW96Us70sifCWEr4iQe+6J3DzgEHwj4Des/VbpfvuOlqRdg++0cRAG6Yf87gei/KitgwiH/SR43EjAz4IH9f8ieNOWQoQX7Lcc/hvhv2tDIcC1myB403bCn/1OV0ZquqfL1L6CzdQ+Qu4vvXYnZvmANTu/m020OULIS3O1j5B7zHwnYZ4PDM8XatxXEKpKR2tfIPeZ+R7BMT7IcKxQ4xaDUFU6XpsHudf0IHSBD2ItFGrccRCqSou1vZD7TQ9Cl/gg6dIcdSkRlglVpbDTINS40SDUaBwn+TBOJ/u0UlsMJ2uXIbNTdXuaBxdUp/H2dN2e4XG6xxm8PdOD7c70hffy5eBZSued7XGWx9m+aOfoOIdz/J/R2Lme8eB5HswKnudDRHa+1H6+V0zGphfo7gLetVV6JRrehT6tsIs8mFO8yDfaxR6VdokH/y5mpM2M46W+WQxzoV4sjm0v0ybN5aJ6Obm9wuMKb1d6WiibXeZxpS9clXN2lVCu8t3dWqja1K1lV/v8sNxrPK72uIaiXCtRrvVN0+G68MGu65qku96n3ewGj+s9bpB0jDEDsRt9xLjJg383qrKast/s5WVLst+iu1ske1gP36r7W7UBVHqetbLbvK6w2z1u83aHx+3e7vRg4U4/0O6S9u/2uMvjbrJ8j8c9ZNiFpvdKi/d53OtxH7V4v9SG+z0drfp5gP0UQu7xQY8H/cZlf7OHqANnD3s85PEw6T0i8o96POLtMY9HvT3uwcLjvsaeUNWTHk94PEnMp4JunqJuAs2nPZ7OaT6T03zW4xmPZ4n5nE+9Pe/xnLcXPJ7nlqoHCy+S5kui+bLHSx4vE/MVj1ckTXWg+KrHq35TV2mvhZF63eM1j9eJ+IYs9E2PN7y95fGmt7c9WHibJN8RyXc93vF4l5jvebznm9YK76vhBx7ve3wQrfND6ebD0gh9pLuP8hFKqoNWPxbFTzw+9viEuvxUGJ/GTbtS9P6Zx2c+rC1iPPG5x+cRwoH+Qo2+YKOWpYFuaV/Ggf7K40tvX3t85e0bDxa+4UB/q16/8/jW4zvK8T29mFQTmv6ggf7R4wePHznQP+UD/ZOn31Q/P2tDNCQHf/H4JR+UX/NB+c3jV4/fSO93kf/D43dv0xL8wS3XBCxMT2psRsKqmQlmJJiZFG1Wkg/0rIRaDERnJ5idyMHMSTAnucDmJlEL85K03OYnmJdgfkKfWIIfneDoRKHSMSJ9bIJjEhyb0BMKjuMSDQQ3XXP48UmjLUjAtguIsTAB/+YmYaqF7hclWJRIpsWJZFqSYHGCJeR0aUIqyxIsTeyEBMsSOzEBCydSppPU8ckJTkpwMjFPoUw4pUmiUxOcmkt0WoLTKNHpSRzFMyTRmQnOSKA3+s8qwc9OcHYu0TkifG6CcxKcS4TzBMd5UaLzc/j5lOiCBGx7ATEuTMC/04VRXR1G8yLRuDjBRQkuJsYl7ASXEKHlcgZ2aYJL8w4vK7FweYLLc8gVCQi8gi2vVMsrk2jKV+nuKt61FRG9gHd1gqsTq9QtUeyaRJmDa4V2LVtfl+C6Ui7xmmSl6s3/l6xHWhbeCsxTlK9XrLr61PIp5cxOuKnJFD/Vs+x5LZ9SlcPK+a/FlEqWK5vyvfg351evEfK+Sr7qt+0hs7NCWvbfUnvxu9tqpQ0ltVoxnbbkk1eT5knL+n+RtEzLmh1qjnKs3q1sfZmeyCnLKytZs+8/bSWN4LuALrwLWLT1cxbWj1noVgZi53kLPof/pNQarUWpTd/eIXcx19oF7PZkoQP77UBnzYYd+wbOO6UFHVYdXhMsZ4t26KQjjQvzTwxvUGxE6EaZbYyNRXcTlOuyqWgWbDNshg61tnlf7V5vgi1m2pZsu+WRthW2wiazbWtsjY7DlcfD5pOsMza5oNmJxuiMbpOsO9pjU0Udcde6aD1zQXtGOZXTU5+9g4B8k3Araj6lgHnmYi4zF72RHpHvJPUeyZzFgMuUw0O/I6yWjDFVgbqZNrCvEhPM3R1pgzEYtbNtCLhnPZxZiNoLuIfklIPA0KJth22x3SQbhl7oH7hqlo2oDjyN7Ds1ZCMURlcTaTT/jdF7gkUbi3KM5ejmp3Gv32wvKYVNZO3EjKmI7aNN/h977wFg11HdD7+55ZW9b/fdXa2klXYtnXmSZcmWLNmWLdmSbV0hdiV3jABT41CdJwJ+skQccKy1LRcIHYdi2kqi924TmvinJyQQ0uiYJASbajpJKN/5zTm37Xurgs3/g+8Ds7rvzp05c+a0OXOmPboVfd1vRJBv/qtBnvlvfr4uY90cyzJWyqqM5bIog2RNxgQ/Ash4DcTquYZ7CtdwS/Sti+tkdd+p5MaaWL9uIR6lSdCHYhJUVrp25VolWqBlEJRGmbGth/efi8hbKr80/kiOtRlZcdHF/EThOv6lyYRcuS49pWWcLa7jl+UMuRBz+rINft0l4opu1MTB6TeyMN9Tk0vYn2pBhpUs1Mi10q7CY7k9GQ+yp+AxYVezHK/hbGs6LMCnciAay15X0ckIzSEgHf8HulOsxKDTgIeJBNjpAuwMAbZegJ3Jpc/C7CnuZCeWbS29gUtv4NKu7GoW9HUs6DVdJKt829iKPueZFfkcBM0xBTHGD9gomYBw0wajIgbogkN3xz6/1TScD04jQItjzTDRIrftJ0F5DqLurqBsxW92lTNQijcZj8K1xrPD8IQk3tqVCwdxr2ZFPo7iYyYAyScqCLfirn2JtU7OMRdRz6YiBMxSgBHGd60lK9MSbREKWXcjArGcQkRdJ3QSI2Cmh3QiJ7jXCWY/MfdDuYJ/pdJtRSt6rKn3n+6TLL3Tfk0b4lEX0sb3OkbWuCh/pXqnsEKh1oreA84dL3j2JAR419akqjp2LuCqydrR1RIFoJbgfixvbh8LlDOGctpRXK46Ve5cFqKozh6iDCbBACHjUkdmD1m++G0Mt9f/Apo6pppq0TFJSRI4FhnaZKndZT4RLZNL7KGTlu3cUnsi02MFBRoQV3qc2Ir+3Ddr886e5phcnEjuuvP9nCOQNfpQBgpwFYAPeR9TAalBsSqgX/wSzgfL5lMDjfBZA2R+8SobcWLEKiOJTWzZ3+zO4hxU52ICG4uONM2o99ZKXp6GW4MLvpIxmWLYI6vM9oKmWabF8uAphvhVDtUJqV0678U0QdyFx68A0ovly1Ie7hGxKsT33Jyn2oRg+8hqKrcFfFsmDya2gj9Rsq9g8Ce5LptNYQn8ymTArkJHXgDftCfLR94OgAm7zXiL7WpJ5P6dVvOZRAmxifR1f0A6T3WTZwLlYrIuOy8fYppuro0/h3rafrIv3w3sl07N9ZOvvWi676m5BtLmkQ+m4fjcJBYAyc1/dyMXcKfJx/tvQju4wgq/T3Qk43D8Tak2v3orkEqh18kXn5ufc2IDqaLikMFLWKpfth1LY9y+ZwukknUdlVMTdY23TzYowkQFjArGf4JR/C2HRzioe5vjb+N90BS/of+D+dreDsi/Jml1ObNBwhZgFRKnJuu6u8/ytssNEUG0lmtM5F5LNOp1vmsoGRZIPKE8Jv6UXI7LyEafAJuAF8ORyy3AIi3rClTiTyL7WUhgl8knbuiyGx2xX84PudPhPt0mBvylrHqwQXY6ocfog9mdocBUjOdHrhz2UskNGHU5rHm5DfT2DRHc5LNSwyfSSzhAseS6FtOFMwXlT6z5qMpP/Cl3VNe0Wwhd4Wcpn/UdDcnXvXl/zhz/yZv1xBVPqOlzesV1nPCNeJ4WB2YxUq9zQkUVbSbYEf8zCBSR/5sq9D/+42MXesi7k/w5hf5/j58IRXyk3llEyJGAkMjevkDP2Qzcpr7gl6PMyP03B4oUAw4KJ7UExQ2/SKNAtgUKBfmJRvD2RNdv7ULubHlE4I5wxA8pmeXc1XuUY4n4QfQ/v0nEb99vsSwTX2DPJj7o3fYz8oOix0x+/3hof0/o4+hkr5f+5JWprxee9JKqTKfVHck1KnSCORZqfh+v1kfTVgPL+IewXmTYze5wQ8c6vE9xg4eEP3cJcZ6wGe/17J0C92s9w/gRYBRP3QtnH++y/k4bSv9wtJMxycALWy/AlvcBlhx21+YAoLzYYC7A5TN4A0hBfkxUL+A/LwCGzYYVl/TjrEPIaf3S5V9HPeLTJOs7TnBqAuKviyBWHxMILQtBZTWtlxjmU5D+SsaE19l7XGS19LoChGfCQBPXJXp7GJgqcrIcyWliO7hUjkwI+AuVjwItSnpSiaxjAHSkhQJG/RVH5ITfx6P3+PfHDvlqhz5dtkP+bDs09stantEjW563HLvZl8WNvlgZg9+hq4lUS9sVVU6wikzGL7AK73H+Xsd7PXsno79C8vG3HedEBsJKkWQ5UwxzpshNvvBRDZnDDUST1MxkVUTRYd5m2a/3eibs5ZnQ2b+fJmx5fxMWiAljugqVcqkl9YwRVpYWlF24ioqA5GhXcdgDSFXNM3/KiFPKmfW8Q8LTT20fGOIXjWWM9zh/r+M9Z4gQbpYq3P6ACPqH5xB0c38FffmRBf3PjtPzs6Ys3KGwTZRASFbqXso2CSQv90+iOyY1aiWRNqmwkxvyQwFKAh5RKBzp44Peboy/Lx8DFUZdn/mTlBzkWy87BdbjB+SIG7KdByq48RL1BslGwQBLooZvVlsYoE+5CAUCOV0K2MV/D8j4KZXGn8c7VZCXX7ODMnNzWREDKgMu1Ot3ZeDCL1uSoCMyXnG9EAAzItF/GRO4AZ4OK8vjPOCRtjD+hHuKT+qaUt0jJ/Wmo6W0vIynADSp20p+ZqxxLe/wccOiYwG6Uy6TfmiHyXUdsF4WuzrGJxuVO1RxvTqkBcd0AUIghz/K4NH6AsbjbOQnr3BDyfjzIAzGpSOgglYV33wTUsedeEgrTZkj0Ss9Dzd78iDbzzMpnVWaUsYygcXKZCwf8oyHSk/xx2yIR8zOjBcJhetgEXlIrosm3+lup3P5NAEHusaSNKZJuMF0LKIqhXwLkivcrlH1CQiBuyQ4rMJsznKwcKOhiUSLvIySiXYv6yDGcsc1JFmHx6ZTZqpxDCJPB6oYld6K09iOkTR4qeulnwV2Wg9YuLodySQHC1V/LCBa68gB21hApGP8/FQ4NZW9g2A/+cD3cquEtgu7p6vDtzjoqYnCl2xwLN2KgKRKdJ6qGhwZ2GHGOhsFV1Ql4mmGB+6mgyxKx7TRq00/VKniBgM7QUn8bgJQGgy5w0kwNhRoi1zPNI0WMaWS993GbUruvQP/fuF5/C/Ea/s4/3vd5Li2FQ3zOe9XOVapdx3e0Ld1h40J+6BnXFPbiNGx803GKR345Z+Fm0ylnX584y3a/4On/BfqXamhc1Ev0T66CcJhYNAp0q7qDANVhXY2iIqIBUpLrp+LQWabQlE9IltPhYMR+IrJ7rmqOKFWua0k5ZAO9iWmnWnc9gclj2tKk/+vuVhm2wHrqnNevae2yzAsCvHnUXECYu1T65ITA7yLBS6865Lj0EZ20sPO/Y7emqCulAKNtBWZ+jAGbkL9QGii42WSYJF4ZUutyqRSujpnICijnsDL3uA8AWQC7CYghmI527j0c9jWkopM7mGwMS8Z0YK3fnI/CqZ5Q3fUdlKZwtTQgzFBD6W3AxL5jVKRQc1+LjLoP3NpaTcl3Ki36DL2Ae4/rIkMKa3z7OJLYFZyoChy0/X43jc5Qqc3FyxXbyPiHO1mBhu5AeY1L1UdanLnWf7GcgdLhc8KSX25gLPaYJZ8migq+krT4ivd+8Gbc6sE0peajAhr6mIlN3zk1jyr+HDpC/oSRCWh3cX7TT+7X3VeI6lSztVSRevVyrwytTLuI8FUZ99eVfiWJb46TQTrTEldDU9++eJMgIttH56nOyLOF+HKHQHRaa9IVdVsuSRL6Zgf7w535/m+aewT3fEgzVwBgr2w2+5igLAjSyj4Tx2xVJrSqIutS5DYNorsb7DiyhmaWHTBWpffeSJ4DqShmmIATr5Q2MFHaUcN7UjromohClRuNwv/rjRbR2EHCrtpjgp9pSb3rUkvQjimurgmgZd+F+pwbOpqntqPCoJNNfCjps6X8uOrxlT3pRVJj669QMh/Ve0FqoVeQLktch46rZynHUFNOoKadgS4N6IV5YodimJLVrfgQJnn8ad2bW7drR2r7qrIpSfcVxOj1zJ+S5opZtbLzKynZtaDmdUxrYxmeq2tksU7Gmm8Emlsf9JgXiYnzcQcdFF4OqCNGaQqWE2b66G5Xm9z/847enPnamfqivfvR7QX8aRnwIApeY2zJkycYWcmpTzr9WtdOmeYcT/KXYsAYEDjNkDHQ/wj1H5FDYBIo1icQpeiZKkpmYU8YW834pW7kaqmlruRKFMKMVl+YtRWSU/eZBX5J8iOYOaJkJRURM4bKyDo5fxnfqKu16Cps/u+WuY/1YB2HyWRZbhOap4LqYmKBk/A9MjGMWkDN+o7xtSPpvdl8S42ynXlXrEx99sGpFYgU3xbT6G3G2hlHaruftXKBiAodt5ztvnDPR2P9jgB8mEiQG+PEJ9Ixa9R7oNAktTQtgfE0k6V/ZABdEQNnXuQFtTRZlzJnJvsLJmqTDzwr0FBuUMIe7uevJQvvUCW2Ufmcu+jCB07JuhFBIljQUn7qGNFaq5uKujtpurgYL3cTb3igRp73XY/x14OdnHkFT1u7lFlrtcTJVtkktWSt2SLcv/sQIo6t/wFMiiS/1zJtpeWbftiXdQSw9s0UYqLn8/wDpr+eHh9kSgPfMUC+WKBwIonOUox03qbPXL/mn2w0Ox/9k1YVFer6mqDMi3CjBbVIi2qZVpUszldby5ahL2YueqtF6m/WSVPrrYqKZfnbuGePdHbO8vrWk65brBuzeHxFfWn9wasgqZwPOrY682V+37jcGRdzhFU2fFy2fmSMUHa67CBVfa0faF97knaoI9rFDKb0F5Mj2Xk992YVuNPSODfgYx48esil+ZJgMsrBQhdUaARuPkt7XTSKTZKlT8LZskpfICP3BrAKnY9UFbPhPe7fRrn1kgUs1haoAjnkbZAXChZDzQnQaQ9VVAFBLnglySIJwTxeglSPRJBnmLMvl47YVNllKZ6aVP7EMXpZiX3eaiwziSbtmIjfOR6BrVTsN7sCqxDIDmUmh5+Q5UI8OaYofvx9h3J/Aqp+1jeyjFb3rKhFTr2b3ZOYphjbvmcBrl9zAR43ZEJ8M+eCfqbYzWOYT/j6MxjWDaP1GcdDLmUtqcLMby5TFTuB9HRPKCj1lg2iDCWx2gb6QHyc1Rq7w/TXn9kpr3UGF+ZJszyhUkB+AIuigIGWEkbFCVu9k2wHkmUJpsZU6aJZQPtMPhw19/hjjq9Wa5w62G52a9Ke4GYm602zeM6PYkz4XYSTBN5WbBJ5y9/+juYAuF7OTrtQIpltAp17kHSM0XLRsgag9KrR3J7o57HGwqex7XGPzJyr6IibvxhPwlCaTSDf+bSkYuGQ640cC+Hxr5S7BxRQ2/3sUybG4gVx+LMvlYzgI0JCubD9QjWiEqKBXfdwY7BuSfQQHPtBIx0K5xFr92Z1QkAQnmGSSfGVSIDlcj/+SWbCLzn7v5+rSkQpatwXxJ6uFBIBzHTJrsCiXwsCEoqyWoVFMGR51GT6y7suUhXnIp/fO0NxbUBXjk+TID50zRig/FIAjk13XEI3p6Eurv79cBSnHx0JupkFy8ql1nMoSDASl1kM5yt6eGXx7+kqM+/FMTVUjTmPhM4uMspHZ+3yOW6kbwtl7sg5WWl3AWpAR+5C7K41qrfvchevlAKyBAjc2UWiT/2Mk9My2w89jJXpWU2H3uZp0YFB9GX9SSHK/kkuWOffIl/Wh5OjRVM27ZE2NVXPL77xen+4gHWTJs82L9YpL60KiV+jdPVNxjXOxXCgP94O6C6zKUYYOK7dmb5nn+XDJez78Z9169/97Lp4leTeCCNk0KpudW/Te+9vW+borf3DQ30XWzTX6P8fhrlK3hZgM4Pmf/MVWokAY+gUn5ZpXxRKb//bGj0V8Z4v0J0xQDMRnZe4h8TsijdT9iozzzRc0K25bk1K7cEuL7L6Ny8zoImFaS+T0PNWjeCFsnXKlNOSgL+C8XWr65gauhlvDPAN56pRJKa/FNlEoWSr3AJNjtyvZlvQ7GyaqvuLw19DKzV5cjknXMIzThKNAe8P/+76SPDU0iOCYxb3KVwN/mOHd/uxw4UpEpeUBdo+PD0yyM3xzA2vW5FRiBuyT2FG7zJy+/w85y5Jg8fryQvN7vbNdApNlhe1okNTjGwAIyVKCWTJdqbGSyuvi99YJX602eOS9Nf/bGb+heAKOZmzI++m9sARqy8TBHNFApmvyj7tTz7tTL7tdr9UgHYLBNPyn8hf3bd2Bj52MAS3Hm21gDOPiPxuy4hELmvpADIi38mu6iAgnMT70qHc241kL6sxEusL6vxMsYvkdA8W2P44iBv8gzlTfbA5FeRGG5pBDzWxCQy5hwHhX9QV1JKY7I1dj7cLefk7mOlz1ahfeqg3w6wVFECn0Ipb6vZ4I+JGNWR0/kYY3BkKiIM/1UgF/A6p1Jzn2qMTfw1+QhtqpJH3hr30R8H8rBCxaWRybfen0+zx19HSRnFOdGBvMuaOiAKzxAwsDaRH1YMEkNzvLC+WjikXEOofrzNbabKOBqMjaWYa/Xli8sNlAGJfH6PlO3I2NWCYHaigZI4We+cHW/HoM6+GTdcyu5d0h8Vh0AHYHaMS5R1jo0/X/z6rf02/ixmPjmZmKF8CdAW7bEB4k31tkZ5dKW3YC5TisO3ogRqzVUEQ5DJowLAsx8MfACHHZgXezqGGisOXdt+5jP3LiZHJTKKIl9daDLL0H9gTlKsJ9OWAo2i9ZjLPFSGqvAFv4LkF3wzteP3bNc+mfZmbwDzOO0sL13yKqvY33iLrrczKVl6rin18dUp2p/edEvZYKUr5U30YfT7BWJ4RyWGLzYjI8atPcTwnW/fP5gm2L/hAcK+nUUq4rfeosGJQgVYnXnfHFM0CR2pgTbot4g8SCj1Jd+q08X7e8nQlxD9fZoyLWZRwldKBEoJfzYlAkW77AEVifLmOYjyvf5EQS/1S1CFS81JllvmIsu8o5DljQ80WdYrWfhA7n4mZKLHhMBkJEcpVC4hc8km3WYLCEUFG/vlFOyW/gq27EgK9o5ZCva2IynYK4/JPIw9oObBHgn7dz5A2P/PHGMwZaEEwvtbAjg8zqFzTS/Ju5/QcYk7QIFbRxT3nGHa4LnF/ZXHIu73V8XHelT8+C2fPUqb3/lAt7kpdu69gJu+vNu9bKzk+/vKm/DkgtDSxboyQhH1pXzZ47vc3ZKy6PenYTrO/6bnhX1u+9SNp1fakGT/KS/IkR2oGiicFf3nr1WX7s7CaYcay6+WshQ2PNbydfhSDMDahilP/A9XWpglkLF3zd02Knfg4uJM2fCXXzdckyusD8b3oVC7TnW+1Jnq2/5+074nv2bmR+cXbvbkWzoZgq7vl19yN3Ke/WPF7FQ7KJk+hUzph4/NoJLsI4YRjERt5g5YTjkxALLIe2XiD6YztTPGM9g84XjLZOJsFZ4JcENNECDsWAMapqHwihtzMsFslQLcwFqjAD/WtXlYs5F/V6mOdzp4gPgTE4jv4666W2HlfewguZL1g5IxPjgzI+jWUZWuz6ogYF5BwDz6VlkeZDm2Tm/k/Mu51ysM4JfIUUh+Jju+kx0/ze73lZ0AshP0lZ1cco4sB3MJxKFfmUQUb7zuLxEQCCcOYVkgyne/Hn5efvfrs0PfK+xv5mpKkaA07EHQ5dfVSqEfA1J/5mbDaxPzvbD9w6h9brGX+QAKL+kJNgjuP/jnPNigC/bTdTwwZfmSaiyj6Avhc++9qQChUoJQLG6ivJ3Lj9BOnESx8biwXlfGet2xYP23f1rEmsoQqDMbcZIe+Ijs2czZIEB5T04hR7BEnnt688usj2icrhLaBjhoiY9NTUVT2R/9j3+4iP6WMvoQ0xz/iDwglY1+v+95dYiiBFJ77iNXbOBGIsjvJiJyfCL3br1sg3RPeaRuQzSjk3hPbwcSgQ8pnxusOuDtmttuAtMgRzVsloWM691Vdr5+avvWuGWj4eSgu65K/FhXOwgRjnMu8rHPLkck3nLQZWwP0ABrtmxNaHP2p+t14TPtgVm6MzB7H3lAdapp9sJUbQOPhhpbmNfMw16H9rm2AyVwIaMZzMLLaj4T/Y8Mttk1Uj2IPwargbCSm/2eNoVDYxj7s5CEW7RdWNTTo1tM8Uwak97Yzu9tzsnZOeDXHWT+8K8vIwrMT9qdvJaDKIt3uLfLOknjwkE/0nvQ5S5gCbOEF3Ml17fwHiQGL3+EzY1osR6F1OS3Ab2nHz+pppjUJANADkRcS6uTXN3Nrweva7Z6nq0BX6YhGduDFMk17Xjhi+VbpS3L0jYgwpDXZUfJ2JiTmh43X2JnAzTE9lm/NVH3YPqB4dXlA+odcBdX86OJnU0DiITF/MBZnfxwx64OyFVCA7pTNP9PaTVUxfReEGrIHQfr3OCEJ0pXP9kIFUW4alp3oiS/4P/VJEe1mIOaIX4FyfVd7LEKCi8p9Af97fd2fNcOO+Anc9Fh5BnemANHhq5kqBYzUNPvA27b1587c/Yjz1v1l3bEgYRHMoJ8I2f7JCDzTJOSqVrMtLLp/WrAmhJYcSQGHLnaQkvmdu0CJ8l1fgcaEZPe7BDhnzZykB1+e/wTQibKRfxdjhtKnBA0WLT/ILIyoJYsbS87l8FLz3ril1xbdefxPskSfxwpvIvAN6zbYlJ1Q/D1MJG9/6GeZkF6cOgFWmbwYWL7YJ3cL7pgsIbMaypxYrpQtT+E6wZhrpH5vcRcOFiLkJHz40jdELIugERtr20VPwdcC4sEVuud7E08lgPJ7hc9bjCUXP5GzuVHYjUDuFn0BP7mfq184mAguQIEYL1ZuYIsl5/nki5TbYZrGreZFTF5RoZXOv+fyGFaTLJn8d8zo+mqMYVhop/7SAUeGPBAemY1jHgB1UuqSqZM7aqbWo4PoGbouJHZY8dFK1QEPHXf3v1zCabrurUs/S2fvqFv+t3/1j/9o/+zv2/6T752Y9/0l93TP/2vbu+Pz9dvualv+n1zpN/7shyOHDQmO5eTSiZKadaZr/av8u4fTPdN/+kv+qe/4Jv9SfDBe/uT7P3f6Z9+68/6w/nTn/Yn2ceK6VALm3973ksLZAgjIQHUJYEsBCIqr8bXD2zslRW/8P1sv+ezd+TPut5XXzlvcYPy64wcK1fJLJceS2D0WALsRkqCWbvGfbFcsvmQvOwQJj2UwE2vOD6Lj87lrZt6U+8rUHfG57RAV3u9tXiuAL5wvTo36kdjDjn+PxeX5zEcNbDFeNoyNbdqZAV9sap+qYxa4n8Vsx3tVtJIca0lpY9n/eJSODl3QbIEZUQKJyqgAnf8hED6nJp8NJOr4CrPhj1SFxxVw0/ae+mgi8v8HEGgVpQqnBvvEY5c2cV1R7vkPEHflRotsyvQg2fcAaZy5mzAMR7cIShNfmrblEsI33QKj0y2WM5CFKNncl2uc5GAZF1CVoFNmSGLnS6CbqAJ13TIZ8QlFbuWfJfKSViNKF8kPx67nFwZza1p5HUs5Dh6LfZ9Fc40gjiIUMU2dCZYdqohS1KJ/9ZZcHEKyccfTy1iTrOWrhwE+vWMk5wj5J1CCWeHG1/n9+rkuK276EKjQ6F42RSWFwoSF2QbH1EterkxISOoKMpSFcEyFCyrgmUN3+bGMUBQpIijSTE0VH2qrYMrwBDvNcbQxX2o3qGqYlidhWHAEuLvUwYJCl5eva77YCBc6ILx4g5jqT7ISATEUDOEx+OagzIdAtAhegWogBZqhX0pgBYcU+uDAofQSqZAh7y0qYuL3Kopt6r9GCQHbxZNxuwjY3rNSDEGOvN8FwM15RjoG5dG7NVdJ39G//BbHYv7ymsfsPrN+ukyDsiALoV0g79pS/gBL+e2vXdo9AkhsMIJbbVZ48la31jMbVb8ZEx7awNsqMN646IFr35PaelHdghTnYHlwZ/+FdbzCutK3Rdyhdgn1ltdnSv7caEyCSus5BISwsFrvU/tcm5cIwuR4VSW9G3nlidilWmfmv6uT02yliaWurj/K1eXVUDVQ7aGyrNqKlviP+OcpbCDZMjjeSlxzucA4SxKNd5iB3JKDYBSPNJ+ri2ifZug/R+v3V9GeyAxe3jVpOCMCD3V84gOs9cxXXE5fgxw5E31oIt/1A7aqODHhkNexXhZijBqKOC0mgSRGDP8QT3rZJLpEWzWHLizzQBnrO+zEBDHAqoUbp2W//3k/A0+BG467MxOOuxlSdOHK5rtWdyv3Zm1aYb8Q/nLtrE123b+r21sOdiuxj93wfrG2QLqWli/f3dJVU1qIoQKvNoBR1IPujZTgxoHZ9rVGckzPcDFKDrQ5uQZLVZDsRoFB7iEptXRSIQSJNKttAkyuQCx1Ux855twBDl7cAfMfy6jee7Hw5AlH9SMmSjZIMolIhcFDHNI5YByMYgyqoD6jUOzo9jLBT/5eSh+r8qxTj+8tl095Ix4NS8489qZ+K+Q7aANZnG6mXEaNCyUsIMEytkhZnwTjA+FF+16mYlD/ZnYEI5REP+jqxisUyFot6jBLJavn5avjR7G+v0Zm3PRBxf7M1tUWRbzVmnwENvfERgzmB0HsaW/AJaBuCyHR+fIIgAWulgESTMg8vipok5VwSTqFSglziWHrQuQZQRO7Y2fyc4Tc0l7/bdU0vw7bFSUNN9G5M+Stp9/QzIXauovbRFmgETa1s0lbbVcaPqIXZT+PNwjdode245E7qJjkjtYmMNLGG3wsmBeAhD3qWVD0Y7mMhWDs6WspuzpdijK83FxyciQooPtKDcsDYpm2kNa6Bnu/QAypbLGPu6Q/nxaJxVXGhTxTSFR1TWiPchScNAZXkI9M+0awKjlq0ISD/DnFPQfobbagTbn72+L+nbuL/qzm+bo3LEkt49x94MjGXfUfr+M+5bjs+01oVyRBTVlTS03AUrPYE56DgjtipyqCYkDkPjXxLZvUW07XJlL3aLjNu41UbLa8Rl3ELFs3EHRX9q4R/3VTo17NNu4Rz2c9ftzNmcjjHtfbpeNe22WcXcQW+mvmZR3hw+qhe+fr2zha7mFr+UWvpbDOpqhb/xyhr5RNvSNYzD0jf6i18CKchG9T80petUjWvrGES19Q4SwcXyWHow9mqVvHLOlr+aWvtHP0sNpKLqQETV6LD0yHaOlF0ipczI4p9f5LHFOYOmruaUX5wRFj93Sf+6vbp3L0h9v1+D3L/CLj89VwIsSfqQbtEpymDO2AuuClsiSFI9CLDDSFuOnEiRLvVZ+5u3fd6T2v3Wu9keywUKH3vXolbHf2BdeN5BtShgvDMzzlSq67CSURScIJ8lw/bk2jxy163oKTUO2dRxegBgXGf6nPZAcXtTJDl2bHsUXTBBN5ImHhyUR8p7nbKU5Rwo5m2nO0ULOgTTnwkLOWpqzUsgZpjn9Qk4vzRlmiZqr3imfA9kA6Rt5p5jtSYBJdJMz01Ym4iMXu/B7YxeRjlYHhHkiTIANg26b+dib3cJBGjyoVyQNYBQauMIvzAsLr62vWYJKxYRB5DjEHBF++Dk/GF7Gk4GO4Mx+XPOAdCdo8aAmo3PhTy003nGQWiUGRjR0gPuslmYBPyVLzk53xdMMg2ZICmYJF+xLzjLKXs7+ZoZwy2E2xEZEKxzhKkoCkH5YKD9zcWkCWW68lBXp0SxKGrSfUqpI1iGmCv8oUAVvDGJuqqDBR6EKCMcUOZghI1QZ7EuVWdz+XIHbOb+9OfmNRgn5ft1aNje/h2bxu6nCI/yOSvyOcn5HvfyOioI3KlnKqvBrpwXKZ+mQ3M46WTkYywrA4XRKPp61oI9qAOGnx0nGFFCYL/0LizkDquKPl0mOoBncIh/Z7DxfTlIbmXJh+gYY5Lv1I2HGkUons6tiFsWQql3NE2FIxa6WctY5URPyxteBed0J+7BrU9sZdhuJSFjlqg2lausL++18qdUOCDPsAqnQNoTydiF5tibstmPSUruI0sB94FbroB6WAvKdoDmkhDE1fBmiGjX4h7B2ETNyPr8dhDmvQEyaFOKdFzm1aAF+HWDhXSg/xvhxSPjdEJCLkjoQGMNjjGp41GghHgvThU0L8FiApRVo1nw85iuZ8q6/DpIEIFrgiBYTS+I8pamcJNdHkiLdsDUgG7Yy52AgPYW6EYFW46lz0Ij+1PjedVg1mS4VtV6+aK3tl5ZNe/nbnDfzfPFbt/a7macVZaH8tsyvAXy1tKrNJ098aT3aENMZh2Shg7xnGXSXxV/5QSgzD8WVt2T9flcAVfMRaU0x0ekXNLqmi2/r5OO1QYH4RF6ugYJYLUc5V0RvbkUsrqz1x8tRdmm3HHMoq3gNaHihTGs5JXE3BtaJH4FMMHuyMplZJ6Tgka5IRB05dQWdYbmRueYicJ98Bzwo4HTINtKq3NRRnfhRVc2BoeCq+nC9WtoYWAXX+94IFsK0edTID+JVTIuiHUbv8nww8Qh70aFohWGQPyva77/FBnm0P9CZVLfCroL51aB4PEEoX1AuTO79ATC3YfY5edMPJQVNfJU//LzstALdnlAaSpp8JiffnlBJXsj3Wyc6pzbj6wfQSlan8bKrt+3kbEi4CSjLtKK5cDz5Gb7za/Jz/Liagl2EYz3etbOw6YFFf57szmH4/Ek2fUafMJ65zt+XKq9qUWlfgiFVivK+BL9nX4LINReFXJs+cg1jMN2CFJ170HqurYEszTeQX6UBRhMOMvM6WyIhV3fEf/0GBnQXogX9xBYb2q6jStqY+LO3FA2DNPiEilajsHKMyByM3ghyBGVy9A529LA6WWhvnB5IE3Pt9ufWbqdapqi3PlVntRVrHz4P7Odq6RnG7NOGtCvSlLZH6S+3mGDHeLlxs6nz+T7Ueb9Rpcpso2Q+FoHw5hAIb26B6BUBrx/nsaX2S0eixmmVWbR4O6U/rtsKDb36ug8ekRZf6kOLGyELTGVTyPcVwWJjb2KbS22RRdrbCe0wvInkgFqcq89jkV0nHQ22IdwsJwwzkq/BspZJXLxi9DSZLOkyxuHhDoXMmEo/m71ijld1psKVS5NlfUJEfoH7Eka6gxsuF2T+ubDZCJvxz/a2dydQXnfQIT6T9uxQteKEuhMDHsmag0e1p+S42Wl7TBEG4OFD3R08gCq2CBW9RG3b9j4k9R1Jye9DS3Bdzn6J70bexe7nv7uf/OmtvmtgfV/uQXg63L5vz7GgDukPhWFVRx9bEw2oQwMaVIcGuAXXdWiAeAXoNetlDRhw6dSggV3thmrAQCELMSj8sfAzY1zpNq6uRpmOxk0iqk8OGoRryyyqcnZHsovGAVm5hbnYTuquXMbVA4vjaDtnr/Wy6vi4QzVhK1wkdVnVj60nJnXpDdWY7b/ORkcaeoydzVd+o8zpPUdq2TOP1epgFOinfQ6sjqzDuwAOKlV23ZmWOa9ggbCWsOdDaplmE/We3yiifuNIRH0osL6esVbaeVs59/TMPusne5z59slL+ywsEpR1Y5VLMRixjBJTl5lw92Uff/Y/vP9T3In5H+zpxb7xG0Wtbx+JWjvg3/Tp27zknS+55cZrO8mX3vDcYAdo4t21bd6lj8VMxXkaRt32yThZdMeHf+989PR9u3Fl1MZy4q+sG//172+/cRz97Xfy/va+/xv97W/72288oP3tbKvx7d8oq/HDI1mNi+a0Ggc++/1nXSjmQic2/9vtSr6b6fad5FA/wzGLTD88xiGCmrWN5cT/H9uWbx+Hbflxblt+8n/DtvzWtnz7gbUt74E0+mXDsTwzHIRfQWZMQmFDVYxJFWxwja06NshJBb3HE9RcOqrMjUmtkCW3GB5V5HSI+KdoZR5QLFuN/2N8CQjnHm8AIc+PXgBpi295MNQ/VAyNeoes18/+hE5yCgNy68/6GuWB6rZfykqBJM+082j0E6VA9RDbKTmc9/SSsUppnVIf7e8xXh8Hq7wyq0hZpQwKhEGhMCjMjpgI5aqzlEFh3yMmmKM5g6olay89QZWqmbUPkc+GOe8wNwDO/QKY5ws8ypz7g1kDFb+HbX2YEbgd8M53DJjOlRgk/UhhJZeOVYpsFRYwtWVTz8l9qQ1cf4N60htvPUJPiutVrzvaCDCPt5VEu1CMzB3xPbJFS27BerLTy5zWnMWnXiAMBYj0DAiBdA+JP1cNQGAEbjPAwJhxXNI51eCQxup2oIyNASC9TJ3y0RCIOecXj1dwEMkcl9lXc7NajVCoidska7KXq55cD/M+139UxVbXSLe61uqNgWZEdeKIvRsmy7ofWe8TySXVErnOT4/Jl/XMVXBAC37+eAs2tOCXjrdgXQt+5XgL1rTgPcdbsKoFv3G8BUMt+O3jLRhowR/OWRCnRpCf1LYP+pgZFzhVGDzAcbNi1QwOuu2r8M/VMMgliFVArOYQIbHeESD6BYiwO/2Azd0uI6VFm/q3S3biR281HjqJ7AjzHs23HqW/9MbbdXAFe4LP+VLP18KrLXxXf3wRL0gMdGUgDhvyKZBVh7AFRi+uXgcHBcetZT2cfzC1DTPRhNqK+OY+VuKN2dH9/Wd1jnxy0jHM2uqlEzC9MmVKnq6f8PN1BX6OX77QoTCxyYj+RWgeq5Oa1iQxsMUFFz5lx+0TU6IJbJs2SE6xIXCKZ7DJVzZ0UtUy361zR6fsQGKsO86ia5uOj7hlLEHsydhBBjZ4loeNXQJviIbWsOFuJVhY0qJ4jx2mYYr32pHkexU7j0bsKM2z82mU5k/aBQx5IS2ghV075iCPKWSyixjwIgBWs2nsYk5ZzCmR1jSe/KRiJ2icJhT1Exj1JXSCXUpLLNFSoilruYI2WWp37TIGv0wvEarb5QlAnkjL6cTddgVDXgHIAvik5KsVu5JOopUKeBUDPplW2VPoZLuaTqHVU3YNAz6V1tCpXbuWAa/NAOOcn3U5rNPoNJDjdCbHGXQ6nbHHrqf1dMZeeybIcRadaTfQWXYjbaCNU/ZsBnoOnU3ndO0mBropA7o5YYqcS5vp3N32PPLpvLyC8+l8VLCFK0hoC3EocCttpWSvfVDy44rdRg+yD6ZtdpIeTJOTdoor2E5TtL1rd3AFO7IKLmByePZCuoAu3G0vIp8uymu4mC5GDZdwDZfSJXTpHnsZXUaX7rUP4UPI7eX0EPtQutzupIfSzkn7MK7h4fQwenjXPoJreERWwxX84ZF0BT1yt30Uw38U4MuXR7OIPoaTHtOxj6XHqog+uhV9uxr5HPCM9/nX+/w3ti+4nodw189PRdvn3hjax96KZZXRgiFk+wp+sCHZyQ+PB7lbP/yzn/+RrfJbdYO/nUIc0eSGNfcZyDnVu7aB1xhDExqYLO3Qi1KJbPK35qQd5LRBSTuMdTwNGpq0LWoNeiqnMSfFkxD7TEtGOGlkiqV/3qAfSf2jAtQpQtcuYKALnKewyt9uF269keGM0UIa28+KENIiRlvLLdZaxmkxjXctTk2ZyAqesPXjN057UAJast8u5ZJLUbLpR03PbVna7yhHyYS1RIQdodxbtDlf+yzvMXq8zRV2WbLO4j645R3WkBNZPZbRiviQK3oSJ5+0yZxK4Vpzql2J45vtKlpJq7r2ZEblZEZFPp2ida0m1hipZw2XXSP1sEIxCDqVbwSSZq1Fs6A9a2ld157GoE4DJByNeXpiRHd2s+6EtJ7LCC1Yh36xFDpEZ3XtBv60YZNZIYTYiMcWezZtpLNvsufwt3P4qG5J3MRvmzb4sbR1s1RyLh477XkC+PykabfQ+bRlr01QBysUbe3aBwHAmN2GR2wfjIausJOcd4pBTnVYtbbbHY4kF9CD6IKuvdC9XESTdFHXXgz9pfPoQtrG2ngx7Yjf4Sh0CRe+JCPppa4I6xdd1rUPYTo8hEkqqF4uOVjb6KHxc1wPtVOp/DBWuZ1C5YczuIfn3GzaR3DCIzjBvT7GXgG1eSSnPbLDmvgoVZsrWtFmU01Vy2OV9NH77LIBBdJbBGQ2mQEK1poBGwJJUSge1lOtFX05bKxgZR1gBfWcwjb4t0ILkmkjfcwuLlPVGqsAey1Voah7qApFvZofPt8PgvH71ayh12baqbrYGKzwN9xzjVhKJs8Ry3MTx0wJBQapij7pOsiZsUP8NsQXlaDgtbaFx1U2xoO7pmSlHcG6xA50046iw6JhGo3f7uDO50/zIVNVMHoBGp13V9JZCdRFkmMxLaLF8XMdZ8YVtwniLkrwOoHBnSB4SQuXMJAlGZClSd0SZ6GOtWRtm5ZSW7VuGScvyxBZDkSk7+raFQxjBcOQTydprSuJ+y+pdRWXXYVavWgrurEqnczL/QWBU5JAOrSuXcNw1jg4ayob7anJL4xdS6fS2q5dl/jcja2zp9NpooeTdv1WmKAzt3r2rMSw6q2nDV27EYpIG8dZ66qr/AprHfdl+1ndqlC3irZ5c+JJT9a153GV53GVkv38rYcronT7bcJlEimDT1vxGGP120oPusluk0Tt1lj3JmnqcrudEdlB22lH117AcC9guEqLC7nGi1jrLhJ6XMywLxZ6wAxdwq+X8KtD7zp7KWT1Mk67rGMfQg9RWb30fmrHpz1jM22A/vXXhitEG3aKNlwm2nCROGQuPgYcL7L1xIhr1nUxxwERoO2WpV3UYHeqAttdq66wQ5LBCf9OG7OgDXOG4Q4L/whL/pCT+3kq9aP8aXSTqUKiqna+a8wCmk8Lunah08KFTFuBOyZ5eOUpLYqf7+R+sVJ9nLiHEopPMMAJtUhVmNcTGIElnLikw33UUktEdEL8AhTntlr+YDm3y/sY22Zyifx3uE9aruRq30+GfDYcDtlcmVl/fuFvRQ59xhTACwZSzauMnPTychd/ebms++RUWxUZrfHnGl8Ooal1qq/y61jnSQ10QJLKtgzSHXFqxJ0UkwDYsy0jeSyXx0p5rGYlHuSfgxv8dQIALvcqn2yLU1sb/I2Sb4vk2c6bzSzXRHHHDkt+MH2Vv5L5Psw8fyHIDhqPcqZRLAqWTAtowSp/nV3IjF+ome6r2DHONIalxpJpMS1e5W9kXi+icc30QsP8Dmiiw+buBGBQSW4zzO1Aue2SBLdpg9zEwmA5wXbEESHSk0a0jmW0jA9LY6O3T0xex65IquyHrKCTLlw8K06yYqjmgiQ4EEw4AkuIEduqZPqwgRNPJ+9mP34lfJKxZqi54KUg1xrOVRG/fjebv9W0FrmCNNc6Wodcp2HsAHNIp+9mi7iOzkAuX3PBwUeuM+FSi3eyW0wkcnlpro20EbnO5ly+OP272VRupE3IZdJcm2kzcp3LeHn2PLgPu+35bD3P51wR5BJs3tKxCSUil63o8b6/r8rS3F83jJNGSCHvKb79G19QtZhGJAqiWpGPdfkoZuZGiOgbbcQ5InbbW9FdxsT94ReVoy66EaApddGMQGqL34Vcoh2bjAcl9WwdSlqwazpfIh/Tnr5JbODSXj6AiWuKNznEb0P85gjXtK0kzqV+WLFqtaK/M2bkfmH+zuPBHKUjyePscvwSZyIHpTHQWxqUxjjdTRsjmOeNGWZERyhQL0URHb6fFvDbxiw6epCgLkM0hqmnhIacHoI0vqNJYqRv6sC2xXchC4JPOIRTbtPl4EEFwQMQwLrdKlN2iEu10Ol0rRwvGbv16MNcblhoIEVHpPJ5UtdoYmS0hG0MIzSPFmRXotIIF9PR6kJuyxj5YqUWaVsWtqLveGZ1PnKkwsAR7ZyQAeOYDBhH4SlPCLlwflfoLsXntxrX42/B+yhzHU1tyLSf+ugxNzXCYLnJ/pM0t2uHxA3nISK+xPgyDDezyw0cSiMiNDrJrZvvTliVsEjZz5Q6FyX7xMnssM0NaVxRje0ElziBJuiEjl3CH5Yo1k12Ko3EQuBUhmSFvpGAazvqt1PkxdRW4F+azL0UMCfRSfiyEl/S4R5b4JN3sS09xa4WsV1Da+zqiFazAT21FX0p8LdyNxrkIkpzqNuYqNto/LJbXZqbbk2uB/3TUBTVp2wjMTI+79pIxuXxB2TtuxRpOqOACNSgiNcUEzunNRcZKRcZtfMYaw1HiYszxfKjI++uXcRFFuVFks+85c+cg3ND7uB04N9DVk9I7nZfl3CqdHRIJTrBWiIJQU3aZQx7OS2j5V17oiP9iUz6+OVoNRMaXjw34SQK6CQ96RRIogeLX+HyrKJV8e3u18mc6WQwmXPE7MZX4MYzA1ZL5zXJ42lTGkwL7NO52OkCO/mCw/cMaY1EpTr2TDoTeJ8lbZVuqyN9VSUPT3XSngoXH27mlM172Kc/i87t2PMEo/MpQB9Vd5yRTgp3y9Ztwj+TDmJU7M4/aJWHENV5tG2DVxHuJ3DsA3owI+maP8Hja7JTFOj4WuVmshV9IQwvc26bf309lbEKK79x5/VbjzzJq03xtaEwj34Heo8mVcE2MehqxJDaoCokTYKeF7Ng5brMtBzKRUJLtxR2TDG1XI/DUETiQHeh9DzNNEoscR0oOzItSCpQdYicuNFTHOHJozs00VPZCQpnCXGYJ5c0roxQmWSymqlNbbIdKDYyLU902LgH4saStlzCnBeye6TOURcKXagTguXRamaeXH0MY7BGSXqqVrKWeKTYEe+owkPFNflQcYddz5DPZDE6s8u+0Fk8aFdybJDCkC2I2Nl0NgqfIzVscnK1SeTqHJErz0U98b2OoCdy47K/hLYgPCODwym7jat7MAIsXTvJJJnMmyIlp2gKncn2ZB9Gi/YC2iFRzyl7EZe8mC6ii7v2Ei55yeySl9KlZ3Kdl51fwcDw7fbyrbGEYm6xO+ky2rmzJ/ZZhtDMQ6AIvHgIgTZdxD62j+bXR3c4CvqY1Iv7G9+clks19Up1IMaUraeyPFCCutmDDkYgIFGNM9XQTXiuz3JWpy43g41J9wU7g4/58HEPS/ug9ERD5MGtisG0uQWdPNcDA0zMNrUuMh5/XIMoHs1POdcr75MleQd+iGdKuMSjE8RYSdklQsalKn6kyFiyRB2IOpBZlvhiY/ewqC+hpXSiugkCY4W25CQudFIHthWR/4qgvkpJeTJ/PLkDTaBV+rGJIUL8UUDKDNUa8miNM1QeDNWpCbEqeLTWqYKwCR3hX/jmvP6eFlVUr3QqhgJ0smEyJq7HHnhqVN1r68lauJe5TZqcZZNglTTSDt/XyNRLZ7ZL1cTQD1XMS8bE6dgDO0Sje5kvpx4LX6QKDO3WVHhUx2CWgsh73Bh+6V5rGdM2sfmhtnBh0p7IYFbQibSiCy8iA7Ey8cST6DC5fTq5gCUIDyxXJ2Po0mjNHngUtGYv92qnoldLw1F0+qQ9g8Fz10Xru/ZMh+WZaRWwN8ByQzImEyx7YGVo415EppBHLI0RS9NhS+PTuYIGD/miCLopmc6j81rRZ4yZl8dwaI4QzpiEcEYlhBNLCKe57Dbk0H2YNQ2fjNk6HqPobiB9A0nTHRQYdTDMsYNuVFOHw0ODNBS/7Z0A0eIMLVEKgRELjGGBMeLilyPxK52XMI8zz+PMLusEe9AkIc0ORveK9WgrelfNdHPXeN0ccyorxUVeLi4yQWwldM4UALdqyZh4antgV6i+lxu0tuz6T5Zcf4q5NxAQwwmiEsMywgmB80qdQx7l11FuQrKPUQ9hSMZU/Reo+i+kheS2YePWMJktYfqn6I2yGFcgxpgpFBf5QpZbI3LbhdxqnzR3rylwMjnexROEvnSce1iEl4sIh+KPwY+G/KLgak5Ez4nEJrxjHUPpzEddxhVruWlHlWnx0Ov2LBmZ6JyhzG9caM/h/JvoHNrURcAAgXGp8lwpdJ4Q+Xw3+3B+/ConG1sSIxOGXThj6RAAThn6x22M4jZIMwBgpsN5ZAJ1Eo/l6ElpEpdECnm0R6UdHXsBZ7+AeQAWShsv5I8cgkX/ai+hi+mSSQ60msIsh85z6MD48mS1dK0yOOZpPExuYJQhLXmYUMH1tZ10fiNIWR7YK+gKSOQjWSIfRY+kR+3hDvbR9Ki99jEskY+lx9jH0WPt79Dj6Hcm7ZWMx+/SlfS7Xft4erxKZGCfwMlPpCfQEzv2SQz/SQxfmoOPT6YnA/5TGP5V9BS6ao/9Pfo9umqv7XA7Otx5Hb73Fm7GLhWnp9JTaVfH/j7D+X2Go0CehgfZp9PT6WncTiHU1Zznam6qy7Padlkbd3PS7o69hq5Rbey2ohtD8/D+g9mixo6JxkKFvFQ2j1lb+w/U05GozG5Ca/lvHobjXVHVcypLlU2xnS9tWiAlOJKIIW38JxC/bFybsMomRga1XRnUCggphHH5RDbobvZO8V9oLSe1E8QJ2SPosra2Mbii5YrqWDaETYwo7S5W2hWitCeDFKckYzIJsgc6Sqv32lOZFGsp62rotEnWzNPtiRGdWNZN6W0E/lnJPuiljJdC2lgYacf2bMmTjZ42oeLNnG3zOVCgNZWIY3xjEuHbA/eWztvLKrq27N5OinvLf5O0jSa7rIMPtlhOPQUkAGRHMgafli7Yw24tO7Z7LaYPVO1k+n4S0/d2e0TbeQLfYP6eLu+yuoX0UKa8Q2ap3clfeEaRHta1D09IVKwDvVL5engremFgNh7RQ/VTD9V5D9BO8ZMCt5BFfocJJBInSMPXwYlpVI/fqGEkjxqbzBB5a82QHUAAK1uFktTLI/3JnpE+s4VjrVJ2HsqKv9O18/nrfHz1+SsCywucZC8Qn3g0G/9L/EhDWuw80uLMhx1PKmlvIlPtk3mYpWstQ7OooKp+YVtKLRP4LJ/wi+I3OcAnMuATs0auAKIS2u5aXHG+EnBCdX9XCQA3TOtgzC9SyzcOSz1rJJsLAMQvhZbJ0pQclzocU3FiIZpS7LREY9kdHrJ5iGVPuL6XWMw9Wu9iAumoJPmrCryq+L06OvxLhAg2pK+PNfXcKMVzGKWmGKW6KEQVj7rEEOPXOpzrXLQhK9457KxF6xKwPPZYkgQeRLyCsnjNoBqZhAE6AfAYSPYdyVUR45d3UMPJJyrisEgPNY+BzROvTOChflhAPBBaGoXxi5/tal7ImRfm8Y2xhDCfQos6mE7Rtoy1ooPHFGRvSnvryX86DybMjspgyrpGwxGpo6a6GHpGWJssiVFyjyvZ1JKDxO3v2CFoGnudB4DynOH0e41ZeNz9kDrDVVnZmpnpmoZVxWA2EmAY0kAHIVUd7tSo6RziQXWGhzjDkJBdYLQEhnR12fA0aYpX2cG4lHnSYmbE7CTfgbahe6IFYIc4FQu5GUB4dvz4B8Ys/g0VPxlzj2r/+8eoXybyciFclBBLXyCB5XFt0aL/D7X6ecfT6k/4ZkM+Yqc55kbGyEdzg2RUZkVczEUiidpcd8cCPC9fRHqfjOClyW4tGdanYHTXtS3X3Fbe3JibK12aNHcE8xzSXIE3D49R6dfiF7kK53Oe+dnSTllUJgBloAR1GEuWYoQPl0uG95P57EFXlqRkRdLgIlCxROnQnpZNciwxnyNA6DrF6iTBSpZPvljD1j7iKE0BCrcLQE9JzjqGoLWWOZ0xkIgiEyMdlq9nuOsdN31w88yE7FmcdFYHnZJy6sxW9HOR4eN3ljkMkzRhlzQ0jIE6NYS3Ypy0H4MV3ZeKsTB0Mg/DdO2w4+1w3pwRbo64zcJbGeVmhqwurnMzc53Fno2JLNOYSLOMdXPLtTghcaDdpIS2bXEr+lq1tpBnhH3+a/DfypwWh+daP7lRiLEegNczFfZls3yJTnSWp96pnp1qbVLKbG66E5EifovwJgsfN7IpH7ODnDiITmaItb1JLV3mFHNyvMkswDq3BXYY3pAofNfO40rmMQHl06jQUYJXQkI146gHeRbbhSieTeUIqWKs3GOdx/pKEf6b7MTWSurJSVDgckuJkfWR3dIUGYou41VKEtm6yZ7IJTkiAIdN5P3yUhzdlTwlG1mvlrWgEtHanQYB4nS0JCsgSeR/tz2NP5/GnyP+LjWfzjWLCtzE668qCKqn64dpw+V2Y2IkHNC157iaz8lq3iRLRiXOtRtRATq3WPN5upb1fIQHdlvcv7kFVevnhN8TUNaLWB228tvWDuIEdhttg67o+OfBSSDLjDuyHBJm6MFQ9O38tp01hQvvoFACBBcsFjnnBZJLERmQ9ZEhXczrjkRMLgEXq7OWQ9Il9JD4dRIj4NyXbzIBsgX2ocgma5C79mHc+odx6+XTw1VWHkGPoIeLrGB58BXaIl0LibdsPeGjkgnL8QJ6tGR/DGd4DGdw9NhsHwu9eRynPa7DQYTfUb15bCt6s2eW/HKj8t5V99v7r7pXBAeTCTEz6eqBkFpFPyjWQboAn+0ASYyQ5sdvBjDRHF4pAHINlNRGZkCVkgP9l3ZhfK41S2Q4pBNym7QkIVmG3IE+KRmWtKKvhuYRxx1ylLhTcVaexGtcKRN3q3GwZLmLnWJS7RNSXWNb/NNZ5Gsk4KiWhWo0b1dqgkcFHhsWPNSojEmi60BXi3eo0bBRkEiJJJnYh4f4jicxiKProJgOHtNhHOYlfqMz3jAvNototamNUsuEfcuFeCfCzPD8xddu1gliyw2zsgQ7CyuuTCqIo6f7E+iUi9jSqJXp2lMddqdmQYq1CVuYJJaoBq0dt6dL/WfQGSs9mQXmNU1n0hl0JhiM0V5IZ0nsTSBskGZr9FEiGhfnYfSuPZcrPDetELFHOk/KS8HzJX0L8VLPXWJbtC0rEYjE40HyBvPyII6XyduD6cF4TEpxLPrEhLB820E7nIWRN7YuYNOFjMeFGVsuoosQdLs4MRKA7NhL6SK6lMHL7obLRLgeIlJ1eWIkALmLbcpDaGfHLbC+jIfakWSQRdZZnO4RyToxKh22Jo9UEX4ELzPE+OjoO3HiP8YGJ1GCbM1NOkONt6bMBKFHxjedp+4v7rlHqf6kAIilZDZlN4IVRuvEkxJXUqftmO/xc4GPfJrPaC8gn0PskH9Fe34r+lbd3FZYZLau/9AAqxZFhQOQl9sEYleTMXEo9qAlVNvLLbn7T/fDq9JRqDsw2c2DUEM24ch8iAR8RIunSlrsBH1eZiFHkwlZLSRivIACWiBimPykjpZoZEdHBMR5Sk7xVK9TDDhLOftSgYMWkSVeFSkhSCLMGuheLmnusuQU8RW0CScmsxyGqVkOA6bepSjPNoJSa5IxcY73yCz7Xtbe71V6lmMndfZ+gzkWYwNPWYwN31nAb+ItTqKwitq5SQXRR/gAsgh7yiaJyTY+MGoPkiVtUEz+oIs04sSzk0mcLdBAWJK2x2+4FUSQuqCdaMoFyZhMte+BMtKFe1kZv1JJ45LSxU+WQpJc6UOzSncygg9LfNa8ncSBf6mCO/UAsf8JGc9lE+xd+ygu/Ki07KPl82MSg+g/PXY3d98BPQ6iEXAX/mj6HQqKOJO9kq6EmvwuVoM/nn6XHr/bPoGupCcIBQHziZLxSfQkeiI7zPL2ZEjDU+jJ9JSOvYqZwpMC9Hsd25Gvu2gXdVgl5O2pyXSd5wSeijmB1ZL0NO6geDaAns7LdyXlaroaeHQZ1m7q0u6uvYY/XZM2bA/xTeSud9hLe5VUZJ+RDNg/oGfQHzAYbc+1yTtvRLY/lAtA7TPpmfSHHfssupaepeQje13yMvfxj/jjH3Xs9XQdXc+qIR/3JS93H6cNf502HXuDoX10Q6rbZG80yUtdjpuQ4ybOsd/QjYb2c5amZLnZ0M0mfrPj3C2GArrFOBsawIbeatiI3IbU27jssw0926ghudW0oo/75vTjC0SM/r9ubfIlXLA3txUjELowahEedZn90PDnOGcYz0IkE8mswcn28uBEhiacaRkXW1YMhiyXmt0QPX6LLjELaEW2aOykxG1yTJ0HOnmKh+Rm9nYQyXsqlzy1AB3GKL4ZnQRmV9fx13V5VOW0hGShWQduhbLntFb0jmru8wXM6/4T6Cv5AaGSCXTihw8BrULcdRvEGN6Wy+w5ibuMHUFVGgDrMR0u8+jcVMnZhPcMMqX7IkhmxDEAhUefDdV32WH5wP0jf8ByWxrebUdpBL7hZvnmfMOAmYw3cQrrzNcF6ECElVPs/hnZmtq1J3DlJ+iUPxi5BNmXyhsRAZSlpWwdbBuJcbp2Qli3gycFTGFKQCYFBBjWAwLYyfLmZp2xn+dkWr3LLcY8FfwCTPDLnhq5Ka0qeNWUxQOnSUme3ELJM/CGsMppmN/SZTOSdqZk5Ng/MnJ4hc7ENNdZmOYKJMvZAtJ1NB3Z9cOskm+bBYtziXf+7LLn8bfzMMDUWSF8w5wXZoVQDZzD+BanholrcSIy7hYNapMm4B7i8WB5m5TapwTYdriHtJ0erNeToA+yD4p4zHoB132Btr8pPqJQc9ReJGXdGrBd9hIRHTdl9jTZEYR+34+k5EMk8+XEndUu9hWrmKyO5dtOh4vsyetwh1WFqziGSRWR2EdwyiMYmHtdzb3WOu61qj378f675j+NFzi2jn2VduI2FqXrZqk2NWurkGwWckEZH+oRJF+49QN9Yv/QCgT9K9AKxCDF7vEG1sTMnkcTEHOuxlgUv122BQHFQIaOu1k1fAwbgyh5213vn3tNYzIr6jglUcfyxjcFcZKAkJ1vHVENF2tUBE5xCMh21N2sHT6tAQLiemN9EbKvJR9bPvQCXDdhlszytqZ6VzRKTlYKGRjhDSuNRBs2YmWGuFpT7GUZmePt2vM9drOy3dGQeMEzcXjKJu7dPBTy3RgokmxO5tezzPtwvuoQqdxXR/jFp8l8IZWsdsTaDHljJQBOF9B2OGISdpnKh0RdeynjdGmKE6aJIa0PkbfLk4oMifi/h6haLZZPO2knankY52DPzHKYhQdDj6ArpngFhpEVGF37aIb9aKzrk73ewNKLBE1s+wb6j5M3jqngcSU9DgszxP2ayhdkdO2TGNSTUjSxGAOK+hR5u0oevB4DEDvyxo4XHk+lDj11F/tcv2+fRk97m306g7yarqKn09X0lOH90iRFqZtUxONirZaUazhlD11De1iXJWUvpzyD9tIzuNuRlD/glGvpD+jaTCf/kFPY1aJnQtsq7HD59Kx8s8J1Sczeli/e1vWq0te1oqXGP8KKwVb0msBsPq7NG5Ct8uaNOjpeGVniTVyj4Vv0wgaRpwHi0eVutRZaDF4SVKXv1IUUizl/LGKYDTrjdwAD1TadyhAGopPlc0HYh6qk6/Bl88OUHUuMLEbsWg430+KU5zAj0IMJeeMACwDAeLBRWS+VihFZf2xGRMBifSIArZQ3Z0LWw4TQynSoXMnWdkkenbyQrbKTbC2MhFa69nSGfHoKGY4QYK0XGGcS2w9uf0F569K3XgYzghl6TcXy6Pw1YLPi09m5/JzDvN/ESZs6WPilvD+nFX3IN6HKR0LZtQZqIf30LJYJd40++cmX73K3Ib/11vTwb3QkYgPjD6IfdtduLe0kJjGc9Dbkw3xXKHdVUYhmxu90AygAHsvupvzYvg1+Vq9cJAYpTL716tvy+5fhywfQM4YiF0aHab8dSIg2cHePmQ4gfCK9Nx+hkYRRjT8MFCEgVUYvzBGcLKIF97Jw1zgMEYAjnUH87E9EP4A8hbjaYO6SLNbFFt0mLfrIy3tbVJEWUah3MfShDdCI3E3D6Tgmsiim7Ilvey3gpfcu6J0Lywo5BPnePCUo77m9N0d+MJbkefZbeo+8OZuziKzQKX7pWu4jFYy45Hz3fdQluvtj7jacupBThXbJp9z17hgvfbMS3enpMZggDu6g+M7H+U66q2a9Xznr/YpZ75fNet8+6z27Um2zOwERzKsMP9dx5mDbm3Vkl/cW6+dHdvkQc9zRj0Vv/AbGJsEeMslPRCr/3GQ8xnV69xh53ubJsUM/0PcZfnLKtNeB7vGHTyGBn5/BU04MavsdfPln/fIF+SKJd7uX5Fom3H0g6D8MVHFqmX9dXY6I49Oc7tprvSPdsFe8294d6ChXytXkAEckMdYz2y60L7xw4g8/cv5BOX7tbP/qCOVW5+ZjZQZi++OhafyKl8vwohfu4/2K38XcMCoAQ1y2dv1sMEtz4U5x8BId0IFMxl6PTNPmiChdW7hdh0z2Qo1tzxp9x9RXnrn//Ne3GwfyctQ4hLpebjBjWbr5k0zxXneqH8LlqS8ESozUQa3Q1rQdt5lISLA+I8GVGRWvzADbOueqgSf38Dme7j79O6h2KP4IjL7c5M9tfJcpol4/cLb/phT8xgz8VRn4q44T/OEe8HcZx0myA3L7kB5w2kxX4zR7T8wMXfpR7xu6ewsOsGwUrgEbJJO8y2BIYZI38bPFz8P8jPl5Fz+HZQDISz8GIQ4s7O2AG21HyMDitufhxaN5uOiqcIGX3N/ilsbL+ysgLXI2bYCi95kpkcK7TfE4wRoFOMFMb7pC3dCsS7nuCiqquw/t0FbA9idzo0HEMLkWuscwqW5rbBNAMFbPDEBwIW4tciDaWo6LZSUirQ6dpfDwHsNQqM6M5Z/ttEDgCnARZJCCLcZkSDVuBNlnTLv+RM49zB9i6wNNFl8wNDFiZRwaNMIyTL67QYwpw8UiwJAqr4XAqxJzEYbGiWwh0LTcWkHlrGi3HZHC23765u9++uLHX5YecJkp1iFGrjZzQER1mlF0FrRGeGctyvUHNQAyU4FFET9fbvTjwUy7/pozeax11suodDUA5mz0kHMeWOU7y9lkKSCPtTuVAV841K7sQOvw8imDnAAYOGZEmXHNrzVLOFVOEb5LXRntq2feetjZcs5wixd4evsXWO5MKez/62rqlbQ9DHJagO/Bxvt3tQM2CuBvbmDE3nnuCMl26PrHqyBpctybe79aTKycoSp2PSXA+bhnFwY0TWChR46f7DkoB94dcBc7BQcLV1QfABYbi6YgOOCOi0aU7VqRhdXla7e0K+NPVJXkLS/YwqhvB6FeEAQB0yDkrsdZkXbe5xw2YiNs6LoXOTL5WugeoUdq16VHajd2tQc4beDC8XYkJ9whBwwBzjUmkKXdPEj8/ypSNh6cYVB6iKvvriRUjaqi60LP025S9bXuVNjmE8alXmIomdy+3g7qYc4i1838Rq7yOamwSIdsNTtzqE4B/tigyXoMGlAj2MgL0QBsLssXxmGhA9cOgKtH/AiA1AGq33XIDolnzWoL+K6LlMvVmoWbm5nFGSsw1nWdAIspFFnocaWYDVYOTcaHWU5M9S22njkxQK/mRI7qQL8dneLXKXI3dB5gmPU7cXMnExkNZErCyCq9RWkCJTsNUXPGNpX6TZYIFojNcnJ6kypgbuqiG076z0rZbYdc/WdlgxeICvJrlPQr3PacLr6GZxUkm26fcWcrusXY7o4LDEy96AMGIDy3yrntu2SWM6eCHTI8cSsLleS7wSNos+GvuBxyPqRHPuPaaRtAlA/AELZDhyNtMA35gA4gWYxwybAkcA2tdFjgLXs2nijvJZ+8t3hJXXzzy13QvBb/q4MYvd83wT6B5WOgI7JBAfdCukgerh+/M+V5MsNVH/JvNK946CPErpqtszdrMmSlxaFSJFSK+I4i7pvSApYypYBfoIDfQwFfKeA6HT3wVxXJd2Ow7Xm9RuuVlgidSvUaqdccjfIGZ6ByPtRbOJ5U8gLc/eDBL1Fkr/H2ScfCYipymRghnOsWvNl0q2S3GJq8GnO0asiIpIuiROeyjDN4qZXJrbQqjU6RVkoQGEyrkxlnICclwJzO6kJ/hYzCLC96hGTNidv2IXyMYksGQgMyTYbTSgNihqMwhBFgfApk7sD6KgYUiDpGl0LYpW6IjueQEdsPvFVnHVpBQugKPMkXJLs7ybNw5LYoXPxqVB/tVbUW1R7yfQPxQAUslr78Iiejxr1UhFXYp4IEt3IeDTKFjxennEpe83/cTex33eyYYlKmRB/xsvBc8sI6U0CG7oCjZfXW9Ntx5Aps6EcOlu50r6aXNiYuI7fuufUO+EQeDix/hZNGmQJ+bt3xOf6IBPBAfJeQDFAYfwyJkfScSYXnk6UrAnGTX9TIoLgEQ2AKuLlc5jBeRWUzYOkdlDcihJHmIWAqdZR/49fH8QtEnSMTiOvFP3uFTqkzmdL4RhhRXuPhFyAIkDjy/zQN+kR3+YG7HZb/MifIK947cSzXFgS5wmncKXAifuu/31y+NFQqdQ5bEP+tC4GxJ35lwq97bJi5WOWj4bdguOVBwBGX2nNXu+pGkVXrQ2c3d3Srby+e5f6YD+dCLQHVpWZbV1muQcVrKBIwvI0dfr0Ybr68ry+HHMCHGtqSuS/GRTnaPFe6DT414xjAGWmHcrVGSPL7osLvnfqbT6FLHdvVZce2kjq2TJr6njvZZRXT8kSoj1wlss3ZDZRHXlE7ORI6QaD6euvp8dHadcBUddGhMw2tJw5FdG+zZq5r8ZnRDRYBn/9SN+mqYwjS5ELSL3PPvR5PbLvrHX6/XX263OlxmeyXcZd8NPDYJsPki7JhMh4kjiRPIIvX20KkxaeWi7TECIY7N3g4HU4PF33L+l0waHdiVEWxy4F4+a62rz5lXMzs0cgh7HRIDA99+eMoTuF26/yH8cce6QIKwHuXvhAZMfsG79MuEg+hTqN4LMY3/F0wjtdxfMQfvxqsGB+9057g7xP5Y+ALED1lIyMBKRpybWi30gu2G3L7ePbe5J8Uka/vicRr5SjryXG7hGp4rVF1atCNFK6wMR47lepymP5S3AuexZ4XIoJrGIclFHao3pX6c2MwjwO1B9sjs7g88hZLOZeJNQOYLiXSkVV7hDzn2cZIH6GGtAFJ+XXYRmLbKLwILFmk/KC4/C4RrFJkFOo2Gn/CGcQ4/yVudEyL0YqlnfIdB3XbwgZXDHkkjhbfyd0bowqkGF/8PXHcevno51rg2WI+tltyaZ5XCs5O8NfYhjrMSCF7GB+rDy+gpJExf3Rr2FoUa2fcotFLBk0Bx5QrXG7agC0MISUnEHzFE3L8BCi1QHHyXJ1cSDCOOQbkvltX7YxW8a7zD9qRUnXA3pPqEMqJBUISW3JokEOQYuGrG0NLoKbFvw70h9q/EQSBIBSbyQc85RsmgHDWBkIbCEkp9+0IAFONlnL1nGPMEtdRY9htnoRy4RiKhVwH2yJ8zofOxE7YqTUTuEoIPdUkYdz6jhQ+k2E+56tJI0qsPWEO1kIW/9711WFELRlTe9RyjDvgmgvmzfQUphZwEk7FGZHskSnE2HBvAB+RlqBX8am6KyU4+WBXRKEocgeRhUpB0xTYqBh63IKzhJFZmEqBm5KqYb6GGSEgmNbuKv0S93wA9IVyzAA0KdQBEqYHYYpCGkamYSQ/13jcYblZECETmcT7/baXGPJSQ+lTRa/84Uqp0gFhKjkDuH5QM5DwX3igGOTR0/5nZqUJOD8FDnhAJnpOayh0XV7If8F1hv/mM3bA0PCfepzTfjahRx7IeJiRzSaVzgdZuRH4u2BcxpSJcabA2KqMz/a2qxRcwyhXu3LlJow0LiwHQ0DYKoSabbVzTZFQF6uOcCM/otS2+1NcHDNY/hauMUBisMcNB5xzjaJy77l8aySm2x5APYpJ7GTEBbn5rS71tKOZdlOmCQY5dYzz4PfQTLvlJJa5SxHHGjH3fKAdubQq+p8ZxZAi/OKixC2hcIfbCc4IsRul9V7l6k22o0Kt/LJOO04r59crOu3hFIMrO+2RFIOZ9jxBbZQ/XK2ozZ9pL6AqjM9CvI5JkxbNtBfPtMcdfguB3wGGvIAWH9B21Gkejc/0tAgYDGIp4YFtf79p35NfM/MjDvcNuRLDWSurWgJz48V8Qo0YgFy+kZwaEDo0+nCFqUA+6CLjdpPEzDBEtNgLUL/8vuc8F375GDYvgGvwJpZkLF0Kt+EaSU7i3ZbIs5Y8F9hvsygENMDeZuLtaS+TMNhwxzb419hT2yNyjG8Af3Qhfp/Iv8M9jFHAcmlXUAXChA3SkK9AuBPQsFBauBMKYwIa4Twl0QgyAoV9hMRXYiDfcilqAfxEBo7Vk6n4YWJBpaEJXqDmHl7UMxqHWHjPdVCtkKmmjOBUrbHKukFLQXR2g9mEop1Yj0UhujdIjz2JmeB17AB/XEnDYNgqGsHjZFqY1HFs7UJkW00jeKyhYTxOpRWJhz+xVmuxHpMpuA42bh2dYOvUtiFZsQT8oY5CdfSVBU9iHQXPsLFo6bANKE6MMw04SpKlPxkT0cZKECQ0kAAf20VQJ2h4V+KxDIlhDYhszBXFAB0L6GEK5BPn6ALucqozIGFvI4nxi0G758xB0ZgajeiHsPCBaU0Rs5GnC/A8yK/NgwfaQ3fYFkV32NOoeYc9nVZxVSdz807htmFz0GpG5CTGYo0dIT7nCoMQSFgDTRiUydXl/GALdCJwwonYFfRgK5yqH6Qav7KxOsNp+0FW9xnWcm6F03NkRl/v3hZLZhbY9Xgd58xnzrTPAp4VCOwGpG7kPJxxnFr8mQ0Ccp3tJOZEGqOzncSsp0HOxXXPd7lGD7TnM4yzUOo0fh9z2c/gr2Mu+wbOPgppbdJGYrvDBSNaRGdysSx3g/NI7uU4PvUA546khtM5zzyXZwXnmZeKLDgW8gOCggdzCI+YhvHgFYF4jNBCPBaCfpDyekfEnFaJBJ8sEnwKP3DwMh4rabUI8kki9mtEnk8VeeYdkFMof0ISw/608WiTxcPSBDRkgpahl/EQ4kF0XaxW208+9WzYLU7R/go2Ca/kJ++6rfxJI9q5B8KguG/VMEX0UY89g3R9xHoMhO/LAtiepG4sp/oShHLDfB6ql4MPUib5j38rxYG8PPggAdK7ZB7Il59X4ycfTV+apNnsvI3MqZVJgK2yGoICzM5Ivi1z5btS8l2mk8BedlUo46P3gm4ymHjX2a0s7cYsbWWWtj9LW52l3YKFCd8Lwtp1VTdDFFznpiush8cV1sfjMhvIFEwo89e2KjMZMtlt6w6ibbjKZAC+3CrCTRl560zOUOaEt/DrOhlIxm7KSX4PyxB9BEN0VkE3RJ+H+VQ3RB8BXYYS/uAml9Nx3SCnpC9RuvUYej5vV7si09AJv+DXvKwMSWLhOicGu6uNReQVHqhXOMeIKwGlGSJ+8F0yaUDE2aL5NIDHAmrisZAiPMa4nK8jwXSCswb1pAXUooUH2wsPkn+Qf44dbPszrMkBBa/i+b6D7QWzxsYL3mKH8rHxEFz7IR0W6zE4deg7zQc8dqsXAppHHkML+66QKUMbzqH50nGN0CAegxoEImboqSwfyMXMHcDbfnkboAhvN8obW3m8Tcsbu03ZCMOTuVQfM6gix/wIZQrqTWEmc+EDKXO/lbk55W0BJMQnX+TN/bBjc4U++8peeyipu15+yHWmBxiqHcvkcIHIYV5LmNYy/5hqgYOMKyKH+1XmH6D53JSZB1haj0FSf5pbR++3knoMktoUSY1EUvvZwxZkpXqQAtg/38l0fjHgIRWfvhceH9Uktmi+Ax3OtBEuaZRBq4X89bSP6AlU8ijET3fFcm4n/fsnfb+VvuOQPDzsgvthHBce4JrsgqNLpNR1fJYSK+5/PSxlX5n9fvBbmf0VWMz2ggfYZi4suJELRDDRg0Ngf12cyYV9jaX0zQX5Y6F7c/hADWJ+K3THJXB42IX3w1SOHWBH1S7sL4i/vDe5kMZ+LWxkr6gWdlbc94J0Z8VnTHQ71sUJg+KvusUNhhklIYIYS7XA37zsh2+/AQGK/5Sc8b3pDhgT/0hXfET5Wx7jcEASE38WyYhzfPqmI4HBSaHHfrSl7DgP8ajrLUyfARRb46JuZSYI2pCiuNroPZ5ZcdzgcbNNdj9SkB2ysoVB1/KD96f6H7wvBVrUktMnA930piey53f8TNn5icku05OL9Fz1Y1KG98sCQnbyPkJdi7CpbZTfxnh9G7A8gcbcoSS0xOKgZClJAsciQ3rhMREti+/E6iXcnGeXRrTUnpjEcg5AB7vdlB4ntqI/8Uzo1pYhbO8lHB/3kxumvUtgmjEPEKCtKiTfxIGhbgNLiAaE7gr+8FQz0K5elEe+QsRV48/pRdphVgpfPBwnhTNpdZqQgl04gMpPKpuMLtsM3IZDOV+Ms+Gzl3j47JEus/Nc7LyElC5M9MiAwcx8NmYOQr4wkCpY1OETGvbh0vI78nVBTb7W69+M8fZpDX/9IuiV9aBNnlyFgsVz5a8+5gXbBt982T6AO4C9WQtbBTnBLJu6+wWviR3l5JumD/OXumRolpuHFrXRRqUCeaBQjIlR0CydKV5r6jBfzBIyl+DKYZ8/ugWhEun0oz/O+O2D35tL/F7368Jvc8z85pwjvzSXrzHYOgWrO9L24s/LNkgsoo3PqcTkE9gJlrlef+xsf0x+0dk+6QLFZKXOCXt6R3sHnNdYs+7/IA8dgS4mwIEm6e1tSZzN6GY0n35rSnM/bXI70FSG9w8tQVNkIUj2ywc/aXZkZS6qMpj0xZQOt0QXVPInnwJuVfFT+iF5+c8qLtYPAahKc6iKVWQVmVGvZv3EnV+70Ylj/BwQVZb89q3zoXI7/WUdNkzdZGAHxNL99PinLl3EO9Cb0nVhXNIGhcXFxHaZV2W6FcaluPo2XdM387LnlNb0CYOBdMxIRz0kRTUbhTljhJfDyiriN27kLuDrP4PbA6lCt/WFW6VS6J8aTRPdDOOQcHLGtdvSKjIxvS/THRw2rmt2U3BwytKMP0gzxp94A79nTE+BJgZsKADEeucY6+X+wzdBKkmfqmSi5OSXtXpsTzK2F/rMhP9+JVegnzpAgIIjjUDOFzbjf3M9NezCWtYFEFw+QIeZTuuETFsoVCB/+1WRA1AwvsWtXsZUH8uT0kTrAU/LwEST1vVCWpcCisq5N4I9PbmpUK3H1fIj5klpNPioCECB416QcY5AkPDO/EAEBKJdLg7d7imeoSOrHOtcrrhQf2A2of3kx71MMY4pHrMznY/aZ7xea6G64CtaMJwiJdCx99wm+Oia8opNt0A4lX/evs5QaDzPq3g4s7USlRAgkYpc2qOLnBupfmNbTCLI7Vs4hU5H/t0ZJHy32vGZjjs9gV0KMlhNINbdRI8SewsYWPcvbmPbU9hcJhkrLrHx1JxC6kUJApjT4h6g+D8Agrzoc8b46Sp3uLpcCzpDhiaJAbpsWbcayGYaz30n3ROiXY2PkkggI/YU2Zh3/A+jgn+5g5JpO7dnoZjTaE7No/UWkUHbkYSyMmcoCYTmgZgonVXDCa6fjBa4gs6AfBHNjb/inOn3GO7K3T4bIaQ1UuVz2T3RZlRU+g0zwa0E8HRI8CVHeSerAcxFyOfCTfJLmHwfT5nSzJgtfV3TaLvjItvdx7bHvO4ko1xJJIcZgk2BsklLwWZ905hqEWcuqJgFYJ/812NCQ6BYTV7JC+RqyciF2ItNtT3st8zrYnF0Fc0I2a6QeQL/jLL2VVGu5pqGTgFW0Cjw5+bGNdJjCOBG6E5STxsuqxfQcMkCHmjD03VPpYZXyw2/0olfVqM0BwwpIwHucx2a+EKX6DZRz9hZqWRgekD9/3IicA5rpzBXlMgax18DgogAxF8WBQFOnnTV4gs2Bc4dBwDnwkwx47annPHJE43s5+DkGtnj4DzU+HPDCoqwgg7yUQBo0jUCZgCYQRnmByHqIpSZGYrdwnYno/BejdsN5458Y+OsGlHFvt88TFGlGtCvpejXUFVNB+pFg+JcD/CbxRM5wGWqwpSVlwDWynQQeEUDVY2GRHm9+JsO8P94YRNL2/kvNazSGNUgoCb9NxQRwvRVSG2k9IiE20weZTXWLdoQD9l9FeLvgnE5WBirsTGuq+/COiwc0G0jH3UyYu7qGGswgqjZJg0IPKxaByDjPNDVjMgg91Nuyax4Tu0hMlgv00KGWNOGnwCTgbXij4fFpUF4dhSjHSNcD7//F8Pw4WAqjBi/pKQv5VCDuGMUyw/sf8RuHkSexJvZPggCUAySt8jHo4mj5Jqc2FDBxoJzMGEgCVyEBW+Rk/joXzy/DrqnHephdpqyg3OSGG40dfjplFhegt0w8/pS55d6+tLkl6ZyIxsJyTeU92BKX7bfOefxHVjVDUSqqWLUVDHqKN9wlK85YwyyDuBXDfyuqTZgwRhTM7kXLoOc56UEjGaFrqK32GYeumpGDiHLou+2YECI0Dl4jsFObgJ8DanJgKMIO+uBfQPJDUfOCtXjr6sXXBftEE5l7vAP/ABnUYCwGMgdsIGQJUwbW9XG1pBa9/eVLgCR3jp1UVjikjvYRQkqnmfAbJEw8rlxPtVzn7xtnAJDA2P1N+pAug4oKpYN8p6ULX/Z2AwiiAkjeDa/+FE5oyNeIxsSzJD3xKPXiPJtN4vOdJOVzQDAaYRUzNAcOICTJyqKHNcQAK5MDG9hLIAQr9HhnK6N3pFrLOGc4+rrURY+18dgI62t0FwvKgKeg3Ti0NUydteU3aYVUYgcYWEH5seMGZC+p+32Q9kgZXeo7K7iW83WZSE4ZLouW8EZeZiGAViFdjROjbzX1KXbnDOCPbQogXxT7i0QG40Oelfi7ZV7FutUS18qVFXkA6oq8hVS9Uze/xK3A+x7LjmI7vDy4VOcGwLRaO1NZTtCYsjsyuytUf9IdNWJMfwMIImfYE9pO72JRImzka1xy9IBUT/oYjR80DM3yoNdlHznF5+dDXVlwy9KoUaTPOd/eRgskMvhXMkte5XFdIV5tAXUIj8bNHOm3Ov/F2MaBeYqYwNlbIh03HjiKXPhR+ZXQhQY/FyosvE8U4mEjaAGwqrSU0LgfH4T3nMWEQUZNqlQKsv9nOVY41vNWR5mLA97WP43ZZYPcEMkT/HnFuOVnSi/MAThxkg2daH6jD6iTxrZNmuKWzYFiIk/6nb0cJNYbIAZ+bJTUo2rfxb76wiI6Y5UL2N+oDtJXankq2+4pRjqMGks63rs4AU/X9iUfa23NYthosBFCwjjX3zJ1wUmxh2h9RPkSj/H/y0X3OL2H7HSSsafZJ44d1KcQdgOXiczZkpSfHlDN1+Dg9Bwnm7IiaRczNMJ2QpftMV1bXGDYC9f8a0bii1upC2upNG7EnJU4cpL5w20IUtsX+GUj/EjRDS9IW58AxMqsMYYicHsI+tnPLS6t82etNlFeF0LDfiEtcOBa0s2im/76tEjGIGiYtduS9PGNC1jlK9jHNgBCVBJiRemJeppJNHXOBGZpKmBYEjFqEB830FfxvcxelIZA0oQJ8jHgAxEQ0xm9gALJsI4SZEvxdBT1FIfwi9wyldOBQTUbn1DaXVr0MOpf4c89Yl5AldKsbnle/sB5cevSA+jI1+/PP+uG/Jj6oJB04uFn3z8OQWL5+cBEfzsRcihLYfI3Y7Vq3ifvZs+KOhRf7UpBAUDaaNsBS/Hog0h51ffd1s//W1FfdXMF5ETl01FDk3JRQ7cV1lS4Snjb/QUO9FslPCJQULsWnLunAyu+uF65y/64cqZt4udcyDbeUON8kHWOt/1juliaa+X+Cb6Wj+L6ZEpHutXNJ++mk/QoGA+9TwQjL+e2+zE/0eNmQebmqmkyrIo4+wwataa9FgFLZZnRKF8SK4arvSG4omCS5LIhUTFnC2NtpX7lqYLdahxJR92UIbpGHK5EEIrPV1D+xu08xum5KkYlTmsQj8cADCTcPq2bFYArzfgFbTBy43ywlLgjMBN8hqk4+lRMRUaChvLw+gmPSIlC1Z/59+KvVD8vtu1uX68H0DJlanLi8QMm5DlXv2KJGsQ3+zKmdz1+A8RDW2dDg6Qd0KOoYBaYE9XeWbNifZ6AToBM1qX3/fo0SJmlX/FBn+lE9DbPLGqsXt7ub6Nubc36RvpBgDeAO6mqBQHwQe/Yg7oWU/73nXEiGVx+698dL90SK9/P35wffz7XZ90NvJNN7jWfwgcxQzhj+C3oUlJ5jHokMj0NNIqx6D7iMZppG19lE1oCxGCvOFB1vCg1PCg1PCg1PCg1HDhDVxVdXq86Pm9HEILlEtKH0I6FHOizChxsZIJp4JxfO+b5Ir+lKQuTOgdgZiHQMyPvX66QMy/hSPvxMIUz9JROwo6xmU66tZEjD/T4F7I6oFBjl5U6ktHLb9gcjVkKwxIO6y/u9EpAywU2pqmv+wN/dNv/eT+vunSvUk6/GPIGeptYiGIY3Sh0m9+JwfCMEp5GU9kVxXRAi947nOc+XMGPvP1Qz10xUVfKdRAWxCtSVeNOAmEIIhVL3cunoRaenM3j5AbS1J8CP3y3qOiaJaQgA8TiFaIPfPAFYziOdHg22h+QA7COEkQ/80tMq5d9hzpz0rp1hc9/cHhQHwvllvZYxNE7wJWZWkutARG/ZMAIS+BvGgQUy8zFujlNvtC0R5iMFv+GD8UF24Eas3k3Uvl3Uvl/e/RIf/Jd24oyPtQavpl0HBPybnKD6XJ2xRmPXVVD641hJHq/36675hCBI4JfMEc5d46PVe5XlZWgeSY3OYwKo+YH96d8L+r4qUFVAWDEQ7CG3u4iYn/4Radisu7hs+U+0G/t6VB+RwexThM/vyfjtjSfRf0lKu6cjcxu/ud39PbzjDx0M5QWxZKy3wKpWWBOBKllvl5y94JHh5ny7x+LfOOxIswMYpj8Ro6Mg7hZN/xIPzKvh59jq4v6PY34VDaf36bmvA56BkIPQPBLhDsPAoEOx/YeUXsinOWrysjZ2Yj5x0BuXcCued94sjI+YkP5PzSkc6wpmqvfMFSzjMrYWlyLHcUMKocAaOPAKM7b7+xhBGBOmLLRnEo2bE116TATQr8Lwz//otXF80LJ5gM/2Bu/O9HrX+PWv/4z2bV6v2Ka/0X1PrDO6bLtfq/4lq/iFr//Kc3lmsNfsW1fhW13vansygcHkutXTmT8YSyyKeXtyeVfO5aTEgTNtSXV1h3vAbyGkA6+QlIhzRowTjwb4IRvkVvXri0b42+VKWDRJ+Mwvbcq9RMfgm272BHt0H/k4pGbCUDBnhGTyDUyfE4G5ooJvqujtO37sxXj7l5QHdI28swXsERV5EqOKrsdQD0SKs3GmMK5/GHaYw5jcyqEcZIgIjfsAblXzGoyg9p8yXI0/aVpBm2AgMNR2lF+uvv1qPcAEV6gfzj9/5HXEH5CHeXUqbPeF7Id870GWQm3LxOYXyCNisxy+R0EScPXYciqO9a+af7kDMQcqqHKzEzGYzmUORcCF2E6HrzNOAR/+MdugCorlMDiobkg4AzlOerH7K18lCE57cu3ylfOSfept8Yz4AacpE1Jj/BXY3v5vEdPwq4e5V/ooo4bpyxkOpVcA9s2Kuwycuvx+Ao8xkBXtFT0tztlpCS10nuMWhY3gdiszvUKVmOBXSCNd6eJkhjhWceJhDA8ZcxpELu+GevS3+9942OUjxi5x+SdONB9ys9eQtTNFhIZTKGfeIlwAqpbmSRssPLpUAJHZBXYgi/1hUlndnopeYNnhnvf2Xu3Hdy8xv8RLlOtIYFz3WElLu2wV8anF2IjO9xesc8RR3LJagJMJhXlWtEByWTu8ekg/XbWHoYM0i5eL1rR6QWXcAtd7xN2gWJkStKutjsSmPZbaeLBJ67BKwjl3Hj1jQ/kjOIsuty5XZcXFzSip5lmr/0WvhArwaVkyvz2554xhtUIj6mE4plIwYMEM0O7nhSwFELwcoFeeV3V+ao/QqpfSfqu6L//f48Ek/v999khihYa4bsAK4S7r3DWD4O6tV5Q8TUT68xDnCN8WN0UftOG3NNw+74F1zI5m5ji+NDaBHTcpQ/jHJul/cxdj7QX0BBz0Wlnw2HYdLMrD+/8FfYLTBj5qDBq4wQ4eWG6+N/HRM4FdforNKTZGrw/iS1TvVVfl0IssGPNZXng1f5Y5ZRpmiDP5ZUwBUIJcljuTxWymP1VpxOEtDgBn+dAAC1VvkklOK5bMm3RfJs5+WClmuiuGOHJT/ItspfyZQbpnnx6xzl7lbSdex8zbSAFqzy1zHV5tNCzXSf3lTYsYskE+41XuXzvcYs2uOa6YW44y7QK46BAU8YGLuEk5a4O7xckuA2bZCbkrq1nGBxoEdIbSK9ZE7rWEbLeO7CLk/2yf08Hbsiqcrld+X75nFrz1DN3TgfhNVIOIKrv2AgViXTh/VSVZyZs5JOwe1roebCDWDItYZzVeRu1d12La2mtcgVpLnW0TrkOo0XUBhc/oVrkc+gdXQGcvmaC/clI9eZnMvDZex01m65gBW5PM2FO3yQ62zO5cuFybvtJtpIm5DLaC5c4INc5zJenlwSttueT5vpfM4VQS7B5i0dm1AictmKHu/jUn/T33yQcdIIKQy3Tt/+jS/4YjqnsdIJolqRj3X5KIbjRojoGy2cmojNTSv6nOylOf47zUdTQ10Xm1jjt5qa7TG2VHUx1x1UaLEEtZkEsMc02IGU2xbm/nGeU/w2VzkDpXiT8XAVuWeHYVpm3cbJpkU+juKj2Oou2+pPVGCscaW5XCY1me+v6doJVxbRyqQuN3UzRwTMUgeGWI6pay1ZuySiJbYtdguySm2xW7iffHl+CXpgT+SEE3MzvyIhubS7AxFVuq3gW7w8f3yff72X3+RFc9zkNUo+KMoejtzh1YHVEZMTv1VMPyfXcXm+j1vzGw71ASzj6VpZzBhxE+VjEx+zPUwgj15yKp3epB1JDHo8mte1o67sKMjzlxXcfGkXcCsFTvmmeFpkF0S0oOeS+K375LY/NneuJETuBE44gRPc65heEu/3XBL/Wq/m7wuur6rFjo7x/leYW5bsmMW+kt6FKC7CQ5kwppcsinEzmRCqCFeHGNaQcFXAqdHVq1tdHXUhWfwGB2CEM4yABwHIMw/kmX1bonxaIDXKZYlSm7O2Uhuuoua3RfmNqosTknthsR9sQhu8GAKUBzjWledTjR5KfkOdPcbkHcYawuMs7z/Plkg3/yQMCurq5n31JTdkK+r368wb4CRr4wMyp+QWVwac8oVKmqTeMhbHpktjATPuJNNeCW5bLvZSyOm0LKrvtPEv8fditZVStZVylaCQIR8zd0bohcalS9bX5SvSbi/Qh4pjmQrokEzP3MjG3St1LDJrPtL2+di/oWEvKP/PyPIYmURlWMSDqNfIpCWbewY4PWNkceYHfF0m7PzdNJNGbKZHENOW4813Tg0iOdmHZH6uVhYxHvzDNd5DEhkRGvjXTNJ0xDezvEDrD7wYQUAySkmFYTHIoE7a+Oh3jOkfsitXCNSPVlPKs9JWgf+HvfeAs6O48oVvdbjd93bfe3tGI2nQCHOqSUIEy0koYFAPsgROOOD8nPOVAyNjlucdMQJhLNvsW9km2HysVxb7VuwuvM/rIHiWg7x597c558UbHffDGx0wfOdfp/p23zRzZyQPmJ8uaLq7wqk6p845VXWq6tRvD1ymlKUhFHLPRY3S1/5x+cL7XtAdUy9ZuZEbhrXTQVy2A+OYkJdN4cxSJN+Das9pRqYTy1/RBl0zFCf6rcD1WPl0LDAPqj6UsgNnYNpjDOXWFzYCx5nrC/m69xfEMoMzHVKudnJONLPeRwJsaB/Ck9mdpojUM2zpqe6fWzH2cWYoYHElbwI6AyMZt5tFvX4Wld0EsoMwTwUe9QDCoueZFiEI/gOc6tB+k4pYsWNR8YAi7GmaSv0L3Qe2EKvcF0E4zq/ceUZGMw3XtAwDS6sMRi6I6G7WUpuChrZZ0RbAAmMoFhHI/HnaKYuHEkWTYuWTlFUlVazBloi+j4syRN+wSJoXFA+GUjxYkOLBAIqTpTi180QgeJATnAIhd9BFbrdEbhfkBrGFCrCt8YMxT8qYfyDHPBmA+WDcB3Ga43f/FDgNCtDrxdUdgGtFcM1TAFG3xFmuoOqOgCrndYVLKoUa/Pn9HdtWDYh12EaUgdTjQVWSZcfLp39Wmg+qkkE1V0/2nNivXIS/n7xo7CcRLUuqoqWErLa+QjipM3CCMDjTrdnUm26+2Kgm73Cz5XSxT8WJeFzkWKXlHoeOZ8r09VoVt/vnmQ6/co7751v2MBau7cOUBE2rFzZM7O9vST104izCU5zMaMQWqsV1FVoeLNFyp10utcovVbl8qx75dnP5dvvlm+1lb8AZyvO16ul/HYOJcrp/EDvH1D3v9KGxpaoKrwiOjbJAW/FKMWNFCrs8K2QSyKopv8CD7WnXRL/odFlm3UG8oMjJ+SH7zEXGCHYAqaQsSfnQZk4puzJAy71c6vNNx54fPt0Hgyy2jFmmLS4tYSQrkd2M20n/+3fDRkuupJ9GUYCGBiM1q6VY4UVykveD4qmannsRiu/pCd0+pkqGMJVbDNGgWizHYIhXjB9U9KeQIscYTgYuN0OyO2IE+b+OXFCPodwv1LuxEChOjBSpP61e1ujg6U8Dmpc/r8RlXqwpp3OzY/WwDl0pCCQIKEz+5b0gQQ3DqgrVsLfep9o9aX1POggY6lWfTZ3DbR1IpwW5yAkFOJZRXUtM1xLTo1ohmu5AKnodErqWL8gl1/CEM3shPyKgjKUDqNKCrn81D12n5e4X9TwG5vCfean8+S4q+0xlobEDUVfkWHo4fcT1hxH3f+/vJa5jiTsQGPkgrm+I6ywbcX1LXB/E9buI60e/oxwQtyDsfFo/OyYULBR/WcpFvhFqFGMuiMnPygRleu4FHSFUx6PZIXcdrd0zKv1Z7L0q+rDBg2y89XRXZrScKe2coArCtREbrNwZ2LZ29PcSH0Q9B+/4VbISY2uYHBbqSVfRNxUZuXJOaUyPVZHyYsPKCsYWzCTj0m2ZZfroOVzDTjeWz0OkWy8WHXlFxJHRy43j0jCO1JO/S9O6KHqHyyaLPdVht7dvgheJ9U4Mw8UBWNE+qKuXViqVK4y7/eCVsBs/Q9c6Fw/6d4t9rHSUi2IdRRTBkN+K3ui7+W2UCy0imP0TJNsBz3VDsV971qHO3+6dz6HOX0dONOcNE57szi2yP95OgLo7svvvfL8wjenIslN13vmBeN/cytw43r239N5vvb/UUyLVnSxs2VNl/OjgHKPHtN7aN2X3h07ZfQwZWAPdYDdXPcQvcIPP0H4grwG/PiyvIcbG8soYSVv0mwi+ujmtY+t/lH2IgTqMOIdH2b/yXdPXtZvjYa3nx4zG0b9to92w5+eHQhOBsIeTqF4IoUCw0U4vBC9cAn6xv5RMXpFp775OpuvlFZlukFdk2odXZHKXLZOzhEwwQNeYvzCPemirTMi+g2fIO/S2ing/iCdPNL65GRw1aHiqnEh4Q9eLOtwoRfhc2nuL6txUVOd98gpmC/tYzTCZW2Yyd34mcxdmMnd+JnNHY7KR8Yr9JWQqM9n+ItP7i0wfKDJ9sOCX5crkLCETmCyMZO/LzRcJs+3HM+BuBU/0IXiGhsl4QBbzv4azzc7Omnh+dUvaeokMQr6zJW1g9RQTNmrt0Q2GjcW2B7dg0inO3Rrk3TunY8TEF7oHtsAPSNdYohL9ge9jRuzwv8B2Ilgb654MOfn43DPdn7kCiO0vuoogzHunPXIOE2NO1XteOJVW78F2A9OnBzyetOp+sxxVrKJueLgzusY1qnM0TpRm7uUmeHZGRwgmV8cMO6YY/UuDD3/Dp97V3BM+FMzsxvs12d6H3RniqGt27zbnwDOvzVRpLCJDuNgM8WIzJNh8EFEddavbA9YyrqhjV8VSkATEGk5x1+w1LqHQ1DusmxSWCRt2CKuoaV1ghgWJfd1A6VxHaqx3KkflMrcGX8UgX0IhDpgtBUwiwCsFEKA2gGhjEKKK6tRs28It1lJuUSgA6gZK68aNgmm6aZreh4tgZs09yuEzjYuDYE+KyYXMJMCxxSGsX/T83NBTH8bSXSwp/K0Mf2MQC262DCwsD173hdednNvFyQK43S+4vXo4DTpNEVJQboqg1BShoQFjh6aIOUEDiZgkETXaLOouHuJdASyRlFgi6bBE0mGJJlOPWvxnETlC5AgXkyNGjtjkaCJHs5Sj2cnR7OSwHBEP5oiwbWjQ7HBEi9FvUmtkOQC+WLzEo1lmmaplmaqwjE+BsEx1OMv8gVflofQe0YPeIKYxqxVbtCeKX/udbdk8U+Ex/N5LjOcRM5qnynrnPzbfqqtRl/KUk85+dvM+wP4J/CVvqq1DcFcN8YUmrWGKDd6qFbyFlflutq2B1fBwLRNh3tDhshp4q4lgcmX/nN1BB+L6JeL6HeL6HeJ6aDKf/EVkCBebIV5kBrCThy7PaHlhp1g0aQMctBQkATEG68TCFgTTV3AY4KBrxj4kBzbqlqXqFMzqgGoUCUvVh7FUcAJZ6uFHdizAUv/LsNRPngCWioSlojJLRR2WipbOUidZSh03S/3VybHaj/pYjSFVkz8AtU+O2rq74J8sRm3V0Zi7GJUtMCbTQTdX+0J3HyQPxcpDfofkPghdRzC5OjJjsggNHqPB41KDx50GjzsNHoGM4JDRM4SLzRAvMgOa2LhVQd1q0sShcHUNrboUJAExRHuHlqt94WpSzM4AiiB+2i2eSxmT/Wy1qkwHCpaoDWWJrg7T6x2DeT0dpm/5por3k9rwMagNfasNRQajPm2IgluiDRNOECORubPaoOeRi5caa6hbks+JjwPRUxwFAeiNCCUi7IuIJSIuRxRUSUTSI6FKXRRmBIXpWIUZlRSmR42+CnFcTpA6CFLvUZz+rPZHUJx+9PMiJ8W4YGQ5wcByuJzYwUMV4hJ0i0uAGkFcgkJcwsO61i0udiYcFG1ZmgQXU18ux5AJvDn61NLDNLm5iAzhYjPEkmHRs90+xrC8sCQkdaPMHS4FHXGpdcSlRbUyiWslcWllCgVTrSB2VTdRD5GIZsGWWxWXiCAMI7pDM6dtImb7IqoS4fVFhCi1CZI0KR4sK622rZylj9Srv1IywUcteqgRWlkJRVYCqomshMNl5TeDUMxCkBZnj5pV1402jlZZ0j2ORopyv8GtkQbW7jN/D0E+hTKsQgLL/KCYuUDlyCa0PMV8v7T9kraKuVmKgBgBoQ0oeE/GdNFQg0v/YK5RFCqjOMt13eZFOLlhCzQgebIml0b34MiOTBdtC6acHyp5DIqCxjgEbPFBPW7oOUZVTophFdPTfEcYx5QC8aBEqoWM6Qoax0b0V6b1KT1OMdWIX2pc59BgWwAwlWxykd7VHMTESBvm4v2j6YRx6digiXwQDNP5wa3UmsWM6+338K6BSkQJcE44P25AJmHUHl12st8/kf0++hEz1PqM6TtaVpJX5tOF1mER5ZXDh4eHq0HA3Z6xseDe/MGCbFkXx0mLtWo7/ncO404DcY4btGUmwJgpqnVYty5r8TmXRmBdfPsl1kUgHhSWWLdJdcyfXpm2ppgvQE1+gRPbQFjX72Jdj2o9rFs/miaWdZMe1o3It3zb8ScKvuVKCd8Ot26PFdZtoTyCZDwcIjrXaiGUKLSaHZKNHdaeDMl8RrTaMyTzDE8EMiSr2SFZ1egAw3kBHhHo3gKztErM0uowS6ur1zMdxiJyhMgRLiZHjBxxe5FCAU6AUFRFKHxRrVXy2qJQMZ4tzagaI8+orNK1EysfguJ3BCUsBGXcCsoKGpvVYxTSuBWUFcMEZSz6F+nz1J6I/y6iz8M8aoMZLoKZvrN56rj7v2Ldo9q77uHKuodPUb7y8albNuUrG76sbRRhoYSF5bBYwmIbNur6A9qs3hl+oAYNAVC0igxABvWISblHrHOPOEZ1ERkBmkaiVmKRhp4esaNBWkatoKKQl1IgHhRKzbp7xBp6xAa1iF9aXO3IDJEKAKaSCcVGrYAQabOrR2xKj9go1MrYLEOr92iWGJqF6zVfj9iC3uzvEesIflwN7bstKK3CgrLkoX0LLNUa1COO9faIYwv3iN8KaiLoix7eQtQ3dYs63JMUk79C4oupHyQ+FImvzT/J4+rXZKwv0z1haJHixgUqF2F88RyjCIDsI+y6clgsYU4RZqcZMukYNtuoDZptNMsVANBC3IuJRiHurbK4xyzuEDAr7jHEvdbWY4ziuBH38Y64yxHVcQpEsusi7uO2eywC8aCxkrhPEE69T7wyjab0CgIH8kudWBcZhAsAppItGu8R9xVH05VW3Ff2iHsyy9DiXNzHgPMYjUPcuV4DxD08OZM/kTN5iHtQiHtixX2ViHtAiRX3VcPF/Vdqw+ayBx61uSxEcNmns5zzhM9oAbRvUovAx8O8NrAIQjOLhZKrhZoYhzZQTR88uv3gL33j4Wdd9pnNr29wCMJuRq3RU1RQ8aPwgouDg3dgS/YRdB7PuiUd/6Cxvr8SlRu/W9eKncu1CIjyKV0zpqAaS4l8YBstRbgvjpOq3WjuKXLPr9y8La1nD1fa2cNqJlPX7JbUDlLXsuSa7JHKDLd6cPVukxnRUT7RbKClG4xsocBGmb2DJI/vCTwwPGFzeABb0jT+QFmLfSMYPI0/cHIaX9LbY8WyVaGJFA8KgWK38i4W3cDnQqJ+Ya8Xwl4fIOz1m4G4FfbWEGGvl4S9fnf5mEIUgVYdYY/Kwu6TD2H3IeyYseXC3hoo7D5FubC3jLD7owu7mT71C7uP4MebsMsUOW2JsEcdYW8dj7BHIG3UJexDTRHVwhQxTNjHor+vDTNFHHjsmCKA6qNojQC4E2+QELi9NgkEPg7MEsWAppEvb8mApjHygKY22oCmVei4VgREoaga0HEwM8qHa25+go6rQ8fBbJDruFq3jkNqB6lbuY6rGR1Xz3Vc0eDc0s0+HbeQ8QUkeXzbX4DhCTPBANiSrDBdA5qv1oZbYQ48hqwwwPbRNcSg3BNvixG4feYYBD4OLDJhoemCQtOtKDTdigGabsXNqLXVdNEQTbeipOlW8MHTQtPVIyDa0XT1sqaLKYami6Hp0OK5posGajp0flbTRUbTxQtrupHsTiDJ49v0BAxPmPUJwJZigOrWdH+oHI+nbcZPGCQPjxntwZGshO0wYdfN6CrCyNGKZEu6Yu9oigJmXXJvSUPZ60Gh2ZH0qqmtCtmctiTiys+XDrghVdg2h6h9M2kQupnZosNB6mqBJReh5uBcC84twEXRD+C+qoyRW8Yo57yKvQ8fDBjkuAEvKMqqwC82sCiqsrWrNxQYorMeEFFFhNcfgVIBLEHhASPjdeMq+CHSYi2V6qsRoEv9nfyC8tQDmOifj6dJ+Rf0N+rR7ZXKMY76u+wNU+BG0ChPy68LJw8XbGDoepUD5Sx9LdwDNIq+o5S/YDNL+wJRZZ0jOww7lSLSsEzU/B5hM0DtjwgREQ6IiBER90XY23aqw5o4DRDtED9A+4BUPwSRCzyCnhZma0uBu7sNaj/3Zea2oc1d5h3obg5wTICXBdfsTn2GkxhN4yJKISoLWYtXoMVTb7fpktFpeLs/BahPvSV1biYHhms1M2WK8LPrmbqMxZQ4ts4vVXvwEvKSo6a1nKOHjoi7JQ93ciCgk4hzersk3V1HrOuFTcXVywp4KoPn/YKnIKeAHBBxLGb4Uqlr0PLILdDicCfHyd2dVgxOlW6c1M3ExBecANmzOHlTaaUHp4rFSTFOLa6tIKS6EKoUCME4P7DmblfNnSE1V0VrPCo1/1soz15/H3LffqUCRAaMTSo3EwOyYxOXxyZOFveMTCqlkUnlbu0VIxNPnL0bsXURrXD/IdiNBxWucZDGgws8zJiFY8nncQcSObvJs2MRTuvYnOR3j1u6nIhEf//YwK8i+FUiQexq8kyPzyju3lpxSjiqLhyVzd2LY6ULx9+Htw93YW8fj/xYm/89q9/lx/4FXX6c3u3y43MHPjDI5cevVnKfH+7x+/w4UBzN/1BxNP/DhSuIj+wb3efHobLPj7+Z3+fH0YV9fvzN/D4/jtporxeCEy4Bv9hfSiavyHRLkenWItNtRabbjyuTu5RMagmZfog+Pz5auIT4WFGdO4rq/D8L+/woM5k7P5O5HSZzhvv8mJfJ3OFM5oZLwCv2l5CpzC93Fpl+qsj08SLTTx9XJncpmdQSMi3B50fH30fD+vtoFv4+YhgYjL+P5h7r1QP+PvAk7565IR4+Hqp7+WUHpKbDkmsDt2uLh3AKPLkdq7ywtG0UV/8elvGBokp5pFwpTYhm8ymB0vADaapcSYPpTTdRML3uJoAF5Ecq+27kgEkb8MAl+/grlK8HT9t3IyLD/fj8TgtRk3h/KDCZ1vH7wy5CN+2/8cYbL3RlIpaGFC5PWckyljW5jGURxs59kw0ZLWGPxTI3qK50JiyxE0WZ4UhznN0V+6c9zH7vlVNpzdr8DsOxe8Gb3adg6oIF1Tpc+njg0JMcirb1qd5+lJkUljHmxjSY1W7vUb3ooSDIz+z7eI58bl/2aIWlc/vh/CdVe/brib4ecqw8HHBmBZRrgHKNXso1uijX6KZco0S5RolyjQ7lGgXlYmtBXZ6ykmUsa3IZy6Lh53MgCsvZoP1H/wunBq3iGG+z58yI3ZZQ8GGTfOzaMfColm/gA+Bi42DM+HLAtaWAGAGhDShOaYBCNRzHNRb+rgWoJrWKM7pNkEvKLQoFQM49/Gxuo8epQWP4Hs3rgxAuOiH3MgZTi3MEU1hk+v0LHR3mDeag8QbzibI3mLDkDSZcmoMhH3sG+h0MNRBceIMBzzXBc81enmt28Vyzm+eaJZ5rlniu2eG5ZsFzxi9Mi1rLU1ayjGVNLmNZBD81cgQ9jUvnmVyKIRXL3aDas8eeBvth+nC305xmj9Oc5nCnOSdcBLFatJAIHjIieNfxi2DhkKkQwbJDph+yCJ4UwZMiqI5bBP8plG1/nTGwmh1pFIwHBMcvhGa4g58Bvie4+oWLn+6dA/0ufkDlGFSOe6kcd1E57qZyXKJyXKJy3KFyXFA5sttBl6esZBnLmlzGsmi4OyOIzXI3aLcnpMAaJDS/ikfPzkIpvzrmNckPLegah1URZvblZijW7I3xi3SZZ7Pj3W2bbKFdOghMVh7lXp092MIGXo9XBRuY36HXsj/4BzFXtdXus2FXXXyIwvsO2q9PZvnbhosPpa07qEVNWSJscSENFkCITKvTC3LQ9de2ZeXvkNkRySGPBDu6EnEANfLlQeyVjKi1uSBYaVQNh1FoNnIhrX0Oo+Ieh1Hx8MH2o6BmfFEzI3gSO4FceVLNnFQzfqFm/JNqZlQ1Y/3SHZ+aeW9UUzKhWFjR9E8hvL5Z/BDXW9jkhS8mTDFrGO56a/gAaNQju8sxzGws47yhkSXLWNbkMpZFw48nQzMtc4N27y0tBkDYoRyjJoVmapQ0U8OoGAi1aKZWoZk4zC/SlTRTw2ome6CvYTVTkmumltFMLS6+XtZMYxQZzRSVNVN9iGYau4PGKBHNNMaFtKxmGis0U6usmcYgri2rmca6NFOro5nGGE8a21wQrHAQ3OXKLaFacXKtexEryZxuV24tqkLz5z4M62y/PJT85XtzD4MIgvG0KxTENBHX9kXEEhH2RcjZCzBdneL+Y2aKWpQUvlRa4ECpV1+lAJ7jOt5uiuNlYT6pLFy5zT+p9E+IGoYl56QaPqmGRy7rpBo+qYbVMDXs9ajhrapPDRceNfvVsERU+9WwRIQjqWG1gBoGsEINO8evhv8g9AOo4T3e3PG44HN7z+5zCEiQ1o98UEfdx/djNHUtYzw+RtHRN0wZv2y+OWL6XIZpD6bazBTZZKmc3AftkKNJgZzYQsa+I/zFiS3Omtbtia16z4mtuHyEP1yMJ75EPPGFJU98CWOVrxIkLjJ2rREIvZLDOhTebPXvc7GuWKrCm4E90uwX3tWqeJhl4THoo7FefTTWpY/GuvXRWEkfjZX00VhHH40V+qiZheLSZXkKS1BYskyFTaKwyWUpTPqYnqM+rXzji/WA05ApbecYZWN5aiYefvFodvsxYwbtP0E7Tsks1GrnBO34MJWSRP9ddmwE1TK6k95QNs2cIMdGTp+TXjBa5/ID48So8yUcP1sECKN4ElA05nDvLIUfAHHSWwwiikI7Ti/CJTnpdfuc9Fo1O85qdkW/PyNOUKHxj9EKqNma9W0kajaRqtnMtMImg0+jFYv3acRZ03HrKWV8AZ9G4ai+ehuDD8dHCO7e99SCuLR6xaXVJS6tbnFplcSlVRKXVkdcWj37nupUX56ykmUsa3IZyyIRnLJFtlGyyC53gxbOZ6ziG+QLaaLXF9LEcMviXXVxHTC7aNWXD7IvLkbHhQsB68U/PEEuBJw+R45J23opue8QRLeJL1aNRQB0I8Jmy2GTEuaVw0j8ByTz+Q8obA1R0euVK1CcJQ+X5MjR7XPkaJXkClaSE/2eAzgB66+P0QSUZL3jRQBK0roOsJlpwiaD94CJxXsP4KzpCjsWXbGA94BwVH+OTWAx2CpR77ZKJJCppFemki6ZSrplKinJVFKSqaQjU0mPVSKiaHnKSpaxrMllLIv6vQw1S5tDl7tBC58OVkkO8jqwstfrwMofppK8ZKCS9E6oklRDlOQFqlCS1slKoSQLJyu9StIph9HoTlb6lWQOB0BPKsmTSvKkknw8Ksm/qPdb5Q6ctMr1OtYsrG4B3gvHmolsSeruAdySY030B32umLhiuo4b2blwZxtjWPYGgICOLRxVN3ZzNnDDQ0H9Dl2PjF2d6l3emWyOY9mhtH6nWHDTWPwp+cboZV0xefgI7UeARRCXj8hvyx7mdz/zrAdN620JSrXTBya/XCrnquxQXkpLYFXbaZWq4jbAY9s/7qzIWjMdn07Gd12vFzygEs7vzqkJlunXqD6CS+6cls+ahXWj5SkrWcayJpevLFGqftd25mbHdRVGDMvbpv16lUOgWodaJ4Mh1skDZevk/6lXrXVyVs05hXL9IVsm0yg3X8Ud22QDScqO/MoXwja7LoRt9l4I2+y9ELaYfPf1jc62oY5KZXBJNV1HBYrSh03Be9x0QmO2Co3Z6tWYraEas3WHblmN2RqmMVu5Lqt3NGa9rDHrZY0ZlzRmmGvMuNCYrQU1ZtzRmAkl0Jih0Zj1Xo0ZlzVmPILGLCyaoT1LVzADAh4dfVmn+jLpy2Usa3IZy5JBaNchxbCjL5uPjr7sc/AeUnWQvhSj5sL60ov+Ph4+Xz/wWDRqAvKjatcE1BNv2iy64X6/qI+buXs4cEy+ouhhVvT2MCuG9jAr7tArbA+zYlgPs2IxPUxU6mHivIeJih5mxYI9TNTpYWpUQw8TD+5honIPEy3Yw4xm5UDuk4aOx4uhg6n7mLB1cMiSzB0nsI9ZfpswsH50zcKAOopl+GQfc7KPOdnHnOxjTvYxf2tcY88u3ds5dI97KA1FzijcbgT8kb/b9oZej+dhe8G01rtzMprXc7SBBelakG4BcnGez5N5PJ9LGSih8Hx+VbsvVDyfXzsgooqIsIjo9XxO83g+d/s9n/fVCNAHez7/+lKbt/B8LmUdOVo023yuz8P2COnDhZvZudrCtEQowBZN3QX2+Js67Glq1LW/qS3G/U0tEXF/U0tEspimdgY2NSAVTe31NPV/S1PDUTanuRpPH2cc8BLs1kqcgzvFQQgEOHkK1iby4u2GA83cs7iXH35wzOGHCvRf+fCDT8ocflDlww/ukMMP/h3kkyeHH3yUYA8/+KVRaunwA/xz25MPRQoOKBx0az8iv4y4EsQLtCoW8WoP4gVpvMIveoF48COB+E3OYMfdPGITx929I7ZK94hN2eFa5Q7jXdV4pY77R2qVfAzlbql4nMw1oyLXvGGw5JAy/rzN6MzLR2fKjs4Ad8HRmb+lEogfb7A0BmZuZ2AmDjtRZNW8oUi/7Nz7BNEhWAwdCuz9DkW8YXQIGItgVDpUhA7VPjoU2DsdiqguOnxCqTFLB83Bxm2ju0t75OXdPbEKiTNP+/zqQ41UdUBcNSgWj6uuQzw8Xcu+etMRhlIXZ+Y6wso2dobGFFItuRO11w0G0tjohAyvya/Ntm5Raw0AhDrh4sc4cKytx2ncFp+0om86al1eRZfTeOSSt4vr49s0vqkiPxRDJh+uhLmqqFqVv6qoKL5Q7eROAyaUgBrVyJz/8anOENxtCPawKxrV1g0sL6CxfVSvSU1mT93KJnWCE0ZXc2XHKHm3Hs8w5xnXPBvTK2mCVu7Uq2iVbkTU0KszpSdpNU3O6FMY2ikWmqfXZHN6itbQVFuv5eLX2iqH+lTO8QQ6lZ7Q1qdxxGlA6VQUTFJnzfEpaUrb+nSOPx2YcxwzQayiSNKcwWnOpDPozLY+i9OchQas6LM55GxOhzQVvY4peQ5HntPW62m9peS6VnRHqG5QBblpCLnXCrknhdwTgDmpq5lreudgRii8Vtc4pI4d8DhIEDJVIzNAbuzQzUyZe/FaMzoxKjRh2qAFAGiMs40zdcdn9Aqu+QRN6JWYPVryTehVHLqaVjO9V9mwSabzJOh0ipS8hol7CmPLzTVFp9DU1UzntTT1biZwBQRm6j5BE51GtFNr0nplRCt1mimmakqnz+gzuLwzOuWdmc0xKc+ks9pMRp/OzlFmMiom4zoho0/rDUlQ/rkccR6dS+e19fkccT6TTBoI4C4wGF/QqfoT6Ymo+gau2pOyR5R+Mm2gJ8/op+D9qfQkeuqMfho9hZ62U29ksBfSRrpwRm+iTQ0VxU4kBW7mUjZvdBKBuIW/tlieRolbWeIuoq366XSRvpieThdfoS/h0rYxuIwuoWxGT9M2fSnXatrWKtbbaTs45RnZ9TfcGOod9AzasUvvlLjL6DLEXc50eSZdTs98l34W7aRnzehnZ3s5+bX6OfRses6Mfi4XcgU9Vz+PrtDPp+fR83fqF3CeF9IL6IXv0lfSlfrSiC7VL+J6vJheRC+e0S/hOrykU4eX0ktRzsvwleiX08vpZUaegdMrGKf/Qa+g/7FLv5LRfaVtlFi/iiNeTa+iV7f1azjiNUwHyf9ajngdvZZe19av54jXM7mkURD5Bg55AzjbwHgjf72RWzPKKfgmxuTN9Gb9Fq7fmzot91Z6K1quLW2wi3ZRW5jubdSmt12t305vp7e9W7+DM7+T3qGvonfqGbqKZnbq3bRbvyWit+h3Me5X07vo6hn9bob97g7TXcOE+jG6hn6sra/l2lzbYbr/yTneQ/+T3tPWP84RP95hulmO2EOztKetr+OI6yzTWQ6ZE7B7FVfmekVzxH/2quQz4v/DJLlBZaT3Kc67T7X1jYpuVFbqb1Ct6F2qtnRFDOUWiPILoSMoTL6935YMXZwloojb6DkswFor+itVc60ro3DO5afb8RysFecxI4ld2iXX5nFNJaYrUj2eB2PAPr33lm/8tcvVcFEHFJ98QtB2UbjZ10UhVJXxdBPt1HGmRFXNYJnZTuPPwSK9wJJOYK8eEwjjxPoKtjJJtEISoU+gib16JVd0Fbm0qg2tZSu6shVdoepz2Z9/BN1mxXabGLrAYT6GBSDzHPBA5yud2Q4dcMVCkG9G1+x2hOQ/QcioFX3GU1tz4lQywjiW1C4AkzKztdLBt9HBa5/Z1Oy7aKNrhMrmNjloMpvTllvVKnKeqFbpOk+rXCHMjI479zPEXHSM4QQ4B51lo1HJPvoLv8z5m4INend08olFcoxatnunhMU4dm3mFZkSUrX1StgeWC4RwURjqKuM83N8T4J6yf0G8iSnmwS3OSD/KdyArO/RpWrW8rR2R9GRzujTGMppz7BgAJZYD2gi0smXDbCUgaXgWQdcejoDO4NORxcqSn+HPpuBraOzad2MPoeBncPATMHoO5MvAoaFHepzJcLo/uSnDfjzGfz5HWpeAGqyyr+AnjijNzC0DR1oT6InCTQB9WR6sgWuLPCnWEI+1dL3afQ0empbb+Qe4SkgqBNlv17hDuLC5NOIr0TZr1XQUXQ+ifsJhza3uYPYIjzRij7tqZ0Li1SY/Md+84F6eNnTZUCYmAsedNUES+e/S4ecI2TZR6AHLhU+tXnrJljYyYwPoUCxGtBEd9eihhkT4H0Mp+NmNDMLje8smGSGmWRlo3L6zagcxlqQlNUZeGI1d/+T4ARas1NPZUqYYUafSqc+o5PjCfQE5DiNXAyveHAPyzxCiAgPnYEjNEYC4AM6Yyf3/0pYYYb7/7N5FieorJN859A5eKwXxM6ldbSezk0+bihzHuN+HlBH1PmS/gK6AA/u9en8tt5AG0CBJ2WT3OBPoidfrZ/Cff2T362fykTm5uXWfZr0+Tv0pkxxA26izTNoQEvSit5KW/G4yJSCPp6e3tYXc9pL6GK6pK0ZP9rGwhJ7kWTIWACmKaPptr6U4y4F78AgwJhv5+/tnDYSxfYMZogdHLSjzV3/TssQz2hFL1DOHKdm6mUqO/B0EaRUydyIZ0eODWHOuXsj5k+IEG7OmOc40bGN7em9DgyVSsM8Hv30eU5zzilduFTwnwNJr2QHN0JzuVg1UG3tI4RHZFVYPRDg9F0ho2CQCLIzMS8O0GwODCDY4BtmD7ee2QjJ+Idvb3QOboRrzzYFGCFXYaznwrIKvjhPHNrdsoDnGHhiOQvQc/C/0FztJKAdA7pCnLMA7bSzM/tARwJEwLtSZWN0mHx3qnDNTlO5nZ9yK26UKdNRQdmgFwDjOBQA+QANSA7LzUyKZS5Zf3NAmudhBaT2HBOGpRrFlcWru02yKvRzWf1tbcQaDEEqpYO8MgKhfrmsoWUbdqBPlLKyC3YaWqAGOcEdDpFSCnyKShQViMoViEwFooUrkG3IiJpTOuhrbZuYU35+rt18mlOzv2qt8/OLV6/nBqBKzeX4gPnecD43o9e2HUwFh4mbKCM/QtykKLmVdbC0PDXziSWjhZO+u/DnsilxE87J4V0D7MkvCgt5jmwSD6mBf89kZAwb6pokmeH2W4ibqJ+bOOt15q6dOR3DZQW41AGDOeAtARd0wAUFuGAguCVkIYdrwFVWz8w3cTVANSA3A6oBT+0YijEofBnCSDk1KUfm2Q0urlYUV2tTY0BxIazRjQK7UECIYNT6hLs2pMba6QPA+UaHERhVQA4zCaSwh4PAmYDNTMCgM+aGXTgwC0Hayf3izC7u/c4H6yjt8D/QXXgdHwgUp4YQDuZGFpPUeUdWe5ac+qVol8kRiuBntLNgnUan4RoFCo3BDRehIaLI8muT/0HSz92RNnelDcQZ34TCvS0dxcpmScQLd8Z5ptrdnBt1io+K4qNBKpbxQCu0wLkRJdQE57ZA1FLbNjvgmgW45kBwi88iNUgblnPl/rHsRe2mW1EVFS1AUQoXoqh8hSCW0DA0NJTvgmgFAy7YL6EEEC3EU+3QNUM7FBWCcKElXCFXfQI1AOQSslAIwoWWcJABVusLYRMTs/CGdj80xFylDZtfrkM83qEdChtxSa7Q/V87w9IV5tIlu0IrLwAZsSYPDY0GgugshbAONxbDd0TGSmq40aeGN/Rljxsg49j03IsWVuLn9xc+XaGxPXpMYNRf3qhMKz0OLRDXIzzw6TLOBj3YyKbr16Xje6drL+YJTr1QPrEon7JSQU1+ZDXLSc1yUrMEPwTNEpZ77ECEpiy0dQr4Qwc9sjuoxnF9WNdf+6FrpvoomqkOZgzxj4ecTrbWsE3NLJpXGCICoFpkTFbDnURMf6wlPUNaAGNfjxrkPJsfjiiOBga5CNvVzW5xB6u4qFY8REJQYmx0zo6GJ5QZLhQDYSwhC8XgrxjY+AOGbeQiGUJNEzKAwHhmn+RFtLp5S/itZt5Cfgv5+QhIEJK/5ObFmDOwyh0z1pqpWNywHjhzk015YO73DczX90GW92EZyBmWwZEMfbzVX0LsG6/czBgL9Hngq3czS3H8hW2O2rCbHO5zpgbKv3fZKPDApyODDEcEee3oIOMRQV49OshkRJBXjQ5yYkSQbxsd5OSIIN8yOsi1DLIM0BsI8A2jAYy9SCbsLkXaKbpE6TOdJfSLmG+60JBL1eBLU/roB8m5XGw/sKV6sRlLiC4WCnFkQ4ddungJhYkuDvlp7AfL3NeTI339+PMaTN4FWAuD372HB3b2iLpBm8HxldrBY68eJ6fhgmzCEupEsoR6DLCEA9zy7eexdgpTkjU/Ld6aEwO3CnBbdhtSANxCCrQDK5ICbtENSrlzfeZhLgJmZ8C4e2PqWUucn1uNPXhQYC0CezPXhPxdqU+KnOSGfbL6SF6b8bO9XvbJjW2BJHDulTW9YsPM984N/DkH65F71KxTmKsPOt1nKxRqlHwWSyaH7UWmqM+dTm4k9WEKkphKdjcbtqtSunY4OEAUCI7t+J/cOJ3M4uXYxjTk+6jZak4hhdMJvKFOq5tkFDd9/QH3SuO4I+SrsBXZBcXsn+/4wN5Km1F4ULWT76A+sYtmqYIY4eHkl5EqrecE1Eog7HfIxToul5VDev/D+wXSXkcggV5jG51/3CwQQ1vHGu7prlPtMBOVA2t7Dts1ZsaUQXMS4nisC0RiOFag2GL+I99aes1d9K9YPdHz86tByI9aOUx1pWi4XZ+tiahSnxibGJ+Y8CZWNCcmYseEJxNoHbQqk+I3Nsar8k/HfK7EJDqIJyI0WbxCRpDcxnA00UZjy14bnxyxUYTTCgcqctq3CZu3hkdiWDlvfLJA/KSJ97gyzGjjS6yelylkHxua3fr2ZYIIaXY2FsQJXD9voUin/WihmjmoWXKCagZqHmfNF86PckbBzAVmrROEGfjg0cd8ofJRz4UpI8zc7FDGWgO5EEsfzqvDnDocLvQxGi4oqFQrQ68x9JAPTlxUmS9+wwLx6xaIpwXiJxeITxaID+eP50gxTQpJ1M7UX4gko5S39PpOHie91h1ne6G9LUkMc+Bs1qPcPnFEfqMhVWk8qu0SR8MkTMYJ+IvRSp18XBeto0EaKaJ68if77QYWfPwxPnIJn/ZQci7R8WLK0/Gg4mIu4Vt5cfj4167iQltciOKiftVqVxKMhk0bMv5LYd5N6/fOUj1TXKd7Z7nWFGKE0yS/nfHYsnkvE3Gvgzu8nGdNUYghT9/I7IX5yCzpH5gl+bgs7h+XNTvjMl/yr+OHv9Gh/lEZ9Q7K4r5BWXOBQVlTBmXYhfeodDHk6+bydDNNoG3G1pKQXyyfIWkT6cpsh9Va6/Isz0fMC2nIGZFFEhfzCEw6hK3rI/IZQyMfLFYvsVhdwCySxTb0s9iGnMWiEVjsMmGxbf0sdqzSy2PREnnsJHN1MxcmqX4/h0negptq/dwEShaqPG0JW9Vztsrm3sVcZcBnDyvCn8unmNvShHnsRQ1BQTeYMHZaCS5s3zucu57Xz12/n7NFXO9nr0Yve71F2Os1/ez1QB971fvYq7EAezXAXpb4IIhuIbYFOkpe8vvoX6c+0icF5WX6Ew4bitfJBXd0t4U0gwc61yydhQYgNBlZxp8XF7Lcyqnd6qL2VQPm8R1q10ag9n4l5N6rBszjVS+9a2V6t4TeLUvv1kL0BqmRvIugIjBUM+Lik+HiYAGdaKmG4gtSLaj2Dqh+Wh3o2DzCoTaPglZ3W1odHECrg320Cpdq8xAq4ILzqrkiVzcM7kCJv13ZvuduK1SGtU1ZW5Cy3Y7k9csu5Ro4r1pdOOsPPd7PZs3t6dzU/W3dJXxp3bb5ORUcvTM3Mhl5wncJdC6QWQIO8kfhoLRleWh0cfvkAB76ZIeHqiPw0G9YHjqmBnSffTxU7ZO3+gLyVi/kjWpGuznUKsmWN4gy0OpPg0H+RYsjx++rAcq+Qw6/nxx+Lzm+asnxgBqg7vvI4feRw1+AHL6IFCPENIjdSEqrdAr7l7+UancKOtUU5ER22mHsdyqyswKY8aKOeTaKIPdO4fjge2uq3pxjrlksObz8/etVaasyXJ/cr/AEN81nCv5tVdovW5iCIRM+alMdZgMOrA04oMDYgEM0XgDKFTbgYCF96EZOriaCvPVqXUbgwCpENaJCFJCBraRInqgIDgy7Wi+wrVdbghG42ObrZK9uN18+Nt798/xqwI+wHKbGG+NDf/F4vVIbd8eT8XFnfLw1Ph5JeHO82/Y73m37tfZQbkbZMMAv5MhqVcVwIHFw8hAoJJKZLJRBdE2WIJM9g+OeX/mSylpX4+WLKmualy+orGFePq+y2LwcVVlkXj6nsrp5+b8qq5mX+1UWmpf7VBaYlyMqq5qXz6rMNy+fUZlnXj6tMte8fEpljnn5RW4b8/JJ9a7uH6pcE8xawzGz3YOTqTIpmvNk2Kokg1PK0DVTEMPIEyvMr0CN/1yzmzPFjRHp65YAD5qECNahxRpn/oUiuxkICulO8SlJgbSSIh6dL/pxA3hODdyYyQkIZnDxMrPb4Jmxi5cZ4qhrdpuyoqFlQf0UKIc5Sw2adrlPYmymk5v4hXFg7zM38hvjNR2aN2aKG6fJxH6mE/tZZDBvR0w6HQiLiQMrCRaI9xV5LETAEYiAXZQnEFGZAuInGWJk2Yyg8er3Tj+i9t0IZV9fJKEHTjiTP0T8JseAw/cf5d+1BWnrZOGC4L+B+M2uAYfvb+bfYdRRqfu++X5WqVnFauZgSMG4qQtlSgjW1CsI91JHNCs5ZRGrjgKlgFEXGOAQO7io35OGs2lU6nMoRK+DPy+aogBKnTufKO98omLkEMxvgwgGdD1Op+txBMBlqOaIRoig3PFE6HgcimzHEw3seJzSKCqclb2UEQ1Fsuhhy0jOZ8vLpBlGw3UdcB3JpleA7e1qnQW6WoMx1ikdmLtlI2LdbLuTFZMAUfnMAX7J8gLu5wJeZvpyp011xgLnIqDVkY1H/DJ+YmCowLSaVvkt0JJ59kL+I5nLw36BIUkw5vJRUVMIorI6tlTE5MD4ClmKsKEhQnR+Jkvo4BdS9Gff6JIir5//GSPUWaTYA3vTgmzdw9gLmD/UKK0N+4czov1DLY2zrdRqyyam/XxRW9Vce4VMqk/tR/bYQzJpapu4kmOBJqWQgj0DWhWtFsqwexit04ZQuybKZAn0Hm4AGZHeYgFxRrSALJ3igm6hTaYrjAO/NAoNKmRXluy2WxPqR5b+TczQfIrQRt3xAepSoaa1ZDX3oKhA8H9oM1sMmAQ4NwchxiwNDedwZyR/YfSr3yuNKGaZ+i4mFdrO4DKgVh0maBomiKjZywRpgMogu7CDzepE3cxmZzwLT8vs1MuRqRcmVsXc63ddV81516l8/w91bbeReRNawCPnntSfTauy4wdBhvI+mM4vmM6H21IwXRXtXbBcFfXuZblcp2sndgqWq+YsFxYsJxAmBd+kn+GSHn4rYFYtn6CdIXHgOQ4MuniuankuLFk5PVxRXbUgsvsFZ0DpkuFqSYaBcyez8B0XQ06bUUrDHY2CAD/z1bJSpdBUFvUQt4EUWEWgbFkeG/+cPjO2Md2gRSlvTyd6i4NpdHa2dvMx6d6tuIPHZPrqltS38oPNUeZKHp4jr9MuDo6eq10y9o57yLluNvVzRUb+8xumK3JB2ek5c0o2ikDr17Szv6tcHv1/jilVWIjV7a5U2QpZhFl//e9PfaCMsuLcHzUV2Og8zwz6/vYIaEKq0PuOnaQf2JK604/kv8oLSoT8pS/vL/dOCiRzL3SL4c3/+3sCtRjeRKbsO23ZG0pV3H+fpMWQqqjlQZuSTC2//ss2DZXT/IxNk5g0/24xKbgSyuInbnsv1+drt/PfDvGn2vmI+q+Y1MiTszH1U4wJa9s5OhMgoUIrsh7BqxHEKvdBJOyslkVTBg4pDkhV8m8CxcY9Xc6ZO6AwTjUr8R04O0N4c2em7DlzF6wDvlDCftL4z3GVMdaIs2OjgbULBUmKA1DHzvPKqdQ7nPp2LO23jacMr+QFsxKdpQApMyzhvC3zdnedeiemKxotuqJUZXR+LjwHtjnLO/iMhcnv2vypshAc8WHoGghOgcUaIDGNYg2s+7ekIILQ1MJMHVsK8rOWdyxsAUAOQEbrbc2zA51z+Q05h89NslFBcTyi4I6sEm3lpNYiw4RCQ8iR3gvIOQ/KmQu+nhvuE3OXY7+1bTR7RueZyul3qiZsq2XWkfz7fqsbQIV/ee8+4Zwb9yG07JjsIqVARAXE2c6TvVkcMeLk/zXZQ/DyOGMl58DNNzOQtlw9oCFZi8h8sD/zzykHrrOdbXkSeDQxSrVijhhmFUHCOC04zLgHM4YTU2dX5lmqTX/oppvu+eK3D0xdN/0f//792x6+6zf3ebNGNQT7dMXwQ6oaFShtNL3J8q0/rVw3/dP/Fhfp7GkfULarLiRDuMPRc7vo7RU3muWrf6SugINqMFZM4GpS5O8Cp9jtrxF5Bc2PKMtp5EijU+U5kCrrHNP4jXEHulhws2vaTa8CJwURQlTW2NlQsf3AcN6xZj4Iz09MbK1UpCNxzSwAERUbj3CbxHpH4G88QW5yroBjAPIuF5EUHfFl5YmYu8X1l4VuLzSylcnkCJpPepoHt0D6ZYFOep7OsDjbmxT3wblvv4fce67T3rSdJqESELz/2Dr2EZQCYjtpdVY75IvG6AOI/vmp7CjcdEwKdSy6w//lOGqPa/SUofallYcf2XFppbL3EnKntMehrlwJVkWSkmfS0Ciq3DNplZSpHobhaPb1TuWW5HP7rctXB0G4Cqk7lIlrImb7IqoS4fVGoFQHoxkUHlCVU6RV8Uzqmy6cg5yrEan4TfGbqVRfjQBb6u8AoA929wEm+gflgh5qT4kilcrOLoqoMkXsRvXrSnSwut6B79+86DSUwik0FH7NVE4BJCqQHZbOE7zDHG+nG2+LrYUlVBBwngXnFeCi6P1odG+uC8UrFmz0orUdRBmXr1wPFyXiJSxIjE7bFVYI+dEbEUpE2BcRS0TcE+GgwZ3hDZ66iIaesJ0so9AFoaAgmr3c3v89sL2vWGJ7Q3/2t/jRjvffN03llSnS8sdCycMFWx9EcAqgnKmn+XuARtFtzAOzJcHvxOeOPxdSAMlgBSCN6/JeucIRsFUAV7W7Q0EH0Qx9EbFEhH0RiZCC5lEAbkcBOGUF0A1JqIkq9CiAHygXdFGzZcrg90BBmaUzBipROJueny/C9gKpC2U4D1sUEIU2AtSzQL1etvjLquvNqa7prlNMd+1MwM3+6Ns38ngg+a/9+ERlP/v56zmAvKnUz4Lk0PtMRzdgKFPtHspUI0z9XAxlXAxlPDOUAdGq8w5lqqbbSF0ZymD6hiz9Q5lqyet0V13MfBtlB5gIUne10uph7Ua0nNVK3a6KMUsaX3QUwPmiQ9WLnUk7dv2cUBqikA9fwc4f+8ZNaJFfAOW5Air6USC+/9glfkWo7lmqf8FSfTjJgQEMBBln6FhOnML04EZ3OMqd4wQP/pQvk0wzTfgN/lrnYDJXeCoDlI0Ox0QmyW8PTcIxkuT3hybhGEnyx0OTcIwkeWBwkm9ysF3bgmHtgTz5fxTJQWvF79rBY1K7eMQWgmueBUQ4Q8PswoBzGEoU3ekybfK59m8cMn7u8UkwxKMMmWfnADI754X+V9lvH4GtXup07JAzBEuOkSS/MjQJx1gz20FnQPRBC+CjHx9Ipls4GAhVclPdx/2uJDb4np8aEJzdf7vbB1NiPj8ohirJ7e/nFwtSSsKXyr75VCS3U3tJbtNoFZkUf/2rlXmSlMuQl+g3IuXNds+/kP6YalYrynE9vxpdOvP0lzNsHji9Z/utpI5uf4r5/dGXXj916e/89m8//XaOOZbddjR1tt/xMfy+9qXk09fbCbpNHB07mHrkHbKf//ClQ8lXUQHtcZI3mZ/mJD75eZJf7iTxybH9c7JNAG9/66kvek7y7isuOUS+jZrcdojc7ae99xvPv/8JDX73LJipY4cOHjx4pPVYxOIPv/9rf/bxl03/iGPx2ie/aMP6n7v0RxyLb7/lH/Z/9jvbR8cCVdz24ccCLpX1zue53B+f+D87v/Ken7mkA+WSg9sf+rlv/+FzXvc8xqoX4RPUWoi6nfHc+9jH8HEuVdGLKmRmuJXbjxZUOZJWjm5/wf1P4FxfveRQ8rulCx/WMwzOcstR+aZnb7urKz7edoih3hbggPxPmCGeQ2bl7weVy2ATrmJynpqLGpScyQ9TT+x6npiydgHb7DQ+U90mn630vSGXT5luS6ATusK4D4JLLtK7bXIBoTukB4KpE8Akx12RiRNTkcnjrsjaE1MROu6KnHFiKrLuuCty3ompyIbjrshTj7siDGRT6ggQI1zI4pGHLDCgWCAspQiBlV6AkOLFa+XPZUm+xxVWmyvMPIXByZrmpF2smES44nBHwsmGE8IdDnclfJ0NX4dwl8M9Cd9gwzcg3ONwX8I32fBNCPc5vCrhxyoSwS+IqXJMIDG/b2P4BTEBx4QS84CN4RfEhBxTk5gHbQy/IKbGMXWJ2askhl8QU+eYSGIO2hh+QUzEMbGtm8rrZmJijmnYGqi8BiamwTFNW46Tl+MgpskxLYlp8esxjs0SubwAHz4n/BL7UlP5vPiBz90sk3oHzS03fXkRzECmcQnuQ545BUckai47drEt68sX4/bOD/0pY89fH/7TyuUNBvU38vmVv8EnFLH5vP4H5vPQPcp83nWPwuexo/L55aPKJP6eksTfk8//drJf+XPmN/x9luWpn/OUMwduGqDvXciNBwyEYcFqhmF3NEpMjQRenkANSNABE+apnCFg4jyBOx+YJE/lDQEzkSfwiwTMk6oLFDS1TTe8qLU5pGBIUZQnCOer8Rl5qtoQMOvyBPX5wJyXp4qGgNmQJ4jnA/PUPFWjRJ5mNlcAYg2lOHwqwxJu5ZmWVf5QgVV6po3ZJ+7Boq39+Lu/qfAHZO1ihkqGm3c2fGxTBStzUQ6BiTnQi6CIYg8xj3yXYSgy/Lyj4ZPh5J0NJzIOS83DBXxw9A7ReMLF8KJlGHsnZ1cZbpPKVCvKXx3jsNOJYMrhQHKNIcjEVxBfiXY7zh5BiipMv0+l6tLXJXsvuSV1PmhWDl5p5tR3W63Av2sBqYK2YIo+E9VyMIrc+ndznEmVMqm7tVdkAprkXUbu7uhnJmIucU+TjdLmgsQ97iy+ndnqnFGgRmNUARc4ms80+FQa2jJqpTJqd+t6UUY9oirVL9MRtK2AiWFuktc6oB3wzbv1pm1RDUsQw7t1s4DYhO+mY97bdMtkiDhBlZrPZn7BOXb8Y95IyJh42noM26f4JR2HLXsFvv5CtfVEVsG1S2aBaSVWNlaZOqym6n0U3HeXuYJDgk6hwFxlW0VNAuPXnVFK6+/UjJfmV2MND6j+9rTKepfwh72jr8koO40maTI37V9y8M5PfMx+7L349VPpVKbEx/5aaefEupDyZBeDMSZ1BcB0xEnXZBWWE36oqzO1m0k4ZhbKquWUTBJzrXX5AN247FtbYR4otoA1dd/2yfO3X/l9Xdt2SJ9arEFM3nXErFLddrSIP5KGNPWp9Am36NMoLMLv0kRr7ks16YM6ZehNU0EmCVcF0oqqruUqPlyZ0afzU/E1VFxrTrbrPkrvOqLPNFMGHWIfILoo03xgs6quW3/6pDUa/FN05kfoCbfKFEPql9bw9aUPp2cdTc/+2PZb//Ssr0YXjF38erAjUmy7pYRB8vcgktZUo9qH+8PX0Wl01i1Hk4fxRdpO9j7DE6B1eVt+6dD2r7wHwX95CU94jh6iU+nsQ3dpc++HPpLWNnED1NEAdQq5DHOnDesLe1U3na7rpsGq6zldeOsmaS6OpagcEkoDXicNaO/s6somrubTJq2VNZkKNEwS4aI2LMNke3+z0k7PgU8J4rBV7ewAB4CpV9EUcZNck67fpc8tNGfuYW01NdAE+jwkmrmPSbLmU7pGp9B6iEp1lz6fpvgNGJ5Oq6i6C28X4GoZV+BM0hn3HSL6RKrvRHtYsmXmesGzf75HP5xL9Xa6mtznspLVBZGZ4PX7Dn6C+e2DR7f/ybVfO+tJ4QOXvJE3gZLLZF6/K60+EwTnejCzTTEMvNVFiVD4YardguYtiV+qe2qif16vLWqyNmLAVYqmGOr51Gwz1AsYqoYhfm2HI/Vay6eMbV10Abt1xdpYGx5CfVpDTXD8ZagRGmot01teb+Fa6ZAjFRr29NJVynQenYESKETLn4E2PYNaJqalz0B3tJbObeMeGP5y8xWFavZHD7zXrChk3/0M1sqyv/b4/es/hY1Hyd2YQVeKtN/91vVdaf9pnrQP/Hc33H/uSyvjxtXEzfbMqXQNNM45BA3ADU+Thz5xcLMr3e8UrYHj5lVYQmzK5eBrGQ2mEH88VJnZxRx0Ci4L3AUCsFKMRSmucbeBs5hANIVHJFs4csmiKP+QO+69IjLGd5h/B2ldLtZtppHUoYoH6L+GQaZrDJXXshs+05h1ZCukN8KDo6FF15pLltBtn4sb+hi3gJVXul5EZj0wQ2RTkN4la9hrwJRrOXaW1R5iaZXV1lVa206lOBF/U2bnO8R3WHzH+I6Lb4tDEzzUNNKf3+i4SvSnruKN1rTxIQqnFzvbR0TALgIIWq9XR6b+q4FTQKt3pedmrl1ulghBzDbhuYzXLsZvFa1GMYIiF3W6tNwpeERFoUVLFS0XdrdcH45rGZ1ZiyP8pe/isNV4rI4oYHxRSAff1R1kGbuCtoi0OAdANmBY0Dvc+A7wXQmJW0nJDtlYvF0HeGzTVblBj85g/m4V4rHva/u6xOMn/T7xKIYinF6hy2uRi388g4EyMRSNiuMq1exhs3VPr0E4OVjcFzygPqCN0yaXiI8g34MMjBCACLyW4oreIwTSa5iuju19UOjpsnYfGW2OjKLvsRzZBQa4r4Vse3iwglC8aP9+RJnpFzEQXH6KAp3k3veZLM9SaqAfy4r1Y/krH/fxZj1YKnJs4Nh7kbDLIeWCsH67HxYCB8LyKlnfH8f838r3Kf/u16H2hn/f8MD7ur5/+4t7u74f+XPz/V2nEdpr/Tz+F5inc53Pz871fh5sA+aWMfBzVepIVeyzvVPxk/vxj/ITiN2Cp4uzHtz+HCs3keEyR/PYls2hU8G2ecomdY1fa2jzuo6mMdaOKE727zPQ1zEs3aDqOQxLNzlxixO32jqhRI9lylxL2qBxaiY3I4NewdEr+CgY5+TayJiZ+IJSWqlXQ9h26slM4VYyOoUZF8NJtAaDv1ZPIc9azXWEHJ3KUnzqLlxOxoPG0+7RRFNEs1qTPqxTLiRF8wlyp+MZy91kbX2mLfos4hvKwIGAnuizQb11nHFdGxeUWeqd3Yr2KrfKpHZPzFWOZjW/ZUgamIt+P4nlUND2sI4YMmDEcHHRsJCjE14DpA8XV4MXqHjwjXdSqItivOzLlQ77ZWvAUsYhbQ2FXK5ZcXWuRKS4Ff2FUpMj3KKXga8tW8/oamdUWTVCKngFyacNCiGFDeyHlfAa6mMu093FeK3JL9PVTZwGuly3MiV3Us7gYmLuq2228YxwPTGt2K0nyKUJxi/O41ZywMrirrdVXO3VGLK0cZmurfaqUan1lcVQ6y9PJLU+O5BaX1katf6uIuSaWTK5rnTcuWDPEIJtAsHWg2DmIah9RFflK5BHCE7+iOipW8HJrehO5XpztT3OCJd180NtcnAtN+AbepkuwFvvhFCkN8t1n0DLBNWoBoffIQpK/q+hpcSIZrwFopN8zoQ3udQWeVYh2lKbrWg9o6xGQNlrRZs4qTMKdchjJPAVQiu0ope7Hmd0FuKagiMxCblKCJzcb6pf5TzmEoc2uCXvUJYIOhkJ9O+11ntMGsX/1vC/gP+Nz7l7aubb2+Pwe8Rlg2Oq/ERcyMYltceb9a9T/I+pNQsI8pdjyjV1YIzvZwMQ8qXCBldmVixxfIkb9aW6yl/VTbIIuI3r7KGHfDbiruSqe5hfbULcJmYMDy46LsPXs1mEGbgnUrxLx/j6TpDLlNzlfYVOMmW7ycTc3k1jegI3dzcqAHIZbu5MvgiC2Su8V+WXdv7/pF11YBTZk6amJ2yCDqsJ+tUQQgyCxCbLhjRxwVl3nEmQgeAR3DUZ1mWYdXd3dzv3u7/O3f2uqqtnEji/HyR53e9V1bPq7qrv9etCTqPG7ObLh+PyCyJ3evo7od4XoM9HE5CO6mr5EBYGwJ0cloLwyCEe6sGTEcTkysAt4hJaN3K14f/spKK78lTkYWrDQCDvGBcKf2F9SkCRCCgaLKBYKKehGNM6ebrK2qGxXHkGSngmZmBmK88SAgngidkxLvVaX5pqZJmUlKMM5Z1cYayVqNCAnlyFCKpa+WqXNEw35sT4GlyjtyWbs2pveiycZx/L1KFmcJNclyycZyfX+vNSh1quR52F7W7gRqFoQiOaYtwsLWpOd69FZLUMltUqlG1oRVsnz/dlLcD8VBBvLGrmxUKxBIuxJMZLrV/LfHjgWizDtTG+Tqb2elzHN+B6vhE34MZGvsnt5ZtxE27ewrcI+624BbfG+DYs1UDdfAduxx0NfKdLFp47xiukkYo/iKSVWPkyr0IQq6yZNhSrLVmD1VgT57VSvFaLA9YLjcvtq0lUJEVFkg1kuyUdaEdHnNcL2/rKQKnxbLBeaKBubIzxJmHclNavGGKhDzyBm13iLdisMbt5KzqxtYG3uWSRumO8Azv8ykp5J3ae4F1Sxy6pY7jJ2e1X0oXd6Ipxt6cg3WmWHpuVXvSi5xzv8QJ0f+hVu5ewl3ifhs400v2E/ZIhp/tIQ3UHcYAGD8FB8qs6RDhIOEQxPkxS2WFKd+oI4Qj53TqqEo6S7jSUshl8TGmPUWrgjhOOU+gNj/SEkp4gmw6jPkku8SnCSeLThFPEZwhycIYa+KwW9RHOEvqkDf0qt590bvV2EldZcal2kd/sc2RvSvNdhHOEu4TlbqW5W2jafJp7yO5F9xLuIb6PcC/x/QQ5uJ+a+QGt8EHCA4QHhfshrfAhSqvAw6R371ZOEB4mJCjO51X+eelPvorP56SeJ7U+q+6RVJMeJTxCeFSEPqYkjw2QPO616DeG8BOExwlPUDs/qSRPeq32m/0U4SnZ8eeN4dNa+jRFHJgiP0N4ht7hZyW7yAE/R5DD5yjJzyvh80KYrSXZ/IKevyDnIQTVzpdPtpTwS4QXCS/REX6ZxCJ3+BXCy4RXaD+/SnWGp99ew68p72vCm6m8mfy68r5BeJ3whvC+SXiV+C3Cm8RvE+TgbbqJ39HhfJfwDuFdivF7Opzv6XBae96nutgv/iTDI/I/ILxP+IBW8ofK9BHhQ8JHwvSxMn2cUrxF/AnhEwq9443Ep9qoT9OqqzI/89v84fIP+XPCZ4TPaRV/oTK/JHxB+FJkfqUyvxqQ+TXhawq968n8RmV+48v0hX5LRvcdQQ6/o9DHHun3Svq9knrX1S38A+lD9UfNll30/BPhp9Qu4R9kiep2GvU/GsNpm7WTBdlIh8VWLdp+YaD5hRcEmldT6rcCVPxfV5CZir99lVWwTSr4N7+G2MWBt91/G5KqyUy5Jh7pkpnAMX9paLTdZEPCGTJb15jHuHd5zq4awxZ2u4UFAlLHFlfGPGjvKmUNcLawZg82k3NMwliVMM7D+Xi8cE6AuLidPFEOJ2EiJrUzkAPEmEUWWzPCIis8WNZkk5WrsqZAntntnOeSBuFGXifnY/LgkOxSUCgCCk2ANK1IzooGDPZiFP+fTNVfzRgzrtd2oZDabvJ3qCz5ect+8pshv6GutKQ/H3LRXHVorR0clDvDq4e6bL4UcHIwNK0pl7iXmbW/TaZrtDksMZb2Yrg/jyPM1OoaUBJHv6EbMuGjNQmZK9POY6RsjOxUsMxL3avMldlqroyvPUGZxyffOaEmmGEyrBD1leLEuEHOkenN6eSxyBZUVGdPF0bGC/f4iAPjlnlUkolCMjGqWEWRk8mAFMs9SkkuZ5YzVkxMxlInNfyOTiQmR5w7dO/NHZyrCdQGw5Qk56VW0z4wayzB+UKdH3FuULJsLjBdKEThG1yEAhQluFgIiiNOvhLcwNMg/5M8XTKnR5xFyC5y9gS4xApnuEcCPFNaOzOqEfW1Q7NRghlJLkUpZie4TNjKIs4M2RzN5UJXHtUI+kpXaRIisqWaq6SkKqqh1rVkjgZhT6qRhjkJrhYJ1RGnRskX8VzI/6QFXY84TW4iwK4wu1Geh3nKXGti6zTJ53rUoi7JDRBTLcGNwtUYcbyaa7jJJDZrUsktaEJzklvRipYEtwllm085g+dr0sQLjHIh5mNBkhdBTLYELxbKxdJBo1yCJaOH/15wtOOpdrCLeobKCvawHsdX6VFdFzgYf/6fOxgRR2wuxWZW6t11LWe4P76nOjXUdEpdTAz1fCFvLrKQgayE52F+kvIwMVyHLKj9VJ91RPqRNlLORlbI7BvvKKMZDfExzrPQICSMVu0YK1NU7tLzfJmUXaYdlRv9DYLFTVIsDlfExNlwDI7r5GxkIjvKOcjRzx6NFY6xFU6TVnwDj0OwLLDSXI8uniBlE+SLP1q2iCfOK7H71iGG5jQxg4EuDgtZ2BfRZP5GhT5g9bLIlbNcvSykJ6KFUzR3Bueppk2VdkyNcj7yVSUKMAV5SVVxFCTM55CpNfJiyP8kT5PMaaLyqozThXl6lEtQoswzjM5zP5I8K702bV5IgkuFs9SzNFQ3yjTJ53JNwBXqjiS5EuKJJDgilBGfElxlD86rUYWrkzxHyuaky0TzX+dqVIc+9aZzruiJ+SVRduH6ejLXd/e7/ovbrRoijoyTufuyHKZn6q9m/Aw4wekAZfRiSOiHY54C69sMsnMj/WpF2HGHd7o7LCbUPeRlZYjgsC43BWUtIqg3LmUbr2WyRtwOZz3bt52D3rsAUhb3GNVBsy0pUoViVcM9mktiHs2z/oYREauim8bpZdQRZa3428cpqnz+xpEXZeOIAfb6bPid10bYJxDXlwd+47URw7Xj2qgMBOV/Rsu49DqLvDH2keLvugnoZW+d5T6S40/+cO+gdZYHA463kbJXSn7/ngzrsUs+nuaPj2Ze8kbdd9/qvz+eK/sdL1oIznyaswYWgrN0Gc8WktMdBennycbJyEokYWTpDWCcm9URzmrTjmnYEf1CorQAWe629dCFXVCUSaRqsVgrMStODS+Gbra9NG+EM/13ud/6IInMxH/WOBponMgLgLznj6Ib7tAOV948kbbBW3JuD8uUQX5bvL2WnJqrsBx43cgP/PEU/ZuYEm1XCgErg702abaxKMUQQEAY0qoF6pA84fDGRQrdzI1hGhjgqKzP2EqoozpCcLT/2nttr1QlQqHiPn08vd1K9C9sr6xS0zg3c304qDmC5khjENAOahOFi5AhRz8+ToOU45cvUo79qtZf/ubgRbh/Hna52kOjezMEg3K6ycOigopBeb+h3gI5HyH5V6WvRentRRdjk15+TamLsQaOIksZ9i3ekDvkAptHYDJz3nx02GyeZo1HbUZqjEemcV75nLnxjHInGcS0TYHHFF47sCRzaSdfZjiTNeVyL7Hbf5yvVK/6A7NzzpnBWhloG+H4QnJE+FhdYd/G43QBtz4lZbwl3tJMv1iuQ9TceZmBicA5s3IG5IzgsJvDkxHG5HY1cJCrPVYB9t5Om8JNyIvzVCmbmho0M3XSg1YgZwUyaCNSHSz04KpLuAiFXIwiQ54W8nSXFHZCSYxnCO+MdJNnioCZ2qiAL2CW4V36LGAxd7gMpShr4HIRUIFyVMRYK680+zuCyMtcJSKqTIQv42r35N8+EzBkKsrXSPk10kYrq3avMlxqG9eow+GiBm47z7MhqUUt5kXV1EFdWgHq1RFyDJqKcaP7V0d/4R8cg6eiauugOS29Rc5aZAFPO1fDrXLWmh65NsNK5qMN8/vV8sECgS61TAwgSxbpwNfwYizGoj5egoVYco6XCuVSQWSUpJSXWeJBV3G+TsquqwzM0MwZfL0lgmPhhjjfKGU3Ckigmfl8kyU31+Y9tKOab8HNuCXOt9Ze9v231XwbbsVtfXw7bsLtcb5D+O6oDOSasDuNb3ntn/7B2WpegeVYEeeVtU8/XTiXV2ElVvXxatyJ1XFeI3xrKgNQBvBaTXJ5HdZiXR9HpSxaGSi2brZrN+dyBwTXElTLMjdgPTbEeaNQbqwMzLHMTZrM4Rg2IdbPm6Vsc2UgWzOzeYucbUlronx49g7Dt2K8TUq2pWdhu5xtNy6RuMOYd2IHdvbzLpO/G7uwu5+7bGy7LbNHk2IWZAu9fYptdWMPxQ3YQlcf7yMRvI8qzX8ZYQDXywptOR605V2N4/kgaXo5HyKr+TBBDg9Tn8BZtb/6h8E3Fco6QoJlxQXEqv31qcvKFL0StuOSI9iV/BwT6pO+nFOCB93xW9WGW+G00JxR4AonheasX0efT9OvGBb6hSZOiCum1SeAlbXrLqrdg/uqFa0S6OpuoblH4SmcE5p7hUZAKrmohitxm2JW98md+m82ZeR7qwOZ3TWpVfw/H5n+lM/AS6AZ6YeM4vf/zt7fwMl1XHXCcH/c7r7d93b37Y+ZaWn0ce7Vh8e2bMuJI48d2dK1FFuxTTDPk81mlzh4lyybbSmsbZx9DDjWJFGINlY2YjROFNYExTagBC0IIxyxUsgkeEGAso8IIjGsAQGGNWBAWZwgiEne8z+n7ld3z2hiO7t5nx+yp6vq1KmqU6dOnfq4VadwPHFanY3qTJEVXe2exxH2oAIT+kWO6WEIFJ/HqO8+OTOzf77CE9RQz2dVk29qMjQpiEqhnAe2wql+qMY9zF1qNc/z3CXyEhODfQ5OcRtX1rxHLca9F78/iV+q4IhXH5N7nI7161T0G8if/5rFrWJ5iJoYziooxDElMHxjH69SF/HjmGMWIAXYOLviUcNvERR/ze9QiZV9Xc6KjHGmFWTaCU//S7FYVsF5mZz6rD658IEz1Iavo8f8ItJ/Skj/aSF9PCzcrEbP2uFMu++3Oc89l+JwbCVci6NSLYzO4zhGUKUxrJ7HqMVFMF1dnJ7p4sSUR2PIoYEDJg1Y/OGUOPGy9ws5sK8enhKuNHGypkliM8K0ApXg5MG4cp+NefkT6vV7XM1laC6uao8HrQl/EsdU5ZJ2kZbhRCOtMLcXNCfhPS3jsnYhai1PUVbiKP6qqcLTU8FqTGiLjHQmD6TjhV0BAe2R/K7A7/uBFksM49AaWonzRmuJM7B5McNZzKznUW0lJkVdjlxhpkcrwYlL2OnyAod3/i9lGi+TjbBJv8P+Nv+1jBR0uDkxvK2m1k4wokKrqB2M49iN2w/3rpeZ6RjzuHLbZNDGQau8ni7cQOuoBbQrmN1iCbMdwi5UFMswhhT+Q8BCopHyFm6Xlw3BBjh2cCUcK7gKTi7YKClJnbdOBhuJP+rcOcnRPNKyeyWPtxvunETWelxO7Od29IQSjrdD/JgHyOtK9vXg49QVZoPkL8IJ39UimPC9SsQRvleLiMJ3DVXgvIaw8HsNFwz3GuO+2rivMu7Vxt1o3KuMeyUI5SwJhHZwQLYjB7q61BYLaMV7pCtVnMSQF9emUSzkc0WHOKXwR46WX+lvMBBrCJJLQwLiFtsd5mnDmv8kM9BK+GBYAGL4QGiJe39oi3t36Il7V0jizvDVlbJmOWPNbctN527+nqAzCX5EoU2TLMkhC8xkcC2sDZzLowppjOlJwmNt4fmhmOtw0jSohxeGYq6fpHo/aIQvDsW8dpIaOFP59aGYzZPk9IMbYBJV3m7KE3/N2x3uZtJo0yQxGVweZ8w5MCpXim4IvzGYy2SQBzCo6CJwSs6U4RjoFAEEqVqp+i7scePF0R2NVq3RCQu3+U3TgOO0HghjDKuLgUneTUARVGGzgJfBTjMyXYUzzs9MwcxyPcfRPnAkkqOu6FOXCtrdSSSU2kz+JVx6a07NnFXS2fqXceyl/F9lxyR+GX7LpH+pE4LO5qTfpDWcjcB5bYezkHnIowf90KFxhNrc81l39oMWX9hyNGt0WI5ddxtXJ6C2MCHH/62n9s6gwtmtZ10wJtoiGZkK6H0V9HF5QBmFrec/RqXxnRzB26PcQT3qgBChwKOWOesoqreNTfq2wwysyLFULdivpDJqQ0VJPhXNB/098vViXzf2ebHPjX127LNiH8mYgm2Jljl/eKlsNeAgIjMffGWS1tClaHsFWhEQ2aTgdgy3M3A3hrsZuBfDvQy8G8O7GXgvhvcy8BUxfEUGTjGcMvC1MXxtBj4Vw6cy8A0xfEMGvjGGb8zAr4nh12Tg0zF8OgPfHMM3Z+BbY/h8LhOxPY54KhuxI444lY24PY44nY24I444k414YxxxNhvx5jji6WzEW+KIZ7IRd8UR57IRb4sjns1GvD2OeC4bsSuOeD4bcXcccT4bcV8c8UI24v444kI24oE44sVsxEw+jpnJZ2L2JDF7sjF7k5i92Zh9Scy+bMz+JGZ/NmYuiZnLxhxMYg5GMXSpqjSH9Tl2Bzq0Eur0/aJO4XdpLQO857CRWrccWs6zL1ypmBSXt6Kh6FZQSZRUj+dofRyaEXeCliFymU4eMaWXmTtvzObCYxy/ReeTJdeKNoUq4V98RTaFKuHf/qJsCh0ssv8zf/aeoUsOfoVncK4edg6/8I33q6nWx0FmuNv7ojk+nC0PywPjZWpudMzUPy+TfbyV59cZ3jCLDxerAKgpVy42NM3lPjkydKMq8i7VZK7fobrfpkY0z8eELp7idjhvDmCiHuI3Wkh0PDaqbCxnuzRGW7z/mdjqmdLnfvFfpQ+KvT9FpEMtgfAM9NCU1H08PHsJPAyCrm7KLaGgC7+Z8XdYg+FLG0I8iMhCoUIlc2Rerx2ZU+Z5mfPnqY5gnRq6Fmhwnhy2yUUKV1vTzMzMZZ0qlmNlXRWUcFOizQ5PhseVs10OiU1A3wWDQmZYcStGYeUvru8pizbfylPwhL0t9rrqw4QZafQ/zDNk4Fl966SMVKmAnQ64cQCLI50Yt4UzQUurPi7TbgbpaDqO8VMLyKS0dAjcbYZA6oJFXcNEszrq8MQGH6ET1gwsX5U3DeXN5ezIvYISzAG6wiL/Ml22rjYSKatNv4kL0vxXh0Bi3MmLQDqRQLYMxwgPJPmeQnBMTFjXxuSpiQWBrm50eiDrFq4e4WcHz1eSMV/ZGXQR29VYlSca4wkYRApMxsQdTodcli1cz1R+gmJi2seiWwpjiMYqGnVCFFV0Px/5VzT/iuZf4cwdYiFX8X33ZvBMdhDOuKaOqYp1zFqK62d8OrWCcAlaEz1FlsLtMM+TT8W6EvzYQO1P/cRPPBlcOctLAyww3T6Q23TltNkgbxk2tIaTtlJJ0a0kUcQUlzrgRid1U0MzHEME+IBcO8O5doYJ0pwdU3HJZYOu/xjAXMijqaHUxlhiVyd7IIYPraLywO8gaaqWlxVQ9PnXzdGGh4MrU/d0rzzsd5MvFV0WaULTi0yYXFDhxdK3k/RtpG9vSvEG3SzueSodukoeJDJbxIZUERsO+5WkiAqKiFYkJb2JM4YtiTaN4ThARVkvDRnJX9BF0AuJW4n1Fk6RoAXGdLaL/XpvJ7TuXf1Ac9bXZjiVFXSRqoVUFb+FVIyOVGNA2EkdSdXRVMy1GQJB6GIAUcsA2gYgik27cazyIL8Qcb2kBYRmJNToIVD1qvHUYxuPajrtnHpbDo2WksPLwbwmA82qIZWhprK0S+82a3HTDVl1oO2aZojgFHUMDXnovbzRe3Xij2iVqKOqrivAYbUG3Yc8m1oZ01Ehs2WovS4UGgqWdo+7tBFeVcIBd1XuGBJFbR7Qg/bktAplzIpgDDhXKc4YcMaAg62GWXR2bDtcBd8YNh6M4jJS2U2k0lwP5AqFu29NqqRrUxccFDojmQXxsTpLEVkBAZU0ARUuNt4+i/twnqpP+FcCjKGyWS9Ify4KCW7JGb3BaRgHVMO1iiDGag8bH3SldJyrUh3nqtF9U/t2W1Oyd8HEY0niMcg9RowFORmPrKBs4S6Okpbev8vavy1ebWnHhncqaMGxWcf/Yy7boy306Cl2WtSWHv3e3dKlNyCzClK5QUtStW9HvtTmOHZ4oEdXBjqnB8OLPEM2A21Tr4WWMZKPAWYkGMOqEVeexxB+dkyaQRUDS3tklL1wlLtglHbwscw0ppNhdoaeFpK34uRDPV2nLFSWIUlEr+Do3KTGDmRNJyV1nY2M69Zo3N0B1I1yXg/oMJ3p6+a8eiyr46J5mIBFurZORF5K185MTbICiZ3Q4S7sLr3/Ss2SMZiz4uks1aOumXeSzwDIkrt2MlvBaJEel8dHj8tL6nsdGhs9KC+914/sscoe95XqrmY4dpNx2JWpj47Dea6vtG48onaERygfBLo8iqOm2aEYgsPJLJ5Akem2LipkscOtvpNagowctLnoMiNyKD8afzvRgFyBDsYmm4iMpTuZTIaoL3BoPPn+Mbqr5B2d1Dd1Ut/QPoKJWQ3IOmuPO4WyFIP7d6aFokN5FYzUCmfcKJPMGicYy6xygm5mnRO4EmSiXepi3s1KjP8lK59mWmUwHQ1ZNMRrnwYIyBaN3IzGQHbIK1kECWpHV23skZkBjODY+iEJu91Di0Ucm9Dl4ji2gXXNCO4UVc2Oqa4BN7pm7pBSuOBnB1HFrap3OvgQ12F6ohvPYiWGWvgxEOyUegB5GVAPoF4KBInCti91waOu9ogxvZ3chXprIVpKZV9LZk+dKDnq3Iq0zhg4NIb0qBhkwYZlZTlUxdWzosFca1/kuGf5i2Wb3Rd+M98XFtzPN//YqXCVde1cwdpZKq5SpOtiFKaqPjTfEfd9Ldc3fqzejR+r/tj74pti74X/sjv2v7An8Z//Hw/G/kOnCmh9rV08n9TRXT887kqp9VR52elkW8jBvFw9Y9SFhHRVQrRLFcAqnf/YYF1hQda5BUHiZDnYDTLfH0VZMQdDs4NzU7SDc5MsmLdFC+ZK0iG3U+g7tNUfF1QPqNzUr+vTdijBm/vBLdFBuCIx9ObMp8sy0PFVsgN8fJVsQVc0pfcAIQcE+ba5Xb5t5nlDmy0orwvQmyo6Hgu+xfgxzFKYnYbZCnPTMFdhXhrmKaybhnUV1kvDegpbkYatUBilYaSwtWnYWoVNpWFTCtuQhm1Q2MY0bKPCrknDrlHYdBo2rbDNadhmhW1Nw7YqbHsatl1hO9KwHQq7PQ27XWF3pGF3KOyNadgbFfbmNOzNCntLGvYWhd2Vht2lsLelYW9T2NvTsLcrbFcatkthd6dhdyvsvjTsPoXdn4bdr7AH0rAHFDaTTwE5pNA9GegeA92bge410H0Z6D4D3Z+B7jfQuQx0zkAPpqEc0o4Ldd7CJlgTG9T+Dnbn2H09u/vZvZXdfezexu5edm9ndw+738HuDLtvYJe34/3vZPcCu3ew+wK738XueXb/L3afZ/f/Zvc5dt/I7rPs/jN2z7H7JnafYfefs/s0u29m9yy7/4LdM+z+S3ZPs/vd7GKj9C3sPsXunezOs/tWdvkE2vewM933ueX52w6fqGpiRvCv2dnQ5xNVTawWWAKwK/tv2KG+/33srOj7/5YdPvvNkoCTCf+OHR60++zwtHmnLsNZIjAWv4PyiNMJeayW/Muj+aUOtGaWGYzJrAu2jQrUEdOT+A7Ak6WAB3PodTZ21sbMipl+s+6f6B6Vnr7oMPJt9UKchBclSBJvA8LCCqagnDM+8OZB7hqqy3wEus7nIyeyKVmjtt/gv052bxTrfD5MjA1DZMPKNVgN1RzveljhUUc2w7pSH2TM67OxXdR+h3yZBWX42THJ/hzx363s0x3FDnEdXx9t4QYVVtJmmW+ybTIkmgHsQNYVer3OUm+Vgug2OC7dDmcTfQeca+kNcKbpO+FcR3fAuZ6+C85r6f+Cs5n+bzg30BvhrKJ/BudSehOcKfrncFbSm+FcQf8CTkD/Es46+m446+ktcIjuhOPTW+FcQt8Dp0B3wVlB/wrOJP1rOMvoe+Esp7fBWUv/Bs4EfR+cHv1bON9Pb4fz7+nfwbmbhJH30E4499IuOD9A74DD+gTOO5mZ7xRmvpP4qN2OSY7ga6Xs/gDxFVN276V76R52+fop3c3u3XQ3/Xt2/z3xLVV2v5++n3rs9qhHE+ziiOtadtfSWlrO7nLig63s8nUHmmR3Elcb2F1BK6jAboEKdAm7uFDlsyt3GtglIlrPrhgVYRd3rwJ2AwroCnZx42Ylu7gMNMXuFK5Os4uzAKvY5WvadAO7ckGG3c3Eh0fZ5eszdD271xPfeGaXD5zSNLty/4BdvnhDm9jdRJvIZdfFYoVd04sCSBsrNHwOEjOJDrmXFR5Zx8vSvBG3yxgjn/rAhs/ngmw+sOUpr5+F/IrpQrRhmrPAhwZ54JpcnP/u0+VYoAY1ashsk9jfwNTTw04kjCdyzO1qc87TWwFiHMml1fXCRbuW93K6lus4nAAfbNjp+3wKSU6+1dDFpefrOr/BJC3eA13tgTXtgZ72wNXaAzdpD7xWe+C09sDrtAderz3wtdoDN2sPvEF74CrtgZdqD5zSHrhSe+AV2gMD7YHrtAeu1x5I2gN97YGXaA8saA9coT1wUnvgMu2By7UHrtUeOKE9sKc98PvRA9ER+9oRd2pH3KUd8R3aEZvSEZnn/Hdruuf9U89bzS6fdCePXY9Y1NmtUS3ukeiBFdMDzTagDF4qx5VQ93fko9MpVw1MPGXceeOeNO5x4x4z7lHjHjHuYeM+btxDxn3EuAeNO2fc/cbdZ9y9xt1j3Bnjvuioe8G4Lxj3vHGfN+5zxn3WuOeM+4xxnzbuWeOeMe5p454y7lPGnTfuSeMeN+4x4x51Rqm0yqIqrbiQSutApXUHVVoXqsWotBbrD3yXYb9clmgZlTYmKg27Q6zSRKeoOln6gN5WdTKm6qSr6sRVdVJTddJQdeKpOrlc1clqVSebVJ1cq+pkWtXJdapOrld18lpVJ5tVndyg6mSVqpNLVZ1MqTpZqerkClUngaqTdapO1qs6IVUnvqqTS1SdFFSdrFB1MqnqZJmqk+WqTtaqOplQddJk0W9C9LFGhVoQd61xlxt3mXEnjbvCuAXjXmJc37hk3PXGXWfcwLhXGHelcaeMe6lxVxn3BuNuNu5rjXu9ca8z7rRxrzXuJuOuNu7lxvWM2zBuTd1YTXTZ7WKfjN0x7Jaxi7ntqAG9onpkDHoEP6//J+3xErXHUrWGFWmN5QJVleFiRiX7J9dCA/DdddvnS0Kw2IlDrhafyBQQe32P4auLWzFO9MP8O7k7X8vnJ6O5D5YdycZ7lxw40klaSiDCNRTc7kM6VCri6VB2EoQZn1k95WX3UFZpmllNfUvPRtdUOWUVCLzonLGSVbCGV2azFQY2VcFimnf5G7BZxkbZ9ZrCJhch4kGV2XbzJPMS1oj91Q64Bl3rEINursO5KPfcAe41XzL33Jh7zW8998ojBc1JTpmtWfyI2T8NO/807Hyrhp2Oay9ZDr85PJ4G/8rAScv/bLP/Px2YSU5afuvK/t1fy5Y9j7I/+JtDpzyB+8cDuJ9eBPf4V7O4J4dxzQj0EhUDDmveRNtHH9ZEHD5uYLsfn0UyBzdvGYoNKtEhzkp8iLOyCcHsvt6tTArfVBVEg+HI4Vt8o4Q7TtvxKWW7HsJ1KMTpW1x1FZfHAD2+eROQbjJf5PTQZhHq63w9en3Ubn7zTfmR39uTYfmPu+z/8w9nLY2r3R+x18dcip6z2fMfkdIazPpf4J1/vaNefOJh79cRu+3A7C9tndMnAhZ9RAPPtlIx/AJXtcTuBv46WoJ1A5xydg4VC7g2Hj3DzxaJY3uuIcL6cckv40GgkhnsbASqnFyMOVeY6VU2u683E6mkl2TI+g5zyK8MA+n36WAI8nixZOlXYheW/RmgT8VSxTuDegX16YLlmM+ihbciF7mPcnOcX4lbTUpxJeOKybgSZ1zRjCsmYzedsWaad+K8dr/MvHC3ndV5lU0s6gMqNpXwAkAVm10c1lN+pb5fIgclyWUVh5ijXiRkNSqRjbjJgFtGWUjWbdpCn53Mr4iumh7Kp66awnBPCY7rl+OW0duatex7o17g4OZf4EY3RusEq1IFvwlck8bGyxU6zjbZwXm1IrE8eOEO3vYyAnpULqtSHbeRAhxixfZ3laqy/V2lFjarGdbiKtVkAlIjj2z+z2O/LZbdueAmnCbMI6H/1bX3FTlFFX8w+cDskVEUtzqDhuTQuHWSTXJJlWqYgcF6VIVTNG7BBM6RWfs6eEqCXsIWyCaeGKN6mkqWyBDbKvtnCq/XdFUgoUNC81EN1hk0YEnA0oAtAVsDrgRcDXgS8DTQlUBXAz0J9DSwQgIrNEASIA2slcBaDUxJYEoDGySwQQMbJbBRA9dI4BoNTEtgWgObJbBZA1slsFUD2yWwXQM7JLBDA7dL4HYN3CGBOzTwRg4ExU3sSvDNCLqb2JXgWxAsbWJXgnchWNnErgTfhmB5E7sSfDuC3U3sSnAXgmOb2JXg3QiOb2JXgvchOLGJXQnej2BvE7sSfADBZZvYleBMHuHlm+ARwB4B4JudAewVwIpN8AhgnwBWboJHAPsFsGoTPAKYA2ATHAkelCA74Q+GhTBPzhRLG0vYfX4rvIfYweci7WW1sE38xwviOovbcxXtkfznme/4oRzY46fnahxL+JHOwyj4k4d+6vLEjaiL4t1+g8PF76jnNaG7M2hKn2syKv8SdvyaOyQZlItB6y2GVovR1i6GVo/RNi6G5sVomxdEc/PRAGmFT+kAaUUD5IfK7D/8l2kbOOjj/CoDmLD+Nn0G6V3QGRZ7cDSnoRoLjycoK6XUmpRaEwVQMxrHFY2DrPgDI1Qv2oCJDIt80xiKGyxPXav3sLSCyuHdfpvYw7N0WxQnlAXZYaUvSVHcbaJjTq1zVZPAS1UMCKp3e0GVHFmcMzkwTITDWTLP4Kq9U5PqbWQ7evrMCSuAYiRBsCbHjCs3gwNNH/nqwBgWvjOSrTxkC6c7U7JlLSxbHarL6zsiV5JViZmiybzB1sOsG62HRHaMtmIxNCdGm1oMrRGjXbMYWitG27ogmpEV61slK94CskKdb1pSTkeSAq9KSlgxIlKNLFgFNqRDKKuq2NwaVDk5BAHKgUuu1nMqNJKbh9wwi/du9VerUBRUKFRY9Nx8LBz24sLxroxwlOMG6C7WTtUYjRZDc2O0DYuhNWO06cXQ2jHa9osJR+lbIhzkMdNXT8o0qrGolNQjKakvQUrOJFJyZpSU0BKkpDEkJQ3k5pAFfum9qKAGgxkKscgDpMoQSyGoMkNshtgKcQkJXA14BFxPA10CWlcDPUHraWCFoK3QAAkaaWCtoK3VwJSgTWlgg6Bt0MBGQduogWsE7RoNTAvatAY2C9pmDWwVtK0a2C5o2zWwQ9B2aOB2QbtdrczWGbYKsToDWIlUOjtAFczMYRIIOqtYDgSdcSwDgkxGUHWdpUwgWqYv44iVec0YYmXCA37pTKiMWJkiVRArc6cSYmVS5SJWZltFxMo0rC6xd2gV5vLAgCPBg3lEsoPvPyR7LixtNSNtEKFT6zCPgSPB0xKEI8EzEoTjqLypZOkMGUbarMw6wPsts+LXiU9VlxcPhA+a6ZHf0FzU4oHinVunpwxrIuPh45eYp43CZx7Qh3/4QE8fj1ZxQB8oWxeb9SuYdYl59qgAp0BVzJVY1nl2xQ/qrfmQLqmQCNlwp4MdFw7147xtFDsqf03GHcYUYfLmY5fYQI3nL59/7/sz85enRsxf8BhO9EzPbzby7QWWcG5Qiu0ERZsA4G0481n+pbKYtdGnm7rJ8o7/MDK5+mKVX4+WeQ1ph2a0zMOfl8JvARfpzCGjPOWMwcOC+lDzIpV52q5sVChVyMOCrx+v+OpUlxVfncpmxdeWc1NtOQSVqUhf08ZJIUdI6qSSYrGIpDWGYUOwzH6XcmiCHOaQWCV6WCXibKMcNMf7kNzeSiUj1eQlLxvmdHfKF3Bb9gwLUOliJBAlKVssMfGci09aNeVdVlPfMr4CFOC0oze2OCnIYDUumXkmM9hbwjQVGPg228TBMCEuL8SVHWriJK4lVNXFXCWo8ruUY2S5vzAUhavAUaUMldQ1tSirwA7WQmsQeJk6tLUOnagOntahSx3Jqq1ZaR0wjIEgVAYXWidRo9dhH8zBvZfkhTAzay9HUv+nZfb/8uCsvSXV40xwC4BEsM3uFpZI+p80eBl/ssOLZFjpBzmcXmjJfrFDkC0G1Im9DMhhP7FtZMqvGA2C2S/weDsgI3QQWYYG5UlffLfI3YMqHjaV/OSbD9U2sTpit8pbB3DRHDmRQB7A42YJymYbwew/xdsIzGrdRkBeucw2Qjm9jVBObyOU09sI5fQ2Qjm9jVBObyOU09sI5fQ2Qjm9jVBObyOU09sI5fQ2Qjm9jVBObyOU09sI5fQ2Qjm9jVBObyOU09sI5fQ2Qjm9jYBAvImAQLyFgEC8gYBAvH2AQLx5gEC8dYBAvHGAQLxtgEC8aYBAvGWAQLxhgFB6uwDBeLMAwcxWAYLxRgGCmW2CcmabAEE4DSpgUNchklQxyzH5vAyQDR0ga+zBAOmajtFIBsiyfInESKWPK0YDZG0XuX3OvrzIAGm6vRkgoZ+CHA+QVmqALOtoy27gRQNknLe34ABZNsOEKULzhrpIDZBlDJAZVfHblSFVEeP+/Nffl8H9FcVdcDD9olOos/HTgcexPRnI8mIjrYCDvbDH+xnrNsPuvLK7yJg2MH1uLbETVzJDaEWGw0pYwIw3qBqO6MhZ4CjTLoZ5mod8Uq0Os8q3gY9WVbNasAQvUxEq7iIbjOwHDmgscmpjMM1FGJM7J2V5CrN48FzsrFVFMVV5iVAXs2nYBPgP8oRwgyxGnguaaqjqdfUKQNw+AvWyUFuhrSzUVWg7huqxxNRXhfbgC9glLIhsxVuzXxoTCxGlfDZYNK0N1WuMCqTwWsNl2FEZLUrnvliqdO5eCs8bzt2KcvcyuS+WKp17M4XXHMBThEy2WfSsdWYq6ZegEksyXh6AY6VeMdWbo011PGQere3vCaoNS83AqSTYc34Tu0WeBi0EYxlpJO2eEhcv9o6ql5MQ6ph6mQavkbNQ7epJoromaqQQGgO5ykTbtEWD0tkulsowwW6g+gXnoi2uCEo71UYXMSQkaG4bbp1HcbiODu1V6IoqWqlE7JQcqujHngK50KplmEeTKT7sbHvPynEUS1UVMuDDTevIaiarivP69TleVXyjyP4vnQYwozSB+5efy+LOWAvj7rmQxd23CO7vfTWL+8FFcI/uy+J+Ns/+g7/xUnGP1kqWmLLGG/2qOKkIHhdFFVpUXPOjDOTEZwSyzy9pb4hfGcR4x0xXqJxPK0BFsjaG577w7ns4L79KOWKnZtCKMq2RvuFEvaAAUKQ/3SzUVmg9C3UV2oihoyS+mQhW03QJ04+K1FxIGr0kkeesmRX0JnnxCEE5LdwYuKmnUtcHUisCvurFhS2CDlFvzPl11tB+g/1JoXM+T/KVEQ8ZMwluKh93MJ86NWaRD7Vn/YaiZ4i4SOI6iGiAlgEysEIUImZ1/kROKiNnMKMG1UGFS+5chJ6hYiBx9hN6RUouJiVLsXjcfo7cWc55Fmt0KO0c5eHkyYbutqEDqrKRnzM63EnEFcq7GCtviCGUd1m9UNyOEwunlQhcSk7LsXcUAzIm9hXBCFyT8gtV3E4S2ZrISiFYA7lSEYq7qHiUznaxVMoJVx0rwxcqprV5OZVJOdsoBsFo8+JC5WbbsaQ9KNuSNgQoibPTcRbHOeT6FmSAleGcEDsbI+cHRQI4BLmYhUxwqljD5yMtmE9pwfywxlwy7p+W+J3X0AoLlMP0NrAm9TzAi+ugE+E7x9dqhXWhu0Ocd7JIwoxFNXRwSAARuN9mw6aFY3aK7GiN4LtUUDOsG/CdA/vj5ALgMgCB0i7ZQK6HGxmJ6hLP/lSUMZHjgKlcNK/h4XUYxt0ink/7NgqCrkfmYhMB06xURkJb2uo1vsFyfd34RCem+YA0gUll1EI7meYT1GG+httLgxiIKYe6NIbn7+jKMn+vUgMLgQB6h9P/QJ/cdwZ11KtBRWxqiXoi59ZJgZrKMFDWeRzj3odnNWTp1CRHisZhJ/48V+c72lBJnCOnxFgFalBamEN9ow3IIuYURaNMzDW9HNCylZQa6hUAbsIkx/Dx4mDlHMorA7SOFaoN1a6mtWtI7RqmdlqrnNaqQg5qZWqCFKYmTrTozMPJL1ANrkQZFdBPMqbpKWfqHz6Cj+3mWrvjjHNLGYvfh2Hrm+Vh/mMl5315S59pzT9AxehGekF4YPQK5fwS3njCljo6Z1CenS5ABMongspPUOVRNm9iMQR9BTc4yBKlwWpDz7UV+MuLLhJKUXUK0HYFfSbLwpLXed+k1cILr/GjOeH5L+TSBuH3friEg1c53L8NsGjX6SP/hecm+t5/w7wwNhb/Dt6RmiBgv4Cw4JqXcZbjvAvOPml6A+Uj65eiV6Tu4G+EAXJd2HLtxQhhH3tYTAhyZoznLjXlIitTwTLk4f4dasoA/jvMVypjPb6a2N+jvi+H5NowFY/H8NRAZBMEsutJqXnBl69KfbFHhIp5PBH+fZkIt7WQuQ+XwgJrBSVWtyNK4fHL+0GHSjgrGIil7zHqwBk/sO1vrddsmUMrdmHFfTYJc6oCUnUEn4MnOZMSAhkspErlUoYBhzLvBIhmalEhnhAYitveH4Bew5Pbg4lob71HVeZaHU+lwOCf3yXHb1FNjAmWYM4ephg4nxPmZcR75x9TX87desh7DsIRv/t0SE3EU0lPPIHnl/ELRaXtP9z92Vv+6Ide2ELLHjPv6XziM4eePCCbx8A5FuNYW4Hz/HcdX/W+v/ys4jCGKWEt3w86ET3Is+VR7xcwfjw5zc/XQB5s73dUBqlDNnW9c+Z17lb4dTUOgdOSk5A9MWFRirZ+OuFzRbEoJCcuu8a4pmwu473pZmRfswf56xn2iYBRVQ1eVCOzmsXwTAX6wUUj4lUZgGMbnLHRTf0QYIQTOZER0bhVGlicyra2imuTHRLzq8beTSfC7FKPq9IUseMq6Yl0NIAePb41aE2me4dW2djnmMDpev6+oJXpgcpeZBSuAZQG2dGd6gkZbtnhEbbHzu7IhqX0N7WLpF9mikpyQ0n2IouNTIuxk2OMNXlMTyNNdzehu3trTDWDQbXGdBWvS+0IwdZq2ahWL22gUT44Cw1UlKeL+mqlscwI2qcZUjbPcHXgYJ+8JPm6ZppZi81sslOCF52bEwIX8tHiL3HvEKuAQmQWXAbYA3aXOkr6BHiupHeB36GylM0e9mbq1Evb3kRlVBRQGVRCTW92oJJLSZElZCB1ZgyOLIO32bo55KEAL3oeooiGLkpDy5h86iMliK5oV2wtwsqRzlqMlCKgvaAUh9HsIpcxyBbtWTTHom09Ft0Iz1yiEwPO3+j87H9M1b7LtVHCeayCGREmnUvadGJml8rRoEoN1a0RklLNxGFkjU5/W5dxOdvsP928CmdcpYhjU8z6aKhhdLz+xUd/IeKQ4DK5fknkspXuO2CUNpd2GNMcKlu2EgjKPdmKCmeIzd7I+AKs4wWwAZZk0MmkiYz8oTxMfA+WZNLXonrKmLCPvfOzGLc4xzfB8HKZZGfN07s6YAw3O3+BqmNU7OBEeRlOhaDxmgyb4GZH7obBGHJ6hmE2lbwvQk2qqqmCmIiJXW4yc+1Fh3hNA8oMtCQWMakMctjBLaK82L3iGBJWJTHUUpOmsBbk3sodk2kTqmCRrqtFZgoEeSg2VWBY8FuaPOfE6dGa3T45CRp3Fu3UHjMDFb4iJ80LC/3p2ntfQs1NpWWDrE8Nc26flZtbiRYxpfCn9aJCKfxPT8oi5msQin+YS1+oUDrSZqDdUpLB3EPZDP68yv4/eiR9lD7GPfH0TAb3bxbBffpLWdzzi+D+9QDulxfBfe8ADZ+oDeGSjf5gG02AHiEDmm87sUoB0IlXNoieyct5Z3wTQpCfKeZ4M2cLOm8w8z4qYzyRLlgT7XZ7MoHtmH6oZpn9MiRBJ4UFYCMDV2eFEGkzBTSaSmntql+thbeM246MC5NGixZoCwk5lEmtkddCSuYOiHh/Dd54dqFkmiIT9pQSe1kYxGWCqOpED8V6p5ALJJRxdPLddLLzWOTYFr8xLKdW01TTtFTTdFXTlKTDt1AggKqFO+EREfJA16Dbc+afv0x03rLty6w3Na544se3PErLHjWxm7Y+lvXphE8WJCcefRJz0GXpeWCsNLFSKqscYKZl1qjMPQ4dNmRIl9Z5wKeCkcVfhkKzPpQTLEsTUNIRdRl10jB7BMxNGiisx2bsVCu3jELvxgqdaUpNGAIIZOrBSjW48L1scGHgbchln/TLyaZNGRpGZgRm8mWm6gi0yOZjD7IMe+41hXb0/Ch0yc6gYFZgeTxxdHIduwgfWn5t4fA6BR5iN3xqnb6BxN7Tifds4n0m8T6beJ9fZ8bjPJyj63SIgO0jtNNnb4QxxKpfDFu+xX8l1GeMvePhGGOx+gXapM8cxa5UHu8uzqxX9wJTRUW+ogzX4ivKoNLhz9PrNfziOqwl8eAkDvLpjs8LP5X3i4zGyR6/BNlQEV+w15OgWJzgRSRACwjeYZ5NFJX6fev78aOUpQh75qfT2EcS7P2jsPdksI8m2HOjsPdmsI8l2AdHYe/LYB9PsB8Zhb0/g30ywT40Cnsugz2fYD8+CvtgBvupBPvwKOxHMtinEuwjo7APZbBPJ9hHR2E/nsE+k2AfG4V9OIN9NsE+Pgr7SAb76QT75CjsoxnsZxLs+VHYxzLY5xLsp0ZhH89gP5tgnxqFfTKD/VyCfXoU9nwG+/kE+8wo7Kcy2OcT7LOjsE9lsF9IsJ8ehX2aseHHDtOFBPcZxi0prp4+OLYOyt9os/NQNwI+vk6H3FA/eIVFv8ypjfbQXSU9ryb2iKBMHNVUeA1n/kbZEQ2rOGFQ3IWrlBb0EGfE0HroplRVjAIEjomC2Bg3aondilFfVvj9fWgs7GOJ4pGTFWbjtUD5eNLp28BGHEeUdP4Cg3PArJIN+3A1dux7fYedKSywbOxu1ansN3jkYxWL2phVt6Q+oxwNqlTEziQ72NvUI6gI8flAfHdpcVxRX4KwGcXFoA8r2QByxrplmBr12vr2lYXh2UpZ8TT2r4OmlNXeyTnY1Nb8MvkgpWQWh22Ee0nYRXhtEvaEKeFGmb6FD8QFcpFSBS+pQv3lViGh3s1SH76ln63A2wcqcF+2Ahelnjz50BQRPIpQ3S02hKafGAGZaELstFHxFSezBTK1pIbOb8yZIDlKycWFzz6IFSXEFLvVZ1nU/JKu4WHzWLdytHO3iduBO5SMngVZueNLg0xCvGsRlKG3jQOrLY3G4Gq8e43XTAdRaSY7KPZBnCqBU1OUX3MAnYjNjUzpPGQe7me4Nz4Nz5mpeLoS7aubJZaZrTwvHY1phJkQsqBhdH1x+GMlvxQrHt2RDA8dVlVVxPBm/C1w0sbmax78Ragru+/eH8ouYlesxLbQEbtQBrwXLvuzc9i/3Xb65L7L34oTsUUwNN9nDvoW2hO79dTl3XgIgdn2QBwVIQucoZxbxaAc0QGqmSi/GBF0bCkEXVZgil45aubS1BxMU3P0/wA1+9PUzKWpOfJ/gJp9aWr2p6k5/H+Amr1pavbF1ODn8fwwKUpI/iUQUliYEPMt76SSovPuhKzwceNvYy5k/DHPzizIMyzHWEPCVGnU6w5/ZGSvg4JilY+FG7/5z4pPdC5V+wx8CdWRyhxLKsOTE+ZrG57H2dOBZ4Y91agOpxdudx6kzNP7pvG5CsM8Jwvm7atMviG+rQGGvlT6j6bpPzaS/rgNTl2E/upF6K8q/UWw34prYL0c8o+kyT+6OPuf+jZk/+E0/UcWZ//8txn7QSDTz2BDcjsiuRPrlpOjdItF7aVwuwNCTR+Ff7Fumr8YoSezhGpnVW24Z5jb+DmTX1DbtC7O7A4Yy3W8b4BqqkILaSv05VEabYmXpHRaWo9szYYrtLj2+bao0dF0jY4tsUanvp1rdCRdo6NLrNFT3841Opyu0ZEl1mj+27hGWfWVKIN2UovF9Rgq0LlIBdpJBVqZCnQ4ylRASf8/o9CW1gxFGScWbAaO+PbWaC+/Ut/+Sm3plfr212svv1Lf/qrt4pX6P6/dSkupQ3uEditRO10H3EMoLargSqC+REWlvoADJeb+22OXW22+/5bfXYwOHM7P84HDcnTgULdTAyuc/0hJDZqZTdbjCFc5rHaxcC4FO3ElysMW6k7f4bRFuavyZ3pXRU+uYPPHIocdc+O8rieTAJTHxnh/yLfCvGzNFt6BJFQnazKoTwa2bxlDb0ApIPkIpJ2yiRx+g4vWi3NkMf1gyI6gMQkf3tsImpMge5BIJTEf5iXH5iQ1Jv06aDOfJzXHwJY7gagR8oLP0A8A6lhkTOTVH1WIZuLbmiYvaeTjM3YHQwtWONgAjT5eVFVkePN6yye+pEjoVczHZ3PKl3LYw7bcM0WzLccJCgzcb+FL/oViXxC8P1KLi2Xke4jz3Wcx/PhEn/LJwQ+GHC1hYE1OmZgTSZ4iR0eGw2du7PtsK/bIH1v67T7M67Vzdsflk/gEjseYwx++XDM9dgNkwZy1gcgoiZZeltRnaWe2vLVeAPLzm/VDha1YOG9uZXDsMJPGfEHmjoWj6ubobg/csfD4mYnm3hA9EOemUfACWj0F1ELlEJWtW+3BMlMiTLEaWoJJsuGsIDwGsOJOfRRg0rjLjbvszknO0MYOsY3jzZw2cPW0lxNzQV9C1wK1tHRSkJK6xEc9f1KFASoET0M18fHg5knGaBRyBbEb1VPOKC9mdlPvRx9S2De+e9KfdAucy4nt3yf//nrLo08yKO9IEn8ySlvPDeKwoHIf6YZFaoSFeyb9ldv+cfuXtmz70td/cgsa7ZEbJv3l5p33OtrfSFjd3Id1zDVVnLc39RaWMs/queSoUEGPCnGcyF5gky2Wal6HzmAjrsnKQkwLyLl6tUUjfQ65xOYJLZycPbtZT8UCfA+OBWiTowai32i5udLYm0YeEFFw/q0Japl605yN6h9oKt4W8G3ZuGj0kYmumuOMlulZcG5CcJ+TL0Ny5AZJs5gNjOosAdXmnHGnIj7rrn1Ia19gerh8v2GsH5KlmgRdQGxH2NIAtrnvHeZMW9jZc/w7WekZCZPuEVjmEvbQyUCTgdpwNeeJCA9RVskb/CigwoA2VaJNi6iFo1gsGkYsLLSiDjHM20hG6pr44A0D96XJ7fuuYxqU4+AyhOqjm70+0OxN0+xoKxHcpbR8XVu+nrR8M93ycV5Lanwni7309q/reegKaoxLEuZzpbJYW79sPgwVD96ACsSKVE6MrgWHasrWwzdE55lqKAQXwLUXNW+tu6A0e28YbRefJEaTIY+TNwR1ZbmDwmoSpXoMMEifWuHmOpMLYy3QpippReSB1JK3DeWs9QgabwBR5muui8iied+0Lna06mJHy0VGbpRRIznq5qAGGI4rcPDGqFyYNCLXNKKvp16YBWWprhmxDX6FcjGLgI5vz4ytMxlqorMlpIYFau70qxldZ4wFBQ7KaGDKUCY71n3mnK2lneQ/7GTknBpWsvV51uIuvwGSzfvltiIyZffB+i6jv5vN9jELqLKLYAjVmAcwfcJkZe4fiD62F1eE5O5UomGNKq0L7YvqwiJTB6v85O4yHYLJsrmT/O/RiC5Vd/mWXEtHTD0sJo2jMpFulagF7BTDtBOg8MNl4ZWT4ZU9wCtbeU42OGboTnPMWZhjdsQxRzlmxxyzyfnfxrGK3BmW6ULdSLlc1WQeinagluq0wWHDGjFsGC3RgJbgB28dDBvZYaIOiwQo5fEbdqrZYDv8Oqbo0WwB/AFPkEbnqTpXDrgrPL0ZWM9uNv3O1ZfEHT2rWCYLXZajl5SDps+bybrjaEa26sI9Fue8ZDraL5OO9jAdVSOmybQ9O2Xn1JxH4LAtn8FhOV4UPJPjlxXjL+2TaKRGtZArlSt2tVbMi1jbLJJFJ6q0SL4GPFXoe63A1nWafbtvuU2HHID3WTs41NAsgp7MkXmt2SB4KZwj54lZxM1YGtY0T8x+D6eqOxhZAXEDW8sN+BKpiwa5pV5HslzQg3OhGCy70zw61Hso4EOdDwWTItLL5fLTob/71aM3PoredeChE99Xz4O8yRExTJhQauHnxeKdTASmC1rR4zcEllj+2v6hhz5w048Xw2l/la4A8rwCABa8epPMHsTB3Rt3IEIbzPQZSzRuj1ZJLz4RrN7+29/xr703X/csn6Vdjf+3/8u3vfYPv/ODX9pyyDuLY9yHqLcULC7G9GQ3uQGLCQG4Y0iINf7SMkTHW7V9zU2z7scf+bXX/uSTUGC2Qz1tRzCtNsjFahrA7V+Fz04S2BkB4cvkJTS9xgfLTgSrzNWxX9/ytnpFK24AnznkE1RYJFk5IlqFQ7zpAuu2YzBYKMoGo5zCUCGavbNeccsqdYPCVV66cFUXEi57kC0LlFVaeln2QmVVDEdNqyw5WyXUzS+er6kDemkp6aXaR3fUtUZaH1TTSlkNecFY4TC3Ey5ACb77+SGzTMB97k/2ZHDfWxnCZVHAwzgqNnpHSOurIqPXFd+GikYC80ufOaTyEXFeiZ0dkAOu/6ooBTLIcwavln+/YjLIR83Wk1xmZzWtApDX7CzXXbWH6i4b6hG0GM3Id4zAZ57C3ULWPVAdHJJdF+6wcjHu0mLu2mLOwDzAvBhGZfFdKOqmjN+mvI4Ei23JYHPFXOC4RhT4BK3EHAYEYvVmLplu4CGexu4JVJ/RRLgSr1Kwm8c1JtRBByV8qPa4Go6OyQrsm52pJK9baJwPQN6r86HhjaOi0pmhcpybZyws+F3NU4xLO2pDSze3+vKybX7UMTLcy78vHMcCbzhvzmfwWhG2vIp6pchRTvgWe7CpaXY8M0Zy/vbXsiL88Sr7j/3XkSL84V/J4j5WxBm8r75nFO4TX8niProI7r5ffncG92uFIdy/L1dgxoaf1ngg/65ScjFhPrH+GU8AmBvm4p6FJorP3BWoFM6ATXls+oi/rhcqwTS9dIHRJcyZ+UZxqzGIo04Fm5+EbRjsHpuHLWwx2sJ6pIiYKlVkEop7hgmKsaqCqxdV9lM5vhBSMjelQ+4fyZQF9/sZT02SYh9VL/SXzLwd6z8Xb7G65qqI0BRtAd4FOdEdhSam+5a56v8Juerv/Y/3GVbJRhsVsZ+Onl9WpUPq3nmv9pXyQycCL6U4ve8z3FO072b+xZdghBUnPk4FJkfvuPgtta9K9Z1ygLaKbRpskJYKHNDbJ3UscttUxWv9dTz6MQ57prp2piIncfucHGFQOfFQ0Espct/TzMyCvEe2VOWhoCLDgccKoWyGFtgbSaWMYl6H7m52fUqgqARScBe+hKOhNC530rvoZ1UqcQz0QIuKSmKg5VF5jkpPzAVlGbGrkfEY+yWw1kpYW5TdFhCWx3ZHCZVUuwtU/h4UBOEx1i3MsVZjDyLM36rWe6nFtcQ7uX6VumaTgWqoZk3MNq4HBOfaE4ta2F/HDG/e2AdEfOFdYT7cze2YQ3UKlIdTvHMSmuatk87/ahSbYrHB9Mkzn0/Za7BwZB63EU/lsmdlH8nr5v1CFh2Q9PTnc+YKHbbfj36kaKyJjLbnMMKWw5kdxpaD7vEgT++i1hzOnMotZM4hsFM3bm1zBF8Mz5lqmG9OA9QHVVgiTdVA7KwaRpxRbe+kbwO6ZPl1QwpMUvlNY3m4hYTGHoSaGJcV6envSExBLB9pCaKZWIKwjSWINpqxo32mm7LhgJPW3SFLELYidtKWIDJYSLWQJYjY3MNYtDc5jqvNhOsVDXwNgH5Im1dQew0L21goqY0FGNpHG3LpttpZgPJMbj7CoEIZt53Rj9SSQgt3LY0lhXG0/bihTFvW1TuRbmxCoYHa+43IskJT45sZ2wkOp0UVTRtqJWFh8XY4BohFUxtx9/ieMMDCTmIo9tYAvlnbipro6mRu01d3UesdRgylDbJAvaEP08oFXEVNXwiwaFykoyyKaiA7x1hXiDjgSFKqxZbE2anIbC+uVfqmffQtbAz1yF63b4lwjpuLni296FnKXreHuJai6/VluV5vqaLghDNrkY7lhtPZQn3QNtft2/F1exFg4mjTzbI37XX1ehkXE922B6tw1942d+3z2bv2bWH8mGF8e/iuPdLtMCeMS4P3q2NWt8Bq1C++Tzl0KdlxYparvBkNKX0djvcbai0ErNRO80gec9vIWAWXaxRnmJerKrEq9Nto+7aoUeXsG4zCo3Z8jdkeuMasRsONdQcqcx6AQKJuheXxitkaARC7yGW9Vo9Mk7vRxtAKbwVSxSDpBOuB5OKtOTagWlKvYmCE1JxaRpEisZ1VnQwrjLo7bae1ZVvlDhkO3ple/Dq0Pfo6tLZdfB1aFWx0HxrDW+o+tLGS/WOLv2G3pJv7Me4nBi7In6qz/zOZOfnPt8slnguX2VxTNXlubr4TD7za0dzs6BqPmBC5oKyDKVDJcFtnQalB1ddlNmOF5yX5rnBmbs2uoPKp7ffcUPvSY3d/mS8eVwcuHFc/OWDzEx/0K8nMnLvcZHy39x3RMy247lzZiSt8ZkDUgdvdFZTfAYNZhL3rd+jbTbvga4K0bfxJdospfv1W1DLfl3mosd3z81seNbHjfGH7V74y9ZYPfe6vthx6EkbtT8SXp793UubOH6b6E3OD1mpbSVVa2MRlGsvv8NvxNwZoyLRhpw45UPVdQO/xx/RK1DjWqiyPmE/C7FTH75HjL4O2Tex7tGQoqGBk9ZiEq7ZDcwn/JfjUbPQN+qtbHhtm+vAt7ybsP1EDfZndXvT8W1n2snMCbPJvS+Y/MoDxeE1ijH0196ASO+nJZQVOhXrSkXqcuIYTEMvQv5fp+FcL373Z9D9wJRnTxlNjWjizeRfVkkGtQpUs1Ixq3fSoRmOx3ZmJ7LCWSQvtyonHKQ8nTx3t0h1Z7AcT5MaTkZDnR7EJAM24wIyH9bldnJ9aqVK9wwsltG5BuQBU3J8swzqX7HuXjHUrEqWSSq3WgGL2gYSKyVJVSyxASGiemaAmpKfFDksPTpIsM2aMwEhd6CDulvRQXaNGShEHlaQVK0krVngGiDWscr0HxExz9wxibMuIKqC+RTU0Qy3iXFdkUjm2DE2BePPSY1CKM0SF4wxRctmJDP0sAyOWaVvEBgi5OFtPPyVM6CkTUPOWMmGZTJgqygIVrgotS0+Y7F1UTmSrRrUMMDZpVEGdKlGdGrFwtaRGFRWubI686YrUy8zwoPSbNsw7ZihqRFMjWyftoPhi8/GKmY/XpONr/1+emknjycflQ/PxilEU6fl4BgupLjYfj42vDcy+QzaEFh6VmfYyM5XrmakcdJzRJFC0C0/RtVItYwxtcAp4sqOzy8GJoI5GOu+rmHlfJZ73tUwsOyc7w/aVONe0fSWd81VG21eqiWKyjezUhud8lax9JZX1nk56zDmQIkPPVIQ5zxXZAXmH2n1diUCmIEBirMJMKzErwYzCIGptepHxo+Vu4ZuaMAxPRZE3Tkw1RhqJaSVGYlo6K0rbkkvmQq4TL3PizmrmQvFs0yyZE6M5Ff0MmLZ74yMKWH4pfudDkKGW/DLXFmKSWX9rVlKYZI1cBw3SzHfi+VfMrXP7s1Omo032/3lmyvTrlWItvU1xNDVZQrZWtNWQWZen55mlqHOXyTwPG1tmtGUZjq+atjHIWB3s9vq4L0ykOtLtXXKkh9TRcxvkwmmmOixsNDdTHZpTFZDKVXxHur2DQAYLqdLKA92+Zrq9ElqIv5ApzVUdrgZ1QnVhnWAbnVBVneAtWSd4GZ3gDeiEI5FO8CKd4KhO0B7oqEFb1Qm1jE5ALDtHRumEIxmd4IlOcEfrhLqxdYsTOw7VQZgDnRBvmrmxTpATH9r5q0nn3286P/arIoCSV1XeV81SZ6jDO1GHd1Id3hns8N6oDm9ja3KpHd7Td8BRIOzCWZinZUhTA2z6QAbEQb/rJGT+1e/uyZD5j032fzHT06ii2qOSMs11R2oxZcVd+WimK2sBv/hQlg8vDhfwgYC/BuA7QPFdcPMPaL1dVBrLF3ybzmOF8VN5kS+Au32/EC86nvCL0bV8y9jUMIYP8sa+Xw9vp3/ua5/7nxVdqmIOI2qPfXnUCogCsd8giq+ArzNPwJz1/u0Pex9VHUBmlK7JeQDsap3KUxXus/nA2cfQU58jR/eHJ2dnt/F65IY579NIHMjbzXdOohPbKVtjONk9bjqzoe9xCHZ8Bzuo6O1wJTchrjJEHM7rceKXRR2np7KZ2wpV5v53GfQxEWkelvUSvRK5CNeUsMMvjzBOT5UU36Jr8hVRFFnCwLG5JXPsyMsk7Mgwx+Yijh0d5tjBJXPs6Msk7Ogwxw5GHDs2zLFHlsyxYy+TsGPDHHsk4tjxYY4dWjLHjr9Mwo5nOeZg2hCbKypDCyVKxe5jCyWlVeRdSj5p/7lPn3/APKme1S5BXfQLhilbFveZysxveyXVTFAdVDSE0sHjCmdVlqFv5xOYU8CWUVYBncxrJRpm6vR4ShMdNv4yV8NUNalJZagmaBbO7+VW5eSwxByOJGY+JTGwz2BuLpl7SzufCGpzyMAI05ERwjSa6vmXR3VjmnPIiNMgYWru9ojpkpysMSdp+AHwVJXSTYEGOPoSGuCpl90AT2UbYHRVjpomQbI5SWOFp4b787ElN8Gpl90Ep5bSBMfSTYA02LJepAmOv4QmOP2ym+D0UprgeLoJkAY73MNNcHLJTXDmZTfBmYs1QcL5MzrzOSfEySbOTXt/42+//O6P/9LHVl2LYSMTPjIQfnwg3MsGTw9EPzUQPjkQvhvWg3P9NEgeJRgGPT0MOjMMOjUMmh8GTQ9BNg5BpoYgNAQ5xI0OUF6XYwfzQxj7h0F7h0Ezw6ALA1SbuT4eVMS2+2eMAMnppp/5lRl8mpBZe1qMikaMqkaMqiPF6IQe6/SbZnZPzXgBC5OrXTlzJlu3BbmnwDs6hSdObP9n8u8rW8xqVbfLHuA43iVcKPp+ROdHR+tbRP2gEO6fz90SXcIrimHBgl/AgRWz3KmE53/mv8lzjchud/9TUAjKBcDM9brq7Ilosz/+nPGcKe/jhp7jMwU8WZvNVrOgwqeomsnWlmyLF89Wd7DBB7+QeZFS8w85dKHIE4CZAhrvyK8xzOfLtQ/KHidgV/Y/ZXI+9ZlHvU+nOFSOn5idPybpyuEH3mXaBTSHV8dJz2xJJSXQs3F0XJrgoCDKw/tzCAa7X4ALZcwb/0aywufzyl800GeyCqmI7HjsYWwy/qMp/5GU/3DK/3jih3PowyUGnk0V+ZwWWYPk//LIIs+ksjud8p9K+Z9K+edT/pMp//moVPi1VAflnRxZ6vOplM+l/M+m/OdS/mdS/qfTDPhIVCoKu/3TIws79JEkwSMp/8GUfy7l3x9nKnwb3VT7Ugn2pvx7Uv6ZOCNp8/mRGb2Yqs6FdDtHibFlIAxFHltG5vFClM619AkfFs2rRvcFKkBo0VkKLLvoZVReQC1B5SiqZ1CdPy4XyzgVGW1resnV9bJ+Ai7fhDO25k6GDUJgsNH7VZAr1+dD6x1+BV9bbd+G42I1knyINaaUMDMoYvObyni4x7eih9BliWNT8R2M+Y3VhB9+5LloHvXUz2PFJ+aMrjn3vq2PUfFTHw/cgQ+Y7iezb1xSXnLbSRWq44/z5P054r9b2cewYp8RbtWScJsI+3R6Eyf7yJDZvNOPbMXoqI4eznG0bsXYuUc2djGtKJprSvgSVQeMygMnc5zkQ5NFVhaoH5rqlIcmyuviUJ8OI13bDWTjaIm69Vo3LC5R1beSIvPSGn3kb2pm6gkDdb5l7r+m6okPJSwBTlw/3AC39FW45Aa41k6udeH6twMICgcUhbO4TJkqqWvBNST1+Z8Q4oEQh+rgRmTKXA9XFxhojoqYRCnS9aqt7mvp1+OEDRgwkahAhegrb/4dgYX666NYqDjOaJmTm/FXjKLmZAarYvjffwxbigze9/Oypfhskf1f+FDmFQF0KdNvqrjYWeTyCD87Jp2PWsUi97HC7tRFI5TxBt1AtgILTi7AeywCzgMlHlspz8cRVr/vL/lAwu/wcYkKVQ49KVOCj4j++HBqFGbD84ww0DMqnxx8RJDZ9o/YiDa0WOgppZ0BEw7iuafYYhgCPcXmrxzh14FMJSrwbi7jlJjzehX0vbvZy3nhjDgjMGvhMostKYVQI7H7CygV8Sk0QCyQTVATleJnRuAWJamwIn3Y/L9oO1hRO/xtkf0v/Ga6HWLcvxjAfWER3If2ZXF/wloY988eyuIespZOw8eHcf9jPp9/lzSm2nQgvoiYS46dRTNSNOhdf/zmk/E86zyfQWGm63BS2Nb+2LGbZret+qlP30Qsm3IY5c7JA5SPk8ezWCocIEulZy4z8jgvjJXKu8vvwgn52u54ezt6z+7COhygekNi3hqdS48P2CZYVk2u7/CqIWW/pvNuqFY24RLZhair09BzdjbMLuC57LjazUWr3XCoZhB8j7i/cSsYQ7YtZYibZohDTswQL80J9wA1RnFizm9qrakaH5lvS92Rzzo5NUFNaj/xMFerDZ3fAT68t8Q4pqJU0dPfbQwDY1Qw5ovHh7GYeXUaRyXwJGrgztK4mb7jrdVAnmyt4eFy/N05OUsN9jbE69fMuRU89iDHz3FPdSx6rQIcrXHRXRQdF5Dk5MtrgZw/9urafb8iN+Q5SY2afEq7jl9fYG/1xznDPPMl6JopTOCquR0U0mKcrjy+6T4sBaAIpMVIMi4Ta1xsf2aqz4iOsMA4b53kueUza6+Zmn3r9TkZjTFbkVsMxegrUElHwUJ4voUDUSct31zixLkoNS7ykNIC/QmOpEE5sDMNKOobKf2woKNY1y05NJ5CsDjF3crUB/rSio7hr1uAr6hAZMI+R0UGdzCCMTHRjIh7/XFBYX/57p1hibNjxMSOO2NF35SYo3/4pcKt5sSWyQKR4Vlk9dkbd0wmN+hRMEeuDTeaqNjOOs/HmBgC1bv7cHZMcpnM+HFYoZYvUQUc3Q8mWJ7hfWGdfKo1D2iPyy4zem59ZM+NuyxLx1xQS7ps7WJdtp7uslwMZsZBT74/vzKdtpU85Eul+Jp6cna/Rbb0WDvpsbY5fGa6oemUUZ+1h/tsGuvbpM+y25K+2kJfxa/voovCGjurrdMFpSfqGSy7Ug9qST3gSP9jD8DoiLgYFOcwns1B1TOT/rRIiaSZo0amu7uOyexOcE/ejZM+72qJ6nBBrvZ4RdVu76LbCwFcxJmhgiEuHPHMYmWHPO2jsUkuuhv+/pJLtaTEs1qiO1TiubjEUcqtG/4BFzRaoaULglbDofOxvp5eaVKd2spJU5EGubBGo0y0cYKuouLWVEYuV+W5UKXeGtdHtUgs2heR6ZopxMh0bXGZ5mFhAZluXlSmm4vJdBOdhfN3IM2M2oQ0q2SLSLQXEokaRz2zABvRJ97qTw5wc7nIRu3ijLSyjKwvSTk0l6gcXgIjqUyTiKihVmNLY2usKsZpDGnrKe6qxlAuqbHmhXoBZFX7wXAXMNzFeINhfjk6xFLGeNucGrpLT4UWpVw4VuBIyUVU4gBQjnyMdwLOvWmOnNmAU1oovIiRyFVE0JJFdGdRgLzU4BflTAqsbWNjtUTm4dOyc7JWKfA5EJv/9PHiZB+kpOs5zGz1RWMvuiOKATSaEB76rF/RxrfV0etcauDNxGObA9kYBINurmfWxEiTPv+sD/dGj4W/Ltni/JV9eqjFXBlrQlK4Xfv61DhM2uzE4kEwAq8fNIef0cYD0X5LRlW5gvew347Wf3rhh5PVzSK9dYtcq6yHj+elwf0ONc1wSq4aiZoXKdHO0MKpvqARfoXnUpaSrEYg4lQBSzqI5TlIMGYMCr1T3s2FtiZ3Z8CAPsM4IsdTljGdT7myDlmnpgLHTCeUCZjx0ZjPOfsNRMd3mHE1FeRob+PJF2sF4zPvxc/6XWDhwO0YzwGYn5qBzLnUopnY12pgXqnPms5xwE4HrFQg9nVnZyXzhj4d20S/bULUkPt9wjswrG42rbUo8LGT1PfxdWDQWD2f1BbX46YLLpUghvYgL7TKIDnFFVBvZryy98IhvVNsSjxgSE8jzIxA6Jr62Fqf3VqfbHVGlx8JQkJHh+rRJ5r6ID1zB4JxGjcEARP0DCNcnCAnI9ENiDB1Ma9AEmrJdkObJSHQg32kzlsnzfz0Sb+L5HlJDinXxKZ7OgxuSBYFtAjEshvZW+CACVI4l2zKHAomBjZkJj7pN+INGeRZpCLbjoHlIPzdOokRAu/se2RzdX09VuGX41fozfZdFZHVaDOrQl38vRVPQzuMHziqqFTTsQJkpclOGXu6RVw0t9mx9UR4vHdVjrdbGuF/VpMTjWj74gtl9n/1R9LbFyeK+Ua0c3woHz/yN3QAVvcUjT88yV/09AWy9X29SktyGSLew2RPOTqgb1MJJ1Rw/BUrctjH06eqipTj4MxbMIyXyfb+RJ9BpWKMIjdNqlSTe5y1zEOfRXMdD5qZLNHDBahPPZFaFRKDelJYgxh2NifvVrH3yD9wdFFst4JgpdPFQgrRqPZuOQfJqBf+y+7o3hQS+DW5xQ+6DD01bSAM4nly5DAo7o6GHNA6oSvElCwnV6rlmjY21dE8SnpwskQV5OBHn8FTBygL4aH4ZvaPj9d4W1KOQOJkc57d4gOlqDnPFeIRUE1N+JwPHgtT28LmnCq2fiIQ/xJ+UiYQZLSRXUoqT/o2MjrP6814pZaX9XJNF7vm/TSy9/FoOS7jKIZIquqVS4Ad87oiJAYjJMeajSpsQjcQOPqxUtBkIZgv7erLibhdgYc7uwzjOjGMQ22QXYwfKuukrdMFXTz0O6aabFy7tJwjB0QthgAgj5j1ouid5v0vgwPrYMCLXqsqp+BcrBrTo7IaKF02RxOzHGfeNPeg0TxprK5clyq+HryhpubEyfEBJkrKATsdsOJAJnv+JyV4KKFLTcYLmthPQRm459+Q17gxb7jwW06fJmjsiWDZw8HEtk98z/e+ee7EdUVMBzjeCy885va1vdVKRBklKpoKgADmaNnDSIXVONKNRdtFy2JtKbOBPNQh42KPgsv+VaePSSoyCCaoTjhJq8mA9dbJFDlMyQGXCcbXqdTbr8sxiiL3RuiAcU1yMnMoPYfLn5OC5ZyL3N4Ju7cJh8uwyqsHbWBqsMhpl+NIGyN/HLjUxSv7LGUdqgrvqjrY1MxTgNhLYVlyb9XAqXWfisiaf9RfjgfAZB6Whk4y9PQQdAXe6k0/nhcfSPBXKtf8diTqZYh1VUT9eEFEvUeAnbdU1KE2O9gUqtNKk+l5PPWPIiD7q9LlBGPU5OfPnjByz6Hbg9WvS4s+YCL6JBgtyH0jRqCm72HpM1L2TRzT40H+PbNxNrobGGN4ZulI2gnGyNvJ6fLUfcX6ghc+EPW2lixhuFUxHYMFr7rpE154/Lz0iXF0CJkzTJyITX69bTLdSzAWYb/j+CfiXuIu1kvGpZdgMoHdFnOMs62d4xntHFWzA8P9UXduTBealAYx3HXQH54RKqtmRwE9yCH+y3QbJu2jLteJIP4FyIZzK54CJIaQne4Fsdi7aCcyBXGS1YwdiYH/v1MM/P+dYtCT76GvjAjQxUVgZMOf+SYb/pmlNPwKbXht8xULtjkWR6PbfHXS5t30kOctMOR5yZBnmnx0W3fR1l3T1qtNW8MoLCZG3ivW1k20dXOorQtRWze/6bb20m3deIltfXYpbd1M2vrcIm3taVs3aTJpaw4s2NZFzCexkl7ld2iVeUo8NZlSOzGyqi6HBzEBiG3ql8O9v6jh59ep8bU+wEhkIREnBUtP/YK+8umdSDbzQWkzfM7E2EMxh02MOxDDJMRFGhKOAXOq0NPgQU6IYBfBEs/6Bm8JlcMXviqfZsvR2uZ3KjD38jvpW0J/Z+drqVMxxWQu/PQUpOVBmISbtwg/vGNRwlRHzitgjW458qou5A3fInxLJ7x6yTqoiIklfaD38Dq3gG5jLIffj5VRJXxQzTFdaKGl2POieO7l/IFbEtuVSMtRFvcThuB2tmSDRHK6BisrW0vFwRbzCq8Fp3YvQ2yBOPC64nXZttRtYo/2blBhr5mTGtewsq728evIL4tWtX9FLgeKS2seFiQFYOmB7lUJK7eBVATkJWTjc/Rd1OfWURGnBVxwg2xGpZJvu0VE5xFtPixH2GIxmNEdZdnjLGkIz0+lDlRUdAGeWVk0inleonPhOHAWfx/DaRue0U/6lou48LMWHzMQM1YVWL/6C/40tyGXC/BsqxQU/qVCwPFnmONkAa3zhnpJ+kT8qHJfeQzOAcxh5bBNFRxtkLftRSoYV1BYSFVbyh6lHKfmq4ciolgvilzchJuIZ/LXgha5Z6TVSOoAU8S2gxD++OyGpZNXmwG2AGwALLMrAg0QvfEMUkYWfXKdHt+wvxMJwvmY7oomRNYL061fOKcS8wh5rHxdmAYjDuilQjKmGtGq2m+kxdhVdsojH9zSLMW7zfsReekhanXEHNSqqJUVfFeWPody5K0Zb5Sxwj/+nDmP8fPHpNP/Ghrw8NMzo85ufPFH3pPB/c1FcF/8u2y+f7II7gsDuM8O4z7SzdcjxbN/Q7ypYhRKMbN0tpTDyW4L7BTyCdpixqokOuAQkCxRVoc+WOZXwjnRTYc++CMzM2f/iNdT57PB57LBc9ng09ngmWzwVDY4nw0ezwaPZoOHs8FD6EOPY7Wkus1SQyF6axw654JZwbNW4jNUqoj3boCkqbiKCNsM37shK7V63boSvmgyqCGDnBwc4wz4iZcNMnTWokw4i31DWbDYg52FPojBpj6n5pSB2NuukavnzubziKeyhDCII1SVEHwO+6CTZkw3d0ZT4lyUkpo8j5JQUQcVLtXTVISDhIRpWsIUOXtePjn2xcmxB8mx0+TYCTl7Xz457sXJcQfJcdPkuAk5+14+Od7FyfEGyfHS5HgJOftfPjndi5PTHSSnmyanm5Az9/LJ6V2cnN4gOb00Ob2EnIOGnMpociqLklNhYlawDkmIqYEYm2oZYlZkiQHAEGMCFRBjdvX1HQJczonugL5oxj8U8fhUUDckGSM+VPBtzdmvaZF+VRWP3kHXytVFAyKH+cvl2CzvFaOSOurqs1np2jYWZL8mSOmyvI4l0UiC0nRwr4DJT8GtgggOyKQFuhBzCvba4p2Ht0zOTsynBg9dm81x86XDhhNdKw3HlEPKFp3NxM+r6QyZgzpnxlQW8fh8yLG/bGHCPTwGFpC+j0Ooh6fUNBCmpKYE7OSB4xg+UQzlk8l1GdiG3ZiWmLlfLZpX+9VoWu2z1JmZNKzAok55Zrr5C2ydODNDzEzaAMrRNLyECXWJQAzqzvNmpo3dMlVuwyT1OQQ4uTzftomb25xDm6rn0rJUSksRJMivGSmqGikqqhRptYyxAkxcCzhAP0qCCphMviISVDYSVBYJgluMJAiBqkoQvDWVIHjtQQlSC2Pm2OCQIOFjCyRIvvugUlziFKo8ZexaDcyuS/wdzhiXKlAxU9XK0IR5ypEcLK4duDkVTZgtTYXsxK0Mz5Zj9jA5o5iznInleWD01eZv1lfw1SbPf3VxtbmPQMrxnk3OPMpSwswO86PoPxgoe2Tdttx07mZQGp0WqTzMhyPN00FF/WwK3t/s2862Y9f2tlDlYb8arg/HqBAZmA5qUFxMOE6a6ZcX/mtSQarswW6zPmaHyVmKABvMkVk+5qNiVlLPvOuGhG9pRfyukosPPEIajgmYl6tKgjgG3WkOFoxjdZMn2FzGta/4OAR6yAKHICw8foY2jZZoZN0idiKbqL/HXa/uWwjK2pqdwn/wu4AhTmuE1ZZuv6Ss/U0cFlLNd11zhGFizX41MkRjhuWziybC+bDo7ouuc5ZYDi29BM40W4j7rSjEHSjEfiUKKSXoJUcvJOEGQbS5Z8GxUluJ1NRn8JJGs+YWzTPTaF0qLZEQUGEtJhlWgm9F9eySFWe/GDqUuy6sJWEDvUK/MDZCWKHXbfKymCFincMw7ZGhvPcKFQQ5tuTImo5dugFPZcamKj60qQm4t4b5H9ALvFgJyJCcgboKdbNQW6F2Chp/a+QcsufXGmpavavbpFp4OqEH8bx3VJRDbSG94VrJRt7ffc1s5Jn19AUUfeIcgNF6mjcQLKNu+imtcWs9n2Tze1/NZvM5aI/3PZxeluOEKHWgYnCIqQxVDSS1rD8TGRkuxYalytTZiS+JVOayJqExx8mBhdw6ubCtyXXEG7UetYg9Y9q2RglDBVtm9MGHVzhFrYFqrCjOkjjoKmyW42uKX3eLzoDysmKlJcfzly7/5aXK/xiVkq6ORl9iObT0EjjTbCHut6IQd6AQ+5UoJGtZdSxe6I6hk4xRF043fZetxS3p+nWjvApJ41lzi+adaTyWjSUSBGqstIQsii+1XSjzMUY3e5djmgKhfKK6YjFdVH310M8HVFfdqC4czBuLVFf3W6a6cGoN5oKhuuqZVulpRc2XHiUincGYqrBRUSYLHMXFG5SoDY3jKGkRk4/ygv22Lq1STTG6OkoKq8P9dtFE5KWlHZcvl1gOLb0EzjRbiPutKMQdKMR++YUMdhMv7rceJMSjOpx6ut9qfy1HVKC/LpqnkpD01yUSkuqvKhmL4kstF8rcY3T00ArqF/fX8jc1wKalutHXqYdKdQ7DfVG7eWnULOXbdIZSfGkzFLcocxS1PVq7VWcI6WmHRR2Yk3b1sW4u2KUWsdMym0E81Ot5wH9ajLyShfzTYqSSwq+MWoxU0ouRRdHNYkRn8tq1i6O79v+nFh/R22DYndNW1M0G3bNA5bH7YiH4In+1NLswlnnaZPtHf/76fu4Nz25JKeITjz3pV3XTJN5EGcPchmku6OzCijVHWV8/5krxjBG0kKWvuhvLVWXdDTU18y0hHwoilEcYRAyoepegchIjJobdwI8P4ci7WvKcTVQXxzyQnTxpUaCivveE4ajc/GZGi5eGi+cP07g/Wmb/0adnRuH+4Vey+c4tgnt8IN8fGcb902X5YDc2AI3V4oKcEceO8zpjyhvsBac4P3NDvqJbxmhZm4NVc0O+Fl+0Td7wD1y0bIFcvIdQj06v1tXqiMsel7/yN/CJQR/yNo941/PkosVcRazp81zU8GuQVA7CaPSDfkWf9g8flKMwxiJj3a9FJnrLka1sC7LMBQ/WUzfhYiv7YTF63rWcsgBSC/Xa01DqcN9akFiGYZBGhGhqEODqjyMPSbi8xT0IuX8Ict8ApHYv//NrHOOhkIbs+AbVyHhI/XUjqqPMB0tiTgbcOgzWHJGdsrXO9TPz/hpyqkHRobc8y83O3MOesbJluBTNXxu8YEqpKypnzFoy3RrZZtQGQfOo0hkWPNc0iWu2Y9Of/3EYYDgF31dYa95rqck+Kl6iRDNyoQ8ivUhPHqUeZUQbiNUIcaMvE0hFrJIDxOEimuExTukhZSNKeY08QdTQlA1qSUo+XceIbSA2I8Rp7BRTUxGb1BldRDc8ySnHkHI8SrlZDieOa8pxmpCU3XCeEXtA7EaIW/EOOXUVsUvLRhexPHyKU04i5Yoo5XZ/JadcoSlX0EpJuTw8xYirgLg8QtyBg5EcI4jLafXoIig8zSl9pAyilLf7azhloCkDWiMpKTzDiGuBSBHiHf46RiRFJFoHRLSi6Zxox51GbKoKs9FkEayhMA+NEcGaCmuD7xFsXGFj4GgE6yqsB+ZFsBUKmwRbIthyha0CByJYoDAfdQMMMn9unT5ASRq3FtWROPQsclX8cbUJj0yyjjzM17j4qL+8638o8nP6rOjn1XR5MeJ23EeQ7OTfKSaCMYrvrPmwjAXSScv6rJ72WQtP4N+O08fkRNP4r+ZEn0UdO7rdYxSJdBHsLBbibl03Hdt8d1LNnJfWSFGRyh6PunO5OxkQG2kHmsXxqLjhTD2iFORDNmzW5nWlNs61nia6PproMoguZ4muDhFdHUV0PUM0Fz+S6McToquDRLvM4uoA0dU00dUlEr10TlcHOF0dSfThhGhHaRnBci8ovySWj5KT8hD15YuzvLwAy4/E1OuYS05mnEPZ/BWvnuon4T7OEkjYnq6zlp8kxyC54X4TZ0uczXF2HDdn4ioSV+G4Shx30MS1JK7Fca047hET15S4Jsc147hDJs6TOI/jvDjucRPXkbgOx3XiuMMmblzixjluPI47YuLaEtfmuHYcd9TETUjcBMdNIA6Tco49ZmIbHGoI+xqSssxxx01cl2Rqzim7cdxJEzcmcWMcNxbHzZu4ZRK3jOOWxXFPmbgVEreC41bEcadMXE/iehzXi+NOm7iVEreS41bGcWdM3HKJW85xy+O4syZuUuImOW4yjnvaxK2WuNUctxpxelj/FmrwD6+r5XeZ/K6Q3578rpTf5fI7Kb+r8es3yEHiqoBs+a3Ib0t+m/LryW9Hfsflty2/E5KFDd6zOpeh4gV4nHArZnSY95n7Xvt/R+57uXyJVyqB3aiyiTszHKcxflX6ChO3/7ezKHwjFzcyvjAAtTG/wregip4BYiXHjr74YSaTgVvPmRcxzQtb9SVPG8MHMZ4xLJ4x1p1RE3/HnIDGutB7Tu5eOvGyzI2WRG60zPkgGPjHe9NXef9mdX4MBupG/pcdZjmcl/VOQeuRF8JzVPCLehwTiPgqz8ksRBQxl+bvWmkbsLnwS8//CIjKRUT9vc3+9/9Meu2VnHRFweaKqJ+LWvGL+9DO+KXcZF+2KUwzKo1qQ4EY50uMM4yAeTHaoxjPioPSGxZNcFQTlOPZcVBZPMExTWDHk+KguniC45qgFk+OA2fxBCc1gRvPiQNr8QTzmqAez42DxuIJntIEzXhKHHiLJzilCVrx1DhoL57gtCboxDPioLt4gjOaYCyeGQfjgwn0MgGLAOUxleXJ5Zm17O1Ql72n4W1Rm72n4G2Sx96n4K1Tg73z8LpksfckvDWZRh+H16Yqe4/BW6YKe4/CW6QSe4+sVTJjOmIR3rM+qGh3qWARXWJHF9B57vB6zKzoGG+FCjzQ1KEf5Hj28+sgejxjLrP7PLsVg1h0y6gmVtlFqmCV7Ua5cT8s6qBdNKvrKvt0VV1jn1lNq9UQviUAt2bcqroY6qX3esjelS2ioGxmKChHu1jQCXO38Fk2v569f2Fm3ozYXnMATKF6uHFX4OrYDl4UyVNeeEO8KDjpNLU+ZluM/A4fBRcNGhYQDFQdtJeZUBKqHKl9yZzyNLW32ae1r6KGBOOWXEPjVuByUmwvxq/O1jH7892IkhqOtcpMAHTUMDXTsl2+u0n5fkxBkWoXo6BI/Afjs2QbtwLXLw5TUFOrFml24ESrdklQUgDDhOkc1P0n7AdnyKoASAW5SVFREiqGrBr7lCyYGeE/JqdENeNW4UJaQVbFvBAve4MZsnCsVfs8KLLDvN8l9qKJB8koL05CmfgPR++oZtwqXL88SIJrOYnse8b0bFb2macx74sJ743s1yDx2v4LyoORfSeRfS7U89tUkp1Ucyh0BjREhZaJI+LkFpKXQHKJ0yIpqFQpaePagWEgeoUVmBV6A72ioh/M4202TWHLZ3PUtkptUzxYUI7icUNSa1c2dQfxWnd0Ya07LIFYRvJc4zrGrRlJNLvo5ghulXMLqumphp2qfTkqVoyKmAzMlnIFta/o/jvsS1Y5h7Q047yuHT9fmlS9mao6C6JWvYmq1wTSpnhK3k9zAqgROU7MBTfmghVzoYCjvkbQLeO6xnWM4Ge5UAMXakvgQolsk8EwF5pUzXABDHCDVtq8qppVAi9shPTGbYofZY6Hk2ECNdnbHORHhROCZ1G3c6gSs6QSs6QSs6RMBdPxLOO6xnXijughWz1gm2IJ2fL5OcWQStLX0/3YyqgS2eWMpnQybOIkgr4Ja91KOcnh1j6V4LHZU4bHvZURRPGfneqb1Eef5tQMlo4ZPTMJlDNTfYIiNtCSQk8LtBhBiwJF148gOZ4dTFE+Jax96oI0nirwvMncrEW2VORUbHEEkVQ2dx5x2ZCKsD3MAHN38SimI0UsJnLk7UKlmtj+odauPsZ5WSZQRexRLa5iOGrHKBXDqWGnWU7YVnYGsNltRoeCWi2JtUlsstvmiFheVDdFoxer/1hHl5JhwggLaw7+z+XZAlzHuDXjVpm+ojHtnTT6A3Gj6zerSqqCpWTQRAYVk4GVGRCdhWdFlEMfysNaG39SAZZ8+yrqe8d5rrLlCBTDQfE76paiUBHXVW23tEjWYAqyx5arpuJQRbPQQPO2epmzKJjD86XwJz6IQ4IaD17rqySQQ3bMeXEofftWvf+qOHnFsQ2ODRw7KAHHjvIppPLRXNzAvl2/z8TJgQ9ywA2kFjwvwrOG8Mw6L8+4GlDOxUm7AR7+56QlTSqV0akGuMkXhw0tvQixPAIRnC4ZxBURYmUYMac5jqSEonT2RShZGyFWF6CkaBCngAi21LKIo8vfEGXrXKT8jRGiu0D5BYN4TVR+fUT5yDMuezrKsjE6y7jszVGWzSwiR0Mkb3b+cyFf3U25Ne8R1fnJ92LdvQl3E6JbI3n2XICnEBagESIVLRsjOFKr941CGwH9mhV3VtIHBPQykl5zMqYykQidGSBJZEPFIBGmDUjE/YxnGnIPG/da0G9Yo5RgNDIfX2RHqt59Ye+dfc1U7wdbQtDuNEGad9nkXZXL3OhVZCFbZFoMP2O9XrRAAZpUlOjZcr6y26w0LMqpZjJFl0U5lVU5CQC5AYBicdGxRHk+8yB9T6KKoB8KAmo7j0mH4eXMwSeZl/HA1HovoDnV/uGH5nOvj6/oYkel6YQ9nRut+YjaNyuaJxXu4TKh1Zf5FRM1Z6IAXR5DH09BJ2PosRR0RQx9KgVdGUPPpqCrYuizKejqGPpCCtrjiQzJsKiRMvUIeFaFiluCw004gT85LI2tJATkc45vp9P94EA6QRz/jmHEH1oq4g8vFfGBpSK+a6mID14EkYo6c7RMCitGfv2kb5t8WOBMJrnQuw8TJQ2hm5rRPKfCK09msBTqkZLGbUF1kor9NQelvZqcsgRgcZJf/KEyZ0JVzCU1L0lZnEQfyUHKcyrl5n0NPNzyDTYJg37k/QeZAJRuC0qTfTPQUGnSsXje4dyRL+xWsnXJCBK1f5ElhMHEhCG3b6xKZAvkvEWuOGtGdn4qny/uNrtDCZvOy1yQCmBeIZ74KV+A91HBL6/5MbjyKFQeG9thTt+QEkrI2hVTYrIgPGU1kpyC1h8ern+BGOu2IKf15wr0nT/J52tZOtFwoC0mt28mW2A9k83jOvaCjJbEwA/FyFGIqAEiNgAjiAvizcX4ulg0rGk17KQagRxg0sdPXDIBC59uokB9dO0ISHWyUCcmmwmPW7dKDhg2iSa+LJ/fzRcuCphLeMc+YB6yzxvTj2ReVy6w1DhXLID6Lj6u8voI246wJ3MJXl2UIRD4UTYWqeXpOLVIhGi2W+/clS/ERlxiUwpcajFTKgfyse0WF1fw8Ar9T/xH4OYw5VNiPHQmJiYxL1F0JrJ0ScE8z1qYEbdFVVsbVe27OItsJn5O5kAyg5Hzc/Gm+bk/eY9ump9SwzVzEMZPPwtgfBw3N5yjFee4kTMppXP8kfN7Mjk+hO79lV97bzbHK0ewH5W4S7ZjP1tQy54MmMHCdAGu3OWsWCCbPXlOtFDkXkT2RuXI6UZHcJoFs9u3WFlzC5bFUc7lCzSqFTfqI/moVf+vBVuVkQYb4csH351phD+w8cnl7/ZkG+EmLn6YbMjsoTy7VaYE1GALC1ZAqrcFhUm87x3uZujqd1JhcjGqHgdVtTRVTx/PUvXeKvt/HcA0VfcXYER0kC4Us+1/fm11SHl9rwEkndj+A2//0b964Btrtr4tKDKRqWOmhcFjpqx9QTuJ7nniwDTXEeOPye7Oe3cu2IaHF2xDjlogFZ5h5VSTC2mSUwsnPL1owtMLC+IzSLhQrucWzfXcwuQ8u2jCZxdO+PxiCTnWuX609AvSXZF3Zsv3wCs5Xog7w0/n84V3jchZhfEyxgyG8zHrP8o/FBQEArOhECLGO/R3v3r0xkcN5uxDJ77vdfK2RQzY9ulrf+Q1yCEW5qM/8/6MMP8yBrrzv50RZnSEER2M5waU5570xkXaa29hEe5x7IIJ9y2WkGOdjWB7zs9n2A5hPlQIct4vpgBdP486vGaJCcKDH5bzw5pqeqmpzJfgeWuXJox1vWKobG93nGXDcH6E8MW8s2BtEflXxdyCX6Hz4cH7+w3bKldz5WqhwKUzGbwZcjAvHip4H0eWy6ETvXeLl8HKaGBlsvqzB/qN7841on/52FeIfcXYZ8W+cuyzY18t9jmxr94AdVWm6VEQEv5YUUTJjgGPK6ASA35WAeUYcFwBpRjwOQVYpm7sPV1EvQRosAAbxPpijFU0WIANYp2LsQox1jnFyseAvxhK9kKcLGewAJM1bJ7XeGyW1gyOUfPomIVELDxH7EKBjU8zKmbP3iP6lC8oNSUgpfcjkTfnvR/ewEJz42fH5KhIm/jv1uEo7wLyh41gfATSYRuRM0J14V7vGxLvCIIrsWHeexixAOo2al2l90Wg8mkUIEX7z7+LSTwnvQYHpy3vH0xuQP/Hi6Hb3tdS6D+BMlWXBSW1BUklM/ItkAWsK3ofQzrN4iMvJYuu92GtLWfw0cUyKGDWMCqPwEqqjkHc1MyEEiIRSpc3mp6ed1Djo4WTtNf/Qn5kpXEDi7FXzHlflqLitgL2f0QOfimbP9AJO+M0ijdU9vYilWmNh+APRiOe2P5jH8W/L2959EnvA6lE++FfOufXeh9KJf5PL6XxprwPxo039802nsULTmZJUDI1xxuNw3UDuKDExiGUu2gjbvAOZBqxoMNK+EihT4U0btoS9n1bHzO+rry+zXrA+RWnWhCjJ5V3WfJii4UXWzTTIlf6PdLSFoaSQ3lsG3CuR88h+6AsZrEP/ZnWFYt97KXwL59vye1Sa/7ee7VSRZY7GJIxBnV9G5CuX2XI0wqpAeL5DkPOKsQ1poOKeK9c9kOwrWvtfGKOZ6+zQT011a0PXugsik3uBrvPs9tk9zl2PXafZbcFO44H/DaO4R7wO/Iijt81tg7hWP7YIrqJxiI9lNZCkIBsHBVTOgjV28D1bqBq4whN4d0nhCYQWuu75CHUQ4j8OrUQWsYMaM/5bXY6c36Hne6c3AKzorNpXzf5j5N9gDOeoNoBzrFH7gHOahnVD3AebarM+hWYWcfzFl1yZv2s8s3qtraRbnVNt3QivQL0jCZzDLqTRq+qmlF0VRhB1SBW04iVSC/EWqFi0CrZzhVTkMo9mx7CYsz4gokrgsqBOa55pEM4cgZb2uy+COlg9PE532FnQjncUw4vEw6DbhV/84qNCVg4RYxJhLcPYW3ZzbCgGbfsNDO5oS3rkM28JhY1vDrSkde4uAHqs9zcRdwFsbLtYHRc3bCgnuaUu6A+cw26m0avqQ4x6LOSb80g1tKItvejpiamJWHLJ6vvbJPOzjZJTFKquFSGSX6m/YzSonF0P4cm0P1sCDN2s0ZPHHCCRhvJnhPcsuIazMDiTj+/+h7tDBzZvS9JWgz3SHs7EH9uCYh/JcPt9KRgtHSasVWkCytmdvNYRWv942g0+9ZICGwzyS+KPnbM43GyfTZUCoQr/doC8q0+NPTMrC/VeTbfByNI5foELf841LjzN8VCjR+apSLJvmy0/xsdnHseGlpEvmxeZoaiLO/iXVVQrJuh+s6XXzWX6vJUw5PLF4o43z9DfZz74M3MQF+CwhV5kEFuX8IFuRKLY8jfYJnYaa5j4iamud/cnA1wu3+mEMELCm9xki3ZFGWNac8GnQP6Zul5JsKjzqyGXuRQg5oHggaOGx4ImgbrBYUbrAsVOfOgmaqrBH49S+CeLIF7ChE8ReCN2RQjCKxkCKwsQKDCgYUzNGiNGhukC2rhzAM4BiU8B8dYS6E5TrJRs/ehBeU8sK1vdBeB6XyqaFkyapfelW3kb8jes5EDNGzBNKy+CiQNWxbLrk1IksVNyphBUetGRa2aLYp0xrs3qJqIqkbUWNlrnD0U52pEbyiiPhs0hAWV8DyX6lBjVkMvcsjm4YrLc3mcCmoG6wWFG6wLq0EpDmUMZqxk7vH6C5K5xx6KczWi189WOkvm6gyZqxcgU+GCZT6RltGebH3tbm1PbsxsQzozRSvPD5fjL2qYfNL5C+bTUp5pokLqvStre++K7W/8mn/p1kcN9I4tj3p/jDy3/3D3Z2/5ox86xk+VR1jLRmCZvD7z6PY/+iEk+L0thw7JFLCQvCrrF5TN3IpkKrCH+n4xTWBenqDHIcA4XZrSIQrujij4eIykU89ikj7/qZeUAT6TF+PCc1tBv77uH747D/rjT/E/p5/i0RDOH1ZqDdN13N1VdjHpLcTd6K/QjSSj/H2YALOnKBrV0i9qgdqnojLHBxW1pOnuCqrE/hqVGTlw4HflY5+fB+I78QVIX78jpx809XU7j0OlftCCH7qEmvB1GVplHPjHZoNxkTU8kDMuctYkDyrFg3W+A0FbYluAzSpeTZP6yNzlzNmp9IMJKYP9tnkguDPLBaHkE9s//9rd3/exQ19lpgZjkt0E8jaFtanDpZCXQfMErUcMN6XKVXbLfKAv6xHeeljAH59PW8a8W67nGCYpD8W3gkpwVuqBt1XksIkAfzU7DCSqwvGpgHp04Fh+m+UuwLs7XCjziqfAngzaTGqbX7Eb2+ePU3ufv4Y6+/y1hNvdq/wmrfZbtJznYOT3iL/Ck+9XaaXv4Nst2sFGAV32t3DpgyveD1wwZx2NcajBHRmh9XPkcbCng15wydxsMDUbXMqk1BC+TJCbnANClwsyWL4BwSsY+crZ4Ko5JjuHZt0I6NWMw4hX0DhHX35AsF4lPHXpUnqV8HQDdRmLy75EsNYfCC7hPK5CqrUcvlTQ6xx7qaBvZPT1aNM2XU2Xz4LoDl1GV3KyGNtmHMWu0TqaOsDYHS1hDeOsE5wy46yLGxWvAcJpUgtOi3pwelSBU6EqnCo5cBzwD3Iw0VdBIG25wEPd0ZTcaLN+m8Fd8IiL5LadVJlYpVKwGs5qWg5nOZEKwwqVF19lYqWKTYBJTEDLovfLbfTYEumbbcd+sIKx0dk99q4Oq1kn+lh59BP5nUF1rQTMyaz9xji5fLRx3Hz0QocvRoNZOXM/Fjnz64L/lLy4lXpvKzwtEH1LCk9uzMltIs5U3rc7levLY1rsnU+807FvY+ybin0U+eD01PG4BzWFguNKsSuzRpSfM6+XcspDP57vY9f2VB7P3RlTp1wxj1PWQK6pnOckCVuY3X02J6b21ppbj6HF7Y0SJvGeKbWi9/g6BhcrZSpwEbsCefy2zR3en5Bhq2OmHdAyz7q88GT3addfDves60/Cfd71V8A94/or4Z52/VVwX3D91XBPuT7Bfcr1fbgvun4Ad97118A96fpr4e6p++vgHnf99XCPuf4l5gHY9f4UrWXoGsb0ORX/sEIgWsklTXKpaymY9S+lKZZ1/zLyafWsfzmtohWz/gZaHvDVwVn/CurifVWmkJ2AHzw0T+TMbjv6ia8/PkdEtfC8wlbMbnvo1Q2GrWHYBYWtnt32XVv+M8PWM2ymLrBgdtvhL9//GPc4hu1V2LrZbZcf/AmG1cJnNOXyWfyjK7b98RH6zBxt2Pbcb9144xxdvu1j9//Cp+fo0m2VGy+/YY4u2zb5Iw+d1MdXJYX02in/EnNBji1loHfAwCIeQAx6gL0AAaEOu7tQp/1n8n32x88gUk2FJwbBVI6YRBzrU5QB6vjbQ+kOn06DHOqKpY6uvojWoZb01MyXh7aIVdTNriSPRarEI+1VIUtlcasK/t5359Uz8+68iGKBMzKNrMIorYPCgp4qZG4xOKsOqKZbSatU54ErPY1byaE9SIGARveAqElCO4O4t210u8knRnRDN+Ez9z8MJOFaZmwn3P90vi/ppwv7P4hesdcAVkW6o0RVZPTwdGGGuyBjzEUY04U5SbLPACidZBURJ9mjSQ5GGNOFg5xkZYxoWIOeew/Ttws6u0os/px2L9Iq6iyzhohrxcxVE0Kq61YaBhvJF7F8KFgFzqiXwE31+lQTdw2t5P/W3DkZwPWNS8ZddSd6nRt6wjC0IfQVswaHv4tYQgboa+BqR98gCy98Ka8QYHw/gzgB09nvox3RCCh3NlpZr4yzg7whB2WmaOkU08Fyn+L3n4gZulJflw184KaYyFE+4zrUY4rBQS6/BXEjUqqqqIbhmDqrmBJ+6+7xD+al1ea3ziH4CLcNO4cY6oPfAWHLEuVwCvINYgScudFfBeackfZz0U9pFReoWR/lTFYlWR/WrI+gQLRmsCrJmrlvEAE0Wa90qAauWoZuzfVkNtdjmuvxbzpX7M544OJV1MJEmFezB/e4WBqz78J7IU2XF3P6yBfIbgUrpRatYJXwrRWQcKoV+MK4VrAG7sFWsBbuXCtYD3d/K5iCu68VLIO7txUsh7unFUzCnWkFK2gFTbLwTRLfy2Z3OS2nZezy62U0xe4UTdF6dtezfl7L7lpaC+Hl8taI8Prki/ASEYQ3WAVBuXPyhLzudaW85w2h7fb5xqxsNyorQw+NhoNmNRml5Yh8DzGgilbCLnjB7wmxGkRXC4sK2guQbJXVSN7d6vku+zE3HsMQjpPtPcmyo1nui7PsCF/iLHthUUFzcZZj1EGWHb+HLO17/Y2apR10JMtxzfJgnOW4NEGcZScsKuhQnOVGGkeW434HWbr3+hOapRuMS5ZXm+4QZ3m1tHac5XhYVNCROMsJuhpZXo3HS8Gkd+eDldt+7KO/u2XOJ8NGBnFboD34gbbc1hW3QA45SHARofgIyfPfPX1yAIOUGIcHe2hM/cJ1ZGjK8EWVSPbpzKHQ4kLMVGij5sAJVklTgNJhogzx6VxQcZqIU7vEuqQfXB3u/V2d2r1qgN54wHxVWMScr0M9uS3PjN95c/o8fw+FuMzGuHYd7OOO6ymOjf4EwuBxzIcatXAUTofYgs1oYR5AebMMSsjuM21Uk8wq8F4dPvclGXSgAhkPK0wd/2R2ejKenTJM323GBSa4LnLUcvSFZX3n2QIL+Mhuo5ArliBGFb1wi05Tw+2sCi8m2Hf/PX6XCerxIhuxRY69CSt271ozZMchIGdCd2dC1Jf9956M8kI5eGZpZXuye1pD7nprxDx14DIl6M1uKb5sXwv/3y/DAgCjfPAXzWPe7P/H30+ffolxv/w3WdwvDuMKBSGKjM2PuPkkh08MlPbUcA6x7SFYnfpp2Cu51381hq1qHzrkGjOCovO/xkwRsLnmb8InR9nluDaajk0zoHmffx3z+nr+ey3/bWauvDZ07wtniJuINvPcItjIYRgWhvZAo+7PJ8sMdOFN5IJ9WhZx400kszZ9nx/53AZTgrJ+3Ex573Fsp3PNOQYTBS5OmrsjE1DsxQVdsW4WtHSG1tXZ3ra/tV6zZU7EUuZ8cRiGz5Cmq+guqqzr/AwSEqUy6SFRz0zsJjTpyjmZzpnZkZlwuIwG64od+Lrsi3CplgrMyuhpckav4p8EcRgLQqyCZ8uUyYOk6pxlpdmgj6c8NWBsQHazjL9RPP5KncfWwqebuhMGdt7Hq/MAXdhMrWCYCg02Ttf1Ob7O067jv1rhhT5DrueVHWpqSpEiW1JbjkRVGbXEc10d0M1uCMbHqILz2WjDDYPhAeMUMHoGoycEGwz2u1p9afS9FKkYCMq1NMF2m1hbsjY6x1UJOkYfmQedu1k+pbikU1nqItALz5X0BVFXygVVz8QQy0CejiAaPGuCK7HeEh574LE2D1dy5YntvxV84HX/9uRjN8geJZN8sf9oWu/uP3tNH54buANj+MR8HBWI3vuITGz2sLw4drVRs7jeamay6qxCxxG7h6244qrTTLzBZr6o1JkTgjo11kmOvypSe8QV9SnWfrBKXHPMPLjXl2kpQlUIj32fwAgw0TMapE44M6WizlNsRMZFWkRJ6avUqwa7/SiQi4xn3nAzPjimlO+xv8uqw9MW+38ZqiNWh2YCwdXRaQOmqVzB2YBiCpTDFC+x5J1XMBce5TLaN3+7MUCtk0xfp3PpyeIs0QHO5FA4RyTj1hNzDweUOqBAh/1ackChJnMw/O2YFJZS7focq2y6gZP6LZTFXmxnsfNgX0WBXi16Z1WAZqHXcCOrEksasWoGTgVofVTWTaV6UaXYd9JUr4PqiaBqy2oCVU8+46kSk52X3OA8mcvZupW7g6k73kM3dV+ZqvvKw34vrjvmn5w99VB3BFzq4cqYPIntxpLnrzRGfo3xrhamFFXHiJZwRboDiDNAMyUHJMsTNQA0wBdwIuCZAJiA+Xbc1llmdJXJJiTFpRcFs+m610bVfdF213GawHTwYLzeIN7LlfXvQVZw/o1i5TTvb2H3am57g391X7/EVr+z7sLG+FrU5GrUfgwE+j6+NB/5SIl3vgAv3oeKHa/Kht9V5PErv9fozUHsgKS7cHBlP8Dc55jgBqAkGBeVZzpeNzwnH0hoo6FFKJFdP2D5K2UCySTLA1CMddUbpBPv/2tJ5UZfJdv0atrIDc0YW7BNdBVt3Mkq6xoahxBA6DDoS6GYLguZrr73HFFQQ8njUcl6IB4rcLSzhgJ15fD0Kn8lVOMqhRh70ZiuB68yM3XdFzA7BGKfkbp8wh8b2hM/QG2elYum8J/8d1uhmYA4y5kWjE4K56WKWAMBL/v9fuPWR4PwoyZwLvxepA8/6b8qkYxXOZIhTdCrEmZytJR579deDO+My9SKsP9Vk1BpHfCsY3hmjGSZF+Ajs1Yt9KQWFDj4rBgV9tFVcove5914nzM0FTH8Zb1wH88gqcbu9xuadH4SMPpKqeaNsnseWbDK0ZV9GmM7XofzQBa9mGxfgXrSPSHmdAH13crY8g3q1fLvt7cwl56kkIfRt01GrbEyyjZwBzIm0sachJfxOP5o3lA5E85BVxkE9hKW+VQDriHBiTOuSULydd6FQmilGcbYa3B0ZFtFa1QVKOXkob4z66W95gJUkCBTvUke7tBaesY+cCcNw1wY/DRLfJSBhjRcAGWgbTD1nYuljtVcnbZg6NhCV2PAvBoDZsPNpQbMz38lO2DODw+YMe6BgcH11CK4h7+axf31RXDfP5Dvby6C+/MD+f4P4D6KJ4SHcX/9b7O45wzuUvL960VwvzaQ71cWwf1Pf5rFfU9p6TS8bxHcR/5XFvcDi+C+/4Pvz+D+WIH9cyfgH263gbb4X1Xo/Uy+dIPv8ki7BZsB6UGip4o8qMlXIy5jZ+CaFavpM4yBSIrADl0jm6jX0PXhzDxryevptVBDr6XNENfN1DQTfHnLz5icxaYBfuy+KBhDgRbQCGcu65sJf3iWAXUMeU/lOUIn0t5hiFW0JA5u4vT6ZcyvaUa+q1n5vWjN26Wm3ymy3ufkGFPJlUXJmQpXxvsEstOoc/8tp3GqCHTyYRCYr3bfTA9Xqj45wgDjPZp4jynanhjteBJ3MvbibKyZvUIXbJ6LsJ/JxSjnEu+zOc10EPu5BOV549X9RixhcFBWQnGqVUYRJmQ8lXhfYGyDcCqBXkigp7Vm++KanUnQzqZqpmj7Y7RnkrgXc5rFIEVoeePdk3j35jWnQexzSYb7Euz9ifc5JWEuJuFZO+FTqsaKdjBGO5+qd+Kdy2tug8w/mI9RHkm8h/Ka6SD24wlKPA5hHxbrGHBGaXkkpgVdIhI01CzLgj1J7NGk3seMV3ZzTcZ7GRPBOON9SdLjwxnvT2JPJhnPpzJ+3GQ8x5gItmJ+JEmfGs74kST2VJLx6VTGh03GhxgTwVbMuiTpmeGMDyexZ5OMn05lfMRkfIQxEYwzPpokfWY442NJ7Lkk42dTGR/VjDEDl2Cc8ckk6XPDGc8nsc8nGZ9PvC9Am8Wfp1xxXVmBBR3z7vHpecbZxlrxPO/nbDeaLngdqzF+nOBNvN9XDc8/PrRTeDMm9z+pO4WvVTWH85T+LaKOgx2hKuedt/iv54XJdclmhhhZha41K7Lr+Hglf33cSrewt3ZfcGvfv82oTfbejt1FuplHhZy/iWfW0xx+jW536Hbsa7DHGK0ZMIO8lv+uq+cJFQjPsh5mV/eR81SDWSYslN1o67ioW8cP6NtnLk2bnd37+mDe/9O/tACL58AA4MUUwBPGmi/pukncxcY6tmCY1ZtIiEJpkmVXd5fmIf/sHI93yDF+WCkT1LfT9fJJtgf7i36HbiN2aoYjLuC864b6cy1zqL7ephrn1X7ee8xsjDJcv4IP74uyW/kmNkbRqC9xZzScuV/5wluI3JbJBmn0dX7r/6adUQtkiED4bV2T6qzEzDxUkjOgRXfj2rFY3RAde2nx30TRRNOEromDsfDxzyliRxCpA/lzzTYbtfwevPpdsBNLYwfS2GXmtHRXbhhdJNQ1C4JatA8Ts2yN8mQt1gry5XKBz+4+tvPWztKaWZKPzlyGEWuzUOyy1OsTStEDKVvTnz+0/CQzsy+zSrOKdwSjeeFrMC/c0g+uonGjnsyGXj2/4ErhsM3+j79n5PeSbwx8L/nkMK5pbBQILWkaWsqnsfD8tB7qXZnZcixSh1rYG53AtHOCbhDhafFxUf6S5tZ5xvu6uhsT8WufmMkQ8bPDRECfc7H6HfsYe1althfzw9uL7fCwSA18Rn7MplNR5Au5/HRedxi5dq/0FiPr+m9ii/G1I7YYy8NbjG3ZMYwr1osrxt4j6jW7jDZK1Xb7dt5mLDtGmOJtRumPEbAVbzwO8KUyvM2orRyY/UUYnjVNPsSOnrI6Crqv+E4jt3280xjm/c1M7EZuaxOxMdlSrHKLbjSbhodvBL3+lcTPyzzzuvSm4VWYcUlsMLbwNuGY5r/YNiFKQwa8HXtjeP4aIJjtS/0eP0ZXjt5D9HgPcQytOEabsXq7ksa+vfcQvf9v7CGCz4pRYR9dKXuIOdqCfenMLEgnEzqHWPrm4qq5ILX7tgUTFNmpF6BPcQ+5GmmIRWaT2X3j6qByyf6Zf/HdN5+u0oxGpV767luNNkOrbqaNGFc2YvfNcXOLfK46YoaSpewOfaGC9dlo3P8+sDv0JcVdUr5/tgjuzMDO118tgvsPz2Zx/+GboOEfF8H9iy8P7KjZivtK73z9zXBbmF0vuoo9C2x0dc0O14ijGi98OlvAzw0VkN4Py2M3bJMEN9G0uNP0GsjRa0Zui71+YCtse7wNVkxtg00Vzr4u3gPTRRneQtQ0/qs0B99Lr7bGsDRJrbUg6hz3Ov0S9LSZFl+ts92N0TxZJg4dM3lVZ1X83ga+73TAwRbPtsIXn9IsXBytxtMu+sLAOPPV7+FLJTDlu/+riB03nodG3axCLsJ+FK6acdzoKJzYnPXRkYk1HJ5M0SMcNB494ddFeag6amujMC3UfNeL8zWs5WiNiUuspT7ZTYSnbjCTFsKRgHgSilhMXObM0WPVp0ah0JoDrF+YSiJ2VkYHpK++RY5pOXEOZhodF6f672rFr91ej6MM10JE1naKuGbXPiSREVCuqMsBcLqOkeVoO7ZLdMJptmh+XQGc2uw0GIxjEcbjwAAgwpj5LQUcjzCOAgOACGOfwTgZYZwEBgARxkGDMR9hnDIY8xHG4wbjqQjjLDAAiDCOGoxTEcY5YAAQYZw0GKcjjOeBAUCEccpgnIkwLgADgAjjrME4G2Hs+Q0DiDDOGYynI4z9wAAgwnjeYDwTYTwCDAAijAsG41yEcRgYAAiGQ55oC49eJe6r0IN5Yapag65D4DqcGSy7hSQIOSunRqb5AW34AjTnrx5dkub8yiK4g/nOFJee77uHcc3JNsyyzU0Xf4L0cVeculXznIGLU6hXk4uNK9Yh2MuS61j6xBe+qLfN0eqKHq3mGzv+GnKn2JETTJa/lkPsdBHK+etlVeSKCpTtlgmsW8aNjQHfpzGEXfQY3XeJzHv8OV+UM/OGnto5xt0TT2xxwn6A0ZTptYLP88dtz3/X8Ru9T4stFmgJnaSZYzkmN4wCmpxjouR5KD9ahQymTQY6+aM2yiyOSoMp67gxyDGU1KH1WjIWIHNyCugRVHJ8dCW7SSVftVglaUmV7Or1JmY5bRSRNbTjpPQS6jyypjSiimvTVfTxThqq6I6uYiep4tUvvx07WsVuunrZqtGSq+aPqFpLP1iPk68T8DWpqqo2kcsdj0CacCb4BelRY+KOydIsqBhNkn5HomfeoG7GW1o57Vg1fUeiI/fbfFfvk8gGlnSfTbr6De/qmwBGbg7fnYRdhL0k7OnIPp+TXW15ejroyoRIjzqj3+vbAejuNdmcpZz2c32KlmrZzHSaEE8MdGYVH0UG2m79HnhQa4RpEZJ0yNbaTMVWaXboSe4WAtgOwwHmfDFRafsOZlXaoRr7v/GBtAlQFmbeSvBdblV2TE4NK1co5OUgtolwEelgyqQ8bMHBOiR6jLunVJupUAc07qCO0O1KHZNzwWXsnU7I+XUrucG3kRxz92rczAc7YiFVvHb0vic0IUIWdp+Fspqjd8t48yA8ej9ImfBbamB5rK9RANrRrUBkUEJddHlvOkJNct/2lvfv2+avTI48mk31zA0olmPIJ2A+OshcQIAysk+07e8LY3fMIWyWmof+Rtf4esTkLZ989LKPla/d+iifLjn0pKrGOOPCqCTI9GGzBo9SOWZDn00UYU+/mBpIf/yvsy3+Mxb7Pz/iQ314Xlf5vW1f3ftjWmfX1BhdEt98s7XGB7DCRWtNvYvXs6RII2smTfHMiLLPXKRsRorxywsXAEJGk6hFnxtR9NlvedHRnoe5zLc/rwqmJTIbn5J25JQ0w4pyRNrhCL0KZGbvTU1VxR1jtWMM86gLy8ZXi+z/r5kV4ftK5YIxS1BgG1yxnZvEmpro2pmyPgGTh09vsFcRgFAiAEPlMw/24XWoElvRAorysk55OI1t99zwG1vmvgd61K/rJlGD6oNQPFYF7SBJ5oI6h+q8H1lneP2tkz7CVXKJoxrsaXBUFSCOKjkk5jL4P/etk3pz0qESstOgeb4kDydPBTiF+EkSLIWAPOs3w5xWmCpcX9RaK8rZS609rXUO0S1EK0taiIS3rlosqn6bbDidpKKOKNqC2BYYhArFdSpw5oYDLgNcrqZLDurlIwwuCQcc4YADkHBArZdpYrLmohjGlOTi784GY4nIN5kKliqJYXrY3xa/wHjkZs+Y7OKhsLGHA2fOb1CX2OnKm8K6shYKHdClrPaozglK+OOIEuqUaYPkIRjnp8qWxdYwSmwVI/tlDAPlc15Qip9UMrfln/Vk39vWiUlVnRpDHNFpjEO2rlCDerjP09feqEL8xxsAzTdIpZ2deBaGHCA2YEygQOw0ipwefPeSc+INhFtRuMxJLOA34DQwOs76YIMHM2dxtajpO44QU0F5UUEcmc1Nig2kiHay51DEPkAdB1aEFmrNUVVtviDCo/acsQHjYJ2vN0LJOxCoCbA5oacsvqo8qQGzNTyCYvCgojKHFUpVc2RfDT4g+mUIDF68gYOHhmD/Cv6dPBULKvoafzlmmhUzTZ/FaaiTYRG0ysDbWbbO45CPX5Hc9bk39CiTkwV/KjuTP3wGZscwO4a5MUx98dtvFhwLNpCM2MWq0onWjU5qPeqMWjcC9/AA7lcWwR3Md6a49HzfPYz751c76Cc2VPYD+DNWfd5ljE3MlHcG+WgkUPvOahFMbP7UwYou8wBSBv8jop0OyJMpukv2BHpE6rM1zoGHz30x531WiLT1utUmPsUBIdqEXKkoE1fcsUOhxpJXOA9lWcUcQ0Q5KMgR15ue//Ivvu9Xf/wPvngO6MTAeQZy3i+yrZz5LQZ2dBTi8QFErLcxr3bw9IYjLxxIEYFLNTU1UIAFsRAZ4dkVzDwvGc53Dw3Dnh6Bt28E3rkReHMj8J4bgffICLzzI/AeH4F3YQTekRF4M1PDsGMj8PaOwDuZZd3+qUxwnkbUfEQup7K5PDIC5fSIrM7SCMKzFDw+IqtnKUtkNsX5bOzpbOyL2dins7F7/Uzw2WzsnJ/NKht7yM+SkY094mcLujQTPJ6NncvGPuVnC8rGnvGzBWVjn/GzBWVjnxtIO5VNS9m02dinssHnssgvDHTJLPKMny0oG7vPz+acjT3oZwsakBc/W1C2vkf9bEHZ2JN+tqBs7Ck/m1U29qyfJSMbe87PFpSNfX4g56lsWsqmncqmpSyR2dgLlCUyG7vHzxaUjd3vZwsaSJutwjE/G8zGPpuNnc/G7s8G5wf6UTZ4IUvGYT8bzGb1dDb2kYFgFvl0OtbVm43hqY1mcgEAzK8wE6/q45P4f7RMN8gGz2SD89ng09ngqWzweDZ4Ohs8mQ5WZVO+at6UD/WcWhE3VnWEJlsubtWJzQXafB0jHIeJSH4czvsZfLYbcTbNji6JNsJ5vK+PJZvZ18Gk8/q5oHnC98jG1TZ9uYgqQoQD19KTXdiMA1XUpMITc96PYcOQ/VWSh5B29yNY6sRdITbP95lD5D36pCL4LSwwRkZRyxjIsVJnbcw0tMpUNTD5bIAfNi8grglMLSpKsCRqYP1g8s6pCSvZC2oyWXeEcnhCvJ8VOuXsxsbwYZgmCal5IA2bZZ44VIgtqZIXex/zfgGzuSdTxJp1qAMKHTM9fv6aPph6RZ8aSp+ylSreEbRUUKhXqXQCtrJMfQrRt4pqtA5CFFXNqqOjdw+TK7wg6Nw3vvE3t/iePkJbSEGUDUq6JW85F7iRuG4/9PqH8bt9zvsomM7+Q5+djfatf2nLo1o5v0ta0hPUfXLuRNAlD3eJ+YKVRwWIZoFcmE2TfH3TInhhpChflanRl/PSnjCpg7tOMTmmqDwfizSwG7caBjXMgQ4KHz5h4s5/5pDxXcMnWby4GXpb3zaJILW/d9KAaP5Q0kYgZDt3G7xLIDUi91NqALIK8llwd2g74fAQOhN36XxY58505qc5fky7E9n6wTruPfmB3vPauPfgxNb/v3QffObX7qM2WnJJt5mheXQbpV2/wlf7C3ah/fPDXcj6bKYLVajav0gvigSdyQMbXwkh3/EtEPJYuKss3EUVbmXG1lHyumLro+CkQTDXqr3EbKr3a3JM6/On8c/e+mgSw+mcOCH2bVLJyPu4Sfh98q8wmBCn9jddpLe9Et3I7GEaWZLOhCeJuCc8wz0GHeLGBTRfvbp9/J/94omf31mYp/KJwDOmaPdsiWry9q2PPeY9N6MtVPR+Unsidbncc2/CUleapqBSiX0T/rlrqxrp5/acpKZujYkLY9nYtYrVrKvd1w2L+n551XyKCRzd0bDDM1dAmbv4MFUBAlQxC8TbWT45e5EJ7KTBvo1E3L1QxP0LRMSwgsIYlVCkPuUdVHVfuKafq4r3kc3bx6AJhIxMbSN1DZWoIakR1KBw0wd+9kN/ZBbcdno0K5rHgyJN8h7e2/YeMzdq//Yzj8adE6rtnMwfyL21juY9ogrRtHztVpxBxusLeUDD3fg8CaF5QicX/rju7TXZCoZfUH+riO46Tq3ZoKUd1C9FJKOrxQKd0Fsyo4LS9diTQUn6nmz1yuiL+dtYbFqNmg9ziTOebF84un1xptQPipykiE21aZ2IDYNODYOeYlABmjsCuWhxN9akfi16FCH6IAjREpi2SSV66duNXvu2w6MYLgp6z6QaRcnXx4J50xuPfFr6nDwkSVUiCjegB4ZAmbBOSzwUUjX2mUWszHcJBhUgWDpuFbRkZFAMEYcMRs5rXDWSbPpSFRWG1KLC7DBaB5XNx5UtRPtjheiAWyG2ReRhHv1kxvgGT2mvFpLBl8a3mC+NxfiC2fA3xRaeqltM/9Ns2W3b50/v26qvjQXNSAvxtrVu0Z5lDDL+Z9jP0adCfWIsaFHLYEs80M68ibN7fh6WXM3jgFw8i5k5ouzqGytMwVE9JFuITesH2jWwRThHTe4pDphJNW202hN+C/57fAvjvQhowa2gDV64hqunzGeMB+/ZiSYQ1ko3pKYcSQ+cJ6j18BxTd/qGOT1DIB3G4Ah7RmOovirChJfelEqdLSqEv/j8noycPNwckpMY99AA7m8tgvuiXsyIcT/hLYz7pQHcTy6C+w9fyMr1bwzjQvh28vQ4eoDF1lbC3DPhaGHnKG45VEObmfvURXyYgyjuZJNnQUZgz6PRgCBNhZ1WPEFvZNXcYEiJLKe7Re2kcdxWTBJdk9G+13ACbe+hrd37hiC7hiBvG4KQ9hbbFA0pNAdI1e4YJLGqkghwR2VRFeWetYksVkfKYvUVlcWFG2tmbVLkgo1V5caqXqyxkNcr1FiPrP0WNxbZenW9Hp731E6v2XrAasksk9Bajn5cNs/xFpxna5bFX6SLuwsPmI8bh9o7g3L8cQPfD/nhdM98pxAmvwNfpXmFFNQe9vFhsvhE4JI7G7gP+3WOYAfDQUPvjOK76RNzQc0sjPJM6H4c6cOSpanfw0TQgFoMCmBpEWmw5irHi7D8gRPbf+UrU2/50Od+Z8v34nhMmaq3o95qnr0ZHqv3qYiGwPYRhow+B3xPBLWcMqWVd/Nm7lF+4mG8x9iUmW9ep54eNThXavAwIT+3TlJjp98km0O4PVc2w1yT+ORlkYmooLQyxKFMBSYgb8Yp8vyGo3dgCvLxvYrTZQW/Ap2T0w+EiN/Cg7C+3Pqcx26BP/l4yiGVZnK428lsJocqShczRGBidH9qBREvPRwdChvcUFSM16wngpZBuWorJV6sJ4z3MfM6Q3XrwJsML8RTfmv+UDzljLsBmO0X9W3tsn413mEeC5C1bHgjLrqWYTMotKmMXoY+BvK1Qhi0G/wFlCN2+o2RXa2hjau8LXNX9Svsxr2tgt5WZEcPiT1S/pb0tiJ6WxFSlzxqVD/BSjGH78coUcStRaVAZiwlNEMltQvwaPISxiNBe+C6T/uTg6+cYTeiiN3cSh/rbirjb8ekOW8lkm4KLH4ThTSSQhoONv/LyL2BNsDEyeRO5T7LD5eg3UaNmVaemDPCWQaafmHPH+AQpi/opQ8H5rnhOod8VjbxO7TiweqctZYKz+Hdo6TXpWIisu1EZNuvpMhaECbL6M1DbaMOm8lk4fMPZycL/73O/p+afe+oicVvDExuvjSM+5PlSml3AVrWfFCOPiTP5GNlC0ULQPxFOCcHApLtRqrIJlVJtxrL5hhQkdTHfPPLZLEGrvmsPP1mcas2nUcuoaEOyFmIrYDObyFzLoIPnbR4c1MCsNmp8C3YPzIwgdBW3JHTyM/MYvo7d4Ja2IrpHlKWA4cP03acAprq5H0Hetab/mDLoScVN9n7+An1zlw9/yi1Ivgq3h0Z+5nyv/r+n7hq6yGk4XLu/hxO6nDxvCG0Zu/e71nxg5/f8qhuNzx5Yvu/vvdfvHbr+j/d8tiTspeCQzBy+c8RXWkUch1OPTob0USbN6E/arLxV4u3GKFUlNN6+sXGlAbqlyp9PEnRBIwq8etZVb+s4xv7wVlzgiufDAQN5NxAvlRALxMDBtxhitSAUmv6dYaX9Swk+pKWK0f5oTNBO9q0RXWUXzethW4kx0q451vUlFo0408RNg9VLAsYcmzzXUKrpqd0LHO2AFqDBW03lSf9OkrnTBMha3I1y0JVfkrPk3GV4GvcKrZfQbyMS+Au3AbVd7KHsaIHA5rU6AOIp0Uw28DTVrJzK6xBIxRk9oa3NCoQ+GgyUndOlPhNZcrpExlwCsc+klfPGxW8V54upr5BCXuxz4t9duw7+RH9HAP/Uyn/6ZT/bMr/TC72Ppt4n0+8LyTe/QfzcTkHU/5DKf/hlP/x00naR1L+uZR/X+KHs+d2rfTxP5H3mv8kyexUyn8m5X/a+GWql3m9+eNHcL5dvH/4+zn2smf+Rp7EsPujX+QZSSms8FzeQoud+/0c35jHRPEfOcIKSxxRdExG3/j7vKZ+9EheseZP5JG8KMkFZ+YfOCoHz9/x8V+LPU89XQBOXnDCgmQYWuwUnLAsa4jQxuRUpkAzP1cgpO705ZHjsPv9PD362QIOo/9cgb8HIltz4YlhL/4sYJu0fdifYuDzSIR25TbeVNgD2eHQFPvvEN/Rg4AfA3uRUY4DM7eL/9yfIOZZk/7IaUQdZVlkEn6qlCUBlcKT7R9tlevQ7zjf+YD1oLCrqAfJSxKw4oPkhCRCiYkqhlXMkUqUl6VHYJnOZGinAkUQ5hTQjDGTEncFyvNPHO4h3EvCHsJeErYRtk04zj4OPivBNMLzCtEslMkKMYUI5xRCBoKqcUdFf8/huVe/wi4LMRQTryVOM6TKnvPcWLK1a5Zg2MVRay+5KW3vKbRgUNoZWOTyfzwdNyc+nRCzfyr4LFs6oamRA7Q61RWNE6PBfQueO/xG9JQuayc9IOj1OQbNXRI9Voc+PS8v35Y4AjIYnuN3br2fk21tixQfsqJkmVSjkBXBHPqvm5E0HmT1aCWkCa90KSl+02QTv7p87qughUo4uR/w20Ou3yZ2LL8Dx/PH4Nj+OBy8RNolD1NtnlGXtF4cRgjrmAf6wOmF+kqZyIBlzCKPzZEFd4JdTFkRwJtUs5IvdebwEtjc7IGgNy3iYyF/ywejkzEOBaKrpCkAp0aS4L2CJHggwQMJymocnCyN4ree+uRsBIaXqpqAdKgTQTqYtsMchGyzleT+DpJZwRgobJs0JtjhBBAcg2RnkewECVc7LDRvQ+WMBRFk6rKFfdY75OG5tlCoyTBdiQKzHLIzITcJ6YNbzThhM5OwmUnYzCbscE6eTopE+EoYlktmrsCzDg5sirTn5cXz7OmcOBQsuw5ehV1gT5thy6+DFywzvTbAWQiq6YhUiwZjtE/8wZ+W0fJDVPrUY8mbf9s/9NAHbvrxYjh9KG0WYeuHtj6KVz3ilP9mMogC58PvTUV8nywpl/2MKAMIOirSwFCnv6+XdY2MH0GDGnLDqy9jhrZLUIJegv7yJxmyz/hXsH/O+Fey/xHjh50CQu/EqK5KjyGwmi0+aN2V4oOgrxAfTcIpQQ/GxWBIN8VgSI+LwZCuxdhaDMZ1U4wdF2PHxdhxMXZUzNmkMs8kdXk2qcrzUU0qWsQLcUUqcQmVuIRKXELFlAANHxeByZApA5OhuBBMhrSUspaCGZEpphwXU46LKcfFlKUYjJ3EvyKM3HPIkU01nl7K2XwLW0C4i5EMofhPhlDuzFOEocP7a5n3NkKeS/axz8/9nAwUuomReCCmPJWiQdcyoEIMEp0dD8798M0sMPHoh4rxTxzuIdxLwh7CXhK2EbbjMBeTzpGp1JlrFgvz12w+mMVmS8JcNk0L7pmVHCo5Xy0UcHoZaxx0kzyXhoERDkKqnKGHLFQ7xyH9sEY5KOS8CVtzs0K9CdoSdKOgK0EvCnpI3I1CXYnsRcGeBFdEwRVQ9uCjCRPSro1CazV2KgpPcWLL+DeYMSMieSPiEhKvQXRM4TQyshISNyM2JnGrxsY0bkdsTOIOjY1JvH2OSnDvYPgB/cqZk8lILlniOM4fl62inCEv7mZJzvMfdqWY5X08Hs26aAq5hQdj31zs2x/79sW+vcZX6Ms/vyBTvUCm2fEgWMD496r5X/UtN28gx7cfktMFn9jy6H8OSin9WRrQn6Wfkf1R0Io53IWfLPGuGpYDuu9ozACaUsLdZsLPlLlmyygoU/47Zf/czkD06dk0pCibc35Bd7kqHH+37OAZBH63hvN2hJlYJcD3IHx5+N7FPnZ/AZ/kPvfwti899u6bZn1L6I75q7q+gNzLVIAKSbHVLxjGBhWEbKroqqEo0/uAqSBEYIQAImBlsqmcwPYDViTQb2D50E21BeU0R128ZtZzpotTvOzrxT4v9tkvaVG6b/TCMl5wpheiL2GBDPUd+w+l/AdT/v2JH46u2HVhqghnUv5TKf984ofDA+XFV3eWc2FNs8PLLgf9LPv3AH/WeKAHrRc9iKlbtlgQBEXjD+cKqguPfpw9JXj+Mq8b/RWRdIOYhzVY35Z9OAtvAeMsVpinKo9ERu5syF2dHDhF7wlZCtTF1EgRvwph/x5BwwbPvmmVr0HA3CDgkUHA44OAI4OAY4OAk4OApwYBpwcBZwcBzwwCnh0EPD8IeGEQ8CLYQ0UD0LuLQT560RJzpr1f4LUUVfiMMx/45SwvwUy1GD7HbhNc1nbwqCYqtYUuj50kHA9uh0dxu7ujqyiYr6GmnAuQx7AmqShzv0l/zGyMlMgzT/+On9je+osr3v3Rj9xzA3bKZVUdsoDmzDJfVxPj6kxAD3XIlfcX8Rzm38tqTS7A6TsVfpHjqxIvJvXG1eCU3uoaT86tFIU1CM/kGTCTT0MKgBTSkCIgxTTEAsRKQ0qAlNKQMiDlNKQCSCUNsQGx05AqINU0pAZILQ1xAHHSEBcQNw2pA1JPQxqANNKQJiDNNMQDxEtDWoC0HOoRsxdbl2O4rK4tFXSpjopu+4v/t3zjnPidAyJeuHEVjAmklYp1ZzWWD2n3FJCKbJmkpzjpMuWpiUW7mZRT/WC5hDVK0TQh1E0wqQxKxZZNyg39YIWUU9n2+c5ZUya/QD+u0Wc48UqBean4+mwwofEb+8EqBaWiPVPyWU68WgVDY1W0TMnX9ANSQCrSMkmf5qS+tnMqtmKSTveDQEqytz3077dv0VKrB4I1Gv0MJ14rsGYqvsFPT2v85n6wXkGp6Ca/YK3R5zj5lEq4xqv88+vWGj/P8XWFpeKLhvJnOfYyldlUrC2Ur6UJU5tx/pLwnY/8/K77P/ckP+B0Iric1pnGWTMbbKAxedPbpO8igMe9Z08EG7ff/ac3fe6avz92w6Mfl49IXVpjEq7j+tOVJs0VB4J1jH51gk7jpuiJA9miX6Wv86+kq1NL4B+Ik73q408G43QVbeBkP3P7m5/7oSf/Mh3/ZDAhFR+jCfNwfEBraN1oZOS0cWQplx/ijCT5ChonzXKKVqPmEd2rEJgY4tulpvqXzHL1lwFnneFBD4ENs8EVo/jWo0tMwku54WmDSbNumG9xk43m2+pF+XYFrVmcb8tivq2nS14O31bFfLuM/DTfaDTfLgM4kp26vhDNjJiE71LDjeWLcXB5IrKQvIiDl37THPQvwsFLFufgZMzB+suTPIo4iCm+dGQdufkTgpoYDffjiil3xx1mScreXWY4YOUiHVVYaTQ3AGvnWLy2fePnHtrCnqsAebsZ4uDflzejGysXhEm1mlFogGznZBu2/fn1nwrZ8+rZYBzAO8yIDP99ZsziVkLQlqQFo9MA2cAJr9z2zr88BQquAeQuMxDDv0cpcDj9axDWAahshi1ANnOyTdt+6Z/v38qea2eZWYC+0UwB4L9fB1LOYhpBV9IWjdYFZCOnvG7bL//xV0DC9YC8xcwO4J9RElxO/1qEdfgsmbERkGlOtnnbv/varSDhhtmABe5GwG83cxX47xa/x5lsQdBCakTB8QCZ4rRbt02c+SkQEQLyNjP9gH+vElHj9DchbAZFMx4CgrK3bdvp/S0822eD1wH4ZjPvgf8B8dc5h5sR9CSpZUZMQK7hhLds+6H3LEcOOw4ErzdDBvXpUm1i2gDtv07lBSrtVsjVa5T7tAltdIU2JV2JbhlcwsaTlTG0eTa4kqaVy3TdbMDYl6JFblKaadtscB1tUQbQVub1bLCZblZy6BZm22ywNR5faQPdyoJHr8FIcsUBupI2sRQd2PalX7hzyxxTcaPeOqHXczkHovGcsTfNxvMGmjY4Ww9wglfTVZD/a+kaFuMDdANdz8I4a/LblExVaBO9ZjaeA3Bt37LigS14nH77yp+7ketFr42JODDLw92JD67dArlkJXP2zNW/PMfD3BMfuptTvM6UvgMUzvIo+a7J7Z9hzOlocgIK6drZeHbFmZmyNFN6zQEuXoo9MMsFrDEFbKJxkxeXibIQHeX6VCbXKWSqhF9hMt2ghXAlZ9HUazQHZKrZI1PNnfv6gWheSOMsGfHshLbQZq0dz9NoXZTwkoisSw1ZwQS92hR7lSl2O4UR/9YwV65R6rilD0RTJzQ99KGZ6RAKMPleIvmiAC0SBVxlClgzy2VpZpwrCkvlulkzTSaNnIPkyVkqU9dJ1hgiZiHx15hcX23IvkqyRimz0vvHo8krND6IdWhMv4DgVXApkfn4wW/s5rR5Hehu/uF7Xzun9eIoDp3g7BQllnqzFgwmtv2bv5ekctZb06/8+Ns3K2aRJhA6ifSCF09ok/T/eErT23H69//mJTfE6RH6NNILnknvMi6Lwcqjn+Uok0/4ew9qvLJtXAE0AawboggPCcENs3rcdt8t1/9ynMW7/+sPmyzqNI4Q0gPlxij9lCEcSX9/+Q8I4V2GafrCDxwymKCOQ5z1hOLF65Yk/dO/9K8kfS9O/3s/8uUkPUJIr3gmPaXSH97z3ZJ+RZz+679Y3BKnR+gzSC942vLSe/28vBLtt8hDo3nhjNqbq2EFr9faZr4fG/bmoI1uvOzQq7JAhVUe2W/hdbLZaQ/zftEhi9f+akQEJ3DLVPDzxmqdmHRDFo7zgYlySXZ6bP675F1yp49Ts2uFup2dI96k4zwqssFdMZsCWOQy8AcBxE2Gr+t5/H5g635vUJ1D/A+b+J7AagJ7l4F1BeYIbLeBeQJzBZY3MFdgdYEVDcwWWENgJQOzBNacowrZ8PGQqv9wNhSmj/aWDSYJZoV7PAMtA1wrwLYCCwY4JcCOAG0D2yCwriI+aIAbBTimwAcM8BoBjivwhwxwWoATCrzfADcLsMeqZxmqpIT2pHpK34T4laxx9sMdE5hS0BW/FtwRv5bXFr8WU5lDkcquqviVnTXxK7sd8WtzuOLX5qqLX5uzIX5tema3h9D/gxAYnv4HwchJRKArYGxgM/ApALGEqByYU7CtRm8syGsJe9olKsjOAV8ot9EfVAztSAw7ZJuG97vwFsU7Bm9evOPwCon+BLxCud+DVyrkL4N3t3iXg86yeCfhvV+8K+DVIlbCq5mtgtcS72p4hcs+was0+PBqaQG8BfGugVc/Ea2FV4lcB6+Ssz7mlX8JvGqgbIq9W8V3KYaDzf5lcKZxdByeu4OKsVU2G+AMuEBxJByOFXizAZ8StRT69qANxw4unw3c6YKt0F3BBjgupmT16YLL0Ao1Dmgnz/TqY7tNpwka04W7Ga9J3gHiIF/buY+Dbbr8AG5CPhihedOFtzN8A10haO3pwi6MYFEH4mUu+pd60Rhr1YvGoEiYaDzqWtxdxtCjjL+LjmT8nQNBl1bQJIpfITB5xFi1DkJEqxHX1VBAPuI8CeEVDcS5GlpP6xBna2iKLkGcpaFLyU6JeDCGKcxlxJs3PD/oTPNaIk9VprE7G/Rmg+40z6rzsi4LxqYLm9nfAy7bsJpWzt8VTMDxgM2zAk9400N5cyIRwbI5TDvuUuy3BcvhdIPJWRzh6DJ0OWrMSMumC29D3ApfUN7iT3JkF943B6vh9AKaDVbwSxxKE/PqAOjrsb9Dk7R8NvABYoxVWo0OB1GlFewfo9VEvDT9/Gt3f9/HDn2Vbb0ikv9fPV14M6qMHNLx5J/4uOBMHgiWTxfeInlw3soF4M8GkzEX7giqcEhInC6QYBC48MIPmWEkoOnCHYr9xiCAszZYM4uXstcyNED7MVIwXXijIu3QLKeCtbPYV5uSLNciy2d/MMpy7XRhh2LfHqyHsyG4RHbZuDdgP0OyXD9duF2RtgZTcDbyugR7bRsZOkWXIsuzoiuCy+aCqenCVsXeHlwO55pgg+y8XcPQy3kXihjpsunCdmlokhIuR/tKUKaYqOUyCiSK0KoSnEULo27jtCKqKmkwlpwe+RJVBVMkGItJDbWpzIG7GzUY64oGTYGPQrdDlwIN1btGg7HyaNJlUpHtUu0G0IwOwJOy2PfjbK6AkfpZrrJmfQVXWMVtjDxaixVenfsWL6SmsCwLNs4GV9MEyHwVU+vMBq/mBMEGLK2UnlV0BRaNyA80sO+ACucktWk9R2FZtok2ciKscZaRLBlfzWs0LNSumlVyr+aAyt1yUJqRYxTozvLGQgBGXo381swqa69hVBXdaxmswroaFchkgJXlOnIPBHXkUgVjr1IK1iArbYoOqp9NduUBqh8IPPDkcmqgFq86wGzgRGtnVSBQvnavLmqbSc6rO6YD1vPa2DgkNI/qYaw/pg8E60HDZVwoxlwRois5oL15DVXY19OMOQeq0Xgmd44PgLJLNDoy8FAJFAfjlL0MMhccOJpCdX1NUnSVW8wX8mkikwI19ZACeHdos3ArsG5dlsVbD+Ick31tVjtAnQPaRSfReHW0XJLsM5zs6gNUU3JuV/xZlXqXwVAFIlecIRg/m0m5CSxFI2Yy5NaPqeD/q7Mq9mOQO5eBqkbYN6vdZiXEu4JGyWSDBmsjJwwBzqwOmDUORCOuwz7b+fG1livXyOKrDee/ntsZlMzR7hLu01x4L/9subY4TSWcCZtSh6iEM7+72Mlv4qYQYE8db9hKpS0fbRnTZkcvx/tlKoXnt+Br3YUbzdc6QHIZiBy0n7d2BZXwD2BcVT/rCppf1Qz0MKqx2IvyXDUpWdMP0Fh5iHlkqgoA3wBrkb3JunkVEFQaPBz6KlAU4RgLkk5k86MKB8f2XYabhwhjw7AZy9U5+fQpJzJ+05zuv5+vo7NT0dvXdX0SsfJ63PowjyQ29So72eZdxIKayt73tVxf/bpKM36styLvi2+KvRf+y+7Y/8KexH/+fzwY+w+d0ssUMBSYqkcDmwIOufiKi/iGPvmRlAdg6qk5B+SglrZ6bKqDL3UqmzsM2kbaYt7P60Hb8Kn9JX0mkirh+VIfh4fhPVdkbwEc2//hUnx+4JFPFfqMWZuS0EEOsW9nUONYtQFwayRcnIokexEwqvEBD07sqFTajBzJXtRA5/+eSfak1fwG5XBlxNyjaAiKyl54tKAXUor3yCfsCuJjW+uN6DJ9DVHmmKzYyWbfcznxVkFOXa2KbjJmZESSAI9ANkB2BuQC5Mag2Gh6Q6zEBhXlsY0207Iq8XMtQoWbMrquBGgumRdabLSmra2lycrpRtPT6uWwiDd39Gi6uPM5QPHCAxfm/bTYHrEyz+Iw0nR058wlvOuAHzdozfLcHCvFlA1xalH7YQbG5t9NA8RMrw4z3QGYSlwFz/SWFyH4ubgTpMzchzP/PI6xYh/sCebi7iMMiRKgQUxA5R7NkQD2P55XFnpgoZM2LaLtYaMH+Q6uM2tfss0VME6mugo6hNPgoIQSUYXCkKZKNZL2xaiHUlO7WZM89XipC5x3yAaLqly194G8RBOai5m4IiUWDX43H3T8No4G/W5eNxf8VloH4vaExsg9yceNv825ow0tbAFxK1JXzIxQm1pvxTQJRPDm4qRuufISDJ4bknuEbRAnkhC0BHIXrqepVLTvNO94tTEyJTSrJegkIZd8Qo3a/MOWrY8a8zbbcWetLfaTaohXUyu/sOVRY6Hnr7Yc4rPQ/G2rw5lT22+hAnfK8z4IKQU8QwE9XYntRuS0OIUhy9XjpIVYj81FakqZjp1y5Tj6jN8049NY0ifyQMN+mjc8XtREptW+SdkchodK0cxs6XoYM7QT+HlFaen9AL3mo/dWqsyx1M3DtmQQWe6fFSk3HjvyuOLxuR1RzNKQW0YbZaU/uptWp2qsi2xRRFT2q0KOG5dV04yyCkktnVSRGassG3W24dhUgVMxVxjIQ3nKnBrUx/eAh34TTSpDr44Xz6vGx/ifI49z1nNKQS1CqaVQkJJHOm5W5XbTzDTGRC3hnXLzEBdugnysBJ+0Zi3VmtX06O/hkBlbp7d9vji7x/XHw4M/VfQn4mEGyBlFCYv4fk+afcK3odhoHLa3cUUfSsOUHFRFI+PmxsFfLZmLZI3wMPupdx37YbYhPHjMjfQJIE4/3H9Tn5ochWIUDWNVePpfpvZyRUTBA9UEcYEOSru7T43LizlNW4f6muE9LWJnPmfSO2pF0bfj+YKDdkNjMhKaU9s5vTUcVKG79NJPDU+fzGCjeiLRcuNo5nG5Ys6DcSG+oKjKr2Y0X/IfWl5Ny3mNUs4q5v5/7H0J4B1VdffcOzPvzXvz3v8/2TD4D3JniDaiQrqlNCBkWMLq8u3793VfXsKnCYFuSAJGG1lqCgGDBgyLmmrsF9MIqdASXFmijZJqtFTD1sauLNFGm5Lv/M45M2/m/VdIIm6E/5u7nHvuufu59557TsCNu/Mu2wMXQJ8Mx30qT34ME1GOumKQdql1MgM2QLkBjFCuedFdFSm8a8iYxMuMUrfgkAxGTF/4uFgGo/R57vHqiNTRH4Q6rlqoqApv1lTeTBYRGt0dQVimCgaZM6l3VXDeZTyYtYiFctOF662UrusaS/ObXr50K+qOKuhEkd4U1/VnLb78LWesQ7cuow4UUefdl3PUk2XUwSJq/omGo/aWUavu7iM8HVGPllGri6jnP/XTcxG1p4xaU0SdvOn4P0fU7jLq2iLqwNL/RVFWQtcWof/tvhx3nQidfv1Z/3Hv7j9D8qeVwOK/G9GKMgFz8w5hCJbt2qB2jUoevVHn0bUJ1IIPJkIKafVDolEhncEQnUfR3oO8eCTtLaz4WNnVm1xnSh1a2uSY9oYC3xrfY80bMt/MSv4Kz/U7fi3saxxma2G7OczUwr6KMApJvnK1PHl0OE43ydfgxStryBr358vkQbV7KDrS+3Moa24pmL6m9ESZCFg0lHm/Llc9KjvmlQlvNSK4WuTS2aiTO0xDru+fB/+8vn8+/PMLf5tAYVRzGqpIueduaRNHFNNhZWNLYjDRq1MmDFLBK+NXQzZxSFQJ2cIhHQ0pmxgEYs58xEO2uGl7UnZP4ih3T81irJJNnl5frYZHFf84Vzz6/U2h7ovKV1H5GgoT+/sJhPV1Hg/e1A0caJi5FFYJ96wdnXD1DQNhA9zgA5Km01OcytR3+jjalZh8s61jiyvrZChtHaubBYW7GG6gn8hQyztxX4NCV9R8Ih0VMCeL/HkAdglF5UxGeGuFSS4qs6zBS8xMjpnpOlgK9xGJ1AKVSgD8aoKHl77l8iX3oEp1bZ3qyvLU1fGGdaiqbcvLHxIbqF7+2J+wkom/Zan6QU1XAvv+TXXYb46GzS9Phzq2n+Thz7yjluQ2JPnUV8dE/+Bf1GFvHw3rQpz/FA/7h+JjuBegEYa5zF5+z4ZfWhzPM4YfxiBSBrLEKLcA9XF4iWLibRc0W/KQ5m0wzFAeMiWlHQa8Rqku2+OghJEGmSb8SoQvebEyqDPv2fD4oWFwQQTeKdmxiB6d5FecX8wwSRYAuwHP3nEBSxIk78eAyr3zgAci//Ji2OiDEfG6zMqYsEwd0s+NhRzlAzXM+TzBEfSnYfxBXirgXZf/wK2hMiabrE6LyQeRtbymWXVrmL9tmbMwwmyXLZc3M2U4K//lR/aKBbrqLFB8oI7iCkZRpLfkH50031wS8KEidZH+95AeiiGWLecUyaZBiN8ChL8ijxSC6aSgS5axlzzgvEDgBoNa03cPCPht8W2C79X2N+TpzhbxvVV8D0jSKAsIttIrgtzIRETz4Hz6zO+lyFldSDI/C9huH57PNZwPCSmsJ3Lil9tKGIhShEj4M2mAaOHTAmnIn4nFGEhEH4g/1akpqbLEW1pjrLwN/wXRsFZuwA1sbHAuAZpDVZ7pwxCZUE7hiQeSSmnQKRQp/EI8Hgi6n+zgfyVtq3IH9mVtVcraVqWsUrr2NfdkMWQ5N/7LZ7ecfruLf+2cbkCUKNj/7Pqowb/ZeT/Uo//KWb/2a/NzxiuVcMooOkCi5gRCikFlMb7E07n77PZX7njr69v/fMbtWTygxij+cGr7aoykuMkt6GDoKImWyzX5dFgKZ8GUBivudu17+o+L7xgLc10LU+Aa3NnAKlgXySBHLvzS7yKcBstO3eOW43WDC5O8D5BoBOSv5ZO5x+aHDnp82KjNG+SRo78LRsi1w3P4OX9kAcV0wlhA0GTQvXEhbz+r8BuNw4/C8ys4KxPKUubWvID+l8MaI5opt14PO3wT/JMGyAIo8kDro6V2LcI5BiLVK7qUd+zcOXPRmA0U9KsR2aPn3wnaqUrvhjTzRoP+w3lgxmScaUeR/wLlJR0kR7bsSLuATW1uCfcwDwLRPeIpZI1A7/R1R4ZA5AEChYaO5lUSGBUERiCQYIlAn3B3hcDbN5cERlUC4T1CNYg8lMCoIDAqCPz2vEQIhCPtApYIDAh3zASKjhdPIKsEwisE0uPRGYdFIPIAgUJDR5ELgTRVHCMEwpF2AUsEhoS7xQTi+akQqJBCoHhLfd7TD4tA5AEChYaOIlcC33vzsZwtHCBQnsM2CHeTCRT1OZ5AVgmEVwj8hV/7tcNrYuQBAoWGjiIva/AVQiAcaRewRGCTcIfcfU8/twomE6x4D799Y8m0IwhBUcD9zyGrAA4eFacTQRGh84Wg87p+P4HfT+ArNk2HJJxWFrQgd/iTSdI6/MikV2Vkv/I3ypzefRczp9eH5N66r8qcytrId4uFsNDvX4dEATP4AU5wh3Buf4Mjd+KGSC1vl3w3kvTBNRj8b0I1uvamceunfU9ZQXJiywzHygXkKu39Z0G3ygjIhE1cADbXQVxogbmaCfNONr+QbGDu0se+Mrg7jTtjAG0yo6D8WFo1fmRRGheKiaEqwUrqNJCV4R4sIu+6rqKZWK4w7nYWv1l8Gy36GwmhVYSHdg8gNKMR7poKQjMehd5ohKuunhwhajgszGIX9Rp4xngmdpqXd+CM2wmSF2VeLSfr/PLk3XmyMEIHqgvA+a1wFv3R2eTuqwvuAz0BENmwLB78t26jYUqyRh4sHsFJ2WJo9A9cQoYSp7lhN42+AXpIpUs0hgIrdONNsCgsku0Ejk4CcZ3G4feaLBE/3jtOd1Y8uFsDyezDnWVuckvU3U9r2ojsVS3ouoh5I2E17q7wR9SHf6XjH738pZh5QK2dG9dYkR+zDHypZdatpOkXqiRxH3TaOfIt2vnRbfTYGyTbo0eyVth4xKH1Y1Rb0Q/R4ueieCynAFpA23airVTgKXc4eBpuey6hruxiuoVqQ8Xu0I0QeUTcGst0fdpkDZf0FMi1cbQINbU3QrAJOxSg0Xfycqrckc8QYg4aiSkVmKLnXYS8XVDmy4+O22m34AR3UJbY1iq+LnjiJQX0DA6UO64uFB75jgmfeWPWZUR4CE0eui87aNyM8qYWbGrfBFCc/y0tWLlj45QNZ/F33gi0DJZD9oxFdxBt/2cEWi4JIGCAgADa/xvfGa5N5tcDARddk2ms9kFyJ/aZXOPuCjKlDugCyn7xSBG5776NNbCDYkC3JN0N3XP2RTfd9yvfufAmKCPWhsus6pDQnvncZ9dgAfKSO1iDsVUlndA2nw4JwvHqYmXaoL+gXxUXoCo6A1XxC/2qAEDghrQqOlOriqyKDr1sNaoDaztU1S0eKWrjjGptoJetsbE8hstm4nvQZF2SGTrhzOs7t2343KmUl1xbuA7Khm8tdpbzRdmCzT2UUTsppwi2ku9ATr3lhnvcLBRS9MfqtW/BfXt8Q3ePKn/9zhmq/PWutBMLXJsNbneRv6BvU/8gIl1MOGfUcCKqxDljDJxtqjpU6bqq/ljUZYC6ZGPG/dzGKhuoKUtWUtEZpKJTUtEZj4r2+CTgNOR2W9dbTGEbxwhbP0bY2jHC1owRtmqMsAO3jQ57eoywfWOE7R0jbM8YYbvGCHtgjLAdY4RtHyNsy2BYLDt8mEQZa5MPJY8llyYDtr7vR8RMTp68TxMjkM/Rna3E3lpFjTPHknX92PN11vX25ijWtUQoq0jyV6pSZCOdhOU7sLpxJqlkmAb4zE4bSEYQJ7wPOWHCy306+W7kIAF7s5FevpMtuc4jOWVdI3d+yLBNjv+aNSTgAQRo5Kc18s3ivZe9r7bnSeVuU+8i8W5W7ynivVO988W7Qb3zxLtOvU6816p3tnhXqzcR78EPijdir6qxJCt7SEjlRUmX5I2LM/r2FkhuHJyHS8uQ9RJiV5Qh6yTE78OslRDTh7mXK9yIZzuirV7qZwkMW4pTcq9lt21UdltGZbd5VHabOKT03gmvNsVquBNxr6qEH+CqgrIZ1IoMSgk66PWD9knQ/krQXgn6h0rQHgl6shK0S1vif4p3Ti+flc9lxgg6/BdnwUjezWe5YARhb84CCPOoxnKE3GlK+9Z0+DsHHZsvkwNHp1b3hku3ggvhqkeouq+tuNdU3Ksr7lV9N+6OS/eBint/xf10xf0PFfe+ivvJintvxf1oxb2n4t5dce+quHcWbmGrHjX5SjmKDhaQp7/3ab+xa2Xe8Wu7wyyQAz1DGGLBcbkKLeIo+nIN22+KQG8BefQwmhBetjTf74Mj2cg3rQV791rKMsQNWZMPGSPSvaWb2dcqxmvRWqiI9SqlhC2BeEvLYxcg2E6QmSCCDnpszpAiDRSLdNo+NU2Re2kQBaz6C+UxFOAjwMRVSjRRUWJfiQ7KiTl5J+cfF2etJUUUgEolyU7GuOU9Iau+e8AUXW+bhuw0WadstFVWOm4HMattNkQi0QTIXC/chCauLBSSZ2qF6gM0q0f5ENdZJsdi2FFgcUG3pFhTFmmzyRrICvM1rx5BubBQnPPHXlRWSL9plGfOW/igAVC0je1Iw461Vm0ZGyW1y2+7AMx/E8ErcNYeicy1d8J1qra+AVMALijsEgTAxnRbDRKaRdWh1AjgXQNbXoRdMAKITVxH+2T7tV7n1o2GvXPFtw99xSvXHcee/yieuXz78191ZRAsvyBRED61Oi0abtNfQRPzfWBqxz8Cf+1QqxU1GyEkHtiA2zzZPZHLcfeDa76EdVq47Gii/00MiKMEFSmS4RxFXoQ0P9PDEZEnx4pIKPyFRadwAHhtBcFcSX9uATBXMWhe88TVaRxBXOGRwWWAK5gAF/ih5AXi88fCJ2HoMxqKWZK8h5GPfRH5XPUi8jFHKx9Ty6dvgjD3WX+vybAZlmmpYogQQ+YfzD2Ff0ffKmjQHy1PGyz9rOLc6sXf02IL1PkitsqnPOSlX44TrXTO6qSXHMScU4rhJ9+F9+UxR/1bNcpL/rUS9X5M53oKgehyJ53cihie+ZNVcOZmeXKIU+oKDIqBE6roy3VYbkL30jpQQYqTwNUUv5ctmixK2wp2gBaHPhgKTUG6pS3X4yyQXEwaSNn3o+x4Sus6pS4+YDtoSsV7xYS1y/R5DJkLdxmJeVTuu3cb5dv0dhmAHses1pgHTI8pQg5Pmhuygh3hYJe79oB5rPIGsZS/h0COya2IAIAPVOqg7k8icSZ6WX7GsizYKpv2T5Igogvy4y8cge/0dcpuMSM5NCFkQd8+ho0K2I7CdkZj3c+QMxnSViFtH9LhKRZXwcysjc8cepefdhy7Z9M7+XRIDxfWZTMdRbXdTEehXamJ80R+CceSUiVd1xEzwATiKGnhGaodurVRX3hpwoK1cNuyzdf1OcO15Owqk0tOnOT1WQifV+V8x9ZgKX568F6+lFfpt2SWX6aIXAblI11uUOSFeRYLOa9yooEYVhoI9NkiWPd3wijB4NAtCoi5IN8RFo+qbE0Q7yGF95NH0XEo5MMcglJSg0TMnya7EKZbFeksp4FoLqr4F2UFIydc5hqjk5NKyaCkm28JhS35KKEjuCZlC6CgsGmWlCbNhvuXQZ/eX99R3zh6R13C/tuf1WH/cgLY7w7g/fIEsIO7+k9FU4fd9QJg390eBXvAGrMSCmlTK6Y7vm0xC316DwWQ91N74JU79dKwB99gw3vfPfDKfXFpPwQsK7wqvyB3oaVJEb55hHftlz3NiK7vnMGN34hY6hPLsxQAWCQHRmSCfEEKEjnMxV89SKsQfW/4F/n+5Vfk+9zn5XvfKfz56In8ef8J/Hn78cRSEgV0oi3ldkBYLTXy6Jca2VZLDUoqpQZxlVKD3kqpUQQtdVHMC0bEFshxnrzvwLG6C2kMiR2s5E95QVrdNslKlWBzS7LWXHG+LW2PL7UWIzjuB8MdFIKNbefrxa5ax9j+Hl/MqyIYAdskwPmUgLz3ijdlOZxO8ufIH81TxmRChsY4jLbCgBBdjBD6fkDqKX7HkqWxo9FMWFxHJIy6RjMAyYhIOacB/LkkUkzCOxf3m/s/rgfpdzIPcEXaBnskBX1A+GiLYplzsG2WpzjcfExArO3QgG6V5BNXa03X67J4SUpObrBD9F/ThSO5J2LIWZvvPzRTAebHpDQwjsUT0RYkcNfhfGYOu3e8xyf37L7+YAbH2ws8U0yHKHvUYjpcVEriPCiLxcGua0OlDiX4vaXZdOi/ngGbUyJp2MJRz0z6DEPMiQMjF4vtATY74NOnI+//kttQX6CYpFGN9B/ZgccyobbocBBuekQJsVevh5A5Tr4RYi5K/hjFp072u1TrIWpT4BkiMz1M3fDSKDj+jV0fwZ10JidNZ6EeunDvWBtmDX4dMOJIJhZ+dAEHe+SgTyhB5ng25NpLygZI/oSrnzo5atkjIhp9IjLjumQ+TSiINSMK4gxwDS/veTxUJyjKjtHXF/KZ4Qxehhg3nYrBVsSdB4n92XJ2L5Va7GrTjgqqvozfDcLjOqnnoxge26qs6vdvVDX3J9Cy3xTFVqYQyZ8tjxUN0FP07NSUqOS9MNhRxBiI5Buk0iN/d4w+4HMzkRgv+MjlsTKuEQ6B1tyZSzLYQSZIzA1+f9144kB93Vg7RO67PjPmGvPYu1bXYP+gS+4/vX71WLBfu7GOd193FF4WWtdluh0/F/j+2wxJ8+ItLpfaNdZxG6wrfRHeX5S+FmTVS1+DfMU8hrVvu7rrUhXBUOgZ6wdhLCMRo9usSENtY8zSQe8k423NYkLKL7bV3xEFWHhNEUExk/q1WfTBRODARqlxyi72yJqPT/nYgXxAXiUf+F9sPkGRjz26+fhFPmaMfNASZTbiHS8XxVvPrMzFSi7ygM0fyAXvLO6qZgP/i8onjgcXZr++MI8V+/yhxRrrJBbjWEAIwArAmMmDcZJHRfJgwuRGaPu5weS2SO7lVogfjzyCrWL4eBSGZOY3XFk1QDmX5omS/wgmkpsPERxWgsOCA2GDSTv0JX5DrSjKaWNYXSwDXixxO4OMCzuXUPL1Wz2xLkHwM3vJxnfxmlPeXqcRL/jqn8+5Mda7yfVpcd2RRXfQnfbGrDUgydMaEOiFFR9cobF9etypvIU0ABB5543gHVBbRTIgV0EwF1MU83iiZMLjlUUk8rCMswHD6b20g7qg3VXaBaA+28O6HPI6teTu28cia1B6rMlb21Ut/sHRaG7QiBeMcKdoLMF13cgAL5lREajueJykBnQrKdkQ1kaix3Vh1RVllGfwEN/g8/Q4LkskJ7xoruQRYHWhZKnrMLLV91hqHWt1uQ0MmZVItjAxw7A8svj6a+5JWzr9Dt+TRTdnCZd9UWPPol85RxnWpCJM3iJhcnBtHNE621v1iXnmJ28+41dFMDwqT6Gqlm3HqtB2v0LbKNx22sY6tGjMRK/pE53fS1Eq4BJiuyv69+SAa8ehbyy6o2qGyvsZyVqIeN/kWXddvx8VtqdX3ZcOExAPeDd8I0yXnLnuD/hzIwxlhm6Ybg9uCWNpDM9Jy+oOnfwNPb9P/oF32TmFuJAbvt5UJc/K53gUzdcsNOCKpTcod8hBscIHlRU+GFjhf9vY8R/plG/WdZIwXcwjBoQasbNi5OTDJOsxqjkFAeYE5iy/AhpJ5eprg61tCUz8pcD4K5MPCxObm3yL1R2IPiRK/kgxJr0cbIKeUuhlGNkIIezImk/clpIfB6Q71ryGNHiINObThgJRbX9BnNprBW6uRH0aUaguek1yr5Gw/6rWW4x8N+O7epUcut5ppGQbNN3Bayir+1aSwVJLEQj4vQX2ICJXkh0Yo2E+tgtl9F5EV2QSZkq2jyqVeJS0r3C/W9DTQaK8wgHpntB1Gn2uVKqsULXeSOHOFubqhA1cjZKET6TEic9aC9B8162hVrZBc5VKAZxRatFVseWlOzKuhB3Syvl2BGy7kgKOkQBYpwE5u/gw0tTeIcK/HodSOwLxYBE5cwfulT6p+Ey+e5ZSYhfgqFqOhBCx5paoH4P9jMUUVnY06UjoKFL4DVSy+BNB69iVjSv8leaKoZU+/YVXWN2KpyZ36K/OLkl9p4siHl5hw6XiFAHdRKWh+BryacorE2hvZG0+rWVq0zJmmaY2qGXAruviMyS+YTcM0YzEDUF9KuswmH5uSgYJ007saAuV23RWblLasbBxx5fRtsTNcse42SPpsWdC72PDvdwd68JpqHwP2h99N4Ke7b/aj9I5BHKcm5OSMsH0ePcKd/x/SB1hSp1z6bI04+bMmDJAn0BpTyClSxi1TNxcN5e2d+krcyh3fCVpdXxVSgoF3bxz01cTlhPdq92Jy9LXMJbXlOV7rXstMQTp68R3kjsJKE52r3MnL0nnu/npT7qf3Jz+lOT406Sb+qcuT3+GMv4ZIrrM+Gfdz6JWFlDGP+cWpKTVOf15d4r7+XPThZTxqW6hO3VZehple1qZ7evd6/E5XXxnuDOAYJE73S1akuYuT890Z25Oz5Jsz3Znu7MuT8+hbM+hbONYgheTfzGVn72z03Nzl55HQef10vPd+doPzh2O/48frLTV7pKM0106oKWD7pJ8lhfNkMJD6s/ATwwCJWxSSBOvwiJN2BiOHzJhQP2xQX0zmDyTCJlEnMnnxsqEp4km2Cu84pau+Z+oa5o0Bte8LO1w++GE6ITVnFc3fz31zi5MVOM5JayxDIvWFEGZuORD6TQKnUahsZRxOtE3AyKevZRsgSt904fj71gTruTzvvW3Cl9o5H5kA3kz62ztrXE1jFy1F8gplZYHn1w3p6E+r6WZIHQB7p6dr3v0Hl09IwLnxtgqSs7CoNICoYTwU0p1W5wqGEHgKLGuT0SQ5EJpQJG/AC4EUEJ9BinC5VaPnlgmD7qLfZonURI9Zo8oWGI5F0KlWIrXv2sFoUiMazYsKYGcVyzAN66caH/gyatkl/3XYmv+c4bcH1pftTV/s2+K7pPvOKZ8IIv5yZbrNKoUNrBwGOvyHX1dVyKUQCRVNF9wwx1kJ9Oa33mrCLX17ySWlggu5vYrnjUSBbiyQ3PMQSxeAb6xKzIp8q6/VKWGxQutp52kNGkGt+FrzUp/EprW9k8lcf0hi4PhiAWoZMkGzYOqSLYJZPJwYaWXypH5SGHVMJ99nYeLxy8zALUnWq+2S0X3AOZS/vzjtcPJSpEgwBs7Q/mWfFf8NTQNTs/NQo/3aq/zDF7ANpdndqFHfn61228LnLLXo9BueJWLl7VmMNWdwuBKsKC3eYAYHUv58LLlmb/Qs9LnETObw32EE5Ja1BZGh9wQzOg0ZrvE+ILN1ySqxmgwRmjbpMhGRWyuR1DINg5Jg7KiFH0AtASCnowxPtiHmVHW/huO13+lTyASXVEi+Xl1KfNCNZYGMuf4MVduezn9PGOW5Xa5Q34jlertLnMB6id+0pgGZjwxpY/PstTHoxxVR85RoFXeUjcQxpMFzX3odjj5ws7veX8Z3Xlq73r6GrxuyGgCdwFVxrJLMFERyiy4JGueajwkIWhHAIjmLku4CrBLsgBADRdi6gnl3BBXBZwtMg3HzdSF9SwvIUxx/OnEn0E6HqNignna658faL2eM3BikHwco4mdlevDsJiP+ycId0pA1nD2Df39jqqiChzYTQrVUdzUUeznMIsogeUZwoYiG5agDyD27ve4ODix/7dQ7MpTuv+L7mVzcMD58/5gsOlxF6wFoxdC7voJTwWvsRsmwomwL8gxTNOFMtcR1BWUK3lhrc9QyEjG+qj3kA4FT0zwMhj1J1ECn0NLpreAfUTN33r5P3tOo4nI/J/oiXU/gAj7pkdhZQAMy2Lu1MxnY8hEKwjpweay5dxRuKUdRV22fLlk06E0PBGidSQpPdNG2lY/LdyXZW1J3aLUWVykT6jkaADR2CSipMz4mqKhXTP5IteM8Bvl2ZAMka6uE9etPJdjbBHbwSgZKkKoIZs4ZTfotI366Bh2jYHR0cCYGO53bNfgaGcGhgfM/3LzZ1bGRhcUIyNkY8cbGbaWHdDExUV7vkG5FuBdr+4uy5KlwyLgmSbJR1kVwrRSDiw15Nxt2DldBG3hnEFOx66ZWkuncNPOKh6q/LdFd/SPRMS19y2L7syOqdh4hbtq4/WYj8B6IWbBl8WirGo2PudVz82dGQqMtZ5FIz0txBzbYd/BwmdiaWw1sIrp8liVCDwWXBkLOQtsjv2KyRv0RjAuavIGrkk0B0XGah23gUJWDpcsjnBkTqDh6fBz3gi5r7rc4ecCuFft8ZbnHg5AVj3qLZfXUDxgcdaXkBhqmgBr//RHq1IPfSpHPlpRv5BXzpmyYwbOeo75cGr6Zz0m5hPX4y/NRnpu5BL4Eze8JE1yUQE6Ul55u9l0DJc3V6QjbjaCeudRJeHcJ0Frp8Q05/PzxM0Y6XHi2ZXGsLreDgWeNYEf50E6u0OfiD42zpO8g97DLTFCQUTcnHQ2E9KjLuRRvumc3NNqkIPT7Lj8Sjy7Z64wccfhspzv5Q0BiPfCkTTBjU1yGWyEuw4ummY4Im8EKN2ckbSoyXuZOhquOXCwXUaVOzsNESi+irOtq7TsQT0Xtjh4JP9ejuOoPYVzOoaZaj8DVbi6p+I57JHtyebgLWHadDSsMF15lenKK6c6r5zqYB3fTctbybNr5PgsRZi30DuOMMCkpEug5nShN4f8Qwu9EXwwd3SJIaDgl5OfnJct9I6ldCvdsdTNnzcX0NQ7m2Lo8zKgO9WbRb7GQm8mPnlE4DPIRWzMdHw4YBq7EnIl7JpNrmFyvWyhN0Sfly/0uhDzU36bQpoLvVfiw6nnkqu10DuBPu2FXkafVyz0UvrECz1HH+L9jseHgV/BykFpjsRQ5bFm6nNnw5mBudPwfFmZOw1HE8JvMQYAyt4J06eHydPLX4XpEzPuQu8nysxfpSuLnD8+7fX54C9SN1YbvYWuCWGbZAclVp/lMsLfKkekzm5d9wdZWHl/HW6qH+wzONg2UI8jUZoHhNStheDiWxfd7jwOuCNrDgzs5qBKEeP8nrNUeP45j9dYn9Z96s3Ox9bAZ8opFS6W/sgYu1JIEG673PJiZrQ6M1qeGQ3o4mlE+NKUh4fhJPlv9/LvBHTDXG75rtynF6t7t/GW7xHeRn+l/qI9n4kcKzJiprIjEzXIcPZotxFvE1JB2W9Qvd9vRcURttoUqhJ/fgWXBa75jIrSD/Np8mlL6a9Hbk5o81VfQ3JdPfKVpRSopEtR9BJhtTJyl5/idNcJSMpKM7FFJmDD/fibIe2d8oOHhvNvH4qZ92alOMtGeOOSBfnVq4JLINsOhn3FJdSOwZhx8QRxnQniuhPEDU0QN1yJe8cqe4nzOTgpgy1kL3xJ4stWDjstCm8JzA98Eblf6QGAvu4AO9DjXvG7PebufNRCKFhD59FEwxWAkVbLuYSRWpggLp4grjNBXHeCuKEJ4iavBZxDo9ABThQCZjgxlUQopc62y0/1gvhZS10d+3mVaLAExkcL4s9wIoF5yccd4Xx6ybdRVJkXGsGwJ2MJS951+nKd5GNSXJJfaXMDF422okmW0nhbgh1zffbCOXvt6E1P2yzPXrY/e4lMPCeR2etNaN8x5iQ77pyUWefD1Hd0MZHbXJZ75/a4CKifUs1Yr9QnaF0IaJEG1wXt7meurhzExM4fjl/IFPoE6nxQq1yl0otnIs4TXW9f4is2rVuq3WQ3BcBltXHsSLVpUv/F1+5A3b6wmqV6LbvFuV0LsA/qCRUrhfTFXRWhnXrF1QWAtq+qwT7TIPc/fufKCuzjqGRZIC4q5RXhjbjLFMXe6eVR8pdcn1gPM36Thpzvr0a8tRLx+WrEb1QiPlON+AVEOIpINvPjJj/hizARbzH5f+2l+s4XZ4EYvD1qy9d6dWpS8BaaEsIMekpo8uaFaeiC1LhQhbUiaTxIIaIJtB8ZRk4ZKU7uBRQpYvTnXIILN3jRjzILVJX2+Mb+WnuIFsiPrKm2x0cD1HF193AcDZPyYMov3oXZzOcaihaQW6jYbLNAjrvJCbbwUPTGbiBxNBehP2dh0aOzgAm3WeO8LqaZwDVKWRF0ujDfRIDwzykOBzQTDssCzUcrAPn5ZFQArjJD0wPvuQDuuMQMnt2TIqQIRkPJH2QmMPVRDHnJSa39xm7ofHwagkBIAOPbeB0fLdpLnb9iOVCWhAgVeJ09UP2P/3W9+m9F9f/TIwgcLSO+rg77gQlgPzQwdD44Aewd19fxbp0A9p0DsH8yGvaTvgxJzEfKebOupvLlaaXDBON1mLDaYaxWdFhrqUBfHsoftVS4JAuAibzk5CYCCvr447SUf5kL6i0VSkupoGMpNIauxd00C0VgKerpW5oxwlZtHx22BWG+8/thAR7r4MnmXj73C+LxG/oBAyn1r6+aSuN9UWGn0nhfGg3reH6IP3WxmVWsXfPLtWvcBcfXBcef+nLeX1PSQFaazIcnlLVI3oNi5v6gga9YDKURmrqKZhFF8STCcssBCynnXsGGFOIbjfq6Fl4M+wOuSIsrZlt9Fc17B2wdO7x19MFQOUtMxJKMb0TPp0Mi7V++k/lJpjIC8i/t5ZuExCZufg4dj04W0mGS9LOGs71U+pcc9h6JTJ6fIBMsHC0XYOFO20X9+RV8lJ1F1YWKOEJISGi5aTF8LyGqBLFfp0Mm9iC3usJhhoucr4WwWgiZM029EP6oQhhn62XwsR/WKbMg3NYJ94Vwf4Dw8t7K+VXqbZ0AuRcOVBNzGuUBpqhJ2sJM0haOyn/puE1RS5zfScnk1ZtemhEN9ntAg05k1ar0pQ/4/T5ABGgfoGFa7wW1lI1+P0CbaXKdYssrv1pDoJA1JJgxisbQk8k0esmaAjeO36eNoXeeh9Ecm19oc2x7qZoDRSklAVW9R56MO1n2V/ywjljQxLpNQVmawHnk/+lNOr/pxCbuxLw16dR+4riVFrkIldZ8cX34gWpRef8DL5+m5+FRpUoWNf8ol7xf9Kxe+NJcQ1g8ktpLVZE2kAHSy3gTCyl8A1hk/7ZeNriMNPIVg4MFZNWXzvwKHW2hG53+tydJr3uyUIZ7ODDcG2JFAELaS2rpJ58pGuUsMZgu6y/ePEfkidQOpI3UGotWINutKSosyE3fjqErKteVlS8HGmIPg8I7YsnIdWFfDNzZxnlcFa18N1s2gu2MzuR95CjM8KBhD9NA0lFpNIUx+uqjRMVepoJIiCYlYd5RIuHJgoRgUhJ+4oiRkPmjJngxL5eFepUXOL832KVzU+/PwZisqAuLldtOzI8OVqk/RnnspePzo9XsMyuMqO3PAJQzcLABvcEpoJ427HOiXA9P/4RshLIoHzqXVzyUIEF7hXmgAnN5+D1sL20tX1oLNO5HWw3QGAqN/pQJfNVR6tMHtU9PYQ165VEiYdW8KZMw9yiRsHrqJJxwOCRgtUdIIWU7WR9uTLl/pN/vHdgdRQIPHAkCjz9Kfeta7ltZBDtOx5F/7bxeNkQhdF7dnTOFpWTOUaFraKr9feSwspepf3IOrJWvE5bHTjD1Y9iMzT0CwXpB4E+IwE6AYMMECLKy9LL4qHWvKu+XG5gGhEid5ecnVoa77G5mToFtmXlkdjeDLH65nxEmv7rfAU9PxS8p8lEvQlEIimZM3vYhnd4PUhRORhFqTWgp+WVlhQ+TBZ7xfcECT3/pWeBpR5sFnrwWkh8yFnjaDzkLnHy/cxDDLz0LPPTSs8Ddl54F7nx/ssDt7/cO3Pp+Z4Gj7wEL3FAWuKMscDgFFjg8KnR1ptrfg+8RC7x+6izwYXCwdjQHy/xr5eLA9Q8rUUx5PqJ4Uh+QEp2F5WkmYudAkGz4XE5fyI4gL0rVv0q1QIsK5lTtUqCslLY7tyJT9ujTVZkyzQNS+yVTm9qpXzbI4y/ogzDg0FWXLPye+nGD8yo8ADBsjT9EsL+o/6gscSEf1WbTxdBth3nW6T3XEbY1yLdT127JfXyg3BLU9gydcAsKlM444Vb++oId1BfasHw3JDMwgl1XQDhznhmb8ooBu4BCGip0ESxmSnasIQ4Mh8ysrqGNyo9ltihVWQPvbWcUObmuSh/4h5sPwQRg2bMGt+AM8m3DIFCLn/u0IrhtobtF/HDuKab+JiuE/ZDJ/aXY8LjmBSMUZpM9TANA9yMVCAN8EUOkdEwsiEQ28/7gTUyAzjrN/IqLutPJv1b8EfzTxM5vK3/Zm7oJitrLMZzhHUbZUSv5/uJaqE6zT95WFYDJ9YncaAxyEeWaILpanh5DHCgLVClNzIPDoYBf5SBUMsCCYit0brfL+ySYK7YuhhqcDkrTke2oLbajoZvGjyBzPHWSB7Taw/GuS/R3vYo6Lff1GdLXSyHLGcVG7MCJZJupFGBpcbt2nOUOpIx4eVtG/oh7M9iqE7XyhnBVgi6GMsk+1OM94ohrag/TC5VSTxRaBMr6kG9q8dbG4/EWYYxGuX9xmmiIz1n6tSx9N42QJWkoWea/rf0A7Ypcfc0VcZePHzd2hM07IDUEqSFITZy/NPdLapGxHyN1kIVMqb6J9DH0/HQm9VZwfK/pKTS2CTP59rmzFOMqSZtMd+B8ykGJj4iOiOmwJYEhiB8vrl7PGoE8kEUTxDdBPOUP4l23V9LPtEeZ36fdF9pnprOE9tV92mf20lmOogZo910DtFNPG5/47RNEol8eZgk6mUUJpvPkrf1jjRIO6+tK8fSXguLpJcUx5pJyapGThox7nt+fDrHA8/Thu045v7SK+cV3gC9iqG9WrTF+4WNvr8mwPRFCAPHPq+qF0MTSXRNeCl000Eeb1M4R+uiQizDtoeFf8HBOai1UZhpRbRrpXEmtc9EEgM6VuCHRsvgi55CBTLljIMtaf2hSJsnhZgLadQmyvAT5fcbXx5ITCOPLeOGXfbysOQ2e8/l0Et4mOmRtCfLr/cQOrlHcRWAJMRyjiyBKHkNU+1CPIQ6UnagMF3UYHVl9HNjF8hTuXCKt63A4J77INXgdarhp/J3mhvg7RFBxz1ksTTNQyhl9PpPlFHcR2ZntSyqKIsHhnkMY1cISvESgJBBCWYBfFfx/bSH4b0V4HmQsrjCM//ytqwYYRgKSphdsYFFDh7UKASQumTbhIHrSBvOXaUTZOFFbRq45OOmJ3iKe2eQRV9JzEVBF4p1JEa5Bo2QJ+10TOmgM7AsSNmH4jQsRJ4Sij3zxH8HbOqOkom99c9s7qtQj6OanVg0GbVuzejBozZoBqLKwC1ABcfkCIcMOp9vkSfHKdX//qC/6i2WlDEux3YaKRCxRsd0xwlZtHwyrie1qWMhiu6GK7ar6jk2sMHy+vnbIq+8d7vtkXeb2phCSSGO/d7jusTrs+glgv7W3DnvzBLDPrv79Guz7XgDsrRPAPv7wVTXYNQ2Zi8eCvWpnHfZdE8D+/XfqZdvZJPej1XcflfodwLtH14PDLdvkdTZxWxx+G7+wvnPbQD08PEE93HB/He+jPty7p/Q44CaLye4jVx4u7BM76rAPT0DD85+pwz50FOg9WrA/hv0x7Lpv1WFv/z4Ybze9gPF244/IePsx7I/H5uP2x339+x92Su+INzXN0MoT3iM6HvlRsKOHZ7kq9SoV0CpE01nHp0IhAQYr9Dy5KZ4sxNvblgtx9NGmT4CNYKCHzQFwEuDwhSIfPfgPqk+mA2HW5WfK5F8tfgO/IQhWExWcaNXqWNosFVsNQfVQGrooHe40YgpIJACJ8mG8pGvSLrWbTu+EMYU8c0iVjmVsJ8O7sOtTqFnhmsvpVHQ4nU6Ikk4ARCEj8/iwdDpyQh70beIkknL3CaxU6/y5b3N9B0V9fzrAC8YHq2oiS9iH/6UO+5kJYL99/aoa7BdHw+ZJOoy2ktImROc0aq3paZeVuVVKbLTEls93AOeiFc4sT5tAQYU3qv7Nor5i10S9BNSWZb0TKB+EpmHH9mn8+gCNXx2DRi81gnQ6ZYhrQQuzI9g3DtPpmMPNFHTd9PJkRZ5cSg2f4mHfkAuXCO1hnr6J7+VaSIMWg+4c13/TTYSJW96BB66BQ3V928BnGr6cRjQqyrg/cnOd8m9O0BLP/mG91f55AtivD8A+PQHs3wzQsH007L7ANKsvzA3ZDXxlZnMoU4Xnzlemvg5T1XyI0E2vdD4Za8kD0W0OzWY8VvlAuymqUiPXgBU5gwpTraypkfMBVQTnA5mOT7GP2kC+BF72Cnm+HDPg6kHAUBWs1LsRTtSC5UWiNYOJGkWiaDCR7RWJrh1M1CwSdQYTGSRiY6iRXJdK7+m5Jnt7Ge5jS40DCVTHhg5h1NFVd0hu5Go3LHuPyT8nj9NN0XLf9sn9jq/X10aF3flkHfbKYOqwV78A2BteAOyG0bCXiup5Ude52RYn3Dg0WskaIaXLFQ/O2TyOKBtIw1JpOp6m+6J8mBSGsV7LZGfxPhmah0X5kRjXjl0Qv9GYlYgTQ1S+SgmqVtdVq1q5UcNXRqjSfAoN6hv5MpmCCZQC49+VB/YQFMu3/B7kvLQKfLIYJfoE0aK7AikeNC+tv4uCMzEhg1AUcdpVSMTXcALJD+nHAMBIyuRh+D9XlJpsjMqX4UJN3Thg8h4c3UHvGNVR5qPg8O0hX+E+oFYB4X66Er634t5VcT/Qd+Oz4xaUbZURBI8C2SF4kv+HnFObfIS/fvLH+Kr6L0ilgT4D7cyzMSlAGzufaSZ8UKoHr3cdfKd0pqSXvH093pFj8eBUgaTyquBfUHCFjWtVMc8SqakP7SEf/PztoZY2FwTJ18XGoSWcgKNMqGr1LDH+btM0KlpkQgnOr7wibdQrvSla7dAUzXw/qjwqpg/wJDjXDBy/TmyIkbYGR6NVddYVWqEnqcWWO/KnHjWnep38KS9tkebQtNFBKFTFdVwIQAO9cvS1bAQFOuqGqpN4/tCGDzwe0LTCni++808/DA/MBG648epgcdfCef39hfPz7/2z98LZ8VEDXyJw8hlyfvLWGz+hzk9f/+AngnMJxsgc+cj6p94bCtKHkZlA7d5w3VWhOL98/YNXhZIAEQBfzOB7tjz2ib7zdoIxMarToLLE5BaYveQxNI6M9UQMQyFa1eVwdba7hlivUjG/tkgH2vwxNPHyVqqVyHCNXFZsfKxrY+qlZEEHUy8cmMUj542owTyk97jhUByPQ8WGEgESxWzFYm7FiMVV1C9EDKSJ0VVZQQhtxPocoxg5oPs28SEoSNt00lYss40MkxZkXVAUav6FXoT2N/k/aSfw0AkiJBtKDT5d9AAvb/eglxCJWj10B6mJwmxC2pbTcrV7xlUFp09OYWQMS2Ckhuusq1yV6jj24NCSNgiJ02LpG0ojs7Ro2MmJZNVhhwyl8VA2Jmi2ECTEzAZ73ickqBDi1whpO78gxC8JMTyF6HTifG5OJcTvE6KiCa4kZo7exjRdk6eG3F+uQz/smx1txH/YMt2xNEgxC5C3k60yzfWZpo7MbTkHFquCTv6F6XQR1QkkkdzLQyNRso2Rhc6v+RsuFI2ZbDhI2c5LJEglH0u/iUWEBlo5aThxrLhx/4bU1OEIdRpNQiB4vJaToRahcptpA87kLtCUhaScM6eEm36X2Az6XHG+gLhIUgnJPDow/LI2T2lINPtSQQHZHxSpLaNxTISChFUxgpxYNnJAFYoJzLCKMWuMhaMhOMTOnkjlZYKimhYUlBXsu4kwKTU83bRq+cfkyxoDRHXIdy5r4WmnPgaMj2FHE3fWzU+iiKJxPcm7gepKAwnNHaYcCddyY62oTg7cTD5bKnKxZJyOpmz82nUxxpMgEC62rVthfCZH0qXsFRH6mHDPjcNscyAbt9ldpyzm1DsAEB6xPlClLoyn2gmonuPq6CRvfkUadHz+uP6IzVey9wZzIQ/nNKhZQg7iR4zxwUDbOvPhwynzoExBhMc6k3xDzUat5IZ2Ps92RIKR+U4ql9nv2lRQcqG8YxfRUkmRd0CSz8yeC0TUUkkQE06aB88hYJu/cOt1xHD5JcOl3BamOZ1ybfxdQ0wt2ByLFc7HWheU1olei6ZSF9UHPoZaCDY2ZB3LnfPKCRMNEFLdUxugykgpIkXbfpxFnC3iqB0ktRkPgqL9SVNX8BtAmErqYLy4xaxqOv4Gyj7IvtcbUzlvkWosF3Msd1jO2OIAy0+K4i5EyKKJIaIiqnDokknVTsh4zcVqy8ctumSGlbXbKtdcdBWlTZL1+emtmz5AzRuMat6gYKanWsCdR7KAO49cAT929f1HpoC7jmQBdx25An5y/TsmKeCNxtjJCojhmtz2dtWgiYJBMih/9xfgpt/zySf18GnKR3ZvgwTG1Y3al65+qrZRG7VLi5+YWr3vPpL1vvuF1TuScM3L5kqpLCdDf0Rn3av/FZI71UIGWsiHUchJ53vUf6UFaIa6okd/F1Ym/dwvqMHSIAs+jgKw7xaoOs3IU/Z4JycbgVVtf2i9os5KjOAuH37ng5PO88+RaS5SEF4eYKyNJjU1ku8ozQUEwvFgYWlyAz2gUREgI9bfSVHSeDvHigviXJjfFsPsUpg2YNoK05L0u8eKi2Rf9wrUayCflnwi+YRcpXhCSCHHnb8cG1TpcY28zRw6VX4kS2aggvFAuV0Uly9696LbUeTC/mlMwXvpJOqf819hNJFDiPz3y5wyrpiFiAfMQsQfYSurSIclPBKJqqQ4MHmvHAv7emAita71JcOwieX76o9Rs0bSrJK+aNnINbllkUMnb6sd0b1SAdJ4T2otqvcfxItdWpTbCytSdmtvYbYjKjTRd6TGeyQglwbSIvsruPSSR+sxosni8x/mw4RIBpocJsiBAUWbFSJeN9zrnxyQkcpI9RRyfyK30xjgYVNuHat3FBE8aqE+yqFOflnG3+2Sa1fjyiypudqapJ+lENgRXI7J6pInLsjAEZLhpwMVYpYItGJOo0FKJa0gzgnriKLXcFAvOZWx9GETonqcIZsKHWl45eqWSWvtkwpnWL5ru1Cm+b65FwPrCAF9Hlzz+WNhkQH882WwHnDIW7bQa7HK6OZl4ovYN6S+JvtmqQ8b/nYPZ2eQM6eWzprVVm5O0MpNLX+zrJQV5JZmsNryFi3f7Lc8mPD4fBzooACRA0YYb6AAZ1EACwIROptCPQ6NyNWAiyFDdiE2YLgItdxX+G2dB6IdZbbQa8PzOi9a6MVw5S3UMs7w4GmLp4uqobbR4urTInEnvKyJHtcGAjpcUZC7zFoUIwYhgEZtCKFj46NprGthxLXkcipvnj9GEk5Q+i38tu/34ff7/gD+oO8P4Q/7/gb8jb6/CX+z74+YRHzkMYWcbQvtngya/8/ed4DJcVxndlV1mume2YGOJ+O0tFTTTqBOAU4ACVChcRJJ0f7OOX3hcpyFv08AQTgQG0guSVAROitHKMIBlKkcLYHKWc5RAbIVmGwzWYIlinv1v1fd1d07jdnZBUBQxPIjpqu66lXVy/3qdRfWzcrXMNM8rToLcZhFbJo9sKIuyeTsTq8PuQCwLq2QdHW+QMcAm0WrPYDAiw3NehiAB2J5oJMhAIDQigGkA2x1bFCQZtTLFT/4YaqMtPy3+TwiQAkJSuigYJ0HWu8z3hba7wNvrTerSOuYUSxB47wk2rAgf1HLeNTES7g6H5wkK5y0eRg3OMmAYDKBIxzENk6Sq7pQh7IsUZaurFBWruyj7LtygHLgyiHKoStHKEeuDGxY3FhO4ugsrzaGPi34ZzOTX2rp+AcgLN6wLjSPx/GPV+EfK+wgTqyrQNr4RzD/xIyqdv5hbLXzD2OrnX8YW603q6gq+CeVSd2oSWfUpDVqTpuSUZNWPqtGjTZ8cUNLa9Qk2ljVzHLZ0RI62Jk1mejTrYULbTqAGiEDQ5YRk+d3BQr9nCeF7uXac7p3su6Fi9E7p3vbdC8Q6dj9Yax/Y1a+XSDXql7sv618V12yN5NzVutieT3dJQUysq+Bij3Mg5q1WheU6RJlujqczbqmsLRgj3I8/ID5zJBDW52tcHy/vARbiw6aBDRJ0CSgSS1boOWaoE3TyfKDz1NYKHWt1aW8Z9TkD+vISnbk5axVqZFz5K125bulAvXOmBsLNemUahZCM1ql0TQJIRDfZY3JmjUElwMP9EjKjCvNWgxH6ZJDO1ijPbsR9UBgiKOyQ2qd8RSsMqc930KnylIKZEMKZEMKZEMKZEMKZEMKZEMKZEMK7JHQVgpCSAF29VlkSU1Ka3mcOu3V1Gns1GkfmCoVagiFOgP0sUqFdFkrO+xWsGh66h5+5WoFB+DON6mcjYkeEDqLWAxuSZzoGVK+ZgSg1lSbLrqHH+jypjDyEIznMPfb7/u4H7bfD3E/Xi1pfL+pf3lefaBImkJeEnPINEatdLqY+dgJGnSxOJW6WJyNupiVzvkuFjaVO+ydBnfYO3vdYeAKiIpsTCQlhOkUQQkT13IBrcFtCIGxcCMWDCduzp52gcDqobjcscPh7WKx2M2SLkUlv+XwG1/uU9SkCE8CGitaq8+RC2CWmfmltvZLbe1jVX5FW4csvR7GMkzBgX4BlmXO9B0nowHG47vax3p5cMmDm6FBPQE2ZZAKguEX9Jd1waicqz5UtcPQWD03u2jZEAzZEAzZEAzZEAzZEAzZEAzZFIxCSysIhuL1Jq8TIkBwXYxLnysiz3mwh8K4aJOb/wa38jlhblsAu60ziOwSHGyc2DaBVhwzCzgphO2UId6oeih9QCjJPD6vOMC2oM97FdgfPBGJyOWgjAmXk9JaEs+oBs4FuE1Uoude3sEqcCP/OMiMZKxrBIkCnAq9Z+i7iPrQoJv28YUOR6BppH2Km3u1LDUsFflMmpjmUhg7RC8p8IDJ0ZolupLxQxesXqILEIwuHGEdoVehVfIMmMDYnPH/mXJSHk2qY25kMbOnP4zaphW5aQFYtHpaUXNaUXVaMbqUc3o0zalj8eG53YNhmP83KDOeCtwjmxhVgxs6uJ6biqSphHYqPHtT0iHPPqQuIefuoJfTz5hUjBkpHWBHjR9nOcKfFBH+5/3BcjXCX3sjQtoneqsXMDz3zfFgllVmj2Ht9E0HwbNxnVBwE0frYuZZyK0ltzarlKmtYOxEpkc0a2+ZMSLu1cSeTKxOMC3z8/NHu10WohgZfLdjAxYBy7XRIq7RgvkugpGLGiSJmySJV5EkrpAENoPD12ZyrOCduuNa1zrRmPEXeMZwUIwAc15FJdVjv8v0XRJl9lnLXiA0/ZIY3MH5Hk7dKC0a6savqBsgPqGexbAy+RkhxuS8CUocBLBtMv6Ba+i2+RIIZ+jGo8EXCLagAEk1Y8VLHulZdtMYUktKcUQis/QXxYId6ZhXW6CBcOHI2CFhYCHReCuPr7FNsE1uYf4eYm1463+b/EFi3n98N/idc3q/Q0dCsyncmn8SQ+PyRymz6iNF8ceo+OMoefnBJ41Q9+N8TKX57wL11zu2qxMXa0OAJxmLpsWPett3rXjX7oqux/U2uu5fv4zChSgs446BcRG2NfLu6KYDWYBsaaHNj811HpSbXktvfVaZ4XwC89X+BQpWg0Y+gJ8/3vFrPdvdbZbd9okbqJ9dZDFV/Lv0pAPbzWUumK7HPEfXu4SIVhO2qhLtdhWYZYtBCa4Ec5fihKb8Z+GKdGjjjiw+9VZoKOFZ+8NAS8pQxaXCplJ3t/ZHqAbfR/x0F8IO03fuOC1K5RdcylIqbQ7Y5b0KxwWTOM6qJV7ywK34Q1LKRX+h+sm25zwi40Mj+5ukqv8Jj7pzsiSPZ9q+lUbcJu/fSSL2Nls8wcW32+J9XHyHLd61U5sBPFH/80QV8Dtt2+dcTF3fZYsHufhuW1zm4ntsceli0jym3gyI9+128Fts5s7OXUYgdlm3AIzDfHTrjiz8FWAVhRM7DBP7Pzurw3l7et92ddcOPiGa3+ERNy3aExi3q0M7ci+5S4bCiKk4gH/jUh9BXlWFg+QuYRgVw6ei3Id+SrE5/RSg/vjO2WGAnsMQ7RSxzi6h5REdQrMe/QVjdo5qb/A2cHUWHSm+qiO0fyRX++AMmJo99OALRo2LHdWFPcMUdbpDn3zu6cAKyh+/lE5E72ulk1E2Q1pw3+gJwnvX6y4y8tSjJHPd1zOGK1ffHODhONUJbG3CzlmXI9kJptMYBWM0gSQ62qWv36VvgKk7QLm78eV46NTRfCZ3eb/E7A+kOLV/h8X4/BQYx7tIF5p/lgjTX91pMLMRZMtTiuy3vvBCCXz6q5HtbsYnQbachGwAWR+y/1gGQPMUqCakBk2k0qedgdTAITU8kkUNpMY6AlI7OedWRzYgAaRyintMH4BM6yjtmeV2DWZ5wXjezQf7YKNS4LSn+4zRxj2gNNUGjUBpl1HKj/S6i8k0EdpdBSPRocVoyBgNdMQYDdsx+lp1JjDqHyFcqiouF0ccXhBgVoNsPFkcYG7tGqQmk5AKbwP818SovWFRLVfdCPmGWnUjxhxSg22/TgCBkNfIzhGzgCQ15qd7dWg92Nse5odOLvS0HhLdLiPW6f6iNHpdLqxdqx9b+eBTrVb/4zatXlcyDR0eaQUXfNhBS5Dt3ysv674sKxOZFv+Hdtf/fS9JCBKM+N2n7usGf3sdfL8UsV+X8GTQWqDvlYS+FNSgXo36OVMP72yY4hEvZfc/xsQ4ulfFLViRtOTbif16FtX9Qr/0jjCu++24fpfF9by/KObXiGvo8wdWng59/mSnz9eMZllHM1jischke+HgvVgG1DmQR++v/pdViEsIcckqxCUl4hIgLmHE+WtCXGoR1ysQl1rE9doR93rpA3EhUDa9FqlrkAZyQq3wmjme2vHc1eGX8xCTBuzf5M3fLrLiG7jp5o/YT+jpNNGTe7o7x3cZSR2EQjpAUggkhdD1jCskv5VIChySEouktBDkxCIpbUfS4dODJFFHEsGhYG/Hvj0/DjmdXJ4UOfdjj0yOx5A8bRh6Tk8m5hmgeZSyc56H0j0dLO+0Sco9kfPjhJaVt02LBX/jlTdiwYIf2vLvL9IKpFa7Mx++OH8v79aLMn4LQVy6Td55Uf4Jkygncgx9eIfd5AgumdWSpDvkaTQeViLzsGIeVcL6n4Czg0eVILHPEzJ/Lx4ROPT/Pr7EXtr7+RLbPn/El4kbg79goPIBvbP/8auXl2RxrvzKyrOXhCmYy3c/8J2VhVFfxoFK6N2H5yzRy5C4PGSW1lN2DmH+gWIOYf5BOwec/VzMIcxvsXNIIzsNO5R0Q82boTqhKIaSbiizaeWXQ33IDfVhN9RH3FAfLYaKGdRB9HdT/Zjr/3HX/xOu/yfdVMtOn3KdPu06fcZ1+mzRKXSdPuc6fd51+mPX6U+KToGdKfCrEn7yPa8ZNPiHZ99YDxrkjxh61fH+1I33Z268P3fj/UUxnkwcB2CzWTogf+mA/JUD8tcOyN9YIBRDs4/HHftc3LUPxAk9CYOFxz0Mu8H+lmFFBuzfuXG/4Mb9Il82RWQyz0aTeFbmXyoGl/mXnQgddyL0FTt4Gp6UZ+NJPCvzv3dD/YMb6qtuqK8VQ0UNnuX+X3f9v+H63+r63+amWna63XW6w3W603X6x6JTRZn8k+v0z67TXa7T3UUnv8Kz0vLsDzLP6tU8q6s867vx7nHj3evGu8+N9y/FeMJ1+qbr9C3X6YTr9K+2E8XcbaQltiGWjo2thBRUMRYxNf/3ythJ38ZOZhA74chJT/d1z1iZWT0zz59Z7tnoic+ms6d9Ez1JcSfl6AntPORbXSz0kKpEU6KpoilLjWjKBp7x/SP0dK+qT/fu4alDfnqqYzw89fgb7tgC5ef6/uM8GyBJOXqCR6VK3YDrZLVuM9epap3GEHie8evP+0InujOyU8CIw74dvhwZQ5pq+4Tr9pfXFQA4qCrRlmjt0ZaLXbTlNFJCTqAER0/S3HeU4DpHHVmtSx0lyrrBySkhx1KCeztK+BunxB0uFBM9eIEDOSZwwJECeiDfTLEV4IqeyKtVMapkrSpFlapVDU4eE5CNmIB2o7oQgD9FCOCsRrY4ObLjfS4kA2S7Ksa/rFWFjGxXNXUARrtRT2m85TWF1pdTa33vyWO1vlZYW5gvDYZRhSQ+SBJBzECSyJEkPpJ1SpJ0oeI54JhSYo8jSZcUb093QJI+GuhwOIMwLyv2mS2yCI+jxEdJuGA61R2o1m3mOr9apzHCDCRhRrPuyFImTkLEAcVGdiJKp5AJnkN1AgAKADZynIBACQGJLYFiJlCkO0yguJ1Av1M1Ap21G4GtY4zAoGYD/FNuA/qlHeibKDuMAS4GW6RVyTNsDAbAuauLuS6u1qVcl7q6PojSn2AMKMBfEqVvieIGB1Xx09+gPXikGRX4K1DGEArNNYUosbCcDtKIhnnWAdtIkKD/RCGNIgGdOMeNCtBlyFgsyyHKoSvDpZlMBx7Y0oHHLAdk5GOojdvkN1f91XjjmmsqKky//6eguggdYMseYnozxniC//E1j/ujPXtxvZ+S5rS5tX/vXutSsoRgk2qqXkynPJ60VVjQCsB7AN6rAO+VwHsO+Lro9caqIovPsCLj+OrpolOhoXxHpyl6xZPpJPdlPaZUb21kWv+u479IKRb8xbp+GyqKyGYeY9OD2ik+tumVaseDsglRrQUl+JgqzDbCbKPKbKNythHNlj985dMJg1N0iKftkE7ZASLkIQ6FuQVME85c5W8lrmeRgFhJQlXWdHxelaYjPqtNxzjWNhnA1pzA62pp4EzMgdY2zuz47W02aIoANwHcpAn3lJqn75yy5BRnnnSN0vI0mifsAADvpLT28s5KwxrJUWsjZ3z8NRkf3krOeoDVa8BaF/Lv3XieygaRLk8R0p1paUW6axRPRrqchPT1W46PrSNfRdce2+WpTFdR0GE2DyjFSvtYad+udFuR9gNhb7nLFjn3T56rgof0ApkpgKQAsoEslWtKCyxPhQXGvCLMK6JXMQRa8WG+4+74rXfC1jtxu5UEYqoTCdA1qEykxRw+t6o9/fU598+sa8/f/7c1QVZTaU9F+U8JMvyR6cERH0Nj3eUY2F7dLUM+7CObCjWieEYMAC4IsB7Ruq6qz/wpfeedrM82hgY5PRpIkzg0+BtHwzfX83wd7J1+1dMmG1oPqQfnxqLEXF41slgx1/MFVgrFY+oWXdMF19S1YxUEoCEUe7tGJ32uduOFQ1HCdGNLN/b6NPtH5DqcU7UBvIsp8Z5LBDW8qmWkQCkQ7yymq8/9yXgVDq+AzHaSIawPiw8tnRZXhHnzw1enNdBwTqdZXeJ02uZWneaaunYb1mkM0FFkvTrtTWca72IdeIfmYYUlCbnQZetTYGK9Wusz8mxIC1jHexZYu82hXloc1TaCwFKN+sFaHlSrndZrSR/MLX2W/w1gsf66hMPimt+UqGJx/U+az1MPie14Ttm9orkr7+40N+fdneYevbuzoa16B+OU7tgvq4fCjj1WL69obtu7+ubevat3G/iufiO7+AzhbNrKH6+p+ZyqEGGa6la+PO1b+e5NN7ttj4r6Vv4C6hpb+RJ1ja38eK1b+cJt5bsJAOgp28p/SbED5gg0fVTyNBNGthGG0e7einOEcUahIIyrS0vCuLrBmggj2wjDcBxh/I0T5tvT+4IgwPTR4alTKtzmCwjQr7xCx+6hK7P7vVCrSlElXZXNqCsjxZMT64B8Hr8yOICeqtQ6TqWQq1IpPiakWlTj3hyBHBzcMbSpy8OgThw+hyr/9rXo9h38q/3ZkXWXfDTgT4eQN6nJd8c+pw96+az7dLDpBoD2yCz57h2PqOSs8MAwNP2iIxNYK9zoOu6ndXz3ZOuQ49fx1VO7jr+WPpv3U/U2DwQh1AEEIcr529FBRRBC66cGEIQuGtAHI2LDrrrzeE/h3ZwEn6/o8Nd0uCxRTlxZoTxTlDvg/g4sM9g+ZraPmO0NLkZ2SIxC8YByJPekL8jFAMNH7i2g1pfJgrW8THbmMStOhllRwaxqYDZoYDZymI1PjlkxBrOCe8rThtmPbkz2HiDZW6nK3mAdKsTfoOhtdBlLy+h29XJ1GdNrkI0vY+By5ghI8jlm/M4aGR8Ao708/ckvmoLhIvD6nvJQhbD4+uMC831HR2ReUzKvvzXKbZrbfHl11UgntEcKTk2NvaUAMBcWR5CK6ivYw6RM+ye2zjosBzHkQLFpz1ILG35J+Qq1TAjBoUNw3yJ4pjCkfYvgmdPG7tcQn1y7/BBn92VaxnUPOrs/1yfu7q5drQ9Oqb1MSs2eGK7THfxQNlsfuS/9SqJSv0xU6ttEJetOwreeokdM4jFNjxQ9UuqRokda6ZGWPVLq4eIeEwx4CjODq2Lvf1zCD64t+KS6aHTnR4q6LfKrtmjGssOgsEUzlh0G7cJ521ml7K4qVdxv11XcYnnjt6rKbsEqO9dw3t2eTvfJmu7LEnwSONUJwzob9OD1pEBuqCoQvQ49KB9kPXiQlnFjYxnT6sGNL+PPp2d85Z6sJzC+nJbxwcicQDvYX2HkzVwgVq7fXnS3i2hf7rfzOdg6Ywa3GdUJQFke31zwuNwoj79cTWtd9EafGSZbl3oalU345IBq85azMGNvhbgVNlKqXMR1woNGAguAKyY6FFxj/94GXG2mZ13Vy42q+g0K7rNIcJ/tBBcbjtPrH/Ug65/n0DKe21jGtPpn48s44fTP+nd5N6R/AjzYEism0DbkjzjbSQ8VA1u4ymkbVjT1tovVtgtVzRROtsDYS0+qmikluBIjsY7CldNRaqM66iunE/NTuzxeoe6LqwN1z+eqNn/H6Y2qrxNOwDQN2PR1ACphUIziB9nVeR7J6PMf6qrmEC3jBS3LOKdqNreqmniVqtncqmriDamazWNUTXzKVM3nzipVg6crq0fatM18WyhpWhXTCCV54pTgc4O7Fv+PBPJ3lh/quy8vpHW8aPlB33258yzbfcmXxBXNHRhX53ZhXJ3biUHd+ndj0Pt078jceZbtyDSwrcZgO1iNbUeV9e/QoPdZvkvzYpLRlzzUwzUvpWW8rGUZ58I1m6vhmkEjXONus9uyoXDN5jJcMzhV4Rre+5KVva9/FkrMq0UxD2wRhpDo8zNI9PkprWYNXAksBbl98YuxJIGlEHWaz9cSWhlJzFc8MMVjpffCLOYPqZpV6Ph9T8NHcVdWvpz/r1n+JKoY2bYGKROb21NpQq2AOcWYC1hlKAvIw819DMt3sPwGrAQvtWHB1eU+sIvzmuxyFS83RJNSOUqoxAjV5YpDM5diuTwiJqugG3lhzRuSb8Srbii+kTZuSBgmqQ2jQlWGtXWHuONZ+6jskTmqCdg394pzh6DoswAwkm8Zoh8wRD9QYsFm3R3Pi9c78vUS33yq+HVZ/M4KOVuJD1RMbM5ImEx8tY9h+RVYfpP4z5ISC28s+9h/fqrLOlwnE2BsfHXZMYFboLvhmGBQv+GYYHPjhsz1ZCZQVSZoAo7HM8GJUyr5i2MEH0a7RfgXnYg0e0wt/4ut4g9wY1TAu0S7Cphy3XX5L7yUyOmA5s1Jq3FrWdUzSb57WuR20YktsY0jRDvl4lFLh2lkd7EpujVoq6X3g2KS9E5PPye6Tfq5ZbqbkxfllrSqZ5K8T/pW5BZXC92ljcmHtck7vaO0oAVI1n2qKkJZp2lAsy5TgknXMa6ELmqk1Z4wE2sEoupAnHLxCx0lV+kocm1koajDpphmqmmns9COtqgVhkJRJMlXIbV+FXEPrFzipHYy4qQWpCQbRjtbdaKrU9PATHtDJ8zW0rYjwK3dwbPHd1bhJckx6VsRX2wV8rueuk5WcTJbUnlKTolHE2G0MMpgakapqgXHKBP55E5oCb+GPXT5stMS0/OLUxIT+MUpjDZ+GUzDL06NtPHLc2DFxQExRqH8B1onVF0urbIF870vCwqEGig6WIVQAQ5wOEUNiAL027L9epDA26cCBLAHpCc3yIaMPrCycvkEGRV5AFzUUQ+04xGrIanMSgdGdJYqF65CYcAFJ7KNHovVHguVHnnIY8ftbEkhTjVegBFKRneAFrhiuEnyAiEliNJqp5/qiCMscUDpCm0G42kjmTZxO23i8bR5qWzKBQH/z6VWmZ5GjP6mdAAFjkyrRWXBicqYXostvSyhBhMIJcdKjrLgpVaArRxsaIw3CynHmmTGiD3bwYpPFlRMFUYGAQzsfEUMQ/wT4R+FiITQgbNxND7oNoxItIZhQkTSqqCrjgrp0yFf+SAhC1uTkvNB23wnaDaZF6Ecg8EYq8JFB0tzkwWKXIqaKlPUFKeoeXxuu/Yp+jll1wnSJvdlktWfrIkaIMsKZFlClgXkJHmHkPKklrNJUZa5KQgKhtowQeMGQX+3KZp2PmsTzahFNH9rlWgCh3EFh3GJw7ikjlW7INKUXZ1xi09i3GSLcVsL6xgDI4Scb/OdJwuqILp6dfF06gEDDRXIKBwZx8vg2/kZ8pR7o63e50a9TfIWnmfQd2CSX9mUjslYBAXXhMUm47+fn+hOm6/W6ptt0BdjbD4LdmOy57XiOZasPvMwf050vVCMz7DnddV4zwuqoWHfnVPV5nzppm0/RZ6XZ/2tmg82jefliONcL0ecqWnT7nk9//R7XtPQyMnBWmk0WCONnIicnEZv3YjDRda4qobYSDc0eqmIQjbOEZtqZW10OMZGq5M6XW914Qc357UGDSXqC6crKpyu2DE0zGfELhU8q8qNSRHDFoeJrOV7NuoOTUY3k3rj6G5ahg+xZTjNLlGrw7NRdwboPyVHK798uXa08its8QQXX2mL93HxVctrP1r51cu1o5VfY4sHuXjYFpe5+FoUzx2tPO1pv8e/cCaOVsYo545WBhpO/9HKGOXhc7QyFnu6j1bGGA+ro5Wx4LP5aGXM7yw+Wvk1xbPhzWfn0crHjzeOVnb1D62jlZ8Gff6kM3e0MiOoebQy6r+Xj1b+/YlHKzscmLrzGqcH45Y7Pfi8h+XRyowBhKJPipy7cLSyf6aPVr5GinBRi8FdzwbrS3N1D10pnuHQNzX3ooZXZoRMGsB+fvtdtCgvl/vx5DzC7U1XZmrOXGRe/pgrtWeaU9NXvuqdWKQY3Ac4mbeHXPMVLFddYkQTPaJ85srMg69iOtxjYaOIxe8xdX9frQsG/0KgfHTFOAYIOq4YvM3pUHsG/cj6VCOeNR6feIJFhRh8ExB0ZArJJ4QIFu16ZYkLxbhoxYF0ODArEfuykOYmi+lz0cP0ZTH9sDZ9WZu+bExfaizATZtaYodo/Eq8vH9lcoeYlpqKSHTo7nZqFmR8NZNRMRnHkO0wgDiy+SDb0t1nE9mwWOkWG9XIhuk7smH6EtM/E2S7d2qy+USSP66TzdzF5MwYM2hWJ98bmHzRePLlwT7T5q46BWNQ8OYNU7CFfJ+emnxYtHSLnnHkw/QlTd9RENOXmP7ZKXgBU/CeyYJ3jCk30yp4h+6tkW2wB3X3rIls4swIHhYr3WIfUxM8TN+RDdOXPP3JZBMbJNtbpEAoPhf5J7zBLVhQpijjPT/s7xQ+jOUhiadFtevw0tLV5gtRg+1Km+oto0qFVz3x30Sx+74npPIRLns0df6B1wD0Nnmh6XnC/D7NwEOc67jaLi/WEnVoNoMej+ceh1f3uNZU/XGwusfF3OO1q3ssm6pj0eoen/a4y+tWd7nOVN3caXZRgw+gaZJ7Zwxlr+e5/cTaUfYG12ONKHuj7TEFyt5ku0yDso9I0V3k+OpTM0WuYb6I0sWZvy9fvGIYaIkwPL/zlHv8zG79ylj78DtjeuTQMT80C03vLOl4n+7uHXata5joUHd1sAfPwx3UpHiA1OryXulDJtqfG8amlb+fPm/6Le8ZeAbHK0s9kZgrDr9wmDTl8Eta7BL4WmJapneXRBVLuHATeZIexuxijFib/1pu+zgMINQ+Ii5+5YFfap986m4baGDxbmgdxuLTyBfPSefQVpmv/bLbT7huNNIQPCmwCYSel9GowD1F5bEsAPIBrEiYj0it7tPe3qEnATww081jkEEihbZMoUeyLrYRMNBvmoEQUZGj9ffmFPr8LgHcaJXchCVr7wlikMsr8asHd0N50Y7EIzAQ1ecZLu0tacrnuVs/6G7ReI90t364css35c3u1pbKrcCUH+VuPdbdgnWC1dJihL/kD5XwF2k36dsraqhItA1J5vKVp+zB5eWzUMu+eYr0Qb7voJFGMUbx/rI4QPG7ZVGj+EBZPOahvFKWl8ALQDSu5X9kvsjFUBp5wU8uuKEdVfJN1NiBLSA7rs8lO2xgS3bUkIt20DwqixLFOO9QESPNDhXHEXxzQ/MbYD6MIbjRmkVzVxr2B4tcWbQwSJ3bB17wC3uVP2XP7tyIqw9wphjuN54PWzoz1k+PTCOrVECNfWQVLTQGYWCqOTNAAps/h00M7V0Bk5k8kcygo+0THG3Bbanlusdx1Sj57wKbdajqZiKnRaPgQ0OatkPJN33Il0GW8VDmMlE8N8vdpkZ7o5mElrF4eVH7lBHfGBqe95J7pBnEKiBP40kyC0Y6uAKsExS8IvB4W3CKtAXNxOQC08vnkiVXUJQk09KWfCYllxh+zCU7QIdLdoSuLdkhElu0Y6S2aAfp5X1bBEv4SWn0lI3T5t+3zyCjD1Ie2DNn2naM93Ul0/Z+tWdEjMLooFCVfIIww2L7XtLmHzSnVaZa0aZVTvf9nkyVKQHPEv0TDLkvF3thAcBfM2VNchnkR8IHNbCEGVnuMXxpfhcgv7NE3sjMyLjJplLszfuoAB/O7af2C3vBVLPJhzfBDY6gEubygMDFcAqix3tbc+9S63JmnXzphNARx5S6++EPapweI/j5ZZ9lfXh4P3L5rKkTpjAy/16OfYDD/lCyaQRPpMDuJuB6aYtBSJobv/SweEZPJJgHBpfDGKr1Mfsp1C11RPEW8Fx3pGMey+wdOpcEsBPsO7BsZNLMJLpyDlvcT+8J3M49HPCWZt053cXV+Vmo00tmGVYW50tPBXfLfGnBGMRU8AYRMwxWJbjW1AVYmJkfjZmaER+NES/Bag4rM2BsQfbyq1+7aOiaLx33AIpe31w5blQq67lVrV9jWntFa0Gtv0StLVr6MLVovtksDPsDZgGGiUzdMTO7LnjHXC7gEl12edslpnfeCFdAzRZE3sn1yEbmHz26QHjbBe48dqS75II8nXnQjhcZhZJh0Bgjotq0Si26uyXqPMMbBkn2AchgOAuNTtehmQgwprs/3RNF5wS4H+A1cfYjIh0XOMg7eayNyJsAU/fKOYMCgzOaZhaTfb7CCMbsaKcY6MhYUkO+0FTjR1ebZ+ZOrblHOMhI7Xn4qTaHsW02fmRr4x9e3Xhza+Mt5s6q5o/CLk3PVOPHNScSZN1Gcw/k8rDpZwnV1XCRUsm8B1Q1MBjvnyvx09EdAw8/qLZ4GF/9yPHVm8dXP2pMNQhdI+X4iXTGT6QzfiKd8RPpjJ8IVyfMzZbZ0a7B7Umu88O/qX1gGXFd7Pp2LUt3+lKihTEpfASW0UmmkFIh5sKACgMunEcFzYXNVDjmcel8Ki0JLmkuSS79IJcs+C1csvAfxyU7wFYu2RF+gkvFEBea/y9GhRllloQNfhoEtZOH+yCg+/draGvgx8io2svLNjvhCRwcworuMJKeMIJkPs4UDCKCp7PFxiVZPb64pDTdvjPcsbPaA2eytbPX0KGltRYVWy0rltqv2Om4YqQHFQtNMHt8zUD7+QwKBiostQ6wbN9YY/M74t2Bwyd4llcvLTwDy6CFLF6K5XEDXs+By8v1/CYueT3PxCWv57/gktcDQ1EsZ/Fyt5yFy91yAK9YDgAWywHEYjkAWSwHMMvVgDPh+tF6jPe3nxdkIPEDizZP7Y8jGwYa6nSnOJ/MEOqhD5JcXKGllcSlNyxeticLdnhbdQSFHiJopH3Y+lFmtHzI1TGqc7kPdyJzx4CCjk5IR+dLpmHXeoEriZkrd+riycBHF7MJwi3AO+23qZa9aDs9jEiPGKYwB7MN71GOtLzC1P+bKy8jWAHABA4MVXmuJvmzMPAXJe3Qi2KHfmAcWbdpBP/26E5MrdjjOfL6Z9FGzuDEQRS/H1YZ3tfv7hjlCAnkzxFDWSYk5QI8swnPJvmyqkZRPK22GdD5I6j14R2UbPCzBoO8XyJ/Cm0GNx20D2ZFBpNGgC3ELtV2k9mkPZTmsxDZSzzBTOZf4DCbX+Iqw+YkwnL2xghulU2DineJX6DpxDqY1+EBQErgsVEUAD9RNWksf+bI5HPJ+h99rdu+v5l1KE9tcCfHIbdJWj5Ov4UPG22TaZn6JfPft9lch5DcJfM/cClmKB51KWYo3uRSzFB8c5lixrO7wEw8A3bUFuln8mgWLuIzHwvzP8uPH9tkbH4M2hwt73rejcCHYFoyCN35CektHsnFiCkbHxlideg/ANF+woCRRxeQFIbi4LtYZyocAnj5/0jL79jlw2kRq5f/h5XMN0SwXeYbim9xmW8ovrXMfNOqWC2m49NCsX9Jq93l/bxpNGCVRVuB2r9pGJoeZsbsjHrmhrreVFNPrCShvrviRR38XIXXX7FU5fUyZy9/m53K4YvhZlOyYLHPKJNZ1/8b3zxY6b/LS14QRDYl5kCnKnSH3F4tbdAWgpeRVpDEoic9lwmfEjofTB7kL4TPzRu7/EEVYwGwvyt3rTzml42PaAwTjsXhe4rQtEWel6X4GWS9n+7xO6L8JZQc3lNnzlwO3o7JPSqVCffYnPXxE2czUDYBZH+zDhBJM4g5j3z8Hoeu+hq+7l2igACfB9u5PyHT8ijrAQNNsxk9OJL14aApPbNNQun2t0mH0he8GSTRqiBJgNs++pJLN/inZ2MMmuCQJzicSSoLQgf8Ak16RvfnzIhYoVl/qmfMI9gM1vqOJYaCFiMsbEZ3INldDqolnHeU6C6CiJv41CQUMO8ugog9LTg3kI9MwgT4xKK+DvkoKXdyfuiOqXIH5Zs6nw4zMhiV5WlIm4rTkJIRgOuQV5bWUw193TmKbXEz30tpV7x7tLYtfqi6LX5jyZLzU7NkI9nw7GXFc6wo21mREy/7uV+yoquL18SKssmKDGBaVvxAQAmDybRsyAwXWoaLaCK5v/dsY72oyXrhaWG9UEdnlPU24ew+Tq7sgfXK7Msuci6xg7Op5L6ejsF6rPdmXIoqeMwdXcbMaKoWalUpqqSrcpoyBnsmlFic9Zg9U2bPnt404tF59T2smqfgxi9OjsOwaJki7ygFmOn49xb+AjvUqHOmp+Nd5lhzD51E8fuLsybJtcmqXWbVBKwqSj6N2/g0ZT7t1fi0W/JpVyfMp+ka+LRf8GlP949kKfNpj/k0PTmfpq18yhMc9pJiNWhdMCmUD7gTy8t6KBkmTWtMmhIY4tOU+TS+rKRh1mcqxpeOSdMcOBJ+QijVeBqS9qZgpAktgH3FmOMIN6oGQKzAXJvoE4bCmW9wKKo4xNOcAA4N7Y9kCjiUOgR2pFZjcCgLHArc9tHXTJhHtHhMtCzXUslnP+AOMFy7m3n8qWPdTObPpjatpmK3p7UjHZtcohR3tbJvDYQ6dW/rFCdbo7b+mqg74jrNBy357Ioi6+jMidUYrQYCzIBHRmV479rnUEIqibdhemaM6Gh7AuEnSozOT4VReEmXOi/pVGFSjsOke+2sikn3HlsTk/FaMele+jwFmPyyVKwop8CiFphsG9omvwsQsTUKx2EO1iZ9opCEGpyA43LtJVyaBVcOUQ5dOW5wZPvhy2mBVB6zGNAdMSQByqVObwTB/0eJBegxvAlWItN3yES9guIiFTLG3GSBHTQ8mkUHhsrgLbDDVkdN7hfKHx894kGHsgycaIMWU5AwRjaP5lsebR5Bk0nosUxpScpy8M9sGKA1pXnELxJ/OQaG+IYPrRlewnnKpA91WNWat99EWlMUWlOy9pbofR7rbq2qmjrBNF94MU8Nu/mKsytwBzPkJBf3qG+aJO+QMqwZe59vFfuevEUfWCMAMy+siypg8WLcpFSMuLRzUgf2lP5gLuugXazjuSyG5TMmr+NMHswkwRllMZbW0cGI8BNTLzJH/CgSFugM2Qg5dHbZCPkGfvdI1gE6fW2g+TCaY9DpW3Qie6diEB1KoxpKwb7WBjsjGySHNknf5akfkiXPVANt2B/lN3e3gvHoRUbwLuFyCW/fmv05BYKcECMDHZMxJVSeEDy346JM3UPNfZjiV4UGzK/cczWxR37cWM/vHGR8YiH3iW3yj7nNtZ+4kdv8sRhh3Tw/bpT5+Zu//p7Xh5fSDN/7metMy6Hk3XAOkH8Rw/r5V7/w2XvlpT1p8fjWaktBu9hg31svMsPcTOsoF0TLMaVlaS7fL9juvxu/3MLfu02+3Raxsptp1oDTWNIJs6TDoiTl377eLutwsSw0ul8UMdG/BpozhYVRxL/s+LEv3ViN/H7JLLDYU1NoxmNpOTqK0CyHHP9L2fvqm+2wxz07bCqoM4YBoe2rqgwlU4CThT9P9AakZ66GdFcNEiLBv0LzCN34S2J1tyXhunGrQ0BjcESrucyUXuj6/OGnWYvkhxyu0OF+RBGNKGGmwXYTmNZ2/jqYty/SeoN3oL2NWwfmzQuMUVSbVj9bjvLWI9dYRvMKyiGi/tIdpu4CuSy3KycZhlUyy2eGNthl4zCt5SgjKubiOYa1ZMJhdUzXS5gTluQ2ACkD5Tf/7Q088LECk9wnUwgiewRS7cnIHZX5n30UyACbtP/Hoxgb1p+lNMcgTN1fYv6Pe51ulFbeXcZD1FK617DoDouOT/0TZmWW1Wh2db3Z3R+9kZslaCbLZtfUm137Mdusi2aqbHZtvdmLi2YdNPPLZsv1Zr9XNIvrza6vN3vT8kFuFqFZXDa7od7s7UWzsL7SF9Sb3VUgJEAzr2x2c73Zdz9i5+bXm72l3uyOopmqN3trvdnzC/TKpFi7pX/lpZ5buQbCIAvFwKy2bAiyteTw1/6elb2tpSZFo4MyM91selTV3Lzry9WNiVxbTWMGuTqGM2eYPIa5oW6Dstu9L7fDDOww+ZB6cjtdtvvUW2w7XbI9RAuI2CJfuWN3Bs2xk7cMzH4CVCG8AivjLNLzWh5dpL2DXBRbWEjzUUhn4vQhRMoqO0f/ZdTyJQCtCkmTMAWFbcB6+dqox7KgTMHaGWc9Es5AHFwHnw1TxYPGRVi727R4O29aGB/H1b3D1r3hYvcRAYuK3UBB7q0Wd61ohw4y/mNYQqz82P55Mj7pXxBGkJvB3c+iZ+MI19/GtRWBwd89m24EuH7/Qb7ho/CXtqBQ+JZN/3SbjqlsqRfj6xOodOn2bK4LpHRf6t9aPvQjwZKt4tIO3kuy+puoI4DpcpfS7UgWe5VkCuw2Y4BdONzj2iSXgNz+n9sTBZ67HcMoUiX2zw+Sk/4BzQnyO402Q2Kn0VZI6DQIzyPzE4JllcFyPmt+/CT/PvOjkvzfmR+Z5I+iz0khWZR84t/dxofKePnN20bkczFH338RVrQLbPdWtlm8KzcMrJkSBfMKLQqLhQcQOE7Xq+2qlFvT8s5Pwi/SEpL7beu75G9gZ0mkkiZMKtKwtSkaKHCsrjFQdAXKrQUUXYHyEgvFmtQLFD5DIjmIIuErxPBAjPnPV8xftEcHu+jil2dJI0F3WGCMDazy5m27hHWiUQ1hy9gHopvwCJAQixcuiYd419EnVLkuBsFwbws2VMmPrUld5ILl/FHIFf/sjJKLeNizvHuXqDyB7Voa8FT4v4Z7vZXda3znhBUbz5P9MGXZ3aq1oQ8G+RqkSBmov9BD5OmvyU/NfGIK9qWzwBbw89fWDz9W98P/HN7qRxp++LGG0/rnovBo89f8nXXCbq774WiUhfnh49e9zfrhn7TeNdj37zFcmH/9Q7dca/gusJr/FtsiYZ/OJFTROnABaqMSa9J+4X1/FZN9JfmH2+RL8Yv27H2/sCzChcRcAaCxkL8WVS/UoP2bb236oVgMGtLzef4XJ8jw+vk/sIPNYI4LuMAOyut/r+kEc7tbBZxuwPlMYeSO11t8wbT4WWrxCrh/1u90iOU2meTwRdVjzI9+7WDDX2QRJ4wzrZ3Nv+OPbeOt1baSvQU2dF8HjWjS+cpvIFHnGT2/bmUzxUpUaPVkqSvr/51bLOPoEt3suvrILwP1SNoL1FnrVmDIouKr5nJAqPg4o8J5DkXyO0+acTKrfSMKe9kb/sItB5lMX63YSAbaV0J6QVJi4v0fqz44OU+PvQ12Nrh0eEcuyAljVQp97MB8rgkGPq/rKG1HhooMYwvYQhIO0lcakCjss3W7qkxDMTSGFewbSoazq7tgvwpUuD+MyTsZxy4Fx+LTsRW3yhdBoQA+HKOw4VDSC4Dat0evNDxL1lyodGpJS1KUYkxGDmhoe7IFkdp3ztl5FFWoEdmSfM8smJP8qYMUA5NoaT2mdzovqkJ57Zc+kcJzj3PnnYND05aNSmF98EM70aNwwYDBT3i7ITmcMeUjVcq+YrGJu5mVc5zGN80yo5y2oMqQCnk+/P7olt1moo+raHy9F8EUD5gZ3IilVXJx3lXPPXp3PffoPfXco/eWuUclTfhRvtVquYHeV0/6eX896eeP6kk/HyiTfqogPujcVjQ65rKonDemrDemrLuOCjyY03dlHnOtccdKSzuoRjn+9SXVnJ9Ceii9yaQ+cWJUkApXMQySnGI9oGMK1LPfEOTd3UczRTLia3gquJdbLjbW17DZIIEGF84R/bASQWHKj3lNP9Q6n7tWZmCbC/MOPlRVf7GaQzfeg7P2WNXCCkH5sKH5UsIzkFCkxJSGlyCL4DS5i6xu1fsK8rs+vcr7CvJlNrjAWA3UxVpCQi40oMhEb1dbK6BuL0BtrYB6gCoNuksxGYYurhvieRDvwN7azP7jAQcgSdXBxHyINdhnm3+yU2B8TuFosuPnvDgXfVfJ7/vkk8m2TcTzWGciSQCxlZTV4wV4dxQ8Y3xG3N6S049vqtxmImoex1HcuNxK9Fm7xvj645EM2e3Ovw1OspVYUL4gNo+X2Rd2MNKQT9BAlJotwxq+DszG1qcg0hQd4mk7pFN2wB4NOPuAPXaHF+uVi90yVLzmwH6XW+FpTXu/nkO4gn1zu0dojbdRDWtpD7/xvr1Q6qgzc8A4xUdsAxwWZPqDxqEdylAS0fDaNu1dUZkRqMxvsJ6MwCfbi2eO2arFu7bYLRvY3bIZs1sWmzVjj4nvcUaB4T7OKEizBEz4S0UCTJRLm1gQzeWymViAlJm8a3MKwNmBTrDktGDrrk4Lng6Yp4NVPB0wTwdVnu4y+DhLsTORcIpByikGybgUg1aexnhZAjILGgkbdeBp7MKlfB5uAgZKKgyUlAyUlAyUgqcTnUzRIZ62QzplB9537IGne+AsXmyKxTK+hwmvuYcMJDrDsaf7OgVPp5anU8fTacHTaZ2n7fmzPfC06Q8C9+1QJU+DF4ZpUmEamoBFv053Ex8ZdpjTye6sR/xkoPR1z2xr9XJZy+To6eTXsZ9kLqJRFhWZHB3e453RcbE13mt8kLCvhZ4pkwx6nOyWEKVDINbmWKacd4l1uTpGJn+sDfPCnnivtpfb0zO1vMseWxeXdxnRFq3U8UmyhG4tJX5+aolHKsFWpBLsJNvz8Jb0c5J+TtJlu6RzCito6SS9qIvXJOmyKekMYM2S/jf8HQcrxgppFzNJzqItj9jvrJFQKnL+4BJagRTat9IYaL8ijdo/OpOgA+QxZHk08mKf5lA7DJOiN8pb+HWQSIcFWcI5He3OQgJs6s0dQ5awQhZFcHRIPUEcXPsjpFzYzfyjyfNiyoUKplVghE3g/ZzSOqe0voeVltrDa4LSKlPQYqSgdUhvCau3+jpkpQU1lRQZYTpxKWhYqykvuHKIcujKVpkNgIOO7oMP+qzMeqzM+lBmNCIvv4+18rDlmIxDjMYkW2SSrVXV3R+FxWNMbH6n0AjNz8k/c2y+aVNHRNARsYGS81cmgfeOjtx3qusZkymSpcgt7OEuG4u+fQeiV/lYvHsRAql9zRux6TT2c+DQJFgS4KLeZk4aesBfrMNB4+rMOUkfJTMfx5OGkYknGWaHLiPdmYP+0/053QOXGkY07JnU2BPwdGKB/LrhBcRHMBP6vGmf1KG56JEU5pKGhlVKefjHgb8hgD0WQN03nMDzSig0GdsDl8AjeHHdFhbcaRWWl/q55mx6KFw7H5ZHIKyuCUEp1n6MElzxFAFb7QNr2rzJHibRh/7pV/RPv9Q/fat/OMsVMjxFh3jaDumUHZh5EqjEhF9UcKaFc/JmCtNifBB+CcQl1/cbOXkN0wIzib4DQrR9P8WkUc2QfdMz25UGWZCgCt3j3gPoUfreAPojuqzx4oNLN22V/vtK6Z+fTvr57A73QHM6pF62SL1LZ65KvUuVbkp9PJXUu3zp70mpPyf156T+OaEPqY+ne90JfB+2vubEHwasiUTHProULz3oCAnRXX6S6ew29zu6a+Shu1oeuhaCkYcQS0YuPn1DJyzkoVPIQ5h7rEOsPEB2IA8dKw/hKOvwpLokD6mVB+Trw9G1hQUUIA/uI4CQh5AfOxI7n4nykJTykNgpkvtiwCWkMMyaMYkQzBdWmC8smS8sma8DeQh1OEWHeNoO6ZQdIA+GapCHLr9L2JSHXiEPHd2zif6GGCwP4VrloVPKQ2jkocfy0CN5CAt5CJ08dAp5iFkekAtvukEg4kIgem1vjr08JmnoTmX/+NiltRm8uGLwlDN4jTdcUh1iHWNsHkKeveorl73Vr1z2Vr9y2Wu+ctmwhn7TGrIB5Ck402gnUZ2BfePFvnSJ90aZGZyljGuWMm63lE3N4Cxlq2ZwltJphhZL2dQMLZayoRl6Vc3QG6MZ2FLWNENvKs3gLCVrhu8dS1nVDGePpXSagVWDUwwTLOVlQrg4INK8Jib54b0epq6nxeCFz7Hf1/1L6RdH6ri4Ihrl34/MyF2LM8Q5fHoZRlEVOMrCMcqle3VmNEmAq8UsPDIUDO3QTnpLi3o9vd7HvsiAW7EWu48ecLmMSgskPlTCkNh1Pg+MCvjDkCakL6F5/oibJ0c95a/V6zWmg/18k2o0T7Pc8NwGzbltTgi89g/wORLJH/mNF7lk8UJSdUucv55b7g9jsxhRUigDZZVBgE1pAWXgkzKIygMcJcJOm21BoMCawYcy8MftF6t2ZWB350PgmK80T9Fu1+uQ3+/j/XEfkudXJM8vJc+3koeOFOL1p+gQT9shnbIDlIGqbtnbF9icMohd6kN8JPNrqQ/+GGXgUh844UJAGSDeSxKXKaMMYn5VJ4YyAJOSOnAvu/msCmqb+K+KxJU2Cj401UOFScwZqvqFCtAepWWBGwkDvqFRYEKY8Dv5WOsYr6aa8CCuu/jq4x4K5yWXDtNckK3t7UE8ETYKcUb6poP28XkIPD1xxYBhb9KbAPsR+f9n7hug9FyWrtPdF7lrctcJjrkrtu2JJrZzzHvfw2fOXOPEtm3btm3btp1/14Nk/s/+vrUG1d1Vu3ZVV/XT7/B1SYe0SJckL+NlpPudvILUeCX18FZK9FUav0pWgeVr5PE6XpM38Lq8iTfwZoK8Rb9v4y287ck7vt932HeBg3fxbq4URt6jEZSw4D2IJ+lVzgAggycZkR4ZEyQTQTIjEzJ7kgVZfh0RZX8ga3Lm2ZBNEbMTMYei5ER25PQkl8q5kQO5PcmDXMiTIHmJmA95kc+T/CSV3+/LAsQrEOEpw4IomCuFlUJcK6wYRVAIRTwpqnIxFEYxT4qjKIonSAnilUQJlPSkFPFKRcktHQCVQWmUSd1XDw8pSy9lk7OOR7x6KUcv5RW5AsqhgicVVa6E8qjkSQIqIiFBKtNLFVRGFU+q0ktVn3U14lVLzro6qudK4aQG12oqRi3UQC1PaqtcBzVRx5O6qI26CVKPePVRD/U9aUC8BhHrhgFQIzREo9T9fNaN6aVxctZN0ES9NKWXZor8PprifU8+UPlDNMOHnnyED/BRgnxML5/gY3ziyaf08qnP+jPifZac9ef4PFeKn8kXXPtSMb7CF/jKk9+o/Ft8id96EsNvEEuQr4n3Db7GN558S7xvI9bfBUDf4zt8n7q/z/oHevkhOWsv0EmEh8TUA3ydH6nzI3V8jVSSxNb7Had+F5Pf4/dh6yW9FPfUmQr/dHsi/JE9E/VB0JbRv1bVv1HhCb/Aof8DEb/iLStQikOcFmsqVYo6E7zQJQYdyb8OGBBKjdQKlkb10iIN0nqSjmBsRbycJK8ESq/iVQV7jUragXjdYxO+gjcS5U2CvVnC/MzXe9GOMXmHC++QuSsbLGk70s97CgG8B3gi3Iz0SC8ZmGbx+zaP+Zlk9P+aeCZkRCZPMuvcLySLP5cVWZDVYxtmluzIJjmQHTkS2IU5JUMcMrAPtQ1z+W1IxDzPEfP61lE/MrgCyI8CSVIwYFaIdoVRCIVjUoSki2i6CzHcqBGLBo1YEMUTpQQVSjBc7ni4oSVRUuMqpbqlUQqlPSnjn0Rl6D9QKRv/k8SjLOJjUg7lpDyNGXkFVJDycSgvFVHxpbg1PzO1/1P7//q/Yf+J+5J+pyVJUrMUUidKmkA3LdLqEZGOusHGe/IK0/Qqt/jVJHmNVfFaorxODq8XtuFOv4E3lMObavIW3sRbnrxNDu/gbbyTJO8GSu/hPXKIjl8Ex29qyYD0yJAkGfEuMiZKpkA3MzIrhyyqG200OXCjkT2Je50JORIlJznkLGyDvHLDbbDhMcnDhTzJqi0v8iq9fIqWH/mQ35MCzDlPXCnEvSkQ7g0P3qBji6CwFEWRYLcTuNvFpVAcCv2jg/e5XenATxmuc6tRNibxpBBPCiijMZdTz+VRDuU97nRpVEiUigynEiqiUpIkUDeBcbwoo8qorISrqFlVVEFVT6r5ZVTteRlVj/+71EB11IhJTdSUWkEZ1UZtqRWHWlIHdV6Ka/dz0/T/fBlRN6gf9//XD17H24nRwfGzf/7YIMn0EKRPkgyBUkZkVJKZVCl6kJOkX0ZJkg0ZkC1Rsge6OZBDSeZU3VzIiVye5CbJPMiNPEmsm+zImyj5At38yK8kC6huQRRAQU8KIR8KJWrZoPDzQiwS77R6UDQmxbhQLFkhspKUfwmFiAopXsuntJT5/wrK1/+ZnhNSDvFB6ST4h0SZOJRh8ZigeDxJoF3Cc7vKJO8/tJOkauCyGlWroxqqx6QG2dQgG1RjfqLHdU3/cY2qqJ0odahQ5/8rxLqoq4TrUTfZw1sf388LsWH834KHd0wao7E0CQqxKZpKkzg0kWZo9lLcrcxOX600/9mLarye8p+5dJ4Pb52nU8Z317LUf9Ih/Fqd/6em+OJV77kptDIp/sr/vyTBTGqJ40xcTFIhVTCTUn7NmV/HhK/ng5kU0QX0cMpgS04HN1COWbapkSYWlG2Kf1C2KfSZJ68x7leCuMlSXg8NeQHFGzF5E2+q4VtqGF1Cafgu3pH38G5QrgkiEHktDq/x6DPB0ceLJ3EzhrgklCnADWo3ppdQxc2quNmQFdk83jnfC553HitXC5elmyS5Q/s8oX1e5EHeGKs3n9rnp33wqPOkYPzPWboFUej3UphJDh50MRZtUSkWb1mlhVE8SUqgGErE9JGmlVUKpZA7kaVaEqXDUqeP5Cde6L5csBTUbExrlu6jC2ZQstyrynRZOcZarSJV6bIaElAtiYVaNSjUGoh/7oSVGhZqTGrTrLZuX1SidFgnVKuLOqgbk3qopw7rM/cN1GlD1EdDTxqp3BgN0NiTJmiEJgnSlLjN0BTNPHnfL+r3gy/ifUAnHxS2l9UJH9YfcvhhYbs/JZc+ovxRYbs7JU0/pvxxYbtZ5U8of1LYbuerO7+wqCGf8jNn5DN8is9i8nlI8wt8Ll/iC/kKX+KrKrxz6pXzN8GVM8Y/OhtG9TU/06d8E6J8i2/wbUy+w9f4Libf43sN8gcNysMP8DxJDA1/DN0nhYa/Q1Jwv/wRv4/JH/AHNfyjGv4Jf8SfPPkzEuUv+LP8FX/BXyvJ30jo7/gb/u7JT35WfmJWQqzmyo4RSwuD5kZaGrQw0sqAQitTSVob2rYxaG3QxnjS1vj2bQ0BQrt2JmTX3oBv7UxMOnAKHUyY1I466mg0lcx+6LaT4nY26GTQmRZdVKeLrxNHpTDuribMWDcTmnU3oNydFj0MuNyDUk+DnkYz0MtoCnob9DLoTbJ9osT3jSj2i3D6G1DuT+sBBlweQGmgwUAfZ5CPM9hgkMFg4gwx6GNkqMEQI8MMKAwzVWW4RjDCYLjBCCqNDDIz0rxI7ajI7WgDvo2ijzGcwpgoM2N1NNaPOtQcF0U83oDyePO1TFClCYZVGaWPehPV+SSDiQaTCDtZdSYrLIE46Ze2kSk6PcWEBT1VR1ODHMel4lcyQlfTdH4a59enDLd0us5M58zqlGyWGTqaYcJ2mamjmVEEs3Q0K/IwW0ezzT9omjlR0ucaUJ5LvvNM2DnzDeYZWWAw38hCAwoLTRVZpNEtNlhksJipXWKwxLxoo6VRjpZFwMsNKC8n8AoDLq+gtNJgpb+bq/zdXG2wymA10dZEOGuj7VkX4aw3oLye1hsMuLyB0kaDjT7OJh9ns8Emg83E2WKwxshWgy1GthlQ2MZ+2a7UdxhsN9hBpZ1BVexMVhW7oobbbbDLyB6D3Ub2GlDYS4B9CrDfYJ/BfgIcCAAOJGu4gxHvQwZ8O0iShzmFw9GmHNHRkX/QcEcV95jBUYNjtDiuOsf/YcOdiFJ7MkrJKQPKp2hx2oDLpymdMTjjp+Ssn5JzBmcNzpHs+Si1FyKKFyOcSwaUL9H6sgGXL1O6YnDFx7nq41wzuGpwjTjXDc4buWFw3chNAwo3TWW5pRHcNrhlcJtKd4LM3EmW2ruR23sGfLtLH/c5hftRZh7o6EHyhnsYRfzIgPIjNtxjVXr8DxruiTp/avDE4Clhn6nOs6jhnkQN19xy1NyG7dBCRy3sP2q4lpaLrSxaWrSyMWltOc/mkzY639aijUVbzrezaG2lvUU7Kx0sKHSw1aSjKnWy6GjRyXrS2fpZ6GzDLBC+i7rtYtnPEf/VPEp1sqvPLNrsbjYUutuwsnpYUO5B3z0jTr3UXW+LXha9Od/HgmZc7WNT92mn176+AYG+NnjQ9lM//ehnccoQob8Ne31AhDnQgvJA+7UMUvTBFoMsBnM4xKK/laEWQ6wMs6AwjBEPV6URFsMtRlgetIHDkeowBBxlMcrKaBuGS19jIl9jLSiPJfg4hRlvMc5iPIcTLCaoTRxGW5moa5MsJlpMsjxOrR6nfrJeQE6JsjTVgvJUYkxTvWl+sHpBnq7D6RwuTxneJ2fozAzOHA8up/wsM224OMuC8izizI5SNMditpW5FnOszLOgMM9WkfnKboHFfIsFTMBCJgALo/BptcjGl5HFFossFttEWaJOl9BpqtDjUhtc65dZklxuwTE/LrOpe7fQHVyh+ivs85eNK1VtlcVKK6stVllZY0FhjU2QtcpkncVai3Vksj7YivUhF9puUKwNfsCh841RuJssKG9iuJujcLdYbLay1WKLlW0WFLYx3O3qZIfFdosddLLT6gEaltcuxd9l/Zvcz6ODK5XstqG3PRZ828093Kuae5UJmy+ksC9yvF9dHLDYb3GAhA5acOkgrQ5ZHLJ6JB22eiQdsThscYQsjlpesI9ZHLU4Zn8vx61esk+ojxM0O2lx0sopG2/ltMVxi9M2Sc5YnLI4w+WzFmet3rjPRck4HzG5oEwuWlywuEgmlyy4dIk2ly0u+0yu+EyuWlyxuEom1yxfKly3uGZxncMbCnDTgm836PSWBZ3c4sLtYHNuJyuUO5H7u5H7e2p93+KexX26f2DBpQd0/9Dioe/+ke/+scUji8eEfaJfdXhKezyl2jOLZ1aaOwbewuGJRQuXJC0dmju0dDFp5dDKaeCtHei8tfta2jiatnHREcxTu63TG6V7cYy3cyos543SoZ2TDg7tnXR0oNDRVZFOTq+ODp0cOjtPuqh5l8icVl3VQ1ffQ/Tw6+bCwLs78K0bqfVQrR6uMGdZVz111NNp66ZycS+avldk2NuBb71o2EdV+0SGfXXUNzCkVXDo9FOG/R36OfSnxYAonoEOA5wMchjoZLADhcGumgxR7aEOQxyGMp5hzt+3YVFExBuuGiMchjuMIN5Ih5FORjk6DIFHO4zWmTiMcjJGKY3R+F+8Ih7rwkyMc6A8jijjHcY73eEJTnd4osMEh4kkMMkxrskOk51M0dxOipgQZ2qEM82B8jTiTHeY7uPM8HFmOsxwmEmcWVHuZkdGcxwoz6HRXIe5vtE832i+wzyH+TRa4DDLyUKHBU4WOVBY5CrJYofFyiYOU5ws0WwsdVjisJQWy5TjsmTls1zXVzgsd1hBVyvpHSs1HclfYa6KOK12oLyaimsc1vic1moC1vnE1jusdVhPNxv88UaHdQ4bOd7ksMFhk0uQzepvi8Nmhy1c2Kp8tibjs82F27jdgfJ2NsGOKDU7Hfi2g953Kc1dUVnt1tHuf1BWe9TRXoc9DntpsU919kX7HPjaH5XaAYf9Tg46HHByyIHCIZbaYY3siMIcdTjscJR8jzkccXJcWR9LttMnogSdVPVTDicdTpH6aQcunab/Mw5nnH8NdP410OGswzkino+iuxBhXFSMSw4XHS4R47IDly4T44rDFR/jqo9xzeGqwzViXHc47+SGw3UnNx0o3GQd3HK4pVzjcNzJbQW943Db4Q4t7moEd5Pl/Z7ji5f7Dvcc7tPVA6d3v+R1oEoPo4Q9cnjo5LHDIydPHCg8cTXkqfp45vDU4Rl9/D/OvgNMjttId9GNSdvc5VBWjr1zOSvnF0DnfPnuyy+HFXWRzoFNaimGo3yj9I6WaGlMrUmelebsta1A+xvKPJmUKHtkryxapuTRmXpH5X0W7cdnKzz8VUA1unspnY8O24P+qwAUCoVqhEKG/VOZzieMVmu4eJrGoyhxDsIa7d5eoVP73zXa+njAzWi0Lt7ttM4eUtZqtLB3DZ+ztlBjFm0d3q2zZOt1ut7PpF2plyZrltGhfi3RGcZLYUv/JcFLYxcl57aI/866v0PlQtrtL4ZK6iP25zyHQXr+rhkJRyoRhhDYoU9RXIFFZI7/BVT7eg5cAmlFwLR8hJXspi9zEEchSaP2Frxq34RlYTvUP4/AJDW3RN6Pln/zmoe2/vjWfb3x8Gqcl/62cA3Uc0xTKPwOFH6gIBUp3me+siGP93QDMqQborCovyMqBqnZlYU5LM+aLvAMhbyouZ0YKq+JI3vtitW5AOpWAJyOmLscokqiplL5+gqz8+ZviQqMfLlO5tBBZuH+LyHkHkfCYw4up1v+LkMBa+yNU2QW7cL92nFal9A3ldGMxJ8CbgfjGozLyx/l5e+xQmy+dX0pkCsKaRTfopqU5LL60XVFuaQcboZjV9Ud6uBnnZJ1RQ5lRg8uymgzGGU5o1u2OkbZURldGzCqttQB1PQvqHH+/okrJNaVbxxSmQMK0VXKfO9atIAzl1h+/0HK9ylfvpHwTHw4IIT/KfF8+o216g/pcRZK9btU7BfWOJ0a+iwMTvzxjpXZqFNnSu59sBYUwvotjnM954zYG3XzmRs3lIJvMZ+pOm0QsgjF8V5s6bEziFMplmOngReWu33mKyfrkt+59k8jjNu1Yc/GUtyuF9C5G8wvVNWnRmuhqrGoNEmP8i7gbnumgNOEQ7lRJgjbBXTCaVS6GQK7f8qtOvu62nIbxN4msR/xKtw+muIN/26tsFq0g43xdWTXsyBCKdSSxeOTuaCZEplmhYvpFctWNJIeDHI4VoAGQaM0YuWOJRLEh3NioUQUftzGBetEWEzSpfTIpcel9NilR6V07dJVQlfv1SZqhfcpvyfxRxRGqFM3y6xiGastK00vW4ILk5nEAXBrJ7WYxII6elCuqqxTkvVrO5wtSwtKFyXmVAvmaJOqGGi1nsfyOpUG2bReCKPKAuckGosnVKGHJwheCfuxeOhTiv91YyX+165FoqjeJ+GoINJF4ncuw8HGOP+HCGFhZDCOico/lMRB5SiFg/E8OtTOeqxW6Tyw0EIeIUoCk8bVwKTahcLSPhi13VcJrZU7EOu/y/Yh9W8SFoS/0hykIiK1wsW9daam4UNMWcjgfED8WXWJN1WMExoE7Fx3wAWi+39kzyLJhYMYKvPSJgDSCGY6AG12oN8l0JeucqChB9l2UEeLpsobbmv5vziqJUGZvv6P68MyIYMN3w+Lia4WsYDINgvlzb4cg7CwwJl4JUwseK33oDMdhhFTTYtVbCrZsJqNN662bxsuKtcp7il62ylW1X7RopvceZTZdNN6CbzFJYzCCn3hhXXlCo1+UKiQCuE3vBE8SeGNUdTziGMk/9uoHTD4+5fWSyzXnMfnVxeb2mRN1Lx//mUuzOrPFXSro8iDUmnsr++My8FVKSj6guzCVv/y6Ko3SnTVbqwmVlWudzB8DwXGDu5qMV/Km8Y4gcE7Osf4wiY+O8An7UDG0QxM/Jcc0Rn7hSfsN9iEO78/iV0gfOC9M3HK1BKstKf2oZkAbfdWvBVIxk4gIe5MAmZB6SRg6Ti/GncvcRV9BG5LzU57TsReSW8a7/zLTtvee2xJGql9aKQJ0yTpUsAnQyTYJxbZAvtWAhNhEOWVbuGXiHdN3tzaWOTiiGtuI3XXYaRT7WPV42rgmuUdm3iF0Zd3ondZI69tUjPFIznHpbsjJm0DmdGM4sCIyctaxfJFFslxG5MHaHYBTbUZaatb76Wx6ywKI6xIqGD2Tko9W1KhI7utnURymJ0Ns2jTU05f5uAp+e/aHTBhUsoMqdOGzreZ3sem25/aYAHCnN523LdXh79rUzVtfqDR+machixQO0H+8EfwRtoZmCSlS1X8f/L4kWoy1mN0LS38HtP2H0cPkxu7GkyWVN7u+27wViW8eT4tgW5/DqA0hrGZYffK/DpJO4xAqNgzaFvHwdEd5rB8KgzLh88UseZTEW34FjPy9LPw0mgfuKV6YPYK+oVbdDQf9oj4HRUPChhbk2oyWNFvkKzS2BeQRS7NAaATZNgY3BRTMEXRJeoAvqRwrQzpwF/aHA5oCGwQ5ec6zuNzHcyDvumWJqBgs88614lR1Hef4vTDKLscZWa6qn0XKfC1keXB4R0Ddc3aZqYt6noONA28oa+gZX09V5KpCHusM0rpwtwGF7SpKacu82iI03J35WFKyg2pXl9f/vNQX8Gb3nZiCElmFqCvV7RzfY2Poq/MYkpxGG9lrIA5N8/NCviUFK2YtW35ArnuqcrVCacq123LVFNsgcptwSWknShxMEFTO9oIYM6bgrOz/yLvZEbW4VVkRKcaTN6/GLW3r7R9RU4aHEzkk2IrP/BJ7uHvO7+jU5rksD3jfPuTZhX57KFRPFQs8QTImXwo0ECkmtxezHAx+f7zE4c7WMFFAe6g4BYquDjALQju5QpOB7iXBbf+gjKuFuDWX+Bx11Vw9QB3neB6FVwjwPUEd1sF1wxwtwnurgquFeDuEtzuCm48wO0W3LCCSwLcUHAHKrglAe6A4A5VcBMB7pDgDldwkwHusOCyC8u4pQEuu9DjNlVw7QC3SXCbK7hlAW6z4GYruGMC3Kzg+hXcmwJcX3A7K7hjA9xOwe2p4I4LcHsEN1/BHR/g5gU3quBOCHAjwT1XwZ0Y4J4T3JEK7qQAd0RwMxeVcScHuJmLPK5bwZ0S4LqC21LBnRrgtghuRwV3WoDbIbi5Cu70ADcnuEEFd0aAG1yUmJR84YbhqSHjDj0xfY2uIWCrihmk5lQLmKxtfeeLyRJ/7yIaYCIyq+ZCm1YHgZmnfGHbiVGDPCiLEddzflS4r+pSusMg1QHihioicgG557l+fJaSpz/USvOTdfovJyIYfJ7Ic6NIXPw3FtNIzZnAc5HZJgyacPejNHZ+jhY/51h4NuLntOFq2LJlyiZuWet8rrb3ufgtXYjCntCZgveTc9c6mjMrNFESZL/hwBp2syhe+pUPbCAqJ5GLWCKUQ7pImX+1UOZfDMt868tXhn5ikD8kvI8br0YS9k5wA6FV6tK0HT0N88vP45jbrJEC8TUqfJeiLQsHbreeQEe3v0586naUxQQu9MRi8cssc20L53F4EfRt3lYOCU2zxIYZq5n58921DzWzzz4qfhzaxxYeEQIPx3zx+ZM7+8zIvoLGsNvQQSKCHGBOjGbiUXGVe42/DI/v/KlYnHhaKuKLRmahJRRuPBlp9gwj70ZQB8McmDgJnBJRysEgJaaUhSBFU8rLQUoNKRjMJaVOKdcFKQ1K6QUpTUq5LUhpUcpdQco4pewOUhJKGQYpSyjlQJAyQSmHgpRJSjkcpCxFCgY8SWlTyqYgZRmlbA5SjqGU2SDlTZTSD1KOpZSdQcpxlLInSDmeUuaDlBMoZRSknEgpzwUpJ1HKkSDlZKTA/EvKKZTSDVJOpZQtQcpplLIjSDmdUuaClDMoZSAp5DhLb4P/DF2Hptuf08nlKiYFw+cHJiYAQI/aR+956g/9e+jU5i/t9MD0FBk3bfaXQAdKIJuXvZkyMhlMJfT54d9Wx3j3fDQZHLFm/d6Bk+yoJs5/0VlhY5ta81ziVM3ssj0Jthj5RZgVNcfCupxMoV18UtsmIdsGJaHrD8YpKPyxdEnmPvphUZ2W9RT4hw3fMG7dvXGZwErM3sdg3Yglr7Ri8mYVjzRp/DtqSQexHcwrr8X4PkvM/9mVWTwV3DyDQBEW56xw/2a+0IJuyb+8M4locDBnS1PEGy2C3EttGclEeduSTqYW/a7OUmvgjLKwNEntc0IRStqSecInnudQqwnrV+UV0mb7zW5Grj/uptctaNx+qlv/epzs/twXNzCiFyBaNMfaZcT1fYfoCsIOHnciEUdFLDP6zKrZB17S5UsIZHll0jCgbgEIgpROCrXc/8EXyAMwaQETISBtoOIm/qD9vwbp2IqOvkR5Ef7fBzcSElLgjK3ri4LTzYhSYmTuPQZX2E6C4qLnTuLouX2kEphoJVWKVhZEkJsPhA4DyeXJIxvDpNjgENgS7iTuizMxZ72NFKV/UPHDI+DrWmzUEn9kvW+FUctfUand1bXDHPWpRzcyaiioOOFMlM9EUSb4q6cmkdGk7QqLZDQQFr44Cznqez6jBY9KSCemtCyd8CU7Wi7YcVpF9a7+JxS7xlT8H43FY62WUi3/L2q9/j/NfxruZ30xTK3JrmUTHY1LTE25wscH0Dx/noRXAn77QVfXtCyQtmBu8lJrizhYpUxj2momra4mQd46zDtB3pTpf2G+/6Ga92isnPnvVjMfelB+yYwyx7xjgs0Zbk8OVyUS89Lj3pqNeWs2CebUUGemUMdb75A1CWaNIKzTNirbuDWGaG6qpH77RGIewE/qIJ+Y5jm+V1+z0YcSyvx0yny38iVJsP9DijJptn7fF0X5okxAJigK3/Y1KWUJb/tKtTMa6AvhVbCviIZ6oZgHbQFxc+gE1QDcC7ffXr3dGzrPvqonlN2fQVsa3ArXKebTVdU268ptsq2SsMaPJixuqXS607bfg1EgucNRILmFKJBc5iW3EFUlN4qKkhtFR5PcUFVFN1QF0SUJ13UYVWU2FMal/tWZJMl1lrLsOjUrvbf7vtaLqkrciwpX9yIKd+3P0qUrhGgu4mL0c+Jb9rsS9wNiRu926EFUbaCBR3PPbLPxafIVVA3bfyLmkeW0Dz3kaDNPm7ZN4xKVZ9jNwXOzfmD0YFE+D+k+Hg4bVIS3TmDC+hdxgRh5DMz2sKLx65MUlWoh7zoTeddZ8F0H54R/W7nObB/s3JFiQ3/QqetIQRnG6YNswsyt9uqh5ItsjAFSMheMZikXnyNTUXGttKx+J2YfazSP8S1qdOuZ4dFpcWIbI/ZajEEnFinkvT8WHSYNtk1kOeQ6tTToi/YdeqKoBXgvtWoRVxu6H5fVohcvonkeFZiISepGXUF3dN6Zuh4v3S2ja/PzXpFJvg0M1vMaTuivkigg3yH9/mVIA7+p1TsT1hnV3gzY+uzRXoBtK0DtBQgHVgelelI8U+1FCMkjXruViaZySU37Oi95jZ09Rkjdeh4R9gwlwu5K1ua673pz50nCrXoP7xX9ZifBC3YpeZBZWIWfPrvOiS0o3gQVb4EFu/oLrngLInrfRKOS6EeVxhky4vprnMc7lMapQymaVKCFZlUvFprBbYzmWOtdh0NaMxzSmouodFPGVnb5Cma3l1N8/REnyF4zECSbOkEFg6BHJW5IlpG7m6OvF11t5pWlahxD9lRKPmoGDSF+wSgvuxMjsMMmmaIH7lyHrQg/s6VOE+w8mG+SgK+43gu4WfIZ6rle3D0KfWNcOPut0H7U3ceAid5pnxNz7ArsZkqc313PDcIkG4RkhempwsjSWqR/VzzauRabxX5rEZvh0Qk7UTpworqtxbyobqvqRWWtohuVtYoygRevMfa/bSLKpbPuiVA6ZmBFAyAPRqpas/De+jd0MmeajlGzWumsWXH6G4t0iIaIhu0UjNahhhOQVaZG0EEONgJZ3fOQ16yGjFUiq2GDZPXTvvcpGqENmqAqBfuMn/+aCIkL7Nd/MSV2cftrAMlNmpNGy4WJ9i2mgyMMr7wHeoR90pOYsfDMe7wZWgPDNxC4IqSTHzSKN7ohGxfcWds3bMMxTtKPQcMPsdp/Wj3p7NvAVuwqrH7SOIpPU76ZwBxDn2WmiZE24ZK7MG/My28JMBF8FM2J09YpMGOXjGHYctPenljsdb8RdO9n7/MmxAuY+u1nX2BTXR4pG0xIgf6RIbazNYhi805vsQKFkFGsy1rw62RfNvOPX6Wx7rqwNN/xA1dXVKJN3F+bcbutZCjgIYPznveVyBrloWChToivesRCvTwUjBixzSNGgkDyvT9YV8w4Nr9J5R4yWe8plLiTQEXrvsw1ZP9bY2h4Rq3FPaeWDO0t7MHrt2iOqQ8UWPSFBUTUIhY9vARlr0D520TZ9ZRdoawLZeYpswLl7xDlQs1RLtQ8ZVMoRzVHOaqFlGcS5dBTDoVymVAOPOWgQHkW19NT9oXymLyenrJXoDyb6+kpu0L5pryenjIrUJ7D9dS+nuILJXk9ta+nDhv9Rz8tXu6J2byTTQO9Mv4gmM5cYlkiZt6ytIndxGktbZM7LP+mlsBGWF53Hb4KvNq8q1n2xE6aI/YS8fbfbOAbj/fRfcFizv7BbS4MP34m3Ls9izI011oeIYsbXofF/sVZrLMszJXZPort/LZTQm7fmTk6t0OLc7u6VKA1L647Kosji7PollgceOHoLNb/+F8h503fKc3K7RqTTc9aWG8uso7eWFxPfXsxvijuklS9Jxi3vnFfdXCPoJ/KXjETcvzC9jVknuQWa94PCieJd5EbkKoEK1gJFHoyX0n6oJLjSGlwxyjGhzhVCM+m8acOu0X3LvHopUwTO6l4gtz5CeT4hOXae89MYTdmZFKXcfJ5pVqyMkWbIH14VBz74oM5qxAitTDMphrz2xj2GvZxGf73rlOm4E3WMLoirjl4ot9ZN4kioU7V6UAA4mEy3Tg5O7SgUE/1e+w4Wp/StDM9jac7saXm7YmpAsaKK9kb5xsE+2nhyBZvK39r0GhXHCk7G6Lj1xbaXflt5L+ZqmDP8q/aedH9+S3/5E7gHMVytTxL/d1R9pEOUvFmbAFLVj/7dJgVL1oqO6YSJ5Ol7c/I2a6kwsXNsEbmEzhUMBaN+ZUEKASv4kJr53dtKG63x42t4aXktkWge66v2Q+di10QcNqlRaVSJg4nR4VlO2cZM0vqVLGdPhHuMWk2BEyFGssr77jkTnlf1A67wkwWcbBiM3p8DDqX6Sm0wP4vqnfiV9Nkbbx8NHrnKVNgn/QbaoncUBYVl52U+Z7GunJkHtN8fbAKqtSJzbVuIkgqxRAaOco9F+rPlkuZ1cMxnl/KhlYtzmWqMwPGN37TMT6zwDgNGaPHFXkzKJio+txP/Md0ODPHGxKhY+2bSFdi2rYa01aeWLauRknO56pQ55jejNHG17lgW+tU7LVJU55uwirmuapUmyfIaHRqhXmqOmpicySopcK3A+BAjQTVYNQ8o3pADT1qqAJPxozLFPMAqIFHDVQwJwJbN8eoB4Dqe1RfUDwNewBvdzByP55n+Xkezz2u1vOPOu+1J8R857P1chn9BNBdn0dXYDWuTYwbzRl5E54z5ivTB5kQLCHQNoA+TI+zeFxJj1vx+BegDOaDx4L5YIMAQP8B81q46A7WEvHJ07r3XYhUtGvkSafdYcXvayhtbJ+2fYzmng64G6T/ENnDlQoXJLit0TqeT6qxDgldxVbm9/MO0VRfFqxH5LkPPNXJ5P1F+fXZ39WxRpDzcC+nmG3ZbhvZ7r7K9QrstaWNpf/0wJO3NKixVRrbTk2HPYNu9/zetXLM0w1sbIF6dAA3ota3ZfCKrG1qL4CalFpcocmkxQHqlkAzDCI1zjwoC0HjaFVgBpFvVT7hKBCo8H8BhDX4PzjIKIdEvxbNR1M1YH5HHbCl/1P7WLsg/l3UwWutMsOQKZT2LaBgnf33jutAMOB1UzylmWsv5iOCmteKYtZZHowCgq0gsH9tKIQ6E26LMR7SEcNfZHo2bpmnT4NCzfko7f4QiMrvaYc+cRPzLnniRaVjjRwra6RyhAkfMxa9+l6Su0uZLo8Ery3lkSBrLzoS9H++kUD7kSDj3dqVAWDrq+t/zgEALBm0EEuV+xgAwrlS2bAd+jWPV8z7Hpk6MWPYJI5DZ5/lsQI/LZOYDzSHBx0io+1jzEzZtLkp2Zp0GJ6UdaV2NnKeFwQ0TDrQAA3LoN0M2j0Gk+5RgzJqjlEzCibdo/pl1KzjBVTPo3pl1HWOF3Vkj+qWUTOOF1CZR2Vl1OGIecFCL0QOtRAFqHEruohZATTyoFEIalphMeibAA09aFjitJtB3wVo4EGDEqc5Bo0A6ntQPyrLilGHgOp5VK+Muo5ROzRk5VHdMmrG8QIq86gsRPEaF7GqQVSKlOeqB2RxS7DA9IE5pJziMd1tSBsxXZfoOuJI5JR3AbWfKMWnmKtVfQohGODlHiIQ92JnrepeCMEevLyLCMTT2F2rehpCMMTLHUQgTsY+pPU8Qa9IsB8vNxOB+BnztaqfIQQjvFxPBOJuHEBa5gmyIsEhvPww49nFOIiUv3DohbGg5a6LMBoB8xww/8Grb4jJms5XsE/sK7D2joVmDO5x2zsa2V9Md+DSttmyvYV7UZsHptCsV12GTOcfwk+3VE3chbjiLuwpuwtZm9yFH963l9wF+4wyI9u5YBEwcBfiYLBC88XObYhDtxcseyHSWRlqEW9kAOqWQTMMIuOXeVRWRh2OCDWj2MgwaiEqoQ4yiozfyKNGZdS840V+tkcNy6jdjhdQA48alFFzjpcYGqD6UdHZmXWsxM6QtEJQ0wqLQWT8uh7ULXGaYRAZv8yDshKnwwogNn4LystKlWXFKDJ+I48alVHzjCLjN/SoYRm12/ECauBRgwAFxdtRcwZCs9Gr+qIwejSZsEM5XWO+t4mp0GL3IMEi8V2OeDMRi7M6l5sNCLRIM3A064lGfNedueWAfIs0exzNh5lkJbetGI+SJwsb4Aj+BxOwX7uPLQkTjIoE+x3BnzLBHyKRzd/vOoJhkWDkCN7BBOzjkvn7945gUCQ45AguZIJzkcgG8ExHcGaOJ/uXQvpwUaseLEzfscQBpo+d2cW82KzdqbEXW/Ne7Ez7Db3YOPdiv31qrFZFn6x7c9c7T0668YHNTcfRaXvFM0K82xEOAdxbAqTOgVO8r/8XaX7p0ICPTMqMEF6aj7tzCbHZdBxqRdB/3raGoW0x/bhoyGbsT3LPf2MDIYrLlTqNbv84B8/o1OgCd2R/WHOpFrRI4I4j6ziDhWCzAaMPOvQIf2up/sS/jQ7lhK8+wJUIZ/2RncVtx4QZ+7DTdP5EIUyuxBCRKg4tt7Rh7v6ZOz0x1K6SnYalTxupmi6GFuCadxpmz5VfXVN7Fx0LsT+2bfi2lh+9vVvxwz7u3bb3BrubRePxSptKjxO5P/+VV4LlOT4irrDJOMbDZRhCyl/SceCyQkhB218QZzn8y7u4TYLtKuMJitGjYsR43Hj3PXhcEiVc7jV7/8mXG/VxqB17H2MUkVuM/RXhccvaZ+Tx0z+1y/RqiU5EUszxka2BjD5NP4CH7Ox2Ozx+6u5r3OPuax5aU7MbAVxOFm5f1An+JX6k/LdaTI13PDSw7PnDus/h+ScevrXuckDOzPbgfQ//Td2yTWN+LGy1s+b4fztBLUTSFczH3ViqROyB475kAuV7auFzX6xz9V9Avm+z1a/hxXMoEsvuyT0P47GB1EN2quLtEzop6ODLNHqwDr74rbWUU7DZp8k97WXdwaXHdPn8+fZX2iS1ZFWkO7Ea7nu2kdpF5Ah6YYFz6DRNbBQSrfjnXa7H9KWrtSyaKxNuApQ+nW8CZN2sGyq7waBzHivsZZ0WhwxtSA+jgpst53k/opn3MPlswUWXChNWdqY/7F1bzus0zcFDn3vWtav9cfB6auTUUmj7+6nHrv6hbVGchsIvvEVD2MdnrnoWj2SCQPjc9dc2QGhfgSGjXtz/1LOWXBXKuvk87xM085YYBZOHMZcNLgE/b7bP80wgFkw2V6bjVC/GdZpp690TMdWVn+wzGrRJxxQGCr8hz2pnl68QYucq/NjdtzSsuuHx/q9e6x9RV7oxD6Nb39duPK/dHAo7bl5lLzcOpkYTX6MOrnrGmeYUF0CbcXt6ZOFj7IigyPyiSYj85Szz3fgjFkKw1TbhUpNCwt0jLoV9tXu+4BSyG+x2qTZMPyo2TD+ShpGii0RJko10fBq2v0GKkKX4ApEmXHAFOZwXZO9LriALUno2/jCbMfaTdI9jGZxB//fOU5DRbFQQc/c47+2O87hO4gjLCogtJPh5HRGtF8Ue4wcIADVjKt4mYl/6Ilv8l+4uLU9Gzo9uBsNFFGoQZzXVdC2SRbkuz0Qid6nLemb2rXudcGTdgYmgzDDWacuKN0m8xOrOAM06A9TLDdDnfU/piQFqLGISuzovw3VsHuf3ubbvLmYe6VZ4u0/AfLxoI+nO549Nm1e9ecQ0NRXucFzINqP5iZiykqZbiKXpGMLZcfN5e9WFN9CClRG3aBRzHgcXyeMQ57F1x3pnY8JtrA0zHrSweXRX3r4SBuSui+GbWB50TzueqBB0UfCppE8xBoT/QeezWjAODbM5Qts3EaqjOYHlPJsVF8g2qTvdmKTj3Hxxktck01yTmUXGkEyasL5IE/5FYVALFi6aOff/IA3YQudt2QZE2/HVz/+FGHzaK8xoTGY8pdHRxh3lAmfEuI1/scWHOJ9J4Apqp5+/W0UOpZgNzgUaU/eKrRap5zAuVnQYv/HozZpZHrdVIPeB06DdcVXuA9GYmh/pF9GzfkmX+2G5yrqcZ9yLcxazrmq3OlWVvdSuCsnrusTwG+2P3PWNvPv5dgpC5xSQz8CejLp4Z1PcS4vUFqmKSHEyF/cqlfcq3z7RsMTtInEj8V4kkOJbRs7jhP9pieIiEfa4mqhUXqTpUsmQViumxUirF9MipLWKacq1ZaaqPphsBaUFdLa1pS+FM6u6fGbwnWC/G6d9rKQki+la4eAK3DOD5RG6gni7C5bIQd1+LabPWfbzsc4TLd9no8Q+8uMvP26/OlLJ+ip28qLgUznezjtEyCqNIQBWnQ+c8hcWtSFW9tO6nDuFBWzAVDUMOod5bQ1aB+dp3C5NGafq7mzrVJ02bl5Eu+ObZgft87E0HHUIH7JR2krr+Lql8ez+Q5lf3ZHP7hquq62586sJxyGbGrfwGJcGQzaDMXt/8LoLbDqOU263K53mw+GnPNuAMKJZOg5apkmw+OP3NuyoxbVV6uMi/14cNEAY2An3++Imd7dLX4XOU0e+TopTw7zpgjUJswm3bSxtKDZf9ytWgM4V1o5+sqm8djQna0dgOxUnrkfqlRDfLi7J+RZm2SlaRQJv2Xe0kp54RBDF3hcuZ8tOFs4NdyErk1f4P+QW8JFFD84ZVVin/ofqwbnIc24WI/jdv00i+OUhdTVJbdsTslFO6s5fORp3AXJwN5lZiSyPLQpTSfS4GY/nEp+Nfq1DeiOXJY0R+yD69WiLurfTuChGB2ha3HnRZtXBdWvQTjrhTC+j1KadyMvzbV474NhXdzzsFhYlVgTvfr4ZhoFwfpYGESLkSmS5bZk3UHH9nGGBnZep9iuiSFtNze2E4leB7rC2diK3D80MN659jNZ/VerUl2adqtPsYiUME461X8LPf4uZNeOWiLVTlnByzUVIfQcfwI9dSegwu+2RvxFTjOVUW6t1Qdy0TzVI0OvHtV9jdsILcojSGHKIg+3Zqcq763alZAKuXRCBOXAp+ilrRmSaUzEXZ3QpGlhT0Ava/M1WSvmt5NixvoSXy5v5EncttCa3FScG6aQ7rDAKygHHLuUGU/nN1LMquHo+7NbbbynsTzxtaSKhsWIELbfBDfgueejF2yU+xVckICphbecnROoQ7bv8e4mOioiaLj5q91JgzG73s3cpRIRNeltqcbwqznd8tP2UJkIsaF8wd6e9Ubk1rKFQUHa10jr6ZvKv8Im3wlzozZAW80ORP6wMMAsJRbLS5diFNY5dqC1RR6GTktzTaIXlif4bxFGtuziqdQ6bio+M3z2FN+B9Ai8RUZUuRenYHveuQNg7txWFTSVibLujitgffG4RrC1U3c6edhqrOs3t9rGZNj75ieVjv0/+8bGlOKeQjIuNi/Er+01YTjw04eHgwbpREXkOKEHTgqKVl9nqprXLSZfg/cTFfXmP3cy+ZlAqneRdaHXBNmpuefOP1NAdMEJGx1J9V1Cel0+pcP/ZprXry5WOEuFzf8CnlaoVU9Sc6jY+gY4WXUbKAlPqlE6bbzgte/kSQMwe9/MI/9zrfh7mnw+4nwuX+IAt7dzibYmVXoVYH5BwNe5iVeixFzoemiRNFrotd6C82otdQ+xTtdcTCOLfsZIH9Css5VQtQZcgndUrTLxiOtf+CNpvKf0gQSrP232x7TZCf8CgANXXPFRpygaDlZP9gyQZfJ1wJbhaYf2sLjnsPodNOCsdmICHnIA3sQn4pvu5nn9+y/2c4Z9D9zPzBmLp0QWT3BSR74o1EW/nEEhk+RibL3TPhYuXjyFILEc/1stX/RGHgv4VbGxZvsoBo//P3lcA6ZEc6TbzTzMj7Wj+kZTdpiVDvDCuzvAfau2Lx8wU9M8YhI9WYN7bp0eKecwog+y4OOYzHTMzM8us59hbXX6ZVQ1//xqQtaa1FPN3V1VWZiVUdVVWdjX3JwBRE8Crbs118iFufAZPd3WstWnxZk3KUzI+enWIy9r2dfL+2gIxqON6FV0SR49rB9cA8AXF1yo+X/mRVgsgyXWhi1Y0pBlNTNFF3thAG4Qodw1y5tdHNbn8Cy/lf9v1LnXN1kqJ48Q364Mcufqf1jEc94Glw6iQXheA7dr2Xi19DyfkfmskwXpFM3Q3cegiHXJrBEnli6Gt2/D793yXbmOG6DwyMdGNIgCvcTQ9rs+fgXeQx4is4ahYHCHreV8oyAvyWdAmvLqMGIMQi6Ws8rcpumZfIfY10j1oj23/5t2PtedBqFvKqhATCsFR+tKSMhGiZaoUxlWmIOnMm5e5LC/KAvXOlgPy+YWtcsgX/2Q5Yjse8zwgpfGs2p5X/OU9l0cJjBUcuuw8XE4w4pxFUHlwiriU5zFnT5crlDPlpHRpKE/B0cDxmTIN5uQzTBXOgvOIqsagPjqFO0xa0FgqsB0QYM0UyJQAZGgyLUPix+g5ppcwWFau1FNW1HUg6ue46K/uqS2cIKXrptCsm7iJVTBbOXeKMa+ewwzs2NnZ8XOcmpw7heRRkxxzsgq2ZDRJTk1pwiler7kkvyenVcCsXiT5feW0mqDpHG18U6i5Sg1LQz0rtnLRePxwTTYqwhMTrPg0ALcrYHOF2aR8VkERCfSR0BgPszHBBw4HF1RRa2tFteWotiaqLZzQPGAJrxipF2Ug8p7sLW+nI29uUgUapiEDNGSAhuh0emxX3m7+WCxflcn36j4VKGEg8JBbWD+LdJSTTUeBVYoB36avPN8rbD+BRZkOQsG1Kuz0j/D2/SO33SvSCbdfhpit624PDphiYc2FINb28DBCdClUiJ+Hp5Bbwu8nPNdxpCclXN6emf7kjWYL1HbHKBcOgTlFfdbEHAYA+fp6JltMkX2LMmLV2t6fYVSLZs6XyyslwdnSYIpYQJXPOpemitoLxhiVKd+FmKs7xCpjDtD8odF8SEOjeUdA8DOkxJzYPQKUlI0M1LAD5e0FxTC+wCQ1TKIw6IPgOAbjMaWwtBSWVug3umPKdJES6cjkU7StnLsYkyLyucZ2qYZScmmZGG2hXa+dCeQrpwwt4zEGgdAePmI7pk/FvBrhje2YG1Wl6Kecsr10ABUPpJfyPW65l6LpIxlYYhlThsvGlFDGlFDGlNSMKSHGFCSPalLHlHCLIAOMKRioOEMGktAMJKEMMvJ7EqStgUBBeNMIUnN6nXCU+5cKzvyKINSZhPtIYvsj+3jqtcgXos/Yh2coz005fP6LHf33cnNz4+Wy4DvBLotpGaEW3mzC4352mci7xtVuHf/LU+xPnYQS8fgblxkum2WukHpOPJ6boenhuWgYLkEoaeZgDbDV6uXYs7dAMNSwPVtQ1IZQbpEg/Xz8JFVB+bZkZZRvUbFdDQR/hW+9D1iyA1Ayhx6GJEdnvFpe+d3UXhJTovYHfoJrpXSKU3L+fYE+Lu4bvvBnsAfk6lFnwmtBfpn5aHlEGav06/8X1uY5L5CRwepr8rAu1wPuywwN4MKq0DE11ZCagoZzYKYIxgp+bG2soOLrj5T8SzxjxdInuX6h4hnbXxIEPjTdTPlfX5vChQOZwhex+l/MP5fFBH59NxP4vAl4tzGBr9p5sQd1B7UJNHnJvkzAWzAB1D6oCXxd4MMEsoOoH07Q009Vfad4ep3SSRT0jSMS/YehcnwVY0gupbXKBxSpytHPM32zEFMO6PaReZOGEXDWxU5WgSyvk6UjA6wjQ+vlexZqFoWaxYDSuVLHrBFsK/02cSAtM9AEWIGHRQEcB7Obd3u+7qSwFfi1kQSNkSDfx2IRNVx7/YvTa3AMQmmRtQckxxLOE8AsAmMWESW4uLVZhH2zsEBYWAZts1AKBnNukSD9fHUGpRSpWSQUbVG6XUWCv0qQwWaRtMwiEHSUqEsHJ3EipcYRqnH4LLsqe6TkK4UqvawtvHwn9UYsrd78104z/XoZ9nzdOOK/SGebdpYJ7ximTdi3NFkzdy5VpMBtF3hcwFfGey/mH+0i3+59zkhrV0AsR2vVU84IRhLZKae20M47fbtQ/dOmweRDkgzuy0oiYlSleHd1yuXLlMvDlIsbU6XqLw+ZepVRJqerYeqk8zA7cfLNxAleu3Oy5Z2LcniWVOVzys+gknTYkCdixVY1QHLmnquG+EgM5422sCo6OcW5Blzin5vP5wxIBcr/NLcYdf80k2Gkm+d5snX6NHGFP326CjHz0tNVMccqE91zxT27MDEJKxNJXsDXWyijhCFzSu3J0ZhJtid/0AJPGn2dNPoQCSaNetxyiAmcEXcAcQcqbiNjFTroQyJVqNP9CKL3Md13ydeTWMlYUM6cieUEjeU0NuLwlLZlC1WsRTkF3EglnMyhTYAGZynm6+llBudTIuCMAvB91GAlsbDxIixwJ4u4vXkDvztu78C4/X3j9vu4l2JWnZkO01UdlKYelUjW42xqGGtDs3az69Touv3cUzmxq9SQJtcqX1ep4ZLzCn73XZ1VantF3IyN3UV1vaTurwX+R+hN9h6VZo4OSdag0FAKeciUMUZ6NsaSKsZCJzkvwhFIGIEelJOgiB1BJDCX3VMQISYCSqcZUFSsKYVlRgEOV1BVZGaKA/+T4KiK/piRIH9gBw4fA0dAOfHgkFOOgaOYU3EGNTFpIp8743CrGiGJgQMnoIw5b7JVrVDAA8cES1YdOBiQE7kOFNWER4fcjg5DVMN4ApQynkx4JGEMf/p06espae2RA1jsyBHTUEaOhAbdkcOvR44AIwd+xJ2EWx05VBMpbC5giyRf3AFnIVbZ8i9TnBexVbEMrYgzjLftYcVugvpI9T2N1jZXjW2qx4URrV6roo4fJbq9hbZqlr7SgLz3a6j5r/mfxGr1Pbd+6RW7rFahnO7EFc7QKtFdTXygARO+TNb0Za4TfCTAe2wn+Jms8VIzwR+ywQ4popR3Y//XmE+DuuyI64ONGrk8dVssCOA+TTG1S7tTfRgO+DHze4pk2p9h5ddFkqOxlMBr2pr3DnHZrAqd5fiUyjWmlB+VKBpTwSa9Xc+Dh515MOoSUMiEp3ihpNK5eLIKqd7Mxttu9JRiNaaAUkwmkaHToXiXyeTP+Xe6Dn3i1pe216F3X7neMuXe7zk74296dFG5wbwp6Cg32bdyQc8g+VxR7of8O1hhIobm4Jr025q067IY67IBRcuUiXVX+lzXg7agqH+K5ZbVKacvNukI6ahJJwv9NlhQbaNQQBg9K1VLEiaDQhDDcwFLsRwodtN5vkTnqjTKa50Xe+g87+g8v+s6v+HefnX4Z+3aUMLjeivEvzC9pj53cN+s12IKwH2i3LsUmm4TblUpisaUbFG8XcWQCHMf99dvsV2/JS+UVDgX+olUb60iG+6bGZtPoa7vkNVe3/15Lc4vIgBl/6El/h6hJX47tMSf/Ug7tMTvhpb4IP8/7sr28G6bw3Zr9kncFbbbrro9XIULO8Thne4Qg3T+w6EXXfJbgZ++neruJ26oRMhd3cAmWKcKVXPB7J9skzvXMAd0Z0/EyfnxtlmtUdR8z7GJdP8fCwEnoAPRCCby2KC1soSFwbvlvRrRnPUJuqY+j0OLTXXh9ZBIiefZSIkIoRD6xaDZROEitCehCAQCvgS6Ko24EvrJvRqFo8ESD6Jh3TCef9MJ+WnaH6pqIzW8KsWncyNEtbyryi5V+TVK4ZTS4B5s9Kms/mkjwwoPYuWbeuE5M2pzi3gSxpddIu/6RRMsE42/F/2oiZTxZj/ajpTxZj/WipTBK7dNpAySP1FHyphuGipXJFzhqxAEyUBADYWfbKI/gOOnmugPJH+6if5A8mfq6I+8heJnm44OoJ9rd3R8XqaOzSMn/7ep77cfrO9xWruq0kT9DqXsnlaBzK7XmsiDwvib7p3JxdFJenc39UHdTQ3q3dTQfNoW7rI62gCf168/5+/ZM3Qi7Kh2D3+R9gQY3A36Knq2I71J0TKACThCx3lYX65DwfrARZfQ1UG8JLjhX75jcdHxoH5EK0CMQ/Rcxy2V2SpAyj/heiR3cL9gBDnhfgGj5mf7Q5ziy4tnsdry3o15ujaGeo1RM+23x9AT1BFiJGKLP1iGfw3w6P49/OM+/th8IueE+zKwF5QOLl4Zt7iPTriBcp+ccCO9yyAHuSsgG2nhi/kCicyGsD3oR9yiZWqNICNHDoPEvqNKinO2eELNmWkZC78yT2EOvdNzDAey71uY3d4ALwYWugmsAQuxIAO5jHJYF6qUkeCFR0CHohJzAy4DrtxU16KqEEK5IeDI7gpj7EJittaB0/1m69JxMLlzxCFfZWY+5lNq4gEoET9FgsCKAYlAXDiNGXq7HJogATguEHCGUNe5ukETs/NcxfMKr2c42H3OVKWc8cv/X1b+AQ3mlRxOXtS7zyz4bfarVCMaafjMexzd98Uw/x6t582+YE4xXCQSFYA6FHBqG2F7CmIyyQUUPxaSc5SxKDax8zx73SlKT2+jZdhpdsxOs3g4SH6VYgAJBTQUoVaRDfVo5n5+/n+DzK7Y3Yue3l0M7+ZOM5ziX3ipDPqbTgNXZrjwH93nk36TXLYY0utYFaBwjUId+8C8zFgor/ed8t4GgwFyKNQnysAzqA2h3NZH+l78OPgu+bVqqDPVlIZbNMCsHNihQhr2Jueym/Pq649UGZ4rQ8rZBOy2Uy5s6SbjmGdG5QSrg4WdxhHCd8QRMUCpWd5g0TOsN5YHutmMxUYrb8xV7EJ1JH2wSu0yZqzLmJQmzXZz2t1ujinnVUGM5mh/jSWmFZc9NpD+a20mF+7ITPq70Lubx+fNw1tuHmbTGbuJ1jyavGSf5uEtmAfqf1Lm8eNB6l6CYdyhcege9VPVGuAJSWENY2Zq1N+mnpBL49ogRhTBIHSEGDY7xdB8e5saJsJZFztZBbK8ThbGFOshmdAIrpGRNRqNX4DLfK70yWcI6xoZtMmrWwRUAVbHgn0yVvV+L4I92b872ruGQjt710mVXEeXs8H/ajARpX9h7+1rBeKmWYMx+AXvws71vfhxqgxxvsYLBDOhbLtKBDsXZZT0Nq+BkRKpDLOJYDad3Wt1fPKkBit0LDLfVUWdreyos5X9q37UPODvulP+C3eLJ4GfT8e6vBdv03bHD42Tb8QaGmFU63rdR+qxhYkuFMDWRlwwZhx36o4HB4gW0U9ttLr6CBdqvLZDo8Oh8dom8NqOtqXfw2s76nrwoEagUDXGUCM3lRsK/VH4fC+xg89PXNFP6WBYwPW6BHpTAP9dwsPC3uEdP+tHzdP5Lvjk75JuvWW67TrdrW573vhatxiXDu6N/9zR7Yf90D5akwM75Q+iSuuO7z9/BhQt06Y8X9Q3DvYbdzyUiidPk46Qjpp00vTbPd3xQ6topWpJmnkOiAFZ447fS+n5EqUXqvS8Vnrx6VX6r7t3Hq9l1rPNIyjGhRpnfCTXkCLjjE92d8aD71gw1dOYGFvWkUyhgprvwPId6YMKPlTjhY+WR1k9+iS7wdfgf7auRV98bEsc4Ik6wIsDOsCDpa9FdYk27u7Kg9xADd5u79qCu/shD4LovBFl5OGy+CvswpAH317y13Tjwch65uRvPuqtcN3+Fzc8MLyulzF4rv12ld9EiVgPiHEh3lvhwItoG6uCKqJY45gSSQZbiMJHZEbI5nOGAhSbFUQlOzspCtM5pWfmUuZrWUqRzHZQms0pOzOvslnxmhKmEsxuuNvs3EAfLGzUB3CHSwsYN0XLS6oBcGLHN2rjCTp10xZ8AfiROsJm+atEJqF8IRwLBhvz4M/iU7B1eVlBPH98948xYYfHsA61Cb7wX0PsrGbYYTLvJP9xN/m6bhJYuGkh16pC9dFEeK0PHkPzGZIAFGZ8CHj9NcwI411kXiKCTNKzoHt2C4LpCBtCRmm4tHQOUaM4hqbiPkyjrrHQeY+7zfiis3OA2Ri/ZE6JEkJxuLQYlGIuoRBAS8qrCaisCJXv90HlKy9uLycj5WGvvKGDIgoBtoxQAkKrQuhRIfQfFFHHhpUQysOm3BhXNKdICaGIQoApgDG4gAuZUABCUW1g6BKn0Ocag/LFoPCUzUyXxOANI0SQX/qFcDiO7UELyIpbtoNYhQYiXjS7MQwl4xYHtfMvhGEBu76PFAFCMPMdCEfWyNy2reESUQiTC9XkEHtwpyxh94R2Y0kh7jpL3p4sTe6UpTdyC5+3G0sKcddZ8vdkaXCnLL1JzpLZlScFuetMBXsyldwpU2/mFv7wrkwpyN1nKtyTKR4r0PqIVmlIK/C5UI6/h6twWgWcDh6uUtyt4C7G3RB3Ge5WcVfgLsJdwnezMZr8qimLIZqFMzaWmUchpVOKp5RNqZhSMi0jSFHFVfSlmJgpQgEpgq2Qpah7eWBaY5IjJLEno3cp7gLNS+q8pM4r6rzC5IWQbEhJeyFAWS3ZApJNASFN4LsUbj9Tl6ImEN6G6GSQbKaSvQMreQur/Jd3tRIFOYiVOPuykuj2VpLLGfHrUBgW2i5Sm6WPyxrQ4d2JUPdpKZIIadz5Dzmu3oUPOZ65k6hfXxPBQ05g7iQ71ASmgs92uDBq0rNQ32eI2yBMKmmBxAqStkCQzlppvPmQt9PeQ07RQuErioFu4A3wfrQrJWU8G5b5LGGNBTpxrV8UjygW1fEchqJmkw0Wyi6KKoPUi9M89cVNomcO8qxMdtwiu+Nm8x+pd9yqZEv1VJyuCi6s0ldX0Swm/js55bt/TPz3Sr6jdFsO9ZTtOPnl3ES24xLdjsM5YKJxvjiorGdT3Th+SuKOYe5GZfkcWrMfaBUplAMjAA0gAq+UYA1czMY2FFl5iMwOpLwjwxxwxmU6iRBksxloo4jxutFJ6SE9m4EpVQEMp2UX3oLG/L7GggWlhwtKr89AKKBTe9JSaNWlXQONZ3ZDqxTNMGuTjJf+JcutZFgJDYxnsbwznDFcFUL7qKoKJHR9eQtYdelvIVAlZPWFor6Q1ReK+nBIiXyqT9TnG/X5oj7fqM+XUQp+AFFfSHGtPqwNcTJkrcFkTjGkqW/4qgYL1WCGRufSXvJZg4v6C63+gu0qgP4C0V8ZmN1uEMIQXIgrWEMZxt3gDxsIvmb3/QNaq0PAgz1DwPNWlEnSeMBNjIqJT9HolPbnF3/HdT3rnrrh1KdPcTWMi3934ePkldc5Wx9QmEz88sv1M1HewkH6IP0Kk/+edv57gJTPHHueKXxeq+yGi/ZqPrXyvx9Tsd9kSmNTOG4VPorCX+NCRwvrEmbKslpK8OCMs0ITqWXOILz3hHsDBxDlh5ByUA7h2YKvcbkivvfROand5fF9GDluGPheyJUfdN4SYljHIdLcBLwNxjnkj6TsrabM1zKm8mUPcaYWP9t5zBR7ddXH6rKvMGWuLeMci/ZRU+a00HImnDQ/5rvJJTnRNWAYnGEWlNyy57pfGdinKrxsCFnR99Jm7jl+tFayxaEHInKH8uSJRRH6Q6y9cjZCzFyAGIuUk1XGGVum6Jduudtcy53PRufkE5uSUwYqM+wu6WGauGj4MC/1+WfOFJ+4detWjNX8RW5BmfEIx5hef/kflzFfL/NVd59IXtdNOS84CVz67swtVC4DvYKwRYc3x6RF0t0zgaZY4ez14an0bcT0JEAIVuwYNPvp73oELHlzTmBBjcEl08GFUxh4Mh14NMJldL70pc9X/DzzMI2A40mOS3fwFhqOS7e4X8i6GeVmPI1n//6/oosxjp//KpzNNvse4PuJn+XC+fhtDOQ4+dPEiTTvRox0o0kMzNauMPfDolHMANvcZvRrFH3pFMFIeqdtzH8G1m++zarePdEeWxCQo+2PPAzbZC2WTq4QUA7P1czt5YTv+W79fInW+Oa0rtkY6VgOvlXIJ/xT2iETlIykBAzwZgXObuOEaz8C+wmMuhrnNJcCbW0tTf5M2R9Dmlz9V75OpPkY2vgNH3x9S5p/BpxpX9bIZLba0mOizBwEcoozUapW62ifgGzPChTEzPA5eUpc8KGq1Bm90lR+3SvbqNv4gEpzDXJyz7bxfcBXETr6hi4uKl8Vf1MPfZEh8HoUwAFLrPQtm3965i0v4OvphYLP1+gLEdk9K9PvO9yAQZFrrezXXL7/nf/Q7rM/8TIOIM0ubNbfWAk7UdH2P4b6t4bmEFDyTfCdS4FOkL7qxZ4JtMPhLU1GgoyglVEgI2oysK5R12YVmBEJIT1OGRkPqI/VIMDulz2HeAdI2omknQhaifouuop/suhZk2NUwoZM3CGjmGukyQ4lNdJ0h1JBukMx0MX21NzHgwZdshSdYqgba7AkjCQx/tnZzRaS1J4Z3KCpgqZeerXM4McO8PDjcUtQBobAWpsBZIy7TcjQ9NSsjQsnb5NsCG6aSoXFst5F29AJunRsCxsqFVra8JYrb31SySKpYIGUpHIgLhjxLxvuqdvS4mqZ95jLlzMXdCg2BIBBlfLbrYYPukievthsWsS62cI6QLMH1mB+vYV22EX74KLg712k8/RFOtSiMxTBD63gf1kIofuC2J+h6N9WIxruVMN/Lum/hcfZ8G1y6qadxAg0tqd3qkELavC20mmgHAuV71R5Cyp/WzluoMYWquhBTRqoiYVKd6q0BZW+rVxpoFYsVNaDWm2gVi1UslMlLajkbeVaA7VmoeKdKm5BxW8rDzVQhzQ0Z7RTRS2Y6G2YHlgYF+Ct96IxGo41DkrnNzNWzBY5MlOd8lXnbA7OgaPxPqAcCm2aQr1K7sTkOTZPr/IKetCMpKZth5thXH1GIQ4N8GcBhfJ85srjX8TGn5knV4eZOKamT+Ywj8bdA/m55T116w5Le7B0CRzX8wMAhdoMPckikHjm2RAB0C6EPTJnh/HdOZCCP6IHFlgwtDwwkDbCGw2vQtMotIb/Dhf+7UgPbkt65pWHO+QHByXPVG9Httgfx8XBOfaZW/d2ZPP9kc27ZGdBeXhv0vZICzxcI1zWq6TXI3ujDgCDKsVls4p7I0vYwIcKL6jXqrw3oPWHvZSSHlRvQAO6BEcc9sbR3qimtMcVD7lZCzTrD22gnfeg+kPbgJIeVG9oA9GiytDCogVa9MY3aWHWg1pvoNZt44Y9qCMN1BHbuLwHtdFAbShURkkPatpATRVquKT1mw3Upm39oAd1tIE6alvf5/FYA3XMtr7P4/EG6rhtfZ9HaqDItr7PY9lAlQqVL+GxaqAqy2Pag3paA/U0y2NfEk9voJ5ueexL4hkN1DMsj31JPLOBeqblsS+JZzVQz7I89iVxbwN1r0IlSyRxXwN1n5VE1IO6v4G630qiP5N4oIF6IKcH6P55eb8RyGAP4KfT0+bl0+h+emBePl3F05+EdJtBx+jovDxKT6NnzMtjjOF+xmBkNuxV7WiJjtD6vFyno3R8Xh5hRM9URE9nREaeeQ9Dx0pplVZwHus6bczLVcZHiu9Zgg9oN1Tk/UlSt+vQGL6sMa3QGvCt0hT41qmcl2uM9l6g3QCjRwRfTHEPX6fzYyqDnYIxTRTtoXk5YbSbwL5GlWK/T7Cj7YdE43Fv/rXezL8wUNVfmf83f2g+QvSWr5e17p/i2xu/2naomF3HI3qagJ1yk6zuIjul3p0JqQjYZClsfxwDbLEEdvloZpZRuyqmgV1bCtsf2QC7vhS2N74Btg+47DEcU9R7WPcHwqgP1R0I1U7XKaCpGscmjGMCu5qwjRxT0zuupuzAhteIYCOHYIiHKJJ1eNBe7dA9IKRTyYrL+DNtrPUNzGyYVuXAy+xQeFbmM5jETGnazgl6OVEvJ1nAszHL5tWGndfQIX0hcA2XQ7SKyxqt4LJKE1xWaIzLhAJcxrSOi0NHcDGTEXegwXYuX5ie3Ek4nc7VLXvHXzUIyCc0hF2W1foJ91+GnB6b9PiEewXpiaZx/vRjSK+Y9MoJ91GkV0169YT7FqTXTHrthPsmpA9xujqEHI61fQNyAoU44Y45wWSHfGFqBV+YSMYXxp3whVFGfGFMaChX92aXsLVcjoXPJUugQ7r+qVbMuqaakAv6IdY6WL/AOcvInsu8lkdxvRKWm7jyTsUUV9552MCVNz2O8JV5KNf5yi0vD+E43XF5bBaV7iwuV9GQmSsLuHG9sAoM4bXxr0DYVaDvPV768kHITV4x23LjGWduSaH4DPRjEmt17YldoCFG1nrpdz8fHLjkJfNYQlHQ1qBy6JDBuEKTLq41wbVmcK0JrjXr8fdYzU63Rt85D9hyhWmuIgDA0IyqNVo3NA8tYlgXDOsGw7rQXLc0AzaVtQO0slxnwl5NOGHCR25H+IigOWLQHBE0Ryzh6KCEjzBhvyacMeGN2xHeEDQbBs2GoNmwhJODEt5gwkFNuGDC09sRngqaqUEzFTRTSzg7KOEpEw5rwkMmvHk7wpuCZtOg2RQ0m5ZwcVDCm0w4EsKYGxmaqwey5SGtct2FGhOpMTE1JlJjojUwg3EkY2WKPo89fke+LII/Ll+VPdJSTpFBkA8cN+XY9t3usISxtuWe6Q1Pf1oD04+awXfTDLpTM9humEH2iBlc1+2gKkNpKBHA8pSicKsMch1XwOjKvDmK4U7x5+Tt7mmqQvU1aQpjnGcHZjxigtlvXHd5MOL0E7KZc96e7xHM/uOHTckPvJ1Fac4c8VhBP6zv73uGoIY36CjqPcf1qttLF00JrYxPmqaECvOb113s29Xp//RhpCm0JPW7MqG2JkRrwrrNkIMIGPNQaY3LAyRaE3wmtAYP6gCtiT4TWoNpQoTWJJ8RrcFEAq3JPhNagylShtYUnwmtwQStQGuGn67WxExyzSD/yfc529WaDtGPgP71C3Pkp+fhDFxjZyCX/sTrTk75/sfH+ijxZiPGsGowXL7JGFZbGC7/WYshmdMqY+DSy9sn8Si79QAwZAbDisFw5Q8Yw0oLw82shWGFMXDp//pbjGFl9j+PAkPCGI4zholtw/9w8ZipJnUbvuGSRTGeA+wcyv48o+BHz484wBEZHOMFHOMax3c7DQ6AnUPZuy8xkvHs1rOBI2AcL8fW7gIOt8aRWBQ0B9Q5FD1xkVG4s1t/LO3wDI5gAUewFEcAHIHBEVgcjmq1Y2cG3fd/JwvXaQn3f/zDloIRRsClN8+fhNV9/LA+t33eUzZBTqNmuf7NP9Rdrj/q9tbrd/rEq2l86CNdGj8NGj/6k52QFQv72Ee7sG/w+P6dv7Yc9me7sO/t4/3OgVv0P/FHDk58+f0ABzGdqcITfMuC+n6E9GLn5qycHgyH+t9FyBHmNrGZ28QylYl1bjPbEGV89W86Es4E2OF56ZVQnqDwgKITKtoNI+2hSBoUnqLAG0VVKihSgyIVFGkHxeW/uztUQyJtSARKIgKJXYKWLIl7d4dqSGQNiUhJJByQW+VSOTeVc6mcd0h84OLuUO++7tVxVjhJeDdoTmFQEfIZyBcCWhjQQkCLLoebu0M9+m9a5AsqdoPmFEZFIV/gm/ADAR0Y0IGADjrk3xGenn3L7/kNiQENdqvHKQzdQmIIEq6AugbUFVC3Q+LGZHeo//DDLfIMtCt0NVR/Q0Sh9Br0GRwSfx5n44Ec30qQ9vk5eoQvPUIBkj6ApwCBAqR9gEABIgXI+gCRAiQKkLeLEi3KtKhoF2VaVGjRoF1UaNFQi4btoqGeE1cyzfGvwzkhEXsDhEHOfl6/Hhny7S/obaSBO9PJW1GJIWXDjjHpOCMYTa5ncr1aKsgNTG5QiwK5kcmNav6Rm5jcpGYduZnJzWqukVuY3KJmGLlDkzs0vHZ4HJI320Cw9HKmcL6YYQviirvM1aWelnaZrEsDLe0yW5dGWtplui5NtLTLfF2aaWlXCHVpoaVdYdSlw3bpcFHxsxfeRij3uXiXRO84nDnpVLzp6Heil1VtPqr71SPX0yhEByLW4ECkzWTT3bKhmZWr60Vv9lU/6WBViOMrbfikN/uN/+Jq5lf/pDOXbL5/nCswa7PL3797fy/dXGhZdE8uKeK6bDiWa48BENzYogvMmDWD2m/+F0yYD0Sh8POmdV7eNH+5YO8WVa9F1VWqjWAN157lOngqcR1YrqOnEteR5Tp5KnGdWK6zpxLXmeW6eCpxXSjPw33xfAD6WNeOQENbYFNoA+4/LZybiH2mn/+7yF2/wOnv1ZC8MuD77zb3WM9/p7mP+P4D5j7m+/eZ+wRHipr7lO+/zdxnEOa3BF9l4lc8hFyVBWU4ArUcUiyHyI0plEgombd8lZzPuFOuIFXY1CpSmU2tIZXY1CGkIps6jFRgU/cg5dnUOlKOTdld/RUKdrCbuUNrFO3QIQSAH6Zkh+6hdIfWKduhI5TvkI+6VXG12rhaBVerwdVqfLWaXK2mV68uxnW5zYY13PAyOWB0gYRiDxn7AMHc5YiJjREcXo6xO4K4cwlwmO5QeLUMzAc6mXqBMONygK1vBGSziIsypwG+58aiH7EqxmVEE7yZjLd0vTpULmi1K3hb6Tft8mF+/gn3ewMBnLQAJ0sBv1sBxy3A8VLA71TAUQtwtBTwAwrYkd1SwPcpYCeIZSngexSwE5C3FPDbGJCKFhhCg06wpaJXKixS+dXYjS/BcBnGf4Uac6keF/QLsYkqAiiXMdYyFoNDf6AA8+T27tOuXg+0CTjeE5SpmDD6DsWUYMlKwf73g6N9g0JeIPk+w1IkLKWU6entXTyR4IkMnkjwRIZksm9Q6BIkPxCUEUgmZWwklTDZtI1nV2dUle0bFHYGkt8ZlImMIhigECdE2cEEmx1AsN8pJL/bCLYQwSYi2pii/Qu2C7qbgw/9U8bPMgbl74X5GBNksskdk9xNsEyF/AOaJ8S+b+DmI8WtcS3/6a6jNFhwlIZwlEYtR2lsXD6hrvTv3MvpUGgdpXt7OZd7MT1FEezTi/l378CLCZ2ro3RvLyYcpbtDNSTyhkSkJJL9eCrhKN0NCo7SA3oqEwqNo3Q/nsrLm7tCwVF6MC8mhg3rKB0K6NCADgV0uLujdEjDXevBU1lQ+GlzlI7gLwowTjWO0mjRDypevGbrQAHSPoDdGFCArA9g3foKkPcBrFNeAYqmqHGYa9GgKWqc2Vo0bIoaJ7QWjbSo6yiNKajdXoE4SvEJlV80/lG+/SW9ja0X7N+imgy3fVcpcvuuUuT2XaXI7btKkdt3lSK37ypFbt9Vity+q7TNpXWV+viJaDlnVdLxlyZdDutST0u7nNalgZZ2Oa5LIy3tcl6XJlralUBdmmlpVxJ1aaGlXYnUpUNT2peM9Zf6+FkqGXWa4k6dpu3ajdPUx+8yBI3r9H25H19wLx3CSuxy2Ky+nmitvh5vrb4+0Vp93Wytvj7WrL5mHzH3OYJPPxSUhV2IYcFV6CbtV5WD9sqoGl4pR+2FUzW+Uk7a66pq5YouySKbsXZF12GJzTh8RRdfmc1Yv1Ieaa/pqo0r5bS95Ks2r5RH/Vcg8V3lMb0c57YepdAsvq5WJNl/a+AQlceJ5NTgv81zc7mRiGTapONYPlVhDRqWxyhcAD2WK4FQL8QVp1j9Hb9aHa8rHi+Jji9UJNDYIMJirQMa9kBDQyNqeDmCxSXti4918BFfreIaNMbxQgugkaERN3zcQ8l++TgMPpIuaNwDjQ2NpOHjEKX75WMNfKRXq7QGTcuE0gXQxNBIGz5WKdsvHyvgI+uCpj3Q1NDI9FJi2YuFPXUrlr2KJWiMqcQqvAOa9UAzQ8NcjptXY6ncl6yGkNWgC5r3QPNcpsOlet6Pt1axx99WFs1it8gpoKL5/oqdSx8vByRTaXJQ/CFMlN8QWnzHWviOLS6ePfLtPkfYggvfVnoNnAfE3gn3ciiAnbcxlgI+EQhgJ+p/KeDjCth51WAp4CeWeAyWAt5UwM4LcksBP8aAlHc8Bjl7DD7S8hgglb994IaNxwDjlgmffg7LowrN1MMeKnMeq5N26FVMUfu0kq3d1nxlrPJF6ssG5qPj1DnqJreH3FBDUsrLJAe8rIVDSgC059L9DaHFphw9lxVXmZwqkbG9zRmglanwzpnaLzupsmPW2fti53KPnccX2Mna7KQ1O+mTz07YaCehcF/sPBEssvOJBXaSzybtPN5j5+YCO9Fnk3Y+0WPnYwvsBJ9N2rnZY+cjC+x4n0btmMfjgZX0sR5XH2KtaI5xH1Vxw1VCkeEqobjD1W5kykgfdparqMuVIUdxT0nEsPq0plDVtKdP8E9Yuwf4yJKuj+PTm7uIk/XuqKrX3iRj2/ZM27bdvZ7Xtm3btm3btqp+Nxev9Sz6nH/02futmiT3JFv9Fzxh37//DsAcpP3hmamXR7cGnr71bA73quX4twf5uE+I4/RQfXDblD7ZzdCnv92rj4dTp4Tf6zryh6X6lSmOHHzNc0FO63JOzuhyRs7qckrO6XJCzutyTC7ockQu6nJILulyQC7rsk8+qMse+ZAuu+TDuuyQj+iyTT6qy6p8TJfX5eO6vCqf0OVl+aQuL8qNujwvN+nyrNysy9Nyiy5euVUXIYUuW6TUZZP06vKkfEqXx+XTujwqn9HlYfmsLg/K53RZks/rsiBf0GVOvqjLjHxJlwfky7rcJ1/RxZCv6nKPfE2XDfL1wx8ylCvifg5PUKRiJetddR+WIVb/7WEZq//2sIzVf39Yxop6Q++KWlp2B/d1a2LGareJWavd7tz47RDzVrtTLFjtLrFotbvFktXuEctWu1c8aLX7xENWu188bLUHxCNWe1A8arXq5sRqD4vHrfaIeMJqj4onrfaY2Gi1x8Umqz0hNlvtSbHFak+JrVZ7WgirPSOk1Z4VXqs9J56y2vPiaau9IJ6x2oviWau9JJ6z2svieau9Il6w2qviRau9Jl6y2uviZau9IV6x2pviVau9JV6z2tvidau9o4/Km1Irefh5qU5/l6vmgT8+vUnUFJVTe+58BC/8MP3zWV7i9YvbH6HjD5gxIG4Rf8SMQXGT+BNmDIkbxJ8xY1hcJ/6CGSPiGvFXzBgVV4m/YcaYuEL8HTPGxWXiH5gxIS4R/8SMSXGR+BdmTIkLxL8xY1qcJ/6DGTPiHHE8ImbFWeJbZsyJM8T3zJgXp4kfYMaCOEX8EDMWxUniR5ixJE4QP8aMZXGc+AlmrIhjxE8xY1UcJX6GGWviCPFzzFgXh4lfYMaGOET8EjM2xUHiV5ixJQ4Qv8aMbbGf+A1m7Ih9xEOkrthLOkbqiT2kU6S+2E06RxqIXaRLpKHYSbpGGokdpFuksUdsJ/qz3hn9golHbOMFYV7/hkesfcSHed/0CL+zpQLspCAbKMS+CbNdIuySKJsjxp6IsxUS7IAkC59ivdMsc4bVzbKoOdYyzxIWWLkiC1ZincosT4VVqbIYNdagDn0D8SbQLXzbsHbQ7ILYA68P2gCsIUgjcMYeVCamxhuWQRwDPwRveUTAIQhCEIIgDEEEgigEMQjiECQgSEKQgiANQQaCLAQ5CPIQFCAoQlCCoAxBBYIqBDUI6hA0IGhC0IKgDUEHgi4EPQj6EAwgGEIwgmDswWBiGrxhGvjXCdIQBCB42yOCDkEIgjAEEQiiEMQgiEOQgCAJQQqCNAQZCLIQ5CDIQ1CAoAhBCYIyBBUIqhDUIKhD0ICgCUELgjYEHQi6EPQg6EMwgGAIwQiCsQeDiWnwhmnghyCwTpCHIAjBOx4RcgjCEEQgiEIQgyAOQQKCJAQpCNIQZCDIQpCDIA9BAYIiBCUIyhBUIKhCUIOgDkEDgiYELQjaEHQg6ELQg6APwQCCIQQjCMYeDCamwRumgR+CAATBdYIyBCEI3vWIsEMQgSAKQQyCOAQJCJIQpCBIQ5CBIAtBDoI8BAUIihCUIChDUIGgCkENgjoEDQiaELQgaEPQgaALQQ+CPgQDCIYQjCAYezCYmAZvmAZ+CAIQBCEIrRPUIQhD8J5HRByCKAQxCOIQJCBIQpCCIA1BBoIsBDkI8hAUIChCUIKgDEEFgioENQjqEDQgaELQgqANQQeCLgQ9CPoQDCAYQjCCYOzBYGIavGEa+CEIQBCEIARBeJ2gDUEEgrseEXUIYhDEIUhAkIQgBUEaggwEWQhyEOQhKEBQhKAEQRmCCgRVCGoQ1CFoQNCEoAVBG4IOBF0IehD0IRhAMIRgBMHYg8HENHjDNPBDEIAgCEEIgjAEkXWCPgRRCNTBujGHIA5BAoIkBCkI0hBkIMhCkIMgD0EBgiIEJQjKEFQgqEJQg6AOQQOCJgQtCNoQdCDoQtCDoA/BAIIhBCMIxh4MJqbBG6aBH4IABEEIQhCEIYhAEDUJ1PVz9THhE+rfoHfDRtVri6B3Vrd3aed0+x7tvG7fpV3Q7Tu0i7p9m3ZJt2/RLuv2TdoHN0qfWD28rG9hlvTDon5Y0A/z+oF7m1n9MKMfptUtjT5GdaOY5alC5jeKhY1icaNY2iiWNwr10abFjL75katiRR2Oflrf/9wrpvWhchvkivCxjqF5z+EpnZwJh/pRc86rLvsTPN41deVa4GOc9iOc9kOc9gOc9j2nfctpx07bt7u23dXtrmx3ebtL213c7sJ257e7W3Z3ze4u2d05uztld8fs7pDd7bO7XXa3ze5et7uX7e55u3va7oTdbbK7x+3uYbtbsrs5u3vA7gy720Bn/tn7H/7lXQvPexg/+MTaR379+pPE/sqhT/O+v+djrXQ4pscS7+/5vH99MBFbZMNTn62i/r9Vzqlt4nG/5B79EjU0cV5iqAnOypyH91T/rnJI0Ir+JZ//0SmeM2L6f3SK56qVxapZeenMf3yKJ1vfUH9Q1I+YrfNbxeq8OoZIrqh/OcNPX+iqPsXzAf069ymenC5+/ykOauZN7xP2uZ6P6N+CnhaP8PZyZVZfsTncsQ/6XDWf7kRd2YpY0c94c2ZjwxlkaBaeeo/XTrtey/GOzDW8q+v/3XosMu0ai0y/L8YiPE8OTwFt317r04uflw8d3qov5sV7/sGQa7r+jSG36foXhtyu658Ycoeuf2DInbr+jiF36fobhtyt668Yco+uv2DIvbr+jCH36foThtyv648Y8oCuP2DIg7p+jyEP6fodhjys67cY8oiu32DIo7p+jSGP6foVhjyu65cY8oSuX2DIk7p+jiFP6foZhjyt66cY8oyun2DIs7p+jCHP6foRhjyv64cY8oKuH2DIi7q+Z8hLur5lyMu6jg15heufkle5/il5jeufkte5/il5g+ufkje5/il5i+ufkre5/il5R63UHdeIwPqqeds1J/iIDxO3XHMCFW+65gQq3nDNCVS87poTqHjNNSdQ8aprTqDiFdecQMXLrjmBipdccwIVL7rmBCpecM0JVDzvmhOoeM41J1DxrGtOoOIZ15xAxdOuOYGKp1xzAhVPuuYEKp5wzQlUPO6aE6h4zDUnUPGoMydQ6YgzJ1DpsDMnUOmQMydQ6aAzJ1DpgDMnUGm/a06g4j5zTvAwcwL9gr3OnEDHPfYtc1Sl3fbdY0SlXfaNVFilnc49hUo77G+vfSptt7/TDKq0zf6mK6DSGp/61XcffjH9ZUE5wycwv+uHrf7PkbPO5+3ZWXHHGVP5nU0XY6/F2WIJdlaSDZViH6XZPhl2TZbNkmOP5NkaBXZEkY1QYv3LLHuF1a6yyDXWts6SNljJJgvYYt3aLFeHZeqyPD2Wpc9yDFiGIfwj1Mem9cQ0hnq3iIIaATMMYgg8H2hBsBSZNyBm9e8Tb/RqsFnAAi6wwL/9TYA7zpgv4ID5AYsBFgcsAVgSsBRgacAygGUBywGWB6wAWBGwEmBlwCqAVQGrAVYHrAFYE7AWYG3AOoB1AesB1gdsANgQsBFeY9NrgpdiAywKWASwMGAhwHyAKTZvUMwpsFkTbA6woAss+Dly3gGbB8wakwYdsABgfsBigMUBSwCWBCwFWBqwDGBZwHKA5QErAFYErARYGbAKYFXAaoDVAWsA1gSsBVgbsA5gXcB6gPUBGwA2BGyE19j0muCl2ACLAhYBLAxYCDDF5vWJeQU2Z4LNA+Zzgfk+Ry44YAuAWWNmnwMWBCwAmB+wGGBxwBKAJQFLAZYGLANYFrAcYHnACoAVASsBVgasAlgVsBpgdcAagDUBawHWBqwDWBewHmB9wAaADQEb4TU2vSZ4KTbAooBFAAsDFlJgIbGgwOZNsAXAQi6w0OfIRQdsETBrTB9ywHyABQELAOYHLAZYHLAEYEnAUoClAcsAlgUsB1gesAJgRcBKgJUBqwBWBawGWB2wBmBNwFqAtQHrANYFrAdYH7ABYEPARniNTa8JXooNsChgEcDCCiwsFvVB0SbYImBhF1j435ylDdgPmGBhBywEmA+wIGABwPyAxQCLA5YALAlYCrA0YBnAsoDlAMsDVgCsCFgJsDJgFcCqgNUAqwPWAKwJWAuwNmAdwLqA9QDrAzYAbAjYCK8xXooNL9i2wbam2bwRsaTAFk2wJcAiLrDIvzlRHLDvMcEiDlgYsBBgPsCCgAUA8wMWAywOWAKwJGApwNKAZQDLApYDLA9YAbAiYCXAyoBVAKsCVgOsDlgDsCZgLcDagHUA6wLWA6wP2ACwIWAjvMZ4KTa8YFvTbN6oWFZgSybYMmBRF1j035yrDth3AOZwReAKwxWCywdXEK4AXH64YnDF4UrAlYQrBVcargxcWbhycOXhKsBVhKsEVxmuClxVuGpw1eFqwNWEqwVXG64OXF24enD14RrANYRrhNbY1JqgBZo3Jh5UXMsm1wa4Yi6u2L+w9yXAehzVuTM967/d+0uWZdkSpv8pFsVxjFCproysB5pbjnFULiOW5+dQlJ+LynqlvLJUirPJ0rWQ1yhwISwqwqIEg5Qg5wkwhO3ha55JsSOHfZeXgHdfg+CxOPidr8/p6Z5/fl0tVvbI5TvdPadPn22+7jn/TM+wuUAdIANzQvkc7M/bHp3PAbfT9KJBoBfSvdnCKp+DLWGxp+k/Bpf2Wvo0Wr3yHewh2syhrVt4oSjVz6WPT3W0sr9HU+NG853DQO7T2zrAPbK5hSwj+rg2vpb5XKnQ7ekmupedomHNhr6BuSeVDEGHP8oWoahXEuOC5ABb1AO5iV6JQYkp3dTSeSpXaYX+t0FwCfVAcoEozK64kNIRKUcUlQpE9fMxn0f2oaNJV9gjId4D71kN/Vz+CkYAKwRGf+QocDsdk+6aEhtG98+dKe/0rJSPNEQ4G/JZeJCeYEGKIKQyP1ey0jxXstK9lhWUqrJRN+4ca8CvB/OPGELVExs0Otag73tXeMoHVccYFExO9aAdJC6mGxuiBeVr3r2Lvwj3qdtQKO9OqfyRN3kbojna73zs2uOmvfcfXnXctE98qM73nnloHzq467hp958A7Zuxj7tH+1BE5bd9e3oU7Zd/VKf9wTy0X3qwTvup+Oi0s/fXaT/bpH234g8PhuUNOwS+/vbJyOyG+pxwLrZbEFBRvuFnQe6u4EX0ldr9GEkrCiCTUFMIFnzRKtahh3fYrj40QRlO4cVz0OpEjuqY+zrrwMVgiBgMJQZ1TMm5KR3jprucC/uPmk1mvQ/HPcYGCK0BXp1R+ci3dzaNRfq/tU77pibtzxeFS91nXL23PMttSLOa12KuNqUU5ssHGQ7KfE6tRfrjgb9Bm+TV+FC3zm3ilCpFXm43JkymykfO3aRz/vIOiGLT3tFt2Ke8vr9pqnrKEC874mSbvrx4zSYQt0094yf2QP+z7Zumymk9VfZ+f/73ZrEJQq7bJHoLNm6JjQH82MVpeamIgc43oVLYyhRq59Vqq2q1NbXaulrtolrtklrtJbXa5bXaFbXab9RqU1UNE2KOpnPRhGkVlWdJhalX1mrn12rPr9UurNXW12obarXLarVX1GqvrNV+p6oVLdQ16olOWPZkfZGi9Ry0Zjoz4j9DKsxgRa02UautrdUma7WLa7VLa7WX1Wovr9WurNV+q1bbZGsQngo5HhKmIFtfJEtx/n/hfKrTTboFCm0oluLdWdRwSWyhiPykmZEGLQrLj3MxoeJaU0qpNGFKGZVWmFKbSueYUodKzzClHpXONqUxKi0xpXEqLTSlPpW6prSASqkpLdQ5DrlW5s2UxjOmLflhpLURRWx+0rVPDptfRlo6EQrsNMoUpwlFYijIFkKRbkQRFIuEIjUUqc6EItuIIihOF4rMUGS6LRTtjSiCYrFQtOV3nI5QdDaiCIozhKJjKDq6JxS9jSiCYolQ9AxFT48JxdhGFEFxplCMGYoxPS4U4xtRBMVZQjFuKMZ1Xyj6G1EExVKh6BuKvl4gFAs2ogiKZUKxQL4st1AoFm5EERRPE4qFhoK8JhT5RhRBcbZQ5IaC/lqQ5bp9QNS2mrYFI9r6I9rGR7SNjWjrjWjrjGhrj2jLRrSlI9qSEW2t4Tb75DuME63H32z9FA7jfHg6H17AhyeD9ZiFEp7fweY0dO9/Eyt8XLnlTzDvR1djn/eAquPGwhH9YM0XRS/A7j802WWDjPewE4nofLbevHiUU98BJF3Aa4MtdCo3H2vHPCcri86LeqFu4T36jBvyF/UUNqzplim5mh3d2ip3In9tZmCmlGWIQc9N5bLfJ5YXhEvMZ0EsvXYnFuMjF6NOLMIOvKNOLKQTi0ed6NOJM0adGMOmvqNOdLHr76gTbWwLPOpEjn2DR51IsbHwqBMxdh4edULhAwajTuCn0xSHaDgSddx/BIHAu/CnZUw+KXv4UuOgxS9EjMVJGgaJ2cDJ3i3gx2whKglfu4lbm37i72Vt+i7+pu+jIZW/+Z6R69i3f7xO+9g8tG/4Yp12Z0Tlb3zHX8aVapDzJxvzTmQxPh+LglCpIfFB0200cn8d4Gdzr93wSbAnSGLe7UNji68EXMP4XrfZZTqSD1OXimYDG7hELB9JwLJ2LqjurIzh6Ap5rCVbWNrNv8IyxxL8b0CmQ4n9ARXKVKv+t8xlq8qQS/3D+IsttOC/BF1DHZG0T9taYqA/gmQ69Nfi5muZZsWYyIoxMSvGhFeMNMZ3wRP6Y5Vb4GMvp46pAtP4FDM16qenmCmv9U8x0xxM26eYaRtMu6eYaRdMx04x0zEw7Z9ipn0wXXiKmS4E00WnmOkiMF18ipkuBtMlRWCZBvMynfdO3DFdMn50mP620oTH3xmZHnntj+u09zVp3xOHyt5ta3uz3VycA0prK5PArEwSszIJ7MokG/DqJGE8tt+MCezKBLCN+3e3MgnsyiSpr0wCrEwCf2Wi6h83dpOlILWdLJWOZZIIq8kyKgO3oRSwPnGTZGQnycibJKPRE18k1ne0j81DK5Nk5E2SUXOSTHiSTNwkmcgkWRcbNN1GI/fXEaLOawcf2TgLkyTPnOyUsDFJRmaSDI8ySWp/jkwwR/59GkY2ZGbVxiJnAvNIWN7/xm4u5xS+90hZUfu9VTuldUISjI5vTHBTbvbV7j9ozrfMpmJZ/2HUJKEVaJCbTm2t0AkZrTb9mW+PLPk2xQ+k1x6/lzK9lPRSppfy01+xS3+RioMQcptNXKAxZIfUMLV5u9LJjpYEfzLaTIeVqBSgEb6iOBl3fKIrlvxr6oQln4kguRF6b0hCU4MTOobQsS90DKFjCL1qapTl0fvELf+66ClZXuSfM/If9uRPIX/qy59C/hTyfz4YqcDhk1LgnlOgAOLFZE3fby4onaMue/48qMNUriNyk//dD4DKTAjouNH8/YmBkWlTnkO5/xiUtC/e3piYixzFm5Ii/NU1dLAfhcTHzF4Xlu2tKMyQeFvLuWzzloJKV68JhOD1YdnZyshw+tU4l9G5kM/tCcuu6fzGGhEOiwxtSrSKad8Slj1D+2bTKRQiHE6r+EZMe2NYtgzt20ynUIhwOMPQJkQbg+CqgTlMEwDi+IeDlDmkMlgsR4Wp9jQ3XGaGy5h4sRAtkuPCIeLcELeJOIaxknJsq07xxwi2kAnlsJgOMhkW4Zog4RECo8aWMic+ImFXBmvLMccxkyHrBzFkzh370mGsZho5YIAW091sjbgEhPlIG3aYVAvLs+W4bMgAsTHAGBNvkYDZGcIEVPjj4zNFl7s/S8Z4hhwLHOPResdG73HueJZnwx43nSM8lo/iAbo+060QuvPkeG5dPwm+BUy829pt5dFjbyGTbhVT7LKm2HZ8pjiNu6/yNFrETWtEwvPlODFS0tOZeJ0QPV+Oaw2/+UJoMXe8UDpMHi2EzmC69UJ3sRwvGinNEiZ+tbXbJUe325lMerXY7Xprt+3HZ7ezuPulnt2WctPLRMKXyHHDSEmXMfHLhehyOV52TLs9jTteIR1ecTS7nc10vyF0r5TjlSOleToT/1aN2fRh0rZrtNUE23S4GUs7wm8qDIDJFm4FnJcKLvtY+4dsVuDombClvYITs1JOt5az2WbB/PbWLeUsWZi6FwGDflDNC1BKwF5wW1DfB3ABe+IrAG5x26F+MMJUMVNeJaEwbUIhrvsedweCmAJ4deRsWlXQzwN+OQYj5JCDiC6TQS4d0tGCCwz7kwWOAsvhfANgAhE4llln9AAAZYFVwXFxIqwhOCqY5+PpSGv0R2F20LSyYKo/B8jxrGMaTuaFQjro0XoJjnsgLMdzjmk4ALPgsaD56AGAygLCAuQ1w53WBO3RthA09lBYjquOaQtB5rXSYc1oUQWIBYB9JK87EdIIGvsoLMcLjykNkFkAWeB8tDSAZUFhQfKa4c5qovZowwkcezAsx0uPKSqgWaBY8Hy0qEBiQeA6lDcNJ3DswbAcrzimND40C56PlAYfqq/W0S8QTAWPrVsYN7ElajlOT6SF1FChd2Gas80C4RGoLXTThUuWDjcLfoc4l1TLbbW1XLtZmwEMJguraDNRRbLQBsPyfKESNM5AAMhlqE22loeDzZrameKqIsCoTweVXUELF2BpEVpWOXMSDOxCnmWGpl0mTDGGbxKKRILFgbmzCCCRjKeQShjbvEWHkD4ErcBv39LGlnahpQXoQl3pIHC6eFjbJRDRoWgROHveLPYUCN0phvAE2+IZQgBRO0Oc7QxR8Cjjsqh1hniGNcRyzxB9WcI2DLGsaQiB03MahjjXM8R5niEEHlcMG2IlRHSo6BtitxhCIHFX0xBbPUMIGq5qSD/hSXS+J5Gg4JphidayRAJ+65zRnm+NNolhxWgCexc2hr3IG/Zib1iBu/XDw16CYR3K+YZ4tRhCIO76piGu9gwh6HZpQ6INnkQv8SQSVHvZsESXsUQCZi93hrjcGuIVniEExq5oDHulN+wrvWEFvn5jeNjf4mE1MoV7Q5tr+Frk0rwzkcvZJchsxPiTcm6i/6jN2aExwh/TLlm7Vv8hcz7XeHSJsxqDHGyUjvEnpcRXk5MCJyWchIdk1Byfs8AmBpuY2KwawSYGm7jBZm/YYJPqGH9SZISafFLwSRt85up8OKGps/73uSddQ4n5iVVRZomgbKqI2ED2tfL9H4w2HdcXP/A8EvU2BJEQRIYgYgJzQ1RlARXJKfmklvl2bU4+tJ79+tlhNiKLpNaNzg7FNjsUU2Okw18J8EPlC2iwmZDrqkjNxUBNb5SmqMjMHEdNb5amuMhBlVHT26SJmOPnAQj+h9QSlwlXpuV8SEZQSK2kNLNixNfhBPaaJ7vE1IYhX4+2DHQp6MyYe9CWoy1Dmxn0LWiL0Tc3fZ8MqPFGGSmFCluBqjLSVRiI5IFJDUVGFGCjuNoqMnO2z1VsLI6zC023iNWM+VxOWsbc0oYI1go5y82VMQhsOy7ijp0isbRL0NHpiKYU3UVoaepSUwKqvKJazKx6ZEmIexZX8e1HnF3G1X6Rm7PncLXr3PLHvlt2sqVFyLOZeLxIrXbPgPJW4oI9wJXl1vSJM/3N4NaqW30LONTdpsEHVGml5rN45AXikXO5ih/7oMQqrp4uKk74HjmPzy10obiSW05zKm/zVd5VU/l8yFL3wooRQbUbnZK6Zlt5nMUuFp7vx8JaVOqKr+EeZ0igXcjVJRJoF/nBM+kHz8VMeKYLnku45awitTpul+g2levDZiSta0bSetOn7sNXh2D8tEGMA7YDp8PZgxyHZYMEB7zwEaCgJYFsPrDNwXipGQS8NxgF0HaFkQVtV+KsVeolbGauXO5b7jI/zl7he+uVNr7SygtXWzMnlVovQ/+68i+HvSz/30IFU3G8mZ1zQfgbSL0IQOWCQRb2EDkO4OIiqeMMf/3CYVSMmqCTQCJ5oo6CWChzpgfPZaVXCwy2HAZjVW7st0VAuI4WgsLi5AR6CuYKsrHpcwtXiWCVIBs7a4kApQtg5bsh8N2Q+q7rCmA6nFjo40QfqtiOi/naw2UQWSBu+idG/7oXx+q+roOowxvGPsb1wuJXJuAl2EeDeXAH7HQqL/NVPovF4Ir2Iw8AlddtLUAKN0U+2NU1E0ztuxHP9Uc8p4kSywULBSVWWoBLHBQ5nFghYOd03BUKeDrvTPjeWdWEhvOaym1Dl7pyWwWF5YJY68f6GlTqzjrfwmMq2Chgx1pdYiEtt7Djg/o6AUpntIt8o13oW2B9cx6dbKp4sQVM055Xem5nUg82AXRy+QCIAIZFUoEU8M9JtcGX6lL/enmZf70AfQCjziNX+h65onmJXN28RF7SvESAjUBpk3QXXLMC/AYqdY+8Ek8Z7GBkD0iWuRD5ihf2qqVZJisyC2zwvUPCuIjrSz0zHQkQppKxEDydEZqoAY5RHRxTxIMHjnCizvk+aYvFPbSZAbpoY9wjrcyEXCq0VbgXoz1D+/PRfpXvIOXPOIFAo4RnXl8DClJ2ZGpe4gdnasWMzRyCYWI/ILsWZauBF/oD9/2ZHejoRE7Bawzn6+wF97qGI2CvjnNFfcknsNdD1IKLtRHwKvEWfgKdlWBn+bZa5oOfdpFdW6qFDtAksgXQxDnihC3gVdcIqJiCKhe9K9hbKFG20o+WFV4UCIfzBPjEJrsd6tW1FiBz2CgYBqq0EnGrr/uE765VdRhb60fCmmYknG+RC2Ma1IPMNVRbApF9VIsdqlmxxCaTgpIy+CX+4OsbgzuQwwDAVAGsuk2aa0UBvSGbXO3bZIMv6aWCiyLWZb5YL2uK9RKBP7HJ5WITHxqf7mxypT/SFU2bCOjpIvQWc5EHevXBX9nRwbGepNCq/7g8MBLXUiY67iwMcAdt7p77H0Nbp7M/jdMd4fZ4R7TdfYcw5B7A3AnV5fvu5erABaYnPw5W7nvHzXgGLOj/5EZUn8YfGjljoEC6e2G54iIQl/vXEM2ECsoFA1WG5X1J/w5+mszw0tEEsdVR/6sQuYgn1OFEx3SKv16GJ13M58nM12Dv5mI6ORhkeMK6HAxapN6gjcFteqDcu2ZqucIDh0/QXGy+BziOZ8I61BLjHUMU8ot6qht1TLlvGz8bXCR0576wpzrwGxmgO9X/OmQ7q5LoHifRvVaiOwISKSCRqNDCA1btDgBqQgHt0gkFzG1NKMBl21iUjUTc+pQHYcl/KZpbg28G6mxH0dPZ9muKscnwMjk7tm9MBWEAriDYVyiyKdb5OewY6Z60hJ3KQZ98k+8gHfEIOlql+jv2leEUOlDzctWFtIFWB3T7wPbV0cwaHYD2/jXU9703SuIoAuWiBSYu0FCZ4z5jgwn1xAXgUf6jVH/C1e9J9QhXvy/VuQvYAAPVMc/16RdCi8lgtYo91vcL9e61pvMDUr2Rqw9KdRdXH5Lq9NqOx+JhaZ1hokekuhfVoH8rtCuy1dEh6Jyx1tesJjMhKdbBD3z24lGde8Mw9h4sVXIiRHjnFI+RDnW4XMW4+mmI2PgtRhPtOwe6ZeSMcjqRRxHtw4tvSaaKeDKcHJA874M8+2iuGyAUVTlAACnEUb9y62v/Fm7VikRjz3YwBC4bM0T/B+bi34GYV0YeeNl2nv6bm0xn7klKRh1Y3yoZdd4aukch+05JHgH8i8jK3J/DSNBRpL+NpY896WOSoSbAg7ey9CK6WI8tJ3bTkW8mrSoflGHnfyvngxWn3gd3BL4T7ghYjzuI+TPYDbrpBm3dgLFOwBUHa64gSSoj/59kiv5+S3kMQmHgB8I3vnnTUCBYf65w/vzgifpTTmF8SPHRZMr5WSzkHO0sdOpdfSRKQpqY6P9tudVgejao8sGTNL/ZeYnfnFGT4Ut7geySGbxACnMvAM3hC8rwoqWDFL2idWWA77GU01qrfdTtyadfhnfSwouxtaJODCLikA86TBnBtdQQ60QiqaPbOPCtGcUU0uobqWgDC7hmiYilTjzwFNYyUMcyIaoOjuQU3dadjUXXMMV3XHVX3nitfhDQXd2ZKjowKM0H+HynPHYODeJ95h3WcLNJ7tNsgwo8lZfbN+MzJXqMMjJTRruujgbtCLKm5oHQv/ur50WYBfMpNJRqymvrUxdqi6cGbciETH73hTwq7B+SKGNT4KxxWwF5q974fFt2YNsAUZIfuKZQk8F/Nz0jONWtUB6uvH7NCXndfHaR/kwbb99X9/Z/eVsdxdvvff35Cp6NPW/btvy4vK18b0vv4/b2X8YRvN0+EU8Tj3jLfy7XRpsHXZK/p/hV2DL6NePdbeTxmnd7OmXv4upt4xGG/lYgMty4bUrq4m9q2l5r6qJJ1Zrkes8RAS3do15FjyOgyxHQkwgYQPcedObxvcHBlFoxJsi6JH/RBY/jDJF3qijcnlCQkMOjKh5iFw9oN4GQIBBobc+hgP4hRUNK0QBLwlMZqEi+GP7KlSnEOpZIgOWNVolEQqqTRiQIUaDRz0WC8BfOHcsEOkokcAhkhmmRo4b3oL1IiKkNXCgEJhQIEnzmPeVgiHRyoGhtG9BRp0hyKd3ybdb5zFOZLWef/O66eWZLtW74EstwieHOowzMq6oI1DZU3cwoA0MxBmUWg9pmxmkJBo2RF8bwOf9fjoK/6n/jOn4hFKE8hVYKuaETiJ4xOtEnHnU0wuUJfRiC0B3I1MY8VGfSgbA65/e2zKVbjIlzJDs/Re5t4XKlkwRuG/F9c3PFjtWu2DHTmcaHn0goEomE4F4eTCyxwYHNTbOLJeZbEvPZPDH/6ZOdBPFJVX8SPPVOVKOciC3m+h++cdiJ8ZQ7UXNiftxOxHjC5N+cE9GAS3F+X34jOokpLoSJTthxke84mSaotA2+S0f4Dv7Au+gKzoFf/hjob11I9e2unqKeuno+dDnGQ550/gOFuJVHtUMiQnASgxGzDmaGDlgcr4s7NRd3juriTs3FnVN3nX49PK65yc5G9viypfvM3lYppiKD+UU1S4Q6lSVEimkC84mZNzDxYDOX2oSRyYSRQ8FMpxQzJAX3crOUpyBmHyiIpBTPJ2gZNZ+8JUrUDrUdoavc/aN7Fsdpa7TEO5uTOzAFcw6lSCd3ECsdlM+eUPc9j++zif1LcI2bpCIJl7r8Uox7QyPs4aT/NdxvjszmZUjOAZFQiEnuDncpYx25TF1nxPQM/rkICtYsDq41GKswlgw2HdDq18HUiW0ioMiNapLYRMYOWu65gGye7Ctam/BSHXks337NviKbOlAkL+4p6Ef5tG2ejsgAxiNk02bChxzYbYoYkJSqEsLYlVziUlFJ5+UhOcd6AJ+ytMJxIi1ESCkThih3L4XAuPH2YkHSDYVkg3+4mxMInVsWqdTlgg+rKhlscCgsZ2JJ4KoecroR72ihJtT+C0AheU2SltxUMr5F5QquQC0cYL1Da3CFhJIWmFVV2uDP7zC78IXmEbefG9NRRU+R/nzVlAKL4HJwYjJ7VZFtgNKTuc4od3fQsXrvvp3M6mDFqkN0AeX7FI/7LcWkJnGEnAdyg8qUD6F8i8I4pMH7PibbvO21rIzVR/1HhiW+ZIK/ePwGvI5sLPDIR3ahTKWPzz1BWZMMCfzHUVJU+vNPfJWeh2tXgr/rVbXc+kIy8zhC4FHiclEvodKea6+jUk6l773mBno5tgWZyapqdTTtDPCZz93EUk8ryRF12xT+GPtPf7JtauzMqDXqX9zKAgz3FlKAsuMY7ocYJHeDzLhBvvtZGWSmGqSFQYCD5T8FJHvPXHLs9SJjFkX+YjNLUPL1d+iQr46urDi+5a6bmePhwHIMO0y7oSJ64+dl2EOWqNPwpTjvc1+SOJgNbByU4SC2rirf/yNo5zJXn/j2jb75o0FchU03N6qVeLsLQf0CUq/b8YwfVlx+YO0yHYqAlmzyd7aZpDNAItvX329++4hgJTmfX1uP6auaIT0XNEM6xp1xrBW+4Jp2s7o9PmliOzQG+UQVzaHl4rk25PInqbyH6d9r42jGqSL2SNke2eYygz2ehL/Nzwn00CkIC/Ls/cius9cz6N7iUND5Ndh/SucvXYqUO5Yt0DzfwIFBpydzMZR4/2DofGTdf7ASKS41qQ8E2r+GvuJrxyxDQeBK5sRz2Kxj+TWr5axl2Y09ykOO8vvWtYcqysijPOwo77U8D1eUyqOcc5RfsjznQi/oxYqDTCe2D4wTIRUdkr3+cNvqaHnF4ws75cLxktLW8HL55ZjzzPW2hG3qEsq3/lAk6FcCoL+xZ8+Yd3PPicT8SIBf7znn7tg2+Ysnf/7k+GW9ENz3lb9DQRc0oldijvh37IphMvx1Gz4KjYQCZupHJh/7E2tzohwMIhJkOsdeJEFpllMT6v7noYOIxeuPDOiCdYKdfkWT6Qv4l0cRX37xYevMkXV0hnDU0YEd+CGsA+gdifEprVbHnhtmaacTqY79F3fm/5cEHer5iycjAvsOr24g1K4L6Ga1/6c3kZxY4GzBD3mpnC9nps9FPbH113I9tvXXoY4k/Nmymagql5hS5Gj2ch9l6zdMn1teP32ujJ1ftBRnQ3v2z4/OMTS/MZSBWZHwh5Ri2bqQmvADDPOA45Ss2vgH1cCtDuh7LGMLgrD+LyDWywYRKJ54Xt25OnDRELHMmybIk1jDwZiby4XEf/Kx9zzJ/3C1BOUe00FHm/oHZA8rnwSAU2+gaCh3mLUJOd4shP2I8UkRHYMMGJchSGC2oL/rzxjEQ/vjY/mo/Nb4eveDZPmYtN2ydlRkaWUsSfddY09HMiaKc/kXqiTNvX9ZjuvwZzcbeO9mqDwulRSVb/4pVxJUPnojV2JUviKViFfJSf8Du7lB2YZPSUMI8iNc6QDBlPtZ6fY+3dXG2+PqrjZ2vy1ZyIrkM+veL60xrIxh5CpNrkEToB8NP6Hbhg2GPtX2TIf9XQijuIoEHW6Sa9QA1ESJ94Dp7MGJKaA8FSeD6uKXiTDkix5TZHkkMvj9rg/AHybaD0dYYwL+XaOOafaKtMI8I62HKQSp+sa7AGXcrf8zMwq5NBwFFu5WBllRODejf3luUQHbnOPooQirWYS46jKtMM9ANhPVRU7qs3QZrWBDOk3Hr+H2crk/SxVZ+b7PYZ7n/iKkVmxRDS6bdIi/tP4ODVj+2aeFftbRgwKWQ6dBTufyCXVbCJPofJOJ1wl1kLv/3Tek+8Gqezdv6DKjjqbLWxSdTifUHsW6zKimLug/vy7Tqq7LtJpXlyNDuswN6TLndMmsLhnx8RSwEBNCECQvcN7ouoDwC8qsoEWBgpIyyMNOs3Z5ux3qsK8ZW+YQerV0SNqZl0iQkNbZ75UhCfF7E+pL0LVdfuEz1s+Ogxvss5BgFw2mV6s7wS+UE7Pc+/t2/FlVqapGqNquqdquqzp5iK66vZE37IGINTSGxg0iLpzcabs38mRtG21nIl/bP9o0Jdoq1vb1hoPTdsbjUM6ZsMKlEHhCPGF1n45XqyO+8nPKMHuk8nOlPFASSpbpIGRD7BFDQBXYBVcy7h4j6vdcuvYidvGhqPJq6PQ85KS0xtJ4UGgT2ZuUutPYjJxhcMUpN+spN7kTGtAV8UGMdAdZ+qChdq47WFF3Smy/DkXpuvRuq8kITNl0srs2Vxzt0lxLJ4nh+Xxhrhh1Xa6Y/7LU9atSD1+U0snsDVv+xLhoUf3K7NcvzP6IYIUeISJjNF6GhDGhYEso0QnyiDAnhEE9lDkaYmaCMkzvUCZsermh0FYY0yl0FVh4SBNUPgQYUJtZi2AyU5N6dXS5VlV0HZbZaINhccvtNtYcC3/OmzNzHu4t/KltcgndPORgYNMbSjrzlCoJltA+8YFmSkgVIaZiPol7O+QTePVOo3E6KMLM63VBQJKJYruACDsrj70ehFNDXledhczUO5cp5FrtRvp5LTPl5Z6UyT0hIJHYbKSaZlI6PkGFPamYiPM9cynWaik/JvbBXXK/m7r7Y6wwHslokldM3X+LEeTn9NkWZIlMm1xsd70TX50oT+u/4Qaq9oLmQNM80JNkJc4RpPUkhtB+FrRHElP+PMpzien3ERMzYJZYAY0F6EL+bFpE5afeTI/C8xJa8YOZ14UDhVTI6+hEZE5Qg6TusMTG8ZMTOgSLz6dkxHwr5kfaXEBdQA10QvFLoeYRTdGIyF5zu73BTUQDcgNx5KzDeSQOTWKJ6f6lt5JVyvffs5NoRISLlpJOX2KdXvN2scWhihPUvg1q38km+CTKs0z+pc+KCWYrE3CK85MpAV/C5duofBvTv3e/TRhY9uX1sInpUY69sOenAmXYW7xh94JN5IbdO2LYGW/Y1zP9G+2wM3ZYGTEdHnEWo+ziEe80MeKPWMSIkqEx76Rx5mIuz1L5SGx6/PjdNpUQNyx5X+xUOgzyGL6Lm7ocip0uX4rruhyK67okw7p80DiNh/qocRpzcE4bGvGjcJqM+EE4jemfeId1mh0RQQ7yMnyhoUUBOwUh3qu7PlO882uKLvI1tSyYuJKZP/YF68q4fhFBpyIyLJsxMRfVO89FTdsdjpzt7ovqtjsc1TS5DSPpX/Oyj2+/1k/+crIqIh9EgCAdbaRcG5YcNckOQbJDPNJfS5IFCw+XaJHbdSiFLhG2MU3IzqnZfDqZR4BYBJiJLUVB6txpw9o6xskxPWTe6cq8HSZhvafMLVtTjdmIM+7vFjiYjRpBfJvnzINRPbIORs6ZOpYkve/W6/HIN7rsms45/d6iiaImx37jaAXG+DKROFr5jv7laH/6PCzqjdSlJsq7vyUSYx2/61Wg9JzD3F57wIKcJMslaJkhP6uAZEzUcRG0N6pc8/6f3iAhG9W6Myk6KvFW3/VfVHV/8wdurmf4yhvCAedDy21YftMRF03UtMbr2cwHbHDN1ML+OeH+lBxvaJyQ03UhLVk9US8ArzyAV0NYoUYAvPIAnuk/WAG8Na3D9mgEtisPENQQtqsR2K48bFdD2K4a2B6NwHblYbtqYLsage2hh+3hELaHTWwPPWwPLbaHI7A99LA9HML2sIHt0QhsDz1sD4f8FY7A9tDDdqbfc0sjg+8cEg4hdHgCCH3VEEAHTQNc6fT/jSF4Dk4MnlO53l7mo/PltUXcoVQW6srD5mA0NscWm2PB5rhMjmNymHFZH+Vhc9jE5hByeNgcHhObfS3WobcHzUEjBlc5J66or9NWNN2gnRueAWK4YcQPGAihQnH4FNEWzxyfu/8mzxylHiggJzK0SA3yXSFWtoFNtmNpSkvPVcixSxgpSskVkfm0QfnuEL4IN2NLml/t+Uad3oc7JzqrthYR1hh2UCP34Sf+DGfNiQncKwYYau8a3Md7p2hUanO/jaW4f6p+i0jNmyfIoiuXRY9cFn0VTVPHlUVXkkWnoyy0o82FWeeb7oqbzE0Sbou8VDvnsm8wuWyF/pK3nhuRy368ymV7CXovPV8G1VtZUZXXToM4CEIVu/Q1PCZJalSUS1Ir/tUX7nM/qn6MA6T6ZVx1cInn7jWdb7dMajqqvrgWzZOaRpJYVbeq9jyy1LX8cf3noiK+pkhGp63tGcRgMmQUyVfDv2E9IWy/WJPQB/RwtvxvOnNRGDQS3EXeTHFzppJmkf5N+B3JVOUWddCi2kpMD14C4da7MUmbeULhoSoqPoyi6UehwOmNuQ/tktQk0hv+QJruoU1GZGORV+9v6BzzieNyiLl858O7GmlouU0sctx2miytmUgUshkzhBjlz3bSX/OdOfNtJp5zVKmInrl+xnKd9WXbazI/kylnTa43kb062h9S5dWo5JSl5P6fZmBCFy/TBvv08cM3la+T3jPc4bO2w4w/YJ/eT2O59+JKx/tpofDZS30lT3Q7hK3niYC+/4Qe9qM5eFjOJBn5Ipd7mYLIpuOL+WEeTFcKK1hMYe6XY5s/luwPTyoK2Y4/1ArrXEyKLvW5ter6xVG5J8mlrVLmUZ1VyJXHnIoapNi+PbDmBf7D2NbKaBrDJKF0jN9wtm+fnA0ox3Sxlxb9GxEWfWsJMwSpBjsv64UnppZ7jtDGlh+6vZFDNJn8ZUbFD4gXlogT0K9f90HfjTxSSQ7kwKlRJJP45S/TcsQDC5w4O3j7v0DibC46icTZDVXi7I5nqmyHsomzvUmVOKNABkTLbBFUT5RFJBKWKPKkF6oLGI3lhd3jyLjhB9RqFhvEXSXpN9wal6cTwNhFZaxDzkDIrXLssm+HvXsMGKE8X37b49qKWm15raZrtSW1Wt/WcPhJxMe5iDN8R+Ly1WQVFomEecP74ODydEnlRXzCkwS1FbXa8lpN+zVfktgX4/6Yj4fpWJ5BKDrCPIfYPIKm/v093iH/cVyehXt7aEEVtQ6NP4r5iUA0UgVNR/ymI6bph14TVdD0A6+JKmh63GuiCprm/KY50/SY10QVND3qNVEFTY94TVRB08NeE1XQ9JDXRBU0Peg1UQVND3hNVEHT/V4TVdD0fa+JKmj6ntdEFTT9o9dEFTTd5zVRBU33ek1UQdM9XhNV0HS310QVNB32mqji53rFx0h+YKLc30h+BKUQ9W/ZLZfEoioT8jH0/WDk+BxkPp/4SiMrIl5GgPwL+fm//Mwpko/FhZKZflr9XhHbfPot8JvSMaXcN9q2/VEzNvayT3/xqpuaOaBoODY+HiKfw5nvUTmbskv3KV7ATBtaBy7TtfzOuaQFMmJcvpvKR6R8D5V/okzfJ564wWXKWDCQkOUI9oX8Pirfx2WyO34d5zi1XQ/7XeE6kzkL2bMEi0z+wf9rkxX1ke4nklnh/gCV75Tyg1T+pJQfovJnmc0jP5dRZx2bcjFdVGz0D5uLissfNRcVd3voy/aiqqVszgs/GpOTmGb3rdZJlnX5mnCgQPXhGK5f35M3BmbXFIl5BPsGrNspJ0styMli0pXc3HOoD55BTRBOuHAldMyrbbV54iDE3MMi34by61E2057JYGH++MVnRPwZT3yovVvRMa3yVLPof6PyQoT7yz1BPWMFyb4cu35HUApNBgt9Dtx644is1XI1F9lMVfn4e2wGpk5yW+zyVQcRAkz+pYPNfBVferiP4DLi9E4p34MQ4K5f/Lp1e9UVzV/7AJrLwKV/0KuIcRPmpRz+4iPXemSGCM4xXlE1ym9/eecoSnu+SMr3fAh078Zf+HTzUkcdkLcf/trNNQaMSZJMk4vpttBdTB8MTbevv6uRWOM4E5xDDFntEtEuhrO6dFg0ZY2OxiWmdlBq70jLv0x1QmoupQQzlpmqDHVCghfxUk57lHdNry0PTa/VaNi7huO9VBSnHIV4QpnGxLsvzcDdH7rAvQXlBJnAetDuDetB+xb0QEo2dMG3J3RBOxPWg3bG669TPEeDxHXYjOBdLnIbT3EnJs1zVT1u54JG3F7pwvY36lF7OGhE7QYXtC9zMXt5PWQPBf+qIZvNH7LZUUN2nYvYC13AXow+Ll5ng2PGa3bi8ZpV8ZrghbNEpxaFzatQHJ14NVzHnIZRWzlWp8pt5sdERFNsvs96AXUz4DtIdUKRm5q79vU9/OzSsd0jl69F+u7AO+sWsYMjPyp8Y0mbYlAdSxoAD9vghvA6m/Bf4T2UTnxWEXgi1TT8qD2ZKsfLV/KUt/Ptns/VUmdnDhQ4GSJdEe0FkZ+AlZ2JbOor38b3d/+D+bMY2/ynyHfvHPqNaSh5lkuW89kDfgBLbniLnM+/pBf5CUlOg0ze+bWd032jjDxUo+QBYHPHzu+VKf+57vwarSTfJsGkEDEBMjC/uPYn2USYVjsQebepWh01rYrZO3bJ2LW41Z1H0KjKHH/rXlykRfJLQbA6gEfHpnRCf6p6jnru6qtwYxiitBZ7Z6FEcv3IZ7OYTp491O1ZqPenlgfBRMBdPns3QLNQhuQcIlk5pRV1eU4QXAASG7F3BReV8Va6HGFQcsjNSB3AmpyDUF3lsr4/aGSCoeMP69ssHalSw0gCe7uA+Y9yJ+LKyGSLgfGQBR+aM7uJ6QgSJPRnKNsQGxepqP4vNJdyHzt3VVL9yO3U9WMuplT8f1zMqPgTU3RpajzUrxRY2Wj+0adrPzAsxEXjBvipG+BnboCfuwGekAFMPlj2yEplc6zM7opltsOKjxJ4brB/Yl4xbgHcuE+6caevOwltIjfAtejPA+xEkQd4FYo8wC4URZtYtuVKZD+u1G7ExTtwuWe+c3nmO5dceUu3NiyV9y5wck5OrqIgwAVbbb21N3FJ/Q/HSYRXUfFWfLXrfyiJ/dr7qJGJnth/dyZpJtDTkQn000kHlyOPy7d9k3Pk06GXeCmyehZXTb4Rqd5otXm6L7LLgrd8t5ZZFdLXg1SvVr8B0nIx8b7SUH/vK40ULlVwD7cB593Tm4eC+sAAm4upuJuKs38fr47WGfr9X2xmWSPS2SImHmSFCc7XCvi/wnT66mcaT3JGvxJcbDKzz8BPX+dMFRH/pIBfJwyaTlJ61SReW5xx5WwruN12WLj1ncRYsMVsJbNcGM6bpr8UBc20aVxPm5bA6QSP9KE5Gc6Yxh1k6L1ND9+W4VVmEztJ4y385svMT5N3hO3Ex28Ju7eavfeDJ3cYWrxWXL3e3HivmXa6tPyU8IIH8KZxgxPRhJxLrbfXmap9g2z4rYK7AJs6wx2hYmWwQ0AYrSPhWkRIFdJaY58AOpg/v7b01kGC0xHy0Eon+3RbJ7p94KVLi/YBuxEaXfg5fYzE/GSV7is6vJ1Kx9+TplNtNtDBZgNjaNbRIDYrqhTi0TGWo+Ij/oRT9G8QUmMO1Blr7jAjm8qAlXRhegV6byuZXIdkZp1O6usn9Q1FqunV9hb23sHOaYlO6Vc5+2p7plv7NhbGUBEbir+Tz7aDlpX1gpr1hgyHEBq0K/OFxzBfDHexAQO8BxzTMoRMCJxiY/ZghqtxXQ1i7NEw2q5dDKa7+CJrNPUrAW6qlBxDPuJPDMMai9Y3ZuhBDXTHp2SFlOjQGXbtwaA90Jpc1CCGYeOnathonfur1SAZ2kUh6cSEwZ2boszuX6PoeDI7vk2P3vHNOCojnPgcTV05eIjD1D4AkM7gsMw5rKVzMsygTSO1qngPdbzPbGDT1dRC3oI7USTTklvGjBuxS8o4aro76NMgfbMx1thUsQCWbuMDvUu2lkt+n7dT6/MWawvEcY3TeN+9r8fN9hjFmHEhO7DLu7cJ8xF9OwhDciA81xLPtXSM/Swy4znA9dF3tbi2csU1J+wKbMO21u1Ac8pdoE6RC7BLGWwc+y5ons7ncYEa5QLp+1Rd8A8qgQuiEzW/MXQqhs7qhk5pyBSGTp2hc53B0Abi9pECdUN3dBuG5v1/29bQvW6IE9st0HcG4zTIOLB6qujDFq2pokW2wBw/Dgv3xb5+O0w7biBf1SGfLIzBwa7WiW3aEpvmYtOcbZrqNts0P7pN72GbqpOz6TFtifgG0OfGWtm+osVAnzPQt2E1Y9nQWLZlLKtzi/k9BK3p2jKGBnnLRXNnkNPoOcdyG3bpkdmMMTCEmoJ/prz2os1nCN9zF8G+mccgCRhKN+nEoQsbZ2LjzNq4xTbOjgc6tuF4CvftxNrFBbQ6GnLk7IQRAR25gJZ1CypYanmxHFFMdirgGH9OKPGHbHsdtsfJoCNPC2yX8dHjW9BbFjdNLhzpI8I8O44w/6mq0BvHU7CJ5lM2vXrKpvfhuml6B9fHNr3yTd/k8pRM/+mTRhjtAYw6JsAIvNQN3NYtf+e2ljEwQ0jP7vml24LVY9AcG0eVfQfTwAjX7sO0bNxW3wS0AwXa1ASTygZf9e6wZX6SSPLGqLJl+1/KlvE+Y8XIt6JdgYe6bZC7R22yFh+X9XhPj9PEpyMcFlgLAH37wOUF9KfeGKMxHmpM0Zj6jWL8+iK+trca5Bm3ph/0jWf7QwLwFaFA6DZYewp+2RWlFuHbdFN9wvg++z/XHf8qPZfFSR1y6qBebVnI865dpXQxgWYu+tuDMXvrNE6KjrmdIcl1rY1rAtg7nMIpMrt3tqX7OEvN/dHXAJiiHy6FaKvfdUwYjw1a/toFawjgJic5igXihIUWaBbsYy8sPLoXnlCpBfkT8wIg/heTDuKfkvXVSVtftnQcZX23a2Td+vmxre/2ivzntf47ohjW78DyT3FtjuU3UKiOUxUctXQKOGpXW86U0YuMgTu8nGzJDVFqNnlEO8yMDYUJNfDBonGdsxFg3W6ZYa1X0IJQGhUaO2j0KCM0ds0j7kuutsTU1MdIPd0BGnXYA21Gow7NoiIJBpdtHrvCocOcAWOggCi8otVtIFKbOKFmUMlzUuqc1BcnLbA41RcnLTi6k976b8hJ4XxOCoedFI1yUjLKSTV3Uj2f30Nhw0MY3blH/Qu6xyHYthZcdKp2LPYXqzLFzz99tBjA2vDL0I63XbTpCHO+MVivNnGwNzDNYqHZmDjgFjkbY9kg8weSF6rmHThE9rxtUak+hfTsEOIAtj5UOZr1s+Ox/hE3f8D6J7/F8MlYXZ2E1QXXR1rdnzCaVs+Py+pu6vhntPpfnRQkyWbAx2diAaSsjMS4jb2AAUQyb/TE0gwGPd7+V+wrwNPjPYCtWWFtanxOqDyyFGSxmS/6Vwulm7ER9jRtzztt9Kw3rCjCC9BUc6YaAU2n1kd72Edd+Ohk7jrEOdlRZ4ucZ4tWyfnN1LvDyCU3hImC75RBRCxNao0Ux2Ec7ujrzPlI7ocL0s/5CHd0dcoUjWmNkhJF7Jw2nNOufdyhrXPMGOycNjtHZ4NxdhBzsZeaEu8IiW7BOy2508isZ9KjrrrS41l1TbdVTJ5pbkx73Jt/fC3Ex392hfZ1pRAvjXw21KGci7cUER4SlC1pQ+8JXBDwG0jg/f/JexMwO44qTTQjcr03763KqrpVKqlMOzLb3xvRq6YfLRtJDaRYjNoMj9n3feO7Kt6HRKH21yOssi3bsrH7aQa7MWC6BYixABnEboatGtxgwA2CxyLWKRo34wYziF0NbvzOf05kZtysW1LZbO+9kS3djMiIEydOnDhxMuKcEz+Eg8I4T9cziLkjZa69t22EV75FARZKlW86/OpXhsCQvTePuY6GJ954pLJ0a4xSl9mryeI5IEzE4/JrQOrmpgeZeB8h+VW8OizP96vG8/O7n1vj+WnD9t0hHtr3K5LMsIsLuBWcSX8X2L/2E2REhgIPKDhjXSmWTF+lHi9BruPcG/AffP2Rljlced3yvdYV0MYooVq0QyCwcPd/AbsaMn/Q1orjahr4pzXel+Wr/2rEbOGtiq0wqBjgIriJzv3yGk6JiwpMEcXhU1ekegg0WOTHc3h8Nj9+F4//Do/isPavnIE4Xjmurta+umJ39V1VhNa9FOGFfDZkVdIQvRBP35d9rB2eFmNNgq1yor3lNTeOc6I9rAmNy/jxGl370y7r2p/2C59r+9MCBoH9NS75Uj0EF28V94BLOO96zaNpUL+xhDRNfZBsIKOYiWX0qSNtIy4c7bO3qnjkic0Tuv5dywhl8hzZSFs86bpHntlRH9UTiIOwBknb4ToRMZupV2WTjdi6UUPTyggM/96xY1FswdazBJMGKmuwlndtY851r7ehEJVu762x1B+dx1jquuvWus1ef9353WYbx9jRoIs6PRVofSioJOBprzZ/QUxOIfYyO141jq7B2hiMobXHCS3po7YzayzOrLGJNuDMOj74YuNTNmJik9ZAcl/A5HCVhDC8TsF0RRvVBMt6hoTDhFd9qRGitHEj9MtXfG6tgUtlDMFAQZizDz/xUppAuvQAiGCHAINp5GMatY1drMcl6ouRTChGMlsR3f0JfAWcklnki3Bo+yBmQ56Inm1+RcNLkEF4XOlVxAEbdhb01zgLBpWzoA26HrRNX/xULIQsx/gbdxb8o9pZ8P25j03XyWrTdSWuF9pR5j//srvKs95Cf4fM9OyN+OXp50ketCTH+vilXx6R8y+BnPcdEPDBDcWQEHE0QjAbP76reXxL83iyeTxeP+LnjtCoej74d7IAQRb93mp/D4c1Vv/zY9agddlGcLJELVe2Dx8LS0+rzPgYHJUHJQEQz0lru4NR5tD1QSoy9nY0EnK4qJCqq2pbeotMIeMzw5R328dWiFjEkQcwUVPu4DZgku7BZG1+iW03INjiffvFpgQHkIZeHdhPKy1qEJD4ij7H8o0EyvEGSlDEgBI7UOIaSixQItQgKKmFkgiUY+hkXENKNgApqWph+pAajHq9C9fLY7QRk8tAyFbsN5wcwP4povKJG8n9Xd90OKpNyE95oOQnhJSfGKXl37kwLanKsKbnZz2QAsAiAeaS9B9cuEMAVpP1i9556fpPHiFd/9yzhP0Xj4iw9uGhgH4J3Dn8cowxqxd3hJnPBgbnTK94bzvmmL17Uz9DPvwR00t+TwVNpP97jrTie5W3YdazKVwkdauy73n/SFT+P6zLJaPlHhot9+K6XDxa7ouj5W6vylm8cczLPGViEtmkjqZ1zdsecrnKIou7NAMDXwKRIPdbeq02vT0uN2KKp15VF4PE9f8DqkblwrCgDj0TI0apLUPs8dGAUSrBYzVCJuKLwlbCpmPKIKNp7s6TtrkVpzkgRabjYJBTYT1AYqZt673hwZHuaehMguK/ExQfQ193FYpBg1+H8cP+YcVEJ0P80pJO5ROeLG8JhbylB1DcuLJS8XSD+dEK89MjmJeHyMcpBF2GvLsRyH1uzCoBdQn9itf256HvjPTHZ14QBJIyH0pPuoAQE4StHoVFOPGha/TlopKiSXtbRFL+si0dl0XV75gybb9rAf+u0Hg25N8rbqmDnIQoQmSi3oMYBL9hqa+/yPUSSXntS92FEpr27dhywMPR0F7fjQAurYAx3UapPQOlFhoYFIjWeg1tQOnRP55OZe2GGq1YW7ukCp+TnZQVintVfyMd4wAW5AhpLyVq1upG1QsaxSq0Wl9s1cavKV5G8c5+lAvfHAsQZyqkDaPS4FvqdjG8llB9TWg1LKEoeZjmQo9Lnv1a5dvolgsQk05CGBV9KgdAy3UBoe2ZsNCyKyUWzlAKzkjcykPDHd7dEIfS+TLZX4RSiF/dHgJCeTxi8gcMpCfvwfHHI2DAJQ9HKb7GQ/gG0H8ODE8CiAqIDoPoWxAdErEA0eGCpxnEqQgG+fRfC4Tgd1IzmAmAKe+IYQFE/1lwE1IY90YSn8aA9lA0UqQqwCFZzlrf5CHNbtgecfjtgqp+Fy+g8haTtDY0gY+D8vB9TmREq+myq0zGIR7w5WqjqAflG991NUa2A5nolN79f9/7oTd+4Bt3vPlvXuqfoRocXPq0VLn3B6iC0XTBExL3+dKpe32L+z02Y0Uq1t/zK25Lf/YZfak+iTaA//LHbnvp9KXWIxu+u8SLUvt09dl9zKldXkQao5Q9gbJHpez3PomyxSTGwy2trMu1xhBZl2sUWnYLfc1j52qUei1KndW21FntlJpGDHFCGpKquFTfLxVejwqrWhwXK4RX3XrbiatR7zv3vvXPEY1fyr6pKnvaKWtCcaDGhheNeWYD83VAwaYYXr9Hi3M0Kyt3a/F2vxXRJQX8nQAv9DjV1LRzKJ+yKqg09T6mudT7+Ie4XgiqN/VkcCUcH+atDccXgtouXilR2yl0RPPuSu3G/H3exCtSwHOrxeK8bKYM8fY00d9CyDPb+bNqpPMfZppzDRte5wHrfhpKlPD7lQygG0Mptn2PjWKLELg1M7SP6ipsUojhcJvKZG9oRUmfjkc0PFXBFbdgjwjvFLpbceUjGEO7PckyxK0SWYfb2EzzlYjHbO182nb62GinP83cLjWmhoX0vHa8PRlJz2+1PXcDJkVOz6dBYtLZr5KtSgD+HE+MqlvLLRyfa73G6XHJFjnrOUX6djNPijwblbCzjYB/tterbvFEPG1j02PSPEsq5j3b59NOWajRcqGUdNl2+OmyoWj7+xTprrsnkdjuJhgX1tmku49jkF+VbT3pybZRJjQ2eCI9XmJLGLcEc01mlMh42b+z5edtZzO3r6B1iMsSqUCPW78DrSfSWiARIcSt+FM874yS2varFDfQ4mvU7lr4zo5Fo6fYvQvdV8gb3fi64QIbX3BHY9NAkJaPRSgcmrsbZjcL3e2k7PXyBKLHzU7Zx1KVVRsYq42bWLN/RIGvXJ0QhNuWS9jacyOXfxlF7pg5iH8ZllxFLpnQhVEhIDA41Sk9GOeWKu80iq1vAtbI0cNALHZLBUtDY+jvnoUiLfUeVoDTIb0wPpTKlA7bYCxDGXxtZA+nc1Qz+7HcN6eMz69gyYWCqbh1CDaXmKTsLdLkFQR6aK5v0Xw6lDltem7QsFMvv6nxOKsUfUa4SOEhMoHnXj4p51QwNiDYgueEWCNgCx9nTXicX9pPzxE/J/QMEPyx0hUEuzCO6zJq9Ow/QxDqYkbXUcwqhM66CE0QFHRVrMEbM2lmFB9ripAOBvgwXajwapDSDlKTjBQV9JgkEzUmEyJ0LCo3/bFFZVk5qPTgE5PZxn05M5v8XXSI6JFPwSIQXyk2dTGwlgaLyfKXrkA7k3kvNZnp78/7ErautAOVWe0XhIaKn5mpiifoKfelNAxHWgwhDAJ1rWYN1bpmW0M3Oqmkkyfw24ewF/IfU3XIPGlju3Znybs/J4RAkeqjXspRe/+dowpkt90s+98C8Khz/90rbOWjDhWdDZh+efuVwwlfokGGuY+oCgSIP5UiSkacVCB9TMmYkiCiX5Gu7GZvQsgUtjTtiCdTgu7jstfusOZ9EKHp0l+OTnzNrbKbJe5XvBMvZRO1LgA8qpsEP37CFlhxCgCzalv5bW+0BbY5uyAAgbYDuQ0SLZYhIVaT6hU/GEEKxXEOzCVxmgPxn6KfcOolIOJC2dS/+0NC6mbj1LdbHjyfbR2AyOo6n/ig1KGhH60mshmFbdxm21aFDclr611cBnsqXEwN95UWl9JUcF9awz0GYPxhCkbDTnZd7YP3umI3lZCT1Ua2+IjdHmBruonsaUb9f5UwoUIncWNZGVrQf/Giq21Pm08+lJelmePrIomZ6pMDaB2tDl/rSPnYen/Yu8r4d+1+WF2LE+sQwsivvuh9GwBC/7aezwMidx5RZ0/v4s+wGPOUxBtSVKfesvCxdxzguCrMI/C8D1EMRmewRXi5QCVGP1RDI1ubFBDAUxBi9qTl3l1yXFDSMXAdtW87ZcOJnueMR6rOCI288TRqEUggEbcb/EPrVvzTJ5d0gI+3TVzvI0inTIyp6eMargTdiIC4n4fgD9O4EL5QaXCGaEC80moUJCABTsbkEsSkCJ4l7EqRfvEu4dVvcZh7PCBePSDKHhtPgmcxKBJOAWDtoAgUKaJKD1QXCU5s+m6t/EPNbotsCXi7B5fyfBoQQBkhbA4kGEwT9FU5NZmS33rEOBeUdYXFka90pjSOVyLr147trtJfpPWvVAeKEJ3I3l+DlLD3KEUJwMXUrcgB0gWGq3DYcSpCaXXXpT6mYyQXJf8zyvIReiYwGufZXO4Z9K4npyj0NKifLqqfLqmffq1+elz9tKt+uscbyvkYpwUvBKDFOhCle+q7jQO5wxhUKO/DKEBg+BVZDd/44DdjhDHBGPmUn9IkTAee6DOKJpBigHsW0ut914wkc0RIM2D+6IDNNzMqMT7GSq7LA0TDtjuCZEGpeljKeYyJUw2lMDz20mSg9pTcbyZj0kzGm64dmYzGl8ji/j6aPRcQXVE9FwOkaC5G7lzECMtcDLiMMxfBatynhDtG+MO0gQO9+uCfHuYAvaUuAPencweya7ACQ4zLgNlxFDAMA4yUYeAwZbNGoueghwZYfCigUSEEzz7mhX+mokMyHvrXPU1t0I/KA/xg0liaR0bhoyreJzA0tpsPsBqDPmJfmvTB/ftNtFQicuu+ct6ovQfSv6PCBrgCcEANKqghoEYO1GgU6n4TLsl3SgZwcOFLd6nAglSApStYzJRBDUuZoIKly9j4VJsqX8SF+Z8ek3LvkLbNGcAw/cdKyZSQa73d5a7EFRa2VeYDQsXoA+Wh5+3b4WHXXIqotCEzCvMweSkJThUwaAAD6DLhZvZiolnpZQIBWybgAPyldSDYewCkIMs49L0Il4oIbWLwkKsPEIFMtG+/7EuC+92Gy4T5gTfAAXYvYZamv+bZblnKYQxUTTeZ85Z0afpxzZhjIcR3FDvv42dfHkOQQQjCqBRV9FIeouZSDp68SozvIuODl8QT3nh8uR1HXiRgrNs3aUUp+PYPC88phEzPLVfFMVD44R0MCCVYh2viJQglAkKv6Jd1Ao03SwXANDB8I+lA0pOpdI3oxgTdm3ekQzGsJZz2C4W74z2b6JqIZl5oIXaJRfGkqTTi6uAHMzYGfhKAipD7GZG01yJpbxxJe2tJ2vspkLTXImnvEZC055K092hJ+mKfhBgtPwmfgS3RFKn8BJ7qIJDaEBOCmBZ0eiPoJM/HVdnAKQVOktNHzoSDWGz6prsPRpkxLEMTScDJdyy+MX5iQrvnot3zU0siJZh025jELhKdEcJ0TDyWMN2mBbviNB22DNWnZmwjCE9TNYBhsJ1TI53Du6aHoM55ethvDcyD5xsY2/tmfMaMSGs4flZjodNR5lDr02pdQj0qGqFlaRJ51kO925IBiciACZEBCiWMT7C0fAUYr+gQYoJTR9CtJzqfCHvV62bq23QCnOz09zDHxQdTWztlqj7B875vtx4w72OZ98KJkgh4sdgDRY4+D5bK4MBOFVDi31YJDOj/ViVkeyNAn70Sl6BQil79/tBq92n6moEaWG0S7TjbGQFmtDHh3jxmKl0M9VQjuKBfKpiSgbAJKNnhVjRTER2EY81V1l7f8GaiCcuD4HD4fVJDcs+CiZdMzOOHCvDxxKte65UA7DoOD7InFLJlt49jHZAqHLI0LULAQGsuGMjICHuMHWCO3rh8IGkH++Dngj0GemPYUw3TYa6kNxNhoJTy+bOJkFagvEwjy3HIWKKC9stTlgdsLOKgn0vkmXRxSggwbXwbDpKt4meACrsxDMxkPouJaWaBZJ/oh2cyk7chHcWvuKYnEs6kkgwzwBdynljTf+5hupdjPPyG8hY5hmWVxxm9IfaCw/JKUM4GfJhyZkpqpkG5DsYEs2SvrW2t+i0M7Ewq06dpycNCk8tEzzfp0FK16FhmJzgXP98gtgUdgtfb32aG2s4gINlwRlaxEK4Q1JQMctFFxS5X7LPfQIjt7tC6BUJYLqLJhKfJovjlq2daQRRiC2u9ptT5mhquaarEFnR/ce+a1jzZK8xkyAf4GZhZMMOs0UxKYg7/N9VE3sNPL+/jp5tP4SfJM/xE+QA/QT6JH53P4MfL53jKd2Wtu2SYb6LU74E/oP4GzB/5vHUN3GRSsHcKBruEx3qeErLkTJjEhPTJzd3cbGaswTXnGsndYuZs7pCz5yV72kyOZA8kW5vBSHYm2bMmG8nuSXZgpkayE8kmco5kB5KdmF6VDWLXvBRWvBRinEIeJyUSpmcS5CWStxeMjbMrcMZe4TcFTmnGl75U+pAowj3E0HUxmq0oFlTFprhYwMVesDisimVmFsVmq2IZF5vlYrqBNjAaxXRVbMDFNBf7Tw20STONYtNVsUkuNs3Ffr8pNmM2o9jmqtgMF9uMYnLrNQrNmS0otAWF9uZz1gLqd9dQSaa/RwAUMzVwRrEWoYYgFPN+gmKWVlLSpRVKTnHJACUbcqFki1yYJyg5W5XUNcwWxTCVUFKjZEM0lGwRDaEKUHIaJRu6oWSLbpC9KLkZJS3ppJxLumE+l5oUkzl1HZN809upJuBatVNha2Nqp+rST7ZTJfQz2Kki+pmEsuCbGagJvpkjUSISIBIJEIgE0CIBvHyWZ3kks3wA4ujyP8ksD6pZPpANYCJktYglMhfNgBJy/AZXr2TtnOPcrJq3s9XcQva4mYhsOxPTdWZiYmei5afRmZgiL21mIk6KU5mJyZiZmGImJiZ1ZmLSnolSbArFmpkohWYtuwi3z1bc3sYE3A5ETVpzezKG29MhkGFuTxtul5ItfMDtKBmgpEVJyrkoDfPZOn50m4si4aIAXCScMos4Srs8g20T63eD64k8o/hwni4RIl1j56U6o+cT9LiqLtUJPd8kl0ZpL73CbuCibih1A66L/bSeAHT3zHjTrVwOjN4LUwCcGfj4qkHc69OJyg6Vz8yjetcI/4R2bzUTa7xeLjs/4ploQmtljy2nlHUWH/otPpkCwCXqGfL8hTVdsNceFuNTYFKuc88AK+BDUZrWNE8JBu/c9swk7VkSMl1sVE6VnQOlL5NCnAuuxCTijxuF83aPT05NlNNoYK971gwQ/jtNUaFWvTPTw74QLOBnYeA86xg4z9YGzrNs4IyT7H0U6UqGuIsPv0HVcnkIQG3rhbTdatd4fFGg4OdRErYjVAR6xcX0rVhEJjH0dw/7fGJvjkvKiESg3GIOrhwslYaKHygGpQa8WRMRCNAEnelg8zF5zrAYoE8e+uQ5ffLqPnncJyGFwX5l0TMBEMoxhwf2dH6rmd17AKjSwfgBKi2HcQa56ENkWAOjKbRP3vVMJBkDmgnoJrOEpoxpIKZ4f9sz9LRvb6n2L4JTZtDNaftpCXTY5WaK/uss0ijTzKIHknjIvmKhmCqXH8b+aR+C3sZLGNhdpinWxFyWOB9DTMnAtFhhI2SzrDBj15afiBUGqRnA0xrCelhGB4iC5bOHBY/4vsXCM1i8BlSyGvdZkJYg0mYq9SVCFJMB0uoK8AEGodxMT4RWfAA0o6GhPsoQkFL5t+wkCmykWtAxn5H9XmoM3x+RfLRiLHUqhN/Ds3GKiqE0JmdqCNgecdWFpN1byLw3XnaKLJepEdPlKY1/gitw/mii9HWpmuW97nk5sbooj0ViACk+gMLp8MWw37EHAx1A1ZAm3TwVaYJex7SwlIcgRIgV+yKOJkQcTYo4ylALRoJUr5Im4BUamo6VHrN20OZEKIxlljkM3ZyZHWEW9AtDQ1K+8Ig3n1cq4phhsYmGopijwZyUOY1eTBLT8mgWs/9nQSN/BeM/hw+8xb00i73Li/lhsRnVyWp/D3bcp0wKXiyYhSITWdsUr7JN8RrblJL83EjvJ37cu7SfAGQHYNOBKTbPTwDVwbxmeODuCNwdOdwd1dwdiVAgXECdlNvJB0KUeXQcU5+agqTYQhJL+B802mq27F3a4QVmM3V+S/mvCG0+SqB+RiQ4IjDOZkRkWCq2VPlLZss+epUaYgygOm/Woj8Advw0a6CI9RzqzJrZDQlusAlmTmmYTsTW9JlS4TEw80Mck/PStHmJJhKjdWEZsN3DMKaEE80EnuqGzM60meYxK5lHn15EC/k07xiUHoTjAmtyCmxYS7oO/ZeJpNtED0MzZyVdx0o6Xm4xRWUaY9JJGg0vLwc0NlA1idsgc4mx8M06y2LJ0DBuclY8sDgVeFrfZxbuMybjUW7whWBWaBpx9ulrFujRd+g8oRCmZpbB2TnR98YAEzby1sKkHqTMXARthvgfxbhbSCCbfvNNsIoYUC5+jJ/PpFbYd9rCfu5887fTzF8i8wQNeWdE3nosb4u55xDuHVB4EwZ+kuhZbua1rdxMPdqEmUuzdhaztjMkNAk0lbiimIcwtnWqBRtMvnfJULnZoaECczXvYlJvZC4K73oN73rEuzSHZpl3Z3kWEbNeEAyY1QOzgngdV3RD7baiW9ei20NojCT96KTq1pfhevR9Zp2GRSH0ED38uThCnYAvy0N8AcqB/bzkUGYAOReXfFkwwl6sRLnsNRgf6RMrUfYaNFbrYoncOuCplIuVqvSzN6CEJL0ykKScZw4AVuDpEiuXyt6FtwVtw/s92IXhbF9uyDD4fawPb1ps+DzWN5f6/6rqBW1jFZ2N9aPEfbebftd0oMEWER9iAZfj1LfY2dAFuPKXfm8ihIWaH6TAEFJjCKuoZTU0ChhnbwS+PX+912/i13qd15xAVMvszVxOXbDcW1AO2984o61o2nNIjO3/y0m/9cFLipaWhuAxdkBtKVUayU/FdNAOly6T0eEaSXZGk0eUmwbG566GKw4NRpmNvvghvRiT/dD47B+Pz16+Zmz2NeOzD4/Pvt7N3njHXgHfoXEde8X4jo3P/vH47OVXju/Y+OzD47OvH81mDp6XvQi1VIjCVQbYFyeTPKw3cSkWIsI1EunHwKONfslyVsDY4yF75GoFTsOgmt2yYBsLDSV7m0XosmHZLbeWE2ye/rDK7q7zTWz5z4DjHjfM/pvMd8LOMjx+fAHbf5Rgtzlg2VI4XCJ4iVAiWoT/Cv1lMbAwxB774/jfbQgH5fGOeAyT2CKWD5OIYWd3AaRIJHnGFme8h/efY3x1h/AoyKwRz0f+mq/swpZq9k1rpW6FmMBoSbN/hWuYGlloVPZuK8Whclu72IRWXQv/9MNwvcMdVWxUiMGcwLJgd5FjQx8n2opqnKTGEH+LBa00pMsVkRXLjeCOJgJP+dpPpU4Hdh2V7KCUktMMQc8kkCXZe/Auj6rzxBiFYsOiO7JgJlwwNrhcG8y7ajCJgNEWjO6FFkzqgrFGzhvGRvUCrJFsPGiJ94d338SDY0cGqwhktJV541esZnCgAqE94TBl68Wj9VT2ek4EDvOQ0gD3C/tVdPsKfIu341cyjq1EhZaIXlcsbEcSow/wZ+ugDlH6gUzN1c4NxINR9aZckaVSgbM0c1ZkFD89iXoYV+tkgnWyg3Wy01onO7JOdnidBLOZBCtlgpWSlxTavhNOkEma96wQyPv8EGJ08RDILq5/IM/stM6nWGiwQ1FQdpboKxZCFR8mM7xs5LN4gyMpSJo57Kduqpbleasbbua9pASmGs1CXV+f3l6ujW+m4cZF3Ziplul2tl2eW9lm0nSrFXncK7sIR7ATNxMjihCV7PMueWI6leSiuj3KG7h5UOkqaZaZrJFmyDd9CztjY5dBJc7ivjp/vd5IvcytNwO1l76v8c8A4nXznmLLQr6JCDhTBhhvyjKUg2Ml0doxBjGr93NmE87RNgml8wWH+mCp9UgfEsUW2qS32W3S2+w26duvhPSUER7IN1u2QASruTLIZ2x6QM+zZYBgZeuPEboZLlXcSB/9FHYmBF1mRgeOCtKrP46ohPvKwhhX/H/Rco+er7cwT+bxo+HtLRxfACxMSzzGaIuhv3uKTQs5g83wNsa4Dgz93VPECxA5ZtZQiVmez5QzaebEzi3h3aU5E/d5uy2EwpCZdBGylf6yPFww8ya8vNgMrWKGt+22ACtRHGZYcdjExuGOZq7MZiDSHdXIAehpYtbQqOPKUcKVWWiey46TT5teaj/SFtKsmAh1sIFFL8OlIfNzTj3NN7NB3oyrM87wVzr2eWjTCipdC/xkC/ykC34S4DEnAGJyY+Bn6TGHg1MiSmkGgF3oo7FdMUD5Chaf5i8xGFZG4xpuIHA19toyUUbBmWGzrJgtQI9ARkSIsYwJhavNmBiDtcIWDB6CSQh7gXoMcRQ3CrUnUFuiuGTvV9EIsGo36mTHbII6qXAR2pMkclEylCKiLSIvwl1r+NlEhz5Wn/nh11mfiWpNE2MI4RnWWmSM9Wq11iPi9H2+UoeqFTYc5daSuIG9DopwwWHXUEK51Ly6zjKglR94ARwNSOEMYHXkw1rMs0efird0KyBI0qi6Odp40OBC48NlFU5G0OBqcHosuN7zy6wFUTLXB+o7QNVYoNk4oNl5gVrvEPcbHq9Kr/6KLz1Z4NhkjNsKaeE6ZK0ry/m6wbCVI+ePrhnjOwZqarwueHpdXfBZPz1dMKejUJOy9WSv4qS+wxRJxRG+VuAIHDqyG1Bzg0ImUhZtYABwlE6webvxIkx1+VaF9QBMsGZRy+g8Rk0fmsvBoTi5zZmUTcgG9B1L6kqPTR5n2Fd75HX9Dq7ueUwQEjRjrX0yGkjstmYw24KQmRQTqgngzUHqWbLAasxk1qqrmBGIeI8sjPuMNNfzuct6o12Wvs6g7+t2eWC7DM6ouzXj9nogvW6VWNvxQDqeXKDjenzHBfx5+q6572Bufx+f7cXoCfpuY97a7mfS/Tn66S0yMQIhxiVi2XJQaACr0hlAgGd0uUTt1CbelL4S7WZDN+sgsubcLEpPOekZEGKmimw/KRSwdJg0s7zzUcRChwF6YtHV3FfUienXeNRrggNuND23NYCtyYw5O7DiAUfvP1uyZGvJkq0lS9YiS/ZoyOJtlCzZ+mQBKKyR9iOyyEbVdYjSYqbab+qx8l8M6hV/rjy3zJEVgmZdRqOYCL+QvBDf+ZOtF1G5tVIUJs1koygg3/Sk+5OsK1zS6ArsC3xJPiWvW2SR5udk0zUukzGY/SLyJpH3E3fchkWjybKI3RRjNe8+NO85aN6DIdMG8UKX2V53Co8rHnGPfAaajA42F4qMgGd7ismFIa94BM8MWEfPsLmX0BhNQv8fVdbnxinr/bHKeqP0rq9BC6dCb8axr2jmMBeWk75Jdj1RZuBq0AM5tI2pCMiRNpozpAfmgl0Wq8qsMq9TORW2rGaMmWs05MnWSEGLzd7eJBsV1o7OqPJ62lVes1p5fZajvJ4eq7xmUF7dndJGeR2jioL0RcdVRTutkWgpoi21A0per1ZEIS87axVRbWagzHWgzHVMr1I7w1rj7MkWls8h2bVdAbk/CnvtNZie410RsqW4KJs1HmocHlBWB+ujop363tj60EvXrZ+21f+eV24r53Gqe8VC+l5fJfwtcIo0OB8Pd9BDYDcl87BS7iK7KYSzRTRezsN8HSYNdDJYeLJ8ec0m9fLyH9hNaglNN49Z1RxwdusDzq7YLHTKbRwyhDtkuhIX30c136nm19V8ey46oGIXCNiJYhlYBsVCp1hYFwttMeJ5ZOz0ulTe2+F1KD2xw0vo58RgpxdRbrzDCylJLwNKbeTkFmQS+iAGrbcVPLPdu4RSXzl93XeiS72LCN78Dm/BKEu8s7zDX3h8Xf88vd0ytDYj1Cxc33C+q00Cl4dXh2IGiAEU68CT/BCUy4Y/GOgXbpvbMYw2fEPh2xA7u48un15evnY5g5twcP2R31HsmNmFx7bi8aye4N25WIaL7MZ5giFpthfFEdmrYGlUIgIAco/9MxyrZdlbwZBIHxxNr7Ter7Ter7ber7beL//zVvoFrfbc90i33q+03q+03q+23q+23i//i1b6qlZ77nukW+9XWu9XWu9XW+9XW++X/2UrfajVnvse6db7ldb7J7Waa73+V63WWumRdzh/ES+awBoNPF1sNtMTAzVbuU8V8XoOVMn6DlQdvjamcaDyxGNI4cfemNqzUjGFqivOQXDMxMkmiWs0Cq1ibWYooFIB1SNgmtoTZzPrg9Rd60HlwHE9p7rn9ZxqoR2sQTuuEG+hHTPiG0d7rOtUDMQd4NZlqvtTcplSG3CZUi2XKSUuU10cJKkRl6kYZGm7THXGuUylQkA7tHtN2naZQh5ndIY4wrIuU9Y1YMq9Wk5cpvoYiR58Gmxte9WihQELnL7pWFepGOzQlWWuoSsY29qlj7pMpdaPCQgHJh11mYpNh832e6jYW+sy1QHKUIp6sKG3Fzsuyh3UbZep8U2p8zU1XNMUTL7gMtVu7ZG7TE2Jy1SGn0R8pSLxlQrEV0qDWVouU17jMgX+cFymKGEkyGzpWUU4JuyovNlkYommaublCayPTdq08Z+atl4RlBuMek6h2LwUWzAzbnbjOTU5kp1JNpRvN7vXcqiS7MZfY2okO5DssOWvYed7MMYJL7XuGq4zVQp3jQ6k3Ijj1FTLXQMeUa67xhiPKBTLuNhs23FqYDwU86piAy7mtR2nJh0nChSbRLG1jlMzZgHFFqpiM1xsoe04Ne04AKHYNIptwHFKQmC1qDQElUoPIEYcp1qEEneoliuJlGzRqnGHStuOUy1yVe5QnknbjlMtilXuUNqkbcepFtEqd6gFk7Ydp1p0wym8OE6lF3KcstY/fUz6/qjj1JQ4TmXiODUQx6lJcYeZEXeY6XUdp6Zkrs/KXM9ajlOh8fDTEf+pPrxzQCEimpJ5JjdtsewqYnoYVJ8YKeZ4CtkuMwkLS+09hcAkzjxEsaX2PJTs50p2eoF5GINYMRPVG+M25WEexhhkmYfpmHkYYx4SnZ15aIvNGoViqio2y8XUqNtUNuI2lbFnxxi3KU+25TzMUMvr6Rhej4dAhnk9bnhdSrbwgb0GSioTt9ymXJRoRojbVLNqtVkpElYKxG1KC0d56YeaYCRO8AO/CdShMNw+a5IwRo1IiFOvqpurNdQURJaxaQ+NW91EUW3CX68f66AzEu9EWg1lP7Yrik2MEgaBg+z3Di4KJ1Rscwma9500HP3QIAt4F0d/JMuHFudXcQ+0CYFm7MY7SUyX8uw1bdp4EvHEd8EaZZp0kD56UvZapOz9fEnZa5GyN46UvbWk7P0USNlrkbInpPxIoLQEDck7NUVb0Vu4i35D2MQSNqkI2zUda2RZJg32XZPs5ReEoPsO2+66RXSRyuMitkjrSdN6bFuPq9Y7bqMI11I3lKxt6DxxSPwqNAzg54nAQ5NjO5Gs6bPpXrhfbWYKse/UYqauMJMvzBShBDFTXDNTR5hJWu0AydhJm67LTA5lYjerFY/E4h6ZBMyU2HgkPjNTWDFTIhFJGhhgJpsWZlrx28zkknfjXLQuC+GFJWl70gLZC46usBHaXdsWkNpgW+Cr849p54Jj2pExFZSKwCRuKJm4SshoWrfn9lA645jgJ2nG0flmDtrj2KnHcWQQeQS/rVSE8Gk+9wdI75NLSZBXH+dpdCkyWoxdfJzcSdxHjwdYEYv6LktGwwID4PKfqjKTcZk9J9PHsZ3P73JlozEUoWXRmPJSbLTUSNnYJYKIi4YAsLvYrsnBR5QK0Wc7hiEGKmrChLWnZ2dkKLt2egZGzCwk/C6cyIIR2dAZMuLVu1FpEgCnwG58VLzcdSZjamJ3Flow9oZVB9JPewB74waw1xrAcZk9yfwpDWDv/AP4Yq06Y/ssK3W737HR4iKjcQ7dESp0hQppRQUa0p71Jui5XNQjjBkFNytBVuJmYbzHsnEPMxQnV3pY/489GxvXH1RxyVEt4kJAIUyvjZOlSA+gei5h3vcz5OzzsXWzzLdY+5HxNDP0HwUqYV1PwoIiRv1XPaCsOHYs8sLy23QvkMJjVH6jeozLL/OjLpeAiCp7hAheZDlfmMRxHqkMYAXs9AdyANqDa/KiMeXi8itOXtVMgGZUSi6J7z1kI/Xqch4RAr76+8AC3nUXOv7BrtqyuQLdKLtDOizJI1TscX2gj5+BdCbIYyYBhuo3vSjvIJUQO3t46BSKrnNb9pHCqY9nujj1oSmNzxQiPA59PJz9BHVMXT724fOe/fgQ9jZwDKVhunDBXtmrWFFMO8V0XUzbYr3yYVBPm7ivqNST+AzGNwl9AvOYzXPseR+Lmk5fuEVtrq92VC1nwCY6BOaUuOiBHnwe/9dohD2AAxsQvPR2qnmxVUpMLFMiFsU+hqzg3QM5Nb1DfATwAA8QsXiBEX/jWy5hITgStkcslGflj7hFOKyPXNwHj8LX4ahhIvFU6OnQj4MU2obkwkYGp5TzpTLTS/sJRa7Ty16Lt6W44kpTScqvAnlVTCOsAVm+zZT+5XUJIBPCz9dMl+cUqmIPwgLLlprEfoRCvRh++Q8Bb64L3waf/DxpF8oiT23sYxCJ1Noy9jHfJM+CFkzdI6578b5iXmyHVjxs4syzH/x0gwR2bqdLjXcjpjUx7cHD0F8qn1Jt28DQ2gaeUlhEaLMvO1XZ2dOAgQaxmYZ/sz6ABHZ6fBC5W7tgoZgyfez2UOqkGmbvsP4xXbOpnOT26eGskLCPkiXtiJm50svex21RFuBy38w8gZmWF8BaSXhRnMT3sUEs/ZaumNl1+44Po9KYOdooBPWpsSliM8BR9Pxc7GHwJjQvXIPRgZ1+Pk4iMIMkD/K12uGOAD8SZRbQvBEwgF1XM9MANaauHOeTHzJuZ0g5rIHKI9ekFpzX9qzwxYjBF60YEQ9mR5dsa4Q1LQt0hkJADgWZZINmo2Aa6xGwcrO6yEpGslJk9ZosSmXoybTpoaE5rPHV/9Qa9kQRg0RWrQgIJ5TFWAE/Mj7jBIaQgDgtlQEPnuk0dLI2GEnVMRMbP/tQ4zlie2tj1ibEQ9MoYmaye6tCiWRlH+QMdf5aH5FCTa0PI6OWeZM4UZvkKwQBBFZpMaY8Am8/SiEUjxdCc40Qiq0Qih6FEAJ0V/AQWBicNpJmdrzUyQVhmyo2Q/RscUXPlg2KHjO1l2buZsiwBQf85hHwFwH8Yxg8VX/MRqWaQs4ChNsAk3tDwm3O+Iu0Ko2Rb4MNyrfplnzrmHnIt4G5iDoJZDBO82sl3fR4SbcFk1JeuNhEjwCbEyPYbAY2IMjmC+AwARzMY5z251jQzuHKT8M8V0xZ0Yn98Ssq0TnRCDsYrgOVqTXSrp15XvE5JcK4DbglkQ9UErmYc2VyU0qKuC/HC92pRdzsdkJRYhritxKlJc0BTH6f/YSfKlGJsOI4q83UKE+OyxUxBvFALcP26kJSPTETroCTTppNpPuV88/P3i/+cxcqdo8IvAsUM32iz5+KlNtI0Q+48g+6mJkhAagbWQe9JTvJk3ogk1qyi2mCRSKsyaE0EQbibiASzBMXWYJFRPOXqohDpedGHEK4Iisia8CTo3AnAPYCQFhiw1ubmI3VWPyYKVyPgmOVyb/VV3ygA5Tl+44yc8orFawRKLIWbALqtWOAl8ynnokl0JJwmoJUAirEcNPMcJOIJEwNS1xvo4dQmFFXlf9u2FSH+vfsVnqxlX5uK73USl/ZSh9spRtcDQK3yBlMvIiuKVnbfBABHWbJIVp902uF+cCYV1GiKA9GwOD0aXC6XSFBUvIbUS0AhQ8iTREEfwOwUIBGSZ2/wakyIZB2u9/6Lpi4vjwnjxxGg8hVjSf1Z+Z095Cu7gI5FjkXxZWqvqKOkJ5cKlfv+YA3bC5uOblTbJZIREzhmvfmmrsj9pq7Y7vKTXnYTPzWjfkR38Cr1eifDnsVZ4Q9OB78Vl+r+oa3CdyMvzG/8ar27U2PITQ6qXxR9YqwvNqIPhi6lzO96q22mhmtZgKJMhhIeMEAQBJU1OXpcFiG+0u6ocmrGElXhrtvBkoFrp6nSytDKkyUORqh0TIQM8VPhtJnAZS9iidw6HQsLO/70LXcMZQKy+u/fWTNDVvkKh/JhcdMaBMKNFDywV1TDAdYoeCtURGX1NDdDDzZTjVNYr9l3Xpnq3r0zud3yH1g1xSPP6OYthperxg6WILTe0NSuYVF8KL0hDFCTIIDuOGCHjbv6fvlPKZZ5cIul9Z0RI9UeVfEsj8sUtzq0i3pKmfi4W65jBmpSs17b5prYEFOqXZdEF96S/vd4j4X953i+nzFAy4eOMX98xUPuXhoi4PIqQx8wUUIwEhF6BURV4nYekob315N15Wr6crPyEWkFXP4NXMcU7ie7ds3NNfRibE4Jjg76vJlb/hJCjYbDmG+fwAHAhDmNDb2Nh5xx0LDCVfK/RRJubcGT5BTVNwQJugQ9Qy+vB1cSMdrRSIMITMm6UV1Do41PGT5qTNtvynT1t6s+f7/IvPPmXxxamedyA8cjmbv5eXU5wlxo5UnN+/i5E02eUSSL7TJw5K82SaXdwnQS8D3uHYNUZ6OwgBPnPt8ubqtQfNGi+aKEjz/QPCEuLS4TguuMChmScFVCTZbeJtQ7CTsziRJDpkV5X1PGDMhytOTmA6WhPQTlF9YwVZ4uRxkf3gjitOLL9wDRVpkxWHAIMDZi6hVj++31Wzt3Fw3eMu3LMqnapTvUhXOW4f1JeS8p7WDR5y6kv0JqzA9vz2w1LBKx4jfbUyfD1Xid5srR/EF+NtaTBRxgtCjsr3qutK/g46Ud0TD3Wp3YMgF9IjIUsImKr/+tbs+gt1sFlAokTgljH6sfzosersvu970dm+9fvcy/1l52Lv2MGXM24zVJ15LqURSZy++9jBeJkeQPDeJV/N4fijmSlvp+cc+ci87cvjw4aJPd0GLqO7hkrT+7quDv8cEMPTmdndGnrvtMBPiqOJdzD//8Y3tWx5Vim4o6obpj3T0dJiHqQCCBFz7H4+UVDZhdp8sFuWL2KwkLK9bpjVhIorCwNcqTutKYflbw4lEp/xHcUCrr7wMN2jlPi9EE+FEt9tNdVotW/Zlr1/lHK1yeuDOWw9d3o+rmxmrN2lV9jsfu0ZyulXOXzxgy3SqnLu/b8skVc5LTi5LTlzlvPLPbZmoyvnaKVsGUW9oA5wC8qWygP+rmg2PrXwQS65P4hUXa//x4eYS18PXWk5mOt6z7IvRo/B7AS9eEbiHlQB1Ljz9jFULCOooP5eBqDASCFjJdwukB38LlgBaKT5F2Kg+IoxuscmHdnLyD2zynCT/L5v8riSP2uRZSf5nmzxKggxNR6wA7pbrEzyaDzuK/m79d8VBLig6Et2qR9STkyxo7j6kdwgtNLJXKooO6dMcpdnk/R3oksTu1SEZDGr/PlR20b3QmNhTZcAB7hmHhot3Fb3sDMsMCILss/IY/LYe5H1GlREFqIN5j+MDX+of3cFm8DvZeV3wP7tjtwfs+UZjQubQ3+9rNPU3ttP9yT2dinhbquedVwug51KpD3zvhuauXFkIIXwaaQOUgMjABNIE9kFq7Bpl9b9YMt+xi4VzPUXeYtnertHPqjnlr95iOeW053BKijU5au5j/GriJ3TJXlidNJy+F6Z48lpIketKEy6NyD17b+dWalX8f+ZBLsIazxdhDdbZ50WL1xILm6/Sh1vaivUUe2sCPxUPj3c1j69uHl/ePL4rsZcQ2vRtzatb6kf8XJcYVU+/PzlxDU8/1niXEzBTpekeRopQvYSuZccj9efehMbqzC65wX45GWYnhFs40VaqFZTnFdQMKsU6GIEd2EZlZbUcFWFyxHyB4lJ5f/2FApW3nMeFuAYviw2cNqGs91ji1aKDhabTXmg6IwtNZ3Sh6TgLTcdZaDr1QtORheZSPzEJfJIiGuC9G8FrgB4QJ4iGzdveXXQN89u9XHdZgUfgBqBwrCs34OI9veJ3paaFWWGW5hPuO3np00ud96lAagvgyJP+eFf0QRq2L5sl3BTutJPrEyfKgGr5VEvnKW+moNBEXYggUSEAghJfF4jrAn0U8EXfNylyIkiiyPTkOuMupFYXBLDxKhplsxSb9yQFZ1iWS5jl2sy2lTKlEr6EhSuFf26tvmOwOkPfsjMOsSqyd9mLYHERfoI4njRVbLHs5A30jgv78h5rfXBXcyH8+nUgX6usNyCL2mbtLzvOKev8l1hUKtVay+2FCqLEypnSS/+H8iFl1FW7WaFopKyHxyM78vCXX4eiefTLJ/k3Nnq3gtyNsSYs5Akqog9QQvm7GT/zRbQITVY++o2+s4hlBYj2mnCRymgTnvy7CyYmELLA3r/TJFM3MC0F0rwJGSDFcI8gq9iYIOaKRecFLP0ihsm3wFeCTbGBB65RO5j7hKrHy5HxN9LRu2xHX/+L7qj+STr6Gp86mo7tqO1QIMjmIUpABABtaQLYo1PJXuljZ7Fgiwl0ITIewpYovoEe52fVXUzd+uysixMzmpIIrgqyyEG1h3JEuQmECY4tpRQSUW1Udj9nRq6d2QM2K2myHrRZvSrLwzka6wplULke4RsavQ0rLExPDNBQkskW80ZEDBhtmzvrnAM4TJBcCJInTA98ckOUdU2HRsvDaHWtZZPpniwmebQAujVUkQzVZGuoXouh6vw8hgoyPx0ZKoXu2hHrNbQiSlThL4nwODKpzhZBoYNDJy2+bFeNZPWQpUeyMiFugtZ6JsU4pdU4RaPjlAIBGaWUVuN6oFxwuhmr5kxiw2Ol6rHqX2Cs+q2x+pEO1VXqkDrYO894PcWTP0+wD2efiDKrO8nmaQFhh4TNcx7AQY1uPbaJIFNrxdhokSK2QsoMQEPhDHoX/aFBr/yYLDHhJnInzcW0jpuDeSHGVynMrTKODusTlbt8eUI+ZWOgdDHwoZmi6fH2Vz7eJx5Bisa+ycCgdqt946wd7oZjN5j+EMAh2wi4sLFsYVdgMDwpDY7BVXaijaYni2mmu5l+QeEQ/zuW+C84H/GfTATfRv8sM9Hv/38x0fU4ogcV0d9062W6IXqTUSYbIroeT3QB80iI/mZIp4kNSSchWFTTVGhdrEPYqE3YyBI2WSw4dCsI22HCgpw0gd3VplOLsI6sNsp0ZamhrkWVFEOUqLhed+IhgpjgZ0pQtqI/A9WnwCBOVoKsB0ayesh60GY1Ym29dSdy1p0hyik2w0SKA1Bl7bVHvD9ba48lVA8aKnpGPGZVBKz66wzabRi0/sYGTZXBz3ZaYPQg8n25+3QCFKpHL8XoTWIWsKgHvyemI6OXoTRmBfyHM3Jz26kwAa6iRBlhdeE0Jbp1otR4OSHperZkGCcM/QTGaQLjJM7cTWtmAk2isDITmDWqHqVu3XIgwDSANe5XY+fSlAzL1MiwvNcPFQ2KprOy4FA1LHLh/CQRctyORoAdDVXvaOw+hIJYkf6ODEuzT+HLPoXf7FP4dp+iAa8FtA/FIeT3UL6CxbuM/ietVqB53lXEy2yuq/goTSJEX/WCO62bRXJn0QXuucZXniiDeGH1i/9D3lW71RFCviiratgXYuCL81faSjqIg9fq4aB9wL85imSoLDbcRmaazLNIzJPZ/rWG2FQLpJpCtVSqRaaLSYfhCQ6CTvRs958wpXgIobt34Zx+16RDlfRLWuPjwe7GbKvPOdHrZnvPl+vefWwYhKxXyEG5L+79kbQeWLS5cJ8t13z0Blch8b5iQD8oW+8ZffnD7qFHz1bxjKKYQDUf8Kbl1fS9iIZ5g2dQb36p8itHr6kPP1X5o7e3Dj+BpSLJEBG5+Eu0iKuNZxPLxrvhdcVGzlLCc4pRMDFTU/HWM8qpSskHNeGPmv0ZU1mqzZeK98XKbdV+l5/+llJ0M1qu6j0tsJ1MCjl3eJz2rpLdlUN35kA2fUCpenssqzfHpIme8YCMh68rzyLjSffEMjt7JyMk0VcIT9SQT+qXXM279Jwnp8gehlZjTAP5sMbQoibY6wCc6YKRAzINzOUgS9uttsSgfh5w0p6U6ZoRrDWwvZGOSYTRyCx50l9mLGj60G4lyKIo8Z8P4UgMVFw2eDiofAgWRR7+5ZWEX3W4dOfbMNAKupj0waf+0l+y6PDlYih7W3ognxf2bm62Y0ZLQXYbdhUohcKQDphw2oa/sUFJnkONl56MnhyPadzv1EJCnw8J3mzGI67RUaOtII49b3rIwB//G2FIiri6Kmlm5PIH3f3RUpXb7D4e0fTEznJKtkSpU2vMCIIyI/WMJ882epDDPqCEzVzZKIccd1+U2/Kg5/OEiYYl73X6nk1ldepcJI/Ckccio5BcjarjG6OwGRPRMB6P+PnTeD4hz5/E88mID4hu/sx1PIbYIM5+JDKfefZ0BGMBPP+G+jQ932qfP0nPt0vdk9+4Qeoejard5jfS7JPa5Vfe95I306FZQO8TOh8dRW05xiGpoHMG6ByOGpSXBfx//W+HBfxyg5qtm30dySJ6vH82lBzey/LLr/3lNVLnbFgduYB24bBq02t6dzoUEXMmutQ/E3KTf3ryiFQ/HVY9elPTo/s//GcvQ48wFVBt98UYuooRP/dNHLWVnq3n80mRyBcTZZ/DVj43X54Kh+UAjTwUDZucDDnnbI4d7wGl3hXWyYySd0vyQRR8izw/gOdT1IH6EPAd98mgArClHEaJWwHq5yJmHTw+QI9HLSHO0vPtQojP/lU1tBUhZBk6FxH4qxMb+ctdRl53/41cY6T7FaWKeHf+d7lOfGf5rzDEFl0Q+E47ZMsOsmgJcpytfKQhXf4aewWWWyX0gIHapLH8o9h9u+AuRAOn0UmOQ3I4qH0ZWABgihAuMmVOj5kqZ4OGH78bMB2OvNdS8mxQISeEOE2EEGmZvZV5Mb7UR9Aw+jF117514iapbaqVUDskgQ7mSZXLhJrb6pqffYutua2paWKRGKS5wWWqahnYnImyV9s1p/1fhWz5zQ9f9/kIR7V+ef/7Pv7C6Gn9gB6/ev9tr6NHnx7tKTdIwI8kV/xmhpzwHQb7wkdvtFLDr82AKnzuJL0La42t+QR91Acpm3E+6lekFBcPv3zgCy/5kUXtLLB8GvtpI/Ca4GPplf79fiz0OkeZ8p5GTTmInfiUpdtZZRFr8FhVo3isKgcPevGXhAU1HQKL9931qpgIlMq4PKshwz9yGnv7B2xjp701jT1ptK0Vr24rIqDSTeJC5Yiguh8NeU9XvWi4xh4YI+wsLacn/7aw0BP0ikuGpt26j1Iv13WDYnCtGQ4Ei1DnumO2T42dxpsVzeWJVBa1t+x4qiPzvn/zTY7Mk/dyJiDNyRRWHB23zKrjL387FcPAs3keYBtxsySOc3tx/MPV2tT0QkkjpD/VNg7veJVQq7Fx4OxXf+mIg5vM+vsi9AKY8Tek/6QRIfAuXnwUP6/woiQN/Ml7LB7LNR6CBc0tAomDQNI9Qhauv6LfFb0TC5PHl7uD1isibWEFgCJ4J6dC/8qo6v2zR1ax138cqEuVahXzpETTH2kcqr+PjhlfOiYhnxi98ldIbmIRUjLNibzamdB67ITWa1j5qG7NX13zcpCOEPA+JiCmuzN4y34jOV3h93ccPnr3l9B80zcRdPj31PYXQGjziaDkFll1dJLZApTTPfgP2ZI+230lPhecRV6LxDij68Zu/kQ1bXXDL26DDOPsDmqzgXPWwjmn187Ssw0cqxgcZABpNUh0ctxU+9D37dK60lSThrGGPICJEcvHSZEdLKzM/8cgFrfPULMn6FN67Qp6qh6ZUokfTEPvTfViczcNlkg4Uhv8GspLPlnNfH/oLOIpgFgsanqD2EQ/f2gypjbA3uuAXWnAHq+ovdICK7VOBE2tY8FYjgxsPTlCvYMq4HP6dvx2SS/Fb0rCQBbs+z9i2e5oUM/V9LE+jty6+MlMhwMUmYkqSAHa93lmBpxCl875gt1Z4eUPH69G2m/kMaDKhkm3fgJs+gFkh7vfcM7l7rS9VPaMkjW8fDalVv2147paT6FRBcJvxhRk5AWMxjSoIZyuxzRwid89z5gGI2PqgF0JxoxpC6zUesCptRqsnS+rVa26I+Hf7SvwN02cbNV6PwisI7pZ6ZfHzL3l9tzLvoz6pJwlaaX8VPpONTsf/uuHH56ERY8sBid2IKwXrLnssAhhSAqQmEnrJq/+zpGRUZx0RviGh8fr/vhkVPyvBioPRqXeR1eHPfB4Y3fimo02z6rXAbH4jkpxewCK25fPXIfPDs9ii609QF6Vr0hX15M2CjjN47o4zS6JuIE1g3fIWalS5Q2Q9y3J823ePPK+bUHbPIO870iesvYMWd3zj/6BDERj6S6YofKAN2m+SyOH8cSLZcWvqR9EA6EOzlFYCfzemeveGcvXMvosCXp8cPWWr+OrC7AeinJfXOeJlDByltIrHheFrVKEYmcj3v5AyoPdzuGdJiyj/dL56r1P70N6n9j3Md77lp4AC3+Nx/zeBMwZvSQdgRs7cAPUCx24i9Kub9/7rXaVbVfb91rard6jp16p7EuFlzqVvpcUasB3Xk7hpXJeaudlRi9T2VfAtp9wD70qbGCJagPMv+sQTOBqozN6/+LK2G8XS7/bbfJBSb7EJh/YJZsc2HgK2F1C6dE/SqeNa8N33RkieMmV5LAF0hT1UQJbP/T4vioVPYewOSLDHGYYfAV4jsuHdGWRRIJ19Ci30QSx8/bXeJ+7PPN4Uqcs7xmSz1hb5feo/YXwK8/uGOJ5pAbBM4AX4jLmfSUm3xg1NoAaCwXWBHyAweoWSO5lf2FlkHKo+lJLt/uFjC+zyVt3uaS/w+beLoVebpPHd4FMI1NdTMUx05+H0+DIDyL7R+noZ/onpD8RhOUPbyLsrKjLvmUTARKff6EkfCTedUQSGolP24RKW7uxfL9k9tFb7GuhoyQxObAJ1+zofi5USR0nwRvZMDfqTrB45WMS8NBNsd2mqrRVWM7ochfsxcWC8jLZSX2cwZi/RfadsIUsq651XtkFjxsUeAk0ONdNh8MSFVGJwN9N6JaATQxi1tBNnN2BpodFYiIEw+DA4AMHnxhSFdBf/Jojo9vndsDjXxePlvIV19/2zivzDnWneuTb9v9ML5pQXAOxQeJT8VxcJzCb2BOm9R9qfeD6P361pk9vTrzvTbcfP0gJevzaKz/z8ivxMdwpb/3gH33t9y/vdyHTTJIdv5kVkTSlV+9HBXytd8oH//Al77nqaf2EHo/81YvfgMjEcHgC2A++4kU34PMej2hOwL793TdfR+a/ET2+9o4vPUAxdDqQik0LXbRwL+pKC587ccvJSCp8/oev/jI5kSXgkrCpwWnVpGOkgyYdIZ016RDpTpMOkI6atI903KQ10kmTVqkMXEA/HXcz7PSXxey+0hVQR8Yf3BBbt1PXfm6l4u70i9oPaO9Z1da5DX/XH1tg33vE3wGP9+Hxcfx4Lx4vY+FxGLuALh/nfMTwlOxLt1RMhyS4GsU/+o0WV0PIiFMl/HacRZ/sbEdZFLyFY53IqH/MFZSJ6LPNa2uy2s4nPmKqwIdsP9pId2D5695Tct7puK/aTsAci/H36QtscFVN7+1UpPL0E7kRMEQT2/DX7O3giI5Xaa2JvFSHNw2Nyu5kYa1K75kE5DVq0to4IhL0SUoZrKqf3AWzYi2f8YtFMCwUldiOknBfTy7VIsCgCMGxXdIZ0vNNeh5p06QN0lub9FaktzXpbUhf1qQvs1tJkmHVVYykZxi5YEh3ezQqJTrBQ1xo+57o+48KBZz3LNy1WzXuHzQMdb3SSy/z1qdPQ5GaHgC7XT+FKmZeXe04qqXvnwr0oQDGkQcrR873tQR2o9Q+poo+dLuWRRmOK83jsm4ORDR+lnVNg6CKjwOy3IWsIpQV3oT20Dt6AbLOErsg49yOIn4Wl49N9Sa1KpKqVKSw5kqjFk9aRQn4boesR19PbReEoFE4lIdqc04RljgFmSPYzb6WKt/0OTsxsUn5Q1tjtyEFhWrIKcN22a1U5RveY8uuNmUrX6m3G837Nd+QDVhosp8kCJLLm4uA8KVqOTtdQxCy2yOnIpEPlP384++TH1F58Kj4e0VDX71Z88Is5ZGdltM4mBv/n0kcFUVpvxeEPfsnjno/0z8J/enB1LxTacTyGYETA3mi0yciWJ4K2e7Q4uJwq27EEJYvSul1a2dcO0NttFRDaGAUlHG75nvN80RWI5/BzXPV+XbVcc2MA+cv5oksZsG62BluwmwEOw3swkcLTpMSR6n9YI91oQeAnqwLfcUDePp5FPB9wPdHBls+H9GGPG1ksFsQvldBwNPGIGi85Y/18eNGyNbfLUe1nR1U5WaN2XkrTeQvQGTCQYL9DnUuPs46V+w7rUGWrVQ1T/B7ROddbtMkgFeyPxSSdWtVtlF5korrJS9Jcpp2jxqa1MZ6hatmRWrrvpngSED0mnfVwsueLAKWK46Wk+wvgXp1RFCoekEvEhCnA0FuW8fWPVqtzkCOciv2OAPejHVjr5ctZFStGwO46paGhOaR8m2bBm7a9Mn+q76X9wGRb+8/AuD9t73z8X7jT2f387GgNHCtKVAC/SxxdtLRJagh6JBfGy/o8rse5L70w6touruHnXxd7Vf9q7rFGyuyrXpViwy5/AKvogwSWkqelgkbHHWkW6u7jLIk9DksKp66JqXnQGR3PYDPkDF7uqw9T5HvmifVGLxHVgHMsabPYjvVEQ93mKjs2mP73Otb/UM2psPd919swhcUZIVp6O/fXzi4m/5f/lfXUv5hvAifADyqYwYDnRHnobVfGs4wrG5puy/bD3nIahJQRn3eqJMuhbthRpWsYQZbX1ZhQY8VmbdU2fSlVyiwX4W7bKpDSTQhGynCphRnCCod0XtSqZxjEkFLqXRGJVrNGWg14raTPl3pQ7XmEkBzmUytV7Eqry6weAbCN7UQyL6ImoX1LPAux+5MmH5WtNE1lkaNDQnvrHhq9I+nxqshzS5Pfe/TCW5dAqd4YuRk9F1XCV4wfCp8qD7VhqTxD/IhAxCwapIPWqGyX5NK3oi+LaqPljcAxrUN1boW+pUqlftl9KLDzAlqZBZ89vFwpCuTfSI2ljMRJ3gpYygo2DH3nfHmDz5st+AZk7jxPvrChIrrb6irVa1z4tsDH0qKuK48vKyshx9lBzKEmHryPX/f9iG899hhT2m+rX67KINCzST7r/gQ5FhEYzUgVIb+k/FmbBjFSZf/dLppFbLURNWX4fUUUonWhKv2iHCTifxrYq63VVKX1EZ3Ufmll0vsBSOdMcGwpP+X4Xm8lzC95+12wht7hAjpfq8qAnSM/eY8Bk15paLWIuzjIXo7Io6Mwe6mcdjtEhCXSepxDnave6d1yL8AdtseOXbJGOxuHIcdRGLUiEQHu0/dZIOaXAC7Fe+RoxePQe+Gcej9MwHxjyT19xz0XnNciPesC6B3+lGgF41B78g49BYFxLMl9e8c9N57StD7VxdAb/VRoBeOQe+6cegdFBBXSmrJQe+b18ngPvcC6J19FOgFG523NyuBcURJ+rByMLztW1dLHBB1ARSX1SNH0d/oAN9hUbzdoniri+JHrxciHr0QikcfBYp6DIo3j0PxpEXxhEXxuIvi/zgpVDx2IRSPPQoU1UYH+l0Wxbstim9xUTx7o1Dx1IVQPPXIUUzZZAau1X7lIhLa2MB2rykQpWowtMtdsJ8zoIWH/CSHtHiU2NZ3uQrX3VZjrBU2jWW02qWU1Zij5el9birYl3Yl9Vgvqh63ehPph238bqQLOsHbUnigIyzhYeOvReOobPyta6c9CXhIIQi6zeL1WfGd/uUCFAdEskOMm4vcxGPcxC/ViZwIJDGUaqpp1u2NGhK0PGTooVMcZv7V/YZajGsQi9yHSbkGyqK0JFAnVrXVJqDFwG0Dv9hBCeTB7lraAM3LxqblRBXGPzZD09mAHEIS8ArFADEofLtlTJkjLthVIW3T0DHLByp0ykMgs1Gwhyk9iTX9T5U6ZNGvRwUQlIUgmdm4zIHNHNsWbLaPKKUr4Awaeupc/bSpfpqvnzbzU644Dp5CIsi+Db0Ojwn+6Um60BUojrYt0ISvD1QAOfo2wUzTP/UZE17pk2eCQMxTPs7KPWImy+yr1yFOUhFcOPC38Z5XcBQBekszeRvrg6g3V2VdhqzncV5U5W1t8hD0Wy9RnqnylASSkNz5JjdscrMmN2pykyY3rnKRk3tydyWkzuQV2FCnD+PCR0R34XnLV3iQwLM+x58fIYbxqL9GEdjnWbjg8iUBrgAcBvSQRz47IfpPGqWlb/z1QBQgJUNxX/k1dC2X21xFA2In3NFYdTDhQpeprN5tlMgRO8rqmXI9OSQHKAtBnXeQI75nqNiVzWxxe4o5kERsunufIXnVBSRd9udmp8CiA0RQVD0nl1kAn0JgYhk02VvQVzhWjK44EEW4SaGb/U+ZFOJ60bNVgyLBjZWoKGdvicUhBg7VdIwBKG5NxzGZgyZz/NS3AE0CL8UEfGMSNPkDavLpC0VifUu66E129hZHYnRZUmFjIUAyZU+j7Lsownjaz0x0JE/8qhm5fwbUl80LexRTkQpZ7NWWWDZ1hKu9uO3HiujCfUOAevhfh9x99vVLMLTs+ddZr4ha6w6ocU25dY9FvAfTY0vxBKXhDrj74asRL+VSdKB8Lu98rOpLfaSudFPNI/wAR2olTTnrx0yZhjlQiKGqNacjgX8VHHzEwzSBG6e4TPvMDwqk77pogJet86HLlCl29+BmD1dBQDAByvdNYgPHpgRscS/AsQPpEAHiPBRa1fLZf0bvVgdhI1mRqIjl05VOBSSubMgSQ3ZH79XYufietusH4gRQ9/byGAg3a8vNCtz8U11cGm7OQFOiKB+iEXX/+8PCzNhwrnylfgaNiydVZktj+/ln3JqCFsGNDrCyXq6U45dmtzRACt7uTKwdhXU7Q26WfQezlSdZ1mxpTXmG5TiUkB+gQHo68eGFGMPZKqh6Ao2SBxbqqDL4h2gcr/F1uk+LMIwgftXuQyxwuz0/3c3XR0m+Z/NgE4G/v7uQd5k2TVwIq3f1deW93BWZAydLqulW7dlWiCriAVx6tWd2115fERufONBMlPgpVa7l02OiYqGUo2Fm5cNYwGRE+0OYiXbMJJqdRHygTJYBexNxH/Ovb3o2+g8mtOnlXcyx3KdMYM9nAcCb8k0396GasR77sY++/GUh7eYARUr+2rCEQzE9/fpQmKT3654qDz2PFmVMwVLvNwmRm81KUOBeLWuLHM+BRhSo6NcJMpxiJmV63qfp97eHHNJplwfgj0Nim03870hstYnfQsLYxN9EYt4mtiGR2cRvIpHYxG9QQp62M9Kn9XZO0Yap8WU38gnY0OV+wcgLhT6puT+Hnia9Ae7wVKR8KvQ7Q0pBX0ONXUhkNrETiQQJ90YkfAxUysvlwlXgAwkKhUAITN5ezVUejXPRL99PCPJu3gSA98t7kLb76H3JQnjtCf63C6/t6kIyeM9rMGFzoRHRfMgQe3jHCoz0LLbVMfTKTIpJcRdWvkB9YYhrwe/RRondCA/mXuRdhMWA1Qr2nunBxUfkN/1rtQi72IOtIed5YpZ+85arm67YFFdad/20qX6ar58281OOsSHUkbBaNx4ToxqtuwZlPKt1S8Jq3ZIQrbtUbBOY/lulIUy0q7P9P9z9B7hlx3EfiN8T77n33HDuy2/em0GdgxEwCJJgCV6OtLSAC0DkkIJpej9nm7Ty375vYBEggI/yghysTGphkTLhmWE0w2BAe2E4waD+GHpHYehIyUk5rPj9TfvvQEdBjrTFsPWrX/ftfmEAcPP6fd9955yO1dXV1d3V1VWen1CbLabqDNbt/QhNzZQ9OYsOHQxdY4aSeobldjG/qedLh0ofYQD1EbSFD6v4Bg565mX2Pa+4oH+YJtmyfbx4CofbfnGYRovDdA97vCp4r0K1tkJOF5JHvZu3WbRUBIm7G8J7sszn3DbNv6JTXl8Q84bQFG4Cv5qmYOkMxNqOBI2JsYIIzm9ONYMb1JY23//3Vst5Lecs51aRKYFh734jKOjcAQwzoU3+ktkyEdkrv6/9bBZ0A5t9Un9XSiiDHZXvYeVI/RgyFj87l6YDunNmnJl5P7Jv6KIWkkOA0cd4Vl0ulGxL8BwiBCt2y285xAy4iO3PFp3ZAehTCQxF2HkbuACmdykt50KK149T1LjR9s1QZG+DRZZc7mYukMpnI3xhZ8mBireFlPzoMiSza9Aj3HzO5xsLzdPzfbRGguqTMBfzv4/2nls0F3lPHZsKQ9TCyBLW6PesQuVZToeTZEDwCgeeVxMH6yMiM/RywrViYdwJZYDROUAadzXd87BCYzskGNXxuiWrf2uScMxFfWlTPQbwlygfmPdstqciF/eGNrsqrjlFNqAp0Mo/qDOYyCpjWY4bm3hL8JbDuUuB91Fb4lG17Lu2Qh+ttAM8JvCXqxKvtkZczi3JyTbx3GAccYPxXjchN5ggFGxgvJDJEVtFDMFAuTpF7LEgWysgX2JTxPjAFMEoThHMFs8SDHE9ansBHi1ZsSKJdjEcz3Nux0JjhCkNtdrxuN/9SYGJ2KzmuBl+Qu19VNBNrbBuiOXXVIa6poF5E45wA59uwxC3B4c6Y9yjIenMnM2dBAHZ3V6FNTVBwl6wvxFspWg5DXd6U1DmWIvIWIRmZz4vZKHrGfcyshcW2bDIx1yRzmICnkPgaKJrF6CAy74EQcZ2xBpDiE3kZ24MUt1uul3o6FsDUriCMdgsm3eLnmlOlE7hEBajxl8rdD4LAl6MuWRL47kl+tjWryl8+PTBNPUfF6CCrXXCDSfn04qFUHSDkHrpH9lz17GUlEl0WC6TNYypqT3mjk4TICYICYJsQTMvrCELEPRStpC53dH4sGxhzB2p8QbUCoocg3lpNQckBiVZBaTLPGQXyPI4DKZuf0IPFuAs2FLvGGb6qMJGxExKjId7VIevF2S+fbfDNRYMfKXasRRBAI8QBxkGSA0iZTu2YUkGbn1WqZiKixnByl2qBSVqKX0FDCmV1p6ZSeohAJ2mNnIJIN1eg85czY7UUGWqVVIk1q/R44jKsSMZCWRI7URmTm6Qy5R0yP41x5pabEZcwBgT604w21j5iK6sLay6XFbdR9UVqs7YAGSfV4TexpIvhD4wD+avkL+P/DlGVu4FPRNJkT61lTRGcNh3GbuqtXieZARpA/vXOyWOx06XS25iitx34sDtKvxi4Ovd2Mu9wM/NN9VRixNd0705MhUTL1mRCfIRLcIVn4Bt2m4LcVjSk43yc5c5UM3nnAIrrIt8L4tPX7749BUWT5l+VA1a/RfTBNv4Q1Ma38Smpi7XkRzWVg1MjvqNTKnDGDSsTx1wfdezD3YVBwU7oViADYPfQPKnKcGCkLtArh3jRUhAY7y5FFZEISZaLUgp9b4VxIgmnxKKpF6VbUkCENIHaU6gz4VDxbVE5lbZi7DMkBw0ZIKQphb6TNc8fvMAOIDB/SIv4OtPvVJ8XR9XqATTtYO47TvkVUvklddBXknkVfuQVx2NPBiQLAPy9qOqTzRVRFMZo+k6SMIa6bqI8WukrwHN+kmnhxZyDsHwfLTtjQyO+r4keczs8+iVrSudpvkwiPn1O9KDWeavqIOm3vznSsG/1+3o+y8Ugn/ftjP/V9+vBpNwxPhC/Z/yZOyX7k/qWidbrt1z055MofvvdiAFDorwU1FQKRl0eZwqT9dX1gAMfiulUNm5SFY1FLsIOmhtZl/crpPECJwF1GumXJUbjk+llBGNbD6+AYewExk9ivM31/MyAUYrsZXJyCEnQUEJquEJ4xQdWs+9R0Cbl02wSoSbmZ+pyYlQWAaoMzNjb1M14jJT3TJn2AqM4KcoHe1hYcNxA4vYo7LGQ8aoFFm6KWxHTXDPMJPxsgxXtmTtWFSyhZ6zhT/IEmApK38N2gixki40bkAtyKOBBomoGvMYTQtwmr07uG3j1s9ZZTOl0xRKbkNngnIKtCdkmzI1tGsqqdF9QLKWW8hoadU3M3yOBSshmVjVjyoezfObguYo0DVgqCbbwK0mtBMzQtzIu7pCGukrNS3N3yvJDxGl2WzDhxT/PslSvaGQnwuLocRLLNPlPuf5q84CKFDce/59V5tPYp/0kS77kLPJ+rn5d9nC4tk2BxpQ49t4PzLBT0kVZN/DD2SrbSy6lOfLZasJWvRn39mryW2sSfqA6CYn9QdEUpx1r8UDuA1jW0Scw4HhneV45HYIW+M+HlmNz/vNYQiSFjR4Vf96XujZ6Nv1VP6x8hyxTqaKAtWAllthNT/4JzjgwD7cR0kkaPGqtmv3IZmdHrhxRkOJkrVzQIyG8Tqk47FaiqtKKOXVIL81UhkqwfEwz3HgSqZYg5gQdSL9sy2E/xOjlhksszqfElLR7rwMjHC0dBldIgfPzUjpu6/K+PKlFwj9brsSKsHAhH3Us4t2lXNQo2/YkReygl7LZBX1SXk6uLgPVCgTvE6gmlGD9QTaO4CKRnrNE4bBlcNIibEBL2wzYCI5gInZEhMVMDHBLEerpBC7RdgwTDSHMDGT/AFZ+T5kOQIlq/tRMiVKBkTJRN+IklWiZBBQQlxILitnOaRsr4iTqRmeMwvK6tvcFHrSz63BWkzlX/ms69eQ/EKKtfC6FV53+RqXhnOU014d4dNJCuu+cWCn8FIim6APsNGLRFE0C8E3U/Jp/kf0GB2DJ9Z9UMwkT1iOjye77N3A/m97k3GAZ9o0cIC0ZvF3+Dxr18mThDyJO/y5U1elPzNKpm5e7NI2i5vS5myDdrkU5CruDKTHXSJN3vXZmB44r6ainetk4abvnGuHnPYhc48CboQAmmUupE9MYG61EdwN5tPF/C0P7nW9bugVl6Wi0KKUvre8Z6JcKReCnVxXA7u11LbcgbpFEalbFEt1i8J7j88fnb/3Yz/6hR6C+KLXsBGRPjr/5D/9Ox+ytHyZpxahk8UvPPsLzxaI4AvmDVRLBw5kgynazlMU52/lY3bduvlVPGQornXhmC2XAVcfaMMa2uhOmegcSguu2kKb3QtrpdocYNBwsr5EMBR4FFglsRtiF1fosLT546S0Zn+9W6iXnR74SrHscC3RmEbU4dw51VAkAyAeHgIDKijriBrstLdkfa3ZgoX6cY7kuxo38DUBc284UFPXt7ropSCVgatuAaf83JzhNBDRp7p+nK9Arr4tHkiGpzxI1tK276a1ARcrBR85Nogn9ZFyEqJ+vejmCJooMGMyssm3QI1V8y7gs4OleVz7PYNlaCX60wVpyXISKR/uRsvCFA4BK9VqAT0QXXGlJxWRXLKpkBygGYoQzwqtJTwidjuFHmi9F9F6b0nrPdJ6L6L1XkzrvYjWezGt9yJa70W03kaSHvOgiKZJn9fDu/7ew9pzUqALH5b6IUDoRPDEeapzDHFezwXNOLmns9I7lFpueKtet3KzdYrCbYWNRZgKmAvs3PV1/HBXorFl1Nhy2diSje1Hje3Hje1Hje3Hje37xiaI4Asaq5FcbJux9JTCmYH0X7/T1RhdjQlbTGjozoVrc0EqjR03SR+N7rveWgQBo1kMLdXxI5K8Y0E2PsBPCQH7H/jScCXqJ0pM2h5KLFlYH/0u1YOvM/c4+QGuO0VZex3UjxKx/6/bkdS+Un7Np9o4mw7AvPy6las3p2qz5wUxKN4PZzL15t1K79jiT7gkh6sbx8gm9XFuco0uJXFvybeJfrxur/5NuucLpziPp477+EnTNpr+6glugjaqTehvxIycddd59ghmVr73H+QZgD8PW1hZ7j67JjAZLaQYfwO6Y5TeasiDWkVd/5c06PCJW5WO/GrVSQFzHdUmW6UpDpj46b9+nLC6XIH0BnR5rkgPk8yLSG0CAq3ABUAd1Q64HOJMAJd74FKvsKY78pyrOCVCnlEnaFo6r844KCE0syR7ejBqKhivCzHNMiaFwmIUs7WMydDmKEZYYbb36Fzh3fnmXm5rC0XwEr34rB5wkhGXER8jL6ytrndcx4tY8TFnfedSy6fyx6Qvn+sWZgrEgOykHk82rvgTiLUIhjj1Gkdk9T9OkuXZTIK+DyYQDA25YO/kDyFLpyFHUgC/g1mfhRLiHkihcEdBme9Iz5nbxMmSrJsfxfSmGQcoQ4MS7cF8Tzn3Q6YMPHsdg7Ur4+BtF6yajSE4p8/71sWh93xcLaAfSli+h2OHB6lsA9tHBSffAkMVejaTfX1rx2SIIxGYSCezeG+tOtFgNXxg+tfAJCFCRbZKfQU4TZc4TV8hTrP9OE2OxKmaN0oO45TBh3GK4KNxyjhe5/MjoQCqCimJKsDtbK1lDyrARArCA6bm5+pVQ0uuLdTc5AZ1n/Rbv0q7ibsk6E2ddGsEzBY/soHzCegmfOHF5x6jPj2KQQ1pPQx7muj1y+NBAkPTb08hdngs1S1Kfs5W9ne6TUpBiaACeJLM73nsFeYXrzZ/C2KH+778A7d9z2vX/9Ndlz/mPcL8xKWuPCCKKJ9te2FTgcMp8f5fJX++60Oi8S0Xr/pMd12W7EpXPc0qEPrtVgXeHv+Pn928dmme2Bz28JWuvCzplae6wYEaB88e2PoUsjxVyZ63+s5Lf1+VL1WflPhgylfWPEn3TKR2yvkL7oZh8dxomP8cYUfnPkz+BIrQx5iOsjT4i2aTt5Ac9/AKG1TcYPeJv/mTfxvL3Xt/6em33GVymBefSV+n39/4jU/z+y//M/2mk+nT6R118NyTX+kGT7cTqOFeaqduLRVUqF/8m9TAxmCCWLBxqwz1BWrLjFpSHwVay/BTwWC6ZwsaHqxaN3W9K6j00j1f9wKQ+uBP3fPcl4q7LzWfRzWXZXL5Y0ehdBZQOqu9A5FUZrq65eet8Fyi/7r+BZlptc+/r10hUPRvwcQpwMKjEdDZZ+45D0mBL25uS62+rJx3K81orwhB5kx6WgNycLcms+X+pJYMs58tyFdNKNiuzT96rm0ghXcLvFXFU8B39XQ7lUEgOa5frcZVSb2UZSKpI9Crl2V6+aUGAXZzYuPgqyLPEXddI+Bg5HCARoH61FemTBTSFySDHdkt/NttPsZNII5MRqRVcKoe2wnzvQfbiZbNrGUzWcXef3YlQCiDAC66f18T+3f7Jt587dILRukfADrm7+9WZOW9F7r+1bY0RK1EYouVA6KOAEz5VFvSGA+p9QksfREwahuPfrQAQDaS2ppqRpESPBKAyrQfQAXgF5deAC30oLbXgiZyoi4WME1rP55dPZJymxsnz2XtgW5d6rNdD/zvvV+cf7Oy1L8HPCi4WsPZ5+/9N//8Y9/AQCJH3vUvk7svS4n3u7/xG2+9+/IlJenNKz9zGnAp7afwBvMwbof9927P+rZ2w3nA3JBmITV2ho2sn+1mB2sNhYYyZSaz68CBuldAG2+5cPW7TKarpbLHjQ3YvjQFCI9JbZP2/wE1or6Hdahe/V4cEMxkXTHu9jIxFY+lDqKFGuH1KKXFmBxJGwQ1Ntp/aL0anssey/Vn86AKot3Jz+e+lOx1hRfXG+14QUy5PBDqKx24rq6k6AbzxyeLudbzb/x9bncHryAvpdL/iz9rr7Ardm2GAWjZKH02DxeT+YzubvEDd4mGVnJVeQg+7Y9uhIB0ZAIFV5RIz/2lrr6XoDWOA/+icpDHT3/PT/6hH2o8B1Ym85FudoBpzJ5tizCgCrLz4nlJLtrxw/mr1x+0f+qowlZCYSvknhNZwU8lICvaSgp97Z4bKnmJ4l8eVtECIR0Gthv89IBijdLxdWmWyLzU6qCIuPEmmfa8AvY3Wh0n7cR25qSn+eeTMGf3pITwnDf1AbdpDo3didEaVqXjK1HZkJdtx/0Wsm7PT6NCowIZ6/+zC63wc8nZxfyzCvGqdwPUroAO8dNJtthri8w0FDJwQnCnVUyF2R8EM5RMuRTQkFsuf9zCTvRNvqa8d+uSI4t/etflbqZT8+tP/6dPFBFhdMcO4PrYga6U1LCNLtwBg5bUnoXoT7sWkLsjDiv+t/7h31VGxYe+OKpTV0NFdgqygtaksoretfpWMW9i+j0Ke7JtWNtxAslVCptSfXiM7VwfY4nDmGzjdXsf1TTkMogYE6syMRcrR/Tx4R5e/7+2hzf/6+rh9f/rejjuySoMdGUDVEestBx2sRTo/gxVYml+5q+9GR+hopfvmrAqDph7WS56b+/a9//11qiD2sQraHsPaAReFJg2sztZC2u7k/UfbiiSPI8Eo/k/TtCoV7WFa+sKLkHPaDr4QOse2094sqJw/bOnoW97mCpdDbmbjRFUywBzrD8Qr8x0zY4MtSf67apD9o4NnCWSrw2BZWtQrf+UBryGXqHvri6kBmbua3dlG4RpWXO/ul5Fxl+yK+271qTu+B9Usjne7kJWvqsNfPHTSi/2bHePoBcQ4heThewAx7ILvG0jzbZSrA3mHTx2LClpdmI0y6UAZ3+EXRuexd1x34ZuDU2QEHDM8DFut9ECLRSy/vnptgiNwiZlxXdLj/+0gN+zwKiZ3/BIt7qQ1bc+L/lFyc53u5JZijfvaMN37fVNOwjlK0OZwHZIhztx25C8HTew5w7A18H6ZKCtH3M4Gter4s67NELnDXDXcEULApArzcexr5AxO1OhZUDcnbJm9Z7tChvu+H3bjp9ZT15z/OXx3373JVlXTOhCuLlkZaAm9lUgFNnGzko+jTXMe+45z5R+KrZaeaCyo3lBGrtGLh1QTB6C7jYNUA/djkG6I6v2XHXMhBMEl3UysudIau1yLPt4J9OL4nlmb/wmwwlxci7alBAeCnSNk0lP37pc378dJ0/kadG+QmXm6aECmCmTDBwxQefGOf5NkmTuKsrLH3VTIMezVa9vZAtPVyejKX9rTWqM+qG2w50VS4mqlyyEBk2G6CS+DiLcg7s1BF+vWMS5AmJx1rG6fjFNy6Ud0C4z0TpvGR5e4kthbQf+lWJG987PNU87kslkedjd9d2BXGWad1AeTvQfsJ3yeQE4dypLFQZUBSB96aWV3qPQ71T6eMJKpNTUfag1UgsbVeAg3OligNjDlvooAVgWJovMndXg6v/N+EEp2ksv0FlwQwKAS/0HCgln1ECp9AF0nztXomZqesDIkh1oIM+tonb+u1HeP5epYLF0m6uuPGaba4/vrr9nV9G7Af4N8a/Gv9ExHSwUVfBRWbMlP297kA90YxljKPfuuthNAMFA7FHLRCO6aaB07BLx08aiIVKxdQNKgYZ4zKQmxxvhsWo9gl1Du87XDauzHftLneNepETVSKY5E3N23Gf6TT62mG2bX2PL2/iDvz7m1ZnJV1VNcZzZjq95ROlPVFMY44euBvmloNk+tGNXjaTER2kE1m1KJfaqT4s/300uSu3Cah82lQFf9elybl+80G0pvqDz5JIPffK1i7IpSLB5XtZEC9y2r+33US4j+YVoqpgRjWNuENsxjzRJNeWBntuUzYta6+Q8O64RQNBty/r5bt2K1IBNBek8e3Em24BwTSHCp/JZxG6c7zbs03rsABiU8B1JxwFEKuZJDz+K8aRPDKM7RR8zJ57rkxOzs7DcYlexp3r7eqr38j3F8EoYxJ5iWO3CXranGDd0cf/H9FQCbOhK3MJl+33txKmcAXeropgGmmR1r+0vuZHgvv6W1n5ea40reymcc6cPJEJPxuvPQQTiCpYG+MbLbOGxmkqhIwMDBfPQkRjeC2Nh74ixsHf9sbB3CMMIe0VjQXLtQUc5CqybnFPjRfX1kNzgSjcI37SlnJpcyUY3aHSfje6j0SA4Nprk2WejIwyw0QhnowNZMYyNJlkxiI0/1GjGDV3cyze6oaUG1+j+oUZT2GaNbtpyP2Whz0AaEHiWQISivE0pfwceAl2htm0JtWyjFr+EomR+P4HVPzzs93U5leoPZr9Tr7lWUMnwVKS2VPGS0QAHJGEN4HXJeB5Z35riOt2wLcJMX4STNq4Iw5xHjcugsFPISHmfaCnVB9o8LN9TqXjnXp/kjxg4NLIRL70ThIxlgJAJinkxk+xCO+WVpSYStg+wCTZhdCVjE2R3K1h1YjmHJfeiWyOsa2gz/BuvoGYCZdfoTPw10RSDdkZPT9AZkzUE+3ay/NpA1gY5swTWy8ABkuDQBpqg1+4+j5ELQIoFF9I8GtLG2gLm0oc+9Fd4rFH2etW1S936gaXM+rNtFZYyldtIi10blUe6et5IDRlfUObm8S8QiR+WaNW8L/p7nY/qAPsBxcf9tUgVBBvo/W4UJR49066FxGu11GJYrmQNP6Xkaq9dW244nYLI7t7zvMWxMU8eef6CZKDYT5+Xjecvnn9JWCCUtD6z7bMMnbLtmmwAxk3T4F513dqtyCai6GqfA6kyXhuESJJrfd8eSUUq2YDFYajScXM+NEAR1PxpLEa5RuqTjDYMt9oGXoraXOz5MbQKyS4oiQYzKJNB6VI4xOtrDVpQDjfAwTZK2dzDjRwpdKCs+cbdSpTpVkfezwuYbS59xmEQohIg2+/rC/SnIvTVu38TW7VM8jeNc8kt4A9oq/Laffz+cebVguONXC2r+NlYXZNNyqFmC7f8poN1WUOettbCMFLQmpX7GcygynALxFaSA7FcYQ7ciA7iDw8BkZ0aSvQzQCG1uw9+SmNkuOBBVMQ6jqyNHMPVZtW4jUz94TwfYnepP7/zMWOz0SlDIVl0zNGVUAp7G4Dqi74P8D6UAXLVWbjKopVyl1/yBrgVNeJeruClgARZeHc01aspMpQcFJBhXVaJPqA3UrPTbYkseTsR6laNbQGHvp2iodm8or1w4rvGnoNaUAudLCGM4P1bbGPejABeSighrSp5uWWEXMyiwNR1VGbqGiY19Ah77jVByQPrO4LNydMDDGrrS0Z1kxGP2S0SIXZlvbTD8czkphn2h/rMMdVhO885sPQFthOQOtTHSplo6WErRkNnGU8YHSVJ7tTs+oZSNmMfMoHKGvsiix6jOJd1gkeO3H8m1RsYmU6RKaUPfe6Hl8yzrXD8ecfVbnDff7/2F1/7D//ow3ddBinc9x3f8DvvuPXPfqN+1ZwlR1R1GMPlO6qfmHGUNgtzJi6NcuM+Bn7cciPh87yMbk3Pvr+bSuoiJuc/oCBDZ4PdasFYxdz74Q/98fn5q+3AOsk+IbYLB2UK3+WnXtCE+P72cWInjO1UOyikqS1NO7U+W3SNNKhzejFeXIQpvf5mqN5QV5/3qL+wYUBmCDy1VGp+4PmL5kT/+fdJ77yxnA/Uf7bJZ6pfs3Yu88Nv0A7pF95ZjDP0qZ86eCBpeN1XP7+Y2cVbvKpRmrNUxuhGC71mZgQ3QRzUs77Ibwy8T6X2ahYfkHrqBnSy1zXdwPgB4vRztv9zZf/n6v7PtehzKuOz3Xood2MZ18gGSNBybC5DZ7K5DN3yodjjLUO3GYadnYYtnZRc+imnz/XTP4mXLlHq/XzfLvRlD5uV/WPAgP/YAVvFj/v8ETeBWj8eA+5+drldPC5jIOcEpVjO2Hwg+RssuoXidSt12+nzRqfTcSN9RD8xI2cbZZoXHOWduvSyiUlKeAp7m1dx73qmFIxQhtDYfuLUv+II+669BIV3yNyRdoffmZ3oqs6urGnWKSWb7UlbcW5r7LoTdQHUPcXYGFfYNP3XyEQD2psoT5Ib7L4dQqBJfbMN0Zt9OxLBbHCzgZ/MnxgAZFIeSWtVEiDAhZL2Tmko42/RrmXYCX1j2JbMXNit+saw26RxYbdL48K+VgoXxqF9EvQ9MgzqexJwJzei6uOL9ussnKgc8TEQDf/6eY8dZE3blRE3VyO7tW9l3yLJsndO4X3gS8cXi/paC5fbJcFYf7cM8B+rdN97t1khcisSIJQCNFbwdYg7DmY6kAEk8lCneqt8PYI3EKzpEby5kM23dpu/FefOpo8N9e497h1orD8uZLCQwVvbTbCIKDUlUZZWLAsqoIrnpuomYeLdgLxqz5LMWSQ+/M3CkdykiGGD2Q7f6vPdHaddS+WOd5+2LPxyCbo73u3y4eM3vft89w1k23fIbzrvODDmpW94DzPjlcsj4hDIo4Tv6/nGuvlWy4kIpC17D0D1BI/DQwb7b4XpNs1wi9woXyNf1/zZP0HLJjcj0c2WqBVZtC0G117babLxor0RR/4FWSfMoAZC2wDHWizp0iKdJFx2HZmNlHyWCuUDLjPg35F8bIME7GbnfXCf83DnWnB3AjmPg0utsp5200prrTZyndSIGqN4BrA2pcFj6xA4soXCQIhixbYLI2nrNrnjItG46UDFhxaM2GW/HZfj+omuQ8chryxzH90G4B61sliF2Xpgw/UAbhxvorLjflD1+PI+2ZFjoMMzOy98+39zZK8CHa1r8XG2eNO32LfXoX3+lb/7a/+RirUMIF1txh8by7fjcfDhFsXL9YFBj3QogG+7Rpgcfdv+jfPMLmcd7gT8FYlEThyowYkb6g+V2VCXCcljYaFAm1yoOJZPjJiBN72kxtpBqREvX8iwusTBEBeAkrVTKdrGJJ09u5LiRNd4awfYrGdvR7ePLZ5pIAFFOXaVTwpcpE4k5QpkCjFELvoYS4bHQAo8Gqnw4KqLx7iy4u6CeYMaDRhuUjsqkzFIae193brpPILe7JreGVymHlGmRreG7oLMuqyeb1c901q/+vGPdRsflg1bLftTzY0DEoSNg9qkU5lxnlijxhmXfBP0zUTGeIx9hzk58hSPaXRzxt9KHEVX9z4eX90LAqYe7+FxGSfZ3jx9xHGR+rbs8VxWr363lkSc4SS14QW0ATDd2EJ6nYtEMQvMbMaD1A1+6Me7tUhysPYMcvuWNjpggNafUIzVUlmJmD4aND4TfVs/HRRBo0uAQ78cm9aHOo4rbludY8wuO2D80h2wX6dkJitg7R7XxLxHMlFOadfACasB1g1J+nYbzCCZVBL3lr0JG6w379X/JS8zbHIfK0yfD8NYb6AEaw2ZWWsN3+asndcWYBjPWYBz1+y74pCK+5Fqyv3Qrn5NozU51mJhZ42FpE507dB8sHUp7ABHu5DkSjd6uh2HgPQKlLLzNo0Ecjj75L2LINOqUfAw5EMpkrvDV55IDk2t2AQCZvPmyn1bX3vf7/iNdqBKl+PLXdl8GYjwbfqJy6bdWknZ/KM4/C6G0yB1dMo6T+xKGlp3zsT8D9vcNLWqp1K7c2Fgw92ITx/phjoQNKPyMYiZpw/uSPWQlZq4UsFQsKBXRL0Dxi0e2vO6s1LhLTKp0ANxK3W+73TamEfI6mAD2RCAzxLQYgS8x0JgknOK4GGcb0LE+HxTiUsZKhaxdQMu0kjScpfdNgp2+LsknEuHw+joolKCq0bhDtI7B2mDC+KpM/uicrEup9C0M8mFnpIC+5kxD2yQqU36FuzlzYLzaP7di9ZZahybHGFo7ZMJNrcF3DTY/jYDdDPM6BelwPuKP8W9aMc2hpBmGSYWPQvRmsUEZ760rVAaAxoUGZKPXGkWxjShtJoNmGgmkxZ8u1nPUq2jWtB6cqwCSUYah1N3GS+QB0ol7D82YrIEpmE9aO9sP0Dnl82bBIAsTXOgecznir0YNzcqZ8SEDGMbJ1HDGkBdGKz7G4YdX978RROr4gLcX7I3NLetKdBP/LXlrmlnUrVTSU0G2qDBE1wdTvAGsKLec9AgsL+EY6YJ2YV9pgmtsDEwUbkekbWybLRLidehBSK6F1DE8ixAhq5olpdreQ+jvLVleU0or1mWt/YKy4M681tQ3m7cw46S8MrmILoflTc50N4VX95IZuiXGe7xYf01xddUCxB0T6N1dcAxDGL6DvE9gZ6kIBodnxnpUczVraLWQla1AmIQVBRi0E3LyByReRxZLSNlGgWPQh5UTPQVMjXYKoOkArwFAPLbiQrYBwT+G72LSv03aCezD/YNCoZQG/7AlQs9OysKOzXL3j45R1r0BkuVG/VpN/BO07fH6EwWGJSFJGDfDyuPsm9YlCl9l6BwdNQAN67Z/13N/cMI44h9O7DeYvDYgmGZ+n6N4EFnfaGrL2rIGx0ZjKW60FUciH3LJtVFdntNIijnaxEADQFojgZg7XoA/IFDAHz7VwHAKAKgIgDV0QCMrgfA2UMAvOWrACAPAEjJaou42vyIannr5WC116+xF9VYkBrgDd+ugQNbJZkehtMfxVBLkAZXpGZO7jadw0aQtxAgKTRdVJ7ZA2Unaoi7M8grQl6jdg3+gos+zRZ2I0SHFtQKKsEcy+gCs7zostxxdIn/3kXfef0Su+reN/+xs3ddtEK7+t71X/tr33LR1VO7qIqhrtDPu0JPHV3nv3LRtx9VJ2HXMFZ9/t5/l//muy4Smkpjwjd4WVewo+EJm5WZ8YV/rB99u9TVDVhDP25VJQRl4Ooi8PsaS1Lx7ZIRQx1Ot6J6fzmu97NWr2tUghF+ZL39ZU8VUU/9dC8qtolK/fn9pa7tK7UIpV6/NRwYMjqytz4T11tF9f6d/fWOXqZeV2PoIdQocQ/Cf3qoy1fz14FBKX01uX4dVU3JanwbWFlEjIn4lsddmDTPUbWWT0ionf08WZqCwH4L10BX5onMHg4yglYl5gwYnW3XTPbertPyxIY+cj2CxmHpI92WrlqhSi9bWLYd86r5K7wCmEB+dtYm05yq++AFPbGjR5s1eodnjd5XOWuUEd8iCxwcZl6lY16DiHn1Dk8Yva9ywihlYz/jhAzhFfPr3uEJo/dVThilrP/vAiCeMHqvdMIARa4dVe3w+tUOD88aJQ7dS06xPcltpbwjoCFZwY5v5cA1y/oTGXf79uubYKBy5guofkwLHb1oddLZploSvySCCU3LggwYbTksohsifGCFwMGFbqjDiRgpiZFuLBneJhepSdY/7zRR+9SwxsqrL9MLXkIKFqf4lqGqTxWGqAPpH0OSvktfYdk2CjBqwBFgjl4ZmJr5pSDFmqKMYB29PKwPE9ZoFdnDAzrLKZl2IqWZlf8raVJp34CcTmpgD3CmWspJhkmXkdJyDRO8jtqCUae6Eo+qQz0j6ZEmb+8qTXm72DDWt1OIwCRC62mSAOJcsgtd4hkwDapJERgwK2g6K/GODjrxdzBsrUvxuLPLNOxOs8aSXuhSZL/QhRLWrNZ0WUODTFutlXe6TVjWLst6tZX1asuBmk6zVIV4l3Dp25aoU2Pjy+DHfK0/XKYzXEgNmuqJ01SHcKCkIqAUEA1UCworMyliDTbpcw+aPdKOEPNIOxbzWZBR3mZbi6lEmm6VqXyYfvuQF/61zBEOBBtIEWamZMit3cSd0U8RsjqvvJYkBnklq/a1jjNXjXW7Zp7EimVfv2hpZI1cwEkApoSIYEgDKUsDmQdIbIAkA6cPN0JzS1ghXXVQri6hXCGUkyV0M0InUGLxao0zC7CvdcgfNZWH0oCWiYNyFkFJEF4KSoBn9SAe+K+8656COyZk9YgtAXLfRiwlqs0SjSpOmTqoG4fKys9mbtEJIAcEjkWsM4KbWuc2JgCJemMgTdd4KYYYOjHEeI4fJv0+dWph54WmbI3BZpo91v3NlqKRIXkqcJvZNz7WL563oXaRgsV1oXRmzcmbQlwGaDPnWOyA6nBl9ce3D+pPJMnQsZUe2UqjbKXLyDFyG446XjuwiC06uFHcNMwxYrpdje36ZEkVB//gfDfUdGsuBxovCVgJmUhfhuc5bDMbyuRKuSaQAea5NLAh0FH98TyHRVdnVOXxxHzH9u55HAeE1avSPLL92OP7bqdbEVMrYemIVpUSOG+1EpxVOBrh1n7WoObPoePo6SELlxbz6IbO47j+BpgXkt/3fbed++gnfseH7rrsZJxdIUV8jpdH9wNzUso9ON641nsVuC0MKNzzfvRCYvJL7MXu+ZPR9+f1+4ej71/W7z8efX9Gv39QPz/X4/fpxT3v1M+fpvFzpwtdzvsA2Xax0C+GK6i+bpSomJQ+HPkwRTsjzY2B9CGh6EfmKFSeHkyyEhGRvNe9/We1S5EHnNgI41qnOB9ut8SXlPpUZkYaFUDHZs9oDOusGvxlb5l7Y+uiT0Q9eCmp3wKVIvRj8+fZidrONlymgntorpz3X3NqomtOJ5dCZq0kvF9KIjOkP5L460+X82Rogp0/BEwqdT2jpZsxrge6DNfwaUvMHBl693KpHaLYVh4NgMZjIqXRsmW+pF/0d+eaRcsoOVhIAbNEEO9jCA9sK9wOyT9MVZklfCQxA8TzLVggO7MDr9CYgpw3/DLgA4l7zOb4kVP/w2vf9hYy1C/gO1s0L/Ae1UOmPfdiH/1Hq7nxcQOOGNkMM5pG8Ty0eJzN7JR2HCGlt9CUodRc6OMdjbNPJsidqe1zaEcd34JxuM5kcBZj/hk62wq6Y/kD+LzDpnUOfHtBhF1ikWyPplafS9rUbu2lkp+hSwH7KPGR0JUSeIYGWsuQ9QFXi0EsfXZjCvfWMJ6FFA4jP9XvF7ruSO0oLdNnUJ332oF5Fw04rtqGWIZFiw9vOyPBCgiUil4eaZO6sZ4ZPX+BV0Wc9YqB6dM73cCTbmGR8nnRT3b0guqXABg1mqVo/jL3tcrFr3ZT3Dj/XvvTS9XcvDTSwLKIvlcuwYc/hL+fvAsmhxuZSP1mdxyrdP+epMPVLtU7fiJpZ5JLc1rf9DmT5nw3O52+k0Y1NYW+LsMY8AQCkL62O2gDnKEjZ85zbJMw9LDkQBaYMTWdWRCI/htDe+c94BONTZaKKtgbApP5LRd/lOa2H/zkvZ9+5u7ffPHet9x8118/H1mvcm9fd82aVGDktT2jkIGo0m00r89TGc0L29Tzxg01RcZguIQp0w8w3XS/ddceD70qnlM3y7s6Gm9njBiHA+u4wjlhWKDRPBw53zbuQD0eD7mMlUeqkFM7c25s6b4Ouuo7gu2vy93OnL2dNdwhG2lvtpN7H/9tf+21bYPH32prWY3vIzXC0gZW0CAU1A3fr1DUMvxAW8c3GnvUKufdwbU5HQzpv6mpUwFbD8lIZjKRicz0onR9QRIZ896LM0O1cv7NO6jnIRn4hHrPurmg1QgTXHgT1KJpNCLWzJbRFBC4grpa6ovS92/n426/die6/Sf+2nlpPqBtALBc4nmdEq3fFBbQQZ9WhKOaL8J2oWfpXcKrL2ngN11GjkMrwJwW2jKyv43A20P6NmXQySiILn1ceWlrKtCpAkRdyFPKYLpUclt+7HWZcShqkkD/GqtgN/+A9PWB4wTQJ0+ynZlf/ehwlE3GnUhpXA361b71mbE2ah8VZwAFptfMGn8JEBBysN8HOmpL92z6yx6QfE+/FZfBhyGjkj0wac6DaIVz2iYpYjSkZsrnLKU+6l9K00x1DxC4azthndCdiWwUk87//DFgzflgwmKCR8GP8+9P6BorE7Bls1eFlLmu/bac2dHnjkHLVbIrl7vigCJCcfC6b0LjovbImV/xcOyK5Lp5vNIVlw0XV7ry6Y91/QOF9Q8aDEsE9r4cFJ+wJlwRLeKVZ25c5mf2Zz7cjANm+xL6nK2niuiAzGN1Y4i/2wj2jaqaVH9uaEvtWrFvVSG2SzS+wyIKePvYy3tIoBFz9F1pg6FzevUUtDQfxEwD0oWQHQOl8lXtdgMuBP4xIvDyeXvphmd5X+dsO9Kalgk0sGqdc8XS92vpqEO79whIxwHSMTOm2nTznpPj9W0YHED122w6h+M1jJOl+et24qKtHz7rwDM6pCvoALUo1EO7IaCqBn5mAaCfMkCfbjPXmz/P5IkM93B9aHy/9yzTX9hUkTlXkymS3M/HHoD9HQskTr3TiGqJXUIdbfi01DdEpTa+1LGaWEJxXAyGUvUbdR5dau5L1ZqvSHpb9pZu+tTHpLCR0FyWwZVu9rRkH/7Tkn1CZpeleVqml7rsm7K30HDkKyChQxTD2mOiqcONrERGbN0EP7tqEVoKk9ZIYW37PQtcfE2QVXQ31/ONHB6oBrtwc/pVuxR15HfGk5+vvD7QYaywZoVdtTDufawb3E+knmGPHV3tY94odA5A0d5fdu1lKfDakOJcj+ovfejEWAEygIpCtQflphxE0Z+PqD5jXoKaJ5FolLjcHldqLj232XlZ0R7tpYYeYCGsRNfNnhhtEQ5mUjV/ElGuSVyg72/Wcpx9u66Axj28fTeKQITUMRYJRZcTfTkWP161WkZRX8cJR3FCVuXbovEYTKyDV6xZNHJqHPZIv2eU1r5sn2DkE7zeEiQ1YvStnvfIJf5AGPJgW4dHPUd1F4aqwQdHun/eGwohU/0CAe3R9q5zE2mRZA8Rf9Yk/TZ3XUiiyG2GCj2VAfEfAuJNNTFw2wyTaJjJ3IJEZyO6nbpDHUjx7bT6n0IFxgGT+h9lSR3sGZtDGDf7g8eHq2oFtzNlsGVK+pFsYewCmjfzpB3osxff2+09YOqDlXHRB9oeGgMPk4uze20Wu3rSzc4kS9KeGZLL6Pofb/AQWNvnSD9r/bQP04sluCi/RD9AAt/8BNABSOwqo9gePI4axRUsnRSElM01n8qXyyCWyeCzbShjxDJwswD+dHasrKFmtW0syoT4tfl0XIRPgKgSiXwC0N8g3E8M7J1Npa5krCtrFTg9Feql+mtwCR68pfrhqpyatgp+s7c7W/gCR1M4V9X2dAMEwYnGCG3DqOYdQJxadmO8T2SgoTDMimxNcOjVzdoVydpVSds1HmMCrFWZLGRNpotu3USvJpvdkDXoA21aiAwX3ZYFb1+gsYoN2T7PN6X0Y5ZHkNuij0GMazm3fNAKGryiyccwa7EG8fGa96g0x26OL0CcNXkHmsGOsjI2zZTPMndddl1SwwAajjeEjW2rl1I53AnHzJBPqse/D2Nz6FstJnCZyJo2kLuUdkOm+NzCMdUIb8fcEdO2lOKP5XcvLnc1x9FKezuhJ0o3yDjOI5Iv87QhT7fMc6PmOXm++xrZdDlukiGh4efNUlh5eD91cZntFk3Pt1u1gNvOd7dbJ2wB39ty/KKckN2L2kki0l2UG6XVj93zCuuG3Cy3XJRb5ZSGnDjfCfJB7xxVWuZdWCO4SW670O1ah21qnhMXlAxOyg0XuhMWtu5BRHorAZm10g37qJfFfY3c7goROW5va5iL12R1/jaaNUn96edIdtCHQzyGMsZjLBM8JjIVk/rXeNSyjsc6aDrIS5IHsd9y5/U4ywf5b1Gh/xje14RGmCBHw3ef3w/Pk4d80NCCsrNRKozYGYZGhhaverFNtwEuSapw52Qd3LE4zUDKVHHXZV3wLcTkKhG8YSdtP3HRChnyAIlYRTy+HBpnGCozLWiT3nmPebNWz+bp5FzheEJBnlCSJ/QRVBkz6AZsVIrR0o6iwT/2dlXRMlPpWHR2RFN74OHj3r5k6qGrhaqqMkA3TQDb5HoDF0ynIXgzKd2MYzYgU0qL6LtbUgxqSsWhYcIhOjELqivtiDByiJamkwiKG+Ct8DqIkuOzcmczlRsU61K4tw2Y95Chy8OUbKGxJsF30AxGLmJiFadjyvp0lKw6jDD8AjO/jVbPKir4pg4XWtEMKC9BoaWs4LEC5rNfNgTMfN/cnBBTeIwQ8GmibBSRqukCj40CwWAn1g3uxpKYtmyN8JrTCe+rZOa42dkK+fVjBfaO6ds3STHnYJWA6vr2Vt/7q9OfxJ2A913tRu6EAIbdnFq4Dr4Sp31tEyyCY/JAZ3N6qzS61GgLdHpvK9z/4wdhXDQFrrGJ6xCjgF43MECVvnF/Rx+qZOOMAm6bXg0UdmTNa93bhS9ZWUij/1yLqdijqF73jKQRK2/LyouN1g0lVbfvdk+wPeZnl74YCLumbowrTYXo44TCcYNWeQOgyEVTg6dj5lICFTnetnKi7dyNeqE1m4Fxsw436lDxiql420Jr3TeDjUil1TqUy3Z4NKiZc2TQtV5fHtduG50yjNE+5YV9zd/xzddLWWjGCTxOyA1o/g1Yv7Qg1lY6PDoR0KzIjcxUg8N6hMb3VDhds+D9CDvuEHYjEab1tKLNE99tm1p2Kze0nXXdpqxxcG/JQFHRasmd69UtDvAGFXPhwXP1bWvu1L49NgwqYZoQbSm5uDDDpf7QeorHVLbQ1C13JXLHcIBHJ5vAzSaXaggZ6ER5HC26AY8bRBAvFo/rILUR80mufCl43sBJCCeLHDkMRTcSQScQdFzRsmo2tk6+BqTXiqJEJ+h209ouHi0Qa69I36GkIUpg7KRrZSrbXHTp2yYxxIN8hHc2a3Q7RhV4G3iG1i6P0Hd8jg5BW56WYow5VDVAVUODmHIj7GFu4rEZo+IGObGnTVUKA5nRLqhF9GN07B9NDjHzHlGzsacXtgt9Z6pj0keq3eWYO0mkrCqeOh1nO6IbbNlthebKgJzDjAHDD/MtxxTaKHjb8m3f4ZDbWo62Bm/tvrkXX4LIMPKWw23/aLvRDQo/nHbw2JEBHgMRPATGxTxujsvX2KDE44Qckw20ehePXTdEkYyslry0Dsvylx+btudKzpKlHt9zhpHWif1tUu/1WHGnmY8jxwAdXYg+2jkuXbfa6U7Jcec6zBh8TNaXGN/ch/FtRF4Hf50HfFOs2taq1aIEYG+LHLDFijPO7GHbX9EMR2t3Y6Xda3fop3/+DiM8xSSSkBBdq7ZppvAmHu7cLJVSYkJqSo1jYS9ZstxtrV8jt8Axb4Ki2M2iqmXtKf2Y6IeGXGhv0v6ZKntrzE76drtFXe+xorPtdHxvSaGNONXeIjc52wOd3RfT7LqE11At8Fb9uAkfp7TAmw2zswizRGVD9AHBeN7sZoQoastF3YqogN957vG7Bca2pUW0QGwHjHZya3uLQz7QiO0BuJ4iHFjnUFfwbwYOGo0TZdioBQBzecuaeSKmLQhVB9IEBDbayHq99ZktWeWiwdor623j50Ra+7VmxTZ695XrrI9tRdYpO8pjjB+ToDdtJYy3Vvra6LzdxjQDVptKp0Wua3nbbRMGWGPzSNidcpzFlSoCN40ygSpwkcS1i1Vu+SqdseC+ApG3rS1jOvT8mha6qSW2L12tbFm1su6rxSYKwwOPNl7LHF9SOLCBxzb3ATX3ATNigvsAyU3403Gc7xiFtwZHK6sEr1GYV5ZzcgPwuKiKOA9UnP13A4gbm4MAOLAz9QS3ZwS3YwQnA9TbAvAW8ct1Y5hEQ1Okb8ulws+jgF7HM9oC66ME//iectAaqTF7ID1sgpuFqeOugD6cdWfmo4azbiuFQlFi9WI3woWN97PvupHFDo5xFf3Sbln0uluYkC6nS8IPa5ILfkkSViwy9RNMtCH308pLrVHeZsMUM8Y6Jxa50SYWmdnEgq+BCL4kQqcUcoIKxjcAD8rJTacMX/sscvUjLC8RLPsQfKOfB1AEkH1dPAfsEn0z6UcYrtoBzfX5eVrztlOQWCCtHb/+nbqVTYs3v7LhVL4p6/HcwekY+GQOTNghx+bhlc1UBJgloYYpO14IxzM3OmAATDgVbIfL/Qg+jNkpWAMmjYgn/EJejExsl6qOibt47UUL3vEpXSHPZRmAE00Imm1wUGNQZfdtQV+09Dec0YeIHc3hNX29d9c3f+5dT8IIR+UPxEpIpEu0pjTpJzfdkD92Q1xONt5p9/w7wFY+0PWlPEvWXAj25kM62hy63TsOTLzuUIoJc2gGGXA03xbBG28BnV0atbFWU7w5oiE6TLHaTBSaIDgoTWiBiJYe0JIZxlhB6q580wAmtqmQD9gIr5buzGuv3TH1wJr4HpVHbptzGVP4QFmJVGe75oFuBNoHjxi6S+WmTjgwJY3nbW980Zlwxd4PlOBl5VQdxgk9bvzTQGe3clHXCVe71XDHGpZluZnmF3oWIKXeOl8p6CXghNLzkZcS8DK4NM42x28Ot7BNrk8duIMXsnmkEO5e/3hRlvT+81gWTIPnrSmSawVdOc+Wek39zumgSkY5EtKE6AEjqcSovR0UMoeCM5gSCC+9kURzVrE05gaT3lpc5XxODS9pHuqrudEGOBYy/KasF8nQQf2RK7KU47Qn/dsyJeT7Tv+D0tQgL0NweN/7fvGmz9dfN/uWy/dd/bFf+pV/8Niv/pZLsEzbTrK3O9NVJp0ayfh70cWsEWVLuaev/vhdCTqH0Ow+mINb+4u/dhdJA6di4x4NuGai+RWEFyLVUq79Y8fXueSaRoaX0abcRrTUiK5l6AuHtTkycq8y88IUAzd5FFrOeIGEgCbAPqwom7SAr5LSaX3mGHT+3FJq1Ffpv8tPtfoFXNXOtAG3uR7LMnq6M1QP2tq6bhqbea894FZgN7tkDWDgTIPx7YVfOSrJI1NykXbhwBk7YNYOWcUKq/0wmOAxiSzbaZKnZIT+bKhu+j+naRkMOxbHog1MCf1kaHCngYCP0cIFau8DTd7PTCq8jBaZoGW/xZZo+za8k8wKQEwvsn+bIF3iiHIQGYQc8r5wz9ZYqDZd9s5AhspNyD2A50JSAypBLCthscLLSFKZKKOtwUUPWLvMeLghNbV38/BBhXJ/aB7E4vWWnx0u/fkX6O2Qs4NeL0r65wRZ/HShH4XptdImAdhnH0p6laiz1wcgqpVsGZ9bfIr4ARSarIhiX11dJoUvfCgYL5bJBQHPyE3aS7UG/c6VGS+6IKXOvAe+cQ8FQNstpaVJqIomQiaFlkMEioOk3NIndppXEX3ewCjSs7mu1FwKulvN8YO7aa+LRU2syKld1PXQJaW198RrbyYsfV8nIKlPWDDhATra5y+PlZEbRgzkL+FQ2hlH6amij/Naagz+flM9QmvxdR/mBWexC3c9/ZrCG3HOecL8h0jzuV2/Ap27c/k+jymncGKSaAFrLn+Pp/c4zzUP9WZxrXkv71hy9ARd43mv/iEAbJqObUqIznQoUVflb1NbiguE3K9H/6gUoFZO0z0Xb8rqd7QpDdb8DkGgd7j8RnPB+8aai6n78XBZU2081KkRlZltqjOm7Vu/M4H6OYqMRhtd3acST5fumbKDCfYbOx74W1sMai3a6YAz4I0gKKD+jQDGkiwUspqBv4OPM/U7HEL+EJI3PwXMWZms1HGq+WipEv8ZrxLvtAbOI4f10SlbFi7hrmMCCh6jIzo5ph3ynfCYkrAz0LPN30V5TpUBehDNh6mW8Gp0pKrSh8WoobP5JKIBDy4uN3+F8N+TvSq7e96ja+UnB8pK0BAzG0oN7XkC/gdonSpQxptd13rug4MPb5+BOloMdlsoIE84QNp+cBrbB/32kQdzTfMuAn679DV9Hgh2JH1c0cuj0MqIK6LrAQKqEIDPgQEp5SPuyklOj+2E1oey/h4rn3//ApBBT9VSRaG9oJVkM5FeqmXGv8pS5sIs/CaqLm0AI3jbmp92cGmgZPNLk4WtUEtvSMASYXFl2aRcSIrC32MW6KScn468QgSjXgR+d36nL/y0lv2JDSTKeJPhYB27cC3bP6UJXRVdDuGa4SaYhDW9/+ajqFzrvvPoutnA5PoN7LFymsh3DdQSrFJdcIWm5s0PGxFnFtn8EGmSLJRN91qzsfNXZ320EKrI0E9xgne0pKP/fXqBlXSfF9hI1tQL+5zcUxdWIXS4L2WYMmJ7YwVW4idd1YovUOkavUTfwT5pXGEhZC2E3IkeCe5oLf2ZMULyEMPwtTeMzeMPFvWXhs7xeiH6McLHjX+JHM91nUI9s1UV2tA/hRuhrg2H8ecLLeNCKyv0uZcs9I7rFxo63mu4e7p2s5l3oh93ce3KiU9Ti+bvIQWURaHL9e+KpO83Sl5ZK+8S2hmjOjcUmGuv7pVZOvKoHDXmzY+gvJjbMn7k4hHOO00I9Kn4tS9Dc1SGZl+GJs4AZXVCw6YD4SYCyMPlMQzEhlZsc+uNvmXkh+uN/rI3mtn7EeJXF/E9LuQyjO2D4M6DEAyPhGDtEAR38oNE9oohuPMwBKdjCMgV/GYHNe+S8RlTap6KuU5Ye1n84ZJf7fv3TyGbprJZ7X9mx8zXdIZ3r+JeHY1UHqKEEKURROAhgAjJjnDYFQOFJBFQ+I7JRcsGkHcH2rgvvJ7xr0dO9XV9PuVKA8sbknUoCtBqo2y5GJdqK0cWHoWc8WNmDWs3evAw3U6UndDAbWaqMzrRNfMe7UZZdJd4TJAWLO/y9ly7jJIkrHdNCMFbu4AzaKnwKi7QYvlGyLe/6DXQWCgpMiJvGep3ZUnl73elbUY+wOt/aKNVYzT+OMQW3H873VEskZqfIZX0eF8tO9v8fU6wrLzTRgiWVT5aQVkDL3NWbKvM1JmNPFKPU+nS+aexCmJTEjSF2plWSjfArkEGuvtB4J5gKpXmr7uJPc7EwpCzG6ABc5GBu9K41/wNp1Z8qJZ5z6fRL088fi0f7MDOv/QO5w9DM/NmTaOoQmtdIz2WLO6OPYP+/hhrmbfgWv+jNOmzG2A8aa9LsAB3sYkjtGgLnzOKJqh3QbKsYt6eCR4XEUTUJpF4CO/U2yolb/th2d8nIvyOlH6loqt3JfOEfR5YzbLixndAKvmS7iyuw7QHv013q067aAHEPBv18nAdgkr6LwNX7KszhaEdIqt+sp/V55J3wIRosOG/7/rlOx4wFl4E5Wg8ZX7OKQ/fgXqwUemTfVTKLnlzEDma/y/a1akO8GtdRl2T2dbQr5FfO04wgIcYL0Osy416sqOugC40eMgwLRL3P7saAQ8sTJWc2yR3FavTsrbE3e0qlCCckjT8VMvSfCteKC8eje1WKlZyoxRvCd6S2hpxBQUjlUuQ+AS1201T2/rubvyq7PRS8xrWM8b3JI+9Cr22r0W4qQ4ROi7ZT2g2ZgqXGc5V36SdgpBK8Ka+TBWA/wkAwOtbDtkY0iTuQhSG4096FfH+EYHouyCltujlFeOTVLBmWgjU0SmFMy3MD88zKr7GuZyb2YTpovSUl0QiMIqowzZZOiDf+lQKf+cLXY/rweJ2goXUy5VvvudU9Hmjcth8isOFxDLcI3NJgtdS386IkcFaFcnHj0V/s41sLBoiFCWg/7QnT+kiPAYbUEqhlXYFssDbs5EUVjXkdeh+HAjsKTr+vHb/abRoGX7dEDhpL3Q05ud0RZosLxV4sX3nJ/rd5Vve5m4vnOnu+pyWQjtzeO0Rm2b6nGtgkRQRj+unk+E/0qVsZirZI4pDXA+8tec2/T1u+q16LpQJdPNzeIeU4OdHmS6Y37F+Dmw/jW87xJNmV3C37hcHfTy2ugpcvwJfSGqAav1vY0QHh7P7APBOkZVwfA3uOfffgVwUbXafRwY6vrqBBXTD346iMrbR42PYDoDogQ5CChvYIBR3RpI709+juD/D7zfi+w/o9xv5/Xvw/e36/Xv4/e34/m79/nYomoLG3GimtL3/SKf7PhkZ5x7TP5iGLcXO3QRhOcKmoOlGUjxgiQVXY1U6OdkzFYIeftC5wZPTxQyXoEzAh6u4/T2nMQCT3WpXWiYLnto3+uZit2RDmoWkyr8tctsUIvB2bOnPhxMhkQ7Tg8Y4uWCdOQqDz8Dmbxr3MbtTMw6o2va+Nqp2TTULSkrGCFK6uMBiFzeQef84l+Ma0d0gO8634Ak+nR2ZG/AaueCVGaavWXwdGcQeg4LhezQ020eCMvGgZP/HgtL2IxBO7ENISihOEArgFBOIg3xHodJup94aoNKa4Iygrw9CNSNUO/g6HpsKAjg7gGpHbgBU1AA7wcsOsq4BoRatYYbutrp3oWzR15RbKGLFOxXMUen+5QNriY+kUukbegJMKWEKmW6gKiPx5iGkKjp5qtEryHlHmY5f2G65lYFUmK+rts+Nwga+DtmBKA7csl6ogE02UPlGWzk742ujFNgYOTeKu1I5Uhl7YSkWUDNrT4RRNiJucjir5z3HW5SrOAZ0j06Wxn1eHkSdANqBHcKAK7HVxqyWnOwOvCvrwvoHHGsgw989TvB4+/8UuAf5qy5gyL4wl1V7UqrPOKz8wT4UF3tsvsVXGlo+uugQ28fNty1idviKYO4ACqEbADrkG+gjvRsvv5vfgA/gXA8s/Z3ZCU1QcACgY8enawzMkBcrAIFg+E8mSeHcdXOmyOyGOSePXLL79+2o/YI+Oq8veAhduptpwSl22GtjzRyEbvFRHhPzdp9ke5RV4wTdOb1eAC5XP6a9RFKD7PX0v5O6GRcz6SdLbYgk87/6g7+Szrd4rxLlA8lN/Jn7WLcIn9vxCHayFIjbPpnO+v1OtgPIt/d6XQnkFfpmZk6c1IA3XduM11yRG5oXdkSTxBVXmg+zQsFAWyomNFVMULgFZaXlostRo4Li6raNm366e6TugpoUe5ZZn5Rs77tRKqVDNMU58fbdw8aqy7k2if3pJqyCd3wdBr6214M4tS1qiyq1gQcLAlBIrq0oJPEZ97c5krPE+EFRUfYcAMQ19+J6Rsm+vNerqg51xa8eZwcR5mlxnuObYkr2pwVPsqTXS2u8CzFvQhOJYVjb/7kFYPI4ZJcwHypcE07SXoLimycQbzSFKPbO2TZHtxXhNDsmAYDEnQBMt8I7U6mc+q0GAqvzGwPSBImAQtj/X5mU5xSXp9yRi+0MThIwHSYfQG6MKBK0hjUMo7mwJCTqMlMJ4j41JWIl41ONKpm/ZFdswhxocVZr3QXDWOyOZGdxEJk9YggWf3f69XZzP1vK/yl3jMTqarN5f/kWmRke54UHEvAVTpZVS+JOBLJv7nmJN8JySqfistODhWQhs+Y7Mn+UBXE4Pn2ddVhoBasAw8D19h5edJ9DrMW1QT4pQEEmhT7AY7g/gyzNuvXRefJt8CqaRvd/Mu3zIJzz8OYAljI4B3M0Qhz4UrhQU5wKXT4C2idZ2usljBPG4Zxm3+danBONLygfCD2dQ0iQk16wcuOAAERKavqSU6iM+TXhoKDkY6staPwoO9uWNVjR0fRCC2HBTBt2jSAICZwuWqAYDI6UiQWBVfsFNqbe7lq8WimRCaVLAbUFhd9trRIeg/hJ6XfoyS5qpRjTzaujDlOomBUzTmfLcxnJbQMNVha482gZBqLN6tNJgj2rnypICZDIfNYwGyraWpbLifXj0Cfh/iMlVJxcacPtfewXy82iZal5Eq0Kdo14utTgyUeZk15maiYoeXDPlgPTR+0Do4+xNm0A15yUEklZG12pc/7FpXfYWxx75aTeG2hVjKRZwXj/w/qveniuTof6Dz6E90fnj385exBRjz70kA6z/NH5ez/2o1/oPSipe9GrpohIH51/8p/+nQ9liODLPLWI5NH5Lzz7C88WiOCLiswfctI/bcweMp+xUxQk1i8vm1Xy8L3W/7Yu39G2Y+0lufIwL+CuHMZsAk+xSjyjPA4qoxjrOzQvkzfvt65O67+XJgMvCs8xeOMuppIdj9z6D+yzfpbr22Gv4cPgUdtP2HXkEmpgmUwQrgO7VoqyJZWjohG5XM5hxUpldPaALD8sK5bb3MFraEpfEui6mUs0XMJ1XFQqPHJTNKQvqhpFmoJwKJbeoMLBNIErpTozzowjQI2IrsvbNNo6oIVBR0/dysL01EEscu4EPAk0d6M2l+S1CckeUVHbS2s7T995qIQ12sDKgVdYPIqgHubNVQf1sAhZMvDTMKVQfw9w8rQqQItTj8DNg4YcNUcP68XFrSqjVhX7W1Xua1URWlW4VhXLVhXWKuB9vxtgtieW4IX2lNpP9V/DpmI/3s38n+kCpgu89Xn2AsyFjsgdyClBDoAOJCWgBadMj/DUW3CsgnBIX7ohzXsXriOcQbWugl7Ea7rhztLxtp+2Sxmyb0KnXMuqxNz2p2o9NTMbqhK2PdXSeqdkatxzgA0A3ZqOXd8M7ciAlzow8K4qRZdX4dVNr+tGPqpStmBKV2to7ex5aCdTG7lbkRU1qFea9WsqVKMqftLusLYFRSgKjMokg269rF5sV/GhoNh3/2LbdyZul7vsgp72+xpJN1allBcvIGEptSulQ5h5u5NV/RSD5O7zGsR8+JISmcA+GrOgiwd8/2uS81c//rSMnroPyXa//8fU5OvneWMZ+57MYNXyg3VTr05dYdZqPKk1MAyBlb/p9jHbPgSFAiId1x9OlQxpCA2mj9xKwGybh1Urdf6bsCzJQwDXDZUFlAyA6hJLcJ+NffpFEsa4Ln+AXb9Gy/ko+CjdRDrfspsDHNZ0VF9ihZcfhM5m3oRHt1tG81SohFYGiAXaDFiN+NNVDTPWUWM38f/nYsQ0AuthT7yixDcnCZb94q852IGhs20KDNhbxT17GpRcKknrbw367W58Uwtvv7Mx7b48+nLVLuuvfzZNK7144QUPCjuOsU3moO3xuCfKNKRpS0EESBgva/vWyBWXkZXFOBHr3bQ3aOpIOdmDohzIOX0WFFU5yzm24l3wLixPZsD9LLT5B/hk2eXzUjx/ET7mHp6fe6tebxjKgLq/XDE75WG2JyzpsaBve1543SZLjYSeSRgAmbcmCxQkpq9KJxv7dVRNcEI3HWS4JAIZIuWAy7uP5P3SDKbil+qbIRQV4oVLkQ48qdOJq29mjP3ie2DS6ee74b3v/eKnv0l5z9+D20FowN/7b/75iW+4qE9a3x/5OKjsR3iW0qmZdRPi0u9xQH1wodXDT/nmVAZXxDwNyrv+ZaKu7mpjDd/4jbfeffmSVrN55befVlupT79w1V8mmSi2G9Aw+WVw5akDUf2cNxcN6vk3e8hCeVbcz6A4aKxf1KZ87BtCKkKAWseXP9LVB6yq1QfdKgKFbKVUC5z92byE/dfAJH5BYz0sW5jJUE5TVZVMjRLPue0zDE/JRD9qr8qTSaURRTDg5qTr1ILDi/Pdy3HxfPMP/VkROMX+rPoWlEx/bpqdUJ9ahT/jf/Emf4hvVTwxJC0/OTQVnc/Bqie+3zmM3D0OlncshsbYfrpEKg2Nwq7lh8OeSw+Hic6QwfDukCih6bjIxq51dMWdfm2svRvg2rNf+M5fHCJD0vZZUurySibQiaS83Kidstiy+efAl9Q2Jbc4ojztDkuRBdM7Cw1pW0AhtYEwGg2wH/nUO7h7xXPLpa+4Fd/Fvy14efwX1EbIBeMDyqyfq/RDnz9dMnALgT9fMvAfV2BS+Nl5lvOOkOIxJVbn+UNtQ2TylKSc//WSpi5Ws2DtaxUGWohg5pNEVkGBa4v5E7wSsI7PDXvdxOsW3Y6zbGHENlb/A9k2QkXGTj+Q+Bii7a7jlr3tyop7O65vjD1BCiKFyGbzLw2PN+wL3XahgnMV8ELhQ7/3tK4TerOxGz3QtpLxvuNw0dXNv+IpEJsK61y/XHWd2efBSs/WLG8a9xDxmUpueL678bz0n+9OvknLvRGhf6e6ICffjI26c2ReL6R+q7S6s4G122WIWj6Y66IUxKTdcZPoIQ+AGpxtb4ZPEnPAgAcEuGD6p+QGR83HRQs4AY4+lBaKPDfJKTUn0J2S0Znulh2j7tAM7he68zIg5DTmTfCHEfjZPvCzWk7h7FNu2dnTqocAri/9s3LzQuHjdsjf2uMyF/TNYrsOpqZqLft9CPhpDVB8sPDupJy8KBphQZ1oWX/k+W8Htkjqa+7ZuOfIPSs3BHYxt8q67MJe2xo6ulkOBDdYNdoS7cg6Eo2QqAqJht4OaC43WH0262uNtdMcYUhjdYugaiY3klpbGDg9o7PwOSpql2BLq8MaY8ArkptWno3MepnHykeKUKoB0Q1DyccsqOr6LGfb27nrYzwDVNANTm2wdtPaZ7KBvlgHA0Tg/eOcLsK3X4s3WTXeB8bFZQV538u0yi5TVEGhZASYfrqENpC+aZs6q75n4Jjpm6E/RxsucHNtADNRbOgphdtn/MevOCPWqu8pAXQ5/zs2FYx424ycSQ+97C7rGDKBsSjRahu/6N3P8/oSwtz3zfY9ksI9+Q3O3fxrW5fdrJNx+lB3i9yyj5EMyEi6Qum1eM2OFAr8TphM/FljjUcd3buaJ80vmsprLeu81NlYN6GLIKZI2EWbKtfzXcQxFSnY7DOsYsrrvjr2povoXScCPflVxuQ6cS/8JcT6S2kyguCgb8Mosk4sOW1Vujs7mckJ8DiDvW8iKTCe8b6VPjJcltPfcM5F7AjrLRpn5151TnPrM1wUd34QKtqCzcjNTFnH82RJjB1njqlxQUSjJc5vcB9r4rO4RDvSt+IsJ+ShpBpK47HO5ZbGTmwmhCXCMXPNMPtZrsYu57tcU68iidnzoHgbzr7v1McMKji5NFCAyWVqF6ZkAiWYHGZKRR89m9xlZHO71ORDQ2N7MiDn6duusP6FIs3PlY9F2rCFOZCDqFrZHNZ39zvV6x4eVbiKOwivw/Bah9dReB2Hs1X6MDXHGVcuQYr282bb1na1C10NA9VqIyz4T+kmotacL4Fq4ZAUWTXjREqKrRE1FIzYURT1sI+qZaSfVRT1Fh81krF+5lHUWR819jc8gnAKy1uA6ba/gwBgO0AdV1hgpc8xIJXq7BVCVvHVisheQRH9ZRF9X0QfryzCCykva8rx5ae6yRLL3+P1Exk50guuk6e7gYJ0WUuvETZk2OTSx7rxge3C+Nm2DNuFspaU9/Apfe1rGcg1OZBrcjBXxlwOWcX88Qoiy6/0IajShzdMq0kx1EJ0KRmjLaM7pbU5CGvakI3HiIbBBIJURlIZLrN3SL5ezbtkXs2H2nFi713PTw0JpwYz9C09zAs88rg/SXiPuwdn/E9N/sXdKiP63Ln7znfJu7GJ/G1vMmnBM/tNtIfrOx0aJPj3up36WyCn6LnDBUnt0aV7XSYZ1mrFQoq3YsTunQUQe3ppZ08oMoHCUX3NXc0slrsr/OOuJpwDJQpFjnP1viDIT6hd0fa8BjDxatVjnZUtP/KzC8xKqlf8SOe7bp7g0Hr+OG9XZ/s/UQOmsfiSDNnVoWus6IofmCTrfsf20+nSpQkQzMakbsuWLLfiXR9CD2iwoZ1hu2RGHGsqpqJNNbpzxJOacTAXDHZyrcSRdN5L0iyv4Wfi0XY8yvCW4S3F2+iP6FuCt1zDaqkxaNC0B9E2N93GM1fB4TuBAq+957jXwJUDTN+m+KlzkHdQdHpNaarCjoeLCW1CDPyAntfH8ycqv57gbnkgY6xJXNgYL7TJOEPlK/o+XnSrCJ1qAcvFhceAedWGqYY1JGd7aIzAjvcaxNp4WpOx60fQMXD9nqGM9zoNR5xOsxQCjhA4tqGoX+O55tzDuEH+c29deGwmECsBodpGxL2eSRCfMB44nsmK9RcAACgyxtuqoD0+oj4C9b1IXSIFrB8ZQk6pDwK+vKnZ1oz/4FBquzqCN+VTB5KxKF65uO/ouHJ+LTXbZnOB4K3d4FsDg2CprScmGTE+sQkMOIHF5omJL7hPXcN7tzW/luCzhU/Xx/m6LRv39KB1u8lHgccpPkTLbMawRIOfyQmAYzhzdYkViihbxYeZy50XD9sqo1X8SPNwV2sZtXGlEYzpLOUAK3HpXBc5YfwqFrsJ6Vc/pjSpPaQOK6ksA1XUVDDC4lfGbD8wpHloMYArfIwuABSOuKJEQMRyCSpKHQ/LykOw2CWN1wJMpQLSUi/4hCnl5n9BB6HXLg61gy8OR9RcMjA6rvjnCVf8fRlEsmYdslj7D7lpIGjeVAYX26x0/kQKiIyR2KA/i2W46RiH+6hthUrcenPMY0qyLJP5Su1sRCd2hFibKrxme8O4xEwMAA7hxobvaswOuhmGhfqVd8DMznZ96JLPYDh8AcaCRDXG6MoDXOUCFVx2SK39vgYr+BT9JDWA8SedIyiwYGtMPzwGEuI5hMcQ6SsnQFtqM28yNDM9IIieiRZmEC3gYENmmMqGWsJbYczrLA6vliF7i24kK2e6xiQH0HhekUZ3/Y1BxB1IDmSHfY2jvSnxZ/TS1ktJGxg86dwmACTCSNVXt+sjGYykkiEophs6teVUtP5APeARxh4CjeJRx/6xJoBpItsydWbHALT0gioXlJl8x8Y3nQqd68Im5wfzpLZjnM+UbepV+gqvSUUfbTxCKNqSViOQhucsaBwmdgyCtsI38IRv2/JlOIlHTwBUgy8anzR8D2IyOoE+V7bU5xqYip6hkGGolwrv5hqOWSrG0UJOn5flcBBsSR/myR9GiFbv07rlQHxc3J+L7a4RMgqKkzZNu+q5ZMMNOXfBPfdM2iZYGnJmHG+JZlFjgS3AkknfpKQjP0z5UPkponQ01FDSLP3pg2/Oty6bIfnBNpzzbSDwUvP4EatGjMkAZ0myyzBbn9mxvPn+66IvlMnQr4We1LVQGnzG7kJ5U2UC7jwLgokiHOA5vQIFhsfOnOp5WssbMbmRyQCK5/iRHMC0C4zaMjrgo9UmjJTUaeD2FNq+hzZczluqUQ5NHEu5fGd0p8VlS9UoKw9U2aGalOE0hlChmiz1p8o9x8ht5cyv6LDQX7tGlqXtAXQyzocgHdfKpHrYbAVE2SC2XtaVS2UZX69vFD1w787e8f5PA5gG/rUYPSUxkxvRYRIt1TY2qc1wPyAjktxRXI49dZjy7Y1zvGTwEXwXQBk6g2DAd4afUWJ/z3CNAnkwUDlNLikdMLYh6gOicnkf3fp7VNZeEiQ1LxoAUTTx8tdBc58pF2KUA2+14QQkdvIGrRZwGptGwtX5+PIC5Pn5jT9gFPtn3gVVyOZX8QCZ4IcC4dUDRaIFdnmDkgIytLLlKSXwj/DXKuyZwS6APdLAyJt/5zVpMQM/ueSfeb2qoDG7JHzuxWfBV4pkenhYYZK6NHTjyUy9PWkGgsCF/xs9LUJFVtw+VfCEo4Ce/UFmWLpXQXxBgQAsZgXuIk6TKHecgj5ZFhDBvhNm8ftSQSzqtzFg8oHt9GUYy8nwGMZcJ5XBkT1g/Lho++ZOpm/btHdiokA4Rq7pOCM4VmwvwdaRLgCPygH6QWFH4rizYifD8iNzZpeuvee8wiCFz64rZ9NailR7lfk6iU8tI8xCdttlIpUzmNdOJbPzOiiDmEE9ICi++w/JDDIO0T3Atv7O6L/p6x/sGmNWkoi+mGkAu0iHyDOIRE/IAJGDgM0k9MwELXpP6e6GF9h++dVgcmChGhNhNkXmPvFm51BShn7bX0W5AIol9Yete+o0PKA5DK+Yhv95kYzPuePL9MDxPxcIXsug8BqolNk7aUDY9AMfyb4NDZMDguvHKcHSM6nRDl1PmtKT8cFMUhsIqUlVU945Z8XKoukVUOkdyOy8NNz2piBfYLsrXOiAA0Zq9+R3Jr2wk+VtYDKmiiYeu9pfvq0Jvwx0TyoD0d+ZHd3nmUQHX+bwSWPb2ralUtseteaatqa9OGyJ6JVgz2Lw9UiLGR5ZF8sNai6uLdo0E6VHMcXRMShtJINDApIwq4pdsIn2iOMwrZqHOc7tnFERPwLAtpkBmuKtUNH8KtU97NyxjnQUAGHp9OLOyci25sOlURnqKcvY1tA6Sh6M19A119AV5Aj7aqlNKIKqcsBSOWHbQEbq4M5pDsTmaGg4BZtjjIwkqOz/mTyZnItIHK/xtip3si6Ohq4AI+pKo8izkK0lov9wjzYYzAGjxpbN0aTGaCLMTgDHHwv0uEUb9zwneyc4mfcT4u+Ktzhmz/HTzc1wr028rTd/BZcu72lrzXdvkHgZZitH7Akxyh0cehEEVur+CI0YWiOCldRujFPQCUbocl83lN5eN32AezrABMjgGEN63NMl3NMlfrGWcE/HFuIcQUilNZ2sJPsa7RqB/BwfpujekxkIYKjNGrd9esRq/J5vYnu+EbyzYoeHleBbYV/6LDR/fAj2fImy467e4RxqoqqdPRzKEEueXMJWi1b/Yn2PmDt+JElS6myx1ZEz6164uL0mQDjyHGk4zpIw8nAZW66M3ZcvY5eRQRXsz0FLz2/rto68qcVPLPL2h4wQUsYha34XRQ271C09vSJ0ZrnQQWG+hUbNB5X6s2A0NAtbt6O0/9OlcTHI5YO72mKe08teGfaJ8UUlS6tXFeZFdJMJ8xo/a3cxheX/BoK4Ngo25OpTJhBvk2Diyobqg4vWno96vaP6N6Drr5V/cMMZwErdPsls9W6FSW3fZ87PaHVfWYhfUecWNkJYvPFYczzXzXlbpqfLCdEhvi85XRQC0/1wCQMrXLYki4osuBnpSxEWCRFzDPun1jDstzLIlVJfCOFFHA690Oxh6T3Umn2x2GSoY7Ue5eVy7QhVAW6IuuINS+h5AZ1dYKyr4xGBU6jGBsvL9aW/T3o2GsNWM52ihfDOcibUdQTVY9CjBmMtQA7q6CE+BUwjScAv4D0dQDZfANTOf3qCU8q0/mieTNH5t8f6nU6JbNRl7GfvkTnHIsls8iEQSdYwcyGE2tcgcowCV1jpbcsE3fRKEkPNAMTDjXMsS6ko63SyFAjGlgOom5jCi2jgVCZB05RXCMKU3CyJvpGExaEQSR51Rmyn+MKGDK2RATHvpnq0nZ3sVxREMJnpROynlehHELHgMihd7G8Fte9uEpupTO0aUpcjSZjDNLjmuMnD9aORninjHD3iOwPbBTjR3JRi4xHFdlIzG3ewk1abB9UvXzf05xOO/j7wof7sD40TDR8roaikMDJSTfDq79fp4OB9wnCtgULCTIrgqb80oFIGoSou2OvDFwtT7Mu4rka+G/8ymtF8xcnA6ufyZBb58udGSZtp7vx5Lzp5BIeuWJjafmGv4/0BJGw4qVeIqLoahmi1YhlCdgh0SmygaOy2HuO2cpTK/ss4EeD01XBiFEHlBpjDRz0VBCeJytPbFQ02P4RugbBGB6pj6KkrjmfjMD6hewgYpeGKj1rJfUBrprlok5KSeyTkVXlqhYZLZhD0jPp1LTMAN1N2EaysmKdhgoBHfRZeFVu2cBLZ4TJ2Wy0rw0vhXriHoAaBrGDg2Hh3+4iZB2hAs9A9r4Aj6wtE4cxJ8tkfM60ZtG4QVuh4VLFtrzU0YC2IKCJdGV6MkkEwpXM4e8nuqx8hrVYSiRmWcqSCrc2l8rTqzS9nDELZlPP4RdP+bfqAtJoin5TN//BeR6cvjJLblsawquWxK6m1pCK6I0g6F65azY+vIR65mYZ+PNd1n/53a7JAhbaQHe7J4IF2HERBgGsiRZSlm8J6I/TBGuFrs4hUcFYcrSZawkrsL3PNfFDTwRv7Af5ONjRmgxKFXDY8ZfCMzYivppJAJutmwbxwKKZc+CwITIZ0hV1TPtdmtbeHT+H/fuRmhqKucAcICQaoO0Cg1F8Z88laNlDChtNqXzsLh0HtlrmCQdtcYwy5sKixrbHHDLJjvi3HqE3W7fj2dLsLa4jDwFQyfykIKQYL6lt7X0KZHw+rYTxkHCB+PBznwvmEAngc39kDkXuGGzxjlG2rRtBhrZXddprrRoNW3ZUB2uMw4XXSSmm/Bo8725vwuL3NrIsBS3czzyNnfEzxeKbi8xIGSfKIuxt4k7mhMP3Tr5n38MMsxmF0i7QaAMVZHL42oo91ZHhETu61t0K6pBzLSrlVNiDkl5se6G4TW+gUctueHUk7VSwNxjfMhq3rx01nBX3XAwrkFv1lZ3aADP1/SidE1fzzp4IbwMWGrONhDlMOwLoBELVcgnwbKNTvsFsZUllZ4e1qD1ft4aLkwcFV19ZAWSdQALg2oOp9QG0g40bkKFyrOc77tZ26WsUlTd66m84fZ0/czi7gd7PovjbqkicqPh/H5bnbokZ9HQqNTWR8vR483GJNJOradW3obfL1WMcA/behZn87sWZtbSFf12Yi7XDJ1x17pK2joc2NG7JB1blg+ysPbbuFd1dquUVHUC03y+23ZKQs+Vr3NpXpLdoSIzC8a2uMyG5DH7a3eGDc5EJ54voZmvMLs9ZyC4o230QNzMUe4m/D4L6N8EBpmW3MImwVnsmIZH6McihwFFox5Ctxbcfl1JKXnIC3NpHOnO7g0cqNqPdGpKTtNdFE0O6bgiuLcQpjEuR+1jJL0avlGLIei92ecSqLXMd45US3tLpWeQN/v5GbG49CL9/gd3CRJemBRZZfYXGClpJTlps0ay/yZLP3r7IKOj0P6yeulrg0qh6g1+kSn6N2KNWVto5WsSMFRd+D1HPMHua9e9Mc6QLYkfC9nUg4C5lKf/7BNZ2cnFLb71We8vQLnKD0R4eKE9wj6Bs3XQAkbB3W3WpqHRwcreeFBMqa4OQikzWauA60P6AZGVJgsVT+6rwEe6fFs4e1CIdJdKLA3enzMrvYbUY6aJv7ddB4Rtu4BeKQ8v9hW5p6hJlwe/wdqB8MgiOB+8pCNCirjzi2XRHzIcV1DwWqG4uwCIQEnKrHxhpNQCmlVz4jHSCAywfX/a6aQNmnbEt+Ssb/Vy7rn9+/rP9KpvvNUC13/4dOfUp3OfG1gaZ92TExg72Ry+XOanfbx2PEQ7HlJb0eClSCf6Czadwjzm0eh9KLkMcDwqDyV+9bjKVUYCiMmic4ccaPK7Ip2W2uUkScFXEby0nXEzoPjGbSd8wNaycL0lpAQzjyLtDMFSkiGrK2qSCy8PgONnYpYpIG7aoO0TxM1WlqjlmimAyMSbWXkBSORN7aoRr90Q3LISa6Kiv4aSy0hswyVwMYmsPkNZjWHINDrq9BLkEP/t8mS8MF80a3bGSHy6ts3cBreXTDs66faggcwipqFNhT0Dp3rqXHXOdNuM4jDbWNp2W4ZYFuTLxgHRopGYxg4cPDt+XdihWbwOC63JHj1O8KqrnuMJPlxkC/G8fpYY8xS8aQqnqizbvSdrCSn8UmFqdsfV18FNEmFsQSDZO+hG0t9ryg9W74QFfbtnbwQHS3w3FMLdQ7mLADSUg0+rhKSpkTMWc4C9vYycNefd8flkvN7cHEbatlzC0rDSCUpMwGmlYjacJ+tfTLYTAu8IMSCk3V2bbv09mQyNBKV1Fp4jJe0u/5aguZcf/gNqQ9vwCfhgV4zwImvsae7xHjBBDzQAms+Zy/oFsBDUNIPw5zYVK0ePUFdjheD6eFc5TMZOXsV3pMlzRWn2R4MO1k2p9Bpan2ed+p+85DmRmB3BWDcPIyUCC8WQomgAwxlczbfzqgW4korMquF81mRYozMXz8SPkRt5JDJPeWwnkyQCFXrKZzyBy45nsnVoixsXUqd1hNvp1sTvwJLTUGXQfs+ody5SrwM7LtZdhLRwHELSXaFAHH1muQKvd+6fJIdu21gQDeKKXd25ROJw6XEpVRxdf7tYOcCj1UHWe8x28GL1FDH/f4MYE8/jYdN/s7KFbuya8TOVhq46Qy4KOCcBAPpO+GoA52A44fz1CoHJRyDPLCU25O8AbQugF4g2XH5gE3Qd0oFF1J4YrG6bX2sBI9T65RjNmciDADR+13x+pIubWRWMrR9w15wNEpKEViwrUzTrD9x8F0nQOb+Djro7P+WBfXpd5mLvWZeoFi4o7+uyxYkJcM9nHJmGkmF6azTf0ut9l16TRvaTZHEeG4bi09Jgx8+FDI2OxKtxMZWkSXRCLIadf4Mnn5foaZNOM9v5KOczNMiqu2MqYJjuz59/3o/Cv613/wk/d++pm7f/PFe99y811//fzV+9bMGd0v3nXphW5dw37ir53H1pqx7abMdFbEZngLDJbnC7lTli7hZ+GY7Q3MFuquDdRdoSMA2wxREsLpdATLVz1ZC/K5Gnuzan9YgvUMzUyhcfgnzd/iEYqFhIvoqCExkWTzl+MEI709sbaAYyQLnaKW47JJprQPB/ubf4I2ufHQIZzReELlxOMZ5aSVbFj4rSZDWL8oiX87H+P32p0Hyl4/bbc4Tsj6t5vXW3zLenuiDg7pKt4xS8MC9oTZf/iDyGD7YvtEnl1ws10tbfKBdmIU4g4JjsnO/M6zC9nCf5UhqfROf1gVSEBzuxW9H/OCP2NvKyQ37UFzNU2p15wdvqO5jNS0ft7MZifzAzcUdq03569m0V3GNTMahUC3Zl6zfQpoVYJ02dZWCznOg96XI9TgeDGW7d6gZWw1l1G1vq8pLrAA20VXNZ9woVvYh2vccRk2f8bNVQWcXwMkzDjd7lJNwDm8oTDsXNuM8lpMZe4OQilDReLnDYmkQhyHKcE2V2ly2wJBkHhl1WlctS/M1XjdIk+7zL3/DZkxxfImktuAJvNd2OySEIg7hao+clSBKKQbYhTqPziM6v+R5t/wRrWrgArqkqGwhRsyJMXrl4c3FPpVlteHXf1cGgm8sEv0ZkyXeW0w0c8pP7gynfd9b8AQ9zbKOiaFubsSiBHmkyjFt0GiQJsGQ8dguq1IqXxLZmjR7fyMPCkYo9oK6fAp/rOmVoOndA4vXgNGa7c8mrZlWxI30jwtRpgbe5Kz/yN+Nb9GphkNhiTswURu0DJN80kKMsZXK2fQtj2zzd5onnG6ncedjYFtrrA023FUjPnZBr4NYmyUB9pRx9psyesTZ37cS53kOHamU/L9Fa2MuyrebNJvdDI+yL887/MqgVyqxYeoheywJFUapSS+TYixO2WFBw2o7ZBvq7XZB+iGCqejnEKDb0m2Be1wZ64HwF/jZtSADftRD6yDMj6ZdXBtHYZsKLty/BB0W7MnDLpjchxFHz9wjBVLAb0yelP/wCBdVdNGsUcbLktoOBnrgDA/mvTObh9jZVJJ6hzMhJEDZwydLz0V/az3f478p1uJj0lkE+lDVP5lY9DtlGkbpnTKoqlpv6YywFLRNh5drBaT2OJ2xi1Kt7JUokmRGiTHIycItnLuR7zy4cj7nuM9OrtAN8An9612OIgOc6H2UR/2rOkPXd2GwoM9WFpmLbzbHplIzr40gYsV200XAGQRKBu3bzgT5gcPB1l3rKoEv6oROqZEEE/YAJSGLiFKgQP6QpOZRp3TdvOoNXAGlC4rsi8olSlX5mbAC9ad1qldiKXKhl9TQFLq33F0J+vwnK5V4kPfIECVjfMIS+r9iUNESMwCYoTjkUbaZFRJ8KRIE4Bjj+L9J8nO1dwarWndweZJw6TEdezxbC0aWjxGPnYY9QdcdxkA1eEVJUtP8QU10uYv/IlD/rysBV5DzpM+HDfL6hIUesr1jvhSNuRO14AhaMmxhXQJ+65jWsfcyYCV//IoAlZiPB1GyppzysdN4AjpB6TdCJXQB+QS7QDuotauOs/i9Dtub/XTdLUqHndmMrRa+kvtMSo/FEUn+KkP7zIs2D/iY2j4mOoqwB4lO4IY/4H/SfOJPxa8ctkWEh598OEYLhVi/7ueL1xSPvXUwBXvC2nNn46P/S3/bc/JpZs/jdguaX74vZHL2PpHYIxyCXJ2uLgciqFxcRCiG5jxVMQ5G6cS8WzEBhTOwlQuZfMkKh/3gh14bwevzxOMqVfzqw+7rGZaky7+f9BZS2P+QWuFcvLbe4ZsPHJOw6b+F51+5PM/+CDaNf+4CpuOvW5HUgSkkvoAXSvX86T+gUg3lM05Wku08lvFl9fwdJH2fsiJXqDI4Px+1y/Sup4z+Rsm4fpVESlvGZXgrWERUWHQsP3pXa8/tltfzbXbfbkJNQKFGqFEJk14U/J1CSuF4L0TMSMXUx2KaVzMyGKApBC35uImrCmI0xLex1qadgBABY1F874IlPAYqsO8ebc3YX864tBh1Rg7wvQHU3by43hVsWQpI+fXsT5sFIWV+p6kj9loAZzQiSO1UT8CeA7D4QfZqHwJkJ575SBdv5BPHiikeol2paTBIyGOiQlvRxJTfXuPlO8VbJ3MCqbTOdqiVUr998ZJ7g8/ZM/vcmLPwpkWbFDhX95cRFkW6At253rz3n+bOP+OjNd/ZfM+k4N98R1tsbxG9L5fB7NC3P8IbpPOf0NjlxYcIFOcFL0yKdPSsKEKsWRofOx25ojGgSAEobM96H9BLQmSxfApPHFyhlSHQkaHQppDIWv8zmNN3xSdJ8XDaPX1Y7sCUHiDwtRftTeOKPjZw0chqT3mj1/TFRoIumCh0b2fdFTUVhLQgLEOlxP7sZE6ZWY6Qn7bggblU7v4QiYDeEaWCXWyl/aXUbCMwsqwKFqnx40mllcAjQkNwEZ2VhEVfeZcEXnHxjT3e7im9HBN9JuAWT119xmL0AJ/gw9xuce9D7FpjY3a7yfauCbP0I7A7WtwnKk7auQbpR7JmSEZT1AfRncqOfCKk3PJHanFzhJM7db1QW7stAjzEeWWrLr5lSXxSoJyY7vOrIVzKyspD3QvhHiuVKzaMeCZsGHCb3Ui8DzOHmBsDAUBzsqXVhDGFCwsFBgghbsGnPEQ6Ye8M+dcCMbtYic41RC0q0G7rg/a2gHQRq8YtHQfaH/pfwNoay8N2ugAaPkrBS2CixPCK4Zo9BIQYRAGaNwawataFwQomTdhcMYk726AcHAR5EMR+fUiqkD5IaIrETUyPVIMkBRvFd/cOGeT3hAa6ial/KWHZgYDzBep44oJA8ovX9Enxob4q5pF/W8Sc1I8z8JdGk47XRomng+iGE1051x8IgXmf/n1H0T0nS6azMKncHaIuyy4Zw6m+DFxRbxHkzB3zu9QS0gUx7NC3otfJq737wbJubKDFnH2TfY9W1u7hh812Z8fJ2U02RfBBkHOCy/AaIXW0KEkWsKu/MrbF0rXr8OEAL71XuuVL1tiKc1uE5L2bTuLuYwfOaUzhXWlg4uf7JO4R3xMwIB9svrqQEh1KM3oUEhzKGTNh+BMkaF9nocfMDvho/KjowL6pRecaTOOU1e4AXE3T/2bONJ5Q00tN4ZeiMOVeqziRhi2vIihhWARvcbVnb7tciPBXBcCwDpYSLj0v319mO67PkyZ5T4EU0ZbQxmBybwNIg1PXpVtRZAEYiCmilfY68D2Vqxa0Me8CUYWzn77vKpnYyhoxQxZ+y8j19iLYAaelMpQOz6bAx3coMoyVFktq7RY1EbUgqnjTCEUMTQo3OTnXQ3byYO7TOFqGc7ehSR+uxnbuvFQrB2AYrR/L4MUS0hSg6SKIcFHW3Guw3hfVp1IFeAiGIc3FQGM0QEw8kNgjF4BGJ90YJTXBeQHXg6Qaj8gcgiOKsDBMv14jAPzeXM4sDoqcOSo7iiYDo/3My85ts5cf2zllvvQ2Mo5tnKOrdyPLQ1Pl2PrvDtCqWxZCsWpFIl4X9G/Ncu3yg9PHxsP2RDr6vGJ4rqXiXI++s5AqtdeicCqpR+YYD/wnn5AFYzIAjMo627FaZiwq3rq72T/4F99l3KF+m9T0oek6kxXPV8QEJuQ5vtHxvzV0K1LKaUj/9mvmtmLFlqj2Q9yoZXRAiSlUfDLmPnDOexqaGghbT4UfGJnkrrOcv5rzAYtOot+wrHeMUfed7wqa5Yuvbfg7erTt/bhgmUFKtWPQdsD9SVOsBP8NWMwzf8HTK9OG/l3XGsz51LsmZ3FbVmvy5cx371M9Yc1leTLj+8dJzWw8U3ZMzuRLVZf0Kd8QT7GF/TiH/5CKAgfoaBP7ZgCzbGFF/tg4O/gqy05Q1075or/zDErPjtgJTR7tk2CnnIC72OY46Sw+9bhpnwFfFrwliCEYuTgjRwxT2KBzepuyz5z7GXrQp6LyZI5txbwRNKO8HxP0o4js0vthApZU6hsSs09QwftRk1ydoF0NoxpijGIVmt6hR3DD7e3sadBsMi0omFjCEjxo1Umf82JJ0OrkLBqTvwYD7llTflsJqi8HeNmAy7xQvUP+0oF0N+/hX1G1zap/aEQBbJOQ9RY2Mzdk1LEpHY733BszVhYDhnjB91VzXbN3biayIqbC7VmWXcWv5iv1tTtBhrLjYcrs+YdBFMVR2Gc8WKlxRUw85Xo5IGta9iikodpLqxLrMWNfiaMV4Y9C0elppMOaCZav/4g5+bVHW/Vzda87NaJo9JrO6+MSid2fF8jF4jl8QTXthWHiQ2hA7nzZ9txyA1zosjzWLehcPwrvb2j/5Ye8OcVABCW8xQshn30qcuSX+rsLRqd30F7i3IEqHWozFY7ydKa8PLFdEw1To3mjHe67KkWR28wFWgAoe9MJaMBA1XcwRjppzZw83ADH/X8xWwBL0UKGSiJ79SIGc9/Hgk1+D15lEaiNEGfAoj8giafOO6DWNcTTzLg4KWGaWjbNO47YPSdSbeGq6/Yrozx6LUbaD6agrkglQmh/8fbzrpoDS0EeIjeB9OmbL73wtUWStnPbS1whD5/MdFL4+vzV7t+0ph/pTEasFiGGdSfPeY2eBGmn2q3whfWGOpSKzMor7TbBuaV9tg+OHmBhGj/fGqYk/yybClyv9BziDyEmY2AmY3at/SLG2yelbjpTGff/d67L3c7sn1Zssvd7gH62X32QEn1/N9vRoXsyDHLt3Mg387hfJ+K843nn8j2teRHEt+SVwTWoTHEXnxZsA7ne4b54i4nwufvXEIYd1+3pVEXk+vhfV/xh/G8zZ7uFDzr+y57+uVwx1IcaXQ7l0WzbB/Isv1sux6yrLtL8CtBuANCcmM39KDrlHW8gjiORASUZIzg5z+dhB7DMAihhzsul2MG6NYBQLeePQJDubBVh5nXfkTEoyJ5haO3x9kfDOEP4N9349/Zea/5KHe/R0cnjDZDrdVrumQcpcQis6u5W/l8jxYemCs9UKglCtEZow0m6c8Lm2Q/Y4xtbkkE/07i3+3Nx3xJ888zRbI/xZ1MwbWppXti19KlR6VjimeYItuf4g6mqAUo/FwEzhvx73c0H1/mf5z5kzjyABCXAhBM8nui/NdC/SHyEEZ+OgLhVHNpmfvFCA8Mjyt+Mqo4zvVcqNOHY9T/shVGtYnTXOq9uh3jcX872bcalpIL2Z+2FSvOsmlRhwu/rHlqWdUXIgDvx7+7rfRlaUgKmCOoPxigZpb7jsjCpJ8KDWHSM0cnNQ9Mp9JPbHSQHjzj502oKSLgORdw/HRaIZ4ukBJxCVzwnz86+LmNha18vupakM/deXOFuaIHGoR/+WvaeK3+ssuYRHGW7LQngIMPJlJzueUsymCqvyG6A3RC2QUGsvMHZ2fg3Ti6bUGeIQsn+w5GzIIU6nNPwhwW9O20oomGu1vFtUz4lqKmAY/ZURlNCtWitaUUwZEV3CCV1gtrw/oIiwXLO4rzjsDvGmcIZkgtSCJ+A24nI2XIbgUfnZ3TwwrSp6IWSF9WbGDNtHhEoka7b4ar8MrbcTq3ISt05ogVtiasbNdq+o2r+O75eXUjLGlwuRUr71G0vVmTGVyCTAA0bIwbmzajGkBbi9LXnXvCdhxNTjmvh9csWcbAFAaSuieOzbwHJcxwlxRlbgDGteYyBoCdB2Fd6rc9FsfNIaqsaeIE8xfPFSIwGoJhEI8XbmO5DoimtNENyz/QKXNVYeLEp69qf05E0kZkHU9IY1i2GEebmushcuv/JkQ2L4HI5vqITP5vR6Sj0A8a7wlrES60PD+563KXfaLD/gacwLCjd02vdFtHr6sO8B1qyQA4HV2fddaVZUbZPyzqpTAE8SOb8w9uYnh99phJP67sWxhl34OD1zbXcl34993d5jXLok13KFMh/6gdAduRxX0gWsb625BVYsv7ubMrreumfufulI7dndI1l8eCQE6TiHfIitaFGOkdVEieeeFC4sUEYy5pJq8JRtAPXjQMKsNuaaeIHV9R5MrULBldufz0fX/37+DvX9116WV31qAXswFG+dlYirOdGqlPZQxYvm8PqUNF/8dUUtxP99YsH7GIqDlrIy2+4svDwWSn6aSn839MCVht6K5Ne5aMe0LhGDDt9uuTl5CETQKQE1Q/hsYYls/2IROb88ZORDBeiggmV0xEYP155fLhgg9ugTQvtVfUcTAB1+81Lrn4PdHJCC2hVDed/3sLviL1ladfHrl242OLmAmzBy2HXTqGVekx+gXV10/o65ivf15ffU0Mec5CvmDo+qbMlkQW8nkfAluAn0tUQYnIxj8pXt+W4pSpoPZlyovu0DI5AHrybDsIoA/cbX2hIgn07Jxx8j5WDt5EXGV8tXKrhJ82m8eIpfivQl6Y9DWbge/c8a2vILr693CAmlKBu2A7v4CgXAboWmvU42anXFz0F7O6/kdpql66z4UtaSKJioLKp9r+9VpVhVZVXLtJ6hFCTe7SDPWtwRSec5x1Gebe8WJCmpEdGEgJXbI4Omc0OmON0btxdLWMRpyX+iDu1nRE8c+WizsZxzWM27U4ujQGZPkRkL2oyNEEf71nro5TLactgv6QhpuLEukBukofXaphy3JSV06w0GpSwCfSLIEX9HPXw2gRMAqPi1LYWMzdWMz1n3YIe+aylJc610eRuK7/ioqG3kDo6RKnRSal68PIAVre35tfSrTp2eFuhWMJh4dcEwEPUKvWbLANrSEcxAX+d8lTUl6WhJigqrVh4ntSIOJ6sOYB1vwIwkJV+7qO/dYVS9QUqFD0JnpGr/NHV3TQP7EzNtllLBb3X/AYHEHawFGKy5ddaiPobVBVviXNX5U+pm/slgSOz6Lx9FQ3lAGp4qzkWtffAYZz2E2HVliwUjfPFKlBV8sRmymZJZLro0NeR2xD6Qdii+ycSq75UHzPnr3YjBxrzAM9o0ba6gXBI/ZWu4F57e7zbX0IEoKAPQDGltLhCx+4bt2Jp/3fpwwUJdkFsi7YDkEiU05DFSiaazyQj5h98XRaxxpprgZk51FEVr+XCtiI1isuerjlZLY6cH5ZWXl29b4zf+lHP/xvf+mPfovK1bJ7H/rP5+6SzDxjv0ml0kaZmEBxnqaJ5/qJ2bP5xHu9FRlnLOjLVjD15BGn6Z7YcacFOeagOc/q6r+VpjmuVXsHY9JTYWxaz3/0XKstmVeS6TjLzgUbRKBPx+qf/IsvmHn7BVDovdN3fbNDBQ5lTrQ0rJHEmdFZk8TpWTrrPn3lE99lIX3qAlfk+zhrQ59HBogS6beFN90sPdoSKjTp99I6Jw5Y8QX6a5PapavQL7r2/eKf/fWf/a3f+cafuKSdktRWHw8oCtulD64+ZQXgQwYXrj79giTPn7+qmEA/Y66FUXvSCBJ68gwOdz+SZSn8sD8G6qe+rK2meoZpdrKdBd4D5DXYOJtMPzoJtGo+2ubLE8SWW86XXWBkkKnn7pzg0nKKTTiM0FxsCQDD27rSgrvC4Vnwzdeu/xQEm/1LWEjw6Ecyt8xQsB/n33vuNtAh8OAB/VugwracwK/slxT3pQyHlhj6LO85l1kjFJ1hTpMoWTTkHwfrBm1ih/85goXm/XJ4/enw+hn/iunWDek7bPnBYdM8jRFBiWbzEb6Ttr3CnCT1xTwpOfcBlbzSl+ItxdU9p9mfd7lTbkvawvtksKtaOIYp5wlj0FdIxASFt5qy9AJfeGeFFLSxwuanqD8BRXF97HRORyZZ6pTP/7OpgUvqtf68BvPt/Owy+tjWsnE9vKRhxLlwBQjFPIuzd13bBS+DvVAkuFb4tIQy/4LWK1a4NzPNFmYkduFjyxjQLZmS+h1823pVdhpv5uT5dn0jSFzYndTv2NxC0Cbgrjq+1sp7RSeZ8PBVpMM3VrFuoFKDFxOlNBoJcLiBdKoPhMjSNk7TFOubYlprs+vHU6ytjRhIB/8re/8CaEdR5Qvju9+9d/feu88jyUlOgOpO0CAoUTEEREmHt6jgDOMwc713vN/43eu3k5lLIGa4cxNygABBUWOIiopjQGZgNGhUVBRGozIaFTUqaBTUqKioiHFEjYrwX7+1qqu7997ncHioM/87aM7uWrWqatWqVateq1axFIAFbq3FZtVYwsfBFmsULeaaFtPt1XjU7UXsUDBoPEVeAK23D4RRvhdrNTVzi+GJyndjACstIvVlVJhBOuZaD9OkLffFumYYNxyOqbNDYJK4z1OKVbDGqvDEkupblVuWDlSXMZdxoosm7OZG5wJN8pS9KrMkrrDavOHZUJXG5vXz911Ig5rwws6v/fLlFFJWcmAzkh+E0UPsSW+2ZfmDttjx7HyeyOAVo/lSkGklb34tN8d+SxX2Ol99x2bOiw6NepKfbHhIOio6wVjFFHFmlC3PpzMvuVKP4Uvw4tcVCIiqd1BlJNJF/PyHIDdvaHIdIteNgMq9nuCbxMy9TPFP33rlsBSz/R9ezsHoAochyRtAmPam47Bb4uRi8XIjc8LkjteJo/mO7cxvRPx63PPbczkPnXoBUtq1tKC2iVzn1xBzy7i5SZsGX9xCyKPszmmVet75kypnImXxe/SH2bRvvc80EbHounsvk0baVzQSox4lSmoP6hHkr7tBt+QegwSN/WWqHuV377Fc2TsRWqDY5t0Ge97JdCt35UZywGnjut5hznY7a7GxFoyg9hx7tLP/WMK/AW7zRTAePKZtsk5RL54rCTa2J8Qe+iuIzlorrT/V+xObnV7y41cTsMKC9/6ozoKGahHmFU7vKLuxnr62yVcWU+5UiQ0gBte7pbC/qOT09q1VocEUiSqx00aWEUG/KDUP6VQAF/QtxO4q+8H3Pi99Kt9V7QcqIHSqwsYXoftwhmWSy7+gk+wsknA31LHv/NjmGjm+ht/z1osF/loe5APYEZjI998yVY20q53id1+vcir2o0q6b77y4tmmC6vpdl436/Ja1XSf2jnrdHE13QOXzJrOTjXdW3524WzTJdV0X7l01uWNVtP9fMesyxsvm/aXl/eXNne6VHOiobqnvOVQx4dyV0Fy3RVifgQj0+ss+rW1ONGWHSuz/J/+WSuB7YVMQhUOyFXbjp1SVLe/eUDdzitjL9tXjUX3v+cYymEucUzhiNQ2ZGGes80yw5YUC+K29BG3pSAumkGCLWTv9GW/qZo90iD7qb7sp0z2Mwg6Z+/2Zb+2kjuSIPdz6pnvb1QzH94bJHOvL/OXVTJHEmT+0nrm+0zmM3QZztzvy/ysSuZIgszPrGe+x2Q+Q7/izIO+zE8sM9dJcCWilvkuk/kMnY8zD/syP6qSOZIg86X1zJdW8x7eQSXvZl/eiyt5IwnyVvW8lc57hm4seSd9eY9X8kYS5J3U80503mVnuvDnm+vdevuxZJU6NWXJnfKrju3RAGzHK9XlRzs8AlGQxmUMQX/Sbqx8uPivIV7RWzyebcCA1sDotAUD9XLM9L3kDnGKZ2Popg6xm4Og5CJN9McuERl88NlM9cd18IAEP6GDD0jwNh3cT0HMDFPbZJX/q47bfpzM6vjVwpVvft/3b3/T+75/3/FHO1fZYgqOSQh+98gvyC3J+aTOZdtxXOCndPAKCe7Wwc0S/LQObpLgZ3RwioL5/mMLY/N87zF04Qmrr2q9P6uRr5a0t+vgVRL8nA5uOU5aZyW1zoXYGREnK2VTfvriAa1plbFfHZjCRtBM5jlCO7rVtoON9gXFfD/De8YnYAdOv6ST3+zI/jFm8mHPLNN9cfUoDqGTf2YZDbVbczz10aOrvQr7XZPKw6ZfyFuzuSr8jGa+4qIyWETo585wVcPjndvdTg9TnibLm6nNe75THwNyZxmNAuwnwbsRxt1UwG2ObPGIdVbrxZgxoR30u2s6pw9dWJulCe5fVora8eVpi7KAu4FzjCa1xw0tgp+XhzU/DG70x31hhrg9M8R9sRr3KdsKNpq2kiUeWobnBsVyCaLPAZpDP3tl48+ARDV5z2ul69nomg4B9kjXdJSNrpm5yZfK5yAtTJPZJYfid0yxjEF7K5cSvkXP1pNbOQfwXQXJv+j1EyH5FPzFqxGnPTqcoMFecgBg3l6hwJdep3E8mZHrnblllAAyzikJFkVlATpkiD0ZAKlB8lmpECqYfF7fwVnS4zvYstYu7nw2ou+4pZ/mfQ2zWNdLTGfIEjO3Uh+UEi+vPhYyJooSH+7hpFs+kPwT0Nr6motekgayJFWBVtJ+/u0HNkEt+/lnroO2Tl6DeOMpGI5RqB/dvkycSGlp/Ie34DpL2ppmodnsjMTNhmU7rucHLf4vbEU67cPf38Rp47CAXHyV5BYHBeQ939M4fgHZVKTyCsgn3qhTuQZykYY4BWR3gWNHtRGSh4nKuAYIOyoGn28/hnr+HVxhzQ34+4/hpXzKOQXNK6MJpOd2aWG/NpqwWslayRWXUyj56as1SqBszAd4ga/oEo4IbUugIp4SVNWQkVsKOOgEmZ/8UsumtI9ILZB1DEhEA0IM9zUK1epH/2zjLda6RKEmymYZwopy4/UkXl9ALUS4jDffq4/NAgnQz5o0zPFxwZpV5hVK7RMM0aeYZ/mVtnUTwxDliwts7axc/IBpw3nVkdMxBRhJuQbTd0KpVQeqvoOHUXO6mtdGK7DFP46R8BNHxetyvn4jXZfR0yToDEvTnBZ0fkt50qB8+Eft+RHpmtE//XFYZc/IKjoW6+cUfQoUTHv8jNKvZ86eT7f8e+QTBd4LK/el24awq4x8QrlWZvvvnnnWjMx7moWKPPTwya8fYJ7dq0WCnY+feSCnzHb2zHuGZW3EvTQzyZAd2cOwK4eBENy7AOEtx268PkXVo8ttGxcWy9cQXON0sXTRY+UP/0Wv4zcc+s9yIpz62LhXeoocoOw8Fr9oqvq9JPxnIDALbogBhQBelnmTZaxvUvx1Zk9mgQowE5lU9O0fg1WBq+g3VK4eo738rd+QhZSY93zuMswFlVvurmnvKO4p9GOLROntRkrDztQxZiWlJ4nXBDAZuaBVeRrCkciVjdQ1EzqvnND59LlyI8fZKzfKHO7JmINS+fU28LFVquz1wMX/ALjB5s1CCrgINjL7LPaCaG8wsxYShBvP4jWl8lYizpcjh61ocHL5uGNDZmPZ9uJJKUGy5Su/sgkKwE4C5wnaPvkqRkVsWrOIKE82eYte42NO9mUZrikkG778aAP7PY+YSuWe3a4sXl73g9rmk4dx3Cu2dS/ivEA6LexOUA2hqdxh9YXqo51a2ZHu/p7mcoAJXljUOm1qDgaYb7Qos68gVaaN9LALK8urlkKXcxmS2Ruuz2IKxqeSSKnoxvXKPWsyi5KvCoUBY6lox/oM1IClL2qjDfGFJUeAqYx5sMIjXXOCaBPK08MSCY1cMjQCw1yb4ztOw7bsqKDMJcpKJgd6V51jqR3bLisG5UkZWGlhcZfFevUW5RtRyyIa12eW0YeupHJJWGJHG252quwwVVSdXu7+ja5oBGaopkBQU6uSNWfcVnFyQzErayd3CuFR2qkUKS5KjOiKlr5AL42+VFkaLRARklbfwLZHRY9BN4qUU/ZHN7rLtQMy7VCQZ+hnvzhs2n8MlLc8PMse+82PKH1XlL5J2AJyRf27ov6NnATAEp9VypOXlcVvb4QBIMboz5p4W/JhCPmzLXHFpBw9EAzFQB9MHeOuVDUwEDSgt3EcvopgAX6CciAQOpQn5k9F+YN5l8/DRiwACrWB36eSJ+ABftjyBuZ4Dxzz+rT9xHKo3c+jbUOZ1K6zadsTxqf2ME5tmwWr4C43+pxdewPIrZyp1mcaepuFn7U3CgnKIGQNlDa1tmqZt5WafDRn1BI3B7osXxN+3iSoUL7MV9gzknJGXikH9TGlHaKToJFifukZuazKPD4Mx+oHPVW1Sv3TEv0jpdrgCuDNQX0jWqaFtKWWSa5HnNxf0T09Ak5VH3isZqPa0OnvqPVV+7H2VXtWkmg/Yl/FZU4tAmJ37JZ9dSiGkcHwUcigPbyv1vN+/H318XNoeF8dZNJgX33C+DS8r86CVeirsFoJN8ruS51lhifBzOyKkHgadvmGXfEQgWrrpV9diEqocELzpaliMCQG3ZjXr4KPLfzYhiGBlDeMHcvNk3b9HPCji2fkgDM9B5xZccB5JA7cImZvYR8LNDh59DxwhvIAGU7PhHvhGll2Rl3l6J1R1EfvjXqDe6O+7I0Gem80xNyt3Bv1klvLPMLq3mhAwcG9UVBe3Rv1y71R/5H2Rk0BOuT17Y0qG8reYWUfBfzg0uro65blaAN28XLMy9XcWZPaAsVmvHNGNW79GjE4cwoj1/233TjVAMcaudN7aqOh8GWbL6v4wg+t86w15wHS9yc1jx459Bxt5gjN4FW9mP5sSkfP4rAS6SQ6+heH6gYh5HqEp4lEYvfuSErnFNl+UqiHeK3Fn3XnKvu8zEYWmAXkUxO9I60Gy0CwLn/IWUOghQCdV1ZUEMdLqFNCkxLqltC4hHolNCyhfgl1S2igoQyBDRT6BPhxPmz2gtNRfVSXGKfbz1oDieGZcLXGwkjc16YaUaXP05miD66VnC3JGW9eRsjoZDRGnWuOaV9nmvwyR3IcKMcx5dgox0WfdqXV6RUdZ030NVsMwa3cPm1YyWLRmLl5sm5IczlDmstRbgkbN7AyaaJh3FSS+bwCPy7xuwUsHJKvW893sKlQUeJmtammqVqDq2by0eXVi4tLkgdJaNRJMKyNYZ63XKzzoj+zrD6H59o9uHFbLh9dkR+Q9ZoPXMgSlL/xJpwP5K9D7e68kA8ybriQ3VBvmDlX7Xd6qTGuLDygbzzaXgJW9TujnqH096L0L36yWvprrLJ4yTuEkXQCc3OTJSC7xM+aPPlU8SjfEGMAWKgzkRvZHJctvM85muxqrRnoeRvoefMHpir0PLmkwuShcy3pya1oQr86MJ476/DLF7gJKTpDq2kAj4Clp4yvllhNi3mxpQ16c3tdarPNeo5Xu9eklq5PIvUZV060SxhUM9+mX4sLz6jrrGnbgj0haZUQRhxcOEPVf4eqf+W2S8qql7hT/1jHfWgG3N0PAlziPjyIe7/HZ6D9dYCUWQWnkswWg1uHepu+TisxKvMMRF8/yVyqG+Im9KbvIUhkGXNnPrEO17IiW3STtoSeUN6qjDoe+hk7FqSXBfyq+gvO45dm5yGvYCB5Msvk3eHJw1kmD4YnbyC5VyT3BpJT4tIgWvkkC3q/6gViUywXtwBYRWOqNZF8XCx6J3SqhSJNlpYmcN1RpPgcrfYUhc7Q7WakHZz2iK/OKn29SJzi1olHeB2md0x8SS8G6fOLuSIKo5GD21eq4II2JtXIsFvIsFvI2mbo118Nk0sXMlzDvXwGXMhwFfc1M+B+ce9UDfe1g7hRAyPsOPHypIj6fgjeILQqOoSZx4BkFa208RFj/ssoq6KELfbk/gD9LKHkFTUUHacV9OJ2w/S/S0lJV/vfBzGW/OqbF1XooSSUVRN5b0Smbw8sV/fHYXrFztMzCif1/lpFQ7rDVGeOdFT3NNnNNO8pYb1muutindWSzGMjd/RPZUN2pHTR2YCtohASEQOrvMh84UbmreJ0DhOY3CHbEUhep2batBAonf8LhA64udiovHVFF0qRB7utdgt5pprlijubstF3+AnQNUxu5iKhi4TmzZlxZcPPRuxEGpNjwJFxUvKu1sTalZ2NfGmi7BTc03pL+4VeyyObvn2i2UqfrphGYce92vNyRSStS11d8LlCks0FC4satVqVpbmStEwQ25wJAFV6kY/mGuqPTuqf3g6VVctcOLqG8nSQZx9frKgfHYUPIkbgVqTcGQasj7Fgf3VWA9bHZ8D9xNfqA9ZtM+Be+rV65/rXGXA3TdVp+OQMuP+8q07DFe4A7s/D2p6kvuehZyKVUVNfT+H1O4Mf9ziK5vrPoXT4UCrcmXY05TZJbTOoyrIHC1IkEN1vrxJt1TilR8DkfnE5yAkw69M4Ga5d6s7jUphQOVnmEPHyDoGrOyeXIiVknnJ4ZxgtZ0P36c6bT5AiZ1ZMPRisORff65gtiFp3LrQHaoktkpjpPAp/lo6wwDYqA38oNS81PmiytUaWB8mUBVjQyx3MbzNfOeAc/eQbz8NOeUO/tgfQKtq/gEoU+lNPNUXy9Ct5NvMPxLsV4l1DvKuJ7/PdrDxsTHha/4dyeQalPc4C0JSPIkH4aBPEjzYBNtsqlS0aKHW5XVJbe2LrKdziyzE6xYBQs5B0icq1qqdsL7PswQNvLWq2vrIHAbGTL0PiCYJMMPNmic7lvQGImjp9MrPP40G+0XeU91bLtulofaAcMyqmsv/jmtLyl/aKAm3zLE8JcZ4Fy+dL8RtuSj0tmEAzlEqGGOiAlHroWR5bhA6cNL4X5NkXzMSGCp2PncYahUCyqrStbKwUZt54Kdu/ETv9S5S/YTjNN2I3tKTYNhQ7ymaf1WJ2D5pC03QMiWsQGyOJi5849YbFI8IfEmFxFITWzxOSXOWR7J4LMQW5sBIpyXWi19iWM0juwEwUKas7ZHoanbkl8dgtJC3MOtYiHrklMy2CpxAF4EhLWbRWT75uECgvQkD+lslOiwsmYf1km7mJVcxNrGL8/oFL319+56bBsd7C3KSGe+8g7med4fyQ/0279nd4tdY/7XblbqnL2wrlvDv2tcsjcDUOEHBkf7u/NQNgyC5iKJuKUp7er8X031lRzkBkccAFad8QCbaedarFoFYoox4COqxIz+ZRFDKk4QHOSaaf+W326PsBcOyRZ36Xz4B719RlNdxXDuIaBtnREM5YzI6McCJGGiYl0QdcyxlUojM2pCsNOXT9hNG71pCsyDyekzCtCCjqEg4aBW0gJFfVnh9pFX1sQxS2jcb19OMwaOqyjWN3hpZ4Pzj29h2zaokPCO6sWuKDg7ioH2StUZU1tyJrrshabX0xu6GTN7/XS83dWcip5iI3NKbVkeG8FU3PdLuf6ZrN5eFHXYe/EXIzTERkJcjG5mii1B7oeUyEPTh7l0Wl6GeL4f8zs3taJ0O6OcMeVgJYB2LYps6t168Da0GdCSajimCopT2AmzloE6FML8DN4tzlJTUAVRrzjbkiVb12zWMh1jEidU/fsu49Pn3fekm9cytMpTl3bSvoIic3V2e0vUpz627tzLAavVyyn1VPeOVw3KFkf3AQ987Aag+3Thmyp+rxPAIVsjEoF/YXymGJDZSNk2IxTZGHPpK7jcwGcRgxkjzHlREudjzoZ82q8wo/zJmlfGrYOBCzhUIWQ1kCNGXqhjsHyjPvvoiWi9ayVa1Ncbr6dsFWu6j+D336fuvrLhpklQ221nB/NAPub4WtBvcnA7ioKZR8jY82fD6SVlcqWqU9+lF1z+BtI2dd2uFdjrQrqVQMrsf/M2uliQplTocay0qknbYA5ENmCwuz5hltt/rwMyVMVKtHaLakiIvD4ZZM2Fqq8wLdLi08sZ+spRVqFqvuOn3i21YtLKnyQ9ZQTljjEJJDTFYUIvKVx57ipPwQ5XtcvmkWGmEU4XZ7WXsVknmqvU7Z52o/QfKwia1alOe5M8mCGB+Hqn2SolJOy+w1cqMxV0Shjd259uQq2RALSGxKlSGecTObPuzTJykNVGxVKvH2p8uySIzKwBZ9iJLI/DmUcpCdJIzhDi1ZVYzXjmoJQziTmOqWoVoQUKoawgP1EhUrKyk2FY9rEu6SLNSZqCDWhSNTZkDbEqGxWMS0v5y4z0wqiHY7mLMPN7VGZfpm2C5Pvc2zrOI6JWDtrNd4Pg00kdgT51N8luyzozUN2mWtQUo/V2tYF4T5IRKNyH1FZIJImyK7ZeT+IjJEpEORQRl5gCNzl6BOGhDApTDVeSMHHrQQog97TdvKSSAhBOzBZk0a6Mo4g9V1igr6poJ+j1mQoZZFfdiXUgNFQXL8/Pg1KqAt63Op6BCjbCjmVUMKoA4k2fXnY0+TTxTJ9fnGEFvxXzu2iwXtE9+WZWsS4pB2xM8hxElcdRvWlPjpIt5G/GBr4idAvFPGHyjiXYl3EO+W8Q8W8bbEW4j3OJ7sdkOCPAQMh6PaTu6nfi6G4zemIWpsDWkPdxgXpIUCafCgbCgUgwEmXOlfqgJqrRs3oVy0lE8t7sBAiMqKrRlbvj9De3iGuunDo51hTR/zrLxHZ/XHnxZNIHDhlHUabuz+yj4docWnnbsmOhxXMRpyFYNmpWf3COts6GuE3NPop3XOSefKHYw3WS4uHuDf4KG8fq2xsVLcdLF5VurCkl5v94kNidwl4LsAxYkJPEvLhoBZwkS1o/Hvv+dimYj863t5xDxg0ff7LqmOmDtd2y/JkgoJaZBjMfFOHb1jiXPB/Mti730XfswD7VaZzoXBCNGWOoCCv+Vs38XOIY0OsCwPpEIw3ZpYTaogf3mPwC+SQxHA+HayduGO+w28JDPhEOFQhyvLnQZvpIA1TjFKu6fpQdiisRc/vGnpCd99xTsSAPPGJaqjCcAAzg0C5hcvsmFkqrzIBqZUNikbaAgxAfNki9LFuN1Qjq7k3obepizyOd/kc06vKOXlppSXmtizTeyZJvZUE7vCxN680UTv3Gjib9hoEPaBAiJ0fUFoKTF2ITF2ITFvsWFTdMNUbcZtX5Bjhk/slhsCFn6cs3DxwnnRZPTnYjgEg6SMl97GMSHWOxg4xUIsf87JvBK6iChG8BpqHmpHEFezLLOYSjs6p7SZEAsMRwqRzblGci9foDBJ9KGkVbzm28DJozUdJiQfKKfwEC/d9n2u5aImVQlHpWyjvMFOonwXLBIRZ2n9g6ANnYkomuF1I+BCTRN+gZs5JTYAduaWAN0TbY3v0K8oNjsye6pXXtDTd090/HbCtWIHwY9yMpdp+Agnyx1NxQEC7S+psPqoqAerNFqoAL55Qsz1OXlSMsUIQhk/+kwRrFU795QFElHZSQqAXpQChmiePlhl4WMrB0GvVqyvHFRCivVRI/qAHFQV6gc/cklNoX4MHWnbl6oru0vhf07LnTHmdYruwDIPsJH6ay0279R9JGvoM26oddngpbFM94SZxRizIsbnZW70T75tXQAPkYP/07uv6L6biYUrL3uPR2OKVDJtYDhvUYn34uyT8o6bvK+48nb3ojMHsf7twakCC/p0m4Wd3ACfV1nKhTb0cPvgqY0wf4dFda+mh3351958maQPdXqsdn3lYRfLl2zYGD4Uo13klTUoNyDR77zU0nUKeU2HqoVINoESoVDiQHaD9Xjp5mGqzQ/yEKx1eS3by5r5OWLc2VNN+j2l7SNFAuZWR1cKhrL28rSh/wxEYnj3uLXvaWAssJgHjX4evO0HlxQ8kFZpCLMFoXBK9lv8vRHsVlT4yZOSQJjQNEzwwISmbgIwAaOxhd3CJjMBUNjosIIRPsgoOqR9wYA3o1gU1QJtMl3RbAJ3mFOe4VRTfLeiS9WZ5TJEkZhXC/BgVvZtXXm3FuVS1D9/R0c5tSiMsr/Yocmya1E2Nlru06msWhSGkzftv5SjYI4tl0Qb0a3i8LicodjoqI4cX5rBw8kv1P11O4RKASl1NIYibNvsdgNuyf3ZXZezcDsyzZbzVB6wRAId6cHYOKymdCnlRTAmQEr0ZWX3OJ2e3/EepKZ+PRFf1Q6WItp5DrIuRT6W9jH9AqSVOkIOWYdQWDAawDidAEbPHXjo0pqee6eLrn79hTUDpOgUKhxiJPlimqqlykzHaD0htszrpBGI5i53qA6KU1bK+axsCF2m+Ic+OlUr/r0o/r3vn6oVz2dg2nIVc4MZ7V1149aB9Ty60bTl34Lyr/lgtfo/scq5QSk9YWlRx7sE5Uw6t/QsGvW2c1dZtHeafIJbXVTEQdjp9SB2hjzlaQ+zYhMg4qlmlcyVJF7eIPybtD2CsuSIGEI1Q3U/i+r+en91mfD86mpHHKC64uQDdOE6cPJrCYkR8RVUWb4U7ChhB/lycop51WSR5Dfi8AM5Jvv5WyzaLEj3ooZEXChX2yTFlA5I3tGyR8aRhkEzIWOQEUUf8K2osk3jF36Y0GyBnpovkkeYwkUfwK94GJBryZwVXJumkZSYxkwF3mdhR00deTm7ywMJlEaaILXs9V/ltK1SYK52jMTuxCc+bnbkzuGtThbCPcuqrHU67/zi1p5Q1WLRpSTa3EGFvMBu0W+KCaA8PqIdlLYwBZHaI4Xk3ATQUR3IZ0hkKrrF7uQO5dzMabvLpyo08Agsj4TUhoTjYbcODYuAT16xwNsWFAi2ilq8DUip/45IuZWx8iZ93uwIPS10ApvQtCUOVV3uOMYqSh56dUmocGMbuEExP0FMUd9tyJaI2GvLrxupNuE8zJJnG56gppJ9tVxPCguYYcRTWJ8r/MU5fCv5LZMQEnLAyMpHCbGZM7mYYWAz0lPOyMVsQtPxbavRaDiVrf/3PKQniBdJV/oelODl19QVJ8gj4VUxXt+OkwdRck5Ph9nTZvOjwWxyDzvy2hGWFouwEIcWi4OWJoTw05CmJ4HiBgoJjv4oDIGMNfRkxiE7JuLbGrgH8sudkRa6G+vKM+nnwk9u+/Abfvaj7/+vo1kn7KZXvR/60I//9Yevef2bErbux1JXlPNduOUkJ0Bn0kZMhuGM5tm0B6SXzfly4xx+OWbDRyt7ldi0ESkEPP48rcLEuaCykl9j4FSiyaoqTgrJcLq6zF6OYH4Hu/4nAGV00DqyXjiunosoNAs1OKzROLohPqYbK+hL7oadrR1Ga/1KqPBWpUuM9nSt+TzfF3t3i82s8bM0c+U1PQ8/izMfP0dlAX7cLMTPeAbHwD46tnIVOrMnI0arJ0ZY2iw2Pk90f3uNiuhs4MDud9yyoZcHf6favayDy5cWkOGuRFnAT3oqUlSpDgHa561RMSX6yv3/8El6kzz+O9XpZSMUhYg2Rdz17QuvsXv5yN+pkV42qiiKIjoUcf9bf/Xq9b187t+pUSpGURRFjFDEu9+2/50bUT6yGiPewTZxnAL4msjmEL5qUm5qTFEySjRKid5xxdtudbn8MZQ/Zoq58oqPfezvpXwUQ1EUMUYRF77jzT0uvgO6Oqb4ve+56Hafix8tij8im0sBfC3J5oEQX4ofNaW8+6dXfv38ovgOojRd7/ngBhSuuWIK/8i7f/4Zwp87wJVrr911d1/px2UTuvTl2XwUHICEsQrHrvzut1cXhS+oFP6ay773Pqn7Ahy8LDDFX7Nlz+dcLt4CudZ5asEaZVHEdz5zYCcc9AnBpI1QFJ54VnMoD6ZTWULpru9fdBG1X5OrYBEdqiPUfPGmX7+XWrxTZj4imb/jtXd9jmRkXDKvZPWN7be+h9jkCTd6ykYtJ1D0PBQ9Wsn8yzdsGeVCR1HoKOc9itb83GX/uqFW6KgUuvtXX/jI0EK//5bLXmtXCnVQaBeFzu8v9CuvvftN64eVetlb7vinjcNK/ck/3/sOd1ipl3zptV/4+0qpLNdJf4EHPvWR/zmsvK9dcustflHeGJVEhbqgu1MU/Mo3/fMPz0fBkAUU+PF/o+0+V7cn3ozTreigTAgkF3jhTz51CyWLpDEhhx//xX1UUsIljaJm80Ep2pkpuWL/tv/Vy+cxhSjmtjt++49/XylonCKkIFsKGpWC/vltv/2mWy1o3xt+8v6NtYLm1Qraf+ChX/yfakmf/N1PbrMrJXVNSV6tpN98YdOdF1RLuuTbt16/oVbSnFpJl3x4++JqQR/a/uXPb6gUlADbrZXxvffd/4GyDGQ0Yaix0I6/vvx3VlFkBwl2vOcf16MQzpO3is9VzL/brruG2OBzTlrBCcvHRTg6jIpC3/jwO99ELGxp6RhBBFfg+k/tuZvaoKulcZQjLNRk1+df1svnDBT6iff95B1+pdCQfoX93f5Ct77pfQfOH1bo7+796MZhZX7xltftOH9YoV948JrfVQsN6FdaYqK/0H2fe9+aYWVuu/SSq4ZW9Jq3b9/vDiv0ot997sMle80EJlJz+8t8/z0//uH/MYX2xPw1lsav0nDLP37rK7ahoccLPQx7enCoUvW6699y9wWgirDcaOopVmujPudzb1T2jResVJuvxybsjVgor858A2nQ7ECeCcPnS2CPvDpjw8RAbFb1UwGyYtOepbA8O5s99vCMApBQX4NEDBZzMpV9id7CDukTWT3K/ymXtp1WKxs+HHfYz2vLEetb6BHMMGqNN8fD8YCdPH7wAoJ47pgzZo9ZY/0FIc1P1zPGAmeBvcDiNF/e0OvYvjc/wt7HQTwDwLY+3xfDz3jq4yeRp37jtImfMG3hx00j/MhOgcefaGy8VKQiEwh7qmUCMfU3E0hIJE0AT9qZwAR1fxNY2FO2CSic9+jzfP3Aags/WO64/D4DfgLl48fXr6uVBugb+Up8fHDE9V0oNbSlhq7U0JcaBlLD5rQ1bFZrGFRr6Fdr6FZraJc1LOvxqCg/SCif5NPENJ6hUdpAOaU9h6+1LuBU8O3prJGKmsebm8rRzgnG2HnOBKPON6jACQxOwjgjjDNB37YwprSccbEa8OBPCDfKJWAhEOqA0+Pi6+heFd2tovtgVD8X5gsX5gkXsGPrlntgDnnVSH3Acjd1SvqcXr6ey7QNiXaVRLtOIlJU0b0quotAjUTtVQMNRx1Vb5MGoBHFV20gsV4CkDOz8cU5WfE8rtTcx90Jn23p6kUSEHpbJuBDeBEohVcHWhBeHYAkuybQoQqbQPKEdMJ50ohzHkMnNDVsVmsYVGvoV2voVmtolzV8jJ1wrlA+PutO2EIn1L1mTHqWX6tay3SwQNv6AXVUUG3B8Q2Ox9l1GGdkSCfUIl3taEbkQWQVJLIeV0Eug5IqyGPQeBXkyyqxCgpkCVkFhcO676jwL/mjkT6MqBEhqmuIQjfuo8wdpMwdpMwdpKy/sEQK64gE+SizT4G5gA1XYHUe1aF2VXXVFG4V5FY0FsSbqmpr5z0gqmgQXBkrU9VysbT4tbU0GxUMCT2NK7Fea+Y81JVwqRRTk/NL1li9wfrZ/TUByCkRXYGinAS1CNBXtd7lolKPK9NmvVvnoknpatsSQi4tlDpRxMSjBaDQh6kd6AwTdhEOy7CPcGzC0gUskMmXgUGmgyPHZlFQhILQ7bkgBzPwFn4KRWWxpgPENRAMQCURFgp1q2GxqinDLcRXwjHi4zLcQbwOG6ZGrA6zQDPVKZja0s7LMoc1JyKcQSY5JYdKPau5XrI7iiIR+I744dA5tTHZt2uDGSBubUQDxK8Na4AEJedrTPKECSYsc7VKGExAhfvHuRB0o6vauuWCouWammZfak/RKtCEixu2sp10uGwXCZftgLCWkiaTlfma7xbznY/jtVey+nxUs1YzWg7rXSIzLMhsVckUJjnVqWyVZmEbCDfhuFYHsIUrUpvYVsMTPa5YbQJfDatKh2iVVY29mUWhpFdEoUqviEKVYi0KJc31OoyLKFRpBiFVmoNqWA0XBdBcWabRksx1bKshw3egbP7DfVzZ0JPtHBNuW7Rk2nEkYUcs9lrl852tygiEH1RNHi8PNE0g39CsKtAQ0LAPKqIe16H6iqpM3rKWljYb0oZzJ7ntAVfXYjLvCk0FJWUuLuLrwidv7lELNBXYJKIIUw+b/6CRwRFLONLSfLALf3eBcILkUpfqGi/fTZSb+Wa086tTeL86hdftq2opvGoKMLA+iwf7UpcVn60Vn+GFByPjmgfwcgGjVy82vmQ2zzSknnEEXioOmEvY/IdViAgGOyU1ghFphkQn9bPDLhvBlxvdVR1p6yqXUL1S6Yf60iXrUBmptFQ0K7q/OH7TDEB0K3XrlOhcSnGw6+Kgn6kRPvjCB1fZ/Id1lPAhqnWQtuZDexo+BJR5KZGZX52nGWZUoLZmRh3qCDNqUM2FVn0EDHTfiOrMiIb1DeRimGHN0Dc88dDnFI/U1iccpXIHQ80FNdwExKUUmxUk0mWWaUgVKR1AdKsIuKL8JeDHNo8pPNqYsTyoj+VG4zomEA6O5WbAsYWmRp0mJBSaJOAKTRIIhSYJxJGcbZ6ZeSqkaRC9dsaXfDy5YHlHg2BMl9ihR7JtB96sOFcfPIb5LlB5/JpVmY1UkG85JCzO3BewOQdgGZGOCFtH4GZccSDJahD5KbzjStin6bsQXnG2iKcOPPpjwksRXlqGlyC8pAwrhFUZnkB4ogwnCCdlOEQ41OEKbR5o50ZYAQ94x+vzXjSZroj2me9F661RMY/AeJpgIYkDWQeZEbfRqnEqTg1SIo29Fvsyaw9VQP0wxJJetU5JcWWEvbKfl7bpswOrhPPSLpWTqK5K1qQjONVBczpYBI+q0W70Fssamb50wZTSl2M1wsYuALpyJ0H5BRGqeWraoqLYUzytt839rkWbOPN2HgpFJBNEXJfy6lL10M6cXUKABNIlFR5RI93oH2zL6nN7BuNCsT2zYKzpFJabOd5mY48tePpXb/BqAyXLvJfsmFNlJcMi//Tb6Fh0fHuJ3Dj/xU62CPgUevh3rpgadjv9obdeWMPdPQPuh/+hjvvpGXBf34f7mQHcR80fS/jjPOH8udCi71tmx5+LBHdW/LlYcGfFn02C+++SP/8A2q6cHX/eJriz4s92wZ0Vf64ZxP13079uAW0/fNWs+HOr4M6KP/8iuLPiz0cE998lf74O2j4xO/7cJbiz4s/dgjsr/nxjEPd4sKdkDV/mkKp3o8IX8Y2qURzgodarJZ79s0YfCOx4o71B76yUzyw2ZHRD8sKa7hx+GiDHpE0M1NbzVwQ8ZaWxTuPrPFx+CzwBTtbgF4BWUTjkMMx4VCc/5BWw5umcJy8BNFRrFczbVuXO6r74AHvN7dxfrRqyl42VbATXU2TXplpAbBHoPJgDhgrEGghvTDco1yxSEcBRj2yK5HVIvZfdRm3SSMWYn8V6Hu+qUF7swVhPBnOYIgX6Nzx98gXawtXTaH5/pJs7KqBA1pjMbYoGWmPy9EmSs/rVBOItbGT1p9e2i0+/7RSfQdstPsO2F8HNfCPtyk8CYtH47s0n/vSY3zy08mnfP/5aZd389uRTEBEDe/sH0gR24Mlyu2E84j1iki6SdJfb7kCZPjLwZ11mWFiSBrMuM8a8klLYXOhyuGTgqPCRcgBq1d73Hwv3rp/9APejN9h4j+iNFw7zZXBRH+4bZ8C947d13KtmwH1PH+6bZsB9TR/umwdx9wSudwFfZNwgYoRXPXCl0qF/Lv3z6J+/UtaC0nlD03mbpvO2gKGsNNLYnk4tS5vQdN8Wd99Qd9+4l7VVG52p3SOTuhvXY18YtrCrVKxa6L8DCHgYMdYdOEQHxnxZOnBTNYHZJBAwA8WWm1WQo1xoh1pfB9wlilxUDKdK0EkRenCkrxNByh3dh114c3rxJLSK8vVv8OLJs7kXU9cpu3o9Er3Yp4D0Yo/RGpMvnkwbg73YOfOksh+7FLBNp6aAY7o1BVzTsSkw2J8pK+T34UfTn10kcT/82Puzhwy8Dz+a/uwjiY8ks+7PqHC1Rzc4MnikPBh1hh79OfSQuz9z8Wx69Oc17mx69Bc07mx69B6NO5se/cVB3LtaobXRvcDe6NA/+sWobA12Z3Z6YOkLUOXoTG/7oHesPP6yLFqvokuymD3uhmelbWAjh1JYefuwyJD+YdHY4T0j1UZWLsZKZBWsV8ElWcBPb1OPSNvoxet5hdvaUJTXWq9al2StorwO5Y9bpUX+EWoBqisFhNMWQBgdFQkR/oasq7pA665X3UuyrkHrFHR0VWs9+r3yV1qXbmA2rEfeJR+Cgi6Ha+7ommuCkCLO+KexQUpNhMDuhpXOBeszX/nIy1+v/Esyv8gr5IrockbWq5FLspGBOnQ3ZLS+B8boejV6STZakk8YDjCY6KSP4sjgOWpEqjlaVDOAfrRyF8ef7J9sDC2LFsZFYwUVz+/ioUrYkBvH9wjVLA8ZnNBXjC9dv+koRAWbKlnpX6Ci9cJWoqW7fqV96YaMNgaG1btJZPrQ9CPKoxGh5MJw/EEuDG9scEGq3+XqV1kP1CrDEMEMG08bagyDwRgGA3KNAB0brkznyDZpuyHBuSQC+kvFcj0/PrNtqfiR9BHwU37lZC6pXww2OJywMCulJ+cwpsjmC7SdqNg5VNQs8p1DSOx3C3nqmzmadHRUzgQb72kLhc8RRW4q5gyrWMBvjOe2psktaQKWch+5riR3KI8rG5qXkCRbZyBbqao7m6r6phqxqYZqIndPcneRu3Lrg0budmeXv2SdqMerXA9zniDliqzC36dyRQHJIylXEPHolSuSPTrlihQTGf9AuaLURAj8D6tcVQ+yELE+zcbxzco1AZiV6wS+Hp1ypQT/cZXrfyrX/1SuP3Ytb6Pd74TO83DC70eiRR1Zg+I40inOFrEctGWJKdaGPe2gmj6Lk0ZeIlIzmTO01DbuCWI30rnbWNqa3CWlXHus5iil8vJ0uhydIkcLP2tkI0u0OrulQBKgF5azypHr3zibhRmF9nCThfLUMYpfy9XQ5idSTxUU0aGJE5MJ/fxe3TpW3CECtDaze4qKELsUfrqsyMmhYnVmXV2HhtTB76/DelOHsK8OrtRBWFeSDGWn6Qa8JDes0YkdoZnoRMqIiHMoyiIkfQpnlnVOcQ3UKZZJP3Po+5MXlhezf1/C9p/C9p/CtsWl702fra7J3xTa7gXOEHFzq+IG7wEvRTUb4tIrBeB8/vJESPQEwceQb8skArMzm4d+V3k89D+3+vymGP+lLu7VlBLjFRLjCLfDYUXCMqTaAqFpgRaiyhaQBHg4ZoOyJZ+MiOG5y3NNewDqCco5GsUXlLJpjBVIEy3UlBYKxQViU16NoF9nrXhCq2RmSjNyZJc1k/q4j7I+IJYnPbpK9aqgghIrBMymFvY0tajnU1bBkhctm7UqtFAFY/XbkKL4dcsQsWUtkJ9meUk5MtKtowkmYB0tlr5TR0ukXgqFhRX7NfGOg01V1AcSpw3YHAhsmfWgTHqpq5qQx6YYspS9H1WedUVNDVCCqXV/hftrNotKNWas1GB9pC5IXfEKp1WDXaiGd7v0venD1YO3z/uzGYccqheXpZ8w0tpJFAM1kzYkkwqKM8G/pz1yM0itUh5qgHtyekAQY6nhA5NWwaY4zxQX1NUy6l5Xy3JrBAOLNmmCtaseTzJPtvQDOS8VsyaDcv4AijB4WrVtl2o7sxS/0FDkZiG3ctTs1sfHsOTe9NUJBqpDI5auka7PKmGnLVGmMqiKxA5WIqhVIkTfqVYCGZl6mFqgBvX+EZga2Dg1rfYU6SK+tugNWWItNttTDXx4yDqzjUWrWJJWgaEAwxowFmBsgKYD+SpEzwnNDayGEofA4mANpUtPBQUmtQihsbYLIIQBchgcamfoT3eiPx24+KLH35/+sz/9Z3/6z/70c/Snf6pNXV8X2vZspq6OTF0dM490KlNXlzebeKw1k1h35d9foE8EbN7Y82jyuj7DQ0S6Mrqtp5+2+sOKg/lIVQTDWo8KjAiezy4PuHyvnLZiGqmJsBFPhBiUcwZR8qTao6pW7MqXaWsgEz2cPIv9cj07zoyy6g7qCjPnm3V9MJPUVdIV2pC5UhVElbVB4RI7i1rY1VogG6lIPadKFSzdp8oqDPQpmXyXXSs001YXNeGshTYQxcD1NWDCwCpkQtDcGpoqp+OD/crS/UpmeCHP9cTmuJY18iyfwdYda3DKGsy+kqAeBTCNRX1NZXVVTa10nWZRoca0FUJp09Zl5inrmyCqO2pT1i96Y85Ga713QUh/fSiH9QF9WRuj9c7GgP6FDHXXG2PkpTVj5GMcpZzDHYVeq9xjnAnl0AY/nZ4cJRbRm1M6a+jCGlmFF6dN1bwe033V4ieg+UWC/H0hzjfStorFEvmFNdtoVlEjYAgXM0qJR49x8IqNlDS28vh0XI2p8c28YTtXzUnnqbnphJqnJv4knU85LVDzyXFQOkn5TJp8FqqFb04PoswOohpEQsrB+UNBeog6OFXqkJT+qPTUNKMMFqlMLVqTLqYMFksGVO6hJAVPUk/6YPpk9WR16LXpEspriRAmJRx2YoP/W3pC+hR1mHrK9vTwEnKEOlwdcU36VEF9mnqqeto16ZGUxZHHOCGAYbpUY+87Pn26Wqqe/rL0GUTLM9Uz1DPXpEcxW45iaoD8LMlomXqWWrY9PVon3X98ulwdrZZfkx5DWR9DWTN1SHBskftH02erY9Wz/9/0OMr9Oeo49Zw16XM59+ea3I+X3Feo49WK7Wle5r5S5Wrl9vQEyv2Eau4nSoKT1InqpO3pyRR9MkVHuslOoSY7VZ2iTt2cnkZN9jx1Wnq6el76fHW6ev6fpC8gOl6oXqBeuCY9g6g4w1BxpjrzzemLKK8XIS+B/QkF/4S4zsEl6Z+qP+1GWy0HAhsOt58vnrNSDcNpV7nJq7cA1VPem1K/YE0OQ3oV/HUa0mxEDgBVE1vl7yAZbqURzteQ2/lpzIcTEGIqq0OZd3ppV3V1We1u9FzbuqAwylxprc+slRY82GtjzOs7dgOuTG14OqFjFtW45H9fTw7fSHeLReY78QyeftiMrz2LVeag3wYMzFRLiygvJjjBU+wGb/O9d9ty2XSU63kMpt8yRu40B/ih3oqfEBZQGEE8UUwuyrcBwp0XuGDlbCitySaK3vW4iaWB5qZBYkERYoYSmzwKYj1oU50TIX7IsXzQ6ykqzKGLL8Z4sti8DAAR2l0erJEJK+cmYpUNzwW4eIbjKJTRNExtoQaRrkGzyu4WSCd8/ESqiZ/m4ICNGgSoQRM1aOoaBMrrEbBkOpQvTOE8mM65iv6dNslkt3SNuDJldsishd/h+VGcBeIC/ARRUXm4TUxdnQXIlUyAWeYBPsCQDzlHJkNUnZnB4CofdM01H4QrKIAKBreLW18BKmLIxzEdQV+n/OZGi0ap9vr2hu76qvEdHtHCIDlCnp8jYxqOJ7+hCUQktWdFZ634MUx9nqyiQaWVbQhAU8mV0iCN0OxZrNl2C1+/7GACzdxBQPmUuJV2ga7aqgu0a1VwuNPYfozTYGnNHERQMRLnlHEJSu6i/l0Vqg7koMNyUBzR+QTE1A1Z46w3Zn7XyzDeRCKpSaxff3iBvg4Nt+kWcTVNYNp8HhYgYIWtPFSSBYabGiJg6qksvtu6itmhK03pCVR2CVP96Imu/vDKt4ZWHtfpUlcqH2nP1MUtUkv7KucWC/kVaXkZwsmXU77F99Je1i2+lxANxbei6VnxPdHLIv1NdGex/kb9WvLdVY2n2Atvydr4dW/JRq7Fx8Qt2ahqgOhs7FoMM/zf9u3ZOHjQUYwd3pLNuVaNKkkyfks2V1WRCXsesEPBjm/JJoBNSebqJMkt2fxaEqRZgDQRpZkP7AnCRpL5SDJRRwb2JLBjwp4L7PnAniBsJJlAkjl9SZBmIdK0KM0o0sxFmvlIM4E0c5CGEo70J0TKg5ASgtFGylGknIuUlHwCyecg+QiSjw0kR/oRpIdgjGlZyEYBsfKmrGDOh0w1WMIgmvTBTdCmz0KERrenowqA8zVgfHs6zoD1GjBvezqPAS4JhYAmt6eTDAo1zsLt6UIGxBpw0Pb0IAAktGB7ukBqObI9HVEdCDzm7V10Tp7XLqcfkoWl9EONjDkltZuin0meWivicSKT1pB+UG/99ERb/IY08ilLlFnWPdxZToVADNODFYVWECkUUukhLIqpAvDUdCFCi9OUhS3NADwznURoSboIP0m6GMCz0wUIHZEeymKXPgk/YfpkxL00nYfQ0nQJQi9PxxE6Kj0MP276FOkNx5newFK6/JbscN0XjrgWyc7ZTn34HMKVXkBYh6un3JI9ldpCHXZL9jR1xLXbpau8nJGedEt2JHCefEu29FpFc2hqI7XkluzpQNTd5KWMufiW7BnAPBJohPt04C5Qh96SPVNwpX+czcjZLdlRQH4GkI8kZKR4JlJMqkW3ZM9CCtNJzuQk6pZsGZIchSTPQJIjkYTSPQvpFqr0luxopCt7yqmc8OBbsuVIuAwJj0LCZyDhkUhIqY9G6oPUIbdkx5jU0l1WFGxSzKblSL8M6Y9C+mcgPWVyNDI5BpmMqOXIodpjlnMWRyP5MUi+HMmXIflRSE55HI08jkEey5HHMsqhv+8hr1HIK/J6FvI6Gnkdg7yWI69lyOso5EUZHoMMlyPDZcjwqGEZIscxiD5yfCZyfBZyPBo5HoMclyPHZcjxKORI2S5HtsuQ7VHI9hlDs0W+c9CXNOOWMuOeibyfhbyPRt7HIO/lyHsZ5Y0ClqOAZSjgKBTwDBRw5PACUMJcdFOU8DTk/nTk/kzk/izkfjRyPwa5L0fuy5D7Ucj9Gcj9SOS+lHJHEUuHFiFlTEAHoIzDUcbTUMbTUcYzUcazUMbRKOMYlLEcZSxDGUehjGegjCNRxlIqAwU9dXhBUtJ8qBmU1EZJh6Okp1FJKO6ZKO5ZKO5oFHcMiluO4pahuKNQ3DNQ3JEobimKeyqKO2La4lDe4dDaKI/VAiuF80knnI9tludDk2Onv8Mmd2nAsenTWHOkR7JeV6Vefxl/EsXbCQWAl2vAkdvTIxmwul/Rn1NX9Bgbqmpbxoa63l/fr/fhnwggreEBCvtHmFgDxranYwxINGDO9nQOA8Y1YO72dC4DJjRgYns6wYCFGjB/ezofgNpog9ai3QaFZws7GF86GF+66mlgZVcdKVpW61GtJLX60ypNKyitaLSy0P1cd07dl7TAa5nUAoN2xF51xUd45vDgoYeABk9aHBpUSJ+jZEcVEyUa8zH0YHAQlDOhyUGWY6ZH3LkEcTENAhrxVK3GTy0wY632Cf1Ija6g8gV9RaHDVxT4San5j0SiZ+pEC6H1JdFyo8CXF6nGS+V/JKtvJH2WTjoBxT8xMFU6SIZ4rX6XIaVR3Eh+NJIvG0wIxY1ZgVG2SFnX2Ui+DMmPGkwuylopx6hWpD96QE8vQyZHIZNnDGaiFfQE53KkVqJHag1X1c2i15DVM5DV04ZlJUo5UY5WZ6Kc6pqsX39B4+mZ5fDhY67Mjkq1BSVU11gDegqarZxxDh8+JmRS2ZZ94rUyqZzQk0rdR7Pfp2rpPPGqpV9xQMMMTEx1F9W9UHcx3XN0V9ASrcVTS5kWE93CulnAxXKTOshv28+b1EH+b7JJ/RqLvj//nYFLkMD94U8ALnFfO4j7jdC3N1q8iY0tbf3AyZRdeV9aWZUL4J58e3kq+ySNw2H+ZATgv/Pm//myGcGbTC5fes7FiD/KLfjU4J0fD88MNWS12cZalXJ6M9bK2gMQYtalXfzIYygj5ukQ4ra1Nh0FTLnUdEE6Tll21BhlocbzEFlde40awxcgHEw7ahy00O43KGNX+1g1jxSbBgkKZdfrmhpQp0ZWIaRz4FeZESY8/+1Zh9qGiJjDhNmnCWH4R/eY54DsuRQ7yrEuYufkD8EQfE3aBVy5REszHSPSx0E8lsMjKIgJzubxQn+EYuZdqwDn8Dhj6boCbjDHBBNwCaOytNGPyo5jPEJlR7myai6q6hIIWwQonKrFvq17DJG8x6fNOwKvLEo0R9A5Ao8oXKsYP7aGMCpS1MpUddUhvLRjOCMPVuOkaAQwZRPRIRqUOcJUfOCK5TaIQPuVQeriBDm/CokBCauQRHigwIMRqqJb8MDsyqsONSxR0gVPIpA4omxway2SaiYJPSUxKEZEyQXWCHr/CLPW0fX2qZaZD+aR0GN3JcZPjKcx6dfW+3h6R5bvz5e96P+BHrFUmx0PudQb9XMqRg2M5Zfxi2VUvu7aN1v0vfMrAz4QgPvxn15aw/3gDLgfvP7CGu4HZsD9ZB/u+wdx3+17OC/DAYO1QSsXReYM9bfrlS1Pp7l4zNNOfWgcR58tcrylvdE2DIt4B60JQbPYpVdfhGrwvmokKv5Vt2QxfYf6u03frv7uqEg+sIsWqu5fT2b47ejftv6N/3oyDSlZgpYU38PautG87iT2jVJsUWY1qYuk5bmjCg3J/y9VNmRHgMmbwbYFOIUFYlN55ON2VRaRINiozcZFHwTfSBFT9NoMz75nwfO5LweEg01XvP5GJNLLQPwYtFM0V5T/6qcsMlHRXN+x6PtHg00L3GtEZAzudwdxc0s1mQSS5hxXy1nL+0xn49TCyYiF+KDSOjwKYuce81rKI1r73m23bM/C5DVbUDSIb546qWxU4tRJrjoYbMtes7ECDzhfyib64DUYZdiNRgy+eirEyOnh4TJXKkSInkJOiy7X7KP07/nqZlTRSy69CjzX41xu5fB0sfa9aTId0Sp5/SMRrMmq0lx7cRmMUq7sylPDK92/lR99QVnztMVJeSaUYhvawaaVXVrnT22UrM/rwdmmeHCZ7f+U3xkfGx1Jup12HLWaYeCLTQuez9f25OtXp07EFdCA81crpyewsICtLWFxATunhCUFbHUJGy9gLy9hEwXsZSVsYQF7aQlTBewlJWxxATu7hC0pYGeVsCMK2JklbGkBe34JO6qAnVrClhewE0vYcQVsRQnb1SiAx5XA2wxweQncbYBHlcDbDXApgATZYyBHrEb4DhNewuG9JryYw3ebsOLwPhNeyOF7THiCw/ea8DiH7zPhhMP7TTjm8AMmHHL4gAm7HH7QhBuruVIeBNVioKPcV8D+TLvv1H2jZjNo7vr/QFRVo1A/96H7P3zngKoC7ue/Vsf9ySAuehJeqGvwR1R8xJhKmv6krRIxfeUvx/j68PkuDL7Qo1cb/x8vN258XsZfaMOX8ldMXy/hrzZ9nc1f2Ig5i7+6ysZPwnzDbEP82IHL6RgzPx3nNknncFOlc7kF03n4UekEt3c6n8UgXYCZLztN7aiYiouo8BZOSImwkMj02fjGV0HqFC+FBcpW81djF2M15mcQhbaaR39jNZf+RmoO/W0piERTjdHfUI2u5idQ6K+jIBrSlNKGpkXttDv8ro/mbfcPwFu035k9w96GsNcV9obC3ljYmwh7x4W9E8LehcJeBfaCywuEy5PcB9OFfLBpY8X3iAzvlgynBleTq1Wi0AsDzfb5YDszP2bmR8z8FjO/ycwPmfk+mI+14vRsT6oXokTaW5DtPv63n2D+d4TDgXC4KxxOhMMjwuFR4fCYcHhcODxHODyXmBmn9rQMbJcMbCub+KI6zKKYmRMxc1rMnCYzJ2TJJMYzu4Lp2dUZdn/McKnz+5JSMMp0f1cYFQqjYmFUIowaF0ZNCKMWinwqyCckcoLY1k7tGWWvU7KOGonESwXSzTUDIWMRs7HFbGwyG0Nmo89sdFR3egYGJQNtLW9eoVSD4iMcol2jx8HbWLjXFu51hHuBcK8r3EuEeyPCvVFsM6T2AHOikjmRsqnOKubqt7jiTa54yPJDjGRWtKdnRTyjxoufCFlClU13c6XKoVQ5lionUuVxkaIJkaKFvGaNUnuohMQlE4ixJASqLd1Ks2KEWZEwK7rMioBZ0ZmeFe1BLeQP0ULNWfKkJbWOpNax1Lotte5IrbGTGKa2qVSzrFRT2USrajHZIbcgVZqrEE1fhdaMmqH1aFsTxBvRdYX4EMSjDoHUoSstl8AKKLVrbdQqq0PMoGZQkRZRqVSHK9XmSsXTVyoa7K3YcymWGLlrGskVC+zukBr7qPEMdcKiWxx3WES/RXIXxnbdZH1kUA1Usg3ByEfu6NhIrDgJAb8gy7IRcIF+NVl5qa2Nw33ioS1bl+xAEJ29ayQ5yprVzm3nrnlwI4t4ENHi3yyZDeTB2xhNbrNYJdgJLC7TwRAXTdgqb9gia25ArWF9oaOScVfXJGCWepC14qI0yLKYChVxulYWli1ffwMia7HY6wKsGhpIdkwFUmIMtiZqdza7WLx7ALE1oDZZVBayDKXsSpZdESvbSJIlTR6ZJg+ZerNFICb95RVUf1hFQ9VcPbRqobIQNbQ6LeWjGr5UI5Jq+PVqmJwHL1+3DcU+hLRKe0sEMkK79FUh7murkJRMaklNhFzqzWUD+BJdq5OvUOHWdK0U11oHTuqHtA4KQdmVdok+fIhnX9Dc2CJ7WuuCWWwsuDemfm13AVc/4SfnUewuONPvLhxls0n++gvSQHYXNOD8C1SwXmBhAVtbwuICdk4JSwrY6hI2XsBeXsImCtjLStjCAvbSEqYK2EtK2OICdnYJW1LAziphRxSwM0vY0gL2/BJ2VAE7tYQtL2AnlrDjCtiKErarUQCPK4G3GeDyErjbAI8qgbcb4FIAsbtgIEdcgPAdJryEw3tNeDGH7zZhxeF9JryQw/eY8ASH7zXhcQ7fZ8IJh/ebcMzhB0w45PABE3Y5/KAJNy5Apaq7C4HyL7v+sW4vfN+l73/6zMWz2V74gcadcXsBvSiYdo8hHDKPcM3w1yxnQOU8opwFl7PCch1mVhhdsw5OmE2pjx/sMYCp6Sh+sMeAJkjH8YM9BjRYOhc/2GNA86YT+KE9BvzIHkOXl73doctel10IuCosJyyhsneo+ReoZIdaQI3X3aEgE50dah79tHeoufQT71Bz6CfaoSAfrR1qjH6aO9Qo/bg71Aj9ODuUTz8B2nbmhe+Q2XfyB+BzaPYbJp9QjuMH+w0ywe2m4SMyPymZT40PtqvJHQo9M0RL/N7aYLI+Z4bkT7sD0XmCW6T7OHkuS+lpWVpfRoNvwsQnkHvdGVcc3d+bBIdPjLTOsPmomdi3Dwb2iUA+8ZIYzrwtIVp52r2J+HHwuv2ouSlL8wFm1Zfl4Iiw53HxpT2jlmw/ITLWeazyNLgJaJhR3wAEG0RknghZ6QzVWsN3LFqz5FA0Cx7IMt9Usb7ERz2kUo+yNtGMWiR61C0cz741y002U6n6BhuqIw322FoqHr59UTaZO6TJ3CFVbg6tFBacaJCSZlfZIEyofETymjOyvjkj61szsZkIc1MbDO3b1wJZwsnZsrBVY6Hm3MzrdVeThnPlIet1p7LFYitLKHNBBYgY3EyhOpjIwc2Tln7lsLZmd+qbJtXcB1bt0VCG15hLRLtDKuKWFSEugvlSG4cIzsZQ4ig4PLxWTWG8GgPKtHWruumIZOHu1uummeNIY5oqRp8NLPuC6npdnd62jFPd/qX6xke/VJ9pCa8OOfighZML5k/Mmztn6HJe/edy/t/Pch7A+opeA+vLeg2sr+01sL7A18D6Kl8D60t9Dayv9zWwvujXwPrKXwPry38NrO8BaGB9I0CA9grZCgAYWwEbtF/l89evxEL+HPhqhdLwVPDcafcIoii3utPvEvwrOtulF140m12CTw7ifnl2nfmCP15nPsypdWZcH+/vzAlgfZ15ArC+zqwA6+vMSwDr68xLAevrzMsL2EtrnQXAem/eDWB/d94DYH9/3gtgf4feB2B/j74XwP4uvR/A/j59AMD+Tj1lAdjXqTcD2N+ptwDY36mvArC/U28HsL9T3wBgf6feCWB/p77ZAFWFnwa4sMJPA5yo8NMAxyv8NMCkwk8DjCv8NMCwwk8DdCv8BHBIp7YBflSdOnwUnfq36HQf+dCsLIseHMS9yIbzhtKEFSarjoQLk9XiTTAcUdmFQxwX78oC6gAz7olZToCXeYKeCs4jYDgM6A4BDkC8Hv1XPq/rV96rjwr1YxHQFhe8koOrXOTg9pSLHDi5i+QOGOmIY9u2Vbz3eWPyWpg/qkYv2jqEB24/D+RNNMODABDNA7/Cg1CFoCLsqVDzYBDoDgEOQHzmgV/wIGDpyLyCB67wwKvzwFMecvB6ytMPqgkPam8LCw/8SLEjj1XK16yAjyhbNU6dzK1e9LlDZmfG6fHszXvizTi9mhmnN8SM0xtixukNMeP0hphxekPMOL0hZpzeEDNOb4gZpzfEjNMbYsbpDTHj9IaYcXpDzDi9IWac3hAzTm+YGac3zIzTG2bG6Q2YcXp9Zpxenxmn12fG6fWZcXp9Zpxenxmn12fG6fWZcXp9Zpxenxmn12fG6Q0x48TAphqFGWdvVucsXqFsPaNA0Q2v3DRkBuVB2dZwf6dxH50Zp6eXgfgqLAw8ve5GhoWphmdMNTxjeOMZwxvPGHF5xojLM6aG3u/LjNNTnaximdnOxDYzzsQ6M8piMRHMIjESzMRGM8zESjPItJ1mFoilZuZrW03tLNGZtcnmH5iP3u/ZZNNT3axigdnJSgbP1wye0Ayepxk8VzN4jmbwuGbwmGbwqGbwSJ3BszfO/P1zWozGHodxpkecgd0lzAY1e8Y1e8Y0e0Y1e0Y0exLNnq5mT+cR2dMeun/2B5C/J8wY0yNBYhtL010Nu+Zodo1rdo1pdo1qdo1odiWaXd1HZFfn0ZpePjGcHG7GNqPppUc1h3UlTAp19RNd/a6ufkdXv62rHz9i9aM/iLbqtz+bvbmlR83O1pSmq5jKj+jKJ7ryXV35jq58+xErHw83sHzsXKiZNUk9Y6lnW+rZ4SqFmU3UaRs4kB5r0iNNeusRSW8+4b18ZuPQumGlRw3A9pNGBE1V2roqsa5K9IhVaT1qc0pTz2a9njPUJEe1K+aUrTQYMKc02bZmZN+MnRd2a1VzykBMN0tzygEjRAisirT0Cv9amVV0XZv55huLvRDYMhxYwmuDWbiKbg0zSQzYJDGpGb2JMaUxerOQte5GQkaRNWXHWVeMKTtgaK0eIES1OGETolyl3zL0QzB09sSYPsqbw40pA2qQjgpBeVgzpgwLypFpIEWrqE7zDMaULTR49SJBOMSYsglYX4OFq4dVzQK8Wp1gsDrNmjFlq25MiYwHSK8fyxiKfYholfamiGML7dJXBWtIWzXBsFa1jYKyjRArSqhaHX9I69RaBWcxZavUC6lXKrrp4MdgRKnX9k+8EaVXO3Xxhpy6eENOXbwhpy7ekFMXb8ipizfk1MUbcuriDTl18YacunhDTl28Iacu3pBTF2/IqYs35NTFG3Lq4g07dfGGnbp4w05dvAEjSq/PiNLrM6L0+owovT4jSq/PiNLrM6L0+owovT4jSq/PiNLrM6L0+owovUEjynJtL0aUj3VxfwCj2yc/e/FsFve/FtzHYkQ5OGdwzaAXmkEP+WujBjNnQFULsxXPmEZ5xjTKM8Z93u/LiNITPnezmnFkJyusyrLCviUrrH6ywnIiK+xCMn30H2aFGUUWaiuAzDV2AJi8zNZg8g/MU+/3bDCpmZxkNSPIbpaA539Qbs9sGvn75v3j427JyHYmpo8dsO2J59bM1zL/ILL5hMhhybBOJmaOXQjcH0LOuo/J8PEJ4eyj5l3JpigTA8cYTHnCeBH/QTTcY5SYsvJxJgaNbYjGEy8R7RnMGx8zT2ZR67KCzUzMGVuozmOsResJ1wizbreyIq1MTBgjNNDjbZfoURgzzlzRoVUpqXYzMWIMQeOsSAsfD7NnYmxJVJiJ8WITHHx0jGvO1oQR7f6IJozhUBNGxVQIEW7N2G94ZP1JsaoJY/MRTBgH18rl6h5snbUJYxOwgYpQq2ejdYtCsLW/RmK8OFqihIP1atbMF1vDzBdRXL0wvWr+4Cwsnjy2eHL/OBZPbs3iyR1i8eQOsXhyh1g8uUMsntwhFk/uEIsnd4jFkzvM4skdZvHkDrN4codZPLnDLJ7cYRZP7jCLJ3eYxZM7zOLJHWbx5A6zeHKHWTy5wyye3GEWT+4wiyd3mMWTO8ziyR1m8eQOs3hyh1k8ucMsntxhFk/uMIsnd9DiSTv743W4vA+HtxEgl6k7aKxorJrcYi3uFuvrXyGnL9VerjK4WItXcQ8M4r7Dqrj9LH3uvYwA5pUlvGmvGtfKs/YGem35wH1WJqzk8T8mu9GJ8/7We//7b77y5GEIfz1p6mXl75F6WQWtN2J298A/VPcN9tmeRa9wwYmpfjEIdCsbGtjm5y1Kku2b3852SDaB9pEnzp/meG1O3i9zKGnhz7RZqzL2nGeqZ4mtmpV6wjvhsKo2y6oSTgQNe/O1Krh5e9ZUvqJ/f521JqHzVajoIzRPlsHAJCie7EDlrF5mQy+rkD4rNm7f7bNx+0xM33fCWeOgjdt7+nA/O4j7ZYftu3IrD5OPSTJwpUGAA46GYFtZWC8RV32sITF4odE1pmHJJ14LGA1FR+hRAQZay+x9obIX3Qx8eR49P2dNwkEMtXvDwmDLhse8B6jqeDRkL1hw8+IevhG1s/y8ofzcXn4u7eUwsBYH2wuUDX2W3A+C8DKxVX5vqXxfXfm+ofJ9U+V7V+X79sr3XhclTrlliUsIIGOsMmRNmK/EfIXFl/5BqrtDNDmxgxof4YX8Jl7ycxRGn03ky27Ek9sAiojbH5niD6v4aOiPvBH9zrbs0kCNGxS8p16DXzejluS5xBE4dGkkb9+ifSRK5BJqlEyaVLJkeGpFnAQEaBDz+KcmCDZXg1vqwavrwRvqwZvqwV314O21YEmVrrOpe6WfvPqrEHmYnr5P/KLa9P2hC4deA3/VHXXcm2fAffs/TNVwPzSIe3FkORvrzBemW0wzeEuNzfNWG12iKTO+HYdCGd6+uJcckKqyB30g3Or0yrpqiBY2hDJLuo60z78iMWUtMWSnptuSZvOVHJBiKX9Rw4r/5+2LNWYf2pnFF2FUU4gZ3vDcjxLyaujXLQb+kDLuaFSwgTaYdvn0RS0fgn7DdEXtrRYFtMG0x01f1HFD0HdMV9TdtaJ2DCtqV2PashA3mGDndIXtq2IDbTDtbTMUdtuwwm6arrB7qthAG0y7e4bCdg8r7ObpCru3ig20wbS3z1DY7cMKu3W6wu6rYgNtIC3Zzg6mkw54TqQsGbsE0ehdaPJ/M9rLZLSEM4ISWPQhPTqezBm/+zLo46JUGRCWRKIxkHAXXt6ENNg9URt5krweaU5KHY2+e7GyBoYoSw9MSDthvhLzFRZf8iNaqxyVMEqJAhscogDmUSpSTmWK95N3sBNpq1CWX3DB/T1DbEQtKOEa7p4ZcKHcq7hfHMQ9mIhSluLHv3GujRNtRSvq5B8x2kW/xhBpNHTupWgUuZrNVTmFgLyjA1b7+BPqxsK3wx7S8cejP5GwKlKwdigc3Mdgzs/AHAyy3PB0vnYRKgAnVyoiXa1a+R2XyHCSfBKohcBgrZ473SJjtMc+S0VYfkjbRFh0iHBG+LlqsYoU8R8/lFjRT4AmihSdlE/Qj4dHZiNFM66EfmiOFtMPTd9C+oEvZRVpseEy6f8Ll5GcEZQib1tMYoSJwvVg3STVQ1VHWjRydUT8JkbEW7+0qdIYUiuXysnd6Lu25ZazExs1hKi3uS+NZzIZxPdi5Y5QGZSByDuqi3dGg9TV/csqMyDagUUfW/J8/PS2HUkBgCC9Zr2nzSps6ZdKLgrcKa0gpSa/RFN0QtuxPfzXGPKIsK7q5ybwiPCeWlVt5MkZ4Y87cjHXIPOxm+VwL2bi2w4+c5fq4mPPx5aKSJSywAmWHFtZyKqhOdG242omdoQcxApIuZCaBnSAE33bGTIH0TMQCtuEZyEq2YE2ZdEWYbP7FNcvSsVlR8w4kod2Q1RW6iC8RDmsuywEwszh5CvF5F05I1cx4aijVeQjuctsGT/7KWl9lgNEM8sRymoLhH30W5VUVFTThjwxl7LLuZQul4SHyyOsSEf/ykRnIIiERzWQ/wFiB1OG36mPNaTf5RYr5BmE/8qAvr/2L1OzmWZuG447dPr6+kHcq0WFzTzNbKSstIxOE6sbYl6PCtnv9viyVXI0eJzfWw/uqwf3VoNY41CDTPHWYTE4EHfQ1Wfgztc9+r7/wQtnw527NO5suHP3IO55jRpjKJVmzEz0bfdxqRWT+Ucu85pB3M1WvVAUWfQr+rPfapNsdfmGHy6+zUTJ+5D7Vw7MSjZuGsS907UdY82E/w3IiQ12WCwiZiXSlmskUMF69BQlzAU3dEqsMW6XcY1QqBap1w93DeDzAOTBmranvD6gs+7Gs9p+f9JgMGlYB6UgDOUqzmODdEsovRnY+Q2w6Hd3z0rwvjkD7j99o57vt2bA/QqeWagKTBO3Iy/ZNAz3A2+7rIZ77Qy4r5+q4/74D0fDP9mPvLLlSEs0MWTLrHEtPT+eyqEwoLQlfK8l4f06IWdsY+x54LUDuw+fAiiV4nI7D5U1SQMEMjgldWaefP7Kp+9LZjf5PCC4s5p8/noQ92bwSb+IkqzKLPMiSl0loQ9CdgF2yk4KhnXChmfZfrPpN7G18y6M0tJXYw+AdzPAil2Myah/3MutZCegwnaKAcfitiOjLY1+jQgp3wMczS7M/oW2GXvPVzH4/HrHrNTi3hlwMX2q4v58EPdznhUM59yA8iHOMUPyDakbW+UeuJZ5tyjlhhZ9/xZkmlIKdov8ekto/sx7wXoqbSnvqY1/WJzRpBnW0oTnUcG8QsrD5MuvLZnsMJPD1CMkoC36sDCz99RG4xQhES+999iJLVJg1WADU8jNr/7hjUxsL5c0+n3yjfRRVFgadwLl1pSrwMMSjuZOvZmj/Zmjg+miDRxo+cONNSrIg7X5FL58DntF+Ny8s/bcc5Ov65SRcsEAl/llMzPzh62ifvR5bOPqxZViw0qxesEbZm4lScaJqH2QMdqLWMsPb+cHymzfupiYemxDz2MdzIwtbq9iuJO5kLSKrfPFIkIrLfqrKLwYf9QIrx04gT7WP53QROwi5CulYJ+83qeif3QsZzbiXLY2EWMz85WdfA5RwosauVXhdQrhdYzwOiy8WOOJ8Dr97akzcyJpdIeRBhtFFzFtammcOKsmRUAaxykbxxnSOE6tcQw3dqME7jYC47l38k5RfwyRIYQkSZ6kd6SPSV/TJEg7og3NOsy0oSWKsNpMdnTH0W4L06WN9gW6sfZNrsociZfRSe/HunyVHIC1pCSISam/SB7MD0RJBFjOre0daWHJF1KPeMhZw8BwnfJQc+rl52mM85LPoLqzPvhG4UZkpM1pCX/7pHKU0AWCjm0kyjFFZcGxjRGhzMnvnqz0LV6j3j2ZoTdi+YnX2wlE2WV+T3loHgd16aEEzn8WmQS5tQ6t4lezC5Adsz6kLAOdZbVmENlRysRdlzU7idew6D/XtfV/XsTF57tIoO4NY7sIuqpJr/evZaClgVM2Ac8XIDtzjuBxPWKOdNfQvQGidlZ375OGZTuu5wdhsxUlSUJCo5nME/kYtYk7Aku9fPN7vDSIYxPe8p0WhSMTnro7onDLhHc9l4LNMvp3DQqHJnztDovCQYl+C8J+if8bhD0Tvm2vTWG3jP8Vwk4Zvh/kQXuZSuguYikPXcQru0ikH5KBbDVAg5dfZfeQD3/fF/b4PTJw14/K9hvLWmi/KA/XQDR1R9kf9pAPGj9gzIim9B3HaVhulNtMU+7QjxVVUvCrekiki3xAF6lChB1+PJKyyWK0Zh6mWHlGA20Y0xzKtwK0YiMChuKmO6kNw5TtUqOQeJjH9EPUJGmI8WE8DUHURAqhylUagoIDcDyhH2Gr1HmEZJ3qqvO1FMkB50sfV/AHZr1F79sz2dO9Ir99spd8qxzinMOcPZNZe+XGPzGMk67D+L18I3oyK1VPlCqlmX0L+oa1U82eah/tgLwHqV0sxJb03V2n75ugTyYruo9jVvLE06elGEHQ5zGXQR9r3UKCKccmxGqYJqvpLq+nyQ1Eg3lG3ZBiCIoKSC67q7k4g7nsHsgF+kvyJ91+bhZAAAv2imaD3oECeZzEihbC5YhpCfYeK8GU79pex27YVkQ03xusRv/DZ4u+dG0q/Xz46AHxv3syDSpEJLsQl/plk/kqoAo8KmlwI5mG32OBBSKpvDUhsvUghhCW5MwnsFRICthnZSwivmreqIIbLyBBN5N3dM+G6Z6ZbzroKW1bslN+kUgzwKCAFskoQB5AXtmo4i2hNtdIOi/vWQTS2SEhnrlV0bl63VfV3BRbY48zwB7OFYAtOdqUfuoMM49AOsXKxylWPl8eoe8ffLG68smpzGIE5VH7sXZbaFQSeV6GSxvLDAkYzBEFVY4gq098JB8wy1NPGCr9XuNx62mXQYEkIUStzgF6gEEdlwYPuxXhrugp0OW8f95DtaqwkwCxBrGiMkOtlqtiTV0HskzaOMgfstYsoy/BpQbMWogvO2PSS+7WfVpXhMrY6awm+4GYe0SSW/oeqaeaL2jb+FklVA3gQ+QhKrr0Zj5l8TAacHvIeiRAewQVyXDKyjQ7DvVn4kCRKWWxpSnZ6pqin3rJVwtt18yvavYw9CRshVLUIg2516nTceSFdgRuyPdCe+KMJw24cvJWBtpKRVwINT5FNbnSkvQ0bacfQrzWCiwLUBJ9npPGlMaBmasUilc/xWA6gBepCGAVy4vihk48qVsJJNXARDWgQAyKds2d0CZKjlWIJ3wHsxXi8TCrGEn3cxKjpTAtjUsWUR3kzmynpz0B8eVV0E7IV+sWKES9KQzlaDgLrrTLnYVSF+5WOBqCo2ElgwwX6CIVUbGYnaDpcH9fN4+K8SdM3s+HvtQpQCOxm+kCTbouOkNpGk2YZQgbFJg6t4YSdpqxfG/m3dNr0usMSq8riBOEiNZHBhSUmV2zTO0Nl33sgikfXUrZyQflEKs4EWqgz1uxJwUcrwsodezQ3AIAjI4FdTWiDllDMVW63OF0uVW6bha6LKFLVCUhtMBOG3/0wi0sNYGIkCgeeDbr1bqiW++KMvoQFbTe0Th4qtzVpvW5xWIuSKJZgKhjVYAaBWVX9aIIgbXtvh7L5AY3pm3V4v7apw4i3Zt1N26ZbhxBTDwC4A3nam9mwcJF1falLE5sE18JUzoYzNdAEwC5NRC6OAETLqS/pzvo/EQlIut9vixZM2Kg97sRj5Om1VxqtUERkeFQBkPlg5d+/4BGXEB3qGbUqK/iZTSUzZukiCJa9LwqkD2g2nIbT9kPruMaw4drTZ+mIYsAcXgjBuzyNCmf1RM3hM2ouOgWbZUipademQXfz/DQFVAlS08qILCUeYYIFjbln6Ktdfs2MbKWGcxdrLOpS2ieoefGqkVSmDUJeECA6rST2yR9ejjCx1KWNx8Srj0txtRX9PilFwvAO4qgKsTXOcpH/Cq96NFxGaS5qeFoYS7kDOpCPoTC506SBlpSmLC0iQ2kGsXtoRR3Coptgh8F8CyJXtpPdK8keqkQDZJV2KsT7TwqojtDie4WRFvC5k4fxR2UH3JdhGYoJ8PNrh5T1uBFfFpvxAqjzSugdLqKAqsQ4LqY+uEglNa+1sUq3rHSunRTlqj2+pXW5ufaZQMSaANAtdraj1RbMy/W5w6OOVydoO8t+6onNoYzMgjG3D/gIgcarZi30NPD9F+QK8OyVZm3Lg1zdlyqvFekxEwVl7oR01coYFlzNHGPyVfh8+hHE4s5D3K2QS+KMv3Zxvdi1Sr7s+poP/74gQ2OVj0xVE9sKqAHYeUN0xL2gJboz66SZv8KyGOpMopsbICLhRlcy7ThGuHQItSRRRCaFRF7D8UnEu86NAtuXJ8lZ3Py2ziBbChhIcbA3QVwfwW4pwAeKIAYQjDCOMRmuFngIo52AFjSM2UKIOlBkSIXA5PBZHcJUN5hDlE3crSTQBU/27p5Uo1cnz9jtWx0jOfeaniyUsmG6zMfM77TJilMInc6bPidfJ/TSyMRmZYc5inu9g6mTEtYaWfNG9cfTR8Uo5pngHZsKCV441AUNcy3Jni/GkwcRcs3JDlS4pSUUBDPSEoWU6xaGajXTvlSTHvRU8GX9bJSlRU1fvau78mni9wDbrIG00dCq+0Ei3mnR1MSyKge2lAIj2eowCqqtjCX6aRmSD4k9BTDDmabZrWpZcyMASxTF/RozWI1rMg83J96ZnD8NA+Olj4lm/oRjqbzg7AoTd50IajUQ+0SmxkdHOZM5Wdis0qTlbxTkyNtIEMrkDYwP3S+75/azIohueQq5BnVV7FAN/0lNHZMkD+uoi8Tfa/YdzXn021bEMICgY9arcpCgP7cY2Ue6HOx5bXPihQygaKh4AQCug+IjZ6LAfMwu3G0HSOkOw2M+txKRxyh3Fzd+ZSnxcbmCSguL4U95VaayipbSjeUZss3f8jsTivsrkwm2EkwhH6yOEDxuqWuvewbdV37avSo19xZ2YOYHnfro8B941Dc4fr+6hlwX3vpxTXcu8bp+2t3zIqGV+lxZBjugX+6rIZ7hcadTb7bHkW+r38U+b71UeT7DzPg/vaXm2q4X5uBv9f04X59Btyv/aKOe0DjzoaGD48M4H5krtUpDl93WXUzDP2/oYYFMje29VzYwpXDRbeaubAg+XlDbDBvtlJXlbg3Ee6/9OEGlfidFP+RgXgX9hh6qwuZ3mRlTsdt2NjRQXinlfqSSUmmY4xrsgA6/YClAr5g6OsddEs20xd9FMVhrsEUKI9TFGU3OQfsi6KcBvB3aXxEVJKEfUmuqCT52PAkzb4kWypJPj48SasvybZKkk8MTxL1JbmqkuS24UniviRX6yRy7LToX4enavel2l5LBRglWvRJTtyRXXMPln6qg9Re8pVq6qyD+A6M+PMkuauICmlQVk0aVXsq6qm4p9o9zKs9GMK5yheHTmT3lnmnSUYgEPBVhcFFKNnz8ft+nh2gDK3Z3wZzE3NfAKOjWGJFSg7NA/zudU+Sj4WZhy9g0XVWOUv3io2OINIFiVmuEVOnZgioUW6GD7Z89G/BJwcn/jc4oAtQAe1wRFolgaeNgev+0pWHfDheZqDvuPMddzZOxzyLAhOrExYQRNrSQLfqTMUGoSHxqVNGOlw44eu6oAApd9GnGDdYtJt/w0Wf5l/KR1thOfQptsomO9nDLYd+nO8GMmcPxZFCVHj2C/IkdZzCrkiFRjbq9VeU6TkkZHqeqrGbM2Cf34+d30otJ71qaAq0260kKjItTh29K2R4bTYb/3a1NhRRfi9zyuOtutzx+wG5BYnQ6wXI7D0uL63wDaly8NVA50ADiZW4lipftwTJEZZRsDpmnmnxCsRACE9kmFstOKWieGlMCw3uam+duEC76Gbd6L6wI+nJnL6BTuQUHY/3nxVeMyibj5u5FQG+Kg00WXSShg1cUJ+8d4vkjPED72yTEidhOq9toRZh24ukzKDgkB97xooQZzU1K8J7W/T9yr39Y91Q3H+M6fs3XxyKe/FvLqnhfktwZ5Xv/cB9X20M1VWg7bPkC8NtVWS86gRew/Jsx9UNWKk4xraQ1AVYLBc5xnsq0FeA0WhoqzrjCT8s83EI+65qTshCeptsA1uyVfa+LQbHgJObSqBrgO8vgU7lQvpDddZ9JhpoElOHagWSoRVwpq2ArS3mkwhGJMhTIyZf1DMQDapYMrkDlkxyPtLQaHpd4sgi3mS4R9pMQWbrWYp614beddUeDW9g12+4lu14wn7OC+cVWgvKbnslplHECHyC4WAevxfiQv1J3guVKBofaXxJA/hEGkTaxydUCvptAF2E8hcWpbimfBfwGyzZdpELp1aZL2rKendCF+yp6lBSlnqdlfooVqFYCt9glTvlPhePvJwiSezMpto1OEGXFlDbkG9PL4evjAfkEJQlfdliz06sEV3ZFihuae8yFnQiA3K/pbKi07apoGyXVRovfsFia28lElmaHCKs1aotxpLQiplrxl1nnZji7Q1T5D2tpf2bWnhue8AyV64eyBRF1q52L23od1r0Xtkjm/xfNZj5GwMyLp522q9ftcFRyKLPFO4K1Cky0S4tIZO9gk8k0mibant3XtTrnqtcjCOwbbfLM1pt1Cs932UfzGwYq9UIRi1+gqeqRbqRKdZTbjFWOShhVWqjUJdLJl14rBgKSO7Ros9W6HdrxrWZayqgNyOwSHs1RBvLEF2ufkcI3S+5aIsmMIbke5yGOw1XsLhPl7uUAzgFAHpYSboUiPyVr/PHQ0EV3sXKof5luqOtaHbrmEkf8w2bUsUNQA5kofIM/+SYvQn+SSF1NiJHcKyJYxI9cTD0YW6mULgwOPUMRU0qpnbaUagJFBEWaJowfYjYrLWHUN1/QoS9ayTOPCQPe8xIo+oI01krbzRBkKKiSpG+faptooke5FGQhFLiUl5sGXvbqP5AZ7GLkd82uylt+r7zC9XOYnAv+1r90uPVM+B+dm8d932DuJCyegNRx2xa4xUzaXsGq39Zd+d4OU0aMrUW3Y5f7oFYJlllKu5jzrqi5zRKOLwYLfqcTpd8pT8eT1Yt+nzfOl2XzXekaCSnM0CrSLDoCwXu14Zmtac/K50NXKBs447YFgN1rReUOFhB9FWWqA8o3S/KwnTRl/jXX/RlvUi5Qy9S7uTf5qKv8G9r0Vf5N1q0l3/jRV/TZKTtRV9nUMeQ6coqtQteIAIiDwCvPBuqw2MeNHuifHnHJcDPqCxt5AwtHVMt/IzLQmeOivGDsQUnr1WGqHZpdudSL/HW9jKHOXJsIzSYTt7sqcTovXoOUZmDA2O0uTDYUfZTG3FurTn32MbcOvqcCno+l9SgRl2b22uUS/aL+e84Wdlw42jLIQWPVQuWRjy2MY81/MPWGrk851AgkTaU/VxPCp5HSoXKqsqHV67+XFmDtViNhnxlotPPuFGzA4Uxoad5VmY3IlQjvgON01EoEF7M0TQZ0sBCD6fm5cCAg7SSDF8GWLMWhJ7ZZp1RvwRylZXphlNaZrTZTEffKZymvW3lFu1shu6v/qZ+L+gfO/S9rX6t2qgLPVWxh19d6r/wduFgVgb3DX3FXjKIu8e33GGKaejkod7l76p1eVEeeqJlOn+OMXfOabjCVk98d7++KHOXRYJkgPHBwL8EeGw95vmGJk4SM70u5zY4B9GVkb1JVzbK4tSNgCFjX70233hiaxMOq034xNQmnLE2Fmrzzb7aVKOT3qJvzRA93lu0b4boid6ib88QvZC01qLvPCIvMcMYzkthmnInS7YpmdrU+KZHm0FOyQKj3vtmnFbc0aHva2uHKTua+kFJc+dqr6Usnn3SKsJSNn3mFpvEqNPaFqDncMPygblMWZfqtWLp68UzLo3wRY0niNsXa8w+tDOLL8KophArjeG5a5dGNXTt0miwjDsaFWygDaZdPn1Ry4eg3zBdUXurRQFtMO1x0xd13BD0HdMVdXetqB3DitrVmLYsxA0m2DldYfuq2EAbTHvbDIXdNqywm6Yr7J4qNtAG0+6eobDdwwq7ebrC7q1iA20w7e0zFHb7sMJuna6w+6rYQOtPiw4mkxa3r5ecUyhfW7btfkvGL87p7IvXXosJREAe+HD6BZtRsyHmY4z3xe7ANz6FkCfU6ZaX9JRPabVLwQKe+bCAfEkv+V2h9lz0d1eFWPSHWPRbUVW720wblMTJshMtNuW4EC4LVkrr6QkP1QRDQC218pS9DPrGU3BwZOVWt2+O4RFOdENohZXx3xOdJ6rLV5bYBwdsH2zLsdt1MKqWz9306TOzCttggd/Q7KWh8tNm9amZEGbVaQtgB8CmHB+FuAf6VTNM8Z2uAOYqYcUQF+TA9Ai8amHFCMwiB7e36LsDg0pBO8yZM6oo6tMqZiFCGGVnwfK0zOaevmxsrcS1VXKss1mn2Pozzjeq1tp843lrCDNCjUpbRXwvVs2htoq5pW+q1ZI4A0nYuB+AYQaZyAQIpo3Y7lm1xAR6O32CcIznq7NmD44MERPxeUduY7aMOXxLqhcrQVFxrTFxS+3k5F9K/zluuygXfYbtdkv3yA68QEuhVdtZbTTr1IxmIQowmnWFeuX3WGaaQEZPwylPk055nsvitJ4ClKgIUyAxgdxF5IQJo9cCQ1Fuyq3ZzOJ2g5Qn1rJFqUFhSAvBJI4HJq9Q8nJ7NdkTngVSzawpFVUO59DSFtXOKqTUfIS4YSUlls4oAaxPXgnGamEwwFcZoBXhRworjdjPUZQ5UZ+1tP27Rqg3XFMToRxJ0+olVyBj6gjlvCYw85qg2JENjIPIOfR961eq85qvR6WmUDNrCmdAU+yMh2kKPw0rGgJoLRaNtIkoBxGhdM6kriWaRksk/VoiLKycYR/5Pdk+QIoiJyIkqBkI6NtbcUaaWAXoz6cApltZ+udQS/h6b2xWeyPkKmvx/YHqygePTi36YKFk7qyVv5B4t/F5j7tkqsUO1ngBRRrVm+9sMmPB1Bo1qlWhxFYBU1K7moHRyUi9ZuEjKtyW5mhReX01NhSFG+hsZlC4gVG4yKaicMOqwn00PEKCR7okYQ23gB/O6AAKV9+Z7VO4gVG4LbEFNwo3LBRuMFThtoYq3Oa0Crc5qHBhgN2qKdx4uMJFXwuBXCjcsKpww6rCDfsUbtincIGhMOS7qgWF29KXFEqF29IKV/fwWLVAMotj2K9wobNr3Rh1N3yHKGfQlRHk5i3glahVSK+TvNkAhNOhUdOaxWGhGos8VE2DJ1cjAy0xjzGLt5osrAg/WqRFh+OmUqW3giGi0O2aQg9qgmFGFenKuljJy+4l/1DodlXo9uYMuv1tc+n747Vzo9d5DlxDBBX97lT0e76LPffunKyR6LIBTnnrQTsohGc/nNXaeKBgc556sNeYSH3F+Ntynrp5yj9LnmNU1rPsxvq/pIArDhopLwJvyLzrs7A8DMgszpuFXku4ZSTcKq7TWTyQp4EWa0ex4biNnzYzjDtlDBlu058qKAQorIFigOIKyIKwWyoalHKbBToLEO2ooLiJYyEtSNLJXcRr1VrKt3Jhz51pp1/eStjgdy8W7/nKhVm5Clctw4/xWYoGccRxIg6StQ9GmUrw1rv27VKLsyJpKXHUJvzeJc5ltM9VxMJroLKZ6Uw//iR5AJus5Dd6BLZ0SVDt7vQlyjHzwHTDyt/wi7qHqZ9OwEt+7RTlh5Z2/jfgVAqOCJwVRIOtoyxxJ2WFYej7oV+6k7JiDrxHFKqnzbQt7P5Oe6r62wAu5G/ZNBtXUA9q3Nm4gnpNOIDL7naUHd093nI3evQ6p03/rPXFr+mL5a7szP9T5gjHXMc6vd3VnRV25BSg35j4h9+EDcnwNQ4vDVowZGkq7vsy/0wZ2c9uJ1EhL+jH6KdSELt7l6b3Cjd6nfJCGJQED1qO0RNoKdd1k8RNqi01WmmpkUinx56mmXEPkHdmUdvkHUgHMnESSktHzDdMIiM5qK9X7QIrG/JYsM6QQvStrKNJbWGqsLJ5FuFsTP2VNO9Q4ZmTaXMl27qtbPwJnaukkQpS+k5j+tcGJY5MZZVF2u1c/N2w8qGHgxefm3WgELn9oLqhsigX3AFK2zK2Wyre8GHVxN+3q+DD12Zd/c7C/hP+WnXLdxn4ynT3PZwMpYpBf9v0PW3Eb6ospvnGCeqI7rK6MbflFHWjbCZodO30l83m6eJbdR+T0JnhkWqnoeq0Lcq6UPz6cG8MGZcXZZqi2cBZX3VYv0CaXixC9aJ2hCeMX5R2VJv3BWLgIFcVarDsIlBZNmCts9uWdjaG0IaMWugvxWCFryrAW01D250Efe3cqrVzi75heZt25Ka3h4bBKBNBvGAtq+8MdfDLR4UcsV0iPH5858AKvY/QEaHcwpG4pmytA5GJ3mkufDIwWofC2jEDhSK8Au2tJtWKvUNOoSIA4rUCOzdNWDs/YKUeZji4v2Or5tEOKUxiXuvMLJoU+UMN9L23Bqi710Lv1RzHhSR01fLaiBzsAi2NUSpiJ0xsw8SKiHlcQxhMwr5gMnPFEvj7YnmILsevymOcH9U2DdYLKUlbrsSigBZ1mnRMOSwMiAfzYdSqXBavHr1yVjoKZDzcGn5RW6676G48hob/S5zXhqiVjREG6VQHo2mHlQ3LJ4p09JNIzfXpaKTzdZFvIPm6Zb586+6sc/Uz4hBRW55Kwi4bsvaQr66KW+ZLmmpEjZ7FM4ARaZxRNE5AwhymbUqi2meJg89SscSAvoguijVVGy1jqTY6P/6+PaW5Ez86ltyYxtraxHX05VZIY/6/e7gBzdxOspCZntFkqqtCUjb6v8aLKeyzFnTFg49PqkWvwsZVSJoJOuZNxYswJ/w165Wd3E1WThX/bUxbzBh+3Ad5BFTIxvX4+dPJLEQ+9OuLgui/R9Tu9OsdcT9sVI5XVko7N9KCFkH1jOpcIYRntgtbW5vVzHgkOJItd0dVXg8eL3xqn4sL4mhAYgEUSzeKavf4EBL1BHPgZ9EEaz3vVY2xeEH5K5/5+yLiZoKT9EQlk/yq/BivFdG2HVlWSh+z5dQ5TJu17sZlo4NJZLuvt3WiPhFgKcXoYV260pm6HplyoUB4sd7+dAZEohPH009rvhbS95aHLxo2VfnylQCXuPfOgPtAH+4PZ8B947Y67o807mN0+WtwceOmivvQJH1/+MtDp2EPv/XiGu7mhYL7eGn4yNvq+b5xAX2/GZbFj0zvjwX3sU4bZaQmoenkvjEXAFAvoCBpqjRyfBnGAP1SAGNVfLY3eP00beH7Juj78iGGUPlOXLMAps2PKUbf9axm5RjBl9IX/UCb79yLX+wuTYL0cNEPNfxHNbgslOWKoLLXpa3q6UxLWbSJwgcbOE0tzs1lZzX38e/0yWR/6XIgD9OIBx48ORUv+rGxDILRCRahNRs+H6u9ZmnKIJceHR7QsbLzerAKionfplyEVcg3XaHdPX3wVNobBeAOlQ/md8jdosdJkm9wGVZuNGCgLyAHRpFiJe3gkDi3qRJ+1E9ou0ZoEAkFJY26yNTTZGYRc9CDjx5NV86AVeWtWAoGPYLI0o6RrVq5IUyS7qyVKzfTIxUjnaez1otfFIzdMT15ivTRjix+I0nnoW28ehmgtygm4nJ8QuQ1dQSWFFY/9jrodDeKhvqGKJinewtIVZE2U0wGr3X6+a9uYIXpm046l74vrO2Ax5RrPi5GT9GfWVZpOmwWpo2B56oqpjsXv1G/rPRq7Yzdou9Law7W/59HzFX8aDS0rMGwMpyhiFtQxK2frBbxEl1EuzFtqnch1QPvryo+U/DKqV0ok8JTU7Y+EbUKD9VRU9MUR9vFk7bUIslstrKT7lysTRzt8RWhOHPxE2bO6bwL7CpHb8PnKrmtcKvVFdyUcZPULub7yoXciQ5Uyl61lsqbWKts9k869WCw5lx8rxNfpRS17txzdVdN2JYbA7DDWVM+2FH7GOTv2RY1eIW533vwkhqbvg82feA2AAf0+IFNdZa+zoYev67qw/wfHP1MyAxus5XFRPbyQ3q5t44p7GWWcMp9gax/5bTaMrcu18J371RISd1V+cPBmsxZhSvwkwo3DDQMto6KMnBFm3qcj8feHxzZTPUoU33fzGLCFGyQ6AeNre1tZxC8nzTo+18Hhw7g7gcbKrj3z4B7xfcBLnE3WdPj3t3H80tmwP369ZfVcC8dxH1bXYKdUoId3VDi89lIsKfbhSUY/J1Bgj2RYEdLMLVDVYIdkmAHEuxUJNgxEuwMSLATobkBsY0gY9NxZgF+lRbKxyjAduM/di8Xd47HNmZm0i8gGbs/8lh7eUQEPLWREGNOiq5y0eOHPKBhGX0fMn3UVfkEQ1lVrhgu60tNzITMwUbw6ZP0i5eOWUfLchNnCjCCdHFHgiqhG4CPtmIuXDN0dlwU/W+RbBavjKnTija2OfxSXOP1sPdB2/R8d8dZ0V+sLWXK8IUk2DDHAtvRGzn7GqdV0zkmnWPS/V7irHyKqLDyQ05nQizNYzPYulFuzaDv/hktf9mvpmaj794xiHuEZYlg2CDA2OGvY8NAfCWfhRzI00c/wrs4QOkXpYY5I0T3A734Ygsiyc2OalJmaymzWcogixSfK63vVsGE/AWMANmqSBb1HouEwtUlOMIrXNqBxCX9fAZxwmpJ7q5las7V3RciVoocPo0kSqNZuiiMOkXedjVvm/O2kJtVJsa3FmOrEOP6oHXXzvogcBca5rVXVheoh0DyNyobx874JaGngXRN0SDRN9EWuuVSPotaqTZfL9s2AKJTSJsqR1oA7ERyzXElf0QVVFsnV9I6uSpaxy41gJTF7Y2GAXeUdb0UidaYuQVEeyr30TSCqxthhgZwkZNbaQDXNIBbNEBBqWMkE5wS3lg13vAudZRiQkl8v/HSlRsvwQdtiqIFLsbrAdwCL7UsdAZbVrm4oZCHkoMwAlIwDJoMgxKZGoKrrHI887coQD9iohsIFdazsdwqOhGuEJt+hGawHCYJVy9MKZY8bYblj7zwnNnFhT/du98uEqWgirSfWqBLBt2orGryaU14TQVURQi0SRbDOrhFvRX7RlJxq9LBsdVV7eBWwZ3/Tnq60sGtqgxYZQe31yJKOevOhUSAqZXOiM+6bOWVDm5PnzeckGFBiTb5VWA1h86d0Zmc/GCZXshThvI4x0YaD1Nab+aH0Ai2LvUdfacxoMqqID/kFedlIVGcNVXh40q4FCAPLI2zSDeIiiqqsLVWhco7V/moS2mAH8JMrdcnIa36YK794VWKgnGYbDEjb1ABSzYVrMoitnbnTLNAim+p5loU6UQciNYiwi3Y16qyr8VNE6Axgkr3DEz3DPqH+aaKVqVyo70yzDcRhkaLy2G+VRvmIykW6cuhFUnSoGpBF/cP8y2TrmXS/V7iAh7mg2KY59YlaDnMa+4nVPuiZbnerjREq2gIV/qLGdGauv2RpU/FpGewYxGSkFW6xeocAkOFSUaQmiogfYxmkgYpGwifffq4iSkJTApKRYIazThJ+ZBL37/YctFsJikfngH3nm/Vp8i3zID7y711Gqa86XG//rV6vhcO4l7iWdbgFForRfo9FR0Kw0Dj9EL7F5pT4N0C7tP5mnWujhbQ8WvyqRK0JrfW6FR6VQyceF2+r8TROfWnfKTcSupG1+X7+7KLB7J7rKVAyItR7UBfKaMD2T1BhXPEwevyB/sKnBjM4vdIBw/dFYsT3RWsQrRe49P3G/cOWdVZ6Ao13NcO4t7mzySGK/kQDufcEmrQF+i8viqMiOjqiJX+5uv7pfH6odzV2TtFwpgS7utLmNnD+WTPlKMhcuUoZbl/IMvhLfKYSjqkKGmCSjowUNJwkXgiCXg4KCg4mCh4cICC4bL6eyRMNehurwYZwmpofxTKpBfNMKD8i0/ft3/mktkMKB8ZgotOJJMf+ES3ZM1KaKGyVsn0NjqacOQtX8B73NWSn76a51Hyku1mB7vS/HCrM+XoF2yjToPxk/1AXRA9qVwlWIvu0zul69rl8lLm+k2dZyP6smdbG33zWhY5wm32W2GBlile/DZxQQrp8Lm3/NwDBhwGCp0bs9Z6BiLOJN/Eye38Sae0PdVc9AEUwE/NsBLtHdZopBF0J3/F9JXwVxvjGn91lIWf7qL36zotoZDFcxnKnEiY01Odoxsg5qCeassXGQ/G8nV4T0XyZT27QRQQMxqWavIrf8hqWaOptP2qhYvrTZ7HH9sI6Kt7dKNN1Xkfc94+UTUxJ1kht1bsZQywCGDsR/gSw/Mj3ZCZRQA4bvlF0Zb5frvHDaR3jrDrcQCRuDcegIj9Nv4+YOcNxX7iR16pn4yW6AMc/WB/9EniL1jn+EvJ0Zk5R+sRcpT748hXOZSXS//snPZ7HeEcv9/doET0h4CyxJlyYIdE4q1FguSBfvCAMXEMtwELi9vukOPgb71HXl9G035t+9Ad237cbwzijunjGekb/BUdj0447KxJgGEdOJj+Wt/yB49+TS+pPrzr6he0xY1O3EblA93gQJXHys2L2h3bahRPaRde7uz8zfb0nrWAkk+yWbmvKBznntho6dwdOT71VHEC3nHthuW1Ijklbbbt3C7dFSM/R6IApN4klmfNVXwlQtna4dRTGwvyyZ7xykZtnn/h8299iwdbIoqE+Qm+Dmv4ZAMlsAWUg1V3UATyKBsFK3ov+eaWuqOsJtLwCiqSvjQJWiK5JYMcG/xAXaOSpRNpY7nqLQ5bRYRIBvm48rWgR+mwpNeboZZyipvTxDyYwoR15oLIUDk1CpV23NmYS0mUnfwMHUzOncMi5hRzcaz2pMCwu0h+/rMDkGOKvV4fszXo+x/+dWBrFbhv/HUd9wcz4P5jX773zoB7cV++P5wBF/2uivuvwP1gzb7+05blDNyyBEt8Y+DAz1jYIrKBCGzZJSC0rnKM0OKBoCCS2zFB28E7c8LZ8uG62JF4xFgq4FUiFrBYJdaugfmG9V5RFa9SFa+vKp+3G7WefZLu2ifpvn2S7tykYmfq2VSBqBAWxTlINjkf5iu3UMQ6MuQ8ByLLS62e1LtyVf+a33Fd7KIuH7To+9LBJgTup/pwb54B99cP1nE/NAPu+/ry/fAg7pnFKb6exCwV7bq8V+jZpeZriflS5mvCfCXyFf1g3PHpqc94o7j0Te1FPyluWV2ND7M3benNOsR8RndmATbEw281AuAQo3P1f8L64phTLMqBKs7ixOuoctiohPeubXNGnXmYe0EkvaKIYEbjdimrE1gjdsP1xkYj7b/U1f5Lbe2/1GE6TmqPyVtPopvkQSfYBMmRra39YWjPwbbQrn0N00Z0TJRRqKBsXGqEOPEdjE9nXTsSo6oq2oRG+1gFrTWItlCjfbyC1hxEU0BL9mkPntI2SrwEI6KCuVgyZFfMZApwm8mXjAF8JRtE9byXFCk8TvGv1RTuYAo0AQsj2+WKD2DO4MbNZ4ovOL0hD2PHueBMKACknoMwZDpPkj2MMxqPCyzpiaM97a/Ulni0n1VwXe+4r9JJR8jK3NHSO65s8QRflDRWwrWRbjAsKuF8/aJ2Y2KbKS9ZZyJCZ1BBfBBITPhCYcVqmb5E0D0GWjR8idjgBwu6VXkraF6o7CruaAnNPH0nyUP8niLezsM6bRNntBN5TqN0DCYn75qlyiZe1um7ygI3SodgmikjoJARtlvyVsIppVewz5gMSu9fn65mKv4nF+3pT6DdeNnajVeg3Xj52o1XU7vxamk3XpF24xVrN15tceOVOtqHl4dKX2cRP6Ubd5SHn66yTc0TrnKaqEBcd/niuqspnb8lrrsicd0V4ydWbfxEuoVaRevcYKkWO+uyITxdzSe0EtxphaqDShqIuO/aU8OZy08h1tHmYqIlLweruBo1Lgw1ieepMRMNhVnxpyUy6uchi5MnzkW5ohAdJz/fiHvVYMDiuaEaRa418IiULBAxXLYLL6QoUTyBtgBoCf8JEifREO9SH3g/D25bIBK3vW747vKVl9Vw9zWmx/3N/nq+35oB98uvqed79wy4372/nu9dM+B+79J6vntnwH3n6+q4d86Au3VrHfdLM+B+47V13C/MgHvbljru7TPg7uzL9xMz4L75kqka7vEDqNJt4FBBC5QduxqYcEzRPZzYKuCl6zAt63ah61NbPIOJ+YNMWDJbOVVco8clZ0k9oVN/Y3apJ6qprWJEFs9X/di54rhvDY1bzHH7hsYt4bhvD407guO+MzRO7hKLe2MNj/gig5XslhHWtM+7fnJpXf4H+2Ch17JGTaM1AK9ptMaguzqd67VDcnWjG9pWMNynZfV/QrTkf780DoCLfqqrblrH+Cnzo8IF5qL9ffzxEKPbH0PVz/rjtTUdzV1wZkMG43nCl0D84c/N03EQXC7g66Nu8bXLkuWqG/PV3Cl60tDDL81zm3mTwK0IWHgXDuBQRzdPaVMvoOhmJFkvogwRkZzc9vE7Su/H41cBMa4gPtzQmItPbjv43dUASptREJ6ydBZTNlmJ512KCKPcpp8gyt3UBcs8+vEiOFXEU98t+nGiPKIfkp0O/VgUlyeUyYX2aZk7SVzx80DRB4Y/n80HF/3bMHa6xQQUw04w5GWRzMk/sdcW7pGn3R0WauPQA/Cor0Mvv1NthL44Ug5efucIPPmO+hLGb4jjLSY9ijiTh3/iSSa37cWDksD5FZqBe4GDt+hPbkdoBwcPv1MEUuEJ+pORCm/TI0ObM+Q2aQmfmlHuC/MCYV5TmAd2ecIutzwH0p3LKrrB9yz6/tE7h2y+Efj+Ou7+GXDfJYOLwb3C7sdFxe4NztGec67ajUNLiAz9C8QNNoFbRfwvH34y4jsU3yni83beAEumXHrJy00D6VNo5J8PXdrBQZZeN6QhDHdOZ+m2VCgWxVZ/s8fFy4Z5yAnQTqaGn7/7kloN3zVQQ7BeJ3OmTfbeIclaRTJ72mQfGEw26Hpc4354CO+hPtKQ1zCLHhjGrURcgbvlugks4lm+dnfk0nQsP/jvMpdupRSKNb9VLs24+tJMUcQv+osw6u+X/TEF88eLlfpE8mW95rIjQOiyWnJHaeqjfLOkpzqZtXb19kyAp9IdbknBdEny/jYPGRWjeQlPAJPCDKz1twKWXHmy2+0lnyo0/q9E48vktlvR9aS9p3WzaOX39fW8G2Zo0V9vrfemjw7ink+7bzn2Cg5o98K/5l8fvUcctNlEz7mLfqP5zbPq3qLf6mDP8N/YFPHyOPmiqbcD1mOX/PO6cmK9tg0m/trgO8cC6EG9IBICwmIcUgGPhCACc/C1FVLC6Ulx5HU1p0aK7p2IwlIQEimPNAITNNqgkXH73h5AsjMKW7QukS9bQd8d1gMa7NJGUNxF9wxFgfUh9QpBWioCE/PBASI9vdCVLJQDzzff08zDeOR3hzx3ppt4CvjXVO/mTI97DUaY7327egPmIQeX1X4gTaDvpoUqkDtouJvG8B/V4K3y2heYbpym04e+FA+joFZlQguZZ8TkSxqGiXHQtjV2s8Qm1nBO5pKaiYC4OWJGaDYGbtfZ1Yx/CE9cJcBUV/nrht1461JGcQ7p7dJttEB1MtyA50p5qotbbkkvC6s1cpWGlLQ6UjOxKFOh1M9M8AfrBk5wDu0SYqvOGW2TTWpzBW2RdlNBOVKjWP2GqD5zi1QX4tqlOvIxnIoqe75flm17u2j8bS59f6d20zK3ojfDDD+HHvid6AHpoYO90i97JcwE6UHHJ6pjXmVJz/Rn7pniUn94z0wodzg4q/c8iRvXXsZKZjZqxU/0lY76IEvBFgLckoDfr2q4yunXDcx3f7huYLeVT5Bu+AJ0w1turOJ+Eta3ix4aGCdc/cT44Djx6GXABYJx6KUsGAVXBr8ffLE+RfmOQ98P/urCgSvATtl4dqkVdMtZ6DQW9RDkrYtLTxlS3B19xf145uIgqXnaL6n14vJG9BPLcTbOXW9tkAViauUqtdHjV6UORstjnAnlHO5MpK6i/12behiJj3EaAKJH0v+uxba9Co5xQgGGJ/5/Z96/b+WVv35uym9aX5u2Tnzywd17L9v14o+mEUxgt6cxpYiPcRJJ0T7xwv8W/+7hh7/1UTgTUZ1rU+NW5fg0UV2VbE9HgBqmoyeuPNb79p/+2T8en46pUTV2bTquxtXI9nQOhdrXpnOBlqTz1Fw179p0Qk2oOdvT+Wr+B9IFakE3usKm6i6oVndpX3WXIIMlfdUNpfB6dRMGUnWvP/nZV1z2uU9Wqrv2B5/5zq8bT+mvrpIUbS7CVBV6ntkMYCLcNrV972//9vJk5MKytif+3Y7PnvVnf/avH6Uaj6Nyc9WImnst1Xge2DQh9Z9PwPnXpgsQUumkWqAmr00XqoVqYnt6kDroA+nB6uButMcfczZaG1r0r7nep7/RerLW3mCt79C3tT7aaK93ycGRt1FzC0b9cCOinFVgkEwIoRyW28uVCyuSo5T7FHs5XzH2lttL2Ud26str1cQ3XwVrsC7Amf84IsfTZn7X2667301bqgluEasiFZ9GY6ElDFqTdrlXdNFPOfNEJbekIydevPvTf7P0r+45Ph2Fa49r0zEtMstPIJEYU+MQCWLRNcQgV80Fg11wlvj0pnRC4+7LiVMTav5fQzpOSie5pEkqaN47wK30IAyV/KY2GJYeFKmD0kMou0NgKMzEKKVuSVPJOlPZm9NFyPrM36a/Pj5drBapxdemh6pDVbo9fZIgPVk9+c3pkhP/+v9Z8N9vSl703PQwtUQddm36FPUU9aTt6eFgylHpEeoIdTj1MoSS9KlU4lOX2ccRMcKzp4GmB4P0SPW0dKk6Mn26Wqqefkb6DOLZM9Uz1DPXpEdRPY4yHHuWov9dmS5Ty25Jj5YSlqvl6mgqgUaXYyj7YyR7aa9j80PSZ6tj1bPXpcdR3HEwO+Byn5PPS5+rnqOeuy49Pv/RBekKdbxa0UtzQsphVMBIK/ETpieoE9Rz16YnqpXqxFXpSYRy0jIIxFOogJPVybekpxDoFOpv+ZL0VPo8tZeepk5Ln5er9HQKnt5Ln6+en75AMnsh1ewMIvVM9Tz1AvVCdYY6M+F9vvRFhPsibg1MDf6Eqv0nXG2I/Z+qP31zepbU98/Un6mzDEdfTHn9ufpz9eJV6dmUwdlSe0n1F5LgL9Vfqr8wCf4LYf0XwmIOHZe+BB3hvxLsv/bS/6b+m+4IL+lG7249BT1qDvcia0OXvt31+Edh+nbo16nBLYLbBh5sdOkfUtqIISj+2RuHKmddqoPuR93+KTaUtKPc5XqzTpQXGs8Bb/z8EOmB69JQ3vx2JaKpu2cL08E1KaamkUkV519/23W/cUhnxeiPpK06qvuCNKEGGVGJGlmjHQmNguucYgzCebuDTggVRd1vjpp7WjqPUkyQjppYk84n/PmEf0KjMXU8dJRasNxeGNuRVGJSTd6C3pfcy9eLDqL4gxBvRVLAwfkXr//JxW56CPVIpQ5J0QfTF6QZFbBIZWrRmhS+CRcbgg7Nv/vGu6Zc6oCHUu97UrpEPVktOT09jPCfog5TT1mTHk74h2t8Nz2CK3QEwqCHut9Tb0mfduLEU08867dpcwV6nTpyO3W8penTQRQjPUM945b0mSXSUeqZ6qhr0PPSp0fq6eh7uj5Hq6OvoO7nqOVSaSn0GCryGFPkserYW9JnS27QJMepZ6vjtqfPUc9JfsiZPJfSP7fKtOPV8bekK8oUucrVimuoM67UKU6gFCdU2Xhifud3N1/mUtc8kTrkSdQfT1anvCA9NbeoI56qTluTPo9oep5h4+n5t+766CUudcvT0xdQ13wheuLp1C2t9Ex0yDXpiwj/RQUb0RelN0qd0BtvSc/SFM5fkVJ/VH+2PX2xenH654aNZ6uzb0n/okSiPqj+8hrqfv8l/fNI/Xn6EvUSZiN6n6P+a5WD/41K+2+mtL9Sf3VF+lL10lvS/37il9Jnblz/tdEV6f+j/rv6f65J/1r9tWbKyyiTl1XZ+P+q//eW9H+UKf6n+h/qf16Tvly9XKf4/yjF/1dlY0/r4lWql65Wq9K/UavV35yR/i2x5X+pv1X/a016DhF2jiFsjfycq9aoc69Mz6PszpPsBL42T9JXEPAVvXSdWqvWJT/iYv+OQH8HFetAHZ6fO+n/Vuer/70m/fvcTv+P+nv1f05fYFa+f6/3iWQqsF6t1yzbQJlsQGFF1AXqgjenG9VGXbcpixCmLOGHYFxoqQstnfwiS11kXZFeDKyLGcvSWJsstcnSmVyC6EsQzTVamF4KrXUZoJdZvXSzpTZbWnNdatGEzHNtKEb6h7mpeYoNrqD0Dpv93tQ1l0awFP0bPmEnjNQrTIXFv6iTX7Am9QFTDXFuQonh/2qrcl+/vPCKa1PyPij82SLnXmYrX9yFioWMrHzruUBBktc0vg99nhRPEyIhWOnrm6TaGrS2MMmuRDli5RdhE0tZq3AsAVixsraHpsHSWiKQuj9ODA5AN5F0itjPKos4lPrMNsMeG6zzaywjXmF7FmDimvM4ueYw1yjfmfjms/E2mAcEYl7AzLNL5tkl8+x6ZVE+kgfCvBJbSB6aBoTriBrzBsm3mPzofzkWj9MigeAZZPK9xjCkQc2j7Ndn7i1GRV37geTHEPwTXvLaj39km3JR3ke3vuqE1378Fx/ZdsKf3Hzw8Vu3ojx+Noby0/YhUt6llmWvrxf2wdQ2biSLMnVhh624VtlvL8prffXtz9lm4ubX4kDDthOe0/rqc2uFO2ZVtb26FIyiGy3bxkRjZkqG0pG6w2lIPVCuNekzatT97/96/K3g1E3vTJ67TXknPMn6DbFq/F0fJGpnRe5+y7HWOxsHWFfM6o+/NrURIWLtChZEBkIv1mVlzXySesshFFMaLGWvIXqzQAXXXsN/P7Bc+wUukeAp4YPTIYbY8POLQlZsT/mRNMiayy2v7+IDtLaaZ5GhrWzKEH+RYRR9Hg3kPMENNLx5wBCT4phaw330n7777G3KP+Gcw9/5L2jAc37xam7AW8+8kxrww7teggacVQv+1nFsbsGBhpPr21odNjCgy+fxf9W2Iqm9ZfLdQwlcAKVV/b6WDgArWRQWLQ3b6GuU+/asqZpF0R+99tqEt5hNUysfLTwzpmnrsNLWuFTso63NUAJVDxB8qxc5OsoZmmNXaimnF7f8B6lfY/b1i6JfSPe1+rvvY+m0yh+qAA+55MckkWue0zp+q6kud9jZYT+q7qvcWeT6B6m26H38nVW1DfYTWu16rn/oseV/jV78YaimY27a/Ryoprt+/RA1wr996XNQTf/+hkL77KfxUPgv+yLWpP/7FRgKX/7kD8+W3F24sVAlNlgjs5XC8X5wmj5hZEVy/prU0nMZdyUWLnRTYdfxMEyHs9x+yPkDkHMGIAoZy/ayntUou5wIUySKypEI94D0a1qVi/DRTs+1NngbMfFS1nt5T2Bryv5jqyuBShVl9m//DXwVQbqfN5l56D8+pXHZ0MIFnpfDzS6xI1BUYcSh3ZSrp4E2T2KdoodkzSocEg4y9aZ5UwVSMyoHYR8VRCdQjR4e4ajmKcuD52GQSgO9NshQgtRDOZVk/OhrDzNKszwIODnWBhbF8nHWKmZwsArRRIlJj1bUFTBZKLeSoQukshL5BVRLWSOAu2ZdIGxDeevAyJN/r7xDmWtmwb7G42Nf4/fFPkjsq1oe1LjF/yqTlb8CgXqGgo4oGn2wI3plRwRfvXqX8qi8fsj5A5BzBiCKM0Y/rqprS6trikRRZUf00BE949MLUsEVQf97aa0iUH8+gjLhcPqGKBew2iREilJhRRf6w4cHIYOb7oOzww5BdH0ygiayjfIJpM7iRMmZTa7daHDCCS78V21+o7XSc7dl9quAc8Z/ZZwbUqc8HXCiPh0MrgTTNn0TsU9s06Ojoel1b3O1w5QZmt5F07vABre4rQkb39xnHGl4nL9XWhcLUtOyzZnaqqHQssrrIZ9ZJZChLqwMdaEqrF705kbZUsdvo3b5//cmafz7bhIow591ZPjGak46S+YpZ1vmVBrGuSH1y4bxpRWpttsyt4Ll3pAGBks8AfurxMqjX8n61Kz6UYfwvSd87vbbjxuQhFaZVYsfN1TNtlUotYZ5wpB+wf8QNQqV/8K2XTwkGCpCrQsdNONA6c985s+f+/sufTr1VCcF4N8rKdXidCekYh+5RJuyL0aUxkxlWvUycbHlg2mEyqmW8ntZTDuHiMOPfrAJ0z6QxFfJm1WpjqaT6iamAm2c1cM/dYxifRTrqzYeMdFFU3wbHSUNhYAAHqL8IQQ0URPdlWeujeQzXRaqNSvqdf5BJf8WyGyZYiR3N3YeG/v+k334sB8P+/6TfVZsP3b2/WfntaIie34iIKz4/4+iN4dmyMW5UerRCPj85+BaoIyQ7QYNSucdLwAMWm2mQwBmFJE46OwI31DmqVcM4fYsh3D/vQNo1TFc0GzlDowRYYkVRiooxxWPq0vZepUEXt+gooIP8pXQeHBksQDkFoln1SKxyFNca5OYGoPNHWLV4UZpo5FiyECsfLhnaEMC4kIQ4mGyhJyzWLX78kV+ks90WahgtpQj/6qsBiAzqBcTDhYjR2Z5o6QSWObFw7g++FKYxLOXDaU3tzCnfhRUB4bf6L9V4ttpUPbfGP235LmF/tuctib9PG8O1kbnw1mUR4+xOXqU/FQ0mzpIlxXRiatHksgwtQxxscPMm2Vruj3OeDbYhHiBUBBSKViHF/uB3/5DHo3N5lTsiTwQk+ODy9tyTYT2BHPKWN750N6PCLClgEC8YchbekVim2jg7Pu3hkaC5/XCC74gVZGTj4D5KVv1u0QDHlY8XedpCxqihqRUNr+idQZHZ7grCiE94MhrILDp3WMd7Syhb7o6d7Sj6OMiaDf6nhDXZongwVtaSJ+ELWVlNmL3uAq/9g76zfe54jWVPve6PUTj8yb+ZOit5edt+lOq1EC6qRdIibtfKL/76Dff/IWGZErfU/SNCHwf+Hz5vb/yfW/le+/ny7R7NBxlT3m95GvyBGTuJQ/ha4GmA6ngu/yqkzWv86s/yTcENvsEbRTA7QK8uVkFXifAe+Mq8AYBXpVUgTsEuHusCtwpwANzq8CbBHjDgirwZgHuPagKvFXTmVaBuzSdi6vA2zSdT64Cd2s6D68Cb9d0Pq0K3KPpfHoVeIem81kVIEhcTuG9hpd3axqPqybdp2k8vgq8R9P48UYFCsAnAbj3tALvvk8z3gMAl6n3C3TqUzXoAwK9og49INCr6tAHBXpdHTr1GYburEM3CfTWOnSzQHfXoVcI9I46dItA99Wh2wR6Xx16lUAP1KFXC3TT7hp0u0C31KHXCfTqGhSNx4AbnmekVPBuqqfeKdBddehNAr1dQ7k/7z2XY7nNkvtxKVjCD9TDaKZa+Iq+8FV94ev6wjv7wrf2hXf3he/oC+/rC9/XFz5QD4PJtfCWvvDVfeEb+sI39YV31cNgYp2+n/XRVwmnuG0RfWLo00DiZcs8EVQcx9nynCGGDn3RdNe7PiRXOkL8wwXg/Ah6bNw5zBb9D2u/JcnrXidniJKvK/nqS/Z24XLT5M2JwmUYGBr1YiRz+zB74dHOLooFQRPL7JvxSdD4aGenvMHIp29ySXRN//tB+4r3Cj8unrLuiOl720MADr5BiOf7Krh3zoT7lTruVx5Fvm/oYCz651nl+8ZB3J+6lr1xuId6cajJd/iW0MiPu25WbnEPayRTaJcFxeV6QjiwBs2NmcG1GNoYznyUnvjT1woQPbEWRk+sh6/oC1/VF76uL7yzL3xrX3h3X/iOvvC+vvB9feEDtTB6Yj28pS98dV/4hr7wTX3hXX3h2+th9MQ6ffUw2ib5qOG5no2hEfWn/o260wvG7S59v/XCi2cjcJ+bAfc3bwC4xP38IO7P57sheX6z6F/plsMadMuBaWblUSY3c2pqRXbnXcLwSj9/2hmnBO52tUCWHMEEj+Aim4685OAsoYkqNIqNMhc9rK/JsY1l8u7LIOVykxa6QKa1YnVN/UCsvTe9IHO4IEUT3MXiwjO58HXFI/Q20OkjuQigk/R7imlBZoykKACj9+0yV/gcsesAGjhCzXQsCgSux3sRKAZgh2/CSlYPvJAfgii4cd8LKYCPPae3Qwzpn230ULKPGY3+BnyKSsWDx01MgIG/+QwVaB+Iuc2n8cldkC+UyaXSc7eusnSzoFywYT/9RdrkG8W9+o8WnlSMQzoFcntZy7ie68G7nP76hPm6zXz9a/GVOcadGx75z4I87UEvxS+ouhMlSu9G6fyII6JxAJXP5+kIatlowI9wkI/whNBA2G5iPecLN1gz52vrfG14LW4e18Dcfpy+VoabJTCGQKIDowhM6MAIpYKPAVLC1hqCK/Kf3V1z7rFMQUuKnzfb4kGoT0kVE+LD47HQgkCCgNASytcofRmcEQQEZ7BFWZIgBw/iL1r0Wyg8tQsylK2f5Idr6RdId0Tvw69ktt89E7DkHgjxAoOafFectLS0RJWl7x8sfT/+VuWp6AkhlxpIlxldnbvCsZOn4Zh2h8BsI1yeNRCD2AIi4Ju7kJFzdBcIxEVZGgmXuJRAmJZQ0HCw21ORNGpgpKBDMCMFbQQSHYgRKKQgQkDpQAuBJTrQRGCpDoQILNcBvypgXlXA3KqAOQgUWdsIFFlbCOisVdPkOyo29BPlNep+HouLtVo7hdxEIQtIWArIgshwHTo7uRj6jpSs8kpVNamncmwLT2WckQWF7fseUklG+8j7qKIpuQkdSlRVfqBSJh1VqJ28XQuLhuUW9loKyXDhf7VUqFD8jr4IXVP8Tk3x22Y/I6oqViDzov6rKNIoZBl5HGA4ZuQBXMYencUExed3f6FRuskTohw4fjwLqlkYE+gsEClRoARhwxjx1FgvUdAFF9S7Fb95oIYIQLtWebHnjMEsKD3B8VmOVw8OxyN4FS+/4wuN4WQhRgir4U/tmQ4fMf34GAyH0JGhnSimaAwI8BJwetMe4pbhtK0clDUwPYAqkJL0c7z6mroUbBiITDX3QMimFw20tsuEUIzOCJiBbvQrvthPSr5+eHtL1EDVlTM9ehVX224Nb3YQvvtFQ1uS4LWWuf2L07UMYgZbcs+0+HuG4t8xHT5ihrb8i6Zt+RcVc7/pUCjGCAf8ugDJ0y2z6d/0W6m6ZdxBPss7Spoo0WPSxF5UGHdqD6hewWtl8wR915ZSE1T3QzFSLLOPULZ+HMJeTJ9b6HPX5sOPthdquDoargRpG9SOS0xXsnP1jqird0Tdcu+T1kLl523lp9kydcstUxFbvRNq651RDu9DuLqTaXY4MZGswPdXvg+U35UdVLuys+pWdkQbZkdUfNfoJb04YD8JwmyVPpjsii8VvTixiwXHu6Httu8ZdBMJ3K/UcXfOgPut39Rx75xH33fCx/gg7hs3X1bD/fzEAO4DXcurbpVY5SvKmL9bsppxAOKubJ3Bi22PBKoyXmC02Eljhle61PAwYvv5HTvJgcfvZHLlcy4Uw1CU4Uu7+8VrCDUEpAezk17FFMuGENs1naFLzLx8DzUhIS42JSIGiIszT/L3TEmShB8+5xIWl9ncIdksqWejHVIOzQlxyMyQW2a2VzI7opc8pDOr9PId6ObAlEskBFmi2ckDgyd3Cmq8vFC7+9YMkb7u1/kigwCS5ptIU9HPXsuk9CJoerzlJ24dnaLp9SxLs5Y9DJmmtEnfo++Y1szstsVuv/QqEhUSaYCigpFLNTVhPmiScqJIG43iiCcO8LyIYLv5xOrM6/HWDMTrNjfZr6UHK1bjdUcEBVWLV2ts0FAmyHz2/8TniBZz1EpLAXxgMAHREcKWikoS82nX1ApyhhjwzpIrP8K1oo5+jteCiXv5buH3bXbBJ+gMX/hkGZ4w6u2Cutuu88VWHowiLTEoVC48QzUqfoNvL/z76k79qzH6/uSeoc90X/KaOu6BAVx5aVOXZkuthEu2tAQ2iQZ4S40mje+hUgVTbxrANB6HlI866QZULtjpUblSmmwlDZbiYQisloIdpmmLOEkb52fSyuh6YLCX30zT9+RhoKZeZS58qwyxWBr6RWe9W1LcihRT0l2kT6H1pIxIWtCSU0y76MOWPAVqmx5MAxhWc8tlOjW7/ylb+hr7N+yMjuK6uOv5QdhsRXG7001GdOk+EJSV/ITXNKN90PsZ2o/7U4YmfdD9DO32QX/G0E4dqmxagT7FbiT/xrHtvjQ/Z2jcB32AoVEf9BcMbfVBf8nQZh/0VwwN+6AHGBpMQ+GvOdYfHku/6+UXqL9hVG82qL9lVHfGMp0+Oh9kqD3kmSHdJTfNGeiS9RzuQw7y5EjqiVHVgIIys35LfGIhg0VTyI0OEl7ITqXKd2jyRvSZg+xko11sc+5q1N0PD/9f/7aeIzuE0tlc3hrkmSYiJvBnMf4szAPsXiW/4f4nFGPdAiKFGgpC0mSCse+FqYdkuzCmIY/kJ5zQMaumCewMSqFNWpK/gLzXoLfJxHCx/BxBGAFG/dYye0K+1TJMWRWVqASwcJm9BL+3uXi4Fp5X6BH4CJ6kVHT6ZBpTpm3UGjgJurSVtvE9jjpTybtPB5CQELgdAcXUYfjrxFZ1YSWuA5uqy9YnHW3g0UKUvsajOrnM6RM9vInrvHMzihXPTC04has0PqUJ5R0tVN5B8aHoHUqtEZzcXgM25tYr9O0oUOUKGpGIjT1C0KbAMHJhfw30tX5NOgKwks0oR4/Nr1im7xdlLdWqQsIBSDwASTCNHFEhkodiXAKSVCIGdcMLAt05poKMDxbu81dj8NzZ7HErZo5yMdmixnORyM+n/J7izw658+4pil+FkHZ7iDbJXDATApK2YmHhiPi1wggPW5dT9NAkQmQYhuZSTcBGMJrptnLrbeVLW+lFl4+m8H/PbdUFWI08wW3VHWyrkUfTVrp5ygZyqCEehF3ZzuOpXZCMzPKOk09h9kJ+LblgvK/9iHsRmL4kHVmpH6U4Ikuk34D/4vxxdFM2utK6OB1TxPMzSsd6mr1jZ2oFOXrmSTpXV5pjDI+KufXGGF1pIyfK8DIqkNMql59bQ7J+uXCNXCx5nHLhqBClzF4u3H8XcuHMWi6I4NKdpJ6cOsVIePF8uC6/Y6jryXvuruM+CNwbvljFxSScdeWN6WjOHmeVb9iRCOl+wZWWGsEcnleeWoAuey7Uh3Kw4V6G5R7c+TVQDFBYBSF3JFXCnxazV/gTso5DM60VBdgCp6TwaslaXkXFV5+ca+ZbPtkYquzw7OHHKQrfcPyF7mSLxiPhARBy1cHEWIYmFh3I/147DfN7P4PR595PEzdyC1wBUVowRcb3Allc/PnKPUU/QkmDdARbShXxmyqqiXMKOjz/AK/pFR0zv1++mqrVy6i3rwdOM7/65o090I+F9RXYgc8pbz2SIxOkyXc6q3sqxOdkCkYSU1qFFIWk/HvoSeVkIHN55sNj6AjPzgGFArdrJNLusJXhtuji/AjKLj1tUijM9xJv6eeGz/DPbTb+bv4sB3bSjxBayUrodcBo0IBGX0JZ+iZLRwy4HBgG4ed2G3+v+CwHbqpkieSOJlbuVFNoPEMX14UUkwwnp2wxyZiUocDlV6cESfJEXtAV2/R3q8ePCcouxJbTsyaF3SK883R+Qd2mfC3lT2ZwEHGuPnLlhw2zloykMKlvnZYFk6Kv0JaueCbC+pWaDFk2KTWX2QW2Ciaz8LSsNUkxvo5RHDN5GmUTgQY+ihZmOrwD+R15vULPDeMgqr8y0XGxDBrmh1Yrgy2Tg8pAM2cvKEUx9z6PRQs1IeT7qG0KaWOhaqHdLOnEd9NviIl82dQlXDmV3JA9dLQ0sMkRtns0s7B1DiZn5IQc+gm4uUnow3NBe5u6LNd12Xx6WRekGayLoflB0BzJe06+ti0Sf9KuZv6rIY1QERKJYYoLrEfqpvFMf5J2q8/pIZaO2QNqQcu40DLQKzp7XRfcOwmNxnBUaLq+2+uny0x6UTe3fFJJd58z2p7M4UDe9APGzgX9MjI97pdnwJ26/eIa7rcHcXVPLvux4p4Mut1cM/6200+bXEbAqEDxoFaVAyYtXkZdnTMBH+6sdI5ywWSjFNNMu805dAXKLZV8QkcZcOosukWe/kNpR1oTyi1fkLGivnIcLoeBWNBZyau09YhE6sUfHym9gJQwj09YlWH8oR/lsg1HRtDDHMnmWfZiPOQc2yVPP3bZZTWebh+cCBAg0DRBBHeZ136daFfT8chkp1m8paNqRjtCoZia8O6/Ni9xKmYnbsXsxKuYnfjaTiQQK5E0FOOQtCmmIWlLDEPSSD/8EYtRSNoWgxDxDV83TYGg89E91iJN/KoW/434b8x/2xwfqA6fd2P5TF3gxvVyBC3mNPWHQBvaZiRP8MSnqTKQcRRePgZqrcRI7q+0VHjjpS8m1X9cw8U2MR/gO/yV0JfNXzi6txT7Ml9LQW0SQgYiPZiF1KoV5OsNmVL8DLRaufdIZCr32IaHH7ZqcPkroS+Q6B3L9HkcZeELUf0UdR8FOf6M5EhMYU9iaXsSq2JPYpX2JECt2pM4oMqgrnQfkRzENo2Jg966Ni/sEcyVNxsz/3rSoBNrYTqzNoeryzXn4ntdPvWQs0ZR1Lpzz11mS+suv5T+LLkUx3M4v3u4cfEmtK8G7Dv+YkiAhPYfcvGmTSwQCB7oImqCvqkATrSEvh9yAF2+edOmTdSTS7JkTpz9fssLK+UlvSMtmgcSB9j+5dxnWwk36Cg3aJOZ3Ky2paVfqtSjSD+7xUd/9UlcykxpVdOd/gzu3XPp+0ezO4N707wB3Ak2EJf3S5WLLe/kErZQ+fAhdkz3CbVi22mtykKhpWYWm7fTpoyHLW1u7OQOgezyDWGMzW6UuwRtYdYc5X/Xy88/DfGcTSQuJ1tQ5ElsRcBK2vgFZDzKPUm5MP+rXv7XnA5BJW9bEQl+2ozdCHkZShZnEWc5pfIpTrzDpQ02mvxhIyWg/HBvkNTGlqn1p4G4MNVYWYxNTCdvAUfFVBrgOwmud2VACM1F+VUnD0uSdWxRBFPttMlbbxRIaLmii/mYdRr1o5C/L3Tw3RS4i++WwJv4juR7FN9x3sb3Yp0puKzTN/JO3uU0iIswZ15G9MX29PbYD7r0feuXqq3ORMS02sxfQcVFRc1CMA3bkmmEUpki4fW3X1uZjAHwHQ2oMH2hfjiJWozoJBp9WglFkiEB8SwVZ4YHwTAgop3o4TQGg/d5TJ8RS4RlHp9YmzWRGVWTH1BfRnlFQuwuV0USRdBdDA1OQphNjWL9uc/N2nw8gk02CCH9Rg7qG6umrB2A2S1eQ1YRlZO2mQpnDaI69EtJRQ0iURarWKxTeB1Mn7oPoGBcD0UP12tw8G9VGoG4du4IW+y1xKi0WeSGdSZW7TpDk5PEuRQ3LAKbLMNTrEdu55fkndNHXkQYWaRvVHaL9LJm6GAB3jG3L9EShIuKRMLM1KyPNJ87YFGEo6oOqgTxZ3EAmFWCc4oexYiqpAf7CczddAkRN6p2QBUDQCJF8cRtKlo2wulfwrukDd5bwV7BmLMC2JWFWkdFvUILdYJQ3jdzIzXaDnILzwGkXdVOx5gGGR/bWOxRnMBH8MaPH9XwVMu8rJv8iJNYWIQgKusQ7Mf6TL1IJITIe116SE3aHrqlzMco5bhIHPH5wTvYwuKSi/UUuSt4+ft3XGLgbR+lLWQS1Cn8hF5SoVBJxMlMFsWNSVzbRcNKp0ST0cCiIrA70rdTpeWomcfStuqmI3oJI8c06KkQHJBbMchravmnlqNT2Z0bK8Y+gJzVF76jH0MCutUBSyPdS+rmFFz4YsYQMzvzeab5elADl1SKgN1ELVgLGWM5U0PYw0lhRxQaLJbjU4GebUrbdGYVQVTJ5j3giAWOzLLKZV0lH6mtMEJqDbs4IcyCcqrYxTV5HdvC3faiBQ4MFLa+L/xgP0a1/qqlgy1QB90agkh9U3qwQW6zOaGYwcnnbruSY2nzpmc1+e21aJi4VYO1yNKerYmfzafrPHhzQUfATmrvi+T35tOBiAUsh2nxVxv61c0nvvlN+O9rx1/LQ8zNbzcXnbdn4/p7f/7XSr7x3/9gRT/+TvEoQLyOFDeZak1S5VHefbh8sE/M/c3MbTcsXinywc9pQiNRf7dr+KbP1+F7NPyKPvgdGr6lD75Xw6/ug9+t4dsNXDUXXYiRPWsRvS+k0EUI0bBI34pgtwJ2scBuwvcm+d6J7+KsFri00L2P07MyuoufEKaLYy/U7OXSwG4z2LK52le2VLdqWiLXTTDRpu6KfGnndj9+/WU8L8aWwxT9YkPuAODOMlqO5BaUAzea3BTBsGI2Gj6mze2lDH1Bu8XbBbFjpjAuRvryfgyuWP5bo8d58i5iXbVRx0gu4nyb+hYTkIFUFtME4uZ/Ex3o6B5fPuqOrEjFUlZSFCXTWdpF11N2mWGhEGz0LiEfBGMGi2uflEGhfu3CkDu5ppId5UVgrrs8vF9NL81GXeduNBzlJP+jMr/BAPr4ZvHxLfloJNeZ+gt9bZv5CPtCYSH3uu1nSK+7Ar83E5kAIuddle/dle89uipoowMug/G533zi514XFZVO9LNSmNHetNNxyYVcb7TBokvxzeZL5Y6RZkFQsMCJ8KO4zsmrqgKETLQIa/NWWwq0tCn4vs9qIQHBcpsem1h7oYIyo6ruAZbejzLAe42aEiuhenB/mUQZ4AMlcMIAD5TAhQaI7SC9hN/jlgapuLdTGo8W37qOFdsIuTT1K31pShKbOwXoVN/uZyQxcRgDpZYbzQ2lteQvo0qkIaDbbmADgMP4coEVIpRQKMTRQKip3OeexJ4WBOBOQ4/bR49TueSF2T1as7JP4fBEWBv/qxa7zztZinFmKsZDtrWCwFq3vl43ZWKxbkWRlrpyp4+UGU99tSZzIPl666w1whM8o8EcZWO5DCRP+E41aIJ+1zCdRdRGrDZzRIAz16fyOhQRa3daxbZkM/p6gLX7BfoehPLoYphyXgCylLcWvrrxWldTuIbPlrbBJGKD/4mlGSNE+KF2xpSxKS9ROiugAxnbzro4ciHOYFXTFZXbpCSd1RmV2V2FZVMCdMwxeb2lwcBv42s9Tpcb2jTFLlAdnM/E3ICjajQ/5BXZaE+NnkfAcBjQHQIcgDg9+o9ZnqBFR9CwIziRLSwG2gRNePanKQdhI+VDHMhxhACU40hPjSBHZCcCYiwPkE2kLCwZ4Wn0RnSBiHiUUgx+2rzAyjoqFN+VhsPgLs5QeXUz6qxY2cByQo1oDsMeFqwdZdaOwEFN2hEcLCwVgJQjTtvRCl2gXFCrA5D1YfzYYG2wvwtGDoApUfmiiBwRX6BZhqZSvPobK3yrIr2tbEoPMm1ODzSwZJRZMgaOdMGKLkGIFaMqNK+EKPf57QbzIeSu3Mps2l5JW8rDktyDzPH0Gx0S/+gkehSc6HKMi5gRKgWHtfjxqQTtsnhUbJmxr23hwNjWJ+g2/VkPkgIC8PYcoBASHaGP1fUheyE3IXgRqlHwYlR4IY/yh1xJi8kYLAVtIcn5YAwVfh5SVzb3PnvDhbUNu2tT+v5KzUDvTTZ795ZDWzkBmeJph6gsnhO8AJuNonqtRR9mld1oLGs0kADoeoSS90DzmyR5JkaxyhP58CF0tvKQiadfmc93CKryk/ez4zGhwGF4ZimrGKCp/ZHO4bz5EAoRq6TMsrrv++mlteq+HjZ0P/zS0L1MHLxWcbcP4r7Gt5uk9gqf31wn5gc7M5JjSBBcPIUPWJiF4BvOi3HPkSeAWGvJJpFUJlYt/GCy+PrLKqddvgw96Fxt7OYAqaVvCsIIIIa4xIXVTXvlxvWkAQpzeYh9Ubs4/9R+bAeouKjdpxfT95dqtUO1QPE4hg1XBTwLUxY9G67aGyBe+ISdIE+9MOuHXN+O71C+d+Pblu/b8B3pyw0C2gUQEXjj1HN5QNSrw0LLhZXdIBXwVBU7YSwOq7IYecT8fmzeEANBR7NTqwU5kwfO2uR+lh7s8KgQvqYcMTqx0Z0hg6HsCdvQYjJOYQIeO1rkW0rGh0hFnGuGHTRQBGiZf4mcuwZ/OGrhNqsJHaNbR9namZeFukhfEy9eRbVQf10tdzBPiPpwRjGHYigzuxSBPXs31UTgq4MiYHDf8Is67mcGcZUb2Y0oLlQC5rl3h66PacFGp+JkwKnv6g872jUQ8Y3uJP9aPXz3xCYMh2K6apAduUbmyMRIFAezkFC0ykFQL3VkpkNBykbrJ0vmfojEOii5sfKMu6YICkvb5rITFNfcXEOCf0YC2Izoc2W9F+lGZf0+CZQy+HFOUdQrwx+kp2DuCDVmix2nxtUt9jfDkPoWnMQ/sqeI+7v0/aqLLp6Na5KfDuIqp6rIlIOpdVhpuczlWah+gMXBwObyBNTTE1D0NwuMtbQaC3D1/uHGmo7bsG1LzzRhHhZigYYJhfCYTxEbf4I2klgKm7mvxwdZ4L9gh4c5B9yseSawEW5Jy9D6kXohT2hCHNOENyrvMFpcZvF6UY9oRBXR9Q/9TAQO9Tqq/WIemjoqPouLj6Hv3DzRqs1FLUGSakITkvRpXYX1KsVOsPGGYtWl3VT231eGZ2llAU6WAzb9Yt8CFOMi99dZ3oUVNURPOFse8xEW20hZlYO8mQWuxMulCM1P8OWqM0gbrz8av57wSVkUpl8eDDyhgmuKzxvOYD0bwbzjBkoybZnQaJXVKwpj9WgupsEMvbaizYRO+kFsAyVAFMvrh2708OIAo29Az3Z06OCwW9hE7AlWZdFMFv6li6QsNt5M2lgEtWkpnHb0c/9dee4fzyFrBEclCnvpyen8zv+IZAdNey/aFicuOFFSvqhqD4vPOI+hrNXpvDMhr4RD3EnyVvfkdfD6w+DI7gaaM7a1L0n8OJxh7lLumK/DFejJ7VYc0XFG2oYhbImEs7CmdliST57eRh4jq/NbabTrFLcSeQbb+Z/5IefhFu0hQMKNCz5lIkHe6fdwPrXzhcUKMsFycAjGTRUM9HCuJzJTsSAll6D1ObYCvFSANcs3aY4xXIrAougp9k0+u4l9Sbth8pUadjCMOcqTuU4HU/UOxEkuHnR53CsnQ0BAzeVeWV8OYTUHGMGMUw7jKqbPP2lbGKKrOZTH5ekcRZTeQ/6tVTudG7ciIRCVPMqmXFBdyQ+yADFT4zjMj3kWXMqAO6MAxKqt6N9p2egkFRJGaHnixZziFhaKDiABc0UePIb4hXJvF+ey7UK5fyCh78/+w5CBoI1Bo4b7wZlwv1LHvXkG3G/uv6SGe9FC+v7QoN0zcN9+v8a9ns+q8n+w6Hv/nQAWuKj9zW7alkEpBkuEcWlHWJl2hb3pWN5QRNdkNi935YO4SS0JppKXswnIUweZzFdd/CxQY/iZVO770oUiGwepeZCNg5VLBq/pIWpeqqjAFIXSd4L5uu4LCeaEHb48tfClWlBVsiqNsYY+KcsQ3e6xjCpfydccFeqvtp4v3Oqmi0w/uPX0dDFIuvn09FDuIAn6qu5eHRISVCq5DF1J972ByM06kmAJFogafDnAkVJ8zKwOVmkvfZKah58nqwR7JGNqDgQ1pJ/lPcV6aA46f1e+bHPI01aHqsWc64iy2OJ2EcWHvWQbu4tbTIFxYo7ewleHwDgcCvfJKPpQ4uMigj6JN2go0AbAIQEntmQxLC89fHWpI2H0jXNFJFDuJrwE4aQML0V4ogi3CZ9YO6YWwUB9kZwpH4riPQI5a7MY0XMwWZ8o3OS2TdoQkTUFoDdQsGkjFViEM0xTATUH2bQBUwdxdkh/fu8o2+QI7VmGoU1NYAKRbhmppPgExdOWBmrQlRosQvme3sMC/V00baUKJg93SBUwYqhJlWDwUQt6an5PzdHDjVoMlQOFg64yV9G/07I2qR6VqVFFH6ORUligKJXiJ1UJ/WSJmqCNvkIvRqKesjYrKFG3lV6H885FH9R2g9/j33ia/psgJ+CzhSB1whg/h0ifPUj67GEqwc9TlHtzerj02SPUEojwU+mHmuhp3CvSI+ln5PR0HgH5jkSKW3RPz630GfT7TD7jXEJW4nokoifsCxMCYsQzef21VwwmY9E7HdC019J35o7UI15bdZItZZcTwOuks0lmSMQ5wAKShnYMpdtd2EDSYdjIZah3sadO5bpU7hEoVsx77PQZnExmKlG+xTbJSQL0/giJKKpFqamFnimKQWYv6hl/y7ZGkFSd+VGifXSlbRTi5LZ6+iRl8PSTcmtt+nTJ4engyVriHabRxLceRwDYYxY+nb5V+wVtu1I2wGy5i/Ti4Fr3l6X8FctNQV2FGALIdcJn53AIMP255hjpOhCzDv0AnpTwROBJP3wCuXXop5YP1R5d4am17vQ0KAQpGB0pawNFsxX952lpR7pyPSvpVaIm6vrBk7bu1ARHdbjp0R2tdfTzdPpZTS2SbIV49EsHRcwgIKan/d6asVFrRoCjw53tpU/u/07Jha4Ik1u50v7FBoIJ6X5UiXI4iuuQxsXpCergFg4gurnHFioEvAnANmze0g6VxJmoGPNs5faS7cgNexikmtKjUItYCzR0rjjF5+hIHaViSPdRGLOflWMoPypdRv8S6dcYriXzBGlIha8V+aCBOnkbt8Ph/6M0K6dCQRvE1kvn5F2MkW0L6t+lQBsD8v+Uu0dZR1vnEUonbQOdRMLHXotqp09CGGyOUcXsSdJyTwKlz1KTvfRoGXNTtQwKa3kxVqfH8BeU/AJTEs1VjqI0QDxW+5BIx2SKocopxoSZYnTNFKOjYp5fZHrZo+cXscwv1BweiefJ+Ixy0zPavpqv5uAf2f0tijA+g/k09AVre9LciVpEDN3jo+Fvp3n96/Uh1xhPfWQJohESCMPtfvIWFo4UbceAdEwrUNoQM6hjpDevAqI8gHJMX9SbEMWPe1QLSN4MsCg41BHkYsWO8CL81MqQ0hUUOdkvjLyJexblOB3OrQbHGo6j17sFWqS6PIWin+1OT3X4Ui5kb0K+HDOH6gzMoTKKN3OoCZ7SqEWSTGZT+FrYk6IlpHpCUD5l6YFAuC+cTsSyGqw+ujrZGsN6SSZb2y092+qY2dQNBOpUp1s7GZCUgJsBGJhwpWoM+nVM9OuxMuEaMxOuLiZc29ksbHnaeTSzLpwHmiqAsRZhA6iOeELnW6nqoAIdUwGeVOv5VlfO2soazHbS9RTqLC41H827Duupg7B+xrxLHdJTB2O4mjCzr7QdKYUpFzn74FnYmiym2Rc+VYz52BwoHdYh2gAm5pVpAjBLJOlBVy2jIOm/SfxMiq5oA+/RLLcM7g9+Wl/GffYQ+r53+DLuU3LIYnBvH8RVzxQVO6fizWEu1rANNZeotGFHaes1nt5OactOSFt2VdpmV6W6no6n3VNpg9kiLqM4NR5FXi1e26DnBHWzd5T20V/Xa/zwQQML159YlrWxb2sJNHdc125YbBziyYaopRwxxVylqFqgRbnJPbLD7MbeI2F+XzCd2K1hlgg/EASoy2kvDr7zYPr+bK0CZWZlVt+t3Y3S95Cwvx7dhupO62QcxROm3ecInBptIrfY1c8MHrzfG9P3r344NZvt7Pdp3NlsZ980gPuYa7HwkWvxLyjt2n+Ylfvmj2jc2dTioxr3CaiFeuRa7EZpX7p4VrX4tODOqhafGcT91rjr49FlvHUt9RCKXfMl3iG1q7ZBH/YYY5eIDwH9UPOzk+2wZNZ+B5W1SvwpWcnVIIsEeWanRFhEngJ7A6lGvu2aKe0dPyH+o2Mom70VULn40os00AEXQpzB3/c6cxzXw38Nr/Kfzf080Dnf+sMLJee2ztkbnrOFnNuYfxUpP3n/hXWa3OEpbaSMqym//KFNknKBTukMT+kgZRTpVO/6leaBr1O1hqdykapVpJr6sKYy0Kns4ak8pGoylWB+eUKZ3/6By+rl2vgmXidXI/iBLCweEgsUfx7/V/iE1IhpwBKUgV2hEO//VOCZp+mwlFfQ4YOOoCj7n7510ayoD5DKl3ZfDyN81y+y+Neigd2ZGzhEFp48GqyTfvchIxszSl2zekqYf+hBw/EZW7eFVI7Q3DzFiPpbb7xYkjd18sbw5JFJ7qNn6tTXF6nDmVPHNZL/tb+JndieLo4nknlCAmIK3VGgdIpCtRboGCnJmm8qrLHzv2Yr5ncMPCKHFEdqveG1G3jL9Tn8ONwJ152z4fg0FN+tthE8BvMbsCUsDSUnoEKsJk2OFuf4/OemLVZEFF8maumjTgglq2s/x7vjGNsL2W3NQnbbwlSYPPBxjsPP6vEfFV75enx8dCv8Pb13axqK09uZitC7Csp7rwpfPyQOu8KRMMV779ZBnMxlfgmRpuV5DeQrfkXZjZB+pNqWVxdt2e1ry+7s21LzWX7CersS/qNrzuGNCbT/e9uwO9CGo9SGugVvKVowKXSmbsFkxhb0yhb0kKN9qklY6ULmSkXaHOhGt6TNiBklr/x+IGtx6L/Bco+aG6FGA2848gc17VBGoWrDxg5i4etn0X5Yl5fK68136PHDm1mDjyCVFQ0d2PidZ3xOQTqHEzdLwaq6RUfTKnavjpWhpZy2GBaLnzq78i5czUNy9QkeK//Qd2WsMRd92/T9mm8Nef7GwkSwhnvVTLhfruO+cQZcTFyruG8YxP2wbdnTT5MdmSZr271yTqmsSQEOe70E6Uof8jJTzV3lyh2MzGmLlaPD3cbW+/JpUSLun+xzEbsMOSgHpiCUeO8W7dyTYO4Mk/NLuvT9vltmZfdzqcadzeT8skHcOzr2PHKbOHBID7ZVrJY8WFE50oFzpTxcVyarM/cVaZA/DGtY5a5LQ8An0ib9wJcYBI+4h1DCWgDWd3akmtgJjenHWQNXg2x1zPdw024OrAvWrCqvZpo93cKBuKMt4mSny1ajRIWK5GmYVfAprFyy4B2X9URTUmymFOkcNaqaq9O5lOs8vZDolr7oLDWX2lEeuZlQc8RvlNyFVWMUk82nBtSXX30AES5v1/rYC6Ki8YOD6AkY8U5gb4mqNLGKYHPxMxf86MiixS1N/nQZPU2FzpS+rR4lUWP4HVPzoKvnqfHCyHtcjREYQjhGhjnnqjHlFFeFTgefR5V9GpgkvMnmqxa2Rwl6RpU3LhWBQUZMukEo1aOJXUOxsJpQwantpppQ4fPoR6oOTNnjNJ5sXCQdAaEjagw7YmNUdzHGFjrUfHwzETaTJrWgYoYjWRopQgXnwxkL0UwxL9BiSX/1Iz/tgOBkhOXop4Z03dCQaGPZSHTyRDcuKpaLVfl8ZIjG9TXLKeZ8E1MBrh8CHIRwESqmxnd140eqLY09AZZpg93UL3k7weWbHASjdDkI7Y2qQ2yIocbpaepV9vjc/OM/43HILfr5qxbT9xe/MqATgPvBvQCXuF8Ype/333PxMFzomiruwyMDuOijyqepTDpOn8k0XXU+d9VkaFcdE1TpCCJcGYQK/VbDKDihLH1k4qJnmr44Ue2FuvuJUKIZkG6+HKkYoRR5QoeZX+0wbqQSyOBEf4dJ0GFAFxn/jzF5VARJZ+nzznQTR7qJwxRkI4DPFfhcgTvypAFB0XsQDBGcpxiXYXONzZkabzPKEkJRI6Q+ED1vicbpwX3iRGwxP49QY4SyI1ugJnZkk2y2vUBNrl9pbb4+nWAMkgjpsiC8l47KPrLUuNbrtCYbw89YIZHJbLuiI11RH4+iumhn6WSmmRx95QYxBggaa5CSBfmSAfSi3nDDJI4I5XSh1mMmBnqM8oxJJEbgJ6YHvWOwB13etic2uhVz6Fh2nvXZj4f5Jhq+rbzkPnYM3lGBon9kPdGl3yZo3vHCkTcjEXOi9K6bYAjJG6ey6UVnXTaiPD6TV521PGyO8pmPJKEhFMcyNB6u0m9rYNBtcquNpiEw1DhuComSDDAyzzHCHRR4eLxJ352aS9dw1NzzKBz2hd16uBpwz6X/KKsAGjJQIYQKdkfr6YBDnws09VWX8qltZBAigxAZIDWSBeKxo8nSOKpGemp8VToqLiBT5f7PVfIqvMUPyuhRFds3PIhmYyoRtdxRXbkVFKoOuAX1AHl3VKKHQaegBTfhoLBNFefoyqm5ODUt9TZ4ItWzUb2mGltHzGyi3LlpU80hEqFj5vZQVAKDH76ns+hH2iPXj/nXXfRd7ZHrHu2h64f8O2fR5fiV+QvGMfo3H/U4FTbMYsTKdwHQkD6KkBeVmFicDYUINDmwUM1h+xpRNgdTTocgN8kVsyOWLBrJHXUIM0Epm76gfccV6dyTshRvFGRBfo8Y2KcZVX6f/rZyoTJRC9NRPXubS0SJoEZaKOdOrtIXzcbVXGSdLYJR9mJ2oWS9mBsnUGM8Rce5olpM3qHOMGA0iRGIYC0z2iUdA0arsHhEgxJYjGgB0c0twkCsTKDGbmTztICpkIK58LOJ2EPTJ4k5xaErg0vV4rMMCAk4S7Q1xXYvTZ9MP+GldOh/qHoyUFH2k9Tiv2w3yrKftNIiDB1rE1gaKlYL4NEqFhk9WK8r33fX5XwPI7nkKr5FAs6ki9UCCHWiAs5Tja2m88XMhWCvy5qr1GJ+k//GzWoxFQWnlYdeT5KmDlXNGzco98b1XL/kLDz9uvHkyTTRGkVlPOfMgp5SKmABxyvzkyqgEqijKfcFlLGi48mAZZ0AlDmmUiCF8jFzZz60phJHodkCGCychgPNudwBSJ5Y/js0QMw7iXDmnXYu5UginKoJ5DMBGD7mqUNYmfVgBkZ9JA0K492gbfF+xDy9GQFKL/8dn38FhTL+scLtpGFXJnCBCeASd08G3DuH4uLKXBX3uyl9X1LLV0UYDF0VaVWIjobewV2jWXQHqst8kjqwODSn9sL5gO/xF31IFdGRWKajKzWBoyVU60TVJJkuRN+FLnQLo+VI3zuPS/v5edHDrvUCbTOfOrlizebSeYnyNIqHt+Yn6IcSjysPN7kSWcj5yoNnhRihcWzcQ0pDhJI0zDcSdaGCn0+KaFEiEKm9gPNVCTpNiy1M8D22EFLxUxuwSHiY3ZKrjngtTlSC2Q5fdQRiSBIzCsQxINISR43TkESIpG5JIc3RaInoQDVBsHkMQxk0HUfSBUg6iRnQmnShZHqQOggxByPmEHWwOmRNqkg90Z80U6nKTiY7TytdTP8OVYvUoWtS6qrpk2H2WeS9RC1BDochh6eow9RT1pAx4uHJTZeDsUdIKU9VTwXO04BzpHqaOnJNulQt1ThPV0fAVCt9piKrq5PTo9RR6ZMj9eT0WepZuMs6ki6j0o9Wy9TRZCBEJS831TqGIo5Vx6hje+mzibHP1k0SpsdRxHPUceo5vfS5FPFc0zrHU+usUMerFb00p4hcXKBFkt1KtRJUngAqT1QnqBPXpCepkzSVJ0vOp6hTgHMqcE5Tp1L3T5+nnqdxTlcnq9NXpc+nnJ9PjczZLkxfQML1QgK9sJeeoc7QwvWCbrQdL1cXj0fnDzVgRGWRmUnysalyrxUy2PcibSdo+JZvO66PjbMMdcNkzlp0s+4dubOuBP5EAzNbzgAzh+pMpTb0i5TiV8PFl5twDhlPV/kAo+h4Qsf4os8imIIsZ9FnytJ6qvgw5SZvxLwX34vuKhItulsnUWKf8A1jqfBN8/Ut87XPfH3bfH2n+JIq6lHhlb99JbTPtsuEeLANpkLCuWE4jrDWQfcGtcXbxMqSDzQKBaL9jtXcWJwiezgr+rpsZy36Gv/ai77Iv86ivXqK8lX+9RZ9hX/9RXfyb0Dte50lT90uup1BcFcQKhvMsFAh5fBfl/96/NfHX5mlrKb6Lvpcwb0m8+LzhitfMF97KvzpZQ5YdIem+Mua4i8JpdBI4IJQUJaNi6eYCmPxcoOQ7Iv+YtthmWfgcEj5+VcJ3VIh5sYeoLi4z04UqYeAYoQqn/lLqxH5ChPS3gIINmUhR6/qdF7vMiqfgB5tFcwjDCnIJJe0CklF7+vHQlH/qLJru/MHenf1H9+Lj/xWkPG2L1eHrh9blrNRCUeWac6kej+eF25gGb+UZunOYomzC0tvfFp549gGr66kZ3NSm7tYx7YbVknNJfsvqVHzKou+/+ELVWpMj2QO8D1AZaNP6nKxaurpAlliK5W98df17DcNZv9D13Lrr64PeQSmE/i+vE1ELBXbHKgmr+grBIRq6NZi3YFY5FbGN/rikXhh8RqmQ4EJDjgox85daXK0hU5l5SHv3aO1Hb46XGSH65kTIEZLL08CTPeTHF0RIjlksYpiG5AoYkJYZIbGVPVi3Eox9nXWI1VLoiemiZ4AlUuLSKseuVSW58mQdElVpne/67JaM//Spe/Nt1ab2eD+8/11kXiNNz3uq35ax33DDLif6MP9KfrVV2v9ahTvmL/pddWH4D/p1V8jFMUNRtjcZNpDpMMqKnXrogmgK5duXeadvIznICVlkFyFotoed0lIQEEs3qbTPlo1sRfb9L2j1i94JYXFABUOabHItfaUHjcceWCdJ4vS9aALpfgIRR9GppD8YKRU09TD04OnLQNnaimOS5QlQ2dmEVF6FMWLDyGW6kZ65BRGO0qRrpKGwoiKXnZAi13oY0eFqc0LdJ11jz+o65TfSeV7gr/ZQ7bil3rl6RCnUMM+aAiVgzVpPWNJFNZ8s0ABoxqRCkoPFBDXGvcftga4b3Df34c7ZU+Pu+XdddwLZ8D92vcALnEvehS4nwS9D9cu/u8MraBfjk2rW0ULpraO1q2nRxJPDx08C4Fak8kfBGBh8SQgzksb4nnI18OOPn5aCA67xUMfsbxHQw0jUT3ZsmchhTsWiLPEGPeFJjsTo5zafrE8ZqCb0yedhR7FhFl8vGWdLv0VYWct1mMYmfFsfCBbP5ZkYach61tHNioH3iqe4JcLeFuir3DQlcrtVf505Q49Oj4nNwdVrgp0NwXPtPgtVAG6zVpQhGIyX1lnIK084+gIG/q56vSqjFUWVtkQ/JjoGs7eEOy1Z8teXTWpqGEvoJrD2nJ0QHm4Wnn4hfLwtfLwZfpmpn1s2ipDh7yUg/L1ho5V0RgWay9oDBshFXAFHaXz6+EDZJbfSeVbawyHPhXrAGVBY1iiMfQMM2DR6NUzlkSofvX5Gz1lU17lCFhrjIYZiJr0feWXhtq/ordWcd84A+77D1xSw33zDLgYOKu475s9DdAYjT6N8QnHcenmvrWx3AZ3ZVn4CEpEWWRugt6nB0BxzvdD7JMDX0Qcw9XVcuigZd4j/rPeyXzejoHkHoYBRLdN1sSOZdijIPox73obRy1IAp+KIT/azONbFuI2N7JGV+elBF4MUOH1QgskS7/jyXInAqC9RiRvAW3yVLXZjZmpwe8Ds//p3bNi9k9mwL2O1mpV3PtnwL27D3cfcL9Ww32/ZdkbB926zDACsN0DsY+Zp1xteZ68lfnRqDp3aMzAjotb9H35zlmxY9Mg7pdszLqGzbi0ebGVfF/LE6YWyQ9K4dJGxGIa5SlbB+HmqziV8hTcgkGO+CffSPWPZNbqar2GLVq9qvEIqjxkzu8/FAsb7JI28udArTYIWdml+ytLBWa949RNcq7pmwh/pkXfO64eajrzqz7cz86A+40+3NsHce+yq+sobTBzdaH4wd9CGOzKgsCVcVLPB7SSbDhAoDGywTZ7nmrgy6cvcDd/DrFiGwoFiE3RVil2+M2zteT18mCL7GlAuzaUjMBaJecbK4L1qz7BugJp9v9bpWLTC+EOm77fCqX2yEJ44wy4b8AauCrcoOHmh6oC+17fJuZWTgytxfJpkdNpPVuyc48dVmOLdsez83kQZPD8ilES1qUnax8aCRjVWIlD2fdu1tvNdmUycq3cVbbF/2umXyqERdPVFj/DQzg3IGqB+H1N3fytFMF54MkidvBKH98uPr5TfHy3+Lin+Phe8fH94uMHNf+w+u2R5MNcniqMlC/8+WawqZEc2Fx58+aeY4qdHKkDNC9CvExO3qmzUJZ4GDo2kjSZ07aESakLtm8/tpinYjjHNVquHN4bIWdF9HN3Q7QZ2E+MvvcYLLKPLZyv5nuPwRSdv5N3QBClAOFVfq92bbztuAhtADqIJLhZPTbzyLPRsYKJVPkPNe51xymoxR/p4NUS/LEObpHgfTp41XH5KOilaamzBjMcvHkgooD/aXGwaROqM2LZ9f8cNDvkw6pQ8ROd8YPP5nLu18EDEvypDj4gwf06uP/ZYH6Zyc80/Aoh9t90cLMEf66DmyT4gA5OHaeNqVdaf9EmZslY6oFbB47Faf+Zkxg/G4oZJ+8kWeXo4URLoRCslZayn2VDst8Habk+s0SiLRZ3iIDsWeV2NMEJTMdQNmLJHg8RFracAIbxhIkYt6wLEMUN6CDKOTMaIWzBVRYiXhQdZlkbqSzqlZmLKe3zZS1zqnLRVxXRtlteB4z+NXGc6qRoi10ZVAf/pyzWoZ2wYTuuhXezI+nOVx+LAepU6fNUp8Xia5EtPmHl+jLFVogvVYXd7qu+hzNFvAnX6Em/Una+3VpGFY1b3JGuoiwpJ9WX01mS05kmp/vuuFRy2lPkRMkNCe4yog3hIiOSWQkvFRuNLcdKvidKvitMvt+7QVO4S/IVjoD3W0gc2EWYwf3YF15ZagjYsz5c/MclsHmI8o92lpoUb/mCzn2pZC6eD0s+ayMTKz+feo5jyX+2/m1YUe6kLitHtG9isv3kG14p2SY6W2JmbkPV2ODp9mOVe+4y/HA6ZdK97d2aHFWkCymJsTG55hZEF/Vj+qB8v/lWtjLZznrHYyMQSSI+HBcqD8Mr9oyC/DliVo27f5JSOp0N7ucWz4In0Tqb5NLLVf8MnSvv7Bn5sJSXXHcFn40IDZr6d94y9djokJTQIFY/HQ9YdTr2WyUd9jR03PnKx8oPSUlmugN03NNHx74KHc40dPzzdY+VH0gJOvYM0HFHHx17KnS409Dx0Z2PlQ6kBB27Bui4rY+OXRU6vOF00LDxWNsFKUHHzgE6buqjY2eFDn8aOl7/swsfIx2SknruAB3X9dGxvUJHMA0dn7/0MfJDUmIaMEDHtj46tlToCKeh4wc7HiM/JCX0hzWgP/romKrQ0SzpqFCx//J+bgTTUOEZKlCsi5RMxTlQpyDCU9YkBvy1fbqjMsYlytI0xEFk9O93awo29suYz9VjvDLmsltrMW4Z8+F6GqeM+UU9xi5j3lLPzYpkPGyUxemhRRAiNLGtJz/RX1vW4KpcOYsuuxC/VmlTXFb4ncIbw5e30GLSAhdPnoRTAGsSU4HK8jz6lGO5xttio+8JyvyqY2XHPr986uwe/pwut6FQZtHQF2/lGlgoE2Ne8YIGJkqpU1ukyMz8SMtc1DBXMh7eIrVPfoePjAoAhi3rFeQnswRFYSYpeU2xPFQNzJMwWhcE/XKzEGRGaySX4lQDM6BkS5kYYQzZReIbXqkTq161QrbJAaeyPC/PsBdLi5Kcxwyy6bST10q+wqGlJs8fX67zXFoShDvdnCH+nJk8pBdKFgcxYSoS79CJywlThKWajb62xzwnakcfwda9bsilqzJbR+hm4Nbcu0w2eU8B9PZl9IHl6j0ClcD+auDBamDz0ZXAtmpgezWwoxq4uRq4rRrYUw3cXQ3cWw08UA1MLa8ErqgGrqoGrqsGdlYDt1YDu6uBO6qBfdXAfdXAgWpg0zGVwJZq4Opq4IZq4CYTyMlahgC7GDApd7gW9op+sZCdGbvJG0R7sqvtdtnlLtvdp1VkH5VfK/Z6mZ/fzi2XBrUZVBpOc1E+6IzEDauJc3E/aPF/obn8jTkl0sZhVJ0XAhJE1ZkRIH5UnaMA4kXV2QIgblQdt+XJ6uoICogd1cYyNtKojSspJtLwGhiyLB+j/PwOrnMveRt4JmaxeBkcS4slRztK0XeuwLR/YASYicc9Gnym5FCw6N1WslX3YpsOlWEtp5UroV78c5k/JZT29k+xqrWhZX66mXPUWyme8a9PaL/gdTB9/LL4+BV/oPWTTdK8rAIXbWat7hmtXjb3J2XEs6W50fs9UWmy9+HJdrksVmUzAvDUi/KpXY3c5Y0l8IIED5sWsHqmlRkYuNRsWkf3WXy/ThQGn9TLwnRhoaLfDGKjyu4D9lWA4SZTwnJ8iybH54lypCXoKRQomKXTNJK3b5E0ZqcnwvdiSYTPJeXnEeXn0vLzqPJzefl5XPm5Qj5rFgdUOeot0TNoaCXzOauojhCGx26P5WEP7oQuQHjLsRuvFwOqv7Kskj8O9jK6PCoRFvF8ZeNP0YdRwvOrWcrrBcktot8lR2W/SLaSn4zReOVGduMRvRcNMHCKok9IrPzCJyE7beUWaq+GO4/FLyhS9uFOcbNWrbjWfF1nXL39Y/J1SF7G24uu4g1r14j2jm/IpKuhIIMPfpcXri5LnNkEO6n/pCP6Hw7xhPY5Cq7kz6Izr5UyvNsrLWKJs0LuT16P2R5sGtkWb0PmkaXydY6Snz+dvD655XV6K5iQ4bk6c5X9p2LhPVjMUdMXYz+BxTzzD1PMM6YvxnrsxbzTdm3ahHKorKIk6pSpS/LmlcrfTMnw8KTTsGxxcr/52NTXu50HIDX5r/FX+ZO9NIjtfpTfMMpvKyhWP8qDjPK7EoWVk5nPZXgJ4W/TUFjwF9K7cBK9Ogt3pM2VxSV5j+UIO27XQ6Gr5p9OZj6K2vdsFWivilqTK1+mhn+TXFk8ye8pf0fWWp96lLK1IbNXNv6MmeU9Ycx6iKv58EzMmrqUd78vnYFZFzHKxZc+fmbZQ5l1z+Nj1l2WY13gE6uIO06dK5kre9bYsNaM9MBIX6/9gnpFQq5Is16RIN/7ng/JQUKyNk9eoUdEXAJRIVexRVV0uIqOVNEvqtiiKrpUOeYjW1ajau5A5Rzl7sii9dhkV1Glcs7vv3K3P5rKWU9s5Z5i4WUv2U6/McOGyk2s4H1su3qVbXTrMWyj32qXA5jqW4FkjhiB8M+4jJOJ8bImD25kljz+bC+6vG+BW67t3vPWctYlY5MMufqq4POz4kDgVJ5ZnIGGkm15HqsdLi/Bn3F6h00XLw+EVObXr/7W5vp6vk4lzoWjIWQ2BsiUDCJNpP6NmQY+31HlOce3SO42OORCS2xsTxUXFyeI1xBnMnUBFWM4X1DMKzcBYMpKbcWSg3MjPpMnH+bbsjD5MPMppJweWvnSSZAJM1SNQ18zoMnzXfhxcJkJz9v4MlvmSaslL+jYOjNKIZm5OjO3zCyKLrdta4O7sawe4mrVcyrVE+/OXMP1UkMbUdwviApHF5eFKFCKA8moD0WF9NMfEUpEOBARS0TcF6Hfe0O13Xq1G1JtB9GWoh8wHRTZ/Tm4wj8X/POgQTzkEn1naFuf8hjb+mFrWGM/9PDJ1cYWJPqcAW+2rY3chje35Da8uRH3f2dzf29oc5/+WJv7YWdIe9Nrdc+rtbdg0fcMiLNucGQ3vMUlu+Etjrj/O1v8AWrx9dTi6w0z9DLspSv0x/7HqtRpmXdtFspaToWS266/WvE/BhR72JsR1bR+MmPrG9UOG1PJ0dU5uvUco+gNto1a1+qMeFPnmQWhIaRAHsrao+ZoWV1zFK15z5U8p1eHggEccf5ARCwR4UAEpEA/1jhcGFB1RGqOCFGDFOmOJEJRlYZfTScN+x6PNEAHDxWHXQ9/qyoOggjiZsCdvTwgv5kEAlnOKBCI/79cIH4zrXrIH49AQEcPSgQ4/vBf5VWJEEyQNxPy7EUCGc4gE5LnDDLB8f+Xy8Rl484YO9DVK6hdA4dxellplxsUz8eDfaGY8VjY0Tuq/+jpmzAIqh49qYa2B9IvDSFHj8zgXDDXwvoWCxTOLKTwJ+RqntkmvAt5mG3C137GHP1J1gfpnLHCUfrZ3abkTFvORwh1Syj0acp3scnXNvkqBWZ//tN9h3AK9UztCM2Mf+RzQC/eYlzQKa//LobZqXn2IUDLoE56E5wgkEGcalM0V178usnhJNqEqoUfj0Uus2XdjIxBnDlInMgCZZ+DIrlG4/QTVJep235+2cARJC86s1BYzrfqqRatfo/jYf7CXsfFJUUfpzpUXp4gSZKRPMR8mA+/Ap74/Vf2qhQMc05OO/TjnZx26Sc4OU3kFVqqaTujdyh9XhJnI/Ar4CubvdIAlOCN6/D0tq85yNsJoz1sO2SuMAkewwgLn/HaZ1uNQgu5pAxkC6IeaUuky5FhLbLDMT7HxH3JXEkWcmRSi+xyTItjxvuS+ZIs5siJWmTCMR2OWViNQYPCiRlM99CZIXcTSvOyVb5UG3tRBF67qkEqJI0fHcu9Csu9ISz3ZsfyV8zE8lfMxHJEDmc5YoazHJHDWY6YmViOyKEsR8zsWe7yXZuW+JegUK5Y+FelTdRzLXiNfplgCGT3VvTEGVCVn8bgPVqL+S69+wwJJtTtImWvxvPpdo87IvkCMw0gL0II7xv4xEdzrVxTKxwzJR3bRkVi7TKoDb8D2k9MmyqUhdwA+BoRH0JMSC07Xp0QI8Lh0YWd+6gKMNIGGF/EtQz9jgmp1KQ9oVZIHZpRxKCUYybESVKj5D5xHXpwAi/zkFhr7qsW+O9E2v3quD5efDa70jRjc25xe1AbrP3g2z+Qjldby4kGekiMHiIdxZ+uoziVjuIM6ShOX0exuaOM93eV925bbld6itsTFFfVYm0t8zo2rMbGWq4lKq5Gmc6S6NikGiudbFxHjVejpCNN6KiJapR0loU6amEZNfveYkeRaZl0jrTYvplaLJ1TbTC7r8Hc2TWYXWkwe0iD2X0N5nCDzelvsA9ee4xjGgxNIiiuqsXamu86NqzHOhI7oWPjaqw0p9JRSTVKGmyJjhqvRkmDLdVRE9UoabDlOmphGTXrBsN4kkbABrtEJeEOvFj3aIusb1lWZRNF5sEOLobW58F6loJ5sI/Y6jzYe5pFquQVMgOGN/tKmLVUfkENFANk10CJTE9DFCKuPzNXauBo/w0YsVK+7FTOdyslI0fEy0y39DsQRXuemArWatdftf56Pe5KzVSjJ67J1tYqhXC9XgD1Vw2gx99ka2es4Ncty3vkCprb+jaiip08X/bxAky2J15R+JPVjvZKUAhQWAPFAMUaVK3j8MrBxavs2PnaZ6eyq2lRKe029PdRt2Swbslg3ZLBuiWPo27JH6Zu4WDdwsG6hYN1Cx9H3cJHqJvtWHRkb7MdxQ3PlidyYPK3DFdQioPLzIFljn5fZvsJyk6mXqNNpnG+2qAnqvMl8HXD5jTLkt++mmI5x2UC0atDg/AgEBYUT/LAkYhDVVrZWDmlYN2zc1nmbFAOhf5skmjYYyy8+M7jRrwmwNZZ2nbITX6E/AAtrIx/028xjGVw5hHqT4CaXMT0U1qAHgYI2ZYZvHvA5NijLK5yesnFSMlP+Bvki35SRY5yR2yRdjs+zCHAX/yWh7raKkmz3CuuiZ7J7uanEvqzcf3Kh7tnTbKGC+goOyxceysr+R2ozZqyivWvT1scwz5LXUX3+coF9C0/eKU+JDe3j5ptDz7opIVWWpgLy2WwLDqTnZtE15eNE9TKA38inkpjbylQNlbfOzZk4YYsAtX486eT+MJZOdGu7XAIzaYfNq/E9HZjrltvksJ2JLWrlBRwSQBTCjivbEqJWO0HOzakYRUXXEC1TO0bA7Uvqh6YW+hUnH4OySEhVyE96C+GczH+uD2x0FKlhdazLKvoII4IrLJ1z7BKmzX0DKfoGcqKVlr2BcgQfLaOgt20GAqkNqChQGMDdSoUEGn2+utPjl7AvdMUbqFwMRrIbC6YAJJb5uz4i7bZPVpJ93olIlbOqh3rRSDfCV9W0ukoisht666HzU9kTV1uo+lvdqU77LqvIuFIZKG2MHIQrUgNJB0L+e7Hk6vS48QUN/kxosBxnRAXynhbr9b1hPRcW/L9zrH9stckpSmEBVZffQL6jPRqh35uhv6Qvpl5ulqsB4uqikfgQFJfdQIJIjLQ1fYr1Q404sxVN/n46BHMAb+fA5S1P1h13LYrq21Vqh1EJXVAM/Wh5BFYFoj6o7y1PPgVeQgLeQiVz/uZdXlg61+Ji5UHkYDxb73H3Hn/5RWDi5KCBbktxO0FT3NLm0mjIlobnoL6o719/YQK+fEBC+iHX9QjK12NWGvoQN4T8FBnoqY0igyibY5vbfT6lCfEwDjjxJ3hUDe0RcZ87O4pDehfSNVt0r8WyNSsisAq1H9DFq9sqJhUVNaezMJiiAMUDIvTpizpOirSfTrSfRpvWFORULYq/nN5f1MLkAXQBp43ajGi9qJREYTg9ku0Q7//amkhwUo4t6gQj+5gp13woUWR9yEy66ruyo0vyiLa2VRNxiAQhZoYhboqXp+BDhQJkyR5KEG118gikCpOUGKyoxse9VHhyjc/5FA65Sj696fQ3z787MbEuF0NJT8E9lWT5Qiy0WK16JWt0oy2twJRSLDya9FvOag1i3ZRDqUD90EK6OROCvHZb2M6o8fefvN55YNsP43BCwy1+jFT+tdFbohSAdovSUdUko6qIB0j4LjDGcD96YZsDuQAzTiezkU+c8ivezYvnQCLwB7Rl86GbFS5+JkPb8Vz0gkZFEbPPAkDDwfVfEqaTlBobn58uoDkaO5K+1I1qib+8kZi3CY1Sn9JkOYDdNbkhmwuYjYRkBB1zFyJGeWYdG5/EqrCgnxDL1vQbjClF6ejKDx/LorjOs0lIGYFE0SLmrce6S5eL+QBBIf1C8hWTePaj4ALlM1ExgJaBaUL5InUldZl6Xw1gp9RNU7/m4D34/Xr+cGFcRKIudwV5qWJmp+ORJUGa5JYqrkvYpZ2pWNHyYV68JM+Bx8Dc00Ha0GwLDSnWqB71oKiZzUhbCGaOUJD/nnbVgG/P0FCh22LgIvbQAHTwRZA60aYHnBc1oIXzIX4M97bsR5y11IT+EeVQPuzWubcpAuirzxC7u3Y0jWWdPez1m5gsOqKzos4QtQ5JUFH1iDpyfNXbvwTQuvjD3gQzVQ4dIcVt7lrz1c2ucdmpHQuRlM1/2x+FnY89hDvqvmIN+HuSdWWILgP8rGxtOCpxOkFvXwB/GyKgq5XgB/+b4tOJ5lEfVQr9aF15rORopq/QYUvbjuUa0zygN9xkvIxaldsetLn+Epr/Z8Tggu6QOuLJ/F19mTqInYD94E/SzuUckxNiGVv63qSxmaEzHSmMUvBn+EhJtWlvxhJVetFrHIhLFgfNZIvMrNaopJbrPYkLz8i9PhP207s6S8r4pQsgk690hhrfSS2iiZZudE0BhprIyUE92HfCdUkifciEpkiMzNVXBAdzlNFaDxbWboICkOdNXinoGH4G32ryR4OnCFXB/UtGDu38hs+ob2apE4x2Kcun/C98tKqW4xl1OVqji2WwmXHPH3xb/j/yuskTvJrodWR+z0/lRAivqCng+1aOiff5ojbgjw8VcxFtziZfVijsfJjd3/ot5/c8abjiF84XI75NYkA/YWRUh5fA3Pf8vsfYVcvQfJ6+OKlNBalaSKNd2qZhh8qqPhAuPGaS5DK06kauU2ptM+HBmV61SVvccEApwBrOpnCPZe+/6KLNm3eov6EMFzGyL3UN5nfvGXKZC7v5gRty8Ru+9lUnWCfcgii3OWtI2zuminVllsvq84ePWgPt5xwfbcaC2klIpnQSb4umR+S2mI7LQbrEA1nTTsm8acMlpzcbtIXuUWmrhzhfglcM1HCOBKmDfDBiaYjzE49NAo2szTHlU1qAoU+jcp4aS//VuO0yeqVyutv3tR3pVJ54teWJ7/IbJp6YoqIf8+j6UZ/edVj93+6cqrv2N2vFFBW5d9+U/VwIUux606AJi6PxveLvbiPR+Dg9MwtTsk/h8u+1VNy0IM5pYwSOI8G2o9/2XcWrRyeSmc2yiKEL23odTzHsT2rUVJ216uqlOWj1DZ+JA3KzYatmbLZvDLhdT++vD+hWyREy8vxVPKbsssm+4sO6xpzcxmGK/e2oCnwS1Aq9xr0a5Ezwjgs9XUBCHABlvKrhgtO/s37LjSGC07+j3K/ydJEHjR4nfYQvVDJGgWpjZLUvBF942A3YAXoFBP8fW7NYIPU35bC6gD3mEe0R1MSOqHClrpwz7DEBZH4HfIpvqINnTzh66FQipZ4GcLmBGQE64i9rvzu0b+76ZfnKPRLX7e5VOkdrvAhdRh2K2DXSfwufN/gMld2/Fy/wrfd7SW/5XbI/9GS1f2tbv6lK752jQMaKHibm3/1oq+9w+XgSsT8/B1b3vmv8MviIn6XmzpGJN7xqcvx3gX+KgfvUvQUmFNapNx+XC91pT+SlIrVD/1zoGtlvYZiUKtbde1uHlKjKanRzfjeJDW699Pam++UqZFUpjIgheIYS1lYUS6RH2Vo/9kNfaYoGPb54RhkdLOb/OOrB5cEUga13O6r3/QblyZdetj57veJgxSEo4+LXncRnW2hx37/61+8mPRCoCz5pJpwrZA91aTk47sOXKZr4xjeaSpuuILFnPWrfS6GgyOtOA3ARBogqJB7UDSpdxT9yku+Tprepc/PvONDX6c29CPxIL+/Uu4DulxkS6pGmxHtNyUbxH0Os/q91+tnMvc5RnhQuh9J1T/+xVf54AQCnwZbRKhv3/q5az1QgEx0Zd6jK9NSPokE1UZnhGogG5wZI8dPvz0QDn7nM99+Ow3SrmHHjToHDDJukYEXyYuua2RDpeTr5i/3OYOoydZeyNN+m7934/sB+d6D7wO29JyPXqL5Y+vKp01GuglI+wTpp1/QSPsMUkvYeBOxcY9dZ+Meg+RAeqRiGTZXWqrZE1fGyhJJg8cfacFN9hBpsStGSBFbK5/WBlZJ5k6QucvmWeSHfqu1wC67aEgpHLjcd1oFQTvdQngbUvwNIKNJygW/LVJCJTk/v1l3pO0FOfl6VomS4iadYueQCuwsUggdyllF52Opo4V2S5nCMG+LIZ3nj9o3WwxPXntd2m8K17+o6PH7LfqNV55P664DlsnpA1/U1O63SuZJgn0l1jWfl25Rug8iHBSy2yWFbFU60Ps0ZungRxD3EOIui1v+Vxql9L1TCsdOQXn3rwqOFCiQ50K+3cjI/7u1/AcUnxTxjsi/s4aPzfN/sgiGvTFRCMTISu/fNkTrbBnQOu/TxfDlwZuOzQ/Pn4IToTWTcg6kipLtSBJAlMs+KEpRNgWtlejZ64gZZcGfuU8XvMuptgHa/A4iVXQBdZwyxa++uFlzuUgBluj22A+HYUNK3F5VdKbM7ZXKOvl7HtYaok7GTRUydpZkPHyZFp6dVY49ixgAKkCS2fnEdX1xb85jughqGpc9HpRCaFeGNN8nOX0qtuyNdeePqmQhX5FzuZKO4422rrdcbU/bYECo2uuzjop5k1V1SO6PlW2PY3F5kDdjIW7t3DKTMSFXspWsqANZNSX6/pteWWdRRWs1c9qYIZ1TjrnKKyRNNAdQVci98FST5YH9l/fN04sWnFiHef03G6fLo5/raEtgTRUSDkCqQdE4a6Xgcyqt/+Z/KXp9Y2CYe2nfKNeojXJ2VO5nr3R4N0unzNeLg6mylDdeUmjCsqPnG+D9qV7EFquviMGpi1RhymLmrSfmbS6V0/0/09ybsirO8KAEJJ9iLC2kJiwa68Y/K3TjcnCquq658ed95sSgSlMj2RAVvAc73MsnCteyyVdi8+stzbzq5WYLh7KKI/KUqkurRzIr0o8M7F4mc2UVVnyfIuJBurs6OClM6kNvYlj6eUYDI6jEL3z+rW/xMDvy81/d97G7iCuol5BaKUYKmmL3D+LKQc4mnB1pWI4zkow266WnZG3enFehPsho8xeyD+HFEHXngSAjFBmVeIvcqh9w/OatVVPrCP5Bh/tywdX0FZYbRJFjR8V/XjTzf349GDYizuphWhmyR1H6fuhhmnG0ZJ2VsQETLKsvntoId6qbLfJ/CO+GEg8ubXo2HG+/Cm9JlQiBRsi3EAQAvwC8TgO8AnClBrgFYKsGOAVguwbYBeAyAuSX0h9dfnjyJOKtIn6nJNDONUO2P0jeeYVxa0JyxasxzGdqFRUoalD1h/oqvYe1XzyeXqGD90nw1Tp473Hc7cq9EOOFFlyhksqlHvtzbVj1/+CVciHSQ8LRCUxPkVquXkYCya+zfqvPUS1ofI2m4h4h6rUIas+1JdIWDb1KkF5n9ubqUlb4o72g10lgW+i4nv7PstFsCW1mTBUTkeRnOuAgcNerJGAjcOtmCVgIfEUCEVSqW96Gfrtt4+yMCsXqEHJ/Pe9KW2Kx8c9WV7fiqRTaQSFlw43Tcb0M7cX6eXUG9/2EsQyY8FYeHq0vtUARwGu8hBOEJ8rwBMKqDCuEl5ThJaIATXgpwsvL8HI9ZAnAKGsPzJWHjg9zzjRahSuBPydmto6nxj07s0DzaZN0YiN2DrJD4kk62YNY3piBP4Yjhh/Ilvz+UMKkYZJdh2TR/rbj0JGl8QS33ZZDa9kccWx9FInXKGoVgqJL/cIPL6JuRFQWHM16UAXlTCTATIQwxfFv80zGb6oiJhJpziyxVEJSI+fW6h0bWVWKXQ6cpmtDH2x49PvBllstV4BUPbIFK+km6sNdDGs2lgaydSHGRV/a+qb3yvrJXhmqgGYg9Cf800kaSm0zZpNWkUWRzYup33BJkBRaAFqUEMvoTQ6vJcDrhy6eEuT9lkbGCN6S7R9d9r1Ih32T88yKQkq6oihpn0msZ4WBnsSFeuhpKhvLiVwbN+62eqoJdthYQaiQP1di3f8JIm0n5CngCdbNQuX7PnOJFLSzpNLCKZYti7rqrEUWhUDerpHB6VKnRVqnZRZrNUwq8HV7Q84t8c3HxqNaB+hcP3VbZf4qsZY0svFAFYmvPYe0Ts6PqeI6Vw5v8wYdYpLF8CrosMxfRcE2O2S4GpV2SLGB2TdQkfsePp4EqToZ+9DnNBe2lOy2RRYVMlmtYvzFJMvMJEQQSnxgpHGRLGvDL+ABolo8VsaqvZorgbkmsrj2Lp3F/kZFluYWU8yffwPRmQMRaPTTVGZ9JpAhAQanePSAqCH1gzGseOYNMeIlBOZzcR7QJLg4LvjRjSAmLvyQOJGwbEXJo7LOu0p6nPwqTpnG1UFCRfUhwrJc/Z8DXzkWl6BL3vtDSp/fi7/sDvrkScostvuwDjDW5h/VsYw3uBs0EZhOxck/YywXA3dlSy/BJNZe+f2Pv/rtnyJdUc5kb5IdG2hvXSU9B7jtWNFx77qiAtytgTtLYP61Y/gw0l3DUTRFTd5rphJYDWtX/GiNp5zCqW8y8fndrJe1NjVg6EoxItyw8pz1WaBNF2WzkB1Lq+B6OPNfIo202FTHqBxVVmdQE1b0oOgSel9O2cUKNjG5vfMjmjlJkRvrLlkxV2elP/m0IGosraClCistVJnhxkl/+SiMT+tduBj683NBXFlxWlaW9ks/rp69YCAyVwwxxZAEmYc1NOjzZFu8NkpGUjSLNY1qZoIhQ+BeHgJv4CHwbrhfKwe6NpUkr0MVJIseewmmaFqqS9mOKspQq8JC/aEJCk9xTr6CJtQNC0Z6cg5Af7sIfIwDH0NA8OHxLcPuussODo8tPZ++gzddCN9V8CSJrNk0FSIq7Y1MlENx5OuNgnDZ9DWZT/W/PDGLyefwMRepWNlpy2LqiVJ5MZMq/NzdeAHoFm96mSNPI+jWdrDhhtWPmRM4aD8kdkzzSYzoeRnn7cKsV6dWjhiaiJFaKZlXbpITOEhmf5cNiy6blF1WZEmTIFLsVCQYw4wlM+wF1QcK8kbUpJEopzSTla9Nnh1udIazW67vggJzHvn2V9bl3EZ9ywcp8ldbqQ1Glizm86Vt+nyJVfyITqUcfjckTF06gvVySwxx8zlpiLO4fj9m/63XcWyr4UR5QgkOowR2io12HJ+tVl4aKpfvj+F668vFceQ5xSwvbRaNCQsW1WT/VJGe+UXwGdaszflaRfu2VERGI+slGhJQCuE5EEK7/p9ll4sVO996aeUpCzu/UgcPSHCbDj4gwdcjOPCUhZ2/QeB4ygJob9TBzRK8Sgc3SfBNCJZPWaCqUOvn4KF58qLV2ojLcxdsOLO4DRzST7OqJfe/pnraKJq3yOHGjeTkqydtF12Pc0gHeaytLM/erMvfLsuzt+jgFqFuO82OMTnGqXVVMpUdfcL2tMnb+lDP7OGhzLiSFp+DIo/aCyk3UeEy8vjySr6+WEZPyvtIJZ5m4QdcKft6vMxwyIsnsyDZ/7riRC0QveBenzbxvSZtyW1mBKAVA9zgjMGp3NG3KanqsEpUbdzIfJqlb121sV7jK5q9CiyhJARz8WI8bjDa5QUr1IPNm3DzDEkdFRGjTWoox5CMSOmvYssOG7bZFS9p4FHBRDe6xTBxw6NiIlz8LBfvNxiCfl/Ms4czT98xbOeuYV4JC2fFPLuPeUj9aJm3X+5otB4N43BAde5j45RT5ZS+3UJf6weZ5QuzIFsd6MGE7z+BK+t7ZRjsI9AFNVAMkF0DaWkMC4a60zAUaJqhUn6lcGRKUJQJtBZm6i3k8eg4/nLHugCWWXAiaLjrltwFnA2g+TktAiKh+T1r8vrME/Zm5P0xgA9BX3m62Gqp0W7ncSmXfStmUC5Qs/U2RztnoRzcNklXosVb0jciAsV9faONw0RWLE3E6r7Robo0S3ccz7aE6YBS29UjdPdoom2b1FAxeklcPAYZyR2MWPtntKjVW1A39UwiEKtC9ufq4c4oHbsgRf4lC9ckmviGESUcO2y3VGdV1iEa4+dNAs24pfAIhrRU/DJ7PQWaPXYqiTSyVeIlP0OLRYr6wKlaZJosMs3ZiMwu57FruFOqGu6Jb0F7WAtqH1z9LWgcgvW3YDjrFkR5OpP/UC34VecxqFkLjHnUzeXo5hpUsRh5hrQYVGjzSMtGk6A1/h6as2g4Cl9Qhn2E/TIc9vVAt7/9TKsBQzemlFoUCblApFauEbRqhCxm3bBRpWGjaRs2qjVs9EQ17BfgjNZ7ZHU+qMbFiIoftnZRu8DUzlI+vrH4XpWFqF2wKguosiHVLqjUziWYy7ULUbuAr2fi/NjUztW1wxiB2ikHPoObtVGjWRs1/pcssmWyr6gxTaUsUKmfBn+b9TyZTPMUm8nOaalsK3tVcpMQR9G6cKTfdpwkbeSUfIS511gAP++brUZRnIJyKZ2uywHCmXWQ0JJa8MmOdPUTQLrZIptqq1Mwnt3j5vc2hKQM1nf2+QRLFC5Zyju1No6gXo5LYTeFDgwG3Y0Dlyn11oD1QnPLTw5t4dsKVeerX3vpN1RgEroXHDwjcH7pQEg1NdtaiFiL+1nNNnZbQSXaD/oULgrO1xinYq/EVh4LBj8Dt4o+URljWm7jmt85xflDqo+Oz8matFTJWmCni/PhcWNL5KqWHLk289e9q+8GZ6HQqWooDxmpVqXI6g0N8DhrsYttIiRQLe7ZMXdaP22LwiKou4ZoaB9pAd5GF2+De5jo4cZRrJqye9zJ43V5vAb6QPLKumQl14OKKeHd3GWQWwX5BGrqcAyFFFP6q63T0g5K75FK7IjXGr7vsx46he/7dDWJUD8ZMshjsKtLpNJQ8bpsjYIeOZey6YLsLsgGhOvYiVSLSutwqS3SkCqWesQgrgCvBzgsw3+PcFyGQ1DXJGLPaPOT40RdB9SJqxyUAGKaebdM36T0pswmCisi1yMcmrBkHoP0mFV81gFXxCWJSEG5/N35NpEEY8Ihl2OhXvW+Pe6P/dvrtIxQGbQVLmmJYktkxaVidt2HzV7CCNYA9HLW/NidzzqrFBqELI/y+BVZi32MiZi/hEjDZrmFwNk0WuAE7MIpGx1HdcQHNxF/zQrSXxT+1vH859RJuDlcTV9/gxMRanQZS2w05i5txK37jmS9PmsZDYuuRHjbLZJv3hppnTqJaKNZNW3rKTf0zJbycMHbgQrtu757Q2QntQvYtkSJZpC7/FodOAo+6WihlgYlO1HMy3LrPKjwlzE/0qawFqM51W81Kvo3PNCh0SMV4mbhwnUZyRbG9EAFq9MOy3KowvyQV2QBDYzn5e21croQcktkEW7xo29t/wnaqJfH3DA9qnZD3q8MpFiDMA4EFa5WrRmQJkokoKAPBuemAbRTO/fxZUdDkiV9yQjZE2T6cvFlDUvmzoakcDBvx+RtS96qXUukgkqaQ9adS+2RBujv9rpCf6uo0yxecm1QVgF1Y2SFr5i+IgiJ+O4IcFDkqwASWT63pvtGgL4RFR2DPcqvwsKx6BqBdA10vUqvCNArlAvxdrV443UccrdFyjoN9XCU9CtoVytodiyiLBb+NFKJXH0XEc0Cjs1CKNwj2dOIiuiXcj8Xc47cFbCrgz4H5TuUqJaOaknQ18FYgrYOds7FJgWx9FwwJsKsMeIei2Epv4pUdlC80h+gfk3VJURxWuXm57CDIwtdKMBYC63kEdu+Ip8+fd4hn+g2X5LPDn3uk882fX5TPmP6vFs+Hfr8unyOwKAH2sNFI91jaV7Q93fwrfmRf18CLgfu5QC+7qvg/6iKf38Vf7/gy1gR5NY6DDTnFppLtZWDHEY4aYw0SGRXsOBfASgdRvELFKdEcflmPNoJ0xFwmbr+Fmj+iCsoTLWjYuaSY6qbpCExN0RhphplFdxKDXx8c0EBmgrtaqMg8RsiQ0ykQimFpy8u5ht9I41d8RqRlJMY8VUwWkxiAjV6fRayQ1X0KZd+wuqw9aMbJTOdUzmNwrxLz6RKD/7RJwIr3GgS7+NzSUwnX4oe2aiMVgjQuSaNLuErevyOcf7bJLWlW9EnLFqmtls8vbxwO9WYd/VtkGan+Cb48WvyHx+xGqP9lDrXnJZxkRaG7Qcba1j/5gsoHK1b9QrUj7KljryRfo8o6FiSWefRXf5JfCf5w0ITc5T0c2brBBYFlyKJ4Nr0VeJi/jxRxz1qJtyFddzlM+GqOu5xM+EuruPuakyLnE/xGy8h3pt4BRLZCn9OnYSeW3HqJOwCNTqapTyfODGzZJGxmzOXdZirmIWA44T8AiohJJSYyJGCH+KclNPLHLFGE0RrWsRVjKioLODmtw8tzKGK9lIL2Tmsnbk3WFy97RuLOwP4Znna1+BaXbivoaf9XIRDqYrKheDEASqWin8hOgVSb97YQ6g4VwophY1vwl+MP8dlzmr8KvxZnrmrWeQX4s9RmSehCfxZmvkSGsefI7JAQokIYbiaO8LZXArIgV+F5aqB3o1TDh+ebUknsCmqgidZ7gWdV3AamDnBYELLdMwUnYmnkKgQq8doL9Hvbgo/pQkzS7/aYXHj0lf0BQduRuah2ftORq1G/T9C5gNiOZmzcqWP4vj0TT+1P9KNylO7Db38ArZfSf71lUAENTi0U2hYOAyS/w58dCP84LjajgWCkfz0cjG5oG+x4kj2MwTFAMZIPwdIrL8+aHUjxFAweSsKE2FAOWxFyIKl439xeeXpOqm3lJGzFaSdX43jJnFZ/Fb5tOjzH+TTxWJdPnGCZc7XtpeJrikTXVsmertOJIIl53CWPoBzi5M3HLnh0LfvSf3rzHkYzrzKc1J9tU/HXn0cVt3v8gK86eSyLw6n9PqwvbJDphf9LtuvPaRfXMSGgPie9sCGM+VsPYav5FDhz6mTOzDRJuHgCdL5vAVFGguAFn8BFiETvjwd4B8dkMbXp23hMna99Zk9ZNDnp60wifwbgFz8CZOPov206x+Ks7TnpI6K+TX07sVZl1wuYW5GEOfibASUYirqsKu3puqodo8Do7zVNXq4U57v8WHaKOgcVR5+PMW5ddUI/WQjeI5dfC045G2C4qz16Yhqqe712aguIKQCRmcuwINF5Sj9GRKTICYZFhMiJhwSAwZTMfgZJTrXg07rxaBTOAnWT8PFqHTC5SivOth/5E3yUruxagcmGsfjXFZayruxmEJQ5c27+eP0M4oBs2/W4JRTEGoXdelKdVnWVf563MxTXWyJCWvxtHS54edHb/49yGui8KeQ13NEXtcX8gqAyCtgM8vrPX3yag/K6788Vnm1q/Jql+L0FFuOUvnschQ0QlbXPzpZtUtZnT5zvAeqRulPHaolsR/qAur2Q89h2cTPrGXzX/6jyOYbbQeyaWRSPVqJFNkiQF2CbOUeRZJaCFxwfZ0/H+fh8olgTVhjTfgIrAk0a4KCNUGNNapkzEfBmCeosyqFP9xZhV1clDALm01lxwxxVCsbSpqlgurV2fexJ4x9zRr7mo/AvlCzLyzYF04vWTv+o43SeUO1Kzz+yKNXev85SA8y8T+IHvyi6EH3cepBowBTb1AFpiEzJW1y1dIWcy2N6gNxBENXFeJCeHKrEcEa+JaSqf+eNegbfj9DS94Y5GxF4naJavy/jC/WI/Ll5n/3fLm+38OmVeOKnY9gByTfvjy5GWDePJH7Yg3lAvwJqaKo6jrVC6Ia5o8rmIb47/y8enFlugxyLLA/V0lP+Unr5NcsPw0Fawc38N/klaTakb5ZFaDFxKA0qBqUbv5pzaBUiFW+lGWua6dB/wG2hP5ksMqEGJQ280KXZGw+scLGUZPDxWX67sJtXKKAgdGomaA60bssGw8fEoJV2j7LrsZFzBin41qNhsV3ky3lyAuw2sofqSLFyL/m3Y2gl4d/Iz5gtf+A+tX0DTfhd/uzb3q9bJ/wgwqZ+yrM0M/4rzyK35DyCSToOz9t8CU5/IPXKgpEH/ct38w+LCNX4nm2fHhpAqXLo7AfeOWAB+Z/+fZQe26Jzdz8tgeq0mNewc3ojX0tLPYLQGt+5/WX8IZJed9l33vZGZRXXNdxdYRcU1B28iswKvNzBzl4RQ5emcN9koNf5OBh496V2+eGwpvftdncQTen93ZyNcjTV6HcfPd7+y+Yi0PUczj2S0UW+xvVLKjqyOKljPObm3QO+wwOwN/+VvXeR/UCqghNx2vYDglWlaffrl0lQ1EiM9gyRJ6ve/XmvpvrteTfH0x+mVR2BSf/yhWb+10R2NX0dw+m3yTpz5T07y/8fzSqviykRkBTRnq++Jk+j0OC9xbBSyqFvrFogKTK4V9KtYWV7/zHmqaQ68zSjll5pWA1P0rML+zkzt+QlupllENIoIZoJQRdsKK8aODkeNC5sDrfbpVm599ybMzkpc/L1ZS20cxmtLLkWlq+JLWqFzhZ3Uuf/waodAavuDewl27lty8D6bjunjSCwHIdO/AD/s8LRGvwzZljiLo7GLWXfAc5xv40sd/lWG+a2Hs41p0m9nsc60wT+32OtaeJ3YdY3LAaHv0DjgbD415Ge/2O9lFnlWPMvaJKeYxBjJGlqV/UNY1yilFGb0/rocORLBbwuODcmHnVkYEvWOkxAcIY/dKuOOMuJv6Nv4ZtlDHqfVnR5HAmeYyToK1NC1b0v9txbdb/BHZr2l/zq8x08YprP5BcglTw/KadWSA7revRJaZ+Ax6YJOfuulZ/rV2xXU5LrDezWBLq7xpV1L9eUaC+zKBqwPNN1JmIErKKE7s36ah9+V+zSeI7UrccYFzjsN0mBl4qtCNrBA9czkGgwEGc1a17HvzOd6pth8HpJDaeK8fRkosWcZFvayEXZREfU+rMEJGa02rUKfoAXKkP+CZHrrURTk66lpZPBVrFKyYHa5geeVw9fIGl98sRpB5bMiu5EOQhFd5BTJKprUghXUHV7mvddXXttDUnrJpb7Ub0Gdux1rvyinLjcOfAG6ysInz6YO5rFhajqRnttvwUFOEstWimj16bWqx4tOErvCLARRv3u1OVA9ozD5qUX/f5QObzzh4Uv8InOuKF58PIhy5YrckPOXlSHoW03oxxFCezx5MZtKXfrSCIhZNr9ilRJ4p2JwiBYn7fdKyv0iGPb1zZddQGa+NzNuBF47NSBz9LUhc/L089/IynPn5OTQP8HJWG9AOrOvyEaQs/Z6cRfhanMX5elrbxM5F28HNi2sXP8jTBz/npCH7cdBQ/Z6Zj+DkiHcfP6nQOfpJ0Ln6en87Dz9J0Aj/npPPxE6cL8POSdBI/Kl2In5emB+FnYXowflakh+DnuFThZ32a4qeRZoteeSH6xyJII1OwWMg6VGh9klTgyVKrJVLVw6T+TxGmHC45HSHZP1XKfJoQcqRQt1RIfrrU4xlSuWcqKtSVQo+S0p4lxSyT/I+WjJdLjsdIVsdKHs9G4lASHyepniPozxW844EQC8IKickBSvC1UjVUptKt2QlKqUO2ZiduzU5SB6uDtmYnq4Vqcmt2ytbs1K3ZaWqBmr81e56aUPO2ZqdvzZ6v5qo5W7MXqHE1tjV74dbsjK3ZmVuzFynawtma/YlKVHdr9qdbs7OwX7U1+zPcddmavXhr9udbs7Ox3bA1+wuYeWzN/nJr9l9gArw1ewlGl63Zf92a/bet2V9tzV66dbk9FRKBK9WL1Euv3Ja9CGKNYK5OU2cS4DS1Qp2t/oq+KET5nqlO24pErsZ6rjpJnUoxp6rj1fPVGUhB/55PqY5TZ6k/p+8z1HPUf1H/TedwFv07iWKevxU1PE2dSpWnTKlukq9P+T6fcj5VIZ9TAbJNUcvVCepEAp+ojlEnq1Po62T6dwoVfax6njqdyX22eoF6IX09j/4BIqQcpf5E/SmFXqCepf5MvZi+gAPSlqm/UH8J4tTR6iXqv9LXn9A/4ILUEwyppytqp1PUn4LU0wlyBlFwIrUmFXwaNSUa8IXqBdSAVBI1E329kCuEZd8ZTP+J6mRQrFZQkhdoCpH85K1IT6geoZ7MtT+FK3MK5Qa4Q/DnEfQ0VExQLQI9FfJEgEPUERAw+lJbs1QdCamiwKR6GsSMvhZuzUjaDlZPh2xReJ5aCmGjr4mt2Xz1TEgYBcbUMyBy9DW+NSPJm7s1W6AOhZwRqKsWQ/DoK9majagnQ9ooEKknQfzoK96akRR21GGQOQoHagmEkL7CrVlTHQ7Jo4CjngJRpC93a0YS6W/NWltN80qFRql5dR1APZrXUP7sgliQiRpI8xoqn1UQBpLQvIacozUFLkhCPZiaRE0Q+xPKlbg0TshUj5AgsZpUo1uJlDF0R+qA81SEDhcpl7oUiA8Iq0ttsQst3NVVSJnhzyWS5zMnj6d/c5jEEeZSm0hqcvWfQ//we5zyqJsTLyjNc7dS0uegNx9PkCYyR39oqpizJ2I4C3hXRy1cZKNcwmeCIuBDhiJgU9vPpfhc8T0d+sI/uD/PCTsHKrpwTskTQqeaAwV1z1xEypU0j6KoMsiHSAOcOiNBQoLPUwEqqPEt4BN0gWoRdCWB2CEz2EO/J3BHsIgNjlTKUidxZ7eoug5qfZwQb1EvOUH6gkWUc5EufZ5NIPz6gv2crVTxFUKnpU6hJFS1E5EO4Zxyy3JCYnot0iUnIQqf4DGxPBeSLUW9EVH4XEmphGoowejGgPYeMNzfcyeG7fvutHgBgAkWkDCJROzNp+LeTXcNWczQN24A79YrfPq+Ad/yzlbqCnZh42OJ10V+YxEB5GHePc2IMRyg50626tUp4AzNAkZyCSmAlaxGQqQ2PMKUJfMEmS8s0PcqTFXSMBdzUFeFWYNGXuVnFv1sUxRYqiz6w59L8LmEPxU+FX9O4HOCPxN8JvwZ4jPkzwY+G/zp4tPdduVWBGIEYh0YR2BcBxYisFAHFiOwWAeOQOAIHTgKgaN04DgEjtt2ZXnQG2Qedj1Kk9IGB0PZIMBTJLho1ISxooscbraQxflM6E7+Poe/b+Dvl/P3dv5+KX9fxd9n8/cW/j6Tvzfz96n8PcXfK7Ztlf8McXmYNpjhvE+0HCfUVyhLX49jfhH4OA5dSV9H4YviQwNZqiGxgRyhIYmBLNGQcQNZrCETBqI0ZKGBLNQQZSATGrLYQMY1ZImBJBpyhIHEGrLUQEINOcpAXA1ZXkAkKBU3TQnQClgneWxP5/ETvBlaE/Nks3iDhFN/hPenZfjA1aIPuJZnLtzZVct8QhBztNQVl+4E5F6deuwhAJ9UEFA5ZtvrrZGLkRaGxp5yiQCe0oE8/gqX2y5ThkDC4DzmwIQEEg4oCYxzYIkEJjiwVAILObBcAooDKySwmAOnSmAJB86UwBEcOFsCSznwUgkcxYGXS2A5B86RwHEcOF8CWLDYEFcJ3ibBzTq4W4JbdPB2CV6lg3skuF0H75DgDTq4V4I7dfBuCd6sg/skuEsH75Hgbh28V4J7dPA+Ce7Vwf0S3KeDD0jwXh08IMH9HCTRKRr0QYEfYLijXOgEND4WeeXZxbdcvLOhBcLWcmD1yQHbX5ohgCxWexmhsEy43DURCJfrPlh0TQkvRHiiDC9GWJXhIxBeUoaPQnhpGT4O4eVl+Da98VlCbmfI7grkDr25WULuZsjeCuQevdVbQu5jyL0VyAN6y7iEPMiQAxXIJks2nUvIFQzZXIFsY8iWCuRqhlxVgVzHkO0VyA6G3FCB3MSQnRXIrQy52arwhyG7rAp/LOaPVeEPQ/ZYFf5YzB+rwh+G7LMq/LGYP1aFPwzZb1X4YzF/DKQRTTl1Xz/lPUM2//y6lcmBnd7Qk2cVpu4S/2ZRT+8QesuAyjMHj/dWAnJa9zUC0OetX7XYkY5aw8cU7+C3FqDrxKjZ1TvUXv6RL18iry4suhyQJTz2XPkWfR/skqu0ax3acgRpt36FOsH4yFu4C2T+yuMvU/7F18vUxuO3UZY1XLE6sHFtoNF4doMyhLSvxQi2Fq6XgjXn4pss4x9y1iBq3bnnym64hwftHVPQxMiF0tc8zZbUKk/JrcrTE4jTLp8ph8zraWdIymO25ZY8upiUt7YudOxg2K2twkMbvBHTv5O10Tg9bOQPkJU5fL1Ijtbo+SPg66A0AI8vaB9EH5R5+FmY+efi9+As4N9DsvBcYg49gYvMwILOWuXnc/iyRUB/w3Ml+8l8ci1d7spbazB7JD4qmitCIiymD044esnmrXqbGS0NO3l+CwFSACxSQ2Hx2KsK+AsciukHZ5gEf51cs9DS0chf9cUB6Wjk332l3ggU6RB7eRQ/RESadJrNr75NioMvVR48vvtp9tyN9obibY6gdkR82+utlLCLK9Wb32CJ3yqYe9O3vZakCzliK45QXUa6i9pZrJV3v96a5j0iu+LPdR9tUOLBWmctb+atgsbKgtOkmLvfYKUhPu6hj0Bu/1q4F8mOIt2o3sl8OQdeKLe/JqCecaJuaU4G+W9fdzFzMik5GeTvuG+zOR7SzPQjeaCB3cXERXnsZiWgslS4FqKZtamrv8ECyEo7iFMhLuB0c+cVVIVlIJqgPru23sff3TxYk3WXUb0Q6iCjeB0u2607t8gtUvTRKErqSkmdSkkJl9RFSWHurKuVdH4v84uyQpQV6rKwDOeyOlxWV5eFVQp9g7DGKapNf6iPreb7+RQZggGt3JZLrHCJKDdXq03XofaqNFZQNFZYcFA/UtJk7oWoUyB10jSEqFMbcSpAnWLmXkvXCUvkXoWBca1SbRVwpbpcqUBXintVToWqYLKoiouqhEReKw25RfDWEhzcR1wCyFT+KkN1EFt9soUpKbXCrXjH5ZvoIcnR9k3WENnaaQ0Vrp2WkS5PP0yq+M3oLt7mQM1xjQuEhWTZEDeiwfJxonBbtcg7/+VSLnK3pZDFW961iYO7ahQ88PbiSLZOAZztnGaeTN2HZRn214UBKjB+F1ULbSbNm/nSdE3hdAtN12XB83tZm5qmaJiWatebMaJ701kkrRiqrqKMWutw347azRd597U8gBVhJMIQyAojbvazA1sOEZVmiev1vfSb/4jGoDuGNcme4U2yp2SIK++BOvkhz+NLHzDI62pWtMQj0UDvj4f3/oQrHlV7f9knE4hv0t//46r4tkV841J8S19HFnpiN4eCVN0zcIWSqExww5AaMZYH/TocaOHyCpOeal2mmzdkmSOe1vnpiHhdN0y8bqiL1/bh4rW95KYT6VZUEWofoZcFqdYbPoudVuUFaVoCgwGVbolKP0KaeQnhfZZaefGQRlZD21j1ygGyvzDlpC3DE5H1qCLrzZqaigo11YSsxxVZj1Tc3+R/b5o8oPZssqx3WdabIuvSgXS3R2cEv/7IVKgQCj/ULrW0EsJR66Ck3GNVXw1r5Jd8QiSFWEvI//jNwfmKkZNSRqQ5eOTnDt9B5dHzfn+torvhADeEDeDHE1jc2pnY71bZH2r2u8x+dO+map1GXbuJ7s5vQysPq7d0RGFDTUycsSJ2lZs7J08qG06lsrE8IFaOG7anc9B8+gS39j89u5OJGEKYrLFlRDZXnBnpkVCeFHTYuZ64XzmlGi0X+h14ovKrUGcFqqV9XrMfk2hSBfVg2GPJAzAUYDjZAyzug6UhARN0WD+/gJiqJyFmChLyLoGTBZIimER4XyXcA+DefsB9/YD9/YAH+gEH+gEP9gOm3D7Apn7A5n7AFf2ALf2Abf2Aq/oBV/cDtvcDrusH3NAP2NEP2NkPuKkfcHM/4NZ+wK5+wG39gN39gNv7AXv6AXf0A/b2A+6uArKgMs/xSKT75zmZvHGh5UlB8rLWKj1dEbcTWO6K3Dee2iBtWIxNhHM1flvsPd3Kn0aPRpRjaJRv+6r2QmqpOZTLd7e8sjQYLAcmmTNnpF5szFZ5WoUfOEwwqigWfxtVndOCzhGN01RdWtnDySKcEcRrc7pQEazJ56lw1TpoV19WnT6UjF+fXUWVOWCkedTi+w8B4doDzBKXdo10HkgPUSpVKaIotiXf9m3eg8o3Kopo8bac1XvvtnSenoVrh0CgaB42YmqUoK53kCYKMBHzQYGcq+TYalaBuLWSBVrZDo6yULkrLFn3bUY7fMSi27HVycx1H5OHLaeGzwWnqrMXqjAcUorC8kWOfCgsQKqSlYbgXQKja0xmqgOaz7MdQnNW5c6arIWxjR1qYmmBT2IwdCFgKKZUXjwI+8yV1K84uMwtLumvtTO5KH8pizLAUJr9ynZQ/ebuIylk+q+qbF1WtlVVG6jwDCq75L3m+fOlCU5lyYaTlEHGrxjK912Nsh+gHIw+1Xmap4cYAfkFSBiI2WQWciPVOrDPQyj5FCo7cKvowH4f8YSzXiaX50v3XWtob5neew513lbZefc3hnTeFjpvV9ZEbfw00rjsvB3VJJJqK6Rm2Xm7qo1uFEvn7ZSd16fOi96qsEbqny4+3nqvlnq/XOr9siH1fmm93vv+uPWWCapfeicUQBhbfdog/4kFTwjl/HT722V+urw2P106bH6aL60rgsTMSn0zK82iGtujGdgeDbL9JcL2s4XtZw1h+5l1tu/5g7E9IrZHYHtUYzt+Q5GuSPmnpS0VQTOdJLqh3mt9s7qSrhoqj5gwmrbKBVhzAMWhmnhgsB5YONNm1mJeF8PNBHKI9HATDA430VoVlsPNhCZfU4/hBoeAaBsCmEacdX7zBvLDmIEhTPt5a4rCBGe6ENAuBLSlJRa4aasuT02ZlIv6lzf9ZQxvCBVZ21AlBHUrBGXztnHJipFcjaQECt1vKBWuNZYBm38iPQmoj8eqiebtquYZJE5dbDoQ/WY8jmg8BoFpyGNahDFNlI+nIhSeBojEtF+KClBj+TR8s0SKNupRRUVmLAu5f6kRFUpenM9aPKEgewwXmM/15utBDRwyXIGrY/lGnBuMS5+49fWWdncp46+nRiXiZoq4UEdA8O2KEag4UYWQBqXV/j963PPzbd9qYNgsUqOqOuLbaKFhEd+lCHtYxPcowhkW8QOKcIdF/JAivGERP6YIf1jETygiGBbxU4oIh0X8jCKawyJ+ThGtYRG/oIhoWMSvKCIeFvFrimgPi/gtRXSGRfyOIrrDIh6miGRYxIUkiCPDIi6miNFhEZdQxNiwiMsoYnxYxOUUMWdYxKsoYu6wiFdTxLxhEa+liIlhEa+jiPnDIq6kiAX1iGgxiWbhXO9XN4q3r5DU24OW3IWnj1501zH2kza6xeHPlrh2+HMFHeTYxSmQY854cjf19Akp6QU/t0kvFAXd+C65MhVQQTYmvv7aHjAPvN6qXKPS6JR23+c5gYc5vodo7IHueb1sn2x/H1/AEjgejsVpUnkQpU8FAz5mUgEGETkBrR9PZSEjIBIHDM83xN72Q7428LS8XA8kb7oQgyznADJ0WoSo8NTXzEBOKb/QSEMrqXEYTeCjBWMKfECPeFBz3to0Nrmn7YGDMD5fDnnhsCWU99w7mOwGJ7Ud+u5qeIeql2C5wIssBd+VmbcqGynevx8pJhujfZMNwrgdvx7VQxan1fODETPf2IVd55FywrGrtjjlUXgE041RRT9WOoafRjqOFz4QNwd+OedissEj0oiaK1ONBuwiMaCNy0RjTjHRmFAeTTRGI1y3p2NXomTiFUCHj1fVVSOTVHXtltzPify1PCr4KgFTEzE4ilCyp7r15Ygvtd2BWnexc832DrV9bS//jd4x3o5qe/kvPz24g+1H4H2rZ9pAJn++2ZLUs7BOZatwRLYKE9nVoxgLDaJG4C5yrDIV66gxPRXjoIc9LU82CsExyqazjqrq00ahPvYjbhCbDJNcIssM4gF4ErRxqSqqyhHJ6GifzHSHyUwyKDNX2MK9zbbIzCZ7iMxM2XWZmbIL5nGJ6YgRnQSiM6YSMGQcP7QvWYjOXNXtZfOM6CRqXiE6Y2ocojNHRGduKTpdEp2EqkVypiukPJUIf7JkoH5jg/V7UEvHAd0nHhjWJ/b39Yn9lqmfh/olta4hfQL1G5mpfiOzrN9YJJ5zxqq9I8ER7QiOaOFGtIPe4eVobu4k3aKTjEIgRvWyPVDhKlYyKlgFZ8uqm470y4ThWTKdHiGM+zTP7tU8u6fkWWJ4tg88SyrrRcOzujCMijBAJup6pFvVI8ks9AiYNSrMElWSQApGRSjwM5RF4CR9Cg9HZN47cgZYViqWTl2xuFAs+ryxo88bf47zxmGKZU+pWAYPGlUMixHRLp1Cu6g47Q7XMCMVDZOIhhkVraB1MQSDNMx4RcOMqPHpNQxxnTXMKGuYEckLbDAaRlSvaJjqaoZJb6gYhwGjLDGxPg4wFenqivlo8BjHAiOV2KSI5aomWZcray5hfkGmDwTUswVpICEDTQPV92iSUAIudQQMGGk3NKCLvEZRlVkRgNVCh9yLVqtogzG6DVEZnRMlYN2nWVgZ6ke0D+BH2bD+0IZFq+mmxaFWtWFbaFicMelhiIRd5olPUHFrZ1Gc+/iKKwv7WyO2fr04UBQiBWcZ/5HY6j4u7oKZUr/Bys9cXfuJqW6lsjPz2UfBrvw0SjKs/5DCXBHl2dTaVBfqMNZKBRMwYxAVRTBc9nvphBgwp/Px6/VwGZO3fSbxS0kWKrt2Zuvwme1BeZMIOZhTHqIO5hRKu6tP2UooJZrS8doqZA99ZOXaTBTTiFZMnfJAdxFfdaewufO+uB9Z2emhVIgP59tPUk6aqENTz9FKy+xMYRTARdtR+M3vUhR92NkoW0uKHsyVvHipQ0ktNKFDMvPAvG0OGtIC9KqW/G5pmZF0LN8CVQzvpASksX//lyR4kw7q2OtaqqPGi6XlXKZ5jtDEk40xTDbmKPqx0nn4wTmXnmzEmGyEZrIxpsJisjFHzRMP4vokrT4zI7GvzyrBADVHHz9h1iwzpOrpU7ecNWNm0K3Mms3MAKOM7CplehBVo7pmaqwn/89GqQpYxqu5WDKPFbbMHvJRXUXRFkdXY2yOoSkC0tYiOxBoLDjNVjZaZqy0VQR2yWD8gEAkT5+sN9lKZs8Bs+mWojB7zkzMnlMye+5MzJ4jzJ7Tx+wxObLpDjmyGasc2bTV2LAjGxZBzLAjNabri8nik4mq0R4/3vfHrdpqqZo5lRms2kvrVds3Y9VEOGasXrWbzJVuMq+oXoDqxZVuEpfdZC6qN0+qF8y2ei+R6pnTj8E+cia6yLDTj0jEuaxLKcMW4hqmuubTlk/RO6iyp0ZyV9vR0K9X7imoQxFxKK8UnlSsFBZjcbBYLTpFP9myCA97Yf9rkXnUaxEe9cLSCgmhRjltNtuQzLDX6xk2bwkhrzqG3k4CBspWGTyP03CGZ2V0fTK1aBW8CBA9SOIVOn10Gk0+pjU5ZAG6fIwXfzVNMKemCbIAT7ZNrwvmFKvHuX2rR8rmOGn05Wj06sncHNPoS6nR55SNvrQu0nPM+nEuZHWeoh8rDfHTSBcVsnooZHWxkdW5anEhq/PETGGRyOqhdVmdi/4yxwxKnqI+0HsvOkqtWvMGq3WEVGuJVGvxkGqperXUH7Ba8/qqxXb1pJNQuWzJbKq3UKo3IdUbH9JVk3pXTUz15kIulpjqzZHqzZHqzZmpenNmXT1UyYM2WAJNgJCLkEdFZ4cVIBvDqdT5KRrkA+spjDBXLVHBNENc9mRG6RpkTx2mGIZqPZY5z9yZ5jxz6nOeOfU5z5z6nEd3Q7RaZQIUyFls0aJz+lqUin++tOip0qInDmnRFaZFB80zBgfD2bfl3Jnacs6Qyc+YrpWa05P/Z2N6AiM2QXPQRmW7d5WJnofouZVoS0dbHF1N6NVi5vbNmkCDFDuQ0K+VKAlrwwx2bPsGJhRnPv3y060PV/VBLCL9Hsp45Rb7WKMD++EYFfRJracy+p9HbxSOyJktpv74wciVKIeSwL0MZYs8Ojli1q/hzUF5xV+NYlwTk5EOxpEZR1apy7AatobWsFl+dsrPsPxsl59x+Zmg7l1tTE+Dsb6u4ZkTdeyFNtcCK0n9WdAMZlbPomXDRjYDR3KFIsrWlIOng+RE+eCBE2VPqQGYrw7phym5tNwTR4XKVgsHjqA9NakWDEB9NV9N1KG13CKVguwUB9b8yF6l49uwhrGr1tpe/hVtkRUq3Oe++g5trc17lp/sM9O2q5npW7y36k3Qmy2+KUoqatgm6E6zCdp/AYafkqpnm3+XaNxWzWbPZXLb4CqrRuUWqySzbkcZIRSXb4I+x7I2Sm6pBdbdS4eQ/losBX4ETQrQXgLtslb3qoeU+Qponegg8yj9TwrsBwUBsa99btiki4s+fM6utzbY5G2ruOHuloeoFqTtVkda7mraqrCJZ29kYh44Vdy84Wb3Vy3zcE1xkb6xEoUnNFB8hW/A6z0M7r3LKLFkefudVubyfoZkJXV0iuuSzlo9f5NTyfJw9NY3kpow0S7uj+N6eeEl3SSAxaHL1L7eousAytMuMPJzcOdMTyD8vCvDjTd4cYOQdjg00r0L/LCPtq9zygY2I852p3rp1Yw8252iYYUBN3/Fil1j/eRhEAqUx4MQfvCyZXlLqbrLRhQmvXLnJ5CBqCkDkb8WV2DxEBhVF9hSkI1vVzM7gt9Fbgpur49KHcVLCPyoXkXsbPErs5BrQG7A3ShyOv4XbXOLLMXHJ99CHzF9TH2dPtoYX50eK57ylLhLmegX5Bz6py9zZi5eA/K4ROWNvEFUgMSlYAvuWjs99uqu1U3mQvE71YzuvtOCjLHltgMvZ/ucNfgDiXFzSrXxNP01QZXDF33Qv1NQD5bmXY54Qd1P+SL6Aor+/pbPwFuaNNPeOy2wLrmc78C6eGjHi0M+V9GCIXqMer59qpyw3P4Goko7V3VUV/e7Wz5QWEobQaBcuNRPXvGPWz0q8REz1Vl9S/zIKhwB6TN+4dh+p6d52M82CwINxsm9gPzb917ydv9kgJXHxkGofHj6JJAGskqqWWF8kZvh0pABNaR0cVfR98KRqxkXEJPBEaaBV643QI0J2v2T5Lz3kSoxWwZ9WxzxTtYYZJrTEh5Qz3BwLp7AjivhXcivQT9Y3DtFm0F0XPl7Ot7HbJyKo2mVqBCPY8kDnI+fhc0KC5uPlYVtGxRL1R5FV0A8haTrJq8TKW9bhi1B20J1ifnyxCumD02IP/iAiLrYyuHqZgcOCpq0Z1gqSDf/1uaLZM+QOgVl9PkHCzfCZYeArxJ2N5BvTN24GdXaytLFw2D4MXT6k0Gpruutpq4e9Wi0BheXi1dLrxM1bMe3+b+mHUlRUEsiG0ZniMbIfNEZJ6MJFAVec8m16M4oCx4K3IqHAtd4KHC1h4IHv8YXuPIHy7YOC1cAXN1QpOAAMcUhfPoVwN6vkPATgH4rcw+v6BcOTdp1d/j1pdwd5pfdQd+YdfM7XvmxV/YrO9HiC6cjh9MtBI9xHcbJP/aa138c1UXwNiff0+XvpzbucHCOId93Vr6/Uvn+auV7b+X7a5Xvr1e+7yq+KfQse7cz4BrgelHRPmQH7HeoX9440F+wovSM0HrSnDDPvwY32Soi+6Xvisg2WGIfvOeVtbmkVx6vI5+K8i/bcvHIa2XS2+JSILeqdT1fAD/RjA3fffjy/uUpMqAmlRWBzt4nMX//lVguFC6jfzAwEDA9lIpXCjAe54bdhVmaKLhQ5zeoNe/9JxaTBZXcpKeFxQpcvy2PtUpN4/mPqPECkF9qvLCi8cLHqPGCdjO3MGeCovIei+KDRqMsPK6ihX/yEj5FoaKIeiyVRVWfUOUOtff8dvMxaPdT8KaAsChDH6UAywbp7TTQDuBvdrQCrwuFLI2UkdEv3XN5356fHgXyhalr0vtIJltsd7aqe2x03VOr/0R1iaBPvOOVg04qjBYiXR9Vpngq0sc9uxogUdSxV8zgQDKUYYyqD+16kGJEHIVVy6A7EXpP5894cKAPeCGvjGb5h0KyMbQrKuGrn75MfBTYYF9+4xu0jwKbVcSrry3uAdnl6nBdvpGyXveiSVkoi4YdnOSkfmVOtZA7KqoTlDVRrQ0qrOgw+lPhPVavHydy77ArXH9Ik7sX5HqG3D0g1yvJ3WPXri3plVCr14lsq/ivYUWmrCYurlNZD1TL+tj35FbKgXpZ+6Ws9/2jLmt/WRZmEjKMPMopi6u88/Kpq85HI3m05l1D/05WbvF1ctsphYl6lTN8CBhg31epSvdUq3SPZt+99Srt62Pfvir7lJ+6Efr7QKGQcb586ZQrLi3kWAvJekvmNb6pYFCpoF98nUezoOGjjO4Bd5DXuk2HrIbXottolZaFAFalf6I2qnuqRY81IbleiJOIgHMqXIZQmefG84jsZfis9k/dJ5chqBeM6FOIaB3t7HqDVVnO8/QgH8mV3rHI3Mm8mY8od9Jc4j55EuvxBx09CGZNkgEZ9lEHuWFOapZ+L2BbM34iXa6FYxMJzKXm9PW9ByqwEOlQBQQA7z/I7wc4tf8sJ+IkiL+/QboT+DTHYsD3GeDqpvspQrFV4v+QAFYVHxlYBv8HHGrkMN19A3qYag6sYrSivf9XEKr80OqgLm2CWzqovHsumCMVwkSbJrNbZeIOkTJskvvcuUussnQOVWyMe5rBmMEqTulLTyjnkJam6rWf5qnGxxoVsliZYfmDfY6fLT998sajsXkgmTQqmejBZKdtRpPPv67YRTM9Ryak9qOogF9WwCsq4E1Xgc/v5grsGqjAYZDPdET5N+qBAhBSwqMrGyLBI6q1/miACB32zBsygryoKKt4Ae0vaKP5Q28H8oYPXZuNvVmNqbHSTf1kOoacaxwZO8a5wRZ3INtLznz/e8WGEXHmUuGM5CTvK5xUHaBMqru+q5+e0bwsUeqForAtZWEfLJphS18zuAPNAGXY6GU+t0XRGl4v+dZWpOKcCUtSh7NvRLNxOoxYF2bZhth9P7us3zQ7qpNIayoqxlDnSl8HLRa/JuzotU3YA5HomMc2uJzDGhS9C9EE+TR1reH8E0KgoyUjWFXzsH/tdZv7raojueQ3Xgxw+e0Xvf8d0EVSyHecWmb3OWJujO978X2PfH8H3/dCfXaomJs2XVgaIr/5YjDFlgW4uH9w+aRDF6xc6FpbXEXk32yc3rZB064VFIXaDXQUZRWPUV+xi9ixxzKc/9F1he2CBZnUXUeXMxOr8t2/5l53eG0npmyuJkzW6FO3GEY9tErKSzI43XM51su7bKUwg6j4ovZzdx3NxQzlVMTX/+2y/ksgWhtJ033vF5cN7udb2AfQRgp5eLqpzrb739X3DBNWmazTi1rllqZ6JnIhjdtL/r7qQ0WfN/yVzFAAOOEWfHINp+BjQJg1R9XZRlGhEABC18FD01xRjezqKleYVjXzb5FEFOsYjyRqTe6towoDCdVT4yd87vbb/wV/noN81kwqjzcy7DVqzrnvIw/pWxUd8MPyj08KgzxgGgJ4ZqhQE/b6aPFLWlyhxX08tASGFr+gZbruq9iV6n7nlmOcLVURuXHP5VoLGvYL6gNAnRI52VMgTRkkvUSZeiP16OcVeyhbsNSWcpbbmxEAlHA09qYa9rYC+wHCvkJjAycaKk9LIGnyQnup5cBstvykwPQdBA90GYF7CEJvzMgGBQ6F+nWBC9AVHG7YEG2gm5iam798Lae6v7rrYLO+9tzUVaFuq4PXnDtzHwaJLxOt/1JD6ftv39xvFabPNa6D51Igb7/LiswENXMrU1RAlYt5sMyCeS4rfJR1Nx9SAUcvwCsrUHTt5F4MUVH1xEq4oY1uMVXY+UYLb5yuz0aPxjeA+a3UxhiVzAnWJLSFPqECATSLOEvmFh/CmzY3vNG6tjhTcz+ox/pkxXYz6iuXZGZyO2YYxwAb9ZVpNkoeORpf2koWWVAPKY9yRnGUg1nMKP2grtg1BF7fQejoc2G9pkaea59Zysl3Bo3WdDlftcC66qReH7sJh/S5nD6Ci2QhsFOoPAI7DHqrRJ9LHQtQNHPTVA8RgSnneNIVkivRUnzYVWhvnKwRaZb0NXsZQgLeq5dbUErFcqvYAwWWvG7pl0vM4SswJLCKBKqhuT/IXTMF3fUlHgw/NTAFLVeAZl/7EUqno5uZijQD1k++yEV+qVokEnIhIuh+NO1JF3pBlE+mrvLMuXarau/m5b/4XumJotzjWVpfHi+tdl233OC3ahv8VbVdcOwantY+vUa9KwvlqrQMHCVynVioGAslcnuNcuEgw9HnzvYydLsIit0tD9tv7VqucfJuVV5fzV0sXteR8ckqykqu8CLtFG1NidOIsXWigTAbW03hFpBlfeqjxhqS+wSDqNI/X6u0B+WqMOka/nCpUfjDInyyHHiDfGOfhHoHaTgNsNexwtumg44Et+igu45TX6GDPoIYLjZrQCjom3SwiSCU/xQD3DymGdUBTUai60a8AySnspUH/UabZJoXLoRY9zPu5dinMt6j9WttUzRyy36HJY6E3cpQAIfSH/BhBe0Yhye/+bqI2fnKwT3ld14oNtFVhyda2pyqNxs3Eh/+kFSof+7yuXfqTEXfSkW7laK3flOKDmtFN4YVXRZb+qXLaWuSZ6YxOhCXaFEp36IWWGxKsfJL9UbTEoVVyDf3X9TvA9IypZQ7sOgGclnIgb/0ac9+PWxkD2AlNSxbnnNbr6zz8l2//j+id/A0AiuImZNWE1K7ejw/IJZfMik+sFZumhyyrc3UW7Q9yi2x7uQ22GZ0mGz5pRYz0zTRCw2QKPostdR4paV+cYu01EStpZJhLVVuOyM74aGrfFgrFjeBIDE3DpLNMRt6mQVU7hXAoc6yCqC9RgsPbO+gYWlmU5jwVFv2jk9rqspJjpGgiikMOlMP9+4cF14HXgV9SEtQ7olTDt1pxdcSqIW2q4spiBtqJlR3ZZDv+0YD+mqYgdDf9OgDD8oJbxZdUSu6WSvayPTMJeKsC6VOfS+ctlRNfI9LRpsI0+UJ1ldXadjlEhm6pMya1ATxvqLeVLROxkYjth3dSWVNYk5N85O+eQTmRjqGG0DXqdzN0FZHZvjTVRys3ZRV1s4bWjtlra1WMPP0QOQpV3yCWzUDJPQyjAgvkXe1zyZpeVWACwcFv0uJP7Mq8Zvulfe2q16X7Ggwe0uyX64c9td+1GC+df9S3/++zrf0L8VTL8tMZPMLJ6FoB0pq6Fqn0CpvpLJONGV5pqwVitceq3hJcWrVour+7ZdLwbsqKwIHDC/M1KLj8dIGfUDx270l/K6GpWzkBdpxKN+oHMo3zKF8gw/lo19ZeA168JHxwmucDYsxp/SOZRc2Y/agzRihxaXJWNXLLCzGBsYSYzA26CHLho2Yq+iHxBA/WHUZGzGnYiNmK6dmI+byEkz5YiPmlDZidu3Zbjv6mAXOyXJH6laf4cs2tENg3WGcwv7O6imbpklcHjiCaETKMcIS2Any8/OrCE8vCnTS1DK7eDbVe1Vqy3Ra8iqQsNleX37pRKhDxTowOtRYJzaGrqQaWElFC6B2v2T1CpQ9H702+RcolA9En/StJnhw05cb/E7nBanjoInP73F9rZG3gnqYRxNwPYBYo9fhDLT7gLjZg5Zx8JzvbxqVh0F3YVtJnpM6QEuo4pxdeXB2K8XjmY3ekRa/hT76t5mFFbp+bCEoTKVh/xqeOsnQ3JXCbBT2tLKs1NLYFIvt/uWrgXDHFxqUnbI0JQS/v0ER/L4LCt1Ihf4Ne7AVV8uBahaFtlSoWlKok99E+SjrSOtEnSIAZ0ChXWDsIQyw3uQ7FOt2wdozM9Zuwfr8zFi3CdbtM2PtEqzPzIx1q2DtnhnrZsH65MxY9wrWNwewNGNryPcI8t0zZ7lPsL4+M9bdgrV3Zqy9gvWVKpYjWE6BRepaPzt3P8RXDCX8vMnW5r+OrEUb0GXpsanMw89xePYvwMt3DF2ehfg5KmvSy4zL7eUCXZpF+DmCn3lcbi8V6JKsg5/F9A5iliy3lwhUZSP4WZiN0sOJy20l0IlsHD/j/LLkcnsCgRPTeRKZZByOM3oBdcFyOxFomE3ix+UHLJfbTFcjhWW8R48yYkeT3yv0ltsnEmyhOngrnuV1+ZGHpoq2ogrhcvs4/YRiZ2tGMHKld5RiJ3h4RjUmpOX2EQSI1aiidy+BtNxezA505qgJxpiz3F7IGPPVJGPEy+1xxvApuJwfVRlTwZUn3LHn6R+hJykpsGDrCe997TnHb8vmq4NVG3vy9N3Gg5FbqVJzT/jq+/4rAUZUolpXnnDiQe+mZHMpcNDWE16ycD3FLCQ8eitWweN3kVVKAa8oJFPzdK6joGKc8Onmk84XjmHCIl9cm+kU+S4mvEO3nnD4BqR80tbsycqhR3+3oca24sDLKaCUq5R60pWZAkTxO3WKn4pFBGCLGbYYsKayUccr6f/ZwSqgx2rVgis1bWNXZm34WNlKz2Jq2tSV2ZOo6UavpP9jP4XaScUFfnJlFqHxtqpOgd+88oT7L3ZRT03tOdsgaZral21D27jqSchtFJCFTNlCUBZQBMOWMGwJYC1KOZfeMVUtMPuWVy/+6LasdWV2kOrSg6gqQMNtmDyRgMGV2QK8/zmu0iuJyriAe1dmsVqEG7iqozMgIbwy6xDCs9tE51y8qUqFrt0GwbIVB15KgQkmZ66mc4JpmgBNfkHnEQw7ArCI+31XTVxJnZOIXUg0U4ckCSJisishqp5arEJ6ZRSd4IQ/X7kQAgWKHbxtiD5qS64vocA4FdGlLLIuIONczjjK8RAB2FKGLQVM5HmM+hN1YJXQ/3x60fDn7rPQQnhIltDXb0M/shUHzqZAolxKQg2YAJJwbglycymCYUcx7CjA2lw74nugPJbUw/6K8qbaMeKUtQ2Kx5ZkZ1EgVq7GByTmjGJk5CACsOUMWw5Yh1IuUAcBOYYcfe1/vbGS+SZkflyR+ZkUCGuZh5xRiIzsIvPjGHYcYF1KqVQbjRKRnJ7wo5N/Vcl8MzJfUWT+fAq4tcxdzshFRlaR+QqGrQAsoZST6hAgz1OHXnnCWds+uKLM/ApkfmKR+akUaNQy1+9JbtVwgE5kED+MOhL9YKOzZKOzwVlfeOIL+59hyuDgP3W0Xwhv6HtMuFa8RkaVdfjyzMNMgV5JpaFe8qVNzG7EJKD6mE8Lfvd+yVOaZj6+GoNT2MvE9QV1LmeS/UbBB3abZ6dwotScFJc5GbXuanwlWTdflh+NCOQAP0oDs/yW3C71xfRti1U1ffPzt3xlYCvCzz//44FnmqxInpqput41zncHXmCTYm+16bdN+6faudlNdlmwWWHstKslY4nRb3yBWxqVtYaPtcaI8tnpG37gIqJ0UaLa4oskm1MsOXzt/GRc5uYWzhuw5hiTNUdiLkiidiPrsoRN0mB2D+PUzH9B2yw3rv4KLy6a6SgR1FfreoTeXHmhAarC+ui5bAUHfbIKxm6FdFS5cPNnBmzfNDWpX4jVqOZHOq6rns7RopW2dFsZDy9zULOqO/tx1SrfDJLajbaRBgINwwPkLftFVGgerD22ge0VIFAst4hGyXHRT6+EyORJO40361EU7GuBUT4Ly9BHZ27XorJbi8ptw0Rl13BRKe0Z+6WkNaOUVB9R8lW7XJO2hsqHGmFneJZi+SAeQLtM4go+nQXnDzvFFo8/mbX1Ok83Wk/zh9oAzXL65DJAB15qg34pGQdjabyM0JZGbIN32HqJ6vzTfLva1g8jaP5tG8a/LcP5VxrYFLLl1xyVxDVKQKxQ0xikxhJqdmhqbtDUXDeMmu3Dqdk+SE2lWdto1ki10awxfuABzDTrqGrV/T+2q/4fIxWjWUekWUfLbt8SV9zyypWN+ypoDbI8jJ0/bMF4SMowhd98kAshqV+BKjttO+hM19HKZyPvGpkxhZ+AqrpGd6SZWoNPaVxh660fMqipup2Mqm4n56mo7nZyuG90UgzCl1Y/X3K3zpfWjHwZXwdrGrxXAelhTWhR5SFu1F2xciu0JVxowy6D2wmIencg5N0Bek82neAL7+l81WBLEBo+5WVxvBiR77irAadRndzCv+dNppP5+cBeiFu2xO+DClXazne/zUoPzrfT30Mkd3YZlVILHEI1PZgqbae0ZuE3ecYISm0Pd1flKKk7TAw6hwjTqAhTp2TaOGYAc2rCNKfCNFFOHWHaOB41yx8+ZE3apkYpjQ5H9YAEalb1so52vpU/v5eJg3L0cO6jD1qFHFhHV91ztqvuOeep9jD3nGbAobq3edDJ/65emLywyKIYkihibW/D4cDN2JNO87vRWHEvjTTd6Wh/X29Nz6XmDFzy8zMpVrX6mdUlZjn8miQ4c419Gsb2vvvRn8EmXpURn7hdW1qzejNTpn3Clx8YS+vK/eg5pMeoDGmTUZ2z6hCtBbu3ELvvGMbuPX3s3lPJFtXSvgqMMFXfDGxXHbRJp+zoJwLDXv2VwHbNTW57LXPqXNp+lccxwUJFcya1QLXxVCgYplt7VMTshrusrCP+AEZ6qq2JWqhGeyi/UEHabxmriTZ+0JateluKN9Kspiaysi3buhHrHknV/HUs8xC9fnMR7Yu5O9QXc6ucT4DTrcpEosbps4hZhfRiMG7jo40KT3eKJpNdlPj1+k39UmZ2SuNe/NnBm/rmyQCjzqH26oqkVCew0xp87+JqLV14MXPbMOHa0idcWwb7cv8jSR15JGmOPJKUmVaDxzvxQJKNls8kLa48zYbdI7RcJi23CKcaUy4RG6mqKixHi9oDrBTDk1tuf4/y5JzbkjNUzf8x89sIRERChE/vG6hxjCYRXmB1yMfgqAyS0iuQIcqMpissQmGjlLBW2DpT2GitxuMqqpQUFV3nZT1510MX9og1qxe2ZmjNGoPVksJe3lOo4ixq5g6p2d/MVDPziq3OrV6f8UoRc3R9HPRkFBGVRfRQoC6k7OZ+7YhBqZ7qQKLoz1re2LXWSaXmoLj2OjWee6bWpF7TFlurdVClOZgLjFLC/ix7ua3z4mlFfrZ+yAJea2WOoSeZIvYqqtRuTuUhwgxx7NovA/NrenSDYWAHDOwUDMyQUWcd9QG/KhpnY2CCcIgaHAWHpOZRf87rh8sBar02Gz22cR9n+JJedijaToxlGshvUAxaRS1aWsD7y/q7acQgGy7gLzUC3qqwLBooDAI+yLJzh7IMksw6UDMPxUbD+5UutiPFZpViF2l+OgU/R8ti/9c0/FykOixhGUtYpyhsnBQJ1j7jlJ0Hb7wNM/Lh0U6UE/dw+EYpzKvMUQQWSgNUiRstiBtVEYgTRdkpiVttiKvqVBAXlcSVnJiAlotKukqC1oNHJUGjEdgsjVQlqFMQ1JFeW9PcIOj/M71WSCoJGi0JKrXQQla7gwSJcooIMgfMHK2NW7gk9Kv6owF+/po9lcdwZYuq/zFcH9OugacEQjFYpO6s/UFL75bWQu9l7xodXMBauRV7fouPlpkwzWPsCAkEqaEO5QE/93lCmodgIquMiVIxDaqv0ZrmilSrDe2hr75hMC/52SrHvKwjHRkEkhLg3tcqB9TRarNgj1B1dFdn0qkmbylqIrXnDSApd1TKLXu2aoneEBpE29aL69SLQ+uZ4spMIyTW/boUmAsqFeyUAiPFtgp1lZDiLbPULhVjrAJis+Aby+lnrOIw8pA8FJ+9Ez06+zqID/cO0r6YlJhy4W1KO02i3M4tPNVw8iQmhvSdJNuoscu+K2b+viSgvZztRJW2+yCKt8NURLWxtbOQjQibk1Swp9xz8SYAlpLnpkGt6WVZmB2KLdz7iC462WH6nky/n6DfJbLqwR2ldFJ/4yi9icm918uvtqhO+X5aYU7we/3pQfop2Xn0z8Fik/4pOJaRxLJuyrqQFXmK0DczxhcMeWxatcV9oi/uE39CwcWV3vbaPeLuSVV715s+2u9GEXsho2gFFt1t9GINTxm30Mf8Slfj+bFUDBPa5M1gPU/US3DyFgFGeidpkGYzqwb9+QGi+KgKxbfcNWUMe0v6l9a1w/An5uoSkPJmwC7SIOCRQPa7vBe/6/WWPIjqffAYBznu1oA7CsAeDdhbAPZqwN0FYJ8G7CsA92rAPQVgvwbcWwAOaMB9BYCEkgH7C8BmDXigAGzRgAMF4CoNeLAAbNeAKV8DbtCATQVgpwZsLgA3a8AVBWCXBmwpALs1YFsB2KMBVxWAvRpwdQHYpwHbC8C9GnBdAdivATcUgAMasKMATL1RADsLwGYNuKkAbNGAmwvAVRpwawHYrgG7DD804DbDDw3YbfihAbcbfmjAHsMPDbjD8EMD9hp+aMDdhh8asM/wQwPuMfzQgHsZwAKs5hfdSIWqnVyNrnTSsCfmL+/UHGP7+Wf2yDbGZqvWb6aGD6v9r7SKhhnaW638tZ2qi0ti13ukh55aK2nF0IJ2NeoFHYShGmvxNBrQKwerSLk1nQLQI+kTt6JPXMwYiNqzhuiTs2vUnjmM2qqpojudQrltmEI5oJvyPiPJV+mebSRZAx4wkqwBB4wka8CDRpI1YCooJFkDNhWAnRqwuQDcrAFXFIBdGrClAOzWgG0FYI8GXFUA9mrA1QVgnwZsLwD3asB1BWC/BtxQAA5owI4CMPUm3bMLwGYNuKkAbNGAmwvAVRpwawHYrgG7DD804DbDDw3YbfihAbcbfmjAHsMPDbjD8EMD9hp+aMDdhh8asM/wQwPuMfzQgHsNPzTgPsOPN2v5MPzQgAcMPzTggOGHBjxo+KEBU2HBDw3YFFYUSj5Fe3Yt9KQZVAo6znuo46wdolHOr3Wcc4Z2nOrVhxn1CQr6IBX0siH65OW1gl46tKB9fQV5Mvd/wJKpEn0ex19t5eMsjnLXRwijq/FNH/C1E+WWPKjT5oNLGyhR/hBvPaYx4Go+G0L6zL1I+ewLWUX4ecqVy7nzH6aespW/chcoEaNQaBNSICDRERAlSS4vFKk2dhra4hp1BBWYDxD8meuCdLkc0IXoXIxHCbd8bmfnB/HAH1X9duaCOapco/xe7hbHIhnMDdKETQywgiL8PYzPa6I8pfAdwsWxVek4x98j4Tl5hHack47oaSoGqBFcMhpbBbIxx2We5wG5SKnPng8lzB61Gtpf9GjCdc3a7PH8MNVR8vWUwXS5BXXLdoB6tIBhBlpThoeWiiQndRg4SCwFvw5nq5G2eoqSL6zH04hd1KZt/PKDh20OUrIINTBtjaz8Mhff5MKGGxEFo0psfgUSGIwJOc26AIjt09JYRVRCjFbW7nD1Q6iGh+NV7kXMPfUkdBRLaHsy1bzwUCx1jYRXxDX5OtzQ/RQtOpruwxW+hG5zxoZTNZSPtr1XSs24bXNLodFVVmvicW7k3h+oiUFeb6Z2jqSdI927dOuaFmrn7r/Tds4z4u4smxraY8bmBq2owt+CDabBoxkbnJr7PimZGvR5KqM/dNSCv3it4qQ0gwsqEQSbBeGPKQT24xMC79+ZEKg5Kjs3jY0sLHoUsrD59yELcdsiedivVX0ekOHJQJOMoUlY7TorBiPpsVe5em+XYjI2KCBs8TCtGDwOfW4NNLH16JsYg3ZMwbjaxJtqTaxfHIdASkvHaOkRFVNBI/odEyKAoiNwDLYQ4SkCLzns53OGcdg3HGY2zGF+5eP497xJdMDBFNlwxv8n44E9psalu/GCIYuFEYYqtcT0r0TFj3EkdQc7U0CcRgvyDDTzuQ14DppF+I6xYydWEuCzr2L60i/985VKy27YUWX+ytdm+2erPl4caOt2w2s5Z6BqbDlFgAdl1grGt0QVsNpSLW0oS9BNFSjVoozYXI0IKxFXVCPiSkSCLUJ5PYAYICWmPlWRGMEKya+VrZmmX8YX3ukGrFcabdXqqzg1U3I/WxxW1uLRSfqedyq6PdLL8p3bWQ6a1MIL05Y05sYeFXkqChF7oxUIu2X4HITPKsMvRfhME6bAiWXkmRSpA23eyG6XtcNJfiGX+R6hZLJCyb0XIOewzOwGkIYxz0DOBmC8DJ+KcFKGX95H+82cw64yh5mpY2mdSEeIpETh4dgmtce8dEw5aeysoLsJU8fzBQU8B4wsJ9PDjD1CS3iS28JvDEr0E6MbYCP1cKeRHqEOu+KW9Kn8sAlJAphPxgfqCOOIbLt66rV6oYsIsrySlEMQtgjCnmkRrhKEvdMibBeEfdMi3CAI906LsFMQ9k+LcLMgHJgWYZcgYId3OMJuQdg8LcIeQdgyLcJeQbiqhrD/+BJhnyBsnxbhXkG4YVqE/YKwc1qEA4Jwc53IFSXC1OsYYde0CJsFYXcNIawgbBGEPdMiXCUIe4cjQBD6C0+PoL4qMiyHAfhWLdEFpE5WVWQbkp099Vo8BYczsV1vsxjJWpuNfzA74prydKAUSUXoRcx+idk/GIOWFwHoj0GDod0GY8BnsHswBuwBlwZj7pUY/NRjZLu9jZ/+mKsk5qrBmJ0Sg59qDFpQQOnTIHly63Z8VXX//GnVfND/kajkSye/bShv0Y3RiIMcPCAxBwZj0Gmk7/THQNYh8oMxuyRm12DMXonBT3/rSgx++ltX+ISf/taVGPz0t67E3DzI2z0V3t7bx9s9A7yF6kSiKm93l7ztlLy9VzDx0y8bUjP89MuGxOCnXzYkZudgDHo3WnswZp/E4Ke/dSUGP/2tK3zCT3/rSgx++ltXYnYN8nZvhbf7hbcdzVvEVXkLrVEMbdMMaNMMY9MMXtMMWdMMVNMMT9MMStMMRdMMQNMMO9MMNtMMMdMMLNMMJ9MMItMMHdMMGNMME9MMDv1DQnpEBC4TDlmOSUMAXzduVBgwjMKUE6atPLWCmXsMC4Y4v9mGYUNpyYDZ6NTuxmpA9fl5lDewq6ZiGJHLfBAWFrLIukWIDGVyVwISAMIKYAKAuAJQACQVwBKZQJaApQBMVADLAVhYAexqAKIqkN0MWVyB7GHIkgpkL0OOqED2MWRpBXIvQ46qQPYzZHkFcoAhx1UgU9LejQpoM4Nuq4K2WDytBa1Zi1ZsbB8S51OLwfQIS7i02INRC2VROJ/NMxbneGFvvjw0b5cWF4vEYL0Lm7IJWsWzIZPsiltpW0XEMwK1LZ4zyPkCL2Sw9lOL9ZL3ZUSMavHC8YQbNv2X47fxeiJjyFNOeOj9zke3yRJKPUXHHwbo8QKFnV+Zfu+H/junf7lJ//VLf/Zck17HHwboR4r0Z1fSf2PBeZx+tUlvn7e9TK/jDwPUpD+rkv7CD/8fTn+OSb/2lGPL9Dr+MEBN+jMr6fOvX8Dp15r0B+382HNMeh1/GKD/UqQ/v5L+d7s3cvrnm/SXffbJGhPpJf4wQHWuWJGW6f/fX0v6U8vyr3n5rSa9jj8M0ON0euVL0lc/LElPNElP/j/n3mKS6vjDAH02oNJp6tdYYEUn+3cUI8tZXufy7Uqch4UQTZ8kdjWEb4rWvHEPWxuqJbAYOmYBfninx0ggLvvEWPXPpzhsiqiWPkQbybff9x52oJFchQM+FUtXxl/pKtQj9u0XFNI0GqvFnQkLc/y2i60X9ICUekAai8CnI2YtSFCz95ti0jxCuGe0bRUV2Y9SXqsz6oQwYNRUUWgOv7bJqjHLeWNRZdjGHVVt/IypFn4SNcdUYZTJHuO/Cf8dr9KuaY1AOijBmZqQcxo1AnJFjZArzH9LUi0hgynoCAUlH8c0xfl2G7x8qxAywMsxVNaggSbBFJr62TodjQAccnobtJGqYIJIjOQFTLkvUCpFt1fA6dNE2YgKy6iwjHIQFZdRcRnlIiopo5IyypNBxESNl1G+DCcmaqKMCmRgMVELy6gQUaqMUmVUU4YaE7W4jGrJmGOilpRRkQw+JuqIMiqWUchELS2j2jIcmaijyqiOjEsmankZ1ZUBykQdV0YlMlKZOHybyBEZs0wkvjlSxCdtlZuJCEJALAhGdAY2OTF66ac0MZZ11GL+pcezgbVIxjRx1FPsJGJjZoHye/0vZcr2LmKytmojm4E3MdvoKqqXKhG1zC9G1AnIMmwW99nw6DMPJx7z4OWQKHdUk40gm4WR5iGy7w2y1MBt8fxL7errRn7+b3fqdzNrB/6NYQf+1Tcpw8JflIquaFnxRmUbT8rbf4VtcnhcjDMvv2BNTxHstwzzsNOunEmcLjl0RYwslcC8nJ/5RYpEhno7txAan8QDNQ7ZvqYe/cRwHc1Pojj0Ib5hXSk23yMX/IN8gnR2SBofdV6d+kjur0ubME9AIg+JvBkSWauphSRdcx17uWoiXRPpmjOks3U6TZ02W58hgaMT5Bu5FB8Vdmkne4YkxdE71zzC3p6+OOyuSu3ilrojXh4rt31isUbXt82c4q5aDN/43Yr1sKO6bJNcON1SttgYWxgu4C9Mtc9VLj4y7J0jC8nSFgIsdCRLRRh8o2ILVvyhNuRUw5Fb68ohvGimRsAhXWFRElcq6q1K3ekraktFo0pF26iGws2IWkU79Yq6RUXbyuaKRucqjytqS0VtydIVAnRFY1Q01hWNi4rGj6aidmpzRVm87EpFmzNW1JOKxpWKsrdK1axftndUe5qKRlI/FZ+rmlxRTyrqFRVtVipqo6K2rqhdVNR+NBV10AWLuwrNSkVbs6moXaloDCqxZotqFY2mqWisK2qfq1pDK9qqVLSJijZ1RZtFRZuoaENXtIGKMjigzcncPVfgpNdTJ1JO9LFnWNFGVmWpo/mx/eJ3FwpRHqNgb1kJd2hXz+UcUXwbU2Nh7kDaenQIg2efWRtm9uSqLDhVP/JI7VHwzc5H0zCuXvazKzz0hYeh7qvgYZMwfcq95qrC1q4q7IKHjvK0ExKEmspnRoZF13AkQ2oW4Wi1TEfK9CtlhpIj8bdWZrNeZgtlNosyQ+Vwmf6wMt3ZlzlzPZuzLzP8I5QZ/xHKTP4IZY7/EcqcQPqZ+0pL95UB55qDZTqF0mn19RVUYiHy0UXnirRI3kzDKG9QQiw3hhPSHEZIXCMkrhMSkSruJ6NZIaNRkqGVngMKHBVC94UynfWEntkoEfcRlYhbYYzXq+oRdwhRHr9zQnNxuWqE+uKlar1WT0nt8mE7NKVMGRuZLbatdb3ZWo2kIWnLUis+EQwWrRhr6SpZ/Bi1YnNWEh3XNfHj04qmzJnr2Zp9meEfocz4j1Bm8kcoc/yPUObEH6HMhX+EMtUfoczFf4Qylwwv06uU6YuqfsTZmVsZWX1dpgdN3l/mEY+izJlH89mXufSPUOZRf4Qyl/8Ryjzuj1Dmij9CmSf+Eco89Y9Q5vMfX5nVEqU8a6A80HVmuXkCR+KYwIU8gSuna3Zu08SS/XueRwFMyuirp9zVFHLXUOk2R3lk+e7RrI6gIW0J5A6gq3N/NSlKstSUJfGMk72oUrmgmOy1a5VrD072yqv2gZ7sRY9xshcVij2olRnUy2yjzKAoM3p8kz1T5sz1DGZfZvhHKDP+I5SZIP3MMtSeYWlYK9Ep9xf9gf3FcdNFImyQPYIMt/rq7D+iPDn1OmsKWo9x4tcq+BzVyoyG8Dkyi6THOfFrzarfRLMvU/0RypSJ34ztGcxCnqKaPAV9rQnKltTkKZxOnrzh2yve7Fb0rXJ7xZM6P95JYFgrMxwy8Qz/sJPAcPZlHvVHKFMmgTO2Z0vac0Z5QonVjat6a4Ky42ry1Hz08jTzokLkqTkreVrxRMlTc/Z8PvHxL54eddue+kco8/mPr0xT4qwnhJGZEcb8+KF2yuhH7zzWHdtobWjRP+07fqe1KvPlwNle0f8/5cB3e0CnNfg6MQ3zBi+h9b13U6HWKnZFVmzecdJ4mKNsuRt0BX4jduLhw7HlJvqtO7asu/Qw/i3l8H7QgW8Tx32xasrMoVl45oxUq34M21TdkqGxaldccrZKj8YReTRuRnlIH2mLmmBibRpjcMDDQdttcCLM2qvSRLxYIrw8a+JWKUr1wesbUME2PIKBSEI4DjGqCYhO1aEEQFLNVcBHWrk71dEQ4KxKOxHu+kQKbwPBKTFbdFLvj4ngtMmTgbSrktx6RTqKxOS32pJ2k/N+XKWCS036pb1cwMezYBKidxVopN9t+ndL+ejorvfxTXs3j1dnrR7d/sIpXcAvco8pL995E0cjhmHj8LTCtk+N/B6QN1c5MJ9M55kWTCfkNfP5ykpj1JX+LciddJJ+F+ZWepDsjAsFKdWKSkwPLnyVBvn293ORjjq4l0+g0OwQOiLMqEmUpCkwvB4kNn2a1UgzB5zuUPp5lHDsaZabTbK92u2EN0k+sDKP3yew8WdkLaJwQ25+buWO8shzVvHKk4XENuLTGJ9+ugA/aO0xbJyPRdp8bR7fg5M37EIVyruY55O4QTQCsZN4PqHMVXMRF8ibmSqAvAaRClj21tKGd9rk/LrIr0s5UBNHKEnn7OXn1DJNTp0p06SeaSCZniOZJpVMX17LdKKSqacz9XSmXcLl5BOUnIoITRGRytJIpZxHxhrAgZnHIa/gnmRBZvHsJVLB9gsUrM2TV6xaA/MV2I0FxFi4dz5VXy2P1ZzTat72YuWrOdCprEpOxa1KD0NJoUGa+Q1vu1i/cTdBZU59RDRH1UdPXLTYfnKknLvriGtddJZD8gSFKUhsIDa4imVGLaDqcxpPWtlLW5VWbplWXiRuoiu8W6R5twi8WxSpRdTKXtkgXq2VPbSyzrllWlkyTWbMNKllWm1lCEgl05dXM621cktn2tKZ6lb20MotKiI0RUT8hFIzVypYtS63jcdSPo3viS1ZtlgtvkKRilqbNUkQJnG7tBCBFnzbnSeih3bg1/KE9/1MR0m17FWAOFPAQN4iXqhtzMOeCNFCqLAWidc04nQc/QSY+fn5Wz3MOgfFaWldnIxTttyi4traYYn0WxoLO4lt1f5rWFFNvqJHkK+4Il9xTb7ixylfOue4Jl/x45Qvk2lVvuKafMU603iIfMV98hVo+YoeUb6iIfIVq4jlK4rtQTaroF+iollIVIT6BZAoNA7MFgHtQI2B+opZ9EG5RW7rXXUwnjewiFyXR8k25IT4clBMSGaondoEA1uMyyvyuasxdNaGX0oZppN6fM2K8XVBOa4ePDiuzqED3IXwvGjGU68YSL1yIJ2HOs96LB0rxlJQerYMmXOpGXvVgVNN0jCZzsEPxsa5uYX6TGIQndRj6aMdKReoBU/8SIlMn+iREpk+2pFyzIyUY0/MSJmRcoGU9am3bJm9XkbL80kkv42nv4eot3PUwVX1tv9RjpazGRwX6sGxZNdCza6FYNfCSC189IOjZJrMlOmjHxwlU9Ow/YPjwv7BceHvY3BUc9KF/QPkYx0PkVffmAhrkGAGmVktQ+LLSRh+7cOV2aDMvLQuM/sqMvPox8P/lKAnavhrFcMft7odPcYRD6mHj3qYgvSNevNgIT+PVlVtW8Y9HmFk5IuB4Ky8UN50WFp+LlYObjZYwrImBrHYEUFIchuiQaqT4omLxdDETuAwCp1Kg5YZoLJDqArsX/g/xxcjRIeY8UU97sHFU11pB2YwP5kyN22ryTRQdjoGunm4b8s4PyajfjD72QKUZnZG20H2Wt1R8eEaFAR1Ol9L6WwVW4sVm2qRQLmF1Bp95CJbUyk8b9emiUqQTtKQbEPOkY4zduhzNqW3pHTpFy3No3q+QGvLlGhM9hUC/EwKj8bAo/YAjwLhUSA8olwr9fKq9UKPHqjVY6+J8DEuBggVcHm6IGtoQUFZUDBY0MxaJeYVRKRGoU9GyY8993u8D2PJdRu8awUdohbKG9lQIjBF58eXVBMMw9Pe4iXmKErTN6T5MqS9RKZBZys//wge9x8ypJ1ZH9IqrnL96FGppTZ6UAa1lParpf/cIGpzHunvQy2NpQHonW7PL5h+zy8o9/xkYy+YYesvws7UGW1/NgqrvgKdYauislEhuQ/VXP351ftikI6hU6Ef1uiYodiSeTGvZpFHwcNgCA9b0/OwVeFhwJujOEoteRgID4MqD4NBPTZzHR9l/QxbA83WwCiyJ6KkSJdUajMVzEabUTlUKNZ9zH4WY/z00iYggzufTdmqWihKbIIIv8yHjcOgEkvqW1VJbauqZaiFhtdfsgcjl3TIKRm6F5zN4R5xvQ8cabm4YlTb/5b5Ha5/b7GQnCjAzG5JD6BtltEOmOwBdJVltBCnutqCVm/1afWW0eoMW04g4jj+kbM4HH3QP3whrce4N+FNfcI4bVLGgajyEqm23JcjKwBW1Y7a5CCpet6GNsNWkmy+ECOYbRLKPJllRFRadPqkijHdJkC+fo2+s6SXP5ThCJq1KBamHebgj8RFihcaoXG9ghAoXtCSRjqbFN7wmsBpxhYuNWjHgZ4kQwxVSMFfn0ZD7c1LOB5XX56aA3bj+ahQo7wT18eeJnLrJ3U4p5Aj+gg6R9uGiPW/7lp6rsfa4Kc08rr02+BSw0HxLa/IosZ3fVOkuBiG7aj6dp10iSOkSyyhXO/3IHyDeap6l1C1LmFF+IngcsYqbt960T1Nq7VBucqSC87y5cqL3/gM6dOWz5g+HflM6NOVz3H9LHsDKy0PP0szHz+Ls2BrFl6ZNRGIs5bytmYRvmkbeqsK8DWR+VuBFV+p32unl8o75RP4+pVxVzFsYfVBdlc1VZvyRoRbf0OfYUn1DX0Xz7bLm/14h95Xra36uX7/yixUsUSpaCv3uKiIjK6U99JBYcs8eK/fJ6dMGTZRfYgeBfkooolc7r/YpcSUqw9EVX3y3VUMW1x9qd1VoQquFORG/bl9ho1Xn9tHSdGVmVe+Aa8QESKifHR+MWBNZTNLwXBXWugoaaEl1RZKKi20wrTQwmEthPfzJdOFCgG3vzncp1AblQ2F9hBgIi1qP1ENQoWPK7toCcivPWMT4Pl8W/OeAnE/00FjLG1Zch3AEd3odbYjpiMtWvIdwK40qY3zOLl9ZOfLiy/8LK00SiiNslwa5Yhqo4xXGuVE0yhqmkZZUmkU+mvXG8WWp/xdwKVJAEKLPLENckS1QSYesUFUtUEWK7veILb2PlogjTNofKu0e7UxAA+3SgPrpgAIrRlHr3atEzaKMUhq50nqgFO4uOuKIoT+WsbiYEFbu0vsGJdsMSC4CIUpd0PS2s4KhN00kLVFmD+MCxehaq7hx3UjFaVxcU/Z5Y0h/SAuELuqo+jd5ARupNQIvE1pNDcdVaNAGwPaOGYla9I5kgGtPhAzDzETap6aWENr5jk0v5yfTqoFavJkbVxgpQerhergNekh6qBUEQ2HFHmnKkUOGXJYpDK1aE1KW2LJTZeDHYdKKU9STwLOk4GzRD1ZLVmTHqYO0zhPUYemh6unpEeow9URJ6dPVU9NVaRU+jT1NMwB4/RIKn2pOlItXZM+nUp+uqnWMyjimeoZ6pm99Cji4FHgJ5f3LIpYpp6llvXSoyniaHGrG0mq5Wo5iDkGxByrjlHHrkmfrZ6tiTlOMniOeg5wnguc49Vz1fFr0hVqhcbJ1XEqX5WupKY+gXI/oZeeqE7UTb2yG7mN3I6eblkbYRGW/+9eZuVtmnrk73+msniVs06mzbnd5VfKCCk5eTK637VsLUXUsVdlljEpQjYXfkVmA501fBHbHnhwPf+VXfWd0cg/8oXLjO8MKvyeqb6JAQG/cU3Nd4Z5OnofP7QzvJhXwaKwUswDn5dilteKWTpYTO0VrmLmtO31Fuyubnq9pYB51est2YC4WQOufr2Vb8d3vpkYIL5lJxkFzktgVb/oNURJ42SsXwf9iXzZrj5yZudf0084L1HwG/CDV17c/+SZXRJr5jew/jqUJnFfs8ARJr3Yfb2OaWgk3yjfSokEcyjvrsGVuQrv3rlbyJmo8S4ZyrukxrtFr0WtkzeiXApt4dCrdOh1CNG7xuBbcjGAeEkukkeWtJza0evtUt7UqsyWCKEtdUgo3o6UKdrByffx7kzmHGY3jkajSdP0KCbsMQzst/INkOv+ZrBzagUMGBZqauc/Zy7YmgvElXcM1NvKvyFPI9tlvQfZXi9Gpsgo3zYM3v6L9wxK/S3XSdYmXztXmi25Fe11qecSv7gE/cyz/Equ+Q2cZ/IPusmBpmO2V2JwJNSNKpE31iPtWuSt9UinFvmxeqRbi/xkPdKrRX62HunXIr9ajwxqkXfVI8Na5Lfrkc1a5I/qka1a5L/VI6Na5C/rkXEt8nf1yHYt8sJf1iI7tchL65HdWuSr65FJLfJ19ciRWuT2euQo6fLxfMxEv6cSPclOOaIjIXzoDtj4gcobuRiokHZoI6sO7UX3hVZQdNA9ZkAAOpBF+uWGebhmEuJ/2+uRT3fNJBl16WGDegT1WlIDrxXdkO+SRK9QFvxX+ehgazI3t9bR11RIq1V4kQ/zOG8rd1JRyGXi5q2j9TkNW4DYyT9JpbmEf9F9cIrHNJBBRfD+hzLlGmhPylWY7xTZWEVso5Ymt4fhogXsIVmXuLlV4D4O4nJr9sSVuBGQqVVSr8BLXZ0+dQzIL0C2AQWs36meziuWsfab4DNpHRhHMSwfkwIxw9nUty8TJfnrffrjlb/F6jxzsWNNQuGhTScx90QjbivQXy0fwAoYi5FCKut7PIkA8jd39U8YoLq/fXl1wkActmoDo0W797CVwcfzM5fir5BhG8YOHkZxE8SQBLTlYMeBO/FERCSucSgJfSCKpgaI0ukwX65YWCtb9vsg8W3qE6lH/1xeFa3JnLadOxyaorangCsBlw5X8Wuvkd8QhDXyB+8kv66bp/CfdbQN2tzYiSRC9vfAE3k49cH6nAKMGpxFTO0yD6cO5ZWLzKeoUshVrAd0YZY86FuN1lHKxbdDdXUIXdfMktqQ/XrqRlRLT9eSOEn/UMOT6Tgl9ZDhJmEiypPpwJ7KdODjHSuqTAd8HQFHhZBNW54YwFUtDQwBlNHfIZCyZF/VZkCo3NzGv1Mntcm7kzfw73mTONyb/n+YJe1AB+XPb30D/Q4Tl+ee3Pbp93VfIdkJiP5m7KMG+77RIMHBluLvKMLPHYrwIk778K8tSXvtDotaHZncYgHHYxyk+Y2OuG0v+ap0APkVWXxTdyAM4qZNPw6Y2sRxmM/bhnmAbcGWCl9YPmwEVa83W1PEBfkBOVOL6W+jl1+3sceruNYqPKHAxvVtm6ItgCl/pCrcdWGRkvv4R5xrw/MS/hHXOo/MJ/D53x+vOqo9wKuO5lVnOK/EcN/wypmWV9oL239Mxji5j3+0AR9Te4f4d+pk1h1gVqyZFU/DrK6KK8xyZxKsGP9IsBJM3PGPBKv7H1WwuioZ4FVX86o7Da8S1a3wypuWV4YbAYE6ttVwQAnXGQsCl48pLTklDwQSyCjUjOSayoRqpkH0x+LtH1/B+dPLoQwgUAzJ9Txz8nQ/1jFlzyj7hcb0i9Ro/SJ13hBu+SrinYEwdqsBpxqwqwGrEoiwCXiYE8p2atIrRr7DnIaAQg0KNSi3uK3N2lE1ow/alrsRM5ckdftbHteGvLL5vbL5feXp5vfK5vdRIa9ofq9sfl+a3yua3yua3yubHzgU1s3vFc3vlc3vS/P70vy+NL8vze+DFc5A88v5ZUBxrjS/X21+TznKXpXaDirr6SWzpQJmLtbCIMgCHtvsBMZtI05zo1974AnWUfOxyJIOpVf1lNopzUQ23Y8ZaL4wL++2JW+6sNimaSxrLKQf+A5+dgPzpkXYFuevrJdbx/LXU3rAw9eRJvZpJnaZiX22iT3WxH68YaI/1TDxn2wYhM+XCF8qoV8voV8uk32r/Pxmifv9EvdHJfTHJe6/lQi/LBF+VSI8VCJcZBmEiy2D8ErLILymRHhtCb0SnwK9yjLM3FYivLlMdm0JfUtZxPXl5z+VuO8qcd9XIry3RPhwifDREuEjJcInS4TPlgifKRG+VCJ8pYR+1SpZXSJ8p0T4UQn9bol7f4nwyxLhpyXCb0qEi2yD8NsS4VLbILzKNky9TOOS6L81sMJi3p2sytzqri/6Q3HDx84dbP3aEh7aRZQrLjBchVWcHDcUG3p+1Wfybd/lZZxb7IBhQTHzRHzLV1hZtdIAQSoKGqrJzqX14BVQUMYvKCw9cNnFwBWy5vKHDVyODFzA8YBjBi6nGLjcYuAKWHN5GHQfQYH50DXsnnnKXYO9POgbduCybk0OV4Hs2IVCWRNrpUD5FM12h/helcMUCRoshKpjTZc5rOsymOU0GWoADis92XqUxnb4J6JgDHwHP44Q5RsXxJFYErRy57S2xWUQDkpPI6VLBnpDiqN8ymJ8KtxoNLsSiGoYTzMYCAzDONZgIDAMw+g2uxoCh5eCOhs/NtVpvXGrbLgZVbjpIMOm4abhZT/rDM80sxwwyzHMisCs/oxAVWoL6/y+DPGztld8vdx8vUTXQ1egfKkQ0+SktGDIIf9mI1OEn2QZdiB6e01ZYE3yz5iLZIhtdNF+xWI/Shr69rhiV5FJtKCh1+JHEcy6ALsbErgAUZas9hHeWEZtjF5oWxfYG1e6qQ2C8l8TCo2y2OwwOxhYnzs6b3y7uA//vMkdWOzbfSX9wqXlPqojb5o3gG/jJ8waoP6cVRkx1anpgwt6ncCxLdd1G9i/wPaL66BnBb0Mu+Rp4fFHxMUVTlvVyNzvZZ7G8AoMu4bhDcFwahjuEIywR+RDNkg9aNocps2ZPW32kHxdk69b5GtzvvZM+TomlVOksjiVNVMq26Syi1QNZjsrWXsN9gmhssLiAfqmAw/1kNCQ37hEQPkpN4pqSG3SlvIoRPWQtwN0obFqcT0BM2iRjowk0kXRMLFocG2Lp6rhzAD5l+6iEYJ6tXqEpvOgvKV/KUuqhdTRay3LhtiZ3WvaxdplreG/shV3DwlyStUU3+N6czBrwJYQ9bOl43VlLLSV7gG5g29siSHgIiDbYPi1pYvorTA7Qo9N3o3+GkUtikkuuRDfx2hf6kp672Lur84S+ZmQH3H0Wnzp9zCipC9l9BzUkok/IoMuogb5/1H3HfB1FNfed3b3FmnvlVZGgBPa7M17CZ1UHIwpqwSL9AKk9x5BikxJk63rAjbGCcKYhLxAPgU7sUNsIrpJFTyKITYR1TWJTJwXhzhBAYc4oX3nP+fMzq6uRPn6J/8sTTlz5syZM2fOnCmrsOvv4U8h+gX78eWvFxM94I5UGH5DKZUxCfzcRvAiUTnRDWiA4YniJ2fV+B0xv+uC8xqNL07zAu2nW2KPL5o/wUbwerMl5qdbYr7TgSocxbIm63KlUgFmPZPmGxoCtkp8KJAiP3oRGJe5yUECyZMhHGOLGoX1Ark+/Oh6fqHcYK1o3+xYF0x5s11vUgJzoqJuqiceUlqM6oTFPLn4SQGAFCBO40CbSagy4oOTfmz7yoMXOi4mc+JSEkVrUTnKG3p0EWPlDXjcAaToouQX5UwrauFOS+a0h1KBVBzaTx8QxVytT6npljr1FCcVQpvFcxqMlfBupYoiMAfXFf78W917i5GbgkiRNKpZflwD64p3trm4fMEfLH8b95lGn6WNJmKVsxj95qYGjJ8aGjBrQQgNd8oBJYEucjtVorhqjHWjJML3Y7Lrn+YPw5WfDG5U6ZDZ9CA71N1+6pjZWqb9fAO7KAM7kAlfSmEebO92uC2+YUaY3E8RrTg8goz+bEWDa1FRXUlVhpUd5yGrQOfnQ6MjptpZ2yvkE55vrKv/f7Qcqry+7Pn93hw39nnPD2Cj1J6XzJM9hyEiGzxDxh7KgN6USR9PFl5tsrW/n2weMMTODMQ1FgJbLFa1/EKUB/QlkoS9Ymbwzv6YIPFwKBscN9EuKqS9jgUgj3WB9EBzHklTV+EUVECBhjoVIV7OUF0T1uNn6mn0Z5EVbUUuE0JK7bUQ8IOgOqUNIzZjLkoaGCIQAlI48nUbSus2wyEgLH3as7u4F+OLM4kffXe+2ccNwiyxz82UwmS0Im8iUvtPq6mwq58qwjCzQr7uQRkIqNtsMdZ9musiqZ5owRTrYToNZtnrCMLnfH7dZwjMpMKQCZsKhsEFR7BUmlXMHpJZRQn0l9piMBAVHohgHJiyhbPak+FmJnXQ3qwKGhutRCfXOnmeWAOgNqcFmgZ1MqBEg0hrZVVcQVt5dgSxcipoYyV/UuryH83NnJT6/vUTnJS66ntNXxmK3N7Zx2m+nmC4mKRddtThQFV76MSD1w0ifyZjxGVgXHNMAMK2gjY50R/PpbiLnm9sl3PY4PDETGpH9/CytGCmSzN/giekRgRjnbT6W5kombqcZFd6+cT9IT6Jng7W9E1DINSYjaE/yJzFfYXwFk8FruVopuKzba410dVLwTHUTTCxDALuRtSIyrhu7vo6xFSMJlbSVbwERll2vh8i8Q8QWL1RYWZTCF+3UclsdDTCGD24HwFgzcu1CU0vSoqRZcwvL7pxqUll8XPSygsMGxKrz7UIrch2+W7LC0rI9nfHN7krOU2ms3Bp3trznLUHZGY5nATjFRbEtrWnrd0rZH9UAf1eMI2lthWqBDX1LJisZ5G6eLLcOwvhc5LG034vZp5zZs3i3WDY6U6gIU7PThLu9kxCUtWbhB6CBCFY9rRPUu2FvjuS1qiMr9gJmW/vn0qO36yK/awq5iM2vtW0SlSxy4Mq5JiFAcmsjSnvYEzR2O0RXawVSQJF0fF2MlNvh8Qyfyi1UTG/Tt1vZTOffH7XzV8dKzjqiVSFQbpmdp2wncYrgbTUv3VcKBRxhX5mvCzbKI1d3UXNmH0K25harSTBp7yJsfhoxb7cIuXCmHUoihMDzvI/jNQD65nmVqAu2t5HJbjTFc5Qag6oGl8nKKvTkHov65qkHzOfoTfawMPtnfuFY8pXZPhMLnVOtwa9NaOZVuEVP+4grcwAjR4CPnZaMAQUhaKKsUSlvZ331sxUUASXJiB0dprS2fEdJt1/J8TIFO7q76sH04CUXVEGs4KSigb4LKCXknWKXcMLc1FpTtaL4euZXa5d0LksX9hgag8lzGoISdzhcN/01SGA1D9blaf6BY/TwPnBMYGdoprtlNQM8ZrtlKbBAX+SGxxivyKVadUeqBPyEXaq0il8bg3fWmhqKpUJw8+SErKTgnIq+TnWB1qJFndmk7VAJjYPEtI7nirxApeRUl52dJ2OCc/NUEgLzKK3CLdzAd96kYP79bKGg0v7b8SmXVxCYhXAoYMuas/6gwimByDmEt/p8DCXtY+1sWdeRUaMlsjl3BIZ47qMb4lxSBdRn/fWmsd1VU7iUECEUP0Vvk1Qic1yUwun0ARTPjnHmJ24hUm/6Wg1hQon7xeezeaEWln3jJHQBSNhcu4QRBPqrnPa+dVreLWYWG+1eOJx+Tgj16qPD0jeoZTfT5XCjkxVK75AyEVUptZAeyZBU+D0FD8t49hLmxSQ7AvtUPiTkR+crv2JyTel0hpcCyalv+uEhSv5M2sBUR0+o4xt5MTGmTXcjXVPK8iMbz6ahjBERbzFSzaicmO2cdVG51GNNG30TUOAxYFaZEAG8vaR/9z2kS/20SS2UagDamsgnnfWssYME0bZRlCiG79MoQKFhfDBoju/OqRTP5awIw7yA65ezPRKSYQK4wCCXDYjrGzGjVVsaAK+3NrQIKWxMbVrizy9uiuOigC3lI52bjACuWN0ntj82BdfecmC8TZ/kW1+5xQz5/bKNFrMCDN16yJ74eolTOGuQjOe4RDxzVtR/5bW62rS2Zqu3MA1Ze4cmNqKIT9PWsZ2v/kAcJjW4o68Z7fHG8tw7jDZZ8LtcZYW6TfSN0XwF3O4fVUsMP1wEnSbsLwIAa1A4ZBCgVILQAwkFWwQF1aQ1WhBD/KxeVSmU4Q9ugLNVtKeeesXMdJolSaNRu57YpQJ6QCVQaNxRS0ncSggKqjyFmi0im6Ji7b2EEN0Jt9XyXdC8qi53e24v3A1r+2m5no9mqjXsxcPfJJft9q70DcTU7QWXc+j9TJMLZjKlplAvzETKGuI3ppDDGBrXRjbwOsNAI2edQig7O7NSiYqSfE3PaAY/6gNrEAWAjsvkYoGvyXAl0rAu8wWX4WUZOhbuVlw8EHBsBa5wNAwgQb/7PklpewxtSxyBZMBF0bZHbb2VRbb7pPlr8mBecJ/1p4sZG5lF8yOzaJjNzGVmJE3G6Nm9jR/CNiMUyKBR0YugrNWe3KLMurT6Sc0B8nh79AhQtgDwtUBS9i6k7ndQ0Lggq2Wy5IwYhq72x70xZKdwmKXRP/NjG+POI+GJatw6cWLBpEq7jcCjn6EuHQD8Lv1nXjmKIdRZ8K7LYxwP5rmkyElu4p2DqxxLn4Ghwk95UHbEovSHjuBu2XYWkPIz4RHrGUkrE4CDo8g3Kgg4kWreJHO/SNu02QbajnXVBIQyUkxVqRt2ULEzv6Ql47jZJT7NfakHC+ss/sV17jhQp0mcg2mRltczirpHdzuMim4ERHeCzdDs1MUuuNBt1GEPmcz1+6Fiuc7KVkjPGi6k6U9Ph3v8/n3dSrvGvruirnNzqAL/raw6doc0wAxkuVnlhKoJ6pCBNdJKgOAhIIsq+2GBA0kyveNzVNOqTcrUIBTsTCVc+hAllrpZ2i+L/biDJtPIdwHQW05n1UQ3o+1dnJhPVaGeZDv5GvwjhbdZ57H3Mkv6dDUxjgZzs6CsSxO1grN89LmaSXNIEpp2Hm88BPbw7weL+R5fF0FcIMmndqDUbl6nal1+EXiElzF8UaHxFdIfqXHmh+XccpoVSAuRVzylnHeYIA824Bb0waQhiDM+RZQgmvCrdkmUHz9yQYAqsXggkoxvf3LewuuFCVSbqZg0t1LKzFu9Gu50YuMrli2VZnWHcm0I9hKwQFkIuJRZMlWFTrOs4uP8qQDRFEmhfAmlarC++2cMQz9nhUPKIgbeM9mBEBg1PoHlMUvanYccnDl1m+xZj5e0iDA6wo4H6aAdCeFrdYZzYQ3uTD+jIB/FSBatK7gSD+WKDckQCOjjdBGjqFI1WnLtUIea59Ehdv/P222VX6u3dkpLp2fcETyL2hiVsfkZ0OZfV1z8tl2DhThnyiXUlNxzmc/F3WcP3xyczYlSu5lghRhTJHiDGUwpNi5IrrObMz/1C+qOca30af6uwpYA8oOSO7WmceuhENgM8W+IzTgZBhF9WKXOkWAHlQSThRbYKAHFlgyp9dYYjzp3vT6gvl574lX6OJN9dLyevnbkjSafByoy1eab1on0KZfjiusFytJAf9h4Ca/L2j8egOFb0yxLdelK+qlFNXrDKrSUOwTqq6G/aEFLyTcN63FGxJo6Vop9MUTrpCW3DQRqvYsHuidw2AF1kuAMz+fwErFgwPzWbmgS5oqEMbeNPh8ahKDFevfeUp5E3ny5G45ZkcCbz6w4PE07JlXmYLMPd6n7ppgT+Y7f1o87h5v9tDC0kloyFABQXi1t4ssDTXHrPaflabLx9H05xdO00XK8/pV8/ZuliovpSr2mSR/PEnUgWytXF/KWys37pmYpEm3rvzwQO4WrCcSv5uHRtIIomV8POYhS/HkfARBQnH/5FxM7sqxz09+da99ngA7cz/8eRPlfvKTK8Zd1KaazAIGgS6vS7nFAw6L0NDeT8MSorbINoE/cz+T452GHIp37yfLDNcv4a1+kRRNH/6n33R5edo3Ivdjv4w97KnZ6An2hD/mB/ZatPmeKhg9tuBbJiHp76ahnCkBywy2FHZvLQjOKPlYa+EJuJ/GoHKAI3FxskvufGZP6eAYX9sL+1nG/XyTe8PgPOFd8aexJ6T8G2kVCb76xOXRtfAPmK1trNJldXGYX7iiHlyREv8JnhxhtB3jI3Qhb6KmANpbXid6SCzTLt79kwXNnfqM0CaEieOBFBVWnR/jJu7aTFMFO9+OQbKZXkRvgId2Iw1PStheDODI/SqNeSBMhramNijutseUaYYT/sBuirbKtItLuFcgjAN0WAltR8SagkkL7155ZGqDKipOebGfHpFVmp/H88NlWIS6SwxJEQLy/P5p1dZZUF5QLJUre+3V0hr61Vpbe9SxlxichWpHmNTs3dZaB6cG1SibGrEWp+gs5LWHNo6Dz71IagsTH45RzFDtEkaganDQeaEqI65WQ1OxhSUHCYyufFInkpKiTeBsO9MVaJLyCfkx/gBcZsneeTCa7+HbSl4iFKAbeC/6ZRZgkBImzFjhMlQuYxWWpRxc7Vm/UPjx3PHd/IndP/PSnmXKk0WWAVPJF3oSResgsUncmtatdKNrURyW2WnS8a4W2UUKxOJJjR3JDJCa9xzwETKSxdGlYg4P+4Exf+i/DAlZqcH5wgqAd5vgJRcMyCEwQvMo0KT7+z4b1nBToWrZGvMQIG2K/TGEoRcNKoCOXaLkbNSLnYvLBMiiDsVqexAbCHJG2G6D1YPkHH6NJaAe5wA/JuOL4VL3QLLn9rq0R7tsoU4bpPqMNys5C9x0bVZvzGmHZ28yY1trsNW9aQjZdhdNu9FWYej6jWwwQv2tnvt2OnHEesLaqwXQz/OwjHbC79hZFN691xAV/RfogG/yF4Gn+v05TjSatzHd/iDngkBsOyMr+iufKDfebLNrShzpNkMo+huyYhrZLBNdbi9Td1zGB5oKWQl5Z8ao6FJx4LorwYk9JGEHi3iFCYhBKew7qJmyLe2Lx1EHpo+EFjjpnpV+rVbLsTDY8fh/2n7RHwGQXaMJI+sBgQQAcZMsd50vXVf3ILRWCIniAJuRBEch09aDkW4OdHmnpDm0g4tMW8yQE/3WkI8GNfFw/IBDLCdm2E13cojpCNtUjtxAyM0Qy7OakUfXkeAMOASVZXaREA3n5PXKZAwOTKVuRnKPLsgr1B6SPaiyXDIfmpUD1kiDzkw1URCuVZ43hyngDUDYdZYGGcRul9mzPQMVIvzHVKvVO2sKdXnsGNphGmzOUviieTlNW0l4DenWNUiZHSsrMapvUiDeeiPUkBdm3B98VWx2F7pVzpd6yZ+AUJ6nEz8h9XiQtbG95MKLz7OHxWDVnju/+ZWMS5aziTPp+1EACmYZEtI3QHxkUuz7rlNZiSqxytEtlt2uj7HZ3J2ewE4UdSGlJOpsbIh4EvPO7hZzSlyuidbBOeQrQVizUqVgcPbq6CpUf7y3TIZH4psSpmJ3aB/PmgYgzwmVkAn49ZfIUZl+DnPNOICNKKT+e6jEiPC2NLTTvlMls8zmzLK0wrwad+ruy5PPu3ZSf6HzbvbEnoE9xKpnlt6bABV+ZfKKuQodvNCKZTsAa017UMNYfkKOVnxQ4Unls1EwoXRHfwCuaDVPDnr8TI4YNpmoH+g3N9V5ylfWA3KWP9eKgwfL8R7CPg+CwOw/BxOtQzaM5RzlwEU1xn6IEBzgPul9g8D6wyhmLYxoyHDKdXnYafiWFMR++4fpjEGxu4tmKuYJ2nWO00/Iht0gxyavR2F+WBcdPKVbVDRi5sC79mn2wc63j+Ks0AiH61Dpw+Rss1Fr0uGXl0aeLrsTxNOkzUGw8VIYP4/Y/CMKRtx700QC/Htmbwk2mPCOKH0A41Lqq3tWnSMdh5N419XTpTfRk07sKoVQCDztyhpGI4GLlHoMSpToIW0EYLxSCocp7TxXgzCdcTxM6fZq00HMMnAKNIdpVxiZDbUX3uOpYn68sLu8w46tyec2j+e2xLNHi7fB34DAJpqTC91ymccc+xEvBnWJ06lIW0SewcCYaxQoIrCEAiUusNugwXQw1Ul0Cc9/49I9dgw6IeIJK7DEfwMeU5Ldpm/KfOsl3iyDQXpjgcsIchnLXEZlFpKZhku/iadzEI6+wfuKmjNG0cv/xuEVADoYvQKWPu777B0V6RZDou4z+yALXeZCkBH4RPMRrcmNzICNtGB1dsS0+b5XENUvrlTfnE/MWbGmhugR0WIWDMa1MRdl3lazra20l6UFkU4X8eUYTcHN5pMbiJkJf0LzsDjOPFSpeaiy5iE6+ZQ059nNQ9VsHnrPZR561SBrHhpp9hy5ahLzUI0zDymosOmxOnxCjkn2OavsucxuN7oGqWc8A+U61GN/uCcm/xwi2fU41mroSi7AnuQg9SR/zNR2CRuwAm6OP92kg+ViUtxIPqSc51jpYIjq8MIucyIfKxPPtjPnUY55qzP6PXJY6OfJDojs0+TN22bFL1cW4AWUA7PKXZdwewf2xMEE2Iy7rq838fjSA9b6H5WpnxH+zy/0KbCdM2SvJVya7vMc7jZiB35iPo5SkI3Y9lDSx4wxagaBswyrdAi74ClffgLfQm/7MaDTwpvuWZiNLr43F718A6JsUD9QUQvs0dw4SF7OrxefHuObMAXzaDxfmCzxJciS9s1bYHQrLS7zJ9CmIvZvcYViFehUium4Ba/rtuoW3dobh/w9a42czria+HENn5fujduQMjVup5QIj770xh26LZ6iO+K99BS918y4M1Hx3rpT790b72M4sA8fsjOI9k389FljfDBZvzjej0BeRCAA2N985vEAfUC8n94faabQgfpAXGw9iGvW9HMQXWUFsbE+SMe9cd3Qj9eO43/TL6FHjv9N/3s3HjmO9wv1fvTMsXvlmCo7JK3s0KQfLx3rw3pivLd/uOESajyCShypj9BH9sRHUcZRhkWo/OWU8Qr9cv2KnviVlPFK4iQeMuZSr6LGvVq/Sr+6N34N1fMaqodGFtN2dDJ33oJKPE0fraedEb+Wyr4Wk5tBegzFjsEcZ7BMp9h0mtXAMhB5bBLEM/Sx9ATyjPh4fZw+/m3xCcSkE4mSRJ+gk964S58Yv44q7JKGVfH+Mc4HnIRYJZ6pT9Izz4y7mYSTdbc++fT4DQz5Rv1GQL6JId+s36TffGb8FuLLW/Vb9FvPjN+m36Df1hu/PWlQ4S/H79Bv1+/ojd9JBJyi3xmfqk+JT9On6tO643dRmXfrd+l3nxm/R78nfl2oXxe/l2h8n36vfl9v/H6i7/0pfR/QH0CtH0Qsij+kP6Q/eLQnnfJhau9H9If1R06PP0qs+Cg6xRT6GGV8XH9Mf7wn/gRlfIJ4xOU/SRmf0p/Un+qJP00ZnyZWolM48zOU8hnqJsbxWYp9lnoztNztoZacrk+PzyD6elKJ+5z+HCTu89w/X9Bf0J8Xifui/rz+Ym/cy706S/fGZ+pZ8Vn6TH1Wd3y2Pjs+I9RnxOdQw7+kz9Ff6o2/TIi/nErcV4hLX9Vf0V/tib9GpHwtlbg+KjFb9+nZPfEcypiTSlw/ZTSU7tcN1RPPVZQ3V4nUhYxzHs+586DzuMx8+OAWKD1f6QVU6lyUOpdKHc4e9/MQPw9xg+HweKHSC2lGu6fsFd1txwGVLmaSA2KPzeElUxJzyy36k10oJiqpRDfbUzKrj5UbyB28svaTAn+4P3qYDRu+ZESLVb6Bcmr0FNKzN8huWCmr9T2LKMqvK8+T84Ijci9tcAYUXnKPiVLgXhNICtFu1uI+VsA12g320v2QaFcmC2dVJsuhqpryrNvzyWNOssuundOn+e712YtvnmuINp/kfmIR4+PVEUeNNTwdCzNXT1M19lh04zi4YeuldKN8zwycZO9DcNN0YxTp8jQKYpsXVVyzSLYSgRyT12OW26eC20x0YHn98pTspSvdS+CG3UnZWRw+H+xWySIFkE0GcAlNnWNp3186ndLIpLenfjj6HhOj+v5FgGjGM/aH5JMMnv2m+QPTcYyIwEtdJyxamagzqQiKLlHmmQAilvEadJQUXQlUcDOPkxudtmXnCrfJlm2LZQpaQDlslzNjfGaMb5FFKbJ1FlnUk8oh8KHuD9R9rD083o8YnM53OXkzrdAzixvPtc2/2HR9ek/4PpHfy2YYn9P9Eh3g6AMSffJYE31Qons4ulGiuzm6SaJjFI0WX5x5VHxAOZ/MqfbhAxqZdSVml1yNhTn3FxZ9JEVPIiyGHJeAtZE9PkJJMLrOV8qf5D0ErshcvSjyAtiIho9zzXKXH1tlKZ9/a7YktW/HjLwx4GGgmL7rUtpbo2l3B/kr0UA/63Oy1y55BITXlxxloyrdHbfVUcfdcfVi1hSmVwnZI38+t+FeVmHmBG2epwqhfZP6ToJI7llJv3Vg3rvH1qXNfUDKh3wyYURlKntktTyaPqJ6pEK+Y0AHcfjI/y+vP58hhvMQZJQNMcSYhRiyEJbOKkzpN6Q26TP3zE3JpIxxZN76U/6cn1isKb2DWXo3Xy30DuapiUhEmZrt1wo1A3kIWjg2GOIuC9HIQ0xNVC8+yQyYn94gMGOF8TDnGLCPGLCNKwVsdDyYx2BvN2AP/1jARsaD+QzGVxOeXmNZnQfbHwoRAHss5VYZmtQNv1uYEZj8C4IH1/02v6A8P8ww8bJ5i1wBqUNDtwDb35cwh51ecWWTp/6SLVn1slh/+Ugz1n+D+gPWq68RyrXTVty9bloduY9hGCAEV62eCN9AWqLpoAXWy3ZEG/3JurNWMA1Kyj1J5XOscF7uxmOXSGcSdfO6HgYDPyWdvIyW3cdgiexwYuf/n8CKhbD2MDeE2/wSPCmqD7/Llq6B4UJO0xAw1uld7GdPJ1IJjPJhmGNpn2w/PIXI70TGJYD7J2ZbhSzsM86ul7sakcavU/ZbSaOEcpZAUh4HebjGxdVWsJzzAlVAiw5Ai9iN4psg1BO1+cR6JQnwiFiFJLXeQgteWlYFK2MYX/BWtbDvykw+Ib6uGVco7UmaIAmyBiBditt81Bbh829tOIpyBc55VBCjr2O6BNCPtL5s2lROC7JpGrW0EUJawtX4Y29V8zqIblkTl+1XbJSu6rBHaAJz+LlbpiZLCtBTMggAaCveO2k16AJd7qtjo8/EfHSdO+b8kKdKzXNH4rvTGTmZ0570RVV6AuyvkXJOf/xCmBwg7zOgD0LZesEf7ZubMUkAVhepL9jxuONYigaJwn9yxhbQP0WCL6HqtGsKtkPKyNIqltdfiAH4QFK3+QBVAWys6Mq4xMpEidUJEtEd5rk74ClxdxS5H0rg+2SVolQRLC8Kk91J8jXhP5UXwI5vHjnG/zo9Dl6yBrG4+JKrzN9SfkSV+SHWog5o8CA+4ZApz65XMGQqkwyZwA6Z4PkNmcAMGcaudBkIe3SAAYSuKnYs5D2TMp4/qJcnFK/y82n60rnc9Ivn/r/bdPU/0PQFbao9/TyFW7vlhlOy2pjyqxQtUkCptQdXy36FnSw2D+RmGwXjA8+oUVJyYPQ029CcnBzYUw/wcI2PW1TAJxkza5mP13ASmxtE+G1DYl47Q6OQCFC0YoksZqTWOF/r869MbJYVV0llA5nKgkkqO+F/tDIxfy63LWtkKitPUtlvCqgtGMfQYNbzrpTNqWVXS51jBVdnaZI6txcmaGFgKwvGVxa4ymCUBckda6Sy0UxlxVxlfBzsqQK8usZ7+7QJ1u06FIYbN/UgroXq/+63G4wWRtyC+UDjaj7R1PyDK6Xm4UzNLfma8ZpFf/SXxUDqcXVedsF7te2elzsUkfZscYyFVTwWcDM8LbYhNx4wHyQFzAv8LQX635oUeHan/zU0n4xDRlJLOuM2yQkFskVKlgVTO25qosy/6bYerJ4KvM8U0Lk3rFW1G5hD4xa5TWcXA/pS6uEF87KHT39nUUKvSYjOQngWeoIeIZlFAnbfDzZcGfCRMIrMu3opIhS8f/CSxf7MWhHBpfcspfMMFf4KW6laCZEIUMlffNN/UNBHcNGdCKpqOWSE3/3NoxYhKhKoFV/fQsESguf9/NGAHpFl3DUqh0SUAm6TP69ICBG85pKlRXpLO2TY1mpRQuVqIKFK1ecQHk+XUFhVEqriy/Ia9ko7XkdrNx1knkDkzppqhJNhi5KmuQPbqAN936Tsr33qnoRXUO1aGXjeKwySM+TDYe1w3XHfZT0Km747zqOgfRDk6zYQ1GYqzBD0cld5wJUfjou4fqZy31Re4SoDJJgqnRb/5jVcpdQXoL4gU9/LbX0l3hdRupQZwWVO9HQ5k1jhRF9XMoktnBjolkxikROLuphJbOXEkm7NJIacWNZhJrHKiS26ahN1jZMiXYvGMMAzqm0kXcr0Ny9leJBMupQ5uO7B4FNuHfabpc5HYNZBBbeOXvSP/BW8Qm4BVAhXeBP5RpJ98/Yt1kVkl36kp62joPI/AfsA4VcyrogENmjSoK8e+J5X8HkX7rGLjNakEYXGzLNnZWQOn8efDBMH0bIZ2GM7pidpeNhE48pZyIuyTIueWSr42Hr2HC/uuyTHiynyfKQO3PV9EHn3DVxZwWjqhfyetc+FYJ7nTdTwIP6mm6wvh6YzERelW4sn2j03L1HRkotRh7IPl+2cnjZxmzTx0hl8vHSEfLJj07FDtkFxDcJ1fub6vT1txYLvUw+F7gwKGV2yPj0QRhmfZpaVq+YHS/exGeA9HcSPGmDX5HA57IHD7pDA3TYvj8R2xQVoLaCiuQDgY9P/OrlcpdUwTNsA1yKsgduI3HK9A+xMyMoJrDueCZDHGOENWHWsFYUSpY0TxwALdTPtmfUObSvSITXmqpwyEJmUaevlcSCPqLDPcB31cVyxfnKCp5gUB4HRKRn7cuXDWamiEkRavVIzGw3VAAj76EK8IB4Kc7bI+pB6/Do+w/ZfP5jHSnUotG533LA/2r1pRz/K/DYek/Vhcu/Sb18TzNyP6D2a8tfP6ImLMGbItO3siVs4iFVZq8zPZkTwut3HxoViotbDVqA2gyhpPXQ+3E2DE9C7IjThdQivYtp3wK1obGBHO0gESrpKiYS4lu6V1PDkrfnjppS/rVqcn1LQF9gKrjFt0fe/zorhhf1jKkgeHt1553dKcmQ82Tl0/UOBjezYdP0Fvo08tOn6+R5FKDgy76J5dLe6RsHfP3zJfK+7tk+OF40q1gCBaf8jv7btD6T9NDsrrpxsdxQwrSANxgWu2rNQ7PhA2guARpUovW2vN9QqbFoO+il/Gjcvlhp8KcAY8TGjoNoSgkqinQjuhCxtuQcE763LCSlcsn/85ASSxoNC08hfLz53S8CN/AMab8qwMFGZ6tQQrQcMbJcguevKm7ZQRmd1Ly7+q6Ubrihahv3n0g3ziozrT+Aq47rzsm//y+DaB7huBczM2l4UvP3Sq5cWM7juWfrtW6T4ekJLUHtTcMPi7VcIFBN2C2XsQ8HfDV6P4BR02y33XFDqJqRlOjGalGfWvOQOvDB1QGh79Ym0v/+66zfXppHdW76/vMRVPgahYIq3306pRLHrqZFWXUjnhI3/kP4aac2xPy4ZWdiDsTDcasK7EL6VwzsRXsfh3QivbzXd/68/YazX27AAaLUS0w6wQ73d4U+P8YdaWcKSRoBmP2LAIyiHVrekSAZaMbwJYP78BXDu4zfo2hPyhxsxiQlYJ8CufQRu9Ut2Eja4bS2AuRtPFUKQr4SwXfbTuQZCGYhlnPXr0fmYQ38732R5JutSzvqhwbtY8AYm6zJu6eM/EbkdcIzT6ki1izjcaOXwTgovaHWDahEX/cGP7fIzWzQZAx+fbDHhUYT3cHgHwrs5/CTCYy2Epg0lWiyLPWbxGFg82uJYHAFXS3axRnofMtDCFI5S+H4J76DwphZH7bYWQ+1Wu5YcaXHUlnSJmIgPCnk9p5OEMOg1K0XTD1vCXiwHfqZnHRd3LslPLMh3N7JVcrjMjcHRlIGN0VCXaYacFZex9D2KiMYdchPcQUEPQW5WBUGwgT8kbyVG9SbfK50pn/dAFyX93NNk+xtb6kUYjn/H+OHR/Jd7b7q25EYzXVvd/HsZWo9gyDHUY1tu/j2g3NAaaskMrRV2aA21NA0tHPMeDV2XDrZk1G3dgzpM+7bNddsAg8299XyRPYvZYWoABAgaKYJ2h2CsYhDc8JSQNlZpQjBaEQSjFYsgyggOI/jhjULBSKVJhIctguEUQQcjGAOLGMGmJyxzHAKrYwYrukPj3FJbT0+P4Bq0uLA8hOzFpnt3hfADVLRKb5prb+1yukJXSceA9IcHZSNcq7gBYYW9YYhOnvyRHZqWLJ6CdkEAWD/fvOTcRyX46F2XPwZVXZ3CYvKHW76+vGzV8ej6DfPL6WT0hMjMfY9ePa9MwWon0G4HDOP6zx3bLypncD2yaYPBhUkPaGmqw1R4y53LAcXXTsSC+PES8aTsWz0AWMeoKMF3YOralgYfums7ik7JFV1ji+5T3T80OWVSc9nZouGl4/a6NdLpDc/2mcWzivHU9kN5DNTKUapKS/u9nen8cpjOZXlXMTmKZrT9QpR/DZWv17AmINBal5r/9oyqGG1kVQXgxepCCVpk1HD6oo0t2HgKITDkEIJqUkF9U7qOOCWL7uHzc5qHC/JJkdn1vUBEtRZSnAJ1HJWrza7X3l2rslG3ClqWgAYdSzbeY60XYQmjRGGDtF6bHU8hlESZtVjwPSxqvFlAg9mOPOq4bGvzFuqI0fxe3iob85ye5aaT3inynlWQ9GE0O1pT7TyalrLmccgWnbwK5FyA93s8iY44LKmBN+K5fUw2r28V6GEH/etfCH+GLTR0eQUSYiRsBBrBgf/SStiQBYdMsha25hBtk4N/pLIVG3Mko76T1wV+M6kNf7y8XivyOtW8WzI9OSw5lCrQmBEgpBERaGqeEjIjGkGKdf1yOwqshcsivna6uKcyZzEoMdRiAUcLzkedARLB4iK6DBnsRCol+8cevgNora6CbrWGlvPzpjpyl+8U7k7fae8dvrPJRn22VH4l0jLqS7+DUD6PVkpa3sTfijULKhAEo8WmdJqUPZyC4G4KDvtuOrjVd5p9nYRhAa33Hb/mMr+AMLPxnSzZpzsj+ptuzg/0QLdB0xu+ag8Ovc/0WAIKxpFnSSgYbyoTwbGzTGyXxL7sWmXGhGsRO9SZ6Ib51CJ6ukq0Xeq5rynxc466zY6vmbV2lokhP9MtbbTcZXb/fYOI/NAECxoRpwG/eVQO+HZUVttC95H77efn+YKLJp2u4tQmLGcNiBJEozzB/D/KYA8+LiNjtNw0/48ABAhGyk3zf92j01O91L0Yvh69hc3RYY5GEr2VoxWJritnTf5/2D2E4XLzLDzE5D28apGw0JLnhHrQkjeYkuc52RxgBLf+065CUwSejqgP28migL+J4Un+OjV1aM2qWs8tehrA5DlV20ira5One3I27cA3svLL+bk3faAIooVGBZQQZX9uiQmpmwfVOolA7DCTnCRcjQeYIJlKGt1RmHY5b4vmqBwr2SHezq5p3mSPksgcDnByUMoYqpf+R0OkoZRl96iRhtJ4w3SkNM6qG4VOYLALLKZhh8kqsSGAeOjUFIGYGRibg4zgp1Y6Bi0CtwQasAgGUgT7MAKsXBqMYItF0HAIUoYVBcFY0SLYN8MSysUK3yIYLWYRbDPMsAhGiuNkbxt4wAie+JvI3nDRyd6+eh+9N1m1JUggfsw5hojGU/ub6h01ERizsZQEOYVV6eEWki7ihGqPrbBAXMKXiLkT6lHiucsPu9kFTmmyFwHV0W58y50aEmbHAEvYvm+hPx70XSTHT0Te2h37htC+didrQ0UnazjJ3VErMoq2kFHzJ9Ta4GwxCnJZUZbkbs/uot12oFpmVYMQXlJ4SBS7qqjjWt38vjvjvXAz/JhbSVvAUV5sO6un1epXM7NXuZqOEEODsiOSwaJTJCuKnLaq6FTxY1LZoKU1tN1GozfkecWaUGYR4DY3hwN3dHqjNYkC5xEUJ6qD+mu6eEyhlLisobHEPlsgHG04Kq9aK+gbQiWDEmmEgINjE1QzZqtxU8+PduQP1XEDzceswEEfq5TOz8eetRi9pPMMHWQn9StzGPJKdquxUPgbcoN/sBaK9TLy6/7qiMJWrDkdvc9sttan0MufrKjLWp9IC10DHv1XqpNdZzHoWDi9IAvI2AMKHluNp+fuKR+tSmDz2td/rfOq7u1fXZAst4vLEwbrU8e9aRboqVdOLxSxLxrww2aIlUJeKQw40/a2u+2aPb9SiGWlENd42RFj/YeVR1/9RXovc8tNv4helzWG5BReLtEiqQ9rFevVhk2txWQ1fnqamoq6hscGSDAYb6LkALpdQXG1nNn3DvNBaMfnG6/Lsq5atHZLmHH4hhMNxIGwaSA2wvxAbIS5gcgX9BmYONhHc51zrWPfjg1TxiXC/HKtqHlfJia8NiV5z5gw+OXjBkyQmA//0Y745V63Q961p9DHXfCOmrJO/RDwZNdET7MUFiCDd4e56IZ8dH0m6jzjKsMolWHUkz+zbkPVzCg1jlEqx6gSiLPE+2aZrNI4ePHFTD1zz1s87rgJhWfb8yFOKRZsFdQPzTsb9iCI5fZ7nOJ41DqACo7dae7tf8uts9EUyKl145knF6q+kQtZkF0tC7JKCiRHBGWTOzmOHxJnI7xK0+KauObW/QRlrl2YyxgYPe9GR9OinfIpz24C8NlJHNt2km4ld0g5dcxQww5qvoUaTqGUjNP3WqQj6PMphk+bXMk/jizG2RT8tmTQqW/eDnfG4sh0WqfEVSBtpnZ0AmpHM3Qw1NgE1I5ZqAl2uwZZ2m56Yq475WV9CbINt3HeZhwJKSTHG+bnNETjrnwXsyZKfPP9fnGC1KS7vDWn2f2xg3nC0imeNY+JIGnHfiCAFqNCWJTXvNCKpOxV9vVRNztxm/tY9uQPiovzxZwY5O2TwCQnl8mOPT+EpU1GEps5oFF5U82Hd6LXWEchP24WZHdEn861WfR2KG9uHE0r8WMgdOldH7fP6qY+y/5CznC34/xuwPDWXjn59d2Xf4c2heCT+8eum7eWKBhqqXZcHY1j4cRr8mjJnFInMdVT6KE/b3U/rvWEdETAm3xv0Xxsue00r1iJosCP7E8pevafMv9REm2ZCKa1EBr8z8ymI5d+UAgp/PQzdHipHScNWMBkBzu5uLG+0E3crdDpxaMUsnBmGiGytkImlZJejCR8ZheH/DtCLp9c0QhgIDOspC13aa02bYVLa5E08xzBsXS6OrrgfCPpjWCWhanYcgOuXNmmXeTSSjbtYpM2URsczNLJYYoWZtDh9m3awkaQnNcIhN4K9ssZwrMQQ66Usmnz5to0HbDIqFeTH47lQp40rNDlFpMX/Qh6mQckSTdv0nend6rKuoyeMqngEfw65jh2UQccKKUXq4LkN/Y21AyjeX4r0V0c/Z1Ed86Q0y9BmDnNoIMJD+IUVAi/mQwzZU9SYNLAx7vI/4BnI0mQoMUUASIWdEOjlJlAXxecWmhjXp5xNA0oLe0yvxWB46/fy4nEa2IHJJDPYFjFdBjeTHBHYPB3QP5iVCZj0/nUQ5gEhph5aqZ44soYB711z7yqkvSDccmlhirddka0Gt3An0MMEo36vKTE/aBwyP8sspHcrhk5NDu4e6HXDjUd47phVBi9g/m+PT2ClAV6KHNqB/sOEl0x49lUh/D0v7P3LnB2FVW+8Kn9OK99TvdOCNBJEOocmRl8jfnmx8dDuA67f/6UmXEG74z3fe/vc+68O/EBE73OvYF0QoAGozYQxyAIzTMBggYmSFDUBqPCCBqVUdSMNho1KqMRM8Agj2/916rX3n260wH1ch+t5FTVrlr1WKuqVlWt+hc64zrFdv9Jx/ypKK13gr9Wp9lsBv5G5xf91+5g1qAlwLh0eCAmGE8Lnm+8SzxNeO6aEE8Dnq+wRzqoTnU9/8hGCUhtwH0mIEH0xw2hGJ7vXiyeCJ4DEk36Hv0PVlIIyLxFD0u1isp/tSgTeQLUgySm2MShReP2LSnoVMEVu2spFSObiLmMVvmWd4ORSlA1blTDxmQRi7dt5NP8ltWpY31z7XKmtqpPe0+KYpyAmFq9JGqeyLd/mmK98pKoJv4c/hHvH4Ffe7+G/zjvP06UcudfAf9J3n+SmAtLgNf9sXIxLyC/JH6Dm++4EvjnNf3Ifqfrp32FMv/O8ltGlb2IuAzMknSCDnlSbe728S3i2gNkT4heQwnzmkt2HZJJwEMcsJUDfvTiRK1NzknJ7stafTX8zUZbpdioDInF1cCnW/Cpn8oAoVOJ0q+fjQWeUWxp9ddPSd+H7J0towCPU1R8JU88bZUpU4k1GMYcdcs5Mq7h5fqeSC5IctKtJ8jWtzfDKt1RHm0aBS4lbVano80/Wg5c3dIsoHgQAs19dR2JxhruKxbXf4JVm4h3FZ9kuig4J3nCJLknxTam3y+wSfa7JHg0DWro3m2Xf1RTG/nIn3t8nUTe7SIXiwXVI7TNdPNA084DumnmgHkHsX7DD2NKdc1fFCdpN/hrdhuNRuCvd3/Rf61uJnzsK6gEDR3JxNBvsmXxxkhHwAqZoN/RSXkQxR3ZovZ3PmDadDyyzaQjER8NEqu0wr+yftAN0UiZB8rFR4yessmoJePVxRPURjSHIFTp5ipuM+K/ELnmG5b3jkgnm7ce95t63GvrsYIemxlYj+mD1GN7VK7H9mgB9bguKtdjKirXY8oR6TTnrcdTph5PoB6XUNn316jXDazI/oNUZKZSkZlqRSRRr0k50VD9YKUKuyX5uK3Cbl+FxrxV2BZLFbbGpgozeAEpHlSFqXj+KkzG5SpMxvNWYUNcrsJ4XK7CuEuOuZmqFI+ZikANDSphFKa+4uL0m1Qg3ZDRIFq9slCrdePN2DZsvZlf8tFNEkDUdhNVcDIiyeMmMKW4N6z6F++3YhhWvWWi3gUieO9Rnxjt4MqYD9ulJs9+3Qqlr0mazVuHntSh1+YKgFmjt3EG8WQSFHJz4grZKr5ss5lMgkIKd8eRqq0VN0nxN6vGTGtEVABqjQ1Eh6rzoK3meECh2B+PFQ20mM/3EamxvHa0N6zyTMyUnrFlmXFVhoqFqkF9irAN7lTdvvK6eGNVERn24PX5xLBnvElY9GHNd/qaK8+e7UG5R4mjW5F+mmJNQ5hRSeW5MeUid2LDDXQMpSNfsibVNZGy7EvMGDVO+B4zQfa+Y8yEzRYVcYFF/ItfC/OYPsHrUyM+JHVYQrU8C/4H4W9qqvWUomrvliI6Tu72RYwyKRULDLqOKzGJQWqluE4CkgZF8zKRWkpOonSzuLu2ikZWCEAqvX885QJ4QUiDBl2Pyh9H8zha4m6McJUW3e+Lq2R/hOA0BFETOUr5W7PL/xDKfyVF292myX5g+Xf7gjCBlpR3F8rdklO4sNzTYbk3ygS5E7kokiOJ63tlEJeRNFJUvFVMY0n+7L8oYLhv5fah0FW6+WYjgtelEn9K6H3byVUaqDGilxEeJWYGmHR9tlY6INjxScsgP1BjO7BkeA+QWK+itEhFKerYMG8Vb2Pw9cgOJm0IcMuN7JlMsnVpo3vpd3QrRvZn6R206bofOoJptj5raM94aG/jX3Oc2wqmWR+/LeOVnWazYJqt8+CTuWlWiPhpNsgUNzUm5fvP/hHf+y00zqxieerjHBssc5Fwj0/2M/C+PFRWcib9VreGLyyWr+JL8UXDn52OP8Fnp217dtrKpNn2e3kMKr7fMRnjJh+7Is9ZK+JcNMnU/MVRmsnIrky2m5C2uA7/8oII4CCtTlSJtYNj7SrH8lef9poCZGiK/EYMs1709qWB6M2ks0VvxtVFdku/drIDrOSLGs38NrMfJHZT5vEitO5L5WhlR/B9l1hI5B9yF8awTWoCt4eBOw2liGnx8Kh0JNcTsLFejPQUd7uRVYwB/WCwI/45Oy54fVUoNhwIfVOwW3otvIcKcNZGsQrLzV5KJFezq65b5F4DNz9Yr+s0TChZrQSnBY/Z3Lb73BSbCwFHgig3g8zl5p4Yi/im6qAqYjuMTXjUGdU6FrsrKtA0/uk+2yl8VhFvKImOLSNcH8QmfQw7X6HOkvHLazgo5nURH13+2QMPFLp5x7X9TuUos1N5ngnzgjmUQibjLhOQsrTTO9wx6TXBMWnHuPcXf6LFjb8/Zznq3Cz51Fweb6usPGrlCr/JlGDGhUvuaMuGjLxvlEngDSbm7trssmK66fRVsQigzC2c7XcwN8kSGlYAqmAoAZTLdN6WFqTnVvGtvxkTuKFCFZpSk6H4cqlF5GrxGmadtHxD7kM3LZdYAivFJ+JEuTlmR8tWkQjS/AoMkgz9fTxoYMvEN4hLW3Qk9rHSAtpE1YFc5hDLRgGBD9rgdCuWxR7e7ZD+ePvG0tGJvM9wwmi+pl/HWVpkbTFyHfE2xJY+EO5EIVri+scz544LD/PKzLefhh8Uj2+3hPdfbzZrfhNddidM5goDigvee3JfBeD5sU5QMC6uxMc5riU7/aPQ9AAzpwN3wKadJOjH2KaFFATgux6pTTI1D/w3/ItUN+OVLDcxJ5iYhyHOaXCPcfw/k8DUVBTeEzU7EW4fImFUUqlMcRrHx0VC2cKmf4fhuZs9d8Mj8Yn4uj4G24Sf4XiV05jzm3jNQ/HpC3Ce8Up5tiOe//ksbEEO3lgfvFGEVDytR2wJEu49wWd2n6Jw96kfs7GC5VW8hs0Zgr0twcstNb58YXAsLZtTkXwBMU4NnskheKFCgbp0gxhwGYHyc5WgqaGoL6vOVXaia9qJLg8mOpEUKaJIZxxIZsXA3Zqnx7KDJvYbcX4Hx4UT+3x8zSXc0S2/MFbU8BpD7DDhQjvDLdcGhhkieO/i11wxi+DNkyN7kZSnHxcrSMr4uum2yB4OAPWRbcGkzXQCvDjG2VGraUTEB152JRJGoxAFm/EQL6SSqESzRMUfHKhirzkp2Hgq68LfNd4J8X7PeDeI9/vGO35qSGKfB+BDpB8Y76R4f+jgJXFR1yfzHyTejzxQH7yPeKA+eP/JA/XB++MAqE/PWwLgpONYEAc7AkVgztKIfQWJfGRR+ROw2LRpLWjTmmlTXKHeHaUA0MIrag5Ea9zj4TBylpUCweoT7GmaUafJqOVbhcPU8lBaHkCLxFhHWyjJs8P/ltac3F+BcNXU5D5TIDGgospBN+13AlEYegyApTr4quNel3Smrq7rDh43y2llI0CgXZqsEErzV+UDhQCGGJNPR2fQokm9NhhWgjYIxRqJlW7rJmCsyiQyNJhOKWIjv56vlXe24YmdjqbrK6wGbju7j8dwDMDOeAhdda9r0bMPqUUB3HQG/TPOLbn3F9WS0aCWJJyoTflHJyotST/mQ7UlmwtsSXg8iefbkn8Zq3Niako8puhBI32LIZxqFIsRDwUioft94/It/dRkWt/Wb+BdpLpOTbZhrtmPoxgsax0Ku7Si5loYf+KQPwY3DKq+wGc3C1VlEeOpwaYgXw02gANrxrwf/KKgc0pBHQRFpaC8wrykzDxhmeRuOSn5B5mDKH1HnqAGSDqsXbPnxdjfAuqCPILlQQ1ER8PyQeZsmcfXmleVzqYkjg0xYosuZbD0I3ksq2qaomMeHnVcHRpjNzTGbmiMg6FxtDYcYBFmfxHkLssoKbcWjcOujLff91lMjR20iOi/Lx8bVbBuONbN1jLpGiKY4Nz8S5Pup/xo3Dy00Vj+Xj3PaCzsqshpfh1KyngMXmZbPKYIWFFlTME9tBaPzl18JYEdMmPKELX0HUD8E/GtM/CfDxNhHIIwDgE7ECNJJsJoAAVJKjESI2mM76tdashak6WruRDp+pgfgJuHOgCv8APwL6vxojka7zaA9knflsYLwpoLaryo0nhIHTber2rMvW4hY+7DMua2D4FDAqz33FgSe5ZUxmDhirJcEUhN4cPQK1WEi95o+/+OoZU91PrkP8f76/DXxR9wK7fcSgZxS3K03JI8XYYCmomsEMeDZh4aL7/ViDPuCAzFKteVjzLH6LGYHwKsS2U8UOFCJO0B9ZoIRPNC985vYF62zAt5AoTU1vWzTFo82enxSi2eIZB++11uf7hH+BIQXMf2OjEidHSbviEZQamq0fFILCbktkdhYM2Gt/Tb9EoFA0Ihsm6t7HVwPKKYKEGX9YdoA0DIUWWoUTpjBZ7dlvtiHWw7dITWkM7P4thIzcXLgb7Zxc5BXvyNWO0r3UVLdyiQc9MtStcBOPDyXifjfNIx2R/EbPtWEU0wNOV00lgF5bz6LGzAzt8Wx/Xaz7dJ1vayX1F72IboZci7hSRN+kZS/SupZudXXc1ORtRb2MW2kpAtR91RhUwn5rpHs99BfdndAViMeYOssxLlQiBFhRVhJDCt9FGz/KyEamW6k8Rcwk8t1lH2Oj8NiOmhbi49aIgYA8ghao43v/BvNgMsz3J3jl13TqTXp3LOXZfOzWCEsbAsktUBH4JRueor367Tlf20qEnV2iv7GaqR6vZbdRsa6toeMZhRCoflXCjVGNcwPokCO0Sfh+m/rrn4gLSvty0B2tRRjnl7nzpR+teWnqfVBq2UaYEGsgFNnD+YhNmYzighPO+gj5Q+Q4Ew/lgwODh1p5fGbD49Rp6UTqV6OX7eTo2RC8tZlHSd6prxqLhS16k7cwA3WNLPf3e5NEa+8vTlOgVb6q7w/UWr+4sFx28Rc48QZCA+LOi4Vk1ixj2BHO803xpEBJrRYp2/3V36PRYMT1lYRTqRjMo+KCGKPG9agDVkAtj2tMx9pHymtzjVExuEppNlzDQsSaQCcqHLElLmATXBWl9dqLP6i1BbysLW6m8qhVs0sGRE/hdWr4XUquC5enlvEcaG16J6uGGON7Xmr92Qq50aWLuhF0TtqCaI4over6PclYrNw6T6C6Mai4hJbVKtLaij6Y0ZRuF8taaBQeer8fz5WRiUR0z5dE5f5+5WnRdA3SRBL8cAM0vO9LBUp8qgF1wlGOoTCt/cfYbxb84S8XtByputihhopNC5Zf5MzQzcp+kO9LQ5NJU5N7MzbMwzbJw9Gcd1UaEjXg/JG5qIk/TizNYk0TFmSp52U1F66lxoBsyPRWgx/8rcCyB3UYKotmUlqOWVoNYWtO9xod6TUHtLctF7GlbvaWt7yiZpE90+K9B6KBbSLqHwmDLuRFn2nIsD4ZC32n/xBcPkVW7kPis2CvvsolY2zNO1/bpIS/3tNFrEPFpQlASTWoMjIGskSLBOEVBG3YBu10WJOFps9C3WttoIEI2rAdL17PE/rqfE+yPAf4+lOf1eD5qOU7bhsWKEz6Xgmxx2zgnnxM/4sL9JEjHE2IiF3wTeZrGIF7xxCMz6E3fhYQAkLM5VBJc1kmMeXsfhiT/xyqNQEXNrYbiaIs4xjhL5SqyOUW5ZcsPF8iHisH/IX/P0T1rtHwqwNZFlhAsqron6TaEn/nws8EEKWqXGkny2md+ZIfndKlAAW4dxdWSI3dvg3jckN0QsUuaMK0kIuW2WKURF9jME1bNrisBYL+LsjPWGxQkgKUYG/EKN3YvIvZPcWNovFjenPEzcnHSJdZPKfLhxY0fgCHYLnSMrQN8Nks4OXTPsjZSP8kag0H4Dt1Abme5qdy2WsfiHnyNuJ/7nW6KYnrrbA3Y+cOWdNznPl2648xqDZbn1M9evI/zLNuDDNj58ETljYGeRD3Fe222S8/Prb7+JbNqXSeH6aRfKfULRqsCYn0cmgkV2901fvKeUpi1pApjMOoq1/j7AZC7VSpx0wkZ8k0TUQbqBON5/s7nMOdX1t45pX2bnexULDP3iGK3LEjP5VSMxk12LprEUsV6J6BiyxiXexyxYzbglKu+eLQnPRb/+vdLVTHy2kIJ8p9P0dxnuuos6I9Iw01fc+aRr8k9fed8P4UHTEF+o+h0As115+w+5leLwsrX0ngTCWLTlXrq0IuBleYnKPUjAo/Cb02+CkRw2tgIHPmGAgzbSL47Zd57hqvMpeXILWYRYXeOgv26cHqKwF+zIwXnsjeV3xhsrp8V6i5Yw46GIHJmR1UAXWQ2jhMaZZ8H9DsI/iM/k++9nnYUK7I5dBQQOLOYrNfvuMHfLd1uynXoGDFS0n+DUfWryvEdFZkyjZL9HIieYFejp+A7C4Vi28R8scsWQIeulbH+3fG99f9c2C4vsMmR/z5W3A75VgX1gq7DvM9sYlX5EdwA71smkENOBBO8aKMHT3VmF2F4pxPZyIUYykRaAvTYYK/YBOBH67XseuLxOOLue1mQnyPTbFoVjsuMzPZKaqkO/R5Cg4FcGMABUCQ1MNkAmtL1ovGN70TKATwDxg36X0BE3fg+nNsw4wZ6vW6ygzCYYYdVsFQZ2xF1MYiRxtzucABd3OYryknjnGWTIkEl3nT6D7PUkwaZHLD5HZmqCCPec0V+K5cVRYgwZ/z5z5oNfRlxquK7bPtiN0fZoe1k99RPOfmUqzede/tL6fg+REBfKDKtpcbdcs6fxhN305AE1ipmpq2ABdZ0ATaD/IoEMeBEMNGTHZ5cywqL8MPPZCwfiANRpTOgTpVv+tYVmmVFCZB9+61vC8WCvp/cD0Kve55eED5rcd1dzD7EDsqKhl+pltENqJ20WxSMs0kvsDaKsYO+PbdpgNpIh4S3AXo+iSEWUXmYKMikfFkCEJjWEJ3eu5cC0hy1TmcGqktjb4xIf78LYLyBpKaHtWhAhl9wPTdhH1/wvvURohh+ZvSnYniGim/8VFLQ46BtTQv2bdvSc8tQTE2msGBtjmya+7IzKv7z2HsgMllxoPEr/LAHGUubkp7w0gmA8DO/kXU9HvQSwH+9FmqMAnkeei4eL4dVwTA4XR64+C65LhouGuC4lnrzjrOJFtAf3jgEIcETm6hstNkxceT5wYrjPzy6nxUU/x+hoLv+JJFsL2A9TP5LvJIf76IF3imaEaANaZyk1oefcnk0W4tRnBlTcDajQs/9tTPros4/HqBuAUIlKJNQCLNA7Pn9RBQu06JPgHcX5Guvu/T76399qpc9GD4VvM7L+9OavXW3gylOC037g4li07O89RE7c2C50L0VBN1KbAM1/iVRtd+R704MXVbApkaYTZ6AI8nioBBTFmQk1irE4IwZ76uQBZirIhwCaj33ZkJ+x5JFKmvoUSthZxANZcdiZxWG4b/7VmmhTDqdye+ongB3BwzW2a25PA46ITiYm6v0EVu5NPPkjnJhyqfvBhDSVOnFHB7r9/JKt2KekONYeLtSeHqsgMuO7qE+Sv9zFR5ebddNcwK6KRaaqPJgK1Bdij5XQvr5skSgnU481YsuD9WYi57WidPh033eaQVrCHFUlLKtvQsYqWFbK0m4K2JRrs8/cYAdeG1mgub85UcK8kupbzKuU7NCXxqc5LBU/8OxOgjHuwYRpXfj3pra7nQ4npdFLx/rLgORE0ft1qJLLGKXypdHOMz7WPxon9sD9Ytwj8bE1eiKs357g6/CYGSU/9EWUWBI4PEUMcB8+QyuJ6dD8v3upxXpxlV5KmfA0qcassMm5jMdFHWFcCWVxWDtF58yiBPP12NMljMqKotzENj2ufpRmg+0yXtfDad3Lx1Q9FGRqnFvEgtQS7tcFXwHjIK5E181YImgnLwLwFc3kmiyXlQVwraMVR5tUoIm6B44R+F6PFlhFUEG2HUtj0ie8x+Fd2YSZH862n8FrXCGB5+DA6x1n/KErzO5S733KqkxpqHFSAgcpuOvxKqSgx3IbSGp/lZSDN7zzy1buAxA7e+dcCk+q0BppXtOex+gXmdvomp73h54T2LbWBZusAwCyTqE8ANlifHS2QDTE+kFNJloJSnmet+PaDiqDrHdJ0H1zj99jMVVNc8s+ydIMdJASi64UXa8iZcMCYVlSCnY74ZIYplRLRS0wYUvziQul/VinBMKlp7hLKD5qwcKnvfQUkUQy7x65ZaEr4TaZJjBJ/rar9l4iLstxYtSAas+Uqj0yq9obGrOrPd4oV3u8MajaUmlfzf1BNQ9Uqrk/qGZy8GrmAcepO5gShgPleLO8ETDe9BsBvkQNP2keaMiKg5LT+kawXq+4xQ77Dus11UtX8kGgRJWDyerAfQNvXjWCfYm9jWBEnzFIsna1NOPwX6W2NFYDK9dtWJDsGc8NVNCHJPWWLVZht2WTCP2EuP97XYOvtqsRFkzafloIOO5Nu+xHJIoQ8uxDmAPQnbAs2x60yTI9MkbNopdirF9q2uZ3wtdMUwHQnYVM7CRHgNuGPWPlEU2diDBLda5raiUbKAzl74enO91TLx7zvyo3kyISPu9maY2dy7aN6KbcdkFm02Fml9nMpufObHsls+3VzJAHPxg0xmDq+5qzGbW3GQqNELzgTsO1mebAoSYVtmEUcHCa2CSXSNg9SukxQAsrqBzEpST+g27UYaYxEbsZkPkes7tpVpBNL6kPDSj6Hint+e6Bj6bv3/Hg/i27W9y/RRaGZCx7xo9lByhX2Y6U5yaqY9n+ZjiWHT5rLNvUmj2WTbbKY9lkayFj2XjLU9jQKo9l4y1fV3Xwsaw7e/bqzqr5dZSfbD3Jgx7Vmk+1wpovmVXzXQNqPl2p+fSCar49qPmOSs23BzVPD17zTtDZiyWsnRe0qTSRmd08+pWdLgH6dP3vbz9nVats9m5eu7Kb1y71O2zSjYLmpyO6purwfv3e3Ey7hLw/LU/TXWDw9clvlySCIlynrtAepLRLMbxi0A7blp8gwvr9Luo+NROyhEM+LiFwom9tb4v7TnLvMO6PknuncX+M3HdJXp93aJO2ClKBfkrjMRE7RSWanR8lZ1Ocd5GzHsyaU+3yrDnlii20sIqlmDhftYO6eZxp24WVJ4vCbcV2kMWGdjAtTrTL+4bj7dLiDdPfGSQy0e/LYcVDWGP0lvorybs/dicSpkVOa8e320vV/H7DNXV6mIe0fZ3C3FcTEQJHSE8hglKVXiKGTBSFb7xhi6tDnt4yM+v2Rsw81lsu20+KL9yATxLeXy7IvkdRFxHXyJhJ2x+hAMq/h91jvQxHzkqPmCeYlpvnl5aap5dSeXbJbdl8+0mrarvu5FtsXytoy72tcIKQzujacqY1oC0Tact07rZM5mvLhNsymb8t523EY6ut93LXeseVWg+z43HEEdSzY5uy0GNozZq05h7Tmg+Z1nzQtOZuP0B+UN4C8i9MyT6cWJB1Mlv3PVL3o8p1txtquzKhPx0OQh/8mFUC/CCE8u9Cr83E/Rn02kxUyfPtRkw5+r20f039TrY3HsdLYrJ5bd4TW7pcL0WbYzdSCH3E5jtlCT3vd7AsynYi5XcvYH2GyubewLrrjP5R5hUs2ZbPqTBTEAypBkopz2AdtdNcVshPu0Yv3Xmtu7ogFz/uvBbF2fyqO66xt7r/4LRrPkKvarGt4IheNqaXk0rC5oUUkKwENvQAzTEra47tjEflHOiLuw4juIqDPp3SqD6bUg9OFGXrwD6Du1QnZ8CiZcBCY394gHKg4/X/JzrMry9/y56JBIcofqUx0/GK1F5Jsc4uyWfskY1URHoHIAFWkRZXJGOOCDo0H7yzqznGhgHT2zZ/9GEJwsCEPPzcQuuElEwrZDLuQ6HrBKvaTmXy6lQXCGl1cTAtSS6xT61Pz110jJfjdim77kJ7pNpPbKR4ta2ZSKIE91P5INVIICi02YUNJmW2mEqcMzvFunFGV4F9shiBzr2UBGp7Z7ZAbe+EmoJuY4hod5rBccVMVxrvw8PF2WOlU5eBx3wzs4/5dleO+XaXj/kamTkMDc4xdw8Nor3bn2OKjh5MEdNDgUTuEo/I6r1iT/HA/UYkp4fcothuMBGJ/JswP7CvtUsYNZkvB2EJ/5PVNXw5dMJboVPIY1lxt31nZcrG4O69FLOPggPdemhAtx5y3RoEuRCyT5zaKWWpXE63HRrE8N/py2nc7i/Nd8o0egJFweITmYEQbbvcPu6Hi4YMF91wSL/7u37Q9Fzjok51yoybKgmLA7GfavgN6fPtON0IVXMWwrT0kNX6rRdWHrKyhweZTvOL0ENQZ6JPo2ZogiNPnE0MCxCsHLTQxWK4mQAxCvZaQF46ZX6Dkc3QwPd9/bxrcUpCwL/NXiqvzuGAxNow/N3ene+Ch5yfveH29cZs5NF7/hHPpg4V5yEVGjQpdiCmHE/zacvrul1R9imTPfddLUTk9EVO0n+wh50RksN3Hx+iIIE9XJEE5CRaWXEB55UJyVu/t/NzdVvI6c3nfdS+rYr6SCG5A1NKvZRar3kWpe0wAAIiAwU7Kf5BnDH2ZT70tY/SsX6nmEYuJMurx4a6GYExpg35qzcyVPyb/4hX9BTEAiV4bbeFl1J//PHL6QZPlnFWE+MRMmsh/s8QX47vH37ovI+RE0n/mZwUv5UVk8gNcnkxO+pZcTc70qy4hx1JVnyKHXFWTLEjyopL2KEyIxeK5UKyVpQ1hfOZDsN9yqLCbm8ET839rT38nYqqm8DbowGrmx3yVtx5UxOVJ9WwWZubzdpObPe2fUYHPlN5qUJeFG9JZ2xmUkr0uupzDfxqFBto2bG05l8QqFdeEHhi/+wXBAY+v3DTcMl7Y9m7NfD69a8KDtrC5xeeveuiCtq/jzilKsOHKg0f0cGeX5hUg95fmFTB+wvzvvEgmUgVeoknfmL8TmnFt7m2u/XRCyuvOzjobmOAaFfygryPXfrTZUw7bTby/rRjQBxC73cAvR9XoPeppv+hK9DSbhYPzQWp7O6N7RWhVIodx/HebvCkstngCtsO1jZOdIHwxOc4qYie/ba2tq1gjdpx1a8M/DPCO23uZmJRw2Vr8naLYWwmtsiR0HWcjJaOfQYwI3i83lKj9WCk5Q269JUKEye0FjlLbsLmmI1blnbBBOnnqVwgRddua16HZzDCXMaLNd1w5BKQW+rIJSCXyH22VMiZW02JXess04mQy8dIq+c7/l0oVl098jpjWzyCK1TLZE8RHozLrWIJCjqCi7BL8YnrnkjdUVqwDq41Y6NX10kflZ44JJ+XuM8d+5ncmqtOsfA8n9hvL2Mt3rZowi1K/dmtHnOb3Ov9AL3k2xTx77uH7ZfFyDzBLvUy0aQTTU4dj4kvNlDRiY4ZpboprvzEKNeICXp6mUR+RW3kVbURt8MquS7FVUKq9IvooMdhSRXbk1Vj9gOlY+U5KZ4BRHsl3dFzpTvap4uIlbJPy/hgmKMUiUBYb0uhLw2wsr8UGjCqQM0FxlcXRPZAup/a9ysSeb8CQsPvV7AJFW7hEZJNXHxJPBF7viyeHB6H81Tnq/vF12ugFALA7y+D9f+0DNb/qAfrD0/5xHyWdaJ54PoTC9dvjgtp5vPQSPRsq8VwTi3SPZDxPdy9xTsq2SKkBvU+gTqJ1nipacI0hOf/jYXC8wPe+2RaAglUFdVv26UCn6OCJvpZGUj/wGwg/eKfHYw+5tB59LvaK9UUkAiHcA8ewPld86eiVjf8a3fn/0vrjWbXI98nIfJ9EiLfJyHyfeKR7+Gp89AjWwGivgIFLAWv0WKCWZvnm9Eos+MlLl6CeCNzxYtdvJhRjBJnYJ+/jkVUFGSc//MQyeMKmnohBGXKzN1c8Y13m9kut0oNchQw1T5NgflnN0rdlSD3D8ygZjPIQknXGGERU+ZdxE2NIWD91ZEx2/DbPu+/UWYtZ6OCWw3+3vh5SQIIAOWh5Fd40C4LOiZYVpibYrhiGScECW5J9lyxvSpIWwmO9jEPjEbrRhUNE5JqVJWA2QSpa1QJqtdcaFuCSgp/L/YGUbhaG4tpE26o+O3VR4xa4OHsCklYy38G76ujJWL/k5cNR3IbXbLmmX6kF8WmVDrCpsw7gTfUq4MvL4lrYqFS/wi9nO95dMknhKCjRpTxYAeG8NibycwFHvbhS0vgYUkIHpYErcf7fBhb4IYS5BHA/u+LDr/SFx0+sCyN1qYA31iTWlCMydg/4RBh0/EZedxRumBsAHlV5iqYWPDEXn32Cw8N88JDw73wgCC2qhEUvOYbOH5T2y+lVx5qktTMfVqtkqecKvBzdSdp95+K7MNXHUT+JPewTcP+L4alOhJbfrZ+jMzKbV9UfachhKS3fOi35MJEfoPlhhS9woi+IgkAWeoeWhFbesrjbrctYu2roz3Iv02nB/iFjQX9SgYlw89P3DcL5J6REmScOUhZgpJEFhefvtphaReyZDrhhlA/wxhVfZGg4ML7QWoH0irzJkEmw1T1TYJgnFJunFJYicg41aFSZTxObUUjdDBQTUXVkQpPFFSRP9sYrdrBaEXFU2gWuThkmqU9q1na1WYxCJ6wnmP4akkvmwZVkZj0HPDSNw+wJ4+NCiXDzO6ic7eSKXX0Wfob1uaXniJpQFti4GeGMFDz3bSSDRf/HEjbPOPUz3QmTjora7N6cVa/DQVsVNFfPYqHzF+SZkPhX3to/r9Gs1XLqsVAFvRHMNCJitMGIpigsymoFiX1w7Nw11C2qAh+YXFp04j3pxC8aHDsfHDs4VJs2bqj4KFybGwIIrhbjo1tPwR3SrFlO42Cs3JswEYs7uVyA4MhdatRZLeRglvV4K9xqZqlYNl7o+BGOfhhE1wvBctGJwWn5eBOrys7hvQpKX/Kg09x+dNIL7ef5BZJTwExg8K71aiggv1W5K1Kn0hup2trew1Ekd1OQGaAdEByIY/yzB6cx/3gPDGgJ45HJRDkYcwH5q2GrZumr1lLQ7qiABRj773/cM2XgAmu/BbT52Y/4aIyGYX3q/AeSPW5mEw3tvQW6Vj6OhcP8+dEPIY5lJx8yzQulCBE+CcWWkCwR9RPPhOfoijGuKLmiXptzriYptahQED5trjrxBSbGzrpicrbEt+ZFEwpxaKKT4gYyLQ4+ve6NChS8owuZPQz3YLClhkwDh4cyXkOLf4Rr6Xbq2V2BzwVS3LG1ad7cq+qbYjZmZPzXHGOkHM9OemeR7byVbV1cZH22pk8WkLXrrUCa/3TEgJYrrs88rhXLu6lcBhL34/fHDeQ/HQ3rYLXEO79qp17VICY3+bdzkgylVdOtcIRYRWz3IlDEdGOHZIMYf9TyPeExDMRzrOFBAzaKljkRvG4Hyfa0NpyAdUDc6ONSqozAfnCEdkuRRz3QjPpHpWokBNTHg8Ib7ea5Tn7SPih6HCS+dHWw70MPM6vAFnMdsS1MTDsTGa6ALMLtEXG18wLBIAr5ibr26igw4YH70ShyVfHRbjVrrC7vzobllxK2HYA85mZvClPvCWwinnckocQhqHB8E2Iv0RmJ0R/Kq8JvMlfXJiWPhQCnPuyQxXwGQqo/GBwfiw75gHnlxM65bWZN6DCVs15o5cur9nsrs2l2bxGFBsBKhO9pgJxjtwWqNicZPWaFbPVmhXzazVVKHPhRtPmOHMqckS7gR1U0YAjcAPp6uXCluNE0zxWuKM9QLl0nzKy+kiZN3tOZbbYMQ9LSmhMMlrb2/aRuX/Q9AqUX3D+4+eeIwx6otPZMOhz4Z0nFu88cXjnyWC888nY453Peu3u9Dnxz+cGJ/9HpAQ4eR6Akz8ZK7famqm51Rav9dFwdtNWx1i3338Cs6xO58W8O7ib/Vo5HDQLOETXGFVUi5M0M+U4mWI/yLEJcEJGC2/kyJyB2VhU/NP3rgA6PTgkNsX8MeXe6y8abcBo6HmFBrbke6nkB8ZbI1gN+pzTsY7E5fuqQtWJB1OxtyFWOCrHz6aywlGJBlOxlwtOc1ReE1Kp9t6OmouMWLe+wZF5Y0imOmgAE7EzhhdYBd9FhjjhcfYHSq3FRQKGhm2ba51uECIJ/PmtZs6R51jUcpGdFcVDNfZ0yPO2Yi27a9mlieoaoRzpK94el23zo1j7vSbC/k0NhxYx4iSy29iU2nXw3Crq2sBP3mtq1WsxsDCJHg2yNKYn7ygatGoQyCrd1KkxQOt3VhXx2zV9667UQIscJ8BCBgAgZeQcbFz+j98zExmH6I6LLuh1UAHU2Ou5NyL3JQL3kyEyPkmy05f3Eu6uoSDOPIWWcYijbCVU8BbJ75LpHzhE2DLkEok+Z0wnpH+hUqXy63ZQs0plmgurS9vUpX3odYm4UPNVqU3lbXOV2lSldlilxG7K9WIPjsxTEtDsj8quTQ1EHwpzFIlF9FZzw9C8ysr6YT+iuCbVGNbRrKdCWqM392JZNMODOrIEJUagVCBCSS8aKElFzUmSIhb8JhTglVSTtoPUo6qG/Mje3O8UDU3/UT07BXhhhC6zzBlaCahEInHUO4omr1vBp4gqMotPHKIbOqOkxGTwCdPuwfgUGT5FiBANkLnuQmSOes3qXkfqvqCKd6niXVQcLqpnteLDK/Ww7h5CxTNJ+HwqnugWKfC6cxYU+EorDC2gFQSqXGlIKDRUgy4p0gc0pvfHNJ3Suw2qhDIUDdy6j1RW9GSvzL/4mlELwwzcHIUpeeNByG87RVpDjtLs2VVUPBY+0xAVjxvvhHifMN4N4v0X90wDOo0foj/93rIBK1rv2lKQz/BJ/xwD4v3ceJ8Q71PGe0C8T7vnGLJggUiNyz1w+tUwssqkEaCFunyKZ9wbEPIwiRw82+M/dT62TEHRr6tH1+L88zf4XRWVb2cM2Zqgnp+X1C0eeNs/oTK5UETw6We/ddpARHA5O2/oFGNNrwkisdms0gZO+RiCU26R9txvG5WWlbYtvQ4vbhiec4gXvHK6j2N92F10GBw8w1dGXe/lpD3lJI6Zf2EBo21eRGMIJYW4+iGhRDpD2kwPQ8DH+kOvM2p2FzUEXQpX8vAABqLKEw4YO1FkoMfCZALwrSv7eTGeaPxD3SLHeNsUShlTyulfY/qn0/w2cAEItTo9Phqx2m9vEbQ+TO+5XrSlP4Sax1glJ/QzFCrTP7yFT9hic8KGREfpDLp6Sy43JzpjIGcKECDnVhnIeTIEcn46tmJw9iGJATDNn3n2tR7T/FfA/mgO9vtnIUL2+ycnquxvHhL7/bsT/xuyf1OSgP2dQ2O9VmjD58vrOOS1wU0n1xqwuz6Y3WChzgySOVgJ6HTP9aw4x/vr8Ne9v1np+0mF+Z7fiOElQTJ2uWaQogz50ReBd+6Cyq9AKrolqej+8qRiizxzIPCU/nGtuaUCh3ssDHUjDA1Ess/NVaH8/2j5FhYK11hNUp3QWG1prDYaC/eNm9xS7QEtVa+2VGZbqq2zLf2OtFRbWqpz0JZqAqbTtVRzWz8TJHzTVhk31R+apsp9Qz3fRzV+ewGPaoRdqZF//Bf2qMZvquqjGhEU+MqjGslCH9VQq5H6V/2oxkl+AvplNV40uPEqj2qg8XxYc0GNF1Ua77k8qrH/ub11kZx16C21kLcuoupbFwxxHb43NDT7vaGh2e8NoT19kH/iZd53LyR326CSf5A5iCI98qw+ffErfsbk4wt5xuS/qnjt4JcNJU+xkOJp1VjLx+FA996rLgwssTRi92rhS3y6lm2Monrp/cREPpWB/1OmzuN6nX4x5yM0pnk+YhmJgcBP51OML4mFIPYWmgZXbQTTGjWwtcnAwZhgMLe39Jv8iF/ZChvGZQnHkBVqM6zVxR/i4Tuxw3cTjxvYjFR+KxoWu5pWh6PR3U8f7OXlrI7NYO9bI83uj1REu3b+PF3Z83Q+7JS1pgRhjIi65UsPge2lVERgfdxyVgxeVtFKk4aqXjT3bRixB8RpfQ1/aT0zfyrKSn9xO0mSbO4/Oq3PnLXksDOVHBY7SXGJOaC4vnuxuMRwUlxfsa6iI5aJ7M4D94h1g8NwYX8hynYcmcLGKwuViPE0FOQq9nAk2MNRiD0cO0i4fuxwh+OD4Q5DXPcxxlQ/kVWy+JvE+gANeJ8x79+dWDqCOVzFtQIDR/EdrD8xEjs46QyPJ/K6zWP026TfA/TbktwwyLbJuSOCHiuwvBgbI1F6YxKmrj2VjPjqwN4EJjkJu2fgnk6wY+ANBqddoea7SzWTUFPeQyeTAv6KzW9skJPH7rjjplBkYXXb2O86s1svvk/lgE2GbKgz9q4cx1OkFnRkJVEWZUz0HyYvviQVojgGpfgNu4mO+CHRRSD6FcSHuTkV7sqL/57GvGaxD1Xv8jFfLpfJ9iYVNKyYu1QM2KvcYDYNi0To+Ox+/O+6aDuK9BB+6SZaYDn10y96yLy5EbBiOV+3QvbONWjDvdSGxsw1wukx8thSvLP0jnXxtZ32hl0AcCkpJn2s9zg4LRsrC7gunJarMxGwP6tXZ7QyPO3gRBeR1t9bvSBTxCJZnRavZooYVgLc8hZLfW/ZwCsqdtxcvfMnQzzsI+UWBsDKJRAdiYdhgfjdZhATt+K3TS2CXxZ5vtOFIm74vMVviMr12CeWVYjzhVuqV7EkyiOJgDFCmD5kooyXo+wH/Iq02Dduso2hStfaDwhMKaLM7KjikMot2scEgBRRLvhIFXxUojyOZpMoP/36BRV0VMHXfBy9Lfq9YCzafBff5Y/M/qkblKTsT+BOm5eOqyXn8NJWTcqPfUDTqTvFzhu+dk8KaAPZ3KeQWx+5/zYKUUXk9nM3YIORrxzo6CzcucvQt84ystHIpIMEoI+7P39hBfQRKZomhQU7Sy1YWqGsAVuaeRycydiL2KbY38ByYh/79rLnk7ntYzL/R4RKihsyP0I5u9KFBN6zXoL39HhfDvtUCirkxjAss52R3IfNSzCdHpElChN3kswj22wP6rIj9t3F12a7rY2LKMCskac/FZfox9InI9cn25m/XD2ZBI2XDMpwMgkyLPbwYCHTwnWCwRjgaGtgzYdTwR4I5zmMfFuLVGRadsa36HenJyoo2nJrIMI1Xgqul3B2n7Gx98fVAW+3j3WPxAogtN0gpIdWCtJulSfT5TaLqm3WMtlsTwIGJQMZlMxmUFJhUFLKTF6UksjVW58xK8yWEGhG8hMb/Mfqjc/wtmdUve357aTkfbjsnQm9MujDksZV40+D6o5/3KLn1WZV9w3l2u6uVZrWXzzcQpotJeGixmdKvhHQwCjE5/XAeRZopJoXJernoEAfE50Tb1eU815RyVpq1Yt8+0qLateix7kW/bHcAw0uQGLwy+wVTgxUZ3aj6hXONWv+iLfjfkgZyggeXAiLeXVV/EC6ffkmu6jnYnqzqh9BTUe7oFHsA7KRMUungLh6LQw67zzXwqLgWljkVxhdfzdsBGtA1MqsObooVnEMxZag6Cy79FDlglNJpnk9GfkLXMWzA+5rjV9gn/1wN6iiTIBn7UWA7GdprNYmXmOfVM5wxfNstv1/Yuz/3SWBsxEU2P/Xxf6/ru2XDLGrayNp30MwGE28wSivsYkmSRH90/yj5WQ4GloVetPRwKpQ5lWZS6UM2EUSRUtBG6tax1Ee0GMB3vUmxIFuXrVvE9vuXiL2gm+EFcCruVOqYsP9s4zP5AQQNnUNSqBOhPWZbljrsw/OzLY+w2yJNaIvsPQ7hRmhYjMDMvY4NZILh3hrx5ou1sIbx3dZSzdtU2feKmbE2/zkOnKtup9xi7BhG8mqCG9Q8OWD748LsTxslv3CMtb/xf4oYZ4RrjcPplr4NL+xmNTLm4tZCzAsFHh1qP4D71uojqp01dAGTHkbsN+qLeRSWaGkn/Fzyn+fJQltWKq1kd09mfKP9wxY2eaysl2BTi4DFUYi/3JP3OGuWGM5VsIzPOCzUcliQK4xbVYw6SqtHq5A0AbF7k1wQ+jBNmFmuJKQOe4K1Y9Ies5955nF3s9EUqxn163BELTx+rogVEfhffytd89abvyLDKDh7oeDk15n3lGjwv9nqdEbZJoaWH4p87/3VXkjl/5eKX04eVUzkLoQuVkFNYV8EoUs28pLmp7oQeEklyBxZZKTjikbNcCv3qT66bv4Kf3/wqj1W3lzgom/sxdnOkKVrSVqfQDEiWJLjqZgg1x9IWqI3gD9LK4nCiTo/ZOmLJE3jOOeqEWtMJGpOiZkenpcQhIbcvv7TYihkxAd++2n31ov31zIxyS2BRg7VRrkJNG4jxf2eYPVT181YeZzp8rPXz+pVDq4UjCMO8HNtbRK6uHLcdSc9WzQt/PxTTip/Df6MMkfElffKJMO1Y+E5SKdFJ1YLyGvXc53J88CON7PIR+cYxTkqJDjeiasZud4MT6Y1dY4BY+ON8Mdv9Hxd66R621SkHmKEaMM1HByD6iJ4yVsHTetxtGAttFvynyoNDl0oJJ9+7aKbmQeM8hRNL+JlUvnCZUUP+LMo69AR4m9anKcqCbxIW+HmtbBtP2pWSrKugtmqyjrnYoChdFJV8xbopCpPEqiJE7sX00l/gZ41IntzqZom17N6Si3qyk6z5TyOs94kkbmAMrpPdNlg11h1LiM2v5KZBH10kLhsysq2hezORc2SWupSu1fFKcZuoAA6CQCn7NO4HPgoJA5VB/QZfWxrARlznroNhlwRMb6DeECuCLOCBuqEY33bWOx+7GTvaLdj4urvr++agYeG8N36QdIO4QRQdKeFKS93KZdEaT9gkmbOe0D2g02jZZAuxFBjUPtAKLURPm3n7AyHNQv3TC+cNvxWDCYrAIgXVgnVQWAByV/phNny31+P/OPJMhd5ZuXJQnuKvtzkqmGm+mLJyCmjjvPY9rfnQj27ENJaXocb5g3F2DAvXNDZW+6Fxc/MeucSxvFMoyteB6BPHbDZNu5DiC9WJK/D92rG1dy8BvNz95m0fNKmw5P1inKzoTdT8G9Q9yPwb1dkn7Von5ud4XDB/Vb6rF6P+VhQMFQ8qk6bRwm4n6S3Nvgpu9mjX7upy6svOJQ/FSaWL2S0haP0ZXCrOb7fyJokg92jH1gJFaBOoKdoCgpiY5pFg+HJjc4a9nhJOC+J+qCWiPt96xF2o+5ns+inpMJD4FT37XPfLhNl8gpCa+glP0YRzetJI7jmoqTJM5KtB5JgJQaM62JL1qk1Ni1md8D3S2RvuIQ99zOU2KylJiU4TNKMMNj7FqVstufgEVCye2ebffZSRQhJFtnPtmUJNvhgPQqBZCthPggGzoSVZVb4YegvyHxLTIurfvZh6pbWj0jK1ji7ZcC/fhaq5BWC1TLTIkmfYl+eO9FlX1I4RONAhUdJua3kcC8Wp3/VFTPZrfmG9j5TB3Kqq/Av+eiXTRT1Vt7iQzSxfSGf1WMc1d9pk5PxL4FjwD67WwwE+Pi6bLvDP6/XpSx1zDhTTdU1VN3ZJFy7fuRUOrHY1SFbTQABmP0DWVbVigG9ojSFQFwkonf3wJNGPgi86vuLynWPzOKdarjbaSl9Jtrzh5N6WguyPCrH65kuGJwhsdKhtpleJzPMFRvJM9kADcmI8+DTZEXrs3i/gHcV0RM9RrLnMnIMqfhGTAukf75puqRg3Rtadvy2zAf2hO8DePP4IMbpH/34EWV04lMGMz4A+z6QQIRdy03c4DvuX5pHaR6OQB4RPX66E0T1UMMMRGOCkOmnzCgsUjbOIvb+IVPggo5GMT0EYpDglcXDteDZ9gkjy/uvaByCuKHv2lVHv6mlZuD7MgnpjNur/iJsHGK/SUGJv7EaKfy/WmHCgYtZJj4HrXdZVj3TMPBnHQpHMyJG0dMWyXxN+z50ZSa3Wvq0LHHaHJwfYd7Tr85f9+hmgyW5T8VWX6Tk+W/LMvyTK0izIxH2vx3pdw+XO04k2pwbhuUZDeuXH4TqpzhuKpk6JczhJWpcUBECdLRtUC3gTPahnlahnWIEWzWIxCKQe4JcIg3seCVHleb3SH3B53wiaATPiX96xMPWDTiKBAgz5bR/7DGVpLWYtsAzCMiClLpluKPGff2wchfzbq/csgrCYiCg5Cc8bG/c/PsE6+YWg81EFRonJP6PrrLuH9A7ns9mclbByGmPlEXRUASFznvt6ECRQINw6V+9+6QyX5uTGRNJYudhkDOP/aj8ytL9+vKx4tuDb8jMkckvpj/fOUsfEyvX0xFfpjaVYXfBK9YGmSUsU2AcMsoERsBMxtVhmvFMehB4Jq7RF/qP1i/IFlHifiHna3S1ShKpX8UF5R6RyZa4RP1flQ0cF3+i1R/zOHvAEJcqVtNPS337Ry8ej9C20lnwMJWvpvAKYB7yYgFZAYtq1jXeXyX8ZYhu2mIBfZfIdYv3SR7fktujRVDWWWt5Z+ZtYY+d8AaeoPf5h9sfESFmr2ursVxLXZ/kYrD1XMUrquVX3HLUrrhl9LbWnx8ELl7r/9Tjg/Q4LKjvpCThGiUmnV8Kj4R06Hf2Zalk5kbVXH5t+zOfXh8cFVfcA1GPwC88/6J8bTExmqoAmHgV8JN0/qNAif67GxC7YxqKvJLermARxvmsMJRcr5B8WS7V8DQNvIvNEut3rwSko9JwIPqzsw68ehIBgYFCKTFlOrEaBtqMYFaUAtNCeFxUG4SZUiJTKqmeZrFVkt8ytdQhcVuSBmvUFL8SRS/wcXfNKDYmxX6mS/ypC+yuRXWJMjz4pzf6apisUfF0Q0WXpWmtdT9xZHfK6w056SUa8nYaGLQweRutLFvEWQHNHhLfE3dWFV0ShekP/NA6XxCwFKiufM6Pszr5bzHUs7uOMlO2+zUas7x2GqOSOnZOH8FH6yNjdYl1901m1lBP6+XPE+XPE8Lq/iaaoaVS9Pz53iAcmxIjvtLOa6SHP9ScnxTmOOfVnMMT9Gy+bZ6nvu5z0xw7vMOpQZb2M5/FCR7BMMeTlBgE4bHKuCBheIRW9Dvco9+94nhqBHsJkUuawvaiSIUdJpXN5saspkRS7VkhyPcZoplmykOtpkEAQEFxXKkpKRtjqDWKXZfBfcT4r4C7qdEhbwC3dA/QS17nZcoUHil2kzwKTN4tBZKwRU84RaKvKVcPgBqM0LtM1+x2xyOWipa1VURj68KZD8Q9euFomfaaQLU9YL+PatfP4WCzVJFaH36+kGGWsUmZLdLKnJl5Jcrj32pulyBsCLrKyk7twDfFPVjl3fMedNPRAHjcPPKsl5EvyNY/mO6QQqZFGvKD7cX/l11sQEeWfI84cnSbNOP9sQ6Dtdhm5TZtvDUbt5ureNC20JD4WmxaeWxe3z3cAl/5sCnL6qo/+VV8wfRPGvYOQHnO9m5Ec7V7JyE822yY+SeDql5zkWo0uRsbum6bzHUjZFSb4E8SyVlpU4Se5CkDZrYTNSJg+ZCUWTj5E2SyZ+KYH0wssuv22+sLL/Qyw4vHdqsXAONwneCNwB3ZMwsd6v7OWPYaWfJh8w8bp70jUPs8et3VfdqMn+GgDddt5FOW8g1AfRHjBuRM49vSh8ja1sq6NM1Z3NnoAAsDd3cMlY8DciPbXJhoHxkR+226fYLy4d2ckLZwRVog15aHysab34zFlRNWUNo8Kz4wS2zTpcQv6ljUiBzjnKTJZ773Yjr7IVlf3dZUDxr8goE74wWeAilelfhgvtC1NjiUkWDXWz0ONaKd0ETY875w4+CYjnd2mrOiEqj4MEHcXwnWvddKgZXMkUgW69In+eU63LGIG4qRlX6k7FiJVXJ6NNdBvliAvh4PpNAA+f08QL29eLi1F5dFkBxsaScYKKU4EKb4DhOEMS7qBTvXTbe0b16JogvTeH2kmCW0GcZuGhHZeMFwb31uHi38T4h3vcY7wHxvtd498Mb6WQRz1nubJEaLubGVlH5T0UZc1SDsQDtcW0sUCgXlC7rX2y8E+K9xHg3iPdS4x0/lbsUWIglTUBuk4lxhSR4n/FOivdv3dpINgfqJVvcu79SfUCBCy6XX/xp0Z4kwgWg6klh6XJOHKxad+4PdsLkERaF4ieDzhRTvzqKj4+uiy0OakxmvXE/4dtY8FwR9xTiwL3Es2J03dpgxCDFiyLSL1upHuLhoujtBF81StP9iR6+CjZJlRM/NFPijz7XCqR1X4lddGyBuCCutVB9jFCwY2WhoOlHpkZFIxK04PFn8B6njPoJrdnRx2PMxv7oUhXnfrmqHKNFrot7iVnb7D/6xKgjplgUpOenjGZXxXtnDgGvKikrotpwh4iv2oZ5hRmdGuhanVaV0qR8FplklycqGXAKLbrcUTIvjhSKrYNGrIbR7Cc0OMMlz5ZBBylqXDcDPiTjDYZ0XKQZfbZmJ5wtfTSEsQOiLI4XrqyoXrkCu92+iwAHxcV+zH8y0mgT/UfTFzqG/IRrKhn3xpAkLZ6RvHAWnJskP7dJcpfETo86xhWeY5GWavNi89vn3/Sv//qve7i8SHHi4uc07nPRUvC1H0PVUZxnggyVEGH9JXHDYyIF8X31k6Yoft5ObVFwcayGhrWl+nUQLBavpgL9GjuXrh4Tc6C/Fjm/To3hVUEf7TdmR7PPbMT8pgL9JDSOY99PwPBC4ShUtjVWjWDJ4mVj/9Prclqho9bb4jHWT1iPlUe/t8ZEFIKI+ti61IsPISYgkBrFVkGMaxaL32GT1Ytb6HuzWPoOKsJfS8h2CmkU2yRyoxT5w/jkI/v3PiK5Fp6glnVTL5KCXj0sTIJiC3NvFkedmIt0jGr+JDMXD9slY6R0Sa2ux9VbKQAGMSfWO0Ss01CsZ3N6Fy6Ce05L/5qKjWFZDMUTAxY5cW8BgZ1+KpZnCb/D6Z4lbup0FWdQ5J5TT8YvpG78f7uxFEOOeOO3YO/8YF3Z9dcs7K84Iqz9DvfUmHvqgF56QazS59NLuah4KBudCs6w1Kan1ovMdb6Ue3I96I4p9916qTui2Cn9xtwtTSdMw/zqthPWbSdMmTXyCs7cnTCduxMmszphciidkN9VrJtOmEonTKQTMqphvZe4TpjM7oTPvIA64f/thFPKi1pMWZ2/1vQ6cp+31nY7rJPEk7FnQjxJqRMmxcw5Mk8mMmseGDhdvvv5dMStSdATUQydSsdLfDdDUXWpK6JW5a6IulW64kP/A5OhKXwqhUd3rE7Q1e6YEJOSg86JyS9tTkzC7pj4OdF3x3nnxKfjQ4JL8Tgpr8ami4NI4XCBTSkUM2X1Hddi4esAGAR6pgEkotzgWgwTrkWTVk9AUUSaZq8tUWJGsEfQyCr8y8NLrBs82NawWb0y6PkR9wrgLWa6jZhEDP7cLcHwsZeZLDJLiWJlbtJpAx6ow6T7Xd3Vnd8FGGLkUW6AcYFLFfTbIO1MNwWtoGWBOJqALBkqasAfhAcsbQKypOvwXjJ81XGvTdKU6TrDNQu2SyZ4LwAJ9mGCi9SGztZGiSBiHUHYGJJ7YZ0Q76Ujh88e76XBABqRbs6DnPFkfIhALzC2X2FZv3dO1n/E8/7/8j6ag/cCTZMViee9C2suiPdRhfdIvWDef0PRSOx3R8Cp4awQhkcYlwQOSjY6mn3KBzzBv2a6TwxPUp0EPNHJtuFMEh1FbVUXrsTwe67gY6/BhCEphpbhjnClDnbUmTiRIULElXrAlZhigAwzps6osToVxiTbsnclzwmEBxhq/9sL7BAJZ3ymgF9AYB1qUBOoQS2tDMpahgi6DpkVKW1bwDXd9jBvgFLCOwbeX4e/Lv5AlnPIcouxfvpdkeWOyHKXLklLjjoWpFfJ02aIzkFByApxOoAJ6oDAAiX9waThJzm1JlqQUAhfrouJ/9idjM0oN1NUJj436FWHvOi0qvw0ID9Ngd1rGdi9NoNdyfhQAbvC6NHmmaNlRo8hoUri3gL+ZX/4MleqP0GRh2/q5f4CVE6Dhc4FZgk4izYpMWSu1It86kWZzvUiTi0gTy1wsFUejez7pzIE0WfJg8enNuamOXMa8jkNkWQyomKGdtFNA0KX8vbqkF1h6ViGUt3QLUg/OgjdXe8P6SHuAEOlDjAkyamcrC1R6blwWtL5juc3alGIhsWba4lUzYs6tStpuLmT/ntuUsWX1yrzqZWo235JEhUNlihAavaHg+t0w1sXIk3kGZRyfklqHqIkIWhALv8bSNGdKlLnpGtnQ5clOjGC0k9ZVHRqXxKuU83wGTVruJopXTczRX1lv4nPmCB47mxSzRpBzRIKS6RmTdQM06ucoko6qRmyCGtWl/mVDkv5ZInWDjLHPifB97ilCeV8qPIde/mugN51WZdSZRFnwdOtAHdOtwLQOxFp4NqWgjoIikpBeUV8k6r4irhK/laWpQRB9iCL7wJH6N+LOQTJzUqSm80tuVlZcrNfnOT+llJri7U95Y51YVwrN8rlQOn4qHaOXKZcu0UQrm+MI7U2PidUOu2zIaNrh/kUVwgAWqpmLA+T0bXyjG7xG6WIkUTiDHT0H2ZF0YpLZA/quPPMOp7L5HNHRzjba/bTtf1kSx8oexVipjQ6kROs4XNG9QVr+u4pYl3/15zkZTaJnPSNDFB9sUOj03PO3sJX9Cmmybq+1rxool9bzV2KmA4uGKiVCpW4QiUDC3VFPLBUGDi4VFPkyS5TKlq7oDN7YaWa53RVuMHiHAkblI5IqGOKIzsTUbiAwGcV8Egu+t/nLvp/shFF/pL/tPJX/65Vh3j1D/B1dk+lDPx2lxJgMSR4+NF1s57ov3szHoSL/F3ru5SEkcjNJjRZwRKb9IS+/M1/+FkdcUFCfLNJzAtHVuzdeP13PAn4BpN4W5nC/pqj8N0HtypHAJ5q+o8ivaDYTH51FhCAHOT/5IKA62II/lEFc4Kj0e6KfmHRWL7mX3x/8yzLnFLG25HxijK40gqf76iWE17m5pvW9GPUYTvlekufhB9NFoslEX6Pk8y1y/wrn6tY1chFiyh8Leuib1RhfYprlIEx0MbwWQkWxI4qloIJ6nhnk50fgTNh505Ow/U7YO5rusrJJbVX47s3a59cP905MXIIODBGWAjeDdg72zJnb+11A7Br9swyan//AKP2zQcxavf26RnYG9zuviIuI9qseCEA2vTVYEgbwUcZRa/6yv0XHU5SRD709Dt++I2P/jhEayFt5ROPr6uaPkTFiDwLET7NhZ+moNAkGj1EZKBR/Pzrg+wcFD1bFpg5wPg6RJFBb32eNrgrngP0yh43IrfoyKCgbJdnP8nriSyKzgnG6CkPMnrwIdmbyW4vG7BeEeM+WoQ6+CF5u0eOM5co7MY40FOmz0HTxMWtHzpXrLFY0OXGRGLtY4tPhV+VYPdJb+Dfe08Q47ipEKzxn2+cqNzPEaPN2F90nIz9BchNcBuUxQfur156NEiMm2LceRT3JLk3kBvPUz61Hrf1zqdCsrFmjDuIE0JratvEADjGYjOyM3CMP/lCaDksTXWuGe03x/24+G28P8k13FueA6edxXDkbyrPOCoSQ8j4i8oIcyCO35biVWyD5bnIaYny3psN4WkVtsbL4vH45Hi7kkvOVD2AHe2Z8MZgG84VGZYITtnYwDVDW6JbSFOKU8ZToSwvh8hgXRGwKZ40/Cw5pQYDvBoxi4q1jK4i0vbabizOybUMrwLnm17XTe270QIaA1QVQyQaOqbesH+Jc0XOJQ9D0bBPXaRO5frRhCHRyAzRdZ6oCXnQhqQ25IHpcQlJZoXEJsT1kU6UVfoF9RYHyjNz32cprB+D38c4YNW4OEYnxfq9hpWTjj/GCHZcBV3nspuszKpZXeedvues9h3nbeV+s782u9+8yXebP5271/xludPM1GZ1mjeU+8zu2sH6zGtmd5nTyj1muraQHrPCdpiKhbCH3U1lRJca96NA4X5gX0nh1hauMRJkJmGTj/6Fa0q2vT2OLtOJiShNyXDomC1FczBQJk2SxhUM19Ps0cHw+Ipea0C/SKRfJLZfpHBKv4jYiX6h5MptMnRM6p+ccq7EufhAizsBpTZ3K3NXnUc/UTF8xkzQSYHnQifaKB9QXSLyrGePki8b4OEZ0dwhbOkmQ7QGd1/b0CUyRv45R8e3nNNv/AduzoYok1mI1fazqjIpekovFVryrDDR+ndm8V3X0Sodr9rG9xazkrE2zhNEqVnDgMhl9a0fXEqkUWEB07VHO3xuqEEkWTOzdMLLBuiEHzjYRcfagIuO9Vpci1VUud7owYE6SlDP/fXGAB3x4jrrks6mZH/tf4IyOder8NJjnBUuXaQonpFn2euqFbfwMDtLda+p5cvZ9KXRVM04bWZkOd6kMZ27CrlInpfQT5JJNyJnnBVt+oky6WPkZBvm5kLAGr3Jb8MXtN/yKEUtj1IECMT439MPsjn6xJiGSA82+LlZ6IlY6mDoE9T1u7Fok9eRf3YJQlkPFZp/6e46xm8KaP5QaFbeJ97uaX7U0/yx0DQ6LJZhjTtweh4VGQyl8QOIJKegf/ZcuUJ6PMY4pJl9F1R5sMgiB0mjvWOxN0I/ShCTDLRXu4KY1BLjm0Zx08c2cE6JBEKYWl6vP5SLdAXKFMt26Vz6+/7ac1DgZ5wCf189SoIHp35BuIlAGVSEw1KaIR+pOUjB791QxcM1E/oqO4eee291d6CYMNPwqmL3tssuigVgSRNHy7gHNTOlxsXfXVrdNhCMd8Q4TkD+4TxW8C/g1MWFnAmoEIGt129wA/sHzkUZJFeU4i8hBez6U4gFu96EfT93j//DlclJBE3SWtN7kx5Q4jGhjp3UI5AN5UZKkCSc+6GlUV3+avXyn6qb6Q0p3fQGj5vehD2YN2dpFAL25LWDqx4IoWXCzYEKVH8/xbg4B0yvdCLG0LP4ealH631eF/FPquxZmHtD3yndG8Ic4uelywfMVVcsYK4ysxRQZoBmoHS8ujhCgAxCuN7JYHPj6ijGytdfY10Iat0hY8xNnyCtJvJD2wO9VGjg2WSpBJ2+yliUjuoLweC6tuCVV3xAzADdIkrS9mPBgr8FnN1+Ah6RGQjoFg5OCwZ3y/1tnYQiZ3elURJe2fG7uBcffBeXvHiapDrsDBqP+sLCXuKGJV0aj051ff8kNyAcT66XywBk1xzarQPWd3uRZISeeWo/luvhhIsSF+fSN4QeD9RNDBLhvTvpyifJHri7enrLtxMdvUXu4bBi2xR1PaneyPvm9wUKaK6rp+IYkdRLJHXu76B+74LyOBTckR/tgJNhl6KhZLpm7/LBU3rXdPUa3/XR6VGj1f1kno6fzOr4lisL7/bTtcH9/nvz9PsPDuj3Vy6k3yeAZq708uma7+XvjxI5/PdPNS1E74TWubCtR6+gJdLqMO2FVHGfFrFJ3mwMRkcPkO54zJpRNbGlqJG382+Wh5Kz4f4FbCqiNZ+r9pE/B+Xje075+Hm9NBKEyseCdwv311hTWyQ9oYYtAwXxfudsZGbZV5iCcw338R/fuaG6r8Dmx0q2jXB3WbG5f8JeMO5WFdIVYm9iYnfdOntvoXiQQzYiFry77SaJeLGJ4IGXXy97EXCe7gst6tAHwcjKloLBpbagY1cqAzqm8Mzxs+NGk/7qOjjw5SRtqsSgwlJRu/sw8+Hq7oMSGGEaNMW5iZzHinMSQBni3KjsePneHbNRcGU4IsdFqMmIr1QuWqBgEQTQuL6EiQARXKTMsFicf8m5uNf/ZfpXir7cHZ98+lEpvOTrhq4NKlCzhFRwtdMPgjoNBkFVUndSr+rEvN++WrSckk4z+ISFsj+Uu88/qIxl4d3nqwaMZVMHGctKcLt07DT7LObvkvAwdVwtRFuRYU0GNdOKoy+V1kMr7hYMs3/rZ4l08Lr5kG+/jl6MA7AIS1CHbf/vZaFYLHbIUpMb1vk1qdFwIgwNrycK6wyeDikQkhDdDOPa57G+rMD6+zUhToAoFdB2VbH2r8nACj0J6T5cvXqLzI4bk2kQLVDj4yAtLvyMyO3anJPf+ElJHi4i3fsDkHq3RJbh95FvVMZyL69elv3i8henv407oYkXPsj/wA7y0PkWZb+Ll+ePtiYjNYzo4StNuy2MWmcVzYkviWrysFsTg0NTcMDsY+mgt2wAvaUhvalPHBK9XvZ6pdZaWqro8aszBcc6ejjzj/FPM1k1P9lsY5ffLmTxKRUI2u1z+x8GSbrFcsyZQ8cuW7K01s3SwxcvX3RYvdEZSXJ1xPLlw3F05HL+azeHWsuzUr5FB4CsI5XAEQQeWQk8FoFHVAJXIPDwSuCpCFxSCby3htDDKqEPcujiSugMhy6qhD7CoXkl9AkOHa6EblAIHaqETnJotxJ6BYd2KqFbOTSrhO7g0HYldJpDW5XQ+zm0WQl9iEMbldC9HFqvhO7n0LQS+hSHJpXQiQihcSV0E4dGldApDlWV0G0I5XPOUH6jQH6llUXcn4/QDn5Hc73SNRXFSdozf/VGs9UL/tqLFh+2JPBnnW4v/Bsazkv+Iw4veXtH0n8jgf+oFx19TPh96bLlPV9D3z2O8YG+exztA333eJEP9N3jKB/ou8fySqB0j2WVUOkeSyuh0j1GKqHSPY6shEr3OKISKt3j8EqodI8llVDpHodVQqV7LK6ESvdYVAmV7pFXQqV7hCLlu8dQJVS6R7cSKt2jUwmV7pFVQqV7tCuh0j1alVDpHs1K6DYObVRCd3JovRK6i0PTSuhuDk0qoXuk41ZC90nHrYQekI5bCR2PD95xoTbZT2b6yj4f13H/Aa/jJGuTNVbfmwWVUmxljYdnvuNgN2gv/Il6YHSzU/j74tnfKXRSF1DaLthkobYvoQCtECAmW1AMJvhrKgqe+JYV4036v1O63rryll49oM5Y8FCh6vm7EJ+sIWEd3MCaDAbBTVjPYpBxBsEKBsFtBOuop2J8GsGFhMv6YrLFzg5mbXF2teLfIQ2L2fhPl/dj3TW/HfOb4bcXy6PLSrfZAL7fskbATb5OJBf+JEuTX5iyiZRNWP02kUw3KFEGnqauLWyzJabZWAML30f4SZwkxMv62qjEy3ggLwmsKLH8DJmIk9LEMtIg4FQ5mNqiRJaDijyy6mQgqdgYbvbqJd42SryNTgNrI7C1T7MAsGERoIjH4FvErI11s8TaFrMWT8HLPpO1+UagmBTiToOYeXNj13WEhicGSrMP6yH67ed6WOd/uhznQoihxnT21r6JKdwfHBky0lM2RS+q3liQl85tpgr23nAZaqpMzZPJdMsyvDGL4alleNXc+rYoQQdO6D/h3w7ad+tKf6cyvizO+zFlU6heEtiG9WtFxJuNkLYU3aQuMTjOOdRRzugiDfYTZcXUozKg3zTcveeYYr4Bteo3wSJ0A9RHPrxprg9vm+NDNRSb2ZxrgxFJ+ikal5yKwjJdRwvjqjkMhnMKkhINJIPPuo6K1sWMPXsUVxyrrRW2TmzAm9AwSSFQT7EfP4RkhK5e1zFaJZZW4frpulRScn8n+a2HvuT+SxMxtfdrLidqDaq+1iiy3CFIIUZghK94HZm6HOocBNqIlqDOCQgUKvtyEmFXEnWeOKUXlbSvt2GplpT/VGLGg3vFiFtBnooDMW1bYP82Fli1FX2zkamANpZJ4PFB4AEbeJILBGpZhqBT+yCEsRu4ZuCB5Lh9YI6R0DnN0wG2mAS+JgjcYANPDwInTuUcX48cI8lx46kmx4hFSRW7p2vuaRJqI3mYRC4VhIBZQw1ZytbijI9UqIrYMrNbL1c7KDaQlxj7KcYKF+Mah862sAIQBaoUVrN+H+kZ6Muw5paD59cY0tcyaaxcJZizp2YSy+r15iD9OgfNhsYxidBwWP5PnNqLOfh6D+8G7w0e/C2C0fTpsnrXkfzzKOYdXPqJzDWOCXuN4wMpXzOoVVqynxSpnJ0lq4vfPBPbtUmxnbpY9DvCNGRDnF10KUptGop3JEBKx6wXp/S7uyYXhRpx5ZJQohNzDtF860pWAZrcrfEj838W3MvGA2Ydcz0bn3Tao0mgN6zrvTxGwWl4plsWPBVmvUXU7XLgiw7rxGhYlFsHIBGLNMGnLdKt0+39n0KdBb9JjDs/NmExb1p7LW4YPzRd4Cfny679TMtNWZlppGRShWGd4QfZ1JGNCss3jDwy5JHZPDBPtbaFLd1fPKrPpwsj/cN0Yw3MQHRLL97Cxoz6MHPtR0E7yX68IJ5XuI4elMKYi2+kE/fw+J3n92lz8vtLg/itDb+POXR+q+fKb7nB/Jz4Hc2X1t77GsYP+J0cjN9K+K0q/JY8Dsbv0w6V37+0Pn76C7+P45bpSc+1jyPtL7mPSx4H5fnpLxiev35Onj80iOdNw/PGofM8fq48F83sOfG8OV9ae190GD/geX4wnsfC87jCc8njYDx//SHz/IBSkTdTCdeO+eNiJWlvgRXjfw+zbz5fRSPw/Yl8JyLpWMusY5+av5mP4WJ7DQxMzLfKI+plajrB6QKnzZ/hgwJHGkrNxsUibybN536AV1fy83Ce00WSD4NmryZFuVE8GXKDuNJvlD8Lor0Ewpb7hdTfxio2i4KpU53quOh8i9fKlwFPzSTGdbNjwBj1Zs4uIteHgiP1/BOIwe5TvHtb4N4YuCeMW1Yn3r0rcN8VuKcD987AfX/g3nqqdRf3nwx9QLzcbWdORYCpTrGHfXArugfqKew5FR0YOwYK1mixQF2cqpWnxtsoMApgmDZJJFBfdPXgVB9PUnr3vaHbFdr8RtnDlBuNPrGVyN3+LNIf7bHgyIFhbIUS4ueXOf6Yq3h5Lw7MBxKBQo7Lfwoyg4vCETiuKFXWizvwSDDaDi3kT3QRqFU+vgmCqIqHawJRLTYc3DbWlTtXU1zorjC7wOGnbM9wfA4xJ9ZI5gM2c0DTB3xz3Zcvpr6x52TgCsu54AwseNaaw+v9rxqDuyZBm9nu7xQJEsneB2TmTZS0JgjMcnyIS054HFb+pj9J8fefnG+8UAwqvWm6mBPO8NF4/hEeI8j/lNiQA1BfMtn6qtFn7R+tl81LFQj3Z8aZPSyWQ+aHyOSajUyK5cK1Kt+i8l9q+aZ0OvoyGtGwMXhivBO/RDaAkP7ElwRBLYCQXoqbMLJNShmXX43w1pF1fMyE7pSn97Q85hX5RwWsgY5MkGlQ9/DVpcvunig/pSQlnQyeK/i8UPYPDPB+Kr143SibwgxskZqzf6NsVRasIvuJkV5q3RRVZ+nGWQxC6tIYDSfRAvU+OzX9iO2dvMvp7G1xkL5LriiTq4PHcJC5f94y8peVi44Y7TUt6nhEA5jC+ztw7VJ90v8vuey25HWaHfekrzuTZ8avrv/aTXjoj8qQ9BKxgu/0kuChyAcueeCaFLNcXHzvnrvPjXDlJC727nngZ+Rs4M2LK+/7IZHAzuv2R+6/jeKyPVUvoYC7L7nsAwmiwYnsu/VOI2O6nwddyfmoXkKhFPah7915bf21fB9raua8vyNnwjW5VwH1ofjU3ve9q46cWsWBL33tZjgptabUqWgstyJ/0Vp23vA1qmSXKzRia4btWhjI/Yl5ED6G70z3HnzMBXv0S5f9XV0K9nKbcEUvwTd39VHM+JtwNdmFkiIGf1ISrhAobbj+i99OJNndG9bdGAv140FdIojJNYee5EM/vf+LqCSS/fje911bF7JTl9x5eUPinurjfuceLjUi7P37By43FZip+Rhf+PwHLzcNPq58sFyuRyZySV5o2MvufJfZR971pfN+ZEr0kz0XfyyVyA/vfd+5kUSe1LbJNmpu7Nu/V5N2vv8DD98XmzbGo/xrzgQ0ZVOS7fJ5yFGm/bAhKOmn1n9xfSQ5fumihy8x7bVD+xjb77/3FlOX9zzw8fcoyk4EYzyR+6ojAOBsMgh6gx8+ab6DENLjM/HpHWedtW1UnT/aWSPd/Q+Z/HRQsu9tPu9y01n2BMG3bbjeSvK9QfCXNn7tapSx3MsmVFDTu+Mz8Y+UbXwFCSIGArg7bAwdowCNM/lf84Fi4R/yoY0tMSZ338QDiyhcXD3nWkrdxBtZvOdAcKUNY/JPLuLRicYMKdSXr/yHR42s7pq+/yJ+ax7Btz28jtinxHmjcT784C0fq8PprQaJ5DoMeEDbUXKJZolon6IBYqpajwhiRZ8gCA4egGnuPKX8yrgbUbHv8a+TmoqSKE7NX5Kkz+svqaVs4Y8rPzGrJ0XCx224guds/DOUaAGn8HY876PAv01Dpin7Md45bO/uJegUcGDkYAcdfiyhptmwkQd/OhU2SY60SXJ72W+JxLzAxeTQEfv5qNd1D6PPHzCfF1lCr7SENAZkOI7DUAvHyyXJue+uJDmRk4i8SS7HS8zzbUwJPcl+PvV13cX0+ULzObeEvlPzbfC5mqU6TUNDl127yNUkF3qQ5PDBalm+4ZLdX7N3HR8ykafKxdnj6M7UpEDfqhboXcoX6FxlKe+lhC12jSuh/LWLS5Q30JAyxK4JJZS/cXGF8nu1u59JkYfFpSXyd1xkuXapba13UIRFFGGviTCckWfyUvEMwbPFeLrwfMJ4OvB80ngyeO4xnjY8nzaeFjz3Gk8zQ6mNpwHPN42nnqGljCeF59vGk8DzXeOJ4bnaFDSCZ5/5ouB5j3gyzIVWBRUFdJlbNlCXd33FS4R0C2W7hbLdAoOHY7xvWnHtIQ5D3ZERKLhEV/xY7tuIuaJofU7Pw/VOp5nViiO5JlI4Yx4uOyIN2HIDDsmDQjz738hY4J20LpN6uEujMl5jpIILS9xXFVQvbpNn5U0iqH6/jvtT1XXX+DTSfvfSdc7iUcwrixFTMHROKaunctpBqEzXHJkXMRnU7RRaWcriKbaLp3Kj1LyB5RQb4tK2BiFGAIwFreHWYrpB/zh/Dn/u/U34m9Yv5DVxkldzsFrmnEmuyhsXsaDO0ySvpJ7H4pK6r+dF93I9I1fNvpI7eqaivnHepEvNgmgzLlonGpBv5hNrk6MqkfAtqy0hnjAXuxtMm8Zz7NdhXmRJ9fBdRqdXZqbeqSgMr5JtOt8CAZhwomWKtv9TbB6misSr4/Js/3FoJAyBaGfjUWCC9cTgkPUk5NHWk5qCNCnwOOw1JAW/SPFxFCjTzeJHu0yJ6uhyZ+M13hiuNXBFcJ0Dl4JrLbmyUmkpMAZgrkyigpWeO/ZtEMjtAK9dxy5DE9sv63YIEEjkFmx+L6vGR+rObpZuOgypdG1RswarnX7ku6kPbhY13muUE8G8XzPXtXklLrdmnrMFXmCZvmaMjEmHXlyL4rTeaLaXt7JOdymZ1S1Sy5cftjhZInakhx9x5MjyrFBSOHdnOzmqVjuKByq0fhGxFYE5W39Gbswt5lPLIrafpABCQoyGZ79KhXx0hBXJi7BpJz+kyC/vvCj4dpR8w0+dfjrLbPligqUdyqho8ocSUlj/dVTIY2khuVRHWPMsRXHsRaIzu8tmV255rba8JoKF3bBltlI1ZAtfnaiYbO23tKCF2lJKk9CP7IaAhzbOz0FbyaeUi7nMFXOZAfafrqGk99Sw5pWaLsvCRnvL2NCwWhb+1Za5ZpESkWsts2Oks1Q+Qf5RiRFXnRHHI1RnRFpxBKyUoTXicpZyPoOfwl3qM3P0xXdkZ6Sc25GSG1ylxoNvf01+H8WvNOYRnSOrDXUEUYjkRwgd4YtdRziX/gi09ICGO7Iqb1yBqFJk70MBQlE5XIIP7xzh6wVRXtI5XIA11O97axLZQzszZHhi2HBYZ0koJSjyYfIxOaO7uHOYEBuPhNrsfhYfVjuslgWpF+sEDbaos1iSRtVyRL4cVbFeXKstdsQw3uedRQtKuKhWWxT0h9x385rr5r/TNSqwpgDfVxdRzFx+6pIhB8D72rMGVTiv5a6MSDLUkVgiDkP05Sl8SV5rE0s+KLlLtpuUrQ6poObj/JzCNJ51OguMLGLQ7mS++eeJ78W5LRm1Om1J2PQJ40E5NDut+QoB8Wl0mnPIYlSJv0j2s+QqX7duizVTo0ZcgBRJ0ZNOuiBhSWu1NBCWpNT/E5EDqOqS8eBmsIwcV7L+XI/fTpSJHZtkhiZQBYKG+Xn5nkIExDUCKORVJiZy2dkqmv20MPTlY8fwDrS7cyXDRr7NHFmxERF9KMxZE8o2uXgsVAEO3BTePMN6j+KKiamb+n8QqWR29oKHIleZit/Mr5YddeQqhytyH7sYJnUL5HScr8OevHnuWF49NQkUG1FGvHlUjLw934GIOCeJQCnieGwiNjme9yKCFZTrqaYKWy+jf0nwcn6dkenJ1u/P9lwcm01fPIH2zYfhc8ne/YnzkCyVZGjrq0Gd2img/ZF7SpFqEqfY/5uyhTEFH9H+/vduj+12ET/u808zD6jXLmdqslW/zwDL6rj0pGm5qaPs64pxiWMPL1gFnwOqXz8Criyr3CH6wV3XXVS+ZS3x95Xj536fSuKjAC4J9mHYHouhnJVO5NabW5ut6qesCes0BKOcuNpQ0uETtajbCm/2+x2llMCyRv5QSnYYqme1m9A0AmKAQtTy89aJXjqczXvAOziNP+9NLDDmz1FeOdpdZo9sUdd8u8TTiRwR4YAIPjlWwaGKP53tRyzsvEiG+d7ijBi4ktd61aK1xbrdQs6eyhcQbwVJuIouOqn/vudkOSuT44a2/UjuGtxWTc/uiwf1S68x+3L0bUnkplkkt9FlrdfHg1G4I8ybABK/l8wuSVKcf5VZuCTY0Utk0GFyKOgralPHouGxpAzB2XqCeCDrsZqsx+Q7hwKMLKoucnq1IvH2n7Fca9PYuUC5zJIskfbJrScmz4h4ZLDW4nFLMrcQgj25WMemNLzwykzRHEMFwnIskqKtgSuC6xy4lOinvaiyHIvC5ZgAGPhGN8sxZddivgilfh9n7+9VH4FN5Nscd5HGSSk8vtac/09F8tsw/jhJ6zLt8pIt1TRYtqhMR0OqsIOVuEX5N3+EcY/xh3Ts1+WJ3zfRkQzwvZSnclCVsR9cAgBUWu4CgAmlmJTsRxBedAikbZTSduZJ20DaRy6VLOsLzrKOZP8UZpkuOMsUaX9sskwWnGWCZD8Js4wXnGWMtPtNltGCk0VI9lOTTAZ+nnbXQaMVjs+dMqnsxVBwhe2zea6yucc5fJ5/qHMH63tPFuz+ylhTDymRT8wkfln/w92+X/td6RNw/39jQ5NRK3pJ+Jcmsao34FrYXzvrdIeGvb/5ivL3fFHZ/4rK9yUVeodX/IsPK/uPqHw/ciTwHH2M7vXL35dW4i9fVvYf+2tl/4tfksnA8x9pnfPrL/mNWgbPv6el6fKjfiOTF0B6qaBsvO4E8nReVhJePY/wvkz2lmuTrzqxVmPQYTEweUmtJgE5AqaCgCYCNpsAkZOXciFmgkKQp/MSV7TOcS5CRwq8/2QflzxQG35d114aHTgZ73TU/gt7GdrgUXSs14zXTiPv/t++5iMnUZzOrzORJwIi5On8mtTaGSAouwkfuU34yG7CR2YTHuUHucjtv8M1oaxrBmEcCdS1MutLH4if8p32Xyv/1ZAQ37e/iq/9FCukeyGx2HB5bEPGvkHpnDlW7QSKwEOMwCsqv1OfrCbm2AsBiIa0KPVLKQOT56ZTGfAzltyQPHLY/Qg8NkMirRO3N6wjC/fkJx49YOJ5MafsUevTUXaPu2/kGAa7w05faEsMzV+V/SoN0OMYx/gqxat1/DoE6Igo/cyMqZqjHV2NdjRHUy7aMSWhB3MxfEHKC/mM+PkBE/toH7tMuJruaEn3zybdi0otW0hQuWU58KjMiGY/hfVUZzlXYinWWbTlBpLcgbZDvZ8+RbaNOQTF2ckBTRMwW8SWl/9qy1ECnT+GMkr2yzi7EcluxGV3L7J7qJrd7lJ2Lit9FmNlGXpQ98IcsI9XLdfS8l9taSbcH5FpMGxW+hQBf6yhG+GFtj/kwhr0WLkYKBZW+R0TwoARrtkRQviIAdApOQczdVn7+duFUvIjmcLhRIGi0o6dHOJhNeeO2Zoc8YiQhxOv6hyODksO+rTEWiW8nPexSjKDr/gRS0xYTh5GlJW0rqB8KPrnuFrtBPZrWb257yPwj3h/Dn9eGoGV4xaYIPuBlZbg4U8eeXUjmjKjnJTysAGD12Hlv5pQhnUpJa8OYp6IZq0lv2oj7wIsLnURKSB+yt0EW5FVsaAwQ2pqo7B70eCqhTVKbIUWDajQotIf+e21tbkqtCis0DVSoXxWhRYNqlA+oEK5rdC1pkLDVnKSQZIz7CRnJ0vOECRHLuhwvkMu9ekDUg/51FStrsn5fGzpcOruXFNRd16yXaksk+12DNXzLpSJh8IoQYfiL7LxO5baZDSojh1XymmuY4Y6UlzzDBGXNJurpNn8tCWdUGb19wIupjqBQjRCgmJmvGasZNzmPv7IyeRsGVr3g5YkaQ2aNaIBs0aLK6XjkHRzrjo1B1PtqypdiQrKY/1UYxMUN9TdsWnxZ2PFn9HWJb+ORanTM7pRp5ZVCJSNv6mIO8eliSiUiFcaqcmN5CtiOLeZL2c2qLjr+gXFpF5wLiLIutKsesSDHxmt6zpxj77i6nHN+a5zF/avv/rk+CSQ/XWdELRi0bT3yTv1kGw9IJvqhKlJwnNnJUwzrMamabyIQEJKn3JjS9106gufmGsEfqvuXXdfKGqQh2KVZTvr1J0IJfF66COnlC+E/nc5QXK41Ms67P6KuEUvN/yhnAOwwDR7JI0FLHCu5d7oQba1Rufb1hoNtrVQ5IEoDlRA+SbImThEe9vgI1hvBaE61oede0vAkxn6f+q1OAn/6qrijyr+RAi6lzoYJlKoDbTOb+IIHbM7JnQyZx/O8DtFvy5JXZX/6jZJTZJotaan2GaoeAm3RCOTD71EqzfAwkxiJELaBNdtcJyJoYn4IvfGmPkwJfSzClDhXJhYit8yq75TJpY7SjL6d13lM7FyPunkPIacL+9jTErNhZ8Qe9y3ZFr+i2yzJGJeYy1tpuA0LwagG8mlAQnOipyhOhFaM4+iTFKFh31jcllfCmc2uraHPpe99Vexe4v+nl+PmTi7NY6jcyJ6Vs68oRgRcvuvoKPpyOLMflj5pL734Mvh/oPIXD8RJjO/MdhimpCX8kaj8/NzMcctkwRC6wl5PdHIQF1kY3EpP2IJA2Oi+tDtdaLrRjIgWErI8O0EtJvk2K9Tnjo6xwmRRkC/sbYfm5I219jC9lv/DsXF+whn68Y5/XiLedu4AQLx2b7kmhIfTxf21qIkAqLOyw0Wm5pOIFx4OfLm/zVY5rmz7g388bCD8nM0HsTFp34xXHwq4GLkONc3jU7MWwjrYmZdBL65ss7LrE/GEeauFxCrcmHVEfOxaon/aNKd6jmQzMUB7TmgzfCehFxwip+Q2kSkmCoKTjHHhSEJ0wUZk5GCZaKwTYoiNE1G0uCSnetBa/oRLBulajIv1OQU9AlQihx+5r5TUAIpjGIngGD924lxdlccC1LxC5qFLyQuyRCZyBBZ5lg6i2OpRkQaOH9BLNOpG0TBva+pLDZI07igHfHJtj/d7kWF7rFSsLKXaHPgJbdgjxIFeGQUpU5w1yzH48Gj+xq9Bs3sTQrjh2xbvTZe29ft/GrzPLA8QZ+8JM57HZ30+I35/L3Qwsk3pIew3zOsMz18YoxXgHJy0t3mRXoIP4v1Ynw/TC/Sh+F7rbeEing45Xb4WO8IfYQp4pLh7P2qIVUxVZu/StBCRlCokV5KmdYxQo5h24lq0tRpPony4XuT6lTTLcobNcl77YJqnOHV/DdTdTqozjaqRU0PYX9I94blZnWuc8lqOPuvcby2fo7y5cldeaQcTcmH3l3d9KM9MZUl1fXxXkN2vEwhmuZji0rXWk9t3N7SgxKVEarrcHZKLFwtFM0Uy4rJjfdSRs7+VisNLD9IZ6E4U8rfsGc42yTtJv9Fvt1qVE4FAV7Zi3RkH2KWolOZQamgQmPuAHoQiNYtzyMUuWHK0ZRyQDYgIlR0cBTvIGVn9zqUS5dodMcgCoY7tN/xZhXPOkj3j35Nf/xCvr79QftGR1RsuErOR5vs++GXxJew75ufFJ+ovCrfxMz1x73ZCUrNvrqOVsJzmzSkadYQ38fJYp/sTxzC68wbX1E7vsjJYtCMFs1+Ei4lk0UXGOAC3v67OwE4AdbP693Dc+YDfnbenSxaz/Gz7D8pcKT6kkohhQJK+bgFwyuBiOcOyfrZ22BP5Gvt35fInla+lXfXZjfz1A/PLzUzgLIms5MNvJoAhwvVqNg0IO5mirvCxF3ho/788gr3cPRDY742UbWPevMAqjvffnKcm6i5j3rlVyd81Eii3ktRuRV89amitvq/DmYpt8fwp90a0uybTsAlrU6GU6vsDPN2MXAf7JMXEGw5TRqKo7gWZ4XKD9xIn7CxUooEawywIrLGRdlLIGwSZUqiKH/LHWYym2DZhMgPgz/RgGyNZWFPFbX8sk0sD6fjNA8h++5OzN6NHPyYtNNfYMRHfL2dv6p8wwdNjmRr05KHbu6I8UjjGwlgr2mI8Km1FE4WTRr1MESvM1U0b67omrvVnVCiK0yLq/z7N3KNrnhWUfC/wKOVICVvX6zS2aZV0qVkXQ87lulr40KumLh3ZfbL/WfEfI3pLLhAxVnWbJqn1VmvgkNWllPP4ib0jcbu47qSb2vJty3woXJhzre8d3bOWcCkzYZJYkknrbG92VEeZ30rg2IhFKX6UotO6Z5VqGj+k8vEXs7XIJcKuOvRUNzZ0gdXQzePW4kXXcQUhgj9/Q2yI7W9NUa+L7xPBAo1KwWYBcV04sqafwOfRPHCB18S05TYpaLCmKQHMoFuv2qTpHK06QvDbbwPcYu1+RQihM14yfVh4fOrmQAoyWMXZhh9Vplx9Di0kTgm4l5afbVPDiXlTk7qxMGQwM9DatF5EoqaITQTdD5SHQc27sVPzNW47vXKSx/ZAOlPi3HaK75a9kFBRaf5R+DFIB2Zd8jZ4HHKiYaZHJL8yr9F1vba5UMY/3MKWnAT1GY1wSHVnwgPrP1PH59TtDYbw6n8nuvEYQbQmdPyD19pel+R83ay1UIB63DXG3FwAi4bEPq3nRh1RE9+JPNS1hQpYyJJiQjFa7OA/eP7WcC2triCFJo/hBCtsNx+ufb4Hnc/uUEG4MMNezATCGsoMBnDdeUt6xElId8ramLgqhM5guN2uP4fzO2nOjETWbwcqZ75wLmh7H7ifCEOnJR7auWa09j/4DOKUQ2m+2NYJuwaJR/9To9yDtMXn8clwFb9y205ZaRAKW/ksYIZmToOErGbXPimUvjNLnxzKXybC58qhd/iwq8LwpOglfoJjlWe4otncdhOsbSTXWztvDb2041tWIkDfdsnxVDomXTPh9YPaOEPXD6ghdnAJSrz+LP7TfnRzMW0HivTufZr6wZyKqbH4M4NEt5FCSMkLPBtw20XDEilivsUZw74m9ZsNrPUxsU3PnjugAo99vj5g0XmOCTEvS7QeMjQ2Pqx8QE0Hn1sIA00F8cHEM+18VihwkTXXDdYVjEm+IxnJGOCGBhU+PvmLvyMp7HX0LjhukGFv/yxOWns9TT2GRp3bR9E4zNz09jnaTxiaHzrvEF1mRpUF7maqTnZU5evk7acviYOhWLPrQOEQjg+blLcixQp56XHONGH7x+fI9G3P2dYtvG6UjYT6wdl4822s5uAOIVZgocKa4t73bUxVv9KXtvlfxK7ByBhzRMQSXQ50VNBxA7mnz3fOO68euDkLvMGBWXiIE2Rvuy+zqR6BooL/b7/GvN7lSR5cGcyhlUka5a9yJ1J9mMpa1yem1SB6KZsF4OGV2d1zSuvIDlYrwWN65ri7Nd0BG1W6r+xxWpujT6PcSQC2Zd4poE2AGymw25oqqKuwoeh7QT8I76H3n4C/Sfu3c9QPPpHfA9OJyfgH9vI2Vciv8DSzoL4xReKtdSLn5UjPQxrM+rMfr0Yn6I7ClCmU2sHaWZ+kkVsK6W8ZryCzejForOOa7pyr3Z/whpyglZ8R0EAGnhXOdepRRp6Yp07sDxvMyiI6dqEQjJ2NuEy0W/kJ8uLpFA6zS9b58ZfFcS5eHYcoXlB5IpiylFz5djwL1IOU4hypUycnz7JhONS5kmhbR/4UxXJzVeWJ5FVXoX8AUkV/eKmb7TaChw+9CMWOLiT/PNQUdlkpicn4apQTu50lH8d37MblYoHAtoJstdaeR1TLPOp/8JcFTBNjV6UIVPkB1GnX9llz9eDbD/17feeS4LVbaJjji9LKPKZFWvaS1DAYwU8fK0UuYJC93vz71+4veLNsdmHMKrT26neJ9BPQC0bQf+dQFFPjOG8UJxNeWjxb6NBKH8Fiq8Co2DXPUW9MeoES7OSL0alEAi+MPx9c4RPvOs8Fx5iu6x/z0Q4YO7YZG/amAtNwZrjA3vWB1GlfQW/4UqMgybWDZjAS1ypsCQD7ysceIE2zj3vfmE0jo6z29GdSvsG2L6ozglYlPDLXoLkw7NHzJc9Mh2Rt0RAR8sRO0ERYhly7R4AWhlDOojWYiaa9JSLpbCZZCA5azzcIyKo/OhGWYhKxCxLa8X1K/DvZJw1Bd2glbUFIBzOTzXrvHm6RvD0ZSN/IhtVa/rqRHLIMfg4frEhleHf6WzqZPpH4k5lsv/Vj25ZcyL78qduLF0v2zmu+ooPonDkT5EoAJzBvDCOST+TO+gI2EVxgTl/AlxoTB6Y5Nu94wrB7paeXY0aFeqJpoOtlOjOL8Z2B2gKt3shvFhsLuKVqtstaLNO/MZClMs3urcclsG/e0C4XFZ8zC+JhRu774BbiD54B0ZZ207/L7XTmjtlG/Jahs5P+nWWGtkxorToRkC2p7c8/M4ewlLd4N+6rlMzAaRQZXDmGMDheFAJhlmdK/9GLFrvV/Ch8P0mzfPw4Qm7DKz992AP0r2p3zIcbMs5FBYDtMMLwIk6g142uxELIGQs0vVX1P4VfilkCRb9E6wI4QLeUQK6vfvuBCEI64gOB1KIfhxF7sVivKVtiWw5IRu6fcs5hOA6TsXTdYaQi/A7be4QHmj3msIEfv2izX0vBvqr0m3enIdvpWQhpKfRuJE0XKRbb0W76YyczVUre1mG44hVvQiVxf4ozkVgK9iSO1u2LdDoL4n/PXUKLhj2NrhZlGsWZZpFPc9mEaGRHLFA49tg/XgMbcRhaDN4d6PGEdW4lEyutqCK/DutdIKas5Qgotkwa1PgIcq6aBYfElUaH8db0n0wcZwfq+G1QhEDYpBLVKEkip/wEs1oJC/RSgZM+aHI2CDCD9sevaXXwFC9CgH8sk1RE8jjGBxrAFYl0hm/E9Gh4C7xL4ll/OkK5U5vSCe9YR0D/1jnkN8hqaoeNpDCDpVa1xmhGLpKzq3bkqPBdqHQ3lGmOzqlnHSCBInuIryrM+JLL0OCTGqQ6QQ/xAkpVYzSyD0NyqYjpYEkoTxq4eVBXUmN0h1875jsOd/fqh3q2Jjd0E3N0dmaASdWwp5exL/TSS8OR3ctUw4wWpTg2fu5IzFzRiJzSGkAlFmiOp1AOMtzRiJzRjLXnCF3udy0kQbTRvoLmjZMJWNTLpnbVdEZK1T+OSw5MeS616w7/fS4aAT3/iNVizMZnRBMHfAoKM7owim5cRyNET1cPEo/ZjLl8DhjIvzoiSUUo45cFpBvkAtDd/qyuKkb9M9/JY/LSVSSXKeIEpvQPJtdAAWY8DrKwUwVjIHU1EBogSr9IM4vaU7N/JTaq4va2XR8EA4kWOo5Diyzrd8kCUAdvURiPKHkONnlFs+fxW4hx3X4tMXZzK1I6gx2KtNgYqWUYgSPIEwpv92Lvl1jopanEnAUt51yZFAOJGhKCBvw15kgihYN1hSiOTSFJlg/l57QKukJmNCqeoJUVVQEuQ2JruP7WyoXrqVGtkLaNps0om29TtOIYxpzUkkjJOOMRRDFmogggxBRPqKAa0m/geeXYmgy3FWXsKhJ61FKo7bUeapLjdrS4JkuNWpLwmqLTqG0tM3UkYE8C3Z+K2YnEVqbzlJLdEaaRVs0i5Q1iw5+SbNomNkoCjSLOvourECgWdQxz9bhW9lroMxCnzWLjqhmHd02mgU5I9EsIt1eBRx/NL1oFW3RKnxhkTR1igU8POc3MOdHMucjDFWBl9Wlxpj00SqX0DHzCrMkdY6mTqjUohrI77TiT1SvWLoORKBCE/KaVfkfZSLCkJ/nrk50VKBQZBWNAhxIS/fZ0+w9USyrFB2J+iWqV2K2KTokhwiHW0vPVVIX3n+A6csrFXohp6REMqaQtPb9s3p/LFqiSK905RoPm4gqAgzUSTm5YpsKtJLSMVpehc0kep60fEqErMRn3MlE1/PaZQKVMTEqI7xQED0Cv4/kFcXsZ3iuwJ0zyyqwZRaBMiKbgUpONT9+gcCTUyTyYyE5jRBzbBXsR960fgKTJP7FJtSZy8eEtI1vfHfD5+zUOl1LiVJ0faz3bpEjaIlEhmIyh5e/91X+EXPwVj3qg+1Zayy/B5nh5aWrIhUPxqcIs3eGJHLSGPNB0e1PhzsJOjYngsVaC9CCnKcTFB6MJGfmR9sHFcJ5nZ3v4wU2ujW2Fq62hgqDI/+QI5umffaKiypWP96kZ4cdujjpgenEKCFd7gzRXLSraC/vVoN20qo2PmZnzZn6mCs6LBdQPyKzy9ZRobmPfDQWP4g+2OIn3It7GkI6kDnKMCcC16vMiRxzxN5o1zUxcD52sq6BlyTX8vYFwuX9Q0EIXDjD1EEYptXwIE7Mm0TKKePcStmM/XL0C6i+6AY85B1S/bTb8tp+UXUPzVW+Hw2oix1VMkGh50lbesX9dyRcQfnZFzvN+dDbC41C1cIMU4TnIRdfNru0rhFgcdMSY9Fr4yzDh7XyoWmWGHBAabKOzXCIpgAHz/TZ0c7u7Yl2XxVrMabzF7HpQTyYaWUdZLBBxE48RgYRhbWV7EXGIcRoiUoTNdahGs8wZj3ztTBFkFxWBdrur82Rvs9loJ46BTpNM79my41DCPnoFFUK+FRY2ieM5yiz3bfjWhkLa7zfv5yMGqQV+eNOcuemFa3iaRp7+7hy0eB+VPHrm+ocZZ9b3f60ezpXFnbXyLirToazZKb2J+Fcwf0QnyXffmJzvrqfhikwRpJWy9u5u+3OblpWfCMsCmjqerpmGhd3uwQtl1wniUsgdnUqb5DGp6gj6OdhOtZfooWCTvIrrjaPzKJadigDQ/Ib8MVL9RXSz/IPXYUYaCypenYYN9aL/5ZEmn6poe9vZsfWSgZWJWsqeClWLTsN1GV0MqOrzKYYf0vGJPhkBoftTcNAChGbQPtID74ND7Lbqs4TyRzzRKLjcJ6IvUlognkiHjhPyMeDWobqxM8TG+Z4ewmnnSTDgJOSw0HclVbOgOnWb5XOmr+yyZ8aSczA7FX8SfHokxhfTOzybPVf5pw7cVxM4LQogqdfC6lLmTz1HbOor5c6Vpvcn5Ge3kvFRp0LqytwFTo1jZ3xV5w5+prpcvZCzsQP2/n1VEMxwt/+doPs35LfPQJr8vZexH5yoT/IIZscsVVN+rKhmmEPlznriFdGnGGWE2CA0arlmtgdOGxtOue2ZnaFNIkfQaRRBDYnqXZnNA76aaK528bQ4jCM9WKn1HMinY4BjCDSqd1ISymUKOJcwareEpMHHenvyBGF8CuOzdXSpa50dZCslC6V0qXzlA6JdN2Urm5LV0fp6uXSpTISXY+SIbewZPWqGhzJB38wB8sxfzAna4I5DubiOQ7m4gEHczIsxeVjt08MPnazYJBXhMdtDi1ak1OiyurkO3BidfIgHeXycCETYrxoI8hwM8XuWrU8QRWvvkOrl0YjH7vm2pPjJgNKWP5knwDrgva4c701ltpocQ1w+X1WjEKzXhYt4kBUONTXnoqMvnb3j8cH6WtZGPk1Ju6nnhmo2+HboGKJBnIc99PjqDn6sY7u4HXqNfi3BnWA7Vy/y633x0qtkQmUvknD5d/Dl6ultU5772nXWPvG357qR5dZT/EnPGXexDCeBfJ+Z08UNsHQr4k5eJYtNYfp6Cu1s+98zbv/6fapxz+z/dXXZP8/e28Cb0lR3Y/f6uXevrf73tczDDowCNWXUQcYZFRkWCTQBlnEBfd9yY5vSOIgZFVmgGF1G5FNQRk2RSSKLIL7BM0vLlnGNcYVf2KCWZQYF36R6L++51vV1X1v38eb50TzzyfzlNtdXXXqVNWpU6dOnTrnmv+hVCh3D3bMIsR8YUJc2STEwziQBlwR8k6kYxcLjqsO0oG9LbXjdJ7NO7b5Jc9Bv+of7/aP9/jHe/3jv/jH+5J0d3m0/D2x1N5Iva9KfWxl7k89gxgcmuB6Wkzrg/I/34Ixk7jrHYr+ZP+SD/Vt1c33iyfeL594v3LifdvE+3XNd4NJutLNl2vsluoQPLIXKRv55n/IP273jx9P0muUUjVT/oFltwNtDK9W6wHOKzVOm6DzGUBBtlIPoHRbYX6iwzu5HoD1j8xPcITKzA/1QXpgeDltZwrlXl/HMxTd2Kh95qfnTBFxqgfe46lK/w1GCNBZoKy30aetGwnovbTI1jbZpOyQunHVfbVsNiqrT++UJ+isD7xTHr57pzzVu1bVF+jW6AeXllKSln8KVeWfvsSr+KrUIvAo6SD/PNKo26DdEPTSkwZ1aW0IP5Gk/yfgxq2VwfC2iEF3Rf6dG6pzgWAGxwlmcJyg3SDFTQBydiXteuC+BmdXjrN74+f3VMbJ90V1o+Wbq/T7G+nvrdJ/0Ei/pUp/oJF+a5W+Oa6n31alb3Hpc970PU2v9/3o7Xh+If24qy3DS2oVlm4qTgA3tHbT01WAuRb5nrJXJthTtNEbw5GsUzgjfpQOwBQsJXfKbF58PdAbxG83tgDBlEUe1KMksZCx7DvetfKbGVlDhzUJIn8LUC2UeLPwXOKJgTI3IX1FHfsFXOX1ctcOB0ymHBb1BFRdlUa1T9i+5cgzXmWYbH4RMksEx7mzsb3lTsjpAvDM5WGiSezvDJf2PvkWINip4+fU/V/drNiFawLM+XOUDpwq49WdoKHsskzucqftml2cipd6ScWSVu80lz5Y2TTduoAStR2flIfDtSaPlUQYPJ5GlT0ZIipXYdVg7XbbQRLR+t7xvwojKnuXhNG8Um5uKJ41hCcOSZMXXSK4lbm9gReZGl81Zx0QZRC6sC5G2PDoEFoPWroJV41gwsyckZ804SbqwMst2fw4rEw7Isy8jkUz0zy6ddY+ARINODG/Cu1LzTBOVKvRPJZFWqS6dWZHkj7c6QfNS9OlErbhl9ibrXta29J3IGOy4c5jLvniI+5NH7XMiMZ9CM34BNktkZlT7vhhZ55Pn8fTMYYVYN1bgQ1imTX7ip0UOXVAaORQVSjUf4h5YnJSdtKjgKgvHdrSIUuHLE3reunekDb0oSv/ZNu1tGFELZVh+xrWG7l9SUT9fwIEnBki0DyVvacDUR5CHl7JWUWRtfwjvKVD+22tvD1OKVutjenDdI3QDc7LNudnGeFZVNEVjIPbYSDdw1jdDsOP7AqovlePTZ6ncr2DkKcKUEg6b6+talXlNOZ0UCbXN1NqYjOlpjdTUkWkO6yigyqEqA2sbafr6I5r0heoCPNI1ZBaI0JdiRvs93yeMdZxEY+uykMNZLQ0SQ6+XaAHkjJMgWhJotD9AGkAuscDO4f7xyPc49rO492jMSdIUz6W96n59EDZXvL9/ACsuaXVc7bJ6VvdrltuEljVKMW8FeXFYLmrSKiwt+Od2iKkKJnpADHG3N7M3x2Qr7lVYN4uKzhXyaAUpW1gHlbM+yzvs1lSp/8UR03AJ/2AUqFHb6xmHBTe+Nlz2w4K51K5k8K5Qut4d23YTobQzgRTSips0buiLNyIoFOwz1bm5Ra8+IK4yWzg0o63uojxhqBNeWj1s7ZFhX1PrFUHb2Ug1J12YUgVHyTCokp5j8NUZlW2vMMgpiG42tH2CWf/2bxjN8KmecwMsFC9MX/itL8AwQXJLeg8YY3oAF84ZxH4MGKCvyZDF9v+jCCwADU0mWcHSj1Yh4x97ZZLoAu824KxdMnT0CULNgol8+ukQbu2FXNpLd3FNvCj0im/868NBTdvnJSb8i9yCTqY3My1FiKkBenFJFlXfeUq3VifpFw+J/spsgeI3GJiLXGN2YTG0GEhyTXxTSC5TrUrTZ9EVq2ma82atUvdE/iKntVwDirGnrlIUJ7c6OSSPEMJ+DpyPO6jdREexOeCPEDxDczB/9z5vg7ym6nMmmCC4Y2F8qwfNZR39v0KhPVqhXmmbOVdc6a/ArCVhA+t4oSSsuPsWDi07Bq7qCcWz9scwje7h+04l7Qebp8FGPR84JF5iNyt/7yJ1/d5pKonraqdat5zWrqVrLJ12+NWp4h6bdn9UPV+FCJvyJ2H0LwpLEixVnbvB+OGVEtEjaYSAmKZ3LRK7X5TYEJwDaokL53dn2CBct2bXvDzGxjMPjj/VMvB+YyT7kpBd1i41SP7g8HSRtgFYFoJ8VGlT5VpXt0IAcUTaeHPLnJp4lR3GTV3EAfDlHMAKKalog+lfSXkfHMQOtrOckqM6aNttw6lwZWiilGVxiFgBgamJrc0tUCy8lfacGnMXkoTBCqZ5DFoCqGF8qPsqjpt/BPQhiI9dqEi6IF6qdlgDhUVYZk17z2rJ2zeLgotJQeEQeOrOONJn8eGhW5joWxX55+RVRzX9JS7AQTskE/eHOETXTGmBTcjPho756AmfK/FgNW6LSij03T4Siddy2C/Qi7KLYBIyBlJRFhbaLEZVxMR1i0g2DeHKhZg5A80oY08xHEsMGkK2QWIrm0e33pVA7v0mNIzQHiYZe2DlRS6w/LKe4+6BingDHcI1zQFzc6z0eVFTyuTqk4DGSroWhPziow4ShP/5YJOrBlrWMeWpTk07RViwRD/ifLPiTJS7kMwKSl6qLpJJj0irWP0foxH3xEQeyzl+BnToxVwzzZdB8TYNtCkVWbJOvZ6oi6puIu3ZNzFYHSklZmyT6Lz3MMSsg7oYEOHthnpyokvZYdf0nOUihxpgFxbyGMcyZWjeGIoPaVS3Il0uEr6CS2a6ig2UQSBKAvsgMe6a80S/5AxXQOgYG/nKN5rJUIhELFrR2SvTSl5KuJpttQlW+pSo2avW3SrG6TKHZgGS683+vnqvUKhYl+pv8RrKx1z92nJFpXGIMEu79TSiD+u6JSD06MuvNfo+WmDfd0lpbKyaJ4U7tFLN9W390GzQwI7cfz5NPf3dKDSwlfDZkLkugDVsWMmeW/6JrVLETC9tAuQunAXIgWUKPIuDZdXEZXQxRc0pcDoME1rYdNCXt2IbJC5uXSCpFuIWiQDXIsi7dbpVqUpsmCN5+6BbpakRP5ZYfyhkB87JP8Ckig5nKqC2da3HUTWQDRbKLL94Sv9uVENLvoJHZSvfxfESaivz6Z2WMneQndWTUSKXFisWFOJFb/lxBWuZMDGX86lHQqKUj1iRyQk1mNVfgW7YX7ET4A8Cg36GlqTpuUmKo++GaieWJ7m37QslW546qyDNuhWQg7lkrLHOnb3llkn8nTNU9HjbQOgSWRMLixEFQ62K3s8G4gltMh/3NUQaa3XJHZAF7V1sfDMj2MDhdcWuOA28R0nujsPu/Z5U9MRWAi1opub0pTCUsXrdYnuzZdfQbpGZgewDJqtT1AaiCZQzygUM0VSHVN7CYrVCXmqquhSB451pV/qqd60wwk4M5nwSxTL2fsRKsEWw3jBXB/m3uu3FTzK75m7PXEYqEB10CffePU8IvOiF46E/kMLkLVjOcpFp4ZcDb9OD2B76YDKNlzqOkhFhoKfhQKr87tlSnTxovmCoUE+rbumjZYodiiRxNnJaF+MtmvmXK17bTlNd0tOFFjNmxprxR1L0S8jVGk0m+MB54OXOYE73jD1xz02oEgsQuxx6Zde/g2Z4GZ0YOSRoH1HPxnLFfIcbYUQHeb3IJsV4dbue5lBDmTI6yRrRb5Zix6N5gWlNU6oRU8ViSDaXwhHi2GPHdGdZ6Nb4KH9B0/Dksb49rJRXTaqW2tUl42SHVeIq6SoKPd3Ha4/37kU0V07fxodwAYfLA0+2COGjhnwkkX5L9RGJIYaD+zgFf2Ejkczv81T/5TGYYeiXJ9tQCbXAmY7vCNu9GNtJuyheAkcB+26I8Fu+Zdv9K4npT3e4wberLKS1rHetmmzGMfcBnmxTuy2ek/vU3KQ4ryMqR1f8LN2s6Vrp0rd4YmO00+7WK1VnF4TR104Xv8EWvTgxaQ+e37UVaFSYQcbJuc58geba8fL5gN9AVLFQgOHyj0K1hsEXkIf5f8gYvMcw5lzWbNhhNX8hI838+UfaelkpTcufXtOWyWkfxti7/YtGXquIkGzNRCt5RWtCVQQqA7IsKU1uMl6n6grSMZijV5+DimEMMaK+v26ifwHL22etbv0t13Zmo7qWtOvvvms1vSrvtme/4PfaaS7Nhoy+DFWM2y1K98c5b4iw0pKtbSaha8I0lrv/KPMFmVjSXN1Vszl8nCltEu3XbOLwC/lX7Fr9D/7HvuBjXh3lPPl9hd0xsVY0GU/vxj8jBpFpskm3/mSJzmNo2GLI8BIhzA2jPa9/EyZM5U5NO1Z6gB4ePkPgepv0gpCRVCRHgw9IR/gCnNYXcLUIY6JlI6x7htu9lVKAvU/fEUA69481AVJedGm+VFfdbvdoBt2o05a9oquzZmUV5mP3VQlSYJNZQJC6upEwPbMf4tuNkjLxPz00zIzP0laDgqJjD40P9207JufOC1T8xOl5dj8hCkKAsofGbdIBj16T+4brMJ5WfVPMhyczhR0ghD1IVieTqRJg/J+JcU6emAyyu7/VEDDWCYimMYmK8ULzHHsaSByzEGA6DFBdysZJK5JEb+Pvrf+FHlSm999GYYRU7lMJoU0pzsK8v+LXHtSdb+GGzhoJN3hHfVe+AwgqnJrfMU+UbwpgdOUV1tx5b6I8opX5cf2Ik0XAPYVN1Djno7t/C2NptqxG41kTN+WZMzGlmRMxpZkzOmWZLCAluR3fOqctuRr2hF8azuC3/jGBGx0oUl/r5izeTcmjhkj5IpqTCvII7gcqOX3WTrBYDzZvJkfQ0diD337Jah8HHMZwyKWCAbxAstXzPUpwTZ+ddtnVX3WAsyJTjHWc430KrTTR4u+fxxg01a1q0gri9Ai85mG/nHkH+d0YuX9uSLXdWEGCF0ViPhQXoZf2QUc6R28UlwVhUH5ozvI672KcTVXc7fyFXOcDjf1ax/1nB2DJlMRacU4XzTici/pqCCM4h7jts8VI0QLmqva+lvcxFQp95W/Ufv626KMnntXsYyuxZb5ntHL7tTxqmKYxbsSXJZFdXC/8XOC60MCm4OPD/ykWJV6wtOxEf6W80Lcy/+J4muq84K78TWUC6su9WP/6zKOef2dbGH/4Pzgg4UE1xu1fX2t+Wrj4uV6dG3N8GBu4vRpbvL0Sd1RDE1CA65aCAdTw/DaYoQyzVxDPboG36Py7mBeD2FaFenRYeGXguqYJdL5YeEOaBruM1lU+Z+3n0Ohekcwn1/wVlKbzv2Qe/9xt57j7bIBiTCMXa7o9hE3zIB4kzNnGrWB+Nst7SBudiBu9iD8wHgg1rXg5lYg2xyQbQ5IpjwY6rTN5bRGyt0frUaKaSTMVYsYtqEZuGur7t/25mOW/dOBZ775so1Hys23iXMtuMe554aa/72ex/s+hV0M3pR3J+3KYSxN8vDKsQwnhw+NBg2MMbYorcrP3XOWHUcPhO3XudDFLFShZDco4Hf/4I8k8vGL+PIqvlT9fsdrz2/t962u37f6fkf35K3QFwFwswO4uaIG3QEdX25+0QFbOaxZjW9kE3wjexeHC/s5d7znR94WGk4UGk4Vum9Q8zitB3pQo5HDzKVT4qH7ul/78OC0w8NRIpRWJWWii7dqE/P5w+aky5xuc5OfHmYenS/0lN5B4KaNtz9s8xxU+32L/15LP8AQzHiueRXTIIi2yHeO0uaPVqNUKAB7LXZp37wZisAyzN/GdYyXP4u5CunN939003qThFOI/PU4on3fePmhwR8BwsEFl87lQgQvsU5ASSDYJE5cx8GE+fAXJ+gD2H3QOB9SjuFM0noDpJoC2QHD+6dWRZx1xfVHKXtjK1YHC6fD4so3F7ZlRc5rx8UQbEvJ7bT7BhJBpbzTvPrpeoNBFTC3+T3h16VlYFWqJqZO7B7Q2vFyPyMxkQolM7NKVpBJup5WiaNWd16L2cIYfFJQIpEuN6sHlmCffblWt17ywXFu55a6Yzyn82vQfuSjIshn/qBkY6mLP4hcsnrNmXps5+R+htIHEFviUX4h0ZgDXbMf52yXX+5Wz7lrLYFy/cwnJlPeMpmAIGdKzqvbd47npAdSt2bsaJCSRZYYYAQRpkTPyZBh5M63C+VmRZ5EbqT8Clm5QlMyv9Hhu2IpeIVbCTqesCkiXTl+ECkpJuOK5eCpQQyx64waAu+EjfFC/XF3Z94FSrF98jx2yUl27u3wKIJyCWInxAbu3xlt1MZjQBIQGOc7Izuss3DWWTBuelZIaZB0+/B46Od9s12o0Ba6dkg6pjDNrj5dCzTTwi2iMm90aS6qCRKd1FHjRdbGid7Yjll54DHP+kmxh22OGUzM1/tPq770j8acGRpyPb1arV5Ragz6fafVU9i7I5N+g81JcRop2xopKHuvKavzt5jJbD7poXk4v5GHE4Cs5nRwXgkCyB1lJ7/nMrtuBzrJ//mSyi/Elj+Xvo2crjFJVyi1CaqiseyqaPKQXgpTIdvHYcuJAgNHvOafGSjAbzPpLYf7QtPLdLTuQopxgxkUncnqdGSD5hyhTqJm9OgxIvGXvz8P3QlQD+GB4fj0/FCFDq/I7Z4jt3uOF7F77nLX3OWuuctdM1h45HbNkW8O0gO9kNLXNqqLJqxu+6yqz9pvwYE9KFkjPap8ZHKD6843ub2Nqu1tVN/eRtX2Nmpub30Gx26Q5f7vtS67NPcXE5D6ni20e7awvl0T7LuWlrrpmUroBug6fzIW9fKSwOMZOMW5Dso3/bnHE5zZOaAKrNoo/1fArj6snv7g0FEw0Er/T6S60xc9WsY84pizzzDsHcKPAZhnA6SDSHdFtRJVQSe6jip6nioiqj8WoIqeUAVPUFa3fVbVZ+0UcZXOq+u1WKKVKxIM4RroeJwCzhbRyCyaMJ+56zJ3beaa3kLmXPl5o7kIVdAJUjs2CQqVg6bWT9GvGWS2gWXS53xaNjlhvsV5qwi0suTcRaUaJaKpk/vMD3XX7kmMB+pAvGAitzubah42+O4yQLeAQpW1KzalCuVNRJTYekR1AlaWgJWOQTBxRb8R6bfpsfq8SEVyveRFEwbrCeYlHvZyhPg20yJ3WUG7xLdKojz+IyYYP9+sqsA/U6YpQSPFGcMDBWcqaopyVUVSYG1+GshlRTgTEirlrY76ZySuIcCdg6QnIU23Cp7jbH7VUjOS28AoQ6nTFwVWEiHkbsWJ5fKvX9bmCM3fyrJygr+LSrDll/+i1btZmr43Ur3apeagcmHhHEqF4slpMI6OZwx67a1QQtgnVFG37xnQnqnnA0BF5jRArBrqVmXWIoz+kGn224o/TzWRsXzf+y32TGdlth6QcKIDriqBrozSgorj1/MXkQxv/j1MieqDsK664RZtZsAOeKuGGeN58aRKJ50R2kA7CjmZ6NE01rdDeS0/xyEuv3BuTV6Lef6sZSoHhlIap7O0gAAfuBdytcMV1gMTBgGHSDpHSa4zvYoOVxbs0iYq6C2Wh9lezv6rhxpLdeADtLyxq/o1G4xuddkwEg7Qw8C7OGnwz3mz+OJNdFj0uY1BX9lDtAF35bHQVoJd3QDnMXA9r1qpomfXeNPh5W1fO7O+p+mibIf4mzfgnzr8DfQU+N2msFDpHs1FpcC4b3qtyEpnZpPoHge9jwdGRR0PdTo/HmF2DnXm7laNYAVIxMNUpyCJtG79gpIa0OfHQ1SUyHRwxJUiqYcJ0SsTKdk+ISate1IN/O++qDGhXUNZJ5rlDNUS5E9I8M2vxTAF7nrIlRsdz1X8N3UPl61elE6dbwIHrWxQN9B8QBvXVOxZdZ/an57u8yolKQJ2ujz+xEi3nZqansbs7UNArVprMjsAvfIbH4S0a4mm57tkKovus6pMpTCZGqfi/xgidwqssrTesYiL2J/X0XFO49LTzrKzebn63ltgWAdbp5ryRvsNxVejMEZ4hFZ3JwoIVgEICbHRoCLydsvlpuOHCj9yfFl0vWPfrnc2Kl3TpQhhb5z0JnQWvRuLxOssElBUIpOsr5VMg0FphhzTYJyCYmGUEzrK1H3OAAVyEYdN7KA7+9q6cw5Td5Gjj9J9ruUG4CdgCnObSCgsDp40Dsvruk1DJvqijcRtusUoNE9mzwMvuiFtKwOC6Fvzrz7ze0dIrDxJmS0BUUu3jENrnRxiPfDODPtsSV9Mdo73ipI+Rx/wrnqN54uoS0zzua7UHMP0deB5C6rMaB6e1gQZJIbTQkNIocFvNEkfOnQk8UWQRP3CfvqF2Av9272fKSzO0nFdDf/TzrIMRFwkZGX4oNALGJdxIiPTK7d1HYcKbQgC3ZsaHAct0V1bTQ/0b8anu6EiSxZO7PgkNj/Gx5r4M0MAGug6R+CqYu9RpQz52AO1FT7Cgkg1i3ks1/kDGohLbQub2/klOio/wFWhAUoTFBbZpBo2Yj/uV0a9Y8MCTzkkOEUrMENzxeA04Y9svRd7etXlpp6OOFECPIAsEsDRA89QWD/cfjXief70zSAzHWORcjzFdiZXb6wo7M+6KeQAK8iUlXpABhFx/dCm/vw+EBFgePte9HZ1U629B4+R2t534QVTHQioeEzquHpr6EGKWrnIpFpxEVGyiDBn18oksSFgR9Zf5o0Ee48XnSzzXgldSZvdfeZsHJt1xbvtZ+Y4hZBHjpOZR0nPdfwgDKerY8IMdSz8Jq74jSKErqXnLrN7fsPPtFJV4vC+YzU5eNXQ4jFj+gZnzSaTH7EKJvR3NPCRPcJX/unCFtmcKxgnifVdC3bv78vpiEZo/hW94E3gkKDd0Kcf6AeJWaGcLUrNG6dizzcs5rCu/D0GkyskVS9yUSsO2ax4FiF1q5W0vOKShtgeiziiAzxEIqm9iIz1eToQbQU9o5xE8VPUvb2aupeOWPoCJv/mZWx0YP2Xn8ynvTB7naYA1UhuA+zezrxXFhBQpS3QgtoamPf45gRNoSvRvfKWenN6bE6/3pwn6wAyxvFszjGU7ynvwquo5z00XkKlkztGAJ1UJNiV1HwRFqTyf7f7eZkmkGNhUAtbMcv049rq3fWRmm3jKFqFclzXl0HsTcmYfUiYF9TYQI9jo9kY8NG+bYt1V18hBoxnwvyHSxtdGBANsHrCXefh8lPRp5INvFXl7xFRZzAh6gxuLHpe1Oml2paFV3VB69+oGKUA052XRdxZJ9cvdLHncQKT/wBFxPWV376eLPdYm0TPpslus87eN8uGlXuoru8odFP+Y4DGM/bz37rMX+7/6kDGKjaPt/XlEayqayQ07yyyD2JF6vGrwJUiM/I9HyjQyW1sqXLLWmIQbUM79nJNQ9r97h3E3m//aHh1su6ZMoqrv+xOdYSbMawuhjRo98WhI7qUtlonp7pH0cRHIgRrGcwLVgPqwu+zSwP4HW3FOTBf6AeZ512QgMKGHV3Eplm972Uf3kxrZmuDzxALIEkg5elS5vRK6aC+LKU6sdp9b9ka2R75zgfb02E57dMD8MV6Byf0yLKu6tk7b5M9SghCrwQRIleurulNRBgZKvTaOi5G3okHQhpBNB6AAAZMTHmeQ4vF+2VPkbHF68aR7MgyoJFKSEeJKpZgBYw4QBnWz4xuNlJ36cIv1Fh7LI5acBwCR+xoieEawZAmGEDGQDJ49SFbRbwJU/RF6fJ/5XkktDoQAIZ6BLLJ/lTZUA8szdJU/ri2zWJayqU7NDkzOWcoUEUdFDEHVah2aOzyG+lQPjZ2ebRMCnXUUMQoZPQdm6aOmtbYvk3N0tHWr6l0qPRrqjPpGhsjCl1MGCt11wqLxjVukQjYorobukU5DUkydN61sLZX5IVMR0PhHmoziXTVlI9vEfkyFInXt2YCkJoC5FnYTQ5C7iEIzuVaMhUp4e8eDawInokLw49d1PCAmlkAUmY80In5Gxy/SrZuUE9MXvMdDyAV9HD5JinxHbzP7mkM2t6yco5ikZV/IuMuE6f7A55xJpghpiKIwANuyKzCtsUd8jEVrxtRwOYyXCR2NtIwwaDuFcvRvIOnR1V66lnAArWg2NldFbXcZQpgwB5Pq166bSy8R09Qftjuse6gubGYMvPQ8cStihgv417zVkUw61aFuyRdFxadPTyMYSEWhvjMy5iBDpoXLXAnOATPGDM+jA7s3ZyevZvjbnQHZHkW6aDl4oG9ggihy0qDyiPubzogfSIj6B6rv22J/0YEWa3rmZh3EOR93+OGMjxK0lTqJMkJwKEDjFWwCbi1Wt95bTrjN11fE5liDreID83rPFP0Qu00AxOLGwoWC2bcblE6sLdb4vqNT8UbnxiU2N+MwYZr2pMCnV7THQzuMKOz2AuJVrgrIzg0rv1001+1wxgxKDFfOjzn4Eu+sAOH0kB0ORn4eCpL+hu8vUFndXaJtW7wkDn/EQVEPP4/9xjk/0Fg+VffapNCuEP3cDgLnRObHy/3WvEdXkTh8S2PYWl8TIlnaEXA6BAQEF4i7rXGXem8/DvSXyan3zbWhqV8/V+K5x/eQKK/E8lAIZK6mwlnFZ26xDXukR56dJ5Qie4ANWk+UNUrc9Op9jHMgmtF0V3sJFurzm0Lbdv+Rea8QuvQ6UCh2tZ0PX6blTBTYbT0N8MLfk5xy5CclZNZ9yh55G5nLw7wp0QnYXZFkfk5kj9XBbid0iNW+XcFoT5E3D62Rx6UptHGgEfIQQJYg/IDuDuddVPuS3iiXOvGOLWJUWGkNADEe1IegDu9ZxQ9uR+Yvxu7mdo68dV319dMb4Y6wEmEQOdGRow3Ehq+dPPvU+fSR8YZspCSw2SlB1YSyqKUepaoflBuBY1BdV7eCYPQNNY2pGcaInjXGkIhZnENIdbgoHJAoFOdVC0i+r0Z6A8E/YHuOfSD1I2Srp3u9zv9WePR+y8dj53re0s0g0kkBcXV3Bo16RIwTuZpiIyTu9YKGJoveFzNx/yHPFjzgpnbfg/KC99eW0sG2B9TPzGguO/33qroZRHkKMVIlD175NNDSzAxcaYjLUPOcMLs1RQrv/+PdT06D/PFHVD52XdAysZ92VCn3Pr3uSMaePWIY5T3nk4m60N0e7NGTON/+veGlWXIMtaIjuJv5C/uxuTp1pGun0dwBSx3iHVQn1ULhVNCLlkSfyIQUbnPG9RDGbE5E25Ty5v/PJrPf9gE9VO8elDMrFzmH+ErdyQJ8fMKi4QKC1it9efRELJ6t6Gsa4srqojs5rdHTcNgYvOrdLdtk0s2i7PKxDDF7kYe8x+G+3sMbzkYKiaI4dn/paAUMcZx0edNa6GELq9WwrpINi8rzE+/Jsoa8P/4fr8HSZvXFIDw67ZsmSDn6rIz3ro1WdtdDz/ZXTVHnzlNjGpoYjyVWelO2Qt5FNXMck6rSBhT+iyUOBtZLp/IQunVZ6HZcDMPb+018vxgMFbI5QJS4QKwt7CfxpZX/DwMlrqjUQ8le5+HhuXNLLz718jyCWThXYUQ+lkn4swJQxaN8xq7JZI+5tXKiat80LMmWlm5ARmws3P2b1iFODyeHSisFQRXBYGFao7M8kX07d/50uk8wNTiZpDe2oYufp+9ePsAHc1Llr8FR2vuqPKf4ntKUe9Lp+sgvayrBnWpTjUUT0FNJsv/DmUbevT8S/50V6xwvvF3F0ztBOXD9S0fQLIuUAj26jyvgmK50rQrHZOBd8v33CI6OyV8PHCwqdy0p5iNre/FrkaX159ccuth9UlmR31YeKhrL2tcJzh/5ausEZw7nKgQCxEJAZZEVaXv+2Jb+0FvZdSwE4q9ngYJUrPXs69haMTVNaxCa2tafuISYtXg/LHocWv2PWSPRQyjD19rUtUagwANtwBzMk9gTqrhGmJs6J86XlW3kxET4VthmjE1mID35HHsjYfoAMa3tzqLjmW09n3LmWwcMrhTFd7fCXUgp422sULgtoff+2H0MEpJGNG0IppEK1oq8ryKhox60Oyh+lFjgjOTIq7bsyg/59O3KYmyWH7pzmjeedXCX0hHDRLEvHyVW4ECXR1cQUEQlCjUHI8d26P5ilC++M/+tgJFD4OzASvuiWomKBhxfJK6NJ5S+omArW578BnuNseKCuJHqa7lp+X19UBi/njeihph+c/310QN734fo+EorXlsv7vb2rKqg1TXwE4/mahzlMWsCEsN2DraYHo6dr4wNMNFo4KV9vyY49ml35ccbysgkUNhyNjzse6bbFybh2CZ1J8PSiy2A51uLDLCGJqUEe7nbSzmdFbkeq5YpnO97NhieamK3fRyvdvGwgDSKyg4CJjdTaGH6N31QzYWDzVjvVKvLPYwWR5qshCXPU3qKr2q2EPviTQptJfeC1LBw1jv3npv/TC4DVpZ7KMfpvc5rdBa631OLwpTdKyLYl89LlbrffXq44qH64cXe6R6j+IRBqVH6kfoR24s1pj61lT17Wfavr/eT+8/XxygY30AukgqXWtKHKjX6gPni0eZD49CF0r9B5kP6/RBet188Wjz4dGmi2G3R3CPMcAfUyH+WP1YIH6wQfVx+mD9uNOKQ/Qh+nGnF+v1emQSeIcaIIdCDyJFDjNvh5lZhg4DwMPLqDhCH148Xh9RHKkfr498WvErpp1HGSSO1r+ij95YlPqo4gmm2tJCTIpf1b+KqX5MeeZZW5LiifoY/cQNxbH8dpw+Dt+ON80+QR+vT3hl8SR9rH7SxuLEcrPJ/kfFk/WJ+skbi6eYSp6qn1I8TT+1OEk/TZ90XPF0U+YZ+un6Ga8snqmfWTwh1U8onmXweLZ+ln72xuI5BofnVDg8Vz8X9UgI7Kx4vn6+fh6oXNr0AtOmF+oX6BduKF6kY/0i9LkUerH58BL9Yv2S+eKl5sNLTT+w/MvMh1/TL9O/Nl/8uvnw66a70Of8+Bsm5TdA6ALjN83bb5rBSlPXhb9lmvLb+reL3zEI/lY1NifrkzE2L+cgzOt5/XIS1Qb9cr3htOIUfYrecHrxu6bw7+nfLX5f/17xCv37+hXHFRv1xuJ3Uv07xamm8a/Up+pXbixOM7BPq4jqdNNTf6BP138wX/yhQecPK6L6I1Pij/Uf6T+eL/7EfPiTiqj+1Hx4lf5T/ar54tXmw6stUfHjGQaHTfoMvckgaJM226DaZyptHs9UG4qzFKs4W+mzrX6t2KK0Sd5imOM5qtTFuSaLPte8naf0ecoyiXPUXHp1oPZ+cE4CFqKkKdQUS3Vd4iEmPfklstIkdD+VcXT6zDDQffCPIkPg8mMN81AV8+AtMXSeFLBMaZleZluxXOd6+bzhKLHejf3CjLZPd+ebcJX54qEsvZK17sFve2rDTjYYvvJQvVKvys8Slr+XXqH3mgdX0Q8zYFPLXUzz9zFJ+8yDrdjm7z1XRXKlDYW7hLPG3fm5KfKrxFZV9yeWN7bxkE2m/+iUtUtHKipKkiSWc+W7zKYnML+fxubH/H7O/Ma6K65ouub3n236D+BphRrdl8EUyKnwL8O2hjfi7L2DLEmdot/nu+Bymy+vsvVsNt0GTlfZujbbulq26xy0dVW22GY7upZti8u23SMX2Xwn1fJ919W6w+cLbb5X1PJd5eDd5/MFKXpWFV1m3yIXcUXr4Mud91VbbrOqyikLv1PL9x2Lh82TVv6lrN8g5JVo55dWu+vYvH4Ur6nc0vQuqv6oLcjK1FUX665wrPCzcowDb0xC5zfeUIfZFeuAgU3KxBmECZ7+oklYd3L4ahVUXs3hU0zxUW6TlS+eHwflXiciWRvd6+veZXzWb6yi75dbDHHCxZ0N3veRV7tX8/J1EKL5fUPA37fa3w/h115KN7+zazfR3V49b3BIWX3ntPKjK1G3DsqPGRjWbzAiKwROfVt+PEC/87IT3s/YWL474FAEVoV1JUXsKV+EQXng4R36Z6w5LbGaNfoJDOgRSCvWQOGXOgs8+6ryb1CCxJjj9W6+ygvlZGi40/TGnko3UYtPky1VYgsi4EWI73IDQVNuqMouACR3ZJ6fh7ch0s+XJ8Uj3lj3CpyFoQRSch4GB/lrkAu2u9OfXstPqYUw5QFWFElJ/ilaPoieaAueKzVh/jpq8QJrV8ZNzWqZOHhaA81jjNb1GlaqPYGsLOQ+nEuKkYV5uPx2+/CmO+VBsSbK+uPBKrGIv+ztZzHTubxOZZLF3l62aePh5M4P6OGNhIh7Nj2gmDHSFr0WBvk7gcw4sXrXwBxnIodOKu+ZtTuTse+Ca1BMRzVUopT2gF3dxYTtcsKKYYMe6t4qd3YB4zoUZi/yAKXnTcd0mr9ePkRSndyC88NX3hTwNRLbOoHzSTtQkTg5BBBZllcTXF9HrsMxlM0TLWDnzZZU/gnSnO5jPe5jhYvlidtbDCcp1FMf6i0SAdBFVjg0sjfVNHLK02r8opVBfoNVADO9SoitZTouahIImyi56rQwlM6qnhPOokTq4+a922xiG3nHU1n6OpRegho+PX8vNdrkTRy9obQ/KziqIozyhjd+xFAAhx0n0MG8PRLL38CJhmeYOfVtwoD7OW39h3E6pmQ0aG6RSWtwm11oJmH7uVeVuxeMdIhlnDkGC+ToaAPH9vLIvGX2jUYPIyxh3+I1lPI7YHkpxDFoXXOmm1Ts7uxHndJsa7wMxNEdeqMAC2xMOaWjc/N7nLeNz833ZdWwYnLdZbP9511QeRZd87j9e1vwmJeqmIM4kJcftSlZBWg5KKX8pqCc29/l5ZW3nMOSplnU+zPXsS6Xx6RrN+PLTF76qv3St86sW5kscwrDOBUo/0wo/HXNefDGECU2Rvw9GQBYUkb8JaAqV1oGxVzqLIgslFQvA4JkCDKd8630rmn4AKnMo0FuMF5uP3X1cq4/4U3rw5Ua41UsA2MHnGX0+2q6AHNmGUXCqIV7GXRNmYgci+phnZPOiJXQlLIrQtfkHgLwCPB1S+6okTvSGXJHzJ0Wy0JDJOMuSGuZIS3UbLClSnG8DGxHmhHpZdaNfleshODHYq4Mjl2Vv1G6YBGFMDkXlXXkMoxqGUYNWH0LaxFZJ7rDFPD9gdFZg7FBX/jUDlM7XGDl8kEJJbJVYZcoJ+tfVoysL+VRM1ABiJjyg7BjcPwRKEfwEU5MTkSZgWxw3Gtd8/ERmFLiMAi7BN1lY7vkxyO2OdVKmkMk4VI4L0b/DRFcbRAkI1vwz3t8fvH8aDhcHg2WL18equXB8pgH05SS+8tHfKWUnC5PZDv3dW7fRErG+1sDbuM+ZETJZTKubk/yUYhAGGJGpbEWijqyskrXyypzuuvklDnJZFgyqGCU5Wkd5L0XbZkEia+EmxP4RZzO2Vyj5G13Lr7kqFHykz85c9Elh42SP/zc2YsumTVK/tvlmxddMm2UvPiSxZcceDuALnOZcawO7uvhbDuVIHujDN0ysTGcWIhAlLddUjvn9uCH/t7PkIt5yss+I6dx71oJlKem3BCBUohqzYH1SnoQ4KS4Dp9ZBAmj/F1MwOtoSjhaNnlLvDvVBgO0/Jtra+eoI+rHU7YihaomZWMSHctFT7apIzXGetl0g1JZ+z5IzLg6GbUQWrKsWp26elm1Oo2yPnaj6xqbPbR6oLt0p9I1+zZUKa9GTGbI2fVhom17DORrvinnld8gSJ2JKwcuBPbq17KdIu2kQWbnXrn4kr1Gybu+tvhJ0W2U/OedqDNulDzzp4svGTVKfvfSxZcMGyV33Ng6EWUCcTua15ghVtqQdGBpeDRJsC3BZUYotLC4Q9SCtHFH9hpWCZn5OxRAfbAdZnR4Ics/S5ZlFPfEatPJzOmMypc1Kldps+2jibYXyzhbPfdxStP5UjVureHD9bKTHrqZ3tZLw2bCJCuQtXox87DCmzJfankQGRA4grTbFKScDpqw3yiWdqWZtIbXqX1ZLbypEh1TK9emlF2lpLYXhnRvcpNisEupj0jbWFzs74zodC4tlYt8+JGe6m5iXIS4buTWpRbGRpeqb+TGru5E6uY9fC/gQJdlvU57qaa1HJYnbv68gONMXyFKFX1v7bAAOt1i4HtF3GWPB6ghQa8MdJe9Mkibdet+e9WZarQFJTPVbMvSK22psuhWGxjFgVZCIml19wai8IRvgQVFN2gazbzuJd1IDcy/OBTh7GNGCOvDmfkXzuNimri92Jffew5Tei7lTbfYlK5L+TuXJ3YpX3MpkUv5zE02JXQpDzg4gUu57kO2duVS3mB+uBb2dNczRWkMUmPep/RBIBK2lk0SLWtXoqIkwo6UqUuSEnt60J8o75ILNQVa9rjQ5Lakc7GmseG5QgJKR9R+Q4T3Gi0ZA87xvjXCqG0JMYWBPMyaI5LWYHJa6EQ2hdNRjqYVPQOJPVRtmgO7Mw5Q1O6WoZy1DnPkU3pQs8QlKFHPjxTCQMkgPVe1xdpHdOkGVfqT/rDUdmz/4X0Yfx14p1Bh/tVqnx1ONK40yvPyjQYI9X2Tse6fC7lsSvgBv6mYme5QCuo4safDlJX0b5f7Dwk/rDFw/7Dpza47FaegvEn0Xzg10AE24eIEBt7yVtlLWGXXL+WRJQUGwqbZhZ72bhCk96Bf0fFc/Gj5VK18ATqoegsnuQAvItSniw7xdvalTqLQyi2EbXQULBz/CwCmRWKeUniR1S6VsZxTjuNqqVQ6dktl+qNY9afPgjxjj+iufQcjCvH6CMILBScyMK7VJNIhS1RT748Du/GNQV+SQo2s3VgkpSoCe5nRKrgi+1gE1FUk4hjsYinrNBVUUluG5S+YBPDx/zkbQ5jpoeDk7piEPhQqAz87u/g1YlrXNylNbWpES9O+9FonpZbfR+Tn7UacnBDt28QMn6phqnFT70cGyV5LQ2044AVkWQ3daVDXnVJ3jEa7zsyq+/B+/yPQo5Yh8DVFHAJaoa0WjXDXtVRCQV1iFcNWiZyy2djuEWsx2RlgxhDp7myk2STNDOMByhkVwTgFm7ajOaASEJgPpnFED/uuo4K5Tww1oBxXqtOsoi2xnQ39O8U1rgFuDHTsLTlrJ5Fxen/YMKuK2s9AJ87LdcAVfIfY6UcBdc/QrJiEoKOwA2koUMvEzv8s9p/+c+JTlFp2NQx8pr+fyBSkDUTCURCqTiqxzs+Yx8vi6r57sm7/acvHmp9ChxaG3okQKE7cdHdVAz1GJO841cv50CbAP9n59kS7CcMXFVHdyulhi3qZ6x5t4u267eOWaxsAlRvkgEdO0+EjIz/yYfrapa+Xb77rrKn1kquycvi2r5o3zVw17wqMfN/KeSJ7jsPzWU47ELflIgtPwK7ly7x3pjxTmFBeFl0PGCdEiYXeXxi6n96B3HmYO00HmOMh5vipdpIHPIHFqOg+nmSMWH9Ve0ezSq6oXWJi53qIue406m6iRzoQqG4p0L10Iy04V8uFAR8/Dd5kSoVxtCfWEA/WSMhhq+vl3ghDL6GNA1eQK2mVWw5wIctWkaUfmAu7mwLvJuvuuhuSIgw31aeqqca/yMjC1CEuM9oaxMbU4QDaOeiI+lsVBh2+Qn/LV/PyButU9utGjg5SwNJik4qn1fIrnXe5FWTxKp+YMoaX28oZJUvzwNBbLsT+sSvKRZ79+6TkDjnRhzP8vEhSax/Nc26bK5JcfeSKkKu/oF7b98ho2B92k+FwGKphMIykxdBYR+b3ATE4Yg/0ze9dpqZM9xv+Mwa6f2MRZSnk8/62IrFPV5ungTxdY5768nSteUrkKb+VJmNZj6/f5asOSeGyxWKUqQlfHQnqqnx1RMzUb2YCQrHPBDaso1PRg/EuBroRQKNdDPSVABrOzN8E2lpzC9DTADRYQsHTTUGsd+8J6A+ty2ubxqg/1wF+OuLOpXy82yN/e4pXk2U1+TNLWSvsSPKIB07m11NiOI0B2pKbaaHsdAxZ+bmBq2zOfSMmyVCZz5IQm1YdV9389y7cf23YLVXlp0FgZAIjpne4IaHEqST1LBR+asKRCGyAU21uiUOpZEedQq/ma6eX8l8nTwq5A9if8ZowI/F70HHDJOXFOxtOFL2Gp/1CvT6c3lG5rsgchoOqely279nEJgK9FgRga8iLVlEWc7vzN1wuZBjG0X6h6Xq8RrTI4NNqHF9205lMcVzxvng2V0sqrgZHhB63n7JXxCRM6eQtyLhY0i43vXKCtK3LD0/aeStpQ45YOnW3kGwpR7xx1Ud61lKCbBHWx7vrV6d8dzzCORo4gN1yl5jjxcK+8fuAGcNoJ4cuBFpDg7unOqtM0BGhZKo+JnAEETIgLir0iHSACMZpp8g3Bdg1vOTxKGholPd7zCj1bwEOyBNUxkxXICn9biB3vr1bdG4jQrl83fEWPf8qd5URP5OAx6gRBawI8tagbgtmTQxpAOZ9RFjXCFYAAwQrJoUiNwE1b7JYhDJoDchhBTmchKzqsM2YWDyBZShYgkjYD+NQ6mRfoKBUym+mpPcdbzdVS0RBp7rW+XxPrw9Utzk+9d1bWF4iRBAyNDISNdDnDBqjWokkTScZvnGgKiliJSekxW49QKGeRVLhTqmSu9ld+6lr4IkDDmHP+BqndMvBWNiAOqWB4uhZCVpbicRN3inXatZr4GrSnNuno6RL0SaTJ0+Vvl+pwJMlu+az0OxQzdOkClUNiWoMiR12Vv3WqmowA9+zQJgfi9BWJ/fcbKbVk5kCyaRBYtz9BKmX981j+kozAduUjUFD2RiYFtS9IhFvp0bFR69GbWoDA+oeA6+NDNKnsE4bMMGH1x0Hk1fli47z78m7mrdvdvtcZ9PbSV/AaO+Moe7dWVqYOngaSwvnZnVT1YxDD91Bxt7ku2HbhbGGGUYRLs7MhGJ5OgqT0WgUzI3UKOrUtim9UVbfpvRH3YbQfoGZZ5kX2mULNWxYmBRhNkq9mQdThqk332BKlnqzDKakqTe3YMog9WYUTOlPwUlSfwbOlF7qz7aZ0k39mTVT4tSfRTMlSv0ZM1PC1J8dMyVwKW/8Z5tHpS138V77kQsad/HY71BwtN/LA82kOqjrMz4QzBpvf3YULjjKPJHqxN0oGCTmX6iaJ02+N3nSNNGbX3MpveZJU703H3Bw4omTJt+bPGlib+pIzO5bu+z117R0WWtP+T63p2pTfXerUq2urtE1WskqcOw4FJWMeYG3pDGDFkeMvYwVYF4rieSraMVXhXImgCKqewoMMEvngOXhnZFM6pGTzlTm42bTzrz60kBapb9b8e29yIzwmBcBGfHUXYMQ2JVf6xzR6UgZOqWDvgP9ZbDnTYTOkwpcJQGnh7cxA2so7OQEKFeUuMguN1H/TVURXakeb1EIRa/gfGlbf6ZZfr3Vs4Brbw9Vl4oRMj3pn6Fi/FWKOSZBfE8p624v0gGfePpiHe91gYKOn4z+RxiB7jwv6JpLTPnbeS48aXFBJL3rY57AARzOvZXEqLZHl16qUyIieX0/znveIfAVxN8Q20/nmhJfeCmYtVS4rCoiG/c5ZTeyg2UZZtMjbBl0DAeUHqArTyrmtO9RpGG7AIeXkq3w4AUH1OKE0J5P7y6heLdKBy3sVd1/l2vN0JYzxHjZOS693Yq5GG6Ob2WfDtbu/W7w4KceH/8586M4UErx1vNRdKnmAs5HjHyuQ84q9EUAZTOFJpXfXi2RqubXkj45zCnJFaLRqZwQUC0o8zvwIrNpMs1atp3N1gAeHDrQpWlIaBwQ3HC/kkBrIIMHBWn6NGhADeZMW9IbVqqkurkX1E7g/B81k+Oo0lrW3UMdhb5R9saTkkW2ijig3e2GceOiWFS/RELeM0iZvtrdRylimu/4YO44BrBPPW/8oEG0PTH3CZypT0xTH2usndjF3hogdquDz2BqktJvjaWa8y+6oO047zReQHsFT/VgNkOHRsB/v3BlfhNgZ/3W0/l4MiGomC+0lC3d5thU+Q210ZofWPSufVMNPVWht1lZhz2bVStiietoXw1bx1R/I0WsFG4wkKBFv06x1dvkGFnNl9vRS5Q+P7TlTPqW2aa8OkBWgr/46tm+33ssWev73uy+P+vSWuOCqnFX2kOYyy1aF1u0tiobOX7rzEa3dH53MkHNHp4k9WGYWzcicAEmPUg3Z7G7cVW+0fzGYNcu+PdNZoaE3I7+mWPZrt2v+c/zpzxloWzEEwTWjvFSVmGmTVLMK4KkOD+kHNAqIUBCfrU89yvP4zrwFPWOy1op6mC6E1pn6WpdWw9TEda3lgq9aqIqrYgV38fJ/HgwuY/QMZiofO7OQ9/EF9j1Y24PuLNgKBpLPUkb9SQV9Xzv4taZezyJ5xi252g7gbe3TeBp8si6rTQUPChRJRUNxemU/BtLKPg9A/5TvbjTiWv/wl6UTq5iDlrqv/zL9xpfBv7L6+/E3KwxGUe9TqLcFwIlbtg68TKYp7ZAiYAZaAlbMA8vK8p6c1VewoRefF6EubrDE6x+wYQQiJGM7F4xojQo05Lzw25WUOtnr54eu05lRJH/HcOEGiQ+IVEJDdB3kwB9o//s7xvdEVeNBjuVHS8PFN+DDHU54QfnntUs6CSEWG6Yd2bXMNsrbNMfrJrlD7Z9kGkA7Vy8Krp4pYNXW4BxEX2BrkXFbx8wPtT8OJdUrjusx1Q1tAqUqPGBOwJ+ySa/pFoNKw/JNV7t2WM17yQS1gry69zykLydh1RmsjF99hBnlV/LtXDYFZbAejEof3H3NLc0/XVvCwkRDW3nvDZezS+eqr+b2rgBfmBnzTG/afzQRa1Mk3GuwV5UFQc9qvSMk7JOwATq6shEeZTMVBhPOXVObG8uxN4X17uYkDIolGPmF7fidaeiIvY2u5Le7PC8uX3lDFoiDrYJNlXHBOnkwsN1Ci1QyNlcofJtkwuS8gvS9y5tbcOzyMBPspjvaJfAVHNFAo43V52t7HNXBxMrVXehlSqoVqp4XnebK1XcWKnixaxUGKVWOedkTpffZENfZoWbu1sbOrkqYcwWtTDFs1cq67IAAlXg9/3vh15b+NDdsm8NufVm+BUJWdjk+bG94KasBtzLJww9ZteMaor97O3n+CnWs/f2MVDIbhWTkSmQQuL3YWXqYWZ9fAfa/LKOJlqJ3YZ27RabhnA9basYhxxVRmibDjrJLTRDM5lSodurJjrC+Ld1bZK+WaloUnv73ooapYofpJUD8DD/K/mNWlwAjyX+kXV9xgU5FFnQuidz7tRrruokrJKy8Z0n7f7Tk1Xs9CvUQvjINFpJZAEbH0tMfnIZOPOQybLFWLa32G2ppGN8orkqqpmPCvKqdlUXCOSkoXJhYr2/MhvT6x1YTqUr5svPGx9pIv/6MJVxpXnLLxaWrp6QnE9qqLsQuxqHDXS44f/s5tk66Q0ikr39Qm4sGoCgfLNYxcTQLyO6hpXozUcl12BCvAXe24ebQbpTk/Ltbn3NGCu+7jB5CDwVLlyktwPFaa8odN7nlVZhM8TIt+mmvhlqwX38rMhIZaf6yE+UtL78uRk+FLGW3mpZiyq/2ZYt9D17BE8SAotfMxK17lDGodIls1GD3fCk70ST/bSw4hb1LeyVIoBOMCSd1wTPoAygI1RQBKIMKb39mAJAMTGp9+rUorx0nobjNOpPy698QImKEpAtN6kOTMJ0P3v8Uj6KCpWxP2DRakN+ldOUqvTPo0rNuICyMbLKRlix4J06toUVjzj0M22Ayq78m7knDQNqIdW0FvJOagmnfUE47kOAdQ/dwLGun6xpJRfWSL6PdWXdKY3k+0j4MeESr0VqJMPMdlW30aIA6KSuFll1xduWCT6WbCiCEIjJIZxo8dH1UhzI3GEVsxFBmZ5sq/2/h57zn1YE0SZ1hmUGm4NaTAs4GpURioXUa0usjm29jGfBAXOc4G/vOU9msY+R5xut1X4hJJUInOUHWEqSJ+gL1of3m8dKy7NdbEN1yNGV8/X7lAaYu795nnU8pXykjODoX/SfVmTmPzXM/AQVhFHc7R28fv36/iBbPxwdsH7t+nXr1z/6MesPXD9ev3LPPVbttY8uHrb3vqvXP3LNXL5s+W7rV+z+kIce9NiHP8KUWZ8mj8LPfvsLw3/p/LhX7n3i8OBS6d5p5e0fPXNrbHxbHpw9zrPaz/+f86Zjkxziv7/tYy3fa+V/0lb+YP/93Lbyj63Bv6vl+2P892+1wX+0/35RG/x1/vvWNvgH+e93tX1/lP/+vbb6D/Tfb2wrv9Z//5u27wek7vZF5C6Mi2LHHfF9mJTZcOWb7e+BfuIvWoDu57//x8dbvq/x3/+x7fsja0TR9v0R/vttbfU/3H//adv31f77a9u+71sbtLZOH/vvH2/Dr/Dfr20rr/33q9vK71NTP7V937tG9G1E9zD//Utt7dvLf//ntu+ravJPG/w9/fdb29q3h//+rrbyK/33j7R9f6j/flUbfg/x3+9tK797G1GfVJW5wBH1jjpRr2gr9DKvsPqILXR3vdButen55y2YLG8D+gqvrHZA76sDXTZVKOGphDu6k5rob9CXyuulaAd6WLhV+ZHcbkttrZea8w34WNtQjvz3u9saOGxr4DZf61kftbVuq9eatZW62Zf6pOuXm+ul0rZS25UX5F2p7fVSg9RnaOOA/RqzaGthUiP2tsnYa8Nqh/JsvaK2OlbdtlJ3+1L/4Erd7Us1VLQ/bGtLVMN1+/R3CnQBTX9oWBmINa5KGyG81nnn147U1nnBJJvIravcr3uNza19bpuX4bOliAjyK+u7UWg3o4ZP8/Kaz19AULlvvrsQ0y2V312Jv7oyYMLSBTheffKKlM+x+ipvGdLwbc1YDSW/kSnd/u0UOqUMnBdWmiKWJ82XA3gC9JoKiv1OVxFSV8G7KowMIBadgfnklA3hhLIhSF8iuyh/pszdNfd7gRzDh1EUhUHaNFo5Ss7dFf3O8ryhg+8GORZOsQ87Nv23SRMAHvU3juaXdO6PX3+k/1aevmczbQHaD/stAu4IXqVp68E/tC2sahxy1wI36m9jnT+PEYHb+Kh9r9pl5gPeJOMvJBqNyZBVJhn+403OXmPgP35eqbjlBqRyPv277haT7npLH6cXDHVsQ67kVD8x5oDoo2p2PwqhC48bVjj+oBFHOXRbbJThIdbfzh0S2J1QpCOnXerqqFLie0uonviJAraY1DZS+xXQ9NnweaChC39yIVnBe3+K/nFdvIpN5KbFb+oCNp/6CTfGrqFjt+WuRglNZSpUkTG+EHi3ZW+ru+k5bfoW6+TTW5SaEqX6g/G0JRfMPMeht+aqNCulmHNRzwhQ1UEA1CrIUJ/OKn28DR9gLQPQQK8Xhao7f7/X1E8YJS+i8AdmF94cq56juXXN2+Y0gy0z6E6xNfcBer0Bt6rcfigeyFu9Ta/yZ5l/hMmR4+4+JVOpBcNbbzj5xBhSbah7NAxIK6PtXu2Uckgu1q3U5/4I4a/efGGDpnXP0WxYnRao+oGORSIBj+uXW/1q2hd3lyqdcpKahdNpNnBiz54brwKz6PF4UJDtTR87us9hZQZ73ZYm6lhleVjYc9dIoWlsa4dKiUH9LmgrMmphZIK0/RgzJGDgs1rw8ZGwPD7IUqEkhICuEj97XavM6qWwmahYRvqRQEVt/g60KITKrHFwy9ZQm6aVxZj3r0Kx5MRIytzyxcbBKswDV9oe5wfWXjRwRmzKasu6zDqOucqZFB52wxFCIVdxYpiKhjYUfAiD0S/bOJw8SpQbBXJ6Re8AQakcx8HSCacYUNwCgVUAVQP0lcuq088q2LwEqGGIeRtWPq2rm+9oasmjWv+F7L9Gt4W+23RE49fItKzWy3BPwSLS43itUI0sTlG91T5yaOiQluNqAI0mEI884u9TkH2aSvKG6iosP45b/NbBeGjZQ2jZguQimYdAlwYJDF4fWKfrIVfGgG5nLAeupkeVrpjORDApnuc5MGntQK1U6bZEJf6acUWx0A1bnMA4UY2oqumNybO9jmeNfy4XqJ0nbIeBHJHG1VF4n2yOb+JECdHFv/6dWhjaTg3pInDS+8fM8lr+GKG2tNFWmsV0Xic4AUK8Y/owS5wFoMHKcuFhtWfzAf2ElB12ZENBkw11J89bG04GbeQ7hCZ065j3EFUlpTV7N0zP739hwmgh4Ql3XD/hxpWSS+uI+k7kjcTjWbBm4hTQxIn2DsRS20tgfuhWN1JcuIN3XDhRk64qU97IQ8q7zjqUB9cHE411tv51tvqUkJsGGkHF97XNrm12z/D50p9cgAYLnnE3wwXuUK5lJNyAobej8oq/2VInrdjG4YiqAPJiJ0Uvy10bN97CSfBZdgCSLjB1Un7/XG8WaG/4J+7ayd/7yljPUir40OvOqUFJU3oGW7uELiqVXKN+0EnQ4dA4ITisXbyM0rtUtYWcwdj+2jC2WAVh4Hjb9+ivJLQRh5vOHujpQfYbPvZAuYNOf5QO3FXQjyF7/mkbe5BkuKaearel9mPzS53LQTAMTBs80quJt/M6pEPncygA35uS9hRTGna7Cn3LjaZi9EYtTrLnUnZSoBX99hzbDpS9OAmYu3MQjD6VUNPp63jBdJo0Sk74lSYM3/pIjp+vbj1+Jpufwq0zjRk4iDQ5aDVX/kbdXDmq5jwd7LRJqqi54TMnSu+PVNehqNt8RQ0dQZPN1VhWLDnsS9ftV7y9jxnkWmJcT+xVR6ARN2Q0JZROsI3j8mTjobl5GSDEvkDwJi7/b8e50/a9fetRKanm4VWMAFGD1JuE9PE2SIlAWt2IIEnRnQsqyaxXvTkSi3SXu2jfJrdf7Tok0BhVXXv7+wubwrK7vcwRVW5EeYobSVJsq4gnq4hdFWhl11Vxh63CE0zDjDCqLcligiTuJ3Ss4UQGFPhpYagJfY/W9UlY+h88F9YhT3lf6QY9429FdmRFSJZCfmKwcWYzoBBs6TFjWuJp8286tnY/CXrmn+p1BYFP8QpsYEX7b4pM2JNPz5k3ReITh71SaXVaecBGuC2I/J2BvyRC2qWtdmljRS8DUx5XEnLoxL+L25W+dbkS6b64HRhAdwsXeXDHBOj51y6zYNfynmBWWb9XzMFX7kLS5Plf2xi/cSZaS6CV6gDfEDAr6+3qWgauFqGYIP8/ZF9ZvdJuaj9+nB8H9vVNnDDY//ezxGX6C2bq85U2nXcEx+aX+twJ2tGHkwbrJtvOs8S6clDSp6mwKeRK0wnCgF6yG3QiFYUSOzrdZkYglKerzVMgT9eYJyVP16KeyHpvYBBruGyYXOstTUwvFaWSHnctvIstjIFMfpmX4vHtQt/KOGMJRkxJZS8ewywh4soSp43hQI+HEnZrzkU1wDSDCvE/en6HoesRJpUVTzvcCzH0f+ilf65N4VDCle5mgFvWcelfXlj5p6D/r9Q7+8lt6FCr+zN9JKnOIAa88HioY4aB3ANFUMuAqwB9kIolGiZ7qxFCbO1NkvJ9RrEy6iaJmdlBgn8RJnFSXm7S56Je3Ot1ex0lUz/s1by5eo9ZhlzAuy2bzL/hQ92M+yb5TrHIMHPDLX8Jughy/2qSa6L71mlVtnAF27690xX0JiroLljBTf+00xV0JyqI2yt4Dyt40yelgrt3ooJ4ooJowRacdddOtyCaqCBcqAI4Xd/ZCsKJCoLUmqV6if6LX/JSF71KYYfN4yyxnwSkDiWEFhms0m/zwi1mhgTVL+KGgVPcbuDEslP2UakOqqU1vbEpdcZM9r4VvN1rt+Fbwbmz58GXd2NfObYH18/JaCTiFDwoM2a6+OrcJrJnjFyRP0N+G3rLpPqwz1787KZHWuW59RpSMaetIbYlqghhozgG+4NpdGo9xYl5pw7SyKCfXhaGoTHsCrwO2jVZq/w+5+85/ztrtK7yf8MT7wXL4FKb1y8HErcY0n8PQ27nN7589ks1uWmAJub/4vxiiO2whhqC3slpMRvoxO6x++Vrvux9mGJkqYgNtJKuYAEZe4+MAjJKy8mi/cTb6ER6bUeNI7Hh7ZX7isIb+Smk237/3JdQadnN33Z2FQGlJx7xaOCJc0l7IMnttLWBDpwVvVya0THRQ5cQIxhoA6sq4+e/QFtW2/C4Usymv74Y58E6tpIEdRUgPcorUeUtWCvvRvggcSPsSC+9kIcvDQPZqOaDJuLmrm3nFhUtNv1Ou2ddGHGLxxfubdtOQCjcppnkZ+b0Z2EfRKk3hWcMNgVnqE3dikALhE3F6AcbilA7k+RQ4io/gWJ5tD7MqZFG92S01GWMZdEL98qVDK58WtHXfZ2cbohykH9G6JqOv5g9K1Ux1JkeIvRNqEemBqDKj3N6bq2BlZfPZozl+WJ5GTDG8ol7WkpbjnOMjnj3xj5hhUHGlt69VD48aqgfakCnFZ6IwQw89yhXMk7qaYi/rPc8vdirXFc8TO+lH7ah2LscFPvovQut9ykKrXVxQjEuFSIt6303Fqv1amnGfmFePPwJg+IR+uH6EWcUjyT8NSbjfnqN3m++2N/Uvr+pXa9BjQeYGtfqA/Ta04oDtQm1fHrxKFPjQfpR+qANxTq9rni0fvRNxWP0I/VjXl081hR9rOlq1ydZcbC0+mDQjNT8OP244pBMpXxbb4bnUH2oXv/q4jB9WHFIqg8pDi91cYSBc8R88Xj9eDuYh8+lr1PqIX7Acz/gMtAZq4tKKHjFGSuj3R4rLpT7pTIDmujBxiLV/QISejrssMiw7DPI7YZiroxdhOxiuV6ml59gRm+3IkMwwhUGxO56hd59oxmlh8ylR6neg2NjL8KWT2Ms742Q3OToay698XlqOH3IVzuTvem1n9jcoenGi3QAQx2f8DJOxjUiVCrDv/m+1r2vTZkQDQHx/YAo5SKbnkj6z6p06J75ZYXVKOI5s2a04gAq/7xzchoZt2zKJHyBYraUqrILz0P2L+IrV1GxAt4h4daC8uPmt8cjTGi+V8xjqYdX0oF3KwERIoWKZiVOZT18omPIVRoLXWNaZE4POR6W2//zvWCxmaHbeQTV0SbpZ0iCaHDa/EFK2HagMyifA6B6dCrR8IphaDKD/6MYtsgVzM3n3gIAw/K+N9/iII2H849SHT2ax/Mcno+t7oZs38b8JhWj+JYQ0oizdHwHvplyUqXYVmRYhjJn/sXvc7bsm0OzEWN/HF0MdQ86V1IUZKIUqnfYdaQbuFxGcsy9kidIHbZvNSG7bhgahAG8GHLz/z/pTw9Hv9exJtVJf5Bmw5GYTMNieuUee67a62F776OL8b6rH/6IR67Zb/8D1h74qIPWPfoxjz34cYesP/Sww494/JG/ctTR5RN+9ZgnHnvc8Sc86cQnP+WpTzvp6c945rOe/ZznPu/5L3jhi178kpe+7Nd+/Td+87d++3f57+RUR45Ks5enVsKER+55qCQkTEbHEi3PgM2yvgmDb5Z+rBzzmI6+VGdRpVIdUPQSbxL5l/Boat9FkMqzgiLKNqSSuxg+ONRhE2SJsHzDcpBvo5Q034btfFruV0SEPATkl09DHrb018uXjtZXOk28Tm7D6+TU2Iw0EPudxSH2O0tH7IAmXr/dhtdvLx38gU3wv9UG/reWDn7/JvjfbAP/m0sHf1AT/G+0gf+NpYN/eBP8r7eB//Wlg//6BM39Whv8X1s6/KOa4F/WBv5laXl4g6JfujiKfunS0VrbROslbWi9ZOngiyb4F7eBf3FafjBoNPtFi2v2i5aO19lBE7EXtiH2wqXD3zIB/wVt8F+wdPjnTMB/fhv85y8d/hsm4D+vDf7zlg7/rgn4z22D/9ylwz93Av5z2uA/Z+nwz5uA/+w2+M9eOvzzJ+A/qw3+s5YO/4IJ+M9sg//MpcO/cAL+M9rgP2Pp8F8zAf/pbfCfvnT4r52Af1Ib/JMs/MjBH86AP9RREz4OQjzwTgvwtDwSZ/0+oLX38zosj6SGdWh+sqctvZGvm2jkU9sa+dSlw3/9BPyntMF/ytLhPzCxZD+5Df6Tlw7/EU3wJ7aBP3Hp4Pdtgn9SG/gnLR38Tyd654Q2+CfsOvjHt8E/fmlbHbHuNkC+bEMklu/GRue4pQPrTAE7Ni0/0pQ6nrg4qeOJafnRZsFjFlfwmKX39UWoUOmh4wAmocYCfvW/kA9Bn3FSEdEUPmL9qBrJJs9X8E70oJwiXtkTlt7SmydbenO9peXSAb93EvB764CPXjrgWyYB31IHfNTSAd86CfjWOuBf+UUMelQNMZGRD+34HLn0ht422dDb6oAfv3TAt08Cvr0O+Ij/KsCHLx3w+yYBv68O+LClA75jEvAddcCHLh3wnZOA76wDXr90wO+fBPz+OuBD/qsAP27pgK+eBHx1HfDBSwd87STga+uAH7t0wNdMAr6mDvgxSwd83STg6+qAH710wNdPAr6+Dnjd0gG/fRLw2+uAD1o64HdMAn5HHfCjlg74hknAN9QBH7h0wDdOAr6xDnjt0qQwhaOum+6MyqsgfR2wdOy2TWK3rY7d/kvUrZepOYgrLwdu+y1dzNRa1Q1MgFH5ZtkFmR+gt2bJ7bb3m4ewjxiVfZg9jEqNnyH9pAYpn4aZs5oYySWpw2G4EOEQa+RdqkLROALAwGYzMAcCU0xu0L1fdeLyG9Ep+6dtm9QpuEvqunKzyu+Uw9mh9WyEscx19IQz0ZH5+mCFadoY52QuIOwK60UrKPtm3LJ9lzrqNARlnQALKUqciw6lqnnWygwTVaOX8MEk51+zfVUlfITOPtBzD18Sbu4+iUUqmJcwuLD1BDF9tjMP4lrJ/hjmH6siKAEc+k65SBa3W39tCoZK1gjJgy6Gqch0dhi1az7hzutRe/Pp08U3Si/uCE3/z+yKfepdsffiumLvpYrvoNohr+Yokc+3vpNB31CRQMz0LjsO2KdtT7/PfyHqe/88E3nmCenDlsaWdnSKOfMf8qYxOVBZBcymEUb+dVmFRuWYHPmrci3HMNPj5M5ypOfKM+ZR5dA8rZi35DlM2TnjIzo+/JmCjw7w0tfVL+5FrlXFnI0WZ37m0GVK43HknSgtqj6MXxN12MElJwj21xkLvKxceSKuGunstPKbm7cOzJUA1QJ5PDcB+6vCFYfWsJPzJQvTJRcNFlOUWdWis6Z+qVr6JHnnpATyzroEsuoXsjEv1+RXww7dr0X4ND2n2No9l4zTAnN1j6XNqreY3vPX4m64MxoFgeqwImTPv+H1dIJ6eYX59d+52ILnC7r4kZkz1GGT319/B6aRXOrRw8pljoFA9Ff+nH2S3+3wfA/wfGh9EdhtcYvAbkvldjGEnuVLbgCiNoDIKpa+7Odhu1m+1NIhSs/VO260uI4b7bqmD3+upmdLLd1D6bTe9MHimj5YetMpEuU70G5jSJz1f66mJ0tHJMS+gYFqOWm1i5d2x4WcstpdsymvxORaeqMpyIkZZf7mM+3FErLRzBuEgRs1TRfHc1KNsVwUTgyr2xEsYYd4pqm4HuLqD6yKNTNXxpwDQcXk06P5E1GczDkzcXENfvOm2cHRDVs/uOYVrlY3faTNIwuvNkaQ6WKNHcH08TyabezIFdCJHuzcVEfOqHEEHGBcGmlYNjL4YX5amZ9uMg+kfViqM6x3PlQFnAqjFaNQdYJ+ytCT60zqp5E6lIasGyb4wYryLRtIp6V72B9AjUOVSh8UmYxdi41pJCPUKDl0JQemraGrRHKYQYVDouB3jYcO7pfln/N+8xUJMXQPoPAeqIuLMPT7vGFth9dwxxLBCVXlZqqDLYui8ysrRuLOKZ3rqlJAdZ5gN7mGE7JIpjugLPhZsv7SdFAm8yYhOE1kGg8lkKwMTydrnw6FenF5IKBfMPeUV08r+ZTOpc4p6W3n+Sa3J77Sulkr19l2hJXn8Aw/ZTDvGxixgWEpaApy+bcZFbmq82/q4NsTT0Scvo50ou7Y4WYsJEzncUh3FiHGlPcCMRVFGrAG1PhKO9v00XQooNyg0DtFBRZAMemQoOl0u7Qt1qqWX9Xy18JKbL3+zBreWsGsXDOocqfUzVtHgSEa4R8+GipQDdJ/ViqcvosuZCset2BcjFknt+G300ddYFcztaGISmUvUcXjQEdPGipkP03suQ0gzYtWU+ggGjgjRgcaG156YnfeVt8l12DC/OzLJQhXrPmZl9lFWm9Ck6Ywj47y79zAUqDNpH79OU7fGKjeJhc5V9W5sPR3o6MZxdhQ2NPcNYBYK94HiYoeuaLuzo8T6AZ6T5HQBTEcsItPcPoTc+EVYvzE7XUUPXoTkzrGCagp1AlvK6H6McBKVRvGprpA90ziCfSJPl9gNOQGU7kG9QkNnMQLKzFEV5Cp0rEhxmoOIPiOJ5uNKmollzdifNxlMMbfDNH1sXhtP/w40EHszMh9EN+wCYcR2NE4NyxBeuIiCNSNdOs4q/y6sy2sMwN3F6kjV4I5pPIi7vR5P8lPZs+78bqXjK1CK5yXIahfAAhcPHD81C0wgepEqWZpLiQpPnOleaLz3oblRjVy0UWiAJU7IKgiJZIBvUAGbkfFRIcFJAVlxm6qAVpR0tAqfZnEFeWMLILpjg3dVGPHLjyFlJ8/oZ0/6a8H6lUBqnjr7Cres9QqcME7TN+OiCzTowTGKrc4GICiCDguNooCgjsr3oYWuW7Y9ALjrnowsFeUTgo/ygs95OfHADnc93DRZy1jU+6+jZN9Iso+BDGO5KJHLLJPt1X2kRxj1XrRIyZ2oJDmDQ8BVSiZdDYohEo/nEyEZOCfpXch6aleHPNKnsEPUiF7MKouB5WqDDAkG0p17Kq5FI9GIDLTvDRtsq4co6LrIyeEuluPQhFYBGueI4FPCw5rSzgNoHiW87rhXhLTDMuIYgXggKFWYGcds5RY8diVirI0RYLBh/QQ6YCRcjaU4R9sACan4T/Hr8IqnelA3O4FVh2FtEiH9IsQgqHKPJzC1TmZLDdv7/C/J6wqukRlJb2XhOX+lde5EI3qIiAzOUP+EcwSiFGQXwO5I9rKf+J5hDwO0JN+jPfdAlRFRANPQ51cVXSX0G86j03BKoFQjZI6DvKfvMG51AMmBAN5eZXRCHqgEIk+KyJRe6udD/3vnD0tJX3i3C21RK6aaKSBCb2jmt3IclBrpGI3WYRFw4LWpC00o0PrlMQ0VdmoYJ6vtrdC5kARWk5QBuIEE06l0DPEOjRYjbtCbE+yzsIqv7+RkIw63WSwerygWQmWbFNGSMmt4OJ3FhPDaAJBd0DB1FF00biuaRwokVp7fmvpKUxPm6PtMxb1aK59KGzij25tEW1vbaz1F/Dmbqt8OQ5rV/mUvcqn3FU+Za/yeTnJFqALQSQ2PCjrsBoR67jKiuLK3vo7XqnadXlFCY3ii9NNd/a9wFKxNq6gbznfuhISmbAM3G3mi9Cmit4Liv3/SOqQe4/k6p3a7UWPZ+MOo/Vlpw0Dx/5IrQ90yq6SAiqTjnkAdJvffo7MqCcVinONl6hZ1UrjLnh6jcQn5Eh/XwV07Uw0yAlzoWtHInxS/LQW7eAeg5SQuNFzm6FGE9CA44a+o9PXQcB3I7rQwGO9pufMyp2ek5FZqJ4fx1HMAyHBvexlWlKNPsaywoMn8evS9OW++TU6JOci6fj2cMrqkC3yX4SVuXXG7p8i7o1T3bEP6VmkdrsdliY1+ItLyr8DBMvGVB+rqh7gaN0/QtAOcB27ATOwACWTbW3HtvYK61IuZFvLwG6tDacYi2AiEKjrwkt9o6uwttmtLDpZfuSmuux+eVE/tPv4cCU/5CxE95n3CgXUtr/XNXa6PUoDad9NvPSpdO1pELFrhhlQ0xTxv31Px2+1pVOqTOtcJlVKtttsMMH0VC+cs7vUxBAwWD2HYJKdWz1F/k/4RPmHI8tpIRkf71L4W7o2rU4HVLrvFybp7nyE12fr2mB9qH2G2uOa9F3PV7njS5sz78w7QpUPpDpiNARjU6Ik8gMiS7sYKO7udRFXjKvoMhpkFbzm63IYPIf13CoG0/ITqughXEJg9pJFH+qwBNusgSEbKIKy8oxiSN3OZE1w/6OzI1SHvCyTANJdK66Oym1vvKCKNWH5ps2vRx4IyHag4/xHdj+z8J/J2qOWz5CwjiFR9so3/I2R1noG6Na/6fC/RgTrld1TyvBUSzSjJyIDKtKDDWaBHcfYISQGlA1EOSLcOVOkjH5X+Af8xgT2e5GjbnbOscDYTXeEDCsSA9oAhD+j6V7iZfWeBO/ouoAz/46BwBBWXZPqXCfzAmqOjcOePjcjMioGYDZZ+SnwIQxJNnAzascHRVrPuJlAr1/xU6O5DOVm+Rkmeys+NukvPy7kkNfJweD0QDovETo/R5ViCliQh1F1Pg0tcLEo7hGnILvXoGVBWp4ZFLkpvzk4dpiU5lmgfSIwI+easN1qaMUzRdpSQaX+nSuv/TcIFIie0tVz5be+4COnOArr6pxtyH8sfHVgsLn3HIeNKjL0Z5aAtIfo8xFVvPMG+L8sBz25Jm77GK+6Vzfo6725+Tu1e/CZ7R2dGQcN2Min2JoMZ5BCNT+u/MpZ0paXGZxHvi13L6YtKYZEp6uKVMvy90AK3pzAU1CCCYutyrAarbtff6tQiThmngPTy9F4FFC16SqZ5jAO42yD5ZGHBB8KYC41Sc9zEgj4pFpzNl/O8vYCP+LLol1/9mXLBXZU7Spha5Khv2SHt0zHQsCmyvki14kG/92Apiw3vHuZHoktlx5hxo5wOOBYzG7l67/iI1P5Ttut3H6J4JIbPNBmvXyqA3XO2pZLPdw3/u/fL/ZPbBdGH1LwiXCnwt9iPCPcqX5O3wi/c/LL5zec8ru/9/uv2HjqK087/Q/+8I/++E/+9FWvPmPTZnWmOkudrbaoc9S56jx1vrpAXaheo16rXqder96gtqo3qovUm9TF6hJ1qbpMXa7erN6irlBXqreqt6mr1DZ1tbpGXauuU9ert6t3qBvUO9WN6l3qJvVn6t3qPepm9V51i7pV3aZuV+9Td5j22uOie0+H5E8HyzwFc1qa1+AKnBz2MT47pnvA98vxjgnRmVH4yxeIHnvEklKoGKXaLIV3QI+Cktkd3IXohDEvJRP9oGHiZ+9b+PPtC3++jZ+dIy7nhusd5QeCttR3A9AfARAdtxHcX1fgbt05cDc9CLhbVLqIYuBsB0D8nVXzaBLue2fDbQE6kjI3z2rau30pC/497Vl9BT7ru4GJtUDWypW4yRXJvy+i7Z+RCiVXdlMF/d8Fqnn4AcFfhX45hcNs+8e3+V01GBX9nX2rd4Nd+QqLSpa4ERUBYb6+s/l6Q/P1HQL+DCPtGhTfLi+b+HI9K+bLdWwvX66VlwAvJNGXOaVQUr7CP77KPuYXvVNkhGvaR++yoLQ9W4xmUs1JnmqKvC3XW4iHz7W8LdcV7GmfyyyBGn7d4bELKkOzauHNdYIeuRHBR0dSVy88N7eptBqLq9rbfOTkRDDvVibQekTAzTrf1hy2t+4quFeqVPKMRxws+novcsBmP1bQi2WGG+YMUiLtN16yykuCiijf+M9nij0sTbssBjlq0XmtagiGFqNc9CFibKvzCh0CPlIHLZeVayTgEZZPwNRDbqWRA1oSPRiIMgKduPpJuLrC7opd11lv3gWddcV/ZWcd+PN21lvccU37tD4SWLWgi9zs5HwKZ0xWi3MrzP3bcM4XhTNnw5t/8Tgf9PPifPmuYgWX7SpAl6oUZThN6rn57gvg3VO1vAKAp9d8s6yjl9QBljsHao1cEjJb5ItVDe6Z4o92qqKLOcFbKvqjncX5TbOEiTdOCRMXTTevvRzb6+e14JYDK49I9sZdAK2txEWBG0o9aoooW3GE4+l/PLJOBJFPwK40104pG3gqQknMjRZCAsBqBX3DgwO/Y6eAv6EG/PW159c1V9jXNl9f03y9UF69jINaHAv+zL+e76J0TkhmF1SCwx+1CQ7nTwFdNw10XQVUVwNS1qGct3Al5y78+Rwwgfoit9ohZH0410lti50uFdMrRu2086H2bYTMGjLKVi6HOs5mTDrKbRh/qINoO1mjAVDnCFTgS2NDZjkSPzTmcXaW4H4ymykZxjk/SXVCazloLYdB3HLUN0IaXnHeuZxrb47KbwvKpuhen05rbHf/5rwrrnOLcT45k85UKRo6yTlXN7iQB3nyIkBuVikqJ0gAnwD5iibIly0MklOLtwGRazXmo0KGNRgZqHrIfJa7uepHyXXUyI2PBgCM0Bpg2UIhzA9QLUU2paAW1lSMiBIQykUJVyEEcapq4XJHuWc0ZvOrhWOSAGzq6vr8GvsW3Eq+0ujiV83g9DdPcfo/nZHzlqmcfzIj53uncv7xjJxXT+X8oxk5r5nK+Yczcl47lfMPGh15euPttMbbKxtvpzbeNjbeXtF4+/3G2+813n638XZK421D422+8fbyxtvJjbffWZA//nbj64Ou77WSv+WXmt9sVPgbjbdfX7TY8GuLzvmyRed8qUfyJX4xYsKLZ0A5b6Kz/MR4kYf2whmFXz+z8At84efPKHz2zMLP84WfO6Pw+TMLP8cXfvZOF36WL/zMGYVfN7PwM3zhp88ofO7Mwif5wk+bUXjLzMJP9YWfMqPwOTMLP9kXPnFG4Y+R1Mp6sSf5YifMKHaUW6HaPh7egk8N/PEe/HH+8Vj/+MTGxDtmBgoHzGr1r3pIT5hR9sBZZUtf9ugZZT8elFPFjvLFfqWB/JH+w+MbH46YAX3/WZgd7iEdNqPsQbPKHurLrp9R9uudWYUP8YUfN6Pww2eVPdiXfWyj+Y9pvD268bau8XbQjDofmInwo3ylB84o/IhZZdf6sgfMKLvvrLL7+7L7zSj7hplTdY0v/MgZhe+aWfgRvvDDZxT+aWeaalf7YvtOLipj/63wj3ox+32o+t/KiFJW8bBPCnbxoMWgSQN8v2/BXj73wBxyey8ODauZa4fxMN+qvfzjqhndd93UirznjJzXT+XcY0bOt0/lXDkj5zumcj50Rs4bpnI+ZEbOd07l3H1Gzhuncq7w/Y+dKA/dqdtvVVoylvPy8qpvbmlq6No2r7vNQOPDgZfv6qo8j9cCKkJiMJrEgNkNLKglsPtcvuiTpmWLzpkv+qBrbkbO90zlHM3I+a6pnMNFU3S2aIpOF03Rg0VTdH/RFJ0smqJ7i6bo7oycb5rKGS86ZzQj5yVTOcNF5wwWnVMtNmfabufm7GgusiYycqACqN785VJRuMMCsmHNk9fsUkYNAGPY9nwoaLPt8SYw44QT0pslj4Chs5gZx7A/mjOQt11Mi5fy2k1yFSSDDY5hSjRqapo0jay1mJ4rf/azcONx8t1bNfF7kfmrLPcReDYvgWYMYPOxn8LOSM6PzjAWcWVQDHXeZtiVw6CIZmTpKOqEYYARhtuI65SOEOxom/ktb1Dorpvkv9vUfH4/rc8srK++GSdRxZwLpFEqhPPsBGLGhS66SRVzdIkhL+MhLSXFVZSz1Yvw7QZlTQLnYEUJIxTof2bWb2A2LS09LnVrTPRFykur8FSS/xVK0wQv0Hntm4XxoW/LFQdkQ9dldPyRiyGZzocKzSqVSQ/dGPztN84SMzlrEPb/UNLUmsME8Yz5YmiNv2yAmmEZiDGiHskQ0yqw44zdDFlsOr6FKniBGqRRqmmqEFu3EVAMUthRHutM/8Zx+YGvC3axtbyiqRlVXwlx1UOhG9DupPHn0Bp/tts0FiP0o72ybNtTZN7srVOGRYvVYOwvjVeWdgjlOazmpp+Ywwm0p00HY+rxJFRTpgdFzEEdgvaDMgCOQvsqbbNqHLnUN1xKk5z6IPqbYTNsYjGg7G9VteiT0t8ecfAB4k6gJIrYIo2ea7Vf9fMl9vMl5jeh+8xdXsVyLE2OhbIA8dxmzMGAOW1brpGbH2W/VJU18ji0ZqG0ydbKRiEXY8FONTV+dqP0UeCGp4MKO6jQDEjozPeCKqJg+octAbcJjtfmdkjsR62cRSON2Muzvmumcfnh75v/mm9fMzbDQiHgBZ97n1BIaFEo99MdV2/o6317V/Wmry772Pj4Y0C6GHwAgC3rCMqORJdkrDfcG+wic4P+URJdQ3NKtOMK8FmDQHRq0Sv/dbmOTJ8bvHUgyBeJAYpR3Of0smO+bSyC5vyOkAyDS0BkbGXIkE/lPbdSAXigIxq62lb0ZbpGQL5ffvx1RB7oZhLDNfZXcGBPXUAcwGhFgDcvd7pIMKMwVB20F0Y8dl5W8DKFTKEp1mSwAYF2DZeLfVzfURJHUSRhlNysuuxCi1hQdD3DfP95NjU0qYFLPdulRvX4nn95rk2NcWuqa3qqi55CQ/L/kPnUxXILdBIdFnEtjHlp+8qRWewdc+Q/QdFxr+w8ddhBK7KwFgl0E/qppxM/PzFJMCBy4cj8Mx/BkAPY/D1pFQhlUxHbqOyMld0HGjqANBG7u+Rx+XCsx0p4lRkjLCao2tSAnKr8946Mp+4Cq8Bk6Rt8DUp9NK+vo2Z7cF1tskkGY5W6GnAm0sNoRTqxTqaat97Pbo2I3871Qt2p5u31wrV1By33TARELBzcz0+urRXTdnM1rU/WR6pQXCGQ8wBdCYkZFkq6b9hB7k3z6deUiqwHBJNcjsXiHrl57dfd91XjSLyeAZuVp5UrzYUCOEMLTe8/Ejcu43ItfqpLhyZzEaFgYJ6OM/lCzBMZE3sDGB7+xFeXnzr4pPDJ+X2cS/3NrVBaEs7jcruIk7WrnDpw7cGtGKFg3s3CpaQV/4UhCgsjiiI+oc6PLZbpZYxLuLxUDDG5sVihV8ylV58W7GbiZFqK2DFshKpmyEBlr86tCS4Xbzcq/6lsjZFyJYwZ85/5W11PZvD1sGQL3OXn75wra/5NudxVCiJCX+ugr02ZECGhEYCQ6QnSJwMQtt5887cWN182cWvxTCQUYdPzgtzVQ/az8BV3m+7/qQIzUBKCMNZKQhB2tULQwV5oPUYk/jYc43cnYM//f/2rYiIOys1XiAjTl5iI6H2T9FZJCv0deQZrPgbULjERU2zBBiEy46q8jUPqYV4HAObjze+tII0HclU+9fsjf1V+x53Mb1JBSdvrV+Xv+6h8S+elSnGmQFZpv9+8nbKjLftRGxNRISbiQHfpwoKXQxU8a5yERuhEYiIq56tFhzLHkeBjItpuGLiYiINZMRH1YPS7NrLg/MtP/p3f/q3fPOU3ei875aUvefGLTnnhC055/vOe+5xnP+uZz3j6SU976lOefOKTTjj+uGOfeMyvPqE8+qhfOfLxRxx+2KHrD3ncwY99zKPXHfSoA9cesP9+ax75iIev3ndc6H32ftheq/bcY+VDH7L7it2WL8vn0v6v4V+S6tDRY5alk/PS+aOJmlHy50H1Z19mfWswM7Me2NndhNgL7GdeFS+3x/Oui/9eGH7gXLLwK91z3Bnl289jhEEt7J9pH0VaW3Ud5gCyW/AtOxk0Z5EQMQjXfPFlAlx7Wd2RJb+Jyu8sGSTKtoL87bQO8DdDYUb5uaYIiG5A0XD/44YqrKfvb9KBC9YF3v6UvMr8HHTs8OQsSKe8wsh1dWAx3XdclMpOswWTCdkLJrxKnQcw4Hjw/dD3hAPKbVY/zsDJB3RARnc3KQSeAZ7p9VCbr/k4xY1kZq6Yec+84mukU3E1oaRC3YeHrbDmgMxPLJWfz37yfMYyGBaGA7JFcxY6B8NbOpu3FGHNBVkowwyJ0vGQtOIhkB4yuCLroV0Cu+8dj8nYXwDcR2EnUL+VtjSWrUM17PhEWlT0IbqrqVFHt6G/GyUHrmSvCCG7Kvo2Y12S0XsVu9cw74H1Kibf8R9dIq/3QvdiR9trOxM086JJqr9QJsML25Nf0J78/Pbk57UnP7c9+Tntyc9uT35We/Iz25Of0Z789Pbkk9qTn9ae/NT25Ke0Jz+5PfnE9uQntSef0J58fHvyce3Jx7YnP7E9+Zj25F9tT35Ce3LZnnx0e/JR7cm/0p58ZHvy49uTj2hPPrw9+bD25EPbk9e3Jx/Snvy49uSD25Mf2578mPbkR7cnr2tPPqg9+VHtyQe2J69tTz6gPXn/9uT92pPXtCc/sj35Ee3JD29PXt2evG978rg9uWhP1u3J+7Qn792e/LD25L3ak1e1J+/ZnrxHe/LK9uSHtic/pF1+2t2JZOPQCWWQiyBMDCp9V4gyx0j3heXt36/fX9Op86as6BlEh3ogO8N8UlJalJynoYR9w1VErRXjFTUZu7ZzgBcQ7BEefBcx1WC20sWxZ+NDaIPLez6DtoqqwmUCzBgKiEH5H1/n15TdIx6sqn4Z2H6hfCqGx4d34qX2icpfcxkb39onu6WUmUQRUiZNHzfZxDgS0fKvedYyjW/G7umLE82OzrAFXTFODu9EOuJeCyNcOUPJ5g3AVLZy+TnwsjUUGEmpXimFUt3XGcjBpoWHd7rsZ2xRIVv65qnUi+nlH8yPItXpKHEyQj/Dy620HLoxHFQ7CRmYsPxu59jDOyuW1s2q7LMS9E+zg5fJGL82hBJJx0LfN0fa6Tj/7TIx8A/Km6N5XUWT8CPCW8gHP3F6IMLy6z/x00mgp+bkLxIMgnJbNO8HxmOAPFt99QRhsm+tVY/cRoGCrUNG0tYptwahGyZUwrmmXXYIpUihP7UVToEgroQAKjJ6cQ2aSCEd28IpdLdpzV8aclSAB4cAcKYIKtWDcSgjRyyEhgpq2GocJ2MH9QGpvOyTZ9YptW9biHK2tkFVW1i1QBv85+GrxdGsDiv80ynkB0B+IOCIDJRmVf8A9zbCbN+4e0/oE5vdsscPrXN4Lp0mjq9cUov+QNrHwVlYVwmcH2nxybbF/m6O0EA4eq0RTzaaJuD7woqCtlxuKei+0FOQxTJ/LeqRR/Sk86H1Ce9nsho1ywgzIDDJXzILFXQCD3IWHYMoKORuj8tPL7W43B3O+9UlxCg3HJB6BFJe9k93Cg/qntIUFOk8l4qu1If08BqDQfkyM+aRBCegYqk8QpgO1AUK76NRJ7L/uvgXVQsGcHkgMDgh+4//6by2xTOL07BWG3QRseZsWDwMkiNBCGKmZ6H6CBtKEUnqNDPG6VIqK+/BPA3FCVVzQAZ0hzYB8xiCxIC0gUxL4ZaNftiXvesB9S1yicbR24UXn1OHlDhIwgWg0Rxo81cOj10lahWdir5AZ8fzSIXZMoP+/FgYzg617Ey2IIEbgqSqNiH+Q20qmcR/yForwuD5R58aGtuUYsC6+vNavC6m8CCcLgaRPhDpN9t/DJsPRFqbDzSESXUUjheXtBhigF03UnjifB3oQJIPCXb4KfuRr1zIKbsj9CzH8kEd2qXFMlSuBnnqp6oMaKbT8syvXli1xzGGj4f83R5arrY9nK/mcKampo1aCiULZ9XCXuHzrd5eVE+1zs2+vfde4tb7JrtERrJLiimjKWZZzJVrbHyzDEY2OymazZF1zplcoxnMMCQzDHcKsp6rhPeRZYblmqIPz1YhXGzdLT3Sx+HsslLhYnQxNB+W43ga8t3yDcVuOtPL54sVdKtnPq7QISTDoT2HS0Rm1gnJX6HcbvRdHR5HZWxmKlhj5qd1DJtNcA+6XVuQg0hlxVAvxw/u1q8x+MrJxIBNMLXgm15mqnzQ+pJZ9Xk+gyZrceJbwUdnwE9Z2FrF5KCwitkD02SIYfmH84bMH8qYTIPTSiObRBt5dS+sRGqTQ59aXmXoeM8TZI06Fsfzg/IbwpiS8g9OGAZAPQWt69CyRt3fNQjbwXU4UyBEbX5mzekc6lXEZQIjS6cWj85OLx504zOASjyzBAzDMZCXmS6ymz1edraofWBqL/V8k9HOLb4+TkUBW4awbeQotY8OyL7ZF2H5pxvLfasTiP2ObZ+qX7rt/Bn7MxoitYgp4aSYElJMCZ2YEs4UU0LyStY9ySsHrWJKSDGFnGbxMOpiSkgxJZwWUySp08wYp0uqbA43eSNIK3imtDLBMZOd5pgp+VyrrPji+VEQYwjqVJxZfLml+dabGpJL35MVltxwUnIho8x0aogYbWC2VASG9OcXGKzUonRWhDS5DN36Mg9r28FiKs5Qcda6g0PFCzd3tVhpyKvnplVCMF8tS3pg085wmVzCpipBGuFFL1aSWdErhOgV7uoG7WLRy3cMWuQkqTnZhkOOiiTqXzY3vckYNKWoAfeE14X83SbbKCgWanurTE3NarWUiday340ZF6t1vyts4HWo06rjdHiQWgM13uAItQYdSRvdM5MTZuDyH59pxaWmiQz3C1euD7UO8w9djfK7yze9OxzzzjBZYVJN2DWqFi/5ffv9TtXiJd3pEWSDJDZSYvWSCV4imCma49xUEMSqa+o11eHbTQwUWy8bEUAEvDKY7KRNvDZ7vN53zgXEa3MNLy4Bw05J+wx5jQQ6K0lRRVpVkYxTw3LtUqaOn1KUiCIJaTYhhDgY6kGRCsVG0EqZr1IXc2dQu4z7otrRAJ7ic72GgWQDUVYV4aVZQ0bFDPWIGbZWWOdT85xa0pGurRriDC68DM9pyE0FSsgG5v6AmrQfmN/yO6FRiASVmV1a3nKe7dH7Ai/j+01Btam5J7AajEC0Ddd/wGkvGsVos1XN8EGKzdKQVngMUGKPfwvZ40Tz6Kam7KfTY21gDWfXMFSN1fv80M6LG87e0jpHQ3Qb5L26tmsgLMZXVA4wTvUpOcbiwykZlptnzsbXXbC5rdY2HujJ2KuxdvjOD8t/vNv24o6gPs3YNfnPLuFYuplicISlQrn/vE7hRnnQMtsD/GwPrIGMMSW4j6YzcPDszGccPDKNVmsajzlxMdvCQFp/4dfsFvjmoD4BLcavv4yhaKaGy4SBwQUGr/+t4G4LnA7YA6RUZ9ksWIYwK1hqbpfQKBCSJnlXnabf8WbHvTxM10r+1wEuf9bLzTkPBsPJAQcdgbxECiiWP+1p+3FDfh/y6rQ89/tb6BrtL11EjL8a6nAYuLEjKhPZ6GJ+4RyYuQLNdEHr4hSW77zy/Nae3OyQ3tzsyYp3IDKUVUCLKZAelAOzClmFhfBhw1gawkExsKXN1Mf3xcuOfoHy3LzOnkLyJmV5k/ktr+8a3qQqXn/d+Y4zKd8ezwjHmcAYD7jU0GF76ieamODbITyIgWNBRKkOSVFotvT13coFHvminSt3KxeK0dL1xRwczrOQVqUOKEUXR1D5nWJ87PucKrFI7lNpwTIzKAhnErlLC/5ITyhqc8EeyHI5EY1Ag8O/4TJGSDM00rSNNbj+1XA+vwu4Vp149TfQiaWdLbYTS+U4VHXilLRINSE/tEo1venzVB3i6O/GPOu1F8G9QmkH1C0tmigQvKSUpvu3ymKwW9tJ0hXvP6+pPqOaf7Ny5wE1ciF5yoWCSWSo6Z+rLXW7iZHZDk+Bd2517Fn5Ra5kC+xeWAqNM1yjaDky6E/pWhbWs0DohrbIag1EWGhXfyXUHuyk6lZnkDQy2+ZEB/YM++NKB9x7LTcqSHYAbxqdc4Ptgu1qvkKUMUhR1O1W7OAEus8zQ4zFsPyMGOpjsagPSX8RmvTF9Ve5X7mvDnV27DhcVawwb4/U5mFYimmw10bUDGVTTCvoImQ+CsUNhXT1imPpXB9fjRllk+wyDLjQ0r999Py2U5YsSJFFvL+bXGuMKkqgi7l/p9yvCGs750R0ITrhetDHDmiAgOBeYgGUbINsc77VOX4YNLEBjn911pnNRQBgcJfSrabKq49TN55tM6FURe6RAA6sxMPc6ifErU4BvrU2IXRfjpOspAgkdV+037qvhcsu50bV1jEpmaU6H8b/HVap+qLSl0VlwG1EQuNTDHC1hA0hUAKngYtP36eRJtqoE7J2QqlCoviliXcSZofS4YGdY/aeXVfdBHF1YISXE9qb+rOvtO8YZ3NDmR27yebIhWM3dHuUTBNoD6wwmkmeIvVoFAO7nHE/i2fuZympMuBHWi1TZaeyJo7t9UOuFZ7ppzvB9F9hef59nUXw/Pi/gzAEHkP4dUIjiVQSkqcooacHIxbcs5lJLGaMdppQSA4pxasWckDnVxSRipTT2EqBGlJSQzpNDYOKGrLIGroM6tKH4Zhtpk9JGTjTJxipaySZG1Wwe0rAuAJr95RiN07lvDGbsepLbMidJY7dXfLmFq0coqgTpbZUOShCKSkaorTVEl6l7TIOhN1y3NR7uX4xbTNi3eGd3fF4Y47IJgP8J7DZ3S4CQEOnURGW7MU9UTVkPHEKkSEFrubB3VaTIwgWouzKoiJK6FR0jj/rcMsDFo+MH42pZUjaN8fceI4H1eZ4gM1x++Hj5OY4ffDNcVrfHL+skjwGfm98Nyzja3PbER7RS3Vq0Gtym1n74pPs7m/gt8U7On5bbME9+LbYbtKORpP9jnh7DU/Q1+RueGB3w6Azvxv2yst1Vme5zoNJG7tgbgpg6+c3wfVN7cDvZge13ay3FgH8EPvZwcL7Waq2/J3sya9yZg1ipcjWopz1e1TfPm3bpxvts0RmGfIADDmV4zydgiGnZMi81zHFkC2JgnzxfeeO0pQ9SuOY+qU9Q+tE8gHZZAj2ZRaYLg6kp7amuW9L1ZBo3Jfy41R4e0benk3uTMP6rjSjapQCRcj95rhto+m7C/2MjWUfY5VxYym9xkWjr9Nf5sYSFQBj7AeDdl6pWpMhEq7APOfOB3i8EYgtJTY5bh752OT/P45Sz4a0JO6KKPUXXdYapZ7g2xN/uVHqv6eC0N8gvq9Tixtvp3BkL/GOY5SM8WyjHHJpg2IIgGPD68ddbX7006XTuutDzDjt1HNcJ+Qmub98iO9akVwFDjwfxCir4dHmIPWQUlxpMCZipw7vs+8TxhG2A0sFmo6OUA/RIWRaNiv9aKj6lnDpPIOrtBFgxqo0Of4IJ1nydK853gz4uMM8hloxAr4fKH/Jj0Rt96RBHVhHYk56MMpGvmak58gFOof4PgV6HIMDdm3kevOSFT2GxVW6WySCf1djq2Sy6ARR7rq6J5Hr+z5yvYKeQukefnrtddBvgmYd4z4oLNZ9TLVIo/oxwEpVG8YSDjyRyPUh5oQYs0eQn5QOGPYWNCuX/lGfViTdniHQTM3oP5PshZoO2V4jzL2fL38BztMIEl8LnC3+BxYdKF5NB4oHeyc8dylQhZ2gChX/psvc2Ut7EHhpdKhVIwh8VYNWDAKf6nDXhc19o4u4vrpQthH4WWtl9UArF1w9aA2ujjvjLcHVWy6Ok/0egwFuCa7uvcTYe52Rv9c5GVy99VZnNPvGeEtwdXvNU0AVYd3VQ/i/wdX/N7j6LzC4uuVLPqI3E3/pwdXJr/43uLofHx9cfSLx1sYK80SRAkPxW8MrS7LF0DyXoY+asDx1vvwT4RTQEVM9kcpiUihRxf5LpLrTPr3cza4itPoBeh8iC42Lbmh9M9UujOAVzVb0ByhFuCeLzYdbP1fbHfZ0gBCu34M7rgt/cmHlEWKFc8iFDLHbMHoMsiWaHdVsDaL8AZQZirOzfc1sd63yOcS+dA+4KovLLn4g7+uY3nqs2yt0nU3nQFvXX52k/PZX3xge610i/iN2/ZK17OaXAD14jumC28a6OwzsASPvFfprOVlYd0z5tXunoPigvl+sfezVqiCiQerse849u8oWM5vunkoLW978q8Yt5rh1IWnxKqDfS3fdsPDsDwrW0JNCYHqiPmLsJ++U6X1KdSH6B9YHzjh0fslAJT5Cd5mJexyK7F1/+S6wwqXuVhY1gb8WFeBalCo7Fmakg+palPJGOArXopQQKxEEEH4DV+L2oXeI+KMN8bAzod0vvmwXhnaHuyAf2v2J3qnWVuVlMWyXrxUljbRypala4bDGfX4izke3hxvhoOjYjelW7og1qnAOjNwOeyI+/84G5VeyKnC1XjBAP9ulbLsuDAQjIOH2/6ZrRBUqkmD5KC5LZzChfBSWp6hcg5+wXAPEfEExq0rtrdhUWzE5pLkYJVss9jjqnneip0iHgCW7Rem/uyH32UWOGYY4MhF/diAeSTK5oDMNpTMj1KA7tauiqDzDkgiatcbBMtFr1wPxyZpOz6VlJ73KOyMT1bfdxkeUVGKTin6DINe126oYiMrS3KH4OcGkInRKBwYukawAlwmTi1F7TJVAXK1E72lbdL7USLwIE6ESSAqqEy7xdLqGOynLD0EvkaDuPPLWV/cUWbTpaehd1PpAp2y5FFBk9g9AsMhvh4WFaXahUtYtHrVY1cr0Ak7OVk3ROFyMv65AytkC3sUhgXn8Ax165IG6VlSlVK69Xq4CN7mIjocQEkJTC0eiOa5Ct+IUTu62apDIeejs2If0931NZDeUxJFXaL96Uvy0FuNDnQxFkPbTJd86oOUblr4OfMP14EIdDWUBr9pHO8lAdoZpXKGoQwrdZLHKOXAJ2SOSH4MfyEtdVabAHqwyDNXKT0TVTSbntOEaHVpNYLiSH3IWohh1qfRJTYF2XUNX1nc75PSpIqNpg4AV2/cS75/YmJvTf6+kkx6tMq1zmVQp2W7bzHPU9FQZ9NCvQ2piHeLqyXVoUqK2Gk4aJpMdkZiEQJjx8S6Fv6bKs0I2gUf9w0obPFblV688h25Wf/IxPORXsk6T8Bn35Z7JL3/nvtz1lxNfzv87++ULeKh/ueY79svrvjrx5a1b7ZdbJuv54Rftl//3mYkvb/qU/fLeyXpe46C95dMTX851X7710YkvW92Xf/uHiS9nufac/48TX/7D4XbNvRNf3nGx/XL/P/svafpxpcIWh7edUjfdIUS6WgrN8tb8FluDBPzE7j7yljMbqsmId/AiGndEjduNEe07UEVgq1ATVWAyMQNthPBac8j5/UglLTsNCoJ2LQZJuwOiqDySx9Bj7BQNPqzWLGyV54EDOweXvY1ecO1ScO3pbnnXxVZsZXqABkTYVuhoA9cOJPZqp1JReTjrK0V3GJ/QBPtAQMGz/PEn6nf2GyA6An7cm7Ld6nqjLX/XIpl9eaSrI+0O9kRXyksjzslwaK3d4ZCWXLPrhArTUBGeqbtpoZEKk563t+rNtk+LsOe1V8q7Vr3NRBgGeEk8dWTjiEg6I4bA1jnOaKBmGLV1uRB1p4YQkIFVW1ejyYn47dWxM0dT2Piryf3Gi9Vosc5PdXxq0S2/2aED1A1FUu5pRgnGnP1CTtlOKLJSFUOd6eHGYqRHc+n9So3bwbN6W02JzbNiHRvp+BlNlmWX+5le/jbMdDpd1X04XR1C4uD3tNSwudDZqcUQCI70UI82FHMGwVzPFct0jhuhevkJxW6m/IpSFbvr3fTuG4uH6BUG1EOGDtBDy3XFSv1QvXJDsUc5KPbUexSr9J7FXnqV3uuE4mH6YXLNsNjbQNhH76332Vho06pCh7qYL8Z6bFul59LNZ6twaA5kepsW59T1SuvU9erLnO3gNtmeX+PvlHBNnvLmqmk4lVG43nFndMgvxLHrtZOC4nULOna9ngKBKnW7W9cMZxoK29OETl77zsnrwAlHLQ769pJm2psou9QHa1be/df0Pyg+WHGqb5L+tsUHa1r3wTo0uWmPInumodeoC8z7PiMAsnLblypI9Luqh4w00NSob/9yw4/qFlXTqN/9Vfk2lC0ZWI27fuvOe78m30e27Nmq5oM1m/TBOnA+WAeL8MFquyFzPlizmT5Ys9FB1gdr5UV1phPVnvyb8KLqbi3JlSHe9NU973sbys36MeaxolpV+du9BuwaOlBbGiTzYBV9VnPWAttlMO/voFe2JdVVMx1/mPOPegPgTSLRWqO1GsCAOpuBA3/haBzYhsbaXzgaa9vQOGBJaDSR2M/eUn5nm4dZpC/Kw+yBWZBO1U4Ps2tbaZcKOJXfiLfhftneE75k31X3JZsu6Et2RFdO3pcso7lkNV+yGYw5htgHM3O1fsgClaGjh3VfsmmLL1nLIFR+02J9yS6CQ0LoHOFtOJtHtvmSHejQ8cJhxQtxSjWCL9k+2iWw0wlfsn9W+ZLdP21pLFvnfckO6Es2XZQvWZbMXMn+g/uS3Q/Rh+hKls0KHT1nM+g50+EEMYc6m3A+O146sI4O4bG2MRWzYsmz7CSsIvVZP+x4l3z3Fyb/KOioACz53zmxWWU54MYI+DSR8ROSCg3OQHe6YRLMLRuYObtDJhGnTHKcX3ymVaZzaA2gdwNQ63LAtgaHGByJ62vHVmQSYd/GQJdcXskV+i7xpmbvqS8mNWHQ35s6fyw+l0LMVfOC8TRVMGXL+Ai1Ols91T/oGd8TE9iHtGltXeZu9oKnVLBG/PnkHxYr0jn3Ye5XgjVEYPNY3BQcYh6w8CPpgcKE05joFexLQpoQ3hxh82u7//Xv2lK50cu3yI5lSX2HXmrpvHoXYWgwXhodcP7YGvHRn2hm9eQZKBT0HbbQE2nIUFUb2ZHSAqrTp3tW5jkBeX959YWqSFsK6Z9rEc3MdELn21Uxk8o83EwmGMRD+W4v9mW1q9rA0HaInxH+kjYDEdW/gAib783Pzo+JbNqg2b6/qK+gfpIatGWFYEOGoKkiw9zFWtDH2eNQj3RWDk6ZP8R8a3Qt6YccjQ5aMjhogUFm5tznqLTp4WFo8v/oSnuFmuk8gETN1jljRueM/gaZd/OIJW4a4IdwQb8d4FYHcKsHaFvsyaylVaFz87MHGlSNlunX915mC2XlI9A/NIPO7BWjDDuErAlw2lHVUDDEJZ7XYjIPq0YN2aiRNh8ndQ8jh31VpVWz8z1/26XeQl0YwrDcBPY1BC8Qk8+6HqaeU9MbR7nOu+ZiL/KzmCVviSoUA1ZovSEOy6/TQyedImYNy+SMiOhMYGQ6Q5sTF0+o7KADJpYBvxkHq9Nyt2O1qX9c58yd/MMTt2OjbJ+lrY3tnJj1rjNZj1DrFmLLPygAvbx4b7iQyayogw4nk/ZZDFY/2AtoUKj9vKbYkkhXhwDgHEdm00z7vtAxbWJgsVPAzqsSFs/Fx3Xcb9uHqHimTv/MIb6QeTcKmU45xPywcbm85dneS+x9f7NadAB1vNhdk3eIhoLZ175xfttlU8fWi6G/f/jAB0THPLRXDzviOW5CsGpJIWaNERzarpJZZUewxJt1bCy3uzAQQ97uGuIywRA6JerZ9HDqMsHQ1WOyme+tjW25Wdt21X2IvY2/6i4G0Pdah7b3mN/yrrDhC/Q/6YSDvkAbMMdAViDY6wRDntwQvkj81uQ/10PeS5MciW7SpVdwTdDjKNWjih6zOuW1UqcwsOxhS6UwDxAlSbtBqc2lYxm48pHHT7k8yOjro3mxyLG2FoZOPkQOQLxBHpr+Aj0K/lsbZbf6fsvqt3Ja1nDARw/bVWs1uctXsH8rO3AkyMU8w2IegyJPQUzVYXOFIkO3Prd8HVl+FX6HWNa+YQ5jA9niNC0MweZgENGpIGYpKraKreomUWJXqVuI/WTbRy3XLVmCzjB1aj1gjlouXLIGK3NR9t0eZTFxW4MesWn0YHz12bKOmQzlmubKwwuzt+KZF0iU9cVw22UsEtY1BR1pqD2WB3hLbCNwLjPeIzfeekg6sEljt2mFUWo75f3Fu1opj/AFSJE58Ss4nmzfSShPdUIJZEp9RDVarJy73Jo8pabvef9fL09VpD3UQ8F96FmzRPpG2+4MtYTvvi30g3ZzaC+F39z0KdoiydVq/sudrPnjtubtrK3hwZTGWtujgs7vqglT3pJ7ca78m9837M0LdUMKdfWKyzWnLCzfteUW4nd0MSng+MXFlTA4zbefTxXDJgfLLAOhrslRFp4FiZ3iKTMgE5bEmkUXOfz8OVcrN6Ow6aXMBTnjOKPYBrGT7IHCp4ft5SquPV4sdfgO6/hCvLwhlK9DhzBds5VXwzebX/bOohMpumlr7YkJJCm6oid4duOZMHf37UtWSIVfq6S6d3OLulTVuZ6UYSyVeW7oHaavSmtV7LmoKrI9fw5lUzi1N6Y6K/PoqjIFZhKXI6xvmvfYNRptCmUrp/2sDn2ojdlCVTXeKydUxotTklsv/WxOi7p8ZTPQxqAt0MbgwQNt6J+vi9gv1Ay67gqx3LvgHFnmN/BVcI7MBefIUnZoiNZWPRlOBOdYKVa6S+1Fld/OgCxtvfhQq14dPjjBDBtd0RrLY7RzApkeVZ7+VmKmj3CUudd4gFgeaZnM20Uma4bzyPRwIpzHSA8QugPlUm1eQXJIaw3n4TtEpZ4RtYXzeEh9xu++uBm/+66a8TxSymphQ/ZaGgHYsCG7TzGJFUvWrPulhP4npyONbK2vDCSwhSKNZG2RRoZ0IUnfaDV4tnqXx7tFBIgWp4hWesZqn3GiQiM3O9SIzT8Za8QelHtwlV36SA9r4UaGME0fNsONjOw3Jd1J/Y2AG+qM8UayeryRET2ceLY78hfjR4g30nYxHuWctnZmvJFhpYjLavFGhlPYU0hj7P72eCPtM6eFQu1k2q0+mZYvbjIt3xXLmI9ssryNAS5bUh3T5NuIhTJsxkJhpxhdQsAZcw9/6ZRzSG+cXsLPd9G83BFMB1DZEUzOy6w1Zsri1KntMVOGdq8YTMdM2R7U9CRc89pNyiCU77RaV4eV0J3Nipnid+aTzsgzOiPPnDPybIYzcu8re4gGTLocHtadkfva6IycM3rRMDD/PAg6I8+8M/LqC5I6zYxxupTK4IV81BozJaON36S/aYKc6biuFL7f6AcbM8UDSmtuWtPJmCmDZsyUITyPZzrznseHci6uR41QJSPxlz1yekLvq27aU13e5mskb/hxyWzMlFQ0FV5J4+KPUJ8zxF2P4WIQSYHIVDQgNn92nAWd1R13L0ESwAD7buw0DyqQTGexPmaKdxibTcZMIYP1RxLYhhr26ueqjOjIdMonBQ4b5DjDdQF/t5H90YfsyCs4JueNWgop2+VmKMd/ntUNF+ClnpHilX00FZZqazAdZ2VrMBlXbdm0gnN5FVplJGS1HMLoaKjSnZKYl5PTLje5li06xMoiIOvl1aZtmQ+xggm8mxmOkfVdn6I3aZy6TJw1pnr3DcZEdaR3ny/ySoWW6xBi+sDGVhnKlkcPAeEhzaAqI50ioEdqL4SPptgLDhsWZDF6QLdau+Nnd73CgCtWiKlhVgU9wbdxpleYSmfXOPQhRNpWGT8X0dpmWBX2A8OqLFRF2GxUuJDDz2B+gnX642FVPx7upM6lqdfBiUSqwxqHHOp0MZhlwGxhAmzq7UYVL1mud6v8n+qO1Dq1gnR2egXRg8pR3sgHTtkNTdoNJJuPMwZOAQJZW+CU5Tu3YhkwyycCp7R3vD/0XnTglMwHTmndDLcETnnnrgqckrWFR8haZRUfOGUnYHhZpT1wiv/iZRUfOGUplYHiGDgFIZUWFzhlERyWTKxVYKwFTqlvzbwjvdFk4JTUkxUDZkyIL2SGZhIZIkYbmG0oUsPw55caKLqAH/jAKctqgVOyxVQ8QsWj1q2or7i1uT5wCl49v6wSgvlqsdEZ03zgFJewqUqQRnj5i5WMIH/5wCm7uEG7XP5a3hI4ZTnFKa8mXw5xatn0diNrRk/JbGTNQH7pSD6zjuSHreIUTQyXMtvqu/fh4nbvw121e2eclmHb7j1bUh2Ltl4wIyKH76GcECsn1pv0L6ll50jnMK3TSENKxj5tpvOieEt0jaVbuDYPK7L+0oGF0FcMbXyPbPKwXA8fPL5H1hbfI6vF98jqR4CMvCYzof1AiKYQNr7HupnxPbK2+B6u1tap6mV6+7EewGCceR+mCGEQtsf3GLabO4lH08eY+XeEqtXDkohZgCnqfY/eDfiLjMaRLRCNY4fzH75DtetJSSS67iW+vGqb08o0sMCfyz87gIdjPjf7fhv6AB43ezTaAnjopcXvGP7S4ndkC8TvaPfdXvV5Dk/stta73nqB3TBWkSoqdieybKv5U1Yzf8qmzJ/cXhzoZzu/7VNWvvakkpn6GZbBYv26Wy21blZTWvW8VpaTyW/z/4j6+dNMyS1d+Px2AL9QxS7qeIDebGo80uyNuuHUkNBnRwjhoZDmAloL/4Hu0zpr8cYaCvrk1SOQyLAK85FZ06yRzia9sSbS23T+2m4g6L2x0ihrKd5Yyah8mI/68ttb3PLb22XLbwgUem3Lb3fX1EE3RHtn3XbXsvHPp8uxC3kx9FodFLYxS2baU2WT9lTDKtbuy5zaHpd6FramIvp1q6hoySt0zRIsXBriJ1nEdywK8cgh/j5BPFyqrDVutwvF8I8z41n9YXjcG9feM/xHtJGLc6s+gm6KyqYQGYYIx1Z3qw4FRYtb9QxQh7PcqtPEul0myXQGmSSrZJIMMkm7enJSJhk+uEyS1WWSo/3S6kWS7RNDZ8WRUYWeFUeAqBdHRl4cybzb8qGXRNZ5qG1O0DMKIZhDTSHEQtN266HnfSsbgkS2sA/0zEsE2bQPdHYnfaBnC8sERbagD/QsxdpEH+itWuWM6/xE83LbvLzRPNvl1mw5q9btrGG2nC1otpxZs+XFaanaV21vtjxC60TmSGjVF2Gyw/nD1OLrgblWZOPUXq2UhXfEhXdE4O0O0LFA2kU3q/s/163uzwHcIIuqGH5+xAVXOowLbqqHv8QF17s/3zsLduWuTLUsni0e0+9Yqsf0d/1P8ZjOhrQl7gKP6Xe2e0wn+PbEX67H9ONMiWpuByyXuGZ3Jpyjc46huCwAXK90YC4Uph9U6Drvhvydu8wNOUEt7IRcGSem9GDdofXuQq65/cLYsTLw139RTrj/rMUJ9/t3iRPuKeR0WCld0tf2QrjFDysvLB3vV4n8nQgq74gvQkuihre3CAtbVJMZynvu9BKD32VN3tXiDa1xRGEmao1pjPUoooLwOxfW16No2uJz8hpu7GqK3zE26K2xTerqUPyGE+lDucoebJB9+wiiSRU3+PvnVeJJtxbIr+oOkFqjI5jESix0PR0eWfsembaXEyjg+bm1Jc3xktngyF23KHQZHBnftPW45otmLO9iI2u3VEdOnmhGRqZoEU0GRuZI+0vnXUz/SGrWXQsfSd2pwMhdb9GF3DJ83WbY4oi+wckmupAYulIdC/QMtAgh1DJUCPkXn+uVRM6Na1TVhZdmJT3rnTURZ6xaHD7R8VQ6cU+KbYnadHTOOj3iePrV3EUz9oO5IMzJoS4VaFZ2Q5xvu9JX/tvpK3+SK2F5EH9Aig7TA/Ihd/UkcA70wzYH+nD40+JA33uzaDjQD+lAX7U40FfOgb5zZhE5ZxaqxYF+iysLyTFWbe5+WhzoW98WAqpQddNI9Qt0oP+/DvT/14H+u9oc6DPxl+5A//3/60Dfj493oI/EFgf6TERIkt4mHYBZhDqoyYfmDXUGddEADYsZ4obLF7rM9G1PxzbETax79RA3se5OhrixsW26+Om218EQN1isqhA3EUPchBrVjwFWqtowNtWFNsSN0sokFSqlLqun7QU4hZ7qmepRH9bR1eh8I1ZORq1hl0x6B7/2l+Ed/Pq6o9/Fe17/wK70vH59w/P6483CXiruorASjjvOP8WeJ3ALMbSCvrmoe6zu0PfOqeJGuebe/H/dm1+WqkF9rxI29ir2pqbfifh43KHsRCIvxsclI1JwKY6k3Lg3Iya3D5nd96Yv/dmmL4koLSJnk9afHZN7QNIa7FQYwtQxAhckP7QxtA/GQkwPFn4jM05dRO4QWxmHJZVJ/cmA3H0dyheqVVMbj5shx/pV0RaLpz4tnvo71VUMxx3p3rHjaFWRSjhu8wA7yD5Iz5rbRF42Y3yFCOG4ewzHHWkxCYh0ynDcPXz14bgjotHDmGuUnAjH3WuE445F96YjCccdAzrDcQcVMmNAR3xublhwVUf3XShu8OqiDwi9Daa6PkNxT2Cio2Yo7ohdnlDVa96wH+vNCsQd1JV7pSq6HgcfiduD7EwG4g79zjmhw93Arh2JGbKIcagNONGrmjYGFXwd+SZiTqLzu+waQqAuOgJT7J8gQ9KHLrpPXbTsTPtTuui+Lc0aPflE3s9xNMvPsQ6ofuBi18NPPk5kq2yaIqGIqzjcsQ4q/xr9siOVSQxQtBlzRvq/r8VUv6cJJaKUF7mykt2FVg68FsAvwy6yX0DlcKl0IBtA3004wukjvHJrUxFeubWp+NZGAn6TjtiFjcjLPat08pGXe5KtiD0qoNbIBiI3ehg8Uw9jD296OLxBc6jaLjuuPakO/eY1/atU9SvGHHrGDF8Wh3duDnUIY/7yVfNFhMfQTK4QCsluuElHSO5VtnXQBfRFiEi8k4y2P504B5LtX2G4umeWpnEQxWm3F4VpmEaq+tdJJdP1xnVemKR9sO1yC16iwXCQVktDAv8bAzrTGuguXGkVXY+sjZHRBWX0yggNifATiSfmZLgCU7TmdWL3bJk/FU6FJRddU9mg6bwDS04J8EFqG3P1JrZVJ3XZQQ/gchE4GgxPLdVGidyjEzNTTcUDt41UUIM0/XwkJh85BrGwJ7rGq3SO+uh4I5n0fNCtTmR3S+3rrfKpb2pZIb2m+08c7gbH3QYYoAx1VxyaDDnQAz0Qw2rrdpxxpvK7AERcyzOw0aCIaMPXn3TsrUyZb9zj2ac4Fbe8s0veqRxLn0uJx6B8IfbAgxOHGbZ+p5VXJ8aGOiNCXW3+KoQG7QiJfirbKYS0RUjXEBpxNIkUbHojNRwqXCQoHzDLTJbuLEqpoPTEKZxAO6i//NQ/1C9s1jHRMYRDZUAAQM9CDY8WgkUAGEESI5gTKywLyYNilUDr9qBo/eDb7WihB3jik99mGa6fT90sElxlYrITE/rK0T05FpMZiN9kErkeGuDaaM0gf8ovUgRTbVD3DjPIknR6nD/x7elxjvjD2RH6pvRSTIrKZthUd9wQzJaVxemsrnnbjBGLZpY492tbWkuEqY7BClTqAvrEKQoJ6w6d3jGZS5vsLE3/YaGYbiuLkPnbY7r5UF5KBfDqv+Robnu1RnPzdWdLtIWmccWDRnN75y87mtvK/znR3N7ZHs3tjlCiVdFN/iZoj0SkO6kp4cylTnZqeGmLaKYYQcSMamaK0ZSIGdnSjM8TtR8vTYiYUUPEDGVvoL1jte5M8ZCqW6xHXlD0ftQWLyga2QxCYiuyEBLbkK1JglFDEoSUaPvWSoIdySZHdw2PhGMlHhO1akiBHUiBUSUF/gLCjH34wcOMvastzBgT28OMffC/f5ixhaNHLD3MGO0PoBz7nxpm7PpmmLFrf1lhxq7/bxRm7EMzwoy9679NmLEPzA4zdvNOhRm7L1K9lhBXCp58ouq4zS0kqhEaChNs6aGhQJMcl1irDV4QrMd1UvXQUGp2aKi/Wzg0lNo1oaFUS2ioqJCzX+9MmqPWDA3FQDRqVmgotZOhoRRDQ0UMDRUxtphqCw2lqKlSvICu/itDQ6np0FA80qIa2gsvtymlOLXbtA8BdnfDpB/3+v1+qPpBPxLXz1/v4H5rINu9BC05dS4VDoC5ZgaYb6fw7Xf58/tzaUlLH2gTYTnASGcheCVYzcZVOjwFi5wpWQjzOZ2jBFgbCfKVovdPM9lcHRB2Dgs76UPkBb1y36AMT8tvlwmczklyuca9XwMmZgUhfNmv01mPnjKWdDow/6nec7zn/j2hgMl3v/KtwWIrXNN85IID1upSxqExRLCWjPZK9cdVbXjWFJFdow37czjewMUVs9xZgQm+nPFWvx89uXK4OnU/TjpJGklX3GMurbVgdYYC51J2g/VfzyIL5xdDIMPeMeOAaPqXOM8x2T5pw2MEFNfCPyhi10F5ZVqUyJpr15uOfcnwkuEl1IpwjhW5QUc8KEMBMms2m+2NZrTX9Hpz4kTUiqLfXAbbzYBNh0wW0QeBnRi6bPAIWTFjQ2tFzDDL/nYjwGlayeNX2mge3cBDdiyimkv99AVWnNIdsnT1VC8CKWRT9jQf+gM2lWdbqM9nMF9OgWAiubhDSXOMpJsWCPi1HCdsZA52mcNMCqwUkKX7dqYc0hUoQsshLrJzSMAKbwE8BSKqtK6wcxBTuFzbZKoodJPY8ltDz/LP7JsGDRM/3UkPVspDezAoZfILK7RmsYXeXSu0brGF3jON3kkPWujmWqGVVsIkGWO6eCtaIVYIs84GzuVqEnv6HQQldxMiEJnayo40cbGzEAQWE1C3VNgmPmkVT/JlzelxIYxoCAMGgJ0dN1G6V/6Rs5/qcroEGtAtDjrA7AhEkeBN6/IiyILUJtIEPDqliHQsmLjI5c3GOJ6BZkx/Tf8Di57uVEZcgXFE8xGso1+l5TtXji2XTqdta0n7UEval1rSftCStvWy6bSbWtI+0ZJ2T0va5sun066spwk1hhW/CeyRfY27WDbtnUOWKn3s7EJSh6TWy+gg/T2lWrRvAICKIK/NgfXIJnpkFS4duxsNAHw0b3li4zRdPOt3JnQwWqUvr+QYWb7+nt6xpx1shrLb9BahgYtXZS/6B6gvQnLK9MhF+SkVhY/VQjzlXk24ML7420usolala00mV4Wjwvwr+J5Oz71/pSJCOgOqYM7P9viyWlGgkw2LwnSxGQtlihZhuMm56hRItMjzKk5+chuzr5kc1SoSWLvD0Gs0BFeTPNmFkY7tna+OWE5JWa28gKCJH+ESaCDYAuhHIOV40og5hk7kpLMAMhhI611QGWlMdyW1QWgdTXPeSl6mHVYXywplGgxt0FA7XxyKHnzb673wDNbi9Bx4VN6bCeTo2JNa144tgy7JypvvuIT3CBW5pxqiHKnlj0kImDOboAOsBekUTK3cmOBlZcrEpIJM8J8HeBtwDHsv2UAqiiZk0WJiFnAp/QO8lB1Tc4QZEXDfkUm1YgTnBRb629Xj2MmSsSVJAVsEIvgZiDjRNf/URoDGtBCEaUCkIwxsJIzcyjQXgZ4b1QZu80qsnUSrKXkFEIdjYdSRRQCYSVZqSCOr0WFs4TJpuiiCJoxgU/ZSpm2PAKdAcDoBs1Y4FnEhz2If0PjNrRWUDo1I4k3cU9khWEirOP9VdVdGd5w3knTQ8UqjTnm5YpZ6MioxsKc/xJ1yS5SOOhq/p0x/P5TmV8p7gb1b0cc0EwZUXl13Z3RgB5wSFMg7MJ2a1v2bN+OUxQD9xMV4NVOEjBX1fM86v0rRurKTf+piqwU7F/vXyfjbyk9bXCvZfm1YBhurXWrA647UWZa3/2dD315dG9tUVCf/ZsNytazFbMbn7zAy8nH+mtbPrqy5bQk5TVyshNuAp4WlpfQPtkfLzrXya6qVn7yd9Ei/LG1ONowjfqCpk0mBRJKfhT7RUX6ZfEKyLZ/u3qFQVm7nxdTPSRc9Ax1j/YRegcWWmjZnLYk7DzhXCHUX3jsC8xNAVdjVJhHwqUMed2FZnBy7CovNcZbI8k+jBs1qsT/4c1b8QyYjhDwTflQlfIwJPxbUIqiVPh2o3iSCtKAwP00LMqJrtBJkDzyf7PEgcpzI8QbSgqKPH4UTf53IkhKX96kT8LU8/wyYivfo7Ss+rXyr2giq8kGNvyXG7L1yszmUik536jTpg57ReomCQPd0d74KEx2PQsSYTXUgVgFuMQmQMEBfVukB0hXS++jqyc+h+ZzqqNkZiVidUG2HYUrciMQ6lhFB3PiEFuDs0YeItJFfgT4ed/IfUgGYahm1/FK5uKNwL5GjYjOo9ICJSTw2/32yNcDnz7OMNojzdm/z7nrsjXCKJZZygV3oRAyxk005jnClGoMCbmMHd1YJO9GYyxfdCGp4pJV7SyUCxv3nUMDI/5xicH4ZcumAbcTVSmH7PUw3Tor2xPVKtWgtRdLK7Dn4mZeTK4R+LgaLKXdWW7k9Xb98+dtn8W4yXYGUHf/pvH+Y/LQCXM2MGiA/YxX+++xVadDB//bmIk37Rr9Dyi8nJ9d+JLYKxZRKFJ6xXX/S31TBq7SCEhv/7j9qfXg8F6K1B4Sm7AHhvaeNg2uO6eDf0W84+prDwkPxdZ35WoS1gh/dtD7cdhQarsNG9qMN/ldH3XiTepXB1Pw/fBUAaHuYgj3ay7gGf0LxiG+74uTR6gADErDk328MO0g5iUZUlx9VMBCaKNPGvcNC3M8zPwaJXlX/tUW//FIV3KW8/CgRGnFRoW/0byYlqS6jmHzzRZKiiuOLvkCVoKkQDRiLNhXlF9Iz0ZfhaVgFgsdhLFZHq1xwlpIicRpmjUUZc9NncXVCr4HbG5iyOjpxVRHZJt93lM6uhUteATyGBb5OtQs0pCOIJIkODRpvPua3j15585dXXnr0tePMNEx6r6ezbeAe0OjBdCTYUG7/FcMQElPg6nFPD34T+Jnfq/XwGj3YxtvzA6Rcq0f5rYgyeo2Lk9PHBexrfwMl+uiiQ7cVfWSXl6OvhhVbV/cFGTPm6IoE6LKDdSSCPPsZthqXg1A4ZBiI4w2JXKJU6kLxd0tdBfGHrSsOVxIth5AibOZotlwpo8It0TEE5wQ77j5suWhG2EEKAlam9o3h4rLqLSqG5d1gOMXIsqM5PadH8wXicuUm05xZc7sOK1XmoFnTj0XIsyDrPybSEaXAEHgkSExgQjSX/n+UXQVwHLkSvR6vQ+vEGzQFXoeZmS7j3DnMzExjO7m9MBnCzHjMzMx8n5mZmZnp9Uj2lj9f1WzVSN3qfoKRntqj8YvN87IqExX2S1Q2rEhWNuAvq0L421IpFQHzuzI/q7Ie5VkVbWtc2ddFbN+BrFKzbi0w3cXnJyPRjY9Atnvunnj8cKXRf2stjd+anMUGENcAaU36JYjMzRXLKa763W9/8fePf+IPHLnIsY/0KiuM3DmaYrGmSKFpWpuhWUzCKrU5EvadxcXsaWegRXHVy798N8u+tYqWe7UV5a2GZA014VDNK666O1vzkYf8Si2gqGCIDVMTFcaiIhSiqFpbo/X92obyNmS/ru3astfaoa0C7VQB6HhtT0Ad0B4d0tqRdejIoed0O4VmqzM6oXOkXWimC82YmzHatbhSu6Eruu3R7hR0p/+kk/QoztKe6IGee7RXcX3tjV7oXa190Od+7UvNvv6gZ0r7EUl/9NMB6K8DMQADx+sgIhmMQRic1iFEMsQjSenQsL4Ow1AMi3Q4jQynEe9uRPGTv22gIzECIyt1FEbdr6OpMHpwACe/NpaPwbUYU60hwvu1mPJi+/MrLffUsURxHcbq9bhOS3A9SsbrOKIYj3EYn9YJRDHBoaDuxNBsTcJETIqU4wOTvRnoFPbhVEzB1EinUTCN/pOu0PTwkVsDnYHpmFGuMymbGZ9UsWluVpjQ2ZilczBb52IO5pboPPqej3mYn9YF9L3A+abuQjpYhIVYFOliGllMI0knWRI7WIolWFqmy5zT5ViOZaW6gporaqu6Mnw2qauwEqvKdTUlq7mZNEm+rgkLdC3W6Dqs1fVYh/UluoFAImxAlNZSAin1QPK1jEDKUYbySDfSyEbbkTrJJrN/AzbhhjJNO5c34kakS3UzFTfX4tgS/jTQrdiCreW6jZJtFp+kpKNuZ4PswHbdiR26Czuxq0R3E8ce7MaetO4ljr0eR0etII5KVKAy0iqhlSqhmaSTVYu52CeoFuyTMt0vzvMBAa/9UqoHrchB8Zg66iHyHz0sOCx6ROjnkNTU96gQwTHBMdHjJjkqNV1ywsqcFJwQPSU4KXpawJvTMk7PCNGdFZwRnJXNek5wzooncVz0vOC8eUniiOgFs35RcEFwUdJ6yWBdIqwGDvBlCdvpFcFlwRWJ9KqErfUmwVXBTUzeLIgp+i0C3t7CnFut/K3iDw7l6G1e4/a4Qe4Q3C64g3p3Cm4TvUtwp+jdAt7cLVP1HgNzr+Aewb0Ec59V9z7jOc7I/bGRBwT3Cx6gkQfFOXlIwOtBKdWHzf3D5t53xCPiGvFRCQN9TPCo4DHZoo8LKHmcNp4Q15ZPin1h9inBk4Kn2GNPCyh6mhrPCJ4RfVbwrDyiz8Xq0OcFz4u+IHiBmS9K8ZksfUnwouAlqdCXBdR7WfboK4bnFRmS1Zc99aolXrW1zS3qpET6Gt3Gy9Lr4telNwS8XqfjNwW8XuPdW4K3LOymb0uYr+8I3ha8w2q8K3jX7rbq+/wAe7/gfaIfELxf9IMC3nxQJuuHrF0/LPiQ4MOS1o8IPsJWFQfhozUQPlYD4eMCXh+j408IeH2Ud58UfDKG8CmD8GnBpwSfJoTPCHh9mhA+6yF8TsDrs+yNz1uFP+/HOD19wWB8UfAFwRdp8ksm/pK1h9EFp/JlCRvpVwRfFv2q4CuiXxPw5mscHF+30t8QfF3wDUnrN21wfNMPDpb8loQ5+m3BtwTfpu/vmPHvmHGbhvvqd6VY9HuC7wq+x475vom/bx2TdPIfSDH7/4eCHwh+SIUfSXG8gdAfC34k+hPBj0V/KuDNT2WO/szA/FzwM8HPCeYX7jT3L8TQmLlfxuZ+Jfil4Fc092tHn3fobwS/Fv2t4DeivxPw5ncyS39v5v4g+L3gDzT3R8EfxS/MfzKkfxK3NDvjf46N/0XwZ8FfaPyvgr/K/fq3uAMm698FvP5mdXdNU8UNp1YHqApQHUS6L3B6+wPw2mcsy89OAVEcDHAgwEHqHfJ6hwPwOhT4hzqlR7zgaABeRwI/jefoMS84HoDXscAvNF31RBCeaa0nA5wIcDIo11Ne8XQAXqcsmugUzwThSD0b4EyAs9Q7Z8nzAc4FOB9s0gu+2MUAvC6wmCdkl0zvcoBLAS5T74rXuxqA15XAHUu5ibm4iYnF8WBbrDcHuDnITX6XZxVIz+xXn1QtyR/j0xW5GYqWyjA0H4oxphaDhngQFqjI7pZFSpshbDVkzY4noOEsbRSKGu9Opmv/k1hOzeTWGI2tdJMMbzO+pinkOrI2R5uxdHP7HHZaW4CvgdW8+aYtw1HaCi3RytUzDwnkuRc7nOl85JvpAksltDCEo2eRtnY5bcKO2hZt0DbSdi4HYVdHziJtT4sdUIAOaI12IE1LnbLdrrPcER3NcidXqjM625zbBV20K7o+ot3QyfMzk/ZAd/RInbHC2pNGe6GnkTPtg97oM177hqL90Bf90tqf7dKfD7av3gBWL+ZnrnqDkMCgTPUSOpgZg2um/BwdEpKuMWtopMMwzHfXkNzkWmn07/m9U6nL88M3HvkAFbNrA/Kk3vGBE9RPnY2r0IA2GtpxwPicReYF7yeScr9khg7+w9DJd0OnhVuesmmMHlBvq/PhHkkKGti7oW74pOkngUbE6ETJsInmIFnD7tGkRHNDsQGDVFqbxqOrae302Mz954fmbMAWaI4W4wrDRyxeoy19FVuBQyjSvPDuNyw7n8n8SAtQgDw0L9JC+i607x6Ib+aiGFlrFGkbtHbDp0TbhWLEHkir0r3W8uf2YT2j+NoRHbQTOqLTeO1M3S7ojC5pGy21QLu5At3DwI2YLdoT3dAz0l7oZTXozRpwyGhf9HHjZZz2D8VIPAakdWBc7YG11gY5a4NpbQgGY8gWHYpBfmiYteFhAx2B4RgR6UiM1FGsXvjHO60BRvt2uRbXYnSkYzBGRyUxSkMkEGYaIqXFYaWORTHGRnpdmDAej+snFdZ5Q+m6JtnXSCLISvi2KyHgcSgxkq8TMB4TJpLaiyP2aZ3MEpNZA/eGvk7xQKaC/N6ze/NfLxne8h1bt6d7hRkgyY9qKH6DHO+NLL9fXZY/8d+xfO9toTe2CCT7GapvxxnuiL0t8QpLQcYfGd/HMvOW5b0tZ/+swHJdiRWO60/U1fS2BquxJq1r6W1txts6b2w9yPoj3UBjG+iN0L1C5BVKUYoo0jIqlJm3wHsrD7N0I8p1EzY65j9R0/RG0o8b07qZ3jZnvG3xxraC5D+qof6tCT38xvesbtu9wg5wExDpTirsNG9SA2eXV9iN3dgV6R4q7HFjwVM6QtprewSpSTfQClQYb2JMT6uEQWitFlSiWtK6L07uF1TZniBtu4N9tkEYpweNDxwSHBQckrTbF9CoM3jEhEcFRwRHJdJjzMYx8bFfh+G40f8TguOCE1Q5aSonPSunhVMSZjYLkZ4x8RlvwY/qs6ZyTnA23i+cs40CeHOB4C6a6JLtF3CJ4C4bEbucYelXbKtgNb5Kpli7Wdhim4Wb7W6rbRduyejf6nio3yqkbKuQ2SlscTsF3EmYd9k+wR7auwUsdLekzlrgSu8x+PcYfL/e3WsZ90pmh3qfhND7Lfd+2nnAdg9+Lr5PcpNvZ8nAzITd999P2MZhIbVRjGzHmOKzY/nKPxJUNXBRmYhRmQPxg9LIjRUXlIo0xwJrqfPx2tHYlW6CJlbh3PAUS8fzdqRNfelmvnRzcMmPtAWaooUv3dKV5oRtXZ3nUlzjreoFLlWIQlsZi1yKURhrtjYu1RZtrbnbhT9p4ubqSJUd1R4JtI+0AzpAbaFtoR2Z0zHSTuiENpaT0s5IuEhMFxS50xgF8ZhCnuNCLWMuhMam/bWrR4m1q69GNzBYE2n3sFB7IBs2sydSB/Y7LlBYlwtM/Xdc4Jqka/gB7KCB9DEw0kEY5DtowHtd3X/xn1f3C/91dX9cpNn/9uMDgwnW8VxszgcME5afsEOodZnhuLrM0PNC98/h0dhzHStqQyZ1MTaZS1GusR5XpxTBNGVW08iWeg8mlZt8K0sGvGciS891Qo3j/kOoMfyC/aFBc2o/30ouErlhHQdY3ZdCNUXrKTpx1pvSejM0NSrrqQgJrDgCm9Y8Ws6rpX757O0C5KPAUT9PQnI4Y7NFvPci752j3DhtG7Shdxvl/o0TUlq0Y3nPbJEwsdJje6gb8cjQkgl1aAmxdM3w0G7hO9dod3RDd4emBw33MDSBn3d6ekS9PKLe4JiOLPRoLvuiJ/r695x9gX600C/DXPuzfwYwa0CkAzHQ90//3OSxpNxTSymzQmh8MqHUNhxeKdtRymy44zsucp7NqcmxSrqwVAtOVJW10xQFDakdd2x9G3zGJpEzWRuH4ghlWnPjns5lG1j5lKaQ4okAdqFYF6JZqTZ3Am5ITNASLdH8RvZlC9uMjIydui51h1IMYr4tmEHSwSuIe7UAhfEZJcspokpRZk11Jti3tvyZK9fBCW3rUu3QzloSaKsKuD4dpx1CsT5Fx7R2ovdONRVwW5SEdnEp8k4r3M2luqO726d0Q49SdmYj7YUu4NSUulDtujMbvW0YZ1uhPkTuOahFkdF/nA4IxW1U0joobrhBzi+1BzsXQzDEXAzFYAwt1WHUH45hGB7pCIzQkayyU2MY2QqNdikyUCs0BqMxplRDhDoyiZFaTDjF9sxmm3Ssa6g6keQJ/xRJ9rFkV2AiJuok77GFTsZknZTEJJ1Cq1O81Ryd6hBMwzQrMt2VnIGpFkz27ym7vJlOcRZmWWo2ZmNmpHMwC3NqEc51JudhHuZGOp9+5vtxmdAFDsVCLMSCUl1E2SIOTdd0i0OSTiy2ALMuw1IsG0eOKcYxsSKtK+NqrbRamYVVWMV9MecH35Krsdrsr3GptVhrFtdhjUWZdQPWY8M4jWiN7BKlaS2LrZXVDpdylFvxjaEYw8SmSG9AOW6wOm00ipMO/54hm9isW2q7kBwzdThe37Zhm25JYotuRza2u6mjTox5/L+LMbvGqnDPRCUqtEpQqdUxV6yWEuOOMXXcV0MdY+QHpAb5QcHBmCwdsmXqsPFIHKbiEeON7r2bo0JAR+Pzcv55bKHHjDgeFxwz7hjpCVM5Ib4v4mCz4fo3BDI7JpA5iAPR9kmEfD1rtzgrW1z4mXdb9bzF94xKuqBzhkeWWKhZakPNab1qtPKq0USCM15qno1PEnnMI13U2egjb26VcfoP9t4DzI7jOBc93T3pnDln9wAECRCAn3rmwt8HmZC9nx+eDUm0iYFpgqSSc7hRMsOnt4B9SV3K5pUhYpkhmpahzGRyd6FAUQnWpQQoQ7YCJSf6ipKVReVEm5QjFfn6r6rpCTtnd8FkP16R3+JM6Knurq6qrq6urroZAG4hdfEWB2AeAOaVx+UCviSLs11ECwXgIbT9EJRFerAZRmgLFTJ0KuSsUx3tq0tl8ZVOWVzvHXKLu2mXHQM6r+H4dEnRG//jAX94cIPVb6MNWtyMi+0c/lYi+G7GkTL436VfVKGiDXN1SYcrKo0qyrvdVtkrvvu0+dxcX94UtFFrbuOgcWxjDHgjN0Akwp5vVEgr1jfgKKy24U+bhA6MjF9O2kTA1WwQh0Z2MGyeM5CTB3fVnO7xRa7kOJ4N6scxan6vrpN/UZ7H5E80nbZMzpQDF+I2557gQ37mbtoJUPhT8n+U9C3+Gy7O7p8dxUHt3lmPToi8Ar2u/MCk7wD44W9e5X245HEg/qKONYCH9Cr0ZuJQbRG3jJtRhUNl3f1lTkKdFv94deXVKedWiy+/hEPOWMN9lhOvgHULDZJqehNXfjOLeA2H8WBps4oSFxLyvGon3BplDEP0PWTcuHG8jrFDpcZvIykW8M2brgYiGCY8J7fUDnVubniIgG3r56mvMBL08q8OLOm6NVXngzWXywiyzwccMRxJcVRh1GKDI46tGqgwqxyShUdrSJQMyb26atbBxHsPeR9i8hhCCy1Gp8yNsJGDxv0RDA+eQmtlXZXvf+BKH+D+mFpDPoBQK1FGxNMLj3LMeIyY+NcCg1Zj1IQRAwz5A6edzYdz627gbeZHNNEmh2kBgTe0dABkpplMp9zFJajWFoTz97dOQjVYtI1qcWb8AHkMAs49oS+CHh9MKvxv7MmIS6xAIVgI2pp/1NzN5B+lm/5Rz1YK/lF01le5MD24ciBOf+Puzz9v3RvvPc1f0CDAFUlb7R14zt9UvcdT/u+3NlVF3nPeJudS5VryjyqAb1TgxD67G2m41sDw4H62ZgF53eD8Cinw7DsVw3cqsTH5TvXh84OBz2P0MsKhyqZDUp+eY225J0/EIalfK+JuHbA9ed/2beIckRIbEYi8j3Wwtu5HYjJB747hrrRoI/R5YM3CfB480aDOBKXFAQipWxycQellZc0TzYz7cUW3uk7fHWi1jyeBCn+taUzflplqGjMY3AB/7vDOnIO3qTwASsODE/w9itZdXDArIUqKbXhcPswDOd0YuDdbm6cbUw/pWM+DMheVcE7FM3rSALJjEpA7u4D8Ra8byh29SWDu7gLz6QlgPj4RzH1dYO6ZAOZrbTBWVV5p5sihJxrSpMQNrqLsUY+Z5WIH46AquaU4UF3OySV5ERZ+WIQG8XRnIQ0ytYe/gIe1+2e27i9o3KOG6xQY/NsmSB1LBY61OgLqMMXIXJgFzHghM1fkKgEhg7nACmAtOAZ66qD4w36YSb3xo0VJWDzSoQML+WSREKR4F96k2K/wOpUNyeFRZaOSVYMWf9oIp1QjO8APuS9TKSzdcTCdGTqpfxDbPv4cL0+5au/vzWbTfBxtbAf4WUPs3LdTFE7UDgEjj+HYuJb4G7Xng1mw5QmOuclENS1CIC7G+ErbmEgopW8TfAs3PRS3ESw5CyQi5glAKRYkUtvInrCYnSDxRwaz2MZcQDWApmZtasdnIColJ420Q7vG3Q5rERCtQgRBp+kr5PW5TjX1y/8ZmP3BPjjZTfDge6Ih90myyd0Mw8n1WVTKnp9jD8RzssRhGbKVQ4/Z8DBsf5TChjUb/LcfboWZa08Kc9d0erYceblL0UHv+xTf/gXf3i23d/Lt1+T243x7vxL97XWkLHzrhCBg11npRTHfr4VXqC0j8gDpYEXJ//XZ4tef0oj8hIkWoIPiPfc0MlN5ZVpEwl2aIm9ClmjAZSMN5h/XkRqnA5g7+n8lq8SuahwLN2D1PCIOh8NtyezGSwM0EH7FB9M8bkn6+LYsqSQ9AuRxYC+DD+cUB9i4VpWzxR1AWBeQ1qrHcmwjunjuJKTM/ekkpOjK/X/uqxIwX1+0h9j6oPI6DbfpKNpE6ki05maCwAod8kP2fIHxn7/avYJq9/VbwaiujqpRXJrLuqo++OqrOpQ6DFVVzv3VoKHLPcglPVsEUspA7kovPvgtSov1owzzfcGaAxJltwM1QfHF71VLnwzg3KEaHA3gJ2S+5jpYZ8Nti6IQhukuzZ6/H9dENTeAavgI17WKqeeMCQPzxWWolXE+pyeRKI8OHt+tViQUPr7/el1fJgcAWtBjdCUoDM6JAC0IpnlhTudu8M9Zm3IqVZ8mgyOn/+CUU552dvHN0xZP//N3n3LZA2+45z3sV71gAxvsLfTvYiY9ptOmB/4dmg+qzSmc3jiol2cZXXVCp4zTAwqHCSW6jmRytNERG7va7kD5OqYPGAoJ9/o7rqmNM1eXxdYwPJfCk1qxUv18BOIiJgTK8RlWkSNcV7Iw5bgDyMaA4yMKSkZDhfBDca0uOf0YSnCTFjGad+hFKX+4WMxjbwMpL95jYw/v/E3zNaz9HLf6cNZvCfA+Ku07rUHL4hW3Nnz9rs1X5YNLc3pj+7v2/6q8GezDk9bAHTSsehzV/DuvS/r72mrob6sjoDws5iyoA3kfmDPy6LdBaFhr8Y97EdjwzE1Z6DSRLKBsLRr5OvB01BP0HUBPIqv3FqE7PADNBOJcjuji/tO6qeNxbby2OKCpRTiasAdE+FKQpPu9Fb/ON5BA4cVhemEjkDN0SCcGbtc2xIeihTD18imfu1ShdvM5jvtVU2u0Pa6XW7HXdYfPP88FwvE5+mRkbEhFcwpaHhzlz/LwCNYjjg/duYI5A9WL2shBPTw92J2LXMGRxVXMHIDI+AqgK7fwlRIq/smj4nvNfleZar58RfsIFBrG4xbSQVEMWmh7xbB5XDmob8KxRS2g9Hi1FfBHlq6AN3L4q2uNg/jKowbtc6GUirgdlJv4/qp7avJdW8L5O/0ZxMiax5sD0HuDYr4+EyR4MYdtIgOV173+yosONNbvhtYiA5r9oSPLXA4mO9Ma7D+dztJiJ8n5b157qQ8U74UGayQ99IU4ike2B1y3+9YV5vLuK694qH2b6e7aVt8zW+/YBu7YOu7YmDp24I8l+Pu46pck953TEIY0k/dLc0WQvoDP1C9HP7kcyiabmyZSghSXBK2JHGoOLJgNR8ATOue+CQ+pse3gO8J89PBgIA+L3sOhyCpRZH+21/gWoDCg98svPvby+Jh7cLfowQ/pc1/7f1ZqP88kmWZA71RIiM6mrzuk5e87zrY9gsB9y5+ssRPAQHPNx+50fdJhK+b/QuGsR+VgZcHjNBet9Fojts7bUWqabZVvIfBXrokiWR/rS+J9E6yl1VJg+UN7rI6hVEsT67WsvrFYeD/0QCsKmNh5Qwq8zb2Blp8A4lH9LIC2yRPdJX6X6ALj16JTmHjBGv1aCJeBzKWUX4mepLL2TflMYB+HaHFUfohVLixWVXAkShkcY/1SGbiqQEjVgtSf+sOZP07Lpx7v1IRdmw/8rB5Wvn8y1QPEVNBTRhuKYY4/17C+w/eN2jUEeZioiYZyL1HONXiBINZGciHHVIzp6DHnVLOuVV79HL8VqAAJFsPZ8RHcVImZGtXVqzESQyCvgyL7hKazs70Lj8jjmZ9dzJMFrqXeDm6GTR5c/drXj00HM7lmm/jmzXv9bzEfebvqvHVlFqvb03+V/nu/KzS1sCitk7baKSmX7FzMp22ysFgB9yXRQyo8stMCgDuuueMVsMUV+o6MTKyXgDzmdT52xwq++8Al+/I1u37wwL8+8Pxf47Cg3Ah1uCgv3mvHTgPdZMdvO5SvteGRPHGdaWkxUy1zKXjkWGWRJqwcciOH3NlHqt3DhXzKY2G8c3Fx0Sbz2ciuPX3DE07/le9mfYeYE8ZfAHMC9yXKe8fms+mhkkqykef4bLq6PKG6XNsY+KIHNkk5KvigUHRQ9ogzH03fkJ3IVIFpFfxJxD+06yYSxEkLWUIYrVAItxPrMLR+/ANq99Siu18/z3fzdmrh9Mvv+NBvz/y3u05bzNbbqdrdlE0pCaLCqddZGvcmAu1ocSHf4FC4AYg6xONdJ8kswbFKRwquwnz9vIMI8gFVY0YGWNwoMPnabINr9kmn/78/8qtPGz/3gZ9155yXrSzbkFLDjN3QVS8IEmCr6jeg+rXZeqrl18773InvfeDe087trMWhwa7nWtaXtayXWuLCQO4J3A3cLTgIAVEN0VNvUD4ZXdT/uI0npHDPh0CStmArWuZT07/17C8eeMv9XwKC3N2P/N7Z8TfRESegUXbonpXUfM4eL426hCIIdmgDVH5SRd9MF/4eJ6/DqnN2qhNd69GfxbaMmFoeFfjuhtqHPGRxaxzbiEgnyROO+Nya3QY2IjO/deJ1DzkXIkRUagcsY1OZ7TBHwtJZn+36PNvlQ6y4jz7XDvlQd9fMl6IRKS7r8/tLeX43xbv/sSvVDwKehI0t0jD9kFFpd8T7ScqGKFqsVB00sniNWY+FLID/5nPYMtS3MapnxMi0P2hN+0CjI4o6IlJK8S3T/hCdH3ZP+41Jv6ExQU1nU9XqdaNht240FN0I4LwYdZZ9NDyoOgj1Af1RBhhg5QZG83rHepb9PApFVQYCeSMrOiCcWRl7p3AmNPbDImh2v8qQ2RjKIL0/lOUL1isOL3x5UOeBVWez9WyPhO3moCyBdYAYQ0Q9OnfzQESmKfcRB2zuPd4c1rvsC37a/ZQFb9V5jILBM1BErBMOC7BWAHz1iO0YF7IhA36sbH9ythLccPMw+cSc5h040fz8Tvf8DU7RPwCT50Z+gn8Pa8J/7P53G5F7Xz/+AxR4TR6hSwQ15WKMzUKAcqf2OpasdmnKXu9x39QzoH5PIxqX3IG5Q6iL2vTQNfIkgsEFThDW+LooSzH41QbYdKFlQLEZlEhI5v0XzkyB+RYhELFgJoLx/Qr3os1ZGcwMFQEsqiHQUQUa0GAhxecBJZMeIVMGOtJueE/BXMbAqspwxw3CKzRftbrDdaqyToU6lVQ91M2OtHtAtinNNwrd8X1QS/qQNPpgUsZyd3vTDkhpeo0yCOqgLsGQQu/Hv/N6X44FwGtyidGmYThs8EeNQwxzCDx5Xeldrvx298IZIZ/PrloG9KXAQxQnrHoPidpDZ9kuWbkBvY2WebdHGss8kbDHvNcJ+n+QzShZ4PNNsGNGVBlK2EyM/C3feOBAw1ACc8cMBArbSuJ6GuvIlf/8h9l8L6kQtmRxYXmXxxZbbCQmjtvecpkvlYebXKHNhbXuIqHZjYXnNl78UVvRxpiu4pot7K4OW1htfybs3ps5hk9s2L0vY8sSoTT1LzqdbDA2Uq69FwPrI5aw/Zai3r8tCytFPaSSPmZUHCitDVgGexDEr7QV1fKcgRn32tdcUR8R1JX1eWB4GDoqVlXFaDhZGHkQrSCOl+AFzMCCfYRqX1q988CppeRRXO/YGsYGpwVRYvyqIMMhtmGM4/yA7Nd1LKNVe7R7fDVJXX76Yls4uSqPpB2JECYyyP3L9S3CRLJUbo4V+rRVBkoy3R6lFm6n6x3uaobGMKm0kucqs7/FDBsFG7U4szO5IQB58DS2j2y17ItfmOe+fnyt9MEGYBR8mmkf9/VYIAY98VnY6si9chdj1v0HpULvIbO1ck8UbcFIrNR33NvQFkxDW+CECtCjXMWgWw5jCI3KO3ftcWKNk3KC5p0OhiY6/UIcRjT1MQs5najyXcfP9jw6q+x6CLZvdD3k4IawSwIFRvxgZzkIOiki6A00ix7bBtLL9Kr6/PVvHVefw+X7HFZ9Nhwju8d9jlhv8n3W3OfQ9zlCrxt9jjDImnva455yk8fAgQSuLt8kMgnVtKsOM/CNX3iUzMBfU20z8HdDyWe/IePk30AlLvZ6/e6CPCrVu6ip3kWs3qFVY0whGJGw1OFcjvk9ObHxs2uq3kEFVc/9SDFsaPZRjlU98PQB9xxHVeBc759Uml7i3oiilzQUvQvgK9P3et65/PSwsklTzTvMSFCk5sEhbrKax8UqNe9c6k6XknfRHng1cLV1Ve/Tyqt6UaXkxaJ4QahyJUmXQhRj1p8ttRSv3/kQ11kgAd8ZIBdjcDYSPWl51ciGE9S7qFOxY9gTFTu8XJViV+9Bu8Egswet2C1FxHJa3eVNre5i/DOnlip1F9dZQphigkZ3wfIK3QUtfe7iNL16TZSswkx/VK3CTE9SiZgR37giElhvmSVp0r0kTUqB2/fmekvuoIB3nWJr/eCJ7hK/eHir6rDWz9HJk7RmrR8C1Lk1c8bIIoIeFvIZRdy2qR1haTsFQ0l9aZvwaj3BqCd1gToF99WpmsUCa/2Gvd6Ivf7iLnP9tSpP6uZ6YyP8nc2edd/tOaBisZyqmethhkjr5nrOdCvWnKRumXpP3WR8rGniaVYn1TTM9UnLXH9xh4l0sMCV1JvBrbCDB1e99tWztX5SxXbQaayfrhnrXZluY/14YVEaJ02145qxfo0d1I31viQ6SIWn7RoGIP3WzX7b8eIKXU9grO8zGYDx87Wlsf6ElYz1a8lYv9YZ69fZ/pF84DrTUsXHLY839gD1/SGsHHIDZ8c2aRjrx3bcMNYPnB3erqsZ609kYz1wXzfWrxkqqaRuoV9TXZ5YXa5rjDt8Ufc4PuyDpYaFcnfO58Kd6lxzQ7beG+unvLE+tSdNoocNC9mAEFph0K63J1qHoJPFVj9edPcne1v9uG6rP9mOa3djO8oSmgHcWLVt9cCfnXYW140OgxuBp0M83HWKzAYIpeMowVWYnzyfjYU92FYPsLhR4PB1GfT/Dd22+o7Kso3gc+BxY1e9oEeArarfiOrXZSejlm5bva/FocGezLWcXNZystSSwFaflHA3SreGsAG35E69QflkdFH/kzaeUkyqKZuok5qtfkPDVr9hia0+dc+atnp83SkRQa+pDVH5hsm2+vzkG7KNtt/VP98nhy07rveJpcSKuBgvxYVGc5oj2UZFOkmgwBw9YXbDpk20B3tFYmdCYdZuRhC2aWYw4VVHMAxbaTnsahXQVk5dsIUeh+8l4YLqMNQnXYb6pDLU9xvW3X76YaNG3Yb6czPDq4cs8BpGzZU+j9FydqPP++xWnw/EQJ/aChlDOnPicBL6qX7IU31k43rv2cu4edJEpvpRa6qPMV4S7hY6eF1dYhs9ViwrqkOJqEORZeppqUORqEMEDMds8PcU1yMMo60NN/cwFQd711bsSFS9HNV72bNBt60+apvoI5u2EQHUTFUbFa1zabvEp2YHrUJ/gW9m6GYn32ynG4kIfSrd/IbYFd9Hxolr1gXhMu7pxe1qVsghC9s6KpZPLUxzf9mpnAcJ55ZHQl8RTV54hBUu8sudW3qcx6vzOE9a829yW9av5t8+HZhoepxHlcc5x8TughFVMCJQES8PcVF3OA9rfs3hRIfzqMPhPJrscL55BX/zzcu6m0d1d/PNNlqNt/nmTmfzw+r4nM3jDrSExQcP1oyJ4YrO5q5EDXHe2fx2ZRXMf0eJmtjZ3Cp2Nieq8ZTFp12FoGz0dKa/tk0E7xvPaNMBTYDPZtD02Yw4hwsItizBZ82rTC/O+oJiCV7aqKx+aaI2kUeTWMU7t+/sosmGbRlc4wk5FN92Mt8GeEz22NK3PRTfduQPsCH7ttPHdd/2cDnf9tCGpW/7vGq5SN+qxLedRuKC5Xmz7Y7Lru2anHKpI+Laro/YxFV2KzpSp6oDENVh07U95OqypO3avlL9WMKza3soru1RzXH6giwqtyoi79m+teHY7sdhrz+C3HRrbyyO86TDrT1puLUnLbf2xJ1Narm1D1DlAMYJXunizkbk1Z5emuOFHbBTO16kZGwoj8+Jx60qyezMVZAZs1gxZ0EE7MIOVUf/dh6yBzv/uOehjZwHewQPdtiUwzyABzuejnqCp2dD0NmAHNgjHLtTlQM77t+pljqwn8tHkJ9NrSnIqBth1JSYCGHrfx/BwfODig1JIFgKse82iN0DfLe89/pvdDmvP5sa0OW67jrzNdelput6eJQ+yqMjEAKOyxJ2qS3uVHxSkMmy6bl+7pHFFYeBt94qR/+/UF2O63d5LHy62eXlLM5oFw9XRJlHMFbRUsf1kKQbbyuF7Lgeth3XPzrRcf0eNdFx3efCD5uO64GNm/tJWpy7BzZsOnfH4tydiuN6OMFxPa0c12N6agfsuK7ZcT1gx/WwePEf1hzXo7bj+j3MRjywPeB6ouN61Tc4rj/Uvs10d22r75mtd2wDd2wdd2xMHfuz0iN/jH41HNcRzzFq+q1HD0WdVKJOPrFX/+oXGHW/wT9ntvykWe/oPegvuc7KSfoeJU7S7605Sf8pFTmsjXFaro/aYBsLn3Fu5ERvQGjFlfFp3YsDms7Phi2mDVtqI4b4TByzpw1Ujq0gfPiCd2DLGbo7NtivFlnHPhumCOoJQRhKZA1vjZMs7Mkmk+bxrkP+4tex7446K7CBgG0m7mh89g/fucZriWeWX+rCVmdvjxnCmPFxLnQNZT7yiJsWjITx2FKps3noheuzxJa+IvIMzRss5bfYKAuqc++3yiLPBrVz76+khzZon3ufb4tK7nEeFG9/y5X1lHu1oc1CxvOYx55SmAbdzW775nIkGhrZYo6ya3H8w40UmyCLcC7vhRCTEmqFl9i3qixuhEzoqKdpVsR8GVvDJJTYgLsx/vYbaTwglw5TTk9djeA1yJlGdeBdGaFnMzbgSpxmALgVV9K8XBfoDNa4Vdo8iJQf0713YIkayKYkfgznd9RMXdTh8XffWCeQzWhWSsnlDQ5BRJ3UxERTcdzYbdnC5P5NSteMcUI0Ax5492k6K8SBdsFucjxxk1r+DwG1+6YXNlZyQT1USX2Yuipqqk+YLIO9OWYAfWYeIwJHgC2wi6y7Fhs0ZnMfkKlPUpWST3OoANZuWloR1rTb+fztDCtFDh6Cl5JTwlY5WEMK+TtJIeINMRxhSbnMDjzFgsqzw0fq7BA22MFMYoeO/jdX39r26+wQ1tgBs2sW1vih0qG7Mdt0cXF9RreYAVSTATjbYI36rUrnNKi/QjeA0knrTKPiyiGJ9/hrrgy55qNAZ400O6hKUjdmISMleaKEzRDY5bcznLix6RYRjJTEO3LlXLUeeq+EnmLMIcQd6tBRoEo4iYyQGDYkvZ3gQ/HPf9fpQ5F+U6tkf+VEwY4TezLD9XujjmAlEheLuIYbQLMxO1UYZwbTMooJ6I/sXoZFBASfdBuqK5AY2aDqIqwUifRoqexoV5NINX1fDeAzfrlOMR9avWQwYgyG8S+4LrEwwo8LTaoNRr2Veb2OlPnldHClNFwGtG6eE55CHJxBpLG9K0nSRMwdros5xxBNzQLKVB60CD/ocCqjdk0o3LZc0UEx9wBIvL9jeTWnuXMGCPCyrRt2XMGOxQ+uuHROndnYXWbLjym++QdX17Jkel0Fg1GZeDCpEZjpszuBfOLmKxpAijFUWoI1Bixh/zY4i8NGF1YhwGIGCdDu1ev+9NIGg9S/9rNPf4XZZ1DNPoMyo9oAs0+XW+CgQhwK2wHmnu7GzUEaTmwcmbt/Sv8KN47tEStWCEuA0/DJpYlWnLuzpC5sV9PiZCQL4kiw8AsWC53CNQx3/5m876Wm/8zGul9gqjqVT1H8LnaEfqMRTeEQrxwMMzWvvjBPObZCwKIWsXLII54qkR+3MqaciXhcuz/vdnvcnFo9vvBnBn976ILP4PENWcobXrHfYbLJkUPZ0Oul5GoVs3JDZ0kWebt10fbZJwdMHvv0d9VOESvTbFL40hFwG/PbGA/u8MY/vCtVz7j47Dtrc61pzLVBc6bNBnQi7Ztvc3xQ3PAlp9yTBXETf8zZhoHzLTSgK/Escw4iy83QfGxIx5cpGeotj+1vcFCHhFSLiA07kKTPhhUHktk4kytGAzO4dFwkcywLis++gyb1yM8e3SKlY1KHVov2QZhWkzrL28N+Qk/SG+FR6BrxdjVbqEITWnK96clqCaWUbTg1D2heyEPovKy5CsvvhGZeTfz81hWP2IPNdxKEj/aR9Wz8N7QT2GNMiKqLCso4my6lKvulRZRneQ/csmCMrtUBjRNV9VAVnKRSFAAqfdSMU2tzfdDYrwqKo9/q3K9Kv2h06EIloaHk7MlRfLOYRtW4ZRoWaX05OhNbdqjCT4pdNSgoKSyZSrYhxfuGQ0wN5KDQBbMQI9WJPmWTxje8SeU+vRifsteWLA0wxuBtXU5EMYI2DfEcXc9RWGKK2SGxH+4SOmeJljv5STIUukGcqWpvTVH1NnLnRqnGvC+3U+Mj5Io+7aBVTD9E2Ov62hQ7jeOPUhzoYYodPO78fu7BuOzBwKEr5sDuVLdC3a6rMrCSbD7BB4nDQ9I8TOw+GEiyb3BFJYTOZZei4fiDaMHpB5/+X7697b9lO4HNVHAvSgegpdcaFdcUusywSpcFlXes3wAtNGsG5C1WfAk8A+2SaT8m7pBQj1nCTGWjJivRMpS83nISCXCqZcrnJO546ciA6tTMZxH4jBvMGnPSVKtj5q6ozl345z5FrW4yWVBnMF0yWMQMFtuIGCwyqDxqatyif8Ylg5WHPvioCUQYk7eocLrJcrrBcnoiyz0wZRDucdCxpG3oVSzuTzHOPXZxRRsSa5S/wL6ZdaUhEqUhBv6K736keei+voOGb1m2nQ7OXFFn5Cq/p3jXc1KNty1TI2vUZ5LER3gE1O9p/LyfnwDxDw9etnwfTN1CX4gw45fV3os5tArF1caTUXmviwLf3Qzta9rKNXUtUptWmmRyPQ9MrEel1XJgZbR95V9XgnPqquC85cOT4RT7mfq3sprzNb8r0Gdv8b7bSb2yGfNpQi1f/eDkWiDBWdiKM1lCLA59MyatRDTMmPRImzg1GPpmYX4Hdo7/zCYx8j1KC7PXAQr3zrIB5f4lcZGw+iKLPdSaZwIoaZ55RCvGvVzLs+k5P7qYH13EKjjrqwdVrcC+2vVc+QINu4INMCnAx/TkAD+JHYhrZZAcv6HzcqCU14ZZ1DY5dxFch37n7S1e37z8f0HfrIwvQBVc+aAUX8SloeK+Al4Fsy1T4n1a5ooCg6OhxWDAkyyVcc/6rHsNJYxkr+bK04N8LT16aG1P6dqT38lGhHDqscqnZqEkcMKUJOvVwFC4y/R3gXAR6hEVtTFcguL6IRO/JfDSY7zbOcUDlU0XrNXmI5oj4MQz2oPKuVpewGRTdOBYsU6EvBjw4p4mIWaDxSwsnu86ktAME3CMXDOfkfvCog3noQeD9FyLnpHBPamHtqOh5EI2OP2G6/Hfa0+zgGbDBXaoPnTLITs6cojVpYtr6tIIiBu5DiSicJVKdCZxk2DCLdkNsvF3rtp037ezk3lPcR1c8S/Oy0XMQm7Qzpo77i3uEbbXG0FgF7C7z5KnqoeC3QQ30NzsNjYdTCf5xu+CguIC3an6Hs1RVd8uuhN3PTfPSQ1Pd00LDqHau/1uURZUIXOsoRXhxyX257kMa6/bzOcZ6an84HuOFu9X2K1qWviidG6YwOSCv8iZXALov9AHpVObKdYOb8vT48Nqcf6J7t/KKVxkgt/UfSosSAZVGzhmEw6oITgIYLj9RjySaGmYh3h3kT88tdd7CFwgHoI2QNV3qkXS/bgZC15sviqP+eQEQzPMWIk1vK/cP2sTEGNssicbMOuw0nZxniKwgSZdHHU7wnc+zkWZKL9PMW+QJd/BAiNZjd+mjyH8gFlP5WZRgB7ldFJjY1zfQde1FTNrYKO6sz6759PiAeFH3IiDR9IiaQQVyN1GLfygQO+mOMyXiQ3ACtk0s+OYF6JrihDOjuQmsjbT4o9wQjYwMmanOIpxVfW7dZvW9gyiifD5jYRGj0DQx91xV4bVx0M49Q6drkkaZgC8Dax5svJa5gBOpO5RMb7IfRLMFuPn5sYl2hlxZIExOst6pncthUgdUbwUMH1op285/Xz671+cG/S6Thfuk1z1ayXt4wl28Awyyp7w46qXjynA8h4WZwfhVONujNXlUGTTToJpdvTHMzcyUyyMpuFqriG9hlY/A2NiiSCGrld918qqdkQcoWGdXsiDynOFUF0KNMQZWYN+uti/QImL0GLXnTPSBYIWjNnreL18u24nxnsNCHJ8ZBGxN06az07yIimbgr+qDcnEOyyck5BG2+wQ0nuW3G1po/CsTWykRdyRQ4iQ0dqsog7PC6l3fYfO86JKuIDiE8N9t2bomaL3J9aWi6FVSKd5iKmwdhCCI0I4VZTlGccrJfH2NbrBIm0YOWDWRUg5EXDBncSXzJQ+OoUQF7MoCrbO8Wg5x7N4X0Mf17IqmU5L3s2DG0DVIm95GwhvjjlRBKFzh+jtEK4k9dwFm49F3JE8y/tCYBfxiZ59mRaxM4TYSSB2hl7sDIF/SBrbZ3FTkzZDOnVAXRd9h9d3dSkPx0ld7Z+0UUHLVY7FSTGm059SYXcSNM4KF9gy4/kQsaE5dnc0nT5OuV3teVr0Y52s0KDxR68jMFZPp/+q1MmrzzqH1Y7jSlVmgxtyWDK8RHXjo2yJ4fPMSdEr88Nx4rUzsrRQnKLrQoSedhgcf4yaMoXDGGVyOeg0ZdJgztG12yV9VZxp7cLsRJIPJ2K8URpJBNfcUrqxjN9KVySPOYPdetcp+ItwJljp1Prp9HfVaPX9puPeQZlRzsbOyFwon9MWRm9pDk6SpON3A0LqoA5BPLPoK0OdTv9EK7tyMrvWeLL1kuwbAaVCk+RrcRE0MXxWA8PusxHcMQMIQ+A3SaucntMMe+zerrGBJN1DrkYkcRx/AG1BSrRqjE7k7Ig9fOdkNWVpPsmhdj2nt9udbSwUZ2W+MNuMMULCMy6NhGfVGBVIbRfY/8uNN+dFkiTIj3PosDagbI42E3Q8bjp9vhodJ8ZWTv9nU2kb4nQNqwEb2YDd8afKAev3Spq6Q4XQvxT9cf4YsQ4F7FfhWgafXJg+OSEjq9Ixnf9gyRfACMyKK9+7uTOP+PPI3W3goPS5lLHhDXnIRkorYGwoH1r2TQi8wLAh/GYCXpwE3spIlh0y2JcWyfQ2ZbBxp2Bidq/J2Gj4CKry+o6oICK35/PAH2PqNO30KnUCpjesGC7MIxiR9mAhc/Ym25s9Uu5QHIPyxBk4tA0qASh2yNpJyPSIdm0Nmm0Ny+OyWgBiaWAOwZPIKjg0XjJ7JI8PZeRFdMhVVRXL+tWMb6pLnlPDstsGdjvq+sJiveedYXjbZn6FnpMVd49V1HPV6rnrsOyqmfncVNBX3kRQR8quOEBmHqMGjPU4Kl0In4F5saD+gdZmv3q+w6wuHRBWdOkAgcIbGueLBRHhkYW8ZZ1in0qrzx5pDLS4y5BNGh7ms/4BD6aMVYh2hHKuw82xUR0Qr5F6MCs4ygUEgpvHL3mHm8LfMe/hw8triPdSU7tId43pAaU0KOgCvNalK1cWVK5o/LG4OIM5W2e8a95lYPQ9Sz9vfBvQewfi4goEteQLPo9Y4KDkoTWw8VbHbYLqcDrD1rzU5Arml21XWKDTgBJ5KIEtqTtCOwNemwWAVe3TeGsyYEWiuIT8PVu/Idjc113tYBBsbmZsf3nFPvakdb1mHwG1B7G1yk72fCdVvZPaBgxMpKF0T1pa76Va2sug3RL+SlpS7+alYYrlOC/LIVADuWaTtlevXyVXG3Z2yo+2WVXh7+xNaCRWuYNaj1NGy5DpauRrsNEhf/1KuZrZuShH0gY29ZsXrep1lwfGlNVg+87GTlelp0v05cw3sZ12smINppogX2unOcVKkdDLhLKyLLiglvNu+cdYTFhqnWiHSBt9kh3hZ2zjG5wa0s/Cpkiecpp8V4PWVw1ajwXB+iMLdo090cndfMOm7GT+1tWan9D69oTbso3VtxtTp/lsdN+eDI/DM/NNm1xP1jptZr2dths25eute8Jd2ihd2ogubXZd2jxvTwLfu2/X2vVUZr2UWV8rM6Yy6+bnkXKG+39SkaDjY4zmGI0GNliUs6BhK59d91YSqAN8hU3zqBTyR5UG4emdjHXFW/Sw/ariQGRVbZs+h39783xLfbvQsUhWuzVsp3RAePsTFtbTv/fCC8572c0fcOdNtSgj+pAzz533P56w45feO+8eG1ZbvHvCovdfmIdUrMvBa8NI7zNoO/2B6cZZIBEt8pDli8IfcbqBZI959zGRZv7CMTcfHqJFtMMMq74skbORoym03HcIsto9S54+ouiAF7kOsbgvXSYH9TlOrrccy6ZgvB/ZwQK46Miii7PJxUc2hGnA/QbY2YShhX4lLZEdoQOuRTalDkzD0ksW2jFaagBi2qa7AYEbj9gjY1fJFKrxzMxoGwNt4/oRUb5MJchluaIfMdlAvS00iVyrMNeNiSanLSAFZGzOpwB3mtsEGNPWwd+DAKfoa3rEddS1akwHWsckPWzs2JMMKQx7SBF0YJYg+8aA4o/YaQGGBo3lBHFaqW5YEWVjXkB7qeSqs3oxH7QYdNCSNpqRpjCEY/Rh0Njd5snXGhY8uBwcAvYcCJHkqSBSdKYaPtP3GPXTx59jfH9zkXFGa5EhywwujQXKkE+d4wFIdISfKYcgh8NywWvX7M7WOignIL3Uhdk6B2MdgwiQmnp8lU++zUtf/Kx3IGQdxpmod2ebHAiXS9xuvjD7EWrIj0hDAqQVp9UW31lrkZM+Ky6ukok/rkom/rRGMnGkEqcds8e7zjyeO8O9+zGGdoo9BT/biv3Ih4/M4T9uT0HG6cDlEf+xJ/W4CT6dePHffY58+xP2J2Vxmbgs1A9UaahdVf9PlWD8pwqkoA7sT89mO+wOGZyfmk4vZafrWqrKzh3qFd2nxctYvKh/b7b4vadMcKT+7quWcaTGx5dciFy53R+/6ZrLJ36MPauOs6sS0Qx94eRsaL5PaoWGA/D22cIQAO/7fNvRKzgN1DXfvYYvDn8NRmkOVKcvAqj2eVd45qAPHa1388o1jRh6WuKEyUqz2Zcqf1JjJ1u8BBZXNRyF+4MQRatmeHy2iRd0I3Hmxx47JIC6J56XBronH5du5EuqSMk15g2v7Totnf6fQVddBgr8ga56TFe9CXR12cp0tWX1dLXt34VosW3RcmpJAsd6E2lgx3HRwLbJNLDzEaKBrQ9JtmyXsJddNPC3jx0a8LJwedliVy1b7GTZ8lgmrNULl+14MIGwLl+ZsLaunrBm/l0Ily0t4YKhFyJ432QiOPW4iGBmMhGc/ggRwbaHJF128Aht7yKCjz92iMBLw+Wly5ZVS5ctk6XLY5qyVi9eduDBBMq6YmXK2rZ6ytr+70K8bG2Ll/d5IrhjEhGAUo6LCrZPpoIzHyEqmHlIVICjSCCGLir4xGOHCrw8XF6+bF21fNk6Wb6sTFo/JK1Z1RlngkiKUsaRtmtNIeG20Rj3qHkSuce323np6AqN76NIFs0oDZcmgey/l9HbjuG8hqfjjv8tWjCV9KJIaROEFPTIwECM4xwDG2HoLBJF+c3uVQVdgyGLYyTWjv4wtCxGpF7eQo+OD+qTlc+txFBlG/xhAQ5SiYtgtcBtTKDfumP5z3pP6oGZ8WSp38AqIz5FiOgyRhu0+HUT11LQDvd0XB7h41b6cuPLX46naE9zHB5U/b12/VdRjEkbLVs5Px3fxEJlGE5CiauDMz/NMASp4/6yjzOz4xf88fH00QO0DYDf+gg3urAAuOp2B41EHThtX7jHZd7l9851nbjfiP0KBMFy32tcaVyp8gpCnquGEqzH18MDjQKgtauSat564LLOaog4AxEC6e9NljYzIm1mWtJmu3vUlDaczkDCzMjtDllYThA9V6jJFW+Xire3Kt7hHk2umG8s3YzLVpwqh/IntOJFy7Rih7RiR6sVp7pHq2wF32yhmw3SJDmtUwQTmvSCMIBmYdzfv7nVNXgoukXwSFldX/GmSbrFp71ucXeHbgEWFP3i4239Iio+x/pFhIiVfLGy8TVyp4HAlg9Jvwga+gVH49lWqhaZKSkoi9kZdwerR6VLxx3V5Z1yyaEWrDk+tcQxdVMTCdLbg8cQKU7eA/oh1Tz6VPPQTbuPMtXYR4tqtj3aVDPTpJqtjwrVbG9TzQvCxxDVPPwbAo/atPdDUqwLsEfbevzwk+LkLYQvear52vJUc/fxUc3MZKp59iNCNdubVLOtRjU7u0kFrPAQqWZHtwB7jFDNw7/nMFmAPcyk+ENSrAuwR8E8/WgJsK2PlgDb/mhTzY4m1cw8KlRzarcAe4xQzcO/qfHoCbAfkuJ+jW2JlTdBurZBxMr2G7LzMf5+md1NAgztkAxoO7JAjgS7h63o1e9PlI9cPY/jNvxm0l5IGGIvJApTGzooBR0JGr/+aurL7lFETzPD53JiHMva1usdqY77oA/NYNtsBjbWlABNCXD3KGyAiwDux1ULnF4CTk8CFzTAhZycowUuWD040wAXAByfXZsMjouWT8xOTttqgF89fvflHADiv8zmveJkJ0ZANRcVjoI3XCghxp7UszjHyzlqEFcSw3LGKJJ3YBIaqg0XFRue66SRg7YegFw1aPtFhTtGG1w4UilOOxhT1dpjMKaYu2TW/Z0lI2kNwoO5TQmA7Tmwec8BzuPiF2aL/tMkfurcx/UZ5eXXqsv7qstbg+oywmXsKv7KdbKZAPDC2oYTKfSk8uLIVylmezi+hvcjZA8jSOtZC7nvuGyEADjAIQBMew9CV2kLeDjUwz0cwYMYjt7S4cD53EtlOIJyOFy3aTwEATwokQOfoaqIpI4g/jmzxe+fBeC2V6FbwHQgfdxGupOkLbzrBrKRkUGCzOBQMMuxFbdXujZYvBzjhfhSOVYJL14a402CNxhFfgkx59/zyRyygHaIvI9yW1fekenak5G2PlM2W5a0dWejrXfU21q1B3MKvxkv6cVOXxKfoyv+g6pbtqNbc5q7teIWT9cmj+8Wb9g8PN2qWoqZk99sWGWH8anvtYdQYWBLBwZeaHTQqdJNNohvp51WeJFWuoxZqsvMtFSZsFRlwjLr1xK9JSxxHS7RXMzKmotpaS6mrrlsaRjdvGdG1NJEonYKBpp+aew3USx8iOSkmc3GQK8wJB7K1BXASbtcxm9z5V7gfI6ixDdt3eaLk8bjYdkrM429MrOMyvrDQeaQy4/EIPPutlWSFAMyBk23uiZhtrpHLNsfiElujq+DeAHKOuP0H76v22sgLVvLwOYSoQnH+otK+ZQZc8Ge3J+8K3A/vp0HFLH7xXEhtoavOFQv6h2/7FqUIpUg4ihALn++BAiO3G0MpQ7B6xBriZ/bMnwfvhi/sgwiGMolcoB5/4MXIs1IUR6o7z0BI+Fm6SwggWwxaweYsnUqYZckSCDAc8ChgnL1cLvbfjOgn9lt8AQTUA60QDNUtgriytpDep5SkvXkVp1ribJ4k2b+0M3MgFgWuWJEmq5MKtlSdD65uHuLhCZvR3oJGThpei5JM7ZxZqi91BEJNPd6TQ/nxpTjprgdt2jv/5w9W9IASoMDJtlxk2SFkwJ5cafyLAY0PI8dYeZcrPzXa1q6O0glzMMC0xrmljZIa9oQGcJhYEUBK9xeznNTJf/6mE/+dZ9P/gWQJSr566Oax+aVguN57XC3nuCMr75eZivFz+HLYdqZaUERwCO+QNoajSjdFb8w4M2zdczvdwoeQI84uxFJqMC9aKdOeuDN5BnkAEgCJKirjQSrJn3RWE9Vsn7OrSTjpqw/qj2/B57fg+JT37y8kf6L27cZ7SsFJZ5CBlSj4T7EAXgKEIODwRRP21NLNuDhzFwTcTu0oQTbQAgzhGZV0pARdRcBjrBSC+youPqvSeJPoYWvVJKFDIR75eWEqHRJF2L38au/4DvhWn2f4mYXX34JxL+NESe62QOgpBoH62i9E+6//OVcDe64DXa8BCrWAJxDE2Gw+u5vXPQ4E7omPhK5VPAHRrIzNOvH0mlE9R/EStcJ9LvRo1rFd7v+jMqQsQgZN0BCw0GTPyTnwe0g7BRs4sbtCWhp3argzj3nI5JWP4r1E6J5FMrVLsubvjtCb1K8dXnx6HuFS1clpHDgJrBCI1E7Sk/R6ywQowBjeQ1pFDg2HOAbXvj4kNGdSH/7e+tIn2kjfaaBdMpkNL2HMrCM2YLV7OEaiOQ1xY2O8KaKE3gZOXVRvrY4eGCLW/rZtS4z3sjYqWJqN1aLwnH33MsewN1k6PrUCnaHaJEvu6pSNtCV9tdgqDuZNN1bZF60/aojlMuCcg1PAV+uzbsn4Ofz36rj5+ASYj8IYm8BTlnwo4JgNl9LoTgF+BQPzwlCeOts7JDxd5++rFbHMdQxVdVwzNWwTsgPMw81GEfeZxsUmLugZRjrqQkduf1AnWsPL+nI4WZHEHqo2RFq+SxUoyk7tGv2IIoCXoA2pSDkEsuYFB1z8lu5on3r7op5xd6pAB4gNOQ7iEge95SRYiKZAm1oO+WUu/m5fc7qICweYFF2ok+V6qMr1kIwnuNypp7YUhVPbNmugQTEXx2iNZSo4fLruDW6W8zd+pn6qOxs4+tYr4GviCqg1duckkrm0GWuxOcaw0TvUHam612dJHrZWiGJNUQSP2iQxDObFIHslmvaFAGx4JDYpIk+00R/VTTxC+0u3rmki5pDD/ZdB9eCAFKJXiFxgiAdENLCEYZ7KQIQohlcgVz4D6gLf/45hbqwLtNI+uUGJikOBeUKQlucEkuSfU5xy/7ZYuNZMCU6Cep+Rq4fUwRsVKbeDyylADCd/bypIeRsu5+20U2D3PpT0rY+Qtz1KbAJerimlnIdA6z9yuDR1lLQ+BW0FChUSorfefO7aW7rFddtSI9wTDtdNbd7O7tK2FLFcQ99GgRt3ZLxfV4KewUmrNrWzJuPjvt1sFmAjrlwqH4e3VKtC4jWRoE8M9XKa//GThzbXgWaM26P/+h6b9WXx+xRTeim1nBQQgQRVO6lvFdpK/cUpte/+cpcM4GVfMD9NfWNl/YAfJ6De9EXVLnCR6qdW9yBYgEhSUdHXAbdamcXDzjVbmD13jxorV9ZQV/HK9exYDzhklhRP43hQp9sSgnRtlAmh7UUI7NHcgYL0FR6IXmSHZo5LV26qAMlkYkeNWqKpG9WNrHEIzJZSggIxD1+EYihiv/FZJfYeGGRhFNUCxoWyrfjjEHhSkloLeCupNxFG3eEl/PRqBpkEKVfrJGt5dV6gzzHshrtjVT7eIGm5KVv+UZdTjPZKUEMaKE0GYiuLaMelqO+JIOJLr72EoHIL1CQUv+EIKCALeRC3JwluKqhNvo28AbJcvX2Ql694fIgLtNTHQvUBsbKwLADvdygHuNyS2lmXFob4gx4+jamLmxdP2Tq+sAqqSuup39LOpoe1psuabEqQischAZFJV7WSTJVT14WV9FEQovQHaY200FtnExhAtHF5Xi8pBqPl9J4/J1ihn04UPqG4xT/wrDtOcAnY1v0V/McHS0zjH3P5I5rramF/KpibU+YMn5d6X0MQ+ova891/bTf1mrqsbrsOFfqX+Ta/WiuJ51BX1vlFmjzpgUWT3e6D3YrNbEh2BdYLMujAdjfWSzBNiv+D6iYlIPvRWuuJfw+0WylAb6RxtqV+VnXacDYmumyFkbUzl88VoYn37oT6RsqHIMFF7mKs7qr6J5mvYMUWvDHNdvNdgfp1Uoj+aXPbAlBx8VBEdJCzp8KDggIeB4yX0D+hG05XmMtVWbcCkBry/ZxsYrfKXwjyblYe0z/k8Zhya5eN05DLAkJ2WGOlkX0+JZyMP5YCXChevT6kKT2+sFlp5y3+8R/PW3RN3ix7MTO+TK71UyZu053LIJ0fRG0cgPNkUynMt482Jeqh7nvK1PJQotKbtSuCeHKVLLZUwlLTDJxG6EQHzI1j5vHCQMgXa8K46ASJg8hloYxmUdC8kPyPggQ8zCMSujGBXWHqDSUJJNCmqfVBRjLi5t8lOGkRuqL4OAFuf3NnSIQJ+jMIH+3PE9ErItFurkQyYMCKyyg9TX3YLeJ5Hj5BWQtLM/aLWWxdz9/NZVIWXNmRbmaGdrLlmo3qC2wP4EpX9UVStuYn7zt3M56jJhaw3P4N+B+Phm/CoSWI7bxlFY9nZa9FnwWW/AB77gO22/hC2PVbLGhKsM5zUL3ArjZKi8kP5OBMiSP8vgcoM1GLs6l9M9GfKAw5qOExt0JSm76JNubx/ceIImxn3wPUFHVGIN5L3L/HPINUNRd1OY7Ul89peVcaCvUvg+k4OAHWJGW357vjHSXUFhjTZE+L/ZQz+MA1ugb2y10sW/WmqfytgE1IvJliU5YunoA53Ln9W/7zIABRw0ObDjrHudaohL7L87JzSZqi5oFU2wSxSbkQOWw4gTpq0sCCfa5vuiHThMee5kB4tsDT7yKmqqxrwY6ssb1kgZ/qx/880fKl9V+mBBivRqoPshjAdnBltN/Kk0H+RMW6uoOPFlIlltdoxPieTzWpQJ4qFIAX4nLjuevpud/oasjszMrLq5LZukQGwZio2OHWFsFQdK2xHiZwHaYZvQLU5izOzebr7vpisZmc+EVUN0BZE6f1d0gyK32pkPVoHGrQZOQUfLaTMVrH9WUhaoUZbjuWJ5qr9bUiLUHAgQt56ZiR+IKcAs0H835zsI67UZM31ncsYTFKPlEOFHW9/sRRIoDJFoQvoiJL3oaFE9RDvpM/JRwjwh6WNiKhgfnjowd2GFF/KPz8cTRqh25fw7ZYSWmhjXqX0BC5ayfgqyraMeS/L2ZhzMGmTkMu5s0vdq00Gr+D0Jrhctsqo7NaY/wVcqSKTvdlCXHPxCv0MoslRarlgawary7xcLWiERgUeCtaj0vCp7SlRy+KQoMxrIjw3yvLQraUN5xTTNPvSvYnVye1YBd+3/aEDZ6DcbvpW8yEcKuRI4ysc6uYQMzyOPdR7zg2ix6bBay4S2inL2xdb/PBGXh4pjKscFJax7kqhWbHDoS03ObIA03Mihy5saqCI9g7J4mNnKOHUhL/BTkSdaeDfo1NgCxRpz5kmxO7ieqs4Gr0mdX9vNtn00UlK/5NUsnVm1TR1G79vO0qu1A7pj0R13TqSNrkP6wPp1Og/S1eza1gAjaTqYElUwJKi4YOpkyJBU+fD2U6irrL/rCyZuFko2M3Si1o/Tz9QELfjhgD8+AVWOUja2uj9MaP5SrlFZju6YhrY5/iNMeM+zWopd+XYWcHtJcovaJHxeEuam76bHF3JIlIo/ICrEd+VOslisKYv7Lm/I+KGTr+E9Yyu/S+/Jkl/o1Wa8nrwFiVWo5R6RDZQzE9l+DpKM0CVXPXakAGj7e5ZzldQCVH13MQ47R7kjfWL42lssEC5xbkeSz62DluOq6elhpfYnav4s1fk664tT9XaTuUyOUNML2znPPRdnf1ftlKPu7Ltlnza/TnoFBYaftc8m6qk9PoOeLgq9/k3KKaBvu26X3A402wMdc8Jw8wiwb7FL7QL5evd+1fx/r9gd0YGhwmkPDaxb83xikkAcpwiARH4pFVns1wF3DrPz62ii9JndsMztlApA8j0xI5O4HhR9h2JjDAjxB9k0yCvDg2GQB07uVd1Dk5fnqiLox+4ZikQlp2BgT7zIJpFL5F+4P93FvSwo0jKBAbsNfziLqpWgqWcLCqs/CakDCKrUDCCvHrWxHIezCyjQg0UWZ2frIxlSXS0aGSkL00+ZvuicfigxLa2Xd7dAO9uQpsqo54TW0CcHK01mK9e9++jYkygsE09jtJYVG5NWwtK0MWLPRQHOdvwzxl53KpkGrr4FW1UvBQnbEORD2cy6r1+Qpi0fAGdtpiCmAQyYDbhIJo/Pp8RiJUMaYWiw9J4FKDVjgvJipa/00BA9n4pW0hbWc/sJ/RY8S06T3tocv/uHwPVLDJ2OWrfWjdoIf0tVxI7xpmgrxcQ/4STLFsCX+cGn8PaHx+M147GcjbHB9SIeSCekS1hW3icjD9dacBjoEQhu22IiJJ3ZvMROJuIttIFcBJJMTfEFNFAY1UTgjI9J/TR5U0z/LIDZ1iZt5ZRvjlyQl3cizEKzK2fJe/BX9JJYN+MvIJjJjpQu4hCANcG/ThUO0icZ3oS+1aFPJgdzfZa/aZa92COPaBjZCHTInLoq1y48Am9+PliPwZO0YUCxFltuLdfs78L60o+74o2NIi7LEhPJRYzA6QVckMfGnFrXB+eI5VB7dPwuvlOJ+9ZTmjtnplPTrBW9/QbXECLE62dZTvFbBXSAuPb5NstG9DZuShc5CMk0x2OJuOko6W3zv+ZUTHjdE50nxhR6cHZLiP+weacmvBlB89MsxlqSv4qx10EeRKcbbrKVeGzqVEy48g+InSyIkJWvK6J4KUvKFcY1z5+MwX+Je494/H7jE+/f9vnspmcj22AGh55QzNh1B3u7IG6sP2bgY7oVU+Yvfnz0yTw1Yir/L51v4M9it1uVudcgLtQ40NuygUXpXGLCOEfhdGaIO8czJDTlbx033ClMeD4j5dIDBBviERGHtTITF8L9nAZetdqaqLOwdOSKbEPhTq2+qmffHf3gQFNxReeNArpcdPbLm4g/IpQSpveL/dvZYWIpjfhTjbcEZ+fIA6QPPyBNnkHXHoG0PCf8Tq2bL9ig2Chs6SwLfVJUlfDjwCezV5dh1z5N6qtCQkMglLaQ793WQLhGzW9I4Aive2wMAzvTlpo/iwwMb/C7bDQBfPnS4//TbyVNUFYcZRh/EDxD8uS4b53sdlSCKU1BESSpC1/X+2Rhl1/SshxbCt7VX/CTcciFbbI8odfA7ecK9swrQA4tqBnv3FDPPcXg2KZZ1AVfwhBUqCKgC8uwNMoVvV10RODYpy1MZm6CrXDGeOEH320hvtjpB19zpwzbXitvDqHyxJhoPKrWM/5jFTh0nHYZH23u4DcX+3ROssHf/yZVtR4KOrSLwBHPe1o6d/v/iGlQEjQ0BOXVyOiSWUT0oFzD1ZO44cxFmGu9V8TMunThGww3d7kyDEXRhcHfGJuoqcXD655GK+GCHuMugh8jfjU4+kxdOpIUZPtXlOt9c/wf0HBPdnjwU5SuoFaEpXXbAs6jqhPfJmIp6PjIvNkf25LTL4PQ0ZTXVlsd0ANu6n9BG+Al4izyq+Ux4KU+KG833526qEnLLHqTsf1a75Mdfabh8pec/IpUGy1d6ziNSqVm+0vMekUr18pU+6xGpVC1f6W+trtL0GyEdlXyk2UksdvChebAcFTIi3E84mZW48zbq4qOq36uvI1ymjvMfpjqCZeo452GqwyxTx3kPUx16mTqe9TDVoZap47dWqCO9VSm9ep/lf8sJ9LWB4YTtK+yoMUOZjg2xYFkmq+20qZKZgg7EspctmKmdUNgjtgNWuAys848TVrAMrHOOE5ZZBtZ5xwlLLwPrWccJSy0D67cmw2Ki3sg+BH9a+RD8WbneftcqffTFAuYtFgYWi397Jvh8oMzKDCBkLwxgHmYGMGV69C4eYFFz/KxQQT3/wUENlod6zoODapaHet6Dg6qXh/qsBwdVLQ/1t1YDtWKe91fM84GSeS6v7arbLubZMnmywEL6VDpW6W2H/hm2YcBFerfzpLKGL5/DedbgbdbJTje/eZXs1P35X+HzVXnWtNzU7mWnf8xF7Z63GXFbNRPhitW95pwUNtlxZiogduwk8FAy2ufRObAxnnPh0corc3WyvoJw3oOCoNttOO94IahmG1aEUBHkHRVBfqgkyPNUgCAOlfstfOlA5KgxKBTQ2wwsRdRlOZBBuBdmOpw216iqHM2QyZddHLe4Wv63MrwnWx/vaqSrTnJD7CTxq7w7Dts2gYSgZSALutL49yaUjKqSESaNyIbPgaeu+Me0TmQws6On/z/r04Wr7NOBkDTEuBRRx3qdQW5WjiOJg7BZSH0kH9IsXinrQFJ9n6B/EoYG9uizRw1jMSRQn46nfP07lzUFWP1wSr8UPyF7BsWFPptMpH0LJ4yYT+8gSTlvbRNnsXtYxKeeQeGDvdgZKwLeFAKcAcyYNsHnNnCHsKo8Ln1pXOQ++Oj/rg4Vcms5BcqAXej75FNko6qNWtrIAj5BLBw6TZhSa/LQImgNWN89K/gD/Ij/B9oEY22PShdJM3ZB38HSQJBrGaD0AQWNAEwHqHX2h5F74I8ub3ty1tBbWDlvz62fMEBvfWc74kPYmCKqMYKgO9Yr54gw3arU/srUOb5Tjszi+m9Ydomd8tXdccKYXoUzETgg9uGCAIanMZShEt2c1LLya6vqnu4HbruiNVP2vOK5zVtoV6x78+rrHvu6v/baKzwOO6qfKd3WbOW29gFt1L5ov3q+jxC9qkMfmFF52t2WhV7l7fy0LXlwWKPG993ftPnextgegcQwaRlTY8+bbfTml/1h3v+Dn3OfPuO/4Mv+rS0MlUsO6/7cPqjC6VqeNsnJI4sA9eNXKgvfLDIA0C00eq/8yX4oefajSJdp64gmsa+6tgy76c0HPOXBv6JJeCsLexYeRPtLSK95AK+T5kAPjdrDFWpvUgBqEe2ug/jCegOa3NnW+t6ldOuY58qM2nFa+75PVmKpicgVd9nARR2HulXFtq79d6H9HevG9+kA4x6R0optfEUOhNz6VSa4QK1nCv57k2PKN9lIw1SFc6aBE/FZjHs65YbdDJLzm0VHZnruC3RmuEEL+qC1ewjYNt7E/ZB5x/ilz7PcxMvco2zf9ohxAoPR0k8foV2GFkRW8X5WJNG9yrIFBa/YUzPapilppnz291XamG5OYqlTDW4edA9vE1O1MDwUlhUtaxGUagaa6SAonDQUci8dg4OKxlkgbvNwIobDnxXXv3tuyWnZqL6i8nA06WUODUJ3aZPwGnzzABNe4ER3B+9MnmiK/XXK9lJ/1eol5PyqNMywKee7v+mU81hulNWFk+R8u2k2hEbYPq9sSN/4xleXjkDYOQKqe7Ey08H5bzakFIeTd0NXx/z1OXS1zI912HHrzn4O9WFpHG6P2OjIoRu7vo6rr2MuH9cxnAiGIXmSTgwnFYbjEsNJDcNxtaK3MYieREqvOSHH9WPykEROVJK6njC3xDI1y+oltj18k0DoJO3D8Un6o0318W9r6uPHcc264xtNpzWGzyvXvW7czZD0C9hbPtKDwSUocDCy0zDyqffPrcKu0uOzaObMzmnupo6gJPBdaRxZCDwsH4FvKwfl6ZVeRHCjKL6Mfy1afsYmJ6O9UYkIgHQtgmkkFKM+a5NEehdNVoC98HWY+DmuJD6FX0huytd5IAVcpz7zTVqYXQFU/4cH8BY2rTdcjUmgFHnirGKEhfKABAVrflzmsGrpsM/TWG97zXk1CmzBg+iPOOLMMJ4RCyJqWuPQF/KwuWrHnyYaCUozsg3SywLlBcCdSTPGR2V9YioJESQtKl4BR6qe7nENGPrx3YCLWSTCWCwNR4OY5YcONgKfBaXyh0u/XjTEFGL+QqckmlBkA7R4Z1fAw4DTn0o4IWDGlCHCbQRgQL7zFyqVVRQgpzKOEzVbvP5Y78m9ngSkI9WBCNLqnb4MnQSwEnrL3efGvTgLeOciOACBXsWFakTtjrn5iQ24HJE5uuBK/qM0HxSflK0XcxfUIAlZCixU9bTgmwo9An9G4JsK/kwLO9T1pIr2c3iV4qISGKW48M0gVOmno6HMm7MkBx6SGDGeiiBOcADXgOMJdiqssipe37osr2970Ly+tcXrtoPXX48p+aHLwZbA2Fg3rdPZidcLcyOEBhk+lwpDXbWDP/b4tJo52Cmv34+Ut5LN96sIvQoQQmbNqMGaMbPmQdXNm4gzGJfUx1TEug7OFSqgSezjbrZ1trW+TYiVQvc3AGrlfEbMB7AjSz4Tkhc5KOZVnTuvKLkTbJgZmfP/uuecWqVsPFtY+KGFKAAFzMMAV3GP5MM+PoJdq+LlgEvD1FQy8Xdfw/20RvroYLbKT2R6U2dKalIeZgOPkSwu2V93ttISxoAWsr55xdHXul1qDX0ri5mqVja09RFv1QtJ1ART2pzCEDAcGdA3feZqBjGnWAxWY8NfBzJCNDbPbI7N3b3jGJzaqHix2iFTB1VHf8GjV8iOxfagJlQVC9UyDrRQsK+nQ6bWEHmBl6ke/n0IOO7hV8H1lo7CTj8K/1ifr/zgo1xfWDt9i1KBD5CtS1nsW1aPC5cj2OCo55lYPKUnyDldvsmNvLOmIeKszoK0LstCfMYWK69KBOVcT8dMq5D+hzgWi+RM9KmZVht+pRhYg7yH3ZYmDt6+etUIY1tajdX4i2S3gYVrMab1Tr/E793Jg9sE4KUHx5iQHktyKNTKj7HQZy2syp3HeF3V8ihyCxXW5bZnMeeFCNkMkjTWWd69pzinZt44n/2PX8eHtSWKZdAOpUn8ffOra0eQg5UaOagaOaBzlj72ptXEcWHdcs7EU2XuWz1umTP3PxUCJUtT5kffug2dgDptYjONOelFn4AbPu9QBMJ+to812xAHTmn5NstbJzZCiD3Zwwps+gw6HRiWSdQh0Lx7t59Ei3Ep5dgd3A5s/IxRzxfnqWcAWYFTsENXF8QtmWLxEB1Iq9KVqFdsvalsA5pLYSJqinh02/cMBrUIMIE3IGkyaOtpw4PeIqADD5qilPg5iwe5aa5Av4r3VDTFbQ3KKLTuhmTfwJMJdTeptkfeoMSVy3NkrldHNzZoxgu81ki2tPl7rmwmZZP4s6AkzheGarBwlvj497UyK3R5G23ig6of08Zgx3+pCaWSpOvyAAFUydLnIbgwO2WM4DPZqz0Qp/bqNNf8ylkkAF4i3GOp6YwQmwG2PLUNc4JxQ2lpZVivXRfKPYlxfEbVp9UDrKTHxUvvP9BS0uO6ki7JmSQsPhLL4GcLp7XorBHu6dJUFORFfTUI4J5qPrlXqYoEtnLsTl+UhK2XKlNG1EjcWQRu0NjV0yPNTZM65vi/+08DAN0uLiP1hN6pjDZQhHvnOgbK0niIRyOdTgaq0k4YgL/ZNac38UvMTW+tLcNt96kEh+GzO0wq8P288QosJmQ5XQ1TO3khe0Hw0YJ/wEErPCvuwToO5MrsBk0ur4eBJFU0Ml5zt8aVhyI++wQB7W4MbjinhbKBBEBGZgsITj61xVGUR+XKpVDjr4ll2IcWJrk0DL26gUpyWdHlAZeXsrQi5uQeHCa/mW2sWm8G9f3Fb17Z4caDLnilKmyk7YD4F6OBItsEo6A7hYfyKTwUR3Zm24ySdvlemWZHAK7eEZW2MFTHTnMhGKRPEKNXgJ0LQS2LsWqbfCOHWgrSCaGepe9gwaHj+OurszM851baVNBue/WpswvM+n5wH4LuDjQ5/Xp4GdfPefGWpXLk5H7xAGOAqShATKq598G8JKN58A13YDR7sxjoDBShmgkgfBE9W8zvm53GdsS/IFjZNOgRqVB+oHJdJmyxGhvyL0P3e+42/Vs0TYytnI4IjcKv0Mjj2O9CgvZhsnQncmSubdZvZulTTdW2X/lsAYARCP1YtRQG8MdtVdKCz5mnLC0Gc0aZ2MbQnM133rXgrU1nPeMjfgdlT9X47zBwssa/6ZDBK+8uhUQAIQa4mU0mzAIf07znxDu+A0BBdIlcXli44o2v01o5DMX45pe7x+O78AVe3P0rjoAqvH71o1fXdQxTHaU00MJufylJT4hdbo58dtsd0ACLHhfgM7+67vzw+U9eQ0jkAu51ndn2g1RrtJBjoDHeVcD3K91B2vOeQsL+cz0cmZPkQBAj8g1kyXT5vPw217Vw8a77SN04OIvhQFLTFv2fCUGapcMk+wHfwK3kx0GqpHtwP832BY0vdEnCNmAS4kxLQIqebSTUsQFTTQ45K0WeBLWxdu81ScspN19FH0i1nPmrNcgm/ZikV1KeA/lc3/ivMdQ/hQfF6Zk2O+trXj+UCjRs3B1zmzMStxk9N76Lpv3ODSa3bWRSgCj9+8B4f3JMypxKQbcMCwoMseKw1fylu00l0mHdQVCl39DVyv1ge+Ve/P29oNeyM+i652HVwrsSvLsDfuN5XIlV0SqebCQ1SgDdIuTJ/BTMyCG9qRRyIQ7y/rriyweo+lSmPtGG53SZmmu/WA9ca7zQPwX10eqOu85F+MHf8wOGJ338x3tQSRs0aA9yo2YF1fRVW11hlrOBzJRN2aIdTiuD9UcHak2Xt3HhJI4jAO6BkUQpqFvTNXD7D4QT8XYOOWtNIHlfZUgo6iLw6zIW7f8fOFdMVqiE0o8hioKN8AMLpfs2GxjWCQazRcCaFPhtiBA+1IgYFBRzAiNo0cEss2kW4bbeTYjg6fLsbyRkHHGbMuJi1DmW+qafSuEoYq+VoLBTS0SQSDLULAAkVTzJTZtcjjU3dPIMx/SQMQG/AtAxzv6mnIoosuNZZPfA4z2ueL9JqPka15U8wS6u8RYRVzIb2DU2pDxN7qcwDobDwtpiP4AFDk1ZzMTbpxUITY3FT0DG2b77vHDf/AS2Y9YgHZH74fwaeSxjaWxCQ8Yjia9in2eiPSW54S1+An6Qdi163Ec1WPF/uke/2QAfDyDBYJPkdqHha3G3lkhiLXo0skM8GYohcUwGbMqJMQ18RTagTjyJ9k9tSJiTkWCRjtiga7LUDRV+UkyVwmwhagHBD3Gq3OEM07WI11EL4Qk2vDmsElAfoMtBKS+yoPzQoTmRaRsGAod04un2LIqCslCOXY/f+i5ZJvMLbRO/G7GWpUYsqz5p+dqiV4VHdY0n/NkhrMApSN4BRQPX2hSNHaCVBHkgrezblLOAOYJrMnvfrp2lGqpGM8sqDM4gS0Gd3PK+1cRb6KiW4//1+fy1x64Wr1lpPD6XJChEMga+oiAUWPzBw/uIOdZ65lj781XVbLoRi0riSudjV94mjhOLANh0JYLWoIUQL0mlPYWuc9xD1ASR3UF1JE3oXUjNLH0fyKcBN6gmYRZA+2JhkrXEJGCKtbS96kp3aFrj4vmVc4GtjC8/Q/oNxBxWdlpOoaPRpbKCH5rqsZQjtaS82e3ChYvLvWjArMOzhjx5usNszstcaK4BagyFP8PiJ5wGBQ6Gmci9tmEtpTJbv/lFcQkLkd0dSQ5Lpfeu5trHtMKhBKUiVItaowH0l8ooM2hQe67WQtWa1AF8oJyMKZRjBnwh8YK7J/iMZnFY4/Z7EWgNZN+UxcXULOtTGwFI8zWgmsofRJcqKYD+I+l+ilcz1H7XlvECaTEaiClUkzI1L7eVLH32gHlMqwiGRSbyrlk5faNWpjHoVUtwWzWBS5SjBORaRcNV6HarIP076pqut1O38uFC25V2Lv3UkLptm3Rn0AZgfDm4QRMuVN9/Yjcb3DVraU4+HV0AFf43pZYSYX35y/yN8R8iXAhG/n5CZ4/9PFxuuUt5NLAVn/Ua9OCCBJqaO4c75BDyGza3Qb+ICLqWMcKawPvwhrJ5YzUMjNbdz8yOb74a5WKuXNKSxlkExUnLaKolPDfU1VvAfSVcNxjw/GVzUEiP9UrQUR00PmwDY4ywDlxbvXyLOoDHpaJHihZnredBiptdG9u47NiYaxd3Lm6gtbFvnvXvZWrK+pD4MgSYTrhx4vnVswmjBLX7V6xY1ncbuaJehQfBQdBAb0BG+47FU+iGtAoGdItSellaUi1aUp6WFPnBMQWxL6VQFT3KnYBCs1Co26T+ne8f6DCpN2lRpd9JVer32hwtJt4y3rcJBuQ/C1E8b7Z4XmXH+NKtjai4CSOFZurxS2XZzgK6fprGGgfP0fegkt5wMQiU7imdEue+jnCdjoJhknIDZqxhikg8qWN6x1umCCMDlVQUMYAejlSacCkaBnSHLnGtrdoxc3DOaGY4zKauhUTIxb9ilqu3DEnhcL5AOCdotDqEMuvoENASN0Miu3HfhhhRtArq2n/ODNp1pisbVGC4/iZLReRv6rkpFG7qMzf1wU0D5qaBNcxN+bBsTFbyxOD/Y+8rwOQ4sjQrsbIqC7JRrVZLehkCt+SW1BZ2yxpJNbY8WqN8zLe8/loDmvn6/C14LC1r2Hvo0VJl677bYZ7x8h7fMjMOM/Pyvv+9yMyo7pZhduBI+qojMuBFxIuXES/+iHhZmuYD/XYp9gl1bFdQh7GsUJTbOrq+c1Tz4RmjfNisyqBTdzLiS1y4Ozi6TuVqWXuCMLLVohRvfgt7lR1qQZgSjQuphWyPQktGchyNsDNzB9yxDRt9Bzf08vNxFs7zYQkTJQl6nQyWYIXfRBTC6e1rYNtCg7MV06cQTuYEQ6kfoxDOeBlMofiWUPdBpska2XfhDTCwH2aHtu4gOt/1qUsdnr1VpxwchPW0gOu20GCo6wWyOG9o2MNO2LttmOofh/HQoo4tK/vLf1OWpEdQ2naMwOd5hZe82TG4slc19MH7PW5E9r2o3WyKdcq+YAnN6FG0L5AGZdS3vnEasz5PqIBtYSrtJAqrRkYoOqr2pyLdnxKDaq8aXnXhv4TzfA/yIEdS3utAuGNWDTLTWi9TmIryAatGtuqP0yqnsp79aC7kwcqQPWcl99CkpOMI1ehfTSR24I2MTg9jfGDR8dJqOMjbcigH8h3rB3R9wRTEbmb2ph9S1EAoKkrSoZja8t3lf1eeRMEnvefVmUEDUfINhVmHi0bVt2iZvNFp9no56CYg171SkUA/Q3hZ7+mVRwusZgGhf3s1ObVGIGaAB+XQXx/rdGA6fZH1NXaUL4VB0JBJdv6a//VP+Ggx3mGQoljf49h5j2PnPZ5dPx5HAb+rmA7kWKh8bDCoHyarA4uD//DKkTkorOegUOYg+ONRWXKodjaKRQyx0PrOIK9IB8V5lGIwqJdgTbW8lr438IJ6D1w3QCH+f606fDD270vAyHeP6SbSygZLla+7wx3t2Nwvz9VKv+K5/kr7pGyBXJYw8rPvRvtyJNcRFFRMecpYyZH/vNyv8ocl4Cy4qbRMsETLDY3QcznlUVZwo7zuH2wqm1r6gnMe6JFQ41xG/PeSEVzg34oXwoey6V+8JrsN3nT9dJfscweVuFi42cv+Uo4t6TQpZyv+mqPKpiOZJfaTJQfS9I+8ajE4CMgvD4L9KOBVHuKiAe5bQd8WzoVjVy1AofvA5bv4GaunuDdRQBCRpWZtmhRVhGkdRc0x2p0bkE6M6+mmNaVwE4IpRWmI7cIjzC/gThXGgDPK8JVH0YVX1c0moGxPLs/V0TwP+rB+vNkrp5RUwB5+rg7PEB7yX8PcuyoSFDli++JSbFWiie0Qo4hNZJiLna5vI/5n2ZDAYLs7vcrYxUP1mbrqVMXXdsWAxyMpZJbnbHucBc4iefVJrmVgOvUtqeXgPNb11qzwVnyA67paFl4O/hHgfRvT0piPa8wFbEH9ZhDi0yXh5dg1gjaXB/LlvzyEs5hHZdF5rANMUz41QE0xldaC+5+9+vrPbtO235c7jxbF8J2Fj91/lKdwLpSmXWNtCzKYjjYkrhui3DCxbY5JtUEdp0GxbZCJ0SSKa2PKeafyU1xo1efRiG55nsZf/+mDmDrX8x6gQ4mmhFr1RxJaTkqoKHq3ntmQUs8xqG7Sa3mfetfyrPruAUGfC9RgckgZhVxtzhWtDYemQ701oP/whwUiwuGwtgCNq0T6dYHShIt+XQCQM3UUbkYX6xcfo2Ux5nzO0+/oDX5Wd48Hj7ALlODqNa69/gVhQH+19I3GJund+OBbA/3vk8jlPCRvkSQfnmfWCvLhobXCePgyozxla/bDoWuaLOGmpf9crB8jQnf+IQS2LFBtSMyPhqhm4FZQEiZ1wgQJ6ySJ0Enf1gkhws3L4cZ7u5VVv6/GCQ6R2IhdSGyAdnGsPapVH4THq7DR1F9URgEHxA6KykU0mqp8S5vy7og5Z6hStSw2XflG+Q1b/nWTZH8F3+3Lb/nZB3/6hz975rppFk7GWso4gkUDpH+3AeRYX4+k7Mv/vEZl/K8ivs7I4bVwmaYymR2giz/LSZs1Cc3/eQ70gO8wjjtvz4OQJ1/pHwl4/7qAkg8sMZYruyuuLClXhj4TpaZt7XvPjHIjexG6GC30N1IGLRZ5mcBB8fNR+XbbcebjUTm64nLwKGUcwS2Tm2RZMpepTWtZ8nK1rr0c/34MbBph/XLwnzlBZZ6WEu4MzhRKJg3dc1Y+gST+r75aftnxytmz16U8Sco9YdrUHtbml19uWj9cn0ls3X7yxYvvfOm3nDv99dtMWpePGl6pK9BAUe54cRW1b1eByOJGDxHdopRSlgW3u9e4/KZTftMpX1r4o5Gt9mhdfhbBCSVr1Lpu2svBK+QZCYccdGOapiVUH5Hk16glrHnUEhtKfmrbrNnZNYdPN6Y5BMU3jDBntOd+FQo6BfjhuwIqXXlXhTHvqWDnfZXnPFPJz8f0PcjH9WQQdXjzFatemStLW41ihfG6O4jmEHYuMm+xy03L23CvRjIFcsPzCbhXonySXeZbPgV3GOXTMvA1s+8FFbkwHwEvpoZaO8LhqGoDqjax06wPjMuSj5o0iY+L0/TjcUw/+dKmKU4+gT4rHifxtbwpdX97lCcQI8hw00n7cifxMqcivIt4XZqUFPC+PxrWo86NMnIq7KHV1stkkutRF5iDIPgvUCZv/tde0aVohWIdBt2ThCOn1f69x0ytB1jPGZmD6ybQ0RgbQTzg+s5I7FdeRHARJJOSjsKBMwojbsYtIijId0dgH+fPuQjUUkvC1OvojR939MZfCfRahmqEtYoIcW1U3o/X3qFXeV9Re3+39r699j7iV95Ha+/P1t5frb1Xgsp7tfb+59r7o7X387X347X3DWFds9r79hArm88zoFVNK5GrBUOi3JEc6mp19vZnLp/AUD4agLF84A18Ya3y/dLnzn79Nj6YhBgoRsEoTePX3aO+ld9lvMF638957czwgTNCtJynoGxR4E6JV8J1AT86EsDy9x1eBannjLXnMjRdzCOKSgSBgD+w4wHnjPJY4RKOANbfhJPkCRyxFwWFNfs3gnm2sekspphmER3mKdMHpQ7Gu66ln/bT10d+Uts7+c9etfWACtNKdZHy43IrgpUEp4E5bj/96Ac3RPysRFz50GiE9uEjxC6Ifvwv+OkqaeijBLkjtVr7YnZj9A67TcgYu8ngAw0x9NbSoS9va82EZwGGaeD/ODPwI98p684AewAvRd/guKs3gvMGC42z3KRrwPRjXmbLGYhP4wBaSm17YKqt0WEcew0OlegQsQwJjxR9Cm+nVoGq+6ZBdu07yx2YU1zUX++8Sz7GygLu4VgXsDZpUSeoqckHJtqIkuO2b/8v3+luy7Qt8KnZZBOkKWgujjxkWgE7aLzlfbgIpmcnX4jss4P3Vme7E4tpBGL1TsEs2jw7ldm59dXWF9ZG6HxawYSmJxWojYPhobQNjt0owwtMKzLbkUmtwsoB6oUzJIwAuaR5tErzaO6meYXUzivv1H2w6cf4CpUrnv568cwDK5/+iHwqn1VA/fUCmkeKzfwhH9+szvxfIYO723wXg72+vYH+YgKUhEOxnLifqgi/gfSmBhJcJQZZAweuXGjcynS+H7dkfchTPHgJ+yPP50fsrro3CGZGH+dTmfO+D6LMKcX2ZBcAZVoX4G8o6oeZfMtLkiSKkySoSwzjZtNrMh0s7BK7QZt9/6vsBmvZZG0EwJCmxaa0F7MfQEqTaM8Ru+8nzZPHqWUOZwuRLSyzPepkewWywc07oTTsoJfoaepQ6mQS91qL1HPetCgZ5u0NtTNNYN2iNJFJv44ppNQqTKei8PXlMr5ToOxFXgn9xSs/8ev3fO2FM0jtQ7rmUcSMfOxJ5bS1jB5AKBEXXBSY3lO5dVc3EHsPUNrIJN+IYYGSqqxWgZJ8bbgQB4WUml0BV76Lur7aM9DyRivrUaA9rUmtZUTcweEn9JZwwNZCR5QyPUXq0wOEm/IKzLTsSr7O1pc50PHctlXp0Dz+3BVq7qW26o0vsOqbynBpifMNhPcIvreQvnq+7kKkZ8t7Qw2kUojvOPuogbQC9aoXiAJySAJ+Lu9I9Mtt6OGboEelb2hHkf2wX1JdzPWcM6cC9GqRgx0rBz0GWp0PP2M4/3ychwJ1fvp1I+PzqKGuhp6qV2tX2OXBStx4gldc46FNi8DyXXT3dTfDmqPGchy8SW4mE3bg9bNW2NB5Xo6t5A7/9Ihqh1q8QuFHHJTl4Duk23qcFI1V5SrvU0eOXytM1WMFkfNUU1E2yPTqz6/KGEk9nAhUA9l8bQl0OZLpUg8V6jGdMaEjEvksM07hMy9y/jHEjtG4NRI7BjCsTxmQE6TR84xjmI0ypMxwFq9MgKKQILT2JTuP5c3yDicGd9QXcqXVAmW1ueMs+SoPhY9dL9bypp3CNmH36G1TPR9KHnVZW9Ij5dSVDzO6n2LqKPukrweNG4nJiz7zHTcWk46M9NkJH9uJPUqkJ7nFdq2ZMq2eGaMExzA7FApfesqXnjKOGUTd83LgkBKeR5+F+GfS+MU8RZJn4sArh+TM5zzT9nOVNxpcG+XAqMEYe/QiCPVz/lTfJxujDjQArIXl+D5Yhv3FWM7wPCaHZuC5jo+j2Qv7tb1CT+0VbkJUUtQfAmuWRQCrRz5zo3JMm5qFfC8vb64rcPOSOGPdgmBDC55qvUGtFrvkset13X2XeFPJrz1F+nVVvcdhdr08fVzygDIoGD1c6clNCq8+9vOPgpi3TsrdXx4yMqy6yL+YBxTI8kQPHvGKXe4/Rygqfi2/q4985Gc5Q1JZnW2RfMGwje8V8pnGb+S7tgl/ldKmq14eaA3Au/19sBf49Nf+1W+9+ze/+y9f8buqb4cP59HTMaBGFD8EY19CTRMnT8/zFmbgqyjmR/IU65tFtZTvalS6mlQrSvNlxEv/M+twAAV+OYrKT7t7mxoYru8yC6ZfdzffAra2FhAe1+HnuhtuVmPL7Wc/WI0MiABJ3WTxS/T0bT8BjNunGB5rJw5Ndg3E1eiqW2Bjk/I+Plqer/m0lEyJCz4ySl+au8FS3gZ7bGqXqimnCsoNww9Xm/8wKwwIfdN6vfSXv2dDveYUO65qtejWylFxkG6Ti9Wj1vjUaN5C3Tl5rAQ2ZtysWYt1s6INzVq6YbPe+0sbm6WQOFXNohs0i558sxbVoOmj12q7jCyv9Qv8+0EMWU6sTP/trAM+kVnA0fpF2csFkQsqmxdhZeBWYbqjRp9qEEOQPyyCQ/6l9RSgNh1SsenQxfBJ8XPlwTWs3+4Fno8hr1t9QDTFcJd2glSVyoQaiNLbsbK1ll1DHaGUJlJdfPOl62+k4D8VCnxBfiMFL5UQ03MslzY4WY86RZ1M0uBySksvQGBL2n73NMV05ECY6X9V+wrBZT0lWtHty9RRPepJClGbfgmqITVKdPHjot15pXYX8CxV3QORAwTPMhEF0OXKSxOR4LH1Gd7H5MSZCVnjY+9j1xn0HOZ+6k4zgMn6cBpIGVDAKXmWGhpEpP/ROcn/iFebqILu1AYMYi0d4QajyHgo8Lfqz4vMHHuRKpbXB6e2pSm6W6c5NSR+jCJWA9/2op+4/RMPvOvqWz//7tOyxGSKFmTGSFtBIw21dmU5/ZpNZoXFL+qkcOXJTgp2StAJQaeDb3/q04HaHH3Xu11rGl+0gf/jTzDwX3migZ+oUY+PkvErP+x//AmG/StPNOzXH4dFo77og/5iPean9njKHOsz77ihJfDacLErs5sLDAyavXET/QHWe1zVJHgyEjTSINuhFN1YdSAwe9MqfQTM3rRKrkIzatP4KVk1V3bPKbt/6Nrmto8/63nJRkMMOjd86io+9p/9W2RVSbSYQICBtjx0FslHxkcOTOIoll2rN+tFQHn3jBIex7N/J1Sj5+iqGNijrBBb3DLXOjbJDjfj4NvqD7a0oExXxvdGUNuACcUWtN941MuZfv7k/0jR+vgTiNaVJyNaUW115EsoWHdiw++pWZKlICuuud/Lhc6A74+rIUmP6p1kWA3SnWRfVpR2ZZ2tiVQ1ykmxkf6sYxNf8TKvrKILKfnlZXh8TV/OE5fX0bLrIDmrYFXAk38eurZApPBAp2kc5au++hJuAuV4gHJUUjcXAddyvK5mnc9LeF5klaWBakl+ZfLDV+Wo3twpMTCrJfk1BtZQDKyhGJjPbBM6Uak3AQOLFQOrjBVabkZoHrdWXtRYMbAYolBtUwMDswlQVI2BaQJ0cfqHgRilD9EWzzlAiDQNqamJWa0pN1KZ24ICmLgMiRBiH/TKnOxycKGjnxtPtGzBfavbqyiUT6usY31rvUW50O5AgkCIdbnsxSNw9LNDCTq7XX1fSD5rYVJoZR2UVXe93jF+rLi+WdnduuxuSh3qKjoGUkyfUgVHqPtMIbKC2LZWKdqQCEZx3XRSQYpRpdh+n0jlz2E+6gGT5PgpThsHcvkfIqRmZC+qVqkfRgCVWF8wSkZPS2+p9//f8KZy//93Ma1XvBjx/2GHx+G5h3ZuciFWr4vJ4UF5EV8pJ+kgUf6zjJ+9Co/OAirshfJdspQEqk5MBGfGxAV2RRBWHuLKTMJhmYzN8VBP5jUpYR+uX+v50aikEsOZN83CJJq3BWfRtAuTco6lknIHDpluYXpabp+iwmSyo+IBNRsyKQ4bmojD5slDPw9NE5dNhgY7L7K9RKmtbo+yoVaShbeqZEsq6Y+28byJQQj11Eo+YFpDqaDWWKp2wXBpPa17H84lkw3NWGHGmeQDZSsm4Jw1k0Mzpe2ZhvPVZsvQzBRmq7ZsFs4/MnxmaU6YZbbD+WazY2h2Foa4AV8tlW2jVnO0E3XRA7JTNAPKDO5yXQo9QJvSuGXIViKuC2le22ROjCazb5a2FaYJiL0wfPbsF2+9/I0/NHwvH0SRN6bgVm6nHQV3gBPVQw8X3N5p2lKgvdGQ27wcfLMweIImufmy78USwUxk5mMP7ZLWoLjmUGqjkJFStSZNHITVs71twNhDgy4c4jjZBRGwaEhjhcpJTFxESyVCT4l1tLP13BiYhG0EBSVzuScZrhrDl7jhGwQrLPirpnFRsINdnM2QfdjNCTAKrvJTvgfjHtLiRd4Laom5aXBZXv5VtiNi5uVa+D6oFdDd9q/kN5Nh8si8wD5PfAfY54vvIHn5IRnjDtHN2C2fzxflcVGsinHoIu1dlYrcQjfRIsjL9tNqfpj25Uc4/VFJv4sOr4gVxTyi3fAfs+tDXE47Dn9TdBNzAv6EjiF8Cf4W+zl82W4cYT44CX/K4ey/Ff4OHaVFWOq8hY5o8TiTy0a1TyG2Sw06sGKeBn+P/UYmqdN47MvZ3zyTqzR4O+E7uGLOIHIMkYmYVOhQKlLZQPiEpoZwImAmjzSF9Ogpalks/2nwSaLT2GoV3xn4JHaZZbAvviUWnp74jiFM0t2KMPGdpIi64vMpozHxnYBPchxHrPiO8F0u5vdh2n+RWX8U4/RRGaePVXVd0kqicG0tCtKmgVRV8RNVJU9WTfCrJiyC9KKQ3kV7II274eymQ3AOIWLg53Z4ViMr/oARmWOD5z+T/BVrcxvjGC5bltgIhB+S7mevkaCEtSDJ3r5TERHKWdCZRdlrEY/kbuDrEOhe/U3fFXrhjSxiYgaUra8Bk+YtAdXMv8D/utGUbPfm/Lm5OcB4HlSwgB3irR92xEiU3fyL4fp3dJtwWQ9L4PKqqAWXs7Xhcr4ULjJ24EHOLjzI2oMHefvwIHMGD3KPwYPs4/BI/gn4hMAkfEJhCj4hMQ2f0NgCnxCZgU+obIVPycyq9wpfAts2mGOWzaVijXAbdzY7swxxsrOVVRF2ZtJBxM6WdBCzM50OmuxMsa7CzmQ6aLEzkQ7a7Iyng5SdsXTQYSdLB112WMPtsdNLB312uukgY6eTDsbYYeEaZ6edDibYaaWDSXaSdDDFTjMdTLMTp4Mt7ETpYEau/g62shOkg1kxnjjYJv3tHl+6qmaIX+re+Q7r71nBG9ljTCNfQgnSN4V+zKZXdTf13WzHL2J5xJqYTUzqEk2j3l8aGGMZGLkmfBxRqSb68A0TIUosLwVMUxcelipFK6Ldav76UQy+6D0LjcmbNocMVjEmlmRl8M3PXWfcZ3TDKaIAqwdK9FKj/6Bpcfv4d5csySNKrIr5o3l91jvv1J98bFPHOZ2alhd8QFoJWB21416AkVoncnNFj1Hi7Bs+CANPk73egyZCvUxbbfK0YcBDKK6ONieysGj2+nJ4CGBNp6ngbwRCbSGUKKFECLU3EhLln2tbEmrY/qb4ecfhplR2iHLMHlbzy24J68D0hUHi8ZUPNdmr2Cw15KQ2jKNwvwQPWmDErimvYgQltUDMj6/AIx5CHZiBiGCw5qjzIwkfuGG6R0YpvuHGFC+MJLx0w3SP1hQjfjxrE8ZDjR5ydBNTJ6j8KD8keAj54R8p7gMLTDqpI/lXr5gOsnfZ/818dAB+nRd71NYpDDqZnT9bCKtrJL5EtD/4mk4tr3ijX+9NPxdn+pW06KFY+gR+94fLRFj/rxoYBiL+E+nKIIK/CX9S5C3dIWlTE05a5B2KcfgrlprhlBafb35m3gXc+Uw50vJ2fuyTDz0pg9lyfhxjN17Nx1UI/AfJfzZeWhQxQSGcyaFlk5miEM70ME9FlWWVZIqmi3xSl/LQl7aAnVNce/aHCJhBwDQH9LgRNEktMEWNA2xFFINm8G+Df06+AEMdmhBuRsi/HRE7qIGGewjYiQDigNRqBh7y5wg1FMEfwb9LYBFqU6yJqEWT6kPwBHW0HqCiPptaHuaIWC+n1pBmaceIVt6hadrlauUxpxqiN1IyNDXUXB1qMaWhiZk3RDSnwcg6SsyW4NDDImq2YE5MkdEqYDSTMqYK5kOTpai09tJlFouqyv4x5o6qpDMUl+2xtxCtb4K2UqIYYd/mTNg/zjqrvgo7acrNOSUc1O7LaRZRvN5RDGAOzhaahLONUnZQTcgFO2g0ljg52JBAEKdpAkLEjspMDOGNmV3Vot4X5RlioXWE7GhD9EWwcbNV3JTGQbRt3FwZp5VsICwVH8JQ1fSTvelt/HK1LrftixbiZateQH/kJWw+JG+2xxruqgJQ5UBpmrwtJ3cdTQs2/wSAE2uKq3mHHW9VbMu37Obrs00P6fsIz3A2DUsofvFCe3ApkkPXAjDjmgvITlIHTmeFeyHk99NM0+RKvoU56GFUmFnJt4p/5plmdiXfRj0MLnNMu38x366mCHfQOK/I8p3U51kgJ2qjJ3Pq6ouS8gsyztpzI99DPq/Z4vwmdufZ3cfufnZv1nF1IT9AMTwH80O0kC/SwfwWqfVuCOEemhTBS1j5F/k7QnvwdJQdfjpGu5gTc/lxyXGUjg7pMC2sse8IHVzjF+RoYU7QiSEW2+jFb9bFl1nmWA6bWVFE/ORQB55bOW9hTtGhNQqQ9mkIPE3LCKZbQdGcoQNrTHBoThT5Mh2jYyiRiR1Bscc4/FjBZG4d0hlQYfcUZ+Cgghsg9TtJJzmwMAjnkNN0mtMWXMohrW9+UqlKLU4jkVLNT5HHdcoBMDBPBvA/nf3b7BR0G+AGOwOdZv+WFXM7/OfYP71i7oD/DDXRrGfAf54S+L8K/jvpdvjvgv9uugP+e5TZx9EJ99Axred5tJTd24RP9xbmPlTyTrpzyH/OI5CjwKXbCnMBVT+HDHeDNUe4Eaf5d54WOdV9EonwMxwtPXUnXVAWnKNb1pgyXqy7mLdHOCudLoy4t3ESuPcKU+9GqGFyZ+gM16Aw4t6LNLehgDNc3hmuDOWoLQjeQeeZOrrhHOphLiDwdjrCKWgZ5A0HHkHgWe2F+wo8PJ3rcZgpy4On/XhBHga0jIxHbMyUZfphYaiwELCYHTuPSg+q3D5N2XauMMtcEzplGQxBuEXYoSvbM2RYiphHOQJvU8z2JCcGF5eFU8s6z5zgRMoLtPY0Ar+KyZ4CY/DwDBKxvE0eEhXDZatKyCtyWlfeeNGPy6CJjsnvkx7NL9B5OPdLj+Z/h27iMYAuEtFu2nnHNkMYTI5fNDehcQdpLx1fMXvhv5f20Q4Z3Pbh8e/SvD1POo/Hv1eL1v2VXEF47t8gVxcKc6cVqr+zmUTd70jUfcyqhVFxunuz3r9P4YwFWpCOODfaEZwW+S+UPNdylNw5BN5M26UpN6Mpt9B+6svjfjwulgJ0d+H0xAVXgO6rewLFr5d3SXMntwEuxLnAYHaslveFwkjNbxNecQJ+GBoOPSAScEgFaEEF6KgK0EmV92NW3g+IvB8oBeioEF+Q7AvawjER15wb1xKfKd+FQ65QnXTfhQOuUC3Iw7107zVICm8wLNCuQSboCgSNIRY87aG/x7PA31WUpVxDjWO6GmdxSZ6VZ9SH06celhGMc+YhTVpl9wqOrAhekfJaSnPHsmODU01ijrPcDeJI7NSq/aJVzPowgabnlxRrsRtEIFxasBh4SOspQNOvgnG6UsPSF3lefJkaAPGx1uEfdlLgw5LLYBMo0NuidUUo1FPhagG53vpr2N23fzUQMO6526i5An0Z1dIFrlVpZC+LG9C81XNrnX5fwtsP2x/axHwdvhFygy0In3yuvWxA1DsZQGBXf/T6yJku39mSiJzthBnTLHC9sgxuVHsLCLYbE7jRqhh4BP0ND/X2RFxTLIF/6KdCpK0gf8qQOMgt1aV0FdPvARGXamRAx8dAehGpZBeECXIwtGUOnkcwznkB18Y6xrQRTBLcos6wakafxurKNyl2K9/Wyvvr+XDeNEFX6t/SjYv2UCquLenqxgUX3tc2ZXAucY3NeGEmUN4Ddesmde+Ctf5pbecW3bvgLYetrMZri7fp3gWvAbbr3sUO3bvgTQoqTI6KfrWtdYq6bSdCjTj4vARP01bQ79M4VwrBZxEsi6SKXbOU10wCnYoVnFFYIQ/baA5bNEBxTcfdtUjQ+eijLTSDLSQTowcKZscO2lkwO5y0YwXzgkl+sy1sjCZpinmDBTFLxFA2KNqc4FLZkyNrni52MbidQ0qp49JFJ3CufyS5Us7HFEGPmbFmtzZ0P2O8ljG9+F6U0qS7Gp1a0mX9BF462xwG4wO8CUXZG/FGOWayTAOY8S5gxo0RzNjP3qSYsf1kCl7I7M0WMw5TZFfMGMQNdk9oV/aWGjOuA9+6ATN+WzwzjhXHk/oBvgkeIgVtDNYa8JVbNZHuzsSCH+oDRtl6dyZBavYbr9y8aZGa5TBtXsOACeSV2zYd2bbpyk4QkvbY54mvzz5ffJmu/fUzYR17s2VMt2lgyDzRbRpY1R5ztmkmqJtPcvopSR/ThF22T1MTfoERZiiqYQKgARVMsAXhFhnYUoMCmD8qKGAL/Lvg301TNIZtmnGaLLdpPOARskbZC0QfdVTtCC9U36pD+2VQyG/GUoRxDgrscMMFLiD+AOIT7FbRbjJDiU90HXRI82hYQ0aCfFrTKZ0Z2sMv12xhE+zDQ5n6JmAG5cMCHspk2+kg7S8fdtIhmi8ftuChzLMLycqHnKZpb/kQ0c10oHzYhoeSwFYkKx8msa0zSRPUvogFO+bsKZnWttctQAWULVpmzQPUxmn8Vreh29zm5G6rI7fVYyhyTIqMqQWJbsJpUgNOAxH/b0GaxRcP0iwqSHNYQZrDCtIsRmqkkOawgjSHXyikGf7fCmkCV3xCSBN44xcf0izRVK9GTb94kGbKTNgE0txd5HueIqQZF+jaWQfSjAnpBB+d+xJDmrtvDGmmOqLu0cFnUsetOR2kZr9skGZaxe3eAGlOVnF7JK6CQCGYUtX0sy6kqcrB/4c0vwKQJgBNfnAhzRkVSbOk8KZAlsuCZwJSo2AdpHlCIEwKHWTzJGKHADXhnKjAR0UzFdosKkgTkGWJaw4dSHOJlmpI0wU0bX3zJaWqaKZCm8VXFtK8g44qvgR0qwSZhgppHqggSzon7edk0qrTdB7PNUyFNlqgSBsHPFRRKIBndEYhKiBLJQZ1jyBIdEzhpKG5r0aEFCsaRR4BHmpDj0ojVEJup5OKE91Z4qIoHMAnUDHFRXPFiQRLgqs40RmFTi0uakpc9C4CSAr0CWFDhUAHCk3d60CgLtAJ2YUIV0BnKBwFdHYSSNqS5do5wTTBRoXbTtFJPCqGqYhUoiJ0p4uVKaYUCKoJcVdcU5Ivl4goB6IJSw7gdNLFpZYcSJPuyL0vI6xpBeZ+R1oAUSqLLtQSdyfkpxSa+xyJUSFxhfHvMCoHoBQyp9KjIgVZVhkcgTVPAdiskcyqMxzkO6Tz2lNffFgTPVrDmqUgIoUKIl4/CKKCmlb2jjiopjLrUI1qqmQesgKgMCUdrQUAL8UBCTxWw5oBp1P5OfrUYU0VH30N/o+FNd/6BLDmWzbCmhqWvnosCPggc/spI4k4hFLBiaP2cHpRVOGHepbZQn71kWYHOtTVMKBCDmsqhKfAU6I6aiccJbRUwW+Jwm/zCr8pjuWeai6PDmcVEIejwwpx6WFeUZZNYgvslZqzHs21gFaM87vsRzoXalKsKtYDtYwytSlGIzhdq0z2M2vEoZwIaJZrFBJsYAI1OeK2K+qVuOnAmrYgVoUbvFSexE1Gghc7Nc8TRQxRIWVaWxHDFKUogxJFKs9XSOW8IpUPCFI5NBN6/PmJYcqhwpSZwpQXKphyUWHKSwJTDk2uR6cBNCIHL2e4ImC9hHWU9YAqgaTWrGf/cBRpnACQybGAORlwxGlo7gZhfd9h/XjJ+nGXSRASJuCwvlOyvuOmg5CMb2T9A/UhaDcY6GsiWKOinRxbVcT0Fd1MFDTNuKKKoo5hQbr+WHgxhLhBpgSI5DRu0zOEtUZBzw4nZWIFt/PrXvm6//TO5/8uN6pPqYVfFY/tKQzaVlRcrJF2KGNHkeuh6d5+x0sO/8rFRz7yM+BIG2H8gqyXuvEyFRfRdYpr4nXqco7+iECCK8JD9GaT2+5kT0lPphT6ylhaXHpM6Q1emcwpsVWTemovzzdv/vJckgGgQx03tULJXeoOqT8SfKHjO1BwBG9d9jpE+GGGEIEIN4AI7xpBhCOcInYR4cg5RRymlkCqmHCEo+24bl2fI3YD7Tlib8CBq1yYv8pnJFcEAAr42S5tY0IAo5q7LXTZpAhOItgyvseyanx7SzFvAWzkpPC3y5EAsqMjR6J+PewNJCaXw4RWf+oI53rygu+m9jXuaaTbCx5rDpIvgRZY8KcQkDa14IHF0oJFAhmxR6Gjr0hEUzUaK1F42COAU3tooa3LtGvV7MFacNfFwSXMxQazdGjvEA0u0a6L+S4OfJj22EsIZGgPA9V4UAYZtASWj4zej/K1UZjuVUtMOMOM6IHKol2ITKye2NYlHjhhWKNCpptJNr6UL9xYaF1y5QbvzX6Q2i+YGu0FFcTKTMVvmAyRGMHQuv2cmrPIfNNlkmPQlXqq7PRESB0G07g8oOsAvsPp0T7wG29XHxNTC+NsEx5mNmi1laFN4uiYWnhFE4fv89TW90Ph5boTSkM3kXJ8N9Z4uy3HaRcCgTplQPsMHIPPrlJXQQ4rVq6SkNirR0x6ZI/j26Gs5A/1n9KtKygqm+57hqtsKygeUV1CVl2guYjGETt3r4ArrlUVo0R3BjdNZlo6AUMoTbvcadRc1UUu+IVihjiI8Cbkg5q8Ek2q21HzBiOYDNtaWk8n+f7QmXYyLUztossUUUdKKTpkloNhtTm5pHWS+iMvaWGThZnCDObMnD3qFyACQE7IyCDfK3dmY2zPocYtGZ/LnVngsJPIk9C4ZQMhGNt1Nb+mqFczKK23lVEzyyDfYVCqDOoUyorzWmeuXmb5pZpN4jLIbiyPqSaD5jtta4IlyqBE2yb3ywrVfxa1Ry5A9USksn+LKl3Qier5TPXEWWd6Zarg0zbtujlVzLYPzY46jXNp7xJ6fecovaFM5uwQNatpNB8aU5hddn9Zuc9YqypuSGT2DM1ecNmRgzEaV2JpudFZ7lPTVqc6s/XMq/oEsnQkS8HN3uFUb6czMc/RdkkKVXwGWrXN0dLN7XLfOqYMGHFGM9inntJ9awTvRe3Gichw/nLfOhasuRKmCZqtRQh0KkEZpxkRFBUu3KUD7pizTLgq1TjEWNcCYwWUIQyJ2zAbdUShG1W1WKZEh1D6HVwggiKX0CSzjIUFbLHaRCxjbM1rKSkFt2FZe922dVd1DfSaWDqf4Ao429axvqX9+v2st6kX7VsBurptrWW3121bJ/lNG7QDv9IO5lUZQACmMgsGJPpFw5sxXopusFDrBn6pFuyzU181lvfgJHruHcmSvKNz6AGdjjywXAb6fZRes9tFB6hb3RZrXaMOt8+usmBU3bQQUiiD1SBLihi5i6raAmYocImfdbrsgEm1ZhBCEzu4ag5APdgv6sE83YwJaR8tWPUAV9D2c+DDdEDVgwVsbzrqQROzdyLr8gP1BWpp3CHM9YvKm0OY1W8pGbSfI8HVw8qlQ1Y9ws2+I8jEkIllG83zk94ZgLCCT9ATCkroCEgekTg6CmrHKkWhUAXhCCWVgtAbcm7E9PV2Xp9J9ZQXR8HoUkFYsJoBnD4dpqZKfbYG9haG0yXw4TRGodaCDyGFDt8ZV6xJiGki5hZKazVkUSWyiYdSF1iAZrBA+wYJeD6vPbAfzv5SQTgA5wD18wRKQnkKitWNv2HvT+AtK6p7cfzUsIdz9jn3nnv70jQ0au0tvl+bOPR74SEEQvfhdaCdebO/z294POH5J7dbBYN5/BO0L5O0SkybkAgtkXtPk9BxJIp2O7fiiziTaAQN0dY4kIihE4lCBPnVd62qXbvO0Leh4c3o7bN37RpXrVpr1apVa6UsVTfu5z0LQrWEUP2sWKiuzSxaQah+X3w1z4vUdqolCQzBzCIkTjCzuFcqnIeoSwn7Sf0+ZCHCJLVwQdE2YNk1ZOFI4hhD2enD+sJP7j1nYm2gktxWMpCI5dwoKI2NHCcpKym9WUrK3FN7aDI+5szxUwxXuBiWPnhEMVwukbuPVnP8oNU+tTqQ7j49Wqv72Fq1j0ndx6TuoIg7mNQdTF0H29RB4I8T+ofUxeUyWa13xQkt9sPRpwBueMr7/zjEPAys6koKPS4JhpDn94tKUzlUjOn21+WUEc0Q558ZwiOTUe6iHEeogpOqE+JweokRv2JduyIAnX30bhm4CRTBvcz+g+gdbbLkoHU2BWCEh6ucfTL0fXSxi+EwLr6nxaG1kD7YfFGlERed3bAmcFnRheLvqdS/wY932X+p9KGEvaFQ4EG0iQY5Vm8USzYpfiKk3iFegy7HAG2FQBeVolAXCYdvs6MIQddT2iR+4BRZB1tPgByJ89DAqARrKKqKg8Fdscc2/S9sFJZN3s/1Qmj1vWVWKAr+I8Fyfg5RkX+XXC4q1K/YR5gPxcT1B0/BqMsFElb9D/iVy6/73DaYoVCcShhBDteM7H+I9ZcWALY4rXFb6agLDgtthJr+qJaZBRlBo1TcvG40D80se3VIYcfpfAXjYl5W5iEUlcLGr43ecOxWI22CByZD0YWYcq6AUly4o6r1y9E1uQiqyTWmvOKScFPS5GN1ITdqiSYGjvNtl3lW4LmIIa8s5BnsKK0cvOk43VFfm4YWqg7aUKZzzSlS87DbA2nsnx32Dgy7TLl0UFmn9fgzuznjPmdELMZB0PDOoUwbIKgS+AwF0DASm687DpVsElSwdDJUfw3qZ0D4ZjIqNQoWwWAxCkiH5tFqPZ9o9b1lx18MZaCZzu9OgBvr/4l2vR/3a8WlU9HHKNC6I0Eh9nbPFhq1h0MmllMQCIKLmI5AcY15XOM4/mDaNZZZhDhcClRmKt5wFn6CD+6cx5pbvMmbeMN8R3AlWUCdjGUp31nbMdNu9DSj7DHm5HSO1RgeP+WMBILbmYpDk5u0PfdoFJpGwQAdpjqMDGnkOxwDFN56TJLJAFfXR04GW9MG6tkjLI/MRj/aPL/pfwxvnsA9yZLBj9ZXnx9pXdF4/pfFN9do8loUfEnt+lkreHzk2LPuCviSv8J9vxi9ioyPJnH8ctetcJBjc9UOywa/ZO+CL4nCc96TyPfxXRQ1c//DdXAZcq30EqMROwcGKq481gR7fmwGVTr48VqdarLg8mf98iTX7bGfLw3nTudaEGcXAevH/4fL7WA9yeA7oOHo9ZKo2vbN4B/LCTvkGHRwrSImiCIdk2A+CtuWLNxRG8WusJBJsQKYExpF17EL3wv87LNBtwQxaLZo5fbKdgFh6AU9CaD7qtpI21YlyHu2tcS13XmFJZb2x5rz4H62bYUCGAvH+U9GMT8ERKtR+Hve+m2gqZy/TJl0ydBfppTc5ea5oR60EGkvtT0nQHG9JoVw6AsTbVYU4rwnCp5ojxo3LTWcW/Y/ST7I4KYa/g0AasUNW+oZ+V8CmUtdHXf+ZGccOth25hxeZfDo37+VQtintPBORu9YoP9xC1bBVTLQEPWanbrlS9M6lbATRy+/Dx55RF00+NLsc8nD2Abe7rFvX96wcQh/BaHhuteUHaMRwW9gw+qwl6lPWbRO6RFFuA94qtpIJN9cpzNanEINdkcQuTsRkU+ivEeG9BtrofY3D1295N24KifXQt0+OPhQq7HueCh2dGOx68zmEGns0OA80wh2dhF14B3cgRaHYF76GSRSk4w7MQjNVOljbEhxQ6owCZDb9b9LyHedsEAn23NLkt2Xonbgslc409dsGo38VxRX5to9ioWLe+ESz4u+iXNrK+jJpP2rEGLol3uK2S4tGQfvlauCAw5UBO9j2zHthAWQ4ePVQP07elrng2SCXjzl1VVqYfGrFXwugh5b0hIvz4+9+7IpKyElBEJcZngv3CsKB7/lx5co/99Me9nD3flGDX4Fyvnjn99TpJYarCwtlXbS4fmkSa05kHRiwwVXKbZgPelqYBTAk6dcaKQwCdrNbQAoONGj8E7Jrwzkc3vwGckU5f825CbvIhRN0T+s/kf+8+IA/X1uTw48DnBVF/X4KhYRVeHEDcTGct/PqgflW3SQ799GO44E37aEveAdD7cWOdYu7YmBLf83PHWgPWGsXSOEGgpE1gipi5gOfUCD3HxUUPGlF9nAahoxoth8hOOCg5x6QvDmr70+IGbKiHku4k9RFIOBcQQVpRyqsjAQvIG4xfzLgQWgCnz0xDyJiLkjrb66/qdYXMH801CfJX4NR6GL4DLLryGn0l+ctRM8+OxsmRYADsQDkmL9egaV6aoYmX/rS5dPQWZZ0CYSE95CuLBRhvCD109jCOJwwEtq4LE7Uj3oe+Chf17imQK+Mh2FXtXhDS0Ju5hTB001Bk1WSynSBmhIcGFf/2Fl9/XSC3e3hGByTSdB3Lu//cbVDUzgZnKIKGpwiBgVaCucf/evdJHUoE/YbhLOANETJOI6NXe1i0k+OMXxyJbFI6ctptlrMfdk4T+HMl9xzFv04w/uQj84/hnDj0UNlFyVVEMxsMDuaEwtkf7Vn3ONNTYDYNTixjrPNeTvFkHqAsZzQKBH12qrrvFde99ANcZNYoV6DHUZAp4YZafIR8PcUfyhEknDk6+IXJtj3irJKIOZYnSKIstrI2sPULfcFHmA4jJAVWk07Vpq9Ra+6EqTpHoW72fJP7KRDbRDapwQd4XXPny9/pg4ZuiU4k6RO9evHmw4GVZ1p7h2YXTDM9VB7kDwg6pGW6QFgF7RAMDw88WoyMkYBeaBx2OXosvlveVC/ERD/G4kFSjqlbCVnzSaEQMTXGX9npJJWGR3iGaoa1RRKd+lxXrB8Qx2QXr8XrloYHkcyUuVaZ0Q9qOWf7GJeb4bBxkNfkuHtvbv/PW0/839/jeL4hxkTYU0lG1cpaL+mGxPUF8416oJb982oEuSqVmIDeqQ+nc+fFWTisgwpYO+IyLSERCucX8O1tT/h3djAXAl2HNwAw6ABD6uAbuSD/4xxfl6EEV8zv5PqQLczqlDBDykRTqmAQbFdEGLIDVI/wM2bTlBvalBtCvE8mlsvjRwctrmK11t85WAveMPmy9tEs5fJkGLys2MODpr+gG3g+ctjYEJjjdO4HLUYbgZTogMZD1CZbYbyiCeSg5R1BpdksFTXG50vCR1rQs3eMwDhUCD0IJzm9zhcc/kKbKgbFPqL3UYqNFcDjgaZ0rDqGhAJuXV6Fsk0dtIVk9Id6/2IqAS+pJzoFYLukZ05hZEuMw6imaVee4ga1oQ3NgXNEtrBpf4xwWsFglYBWv3txovs6ETm6Hgj1Tqungx/HvvKKVzo+jQ4MVBTKJxVMIT7QFFz53M5aFvvk0qcTjf7kcaLQYa+rO5Fx/ZrysNxOvfTkIYJ6FI2CJhefh9vg77/NrvGyrwu5z33Bchjx1O7THevvX/BunYl3HVIImCjuVUwa73J4turpj0rbzhDVdMagVSFxMJV4Iqjfy36+KdUimKz4JhHLBjFYbWSXyUI/0pTL4Yf1CEhEawu/TECLcLSP0ugL0zRDoTCXQBjibAOckLSlLE3QufI7cghXANfRcmCbK9bMj2+4F6oFn4ez7IOlHmpHZBaPQe2yffn8ykZzGe26JDCpuNeQjKdBFUoqJ2RmjA84ABRtF7sU1ooLACIDGESWgcvLBjpyndrjjl45f+Z4FXYY9MAjxHW7A9w45dEAmAA3UZhJ0DD7cit6YmWjOV5uYGdz3cggP1GyibiAmISfs3gcuwEjXWNLLOxggXvOefLA7y0wSeTly0YXl/sYXHE1hXw8wFWvW9r+HcB/E6uOVhYtOcdA8l7W8mHaKkA82kByjp9kaSESyAgWCxGoQ0+P3PAWhhl/HjqyPdgeSOEefrX+tkSw8fAg3gKtF4EFF+t5/423o1lA+9UY7G2cSPxppCIG4IQzulgxkzGgyVTnEnbPiTaMOfjFCi5O1lGihRGkvXq9e3akBO1gQcRkhHcyykV7kNbzuoQANzRh4YqyAYusmhkV/S/b/eS3jSxrG3NG2Gx+LgG63FujDOKIArli75wqGk2ymyYkJZSvNvTO4eP/VvKgrY3DZeZOd3rqMd1WEk/JNeyN/sF4cQO68HQiC13ozx+NPBry0OXv5c4iU5ve8gT8Be0/mWW1EOkso2OL8vc9fCTYojaX3K/oIeOhS9x8ddPfR4zToj7167/Q7987278qoG8xDg6RtsTt5NC6brvBXnsFIpYGY5ukB9Bfd/v3LBPwFqCKvPbJ1ktfxhKb3lLTsj6ZQhS5tck/LiDvoOxdPef/vbQMPSupK/fuNlIx3lSozrqPEdxSips65XVQcwIamj7Q6krbCoKkExeVkofQQyChQTNVjuipVyoWaFTk4c5u2/+fq4h2iduMo5IPgQkhsDZUADlCQWUGakvVNth74I8hEZGDhdFYko2uWD2NWmXIKLDESozt6eyyEiCdJnIf2AqjRRXSfS5y8HaxTYcdxzMTxiX7wPBmoOme8oOVjIYJfsX30t00Tq/bWCN9vPoLeb3Btcq9m+DghzdokqH6ykZ603+WA5PavK158mNoQM0FyS8MJ5NPLYHD+Hntz+6jJB1O6rxL4tv7Hw7rO/9etXbhoi4Uox+PCOxX1eM71h857+Ry/jcEB8qwbeYoaWUxsaQE4Yeh01RMQKu5nNWHQCi24jdX4v96PgAFY540mXVm2pYaEJLS1PK9QnfutsR/VXP4rD2HrhHJH9So2fjWVh833gtxrIkDtkwLRIgwYKK9Wtr2wCEN5+DmoXA76r+5e9FQ3wToI6RQiwgc9AjRE0KgTA4kVNK4m3bZ5w9t/NKwirPSD2D3dPQGxe2xrhQ29XZ4p//apeC8932K6cJPW/77UmguI3758MCp8nH7x/2OChDGUQfa77DInw4G1gEINg42KjDr9MGRCYPBrfFou6p7MS5AZFNF6z6EEb207Pb/5JehFey4lE3lq0TNAK1BoAI3yUayhAFRSgRrDKjP5VQek5YJzyJ2s3N8YngoxgHwPJALkH1/diQW49W68u1vGq4w6wO27bq1lnQQM11Xt4YyL/+92Y8JbzWtKErbJJqdVgdHYAViIm1XHb6w6/BamrmbQJuXccYCoG2OrRqljeiQCWjgMMzJdzRuBKGuBKHLhQHJ1NyWI1hN+iMUuTxHBLjGrADW+yAbeUDrmDqd0FGIHNxtsB7ijpwV8NzocfRIsMzbeOvPk+Nw+Qy1pdqAK002IGTcP27oto3L8K9/oxabfp/oSPw04p3pFzQGd644M9Fir0bNHQitmS3WjfUZ+ugaRqXuO2bo5SqjFcfDRMFCbuXFAQaCR4A3M8HWSjDppIPj2oFHNqbgubopFOsEmGmmaSwbXQwSlVo0JFQYEVKirqDOD3yGWhTWrQ4hwhdoCs4XhR2tRfLaWHpru7DGgKju7Fr9pIb+bHECBikjsLl3/XqFBbOvyrpQ4V1lE92R6Sa9NnQ0uNZw7I5eTnIqr2y37Nhbig7ChpgkyrIpn2SCPwmsda3ejCdpN2HaJwL9rdhl8OlRx84AbSru6/ym1jOc9AYM+KMZVgn2BYNF0OHRj8Ozz4WyZ5MVN0z6YTVnVEM++0bfgInI2pq+EAZEUVuPlH3z9RTC2+KEAHPFPLmgLA9ZMNL9BPtBbRDi971gpyewoN1oh9eL2NZNuv/Zx0sJF0gJPuaSTdzkmHQhKpE/wecbCUOzQaOMMq3pUXDwqrEwkjqiQfTrr9cwhVV9sS68HON+5sjDOKt3EpaE69PZCoB4td+wGXfF5BUZDws3V9qQoeL62zZdvlMvGShoCUpjbD1eg2T8sGAnZBHEzQW9x5y23NIYekSZ5/EczJmFm54ujS3tewea0oYFD9lzKRzg2a2sEjhXazAQw1yF5EQu/NUMYvcu9d52Q9TaWup6dMXD1C0uHfShX2k/+JDZ7vXrq8rkqRCU6Fo1+DNJYETMLgs/rZKtsziXPG8RjTwf8fFowgvGSxt2ERFn0w9OmQ6kztGyJ8B/e0DZNHr0AGE2WPriWd8A6JCS2TTHxJCK6sWeED0LkIgWSEiC1k4dFpfKV8KEkkh47GX1gzyRGtmQBmxsRYvzIBJiLABDJCOBFRLCO456CpZjoOhuG1ve+5bHpfQhd4pqOQiNxXBIluogiHP+EwiwnBkza4PLnpy6ts0GqC4v0HrpjcfDgqy0PkljYQjEDRPAOrvxu9G8f30RnaHjLB4yguki1LMxy7FMEClW1La+vWUplOmTguBZ3+xEYntKVNjoO+Rnds40aTXsuAenM8U0azLs/WkdaLKetS8bh6JKIJTIAbXscUdrBoiBXFztgeaB3UACDAXrW2c/NzKJbprVprqBbt3zTaKMfOf7E4Am2Md26tZ4snl7KoFc/9iwf9Vw8yW1tA7BDAO4DAHbiKcOCqPJnMjGQLvt8go9sc5jlqM48UhzSshTPZC+1PoH1sq9O2B34+QltisueXvGJIghg304vlA0D1IkcoNZoA4tQNJGiA1YUSpeMPSNasRcRgTbqn6gYC2VOsTJKm25jafXv67yOtRFc5f7PujnrKjhjToXNuZ6GkXliTJG8H8cGrxlcVq5py1JX/MveFBXanEDAK+lBFLUS17d43oTYoCnB0WFyd6g4w5vHGmgbGpEdEPAMnbcFks0zH8WgS+mhCoR2EHVWHDjHBSuuwuzkRVH5x8zuQxE7ZvlsC58hs5oXkB1wWPP1Gst88oAEgrOxfh/EEJde5VI+zhUkinKXoZfavUxjpNe3FFEyVAVMZbiM6msunQCzswNOy54gd96DsUedMx/RwdXHGCxcydHAGFGa8HNJmjAxlexPK9nwmW8djgyteWRTy2JqibbgtJS9/DT8e5Sxf4WS+L0z2YvpR+wiedi3WCy/fjLu2Q3hGQB3LjUuNytClkbAVcbcxgLjb+GD/LVJpkqxwBhzLUwAxy3vaqCYCJpNoHXWX/XgANHjMVz06MRpA0860jU8tpMmZsmgiOysmt84QsgZBEZ6gwCXTJIKSIGPCMqVkEiECiViF4ODcHGfeS2nOx1ap/ZPYvT3elCLQikoeAbUApQ5CTSythqIss44XNZIm79Wl8pMnI8sgpkIp70tKUW9ZyiwIz3kQb9rhsRMei/DYtcjf4wPhcqZOBlZz3DkI611or0vcAWeRotPgL5Lvs/TxJadbej0Ms2/SiOD0By2sICi/TWL/j+vAXXL+m9g1geBS+RC3gJFgusPhnnK2wOZj20C92gnxiSlWJtGnuYCocyQLmTn8WY21k1bb8Mq1YhK7GOHnadZ0cc8eBs+2ma6ZN/PLBu97ynnFIi5RhpzcCyHGbjGEs/flIS3ZohGsr3DXbhp3DAE1oLVyZBcBuWbK3MyWbQh+JrMt9lHCaGtMXBSQBPHyQlZ/2McZtBIqnIIxgVEWf6xIslLwbQxUienDY9588gJQPKIgXAVzAgnnJ0F0cltOj7Z5QFuI7ZcuMmVSryjbAwEJmMeovP25isUq4miJ06Npn0mPZNKcybkR0AQ0Jm4FikwR11AE94ftVCjk7dlJ/cXf/1fDs775ZkvQLSr6nbERbO3WYfMI0xsa5Ug3Ll/QnfYaHi9Da/XrgeWyE2kB23QO1mvRPnmPTLBHZsLldvb7StWYN92cN10rOzXNW4od7ei8pdG86SJMlLJ0OUwLcThUwZNqZ6bejySDz6JR0vYwxBYH+6+wGA5p1aUuQrjnUAPaqbOCcD1o0V5Yg8WYFMDTxja9b+gAqIZUaLnh8YdsvOQrme81WULxR2mCe2eJpemdS+PNqhwhA3JkA8/UK94Mfvk7k7kICoZNoITQ1piHZJAyRNKzyjTark5impFUj/PnQJ9lEXPjqsXz4ACfOPt/UlTW3XlpT/h5bNuW7YLLG0pD+9o2ikIvvGpf2XFiYAtEDMCXjVHxweG+YZXxTFTF9Vs+/NE7v/bNS//il84jGpmZjp+lYo8v+fHloZOFMGMcXaYppmh2VolL0697Bx9zSiOHZW7ItXoXn3u23bLNbPT6qtjy81ev/doXf3LfJuxm7cJb/MjFv7NOH9oEEPpmeWwzzYmxxD88Z9ev2M8F1rYVwEzeIMl5QPs2wCM9eh7Aytb7yr5J9sE1++5y3nT3lWtMtrtcML195TGj8GO20zFtApzk6K1Dcnq05Zn/4oQffPvk4zed3+h0WZj6w8ftcGjTPDfkciVe+v5lrX1Z41+OhYsOm3DM0DexYI4dmrVmHh4YlpdNtmdYFpiFYvIsqOIrQkpP/ivJIc/p7mip6kUDeu36OrN5T6mDShASJYcVUlYJ6JbLQbIEKem0yg4f3LJMw1iT8Jix5isqZ1VlEIRbJBraWarA95dp95Rz3AR2s/FpbEOZ4UGWDKMCAXgyncP4CdwcnOP9FelZ/zZRilyOM5GMVi1Tz0dPNvk+lJP20iPcG0aXACaLe9966PJpZQNBySeXvX9aWVjTWu9H+NkN1z8pi468JrV9/XXLcWBD/BAsRi4yummn2PG3k9g5g9xdyRCZuGkR7hh8waSs7NbzYfI9tMft2Vq6tGmjBdOzXZ8pZ+3ixQ/8FUX8d5YlwS7RRERT9l1OTafsB73ZLDIndY09kvPwY5KoRlaDzDl91KzpA+WgfRiSNDoHSM6O9qEwffz2TWbkcimbF8C7UKLDC4oXZUcHMMMDaNtuNxeEhHjH3WdvLQnrY+QKA3bcSUFu1LBUFkjdIBzgjqfRTQNpKILvwpSH5cAt+ge/HH6kdWaXQ2r/eEGMi4Hjtz7kdPmPBT9xURMV3/b309QjyiKZWmzKg9K0niWejPmVfFW+abudB/1+O2xcwMKwh/114ESVeJyrumXP4tkMQbdg+Tw3GrPdwk/f9EjOon01Qv+YmSkSJZhGH1WaOZLkgthXzTvii7mahU8zZobDhqhSYO6cUNfz1va4Mtgb6MXTxJPZTUj/24AKi555dAGG1yzfRsGJWe7PcHCGcZU7eS2Rpc3LuoNVXdR3S3IWeYUTTxPGM7diuyRZNXqraFHCPyNrSBqQ6ILVuQH0Bgp9H+us/VT0v7Ob0QXPbJ7iur+Duq+Lj6qsGeABqAf1GC3ucLUlHDKgfw4nsSVQL3dLfFygi08fGF3K1EnUzeAOKWIjSfzkDer7Ur63z7df2jXrsAL7SEudt5et0FKrCBRwHdqTRq+UMhhrQaqQ/qBHGcHmnwr5lv3wdoSgNM0dgGwIMP17AGQrxXRMZqus2mjDVQvBgysmbymhlHSlhrat8ZbaTMq4QShe3QcgLPveh3SKxMBhv81bR/yxpuxxObZEMxJyMxsd64asEYvx6chcpKPncIpOoYOW/jqvpb8UFMJTEWwDIbhDylRBCS14JXS8EtSC+rmNVcD60qKpC+ugU8VIp4rRe8jSJHCq1aFl5ivXI5VrrjwhwaaCVqNjnULY121AH68Z8yqx5/e0U5v1gIFu5889Q27kkM1CpYh0A5+4deLeZhZzfG2ataNILOG6U2zZ7SdJj6GCGBGnlBOn1FRxCjjgs6PDL6I91D3EPnAs4E+oMz+puRGYVPlqUg90FJpvu1MtRZI+UbecXbYITBYbneUR2AX04AWDKPWZ0pFMqctEeoJAJVZ1ppCu3jRXJ6ZU1wvV9VwnM19dNlJdRtW5+X39Fy8nwLGAL0zCyuaejSbXOB1nHzr9T5MdxAwdjb9+j4O4ZA0EjgxN4rQyM2RoCDbas1wMW6MZxoC5AeNdYnq4C5XuM/09RvY/RWdG81SuXNM43mr4XuiO+F7ovqNcYLOtBYINoluBF82ZBe8PsQt0mPcp1QKHRjILVPXKEMGPurT7MV13ms4+6mYBEF4M4TINM+XxXT5IUrh6JYq7lE5GlWaxocJRKGBQX0JUkA5Ic1DCWG8W8D6o7oH/+uVl2/PNDk8UHdQIaFT8MaRwwsVzR/VaaBHPic+UjGRKOFPil4eYtjyEoz42L00R4772RfRIEc1FMlMMERSNHUJ2G0q1wqRcTyfsNaEekqZwSocZTLSRfnp7cHNaBG0azJCDqm196UYqx3Vr7ysSjjEFkSRotKWf2VIFoV2Hx2TS1dpYKeFFVqMsc1vPe0U+fwnXXiQUP96sd1VuF8k4oa/plot+qXPnngv/0m6ut2z91q/DwnzTNLU+Gpn0P+L0M+2ObOVZmmgVGnC2RIXFQ9lo1KiyZQpI3rj4LMifXxeYxwYGJFAy4eiyWvx56013W6nYCV8P+/nQQmrkcGUY2JV3yhd2TCFCGV1YGiIz1ANBpIkzRwzv3Z+/+rCWHQcZXO4xa0COHJV4ndqBIZZyjVfDBmCmQCPEcUS/U7dJMOmesd5jUL7bDnSVMom7Mj0ORpzEMihzI+K6x8EY6nYsgeOlss5HcBcz02xOuW7VZbCE+pf9gXPlwNVQLyOPIXsqPaxSqsWkoe8uR9/ux/bBZ5Q9ScmtOq02bRw2Z24gGElM90W9FPIcZjy0geImH67cOOTuDAPajKCAM5Xi7ndZRsL/oKWsb1yEOfSre90BQu7u6HQK6PqwQgm5BRPbxoIAGO30MCC3qH+/8MbOxxOgdrp7aKSzoRg2IKz9QafwgO6uUrBL2zEvyet6Vre897yn9t/zg6s32WO7j6777Ot/7ZhPbrKr/k3v+aX3nbj5m8Do5/2/v3/e5h9/dRPdH3KXUG5FngbWM+X4us1TNAhGoKMOdyyoeibGINPZXXagGs08uqdOWynJa7970YAMnMjUZ9y1DrNt9BDqFShMl5eHY3hoejxYJtqvFIJvQjPx4o30lVeTt97FGSVaUoXF/5UvTtZChBz33H3ZNHmYT413agn2P3YdwZ8QB/8Zmm56Drz/DoziTftRu334x7/DlYrBqTg2ttf29NxO57SqoTL55juumHbsECy3sDxQM7QCpJw5of9DysjPH+Rrqoz3ipy9FMjPl4JdQ390XeT1DHm9d4UFOHWlCx99gymTtT8Rrv+jqD9Y0MIJUOBiEAd4wx360hNMMcjhYdroMKaZdYcYjd/5hu+Qd5v11AD3ghX8x/wwcvkhjQvZgUcvYxVERHTzSo0Xm8bvzITbNRhKdNNCFdcqJZvboiXRcKOCael/jKAvmVRwv4NY8ABmUrFdzDmLg44Vi+j53y5WGm6pWhQmYvCbS0vG3v1G29+1LlOoaspn/UUlVEby+7mLM1pJKVrI+gz4qZKDX7b7ohfbwqE3g46VobtZUdSt6kabstmmtuQhDIKmA304u0c2u4UR7rROWgNxWTdQUb3tF4bRJH40yfhoOB43XYsW/d+nlhSVOw0f5eCpZ/fUWO9VUTQdVwgL+TArn1Nauni9DTvX9H84O1d/FYHtj89qdP/1dtFNLBKODNNa4gznt1gRCXQtxMESWIDQqMo8SCaKfWZr0ODz1pf4zfFnfb3kE4QBxMmCPnWFzstQf1PMUdSA/WraCDsR6Hgs7TBi8Y6lalGYZ28+Vbwn0ZmbzMdTxzQg6sC7K7+dSjHRQUckX47O5bEpTaW8VcI+tkXgTrERjNcYJawxSsc0RklhOrHhAjKtbrgQZ9KcKeM9lsJP15sEsuZPO5ECn3qoRHBLYqQSLG/ORObvpSaZ8rweRYc7vydNl35YtzUTTph4XSDvyiSVVyesiQ70cMr0IqvSDlF3RGfaEyS5Tm1YCgPoYAkjvFlLYbd55Yy/UyBqSzANB/6Z09whkQm/1VprRHoYNQi7+QOTLFBlyHDLRBNVETL8yTSrUygdi4NapxTAWHsJYWMtITxuagJ/V1bFGJzx+seHgMFpzNwqp8EJ9CEPhyhtHHDb6SmLGqsRPEN7xUDBioFs7Ayt8IjEKjFGw8TFZeJGCtKqouwIGhYArsuUAAd7pg0cbJsOkK/HP7nprpgehUTZAwWBM55sBxMSwnLEm6CIKuUsf2NTBBg7AHGUQxwotBMcCbbD3QmGKBBHIQYjQvwww+fg1xSXwPT4qb9IGdiyPWf5iPED0/rjOzFrRvbv2+mv2E3BO7EK3rExM+4Mh/udl+W6cOqnSB0be2/TzbO3d35xisVgTDzZdbrTBnabgqv2gqtuCq6qKbhCsoRbvTOQHBypZRPS8glp7cE9WdmhOQWGkmQhwYUWcXu9xcFGWcQ1OT3lrttdCIVd0x28/fuXM9jfRPLaDvbUyTgITXpiOhYtoWrq2MasZh2xZ3T/NqolQ63uGRzPP7clOR1vsfVqG3Z3HlxPfT1+GTxf+utIqXDVdcSSs/5XaXTOSpoZm8PK/9N6nkW4kqo3QkF7o7ZAqF9i6Hy+NOOlbV7W2susfD7ewaIwnao/EG6ECckucza1j9cuvc6f1wNEk8US8KC0suc949tfzmUDwy+g6zjTXGn0e26ky3Oj6u4FS0iq+T3lnClQX2/F2BcXV53pQK8O778GT3OIRb/G2QqbeQuXstfwZ0+h1KGXLmgQJl9ExgTSJ7VQV5bwC1VkQQNvyuQZ0ajm+aQy+WhCezQhjW/dE8lobCR/9PYrJi2px9SYr3P/2y+bTgKazr/uaicaxsp0/jZOBGImw5LvKu6otacGTeuclJWUED1rLy1Z7DswgRdZk+0Z9bmzqlm485OXEKUxef8ztH9sxxcE/ujOiUBmUp3W0u6wcU0HFmm1VUyHJWg2xm1bs94utDi9fVV2frgnRnF/TUr+DFMTDJT/oMwwJG8X334u1fwA1dzgOgzuCQra+Gi4Z1rPI8EXKhL0fd9KmU5zrj0Tis4UFMhSrS+7DYUW3jtmZp8VvxtKrszdx6/9imzZfT3+++AmSx2XbxBbq9Z6xLKc0NluaLHr3UOjjoV337dpyxc+j//utVrs9RMLR91tGHeFx06B6KaY2sS42bDaInUx+TJoGncoZEDSfjm3zKuj2Dc0bdgLw8COaD1OrEsdPBtasC5SkEvGhqBOdeFi2DwU6w41f0rWzjdgd54inbcedcCGltNX4i2HYGzpj7i4EatG+DubRMy4ELMap48L3s84+Cm4l+8bbX9eZduDQ8OQ2EVYbZuz43JylcjWCdmKgST1r+0OnlqOYnJn4FJyvDsidEeZgkfqDkRbnDUMPEEWmhEZwhGhVfuHgTehngPqimE+GeQ5NRdifKD2pGnU0hqjbHvaOZRrHaJuTOGmnTmPSNP6MR002+5mR0Ifwd5WI3CxMyoUqkUpkzoCl8cE7g1TCByTMD7PszzdkyqOMcLLJpKeYHnWmfShhw9ICuups2/I920g7vF6Sk3e3Ld3YVcNopjwegomaGHDDoRlxhbWU5fucSCdb9kGtGI9XJfXk9utzDCqzA7S0gor5Ry13zezL3LWs23bdjC+WRXepu13KXO8S5l57jRLP8HbjXmfV4zkFZw3HYjnsQkCzQSKZL5Ie6RIuy5ikvUAKw0cZNQffldroqNBs6ZBuNegY/ricoHdvMOcOB2noy0Y/64JJ07VsXzMY+WmY2t74K5tvEcj4KWamg4RBZPjR5h5Ni3MYCQMYFTrMMUrjdNxgdTjEL4yZESe5aE5zudZA+vp400GY+M1Zu1wpcxg+kooYhYAYYisxKSPwRb0eLPWZl0u1wJ1IMItln167GF/x9jiaFLCKBOQRyGLUTFNSmwpi8qgSU3MLYC5PcbbyWhbcHMsNTLdHZXOelECGouIVFJ8bz4rnOmTojsG/92QKOcK/lLEvJKvDnGdKngDpO1tNrj0IgJm2HkxSTcJvDi0AcBkkCwGF8F8TI7HDvAbfxQ8qXT+HEgMT3A+z+47nCmr7bet0F1RuJR9AA2+MEsj4SBR8ImQ8bXKcGfkOtwZyZx6q8fFUTary2a+7AzKZqNlZ7xq2HUfeiZbF6TVgnrCzqvgAsBk9mkgGHJuLKaLfExvBy5G3Sxto5wf7w5fsOwzvs+Z2cEO/PHhV2Fm95Xz7GavXAOnWLBesX/HKKehM32o8Im+0SVIzAywH+3oeozaj1EzAsRjrD1aUSTvCT5hepFPmPENZqy2Dlyq6Rin0o5lZU03il/8emBYbAMcvIUyJtrajmHd5jHROkIzC/xhIf4wtiEiZNYoIKjtgAW4ZWQT6vtEt7eiC0YMoltGQbTqDrtn9L6VqgG1Uptegz6vNdm+8liHy5+PenCKJW+jHVhGB9LCrEXF60sb+xfb37Vsx7LOVfO5qJoDuB8+Ws9e1AM1laWdZc9Wt25YHse8a21g3l3lrjiS26NyTTfhoa866o5TuSOicZdCmGQQU60DcUrGqgln8QwjhEGmYSxXx4N6ougMG10Nbe/M8cQdjqPtO1GBXpPpCYxkme2f8RWvL3PJK5wcrLG8yZfAsBbK9XzmuUAINBcLOQvFVKQjigetx5hkdIwXfY4pZ0zWFGxn6jhpGJr9yqeSTckW7WSx8HMMhJ+eTe9aId4zL6/oOAZvOYaBGSoCQmuHTnoEnfQ4OvE+MxaKJszxuB9c7XBNB1yL6ErANe3UuMdCkxpJjeXxh1+EycRFmLiRTl6Esc4IbBuLMCw704sIWUPw6TnBxy4wJ/isA501660rCiy2oV2ve8zxEFFqjlU1JawTIGEFsSo0aod+TJmY9cQMZkh+smOVxqIIfrQ5nkYDuafH8lOX5af4cmIlbMZuyEjyU5CxIA1hKR+LNWMHYeWnY738pCE/YcMpCfXMCXbusaJsVl46NSFdsP+bXUV2QpZx2ckqCvEX7edADkALFlh64lUeZKgm9nd8s2RoaRLOOb76joTU8zGUBfgCqo7lrM+kmaxNj9XjpeoC7wtTr8d1XKX2qrBHaXIuUCir9UpoK6i4lGOnKt4B/uCr0/SIuO8cezkKC39Vg0CMig+fRamYjToLhmxf407DMOjQKCxGFqleyg7Tj3jj0nZKP73bWm4V0Q3YopH3fM6rbR53ZboDDgMFXHcblLtMmGecCigQ5lkmzK2moyM8YFPMnKbSE2QeHck8qx3VQ6m2lba6Aj9Ow0JnwH20EYgNMKQGoBHbShFu1eoV4MqsEaS6gVpPM2VqLHXt7Z28xT6+ICdFpCayaWvIIqWLyRExnS/1sLxrZmsdymysQ2HfTSFw8TpW94zYLN+XFbK+asN/eoey72On6quvoXBwFC8jOb6MsCKCB7nUuPs8zj8mW0LUPr1wpUdOQ/jVPbTjYIj8w/Fb7nE+99cPW5OwWXlcBkuM8Bccbl+pmzYhdEbK8n8nio0A+C/1431VyytrwCTiT9DKjCTNYCLHk2cVZoh9p9AakPUauL7GQyw1YKEj+jP1U889sRt59L6PNPRHjuJ5Nceoy8H0UYdH3QpuLuq70MuI9s/NVWuMNnPLXM7Mm2y44iLud3HaZPtoul6BhKxr+AVIz3LegsJcW042WJL0j1XRrwFVEC4uAK+4hM37nL8LWAARsNYMWvgjRXKZE6+mi8C5sQ4JlaEwGxjjyMWXWb5XI9EO9l9sI4MBNwGEZ9tjGMRyjBlez0HNafpkpWgxkz30wXUpto5ddtCXm8x5r63XYwnmumZbtcBnUq0peoeQMDOaMBslsNOPwbpw+bkRifnjSolLcanzMXk/IM7BNoxsx6SQoNmOSdUhOZp2TN+8dbq/vmAM6ONzZE3res1yJYmPOj4oDvZKokzC+WFuFKL0ZfaHNiMy2BY1Tg1tg5k328FnCDx2ZlifB4K5z8g97tA5MwhHhn0eW5C0uTl20ss7K8V0VlAjfE3RyUYdI4cwnGl5OgyOx3QbES2J7fmIzWAxbM+takMnqOeiq7u4i6AUwn7pHUwNvYfLUgV1EvnfaIJXjMbxErhvJvxlmzwmfX7mfvataeZkIBJALj50yEy+zINg/1wX0Tpso122xeDGADM+Uqk6OOfgcF/etHrYoOn5CDLmIx7DyIW9xVGafwlj59SZWmuotRfd1EnvTLkA+dem492d8xGI95QVTKspqDu7KOTRuIAB4HyuBeq/xa56imI/dn8/WbYsvqp16qTVmm00L8MdhTtXgdlOa1MfIClUV2HGnR1PpVmjx77yt9IcJbjg2JVRWFMWz+KbhxCReIFBmY6Pgj+SxDTouxxteuKMgnOFKgpvw6a8XzKwTJaHmDQ5lpaYlOaLSvm7kGK0R3QXkqtRPpMayaQ4k8Jzhy3iiiO5udk1ImgZC5MzkkYoOm7eFitRgPykOtFEXUDEuytGg7ZYqYAdAZElringy8Z0nYpdxK6fjM1Ro5pzcKaIsvCW62+DB0wfbFNOMit7Nixdm6ain75jsgAXwgew9VnT7+XTVWt6oBuyRQp+jGUjnIzmb4lr+kN/AS/2bN9+QMy9BYkUSsZnlP3rbrRpTVK0Fxbvq3hFI5vxE6ts3/nNkj+KoguHkryZyPGzYDmMrK2B2uTmDum52+ekkeynSTc97XC/CEhQYOTZ9jIzHbrmb/R2UoN30GsizziDfT5kVpsOJr2fbtFnXnVu2i/uNe+OYNJN3jxh5jNlbBp+TrY+vEzGgSLoohK0Z7926bZPh5cBjTWJr/o+NMW+JAOpv6WO3JAV+zOpA64ti0kHG57crIYuBxp+r7/U6v/9zmApwx+1695tH3YIo0YQximobxCLA1eGS1Srm6XViuu73hpdcZBcj4+GJ8cuV+Az/FVRBA7Rvw4GXc2D2+/vnHo1o6braOR024bx9Rltr1qgnxzHZzdZtIvmev3r702vV/rbdNSp0yFBIIROZA7mDqprVwpVynm1xcpK7yP0FUax6q+pD60SF3yuWXerXgGNcOlp48puOnJlNw3h0mufVQmmxMnzUPtOhC3QHOFSNp/5kW/c+oZPffYrN93V+pd0QznM1wYLynX0dJJ9WqCnU+xTH12sQawGD973BgZx34P4tYszUshWWAm33ToNzDBIqFF403PUhsKHkD+lcnKxYhBBXMDTSd5ZoDD6BU2J+MG/ndYIR6YjWXH7ImYigaABIW0Dtkcsuqop4Vrr1bbHukc+Byt3uXH74ap5hZXbre+kdCI+ceT3IQLWhY3AqMN8FTvMV+MO89W4w3w17jBfjTvMV1Md5jsM8zeVg79vij/TXrTkzwemuA7+pOy05ajDRf59urQb4kNtDul106hXiSML8abqEG/KhXjLEN5LLNL2IHTWZOzjw31dtIhYl7VdCRHeuGwoGK+7WNGVRoqu1ZSS7MyOd28IFKf4EYHiMuTPwnaO3rkrWdQVgA0RnPANoxsNFHcgDhQXbjQ/pu6PmglC7MunhnLLoPbx4WFl4PtUSIPr2u+/2Po7OLvuP7xMRoYNzP8I7HanY36bUap/2QqhO8nM/aUVb9Xdv3JlvBwLQvdaRBQOYrUwxjzqafGdPy7HNObetjtuDc34wh++DqJRLBRBgD8T7f9s+Uj7F8a1V6C2yx/NyDwpvEVU1iryoRZRQNe/B74JSFbZ01stS5aMpPswz261ThMv4TZtiQcFTciZX1j+3Q995b9c07cZ7Tef8AeUQI34hvZCr4IYrlgkIDX8Ly+6xTM//8nvvuMP33T7ic/BMvJ8N5uQs+rY7ux781V1D1ssJ1En7YLEOhSrVjCcUgFGiS2andRrFIqTdIvtvN0Bn/5yNmAH1yIJ8fTt2+gdOW4ViHVGy+sZFOEOErmDqC37+a9a6WbwyJ/af43CIZbldieiJEfLMtjsDj77J47dGdsbr0DWgyX7talJ7CJFIgbLy8ss0rLyjO4bHgEtUawcIkORLtcGCoId2fPXV53tHC+vfwXjkTKdbd6FqeH2w+fS0p2B4EEP5Fnr7XOO37LnA5bMeFHnK5TtI2K7nYXe9irjaIYcsGHVSIbQ2lBumw2eJ+I4wNML6FVDH2Z1tLu+0UTjQ6j9EFKmRzEKTQcElIMbBoYVYhdiSWUudqGmcIWZD1fISnTY9vf9kQgLHjcJDvmYmL7zIU/gmeN5qeZfUeamD4s6/CEsOEsVXac2USbnmN2FUYukOOnGOqgdg5omrLdQSQs2Yt3/atOxEgRf2D/wyDc37xnytkNi20G34LJwg5fcs8BROkTCsTZ8/Ua9ikggT7m7cVtQD9R6Vrz1DYzGJiKSO+5Y6gQx6NtKKauESXesqoYJMqZwnr3Fap69sX1mP48ImBGLEJOClManhFCmlmLyVc0QEXVKVeNRaYU3SydNXIcwMjgqwJybfFvZNTl7WiHLLKgkuDAfmSgIo6/EqRzcyWMPq16+bzcf6nehDu8hgW4dmoSv6Xn/irZc1RvcNks8y/SAiHydsNcwBrgHxgA9is9qEnK1NxwGV9XuaDko6BqX8f/hdRPXaKcwneLelETdDjvxDA4Ajs53YXMDp9j7lHbnYDSRdLcu7ICPQtDJwlxmvk0mbGo7RWTi69G3sucrlnrDhdS2t06jqI28vQJNNBnNe8dFk2HibOcWKoce2dx07OkIT55tyKLKn8yCKwtnzXHQj1M0JvAAJlCRIMg+oiAx2BcfbFthAmZq8KNOkNpQRZVYOxFbyWMBlmBGxOpL388qCULmUcvIAMVbktrPIZskJFiGeGyuXbdZu8NZZgH23sf8Y+7LbOjLbMGanYQsLEDuYInmLVzhBEU0FEVBtldm5kV15BTUkfJZsbMoKVhjPksaWZMFNTgpZ3sDEZxSqgnqobwwefHhnGLbp1ONXXlHlQddJB1RXMLO2+Hi8/kN5vu5wxhnxEvr6MNCDzxh1dyV9MV8LhyaOngUTUUU2TcBHexRRzSP6EMITagHOe3hfmUgn9tUN9w0WZ6JwqS18R7fSpgQO/en8VFevKfqN2Wo79x+1dQ2w530i3AyCu2lVbmejS6zVxgyEA79//EHDl+XyWjaOnjlEUD8diPosAqmMwqUlfddMb1Spz9QZLeMMP6XXBTpxPhuEF8v1T42LrtHiEz/UtN2Wov2YJ2/A4NoY8TRnPO/LFipZ97HAZ0q9/dh64zSLDt5Jzd2ifmj45Qv0qCZ3GZ0vII0nVtIjyzYsuJgczMbNgMYBOkBc/IRnPeX3soBmNNwnsycb1rN759eM4NntPIR85M/7eTBkost5wMZyTgbliQftTdNkNqGXDqy9UJhOrVpG5yrF9fXYoT/vM5/ts1Tjt1OOjWQTvlAE5qBxcr2l64DC4yBLRPQvuAeBFsc50S06lLFPqpQOtAXeV2qSbCRpmGz1gZno2GRHHoYwBsQndwSpAyMFbfKevGAZyhd28PTKOgqOSweSbJiPdzlw6Sqvg1RSecBs8Orxcy6qA1z4Ziqmi9zFdzS9vBnRYbczDUOVWl3YDoOmnymEMwLDCxAqOdhGcBEZh4tOociHfbekLNLkfZwy1PP/O3uyg2fPm35xobw10GdqLrvqxZm3ps85aMFKw6UR9fuMTwsNfzZQc2RNb33EYi2Z+1wsPUCcjh38WEsfCpMDc4Ndvyqye1wcsABH+fA52cXqznu4xzk/LnmoOZsleOD4HzT4NOvcbfPP73Ba212m74OhXtwKSK5/5iTFwD8tkKP7nP7TJsOeOaoGDCcxyF5HNwmNns9M4OWPy/n3sgt+84ErPaNzuy21xTy0lbixjdnei8i0MnIPGgPESfnxhPbAMEZzJohpiTn5diwJgqxJ/zDAVNEHK8IXrJpnKggONIOkO0zZKWHbB+2Ot6sCC/dsHj7I8MEirAbC0wbUMH0GR9OnYLVfdOKPVnPxgl+UV/1s/FFDcqgQe0vsj+eMgimDDhYmCN8DO1zwwEhhZ/InOc8x4fcIRd9yGqiWrxWNO8dKU5lrMZsal4GxA6JzmD3YykFt+AG8Y0QvN853c6J4Lvg0oL1qtIoH7I/NP97MhWvFTvkazXR9TPZyCB1d84kcCg5U1wKb9ho3PkyfOeZT3ldlRn1rjPN64xeb5Krq/xm0HiSpAGFKAKFhHrT5quSm9lViIHU69c3i91nmp03V13Wa6fsxqADSxG+HiRMl4k3swjClaq3QqLIPo+OZwyH7HCgxXwWdtfwG8uoZXrD4JrMARgOktitOzH4xOSXBheyHkV2fYDiYhM7eShxkY+Lr0jZDBR94pFYZRkBDeGnlC9kphSK73cIzOPtqg5p/4LFwQshvKnBL0BG8noPdG8Jeg98ecc7I0avXa/LFgMTgk2lWV9gFX62U9d0UA7kUgweaC8SxROBdQpoZejwZScsL2yS/Q5Vi+3YYsMsS3GkXA2NGMfiNoqXrLala6cOGlkid5a8bIsHpRKX5tZeCqThDlVKboK1Ogs4vDq3TFghCgximwQ68UCGdQM2sw2nlCb1n2Cnso295tBtupCL7aWh+SxzAgGN4i616K7UZcRCB2wAawFVBTuRlOJpswU0yEEcV41tqdBifYkzYVVdwvDDXq8wurZPcoG0+68DpbGXCYrC570dUMLSCI5Q+LKGLR4KVgkXZYfJ+MpD78DIrqitVkzRvxrZgjkb/C/+nwJxqDBAVsHgeWeHtsrbKKQ2Y0DV4rjgLI1A/nYvpoVRvLD+uK10weKK51oSx7XB4xObU7L/J6ATTgi4XUBR+YZ8bUy4tiFnURwSEl6ZOFggijRQT7tJc/CqaCZTRq+M8ZGdE2HK8NT0oKvYvr8RHtFInioZpqoNUTtMlWxOVbugvPAE7A0YmRHQLKhQopJ+jjrLZSfMUW7aSOIJavME2Vm5pqPFDiyJzEvaS2uik2CUfoatftUI9ExHAvHZgEKrxZkHYjWIT1ITHx0RH+2IT2LwZYT4OJLpgw+4AF/svdESH+2Ijz4i4sOzUaWe9IS1qDk6d+JITxZuxGQmCcTH3SblPVrzNgztBdCDXZ24B9wU9W6Rq7aZrqMewSDJ9aiNuwMNb9LB9hQLHC2H22QctoJdnmln6Mo3ZZXrmPdpjT/moZmRxPqXU5tZuX20yVFFatA4f1tEAtjvPfOLqMnWwmonPrYg9e4AfwyynHVkBfdL4ueeedPiuozgeuy/D80v9t8AlAxRYu1my+bFfbDf/OH7l3/yJ3ecMUTMIq7k0HyDDmLjK7AV0ph3+XRbzF9vMsXTFTXNDdoMCEbqnd5Zxr27nCU7Km82zKDjzziumamvahH85kzGwO7Czdw8C9FD6MxsGK1yxsOaIQ93SNB84xMzoA5DL9wzD0hkuwhq3oSFwx5348tNmcCfv0Wcl2Ig4UCXFR+mgCrYzw2CAZuMvYXYVw8Io/GEaSAAgxnZNjI36QnicfJlZ+Vov0IITvgP4ZKAB1ychTrjUbNk6gDe7r8RI/Fvg/5TL2dTsTeTXu8vrgofc5v5N5kq2Uo0JjXhzocpRZumw606Q9OmzXTCPeS5j3qYMZVmSDpnKP44aE1wK/JHXc3XXbqeGu4Slqnzd6ArLcIUTyAyGb3msAZvG7mv6uxG2GN2s0gRq/6UjMW16fJV8iVB89IzKX6k76tJ6WlJmAQHtuj66Ldz+FP/twAgwrMDnFE1ZsEoetrciLHKGV2xvsmb3tjnwmNYTYhW5/XI0BkLIPDPt/JqAVrjJVEdM8R7q1pL5zOV9dbAepWWCzdsH8p1DP9e3bF1Zq2xBY81C8MVmw0jNcnT7S8+L5j5oS2yYNdQCX8Sa+2DmaOsuOQFpJJe2dXHakt4PFhva8xxNutarLA5cwwC2sHRBBWdx7VJs4Y/rmH8sAQ87pjrxEb6xNWamS1b3/OR3X9/569bgsPnX37o1+Nhp6iOvf5llSTnHLaNY/ZUaHaFLmuaY5armT3lgn1ZM0TUV/uyFmxpje3dsTYn4rw6YHBODNj2mXMWZi3eFjCC0n6wv9Ua+9GHwiAnatzmjJm1bc64No/dUx5jX+aGZnbZtsOx0ea4zRmbiJzUJuecBRjnOCf1zdaxYjq2H/DB2sQMbngeGgPOMY8c1WyIgtRrNfDIzDUdLbKaa/b6yqZfX61B+NLmDdo19ro7htfw5H6j7dz8jeU8x+tYs6eyPWt+Rin72X4EFJbDBcUbLTVGW8HQkGGFO0l77PSLgl92m7mQZT1at5/n3SkOrUpcvnEXWg9ykkDSCieZeHkC42zmC/nJ5jmXkerC5yiD3H7pLRDpQVHRxL1zn6P6ttf8lbNWa3mXNpbxQoamRS38nb8+svZjHL2wWiAUvaRaez3GX2dBmT3VPMIfM74tLFcLcDUQFj6EQ5vJgl4WaMBmb3wrlm25haFZ68p1LMbXn7kcQNwPU8WKNA4nZYlHd1/lw52VGICPhQbYE32xq5i8CBJ1wbxYcFazL+U4Lv+xR6dv8N7YeUUlB53t2+jDWreFXiYLPhawQZVmh7YuVGHwhNhxZgGaH+f4swuW0Q0KDlyaoRNfQaLJ136/ea5hvJwGJNklvGLjXCEvDddOmupE5y+ZvRfjSQfVvSC+ZFT/z72akdX3npkFbWNhbAMDAdsGrk8aQdW+dD02LOetL146vQdoZbQTQY3GOic3AYftwwd7OXYHuGDEoWxkzRePC+d6vJVWbiuteSudYCudstc2cF5spMvcqzLYZZXBU6eWdisyL08XncTbZdmBw2ZF2N6IWAaRkP2xDDCvAETPFOSPwUlFPWyKW+TcxYuSt5xhaxEmga1BQQ7VKrKsBWOlLrCYO1u34vrVszkBzEbwWtNpxqHowK+SlyJxRj/WKhSFHTPLqsgQCm4G7VmSTs06T5Z9pAQ/Fw0YcFS5uhMcFjrqxuFG1eyjOJo+snuakZvc0cw0ZsV1wd70agaB74S7euhG1bcN2z/rYrETmgUg0N7oqHhS+M32uFYg7wmgMO2p0yOPanraI5fd48loR41O7/bjOBmuWmm6LEXzPumB+dhM/dA8LFXn2S1qmJ2q4NCX6ADtIHauWaQQXfMDeIqRxbjLiBn2McsSdeO61jxtQrgVmvQ7uovsiJmqn8U3M0+CfcLL3/5Y8XJ3eUydeY2FyxzBZRaachfmdMGhiOVU3plM1R4uO8Z8CeRqiKTAIMQGOcZ9muX4Y4xGzb2UfWEWS7XR0Ph9ehHd2KUnAZIubCjRFOok2uVQnqGSnCuh0/GGPjGP9YmZ/4S927aKHWDFWkf7Jcef1SeuoR6VPaea4u1kbtbE+sSZAYaIRTjL+kS0Wc1zPNSwFvsYA+sT3Yhmx/WJgL3pTdEndsb1iewap6lPnJmkT+wvl/2gq5qHw8gOUplbdZw+MUctOWO75UCL/kAYMiw+WYaPn3nkeI1Ql5oWUEtcz1Z9Y6HkjbqerAlFEGaROOvsBrD48GvUnkoa2RRDh7j0im974Kgh+sLBXxrq/eV9pN5XsXr/NRLHIU1dGTq4qxhWsnFvRo7cm5HRvRko+18Q1OqnjKqVsFA3sjHpViPQzgv2n6rOGbSKL6gUzbub3zvAwc/BJgubRTLSQcpGZuWG8egEVkavY8clW8uc2XwbbL5j2sTmi5q9d8EZSHfeRr8zqIRiRC8oHZbO26qOw/KiieUyMFmc1Zg2/izOg5uhLo/ubTODTbZib5LYbA9haVG7tCYcyvebIsB4xfuzib1OIcAqqwW8ihZep/C7wsn2sXdeOUuzNsFzSBzQIDMJetPZt2I4lgGc6ax3Eiol8WOlV4Y+sivpeNnd2/6Xeq8UhdOzAbXb7uTbZrYzaxCz107nO0XAJhqhc+j7mU2PFp3ODeh0R2sSPm1lfDqf3yzyNrnLKQ7nGG1siadexYZf/bf9rv096zRxge3tl7OULcQ0h/MVQCEJEuaQDynnlxo4uJmRz7iTEEa+dZORjxGOJcsNjITNw7Me6ttqoYrfU8oZRvFZ1hn3TsXIQmy5HuD4wMUu1NQKWIvpDQNG3rhSzZyK8QYRccZuV+ys1DeK8xGcZ7m671E/n476DWSXpr+/nONxPFtc0GsB4XF0IP0hpmKzE5MA7zPG+8LjvQye1RY2A03rF4i+ej9ji+ntWZnmhw2Ts792KIX6ArGr89p8c+dZc5GRJTE/uiQC0pfz03zPxSV6tH7mQ0mcyvIpLNYgVoqmPrKzD03OhBdhxjAEfx8uVxSeLqwdDz9x9PBzR73/S4LRCGNTNvOZz/l2UX8Nx9Xq8SBBy6JxUjxCg5CNCdBO5BIbbG7OeY2YRK3O4cw3CH690NGwmGpt5lRHvPa6vBfEmc7l1JcwNdKetOGcqSZutwiAhQiOS6v0aeK95HTiWfiK6Ew+mK470VIYxuAnVzTND41yUgKHirlyJs/IIA4RljMKGcMjJ6J5rfBEc7DEj5hJO2SmnDsFk84Ty4y7Ti4W9hKZBEHtMEEt8HMSEU08baS1wUR2xqIFhGEisn38WiI70zjjmyPxAfKUMHNWvmjS0bmYjtq89n8xHZ0jPAp0dG7FEtYiHD36Fi50pPvcch4/LyGlHjd54aNsch56utAkNE1rbBz8AvVeUC4QoyiPYf6zltnFsT7kfwFheoysr7Of+/QZllXbqllH1vvNnBaI+COy3sMR+nFmnb3j76n7LYLI+wyTd3fclHsqlbBlpzmOtj+gUn2iUmzppk3K31cjWnBMPeXjXMErt2qbOYTkSPebNtG0NstZMU1rMw5aosYEIdlvZ84bh8VZ5+qsczX9m5tE/+ZM19K/cWoWm75Di8dUzLubHI8zMr1ED65317PqYlIf2tSHE0ZqPGG0xuNNb6U83vZ4vR200aF+V/VI+fZo+Tm4nUSwlVlLmNc3KqjaK0MMy6SgyimDrpplwpyioKXatrRpL2NifMgalyGBkqS/aI7FaT+OGZatBn2NxX9S31rlLeML4hQ4pYrHOPHfBuP4ONqZsE3DPw7VHsXu+B8Q3f43uslilGyAgNsce4lzMqM2KXF3YTX2YMLmmFMV9ji/1OIwFIZ/LK402TN02Bt8VI5B3z95M+/iOLovSJoZQ1nxkkOh9kKJTQhlrSSbSEjgYZ82ZIaV70YMK2tY1Pcu3szQKKqGHLYasYyvuRHFN4QQl3IRtQymvM/7B8OCehlH5TQqQlh88QYCLWfK0VBTSIio9nujktEqkkYVeFwZfeRFMMEYJw4+oxBuBsOv45xgIKw4WRnaERWfEBKG+V618cPbodq4LrWnB4O/apWBpdZ++ETzRv6BH1H+B1rIPxtlV5T1BT3IQ5LPJC5pBrre8oXTdrzsbcvf2zTko4lp2TbeOUwu+Isf+my+4fupYWHvbxcfUjQEuTn69kz4gOm/lYzzefPb/8Ae+wJ7HRGe7xCNdBmel7TFHkI1SK1q0T8eDI/3hMdD9WMTh++CLoqE2i0QDm/K2H6fb92zbHxAQQxFVszK7a8mo6T9vrag6f34Dq4dGmBIhrfrxWi1QNMznrR/LKn5egva2jteank86brDVrRLswJjp4bmbkQelgYVfPK26AROeq3Z95X290OwMtFjwlCao9swF/BUu1PBIchXJPvgsP/wBUS6Sytdgb0KD/3drH4UQzR/h7R591fCKtqXFWqH6alpYRKZBjDC3UXV3143LRtNX0ff7uamNZrWvukHuGkVmq1E/3o8HG+/3kJtCVQvF6kk+sIt/ryFPQAErOSmygRmjGgLva5SNJRSQ8h9kAjYsuJmYNkVzskr+w1zD8KFGptw22Ur1OMdPzTWcei2mvKzXBkOh8uojrt0QEVgB6oGesV1IBtk+4budBh6WVyVajhyhpYIxQ9Ye/TarlKRAhJPmoPn0FXwG1CruxZ+Iz0D7e789Cd/sOdb//ATQjvGzCo989a7Dx3Y9bXlnwYMrrIzr737bW94929dRQjLmF7lZ37wnuEHvv+Tm11OMI2d2vpFvnPPhb/UufO+TcNTAWwBtKo6lsGf9KwT8s9c/mOk0zq3yTgqWqAQWYdcMjCh6trkU2+9/dc+dqPPDXXysGpHpBVHJIcS+x2LD9jOXpUPalfTAZ9yXepSbvcp+zkPES1U5IJ9XbwpxNXXRoeAq+urIGC5vDdt6h8g+uaoYNWrKzGHzQy0soFgH/qjv/uzF770HM7sZvbwbVjAzLpiF05vo0FPDhHdxLqBMwRWYhxQtIzbpo2Y8Lfjq66t4SlAzy49RAKv96GbRNMGSTIdrgpX4WiNCEdIfFZs8XyOzOW4ayRHt86Ruxx3j+RI+vtoID33O+N+Z/mXRaukuFcIscNzhZNiriCZK8iT7Tg4wynjGbj7yNTiPKdPzHNXlGfzeB7mJUsKQ+G8KLYzsLRd4fE69ziVun/uwGTq/jottV30tf5W1scJql784B1+LhNMGGaXScSw0vHiSUcXjzZpvHg4JSweTqkXTzjvWKhytmfISQ1iJ9bbM7ipTqbiFYhDyAQKNBmvmF6EnCBLk/GLSUjICVo1Gc9897xOJyyPIS0NfxaZjR9E8rkNTlL8KWSszravFhrbsMxMalUaqcn4BMbd6kvJ/y6Ttf7vM8mHU5ChCxP4EJM9t/FLKQSxuynwrURD1YXTqXHij4CQU0n+uKTB1D2ZIKFUaZOIBOqe8bQxA/BZ3nKAkJtJept9NnuynwXqFuh7USc/a3OTvmcximrCvkoSktqXO5JSOUTMDD42kVXy4376qCLyrmti61p9YNOq1Lz7KMuAqPfiMuDbq1L0mdEyd0wvE6YvJuyyQdgzk9WEXdbEIJu2AD1Bz6YSdGEyoiTtOmcyZeEVPsdUwq4dIe9OJvCsXNfF7UDxIN8cJYrvdSjOsv/mgKnpaOJ1JOq873ufv/5937tmJ5A6IH5O4OIF044LMk534kTG/8LkW36B/utHiC4nIbpH810BzSXelz2a76cUZYtHaP/fAaLf8agQnSFy2xEg+hImIWB6uLY3DZ89DkqTTcVnSficejHE5puAzH5hANkfOyZfobWmDZl6HBl3QJaUkCULzHkEWbTJbPGALHgcPyNO3RlxJ5wRPzF823PtVZi2Z9mPiWNPPF2GjSSlI4ZK4NidiGMzN++YjuPYuTOkaAeO3Z7EsV9G//2M+Rt7g4k59ie15l15ssNv7EoV7Qd5Szl9P1gmhq0zgBPAjsSocITY3CVWiicIm3m+ZNryk0OEggkfJS83k0HBMkreG5JJEVDl9Z540pa45aYSqGSHz2NIOfMtTTUCKx2qtLl5Zy1CO2gRSDtQdaI8UCnUI4x262qlVjUMJ+kaUA9Vhif0K0Mb7YaOQdY6BkM6Da5rksoE/Y5UCRp15Y3xyeVIU0J6ElZPNJUTw0g3wRM/RTfR3PL/iVJMRjiKxxGzP1Y3veNNX7/9hw8+fHXM0lRgaWfe+P6P/PUXPnXZlZyDVVl//nd/sO+3X3c5C4C84tWWn7967de++JPZzfXiRuKNxz/7L09Mc5/4ACX++SV//U/+aW473+RQMnCBcVnJR9yOOVTgaiFHKONANMqhkpA13tqjjFs5oxwq3bL/yVf94F/uf1tox2cND9M4lCTCHxhD4n5TzxDY9O3H6glhCAen7eTwdNc0FnHAsYgj5goJk1/bg3HG0OALehpHCDijp23hAgbpaXu3/44YwU2BEQAoenkaD1iCXj29NNabBoqnxyge5n/58ORNP1o1KlPxMmnS8TINhHyCThiTNU7My6wmlmXepJZl+zFomMvOamSSK5lGJk2H7m8POdo2PLsuD+2bWF72R4kHLAX9WKK12zcz7pSS6WCp3CZD16sPsZLSw1JZR1FHVKef+N2r3/WdHz/0SKQ6/fjfPPBnb339FYG00tb50Jd2f+P+P7z8mpgktx19HVeefuKzK7/8gR89Mqo83fTP/98PPbcLyhspTw/d/CfPf057nUvG1c8xqtGzdiAJ+Z0J6lPk7kG8LBOvLW1SiiQi5b1AWf/xtYsfufh3LlidlM88yjIg5bOPsgxIeb8uE3gHU/CvbfJUPpDy3bzlu5t31VO0jqZPv0EXPYUEdiYqR3mDPFkr6mN95RNJHZ80p8UtWicu5Jw3/SllzUOU5yFNLA48xHGQxHOQNMaFjHEhaeBCgl5lhAu5w4Uk4EJq8sA12sw1OuAamekQ1yBKC77B3nXbILLjJs6AB+w8swl2nrDrB40uTAHvIN6LRNk10k3lBzcNwaXYas9HoOIwRjK+dzORW5DEWhX7hxg4FCZdU3gBNhkXwAXPN0hMQ+DmdcvVo6JxjsibqOsYUb7iv9xTf1nmL3f5L4fqL3v5y93+ywOyMB2OedC/ucF4ghcmd5Pb8Zw/Twqxg3WF+JVsJmefeT79gb4InKXUrKFmJKySUZmXCUxKICRGlgUinvP8NGDrgSkm7Wg6OP+FuhDt8+6C54gB2vE4PgyTHaBuId0Zoj1bQcutlaoYBr1j13RGZZCq5zPONGjoLDLGkkjV9xnnWIJClloSSfzHeVfLsoLJB25PanTLFLaaoEenHRRqmBmia1wJf8Gh5hq4JBuiL+ELEN0JB74NyAMdz8dp2jqogBmwYnocZtAzzhbBxnBME9ZzJCPzxTUUvObZ6YNocPM5PsYwvdHKuqgsDZXNM11we/sammG3yIcgpo+KBCoSXNEsuT8L4gocXZsZU4CB54YilNlHy8ifApr95D+3jPwfEtpOB5t+Jny1Ie1msqOiT6u5hHLa9ns3kaeYBt0458jrMGpw7mKpPHKOVfWSR1XVZlTFGP93Y1Wdu/k8MiwKi4lzHGHdy3D15JRvP7KVF2CX1t+A5gq8w62P4EaOzX6wtd3N4556lzUxJmzss8bWAF6xz1/ZSFwcRFrWekhxgbHyDX+f3vK6R9/ydau3fM8RtLxxpGUx0rIYgS0rU4zaVwluWTVbFsNSFLFB1l7N8nMjjWXs8SRsllBr8UeJlqxFOjqlOBqPjFBY0c1kONrVjtivXBuLqgkYEhNx3EFcrolvzTz7QUkQEjdwInOgtA5BxYKIdSSRNEXMzC2FP9pUPxhNhlKsNL/EJ4/KmfmkglPyQ8ZsH3F+li874yoJzh+rI5iwe/nyAa9IGU2KpuegZhJatXym7yATU+tKx8dyaYQuKDhqPHXwXZg2oCH3ben/2tx/BwsPLMcmmL1hJVmtzecJqRP/nMSbu9+2++24XxGZVD2gvdb7RuUodLrDo6gTPBln10Xi6tQL8ewdn9ENuQyFmYWhu0biAxpONNha6gGbwj5StVeW8CgLhpuRGKoOmJfzQAFpfCRuHcnEZbt5/dDN61/DRGic0MbXSXIvkvJVVx8mUsEZ14TrrGr6XdYBzcQ2nOmxKsLbHZdJUEUktNLf3tRIM9LazobI87E24idae88FQWoLeuggtU0VgyNhLRkV1j4TCWsTxWLWT8eHB7GCOAhp2diJfxD7GhvffPy4v2p7cY33riy1doKElQQJizGDRZiga3ECcXtUxZ0jY6ehZ0m8fMaSHToT9zGoX4JgxLLXrknyWhbrl3H1xKim8huD8WNt6qtZZEtH69M8sti0D1ueJCjXFZuqyXi6lnHhlXeGQT/DYibna7aDrJjfyWrsd2vHxPRRMLGHmqrtb/3Dnx76x70PXNFkWH975xVffN+nLo+U2SsHP3vb7733p28cYWL1mWdAS/Aqa5BmqXoWM7C//cGBU5/aCboWSixvedUFb/7hsdHpbuLYWjp6vht21xQDJuhhXco9SWCOnLIXKYdniGmDIV44jSGmjk9dGzTmqP6CafrzPORngfHLlP8l0xhiO+T3Obj+WEFTG+h61pJOZjGek7xBSfUojJ5WUZSzKWBAx0hlzlaB4WOk+MLUjH273X/bO/YNPC5lzpax19SMOFtuMuJs2eoKbOYO6bhT1ZzS4S43eFTNY66RgKPkJjeJ5RqJD6NdZsGfSGYctvbfPUmFzRdPoijgkVPer9CtfRnf2r9NkFNenuMNcAjJskhwuBvu8R+Zs95TSJaG38Smn92d3s/urs9ePSm+ULhmeaTNuN/T7SiXJbNG+0cWgawl3sD4ts5p18qE5zZllVfKc4t7IqTyStGUBveeMHPaZJi5bPLM2cp45ljlpamKyk4GTTi7siXUYIJ+fQW3qPbv/PUcTYdd70k0RDe423wNUOFGPIwg7XBUw/cqB1lvB9fM3sVtUCSxFeXpXMkGC6FPCAHYBFsMm8xNB3tZtE/4veU7Dz5444+3/MsDQ9qqbvnFH//W9W9YWX/ASIcJe1yIcvaFRbcdg0dn2+ujrJkvr4YG+LrMnWwpj+BWPK2Sp1XxdcYjkkk31ADI+XZnTnAwedxXMdpb7gf07pu76GDoeO473swiCr5p2S58wxsZPlHDG4+84Y4FwfSGQxZueKtzW0KLZ4oEK1eXYMEoWIKVVEXVgkyqjP1pNURZSM6g3oTZ+Xm4ipWvDE0O/w9BlG3hpxUkWrcHOAWCrRJnsEN32L8bm1nb5ssU1j6Ie5sagaC3KVC6b1Is+q5JyZAVIXqwNE/mZdxHHAEcfiIgRgk5qXtW2RuIcgZOTS9iPxeSfPC0uIb+AAqzvpmzYQgBPVTCLoLMPPytlceYBXPMWeVam3Qs/CFeVK5zlaxDHch+nDmux0UXSkRpXW+OL08w68snmRPMk84un2yLPsU82TzlotLYYsa13S3LQV5WpiyfaqryRPNUc+KLy6fZvP/EPM38k4vK/8P8H5QTtW6wOZ9uNpinL5Y/x/3+efPz5ucQQZFqeob9/kzzDPPMbeWz+PuzzbPNs+yY3Ig22nr/qdlY/jPzT8tfMP/M/MJZ5Uk26Z+bk8w/v6gE9E6uQfIc8xy7MShPMafUSacOOuUvmlPNL9qciP9twX6aSc1pJ8sTLFYWnOl0czruav+S9bhSnmF+yZzxqnKTOd1sOllCMoAr7802P2U+oRyYwWxxvRDzfuLloF8q8ltdaqO9+1LTwlxrIEBuNIaa4CcvU/7JKHRKButlTLvpnE2h/roD6aa9oGk3XdMzs+vtbC/ldroTk2LK+x8g2X9gJ9w2MQ9nO2u44dni9wqZNkLOf6K1rfKdUsRfB0t2mJbRcxeg31N1DDB786pqD54Gp1FtIvqDWxBZ1m5I7G0tH+xNFj6i4eBpxN/qbBQcN4R042zPwK2pwe/bmKBrhUiSRNp/VJLgUeNf0SoQObiFRtXgaWf3dM34//Ej4Lgm9aF5XdSHhDsgTe7C4II6dSaEa+pEwSs6I9y5M8qdNRbohaAdbkR6cKgOk9vVT1yrHJjwZLkkosaXRN24eiKHvCtudldoViJHaJT8ci/HuZdDbhHnJgn53CjzwRB12JDAuJVuGpsWh2ytFFFaLKWUkLFUwNOAYEZ5PKwE8NYoYKxFVYkwThcP1r16YF41uNFGcjr+uUgDKssQ2LLmITHCcnigJwpru+kTOXcmgq+p5yJ54rF1Y9T0xv8aC+Wd8BDSbPVAWJ9qAq6eE2W+I2SWE1C1H2Xu13kbYTc0f+bbOYg38N3fwfUZo2us1iC5i54YNx1ih/3MQd7PHBvvZ64UQjieAhIdO/6HZuLDIPoWMj4+nITuZRMUSYY0I/3BMzAWG2movx9ZKcOhMxbpBKz/1suIhNLzu652YdlRCxoLUb9meJMt+h9DFat36qP/FTvVcp36ohaaVb3kbYVbRHQAlHKyoN8FdutAwBDloPQ7Y9Fm5P0ViYefe8sSZkP0b0PlNIpQYNDi7h6uQMHu9l8EIMDhAOiWVERDRMlkhbdKj4iLrNj6jdbZVYJthX3iaKHrOZQ10ylhs/rPZ+Oz/cV3hWbSwc98afvEpd/6AXFaCw+2sOYTPJ+By//Ml48Zc8p8Ph3cbfOlLqriey3By7SddCWSFpfgDzfhg9L2PyHxwSb9NpIym5LqHPv1wcc57rfCKsjQZhdPOZ4KPN1NHelg6dFTuwhtygTEVaEerljYiltaUmU95M7w1MFTiqc2nhJkL8/qUa6nIYV5kH2y4MRc4sNpeGXpRTk4gbuISvZaUDX8/ybj+FHjcoTGtp3fER5vw8FECHUjjPZbPg56U2neWGlEVwEiYmujIVParY12yvkqobv2xv4kIYCBcBcJvMs9Dr/jdjQhEAYG/28EbEMRWUxSZ2xXbLXEeDVX2Bj6i3sU1pv8IvFCwyA1BwQWodLvJIrVrg6spgFU5wcCT/36KfdPkQrnhOAmMuYcKuIcq0VDQXUIYrKVdpWXL/XtbqwrfDKH0UTkcMxD33I3gN+8iurw4QDZp7V27KLUIHTaVlNHKEXVXIsta/SrKnwF8lkF8iOt6DM38Sp8Z5dY3znDiBi/UPrgGUGz9JiAEJ9XA0d8qFc3z5XdC2gEeEmM3l6lZcbLpX1xmRl8MgkN7RV2ZrfbHDAME8ZGcr+HekZU7/4z0OMe654ohCstCSRWCWuTUos0FHHFfrn3jNgzWJ2ZVFx2yKVGBcubFtHZFgO565nN4CGi3Qm7axXQEDANrjST3xB4lIICW1iDYa/bblvoN9zd86aFDwSU01fddQZacBExbqGIGKjjXseeA2MygS19d0apESzP+SM3X7ZduFKe5mcUHDaAj+wViLNEOhEtfkLEio4rxPO0sQ6gSuz2r2jjN0LKWV+iCTGREao66nw69zbqPNY8Wd74vC1T9D/3h6S28AArxjFsNPjfCIYVY8vMaA5t3Kboq+5Jl90w4K6fD12RYlj2NMh5ndzqydE4Q22KF/T1d0Ve2dohzlDiJhzO334PyNBD53qWCzPe9aJggBMrf/Ct0yunwVR1yEqicmgQIzqLJmfG/iVEKBOK0U6Drrpmxtp72RGR2+hBF4Mzvf5VkBOx5DiuysxgXexZHHUNuuWMr0/E9VkPK77K8frUtPpyjvM9qU5UN704zSny5jSZcM/4Kmy+QEnsK8+vSezckem0cIDDd5tMoEP2GUzugHLnZmabfav9sLVphTs8qRGhgotr2SJ3z/4p5ycMhLGJH71t6Tf3X0lzyPAYfKLF5O8AHutMb29kskcVGB504idAvuvVud7w0zfYXIgQS8RKz+10o+qNo48evH+/OxbgD7np8fYAj21PPcbwEKePEGlySAMzPB1+8LNEqeGezoLRr081SM52ertqhqCt517nVjeTAc9fvgLqgdA32H0gdjP0Sn6cSWOc3/67KyeMkwFnxKQSn6YSg6eRTpiL3aXnVupJNyjXtaTOCPTUPm1A/yd2b6bRvRnfmJ7Q2OG7px9t92ai7rGWcQaYMHl6vzBhevs8vRY5V5vhFBXPOCHA/vTPruB1HbM++G0zQHzrq6/llRChwIyZRTPIB3+PjBCU2KoXCXrSLcBRJC8I0SCvNcdn7hK+EJthrtSmfI0FZZJGeUwLytZpTOl8nLgTGJTrjCDRD+oA1Of638bLAqUvmA44IGCzjESkBFb7xxNYbWHywGZ18R+F3MHM8NpN7qxpg5WZKjZ74y97NwGXnM+MGzbh3/vPMIpwTs9dwfUyJNynd/WvIcBDXD2oRDEeI59lcwXZXANEJJODfbKWXxdOZEmN4lNWJxNdu4nEn5z4/nX0wswOZ3Gajtpghmw4ZGZm2tBRIe5X6uIRKucAGxQ+C6Y9JnFo/ua7SMFkgwtehxH4GJshuOagY5L+PVfhY1MD4cW1stPoSsFd6TJQ6zCYBUWSdleRNCIjRN0DCEL3aKthRahhCLrneuMP+IK32qhDpk3SL0z6rVSJ2WQQ7iWo1VM6uIHe0Z/xGc2R/E4/m16ibgYztzN8e6L4CG5sQ4KmjUVcwIUD1I/vTtZN353oCWKTjsSm1QxJWYKbvDtJmruTxG0dEtqdJGO7k8TvTvzS76OGCbuT5FUVvhYmmbY7SRq7k41hG3L0o11lG6LqbYiy25AqHdmElFnBPglPYpZSO8kntylhA3K6239k8f5j3C0/sjLEsDlp1bsO1dx13N6asutQ03cdasKuQ4ddh3aHiBsalPC9R7bp+L9qanhuTQw3RrTw4gYpvIB9CE0jhJtjOnhIie5kOmhAB3XzqBoTBfwiquiMRPJtmCEFjpq7A+w270s6broOtji4ENHG7/AL6AnIIP5ghqA249kSRXAbDuBOUiv0tR5nTLLdtBcbtFFNpo1NSbhjlCeKgRyFOAvdRh96vJ/V9WXMlMCMEVPveuiOLUDflEkR8dv1NWEvkrkjihvYs47ROOhgAxcfMzYQQmcNEXXLZGCpGTmbCoTx/lZMGO+hd3RlfIYLJI8Qxo0xXQzq3s+SZvUftEzC4aEJMcpFUFRVyYiuIt1uUrtasVBtgGmoB2iEVcZEU9XkU9UkNag90lrRAfutKp9AYPKIwOQjBCYf2YWCsWERK9cmWuhGJPvo2wCVBi5AWfL8XmuykgjS3qtoPZispsXKZh/TrZB/MZNaBcsToFdp6lMmKlJA7mqSlkwnackEkpYHkpYDZ/MjVqSoJk27RwDtXluPu5JexGPxgwUtdM4kHMCKhZbUngg1zcw02aHG4kgKcST1S8/bGyHMfRYOBkkJBIwERTxCYUROoKos/fHXbEwkCeut5dbbZXkinGWQeK1bdYfiUxaao8dPDxqUNDSxVUKqmhdNC+/8ZahdpoR3Zuqvg0Yn7bUeQyVhZUbxgMTgxEV2KqnY03FMd16z+OKeZN7ig8zDUmcgTNq//jI0JKx2pqBNmKxbMY8nIL3+eHFGtYTk7cAC3RMpFYLfvuRDFHR6r1wMVIfuiJaJK7qTP417jI6bAwUZlgo4LkkYwDojBDxVrXOK6HoP/EFmgKDyjgd2lesa+lR2eNr6Fal9TOfmqkWyXse03vmaD6HnGMDj1HG4RitVsOi6o9Xs+1bu++axvoMlh85z5gs487lBl3PQZT4YMksoE0CqMKa66ClcdON40Y2+ZMH4lkw69WBkE0Y2Q4v7qr5x3+WRvMG7n+ZpSMdi5J1Xs4jFJwd2iTd3t2KHUxdLJxNXLVJfkOQ/sAZEJ9re4deSVoGsL8GUfeWMgNJ1wAXcVpGg0YAwYACa82CqoaaWgbHfEUgM7H98s/qZrdNZorRN2YeI/CQTVk0SrZpkBBuSkQN8VjQ0iU8K4qMaxEc5usFhR0bohtcuUq3Amoagraus13oMlRye/OCOQAsWByA/rXHyo0B+0AfNW12Qn2yE/KiuCuTncQMkg5JJj5ZFvSTLhAkEFnGVExWii+CWldrVPeSllxu1zz6uo1pWa4x3Q32TTacvotk+K9QUL+IJ/Wi5fkxrPCYgvHDRZ0zmNnT7lLgrk5YxYTXrKiYt41ZYxtmUZdzClAJ9RFCpZGEZc+QbrMiu4NeUSE7BNM7b2wXx+k+J3f9I0LGobOyxlM+L8t0IUY5+s+0WhD/cRytdZ8pwgpG2z8t/QZYoFNh4YIX3yusQvHVD1YoFQigZsFVX0Oy3+vtoWCxGtvZZgHrhrj9uvMEwCCD5Cr3emirZPEM72AowYaqoRw67pN/nrhs95gIIJqcrU39x514W1sXR0zcZoE2sJ0X/mMJp0DbJTyBPRjKlynupn5esvl6QDR4OZAoflHcBjEd/06CbMqhBdeg6tXQnXjkfF+bPxFi56cpa5hvpT6zaA9ipdsvUh9wCzUe/TIrI+Zf6Q6UMwnfGLosyOiaxyQn2p+sgREvU5V3+55G2O0RvZuKbonujB2upJ75pV42Ge0btH3x4KQAB8nXOBm72EUQtdXAYa3yAGuVYpxj02II56FfpYIGuWpJxMg0URU2GKRPY/fNkWu1Xa2SO8O22y6+M5wjVc810mLDA09bnaePTAe4xSGQbLJzbU4MN2H9tdKdgKEaq8pcYNgjBBYgW5fIHvnRZ3K+pNKypr8Rr6k56fV3KuwpyWjC2lw83mXibnkzaplcpPaNS3qjHdLRiK4CgGHxMe+p2WD1t7IDbfot69JQPZxTQLDg1wONLV7EeXrfUhxaAdqQ7zlpv/33tWett/3m3352i38y2s3YTTw0lQJWydtMmITW12q1t9GVbPZT7g83FlZuaKk/Uh9uRm5o6z8zpBjLe68e6AWQOuoFbRnUD12wCburD6AaS1XQDkbpzf1B3QoDl3TWfwmyHHvoQEu3vvWcM+Lbq/rDfphR06p1Iw8Ot9MAKge18xPedegceqRWS4qeJ6OyoAVZKbjoyukrY1AqEm82vmPqRFJEzgNtGldobVuVs/NT2KzcfaGQMFlU4SQd9adSSci2JSbdhzRERTn1lHPFwQpXhvglAzfoQzDlwhy7a+frpuKaFM6QcpAXN+96m/ogGKzvoQkJvvQ4ytGKnoYKW1U6LnWw8PHBG2fET7ieHBnfTJksm6lmpWmFe3mlxZicpP7gLLHK5OX9n/434dDNrtRqTK7mikLN/2W5QWnA9rpjTF2lhp3i5ddMryg5HZkX4Wo2/566v6HSLj9kAosKdabWdEtlpdIuyFYOrVYPLpLESyYmDDDivrQ0RkOMzrRy4bH87ZK93sgWg0SB4Aape/QmkaI9OZhuTKaZMZvswkxnUx9j1/U2WsKwZMwE5wgT4yKvSY0ddYAJJgwmc1KD26QQKmkYUNB2hoOnbyyxQUJhymswTnaPXxxjhtgnjxP5xqDxpEHtNxF57Yi9H2GIySvo1k36mcKdwP7cA732C/e6ovna8IDPaU3+bF4Ai5qABs8Tqims+8BU++uJbciDKHCyJw90441DHB0BWPz8aQ9hnRtUUsNLoJh+4u8V8YLqxXetRGdvtD8Z2G3hBn1JR7VuIDWxmkJxOQ9spYpXrQ9RRkHJ84DOvMepPVdrBuDjDlWDoAHtRBIsYBT4vXDANa1xTU70+9AeUhyrv2v9zLlsgZ3MnZyaZRHWUbmoXUJYPblE+55zAghdyvSDasY0UshtnZJAtumvUnglwpcWAGvCgwJOmSYrOBFvF1ak9t6sxopQMCfZ6Ysc2+YYp6wEPuMM7xUwqx0/H6BLm04nXq8P6uMNdM21LTxs3tU0KjDRZo47M1cH3NNmDCKrLQIQnVheu//r5OMl5Tc3pHqfgqsnohquj0PoCTK+AJN48e+NjJ/DE+E65j93tyXZo7PSKJm2zY3hbyy4jdsBEfMDZW5V5NAz8bmOT3WUxu9sSuB3IXxOXJVdTZ2RmxyfcqJVSF+szwCvFK8quRYcCBg9dk+DPcrrE3brveeADQsE/YW56zPMKSsxMp2xF0AJiRieVNCMtBzZ/Mb8AyAoCInv+C0BEdwu+sN21Ag6Wyla6fxBAStzuJJhp4S+ezl49nT1Mp3j009lDT3pIaR6v3Bnvi/6SXi9PVTJlT6SYCU7aCSWH3wml9U6IVzKfYh71bkibdjjFfJyPL5kNHax7bY6u2tUZZXQMmzFffESBMmrmWzED5DNRxxYb7NB1HZuh+LyURfz4vDTsifT4een0PZH2eyK96p4o4oX6iHhhHnghn5dO2hNptyfSbk+kx/ZE+rHuiXTxbiX0Dm4P5w1hb4EZrbdKqrEb0KO7gWTqbkCvthugDGrSboDSXk51NwenXHV6dFdgNOd3ktQDHlAtAG3CfqEIHvrkAH84RpZOXewDz5dKkYW+66GatAngGNPSG3GEg55geTbeAFfLfIHJSVSZ9yrAfScihyFFFO0vY4r2LfsKIT++Z3NHa0Sj/ILHV/PBUFTPJSwM+mWL/5nXMEPODLfl0sEtUDEH4zS/ckhJevSdi2KmRpSZD/OycIVtxtJRoQsTrAigiBOvojvwEjNkUqsYVWTp+YL+x6D8tLRonZWi0cLt9iMK2ivGr2IOiWYlEluDX7dmHXRMS9eJIc8gPa/jzaIalDxncdDBdiDDXcDBv0VcV/V84MUAsoztW7NtVBbsl6jjSBFGApaDE3mB9H8fmYGfrJ1F4zAFRkVkX/wRfysXwxxNRsWYPUo3CZ/RbLf1cw6eJ2kEf4CS0v40QJgwgmfMrSWTd4vbA8EjeefV/izMH5ggA68ByH06YurTJgdQ5OmR8fQkmJ4sTE9WT082aXoSnp7ET0/mpicZmZ5kyvRkzbZRWXPjn02YniprTBC3K70WXRRFnJkU1QyZAb2oxllSFigBL/13S5FMstXDJYl17u4QR6tlw6+aMVVsKVwlpBGH0OKzLVhphr/xjoktnTkb38LgzVGsY6dPXT4Ao+8518d3DoPd/0mD7KJBdnZ8TLuFtNBX3PyGoFhXvKsmNvYRf8eBD0PwyR+GUB7sKB1DOaCxJeN9IHVlxNJtWVKoYQyh/11AkJH6hEraA3ZMBNsAV8qq4WO6NEZ14mMf9lj0b9i/1ctPlv83d3T7QCG20IZY0GAI/hs76ZOsUb0xou3++faNQJDXEDiXFjCKV6C0LVomyia6QNakN8L3841crPcQLzEtdAV31v1VzRYQsMVMB1n+75NBE4qv+6Av41YCTYXKDUb9x9jQ5yFZJpiZwQ+HIZjkyXwny9+Q5+PgxA21cPIs+DqTB1efCPXBrO3yy0N9QGEjQn0bQ3VTQ2qLMFGicEdeLBKK4OUrcW2yt6DLrmuOwWDbH9psHEJRdcZW9HJs9Ldv++WxMWgaw1/8XXMM/WgMOCLSjfqSeMpfNKXK731zqVFlK6oy1Nc8ii7+tZBkZXI+EZxKLboF9n9bRK0kxGO96IxLjNyGd9l/P6siqBQXEEAs7T4U7+LrzAbFFykb8ii+lEwCFeckJSVQAfiamRYQGAzC/tmEfCBqAp8DgVMY8NgRZ9F1g9B57gldOtD+fjOb9TmS07gI0TixLG4GwSREYdtp/JxjIUEroNKvpGv1wutMSBHQ/14gFOsGLSpBpfvfDx+22iZoVb7Sbn3dITneX1CldgKBJbQvBkb6isCKuIpiYouuj9Afq1DOJNwBFYpOaL7ZiIxyvoAHnvCIbXab4OqkpJfYpHMsHbhBOsd6htXE/b9BJUwl+Rjdp2yICOWReb/bPE7YthJR/gHqdEFvmXZunEAfT2Hy+AznLJcvxfFd+jEFX6WpMtp/QrgGqxH0xqLqmJ7P5snx0XDB7VFtzppqp0QYYB+w/t77cCTMK+cmwSNi36r+JiIi79bZr/4SZQ8fRePjW/7w8vijbHx83edGPqrZYpCVss5w47fiqkerBeOOO5YcrmMa1Q/Sia2v5+BSf6xEvfE4MMorNseT/OKY7TtSpgZv//oohVcRhQ/UDKukVN5c504UY9OQYAuVtKSUQgZjMsYQdgG0yxXhFYov4DuTe/XJrzZ7ZeJeGe5VxMYUs7EpbPEHd42yAN1kAYGN1aUV8ykC5AvID9f7vsbdL1zNAjU3WAAXDWxANNjAgZoNvEkIWdPALZAEF6mNKnkeL6Nn8EYYUKjp9/GUmWgN534lres4e2K0Pewi2u9L4Tu+LBqFj40KHSnYUmxDd8Y7A12DbNbfKDtbRJ/GG0aD+E6tNto8CYaWwkl9TGzvZSruSGYFy0kvB/Z/iG9xoThDXJgr5EK/0AqKlRMJMYWUsiWJDvfvQx5HqPt/ixeQlWNtVW4OD9COGbYit7eKf28hxMb0pfCzbBn21+gi8+B2Qb5s5OCjn8K7ffjUlwkBxOCrML3Hw530wGqhB5K5IaPFUqb1DnabTrZBSzuY3TrHbpsbzDd07K10wUEtVho4BWOqf2A/KKCA2nY3pLGKpO/4MEEjeBexBSoKBUj6b9qjGbzfIGKK77DspKZx5kt7ihI3srGuF39J/dBn9Viri620LYRrO6DLRi9WpEnNWSui6aRH/FpFogseL6oyiBYQyZVT/PlB776VIattzgz5g7Z0aed3N5vUH31u/q3N560PrnknHoLGOwe28or0RQwzlocAe1YAe21TUBc5IR46xP6PaRK000PZkm7QqIgBkwPGqwz9gdb42N86aexpGHtCsDD5ZACMa4yPCAB5rYeT04cfBwO4RTBFuU4EXWsqXf9C715mOxE6n++pXdf333dZbWmQnqoOiK5uQDgllA4QDgtid1gQSySSYi7CgtgZ0uIFgRV/VaFx7yO1fwB5vRx473xTeHYW4edi50ZHd7zfFaWu4wXc+y8RZexPNw35eJjoX9WiySJn6gImzRgaIIX0OjzZEHDybqEjQBkqekCMwGa/YF+t9gFpiQtI+71Ny+zD5TqByQxOWYO793SFXU7yckW0eV6uOfmH5XMrlu9KJLeNdKdYHSwEqtq0EYeOSJmuulSgT7HlWqZwewEOXZubFAH68GW4XM2cqnB+S74oCqyBnpkxHCXA2CpdSThBQc1soE6LpfDRFTvAvA5Nfjj6wjBoIBrLi0eAdVQPoWOH0FYUHFK6AXS4u+VMPIoc48IQqtmG0/0+j4f63UW/C9M3Pddd+IdYgWMP0x3tNcbXCNPVRufb3p2Ht5LFlix2r6v8J/JmyhQCcnLsYVeC4RLFJgsb1MEkGMMUXL616IZLHMGFwHuTi83K/nRDpyZhzap4cvp/ZTw58XHHk4eOCE/SaXiSNPAkG8eTLOBJgpWXTsGTdCKeeF5dthoYc8J0jDmBrPOr1kSMKTsQPoA1bRg3NbCGh5xyDY8OZwJ0w6OXn9sY55XKjgjQbg++/FBkhdxxR2OIntLB/RtHfwNnaDE5rKSRMWebHqNp9CgCoBgcuzi48KIntIWnoIVpQuLl1y05ITEnIfGdP/GquC85IfEuLyR+baKQ+JOOkhzC1J16n0RKbag7ydD9Py8O/jPuv8am34pMv3/8g6Um0JUze5mtZcHNj+3QZ7L69VznYlHTAd+v4JKCKCb2a88XLp/WL1Y+nE57+czrEBJ260h3v1j5ql5epvUe6jEPIjKH89VtfZxgAssb10nJh56pkc8jX9+lhKr+eVNm7UNfv2wydABm1h/li3YVmvzlsHz4v6UnbeJixAbYDsJrG9huJC7nk5D/kREhf/+IkE+12vJlm/RSZUpQrreY51D/ver7BfFWAFmgNBceLy+gfrZZ4b0dj3T4b8nH9kXUgKt3ZY7U7VUHNKgwCuOE8FnBNBejSXscx4Su5CNTHvZCKUusrGL0NpjS5LZ2Tzi3x9FH+TjifP55iRGmHjEvt0MpA9l+vUVEn8XI51sFiKljix1GRsnAyRsydAI+KU223XRozKYD+Z5HzlNYEKTtELYD7uA8YOwFlVY85DRsBk1hCsyvsg/qeetNsa3EY3uR8jFgFBszpzCcCdEdgiI2hIDQ4YoMX6jEZj/hYD7SbTGg5uD6OHqeq8hXi4Eb6SEOeAFyVKDtddH315dF2jxmDMFyIHKoAjMmQXw6MGeTsDc35cFfRcf47CqYkcJvTlK0qBanblEGghSq9lXHDItxiC28vb23NIUvKIsH23L9jjZxjbAGeCcgbe/QDu0ENB/3sF4XfbZGMRnhIHDWSLLva/OOYh2zeOB8feANSL4Ijn7YrL3wKNtBnzoN7Tkb9UknDXBtGXPxDilacBDFZvJ1pRmBx8c891XzmW/TbiLHXOYcWATeN8jOrdc4Cp5hC9dZtyj79lVfzN7w8WdRMtlWzlt4vpZQcg0ZUXfJIp702lWHDzjILJJAUGXObwgvIiYBPNP9aPc92LkDpIVcj+NXczlk16PTTUjlzg+h4acp40Wfm1ksxfnIwVPwfVpKh+ExQjfxGKi5YPh4j5pBl2kZb7WEC/RFwSLqGJ78tdTMQj0VwiwAfatjQQXIHwvT2nWUvTrOHMPmL+QyxtY8x7NVFWbNYnm8Oc6ss5VTlvUgFkbZJGXWWwPEE3xgsmGQrAtjU3Ok5pSa29Qcaf3qSUhdVz15aE7A71NMB6lmuFyW5knGDBFtYrhSVvUFzhOMAng6+IFciyjAkOVzc/yLSTG6gQjGk4x0T0+2aYaenmKkezImN5XJuX9kJYAKypCiB6dQxgpaZ3p6qtHu6UQj3den2ZIG/M3YTtruPnm4YmSodAN/ehIPYjl8smEyhuZp5kQa5VPtr+3M0zBKmGb5WR/vobI9VKGHhlckCph1OKS3YTwcstwqaOJiuncsFgvYIiFfh0jbTCkDcucWmFSOVK80jwTeuhNG25L86dSJFG4Bi3iBHtc6FMob1xCCIp7lcclRoAaH/jaSx6WXx3uF6RWzddSnu6EGLb4spCQViRHE4+MzUYirKRowYvBn90+R7BCHtcV8xQUC5mGE+5ECQWIpi324ix6qxE7u/j3MCI1grz5J/8u20iY0BKAhQIiWg8fM6CZ5i0KpCXLGvPtUMu74721QiMNz9IO6ChYW+mgHdWh0UHXs03rECCIaegNToSMddxaNG8xjz5bT/niN/f9fOB3gcBwM2aMDw0O5wtz2xy7dIPuTF58lsCDC5NWdZdVd6PKqV2gAVLB5B/BeuLKa17DOBncOr5wEa6oLZZH54JIdJdiVfb4bz+6YvWqHXRRq5X1Cbr+/9WdXT63Vz1yHzuXS58Ud2+mruP5L8QaxPrBqc3EKbYpOQPOBkrfXly56EOzhe1LC9rxrf3o4uS04/wyJHJcscvAQ0ytnadZnTAbzglmiqV4r+XGT7W9M/Cwm3uZA6chBl7TGUWikxU32WbJouZ6F6yBTP8yZfhQ8t5426vMr9vc/jU5s+dnlP/+fzj7mJ5uGk6Z/Pkz/fGHm7SSVapobhdmQd5bMyUDuIyhWazjyj5k3GSvYEDWqcHL/gpnnRJj2dSHgdyAE9Q1LTiFoXxeLpEtA6mI3AeHtGPu31lW01nTJ8bOF55zN3i9n/Y5h1mS+KhaFWAbyFfNcUMV9s5aYiyBgkRZZmWN4XvlKyZytrXshMlUzWI0sV5kCUyFJb8ayOgkqM4HN4t6JX+6zA+EbPGYgF60stRYpaxuszhQD7W9C5LbRvGkIl5v+aMKa0YRelADwRhRFOoqijHIUBXs5AtWv2ZMa3nnqMdw0wUqwEWbkADHQwUIcZqTP9kIwAb3sBhw+/jBR0SXBfggYBV2uN1fe+7D9t4k+Cb4Yk/iLCbjWRWkb+afPn04kWga3HYmxP+vYOY+2P9+z9pJdzrTBZXIeHthFOYQG6ewHILcEyUViMlHM/novBRKpeb0nTCZ5/Q66DjlYucrRRf7AZylsTYW3mqJJOkxE5XofdbEIRge01uo4sY/YQW+lD6se/MEI9CmvhvGR+tVKDX7FSo6D45/fE7hnd/FgZemAuciOk1t2wY5dHD3FxrSrDhAL4JPfjuSsMKRQMRnTaHojA1FvwlJlp4kZMlxOwRcSYCXpTzYy8v0G2/yyCxz0LuxkPIJCRM16PBt60IUJOLVxt/DynhwbBk/+5NF8cPdE1RRDFpnJ7UV9hoGebd0Hnmx0cEciPf4Lj/9hQYg4QfiEYHn7Onr9vhpbMOpIFozmBaObC0bzgtG8YHS9YBIsGG0SLBjNC0a7BVOf+j2ey0UfDpv0+HJR0XJRRke4pXm5YLEYzYeR3rwWGjOLWmwtgGx9kzYsTdhFjdGTUEUfAaqISagixlBFAVV0jSq6RhXVQJVw2YLn/c844KwLfLSEtF9m5XB0P0tOUN/KSH27mqHcgLVkKvbA9dgqjm9oUTiZ/uvRdY54fIkQNKDBCbHlnJriTevWnRO9ac26o/x1jBjOx7dyXiC/Me4FsvhqAGZYfP8TADQelx3Z/5zj+p9mvvbL2CWXeSKdbxrdPHkRtZNMMfgvNwfyyrZ9TFvx6NcMu+BiOMfHIOR2y1PI7/hFbEn/hJa+cNN4S31uydK+qLEIXKOOqANX/C2ijp+ZFW0PxF1JYImxXFFqNkO6hi05/aaXO5hyJogbv/PR10F2zfpvY3YFhnqvIM+KuNqVskaJtpuOyHyTiEyZIVZZhoxxw4PX2lKFD33G+vSEN9CrOhXzXeUo4GqR8oVOttgcZ+4tyMWxBTnbiM+xwZL0ISGFy+LdeYVPzh1/m0NeMHjiOQ8xl9Gda5TVeXNl9bkvRzkx0gUyGTwHmnQfxMQaSWiTkmJfhfjdkrfOCbtKS0zOOMQpDCjtTmlKvgR418MtvuR1jfIeD7HPa0P6a+NyttHstLWRhdx4F4UJto7Xvj3iJ5nn90k3KaaOjwPwhfGdPDI+5R3s8OY6Gox0xy5+MJIHVxga5VYbg9W2hi3+lR5DNY/ADuePv/J6tKsGS8p2mR0FMnDsjV1ZZ3vwRpftkIyz4dJ1yPbRZZft4Eg26z/mjpDtCl/bHXE2OBw7IEPffG0HomxWu25tvkK2N//FTs52i4TPxJBt3alqOWT7uM+2PJLNnKp2hWw3+Gy7omzPEhssHEO2B4YebqFvlO3nLNxEne3LPtshEY/0GRZuIdu9PtvBkWwbLdxCtqv3eLiNZDvJwi1k+7Sv7cBItlNwHFtn+7bPdstIttMRELfO9kGfbTnOhksIu0K29/s53TWSbYuFW8h2m8+2FGcDml5Y5zpUo1srnvm9r0H43bprd/NcBXe5lG1wy8Mt1uicU2f9up/WO+Ks+33WzaFxn/VAnPWAz7qxzrrXZ90Y5bzd5zRh6nxXTZTzDp+zX+d8m8/Zr3PqwU9vIarwtCZ5whd70RV/rCSOnPVL3sGOLfhvuep93W6HG+6rOiq28seTW2Ri6LZYnfiW4gBETk340KCOn37z66ZQR9kkold9c2lKNtHM9oG9U2gtMaMk+E2r9z2/FW9/f5terzouya3ENLsjDVvgA7vEahz/I28Sh2f5N+26vMHye63VOb0OTD1i7GzA8yg4uyZWc+BNwrF2PZ21c77VeDvyrM7c9eFZu4UYeB9X5phf4uKcmaTJ3PU485NUd9tFXz764H7Y4+8jIjG4K4czjINXCX+kz0leIMBM4943SwQJX71apkB7+HpXTheC/c6xl2JLwbQmMGoNsCGDfu4Un/Kf/vPLp/iUzwujXZfufrjFioVKE7e3GVEzGwT53rtPOX8Si9EQfCIGwoJDvKinzdKb9l8WzdLJI7MknYjyRMxSVeC43c/T3Q+1/EgBZCTtzENKf9GSbj/k60DmIB8eNt30l7FCCVQWFoNO/72vJx0MsuvHXLx7dMV7R1d85uiKzx5d8f7RFZ87uuLzR1d8zdEVXzi64sccXfG1R1f82KMrvu7oih93dMWPP6rij610fycpHtYfTeETjqbwk46m8JOPpvBTjqawWa2wP5OC5VXxUidC5IGnks+5F/dYkS4jHoyjpryY8KGXFaPVHD+WUvFOuip/OfDIxGjyA2eOhwvLxByHe9+JWQdHcYk5Fp4vE7MWXuEScwzu/SZmAWE5E7PmNPFz9mf+NLHB/sxZkcPY3779xf33WfuLc8UZnPonfOqfGLrykLBRZQL/Q8z8wPr8uQLvHoxhNyy34/kp/HwAz0/m5/14fhI/34LnE+jZrD/VbqZY5+G2RYOl3FVNfqdKmDFFYsVgB5tasXqhO3HWYMcAHYk0XXv2Z3q4CoF8zXkvvG2sXjRFcHVA2NCDR/gC5fRqWw3d1c2twNsm7hiQTTWz/Rl2DBOzycNvXG7/w2kFxeEL/s0tUwqSUL1LBEdm9SaFdyUX01Xcp8vWcyhMyuAe6+FNWFhSCjIepIScEzhAFkvoJ9Pb/fxm+O0Bynzi4sheBn6RLl6sJ754RmuaOnaWvZjddcaiV5AeWWbxKDLzjuzIa+bML5b+zm8d3jH4dgmhfuhsDIX7u1Gskjanz9fw4yqL21TsVHFjrEDn60FkyD7hcEm73V2C082mYjqNThSyEbE3GxV7G/py8uLCaOOU2AoWVSUpIpdfU+XkL3mAJrxrZZRgFYT38JxgkSUwkhgJKwiVxJUgzyZ13rn56riGf0Pez7GDGSLAqT9Ui7Df5g2eYCmdK+ExUP8S12nKTBbn0PDjBSZMCfe55ZQhmmrU20a72nddpQFxrXyPylmNbAy6/OfzFaWACTLGBEkOQvm+hVW08XUQzH8TRdiBQ/F6IfS4YyqPCuuiIwoc10e4cC3jQnRIoY30C5V5VHCYgDqjU2EMO4RfeaGQ41YtfhuJmia4TtBhL2kbC7W1im+N+Efqx5ju7DSO0Fn1Sb7Mhsd8vDTumA+HSwNdO0U8ZfRmL5MFNp9P8XGwVF8zTmvXtC8MfjIfaI3f1TmF6/dlq5RvtaSGPP26O0G4GhC27gnDnPDwv9znNu78QQb7FswuEnR83jVxCCn2/OGODd9n4e6F1HBL/MA7Nz9HXRC/XuiDqzZi1dyPKc7sFLulUEmaHSPg1VXTJWqORSYMvmAJPnDx0N+W3D/sf5stac8tGh4guJIElVxIVcCs48JGFbte3aziHlZYWF0LD18ZjRHb0ueUGj9bS+rQZlYDcnoR7r0nQDD32t885Bvg5w6NrrMsV9meiuKvKcRny+sPRq+U7dDzk+C7QrYEWjHtkCs36Z6VG4cwUtnc5Y8mM9nQ5CtDk+25kT+AVjRNHjcXND0N32XS30oRgxPgylfvLjX78uny9QSa0JeUIpiydI0mujc0CYz7+BHgwP1dvtZLL3iyufmJyZ73SOcdeHbKwt3E/2OlVGzQM87CzDQWJmrcRgN/8N7I8iRC5drnflKjxmjUMTApLKn9w9XjEbF6d/VsXCfrSVePuIVM4CYvgALWKsvHA0NCMf4lnDnU9DniHOMNxF7YsOIDJVejAMKOmOXdENx3wkI9IEiMmTI7cmx2JM3OgfdFsyOj243UrPVpxc8k8ZweJmoiYR91P2paRHTRK5afpN2vbBxbCRuBdPdpme+Qlx426jzHnOcZPCCw7MNwwxVV3n6l6DowrMx4DeXeQjEfuZENLKB0imNfEaBjctqgXqdwjKQ2kBlXvBOTUGgNbXKqtFIUKMXYn4Ruz5YZFuDGssPClaKKOiRgDR+ThjM2DUFT8Eiq2DEpfMSrgClwFoD+sPzWiI3xKIfAfWcdOnr+uHVccMfFEXd8gqB8/R+MCEfKy766Kfu2oyXTLh4W08SXEAwkzDkT1Y1DH7fxcYs+CwAbvXWMvCRuhJAjHvxsLCME6R4vKUYY0wzIUatQjD+TzmrziGkG31V53Xun3IgOcbSmknPNlCTZP1z9UjfvDlbPxnWWCU/L+E3w8VCR4Cog54rhPeVS1uv/cvxSFo+TKSNjK4Hbw7j4LBuF1ZCQDfyRDn8k9+HojcIC9qitU0ej3WgeujsajQ6jAapMGsvfgB6rR0WP08PR48zSY09pQWdLzRhT5kyekyk0Nt0G638iUMq4UN8IKcsx5FMmUHmgsSrQ2JQo1bDqToB1N4J1dwTW3UlSQB4tU++tV0INFXZNO/lUX4YghSB13jcbQ9dTtbFb4Y9y0Dxapso01qMfKA9ScExsccQdH6HKiqnvKNapKaQ4nKjvJZXMXSzMjJqTBwvEx+wVIpK8UJ03sBb9z8CLPqZ2sqj0/fdMFJVI4mFX0kbWHtPIGAkoHFtQB3f1PFD/KuNXFb/q+DWJX9P4NYtf8/i1Hb924tcifu3Gr734dSZ+nXWvfT+TH8TrAL7/6uD3PyY7BaioxQjE2Kek6P8QhY73lQhfiU+QowlqNEGPJiSjCeloQjaakI8mtEcTOqMJxWhCdzShN5owM5owGyVwTPzpMOweMQy5kgDD0QQ1mqBHE5LRhHQ0IRtNyEcT2qMJndGEYjShO5rQG02YGU2YdQlBBbxhVFEi+IIJHOd61/LFX+lEwpabIoSCk5xSSmYoHBrY78Lr+1tMgQ2eMuaHOfhhm+8T0kXPPISSguOGPN5vdCjdtE0HLjicR4goC0h6s+P2PWvKUraAbW5b1TEd8hHRNgk1UnUo/qKxPwm7k1J00zEjGm7kChiiXB4XsdmXlCmYoBuNwRWuUkvSUKCwxUuFNJzS+NYSbq2jmEe2n9sLEC8l2F/CxbkhFEazHRKwnastNInx4A+DGRktj/UwY5QYYxghdC+pKa4fLh/BUFerW1Ddaaj9+iMBICuET2H92EaLZO/MtLiUNxx80LCVVEpOTAyKlROxru+JFMKohDbSQflX1dqrwXkNtveyi5Bdv4MlRRxMOP+lovY3vYWb2RBL+1Chh4Bz5NtJvdgHi9s6cvUlYUvkz0VXnpOwEWDPuWMNSG5g85E28MC0BkYi/pGjcoXbv2kj5h8nhShHEyP+wbFSEgRy1uedz+b1t9jay6wpY2VEcpU7/LLTvc+W2fzII498c7DHlb5wMJwkd6RB7kgLEuhsqewiPqCFYBf5aA/TaYtz5x5N9a5y74pIoL1JLQU4fifAET684DRGMSgP4kudWikHTcXxECNo4nSNj5FGRoBEIoKq1kOns8XhZv6rX5w884ct9O0vPIZCN0xuqVjRaccyhGSHpjVb+yNjCG2ucNWOQ+UpC5GJFnmXPXLFtP6AY7g4uxxlt0zqWSizELgwJ8DDo6PzIGAUP4TNdrfmRD1WJ9M1RuVLzFjgz9buLTnSmGczpfSBeSW2HEHzlUbuClkrlpqUtiN90wbrIX31nC3I4Qzn6YRg1syd7U5Zu6ZjZnnXQoquNSaD02HapSyssFueBav/L9fCFxD74sGIWRXcM4XhglBuH7p4WK0bQfp1ozeI7eX0oa12vtSmD/7habc2M+A/r3a6ELMwHIuSwITb1rCwXC5Ao7LoFhCH4DkWRAsEZA3KhEvxmkUzligOncGn5D42Xms8Nt6li4iMZ8s8orQLR/7aqSdn60ZUJ021K0STXZtsIsIxbnJe380RHIjRVPJGp8IuduKx83vCeRQ+SN8uBj+mU0PcemTYuanijT9nRLZ3PUctbSLnyrkd+E48+pps74sANhdHMIAvutMVg4BbsHYNtmSVffA/eeriAM6HL9mZ4lJUTdTIBXNDcRRDlxDrraJKHrCV3EwhTBff+e8tzMJRTItC1ZSaB8dYTgJBiwmqDte8axWlRn6wBT5R9j2xrUTb3bRGmnsw6kMR0hwcC6iIcVmk+Y7WfC9PTkaaaYgTvpgaeXY65Fn6r4I8ZhryiG5WTASEJaKMT+5aOEsJgA3wCgCt8QrzGRoBlsHSpXQGLqTbCIXjTxYBbMMI7P+vLAk/k3CFcTIgIACWejQTfPO8BdOh1M5smY7A7l8w7G4h43wccPB/O8qMJZDsMjs8p6M9aHESKghGQ8bSymN2apFST0RKBBdLGEIuRJ92SMkyFWhbIG2O5cdImYblMaYU/ufs3j8gYCURo4xBFnskZrDeDdy8T5AqmeIo2txNR4E1+tmclWruDNzUnID+8Yyk7F8vUyjB7hLiAqogNRfGxdwRwwvqKA1/YcD5xuGvHm3DH5ymJglLOK4nOPRyZihM0ZTtHA/4UYKp5Ur9htA7YGcUQmRUIQ6Qtl+SYIFjV5i3ajMSLZgEPeSAVd7WHnGVE2DKWFgtbvVENq0wtu1X2LapXYR2Zr8VaF/xqb7u/+7VdLTAEcUaASvW1aCsJ8Ik68Mzn+evZwhh+myrtrmXST5ZCGzrCNTZHGpNIcRcMIBbuoFcyoejoQ0FDw57qk8nibiUra14477BQbdUtZB1rh1VLGtlUb9WizzrZaTESkhECeP/kfQwo1tCKl24oNWVBq2kEzXFYQIwdWXOk5vQTvL6qmNyY//OXz/hmGu1mgKioK7DV2W/yfN7ups8tkrPm1rpeT3V1XV45gSxmQ/TQljI+Ria59Tict0Qb4NMblO6cvzIj5XLf/ZwfOMlHGlgwLZ2F1B2g8lL6Ui6mcQdwyzaSWx54zNJw9q3B6jNCMfsYQPJt5wF36Yk2r78zEqR9w0O9/ETKAoN1NPRxg4KBsV842O7H7ImOafEr0D5L0ulSFeFbk8aktd6lXJUZtz4Un8Mdcp/JN4TjLRWjXPKe7gQ5jLMZhYetWJgJoaCT2qjMaUKD0MyiFlZrug5t89GLldIW65Nc15GdLlMRnQntKDrRmp6xEGVkrOI9rBigWGcwHMJ8Qpwk9RkZRZoOQrhO1VaKwDLcH6z69vkJOoTrdhL1IVM0B5Xtw6hS6b2DFsfv61txL+538e/ObE4GNwzjAqBR2c/N9kqb6OzXSsmXTvTg998Y9PsxS2ZYMzioUc1ox6SOlFtUWtS1YhRFCZ9y7pnbvk3Py2PO+CMvywuuGjGt9N9rVvqm3atOoiOvhg7CDEhQtoS8U9YY+60HQxF2DrvGhmJQLp4S5pxCGFpJzxhocaWZI3wOYGx8MEnMZgUYyN9b9YIJpGNm5jwhKe0n55iZRLijxvlzNy2EkNiYnYOfjx8Ng9tLkLU1tw1NOA93uAOcBz79jP8Vm1r6Ob8F5NQij/r7LtDLtJNe3dZoNG9gg9VX+KN67pys7uj58MTsNJB2id4Kh6arsmHy0ReqplhNYtVNmO6+JKbYrg8NL2weGdWhsulYkO02vPzLPuD5pHuFbz+X8KRW3GXskUBEvsGXSXlQ8bKh4EoNfMU06eQnywa2zJ74XGB0Yz8SFZrONbIvG10rkzDkFrc754dycyQOr1s6A4iTPjyZR4N3NV18V1hPCbHGGZGx8CqNa/zXsOBR4J354jq5k0Nv58SngjumKzDhwDMjBY5dBdxq6g4Lm5ynm34lmScKGfcWMer5CHlw5XptccRuQ7VFOlTsrhBSSyXhjHpgRaMS6N1vZX4JNAX09DY8F4YhT8ISliO8TCw56iXWCUk0c2GYvHA5vP5+9KBFnLYi7GcBZUdWdzFS4jg+oC5sPWdFJn2Eo68eM0YYRlcC2tfpkpX8mNihFMb9z/9hxSHDkXvh9l67b5ZUaUvIoxrcbaKlbMmhYv7y9BH6JX5Pw60PpJVmzTOEHZ7OSt4RYiq9NNEg10oKyYTLWmA+GWlisbhTiMSf8YQRXWYeOkgD2DNQ/iToEr/+DKMagXREaJdqOxC2z2CApk45Pjbuh6nQtZxd/uVVW5xooYpesgwrDoOBAXAassEB90s7QTiObmv3dDXrhNaT4EuCd5Si/79ODccsnvpSlqqQ9WFgZxnKwmQ89KlrGWXZSMj5l9/6N8G1wdU5egRg/D5bUMroa4Dy/VzbmOgUFFyJ8aCjoeDAhxASKLRnzhl9J0w+o4b/ens4Voa5UevGapV7qFw7ujJSIACRknXLupBLEMNG8YUvjgYrFCNkM55JBSHx9lip0Rt77Gm4+19Q9iTE9uTQUKCxBW4h6Ry5wyNJNSyvIVqxAsXBd5Z5P+UFuLSuhib80WDIRvSLc/8Fyf84NsnH080p34p1chej7QoMynt9JK0CL1Re4ycuHZrkevEzcP+F8mpbv/QEn5cuLEPbhrONiva8u9mnvne37/vm5uiwDd2sHvYHW4pGjBoNFRLe8uuhvs22cablagVo1wltrbZwra1/zN7/9k16x+0rnUV9wqRgm21w1AvpaPAlp+/eu3XvvgTW23tfXrZeeg9799+ccPNV3/y40Ms5+Ww8qmN5901/8KflrYNx43EtG6zRNPejG4jb+ima/njQ181tzxS2ceGoYtGxXm5svHujSZMmcXizVmmnHEAy96BasompQKuTqajLDNmkBVzk5Ho2MYvlBERje2MrNzO28sirFxyuJ0hXY/Ll21KxxH6tip3wmU7PsjJsTVvuzP2nONgdR2LahvtxCn2CZ6TMwZmGUlgGUzgkyMk8FADFDjLQZQUIvDFKytNBN60HR3rOTq2IboJYKZAYyZAY6ZJxXHI06upuNF89FT1iJIlnp4nET1Pxuh50qDniUmm03Oq0iRT6XmyYpIGPU+a9BxFEWnM/rYmwOEZ8Y2II4fD6WNwkDhy0wwCT8yTiP4lMTFPGsQ8KaIBjRHzhIi59sPojlHyIlByVJaNk/HEk/HkMGTcub/me4C5k2r2uKtno1LnhbHUeQ5LnS+BBCmhnY1Ez0uiKFNqgui55G5cqQliJ76S3CmRZ/IhyqTIXEsc1gfvLcP0Y4LgicpJ8rx2XPK8IUie10yTPC+FRMuSpw9xwbU+oaJnCJCDSfp6Gome54yJnjccgej5gqMQPUGPgJW0iWRpXiwyGKbKnpcEqLLs+VAse176xMue5z7+sue5j132PHey7HnpEy17XvC4y54XTJA9LxiTPS8s3H6UutJssGXy5vn0lukZCN1xv8pukFuEgkTgKrlSpeEi8fpFPoFyAWWTSNg1En1sksQLqVagtV1bf5/lkUxi/8KCkgGHj1YqecF/O6nkocNKJedMl0pWXfvTxJJLYnZ86RMvlpz7+Isl5z52seTcyWLJpU+oWHLB4y6WXDAqlkSLvIgXuR5bwzpa5NMzTFvkyUrVmbrIZ4McBPctpjN5hU8Uem6qFW0tr1BDm4M7glRzT3g8FB4fcI+rqtquFKvo2pDl0SvbUGpE27ZzotBzpRN6rhsXepaD0LNrmtCzxLfwI30bV/tfUeG2lKUIY86UmdfOJRWCjpYKw3j8tG1s2Uv47cIMEfrQhgzVXGp7xaNHVF2wvoawo15ZSazsGpq5ccCr/MrvAKAoxnHMamKYRcRwwjXP6dJOZjqeCDCfzyyus2ltRAKzMRKYNUhghrepJDCj5TOVBGYr7iOTwKxJAlG04A1LD2wppoQ54FGTwiIihTMjUJiJjQiapLBtCpMHqYegW0mCRgFm1TPZsoNxERHFIiaKRYMoFhFRLMaIIiouTBYiZJc9f28NJIubi0+LTEacmCin2jesshB2LDyev37POKKO73p67C/Cgl4OJP7scZPcxxtGWOsXJMEiRu6+PaDNsSCUMYEksxzw6EAqzyUEOhfoQS0sW9pvV+AH8ix1K1DSKZ4PFArJJkQKlWQbEtZkGhaDuzEu61Wa16u0/aj0NUbjFnXX70/kyM1z+OraRp81fTZdm91JSTqWktQ2wsm2jXDviNwsxGdam30iMjBPrL2eTCcG06QfEAMz63Cd96l+xeeriD+xqUBjxScgHx7Xs1r8YWzP/drPo7Wfj639vLH2c7xNXfuo0uRT136+4j7y2s+baz8Pa38OlBI4F8MjrP1OtPbnR+AxPxEepzM8OgEeaRCDOlj4c2TvwldXo4XfiRd+p7HwO9HC74wtfFRcmDwsfL7bUi/8zoSFP2M6Q9NehqBUdcKq70SrfhwJxswHclqTK3bWpdG05pN6zdtpJFF2u0nqNY/FwH8WJddsqxIs9p5RZg3+nr9+kUy7ZdNLlScRaAhUIqYNOdOGvKYNzl9104ypa2xL3R5ZgVw9Kw56nyclPHiXmkP52o56X9Cmxb76BPvqk+SrDz6AKPIuuez7/yg7C/ColS4Md4oVttBF7o/T7+Du7kG6xd3dIVskZbe4w3/d3d3d3d3d3d3d73dyst3r8jyBnR05MjMneXPSNtwkwktUeFH1XjrzkHM2SNXwBkiqsQ+vqq09+80qZhOaW/d85OtP7VfXb62lBr2uEf/xBONFUmLPXFi/OOL81VKpaf1qoSZqRf1qs1/tnrmNrF8d8Acc4rKX9fuf/nB81K+u/bnBetoCCT+6S30vN3ypbYMyaYh60ggNpTEaofE4aeI5KdTXtwaC6CkIlM857yI2uKmJakYZzfVlrilpoa9zTUpLiLRCS2mNVmg9TtpQVFu0QdtA2qGdCakn7U1IBxPSkUI6oSM6paQzOqBzUrqgvXRFF+mGrug2TrpTSA90R49AeqJnxpJeJqs3eqF3qfTxKkhf9EHfQPqhn55DON/96Xd//nIT96iNGUBVAzEAA8tkENsG2dxRymA2eBgMr0yGsGEIJ4sbLpzWoTZ0mH40l+FmcxFNSqAIiTIpxnAU+zKCNSMxAiNTMgrDMMqX0ZQ5BqMxJiVjMRRjfRmHcbpBxtsKTcB4TIhWaCKVTuT7gkzlJFM52VROMZVTqWAapmJamUzHFEz3ZQZrZmIGZqZkFiZjli+zWTMHszHHl7nUPg9zMS8l8zEJ831ZgAWqfaFpX4SFWBRpX0zti/UFKGyJyxJbnaVYIsuwVJZjGZaPkxUU7WMF/ECS4ZZI2kLUkRLrv9JGr8JKrErKapTIGqyWAGsQjJNSjl6LUqwNJIWUjewtaRtSZnLWoQzrfFmPNNb7sgEbOuTkyEavnmzCRmxKyWZsxqa0bMGWaHm30uytury54fJ2lm0mdrszuTscWNzhfNnpsA07nb32S3axHbtc+NczNbJ2O7qz25lV7WWPsz3xf2fzv7ezBdjH0Yl9HfZx2NeVyX4ObNmP0vfXhgMc9nc4wKXkQAcOPZANBzkuwsEOBzkczIZDHCibtCGHOhzqdDEOc7YahzuweLiLFuQItfAIWphnJh0ZmXRUZNLRkUnHqOZjHY5xOJYmHefAluOo4HhtOMHheIcTqPlEBw49kQ0nacPJDic5nMyvp6iFpzqc4nAq+53mQFWnseF0h9NDC8+ILDzTgcUzMxaepRaeRQsranNFOdvZLjjH4Wwn5zqc4+Q8BxbOc+PkfNV6gcP5Dhe4QC504Q66MJryPLkoGn2xM2mXOLB4iUvKpQ4XObnM4VInlzuwcDnlXaHyrnS4wuFKyrvK4SqX2VRXRzKucSb7WgcWr6VP1zmw8TqWrne43un2usFxf93ocIPDjfT/JoebtJSWmx1udtE+u0V9vcXpTqsQMyW3Rkpuc2DxNoq8XTvd7rLbEXKHWnmnwx1O7nK408ndDizc7YrkHm261+Eeh3vpwH26A+9z9hsH96uk+38lKV8ecKx/0OEBJw85POjkYQcWHnbF8ohKetThEYdHKekxm9rHVJZZ8bh2eMLhcYcnXJk8qdKfpHREZ0XIU9rjaYenHJ5mj2eiTfasA49n6NtzOuY5F125IM/rgBccnnd4gQNedFb9kgOPF7lqL+uAl1WJvSWUzf3lFc2ayKva9CqFvubwmouusK+4gtjdzjXIXIdzvbgyu/KvgmsOQ5UflEeQ0TW1lJT9VRGdn8pcxfBH2sokz2qqenn6on9UKxPyyU8VJB+87gchTlcvlRrWq4C94ihAPCU1STE/VLHLayC1CUS1S6WOdduL4sPraUrqog7qlko91JP6nEBrb4AGUj+G+tIQDQtiPzvX5M8dMW9/65Cn2QAGESPJfKvMGvqi2VlDiIRU43THSJGxILxtyI/8VnaorjFaw74VoED3ZNyMqkkX4qgZ/yGM11rUUYs61GL2qR296HYv1DHPElKXSuqhLuoFUj+c3vpUY73Vv4bl3jZCI2kYU1ygc00ot4lPXCiMnGtcEDuxltuVm52BS3L/YgrOybU5OCM3OwknaJmQrFh1DNtbs1XBSoOVc8V1/dlJ+EPqgcS0nI+qtq5MYyakBp0ooOMFgcTpQpwBdeD+e2hGzegHWWuBK+xzfWvHv9pHK7jEqGM2ZGaDi/w/1E1IPQrTl/7XD6RBOCMNbEbYWVdaTWrk1TNqSnEmmqBxWgo5CIAICquHM0Y3pamXL80ISM1KpLl3iv5yg7SIDGqJlmjhk5laoblPbGod2dWGdrUxu5SgiE9tyU3t0D4hHaiiI0mpYyCdaFWnrFWd0Vmt6kKryE/omiJCEaLSEUL1EEF3PacdfbjOSc/IhF5EqJ4+Sap3pLsPdfcx3QpVJKq+ZKl+6J8gQTkjqEAGUfegrO7BGKy6PeoeAg9DUiSnoRiSlmEcMhzDRTBMdX93s+ouinQnQIzypZgai0ONTkZghEgMonfAMpINIxkmiv+6x0d5dWU0RilYkarGYOwIGcdu4zluAsZhQkCUGi+TaNrErGmTbewUQtIUX6Ziqho6jYZOxzRMT8kMQtT0tMykoFmYRfyamR0728ZmqApzdew8jp2PeZifUqrC/LQs9DopUhGlFhGgFmNJggC1VCbFMEmWec4oKpAVNGxFefj6bEjCR9KXEvpZQj8ZZbFI80qsVF2rqGs1VmF1ikBFpEpL4HWUUgQKVJLCWqSKJE1JZUijLJB14VZdV+7AetO1AeuxwZeN2KhCN1EoaQqbU8pT2JwmTG0dnl2ebbY8ilI8tvnKUhWJUrpEkX0KVTudCtvlKG23I1KRolLKT3u0lCZBebfnkJ/IQ7IPcSmLT0XEJ5q8PwFKuSkgPqnZ5KfszJOjDqR8pxiVQ4zSaD8khKlDOOBQ/a78dLCiU6AEdagSVEKOUMlH6n9kniOUfAI5WsFGjlE+Ui9NA8nJ3CU4Rf6Sl3goQZ2gSIUTMsx4oso7SblJpZyYNZMw5e14fTe7nBIJUZ4KkcpXnjpZeSoScro6coaSleGUUhQLZ7kE+cnbZvBEclqrAHWuaorhGOUo6j5fSYoAFShHVSRGRReMilmaMpv0fHMRq8hN5TZerDylU3mJLhWZ6hIFqpRyVYhWabIVN9UVSlfGVcpULFzFlbpa1V+j7ESQCpSnrg1J5Yrjb6JP12W8VqYyurpBDbyBBl6QS4KhyzdqxY1WwS12xxf3sP9N0UBDLXKXr6B1Swidt+qAWznglOjOvzVLhC3Kul1xi2iF242tFKwS5Csvi1cB8Qr36EKb+wQtk0DO8vLIV0QtApZPrAKbHsgsz4M6aw/arGnvh9SKh8xsgp9VPqzYpbTziLY+EtqojKPNJ+TKo2rjY8piBC88liWvhDypNpKxnlTSCuRp1fY0tXnN5RnlrPg1Oh2KXRUJXnYpJHqxTODCc1niSsiLKkpZS4krUNx6+VdL8ko0s8paPF7JwJbO7OsuMvQNBx6vU09O2FRR3sw0veXA481oh2nN2zpv7zi87fAOpb2bmdj3nJ1c3ndgHb+97zK/RmgDP4g6fOjA4occ+5EDD5XysU7VJw4fO3zi+ubkRPvi09DoT9nhM4fPQqM/z1j2hQOPzxUso5ovtQ++VDcyS/CVyv3a4Ssn3zh87eRbBxa+5bx9p/P2vcN3Dt+7QH7QJfjBlYfNjw4/uvJp/CkzjT878PiJFm1XYtmeq2uT0bZDq3aw6oKwih+yM2SeXdqwK9eX3bnYnRtxz87cgtjxtaoXbnNbK0T/xv2qvNtlsemTnL/ApuVGTYtV23Kp5FXWNFQGGfk8nYzkjH2D6IFFzG4sFDn5vK/ESI5jq3Ms805KTIbBRcRgV87AHFk7Oqcsljr/wEdGRx6kIbU09JUSCYifhKzTxCZSKVFhEUAbJlQFjSF8QEmKbMpiU5+IBP1ojuba3gLN0ELb86Ql21sqJIEfCkna3obI1IbtZl9bqm3LfA7NbMdiO/0T3NGpY7a0p6Md0F6pyVJNxdKZxndBZ3QJiEpdo3NFI+nm9ZPuZKbu8ZPDc0IPyuqhqTO21pOe1om4hF5J6U0W6YPeGURCv9HSn1IHoD8GBDKQUzLQpmQQhQzylZDEMwlDTN5Q+zaMoDQsKcMVmzA8iiDrUWQ9wlxTUoopbASFjfAJRiNlFEahWBNNOZZoYhDZqLEYqxdmI6Ofs2ik5UkYj0kBmWgiJidkCg2eiimYGsg0GjwtWm+iERtIRZjhy0xqnMmpjcVsNmd5UCzCbJ9YNIdMNAtz4z+HtxnzWD2vZ+58+xWp+bymkY5kIRZYvqlIFnvO+CiQpdQX/aWYZRy2THdmpZiNXK63iitYu8IXH74kTXOJp1hUgpUpWYUkVvkko9VYzuC39jWes4yTL6UcXMpNoOdmFbaW39f6mn0iLF1y2u00tizaluvA1FOYeOJrMQyUeuXqttzI4kZfNiHND80/afsWYtMWbc+TrWzf6ss2pPlhrKQ9yErbyErsE/Me0XMaUSlSRUTisdP5yksVsZtxrIG1R7/s0YwUv/yfX0hMv97AZCiv8q8RivgEFvZzxb/NPgVGTdF2nv3HDFTk+qGRQQpQPA51vgIUD81OHaHYpOfdI9WSI7O33UdpF204mlRlOJVNPxXJcWqJ4pNCVECC4gKfkKGS/HKEOlEpypeTVfjJ6nPMpJ/i6HwITnKaEhRxCSyc7hJyhg7NZKACOcuI5yyXIWnFp7xyfPINn8hNShvfnqqEd37ksNJTmIjyyU24UDvFCFZykVpzEa2Jq8C4EVP8hHDIJdp2SeZyWEf5SfuQngzALleEstRUFLvW7wprL09U+YQqnl7IUVcpTUXRqpkqz/02TaXD/wyo6tiq3qgDNFFl2HSzNt/sos1ug29RnrxVeQq3sstt2uU2lZBBKNyeMSBfE1WV/32iKpOqskm4X1GKJJXvMpv9wWiqlZ/CbJVv0MROMcJWFpwyF6LF/5GalJsyBiwnO5kMzVUpLEVnoudYTWgqPxc9zwkxgiI94YUsPhXJy6riFWUoslJAaqKCV6Nk3Gsq5jU1NkLA+YZQVPyGxtabilFkpRSpKYqttyP/FZiUmQyYeLzFEhmJR4hd5Zfh9ylISel9haQUWSkS9FFGEAmJx0fOV1zioRz1qTKSxuJnauFn6mhk3+c6mSEmyZfKSwQisPCVS5CKPIMiJaJAvrXJ/FZ9tbEEpLxyQPIJSMQjYlEUR38JRduVnWKEpywOhQJ55uN3Ug/nL7SuhFikZLNbq3cTjvbkYk8GjnYRjh6voi/S2bo1y0Gdf5cJbG3401zFtY7SRoqDwr/pYklAZYZ6ksdini9VUdVq4lKNNdV8iSFmNXmSz5p8X9NoYY2KbE4iqqEXzwLOYlwvmDVRgJqB1NJybcRRO5A6qIU6CeYFnWXPAqkbzmTdcM8QFvQlX+05ayaxPurrzVcDtjVUKY3QAI0CaazlJmiIJoEUknAKEwJKFAASSFPKa1o9J3MNaE06aqZ2NadvLdAcLVKWO0pLK9NCLNL2NmwPH7mlCELMGqWlPVpl6Acdi6QTdXRGJ3QOCEBdeKkw8V09Zw/cfOlOB7pzpvV0Yo099APknx7omZRebO9lDppxzTV5pMr7UHn4GC5FIiITpUlEOSSiASEO9ec+s+6DMEi7D+YM2HO3QIZ4hcJ8EYYGmYwRhqWkyPonkND+xdp/BIoxIpCRXiUC0EiMKpPRXP0xjKGxhKCxKRmHMRjny3iM1x04ARNQVKppIX3CpuszCROJP5MsH5TQfJAMjGEgM0LOMkKBzKC1M8qtncmGWZiJWb5xD3ef5mmihVEIUuPm0vfyJ27MDqVlAZUtxEJZRGkLTBq7L8Zi7b6EvuhDNiwNmCGqZBmiMoUe8elLEiuQTEkJfJT4mgtSX1aZBEKPSlhDCYY7gZRy9jIP2GhtGmmkUlKGVWFKiHasxzpFGzLNBmxMkGk2yaIYFslm9mYCCFsC2Uozt5abuY0Nmvsh1Pwq/dNaHbcOO51tCgUaxZpklmnah13aWyqoIHZglQpNGdTT/zyoLfr/Prh1FSqjsnpdhc7kqeeMa1QNpJqWY8gLs+OohvyEVPecPU8PpCB6gF1QvphxxDUYa1JMFNI1w5DW8l6M670CxnSd32fEUb+6i/xuYHL+OgPM6C6Mbh+gfWEhnZSm9Kdp5sQgzYbk2MNzO1+Ftzu+xrTVxKUVa1r5GtdWkydtWNPGZ3i3DWui4NM4V1PaUwrjHB1SDHUGe5qhnqM5YekSpYmtO+93tHs3emz3OoH08AotuAPp5TmNZvRKSR/r3xd9tX8/9rc0cMA0cKXsg/SK0ePzQfBSMoTRPMTX3K9u2GEYhj6lDOahGG7BV4ThejcjxUigOBEme7vE0IXh7CycAxlNa0dnrGVgO8302vPzihj32+DTKFfjJtD3iYz0iSmGNwM8LZOpbAqmyFRKm1y+q6dhmnafTl/s9iZgdFey6C7T6JY59GUuZmNuitE8B/N8jWb1ZYFJYECrhEUqgdleLA4YyoXZSNZcL2M5xUhegBWB+LQjCc3wJu3eJcGU7jZL6a7VlK5MjWGqBJ7TpC5KmdelxWvLLbZwTiHtSxn9L/tNDK7TD2hwY31SNrB9Qzb6NjLMNrFqU3jvEoXZxoLYOvcLdV8CncWVnamq+pf6VRL6hUAChM2t8kZ3G6y2aQzGavQLhAFvdLdl3OzIQg2SbBYvvcQOcq8kvXEmG+043T+SO+E4vTATz4iTdk4rJ+4JPSEZ5nQWMsfnhOxkhmSYTC9kjrPc791XVe+vv0oSNtng/Hqvbr1733333bfUW+5tjA+8lDPOuzRxIBvQZMsuL/bZZEu1iCCHVsj/sEtVIDRGt/xxpfSNTFQddRnGGRdNtLHFW2HZ3Klo79CWTCiGA7s89gvaZtbFH5xlSMUiDcOiTg4W1Dn8oHKehvNyqAsG8ZMyff0CUrLZB64UMUMZvfm4vLH4jZxlbrinAYE1bHrg8Zok9UvMO2fDPNaZoA+Z1iwLc0puNgTVQOD4EwpoM/c5XSLTCrz9Niif+MT0lOeiAOJmfQGcjMMSthUdgNRvFgdc3GOY2gIMcSCLeR4nJohWUkFQQmyxJoYENyUSgIJOsxhEkaZLpymzjW0WeOVPGu6TlEBKIxoYRDNofteycZLTsHIo6XCu1I4vOs/Wrs3NICRODhpMoz5k0qq335NKC8e5rNgrhK7Fz/6uaf21/L8QQtcsb5NlWEaDIdn4cCu6M5Jzl4FAlhKOjhtCoVgoYoH0szZMuzXAGN/pZ3RF4+ENVDCc1z6y1P5dS4ndZqjHSaulYX0xCO7GbH1QHq1Jm7JrIGZLm5yXk7JuAHs/P/V5NCOYWFH3kyJ/pY62Scf8RFxwlHlAKyQb8d/lQqLZdctxw1O/noO1OIR4fFmCr/16LnDgjnZ0OMiB39eep1ys0FP8VNHefRxGryD4x+KmzpXArBz1/Aat1Us570iBFxi6tkxJPzoRfEGlspE8LfUtZmqdCElIocKQFFKtMnMFGQ69IL6J+u2jcl/DfO4B4pBlx+SXNXQrXsS9G4CnrUDZb3bQ01qQsOqe/hi6BA5uxlFfxFgffAs4ASfNBcwDOjUn1JO/FRsgMJUndzZMybDmlP/jSaY4qW0+S+tCIS4XWr8sBpzsEOw7ITbMOf8WDsca+JwZLPEYpqb2NTfM0sCoSpYXZWcv/Y1i9FCezpTkCXaC0UcIm67Sw7DbnPj6C2aDu4ywxTMbt9GyCwl2Cq/4xZidojKmc1hOfVN0N4OBLfcr/2HOfdp2J5hoMJj4za+kMUENqa+lU1iEZnPlBw3cEHFLV9lnhOEfe7nVRXnuOcFM7rBf4sDFHFeJGEmDIieOTGw2ohxFPr8c294WJkvqReWYrewfOwMCLcQ24wIPCZY13CtvXHZxmLMRA5zfiMJBN/Dwh3jApLWIJLYi7uc0uxuYBPMbjr61+WRTQ5mkFTAb3fA7A5UOBZITgRTJhkJLM0ivdOllc57pDvlFwMLHBv34fQsOXv9520KyHczqjrjwlGgFdk0rsONWYGjeP34tVfPA2c+cFBnHMvmFWpnIY0U53VGFC+Kj1XJWH7aswH3YIMC7dlcQ9ZbXRmHfLCgAMyRzso7C4NumMJRKYf21ygGKK0RkaL5WIvsyiVybNN4+kaEsIhQbSJz60ZTMzGvsI37PsR3ORry8i0xXiBOwekcWh+T9qtr3ObxP2gzD/Orp2MBkXt9fTDh1wQCp/rhPn9HOfnERJLLzN+qLRzC4lvXCyxixR1G40MgnXGjkf1naJTd3sQsjF3NACP8jzwjomrQ7BNNXMAAXEgbFmBzZphcEmentwW36/an8JT2H1vvXdMJCUsOw2DMcjezf3qQ8QAfI8Ms/w7ENa6yPRQ7aItBzIejmCPQRXWrvO54n84Yc/3DdvOmoo+KGAJixyCuJ6SYbSp3hi2787AsZvujEVojhYa6gPcwVxcOcjMiHAu0FoaQqHnTNCyx+IxI9HXiSqIk8JGpOJJpTL/EAN6psahnsDGy2X5iQfssrfjmWfllhkd8q4p6rJOi3yb0x1XxG/fnI2fXbZf7WIa4MxBvD/gAWIsO6Kw8HC2OvDHLAkHmZSOOhM+ah06PmM1jWIhcv5yXcDDGJORP+YsNi1ATuvpzBGdEDUGQqKjSsk8f2KIsmhcVkj/s34EbQhH8jp3Px41v6S0L3KIRp+H2+T64fOGA74KXrZtPEJtfOfN9RHxgYMznIDYf+Fxxcx2E4Aj47AOvPCzHfmaedDs1HdiMc1Xtp0rA36i/7xP3/QDVPmhtdql2K7Ggaly3j6Ku0NYHpE8583WkROShKnuyqvlTlc7JWYSaylJHIRc5kiF4AlbxEvtXUTqA5zrkZPZRHZfFTQzjqkaOO0NkFDFl61P5s9OgkJO9RZ+jrwmPE5vAhF5lfb7I9j25UBZFiTC9TsOzfRLlJ00Iw9zaxaeBkcZIXJlEEL2TYX5x+xzyJ5NBiFLW+nDdRvir3Ik2bAs2hAOQFzRliyA2oOvkWTpoZoZaqfODiLR6HNPikgCkHaeWUjW2QOykWrBGtStSLpcFJAqw7BcR9x3LrOTDt8ykbPHxM7JlSGx5gelIMloamC/KaWka/OvGDVB+fpinhKz+KTQl/94ZSTpsPQVg4ase+cLvqfUuo+u8Sp071Y3p1mYwCh2rtJeg5Wq4WDa6EZWx/eZkneKTMtEbWUfb0ADPVo/gf/uNYqkfxXFPOS3E7uy+Lzrf++lMz0FkaFE0jrVeU1wzX/J4xrq7uzXKA/sczZXN7UEqamEil9J/Ykt30lFYEjWA4ncVyj/nkylN60XqyCvP935m2MK7ZI5s5oxLQl2eW7R//fmwGwkk/MHtmJbNPZMosr2U2OCs6v/tfZ6Kzf1Z0vjoNHTVpmBWVH34nWxMiH7qBZzYo6fUKMuEJ3PGgoOZOZ9Qd69RMfvt3Pj6Dut0bNCGL5pkZ/rPLn5qe4br1mNSV1rFlKrErllvmqElyCmZLjIk5Je7PHluGkHLc9X1yWWjZpTwrYf+HafsJobUxaE0Rtn76YE+2kH/ptc/MIOQHgrmzYvMvZsHmFjWaBPNq2Jw3Czb/B9icgfgjdaQBfQzQ+bUZ0vzqLPL8P9/85Ayi2aFzTDrLC0EX2T76vIR6zEtRrDXW1dsRiStsgl1UhbrWPF7vIiRVO9+8nUMI2CRzYhns7/B1nnZ0n03D8POCKbuj/ei71DIJGVC7GOvJVdgaDZbLVfTpOPrcsD5YgmYdNeM09V8Qs7bAw541U9BlgcanFqcjxunwMIVEru0VF3yLYyvD8RmTak04nTALx0WLSsX/72DpVn7i/zeMMn7QDlnrSTeLWB0MCjomxzmv8tOV8jORmZ2146lla4/5bFd8UjtmM2k84vtGGmXC3wfNRBeFWcB0sCqpCpNDYWxqoXbk1YK8WmKT7unpswrP6LzzmVJew6xFai5Y4jXLowfZQu0ga4dj42qnLA+D6mGBPOxXDyQPo+phKRR0sWaff+1mEVqUbwRqj11TcBxFqTRobqh9kt3OtDO/bsyv0m2xW5X0Y2vmVptTQlh1AgoMMxapdkBg7leMQIiks1gKWUC9lVnDZUXdYEZpydyonY1TS/pQkzT00S6eAnW+7ajBdlNP2mpbjS0MJFuNM32rOaFbTf6tt5p8RqtJ74g/f+YTGR2xnY7wnS9kIViqrcwze8Goq8hJ37dUd3eIZDVtakp2PzFVUd/2uB6tpdwzTyYk2lEvOOlvA3gFm6zOPK0QJ2zLggWsufxj6yYt4NaiDqksBqOaxOjOsgfAI9ILaotRMLQnvx0Fk9WsdsYtJcoHaRHaXHvkK6w9soPC6WU9LGDCw+LSSlFQ/UNeGq8YtJG8PK2hph0UR/VtkK3il9ofyJhn/PJvZU0LLdnGwbSMjDnLip5xY9LSAmLHHNVh/Mak4T2mJVzY9V3pnR5Q/Q0eFOvcrDjartdSsZLaFfts+fkW9Smb598cWao0zgpUl0XeWm823LdMWcYahVy11p+wyQ9YAF9eFrhKyDDKBxXxC+L4cplfEpH5jbqGWZgoRpMco3UQiL0pwW+WNcI54a31OXVOYCin4OosTuCkmIPiN3n87u9ksXnUWDn61LByi+KNoILVeTanB3q2odlmQnlZSYi8K5K6wuPyb35kHngeqs0OBy4M/CI/mg+XbHDA0KEc1pGDPitYgAes2GFrqq22Z0MnjGQ5tGEwpBp+O6ZBwSKIphNvXbyVBR48LsBjcINyLAkR0GIuTXAjyDfiYvkIlQ6O+Iu5z+E3OcTEpRC/XSzpwlTkDau3SMexaIKKqSgtnAyWjK//sXnfuO+PP/ZJHlMo0c7pFf/GuJ3f6GEpixSFHC1k+oH/EPiLp7xUQ25JgtyS5EyRmOBENFy97C8BozcyU0zfH5k8SUsm/CUedRKd9DtxlhDnIFpR/+Rt7MRDWT00blb2kJppsR6afUrXXmF2CRVSmVscM7fYU7SoOFz5CAiCjTbOIKczYI6oc5yoyiVGfUs1L0K9LlbvFwEWEENVlvWSTYiig3LockRTgkV4kpp30JkHi1kfUKtKb0R1O2Q2vEgC6JBopXZi2sS1K+wEC9EN0kRKmROjIbjg0TDQmeOrNtH3Zo/GKcOvHm2uLV+txyhsByKixOY77yH1zou76KXJLbAklzlwKQ1LTThzM0w4wyWk2dFdmEIvIGN+RkSp8zPoh9Q5PhdMW3oy1+LWGXQmZNeZMCkKFYmqa+Psq0s+OZz0eVNarsl5Uzs53BlCWNKowmGKizsezKjvCyhWsi3XxDWmfOlc1+ea5HoBc50TXUKP6PCDirqYArg0H5OQ+YbddmqLdqvbUDTlHhVvp1t5/vQ/pK48+3M9muv9kqV850W2FG3tMVKN749h6mbJZ67Ab17JK8WI4sQKrlSLCzedovKm2DFcyk+ztj+7xtootG+v0e411gbwX/6msO19N+fAYmtRO2lFjq/ZUMuzz8QbyCe8aAV1XNnQK/+acjDirP/697Z96SuXPtbDvY4zMaNDRSVUNRm5w9ozGhSkbgOGPi3mOHV7gBNFYnp1B0cS9mAJm3+26r6dpyvHyky78jU7xR3eq+IOr4TbwxaV1OQgyLONe7V3TI3EcQ+m98QlFjRFEnhSAWMWgPHzJ2ufJZ7HwQHZLeEtJecw1+D9MORsbEZqZY49v+h3h9aOi8Oyk3F3AiUUFTUdhFpUXGP1clBYYyl/d2usX4RycUmeRtHEkVTDGmtz5HwMTy/ruv2cJc/rJXjFllTHRfn4WjpOQl62iOHwI6dKJzsxsa+InnGxMRg5+gGganlTsc6vMnR+xfQ6n6Hnip+fjhrD56JEaCFKrd9SY+iatjH8TynBNbOazh6eTkQvUJjIVSSGXENEq0RE11acStXmjlmNCpGgs8tmerKrXg03xC43eD/V4eT4hEMpNhh7VhuMnYoNxhqWUAtq61i2JFT8MXxy6R6jSAXpGnw3bs6wKmx2FO6s7OfaSknvsDaogcKNlU/UETqIZAWYMFVnH+Sb5JDfGH5MNOoviMAOPWeWGBI+xMak89IqlZjRFZAzEgAW2JXmZwJPHbgFGSciQwIMn22FDVzJblicRXKIrxmAmmQzH6jGWwOKW3iR1y1TsNgUXR/MYSKYOeBSDwupaZRzZBBcCKiDFd7DnNKDzeVmfCfYXFI3nGqUVK2Z8xt8Q9dOeWzm3FWnjzdh+zuxgjVYj8K1VoeTTIPPKiMNei+OMKdgC+XaGDjq0F/tF2lJdaFICXQwXxSPnYOB06lsY5WIIyWQDr/kS8xOtKLFb7gbI28T49spDH0kdjeN2nlGFjlUxuSo0/Gpjn7x6egYvMkHkgjX/PYAsyqnAjeHnLgx1duADHIZ5HhJ3smRApRnWYgy7NHj89csDdYXUfutEREHREpCJLnfalGLEGlJisR3UDmbQUNWlKmMQWuC3BcZBzEUk7H+G5/EtiEEPg5T6yr3mMO8IcnlsZ8wJ0nlaFC+AxlADvKpjNh/OboRUsUKTRa5z74wE7mjw9EGx2aPbMhRmjd/ZAe5Tt+mVoils+I8G9W7oX81ugdkrX+PB0rlOEZQwkT9WTNX2+NZuufJys/nuKNz1KUUjjIILZ7rLrmYD7vipZFKM0rE2mKp9eRyWMbAeaDZxm0k6bDm8PiA6axxINfREleJ5owk33O9Njmep78brMSKUMWSGQNeVq0XeaPH8sJpBaNRSQ1Py3lCEjAH0JWnuQcFGzn0S8R/7+8kG/nmWESB3UmqS+gMbIZwjVBOSkYlXlpsZQL20yO6ZB4apv5kgJk0nvEd5u8yjodTqB5Ob3EvDQQoqV+EGuDcMHxBLLVrK5ocqTGlb5itYcERy7tZe7MJNx+l6FTpMUsqS384QEeqfkF64FK99eVITVilbQRzyFMMqHatVhINZwse8DzgRcX0C3H7jhFBiSWLoCQloOLJ+hXdxCEiNJC4GJ5ZDM2AAwYcPfVsXWOdsj1TN+BJI0U3RDUaMay1wi2HUjlLGZASAXDJVBNT0pGeVFyGiLHsesYTvgXAuKwnNxkbUpxNo0xc/ZaIP2GXDfHLQcpLlkwUFvtlWZRsqig3waZutESulUvgsoRma4uxihKCeCDAkSrFB5zpcwwNC21KNMDarDo0RuUOTY0FOaXwTEF9UiNeyYWfJnhARiiN6E3NGNcYMlV5TnUxaghCuvhIbk4xRzZm8QjRwW8CXH+RAKj6GjnAquRw2eIUFUupNyDLuYrBC0fx8LJttCDgi157huSZEjfKV8CBMVrqoQNf8lY1KJqXAqKqgcUmc2fP8qLPEtcvGk5CUXkeNUGpx8MtXbUU1wRumqiMoEx5HEnL6+asvpVWy6cNS/cSpDVHNxg9Y37NDtSFLI5weRo31o06thp1Lv7NMXPUsaNRR76WpcdoBcHRAPLWR7glj/34IlNCD7BxgXeQaw+mb6rjRKGpWdK3cmIcPf9VW32IRGeTDPeBE4Yj9EJdgm+HkClD/0+SXV1/bs3RoS9X/2Lty0Ge8uP4Uz0ZMDvjpgspgCNnAePj1a8AGUknFJaOn4wQvlo+pxYCChPh96tKF71nAnnOJV4KU0MnZIotnaLp3Bay1hpelK0xG6Mv0x7HJw9q/CSzjUp3KG/0UEX0UEXVRNCBeFcsOyeyE9pRhLmMP7yDAtna1WsAZ3Axi/x18iKsZ7BoIJ+qFMxQVD6gWnoRdu3VJgYKwjn7ecW6B9bz4BAjt5q/uoHyQ4NS6PmEPV6tBkqVbWrkODOAt3a1an79q+Ys+0EcKwAg6wDxoCAlNs86Hv+7+KzjX6xyxV8kNokc/rnP6ZOOx3PmUcfoaNks7pGi7jCFuL8Tyx3n8iH6jlmiWwo9x+hs4Pb1CP2RWaK7Cv1Dw5X9mzqxvPeqTaJcY8f+PNrvwEexUDr0lz0DnSSPkgaP0dsf8SOcqZyyo0/VYnwK0EUfsB42iCu/9oOflA5A4DYVZXcO0ZLuDZhPy2/kJQLY5W1QhoqLUbZMFU/CE57wNuJCNjsxDnn8E8+BNmjltI1fDAfH5cNxI3fDDCv/1anw01OBH6gBy7e3IFXuqTSgJL8bLlAGbsYu53e//5Opu5zoojS9cgq5Uga5r0xDLrrzcvFX4cH0fB5ey2SpBwv+L+kVrRN61epsPuxrJTzNIXYkYYrwVCMalsS/hngj5diS7Bk7OgA2G90Kv7y1gjqbWb3CUeJp8ZR6l/r3vbVkOE3tTELF/dlq53RJO+ATXO35OoGbhGrcUxr3OdND66W1xnob4yahGveMxh2zBHlI/fubBHISqpGnNPInNfJvn8O/ywnkJFQjn9XIxyxTXH+aFFcSKsgXNPLnrLcgr/Ma+fhbKfNFjfzT6WwDOZvtSxr5RE3Ov59ATkI18hWN/FJNmb+bLHMSKshjjYJcfSsCu6pzflmQI4w0DbuSRD6mcz71VpCPa+SvvRXkE43Sc/zKX5z7Ev/+79q7ld70/jY/MeSH/HwWz3jg34/4eaoU3677Pj+fwfOLQuANfkZTC+n9FT+fNt7/GT9DzCG9/83PqDMz/0uJ/C4m6EM1jdt9XITa5+OJZwjXwEdNyTWLirNJXwA/ZEqubFy37RnqlHMWo2aKmxMp5qg56XQpsCqijZS4lau/8Cp34qETK0bjLNzKRYEKYA4DzpqAFjWh5daBXn0ONzGELdzIY7cFFVhPwdE7yy9XbGWxtdXBN2tuA9bBCMXGvisVNgZzO2GjiL9C/HlUJncYDgz5sE0nlYbV4JzDll6rOgNCbcRphvlTQE2OCozENAsswVFgPXeYkY/4ZfBXZsMK4Ce82XhWdohcrBtzYcNzW68DDBDK/7Dcc8wxfMquv+foYpQzV5c16QvppH83g/T5ayB9KZ30n2WQvngNpK+mk/5+Bukr10D6mJNK+pNOOukxZ/akT6ST/ukM0sevgfSpdNIvZ5CuXgPpM+mkX80gffoaSJ9NJ/16BumpayB9wUnX6wzS52dHGlqtKDBZz9RpIevV6XSCbEzmahqZ72eQuZJJ5lguhcwnc+lkxnJZZE6kkfnpDDLHk2TUypVjSAuAq0nAsVwCcMIExJosrOhqc7Ue5+JqczUrLvQ4rUTQWZVe1v5eFdwaHU0rwSmwgxwMFs8kWYTSGrRfr6c9lcHSBQPtd+vRzqexdDYpsgsp/FwyCP9ZPeGLGfxcNdC+X492JbWSc8lKTq3CY3ldhU2mUgIIUFIp85lKmUbmpzPIHE+SUSqXT6qcCQgVLh8L4uV8nSCq+QwVM9BerUc7ncbPqSQ/Z/Jp8nvJ1QUvU+OoUfYTgAs0WfyfdrOk+LUksTYhdqqWWJsm1gYpuCm8v4TusM3g/WsCSPD+RpRdxY4YvwCggGq4/t1Mri+nkbmUQebPMsm8mUbmagaZ72eS+VwphcyxUjqZT5ayyLwUkUE9zNWVCqCAgrmazFzUaCmlEt6AzCVHoyYuA2oC3kwCXiphVlqr968VYwU+o+Jk5v9qMV3vzxloZ+vRXs9Ae8NAu1CP9rsZaJcNtEv1aH+WgfamgXa1Hu37GWifc2O0Y24d2ifT2sVrRUO0AJxLAt5IAi4nAW8mAZ9zU+rLNerLretwXnUz6suVLRxdY/WIrycQVRlcvySlc/1WHHDGD8tOvit3RPrUztNR7Lm0hkEOHzklBCXDTX7cFvNRR+SNGmP7VcAFmhzev5/PbJGFdGLHCpnEPllIqb030QG7puQLBiBst4VY8ickA5PwTycJhz2vgXaqHu3lNH5eKiT4+VoKP68ZhM/UE341g59zBtrZerTX0/h5LcnPuRR+3jAIX6gn/LsZ/Fw20C7Vo/1ZGj9vJPm5nMLPmwbhq0LYHN6+n8HP54pG6y/WoX2ymKY/hcSo+LliDaD3j773N7/4U+OvX+L1kmpjzbbvqdLJ8m+q42jza+DnI3h7DfxqBO/A41ijvwDhhZK/EOHpkq8YIFiZGQ8cXJPtXP/ff/SBP/3qz7/+7fEAJ407xnGtaJzmUwtet48HHdRR5cc5eOwYD+bT/Cr/m+AdhDjvRSl8LgxhC2PYghC2QB1LJOS4ADkuHCe2xD4esGPGKnUgZuQDdsuTsKJq3MCh5hCkpLyUYsfiIOhUCYwz1XamooSWD5xxkNM7u4XJeEeM5jDOxHjaMntrvMze6skW55V8PF4XpZOBW8LRsIc5AaCAgppeoJg5A6shU9LTL4NMSZMpoVdIkqloX/cvQbFKZs+QBHyuFB5PU70zueiWw/4YjhVd836ZHK21E0YwjyUBY0nAVSsBuJIEXEoCLiYBF5KA80nA2SRgKgk4kwScxkEnS+1G5cKLaJb3ix8oW0ebnruL9xlb+ZfTv4U4Var2HvPhvuNUQ7TvCI26lI9XrnnvORfeisAeMuUG4/Xrr/oFpL+YD4pG+nx4ew6e1Slfk76k2m0+aDTSu5HNKw8nvGvSN5HKfZV+m8i9mfLhAVucTU/kNSeae/kt0ezNL0fzP781mvf4c6OZk98Wzb38edHM1Z+PtBJtR1pB60BaiS5AbhJdiNwkugi5SbQzag/+YtCV6A2gK9Ebo/7bXwK6EiXQlagPuhINQFeiN4GuRG8GXYneAroSvTWagfi3Ia2wsxRpJfqO6JvOfyfap0TfhRYv0dujL1t/WfT97C+PvsD9O6KvfL8rWifw3w26Er0TdCV6F+hKdAXoSvQ90cKQvxJ0JXo36Ep0FehKdDXoSvQe0JXoGtCV6L2gK9HuaMnUfy/oSnQt6Eo0XmT2K9Kd+r1Qqit5fx3Cc3l/PcKzeb8P4et5fwPCqbx/n5xV8TciPGP7mxC+avub1Rhn+znVVzX69yM81eg/gPA0vK/LkauHVOdm+w8jPGH7W+T80/sQwGy8JU7X9b15/xE5Cd7PhwLgG0sdCN+KcIr9Q8TGSLp0S61tScEHVUu1BtQYg0auos2IXlHRJkSvqmgJ0TEb0QKix2w+4SinujnOYYl3uhA2rWYMtavARGRX4RLCD/LuAs4kbBjxt9G6SVi9om20gY9dcbCtsuSZoH+Y+p/y+8F2dCqFtk2WfwXDaJpViO3xeLXdow3UP+LvoH7ksJO2T9IHx6mxYtH2kYr9BG0bnhyv+rvUiMAeUjlbJZ71aj9/O/92MzF4TqWdES8BE9zNBHeMMP1atnZOw1Z/zFa/R/2TGHGLzEi/YmQnGNFH67bTbpS/lfp4es55BntoFyYBZeL4XvI4Xpvt9mmyHYizHYBxPS7CwCQ1Y4awnXMfQO7IO3CRxTxkMQCLeSfRJ48TTpVQk37Yi4eSPFSrXxGUNgKHjNI7gce5/Kh3mN9YSwOMET19VSWYzwkwOijS42HPz2/Az7C/nfo4oPsO+n1qCN4J4E4V3YboNn1g7TGU7/2sOY8pIYVD/PsYEj4g2VaVjB6lrSPBoyJOTrEVse0RDilg+Oxx6sfw44vKj9ND/OYhdUZokLZwfIuK76OHOf6wig/RfRy/T8U/RPfwEQt/P92L4AC9F8Ew9SAYoTUIRqkbwRO0FsGTVEFwkJbAqPkhuhHBYcpJPX7hT3om/Lw0jyOctT3sP0XrMD95mu7kZy6F8qqwhR7Gb3MnbRnxP0ybJv2PUIHr0P8o2tTHKuwvl3+4Yd4D0dHjuJNxFz0oAqEPiBC3h8Yy3gdHMVvp/Qg2xScCd9Fcrp52Vv75fht1cC/3IX9v/FpOVO4NLRj04YuaVa1N2Wx1awzekEsfe7zZQnBSzRkRq+KE4A20G3h7aGAYLO0cpndQP/ii7eG51sXE0KVJ6B5ax85tVM4prWBn3Ap2ekxhD9MIoE/Boxx/lHZs7ER2e0DT7+UE2/C4Qz16tIkccrlxczGYQZWIQ/WWT6VyM66KeVzq46oagPoOsE9jZRBlK+0ilK6XvJM4KLZLFN2FovcTV14/7cbscze1AdhGfXjqo72o5L1K7Tfy/6c2wsX0g2D4QdrCdryVx8Qj/vPaQOHz6DITvcLzk4Gr+wVPQ89/e5wMeySBG8LXgrWE2HbV9VnUj05w+zBtf8rfrvL1IgJCWDJhYvV1kE6sb5j6noKe/Tht4FI8X9PLHpVuewxG4uHJB5cV4u75BQjh4+ow0lFSvgtNZH7D2EdHOFltJ83p/k0L5sdrRDMM2XzCkmpWlF+AtyJV2aRG6tPxSH0mHqmn4pH6bDxSn7eikfqCij6C6HF7QAl0m9iomhf2C2bfDV6RhHVxy+bmnKcGI5m5l076u8xeQM7SylsPY0ex5mp2nFZNFXZRsfx7qAsBjw1NjUdnPCc07NGequ9g8BKijRideql3PPgkLm568gDjOiqGocnvVWx8lD46Tk1IwcnG8blnDF4mV1E8ypF6Yz470UcZh5lBgjjvIk6Askd10FM5VAn5nyQXbFXHJyQTOWhr2Bkc7CyfM4vcYxSZO0HpxF5kKlzSxzsjll5GDDxOfTWM9VSjMyATgZdQLe8Vf2+sWnthgOMR7m65b2neyP3O3km/0VFZ1Rg64xfsYl5WMHXWz/bgaHf8OFWNli3NROEJVnWUJGCXrNrke7B1cmIirRXtjrnbnSQGPkL8TcBPWZloi/HbPNqNjnfrQfjsakN000H2RGo0RvGh0Jsg05sYHOrZ2Bmy8RmL+YhIzaqP+4x1EIMSddKDTCU4xv33T1hMi3bep9vTImIgIDs2NOe9sIk90Oww1kICQj+/jU3RbJdDrX08iPzqD6PzmYDbhJTqFgJtFm8jAPaFS9b96h6rRwtAVcXpNmJXc6PS2pnCLcRBH92KYIBuRrCHhvx+pSX96pLBNph85Mz1TIHHacTiMa0PQR8NIBigPQj2UD8Gs35ojCFZrUPotuGD0WrKYbLHksFESub7tIMFyPNT7u1qdEvNzDGxrYf2hbzS/czmFsbneXrQj1kh6I4OV2xd2AeksEs4kRYBOL5RCr0Phab+vuYcDdD2d9oN35LS9uloooDbKzmQlLHbLK5EaTtXDJcDWrlllPqQSFCkFUlWVnrqAeQTp65leLsw3MelGWD4jgrrkVFOoN6fKJHFWjEQFqOP9iCaVoE5KV8uUYHstHcnVEfpLe1AdG8Fv7DWIP9NzH6wk9o2JiuuDxVH/eobLeONqsDtqgJRpE3UNhJsx/Q8Ltd2KfF2cNjD7FX8vbQPmLQdNbY3rqY9cVF1Ve1FsBdVZRRzO8on4pUo9dXXgaBIjUlW1qxS67ppw5p3ogz3Z5TBeltl0JXwaa6p1JbTN6uWs4kJTNty3suZrq1tK9wSogbyr9BWkqnpAZSEy1Fp4D+JUtyfUQrr7ZVi96TvUtukX+ThrwE/o1lsRbNoo93XoVlspd3TNot7mcfufw/NYjeXYXdqs5AyXL9mQbt4+uf3koPLaEVYIDvpN+qawZzhbbSVrUxg2rZyD3Oy5t9DW/kU2sqn0tuKlOI6tpV7xHDevQjYfy2CXdSDwKHVtIYjX6Ju/OWJ/knqxZy7SmsVuBKBiwqsoo1h9EUOaQk9yOWMP2Viw05gcRUvE5D3pcBVhN0q7foSOeqxiEdEGiWCifiNlEID/LvCvyv8u8K/G/LvKv7dJP+u4t+dkf9+mF7YXpexe83Mp9E4JLO8wwj2VGyl1/3ShGnLQ1y1B/mNVNCTOsZMPaGjHo1KDI78ByQafNYq/wOaCrz57xcY3Pkf0NFdNKxj7M1/RKKQFMeCPl73IkbziOl5KFaVXEhBlcks0bgstJSH+T1nqO72KdiqiM4u4lx3CRGHODMnSYT2aJY94dgk6hk0+xmEllOxw2bSwPxuwRz8bHSLlLNOgLBG0Zdcj3nhn2/dwe97m4sOfVi5eK52IePHPPaJLCohbd3GbugqCbpotWyoyy492ZVV3KvgPJX491yVeNtlvhUSCyQoS0ASLKXVwmrPwZ4oAirVxgkEZ0CMhNh/1lnNjFDWCLPP/Ys9UcQgNpWdezbCW8j9mz1RxCB2Njv3TIRk7nHvq3WUeGUYP0xTolHtuQp+GobKd9Iqf6xRjlykV75+ez0r/1jjNVY+EK5b5R/Pzj0b4bpV/ons3LMRMis/rTovyBJhRnXqt9ezOi9ea1u+eD3b8qXs3LMRrlt1XsnOPRshszoxdGOabPdEnwnPMOTD4cTZobupX5sjXRnGML1gfHOGjFQYj2UjSNLSKv2citHAOA+rwzjGcLgyAUquM90q08mV/gDdjRUmc2lij86qT1aWoslkYn2ifmVpoSyxbeVdILqJHqSHR4NHacswMu0D0wH1Ad9H0EaEYCe9k0m9i4nf7u+lZf5uGvT3KAnuaW5IkemzjP/huEvcLmIUxkxW7oTY7ppebHfWy0jtT+6VFTgOBhQHQ+BAf/5I/fQl6mdg+ozezVicWbT4jFzP2a2fDSuri6lkvwf+w8npTlcS1MWZvptlMISJiBYYxpabuBwMDhD0caoBTqXqG2nedo1va7ZpB3/TcPCO2kWxpUrBIL8o02X+Xq7l3ZztPurf0Czbz+bGhRtHPQyD9NBDQRuXYS/S4QsYO3lVxR4gSIPXu/HgYgblkVvN4j7xibobwW4uiyVlAXUsqVJ+QlUj9ccPUqcxuaPh9/MtItWbM3TlPQldWTELXbmDsabTheVMJfM98Ot1ZXkStJwzvUN0JdITX/SEpETLWXp3XEc92aG0BJ+9mw9ivXIBbcX2drbOLBedYSb2cu+wk3VnB/cU21h/HqWuWIccrRux4pjqZOrQTq0kUBHfuDS9VXY36CMT/G3ie6KTvVqzdigFhWo42LzCHvKu6nisgb2p+Toa+1H5uNqmiWylTcpODsQHOkLRUeoLorPT250I+JwMgh20DcE2ehTBo9dHp1+wgM5bnA/qQyAPwnQ6U9U1vleRFP+v26A5A9GraFMCLRMVLq/botc79evEHkWySZqcyZ58WOw94HMP+FS2tB7h2/C2HHW6YMlRp/OWHHU6q486TemjTmfkqJMcv3wQltaeRzmf14aiphrkLCb8T4PyRjGUQQ8qQxmPIeljSGqYiZkyzMR83LEiF3jHbdMwjDaKYloxMW0hw9IH7CD/yqfjfSSH+Xn9gi37R/wQm/1oUFZEdP5fmOK/YicVOuyUP4WjyAnvqev9HIhU/voTCUMiuitwNBls7mJyw4AxO7KAAuJdAex7asMldyYMlwBNufHrQgADIgHvaq1A9JhdsZ7VJ1KUM3rGvMNqCHIV92niP88eWWNx/qhQ5hRf9w3xgV910K9BJkkVLjc/XuQqqrAjwj9qiA4JwTaLVBvT9k535JWLWf61hXUx9nqDWRlSoNBXceBoBwuOOHWQBOIGsN54WsKErErsTEZ7aeXfYKnPjMaHGsnhPyxoZSezMyiOYBO78qrFn3pOyMLSVBYSlps5e+1f3q0sHZ6Mt6HjDdKXglKCSCmtHIW6DeQvY6GVOWzGj7l0lY9Y3K1pDPdivckJM6eZiw5lhtklYs43d0rx/SZ1KBglJ1e8lyMD36s857uwBUXuBtYdp5Yvd1gsvmEpdcHTyIEhbJ7SehrKJOYMQo8v4ma5iXNvAv9Ir1OCpfCiEGs98mFrbwHIk8OqyvoJAAmANVRgHM1JNrbOhhoYHe3ijN1aVe0iNkkd21xXNgcdUCwzHtm+pwZfNDjeiQbcVXC8V3Gwp9sPP4M9lxz94eBFMXFIKmyEyHbyc8BOwlDtonVqmu1IJmW2HIG0Nw8z+UB4QVR34K56tGNAnHcNDauGRhJfiKbQQCM/z11RMyJj3OPOQeQSQ1oQuciRMiJXONIKMivg8lS8VssxXBcB+R6CjeJUeb04VX7An4+gx28PXQwHHf4CfXRrgVI8DsYsah+hdmLXBy9YrJwL4auB35RZTRfCVS6Exs8L/UXYK29SPtUME3piRo08PHkiFlqI//DYsOj+Tn5XFrc6fpPYaLNnQQTe4VbaGzmYt9JeT8zjSnGwstJ+QGw8rYL4m/LSmBdxMXC4cJEY9FfuaZCZ1qEWKormMMSNjL5ROUVrWnU94l3mhHMOzZ0+QSsoJ6akc5Iw2O5SbDbxRUhmE4P4cFCsXDhhad8vBVrEHF88ZmnFwcPx8GVJXl5tiF5CTfgllcS9iMCgVWIJGbBY5tFJmjbUOxzT4K5eJwfMJv5s5vgI180clpflAcTquRgVoyqzs07KnSzloEkNWmQhvkgxFNU0FJ0WgSENM2tjPsgrFzvttFgdsRHRYBQtUieIjfUMI69DITZDtjCkhhY1QZOatB52jnCBmhnKzLM1nDa/ySAKShHproglkOUSZFE1GcWhloUj/gKaRx0sEMMO93zqgBerThbjxmYYsZ2nZLaIQ5buPJHuvBG/GOkA58Ey1OhNlN+kztHllIt8F7prWruWo6uLDFmIuuCsVUE9gu1FzLbFbOvuRnuxQCGQK5j78eEAjtD5xwPxIowJrIHwOIRgIS3itqo5KgpHRc1RZxpHnaLAi6EBIV+LVa1r5haGzB0Fc1HTt0IdEHFZ/ybFBU+cw0mJgZV6mVn/kjJbyJzioKDtQelGlGJ2RFBH9YXEQPzAcihckSO6kA2pDGfLscmQY1OtHGvYq5MjOGTHc/M8XDQc8TvgUgskOcI/cNcUcVeMG6pb0+id9Aafmlkkjk5/ngK5VNDTHWd4udUwOQ46ngDJBOqRSJPDRIiJp/h0cbVPl5/9fzU+XVzjU8HGhDycsTumO4Urf2e4U/h9ylvawXj+aLa5zRWzM3ip3UQ4kU+NPFnK3PpKNlgn0Q0r2fBdupv5GexnFsQdiPa5kses3ji0iiPp+0GVnL21dnHXw659rU3MHKZKYhMT0WJ0s/If+R2MWXLVW2pRw6mxiekkbGI6CZuYLtSef6oc/2iBVg60bN81bGLenm4Ts+sabGKWrq9NzMa3ZBMTVoP3cFBcae8gC5dLH0NAhVF4lonNXG7BzEmij0RXYC9a+gosXNeoNo4LfQAKKCjoK7AFhl+wsm7SXgnJFA0yl4VMMUnmUiaZMTuFzJsZZK5mkqmmcfNSBpkTmWROp5H5WgaZU9lk7DQydgYZO4vMlJ1SU6/Z6TV1JpPM+TQy5zLInM0kczGtUG9kFOpCJpkraWQuZ5C5lEmm6mgyObPCAQQoWeFOZk2lkflaBplTTorVAVwrFDGaRl6uAKqKUzSgYzagBqBqJQCn6wBJlCkAzKzOJwEXkyhX6rJ1GFAwczEBYX07sQmGN5w6UyUX0mSK+jXQLtejXcpAG8vFaG/Wo13NQDtuoH0uV4d2LJeOVjXQXqpHO5GBdtpA+1o92qkMtCkD7bV6tDMZaOcNtHP1aGcz0C4aaG/Uo13IQLtioF2uR7uUS9P9pF25K0nAWC4BOJ4EVJOAqSTgdBJwPgm4mARcMQFhLVhGLeguXRewiFqwMmrBQDtXj3Y2A+24bSimXYd2zM5QTAPtpXq0ExloY47ReurRrtoZTDoGk049k06GPjuGJAWtZiTKQDtvoJ2rRzub1rtOJfvD80nA8brOLQkYc5IoScBUsj88XwvACoD2D4zgIxywkYtDofDzhvBz9V1XLkP4Btrn8vVdVz5DQwy0l+rRTmSgnTbQvlaPdioDbcpAe60e7UwG2nkD7Vw92tkkmqqmfLKrSAKqScDpJGAqCTifatTvqjZ/pR6d9Xc8OWG9ln8/n4tM+TIqxl9GRU8mLQBdOypMaMWzHLOdXclnmhQt/Ksw+slCOqNjaWagruYTrelYAYDEZEIVPSjqYaleJS4kZKC69bwqiWn3GlMt69mgULGoAOcSWAvQKwPiEqRBuQQJUcbgNCByANKA1LIBV6QClh1qSGMeB6pHAv4MV14b7u8EcTURTNDPICuGfAoSwqy1zqA63nO3szFhJKdHV813vvjuDy/zH16bahWpIa4aiJsa2OlBQcIThTQjO5+ptC3jNYVG/pXYX2urCnPKuYctXuA57jxnPx+pl29HTcJ3orryc1E79vNRT+AXor7EL0a9ke9G/ZlfinpEvzHq9H0PFCTahLQSbUZaic6JBj+/BQkkWo4GYL8VFCQ6N5qu+G3gV6LzkFai85FWou3gV6IdyEKiC5CFRBeCB4kuAl1hpxN0JboYFCR6AyhI9EakFSaXIK1ECTxI1AcPEg1AQaI3ISqluBnEJHoLeJAEt4KuQG8DXYkuVb5P/Hcg2OK/U6zT+e9CeKLg347wpwv+MoTHC/5ysZnk3yFuFvwu8Zjgv1t8Nvh3iuMH/y6Ez/krxCvme8Qr5koEe/y7EezwVyF4zF8Nivv9e1RGlr9GZWT59yL8iN8t+1Pvlf2ptQjI75Ht5wqI9VJF7UKvC3ee/fXhBjBOcuHtlBVsgMqvhRUK9DuVsEd5L0MqhqmNdSoZ9dK6kaBXpYRVjXWIrYtwSIAhGqfegB836Pvobn7DP15+3EirOb5axTfRKo6vUvHNNB8H8u+nDgQP0EIED1IngoeoHcHDtADBFlqE4H20GMH7qQ12NT5A8xA8QrfLhZh3IXiU7jGMbWzlXG0+bkFrKg33+R+km/iZC7ANp0FuIw520K0IdlIZwS5qQbCbVtMq/Hh1fPWIv4dun8TRoUl/gLom/cfF7ob85/Lehw2ypdQNwr3D1KPlGi6srmUZcV694TNkxplGz3fSB/n32MbDw6ww3TAJ0U2r72vOUV98U9wfVJ3i+lrvheuNy7froytCMXSoJtGUTkSD8b1zpRXroXQ9uMvfh9hGsR6wrykX3pQ6rzbK/W6xA5J6V30w0aMOvuIPxT3qEEZHkzPqpqFw6/9DuA2+P4G//xX/QIx/wKMDLBj60EF/WFEaNK5tjyRQR17xR2PU0ZSsR8Osn+Csp6fUG1PqhXY/cdB/Mq0szRtpaDg4GBI+hDIdTpA7/Ip/JCZ3xKMjKNOhg/5TEDetUZtC9CS9Bzv4K2mUT6R56s2dtPoB5VtuRXwgp1sWfnupgXXmL/62ZhWzN5o2tHKCm/0KzeUu4Rbunzb73Q6471ZVfFfF8vdxuAInmNZRl1ZI7kXCGAZefkRQoXUIOBmCLupGY+vWW8rd7Kqbya4RR253ruTez1OHn0aZnVHV1qE9KN0T8QXwWLV6mYsKyyYFGvJL76AKN8kn6MmRoLuCUkd32rrB5DuJgwq1MYfzmL1NKCl142ZeF/WGF9nWUSWKmqXhkuZUSRFUzLJJlHrju3arR6mCRIIizU6ysmaVmjlFQZ7kMjyZKMM7Mspgvb0yWPSkeLMbheu7Ic54SFVJRXdhH2JegyfpwMbgibSK4QyZkOVlvDEqaB2X60N0ILuCGKOTOV3sj5oVNBoXrovWRVEp1SiC0bBw6xCsm7GC1iHRbCsomZo5RUEOcBkOJCsoowzW2yqDroZhenJz8PT1qIHhaWtgIXO06N9DDWBqMZxeA1KG61YDdGDSH6Ejk/4zNDTpP0sHOeeDqo2s05VzSNrIkY3BwbQa4hwzaghvzBrC7ZxDdCS7hhijg1ld4A+ZNTQUl26UuqKoFGsIwVBYui4EXTPWUBcSzbaGkqmZUxTkCJfhSLKGMspgvb0y7KeRk1xHh+mZk/5hGqRnT/rP6Lp5Cg3nyetRLU9NWy3zmc32fw/VwhMK/NKqRcpw/aqlXV3fXoC/weBJOjxOg1VapICLQ+AIgIg8g4g/qCrtXswVGtff87muP/nCR/veyzU6aGx2i1Vl5kO2declPHc3UECDL8prRDmmWHEVK24tK65ixX27rLgRK24aK27EiuvRfCWAjlqpLFTAzpmlUpqlVNrqpOLHUvFFKmDFVay4tay4ihX37bLiRqy4aay4ESuuV7FVy+tWKt1Lq3Ep/X7qVub3HpAw5vBB/eIhCdO4pId1mi06zX6FvL9K79Mv3h+/GMELRJ5BxN8fzlY/IEm4zw84FnThvvl+ekQjfti4Tt5VKePVh43r5H6Igv4omRSgKKkXqRlQ8D4SLNPcn1bHVELSUSSdSR0IPMha2WgYQ/dSVh1GxZbeIeIBXKxOnqIsJUCoKe4leqW21Hkh5ocxRbQ5VY7IxTpelfSrEMoMuMLAUWFAzIavTp4MLSZBBXKZRPkSnkBHPbvhs0t5Kprv8Wy+T9MzN6ypYBS1PUgFAIZQT6gMlEQTpEGjgnXiIVSxmcSo62KScv56Ua6rP4Io6iounwTdzB113u/iD75RKtR29dyfRx95XbUfeTJRSnT7Rke/jVnhFaaw3aDbq2PFT2PF16wEYMUYczVBHLB762zF2nkLdesmcLPE0hWQ061KKuDNCZBuJ6oXrPsi6lINo+L3Ssa2pk7d1CUj83DFQqYyVCLTTHybKbAg8MXkH4AcZkvq+FdAirrjbxSM85xGsZz6CQEVqIDdCvKoEEvFzMOYQ6Ti2oytWB0e8YfB6oxk1EzC/0iCY5nTRxwjyUcV03Wz6oqS07oUOVfMHPXnLnLMxNdyxqzbPwLmZyRFH/kWN86Pfst/Nsm/zHgN/r/l75eVjSyprwPz65Djurcg9XVgnOel/lNgfEYyZCUZlrmgyTBF4+SzVDesBnfATyjTofWrmXmL+lY7Gz3yuPE1ccu7gXO/kdvjDs51J4twl3+AdvtHaKNf0UpiDByR5Ldzyj1hL+RQr7ROaeFmH3MThpGlMoxkDSA31bdfolsAzrw0sIRunvY9MclET7YkCbqVOV3CCn8bC4BkJS2emsvaGW2diJbP8DD7FTSlQGtgw1mtmkKC/DugwPtoxZGAGwDTwhL2kNySmLY8zdQ67fs59eVtToJamN1m5rXMjM7hyt9szgS4P46LyMWKHtILKp23WY0r8Pny7oP+ChpiciuwwAsB38aoNzLeDX6X0p1N1H2fSIUOyColROuPxEenB+PofowrdPdDwSijMEsM4fQ0woquagIQpMHrLjwMYkF3P+v8zBVl6YpSut3Cb27jtBBNk3+AOT5Cnr+PueZ1fbQDugvfWkNgfwOkpXKOGTXZN3k+oJkCS/7huPaGJoNBenzipL9fCvGMLsQRJQsU4jDtH6dnaKRKg+OcUhVonUqamuthTYCbGT/QPk2nokiA1GElZ5OaCCQxKB9AcICOIDhC+xDso2EEw1qQhuj0oAoJJusaiqWF9a9dwTRA99Ad40HMAa2PzPoOBl2dXBWDNDDYyZVxq+rnKor7Smgmfdkkd6/BYI15dGDAPDoHJ/1BbuCIVcGeTcuw503d0uEpCvVbKYldiG5G7508yci92C1ahw04epeyeI4aBVxHuVcfl+JzmmVoc8vo0Q2d/rKwZ5VRXBV8b1ziEdLl3KvKeVtaOZenl3OvlHOvlBMxVU6Hlr/1cjpmOW+Py+mkl3M5yrmc+rmcy1PKadEyPqtf4HA5H9QvqCYdb10MreQNWw5XrLSf82jIvwujbpfmG/n3SkxjoH8G4lCUYjRMwZ2cvDkQvTmi3yRms0ldBMdaXRNNzCjGBqjsBkS/cXvBYo8+bXwIoflo7p+oux7QuJLz7t23u+/frrTef1ppV9I3b3cl2edLnMSRzmel1rbyn7MvrYEUDByQlAsNcoovTUJD6iQuNa3TBmoglCMcnCRfG3M1QaFuZehBVDBgwKUqNcXAAWoxxIBDRDHFpUfT+eabN2929o0rzjkgiNXMfG++3/z7Zt6b+eabuTRs4hCbNzBHqYVzSi2ch4wyAJCGBwV18Y4LrjbdVEE0D/idFlCQWJMgGgvwYOQedc6jNTC4ibWCR0orHzzdWgHpWXDJWgG9fqy/QhsFH40LArRb8DicO2Ct4BrWCm6KtULAf76Qqyxi5RAr88u2Vgi1IpJ5gY9lMa0V/Ni8wHu2tULRAve2HQ4F2yOLzoAsOv357CJ3XPA3+av5NBQ5UJaVIBTuSLL3Kd6L7+NWplDeXItEIkWh3D6E9MsZ6821MUygwXyfYAIT5poV5kYazDsWmFUrzKN9KTAP96XD7OyzwTxNg3ligdm1wtxOK9QtS6E2rIW6m9ZSdywttWWFeZAGc98Cs22v4kxaFWcsVWyFeZoG88QCs2uFuaobXygpRiKSTCnOWqV4AKYopViDKUoYsbvKhKF9QH1ZjZ5+CTNSqTga9QZSdcKXjPA3jPBtk+EuEvSEHpiERybLU5NwNcsJRT2zOiHul1ntxujs0MWVq1nLjdEa261htg0L212N7c4w25aF7YHGdn+YbdvC9khjezjMtmNhe6qxPRlm27WwXXUStivOENtlJ53tTY3t+8Ns10w2IV9ZQxhum4S7JuGBSXhkEq46BuGpGeNNEcOQH0eTH2dYfhyL/Ghst4bZNlJL7Zil1gmaTeUXlf9jS6//PvMgr+24cmnP3ajolqxMfYuF1OlYkXDZfkqQVajcrEo1xGpUMaxOVcgaVLdsjCqdNak12Dg1E5tQ56zl9Ns75DVubAkc8FqsRVddDm7wymkbvHLDS0keWSAne76iduoOLtf4HHffZZPJ5/gkNoieNHgwGe92mrLc5zGd8E+HMI3f5VMXGaQhlU7D5ErEYsQIEVM2UHcSxE4IHUSMLrJufx/rcZB9+DvTwiLDFOrrZ2D6tLksN1t0QoOC7HRzirhupwc+TMH0heScGlKjejwqjAB3ejDO5mCCHQCfeXQ1dAEOwGysO52DnvLil/scHECHx+jnEKSHTk+7MFp6YTZR7vpfhh5GIhaMpNWZbGl1L/Xe+EdE0aZ5qaaNUpUspco8V6mGm0U0PcDMmeFWyeypVeCZrTLG89TU85/7aFvlQ7cB8DKA2QaWMjxfG8D0JitAZ5MdhMlN9oJoEsZTZwNNEmFvmYTO6Q/XLhF0ntkudZ7Pxq9Cu3R4GTpmu1jK8Jzt4uB9fgXIw8E1lgcXXlhjBy2t04XJMx+2YbrPbJgqz2jtV6FhurwMXbNhLGV4zoYpQk1s1Gjg/8hdgzzeCAhNQZyIiQUkoucgehBe8HmCzxvk8wSfl8rnQQhVAV0fTG9MEMet6RGfJ/g8nU8Qx63pqavJIKeuaFuFHIbUMueBloq1rsjXo9yaiEeP/ptfexbl5AUBLrTTOEjfDS3I8bTX5YN7O0vX2SGoonZ7mgwAOmQAUCIDgBGooVMlA4AaGQDUyQCgkSwHv8jlfa6fYT3uos5/VgjWLODN4jANnlgj7JAb5UT15FahJB+MJA8K+AA9B9HDclCVcWrkJnVblw8a5A7XL3PFDnroba4zh3ovEs5HrWRpTK3tTHIZ5NPJLEz2t98VXXiSloXiyD9Nj7ybRFYPW8lKXCnDo4ZnuTPZv/Y3FDWEQzAJc0L9t85eRCH3VqJJ3HzggiObbnxpPWrBi9r1BQ44P4jacKC1Hr2QbEzguGXke0HbzhAqvBy0oA2OYHINJpQDjanXz2Dfm8MuOAcetq/H856Nuz72Kd/UVIUmaT+bhQrrYf9PhpYeFOWy6yyEsQ87Pg+iE0IPnZ48WUfr/7QqwsUIT5wMUbZwTOUwnrjiDQLwL4hbbgNu5EKxZcIhJlwGT24+GFU+edhNiGmEsmRlCEw15qhBolvw8Wa3c7gKjchQgVCsQpCGlBKB/UBhPSkcTC/K1HTDNS/8oeei0doo/xX4mnHmO2rZg2XVQgpz1NIME2bp5M2rxSxWUMtjzMUI5PXUEh7zEZe8AeKSNxT9geZPy6xE5+iNoLNIc61zNNdq09SqSTMroIlVLcLD9lgdamIS1sDteMKkaQznBxU87ghrpxZP9fZzShzAjtUQ0aAOjQtRXcTE7QgN9DUUDxBRhsVxR/jjrd2EEf5kRLybx2GU+0fjs5+4vyT8LShq5kdtKMAowtd5J4QAuDMFPjrTMAoj+DvTgtELDORdvmPQRGsi3trEBVVZpLiBKzx7CBSHMbvgJ+EyqkrKMHoKD05kNXBYA6YYg2kWQYvVhSzXUZBxRGU1Ea7xFCd5XGB1Ich1FOQayW4NBaoGdZTdutqENGLKbh48JNtUztjxrc+Jf8Ts6DmT5LMa5HhxAsYgzyIYHyhOWTwP+HOHMciyCIsoDuKqnyx54m3OOsnbo5h4u4gBpd+MerhtEeN1Q2hAB7riPVtDCsbBxxEGiiHUoAtFekwV1ECnAQwdBhE6Ea+1TFxrTLBC+7rggYYWsAPo1V7gbQxh0tB1jMF7AsaoiRgNkXnCj9C3d/AMlPkoIyx2xjDPY0j9cdXJcIVSLuXULHX8laOUS7lhRVI+Pi8rKkBBUyRhUFckUZBYKagrkgpHnc9DHgpfYC6tHBjLAjnjJFtc7VCvTTfWOLn9/0yUJ0jPQoE0Tq6hccJkoDCgZyoYeqaCoWdypX7J/ajOwHKlGiiD+TW1SplYDeTu8QwsA+7tZ8DR4VfnkqOuLqmjrkhRWgAX1Uvn5dHB317pT/9B5Pfds7xiONPX+n+e+UqJ106OeVJF9SXEBO/3uMkYZNQCl7bSpa/KtfTlOn7P1Rtqpf776ngtcPHUd1TyCdUS0hU18uVqoY+nP1i1B+9YwFbtYG9ZwW5ZwDbsYDetYHdiMFdD2iIk14R5zwpzPw1m2wJzzwrzMA1mxwLzvhXmSRrMrgXmsRXmSjYF5nI2HeYDE4ZsrPtJgwTakvE7+EAn3DIJd5Dga4T7JuGhSXhiEq5kNUIs15pW4RqVZUCGLVqFdzS21WG2tyxstzS2jWG2mxa2Oxrb1jDbexa2+xrb9jDbPQvbQ41tZ5jtfQvbE41td5jtsYXtipOwXXaG2D7IpslR1mjZd0zCLZNwxyTcNwlPTMJDk3DFSZEfR5MfZ1h+HOsY6MTDFp6ZHsgBEIlEigIJE6A8WWFupcFsWGBuOmmV6ZiV6ZidUSeIM643mUMP2D7iYD5BsUA7Z5XO3KZXNqhlMRaIr94AxFnRgu8bfEigKxP0AM5Tec7Q8fWjYvEUEm7x/P+cQoKJ4jwugEIy4QZHLpLE3zQ/WVfzb/F5GeC3WhCf411QH9CrrDA0t3PD+9Mj4/zQEVfM6zKXQpzj8V9O/NxLSrpZVvUP5qgexnKqj7K86uWsoMYJ5qqRhnlqrGK+anYWKEFioRJGVlSDNSup4Z+NYMLkHcWEyVvGhMm7H3HJW0Fc8lYRl7w1ecBGnQ7YaND8cUwex9GUx3CMkyZvgmaeLXQ+z9rovMEmSb03RVPOaZpyAjrAGE05I5xydiASU86u2kLVU1uoZnABXUxDZ7Hb4dr+LL5PolhAUeMSadPQrogGHVyc7YiYOOPsoq+reICIMRtMbSYLM9BWn6fX19kcR5rFH5+iHtAO/T0IU9w/JfwviG9Cdghy6LwIBXQ+Bh46HwcHncOQR+cT4KLzSfDR+VTSe44MHHsxCwdwosqoqJ9eYfNcvrsQsg68wCLRoSKcRnaggwq9BbqtRsybFlbEXsB5nAIVYQEDscVQF8/77kIHu1gHIhT6iE5j5vzROEycil4q5WBG09O2RVq9wZMxepqmrIcASSSlOE2CWzIStBMtqWjVnjoZYwZ9p79QMs/E6IjKmEnVqLaNiUr7XXY0magcDZFVyxOeTRLrP19G/ecxg//Yu2wx4V8MYRFXeV6+yD6TgoQa1aMr0a/FiMcRcclAXHqX9RPEfgh9RDx+kf16cmALFhFeRv3Qb8CiqR8SqtcF6PBWyoaWJ2LQjXhqdViAMXgZFi9EEfaIZDk/wkZvAHcWwGPz4LNlOMgikqE8LEM3XsOfhwXlxZFxHpbR4TFQZLhsobOgSw55oZsoGca+DAsYiVjk/Hd8Xozg0MSTfXEirER4bwgNUbhFXq5Fo1x1S7kyz1Uu2Q25hcuQaijCnsibNYUq2qIj2qIr2uIzFyJD59XBsjagg6kWeJIum+d57jicD9VD8xDFGeXlV17M7EKc9QgzG8VZ72CeO5hn6YVooCa7GIlYqGCUVGZPsaEhCmIYbYsy1C1lyDxfGRY32Qnob7KTcHSTncJTk/An+gk1yXHsK0eh/4y+ktljXzkO/Wf2lRzPaF6XqdxH31c+VL/o49lSZr+wlOH5+gUcgxNr7ASewrTG26gNp9bYKWoZtAX98J0Fj8J6ZmfJ8nw4vwKdBe2I8Gd2luEyPH9nKYMj1Jh5/B+11+DkOrRXwRVEPyaeQCJ6TqEH4QWfJ/i8QT5P8HmpfB6MQlZA5wbTKwiiZ02P+DzB5+l8guhZ00t0qT1Nl9rDkNKlzqfqUhGlDW1dl9qWutRjMPMMXeokZzs2qEs93afVbv6NJUaSDnVRGEPD50PQESrLF8lNyvYx+eDj5A6Xj7XhsIzzCRnnGDLz5OGT8sGnkgcn8AF6TqGHl6IFXa4FXUq0oJ+PXknRgi5DRIrN5VgLukzLmHHkn6ZH3k0iq4fIkmhBI9KCLsda0OUQTsMyLEgt6BEUz85KtIxay2OwpGlBX4EjmhZ0CZZ+EJ2Bea7QPJsoNDluGfnOagrNUYXXhlfgDCwJpmMGE7agxtTtZ7SRrEP68KifjTttBnpkiTkjLDFrMAZT0BT3TOGxnFFTLF4trFDbw0H963s/zxAaP0qlAUf3jA/rEJr4iYhaRrqlacxU7YxAGcnPsDYctT4n/rEha0OTVMX3RgQVdLpQ4vUwMjgKRTRdmBMaE15ZFNBGIqnT6KLTleOSNhIl05i2mKcENE9JyMesU5ZKPGWJ5lcGpyzRkuwnVaBHSyT68fxFzmb0jzZ4Saw+jEOg1XsIAJ/msoTFmUZfm9TVGakI/+5n+RUmhUshn9VXYmXM6qAy5pBSxsyhL6duKsmjbwl9BV1BY1r47Mmkx+M3YXqk2wHvC8wXHTvlpr4gmVMEWOZEj+GTOiYEXzcAQnoWOHoZF6lIVRLqGpkiKldKaAOEcN6AbsYzdDOeoZsJ+a/Ef0XS0SBWDrEyTKyerGZT1DKcDoJ8JF1bs5qmrRnRSknqlRCLY2prwli94ifaGkiBG7XAvW2Hw7EinM/eEbeVzme30C3yu0czMCpsfsowItz9yc0X8oBmKKoVdHX+dNFcQb+dt958kQZzzwJz1wqzkwbzvgXmgRVmNw3msQXmkRXmciEF5gMLzFMrzLU0mO8V0mGuFmwwq2kwb1lg3rTCbKTB3LTA3LDCbKXBvGeBuW2F2U6DuWeBuWuF2YlhSrrcIBFJptxYYXbTYB5bYB5ZYS67KTAfWGCemjDqdHUqv375AlJjQiJeA6lVpHi5SWoVmVoFxcu1ilcazFsWmDetMBsxTKjB3CSY0IS5YYXZSoN5zwJz2wqznVaoe5ZC3bXC7KTBvG+BeWCF2U0r1GNLoR6ZMJBXH1ivs0oibJ4OGkphk6Cm2dtTE3T5d3/29+E/ff3PjkMeKi3m8kQa52788C+2Lh7/Iu24uub240LqFwQgVSdsuIZN2ZZJ2DZZdkzCrsly2UOCYUbkaWZE3pB2a9UzSqhvH2Ah5LRQJSm9C9UWy8cmR1oSt4aT2PDMSvzD2o9O/fs3rxwHB8IWqyXhHFZqXVj4eIZK6/YwgTUoJhtD8RL3U+/s00vvQX49zUzHTz63/FDGrEMNf6+3YnVSG018pP+lpVRznTDBwYkB7nPkTn/661G4AuFXGWHHIHPpIJUEpBJCBUEqUEGQygpUvsoD4W8REpann4UA1yqCfu5sa3M99dKEZoLYDPtNcY8ut7ceyEyTZ2aI1ShRv9AvDpcKKq+02Hg8hQzp+7QCWRinCVHY/6vN7+JJOlmoDFx3DOObaUZTRi36IGrydCvituf/vA/wP95UTS063i/g+SYTXLUl/uFeQs4unuA+QO4UT5Xw2X9lxT8Zgft/4Ih/SMDa1O/QEXzZ5H2KREEy3qcZ64CnYPT3aQxjvk+tMLtpMI8tMHu4uU6H+cAC89QKcy0N5nvZdJir9vvQ0mDessC8aYXZSIO5aYG5YcKoC3qwUfUx1dxgsmsSLmcNwjWTsGoSNnRC/5v9r/TfQLk8GfktFOCTUdhiLd65Rvtl4CQeCuRi6gatu/B9z8x34oUgv/+vGbGTWpR6ICb4qOWrQAAV3F2NNwi3pf6KVbHXY+1MnMErlaH5aimLHUX49pndF/vtH23/qTZRUr1XdXUsG0ATMAkIZRZW+pcwuQub4OHqghYZazyaVBHBF3sZViLMVFTBwQIfdpF7PlsTgS9RoCwCTQoUReBrFPBEoEiBXHbJ7Pghfz5YmTy9/t19xHBIcC9TYE4EFinQFYFzFAAROEyBtgi8RoGmHGlwDJoUBTLS8vtLFPM18XxLJnxehF6lwOdE4AgFzonAeQq8KgJzFDgtAq9TYFkE2hRYEoE3KLAoAmUKvCQClyhwRARyFDiccnljRZ+KIBFJRk/aw+WNk3PZnD4bQTpRDbA9XOGIbJ4+hiowzwDbw0WOyDYwo1Vgw5NaK9hlJwEr6+OpAisPDalWsGsaWE0fVQWdqObAmnr5WLYvYu/jsc0LF2XFm9cuyio0L1+UlWFeSiaLZV5NhhlMyCndz7wFU7A09YEf6UQ1SrqHuzCRra0P/wqsPfQGsIJtaWCg9wAFBkOdwAq2rYF19U6gwLpDncAKtqOBzemdQNCJanYCK9iuBnZI7wSCTlSzE5hg6kZO2VzmvZxU8Tp5S5LBEExJ7hqCKclzhmBK8qGEnIy7ScfMJQU8rHdMKiBRjY7pWDumBnZE75iCTlSzY+ZsYKsa2Eu67As6UU3Zt4JtaGCLuuwLOlFN2beCbWlgS7rsCzpRTdm3gm1rYMu67As6UU3Zt4LtaGCnddkXdKKasm8F29XAXtVlX9CJasq+FexyPgE7p8sZgRHVkDMr2DUN7HO6nAk6UU05y1vlTAM7r8uZoBPVlDMr2IYG9pouZ4JOVFPOTDB1r6rsfObtqrIbmXesyg5hXqwqRdu8gFUKqXnrqhQ38+5VKTjmDawoAsZrL0/kc0a+JflzRr4l+byRb0l+LSGHZJQ7BWNkvlvEiSbQ+m2T1i6jNl7KxQRugUXyrrSOyFWBdUWm86wnLx6codsjhfV6gJME/Q8C/vXzSrw+HOKcAe0swT9ZyqKlL6pS/RV1Cv7hP1m6/rY4OR3Vfz6qzjjC//7iF79wv8KqyA37WQhlVhHKvibiZGAMccJ4Y0MDQ5U4FKIiL4QKOhUdttpvn4xaJYfj//W38EO5/tlSBnf3zmDhp6CBzjSMocOMWjKUMTxf1cGCc/SfZ8/iNCfOfPBLzXwQZ75qZh5mcI8EMguvx70eFcnvZ1mI2YQQioNNQsavlJ+e1ihGS3QFOPT4P9LiihQw7PEw96BEBTCDDjaWSFFi46lbEBAsc6EqfXnocl9UUaffVzgz5MEVCfiI5EPYz8Zmtx3ocrZkD3Wi5Eexocee5bEHkXoiYNYM7sHH3prB3cXcjKWVqyPKgDkfQ1/wrCxGGANN55PEgpS8JDVSJV9qdaBxdNHUzXeGSZFJKgrbaNGjXVq23C0wGqUKNAxsF6IWme5uFaI2C9C3UYhmWBWKtBgAvtGvhWj5ZGRdguKFyAcfSmhkTdF8ZWSNwi8LNaF8DfIpmRs0t25CydzXMDFMahikpJK968yRCyrfWGFFWmxhY7gvI4lUg/p1PArATZqPC+LVRKKUBzXr69fXlhu//Xf/8OML/3F8neX5IkmAdQNjLIRJ2cvHxfJoFGDXEsWqQqh2GIMDFf4y25QEb2t9XWSg/LfxtRDIgt1hHU/jpAMycWm69qOfH39d6Aw8bYCoMj95/hPcRh2GptoeIf/yX/R1FaWox+VmupFEJdGK6qxWzKj7Wj1saLJo3/Joz+15fItLO/liLRQtCzPJ+DFhjCcNDLdSx5cqzGKPegPf62Px8wA6oAIViLQAclZi+4qqrFxe22J3wndiVJ9GHF+KFm99XM/mxCgP+XXRjqtvp442ZP74x1v/KAwgxai+LUbbprKN5Kp+Dx/yRydW+vim477V7yjv/3xbef8t8f448X4v8f7sW7EXAWfE+SHCzHhdjLu4zQ1pHtI8QfNWmVs04uKGEIpvMNADZOJcyOPSTRsBTDEfplkIjFWM11jAxzcUM15pVGEhOo7cDoXqJnDkRiiWh4qMlqPqLcTRHMhBIY6Wg+S9NaHeW/sBVth+KKNThio2YrVYwBaYSGmBibgFJj7CFiBRmYAcSomDUgITcTP44CA1x6lr4EtqMY0HLaWJjxgFT+QK/ii/hn2bEMTzMBHCMnXsshBxFMkARXJYJgO7TAaqRoKkRoKkRoKkRoKkRoKkRoKkRgIEbAs5i7DLQFsXSUlKJLINDRXT4BFMDcVksAvZbMeyGcIUq8I0qwBjviGbIcmm+oSzSlOA0hSkSVNgStNHVndKMiqqMiaGxaaqHhrRpGzEHwT4fSVlY3jUCtVnIw2AuNtJGZj54f8xd1ZvbuxIFP/Gc8HZwZAH3LZPecAwTD0Ml8KJJ0xDYeZlfltmZmeZmflx/4J9vX/Kbh1VpzWwjPfLpxzVTw12SdbIakv1sVL9obfVugVlO6JFZs9qojq3MopxPsFJNM7w12p6StPTmp7R9KymJBI2ueaDQNe62SIfDLvWB8Ou9cGwa30wbMsm3cAh2uKZ+frop16Nmpo0NWvi8HoHh9iadmnSHS6QcFMvvKaPn121bJ0PsF3vA2w3+EDYjT4QdpMPhN3sA2Fv94Gwd/hA2Dt9IOxdPhD27jq3xExSznex21o0tWpq09SuKe1dxoVtatvCNvumFy1we7O0Ul4vLRQdLtXZDK0EvJ9qxuaSJct3oJrjy1cFX7uq2G9XJG8/hZEOHqfaSc69csi1vJtctcDzVYs8X7XEN65aVq2q9vD+qr32KFD6eJ5qvz3+kgEepzrI41SHeB/VYXuQKSNIcVGdjKoHxjSFmsY1TWia1DSlaVrTTBQuY07TvKYFX8Nux1xZsPXbMk/9fo3MUb9dI7PUr0fRtb8cRduu1sgU9bM1Mmkb98pEFI17PIrGHUZhvsfqELAWn0OG8jyylBeQo7wIUF6CUPYgT9mLDso+dFL2o4tyAN2UgyhQCihSiihRDqFMOYweSgm9FHVwj/4QU45QP5mUCvWDSVm0ZelylKqOO0b9dY0cd3ZSTvC4dyblJO1ATlFa5TSlU87Q22sSULi1Dvp4q7Pop5zDAKUbg5TzGKL0YZgygBHKoEU1H6bclhHKdVmiXJZlypqsUJZkNQpkjNM6enTzkJkncw6nlGQ279dzGgH36wnckVv36zkFg5HN7n+USb84rOGYlmg6kJYLOKp5TZq/iOOa16T5XiQ0r8kWSeqltYEe8Vv4qJeLOM47Xropl1GAyhWUKVdRolzDyU/7gf3Jx/mTX5LrHqh1A8dxjOlAGsc1fhISjDbKj7sMuY+23I62/xnFGh8/7MEqf2Kcv8Nx2UtYccZdNR7jRSw7655aVbyAJWfdd2XPY8RZD1zZcxh21kOWySN3/SG9+G12JI+QxDYW8w7PoiXK6n5maI3yVTyNtpg/hfaY1yL9hFflUV30ectzqcwj7MZYVIhdCOPzd2I8Pn8HJmK+HZMxb8ZUzJswHfNGzMS8AbMxr8dczOswH/NXYWH960MZbhpS15zewCMNfIRFHY3dcnMEzsN33Vnm0fvuf/MgPVeV12z03Gv+sueqf8Vz1b/iuapemJ6j017zCnMaXxpKcP56Df1Vif014Dxmubsul9TcPZdr1tx9l2vV3AOXg+YeulxxoxsHvBu1cFBt86XZE2qbP81eUNt8avY+tc2vZi+qbb41+0zkWsXmWsNrapt/zb6utvnY7Ptqm5/Nfr3a5muz316jwBxu4J0E5nUDHyQw1xv4JIH530CVwCrBwNcJrCYMfJ/AqsPAz9VffZLBeUlhQLI4KzmcE6BHAjdtEvhFbX/kg3u3JWKnm0DoRA/nDrrR6foCeRIhL3HbLRkK/AKICrr00glJ8Vbu3BSnWgKu0oOruw5/mx/yNgCv6XZ5RlZy7Mn2+ENeXn9IHQQ5tu6M+0JaqeYrbEPZ55JuspRft1PI0Mog4IA7cGPPLvTrm4lWyDhyxyYRz9gfjlQ89/v7P73sdp36+Wu+9MV8pcqL30XFvrDSuGdGszPum9HqjAdmwBkPzSjS2Nheo9Zq5YMsZ4P1aIKIbdajBSI2W4/2EbHlerRIxMbr0RmiqAWz/fqSNZawCXt0nYit2KP7RGzIHr2eiG3Zo7fXkLE5e/ZOx9iiPfugY2zUnn3SMbZrz6qOsWl79nXH2Lo9+75jbOCe/dyxOgxyNBxQmiVDqZcsJSk5ylMCG4LIhsrRP+BpbSJIs7BXG9OetKQVthO2ExYNtitsI2wj7DTYprCVsJUQBlsVthC2EAYGWxRuI9xG2Oogx9kslgAZSgZZShY5Sg6gAEIRq1K9ygKvssCrLNlVFhTOE84TnjE4r3COcI7whME5hbOEs4SLBmcVzhDOEB4yOKNwmnCacJ/BaYVThFOELxqcUjhJOEm4YHBS4QThBOGMwQmF44TjhBMGxxWGhCHhqMFQ4RjhGOGggxwyDyuTPIYR7JEOjNDqxAgye6QLS7TuYAnZPbKEZVp3sYzcHlnGCq17WAH2yApWad3HKmSPCE4jxbiBrru0XiDuFL7k1tid4gGFv3HACU6znsDxvTofcElSuBntKxGwDywjFU0tl+JctKOeVX00yVzGsc0zyqWtqKz/9uHYX10vV9J/e/9GeXSXP2y9y/rYvSmUJEBZMjgsWRySXBReoBcp/WakINCCDK5q4TXJ4aKkOPXB7llOxreWis8ucjyOo0fy0NOzPG5Rj8dJWAcWkPAYFudoVDgUX0TFiumu4EkXH/X7OUoOKdZlij70f3Yy7hbuTHe1v3+Nt0XXcO+91/9l3FqdxbgSC3+zOotb666wFRX13/6/UV0FFP5meXFrdRY2o4KkUJQAFyTj3lamwVWx8kB5BgfVEQckt66C1QwUZ3BZi65YBbvilDv1RH1d3b/u47id+MGDz/4v2gkCdx0ccWPSFFLeiCsy6btkdwpr3X2S83zxKDGXtUk0awhwnOgx0dYWkQHWP5pzrz5f0chzWRvUIEWNhjYpOIneiF1s0/sBBevvUIPhMHFfZSRM3FZZst0Sl8PEZZWVMLGmshomllRO8CHKunkjP0eENPcwUW2P9jRpi/ZqbLXtG1vczouMD/bqunVzJVgIdbZEdT5M/Jg6Fya+T50NE9+mzoSJr1Onw8SXqVNhokqdDBOfpU6EiU9SxzW+HjXU+HrUsTDxXr4ueuSTSdXFSfcsqEk/qwwdkJZhzXSiKy0jmtH+Py1LmtGuPy3LmtFePy0rmrkPScuqix4qo/gzc+8BbsdxnAuemZ50Zuace+7FvSCIS1I1Q9gmn5jeLj+KyRTnmUly3P1ejkqbLrB+hE1qHQlQaWVF5yhTAKicM6Cwa+pF+kUH5UjJOXPlpE9x66+qmZ6Zc+4FRMEB+M6d1F1dXV1dVV1d3f297PG4t/pOUG7/pDv49pEvPHR8goW7zaHi37ggOIY1luLjoAnm79aP6/rKsIsaDmx9ZYh0zRvf8ez+9FZo6yvXUIGQz3B5bsCxqC3My84N5vF3nh3m9S3MK84N5uffdXaYN6tHtse2k1uxTmElwNe+6vhqgArkmjrsgZlgUySZybut0SSc49wQ/+y7d0W8CRhen87NpHggSti3fEx/aE1FB9vxj+r26C+dOFWHoxUZ4esq51dkuKLNfz05GRFFnH/V0pHEZ0o0U8TddZfEqU+cFuROV3FbzEXIkY1yZKM1OxRSfNLnuU2PSXU0FXsTnqmokzpImeFQP9lZNKXE7hLHGPJJ0waE/zhgu0yPUdk2EY+1zpyDMtzdXE8p2VEApyimKaXtk5rpDpLLUQTJFaH/7YluuDu6QVdweA4Fryq3+Gi/j19x/vr4zS3Ma85fH0fbKK3PXx+/rW3xQ4NePlP5NOr5QbGynJe/es+uf/0uXf/bznPX/7Y++blpT6SJdHnbz7Dfp7Ryj63rq+hQgtVRD8JZ5QAl0Dznug21dcQa073ZkTpnZm43jljOPFg3ppmnlFOyV5bSZynbLI4xRGnZ3qUNJJZlzfYsbVg7CLmIktPVrK0nIdt8lG3+umrNZ1uDpItOVnOKacZyoc36bSrwkt6W+lMvQeYnq5l/CvW0nDWTJ5ndZVTYXU6l3a05rlVPJN5Fyeq6LfEJOe0+N0MazSgWqVw7WttREKcoJEd5+3TiFKFKjrLB99R/V7GZQHwlveiSUaXdoNLxoNLR11Bpp4JV0Y8pUvSnA/SnI/QjMED/+xj9FnsH7N0q4Xvt+RO+t7Uwrz9/wveuFubN50/4flvLW5etEL5XnJvw/a297a5bdxG+f/88C9+/3yc/N+1zyzgU4bvG8/1j0Ynq1mFPdK5aChz5ThUVY+EN4tRxH8KKjWSWpdSSjB/LpQgSmpmXZWCVS5azrQuWuNKqpAJZ+uJMtf/ZlczcQ5sXnbCpC5pDFs+O1GtUdoJ1BTYLn3+h+Qs5Cybaqdf3yDdcam35ZjSHptmzvJnPN2vz5bRnUft8ln0exbTVNQhKne6Vf6ypNH+GKmZ75dv0+TY9qnsWNbJuLcuepWz5LFvcaqehYU5X+yk6XV3Qt67qA6O8B15Xrfu862bIH6CE9kNNObqgp+X+vmq5Qk6lWR/byQdOVhcMrOb9A/HvqKR1E/WbdpfSwu4y2rC7OU3tbkpbdlfSzO5mtM/u1kfDhe+iAtRZ7oQjBc6p11S63UYFvOP7yYkKr9eYg6ho1ccazfBk6gWkQCfof59235HigABao/kgTbYEIx18z/1307FtTKsfIoxIvjYg+f4ByZO/cpKvqWZW4u2npCVeNCBetES8aEC8aIl4iaSZD9JkSzDS/vdl4rW0WwPt1kzDvzSJEgvwIkF90RBil7BakyPUgnvr8A1PcI/eoouLnohPNawn+KOie5rFDjTpLcOVNQro+BNrd134yC2tVsT659WumhhGWvOmjz+L9Re0is9h6S8apk8k/eve+uw2PReYiGqr0+vC37zFy/jVg/O+4kLe6Lrwd2/RMhGFDlhcwHfICeof/+DxrpS0Qbm9BaWdqsz8viOQAsfWCt1zO6JQzCkKeIF2x38TWQpjBaZSyUSXQS9pei7zsy1dZD28L+kZYtvyUnMKrwtxdzcbg3r3fSy2dQ4uO1Hl5DQl8DHzTqoI52zWmn1hFUskd9RCiwwuguJvqbHG0UkHS/gNt2o9Qb7IgdRoD3yO7tkxGxJNBwnUBHfNAkooYeTEzgFW2ncptB3uAaiOxE0P7PB7Mqb7+uTK2nJgFIH3KYJrt5ZaWs0SgFWQkXym/MHVn9VqSoi/deZSYuZS8bYwhlUU3OfQJaSuVdjaRpWTenlDXjYad96AUMsZSarIo++Gpz4XFDI9APVyx7SN/96E+PcPtv9e8ENVjAKaY1XCr479UB1/F8MPeZF9lcq+eXVWhejpEmgNfi4o46ZU5g+lnSkzR9b0JDmannywwqvFTptMTr7mXiItyYwP4lIiICkUuCcpOkWuPyhIcQEGfAnlML0647KbiQyaMZnSxgX86Bfhnm0iEPlLsRG1n+DElyRBOEzwxdypG6Db4jBstTJ6j1pqGishvfts5qj26hcFuxmVsU8cI3EMXzYSd7brcqahrwAyB45wuAoo/j/r9G0UvY3it/3UT3wLcv2zpcOYMkJvfvGjz+pb6Vl/NBBJ1zh6+y5Z3/z++1dmBSqp+OZTilR5+eOFJiKxeZhsJ+vL87f7E9ZvHopuDTf2p6kXFA0BfmAE8FfGAP/L5Nwh4qwIyd9Ce3QM7Q9H0Ea5f3OQ+5Fx7k8s5U6b0Od+TtDPfTwY5f7SODey2TipzprLPCGAEzpnTllzqAcl4tK4y/BbWk2UvCWKB33R+QZt+KI/oF4x9iiRpwVlYOFNyuQgk8UTwgOKwN5p77e0iPUWlZiKXkg1aNmWcaWQi1PKAEcPVAG4HclxzM5VsThmjSFNb7sLq4ru/MwTq9CIkczDMJgUK/vCLz7y/NV9oe20DKYQDCMobcHQH8vCln9deKH9YOX6luHPVyWlKogpoQzxVTGVcP+cPmXrVCjU2B/Iw5jbIPAnomde7IcCIqBQYr4MVCoibZBIANSZmhypSm9GH94+Rscvg1IZHUiITRUiZUdJO5Ev7Kr4IALPUDYVfHsCt6CDWhitssMeomwD/mIYrB3T/lCFKjQqZ8HRkQVDx3pYSoJA35QSCUDO1FZ6OKgTsCq/PixH5OmZMQ6XHNmoKjBgx4+jdstek8woFhNbCJVRCQIVlElQ2Zp4z6ZcWs5YzVqTAoyVUip2KMi2AIvlsJD12JE1tTIYtQXFmPicgAqLXwOnUGr78aZgScxWxGL70BwV92OKQYsWL0mSjM9JDGEV/HBwDHMhSpTaVyTuRGOVdHKpSjsBV2XStbRnK88fsIdcW7QqcD0TVCWuJ4JqhiuHr8/F9oltzijC6QPepRi3B5CuoW+FxJeF0CkGnUCUGgSp1jHawlNqRlhK67iEgxSLcQo/JxODOLGaTxp/rn6pP0tM7nSvk+HrkhlQVmnETVClqEMTVmuC4xo4PqAcpcJooXUMsLlJm4UMXLCR2yl+uWgO6HNJJc+/b7z8XfW+6yFYkHGBjHjUldWt8qWCMyaAtmm5AWnTIDOck7TxIM1P0Yx9AadOVBtAdPFBrKx8l7hD9EO1IQCrfeCJcoc23oWCF7hFmXZKlJ6sE7e0WmtCG2DRFHVCiYZyToY55HftmA3r2DbnnuISUa4XEdprtAamwT7VF0ltFVpm0FRahxT6RDnXWGWBXzEMlEFkRXmtELbwLS98ARQ1MlBepfZqJQM8b+qwKsj90N720sjrTgG5ziKDObc60yozzltm1yLTOZlzapk5ckOLKjEtEmPMNbaoYm9ROZnEHJtRKYpLxmZUstqMgmpMTAkvAfzACOCvDAHCjDp3iAMzKhmbUckqM2qY+zcHuR8Z5/7EXoZQomJMq+LMWskoGVgrzqyVpKHV1cpWGULnGbThCzZEvSIYN/K0gKCAcZOMDKG907aGkNoxqdoxybIdE6sds5IDR3ZMvJsdE5MfgU+9HeNO13nfjinGdkxiZ5dPKYZuzSDlKB7bMXaqOEto6+IocTc7xkAlUBrFIJEAqBlV2DGJt2NSKsyOsXFkMrBjdIxpdkyEYKM97Zkc9gzMlldEcdQdhGfb5i8Gu+bLaeLOGIrh1pEu8arju2ZddAlaBG0yWX+RnYvbdfgqM+sn6oal011mrvKZAHmOs1kJpFjtcB1JuFCNbR/g9G9faPuR5rZVvLh+ekYTBHh6qkpg5KN7RIer0jxT9exwNadcxvnE97Ch1B5YUMGtdk47+lNJORbIRrhswA0r9tg+yk9XKYNarzeJy1ynfXVOc3zY4Od6Q+zXQk5anO2IUzWC9p3cJV4KWgAKUD9JufIG5aBQyhF2qYaqg/8WNKXkRMcPcALYwF8suUwtOW1Pig+bkiC3A8ZpJniGo8SYICpeFAbhMnegFdm18/dxrOvt2nQ/y+cA/O5r+VtBE0yYfeD9EUrkILipXj9RNJ0DaBYQMvE3tIAmYkCB8gYMFvWhwgX6K++PfHETK+22CrzMX71n5Jc/ZA1vEswKqCDmlBKZcVvlzHM2ETR3qczvozIDarjiXZsR+ow7FtxnNHkkOFxH+h29HrAud2eO844O/7NMRQZ3AWJzZooaUdCeN5dcHXyXlIWC9UhtXoVQj9yTLFrQkx8pTtTTG/hCU/v+T27V7xgjnsQXlN1R4rU/0Z/KXHz4J/kKcZ5g7WEsow5szqm4xZTzZZD/Q298zur8IqEQe5kAxPMDPPFF2/LzpyM848pFpP22sjKfE9R5Z0s0b/ppL7urAt2F2xqw+B4rXCn2msiyvOBHfsRnySkCWz2ELHzfPNTLYo37m/eCSa4KIpAdWCgez6gL6biQTZh3BrpXTq5twqMdxrkyxZlp12SCfuHR/8MPeVwwKKNC4kFhsUc4y5ryJfTPfKSXpVD0T7Q1PtHLIhy7+AjSEcsp2H2CN6ZjzVYuhHkx3AtuCq6hhAruNxwIOyZ9rq0OBANYdXwtYRJ2jf3nLwBSjMCP9hGANmIw/fb63a96a48RiISwEjoLJorgAFJWgQirOfcVkOpA+ApGmK+g0EQQRyBa8+ifT/i9jrbqnLGvZdAVX8XVCb4NOSXHZgGVC8uhoByWQwHH+mXMsCFgCdGLwVGyd42eb0W6Gyc343JTcL3mOkQ5FQrVXR1EdXnj5EbcXzlJbpzcRIXscRyc1uU5xZUTrCm5cfLN6I5vKSo75qWaorefKKoZFdiGuM4HBWtl0UEK2et49m6aPogOiy+i/3LELBcA9rMF1tsVgHe8eIL7x/b2Xqy6k9sTfPt9evsavj0eKC//49opLyMSormP7QfYQTq41UmUpB3O5mI4eLe0jUkoR6pcjzuSpeg5lXyqy1Gzb1OsAkfboJvFTQQtdIYXNra9JvK9RvYi4bhpitBid3c89mvPVh6DZU3O79lPIUasvN93yJ1Ei3qDFqVd9YzfTN3usu4I0YduPbU8OTV2MhvCslzgDCYxvvrEozbT3QT8OLv3ntMMZnVttPpLZYwHZhHU0DO0yk/pqvyFZ2mVMRygZM8qv2VE3dXVPh9Y/n3F8rs6LP9bi+Wv7IElcHyH4SgTTR8JdsGRIux3vvh3DBzGX1uh6PHIkt125pLn/sH/dOb/feKp81KZ27Qyt3aVeVXLZQ/tVpmiZegzQ5Kjg99U57twdaK66Vot75quvFMt8a7Zm3bvGxamC6ykyDN1RpkeQXD89H+/9cFdWRG6jj9dpihQh8KXPvB8RYEgu1fVGPk/UoCwFIrC7yYcJ81rvizg/4ufGb6O00LPh7Kt1k3BvJmogOCx4711DpMZoqX56lcd+pGI4M9DYjgGrwMbOI0EHZM1Kl3M16t2F2TEO9TugtMICgUeJ7Eag0I0L6tuVB7fP4rv+kocFVQYD05wfcu9QHGk89DMq9R34rXZ2z881MXAaWGqeLFKef9yP0Oi6hQI4rantxcfQ4ICHT9o7ca4+NWtJGG7MUaowH3BD5nt+CtsO7rWoB5ajq1NWkdjO8rbkrvU7Od/uWdXpeRURT3BPRzwfWIGE783g2lcz9P97InPfgbZA7NxEs7+llX21ioE64yNXa3C853UIRvj/Kq/GOFsrQE0F74Yf4rye30GwdK3huvXCWXBrp6O7eppa1fnYlfnY7s6p+k52tWhFAKDOpb+hfsjFJ+TTY28LTlQLnsiozpWDOLFW05ymh7qfGhjIZPZMpDWW5qqA+ITE7NvnRlu0PjqPmHbBRBjXl7tZ9HlDWwcjCOnTwVk66FBgduAJYHZ9e+4F2Y9XyhGZGCH8jOkAXHXWdHRwIr+SVclq/th6lv+14dmtKPUbGK+F5s4WeLQl/fN6FTb/kdbpv5RZFlhRmdmRgNxWAbCYse9Gfx77xFJ6sSM/QhaR+s4tLMfo9nm7UBvvlHWmuyUCc/o0AoPew2tWsM50fm1umQYaAgxB9l0rlMKcAQEX+6ENLY2ht/7MuZttG7SmdWJGsAlPwJFafNSzeK+0WtNDmNzpi1+q0R1yl09h9WZwLeq04RqCnPDzCD5S2Cpk06laYQSjFZaRAmO07dpOC3jRwMExlN4VTDHsj0u8Kyy/IsnnjNkCGTGKj5HfLlH2/puZRCYoN2I1vK/8mQvf9Ll/981/zOUw55iYu+RNr+fAYVXCwQ+UOddD/tfVeND1xf4tjhxAn22QIe9VYcXmMahgXxH2Wt9++xFZ5Qrx/ZZM7mzmol8Aap1QnOaU/Lk7RqerBLtoOF4ONKx5ZXU9POlJxk2t7UOA2TKSGWKjgwwYjBZoI2irRxTyWMyYQK+8NPh3kgjoZItGyp2pLi4bfLYFwWAGqOkzY5hrC9hqOSUCN6u++JpJQLsOq9xNNv1yKajK9FT79aB2YM6TsNIq+hGf1x+eMgGgX7oaMNRCsUmoUKE8HXhH/In5WTdUWVXY6U1V/CS+3Y4FtjLJoxJ/QhHptxOs++pExvvoB4ozry3i1N13lnC3yIiO38LImpteIt/x6p1MNW6iqU6feP9r65L6HhzRg0VH15C6hyyAqc0KKPRMkbzQei5mBZL767jw2jybbwUuj0c6Nj83wWcwb9CQz+ktBkhABLdNXpD00HF38JKeQG9DJqbsaooU64St9449Qs8+yhe1967zuV/4mXyFXRRKJ5RaCq0RXLwy68U766nwisP4bRjvBQmOsnjdGwLeGsx8g0C5IjRFidPcCHazh9HOwOrszgklnn+a7VYzUa6RoUaRiDxWSxWlWJkUoyQYWy0qkBhP6koFOiJM7qFIj4UkEI9k/bkmpsfC9ikbR2hEz93oKar0x0LV7k/Y473hp3ybYiIKFm04aiR8ggjBVmTsDBBWSxNKGn4EC9yMopixGXoxjWWEWlGTkbPU3LiOMjJia/CNY4c8tWOctLr1K6ZXVO7JrhiWFYnO8PBkHD2tcrVl0FzY/xcAMOnwC1dosk0NtRBZWZo9xh3/9yuT2mNhhg2h9OXz6BC58FCPHlJ/4L3ipALIenV/hBT+hO5Eo6nBoACQB3nCl4VbMD9tsAJ9TZ5+rAhDrGmYoeSnboUKi9+62fQLPpQOyG5A8kxMTEjtIaYapGf6XXKmGCud53p2dqOQpphLWIIs+EurcZtfAlEZEN5ipxOjbukSIzZZ4xONTcP0xqV2CganBjt6BSTE3K28dHB6WpBMy6tqNb5t0GxzJ2kNp8ZwVDUWYJ6enXAMPJuUc8ULzHv+sI/UIclTwNxT3OUtKbeewfvUXj37Wf+n+PdNyH5gnexwkB+SJ3E5iAwBdmnTiKlSyiJA/OElGknTShEJ+2mJpBMzVDYYmr2Lnp4vPv4s/p4OFpHeIKjDT6WSrBR4XrlJOPe4o6KkZQ2N+xcOZk0n50gbmdDZ0ccitrEWVqu2igdqwq8j/T9AWZjrVvSBDDbh7nqwPJRMPPzLB99Z3/Wf3ESvCqYVAnSFpTIECAYlgTfQmlE9BM4Sd+Z8d/fY12AeoQCs4JQSQ+D31qBQUEOqtA1h5oDKJC2631iXiJyHNpQJ3IDmW+yZQZRtem3vJVPbMrOXTgJXEGbPGMJK2gTRCvxiG3W8RwWtIbUGcSGJPEx95taty3abN580sSvvg+lAB3Wbuoh3lt+P5pNmOWbapRFwFtDqChoSkZfY2EYg8VnfkrGhJQR/55cb25XgQV/BWLcNRMPgzMfs8xq5P8uhvD7dpCVNrchi0Egi6NytjISFI8AdfBfu+Y8mQShi2K0BwVcdS6s1AfcxbhbI+dJg7eRfFdq4tnhuaTACIpXIV7NCCIyWHwSBJPXwxWBtwk5/tMJT1VhIeClY388ZZ1SUxoo/+h8X25XfYmypa7C7yxLfKq22ESNPjnn/NsY4Ms/I8LhMxCmOvgtKTFQdaAmGDQm6svijdXGbpAeeNn9e0KCSTMEhBag+bf3esFv3P+sFb0gxABF1XBxkGmitm+gUx4YDn9GVP0LQjc9Ft7XTe1ec7gOJJeH/5F/h+7YaG/tplSbh6Ya5Ui6LuMiLA4IQL6YL4t2sBHKiBTGxD+X0T6/siZMeZCKWMzLXVbluCwq8ZIeQNjoFZNvrsAHKZuJqH8EXSPDDQ0kKTCCkHDtiC/5E1ymO7V4rB/4kAiRoOMEwM7qdIa2DbHraijNjBUlRqYPBaFt0GxG2Cv+vq4FCBkLCvhP7WToDA5j+SvT2ZxIFPRrzjgL/kFK2WTv4eK2y//5S//Nn1/GwWNqW56oHS9sCaEeF78J+q8VAtdYxic32/KEGZeSLZBsv6XZlLj1BBI1xDcnWP6vqJ7idcCwLIrPB0F4rDO+0McDuOnUIYLE8G+EmJin0Ls1Qu/WCL1bI/RujbBza6Akc2EEFHgXRkihnzALvcvDBwZ03kJQDEAmQOTEVPhG3/ggAAkBwEsK/Rz+QZvdDwdT+TrGKp4WOIkzHYp8vyxKGNbs0AlFY20LrsaHsLURwgKyCXaGCQlXvDDgMlZEDrxCkXjD+6PaNQ9/eXKkRowiGiaSQTCFcLsv3ikxVWhZeNqDRlZpZ0/avg45WziRhTYK4Ne8X31AuIJ/NC73w9KbX3J2ZCJFJmY7F+zxlh9WoR1BGl4e8Mj4HT9MIMWu2MBNEOyNDbnFhwSfHwnC8WY0ddgN+55qo89ugXTzdPJf/1exQ8LXV4EOPILCi62hRoA32RFwfeuf9cPA/AxjMylOhUEE0gRXTm5GuaKJrHvj5Y1Qgyy3bLSCBFcH18vnq4Pf3V/HmhJTpTfxc0GB+g9gx8Ccgd6FdIsAUzj0ijqC7w2yGDPfDrwT8GtETnfyBdlFBPh6dwA16hp0g5ThOrfgpbsd8OAtzYHC1uCq/xnU+mzbxXVIqg20+A3cL3kUi+JfB5B+SiKQMxCVoaJMAJ+uQ5NkGBRrZ3/KGQrH8ooHwr3BHgv6drwnOe6WEu8uihdEQdQqHurFFOmG3LdbHV4GU+dgsRqgIwd5cwzyZlB7+XC3fLib86qbnxxPAog/H2ll7Oi0GMcUNLq4S4Vrmje/QO0POKAnIk/5wlks75l+3g/cYpnxAen4jaTnp2JV1JLzw3xfGxnpR36k/3A/MgaTeZGajbGajW5ppP/hF/SMoohCAa59FU9tBqvBplbA4X5RC2wUrrOqm8LhLLjHiGoP0RDAa3VHtIgVCHLjA4TJM6yAi9omfOC5kAZLHCcmvinfL0F0reAF1/YUtUmhWgMoQx0mKqc6bnVrio7jnXUb3Jo/JizwgIYCYEmhFDCocIpLEuRb0WSgJ7ZvtuZhUfr5X0cDDVrDJ1a8jfrNx21Q4xvhMdX+rr+S2t/1mGr/ix84T7X/X1eFFkJvKxv1esS7PvfsoQsCrAst7W1/frv4Q/0+Ctr7+zCDArW9MSgIQV81OryZGhldVPRiqBR2g4T153a4H9hRi6P4Axekx8wcxvAyRNNgnOyDHEGK3815iYa5iHMJtq4DEWDa43Tezs/aqd9Nl0UlOnFXhtI80eJPIA8NUKCWQQHzwWySUIxuP3GccIU1MGgC23XouNDo6Q8+OoqetjZa67bp+OfACFWKNI69TuHdl69AT4pLxAfnjGM+kcs01HfgSUnwkaClnyY26ZCYdNCX1L78RXkpt78DvPRzZiwrkeRoB1lqFYNpJZsvR+ViR8MqKoyy0Jip3OlwJKljwE2UwurhhOSGMauhPDijQYfPp8LVCgtEGnnPgxW7ankV5kzig7IR8MDXCBFvDiI1QpPjujRXG7XzeAHvcLNKscTqcur6afM5xEpqL/UtC0YyUwphNCBAhKFDaxp3YVzNyz7S00GRCgHTJ6s78y9FQecL/pWoF9ighjpaD4bnf4k6DB/8tD8pjeB34I+Lj8owVnLBoG9gXrXpf3ag5ZwlUQdbJF7wxU9a9rZYaLvIh1iBFcDBJO+k+riZacBjT9580qNWJdJCVYTckUxPGejF1UEG37ADvxxS7iSdp2qOR+ZnXzwHY4iDPnThRz/Vgx0bbAWJTruJZ3HvtwUcUPfgphaw8AVogF9bQFB45FcWgGFUlYzRz3QmIVLokwF0A134ptPPMPa1pWjSQWNULneTxRt+evQ621n8gaonHZ1hiBFh9IcJhchHmj/c62TXDDsZbAqx+iCMoipSV1XoOR8JKFJ14B2Kf/aFF5hD0XcBiqACot4+XV3yZ3/xBUsOj6KnBcWPuhhCH6lBG+8s4xoMcD3Q4jpZgnYuiH7uC8uIUugdGu+MXMgR6q6bmom6GHW1+WJtqyqRSlUBxrZZFfteF/pe90v9XpdSZEnU259qtF2/2wXoULrmCOJW3PZB29sC39uQovVk9Rk2o8A8ROhtqUa8Xc+XVEPwpujvCFgUJs0Qfrfcx37pU8sQDdRlCuqQXmgIika9aYxcqqCytjdNFeYBxWuTLxlYpIUJ+vgeanGLn2ASagqI0q4bJdpzlILP94OMfhdiCGaFueYVf+kFtGpB1/zWT8CtSJG2h3a4P5TwHb7AsNGZaH1dBQhS6zpgUPxIHpTHJE5w8h26C4uyhxO9XrRCqooVx1I0qVpi17a7r/xZ3ndRfuB3j/ddlL+PqxkXDgobfz8RfI+odtAWA6o6mwUFHr3ehMM7hOmU4wFeq0xoE6orS8cpnKb9XGWKeFrADyhjMnysp0AyM48VHmRZfYShGwZsfB9iui6DrqVQYr8zyrwrS5ZXfeQWynRAiHWDt+yo1IxIQUxp6v1gePChPLAxcsrUfZCBvZ8CKyODD/Qfs48Nd3xeBRxvcvd98LDJ3d1wu8nd8QB+NEX6EJiY73g0gPE63/FwBsNzubsLY/FMgxsyiY+I8PdyhyAMJLnc/Wj4BP4Z1eXNCX5zIuT0r0F6/NX0lkbJqngrDpehPwkONyJ+Xu5uQvy8fH1Il2fI/cN8/7DdfwTRZXb/CawMgoUsfHSFtrY3mMLOYMKZEDj0OZJT0bCe+AxfQ0x53MlmOqejYAfu6MwWSpcW9YJDzCmT1gbnXfo8Patv8QDsaVhdIeUS0PrGdpL+S1+dPAe1RqYuH+WcFPleJqwdDGeLq5nSiGYSOlLydw2RMtpd1r6t5y0IAfArwfr9KwBgurTc4ZSvEMlhpyySz1uVAB4Kihq6A4pEXHsoJNDFllZ7slZTGyag2w76HyomFjTOgYKhf8vO4qefO17KZTwg/uJMo+KEwkonfDgxpUz9t9kK/y360rL/Nhv4b7UQKTOgSOVOnSmvQ7gqr+NOeR13xuuFbufheZaxVI5G7WJbhxbpOrQ1r0zfc//9SzKq+JZu306RdGCx+J6drkZNsHirBGeGzVdxAvmdEJdV2Dpl/0hgfIf3ga6Ack5rvgHOGbj/PHP5seSHuoVnD/l4i8EYQzW8a3GlOhJHd7fwbMXuOGnzzve9oK/kQopkYiyCPaLKBS8z41U9hVSVQmbtOFXPUo7oiEKEtzOt4Lod0Xask1JLgHLJJ1z2fMLlyCdcvl4Kbrj81oDQaQtKnyRz9endfqTb/JvX9IL6MqkQzDi1pNuxEml30VYX6GbBIQjBFovhFhxkygavKmeziLbiSsNQICCUpJ6Ch5SC5FXi+7xNmnp6ygxDBs+kaBanLkTMcSEzv4CRkZuFTs7rpETWd61elpeRQsubcqdho9pWcqtSvIhynQDI8ZRJrSvnW7HdZjnFyteJDkGe0juh+0xdPtjtPHx3ox5gKh/E67lPx08IcwRESr/7TL2gnNXde07V622ab3k6rY9aev2t1UYZchyZbOJpZVMO/VfNcb27muHCWy7i8r9XpUCtNrpyqwWyrUGFOiqhUx1tQMk6mosKdTRjrapt97vBYM8ocjZPmw5mfKtc01Lemz1+CuZ7B1n81C6gWZa0yyIaHo4btQOcami0vShT3Kkyxd3Vk5tuYmXqOnHnOnGHHKZg9V4VrDTZgiAyeWFTORIw5dJe/GoKA4BpZb1XrUxO4jkj9fdYZJYGtqeiWpPvnIW9yLXMu7SROKcUCjvVQL0Iu8bcUxcspC1QlBLKsSjtW7eR9DB/tWmxgrJ2EBHK9C3WEmmMMAQ+8jbXdGknYlQPVJV4qlMR+WDrnrJKVT+lq/RTSulAP6lk60ANFVVGztoEJajGwsvOGnPWUGpMOa+Y8K01tWBQmGaCYjXTGDJUh2a4yzEW06mJP/pxsKNKV7QwqPfdZx5c1c5JGVo7y5I4A/DHBkCyV0mh21Id0in1Eu267FlKNHFOIakmvhl3GJOFlGuQk+svi/qxB9XxNFgWpVFhNtRIi/+2FWwca0VtaDOWeKJWBEUQZFWspmOVCGqhBZhGun2SPPOdjf/rqdE+pOnlbJk9gX8UQe4kh7XvTqqiC2cJQdpS3EuUySg9ovKuWWs34elwu5uRcHtIIYsY3mNQovzR5hie40hlpxBnVHBEHo+cLLiznmM1R3SpOCVRTHTpqfu72wfb27mg7j9NfQZIXYG6Ac2JLYRL1fDEt4dwi4IWfnEMSkZ22LWjzJHPHLWZ0+4IRWTmrD9/v2QNBKkWULACULXWg1NPUdEF6LuOoDS8ipqQBUW74ZRtWYkktH4Eh4eDeAuh7hryrYmL2W9Du8451ym6Yxbi+wIws8Y9U/fnqxc7eLFQ/GmhVdDJa2syZSFdTzOFLgReYDE4BHUthiq8qeMP4nVNYB3KyDvCtTQ5gP0fPEfiRtJ0wOqZTp1JKTRT2AUtZloAEsKS1cwgE77zZ2BZIP9Gy0dK43ofE2Fft8iuKjvuKu/wrLUGUL2mRslom0HLkqO21Vc28tqgkfsgqnXLO2re+dmbd36kmvebd13YQpp33vBnad4555xr8677hlzZyKuaF30RQyd1ODQOWF+HZ7xHr8cjX9CV6xT7G0RlWtAMAGa01hxQON2befcGoCPIlHaYFCJW7V9D6hRUVtFIDuhuiouBOJhbg83H4mD9nMTB+t7iYP71iIP5OYgDWphiHTHL+kgijGFV+5Ykwkx69p4sgyS0doTFyQz0m0mr7EO+fcIyfqe2Nc65piyzb1kizAYSYeZr8XUKhXgXoTA7i1CY94XCvBUKs92EwkyFRycUVvESREOPm/YtSYD5nhJgt3bdNxICHkq1tiQEZmeX8bNOxmuLnruMV4xXt+uwRVfLASqP7CoKVN1HlLbyQMhcbSB4dQ54c9rnxYK9We+JhYhitJFOLWK3cspwWSMV37CjvgeLssSGMsfTPl02jQlgbTQI0WjQuX2/X6Dfz7pP2iTVHJYZWmSftWsVgfo0v1M4IRM2Qx/pNulKlLXyHdDZ3uoYap81pUrxlgMmNPNMVErmrqXnLd7TtqXBuHZAC806ce9b2nBiIkx74n7moL+mdyjwBUXWxlM02E4PfQYd6NkvWpHd4IQKJ0f2ZWjrK6ChN86FlzqL1Ay9hbQyFVcHG9W+vpyIO4EgVdfNSUAbubPvtsflf42DdIU9C0BODNmInAoehWoWa9LaqQOtEqIw1T1q0SIx1akGLKqmCXthBjH0jMYxIIkUk3gmSzyThVxo9wEqzje9jTaaAA+pQlXxnnhVkRgXqkYGW43SZj5tZmkp6RNd4xV6gRQ9Io2kcAhlCymsEbA6KULOS2GEGg+z42KxfXgNVgTd1RliUtiWlGlLaQLNDqpJykRWyaZQagkFkIQZGn5zBd03xnRPPd3T3eme7kL3TOnVJ7B/qaPWcXy7On13pStFnosDFdWh9nC5s++Swe7Bzq8JENwSCDABpCEeIvSVAXVeeYPbHNRTfYFBWmB73UXKkzbhLuhj1IkvxivgFCVcph7GjFIk75kwbR1DvgAR1JFBAq3YOt6/XYlpgLZzeI6AWKQxwNqGQzytDQ1BkXagpiKWMGI8YfB/AxlKMGFgsnn4QpFPKB0gXxja3TwuLq6tRAqME6vEq5wLdCndOBhqEEHrer5RN/KYuddXkfpGI/yJbaUN8vudh2uu4JOke/PNd2PK58jhnsf0U68eLIMO/WxP5LfZ4/fmLY1FGeL9U6h3NEh0pnYPYsIKzkjMUB2BgyEx/6DjmHZ44/gjyzvK3ngfzOjEuxGR93jQB4g33+cDVAD1WlTn2yga+udSrWk29Lhl3kmnmYYeusTEvWRK2kyRuukGgWRxcSOAQHA3E/X/VypHuoXgNDlNE50SuKMOthlCcwzB1NvFN7dZdfbga8x9IghxvKcRITR//0fy7jiRsHmBBC/I/IE/S2r1aW6hdwFqcCA36SfByjbloAEMi5e+3GIKFw/8tMcWq1PACQE5nYpi7mAW/uMkKKAAdZJoSQM+BR3APDroyL95i6IOU61BI7jGz0CZ+lZf25dyZOAvt6guVPeNLXd2atdh/sXaXpWsMyXrdaotbfIqJhNsnMxfDbQKzDcD1tcqTve5V8geTkHpLKRMwfmincXthbIy8+/XmRqhup6C3Bvvo/QNx4FWKO6tKa4PMTpqyVa50qIqTNOkegxIziIDT4crZ+avE/9XTumRqrTRjB5OJ0NWWe+cHzlccVrwdZXbpuwFRJ4pCFVbSwQTKmsUR1dZZ+0rSjncRSmnK5WyqeJMae/Jh0KGOtiSQAerCV9lqGnGtVcydlZ/rpZ+QiVEKdJDDzSC1lN04vOQuXiPeLbC+CfUIzyQvegFMFQyRQ9+bOkEk9UKg1yAiKEEygvi23YUt5WFOvMpE1477QbQfv9nOfTDJjtzwnpVPSwz6XS1LhQwoxNUFqvTG5xuYHD+duhnF2HF+H7bSHYaHIq3eLvIG3R80yYaA5KsP6CNNjihRQFq1//POH3vLCBXnyfSlzJI0p8qXSuWFqs0b3l/tLP4c91zc8X0/5EqGsi1FSUGvkTUk6LDrZrXc3R8wIhfGLkLHn8BPEDnuVCW5f0XkLF9DOzx30fOYUun5dhQm07rBRw4CzgYthVKf18XAwAV7hW+39Bg+VS20Ta4atFQZNoDcr5bPP7k/gakUTcPbLsG/vOWRhoJHaBvd/OYQTe1E/WXKjgfuvXTX3jW0GawedVE4+K6mgVlVFiWd/SzOG9Z4LaX3gmrZpVbuaZAX5K99FHDgUYN424QE0xO27tfHVtcpSHcGr5dO5nJD2Q+lsN/64ASWWvjKOFH7AkjlqKnGQV4drsXOI5ORlP1A2cpKD4cBNEx+BKPVgnMxaOwRJvsaJU1FnwCLVDDuFSW6ob+gwVEtpPpOFw4aGNbJVRIH5N5OInC7oOPCtbDUTRMrKBpFUnvlsw4kwKRyuEdIpvh9FkGsNbPXzwXmwd7gRLKllao/+rQ6dHujdwQKXC1ZU3GzpQMdtRNjDFbY9c1a5h0dEzMxuHAfxD/Zbadr4ge20FJx5dMUltZhapJW4d2XoRm1E2NlaGEv7l2X0HtBnCVbj7Fl01+YI41LR7YijewwLQvKo7HXlZMMBe82ZCuDrpy8pl1GQ7i9nfXuX4ycgDemztiAbsbJ3+4DjSR4rOcgo16OyEiAdHwqf38c1ss6+aRC8JJUFhkVILEmB+8jx8DzjdRwtsXRXuCMKLs0ldg1ArGm6LCZZXrTF5VkMMeoXXZDodtvzEw2aSeNTLQiGjGB7PVsxsnNoydIQ+7ao5acFTDJ4gJS8yB62Y1w0r1OScHKE19VkizISSAQHQWkvJdKKj6Q3mJSt3XW9FeI6eHpjj2YHn8522pc5Q670qd74o/IraQbrAiA5V6YOt2bcrfXje1enUgZ6ZnlAtJD9fFYSoQeQUSHF48DwDrQnYbQ+JH12WIiVV5W4W2B3TLXBsCEpRrWOo0JHzIVDZPkdf4zA8B9vjQFoqQguvHiPi6TptE6zptfmCnnnZ1nWpd50erqdY1sbpO0UhIdx5gBNpEfi5mQD53/nClAoAVKt+df8DkUBHH9TimztDlLjTXLjRtJmbZFw2B+7SlCs59zj1ovorvuXCP0Dlx4PTr4kCdlK8c6gPuQ31g301MpKjdZ5UbU3zWUnwGiu9RwWRcQeORoldRLMR/AmYsQuzfh3MSmOkX+oSNZtbtFuEsG4zbPteKyH0N5lVNkAbfCp+zdKmp5ABHrrfDMGksZLI6uR0RFTNvFeuBvMdofk9V6sSNRHyiRlppCYhBWPj8cJ22Va5ypSnNTZdhQCdUOGqRdjRXGkAur3GyKSZKGJ7N31NJ6Q6XdOZUtWlOb4ijTX9oqZIMzJkZc6LGf7IukkJlg9N9u5Dj+3wOH/TyCduLMBMmYYc7M811eBIWogIrZkGz2OyaNRTBeqrewshzPywZpRsklyertdgU2O2XOYIeNZWGIFzZp/IFSuXyHlV1GldbeirnSuUcm9TlHZUPGJXLlsoHKDcq50rl0qicg8qlUHnWo3JKuVH5ApNW4MgLmMrW0oIoM/nfKG6bHW5zCKS5BnENmEGPQzN1uHVYGweNYS2gZKfpX1eFnFWJ4a6sVL2Jk5SsIpIkaJPolxlqKuLCgYctqdwWvtLoFzYcX9kDAt8DkHt1Z2htKwsQUNEnOTAtpcxc7MAn8njDA3ie8MdJ+XYAOJjPMtqIMUA1KeXHEuJ6tjW8i+X3QbFrHv6w0QSjlwXtQ0X26euHAxsE/38UzXm90JTPpGqDizeWrNOotU5/c70b/R3/7Dssjv1L6xLaHKogRSyfvP78OngIsrrN8uhnkMVkZ3Tj5I/W+dMr+ZtfHAkf2ss2KKri3c3hGDWPV9vBiZi5x6psLzs4g/JCYrWDM7GdNQTYvuAxK0xlQ3QFuo81rN7CVheUZvXiDIFJrd9mIiDrOfoFdjKND8OA3CQxAdasX8RWV4hz6xdr2pyx9Ys1AQPDMn5jtaCc1jqzWLOshD8bw5918OMh/LiQVQUgIropGy0l5ehHOXeigBbPezVAWFcp4EwpnfR/0JgiNitrfue0PAzU5y2NwJEb3ETe5sy98lfilNJWkALYPLZs0aeyU/6lKv/QsC2ZDFQC1ZiRNuRRlu+Z2gYgFsrRhrKmOA+kUjp5ihmpShRfLlNsyDYlmLk9h3APinEyJ8kciAweNaaMir9qKh4bUDFvqZivoGK+ior5iIpe0Ode0JcEDWHnTuxGu3O3Wt1hcmOr1cFqdXtYrTNP9Mq1hO/OxhySuSfsY347d5PARUW/AZK2AX5gRQPMugZIfAM4aYDzACPo5Q/2zn9ecA4M9XMH4wZgyvB8YBEaFiyv52X4t6YtiiaEqNZuhfC4HQEN/sRQxfqZBUn1Rixzvr7hM4mNUEKsYMrvsTEKmFLHJwFfwmdWZlFXm7j+0Xq1JT6oDXFn7Nf81QXK3mBzEzn7aRPac5O2RD0d4LsD37pNm4cRraVdsACWFxoGuiuo67oErf2PwcTEQSkWH/rjmvb4enY1f8xVL10VhPWMj5+fiZQQg+4CiunCHW/TVQe9WKkzpfpUBcsUgmXaCZb9I8EC29QEy/6hYNmvmnJawNzKduggJ53t8PKHbbEaCRf1mSqE81lcvlQcaFjv36vQrCt0Oi50StkuwpP2g3rbUmiJQnMt9KAVGuGMa3ngC4HsRY/s9UVidzJapHeOLhILFQ9c0ljWZ4pu9pjRLazdNZpiTus000zI7Y4wsvwNHNJDtJ75OTO045y6RBk+Z73PoX0O5HM/Yz740s8TyZcmtMLHGcthifYFfTrhPu0HF1pId1v620xvtazlgUgJk6E0GdAdduu1n515u6UDk9rRAXJP2paeEjVE/MPxz9ZLEXncKS6CjFAjGCaqdd5cpg09HsvY5UAlV9RN/duZ3D7IsqcDU9tC3ERN5GBlsf/UB0WhGKASkQM/5nJKIaAvj4F6A7FIwfUO0KTEhkUJA7NincJP7pg5mhgV3IqBjxNobjTGGQAIMTp6rJmDXul1vgzCatwE5wbbhmSorApaWSZ+gRF0Rjkok2vjfmffxx6pGI5EDJcQw5HKaIjhshXDke9kYyEcrRTCUV8qXmg9Pmo774WdVLzQ5oqsx1/opSId5GQlC6eRCDx/JYCQZy9lheSKliVXNCwlKhhwJICrg61kjJYl42OHr/LQe0YikYfRCnlYjgVe1Iq17sscRSK9vtbWLUzaQR2gh6r42lMUFK0QMEtFOPOCJoNBsR9v9g8lFUXqRtzVOej6zkFnzsGHNtotSh74H6LHy+GzYedyCAf7x5eVE4ASBx+bE0LdD1Wy1wghQrbLmHw2IEgxIEiXBwQaS5WtdDHwCLCwsqY67Zarz167oQ28zK0Q3MEkqYoWYqq6VFzclDaPqItk2sRHuJmCei4ZaaYe4PEoau5HUa0HeG4e4OFEWaqYwADNrIwqk1KqGVLzosINlQYAI5XjB4GpeI4QY4mhiKVU9hGbj/14855rOvR+PPWc7FmEeyxFBIMiuLKssqWGKW9XpzVEO4EB/DzLmhrpz9m3U6W9t9gTAj6bTpZyOa84ttMcQ5inNpqf+pt0U3+KZjv1t7Zq6i8FwbHm4gxCym1gK4ojaEJKtqvFCoo0Eaz+CYxvdHv8bV7zds65oRNHJYYIG6watAp1ik6xKeFY1ZYui92PS1RluFB1AS6HqgO4XMPicgbz6yDXept/F/Hv4m7W4yI6eIfp8m1xYMYtUZynRNqgwWQy4h6bEyt7c2IXdpQoh7w5LVCrHc7/hg0eINDc6KsZm6kCnTb/1wqgBzgEQoFODWiChQZ92Gnzlg2cV34ilD9P2h6Cz1rw37cC/AUd+KwD7+Ee3wd0N2SFx+EBVFoHQRIDTclhD7q6xPg3afn3EiutLYuSFWW9A3WwMnw5txvux1bgnh0VkwgCbARPrKWiR4OwpcF9K+Ds72gQrsDrDDfZ4yjhTOeKVQstWAHt3QyNRtCauMXuB1fA2+rgxSvgvU+pdp6g/bsNjQHi24cMsDJb0oPvWvg/vAL+5tGqoqS6RMtwVkalUC7pFfVngE9Vk8iG918D+IQuqWYGftgjZj3wn2fwl1DytYOfDkArsC8xsBlNO2D0OGH+GXwuuelP8UrGov35ycthWQMnQTsh9ClmBlRfE8NoP2X4lDa/y+S/xk4I0KcDej7AONEhfW1PG3gKkUig9xNep5/saRtPQT8b7v+Q70+E+kn5HabF30r+fOh8c/sYWmTQLMTAoM1M03XQoiG0WWHtOlXSIkLrnktfBSHIoH40OLKzwzbpVQFzyr1tebM+N87AjePywI0jRp+15Vi7UcLaf7msyJfVGm1FW8VZT7NPzyLHpgM5pqW+h0tF2qIH5rGLw/eiDucqWlejNKeLd6qLGdajwAwJUe1CLI+iP4K+WLav2IAqY02MHoIldGI3blW59dxNwod0hy12PQXNifVcp4frGia7BCvs4ESxTAnQ4qx7vQZyTCxsTeAp5VU5RsuX8u/QyIOeS101HyYTAthYOzgmlcrm+AIGsXx9/galuB7aYcT5Nuf9QVJd/FnlwFcLqucyqADIuYw1yupQG+D2DSusepx3f7T6BuLLM3F3KVy2mPn+Rj976Dj/N+EVxBvfX9afOYyCEH70JRSb+81grGFCcE9KDytiZUs6HmXplkXzNi1qXedc/WqKj3PwAPLyw+KPbfUD32NgVfTIREoHfFU6cgm9wRee/KBL0QgaefzZDQt/N/ldRkKrMsAFVf1G3LA9KfW/DOzx0MlUDNTmLb8c71SPw81DfFMhfvLf8c0FuHkv3xxA4hdnari+78sJhof85t9z9ouQ5r9ymstRZ7bH/w6+IAnRpbfTNx2tHk9h8zJm2iu42IO23PkgLTBS20cHec/hI/WFsgWN8CJRKNdw8ewHuDaL5+CvD9/59llIf4c4/Ran2qJ1ukKuVwxTM6xLwYtbl4U3Y0kULrkyWrNxpMqJqtTcZ2jRQwhLSOFEvZJKXK6SA9xTupKuOiF3GCan5kzzLjP6BiukNNWYHqVUR5LpCv40tkxb4VrS5ZRjHl0XRtdi6csiMx21bl05WYiSNWlYQhrWM5jdL8GUKGf7HA8Kr24qJF2vNw/LOKCgzeoSCz6T0MctKmC42tZ7Fzcl8Y8lxZQK4jwxXVzNJf3cYkMopJjmcFogHxoPGctGws7XqTB8ZjuIiWHE8+ZjE0joHVRD6PQX8owlEFR2fo7qKspI767pqE9XoQX+ObeA0F8chyVdQ3qHRXSe8H7ltsq/xj25mgu621QMcM07XOnqHmIJ5cAm77DJFRtygu1jRarBiGC+XV3Sj1e7BAtomDeur6dNRvzDef2eclNQDqViwDrFwZ1u9LG5Smmo8Wg07ddv3tav7Go2R83mXc3mfTqHvSrNfZXmvSplfljbJzc/8Juiv9Da6rRF/LM6ee4s+jUDU2ndAktU/C2vW4hdHJV7AmBwFr7patV8xBjecDo7C40ECj1exndDiYWNViMc/peaMbuFh9yOGfkmE3AjiRZRKrJMBRu88qsL/EaguSK/Q37LipyaxQAgp1c45pgh9kDcefSZQ/VTjNyFMDjKvu5iMQbtpboWmlbskp3DYAo61EZBpOLDmLduWqji78RgQF6pYlU1WqrbaQc6VgpiBEylzk3hip41ZVpTbjr8EOXQqaXzjs6cPzO6c1Y2sGrEbulsABARZeSHrQLgI28F5L7c3Kvy1IrTxEqGHGUhNmkCZVZtmmrcov13WOX3cYOfYQOY9V2dsDJg2R3eWWcyTCuI36zPAuCdoBWPSYgy0Ra3HQvuH4WYhA7gZhZb5/usP85FRWHsMUG/fDU4GHswUIlTjGLVglNOJIrw1KWvQQJ7vIZyXP7uKdGPOf1duuoUK8lrToHH9MDHss8phWBFObZCVqEt9bpsJsYDOA54/F6q8zUoZXmyJZU5lXQ0p8JdS7NDXmvWOgeondXTNbBemuDcYDM/8+1BPQVwawcmqjrLgu/V+McNZHx4wg0jxK6ZoDG/zO1lijpfhMsc1ZWGAhurrU/C+pgEoAPw+T4g5EV7USx/C/l7Ac2Zjva5sB1xY7lCNy8YeBNiuJCwTDB3RoYgABs0VTPbwy/W9i5wKWkqq5t4Uz+aAY9MTDWEdlLFyDxPSsuaX/kKXgoepfx9nGKj31PBIjUsILxb8ekLZ/wv5mRCm4vpAAq/ZE+EgiWELlHqrEboYiPP3gjxLdFUZlXjnjLyO7hw8/Gz9AlhbWFjTJd43rCzzHNcWhMk02KCrt6Ql9UmbeHVFl7JdnihD5TelnNAeG4eKS5CiufOgvyY2pE+6hKr8xaVayMp1ZeMnWV1+gjTtlxH3EXkYBtiswTJtV677Spp1psN4htHEcWMfT8AzlbAOYhPyPz2Y6Qfm4nRKEROx3kehoDwoTMZmQT0M2OB7Qm+6ObCsuFcWFbokmCgELXjVtfIlFQIsZgcZhJGRb+UuC0lPlspsS8l1FI0ys32ZVB5s9IQ1xEuIGP1TPNDR3eaD/xZbLNo9h4myQd+Ey8Lkm0uIALWYMLfOEH0DvRU0JroTdgE0gzbVQ6Bd+BIJRuMPLNJjzIk2TUo6YKwkyaC7LXTIn5DWrnA5B4lGlHRTsdzbpkFHjYVZVWs+9WEkixS0jmduHRoHjcknDPCuWHzOFth3gXsecLpeueQQvWf6uLm3neKKDtC0x11e7hnVml/uXMOqh773hZNZ2DMezFoH8GyTmQ2e8Cuic7JA0MuWlb1XHHniBRIE9rxqKG2/GUDpg1apg1AlQBUSTqqBEaVYEiVAEwbAN1BdeOdJj9CMfq8K/olxG0J8dlKiH0JmZaAvuDDzuEUPToiQ9qFXighcJLpoIpJi0ACBBIgkHYIJIZAMkRA9wUdIoAwmCPVVNpD02OvGV2h2mIXrcBu3ACb5wM7R8mwASC6Mac2QDDDxK1rkQuP7sodDsjFQO5sIi05B5EWU7aEXLSEnANycXv08rgPd6jFnm7nS9quRg1pYyUYOTtcalr80ePiGa9ajfgX9xa5x6q5INL26Q4qUQU1i7uszlhqq8WB51tlhQgkIsWAe5ESaBNWqhRKOT/59LfVBadHIrGKDyCnpiv0BX8oDsPNGMKkTXTgljIdZAI8eGY1k4qoWwPAYS57YSzSDNY2s2hzTJVjsl1HMLtj4kuklwnZ9IWcS5/cDmh11Hzg04luooaTTx7Re7i7Pv+eACvOAoz1qnVtTZBl6pctSVAn/zZh0yNkU9wxIYaFMOcFOQ36gdmayaYFoMhdVXTpawFPg74ANUIWPTqqlY7IwNt6tGHjoAw2EAWba3LNAN0ykRt1jlMho+mA5mi6LdFr/2UC29XdUafbYCqHP+U9GjyEagSNo3S72jTxQCEya0Bajtuy2o8LaqdGV2vrC7tTdA/k2GA9l0P7SuG0H6SXyrd6xbN9qoo55dcaQDBVjrd4AYx3vLtcz23d+HkGz1dblhnzm+oCxPNf4PcU5adNxd7C0dpNr8+93HBQbsBAZFbkcBUVfusP1B+15NbS5ZJay9yC8Vieyp0fGF2zo7w/pzXYwGM6Z1zSkNAopDVHUDc49QMGo/uIJPJmwm+ulTdZneobzQIfCDbGvN7MhgS/J3PXQO+iFHdIkUD2+N5xPXqHsM0nHol3LNxJv8F7u2PumxMfw0cgF8mW2zeXDg/7bLvJTelIyaWvs6l0eDxln7ELtTNH8t0cxNY0B28/KwNHuzNw9LUxsJk4F9oejK7f94K/QpbhdzwRF6l+vbfebtYgwrB5iBbR7zYoXQsw7aomXwJ3RdLF22ybqknbeIXtTtNua+OlpjG2BYyaAynEK5e+owFOmkXrmKCOSa+OSVfHZFBHWUezQSCCNsXPS/gxtKBJq2bxpFV10tqctbRoUJoruKTttiQVMnaqvvY4pLfgy7ifFvIBeF4g2AVjpPG2MJGBAWziWbI7FbjXSvm4lSiH7bs9DrmOtLEihFxHXWNdNA65voii3SLEAUaYh7alkmisXNHyjRWBfFGPfNHujZVIvfNRY+3SPLnCzwE/78HPd5fNKNw3D79ItF2c/6StkbSt0XaMYIycNooJzoO4HATfm0gvoOY3qqiNwsKYqjn+m/yXxQBkjOnv7b7Obz5hqn5rV22+Du3dHBNNPu9Wwa837m9Kk6OQf6zy7kIeKu70pR5tobw5LhBsFzYBar4Fd8WWCcJz0dOKHM2r/T2l6jX11yUCVVsHpqNRxFhRA9u/ci1NAe23Uwqvp2CozaJOm5kaC5F8/WxqbHEuakwbI7IW6rGauv6jet5swZuwBeuz2gKh9mpva+HIN2+rxRZ/w1psc6jFzlFx7R8rrv2d4to/VFz7x4pr/3lRXNtDxQUGHSuvr09fbdPmWfTVOl6sl7GlHesrQyoY49t+KfbUVYpyAvXkaTVWTwnU07hJEt8k0Z6xj5E0CeqUoEmSr0c9aRWTXpNk1iTn2AirtdL2SCsp9TMk1E9jmmfG6Er6MV4tWmPtlDeLTjuF4iGO3DGYBDCvVXuo4tChcbPA70mwxoddJDrM1fIjfTs/h19bz4M6mdwJH8EWxX7XsWzNKjbpCdUXl/8/VVcA4cj5xXeTTGYyM0kmu8nubHY3/5e3d3vZAwF/G5TbAwEESgALajnYAxbXvaJ0KRzgQH0z0NKWUiigKI5CQRVwKAoolAL6+735cklc9mbfb9783pvf+743d5lJvvoQz+QnrwTcXG1JA27vtOk0nMGu8FuNuLnRltOYX/Vq6LUm3Cw1ddqe1a8rdKEdbubadZrN6osKfaY9bi51z+k+F9ExdKp9biY6cHowq09pPOyOD6u9ojk3uR45fupNKjTTY24iPXF6auuUszojWy3/0EGfyClewQxMAE9k5LTJkkACaUnieBIR14nagZlKxykwXHNuAPAWT8/xhFqz+hJAitL2ndKJa/vwRvJAcvPIZ/VL8ziSY/NIZ/WJeTRhzuq51GQk7bNvOWH0fzz5bqlg3+ODLk6A7OigxNnBDgvakR6XPC+RA5pTbZdQKJNT8851XKrCjM1Z9KzUR87pY6fnZ99ZFGohiaROQPwEYhwKYlJdoEEhoD/GERPJBdSHEKDjBKw5fosKAeEYu89cqRdOn/IDg3/sljzxmpj1Gy3MXzmXi0LPCT0rZRd/O4yWjDuIzQ2bE9szFXoFXjqSUPadDAsmtV9oT2LJnJwWTOa80AskPCjw4tuEqJSk5pkVmrB2Tjrm2SpsAJQcYW2Ge8+sFghk1jtaXD/2QrqFdgldWj6XzKeDHYYtDFsQ6+NQXD0LCX1dMg1LHfLgR9IvJPYFmGhc6mmhbacDVOhJIQGlhm9YaCBjqB1RUHjFrtDI2XgtOVg6DPkXM1simFk/05oinQHOU1NCU8tpypxS7DBsadiS2IHleVIgSx2KMrVTp3ilyCaU48JpKDn/BYXfYouelxyZeyT6m/GuSUHrJ1oTC9Lx0ScWacJI8Sr6tWHXxDie9/Fn5DCFJcOfprMYghI5HdH9X7LewNGsH2gJqOBeaEZIjE/IF2GHYTeG3RAb4tChnNI5lNjqPIG6OBs6flYD3y1czPqG7LmRQP6QUG5MOZma2GHYrWG3xE5waFfadA4kMvYpS1Wl9kD2O7iY5cieGUns2TNjysjUWLHfGXZHbIRDz9k9Qmsz1u7W7G/Ijn7q6d+SPtqij4wqIlXN0+MAgNwQFRws8pjuEzkrrK2uA7xlgAcLYPEYYGcrwI5x7TiP2zmTnxvya/JrK4hxOdjFT+OVNMzdvC0znxg18BJQbK81q+qLykHkxxD7kQbVxaLJzZzFjAptVZ09lsDZVQTCN52EVhK7njjtFGffW1PrIjYnZNOf6WJLEz+ILjcHUYP3kdlFKOv23DdMNud+g4PBd+kePLVZIkVJJXbSYzoBW47GbOylJJxtgbTxS6ntQrrsFonNMstjuSnoKrnp5ixicpGDAl2KE4EqBRXP2drp5nBtiGHzjUEGDJkwHVZ0u18YNtnsF4yVUm0O3+1GbVi+3agprvXWqj43mnKzsGrYnKQpuictzkj7BwMbYNvGui/bflFqHw3Spr5RXgqNarr3QeOr0sDhw1W9DJQKlNVgb5nklCrghZgqFdqRRPYBCwe+VSLGjhhR277RLa2z+T435TQwrpREkWSVP8tIuW2W18SMuW8oHfYIQ3aqjPJV5XyfNFAJqikZryXmnhOr3lpjA0e+R1y939lam3OtelapflupvtxWfbKh+sNa9Wdr1Tmz+v5CaKrTuIQBhnWLqVUtJgJukBhEyTcVDz8o3qISa8WbHxQPEDFhQl7xpe/LpvjU6FskigTHOJu9wUpxe6pgpfjc5E8K203Fa6sm5Z0mBk0ATYx2NbMzwzNXVdCg3CCWK0++rNVxG+v+wN/Gwkoe2bhObfg9GH51fLYo3gey1byB8jN2gQS2VD6thj3tF2Zv3pLB7n1KNI6lxXfrJZmPU9zVwgSW9kv/dE+Ht+c/t4Ddq4/GmXQlw9tm9t5RQ3r/r9kXihi13R6SPdm3VemJ9KVP61FlDfC+1Y/gOfAfND2UQzng09cDyblyqDkdgfUIrMaZjoc4yWNAx3wU+8Sf5LCbfLIbr3TYhUuNyxa/gBx171KnDhjd5Ghc/fnPOzgGPm6TFbQlEqHEF1+ZEuDA4OYN/1ji9f8wfk869dfN+zp0f2pfMBbc7+LnY/zUXrfuP1RiulEJwf9JpKrACdckl3HwvDbmQGt+Og6fP3Dhx3Clu8TLcQLNOSbTl/4bXG1FPjuyI52vx12QdW2Nfn79T3b1C7XPpPfiP9quIrqtJYm6LAfl2OGYfctM4cRMrRjCzMwgOaAwyPCZmZk5fM7sh3E9m2Hm/XpuvX5+Z3D5E7eg69bt6lYXJOrj5opn+xW/pBb3Z/N7SA+aY6C5YFWX0nkupgWYh4K0Fgb0hWQnajYXd5SLW+QXNwcloXqJljr7F0iplqNMgXJgUNWJVkBRkdbK8Py5x1ZRUI0qVNs3rn4vsLeGDLWo0TrUaj3qUD+oDQQ2ogGNaW0iQ1PEMJ/YBXYY3RjifgIL3fft4PJCLErpYjf254fzdQkWY8mQLvW2L3NjH03Q5ViG5UPajKVoTmoLWrQVrTe1DTloa4nVRea0c4gOtGsnOrQLnega1G4n2oNu9KTVFqU3+IrXUdEF1+Frgi8T/Ajj/pNYkfhDlvZhBfqGtT/xfEwH0I+BUR3E4Ge6ktiVzdnTPXSVQVdjFVYP6xqDrsUarH1A12HdZ7qe0PWhb+boBo65ERt0EzbqZmzC5pW6xYluxRZsTes22rUtXKbput2N6g5sx46k7iTJTo7nSXY5jrEbu7A7qXso2UP60CX3Bh/43vGV3kfu/diH/d6DDxB8wF+bepAvDzJyRM58yP1Q9DAO6REc1qM4gqPr9RjVj+MYjqf1REB8gsZ5+El3M1tP4aQmcUpTSCK1XocIP40hnE7rmQB+hnAX07PIwVkO6zXPmWYa55BO6XlKztN6WuGy9QLfXYhwF82gS7iISym9TMllm2Vk7hXHNb+KK3oNV/U6ruH6er3hRDO4gUxah4Pxh2180RFqj0S8o6Y5JhjFmKT0AaHwAQltyNIH7f2DQnQ8HOkhCbgekvFFfViIe0TwsOAR8Qv7qGk9Kv+6no8JZ8RE95jgcbmsTxjiCUN48ZPChXlK8KTgKUnr0yZ+WqJ98oyN8azgGdHnBM+KPi/gi+dlUF8QN6ovCl4QvCgX9CVxoi8LXhK8TKJXxBv5qoA/r0jkYtP1NXG/zdLXBa8JXpchfUN8yH1TXIG+JXhT8Ba73xZQwsPr+k7I9a7g3eAcyHsC9r0nKX1ffK75QMCf9wn+kD340CboneIjMa/4WPCR4GMZ1k8kEXj1p4JPBJ/KiH4Wcnwu+Fz0C8EXclO/JIx+/pXgS8FXRN0UEHhTMnqLose+8Z2Y3hbcEtxm1x2Pviu4I7jLjntmxT1hKAjcuE7vC+5LfvxbIvP+dx71eSMH3nJbD55KtS9adGJ0wTZzqB0cylYr5KbwVpLgyLzGEbdVMe3cKPtOi+K5ceVRKR95lkZ9DF/PGC4+hqctXUYONcfimw/hSZ1HynmRV2sBCvLjf5wwYyJTUvVoTpCeckZjIxOYlmJRy2GKilIk/k+KLEHMPtLA2NlWKlh2vKmTKJ3UEpvupcHtMGGCjLIq72S3osEyl68Y1nN2YrNDftr/ti27JdaD7f7UmZhhE1WWBJi9khMUP720FQL2P+8eWkDeQhSg8LQWIYYifg5eUExBCYpRclZLKSiNLCkjeZipVAHoSq0geSUqUJnWqvC8vWEnazWdpQbVqElqLUlqI/Y6sgeJKqkNFDSYx3uVRjRqE5pu6ny79no6UxWTVUYXErWQSxT3vYvoNIvZtTipS7BEl2IRlk5/IigulrF7WUssXIrl9lSgzViO5ulPGuBf8xa5srQd7WjLaAf1OkK9Eu1Ep6l3OdFudKE7pT3oUSaum+qCXZ+AQ2JEV3iOPjBZZbSfHP0RxwAGbEbMWboSK28yUz1f4jPViK7xemvBbJXRddRbF+mtx/ogW2GDbsTGm7op0enT1Yhu8WpbwZyV0W1U2xapbcd2c4gd2KE7sfOm7vLY3WCyyugeYvcQ6zv3Oug+9uxL6n7sD7foXlZglW293M45/te7jkwP2yQ264u2u21/vp9ofWxzgufsADOdLc6W52XWiJtiOmyTAswGtqlhKx93m4luTHzBnDIfGC8LzW+u+hOOFzHZbuc75y9WGuJTjl2xMdmuujnqfvLXR8kyxccNKyytvoxTGm/O3uqyNReTLVJsZPk4jS95iepa87RzdKQ93pGSOt39NCz31hTRp76Gv5iet72y6v//kdiEyVVTpsZz+TrfOmbNmVdYXFSGCi/Pys6ZNLFqanbVtKqqvOlVM6pmzp5bUFVSWq5VcZvOED1/pm35WW6iOb/OwWzv+Wt0npN/qU1RSD/NrQ21ilBkWsW8TmOyd/yklmKyOf7B3OoQVIYyA5WTOnR/X6Wu0UpSV6ESVWmtJnW1UdeEWjWoMa1a9xipWaKiLqn1pK436nGrG9BgUa/RxbUJjfT+Jl+lrmFxKr42TetiUi8mdWQQnd+0lrpnSb0MS7EsqctJvdyoK0NQM5oN1ELqVrRoG1qVHo/2NdrhxIpUdKa1i9RdpI4M6ka3afW4N0ndix70JtWR2hl1Rdx9zu4E3yf+dagVWGGRneFA+9F/UwcS/8jTQQxgMKMrLSWvwkqsGtXVVFzNa7Nyy+Pu11m6hm/XcD96FosKFnxYwVosuKkbKN5g6NK4+82ztrs3hrt8E1jLJnUzAZu5y5kd3M/ffJiCLR7gI0VStxGwzQDlfggfLGb/S7Cgob6qZaggeA+H88i92OuL2ZgVs3oA+/UgDuDgShatQc2Kw2k9Emxtu5bFKx3F0enPBNE2rGL1BI7rSZzAyUE95cQKVyTTmkIq0OE9YjqUGPUFbEbP0IIzNmEJzT2Ls2bEOfeXoHrV80jrBZzHhdWsVMNCNa2XacPlyIYruBLacJWQsFLVG7iOGwOaYdcwMhhO6whGIhtGEzJenWasOp2MB4R2xOM+Ujwo7s9Z/2TsLKDkyJE0vIocr6F73vS822EKLTMz54JhmZl5q011V3UMZqbmHrvRzMzMzMzMzAz3/5Ky2l5+m8+lkkJ/hCJTKu2n6Srb2Wgng42odja5nWhz7EIh2d1oN+4607aH37j2MDntnm5P1stoT248O9relO9t/DDjx2wfvucu9Bt5+c+HcfflJpQfIv3cPrQ/96Fj7QBaDnA9nwuGRdyS0rCYG1NbYrQEhqU0LKWhD6HMfO411u1MbQW3qLn96Lfsqwx/oNt9DkT4g3z4g7Dv/ly+raJOVQjVS1Ub1NdwS2pruUPlphSFOvNdW0+pwW5vOhhSQyClQxryMJQ9h3FfqsOwNR1O7eE+y/nPhuGM4L6Td3wktUYZHckNasqO5s6U+9MxGN1Y9hzLnnFkx/HNOGYv/5kgMp7bVM7hCRRJtqkpblMnGbc3hcgU9pvihvZ06DfV6FTDT+BpRqcZO93odBjOoOEMZ/iUM8zYmdSdZXSm0Vnc68eXb/fC4zbbhMk3xyiu2XA5l53nwua/c3dsntF57o7NN9gMLTA639iFRhcYu8goCovM1+xiE4/AMrPExMPxspTulhldbHQZ8rrc6BKjS40uNy/YFXSwwnAtel1ePAbWK1mzkjWIN+7UuysCWpVEttoorlWIbA3N1hiuDU+FyNYaXWsKerups874uvVG1xt+XdQGoxuM3Wh0I3KyySgMNuEubqbMZncvjN3CN1vcvSgImluNbjXcnmwzus3Y7Ua3o/8OGu5wOX0i5HQnB7nL6E6ju1xOO99hTncnke8xims3It/LzntdTv8pLz52gcvevsRsv1Fc+2B2gGYH3ACfDMEcNHrQ8CPpkH/KD5nconHY6GHXdMToEWOPGs7NxvaY0WN8l6dHjT1u9LixJ4yewBBOUv5kGPgpvjnlBp4ffJ02eto9yWcMdM4aPWP0LMI6FxJ73uh55/CCUdRdMIX2Ii0vGb1o9JJpay8bvWzsFaNXzDh7lR6uuozlBQ/XjF5zHq6z3w2j143egIebwcMto7ech9sGn9t3jN42egftd2l+z+hdo/dMe3vfKHrch/8HbOgg+sBoB2lrO4p2FNtJtJOMs50F/jsL/TcL/ruIdpGw0nYV7Sq2m2g3GWu707a7s20abHuI9hDG0lO0p9heor1g2JuGvcXnsA/f9BHmsElePApPcl/W9EXNL+AzHo2afqzpx5qccn/R/sKPtAGiA8QWiRZBuVj4uVYiWixaIv9tS4VrcJloqWiZdLTlFCqX3AJZIVggK0UrxL4qWil2oCgKA+XbdpAguCrRQaJVkrbVggenWnKrWg171oriqpH/sXUUrqNwXn6jEGK9aL0LcbDoYLFDRIcgxKEuxGGiQ0WHIcTh7Dm8IaQR8rkB619jR4qOEDtKdKTY0aIojJYf2jEMaqzoGNGxCGocgxon4Wn+dztevMYEak6A5nvj7vs74z5NlDBPJonimigpO1mIZqaQrk6l+VTUTROFxBTRyaLTpKBLZ3aZLn6mzhDFNR13IXibyW4zhROyGT/QZvH9LHcnHwspmC06GylQO4d/RzxXdI7YeaJzxc4XRWG+tLQLOKaFogtEF2JMizimRX5MdLuYPZeILhZdQt/+p2zt0mREy0RxLUX0y+l/OePhU+JCXCE+jpWiK4XL2SqJB7xoV4uuEl0tbewal4W1omtE18JwXeiwXnS967DBddgoukF0o7SzmyT+pN0sukl0M/pvEUWXLfC+ld63wvtn4xXlXJu2JRFuF8W1DTY7nLed/J0bu4v2u1C5WxRh7hTdIbo7SfqekPS9orj2NCR9H7vtc4NsEpK8X3S/S/IBpuqg6AGxh0QPij0sisJhJPkIk3xU9IjoUST5GJN8rCHJx9nzhOhx0RMPJflkMoRTorhOItrT9H/6Ef9nRM9IQf9KGp5l81nh6stngNrn6Pq86DnR8077ztzusLyQaF8UxXUB2pfY+ZLTfi3x4GW+v8z3YU79xl4Rt4JfYei+5qroVbHXJOwdv2Kvi15nRZ5eE3tD4nfZm6I3RG9Kc3uL3cP/9JYAWL7X3natt9F6R/SOPC7cod91lXdReU/0nvA/BAuP1P0wxx4wuAcCRhH3cHOsQxQG1DFSXB2ilO0U8X53jsDAukQw74K6rpFConOknSLtGoXb3S3yueoeKa5uEdKUc9jDtX3D9oy8415U6hWBuuG1J0w17ugC6J0E0CdSXL3hrK8LoF8Uq+3Pbv1RNyBSSPaLtG+kA5IAikIAxZHiKnIBSF6IoCREUBoiKKNUGSJowu0mbePb+xhBeRJBRaS4yuGt0kXwaqQQwb+V6BpcDgwuB0WKayBlgr8q6leh4r/DQ/QLW+2M/2BrIkWxJioocY9bLS1rYfkdZ/cdWxdpXfjlaVsfHAyOFFc9HXijIew1xOlL0B8a9IdFiuKwRH84LYdTP4Q2IvISIyP/7I8K/Ua7YY6JFAb4F81oGR0V9KuhzNgQybhIcY1lJL5ifKTjI26TJvDXcyb43/WYSKcTXXgmuJ3EqkmschX/bSdHpCdTWD0FWZ4a6dSEPE6Onsgb+FrT9h8/wfPguVHc2J+j8fCODZ5MPmvxVX/uMI0QFjbuMK09mEpjfbwQMKWxhyltbQFUC3LI70l9Ep0BYK+EUzT+jbtreUqfoj/88IA/QBMPKQrtc9Di1zY/3x5cQkglgCRe5FmZvvxVUAjjj8vS1iJZNqGODTgyBSQR6RsRgoeLRBOEE8jqB0ElIn1zLrq36FsY3VvhMccl2UAeyeDeiaO0dxbi8Mx4LFEILNHYY4n2nkQCGLPHY/b98WMAku8njvAnZs3th9HtI/ph/Uja+r+W+ihjpfHH4kaEEclxmX6yeQNzTJM5AtW6QMgeuXeIefzk4GM7+/nY+EOyQtKGgv58tkgdA94le4RFS22hLVMgD5G2Yiryk8YvxR8CefgSD8zAGr6iX21uvwb7r+vX9Otp+w2E+Y2Q03yCBubnW7x739ZvkSl8x7d8V7/r6eN39HuF9vvIyg/0+/qD9uSP+sMPixMAhkRWfqw/Ak74McjjT/SnLezPYkOcoD9P21/A2S/ojLYAC9Gjh2Et/uQwTH+fxPUH/QOz8kf9Yxh+SlMYPawL4b6Q480Lw22N574NKtukwBfahue+9RN5c14yQ6NkcjSKJxr/1Bfy6CFYNebsGGm0MSnkULwSQ9bxlb89xVeAyEr3JxgoN/mwlJrwM7yN34qybYpX9EuO/v2UaWUf56+S8Lud05gyT+CuwQyytkAL+If7DuPHD3hg8aQ7sGD5KUydp9J+srT4M6Lnfn8dkdrng+fkwBlSmDr6Er9xxLe8jEhf/rCM5SdZ8PuKvkK/Gj/ryX4GdA98Lwu69ybSPZ48e57fAjTPeJaXtm/jWPVtvH1OhyyPOu8IsbwzeMxNnpR9D5y/h2nSd+q7UphH79V3ILR8k4Tyvtj4I+iU/QBsP8B0x4D7KH+QB+fe6kP6ITr6MAJ20ytDsK8fyWJavetvTSsX8GeSeDm1KBNDxs2sDDmefi5rv8CP/i/qF3j87DFec9syNp7ipUHxvpTT+LJ+mRpfgYabSxmiO/1qFofO73300Ln5I4fOPHLOjfp7aMgdOjfWH3DU+j3q/hC6Ds9lMIswj7L2JzD4CVKR9P2p/pSGP4Ohm1QZYDqAuixm0zsenU3NH5lNkPk9DrdR8wfU/CFt/4jc/LHhZqZi44+YU7Y1bFszpsRnm/hF2xaVbVMkdMBzzWxa2/B0uWBST06nf0Yjjpjzaf8iiN2/MMQMQnTELoOj5X/VbBbnyUv+5Dy5+Z+dJ/NEmUFRCMiOQv8HoUDrMqR1uDqYLCnd8n+Y0oHQJao9ieao28tAODkezhDM9WEpy4PhFX/xZBjKRVROTobTnsAFZXK4UqdcRmUCONK3DCEcORyUsXjswraILM5TuORMGMpVVK42WkXalvYHwslDk29riddqc67qkkWEJ8MBwwHBKQpDTAs7lFoJfEsTvg03/px+BDrqCHf27g/jR7JipKvw0qNYMQoViQ+P4ziuMRzXWGI5ALkMYdw4lrJgcPEy7GZI4jyBI31DYRLGNZmxTCGG0ymIZaqHMVNN8uh5/kb56ZSfQQ4HAkfupjNZygK+xRsI3MDfrENtJG0ozIX8PMrPJ2XT+ZBfQLb20FxbyOYEtaXsYg5usXn46V5CwEb3S+l+mWNty0yG4G05S1lQN5pWGbvSFXDvVrnC6wDYYrVrqLkG4o6ogaXFA4xdz8r1qExIGhEa/oUWVFYRzBX0cR9lm2i5CSE9S81n7WaugFsMMBtx2hZDlobCNtzW7RzMDkI13YGx7uQzsROJDGt7vt3Fml281V5rNxkax7aHY9vroNpejG0foBlLWRA0rBsHiNHIyw4YwDJF4RAye5jejpCU6RF4O+pv3FETxD0to/hxigOUHScry5CVnWQpC1AWv4to7JSxZwjIEjAG8XMUP+9g2HmIXyATS27bs2RjJsfGUvYyU3Q5SdEAYjIcOV8lK9OraL/G9mtoH2D4JTRO4joJGaO7wejAvG6QfGUcJ2MpS1D2Xg/K7F2ysoSSIbr7vAcAZIaA7D4BWdp2JCoDIEMOOkqSYZKyzoKfcAAfg5uuhGRgYxkHx1jKgo/BDYhYd0KxQiAxLJ+9HBfrTS5GEoZCH2lFAtaXCC4PDA7wKzbEXf1IvNJ2AP0OaPBbxOZi4i9ArxTZV2Ogr4YMlQoyFAgY2svZXi7IEFFneFoqJBj/JRTW6m+gMN+rhpo1wpUjJhTDu1px3wmc3IM656AJkRiK9ZLyTIx3ZQjTBRY2hEQsQzDm2FjWDme6RogOJwkrtCOZrod4GFiYojAG8Y1lfOOIxADD0qRg4xGd8S4nsHGi6ASPvSYxukmMjn/RFKbzZBAvkjrisFKsTGRghGFThfQLhelAKDMoNNNBsJnwMsuTiFlJHkYa0i6/85lDU0e7dC58zqPPeeL2P7NRi6r55BIgXvPJvcImLd8u5L1aRA6mi2C0mP0WM69ho1RglzD3SxKfOCMQ33NZuIOEYCgvl0KyL7SugM5K8Qv6KmIv5nw1c76GBAzcK0P85QhYFviLn8zrCbXsBiKwHPlqTvIVgXzFjewWDm+rY2BbkYltRGG6hYjrBcKulWJ3EHlZz7R2ytftLvYA6NpFxJUm3drzUN72JnnbRzPgrH0kWkD5HP8Bn7e9rE2BbsXv8HBLDzXk7TDzdoSkS4/A6Cj7HXXPI1cBZ3IsSRAQ1zHxrAt8S1E4KV+2pwjATtP9GYe6zkiaLOu02HPM+Nkk2lKirLC7v0CgZR27IrpC4ZK0IrS6zF55AF72ChVBqK4QUqXtNWpde2jk15OR36BhwqlS9hZHcMuP/DprU8BUXKQIqvROw8jvcuT3SKr0Hozus9/98MTk5YUhP0gi7hAFd+RTpFSFQFSAWNbhKDIqFLpEXwakig2hVFfCqLTtTjrRPfJxU6hHECKUQrknhHqhCljKLb1hdL0TK9IoMikCKb8g9ItCbP0dh8Lb/lH4xsvQMCB0JprCNQCdi+miOGJWks/sEgZa6uhSKSzKaFEGizrD6R2iLWf45SF8SlZEoaWSnMo6LkUehcLAqLkdRNEqh6WqMPpqdq9+aPQ1bK8lhtJajLyOTutyYXHk9UnwBE/ETylAp/g1xExDSJhw/7hUDmPPYeg51vXEC4gT/x/pCDaMQC+ApJEJsxkOsFMm5i1/Gew8DHTikkv/z97fgGtWVHei+K6q/fW++33P2afpbhoatfaWzG1nUPvey8UGGelNeqD9DHNj7nCf/3yY0eQxp3EEBMZnLtKnoYEGMaK2Coh4+rQRREjQYLqJRo7RjCSS2DEkwYTE1qCikojRKCrKf/3Wqtof79mn+9CCcWZET797166PVavWWrVq1apVjz+eIOAf1rbiZPMivsR4gKNxFBzCBVyX/Fl1YFrWqNuKMW7RF/cscal7eMo7y4h9xzcyU4VwOrOrXitRiyxdO4M4Rb7StTCIkQu6Pfq1xTpq+Rh7DC4Ws+t8hvWwbIjLWb9L9HZxNnkdGXeeiVurjqU16fEF7VquIUczJQvT82DJmc7eqdXTPVrCyqLnNtoGbzuHu1jc8WIL3YF+NBaVMZbzuY0hGwlHoMsUP3xnCqTtsLpj4RNUpb+8aYSjBwhQOUbeqSrouhue2XE3pL6uHgeuhjWuhrWEkDVwOaT/ESSZ+7xOPgNJdh0d/63WNa7jsT0OSI+Bs6fZp8nVIQnG0Q7t052F8RnUaUtZLSKwF67Tz5jOHldK4dgwa4JKAnfRa3ODrdXiNmzqK7i/cMfOOQS9zm+CmZbP8He+v7fzHapalbY+3/jnO/A5lc/4Sht4Gm3iQjyDYKhoHQnVKWeAGCrlQpoZpJ01K9cAvRiB/xA0L8D7LKWXuno8eRElszaH7qCgDcZiqpYucnXopdXTWbU9e2xsIjqi5g0+xFzbStXcI3bw5YANT48Oq4CW924gDJIe00VoAeD7v0y76RQw9N2oIbDhzKXIFPAtUgvG3RJDmMGzomdBLAUnViWLDfSaMOHqDl3dER9o//y7LmvXHfm6O05kxiH3h1/bwZkZtWjyRtcksHGd4gBReJxvHm+pH/HDWh+wRF8ewdGi/C2gH8SyuICP2gdbgUVBCFLnlFXoyqlke5YnosadkogDDf+FvPWQn84QZr+ziXoMbErljN90hnGNIa9J5ONosu5yvmc3/Wa+M7qOrfZgSi0NqpAQZYoQW0Ar7aOra4Nm8sQlA3swSlVusSRDr3fudr2mIRgrPzD04Qp8ENA4YOqdbxWMc0JoFXwPtwCBJ3FHKYU282alD4RaJNaj9alv7kTZ717PbY3rO+6valUZSV04Dk+P1UFfl4fahh7q/IdvQz3YPHCRWKUzOXEV917QU0ZLsGIwVpY8/fLzHXHKeJWxv3Pzbv9wmkWa/PdKOqgeX++/VOztFd/KYUArDOrrETIkAvQ14oVyvj1kK2nQBzv1yZqGzZZg3HQxbgTjL6cfGiyEBwDlHqixJEMAVSD/EKiqAkHtfrsMBsgme1K7C0mKdb81Z3RFxS7DsD/6GztbsEuzRSzAb7RKCp+kT2SgjgicpAEnASMnCEIjWNk420gPAfRGx8j9wN56x6UdYJGzSARYa5VUgPNl3MoG14pttWK14L6MOMIJxvc44nL+Wn3jreBysLCNqvyi6vFn0L2JIs2qWAR/cuZY00d1Bv9o+cnO5DkHT4gMSeN/QXVFfh4Y2Vf9iKv6MQ7Ufg2xOiicI24ZEcWPgnXcfTX3KieD6BPetxRGiKKaFyEh92QIcz5w3a42c7IPQMK1F1pQkzLLY/uHNwbOEXnFfCx4Aen5ufQjVze1uWpSFqL5B3jeHsjLHfyCBqL8NjwDkdzaOqtEWVE4CEyN5RwRXhHb1+0BCbtbE8Edyt+juYVnfxEl6Ckqq9LXlOa2/I3gn5vLoJb4fMMgo2wbPboDpzTE2VHUP0eHj5yWvx3gZV9VKt4OZN738lJTKc3XBxmZUkscdygjmR3RbKlJF2sCZ1vjbgrhGZfSY4meT7m9GsDUSKJCy+2HVgMmJO4czDBqgS3kQiHuE6kHJ8mLleapW1lmAdr2+hsitb9cwt74FnwgFitH4BHysBOOOHv7KhPjkLvXIObMEg2iO/djSK9RZUvKeX0gByhhVb6Uqf+t7wMVF6Yhl2t/uEgp/prYJsTyNTyJfRs0DfqeUAr2zM81SgFMu5GQtsDTzPc4Sqya+f5VzXzv+eqbjq/mBl6Qg5/OrTWAc+TJkrIgT+usIQXg1S0F4PUgN2mMw+X3zf9vubFv/pc7i2jO3zXw8Gth5l30DEFzLv55NTOcJspTiMoN3CvC0OOQGS2kXPtYV1MCfT28x4iu9yDJiVoDlkGkXuEep0QFWmtjpC400GDnHxk7gG8UN7LoW01q1FPo2+3Pdeo/Nalhk/qdJtX0puqsEVoF60MPaSIoP+GT5cA/HtSsGMR4b8/4Sc+ck3TmnGRizkluLdJmzkk5djdGIBaCzi/Arz2/VgIO6kYJeFhsZBEPfqUqK5DV+pfxYyK8wjrT27qzf1dBYE2gUj2aAJqkuiQ+8dy/sLp6SGEVciU+HjupmX1RNLPvTWhm32xrZnGj5cWi5dWUCsFM3IgH3ydoOP09un2ZHpEa4BQDP3+vqCtolFHPeM8/yFqP8loPuon06pLzZJKVuqrFoqJcrorMpx6wleTIKAaU+yhUJzKrW5UR+SASi0EojMsdosd+vjY8X2PMw3YJR87fdSlAo4GoaTcozMltfadTUnI0vCqCNH7pZFa/CP1RV5BKa+AhqeO+vaZZmeFXEALg86sERyIcJPuBdnYoIpBskqZcFapGqq7rGEniA3uNiFmM0rd20Rc4e4o8ntMCcWmq3Z+/EjBziOh8F4Y1v/YmVCNZqZ+PPIZeVSIo0TylUdxd6SSWyfkju2oiOyX4vF4KUuZwuEz/zWTGB5fJGE5mfGiZjFEnIxKXyRjXGSHkrvPTF2ZAUKHoS9BGSbY7hW9dS+GbW2gUvnu8wuc/PiYz5wrUv998Z0v9C7mRInYCbY/pKn+xaH5hr+b31Svb60bRI2OpL5UOic4XtSrfIIud41E363pWqq9so+vVPUAlo9ak+q19V7cm1TZEMlXnXrHMbd3Zj6JIV5fsIF/mXsG1qJZzxquWb4oStd1crDn2u6ZfP4s0uqLTBhF+R2P+2X/hQqn3Wl3n/GVSGen16dve9cL/Xf/TaQtFKC3K/CZaFZ6BuRuKhJX5lxcps9/Li0Eld2ZB+Y7sAEH+KQh1Rk5AVAVudF+Y49APfJFESiqeCwDB8DQwEA413wQ3tvpX5Xooekx+BfILxtCF/M8Q7WeBwzxbCtUmF1gtMPPzM9FeOV2lUJyoYTIJorOLF/r4wD530J973OTOAMUNlDJuTcklZZBAttV1o9kScYBehcqoJGDBN41vp8r9rVyHYBvZMO8+X83PqTrj/KMB1WKnQfliKvM3wT9u5MJRSiYI0YLogBRXELfx0Xv+C7MSuVH0Y0IIdYQGJII8jsaB8DjwT/UMbMah/icR8GiGdulHXok58UNMzUUHntD9R8aTy7trvykjGd8BiVxKRZ+JSrJvhSaFlu6ihlQHcI+JkCpDABnDt6EIUTJ13VFTl8LiDBeNpe6SlQEGF8uAq74fnAN8DP2TrHRjO+SHWdzLODd3yew+T/UvWOCnxcc/v3mvTbpXqPFNrnLtj0BOEFjDEiS9Pb+GV2SQabTcvhdTKgH1MkCMh/ymm9z8HpHDaiM481tcuvwPX1/FN5IGSpvQiSPhna18yDyp/vvfQvtxQ0F9OCEInBA9CEgv/wGLBUKxu+oK2ig+ermxiJO3bh7a6vPozJk76PdZZj4rRtIAnElhmjDVvSGoDRBAshk7ustmexGmx0C5cnV/+Rs7uHGSeflV7+bpzxDXh2UiYZI5L+76Sm3i1qg+DXcDYt4LlvRZckD0+T5+6W2umXy26abqdvMqxkO3m1DJDoReBj4amqRNdAefXKJzpPaU0NcD/8PS19DRVzZJXw9M0Fd2lx06+jpwGPp6oEVfB3ro68Bh6evASuirF1tCZrzQ6BYWsh60KO+gp7yfOnEXLP6n/9nF3c/E3dfDUPbSjoTsygmxlixPR0VKFDoQCh0WmVxHLNpWIkTE29ie2AYgtoGLn9xHbMM2sQ0csQ08sQ1+XGIbCOIzkNChiW3QEFt2RMSWThDbYAmxDWpiS1dObIM2sQ1AbIMusQ0aYuv2eSmxDTrElh0xse0KjXlic6sMNqimPd7KzXXKj7f6ccdbS9/RoD70eOtmvKMjGu/YjXfixlsvmeu0jHdyl41XPtfp9lynMd66O9fpZry7fV461+nOeNfdVL3YmpzrdHeui3rnun/QomVtby0OVWtxqN260Mi6ENu4vOTDUCsbgipoXRi7dWHM94gaLAfT7tpElmbKprKsUn6NBjpJb7CpTdurshTrznpVpvyqrC4e+VUZhoh7lMrNmIpyV0FtYB/Q4iqyGvs7tLjS7jKFiaVUiPMp4ZO+lFKCktAtpTQvpRC+K/SbHXnNdG3nhd2G98a/8q7WbmcsxBjK9YdoEymRB0FKyabw4oeubJsqlM8jwyv87CwOQT4PlnQeE1L8Xd/b1VscBOhI5q1we+nuysgemfgE0Csn3NgYgCTHdXWOxjzE+5IOaQ+lM+/w9N3eVyvF+SS/vDZgBbzV7Z6o4Sy7OVKJR+ti0OwhdaDswODtnSXsLw3xb2OzF1i4jwqqxwQk26GBRqg1HSuNdLyLGkHLsh3HC5UvDb6qrCWIlVi9xWZ8MDiD7b8HLXbkvelaMuOWh9Chqt6YkXoZolp0GDF2hU74RWI+gwx8+/1Xdiiv+sBftBKwPbp6VnbM0BExXeVyFboz4I3EgJfK9qpz7AA+TfWPu0FfEB0dq14HIlNdvavjxdE28JnawCfAtCE51e/ZK/DHObIJYGQTIJJN/PBJM/XZCVNf15QoxAl5kjFSPPO8TOkO77i+K4FHs2i87Z4OD+rlWTi7WSuz3e9mlaq9ycibVvVevpD7nXuNHFDp7Kq2yn/P74dJ+e83bgay3+ytjtgENt0NRMDjbfof3SunbfVI1U4EZkUeBGJ/Vsvbn+9d1v7MA9RQneN2mSGynLKK4c5tslNiSLjNRgyPUJC8POZejgX3Ctd2WS3L7o8MbLPa608bt5WJlzjsrJNZjVK7dBfkVC5YPMjUMhfmX70F9RGilDitdLzkGnb4zqccQUh64q3jeGwI2qbuDvXLJUFu9pXbWBUM4CnKreOb5NlX1XBM+bO56UG9ZTlfDiZ2KQe3FqrZpfRX5G4Edmya38p73orHW7HoxkF2unr09O2/VHcmda4xBkWqf/j8jmV4jGEJEY29ue7rVwBDaofPMwhWO7wLB6c37tsrV5LdE5CJ1BWUD3aw0NuXn5e+3MFXn54+5//bXmToUIbaXXWIJ/3/+jZ9D2LXA81X2vz5xy7rY9GsySzsHJNF+IqWNAVqEE8v4U5Cp0zs8AXayo1LECC6I6BSLepU26LupM6Vf7GrXXHihjOXqiCR05bsklISVQkqcf0xo7wbnXSyKrsnjw0om3VCoW/n2KldHg3nQO8VpxunQd32iWMBEVbPuBAendvYO+48di0QVzbowHBjk903ufcKZTbwTE+jyPuNfmO9NZzRBGlGky5zuvrk/ZoAwBS+HueIrWJJBk1Vw1uu4z5Y/ZwsDj4Zzuyqhcqo7RvaZcfdhifET725s+usm11nasSGnjlp+FsjYFgwhjNXIEWmLs3+XSGv2dkNCRx7AiZH59Ml+1UavmLi/6WwEJPtOmxh4b2as9a8pozpPV+CR7eLiiquU6RTdD3VWLhc8Z6dnc5wOfZN1VIMLqnSn2pONTNonfM64fraDSJ9QuOFFsqQff4EKIYBtwIJKi+gnwR+Mp6Cr/s6POushhdsM90KkkBJPHmUhpCqUCfh6yUTgyj9fviGiX7LHJZLe6utliohMaXzufS90QYEdsOiEPPpfoM74its9PQI8Xd/4co+PL9Cagcf1NU3BOgH9DislNNARToyURgtVeKogY9femmfI/WoP/e9f7GjN3fYl5sUgZ29uU1v7juvnevNrXtz/+ndfbn7FcPrvza3BInHeY8VjcVzXT7zmNOsy4u6J9QB2qi3pYn/vtyudQC6q276NCGz2vtDQpKr5Yz1Lofok5SN5GbP5vRn9rToKqzpShyaEZ2oKdTTwbfe0JnqESZOFE6GK4FA0GKHkh7bpsNOcHpOYAp9FgnbkmYx6jduN7vtkueZTX6f9mxc87CvmSxr7yUb1dPNr64/PA9DTPLlmaLBWLPtZUsZTqho92XL0IXlqSCdLQPR3PgzqfBQAsNtzn4iJodtyIcjhmgZej6xtxQuQny3jAjnupxbld/OCgq7YJaJ6IehIIkaKGOko9HYkh+JET+rTbKQCMUf6gRpamjN7WVGOs0SYGFCEFBrSKUWKc4NqtkGbgEwo2ljF6YNKEqqF2F/cEOXSbukPRJfD6cYL4ZOyzw2q+QEh6zERAvUKCOYccBP4odqEnAz8ZxyyBT0pNykU+v+LbICHbe9gShLelNABDfOsTbITiUrQaUKxbLxEkKWXNQYvbjWYA4gODmWkvkFVX6hdyeCaM1eIivn7Sj2zF+guJmP//DKNz9K1d6+63R12Vl1FfvFFylwhac9E952f4O4jOJvajKrw3IFc7fYK8W+BCvKNu+vK3dxNgqf2EUMK3z3d0fCtEg3xhSL0D7gJ3aMhQ77LLOpTE5XpEdWBBbf8pTcbCP6iW77xfVlBNxtslH2xlCri7PtoviS1sQeYSScakePIpIvx5exdwKLvROYrGiKKEOGEwWOENcyFRGmKP/VV34cdj7YdoApMnVTJF+lYtAp9jMmMcHMlBnY8cm9XUvhsBzhJ8UNiWL/41ZzGzoKiisFI/CgGI5CdJgw44iH28atJeKhQyZ2aJ0Kf9TgWO5wnIJgQ4FiGl7LZrP4QeS4ycUCI3YaV+HUFw6PYPMb2ZwGamxz+p656PUwqLudMaoo7+na2OpiZMDROelEvnvxRPfGvd3LqXsGTY2b7o2LWC5fBYMTEKAGB2cNJvcFMOFyntodfNhyB7fD7Di2jZ5Mo2YbArCK1jqLF2Z7NXGUo+9PfwczFpir93/CO1MzKkyjLE6G7j+jYZdg+1FKv5fuuIamwYGr8tKDl3KVo6Fnon2fn5OUgU9ZdM2OUp/yYZ+S+JS//rRLiX3KD//RpUQ+5fufcymhT/mWTzE+5b33uhRdO/x/3kGoumzOIsPx+kEFsTMs9JFFFBe8PVMrc2w2Hk4dE4TpYDSd5HF0zDEzq45afQz/t+bodWuPyapsOqtG1dgqKlOFL1xPr1P0N01/M/S3iv6Oob9j6Q/fjqO/p9Hf0+nvGfRX0F9Jf8+kP0t/Of0dRX+r6W8N/a2lv+Pp72j6W0d/P1donBhYRzTilgdWZKr4qWY3hCryNtADHRvoR99icMBvbg62ELelYyh9P9JDG+BLjylmkT7zx8Wg87WM5Psn8d0937hbz1YWR6dZugR8vG23htmIvsiEG8w2Bi8tyyuc4y3pY/fwnewXjAojs5eFlQm1mEoOyeTvu9L5A/ucmldC4fmsv1eYt3OXCyJdNaa6K9t6bH2yTNphFa2iG6Osc0m+iZvR1JOR1c3cQNBc3cwG0jY6IoqhbnkbZ41XbbBkUQBb61duuqqt7kk/KTNUGemaTMT1mlLVBoLGif0HbKWrxJYcyREO9mw9UJsd/2laT9GS3lPHD4N6PQ+TG7XJjd9DA8pjJxMlJhNG3gYMJS4MFpDKSFxuObQXkmiIaQ8l/8rlVB8+2gjiFj5s8p3orIxeOlaokneIojJFE/I/bij+BUxeOHs64G2cIiIxPmSprqsNOF94yw8DJyhxzOUEyhnxgZJyQDNLlD/2DqacjErTnGXEPSIRkKlfYvGPqh8GVCd9vARLNRx+pZQzkNJ9hfEWxcRAT4QOml/k9yjfdSugqGnqLz93VY3+Lc2iC68okcLfdFsZ+RP4gf8QzbpKgS7hHIGVOsWNA3huvKKu79kF5A6A9iIi2Yof7iQAB9B442rSOjshhvBMsHDXf8BdDyolPfPg39oDPopZwiu6EVXv2U5IrvIXj1Wl7OCC6q5LQ1I+WIc6JTgRjqL0h7mW59RiYDbLwGCQymZkWlI2AqrLMUYqkOl6CM/KqiQIxSR/Ajwecbp5RM3goet7HLGemomHDcyX/rQTn+MAWkBHEquSEM0EhcnXwBfzIlI2HIzFNMOTUGwZAucBjD3AOGMc22k+Dki5SPBMI4em9HK8vkiqknJaehpn8I2dtWOgPRKwx9u4QyUlT0EZBPi4WJK6MFuO2OFdCYtKL7gGAc6hZh3F9LqwjHBYe/hChueXaJc8HIZqmNHLc84cm0wL+EDwWBDMGYfyDSh8No3MV2XEnx2QdHYvAxs8R920W29tdoIit+SgT9T62z/TWaMNPEEPhBFZdymjWSw8GbN3kPCAvTYnZad6DlWW805UPHOTO5pkept509/2N5Nm1ZCwYQSzQtB1u9xqdrs33j72eLCTLY82A8YzsnFXZRH5kesWS+j9ePL9R4MEKu8psYjIqj+ZJqCG9IPtsQZ9RBBfZpxp0qib3WnKgxF+MSP8S6CYiQ6OqXt/8cYrOxtYTBOyao9k1T5uTChMv/qF0tLZTUuYMfpw987LL+3FncnQ0PMVZrKxG28jaIBiTb9eBsnG6W4tgkG4kPr/wmUafP+OHX0N1nwOEcSyOrMyWuJZkd+4B61xJhFDbKR3MwKgczNLJEHSIpGUAzSBCcT7z9mItHQpBalJNUSQesx0NWdbX5vPiJpYwiIttgOZjlBXjBWdpIvABXBthyMZxUF1xf6dXbtQJEdEB2INHDcmdAg9nkNQDjiJKD/4UWak7ULJPU28c2dLk5hmQtnzObSKdYWW02DaJtQbJiCYBZDLN83STmQ1kIDVBWZ3P+1foxtvA+s1ws7W9xYiMtkp2gKy7+gp2lnNrO7qKbpfT8Ex2lAQpLvnHpzK2TH/QWsLpcndypq2AggQsIm9w5/zUU2DwEcIBU+0u/bJxw9dtavn5KOqrMfG9bpRkPNGAVIyTbB1EAX33STi1J9idHQFIzWNq2i04nQHlnWWO81hTkFuDUAfuAFIs7qx0DllHKWJhqWlRsEKMznv4rgU+rFvmygqlLleuDWshiB/A/I3vjxW/Cg/y7Td3vX5q4XOodDdghoQcYOacLs3N4v3g1SKwfYrBYNOA8L2JFZErk/imWJkQSBIwqb7rDvCDTRsayCTKlFhNFauhnqB0rMiAWapRGahFqhpiAtVDw2rNduhpqMlbqO7JHHQNNgHVKjiMDo0TFEPJNps1151PgjVub6ytlpEmWq+Vk1ly4hNvtQK5IHMx0iHzsO6VFTl7vC96FITU/FObDKF0JEWm0lE8EJFvFNXaOOZy9wIAKGhpcBHW2zIhke/bXD/C+TArKruewHJyepHjxs5YgLTX3UCkmgB6awXNnquCgi656szRBMRu1wZMT0gqY5p0+rQjdShuBrXhqk9i8GyHfqdP6a0xoo+0SGY01t9Spiaq+MwXHychvfPPNlRm4/TfwniGUSZz0eKyIT24UoVkPliyac8+adxOhzwTtR2xhg8yHsx8T45YSSvvmSZUKrvO5X6KmuMMYVjgu5gk+t5xzbpHICCqeWBIcDb9yqHunTCpJ7eWsSNST1m9hiwlIidZbNGafXu92JDuYhE8sTL1aeb+hDvoYm6YrXXQ0LoIX6LsgpE7RICYrGJ+FbepZgWTChcPURNa6zYZAEQC9JPNoA0RAkNe5fGnFdrtYItxlEg6Cwj9kK4AeVCQiJRrigAeN3UUR+onSW0FFV/d3tNSdIpI2qzTD+KO5fPdlmk2l5EPJz1/Ggj8QtR7NyxH9LYJ6g64ZupDn9S/C9TgeEeqT7+b7g/8vJXrZT7O3yPIpF4jm93PN9wfCIzQMwjX8T9TB95po8c0/f3oo/pOyzf6ghwdUimjzzTk7hHfs+dEZi1Q7qRjUGyqiFZxLDSmKcbko1AspEnWQWSldB2DR6XlyyBkyyRwNArX3zf+mVJSqkNUsvISZPIS5P0ej7hl3akyWCpNOnx14ka7o9a0iQ6jDTRUt9h/H860kR1pIlupIlqpEl2qDFRKxuTGk3qcIJEhs2t3RLe/pUWKWPXqQjpJ85C5PiD38oLDHS4RxpR71F5d2UGWofE2/mbhxJKTiTpWreotsPBdn2hJoSSagulj0wKJUl4i1FN1DWIpPruCUbCamuA+NSa2qvBeN5nJe75ai22PcDvMrk7HhcXeCHkLv81ZOw31pdnCY1q+jlCd6uSjC4TJWUe8NCJopDKhNgmAiHIcW1UT8PCbuih7Hnphn50Fcr8k8qEhWK1cQX9SzsDCqMRZejGj9spbl5o+ZbbO84J2tNHCNDvaAYtzKbcoOUfwwj5V+Ve19KL3/Z8fHFOFNDjs7+IjCK7bNws0vyyxAvx4yEpTE9kEdOJLGImeNbcWoQNz4ZuT/dU1MoDHzJX/BrMDp2+i9zWlOPP//jSidkn9HJbN0IbjfidZYvy7028xh5CSvsMIav6bKXrbe37f7Wj1VreaQ1s02kQEzwaPLUMZ2mAbfgaLA9IXvOmLuiFtuJtRJv7ljKEZABKyUohgfM2aDHwWrw/LKdLPlm7uaNSLo2nTWV0DpQxiSYh8Z/o5dtcSZlIrLrEhrzzP4uErZwQI4FaHOBWXISWoucUTiqK7IYwX1DmUGoLJejK/TKlUzlAGs2yK63XsiBDWXa/Xig6dRRdAYdJFUh7kdNA3FYGfsT/ue6UiLhHvM5LQYo6X9XE11fjy0uokK8Z72dVUoCQ2rSHjQ+sJm3DDG+eDgdE16u2p15xypdQ9kbRMsSXGPcEhdbAxltE+F2Ezt5DVkXCABQpfjaLi8xWzJPYhxfNS1DiAWQbl/8ELJP+5vZfo1YumxISiqEH7gSwXdbDdlmH7bIJtssmp15jh+cUpgXC1goW+pAGjEnsnN5hE1Q3qM/Yexr1CDGKmUYgBf08ICQ5Em3vfn4rRlntDvgkdWYEEhy3rPhqdsqoALvKY2gVmqb8SiPnWMwAo+piCeCZScdeAWhOBJCIg/vvM+INQ8Z4aKgB2eKxCsXfi9cXeYW7o1NGFkyBq2wKDBzFuCtWS5+LNfDRxd+L1pOFrFhrh6RgIN/RcB/A7r62U9wmj3lpZK5xHDPrpgyeYZglTxQiiTjbWda4HJBfNgWxrilCzDqMXubQET2ykyWewiL0yj62kXWgdMbioRjY1SJRxqjpNeW6avvryKByThEJhRxjVxUGFboFxFF2HZEjZbJj+p0lErJrpWkyqDNjWuOcbeXsUzPTNWNaZAx4QiCS5wJ+77+cxBE6Badn1IKuZs05TzdtAnypU7k6hRNfJWWO8SHevt3yb5VP6CP3EP2jjjlGW13T8YjxZFNGdwj4pEx6DtA7EmKhX2yW4MvZbEGdZrGfiax5haN7/PPvy5AycMYi5O4SiZah8IddY0NU55lqCvdkMSKBadEdTC8Smw5PdfppFUsdphbqlpsljt26Hr3ZzCgoxiKR1uNnS9P3kq4WmuWQzMc6vBRPo5fQvZRTPLwQUEh82gvXl8dAwRrDj8Suc8dx6TulpkhNOTWl1BRpeZkhdV359AV6pd9n2DFS7cJ8UdjM2gX7dPuMhT1FWQWu/8fYEH0e4ydCy7zLB7wfx5ux1QahFGvc09MpzfLTM6xxT5ZGtLSj5rjwOlRQNClRtYkzllD1+OmZNpIn3Cjmvv4clbTEENYSkATu0xf2WNNUukE+ZdKJ+eYTXU22YOkmJe7lM+mXgPk59JKXIzKUPRCGBGHYQGjhEmS4gD0W6+Fjx4FQgMyCW7pEANlQjkBMYyATrEvoFCFAWOQSZURPPICM17p1G1E5+YR3mc0dvwHYJjjipEZqWE/a9Y3LJm0Cbb3MeP10pm3etfTWmKXn5j4OU6dm/zavV2VXaqXZAizrhBP5kNolLN9VMLmyl3NKv/8nncjNXrWfzmpD8pxCNW6Spym+ii4otPhbPIZJqv2h1ER1mds8eHSJYoacc+xtvYueralLGio5i/RrJF1ervUvEjlenf7lv/nind/6yF9+qYIzbOd1E1q65eV8pqUKsg8mcYjTD/SXUgwm0U80tYQRYP0ktJr1E+30mDLC/BrDp3Yzluiqcd3CueGt7QRkfQ8lngUdlolgc1brHGVSV7TpP6OieiSc9caHsJ27aPNe8rNf9+wtL/9BcczmhTLOfwQ81aL/N042r0D2/IuTyWc3IywquQhQ2/LaX1ovTBXn9tf3apt2dizF9fVcAJtw/zZBUR20vQQIAt+su9FN8a0EQ17vFBl+bDHCLw2qCNRduN0NqkwxzVN4EfFUXSR+4ZqAAkEMudeoIkqpX5ouS8uj9ses9cKTCFdojcWxeK4Tk5jo+XXtVhKXbWDie9Z9R5PGatJFYScghccw9KApL0ugtkA2zoAeziINKLHsiiD77UchdWsZL5QpO3MvsChDDn5/Bb9P0XuLGPfg7ju7amGhXLVQzkgxG1t6iVk6jVF8RopbTtKbezrm23g1t5HV7+fy+1Aq4e9SiR1IEmeRpMwrHEP8DG2Gn9qnc4yfsZ3Cz5TTSXzYk2n8TLckJrHsq3CoUgkbgx81PAGCwnSgt1oeZQE4IdAMC7Tf+0JnY904gcbBIrNvYfdQSFD3LVr0Zlm2lKa1DmHqiVs0chwWJ8vRDOh+4vvx8r78Sgb1+7VMGbVbspJ+qMaWZjm+m5RJW0b0ZQm7D4KVY9KyUelak8/XdPYve9uUjNdKxqZdSd7dJGNkj26ZTXjagtnkWtUYWz4t5rBhKCfWGhe3xibWGLfELF8bLfC6jBHrPsVznBSp7VdW+0Vo2InBULkh0dWn3tdEnFhUM+9sGYvuCWqFfbF53OSf8LMRoNbm4ahnwRY1srb/ZEZnG6naMZcfyhOWlY2pLBsMOQZHFCdpVr0FZUaDrLqWHyjlUn5IsmonP1C9V/BDlFWX80OYVZfhAcu/K/lBs/G0cx51UoVA8PqbnX+FfDD+XCsedXtbwDtRSpz9QmcSD6E+HmWPGF+dbTLUChsl7I3OWMa0+eTUXgfl9iflniSIyfIlJrjQmV3prpvQ75jocR/iv77/yi7iQ7dxJoFGGtwvGUVqfElay8hQQy8BO7SNWMER9aab4Zf9963u+8bu91+tK9hQa0gnHulIdI2hYgNlh16JLYBucVL4wl58ffb9O5fgyzp82Ta+QPiaV4Ws+2y0WmwLCK4qH051SpHzNtdbxe2LlEj80JmR/wwtWLM4kDOIo32U3x2uxg8OkTTY3UQ/CbXEAX6aPYTG/iwS8p1TYbjdyJneSVOzrI8PKMEyun2HcsdUS1O9drZ67YuXYCXk2q/6k+7RvQkjrTmJiMSP3St6RK20/KASmpUgLDaQ3CJ0O/WW4RLrsbFhl5pDq7m8MyKL9dg0gMl+rD9SE7ntIQxAjB8/AKEMQGhDDAD0302NXSURcolpHKAo4mIjToPtCiMS8ohQYspUxTPoGcug8La/Xw6FOCcmwT/5+iurAN8Gr85VC/n7r+Nwx3PKWeP+v9nqYmzJuiDFKCTjkC4tNI/6kqXp16EXIKRi4MNiodm8SPw4vprXKF0+j226UKRojHNvppdM4N3qYtPSmRaYxtO9cgxo5BY0lcLwU8Uy6P0bCNphccuRYFFj8cdYAkD/lz7hdHsFuilvG/HGyKhUZVDyuWoDx19ZD+eqM9YL7jt9Tzp9B2jscodPaRctqU0EiQvUbYKkUcWTvY6IgCM7UWU9LmedtoBsTbkiOURj0hRVTCMIUx8vrLyv7KOnPQ8jEIr1qogyCcpyn5KOndOtELK3n27m/KhdqwSvu2rknNvU0RXOaUc49/iqdIWzvzlhOYFslgjk5tA9Hk138G0o3AMQLyAQ+2hevr6+7yuII2x7ccimxbOoVDnE77wqs/97zDYGX1d0uyMr0PjQZv9ODkw6rsuEyzpDs+iweUuXLYlt7qjx+yrg9wjuGOjdCXxAqg2hkICBOElcFMwLOWUOU5cmkXKeDenlxetLzkMvEWdoiDnct+VH/+pfvfRF1ddPW9jy6Y/9q0sfv/3hu/PfhvvmHkjQcyp9EeJ13MPzVyiy6aBiq21+EyLr++OqDyvs+FewVbFqcQapYQ85Et3NV1II6gV36cWnwx1k+v9BKnR2GQ7/ze66mfNXChWj3wPMchM7VV9am2PZIOHw1PboYjH+0DM/mWbCnEsnt7CoNmaUf0VdK3zQCywKqWK3kxXKTpZk//c8gsh/i2JDEeYJGXIk3qEc0ZUp+AolHkB4iGgrhLr4glCPf/D4ay8+/UePf/fx/8Qd94O/mcZhr6OPnGjHP3zcpnTAmPZH7tpLBDu0ySvXn2z4wuYB4wRD4RUsehwHrf2D5nE0kkyAk9a4YwGuUhfuK5OFcjhBc8NJmjMt0WeTBYJzjx0SwI3RaQ+Ac6/55oWFBZvMwzrtjFEDMkaNxPpUJvTJQ7Y4z1sZNMeoImGKgslkWG8HkrV3ue1AG2AFzUeHkau7HQhEUVRyy7cb8o7UNFdW5OwRREYZXY3OJ6NMdoNc0cgbTtO04QQiJENlenOlLtqHEzhEiMUaQe9DysZ8bheA1rfjCPjUWtaw8gsWCrrM8Obi6Ga15uhh4IImGm1AyjgHgYNwGE85AbCWbooJrW4wvnYPpVA/KYPmDPjfgv9+9/yWX+L//uC0BRpLyjqSPHUF8/Uo0Ug3xWyyB7kDzj2sQU9ppORLCtWUWpfGXF0M3NGw3hxdhcUAVEJESIRU0oqdvlA60QWVKhJPkkDYUXZkidDGzh45XKD38by8zdvhni2X3fOHr9n4n+6jGXMMtRp/FJhwHRo6xg5bn4cV+FKz3R5HycIuaVqzsKdcT/1ZDxLcyx08tgzgVXKsDfET2qTpTpFAwFuCZzxfjueLoV0nYQijM92RJ0Lkrz3tl16aX/j4C8AbwkDFeur4IRsu1mOojgF12vWA4pCtuob+n1/5/JqPP/6N0171BBtCv6QVOVERdqqXiwBalTSAlMuhjBEWTFTj9lntYKtcK+mg/uar/27Xhx998AWvHAf09rT/+qLk69IH1SZwi4+eEF+5jSmFiZ5yrW2khJBE/b63HN9QrOdpRxcB+tGDjKEd22EX9sP0djjRWxglJ0cIs6frbJYJyQddbr5flce5jWLDh4rwR5vdx8p0VoStJYfE3XRlAz5hZsNf4PP2jU/Ww8ol6EzOMm+Vd/Qbxmz652WC+iZ11l1TltWTwIPgOJneJP4Di1Tg2aWBKP+lDj5SDCEntY18AgvtJHMcYI/lzdscAPZ1L2q6N8T81uqtafUztFA4pHtEE9Ix6gZ410a8E+voSVK2ocTLpEMT3QGhX4AOp+gTTtt4yMuxwG4DfKCX4XzTZZQzKIec3VKSkUmGP449CsIicAcBPRrYnRv12Ck7ZFP5TEHpQTs98fdaHFcp/JEIOwZn6mTv3+csj3VWQ5FHzQ0RLSQ/zSH5aNz+20In9qGXQyd9ou81OiVlG0r0o5M+Hydb2cDl02uySOwE0McCDcAs+KfeDBWu6XZCWm5Xr1daPb5N1B/21E+1r6PUpwMXdC2yjI0wg6srpIEIse/equQYlD6m4RI+uB64ZRKm/F2qXHM6uRy8QTazyhBuKxeXa2R9bte4JcMzJLDcM35xrJt4AyYIFBRzyvWMN4gSezHKsQmgAue6Dc1nnK6uoCb4m84kZ2ntml8aAwr7/45Vu1KlTIZCds3F1vpC3QptUyETu/TEptz8ITajI7fx/L5/6F6w67efV7PkTr2avTr7s1GEUzSw0i9jgQJEjWg8fllr0Xu9tcg01qLjxVrU3bZpXxJYGwtM11pkrObysBY1Ub7qfZ/GWmQok9iKjBjrDGxFMduKxHZPpY0z1gGVkY15FjZipDM2ZiOdQqZ1Zcih6fxOTn7gJkYCt1JykGJxDLSm1+IjICXe4NMsql4ugwgQl5Y6W75sWvrlFc54WKTO5sPdy4u44w036NobBjZyYWY492Z6cW03Np/X41TRXlQHk09Sm3zeW5t8ju+afAybfMxIO0xtWQZTwPhmZHEGHemct+e8ojbnGJhzQjbnhDDnMF47vYomrTlGDCx9Rq6otuZEHWsOushzMHpvJ6q0UcuaE3WsOdGhGhNrDpBqxJqTdkwGhFsjxpz6rtrdqmVIjyeNOXEPHbnhOEsQurVjZn9SLvQ13pJj+iw5YZ8lxzSWnIYRHUEIUzjzej+FOxN7D5FbarA2/tZmnLPFivOKxogj9SS3CylNmnDgVpFRlgkDzpySoriuM2rbb85tnDCPdO+ig1RBw41KpFJtvkGS+NM35hvjzDdGzDdczJol5htzKPONscabb3aprDEtzzOmj+uab27rMd/copy7Xm29ObvPeLNb8Sj02W5uExs25oeO7cZkX1BKb5fqA59brtsNJ8LZhPW0nUPGcB5ud0T/l1xUIIV4SGXb4JyyW0fBE56ccoaHutMNU8kJ089LpV7sDnXDPCC79Y7OsxLZro5pJ5VmrheMJDyFLm7x7lUzbfNUyDMojFM+NTqkgepab6DatSIDla0NVK+u7VOgaE46t2Wd2ioXWD81xqm5tnFqvjFOza/EODXnjFM3/jQZp+g+cb+tXwydG0IOPpFLy89pDE/eOgXbVBE4M9SwZYaaEsPTNAxPOTQB+jJ1Jo8BIkBIkL6u8WlG0HdLy/h0XMf49Hpqomt7WmVnbi6O6qxWMdzRsranSGxPqyZtT6u87QkzJjLgf4e2PSFHr+1p3GN7Qu7xcrYnah2NdW1PR2EhflQVim+7slFtezqK0mF7WlXbnuaZfXKxPa12tqcxbE+ra9vTuG17Wt2yPa1BQ2vtuG2aAmGz7Wm6OHoZ29M66s+6xrRwtNieju63PY1tRktOgqZcPV+M7Rq35KxtT6uW2J7mVLGOOn7Ihot1bCZk29M6QHHIVqWhru1p5Q2hX76VgdieutWvwPYkFU7anrrVeNtT1LY9rerYnlYdyva0qm17AqVUSrTfVYewPa2+oVh3GNvT2K624ydkexqjtyuzPbl72htX2WLgpU95jDclFE4KlesrZdezzUHOGgRiZKBxkWU0liUSzwRcAyPDceAmXh5bqudpzp9zDXX5qLbJ4Wi7xpkcbps0OdAn+l6bHCRlG0q0TA7vBRvKdEaf17PJAUil1hubwNMIjLXubprQmRoCZwpo+pD2mRp8tfpw1SJtst5+E8PRlHoU+n6UPQ7cKBgSk9uQyy+0yq9FwbXCtKItdWwLW8sZMi3MsGnhLG9ZmOF1oJ0RJfbpYld4er9dYcY+/Q2sX11MhdpWBbghP51sAFQ5vuhMdOFn2BkxKTyj36TwdDtzsX2GFOlW9oymMmdPQFx9NLsCa8LOH/ZbE4KuNSFoe7Mf3MHe7IOuN/sLG6ekRmVgl2pZqyvveJdJyllyrgqPcoJKHqsg+6oJzfYI6tYhXcG9FaKIvCJyVq1QxWgYzrY2ck+vKBL8bC5S/NDxNedQ0jme7G0XnROppnrT9y7tO5E6zTv6J/PaJWb/cqls85upXlJpxCG8pZ0cT+nvoTX83mZWLeN5eLoQ+G1BFTeSZX5vOYDDFnuoFxF+NhYxKxROrykC72zJwHX33UJOb/yqvVf18j7RUkXJR3qHVibAG4qscZLWfF1dvGAjmy3My6GOBfQ2cEfIu0csOGpeIkQo+Nok+ILn/2ejSDZ/E9KsxRddH+J4oqlHumQUWHHfT/1olwOrKaEe8qEMeSZDLjqrTQ815GH/kIfNkKOBYtwe65QUaRlrUllbYz226Xs6Y53Ol9nEWA9t2hnrEY21NDGwCX5iN/JTMvKpjPy0jHyOBSnrSxjHnh3XfPnTl25RhOP8NqSRD/2BR39QS4umm3AMJqB5DLwShuWQ3i+PGZvjHxObqH2GO9pGKbq+DFZjO+5iddyH1fFSrM4IViOH1ZxatiOb2XSBdwf22GlKEWIenzx5QM2muEa7SB0VD9pcb6eEplOh6d+NYthd1fb4Yr1yEXZYwo6OgKq1P8gk1p3JcTDNOKyAnKMjJWehYxsVA0fL4w4tTwktT3spNr2MFJt+IlJsWqSYxtDhSAZxTIKf5rAHE7cGlvNfZntZ/qRhMF8Wg3kXg3kfBvN+gSAhoxzBjoVghVrz5libP6shgthL4JQwni9Du+MO7e6MwnD7QOj2CUtjMWXUJJt2ZfFAqHYoVJsJ1SaHwnkoOD+cLB51BAemS0b9wA4a1GM52UX9aL4cTqB+YEcd1Gc16lNMYF3inXrqBHG7N4hjzhWWwSyTNUeO0fjR1KVipiWurWC8TMSQNBI8jOyohYcZm3TQkCxBA1C1LBpG4GFjYSSZAhUOiAqjRgFoboVMm4gyXoJOEeqSYspRYdpHhVNChbu0hk7QMePqCZOS7jXSHmgbaauQTachksVQm71wyf6UsoD6d2+fuMKxOVcp2xZdnVbOWRaBEyX1sq26Y7tTaGWJ2D5l2tiu797+PPOomkh4aDLhEUWYeF8YKvIhn96uPT+C+g4S7+H3flWE+H0UPMl8GoNPExszn6b4JT4dyIwydJbjjGtyLyMh4zFiELUOUQ26JJz6TxwWs0wcFaetXPRlgD/Yy2QvmbIFNuFQAtNcIUcYEIKdgd+WwjJJ7ghhdK7ie7GKVFjqKNwzgCibKIB9ehTQqNCOxNZdrj5jvfeVWONkEfA45EyZbT6Xa0UMEVLtGiguln5Pxpuya0+mMg3Lrd0LRmxxzBq7tis51s4XLSNSZNe2uQWUeJSNZ63BbQVoG2fz+UT5KrxEC3uIV6hNMm9wOp5SywkxaCaW2K0J08wMHukAYTF2XGNOpsGn3/BkGnzRph8FnXxcHSnHzOsejkGy55j+g3uTHGNqjnG8ocx2VEt1cppb5jUMotBZ1WKQvyHgtnsju6E/jed6FTivC+1ZsTBCtWGjP/WSv8xJYilnViiXC1hi9b5iuEJCN3a4l0/VatA3QpCmcDsnwh8JoC3ClxsrvIqTMilrOyZSbihuYNF8y2ZK9vO9pbGmozkMu0RILjDTdQmA1CHCHPNmw1miYAt7lUeJRdzcUKwmkZyQSI8ZrGFh+F4V9GXW5lC3iGbtaizxKEWE/LB1G36MoYutKVYJrdpV+HiUNbISVBD9qY+bk/2RDpW75U62A9l+HreuCsF7ZNBXOi2qW55J1ERqtQuhkDKIaDoVm1MobOZ8iZpYPVa5+2aShrccuXVjGIed+dhqmW4HciSypMz579yAD8Yanl3FY0heU/eaIvAYNVxpN8gp/KEUQwiomOYlUkZsY1QzhJMeCs+L9pbzIqPS1C8HF1rexy0rehZ4JD7qnFHxdkax3CHQvSvC3+03Fk2kiIDnykctRMWoUC6RRk/VknsokGkyNe9NXY1UQVg08SnkT5OpI5dqzpn4kNqYw68QZQGJQGGpKAVsbBMYVQUAamqi5MbMARFOfjmxF4TjlqSBlCxieEuozlNBUydJVBXcRcejZ2mMNngfsOyVbiMp6JzKk7S0J23UkxYuSeskZN8OTUzcMrWdKxCZl4rMC0XgnYpFs1QGutQSGyXFz0aOmpI/wPfosFY4sOm+ve+ho31iFBT/1ZaDCbbpbHwOa+bgbfy9aD2y4ryVYqrm6K70P/DdYO/JjRgP2CbNhBtZ7SNtcIVlxoJo1N66d8uVsYiSKRe+CzwwbVMksaZAyQH+BIpVNsReUbG6UpjtDWbmVdAJQruGbbkurEunnUaKDOwUdWR1oe0a1xnFnQHgikEWEzGtGihvgLBL3p7F3TJ2DYA8GlHNBjdg2udurWVDxUC6u4ZAIOM6PlhOGheKJm8Nr8M2/lJER+NlMTe8wAidb6FTo3ndxerR7U0KGVBo3wBggduyOTB6lJ3GnppoDv48/2p8W23XIHEN6pMLkwCojBVYiMcpu0WbhOW0Fazkn4JXwg0euFK0+jKWcnB4wB+Jb7jLkvxq7oewCBrauQpKFRkmGsRTymzmgkj6QARDdHbYjaY04npC0kxaadV2yh1TdVExdrI2Ax1klUZfM3QSkXk4GMPgv+xbsENG8mieJughMDt04Q7QmL8CC9lHezgEhiTYUWveSFFp2lxzBSn8RWUih6kubU/i6QZBlMIf07KIOGxMCvys2zY9RM/QwxFpv6axuw6t2Wcz6Qr+3dMK4oBejTqrDZu66FtD8L032u1p+uQ647omhWTEH4L84QHPLlQGE80lVK24vLlrakJrML1hnSciMbJRTSwS4SeX0Hm6Fd3JmmZCA4qlqIZIV7PUBXlX2d+ERl08JM8LuWEgmLlGxLQTcDUqi1BEXyQdggooZCheJ4NiWAnJxULcPoAYuBEEL7c1pPiD/oGhgO5h7LCzEgscI7rIGdIbPI48sUFcsIWUns7FE+/I0hs9whcss8AziCqjmjhyrtTlsa84tmAmI9hSisqhh1kMsqwtzpYpNzah349vLYJGvw8AldqKQRKP8hLaC154U9EvjKZoc5NNb7ENXjKWBTxzzp5iOmsZ86gz0/Q3nt/T8g6Y3kulm3cb7mMhlhCIdkpKLHi99sDdoumM0MORI1xG5QA60lRD/sLUQ5A8PpXT7YtARPTlVDn9vaoMoGJPU2P0MOUU0ybOiQgUIWw7tRdmXWvHWcJLwQ3ZbcM45RUG/qZ5lXFcaVyUSwm/UcYd1q5YmUOAbv2asomUl7pIkaLlD/BzYjFs1FUDjVpbH/0Omh3eE/8ucPtKRLn1AXgljmA3HHH2ey/ADX+FlguAXJQDfKpDsOLPyRrcGQKRS63W7W2X9ji32Gx8e8yOQswdi8fQjtiRPxEmTWrO16hM2xHagi1aEqagcDZjOs1KL/dm7/UNUel9e8XrDQKbiKXMi5mm0Krm8ajmcXXziF1vMQ8kiFMsHIJLuKYRb1QBIvqH2etQqIlWgBrKmRVruf60ilD9UXbNHto0P5rcHeza+XIdOQjM30AHnyhpvji2AXK91byEiZqkTNrV9hg60VIcJ1sST5toO6OSx9mn2WOxyzYvvMLt53aG+X2Nq/BR8nIhI0XrDd71ZGEhNWBVsVoO69xwPf773GkLVOz/5P/+jBiScq5pfVrrP51Gn9aQIeN6u/r6+XK9XW+z6+2a6+fnf9nONLR4Pp+w5k7YDIgYz1NmvBEyMMOT19Z8iZ0W+ntlmawvckpfZelhFaFpGg/Tfmpdc0NBcIp2AhPKUTcsFMfid7445tDIFAIAnx27AnQe00EnF7HUngAPmO0MTNGt+q1xRKbRRiK5IYZgvG8YQJgY1XZ5JaUiRyGfcAipobrmkggdBAGtBu08rdVPNDrZx0jaRw9oRJ62MO+gOE4mXK5PoJDeFlkXGrv65AaahNardvUN8pjPehA1QMSEL2ovdPj8yxzO4j9rDSskjD0BpB5m4yJoEIMZsXRr5PAGnvpgSVugKkIig5CXC5iA3BMUBI88p1F9WYcJzD5oB1LYamnb2XvKsCOM5dbxiKWQCO16vSBaQEu5wlKO3bR4wdtZIwCk5hb9lFFF00MqOxXMrFoWo4HctZqC6EOrUNVottRidB9jVIZUFyWNeGZd2MPYpRGXT+OFeSRU26GfsEEOtWA2TgUqvx6QeRJgiVbqkoCkiZUZ1SDWnNCtaXRrgTbc21CnW1jIkGZ/pzRMbG7Pwk94AR9Nl41gdSbM95g38y/JVayFbu00EJgBrzh5zPGc5vsuQ75BLdyh90iUDHS1tctCyyWMSv7nO1AgYSdOWcIMKPVH/CZnDLVN3DIzpV/ZesC6SgIt1jsLosZzrLyvAFi5tPN9SSQBqjQ57PZHROaub+AgzKo+DiFgN1794YSaFU6E6JWoDq/unHCIsUMW7CcMxfCv7XPbT5s6UudsfQ79oKsRx4NJnEUVMa1fLwF1sY5pxK/bNA5diiVHzNouXb1S0uU0wnkM9wewtGc1M6vHJWUDEbc77OJhyNGNT9KIQTjk0xAnaaKYJhwyAYZqozoW8kthV5eE+3uCfJ8r5lHaCJR7Rxr1iQQUha/d1xZ4YaMDGm5clCd3PKZnSLroHEDB4gXBxaJ3u0WynwxENYRdc74Ve5bQPOCrzDzqi2F9USmWIgMPSzdP5rCyKFiRk+7VqXixmQuwiVo2LcXJZtBPxGsBmzkDn9dhpLZUars3WFLdPT04PqtIG+Rmjb87h/CUjlxQB97YwOvi9xBe+CRa93YFLEKrr36zdTN+2mwurIQrtLuVyqb0OPQ3MOBCmE6Y1Cj7vrgApWz3rzte6BqjIv0vkMXeq4tIPF29D1TiTOuyATAAgQ3tgDcA+JY/NvuPACJwMurua2WcjsMm20p/Q3TWzeJ2GDoaOKK3+BiZ5RRAHHTCok1PIGf61iJvkJNnYqvJfBlyLJTTXRn+tmLTyo7pn23FKrj503OAP+KUrGa+ImeesmPim7ilZzPfZH6x2APIuAFkDNUMl2YKVa+alUDVdgatNzwjyyleuRIApMnT1kObZ/IOP4jklk++ZurCNpujey/iHbmJAhmzArcjhnhhhBahDphQyxikygoN/mjDZcb6q2+hUhrxBp1CE2KnoIwzmP1JCvPQlzn3qpiG7YiUY5wZHtQoa7oI41FjGIKphdI4EnslLtPUpakz1ospCPM492paZqpcnjCfImfIOUO/QJLlaEiMCE/HMJb1p2bqb+aQFW/fXXwEc5WbTWLem3iic0gqc0iata/ccvSvW9XoVjV6ohr9AZasVS08MZNUQjo8F8UTczLfQjjn5wJZYVN/mHkEFQN3uhY6XHf+xHkWNFLfRSES9WGRqEMnUYeU9NCERM06050Ue2CiWM9k150P2rNB6kqlS2eDrCv2TSP2u+X6xT5wYDCfdm6IuEYOyOmd2CF+JI5xPUTiRG1X0ApiCtOIl7ARv5ELChyLwBOJu9Ptr17sBkO05euUDyXs/QpEOk+JdJ6GdM7tNKQzFqjsnbCqE/PxqAkKPurWYnVDwXxoaxXSp6i3q7qSeobTsTzeVuZOmM+0stCXVfgjuUGGevo4ZLmx1ja3nx5tMQsU6+xAgpiIplCiFopFAkFBVaw5Q0w6YiRmKMr1EBPC9Ni+xyqNmD6BXQ0VxDxpgIIHr+F95tWAdbivOK5l4rAh4eZoQmRSTNfqT3OqjCuBB9DgtU4ssT43mcQFerDYlQOxjVwJm5G9ALjhtWzOmy9ePyJH+nmCa5p61Bb5CM81oQOJBGc9Zl0tviVvo2hguXydylpaxFHNsqB5fNX6PiroXtaHKZRxvkDwHUvSeS1BnTqbWw5ZnqMLObZDRJYPG1lOaZDl00wCChbyGRqsochy0RdlOTxl18sTWAs5U86Z2lW8IeVkeSycZhMoWazJC8c9ZAxWzOZQi4+Nyy4+5ERw6BYSEdzHaCHRI+A7iJHCWM8lXZclNl168Zp0W01YvJ7tbquozzZzNPPW2e1Ny8wwSQNAkom/Qyo1nOWEeTIhkF/lhN09TkKKZPtks4qQhMVJwerPpEPk5f/gD/DTrSbUuZYKG9eOKnFXhY0PN1l271zTcr8qeqCtaamwqqPCqv8VDsX+vTG4M0tf7DWUrkrc0MiKNZez3GUivGaSAzjxtiJ5Yi5MEnWRA8fH8OeORMEsUj423diDwpraXMgyG5Pi3Ox+N9aNJngqC9zUmiYWT/3CeXqAW1bIDuW4J0AcLvUt19h01u07UJKOfD0280fI+Cv0IQIFXG4glYxcZ4I6mTUaFVqifxtIX7SKKdnVQFJZ7HEm/zuxmUhoCM3SLtug1HYidC1yKv97uZ+Zn7+B52MrZ2X5O63bmuuJKxm1RkiFS4VU6IVU2BVSIQupV/s4m6HXooWYXtUlwMOMjPjFhKINv2IZrfH1TkjdXwspENF9jZCShAN92l9HtoWTsi08jGx7hZdtp6vn6XNoNG6Ioox0tpBtow0l6xq6wsiaNBRDS8SDXMRcmRD8hv4VsqyPi1Gz8ujfWJxq0DdVL5yxbC6G7fXYdIvlcnEQm5F1mPh7auEIm/JqrNGZIpBxhMkV67b63CMv+IlTOUrxFONyX3tXaGxhp8iLEGcLljDwBWU25lWcjWv16Cjqx2QS5+/pc0fvhDupZ+ajSOlAr49q9nE9J9OiEgdfZWu9vUg2EwzdmofGrU3WthLUA1LnEH2zouyIh9fDdJfaIfhL1BsRD6ycJZOyYdiRDVK8lg1DJxvGwinnCsudI5JiLJLiXLkIApVt0CzMNRyv5GYNxwsnNGsa0OyGmhfk/filK5oT/IpGdy5r24QjY1qPZQGDar1TQGFk1zXsXFUSC80noPnUJkzzAwdrzop4wvYhJud4qfFnwOmwPm8rWS+ccI2mL/zHvp+NBX1shSBK5KW9ULEw2BFYIOI2yiHT3jR7YI4JNtPj3jjtXIRs2LZDJNBdk8a6MCCm8SZw09ghYjus7RAyS3BO41wWvD+x4PQPwo4Ut09Eip/wFEjx/sm/N6ouriYz7DcB00J9RvWej+yqb4WYa5yTnUdkox/1ivxGdkeTsjvqk92u2KZ2qRMnCm3sL3N/p6nO7BL1zS6y6cX3U/JhJ3bXxDyxWt7yZjW9kokwBF/DcUhfwBqJi9SzwQMFFeX4GiZ5txMgNfPUnyXRjES8h1cUEFJoQWdhZEoKZUpa4q69qGBfFsdtOGmLYzXWE5rNq9bgZyizXCyzXCasPoKrNv6ICcctJpwS56NpnnKK3Ib4mRFBvQoTyVHCcOyNDcOrW8+nnZkJ3GIzu4pYJ+uu5kHFpEOunvBRWsMjJBgstFyTt7bmDlgYqMdT1IfM+XbFnSkrgiEYaK7nJ0R0mEzi/EdPDO7RtxbHNIN7DDYWjnElyDcBcR8Su26p//bRdvU8gQUZ4W/3oY9u2hp21/mxXQujirteby1mlBj/5DKn0Ib92u7WamDXCpd9UnvpHmPGoQZ5rqGXDa479EWmm3I19sTX7C3XTHRwzWQHj+Z+2WP2wf+BPdRiQamdfpk/vyoSHDE4WQ8Wjw2oyv5lnoBxceFtjFXPsfSFk+xafsqsRlDGvfincZd1AWJlEw72ntfwFKIuQgobgSgJjcvGPKpL6IkTlXNAz/jqZLvaRvvQYdSYueMffCtIYfwRqhikHNdTPZzIifYpJ7kzt/j96EaVkEenSvSQStee0nECjGUrMqMZn5j617URDymruB03xb+8I6tXdhfyWbLeXSJ3L2B1wW/pQjVfIoj1pCDWvUq0uP9PyuOwI4/lfeMKbAtVIEqPU4wpMBPh44tGw4jqsF5qpzedy8tuaZPHTSRAs/CUdf7LpaOOgyL0ORaoE/7MLrTanRNJXyZ7F4iBwXO6ZHf8q0ET2nkHhz5PJAIMDg8SUkOSU2ROWu7QFaRTVMSuqQRNSY12wDwKN2hp0J8b3fLHz9/+qzfNxxRlZSC32k3EJ1SsggR+EVqlrp+YzKTzejb/InDLWazOvyD+6aKEvoJFoFhpOCBW2XMtftfapG0M4POH6jWs6MF66Vo4q+n3OBpVMVPzydRa+8WpVVFqX6g8uR/XKLXWUa+eoN7jW6RjhXTkvNMGquk2kwr3uKMvzrXFlho1OT8aiQBpPPTtIMSRAyIv47YXkvPqiMQDqPb7cU5NEfs3YqfSNN6ZRfpMJnVQjrt2zPl28KutcqrkLW/jSz3++nI+1cWkGchXr/T604SNAd150SlxChGRhadMXELc4jKzRjw+0NtHL+ADTuLNGPPyxB+R8X6FbNrukpexqXhP2OHL2iWt8Qeg7Ug8kH25xQXXGjKIDK19R8Q9rIlKgdF6iQJjU5kgxT+Bg1jhXdXvzgV29tHNCz0a1rQjz+zLMQRnv/23sZas9Br57horOgnDLI6oRdQyfZi2Is6qD/ip3koS9IlIcuJQEj45IUp9hRJTctlaH+jUev9krfcdWa0Pd2p9aLLWB4+s1sc6tT46Weu3j6zWa1S71l1qotad6ohqvbFT63WTte5WfasJuUdkwo8jpGr/4BvuAL180J72nEdeE/ZTzOgNOXXA8zTkbz4MmqX5A/5DK+3hnrTHetIEgd20GyfTMn9XSxUssb6/IxmJG7dx14eImI3ova6q0HVLhakBKcIazqLxYyriuqsuhqA/kjyQe0TcdleRefWnGNUHUcdeWVjZnufGJ7LnOVhmz3Owwj3PjNczcpwKimpzcLk4ur23mcqeZk6BydlAhgYoEjcGoKEIO0QMgF9eXx5rp+hCgyqF4y153RrcKU/3VmvqbAIjILv1PoPrfwYvdWTzU6pmF9w2lSHOlaPMp9lpefIGG3vcbGndSYshef+LDXIEnImYLwo7Yy195hn1wgU5yVKWqGOashYL4mxoy1ZgSXmRo7OYJzIAQHBwK3vseg43XwIWAqmTOPRmbEsQNJp3uYfgGMLk/0weZttcTI8Ls+u2Fxf2Ni2/Z0GWHEUbHFmsPHPPAq0+aJUiZ6b4bvEcgDwT/aItYyyXhvaZC/O2pC7uKWGX9Gg+xh5lj4GOwD17GrSEp/kgIU/HD+EbPzN+69edKHoGZsdn2OMwVx7n1IrVUh/XdGwDZTHs7ocOccFO9yLRO3b6i0TvCbK5REUXu6i/8nOt6sYCu07Vj4tdZ10k7W+S5jZL0h0TuYD37rpcwD33K5tFks1TgYcpFu7dX/mnx/mIj8ju07/3g3de/vm3ffp7rqk5SvrsH+26bu5tX7zUNfUogfndH9x7+zd/sPcxl+sRSvrwbTfcuv/ND3zLJT1ESQd++663XnPTJ37I9W95lFr7wG9+4zT2/u6Fbm7Xl1rQzX/9XXvv+va3O9Dd+MBt7/nkW25vQ/etaz/4+Gfe98dt6D73F+/64Yf/6D1t6P52z99/7U8+9Ntt6A7efeCdf/xHNzvo4jWXfHTnzQ46qXrL73zzd5+2+r13ToBamr35I3hCsB24+STJ3Wvf9f/73t3zHDcBc8mWX/uvr/7Os/d8+bS9ZdyQCX0HewlEVrfvSJ63/tND8qmJjmZj+ehQYOv2TqN29Klf/PX9z/z2aQutFsOmNmAD8NRF5ptP89TB5/zN91/5zm/9h8227pK2eqGMmvbRRypDrf7G3X92/+36IDWg210Kubqo6Yym5sO9hQYSbwG8+D5xik2I/n4m+prSrXYHMe46beFGRHXgKcdR9eKdGF+k2IkUuUZSarxHViyTOeY0zQrVtd6STpy5IwnJ2Ivt3CXRqRaVLJ8lrEiNixdsXuhzYu5ejBpa8yK3gRs1ArYvvHbHWxflcBRkgGHBKhWaJE4o47pa+s1EsyxGCNIwtuk+Maiz6Rve7rCs80xc28nzHe+hnsq/cgYBvkmaKPBk+hFN+h5VKVzzSA++t9bsY/6z4mKqOYiznsfPtXp+nuY5VHBtKFgnbEf5fVgPuN0GG9XxGha2fPVf/O/pbcd9+W5uM2jjZO7fLv6qu82jCeMSM9txS6EkEe1LjA/JKcDSQyZ12Zig3Svt9zXr0xbnXWP3ojGJHRN1GkMSoJTAIpxTGqOHzEZNM24t2t9N6qSgC7kEYyfTm1WCeuoMpchCa05XgT/XWj2kZAwT2Vrn3CHVdl3o9si9Tcp9sWMMAj53kG+Xh0ogADRhT7tmttSgOqurW7Qz+7ZblhsGQdyVkqMGyzkFD5FT9gPlCUX1vT08mfFKU18MLSWVS6956YbTOYDX4D2ns90aD+toRleAit82Ei3j1y5Itg10mCm7M9F6+1M9pzpu1I4bzU/zHBv+VM+x4WHn2MhNSJj/4JHbzLGIJgpDdWvGS9sTUtLMse1Q1ylNS0lrjg3bYfxsKh8dCloTpo1759i4qQ3YADztOTbpm2OjjtqQTM7xiQ1bc2zY7lLM1SVNZzDFx3uL0M+xoTR3Dz2aapMz98nEZ3WT0J2FQzdnauyy6XoWDjuz8EN65bPwopYa9+veWfgRnoXnw2YW3jXgWTjZHh5qFiYYfqKzcAJM0iw8EAQWQ8FskTn+Hzn+H2M2nsJsPC2zsZyzG9lxMxeXZnI2xtkbm/Ea2S79iGgmfrreZTAp0Q8L/5jTbjGYFelHJqr9WiYqevCo6k7hj2ie2GUKnzNEmtMyhSd+RrnW8OxgOMe85EAT1wENAWrGVDv/483zi1qm3nu0n+eRKMAL3chXBihhgJJ59JTS6um+MeQ+wYn/o671A9pN/JIordODVfK10zq6Q2mZjZp2V64JCNZxREUQfzK9CYIxxDKSaGDeYb+YoVRgnd5l7PmoB97yk3kU7QyNmumZv90MfketPcwn81QxBpjm9cin3kKp9E9XpwB5Ja7lCO+SE4oeMnsamZcU+u1p37dOre03Tn+QlqFRRH0aBWp0La1QhZFbn42zgZkVKCMDkWeDrjKCwe5TRnalKvZW6nm9rTT+uhcoEBzXih4fVP5QjTqBpijZtvb/s3F1I1k5Yh0qY3SQ0fub6D0yWmujs+rL8OR56HJIvtpJ11Cl1+lZct/lx114PJsfr8Xjy/nxRjyexWf5qc5PfGMH2RHk5qz8hstQHb1snOUL56F9usBcdHOGpsBQeIQmKlf2x9XO+xGzjkvkV1yH0siKFcEsEMp3tcU1oEDtswNdlbjqw9bJVVk/ElghFROkkMGE8VKVcuKoySR1Y+wNJn0GVnoedJDxqJplV3KDfPi8SzWY2aka1PDF6nF1n2ADldbYkCETdMwxOkI8PqrwWKPjFfIIfL2aMfPNvxTMoLRHjRLkOLxENcxAv/RCQO72QiB/oAX5/S3I75PnR1DsgPLDeqAe1nZH5lV3XCVlnetak2JnJ3r4CD3Oq6a3tyju419zH6VQ//B3Pci3sI/EH+67uuVAbo1Qf4ptP2Ppx7JJ3gCKxFvjjfCEt379d95Uq3R+E7o2DpZywOpm/HMe2oMeI3mDkKaX6M01jpYne0JkKLMM4GwRYRG72wCo+mcHQTUkKpUT5QbrH+H47Lq1LUmgakkAdBx8OYuBQK60sgqXxMn7bmWDZweLe00RMRiqqCUD7ik9r4nsGwpeNUfd+/b3rupG1RfsiXK8nYUNCORFLa+u6z8z1yqS3wzMZJYeTwk+sdfIXkZ+q+ArqDSnUi3Yr31clUpumwtp86PCFbFI32VkUHF8rG7mS29z2L8W5OngcrUUcrpxInYboQEfebbGp2sHpUJjeH5gMaSGOQ+ewUyMTr76u2n0rhsvW9I34AL7PHuNr2z3QNyjMIYcx5R+Xe2ut66HlEY/9E2q2OK7Ode0+Ecf2uXlR9PNTMovqgbtJQnzf9yJrIH0Lf/O9UhW+T/gF5p1XP3xNzlHJ+0KKdVJ+/aSfF1cZh593CtA/N79obihV8DLp67kphsu4lsodJE8cye/p9TGO/720i7PpoSJnAZ1Dg4dwrBYITUcK9peKu3k71po86lyLcTSAjTkbgt8GqzVwitQicjSBq30rsA6IFe1lFzR8gnBx/eaUqPj+tcq3ezlaQeB4ssZPvu1Hd1Yxa4FqeL3V1LFP0Ld7q2ipjIt/HHjoEUHuvqT32/cKrfUjMF1vu9SfMo/xuOjqasDJOcfxzsoaiuRYhuYLQ6WD395Vx8sIH3M46DDSXpUDT1qR4u6RU+eFjtp316Sphu6k76vpD2h/yevTbxfBxxzxSIpOyjS1Uc+5BAk6UayQitCfawLWVWPBVPZ/hCgSkbHNTIq1Ba1qXvIQlePfLC/nc2uncVOOwAby00vTG7F8KOvi2iK4HB58rv73/HMPOeQ8FAmZOu6bSwUuLr2333fLq+52ZbLVn79LkFsfh0/CP1yj3+I8NaosE/Wvu3unW1Zu2e3yFrh0d0qEzQeXAzrEotvuRwlfmcPI0dA3r8XgVJYMgvHubzfuxS1l+pZQfC8IHC+SPTPc4Pg+QC7Yaff/81LGWmuSL54BXrRIPWyPc2ckL8ZbVNXfwvQklivtss15A3PChT5jY5oI7kHVFncSUnwuEq/dbMw/2UOQT79zW/fIelS/VJC/PO3dwlEWoUKJARiO3QYOBEQSLaKUCpkiHSGu5EvqEAyNNKjodLqn67e0dtw7hrOZ2UIs77Zr0/m3HDL1b3yzzqZl78ZODqWfdczYUoZsH9AOgbs0+9kJH7gyrrua0bUoGg+Uo5pA9jP37UDtYHA5H0nxG9GD791JT50OYBePCH9+v4ddSNlg47b3rijM/lIYX+Hq3G4sIGkVyIBdoMfDoEfJfiJWHB97+YOfqIGP9JTAv19giHfh2f+5g7BhLD2/pAdt6vtrzvvJLyteGQeOLirf2RCabmjp914y9wEe0gj9yh3OaPK+hTPK995dZ/iSSuXars1uE9tfRGwXqya+69+MFBhy5NLdRRj7UYdugp1ULRh0Xy7nTTo5KTmazwAnqHrDn78+zu91PGHg61x3659bEeHjX3625dJ3/XGy3vY2whcEkD5sUc6yA9bwv6REFmf+VtUCgBfXn94VD7cseTDt+XDB5d8eEw+fGjJh7mIP/z2kg875cOdnQ9ND0QUSx+6gtr4UONy48uThDxR4O8QoD68BNrd8uF3lny4Tj7sm/hQidCJWjnnJef+JVW8Vz7c1VvFLb4KISIjHejMSaGbk/isaNgzJxk/J5nunCQyClPiOFg679bzpc82RC4vxb4Aapcp2dWk4dAqVw5ghOqsb3qUm/waq1cCP9Y3Hbo/sLs1FEGl5aZq//WmL+3sH8B3NKW69T12dae+IdfX+v6ZB3e2v4f83X37+z9vLQNCCF+RwvQoCzjuKZeoFI60aeTI+bcKz6SjN+g+Mm0Zc96XyM9ZchkmkLoVsCAzvlRYXTgE2tJI9ykZ3slcaf4BePTCOKE5D6KdN/Lo/FPwK0MkOpHcrx/k33u/TBn5buYbXhDljfArgDCZuy7nTXXFpa7AMxbEKnulUkv9XK2eXLb5Hiu+dF7VoYKC/Cqpi+XjaDb/feSfcPS73yjjG7ETwRRQjaw9ZPVW11/LZVlRLl1uNoS69+tXYDRvegdQiCKNKildFuXAWzf6xLypA+9/7rfpXWxnco4evZyt/utsZU8Jgo6igbqRz5UFZn/PoYuy1ODJAssq0bAdLIJAp69UQKCMLWZYPSnjTfV3v9myZhmMzwnog1At3r3MF3CauoKlde1brq6c68LQ1dUJlI8zlXkXTtuM7J4o9F7yPjLGiZ2Dg6LaKo7OT+V1r8dzHXHQtG3h4l1PaX98L/57+LSFvXyQsXXUsTc/cnV1lF0yx+jqO1/d0T9PoqSr64WbqYLm1p/F9y6SHf6AbuCT7c0e9+/ufp50+h7hpAO8wprfC6y5DXn2ZWmlwYZaapf6fk5VsMPm73DPtzTP2BogLAjcsgu0F24I92vIku7GAnaAFvJbpSDk0IPSFzir6L5edGJRS7CKg1KENzsDnO8wzW5rzwZlBxFCjhBs8P0PgJTjM8Em4N+6sEIYHtIudMF0NnGvjaD47V3rivbXm3431hHFJBcsldrdYnwfXdxtapffEJAsXui2x5DSewBZDh1791Ha380qBTGcPDs4lQCvFG+2KsCa4dwf7j2PbbTgTzWPMAHUxBvKbV8h9uvqsQxpDx3jWFNN6H2V93ok3T2f79krk7dQkgylz7ewJJ8AW8Bi3JwtKxIrcdPKDPC27kXaw6f2hxiJEZ8VabyS60ufZcuZutjQGJcacKnlz10DKzZbX+iKw/dtKxN3ADQRAi9S6VIxEOIvxoKGYgq/Cs6vI4kIhFFw51c60SfR2Qc1MOvdtPn6unmwh7dtu1DhWPeV2X5IH8bE/iKsFAf8a9VIRJe35NIrMcHLqJF+6k9T91Bw1lBwhgIjCXji7tQAdwoHvZ84iCrbii1T8Ca7EWX79jSf7ciFdg/JnzjkjmzFrg4I2Nhp6A4YZhq2zGqZyEj6gzgDEKeMMnh4y6/yf18+DfJtyIHecYzKGlSbvxOV5Av4F0Hv8WleLf027wAbb+YjOvsvXGiCKTRHc7A5+Wsutg59yvfLMtxFInmTLKOD6pbHsZmd/xOmF1GSnKXtwI8UJlEez3oCQRH80kfq9HekENWe/Tu19KxOZ97bbXji+9JnL+tOfGrp/NnSXLJtTQ8qlX/8Ke3DNuqDy+kr1a5ShduH+Bw110UmIRCuqzNEnbJakhOTaNKpZ9wMzm99TJQ6aS/LFpTrmAjk/Br0ha/M8717M1IqSUPzDGP+CcaAL/Uml2cSCSC/eqYPywYsgdOZ3HrhFHwo4OMk0ksdFgs+vodMzf0vXHcBUKVvgWzUZi9ViZACJVR5oYH1bWAUGVLMOXxuHhfzhDbM3ybOLZQV2w0xnFgTlzWazj6j1DFPpDrAFMkbH/RNqbqIL6EERw3OlHst4ElznjtdhwCnUmBsxyg+VSlEl8BlMHxZAmHJTtFaqpipaA9rFW7rOq+g4ON80kRKrrFr8iv5xN5auxYhT1YXRxOw6wi6dQiGd4wD9ujp7F1HmRS6mmeXRdy9Kp8rPnpUPfAjNStHFkW+uli2ChLBr8IQa+0aDVyl7jKuCO+Y69ZbeCx3Al+VKVgixQheQyXZPSn/6i1u86QxY4qpPv8uryHj2mj2N+9ux7K1oWdaeszvhMGMCfbt7xE9mn2jvGuDq+Hz+3c21rhIdM36f1ZX/478HwJjjNLw0MC0U1FP8ut4f1YSXE1f/R5qquL87aiL8BA5Kxpa67P9DWr9OxVFFDirFt810aVYjPX0WC22drdGccZbb89qDIGE3jmu6h6PXlZHQkyalSK4B/ltaLmKz+ht+i03Lm36LNf0gVbTduB6Bhik9qEdeJwMJSnfA3p4foDVbEJwIeR65UJyUeaP4SvfJjr1Yj46v/2M8cBG2MHG2wn44Xos0U50Cste5U9G+w9VQB/4oH5Ggo8XveAfao00l06YNIlolMxOwGaTSsuk5Ac36R/c698Ee0KVuMFV9eByLN8Q9LtL9Q5zoXmYnt0dJtsdpsih8VHqZt38krQygWsX+gsh6QCoV5JXPdS28+Vfk3OBHCEwzGxCtX1U00DlH7pKqoe/WDexSHpTB+3UfBfXO+rNOexNzXpTx72pUxah/4MNNrJTJwXH08/4pMDST3ZScBz9DE8K1tHP6OQgp5/BScGIfpKTgpTK3YDFf0SGsGojKM4WAyNRHAbVBbMvBHGgCH2YLQdd4kDMBgy3okUUy/yRmJx3YTqj+mfRoA+xgWt9Guzz925tA7AFapukJuWpab5LTUFNTUxJghUQI/XEKcf9pBUxaT2nIa2KhHMPeelaHaaW3srSsKWOMaXt1rOIhx66llN6e339Fp5P4RycwEh8Km26sxNjUr35BtgCbYjd9/zXbwAc4RmtXtUlZUkWMc8AnQtf7ZimI49BoVqTNRwQdbkCje33xIjjH0iH72g3fV5PpgrpVhuIXVFmRH5E2np0b/BOxRh6PUlD5zoa0v00BG8qIWZPQ0LgY9TfpSAgXQJQtoRCRM86/6i4uUT5PVcLypAcuGQJQSL7fxKStjPM5aBSlkqIkJeL2mrCGthExCWIcyBGs0HXaFZnHunmGS7AFMOJfgZkpfRGq3+8UgYcjmXfYGNxJdSolzBDhhtOatvqex5bOsXkborJZ+s5O+5ANjmJa+pBw3/DniZTm/AIp4B6jn9tAn877U3oaNII4hpDWPXddy3VJzY68DauFDzlO/v1h65salOCyeOlzxaFqFK7XKUZpnvtjWlptl2F2zF9ei3MFCFTpgQOgGGU9fGoUcQCUbw4jp4WoYV3LGjW24i23TTrSnic05MdijoJVZDNatjxnGY4pzqGWihKYNJAmJTRm98lUChn9Wg8WdkCB9J3/GjwMqd8V032S0qzdk/97FzqCJDFntMHseomaNH5eXGAmrJbhzprerAIN7hOD2TJ5BywdFv0euJ4Y9eX63pe4mwHbtHMQRoVCfcmYyJBC/m5PSZhFVI2GQ4QlRM5VSD1KNnnL6IWCHKh7n531Mf7UHbe0vptV/eNc8q60yBxXsnvLtUEApU6JDfjXbu7+MuErqSpeeOLb97R3hYxVjYE9cwV9d2wxuvf9Cj4cZtWz1XzquGyz3xurlOTeLBJMVBCB7VSfKFV/N5PLC1+rpTGDNQpjUXQLQomJYyNj5L8sK6XH1XQ9PAttJ8xWXHuKs4n6tW4xRazWCpNIBxjies1NtGdh+eVUVc0Y3KTscRtVLiweQREYcrIZhEVmLVVIiFgcURU8F6ZBzIsEyOJuziuWC8B18OKBumeFgNn0reYKRT7BtSjF1YKs/CIM0lkICFQTGF8jzEHGBJLze/sRuQribTUCkJUqfqSA+hizf3KCQPs8Xiso6aQCYY+Zx1u9LqLuDh08Gsdfu1sTTDSv5ctX88nvtslAAj5E6W6ja66jRPDxYRwjdpfTp1MD5udQXXqlztOrFgHgSnv/HpnAzBDOLMpcf2TguKUTFWdLa2eJa2KJd8tkgTj9C9oKLMpTAEZSPlqJdGFspMw4Eh7lr5NnW6vep5ZZx3B4tLkS9iFOKs0Cr1P8XAScPqM9YS1rgcEViCffKhLvKQq6y0C3mYBj5ePgzpim81q6ZPhYy2BdXa20i2bWWPP0NSJ9t7JdX7v5EMPNo2Li/nIhjNXSkumMZpdlsWaY96qSxT9+enE1I0InzbC2C3Ieft8rylDt5P2GahMJyEJgytbsweQJhYliabkbzJcN+uf8tky8M+0RFTu2Yb/lx65JzLFUydRJUdPugC/x5H6K2CEdISzZ0+juyUhAO+rrd/zhy0hmxhIEjMbBJmuhfhDzePB+hE/92tKuh+smgnexN8DCrtVtb/Rp9hfsfo5cSf4ZDizS8RD3HFjgRkUCunjb+16ZVW0IQwFRVI6Qp6+1p6wPAziHaQvwFGyrmYKKnFT2xKtNUFtSS3z5COWGV4n+mjoppimgqRVOLXJZD5XU+dmua3dV3FXoGY0RGyKHxKUVj9Lbl6rTpVZk55OBMr56QT/hB8ocsMX6JFoxuvoJ6UrYHMb4trKx8152KTHc35R9fgz6M2KK+pjujpQWINYTTi9fyVwy0Qun1/O+j2ezqbZdx6GGvB8ZSrUtRCfsZ5+9tCPaJLGRbfZf7LZyK8H/esmjAjCfLLyRY/1MSRUvnVfs4Ugd3Vi34B3uu650JoTgpdQPKZz8PDS2eqaF806Yl586+a9+e/tkJvdNmfSHzEOlQlzUX41OiRmJwiB4c1lij64oVwM/YQhHNa9aV3S0iVp7YSOvN4t8vqWfV3R15V5jUj2IWwTiaKHAe6BbOlpkb+/rbU1kDKMQippMaTP849d0XzOhIRGlP5hmaZqViJKotTHGzmN9sX7VcvThlkLOSRelxmn2SGmBZ7iVsvZlJwX/X/JfMqytbHLBU5OYmmR38fLyrAI+YSS8dI9bDtHzF2OEC5VxB5cfvmdvUm5wMFN2OCl2/GHjySMhdbk9BpZ0PPc3+3o9USUWIP79tAcLcsGjmP8GwBHbfcb0xtK3YktBJcBACCxpHkztc3oEE2cKLtfsoWL39X/yrx+wer5UnduN/T1mE4l7fglrFGIBBaQJczcp5TWhDWPs6LedMVest92Jz4FYpai83AB48BQDTqj+pQLVnk3dtEZt9BpbLhvD3YFCTFtDwWr9zAHq9NRYf48c5Z0ZCt15G81bYpr3hTfWGj8bJXDppuLsO5d5IdjUxlPDsdZNRrPksCmSf+AJD0D0jqZGs+j6s7QSJ3d6mzcGpqY+bsempg67tZ34SSUL+caEc0OmzDovEC2PEAhQsdELSSaPQSWksJNXWELnjCTzY3A7wsTfj+hECZCNfGcQRQ1cZsnStwgnuWgftnmvfOosYvE/qqsacFt5BIiLSWQ1aPUCLX/VwWOtAH3YsKrZxz0OmF84kO9ThjTmYD00AtAgu5SykfwQlXnEg+erPu0//0CBK41RuLB0VdKESddhnAysl0Ti9NwePoilDv3WckTNdCtxjtX7NPq8AVC3R6pPafz+4Om2/7MXUbG7vyZdQPU0TKB3nmO3PkhjhHL1DNo6hlIoxGPDqHOnwI3JxH4FSzaPf2npvU5Np2lJmwCMwGwJ0hRMhvr+qwzPvahR251GLwW44WN/DuVCmtCsOyVVytngZiloN3ysJYapToDWxpa5+BinEdfwFHcycoqwi3gyM8BZiHRa39hLOB1vC0kGv1/OUk/hmoBNXfg4Avc9HHdadiD5lvamQipOwH68ca0vkY2BSVReZbXBAaLOqqhCAWzXb8fYS+/A8o37Ievggg39NgFLSQBVkd3JkjGWiSRi1FwGhWTx12nIb/cjGDk6nm+P4F0DG5752nlEKSRsWvLqLlRYIAhG7khG2HIRnaAIRt0r5uPnGdJKugTHv9lx9iUdd2s1JE1wJUhAvEJic6dZodwYaUPxJbxKzsiYWQy4GDP9TZ51ZjA5aYI3W4oqHNWYSk6x7+gHf3aEpdp4T2lbnWyU8sj3aowtEogKPuyogZfE4hdbp7FYVm0MNfXAgDy809rlqCO+Y7IkMGQ23AQtDqMAG7QxCX4TKrl9Dbcp4qF5ACj4u6DSM9gu99ALvqKXQjlcBJeAtKBOLDDWc7MsBkxf0whyeOa3g1vf6IrTefR4W1NT+k7KufsALRTKbUyDbogjRxU0kQGFwJkBUOoGaJTUD7CnmzQN1H0EepIME21C3nqlZGnJzjX7M4jb/YJcQWmHIiHDPrl0VECYXBJuD309uFHgtrCXUnkb7nhDKLpvh8RbHdadkY2HVNF54D4D7/WnDrgc2R3IXmDRkV+JULJCHxbGV+qjJxHAhHWQ7Jw/98mF+5hVw3cbVqHWKPq15sFPDLoziHWl1vt7VX0Ceu29gq+qVWOFkfV9fWRIalMVlZSeLFVuLrY+08b7wgeFgrzkFjvDRsH0O/8fexqHsP/LJQj4cqiqfSC88W4OJk1QlZvzLj5C1iKWaLe2IVgQBiVKkSUBqKa3nNPH/2d7i5j02E+yo7rASot0Da7DX3wmj54pRL14rqSeNlKkk6nsbJEJbGrJBZTdE8HvvLm/g4YKaZ4r7W/6BXX9hbNfIdXCmt3gKpN3dvrlGOLMgGB3GlFNxFTRkSuSecVKf3OzekXwldoyfE0DOU/7rmqtVfWXDSNx7jpsNRMBhYgHNrIPlHbt+x/+uVf/7eP/uvFYiB0iPZ+ZM6r5j56MYn+i6YSpWnaUypYYdtW2q5si0NwrTfVVc1dMrsPu4yQ3ek++Di6kHIbrfIi67fgGb7BBs8yu7JiyJ/1yCqYjCC9VospiZ6Oc0/NHVu4LWLRynV3MtuPbEazSs2ejQxi37DaWyklKVSq6qzZKU299ScPomp+J/pHA67oyi/TyyMfvLyfxBKXu1OHnz6U//jdf9rFH+UD4J7KfO2qhdeRu6uQTbG+ESG8IoYMaeQHiBMypJEfcZc2037aRL6O5PCOEx/cdamTHEkjOZJDS44bl5EcrF1vx5VHoBXckiOgC80rt7f/MBW9uQUI+nmOPDUZmh71Z4AKOFvyGhMx3vJbkN9lreXP1DhoEYUdkwW7fZGYsx1A/+2aurJWqRK6bbMuGZWxROmIcJpIri6qwgsIkhi6D0dWevH6jiUXhbsVohYUl6sYIKnz9wP+Vq6CpTDabmW1nPVWZM2WbEZ3C3duSbcKOk8+cX8FmCSDafO6rJgBT7nv/3EzX5iRQNeDewwHarczuD69tX7eW6wCTYqX2Vae9CObCsQhBhseqbJISO1o2z67asFOzzfGf1q1pZn0P/YxyYHpMIP6AK7le2yk2ymhmDMZ0dux6vFlkRmJTSPldNNMOWhdzT2YuJp78AEiBJWh71jV895jDLBjfzFNxBmyFhSOFMyRNRdLc3GGkURzIhlshOCYA2uEMJFDiK258T2SkbL5DXuLaeMWuT7j6nZG4bj6VnyBPSZLNCzgCyuH1Qishq/yFNTkQI3c8QM422O8304vdEY3ypr2j3uS2k877fdMWd/7zq4lU9ZGJ1o3dpW6lWtEhxcUVYDp3ccnOEy/lPRLgQawCTEBCbrM0HzkmmXOpWtSwxu3kPcpub7UuP1B/IgbaUkzwZmT+o/UPffVXf2HsqezxttciyECKzJZYfTX9d17lq3LKmg5GEKTXazM9ipi80XYnCrBotR0FXepN6r+9KHeepvIAvVsRpv2GZqDBhScZ8MqoXkvhKqjzhtjkyd7x5SOaC3TnKeMHf5iaBnrOs7NIVXykuYO6RjHBdZVCtIACMFnYKLnPP/c7121THQXVJvfzvCmfMQEAo63PFF7wJ5Z+CP+HYhTIsd7NptpYIft7krxhMdGntxNRFQ6yj/oslyCmdumMmfGCCOWYGfHsle5iDZZZMp9DzGszsPuLKUhfpQcXkZsDfASYdRcOIsVTrX5vNJ5gcidUDAmdP3+WpWhHuz7aSfU5JATXnIbbWuOOk227+6l5hX8qGkIR/7SU4KYvg1PCfhGj1OCUI4bizIso4gFAD99F0/ww6QgFdphUzSQUNYvHptG/JREW1mC9ajOF2H4qFoskWRflFoY9JHEr3+jP+BPnC07cNX25orVFMQd0EyZ9VX+7of6KzcZ6vAd7e2Am3gM+gG7ELocTRJbrX0FAkactStuKZNhXXHYbbX5KKgOG6W8PlPAAr0KX9yErzmxSs6rEGFVFpGGF3LVc88YRxALpJaGo4FHyLAu9G9I9x1W1/wN9hHlCuuo8u651Z1XYEdvVs4BFcOsEfvDJRJWLIlMBP3dHdbdHUo9Qyx9mR38elyMFZgx7dBV2zKzgGjqvP/4/asnw0xhxKXHmnt85jhCmegQkAl+0xqy1DVnwyWL8uXE128u9pNTKNrkphuvqWhhubfIlkiK1SIp1pWpSAo03pUU60RSWESRPKyksFaLVsMaV+UNstvorV9SrG5LitVNQ5AUGSKNO9kQ9bLRnTv6+639xN9X6NP39BeKZHC78KXQWJ2ESkdhT7ihGxdba20tk444k8R13cx8BFUf76o+3tUt3tVCdSTzm7Pow+x+peLtVuOCHFO7rIbi0K2skWWJ+PWZM92tqJDAIrq2yXd8VfijM6lhxZo8XDOLpJ7mE6uhsbPiDvTxDLCBO5i4xxej9ogNIspfIUlvMllhFg7krr9naTELiC7oL8920rR1Ad7XDtOzW/t6FjY9u/VIexY2PQtX3jPQavosA9M7982m9E/9nvf1Naz7OhN09FBcThupQRM9ouNF1uHdiHUQMFCMnxOxg4OHjWWKn1E52CrX026VfHIsKqMucS1zqmt+2cK9vPFzLetoYo2X0Dc6jUHu+7SpI+um4JdqqxwqRMFn6XvnlNytive0HfkNzaNHnb5LW2XEO+KA+GxaCOH3348lc30s6Ac9Uldl6Cv+SBEb8ggWsVvm0ivPQ241lfEgAxkvxVY3OCvChs6Jot/CtR5/sFsx4Vbx+a3tsUwcVTPx2o+g2SSzZVz9N6Edh2M2Y14yC/PV0GmPsXiSyoGJxuDEl0PSS5mRfR5Z/LAkfm2EMn929a5+h4gImuFGnIdSUKnEYM83//pYsVZ5KKvtAOiUQKCTsF+VnsglWSCRDX2Bnyl2TAVeoSx3Y3xkM78DtcEReltBNY2wCt3RYtn4JF2OjJjQGy4qVZWImRnMqi6g988E543R+EZac1EXpnl14I4JXEsbq0GVE9c6SnjowTsxV1MFYFeJl5B9V/HZ4i63yJ5Gr0WzCuTELVOlxTY6KJdDJeeYxQM80GWoF+b3zKM3DrEyJQvNKnCIxP7wFUk4wvw3MPSUPhHHUOJr3X3PFX3LJLfTe1Y38sMu73RwWTf0mPalshfxgYbJnmsfKqQ2AC3Ahnsgu2uvO7cAZ2CTyUxt5GLRtTJxe/Y/a58kv0V1wufISkwU9TlFAyaPOy4hh/EXT644Mag/urtjlq6nSjzqevEp3gXbq0u8ng1FSMyEJMsz0FpDWf+HeG34iwk2+K1cq58dnLLf35mKt+fjjUjpSIq8Uxngdkk5IFuKOexu2LzXPaWb593T4uaFw9+e6dF9z/4QC6DTznP7nZWi1/GFF+xb6AXsjEP0pR+o3mquUBreAz03gErVxlVtlqtVTsx/koPrhQ4CMozZULYx9n/stIWmZVQpjXdCJxEclwHPpsEzNSts5TyLmlA4e7akod6x2c5JKI7Gt6XPNbl7ibRAJ7eyVteGEmxiwRoAmP34QKxbKRDHNUCMlgBxvOprH4A/RwX7XKYzheN7s1H8l7UeUm5tEmI0tqJ67l9xPaUnmIYSj/MocVku11pfHLZ8CttoayyMh2eYlsskW95isR3wEslN5DEL8A5x9Ph4dm5qrraLlzafOrx3XkQOz8+yq+lW94erszvWMD7Gvj7AHmZ/okJ/27J0XlBhBWdQ/VX+QQmnWKmXiddRjTNpXjfY6gMhakCIqMUWtmLZ3KkXlH5Tm7FFCIhEz7axR0DUvhtAbopvPqP2KHtQG8MC0k90qL/rFQWDHk7VPUDf5cAYlMkLCtNHAXf3HjHoUgB2GgtFlcxcKK5Q7AL94H0BGoTyJ7A0oxX0cmaPly+7u5Ox8KVse3r3Z3cIxPWZzw997CpO4YsVfL2NrxTUVnlb/E+bX8W3LBjP5xb3r4j1Xa7HLjVag7GTHbvEvVChO80K1bsxf0DrUBhVuLNFJ4TJUlMnHlMvEWoR9JhmDJAFqJLzLVMX1qgS40Rn4Aw61e+ypxpkyUZXG1naI0svQZa2pkFW3EFW3EEWqM0jK24uJXGLqKXIEmWq0aIEWR0d5oFMZnZMMXfpUG44NxfXn1qs13X8bOzbphkZ3IbwYfGf7w4QgSTYE99AXIpWhhMYDCc5U9voZUXMV6lJYK7U3YrEiEoniqcT1GoDUrOLRus3cGTZVkbWvHZbofE6y9z6mn03YLXBzdHsjoQizYA4yulUjWIAS7YcnigSQV4Ic/bCgqDuZKUuluTJ+UDvEVxiVl9opgar56Xkq7XqUy9EE1iBSmFaKoXpqhRdBeLdosj0tySiRiDFLBeMG99L572E2Y4ltFVyeR2gmz9ijWcSvGMhWSl8tAQsCOjxD/iRPr1RGZkRGpC0n0sBeGfKCZsNYQkSKl51htw8155sLDFfs8qZwyrHtmrlrzakfCgHMcy91i3P/2cJ7xxyfGRkX8X4dgooZXU41qxFLMGv9vhF7Q2SsdUkWO5vpIs2PP6hR9t/a05SCLCHVcUPc8yjq4qbripuRBUXqO4QWqvbLrnTZkmnjXTaIX0D8tdd1x366oe4T4Z0Qg52INZdiLWHuJ/87vV4/GNRSPDXsHIzjdvSUH0rkGbuOzRiXbtMib9zryu1UIsNeIf58HqMuF3byHWw7rz2rOF6+lwWVS5RDiTwq4gt3VJfheBf7JjPHRGpx3TZET0wQcYbGmH3ac/Jh9ESe/SOOfXCJUcNZKv2vb/ZOWpgujNOv0iTc/yN7jGJsO5qJtzTltyh68y8HFX6iXTFqg5QJWbAzkhtlPMAG+gn4CUFDlP9W63aXLhE8AA06e6GFiIaiwcP+QIf/PnpHsDwZwPoEHG4ASxd8IxXueOzhVcFaRnjTFn7I4NW60iKc2knfAbD31mRHlb2uRXVzAuXOSz0rd/sPSzEa0W/zTGuVSoO6hDP3MR5urcQWOOsB9XVYgnndhbVzDvrg6jGLQuEhJqRb7pz2EmlZcwI62LI2fgv0V8ChwcsHEEZSXsBVh1YPYuFeX3v3Jw+Q7T7Waufr8T0LGvKxmwsG7+W+nSwW4ssWut6dG89MrM2S8iePvYsX+bUciP2p4ccMWDBBtxdgdAqRNBIakAXAwcoOmKTWfTFgxwC5J7+ch1NTlTLh11Tb/GMs6nAcrb8fszd/jVwr7dqYnfdYffmENwKGJ9Zf5p39K1pj2cZggj7xMG3DinZwEhPqcyRObgzy/lzqs2BxD09qxLBlXoKcPWEMSVi8YSfEMI66FkqpDcJNBudkJYjns/3IhQ/J7Q7i4SNbeRDELM49ur72UbzdNoY/eoDaKYj9sOW2Jft1pB156ie88we3LtrXMU/dxgt7wh1u/uX1+2OlplFdldG1ePJeTSbybqzmcR4BnO5SvoZ8ekfPu/kSnhcaiASe1rYdWu2HoJqpp1gKWFVk4CDQoqSjuIkmR4Vrj9VTVdkcgz8fs5LBVETgB9/GHrrC+mBzj6stGl19vjlOlsa18ZkT0vNm4CLSm6LmD4P8l/7bhehR6IE3rKad/llPHipWB//lRX2PqGVzvkqucu8ISaxuDvrmzUOAf3FOKucpaPe7lC9yDuh7v7Kkbexpo+VlzmRQPigt/tJ6RMOhfATDoHwO5YgfJUgvEZ9JC1s7KBe0k70aWE9HHIUpqHbcL8bj/hQiF1miOLM+Tt3huiEFdfEpetRuxKTZ/4tRPK7Od99g79HQJ9qVfXJoD6rci89ooprFd4lQANlvJqS7PP0y5cO+23KKoQoKYKWarPhDHE6lAAczfQOQG5QKpU4d6rCJzm+HCCLO4wUGaf9WYOh1LzZ4EcQYWOobOTPjWjtoxSLb96AzL2w0Ukc7pQ9UjUq11y5gEFCP5QGxQPbxhIL61+3z5Rr7oyWIG8BhAdTSyCH/QXigE3WUhgyr1Y1AhKtpeqcVg/koD/OVlGJSqHXwO+G+rYT6/RciVuh5qUCOdfPBTegoCwAWuVdjVY1k7W7XwTyX8sYmOy9SRjKZR1v6DUH3qZK49koBBsVUcPSvbbv7lZRc1wd6vZsQx6sjID5IoRnComtwHzEmyA+i3dhwJPQmI2E8xDaCi/MkGVEF+rw/H4tjwF8fWRiewkqBv1ZyiJBH+A+aMP6WPxOeCo1h+Dhd3k2pmlkjzCGUff0Oyot4d/EBnbKH26lUDwvkZqqYf4Qe1tpr26AQgUsTZ3HYlSgYVDyryLzkwBVFXi4AFIVtECyoQNJcT5CKkBDbkZS/rX3tG9+x2qPKgAWJddZZSTwmZfJcTsgFPWyiltve4YomLVcy5OpMFDahK6xs8WuhS8CeRmgvsZPzDBI23jisRF7NFk4gxLMl9D94SNON0CEz1pSL1FRkxnyQSNzmLVaOkw7I8NP1jQ1vwj14pPmevK3QxzSKd3Xfujng+Ce09/OuT60u0zfSO/BL/wH3mi4ZcLyphhtECCvQ11LDtcauLs+cNXESV3x78Bj493SsYj/MCQhkvTp4FjAHd5WO6l6QwmlMGra73s9VwVAaiguPM1hG95Hold37taSoJWQB8jtLo0XSbvMVJ02cKRYwYbi1YVqRStv8CNqeQJEyG5Yo5YnjVruQMQaMnaL7xLtQ75D7tEPhHDnnOpJmv1hNHXCw5uXg7FkDfA6ov9LZiqX4mx9yiEeYwrM0amqQCH6vJp+qF7cC4LykhNPq18q9cI7ruMGXCI7pSNPOaA5kC9E8e6+UmnmkMmciKeQD1HJ1A6gMYxsnAF4DhXMvDI2lS7i+nQUNuix3xmTbXtWgJOFCrVchwqVEaknPGAWaHJSL3y+eq+GY4/RSed0ST1BPIcyyL7TvJYtZD8oEcHLO8cYnC4b7OSQc9Toh7/WbBB6H6fIX9iN87+Xia3GWRKAZ0MjTyCWhG8CW/Dt6o6lbr40+qG3uZrlAzJ6Vlstp6Zy71ElrppNSzaq8S5ojZoIBEy4halMETRi2g2O5d3lANh2dBY5vhhM8MVgYo6Ei5f4Ccv4dGW9DdyoBDwqurKNXFiPCzHUMx/HK0QzfMsrYmWr12f/u2r8DKzyHhNU/srPNFcfdEq80bjoKFBYegZb+sl7HC4ilFMGKCU9rCYg2M9t5K/D/QDAAP5pnK6rL/w97OZJ+8iggUOlwVAIOIlQPvbCGxcQ06unTMomUQv7QejNS0PmevLgDdIT1w0H1ZJzfNU35SCERrju/PodyMtg57dfiefu0H5DKb3kApvuBYvfOYB2+SpV3dqLX5KjEq9mb5n7Nz3b9fA7uOobcxPcaBperE8zQMs5NATVEKUNNNMlYliMJrdBX+1eCBhkHxNbc9LfaT/trcRHkOovou6RN1ZEWHcTaRAIbYKO8VYmmAckxkgViEs0xD+LYRKHxkmFcFZuu5WFQsflKbYJdA5k47qtPCN9G02sQ0t/L1pfcjx23T0hUiaoMhFIhryeobnBB5XGt1TU9RStptKNUAyj4KmQfoZ2MCu36cC7m+ooGdYy9UHPJ+9JbDxeKHP3PHfqO8ss0ep52S4GFazZBVjR0NAIELQ4d10d77oHt/hLSFtT+DhbvcqfP1bSYn+1XcEiSMDotn2wIQ+F+0RXjfd17CEY+u6NwmCElINzL7xx1wQjhA0jpJ4Rwg79htk//E/MsMf38OtHnjx+Pf5/WXatdBE2LJvOcueEZZM+lrUEo7As1d3lWteBlJJrrpUKI9lnTFEW9Xu+pYQcwcHSw9+2GKFS8FaOHkV8LF76axM6jCHVYbhXVpNXcaCJCooUUPSTY9b/AMfhfsY8XDjDd1y2c5lwhnIKmObuz2ljlleijpN7256YK7TnDDmpBGqxVEsoBz47206hqMHsC/ieK1tLzRAqtVez8WKc1itHW8JqxBZzRATE0oKavni24wGZ2FAC9GnHcrE1BE0VyMW4SX0NXVC7Jiq8spkAgyXKNxZC/mqFt1xV64Byn4h3+oybdUjnctkvaxUtQWsjHoFewSykYe+4koYIkEWBl/UJph/wVIEfvuqMmsIXmfUMlRDcrZaf3IauAx/53JW+A432F0q8HN+CkRZkcx40Wpf+0a1dxVGhqMAg2n41hCHncv5IQPXrkqHXJUOnSKJ3o/7NtUnqNfUs0cFz78riuOVXFuv6Vxa+RDv08AE+qFyt7YYeflC77aeOa/xPxh3De5V0NkdbZxa032gxSG9izKzAY6uWYq3HX1lf12Fb8ZXXs8aCG0dX4HwnDl4C8GHdXWzoTx589Cfr5WJoX2ZZ3Fm1FHe8n2r4Y6Wer06oXJBYfsz+SoWgkJ5DGNLvE/uHzyDzc9UJnfukZVBM76CY1qDINo/2I7OCAxcyMiFg6frfTI5MRCMT+ZF5wBD9mx+T/sUpP6Ct9sNtWXZhDnl8VXaEfAOUl1FNjK6xV2ym7tV4IEfNMFCbg7zhpxOeED8dAS+VRsYstmb/K92k0GMGWJ6zyoB5y8XGcRfu6j02Rqxy7HZ3+a7jSxFThtiP7g9kD+inejjl2thThW03uSFaMdue2GLbjTXb4jG7Ri/Ptkw6jLxNS6mH00/tISDH0RuPmKNPLEPP0Ye/sj0UitBMEaGjglA4GPFZ9zEfdxm9QwodRn8s5IMVYZ/7PTbxluX/lXrWTRBMf8Huyau4W+j4/kITi+7kCKiMKbwrN9La8AlTQJcIDhARwJg7SRnzTAxU3zxd2B76vfioV5pE3aMq0ZKlNATXb33j0u4d0KjQ2WLlJuio6YEWTIcN0YW9RBdOEN0mT3J9uJ1YIwnJBUxykSO5iE3Je3DyDiQ3mG/cb5hXG48uZEOGiZOj1mT74MtlfmKCqIeuDuu7Hh2p9IpkcziUDWPsIzvKWLEQ29QSYifWQgyP2W+sSIidupR+OX3zUhKWD1vch4aga+l24hFLt01PsXTrkFpXuv061BjIt5+Mjx5m6cI01Lwyouy6kprlNf4T/kfR+PunGxqPveLn+hMZjSc0DGzke+1s9doXL9PMnz2+TDNPvoJyVcPbXhMp9MptmH1EpSeJ6snRWoKV87WjF927DlmWXt4ZMSpMn3byhEz9Yq7qmQF6i65oBgj7yC8UuhAT1uHGbMKgZuNlKDDso8BOSzbuDjhPAbENlyqxsY36NViZmsJeARN2lZawc52SKC1hV2kJJ5WWsFFaxDx3hHOJp7jDG3bDRmmZmEkSzCSstCSHmkkSziDmXtVRXFT2xa7iYo9UcTn+SV9BrVwATmjrNjoyAfiU6Tgf6crBU39sOShsQX2f4IlAdKJJtnhSVB+9coLVbYLVfnlfqz7BylUfQt4XRXKG/7ySs1tow0rkoI2fInE76QdqkyMXt0kPXSX1ytAmNlyqeSc2OvTK0TiP7SdbCJ/4ZAvhU58MIZzWNJ12aFomDaFtZOMM/UL4JqNB4T8xIdwl5hWuHp98yd2jOByx5IbLsgjwLSLAXcsnrliAn9oS4JtqAY7H7L6uAN/ypAlwEdeTDLZEsM+LZN9aS3akP/74adVeL9nh6n6EPPDUSvYOF3Ql++80W1O9N2O+EjRS94FGbhnq++LvX3Zo6lvXa3fr5SfQ37kvRNe741UatP7EiFLXcWXa8e27dHO4I6LWtMLRaMHbjaaOldAw/v9UmDPobtf+cHjbnhGyLKKWvWDu8c/0hdzocZ2oEvb3PYwI7h8cGyB6PIrjss+lo7Ohd3R+NjqQYCscnanu6KxoyjKip2BsL/ID1DDMkY7vDm3El7f3VM+6Uq6xfcIbDO1gJb2n+AHLrTfvXPZOJ9OoQ6Z7rps7xaZVnGjy5+nYZF+JGogfGz1HSZRyieMkRwkkYEFXXWk7HTxyTZ/TwZ1xAg4Y0l8HV4tqieq+qXvq2bRuwDATN2CYD8icGrhgNqcEB7VT6fMGX2E7hln1iQ4VN757wP/SmG3Vw7pIqi/oIq1O5atsIvobcoyBawwO2SmbzhaO/+yAFEHxpDwc2M1dMZkdcZRcO6rWXVCtu5CD8grkZVi97fqJ8U2r+TeQO1sut8NVj/qrnvKd/mp36aqWDJNuWu3+anFEKscCcjGFiL2z5ag6qGbLafrWuIV6PpmyBrJqVM3r2TKnLKnPMkNZ6POMCK8a/Bv6wd/YBX/j8uDbDviVnZ3ogbLJbLEKqJRhBzxLVxmopKPeFSObo88zdtqZ7FbZkXfWcwjB2e4Z+mdv36x9eP0uthSyqHHPEs+sIVyuhnZQURSJgfeflZMhzgFrUXm2irJHVRg5jrGKSFEOUX6BflkiP5vIvUOuYeNsxcEegNvb3sDX6tiA435bIzD1GE0TSGHvx+wCkqcSBSmZ6GsycVGuTUULHHgTaII5QQFM+Hyxz+W8lvs2QV0gmCHpfUPoff50aADUBO6Q6k1JR16Yp0pezJknWV5AQuwwRULiIiURUQycvBjKgIBeG3mRPuXyAnvHT7m8mNOHlReLRyYvAP6TLS8GIi+OasmL1T3yYnVXXhy1VF4c9ePKi6MaHjpqibw4ap9crnpHyOfH8PiImfVQAvbVDpeW/nn0ggW3VfqK/Qv5FwHzntJY+t9CwxvvoSRXqdTkVoV7kFjf37putr5RwImrHsm0R4eh270QSTTXOfQop6TBCGF910hUc0DE57b53MGy0igWs+tsiYl2tiOWYieWeg4aHUYsIfQtEFqm+DUikCArRTYFoORGNi0gNLxkShHIbb6MgaiEMAShxi/iTS2OqMY5azsR9pmQTQStu6LmnzTh1QitfgvfJw5l4VMY4oh+TiXdr0eEqSI0Uv/gzNrlWABembBKBEyxRIqUKpO2nFJdOcXXLomMsszjUY+ICq3m706/bSRU0zm51zpBCIhD+CdWI3H9n+R57iFHjepwvrtrro9/J07cCrGlzTagTH7GqlrsNfF5G8cRJOYYCUdL4q7veG5eNUr2h1euQ5/948yJ89GTPCfeGdF8uCcqUjqZP6FEfzv651GiD/63p3pSnDeHV6LDI5sUAf4RTYo/U6KJFkWJ3hPVSvR8tKwSPadEiX7wv/2UKNEhvuDBrECJfk+vEv3kC4yD0VOgRH+BhAbkRUoy4qdAi55/ygXGwcMLjINHKDAA/v/aWvR+icLAj8mTpUXvj59sLfpgtFSLBie0teg5dSRaNHHRk6lFA6Flit+41qIPhnjEg+lq0UD5kWrRB1aiRZ/9z6lFPxAcTo2e+Zka/VOkRv/OytXo69SPpUcPn+Rp8ZND6NFDmhJvVBN69CezfyY9+sKnXI+OD69Hp0esR194RNPiz/RookWnRw8bPXq4vB6tRY++78KfEj069Xp0vAI9en5Sj37KJEb2FCjSe7IigcBISUj8FCjSBy94yiVGcniJMTgyiQHw/9dWpO/JRZHG49STpUjfM3qyFen5rEeR3pN1FWl9JIo0cdGTqUgDoWWK31GtSM8P8IiHpKtIA+VHqkj/6UoU6evUP6cmfaM6nCZd/A+qSf9Mk9Y/1ry4+kmeFx9cDU16NTRpPaFJP7j2n0mT3vaUz4ujw8+L+RFr0tuOaF78mSZNtOg06dWNJr16eU06FE36zm0/JZp07jXp0ZFr0k+BxFj7VGjSa6FJ6yIlIfHToEn/2lMuMaYOLzFWHbEm/Wv/a2vSD1nRpPF43JOlST+07knXpNf2adJru5p0eCSaNHHRk6lJA6HQpIGDWpNe5TXpqa4mDZQfqSb92RVp0vqfVZPWh9OkPx78TJX+KVKl35ryxJhNqtIHf6q2aqudcRG3dmYpdZLIMDD13Egm6/gnMDd+5BDbtQcPNzcePOzcmGEIxw5v4ewThX18SNi/sgzsG7uwb+yHfSUTI+bCcspN7dPNbnN33m6m9un2bvMMNAOfZRVloc+rVrbbfFa3BweC5buwuduFxWDp5B7PFkfVy4HVK18OzKDXq2zuuPYoXg7YgZ+SPVlONTP9Kpnp5azQE1sbANl8aggtjF0LNpSzIs0yoTsVx1XYhN882JqKb9HtZcLO2Hl/w3EFHN23Ywzu89Fia+eV3f+N6udJuaBqZanQEz/OyM1Mk2fFn8QlBAfAtalMxLgjaB9PxxyWX9YTy20iA3lu5RECh6FbXbgZ+W3LS8+fJgN99WBWxN4evyLx+eDoJy8+xcr9ZIpP+xMVn4D9KRef88lhxef84MjEJ3rwZIvPn4nPBzNnZck64nM+W158amdpuWCF4tP+FIjPztbBSsXn++PJBc3iT7+PjYzWU+Rn013QfKR/QQNGO9SKBhkOs6QRMFcsFVOBNAWkqVt8pV1Yv9ID68YurBuXh9U2sIow7FmB9cRdSmVZ1h9kpsqf2JpMWOPwV1E41kgmWGOAsAOJhG3srNNGzTot7VunrV5unbbYWqfd2sMqP+W7aP28Ujy1vPIzXvkZrzwtcPE7SxyvrwJCvVxoejwmnf9NTsfX1sq6v1zk2cGp6+V0/cs7cdQR4EDqJB579cJKIiyicesuVzSu8RMUKwVKLpVGfVSbr38v7m3eQOn0Yynz/69m7I0SnfpRVeEu18/Mo5/0TLVQm3wxM9f1LHP2776yLyuyWM43Ty0AkPtVt3srCULQub8Fl81PRaEJlI5gBH2saZB+p5H0/aVJP1ia9PjSpB91k/qjQvz6b831RYXI3oue6W7PDj9aTyTmram2d4NOHB51lsnbhvmfSp9+yqH8rEDJcXHYKO8ZStcMpYWhOh04XMRKUL7V2/jqXFSwdX2pq2lLf/QEGdhAu6LaWCY+g+6ynLXR66iqxwOLf164HvdWndhB18ori2dt3K1MI6ReYEMIZhnA+gZlhxW6ttdqcN8CsRc4VymHslPHQRPmQ3JzRosyC8ySezgKCwkeLM9YOFDNcpk8h43i45oyJJlckSBRXXqbKLU0YrgR0zRShuj3oat3wTk2+yv/CCa5c1djjvqVscyGuOoX77x0M1VwSnAqV4sSSN/T3OsDALaSyNlKBbkK7uLyfTtdqeVJTSTeKwj34PT8eeZsq2wH9Yj0uhASyYZMsp4A/j0A5cL/nnroVhXjepIQ1DvUvEJ+zhYgNzF+GScOQ4bF7VY7MYgb9xB29WHKasbuK8Ysjs8qDddUhvOTZFFGUmcZo1bFtDF21ynbeH5eLvf3A87X2zaT9nrCtnzd0P/1LIfIsw93N9HKWTchBmlYd0W1eW5LZ23a5baU6LPDuiuvbDBrB0tYdzNrL6mwrpDZvzgMmSm5bP6aiGR0XMtohKwUxt/4RMS2oM5sY4FsDaPOEOqMl3rHN6hbUW3Yg22knkFvTS31NnRQt/LKIPW6leEGfSf1jKDOiYeNNes4xpE4w0xyHF1NyB3dFgXlCWFreVwVIbdTJE+si4kNzyzSLtIidLGInxjiUcjG64t42QEoDCMB4tOmoFRrcF2dKSLGi8WeVMbkGHUQZWPgmrVEqH+gCRsItzdE++jS8LiN0N/TeAgwCHKLyd7Dd8oNi4sFV/eF8S4X4tITA4ueSADifbjU3qGNGWPfL4/dKB9WK5GL8p5QGN2aCP/MYQuU+QQ50JqudrHSMicC83PdCOu+27YP88c/+ZjfUGP+hJUjGkhjHsrva7C24QiwdgIw8DPa+8uf0d4R0N6fPwm0d19oxPK1bMxl9LtRePY0ewA+1id2BlYUlBk2/8cD+ReTc4VnICNk4gMypAdCe5PEuAk46lyDvsvgctPqzx++smPwkb0F6E0hvyQXlakYofAxnrmUl7KHW1t1KVWuon5C8fHRHixDIll/nObsE2guqQV5e8m3bkU3iyobtFZ2x628zKZ24EDs3IKvwuX5Skjox+YrYayVcJY1RAVw/AJlFFE/oy1FaAxGi2yY/8WTwGqH04sD0YuvMoI70Yp7tUFRBJlp2trgidTwU2fyeEKSvS08WnuFh0V5fKg+2tCGjTYNJrehaNOhWPwiGzXfI3yPatX9hN6FQm7pD0/QDYmCMNiNUjivu2akTmdWdA2MLOIfCc7r2op8wbvnV2Bpok5On3d+YVaO00lT1Zyi4iIVmxnadqtZmfUKVRCGPuMxdBswFD0xQxuPgF9umCcW6jUknf8Jriw4czwWouIlg1BW5JYLYXWHOr+Mq7/DSCUXSt+Y978YiLxoJWG6maN9gjLpZv0XfJvbayUFlLhkyQFsPU1WuOba/2gVXQFfkb9qkt8JmXksBxQ24XZD9Ab4rv2Ppaav58qiZ/d/5OdQhEdEVgxMfDBpFEkH9+kEMtKJnWdMEOKsO6jy86trFdDBfrsRAWQHpwTgmd0peat0kNyzoz1s6h1mdmCHNKpS/LHpVnG70uIoqyAOaRMGCBJCLxKr3LWyB54xK068UfXg0X52POxWe8SdyuRCfO4m9vPLATJTiq+5peTM2/hX8FUwgdx2cD53C89tuSOQILElbDwNyLihO/TDyqZRbTVLyWwJPebgywuN3/t+pGB+r9LOJfKYtjA50A8oKRC/g5fILQuGSMV2nZYe084B6eGbOjb8yCk+mRTbvVyxuz+2s7eYBTvcZmfR+nVKWvYXukPQLaksrC790RXtyx0Uqsi/vZsvGserEbUMj3Uz0r2zqEL83qi4bi74G++hDE1DxjWkGbC777miDbWuoVa1YpK9T2vtPOAnvN+vGxWKHURUdWA1O4hY5fz45TptbIQxwckwbdAftaXh6fuh0ezpc/zfI7+1iBJwWKnT5m7xaQd60u6ZLAsjkGYRMaIHjPq311rty80hz0FKABQ3fjzcV4YnmwNrq2vDGvprRx56S9+60Fv9XPXQWp6SGKM6/0OQqmvxfqoX9yB8bW32GaVM34LAqudQBZWSK8sNN2nqyDWGcZrP+nv8seWJy/yh+MvFBRjq/AsYISwXT/AX1osPCz8qgbBDS1t47vrUNd2L2AUWoR+8mmbAqRf0qaWRZvvHKvEdmmt29m2AWnTZCXIJ8Jf+DxnJ8/CS2eq4/zoVKx2YMIqpF0gPS/N8RVBQVcBNakN0CXJl9SyVKo2kBtUDQ7kwT972D/gNjePh33BBqkm36XsLX6/53qtanTcMNDzFuEm5U12xoMnBCtzxmp9GqYdSHOzDWbzE8LwaJRl/KKIOXWOgQhtJ9lE3u0QLxwRCj/8ABdahJ65u2j47FapABdo1SGa3h9eOBv6tJA31ETq/xUoEpp1wA333z0zqkrtSeATccUU2vWgUg3al5epR3GgiMhP3VSfnVcmZ46S9hbkFgqa660dXTkZQl619v6fvsJMwV9eduJI6kQSZCkNtwoylzj1snB1m8OuU++7b1CJeZx3XXFCrcILnSnCCIk5A+0L/PP8LX6LDnhOiSmGKygkl1GKmmYtS4IdDP3emBeAztQpeC0WAVoAg0CFYvqS2Xjh2tT9fxaPUVwZAmPD5gjs1czlXJgOQZvhF9iRbitIPf3fXEpRutN4Ts0FpzRb7IJxGkSeAKrmAk2eruc2z+9y0bU9bOJlEz8htqVbmhWMzMZEAn2/Zu3OS+0H55wrzk4I9a41v32Q9FXywp4JgqfQY8YWeRH4yuzKJloZ+iXTL6HweCeEHksOyX2cqKFE09oXpFRxR9frZKTNIVSBk/G7wSRglcYDxfsXslFY6zqpLqTyhvboMv/S+E79RVl2O3zCrrsCvyaor8at7hudvb7hqyfBsluEBjdTjg8p2UCWsTHeYvNrMlwDUtywRcNXr5S6JN5xXHXPGGLR/zFb+uZ+uD1A9UOzrgeLlQDBcX53PawOMtFX9+VAqIq36ji/dSeWpxVfPlqmTjGVM0vSiSp0nkinuAF2GANuG+yxlJ5UsqQ5IFXEV4gYnnASz9C9fyZR15xXcN3jTpzvziohWAfjVAv6ravH6CkduB1G974HKlkjLUgGPHBr5TFnA85wJXsT8ykWeSw/cH5lzUXM9HRMx+ZnrXqOSPqXRzR4le3w2MkhkuRYR+cCQT7gat68sSWUMn5nInYODBEv8cbgE+8eZfDMs72BUwT7Ji9YXuh3tuSMFcXz56K5ogpoq9SReado/YEVOgLDRS+iRWnQjLAOb0NwnW8ja4ctqSbKhCDddP4l6nl9Q5ReKhLYhTbdAharPL+5w4jhCdlNp+ipARaIPyTRSEhIATYKZlhVPleFF5vPGs6yIhGhQxzXfaYnCCJ783r6ovChBhWino4B+xTSK1cZtZdi2tPY5CGpWVb/VvXVLe380YGZSl/W2LTEuRQ5trlrtNAowYdMDpIdC4dwJvEUNdaO+RnfRGJdad9Fu/JaIApgK/uLdLc6KMJiioGBhkDfyutPV29++XFc1lnJ6SV9iaNFt7Yih58nh+LpXVnpV2YZtkQfcE2z1PPgcIbcT6Ie49F9S4iL9brD4vGE2/yMxeaAB42bQNvmBMDd6Jzmd/fdEZc1A12wrShY1u1iCGDWryGA+4CSGQ7qsBhPvYIEsi6eXKX4/eTpkMSQTPfIvfcISWBaDNniW2T9H9oX/W67fQ5HbLPRzi8fdduYy7nnHXbK6vb1CG/AKLfUrtOPpNRXs0RfCXr4bH3iNIgDZdBbAZALFWQyFfBGQFynHtmqOSt6GtVuZCl9PlJY331XS74BlaSWFQjR0HU154V7NyUQwqB5R58lBBX5+Iacl5xUpJ6TIhEJVghqpJxdUf6POG9eaTSoEhIMHb/r7lrKY4sy5UCo9glKHjWYja7KQhMywnuDTqTQw2ig1GKhM7LnhKO1p5pGHlzYTSDN1G1YTy1IN95wOZUDDNhLalMiefjLIMW2Hz1f0VWU+RUCitwHZCcsMebUb3Tu+jKmQPoQXEWbKAVYlz1UBKrDDE4IAlMBYw9wObOtZ4NqGwLWiCdRm58OxFZJXVod/dPrI8ICFY21jsORzKa1M19sBwyIjliKjTYVBrH4Otbd1rGUhCCp4BCpTXaF29DQCgLPV48l5J+kRJQ0gXSgtJxKw6SkBIJ0h3eHZAaxE8r6K30N6qQKMvDRWsZiKiV5wzJcLG9+cDbGSe4t62VhVWnxvGsadZougMDuE999oFXo+tuDjRmB7Xq5Z6Y57rmrJrvwbu2DXk/kMFhMr81/Nl5gru6aT6oEfLm8uWY2pRcgyZLIUZhSKpAqlldSZTd7bbu2O/tau+uFKjTPtplAb/6bS4p2W28k/8B50lz9RGpPIfvfpc8Amf6Ek4Nv6+fDDSumWdhN2xCTPGeaUYAqC+ZRgLGDLZHUKaY6biVMumwMyzEWlgn7INLUoNK+qZ5w3CwJQPH1de5cRRYOnacZJWEFdw8u8l43HZnh1cLsM+QEn35tp/LeM0dv1xW3QTW0j0UJ80gdUVoQQzfPZXQj8cG1WRnuLWOhnfgAqxdMjw/022runiNkN38ayOnr9H25eyP/qcvSal8tpkfJKkGrnrS43CgEJ2TKQG+dRnDs8N/Eq73w925qLsCNwSkCsKrFf0lmbQI2bch8COYXV+ZYs/w028voDq7sQ1CkYM4dgCcF/ueSnkUklr6a8mU9EEYX0gCtnNBrAK43wdy3fNTceAh8j+gJRgUyVsgnSgvx6ohOMpGkG7Gier0k8ksX7fEydMNJ20ueWSb9jmfQDSK+CJemLy6QfXKae+U7635quuOnyg56kZM3GAeHDGy0leNb+Cni6EUV7mH0l33w733Vi6u3mkykstWCmO+wsWqc2pY2uvVfE3hMRWg0oQbW705H9HXN0tbprAjcgXCxXkUwFbVjduh+wV0H1v1WMoU+GM7vq1UeIuaYG8c37r+yCKJU08s133BqIKFfqIAuSSlVrranpqlp7Rg2nru0LQNVdHfFfq7cdefdNGFYbTbkREaL9uhbXzlZGpI47YlitosH5KIkombAnVG1RnL+yq791XfG2BdeTP3S5E9JTPWnjpWnPDkadBIFYBLnMLSHSFkMZJ+SwumNYAqkrh9Br34Y7BAnr1aMm+7TSobtm97hC42ddYWR/KyQ3Xuod/dzDizk8LaoydB7RvGnjts14YcvpkOTEMbwOx8KnyVLxRs+2MsLy7MXrqWbDVZQRH5m09COmbCXGaoMdqxg2Azk/G/KuU+bPWELYAFJsYio5avk/RmdeucLO3PtT3Znr/dD8T9WblY7NLq3T7Zp7k1cnyOaVdM1I1/wWMboW24i7lgB47lrqLE427XYtcc3bZFsZu64lrSzsmF5G3OEAxiD4NeGPupmwgCsG3LXUJmJzSaXj1DUE0MMyvVCtzsvRZv5ekoLOg5lhsSPnvludtiFls0NCjAvA9z83Jl75xDFx9f94mLj+cKi4vqGKn+HiCOniddp0UQEYNaxqAqPA1eBFXD2c9VQLFFB8ZAaJeDTiIsq8uVgDAu0hoOaf/DZfuZI2LzyiNq/vbfR66elPvtUV9vXiQA6w3iFaX4CTTPsN/r3f5A9BZeR0hX1BI04tLuRO6ytgu8d/fWjyq4EPhP/6SOtr9odKGzoXZw06gTbvMAS4WZB1be1LtlAmOHNneLuUOrZgE8RGsVGTw1vGrZajy9X9xvkrpNV+eox82JXmcJV4n97A/mDStjVUj1QSUyWK9oapkhtsuHCywI5XG87byEVclDiL+Jrdn5pwu5ZDfuIPxqvwegODxoeRQ1XokzC2hUFOIC6gYa5PoJ3o/IY2Aktfm2cN/Qwuusv7jzBFNOehX3/jwjPveuwbpzFO5ava8vC/3f/0y78+vXnLb3/tdR9e84POV73lj++l/17yc71fHYLm/o/FLf/qyrWf+5Pv1l9VdT9Z4szpP7hl/+/tfuCm3z9NnFmuo8TQJ37WJ2qSXp2cMvan3/DbX773+t/+8gMu6X49e/pjf/bf3/k3f3jdoiTVnuGkutwTtg7OJbT5G0Jmbln37C0v/0ExoPv54/xHQO8WdPbf7v8Ytn4dCdpEennvY6ctbLnhevx312kS4IRq+D/5v+nN/tP7T5vv1HTT3VxT5O0mwb9ost7tsz7r37/59/9pw0elUSGWxCbz+e9hWefKHZCvvMJZZKbdwn2pqfBXCtPvdtZ1upSDnlTU739Vd/BG2QZ9i5m5gkmsejB4Lc0Yq2HjWl/KQfZKo1nZA3h2cGKlyYatut4gIS+Dr/ra1d2QEc1eZBvWsB/WbhhE2ZXegDmJ+GW9AKJWCMjOry4LiENiBjL14g+MuHjhQv51T7/eQzD/SuPGfD+DLfM05X91meD5VMrVG0K0c1pR7GrHW03dQP31IeoETW/tCc3T489u9baT9ANhFbCz6nTWuyl39eJlfTtV2d9qpUWq6D6RApAeoW7nt+3lDmM3vAzyT7q3a4k7df12gN6i5hsxadx807P5HfLs3cMeJZacxwLFnGyuo19I1EcJivwPOJ92v5H7jeUXMk3N1nXcvV1Yfa7xf9vV83mXXpq22BS5R/fUqOvPi/K4JPzAbo/dd+yawK7QVbU9+6rSPoptLVTz26Uj1MXfbNBTf7Z6T/5BSc9/C7/HYmiFQDeIR+4mmS/cLrqpLGlpQoXiG7tfwtbp7nSkb2D3datlQiLHWlm8wT8CxbgI5WKhElr/Pm/jJTMSthuDZtWH6TH7QxPJSXS4WMvUU2hhoR4VShgmhmKb2JgV2xS/iwq6p2epB8JyKJtwcX0wOwC1M8uyE28Z493GYyW8a2gKbwRtc/w8/3vWCkTV8JOgiM+DknCiJEjL92Nd/cSEQQBhAJ4eeL180NXLU+c4AAN44vTytLskT+yAdHao7qSLxzbkKrw6HosapmDCKhPGC17OrfFyrpDHHEfrI9yIRBsQof2DQE3q14ULjWIjkZnhPs1nR4rY6eJ7laiLoLKOv0ab0sIWpcVdSotv4NAvNvaUBvt7l9KsXkA/hdiMbSXN22QpvRnQWx05jOltV2hw3CEi5kL+jfhn03ypTjZy/pxZ1Ja8a232/aqEQlHu5AT1dh9nZULqQh8wi9VphT+mMiGL1eRBgQDSEVDMGzzrWbDjvj1WS9wbw8oj0IC+sqVL7Vmwat4GwucL+W/zT6nyT+EBkxZErPXvEaptvcf4rpt3xtstpkytWkBcfDDx/DyhBDvjC3vmoQgjy3WmNWC/PJYQ38yqc2ZeRNsjuoS2v78IjRvtXx1L9P8OshS+zMvCDjLuZKqhH1mTE1eE8SHkGEFOwMgJHHKCFnLiFg8v+EiC4R7XZkQ9zHZEOiapc2jl+OBS5XhxJcpxd3K51sw6Ve0PTxMpDeE8qTW/+RcvOP6dj09ozat/88wv/LfVweYtauNN1c93v+paadzypf2/eMrZ3a9my78e/uXec3/vhM1bnn7zQ1uf03yFNuphA8Wdzirx1b/5KVZ3ZRIOJxJlnl6SkxJjr0Dfi0ThftaQORaUqKS3nFSHUww2zzfyk3MIZr7HSrHgSHLUand6stkfwtLQUrNTp/FKketFKoU2dQmkR3e051+XDJFNa4y2dPC+rE9Uo7snXF6P+vrd/XrUOycmv8UnYfK7t3/yu7cz+eF9xZOf1HvPEU1twIqq9k/Onfd35s4nYfLjuQv26M7kJ4amZipzXbObF2RSa09lXRN0pKOfKtkwse4V2fB/85jlm/u+6i1vWxf+P1O3H9v71UjNx97es6J+yNRq7UOnNTLCLZz/qE9GfKYjI5w4uK8jI1zOv5TE5twTxECj2zcCJGnGyj2lmyfEQuLEQtISC8mWX+X/vnya5///j/n9Ti8gfL3HbW6Jm07W93pR4bOu7hEVYsz44BMVFcuLiD9eTkRoFW0/PAsJ7fXt/URu7yeWnZ8i/DHZmYovt3kUczpMFLRB5Jg17jIrQSPMGrU2j9ySRJg1nNA70TnR3zos2tlzfaffc304yNY26XPX+fTjsx9ERnFIXWgQjKU2T+NYsv9w3MSHTf6Dnfhwqv9wfOcDRwyqTzb3Dvbdd/YO9rQTtZuWKXbXhw9Z7NRlit3wu8sX08uU+cMPLVtGGtuwwpBohIwtUkYCKRw2iIIcJd3q/Xv7wduzd8eyXQqXL/bAcsVAdSS68HPOLFGkeH6LbQnl4HZcy/37+c2GvyDzJ+jSGb4+qdwanmOGlcsh9x039IPh8PUqWo+p5+mX4A0VbS3FSlcG54BZQF+v5m9BpeX1HH4N/eu57qtBMO4LiFf+aaDVxWkrntnG7kIfmwFIfom3i71EjDa8VLFNvv88VpyNVfjqXmTA+6uqgOGstGP1IpQoV69319PFBu3G3AvSTHyqLE+li8nLZIkIa6p3uA6k2ynP+dhwSHlDqhiw5VGWADHLj6FhVUHbIXWsA24KmZHaoR24S4NQ9hwZXwRNchPKxexDfbFznccGlKoXtqJ5vb4FR8i9dipGZHGFEGUbckUdcGs48fRqaZXjXfNIOgykoqPEAtkQGfBVBHvdAeyXDJ2ywv1ovPxlzM7CIodxOSQIhksgGNpYWh3asBhgRJx+JUhrVnYNsB0UvZ5R9HoCQSGtiym0LZD6S5uaa5oyOdob1LLjrLHQSwejKUY2ZvHH8LIBIfL41UIK/bjFXFMm1Fqz+tbWFIMGux6JmOcGfFpGzxcaKOkilYW2VJrMCved6l+pGCsgDd79mL9+Eq5zS8Ewx/DqpQxKbMDD1wuIQJvmVk4KXai7NWzF3PthnnsnAUgcvj2OsWVrevvyKkbvBHLDHxO5DQ+6HsKV3qZLUWwHDUUIWa4QKVARXsZHqileIf1oBDVkW8NmMehsEovNLoVU6Bpn05Vj5yInXl5BL69Haby8ml7mFIUyVREtCeo5mnc/ocby3iQv1Siv27zD87X4l1qYxxHmXU681Tr9r9Zrs00d8zbllOJbUWyjPG/G3tMG6+I+YutQtghhtQsX8BCQoQa/57r3DfNFjN/Xu/eN8zK5UlnMHlTd2WI9fwX3A7uINyzIXWwKL/NiTrOxN6gBmnVy0gdbFmxIQsVpmUghQ3mhYeNKAb0wz71ObZh9xqhw6Ulrq72W9hU4BCLcqBwYZ5sfv6RuRWXy33EW74Oq3hCoHgppBZK/8114g9J4HZ6wzxf1p+/Xs/n3553l3Mgz1m6hX+Wd2A1QDVcoiXIxpyTDpuUyzLsMpy6XYVGJjfUWLQsiPDOszeMdzeP+5vFA83h/K6+WRxDolsfe/83PvvQ/n+WjUD96mrMK/R1SZMMvXwTOkLveXNzya0/7pZfmFz7+gib3s3/+uK9/8aR/eVr+cc5t8n1uNRq2Ix/RgP6BcubOdfJDttHOEq77+mrJdHY39SxJ3cw/4Du/53oHfSTGCYQxgsr6rlYb66eDQf14T/P4aPM4p+rHXc1j7p/wk2bXD3R48Wi704e8E41jaL/6ARHPadkgAkc8dAHURLdU3HnaAvLNKY5ljqWKrL9iWX8lWH+lNuH11wC/tP5K8G0eJTAtWCPrLua8eY2EtqH9OrR8C7UM1XQoTbQi9bLguUXDGMsbYkJe9YL6wGcWA7ei1rPAJ+8J66WfrzOzLdJgxmVu68k6R1nd54d0/XhLuDTnrrBu89qez3eEdelHTQ9Izee55nHetHa8wj0l5JSHdlcNGX72azCSlHQcXw7raly6SAU/sYE9/pFYKT/7LuCg05CxZp7k0HdZfgybEqF1iVlrWRTyBoYMC7VDj0Am2pSoYLv+fLO4k+xd8MDf44DP8Owpza+Z8LvY0Jj31Yq7Dlp+DwmGUpjE+Ma/CYsa+q4wT/JGZpFhqoe/18AO2I8rFUwVI5GjxVgwVEyJvC2mnZ0hF1lczPirAoqk1gewcuvsE2T5Y/NuUSD94nmLA0K3rfSeL6SXt/hJdJebSjHO9FPXzDa3UNivjFGM9xqQOLHCDCfC5VB9YKwQt9DYuH1LTex2EmIexT0LRF0LEgA2sCM7trgddtrOUAXg1aH0a4FIQ/ZgbJ5/QrZkrseckz+Kz81zZytNTFtyd2dK6HN6jNNc3qJD2CrgvIMyKf7J3SZL4Dan9mPmeoL7LDkqWldGrfHRmKEoU6umyXqipp5mG6XzuJLdGzkQAWOgNXKDR4wqgnqvq9Q2doqdX742OzrZi9jloCJZ9odh/nE+SR/I7tx2PsiBdD7skF+5Bx+VHJBQnAdH3vKPoRCw+3AWUl2XwGV6ybmsSsl+lzvGzdWeKc8hpaFGnE9AO4/P8za7YY0PZegkAQ7wS+40v1zO6PB0A8zD82WEcQC8SNQPYJ5bJ7NSZ6p7UOFRB4LX/H270KP49OAXUbeNqTo0MfI3PuOZwheUETUgri5aToZC66h0ftWOyfLrrMKBrbwK5OPp23/JO79UH30Ahzyq1ZV65lVIaM4bdVqTtlDLujLmysrk31H9GjLhDbwdrX9pPf6l47rrYQ3CDFzwmRsCAF0TAD0MlA1Uw6eEq2H+lcsBzPDMsZKsOGoVV3+IaAN4lPtUP+lfU379PzneWfos4w7XpjY8IRhXUxfgd1StuWAWD1NVIg/T1M7sbaUmpIuPnUAishRj87DC2cxQYIFNszvyFYIiUGRGGgcDzBD+D3pogaVyKANhFcPUQbYM4BA/B5XEiR0KVi2sAdEs8Q1VT3JcUKxtdDth9Wbxub3tF9dbfdZ6AaxxypXaZoUuUI0UvZnrQoil8BfX41nGZLK0QMGdwO/tzzOWicm8uOm10ED1EGYRnJin35SZQ04p+3iAGboABO4IqSP3YJoZ5m/aIwdsBEqOkqDIC0keH1JjzRXlV3E2+VygEvhuMESueygCMDKXNbNDMRehuB1IriqQday0WkR9zUJB5x4mZ0LqrRxj2GBTk7jyzUcraprPI2cAQWVt5ArpYBN/wyxVcQ2q8F0LYIlE65JMBq+maFaFXhBFmB+cDLDB/0WWKl0z6lmsIOh/h1aFEf24RSK7BNhXQJacCuh0daI7hVUavr4BzyeWgLs6tf5Cb6hHWrkLiRv3tS7Qs2afvGxGoOFo38LecjQxW4yWxk1Ws0BwUMscdb4IUNQOLFzIjeOfU8+hrK+hGwlgz2gfY7VRdj5NHCTV1XJSnc26y4pvoW0NKf44/TeNVal2dEeNKRZqFRih0bGyX3sKmtzFTfppDE2jpUpa0su2ZLxvin5QVRxA1qr8atTFIllnb1ZShVm2Csx7lcGiCA+aHhq46wABekoHCgZIIdwTnd1phCShW1qU+USVcX0hZK6jcEoSV8TsY5FJaHZWS89MO+HizYmHnqoBadSB1CpKlNlaRHsROwlVJE6kpbXjuljvqFYfRTFBvTQv48w+/iji6kD6A0EoH8mGdxJ+AhFopIWfhB9ND4WuoWePeM4aZGjLiHVaWB9ygqac6IWe52ORGrN2AGzJeW3sh0G4SNuSwYaYcFArZKVUBADwoyUq1mGgAPhMs8MqPrOhmgkwpOIEQl2ASb1cPzwgmCVlvhv41YqUKYd4hMowpI7m/yCc5EU/5C9QOPRSLIMUy/Bs31CObib8jezw9l9cX0gEMybIoVheMdjgLRvDwCpaBSVzPUUDDQHqrebleH2JAWHM+Wao+ovLETWT/dJ6iPrxGDG4sqxH3tj60DBvP1InYvxtXe/MndkncEAWlLm60EJvrLuse7FTCsCzDnNpGbLVnc+Zy82fGpHP6Jj4aueQJiIxRO68Si8gEZmLRt6tuFvQZXZ5Zbd3G39sO0DnUsFF1M61bKSzyvXhvGy3QqRnaSTFZIjz8ChG1T7zdyHHLL9chBpe52JyvK4AGK+X60yV28tFSZRig7+SKq3iAExUrAyqy+f06wCzNXg3rwM5nLe+CNp1BBw5L3uNUrJIWPzCoLNIQAJRetcGdQBNvGfNbOVO5b+bHnfo5+PZz02bK5vf936qR4zGofzs/2FMTWb/UqklYh4NMfN05fQH1PJ5ZRpB4I6P/jAGqD+MMaPMPajdlFI3KvYufPOzjUwiN66pDGkTwi/zazJ5OM7xj1QerFna+cYCp090HQSwb49MvF29AZtihe4DOMQAIhFDh9CPL5ZEvCsE+3mxfNNQmd2zQYQz9xyWiaQHNjmFoMea5JTgXfiNTgluwC9FO7mefhEb4zr6RSnSq848JXi3e4v57Sb3lvDbe9a42SipJAbyv9QpnwPwmPl5DKoorFuJySQvMREmL5FN+5WP2nf85r2/w4WR/NGJZPBMuklwXX+w6Ufc84mb9+a/zYuuwcmE6ZqaWIRFcMES1tSEBCctDnyVOUzLfY9u8VsM0dDADhfs0CbrK2vNRUKPfo0RVtpNFRZahYQ8faMTyM8mHGIEhUq+OCMD4Jo+QxxRdWUo5YeKOMpklI2GoVD4vY6Kkiz7CPOy5iWTwiEk+kZDVCqEnvOBPeHEzIX+bqaJEGgVMGsCBb3AVOYcuVwSRehJ4UnRUyZL4nX4qaILrL6I/Ezw3VNkFYim8vhAHbUdL1z18KLKnFcaIXxVzfBrKHsqo4so7IScdq4UvrOWLfr6ozNUbwg3FCK5gzPcqqHQHl+XxwFirOBahW/Le0rv9PUr/AbE0cjFF5UU3+MLkoSAtYg6tJoyvq6kCM9fkvT8omr761BXdkrw5ZlKFyPxy5L6vjbDb0bevipv4UUMyUNSwVGugkrZwfqSRNSDgBwn21Lq9PpyfAqNKOWE+qBmCb289//YjJ9/CKZrH3JS+2BwDrQGkp0RDVoEcYzQYFO0t7EKBFYdFPmu3XCipp34ooUSyiENyrWr/MgKZWF0w0AFgYYqNgJ+R6cQBYiVYIxHO6Z07HXaALe8ra0riB1pQI2bM1DE6Ockfc0qn1k8rqeqg38TnGP1f7HJLIEGo86uVSNNZQZSZoAy7fxzX0pdfskMYJDPqovK2GUeVDOMw3KwvpqpLKHXKtLmqAp3At7Lz6ZCqy7o1hlXPwzOKaaFCY8rcy4UE2Fl621yfhnZgWRGh3JvDkj5EljHr2k5YxGsSoZjtuCcMOluK46ylHOb7MxW4QtFUMHuiGOEioNxT1HcKQ4WRvLifCyatqPaqSrm1URaac61uhqdV43O4C8K1GVZQzZ2daXxSi+eopCfBcPddK7fjnkOezZJVD7VaI+itqmQYu5IZ7kXxq6yR5H+95MDiq07qypNyHKTP4SpmDucGDlO9HzgktceQGeObzl9Y5FCZIjXejQlYuc5dpqAmbXT/wU8wTSzSDPyPxA7QSu9CByxe5XVdnROoT0ZiyhsSTkNKafRMDjJBXiDlNOZnNS6blVNJqjxeC1GB028+wsivBkk7cQin9I6oVIiAL+rRYkw/XOysaq7IjNaBWEmlr7r1pA5EY//kiatTTrFqSQ/g8i03KgVzbLtnvayTYo0kw5yUITPmeerVRbCn6SpOItgrqFHCUJDcgQ3T6T8QqiFvoosJD8RMIkfv0qPM1YmECpoJe+1lPd4eVwH9sYTIQdTBR6Jl4HC4+RlN6WfICOyVRZ8kv6S0oXoCTDGhsfY0BhvRG/cDbjys9qnVCfWDotGlqS/d3Q4dn7aXkJEsgb1Xo9xvSRNegbHYa1MsQCdhqUmcWNlU0ElG1DYAdqshwC0HVtxtV/MbfAzw6KF92DoM+/BjIlapojep91uwFQV/oIolZViJhDdcjXLnEJ5+qgH/0zvkQzpU8xwDXOkoSiux6pi1SjKuOa8TGC/z8HEIVg9caxepjWzh47ZE8fsYc3sqQ2xPrGJsPX5xYwXMFjWzIjSgqJunMtQpIwM6lqH0uMoOzZksPnvpE4KUMJJqZM6QEIHyCoPiFBqFdpUpM82ZzN4jOH5Ev6lqRYTKkQNcsx6iRROSCSh9DMIosqwSALaWLPNgEosd6cwN7+BcCsLpMROuW0buYTcKhaeJT4SdnPC5aq6C8mE4JxZ0oXksF2Y6XbBC9XyqE4HtHQgRAfCVgdCErdUBYbtKAxYSJnSIqeOgS6QxSb0qvgVj5mYtacykJFd9VKWaeB5kcBkX5EP8OZ/HO3I+p/1QZBss+QPcfxrjGknJxluExFCjZUhYQMDpCQkBqZHEH2V2Gk4Fk/TekCIX0iL5VdUKMwLfi4WKkswvU6SmM6WsIgo06pRpplxWX1Woj6z4qO8cj3jlenQKdOqVqaV7D+0lOlVrEzPLFWmwxa7rvI6E8JaY6IJ/e3sVbF6hEQqXyceRKLuJGKflRIVElUr5+ZiNfAUihIeQglXrIT71WUZQs3uWz379aYsIUcV/C38bS9EEqgApIrlmNyhmuKYRjkFxG4gGngsgDrkUZ2Wa6DoEW/PCI3+YYBmj6rup20ebSlRVV/1j7r6B/9oqq9QRqwuJA8+KMnzZTxKnm/gkRdudmqbkOQaOwXrCoikisAXxIHIHEKUUFrMaSk/J8I3ZGDZCpZgYyGB5o3m6QYIGbD0KipAPPxYct75eKaYgj8iHYc+XXQ+FX4JsWBIhTMurZ9g6bM6pUMunVHag4HnDzwjgwXeEGV0K9H8KuK5BFv/ECtDmwLui6j4bEkifJpb1OdBnOfnlzNy/Qp/EPBgGZvZxh+oWnyZaRVZdT7WER9VUmbGd6kKCMvyxRVaQ0SO37W00KEpg72iAk5AkMCUvx19PtZen3SzFCJlHP1iloR3Hf1CDN5QdkjhXMpPiP1If6mP4Ry6xbwwfnvNjsW6rEymJpMZPrmhm6A6sb2kF31p6bJ+LZb1lH+1XbtA/4RYmiu3NOcNEugBnvrLUOgf/XhLOEtNAOxGVVEVl9lE/PCN/2/Wn2WSw7Ao803lyzSQVlqsUYFoQqzqnFNC3S0TmyA2F/ZvVpEoQy1tMEjShzYRBlTVqMt/NIkx/ymZb4T/Zhz/qYb/VMN/qsN/quE/1fCf6vIfoJwSDlzFgjyV8O3YuiMVGepLXMBaLBi8iXQECGBaR/ODgJo8NwhLBbrBKv3856tHZsQMyLpHledXQOo/X23MXAmOmlByc5IysgnkAEzi1GIqhxscGTWiFp5wczfJ7dv8soNflLxcipdJOPnXVIF0x2uT0ugWp7qms2CoLZK4ma28myV/SXMYjrsMsHZR1hCGikRaeDdqlnwnlqvkmWZk6GkG4pUmVpltLmKt+Zwy3WZTZ04XaX2iDaUVm26jr8U0lprw104svRnZx8ZHyooOgy4lZNQMb7SVMqezJJ/BPD5DPymJ9JltTJdInAXphfTUAaWnMcyX9BbSh6QwXncQ87VTs63m1G0dZdtOu9ecXquoktGkeT+TeEEwVJ2xnlRpcEySLYYcHm/Za6k8+d+510fv/+heU/KzlsC1ZYjdRvhovQbmTqrZhueUPGFqSz+r6xDIp6JQNYcryClF0taVoaRqKiDTL7uQaByhkgbO2Uaf6tCgEiXC8GT8pgO9QS+5LVc518VzervVXbwFnr8FBOraI8JDouom4pQpoNLtOmehChoc0HrtttLwgErMX2Ob9i5iFGQOB9kS+MPq9968qxuVFLU3F2I1vcEHXqI8OjxHbvtBTiR8mxLwlC8A6HqkfEzYUOIvv1X4sAkQjZCdc4q/vaNm2HwPHp1l8d6Ph7WkD7jA/fEMe7zwkY/2ns68hDZootY210X5+DESsl2o5+Xdu8JM/uXdeIrkY/72t+MtbqHp6rd00KSr3F0Dp+GvndKP6rsFSjdRV7cqrE09PPBP91172WaxQzQBrJC2AKPAgeyuvXxMC6jWEn3rXUpjpdu+fLCJtoNedU80SYyuK394aZdIm/NYDUD9RX/0J5f1F2VL9lshwyUcmCXgrmDgLgFwDVDjoNUKK+uCiIn+qvbtqz8vsU3uYCHktFosuwoR+KTdikGJAx+0atlLEaCyLPs/GNvNbZDwCLTwdWzD7L4S5HA6+/5UaLYz8Ie6Hy9/GygFNCu/zpRrqr/6Jkcx/ub1bhFkqu8vSfnikpQ3/eNkyqe6efJPz0t7//Sb8vvQB/hXPBXz37qJ34QNnSg0xI73vxyVOXaFeLgPCajfXNAJakyrCHxBDVRo6dcDh/x6L74iHu+Sb4WR3as7Mvmd52GjFSGVqPZnjU/4nMJ+2QY3B3vZuIlHnw5LlGHnEBw4rHfIe+gp3FuGE/QU3oFQEx16Em+DevkllXOVpyvnbwViI1DndzCod/wwqLf98nfudkImfwD8gTb8ftHf/HVP+GuZ4z85x/qz87h57WbXaNnjGNuJRSIovIdLy/2LMj+cJT8vh41KAmdvJYg+5S8LMfQXS4F5VSaoOSliNg6Jm6eExZ/3U+R760ymyWQk03s5U2zN+SLW7+dGPDwnIivDXG9TiwyNmfY+93hnqqyvQUFJ7l71wB7De1bnsTSt7pdXJa9C5WQNfb5aAA5QbouA8du1lrcB0wan/br4nkm+a1tXOH78yjbMm53GVj1EjTk3tWojKrqnPjFs6OAyjKGMf8rX370Pf6a/e/jGeEJfPv1OJosPAAYw5rWi3jZ080fzvXQjX109VVwp+rb77TX37xqxRXaUf/fKxgpzbzrzDgFBvv2W+1YF0q4UFMSY9ldKzWDNdBhRjZxrOvLr+3d0OrKLKpzoygd7uiLT/O+hlByvFCDyj10m9W+Xm52MjfO7kUm8B3DM8caBWHF5cVBdM5rNf58HsgucYCdoYcdUf3/zSpH/+ZsPgfxSauqiv0MBd91ydS8FIBfBn78ZxY+VHk/gm1cdow3aj9W7xNWsb+A6TT5wsJfoOnl2PH5lXx7h6M2emLWUYU5/9+c6txkF1WeJFOAy/FwlLuJ8x5+N5XIV4U7d0hch0e5ZMD3SO/+M4FS1r2r/vOJwHtTOLTQfCCT0JDGqEKEKGux6cRyiVxjj5dqwmHq3GnYfWfYKBdJBpP77fifvEseFbeqX8cmq/zw2GRce8f5q6MDtxJEXxzZijQj06CbY2+YUniEa8GxjCZxG+pEpQv/239MwchsUvRcy3fi4yh8St4GaFh+49HJQLehCO0FEQAnDvHdOlRpYkPsXTkLCkrD3aNgbORZpwaTpPqJx3dzX0Bzh162UdfVd2ulGPkxrewSU5oY3no/bT//ePT07+Nfeq+FzoBZw93VSXEC9rQNqACT1gwrlBjV02XuSOCvvZfWR3768d92F0gf2h1IcHYyaa2JlBsFWnkLvbAg/j+uOk2Bnlh5PIIMbXlIm10R0/JjNefg8cjnbn1lFQD0HrjdUmrLNPyoBCCjpLQZPszbBvyATFykjkvu2WpfOBmjcwenQZaix/HrgkjKm3Wi8jUZtcT/pEjQxih6/axkUMayFQ0ehfZNSltd9PFK2psVPvANaqVXta0uXhgjuESS/+0h3fYlPD1/Yvo2jAQsgX3agWW3kbxY64uXIx8GRon8LkX1YVN/8T+Y7q04kvcd9mpdf4KlsX1NyoiNm6Eu9iHvrPb1reof1/fscLH/6PsDSDMXZlNyDgx9+oZkV2LMuWSows4YtBfbvQ98vgs7NUAGta/R2bH1/hymsFaybY0BL+ArhQ6vF8y7bxs6MIk+7+b2njkg8rx51JZ5yEk91RJ0SLpYmRKlF/dkjYai7Yu5g0FqLN5g6sTT0iaUR1jFFKG6huCgu9s7AUODjzmns6irN+jqyhchW/Tol2Lj2Y/9VSrpaV9foOm3xtF/FsYnmYPe5N28G8wL5EhoociT+1q9jiWx1/hespuimDEIbvbIuk7fKfPCrUobIuKfY4vmtpmyr2BVfc8VsX7HgBa1iG1vFPuVb29gUk1ybW7k+7nMtBj6bQu1KUL23VFs+8nt/+bnPX/zX/xqdqln8774IJaESG2g7hG5+H1SR2sK+UCg/WNQERqGz2p8YJ8vD9EZ6r/OsW2yGyadtWuRhkt6c1erN4743B3xvMrn71JlVPqd6z66L7lop2SoR9YVUl8YSURoRA6YrBkwtA01HB8IHOFNQPXw78vPxBONPWwFCQtjwc3UQqxdF58egavKpMSQYZlXsJFIiRi7/nd2ydETPWkrRbm2EmaR7WHg2HYSzcEXqUrMY1ZV5vlprNWlC8CF2xg2Wt/HMTW5R7pOLsDkMxPHRrChnn4ZEq5R4VPp7lqIKxxySM3kDof/8ZvdkCCjURrh+VsiwE4UXaZtmvfFK8mD1+QYrvZJ7yvIb9zDaURl13EtAk/36yCTb1SWNHtW69kz+5yRVrcJ5pQMEyVicuCYWwy+2otBFBBDNMiqSOj6rC6Rqk/xGhiOZ5SvCIP3EyR7aQLSNErsLx1gIMO5RJsG8sWvVF/Z7hCHS/V3Ya/k+3yncZxjIraWKVT68rKYXOjhXDk5hWb1hlrWdRArE0PVxbkxuLUc4EemQ3P8QohcYKImd0hx1daFT4ok7pAfVe8jknEwNdBiaMAhDjQN8OHKnbSg6d1vb13BOGFTfhF7O+bbS7+kBe9iG1SY5Requo9s7X2bdlUImNpGF/P3XgQ5wA6Wk3ZHtqXP+BkV6lRtVEbjYdyIkjrOZkJGvf4+3puJ9kSvan+2Zb2pCweHNRZx1upxMHRUaE+iI/jFGG/pPGdnet2huAmqBURoiiS+kAWJKHAIfJGTUx8MFZ10Odf5hQraj/A4+KZtN8Ft2a5E0/JagGXglEr9tdNdmo24JyHv94UtHvjTE/WGAs+EEaJihGiS80p3tOFyb3CKIXjZRHcArAtc5hNeXAf9C+yrgxEemCiXfdyC3eFOkvtv74R2Nagc1FIW+9LYdYh/I/e2yceYvsXtnaxKIsYknd9HSY3MXbZQ1lFyg5VS2YjJP6POFcBRGCkK6QzZ6gtiJCkfat7/vd1vtJ9bgVOxqmW7ozbXvCBIby9SYAFLvH8htTliwhm59jUFyGqEY+mKsT8IX8uIyKXE6EenKpROGIeXQc44PiB+eQ9nQCHEDALwa8edva6vOAiBQwqwgFQvwbVkI+KFnOtGNvXdqB4+u3Wq7UMHFIFjTaMQJDuvoI5ohhc94QiS4Juc84+c8NA3GkEnNPBmTWjAxqQXZHxwVYQNUXzKsNWdqoncfVIbukcXQme1oKoALvT+cdt+c8gt0/MpSvn91ePvOq/sWOZUqQnFKvOPjIWL7/JPYJdjs8HKeVVs2+pBCH7GxJ3N3W1BYFJGx82X0K7KOjfIHqQ0gEdm3uqtGm/xOVM87DuJyAZf7klgUTP4dWRVxzh2KTspvv7hMnodnzK6nq18SsSon1JkD5naQJkm7C/K2C2+UJG/X4e1avFUqf88ehk32KVBjBjbZIeemq7nfNdgPF+twMSTkwNVy2f85AE8PfkkcDe7cwXpISPT9JXhXyEjSH42SFtM0JIUYNfLPv48VQdmVEyNPOHGptnFzQ8h6jWMfOT0Ygk+NcLaUjCQnzI3Zi+ktqMJ8Ht3FRwg58J0cZ3kXTe2jaopOolXKji6oduxgx5fMjzvAcKRgA0cKGMyTgUwrdHAy0OwHazRoLYzvU//GZnRa4nzxxqqM89b8VnDGevp5mH6I6MKsivJvO7NUNuKjNSmssHu89fMUIFRqdpZ7OyxC184eU7IAIS1bXLVHFXx5KN2OECIpZZSRGIJM8CddY24kvxeYH0fiYHQ/KOBLrjGYfvzQlGMxwI0hyKZA3GOYQMY8KFM0v++nij/LOadxAp29GU1Lg7I5YXmDFu8VOdIEMNNZ/hnizEf7Hv18YY+s8jgPd3T0XIVIChxU4bkqrJ6LJ+yWg/Pr2yvoKT/wPjfDNdbrqz6PJZ5YXXR7d+K9/7iL135SgV/8pe17qBWA2DTbVasg6KQD5UylZKAcycJLbyQojKgo9Qadz+30y8Zil8i6W1j/Zjxg4s3/eN5VAi/rNr1mMhJ/I0wS8Lh9Di/HZjVt8ERjBCc634uykGdCMnLWiH70mWNjg+dgDYeJ2rRslk60jb0McfuDItLKiIUI3iMhdn7YLwkibboIQonrfL47JJ+XPAKeQIVzXgRmkjVMJsZQZ/26SGQ5rree9OIY2bC7VA07S9VclqrK5u2lakgJI08BnmNDxqOAhUGrmeEElmMj1v9pPUJCAg5RNrygzKv3XxrCjJNX116bn0dope+k8AsSjdun3qFkz31kHCrvBwagy883CJKM/EPJqxi/IHg+0xXSnC1jBxVaZV6wCCHUZksqtUlC6G2sFZL//qegbTajNatzhg8MhYcDimeP0CvfMl/IkO/hyQ0D6dXSu2trk40axXc99WRiszm6o4gnnBdY2sQ8yxAuXGPSf7mV282FZXLXHu/YtH9vuaqn7VWdtldNtL3qkG3jwYa3X2KTi++y0V6MAJb2h8fBE+uhrEUkpFQTNG35Hs83Xb7xyeiR6mOVB++9esIgLdSdy1mWXNT7UEzdNYsEYreGFyD9uAVymEm0rTru3sHI4OYSs72lwum2cUK2tGWXGTw6D21Nu31vZ4lyFypzdoVZBKwB2VKEtUwSLiliYaICmw4bZhmj1JOU1U+An9pkD79gw4qe2BmOn/KaPW76yOXehGlNY/ZzNcdW+2pD8JaUb7PX3b78xqY872aMmg2Gxuzcu6vRhA2va/3H7189aYxsEKb67p5e+N1l9jqwHdMPCgoPrHabHcHkZoe2g85OxxEAKkd78II9lz2GfYdlC/X5StB0HMPGO0WFckC6vTOJ4nzgy2+Q6w/uuZUehmIkP3e2zGQryvhriA3vRiHfh94wa4fSp8wOK+5bJg43AwlrOJBEhZOpfmcqQOdaYxL6ruqGxrM3Ga0R90y8bWou1l6HLw2YVWyhe/1MF4iOndWnji8h7UfpwMsH0VeV27bVEwYAvST+OCCMxEiSP8DalogtTITbxY87Es2Aj8ThlXLe30oQ8xqaxUevuRRhazskcmuQJ7AdEqLq+kJ1guo5SpeqrdA5sBVMfX/LkCuBXNWQh/lfN4DKxfB/1U2IRC2Ez9pnxWeN/i5xIudaVdtDGfKsCBlAeupdr8B6iHl96qgoTU0Q0j9pqlL6T9OP29rZ/bjKROcvdL1BKY6pUbPzy8e3KY+NZDcQwKJdp+0r0gdLLSq/FpVfk8LDnd/Qa2sS22hjEovE6NRz/17H/owqo3Ftj9i5s5H3kVjfQxHy2kZixXkvqiVYJOzuhonVcoJtyXe0tjFTrqMYgMirR79yKbVy11d38LmhTcThnWDd66UQO3YbO8BhRvhmG4jLpJFRYr+qIy47l2dUddjeohvPV2fRSsaX2bACDAFH1NwzLiwTAuR1ZdS1qfXAVG+SVN9ro1TJjuEDQ9iXjI1aW5sOr3HWg9CP3dRB6BPC5GppJ3eYzBtMNlg73B2NvI87qDtnNVAY/XNR4ys8NWJny6PNk6MMljiDK95W2VBR89u4GWYrKMX4yMn4ngmETjqKMx9LGBYGftXka2vW6eJ2iaoQhTLuGrcxJjZ2ZsWFZgUoAlblf/tu15jfu7v+gblJppHjEtTo69F3uvxAhlLCemMwH6n7H/2z0/MWAW6zp+dqsQFuZRiu4e9eRYer9PKvvlsqejKxj+kkdL16pOV/WiSC7pdLj87iHlFadcD1SBZ/lHCNwlLJneGcuYyp/9hm1W1avWuvYIiWxNLdiilXxhMqfHxHMZxQ4YeZM27Z4f8LRdgOn4e3CYERWV39+Y+ubDtRGEYSwr5zXwzOR9vI669afMMTN+mPVPe9npokcolBxG9vNc4+ZpTZ3ru5KKrbtTC+4DGWodSY5UNQSP55PwZ9HXjTwW4HRIMSzwDugW06IMVkFmgoNxTKxZF9BUlU79y/se1jA9R0ZCSltA0+o5ru567ZNSGMRIaHIsOR4gtlkysg8RXGPiNDVeWsNCl/+uvAnEJO/LqsFIgA53dr9VvQySSPKMoF8oGK1PMVLTOQ/6G1UJPpB8PZUyuT4hcAfHtLIPts5zCRnViBodkpbQKVTS4iVPXXjUcZ0p3bI4xygki1ZJXUtxD5Ub9fmij7T/qaSJYVRJdCDitfFmHFsfyyKDzUsig8smVR5oDFiigQf7fDLH2wkinCesUTLbvi+V1a8YQCrmwlQc7zikc280NR3JF3LpV7hKLDr3uawzvzSpml4Q4FVagsqIiTK+wvqPWiPFR3ZNX+zL1iEV6bYePqj8WnJa4+xw+UyYYN64fW8E5YxVKBzwKamSv7zBCtsHbZzyt1SXOqxuqFFZ+lUdbIvlR2jWGHk97zL7KP1NhJIbZ3Icxfc7wDv3NZc+yjupMPTEjotl3NkY/9zePikoMgm9oHQbznXvewFHrBZ0MEfiO2xcai6r2VNWRJMGECipZaSxVEeNDYRf1ISFcwHQEU8Wc2k/7Mxvkze3ivGTm/WPZUH3X9C3cZ57v6tq9e2XNjeccrOrtMcUDtZivIiHCtRl3/FcPOv9QSHFxL7AQhZ2bD3qxp5k7TXjztrv1h5VsEv5rc2s126Q7hm44xS7PrJzvxAYl8wZafMJCAGGmYpp1BSs3yQl6Kyga55v2gjhwVJKnqr26dUMq0jBAew2ae9+04ZudmyrBJkcOmzPMa5yF1dUn+fnf+K7J4uxVvqKdVSuEnBYLq4bjyuUev2h5ejDAzIeK+138h/anOn9k+oOtCWwvyqAmPag101Ji4/3VlAsu/BFyEeowfrEjy2So8vxhiD8wm3mWHTuCPcTkoz81ylw4l5q8pYpsBs5l39qbXaZzI9/WMqkExrkwxxfWMbfwiqmdEuTTuDJLK6X/j15TTdnzONjRip5pGXO12Wi7bslOVni2n7NQ5xbhuMa7CF7kWOXs5bG6myizgVLTYz2kj/f/P21WAx41kaUtqa2I1aRM7k7EHXmlheOzQZg2JLbfdjr3DcMx8drLMMMzMk/FSu4+ZL3M4cMzMzMzM9//1Sl0NDhx+/tySCh5X1VOp6lWd+meF6K09FSw1udVwjHgoJi7rgqsKs98BlAZ4ybGpStmklupEqmAlJE9VSUh+AvId1JRQU0tGQqh1UwUlSMzD44QYQMCWn4qAGUHwT1NXVhMSmEqZhw2kRzuDauxMk9x8UbdpxvST1DR5mxSmGZUBJVkzAE6wFWqGHQOJsjSuq3x567RB3mK34IzscUDziqjmH2ARcmbSroO9pU4mJkzsOJfyRlYEKsl2ml1ErNPIHhWzEtmJvwSc72JnUaJdJhDX27NRHH9mxhifgpFGYlbo7Ud2IwcnetW4Abm2LjWwp+vFOPZei776q67+hD9837f+yYvm3KX/uHlpV+3Nf/6i2eNOAf2jF815bLijAGHqfuPdOSe/yDAmSRLRphIZu8YDmveA5j2geQCK7FvyelaVcany/cP2NQMpsdQhLkAddWeedQbj7/++e3Qw/vJvoFbzpwLcP/aTVsNffof2yhWyOCE7zfmnEmZMYVozOr8sEVvyBVLh5UKZoN4uklHI0oiMyeiGMQwN8g6TWTGaV8vu/C3r5jV42nPMvFZGZWzDvE5GqeiLZc/S9X80eegvvv935tvmEia+w1xK2WEB1TFzGRPs3eX5EKtdsfRZV7aeMG97YV72yJ72lrlSRk/64yzMVdDTpIyZmj+mY8rf7kXuPv+4398yuMVB2+zOk6ukdvKLstf7LzruJNdsXPDXaptDKpyDbIMHnYRMjJqvdyXNGzpRBjkVPBQGoe1ZjpsaDKDOc0qkLjXokGYGXVa4ZHVcRqjXBJc60+tookiXhG7htPWxKqyIIkwetymxTAtLtfiQgMCkeKgSQV0MP0DjsoH7UdyXiXmtCsOmima8fR7aMrO2+zNzcmjTHAaVcyT5iAiYmwV5bzDzSDwiMf5pChTX/KbJcQmU5NjulxBcFpFUA60utaGpS/l7bA+wZBkl09OyaI2Z98sS8b4iFEfWlAaf7P2K44jFPIcVsNuUla2s2ZZlmd7KpiVvO0HMCxLHZVqfY5lh86DMVSpjRymJ8U1wNSdXCEVNAWHwoKsjEBVLLeBR3iDjbZA5Lodwg6f5dmsL1eZlGv+HccyYmUevr7VigAXAS9ezOaltQHoK59K1qj0BfkFkXQ1F6py/GT1+st3Oxp3RzMu4nnRmxvXUwlHq6HhW2zBL1MhRb66rPpzSWh4AZE2E/0cnshnTiBZoSZR8sp6p0DJrXOQ97thd3Ql3upUtM9fZYqTCH1EDmmRqdT1bZGrecprYIYCcqGUe9jaZzbayeTzGarnZG3GPupaAq1vZNbbuMjRmViC7a7bIMvRmqMZ8C0J+o1y9BTM4LLNbptkVDGWIcm2yaA6xN1tWH8st0+SF9Ve7j4+EqLVUrnVsYQDUOt2FP4ufsCIZdy1JjWrFWRAvi9JUy8t5mVQBjl1dDStaUdbasgorc20RsNuyRqtzoGSqLftlXvMTPO9vyxRNyAGXvW05ILnmV/F8oC17acW96IJy0aHI65jUsIYJ5AYUyCHc4GmVhrkmq6RCjtIwV0klFH5tlY2xIUKl1eyY2LBWGA9a4WrHCtfKgE3+AHkrm1LW1nDJ2A1m+9stc0CmtMR+dMV7gW17ExUYJehYAunaB9G0dbk9nZPjZqErLusHdemQRluRffQgL3DW3HdQ94WSOH/2NZLo4rW6J4CnI1TAZXyys1UGpz4sOzanZdmxuSy7ucJJ269U1mlqsdlH2qryaroACS+LdLIbl9OA2wKLUhVV5bXr2ZLY9Gn2QgkTGnqMk2p1UdiieNeQJdxtZuO2JsqYqlTUDUw4liZS55hYZ+sHLw1Z4Gh4LS4RempIamHDXIfGfa00UEoWcGFOLNe5u4SsSINmcz2AjkiDYsOr4g1sgfMwlh2Cpxv5lBtuqyEVKOeaPe4SberoEpS9DOyhjDbqucuLtn/ElmkqIyl7GVufVS3TS0gUW/xIkeQan2u+rkdOZGaDfEsFzGWVoyYSMEbu7DveDdo0b7RNEyJZlOvNUrTQpWRwHCOjKvNm2icvS26askhfS2LyUAc9l6vJUCS6z3GlTZKW+Z7h+EfKOImsqwJheEVJUt2UWNNZbppcRJaFRTarfXBQ8Ls2QX6qeUiZ7OMoQzWApayh/avA8igPK1FpAh8fRmSJAljyZVrdZWyFfbK4AXyLdDswaBI2xNGQ63WMx2UjAybcVyJrQDEdDT8QqI+BBFITd40AYKRI5c8kfyLmL6rFm+UCTAxrYEITCXZkmFGjMCtqOgkuRec/i3tkz9iBAOMCHoGvbscC3C+qoWFQyHIdSPa3tElxTG9hWBm3YsimNLku+yV3vuLPzLflSvairWyVhTjy72nLJeoNLLdhma7prUrTdcVXY7zJmlpsVt64BZ22QOO4TPUA5YAOcrW5vlFmtWMnbrmyLfO+LIrRBbikLXvQI4ACW3JGkGhrL0lTM1eYSTwEcLgHgOp+DplaO1IdGNsFUZ2xqjPsV2dVFefVmXiHUdWZdCsxUSViSO/4A01VB++pDFVMMbxXCtkrK3WtXuVlXvXTWbBFWcu50nFUt9rZisqMMLqLjaPYPHTVLqASjnprZxJAuSwHJW1yFGM315DLxDpFC3wlmJHLUQsJ6rfmcrFBLRH+wx+63hzp9nGzw6YJR3YFsqTgUHRlE0w1IcoVs5+p2SJwsDuG1jfNsg0NMmOqsmQqMkfnXV/ISLR65m0JbYKODY6j/YJ0LVG4oA2CpFPFbp+XitR5qXOIwA06ahkjt9ZjgBZX6HA2hQMtwEkTj2gOZhzlq9aRY+FwAY91Ph5Rp6DZtv7UIdzgaYVOQZOg8J/TKVipBF2VFihqyEicXJBeYfqlcDpkwdTUbT2irsMCXQeUpevA+oPew0rHe2iqDzshY3jH14mb6pAd1UaNVALmcO4DqGLMVmQNaUi6NsGpFaQBLGrZ93MYLB53r/MtM5bdUqXAismfGoBNsvt3kz8JPZ064wdCtvykVMNPVj9OYDHHd2Qh5Vg2yZQangAiVtAJuLFdd2AVpMOwTPCreIVpsSWHlHAinRlDZtG62hf39rBVJBXda80N/TUZ936zFkvUb666ElUtcbGM8q04Vi3wNQUoOC1TAVGLpkY2DRihvYNmElEtZlDqYAbSYsU6X2RQ9mKOE+E2UMtIs9eyTBqhQUD+11Z1kH1V9xyOnraO2S1Wpco4wF1UTA2UzEFbUpC3waRiQg81ZacsHssWWT3hlI+TcEyidzqx61JD8kYESzldB54EN2PHWjPXFdtghh1ARFU0ZI4DIbXFBmkhZjUrTUkY5Y+WYCqWCL4cUXxkeUKPi5AqSWqYyCGPCSKrqpInpMoyWZ0wE/vmYR3RpElVgPGE2cyRxBbZUONKVoghNpO0bVCA3QCascQMnRBpuEkhEV4uzQNOlqQyScwTcr6MHjMXAu5B5G6YkiDb7gU7Jgc33Hv0Pn2PzkDJGFKzMRIYSCpjnMRE27QkHqEsjxRzN8YyIZeKOWYmpSxG5BitQcwFKD0pFwA2Ob9ALsQ/ftEM5zayC+RitA6Qg/sqhLmb3hRdHBDgbDZBnyaZf4bdWauk5iByvvxauRsr4kDmpJZdwY5EJAaZcUHh0vqxDN7PjGOypkxWhCbTO6vAE5XcHEKEBKl55It8rvQTQ1OAlDNVz4wkBH+EZobBxabNwaTlinW4X8ysEAOdStuyK0jSmUA7wmkT5oM0OmjIbB+aC/ADJAEfIK8S9Zbxkrl1Y7v7docN+y/05W8q7YhuK9nDV0t28j36QDGtzhN8sfRDQgn9I+JAhpy1KdZTpC9JCfNX5/j5q858YjGRtUPw12ozDmZ/nkl027Q7Y9R+fCCiIcduIHgI9KEzruopNcmmSYqkFxkAOMYHCQPmaOwVC8mEMrJpqt5Rr3GZMd/bcjEprq7zkDKPjAokxL4LqVmk2U4OtrvkVbyMtrKxtsY3sc+QJ8uey/s9W9l5sgNO17jsktGtbNeWlwQ52Ink8VZv2rnQyJ4WoO8QwK3JeRhoR/vqvYrgeuuF+taYNjWocdsQwAhu8FTjwAtjQa2aVDnw1iikcyQ92aWQrMbhkirZRNWIXR8qpblwDrzmVFLj/HVl3X60rmyY0L0mcj7e9aDl5/gB98xfnjSARv7Rv+uJllh806p3vjZlEd92S90fiwa+M4X6ZYkAhYmh++4UaS2tXL55aJCqgY+GAdXXT1XgqSKKwKP4rwD94TMCvdUBXcfZFhpLyK9adZvH5G35Pbet55+rx1T8htuhQSVgSOjU4eBZL9KLuunHGJLL1WtW9XTlPwsifEfz6+hvDzufHn3TcJs3vj5wm/aJI86vbLqgJlelrbvs0iy3jJeNJf3JZ4oFOuTVrljZQA6rTZzUIKuRLZnfRr1PCLJ5DEmK/VFu1Y77pE2uqNYCZLWbMmvI6UeAX7GcbGWlTSkpHlMCErDktw3sVCPBrsOR9fTrrLBfCSkBH/tBehcihX4ZYqDLEAdjB/YveAzReHoXJi0Z2uVX/tX9fQurdLULbvPUL0nS/bCE2VmXd2akJNVtYXBL8YQm6Zc0FecZDbZEBnh94iOn/gbs6PKQdSWX+IVcH1IrCgfCg/SLLurjItomUFh1u4UEv/Rzd3n6Sj1BYPvlVqICUq/zbxlca1HSTA2u4mLpeXU7egdXnAa6GjL0ajmrJal9ahnm0+AayZLvNYqYsGGvWkIp+UW/pSI8LE+o6V+eCQTKSP6LdhN6hDS3Izy0G82p82KBuR5WOGyPDyGPwzmrSMiLrhTFtrCm2xToH+EPijtuiCDt4Y/DNPywYGTYMRIK2bz7h+7q7ekd9WVV28DZkV9TCoOexWXDXRZVnD+ujoFGCumLCKKnDSLzi9k56Clr4UCYlhLT3AdVVX2skVlMeDbwQyu+PGuuM66Sk2hJ9IwSu7SKmc6BEPZmTq4cKrX7Y2LR0n14peLmRYl9vJ+J1hkXW9OE1clm0OebJXS336vbyaXkzzXrkWHpVDxq5aKW7sRCaS/UDojIgRjDcN0PZFjXvbjv94EUK2d/4jnatwynd9/lVo9q0VEtmkrQV5BxI+46wbIo6bugoPxE9xqeP/VreNKfsKMGgCFRzxbKb+OI5k9t5DWkBO9/Dw695GVVGZJAxxy1gsFYNkhVZFYkP8uiuletVEf8hPIBUGSNwtNEVB5vLxY92GrXkIfqMsoN9Qf607OQIRPq5YEQf90lf16pKl+uMBSpUhMUfd2vsIyglBVSufxQhTEiP1hsrQs6i9MIIP2ee3HnwxTyerq1iNFCZ9mnLc9V+HAlfOzFr71HN41+feAXfA5sntGaFe7mjnkWQWk49oGkLPwSZZl/zVcQ2sByLweBoajOz5n0HrSLvvqo/U2/2rVweLhD8PncUhKw752ySH6Mxti3z5VFAYvNAUhEO7XmdkhO/Mq2SAS7IhWJ9CKRQSQS4XgS62vG/fADVD35yh29gVeQ9tNP3qHgUg+usr0M/3h7GVaGtyuNOK6nl/hl4fmN81+56Q8+bfksJM4qqGBilcT1uMTfMR19gsX0/O/pGk4upR8UCRAJEX3+p3Jh/pmkroikQLTgEB3tRfRSF6JK6b/F/uWRLH3zR37pvY33/PH3fs7yWRsdqmHnhhL3ll6i/nJb7rH3ocCzhJEhOku7Q7Xp6AsUz2f04vnNbuaj/3fmTwRK1eNBL1mPB2fBfvhfYf9+h+n2PkxwnbrXPw6C/NO/vdeDjHx3YY+iblloANPqBhNsK8eT27e40y/y7vSLXIm6x453uBnN7BjX1R0o2O7l5f/+jbpPvwtRyJlqAqOfR8vvTAJ95UgQ+xWWvY59oEN+FuXhWq9279fAfn/4RV0SGvZuO28L5K443hOdNH72d5A8+KLsfA3HQ+tPCDkP04/Sc1g+W+yqZNxTu/9dEvLD+sarMQ7xHDJ4z4v3du+P5WAVsv8fXG/7Z39+R+/mh0j3CeG2p2sjNTbgFAMPgXRNCMte8Dk/vXYJ5ZU/skIZ9kIZxP7Dm3cNYJ9y2KcGkDsGh9cde8FZw/TbODzM2wqYwX9RPOKAyQCBvEhACdHEIZ2zJG/BQXypX+CBxqZmjC51FPVw+b5og8MDpOsmkK+7v/cID999WDOhK6xfEYodMvZgyFqpFAS6oWJPUxcClfiuoEGLy/50d2U30qX+w4UdZkH3RAkLZ0H6itVXtDywrvYcifPfeaJLxjElkv4gykOEX6DN5HNwcUNCrFFA/R5aIukPrziQFpTPskG+Rdsjh7VTt8efe+jewfao/ZbfUFYq3xKG2J/NoAA8z+u96yya80QmHjwraBmXrRvsNFANED1XaLsX3Whxx70ytD8Y+gBJpq40VHbUBXVqe6j7/jtQn6wFfuX6zu54qiH2uL9QotT1FIzUbdTQlPT55/yDhAxwlZ5gkr4EfPiF0mzw9zBKF/qfR4cAWNH1f7ftNtP/eIYw/D6tIlrriZHqkA+cVY26bfxfQ7tp5ys27+9tTIybP6J6DFSPficWoWuBrPPaQ/vWuFYvlHDsMPKgRlZWqpj0GZTibPBgqPpFr6iEQPy/coI7StQk3VujDGkxwCSv6Uv3dUuDfWsBhXvGntD6eDptffdKXoilCAHH0ZYMePEiE2WLDR4l2xLLHjsHnD4mIk/E7cEgEUSnNFAofc9R/pV3Uv69yfmQe35xu+cyEsCX2/n1sJ1Z0ny77N2Hwf/1n3VkveR1SEY/9JwiZ+0vitKPuEe1vX97VsnPT4zYoOpM/sug+8wnN//JXZU/8DM90b79/h+FtammrVSiBTiNWDJ9HJR/VTJ7hiuKRsPQI32IXmOn/Uz5M2QeYvAl14z+/NmBZvRnTHI4+aqoMf9c5p8MlC9Ulv4dszT6A2nojY/7h+/Uk1rwH7hU9Pd8h427NiSfalPhy7/74Km2OI72jkjFtjvuIIYY8VAqbgHL5qYS6I43XsiYKhGyCtIfIA9ZRMkp1eywbTi9asRztvH2Ry46SvitX3twIPgkWayUesvd99unKBeVO236D37Tl1HjJAGZjR0RgvQH/wX5+Xc+fYeL4TWxjndljXzSiQxaiHhbR/2J7rDwwx0EMUUSStSDIHYIRjku9fkveuCOmyvsYfO7HxqMxYmiPWVeGhRZx/L/wlqXTkQPBMgmiS//hkfgYmC7YKo9rrTqM/0JgtNNphpOIf315zpOu9u35rghJM21Oabjn2Ul0ZNuxdVm0aB/lPdGlD5PpGpAuftLf4hpmQ2LcoUriNtLVDQ6fu/0wTl/9NxVPRiM32P4G96qT6Vb+SE6upURn9IPhPYf0XGQplP7w+4auWv9AyO3xbeWFBbqEWoFpUZvHcFdBwdgDFs4wyhjuuDFBZzOZwODF7nQhPYceqgmcjRDSYi9AwVdjl/amiB401skujR6C/d580SrE4HLjSVOX9pyMQIYa/XuAAWRb3bYSd3/ZOwawCVJkvCLGrv3uN7/X9vWw+3Ytt1j27atejW27Vnbtm17/9iumjnfvc6vMzLiD2T2q67KrOiszSs+yWYxiYr5lFySDizueTpDmElmbrjzs2yWlLzkTQVauLwFS51QLC1BaS2VuKCBJ56gzBCmUIInIcU/+LMo61CPuuWf/OZxD/7Z/xfgz9CMo/vLiRvmfg/6ryFPlkX/3b/3Tu88Re1TfGuqAtcFt/LUPPA0nIrTxvJ0CU6/oUCO43J4hlpnaGv5WOtMr2vwLJyJs/IJCaF1lgyTue+9v0PjcXb8L38OzlGKLM/Fub4ofx6I8yKeL5Xz9ZQwc50KvCAjvDA2f5E3i/JiXISLI16CC3BhxEtxKS4JeZk0L7upwBGLsZdDr4hXiH2F9hB0tt55JfSKeJXYV91U4LOEfbVbzuE1sfK1ufdl8Tqci+vSvB7Xeww34FrcEPFG3IhrPAf3atwU8WbPD7qpQOhmFDRvUa0Wb8UtuDXkbRLfdlOB9xLx7arVYjZuR3Y+c2J0LnKQGzLPm0eMnpOWF/IOKd+RdOgzY1mUZTldWLC84iqfZgVU8LgqxiFX0sNqWVmiymlWQRUXVUUlVI1YDdVQMWT1uKs1dDXFmgLWTLMWajmwdu57WawjVp0066Kus+pJt17E+qiP2iEboAYaRGyIhqgespGu+9hY8MZpNkEThzfN/S6LzcRqlmZzNHdWC1loEbElWqJpyFa6/GFrAVqn2QZtHNBWz8xmO7Hapdke7Z3VQTodInZER7QNmZbXdMRO6IRWITujLDpH7IIuaBSyazxY3VAOXSN2R3d0C9lDY9YjGTNJe8YD3gu90DNkb4l7J5+H2H3QJ3XUD1L2laSv1qEyP7DwnSDYLzfF/uiH/p04IPe1X40DMYCDMJCDMQiDq3NIrnEohmBoD/pi+zAdXfERPtzyjCMMww0jbCxHWl4WRxlGGkcbRhnHGESMsZocazIyzjDWMM56cLzJ0HiTJbEnGCZY6u4RHt5ERYyJ5gHqnBe7mWTJUTyMkx0wWYArXXglpxgmGacaphinGURMk7vp7m6GYbphhtzNdHcz7cTXwiy3MitxE4/DbNPtkoBzDLMNc6Q2V2pSnGvSy0DmaaFSAzTfMM8wX5AFGcZCwwLjIsNC42KDiMVWjks8iqWGJYalwi4zLDNfxoqDCA2hpbZ5v5nvAeUnAcWAKOn3lX/jckNkWG4RVzh0haAX+ghcyJXeXmn+lRyP1ypLfscRFuBqwyrDahvCNQ5c40BLRnbtceSUHK4zrDWss8Fc78j1Qo53k3rnBsu7nBsNGwwbbTw3WV42Nxs2GTbbKG5x/Ba7PRgcw7da3rXcZthq2GbjuN3l2yUfnoS4IzG883gE/bnLsNOwSwZ3G4TYraD3uOoehTLd/DMYzL0Wf73uS3IR9htU9lmaB3whlQcNBwwH1T6k3Rh42LDXcNh684jhkOGIBEcNR82Pw2Nu/pgG87XY/J0GFUff5WjcJfTdhruFLsp7HH2P0M+Zhy9f9zrnXoUH/8zA+7x9nxDjA7c33Hi/4X7bzQdc8IAEj5mQEvPB2ONDBhX3+LAHjofl8RF1pBgfNTxieFRtKT3m8fJxg/Qet3w+YZqb8EmH4ElBnjI85RA+bXjC8LQgz7gr9YzPGkQ/axE9cDxnf3f+e945z4uT5WfAgnzB8sAXDS8YXrSxfMnFL6mDRR1flC97+2XBT471XzEnTuarBpGvyq0PJV4TJJWRvO7d8sjeMIh+wyK+6ZA3BdljjknxrQTztsV233GOe3zXIPpdab1nEO5tUe8bVN6zkB+4pQ9kaYsranT5oTnxnPEjg+iPBPrYQR8LtMZleucnTsg7PzWI/lSgzxz0mUD3JaDPk9PZFwbRX6hvXyZ6XxlEfyW9r50l9/zGIPobsb51U9/a352kvzN4sYjfu+x7+7sz9Q8GL5L96LIfJfss0/kUf0oM/Kx8J/7ibPxiaf5q+NXHi8MD/GwYHkQcEUDlJ7kfGcSWRwW54OjAlUYHaY4JMCZwpbHa7pPjnI9x4o8PMN75nODGMEHGJgZQGRuEnBRgVIBJ4k0OoDJSvClBfKqequkqp7khTJOh6QGmuyHO0G72nOl8zBR/VoBZzudsd4DZMjYngMoMGZsbYGqAueLNC6AyRbz5coD5QXLBccS4IOnTQifE56IAohdJb3EAlQXSWxLEn9jSAKKXirXMTS0L/u5kGAYIg/h0mO/SfEnnByUkVsUo8Gvi5S5YrthXBFiRrGJFQZkSVTI7Jg61E5fQqb+7gtaVc3yoJNfNfrJU1wvlXcnCvo/qeOoxC6tZFHoe/Y3xU6f/T0NqyRAKlSkxILDBFmcGLD7b/il/wv5lszoEu/M1Yfn9dcc72StePVR6shJXny7W4ezO/ddlh9Ed2fUbbz380SNOzjq5YL3Sl73jZJKBGiJI7fccthKXZGVmUhf+/eZ6rdxp7pV/vzDheXhfFyxQSHORgoM9rehKBl7VYAGvKrCgVzks5NWNLOw2T2cRr07W4Jjf9NFSTgsWh6r7jCW8PmIs5n2Q9KTJmTyMkkneUgNXgucvlWrp8aCUJg4uRKk7fp00vXrQqHvO8tRh/9zvWNH9tuLPLj8vJ0wd83bGZFZscvnZpe5YuMD/3s/28UQpJCm1Rw5HKKUSy58//HdDFEb0FFQJr/n9701PP72jhzvq/nG23yk83vCUU/OJTQspeOwtxPHwfRbAMr7Vu+C+eT2KKV80GdJkDwhNn1BCydASpQUp8XcQBHdM+Xhn+O09W24PWUpCDV+n39j7CijHkWzLtJjBdmZld9XMedIyD/NMV58dWGY6uLxbpxc/MzMzk+38zMz/92dmZmZmprjvhRQRSrnsysqpoapstxxyKGRH3HfjvqcAbvnsH9/sTqh+6bd+C/41X7HjcVAovs9ky351yMzySSkVVOk/j/wdz7Wh4mIzbv+1QcV8mKmAi+2Oyk0/OUmROh1tegV+9SbcYPUk9SbY9MEOoFbotkYCk79RAEkx6DvVA931Ckt6cJEPJ2wBe/gHslI3P+WGA8cN/jQFu28OFeyi42FHXSzoSwR9qaAvA/pyyhh9BY4KfdkEfeXYahVWnUDrpKh1t9UKPk85Ff+rz3WrFftarUaTUva/MFGfctVqOVVWqzWUDpMs2ZMuuPFwKNB4QIjoVsxg2w/83vvIvprwRjXdK0dW6YkVd3jEf1fjjli4Y2plnmtlKN5Ymaf+22Nl7Lt4lpV581YG5suoJE//NUBxChSXDoprqicorjc9Tt4nijV8NZgLHArKAeb8CDDXAuY/DxjM/rFg/sv3A+bLVFoJlVYDlVb3SqWV08hgE6uRK/Xfnkau0ciV1cj1nkauc1SWTaV1fl2mWIkpCoHmINDLxpdr4zPMCczV+s83lssGuaP8EgBRKRMAVpseJ68HgDkOuQbg8WxaCQB/MAzDt4x5qarFPTEqsJgIFlPBYiZYzIHFgnLGYkk5YzGfYLEaOrts0sOhP+fzVFCpSFK3YXk3Oi3QXZZUUqHaUKGfC+wb1EpKDTclDiXFODTclMXAo81BHm0nPNq+9vFoTtXAow6mS2BapEH1QEhVg1lDW6/y0ODQ6MUejufWTw1fXfXpr/zLL3zqO/2v10l9Kt93qZROfVCfBlRRqF6RepXqVc/rVLE6qyo+5oJKiFUqrZMXkK6MSIrc0xqfFLqnNVopcE6/0mTt20evfbJWN/Z9y1qxl9cpWSuzhNQrUq96v7zt2YVzwV+Djql2cVtfO/ivXw1/fvhqrYbnifuhGg6oplC9IqqFpY3hu6r4AGlXkMZUuZCrrh231y+i3zd6KKL3sfbrloiesrYxhf1ium9J/T0YCn9Q2vtDEtbe6auf9v4f/O8v7dfeUiu/oLX3S9ef/oqffPP1bzym3v6tdzn7wW/7/Z9Wb1XiH6iz6iOFF3GXfkbhcKv+ulJU+Pf+/BN/6/c+5GcVZMqXMkhe/EsCmSHRlajL0ibzMjfC7LpUuHdJhc/obqpGp+Ibn9xpuLe3Nx+u+iZXk5f6rzbvLFXeNwekibfdTXgfvaa427+ggOgpsphDed+aTPApl3OY71cmE/zNNSygD7WRfitOWhmCDUzH3+pf+8tsBr2/owa2o/4mnZMpBt9y7vaee/uKWuua5fw1jXtNSyvrmvX8NUv3mhAV1gfWdYFTWYPNe1aOSgGDGutEu1GGuLSraoNJ7NP6ubqb4wkx/HLCEi997XFzrujYuGSELrKZdJHNA+4iXebzDPN5hvlw073MpztLw3zePPNNI/cVefPk0zez0f2+tVmmIfV3qPd0Da3e05f2S5dlVrMss3bN7/RqLNPOsYxjkvW89dfu7RvHalfz17TuNUtaW9eczl+zmmMZm0O8WZaprRyNMhiXBMEyqwMsc33+5G9qsnn19CcPi5HKNcnKmGRlTLKiar9JVuJZGpOs5k1yNiR4XaTp3dWzFLbMhTsLqmapwJYhhbBA15g1dVqoIlT50tmBxSyx1dJySEhdLrtWSKjSf0vFF2OiRQJS4IBMn5Mz7X458+CJxv0Ns5TTHiFsHjDlXF3YgHK8q1LO1UMBRt98UzqGAqLXwlBAIqGA9PhQgMtz86GA12KdM6tsupZKCQN0hrC6FfgWJLbeQ2IrWrsktu5W7rM7ZWXU7qzkCkl/t73naEPfHqOXVi6NrWdp7NS16rMr0dj2EIkd1k3372mt6NS65mz+mvX966ZW2aHLsSCx9WESu84gjhkM+KzLgwGfNx0M+I6ZklrJ2yRvKbzmsRLqfKG+QKgvZOoTzvvrDudRlwr1ZUJ9uVBfAeorqWDqq6hg6ism1FcPwus/8VaRMKBGhFej5Ixw0r0Kr8bliMZwRGM4oqFmP0c04IjG4ohmD0c0uXzTO1p43VFnHGGDX/W0e9Y2g0bLtTDrT3RjcQ8xJlI7kVgJFFBxAdBIqjvgMtB1VHhXjaWRnBwLnKQTnd4rDEsqRBiWOjZVcPnoe1NZ7TvDIQHPsW+NAxRasydgtbQDVjU1tKRG/y2h6Sowb62465Wl7dYuKUbXQ4rBnLZbXVnR2VkmxKh+FzNSwrXXOrwTzRcX2VkuFRdxcaUUdwyFtjYXXiou5OIKKQ71tjd/MLDrLFVqhac5MsEhGRzOCofqkvr7D2BMIc5QiDMS4vQUcSoWvMiU+ktF/R3LhH+7i4UQEyHEVAgxE0LMhRALIcQShFhRyYRYU8mEWE4IsdGMAfbQ6q/Qkq9fajtkXhgTmZ1IrQRYoOYCqKL6f/UVlwGDlj22xtJIThpWcNOpm3ZZYAV+gDitqaZKsUBFqXzbWsy/RovkOGRodtahOBQU4yCuYTUI0PqgAF1PBOj6tVmA5oQgWrs3xLYe1eIa7MjOdaP4yWbHNak/l2NWymxXtNpHfGCm1Sw7nh3Djjdcoz+/GjuezrLj+rDvaivD6TMF9buYUTJquM7O7osd1wM7prq4G1be830C09Kt0+I0O5a6uGBeex5mR02Lmg/nfeMah5oqkGR1BEmuhCQ/BVIxPZ4gn3btBHlZMbaiGNtBMbb3qhhb16hbY9StMeqW2v1G3cKoW8uo2z1G3aKeW1sxtvkloj+xif6g9psn+pM5oj+ZEL2bTt30VO5pokftVZB7l4m+olz4vhC+jy2+r6mdJTFb8rUSB1zRkgN4taaztU1np6T+Dos9W6icusLvlKNMdOow3KHrIr4uwnUO6R26LuTrQlwHe3bzHeLBzuxJjfUTaLXHiTilletErLrTnDJRbLoyr70Se2/gvqtVpubOiporVapNlocr9zBZatU4z5lClvesKN8lV4oy48Xew3tSlODNRHgzFd7MhDdz4c1CeLMU3qzAmzVVzJsNVcyb1YQ328EnLGHIjpwE7xzWlmCZhguAeFeCb5STDd41Y2kkJw3ruOlMp/fKyRouKzy+WrFMTZn+tkIvS9aROORU4lBQgkNJKQ4NxTgIp9SDqlw+VJVOWJPjvNQqA5Md0c7mBWZ/Q8KPV9CS8yJnBZHTrSBuHL44dF3E10V83T2Lqi4cxNQ03/Hkq6Tdh3c3FATO9jAwpKTDwGfdOqeCWtGFO2JFe801qcVsTu3ValQzcKavv6pcrai9T7kq1DuvU90o6BKHJdUg4vp41foMHQz9y9NgKDZ4gZJ8/K9PY6KfFvqRGgQXM2//deHt/7TnORAOT7uOx8//Yubx87+4/Oi5q2jhUghVms/6QeNeDL/z9sf1eIit9eZ/eCCPhnMZT6MOuTva2NdN/91PmnHFvU8eqZdNNDU/0uhrg0VI282FOrXpG5BwDDreXhqT3HvOJR4uUXKl3fYxRaRe9iUxqb9dHzuXxLgk3vTLLfxbUi/7kohNrI+cSyJcwv6jMkndEL/32AXgHkm0P9aPMhX4O/zcdqPgUssDTxf2U43xn/bF+WMV5xep8dchNSIF1+ie4Uqv3o8tSxnBXDKccCjd55XlVcZlJaZjT9AZJvfbqSfSqXeNa5Ndi7C3A3k9fhiQr0m9ZvC7tApuqbHN2KMlgNYwnGsCgOIDRuONRrM81gK80QJWx1qAJxbgsQWsJxbgaQvQz8HEAmrYQ0wNDKGef+4lD7yON4RaDOGd/XDBi+n5aiqK6aA9AbbPSA7AtppoQ6ffNl2+R6HZCAXICSGdYCRm0LMPM0lwUGbijwMW02Fzlwhrq7uG4fN5Uhf9rz7RhuFbWVQyoeB/9VgiPlGmsBi/niLILjOpdIsJHVx8r+oroIjUIWH7WAz2EZhfiH/2T7ppirKq4GYfkseGklK4I++CN9zhHiFkFzG7UI2ZU4I2wI/jWy/QVAsdhZdVo/MfWCw8RUZ6v7f09lTyKt7CfiFjO/iy/QCWs2h+A3kMkz+5IYvVe/8CnSJn5WL+g947AOaDYvCI8xc47Y/p39BpldqzRgqUAHCkVt2TndWxKL15+zx5h1/280HsKar1ePlHTBrR5TS3O8/IjN4fv/J/nwDLd4Hlj9fvGGLAViBICwW1EXCmLJdxllAEEANlFoyZ6d8UP4Qdy4y7e9KVig9VbQ8V61sV61sVm1/0mVStT+q9b6rWR1XmY9Xi8zH9GzqtUvkw7j28PO49wXnQQPK/+lgDPzFZgOUUL6Z/LFjTJXKzrsT2ihV5wziylArscMQ9G5ZgjanUmyfGvJo5JRTzVuXYt1IrzEh2NY6B0BgIZS3U51Tjzf/vGwpkXH2LK/slLoOf5I5CxYCkndxzer8+AtXzLTd9hstRO3I/yvTd1LWaz3JSeRrslAhGC6l9ghpckGIV71Sb0GcBaKCyiEMI8SsXaEBIFwngYiG2mAEHOosBuT6TtnVUo2lzSijVpOY2P+giwwtDrqVtU922BZpVOvWMcm5W4u9AIiQrNMeIWwettWoQRigPIe4R/eX3Lb+/Y73//2Qhvlsa5CRU6JZMpCVTShg5sUFODOTEFrdRQyUeXVLFUFlpqLSu37SjFaBCyw+n+qJrcbPpjfqYWlI3YMicasjoG9GpQKYxkGlI5VlTqyGjbk9rdt8AmQyZmJuimBel9XixWYkdedLUvjR1IE0cookjCrmJYwqZUxKHU9JZTkmFU1KXU1KLU9JZTknBKanhlJRSh1PSCaekhlOYO4IJYQCVfB6q5n/1kcZdbGVBn4iX4ZTY4RRpEaYTY1o1R3oSGTXH1bDHvmpKXftKLfuqc4FZik2WqexCvTU0Wh8ijGEWMszSjTKHEDAL9Za6NkH5JN+ipZpaIaslroGEcp+7IwzEt5veqg+pQn8u3ISLze69FjelNje1AzcF6v7UCjIXpnv/jEDJrFTzkiYPT+DmH+7CsPUcM8o19BaZ21vkuo/InEYtIL2E4UuuzmpPoxZUuY1aWY1aoHo8oafSZqaKqisyU3WZmSru0/K79WnVpqtm+jT0YqWwEseeVsiJd5eBUmlmKvZ0ZgVVujNboxCrM1uPzFSNzLQGYIqBmUoAZtqZ/Yi3CA/owa/QlfvX+xOX9VV35W4OOzz5C+fCcSe3FfbCMYH2pVDvIwjHwZbUCEc5voyqn1D2gnr8C7HuvskbbTckAS9Hkw/3+Yodf/qZC70DU2g+EE57XxRH3lgIefwOm0HhW6iESn0iUrLh9PPM6DFHqEKhKnNQ4tSKVr1HFCRvE8mO2TA7xxZJbPHW3eQk0IY/DhFII2DCDqJQurKZ//Gxqf5M+gYsyJmrDy0rQohpT9sUlLltk4ldFZO2KQhfAMV/xdjLlDvLcHmNO/i26GLGJjMFVFuqN5RNm6y2myyzmyyba7LaKkQlMmmyFBVS41tTqc6h45K2q1XD5aA32eQRNHuZ2Lz9xIYejKL/1afgN8VuDXlcRM9k7RObYIhDSoHx+BoE2NA5IFCivxvSd/oCLLPgk+Aemaoq37+SPP9BMxSfBG8Jmy8pRqaVZHpT7a7hHAQAYlnLLeU77kBU7aNXQpdEBdKbxW6j2ke9VbWFPqfiTgXp98VHmw3efqao+N0Why/kxL/YbVHV8oEIB9AQiEV3WJqG9HM6LZcaeKCNpprPCXUIIFHr6RtQTkMAB1nEu8wiXs62ITr5fN8wWF+CvjouMEQD4j3RgJhyRAPy+WhAjmiADw+LVYz2+Eu43RwRyynDwecwGawahxKyuhpjZS7llZfMyh48LjGkxvAgVeR83oDBAJkvdMptXCbsl2JYNg/2Khq/wblGF6L06/tyGokGhiUYPhXonQ0YviEYjm0Mn8uSq48MGH5UMOw7GL5JOTLdcjGcawwHdItubhEjA/nu6FQd6Az/W9EN4Pecmh09gv+t6VFB7XJAbLsHrYFGqw6N6NCWj4OvsetGuDRovyj0crXNhMDLY2w6iv0vC3uTM+V+3SeAWkoJQy0DwbCu2qeYMz4PeaQoRgMucwGXgpoyylhc5SAZPdkrpZAKGFuMQ0ARDgrsOPjkudNmjdmVVEwBB73Ek9O5ufpmj/2V1Lj213Rl7lA5lVQpLDrdd6NhW5t87VbBVmN2b1fQGMw2M5jlfqAxmK2RqG3MZnOYzVzMBnOYDSaYTWYwm2jMpoLZkipqBLMNMNtYmK2B2fpeMJtqzLqcqhGso7IawdPJnIDu54VBwuGw9i0Ft57gViKiAl8S+N6ajzAw6qcoAZx14IEdPX/q3SmQ7rox/uDvjz/ADiiWTlWcQZgi0yh+p0WcPoU4pOThUBqo5BZUeCBCvtHhqMJBe6OfSvTtHlA31LqgbrvGATVkfKaw6IC61aDOTb6lAnULfDKoqUJirQHcWgA+HQCMDGcavTkSS4PeG6IIzgf0PiLoTW30PiqMe3NA7605xn2KUPdT51VDQk+lp2zxA6kFem+og0JsCxw/AvQ+CgVxk5bA9C1B73pA72oPehONXg1b4ViNVw3pWcb9dc8LlGK+u0/yptrf2+eSoCkGMfGX3ecJVrsntkuS7HNJ8BEF216dEgmOmgx1OMTcTnyWYLtx/BgHLsFd/RR8emfYcHc8r50T42v00U0tewPcYEfRTW5n7Z88TSuoWf+kXwyB88QEzn8o8HiNPJCDE5Ra9wHoIKSA6SDCERrNuCRPk0aIjUvCT1oS7ZKY6k/+c7kwRsKxy2S+RUB0boskXSoBLrdF0m2fqBYxlZkwnhnfY/hr12emBSS2lWwucP+Z5w3ybJ9jYalFKzn/GtDYDh8llKiS1Olct1U+adTEbtRUGhVYMTmyrZQhzRhLu+WDIPVcQWrcFgrhgoSaSSOXSUMIUjw3DBWThuSJII3RVfikDhJNCCE7AyGKlA23T3aUjjV3hw24z0T7/39KdltkyJhqlOFfMnJLU2kLD2HMoTbmTw1i0fyBDLfb/+jvsKl6xlRd3U+O7sdQD1b66SGlb7CEZ3hG96fQ/em87k+17mcZlg66Pxfdn4PaIhxyBDJFdqWmI0LTUz4Fabmb+s6hgqh3F4h6wKHn9HxeVwtMQzxuq5EhpHCjEmYZAhukoQVSXNEwTKkg59twAb2HXiegWvASwqFE70KNgKXcbYFNhRRvBwU0AxPPgonuAbQCT4GWIRj1iYGHcIkVHidHbN86ELZkMwn2ePfBYe9emTZ796pVxbtP4dmGlPL3xiEhD4dUQnN2yzKAUuA334PfjHIXv3mXmbwGjGCHKUaU8iisdoHE6nOFkuwuKMkAgsxCSUlZVwlKchRQIQMkk0qYlbMc0eMGZYCrO04waCtX9xkgElElEMl3VLF8plogUuy2QL6CSLYDxmYgklmxBI0Ud/pYDKTEGik79FmZIMXRtbf2PEgBliaVysAJGTjhIGRD9/FYspPHbPzx/gcaQByFQr+Rwg8iQqGm3xDAE08MLGyPFLCaJkPftNFR8sjBVYEvAFyVe3BVUOniquyK3LrP+CGaK3FCdQpBxV0QVAAghYOgYuCZlArNMzkVDnwoo2IklNQO/G3wAUe+woFNqimbtAoqBVUKKsWO2lmoFBzPBirCiQcfASORxshv+QHvH3mEmFyQuPa9b8lJT37NMFU4GNf2I/P2v93sZYCjLfq8HbrfC7uaRaH5Iomlvl86O9RBtIIWZ0PTPK/3J5mt3Xp//UveSW8E/J6etS355HMlG971p1LeUNtr+YOTR3WBzVd0nmxQSqFTTBdiL0dchycQIflK7jbfjd3X0CK65r2X/p2/f+uXf+o5L3hs03moefQ7at+hn0yVk/FTKWK4H4ndnTnoxNsgj/uX/cRj2C9N4MRbaGLHYH1v6IIfeKeFXMAbLqMMq55RL7fRLtDHF3CZ0OaflGXS4j7v6BmolycPXNXVnSeBT2EK5RUF8gQ1lBGYkfhT+ydGnTvj/HHzrhzm8neV0E4N2mmoZtppqWZ1UxNr4xc5v7BbTgburYyu/geCRij6fq2V9dO6Uy2r/wUn+1P1qYKC1adfdGupzbXTecQC5FMuzaB4baN4PUExxp+RxVZrPDx3nJnI9jr+gZnshKkCV5wt1XIB1FD7v/pmnC3V4l07mQ01pvNJOnPTFhGuLrqQK7gyMQBsf0sN1TJYtlHcvaRUvn8rM6bU4YQyHGrKcWgowaGlNcVqnpSvbGT5stKjhkD70NAYr92CSDYsorccANB94R2Kaa1ObPpKaG1N1QZUCQlS46J+zVdNMvx/SmklEwRQ4xv2HU5oxSlO1CpRD4lGMktCd6AnOKh8ONTDyO0Wh5aWIM4lzFdmZqAhlsroujMclCF2p1RRqToexfJ6BSzyL/ih6Kl6neVSi6jDruEK7FqpbDr7gh0WmCsnQz7LT+7OzJDPM0YJNaoBrB7jgieQHGyJUzpDr9xluk1uSJssuE1u3K1NoPQqPCf1yWt+CeNUd905ld1ab4or0cN1TjWdc7txYZv+fGibczSeLga1f7ikE6uk/++U9ABbGUOTFwvZDw29327kgg35X7Cb2x8tMI0VsK/6+OIfcEcUkP/PkIWCL9iSeFhP9JBw+Bk81HGx3dFiU+fsTME+3xSfqTR+Vv4tMXN2rF6+5m5PvfZzNmKZofXA5y87g6bPzQMfzdIHlj7RDL6HpZvphC1LEiwNmS5tMl0pMh1G7WdmsZBD64NQbPMh1YamOtRzxcVZS4esLy0dAnJxlw6ZpBM3jZtI9/3oY3RyU6/70oAVu7V68c7eDXhAgU14YE015f9N3Jc6l6VGGir/MSoWVl+hCOu7f1yv+jnFAPlFX09AVX9yd2pAdWpRdXvRnTnEvWKaLm/yAlkVD97DAQFks6xJQxEOCYU4VFZM9qK7QWs6BTK171YyPVhUM/W48LwN1uZ0enRGCewNRrgRXtkOfJKLeQa0pHzCAjc4HL7mwUiMx5wKOueBVS6f5MInuphiyie5Kql2SoINUc7DyzWf5MMj8Zz5JKb2Mp+0hk8KlSgMn7SGT7Sk1nyiHzBoPtGemZ4gVIJWSk0rvxHnsOGpPUODaTvztGX72rIDbdmhqJz9SxmdO/PTYdkHpqiznmtmzbqdmPXysvBaiRO0cmCB9Y8s1cNDiZjjy2FloPIqKwORNzH2mouzJo6fXp44ntDpZOK4m06dNG7iGLtEmFo29tPB2Fsx9nbo9D0q2NiLzstlonlL1T/uKv6Zmi88y9hXbOyF8qsmxu5NunvXOqHYqMIyJQnVgFaOA8JtZhp7SzEOKUU41A4/FEYDjCuXUEvy/GRnG3rNPoMhbs8ibvWtXau29C81zixsnlghNhPSSn2EbnC0eFSX0+97YMpzDqa5Fu+JxetiSpX3cEknVkn/3y0JIVtaUju1+KWx+FIlyiHRIrNOaKvWFq+fzWjpoNWFuzyFtvjvHSw+GeK8YvX3ZvF/+wqO1/451kdafDV4LNW9eywzRttwcdY87NWledgQeJN52G46M+lDRruaN1qFRirZaEugpaYKRlv/Y9QTjLa5ZLRrNtpy1mjne2gY7RkbbY3J4Ck1otEb1ug4VJTj0A7LW8Y45BTh0Fh2ha55pbvmYpwfTq3JcilgLhEWk6GxomMw6dIx6XLag2dsZCV50x681POiaE3lxApvYDQ8rbh9GX4gw3Mq1UWuPZdiz7qYamrPpSrJc0piey5tey4Hey7FIzhgz5VKVLP27HoEurPW9uzObpRu3czfhVn/0mIRvY0Tit8/gnihQ/GxG4oPdSi+jzSaJTg/HSquSkJkdcE5h9hqH4/XkJw0l+m5VBRK5NBDxfC8J5PeWvOgdKjQw8HTcSs9OUr/1q/wfI9XmB0Cob0FL8+ah9X5ttE7TyXOXWfE2XVjQek4Eig1I6wjPSCiT/Vv4xobErk1UYSCm904UChCjFXXVzoMFeqzsQySk5cjIPm2K0ztRVSwmgXycor5nUx2CMkjHzWoq84d46f7CbcGyQQcv+NDv1IFHB9/Gtj2T0IdbMxffGAX7O8YaNXEB//gybd5rhqogOJ/NIwWrCJ9nkJxadL4x83NpiDYl3ma6PL/Sz/hTz4vOnnX335sdzE/+AXHr2BI449Ca9aF+lJ9Rh6eaSOqqSPIelBFCNN8X+XuhBTi8fP7f/Pb/IMn36rG8LuXPvFPf/u9//Ub/ulju81Lv+yn10/5xp/9dczFQPDSeTZndpHRYetH+Oo/+Nc//XEf8TU/86R6T9lOr0ChCqPspe/wFd+0fdnn/7gqePPS/8mrTaiSd80v4KduKVJfBiNMdPxQ9cSh7olzyjrPzNmAmc3MIQruOoco1k/NCjI9YvMVu51+mhHLvDA9tAfP0B73uhMz/xw1FpFMrNhRwiQnUWbW79sdDk/bQG09TWZKZwTweshlxekzhi3IeLvj3M9D4vZM7jtWbhD/Bo+vRP53HufOhtyZDLjxUONWKfoO/0DPwEGOYfJjtjGthwipNXE8UIbJP1Pcq4V5nPVDcSKuEkLWMntR4OwM2eoDBjRDu4/wPj4M7rvu/lNocMcTcJcUanDHAu5QgzsewM3zk0sL3PE8uKspuONZcMcWuGMqbXCXB8CdqC/jgjvW4K4wwWdcPsGfrpkQWlNIymHSvH+XLYBUeTte+abASyFeL9NNjQI46pFrEbwqYwL6jIXJWK0UUI7Al67aElWbcTO+ZtQwVcMvMDXHU6o8ytk5+HA1o87THlgmtg1yaLVtp3ttuxxtu+KRNuVgf/qJYoWvPNp2Odj2TO47Jre27Wq07ZJzV0PuSmybI0pWKfoO2rYr5BDbLqma2HYG287Ytn3KjW0XsO1iGIYZRxwIUZYdHt913W+/hVYwkAwBxNzYdzF2XqrzkY+73OrD8gGEOYJUhQXCfB6E5RSE+SwIcwuEORU2CIvDfVjumnmuzbyEj2xGUU+GTpNnmXl1TI9W8ihoa3JsI4DWZq5rlDLpzvqE5aIemCNsiVNODXqHa7C4Sg16dg16R9YgVVTAbGVESwyzLZXZ6omwYrZw1EpttvERXXIx2yUXlM91yTO575jc2myLSZdcDLkL3SUDQHu75MLukouJ2SYw22TSJU+n7H5RnKAb9rhLDnSXjE7Yc4x3xikS3Rkdtt/5yQI4YlkXbb/RpGsuyNemGwnYfG2z0YC4kkrXZssjO45yFnGlhbjy3mw2Vl/Gtdly7JqLzh/33QsnPa0zJb4YLDvcPz9CQ5pSyvEabTYfbNYHXmSDPphroce3zFZddbjq2qtUXWVXXXVk1VFhqoJa/EZUHAWUKQgPPW46DjTU/Vl7UE0XTo8bO+bFPS7aejTdwulx3dx37NyTHrfg3NMet0BlWKXwHZwet9ADfaY9rjVcEAxsTDeH6eY4/9BZfJ1zFn9/e9hZRK7jnUXkPt5ZRO5ZZxHnr99Z/IqFB0dxnKFusGAg/l/7BceK6eTDEQy/2RvJ/j9k9Nh4Yw70npC3YyGPt4gDkT+Q8OZNbutltW7/8ncMb//grU8e3+zIynbyots60PqRnzhe8Ia/5lxwwQuceA/d3Yfu7uuOuwsOOOzuItfx7i5yH+vuIve8u4vzrrv70N196O4+dHcPi4rClQnHurvIfby7i9yuuzsvKh66uw/d3YfurusPHHZ3ket4dxe5j3Z3kXvW3cX563d3/4K9/wG066rqxPF7/p97z/1z3p+8vOS9JOucpG3apm2AWlLp0FwMJbSAnfniTGdGnQ5UBl+itFgcZqaQAAUColYoUirCezcFSkGtCCRYlCAodUStiloVpSJoVZSqiBWQ/tZnrX3OPue885KX/gGdH4WXe84+++/aa6+19tprr/VGx8XCNVdFWm+V7LUete8xl0vqLjXvN49JYbOT22Pu78k8WZotxiE1m2CuxsMR/MJF7lXcrY8EPoyAhodioSRX1WK27rUxFmAC9IjjF6rZ3ih96xvV4y8qNS9Tq8L2nTpGF8V4OVnYvum2sH2aWFbYeI/r76itbzwrT+PSL/4uX4D5zrFML3BkG9QNgHVvn220j/P2cZORzKcv03N9WOZsf6Uay1y2AAoCGr3ZxugZSZ6U7Nd8wRDd59NmQ3E3K7Yv6BJZANU4/KIJm+ykX5OqNyAa1AYhy6XvBNqwYmIWvOtSZM0rDm03H80302ZaYHe2c7w0EorKwIQDmrs120wzmSsjcfWa8gYT7XMzrrkPsLjJW8k3LWcbycXKcCnIPNqEfP5yzrKkrBQENaRNwuHw5OGpi6d5PMV42lgXW8FWrJt6c/ufUfipYiEvuNVmtSDXphwsrjEB8C455YKKrWnEA77bP9RX05J1O+OzDsB0/9s12NyT8uYlkTrNCxiHtbo5bb99obm7OICGpX53MbKIZv3iZSP7mNrHKZu3HoYXNtcUKphCrESDn7HFz1ny5FNClcQNgrRd+dCrfMjnaAoTsYFG+JmlFFirnK1sesdemkPSg9ezRw7FWvMlPsFxNCQKz9H056CEzIa2DIzF7Ydp2pCNaDZLaQ5xoiLtKpgJ1qcwmHxOOAZCl9E0TS/TTPoZGd3GyWQZrXB1kxXk2q3l55X6zWr5vfkmxbt52sSND5kPoNwsnlCO0RU6xTleXOjbStU0p7j5CGQOqxoi54a1PNUBR/e0u1ROmL26FuVzz3IBNjl0YD5lraFEkeQ1uIJ3R+ZaruDKNusi90LlPLpi3L2nXDM/FAWRWJT6zNm2oy5WHzkHcneHPOtaWtuRjXEFcGEWN+IxxMcmtRAQjFNGQ9SzjITMihpU19qwutZGBU+J6lqW6rVbeJlQgQ9KDmhZOm1aFi6PP8hwwnViYQJTCi9osPZ9h/z3y5dOcDfNygeovlTHkKcX71Yvqhny1cKVaisNw6RAvgwqX0DO1Y8HzZqnnTTDT7IKNwjWGz7B1xDM036aMRxjRtF4Vh3Bb4DTvUI/NMcCy5j5FzoNBzPqVNgdHxb/i7DxTF82wTRbl7wGQeIl6pqMMfo4IYcfAB5j91f1Aowq7+usq0pkXG+VJ9Zb5Yl1V0knr7HHpXMWQqp1IjzNMvrdSLCwWcYbFS8T6rQ0vhGkYqM8RjS3JFJZgx+6cLyoS40X48cdh2W4jnHu4ot9ZWW7Zywmg6N5aA50sgh55iHH4TMhv9km7J3kXXAYZIhNdj74KJLSMilZYQk45QqQHbEQqIcUVKkVeOTDPUlRgCJ87sjnpKhuvviKb/PJZczP1UgxY+NFMeX+jZ8EORGvku8Qs8WwZrb4Qs7yj+/kJzz84bvwsJD8lOOJiftLoUcXclO/uuwOOkUr+HDYy1xp4cPvexm3kL4STULcM22MBB/Mdef7n4yVJpUCqJa6fptS1ztF5lYLSfx3yLgreqJ335P1Zlo63rW008VJwkXuvU/m6fslN3Beqh2GPu5szpm5ZSu5h3b8Rjv+nVnQaCeAtME1li5JXQr+wwDj506LHTqnmWvcn7fXuEtYCGBv9DIPsKCwCQ1v6hVSIvP6wjT0/nfeqYOkvatuo6vKdQASkBwVKkLQVXCH8SKzGeNlAZWqYTVQRw2lOYfPOSq+BMhLblCGavqx2HCVoEzmPc8e/8urBwfHH/2FW52l3L2IE2ShOz94jDMT8j55UuhDbYSAFQ2tymEyjN6AGVuiWMWJWH93u36hmykwbtf6MO7zf3wSjBvf8y9CnNA2BuZZKaGszkd1+7JA7nW+7n1HqrUFUy9Xpuqo1MW1WG4PhO5g9vZQ5xiOk0rL6pBCK1QsYCFfg3lZrSeOCnDvrksizzNcJ/PKaAr7wWailSzyIK/zhHOesQ7T4/QcWTCT7/VDLINAzoY9M5+mX24Dr9w7M6+OV5gX7525P3aJ/y5fUNcM8HcE70uMXTA1fwkLZUW9O9ZdL8CJuiWwy/4FYOv+BRbVXXgJ94kr3r+QxUa6dXUH3S1wqBG2tdPquwvikCwpbBTUk1fuy9FfwysS2NjRzBXXfNmg2FR01nY+RT3xMgQY4E/8n0THEDHmGNR8x4xDPl+k/9LDwTrhrX3LgyUQdWAr9RlO6EUeMAdRVX8KB0TeB3klpcvmTgSaWC52kzR6Hha7S90V9VFhknvPNcnLmlx6KgIn9Av1ih844kaCyWe5/nY/wvUHMFRXYI2a6CyDzptKA12FIUHq/52fq63CsLEKc1/XIfgj3I5UeMt+syyZIv1UHvEewG7QYrMQ6p15LjhOFmMNPeUlN3ww9+VWkZ/FSWWL4PPHQ/zRu0a+cbM1R4rlC2YzLt8ksh/6yHcq/GK9XNi60K+sLPQrJWsLV4waqBOhAI/xanGVupLFhjL4FcrA6fnDqhOY8fog9CACHHJf2mVSoi5E3NIFnmdpy+mw11nlrhS8kxf/ocsBgLN5n8mbAumNvOUxT0befSd8vT2FXvUUejV1v2Mhi6SC/WuFJA31iqwqF0bWu7iZyfX3UohSih6yLpamhBDG7wQRLHoT/38L+RSuEjPNSgsCMgCu1jx59KtuOigFuZkqbr4OTh4bv9+Mfe+BBM0Qjw9/CFAKEuTT1LHMo5T1aepYiUYVEnRlGwmKGwOOE6gtVEslmqVcblP3MGSfiRDv5rnnsnMCEYo/KF7QNigZ6nN+Qn548S8imMTIafOo+0xLqmYNqfLqpMo3pMqrkaor6/v+3wZ78yHrvZR3zi+1k7t+9vYUF3+MTr7iWsBrW3yged8B336MeVlw+mxTo4FwpU8RPoe//2+BG+owpsRPcW/IPMXdk4Uhj1TxGxnFrzG4OjmrbUVgnxuXHXxU3P6Majc0k9r1S2wzRgs2Tm+/ogQerVYCJzRqKnkj/Mn+foril2TTMBF4SRbyT3ADnmbgmuQGfFIsjXRH3y984Yon8VwcFHQxKVfnnuJe6Qck4QwkGTgpNmjl8UzRLH58aI9yj0Kk+PyT88L4z4NO4oEiTt+Qe7xk+RU0kalb3droe3nPtHpj8SmWycGU7nv2Ttdfg/m94ciNawmfKjD3p14lKWaf8leeFyCqUqHvOfFkq+9RV5HAAN94dQzwa0iY3RxEDW1UdEfmWW2Up3zX461A2WfPbEti9Jk/feDGV1d7HRfbEpzqGf8l3P6zlwRlGQ7qRU4P2YMD2I15CADSNZulnm441B8c7r/ip09u1rHannyADQlGIbWE+BMnnj3JLJ9CCp4GzsX94CZc3CjEHW3wGcxisZfJ43I3o4HfLnLLDY3Z3ng8gSZ6UZf66KmlIYAphAFDs9HDfoHJxTBj8gs9VonkSO2jLW7E10b8+iVLcnk+l4rZTDbaffP7PuKf7wyP6VbnbWZrfch8ydzqnitvUTbWjqBUrMIXeKfBD7lc+TMGpSjlGhT1Cect7/ixw9XJ9isoit65ZqgE2q0dvNmVDrrf6A4anMeUB0Y+R8F7nalXSo6ye8ip48h9MxLZoYdTb5WMWrjIT0We9NfewV/Tt/44+qSTlXPXMMX8k75FVqjDU+6DSHzIE6gEh+yEWsDcsB7AKIG5cEkGBKjgjzdCbnVbupCHz7D1vri93maEcIJwXoHtEV3r7vj3XlYTzmMjSJ9Wp5mtZ7EQagYb1x/KicmBLLJ6bgqepaZhl/OPgbK7ahoy336z8qNfzI5Xmw+fYugtfMwGnjjBx5auOi/oqGaDFiEpbj/HY1/v7jpW2f5bOnth6+zRugCx1oSdenkEtp6Aeyk0tFBNYbMiDpEdg3djgdInin0XsE83a8oFOH+aRwPN2sFrH1xGMnO5OI8vcmMhVuHBPK5VBZUl8edZ/okuclPuFcprTjzNPlPrpYik5D2OWYs5slMkefQ6NmytDGk0lQINdefFRBxPPoU8pIQCgzkBD+MQ/i5fkL3nuKMCITDAMSs9ZdQokCRYItcQJTOzKMwFV1/HfuCdoteM69ex/4scberkjC+RZQeyJCE10dGHLr1CjtPGh08g8UJp+WOOWSMCnbF8NAPFWuD52Mdt/0MQahhOn//iG5ot2BAaO9tCaMxWrHyzuKIA6lYPnqibxVSk3LQXIcHKF8js8K9pxUhPXQX56jgkwI+G0cI2AUKFZ8TKwIiVei5rsCpuIG3cIDHUg2/aH1gqrf97snPjn8M8McAkY9KDD+J7gRNdaCbThJMeijgNWcyGL5JikRxlHn+RNr33IZz+ADWLE5yYX6bsGY9LKV5OGua24qNMXRYFkos8uK71ULzhALfq7QMegiALq6NEj8UTj0JlKx0JqEL806HZW+ExEEH5S7FkNpuHyyqRS3BSP6B4gv+PqAs3wTOIL9BfWc43TfKYpq8BgLN5immjCdg/D+qCo3uBLGtWAVeVhXogGBCS9LwfMESGqMwQJcYHRF34qQOyy/DbVIbZ6wkSjwp23DPiYUQdfBz/zgOvqDKNyIiHyVeqSB/960f69WN7XYIGtnuC7d4jw3ZPi3lSzGvHdm8d2K4LODpdpI/EX/N6kD4ySK+ewU+N9NHpIH3MdgmK9DOM9DOnifSxuVdlMnrI6JUZvSbyqwftOlyB/POnQn7PIP+tD72i7cgm+VPX8ctTeq/ctXmCIIYN/c7fyW7wS0fQYU+Y/3kifaI/YO9y5jg+7Jr8v/oZ5Cc3vfEVmBdwHM2RLpkcfyg5co9TLuh0nuRITWd3Ok9EYBX18yJvtwMlTWF3zDLUq9EF4F/9mOOrrjnn+NzbX9F2zpGQl74S8N6MBSqrWkdQ1n5+ulIZ3rjzrSgkn8jhkaWv+HGULpJc7nh6FJ3h7AkZCBgRz8GbZzdMv+I4XgFi9i7lmA+d8Vff4C6B84o4ef8b3KoFFQSNzDOyR3qbacqA71febPXIUFxqeeSUyoiT0vfdzB/RtfJbY5NhPjRSMaFI9Qpd1Tg1I0me47iH6r1WyeRuq0sHspWCbP2bIIrHn28TpCDXtM+CIHosrSZf6TpxAap7tjNrM7DycJCOJQB9M2Bkkri6WycCGkcTTOMvhdPsbS+i4LosVFSmQDdtWixY2tXppF/FdHHJIAsTCvXTEnd83HsS3PagqGyw85Bz54HJ30mKfWBopuM3boeb7nE/fSuGJsY2QT+AhPiQcx1TKg6cCq61XX+exD/C7i6AQIn6GRXHF1w2gA4PsuUJwhC59Pz14/kXoVUdoMmaBTXNIXiOtjQ+DxVKFR8j8kznbv8kVgRq5W7FiUKjKCJhoDSh2R66dki69qnOZXiTNaFNAzCAiTFeygMcG1nwYHA5yph4Ii6S4vFnO08rMfgWgKzAYAY9f7wIJzOE591L6YpgL6YEFhFoIx67TDYDxqJiQrlveai9g84Dfcmfhukce1j6uzoOf6ancfILl8b/5+nX8aEcjwA6mADYGaAGh3U1+q5xT2zfQzHQ6j1tYPpvoSHTJjM89kQF43G1kFhA4WXqULYr8EWX8i7xp6e9EDsIBz110Iqy2XmhMzIKTroOelpBOMxzlwJzZac78CUdaBiqjYkM6n9focPVYSlSoe+RaXu75ATGOX0vkfFyKrJw6jlPG7hc2OWR1yD6VP2KogYubtJcb5v1FTtArTYLTWYKBa+5DH9QMorJV0prKdgv/pjdwEMfqPVhNyZaZpDXm4EC/SgxJT5/U3uJjpYw2UNVaAnepHco+wnWiX5k0I9Ojn4GXUIdt2BNJXAOVmQgI5WHcry2Qf6Azkr9TOQKPhEkd4BPjF9GEDZB6Mql6qYfFb4XjH9waeg7rut0pEmgk8cFnjbwwPkNbc6FsqsmASyxh2Wrx6JcaIBZNxUqYXJlsyyq4RhTzblsCch64NPuFQOM01ci4CRf/hZnVBDq+z7Rsdpel3jD/4kcKubzOieOcsnrYEjS4Btf5Gc2HZTnzxfPGMBbEK8FZlK7hNwH0D268hiaxxnIQfo4DXWIPsLPONO3HgM9wXFh8T/qaAbLKLB2+zC+w6z2LRswIRv6ZsL+SGn6jNJ0FCu+3Piu6hfeaXO7SaFQ55x20n/y/76mMunKkftBvZ0vaDuzq9u5RduZLdvRs/9O3kcuaHc/gklU6eMT+VL6S3jFxk1Y64NvcOUJ/cr7+P0imO1bHIz8IvfKvlvvyHu1I4lpToRS/FsZmVVM3PnDR5ojk+lDpIeunCA46ZvVNO5p1ON/rst6vJTL8n/5O6sh47VMlrvmZFF/DebLzdiPf/FO+TgyH701hvOTv7C6O4koS38BML3IvSdXeYlxWNbVW477sDLPBp7BMkXZKpYNBo4mmjZerRTgjWzNiiksvvI0vsVIMGt07oF7AOuxtL+vkGfLr3e8HF+xhO/J0xPoLabBvH+4/V3fLnJvwZLp92PQrH5Z4z+9czWpkgHeY3AMINbOZ0P46z1Pg7yrR2Ejn/XBgZ460H3pYOh1HM9PLElztVjeV2bUH3+lA1LEYBnyC/gV9cHMPe58Xu08d3hAQ5CmYb+fyFOeoqaR1jRStsbyVGPIKSNPrSJXKnJRUYI1NKzCsKx7xHVr5xLTLFaeSkrV6oQLIGej2VGjWdPk2MsGzKssqHKEm26vGs5pjZQzQg9GlEJCCWkkgAcHlnacaiF8dHlWRnLij7tYg45OM79wkfqU/+Ifv/xUU66n2dWZO0dmbuAAkv24Cq8L1guuc04Brb67qtV/6RTNAoRRtVl8Wk+7yHmqhh0AaEAjjZehk4YUVCDA652Utas0lgw6tZyvvOm1bVTTkm+8uuCnhVDQG5nLlZaivQbi/DhWirYmgf6HT7cR6H6xf7xDyGK3YC0lZ0ENhurxG9O5LsDVo76CxRBB8JHl06eA991xKgpYdv92oWrcGPfAUjXz/uG2d6FkYR2t77mjZWaCdtpVpVpGPWZol9vxHWyb2kmXkiwsSM9Qrr6vOKhUSeToEWRiT6mMHROoDBbP+IKsz4UqpG2cI6UFlbWwQeVTLMmelrcL8lS1YTbH52T9BFlqsB5y3S7K9nUT0pKn761NzTTfSamZv5qaaaFHj5r5hpKFdmljMTcX2N++W9bGoCoHAZtVgEp/EZnKIxoA/Tf+RFROPz7B6+gi5OIyhnqOPbmvd8fxG4WHj89iwejLb5aC5Wbkj2+zOisem2ua0s3QSHVNKxVtzi3H/XH8wovwywkF2f9JtC9i4b+g/s1UdvkW/QKpj4VCr3WtBqcSs76qYBmWYpafWCHktZ981MS5d7yn3g7Eucrs/OKdNaHYdABWGQpvFmxNo/3xB6UqpHPfbjVap0L22Ws2GYddznnkzaqwFA3SjWVOpU7jT8vkpe8uiOJ95+gVIsD6Z5C42XTup37NnvijS1qD6jX41eo1Cnp5DvCjQiItnpzRgifveXsVT2z1ZNDE7lsVK7ijLVihpYAU7XPUOfUc/em7rciNIp7SovL77+gkTReTRC62jfft0s3seZ3fdiHbQU2Rp8uvUGBFGpwwHj+5TIqzUVJCWlUJZk5G0Mj+5e3VedKmm3PFU32ac3WtmasHOrXJAnKtOVmdlsn6kTUm62pMFl7K+u0afmxm64d0RfXWmq336GxN6feKDPHPv7l6VetUAqo6lb9lpjKuTGWsU9mtTGW3bSoB0uZUIq2A4PGXPdxlp5TgJsfM5U1O68KrNvZrbzrcnMu0OpetDRwuGjhsG9Dtj6EtMU/Ux6T/CIxwaiL7FSuXKb3Uisxa/gk5wFAR1hT46xYJBwiVVhAIfTU8YFTdjodVJPiIKhuS6pLF6pFfNP4uVJ2lY0ejRLVxkXUM8I/fZUXAgVtp/yaItfhgzznsujmHYX2zW5lYlyAL/Mathmrf5Jb0PVVYjXsHdUmN748OLu0fOKaZH37TjY2ZVG5wmJ+05EXujW4xq66Z1XEH24AquG5728tO3t0vOra7DzjS3Q8U3X3AOXl3Ly+7+8kfb+/ufY7t7mcLJLzPWbO771o+RXc/WenuPdrdXyq6e88puvussrt/D6i0dPdEpbsfK7p7otHd1Z16X6VTd2qnfrfo1J1Fp8YuyM8acOwUDAtnIC0dW6507LaiY8u1jqlcPCxX3K+/q23FDZsLqwL848otk9Uavh+/o/pFbHYKcvRzzZ2i7nAgxdVtn0btq1EkcHzS5AKf3l1Zfp3apwn6UqBItStvb+mKypb3HPWah4eji5Da94rZTC3jW3ZBl8afewNwBGB2l8rKRppJD++oz9SjbqZlvlPfHMNiVlCs0bzp8cfe3TZF6Umm6JU6RenqKXqVTtHIfgED1luIOEIGYY9pxJp0/GD/Vxjo0Ug3P5YIJgMH6ul+BIwanXSu15jUftukvmPtSf3iu5qTihn6lMyQAfmKcOhRjav8eCsA+3UAMjoi7RLl8QoWPiwzVXzm7UfqKw7fsY4L4npnMf39oK5O+fH3tKpTpGVu2KvP3JGPv7qiU6gILz/TwhkNURwHjGCFvJKPTl2IRiKyKF2ifkViwU2y1k3hH//ey8pN4UXII3P5KZE7IAK98icOVzaN1LcCiFcIIFnfbvdc3e6h9+huHfPRxbpmZg3+zMUb+hgVDN8IEWVQEzxdMzQYXbpAGr+601L6bGQLiDn98S++6mVVmw8Z5OdedeMqcGqIyfQ206S2gtcG2fmrf1q9iV+95ks8BhX/VKuI1KYEatajyoQGijv8XrwkqP8TuZrdPoHtIOBPw0DZgYanA62IB/Ispmpm0aNedZv6O54TVGxAvOKCvpiLBnreD3uy8qTvpdeNLzEXnmq6J5w9Dkddp/jPd33fw3EgjoU9/tm3NHafPohxVhdeL+fJHz6EmK6bnz4I+OVth5bGm66Q8+QPitFpkNSONvCLoTfTbNdwJu4kxbs5NkfHrmTJ9Qo59feX1Mb4yZlvOv0dS8PA5e52OPVS+Wim58f+5lWWUPjk4YjV/GCa+FGZMYPHx0F5qAa3l15H0QsznxNcNcUPxebjRdA+kZv+vuwPxDA3uJ5N3q7L/LKbl0BgcMgpDz2RHBqT/qoO9ce/XDUyL8+ErUHM2wOndwgzrAa0Rhf7xQQHnuNDI0y+T8CGe98okIOZXnF7PSyuf0DvGhmbADzD7tsaWWmwqa6ykjG9sJg/MR7v572n6lOaJ1IC6OeRi0PS2JzgohU1RkBdDj+eD4SN8TGWNrKuKSjrpme4cKK/8EcBFI7GfpEjhGlSiEeznUobpj4hD/8GuSsU6hG0fz2FsP7KZD1gKq2BtP9oAKIAgx67e5Ux99BGT8ecIAx+F5Rcjeth69Mcv2TKu8bYhVy5reVRotZLXc4nDaoVU95VZO1qmgLMZEltlljf8RmczqP4Aoch0ycXzbrUoy5KZUkNzD7A7OPR9kPPzGEep0+8LNJfB3JJlnT7y/V09mZhLn/0Snxwk/+krrA6GLMDa7JXSsdcJb8+0vx6Wiyro0gDMuu9sKfjMzlXKE2bkZc6Hf1w5KQFnTtsnf6URwRf5X69VZieJysOdPUGpk7XYlk7bCwgbh4cNoThNnF1FiITz4ae7CuiCMUt3EEPOoVFX4DxBYxlOkTVdcjaFpq0BVPNfboOiShqzDq86xqnNH//5deuOm+1+5O+JGcDgt7wjZ99NbLOUJcxY+byvLdg1HF9K+fSEg1MLZzp+1BxbwEcReoBO0Wf84EY76VlL7S8Lq5+UR6ZzPLswbmgA7o/jwFnA36alad+y5Bd01y3aG4ozV1bSiwj02Cequ6LuqZNLTcFIcAOd1j2I0egQh5Xcnk+XDDqrdS4uZmyw36RxG4u9TfcLWYhBbxfgVrBfrvw+rZgcg6Qc9CWc2AGM8QcQOFbDKJXDGKkSl8aVgeh+Q34uhABwfAT9tXA7ZqxLcm1O6AqqjjRqEKnayAKXdhDv/eITtFuO0Vq5JuY1QxQZ0Hlxk7Z1aAVzbQR2F395T/YTQGsYChRfohHx+RuOBm42eOSmPZ/uq128cxk16UGJgp2WV20qsDShVq9fXLTHXL7ZGP99snxgYvbYhgU60rMjWy9Xgqr9xZPk3UbdId5skdY/exs8gh67IxfJ1a2u00d6W0gEMpTbyka+FjHtnAqX5bkC+n3oAI0xe+zxYvSH0ZpdIeVS44U+tuiEFcn5dbTFEpzVngVkeocdLrvaDdeslS4HHn6AjKiWr3G+gAOGkFYAzJOPHcaO+CSjcKSx3rT4YYe5Co5DSkoc8RdAuzwr+iq3q5g03C90gN4Zzus0gkKo4jxFWd6Map14vPr6cRNbq0Ty9L8bfLvLUUnysZv0cZRCFmrjTuMsfxtf6X9B9bT/u3avqZx1e9xpewX11P2zkbZ92nZB9dT9nij7IfccpS3Y3THdXSo7876QMH0RJap+t56ngW8d4qWT1QgrvjHP4ArPuHF05d7XMXHj7naLlY12vXXaNc/Rbt3V9sFQqEZJKP9BFnZ0s/VqTwCw1LnWWr1iKzh+IhzMItMTz7lSk9CXXH3yhtF364qiYiTPunWb6lxnVy3XLvhBvWay6fcLDRC5WddtCMe1D17AYQnMkMHxDxZe8VNaBfSdwAxy+U8qdCBRkBxdZ+ysLwOUraTO0JMIm8/tMT9eIj/i67DPuCxb/FIvcWitcy1WW7iLAhz/nXozS2n6o2Krh5maz+TxOJ52XRR7t2XoWMv1Y/PX8qjImNs1pZfeUrLp3nzFJVfWTGEjXj1enyQ/JzDG3el6+WQ1zNKueNS8T6ARyDr7c+Go6bZ4srIxiUpKHYL3tQPCxqjvNrQjr8G6FwLmZOrm0XGerJpKn0/IKf/wtj4heYohlsoyItjtprY55v4OqCj4GGOGP5er1duXWsFjEQTnEYz5fAFIbVWvAEeP4rrxsnfO56j0ZeEJr7O0d7kzkX8LH4B4BRtL3f80+OjmavAuMfNHVnBLhMBPDDVcnBXqeEXSGCVuQVpDF7ADNLjbRx4JBuFrI/tuuQfW8mEALtl/+HgqHyRFkh15UWP7jY9AsrpsSugA7LpJq+eiqNDngmBH/E9wN4NVlvT8GSB+3e+cWERjDvGbem4g6Sr8wo9MqSRIYaRycvrsFXRVaGEOJR+fFY5UM39nlxGi5Qax+ZZbwzzP33+R3mtOo+6//qLcXXKKS4Bi5s6cyc/5JcV6Tz7pc677GPkduTsEj7w2536Bk+ytugltihnOV4rcMKp8W9y1E9v3lPHtEbQArv4RPkm/u7Ze3TC5e9BbT3iJNR9twP6bzJiM473e4p3RGa6T1vvse/cex1wk0bme6uZH7CZ73cSIw519I6hXoOVK4ssUPJek3/z67K+WD7hY2DvyA7V7ceIl0WW6oxhG4RWp8ViPovw08/8iq9k+9izj7P2MbGPG7zSxEyxhLG0EIxudFSPoWLkVHo7Jlo/oPNTcDQ4R1O4g1rYJ2FnpeXnGqtnrkHQNBN5x1Yq3KDbwg26NW7QbVTbbdJJKFQMD8g60snd2Ub87Mm6Bb7oxVE7JPm+u+I5v3A3IPH9l50J7mLaoc3L0GluhdKj7DS80aP5Zo/mMchsPtGyldHOt4x2vjLa1ro32bo3JYWbFQyPuuhPNpPQKAtomHl6fVqv5lKwBM/pWFQz1OWKKYbo9YOMW/yBFzO+4HO+sAJnw9cdm9D0hLgLC/wvhQviAnYei493xsZzdHEXukObSpArdZ+CK7MN+LkyA7TgqBo/e7MF/Bx2skX8vjjbgp9rs634eX62DT9XZ3RaU9OrTk2vNjW9Bvh6q28iY2p6iZatTE2vZWp6lalprfvUU6Pj26h4eIuD7xuJ5ONGBQwtylsm4KEt8pILkGirvGwXUNE2edlRmWvEN2CNDubca875dtq6nG/VqZ9bc+rnq1M/z0jC//J8AwVy2rKcb6HehDJaXM4XaRb3j3fQtuV8G22YrGAYyzlRwr7G5wVX5taBK9RjtEiyDepU+NaMToIc+TbckV41XNAdQDGjvpc0h43+wOf5hMzYNzycscuwZcT8nxndhtMcnfJnSFA3imXuFC0ilAr/bkH0gynaikgfU7QNAROmiDhgAjJtgPvFKUrgp20KTrH38w+iB/JPFw7jp0hujE2JoDlFA0hwAzS4hsvcn3yw9f41djRueaJAYfKyxIOD0+AGyylc+2gusNzk5L7RIBQe8cR51O3OBD93OsuVFeW1rCivuqJO7drFyIwhz3BFysclIx6ayIiuzmxgZjZQ97j68YiL2UUEChf+cjWajj8eVbs/j+/Htfsn0P1Hsk9p7X5a734qcHS1h7e1dd813V8uun8Ld99dzlyz698toziCi5bSagWoy+UT5zjs4ObpMkXYvVy3kEWGQGnIwt0Jfqkz3mFkmAnS1IMQZJSqTKtuJNdu6UTHtuRft1BGdljOI6AsWqGilbLW5SwyA9qpPdojTeenGhbZttxVo9qJfnbGO01rFE2Qpsh7M1QFkBsrLkztY2Qfu9KRFGhCnuVDlb2bJ9swVzw4u+lvgG/ZzmZdku93yvf3rf4e6ffj8v1Dq7/HiqeyzOBZt7UL7uouoOWI3NVto8mY3NWNoi0Np3ivLoH7HM0LyV5THnCW35z1jCv2Lp9uIfFu/XYPfwO6ujgOvWzB9jN9QJTNHnkT480prG6S7HRGFC2/jaLKsiIPftwxjkkeY0SJxRjihITcCn6hPDpcSYqRK65v0Sjiaql3NI9WUKVLka20rco8AmCcMhOwEcV7lWJHeXjdCWi6+oW9lWIBQ95ZmJiwY8yMTCQ2W1NvZZn7AqKPDNGtAD8KXJ0kf+H78BKHnWAhkF+yHtU21GLqyuM6owlGYX4fMr3ZZz1vnraWfD91dC+lUaKshtxGfGJ2ZelEMC6ckNkBwzmxJZv2DcDmt7GTeZXv6rH0Vq7JVb1EwA0YVciVvGv1rSvlugaxYzWIIc6XgG+FqvhG9aWBf6Fy1e2rAmU/fHqo6xNfVSPzBwvfwjDfrSgPXydv5BvloQ+ttrNaebg/83TvV+oMb3FQO3ngvuJQnlNxPmOVYiyTHpVolqm8Zi6MvEqTKwpWrIfzvITe+LkVuD1PaIX7bp3NjtkWqQZmnpuqelX0k/u6oS+RUjx24OauU+Gg0aVCfGOBLTK7whi/12ZdFW+znjoU0nsxVe3EoKqd0C3xAFviQWImoqKreAa+Sn2qquhX/Nd/vjrp5ZQPzTPUFP6SWArF5blEsX9QdUU+muSpRqcaFb7qJvkUL0i1ECocwx6tiAKjFlFgVBMFRo11Nboj69t11U8owRHzNPULWXGmWJZ7BwZtOsXhT/rotjzNrrsz37Y8C/SgXtbXQ21dBR31N9hP3y0w69MszdAU+el79B1I1K9YK6hkuxfjiq/LNuilOEFumC7BlEBqV7tBmi4Erilx8gmIU7r8SIdZV8155FsRkV/RY9yMO1TEJxlQgD/WsMxRwmJKNlAXVhs9jb4+p2Sgj13FRhKn9Rq3JM7mcWOPenJTUbSbKrV54hgLihTQGiPCjVbUV18fwhvvKUbLiCPaE6jkCVC0X5VlcQScclVad6QVz6LiTQieg6HOmpo3rVCfYlQbTogDmm3CoPs0wyfKqMmnTTSakG+it2CPLFoPZKqqyKmnk1ydlZ42gVl5lNG+2jaDAbPSk5DlOazUCt8dPYOF4+cf1PCiTW9SfeNN6jN1b1L9YjfTr+1m+snPazQrVSQ/Q/XICK/xDDBjJYtgax3WWiDHlenPIkfmqfuIfWMX9FTdx8fG834Hm3Bvgt+rH/E2p2Oh1FGRtYCSn/yJU/gsqfjzZDTkxm2z5BxfLtX+/vHSTTFe0+PkHrdZj07yUwXcMmXdYyuPcGD1ak0gLXIrGJ8kP+e5iPRcEMBnPAwRR9PBWlXcuVLEna91uIFn1wIDrCP+pCv2auSryMPooIpewchS5LGixyUnEz0C8XMRVGSP94jUcbv8u+xUzspnVWfvXo+Xq/KABY8lEM7QCB/HzRmqCh/vkzcKjfAR4rC3Rfi4Sj0EHgfbNm2oGIXTXAe/hCbREOKsfAJJOFk1vx/DL3qCs7Xny5UMAB4iw7tmo1i89bosMngsOqxTaKjKAOFqGSCEDKBG8Tpr3ynjxbDMw7NV1LhFRQ1U2lU9oMoatzvq8v09GoeNwV/Q9SHPmadztqcuOcjhsq8zNtLntSWHvUCjlMUDK+ZOlWJuWhNz05qYm64Sc9O6mJtqZFqZH8gfRsy9WtvdZ9p98WPd7otNu9cWU3ClUh7rybcqkEy1EIWpGlGYaiy5qcZSLg9sM5/SbIo/QbMGrFSvxBoFeapoPUvRvxSBfnXoNAX9SHDg+NE8bTSVNprSAo0Th7RlBGl1BKesliIR5lB7Q7acmjzShmZsQzNoKGaBTUW4DeSB18+RhwsgzxalS7YRgc0AO0QEKAxaKYR7rhn19Twz9vHRWOj6tNHQYmOZbAQAE/HhaF528MnPRYeq5htO0nB/7xv397/56ZpTbN9G5Sqm4JEdgbTN6lTh7lRrtF2eX1eX33/j4TW7TI7WvkNq36RxrGnOgC3fKPcvnWJL/eZ9v/4J/Pf5S6+5yL1eT3xOa71sbgx38x3Zgh3uQmW9LNr1qSiQMjMskEUwff4oQ2PL/7w8+uuHvnDpNcXh1aMKfdudGZOo/9LMtTkjKGg9J7DZ2dKB4kBKoQVu41EXFpw/oxvwEo+5Gf2+kRYRmld3HUlRjIXG3Ae3AtdA0j3OM1FE+YR+SrA6uEXNcDd8ZvNUJrRQ9HYLKMfRbLPuXK6kCFuArZo535YRoihmmQn5EjzTbL4zKAxN71TcyooKM6XGOgi6zgB7M2XHHzERaAc4ntsAWQWTZ8DkrQaTZ8BUDPmygfinI/JwL6ELMtGlIQ43hiaOHWW0BQEguV0S2owR2m3DJiKWSh/lwc7Zw1xVOxOs0SP5TbMZ5ukb1UVpbrZmeOtkCzTEZJjpQ7TKfCMs7wc0Q4luqjYIM4GHXTTcow1mW5WuTGhGt2vpMrjNiHxaqJRBGJetXMQUAP+Zx/mYjyJTy4jv6wG5JuTp3ks3g4KLkaW23MjiUj4jezJM5DbM1zYRvrbpbOUeo10xX/oJEJBvgA3RDM4PSAk7oTwRlzECU0Yg6Kg6Nkonr++uRQDv+dor1iCAa9LMD35mDZpZ23t5yX2u2XtBjM59sMYXo6przSYr0D1Yqjd0iligkzxo4EbQtkkJsEnRUtcvVFAvaEG9oIp6p6xeDziqe3Nf9nxo6uqi67o/fHa5Pwzs/jBA7iPO5JF2qr4eNDyOU+2Yn3zJ8aEkxl/F8AgTXpHa/JqM6NdkRL8pI4Ky2o4hh1o5+bdmrsiKRoecBxi2GqEx/mHDszOpxVPyy6HqgHh1wnjNKWtXS/CAfN1ZJUaE4nRpAZNgoO3q6a5P7kQDqRxixHLNpt6Yqhn3vmOg7A1iH3Ypt5E+eSL7Rbdx6qAP5L85D1beDFxSfT05GrY7d1YwuIXcuZV//cpM6SZoE7csNuc62nJzyN6sC9M1u5PZheEjc+baSfJap8epTQ9Wbn2KXJ6iTssUQVrBFHk8RR271l2zcAP18DH+cl1pEpiFK/fEavB3oT8oVCEF8D0D/F/yPE+81dcHiE2fq2GxXTAWUzDzSwE+KFsIMSUSRdKEs+Ey9aDznqRDd21DX3uVLApQRxdcDcHturJvgN5zWAhUH7nErR3IPYyRlYAdCivIEgLL0J7o3nGBB3S4gWUuhRbTJpUwGtBnqR1Ma0tjnr/qus9jREIIbqWA+CloNu1KQ1yiWAitTTUn22ubbHveDxYaJY9znJdS5z1PeecrnJfmzjsNSeFT2G1H3rmUw2jTJGGNIZxo8nuOCzJjZrw1LDx/Kk1oP3zoid6VkuxeqJLW/tM6f5LMLnZsj7LFcMVMeDeCnXzBC4NDSkQ9/qvgsWfw2FdUBc0vCVweYhCRhN/D+EVrGTOG6enzlea+WljXN8QqAsfl8dR+HE9JggZPEYtJtYO0CqL9WVxSViq3mFX2ErXAJarCpS20WWjhEiaVoLB7VJ9yYS2C3u6sUy7eQREIod+IflDocvrQwduoIH4lS2HjCNSGjaNLfaNhD6zneajnY+oU8lqhUPcE5Cu4+QSBqzuhSKMgGkMcFytCoF43SVOV1u7iIvTHiiBc1el0UbdXn05/UAYONfcV3Pp0dnQ6O+V9hf0YPxJOPp1+UpBUQDYPBNw61o4Za8eYr2BaVHEV8JhhvFJMA0ZewwpjXjt5tDXSPPACngrFAKbsX/46LptQ4RwaS2TAWVZSeKplszZaUxbWsNt9VLHbJ1+j3DSw27PY7RbY7ZsZ9w12uw3sVqOJR2vZt9ixl4vFbVi0hXgLzQpyKyvoi16AuXdl7r9BM/8NIJhdC7muwayeYlaimFWGywUuZaGhmwU+DdbAp8HpUMtBG7UEaIVg9tcimAlQqtdOMM08c67uSenmj/rfmFnvYta7617v7bOyqESAzJlAMTluGdNnjckJT2ex6+TkPmAbkg+gdvHjl4sfyTpZbjFZXTNZ3XL91ydLJdzHCotd6q5e/wYhNP6PoQYtZODZHSPPtQqDVzaEwf0qDO7Sc7qrZAqRoFc95Ani2OvDyDc8RfdRJ8E012Ia5QBRHkrodoNpe/NIMS1k41lc5sduc/UNF6BicWin6CAJnQLJduOfPRVE25tFiVX5t01M2DIxYW1iwsbEhC3kpeRYgSKrkcfiou2rigjnfY0Q1ik2oyLakaMrUCSJPq81lcKvktJIbOtDjfcjJ5ZmTQQftAxtUBvaoFHtoFEtdUoqYybnStNSfwVHz3ye80hBObTtDctYOfHqTaYv6WsvcRpSV+IpSr/yLnXNSo+LjZpd2S5FVmSNzaKOBc6gwIFZ1OGy3cOZpYVtbhvl3TXugKTFybPMQtvdttDcC5u7LrvCzLrSy+vlErsjFkKOP/+xIOS3Resk5Jfoymol5Fhb6VvhWKSISe9uF2cBMNI0H/pK7gdyGp8NleqPNE5eWmHClHV16UzpenLVEQQlauiTFPZW3UePyiYWA+HRxcwuP5uli2x2PRZb6paaWjSfETSfj7CD9WrJLXlAGal5ag2OOHU6HLFbcsQuFxTGmOLHp57O5mX8OeuVqwiNVJEcNyr/tQHIClwujXS5TxUHAiUPH2K5DywPp76OlzHu0Ua1KdvRqYSmLKoRRAt7T6XGzimkHng8j8zyf8vjLyx4/Fd6slnuFVYeu+sOdQwHPP2NZntsa3989dL4bV95Ct/GrfoVOexJcKd3/e3L6x5JTOsgqOqXJFQXIeoAAL639tsI77SeEMKGESFSWx7hTPUQ1xstMD3/yI3/bj9OkZvdwiJ57c9Uj73rvdCdfowI5cUK8hEXzr8uD8Y+8R8vlC7FWQ/y/FN+/c0/9+efePPP4Qb6PORziSkMOgF1eJAnOPZxubuOhNZNoLUO2FhpBxLhRIWCBYgxVNHDe6tXk7fv2JsuvOyvd0pgUH67+DnnPTngC9WcYY0hfn5lrSFiEwkdyXxxMrBWm+sBfcC4+IKl8Y8evhaOnoLvxQXzNXr0V198+cl6BCAklnSsu081rRiQAavjf3KXOAV9Cr937IiLOQqfMXDbu/azJ+tawBnC6/MQk0jy79MX8hBI9/QFbhJYzPMp3Uv0zNmHVIE7IA4EDOqpP/6PTJQ3xoyr/KUnZyut3fngrWvPHdpptaSPhLpIQHXcjl8L83/2FSedhLHzIsFgUl6yyk9bH4gtrQzYsuV45o3RwqDqpq5PwZIR0CnQbe1Ru4c1B9TGHWufBuoBwDocwkmVtCCEOsROKkbxsPTUEOBH7gY2Qavla56KFNwdBXfnNMFd3FLsgRqoi6YAl9KZKWjUNvCZ3TYc29vTAC4BQICjggCf6DB/1Rx6+KZimkbKgkjxLHWWJnHUQDj2kF+lKjtBFkEwfIRJI/JLYuKAmIQLTPzJN8QEb7v5jZZEIz/mMgewr8CBQB7hSI8ADB4/nndQxNAbX3udhKqr+c9Fg8jNExAT/12+QOGBzBFrL0y2ueagtYQmSFsoVpDVCwsBxbqsTXPGVgzLufCH0YWwKiaD/EQUPQOCluTMe8ir3wTj49rMjnlnVYm7j3pIS0BafZbIJvzky8RTB899ipGhVg0CCFA9SL7J3PRUjBa0Y06zFvPRUUAUS8+Rq4yegGT5dcYzvn7weWqiAxTBmOXyBY3bgVReb6ENQMuSPi/InKebCP/sXzimoZ7jrG9PZQeMPkNAAnDAWJwibsugcgFrQH22C6cRDVbKVHauMKDkewayx0vrXqLTypRRiulNOdONh50aQdAI+069qMNZJUhrKh2RskBeOE2Ysv1OZN6mxgET1+JkMCnFkdZ9afOSZlC4WQnUk1CqOZws1rTLOM3NYn4Mns6PvjxO4TGWx4908JzK88tcPBMvWLzETNxjnYI8wE9K8cE8Js55+ULZuE9w1dbHjijGP6nuirRPrlIenEKkQKeQscaX0EtmlcHnbfFpPA/3HL96q7rSxfRpqTyQcvOZoy5WbU0gz3GdPGeOLQOAzxuGWhI+pyR8uAT1439tPS6rrzincCLoU1j0Ee2iwlwMjaZ1IfgtzCELdDmKAbVywsBQ7IJ288zIKKbN+jnuTi2jrKbkM8fsRcQJFPv6P1NlPjsMOo7ven7CmP2Ku3/1+3b/t89+mPP1PSTQx/PnXPDAH0iCa3N8URIcm+MvL+WEhLp6ocEZ+0zQaIbXWbaBBrdmfUNPNjB31nHHOgioCIx7IdcQHOPax3ZTesgdZPyI4KTjGDhfn99iecP6m0iSL0l48ioOPkaoWG+PaulshIpGyOeuma8vXjAXivqrhfQ8jKeLO4oG8TyPMc2ZAynp5hyPzLwnesEtrFLDgP83I9zYEeE9Jkch4ljnSciiDnOsV0NHJxVqnBgXjKpCQg8IgIi6/I/ZEahggEpNw5opRssU2G1DnXojkhVN8Tqv3TZVIsnKLx5dUqV3GTZccv0eCwWLSu/7I/6yklB8iLF+kIEcpk4gYDLjw2epUZ54AaVAc8TIwR3dvwDULiPa+iy7gFqKqCAXrQsxwU0e8nzXHMUVAu8+2FUYJainWhplj4gti+sv++QgfIfYCe5Nanskv2Uv59f2cn6DkvotovzYXMLCdIMn5cEBPIrkEJALllrcjQgMG9c+u4bHOkmDyHhCUH7/72rSlWfICnz9omgMgcex9eYBambAXuReUqZrEs5r1zBYusbctLkpsQREtquaCMxjkHz1XX/32898zpVq3hSWr5oTJG9iHDTyffqKFdHuS3EV3QzOK3qQjhfRLRhR36XWdUUsHPi5nhRR7B3jYPdnxcEu80Ao9K5zC4MjKMR245+debk9frPYn7jPXTi6jkswWM9y3OzrpOhNlwPj4EV42L90TE2AHu+4h9YwO/mtv2sP8/+FwPPLY3e9oJG75f3OOpb6iqWcBXBTNOVMSQGqXUu6MYmevooV+YIl7/+NuoViiSV2wlsV4HVwwIbH6CUcMesF42fEVoeaQwRW9y9bgEzD/8JPQO4vfPsaPbr/njV6RE7pkHX5K+/jPFyfc30ukiXfATHiyGH9JKlrrh/AkEsPEcgUyewZXPcymxXI1cyZl6ie+DvVfTg2C0+7yL1GF0kM/bEFNcBAPjaEEHysRm49QFSVCtylPUKtfr3a8pKnMdiE01TriOz5ZbWyVqNxyN0uVOh6H9su2LeXmW/LQ72wH1bX6rVjNZoaJa0z++q/f1nbzCY/OkjUmVthJeGZ5/L0Zo0V9HPthltAFYiPsELNfBWVtKzq6u2lKewavlMTrpEEO1nwUqAzss7Dn0c+bWvfcLxJ1WNXax+N7uhWdPLIN7iTenG/avhys1HlZVGhII9WK8hdSScfh0U+BI3GkVPdXodNim1v0fO4pedxredxo+dx49iwOuniTimuTH6vnPwexSvk69Wp+JG6vmoc7uHErIs9/rK5zifuAvDPtXnMM5qH+AhudMppwCqhTkHdOoC+hxWeqm+jvgY9j7O+TlfFRK2nDYu/gYGsysKMwhcziqgwo1AjCpdw81jiorQY5cSlBUU4objFgqLNdAIW4FlcRethidYts1g/bYhxgJFXblhzG6OKvxy1mB8Ws5hP8TxOP1JEql84S+F/fIFH0DUDoxncHhMfeuYAbaAbYhwJTQlc/RpcfYVrBaqRgWoEqI6qUB3xDXIBa4lu93CP8b/JylEaQX5prWS4Qm5ZyXB5ZVKdHB+T49M0UBGHNTPFHLXNWPswSpijK8srWcy1TS9n0zo852EMj+LTGM5yy3C4CyunHo6yxJtVpgKlZaHtA67bZQZU5euuuaurLEWv7Abmym5oXNXFeVQx9V/kLl/EieU5IRBQREdsgHWphQdy8GLAMhZIgiDgB2cckWpjX/PlzkG1Mvaug19Xvcv90iW9bKIb/9BwM+qVB/Lesaxs2aGCxnbL7x0oFbB5O/Md77nD/8D/esIkAwh60GLFkLbtRTRON7d0zCaxaumChY24ExCv3+K6Vbl1x8O4ps4PHjORC1cZbIIHmJoeXIcr4NIDcOve6NV3vnrNvZEHTbtIBrvFjl7vcJUuV3UmjdPVZ1rHNnvqV8sTUiiJcQJmHU4KXBjrVOrK3TVFm3v+aU3RRm1hPWyGpZOudHNJSHru6369OKvYuV8O7jtmQPacR27hW8VGoLfyLjS3dFBLFhSuArk+O5rypI57jGa1Pcz+T9Rnf+fDn/09FoMei9n/g5856ezvUmBdWJ/9e2qz/4lOY/rv7rTMP0O8mPzjngszEluVTn77tbFP1B0Q+jW5dldxonth7tt5D3UeWpdNy1l4C7gOXb5mf34Wy6W9P+QLHo5FQ7Rfz0TIO6DbdcVUf6DiH667GLMH9FuvulJH7XoCiBJQXRrs8nQ8xuBEsXOPYieoGvkaGUqHvTfRJVUuBQ/aE4zRYMKzqrgeQUtpcvLg0RQnmnYjRXawEKwXoLVe5yjHsx60rqD0U75y0/s/+g8v//NbnwaDo9rr/vrr3vqraGf4rG8Mofq4ozEXxh3GNGtFktw45/uHQl510UkNyy1SqOHfnjz67wo/9iGIH+OsbtPeiSpuWNqFV02H4vQzaAyvV1e8u6nA8Ta4YDASXNfI0T11eiXJ12axYGdp7/uwLXyRpfk/ddsxjFTxG0ZJQXWyodnuRDDAGlpLR7jbzCL8sg+MofGJMVJl7RB+QysDxKaj4lB3eDSvOMBjkRzVsx/XSH1yI/vV+chun05MJvnQeO9G3tFkxdYGGWfZWdNoOfcgxfSJf+Dujns8vDUbqgAO9WcEm/cRJSL3eTKp7HR1gog87H41T6woZG7VFtJ3D74BcRLO0xNmMfj3v16YjWAC+KjALKrCTOGFDUG88pjCbGhgFhqYRVWYIe2qGqiM/8fQQjOswW4CsC0raKKVfFiBYR2CISC4PjgBRBTemo0UTiEFNAScogJKyQogNHqMIBQaCI3aIGThcEpQAT4GOBCaKWQcC6vwiarwGa0fPiHgMyrhE1j4FHgEDAIuPQYgUukH73styEZNpDK+X4Z15NKyAMLe9UCSQfa2nFfrqLlahxRhTa5UcG+4DNy7qULX8tGjgYsAMwCeKqxxwDsCrFMBMHfWQFygP1l+OODe0Q5ugNeoftRM3IJ7yoB7ugruW8zavqlKB/da9RHgcSVS31ZFUQC54jI1Veo3PclnlnNp5vkkELclaHSUhivLy7bU2zAXdjqneDJ40uCKUScgpYi4xlkuWp2FaUNTI5pZyWe4Tpm3KknhxGXi95GZ2ZRmkYnRG5N9yzqncIpnj6bZVZJOIRegFFM4RT2dNRqVkzikGJP4r3gWo9ZZHK01iytrzWK0rlmMqrM4kllcEVe/dvpGNIP2Zfqi2vSNVk/fcnUhPpJZdB/1WVzrzv1NP7zGnXuc+RuXQtDM4jfR04dYzhySQyZqZsVpl05+cY7lHqPOJO80pPZOi9ROrkZJcXVvi9Y7uFsNYRxJuWvUUC5A0GHC1FlOfr6+RQBZP42oRfX9rwMLRmxCjYa2ENw1bsukWAFWYDcXb+z1gHuK6wG7pEocdJYyxx5FaqwXeAlm2F3juDdg2OnXlKliIn1yjNgPDCzxiGmYTDPAs6z5ldtSuIIPnuAFQ1pzBeVL8tuu6/Opju4CWlVpAIK4OfAERA0fBsW+wSW/3D82txAVFwv8CZvQnPugekq73dOLELoJUkKwO4tthFuPYuuMxioSI4ohjTK/L+gQKW9F9t2YzJO3eJW2eKW2uP9ht3iVtrgfE/dWx4VrifYLL5aO6Qav2P252uvS4pnrMu4ggQPfk/nrxuGmSZhOx3XkQweA/r3K7/mHXDW2ML/4O9kttepdlsDMlAIs0vsosc6buaTSU9VHAobQLw6VemtcXuqtvbUEEq+YqEJu9VJGzEsREjI8po8ohgs7iCOuuanhUlK/tAg0LW8vkC/9kpuDmOEu9al/q3gjy3sLy+IyPy5Dsjw1h71yv3L0oAGjuxQ9r8gUIkTK4Gibu8CenYwe/Pb2cDGa26B04EDd0RtITKjvKTxkRw+jKniMBh4mwJYRV5B1E3M/q/UGJGJvMB78NYij+3CJo9BEd2l8A5sMIHo9/nn6wthFKtvKeGKgY5mpd2zf184995mXj/+aPf//2i+e+/KHfurzH1ZPNSugTwfH7g/CNmx/hdG7duGo7YvxhFpJRtdXLbP/Tq59htYSN8amh8khv0T2GEfZxSI4xeX/KvKH1jwpGsOo/vCLr1hTVfzKdjsScehvLnNi+dcvnHWEAZrrZniOmPPoCtxrFlbp1kLPGRQH1a6hJCCDfUsfuv4N876GdEOOci6AXkPmvBBQW3yY1S/jYJHbkmJNh4OhlKaOWWRZydPSN1q6dzIRT9FpGWeBG8ymxx05nlOqkY6dapyvafs4TB6B8wLqHMtmIUnhjwnFBlw/hJsZEzB6juAWJtvIP3xMMw+CdACeSKlzINtEEaNgtlnFowVzU4/ZPijP4rFsC00b1jugQZX1br0124ZL1nIPjDzoQDdIoHR1xaC+L6BCK/B0mWuYnej7JQvZQDlki21v/UR1ICeqNQPm6rXV3FvIMiVZKL4Jt6IOAesWQBGBku6SEEWQxNzFkOXaJsgq1LAJp0uQSVe0vUybAHEXvNNt6GnhLRB9Q/79tQ/UMRfYFCUZykOv4zpuUniRQJyJUoTLByqcDCTN4aYJ/SLMldS9YDLSYIWyCc65+rYqyjjNCu/73nj7//iO7/iOX2aFVFmfR15Zn4f6cr812TQzocxCt6rgKuEc753k+QquxJdFRrYL6GZX8IfmyLW15pSt1IYN0Zw7TwMZklOBjhqPbuECgjozPJPbaJoG3KyRA0cTfs+NlMf7yRVj1ftJttrLaSO5MBmdB2Jvp1Hl28hO0w4mPmeQq6gAhkFTFOoSkSuOgNGZdOa4ApkK8eDOUMrKhbPoLB7B0QntWM53qLmqg7a3Y/1sJx9vftXgPhtwW1uhPsyX8xyMe4rOwCHlGTAJpWF2FpxU7vveLd/xzPRFD4kD1NFJ2s3Ogq/CsyqALbuio3CBUFO0vYpQmbtmj85Cj4ZZLp34j9/z6Q0fUb+jrZ3IKddO5OhE3uxEjk60o3TmFm2exZ1Fmws6EbV2KhvbVQOvNZavs7EdpjEfAPfN+sZI/+75f3bk/Q9+9sl6e6xSt6Im8lS9sHK9i0vVaFoj2mz63wWNgZGvad+tINDaILSmBYqKwCJTAz9hNdlKTgYfW+GKVucyAjSnuxx+UvR67Y5VwVzt4/p6sSZJy8tKTT/bs52k5x5lJWudKB0o34/yXBua4p2Kqopxe0K0lBVW2iIfxslcp7DoHN9z50fESJdDayVvX72ZfnTcmeFoV/ba/tPXOBj+ODQQ7QfDNccBfKqb/Fjids2WdtG4XTSuCjPfHNOqtBdC2osoFGkvxi9MRkSCMtJeF7J9se0NsbkozDjIq9p0mA0DudgdHsgjyQksjvEUl2VIE1efnFEw9OW0DFV1y53KWLbxB+SSTcTyTCSdkNDcEbTeLqzyfbmRYRQSuHpmlRD/zMwrUQyZCPYiv2RNIMuYVOMrJQLdjoACNTORRLbieiiZqBl4Uqm+b4SiRPevfW0N3jr2GGlvb2ZcgfST1ePxFKwhrpthNNix4McMEbv1fhExF/c1ksoLuh2bfU7LINYPSH9tQObJ20rI2YWfrLwNYFwP+PoV8PUVfP23AVp7qruj/srbALK9Jcj6CrLk9EHmkVuDEvXXDbI12wq0rUDawo+uktzDs6Pn9Ik279bgTo58Shp9qkLyFL1Tu6aHN69u+4owKJslBbYiGlAdAfjT8r5ff9Kh5711+UuVSHVim6fIUmRbac/2SJeVrk+gj1m/+aC1pXLd0aC1w+teiG4Fq7zVWOU8/IXIJPmGwD/kv4RZx0tccwk4c8YpiDPkVI+8wt8yDP14MiQi9Ld1Ooc/nAX4uZQrFH9U6GmU/iH0qHLVtUvd90KFTb03ZgnXiInsL2XMjE2NySg5B8ZdL2ltljp70Nw5aI78UfK+eCPyDvkv4r/+oeAlC4UnJ6TxvyE0JvyX3uBVB/NAp2U0qP75qP750MCQvwfmM2BHsj+FKtkDOwrBC33gLkUHeFhgZpE6VKBuBu1T8u1Zf+xkA0zzdeaIZQiGI+VH/AlHE+n14t57SrwgT9N0+gcCpxl4k9/jHsTWSfLPooWvRtkGms3maEO2keZo42XZPJfaRPO06bpsM5y/S/3oOzZJC9UKFg3z3kKLtIUdz0t/thbd2cb1EG0juj7LxpIvp4w3BHm2g7bTjm/PzuAMZ9IZdOZ1GYu00F1pOztpZ3rsNejy2dzi2dqifjqHsaBzRXYunUPn3pwx3GjXHjdFe2l2Hr+dVwLzfDT5qU52AZ1PFxzIdvPH3fzR9Pxx/PV9r7ohezw9jh6/lD2Bvz4BF7v5447swvFM9i10IX3LD2YXjUfZE+kieuJ12R7Os+cid1HzXDzemH0rXUzf+qLsSfzhSRe5pDVfot//HZq/IXsy/Tt68nXZpXQJXXogg3C8F8aLHkSS8fgEbsJkTzGSzrfRt9FTlrJ9Yz97Ko3pqddnl9E+umwpexo9DdRzP5feD34hpZ9OT0eWyznL5UvZFXQFrj4/g7M8A0TEg9+gZ/LbM3ENmUEXZ8+iZ92VfTsnfTsMhTxEcL4SP3uyf09X0r+fZP+h3MBm/x/9B/r/lrNnc+5nQ6ftQQn/HaiVsv9I//FY9p9oHyLQZlfRf6KrJtl/pv9M37Gc/RfO/19Ahzwo1P8r8f8m2Xdy4nfCrdJNbvZd3NvvWsq+m74bA/pvmu/q8S1u9t/5y39fyp5Dz8GX59J/o6sn2TV0DT13OfseruF7oBHkNo+42fNQ7Mrsf+Bnf/Z8eh79j0n2vfS99PzlbImzLiGrfDugOQ/iZ2/2fdrc99P30fcvZy+gA3Rwkl1L19ILlrPruNx1ZbkX0gs/kP0A/UD6KVk41/PH6xkLBQcPZi/CIv9BTvvBpex/0v80i/xFo2QPExj31ARGKYCZlYCCEfsjdrzVsYfAJDSQrV7zxwX29C3M8cpb9J7EYHTk286lsTqp1pt3v/Ym3NHih9d+5bX8ML543BHrR3/qiInxVHjm8OpGhbgLxMWOvNbcBNIPrqnaXIZGgrkcpDEm1SBzV81pvp+83vWU3puxUW1sOBkAKossDof/noa4RXPjedXa6wZDjiz7S+fAgQEIQOe75Vxm7CMJ0sk4xhM4Fn66qov/IWT99u8C8MLbG0pzn3oYCXpL8V3KzLvmN+LfmAKz8XnXj8I7Abnpq24x8n5qFOgmwx/+CTKMp+EOO33zy5DJhGfk/xuYkIHJWG6VdEzJwz/7EZQUbfFXAwPO5L6h63A4KmPiqj/P1nvF+/Vt72lZOuq+6pKyT53cH7vfl2Ojl4d6xTRUVSkcYWhsVdPC+D61gw0GuuuRihFJDMmalHsmepfH6fc2TGyRO8A2rbnRgalke9WfX6Pq+0+j6pucomqocrVqG+sUSbWqjzjrr3q5WrXt9VtM1c1e33IaVd/Z3uv3rNHr20+j6sO26rBS9VcNrJtVP3gasD7RDpAPrQGQ485pVO22V+2uUbW7/qrvcVqR7xNOO/LdfRq9vs9pXzLOGkvmdDCkHSDvWQMgt7unsRqr0+jb1YhkTaqvxtNBPrcVIF9dAyAPns5qdFt7/Ra3vde3uKdBQ9qrft0aVR9Zd9Xgo7lyOgMUVB+igKfcXlJyGxXRG1N75WFRuVYaagid8Ck4XUyfCG8WymRj8RnQ59f4bJc/pHDrgDuf+IPLFmS70wS5WHaU8WKfdZlw2UOo1dfK9i7hCmMtaZ9NAktWb9uO9bYdMfOBXoy7+NRS1AiNqOEQhnvja45UtXpOqdVDRxVmxMVxR89WoA6EPKngrX/VuC9iPG0gXrWJjaVhq+92mQV/Yn445J1cwn/Y3clR8EtCfnJvwJ8CzcX8eMwpM99EKCOX0/lOvF6oEKBdIjaYPsMwogCUNS4JedYtV6ye1s7rnBuf7ealj5e73WwgZ+h5GU6bW8Bpr0euwZRh5lp+PKr7YHdZ6LnLumKtuz6vGeWlJVnNpsr1k02X+J7NlAs2my3JQrYBTevjXEk9s42oTB/nUUwfN6FefdyMevVxoeT4WVC7cr9ow+bbx2sWNN1EBF9sRARffHe2RSOCb0kotR8zr6qStlVcSvYRVTcEpsU7sq1WYNqaaIDObeq+lTT2d6bH7rn6Zd2ugjMXFmkU+9lxB39s73AGLGWNM90dd2WLOkkuOnTmB2gHnUmL1yxwCZ0dM2UySSktTrJF7omtLTtD4wLNTr1OfQGlt3KWhBY/kJ0lEa/PyFwPfXHlEtlOlMPxwNn8cDYqOJCdo+hwLp3FfV3e+8b0j7CnuSvjUz2UJVf7ca7xAtyRjncwADqHvCUJJE87M5c2Zh2ay3b1i8C6+iUAWi1yXbh2xnW8eElAz0/X4umabJexQOkU0RoX6Uy51L1LYC+Qgf1MQptoJygJpFWTmVc9fnbCFY11Es9n2rI2j9kDVzvTgTECPAdqOV0DY4c8PepAz1b2/fDfvH/5n37lzicv89nmOdw1jJPO3r+AEtXPxEefy9U7IenRlfxM+y7XLXdhPJTSmZNJcdv3w5Pl9H5MF74bG8tNIIybqKOQ2IWfXTLpIei4IM7ZDJsFM52eTCf+Nnn2bIDnFN58NvBDvpSfC865CyOtLSNoEncymBhHeJIJ6LiROzCLdVep20MK/yqinkGe0Hpy1SZwtjzxeu6CJSiVSOln4oBZ7VJzV+H6gXzH6xi/d8iS+K4FUdfx5stH9DsNK07TxP09DyE5009io8T9m0GStFlA9sK9E67qLl6aLi3olXlxHacOJ13JupIv3kqLljBwNwHs2poyvUZ3eYYX8f284tIa6fl6Wb8jm0FNm6JzkUbbkBbIeE5cenO+QyCT20YfNGj3ogdv5xn/QH4+D/78714AIZY1wvgcPkumKxdAoUvT5AGQM/g5g+b5iytfZmkzktA4/+A+6rkEfOhm5xRzRmcxMcHEIQFJtB21cyPw5Ypf/DHJ8Lj6jDZxwHU0ewaa3UD8E9A0fs7gpmYxwGzWQx954oNi6IH+zCozPwNv7UClM/BzBuf0uR6jjZ+TBYS1DeUhZTyvGJ5rQLmBAj1CoI1mEjYTfyN8myZORnk9sy+KzHCyOdY78aET6A0vJAcLifBDCc2hH6y1xM9Gi6BKohZEdYKWz0VvtqD5nUvkmnbmaQv6t2WJZjmjdoM/B2Xv+EvHfJnBlzOKDuLLLvPlXLR5LojfOQK2pADYAmCzcDK4FTe8d+FnF52Dn3PQe+5aZjADk5eh4/UZFJzZRlsPoPW5MRhsj2saZbuAM0ATWddny7oWbNkEbIFQQ3Pw+dopx3lOOfxd5QgXUO0CKLe/ZuctLbOdr5IIh3L1zZWpcR6sThEhknOIQoPoPdBo+MeyC9Dfkha5FD9LaFHEP6r73yEjWMAIEhpxHz+wxzVWmfzSxtDrpq+LFBxbYWIzpAD+iPifF45dgBSCU2YliGw3V7lIFzw3n0U9QF8aLo37ko/SlWx3QgkPlMnfbgTWRDeMBADDLbFJQ6V4F593nLIjO5/6UhU+5GdljwOumJQ8QOazBMB4ehwF2lp2fsLSQ75oTqhSOv+ufLd5eTwtmuOqRXREn+lxnGFCi0wm8idMmBzzMzjY46WnVCalvwvC+4FsB0bCvG8HD4G6JCLfezW1b1ITaLoY3pjgEfXw0zMTbBCjkC3nC3UXtIqLqnC6sh8nQvBx5nbrm/Hfr17KwosA5py6iemZjQk8sy2A2kg5uxAZmARtM5QaPT9AW3DTu84v3KRG3xNDOxK1/VPXEi6yWhpnRxXwEkOTaC/9+Mvq3FxNwc2Z1saKkcTPFkYS7A7oa3Oeb3wk2f+Vur83HYZfZdCX17mFxScLcY3v41nZ5rhmQyRRFL2T14EBpXL1/75X1pyPqup2PF9Lg3GruuHyL1K3xGOmvDGwk7PrJmM8D9nAZ1iUJhaXghRbKKzRnL9Gc37uFc152pwnza1RTcypVEvLvWpPUtQZ59xBrdMfe2tX1if4Ha4lqqFv3xRXBa+vnJZfqDn4BxqDV/ck9znF3uNep92VWB2lrSDW11CzapDpi2QL0Ue7ofc1wudo4OdVenr04yf+ts0bm9aCunUWaq6qVcIWv7P4MX0GgqtLAraHYRVEE0joG4AUy5PiGZ5KHfNnHX6ozsx9c7r5/qJDJrjcnc7Uq8xMfFWS0N4Rx/rr1k8bCmDuFcHRbvH0JMSr5RfAIvN9/OeXvblprqjk+adbSVxW8p6ykluch9+VT5S1XHm6lVjoLpeVPPvhV3JbWckzHn4lbykruf7hQ/Z9ZSUvfviVHC8rOew8/Fo+VtZy52nX0i9r+WRZy6faanEa9egyfGCOvIHTuq4/dewVa3lZHHdQMpHWGM9zpiStVfzMGlVoSV5mub9Gyc/edbKSvCzWKPdDHzxpuU+sVe79a5fTkstzxr/mbeaBsXDgtFPEHz1559+3Vif+7P0nLXd8rXK3fuCk5T62VrkH33vScp9cq9zx4yfFjHvmNJjShwz1vdf83ml+7za/N2s+737zfqNb+pM+riLPvi9c/OWvPeX8P7/0aEVYCyuaubChmQvfrVzOuOQk8g6wgy1dGP6jWy9Wz+G5iu0c1DzX4+bQkbmSieG4oanS91Fhqck/lRLfrynxdV6UwZcNg7+3ztM9//zykyD1Kcbr63h9dOE+tjrw6mceEbKVRx0nO+WQ1eNmUbXz621bVcB6riCnQRTp4/3iyzmy27bSh5yK0/e6KoQX1yU9HoP4/SAXo1lChiww3txVkNbjhz3G4tZXnHxQnK+Z+Eo84S6GtuzJ59vRBt7f4k39sA7VtwECkvvO74a44GUudwWHerDYqiODAlFBOnDWij59a7unL1x9Mb7i/Mq1scBcGwvNtbFIhgXnxVms0ML/RPPqw3P8rOzQ0SnCRQWjPF+bD90WrSlsuOPPb1D9qRkJ7MZcCJoJ9cafEbKBXpdU9UYnd1vacev8zq1KAaWP2tvnCqRX/TMI0122BWMwHSA4RpCIf5dATAzl8G/DUtbn3/fx9A8Q0o1/hzql4sojooQd/7a5E9qn55ypKHOnyjWIjpshuTKnDuhZ+TmbgiRsqJ32bqqmMXUIvgFYYLWq5NvKDG+/mD8kBZFMNGO9cSfxtEqjkK5+BfS5flRSjOIS7X0N7COZXM/Ix5mrvF2DxeCF6egPmg1wUcUkm9apgRDgalZ4tWSJwOTMpvXKujlaks3e0xeE9k+zHwGuoOI7H0aDsXUFPoBCLD5a9nPHXuj2ypdsytDDBxiJCug/6NQvQZoTOnf8jtfc2HZCpzP1oA7ii07u8SBcOZfwsi65+o7qE9A2IOVFnEBd4Wuutq40xE30OzxHA0HhHow/mvTPioNuGX+smW0WfpRmLuLSIgTO6SJVQUcvYIqeabpCNacbVHP63VlXqWY3gT6FuJMcJyMotFTxqUqHWjpEaTHov2IhR2gBXBUQbM9mhX5rh7JQJQt9cVU80Zeuyjj60lOpS18C+BFhaKkosJMFhWxGLx2sY3QbtH8bEtpAM/y/DTy6OS29jtFt1NIbAfcNNMflN/L45qQz90hnPlR0pvcwO7Nx3aCe19Lz2pmNXH6eO7NROgOhicl20Znuw+zMvJZeR2c2aelN2pl5Lr8JM4/OcDdoDigQFCiwmTbWUGKBBEW6xfuiHCfPGQs4dx2d72nzPVgXIyZor0Radx2dn9HSM1idPQq4/Ax3vos+uaZPatLexXi4Zyr5rKNfrtbsJkr77p3L0TuXe9fTOtbRu0DrCGSxy/gC6R26cq92RdbUNSCl+ZY37/vW1+3+zI/8r6fixmGDHB/n2u9jn7RfGB8tCbs6/ueyK4g1VyNQIClKTgoSpcSoyLVfALOTvFplV+UuahPn5/wgfmXmtcDtc7DU82iaXHX0StL9zRYA5tkCYLMFYrHfc+Bu/5nW6f0Dc+rCoCcxxX4wnyH3YM5IjCPkmSVd3jilOb5CM8cnp4UMhmxiqR8or5ldST2skSWToNzLwkCbyqdXOGeCwYrpMWSNq/EjV9jGEh3xCmZh17h71RNiPi3ese3t1L0/uvdoPluTz9czOdUwMluthKDuOiqfwP/vn8s37zvv2xb/+jMXLcnFehUKaPPRbKtKV1M0PaHo2DJttcIAADfVANxUFde74+Bg1tUxdwyCuse5jpX116GQgvZ1uhLxYxt1cQ1y3gJ79mhORMtZBp4FgRStqyyKR/8yWCfBm5rRsRu546DIHVNG7ngd8B/uAQaSL3eNvYjHr7sPLuU9GG4yXvVFuhXxNMCxXD6HzUEP5iH5RtpCuKncLfCCPSsVjlJnK4sSI51R1b6DM50p3HNewM9m7THsESALaZ90ym/GS76djdJ1Vt6cT9E2RrQcf9csvJmdjUMSumbhNAEMVHSJ/0Cs2cLJiprTtJ0bn8nc0mJBcWEaxa5byPArjhym0PUpbH4U1zWCy3bu4b6t77x///m4ZyuN77vuPT/0R883mFw2xEvyqMyDTZlasc/Tb145ionZyCg0pfGLerDszF3arKEl8llQmMpBDOxaKJADU2Un2xPKaZY7yUUfkHncSpsnnELbW+VknTetY4bbncOWP99sLktN02ZtkKb4ifuG8QL4/13n7VrM1GzZm+eApvZgVkQECK5INT2Y69bOIVScn62FsNFyEPdPVuLcV8/9wW/8k0LZtDRl2+hoTn2jWSvbY+XMvpkydVqSb0YRU5pHM8vgYchWZmJ25WiFxMkwEmGIWddMPl3spfihrfwxVlE4UzrFT0A40K3+unjMGnvYB7/2srY9LIvWYUVAdvQoxaW0DjGlbkAnt9CtUITlqhBLjA62iIGzh8vrhhesN1Z0g/s06JrsVgs7Ing1MffD6j1u66rZblcPi5WvsfrDhFYrumedgRRGiVbXgC3/nG48b5vTjecX+ZuY2qhtkZhTjRI5rAJx1EOypKg898QMEKnXFDFoduj71cX7GUKK3CwkzJoJt56PcICNe3Y8gr601x8HoFsRJQeyHnFubG9n5Lid+MejHfhRAt3jGbKy2RR+5vNpIDxQj32r0ABNR8UOX3KQ5qh+Irs7LQpXKccKahpqdghgVVSIK3tqGtKApm1VC1IkqZBC7UaR5drxKWWIjlLZTlKESe3gIS42vtmsjuthVKgq47y1WtBkBVa6jAVo5Kyd+dSkSlx55ctWaTJR2F85Ia9wu9/V8ldNqFsk9aD66jV87nXxo+s+hCQEQTM5YLHVoFyBaZmntkQu9YWfeuCncmCL8QENsmkgkTK/xHjsjlh5go93utmUIE5dV0FuTVUBr4ayLmxWtalqZL20khW17y2JdecEeLCZGSMnT07FUO122cWdqxwjvyTr4e0eN4uV/YPXbDZnFdhewJP1XL5FqM1c3kk/NwEJ3j6xfeROliZ8itzF6y8qnT+uwkuADcFB2kJaCfZWs/DYEMi81T7Z2jnL9skKhIcJY8OUMNiQPCzZLgs7FFcBO6GeQYX6Kjg1aOymzGVimgeKs4xKtaUAINxAXbMxlAk/7ipm3u1O8HPC5daPu6TIABSfFd6L190Tdj6D6SxMOqYV/7NpZUpgaNkcboI5alr1YEeNOG/i93nyIBBk3SrKOdRVwSsA289mgU5oUlCui6cVIFCnHdVMlmWbBUBbL6B0FkA485QKeAFS+QbjDXKDSBcrNMUYsDLhhmgeS5nSR2eO0mKO0pY5mjFz1KGOKP5oozQ9Z4kHINc2PZ322ekjsa9QEs6ifPd+seFXFqbqLFf0adBHeZAZ6rIC56SuEadd6sphjQ+TGGV3SMg9MC9st9TqVvT2m5QCJE90nBuMhzIIIxoEpqPw1pH6K+NDxOFQD/0AOdcdJ3cyIX85ea9b8x9C6/XXv+qYxdGzw8nL2m8PnMLcxjMXp1N90p4YwULtLtz/PnA0B1TorY0/dN8r2hq3cUqahg9j53K+eQnp4nTqS651nEOlqdVOxrGqoPN+YR3GqYAZy2JLRthiuiZ3Unxvk5nGneQcbtDKknITtQARo8gXf1GMTv4S5DH5Z8dx7RXPIqT3Kc2dglVBx2F+9PE/NQDQDz55euUUjwU0MnMFJmXGag5TAsMUuQozc67JAGRtaecz961uJ9V2uFijKQ2nrHKEX97mJPYmWHeduLgeVJZZEs8Gqw44vGGosRIitHPnHEyMAjx+SB59PJ6QRw+Pd8uji8d75NHB4714LIJ0gBRDQj/ljL7lFyoz+vtebVjzj2RYdlBhUodThcC6DQLrvjtzlMBiSORAZd0PHn55KHb7/iMpf2Ku7z388tB99t1HUv4enFs97PJQePJb1aPTfe+1Hp3+wffKeI7G600HfEKXajMKkqFWOMr9g7Wpn6sxaY2SrsC0yVtyr9Jvr9Fvr6powb41xR9vnLi2Z5AjqhO9zOUet9qtAiRHoWxGv0Dq9J5y4yicEz/b0XCke5ATp9ptmb5oMl2i4LiSa8SxZVvWGx3NureW9XVOS9abTdZ9pFfPcYDflu82k+/ZaqiFM/TjuukFCfIwSz7B7Y2alPmVjyCG+AhxDPZzBGuA4xVf1N5RNSPe9/wjzhM++ou/9OHJvj//yUuf8O1X/vWly/YOmbWRNeeeV+np6U4wLt3iu0vlBLS3YOdnpbXinw19HNB3D7nrcjtd979V2GRIyYaNRoCcSF/bFzV/CfGHrbiG3hYJ1oQzhVlUEe5x51vyuIKwcQNh4+pGBpr9XFXf1EWrmblM5ustsr5eH1OHn9lQ75SNZBKzVOY6mzK28IGRnq1GFlckeji+tcpo9SALBYM6x9TfCdQuPj9X/VZbx274NqVOJuEAWfPYcOX4mt6+AvY2BY1xD50hXy8UYHcEXYvUKToNtAvhNWVTMwQhSt+IOP24mnWCt4GfHot+ddm6qcunjRujmQ/cZRxqxYVDVbKeYCfLxedxqr13be99Y79YnivE0m0vfbd0O+X0LAAcDQw9NeEdFFEwJzkGDcSiFIqcPsW4GoC6lvFJU0bq1kiLAKRDhecAYx8U/pSH+BlSHz99YytfuwVhw1gv48QH6JX5RVgumfprsbrU7ZIk7CudilpnmsbW/ALjRl+8yB8XOHZUVaVp473X5c74Bl7yYqaTzGOU6j6EUxl50l9EoST5Izd0+cJrwv5K4NQI9KhgC/+C6MzpP0AOqN1HzfxyjVPnvXcd/UAW4H4t/0X8p/7SY/IZ1vyKHUcsweCLkKe9sUP8dzkMQODrOzyY97+Pb2NgYgc8WUNPsTwBWetnoZ7RRyiej7jzeQo11Fe9J8qtrCE8dA3fe3M2pW6hpjHd8CVMI7PxhNaPBhx7nWZ5UvINxDr59958Vz6n+IerGzSLPHOKfB/Ip5GEg1euxUO3PNpQXm7qjUOEHUhJco1oli9p8FNCEe7iRBV9bpK83HV6h8RhmXpokRWEm8yqsfQLkERGnYc55lEDmirXOup8K0BGxJuUYJM9jc70fXmPooNPGzjymZwlboYiOS4CtAA90D9An2LAG1qoEP6jlM5BRE4oAUT75t5PqFn6WaIoC2P82PQjwMEKdwKdo1h71huXsfuBFiikErLPP1JjkPxfz4MHLR/o6kJtzatwIY8IV7iRwD+Q2VFDXutqDIWZjPq9oD1AMNP1JONlqRdAuwDfgPoH8wQ4lAU1gXMAd8O+43Z8D3qePvAIxB7gBEsQ3DEvWPfy2Ev/ESjf95tF8OlL8mnN2kyuf5JcblIGQf/Zr70Su55gfPxnYf0yvq3Lzz/0ZyJo347Dg866+tfW2QfRlpxFAQMvy/sLmSOA5ofIzBnFBqA04IeDFJaX8ke2jz/zu/U+vnZ1H/8l7A1wT77213sJJvugKupwzQYz2oEvgy51VPPpyu2bPAFlxHP/IAgnnsAahyD9guEjeUJaiifJBz6I0LTTuA3mQo7F0bLgwQz1cEFsSIw6s8YH0AZy8TpnXjdSH6/z5nUTDfC62bwukIfXRZrjt3wLzeJn6+vzbTSPJ6LN+Mlen+evx2JfBJXYSBten2+nBdr0+nyHJAfV9s9AJbjPOtJULfGGfCMRZW+g6OacXs80yJdOSu030xba+oZ8C6qUDFzxApkB4H3rzdLMLGfgzBto681vwHtYbXZBm91AadnsmfCt9gYuTdsofwOP6QxUlpnKOPHMm2krZVrZVFkMdjDE/eVucX/yTbSAYgtFsU204WbOsaDFjC/GGRDJGWAUlNiYxxQ/KfWpizmfwtsUDfA2wEmyTDoSgbZdvRDbWTI6LeBCNiuIkM0JFmTzmHcN4oEZh8hsJns8r/MMqdJMsWumFqNxFT75mfw0K09bXp9v5ZdFednGT308YVYyGaJHC5jhnEe6kSfapM3ymacCdcsbuDL+JlO1UT7P0AKmeANc3OkMmlJzWgpgfoNmzGm7PHk0X9a40XzbQJvwZIPyEADjALaO8JNf98IunFPIn2+WXWiWnQeu1AHMIl12cbHsunJdT6lKluh5E1w32uU0kOU0UOAKag4BwxH18JzCPHUKCdO6uNDv3ODbUAEMBbGUoxlAcyOl+JkHHCQLITuhEklKJC/SRzzs6Tfk00CqecBwjoKb87mbtSR/HN3MuDFXQ7eBiAqCKwmwByZLkQ6yK5DDG7xTdoxuVOEyI+BAkBBBsBKlQr1lCrThosOlfMBPdt5T/YJEdMLglcIE6XgqS6T4OFXL7+LYDgR5iL7xnBXTebMfwaMkJtNjOhq+xM5j+G2//3PfdenNmEqgf6wz2jUks0lSPcGEnMFiqOlAMo14hKnMbEoDHqOZbHMQRF1O0kkrphVTNqsEcwM/6+zPYWgG0acxOsy+TC5twNCn+RnUCuWRc5OliZt1IRbUdlEpNV5xLxz3ZT988+u5nog2SCWAmJC/LeQXnQD9mqWNReZZziwtzmjmjSBs6AfSQiauijibecltAwUjQRwlxshGCzQPsjYvtaK+RRTbqMU2gMjezDk2VvFNtz9qnzGkBCDuEe7AFsSuj7e+JWiyvU0x0SkKlTzWGf/Kp4THOgWP/SDW9z99pspjfzkawN+oC+7a+JutYEj8bfP/a44xpIujB+zM8acy9Xj2YNYHxtSZLJ58oEWBOylossGdacGdGRx4SvZZLXgw78iHDfggpbHOua2DkryRu3Hdi3+AnSLMvy7bpCfTMNh2jM8KR5IcwT7Y0VU57xReF83rFtqA163mdRsN8UrmNSMPrzn6ZBBuEaixXfgzc+H8DCKl8lvxc9br852vlwnNMeXMWV+fn00ZbXt9fs7rMQ5FTckRSTfQyrlU9GYXhWXqeWXq+RSUqReUqbtpphgI+XiSHjyO5pX7br+Zukziz3pDvoOx90w6+9v+9xPf+uSb6Zxv+4WFb2eEps2mw49/ff6Em+kM83ln8Xkany98ff4tNI9xvCFfQIU8FBYYuEL+ychAjeKb84sUjxc5x+NupifQRYrHswI3dPECLs192kGbuHRGZ3GH0BI6JC2/niHFULqZLqQzzJed5gug3MXy2CKFFyCy7EajO7XRaf5wAVdEO7XRjWWj5xFDHx2mBToDws35KJaZYpx4Hio1kshcWexcejydKSPeRt8CorALxbbZ1s5Fhdu0mHFCYLklz0sKjJ7FzyzjVx9oPMTPkPuWAntHeBtxkykQewpvWBGpLGO8udji8EqvLeNOsYw7xTJ+j8fPf1Nbxn/vBz721Vi4N4w/2dFNeubaKwzQLEEJpnzbYSWSawnFX3yuTig+2uXnH/ngyyotkIPdF8p2njGQgzsHCkVXNl74wSr/PnIk8lIR5Cx9QLbzPlSnLvHPM/Rnv2rlPHQMm0ZVo/y92cfwq1e4qvxaRSvAPUAv4DmsohI4xhqBcNxRbQBUALAohP7K5RdwLmyRc7Em5DZ3utV60JRDMVQC4Gdg9bIbhKHckHyKzD4BvC5Lwc08MfYutAUxehvyVMbMnlkrIOoAGhlKNFQNkAPsmja3IaAKmLGqAFjGGz2A5QBGsk3RsiIERTQw1kp20l7z5/VJ+1jLpEHexJAtxVZxVpQWQ6WX2No6IN9qy0TDg+DqY790aQLyKNvn9MuYB2MenWyQS1D7079DIhUqnne4LiRGfOrokQwe9yny+Lxp1pDw0peOJ1oiF8ikeo3C84eDH0e5ij2V99AJDUQhLCXQwHiqjnixXIeiQOhk6Jnd4bNEvxFgD81ZTSPe+AYpiR+/0ohWHcCjaqEWMD3ydGp89NNH7ei3U6vS1yr9epXVoalihUJ+SZKfCZyw4ns3LI72dMLEkbwc4Pp5DKB1yVvg0uPR0vja6w7kPZM9zNUE3lvAnfqEoEGhiJd33oPmWUCf8zvrQLynZaHSLbWz92G4w68qqaPNUN5R22VFUg81XGnmMeISXUiw1IO6IP0XTLzqjmKbPD6UflE/YGm4T8sidUVmWou06vLN+YG8SBp30q+gJCpEJyisd5B4GFlYYoKjB4/8YLJxXSZnzuitdQkEsihpDHV1kSzUoXYqQ/VkVB0e6tdQlwxGR1t+4Xa+WH7jucgc43KxPto8JFFUOJxP5RWKx/IHz0nWqR5EDhEHznY7T7R8xrrUM9U+1dSL6lwkFt6PK2zjtT9xuMY2PjDk5995+cstfbB5b3prPe8vrM77a6m/4VDE/gqnXlLTrYWrdGuY0CW7iygdPiop62QJr8i+jLlPPbHfAXIwBaYA4SIOlHpKaI8OwNiH1Y+ZwrUW2st3Hb/jJUqehzSAKDoifj+Yi/PMVD3aTlGEbc00Rbovw34ln8Xi30ADzoenOfKpa6RMRCdI0OF8Xr0+OViO2Wbp8jymaTNFkJQWKGIqjadFfpoqN/zYNZgNf0QzdsNvNgsbIFwu0FYjfWVG+rIi5CK2/Ysq68ouP9+i8repYM5UoAUp04qqFWh22oI6uGoVPYdQGM9jUua5ktFStlkwagD/ljiXmgVAQhoKGMRgFqKMgw3ldnJ4SNkOcnjAxoF+mJ3F8GDtBHvyGnusNLk+2ww+rGBSHfhZFDFnRJccPEHQUsBtxGtOQ93vqz5sO9JmVLHCgpdu6qnYAbLgB7k6rZY5h3ZUy5xryuwqy5zHZc7HjOQm4QKarZbYfTPlKkEXJR7PJZ6grRRlWDhFmdSU+RZT5iIquvFELrOnnOAprNBpk5mnkiVUIgiOOdE5ED530bn8shMy5gX0+JvpcbSb389hIfiJN9NF9C38ci4L268XSXODAEr3kmaizcRDRt6FgARc1uAK0U5uxeBKvtNUsBlahZ20S/EDvdtDT+AOmELn09lvyM8uCvG+hLaZdraYdt6Qa9lU5eRdKjlXO6YZDUqjYwt0jsFBUhzkSdBi2p2ttGC7s9NkPbvIuoBOmDq3mDpZt2g7sUBaWwT6GNFmcP/NNC9XTQSpZ4HtbDWJH94a4WcHnYGfM8jBD+MmlsBZtAE/UASNgPRnYsWfiSqUquQ0AO1IhWhwtgRq/zMMjTHEBV+mS/oxV6EfO7JhjXgM68RDSYalF9D9LloiMU8ZD1N1M0icxwkbg0a1E6qywmoecvlcwEBpbVF76BQNoLtXzfZ27gNDg5c7/wwg523HrnsznrGFPGMJTzk/JfKUMmQdeZoduwJnV942GA1exFsB0lgrOYNfGiKMcCiPOkwHVLJ83woMgPBmRnwzvwOQPIP5jC4Z1GBL6M5TasnLNLmZYagCP2rBs1GwkukcoPPrFXfRS9vBqNJB3nKzjpsy2nIzoxidTcSbUDqHX8rZCDEfWnaBdhXKoQUoWs30GNwMAZMDNIu80D7cYDEV7Zs6zqVtRTHejJbzaerYXEFut7iisB1ouV1nliTkc4Fv6UP105+oOP2JCl7+uYifX1Y//WlUYvAkj8xLZJAmPXy0PO4JcdwTFcc9/BAac9DG0U5kjnZsB/7v6g78bRrPlYqmgIWKpE2oUHE6UqGilJfQqOihxk5FlEgkOk0X4gQEX3Qt7xeSBMsGOLLLRjUZYliVIUYQHlL+wZrmH48xlOcPJ7tGRJilAY0O5jFybKieF0AxBXGDeR73cSArHz7f4Ig4W6DQHFJvwuKPaUFxfIGRNt+iK2IrONQCtL/bFLlZWiBlJjEjDS2WsgKVlJ/x1XCfnHI+QCikBZO4nbbzcUJB1He8Qeua07qUsFJJrBcp15y0vU6sY9qI44RF05X5JaakmbxsAuHBaU0KZ5MxRIVY960qTYDnZ1soop4QnzNUfsAynjK6v5BHBimCcCWGfzaCGIfcRraTJ/VsBts54klys4oXm1i8WBh3CljSCOLFORQbRauDpzkzeGYeeN1oXnfw6wKTUxERAOoZfDVnWRAW8HVaaEEJd5hv00bDxM+n+UJ8gAZsthAeqJBnHvcGPrOjOU03pzhnmr61T9/jER6IZRMzbbvpca/PLyima/cbWCA5Q0d0A48DlbK6bgdY/Q5TYhedx2JCUWIXbS+lg7xoBMO5UA8bWaYoR/U4+hYo3J6gHGRgu9mKGecbzLjAYkZOxHcnq507nztn8p1b5NuBLpkK87JCnG5ql7ZXukTQEuZ0vnbprKJLQD30odEaqDW0naQVZbYiqCIhBZkzzJ1lRbvp8bWKTDXn0a51VGPiiy1AyFhgzC9M0VUYBhZOwQfpmfg5kwb4GfAgpoDQO/Gzk7Yh57ZCSXg2iMPZulxAP7YJvQGpUdoygJCxs0JuNiq5gWFZzwgZltSclW06JZ0xQ1ZSY1bzRp1yZT6cE8SI2dIfg5uZ1T8vWeoLfpsu+A12wRtJY0S9Jd1BjflEWrYGZ4EUnMnDyDbxz84lPG3hp4E88ZkwpI8FPM8Q6Dqe+GxAgO3izUgaI4pV0ohpU8HDY5rBYykyoEtWyHBQ5gBNI8ksfQJHV1YcQ2BZsHUtVOrK8V6pa7vIXUbzf25RAW3TsjmdW0Awp61MuAt5QPCKoLPJ54vNCXT05vt24FgJe5Bz8BIVg2a1tZtNWwtFW0Q7GPOxeSg+bDGdUA6ykbQkCzCLfPAr+K5tZ0WR2BSB6IJcVGC4a6azKgCPaKBCgiJd+rKjNUkjLiSNuGD0r4/5+Y01Rt+sxOBJHpuXmEYqaby8IWnEhaTBDyHkXKADl8x6Vt4w3XjtyuFaN/45WtWNie/HfMgV4RxbjmUD/kG4QTD2SA+l0CVzwOVm3BMjWPT0nLpPCSA5kDNgPA0Fcn2KWCKmocA3QTjKBIfdOKDrUcf0VlWRrHmvWKygsZF2Ih1DPCdXzVI0Uj03H3A3Zs398Rl0okMzqHKGF0if8yQ0JQZafYRPdylgmT0PQb1m8YSdkXZ4Gq9d8wqtdmLOOuf4cMcwMDYaMU/zLPiaQ1XMEzIwtx0o/uAlMhlhWTGPc3Q+PTfA6JaQ6IFW9kRZBYCMXXs07r5ACAY05wGl6l16xKOmWfzM2gP0kFwq1LzR+IZMneNiwvr4QrhNpAeDMmnVqYooQR9lgtDnrr6/Dglmdsxc2UlK/j7yRxI1bGhwJKIOCHGs6NEFpe5RF13THmpXcMyZD/A8xEdooLoolpKrvgmmMDhXpnTWGBJNw5h1lvqGO80wpGVC+GlK58Ns3WdkSjg5keRN5nxtHuZA84D96/M5gF72u5w8Z4w7Ij2LGihALQKOw6xXRUIPQ4KGW1Q3kHsdLEceVtc8DShVt9XZsHKSP3bFd/wUxreB28InnPvpIf8syOs0trAJZ8D4BmZ8Pk2Xez8Y/czo/kNH6dOsoYCRjhabLM7SNzQ+JC23BeVGltaHJPlxVid6Nv46NKQ8MEW2o0hqisCnvilyhhyTzpTHuGqGweA8gN5PYxyRYWu0kzJjTJNQrEln4cQQpHuTOcbP56C5YEUIdpMwF5g3VTIuaZGM5k0ts2giQiLiX/JEUk5nQMrbjqLolM/FS+ueadMPtGZqiIp+EC2gae4Clyzzo0WtXLECi3EGMC6W2RSQf6q2LqF6x2RPq01dpCuwp/sfWIfgya+sPrwHeGdcqiSFmuV6xp0iKQZdE/TvGjSBeaxrmNYcCL+hRS4FihJv+LZ/8L/lw4WFE9YKxvh6k4qMStUKkPpV6EzDFk7h74JxyLYVhzRKRWXNv0v5Qsh/hi/oYg+L9Y/w2ei88gUvS8gt+IJa8iTUV2rYr/GFpJUvxA+HL3gU1vjCLHchKPlCeEq+ADIOjVM2UB4RG1uCIc0WnIFiwx42lORdKQnIP67bm0Nww1eQ8gYesm+q03HDWHAO1oaxMheUQXWAwxw+Dm9eP28w3MDwBsMpJJdnyC7ocKzw6ll8VA6eQCGg8+Ni+IEOvy+goMDIc0MqeHiX+whh7AT0bIVJDXcIHYy0d8lHo7B/yDMqi7jBIpQLdNG1XskbEsWlPq8aNI4Ow1yqjxXFo0rJxexm04JO07gT4PDPFLrGfMDwhFlAdAqAntPFsbE0jwLJ32AWN+AE3ydv4KLFNniWuPCs+TyQzygIEg68msZqmG7HQz3PHJGLccAcElcNXgL4Gus9fhc2AJ5RnhjM85MPTFVOoexAPP6pAZCMDO3S1AGkdMsRIo8Ss1yHvZFTYpPN8L7X55vRfamwN/ZfqOpFYGXxssgHJQBk8b6VX7rmBcYrxOV9Lt/XxvM5AzEoVQEprs2nFPvMntYH8WYTk1TYd4ES51uRARwqNRzH1LigRH+xMCpB5dC8w8QwMDO5GVvKLWgE2Kz1m+IbuCTXsblWHNPFfQtN5tmbYQeKCkMyMNLsyLkR62vWVMdzreFJqpZkQOZhg9Rbu2ml6z2l9j6ep1ppfI2gh6vJflyaT/eVxk8twZWDQd4ZXY1pOesbDK8Klkqk3YDp0+ExxM0EgQ+8/8M3a+bQ2DgDvTUlZtxmichmMla+YAiZVzH2TWY76DPJp7GTfhW602okhZt+rriceL+bfNr1nEMe307UO2hXG2er8BrhEf8gqnZxezvQPHsRtbGjd5oQm4xtXY44+ukW87ubf1727h/5w7v/5p//iR2bHEby8V+4+VNvfe1P4/3F/Prnn3jzz/HfP/Drtfz64C99+H1/tvKJL/Dr8/n1jzjnj77y9/F6lZ7kUzDJg8Y12eCOzLXXZIvgWeRPcr+R078jC23OUBXDLt/JX+au4Rblg9drgWvfuXdirtg9T/770ocncK5mbkFmvg7wJhTzjUu0t+2dmCgcH7x0UqbdxuGkx53ki4HXvQF38cgBNF38XJV5+LkStQHSgUaOD/HzYmzVEEA6xs9hJ+vid4+Jc5clOkF93ONjeot7fKBb4g13ZG6p56l4QkC5mxzjgfVifhTwpPXwIFMNQE3dkaUWUCmaw+ymerCfYqohLO/X12P5VM3r9JdKr9P79k5o6mjuXuw9P6nEjVvlGda4lrqaAfcfh+e99ye/8AXuVPdiHrgptqu1GA2OT9qgT73lvMeAp17x1TpWxUvWM9UuO7kOY8zDoP55nUsWMFp+gTzcB2IgLgpAksCRTOV+YxEXPoHscyAfmCuQw0oW0zz+o/4CjqWg6DqQ9xFcnu9FDpgI3fnJju7RRmparFeIeJ4H0G31Yalxe+mxNtV5yJLmhyGNgL7HXwR6QFOTfGpC8TLFPI6XxS+ghOMOxzQs7gz+5keW+Wkvdyt98oSBxUtlBTvOyUrOBHfFTMbeSye4nAfRe5LFxcW7gVq/9oyI4uDG3tWKWohzHCDCt0MM/L2M9X/1iMlK1E5V7nj1B3/u+Cu+qlTFkpEGVcErqMo9b//rX/zdt//oD53oKFn503/8rQe+fPvxL33dyUrnNQ2y8jUhK8hy4kWZX5IXr0Je0OJ6KMwR7+HAWgFqQW5BDS/ZxSzcbh/vNI82DMntAKtMkpL6f1mL1t/znjse/Pxfv/fLhrhjhvjv7zBJj+ksHEdfhJF8/Jf+GnNen5Qb3l9OyhPkv394hLT+jlBovf+vh9bjW4XaTzcgN92k9vABBbpe1IS3moMrJK9F87/7XznNP34qmn/8XxvNx2xkYfODufl8uwOPj3fK8zKu58rTfjiKFPIzczFnwXVamq5QduUWSt+bPCNUrnGMPXaGkwzvyak5RxY+LA7xlm8U1bqznWrV30G1fvZzf/3gu370D3/1XxnVuvln26lWCyuxQz5dnvKT36jZOVzOzu+95X0/9kf/8JVT8JTXI/+/fqZy0ul522lPzwOeD48yTjlB+/Vnj/4sA+L3dFogbqbM1Xz3KpsofIPwtOb+pMUZUT3ko8KMUQFgO7XnImx9EanGRQB626cH7OP95tHgmv486Gi47CLTEbfM9NXf+ZU3/fGv3rLMwL/faWD5PU49TNrdDSHxBN7/+E9edezm37np8/x+vPF+J95f/Za/OPL2r7wK+Y+Yyc3cejqQuvAMdORoOeW93z967b/rPYQpP2yk1vsqOff+TFvOm2yfT7wPg2CUGidwIqc1gFze3fUDibYyfzKHLurOJQuNcAA2GlXZqJoVVwSCuDF98R1Z105fFwIBQNo1AkFUigJvz6OL8YXTVBooY1dMKDqKj8flIxiUFQYa3aFIhCFTN/MFy/9bc+4vc+7HT6swAJFrGe1fRVFNHihhfM9vCoxNW7vXaGtP2dYe/CgWtE6zqehCqUhkvbLolSctehOKljHw3Lyr+2qPBRMNntPBslEfaV2IKB7eyXjUY/Qo3eNoXsUXDE2ZfNYrqQ0mkmck6+P3TicbiGzhZkMRPN1shN8HHZU5bnEyI1Bm00YGmTEC6qyKrRvwc20Wq5w7p0LsRvywm8R5/DIWblLkyTbj915HZd37YMWhAssiD7zmeKjpZsg9iY+hhHqTbAun+hSqJ0WfZSyvkLH8wulLFpYXD4zzdedZVSc/PYB3U4nWuJpvxVOaX17hKbXY8dzcXSiR5TBQXULBLtJm8msyWiFGJZNskTbAGTlsQmfgK35AGyc4Jpks50SjFePpfvOlExy8kou7ABthdMdAjhhWaZbRKBvisKXRRrtoNslHMJJg6WzbCu7jwQUQv2xd4dkint8sG+HOyhYWV/f/6f+e/emn/aPZ7YcQ4sLKNQxgnSIVLVysZGxRRUug9r34HfIGweXfEa8D/KYXC92mDReDR0P+u5Z/5nhDwD8bWRpkSnYf/KG5hnOBAOuv+jNTMQOMyCuYVRtrbmFIkE3Im+ReI7PX4PggxsKQ7gZDurfDmDXebdAKEb4sx7mpjfngB0MteMzyCcOrnvKRN776pz77JdFMPFBnOuBS9QJ7y/e//DTej9saH/xDJNxZaeKLBdv66Jd//YO/fOPvIkjqvXj//E1/9o93/fzf/g2/31N5/92C7b3+TQ999IvHPg1th7CYX7znL/78jrf9Pnq03Hi/s9RXFC7kHlwpWdXxra/8639/XDQWR5DP5LjPSjo//TSgkhC1Wyo5bvtwW47bHSMMec2d9gngkE9eqwyUe0xPIXmcjKpfCU9Od/Z8RAd2OSpZJXaYZ2KH+SZ2WFBhkmGN/odKDJWKhxWWFyp6m5Q9TL6OXsxTkyhHjixDaavwdtdUyBBw8avwbgWy5ZitVZ0oq1KQhZUd9Uf+78pTP/APX4DDuQfsfrq9nv1lNfvxsxY/vXIZI7+SwpNC3rLB1rbutH2+szn8JgaZqvasUdVxW9Xxk1d1e5XD3u3msXJYt8ph71YOq/ZyLt7JxUcMXBis4uaVlmd0E8PpeoarSq+YHZecK6qzK6T7kg4+xezKcDS/koVfPXA7bh3e7DO3YGUelwpQIAts1IuEuhMEM6kxBFxhVNQlXxmQGceJgvG72WBVmWLh04D8VpZikOFdl1Y8gU/aVz7A8Vi2AdrR56FTuIwtWUszEFvcnPkS9hsq5FzMKSqhjDTpqrzPrEhFmBRJ4DcD5VXhGh2EW/q+CkPMTUfSDj9BzBTVlMhN+JSqdINPz8cjU5zUCELTyCoCVC4V3I78IlfJ5EiZFxtu6uBXBacJTrYn0FhNShxcXl7O+8J8A6P+79NwZd/rf+3Q/g+/5JmGoxvv+Caweo/CifqoMksHTXR5XTPFXPbtfrLOlZtbxvu/3lvGJoc2ROem3xVFgWWT991zos6aH/xtZc2WkUL/fB/e3/obk49/9nMPgfHd22DV9zTyg1P/xE2/e+ed7/3AXxd8+C/uessv/8iv/jWy39R4X66+1/mqa7jm20ueKDuB33+o5Ksmx+GVthzVDefeO9py3O4oP7WTBbwnV7ltO091lae6p+Spv/lo8NT7Cp4q4mQ9ymsjuvn6mKrl0uDMDVZgobMupnqT5So3NZlqETNoGXLvvyKmerjsMz+uNfz1MdUjtqojJ62qzlRvaWeqtzSY6i3rZKr3NJjqvY8qU7X7Q7fBVL0KU3Vbmep9Tab6IJiquxaj65+c0f1qG6Oro6vO72PZhjLsI49pG7cDk7rg1i1tgCcPVvPkYcGTR+DJAIPwUOWcU2COJ2XU0xVGPagxaliQlYx6WGXU+DRV8uS0yo8D/XCCT1smqACb92kOILFv+Ykb3rX7A/ZIxbJcs4k+Kcu9LWiw3HucJq9ddr9+vPaek/DaOz/S2KMe+UUkPODUE6qb1k99FAkn3EodTW4smvtbGkWUgb/ng/dPPvAX/yQM1q3z5yNuowYw6KM3Tb76y0f/5M91q117v6/+rvz+/f/42Tff/Lf/LPU33pcr7+0MnG4oma/utVYx8BMvb+ZoMvBrX93M0c7A736UGHgb1O2pAdByfMKeytxtHhlL3zsIfcHRgFl/9AhY/y0le+HHk7F+/txk/Q9rQ6lwXR/rv9tWdXeT9b9n8b9c86RPg/UzLn7jWf96N8E6/AbrX686ob0qZf0kSHqPaxj7PUqjLHOP25h7nBhO01VcyHqG2ScqeWX9R3XnrDH0B6Bo/Ovz7338Ozzpjrovxk5wfNXYVjKtdJXrF5eqmxn8FwzdjgO01Ykh79R6WgObe0r+eT/zT6hsyM+i/iOsC7xYBOIhfPk8srq+iLpAlgfw/ROtp443gxPGmfqTZ5wrdVKTPFTn8GEZUVIxX/UnZSxO5OP3Uy1qGtJw3dU/WK+e30+1aGhAg3VXf9itV3/4lAupqb2IGjqKtJSHpgp5aNrKQzOFPDSr8pAKy/kGXAOb5DxRawhH4YTS1WqMfCTykcq5eUqca7oUlKYKQSmfElFJlV/5NHLNljLTTCEz5aFqMVRmmmGS6hgEdKAsFVFLejE1gV8SSFKKaeleQA7cKMCdj5V9/2cWmp/r2wQs1WkYySoxJ5GxSlbvakpWN7lrKDOOfx0FrAetgHVPpylh/eqfguTf7xYJJ374PiTcZ4WdP/gUEu61CT8l5wT32ITP/BYS7m6cTahQ9nO/+5vv/qPPfA0Cze2uNV/A+7Lbcjbx13qS8MfCjpsnBfX3E433exrv9zXeH2gKVDg+b9X0WXHpfe9ry3G8kuOaD7bluLuS46ITbTnureTY8dG2HPevEsoeePS0KncPjFal/whEq6ogdHLR6s51ilZVeeiUCvaTi1YP2KoeaIpWP/dXP/D+DV8R0er2f02i1T22z/ecfPjHTyVa3WuruvfkVd1d1ao82K5VebChVXlwnVqVZQhcKmglehSV9b9uWpX+2loV4G5dqwLZ0KAgPC2f9jGCnqK9dR3HCJjnx7SN48qTH9M27laW/Zi2ca8y/MeyDRDZEMc6yXKWrKUoGhaC0aAUjEaFYJRawWiqEIymjWCUrKkoCmlQii9Dq/KBIBSqlHS8lJJOlIqiUEWju0vR6B6jKFLrFpWp0A/MfimoHXHyoVp6UVgJrjakGalmhCqOqBysZdWkF5AXqxuVxiCnLWsdalz4O1zHiGZF/priOjhPIY/mqsk1wq9KpLjHiNMkSpdxgjQQMTiAS6+VQqY9qTormWSJFbpucq0666IOdQpWAwOFebxazpPWXzkzCFWcnCFhThFqmScdD/PkTHLubawcNmWqvpzs5k/EianmEZH7Vj2HV+6/YNGLT+Tnk7/yfRNz74Yidtwljah7KrkzEd2nJHcvKHglZJ7s98gmPMeGMc0rqfXgfUc8uTfuju//7Kurwft8E4HOlHv63sxLKvH7vKO2/+sxYNH4sx0VKMlN3wW/InCS7CzZObAWtvVo8/bVGIrewlmM9exffviQ5rG384Cz1oJUFUXpe7RBNW+0hjsdMdyxHHkd5reA2g6CC2PqYFw7kkKayAIYsZp2DWMrdt8sD/DybVQe3pF1bOWdxGQO1mMThMYhpHOijR7rmHiM6ojjZxCW1U6pW0SP/bMwcm/wIMUxtgWHwhsKedFIiJlbCAhq8LIv9yWKHSK/qU9eI4llkUARn3EjxBcZsIvfE456J1aAcNaqoKE4BEM2C7pEtXjkWjJhZuVPL5XLEsD9ntmOuZRoHXlvchRbqUQFCiMr9pGloA5qVqKIlw+oVyyJo5ammacHP7yc3qFogtrvv76QuAQGCJ2KQ+r9FZmHKaTKPIBCTexxVOwZQuwZ4p2GA6RAvTN24JvdSI6ZW1FfFntQcnV4OrhSwOnXpRqkdyWdYuoeyGMj+HQrWRT7M9jU+fhj2WdolEsphcdMeGOfhvDQN0p/BsOXi/tpers8T1EiwiyzOQ/DTsh9nshavYm5UJ7U4nYjA+ctnYMnDURO7shii8iIK0bS77wLYMxIRHw8mW16tsEwTMPb8jljUeGjEGIc4hhEL9RM4JCF4mMrNEszK5NlTaUNhk/S3LK5yfa3H+ZPK/ypZzQGygCXS5J2Wxm2/e2T5fTdAITyuSqnMeHO3ARDXtEhGzYD9vJDgSHozqkJ+jMeC4L+kT8/JUHHVp9ZrqckNfMfNoHn6kui3gF+gciPnRdpkhKB3E/vNG8PMEF+nyXIR1y1Xczd9ANINVfXDh/5XdObowWB/vDETOGfX7qc/mwlL+Yqfa9p3y31MObhxktNBX9pU9ITyF1nLoe9SumbL00/aLL81YO//ROvecXLkOUBl98fkv8+/Aqj8XDTY5rRLGmvUivYk+hARPVRYzz7SbhPMBGSv9IC5Tp3AFk6xvKPuzbFv+uhl7dS/J/rdhUVA1yREaof3KB3/VylmV5J8k08zUBJfkj8UBL6QAl9YAh9YDf7NQaS90Sg84TW69xSrwTrxMAV9Jwz4bdGrF2k2NNa8/R3ly6Xk8hk8T7wwJJAR8ew/IVo4+oKwKzbpTwpV0xf97V9bJH18xGPP/eNRjRBugFqZBbSgLDb/NUHahHlB2Yhmf1YH/0wug7dMmMtKd4WjIUl1H6xnjonlvO+8hmzUPq665poojJFVZ2YL6bjWrsp0qw/qdRvakqMbZ2b90tigcFa0/F+wbgWdBj9ci1xH4FpXEO/Tn7Gt7tLY6/KwPp1G+S73SXduFO/YGKoC5+W+RMeNTQuyg6FtZpajEwxKvb53up9flfST8LuGDfxh0C+CqpsoPQmSw2Rm1JqlE2rkXQ2o/jJDKd/q/FrGCD6b7FP7dNs+lFhhSBzM4YtzpGrypvM9VQh2wNb7GO/0dcjmhpbRAbOW7LFFiVsnS2GVbaYlGxxYzl52TxiWxKC/U0rr0x/Dl1L349/802McmCTYE7CEzdSIjxxRHP8s2zYWo5M/Ymd90neL5u4BiPK5itogb6WL9l8Qp5qT2iKhsRNzptqrRCnGrWCbxYeKi4FBy2CELvoYm9FoSObBd7RMgc9H0sM26rJm+2J0/gGrM23OFNHZRFalp28JvRdoXHeIWOt7dqrawULvrDOgn1d+z6H9kZo1opmLGiy4aCVDQctbNg31CMkCAm//bkaGw5XseEAUHQhdMuF0xOeIm6NGwcVbty2Ranf+5MrJpYbA+3ziMIqP77XbrJuPFFcauNsofJoXRvpx/QZazqPK7wZ//3nvYaIRSbh3xUJ4Um4t+LFn5XcOyxEskuVe2P/x7Tkraru/4dic3er7vY+q+YUer0tgGzLeaucVraUSosMrSrmbe+hxiXHrygOdiguGZMVG379E/jv801pAaTDbexO1e7FA9panlVqkZYhXgG1MKnuEvYG0jHPXig1j4r3xz1MjruE6XBN0OeE/Ca7N77e3vnRGmfyC3b/l3HkMaN3eTGEIoOeRFWvMkmDfwcibnvAdOGTgmDAT/QQv21DFfWNZ7jOsmfv85WXy5AI1MNzx2zWYs1/u+QnzZ93bcT1Ex5CHH/PU00dnFG70sOjgUpiVlwfEUua/LpvVpy2kkUorKsqKlZVegK2Eui60fF69vYfYNDF3g2t44vy90iYnDepcnJNKleq1rRScOPKrhKMU3cExa5yb8Xo38u7rbtK/lK5WdfFu/bMLNFaw3e7ldPI9Oct9hZ4d5/h4yW+HfYKfCusI2KIkC2K9nhtRTtIGf6YASeGwfYNwx0YulbsNobG6GGkvTdRKl0JHUip4bk9GlWZWyan+QTH5L2JaFTz3q0UrfBBb/qTyCC+AThB2dBmGsJjW/FWQHh37lc1EoUif6/Z6EYyM/k05ibroVfY7jIbcPC7or7/NdnyePN1Wb+aK596ebVBrqNVF1ZpWmRt6grHnwba9VSpixBjXWbe08r+ufWJ3hRVVMt7q5ANndCw9hP0xUnWQEqsA48ig74xuWgbHvoNuD+OdMO1J4YeflVJpgu27ZoY9E82W1gixRUSCvUxp1x0sg+8yF1UFJ5Xepnqz57kR1zX7JCx+nOvRPz5Y+SuFODduwy3Yccyv12y8uuS1amPt6U7XKFlqtwYzkB3ooJSG4jyGIDNJnlQlEHAlXBl5TeugdyaUnd3c5t2s5d5sljf+DevqFIozwBrfChZcVyft2fUQf75HKDOPYCNX+PcN9PkqFWHh1TKXYCMaxF94HyiZRfzwJRdJF+FNAhCjhSrlsAoOnDhEqrGeg//hEjZjavBk2WKVKu9kos620n+h+NUIqR5JuSZ95TffOhL7/3wH//DP4EPg0LoOYtbcN2XvfHbfujgXzwkKAQIpr8CDLNeEn5TuKlXhsxKvoUV7Ra6MhEripa4PDuxkl/urXAz5KG3yXIgUiD+TlMKtDIdzpCNVNh6VmokwrAmEQYMwJNJg5FIgz9SV8pEq6TB0EqDegRbkQLDihTYpkv2LZ77iQ7gdpc66lmB/HTZcIGbHCva3VOqYlQA9FXMQ2dL/lHuzovmm3IRclc0rnaDD4nG5ZaPreY/d5ePeo+yoZMPKzr5liVdHWqpk/dVJ+9DJ4/qFI/3t1TQpncPC54/WQds0QyvnftadTEqnH3pDw+3Cmd/HsbAzkIf47KYRk5TAFPAmS0xWGZNasihhj+WB1blsVeFKTU8KLQ1MeS9LsUi7/XwewL2i0aZ71uR4z437yvljavyxn3m8L4PeSPGO8UqbyiuxORWZIwPKSdJj+M30cpVEilX1gALRdUmQ616gLWm+e51ERDGaGOGSDdgjSvSXXwy6Q4n8Fa6GxzNBzQolLrxXjk8vNOuh0G6gp4OnEI5R45WAptSa48wTKwtC7yrQ5hFv1HALCa1SCW0VlGg4DX9BTiamKRHDUwoEXRCJKq6XNWTdOpS70DeNXJVr5KFv8gfy1VdbTTrGbmqr+PJRjorKkchd1WOGhjHFSwTGIEmMAJNcFKBJjACzVqSTFNpkaDvCKkrRqmRaB58o8qIjRATA5JDFlWGyxNisE2W6+qCq83rXzNS3WZVGumkIpKYjvT3CjtJIJEkFcErGdf8hx7+QOE/9ISfXIQDXMcYgJzaNDR30YKbPHGdgo6VcMYdMNdbHNcRZiQyjbOiVIKKoxenDnEHpydOMR94fZ5J5oLlRDiNiXCaMk5HZZyOSDnCuXeS1ZVwL1g6Sd7lOP6h05I0AhNquCpmeCjoqpjhGTFDxIdJVly8DECXUaP9upNnGgMFNVHvBqig/hGfjMxxtjl+R+uOdLJwqXO7HtUzasn35FkOH2rWZcSSFXuV8xFv/Ke/caTtfITcW82RNTedbDHn+LEyYX7G+tdOJMn/cTyIrgCgnmoyL8BPqkPXMnHuyqfcA21D0zy6HIA10+sakAow8HWl/MrbXqcCcEVFQMZR8wWjF/nUavMFfP31N8vnLymI1HyhapgAi4Q1bBKkxxMYJlyI5SJFUBKDy91bySW3vZwjhbZ1rG2ElBFATGTYMXd+xswnPHSnZuZ2oyEBnmu7iGLG7IbNmWUdlJV8j0WKBjY85Su3i1T5S/y6p27lsbueeWf9lQywKwiVd+qAjU0W7RwBSTZXRuOVn/bg0/MeTXQk/DSVaxNOf3Sb2blGMzuTZ6+7mWPtzZQFy8Z2P7p937NG3/ck/23dzfzQb560mRLZtXZycUpPj3H9Ox/T+gGfxxsf3OkvGIkee7RfLJ/99K7yOUg/jGdb5IOVIj/fXkTFw+T7lfm6SlEdIYvkKhMzywqftaQKZCQsQA2uUCDzEt3EgpzWswtZ1lI7sfqSTzkO7KnM/5RSD33H7fDCLul1SaA6JVlWsq20GZ21fAefULc+7Razr6IS/VhSb3zPCxLuSmmVDLTKRrk9ppylx1wS7fplSbt8lAX8e0N3qCA/TQ4w3rNUcM3d5dPO8iktn+b1CexOq7JpFQq9ScAtSkKSimRaoDF8jostt2TNXd2xuApEX/mGJ/nBU8jHB5oYdjpZNvRc8+yp5NkNMWAZTnTmyUvmrDh34ucLcW5H8h95WQB1vrWzi3+Yxr8V2z9FJnhf/sSb+W7Cm70nuotl8Zu/dDcXz12NSP6Pr3j/PwVc2U5yjVqnA+sNz+kfKtzWQVnQy7zS1knPvNXcSZUH0IdC7sKGDZuw8zq7dBO2U4/Td2Qxfijr4mcR0X2M2bGLIzT8Xb5AAddR9/0VjtMX5EGxzsfLX3ufhPBcOq8DY7OIuys6vuLz4ffjc1DETg/MhyyBjvYHcWnauN5IxvdpXn+87UX5YMzZ7vSv4zfn+h/I/fGl15mYPMj4csnYH3/VuQ5Jr6f4F19/F8RuHMMisPwPXIdgCte9MO8e4IfBddT7gbyH0HwubDHdwhYzRG/DQkiX+cJWHdwmxpSJ7y7in56q5zB2nkOejJs3RM4N0SGfxWi1W7OLZG/NZfWO4oxnRSy93cq55ttEv3d1TWEHy1nd3F3JWFc/3wPGPz8plRKwQDKbwIk1VsjXp2y8HZNpLXzWoc7wOYQgwkLJmzX9X8dFHwq0aF/fzPF67taoink5f68aNHooUuMlh/X00hv//O/UNJWhUWKMtJPdp69R7P1/cHjNYsH4nztrlfvYp9cshwZ5Wb+uC9TGPiQQZw4OHl3RarNo7iTqp1NO/490gYRgNnonOmCnDvJL/kEcn7zFwfFb19hqGBvD8e2cUKjV72XlU4LPd79o30/9zn9589vu/997jx6t+ZL+80uPkn9sReg5bOL6Y4f8649lA0RnsbgWHDuqugBEwreWh3kq9n8f4y3UFIMiML7/wmL998k9mvcak967I5u2kz6dwAaO43/k0xe5gOF93hJNMYxo+sDY/T5N87EAR6pXDLEcYRI+LEOPkIOdbO7RkAnAkmxuxw+OlhobXNDXFNDPw4tcscMMdceH9+P6PsQ7evIhh9J98+fte/ZXsk17JzI/3aPGNCIASwzQDUZW6Ws+w3vnfHhAu8Amk8QPl7Otoqmiu5dmOP+x3D2apRaq/Kax2zi/aDvIgyGQ0gAMFXqISd5Lv4YEmpVty3X/Dg4t/4Y9Dhnl1fvYwj93QdEQwkYLk76DISBUCQjZtPE3aIIw9nmuNZ7uFFKUmL2ui8MtxiCon4zRC9708SZ+NJDGtMhBGsYdMsZQeIA8OIacYuxcSu+8XeUfnz0TH1waP8ANe4D/UAj7kPwiPhFAybDSaZYYUCFNLcksmMTjBfW9HrMOqE+bWY+om/6sNjS+0VkCGe4kOEHvLhlG5KN6oA953K7Wl+JC4IXFfUCPO4j6fVTso2Llvdeit0554P3VzpIuV3nF4+0ChduAVV/kj4CIu1cd7gpjRp77pyT4FrJMcZais5yZP2GFTy9p103nUNnN0/p2z5SaGTWoX+a1nxI1bCjcvWMf6L3AEkKyfw1q9U9/swa10i6eSNFU2bSY1UlvqNKfhfwUXUFlvL4+ljJBCUGqhVwvqFxxwzE1v0p5tg1GcLcvK6UHWHQcW0Wv+pOixXYWNmWbn0pgXwvYIqiyYk6pN+ZO5dNjl4k58PhpSn076CsO69y+vJ9Iec3YJTt9bOVW6mMV261gKfPICstxk2UIBXflCo5S5yH6MDQCRc2kisIqB8dAWmfsvb/4srVmbOyg4yW73SlnxAyqNvJb5/GehMXUgoqMEHBR9JSUG34JpnImMFwFln6I0XtPx1Say4V5sHY3hrauIbgAL+8FdISmlA6DjKKSFytRfibCJ4g+G4T62wcdWB2gGCZwWIieGgXTg/yjJKV0rVqeR+y7IrvpisX/9Qusn70f8Mt7uHQ1JVl6lrlx4n1INAdofNOH34BMn5wy3n/5F6TrE1OK43dP6aAvqa9ZGNbJZAAUy7b+zDX49vkp5fLL/It+347675wqj5qO28cT5hGnNqsH2Yozf/iPras8+cOpLhzOw8DGNac53UMq5bvqZdjTa2C+GtoGun8IcSgTUSiHMjHmAhuKvFu4Fe7WDwZiSYcm/UAemYOBuJIFRBx/fDDQM6RbVcdd6oElBuSqXUEliNJeY47HhpkTRi3xX7qs+5vXdbMBJdkQPBXh/SPqqwY4wsqMkBgLuohRMPwZRBe5PiwRcUY0QGeH4xSRYY8cMoGvYzlJEMtOirQejfKBFZ0SM1GzfbnvRtlpgAKAC3AeucoWgo/Ii9qRIuUWTaEpfr7JPPf5+Yg+Ly9nfYqkHwysnUUQ5SG6vRdEkTvNAxTWNcQ26jruI2fogt13Dbp7xnXATmZSGFwEbqXnIKKuQMOAAlZhwdIMQ7stgLgAuQ7xHwvxavaA3mYAlPM5ZeyYr41lXUzEXRNCcg5tzNJGsO98I0OdNmI+kgNj70V5l8Nu4x3nOo7sR8EdGAuykAGeUrSkmMVVbCBuIcRXVCxJaZb0g4RijYUZGasfsz+TCTJGLDEl9rOmG+nRgAgIfbZ31ZPda2HEOYdPc8rms1DDl+gu+ENw3z2TdWkaITC1jnmRcoG6IlEisuYmjncLN9mcIHvj2PKIEQ2qLGOqFJNNh/RQiSddUGG0nOEIKlUcWc6mimDxZhApflIZhIurjOmxVzACYpRmy9oFo+EVhJ8eDYh7NqDNXHJex15GVynklSzSu1tvy0fYQ0yNQYt2MoXLN3PkxoUlQfhlFYTk7Nab5P0GRe83GT/WuwCQKWQe4/eTU/lGClXmhonwFQt5zzCR8EAWow8Yzwpx9aNG9aNm5Jwh8GTAPzzkDv/A9mwqj2gjpXpeBxR5+kK+icVSNdd6S8rAscxfAXAPJyaChqnO66asC/KhK36eB4AL0olSA6wdB0KqmeM8pQH4TYSiwC4fk4mJo9hOpc6ezFeXRpinLlK6NAQ1GRL2k4yBlV50uRep7UVXe9Hag7itByNpntuWRlNtVNGm0ii+YbaRugktTXGzMbeBDitKqPHYt1dIIEqH3NKIpq4ZuBWBajODU+/gTrFq0x3DD72IJQ9AINNP901hLpF57GLnq2F1psD7uJuGyxneiu5KCj+l5dO8PnGNldVlH/vgObQJskLMETXR534iaT1+/XYkQxU7Sgyu9XmGcp/8ZfSL3xnJ+yuMgaKXwPdlTGFQaQzcIqhdBxxxEcvWKTgKEwufmOSB2h1bJu9o5imIIGYWpqGQJzz8Lk+tvLn15mZk8T0y2pDP80qhCAeSjlA8SA99r3A3Rk/kV+NpZUp5wO0AfrPF2x9ei1qvbRlVF60UogwSABDyrWcjEDFWYuiOZr6Y8g7eFvmNv1iHNBcb4Sbk6UIoPN2eVi+23KiSDVD+Z/65od55BbLpKSrzDFdHkI53QeMINmnvmpmaPNKj7w998DXVmjxTE2Q0N/mK40ZQ22ldIID22pG9QBqoRhXLVK+Q5lFxDSSqC0WhpFOA/bKoURvhGPhLhD8WikKGKy0VxEf2RhYVEZQ4oDhzVC2BS71g3zegh9Jm7mMFkIN3eZxQdxlKXKxv6DDcMv6x5F+iLubFKGbVQvJLjhs+nMH7xeD90x68jz87+Eg3ho3BxzL4qHXwdtBGdES4rSxuG7dmodheiTTjvlzsHgpuMc+VnEpdqrpIYro6plJ5SlzVf3fd8hrleHEp/W2xAlS7Imiqcf8oh4YCkNHrtYKfX/WmXld4ZNDc6CsOKUA30WEo7tDZ1zgO+oo8XLFQh0Lp/to/hvyP6l7nllc30QSy1TPl7nhZz+KKm3eb9aJ2W2mkfdGb+nFJQ8NmsTxnvYM1+LGu0foy3mUz2g84nvE2hTbItFG/CtByHbFFTZ3JZOmbS37RP/TOWkCa7ZRDwJCfXKltpxy7BQeWoBLttd2w7P1RQ9WSOxwXm61aN92ilx8uWUj1kHRheX1Y5zdU0jcaMz7+9FsnakTSB2mr9BhrWPWgZivyr7avlW5K18u+vjfwdAurTGi/qdzYnsrBB9q5v7SY9WSz+sHfgDErOmjW6h4UKN00lTdzx88l3+7mwUTIf7feIAbOA3UQ4bD0FLHPtB8Ure+s2+ui9WD8y7/eaP2SSjGsD3K/XTL+3v8tMzYr3tVW8eHmsPauUfFHf63MWOjExp+EfF8AyL1exCAIyUjWpDz4djWiDDj9E526lh2denbmVdw9WTCq7z7juCgw+8SgZsEGHTlM19iI7dPjwlr42nFrQBrH4hV3B9plLhVdVzkwUI+ZA5AMPfBpWEBr0vrbMC1kjuiZnLaWpCmVevdXbjZ7q680f9yT8GIx/ymw9q8tnNz1QN3evr4q8vqFKK+cRVXZ7MvC0oI8Kv3xxXjaq5a0XVFa6XMPz3vyhHfsCJupicDzgSw5jIDZfe4UDFuFrOIe4oEMawJYdwBCNTniryEEhxel74hcXcNZ6oFdDWjE8rDArEsDCCxCgbIpHMSCGEO4kCZUhCf5LOqfB66ftARXbe5AEQdqitLMsQpCtUfEzrn/IiMdcK6SvxgZwSppwyWdduP80CdhfwOICgOk/AwCLyuprC3L26LVjhKuLVeFV54AP9cM79T8auyh9YXcFZX+uFcSnGtk0lZ5X+BvDPXM1+ormN7SVO0YFuXIV7+ul8Cda2BAEKjvVgkTBij4QH+/6htSD0/4VyGxuwoJ/nI9U+uPdCO44PPZuzEUkEFxG2P3gdzVuxNWQ39tXsReY1l2UBJA3yyQgPSQ6XNfqi2QwCwQAaAej+oiuOakjgB6VrgUgmiv3lN/39PesvLlhx76woeXqW9hvJAPGqActLmuNCfv1KeArVmHK7jvP7I7xpVH2gBXW16lF8PtSmWDh1EZV9FfyVMaHSW11J9q0/bUixqz/HzaXtbpo7qS+qM2rmemUc9MA82rzrrkmNcvqpspne3Mqn56g3oVeD7up45ZxzkGhDcAmjO2jnzm1ucuECdds0DR+LOdg9DxRdiTCUXaSG4W0LC0dc8GQiU2kq/aZ4fmyF+i6AUiGl6iZ3OGdxzDkNpBM2+HNJ9QgGUSmO0F4Uhq3gzKuJohD/R2U0mn+zykzQXBjS2t9QsfAvAgAIv1WRpMEKmakqPZEHlhgB/AiYBY2vvUQ0PQWkL7QBtBbbEsXJ3q1IygxctNgyDQZrD+GOM3BGVAIS7YD8nO+CTr1/Qy/URzKr1ubWbONjOXIJAxdbN5mYJ5OWUnT+8W+rRJqHUe4Up9hFWZrMAnbIocffKvOzaBNzvqT/ScpeJMbV71ej7NFaTcL8IlY0px8N2Bagbq29Se2WWpXIlQKk/ueLe52UV+cjT21AuJ0rvDqkoGTXFr9i5eGXse4zWUyNDjW09Nhn1ei5MM96/B1tq5RIPljVXMC9WKxuGU4vLVMVZCmTqKhXS0Reapq4Bs/h01n1PLLSXrlymEYUfcCUhDAFHjklFM+PLHv1O7Txbb3VScdSuX13zrY1WdCpF/9FQCehGqE13pisxbhr+k8PvlM9QGB7OuUWLtNU6L1aLrO8nB4dBVannzbD3iu7KMmMtVxmI58vzyrLPRUV2n0RJbsQhoTLdbpr15DQVnHl3txUGt3RwqerXatS8v7hfn1jdI3lNVj3rZmAIWN1z/i/ll/qCq3qEh13McQAnn8vJGsRH4Y5gnOHWBH42HmDl70wda/7i6k2rt9rVlt69fq9vNa8Zd0+0uBKkuut013X5drdtHtNtd0+2uHmu3drtrPa/guK0Aw3u0vq7Wd/tqMNzWqE9F2AocWM75DS8KzMGqCojkQKeJ6xJwovaDmcfr09cbGMIb8uCKQUfeAtWNq4I/NGFuyZfXGK/dArvk5Eu0doLEhhCP8AKVHxPt8Yuv00I4TAQyl5VqWVShx4IoU2kC1L0r5MC0YNoDIhed6Qkhpki2dj18Rq4EP/iUJeZuolRICapMdOX1tMpQMjNYce5Q9C7r87N6V6E+zhv62kyXF7/4g5FMIQ4qQNpjCnV40BnnAxwCEnqvNCjAeW9fuzbgytAg5h9dKBO1Mx2pj8t4T1/IOiC/eL5iQfnFHw17XZ5HaIL7h/xyXhXPDztrb9/u+PJJtm/sAB0/35mz9axbonIWlosxi0qEzGIVYrv4Oagehvfq4RWpB6KrsE8DH1KZWR0UwW0rjG2yFD9sFFNwK2un8WyRs2H2MiMzK/NwIJutGOxsoBE/j+R5TnYIrpGgBhTgj5/nuTBwGembaATKt5lGMN1a0O3dIjjyFhrheSuFS1gQ2/TSJ/F09suz/jwjWqGZo1lOWbadyfgOozDYQRsuA+orqlJO25fz7TJ5WEHc+NOqSuIzKGZQbCq8HHHBLZlHAxyKZme6eyX1TJrHckPGjciIHY5HwIZZ9ETrxhljdZ9zJrDzTNvQWUVDNr7FWdj4FxfG2KSXiG4lqlw7WuZSq2rmYmfg77l5Z4G7fyb1iB961soDWD3CZBlrReodk4XEtcxVm+/QVqZRaw0ApWlhyVx33JZ+ChpUtfsfKiBHL8iHQpw5K4tHS5yAAmZ6qEGu6Y6sZ8l1L6Eg6+Bc6gwuu3hyIJzR0rssI+qiH12a3j/A1daMr0X2/YR2APA7kCmpY6rFzi0V7Fw4OXbOKXZuqGDnxhp2qhh+JdCvxDmLpXKUSzuWwIgqCNg5GQJuPBkCLvzbRsAtp4mAGwoE3HxKBJwTBNxwegjoPmwEFLzDQw83mQVlXIqxoTpAuHfwAmFBnoU/2YFrNeShm2fRWROi5Ywq8EPlLzCyRq+KLATGSAzPo2/LCGCeUr/wqUCJAJ2pMf7QHY+mIGmdSVHVAtGlM5fIVaDXLzCgZSjEGN9zl1KF/JRUQhFQvToFKaaAW3gBS5VciJ94tSzxO7nFDEgPmyM4CyNIMILsLHO+cJbW2GNZln9Y3oPwHBul1SKRqvDf6rrwfGbVJes9bnOwz3HlzQhvF4rs5svpkldqsHcjFSl1Bfau1frrCyu3FnZKP9o02KoFVl2YcxIlNkbvYx786jy4NVV0MXk+ua3ZGT5vcIsjLzNAu9Ok9Z12gfg01GeuUZ+9/MGagOKWAgqaAMHkpVCAkC/ikH/5wNHZVWPEQ43Tr9yXLhWCpVf1DrH8oslyZUOA4ZNn77nosYVdVzqYyqbcw7bYU6T5B98PjBtoCxYTWgbiDWcUBV/Av1DwhTWQtbgDaKKXBZlXszzwmiAL64dqZnF7qyDnCeRiCzbVh5tbZ1GxQY0bZ+LGpSQIEMJACJAb3iX1Ypa3/ZV4xYjTt75ROq4futoh2VmACeL03SFHjtkdiqW1PITGu0uhytYOkFscdGQ9lbB5YirbBaxzuHOqz2Vk51L3DlF9Lm12/p4YqmiuJhAMFdVPwFp9lB4CldRzSNbTjjqVnkGuf5S6ZfsDG1ZFup921TDAIpJb6vJhDWSXtn1DvfzWUIGoM6XX/N/67sCqQHRGMSSd1WJOMYWO4qqZX6p7KG9v6Oa3HW5vSE8Jd6Myq8mo9tuMtXHJDJWmnzmqu92R6ct4D65X7LH+1JI/8oVy+dbpklXzV4i9V5oA1UjC3r248LWuAxK9wvKAo/R+Fo/kNaBS9WgUwJ/RW15bwsRcdSyuf8L8kRVXON0gqHzXo30jF0qiWP0JUWCYSp2b1LqELxXyd02d2mkbZZMTLWs0Xl5N48VDfXcWQOJeO09H88Dnj3JFeCL1pn5Yz0oCJIeF/3eg/viQAiHvXM+3JJnv0WULF7lfdWp3sMdz12P4lywdOyoRL4BaHRFQOnqXzXg96yiDC8bvP/Ibf9w5OP7rX/kcu47Mg3H0ojyqnCWBfWYQekJjp6v6twtV//ZFh9zCxRYW460hGyfFGgDgsbXJqrGOuLYOfHLSz8o6UC1fXIKHv4JMU6THoQFUCcbUKg9A8Fzin0CPM7pqbt9Tc3sTEqCvm+OBbvWH+NmTjezlppAC7dDxn/H+4nU7//TSCSzn911/2c1fCv/b/R+ecGfeNXnxG9//zB/78ATe5JMyKgE+veXNd/zy3w34eRmepPf97Q2Xfst3//xfy6dX7H3x1772J7+DT30+ROL0p/fdL8inz19x0daDP/tRfBrQaN9dvbMvfdeX9NPoe3/mzb9/8D34NKLhvlt/41nh035VP732w0980649P4dPw2X9b9/Z3/mjv/SPOz+kTtWUBxilvbmQxeVe/qMfee3/91N8WaO0bO+qZXtP7sNCnXOVHgRdqY6N9qv/pb0a138PED0uKfS6ZwRQ7yrUewr1pAXqP3n4zF961Ts/Dqjvk3t5/+4zMtjtr93xu7/9+w9gsF2G+aX/6b/+7Ic/r3CY/Nwn8tn/+kGFeW/fE18zvvpz9/ytfPrsj53/+W1f/m186q0LPBYgGHRPB53woCEyHnO9GC66Su+pQH9Pzu/Vh+qBvPB16ZulGqj8G+Lni2r8zus9izVaRNY1EbJ7ut6MrKOuryFqD8wVHF9ucMkGnuLrVI0aMPJ2i+0hm2IOnOI6FPwOmV3XUCW4IYUNMhGCTIxAJkYw+3cPgEn3VXZClByejdYynPnYpHoVMqGBdbXUVUpHEQiLEpgLIVY6LjycVWMXFtT7zZBqd7dfwWtlR8DJcj/DE1Nx5uAPvY7jesjIl5xfPfcHv/FPX7iUvAr9v2ZhIu0hB3mVq0My32U2fFw5int58KTWR4323imnLh9Fsgsj4bf+3t984uZfOfFl9q+wt1TAS2C8Hw48n3HFv0GR3dUV4OkK8PGzW9FjUdFjvt1LG8ifIFpchDqLWzyFRWt7CivBA7ULQ8h1PAiD3IAKg10RBiOpNscN6eK4xLs1S+AjpK8SoWeq6QLyg9p2izzGugG5bL7OP8E1ctCIpxWcndNgQv6k4glzORsCeIkU6j9XM9+KOcfDcmsZrksv1gxwtS0GPeoUlziM7b+VLWsXgr3Vg/Vx8dlvGTOGGxSSupsNiuEONchJILcjgu/hR9C44ST9HXHnlg3QpcHJurQuiNvWnZO37pKP1nGLeZ2tJ2N2tFKVD/UU89SuEFXFsJNr+BGvtFuet5vlnXC+CacR3hJ5P5BXZIVc3XypuFDEABojUEaURa28XyVj+65XG5DU6GTc6CREJKZgRloohtZSqmmO78uQ17CpdtcWXsDy4PKY2xWWFxQ79czV++xuxa4aEilXZ/bsuHWETberJtJ67b1Fs+TW96MSr9AYQZv5CHzf+MCwZvlirsxlve+HO+aDB8bOZfVjFLN7ccev/bOXt+5erN7npku1OpHvdh4UaowDFSRrUu4bzY+PU8JLm6ofdOqmS2HefO+TEykAbddVSxIv5Z/wj169zAJpj1Bv3RXz91i4FaL0Z5+snlDv519s+w9fWvrfvQ+fXG4ADfIDlSBVzVTmGYuBSHjmNUuZMTwRNKRokncbKNNt8CD1JgrwXb2U9bjngENhIZ9hjC8uXvpG06M4XTgNmeSnwmWoh7WJF8vRGp6uXaIQTwmFK1jfIn737bqpxfDQO7grsnsaP1+060elGuz48VQoP1zchHQLDIQhqyjJ+sLWZR+WgIawl4xL7VyKg58HBdDiiumBJ2P+EgqSlwWufyh+WLg4+eCN3yhcVIIkTn4yv4KGwaOEhop/fgP/KtShsNuVK24reZei1rvdDXqXBSdFvE6BeF2LeKeyVQO9U8SbLxEvrSLegHrrR7wYiNdTxGOQ0qDEPd/YW+H+iKKgEb4VBYOHh4K4IZaseK7LFpDFrSieHDRp8WfNE+UPfvS1bSfKm9Xummc07xQ+oXnmcxxIAAUMerpjONAWWf5SEe24d0YhgIFhG82YILeLO+WxFbCIK+YsV0L7D12DMFumLLknmOMIQPCClsBD8F0v4QHx4ELLnrIorMg1+AdUAGikyPNRJA8AtXLuALHSzOp4HlIwIX+Z/XPxIFaHNzkXVYUTBeqyDs7XCc8C/VxxbrMy0SGzNRnnRTsBOgw55MO+G4JjrWNSXv3LrZMySrTyzFdRJKgEs+joRkz0bro/E04erFb/epJOXC1zccPhvUoW4hL408hBGHUW63GKnJ9FTMosZjitmGHxAvjQXSc+OAVG5LGZ5OOyM/VL7PANdnSYg7UjiJY+OYpYqqU5W1GmC5RJIAeVl7pAVGq4Eev083JWDJbh6mJYRi+4jdhgStzElJgxxRcsibElMH2B9rPWZlJxFnZvEKoVkFqMnB670Uh4r/nJljApbewmKNiNu5rduIbduCdjN0GF3QSrRZ8Kv6n5K4GKFkCw9wwqTCdam+kEBdMJKrJPrLzHN7ynW5d90G7eo+4kT6wx4imvomNllHLQQOQg37KjPvmWHQ3RSMGOepYdnYrH0aAiB/ULOcgeSgxrSNinaAU2uxDwVV11+6WSaHFtaPgTZypOH1RAGnJBvDhoZhnEL7biUWERZQKd+uBNPvWloeRkPAnTIROPaRfcBBfDYi+3SDueITtJxIwFaTwMAcp/zLiXVQSgec84du8IjVKNMh5BykClckONDK3aacgOVqBUwWPJWXKEParHIzHWtZgwXMC+VPufs9QQqYDd1PBGKHY1BQePw1sqFr8PUSPFp2pwEp7HPDQzh5zIVi0KU8wW6lunvVEfOg9ZxXKtzDN8e+h2HKHK7mUDrz5whphnRo96i/GTCx+OAWrRhoOS2gdoDkOdxwLFV7tGfYsUgEUeAVn04MC17tRbWK6nzLlkvLESVuUm8ph3DXENm8Q1rLHhWOvC4i1JPhgZbjCDSAMDfyz0lbY+Cgx6PvNbGHNQMmZhwD6KtZzLgk4HljEHdcbs4Q/XmQ1jjpQx2/9xjrDGoP0C7YPTRnt3FdrHivYB0D6WjbxF+2hFTJfcJsK71MW4/Tw+JvjuGxKUkmuQvFf5HiO/ncheBf/7nkX3wKA7BWYIRtAIkoJNmHPEQBE/KBA/qCK+uwrx3RLxgxICFJi76jEqUtyPS9yPAWyMej6PVmM/khqkEQBS6UKXpl4eNx7jUQC8oClq1L5TZOQOpfnVT00hJBIhJDLrJGquk6hYJyDjqTmudowe5nvlcFoHs7MSFMYVNfK+bYh1tvUvL22E+tlb1ya7k5W3wRe1HkCTUz9+vozvNvLie5kX+AjSdqoAbUHt5CwUTbIhGHt1cHsyQxXDRifDSifzqNHNkELuJiS2PWYBd/GzvzidEETdmZVrtLs6HKcv6WtHA8Nqp0BPirCAPdFUZ73CBKhPXWOwHFgLrH7NGCjzcdgE/JFd6QQmHOIJMqFkuXnVFdYJOBaaTOztlYq3uPKOHba7UKk9pWPO69vcvwKUkNlL12H2cY8+gYQeDQNEcPHYrLl/g7rVsrp/JYsKzkAnLNQJi/RAINZ572Lee9SVeU/we8LcKiVFGT0j2mFeBnjZaV6GxZUmf7XzsETScb5zIO+Z+UmqtJXbxB9PzYh8KQ3PvQA5/9iLSDXXS/Zx2j7O2MdZ+7jBPs7Zx42gKPZVbyuNEK/ELBTFwJ2CcUPqXbZQWMxtEihI+qCavrnCCuCQWCAn2fqVbPkCbfzv1zFEFmhh2di/5FP7Lvj+o86HgvDEZN8Hv/rqL/7Rf+JIMTQ12XfnC5//Y39zw1culZc/ue61P/LZv+frgPl0xSdh5ZZcNktsyY1VuJnm/vtAfmf2Je9/x//6+LsCrvoN8/5/HP7NGVz1zGQf13vpt/zJeSf0ZfS/L3r312jv8iRLabPc56JNtIHrwG9K6bJdslMrE3tPsXJcIk6XNsjdWpqnWYr4L+Y/Tw/23KMUUmpOL1byzctYRdN8bXITP0XyFPNTKE+hyTepWNIl+Cnco4F6c0c9irMI7o6su7T9SoL2KgvYo3IHHDj/Y+ELwR7lNaOpziJYpz2nqHr5W39ct7EjYtue0qexDZ6Vr++4cY9oFNUD7s7mJg9bsmcwbXCe6F6ib1fV44dfaV7TJ7r7cFHXd2NzgvKMzC3M2Jp04dRuAf013AL6a7sFLHjGVchnXQSqcaBGYsH1XerKU2iz5B5uRkaFnyy9GqL7EhfgdeXe+9OKa2lXFTchJX0PhDDjrMsx3tBj8fFgTt+Nly2DMi7AKe25hvrwNxOgET/78li7V8p7GphSxuqogzJpNe8uYMsmjRA/d8uNbhXNoEeHINYTy5BJLfCOcSEg7qVUA7m/75aOCBy5QIYmwzImHMmR+THgksEFlZD2aqFLdIsDYBWjQIpk2QcxDb0xcUyvTOAjrOJkz9pRf9gRs15tYd9pWfdiQaDz3ti/PvMb1r3g6KVRb0WT3rTnNdO4s24fpxo23yBbEYgdS4/XRSGaMSh4Dfym7/Uh4ay2XkNf7HrYp+thv64H8EmAPIt0kcQVAWU272Gt8DzKWunzL9jloCYmDRvAGTas23XXsMqgt2cMem/7WG2n06vehwePod6zVgXfGPGwf/1+a4uYeaphB1Huqb9npIwKchJIN2hQyFaD+grvSzol1D+QJ2aF9+uyVUKDA7j6LmHBjMevPjp3IOuopDUq3EJ48PQXE/90NTyY+l70UbGcOlvbT1+oKHY8IXJwbXrHIH3/YWOipR+kWk3keimS+3LIijpQxhRIwKupX1rH6yUSCvbDbGYAhB8UJ9gJ8D6x7rT3qaLfWqyRn0w8TxTKjwSh9Fy2ijAtJ4EnRZheze9Ob/yndZWMXyBMdBKESdaHMEkVYco5i085YUCAU80Z5mEJBVqmTTyK9gSrdO6wCu3k8ezIopSe1OYoSo66gRrbty58G4+z8EIEgHw+nHqrWWRFsm59dJeB/wXpr70DVTnI/6HCc1TmKIxbvPHV3M8Y+ufwRIwPie5xVbx2f3zza1/DDfz94SMAkKV4CzpFxrOWzg0eQzM30Np3hZY6GnyjWvo5T3KuZGDWgdRJfk2dcLknA5B1iTLPdTYGnp9sMMHpDyZ4BIN5hWcGo31vTqnbGJJbTKnXPqVQtrWbC7t2SiF5aG16TQC2s5/qob9YDXYYeUCuGUjeqV280FZcIAtM6VxsTLCc8Hf5ghjSlra3yChVq0R2xBl/vrPaqnsBrYgFJACEOo1BrhI1rJfgmGg79C3H95PVdUyugRRMv24ar2H5rj1WOLH7Kdf1MAkKFUWjFrRZDS6vBi7/1ODyC3CB1zvkrQ0uvRZ7cnDBbnlNcPmnCa5gbXAFdXD9rOMCZ9uJkKvJjz7GQoyug78K/AroUVznUNjzi9Hl/wovhSehCI+k7nv/1YPjFO4J6+Qe4+PbjxjZjTqykwPuse4F0A3s0BZfhwxfC5JAnnQSHX/fR3w9z4MIMboCica3H6k/OmS65SV6Vt0pV8Ket7ECwjsmBpvITh321vgKqMcS8jC5bnEPTa/qfFH37afV5aJ7frPvP3vt0vi918KZgF/21bTJSec7uAuL/RtOSJsb752Avl4p0upzHHSD2XG5vLwyMXZg3+NdVydF0E8CzUtX/0atUSc1dtQHH/k82bGavuuIW0D8y1u6sRGVfPxBiyjbPeS62dEttzuevWyBz/05oQwxkflwMG/81FmXdaG9yKeRVQoPCJ/Vx1j9s+ddRuljqmh7naOXJZadrD9+4KUQx3HHdWiuSYwAwgFvFfnDCKbmIzUxxeYCigkAPkvF+sf4ZU9VczDimBOquA3xPMNPGmQHsyzpM/yE1Mpd2xRzknJD6ZI2RBpnDKvVLRAiGt/bQeYuujPDXUkpNr1NqQs/tnKKPNJZx6YLDemL1swZSJtzjSd4rvR+qTSSaMpQoA3HL13KN/DEocCGLDXXzVOcB9lORGLYMRr3JAM+z1zBPRihB+hG0a4M+dbCzipDp65FxdUuqG/xkXr4o6FeLdZ2pOmRNM0DnmbYAX6A/QzF0vVUssxICIbZpby8w48+ZiP56EphV5/H93Xk2jz/ojsb4K4yHfer3sDnjG42VZimGNFejIhc6MOr8Tg+PJEB4o5Mjx/H+022u1dn08nQnBrZRY3Q5qi3nM/pKymEfIMFtks9+7gRcRL2vfH3zrw/OX/qybj7VclGc297W7aR6xweKyJ27fuhg3/xlXf19k7yvlX+wJgg6yVjbOAdQ5judHg3pFGoZ/7TCbjCUqXRPQgJ2aPBsWyeG/675//Zkfc/+NknT7JNDDUGtTnFcBVcASX8A10droao2UUM3MJjH+3iXV3G5pulH7QJP5v1JzYQzhfwqNkWV/j5sD5voS3LxAkLKxOKBczIgEf9vhV5j+jzNtq2TJywuDJZ5vo3Lx+tqLH5nXOSFuKnZS1DK4oaeM4oWyZO2Cpt7Syz3l7Jen8jK5rq8YweRU7JRVtWRPeOX5KaYjPAbdw1WlzG7wLK9alvu8ha9wW+zPOn/+47+L/fvZRnbwV9ntBWKp4WiifOZz3Xbd63/Et//bUr9r/vYsBzDhl7NlIgfOngPl2A2DjUe9vbEGeSH3BIO02b+TXm3z6Nji2XVyvfDlRQxzoJYCYe1vE6MuKrIY0uzRYr7hjNc+ucNkMJBcCKyxcqa3Na6Y2iDpYvTauPOdYBVldizzN1wU6BVwbNqmPF3jV5upBpwHV+6NEs6OisKGtLj5szMkg5pD58/u//U7L7ur26WvPe0bxfosLbs20lzK3V59635zxpk6PZZhSZt57maWMxRU/ey2uAemaZjT/2xz/0j9/+7/dOzNerTixnW8adkjymertpSxH25ZUS9iU1DHIl72GURs5aqNCNXtVgaTlfbPDkxaafrnj8g3B9sk3iJriUHuMjlkWt1SIJ9dusn+pSKm2ixaOIngltO88L8R+EDUx7YJwp8bdj1FvJegXHdKlPm0EKe5WDGkMjLb8DRUc1PZsn62nMCdSvbGEGjzN1MrgAgDJuFjDeu7zvV/74nV/z3vDDRVSmbB482pbYYh8Xy9hx1h5+M80fzXsntQlrkd1fsDSGmFOxXWAszftHV7iq/3LNkz797T/8Jr2UW77qpdwFWwLCmOrqj2/FwfVbLyX7eA2v7IkwCu7ccrZAWxSo/aOMU8XSSwHMp4NjLnJtqfqFXEzIxwL1bcw7ANXfz6Wi/S/krHMm/t+Nl06ee92gz1UvFAg9u/e5nODQFG2ZcCpblzn9fkIjPQAeYepG1SUWkwu2nS4VGeb1SRmZ5glUHrEH01qNVfaje8uHljjjNLh3rAwUHCLPMSSK8AGl5G0kX7YLc/2Ce0Ywd+LZjM5g0vkOLXmEv5+heZF6pnlE8llSzLvl8dfuveLV4Mkw/NgJAYVcsKv8bCxFGiH5HPOI5HPxvO9r/+1Fn93/P25Hc2A8+S5t7x5+7JpGkHyeeUZ6KA3+7j3h1d7kz1CQBcr8fG0QrCPvaCtIvsA8Inm3NPi3T/mBn7zsv3yUr+DyfzCd0QZv4ZE8TjObppDyeKTUQHKYU5+gReaX8gu1BB6/xTwiw0WrQPIgt/9ELUZL+R7Ni8eLzSMyfCuK1SByglOfpMXu5cdLhFAjOz78O2RnblUDxZ6l/MlSAPw2v1RrR+penXc2U2nCgGv49Scdet5bl/9cb7em41sOiQn+ciMd5sTq8WEk3RmjSv2yd4nQOQrRoCZdvUQXak+WHUUzAyK8N+AKgNDjJJMCRAFvIfhkmd4nyDcdyUV1YGnzl8qnsWkHEEByFUJPkoqeKDkUgAr1JloYvL9du0pnapV4b6ySHBl3yudzpL7tja5j2dD5kuECyXBWA/G7pUckBR/tbiC4rAldRefJv+ciwyln8arWScReAmBCK2aqpHEAUGdzBlRkhlKgcpYyzSND83QrlBZbIbsLSbH9SO1m5KVG1G7fO2kZ3bLYzdNLDYtKHur6xRbWqLNpDTcV5C2vL7TEQx8+tDT+2t4rynOToNDTjw/H4lP7wR82MWf0q8vpF7kpDgpkVKV2no+VoNzPAht91gQ7C7CBhC2aNsnpfIvdmpGHpsWI86/8iG1Mr7mr5hyPkT2i8ZPqcE/totaEJa4fz4pCuul6KTiF66VE6zBaAVSiW30+/sXiLSo7gY/1T7VaL1mr1k82am3GNjDJJ49vYKv7YlGdPw5qHXwAH2xyrbrPr1ndZ6vVFVXdZ6uqVfOpZjX22j50IzjcDiCd51ENZ8DSrR8BLDhjxojtdlmojBqwnpLHslhDPoTl9jGi4DJ1kXCsvIU+ofho7mlo4sKXAXl6IfhWTUi1asDROpK/yVnlNuU/770mC9bljAVOYMaz6MhC7fgItxxeZzH2RqdAWcwYlfN4GOllag3+X10Nf0AIvVVrHbbL52fswyuACRgdDGSWCqubn937xFKg0mEXX37kBNd4n1smnLgNCfe6NscECfdUcrwHCQ80E27nnpSRM03gTDZwdUEFrSOVX3Y8Tw/AzBWryh7PK9a1XBbjollQjZJ4k6PqdcqiSvR/nC4+zTgJuvE2aQRbEV+NdyjQUIfWaKSwc7RSqQ0W5qiRrFsgxCI5ql402g4bteYL6ibNa7hJ01mxbq9PTcD1f3pY1CRlCHh9CmKG3ABgaC0iGuQtD4qqXUvYbN3V6zqXrK47WKPuT7bXfU973UrgTl65WjIc1J/nG/fXujq/kwH+Nc8bHXJe4tzQijfoUJuyV6dG45KoScPzlZB8p9jn9fgvUTsPDYxubDv70OGG2VD8o8VC4UZZCrciVm87QMxEZaFF6K+BETK4ELAL++DLoFUcAvGGRmVr9jh9WBUkpqjajRk/pDFj87epCSlQGf0QHwe+UQyMyEVXIalk04gooBUUUQ1dbC0XqId41Hddk8cLGT9+gKaIn6ZMVwpzEhOo0S6FOg4TcLgt+El91w8fwTnXQvzHxiqx+ELnsTnWRiWWKaUuz6VxzWFa6R3jBgop4Hv0Luk0+9uxi/JqXXBv9xz3hqpLE6fj4jQG9Rx+ETmT9AHgUe7wIw6yJ7AAXyF3GbaWy/ybO3JNxiMXiUHFEJrwZZ6/hPwEA/YUuQBSzcwKrlFS8ZZSPjTaPpo7Rhz90qUVXQZJl8LlZtVl5g9XM6OvE+lo9cIKhqUf5ts71ezLo9sVCi24Gl0p+N0JToiT5FcdxzW3ApY9/T3h1Y0/j3vgWF5pJH67fbzbPt5jH+81j7IaOqVismgZWZZdNvtKXwPyj+s5Hh9XjUMTiKej9eBYTJ/ANwou4GBXeXBJzgU6lYXAGPfVZCAXfszFH89crgwP9ayxzp1uKb2ba4Secr6a1ep8Fur0KAki9ZLeLb3A9RSrS8qW6B0tWUF9irMBwlTzqu3jNkofis2BVjCQUxAcRNVO8CWFhvyIYK+1j05iQh1YW/ULrf/8bjUvIioZm/9sqhSPpm0GmBJKGFaDhde+yQakqNeUd9GtTiVN+VAxZ81PD6796U7HfoJDKm49oalKp/p2WNM0UBtXHEl4NNRODKvV3c/VuWV1w4s5X0JpdYz7oE2HPh1BWhkmJsQp0LprrpfcjbqLGABDYCyjo1OpFTnQWS6Ew6toma8EfPVdf/fbz3zOlZdSil7icK6PnZmr+8Z7HMVHyPuzqmrKNqjOJJvTfeVGcs2dgP74HmEJG3FVcykfAJux6ZqnAQqqN6sByhZOkvnt7vJtlt/uKd/govre8m2O3+4r3+ahu5+njfyDI6NxjM5swM+GQp/ewU+p+uuzcibr64LiPGKMadxiuww3R3Xl7PFrAb+3u9kifp8Pz9q8FrKNeGPxbyteL8zm8comrNvw+4CTEX6X3SzD79VZjlxpluCNZcXteN0tDrU30CbAJyYcUuZzGA75R7MI4cYEmIC9ORgdjAl5R2LGoMusQ328yUnCUCEW0VBnhQYmAHsXs2Pf8wgZuzqFJpEineHidagTra8Ixh6Zkzzq46dv2LTw0ES7ktCOshc7KHoz17FdGs+5yRSpiL7rYcGKrfq2CaWUoSniBvLuUYv8XYQq4rtmnF0vht3k7YOad/an4T9uirrL+w4Xel97DoBbY5yTNmp/cBzuZSmj3nzZL/CFHqKrTyaTPOWmt0oPtxRACeFju0ubAY9FdG1BusYNvhmfA3yW7ohM7k3Km2t3emjgdtPd4x5XBy4zTSmX5aZ0n4dewZe17gLzFC10J6wMAuPhZ06AMxEECvZoA2jsBqPOudO1+5SN3KY5eHng5z9yWFYRb6uTOZt+311F+o7kXb2ucygsYzWsabAICdiYdFZYNyTjjglKelRcTfj1xCxovIcS7dwpY+3dI49xPRCWT8by/25H9M0avn158rZczhvfkvcqLjx7DReevXdniXp+NWKhR8nxvDd5S96vlOo3SvXfnQ201CAhpxwvDY4fxdw96Glimo9UNr/I/RiSRnqJcvy/GJwnkJBc5ArNHFzkfkId8ZaEfYeNphjvZRw6mv6cBNSKjDJqVLXrO+7UI1d2B6BNf3o7PNSKBZItRF2jnTkBNwnfvkbGtKj5Q42aRwOoCj/cVgDEROdea25kBGuQ4FMXuUd8AMO8vA4vVsKr+mtd4OuinpDxYIkS/udgnnCcGqhsvKZRkK0ggEgXVSVff5JH1buPnuIMf5EDuTy+lYVps3J86hfJPgr2yeOvodIP20jvKA2P6k1G6lvpkP8TuuFo0GW83clv0Eh5mHrcsr0HCZ50gKSJwPaNMa96M3VlYgiBbSTdK92LmULxx8P4qLf48mQJtX9SG8f/QvK1Q8taRUAR3o6YMvAVoR+8ZdtoXwtb1JsAfiYBzeO1/Lq8zEQv5g6hpw+6kGjDpczgV5aMU0h1uHo46OBbYr59rPENJsT9ADeST7wEwWiBFAM9PbJarg7hXamfBpqZx+7OsGJ7WcDWcuSR1KIuQxJs61XNKwpeQxQ/9wb4EBFzfElYbQL9zxtj91ByA6y5tvDf7KGgUIUfHtUo5d2euoV80FN90GE/C5QNZKEygCxSFpHFhhF1DfvrKQNRe60jnnq35U4PpD5XJdt7PY1X80kwMNBQsE2QVS+b1gs0M7hAM0szcoFmA35Z+phTCRDPYHkbG9vjjY2gfJx3A9JnaQNHD0nI49WKC5qA7mYRSLIFmsPPIqQD/rgFkkS0lG3Fb38J4k5GeGbZMEOe3lKWw1CC/7Ybc4jtilj5DtjSTY89NiMbu8R/fFNtEccPZ5CH1O2cuh2pSDuTOzWHP74Wc5bBwp3as7MNwp4D1QqzyHO5OL8u0DS6v0suS4k9xnm0iWkaTLPO16AHF8DgcDdtomlOPIhxPU5efH15PL/MHMxnUOIJ8sFZkuIXknc8+xbaBJO6LZyAzBeRh8BSc/LyRAL1zPeMp+T1Yn6N5Olbacv4B+XpSRqC7xKaoe2S8O8YMJvk6cliHYCnS2mRNqEH/Mx2JKapMZfxlsqWn8J1+vL0bVzFjDzt4zSt4qllZZfxkydPT+u7idpQPOBVbGs26nLjKvL9FSu+nDbqasaHp1c+bKGA9vOLUWlv2jvhOuwi3Uob7Qolzvv0tfNmlbywAAMWbgaX7dBi5QLVhiKdZs31qYXiK+VY/Dll+MmI8EO0DT/baCt+ttIWjbQ0A6yZoc1jH2i9HWLVdlAL7xCNsnnDkufoLNx8nKKLUF1KT0Tl83QxRN55+laUnKcnLWX7+dsedCZ7Oj9dgO1FinTGhmyasX5W7TJoEZL6LDd7ZrZFkrZga58BpkQJbcDD1vFukfefjpdtxo5smQdx2DxtLSz0IBd6yLXdbId4GA8Un/r8cm+Rer9JhZgL5EglPacZTYZQjl2TKgW5gT145CaPOJphGf/lQTGHIe1Hs20NxJWaItqsLdBIf1GROdSMAfwtQP4tQqNnaTd2Y1hd2bQ5t7tk6IrObIr28uTwz5hz889TMI1T9G2Y1F3ZTGkdOUX7NN9TNd9lmu9pyHdGNR83vSnbrnRIyj0BcydFL8STlP5WLX2+JGzjGZuRGZvBjG2lbWaHuZ22FE8Y03aDXgbZDOqZQ1wZ6BT9O1Xr8NOTy6dLyydcateXfpzQDD1eX/jpceXTecWT/hhobkcjgsOt/av0YauW26Y/2/VnC35q2RyaN4JFaqSRKcg8oOijcuMx+tczPzo7kRn9rWb4eFz3/DxCiFfbfHgwVw66RTmrctQIPTyHmzs3I9phOeigEMC2K49FKS3hosROLnF2Rh7nhAau3MkFPJwZyFV5JuKAdDy/nK0u8XsFzeDnGbxvfqahyXTFhC6nZ/BueGNxNzGo2NltkeL0zMkyYngGb8mvaAgYV9yRZVbAyHCYkB1b0bNKrnij3ayzUQozhLfklzdquPyOLLc15AkRqP8cZp67lx9b4fYDLonlQ6D+7hJzzCX+ybOl4rQDTa1wjgwJeW5YGG20AvPlKxSsLFOOdGSkTUVhCrgsiJfJfPFeOBprZywGNwiMhaooYjut01DOyMb6jFyuM3KFmZFn6IwwfPNn6YxgMugKhjiPu5iRjfUZwUQ+S2YE8HxGA57PaM7IRpmRjaiJK768MSOXt85pfUamGnBXKI/ockwPd2YjV2MhfcUKw3MZnipHegSlCrg8R+srSM+LdEypTCK+Xl77ZKcoB5pqwQxfT39y5sB45ijNRkx+UprPpiTZ7hNu+hCUJ3q96KuB2SskL+/1RH3yUgRs56eXuvzmvhQqVa6vccSKGydV42d72Ppteth6pxy26tkD/jtkPBU/xT30TjlXJbe+VwZiQifc5tBij1FZ4yKontrDBsMxLuyQBvYNYwpNCyQNzJvM4yft4z3lI4yuisFgM63hcMuzDygP5fDgwesnoj2rgCA87cE3osAsY4dL/gdXSl/j91z63Lxbsfptq7bXqLaXqP8f6mmXH7CPn8IwqffOPNFTVTaYkkFDCqNIXcvkA26l7NQXL8UtlgXWPKzYXhj7Df7iLTdTQTg0FC+ZWbjfTtKNSKVKuw92ymxfNY/VmDmUHJusF5KMRp3vGHSe4hifKGwi4VTUbzvKUxUTCOVdH4YsGHL9E1VYwbO20VGGk1qpXfVSZYFoue6pKqQqlHKvdlkjFPUFjwAxqLKw/JZ5yVPknBwodqeDuQOOKRhP8KOnj8cNEqJDVL1kjbnE+ri7VH31V/kTdcSf6Nt/tBZxylwi1Gv2ztkMr3z4lA4NGY6wzK/smjKPhh/MQupnrjny9v89TMUFWyeM+NYwnKfBucEEKOl9kMIVFKMh1jd/xUiFu4dcMI+u0RsDlXOIQIYDhxBJaYakYXbJhYWhq1oSc1f2KkrURnS1h/pE6lAip6657nWmxEuT8QCzB/tDV1ZchCGstI0B545v8XvOS0ED/UP8a/6CWpACXXBn48LdB9eJsMbNn4ana2IvDlciE1COgm+ROBuB+iU8daQ4zvpTL8m772yNFScHVj1yn3LohgzD91+SubpGs34ZaS3gOsKfygf8M/iOBRq8xDjf6F4p14N65KdvwFka5kOfzFWjRN9wNPqUjnn2RDXkZCNzZuDwsQi/i+clfjNHHU4+hV82Ypue4OEEf6bRMk5LcKDnTJZXcs5/i+THmWwIfhojqGQIywpelCsUFbxxeCtWB6llyTMLh9hXcW4B7hEnD82yIqknvIjTAFl8vdFBCYN1+JAUlkrG/r0L4HUNdnw3n68Du4gcQPyALrn5zEN8b+AXFEAdE9DNk5RnYukgLdYCKhhr9O4yfUnTn+PojU4k99Gl/tO0vhQvqXmZFWwyL7IyOuZlXrBIA8dJ3T4SEKcnUbssN/mo43iHilvq4Hy5xznEnYc69ubnDp7PdvtPdPv6NPtEd1b6hbzAO8kbaww06OF7YnLEO/GDcqDXtDUqys7rnUR3vIMJHf9zttt5oosM4s7KxcXa1eWls9J5LORFTMNrHMdnQJlh6N3V3NPh+OYVBrJYaabHHgV47mg3tdMHK45HXC6LDItPq2TWLplc2ppaprF8ZbryucDzxRStoMGqbLGgVae9X/lFEGMTIEAB7YpvEgPoSzR1Fq6QXIQsbvhTbEis4eqgIRFT1FWcICY0/vKbj1Q5QVxwgqTIbWZHu/rQz7y27Ko6EzPZPMus27tUN0yCAwfrvmZXa5lm9H9v/Ec/pq2L885A49O6+611tSyziNHnGfL9mMluDnIoQgAFgPbZpkCEApo7Gn/h/76qzA0O7F5YPTuB551jRz+whxmNCSFriGVTTEXyg+3JR5zW5Fvak29vTz6+Ohl9U39vd9c/Kku18ds7pU1r5ujNcrduAMQZQNic6r1yKzb4TXnBkI3PhkF8yJWT1aG5dI7D85P54T1xS6sfXoV+1Uc+PABjDGUIP8+G8AvWCOEXkIsoOG5LFBzgB/6uUGM4X4yVY6aBelIL7iY819A/JbLWGkjFe/EjWIJdq876VWRui1wxtMg8rISDbM88spmZFSQV+Wsgd6pxcQ4/hkxPKV3LptUSewY/dzrZrJ6FZBvwu8znI8ZWd6NytGwev9ciELqyJOhYce93DutkM03jJzzH7dwl1id4WxB3Sv4SJ/7QXZM8Uf11QoNrRFWtYukCYMWYswmCWqL2VWZPID5P9VKG3NnwaGi81ho/vyP0AMYtGF7OLU5DqJpF2ylglayQc4571V0ABCYgt9jt0UZyYUI+j5/N0ny2AEnVhGnGteFzTf8oVFuQHjoTalJvIqnL5S7s7eX6v00zugh4a29AlgbLKisOeGylXeUUzwuLlliBEC9Tmi5u0WPII5PLFWZxIY451Y9ZabOqZtFO4WrQT97kOhEzZ51wlzET3hR2oQ7m/uDMu/EsoiS3q89MVVG7PM8jxuYlRpQs3B1SejNEs1XhYmMCKXjrq1p5wwi3Bbmyef7htmb5h5tP+Yd7JLKjbN7QqImc4pYCgTGko7AQCeIGS1dFK1atsvzmd93zQ6QTjg8vxIEXwQpwNdNfFbrZN6GbP/LPtYH5NTfgBB/SFevkPDKvvorjsS7cpp0gyIpCc81mf/9VazQrpYNTlP69V67V6e6buSu9N6MXYPYG7HZbkTsUAOiBhnwMiN/hbw+Wbcge5xFIqayiAf/iYgwkYOaY/JxHshEi/uEZxk9Hg0zCEbebRRSjq/CEZy6MhBLnFZPnWacVPnlmjXXV7n9ZMTwVw3/8eOTjBz4wD5nIGYAKGo/5BziJH9m0FVHi1K0wBo2J6sCAI8aRZcBfouIuCkgaVw5Cpu2HeJwsMzfHEvaXyFeShne94dJwsxKhzsj0iLEPtw+AhGg/oX4y7JDgZfoWzGByInIh91UsUb3KPTJXRU5gGsTIh5z0L2+3kWOR3PRdpAXK/b76K6oVtGzW1Ezu+Of/CAINHMsAB6beZOQ66QOyeTB4S29BSOinNgkAaoIM8u56VPjScKCU/3aqbHqLC7lql768hR936+PNLijThfqyzOl79PEmfjRi7W0uCNZefXmdC4q1T1+OuNjUmfs05MLN/FXGW1pPXR0ZasITnLT2XyXr9v4XgXHgWN5tL/6OP37tGsXXKPD7716rgEZeYHyCBHqQA25Wbtgxih5/3lpT8Lf3v+akQ6CWGPa1O1AYI7ZW7dX/1pGT9FjdRuUa7LNJh9G4HULp5KAUVarh1ReW85ZuNqM2co8O5thTSHtKdBUPCLutJQrNbouXnWED+4vdqtmZOme7u7Az1e2gJHh7eIOqfHOfRB/YZxQHEl4U9YoywLM2htQpFrRjFvQDnh/IRs57yfqZzG0q47YzmX1Ctr4/6xQxKQORHfOQEbvitakCw5pvmMiohnwZSRYbgV0RQqJHT9ogXt9QARkNz+hQV+KiUCxQ4YkAYPD8DHno8b/VrW7mSq8z7bUgnCma+9StF851/y50lLrHVsS4twslElyKOgXxzRjfzFMfbEYINnX4n3zwhrsmNLirQrAjeJVFal9TS39Y+CmdZHUxwG4haunWPPdkG00e8APRMs0V1oKWLGmoyt/wnHCVtLWzIm3tstKWlbDCiuQVMRHUHUlz4x3KwnrH5FVV9AirQf9RFblG9xIC0ecpVFkrVFkrVFkrhBzW0XUJGb4idVlZKypkrRBr2KuqTmR8Kpzpgo9U7GpmRRdUdlQ9CzlaP6Hp26JC3ewybI2PpkOQagQSAHoIWfYHr1gDFA9+5TVrgMIVg8vMLeUK1Fl1i6i+zDSWgZHDrfxgNvJw4nwHQo+6L4kOQRlXoS+5u+Ye9Ze+fGTNWDGqS7KuevdrPwO5HQYxqEodP5BHkv5dFhViWf4DxGp68J8weKRAIytLlHMfvhS1UCSP343VK963q8X3wW5+/J43v7Yo/jEUT8yFb/iBjq3752Imu+YABmpIXxuSfyh8Qx6+ATKT1YtVg4Z3G0HD+b2UIH1IkAP4fxYJcghl8UHuQHRXNqLwrizFWldxsULYexAtPREtESnBw4INeBzDqt+7WK+4uA1h0lVhckRTE0qXJ0gyIqT6AjAe3KtqjB6ifvdMAICq7HgJ+ZjO+Nt1wLtZwZZzOZRVDzkdDGQKAxnZjrk0RYEcn4+WyRN5UuiQC+rkleKkjeAR241itVs8xGJl4WkR0uTvBhq2WD2mKw5fUtIiqAQLSjRboT2epT1Kebyx+/Q1opf+5j++Zq3opboDqqyxB+Dupr2aN05eu3Y1Df+la1byhle3V6I0xm0SmFKELvSoiqztdUP+a63bkqZyzoPL16jkeJ06eauok0eFXjnMfBw+UWBwJ4+UdKHD5R5ktRdH6z+nJBs5ELwl8m5djwoVlnVACnh5dXh5QCBPGpe+5gZynhl8AN0nFDqZp/ESXHIVne0ZWNFZG/igFUxf+nIbmDTM6YhtlJM3gqUWs9YUn6wDe9c4sL+9vkd3q5tlEE8dj79m+V//89euVV5r2JcHOHRU4SXQ6sI1q/u5U1V3CbmiLAAd8bKgxKuqt628U8UHxhUDaYMIhlrU8EFVmh6myC+IT2gRSberbe5AqVT31DS8hYK1DP/zZ6EXmABO8qGUdnbIEgF6qj5W7n2FepPL1XNOECgbWAiP+BEypNJSqDtBIyOJ2OQzUIS3BWut2ld+6WTUCUu+IRqvVdF7T06faF306c616FP77qvVv7d1JaAx/ZS2+avW6iVYqz7Z1YrlW6zV8Bmqpt6Redq2p9tgr7kNXj8ZrPDjLDB0FeIT/oCwypOBd54iLPiC8jklDYp3Rg9aJWCkBOxU4GFwxEq+nBbyhfFLp3iIhtga8d2CxFXH5369266uMVfVTujy2jS3FWT3thN9cco3ai/ypvYiQvte4TrBSfSTbm3r6I4/dTL95C5zBIjnPUp0QiY6BVGDMqfGhEDBM98SnY4BiNkstTEhEWm1JqU8jQpPozIlAntAaZ7uOHq6rDte0Bl4Rpc1LVPKA+PqizQSUmPelBrN423cqVqrnVBrtX7dWu0vAvEjr+TCVK0hloHw3mVraEM+8eoGz7ELxSyyZ8sM1O+XYZWi6jUq/fjftVdqjxnV3Ko4ccp9NnUKjIVDQAEuQzlFbCjozZSSllZM4DWkh//mDqLx6/rFJ6N4eZrx3xdwM8spqVHhXAg8VI4d1O02bMOQLEm5ZxyFeGpE1zy813CYLV5IHmiv+vNrVH3/aVR92Gmt+qtrVP3gaVR9j+01RIxK7Z/AF01tNnD3+hpQ2zpd96pYK2M0I1mT6jGanZaTEQ8oZGqGSVKc4ty1xwcgIf85/OcLN/dewn/iFkGjxrjVI8dTer+BPdDlWaCIaaLR5KFxxG3GkcUlxLKuPVnulbOfWQdWutVaNKxmoAY+2VBd+2QjjW+TCkXLjFHHlGq42u97hSp5h+UBzFzB0GHbq9fBcrFZmGJ4zVdPgKNj2SYNFrIAoNAGySWXwPLims2GagGPNk2yzZxhHn+864Xj0kVKOV+q3qt1NrdQCoTZSumxbBukPC6wgKPlKZo3h3udmlcZ0YxwJeotN5BD5a3abLYBBxh6k+ZARuYkYwvUZQOKVKsGTVlW6sxy1eON+3jLt/8QNA7fDo0Dbb8922HndkdCO8aH1CdBxseoZ9Ac5fx7ppQPiHD8eqY4+l1cEoDk6hX5LMTjK6IIzNKOy3J3ITuTzrDX1vn9DOIvT8t2Up+kVHY29fRJF9KQzrx1knlFGf4+7nDuM7OzwHXOphGfI6P5s1Zo29HsHDqDzpanc6HyhfhLM+j6Wbii7i0Xp9a1OGiYr2UVRvAVr88zySuavJbrsFkLpdmENuhs5S53K6RZeTaOXtXd7K4VrnP22MqEdlW94nZUZ3AOnbWcnUXn0tnL2dmGq+4UD9mBwpTOQO6E+OlMPMUUALq0AyJ1D8meddVMEdiwRvBeRMoiHo1krcFs5pE8b1huB0fPjzUb3LmKDe592GzQ2326bBC7DN9scXY9Ijb4qXZede8aDOWTp8FQPt9e9f1rVP3Z06j6q+1VP7hG1V88jao/UWODl1RqvxtfNLXZwMfWzQZf184Gj6zBBm9cBxs80TNs0GM26Gk4cP7zhA36/B7doMzFtYrZ02CDYE+W/Wn/s7iEVNYt5yPrlbOeGVmqnf0tO5lXskFlsyPDDlOBb40BzqtNz+5sVtlhB+xwg9p6Z3OWHVaYoB77qhA/g1PgBhOcrzLBOclFG2juQL7BMMG5aoH58ibr0WwTaCP+mBeCT20WJjulVtulE5/4xNFsoXhmens0Wyz45JTwyab7BGRjH+3baOqYcjw0Amo/Qx3DP6dr/HMalGCappR/ZjX+iTOmnKuYpc0H9CIZ5QX/zIV/ToNr7qBpwz/PEMSYNvzzzAr/PPP27CyLFGcldFbBP3cw39xJZ9xlb/lmZ0tsEGhnsnOkxoy2g6OeTQk/bl7KZWFOC0c9l2Ibl2cXnQWOyhWcw0xjiAusmuu8ZTDWc2hnjdHC5qFvcpxPKdgmFzxvpWSJhd9N5X1FD08YzljPdEL5ZjkMk4kWuCfnLjMHm2QXyGCGdDYnVHzOkLdiEaPieX13Y2HtviObtjCcxnXsRbqApo+VpcHPlyf546xfCgCBm1vh1h9PO+n8FaKj2ROs6HCBBBE5TzSX0+pxdBN5k7WEgvnK0PH6PJN8CqGgbrcaKQrmPp0Pt7nyPGeEgjnMxW4IBS6Egt1w4lHe+aILlvMLeMSPpwsm9Dj+xGCk87hL5iIwPYHOX87OF7AzKjwN5K9PmSIL7VRRgZ/OVlEhE1HhLBEVkHwOkjPUlFEOUSEX+WAzUjYbUSFjXRxAlhgRxYgK0yJBJH+VVCiobygonkFBQ34PHtFG4lHfQJyagu5VCrqnRkEvXAcF3SEUtKSl86empZtOi5ZuqtDSzQ1aurAmLV2s0dItSku3Ki3dtgYtJdDSzC6Z/PTJ6nYhq9sqZBVuuwa0A2x6Gt4rBqCaL4TPCjzF/HSWPPn8tFMa3EFbQXnPAJ09m3biR4njmaC151Zo7bm3Z7ss+uzitaC0dp7OZlp7Hm2kcyrUdpKdT2eB1hrytJ1maeEAyG2PFmh7ldhmuykhfXoc57SEl3bBwrdvvj2ex/cE2Gs+joZYwtkF9pMF43ljhz1kPI6Xq5Pwmj6f865ku8vvWgudnz0OQv/jlTpzvt2PLnUm2kKL9DimJnS+eDY4nx/Xos153qS0F9YoLQqD0n4LnUePX6HsaHaRHc8ThdLurlLazaC0j+72ay1K+/h2SrunpLR76pT2icv5E+mJ9C30xAlduKzUdneF0l5Ej1/OHq89oSfI5G83dPa8ks6eX1zozBsdzZsdzdGJCnAvWGtbWuZpm+VNa6AC3EwIrd9laL1uC40bD9oBWr+j7zGvRsICioCobwdRb6X12Bb+reN49iSusRX0Khb/3vj+I7Vdm9OwUvHILe8FOeSrAhevFxpp31OKrQE3rxfegNs9SJOU3Ebu9tou9yyauI0S3+8pr9DI9PN6NL6bpPk+G8Lg6WyXP6VFi5igr/4f/sTj/RO3V3X/FsBbMT/Zw1a3Ev9FtzquqCwSo2UtIbWI/tqLl4GwFBDiUK0UK4b6kUIoNiyrS6556kloJD9LxCzChQrIox4e+mLsxJYENKi4FHvOgurXfdzY7fOPWBvkQ4qI/567UKrfqa+ip773l9TfGvWNTDuo0NnB7Q3ruxF13svlwOpAccsIbwmF++FjCnjG0zRwBCV9NYGF0Xny/yZ8l/81wfcVXnl6RPlaqhuP5FY61uuaR30IjGtvwAPcHukzBbp28emSwpVzuXYDrN1Qd/RYu5qSh2bthuS3r10PP1QsYVgC2CXsl2vXL9eu31i7q4hIsIqIBOsgIqYHi21EZM96ichH/EhdDsdAb36yGO3aR8/IxibIchXLd1XSXJO2R+fUx1QEivkqfmqsd2C+hnu3eK4T2TOvmBF98mHQxGg/4N+hx7MHnByx9ZWaOYuZZT4F3BZxJKG+boPJo5RXxKi5ImRnTCggL8B/3+L/NPB/WtHE4P+ogv+j27Mpi/9TCS7mAv+N+1T+BH+8pgOu6YD79ejAEB0YAvxTuhD10gHU6vuzKRrg84CmsBCxtlEXAEXJ0viGpQIfOvg2xDeMgbr1b9SjQBew3MSJ5Q3r+N3uuvnul1+1Bt/V4nTSwl969cNj2ju/Dkx7x3rX28c8r8srzTUA21HhEZ5ZKTuxPvyS8AfGclZfdeGQeYnBFNTuWA86wA96BnGSCuIkt2d9izj9REm8okqX/P0YeEQwnKaYi0ulA1Ope6rKqAsrxMDWGJCP7cpAf3o8lOsNgsM+UqOv6js/3mDMpNFt6gs297AqEn1K0SdlKwaN+4rEwdhb0gZQsoKnoVpBO/jZ0Xd1YPmAeqZJ1IJ+2C7FpgsD24VB2QXTdhdtq4llTdTc8RiJmrsfJazdcRKs3bVerP2UKzcFQlaaGKovVdfxdrfiLRqzd81KNHbL+2VRU+j5QBbDWvfDGcM4M6EoevqTaKxOnay8TzEQUDFyIDm+W94V4yEtmbns0YDns5/FiunIIBVUsLh/e/PyKg2rQgxAuh86GEw8k0TQTjXqiNVGzQCIE0Lq7hGz9d4eN+afeI8r5k6AcIAfZIkoYRkt7wOnsISpj2qATZ90Q0DXYegGjw6EFZwxg7NbB6f+9GtQHVBfoYiX4WqoxhWoDrFKCvrhtoqI9Vu+uPxag2oXUB2Z5UQjC9X+aqjGNaj2TwLVQQnVQQHV/1thSyc9F/zlI2ufC+oSWnUiuPMkJ4LH/mrt6rggll3dGcXJt5puy/p329e/exJxVd1JrNpquuTp+seTWf/u6vX/Rj/CiasndhguY2pjh2NxFLd3dH1XGRdCC+DH1Ys1kV6zia2A2a14fuiVydeAuOMS6Br3hXDbB0siqTq003B0Et1AlaqxKkGHZbXUXclGUHCmOGMeH8oiT5nngDrQruleKe+hMQrgb8oF9k9RH999YR8f+CHse1Cs92Z4eA+O5r2GTqXXjHvrI7D0sRUaamjaPDaKn1hGzSqf3jJ1xfR+ytjdQzIsVp+8gzf7tcU3VVl8U7fXtTjACeFmHay9jh63+yiMJYn3AHPiZxHugO830qFPCbgqBgsBsJ2x7v4GSH7/ttU1vxoO1ZtEpAqFl+gfVhRof0G8takd1gGW7rGgtZaOF2GBgwa2BY0jitoKDUsb7kLzECvouliVvapIydOsT1hA1lNAuejerlsxZSQj9Ia1+nmqNucmlRJYZoKAy004xVThSf8V74K2NCL++2444iovSPvFBaeeun1gzUY/m7LrdrCSzZRvOC+YNSJqYxFssIDYIB6HFd2H6A8cBcEHdZ+5vfNCqPs3LuXzsuBd0A6P+GcTE4UeBkQJ1suaYxGqAYKg5WUiNhGC0QMcc6AO40PQxIfixQ68TIZPidw9RDGGQC9ZDQJ1X2yCbTN00V9TIpuSxJEA+zsH0plL5TysUi2N3phthlvHzTfrp2r5Sj5k2nwXDSY0A6qzrGYLMya7KuVASablPYfwDsrE7xuXCGDDSx+E6oV5qLXzNx9HJ7ThvZoz5P2u3aSSDwd5i5pXZXn+4r0w92V6UBotV+hOlyKlO5GhO29yPfHTaGnPSbVHR1+9hvao5nDIbywovy0iKDZsFaNe5uVKYgwhshodvXCYhZbUlIlWwdRKbUBmDNEBtTlcUBvVaZn76UBT467KM1emZhkw93sxDESC0lCk4NQ7G5xaWXTu19imWmFfb0XK1dpIX6VSRFGrai371IN/98HYzYayXIZyCdae7SdYbT94DJEc+itApcuw8ANgzjJnHvBrwYynKBJT7KlsumR0+Qxoxmxllc82NCHIWmo/AFug0ohmsNPE2vTltCIlXw4kBEuR1SUgHNg7jmbskpzqu1Kl5uoUap0iU95RzC/tFGcruh9MkNnFzBaJODakWV0ELi8CnG1Mc7eNVGw2GXrO0ZUKlM3upFiZbpd6Zd1YAr/muj5mt/3UqekqC5lY4FmpuGxEKCkM2oXXfITY5cq5AYTUBY9UB0NgE8Ih1Treh9cJFy5BqnepRKwoE6iD8UQUoyqf1776GTxZW7G21dXD397qJtUTY0Q9BrwKQ9KDPMFd6eSu5bInXmEqqn1qZqFY+9at9y2Z9BiYbuHZ4oHSswXQEeJSp7QLvL/cBeCej5KEfRoI1ZhTVW/fQCUJXDTXP2xJx1CT/YVtodEltLrIwD0ksxFpcZNhr88GVGRGVgrWcJUBTLXZar46rLWcqQn/ukKhHsQ+xnTJtme2PcH4Qz/ysmrEZ0+LQzrqEL+yS3wqKhCqqpf1PunyNvZlJzr7W+v8mU++olEnSuDueFl9R6tv1s2FH+pc3lrp7x55WWulqa101vQ5bfQZWT/rIlSe01Lx/b/VDgEytVG1toSCgbkwJTF79W7U3dyPw/KMWLQXey/W5E+44uDhSBmEV+5RieOQa3Vtmwh7ldA6HHlufHjZzXzrr2LvczQYHzenfEg9RWJJIvJE/H0owCsiqUVcFU6oMWkvQ3kNv9oSX1WNaJ+dI3wqP0P0deGDYq3uNTumRaa5yI2OxmblJtWT6U2OdjvrmFW2ao0VLlQ7Oqb0n26TKBTPL5ouiODJe4Cima8uMrNAq1Rx/BLUEa/LMQksZgAlSIzplzQin1aJyUUrCC8L6BjLmZqHtbJLGpsUYkaucr88Z532HjRj/NoIiy2Zm1INOhvAJMEnts9B0HNsNUAkHih9h/jJR6Iw1I2LXMkornjZSLiemSS/dNF0dRYar64Rfk841sXjhe33gOuuPCSz2tPe/hXQAoG0dc2o5lcuaOTaGeBwBPZT107yuKZGgKegr72yKATrGcWAY3kPOKWlb3KQ04TsLio2vggSQh0fflPtFmJSRs7uYcuv0aQ99WeSGJTqV2eoTW0wsFAYQHLHRj7G6S510w8BpdZaB2hG22Qei4f9GPrz0wdRSHfLVdeBCqQIJUOKDgB7ecYO5BGFV2ShCXVvxjDUKMYD2/f2GaydDHBjXJc4W4aTqxTbNWwt9g/U3rk4EZ+yOp2eur/1qA8ZgMlUIwioXtmNM8WOQXsv6kvS3CcPZHMxxXjQVEA/D9hAfYYZ9DKF5zPJ9sD1k7b669aAaRZYZ4OQLwNzr5NCSl6EOnN2DhZTJL1dgZlAihx9Cq87NkEIMXjwCtTYx3pXUDd8ITF1fuihh6LrzOZ4QOExZOtTtxGzUa9bgvxwyyVKBuaepfXn9QtAh+LVMa9P6RR+eO886uW4cz1+9jMxT9Q5oMf+TICTIkThh3E/kTrG3EzbShYdBx4mXqoix3u4GmfhIlRHzlOTB/se9iNhJUphv5SyBsT/StZC7SmMx3gAwLNH7jMGQgZfIvkKRq/+h8c3SCJqMot5HOiH/1P9MPat5kLbiYdBx3Ecl7919DzARTw43qBQVzfY1+UDeP/QN+LnUYLaAKr0Y4BcHsMRFdr636ZnqAsZFAgUP0N9Fd+OZwMxLGxEkH+LAMBZqjo4R/ptiJyYpZhsSDwD8p/k4ADsaw95T3K4G6BIV5XiGpwYDD3HdTs4xEqf5AwBO2i6XCTMa4J3EHiLBNIEnCbgtfMkZ5Z/nvwkJ9WWgFW7l6Ck0bMwwoE2WFvC84mEzbwlo6H2ZG4pH1KgzzuWcpHHWJwgbyH3NDeuXHGa8yJzyUVjvcGMdOxQxBv3BSlNPuO5dx2FB+FVccCbzlyj6muJXUsgTO8l7+feyL0qwnoz5lAilytqIETTV6mFjPHwlCCrRqUde2SIee6O7zh+I1DZHb/2K7gSP96l2Psxf+pI8yIsl09rntZBgdjvdu6qoO/WPiZorpZCHHBS14PFBrOnUwRFH1P25Et9JMZK4syS+7WbwazSXxaRYiBWO7x2fwWvL5Tj/Hs6ArZyYEd+vFaAR/q7r9YEFFldxfi/Zw6nDtKPmxIDlg3xgtx488vc+h433vu13EOe6up7WnwdoBXziZ91qI3uIE8R9fRV7+de5675pEPxy6bwFpZvrtQxjjEte9M3vwwVxE97oTRDaKYPgbIvrfVrrTWbR5dnl0pYDG17G+zjjH2crcJiuvoSVF/86ktUfZmyU+EYvAJWFWD4oc/eWE4ehoMMxOjTDjspLlk0DQrJqzMH5KCo8E9/sVJhx0zD+DlZOywAzrtfy6/iDQtQh/ML5g6Kz3E24LpRWsiaQXIU2ye7T98sy81IenZ626uxIqkjb49sRbUsJMhMNgDkIPmY6/iHmCQ7BVdycS6n3nVVNsD/wLsJjuOLOmG3r86koZxxMHVGYVDs2mE/dxFq5AeqkR8jsoPoXW9yFNWCoOH5HqfqS0a0Utj0IAuCEJa9LRwdyMmMK64xlK4X3dRxr+4ldfieVr1X5dhA+3NvCTNVdkzDohqBF2XNBsU4ullg0I7xiRuijl1e/tMWEKQYqW4lndynaTKDoJrdeVryZyNnVyEF3Nc5kPulGBC0igGe8v0XW75fst6gznpRhbLf0LLfoMJ+g4L9QtQVHgrtDIXgCnlU4Qvx+NPKF+LxD//9ja18IVa+EEv7/7NA+bAVPwOLn9rFdTB/h0IQqyu5Sv55dmnw9ke8an9VV62+1RjEOEjf+Gr9iMyf7GAh/9/bFPQaHwDbdAS2Zz3w+PuyGAv3YBY36naqdSsvsXWja7NLcr3lBkW6eyTshg+1gFjv3c2/ff6F9zZQPTiBg8hxyZIc+HDwt5R8BGuf4p+LYMDuc4DmbIZ/JJCgz+w+2yCGmdkc/+QIAA97TNzwY4ECl1M0oqmPnizoCcoi/wwRJ0oOSreSrzGkfFa/ZgSkf2GWjR0EMzXh6RwGwXMZBF7SHH4b9ECXq1BRhmohboDLwMA50wu5Xl/r7XBNupryPP01VJftGB8QmGfm/Qx+pqKx7Ex+21a+ncVvW02+nfy8xTzjCveieT6HdqCLHp2hP2fqz1n6s1N/ztafc/Qnv8DpiMQFqdIkpJrwZLyGtFB0lp83m+5oVzfVujqPfKajG8uOzgknDrH23/Nq7e+6+hjjZ1ON/Y9TA2P0aoO2bfo1W+vXDFo3vZqu9GqqAr60Ar5RWfocfhuWb+fy26B828Vv/fLtPGzryjdcmeuVbxec/jScqz+79Oc8/Tlffy4wM7XTNZ9Dys/2xClVCAXlIk8hZGc4zKJt5kuXZs529QnJiJlWvqd4T+37PN7nzTt8I/OeE/of3LSrYzskkCa252PnOogWS4LqoE8XOJvH/mWc9L2K/Q7CFDlKZFVgqYvpO0CC8SWLeWFuJyyJHRQrNJkZj58vqxPEr94dyC/N7qCx3FECFz+N8hea7j1v/D/gkvCyBa4rTEwneTnTdm7gezgxSOBqu2NK8mR+CBT4qfz1mmIRh1YCiiEBhcQ/F4I2Fwfm3w+zWLcBUbcBcbcxI245Vx75Zv68wii4eEcdoG862aXUJfCl+MD42sJx+AuyGJwlLpnRKvkLiS0yVwiZyzEOVusy1zp5Goj+fZ1C6AqS81CRFRaUAuQdRg4t9q0dlSdUgJipChCaF2lGerBpn/ecoKJAcK0D8vIePk4TCtbvXK6iA0NjSW9oFLArE0sxqriy7KOIN/5OjKs8UPDhmBSd/a8FaP0aTJCzVhOaMUqTQMtfyYj437JQD4skSf+5EEY2HcU46DqRtl8+HIBsz0CpCuMdKTf2V5WQkHN9FRIrWxug/3eLOkwLdsauRe7vghjkUWi7Kgr+VUijHX0G0AMDwY+V4rVIA6U07apVafWEJsDqkduD5K0OK5TaphUSXXPeHJ3q/6KCYGlZZKfNphJk+kV1xH0Q8b/9AljI+5/LvOSoC0RvSf1TOTIz6lx7/9hJ/uTh9+9Qa/8OrdU/pYe5iw1Kof1Nv/KjZZ+vKssX3XRNN4sxqLUhV8YHCjIcjK8xpPp4veQdj834XJFEybnAccsrI3oqQI6SUnIPLuWewXEzxP9UHWLhaB/z0EluchzPbPDM8h6XLimLPZ/3LIhv9b2dbjHTTwC20sZ/lMKJ2Uuho9Z5nKfZtYIGHsPVC6cmRnv61GRv52GDTc6skiOxMXExxG7ZKw+lqZP+jp4rMX2wrl50BDcdXmxx5qIT+52wibtGjtePyOHc85P6+fNi+/nzMnYo+v1k588umczG9d1Jzp9tttXnz2UtHu7Lt589V0xunfG/2LNnfPCkOI4e1WM9uJI9enXLcGQ3iiPKHXjBbXs45eFJxkFn5uP3iKP+PPWw4L+XTbvm+AfmDO/765fbpl2cteyF4h67IS0mXnGJq95v+4URuuZ8Papb6uvqqJ2Iu2akIOsrr6mM1NUyGOHhEx09Fsd23jYUa0PkVwePFnA63trAnUdqDXjShDkc1zpnTefTpWa10Dxc1jpBh1/XmCBcb7BVXmjmaXfrNPGu/0rIEWVQjhvkNJzKw/DwWB7wUfgeO6vH7MkOAO8UnkSPEzLuth6Yj7tTy9IeZm4/MoNuFNnHD8mpy/hl9PRWYP38K+2wbCkMkIuguzIfhJ+iKgx3hx35LgNMqgJTVodXMEE3eYLQ4NIz5B9+gf+VZfE6txCiHSz99IuyAQHc7EnPb9dPevT1x1wflAV/NV9R5gRx3pyY7pnkrj0xLb204uf5mV/GWmLw2/PSneVx6U4DsbBcLtilfK5+WhqVp6UBBi5BGoDHbvrpW4TCAVUOghU3/Bd7xn/x7+PYt8Wb/Vr5fwwnvqvzJ6/u+QqQMr7NTRWC6xQkFwT0PQ7JFiPGi3rcopq/ZhtZbvz2P2wNSCvHadZpVJVyN91CkbF9yNUeQmn3Zsad24oXmEwsFy89fnmLUyHxtzjJumyMbnLWZWPkU5EZWck/CY232Zo0vqxDaXM7hbeA9Mf/9MN2pYE4a3EmDACykts6bJUWXA+gPUMJ/BEh8M9XEpG5Qlna6btfIqxfp+++nKULfT+xir7vsb3abXq1u07en2GiOOP5doDlslVjdbnJj9/0mlqTKBiSV5ZSwhIqHTEtkjVddxso5oIot8C0TpRlzRk6r1XOmirTVsg+Xw2VjCd/pBwUqry/SZWvLmeiRpSvbRLlq9BcjSRnQT2I44v51Xmix7yAArXnkGrAr8cKX5jkejBsKg1rijZy3xDg3B0fJo7XoZJdRw5Jj6st/G3M9q0VQmBjIvgUVPxgxEc1hHYZGagSax/IUHNZToGNnp0FJjyDdHa56LT1oIPX9zjpZ5nwAdAtqFFjOGHJcHzDcGLlrB38VBlOZcH01eq4giWyTktuU7ER+P0659DXn4zNPSCP/+ASQcaQu8YBY90XHhazoq0unWvVluQtjvb9FqcMAa0U6ljetXeA2L64YXWRNGxLqM+P2OCXszzAVmlI/csHbtXy5+pJnlT4GPeTEtn3HMtHlnNdWXKuKw3o+4YQpAiw3eRcacm5RggK6QGfpowVmtymMRwsoN5R/GPvNC1IGDfsUKaBZDA/xiAi8pbyPvXRaWMgNRGE4rWFTyml5tNu8wmndDiGnzHpu4r0FOmzNGvSd5b5KdBK+ibmpLFsm1CyLBlmtMyM/bzHfK7EIpmGAfM0kJn7PEW9ciFPhD5SDz8vPmqD/lci6P8JYIJiunDTP5Z3pLjpp/CsN6qqVnq6LGC0yzUPj01WbHXwoANL8/TPzJrhhAhJB2Dg+OLrlnBmXQR4wkdZ5jRM70N+fV9Ws8ViEECp9E/x2XyMV3/+jHa09iHH5I1fdhj2KoKYvPz7IJZ9nOaH5MEIyFTZ5z57B6otUY+NPStSTr8mtfTHd//DyaWcZv7jP374tPJ/6Ldeflr515KiPrV+Keq2qhS1vJYU5YoU9S9/0B7vzi+kqBubUtRXW/e/N4oU9bqqFPWWqhR1S1WKurkqRd30b12KcqGdXYcUZWFbl6L2VqWoqx+xFHX1w5ai9lakqOW1pagbV0lRewspavl0pCj/0Zei/KoU9WLjrqUqRF3SFKKuaheint8Uoq48pRB1rQhRIrMFQq1RjbEJV/CeRIhyCyHKN0KUmhqQa4Qo5e1uQ4hS0wb3dIQoG4bjEOpvE6J8lSBMp+tC1G1GiDKyyJ1KHBrDK9zzvgdfG9/gp9dN2gOWf/1EM78umvlWNPujumimr78YdzUqv/oJVjos4zLiWUknM7N4MkUB7e7NRhq7yTFXQ7Nu6YK6V95NrduW9xsSWr9huVwKhD5/LWS8YSnjjY621VC3rPWbMl4KGW+K/LqMh8CQ/YaM19fo9vm0lfH2lTLevgaZmsHSacp4M6WMN531VcZTP5svhqdF6quIh0Pko/inKuL1gaP8Z2yCVcSLyYe81qcZEzNYAjQd5FRIWSqCmYugHoSswlXeLI3qQtbVSGCB+mRCFophYRshy8zEQCCghvNYvgwJXaADNbU1jZlFk34OReVEsSagjZoC2m0Y3BBXeusCWiQR5UZWQIsoRlIpoKVVAW0AbblDkVISmoKcZoqNO8ha8U6q61/E+FbZDR+75nO77La/Krv5hezmq+zm6xUUzhQZ2U2r9GmqKbuNeB96Eg3VjX9/ehoqld3Wn19lt0euAdupYa68nYW/+Y7xN1/SbehOEZvDCxzcWZc/oOHuzK2oBsk4KMkCvcQaIstOJS6zeQyq2KUYYo4a2cMYII/lBjvxhwN5F14rEwhDMZ7igrKHpInW8Tr1TDHJh489KWtLSGLxLtevtXJcbuDqIIXgJyYfPwn2GPi7fIF6B9A9T9pwkLlw1JAew5FU4UcTKfIt/V0GNzzURCt5VHWE2qGo4v0yEmy2PlBr3/fyd3TSpWhio6AV1wFM8McEPwn1wBt71M+iIi7axR4ivG7sFCZs4+WPwEYfx9jLrh6mO7ibxQ/pnwnLeGPkOjcMD9Xu5LgNiuzekXmWInuWAbRnbrmJ5OMqWqp2eYey0MoEIehpCCniRcZgMUwfQMeywERPuFqJNVR4kBd9mJRH3wd5dJ9ZntqZ78zj8UuWxi+Fxb+N+d6lSO+TRhQcxFWWRINUwDZUnRiYq8ox25nouGiISyf5aHx3qcAYjT8mzzQwt7YHnHSiIRTISDn99kqx21YXW16j2BHXFrvRXVXssLtGay6rBWx7WrBnCvbQXrMgDCPBlaib+XYiUAcu6cNa37gg0Ps6HkQwa/OqrT5owihoq1+UN0pMqwknPdAeMqGyDoeY+aENrDa+xeqLxjcr3Pqmxr441m4ZBwW42yIzbd3NUnDsqDgv8ysGvUq7MUKXOPzGyWVPs+hUtrUxB5+tVzWhfpRWxSVQEdKXL2d65oPT+PA6r8kbTHxgf/z636hRepTRXfTUFG7ZdVmSi/XG3Ushz/kv9fitp8c2N5hOk6ohcpeH7RWALPXGgSwOFfD2KQnen2lA66yr5LmndDkBXe6X97EGpew3LHaz8OohVDuF/kyodqJx9fCHWZji9udhyZlgsUHOSQ7A1RRNAcmmZVKN4/AZgwpwhogSU0CzKUC74umbR6TeL2qt4Ka9NjSlkYmm7cd8VtyjJmhvitvj9GnTEjfho0iClhJpqU8p/rjODWQtwufEM3hXnjfSAA6h5zXk9iaK35NtpvhYvnBrtigxd9H+FrjA0Y7CAzmUWWzA6NaujdvL38mg01CqJEap8uq6liMpGbnCex+Fl61Z9j1/c7i9LEoie6I+kLain8b3g8ewuOdfJIoReUf5tSfwxPtkQgtH80FJ3b9NqPvgzmwbA7/YT7KclG3j9Q4IjWgzbXtpTtSn8Pvek297SZYR0bYbJFhFxumSkvNPzv98x6CDaUKGnJ7i/H/8Ci5+MNsuCJJhee/gYfQPZGcQfTA7k/rZWeJwfVaiLdMOodJTSopg0zkFWojHs/nxiD6ew49KxrNzkUEfd41hv3mmEczZ9brS/lYnCudbXnZ+QrAuPf9gfgGMlM8/xkvkLHhfl3BWu/Np6i/xa5RPQZCIaIbgtALyrAx1CkthCqEheFBwyd1/FgbtwaPN42grXSAi5hRgj4tjaImx62A+QyYvIdeMzcUFJzRYxlWHc+k8cLXzl3C7hM5fyh+PGSwElEUawTN6PmgMb3BH9gQ7vCfo8J6gw3vkI2sd0hPWPaRdJKMpBkLngRifB1Qz/sPNRW+PJGbhF8NCQcQkK86QumUJ8gMnqHA4pf7Fy2Ln1oudi2JILYoxwizlF0gZxpcp6Oo98QZCm3jcRRJQCEnPMig0tLdUBx3kBqB3oSps+His12KcPMIyH9Tp1IVPDZiEaqYXSybYkGpuRhJ+SfUFt2wwShlqWq+Kp9O2lg2KKuG0arBv7j/+xVt/xvvtS7iIjk7PDfLH0aDiX4k8FW+P5hdO8gEjDvGvh5q0Vk5eyb8FkDwHdewmeZ7hqfTYKz0NJsu5wHk3F1CIT0HYmrKHBsDXCyQoQ6yz8bpVs3G2CRm2HeLITvFiL/cDGDE3wvdRyVEwAkyeYgl86SLfufg5V/rMJSxngQ02gjhsxYetdAbezqAd+IGXUDOiAmYGkhh4pJCqOtem3Qo7A65925/y+v7KWz7+pGUBHMPicQw4/h4ZmCmUBvQ4QMmbLLdCxniDgLQbiVeREQhhJFKOI2dDBLc5AVJ3Cxh2gyBCT71bLCjnQeGUiOfTisj4BFrZN7QSbLmglf0qGs5Bt1PwTm4KIt6UKAg6ALQE5FBWYaZYXR5X+ek0zfPYdPodphmSmOIxpQg/UbF01cT4TmfqVTLjxlQr/fO2Xcme09mVXPj12JU83xwTNnclevwNkwPtzNWP+q7knsr24hOrtxd3r7G9uLNS7D2ri92+RrGbXFvsdW6zGNhse2u1Xcl7Vu9Kbn8sdiWHnequ5KurdyUPnv6uZLmyK3nL6l3JLY98V7L8CHclVynJePYau5Kb1tqV3Pz12JVcVe5Kliu7kit1VwLfILIdiXSrouesuiuh1buSHeWuZHe5K9n5zV3Jw96V7HrMdiXf3JWAFJldyZ12V3KT3ZXcY3cld/6/tiv55q7kpoe3K7npX9Gu5Ju7kpvrs/HNXcmVKnDsf5R3JYZWYldy5zdyV3KXoyGlm1uT2oHJZsQ4dowX8yslfnAp0/miav12s+ZcIzciugVGbyMKI/RFXWo0LkBrsp16JigczwXlvqOws5mo/SLP2NXjTvIbG4aOMbsKDwWlMDbiX2/dqmI1ywlVYxypxjhWEa0r410tlO0thTIyQplRGo+Ko/ksLYW3KSOoTdcFNbsxmlH5aVYFtQ1WUJvB5M9WBbUNhfg0O/ZRYgbTPbOGoDZda2WuFNSY5KOhWfsxn7OC2owKarNFSzNoaaYuqE3jDwJZRVCbh59W/PHzJv7t4I+fN4tkli3QEJLJInLAT0EPiVupeyzfdmtGpcw2DQkAp+7dR1OT3JS7skJCtDKXohfLXZM8rdhT8PotqQycpZl9eZlD/Cdugx/8cLlwp+eoAxu1MRkaFEYmGlqDnqNlCTmeBNJLAZsDBkohbeNMpcgZPRyRcwpwhwv/6PuOGTkrJO8anmv8rqhvNU22PhjN12X9Cjveg1luxcHtKg7uoH52hodAnXMqCW4X6jZT6FzOpJlC53IWPxr99E6aATVR+XCmUFWfg7xGPhyL4wHT2V20+SRC4XlWajovoR0U0XkHWfjiZXTeMQb+GdkFlGQxV3NBPsuiEr/G+YwefW+A6LShFJ049QBkSZqF6DRrhcIhBwOljM4X2WgGyAJVBVoSCWoDmbyEXBtsLi44oeFyNgQz2wW553FLBC/gj2sIhURTIhQOG8MbNoVCDO8JOrxHPrLWIT1h3UM6lzAaKxSib106b+kx7d4CGlhX985udG8X6A0LEVZmPZVKfCtm7IJSAu3hNW6o08+plrXJZ1eTrTjCXNPNZsfM9W2SKr02qeTAywGAEeGSpbndwAqsArj6gGF7D2PeMJ6vf094nOc0S9ayLTNIjASmix1YfTT95Mus4uXCvSztw2DM8GDGWQACQzQw4CeWvs4vpHDec2gUAp62LZDCTRLGg6RCCh81pPBZiQss3cWMbSik8GFV/JGhuvwxXtJMRgrfYKXwIWG4WhTy4rlG+Ez5vS6F29ayYVGlQK0ihRcQpA0KM0upaViTwoeFFI6atFYrhTNlwz5FnjfQbpXCh4UUfkEhhWP/AJ46C1Y4ixnh1s+vnw00UessI4XnkADPpBxID29BvNQ2ZzMAuhEXeASYK4P33EaMfOfg5xzpM5ewYkMhd2f4kBnx20SjBVR1RAXMDCQx8FghNaxK4Rco7NaUwncDcLspNjBTKA1pt5HCWyEDKTxkac8eEcT2iCBuFcYvEGhcQHMqjF9ghXETg3hW8RmfakcEG9Y4IphvEcZnVBgHvGnm1ML4LC0aYfwCwPYCJBYBjGP8xCcVxu05gQrjDxTC+LNbhPGrH01h/DtV3rXC+LUNYfwZxyCprFMYP7WG1BrmXl2z23hG1pXxrhbG95XC+I5SGN9dCuNUCuM7vymMPxrC+K5/VcL4JesQxr/TCOPXZkODwqcQxoH0UqAqjF/7b1YYP+yUwvidVhi/yQrjD1hh/B4rjN/5dRXGvymMf1MYv+kRCOM3tQvjN/2/IIx/5zdSGP+mMH5zHbW+KYw/32rG4RHwURbGDbvaAM34N1IY/8nAk5CfhSOqE53S7Z6NhwHFuLs09kUyQldMMFJv/PG/Ey+NZzSc59pIIPe7LUEfvfEHfsLEbNMPrlyfU6HdXqXEStJ4bDuP5aE5QY6O2tmPKHzOwsXeg67m2pV7GpHGQ8vp+ELAdXXQSVy/+vHX1tq32REOV+Ry3O50MfOpdsu6RDI9W71X8cq9SrzGXsUzexXP7FVis1eJyVu9VzEX8u1eRatfdg5mvjFhuUdQJ/eUiH5C3shGu3TGd7urA9Dd42ae2jq5n3fVy9q9/ItwMEUMuk/xo7T8g4JxSPq8u5Te+koR9TJPKfZnUVr61DuY/g0gYSi5JHOlF7n3ueXOKjRiqf4c9rDKVu2wsEM7UbqZ9JLvd92Xqn8koBIBy7hZWV736mid9+Ru+kM3c3YECv3Pg05bJu+duW/2Mw75B+yF0qTI/VQMJ/mrDam9Xxke8uQX+7quuXc5dQgi84NuJRqzV2zAKjE0fbvnC1DgiKcXpRj7ItkZVsz0sRXsVSLI7M/6uhUc6FZwqFvBETKk5VZwqtwKTpdbwRkaSTieWf7F9m9DY4OdjXS0s+bqVzZXMMdkLH/YX+mGbZ5mgcebKKXZAwjsQhtBieb1rE8huanYr82PfZTYCNqzEYiqUTY3Y1lPsgXB1Q21VhbLneFGEaayefsxXwSTR78c2qg7w3nTEjfho8gsWlIutmB3Tvqs+6YXZltgGYM/bm4rjbiWkTS9jUDCY3kmGvLzUJ4zGmCh5RrBbzsNlS9N09xk33fIf5+7dMJsa4HSY/mZk+wsZMTf5QuIjbiTBsfys2+lzZPsnHJruYG2YmvZp8HT9D7rJ9yc4fqDWWoybFlrf3c2LSBeMCPGWa17PLdYTAvkVnZ4uUvctZCLu1r8FJu9Hp2NNs7MQkG9+9zsXOxQvy8fHTMOFnvkYt+G35WsB5Brst23ma9ozFrswRDQ/b5juavynawwHhcyIlKjpsBPJPoH1cIPKgGRgIoHs11qZTWC3Qzuhh7Izqc0u0CMZxZ133eeMNLZgpHyqXTBSB/Hj2bf93h+NPu+J/Cj2fddiLz6+C3cwkXUM4O9iLJi39diZfpEuzF6YkLnU0JPPJjvAeY/kXe5dAGvlpEoUTblGymF6VY/56UItjzP7/l8uf3g1AO8SvcQ5zvAAWople2Hi72xzxLPHqww3nGYKMFoSTZJ82TyEnLN21xcsBDML6SLsG24GAQ8oIuX8m+t7vvO4YnKW/a0T7Jje5KO7Uk6tkc+rNbxPGnd4/kWkqEUo5C+DeiJS49p93I0sK7uPaHRvYtANi6izVgQbm3T9y116fpbsNdxOXUHpmuTbnj4dYjX/hK51U3fhe2bviesselzsSuindnGMgnjKog4qpsFYHTr5jOR5sHNly/L2Ou4XPkpMrmFpG8JPxYOeau3eVO1bd6FOvQLqRj1hdid75Eho+f8t1G2eRtpO89dkYQRIKnY5s3Ut3kYHACIXmOO5ottnmcFa5fLD7HNm+eeayazzTNjw6g8MqPGtt1NMFMyXWm9KpDWsrXMM1Wqh8fKNq+ANs0r6OzmBVyy2OZNy27FJf6VzmmtnLySzwERHo86NpE8z5MP8j6NDUwuaLJJ4sjr3ivVGXHNjHDre+rbvCYyPY66ss3bBUlvt2iNwGMDXlyZ2VsrL5YRUOG5ituIke9C/FwofeYSljObXUdhGXU+3s43RnWAqo6ogJmBJAbeV0h5FcZGmxR27uptHgA2IR+A86lvYKZQ8sgHlNzJcitkzDZPrnb2dLvX1e1eX039Iwq55GHP7Pz6YqHriKsucTbfReomo0zZpju/TXbnp1qifKOiOD6BYaUFw2LiVDCstIqglI2kypEGNE4h38+and9GAoTNzs81k59CJkppBMiPMDDOdgaPWhHDYYooiRv4EdtN/PSRcn/IFzHi8iLGztO5iLFjPRcxJOCLby5fhBhOgMYDCnH5QrW8PnmYJ5a/Qs7uU2AuY0S2kO5/qoUi8jVbHvO9DIoO5h6khVB7h5gkAFqgJOeEvJENyu2ML1m9J9onQVth0l2Imt7Yt1V+slblPc0q28KlQnRv1hmS//1lnRdWq9y9qsZdqyu8sFkhPHvbTupdba3vgdVd/Hyn7UKHeo2xHVHstAVbvW1pBFW5YIE/zB5UCojxHMvtjYO5j1dsjXAZxk5mTzf6AXnyA9QNqIcf/kLxgQwI0T3AJUOuppjv6ux+tjLK+1aP8lO2s9Zzvz2S8u2ljchc2ghllx6aKxvXUIAbG+GpbmzAa4OictFLh2LjcCyCrzHdYMPxUrLHcQ+N3Yzl8My1jif5lTocwWKB3IOZ7KQPZpLygxopnNzkgSjAZYw5UdDo2IuQrJmnmJ75gkpZoDOZhYoI1iEHNoTdkpJiLvS+fJ6oH5a8/335YOwznzWZdu+lAccSZOj0uA+gT0Py8DMiHz8pBfiZohA/0xThZ0YvdswaH0MbTLDYORKPIK56BAELp65O3TxG0MXE+uRixjEV0N3H4xhT4VGsnuLNZtM3KM/ffaO6MixfK+vSRlTm1Wvpai1c3ltdniAN8B9OEuGcBn84SazsUzerQm2BBpQczBYpgXuiLdjvbYUROkS1bUsZGclkXjYPOGuA//uU5oSVxjTk3m3OXJrKBpLTxfR3wfcyivGTI9qekYUGlFMmxLsLFOsWjkFcdMTljGkZDhRdALJ/yFVkR8IU11f1ImbS4mpaTMQj3GYgYus5UdYzojkJ0T7gvrvc9y73PZa+d9H3AfWk4+RCGEArMgCk8k/9g3H21UX3u6b7FOMnNstmjpIlWnxBPneRLJdsg2DmokxoPljKAwEM0uaJX0N9neVnPhRk5B6LRTtsz7mdTaafMfopR8UgbuAh5NPCZRLfMgXLWRJxfrvIRuLkibh3yKtf8giSIb6YsK3ADtBb1LNV6wkoQo7A5vAxOPE5A42hLwOnLTKLGH9c5cQb8bPRwGAD3+YCqXir63iHZPg5Oi7bEVeGnvtPa3rfM/4T/2y5dg5bTiJqybSw+NpSmutDG7BonHiTD/iwvNPH09lu+kQ31bR5eM+fL+Py7DRO1jyNLS5SAaJ3IblIzK3lhT+m1TxjHh1xTbheLIJ2d5B/PHlVqztIDCF5k+eHHGXWxZ+KLSWwFr99oM0UMSb0F4IkflztpHij0h401Xb/3RiRZIHcWHTlLkpEgUaW8ChcyqEFPocri8nln++WaMGC4dW3+dobFW+AI+roMl7kvXOkh7Na2xt+iOK79v2f2Z9+2p/+7xsvnXwgT76LC2A57XHBp3n19LlxlEFe/epWvs6e9OviWl/52441v0WQlCNzNdGgKWAt4AbuyILkp0We0uS1juOu9mM/TgVT1wjwcLNMOdyRfaEVgyF4n9wxPpC4r5zWJ4c0UGLVSdKJjxZOkj7rJyd8PzokMm/hv/QePu0IjbI5HONdiSKiPyA2OwshxH+s4nNAgz0wEnPN1zHHAi5P5kHGLUWsPNFzGMU2dUQV4PqL3GkdMmKNPHOnlWLoBkeQk9Ix+GmfmamXzcj9pu5lcj0nxN/+hdwKWi5qwp/2yacp2EnMkkdTB5ioRJnDpLDjmTvQdge1gevagLqYr8/Z/cZGLuFbpmSYjA+y5mNJ42nlzawDpY3LnNmvXcsdDt2O4wofJgkSwL8DdeZMs5QuYS+Uu/i4QsFRWTJ3TT7AyNV3E6RCdWizljGVtL7V9QS0sV4PMjfL40ZIiCMuPXCkKfHczA1iwlAQhNrB1PA7cnYq142B9PeY0wfgXh/5+pgjs7W61fE9EyWfHCCIx5Ph2clwCvIISOJPPwQW4OG42NxEek0YayHIXDsHDnqZxxTCwdlzIVo75KG7OjnK+tFIp3rtPkxe7bg4o9B+OWM8mOYdoYDHzEQ73EhxI7ODcM5HyZ/kYWMzF96RRXYzF3GTNup5VNzYFBUVWHkHjZkoZcnfei6AVBwouqWL4HX52E1Xu9g97LYHo0Fe5DxFLBqTa6dbqamsx8YWK2r0oDxu+tvlJn5L4tBA71MWhlz8PnfsPEOWzv2/pRkSG0TEHDAykKVujaWGvgeVuC0DGw3lNrd0FnsLP16pbHq3euc97iLciXx8C3ABoVWMK1mk3c7Ghhzjxuj7L6nt68NyG1PKgRTak5OF5bb579j57yRKXZ89Vv0Wz2oZwcQ6Lv3nuuNSff07N9QFw+zhJfxvyXclnE49BonePLFCz4XHct+697yk1CFeYiYgMHJQCIg23XuG5UGqjz4XR7OBOt9UZDyVvkNDlkiYLqjIAhZGwbCjuzJfy5N3bCV36yIEcbeEZHnnuD5xAZ85/F0TZvHLWRdFwG8jpPjL6i4Yee7Kuomy1C6WlUjAPj9VbvJ7xgAv0Ig6TV+PQeHr8akm9F76m/wFv5+eIO40P7zjNvPwE283D/+3ePit4uGH5GEh+f3Qwxmof0NdQ9SCSW4Nk04JU3BQAz/YEzzsWgNbayBOo5vRiYzpwk/9fcOFpi67EXriXAfn+yE23R6FjB+GWsBxqDlm127O55GRJ2M071Okwu8zIfLqO632QBFXdq5oTjVZQMPIVA29jK02gqVFp1JvpLv+1oqjyhk2Trc5621OLSvS/Wpbb3Hqbd3iNNq62TlFW+oC5Spdh7BXD5kqGAAhaR4SM2wnIuSLKQIxYuggn+lOYDrzIe1MhM4E/H7cdkYT3ues3kR8yAEziqperzuicuFs+CVfdm/ck7sZC3Sr6KmaIRKubxVA4bGjeTf9GqrOe7dmSVUL21XtT9b1INR6A5VFxees7gvzPtT1ieiWARNuUnfAnN4V1grlvBU2ICUYl78/3WMPqxBEQ/6ra1QLeW383Ar6P+86Qfh36zKCHVmBofVVdOo1YhfyKdsKta0QWJs8PYuKsrRGQ7FtKNaGIlkmnplPJ/0aaI84lojHdEW5VmOzViPCqfzvffa19QBSkskUw2plmbRL4TPrxY8UxT/zhZe3xZ+irlo0d3md5zFuCLS3/rlPHWlvveCzuUve8aMsemoUx+7xvIe3S0iRTHVvdZzlxpWs5H5L/KfxITSNPcYP8OjyhEJoH1oWIvqn7svbljlqCFDss6ubV3+9TeoEeadCECgEaPqydgYUUJgefruJMg4V85AGCPTrUywHCPmIkgPIm6XUL8RZDaaTGoWKr/kjYH1EKdZAapR2IXV5/vghEZ8QZkH+86XUO6qrkXqTMvEoDYykCVfZI2k0Eg/xScVbfjYlO54+QUlCGAYjivagj67qe2z6q731Tt1bDYHiY8T+sWXTpy6ElmpfyT1KkekkiIwRyQGp68fOC7OoSljizLfgMu255JujRw0vhNJFmb1ce+baumzhGDt106xREpoKUV43xbhvO2SREpsOQ7KVVsdKpGOQ5ZR/POyjYxyAcV1CXFkVNA/SD+oNE0TvWuofEFpf8iwIqIUAKuvgGWTJK/Yxe+/KXaRDanXLL0jZR11RCV436GjfZJ00HRx9At6Ukzd2fQ8acP6zoYH9wkRMVw6Yiv0fuUOv47heUk4ZeO+Lcqb4gCAFdR9ClvzBLCvz7F7Mg18dq/gvzgSu+3e93z967R9fOtm3/0//N7Q2eiZgds+e7gBja2pTqjrB+lXPK8Gdq1wMcKh1ShmHZ1X3sfYq0F49or48RoCxC7J8On3AeA8XML726pH1pcy879Y34793XUrBQmazKbzcY3lE0YSBBrDYK0l5p7qTt12kmPvFBVbetu8J8t/C3kn6srejm72fftv2H/7Wl6iu3vRK+9gKqI4FlAld0hJM1CP0500/VHdNb+O8uSgJqtdfQs8PpL96K4SgLisM1qjrF3537boUJNUJCo7hlhX0ZS+9joUsJpFxJYJBE5di8tOPwWDESBkghm3hwer7UQ+nUX2FB2QvvVFlQltFGtSqCdAexfVpBmID7Qcdra2rmg1OLZGSYvAe4CAU3qkNpfY615HtbOfNuWOqG+6VvnbK16M5v03wT/G/fdfv/+X/8vsffSGj5b987ulHbn/xhFfPvjse/xfXvy/4LTzu+vGPX3rvs/4Bj7ftvvn4E47He/nxna/b8edf29bHY4kTEEvS+6U3ztuOlm2SI61StdEjh570L989fS03+h3PiP/vuZ++6cNc0Z/9l8898OdfvRUtzX38X7aeNf1GpD77t6587T989OVIvfw1M8/6yD3/Gal/9LuvP3f/i56D1MWfPO+ht3/LD+Gx8yff84SnHvkDfkzekYdbYCNr7GWrOxtYgNc3sL7ZwP7RLTVpz7c3yIrILepN7m4TU+5jTnGu6UHNAwxjKZg85GAtE/jYFdDNyt3L3vilCDKNpW5sNNWtfs68FPyU0xgpBlYIGppzFtQ/kuOvFFpa1q/mU9AolhcM8xm1JJuCImGDqhjnqMdF8o00hBnLXtihzY+vXMo24zIHviwsZYtq5btFT2a2ki9auW3YYqz+H7gxFMQubREU94CWRB5tBY5nwvT1ihynrmTbK0cf2Q4Ks3mKsjNoyDCfqbpdxILIz6QzUAnRmVLXRC1uzqLthFaW850TXTxEtHPC9Z9lTGrUxucM/JwBhVbdWSPl2N15MGuFxCTDfPbThMFvSWgHlJhnQvE97HW6URQGvufGET5MczlUlWY+zWbzIsrN89B3mFNIX4YxyOZlGPMYhgZy4s5qjw0X/PUPT4R6lKEac3Rzp+bj10bWM2zWFK2YEc1jRPMyojNpyHZfBY/lImeaIvylj77lHsERTiWHZ3L0E6FR+GgYsyXx0reWL2jedKbaC4e2sOAmO9AdNGWANeQ8M2sDq/ZlQ+VL0gTjiU4Fjtefc/0HF3u3XdoGx7s7FpDVvOsDJCCn0Pz8U792x/d98tMMK34lU837Lp0sNwCLHil0bYnNeG2WQN2pVlare3c9Z8o5F8qKN9cr3tRaMerEP50K+5KK+JAP6TvxT5W36cQ30dO085unRk+bdT1QNfj1ofvP3f+EuT9q4pf9cnL8esyR6jM/86ub/zH9yXUhlcl72kg1+r2HLv7Em0qk0mp+6iRIZUsoKjRLWKSq173b5mxHqkr2TdWKHxlS9VYjlbazLqTSrKeFVP/4D+/IN/zKp5pIZb98g5FKoXPnupDK5D1tpDIzYJDKvJ44CVLZEooKzRIWqep177Y525Gqkn1TteJHhlTd1Uil3+9ZD1LZrOtGKi1ybxOp7JdvMFL95X95zZ3/5T1H14VUJu9pI9Xyn/7x7nd8vKRUWs3PnQSpbAlFhWYJi1T1unfbnO1IVcm+aXXF/Xg1dmiBdZEcm3Xd2PGOjz+Uf9sz2/iY+fINxg410FmfcGTyPlKSo9W8b/0kx5Y4JckxOddLcuoV96OvN+1QUfkPm9hhv5wcO6pb0COyBcUG9AM1hb9fHBmDoNJGE7mw75wOalkE+nrB58wa5qy9SbE57CbFVfDaj2uS5vtODl7j4dYCSnT0gQHHjNq6eLrr9GTQeM70Qkd2FnagcNMyj92sCbZH1lnJzhXyj+VZJcbstqMr5Vv6Uc1fxt37HmhhqBJ3jzCH5fe919S+n+DvAMNZGN8ZRp9NtG1iNdaULaNJuwluuZw9TT1oCTbgZwPN4WeOpvAzVblv/7peGBj/UaNDXlVPUtO82ZCOLrQk7SEgVY/gq0bEhWrBI1e0JQH/wuA6rB0vRg2dWnRH5lqdmqtmXSacKZR+3cuLs7uXQ1UpZ3wkURoO5C4/uFC2GIPrkLqYYV+VZmVY2RuypIiW0cfPPPrZf1oR9z3zTFjhgTEYH6LjaTbCD0zNEzVgZQ0Mfvbk8KaQz8AxCSwz8oCPdl6Uw39VnzaIU6kNgm8bEO4U58EBUG0jDioCsUm2Fsmc55CY4WrQYbmviks5+NkkZ0lzfEkQ9XRQD80cyEdcD+yTxx1+y+bU6ltbGtEG3Fxy+ce04oj1GFpWDxjV69EBzS1xTjVbCGj26WUbnD/BhWT0g4/ZyovquM3IJx25ukPjEacHuDgjGzRQHirhA8ZArzpyTkZTTNE89DDGxp2HjFwvQCl4Q59+gYGV+1S1Wkde/oLx8g8bE0rnkMrFkMo/B7jL1KdAbzbJ0RxNcVFjD0YbDV2x1uqxsVY3zq9SPfNRE69PMIzqd9H6uBkYUd/4k3ZLq3iXIlTbx5ugYQeZUPgetyTam8aH8LfK5m4z9Y1aPtBg1cCEfIHc0p3KotKhPCpITrTvrl/4/T/49A1/9O+wUmxVEdoWVVxETFVpwdCqBfRugaIVWCdsqMYEpUjflPAs5JVwoPYTYoUu4MRs313MxvHwjLtUBxcAkIHVY6cA6+bKwcBmQLdyv91YiweqCqyf2WB/ALvJYnqGqFX0k0U0Ykfxy8Mdj34+5CnAkV+A10VcQuN/gYsO8UJlHBt38MPxVD38i8y4Z84/V6GqvpS4mhJ1Jkc9DKhyYyZOvjYI4WUBxhDwQkKONX2HL49d6tcjRfCdnfo8mwdqEOeig4jwjmeMOGJ7OHUH6GsUZCTwj+TvID3Wo/V7Vp+eo9Xy++HG93HVACBG1PbuUbXEi8k7lvf4BacpoZa+aXXtXmFXNF5e9XEMmunDZBN3Sw7k7I5qoJcTcheW0atrQ/KJtkaK+ObtQ/THQdvgyDGuiXNX77NEjBGF2T95YAQsmVJAvrEIQDYHpImJXqFEj6QouXLknuI8u7APmLLn1SlNGdKYarZIi06NY+MsXy/eHMihduc/RqgRZ6ieQbrVCk35WOpdzuJaTTTiR3uIHh+V0pGIbVMDnS3NoHVP61d4P7h84PNPKF0EcZCzu+llzsKdLY7X0W7j0L/q9r9T2jPlXAsCH1gIOgrBWYYg//EoN1RgmAoMpygVGOZ6hWhkBz1FIwPFKc04QtsjAwyltFh4ODqYOZVpxUxpWiFdQKuzamEBbxYbK0d287XTVgPD9n6fusvaV9Pz6sRHNEv8B2ZVnfaWKU/NlFtTjQaaetW5h1jWiqdzp4+kFrxDC95uAd5uFbzDOnjRYAHeKmw3NmCL2EMn76/2NljPkuKmKK6arsxXO0vzq0xXKNW+rj58jmi+XtV0Fa1o+ugaC2J1VZUBQ978XoT9v0IojWzPjrtTy6gVx7B6xXXKYohSH4pAHwQXuOEqirgU6+0zK+oZsFh3ry+2Tl6nYHBdtVo519ufx0zSYToTV4Ojw9YlofAFlLCUdrBi+KJ+e53xEUeNYp6PKdQBORjSqvBc9zmJ3Ck/lHzeCxOzG3D4r6xE5bxFHHPGOU7YchG59PZAGdjeOrLpVq7i9riWe/XwVA2Ksz55OGmshZ+DtI7knRTJfo3rEXcrDr6LAxcHR3dOFtuFmOJeXe7gRpRHQEfHCH4rcEyEeYnxrSPfYvNtWb653EIpBoI458Bcco7laWVTNzhavhh2y0hVXCmcphQ5Vlj/0Nz5pfWdn62SG4fAltZ3fmll55fCW2kquMK90luNqVqQAIMMkTIXFmWQmWNc0g4xQsi0y+RioBQCFNxFWQHkAztt0LlxJ/mzrj+FmdZ9H+b6pPu+L6217ys2dYtG1MEO7ZWgepux6e47ZtoDc1SuN3A9PUbnknp2rma3sHKseMPir6Gk4wr0gby4fBtWskAUxx/v/WI0h3VHcRmGO+tq316c9xSFQ7PfC4HWCXY11oEvN1KIqeaYv4/fI042QP5UfV/da07/b3fyUZYa/HRhEwKxiWkMTRVC/zT3qKT84hDLCP7T5Jku3sD4GJrrB1fpFmAWrzNIuHrC6JVvaOBXNocJxmWpkOZoAzHyX8ZcW7xKEDuwUhqoBAfvFn3M7Tkjt6sBuEczFXo4U1Al6Vvucg6uZAoXTG+gITaj02bNJGbrNOL/Jbo9qjr2uA+b0NpmytWtU7mJkm0TCiPbJ8ttk+6vQ5rG/hJKDb2E4QqYPdlSQhxissdsQSUkuLHQrSYDnPeKKK3uQkPl3iFyvSBLoUt4QeZJVeFAXcd1jWtDuAbggh4uz0gnnp/3aaAXvqkvG3uX+DtqZwiynNQXqdjc4NQiQCWDmeRICjGGhUyEYbKIwSTYIkNtMVANgqv+dXTLHXJDnFfnQAHhUU8qOGh0IdMQgXl86GaIfXEPWXsXudf2I8NOrsUHtDWQB6XUnhZ31YFNrx8neFd9gl5hTgx2ILXYfw3kJfcwLim9wHYt6kESQjG+peCEgC++FcHzqC/771mz/zbeE8wFtsIlW9EITwvumNl9utkBWmnKDPF69FyeuWGwzUDvflGXevgV/KtdQ/OTu+LM49u5TOZe4vNviGf+i+QX7wGne/LNOxTf4Lw0ZDv46KVwtRfw3/AG7yWucUaZYbsirhFceIQwt8ggI+xxX4wxsJcR8u+S61UBGLQkMbakR0RfFY0fGmUxyNN1WRd+JXhE5IlHim/j48CnZAklJmufetmA+jB0puG3Myd0MtmFXAfhEOIuqKJUPw2c2OMSKqJshis6/JDcv5zd484jcR7eTjOmE0wv5ti3eMZaGFgD0abrss1c1eanCkYs0MJ7s0UoEfa4N/TdRDu2BfUdyrbSVtOxbbQlI9omoQ2zb89yrms75bT9umwH17Wj7NYZ+sOWPXTm67OzoM7UejV957dtfOHPPiU7m3bS2d+dncO1nEvn0LnXZbu4ll3ao/PovPSu16DR87n4+dXiF3zb+/7uN38p200X0O7vyh7HxR9Pj6PHX5c9gYs/QYtfSBemH5Li38LFv0WLs7PzX3gdJ11keNwT6Yl00VK2B06Jbnezi6FLuTL7VrqYvnWSPYnLPYl31kjcn12CPMtu9u/oEvp3y9mT6cnpawQkcJx0KQQ0jyl4hkW2F+cX3tlemo35bYxARFr2KZrn2+jb6Ckr2T7+uA8Fpf6n6rfL6Kl02Ur2NP72NGzkPaYh2f7xtuzptJ+efl12+djLrqDL6Yrrs2fQHnrGUvZMeubZzA2exSWe9UTvajT8/Ozbn3JBdiV9O135quzfI+Xq7D/Qf6B/f0P2/3G2/w/ZJPHZ/PZsVmGh7Tj7Dn77jou9nejtnW72H5G6N/tP4+NudhW3ddVS9p/pP4Pz/Bf6j/SfJtl/pf9K/2U5+04u9p2Ak2T/LuL/TbLv5sTvvtjbw1fzsv/Ghf/bUnY1XY3C/13zPYf+Oz1nkj3XCt/X0HPpmuXse7jk91zs7VawPA8/e7L/gZ/d2fPpefQ/Jtn30vfS85czeDpbQk75dgA/O7ODdIAOTrLv42/fV377fvr+D2QvoBekr5Upu5Y/XssYIeh0Q3Yd1vULOe2FS9kP0A+YdX3dKHmqB9rh2fWfVpY/ln0fFfTFS4y/xxX7vzgLxrNy0Tr8wSyiaJTscWGCuEYdFxvgax1ypKFxHwJT8CXrbRxvsRakTnlP/c67ceN8LMLcV4MivO5vuY7f7tfBenVwK0dTbtOrg1/36pAYW0UjPsH63aq+vOY9Nlc+B3q7369dXHNX+2rAqg8qjFUMjbWGigcIt80DhPvta9fq1Gs10bb3mFMBdU7hqnMKs/txznb7T3ShVeen2Se6s/rk82V/lqa/1AtdYRoRGMdLCi+ouas2sRqRogamHBAo0V8CEaz23ZpH5XkJpj167kIem0tTmhJzStfcudKULt/S7hmRPE/MJPjAzL6K4B2I4IHeTZa4pB0JytFBPk6GVh1bM+pjp4fZ7oh4POKPA/yxrJ3yU/+giNsDFj8HXtXeU0+CzIugCCFYKNBi+ytlbU2lb30j/5qDF6JBcUrDvJtblyFnU2tk32Gzx2X2nWtm32mzd8vsu5SRrlFkly3SE0QxzkKj2rzEFJv56FJX50HOsbospODTCox0qbuSzZBeNcwDXE3n6qBCH1VcamtXcI1eN6L57K00S7OVG6c5ph7oTr1rpDPGCw0OlMrbCR8+VNjhAy9kbwlsMNN6tleWoCm8GBEco9wgRSJTJEYRvK8YrHUr3mBZwJZIKhZxXfKgblE85yIUZnOJtjMLggZ5aMOE5rAR7QscvfaKZ9oqnllfxYm5+W9cjlOAt0CFQARf8NWfLg5/FLkdZiuUYIn0j+fT4gU2KVE2wc9AJ3GDTuIclzIzRoNnVebM5znDLeyNd+m0bfw2dP+7WqZMPEJAovpwtnHNaeKqcCSCKiWXpGTzqyeoDkDc9UbVgBpmbkIbjn4gfTXY3Rto/ua7KDyqXnJm+SPN34XvmZcAhsZ1xdr1YcIA5tb6ejSr9c1V60vEmRpt5Ef1DlG6KMOeO0uKiRHfPzQNQcFeLA+qkV243I9+pTWoDYJcDJN//ibd/Sbd/TrS3XZC2r6a16bRlu6eellbVDVLu0lsUV1MHt6mT0p60bN/baR37iSkd1bnccM6SK93K3knIb1Nuto+X5ZAP1zSGwupnG0llfiopHJ2vaQXXVublOOjkvKHT3rnHgHp/VDs8x7qEHQrqnn6UCRqNHWhC60rnryG238mwy9YMluEQjl6WB/1v2sW2lyCh9Y0KMQQX3BFFtTgtoxHW0ebV4CaCyHdQDR8vjlCMl7/G7XNjlO5eA83Escj0TvlsSA6RWYL0h3PZz2gKv/1BV375DO6QmG1ZNz+4ZazT6F6uIusAzx9S+sO7vIB+l1sarpmM9Nt38wMxvzJKs6V60E36uPUvlLbe4rrZYGpMODE2532GoeNGrkyr1aZvNWr8tqrClZXFdSqClZXFZyiqsJXa4KZSIw3YWDe8ci6BoPdQmS9tL4nqsc64aTbo3o7MoOK0rc5FB3LRpU781BCVgIH+lngHVJcql+SB+O1F90cXgERBRKoRzxSTqzbVntpzXhLupHzGxeFvEwPy/O1Zi2BpxxxKh4gRrjALo5eXQmwcxMew2P2HCv3NM+yyYPnW/CMITTvuJ+IQA1Md/tL1DtmT1i5mrW90GrcHweK3eUP5OkeQE71vRrwsFfYDqV3qdew9zapx42RqMRL6nFJG/XI/NMlHDWfI1hul2X+aRKOOvEB7p4+4cC8Ho4oFKMWPb4LVxEOJ/NPSTwCJR5hjXiEjxnxeLBTre2L+jasLB8f3p3XSTwedGuVyVu9Kre9qnh1VX6tKn91Vf7Jq1qbeByuE48HQ0s8vijPFJl2Ivi2DtckHgcpbKEdejVdaUcstCNuoR1xjXY8GFJcpR3Wx0aTduyvko59eLywQjmubBKOawzdUAuDoIVsPN9SDRgWoO9NonHEEA3085ERjYMNmqF+akua8aV0FBzycJpjPHDoyQ6eokM+h0OyHjncipM/zKmTe+WF6n4e4Nyr4AtZCBPHZSeL+BfmvzF+cXhMDsPKyXqGpcgQrwI4BU9uwNNA3VAPxaq4jID7nXhKi/Ct1wi8nMJPqNdyA90bf/SHXqO0o7ZrvQbbkl6DIvXuyIaWIg1xCD4EOTCgLG+ubx4fkpgResq+j5LL1rz7Xo+eWtYgxSn9gIRP9ZqhYtNJNg3TuA+w/8tshjyNLQupPTiWb1jm354VahdIwHgQA+pXkrM5FMQWOvn+3D+e9WTo/er2BObrz6s46h4awjnUfZwrFSjZq5AdrdYnvzQWLQ4WbVg6LDJTu4Nf1vMY+ThY4q7g1BRn7NhM2NhMG/nJO4DwEqLbzv0D2SZO4p/NNgpTLnf8FwkWiezMCMRlCwXvpZmb70LU37uybTRzV0Y0dVeWiV0GLABz8jIOJYvgDtkO6dsOTBq4wA65OjE0QhPu0htRLDsTj47GmEVGE/Mh31kCJTub6ztH6jsH4YUdBXEDq/p3ZOdarDo3oXlK6NyD+S4OkUHbiX/Op3OPZT3arKGP8gWGAn+6IB9i7BfQ+fye8z/P0gA3nApzXs61lC+YA/oz6RxAbPcShbR7KX+cnBUz2PMezaI1xOGRI90h8IzTdtm3fLTC1GSZMvHkrUOgrSv5qDGO0R3ZLjuOXTqOXQfzx+s4+Of8RzKEs4h7Lx3XPu9a1efHr+qzdlgMApounucpoHOXKDmYD7V/Q/RvE+3gB9SzuqObl9bX0TPQ0SG6lE3QYWP8dw5Q8RzqEy1nfRsS6EREZzXD+mjymbVkwL05FF2lYwdUyVZ3Rr06XP1EPGJw2/O+Lf7cJVuzLi1mC/qoATwXsAwX1Mf90Hi268Gab1g8LfOqWQaxOa/8dh7UN+YVGbrI0C2syc/LzisVDwPq0swb72rGA/rAXdBBYHM3hOzNWCp2/QgyqqYqYzcb8ugWtI+0BSvyLCzaF+bnAZ3PR0eRgpcL8KJ2+IhlRucrHvCTfMlT/cZITxEfuufdm+9aMTEpelXDMEdf1TCsGuvM2ujXMu01mehshogL+3a+M0Qxcf3L0Atw+hDpINh6v0BSxVBpAZ+MZRjtVAlvaMnmPPLMm/hKJjaqiZRayknTNcep082Y4Q1kcRLc6mAF0jITXI9r0CgeJqDcEbBcs9NBPurVwoabQnavpGUqseT4DWQb+dwEdB1Pxr2/7pAgEVDAZ6lI84qzySXsttSnoWud63jJXzxsuWNfm9jxYGjFjuer1HGNCh1Xq8xxVdZTQdTodEuRY29T5NhRC7pvRY6dD1/k2Pn/msix+xGJHN8UOR70S5HjQVdFDjx2/k2IHN8UOXb9axU5jrSLHEfWFjl2nUzkOPJvVeTY/xhIHN+UOHatQ+LYbwSOKwt548pTiRtQr6BAVdi48iSyxlUiBLRKGvtaBI03IG5JPRgAShDM5hkmz5SL0A+sILpA5lRc/yu79TU0wNv/8sbmdzRlbPTTgVjzf/4Vkiep+iZvOlSU/nnJYceJDmk3XBB4V+9+Kp339bw74NbxKldCSvVVTCF0mDF5+OE8uH1GPsx9K/dyfLBIv3Ir3cRy4XqPi8v55P3tYNnxyMACkacECg9agdIOOHo4gPu84/QOaUfXABxZwCkcI33FZQZcZle9sLrkg79IXGfhmvcDnRVsZT4nM6tVYZ5UYN5lmPM/AHslklcP8O6ZU8E2sI8Sik6j+I96nkYjMVDFmFOAHtVq3CNfNdkvlYu8nYoL76Ame7lj//uOQVvvWd+/WJ7ubrX7a3DfoHk66MkJW02eXV+Z2ZqDgoDcY1Tp2UJbLY6txUEtjtXEe5hp9Tip98aQlzyjkkdK7hhFMuRharnn6+IUwQiXzdALeuqgaNt26pB8yKxbnQrfXGwRibgkQ7jLvLt+RzuU69XigNfXi9cxFpgjERGROxATe9xwXjR09EJoxGF17VeCEgX2jntIwAXyl4ob3yFwNzQOps3JEHDI3JPG9aT3rI1OSg/xYpGKPH16WoFwLiHoI3DNK3Ftx2pc8wpccxu4duH6cM2t4poaA62vzGwdP8k7XVxzK7hmw4sJrnkG19wS17wqrrmtuOa145pTCYfmjG/9h5pLe7e0KF4T1y6s4Rre1o9rF7bg2p4C1wKLa1WXolwlT7kiXFAiHLZhho7b5NYDWCDgHiBgxYr68K+KFTXVrKhtaJmfhG1G8n99LwTCFsqAm9YKNbR48lBDi+sONbS4rlBDi/VQQ9Yezhhot87zTR863DbPYmeN6EoXuUQayAmzejXK3uuqo5d+FuJnPovwM5vFMhfKt83hU7eB2907sp7FbdzxKUYpkXYpEm+3Mcx7pDcUTN0m/QEfIUH/Q09rGYkzfsNPWJdKmWMDHynNrY+rjEuyy4QX9KvG5Y6iLPlN43L+smP1EaBr4oujoe2SPP6TNwKmMvMFDm3WXNdgtm6qBDH6YS9Q4ofrB6itPA8y3NQEGFQWg9Y8I2D4Rc7v5M+CFbNTr9MxBjo0XXYfgJhmA5TisFnutyGgBddmYgJGb8QqQYxAOS1VI6rSW3l5j7asuIv6VjXbhaRVtCJghyxBwdHSuZOrld9lfToVl6VtI7o6rqIuacDJUuXUd803ArLg22dd823grHGb9dN8N6jlNiuuMrijpDxDXeS5GZcrvWNW+k97q65PVAJjXmZ4FKI/OMnpxshEcExQQwi27tPXsDP4o7e9ag07A19DJNRvYmhPdbVX7040L2YE1UsUza+5tcxpj6dptgKZizoc6YW4ObnIhYuc5o2NRmOa2N7GugOI7kKLeksDT3pLg6fvJ6JQKbN7g4bqrAZSKjlnKVuUwDNXhs1raREsFA3IXnBvMfsNyU8nQA/UEwqwbch4yO4T/FOmfM9CyewptgFvFvJ4BRZkSkPjHGHe++ZSPbynKQBmsU+4GiH3QPRhDqwdgPDjk/xdsQA9MYyFYcCdTLIEDJIGlw1kHFQd1Lx58VYZEO+oGA8Hpa1u3V09smmcI3F3b8ciemMGVmIHjSTpTZxUdtkUr0wycengqrmuhlDD3tDDj6UgPEnqRQt7R73wWQa+DfFPDFf75q5zinoi/ETGKLUS9ohc2Ka6VZdpHufrVsXWSA140ZQ+aWVVeVXvsVo3QsV6j6rB0bjcg4df1RYcjVt21yrylb9/RUsRjf7vq7l0CPzsgBH0PpANK/C0j+vEOKbxru4mTYD8glQPKQBhVsBSpMEuby5FqshyBSNLGeZg9vYhqg0NwDtqc4qVKosfQ0me40DEV2t4GRawGC99vPTNS4qX1LzMyhowL4KnHfUO4SJhHgkIfp2MlZ4nD/mO/+iFMa5TOnJxBaxJcu31t7Vordt3T0JrmfI7nOERXnKzEs29nUrEZHXKgLjtZUU5PCiainzjtKnTqExp7PMVbnXqa5RAq2gveeIISsLvH8AF+KDs0d2dcm8c6OizQLv1MXwpUy1LgKOpltj/+2WOK1ahZRN7yhY804KnLVxYBbqNE81fdq+uf4+p38ZsVx7cNIK62qQ7jXTID8fn+hEYUOUv4D+fhbsSFJlbzlPmFb3P/OZ+SbVE5jVWeTrrUoDXnt2Gtscs6Vshu5+U3GtgtR6txeonfwX3LJxzGBXOm3FPRVDegQoQz7E4B0iFe3mUgnsZ75ABuNcUBeBe6toBtF/C1OPuyzQDcbrw5tWDAwr8MUeb4d/0oNBazungTzPNeiqBzTzNxMazXC33pRAYCwSMCovLI+KUuHqfA0Z1xTtNowxLwvqF+Kn2WQsqANrYpH5RDxIKIBWChlUG2gVGgkyK15tKOvWyoOBDscyLXHdJngtJwPh/sXwIRwNXUNfqD67LPFNtPoWsPvFPQD0N2WXi4ZlE3qJpiHpPbxqZcxvDM6ux4tGRTM52BTOI+3RUOHdASWHPTCOBIirJkaj+QszGb4N1NPU8qWGDNQv8nsrFxgRDtCHEqndKQhK+7gILXE0B16kG2q9evNGn5kjA31CL9RXRuAARmwsQn/5yjQnHhgmrVTH/qJOPyGzHuh/I5mjwAXHNEhu2GFIPBDYACgXlDgovNv77DM9UX6ZJuCZK4O9yc5Kbpy1SSTy+obxWdIKvFbk27JpWUsUOLjaDFoJSGhB5MOU5L3wgVcwy2/bnjYiK0NbzgqIeNNKx8SPCDy5WGTd9g45UE/0XAiuCMlB2UsgKxrmXFRCXjSYal9hnAI8ssoFuxo4AY6oGDIFzPn/Xvu1PeX1/5S0ffxLNi5rguxfSj/OUQkBcEy66HMeeOkUJPLwypcXS7YFtDcc94j9u+f8sZZ1xAA+7imdYAoQ1XjmjD6TdbB55tHuecf6l16hkNVDyATkcnr/rmgXOqj0ze93qjLmkflZ0si1dANKZ4TOHvkwhoAotSpbzchWaaqIStjv2HrWgqPp4UXD9V+7siObuslgwwc3X92abuKtmWz+DsxqhSlNwseRTILSCaYBZ6JTUzpnhdjh+78206Y13ye2pSMVHSo4qEpj50O5Wj39cHhD5Oqr6gHReWD1JmwXm0/zrvgDn07MMDjjeZVRk3SltJv67fAEHb33UB2BmC9T73mzRTNPYMZ72ppRlMb2v0pD2PlgSosizyGQ3jwoPsleTWzuA7hvBbLbhGXaBgdmvYnGMWS4mp4mgZfXXnKx660FJove7WQA85DFFPG+ecUdnEB6cFksYkxcIb5FVHhsiLkQ+Ua88uogoWSkCFV2Kg2LATm+0BSdD72Kd1+NBmh0Cxpdod0A8FLGmhXyfYtGYSs2imUal0zVUxvF5DMzAnwgfvjKAGcW4kyA69pjqP+wRIrfppMFxi9xr0WHnkdDhSOlwVNDhCHQYJ62l3zslyYYAa5bTp8qhdH3sFusErTpScx4J6CkSYqzP8zT/Xxdo481oQm9V/tcFu0+saQ9VTY1j5GKDQYE4903+uLl1+6anEqMyPomnEr/0VOKXnkp83aZa3df4E7oD8+3AtW9mQ1Km2s7p5mxV7/xq7yoNXLJW/XvWrP7C9dSOuj9V29Cafd29lQ2tZze0oDe63W1q6ZMvzPZd9fgMzSD/uuIWzMVfZVNkYI3heMdyfwJp9n6W6SZ52FihYeOWaQnnLC4gknXL/mNzU7u8n/fN66AW4XpI3Ca35jda8+/IRra1kZGyDVYby8e2QqktlCbFhjGbsieS7cWmbbHp6j4wMQRwvO1F7A2fZn4gm6F+uRfsqybTHtb1yKMZ/p/Hz7GEI8xmK1EDNphoAXMmiPLc01TEpGghh8ItQUFKDmQbRZ2XFxtBVAwDHO9gDsoCoxz88bZxXncLXTG8ZM1QVN0eIpOH7SEc+bv17SGnzJhdHriN8I/iHRtauO7L9QvxU+3zTHV76JbbQ7exPZwrPB4MIa11uU70fkZ96bM0U416G5beUF2Un8aeL6zu+WYhDaKKgVbBPy5tzPq4TghxdAYN+VzDrMwoTtd4/+YnoA+Fg1oayjAl8iIS9b6d2b8F9f2bT0Fz/6ZuHsHmUvQBviyAAbr61WHxtCwU6UzuK27ptUqXErCxfgm7vgV6o9ZUa3VsrVMlu1L2bMY+g3gfKtBNWU+82h+aQe9mdGtLHpCmi58uzaFmNeNKoEBXY0GtqO7IsrWyhGbtlUKkNE6hZswp1Nv+rra7nClPoXR36arU19fd5dgVfxHwlKpaNTTpXM+oBxlnQ4IzvU009YFsM/wkmO1XgqxAKfiyLPZkPbzY3ecCdRWeCfgTfwSbn0FB/Okm9KXXZRF6xJ2YVe/G5EJK6gsIlIvCmyovOExhj2bsFtAdewIffs0WxWeMOFqgWYQQd9XfwiKA5oq14CLKlNcA0SOV22a4gAtzwLkaJiksNvI2gDN2pd9Is/vFCJEfsn4ZeQBrFWLKYmXPuNjcM5omC4+U1nMlthkppbLNEJ+YB/IZrPbLF/gxS3nkG2F2HaveB6FZvjfbqluORZpmWTfjYZtoHXPoTZeHGXFLceZaHOvLQq3imC5Q7YdBteqqwgRsxWakL7uFmDaKQYBbYaRI3ZK+Z4XfWVTm4jiTt0BBO/Vh25prlX5odaU/hUqBsXPUhYNr7uIAtzdl9fUL4XYWuw5Zg3btlyNT0sS4Udl1+M1dh3gpAbTt/kAK+x8gKKEXsT9YTMzOwNAei0OpLk/FHN11bBzjD0xpBj23tMI9WQtooL7isRUsNh/UlRAkyLDATy4/TdOQNuH7pWwaCxer7822cV0IfgI6DQINfvissmkKjhriS35t2xHSJurztmOb2XZM0zQARr5uO8pNEX6mlQABXVzTT9MjJI74yXkRmJaDU0XQVg9dRZeK7oi0jQdM04ZnSHtdXaboZL/cO0BXCs7RN+f4y9obg66mNy664T783rgtvUEXHn77OOpPTB90LWyQWTDrFe1phbp9QcP8QptvFiwDpbLxe1DrhsZ2xi3kdOKnRQicfwPPi0ac1KN6t3b4mvt2W+LXTuxh2WU2JsXZyMHMq1p5Bc1TJHuy4baf2LsmZhPqcKQz5NdP7NFqoJuURmOaeIo2ULlpStQ6dq+iylOAYIe22r+o2LGwDV6qafMwLpoHKGAL0YwFr/u9d9RtIfzCoidIKEh+LHCTQ271xB+zYkwI7XG9Wwqrngqr1n99UJFMQ5VM1cDZ06jYESSxiEL8IQAV//oHsx44JLzah5XDdurpIYQBu0nkd50N+x5TUD3vjjFOcRgF2oAT2xDykFEYUWilTmUIxh+TUaFXz7x7BI8HFa13tWEI4igdZB1pu3MyYaeDSjtFQDyu36o4msJObISdP8AReIsqvaPCjvEx5mKGEijTC5Npu0SgpQ118fQLX24YoHnuZt7YMesYDEyOsPVoGfx+QB5+hlerrmugDpLEL76r/sZiGiKxSyEuWvSELEQ43JBHipTWWB0q1oTxsWSIS/W826EEyN3Hj4g9cnSf/Eboy9kf/1X1Gmo5559EvRG0qTeCpnrDkw5YtUZz1Zhq/vauRjXGHq2661WZv6qPWmfItuqRJXhWSZFgmBqrQgNUpPEpt+47gtajbBzQlnW6B6tl9fBYzdBWf8UhslscIu9crWMoomf4x44i6NYe1bsWcJg83HGP3fpwkXLaoxy7LYNDPUE5QlTYPjixNT6YdUvtU6+oPUvIO5b1K1c1us9SPXglvBglRaQyvVTgquAOpmggFk2oL6KHPcNwRe9ZOjRZNpQmQexBrLGwVPuBouwtrbVB/1vVWbjDcJGwhKBUZwWl491PxoHLhl0D9SSklVmjPPiay307k6eyza6qXchv07jU9TsN8+sYeQyE8y5esB7zHiZBPBkeNPd4s4GOzSs5D2cF57HnSSOADFuKITQk3Ur4jCkNmqFzA/Km+oDBWMPQ9eGMH1ZjvEVJ4bB/24souQ4b2+nKWfoUHFvNQGcZZx6NCrsfEH1PSb2nRN+aZKobf7Nd7oIGdsaOYQOeAgLBIgY1fubSULQr3Hy/yvf4PcL7bjx1AQAPIxldNnCpyw+DJbl+CsbaMYf3nmFz4HjSu4IRStNpLTSebx9xsmPYKQ00LGQXx3emAQSiznygOHQenBsxFxAvwjORVdAyl5k5Ks66KZAn0A39xmk1dqwvSQU25NCA61QVGCbnIncvrBQqCozGHenQ3An5TN0GLDQ8U3HWMMN95AGThtYeWGPnFAgBLDopTgAPlOOrQt9A35VQrSMehyt6rrC0/vWXkMw8Uo8Zck+/nOYsBDoLaEgrvwvA9+VuiL75jamIqb8E8CvB8fGQzfYd86HsH/9ms0iMlmhWubxrZgLYKEZo+Nm35ryEyUOeEx5S+dRcj6nTJM9YvgO/vVJ49Urh1RNWcBEkf4mnN3YkjEdcyjJRIdbXhPyoIuT7bUJ+8+t6hPxCuudqKs34bVK9STxlpagXAnabWO6IgPGry60mytqcU3FScFs0dbi05d+lIrgARARAwM2h8NvXaOVrf76WwzVXPQO4YDAaUtStXggFMVfh1m6aHZA3R2Xa5M1h6NzQK6yGX1LwBD0SqtJuczjgK/kOMMfyDE6JJ2VZslgDSFqg7Ur5dmkXY6XsXVD2HnUl8FCCX6bw/YJz1aJl9YWIAX5qN9SlqCqzdzEsvadXPKXIVJHZQ4KRbSUeFIRcRDRzDmKXA2MuB74OXDTX4zkm7gn+mHHgNzgIPeGbEYEHqTAG8NAf2eF00Jh0ryPbENjZFH1H/0IZD3XUWAjdLNSy3FXx3czJ7gQqdhpMrlm42A7BhKgZYiRDs8/RnQ0G1KtoXB9l+DTlO+XuxbZlt5LgPq+akgR37BQDpB/4IWXboEWWyauK0rry+MAPsaczC6mu7lymaYqmbxa4AS7Tdz13obyW0bEGuA3g4K24rWmmWJ2+4me3tTvuKs9BEXI4/0NfqvGcYblPK3YwHww9WDAmqseorAjMXYsHRt8KTHrUgJVh7QAZ1oLzkbEHjCsHX17trp4vd/W8pJAPVYMizZ/S8aNLQfNOaEuZri3TRZlu5Z7ervWXma9uoyA8HKPKSBbWWYu52wdkvFzUMD1EwDYMJQ/kqnxcFT9RVUHJw4MFMefVi8cl3ePyF3nLe9hEnJJnQLFxIEtUtwRlmmnLECQhRyFEtiHFT+d/kiteKOqRLg0qLlADFSzchjGTp6xIT1Ope2yicwvhrnJI04V+oWs2FhqWCqb7g8bqtGCoMLegjblZi+K1R68AK2qEliAwN63BUVxj+WB7DonE9tTYp7hGuDNyxJgfO/q8k59/1JVl5B2yt/zNjt1iz3oWlA/nG7iLB86DuGDFNe6dWDBlYDZVEYALxkZ6xTpQfYtv9C07s6CBud7yKZ0xA0PRhVJjQ+EzDFeEUC3inVz4sn2wt72MS+WdoCs/4nueWEY3Q8jjisvaQFrXldvQAimP0EFHxxtjRsnPusLruiDpUGghXLlLHnM7T6/TuhKYEmcaWD+8j1tSzqI6Ot/AfIm6NVgvKXerBXrvYh/crWrlNK/yIq1IX2wR5AUNr8xZOWNhHRAULLdBo369slefr14xX2NzVbgMYoeuVewvCuB0qQvggCGrbizHpsD4FOmCcxXw8GoTj7Y0oXVsMr+cz+DDHY/utY365TFgEehbyzWyPW3XyJARcnyF6AIPrbyeuXUHvIBvYePSuFpn09svvLUrg2yp4nzYh06oWaNrVF3uam0Q9jb1Tj4ql0t2N2ryrbbK1uSbmvzV3dKhYGpOeunx+Er7jgLTmfxE4AUsqPNf88Jju1Lf9DoLSwE7KoSOpkCuqhbxw4G6E1W2uNTDHy8CbPyMyt+FaK5Dqar8u+BWFdUHv3sUZLBc71aCUVTuaqm1H3lKOhLwyca3QgVicsDRkNFCDPAJ38v3FO2rBzKjyjEib/VQQHUR7YcCXe7tQHo6aBWgB6h7YCstDwUSVJoUle4pKVcB/m79+Avgr96zBNCrtjqDcUm0cpxCGrKkMCSXeXILpMioJ5IWCEOC9goJWqGojzTAp+6qO88D/AyMVG2dn1QP/bqgIEL/uubQ7w+/PoTM0qfG/d/G1V9Ls+oUZc3raKckA8V8ttRsqUFrzT6oVTtZeHTMJ5NHkUi5RT3jsojBQMM4TnI3zlElEV6NksjX3I6ecDpVwudUnQuNX6aEr+ljSO82vqMXqEvKAdsslivHLVeTZwmiOU8uNfP2Oqi9qHxbxXO3WwmEoz68VyAWTYrMH15+Wxa01Oa11ua11OaRV6tNA4rjCLoWTTwW0UupcgKq3KcEVLncg0RQmGS+aCsGogqnPv6u0OhJ7gpO5jRCzoBiqKNlk5KCoEHj7FcvPk9Vr0RPy/beOGvKktKMLzFmfG3grMdWyh82OKTDJijT+lveYVt+2NMqEEsqaCFq8cpbSL7aPyY4n50i/mEVBX6mqVuJsMRpEas7aAo/fbmlPQFvwGsPWp8ViIJDrD1Y9cVqqj4BZ0Vav8zSo6FhZ9Y6EEb9aJ1/0Dp+piuONiklxA+uRB+qudSfr073bgQ7mC752bT+TCF1yjyXHzVeQNVnTEQ9G13dMjvf6IS4p+You/corj1MUh5U5sR9FJcicC8PbeWQV27NAgpvzUJ7gliyGUPKZswrgo5Na6Bz3ShPqc83bgKRu/E4YX//opufQhQn9QEnWdwJLhMicWjyqRmjZB4WZ/CYDkx6gp/E+JGCUVdxFWTG6rrUm8+nfNlt+02l1c7TUFoZPdBJFVOdR6aYurC9Oyd1ILVn/WXmrWV4m2JqnbWkypXHyf6qTdIzrLeTQPmXunEY33ZfzWdUWCjpH3W1DXi00W6pqt1qWIOqKieq3h9UFU6oKhxzLxRXsOztnUZwDR3vcTHYOMYngXsZu16bJJ45Kwj515U/r3EgbV3/1bbs1oS6tLSgoLJCl0+t3bCis6phG4KfHtxqq+bYnqLlo3ncqDe+I/NsvUBnRC/sVtQxPaOOSfa99ye/8M5fueKfLpVYgP3KZQB/6HUc17c5yDu279134L8/vDT9ORh2Hs3ivlvPoP24p5LBqWe49c3473/ZDPDX0Ydix70MAjl4+hC3sidy+JniFpzcVOxBO2nuRbTNRo4j8S5kgqWKJ2cXRROoTuGZ7aicnKfIk7GFIq6b0yz1WR1rLEVmGX3uyjfQ9NF8rmU65041nTWwg2qY60igap6aIM+YvRiOZPs0i0hCly0cO/qBu7KNavGkHjtcseMoKTcQAW4M51byuGZIGqdfw0ApPiqOFtnzLW1Q70vX4owV/9s4mUysQ6bqBnEW1vWz/IukWcNsu2C2U0iZQorxsJp3ZdP3zAILZy0W5nNr4mFdHQ5LlQ1q2eSujXizqxCveyrE654K8bqtiNcF4s0h7N5GvZ5UbkUZjNmMwUkkf1/WVZycHjsYehve8OVl2vjY4o0neDPdwJsNjwLeYJc8L/tjgzQbGGmMx7341Fij69EgCnbL6l53r9FjIgK+FXFg8IwTKi6+FilOxhW3fMfFWdeNoeuX8dfH9/wrd8r3MFzyqS6/6IE3vsXFv8c1ktan1BOanq4/Qz3lXd7qKe+BW9fnKc80513g/DxXKcYny27uwm7bb7eDc6FAD60dnKbkoeHnYYsdHMFJbMVbzH2doi6xeAG1Vk2AuUlX/VC7UHhvp1GzTuczZKpdY3mA8assWBo9UgB82iOuDtEDwI2h8WwdG689gQwGf7sL0Pb15TZ+TKmjO/8OgHQrp8xzef65kj+4SHurwOsyEIjLFponjJEM5Fge4y7X9yyc0vYQZ9Cmf8AKyDxwKY7QCaVDwU7yS4EfH/KM+zO0cGXulq4E+7lvJLl9WVBCOwt1XUblsXWsloQqxAhTPf6irFcqHRJrcdcvFu34udS3vqauwwD6784Gqr8eJNSV65uwUZpkhmXwntyYkD27iIfQpx5fN9OweFUTDgdfCp/ymNZsIN533KzbHm+gGcUCmoIhdUtvjAY51K6KURq13Y8lZI1j1z00hwaMOkwk0MkV08kQJle40J6NqqK4lcFVYa3X0OGS0RUTABqJyy23ceJvzlD0qF8ZpGeaCWD9FOOMl9OgDTnOXaDRXVkPvRPFR6x0vy8KUrU0GL3hrglnWqaeEnE0iAzapGnaZqsaftbNoQfoy6BK413r3d0pBFZF9YngzDKWGxATYRFcgM+tOEu/suqFUQn7GzzHe3S9ej16hyMn81J41Zrusip3p+/pNJ1XYUdqrxOb1LrK8u6Wy9kuDj1aLmefWLOBS9asf88pquc5+rHpPrY+rvi3CnH14pDGyjEnM3px2jXUVuFkjOmO5cFkXReqFTZZXI6iQpV6CtriNanttPqiWpq0Rfgc2DYGjWvUuilvK1SnJWYpZ6El5+3F6le264ZlkdzzxP1stfKYKu5VTy/R9A/kEWhSRFOsFk3tbPb0mCtS/6jqG9ahADErQraQhD1XCPOu8vqnb/xDJEwkisRxX8+FoFdBBvyVDog2ZFHpNSpBNuTB1FfuWc6ZfXUEujylly02Vu5YbmzesTQkw+hyjHcQIRkj+OThuotWxSePAmR63KPpwifPaBxkQ+McUm3VRnoxGn9iZydtZhuRR7vmgbDay30u+uF+gDaSSxtxuW+j6VXdZ4kxP0W4jUIjWA/raYYOnzw6eopEl+kuaxNWk8Af3bpPHm2wqj7caO4SRpRQChKOUVKK1nmW+7g8XXVgsgynQ/BgshFXClOGZaosBKJ9DAwyVwrRFVDJRjiYGZqqeDIZ0lA1ceZKoYlqoiMwGzzLa4ydbVfH2xyqMR9vuqpqn/oW95me8YX5mX94RZu7XtCDaGSWSuEJaIEnAYOQK7oRdM0s8lMErwH8mC2iwwLJLeSXd3M3jp1CZSlXrrJIcHyueg9rSpZp1R0o6dyqV1AzFmvYYS/lTpn7s5tbL+UuFJdyt/B4F+0qqhniZ56FktZcq/RDqyq1l3KnKcmGZkgezalepLiUOyq8AXnAkUhIlqr+zOBk0IwFlXu5bvNerniGAM6fbGFVMAnwsihwyGgMEu0ORNFuFhX3o6NTLFdzy82g5xxqm6stok65iKZOYxHZBeSsZwHh7LWyhqZoqrqGLJ6jk5XFo2R3SAl+pvQAXa7CXs+zNjiWzYO02E15ceFjWq8d6rjyCDX0iH+icoBTbQN0dYCVsXlUddyzkWZvZtBu/E6YlwLDmpGjoE1Ia6SiKyMvnAypyr6VbCgAUlCPtAqASB51L47DofnlssdtGo+m/yPVsVMKpBFXSDIsSKPOfv4ZoVfqA8F4P8o2AlWn1DsBkLKnX2mj9lomjh+L/puOj/Az0t5GtYMxt3H8H0HCk+P/SF0Y/Z7jeOYqwZUml3L7hitUDwCui2LGFarbIoudaJH1vHZZzzhC9Sv1u1VHqG6LI57dp3DEw+O6q9cNjTNTj4U8/AWrAyFifK1OTRerQSDwE1XlplPqBK3vbSvitRdLbDFDOfWEthYhEX4TGi4g+xTUIiRaeZBaW2oKkS4NCvVJgG2WjZCo5xvAEaHvxo9kiR2LhUNn6qv5+AgPnSylkDvlZwOJ2x+t5RJxoO4tpiui13RT9DI34405S9PjXNLqEjECk50Zw5OCEb+ScSAuAfvGg2vC2fgr/sTKCp+0VyE2kUrG6x1QJlDzqK3cOR80pKy46fkQAzWeD+PlPK47CsT21kpZtsHq3WdvbTeDOlYIFDPGtWCXusa1YETBAWwlqK/+BTegIiG6cxR9r0gSXWsI6QkYBjRVhPWXKVIzs4qDUoqtx1UzK8Z/RTkrGyFJDITpezTTIkl4NGskCcRzpA1VpOhrOwqE5nzXKv3QqkqtJNGlEOxLZ5amVI9Q+q4rJIl+6VcwVq2LGZwMmmFbkSTipiQhixzzWkEW6ypS4WOR95DRMSSUWC+CKtxQUEU4e4qhk1yROmh4l8UtYDvNoKaAUuYjCY3IV7/yqMOcMxtmEACVglLHUUi4D14KSJcMgak+aq8Fegu+6QfiUfcD8Yblk/iBOOG7uM11kltc3A9zhcve0gptrAVImHJLpWtiLkCNZuxccMRYNSlRs3s4v7drfu1gAnaVCy3K/KrRZICLtmxvfZCTu6UBaoxzyR518ccmTjH/BpwDwd/UMWujL3kfDckFrT4WTli10InAm/QClvaO+tZm3Tja0q6WtjW2qxoEDimPzfjB1vVuVSDXWws7mlLfE9X9OfarswLRHagUWTc1/XrMAssUQF7q5pwBYyR6ZGw4N3UqYsN9xcnBZv6ykdOLOFG/jThRjNzjz3eSvwtcKMGMRLS7lIhACBAt15R54FXv5zK5xykVLx56lJOWSeaOcYqnwrR33t6JUBLRbj74N/VzI696kFNVBXrgAuM9q/V80oSu370S2BCLc14CpUG7uR8JqACrWp/7eYhV7BWruMWrBIXwtVDRpUcNXXr07sw3Zu5oUmOH4Wd3RbL9pHY9tNSJfEMNjZ6w+qHm6v8TLQJ0WHHzn+jphycHETnaFaTT22sI4le2gPlWQ0sgns4fqn5dgSV5YXO2XwAFgwTZoWhoOp1vMujwyTchSiW56Y2vQC8EGU0WVWW71lVHe1troMGxvzyyBhrgupP0jjuj65i8Y3JnAwt1Jw6YTDAr/blQCGd5d3a3PWX6vOO5coOnDEJVXNkBoX26BlvdKfNa8rugnEZRteZhaeEd6ekFmLMRqCjScKJB4YkFyzmwy9no7JTH42zJXpsBmurZg4eBqIbXR1t9ZUAUYkJiikWRi3M54Ft4nHycBYo7rp3mro6vUUnf6pkLXKuWeLkw129cdnI0QIWnmO36ZYm3/E1ttp3G6a3pm3F1YpZv5S5zIKsKveLn4piidL9hTjNCXVh6tKsF9YP/FEeyPeXwy9FNR0qPD8dYKEeo8LLh20uLxcmKPRJe80QF2FhEuQKRBqCN2LCvgY2/FIfOIV82qF3enK6apfLg0is3k6gTO1CBzW45l8qCUmoIlQRGBnv0GlCLh5D6RjWk4L9nvTWMAZu7U+qZm20t5yD1O1wu9U6NNa040ytxpldudSGw9hpYY7es4rRR2G3pQcAgy77c4EwPVL//9AGqKS5ARzCdHujm4BjFqIJbZ7ofHm1ZFfXjFDBy3JHebw5Ku8eIS7VApQZsaBAL7/1cnPhv/0Jm/MaDpkBjxX+cOKKEfyHPgeqksh+AI4njR02UFWM9DyTYXdOCATS9mvl/QiPUqhfivAlXMHU88yCt4b04ug5rR9f4smy8qfTQic7TsmH71NeOjGwUEeqjWF/t3RlgNGIKRilbTrBN+wL19Jav+NcAzlIiT1hdIz4MDrkQWh5pDpy0AyJQniELhCbqiSIBh73T5rAXJ8D4yj+SQX+beWI0Y4SqHn5qYYZ7eOzp6Q5FKqd1mJ1Ui7pVB2U5f7Cnx8A66h9gUuYlatXfFnirZ04OfuGnaicHPUVpazXTCMjd5GjvicS7UF+8CxU2RB1LQlQmKthJNaKxEA9Gl9MII0toe/VqZlJYX9C7Gws6LBd0aEYfyejD5oKOqgs6lN2m2d7J/lIXtPGwBtTKsdPA8VtxyooF3cPPhVkoOJsnWGqiVOkXmrUddbceA1D2yBodDU0fecmMv/gqo1/TDy4h80Xi4YkJeiqjGCoJGxV9T9SQcEQD0Y6BwLS6ExnadmuYkVJUbxc7IGTWjW+/UNohOa00CoukKcVjMMOYCcU0r6TMR2F0JKUBbrAUribUTcd0aVwWqiedaPzi67C9WpmUl+P956nCwl9RdYImW2phvi7rV+izlVq0o1aDWuj51owhGTF5hmQEoALUK8jGlNCMvohcFOnipj6NKgn5DFb5DK/ybCaREz+awXrncVPIRjvYMKvTo5Ot3PgA8B3kr7HyuNPtWIw13IbFuljv6djV+gXHcY2qfX97FH0TDN5sihAlWaFZBAir3hZDzuKGWHXn0LwZVrOo0EKXNAs191RtAebnMc/u+H1/8tp1R5j/l1jszkMhT9DF49+Y36rh+r8Pw1IR2N72N7KPGnExKpYDqFzwiEohPdbtSheVieajRE71Ua7ev6x/Vuy+gWOFH2Txv3hXPhRUHhCsBbEWRhQvjV+Mr98tH5Ad7XSKMinSoVlGAn8dIWqFuUFu9ASU3pUN1coqxpdlqEyQXV4qUT6mSl/1eiYK3/FuYTKXuagOf/ysNDuyp18X7j2aDxvrbHhHNmPX2Yxx5jWrbG+DOpOZG+NkWd1xzXtQ4XrXU4ghZ5toutzVzKjXrR5+Qu18bo5+0QnqAibTbIVuaYLodzs0p6AnF2SaxzBbEB8MrmM0s6VH4WGLifGwamLcNshVB25i8PVIaqzfMVDzMQCJPCYOecxmJyBUnJlnQ8Ud9czg6NldnzZx688ddABB4kXjycOIHxKapo004mNhfs3m+74W7oAhb0Z/TzU+8qx9H4+E4mMr+XCFH4bl+K5ZoM1Hl/M+MNCIK9ZbNo6dUS+ksUTxSqdwI8/eZjt7w9LxdolqeZ/rfXiXQTp2CHKE2afOsaPL9vDV9g8iMfcEknalM2bTP8SQRMWyX/e5U5zQxxRlhTs7WAsO1eCyESL9AVF9jYN6iPT/7DiHbDBssmdeRvtqLvy3Gzz/3ZdqMZrd2r3XT8N7SsCmZip7WTvAnMeeedXrL3r7H1XwH5Y3eRWy4KsbDXukX11lofqMKvzdmtBEeYT7kBGCcoQswheOajywaB+gaa9LaLKS4Lh034Gqoaao9wn8sL0SXd5irI+SplOgdat7Fdd7RQ7FPAk622WV2J8epcDucBZUu3GrL5Kv7qBXARl3YvyTArnSfRlp7uJulh1kHtXiHZbuuSyoQ4C6h0FJ9OTuctY1UX0hfi1ncR3UtjbqNoeUdY1j3NLPZIiNTkTdlVznFPFVpFLI24CbTwzPyMC40VJlJuGqWOv2UPfDGjV5tdkMMZurBx4/vIGjV9VmijGjkeqg49ZBqxdjgzMUv01x45VBEOJ6m/wVR0jWP6lPnpyVBMZPaWhPWyKDLUaDQpEik27D4ywqooq6opDzCg8P4nD0aNarRGPCKaxEncZxTTWnTwATnHEnFMLjqs4PoFlZYv3KLNjHgYQ+Ti4b1Fx0w/+oBkf2qG/85XoUAJo68/D8JHF6MFMxDSc0WM4GosTCIUk5Z9jmoct2wgY8LOrWFx91KAIm2KDSFOp4Pex3MTADNx2Wrk1ekXltgOW+baRa17gyzAYK6pidUlBG9RpYWsY8yvy1xw08koGDXZYDj+sD16jPtI7x54V3KpOV8J5UYeEgSRwE/bOvCthWqxNEmT4tR1pjRzdkesjoUAArrIDfnBdlvj0U2ukKEI6b20jIxYkNa3MUe8NbK3tMv6JsVOtncQZKns43Np5B07GOMf8Z6OaWgSH9LQT1MrVmFnTJWk56PrlGXfesXRdOSNor++wald23dmWfagndfE0WSN48PC7U0ze46Kt7WP+4ubO+CXfWj+pN9VI+qvglt8Yb1XDuoXTMuJneLZvPin2UHOuMy76WqWSSmuGd99jze1DAD/lu91B0g05SpjOaeeaku+nc8IQDwqZuDlXNzsnYBoNFGHayCw7mQK/U9RjIV6i2pF1QZbVatC6aYzU5EclRaLJYI8Cn7mULNuygddhcLu2mSV8xmVmvRBLQ7+OZsYLHkSp6IoEBolJsBYXFhiwqTP96FOJ3op2J0JlIOhMZ1lWVQjvGQUItnKWQ0DdTcjQfUB8/wwrbHE3KXi9nKU/zPKocVBL7Y9f0L5KNN4UiQEh9QJCQd10ArUmbQlqfpmiQHoNuLR9wFXIbaLTMrVGKZlTaaKojy0bha/so9avUK1EZmn92F6ciokDmZEM/dtXl5js/KXKzU5eb3xS4OEY7xU2C+k5Kj7ZucgyrfThnwjCl1gMxOREqDnh8e6svsoc2kTm0sas8ajm04Q7pmTHOZa09olZRWCCeJAR7Yo0kTSEsuWappjmkcozrWTs9vuG6st17K3V8slkHSGF70/dXin12dbH71ij2YKXYF1cXe2CNYkccW+xGZ1Wxw06r8zSwu5sdc52GAj19lwM8T8/kjFlR4XzIa3E+VOLkm/4RnGvcUZSp+Vm7uxfDqAGS35wESvReUvO41jeKNqNk5BRui/8xL7N4mTUvas9hXubxMs8vFtf8IsaH9bSLMbpoCieF1nWb4lkeH8u7Wa/i1yOh7jXYjeP8oeb5q3zJeoLyUjvwI+vrFGQDnfhsqDOZjRQHsxT4q3b+O8WhPn5mSs8pmfXVhldoKSKIa7VLzLb1JFHTzlka4GcDDfEzRyP8bKQUPy5N4cejafzM0wx+NhEUe3mfb/Nmg5pgG5lAssmtlFiTigXqTtrCydavMHF1NFjI+roB0FPnIQOVopW81yjcuyNbsIUXTLS7RVD9ZVGpe5X2v2ch20KbEMS3osvIto5fSp0D2bbxi0U1fgDB2yiWxg/yB1a45wQ1oYDfJUAf9x0O5tl7s5wxYjsT++20yBZPomOYo+2aOx+YAHPEz0N93oBnb/zQQw99JcL7Rrz37ft2SHs7aJ4fPGlxihjGmOHNWUd0bBl1nmUQkVTtZi5Tq4b9DILiUPlP5xisGY241EEmCHnFPUK9L47blwmdQVvI5SHR9iVjo/767Ixa7ICAduio6AyJnovdyAvxupU6xu4BalGAKMVPSttReHvfT0zH9OdMnI1i0DBwVxPhs74TKjC8nvWG7EzcTDpTDf/TMp+HfGci3wCvZ74BvZvSrnRoRrRftK3g6yPCrfP3vo7yN+ZnEiq4maYxpvyM1/FQtSfftZCjOJRq0gn+wH/fvYC0PvUrad8laSkqPZPrQW1Ta9U2oIF0lT+cWdTmkWfTTG0uOg34bzYAboYr8ky4oj/+csNepuoGe61CK3/5mrZCI9mVqvlJCELNMsCcNRu775OF2diO5LfcVl+B3wx4vPMkAY+dMuCxU0aIccoIMa8KPFcc81TdExTeX3DyWTISX6vrCHhKKxlV5cTGHBRfr4aORFQcsbp4UDULpORCP/ftxt919Za2a0NmRUbVfT2+xEphsO9/ulCYnkjuFW0aLvbE+JPNfxfhZGIcHWDbHtSih5kAsjr9JtFVBbtXSMfYXnUoSN94K1AGOHXDEjyhnGBq+Onx0YkIycuFgrvU9/v1AhNbwhizHTtqCqXogI1OaYL+4ByjMMhqB82ai/GP/qb1/p+axPCPOf41dyc61kUBfiKrAlMDMlxnP9loQH2PHSW3GkwQhs1KbbW31sEJfpqXgEp8JfgDk5givWSn4xtNReaMU2waETLUIx6kyGsSAIz8UfIUJywyMhDRBnkH8Ekz+uSIj0/gZEDBeVALq9weIQrdt4LevNZxptsb0y1ss9H0Adyp1+qSLBw/5GQS1O66LGaRMxPsu06P/qgH/4uZuFjkQ2ic0WDXdF2Wcju4+ToFrjlt2klHyXOd3sPrCg8QXeH/ItubFLpc6sKmpGcqiEfJs534tNr4K9sGQ49LRFiUQNLYlAhHyX96uJWmf42nNeu92onb51ezNObZ7shAggJtRaeaLRa4PGchcUfb1fKPWgPApaS1gWud5LQgc38Jmb9UyOjuJCYPjUbSBkhi1uXHHnkaKywxtXVHyXmOt44G0w/onujlrrPt1NlN6/44wegxdMWypzOWWZS3N+x7mYQf53aM1UCMw29dCNgoDNPPy+BGnJjSiNIDuhx4lpDbz6a5pRmazmZphkX9WdpwWTaHU02ao43XZdiIzXM7mncTf9hMm+RCM1eywJUk+gV7uUXuRKLg3cLj28pJW5eybbTNjG/LKHmmE53WFP2tTtE41clZAgKYrMEo+a5HglEUpn+jONWCTLjA/XrH6RfVe5zHFzfzwJeiB1p9oNUH5AKmAaChZwtiAG4ooJzo6ltXaUhPsyZyYyLRqNebqYvzXkxhihtwZgpNe/1R8r1O/LC61MeIBau11ZhCoHb6d4CAUK+gRr0eVXLQaV2tL3B6D7cB3d7punhhFhftoXbC/SBZrn5tuZ4+6h1+x8lQ79vXRYXTL6JfOKRB3yn4wTWp7+n27msnXRinW9vLTzrWJ7ePtV7LeKRDxHHmtSVjBBd8B7j+w0Ylpc2oENRYCeAVzPMd8HxKrhMLvz5TqPSPblEdG0qqE2ZoTq+3lC/9B6lqivswza1NwyvejOnD1OkD7RUnBdotjjNYP7XHOhYYpH9gJtZRGsUR7o1hM3/7jHyL+emPFN/56Q/lqSeCeC/9HN4MDQaT5O5qWJqBaTU5/XE+dFJUu87pPSyKFCtF8iEIK5+9nvmsg12GjOSfDWWCriGBBqxfLORf9ZzzbJO0RpOL2uS8NjmLtha1yVkgU/pp1F+gVNZDm1cwyByIkdS/Tgw4B3Iqkt6HrJ1Eyw7HCURLYBRcB9DU0+FGERyUZq4zjiRnUU5yb6CQNqR/whWgok9Jm3PcpTm2I+07pkp2bpD+qXxCb+cBrtDM9SYl3pu5BbbwoQXosjbRYvpn8nULZ9/CNSET+G1IW9M/xxcttY1LEW0jWsoy/palf6Hf0GbOCXn6x4ouUnw7bU9/X6rdgYT57AzNeSbtgKoi/Sy+bda8Z+mnnXQWsaLxbJ7Bc7gr50AwS7Jz+fHcpWwX7crOo7PpvPRemUrKzucP5y9lF9AFxVT+vOOkpyYNsZIGTgW+QF77RyPJ2v2AwD0G3JEJKwOBDvAGVoufjhKM9EtSFuSmb4Qm5MESSf9JPg3505A/mWOHEfcr5STx5z1l+jUaJSO2IkoflBIdKF8uc3rroJJxXaq7oibVUe+RyzR/cMvaMs3pr/3fv+Vkaz+BIdUhHf5xxxk9XGmJQjOj0dhRWnCd8ZXXNSvJh7iEuyUGtRMlIX3dKg2wZHn+voxKSjlrKHl0H5h+RTBdpjKwU2kkneiRyFS+zmT6VUOwkKUu6VzphKc/pUH6L6bCkPwa5EdswBY9Ihz5Q8yqCCJ+RRBBzU93wtPCj3tNTYH4LcBMmprWr1dYZ8bTx92XnYw/r7/ZRz+jj7N6+afPSyd9NfrJLysuA7847sqd8V2/DfVS7o69cSc9gkxwBamvrylenfFX3gRN6/hu1keOPX5/9W/eiGJ4PPwu+DjfLhpMruetP46cXMPb8GCO0h4Mpib4bmr75ze+DKV9Pgk09b3pHaiEH37zdXjI4bR8WSrIQyiX16qrrAKV/J6UJRSYaFnnpEWAprQqS/JemNLLEcdLrxvDn6KOjcGqJ7DQHY9d/hxctmDg6I7v+wLa5sS//FE8cCtH0QU83NbW+VGyqlZyTW1BUVvQUtvb22o7RZ8/297nI39kbtn8zW+8TCt/R9HKO9fR58/W+2xqC1pqu721z1NcCeml2vRDQLVkUyXlF5DCv79ovqgxy/NNBn2Da8zH2zKlkvqEIxFpCPpq1VYfuMi9hCv7lTWb+WX8ll3awSlvlJSZSsqPI6XS5I5GkzubTe7iQm+yFZsm320rNinvQcrpjuWnpJrPYeKtEZhTuYXbsaHAascn6LY7fvBzole+BbXknfTN+MX39AtvLw80yFUr5bbyf3LK8tRhGwctgPMcDdGU3oqMSJ3XT3pJJv0JBQFqkIiRCTnWaYiLYUarh0moCA76AabcwwxwZgDKBaByF3MgRmvuC8X0ErYzfuFlduyL4Z92wydvKQefT1fQEyMRmAs5O7MIdEJkZgrV8ocT+kvpBJk1Z4CcuzKhKMrDQ+TLA3BzUyI2JRK0rn7AqgNNbnc9Vy61aLd26xw6hXLfhu/ojAl6/nqQHbKP1yyc+vK1o5OSmwCn6HnpWqKj93jyuLCS1Ji80dlu58muWBQhfxeD6FbdHsaEgfsHcNblM+3m+Tc2e+ltGLgavUFlY1oHYPSkBU3LGC+hEIcP6dtL9gMghIwUsA4zTinm9Kaak74FgEv//u16Der5jttiElnY/7ioSort6iQICC+nb+HUq4ylm7UDeei9R4Q0VpwFWCs4NPSDjlNpyDPpcIevM4SasVPAr08uY5r69cVo7IEfvvZ1VcU4V1Ec66BdYNdbDK5YBHmcDhvrCf/08U+q5iVYqxoK1UWTXvqTUnpaS3QOkJu+VSAKHXG1871yMYXYyoqH71kwSr2G6JkuCXgoAmp3KC6CvMQDHXUuh0ExBm7tpDrm6DOWUGcOxYK3qyCwE35cdOjAH1cQogcAvA0dVpcJelzbPXiSNpw12kgKt+Q9C8hz9VjMgbM8R6lGh4+PTCT0qhVCJ9lQgHDsvoihuKxQfLzjvESKvTfz6nV5e9xKRb6t6HzA3VBSJem3OQb5ZEKNWJW+8hUgQZV2PbR7tGz3Bmn32Kp2L/Yq7ca23ce1IivqVp8q6TtQdRXP/oPrvNQ9hOqRjbHXOODm9Z/7T6Ej78Rx+zvz4BfJuzoPF+RcWo6u8WwPN20n3OQvQ9875IqzPNsXs5mQhlxpqBLWwuWh5wEDPQ+Hfhh2XEGEG5ikwrYhUr/d8Xc9dRAAMdVEJOaffpCI77ZtYnyCMabv5AEinQTNQXcQurVrquMMtyND1rO7mqAIdopWJDYiN8Sl1eeDz9gptt7U5cLvksJmKx/iop0rVxmwaUNiLD3WDqKfxnmQxg8GmST4+MGpthRSiiuDo4hbdcg3+bhrgCZ/Dko49CVPJzF9JqnM4Z++hUhRAU5wTIdwlC5Wql3TG0oKe1n5ACMpBbP2REYfave7FFdGQSEmzi88OOD1CuQF5gfoKshfJD3GEYDCJZCvFJWQ7btA1bIMQmuHpyqDEtKOtJkH6oXAJX5w+y4+okKZ5GKKN8vVeeFbmFsdocLxu3QKKNDBaDNm4N0aNJXvoQVfnvOumRgt7WLVlDNpKxo4zfz4WplKdAHw72IKm41WizpoCmB2+desMN+u3n/vuhISEdDzihswRtjRZZ/eIXKbj2mWrmIJ+YqkQCT+SSq0K/mA43ovcQ6JIYANdoE+BwrE8LvUETcKM8RA3nzU5Upd0KFpdl+za56O5nEkj0qcWhy9NMVDKT7CZAaaOSwqdLXCUJaIUy2QjF1xkJw81TjK7wAUvoJChDXkVzcvIaaMa5UcguzklviFr09LLmH66RpKqDilEqRSRo86Jo4AiuGSXUW441jOruOtLaFTm4R+4SOU0C9cv4S+aDzvdWBarGVXC+swGdZv6LH9/NM1WV6/FrI8eW0lfqYu5u99eGL+ntVi/iVri/mxYj56c3Ixf8+6xfxLHpmY/+XA91nMj6queSxioAGLGyr523kSX0CF1FOaaHWKDu3SH67BrQYQso/YGrRcpK1HGgCHzAz7UzcAraHmm/5+3DIUQXH9PtE69Fb9usLVx/BUHslVcKOeDZGvR4k6qQqJ/56+AEjrcTe+6CYCp9rAVevslD92lzC5JnZEnphI7SEBK/hzaHY0PUxUz1zYML4mxBnq9bqJuae6ifGLcWI6nqHbFZhNywYKegENT1/ecRnPo3u5Rt0FzQGKUGI83DlFwMbBHncelZztzSM9RC8rW6QeOemdwsOsBFy903KN4v6ndKQojfsTKJ3+rGJj60cxUk/fKxXrQWEPP772HR8zzZx5qnVJubAnJUPcczu4JKid/pwSA3LNbm2vMfzEqAu3MuO1N07eY7tx+lOjIAP1FzA5xtnJ2EfFnyi8IcPYpOhGmnsDzaPt8f9NLompjtUPju4ezOt1qCMy3UQ55gwORTQnSNkztV7ySEreUzgpy5GdHCV3HjRmPnkHjDWoqTQxoxg7TyuhBPd1ybUuXwl8qYEt1WVrI8T7KsEHmESf+CeW+0Toh7h0kil0yQcGtorx/pgstb6gNpVudVuB2t6vtdk52FXri5oowtte23ahufm5Szc//9sTRx/C0/uI3KqXQeFkhSsvJAJIGlcb61Yj7Tr4gSCgKK+T7zIwME6H8CV3tZ6CkEOg8EeJcdCU/GoU+Idc7Iq4fdl2XcuknX9ebCQLt/E/6T20K9i/hN1ux3dcL5ECeYBpiLCR+kWdklie2edHjL3ME1Xs4x+0L4AR21IpzND4gECj/g1sr8xwTDPoPuifHN0IQe47jg9SMDSkBVRWsn3wyXITRkVqfMoDbG+66iva1Am7U5TuStIHNcmsGDuOPIHM6+d9HhBjre6ZvMKpNnUEc00gefIr4x8EEMFxDRLiOddi4SRVdQUo5CuIulJFP0qKJ6AOQIvNAsAcZgEZKEtXEgNc0Hn+isrsNqaDtIF44oNzZ8xrgGEYV974aqcNFaI+JOvdaWnPDsU0KOMNsd6DbIC9h04rhaYfAG9tG4Yx6LSWk/lB3bj4qGxgtmaVjgxq+NOhgQFObXS6OyN8ddOfl2nrojoZFTlFopTPHByJhv0AYjT3cOBqy50DYFIHnlXWoyscdahLMjyRYz9kDndap9MFFmBuFaydAqz9BmB1DAauXWSoQxYZSrDCZBzI5TbAqngAy2fxXTX0Oq6DPGYzk/y047gvNfoP3yCxDwFSiKNC1cVzaKHqUoAGPAr5B6Smktep5AW+M8gR3khLuEUJp1Ki0yzhokRHSzgogURvSa+efabSX48CXf4Sp9K39ZBXhyG6atcKRlfJ61byAje1x66W8IoSbqWE0yihPTZddU2JKiSo0yzh6RhDHSNK6JZe/VQ7vsfsi4n7S3HaXKVsuV8uApXtjfcwoy+iwDaKqDeN5eAV+z7i3bOLOmPtqy/qHF+28ULE4feMH+qYJuXGsc6E9D0pXfdnfsVzfvJZJ9L+m79DCj9fqrIRHaudrdHM7nebGxABRd9tttAWgcRqybHZqWMrl9wdGZcW0s20VoRRFhXFUlF1FmJTdbWv1BXfU061FEhBD6b8N3m+y2wQajwu5zUZHtj1MAyCjuN6vmF2fivio9e+QXlAVrvWTvvwoZ0P6tdTckJkgS3CydBK3e1iUIwtcamMpLgyYz2yg1H0ilahV7AWevVK9ApOgl7q86or29bS/X+c+cbFr+h+8MgdVE9oTVU2rrCspQl+r+/Ca0RzZ+dUvFE7DW/Uzrs16ia8D+k5wHHH7urWVd7T8l6ixwnv0/IueVfo+iQXWaR2fEUutMLJRhj3zC1dfEk/jCmT76oZ4BKaBn8UKI5E/syvUBZ8yCRcmGNzwE3UnBucKL96+PkQlyKvluNjAKG5e3yh5klPGL3IfR2b/D6b/EB78k2VSo7b5BPtue9pT+Ye3Sl91svZ/Hq7vj5oXt8Dz37Vav2TVqkr515TeFnrutu83sZbn8dGKeP/q1PKQFzQmTHIln6kkJXTX5KCu3kLyWQQ6l0393BrFuzYeeYAdSIYDV5hj4OfA09f+Ebtdf8w8no4RW6bND03rkwd5HzIGUiax1HIksJ9EU8RBZU5PaBKl/KSWVenz+ii8h6mz6ogu+bVk1dMBbc59TrdIXN/AYW+AmOgFEm1MpiG3mq9xk7BzZ2M/KX3D0oQ3sZ4yauVQAFkFcql52yakJudnS3NjUqOI04+JFehYQJi3+IAMT3cCJzI7T510RjICvRoqNiS4+ovai1i6SASo8HtD3GD2nusUh0D2kj/Vnf09Szv0SPBWhbp2+t4INrHQgcjpjfkGKWLTgNmU1tKP6pcrZ7+Hpuu2bR5HXLuGkKCjBj3RfhRuOsrwK/9wyv/gIQj4aDs5vD0/GotL7Y1XGVL70dJGdQNMCdMZUeYSn4oOrXHQH4db9ljpXvYZKAdck3TvHGaAscGd5KqPJ0ULOChRHGjVFycDc29Tk2NkRpLasyp/Gph4XKvaIrnVM+QHHmGVJHqb/oxgfmQ3/KA33n+HbQzKloIxvOyp0IzgUksHeWNHSU9NdqDW5JG9VgwfONHqgvDetzdGZit4W967pDXdn0hO8VCdrlyXcg+BhDoQnbVfZqDhezYhRyVCzmuL+Ri5TqaHNt1bdSoEGd6JZvI/JKBZFbHWK5tcvAzNCJ7pHS/u8YCDzm9XNNxY00r9mVOuaZzhzxTgFSpCuwyWItX4OOyImpfsdQ3ORJ8oAQyTdAItzWiXuZ4Ks/CYayR8Qup38xTjCmJ4VPdHAUGgunkoq3LFnJIYYIYE3GrIwIZ4OZUrs3CkOW7OuZe9sA8zJpDa8dM7z1lqGZ3lNS+fLLxhauuuxVyk3t8r8cuS9wbBB1zT504+hPFTyiCXaRHkzxezrpCgvkjriFyUrKS96kPV0ld6vJP1UH7A4f+O6BffXVfmA+glLSgpOgdFOF/z1nIIpvqv4N8/I9T/fJYwn52F8h7R+a1fHEWKHwHDgmiNwOhTBCCfGQ7gWVfvj1nUPH1yXWSh/9xq16ZyvVRiP9xatjS4tBWvcCjyaKWPKNKHh6begQbKB97c61rSf01rr8G+qo9d5PTg+L6RymuAScQuibLZYOTrCtTTxEnr1SS+6LsA4nsUB8L7fVh5EmYa+wCHSVFO1ftAy4l+/jchcoM2vUMB7F2C5HZ48JFQ298eSkigT21gleqTwxQLDQRxkq/M8tZVJ5I7hE3iTk0SWovr478pOJLvt1s77waHTKaTO/5ee/KQQdPeyVQhaab2O3oKZYGd90INBM79G9r2QL9rKhNn9IRNSP1ngjqYiwPH5369muv9+ac+B8Gnafg4hr/yw2J5q9I7Gnifv5oZ6r38ywIXV1NSZBylYChUO72KPkv6rzyysos4/2qfLCCozzoBpeVOLuZQz0U30/JDSiGBCk6IFeofYTXqydSQkjXxd6V3E3nBhmYnWjQbhTc93fP/7Mj73/ws09+LjqhbsEypwVw2UDzf/Vdf/fbz3zOlZeWXUX3JkfTn0PwvYlttALD51OYDQofIDEaGEB5OSAH0p9RMZtduPW2Bxr+Nd93bsBqcG+wXW9ukmtoZheNZjQ455Y4h/1ww9JTR6sXlEo0CSpoEjTQJPjZzFU00Z27QTvw+UetSot5XoFkXgXz3CLRbcM8dxXmeRXMc5NCTVBiXtDAvFAxL6DQYN7pESCHXMVS7wbbBDnq39JSFIOrQQVXMXbGVkYabrUNR61yJXNaoJwFa6NpUEdTNXvXZhMlbVLjYulzMHmS6zDyQe650O085ad+auUz7ktz553qP+I63jFsO/JOKKfMuzve9oMiGkFCeKfnqLc91IkbIQ/4GgHViEDj10VP03ejZbqzr05UHNR4U8QbJJUB3fHNkQlr5Rkr2pte/X69EuBcB3s7tXH08fsDnPg17Y2vZ//XvZB30D+APjnYnjuqsMLNJwfKjBnVEGTeGLgU1BtwbAOc9319bcEpWvAaLWAXYfrvV7ofr6f3x/vr7z76pR6XHFSgI1cccjVn8oPk/ADDPLp+fPinfvYv/9d1+jri18O3fO2l5nUauZJXe3JzB4797vipn+lCDlyA3sWcpPmlE9eAp1APeyGzbv1B8n5g/LnXv/W+8OCS5vfRQ78axLPDRfQE1ZGzDn6Vf9j/ji9NKp8tPOmodnP8Y/8Ha10q00DxnkScy0LSynO8LUkg+lDNDtCbkHvz45/5q+AgRQrJA2gZ3f6CX+4kT8zwQbyydrtl0tojCqu14wzeK+bHkwg90laEtqIfGP/wJz7XOUgxmlo6dUO5N5atNUdJ8siHAtVXAOksc14+Z3c8zMNHvoot6bNJNHu3eUs4uz/Or2os8BZv6of1SN8dvwJFuWpUfMXC+F+AOPyqGHQtb4OxscTR8/ueTbhg9XfnyAbGK8yXv5fVSJLSHc8uFf58MEYXKg0EO6hpeZ1fwMr3rstEH/d5p/DMZPTD6mPcVcN5bTlzzaH73w68gL2elzb01HArHDdOuKGb6KsjKSyj8zrGJPt1fQaczQfsSD/6aq4GeX3dzb/vuG90u/9zSTRu/ERQ/yDpScXDDx9aGkZBEEVeFIiW69Blg5h/PsdnyKLue5IzJIdfv7XThyKgL/q6X4cAadwbgpOKh2P+1YnuUMDNT7x+BAqDp6eiLvK4DtW93fISfLjXmXolxq6D58RixDqWcQ9Y5IwJqyjWHehORsv0N1SLGUn7RV6YwHZkz3/y77tPWcP8KWrYw7hV5Aj4/aZ/6Syp9/yW7NjU2gYdCjLPnKwad8vqZRLD9jLPuNPGz261G8DjnjYPiS1BnjRqZ4srxpa8ese9JdJ4S95U8kaNvFFr3sXyisevfALBZjTCUrHUQAi/2tFrVmrMoxgL5AACkGdCHX/iN09AaWBwJRAlRKxvWIjgUgpxTzXRmdcCfw/wL0GvURjxj1rNaW3YVbWMrG9H1i/PIxPq78e8mcnSAXc0sJOPn/FvjJbyBFsiTolLSPyshIQi14KhGBgvh6p1kgfzFG4HRjsWJEVg5MJVeWIKh8jWj033Allt5Ke/hOHLcVAfWcd/jqVLDgALgviFj8DEDBwTKxvrofZFF5kGj8dyDwq/ad721+BXPe395l++uuI0LX3lLXIGGKW/V41AZHKNh2OnLJu++WX1rOQJ4TDUoVxNZtkbZminNQc1G7qOi5JCzsAXHaVpIBeGNvVdnSZjwxQzUdaLNUFzPepaLAaJQvvAk0EC/+jVLd4P0cRvKvkzVIscAaPgaCove/Rl3piS3XnYASE7jynoX8I0p5gUpdPHJ145G3hvzIACJyBWKl4Npub9YO5zXhnxAHLM8SczUtYQGqbqfJvnRceWV6N2i2dnrk07iq4gU9kt1WBPPKA3EvEsiWAuF7m2f2VvE3KtBZuXZGLY7VXJOkRgjWo9gIbuWOD4q43cCrbm1kt6DIKh53g6+zDUSXTenWLex+ZEWLsIHmmGkAcYmEQKPX7cJ32uE6JAxpdQUBAT4IfKKOQZdu4tWWnJY9FKTa4a3fRZRQvM9Mc5uuaNebIBHTSrHcsDyCN4wtz+VBHf/asPdW7EEuR2TLcPIB/mwgQccttaez3z8K4TBIEbeIHfMRm5+bfxh7DjRFHkRsk4YtCEyTjmnyAZ9/nHT8Y9/vGS8UDANu7qFcbEBEbmbktNUL0CbNzWDy7BPMnIjOqcmwHJiFnC1fScvAZtu8ikBgrCpCIfCzJfuTTu8VKU5+/A5XU5vfah8XTMYtY9nlnM1bgI+8Q//8c/ZRaspos/T/PTjISgi9jgS1k9J1taAZz6ZUCYqSwmrxZm30/e4LRfO2ggu6uR14Dx2lE5waxehXzncbnX7ZTcoemsEmWwZ7j1oYbbWM1uzzmMP4KkWMHHfE14PC5t1v27ao1/9XOvbanx/7Ui/jr/ITsnN/2uuM73aq7zccMOrvOdG3zd0JvIRapkPLoOL/om9KsrtMArt5MPeZcPHKPxwp7SrAoskB80XujcUoHxPNRsvV8/taqDt4G9EGh6ATokEzAwi7QaFhomeYvUV+sohD2hlinc6K/2u39JFiXGRyRpLJ28q37v61kjcgqD+B5WVKS+X/TWAJ/V8DE7uFZ5d6Bs82Od1Y0+I8OdgaJRtPfZZi6M9vOV9hJpDz/SSdOkhadGVlCjMNRZYwcZZwTpvnygjM1qkBCgyiUJofEDS8eymPpZ15yNYsci6TJ3fIhnS8Uo1FfD/jI/ZA+d5h4ENknt1ZIERXogIoluwFEHxItyrqGjKiTU3viQNXHt1/ZYfczZ6VUBHUjvWFU5qx8N+V8zj6MVaHtj/lAY2Cf190R9Vt/oqADxYo0Qdxg2MR+OYgcLjf88+fVuaNkyn+sxuqonB58PX8EEMINQkGholFqUi9iuGiC9XVFYQ40oO11ejj/9S6+ts5MY8p3wEbkqrWhnoZjFWOLc/6xXtLvTQvnavROk3OjkCS/BfmMJ9u/IBnYJDpIK3qxkMUM465cLJeuWq9qXhZ4N8TNvwlkP+OL9QKyGX5SnlDzDDm5gBpfyx5vt4PDBLXqrdhhISM34TK8HCFaEktH10Nsz1h/N4sKr3QiBWWysm3r3p7jQQ446YwslN6RuWO5jTTaCcQUU4U+cUff4Y09DvtkKp1ayaUpFdKDBsWzGXAFNwGBH0gkYmfuUpn8GBk/d4mk5j6E3K5MDk8xdpJlJMUuXTjgfA6GIhI3RE5aixDNg1P0sCuU9MaGhYW0VSd4cH9RbtW8yhxS2ZLb5hlg4QxpwAnBooHXHahMDsMFcHiTAo6kJTcOAUfvOffVuzWJS1TdbYmvyraBdSIphHdrDEwJu4bcvUSlIyGOPYlm2nI8z9WXQiKnNRZDYh1E9/3ZQpKtFBlj/A13bY6eMXIOb8S+uSP44dledGuQoTIkq6WFEcgNWBkEfZeyuMDyksDN4klw4UzxQaHgZEqPEphvN739yXK19HFeqPnR6VbfUO2dUUbslMO6fqmlrh91AughMYpm+Dd66ztg5UGOC9K+OoyW0z32GksCduiHXfXgZjiZHkCjIdBpZSleL9mzZ912mjTH/CR3MXJFHMq8SL9wve4sOli+QaEXdFKi6KZTas0iZbYyfK7Ou+vrvKYFJyAWZ7au5GsiGkNkheUDdUUUo8o+aZhFPazlPG0BK78hcCyQXKOkes1G3VmTjNizCnQ6rBMJaNCxnaflMvpYZoIz4kTuQ9w19GdSKU3pULdEPwL0ogo5qWKz+FRKpVxrL+1iPPeKffiWcqtikIGQJ6Cv/sE9pzk+BhJzClZwiYlWf/+FBV0IE51MaPDMPsOQSipEVhFAWecAfswAN6B1McyIUIx5GgHj6hkL08dM34a4ozYIy9iYQCL4SrwRL5QhR/MMtcawxWSrqVgoLpfRNddu7sesY36QOx9zxL3zM+Kr63P99mR75/DScSuHhZ1q9S30tcI0jHbAg4FlFKrVxGF30z73Y7JJNliM/txdnePp2+Mbzx9dUWLBn3Mk4smR+/iM19/xOGU5KG76w3rCtFRh+DaBow7+Zq8pYkOlfCxPAyYoVZsp9s8RCwsKT2+jy/tWGrGkicF31VG1CMKB6Bv2ccjzjZTnmyjoqDGcBusN/RmGsXQqUyVJoTpAc8tPPo4tZpPaos+TBNYyvbx1zzDxfk+KW22hRMwZxXKiJo2NypiGc5lgZAg1MTKE6oQ6wGLRh72Slper6lWbtX6yzzJWvmOx3jie2g+uspa83N9O/0XvuIIckQZHG6sHcrufCZQUO8TMFm85sCB1iJWKfg/uoVxmvZvxjFC4PXspH5mo5743aEfDjt7ysDQGTf0B8dBfSqQlWCkk1KLaGwA2cB3VUOhWy2TFk0zNk069Jp0KFr3zOoIPf/WqBg0WM7hazgxvnNm4hZsaELkTYVf7fxJ6pv20lZzqwPzGmPUK/ocQUK8ZKoMLFajgU7EmKzBj8gbwj+QXwePKqJUnTi8JYKfhjOqobP3PhA1gOs8RqGGT+Wpyz8dIyK4A6eqJPy1lQ9esTmIL3XDpRRkQ6jETOTvrC8EhfBphL286Q4mxkX9MqFRgJYzXnfKDGjF+wA5U9mnNdPrUgdgm0InKRWia7yO7n05hXl6YPlDc2SncT/XxGrACwbcR7rBbS+kwz40UxDMCjZrsum0lQO0mdWqtkSGimYIi7nzypGGZUmcqsne/G9O/7DvnvlznThpVsjjaYT/HeSb4RPGWeZmnjSjarzGQT+o8xmpGxKPksdTwlgciwjjbL8R7xGyTyfAHmuS4SpPML3GtAaLOkbNaUzUhZlJRFSeG6NtECN2cgktIMduT6spgvcFfkBEkAj7haOO+boWnDVyfc5xnaXL7N8dum8m2e31zzlm+YLC8zTCa0YbnY2TAQVyiEmQmYMFHKTwiLhh/w3oWxg0mTVa+kJ6GUOzG1IO5mh3gYFvGwLNPQxZIsUbrvefLf7+l2GisEycN6stKkk8Sjee1XW+PRQNTomkvbyhrgseuJS+Nrr0ue4zgsVVt2o2w74I2Q2Eh3DEE3KPD3oPH8Lui916Qe3r23jTqPDGlO/sL1HAnZXdDIQtbbm4MnmUbdcQDwp0dLHG0JKt8qHy+Swyk3jJX25CG/iNehEF7kxq/5cucgw01O3fOQf5wrFih8YY4zTxToHMO//cqCwXt8bHml0LFZCeGpBbv1jy2rAGVU3P5RHVttMLkLCIY1BmngaWIZrUAfRP7ELtAWznfq2PrqmDJNNtrYXYd/r4jdda8Dx3TlDmGP7hBqewWE+2S0+bje3drLgt9djoPNVmUj4Iq8zwovFcl24gdzeP/1MqgHescnuSvCY8WE7GjFcLhi25Xzlm8PSBvOp/XgercKezjVNh3J0RVdIEb3iVOBY0U1TNf8ErCiV3nugrG4+k3X84SrVvinZ/inb/inWxtcUBkcRF/8mMHlYWNQYWVQYXVQUXVQkdkX6RIXZYcr6lKwTCuD1FisuJ3OPbPz8Cu51O7lAI4wJNC2p4DKuD4lW2a76unV0I6BoA8IuiX4IvKr4Asq4AsoVPCV4flB2T1jQvnLjxwbOnsfdWyo4wJ5VQ7Wihd/8JjhBYb3bxcv6lhBURWQ68SQ/Z0aEYE4XQinPHqlT/u4czqLBVe1e76xw+Z5+7minw+ZV/gyR6oRA50EpPGbe6VNJtnHaxYqYcyD0u7FToGCca+VpqylZ1hoSnLXwCaSjlLx6uI1qgAo/TiMEIr3E5O3kVv5aiXs9GtoYZJ7NuiqQa4QCo6wQdLDxmZGcgIzyuLkrTTmBeToNj1J9doDuZJni9jSb888c+y+x7Avb8JjzPlfb7nFNW1d3aJHkHtND+WM45RA7bQAtfPoA9VvdN2v88nHHKgWmp31Q9Oc63k103oP6ftRwJAiIRt63KSF5o1HUZHBeT4ezUX4u1GgxyeOqAaLPihFR9vtByc28DGol1w91nCeDapFrl27QgHDktKtrdu3ZSheyLqrFnk1XmYPCFm5dpCUCBkaDIwVIYvXEK/xSREyPClCuhWEDE2k4+7RPGnMftLQqSjq1hDSbUVIpV3uGgjptiOkW1vlPXInPMac/3XbxPW6QZ6eru0Fh4HLaHFKFjCHCRSQcD4mc1o4bgxMYGGhtHloyYKdBUQoii3AO5VXD6/hSeHvnSb8e4B/i+ljdf/wmMNflWUAvLdewNuD/hpBcE9CEEJRgSs1CJUaUMC/YtcS25sw91WsTh54sj0KxYnkONZr+HC65ZmNlLiX8/Vzis9p8Zl7I0+peBXkf4bYaiDAgpj8uoWPutwRE6TPPhlUhxw5jgPF2lXYXDp6MuWjtN78N102DjLQcw2qe/+TyfS0w62kd71VldIuj6Swq3GSB082QjOE3NNBtA3bjgt9FCjouHYv4csi8tQGaW6SiHE6xolB4O/yBfVY6hrY7BzvrBqGqV0r1wmbsBtQgwWAsRo7xci92si95B5Xggk75egPO+XwMY5UO6qEe94GFTZOKo1XbjKHuC6k3Xn+8XFq7cJnhtlX/tjfvrwwzE1vFMtNNc2vjRti6A6evYrsibZlYW4Xl9oUpm99I//C5EGqpxBmml8pXYqby8YKe9P2n5gwHqZhLai2dbKx71xR1oZSvKQcZifpA0eUg+jdj4rcSiZ3+gGAlFwAzR5CvtDRWzvaAKIeL3+s86ROx7gfL5zKwTQTSsD8MjSOaxb6ve/odetv7ThFZF7kNFo/9WbuKIYjY/6kjpP8hutCJbyuKcTT+qbwIrc+hW95BFPoV6bQb06h35hC//Sm0F9jCv2HPYX/j5MDZ21y0O/oqcW9T2YwfNx1/BYwjDvmpJdzgbEYwlAxbnokkFrM/QqsPDpNWAUtsAqasKoDSlmeObHpyNhxXmKA1kRbWa7jDj4Z70emagD1uAI1aUD1btfDUY3bbnNciJ+nDO5RHBUOTDG9hWqmYE8WKOk4ctiFMXfzwF9OTGFuvKe6XUAocRyIcBsu/PkF1OGhWDmpUG5eaiSmIog6XNZUzsQ940c0tD6rg/JAKxj//eRGa/cTKG2BlIfH4mxLd1z8U240kOuSpB6h45W+C1VME466Ucd0N/8npoPDEI7LgtCa3Bv9NxCn2jlMu5TQ/jmEd7/QhjswZwOo4aPnRWL0U5xmqhvkFf7w0LbrjlmoTUTRjxgFHqKnfBW3C4vP1z55kgV6j9HdL97pPZzPwAK54uJ5RYoXHwPQueBWrTKw4iMn+ElZqkzX2v39C/zda3zHf9XvLvex1rW+U035xUllvgOBwyxM4cKCeWRRsRVz7D1Ws8eOilrGk8l6tNI8P6x4B7Bkh5o5NTRwkluCQM8+8bfmokKvbMNG/3bKVaYb1UAxKiw5ZaQ71xg71y7FsnPtwXpC9qsxakKojLiui+tJOiyZDuRdsz3t1RVxXBmHa8G+44oFdWmgHpnMHbsuE6/1IXVokLpLYR2pwwZS471bIHXY7xqkDgukDgxSB0KUVihchdQeljwjQdiK1B6FFaQOVyO1tyLF9aNBau9WrdKrILXXjtRhgbReO1Lb70DqsNY1IHXYjtSe+CknD3hbeATogjeIFw2Dj+pHHEBUzAxrmBlyTAUlYGC3jiIPhJn7mI8UHgGOJFcOkOnQRe4DT9ab5k0W+pxKBlfYEh5Jqk5vfCdQp/he1OgkrYwYSDu+3V1q1l6tCnu8wz3fM/4/zHo68TIWI72S5YNU3uJjL3H7v3QM+krPeaR5YMwOhJfmAUaPYbV0SPQvDA7D6oFhIZKVTihReb49w2q7TNSiColLs4fPPznrinESP+GXugcoWEKHuFAxMzJ/mJSkxn+t9h327rKcPh9OvVXWiZFkF4UNk990/QAAKSygwXATS36sva8OUv2CSZsQe9+7wrXLiIpu1JqtaKhDtKuFsQ36NcjLleLix6dNPbwmtGLsM3oQIUTnMj7exTPF5t71avtkqAX+/iv2PghwgmKlKngs77noGF6EPTx+DpnrUeMH/rGj7gKD4uJkmvt6NhqTf76z+zIjiFUp+CnHBNijhmdxjy2IvfEJf8kCeqzXygppA7cY1cjnFl+B1wb90nVM8VWhnvu8IcM1K42uRL4cE3vpX95uQnAUyYd9k5aU3cGXk/fFZDUtVr4lkDF5X3gbYG33deOXLOFy3jt89AN/LAhD8hchMAuUPpBzIdOKG8SM/m4flA1L7VuYlyV2OxFToN4tLAE0tk52M8HZtYrqCsC0aC/v9lfhDHS4R3+5as9UIorEeXhp1lNjuYJa5mFtaa1BGFrQosnHyRcp/RCsCJV6US99C1bMAr57IHH2btVjTrmdR49yOxXKPawmla8d8/pnjgtJqUDinXLKWt4+dEtx3THiuiulj9xZmy+3NIAsBqTh6u59JW+RHhQASeXtm5g2m4MvloV2rL+QToxF/P8D8oKN6q/6noqCOOWQarmLAkJuKPPK/uX+uqKVKBuJLBFqL9S0cgwvA422eHxKKxRgNvAbS0ToTjkvnNyw1InUUqc5M5ER49Rrd8uMtHajfUba0TBCK6KAdSXSSdYxPD+k6CCcAEalsTK6iq/cAYqM50zj+tCY1hkrYtARy4f0kjzFL8jNrhqD1uvVFOvNZQc4N9ZResiEZ8nIFyfBvWJ1bBpC/AgLKz/ynoVOwWa6Y+pKisrQqqmoxC44y1gwzHneuOO7P9SrTBrJ1UxuE0btJbiDtjrDWu4Lp95eVDdjGOVnw6kfN2lVS5z7fr+wxLnJSe7znKC50VFNjF67fMuz7RVddOi8zomj3ti9TsWF9Bf00u5F/NU41sTujh+D4iMIotR034t0f95Hx9NfA/tSaKafwDOmTCb6Uy86r/Ok8T+ouXL64/wNv7fegV8RB9JXvYufra2T3gUxroKh+3TG89eP5180fiHMZkWTGIj6kFAlHsPx/76ick3eKD0+hyY5/zv/DpIIVlQlBwVgzb2T5uCWkAnORhq5yAcEYjMBb9QP6uAaDpdfbcaWfkSf0k9h1NYhScs3/ZpK/GxzZ7S/pN4SahsHrzrzD9xbzPwDUfIURIbU4zgTBapiSfzhQ0/0djdO0V3NvVctbHAs+zNeBB4gtnQvxe+qW201suWlb3inemwutSQueVDo2y5+3uqCrX4E7LfUBgQlDUJFMBsGlTXrbyd5Wah4oRdBhG3iaQ/uOK7oETgb8FdOrL1fyKLa0VaM0tV1uG/5oR9982tXFk5opfvZ5db96Jm5Iwf/qXFZvR57BXptIdZz7hAt+mdjty/3UQs43/DvQQgrF+b5HTKLTXvwoc5/qAvMuhN3GaU+fzduiJvNN79/7g0g4dU9uF/zYOAnz5KgP2NHPeX9Qu7WOuJWGq29f7Xx/uJ/D8UJHLs1UaaYBceKmXtLJKvjk6LQ5dUqLkW2Zo2mWMcWa2sEWmXPC4yljoQ+Vr2KZ6ypPLEMAO0XvYqc8Ls402+xcXL1iDloMXAyezWrm6phoxo7eRV09DPPGFrFeq+oq0ewipyYbTUxEF8CYjDl6h3kQN3w8o+rBx6cjl2n2h1FjGrRct4FsqmL2dVWUBahe2ixHaGjOkL3wLMixd0e4+6a3Uu0ewma7OHSYXD8aNYrjmZCpC3np9VdXPnRibzcUqZ2ktSxJMl6ghmDNCkhsxQqLWTYN4PycMJrHce9oVZrSyu62au6EPXsoxIjFYEqHmkzzxgiXa03CPfrj6ib5dpDE/uvSl7v+XrZwm/VO+vu3CtRza/LgE1iGuoJmwy4OBs1h1sUWk2zU+6Brzb088osMgiLzgeFrZdf0k9PEBhPwO/x3cCJ6JqFJTXhDFZUF10noShyVdat46DfjoM+desI6JcIiI547aW8SqnYXNvcoyR3P9BPO1npoNJqhZHeRWlRAP9q4PtybB3esB4y4hVkxDtNMqLXYpR9RUpU4nLOu+Wc96qXWFqb0U9rt1SfbQR1yPzKdMcSSgRNac5eOetdnXVDojy16VSLG1fvz8ghVyz3zvQwjNPhSUHqy3uUMPgT6jH4e8t5UtzKtxYV9nzMokm/scIH9tMQ3WvHhR4NSlwYJoo6wKAhFuCQopVsyARKoNltr6FbqaGfcJne0WyoJAlI1Qc5WQccEIBqBWW7ChHx/A/SF1EXFyZPHzYYTQkfOIXOAYMLz/zHA/1vq7gqZcjM/ce/eOvPeL99yTULQO2S9nVK2ndOzeoelLJqdQ+p/K2y+ZeDas8Xma7ERNcaBjbkQt9cvC0wbU8OqlQ11O285ymHbsjDKxcaglbEnmHDhktlwb/a3UtzC89vv4Dwbbr1vFOEQCXj+O9QFiZPASPiVtEGrh6WJCAypklPdjG3Xu2G6Yrnh2po+JgSAEUlmLBlgZQ1thN17UB9MVQA0OL1pB5dFZINBYqkgp8RfiRcEHVxHISJKqZOF73xdx1niWIuFHZIK0Zj155o7XJ/IevXprMvomtcn86kNpeEeKFd5BJPdNS3mG+Of+uY718kU5QYhqBTtMHg8W57e4RTX+e44KSC0ZlbcmivpKpWaAtKXA4bZpvayXCVFeeuwsgV8ozuQidYK7lnUEnJRCDy/+5xx9xiMkpeF0p6/JKzknsrOT/h5o4GHXfwaD5RZznnlOeJwhlpIMQar8pD1hXyjr5lsgLdCm6VuP6h6DHF0pOTPAARWOWaKwTlhQLjcTsuJ6FrLWHLSUgqJhR470NIrc9Dv3ytmzdG1GeafnSFkgnFy1koSjKLSUa2NJgENzvLOAXVGeNu9tXTg71cHomkm/zxvwKAkgGoAa1/OqBtABR8/TGBq7Ko0wbvewHe8OsMXsAtD+3wS/k5sjC4ThUR6nnTQiOELANoFKraeFLAfznrlhNj5qGn81BHbI/kiHchr0LRwC0G3BLqFXBrhdkfIhAxXAbn1KnGDPbE9a+b/ooqhYy8f8fLoVgix2iUjALPOOMF/eDXrlXMlXq5DokGT6iMm/7orSh8MiUdeelNmgm9gurP6uSKtFX6Kq/mwInHNldRSd5XKKZ2JH/luF2WwAXUho4bIm4ouCHfCvv5mv2EY+wnuqX9RE+OdhvGERADJR0C3oHcMZjUrWOSA9uKGLH9GJNiqcCYH8Y8tyiMSLeyI+ZHIAi4uj71/zvEu/5zF/Buzr0w7TFs1IyRZcNJ258CBGO37qTtdzxj4FXers/d9Vh0Keu8UrnP+o5mPvvekx7NXFiezOC2zLMfxtGMbqsZh55V3VmrfhPOZFy4NBOWndgtNOYWQ34xuWd7V/38BFvC0zFtI59xNguqQtUpr8AYvh2ov4wX5ALCBRkSJB9xb8e9RXTuJfGPrQEdDyAjXOoW4zWbrD3VU7+reNb/JPBdmdTgBuP3o9jGGVkGMIe/GtfOOnRHbdeJAtvxILGQac/c9HAcXFaBTGuZNshY2Hj1w6VAL/UFgiUVHNnVXnUbjlxpxoBwDbotzjtS+jmFrjfWrXNXMAMfX4zbNcCNLJF9rWTLNRvc2zAr07wBMmGNcpm8x15AomVEG4ZmaoUFatXVSGsRz5M8qVFGD/xQcsbLKhCOOzqt0otnqwVkp7it7y8z6uIIrjiFgkkphYxH4opp4INiPG3gKXZcqOG8gFYehSYOF8RrL+sA1/HyDECbZwJHKXDT2kEN9tAJS9PjulGT2YJVegm8st20oeeQu450DXMvV226VhGG6smgq2iOJnyKzLXW9zeJ1u7HjGjdvtZ5ssW99dAnS9qomMYK+fFBfvyC/NjZBx1UtL3QksPTp0k7TpcmAZ0ePlm60GDNJTo8KsnSj4UeLtkFN7QfRlYhuk4/YReabhukHHSUrPkWL4L2yuqUygJ3PS37tfPyHe1l6hOi5+VYW43Tco2rHDYJ2u72StdF0EgJmvsoELTQELSwRtDckxI0t0LQXEvQKpTsQkvJXEPJvBol80DJEHxrEED+edrAN3xOKIoHTORk7F5CpWRBk5LBZTNszUDJpIZOhVUGBU2EZWlJxy6p07EL10HHrC02uu41aYVfpWM+kNUoh8j9wF2gZI1T8z8tRNTPd5K/8uRejGHs8KLD9ENuDe6T6datnF4549G5VmbJOQlAGbpOxwW04FzHBbgkt89+/vtluqPpWouj6Yd5KprexYyL91/84uHaAK0Ep+cb6RPhUY0DK7k4QrvXmMx5JvIARvAsoSE27EvDn5heplynBYonDrBbO3rnR1/R3lEgiYH3b3wBg5G9hFsGVxh0Gt9zdqQlBmEF5d+MBmqlMu9UXa8TA8AclorYLYmThoGYhAdVk/AH7EWoUzGaWt3Wki73UWhfHuAUoHD9VjnpKD0X1mhOSzSMXlm/OsMMKFzIKt7V1f1x7RjleeWqulJMydRBBr/pMqoehXX6QSFStJiRXVJPcwv7ht8Rz+XHXylWi64Ks7mvRGR1E1h+2oUD6JGKXOr2NaZkfyEoPbvv1oZl3HsO4yDyPTd0Ol3T0/1j5zKUBSHqgrAcUj6dgBbBuWA/Rs640oScH8VCXXL/gGTicmCeaDdKTA80c9gGpqhoqOwDr/tao2GiXQraiuMj6saC9MVNZCKmUYFZqGHlTnP6Ruy9xTg0778AAZMw3BBKA+BtGZ27k1ST9GpMKNGZChVE3/qTwzi9pK1rfmIaTF6QxX3X5N6PjhokMn0MCmKYheIlLTQEJdCm1eCzFgovi7WGZ2A+lGKmmIiiz3kfVDVQ/VhjgZR7yGeVssFR04GUJPck6zbIros5cakLbuiSh2NZF84Rx39WUJVfvheoSy7OydIbXwEELhwucibNbW4HshweagIFMjBtKFJ6jYG7FKEzWOfkHyQMph76OSxCi5hWTYsVGFUy/f2XXyuOK00mXvb2lmNKga1YR/h8HeHV2kVTxw/94REd3n2d4qplQsWwDt9hDwwNIPOAYlOxesCclECflFBfv1zfQjM65bwDPBqBM1QtALmwpgAEyoHpGa8r7Jp/Yt59mJH90b1mZLuX0i8cKW/JKM1Jxi5+sC6p94IBSyMlSue+fQwQgkORGQd1Go5M4xRrGDEkhLq2+D3BT9uIXMgwO7SbZPr3qje/RvtHZf9U3IhNeBxQeyFALMDzipDOvxgL2zH0ZIkXXbJGeyCwcKupl2tNk//4YwYkadkkMKZyHfWfHWzUrB80t1TOe/bsopUTu8W53Cnn3lVAYnJdK7howO5iF3fvr9YEF7fqlpRchqXBSF1akFT2MWTKTlvRwh1/6IfbZCBFcyd9b2ncfIsO3TtkSYS7PibOpbHaUbmQaJ9cJdHW3r0gQ4HeIscMm7DQhgBX79DqqRJP8TGVOd+Ky7HUKUjDJ2HCkTvjW+K6nGOmx6nPi7OWcu9HjrTtk42pEu5oLNYUzHDOimS+7tRIT1tSM9dImMsctDPWOZtF7DEjYfKfozHX4Rgv1nCDzhJIyt0vYvDddWipuDm1k52A/oKEswTQVFlKro065yVHcIfaQOeez0Ao18oBfgATgadUSS23sy9wUE1ofmNYaPIv4jLiNzW/s+Z33vwu4rfmIpjcF2KY4x2lEwhrIP8BsYh/7eOciwsB8USnvOKEiWpMZ33O/FWoHAgq//CP1ubM6ITVD0fjxs9iEeO7nJFQMsm3lssnmhftmfLlFRRyqzXYfo01H3frtsOvKh0on3Cm3mRya15w61u+dDfGGJqruG1jziKdseJ/siu4hJmjkNlPSwwZfvj43+FhfKY29jF/6oiU1kuRETy98zU64r/LFyRMA9L8PFHViiceZhjXUGf6SjBNbOeD8eehY6viVEJdTjwIj6ixXKDxp+RmNiO6a+7ZANrjm11ccZfDqkvyXvoeicyG4JDy9RaJ8A8B33xSMTRgAQekzDYzfou7BMDs7DRix3U5Iw4m9BtXBsO2F18x0FP7oKiXh1u/DL2PR46G/uYvagjTKy/DdHRcJ3zT0maK1M/ryRHTrSPmzQVi/tzXXtl26QbqSdkGJwxnOBzCQHeepJ57f/oVa9YDMulSAqjuNPjSH/tZMFa3uEP+G/Ffyn9T/DfNfzP8N8t/G1RWpkhidpOb/prYv3zi9b8+CXiylBLH0oR+ynolHrr8Le9qcj43/tW3vPnLIl3PjW869tNf/F9LQ9/1PMfD/SKuRO7fLqliFn2eXbqoc5Mrpth5n3rsNiDHZ0zdEqfJXWl8lTT8IN5Wy/9sr/Pe+Kaf+dvPv5gbdrrdGBebxn/5h79wNLxsEPDjA/roIvVjr7yLH32k6qOD1N944z/wY4hUffSQ+qlfP8pe2WPpdMyd/gR3OpvChd0i5W6kDPqxTfkkUob9yKbci5RRP7Qpn0JK2g9syn1Ime77NuWzSJnpezblfqTM9l2bco/LT9kG/ocxqoPzZgVkj1lqLjMrKgl87OOjW8yGi1zdbAPWW1lS5HPUR1xDuejHJ3gZbsCSS8Yf4sdZfTzOjzP6+D5+nNbHO/lxSh/fw4+pPt7OjyN9vI0fh/q4zI8DffwYP/b5EaMtrq15oIy7y4X3sdcLsfNYcLX3HF1oyjwjGkAuYAA2lxBnetmJSogwV2tWOxPPriY3OZ1FnJyMImBxb6SNPEIsSoD3zO/P5y/qHHY58T5dqbP8+Al93MSPn9LHzfz4SX1c4Me79XGRH+/Rxy38eL8+4hx6fjx7sB7AaCuv7G3m8G8bzWNRbqVtnA0hBhb56UwQcIDdLTR2DwKySvl5MWykbehpwg9bL+rc6BJGcmc5krnvz+mizhGwRBpvajSeceO5kJWcCCsro3w8kKY38dOcNs3bxLLx5ZsUvMp2QIBz7pvEZnLH5yxdgH5e0JnNt8PVND+LKLmDcnClnLNFJhLMDm6Nv8/y4/Yl2YC4EGrAHsjFT1cDPgQS8KFPXeTJgvLqFFDJrBzOPf6Wy8AmdSveDHwSU+9bOzH/4LD89zp1EFzU6ULurUSxwRWp7lJ2hmeMpTVeeDbH2WRrb943mN+B+T3T/A7N78j8pjhXx3ARmrorQ47XGLIrbg0w5LwHLQa5miuLSi2JuD+IdMSwdjMKjwgDj0ptJnitBqRyVxNgaZDj+A2TMIpcLwoiP3I6CVc1hWDC8CZ+PqPGmaB/eOH8SvqKLxv6vn0Z9D37Muq7tsxc37FfhkkRlQpjNqTqDKwKGMekCisRKyjBHDEp+tbOeZD0NrR82/CtnfPxbdDybfCtnQvwbbT6G9Kc657U2Y3vZ7Z8P1O/X4jvcy3f5xiP8G3Y8m2oZR+flEm5zMpZPDnnLWU7+ef8pexs/rlgKTuHIljzncs/Fy5lu/TO33n88/il7Hz+YWp+AUVAw90UgaE+jn+Spezx/DNgZ+/8s2Epm+GfLUtZl3/OWMqmZMYhGqznfxYTvmNpmMbddHo6mp7yfCecDqbdDkYZDAe9pD8YTut/owJHpmiXmWR46epPJRTpO6oDoTqLtnDO8xkC8hqc39kFneQUJViUST9NaCdKYM/C/rkQrPrs6jsjyznV90FC51Zb7Cd0XvU7o9L51e+9hHZXvtMF/OKZF8gCj69+fFz1Y5zQNE2fzcnI8fhO54Ynaky2GZpppoaIt9RtpgaIBjPVTPVtvbogOLj9e+SLp3W3fHG1/pYvjm2j/qW5yBwxW8pqBkot7PY9n6yw2x6OTHSvo+rWFHQT1/AtHwcQY8xlXK5jlkXST0CyKwhzwGvAEGOwphw8CA/ZRZ3XuRhcDL7lUwx5hmWU2PCQJxc8ZD5/QpWHXEjb0OK2Cg+5UHkI7kI84dQ8ZPOpeMjZJ+chF3X6hodsarKQtME+0qXsW8ZTWVCykE52Ef/hIs8T0WuPFvih6DN6ehYVXXeJn7nDe1aL0PxlD2jOtyjdRMpmOstW0hv/J17LTtf3ut1uwGJ1xL8hsALLFhdHLuK+LwE27pM6G4HtJimPJVHlDPB+t+T9q1n7zIH8Yh7uxTLc6cp8TFuePvNvgqeDn28v+Xudr09Z/t7g653S1VCsQ7Z8feZfP1+fqvL1UZWvz1X5+oYqXx9W+XpS5euDtfg6bTc8kE+vOxfxQH6DtX078dLhl1/hl7PNC6/4/Bx5rnPtiEZGBJirJs4Z3r+hmrjBMP1hNXFY4fZT1Q9TFTafVD8khr8PqomDkrFH44uUZ/vKrM9TZn2+MusLlFnvBrMWtv6tytYfr2x9l7L1XNk6KVvPlK0/Sdn6mcrWd9TYenqabL2ODt+9NNw0PTczu2GO/2MuPzcXzQmXnwvm6lx+Tv8rufwG+tYqT92wisuf187lN9F2LNPt/Vlw5QqXnknogur7dJ1LQ454XLXFFIy6LiVYuUOlBKp8p7zKyBkvn1T9mFU+Qn44k85s8mhG3B20o5naa+Py4H8ppc3UWOtt4diR1t3yJVyTywfaRssXH/KQSTT65ROvL/TLF6tQcc5JM7gscWl6Z8fecdnCgWM2ZGL6c0VmB+LaSWprIwEV6eAiPF4EQGJn+4hEETKiCFVUCjFd/KxBtz86tRhCT0RPnlhle9zkeR32ETuiwCKIbHaaOQbVHENMQZ2bgl42kmb6rk3SWqb7TjOJ0f4s9OsslZS+RQeR95Q6QtfG6tKXPRhdJG//cwlh6iuj22QGVxgrQnksmhUTTTBAkk+uUQTvhIKA/z3MSj0ufa8EDUz/iOdDnGTVpodMHHfHBMNy8drPAxw5+lw4kPQ+P3cqjdh48nrc0ggDHqgj2V873KKk0WoGrAgW2VU98Hs4LC3cyVpnPXo08Tdh6OKgj/9i/mu6abBWOuZMV+10WjX3gfUbBktf31xYazHvrbuxCa1TJz1dLFMeGD+38vV516F4+O6sq0PrFqaPHpLRZHzseS0BFntqWfSeGsB61XMu2HyoR1/Vw0SF2j/BPOfeGBVACvIoGd/oLmV9z7SMHvWBcL2lfDCOlb3XbmOfYixDHcsQGs4hm3Ixs+zVa6GHUQuAkYq1RO5B5eh2kDJL/FKMbSfrozm9etaMA7mypDpk8wwsewb5QKmWP1ylMDrVQzv3xcgzvzaCUQMNRndkjkUDCEQwq5ptR5nWvOk6cEXLdbQMd1KGjmhaPGPqSiQpdmSeWChqaPBZE9m7iUmc40/eUffdCrzBmahbuKXjtAp21dxseMlf9UPnhinjRzQ4VDcbrYzEbYzEfbcgqgnhCF/TT8/8mjrWWg1fuB7LWRwLNZYvAN88JNZwbc3F41XM8hRhPKCaL2f53hp1fPynXtZeh6KmFMZdXFbc5/YMPaYAh8VdrMtxcYMqIZwUI2tKiTKZ8zqDzD+VaW/fQqCP4Ln+/gqStpephytXEHFJbm8IJ1ADPI32F08p0oLxRgSxDSCJjvhnmkVQSISsYKIAous0ssaQ7nEyhU0uzVDAI+Lq+zRt+Jc/7oJXct3o6biHF2mSXxL9oi/94ku6CwyAxWj+5WPz/zP700/70/9946UTmtIP5+uH5WxWbDi5HZyI8fN5/AGHWodwCLbhvM7ObC6hDaxUyDZSl+ZKo1+aNfEW33/pxJzFZ7NlYAqClYk7OaoBKNDGbgg8lY7Y0jykuQPHikrI5UJyOR9N5XM4RlDfueSiHzuOT0xQwcejRhqdLwOckv9+7MOmmn1PkP9+51LulHW+4WJTg0I+7yi0nEbB+tG91fB982UJxGDCLcT5mq/B8qXoKPafmxBfhCLaOHauhwFwYQ2ZzTPQTjCxtf0gd+VtGAPOC/0lgKp4fYDHOk8+b19YUv3gsibex3l83izlm8/tmNiqC3BGiK+bYJMFsMzTxgOcawNmkptHuTsDLof94CLKVYrcrkUWtciWSpHDIYpgP7mFy6jJUQ8DYnNmfBHDiCc5qOQerYS0kjMqldyDSrBDrTZb+g0G8tQCkqDIcrRUJkkRwlgnRw1UoiVCf/ad922Lf/2ZizZfutzIvIjM9quRtrXwiVhivaDCuj2UD0twEd79qmuhjsoAluieXhdtcFLbs6MPvydarJaaMPAfdIxjhp5YNCQ1wVz1wnjE7GmMpV+YC7ZCtMO9jUNi5Nxyt/aEU780qaGHr86jShjcLKYQ6eatW1y3jcg/kMG8FYDCNVfgUoZ3RkMErAWIsgE5QGeICEB9JokO1kaW4rur4RuW+XcK3LkD6uhgrNkMOUA4JlYOsDfbgPr5d86E9dlIDuCk/d5lwj28shnuoUsBRsIsZBPFxD+wcAjwx7qkBVyZWlTdmavVbDEy5fQFjhjjex2nA2omJoi0AT9bD2TbkKeG3lRDb9AcSaUZlMiO5zmSqceJFMo1YYLAQRpCnfDVoUHxdZIRMIOq+Oiuq063VicYRPUrTE1AnnAzmwgYOkMZY47IgduOZzn5x7PttPV4toP5UkaBuG/xaYENCVTelQ40mCTdkW2zTHJbQls0bvFWMdY8g6bwcybFtHWJtbQpOrQRVknbQGTynec7LvE/nXzngWNEtO3YyoR2HlvOaaKwoLPQe3S2ixq2EtEI6ebr1uKrR2fSGRPpIhcW8jPGcSzRjuct5JnMCo+GaDs2CeTxU74iGbFs5MuO55ZflssvVZtbHT/NcfeP59sx+lWIkLciQq6T5h/PdzQnLQci5GbSdjQRIceU5k1EOHWdbrXOBiLkJSLkQIRcEcEvEGELlklGmzKfNmdbaRGH67StCJrVMvtn2dk/K6FMKtZZ30FbKxN+VuuEn2UnvDmlfmOufTvXOyivzjWm9Rr0kKjFRXCFe1NSOCnYip+tlOEno20Q/bdhkgvNwAAfBtTDT6/wTTYz9kGZErwl1MdPn4b4GdIcvs3RtAaTHiFxRCl+UtqAbxtoFj+zNIXEKdqIt43m8j+aLqgVJy+o26D5CrXaAmq1qXT0cGah8z+TpgRVzvgm6SpI17aSdG05FenaapF3a0Kxkq6sTqm2tiLu1pNRquyklOqMJpnaZsjUtkefTOWtZGpH66TvKEnK9uYE7cCk7zATtL0x6fzV5a/NST91nW6lzuak7ygnfQcmfUeDTMG+ep4X8KZT0qfMTnGW1ChSJhN7FiaW/+FDRJnYDBN71ulSpOqcYmoeFjn6V0KH1LWGSlOQE1WeMlpAJSHkEQxcx+LoT91ARnwqubWgYaG6Pgsxtm34wdWfrZCzfIGdgG4ioNN3T9+b7s7MgLcCGFvRuWaLIVpsOlvbJrTCk42pg1mrNkdrtoVGQm0k+ePEd25IWYAOrYuNR1NNs/vRUNMEFRVLsE41jSdqmmiNOv7x5GoaFMaGIIKaxipGu6qm6RkTrz5oGM6nWamBrCn1W9Q0tK5b215NTbN4Gmoa7xRqmg1YLaKfGal+JlX9zJTVz0wb/cx0oZ/xaGq1fsZbn35mtJZ+Jm3oZ2ZK/cxsRT+zQfUzs9DPbABf78zyMu/RBqufmVmtn5mx+pmZqn5m5uT6GY82tOhnEjSVb6jpZ2atfgYZoBfZOP5qZwkfWA9S11BslItbMc0VGpMN2AuWip3hyRU73AiquM2Ryhe1cqvL2ID9ZKEBrWtU0DOoNO6vqTRgkKp1kdZ1RqWumwoVzFypgpkt9CkbsKNVRcs8vtoP2Poadcom/qJph612xOYtnR+0aEc2QKFSJkkRmivVChuw36ZN7doRzTy/lnYEQIpUJzH3SLQj6++i1Y7Ynh19+D3RYrXUhOfxi0Y7YjQhde1IH2n9wmUmuwxg8v77G4LN7MnRLf1CX7K2dsSqRaxP6Cwq1CAh1CAhVw2IZLFRf3SN2qNn1COJUX/0jfpj0FB/DMkBdkI9gsFAPQLkhFoECA+1CFZVNmNcSc8a9coG5clrqD8iZY1z4O8hBRoZOZ+XnYTRe2j5zUY+HNU3D1O6eZjGz8KB49kixOwttHA821oTs+dx1WCzCs8k+/6MhvjJa2i+vYbm8qkv6ZRKC8VWNsYC3iBS4HbFvu3Uq2xmk+L7RL5TF01tZ9yg7cCslBZUSjRla/H1UUxrfeTNL5+8eezBM97D2w1I1uBc2R3ZguVcCzARoaWcVAzGzg1VMUU9AyLqGRBRz2ARNaMFiKhnHFue0PYJkRVCcyOEbrcbC94UVTYW/LpFNxb8tLiCjGZjgYzPLb+gitaNBaA1IxuLTEawmRi5ttHGzGdJfIGrWUAdIn9tVRTYUkOBxTVQYFHngLA3bMzBos7BopmDvIkCi+UcLGIOFnUOqIoCi6tRAKUeheaXT9481ClbJ9lWaWl7Y/a335GRnX3sBSoTTy0Tv52onPjF2u5ja2XiOVumu4/tJ999bC93H9vws40kjNNCdfdhdhgmNNMG/GygFBuGlLp465qdidmEFDuTEXYfo2LzMo3EaZrCz5TZp5hNSHXbodQKWg9LqzaDVs2V5gc7Cq3HDhqqguyREa7NTLhOk0Rlp6AR2WNLotbf/LpI1GnRJtD3fyvkCblxkufTXEmXTocSbTuebzkFKdiyPkq0bf2U6JE0v3zy5pN2ElRX3lsSZDX0hMklTC6BBKmGniwJaptczNZpkqBvMO2B2UC7ygMfFuoqj7BQQISsgPALKWsDpLkF4h/gm69e7xfadBsL+Fmo3PVfq07JLEtXa1T0b1ZXrSf5Nd+DRVdUvXBujLlOdoNPTa9seLnctxMn5mreWvZVTpt9lVO1r1qXUQ8a8DOvfn0Zl76/+KnX1kM5e8aOJ/f0bkWgljxhYQPniY1WBAUM/+JahHpgCCne2RH/KxH/lk052hQE9q+98jV148lQrhEmyB5Yj1jjDfDAFWBT7ghV4aJXL40/3WG3VvKy7RmMJpdifGr/g2DpfwKzQyO8O8Z7VvmVHHwMkBhYz1q2sJRNLujEMDnCA5/x9gEKMSvU252u5IYtkhg3UbeAR4j6jFoLs9ZwGyPDN3nRorUW9JKJJ8hUxmSnf+O49Ienj0uvM7h0xOCSN/aNs1+vwCetH9UBschZ2lk13Ax1njqEmbjzZnW9Yi02nfHAIsS6J4nsHB3zPK99jkrgGkcQary5rhkLajMW1GZs/QZiNqpMi2+1k8xYqBCNKKzPWFidMUdnLNQZiyw8MWPYhmPGuuJhxDcr16FudcZQHaaQPJ2x2MSJN72I1M4QQIvGK2biqqgx0O27Yxx/oKn1T5yTfDEIsLjw1ysmb/dpL7DFdSwwq+QN2xTFoU6XhuhrBLA6pbPgyIYKzWKZxrxLoUwRrGezoIZXLdXV/NTBFLfUTMc6TRABjv9CBQ0wTz11pFQ0pabtMQBsbToxIzAgxJChpe6L3VYWlKXycHyTCyEhFJaRlKyiT+ImAYQf9i7VQZa9G2rvRixT/OOvVHo35OrhKwJlIaioVfAUOqu2vRfBWwpNwQzVpVS9M4WKzENF5pEZgOkAVoc6DULNjKB4n8X7gL9XXKjFsFyN6wQ/aO28AW2Xi7z3n2qg1ZlS7O9RCIexvAZkElsCY9dxQTmRTgR1K1i/u8D6IHlnwiawCfC+aQJ76sOAk64J7aOnzvtgd0/e5e0OMQ2HafczaQ96UImfgx8rMh9xj0Hibq3wCyfWclyJTp3ymKdohJWPfLmTJ3AA5ORTCLWIvcnN4lOcmrT7+24/LmlEhDmV4XBtgXLfupDKIzkfCcnHuU/f+HIaGDnL08OSQPCXvNphSVA9LOlWD0u61cMSc05S3Kf5z3uPFickfEAyLA9IRpUDkkgPSEY4IIkSGuGAJEXgCntAMlx9QDJUh5EYqx5pDPWYBOVxsKHHJSc9LAkoKg9LsilTjRbn2qZwfjLRA5SBbKAjOUBxIcEjyeWkaTEljSktDkai6sHIKY5EouLgY8+qg4/InmPMrD7HmIZFHXo6T2n9oCayJxwbUK5S5HYtsqhFttgilbMPaPTN8FabkqKSe7QS0krOsJU0D0tObUoatZxEzJSnDJGcRMyd7LBkw5qHJVF5RDHzCA5L1t/F5mHJBs3zsHtCUcthybQ1JR2AUQwS8ngx22CLA7UfPTYbLBj7UUftR7/xJyQwEB0ZA9EU9ZkTktvNCclhYzj6sW/QCUm2uMrSZkvT0qYvqarl2Xo839bU8myBpc0Wo+PBV6eiYuKvLn9tWtqcuk63WmdDb7Sl1Bttgd5oi+qNthYa7MXj2TaoTwnqUzi8Wayd+1gN4pYG79jS1CBurlqG5no8sJ0itetsKhV3QO/E/7AJEeudtqhScQf0Thua9lTbrTXglkK1uMhFMlYtLhrVIr+Sqhb5adsKMhrVIjI+t/yiVbSqFrcY1SK1mlRta53obTopfovidhsmeptV29Ymmr+6/LU50aeuE6XWUgVvKyd6GyZ6m050YVKlZzmLjbMcGWPLzNYN5xalUp3RrKZE3No6mVvrk1nVI2a0rTqZmDdVJW45uSpxS6lKXMTP4r+B04ztxWnG9rVPM75JZDafHpHRY4pHSFHyryM52dZKTrLWKc3KpU9N8GeY0syAn5pTmmFysuaUnrpOt1Jnc0qzckozTGlWJyd69nJKOrJoJ2+xfvywKJO2FZPG/zDOyaQtYtK2VihH+6QB9qdJNv7tn0As6gnE4mNxArEFNRq0PvkJxI/3W3f4Fz4aO3y1quTd4sPZ1u/+V7yt33E623o6nW39nn+N23q7j/5/aVt/u9nWr2Pfng3rd1TN9dT226lTtdupU5lLU2vfTrUqhbvrKgXlLBhKNL7bW6Jh9XaqUSTc4i8BUubtQTg3bSoU7j+pQuHGNRUKx4M1FArvWVOhcCRcS6HwQFOh8Mk1FQr3nkyhsLdVoXB7dLLd+oOPRKFwd/zIFQrr72K7QuHh90SLrVIofPWUCoV9bRdS9z1mF1JvNxdSj5gLqcfNhdQHzYXU+82F1Fv0QiqWQ5biu9E33K4XUoFmanlp9AqfNBdS36MXUoHt2RzK40Iqfr/xF1INTn/zQuo3L6Tu/eaF1G9eSP03dSF17///XUj95oXUvae6kPrNC6nfvJD6zQupr14IC/EZf//venSZX48AvQmSc0z8s1BhSYtgSVtqAvTWU3Oh8BG6RZg/KReaf1hcaP6kXGh+NReaPwkXCpsC9GKVC9lNYhs/qmu0tio/2tYUpbeVDIooPLaS888k36lELRSihvhmTNKO5WeXig0mWkzpjuXnwKCcdk6o/PThCZ1jnuO9nG0cStlioz2/92h+7jIKnU07KZRqd3F79vMKnbtCu8oqjoIzVto9Z5n/Azmdb/BJDCQUikrl1/AbJtGf+UhdzMyfVKKff1gS/fxJJfr51RL9/CqJnpkk4jpsznwCvdySZQycrOSYFiFPvbfD1GU7FRHPprDAwW0FDubVvd22Agd3VHBhm+DgduAgZPgdFRzcXsHBbS04eA5wEKI/V4Jqz+D2qjh4zgqdUcPBvNLudoODTSzzLfo1WDqwvbHJOPM0ubrhXmfh5yzKwF+ytZn7PH7mv36bjEVll5sqFH0rKPrmcpOxq9hk7DKbjHO/Sd4pbG4ytj5c8m63G19nan5Gg5qf2aDmZ6zQmQ+Dmmcnpebnfh13Pef8P0rKF8VYJKTND5+Gf72p9s4G1T67QbV3rtDZjybVPrdOss95eCR7fbT6X+9GbP6kG7H5h70Rmwcw5r+eG7F/mffVMLJ3wzcdRzwMs8g9//9lFmkp4aNgIKlWSzymLZN8R9W2aaEgkmdUiNWCEMkzVyZcbAffyK4QSctNOVsLkTxrGYXOYDK5INXu5PaqRPIsppM1IlklzmeCSH5D7TTbD0T2/D9kp7nV2GniuHCxtK86HWTbqiciQ93K+6vwa1srfmWr8IuAXzDazCr4RafArzOBX7D1NPiVc3tV/DpzhfIafm2rtEsWvxoqzx0N09Htp2kDZrSei6D3i/+aTUd3FhuhncZ09KxvEuJ209GHRYjViPTrTnXzBtXd3qC6+QptP22qe9bXkeSe+f8oyVVb1odPa7/O1HVHg7qe0aCuO6CYOl3qeladtJ55eqT1UaKp3zSvbZ4D/T9rSPUNPwfa+69SUfjNc6BvngPVLLu+eQ70zXOgb54DfZO8/1s8B/rmOdC/dVL+zXOgb54DffMc6JvuMb55c/3fyjnQN8+BLvnmOdA3z4G+eQ702BPib54DffMc6NEnud88B/rmOdA3z4He2Qs1QJ2HTYh1pHo6Qeq4yEkcruR+I2hcULpJ8Svun/2TxPb3bdC4kFvkwdYDx8Xkl/H9hQT1JLY/sqXUk6BxPoLGJdZPyvqCxiX7s1O6S+nbMn2AItFYbiZoXB9Po/3FU6ruSzYC1XyNHedr7DhfY8f5GjvOr8aO8yV2nF+LHecv5Uk1dlxi/ab0+SXRL/pSjx2XrBU7LqnGjksqseOSk8aO664ndhwAeCVnqbqIaIaSS04/lFxkQskd8VpDySXrjAiXzdTdqAxQKDlpqP+NNWcqGzOXNp7MmUokzlTmx+/xl2gOPi7mx/fyOgk1Sty9nDrTjPKPD7cHS4ASXlHkRt8ExEtqPlGcJRyz+owvZl2b6O54RNsXuc8GFmGt6kzsz5PmXPB4sRhvi0rn4CjqXeQedrTMM1Ci4gK6mNV963EMpPHkPws4oMNYswnOfR3RPAAqmS8LNyn4Ya8QOb1CvYkJvimZgBgoe9L/3p67IomQyxC4agkf85nnCfOwMP0wmA63CHZyxAGs3nNoaewAfN44VaKIPlAC2pgo4PD9MKDmc4Hka9lIvVH5N/jqkYrJpcd/jvk1vtcPO6XzdT04lwGA48sBcqCKjlCVPBFrcyQOJnQ9XQNSBnneG3SKKJhYHD2Qvj5+7n2lI4HpQOUHktnPhvj9rAOlzbk8vCzF+7OzHn7uc7JAIcdUJUSpaYpEpQShtEOxKNGMMskn0FR9U2TpithD3QNZnNDAAj2bQVmKDuRduBNnHjRLPU7qydxuIF+WZh5DQ+gR/2yk/rFsnkaA7yYe1maZ7s20AXTaoc2yPmJgOFgEFwFS5Av8Aka5RbL4clQApOniXd0lYe0rMCIsFw0ZFmFJqTPJmBca6gSC4cVbyolfZVzj404RS3WqMDOatIUwiiwyR3DItUjRUt5j9LFlL1xf2Xh8k7OUj2hR64goosX9C3kkdfHLFg76gYV4xOP5c8k7RlPsaefF5CLjAX27tmS3d90Ir+vkiiejXuHvfURbgNkBRt2jLdwsFlS16shW/Xx+7JVVX11W/VdF1fd1KnERAq16hKq5s7y0LQQuWQsCIwuBEeMyY40CXYpuGrodx8W5XY8FVtC5cPyAs0TyGNAIf/sXMv73WJZC6NbP0bHa2qZg7H4fnHwtcYlIS/Qdm7lRGQhScBEvDiJxOQT2M5hkuQIl267lMs+gSCjTBi49ywCdy2Im+JEKGkqvGoOR5y4I46ABjUEzWNuA6PhKlkmJAeAK1wLBkjiTo4x8E8GNxi7E8jKCEmInqetE6wbijEZbZ9yRnWnbOjOhM+hMbgtbe5FSLMNJKTjGJxkr2dlFhSnNTzSxUenOO7JzbKXnJJTQOYb9Zzv5pU/nHCjez05Ei5KvAPo7TzUaPuKjszjLmSfJwkOmlCvMUiDMgJ/yM1D5NCIkDrDVPfY9Tx14p17RdY94FNIiovEG61vR9RmUtawBF0nWMulapuqCC8hFzLQ9/EPlYtu9eh3vXqKgsYxDrDVedxlJBOZqraS17uSfoKyVVi9hWiIqag0rK5i7iNEHRFiRdiGvb+AOCuKPx6yLqSuIqPs7dFuXHdatl1RwOztDFofB+qFi+hnSSJdyyrCg5dOpuoB5x/o5BWJlA4PWRTPFClDEx+c61p962SZEBZYPktPv9WCyro6X/HbZ9JEygWtOvPs7lp9VAVm+c+3m62QAQAMhKJfamabtM9H2mWj7TAHaGFFIdtJZz9OtKWE2yx4JLbZvA4znGJQ7Daqykg0A6wLoA4bwv0bo4sg6XWayUhBTBTTAfM1qhDmjiTBttHfNIZ0BspiBLK5/SGesb0g0AKZ4iaI6em6ays961NcUE+szQGypSzuAGurkdwejJVRoq9DgjCoanAE0eFgwy3c+RlADpvNw3CbvOGUzIYmUGggLWB8D2WEr2KEMJKAdzH5AxZWYdtYg9VfVSP2VqxnIPfwvtXEQpfVr8KX9Nb60dzUHQcD1oI2FKGMiECSWwB4eF4HUVmMk/ZoIVdFCDRpaqMG7tbbOalEqNOzmAKjS/xuiVE5niKx79qlFqZ3rEqWU5imFHSyvEqWgxT99UUqXA6k89TCXA9GOdclT8zW8TVcvh/ThyFNxbZF1Vq2Gx0iYwjJYW54aGXnKMl3MXEQD2jqhqNCrxzSAdj8u3nvYb/cKpXiEn0i0G5uhIdpsNERDKDrKLZFD6cWsRiAXlh6qyWBFcQQgdTrJf+JfVqN0BtQZP8QRJfvU4VF81buoExPne1LnQv75bOeizm7+5e8XIJ/zpM55/LthCSU7/LSlfDpDn5IdnbEzPkQdjko5jq7Hb7xEjnlz8HbFQvI+34fCBX/kiHrFKIZOvKhwlfutlxZPl1/KILibs433LKUfO8rDgFFLZyl30w/oG/a2T3n9mx766BePffpLHz70RI/TjFvaE588wbqie7h01U/tHn7980+8+ef475/49V4HbT94feaJMgsjQRX4ARxxo9okYYNeVmRaEg2gZ6bzXXsn6WcA6n3Ht77yr//98a9pUKYOuVDq3O1A11/OPHnpR3QEqspG+0/56u/8ypv++FdvWeZ+PaDL1msgnXdH1rFIB30Yw1/+Ll/IeRt8HMVs6LKW4r4t7qO4f5F7AgP92kMPPRRR5/svcj/kkJseKzq323SuNvTDrvZOVWAMwOfnwaStNde2ZhgCZ95PyLyOkZF74CL3QYdR92fD2Bec8Q3uuIcauJMJlFlX5uH3fifz8ftAYXeVheVJeaS9jqG461Isirsefk84cMOOYodd5CHoWKFabUczwte8fzFyKyb0FZfa0CAh12J31kf1x51sUDvNGDZAMrwjSyxIkoT6dllkfWGRyWUD6QlmvpzE5PswiSCNfcU8GQL1ZSnpCkJf+xYZ+4qMiT2mfdDJkzH86+OFjwsuQYd4JjAfEhxS9Kx5gndKBkjBxxPSbIzMoVFNqipyM9J7kg49ESsdwRehbqxkwWHCcjbkVJ6XAznYaZf1kl1Z/9mI0fzOT7KCPNEhZCmF0gLoYqAQPTYB4fZE6+lQmn70KCqmIeDw4okAzcFE52E5uJucsfs0CLXc40uvQJpY98lYKNWFkKhq/XZv6lXCNRSbPgS8aXwYoKV7ncylmEbki9l6nzz8XbPAWD8hf5m73ePl6tMAGrATPGe/+RHZy+zluUifPEk/jjaBS8dfVGxxFvdO1KrUnWR+wQy6YA1dwwG8i4VikX+xdz+WzKscF0eCGLEifl45ACyk+FMdoGGR25gIfsm6cQL2Z790pHrYVzBp9AWqyRXWjuB48jcDz7mhy7p2QGZ35pqDV9Ws+7o4A12SIZZkRKEsyRi/JxwFNZnT2S6mCR0NoOWuYxewDvAG6sipUgMBzVFvLPVlPRVPKS5MU8MDeUyxGIpG1JPK8wR66oASANvDT0g+fgLGsKjYaYTNg5i4ceRtd1J6FCDHXFlfNSgDbrM8/hhQf7Kc2/yYJ3KtmrRZlW2jT27b4RXykS3EFUC86QOVzIG6QSVjPAv1Kw5n8RYAsVaDJlDQdBUmXYEJfgKxpNDBsfipEHIeFoQsSAbkfr3gcQpAAKsZoxmhN3bIMeLkib/4yGE5wuP7jMn/cMGayLGn06zXq7ns581ppzVs8l0PvnyNc/OKMsY9qu2/znMDPsLSBeTqAjKc2McCCsiXBRTCrliInS8Mliv26ysmlHQKMMFifNBYVLpio9rxeVw9QcSyJ/9ADroTMHYEtrfRUUYuV81XYRrE7fCPx2gR8MKpSkJd8mv4sYDZMDYiAaYhqJhtFC2GFGqLRRuhtsE/IgDszHralGJgpFbdebdunNK9lWINynCrxEyhrnnXYLvUo+7k5L1Jll03BnET+LuAv0euMfx2C8Nv4RFOwSPc6nXcTPQE6IxAs8YNxy9dstbhPFMYuId5akylzKEHeKDR8UuAxy4fxzHEEQi4W5xej0nqA2DEFgEwBOz0+K2HU8UOnhgOYGAmvLmDSLo8wxi8Qz1KJuRqxuUMnbxhKXMBDPRwiRI9ynFK+pFc7vCq6DSAAOHB5ePAcfxCrvlTT17C1485xa4MzX32yTj0IxcDvsi998lc1WtDf6iGLqcFcECaK8ij6kYgptorMP+lOL90KIY0rRZJEY6WO2Vnsq5OXU+njtdQYXXZ0V1CB6iBPqO0ucxmVo4QNCwvyB0QaXagRvkQI/kyJGtzIabQ9YRBIxWV9vXjQHeAw7GbjbjtEcWXDzyKZPuYp7dyI/xlirrCXCglh0Zm5rGln8YikLOcAQ9umKm13xQqcaTv+Qx1pCZKl2mGn1byFNldrkoKk1vsS110x6WOdnlqjAveGDE4MY2wI9e2x/4LBfGmxw53rA+gZp3TaBVAWlfDxgwMj2tOR7HWksZaKxZZsq5FNkPdUvDsymzl0/I6MotrBourp4trShbXLMX4SWnE/ZnOXMUcXVnaPZqldEK6rFLu+Yu55zKWhKaWKF21rD4fRK6sBPw5zBAqBjAltfasjYvKWou1/dCudeyHKgJk0pAWk9WmU37Nboa8Wjx6L3OTqo1Mpsd8fdRVMM0BubfmyXMBFhqA/1+zILsg8qxFYuYV2W1axbBnUD6TazPk7grqhfxgs1baWHPjQhGTvGyIS0STzF3fNma4jHjwGKJbDNHCxYLAO0pehfFlqW59lKFi6wMSHZfiVkD806XoVhGvHPDRgdp4yOyQ+z24qZN5ONJ8Hj+m/DBcYXBBovKskGNkP0PSgU/Nvt23um+D9fRNu+WU5U7WuwFx2np6B2y/EbuIUMUe3ca7TdscIHEAJA4pECSOsNpFAJI176/ir3Z4svGPJBeFsIkJzbxGtkAVdSlesMY+OxriLbhnRWLqWfFVtpnl+4e/R2UQ0ZIAnSZZ9UCuKs2CE3BOqZz/5y4fxXKTxDJt5Whm7UoxSaFMkqdkKFBBnX8CgzsQfHH4IX0k97kL1DPxv4wQbGagKgR3K4sQUkKvalhZHaftO1dqBwyiUZW/J7As61mRklvj96OZWx97T4cpQOJh9qtzRw5PxfqH7QBTddDuhPrkco0TSpbx8NyFkwweWDjxfRcUt1X8BlauBw+91bwnkvT1YJ5PfnVR+mvioJ/FlbnpVm0dsSTLKRFC7t+axcBBn+XdLG5BIrcCTU+gSfGtWc9ikk8x9RSsFRl7YZn8o1wnxcsnRSu/glYxd73bvnyqaMWYUEUrNF9Fq+7qQYB6Hc16LWPBuFfwMbE4YgbjM25gcIwj3WU8nBJHftNzvtVYEmYso2SicjuQuWRMCsH5x2/50t382Sv1Kj556Edg7aNDKPvBj6n7tKzHslMC0fu6rA9e4kgly1LJwFQypCENWATRo4x0fCibopSm5GYvTWOP2slmKM1maQb3emnD5dkcV7uR5mjjddk8btw6pl+bTJWbabM61FlAlYumwS2cugWXorYiddvYzQgX5a/PMlqkbCnLx362nXLavpTtoB3Icwa5dMZFbl/rOZOd/GRn0Zl01lK2Uys5mys5h86mc67PzqWddO5Stot24cN5XPK8i9wYkn0/Ox8/cXYBXUDnT/04uigSkun1btPrx9HjaPdS9nh6PGp4Aj0BPxfS4+lCAEHH8C2c51uWsovGlD2RLqIn8hepKc1g38PKxovpYp2uUfJrvYCt6o2YpargzFWts1FjlQt/T8UqriMHZtiIPOAUdvTYcOs13eJQ4YirJsRwncSp5gTg9kv1601uPcaeVBvU6wRN0YOfq1GCjzB+lTdRN51t6ndq5xfm8RaHT/bSO0XNGOw799Vzf/Ab//SFS9OfNQm3vhn/vevS9L1I6HuJgWxglBYhejH+3TfWjP1Do7RgetB32ku85ysvX6MEK5NH4laKu/uV24//ws2feutvY8B6AqNKJcDzalwqKi+uiIk4nEQ5S+l70FVkx9DMWynrnfgPe9M/fqcmWR1F+lNFrvRP8HFz/TGAHuEWF//e5E40M2iBBw2saTaP9n31XX/32898zpVFbVFJotKf1i4B6He6vPpCDZ/Kt7nVYjbknsJBFjIAPA/Yx8Ne+XhvHQeQdMR+PeGt+nqn/XrcPt6+OuMt9uuyfbzbPt5T6YV9vM8+3uRpvEek2s7fX3n0GjgdAvf05jwOTSJM1o8btPv1T+C/z384vcXM5fFI0bT22aApPrtLeVhOddiciXDVTJQbGY8tJFo4J3YEcWOPEzddojhYr/upgwfy0k8LWjnloEEg7OODXvl42C8fbwrsSrSPt4fl453mET1s7OQu2jtRY/BKrOLQ6OW7BAD/9f2vra6yrtGpaKmylqPmegBMUBxNPfLRvfpw7Zv2krdSAOJ79zJUjjJ7hO0KNuWeWUsR+QpZ8H9DNH71w8VO7DDvyZ4n//3tpcs6Z8wd/70oSbGm7pSjOru0b3ewtsmdTFhxyl+VeOU+uaaRDvkodxyynbvy5mJFvszz1Y7flWpPmILpz+Br7i6jFRgRoHooSLkascFH5tiiyK0/IfQKqVdloSIH23JKISGwmJedS+ntUm0Ek020dCFyXOTu1jMx3MviF1QiMYohGYUTOb6iKP05FF2ekLecuTrivIP64+OZx92HNO89T29g1rXXDr4sqwaj/dimea7bkSHmABmuLKqJ/2ULxhbF3NYyL4ESWQVYFqqi+4QoB6s7Hp8vKvL2AF2ZLE9GCR5WtE/v9ByvuDyRHsj94u4EaNf2DzGOitLmBeTih0++AuahfKHLlZtyXKOdiB178Zaatwv3mpC56T8ta4UPeEtUFhsT+l8pOd6JhDULHwmqhfc0C5/onLT0clgtfU+nWfzekxTfLreVKJD7Dxhu5gn/0BoVv5WgkadvZmW7mMl9EMDHv3rCLmvd01zk8uyi43+JUwjYz2t85w7hc6lL9Rn7dUaSN4VBYA7Qo8qEufr5JEcJepCQ+Xo8fmVJlSI9Wo5ARcwxOUVKHpIm74ayqeThhnWD4RdWBsYqUJsolU7aBOi0bFFKqp3HdbrdbSyJbvP+Ei5NUY85b6Id1qYatUSNWqI7stjWEqNozNTfzE5cXvOIx7/xh+Y0VD+gNWjHZSxqj5To3OCxvOeBr1lUZUVtA6l3oYNOUKScB7vHh328o7JsWJypxBTrmYpiexbrmsl6uvCyRFd01geH4t+Bomw2VE6ejfDOvyl5Sl2AL+YUBgPnv57eUqM+pTQCoqq4lb4JOK8EkoZKifjrQKntZDl9EKto9b+4AaXn5BQJ5Z7sO/s7f/SX/nHnJy6dTArRfPUJjrlznFrTqPd2QyyKWDb37g1madxnL4IVU7RY9xvgVSwbvYZlo/duJcodY2jzrZ1PuKgGC/LpzQu05kz9ow/VZOrASMhSkWSALv+zn9TrUGGxy6DavT897nMMm7vIvZul6193s2iMQ3XuDWS1rKszM152VBZV966w+POZMuaJOQnytMNMWDUh71cG3G8MuP/ubKADHmCzOvjWDgKBz18/nn/R+NDl2XAti6aBRe8B8HZYAIf78oY332iXVUA4kfm5lzCVS/Va0/hB4C6mMr3xFUDqEpquZtA1548/9wYAltwqSL2EfGXg+UgGi4W1lOM+765yvECeIXgDp+4uUtPCgnnA+DR+CVuNYGRVRUVV8439TTmgv/izV7YOaHd9QLvXHhBVBwQmWB2Tn6An1Bd1O6XwlJBYYN7aDswrq22Dt63d+N5644BLDaLl9hcR4Ieu03ETdYTWX6GU/2GxszAN7tf0ValVAqLLbYvjs587vMbiCBJUfrScAGkqTwse/HH8m00BLkf1haaOUoq+wJcdEKB2BH2NLqDuEpqtri29aBZSj29jC0G9qS9Ezs7+if+2t3oUcSpsJxgBqTWGL7YmOK8NrLGno8aeSkQwB4U5J/nJx/wYhjVg5+bvpQUTMXrJXJ0vrEtkRIG7XUO3AW/nPKZXdXqDXoB4ROM9oCR6fIhDNqUhHZYzx7/LmzKAx9y6D6nLxGepAq81Lht3bWe6wOGu2rZ1j4HdUIwOmIHpxXlsvgdIGVICLYou4ZS8+i63R10mQ+0QaJrXBSRz0C9n8mgGPjU0hzhqKQ601uuOpvWh4vewgn2uQTyolyf6OMlcxntJkIKQ5h2zDoT8AgkTkYzyftnRb5OO9u/MpjgzBqb/sWpP0Ba7mKl3Gjm+UjP05DCgwV3VWUUkHllkmCCsRc3Z4teN833e/0Zwvvv9ZPw3fhbx5txwvpuCf8uc7w3/5+vP+Q47jxnnw4C+YZxP2/4m5/sm50OB+/065/u8v5rzgXg0OV9a4Xz/4jc5HxOfx4Dz3e9WON/93jc5379qzvee7jeC893eTcY/1c3gT8Nwvge6/5Y53+/84DeA87mPGefDgL5hnE/b/ibn+ybnk0OIbp3zvae7mvOBeDQ5H1U43693m5yPic9jwPluDyqc7/bom5zvXzfnm/6GcL5p5nzT4Hw9w/nunPk3zfm+7xvA+fzHkvN93zeQ833fv1HO903O98uPPuebbnC+6dWcD8SjyflOdCqs72+mV7O+6ceC9fWqrG/4Tdb3MFnfTT1hfUAk9zFUd7rfEHWny/oAh/H1b6Du5KYq3nTHJwzrY5Cgkz3D+vrtrO+UPlsCHXCA6ykBWF9gWV+wFusbWvwbylWck7G+ePyGx/KgD6ZlVdY3KJicRwOwk6DlzG89TAbdfvQYXIXFDHUpumYZDR49fhKCnwxq/GTQyk8GTX7iYhb7gOtwLY4yXMVR1i08vALCQxO2jyYD95Vb82gxZHBrsLukyu6S02J3dQzH7RuwOxhiliaRiMlTjBcL7hKDX8Z1hBjfsI3MceNEYkU8hHsTS4rexkmmUq3JXCVaQWIPTrR7hr/iIqPxGXMSxvoV33du6MEX7ktPz7e2BnX1RX3qkldTn64+OOyAIBWstNtgpbx/9Mb/2Dw59JiQVVnpej1+X6Y1WD56aqff5B3LXOMgDrJEk6t6TOLAMdX7BH48ci3jrHDMvuWYHlNj49h2QD66MawtsyGW2bBgni4N68zTlTJlLflgRdycuYavgVE0M5hdh1uy2L6yWLfBYt07s1GDxY4S6iuLHZUsdqgNYiTLPvMK/HqG+fLzffqMOAvwWgD8S0h+YqBhyYfNLcwusLFrev91ZcfvCb4hO9GAJTXg/E9BB3tPUGPHh71/c+z4d/73N5QdH3YeDjtGtx8bdvxNdgzY/ttkx/f71RsKjxI7vt/9RrNj37Dj24M6O35PsJodgyA12fFhp8KOfyFosmMmZP+22fHt3iNnx6jlpOwYGR5zdnxTrOz4ptCy45uifyvsuPcNYcc9Zsch2DEUww/06uw4/LfHjl/0jWXH7sNkxy96zNjxN9nxi/5tsuO7u/b2YfRoseO7g280O44LdtxrsONeCzt+oLeaHbsVdvzrvdXsuPdvnB2Hjwo7Dk/FjsPHnB0/MFJ2/EBi2DGeB/9W2PHsN4QdzzI77oMdzzLS37mhzo77//bY8YFvLDv2HyY7PvCYseNvsuMD/0aV1SPrQCB5tNjxkeQbzY7Tgh3PNtjx7Gp2DIK0ih37FXb8N7Or2fHsv3F23H9U2HH/VOy4/5iz4/sWlB3fubGirN74iNnxn3pRBFZcGiEYhrxsGTKwKPNMqMag8PmhpkYRVnkeGx7W1ZP9Hm7U5gnC3XWqVjjqnVgtW3oS8g6eHz9V5hmi510aVgm8VyfwiBAXKk8ioT9RC0tCJnxXjuRZjhQZygPCCSzylsZf/Bm+PDtSNs2d+ax0Jo9WEVO0VAtE2aPCdAE/fQSIKCPvAR7GYmYIi5lW4tVvrIh+IyYfuo7OjO/um1BxZubIw6x6FGI64e00hc+Vw3D4rYFvefDLJX3xkj90Ak+n+KXODYTphLMf5ARVkJn0UK1LnaI9DD/23ZftJfZ4AXFCTUNCxC8U+BS+tgOKFMGDBoIHd2ZxA8FjxghF8LhAcInMMZ5HnTDdYJxAKh5cPORdcVFVCRLc4aHnOGPTwSY/5bkYWc2b73r8f7Na8Olr+C2+7afXiPdbFUzzUxnjiCz3gqXxC65Yo5nfeWiNZjAdP/VE68tlV+61sHYuURdFvYvcPRiZurR/knOhoPjYwZOTmDQTa/SqMgiCqwlXk1OyROWD5nUWtKzi7HmhhT+6yFLnj671wGLcYnIwH56uD3qBY1EREVQZETLXQnY98R0gmhNLH/cpcyMXvKmBsl7FlW6n4UrXRWMXOBcWOCx598C9HTz4Mi57DVz27szCBi6HCQWKy2GJyx6mzkEoiNJ1XsnLI0bkSKPD/tbf/+K3Lk+Mywlc71+G55Wr8Hx14fkRK84tXMK7LT5dRaI8kHdafLryK4JM5D4M39jzASiXt0L+8aPi6NxFEeOrtSNuWPB9WUUaF6vMJcAh61gf/Ffz1JENOHPir+CbY9wDAn61kOaSq11MrWEfVN/OAWPdMTsOgWOEqsc7LEzxvHwM/8bHIAEKCMj0h6w/g093vaDKog53C7csyDiv8h3YQfkUF0/4MZOtXjNx8AaEw5w/FKV/eTtAx32xeIjBfT6ceqsMzhbqFN/TX3sHf6kVNuvco2oL5I0//o5XAV6okvFv6k3IxROlmXSzps8Gvj/+Sy9Hfi9946sBLil337PZK4dTCVLuVqiJO/6F17+ijZoYCzXOEpi6P/53wk3/6c3CXFF3+emH/77+qdkQ/MG8xhKtzFV/LagCj7U2yZcNwjzzDJ0CfQenqr7HLEGYdyFDRoTzxqlmSP/lDehMPLBeo2rRngsyeK8z9Up1wY3m/URn/BRogYbM0D99XIb+bsA7dzDb2HeOd48dctL3IDWL+eln8LQZUv3TkIVp6PjWwDxeMt5hnp6NzwKTC90rDd5BUNx7cs8u9XhVLkAbk4sK948d/Dxj/NBDzmUL7HNwfF6mwcgwfumqRJoHJD7lTr1CGQJcnAuEHEHlIu69epe/wNmcx1yTNrBomvoW4ejx973npQCUKXlfUXKzbOPh/yZ3GpMam3eEMLFrTZ1znY47GxGhKC4QnvhT+kIkKXqQj+DXB9vwo4GsQRuyehAcZWI0AFeBrxgXqH/63rcqnwbaUHi2V2IOBeYFyENR8UL+2d7VeIrTV94sqOGMd8EbD+YFLJdJ3s2I8ZGsRlQnc4UCdAtBzV0HBXUeGQW91AHxbFRfr3qzlEVV/WOPrHy8uvzrHcc9ZQW6gbrASZm7+YhdAyaXdQwhG/8f3qnyQvCuG3sswYGoHpCPZiUvv+b9POnAkOvH6YuwCcb+t2NA0jm9MXUeIUw6jxQmnW8MTN4QecDE0PSLV9qB3NOvBRXGNqQWPutKJXOV5e43lrvfoHE6qArPw2J9RZPjuavWttPG8ZxiNWPcPNS7DSHixxP2cU/xhJ/dSj+xAR1j9+MxHa1xyfEZyrM/5k8dMb5Om8K8+JV6949WCI1DHk/bq0AONAUezTxylVGKD+dqVwu1BSS9yyFr7nS/c/wx4kruAX9MX42KBo51PaqB0jn7uz5eAAAf0ISStwATbWOja40fqdcIwa85f8JQkPuSnKt/1hpgv++da4EdHvpMeH2UuLtw5gpXYNqJXyaKyHSgrL5b+hvr1ofUxZBUO8uPUMv2akP6aK024xuboiUOMiCO166U/tSIbkIeS925X/NDmLSO82f+5eXt4zRzhj7szd3x17DqQuH3iDf4UOe6HA/+ZSZlV/HAMZkgFpkIWJlvVp+v4fRCkQ39gtOOZXl6YHEFPUhuqRCKw3GVO6wts7rrlVfdU8iqSo/Sh0CNMhlQbHt2meO0dIzc1RJ2rRqnVo2T/FP7AAVOWK9fp6Ga9eieUhgfQAZDhTWige83+wZdgF6r1ZlJZeAgt293HOdkA28F5de9m9Ud4J1/IzvAsL4DfKvruhVlDHwjqgyYu5N1hm18tg6q0E9M2vQsNSaiXqKvBOsB0WqSZ3Vq/K5jtahufkXXAvg+nxzIlVdpuL99FcUFAuReXG5LHD0rGOh+W7oPN6hIk5Tc/3aV/Xw4Ua1H/4Gy6qeD2DvkaXwTc021qNOEN6lEfoA2IMDP87MQP/s1psk+9cN4pUbteXbWKy+MJary6EPlMaC+qDyG+GWVR78W8mTUgOnojiy1ME1NfGAIEnJpCeWuyqbkpKmIOdGv6ySGkk4DGh7IB0YnMaxkIe4Q/lgdMaQuzj6nj2Uz1Dtmosv0aXhZEdS3UMvE1H0WJlyj0uA0gvp4KrwfBhQui16m8iGblYK9/SiIhwP4kA9olkJztQpFQwpWtGhR+6xctfKlonywhKM21IfMOMPJY5p+mhyUzIgiK5sCrgBlpq0Hz1SAoH3JpiSpxfVm/fLgFCLCmM6r+j5aNuGsIhoh0jF+V/TwCIm1kzp8W9ZvBQqbIcQYQqy1Yh7jBJ1O5HAk62sBCi8G6lPEQ1IfoPuUNE4dk0LJ56KAV7O5Uk2O8f5eVzu67DkUK3YNvcRv/t2RtZWpODr8lw46mfsFwYAmuQ6zoO6sWksa+kB+a/7mgVT4DOOP1C/WwKRNOq25JMXsrTGod/3SmoOCkL8vl5WaajAs/v9la9TzPlSwdj2dvEvxs9Yo+8d/tXYfYsQsC5eo+4w1Cr/m2BqFyRWlZtYrKB6EZ+kJkFccrfIG+KCqeJR0VdNz1xBAF3SxTgBF24sIdBFoJ/+QdzDro/DBbFA5ReUN7JB6cAZ7UMNPFRiv508el3efhqBCqsPUEJNY71LviHqoklFfSms+LTKF0p5crX7WwMP1yiXxJZ3iIQFOUMcQCJAh2WTFmiXhh1oGEI4RNKXcHRxL+Lhh6mvALgZ+jnxGseeiuQ51kTwFJgXipfSVprheiISmeql4SP6yshZTJOBkm9vkRVaN3ulBgVsGZlNiQl3NokThGnXvfqWu8WdgxSOugp4E8DJ/Y1iyJQd/JvLfMzJXOY2Hn/25XyzWLFCunoUl74lKTFH2dLWyp2uynvoeT8hXxOqX+8eBibOMzL5uGHB4qsJYDpFOWCHEswojAdU/qrsdHrPhPEaSBvPxK8wnH5pS1C2i4Wq140X0tFmzSaayivJLxJOWjTBR+BMe5h2DiulYFkrdmafqdMvFWqKK1aWdBL7HDVVKajFs+VMoZXrl0NDP3F2igQTe7ZJ/MEd40uKUuK99zuWEO12ZULpskMzTGhbJFIaW8FxzkFjPDMRNlnGbughqrKsLvYGJSH1Arg7IS/B5JUuAfHZsts89bTYm7m69z/Gp+9xbb58F+EnduTxjyrL2C1/x+jyTbLqLI9/E3qM2ykesleRiWRb3OY6vAblzF4jt2UDS87mx0xIf1S5on0il5CvNLxLzwNBDnG1Sgx5WYy35iaonO6rhXASpUgljF/mieGJdLZ7OdtMnuime0AvOOi9U2l1t5eYQKrvrS69p3caCLSb/1/NCxBh4iY5JWA73/PuMPwRXxqjBWLAhFRatAAnxT8SDo5AzZeU5l67+nZkNU9Ea9kgRHXgmnvyP5V1FeERq6gocj4FThKhRTpnQemwLZ75lGHHb4/csrGQxZgGKMfEjfvkCN6RzSC166Ho4jN4HsqRasb8gtTk/aBa6p+GUYuqcAxOPuyYfQNSxmylc2OOKR/wlOajmj3hX6wsTUAlxuCVIE348ddoNeryoZHnXuDOqxZm50ZwXc/F//OcG11ZFf4adWfJH3jcOWxVTrz4ZprqKqS4wtX2P9tE6pvo1SdEII3erMOJiIBA50qViE/YxfClT7UZM+VJtKCjgogW7f9HqdSe3uu4L16x6d71mW9O9nUZVnlprotAn6131TH1Y7/c0uqrWYn7ysm4SWy8hL/H5z+M/8GkDk8wt+p95ZfuZr9Mf6PQrvybzEimyxOa1Wy7hnkbsSqrb+DZjlepGRjOHSigCkQAo5upBIYzE/QGYyjBxyUdj9wUQnlJKvleEsmlZU9NjWIZ/m9CMGanFz2YpyjZQN5sjL4tNGNLkWYbFTqMfc7zGso3cEwT/wmLcyCsOa3f7U17fX3nLx59EG++ijVLrf1tQ20nIRRtphv+38bsQ9nQW64FL42cDzeFnrnDfEozdMggaSAB/cU0w/lh6QnNi/UNBedZsIm+begJMfkAx6olRD88xDeBaZ/9CNtAN79i5Ip8b6DHqSOQft4KqSE3T96zwO7bR/HcgD/ghuBxBDczuUaGDVIahiURux2DCA+gk1Vr60OqWfkpa0nnYKPPg6sgr8CcGEPRs96OsOljqf4CB2mdoc9jRjRRj2LEFglv2wEzGfx10MAFvvCub5zLZJgGvLxMdlMAtJjmgAALAPHg+qsBbXvc9NC3Z+rTpaK7gF8y4i/pHPwCEsD2J69NB02AL03i05L7XfFSWUjZIFT62kPdXsnk1tONeo+KEhjqioAqykDyRYrRbE5qnLh457AxtmqCTFIJvxJXv/K5Z8Lk0/sKPZ4L1NQLeW0CTI8sbKxxB1FQk46fFFv6SGP7yri/X+EtS8JcgoSA55nlKfshpjQLn8s4CBH4VdXeRvakHcJtGVdClN872sXMzaFm3vHMxOleVftCINcoVNV6yhjGRa+lWUdNBlXeGXsfpOAZ2e4z5zjPyUksxKZt5O8xlroWwqht1X/f97vcff565EXCc3GNHrU0U5y5sr/CL0adP9A47ukN7vmkzNTbyrAi9xdEdLvnSCa79sjpoj3jYDxvwvv7/1jQJfsGQyE3uOHsgChwIeuYXgZWxy2s5uNRNmaebMk82ZQF+TzjCPbhbyjhudFTUO5h1dYfXw9vzs0R3f33d/Q1KpjIs930j2U3iKW1VKHkK9KnLsmmaKrecM6pha8xmekc2a2dzNlG+IBPgKT5aMxbPYDtEr7d90WKjkQnRESBMSxN1D1MuJfYoz6XQrBJjkAFgXEsebCLz1OBC2kQDgJG82pR6ZkqnIAk0p3PKTKfuyr1E6pcKvp85lidAyqaLYVyZT8nimSvUt1Ng53P4wQ58immeQl838RvJ0w+e4eBCK5pRdVLaeDRLQXsr++2g3G9r9NGOyU5Rsd8O6/vt8GT77U75ZUjpBI3peA47T7V1wRijWZHqAg2O7VLdy8ZKYLz5i70j/EYal/4mlR5mmJ3k843Jnr8j69jJ7iQohJ5h+5D3mY6aohsn+cZG0Y3NohuoT9iac1F+7oDd09BacWYdU9dwkg8bdQ3vyKZtXdOiPT+QBTSNMEMLWlI3MuNDham7A9MbGhxTI2qH+OdaUHUSCy/ufsJkhjrHsl6/zN3n4sc0ewDJLOF3yZ+Y/H2nzIp8tjYsBAj9PDmI9jWfzavewCztfFgPHY35w8o4YidlI1NqJN3kGBmTc0oVQxvVF/NuVlRybLkNTHVlukMbzVRrlTrbOmEtpesXEBjHLXmH5EM+YkxhwD6rfHzBuSykuWPZpoIkZx2Zgmxa13S+mfHeXK3wJaBtOVPTOk14lgG10Zn6uVZKwfHiOkGK7eXSsWuk3+RhDg7mPBmlNsWjwDzmC6weWVjOFhjqDo2QXULsr5V9nrPPL0/MBGrvXpwvNnq32LRNX6SIe7cFJaAqLfzqPatqmbQA9OlRwhrdhYp0xVvzrfzlZEU2TbSUZlpodGbhjmyb7cw2HKJs0+FwBfwyR9sOFO9bE9pKWwRk0cE8qsEgKmBADANiGBAtnBK8GefNOG+G5YezM1pYL4xNT6KT5BxyzuHyBPORUEaEeXQY2BvZfvrF1ONfNZNL+SnHEkf7TCtxzeAYR173msQw0B0dVp1cakB9MsVcVgkQl89bIFy/nNPHkR+oYNY3pXqTvNco1Vu9HkEEB/gTIjjYv5APjmEkDgVmefIjCCv/DKB9U0pXI5TbTkooc9tinqBeyimhbQv8kli65xAGL8QhAQn0El1R2YKsRrPMYl1fC6hbElraqy/SIRZpvngKnFGNZZaWKIMCnPfgKRclNJzghSBtNIT4wM3bfcg8McW5bCFbRG9tz3VNmqWXmrVWLqtTk56psidZmqwPEOhmvsXAY+u64DEpAbKFtq5zBS0uAyaWUC83QIOuYpN84Fi+5eszi+j0ac6iLFzZ8A5pC8uILqfLsiiHJUzavqU6rGPPBSVmSu1aaqqTvIIs9uQ85Zn+f3aWE37oLTMZLHiVmfBrVqP+QhP12wjdmkBZWC9QQEEXDVC2rIs7T7IFA5RF2nIKoGzlEluXARgAZYFShcZQeQJTMl3513yjsX0LF9ii/awi/NBwqhejk8qhRJi8torsXiIMLF/kUbircHuhitsLwO3HbBotbq9/GteF2ypjtE2jBc8ig8etM/Cded8w8FITu1BwTcPQTsqP61zcKfm47mZ0Kqwg8HBZesG4cXQUVOa1xsajk7LxukAHlSVtgzFMycexC6+KzxXnCGnDOUJqnSM0xGilFNrmqWc4WyyRf7h+Ur8I6XtIszgiUvi+uCpat+FuXbReENF6saBljeWQb4H43KRrWxqVbjmJiLxltYi8hRbXLSJvfRgi8tb1AhA9OW0ReQjmwFDHKjK8QVLS5XxBReQhaNECc1CcATdF5EFFRA4evohcW1xGyB3UhdxHKjrr8XRgFr4sucdwvaETEJ71PB/2RBozgbrmgB5J81DJF8pon6sxVjBalH96uNqowr3an9xYQIPXp5NU7h2Q8//GkftHT3bk/qAb4vTOuQF/7iE7uuKw3Vt92O7jHwyrenyHlvTJnoWXR215yIcshy8l/flvC3Lkwm/4+e6FPLxrJYtqpXZIqVhLxbVScVEq5lJdwrzglKHHnSxMK3o43/DM0UZ3Ys7Fb75Lzy1wW518c5ZB0QS27vpmc+jdbvyU5xx6lGIOyAM9IA+qB+RWpeurNnb8I/UDDL96QF61Xr7pC2K97Natl28KQyjIA+OYiKf4q+ZoVXXaXvVgYZ2XW0ywcg3QPv5iR2yWNKWjyHaD4Op450FyG7hKxcHNDeU5xbXjQ3I1WLGjYYiJtpALFl6YJq78OzXn3npOoJhqyPfr8cOz8QbkC8UIWuf4EPy8VG0tVV/cajhZY2BqyHBQIKWHBNdm3aqOvY361XXsbGAOHwV96mZueY4Wow/BsdyHewipL4BuEWcq89QFLPkNZMen8BgQSK/G9TH4272pV5lVWJztZAO95udLR3PUfjQfiq1zHnIrE70V5S8ZSjogD+pS7vnehx566NPjoxNmNfmgMZRB0/g0EhojNcBqbNJWog4+F+Dr6OEKXsek7h/MTURf+3FUE3YyRoGxmmM/lCIcwG+XCy85f0vfiguIlz3JEcLrymov015Vpu0s0444Y3Pmd0uv5xQrgv828J/TXBk6pQrWqzJfz48CrJeQAjk/ivgX50dxdf2c8gKsrh5DsnvVM4ncVc0/yE/l0EwIMvVwuFieDPjH5GgeCwy6qwE/xQeyYYFfI7UZTWFuioqnoMlNiH9m9KhlFj/7sw2KxDhQ2ehhEBtp8DSQ6ZEBuC9QzebV+GlToUpKcHZjOtPSU/sRI4mM6R9FB3IZZoCDjnTN4lT7jg1USDH+rlhYyjbTHG1korKUL+AknmVS+IPZwj+0lG2lBaD1NprOiGbM6tosi4oWxL6GtuEn2697ruYhK3T6SgxoHqeigqrHltVyaytWaXZMvhzltIQWdGlupS5QdlRfjm65HLu0xV7y6ZLbXGxe6/3h+mHuNr1mt4gYLeUiwZDwcYHTHPiEAWodo03ounSXK5Zzs2N5rrtouVnBT0qhn10xocYRXUZYeK+9pXYPLitPXHOMWahIBnFou4xnC1A+b3Q/b3Z/g3qUcGk7ZeReviAGktm5XpztoAwwOoO2UE6LxTWGHXTGCuU8GN6r5NLOKSGU0xnLXM2saalooVOUR2V5tzbTAZ3B6ZlaX1LO4nfOEJuQLwAMis5sHDgNJHWIqGuykckGFEGFeUv5ziokJ8ob5RMiiAdUWHJsBow30yY49ADhehpGlG2ieSS8qkyYJx8JN5YJKqVuBOHciMeGSYRrTCK+8g+1WS7u1ievjMLqLZ46IfKetobZ/Q//xivXcvkyvtFR4y09Rver667thkNtViuOLciFrKEUGhKLphhMvlGtKSBseE1hw4W4rgf7XqLSwYvHh9ARc0rfLkNY4QECvuTcX88ZIqcaoKu08Z14EydCZktkSIChKae+AKK1XY+ietJe3jk+9WUQdFZEm6tE3neZLyj1fvGp+VPNVwGKwi60IqzEmWsEYk/NwNWWOVYJJVYyGFMPEkoE+/Fe5q+WULQ7eysSindMMaEUUK7Oo2N5YAWU0AgofpNmdlsFlLoheki+FVD8dgGlDn6XQiOg8HmoEVBCK6AE5DcFFG/sGGNX5ZBeRUDxSsHjdaUwsqtM+5EybXeZdpNT2EX+aS9ST6JTYs0S3IBhlIsJndfptDK8yie+MWzxrWHLjixSXh6ryNEtRA4f8PbFmL2QOyBtUvHWbSx+0K0Y360xhH1JCgsKGE9gDB4kFLnIN9DLFkNFRngkS4sz6B715Ax6qsC1aXPnJvchqsTEP7PUxc8GSvBjRJUCb2gj1OMujYxQIOZ58+okLuEfAsmMgUqbdYL0Ola2IIBnqM2wCDHL8sMGHIBnPZoqbNtUaohlOdNm/HQrUsMz2qWGhUJquP7YsiizwIwRJ06+HOW0pFgum2gr8Gi6vkSicolspcRKDVspaq4Adznf2sDnrU2Be7MK3PPUp6jEXAwJH2OKSqkhOkYeui7d5YqFzR/Lt1mp4TtLqeE7DQeIjNTQhXqtKTV0S6lhG8YsS1sMCkhPx0GItjW6v63Z/aHy8ki4bWSkhi6khoy6gJEciNJ8wWgz5uH8aRsPZ8Ucrp4SRJx9wgLjVimzlQbSZE4we6w0xliF9rZrszusZuoMAG/sXD/2lvIIpcXVARXqRc6AHubLRXdqONMjNLyddrDksWM5LyWHnr3NiQxnkOod861FhrBdNMESdSBImWxbimyLXIsmLVakFTS/o7XNrKWhTpMWcEM7VjeUNRpKaBHyDJ8G4WdLoVDr4adnLHjJgwhzUynCeLSAhB8pExZUyHndqYQcv7SEE0vF8e9+oYqU1qItTShNfs13uoWZYHogdwqnA+Jr6EWqdeiMP/WPEDdAlmH6kmNDCtGh/j9yd3WexHubt7HR0ibfcdzA438c/S9wgoD/DSNRJx66bBAW3Q3R1D65OXHHsdeWPQXZ1hojMFRHF3GHkBwUVs26jzzfidkrsliPfabzrZ1v5WR+/Kw8+nj8M3n08Pg5eXTx+Kd4FIE1Qy5z80D8z+1X81TjJ7ru7iImz3jIdMmHZiwmiRymQg9YJzjoeZ0nsWHVZQcAKb27B66ZuyhalMi7XIIz5gF3S/xIiLvHf5BnH7w3pjB9E9wBKAkOx8bbiLQSItGX9sYO/pg24O5JKaiE0IZDgsgDJeAYo0gn4ucIL6hGCwWmm12Bg1JnV4cfw+eGKco9abjccMap0fAmy6ETtticQsopHAuIq5rc45Sq+yVvnJbv5NmncazJsXgnZZbOfx7/hfwXmTlgCMxSRE5xbyAcR9dBRpcKoFcU9eI8QXFwi8DSBSBw7XvsvggTFmtKX04l8IRrG+KElALc0eTiOAsAS75OfH+hHbkailbXbAdF8PJmvCTSAkRSaUDqREEs/h9YQi9S6ZUZVph5QlGhXQE6OugJcsK+1eiCXDKVaF+R/4UyHHzCVGM8WDX66uOVgQWqUekYmlPk97Qh10jQOkr0Ovcw6rIafPQLIB4SUMWYGx1hKOPLIq6Vi103cPHzogwGMZHiWUQhuhLqMPizh2a1vlxWSVTMCZD9gAGYAAn7FV2fMoJbMQLJl4UGfAbO2gsQAoEjg0brbMDdgI6BikHZOk86W1oGzZU19x1pSb8AICpF6018ewaS/IPj9A6RMcN2jasm6xWiuHziC0yMY7AAIAlN3jzSs48D5noPE5HiSy/9CXRdxE+IfVxfj+HRFfFeD2fmwRAolqH7wNk4M9dGIvLK4jyZvhYJsbYcyJw67kU0jvaUGvMUGr8e8+b2R6DbUZMLkOD03/CcwSE94u7LTTF9TnNPa1SZvQBGgPcY84lwuHrzBRgDJAmN9WUXmCVbB9QgOLtksH0eH1+EkwwsISVq8GmMZO1aDBVcr4BaQoEOfGCMPUNAQxFerozOoghyi2E4CA+DFRMO8cYIw8iCWeoXtQ44xYMfjGGR0rWz080GBIlxmPUVzJ7CJNIlnncxqBCrH4vd5b8oMZ3QTf+AElub6aSH7qFur+ieQ339MMAHh7raikvdAvUXFTAZJ/Go+lmsswgUUVDpuAPMIuZJ6Vrynx3fTKefuzKTB1DbrPG3Bc7mYciynuTVxWsJZyXaABBqRsWGRiafdjy9po6qwBnd8T+BG45LM34k+uPXsYjhO52O00lwlLuTOvzPSm4PS2FKZd+uGTh6/Ler863U4X+gghXvieHAEYrylx0hcPqreVmqoA7/cwDcUCjUwEVju9HY7npjDvhSvcEENexBDXsul7PBUTJ2qqdU9+kplVc/pfpDOEkqHAO7TcfAAmG3cTDEHT40MidIV9s7ip8v7igah77j4PrCr8P9+FT9UHPs8NnGLUWd6oOY4uuBrEU5vbSO5BdLsj7fYJ5hO57Itu7ZxFqhC8esVcN23oc+jS+pBHxJpTxecE92L0VHZGDShIhuqrzCssZ+/s97J1lU6pCOVXRIcWM3FDdN+5nEYjF3jl1jDrait7QVqumL7GYo1iP0ekJUw0ymIMdwgbmnDaszMN3mdWTH5bHNPfaicR6tUDwRpzF4T/EP0yxJTJbNOjc6kKjUtcMT95uzPihdeoyl/eK2Z/zmfGDN73HN077BR5SQlj4/oosD+BOO8aPEjvqSgJ8YOZOyLABSvmRJ9Wr1soU7Nz1/3r5nfyX750sn6ddE9Of+tebsr8pp81F/ZdXXvv06WP11oDqPoV42yUZ65pqqImZK9VzTqiPyVEfUqeqIsl5xOaVXnFA51vFEh8qXTvXFq7wAePEkm4G1xwSXXvEjoJzgTuHbsg22/8nRrFQi9ewdnNwpb+EEZeOkiWX7jXev/p7QzL5ff9Kh5711+UvsQLtPs5W3AUX2DSqnytus7dyGo9kGHB4Wiitw4MrlCacyjJVsTm9JuNTjftAM4QhLY/7GkzyCdlNGQH3Slw5eBubFw8useZnGyxy5tIHBOJHiNMP4T/wUy457CjkiXKvU91TfB8X7SN9ny3dsvEeU4ielKfxM0TR+phvWCuYCptmpD/EztIYwzS23Z7bcD3654a65etVyGnmEMDL1u8jdyZTxuUz0BdnUTMlllKxSWS/9W51S9fXBeEvVJELSDbWkHeQC2cs0buMpjrBVVLE+xtIpGQuMZuDg7Ec8H6YTODTWpeFayrzYRpl3lZSZ6pTZt5T55Np9xxJZca/ogDI7x4r7Vf5bTnmcUHZKTSsGnXqCX6PMsC1YgS5CG+5kTkmZHaHMDiizA8rsr1AwEWc+eGeMUz/wSIyW1XbJ2OuY82M8qedn8pUsl+vl7YyUFcMXt4pOOIx8oBWdqtLEPQ+0SRN/5LnwAGL1O2ZLLgLCJ0QKaNyu1TOcK0UoezuEMqGPKiyJVqAvfo/x0l8qC65+SN9ROoRM31nU8+zcg7Dh855p3D8I8EtHjjsiIZvLhO+TN7J2Xs74Tme1oddxpzwqut3Brwnp5csu4D1OQad4M4BbXmiYH3OA1GNbAQ/GA7q34KTiPKdTZWRd2cCz8xLDUbp7mXwc1agI0NlPynQZ27Gj1J3kXWU6E+oezbqJHtl+6+t2f+ZH/tdTnyyrIjRbI1GwRGr3qEfnauZR81ljMo8f+NlDkMGhLLH+Gr80dPttk2ucHvKP80Qc340fMA5y9a5f7uEFub76O7/ypj/+1VtuZ2eQR4DfLmS2evrVBRnKsPSWnbKiW8pH/IgJpI8TSJUuM38cM/i7GSuXsgh3IcYmdim/J/zXrwp1Vw49t+N4ybif9ccJf3dUtvK5ioCriLgKh6sI61VAkp2H879iB2yMPuEmwaYY9440LKjEh0uCo2m69hda7x+2uKK8yhzGhbaJU95c1ChZNEh/9VZM1YWXq5dFE6tL/UAVg0lsvWr+rUJZtbXTH0mjP2qw+eyE4sLsHo1TZBqxZ7WPUlvAq9IUct0A8wqA5QPjO1lANu6Utd6Q4AVEHPQDcCxRytxQBngfJsxa/JfKSdG1KgzgI0ihJPB3ZUePXlu82dLOp7ktbG6cD4EZiX6eb3xWZDfz96j15XDRHLX2BttO/b7zUWvyIOAJvb4Rl97iTf2wUH/xhM7f1ZSiJzgwfsDNfKM6uxY+UgasPoEADYGz7Mc1L8xwir7XCG/K0GK0BwIOvkQ+1Oj8FBP/PX1B7R9wDshpsmjlq0/8h69Xad17f3RvNrSPI70McHWelmnXMGf56rv+7ref+ZwrL4XkWb5A6kgzEbNGDEiz2a62hvGS/IsWD2qOa6EpFfggx2GX8M9+/n6tfr++/XsOvNIchx0owYj/OAuHr/yyQ/Lv0/kNE15c6c5H7YMY0qg2iFE2TArcrC5CVVDdKAjkVwSJWH/6GnMB4oQOmVf9z1TV9Hc6DA3OXviIsmf/44/JM9W8QTVEhUSNXlBV/6B49VUHTpVaPrm6lnuatVQ4b/KzQ7/HfNc/FN1AHWQ7OH7NlzsHmTiUmOmpva05WqaO6XUeU4TxsIqPOqYP1NH+oXOwW8H7bGF+TfCNgEekPj/vo8MQwEKWCa5dyoDC4vCVemJiUIlGOo9FAE+8epLTw+F/T5C+7ENPxYQe5IN8iBfkO4xN43i3bhrhb7PqM/rFnIHwfY/5nvJ3yJrXsgmMnmlj05CVFmbqoqIUlHDkTTSQQIz51Io6tUDinkpcgZkGeZi5I+ta8tBNuA+LMIjoQZrJNvAvJI45/j2Ck1BUtzObwc/ubJ6maYq6WNR2n5E+ICLcNE1P1I8vMuyviH7wHrX8Nv6cb1rh56lJPrMMKzSrrCBO2CTONyqFuADNH81nVpB5imZsds5MU9kMtsCVAtPIPb2ybFN4E1opxB8n6uxoqhIod4qm+J9bzbDy7gJprg00jbtz83ge8fNMe5kFHoy6yJqmzZN8WrMLuOZvzadMVfOkT8ilT7PjkJwDEKG7QKgUBeIyqFjxcAL7h+sW8DGVpaHbu/se+vSJ5eJp79GJHeSE8UDdPiH7ldDRV/xfwGOP6+F6kw//qy6eghWIZXgKVwp3wR0Q6O7Yu7w6iSF8QvvkT+BgarK8/LZ8E3VAlaeIZ+OaBb5AWmbmub31zfjvg5cuH82mK+hrHxft4xb7uNU+ztjHefu4ue7Ow3OdjpcwWENcO5riW2g0xSCuXIadwteAMFGTbAtwcUJTnEyL2VZ8WiD/Vvk2X3zb98Nv+v7pV5z47UsnnGsL4/7WbDPnBDpN+H5lgbh7X7T3aD4lvkdqUOLKyFfQbCqZ90SwRmGXLwB60xUQ5fM0L9h63rct/vVnLtrMSXZO3zbJN7PTrMrKAMBNfVJVFdo5D6K6AjZV6lzhqmYwgmk7gozRvPI2ZVDnWnKfUXM1ccp5aZ3kaZCXuzuq87mHf/HORm4j/tmt1GYPiEwPfgdhKUUdYZKb0PNr8uFCtkklsEEH61HUqiSP8roA7iiXUXWdmaUoi7ZHm/HT5ZoGkN54ii1VxBdMaSPNDP56GbwwCVDMgsRnydjNuN9ZV3hCLNtcyUXdumBk3HWKiQI5KnP14BHd5eUsY9DTgT55UEpSqPt72ZQm4C0wmjthwOY0WU3y554rmv+9hVBh5NN1xMC15w1L43xJBDU5irjJkZtH+hl0YyH3jKDGHVAJbf8CuGqpZ7i/pmf47Go9w30Ntl+59HC/VTfcokdG4BhIIE98I4mZwLKDD5fJh4A4jSH0FqR5Ty+iOiqbv03V/lR6L7WeR6tuZfxhAHrREae7XIjMTh6vqLj6ulx5De2j0WNaf6SFbIYTztaGtKlxrN3U97fo+1uK92V9X5b3EM8MliS5deAmh5w2lQSEnLwyWnPnLwPYF3VaxMs0qZwE3bte/Mt7WVKCxlgDUld/Iv0J9EdNxk0w5kJxm+AnqQx/3IHywWq1KkJlngAzasLhTsYzTE39f4IXwwCU3ItQuYMW4Y6WJRVvHQkK4jxQdDDdl895t56CQ+1KyvjFVQRADbX8Ub3wGuWWH2a5Wx5OOVFt6FVG4lrKePBwr2ofLzSP6btAVlrhnXerEHcVnk45uZ2+d/rpdhpw3of+55F0Hr2KCnu+oBgcUoNaKuYnqXzC8UJsPrmYOvsp5U+pnTdtrV+21j91a+0Ntbex/HVo4xbbRqdso/OotoH7Ch0sWY1mWoQuxZfbHSh4jb1UoAZMf/ezh/arMejNDiy3PO7BthfpMs696zBX0Csl5O1fOKBE6D0ORRpDvIJvXUsOe4okdigDayYKQov5rH8Ny6+xzkTta1x+9RWGta9++TUY+5aaKd3WceWJaitgm8t2F6ohwQgxYrBMGKRHQmV1AjLP2nK3DtEMsEpZ6q/L9ddb7GtxWmad0IodSwJTAMyBOTdT/6X2Hrl6OjXzEigj5UoOoAwqaVwADsQo7e+/glMQYdChsRQ35iPVGOBBcdbWr27aqZ98cjpxDvVgW2L+QtzvMVJJcRy1aHYcOGcns+nQF7Pv0BfdeljSFJ1y6xGrQqiLsDfYevRs5ri69agcV3XtY98+Duzj0D6O7GNqH6fKoUWVrQewtscnFTgE7lK3uvXo4muArykOhVNKJ9TlZOpnQ3zqydZjBHcLIxrhW2Xr0aVBNqJhNoWcXUp46zFQOU8RdvpYPoNccWU3koiDz1W58q7uS0bkK9zi6r6E6zf7kgFAm9r6aqfVaXWTMaQh9ypdY78CXURqS47goNi0I030qlXxyMusgEljvzLCsHuVHUqS6MKVyxuAeoFs84MOsGlvNoefPeBM0FkM8bMz6+LnymwjfvarDYYowOcZzF1o2yjlElNcuJ/FNJtttJs6I27Ns+eQTdBbYAuYLfLfFv7bWuOs0TDwgRcBPGxvXIEGYTMrN2iGUZQ20uYK3LkFuBZBnmwBe5ihPC4mUAbI4xZcdoqlkq2mElxf2VqtJKYBdSX3Jh4Q5OtttEHvRIBKzUPK20YeNgn49xZH7QHwzLQivZhT+HuK98POhLYpwUQOlx+R4aYyw4vNd6R2isRr8c/tzmSlrHdZ6r0dxZBdsz1/sqLFPOKfZcfcQImX20yBMrtn4TmZx3DmKabsGNfRauEyJWvLamj2vfH2//Ed3/Edv8yfirUe753ksyucb0Z6NclzWXmIdZWuED/NGvq5AfsPXCkl8aeCy6S0YYnfsowBuoO2H9CkAzn/86xBKcudQTuWqpol6qPaPKVN1MUNUFy5QNVn6hVSvVzCFJULDgifbeI8EvsoPap/oZxml/M+EjPD7AHIKlXyQZUMF+LBoFNw5jK3nM9NaANx6xuK6jag9Yxb5y+ZTZxH4qieyL1BcdOmMrWy9kXx0rZm7cO22oeN2oeN2pfL2rcI7WitfQfXzl92VGpH4sgk2toTW3vfKXqf1Xufof6y1I623u9o6/0O7f2OynzQZtq43ObzdodF7B3wzLbj4WD0oInRvRpG90uMTmlHgbm4EFQi9NpoDKg30XggaDxl50HROGtOxnaF8/bKZCBxoGhc+0I5vA2l1Wmp4utUBV+zVXMOVGyZ83oipXV8NZH6iaZxG3ob3rapuTxttVAn5N4vK8nHUYtHmysfN/LHK1Fi7mLsnxH4Zg95OKHZTR5sDtj0KNsAsotOqXLIow2yFd4BBIBoBRJNO1Tpo7uzhHPjKiK6k9yG2Jbt9iUfW8O+pNNuX2JMCY44q+1MTrltbFqbNE0l3oBbTmtrJXiUOCHI/ELpIGoJkqewUFBkkdo8xSbOWFAIwRSWT1H5FJdPKiHr9R+f0RbF11JAeE0FhN07e+l7MDAjShjZGT0GC+0WWyVvb7uIH1R3MXnPhA/rVRUnCUVKZ9oz6UbE7HiW2zMZAd9sfG5pz2Q2A6oUEZUQtgK+bsjU8FYWN8kOAtDqO80NQSwbgh//5/VsCOJiQ+DVNgRe8rI40Av+/g3RIeroHlGOCPHCQDYB3lj8ysMGaQybNyh92PKYDX8WCyLgDgImJ5KAF/4BTu6SdyDnf4R8uRD9eviB6OdC9OvjZye2om3/02OO4TDAFiXwgUmjsYbNS6mbTfVjk2ReQ3mVRz+RH7dWhv9iSQ6SYqRXto20fjjv8zgxuike1hTGM6XjwRklUGxKw/rhFcgEC0t5Xi4++XgFdigaYEZlK4+6pgH/GROaLJCzT4AvAnny0EWK9DaFkifAl7q6MhIQQbNXpgiDASkpJUgXzzzDoUiQiCHoqgRZqnlcMeFDhpvKDC8235HaKRL5qKGUILXeZan3dhRDds0GCTLULKGRIO1UDnVt+vBMqWV6Exrxb8U+NaFUP/UnlBaf0rFC1NdPidUZmH21qN0byoZiA97FkusSLhdVeuLrxhDHgKbVGdPEDOoTrMW+Da8QR1oaaOlpSw/bhqpdwuwTOpbPLqAtBYAZEfceJyizC2Djs0s6lJT0KaUp1DCFQXUEIbMpM5JyAA4yOlBS1FUqyY95jt/GF8ZujUcpyV4np1q07Ins444Gp3LECn18w3Vs28C/h5Siv1jj7/pow7CnsVe/f5oH9kC+JN5+k5VhpJVYZv5T7v30vb/z4K/e+5VvQRkDVqsUt+GxVgdp8aWnVd19USs6TD7YXFudOAIpOVv60xg2jllqt0fHq6nyrwSBc0NoophYAnzK8NI+7rdI7Wz0awivJZrxmK/q6m1eGBNYereeilFGbDF5gNY81CsflYTlHEsaZqGsIElwN6OvQd9vEJo34JcunuCZIVTSP1TSP1LSnyrpn1IXI1nv5PTPr9A/H8BdN/1LDP1L1qJ/iaF/SY3+Jcihie30L6nSv6Sgf4lm4R+IDPJxUlxGgc5MzCLh+tCHY64KpcB7incjbeN9hHfVDcv7UN7n+X1enEFmvsysVtk5ZZVaBBMr2UNtISyyh9pCWGQPkT1sJybUh19S6Me8ZcX+5Agucql9UEfNgNRWJxRCgjc9ZQ2NFagLLqr2ylk0psz1xEOaI58COL6VJ59LAQv0bHaDns2ac0hkVNsphj+iGbrSk6ezhE6uUQTLSn/Qt9ZPX5Rn8i6zYeoe8FfZUJGLbl62qiYqKvIKylepZ761mjj505mRxprSP0//Ss2sV1DkE52SJFf9C64z1PwzijKzjIp6NkxAv9JobXmdnoiuKj3KKkExtvwtpZsRpjXzztbMTaMmvWpU3HEza6T0ZtgaX7/moJZz9+UsYNwx7moLH0ph6a6qb9xVhQRPtj//Ow2/EMaRKaqV9fk/l8b/84o1Cr//Dw6frHB3/OpDS/y3VvGPffqkxa0WnH1mt9fwsq+9/GQ1wD5zjZKf+dW1x02R5X5YqrqRjWWJxGLMuBOjw1MimmnmkRo3Xy8lDLEe8bSPQvXUBdp3td6+3Ysfig/C0+9+xa191R4eQQ/74/e9s+IFQ8ODgVfwly/8CY95/I5P87/Vji4wddktGU78HW6BUHHpmK9dkjgNQyTL0CzDAi1TZvjnsTzRH/91x4xsVizpwuL+N3tSTfjVXgEwIVs9XWBXwqQCgehFS2q6cy/re0bQ59/9on0/9Tv/5c1vu/9/s5o/OKqxGfd96klf/tpTzv/zS4+KQIWmjb1XWcHOvRULl1NiPYICHitKckNe+gtoZ5KJ07UTkA9h16Hh8o+BYbUA/F2/a/zK6gcXhriEn7FD8fXM1adYVQLUwU1+C0jFgPvjSTbNa65iw9Q9dlS7kc3SqKIi25B56rktnxPfp2HppUNjCJF3tI1O1Glbn3B9BlIjcPk+b4nmxHoV3tk1zV8SlZo3yTzj3EMF4ZnKyVpohq/CHWSV8Zc/YqEAEQUEZF55d0pgh+qetBg8wDHDRtZQ0eGKzmj1peHx8ZFadqhVMkANdcBGcUWHGJ14xdeDtMGYiG7aO1GgwsxrozHp7jKE9G4+9gkYbj4PQ0SOB96nIaT/IfEDi6ZDa2kKJfyx3DMnajox/KbqLs4P+1iGJhyt6ZUeCfM+jVOlQO/w0AYcDzDlZdy87t/1fv/otX9z6WTf/5n96af96f9+36XLtRXIuSYqNARaG+l7X81zawefIqDNwvh0muYwW3P2ePeShketKrYeDzBtQOsBa5IAP65+5f1Vn4OccMsDovcIp24t5smXSKCBEbmNJ4iPxTBz5nXBuC0qJ34c6ePd/Cgif1+1KSn1Ae2Q1wKFB6iPm58gY0v5THonpA3UyDZzB5fGt8cYLU/8QDRmQ4SpgyOKMmQW5kmxlBsZQijmxSBoYJKPH1J4OdfXHI63rNo3/nyFTPYVa8RjR6wuT+bEWwgioo7vjw4ew+I6leCgjgliXeqWYOrOTyVu4CymoI7u7fN0fLgEcMoikMm64+dOPlkQnHo0SH+WoYqnlJ0qgI4d7gJ7WDAD+qizZMAyBnggGvvqnAecH1+54t1Ab4aS2ZwB3Jk6I+Fc4EQhT5iiJH79wjKKesZeXBgd9rby9Aw4NukZ58nqjiksr0Zczw4AIHCe6NjD9vd2o6gU6xzo18T7nWskslyu+OsuxoVqzE2Qvmgv/ZvRRiX7zWKvtDJWexIKF7KuoXBl5NesR1GWYAsF7xQedU3Qef6ce0iMWSzAr+w8EygZ/cLysadOfVO4ujpyqIAlIO2pu0ZP6xlCoJPFMqQujYobmOLaiEGe+zBMh9C2Ik4bDzv6kqMvknKLphAUHDeZ5y4/H9HnZZy4e9IPnrmdxcwl6PZeUZpiBhOZOR6BsdBMxCeuuLCqYKzu0vFB/DR4g8pqBYB7JYZmw1WY1cNyzHsMNGAG8iT48fOAezbMfE9l1D5AGlByYOy9KOsb9bgPHeEQ4OOsADSGdnGpD4ewagaGrPqtHgMX35JyIVVpWBXv9O6OGeCz0Z9i1FcJho4/5UMIEL6LcNRK2qYPZDOa62NxPmvBsUHtEucK5b/q0xHtAxqoDQKPDQwP2gAwdDDivPeMgYN3QAc3c4TsebgUBk4DMPQhkEpE5B4PTwFkkoYZvJhRn7NVgAQeXwMEcnSaMKwGZJiTdXW2d9WT3Q5MVmbxaVZWsTL556uG6aDYDDBpQRxmrcBVyuzJDKu3AVl5HbGqAnGu2Z9QUjM8saRde0N9ca8qUwrrCS7QpaGi+3I2MqTIjMBcqMcI1KBkQIPJstV/C+0Z+m7Hc7yEBuXW7e3pJyFfmW7s4AvlAwx68LZsYP41N14KM6oEymbZ6gN8hh1HYBcKP9xu/2ooTn8DQ7OKTajb2IQCPzzFjzVC3f+0ehVuhrqXK+XVTWlxbb7l4nvrjpbnUu6ErdHsV37nZM3KJraQtUGCoUoxrc7uvabcZuXh+Kc/ZNlUFunG4IgL3FPnTKmOHl63YtSVZl3y8dYjVJqBEs0C682VyPlTe6ntY3zqDM74BkgaRZKm5M+YJkVwu0zYdbH76Za7n1ilAa3wlDB2TR/AyHBjLiI3vRHX9DdzthI4D971yIGzZwnPMPrXrVkiTxjIrvaB7NSB7DiNgVBtINwpM5ZETlAz33Ct938QEggcTYn3NPxQ5qkYY10m07pUGHqSF2nDBBOuuJBCoQYp8XhHERrmhGtjw7zccSrxUhSIJQPbIZxNS3rkMrHRg+AWrrATudZ2pdBYm17lcNBLToy6fkUp5VZjaN9jlVEGJjlAlvt4vtN4PXPGH3J5bo0Ah8HyJwjanIpFB/xywJNcnddb3FUE4Rl5AJJwynM4rV0viNvbCI64S7wfbT7IbTqlX0XIU5IQ24QbPfXtBQmTH6Xz+noEryyw6dsntPcp3vB+v7uUvk+OMcwdaPQjqbr6PuV5qTH/edHS+EVXrIqzExAY4D/9TU1FVPi0KFzTRTg2wQF4pA7+Di0VToPz2O6g8oBlxLEzdokfehhFP0+OyR6FHS3ng8LfHnUvHxhQHmuqKqhf0Ui0jWxoRzZMKNAdji+83vAf3eDVHJCHtpOopdyk4k3czzk2BHN0zPjwkxuOQcXOdOVW+GOy1p/gatXtViAhk2gkTnmP2Xt3xiRugN4NCs4dImpdWHjyq+5EMdLWSbrlF1+2xiS56K6D7idV513Ubw1dWUdtyCAmppsnK4PaizU8DcDmwM19IWWypwxwFMBPOKMeLokNaHAF40FVM4ua+42a+/U51TMFrgKVSi0+X5LuUo+PDVSQo67E7CggT4EcadiDsYazIN3EBvzpZ3731SX8zIjjyvkbSr/2K9jnCoQMzf69199oCxX0fr9Grt+rbij3ETYnSogLb7mK81lgDcTzQRVXtFdcSuQ+qBQ7psEffjcaVF41NLUZzK7IoJVw7qtGioG883213a/tFvZAIiwPbDcCjEqkXSq7ccdfvVy7QXZQxZZhgG4M0A1lur6N+L/viuymKxb/1y/wxd/7UQaCSe2Ole+4nq+eBG93sxF+l12WNiCXWPVdNup7Nmrp/AkIsynncjkXkKjIeo9kdTj1bZx28fvu/sFffNuXLj2qV/xDFnIv5lbksc+Py24LVvzfqkJyqAMamG6F4k5X+1r65DdmBqn++IUAMbCSkOJDBejqOx4Avo+faYovd7l6Vf9mV9XVN7lyzu2+zy3ivmehltst5e535Lv3gANuY13DHHbLxyPlI4UWreENAAfLgOfJFoklM3/4j2vwAkgR95R6Bz/5wyRUnYN3Q5//MMHFxkh5tvstbuc/qBgMRCqtrtR7rF894HlzHoBr4t6g6PbdPEQ0ZnFhFi2jAGsP48mpQ0nAZMvN8cswzvvUU6soBHxkajRQumWoUkTBCsVtO4I6SVIayXSdegfUl91NIH39BpGawucePh/hdekYajXF1EoCWQyeOfAp4Zs7uV6swwScdEogSiXGydn9/1QTpRIjSpkrEzSCBYZHqfhUAzMcQs3YWYJ5jyUV6ktIt6qwg8AWfCpLsXNWkXoDtzvDbc5mniVVQ9HgGDCOvt1uPs1dVFicmR1osJwF1X10SoE1o8H+E8CaZoBwr5OyEyk2ybYTqXaitQNeWwcCaX3ZXInpaZvmMoxtE9+AYUidUjo2pQ1OaWPV03Ff8I6Ca3IPYUn4ifghqMxTcdpHgdIKxISAs2xlxMdd8XWulAM4hczGQwcSH3CwpLmzxeLtoIx0uvANkZZP8/pUjVaeRfax6wK7pp6JfZveCxNnWMA4fsVpO7wHFHJggMAGbD5Lc8uK6zxpuCMQrWQbtc/dZc6Qbaw0NocwXTURKuIiVePXo9kc1CIJ9aGlObZM8VGzoQnLu68YN5O/WLTHzsqbJ2020DXZRDH3fVjOYlHiUILTfU6R+4Rim0NKMwGhw/xL8cUMXK6k0SInruTzp9+mrdm2rcIiHjXzjbq0aF6cYx8/ejHn12gHsd4uE3DR3MQyLUbWWllFlQedlbKKI9oOIzMn64l1gTgmYigK4K1WEVLRW+RcBigkiWvT7MtSG/hBQabsLuP9ssvAdo785PGOuh0koJOB705sA0se41Z4DHaByetcF5u4ipfCvEr0K8zB8AV1Qg5y1hFbJysCG0mpg9VvLiH6ushrejrDPnTgvjgnzgMLwt0KNZADwRfycbQoab6m6QvKGajuGDh9t2kA6xor19/8x9YAVpA11FcxKlrmNqDg+ivXCa0LSAzUU6bo8/Nlq4JaqfvmyRcPt2mVRhgpRgUhm3/WKn7b4ZedrHg/D1G8v1bxD/3RSYuneYTi6VrF7//S2p03V9DN2FV5oRt384Fc2bHPGof2Fff2PqylfXX37lOogWQDnIv4xkVZ8heOG0KF0Ip3SCHz7uNdGgxMSmhCxFrcRGr0U/9h4Ch6uphpQU9X5hdkzVgLUSh8guKJ4qbVdtZ16zgrKAJTBBhI5yRxVx9SJGuPu/pnjuMxUjXRSq3Wn2bGppt2NYksoayf1gB6QvKIeAUapLf/RLevzWBTA4i4aixpwMj75Vat6E/89SvaUQAgVN8NXuEx10dK8YL+FLP5Vcymu+ZsokcPcy6dMcpjLh2ZREcn0RM9hsxlNV4f2Ue4EgHOxvipz62DuXXMvLdPcdNh7U3tDmt1it/suzFwuT7Fa64eu3AAXx/HpRfWT0tbJ1cUY5fozLIiFAu8XNWemVJXqvzH+pS6dkoZqIWHjd1FZDtC2fut+ewalX7xQ2tUikAwY443FZH3fWoMswtROcQpbBbjIc661pFHHlQNbyOCDrr7IvQJm6byIoUxlIW616zDcuuRu61BdFs8o+BIoIwNyH2uj9Q12LgbzWh3I93mxBiTXgl3VWNLcaWL9UvdtotGxtiZWDL3KfdkC0NRxKQEJmXXKRdF1ikVNBiXZcbGCYCRrimEgH+x9fyhCG96b5g0ul2tQgHiGE5ec9KulTp2yVlXxl1tK4uxlGJLVI0xaL1J0x3dS61FWwNDW99f30QF/6Zo66/91aNAWz+rnPLrRVt9IarKHXOdSsJPA3uUohpSuj4a+sAXTkJD3xK4/UNumydmM2x7moAh8rOZ3x1Q/ZqA9+Xk+kpWd7XYXF1YmFztUKfISg13Furn0IBxp53T0MxpRADCP9TnNDJzqr0IyFO80SeE0MeThtBfg+DyhrS1od+7c+2GYPauNNf/PviNUOrVxUOc9ZRKJlmfrJfMQcWajvrYUFKvStLMsbOxFomouAIiAzpuDmBefOsESlijiSwi9I3qtABO/EbGwA81Gw9DRgHpJO1gvfXBl6812qZNXsTZf+mTVWM8HTAO1nFbgPoyq3mCsFwyvFhtFjU8mkuRwYexKboT2pli6QWy7mqXLsLknxwX5jpgC3WF2aKJ5MKLSs1o6rR8Pg9NSoQU6WZcYJgSEW/NlRjpjf2uKi27FNuAwZaom5tLhmuaa7HVZanxTVtO/AJz4vfXD7RTWMSASzZynsJ+R3SmqOvIMPl5xwQAdvkv0GULOYDAS3HHCJSzoxcRHEyAnO0GUF08R6OTIdL3dUbhAJAgBwQFHyZJ8zzrmgAtYO854vO6D13FdeLPeGAKpAg2QEMtoAkjLQcHHOlt2RS0efxZPs5n0zQ9+jfS97e39v0WL3CM/tZtuZil1ymmXmfObHH+Z+4FNE+rwMevstFNxs4PWL/KVomdBxcznnvGqPPGSyfG5jswJdO9EkiIQvHjh0/mA+2FkK4v176TDY8jijjXAkVlhucunPIMFy21WHvGZUzRePzun6yc9cSFjUJHxcrKxQr/mIyFH4sKebUeVdNzTzRq/PJ8lV6ZYkLE0hC95GvgXWE3+CrVwa11/Qr1q6Zin7HJlzPxSM7ITRQzCcBDLiz6DmA+8HjCsTTCBC6phMj1yft281EZ1FiZOKqo5JQ5zEL8XAlTC/GDgp+9WRc/e5QV7MwSZZR9/FA2ULFoiCzP1+Ocq1VFfq0w0V8FE82mKkZyIPMZPHKmNKgiUvoryDphFb8FanclnynfKr5cy8fbVuzLhxkJpuG1kTFjmrrPXciKsl+8tEBbZChbRP6y9vSj4DEVV0HlgxpZzVbbnK3Ukc2qO25u09Z2jVZtQ/bQLLyHdnWQOH4oM98n31F6Gceck6zXdxNYr63YLB/Gp+7yBBefeo2gCbMWXDMr7U08aJooSprqKl1czroYwQSudnsVRTNPfqV6bp49hNpquR50W0uZDcv1SSlaok2VTS2aVY7T2T4cKII/PpnxBG8z1zMuorCQsNkdkLu0Gk3gzJgLTqlCPWLXC6r6xU2PHjwv1A52Oa8dBr9DdWz+O8HazD3lNxm7oDJNgxg51sQdy+NoblqKKhcN0CrGHFeJix1mrCbqFW05jO+WaXplwqDLLDYSqBo83hRtMhJlEdnX27AjSnmSzKHONI3EKfyQKkEztDW564tZEYdPIaNePmfncW4l39iyqhJAuh3TzeqahdsiXl2zNMd4v7FtqaCOk66W+cJfQpkDgLZvz8k3DXgOaeNz5einvH/74UNP9CxYeWBucpKR0zxtnNCcIku++ShtSH8Zj8uVnoHN0Eb4XVrJebFtrox1mR0zLfNyyrqVFuEz9nkDlzNy7nkLzo0rZUsVP1fSwxriYQ2uUQ5+i2kTFA+cSjPaV7Ldrq7TNYc9UymA1W0Jg4y0fD3BlViMt7nKB4Bk2cCkW0KiNvwqeI+WBZfNtNQuTVeaSqiH/s/AzVmPbMvPQ/96tVfgSOuSKiKWXyshXCyHsZ/jNq9uurJnKquwZ+EBagi2oUSTRsDInlLX3kmQvFtF8m4FybHiTs3H7IpbJz8riXs5zYCm0NpN0NRs4upqoMdkNKgjhMq9hkjKUc8s6lDLYCPwA7BGpfJdfAcV1+Wx29TrAw7+mFzLmQikCSiKkGbcHZ9bWaQasiLz0I0OqkYRp9hLeNX9wH0PFfuBuzvJiuuU8uhybgVS2AfXw0NDC3QEJhCzPFp+PszP0NTh+cbiGarCJzn8I7DhzbMvwtaYb9zlhi1JQvrhN8lzR97ER8lRL/0IEjUFRxPpL8o7/y/9hVeLU+Z7jvvU0W/LUgFKvg6aCnQWnzX2c2lZ89VPvkadpXhGpNTCJ7Qwuv6W7lL6S6jdVFBEcFjOi7AInzgrCM22w4LKMyHFUQ5FPvUi6uC07vhDOEX75EPO0thR2HwCzx19/ph9RnP3vQjHnPyD2Rw/wB9NrG4SAC87yPSJYgagPX5Aqv8i5ySXZwCl5XINf+K6MRyeCZmq2/AAgTjwDgkIfx1IjDrufsgp4pojXrkoH9Pf4K/8NDbOYdb004LSuauh0N2+73Zd33d9348j/Han/DANHNmF/yJncZOem6AUg4VV4NiES2u/KX0Jxw851417jM1QxX4rJqeMKg5hBimm7JM4mUvie+7ugvIl/eqPS8zVxJx8z18/nn/R+MqlcQ8Wa1r1dyC8sHfFwOF3LBpzUfseR0ev8TDSI9iC5FFjSxPdkbl2S+MaIN/5bK0iNfj1cz8m+OUApb9wRCxHpxIAEVhRC+7CQHsFquIuQZdxxcL4X6AHQg+/hodrcQXNXcIAK+2QaefTrzPtUNlOKgp8AyCsup5npgltp/eYMLomQx5TfIHTy7vSAGfGMrt+nL4oC3VeT2BecW22N/4T7JnMXJsAsqEJO0Schesanys5yNXuonCiFOleriaqbljtWvyhPyh3fOjgb6GDKHL/Qw50SaYTXGP62/iUFYgD7wwTSIMIQc4/3ETfT4rA/A40NZdJF1+4NP4/Ty/UfwD4n3z2FY2w++Of/OtXcesr6ArxMC7TK8ZcWs7btVOmXTMcbpebKzoqeGD72Dd5oSVAeLxGN72ksnSwQvMBuQfyYQHNHqPo0O94XsdNqgAv1iBynK+Dcxl/+/DWIcHMJfeHuD6+QgqtRvd8p3c5P0l2B75YWfOAf+jNzT7FCXUlnstA4+yjCq4Acf3RdFglJxRKzrFD3fR3KqDJXW4PHQmRmZvSqkPcTsmeJuf6eMKSM+OAflJc0IZJlZKE47ccgpecARtLo5XrxysnOtdpTNIcOBYXTParDzF1TU3oeQP9yHQHQ0tNlZlpIOTRKOQ+y6NCsfSTKIROgmIDev0gqSKg24Z4yHDfQ85yCwLWlsgpK7rYo76/Vu9JUcVWaYJDu6J+BSksVtHHf+pwFad10UB7YIpe5F6jF2GvNlh9X0fRGtWF/cqEeJebJuwFmWP3VC1Z7WrYxw0AlP/8tSOV7xQbpiq10hA4aut6510VC2CXHNPVXR0Nw6jklzNUG0F3Tt4Q5vF3ZTRO5lZeQXQxs6YVxd8a6WM4MtmDHt0zc/fZN7hVAskoDUPIyxu0T/NirfU0rraump7I0cWqQUck+v/YAx3v1VbL2OOG0abbqNp0ot6HzLUthpADixZxAiAACiuthlwCJCXWixJKnCimsLFeyWUQUAwQJIYWAbF6jFj96YqGGdMQSjW/+o/VKbDOAUzhlyyNqcGglblrDW6R76VL4L8OSDXu55bc4J3HwQ30GMxWbgWAMuMfighX68HY2f6L0CClv4cx2pbGu7lHwhZ1LenYASL+OHSZ+piZZ5lMz9hcyys3r+ZFZqG2o1WVOsAQCTQvpBDEEP4ngZ211uzivvUQiL7jdJxk3V2oU5Ld9R71HdM08SdUCQCqdDdszi0nf+YDr22sTCXGuFGmtKOj67MEeX+Am8dmqbVIk1zpTxyCKDNUOh5eP37ZLznXDXrSC8Z0prQF2jUG3BjpxRg/uTxfUNOLkPzs8zoXjg/jLnB53qZj4cU8/vM/rJ8nGQhe7J0Q9mUCp/XMOEpyoSPQqsRkqGR4MiKKVR4tccvRDP2wHEVcEWTdUhgFjVWbJV6Bv68imGPiroVL5KJSkAm0q4XNZJksltTrcDSd5UGIsG+8BWPVsLFGCiyFeP7p4acghxQDhD2JmisS+yFkvHxB2/Z1hdiDRW3eHb9YfJq98hXScbc4VYQDOO2nWZOf/92KYOXabi47hrAvO4awK8PGLu2wCIvBRXhCAu8ZASt1nMYby7yrBKw7nkU2JBXYcRhfKcDZMDZpjjlj5Fz4RAEEoAPwYQXYPslJhRan3B9uA1sDHpnuC80eLze2LQGP7IbiHkHIbp6oq/spgxzoQFxBDkV36pHbihxBiRy9xxA51pzy9uVSX/o//7uvaZ24m4qJuwkNlasFdFNi07oFIgVy6IEDz5g8DEfv1pN7mR1KA4X6GFCVsFOg2wZUKMuvf3BJNq7UMVuytwJimArzGaRlmTPkcbnNFyoVyjbXYJOmrQmFQKEw5Na/8H8N0dD0EI0XPnHBa+Xen7qCuBG/Gj9YzM+5TntVqI4pvdWY0l0DU/ykTNMLoHjCxOrmHn15uszsvUIl1WS+xImybB4WNVKIlgxKOIboNhk9BN976hqIT2qn8FvKIKfabJ/+dru+1c4ivGMd56FqskLsO80RBilma/26o3MTK8ZEzFzRM4hy8jYvP7oziKGBSfVnJ8XGmB+9NiiSsxRkNsXAIrF8xdpHi9cqveg7un83vPpzLIjzS0XVB/aiup778FBTmmNnEEj5vr8+fme1rhdBFFwvfwKDXINFOe0NF7ujpmQRyXR+RvZKUSHOZFFieLDseJC2Hmb8YAszvg/M+FrDix/oPIq8GN4NwGq8wtwjGJmpM0IXcuIXLf0BWkCRX3NqnlEdLauOeTnfHyKfKrhyb7yo4ox3/fiuz3zoZ1igcY1ma+yyokHpsFGrcu5bjlevLyryo9/8WNnlqFlmc4fjGqgoULSrZrnmNV+LjjVvcZPfVzs6aBaN8tBppyAFSjjFUjJK5YhNba7LcYnGzDArMvWaAlSasmcxumhDjaHG0/lRLaf4myG83S1vzKGepIeTsQLA1zcuSbwN2mNpVzmR5OhOQtOFxyX/x3EwLl2m6Uehn80d0DZjVwb6ZhTPaFTV0dZL4/gWfqvBjTFlVHwYI+a8Laz5YuRDp5PPR55etTNYQkYrbtzlWizxhQ2be+p/pBu69I/wSfR/JzB3TmVu1AsDBWKhMl40stS/fAj7ZNWKqycDctDtHeky3govF35BbDF8sWH8b4qF/HRV+fT/6ZPk3yeBcdyOln79odrrq/g1cB0HCeSzIkyK/4mBn0pJPDOACwR7QAa9gpziY7KAmsaZu170xPz8w7HKAvCsTQc/VheADzgCl5qLwG8uAjcxcKxiuCJTpRdwZFZZIPybKQRyTA9WtpXGSjCWYOuUYOuUYHM8x4LNvhqwOZ6HBAUbioNJ4PeXGQfcRDunHcmFrfKCrCxGKo9lFM7afQtnrwJnnXtdstBP+GPvWeinXW+iQPMKBZpnFWg+LHsU0uUEfeqPq8Z6tTlZ53woOC1AzSJQYHv803tao9nxbzy0utG+X4DJLJ9PAYRm7vQyljbA1AAEwuXkhE4KTGecG6hrXhAVaIk8gzvyxVgIknXL/D+dqj2Wp+klyPhy9x+/utr7990sxUDZ+mCvIHLpGyURQPj7L2NrXeZraio8G2z7H1yPSVyrMRgYS98IS+qN+f4f3P8/npL5xdWiAPISOzYsfUwG5PCjbuWgDucfmDKHVoz631cwZtY5diDbpPd95tVtl9eV5PfVqBEyICwbhfL+T0h5G8t9/tsOH/bBF63iBwu0qeZxKyoeHYPORp8cUdpImk6kNcjWCjGlt77RaizW1gRV77QBhxgENXNQPznmufCDQh5kXJ+cLCgjyJlLAfzmM3SxR5YQlQJFEmGan9E/S4qK3ZweoWvBPMJCKPxc6QabIowwgoycRyqgRzpJutvTFiMto23oB9HrKFr7vATQF/yEnurT5Wou2kT9pnRRJXcDna7lA2O1DqgKhbxXiAQwHU/Bm4ym3ASIm89iF+29FFXowU9MnpwswEiG36ARL7cPEd7nSX52YgBlOsrknLpbP1Ji7mqVzV/g7IGEYM+tgaAiIiS/77mBdV217FYEN6voc01s7s+HU2/FN0j6yj/U7B79B1Q0XKYHElHMEb7lAabOgZUU4KmZ7KQoUfOLPbhzXoeYPJz3tMq1G0eqxOU5b/zZNx9pnAyCFgn8yzsNL0zvXOEvLeaU9SsxXMSzzRSr1xv/0J/Y3bxt3rBcp1zLOMPhWiQQBX/gTl8GGzAjCPpVHiPOs07ZH/IhyzEWyOmQXgsqbk26qlcF8rgXIA/QEIvmQ3JorRx62S3I4F4IetVDYUcXiEp4SX3LqiIn5BIr173Wc8KChu4uCbiBlW+lvCyAfHPjy6obFIiD+jHS43goNQoqrv5JyFlYguC2kz9EuHvgQT9KwEwxGi8Fd7OsAsAA6l7po72LEBjTV1fUH+9+f43ouvZ4w0qyWWhI6EernXb0XlYkDSGX9BgObaVjs9rN1FzCSW3/oCVjiOomDlYFZht8GwsgIZ5Rr3Zz+bifRVotahe/mB6uiQDgWnNZLdw07q5OpjG170g8ibFuQumF2E+NNz/d6Ny17fGnO5dRR+WxF6rV+r+4jl/bz5S7GSDGYVqyrq9VI+VmqkG69V+qZ8vkmN7B6kYtK7CUPawLVAXFF0gIrGp+cImRGO7EDh+6Lve5jRfWdYxOMWafR899wdInHN+ibqkncyokSEaGZM7NCVhZivpot/aVE/XribaveqJu9kT1T6CHxV6t+iV3sWezK7G0IoKxDzghGoHK0STmuqYASXXYkFzB81c1KNCFOXYKY4KCyANyOFFzcJxU54mlrgl1NWRvp1AjES9ylZTxayxoeJmv0kn1tV/v6rs9S/3vLG1vUNEfMT2+ySNOhg8go3sev1jp+00eWKJpPwsKBax7Wv/j9Xr10vDSmeEwnA/CYRQH8KwTOOV/Q/nPG675X2846Erk2xvBc4OBM0ggq02XUtJ7P1u9DZ7+sbDf6cRcayqzvawlW0LG+Ol2T0NFYQrgOXwvW5V8enwUgfbiVTX92OdW16SXk0BRigkLxid4RwOlSiyHx33p9oh8lT93XjboU8gzgF8PMI8ogsKouIdWCKDpn+jRTqdwJhJlHldWceHPxEDHZnVHgZKxUFmoGasRsf4rZNDeFegaZNCVmHc8iXYhpBClyi5Ea3Qh5C4kp+4CmS5Q0YWqpPddS4wI/b4jIUq+ClA9jE70Vk3O//3ztmn2xzt5L2SyV3K/tTW3NuDtFfmlnC5fuxdQADZ0ymkKjGsZKAbQ9mo8+mIbHpFX6EEY+YpIynJA3w+bvX/VH9+4ugLPQFhxK3lYnTb1313pYBbpnPr4UbLOKWa1RWpBYHa3IU6LncSSDnxUQSlgjpWHqkOIKD4AN3wmWHeUh+JvT918R/zDfaD9Ql09XMdcOoblGCYEAb13cAnrTW+yq9TpJEbeRHKldY1vBrkfVkpQDgSrD4ty9AySgZoMRdJF7fF/u050E52W4pEhcraS75B9AfoSiVbXLbrptIFIq+xplWvBa9x9JnrESa7WGqFpO3jTLTX580j7CQV1DYWkda5vh0qGwIIMZe8sNcBJ8gO8na9ZUxZuV2rhmZTjcJakIiA6FdnL1Y2vHmuhO9ey2KnnA2i6ZjiaPL9VhaA6gqq0ckvhveOTds9tIlH2yZ96ddm17R9u1xkcDWot+Zp8Es7lgUTxKXwQJUni8XQkPpan6PkC/gXN6pUXX0qDbXKqBtbOcu7UNgQROdgQxCL+LGegSXha4aeuPE34Sb8e5adIntK/xZj4NdTXn9NXE6LvdPsAVG5uktqrcavVuK3VdGw1ouP2rjvGHfMfk6pfiKrdf4Vj/gF0rPTE+OtVTW5Avhp3613tlZtrqhahWan1d/tKX5cgRJJnP7Xu0vlmz5w7vOr+V7RtgMaHRF4/7tYNn9U7A/aEJiid0nD+0aMKbmh8aAzq8xAXwO8dr+TfF/LDXcXDsVeZh3uKh7tfbR5+6BbzcFvx8IqfMA83FQ8/Wzx8sHj4++Lhn4qHh4qHz7/FPHz6p83D7T9pHj72VvPw28XDT7zNPHy5ePixZfPwwIp5eP3EPEyKh5tuMw/3vcM83F88vOud5uHG24sKi4e3FA9Hi4c3vss8/M27zcODxcPL3lPUUzz8RvHw+eLhXT9VtF6M9Id/Bg8LyZy9cHDn4V8yFw52JPuNl69r9efF5NQOUJ/feL9aT9xLt4v6iGub93ZD6E+hzgsPTd2w6qymdKjlFd7IM1/vdQYI+RNSgMsNupE+4UDHVfr5zQP19G7CIMkNGD3N7vK9U2Qr4v19vkRRvRRqvKfkPdwy7dV3/xreNRiv/FbN+MCVJs1lfqmiGtoVtEKr7Ry/2HtxUnrarfTx+aaP15d9fP46+3j96fTxEuljavoItepa3WTPuBq9N8DPs7OexsiQxGfoZdb9cpkV5hjqyX9UDOw7ZVjVC4VlAJ0MZ/yVYERHyy+TLE3Uo+EUjfTKa4CfGerhZ1bvwW6gPn7maICfbhmYDPEEs434Pexk8/h9cbapuCDeg/Vp/ZJvJOkQ4Q7kobnkG1Wy0NRbss00/ZZsAapqlhBziK7hFfBp2LXn/TRrn19IM5WXLCqvJfEos0U4t0M7a9y2mrI6bFwa1vEbV5/ZFnR40EEc9IpLPIkDBBgs1JM1ws/s0TfTnGHQU7itxe8bzHu3uGFO/GWZFjU5n9Iacc1Ss+ySLKgQqVuWs6mkEuhua83B4VbNlm2jaa51y0o+xUmojzNOaBv3YHolp8nyB+5C5Vs4z7YJbSWarCBlShfFPGfrvmUl707y6Qa7m25Gv8NiIZk6AZaU30RTPHHc9iTf0ii/pVk+Jl+IQlkHTU8mNhpt4V/Io7R+sf8oQpdnG00Q0Y0XM+IVHuPJMtCfwqF+mz8VG6VBnddAVhzVL2npuYdEiBkPsRPBtmhU02hlLNiMMk9r4grASzmXnowVtFJdcHnFxvgL6p/YnE/X789/Z1tvy376GVejRgK1yj3y11P597o4iC9HDtxxTyHwLOduY/7cpvoazaMvMFT789u1pT/x2/TIRgX3bAPtmBVzzyY87ahLKP5FnEm1csjhwJulMf0YRy/MA/ZXzKhRmweU0Oy5j88+b+UKL9syc2iXQlV929MdZKuY0aFDSXGgszqAhkpbP/Zjh9tcgMHLfTFAcrgPuV/6H8KJXWHEV7P98RumP+raORx/rurPIQKAVXnCjzW31rbEQx+oXBAIq92IlgrNtqsq7djogrAZqtWFIpo7TJChtsvTyxZvwTNDqrpQbHv+EvTbRVUYP8rcpqhodOUXjqPrxhyYtDgq137hp3bUeccf4pASmN2mG/+ImuroYao7vmxp/INPL0+8TWghj3UChe3bEjbznmTPXMmW+zytLicXG3t++Xd1B5EArSrEj//S4TaF+EiR3xe057fTKZv8gZ6eKrbpUm4et+H9fR+B30zRFhfZ0l97hzSzmoCRq8aemSEZRqp3KhPHoJYdU5GUq7MmtRb2qzN+OvWRp2aoHeMsjDrpXxahH6ojzMOSzJSEp+Lz+3kLrZET6lcHXTkMMbTB1UcQFU8DzLrGm7m86769GGnpjFD84/KvIfH6rCPwGuS9GLivA0cgMG2vbMgc4Rk0hwfV/6B7NpwmlKeymVcebwPVoZCDwYb5Xh6i4ocbM36mPbXfok7yK0B4Q2bNjYyTTL9rRmpOCLWUQkGASb7oYiwWrAcHDJMzu1e3UZ0Zvk03Xufko+IJQPNtaoqmTtatP8IqmXHIdtmYLpNUVmxWXuwi6IoV2VyDX3bStX5fEcIvKW+yanitjVnPCa7xs+teLA0/6CrVaV+uaLexRnO39B5c8VlsKNzhe6rmQenn8QuK0v75r/Tzw13zOF9b13Svv7rqrCNrM0eVHo4VMIwJH3/Hq2DTo+vXmXoTcqxurFOvKnm/50SHmlOVuZpCZQoWWbHwPJ1vtzk+r5rwKM+Oha/+spBRXamByAMKdrm+URN7srDiqNHXs+9gvxD+0OSv06awqNdHvZH6U4iNz8dYOXGsKnrkgBmyZCKbSb9qXjSKX+OkOBEncYGh49LQThcje7tOeROSTVhjwXzccfyqZ8qaZ2PtdsDT9ChPgqISqIUJhi6GXWBRSgnyjgh3DeWIOd6W3tV8UYBsvRcD0bhdu/R4eTx9sPR855t5trOsJgAA/LMM2alPtWuyknpJVDptq9fvi2JmgqqNmoCbMsYu4Brp32Fm1HbXzA7YBacI1U2+wiyEBQwrhYdmN1HeOpFjA8KsyDYrOljiLb50yYdbET2LgT1lJJc0kbuIm2d8gyWlb7CknLp3fMbqJNO/V8dOKiHbYY5xmlOW+NKvH26U2MxDMYUCzoiOlnx2rPXhilNdFu3zlwG+jjWy7AiiYBZ56urKXIvqU5cPlfJufUH1rUFXBAadjM/A2U/C4xbTx0gB1stSBi2yOOMzAP0+9ZbGZwD0LufqIVcqnzPOJSc+OoiRiSDiZ4mWMdZPmAztVnUBWcj8/EcOr4ZlmCBOAsJ2+GUk7yxpHFmMIB97cp1wNJ5RM8PR9Xk6vunIjut4NlMWxgcIYT2Uu7nbX1WfT3QuAbqPSNfu007WzT/9u5ZuDjHwviGLCdZKnhJEblAL2dS7SKybiYz06tGogh3vO9KCT6C49cq1NiyqEQzrDkCBgA8M7SIj4y2SGDNA4rgp4pw9BCwuw99lSd+3qDx55ctWN92HdHaXwHXbFQNP4ToCOPmJhdXlwzfw3s6rjB4353rPMANXcEpvkf5wRo8uuEUNGHGPf7OeHTiQwTgnnWrZ5k/VtvlTDbF76o4ssWJ3AlAl3K8CVCWcnOYIn9kywsHDHGFyqhGiV6pJLecwLecQPUt0s8AEaz9Phu3YiHogAF69Xz3uF7S4J+9VnKy9Bm6HTXizQISGPRkAd3OkPR+CTAyNdgtLGSHWGFn5o1CfLAER0zE8hCtCSmcoUfNX2S5EQt1GkA1GIFjGMqJiIsZ5tLTaHjT7jSYowG13vxzCW9qojQ+KlZrWe+QtCfVNlNip1VJYbs+pl7zNtReDdtc9c4LRPxts83BobGwM9+Sk5W4eGN45i/dPJaA4yOtlYn6l3YLpoAlf6RUXP370ZWXUr05B0L1CJ2OFC0+9vlbrmtW6Ugg0jdpUQfIKWxvKH2n0xdfynVV9oU55EpcB+SyAvOR8Y91ntxN1/8Edrv+LAL7a8n2kVY0Jt0XzGte0w09VGQN3hgrzWHGPZWQEFSCqTPilRpLInSLAlY60g4MFjA1JOTZ9aOREAaLPvUEHWZ61J6tFQrd6lNk3h1XLLgtUT3XhGrQOgNzTgETQYjvkIeoZeSeFyk+0Q8UpjqvsyQf6v3sNWNuRGhC1DnX80HuPYOYW6mN2rB52Z13b+gbHwxhb7iRUh1zviUBgZwmAnaZr6o4+WF8Pg3oP6516tee63KlVXWrd01ZP+6wVhM6Db7RQnULD47ewGL/GYvwGi/GbmmQPxNoxmh1PH6HZUWNJ8gopp2PkdBjnqbt/0T2JrFO5XEtehb/c96lVhFlvRFWvhxR3Qs7Dft6W/SVV4TXL2oA8Y4XDSRurTgR1krsc11tzItT002gxoZTC0Py6ky7/5INTYlUdXLDuwaGsjUAEdWqt817yCaj3rTbKE99RciqhmlWX7Dw0naCRJ1c3XLGM8h0PgOH5LYzskL3vnQSUGmsjEOtF9Kxa63g35HUo6v3SOw/yOcV96Hs7eqH7QfzqNRBGOpj2IREVPG3gi7NhclGh6I19udBQKunA7Kr6qFGiFYVoyc2gXNXCJwMyl6p3GuZjti/Kx9U2rsuXjUQD0DvY3pdqUYy4KJ5HRQWoX6IBaIBQyfJhFhDQeoCv+EZ8ffXpmoE/v81+dsvP78IMJau7UIz45Hhltubqjv8A06ljqlZ7YyiE0j/UToTckgh5Zq6N4tBrkiCvhQR5NRLkNUiQ16JctiTIXUWC3AYJAu3RM4WOYj5nWRPzFUZ5p4L5nYeP+W5SrVWRyM06qzDfUErF/E4V812DbZ0G5ncqmO+iKetJ6KSYr64B1of5bgPzbV/aMb+9L9WiKuycGvM7J8f8zkkxv9kFrfDhYv7oZJOdvDPwAvWUWVOfDWDXpXNfVf8ZBUkx+xJtDQcA+AmxBcIX4XfBqmO9sK6cCrRaV816Xb2yUhB7sOlCxV8Ng1o67F5uc/7YjDzvCs7Dlxi5ly9IYPIFq0OjU9YX2/riAhaoNUatXepKrTFqzUv9Hz/g7/I8Xsh78swP3QPcCcAHgEEJRhu7J6xAoyNgQC5ztu8/I+/gomMBGSwrbIw0qlaQuagNfxx2xFOqLsc+eq0WmQwaKSh8KM8CbKwCsU6mYIysysW766nSaatSq0K3JBeui3THh36AepwZ3yCBaz3PwmBw8UX5qrg3h1Sl9YPcNntu1mDyMkcOZFpn79T2A/VzHE89rxXHOX6hTxcMlmhYsL8/3jyZuVS2EzVNs191vIwWyS0Owbi8Z8p7Wv5XHcc/zXWmB1/8ZG7qAX5ti8ttXVyeLi6P3PriwmrX+5OOXopC40KSNoFaOekHXoOlpyFa7cVK6/n4X/tQPmyH8r5TDeVrgedXd1AnOi0mMbk/3nZ5FlRPmU8ehz+y2BcZ1bK5ylZXjZBceKT2MY8Jg9Wh611WFyuMDDl/z73YHLd6/1Vl+jCKOo7nx0GYqGFEHsgxfyyix2GHHwIN4993Kjli2IubHLib8DrkYADqdAb9ULQMT3IIDZlikVTcMcX4gRNgKjVmU1aYzeIwxNG86qmGJPq7NBYUpSThdSjlaCnISQFyP45HbQr1/UTBkCF9vLsw+dizUMnj2Tya4NZsJg97ggIf+Jzhh/qhZu3UISR4VsnjJoahQImDWsfFPPyICUlv3YHgu8JMSUH9hC6WkzR7Qtc4tokKXoAYX7JoxJmkHtJFUqTOPGoFiibF+ChRMzH+5XksbAc0FH+5zTqsMc9QB9lTITyJtM9/gmBCvwO9l6T2RR75eMVISuPHLAbosbjG6GvIt5aDyn1s0PsDx7LY0MVY6eJLcOza1vwhNG/vAKK0uFymUBtewE7FdCoWRwpodSEPtf24yMm9CO2KL8QkszH4j06L8kTNhjyjC1Efew0/5f/09iNNP+VVHcjtFHQZrNEhz7qlOezXrdRwGxSrxsDYSNNP4v7/cMXXC75SKB5LjKMrt3qf6/X3qZ/p9ITcbDHXKvVaoLfXDJtfui1Ewt8lrcE1+GafSXro8T8O/sNvGDhOEMeu+iS4bBAVa6in4IFi9u9eX7nP3jNXsrtKs2IIFUrB1GALogslBlxMRor1c6OIssdfCfRUZ1xdlRid9MMYFGPQv1vKZEtySWauuFJPpfAyT6I3qxJ1iK2+GqSLPb17hNZNXiTC9UlHoj1x6qthUg86XOQw+z/NsbPIkaBp3Q/01ANaog310LBtKKl0Cg1pRI+iOjplg7vLBrm5no6rh+ZQHXYr3Dy3/DQ14EHtUm/eb/ChfsMKVifiPlwz50tT/Gcm4Df/AGZ9nHqfU1KwjmaCvMq9OfIuJLZ0uGh89zobv2ftxu85eeOrYWHmuFeCfuwB5fUow8yw7bDI3XIrdkA+Quutda2Ywl1AIeNHyAf694zjodBFH+BuyPM9pMP9hM8/X+NzTK9YHYohI2CIcXWO9dvDT2/85V8G2WDQ9BK9qDdSb3rwtMaDUDfPSzRCL2A5iDl/et5bQPLYpd7CEvcO6V2kp+ZMZkqd8E2pLx8apq8BzPIhJiIZ/0XE5fIeTBW7S9SjlLckNBT/4x0ajp+k/knYqXiXuhC9u550qRhKngDmxqVKorasqynBR3/v1a2UAJage5QgXKgEYbdSAlwgLIiBLiwaffvA0Rr5u8wDmG3dMY0alPZMQemgdknqEGgA2Natjq1PKQYOdFZVSZUqRzJ9qLLpLw/N3VxzsmxL8RFUgWqP8dy+9mHNbfwYze3zdW6v0bm92sztfZ11Te7e1TNxovMIZ/fK1XXe03lUp7ebNJa6TrONa4Aegssc/xVZ7D1majoX2ApPK+EBRJ6OOcqmvL1FTzh5yszvlFT0F79taugmNCU10DRYuc6ps+45dTWHukrrOJzCDc+UDff4+4whGjPoeq3hGTTc44ZTaThFwykaTkGT0bCe0ebdkjElxM+m4V69YdOkcHgbk4F65nmWZsByp/iffMOKDczV+R74pk1sx6KEpnVQdNlSNm1xRU+gZ6m/QkNUtQGRpI4uF0xVj9bDKnPJRqhN53Kcqy9gKy4YjFEMhM6jBwaRqOshcPt6Ph3vp9RSCfk5tznI7oxzmxm4LIKITBb/rF53f/OZtdfd3Y4uvI85uvJOOGbpnXDWtfSWndXrZNl5hGvvzpZK73RaF1+ZsXDAJtVZ4dAumKn6cklryyU1yyWV5XKLIkeIOU5RvktTmfY/AdYmwNoEi0c9hnWBtb2sW3oM42fpHL4zV7+M06rNWc7abM50l6ZaF8kpVieFtjkYm1WWRVguCyB1dBK3IYLxkxLNgdFTdn1M2flcTb3Wol8qrAB5q/Rr3dRL4YPy/iOjXipsGynMhGF55aH1kjLbi0dGygq50/YiqfaiQc8sTePnozQsidrsilK42ZWjehVvYqfsJCRNXev1GsQgUWJwxBCDG/GbGN/XIAbwfR228TD/VFW+WGu8Xiu81tT3QKe9Pmz7N9KIBmPnOo59OHayQdltTKxpI6y3cYvp9s2m2zepHbIHn+atrLfSSF7ZDGSJahcQsEqJt907glgjm9m1jXvltol8FpNUFSxRf/vkyXbvYu9B9Kd/sfeA2a0ULnjEWTKgwFuV1/xkbati99+2bRD8nn3xjTl9kqCMX1wzutaal9wUV5xRICCy+pIoHK/8plLUoml8Ms7w/F16WVhVqq62WFW8eFx30eAHw9q9uaAa/V1U/ewklU8o1NbrPCEIWazHVueRr3UrasZCNqDhROFIj9vE5htC74PMArmFLPKKb4Tda1Qenxknl6rWquzS8hhzGqkHP6UXZalQfJNcoRbrthR1YU4sxYSoKxm33VIHK8iW9XQo5zcLZz3r7p8RhXsBoEaV9qL66MNGE/RC41a2S6G6gqyW0VT13WIa6Jqxgq9+R0FH1OzOlLYjjPQMtIufGBzslL0zG17bSSXu2lfdS4T2LnmkS7XL3//lT63UUbrZ61EA68Kdake+g396xW3BALunrpU4FJFiJpHopqIRduPaA69oKCjmtGWPF4xTW2VlIFqWm5Rbdqu9lqJSLVUNptgcIoDwuw9W5XzbVjhQguMXqzawBnVx8njHuQEu0lMTPL5TOmhDIjnPQeki1o/0t62If4oin3Gc0Pjj+OoJH9/hpQfW0hchQQ0cv5ik9yIpdzLX3vpyzRUwz9yCcFzz7F/g+OMvP+ThVESvoqU/CxMC1TwioY9bI+M3uKq2eaPLj8KLFvSiZkBh+jpVAwVS/jKp6f/H3neAx3Ec6W5P2IBdAAMsQIJYhppRIhVpiSapk0xxdPhknXP+Lp9zAOlnic42JVLB7zmbtqhnpbN3QfkUjr6PlmVRznDOenTONpWlc6Jztl/9VT0JuyDXONrUC5Sw093ToaqruqqmZ7pq7gscN/aST0bsax9VjaZYr36xU3Dq7uZ9g1rEyQT7gKGesdK3SXKkDLUQGM6BqPEZ1HO6vTZiw/dD+/I+ESDdNXDI3NOghHtZCA090aZSYrcT3INpijzg0PtkauTr+Qpjd9htBzk8mJu+BEwwPTnftp+Y59i4bQesTYFsJiObq/IaZPOUbF5GNk/I5tmTo5Zs4AQySrjuryiNfe+u0TkN9rXzy+v299ionCadpmy7u/5I42xLj1Ph3a3KgLj0KAbNDAv91dMfbtouZ+9+hXSJPY/RYOdF9nuWBfb2hVxv9XxvH3a5uyyi3/W3ehpWisn1BsyLrMT4qoTO7vx01oOnpYzO7nAawQXHcTKvdG/LbWhjoNfrQJAsVy98oK514WqXVGxs8IW8yz+rXOuDJUA+yPJV5Ktpntz0Dg+8lAv07N7BgUONBD4zLGulH9Q8tPZS1FKixBeCLTm9m9MGaZc7lM8g3PpX7etm+463uBKcRB6So/OSerd1B7WivkZqOMkZMJWIPqeSY03EmQmbWYrMUpvBwvfT6Dha1kBJI18SoCRII+ioPweVgvZwWM9DqH79yqappcafV/APRib4jw5GyBbh9z+Zd8EUXHaDLBB5e1s8gxwbgI/X4mqOgciO7eSur8pBk/dj7hIzw4+dIpmsAyk8z/tJULePoB15EsrqkitAPO2X/KSzbnWgzgctPrajd12OjpLJKqXlr/le7/Ldn7qkZ/n97+1d/93bL+5Z/ub3b+9Z/p37e/fzqbf2rn9tDv5U78R3vPqiovstYx9nOI3HGUutC7veRYs5E3/ruld2NW8nzbEtU0nkbpcnC3RDxp5Nrah91lBrrQp7SJUTO2p8sxgQE/nMmJBru4av89ciqU1INwWAdxk3SF5EY2/JciOMuncqZW7mkRH84l3bVftl4OiulLaLjYgvP/FkkZQHb5RHdR2FwENzz7fGbre+bQCspCb3jbfystQq8Tv+8IqUPsr7rBKtDgQWKLg8Kagj9hWFVfUS/gZH0K7iLIKfrh4v/hG71t3h2COzeLoGTe1LrOLi2J6+xMJAUiu4A0IJZic6btjsQO6FUy3VHL9qF9kALeTUiKd9gWLKE0HCUQY7FoNu7NhzUpyRwoaGKuQ/XCsYJnWpjk8ikxswFqEDPZD9PPLwcBuPJZrszbCqUVhK8LIwW/friKGCrpCyBq6RBwzckKf75LnM5N/Ae/gY5/U2bOb3B3iA1/NEfQNMGZl0Nu65JjcbgBDdaShSzmFXX+dA3/3WsQchC+f7Rul0H5hPBjjqKhgEihz/3sdU2q+DoV6Aubpf4E+CRItsId8+dDZiPzEp4u/x/CcS5W6ZnUZc0but0BwcNb83albYPtmSdv9cvJx6ggf5lkAlhR8DClvhLfYdKJm0B0jrVKNK6jxCJr2qJ2z9M0wANpnLDQxyxgsO3s0UeeETCS/MHgle6Lz2ol68QJYX6DCyAnlCZIbxM/zpSB/EBGxzibnaEnP1n07LsYyWDhohMjM5c2h5iglCHzR1zjCjKgynuUq8bjo+wB7+zzAelVMJZIVxgCKFWV3lT4tEgrMz5YOWrQnxCoNmJyBHsqFJGyPVdvGhorCCqBLKoE9r5aUuKFNh5UDaxRfoN1o1jeahNgO4InlqleeT9NnEjz3LLNgcz8od7GEMLKCPgbS8Hl8QM21aPJeYKy8NTFb/W2PmdRGbRbrtdgsbfH1negjxvhdCM/El7xL25DR+ApaNEUjBcIaMZThuC7qXNF5aZv/tF6+MsVtQpPVbHTltlXgZWSMhAiqJrsRCxslA+71GUmt1V60zs+85rHvDQ56lsmditj1CrHVnWu86fEed2PwtodzFCVgTf780LcccTLqtSyj+Xe/i15quYvgnZA7nm98qtgFbuvrw8gg5/edM6eUaQ0b8IMpj/2M0s1EyT8Bjxe3VUbPNE4eU/jbnAsNXpOGkktMXcErKEv+NTrzv96Vpe4ZQ3fbNRF7qyOVpmAVs6uyo7wr91J0fXJHfVdKQFZzcaSRZ5eSlmqxx8mdaYSB1gVlXB4wNdbk4KMiHQ+qHcVi9MgZkjnfaJhzB9RqjHgQnwmZ6kmVMnWeOw3lmicbFeeYinQK4kwwXk6OJicT9X7gEqSdAFaD+rIkmQfcmL5HJvLtElxhFl5y9DKdPS2bCFjdYJFWpRIs2RSXrZHFRvpVP5Rkewb0yXEp18jBJ3C/+2NHiMhri+kMSp3QRNfbyvDVuCpdTi7yZcIU9eTFJy/Qz+woFVh7ymPB4wHlE+Xwe3EoupZH3dhi8wb1y1m7QeujB+2NoxYCGUTNqgDNL1lFplaDuseFeoQa6jkV2DaB49L1Ry3rX69wSEq2gVvsW+xpslJY/mbsnGqHBlvXrOPrXYIh/wsLm228KR7GO7ZtPfH4Eycc3LrM3DNwDnMuXQPiXRtbD8ue265WBB9c6U3jqzT40b3EvstGKyVYXSxUqAerI0Y0IAA70GtPROOhqNwWp/ExANY5UJ8Jn6cnr3fwRprRKO1eFasSdNUQsUP1piajoISLCTESE0MLh3g4tphAcEYVxFQuIQumnM0Ne257I6HFoqtiRKx1N9Ooo4o6iNjMKEyZs1Rl45rI2SIbnIMCsmIBvn4nOHfXQh5fzcNCQSVtqCqNP0xi1ZtBiErcmaRCXwdxecsO6Xh0X+6MR33x3YTt53B7nrr/fLQjnM7vE7mN6COf1XbUekdwHfWEpGpEPknl6IrM39pbZxcNnsd06xBxAbquFoXLbseFfny1ypnC0GTV5YrRtKrsEpni7pMl9NNRxb6let8125prtyDfrLfVFCj47drJxVVBqBwdKxQ56KJl6phr+UXXCE6zjnWCdrjLIVzASRGoi32duwdKDhnjPwLDqg4rVET6nHdYZrmgHb6vK++yU0iMiN9USeqJatIQ/hyr+3I8jy/yBfB/6QdecqPne/c51qGEg/BsQEGKaazAHauCdZwPcLwVeps4G8+oMxdcaVTtPD4dVNwRCE8AKlTQiHoDDUauLmlYXjakuGlcNtEg10CLRQItxnbWa6DGJAnI1sSRVm5PwuoE/HEOi8qawnupGP9VwLZmPwTmTMHhjuDSbhKWyob8rdGCBnxsuS3Xd8kRnjc9VVB75u0KPhvfyUFBVy1o8ukPLZ6TNYrTBul+c6bnF+eYOTbLKYtEYEvk0uCsMIafxx3puMXSbQ+WbwojqN4VHkXtTeDQtp8GZ8BjVclx1sWq5ARrNtNwIhh0BzUa4GDtCzwtH60TUZGXnUbA3HOQmgax5GlRlVyWui5pRWbWBKrsBKmcqDnKdxt4bTULcDZLHKu5YOoYmWcWNiYobo6Oh4o6lJgWtsMnaAmWR6LehQcPpo94Ujon0HIEwGWE+C1jH4cZl4RjnhqyeG4FJyIpNFiMNrWXm4mvT6rsxq+8Cts6K+m45jYQNGrU6r4GBa6rf6tNRGbS0b8HJEf1WRqoTeXn9lvMSkFZp56pg24e4O/FkM0g+2H8wTF1LHsoUhsYRxSTOrI+jYdVP4cr5OHQ4bQ0NNEHD0noZ2qyiZbb18QwnM5KosjqFVBdVNmmNEVaHK+k41n3HtWkVk26YC46nVfwN0Awtb4fL62Ix+U9P7AGQXEO0Y+lDhSkbWdU3LotgmlrM6BhhEYi5iAJcguLnkqL6GqL6ynNVXyNVfTXfhfUMi/rCbi8tRt2DrFE3mviezT5OvJwjiD+8yy2uhhi58vsFP6fp8ZySdSawUnb7Ez26saBHMchjuExOqmXnua0C6CVKixQ2DJuRgK/pGUDoSNUAM7ZxsLGnUC4cByMEk3zlO3z9fViLP7IRxOGfK3bkgcHhQaAUchr3ipzq3NmtOneY3hr3+lyza7ubtXtp3K15jfvKXAeXdnewvde40nB/SUlrXd0zLuoghim9WSYET3Ko0+N+VLFDQCV+bY5SF6Wm7iJWqkTjFKWpiSSFSyBswwdiYnEZm31M84kfYzcrPiYuSd/eyCvtYSoQIoVMZbo8RlR6sKSJf/hv+S1KGFXBf8fzv5YkgeicIqfC+hKvfortOfMw++de9cqDMDu6mNgb+RzKE1LTt0+ep7v7jDVFwNWZ/3kYvlbM+Xke/Wvl0T1hjbuFaaT/toW1uih8qjFOrwROkwquPPjLLQghod3m2Hnu7uA1qPQYcW1o1rm34uivfadoQ0c8Wy97jJQyQYHFKjfYwC8z8hbtS1JrSiyzExhDhjixTOKnkZ9hdb5A/++6Vkvp1sOs4XzvWb13nlkt+E5i18kjQz5vAtTY6Ktsq2FDYGt1W/kCc6HhUq870ni61kI3Xa2hly6g0E+XBFb48Yy92FCMOow9MYlquL7P6DbArUZNnpeEDbW4BmVpqjW2Wa2x83QT4Ga7CbDHbgKMRU2skDFqCr3GcZ1jcS22tJwQ+oXN/LqJg/wKquKCXJOJHC5R0oAk0WSyUTQTtfJmI27vM+HSxExVm2u12Fyp9bUiCVARErVoyd4ofHpYSiwyvMKea5RN0vJd4SSFXJs32lswoyKaoObmsMGXJZvZlFpGS2fCkJYSzYRLsYUhfdEYjW+KxqD+tNvxQrdXsvkVUWtXSFxxEY2JlXYMTXDFCdmNOFbACY+TE4VLpjeFK6lMR0l0h1WwpSUFTc1wbJLMCaiQZE6kJTdFJ1FI4VUUZo6YWtSauSU6+U3hKXQSnXxZuJqaqMapB1GL8bglPJWae3nCjtodnlY8qMRQHqMGot+1DaKPtPndkKNlN6SF3ZCldjcEAzyDL7VwDT60dtMtkSZsqjFLfZ+amZXo0Rg2QmAXLKUW24gPpgqd+iZm4VFcRrnnU2Xb48kiZvjmg5Di60mXcaX6oGeFCc9gtObtqUjhqkfpnTKdphLkuqiGB1MUnl1KKyaVaphUblPbpAIHNFzF/Hsis/uxYU2/LC5Tk8bsQd4mAjxwFpcx+8Wx2DsVWs0gunh5dijYVvUD26qesB3PY5+Qh83tAzaZwJP/yU4gZrmOU4SAcFO0Rh3LrsS3jGu4zzVUZbDFBWHdiux+kQDOR23aHTsLQcTvb5JP+Rec2xgYdP6r8Jf7gr9/JnH6gV825zbzJRAtRpX1UFuySXez3aTbg+ug7JrYcxgG30a+D9f6Wkf0YE2DFQ5wEq+AsPJUXw1wKQ/zYLt/mNslpFFeOjSKy5NbUbqnWEIBL7g6BeFaGg7X2W9d1olnnhodJyg2GcUmeK0mj8lU0yU9BmNLrfwVdoOrBpRrjLkHzJvAvJk+EXm0FhKhNh3J+4BltLzDQpYvz4yaraiVPVJFY9j7FT9D6/EA0eafsVa0jEfQnlziTk5HJ6051nHrxrCZWcfNOqTeUmnTI6hLLatZq0OMdcKlDE9tb0c2DCaotlmE7phmeDI136DF1EQqGge+OlXH2ofZpj5QTspOIY0JkB3sJdJSKqFoPCuakRlt52dOeaaBSyObQExESMuk5ulEBNzbso/MmLUokqcyn9bmnsrWoe06LlLZvRa92KcwuwFJa8Ja7kmsZp/EmmJk1uY+iTUTn5K1QriaWv0dxjGZW7jtTvrdkTVWveBf7du+Enn2TS4cYySfXpqC+4trej3wFB1eudhGdzh/of7yno7DMZwNye+5rTNK+lmaBHR07F4svqZIg47/vuw4ifMVZ9C+Xrv194iVHw+fH3lrkQGQ/1pTdxZIfxBpWzH0LEvHRk1GpNBWdnC2j0yjBGkywW3AHn0kRT4qRI40ifK1wEhciTtHHQRZiANBIiBvk/R8/fi07lsoK/kwl2AAgudclJ2HsvNmkHwykk+W5GOQfIwkNyK5UZKrkVwtSUKSJBkgGcxQGZkqMtWZThuZCWQmbGYlMittZj0y623mXGTOtZm/ReZvbebZyDzbZl6CzEtmOszDIKN8g+njikkGrcLUdY9G/wQVDzuSbf0HIMSxFqh3IVwcVJN5ZpDO0dkF5c7DTspV4p0Uc0+OkCF+ieQ6nHo2UrB605In25KJtORvbQmlJY+xJSvTknNtyeq0ZKMtWZ+W3LrNFs2W0rI9Sdkns7Lrk7J9WVk7KftaVnZFUrY/K9uRlN2Xlb0yKTuQlmn+VzZvaaphRFRE+jqvIGL9C/1LjIQG6YfaHtPh0ALDZALD1OVtMhkRGMYKDCMCw6jAiNSXD+kldlG5+iJbCvmJlEXEfpLeJVI+0D9OJJ53HsrOnMHcXujkGU1lUhHDfnaTcJRHMHQthq5g6KYiETyr9PB6icSvqutXs60vDDKg95eS1RH2CXtXMDYqI7PVXhj0MgP9R5f0ci7n1Y2XM81FwYs0Y5CpIpMh5vZC7NfGdfpFDNTw7adGs3bZG+5UEPOLiB066g8AIkdxcxLcHMXNSXBzhLVILiANOWC9imZ9zjLGthJw1huYCinzgTr2Aso8/V2o324cp2+ejLFT5bTQnRe6Sl07CT6o66jldehJKK49h4ygbi9YejoDekkWn6NLNLAENcgodVX4MyzlXtSdtWx74Z9ofmw3hzY/0r2s8py9rLK1QcpS+JLk+kTm1LP/yP8qZK+Pb23I2SK9F96VjqcY9Mehyp0FgWimF4iCmY4AVD94ROXr5rCqj3bVVybFcRn5gPOVlFntnQruTGQ1nZSNXa2DGerFvx/rn7ipVIUFHDq91MbCZsnpn9DQEL0o/HTTt1Q13TYH+POW9Ydko1uMcf9kBsrxgGWjW97XTWaRSL6lspVI5ZTI9kYFNyZelKNxuS8aP0cnZ+HkVQqBvjJR85Ph/X9pq+PgJkdcfQFu/cE9n6d3yxl5A8PpYWAcAaPJ7cdoAgvYlFOwm/oxmj69AKOpj+Xdn83kHMRg4hzo4/aijwNcnC5cbjsS7HVwxarqVGl0MH5zQZsHkt3k92s3ged6m07uPKZTP3bTN/onZWo3HVauBOZ6Ub4E5noBZ+atpIOxabkXm373T9Gph0+Nuv3o0Otw2vAFwqqM/O8q528RgSLYkWHtsmXL2i6Z8kCzpyr921MZp2qqPMek8lOTqpvZ1aTqzd7z6dr7FmpPuQtnhIUazowaeMHJ8YKT8oIzhxe6ML3E9GlWFCwJNzUj3rcATjy8Jlklb5J1c0rRKvOLVpmTWmVe0SrDQ/Oh2eS1dvIWziJK5XQy/0uk3FMUxqYbnlt6GND0l99dNv8n7S5jM87p2lmOq6H5v3J32bG7y47dXfaO3O7y1uLu8mzp/+8uL2x3+cLi7vLWdHe5f4GRPm0/QHeXTbq73D9OvXeXwWh/+d3lFP6vJLvLfWGQAb36gbm5bPIPSf3ilX9I2l/6P3Vz2eQ3l/tlyd6by5iEB+Lmsum9udy/8TFbOsKby6bHw1AfOKSGqPm/d3PZZJvL/RO39+6jOYKbyya/ubwA9uxrc9l0P8n0y0BHdHPZ5DeXF07ePjaX05HevwCj48hvLifgHz6b6chvLpt0c3lhNlNG/yO/uWzym8sLps+R31w+4nbTkd9cNr02l/u3mzKufABuLpvem8v9M+oDfXP5yNtTD9jNZZNuLi/UnnJTRnhgby6b7s3lfjn8MGwuHwaT7EhuLpvC5vLCWeTwbC6n0Fw9YjZsBcRwpe7iss9EXjvykXxMVMblehNV2lG1HdWQC6IBXO4zUb0dNZB8djSIyw4TDbWj4XYUtKMRFKyORnH5pIma7WgMyXOjcVz2mGhRO1rcjiaQq0ZLcDlgosl21ELyvGgpLq800bJ2tLwdrWhH1I5ClFEU8QXHpY5qR0cj+bfRMbi0TXRsOzquHa1EbiJahct+Ex3fjk5A8snRibhcYaKT2tHJ7eiUdrQaBeujB+Eya6JT29FpSG6M1uByq4ke3I7WtqN1yJWi9bj8ykSnt6O/QvIl0Rm4bDfRme3oIe1oQzvi2IUbea9zO05JbqSwM/W5M7Y98y3te86aiULdAiUa6Uz97sDUG//j3p9x6QidRas7U5ev/+bLX/bY27mA2qiSbziCDqvcNKBaZ+pvX/eOH1312e9zeY1W0ERnasPi/Z11G+7kggDTeQqt7EytvPn5+76+3eOjsytoA63rTD3+PVs/v+Ex+6X/aGUbXeWhqBHRijwUga2SQVFjqgKQBuGkyUT+1gTJHY8M1aSGoREB2eDIQHLL4j9GiztT8VM27jn6Db9Ftzjc0Jn659u/5z76VsAnrONTtTP19dsedfyrfnWAy6rUoOHO1Av+vvz5Zx19Bxc0mMvy8Pt0Gq3tTH1n/d3bL3vWGKM9Rn9FD+lMnf/1p1zz+Sa6FVY7mg93TwVnX1Dfsf5+LmvRCXRyZ+rjd773io/cdBcXgNG6aOHnUfWZDxmYap4OVUxVng41rIrl1MrTIaDFNJanwxjYn2pULdJhjII8BNU2VbvoULWkQHydYRrhuQAn8Ly1lRBDwmaLqZFvx0CjJd8u8+0RGs7fHCa541gKDvHVV8oNSLLBmUjyZc4P6y1H/H7VO1Phu//pH15z4X6Bf5CGOlNP2rX/zie+qLQR8EcDEPudqZGt3pnPug7Ec6lMlc7UXd/46uaHrvgRF7CwKecn1KclNMlMcttfPe/zJ6LbCvGZlM7UgZO+etonz65ztyJ3RqnZmbqzfPZHX/c9zPogztt3plrmrZ/66Tf/kwsgiuYsjxFaRcd3pp573urqI/+AnkfpRDqpMzV56huecdQHf8kFIqciOqoz9dqzJ35cfieIME7H0LHMJ3s+87byLT/hAoiuPHEnaD2d3pkaevranQc8dLuEzqAzO1O/Pv2GD5z7lKO5hsi1B9GpnalXzL7zhsoVd3OlpbSGHtyZesL2L73nIV+8lwsg6vIsAqGHdegXWB20nrtUu5gUogDznl9FLrgtt4rASh4Ill+PVapQPb8eK23Mtp3cbO0MYfrza2e0HTVBpvwqHAchc6sQE7ekHU2C792iKKtQNU8rtx3hIORQfpartIjGs/kBgXlUcueKsiGq5ufHRZXuJYTWLth4UKICDDAPMmOzYOFUA4uVuQeLuI2VOt4mqTvMdSfgais/ostYNvMjem2c486NCHTqNMRjohP1l1fOd+HRGA3nuyi34VAj34UHAKV9TQCGx6tKvkJFF3g0gDoVKs1VI2UKAIXc9vk2DgAP5isMpBLC5dvjRfFRJ7ljrIQYziTEIJKYYtu4znlPa9ck6VJFxYfOd4ULy+TDwJC8L+0HUgnjcr6uXZv6YpxKVKe6NydBeibjEsoT78H7LoEPv7VOiV/I1e+qiAXu94g9DLM6OSwduYkp/cHUws477GKqd7vPKoZDT7pbueDu/Kw7P+3u6AV3l3/po92p823M3YHU02+304UK6sWv2Zv3hE2V5BC/sX5AJuS8o7yQLz1MoxFvTGYBMWgjLtdo37jziEFT7znM7T+5eP5hKnqSvopXsOnR+dVpamWSwsW6U45Pw6BOfPH2gD2Ecie2GAdibSBl+N2MgxcQX2mLzFLCOK9+F8NCZXvgWzejy9yN9MB7Aeej68QbPVF5S4S7dSrDyv5jqXBbh9gi9x1gMrXWORHAqBeJhZG06OTEgT9hntwksm+swZmD31/G2OQIW7EzzqSIP/mai/KRRxzb1vrRQIGXJwGICVFMvnw04b09eJ2cD5YwJ+qHwzrh5+wrkJ0skln8M1z9xoJnWcc21dCTZOTdPXndHGYfY391Fqic9I/nt2KEZVO/bKC4yvflV3lXSHH8e0rmiHPN4V3/qw/v+l95uNa/rn7qvfotk1yqTNJG1O65TJJG7TaWTS5JyOUuXCAUR5a+54qE4kCZSGDpnkqCWZvMCwpcVvcQChsPj1DYeFChsPEQQmFjJhTO/DMIhfVWdyRCYfU8QuHS+YUC2ibrs6IrtEgJKxNCP9OjRXeGVnb4mdSIyoeWGwlcPvzMv+3SIlwe4iLJ9FMKGE2TnwHm19MO9SOypUXH9mWqiO9ldFVVx/seXwy89pdJxGBZuBm4l4+6WHjg+iu2Cw+gqz1u0hV3NKZei8A1E6GhcvAB3JqHr999+aW9+VoixaWD3aCDYZmmnvx7yMOCGq4nQnFfTih+1vjqa9dcmI+/bmyFEmB2cCmFLi5BmHnaBVVR1ogEaQ8/1aj09qiipKTKY4F2kXRVcgXhGlXjr2Skww2jU+uSQ8jULO6TWVh7eIeGe9isVzL5aO97I4n2Xt7msZhX4BCVR2CPv3R7eTpK3oi4scs7Ynb57tkpy9cVp+hlrl6ROpUedSpSpxpfkI+f6KcvVuFPnaqSKrarTcfSPW5pYDSsDPvllfUVL0kXSRdJC/bNdzDYAynYfg+w41oX5KgW18LaXOht1aoCHw+d0y/4C4P9boa9nsJe6wX7aBfsqBaP9oB9tAB7688He5VhZ168+fayJj6LBLyJzCYl75MSfJGKBDya7kYCnkb2JSUflcrXr5uOKjaeXVWATpTGmwS8KgQk3IM0Yl5RVLaM5as3jAaDOzW91y6B6sZdwfslViXWgI/PMH3rAEPx4d5qLxDl9isXysUrBqADOLuQ4Y8AwxpiBLjyLjDet/ihg6lcBii/eo9Jbx54r8938d3RR3weKV6X3vlmSW/s0Rsr0hsn2PJZKa+k5Su0/Fcf5fKKDfOnStLTO+2v8Z1BJL7CiSEkvsSJYSS+wIkAic9zYgCJfZyoI/G/ODGCxG2cGEXHGTJNQhBDpx434qOhos9pSfj5GlUsY7IoQmBefC7KP796Eagh88u57S9G7iqd7kCn20mnO25zupILQwhkBJ1AYoWT+Pv0p1ORSc2piZOmnvDbsLZxxhauZJoeAENEY2m1dtTYhSFHyYcPZM3UJWOfrn9x1owtHuDitNCWNVPLYAZux7J+w2ZswioAPj90Be7I25urvEh5gnz5HN3JRH2Dqkm9fR+cUSYMx9LoNHxx+QK3XRpMNWxA94zRuM2OcTbrbQys6k9HNdC7gBSgrwnxqdFV+iXUtekvoAbSyt2JBwzlcvgBeu1tPieGOCgrEvAfdKkk2LrbjgSW8+8+5+ua/RUScIz6MyTgGvUAEuCoryO+xTW32dxXkbsiyX0ZuZ1J7ovI7UAuvvaL5elwMSTgdZyY4MTsfk4sgRr6LicmkfidPw0f4mB3MG8akXwwruli+NLPuIYHWdpwZOMlbmxGPPohanF6v7dZNjBKspKrVqq0L8XGBt/eYTZHw9PxyVAe6VJjjqopE+sbIV+goMrJphS5seEYkODz/SiravpbnI5dTX8N5WWka1gLNY2GWUlIUCbXLoMiLAzF70pYqDpayLo3lfWDgKLOw/PgoZfgovoiAXW1QEqeAtFgcDVVTYH0YHdVpzPILEg5IU91wIqXWOXNEheUfPtycIgmeLoO8GxGEqRpCfEUBwScu/D4BfDAZMaJM/fywVCozItCuQcK7rwoqIDJo4CpdhmFikVhMaOwx4Ah8GIBeGAlp4CMkK+qb4+QvSYMSgMKtI55PUqqCVihn1B1AINq4OXANsQgI9yV+kDe77HIzblmBw9bH7JWb1z7m5SPjcweeWFF5q6MSLSuiMktkMqw6BMFGG93BVY8RGyJt+8vbVFAPcVktpRp8YmeUtiNEfCtMJ530PGc/HjbDcZLBrLj2vGC4nhAEUu1gjV7F1RRl2qzHsfmjDihA/p4IGSdPOtYFLczX3C+bYooVzOMG90YUz2Z750/TuY7MRmb2SyozEZhqXsmMtGfzgPNNw0S+Sn0EsvJ6TExwNejkXBA8PXEKpXTNlTfEroC04CKAqWNEYjKvWgTpLQpzglMHH8esgwI0AP5AMwj8awDttUwQBaP2TweWrTDFIrQexW9e7ZrDP2y6b1d2nw9a/M/QGhkSpX83tXuQLVdalk4RUMOCm6b7lFwct/WJJl2CiHSY/TH5bpFywMvn843meijSXsrjKD/1i9q8dF99PkYdPnUfrs8dH+YJjtplhi9IX7cn9p91NABdogl+LB+u4z/cfqgvVqbZc/LMvPlpbBeepKey2D7PFH+/fwstZ9Q1YrlRs6aa0iLKlrU4i+Y6aKJVmynTz9d2lmedb61H2qZuOwbkBxzn8UkmlZYszb8yRBn30CZmyxP1ovp8pyGUtnGD2vPjbAUsRNDzrktFSLOHBnixusxcBXrTaL/fQtLMXkuc+q5Liv9dZluyeHhT7HDCb0ymavChlXOvopmCFqHkSm0gOzF85EDfFGDxZIreL/Bw05gWXe0ooq43G4gylZpb0KSDTMzSuwK4QKL5yKwEvez4vx4xTmtmISEV1GDi846Pz6LH0a4j3grIM0o9GcfzyuOV3+b47nYAuK/xCM8YSeT/2fYImf3Ovf6C+Sh3sF3lXDIK5v2J06Hztk8oal96ZGrkXC4FjeebyPZtRv/joSmesu7sq1FdG93tIZZ6j7YEROGfDi09qn62Hm6+LdP/495unDi922YtlvCUUX37irktsKy/WbYSnmqWmliyN/gXHsBXz3xCnkfNy+LoV3/g1PBTlkSnwoBZXCb+zCreIKyaNAre8eAKe7ek0P+bnIvug7DRGUbmmoljx1W8+8jotqcjmo3hgNZRwN4mBqg6vPwrCnnH7PHTY/lXUcj/EDDgqQkVWba6QNysnGfi6F1bT5OQyuqzYTZq8a+MMOmYxE9g6EPAp3pBR0q1fh2nd/rYv7vcqs6/679df8cFFizMArspip3hGgYLHCjRm9Uo8EcKSJemoout68jRXLbRwbF3IBqNMAtaxKjaTABivrCbtAOOzQTDh4O+kUOzYfWcI6GkUnRcixaeruAFhDKOhpiKg9aKv/Yb9SEvkpr/d7d57/yVqFs6AgioYsLhZ5QKfQF6LBsV1BFPbBX4YG9RlVs78MMRWrWRFVgXYYr8ZwTcoR6kXLM+aaoZoPKDOSqcJY72xQN4NMDdlA+gOdO9c0L+5r4UiUHF0efX10IY1Fpu0Pmkr1hQxkWBHFlPGM5dyg9yRcNzyHPcBdhQZkhS5lAZz0ckQ48THdjJhqd08foXP++I9TcTXXl2Bo4tjKt0eoCkDAgzY5zvRpSCEFiU4vTE6XRxJxRJm4MR7JRRgDpSBek0RLb+WRxrBYtsSMsTcdaJmNVMdbyOWMtn+uHuErL4YI4Wi4vCGg8465hYdPhTrRihtNjzJiLSZKLZtpcjK+S+P4ol+RYcjk8DWfZCRrRPibQcJL7WEaSXGr7QGtaPtOW0eOq7LziUrVHYZMzkx4uHrPVNvtczSw/6zfA5Mmfu9W50JMwiM7WwpJ35syB0x0Ksn/plxcJvc5/FN8Zunuxy7Y3rIGLB8CAwrdR/SLm6QpYKazrShzUlThkV+KwrsQKVqJPFVmJAd6JyUp0MRhiDrrF2E3VTjiCBYWgSmUa6CAQ4XXhKNWvC5tJgKUheN7fFPl2oQbFheqTuymqYKORF2pFl11kNJZTNKqOtg01JdtENscwI51wUZbzOmE1y5U7PAdDAm8khgPji63qYV7hCFa1WE1nXtkywUNYkItnepGuGHzIpaauhuF0XRqsS18kaG0GLI0KvPitdA3IpPcAhRZHAx1yEIUocmZooM08jvBTaDlM2lcV0nhMBkv7Yipl94JCX+hF2dpy8BAuQ1QBB1eUg/PxUWe/KfFRvWJ81EW5j6++lXx8dXT9743ZRqbnV0cOf7iiH+KT0/UBkoMm8Vv2XtLL7MN7TlO/17FnpeyaiJyi8Xip7YXR+veLLy32c4k1H4tqs/vNe8FQavdacqWMyKW0O1pwd4XlnkQO9aVfRmrLoNrdoIwTl2RwvSNfMUAISRlfHHg+kcBpoZsOaiN4cScPGzQ2ICN5opXaoZd5/LAWgqcK2zvoj6P/Z7m0tM/6ac5o0dOMY1/uvvJDHtDCAQcqBONfi1vgHT3CQecINhOFOqFjuyA8UjI3wn6xJy/q9xuTfx/uZd8J2UaIO20nGI89KL3iQx4+G/D4jXj8xwpPuM7waz/kTQe/xekMiBo1+8xu/QzGxxtzA9KCDxE7OY2IjLbkFiCODHZeJY5REuXfYlCKdxRGIR/4lCxUiH6Mq77C4q49vqYRds7NY6ozhnYl4GLIABuDx+Ln8eAAEyDLdDly86HAE4n6p1zXY4vNzYgDxDi1k6eLe7LQRM505GLV4RnSPjTqCaaUHhgtmSx3lVs6e9vWyD+7+iS8aJr7H/nXDdVKxnE9v1ypiiByGcTglrfAv081zd+k33tUkoKofGIJH2WUqvgJgv16vzzPfSqfUJoIbtdKflZppa0UvOFyjOf1uLND7rjdd9BnELxebjv19GYQVuR2iOlG5agc/ASVkEX4+OC30sRkPZ6QBxU/E/ih4A8QaNyz7h+a2Fj+TlmDnE3KGrzMhcYgVr3+eJbKWay4svKKfglDfPH0SxhXY5k7+pWMef8G8Fxco3K8MvjNDcKf5TSWU30q65PSFUWe9uJJL2ms8piT8YTthJOUdHKsAH7NH01wH+6BH4XSafF/orh+fHc1ZYDQFCqSqa/srkqOUrNQtXdFELePwWXJvr676km9q1pmzNeF4Duld23ywJc96o/lqsSl4I/CDENSyNnfXV7I/l6yjzJmq9UGv9omAaghnfJVsAYRM312lxs75+Ne8C10PFmXD9gGOA4pDlBBvzj1SdASS98E1wjlzbQlqt5yet56yPwx36t8sSziI5q7bZIP7N5f63Lv1v1yqT36Nw+XPrzQiW878aEvJ8jXvnzty0/6gnSmpC8/68sSyBTpZSy9XixnorvQVTuDv3vJf9WBL1ELml52zho4hR4G38eHdpEZFInSkGCedY127MiU1XOTRJ6YbT1GzXoc0R6Vd4KfSu+l4OdAT0YgRz4UDX6Bknzn9fN7dy3oAJ50iKjHEMYO4eggpeB9WBl4MLAK0/QY8TmHQmZ0/pEsMn2O9BljvIMP1UyHQscRGxPyyVp+YEyCjg5VLt+b6hN5upDIf6Qs07LOV3mOZQFp7wRv+Z82NKKXa7nWAZdAqAfXXqKrGuP1RGan6ZdSR3XPX2gEQUCPJgWkgIu0V/bjRCYi7r/+EFBd5/Se4mySnXhM4EH3MQs5VaSOhcsTuEKHPIUGLTVSJEW+YgAD20GYzKI9iYdr1NMaUflRMDrxcjervM/YJxTdfIQ6xdWsckrrHPVGJ2Hu0nyAfJDlq8hXbd4+SyhH+JD0KWSWCZnWMkUwVZ3CEnbYdYlxuyYKE+Llp+rolHTpFEEtKHcqgXSeBG4qpcADbuSDLF9FvprmqVREw5qLmGekPPKTqU6xcSzBY4YT8Qe9OWLpUtd1eM/EWBP0Wy+UuYGRCaY8I/4Z3lMpecwgjC5EP/0lfx14hnDm1TcqV2jb0LhzbU1zYumMyInfum16qOb4vu+5vm8kZOUbuOh/s/c3gHZdVb0ovtea63Ov/XU+kpw0AeZaBG+Qqvnf138N2tdmc2OJCNh3L77X+/68/6tSefUkXosW/733VhJogYCI0Yva1gr77FM1ImhUMEFQcuWrKmpUlKioEasGRYgIWrXAf/7GGGvNNddZ+5yTj/JlKSd777nmmh9jjjHmmONrxr75HQRhkKEqAplrftkFobS6X/LC4fnuIhg9gC6frnZTmdLBhEvo8Qquy98DWgi0Z141PyBgouVczWwk0MppBG/V+qwqQ+T0vtLrjr0DgAk/XrKPxbtdzkn781ADAf/8487lVqG9sJaBisPTj4QBDt5YCfMOG4E+43Fn/rePRwg4D5bHoxePwzscqsC54pOmpunoWrzCUJcXyT2fNr//1RwgRr8LRkA3R+ug7lEOlwe4iYZyT3CusJvilAJOKK/ZN76VDh7eV6EH9tNQVXvP3ffNfZVxlMCS9qtSHRhD9IjdFth2FJkeC9MNuTDksNl10WMm5tHPei8adyUrksbQCcQciZOHeANNoQ2Feqp0+FFrBh7XBq5KPawmZexKfVZEQBb5+kF9+DGG3/P4ptV6cRE/XeIjdMwx+0mpEOWI2mCK4qUJVaPwS4JFokPDXtaAo2vBAcjQwVr7pYf6hXchIouhm4y9YYluyqKbGv/Gn7Shm/laVQ+5ekQrB4Pw9512XokqDFXZbSQt4QWDZbmv9tEKFICe9sxVnJiCZ8pu4bKVOv3yOgiCSqJRraZlTtEJf1+i7/VIwyN/Uiq73uJBuiQbxlJpWapiC/2VUm+r/ZVVfNfyeBc/Nq2LfeQ7PP8uK8f5rTFFIAVrpyGtEd/6e6AqJLWsyUdwv1bsVYxemDsZtrNXexDR9pn+XuV50V3liMT4gm+qHHEeVNMI86hmNot1eCuCOXKYXANWYXFySQ/ZaRGsCqnYzFdpnuEUT4h5HpjSvfAHHE3T/2WmXrae+zVdmqqmZZaRjlDvIz/p0XksQhVBYFbJfl/N/dLStenWv5lbt41MrTsGd1l2vab1/9hcNu7KWTQMXu1X31N84w/+zM/dUI7+qm2De271nnzDtNnk/23QqW4dsPfaknSEgKHzd5TrRd0VHeC19lenhY+9BSwJeGCU86emWHV6CfwfSt28w91h3zA9yrrRz4mpMqb0bb4xU/Ce5NMTxoslRorFIjRNgwWQ3j9mnddpT7Z4kLRrgYupHDZ6o3cQxX7sKvZNY6zYj74BVvzAxhgpEnkpsrjm+RJBGxph2Sal8lIrHv7U92FtGbcvN8OxtlBBRY/htAnrgPff0DDEIhDIq1V232FIByXF1cr3jknJ7Gxh7aruH37PLCcJruUBtLVWrD7+Ve6bnn2zrPHzf32krQaf4ddBgilD8Z3IYOQbczwvvC8SClXZDBr4M9DAvxg08NvQIFiLBkoH0zwQNAgEDQI/OBwIKY0Kn51fzCZm/ORnOJx88reOzFgOD5eN38C6y2v9s9eb6V1Nv3zz7SXfuQxtqvfdBbJaF6SQlRyuNGPc7k/v8sX7nKj1hrUX7x+9oVCIQ8FycC9KG0dtStNkSkkA5VkUyPTmMBgPLz58vXmTNcPn8NUb70Rtov3zpjX41CpTuhuWywCgCzj+MI8EjW8jn1q0nieUc+iuqoHyhvt4alNRtflQuFZtZQIw6DAYUtDluIPCDg5JZXtRvb2k0V6ytr27ZrenA7yjAH9Vzs/nC+LZXGuaypDp3Lj035ARp/NCe1yykcN0cHgjhOZC0XXIZjGIBRq45mSDqOJsFB0LtffcNTgFG9TJc2LL4gd+qcPH14oiFSmKoW01ettq/FEO7hJC3oULsNzA79uTkcrO+D7J40LKZo1lmSps/To2aPDIcVrxSP1vMKWAPalQQBrMd+wZaGLnQKkP/JFZAxp+ufEkwKMxEwROgUBSfCUCQ1N0ViTpoXotqL0T8CiLcEX7J1chCly4nvnrpKzFh/px9vV4GZVzvGTq8VHc42GZofBTuJ0o01SIprJGW6089753vbrVvAhRMPuAClVlsXfhKHyQOV8HnA8LDc4ns2KVDnHATskBOy4HDKgc7MqczYUDBrUqWrF9CMxPjHaR5IGTJUQL1RIqs1i8gMxt6DyFwTxyPRn6hQYYZET8isZgJkGEKcunmMqLRJAhoS4UbYkApUtRTEM6AI5INW3WMzmJk4bpOdOxDbbn4xFfxcDhV/EkD4HvYFjSAmf6574yp34m5srSh6+xsMoJtFXjv3r3q9sCbbNRqez+2TeyEv3H0lCZrc0nnz8wROFyuRIdQzY+7mNQjeMXwGwKThuO/GdjZp2rG6ddj05yOHydMIsIVcuNYfznna/H3oA04Lw5jH4YWhntyb4Q0VJF5V5wExZXBBhXZonGaMOiHAuIcXO7wLEBK+vJNpZg8qmOUJyYp9FXK1qbyKwNdY0W4BllsMiJRqZJpUwUGdK/hRtsDz0Lmh50kr1yJ+jqS3h1JK9yFH1ab6DbaKDbaMC815M9pGpusdpg++V8d0M5t4vKBrwPtoy2zburZbRaXr3sce5CXh0S+mP6F6OtzporFfO1yIuW69HpR1Xe05C+Vn7KEXl6Io6IWJCyU97Ari+22wi6hDowAh1uMCPHYYLj7ffwqy4wNva10B0BRtXQNTqqUkIwH3SH00KfLcMRFqrTzb/aPpz9paZbtipm3HTdye1M+ZA+kLfJgNZkw9DmPbOiQ2aJEExKfuVV/Op5RikPrXZdMlmnB2pmTEo+XjmPusILbA/YhTPABd8PS+mh8GvyA7dHXlxWSYpmgq/oXGcKZaORAHCfNY2KxQlm6bzhjIzkAuYB7k1NmFEVknwjMCMCbwwxecC02tSCalPTAfUju2ssYkDSUxSChHXw8qAMDAsGfsfjC0igbHMHhOEQVSjafwOSZGDYx0ZWjRODGuURWuUBRRgHXcsjrsMRwZCkIK5RSiHxio7MBphACuGQMDmNQGAmeQTi5v1BEIl04UgTCtJEoBVJEyGGSVJEVEoRkStFhFQuuVWwVzaOWjhq4w8ucgK8RB1uaL0jHSNarJIqwnKRQ1nkwC5yUC5yAJgGzUVWaxY55UUOscgppBqcFHV6qEhhi1J2sUNZbB1yFyy7dHllKmkTwjYvd1gudyjLHfByu0PDwAiO8CTi5eMWw3K46HCRPGxTtMqLmdJIFOp3eV+j5e6SDNTNE67VhYI0NYttyh+RxQ45NM3KPXzQJTkGmKYT3Z1wA/XirBbY9mtRGJZ+otZNo5mybFSodc+xQds5NrAHDRCIbPlKq9rJNTRq+9LRfvyamoiiILLY0ysX3NM4vfJ6vqaSU5AD4hZ7cqWzS7m1kg7RFUZwKvoQUIpe5wNqwKkQktoh1sb56FQH1dG06E5rzVFKObPIMEylAD1OvdhzV4vUqklj3uCmRVZpbSS5cI9gkNU2gayxCWRvzPt2E+hnuqf75blNO33ImXpaxLYXaj6+GEFHiYykE9qC2LyQMHACgUxceSCT/zS8gwD8f8I/2BfHsvhmmV9MQm7aopsKBIlC09i/vFv0S/yAA2r47IpfoYNSgnuQbdY26zYVUlP+MmcYChsZwNCavPX77zzS9paWt3T9LTJ62GPxz8ZxUHe7tikAP3f0FLTQU3jx9BQyr9qInqIGPQVCT/Q6n9vikqwsPXHKjOpVjuilraELTFwDCjW+v6nOiDgzGL5aqHCSqBqBZi6BhjoVAk0qAjVvrBY2DJLcw4ukpNKoSaV93sMsGbX5ug8sGQ0ypDetqLTWUWKptNbLxs03mYAiJlBqOVNQaSre1NgyJnm3ItaoJNYsT9Yj1rQk1mQdYk1nE+uIiZXY0gx6zTai19ShvJQpb0N6tW/tkbf21N9ys/ip7PeiqE6wF0uuVsOjIPA2yVVdLLmev94l14fp93MsuZ67vo1code6BHJtJVN10WRqQeC5ZOpZMsVX1SBTtT6ZekKm4voBMm0Qaa8k0kTIp0Bv7DkSVWrj9XW8Tj5F5l/sua2DdYiqB6JSFVGxI3tFVN46ROW1E1Wd17lkQPraiqhUy7ZVgn8zRBWgtYqoAiYqtRFR2bdAVAETlZpJVGdDFRpisj6/V5iagk0Kk0JN0cVT02xhMiBqKmTtG9TEr5Um3xjVOXqHtg7B9cTF9RKLUpycBOvjCusTHdewPi0RPi4RPq0QPm2T8OIGwsfNQFNPd0uE528BMD0oMTrJYxKG4aqWYYCARxO7eT2CErvjS8PuNZt54KJ2snnUtruPizMWtTdLEIEj3wXZx+m+JGua5ANfgYPbY2SZxJkCfzhRs/sPTs8efVViAqKTLClgnyUKEb0sKKz4sllEvYmxWgybpS3To7sgIZugXmnKVHhsmH/2O90IgbK8PwaVwjr3a5sKGD8TI/dU4n/o6rMjgkbkKAb5x/Ij+yiNKO04qEOOHCtarbRpEX3RIqaa8qu6WsRUKBmghT9R4fbnjCi3KJVHmSswsxpNxOXxiic68onXKjJDYCbrdskqjngt+X/JlaSuwh6Zn4/+3nt/5E9+7d7j5mfiPl3idNO2glz462rBa05X+75/X32DjFYAyP2P/tTf/+5zvuUmKEd1dGuR7igCHZal70QGdLP+txbZjqJHCMya9KIvHEY8uNq6kO23iKfFwKl9pmM11516gDe6wtoG2nQXAH+lazUthrUmvHF5LPeBxax2wZ6vzfCjdRW+LVeTipofNDZdX65ueTWgV/sX/Z7maM2Les+ADK/Kfc3aBZ3S8dpzwvCiQbGPL3kWtxy+3rnFrhJd3MDf3alG/khLc3bVdQ9kXUR1PXlLhuHWod9iWj/qlUO/xDUdP1wNFVliKvKgVmtbbWJGaIFdp2zz/d51X4zdF+/xHAkiewCxgDVeg3GKwVsMrx3iQMLV/ZKrd8DVO6AHGzEJ/+fCL5dSd5iLa5Qgy2HNYOmLwVJJ9vO/fakToqpKg+VP+V50+HOkIg7LzEDY4GhTY1aKFirDcSB6YJNPT/Y7JZBRAhk608o5RnNmLqvsDMa3mxcFQorzGSgBT6kD9bISSoEDpWD8vS9rhRJ2q9joTbvh4TKhhP37fGhQg400qM/ZrAbVOTEWAFfdZ9XKtjUrekxaao+ECWbb1njLR0pRqDI+pbDldcejPOOVRXM9GKWWiz5yptaOhQMsUt+0lQ9pdj3drVP7qEHto+ZxbiiHOJshfohRk9En1oO6IO6zAFAdKXuNtnvNtvtjwq4OtbzDqklL/WgGz4WMMNbK04M85hMiML5mNjPDfN0N7CyuUzHOpZR6HEPNxgFrY+J1tDH9Vm2M1Zv2Z+hhBhvJ1X1Hq9PfpN7UvqXx1gZ601+MggBuL4aYrE/EJqXMFrwP89gKb/+zdHA43ZktvEUWs8HEGlaCmhAGVI9cqa3pmYAXwq92CcEx5ws3gjG73hIjal1iCyoJaz0lRqtRGVmBFuV2VkfeS3S8gZ3ZTYPS0SkfLnaVralLaoEnZ1lAEW7e+s6Tso57l/DqiIe+odzR8qo2k7+mnLyPyW/+gM2JgctXww1ebfNVwM4P7kB8QXeeC20USnZBlnid8oMWNzz8/hCc7ppmdCUWVt9aWOmrV/O/+5BjYQ0cC6sZR8Huj2BsuySDft2Mfk58w8wXwLtuRo/EjB6zGV2xXVVV+VXFruqzXdUZkJkJSuS0XY0LgxjlIVrhAYTol4zsecyYj955h+LcFWKWLqJvwZMa2ZqRVUIcDRHv6agm2YUnS61LbI3tOFRL1WlpbL9QGtv9LyRj+4cu3tjuooJqosLmjO1AiZBR4soZ2zG0oI4UG9rXz21gXyf3qKQFK5zfZtjliHnwXViPspqKrkIS0zhVtg9JGCifA4WaJnyu1mbCn65vwn+LUooEUZtephG+0fAutNf82PwxUAO9YEdN0xKKpiXSQLy3/91LWwOhaowdbD2+GN4M5mZyl9wkrrdwZbZEGNSTvGsDONHQI64EbDj369vRpnm6byvn/iY6VqssSq3kvnR/wEUJA3J78U9LXqa2Gd8MPvHbsmov+dyvWvm+vS1JbgNqXz2+7Dk4kceNy55j4n3lCsbP8P7zbEDGb3NXUE3zoJ5hTDud+43O/dbOg9piBq1jUM4Y/FWSsf0VHolafzE3DwBe0O/zfLOYkmPtqeqmwm8ZDHY2k4HGwEx7EtaLj70TE9aTla/ejFf/U79TVb6Z30Q4WxHg48CKCafj8BMl2gAlQqyc/Q1XCCLI1GZIzPN99h33xXfcx/aT+/TW6PU/xMiDH3nE+1ZM/eUJR+CkNKe8S+PLq7D6GK7sLc7m8Wxn8zGp+g8y8prtS1EDuW93L21dAHX3GZ1vgvMLPpw7JFIyhOuuAZAZVcpQzPs6A9SVedyDmbE3RcZGBhm58OkML9AO+2TKYYA055FmnXAPbD3ib4oYPC9UZpaAOf8+vn5yD3YsaarRVlq2NjWD7JM0jDJbgNOnLymbIS0RABK5yf9lKoDk4DWS9ckKgsW6RLph8k0dguFYwEU1ArVfyVSB4O2OI/Hk1pNXcJ0hABpuzWbGjEuYitpA4HVGCoSCjBtCxvV1CBm34nixYzSL6eprHfBeCvW9S8UHhIq1B0PwTS0RGSFZGH/nZx39TpVd7l/9gOQ3/NXXgJUDG+ZNBGcBzFsB7bs3XqkGzJWBud0EZAEZ5n4T5v5amJeipsGTDQ5pzbv6FGAfAfZKRw7sw4ZxnqMR/RL4wWzgB+3AV23AVyXwv8dhojevz0RvbmWiBAQWcPn5AWaaN03B8NdlmverCFd+leli6eV2AZ7F91zV+WfE/DNm/pkw/0zLeLwE02wR8pPZQj7fuwFS4jSxgWGXATXCN4aA13olpDLZM4gtFVkNOmkFHZKumbO6cPK1j9SP2U074ETD0Mp9kaExTpKRoxqbA4sXNsfJ1WP5gZpuXalJz3RM32hq5AcinBCifSMroPZpg9Yph44fTQxZ+pS817Xk+eVdk1ej/HyV4U4hJcsw46jG29geb4NuXeqxUe9Ra9zrw59+OfJQdhiHqwDNGgetXmMr5n1oyMr0zlP0tdfla+grymM+ihhe+UL638duwOBa6WflN17RQj92SP95H/UU8w0D/O/9RcyGwRi3atduiEodD+JYxxP4rSb3VW1hGLWGoZ5IVqoGzPfVPMZiUgpJfCCWirEjcRNVRk24RyWnmWi/NttABNmuBm784Pc7evFuefxgRfR12pOuSWdtsKZC76fhxuhotY1pt/hCcFil8JjxYbdlsT/IxMycTT+uDRmEKo9rC9u+fq966KXt61faOzmuhia0wgyoi+3fX9fi1ZbCV42hNxKdCxG6OmkKw6/fUeJ8LU8oH3PiusxcnlhvwgRbNh57p23kBK1dDNsfsla8i33d9nizKAhuYRLeP6btJsiOqSAQIYl7v020XfzrukLxza9+tXL4mnw31qYI2WsrJDURynt5QvlJ8pReB8RMLcAwQSMeTgwWoYsu0KvpcdxuZntZc43vtpPtgsfeAhwaHwYnJMpMQUMvOjmd6miSR6zSug6rRvtQxOPbX/gkNdSUZPsBPWbaRQymGVHrRYpWfNLq4AZ084Qa48c3YzuUfZB3ro0Nhz9wpN1w+LKL4M2P8+bHebN0dHsZzPolwKJZheJPv+SYMgv8G3PlPwkiXJYr2bo2r3QoWXi0ho9G7VwnqmXU1hEvfYwvnZaVbW8SrLm9SWKcLLvfnENwZqUH+C/zyrxXZqaPsGkM0HEvH+IjyUelXqQ3Qy/SWzcI38efkfFRz0eVKhwf18k19jdWsox4VwMOkCsElnxuBTnl9RA7ST5f29VUtavFBHMLMt6N8mx8GGejeT03yed4fa/TWT4P3iebDx9Za4GO+3VXZ9NiTifmLVyGM2++ZeZ91nxkZgimiTnwpTmyBXdKdcmNO0pOVLvnwIde29fzeSangAx7ZCd7Raw8Qq9yR9nt7ig+7yjsNnanpXplLwsvgkvbP0LSBhZB+6ahasQWOh0EeciAC9fdNPy2TcNv2TQUmnI3jZB9q8JpEdY3jcjZNEIdTsBh1axNQ2Xgi3bTMN9XccQVCQofdtNQdtNoV/1YwTtYbdFQuXdBgLGBq3NPpJQed6hKS+dmXOax6F2hXqC3caN9S+UNsyAxf29PuxNWGrc7K763joRi5YZNTvjZsof4G6tqEvu27Ncxnni4YBPyHOvNEtabJay74U2Ek1vcrsP1tgDfbgHtsMAuvp/V5UZQy177RUKHj9NhU8j6YiZHlkIunxR9O1mfcNSSIt/xtCE9uvCidyXtQiz0mIAeY9BjouPHnB4/4QcclWAtBvsBB2FgRr9XKPZn98x7XAWO5ORxjErP3kEep03THSSC22siZ2m6rqx4t2SlOOKTOILvdxYhy2OUQ606c8fImxTTkqzg5D3Cs5726agbTMihC3B08pcFxPnwof1Kbol06Aott63kxueuWszrWDa9qYcCkt6KgA+7BYp1QO/gYBygF1MFh+4J3vDkjVvkIA2ELu8maaiJ3xom3ksiinLyjIUN/+Kqt+suQlUM2AFe8Zp7ZGLOKtSUeuO61BszlA1Q2wmsvUlIve1NElTylKXeLgGgIe6a2hB3+zq+xoi7A9ymmOTDcq16M3TbvXUdWJRYAAPGyHwE8ZjE3rh2AWQLVofA6p6L1ex+YjCrjtaHirCO13Nr8Tqs8HoO6z9Xw2vG6gQXIL3yJyvdkQ5Fys5WIM3qwd1vm+JWwWKOraJAhH13FRTNkUAhn9BCr8Ha7Bkl1l7vX8cadAjNOmVxOpvoTPd25BmGzKcSU4hBxnpOk/+zjtrEaL5c2F43zCI0LDHZu8JAkd5MbZCe0K8dD/3WSDzGmvZshH7dI/le9swMSo/k1zkx6JyT/FirU/K9NxSB5HoDpsBb1gk+qycmbBqqrK8ytGicV66eqlCa9Wuhrz7vkuKozOQQ5EgBDT/7lpSE4Ub5lJrHfq3KnD2KJn+tXzaUTFs2mvVfp0vebZBqGZ3aoVt5tM9DbSQg1BFcl2CgE1cm+MpxCjumdRoPI5XugFOR/UYGCae5mmnS8azA1QInVyt75RFTMg44advm3u44b+MLCmW9xLfxKOVOfKO/Tu7EM43ciYHkTgw570uZThY8xc7U45neCKgDipFc9hTw/UrqQB+MynyhNIkBIGx+IlUiRS8W3jMl/TvPeVYj/oaNZKVnZDM2oC2jo9cSNdlM1Pi/ufmbzszM33RLmb9pMit/kyRv+kMVMAOB/O+Q+NdVKQB98UdU9fyBIP88ZP5rVrjyBw2dxJA2LeSzxZMbLynJKCirWhD0EtaMYA9nRGbHTF9AnkrWYiZ9TuFX5trhsxMA4LjuFRFwzyKp3ws50TXw2dNonrlIvYkODaz2ko7Lu3/Hzc4xSjTCOyuKgTcN+S8g+e+ff7WRUtDyXHs7ON8JnitprppM/fxQS7muVqZQGU0l43o0kf0HroqI9gxCzoOAuJbGwvKa+Uw9StY5sEsoLr72csaOXM6YlJczYkF410pdOSGhct3BVai0RTZuUtXk8sw3pJZ3KGCTtFmk4mZ6UTe5aFxHnZgDM0JkyUcVNMLrZNmjjiu2yG6e9jfPJig4VWXYwIisFSMC9GZ/lry42WlSb6Smvnc9QnBJBUFwWUct6x00kaO+/j2z/qHu8foH2p8Y/ixejbwd+MB/WH9sH+Rq2rzuPY9Frkw0nXvG73ETYCalWeivQxWSO4VFoKcZNr4pDEoI2cYdQR+LNXnXRU4I8PgzCJI1L9mAUGURxaBaIBtDXIqSnUqUTNhdPR7fLvInl3hYG6g6kzLiaaxZeiBciq1P9OSGgjMmAjq78p74GJ5HzYAknFt07xAFr+WRgbyPHsD3tek/zNagMCOwopsBfW7MAK9tvcZe3qnNXXfEcdqyHjsDEJwHlMRLPeXiN2O3MNUSreMq467jkFv4LrsMao310Rg66QWWhTYJxrZca6RGKJg4e0dfKsYrYDw4XqFcnA/zfq1ZPOvnYQuiJ84BKhm/zEX0uET0zwYqpKSuLvo5aMqo7wvqK0F5kVAA80CoJBSqiJq4mgBXiY92mrhKJbxqWOnOJnC1y7gKbQVb13zGVU4F4Zco2mEUTR0UTUsUTUsUTdfuZHHbThbzTsZIm9aRNhWkFZboToVQEofdvIv3aqiWEU51GWW766BsF+maXZRVOqJ0SJFtD625SJttiLQKTQAGnD5hzQZdahFa0Dero2tm0DXSmUFXnwNWwwkn6Q7ySNoArvJaMStQsnm/wvOhA2q9wOGFpV5s4xuftVpr5Q3JyvsXvzrrrh6yXa7ILQ8/VB/H7s/LOPY0PBL3AjxhxEIrBmezYMItLlesW8yD6jIS0QVGLMhEVTKPaN2Inbi8YSy2gkxcq8J+1EnNR1DnKR9B4MAsiqGUH2SlmEP3CGnT2cEihSBE1sFYR9VF8XJDfIaPmCViX5zsABG+vzyxefQDSACFvYMaq6JDXRW8s/5wIroRLA/edsKBwVnpSf31G1pfzyrrHj58UVIQgTOP39QcA52xj6EI/i3z6+nk8z45Oyt7/U1CPuPZd9o7e3Dbll8O2y/1FeW1HuAB7ix8Owe+Zs53k5vY6laux30Uv68i0lLiz6K+4LySBLuM6UEVmxYQpgclpgetsWkGSBbTwwam7y69YUNB8ViHbphBIpqBWFAcdvFQh7L8PnVahDgmJ9p8+CVu+5wwKbBZviLIqwZikQuxqAaxCBBrpIOx1c3zTJLjrV3EWWNDZaUTwshUMLI+qlRHV2hIDkJFvKzvw2U53iwjXKc0wiH5RDzutDiNf+uOKr6U/crrGFh0YAdpCadqS5l2DcucZPH1V4vNBEGNzZ/p/2ozkd+TjBgw2hR+eeEBG5DYblJ08Ct5caU/5R1uyoBmo5/4xLFGj8lDNhv2PTNyBIHi2QBMzvYEHhaO7DaZtpgSKPhWTArXrOMP9/4ZiTQ+4fkckLfpiVEaKa3ERgJ/RDzr6Y7YSNxZ85wdP0AZKDRIcPlz5m7tJ+QydQ39FDDJ1CsLyp51pvt97dMFC1TZ/Z4vHpmMbnj3wbhpFi5Dz5SNE4Cy8lQRWNLggAc46jObksuk2FZnRYsNo/14HQ+QX78K2Wgt7z97/Zs1LvtGjbFkKThQwHe+fr8GGCdzD44PiFkKsWFWorju0jAJWSRZRqQ7pTlkw+S9ge7CflAzDNDmn06KVMdyyxTndjMAklBpHOFC8uRfyVPLfOxNGDb0qZExpVdmTPnU3U5Wf2tfEpZpCgEyCyizNo/6mxEZK2P25gJwiNhfZDhMVsXM0P235B/4bXykIfcmIJZncjEQ4ucdpFZ5URFKeAX7S72ojwY97JYWGH759MZCSR5+WDJe4S1TOnfOq/eocWfw+OtppF3ir4+YryF/fTcq6M4dcubvsCHMOWabpZPMg9cBfLRo5sMwhh14QfU98YPkdWlcBYQJvfntR9tu5GKvvbs9z7M0276LMDu8jAVqoUu7QAYF/qenyngrZozCLtmNKFc2YLXJQ69ubg7WUGvD0NoYRdMRwDSzXI2phQWGwgLPuFbZsOT4f+gr0pu6U5htDY6aoWUX7phunBVCAoswY2YVV4PbM5OoZEg+q5QhR9HFhhxBhmFph8ONEh1ZV0SKOIKXMjG/9MUtDnxlJI/uCEDtRXkA7exrdM7/492t1+h8yg8gwca8uVjgAmiuCBuKCGsjWAEhlhgs2ARe3QpeWSXxzoppjahchwQZgVrkQi2UmFbK1hjqmJooAiONANxlKivaDYLydAYdVMeFokS191qTEDlReyKpCp8mxkBYGgnYK6bdccEeCth9AnvYBLtfgv0jjNHB5wSjsRQORid5t1yo7Aqgs699B50LH6iaisuJxWuovrsVM/EbqM0Qv/IYfrciDE/M3yVguG7Ar+PC77FE7wjgSHVEpzR8RBbLI4vlnRpMg40RvemT5iI6r4XF9/gK4fsHILO7C9C+22xeYne3IiYNu69NN3JQ23hfsqL5x2ZE5jziB2WeuitMx45fqvgP1Am4LsuWONaZQcGdi9mQOuWGVCJ4WKfgrg6rnanoYIn46o/6EnGMVTxp3baSiyTqzzzSTtQ/yEQNN7Ersm1ZYDr6mRh9Xjw54+AS6agkZ9a2WDquYJs0CJqPFglvW65vX28tFfQmNVLPpi13mrikfrk0zmsSzlyTV+AciNPG54gWGnvaY0IIRchbmfnolKuW1ikC+K/TamMrQqxYuCmi6OCjc+VpY8K0kR72H9sN74pTSA9wSHUPwEnw0bP00QN99HVAhMK7XpNEBmtJZFAnkf606Dewq78+ifTw0bvylPIaTkQCrcnaHVFYkZ0Lb46YUKFw4ArK2FukL5A9E8A0Cqsi3lEkBJZUHCm71gSmU/asnLL2p3ryzqnO6L9wDDOsb2zZcMwk38Nnle6Pk8lE6i/tWy0M6wHK64ATrKMSbjW+k7o0cA5s3RUkJu7L7+T0qnkzqI0pMw1PZu7irUztUk+Xb35p++nyZ4KI+RZsWOqx38lnieLWr7KionQGJ0svhpOlbWfMrMGcih6kxT7xTjAzvA+ESncUA0KooSDUqLZ4Q+ZzU9yWNdWjGkLF+I9U0QMg1EAPGKGGMxBqboJGRrqvh/D9JITqlAg1bwZWR6i5FT3vIFS/NqbYNHx5socv/PUjn2mXZR8KIj4yQ+cZPFbH5sdaEGk/UAQOYhDP6YNxDnTXtAe5BDe5AzGSHcWQEGNUBkbWFmFEy7YyxQVNUz1XQ4x5+q9rEGMIxBjqISPGaAZiLGB59ZzBnxGuHSDE6JaIsWgGVkeMhRW96CDGoDameSCGeziab5Dr/JWRmJqcB5jUynl+JYhEC/C55Dw7867DgLKKAT0GbIcFqK42H85JAiLSuiwoezHs1cC07ueeBaW6eyVZUIiP8Mpzoj9gTpRSsEzwJSvtuQwJKzk1jINtx906Q0o3ZkgDPWxjSJlBkxRoYnBuY4Y00HN6WGNIWY0hDddlSMN1GFL/ohkSy6dXni/9mud7Nfv3nnUsFwfEXnqFLBccZAazOd+FDgRmH4eio5XEEnytZ/oUo0pV9IyyaHdVZLInZK+Muz426+oaAb+2aR+wYneumGKcy4YMSCzFXMcUs7d9095dZLyDYlB80/iA72kf4vuosrLMlRcXcd9qhsJQsctOp4WiSvfHr/L2FfP9Dr48gz/2I5UYHwrqLhWK9YkL7MpkPkLdx0ekh/hYEOcP0+Y8ul6gAWMkaBklEU1HSvajJOREY9BWMMoViU4pHhEPFstg5HyL9vXI1IqlViy1XCvSHBj/1mmxrYEh25q+a1IdQsWi3qq3TKeTabHYeGvxjXlm38o4EZpZtVhn8IsShafwZKGkBXws1JxBGIaAYM4LZF7p0/rZudn8vJqInz2oMJEWrWt9SMwUO7I2GM2inpvmPCUDM0KZraXbi4VxWIPxnPZNdQvZqBWyi3qLngOQ5hojmntjvmBHtJBpAwMLHQGEDgGypEzELRGghjjX4Sm/+Y/tPOWTbYQYfUEQYlgSYnjlCTHkna8kxFAIMWRCjJgQ1WYJUa0hxGgmIQIOSQ6kBK5WWLtVh20UydWpcrGNFSnFEm26RaZjUqZsmzRJdtu02N7Aq+3uHaoOyW7TW6fAyBW9hEsnqdEtE2DnlkYrW9aScN+ScIN2Oa1hKwkD+kzCADz4nguMuXYSbudFLsEAF0oSDjGaRdCumSIoeUlot21ZIizLHC/clvbF4Eo6oiHJYmzlxYhkMRbri7FNL4HOAdmtOmLItsO1aeaMdWQBWlJ9ohc2ovrQCVIJx5+GpqslSOU30iCQG+4krFC7t/fwlu24M3H+MjjDiWh8lJJQ7ZMLSWTtGukfPNDGkr1V4KYbkIGNnE/xRNeqcyb6X/r5nz/34L/+3kmkVW04Q8fkDP2K73Uic2NxhuZRRU43ppN6IrVmjqoWx76v9W6uRTIE8BOjOXyVt7vAQ77nvnVcv/Nbd7eNi2BlQHOyQPoofN1zkhZbGonRpEEz9aKxeg6J8j/zy9CH5THHYYkQx297VZqHCDkV6jdE2rnTr9JdKzxFndFCmX7RIl5t8/6NTOVbybIcGTmRr8zZn2PvGInvjo93E+1zkn4BQ6HG0x97lRmxKa+CmZWdBXqS4HIMvMWLq2UV/s818P/yAsU6PJmnmMzek3wf7TUnwZEEUPvQQWZSRPDP/ZK68M6ZoH5IBlnFcVQlOrOwAb8wHRfpreabYekv7DOu6RR/L9jBi+HVwFn7+sIdtHSma4Zrh3wAsZbjjkEoUOkp8zqnR0zxxw3eqb3aGPDVNpiaKZYBJPVGb0OjgFKdBj0zOZl2E0ky6f1Ocd3D7nUz1NfP/FrvHrhYeV/rHfG47ZtQ92u9l3kSRT++BjE+5FSGl7nnV3gCasL5/WPvxr5vnvz0ibtLXOBGG/Vw1QW6+92f5XpZzZUrbvXh8sfa3lH615tiZlevz8yONZnZnk0ys5s2x8xuukxmdlNW+f1unpndsh4zu+Uymdltl8TMwL34ba/iCUD3S2dmd35emNm+zTOzb2lhZihel5kx98qYs0AUF2Z2xPsccLM71+dmtwHcLYznlpKfNLgZRr0+O7u9jZ3dzq1+y8WxM3RW42e3CD97jfCzo8LPbmZ+9mqvxs3yUOD2iV8DWZY3Ko1fsowwPT+zjO617Yzu0z/bYHSvbWd0D14ao3vzXOLTKY0uuaBPm62dw7jYbbQIqpCuo14R8TEsloBKHNxSndDBrasT0l0nOpBAlaw8Ox3xJIDz9rzHCSL7Nnm6x2C4x5PkBndyndvyPqV0nJZJJwacVscvY94HzUB3ZREzH2p1P2WT7FJV4I8JjpIDXrf+1giZHnfkyp70XuHJlU7eV5o9iu88kiijHjAK7xvY98JMyruDwCypSjMOpKZY+zkd0OiK7rIZzECbj65pck4nN/aBzLH2KeXm6JE3cvqNzOZ7HxLEM3LF6cphH6CYFBhBP9RGS45Wu/jA8cNjWd7pH9rylby/zjCSix8GavBAGBQA1z1mcUPtozc/mzm0cYez0Rp4ZkrAxgGrmwRafOVGC8JTkD+0jzVdKUZ6NDGjp+HiFPeN/QQD7anZ89nkqKNLGTXjmlopDFBpL/DGPg23r30erJlUbbhfb5AxmTFUj0GPITu0OO6wPIai/7PoonmhFuY292Bh0HTAoXA3SYMuhaL5GtR8qZsZKCRMbIBSLV6h54vSd74k4/kGGZejmNdt5HopdJnUF2uhXKzhcj5nOhkCVgN8DE3LC0wXw/qq/fPaVZuTVYMheyirNpta57Agc7IuskrtmLQgRLvxGOPLH+NGpNw67oul6EWaiFGCBEYrNY9p0BwWmTaGestyYXrAx8K6s9lqqsiE5rQBaTmhBfNj4bKpPS6pfSsmuXXmlDc5sfCKT+ziGAJm1PPaZ3Ml+ILtRgnBr8sVvAZXKLIaXygSIW2D51Re/sYE5L2xcafyFKuUbeaqQGQZdmwevRvBxJz/kNMZbXRrD45ydAugVoiAPSC2QC7lr0W4ov2pDjnjS5UZKvsVLygvrrbjCfkhm4AjqAztsBRLfxhWrOPW25xcYV/ivYqEDZ10lEKZv6yhaw7YcslpqxM6PqxoNdUpjdSD/ZVf1DHKqTS043/7Qk34U6SyF+GKVHWV8LerJvwdu1Th7ygjlkWQFuHvNV6Z2crjSre3SH/YNoaUYtEKgcP1hMARhMC5En2HVggs5st9pVgo0W+gqbD8DXJUeuQIhq+tCYavvlTBcEEPKmlhpANtPgyHL4WGhc3Ih/Nt8uFIXji12tx/RuMEXc3jY164wQb7z4ZDTC5viO3c+jX17ad12Je2/QDm5t0AZrd8VHLpWI+MEryYX3ceW0wVmcq8DvV8tZGa8o1mY/eeV1d7z5yemyVpygy34GOLzN7O9yJRKLr89WnfdF7Nmw4m0i6Fusu2gTB61G46R2XT+Zaii16cTec1DWH0ZmmwwTHapdGbIQOtK43qfGvJT7bOkEa3riuNvvpSpdFt1BmkByxkvqS3YiXJSriNyWzBLGuxRc/jY3FdSWJJd0tUhc1pS7mqi+bHYrXEptJGjGIJH0uygmJza0VEO3xmG7NmET/Ws9gsL2mf2WZYyuaXLPr8THZjVmPF3Etd6NmTDh/7SV8kN2IReIOZXj5TakrCN6/PkrwGSyqiNlEYFt42UZjvyf3RLxrh7XHh7dEvfOHt0S8R4e3RL1Hh7dEvBeEN+Q6RebGU36684Db8IhHcPv0lIbh9+otQcFuyGrtFM9GusJMlprgRVHXzjsaufaJwAmvlKlZjd0VktEVMclFoUOBwhYWzTz8unF1p4ey4z7c7baCnLPx6vsFaCtPQZvECjkztz/3fRP97j6kUrUzz2Co6k4YyMXljnlplYkqKTnDB5aJLEZ1W1YlFnE7pqd/6NKys4sk+6ndK7FR7y+OkbMAs8dTOhVvr4O9ZVUPxdDJp6lDvUxEgpdjbpkWPWlegIipWq3Zo1EcYa1UfTJ5YvWuq00mbk4V7R6avu8g1HWC/CnQXYMl0cGBH0TNfkfsTP1j1KprZFJRMJT0p6aMVustDI0dwMSjhkA9pE0Is6xL9HmnO5wENtPHfnuoe/1BtuAFhZ8VMcYqUICVkE/xC3B53wq/P15AoMq8oAT+WRpte+to0MsK7Q41nTfXwTz3uG/CF4Rvw6BeGb8CjX1S+AY9+UfoGPPrF5RvQlOhvuuJ+AYMvdL+AT38R+AV8+kvKL+DTX6J+ATyxx/0Cohl+AdFsv4BBR9PgRkd+GpLLkSQsE3WrUgQ/4R8slL3larf/yVXVx2sdI/YFnLG29OQOrsXT2j1bBhYRUsei6o2cn7ry5ZR7Crbvm5Yv3DDl+0zp9+nP/tm+6cbCeazTr/UQdOZTGLmV/PgaJOpKwkj3LJOGF77yn/VGHzku4LCJRTGZj0Zzr6fJVO90ysej3/gJ88C+a52tI11r34zlz1dfUV0le9qb+xFUIi5bebRzGv+I3hq93IQCmf4wFGlo/FSzJq97gymu3UseVRdbROPvf61cpcgPFL3FV3LhV1z6rUZ8dUuEfNLj/wXkcsQvul/pdYrYIBIuJ7pxR57i85lIMRujxj1+7stQkTiWL9CjnAeLh8gHBMlgUUolRSS36UVIZNu8SQ9+/EEGnorlCegN3IAU8D4D3ChiWjvTW4xxpeScjYd0rBr4Xic09XUwXjQ7JqaY6gwkEphTgI74OjONqQTLX+V1gAwpBxN08QZVhoy/kyubb7vMyvC3ovFaN8N57Ov7Hb6qv3tjK+x/78IRF/ZdmmeRHhwvfjsl0t1Fd0va35qXhYZpV0ZlIA++2uMaHeCDL+Rq9Ajs/tDf3NN2jQktR8sQ33bPPe4QDeBGMohRfRCZVobCS7/mqGQInjCEh6JQHQ7oMNM/XCP/GVkA//iTd7dlARxmfKZxr+EvL74Iq3jTCCWnXpzHZY4XewsTLvIvbBR4ntok2MFB7KpRySf2TfMuuDrSRfrfkPucq9zcLP9dSJ9gb+7l+vu+ajytLj1oC+VwQjVxo+6Uk3VMc8r0oP0d+QDiBfaAVK4PHelsHN0xHr0471UUBFsMJFccyubkhjhPp7t9urXPx7ckV4ovkfBBCPO4wlfhqaJXe1qheOEA3kOcTCJPZbNJv8rrFYsU3j0eUe8B5gsO+ZXe4GTrHY9b7Oy2ZDo4mYcYyMjsbiOzToN8G/W8DUMN+KgdCQ7orYZfLJsBnZzqEBz8tInP/LPxKuspOAfDNrhybcNejKwL3ovyrbTbp3qrwUYMeR7FJFWhW8J/hXJ/7IMoC18vHiw4woDSJeiheaVr7kzqf7uZYrGVJqsDnq7eav75dgNL9GD28Z75NHLWAvpATAB+KGk4ALQGBbY2ad2n1hfqrYPlIWhkgFd7iprVyumsfMh9XusH2qflxDzp5lPd58z42bs939v4wgRO7CAhnOsnjIBO46JTR1wjx4ROlTPCUGGVDWIPUSL/RJVxmWxCK/P035tZvC6MQqPUiMR7T64X2HQ6HtBdm/Oek8KAg9vtJJkJ6Cozj72iGbvek15cILX5d+UZC80Z5eoJ8h5HvvfLyPeB7kpuas5ET0HMw8ZQhk2gZSfzITGQUlMyKoPeR41Id51h/7Rro4erHD9Plde5h9gfe9+Z07W603y4Nl8w+qjlCGahcg8ahRzs813sw4zL/70p5+nxk40TIMs+P0BylRcXleNmvP8r/sPOv/3wtV9+AyK3ql/vNG14OPsMkB/tkO69qFJRrlql2ZSjbhje0AL5ZsdhtnC4fsWJVi1Jfta77uLNf9e6vWS/s/lkLHfMTMbCsUj7LjEny+3rEtZel7Cc+6GOeExod1aE9jWG0J6GdfRIFKql41/NKSjpYE4Clzd6JW3SX2tS6FeVBFc8sOwOvG99bOcv2pHT54tzlHamEv7vZz+SxJD2A8kUG0pm0jsqkr49V6z2d7JNRJJtIsYnFJN1Cm9TE4cWZKHYHrsMsRn06turNtpbHNgWke6hJLVQh+AJw2U9/C7u1TM9OmHxKd188S2oDJ3HddiA6IQ14sNRSn7AB/hbTR2OAxnKQoZ7MYJJBAWjKcKK+WIMk1Ppaa/c+oe/9U8fv+FWotL9y++4438sBRduwMCdi7+pP1syt2K/j+5bMY9pMHwbienrNg6Tuy7TmU3M0LUJztpSIw0tkIaS4Gyh1BAtNJW8oR4YkxkkBnqsI1wlFrVdJTYAIW/Ri/gw2RwMAPIRsirgjyxq0JFxZjPcA2I+YArlRLHklSK2tZKf7S0W0CUWQcfgW1VOj68x5e40W3DBnaawNGi0Se2ufWZuYZn7ZaVIHfaWNtjbiPToZL7ZWuNxUz1HZVucMpQMaiUTctKh4sV6xZWJTlenfDDBKd4AWEwOIsw6MbN8ggGwAhxJAnBP0TfI3WWS2UMcOYetvBTxqgGCMNdJRvOmv5uR4CoNPMMOwFcBTr6dvKTw1WIzd+iNb8DVPqc79JPY2Uc7zm3shpM8GwDny/vNhEyVhzvNIyRmcgsqHzLAqLgCXYbvxHgHkDdY3YB7uujwffakGr/qXzqHoDSJSdK7FmW49ovluJNW9wAYV2lTEIMgcrUpdePVQ+4MCxTiFKz+yymzBKGkPq7dIOoOyWu/fLCZvyzEDTiCGXxTcgIdVHNkqBhwFYConMftlTblln2T+vVFzPuwC1QR9QmxFoD3+fYgenP7KBscnFnR82pJMXzDMZ27R5FybRCF0BSHQT0qnDlhPUvKEWV6B/D/5DMvqyNjJMdUpulyRKal1WJzA7xpzO82Q9LtUG4FxbeO5RfXG4tO7HHzC2gsLfqy9rFgiTdejh/Y3HL4m12O/wgQIHHyxJlza9+nf/yV7X231v7Ur93dVhv6jSj7tTjkHKJgZg4nqo4tPl+/5SoooJgwpJHc0cgniguzNk4nir0QR3Xz1s15yntvt5RSumtTaQVUPvtKLxj08Yd7pjkNJO6WpgwCqE0MsvB1Ol5zPUS8YkrN8bviETcg0XrjgggojqEti+gaO46Z8rVPIChUnR+x9G5qHsTGVf8P0tTziOyJ6qM4U1Cwx9Re0asZ42sN9UxHyryENCC9OKM4/A+dVHmA1m7K+2iCMngBRsLMWZ1QBLoPHQl6aDSetbau2lu3Ayzi+3Xc0suBHRsP3W80/h/ROKDSPuoNu+URNnvu0W4hC1TOshoEhqCDazGIni/AJxloSiIv9xdPJ3YOzvhrwKg7TsQt1bH/QPQIy5vZzM6xzsntrY+0ndxm1/+Bl7ef9P6z5x3WnfHouwvPENoD3xccMh+PGrFHdzj/xk/e7R2SyxZNKVTcdNnBgR3ao2fj4Xe3Ps5WFN0BpmqeR75oRb3qYKOswGH0IbXbjoOGmkYHlsM1uOsDau77hDlVeV7C8fFPCbvjej7rqunemyrli5zx+xxiycLM1aLfH38GM7rdzAhlnAannjCnxrHPjG16+fFUB7bajrU3wrQcdkffi9MP/8udMZbbXWhTzZQTaB6cHX2UX3nVmDPxAx5WH5IMTodW4wGM4eEUvmlQbs0x6pjxS9HfciXjXT+teF55sgQpiEnMjO7B8woIFSwbyZDbcu8bOGlNVU4LMKWdC+hOibB+vzPXaE8xXKUNjss7HuOW3Ir+7LTBDAnS8VrMIFhGoiXqk0SPU1yiE0kt7FM3dIIwQ7PTyVPOLKzqnKgIRErW6VQrzFSOH5DuhPhndVHwMUXjmMJN+5o7bWm/Dlfuxz3m2O4udYbXuzMUfAksllypObY3bodBo9pwlgIYSVzEV9U+ugGL2r2GRV0jSpk2FvWYMqlrHCa1V0drTlt5sIZzFR1U7bRCLQ8aTA1Hvibf2dSNrOWY1vCt8fSi2d/6I86sBj0wR601GsLIVb3rqKYlhL7d5X7/5Ckjv76EOeAS7+eWm/HxbjL7lhArof8HltBP0IEdmkj+32Go3jkRmFY/aUjTjBzgsXf36oBVDOYBZ5cN6osdNPlnwLebBs4Rex8xW0siUqcVgoAZLs8PInXYTJx9XV9SY647xY8SAtc1JultWB1zI+a4MThuomPiuNCyxOty3JTKoT4/WFR+VnWOm4AJpEbHlSf0rnUjrrRT3QacuyfyrAFn4iemlR15wpayFPRDfhGKdHOejnl9FS1uxA6mOrsrD4nrmSxaeVDX+GPsFzsGnVLXGR0yqLkQFZL/1O+Yb1jou/OQ19m369y+T2IN/bZ1tvsy15m5zlppmDJLhpiMD9v8quH1uF02e3P4Rcf+GpDqEBRamGEB/qA7dfao1rBHl/EYSFoQSgOeXsOX6gxJtbBQ4U2XxEnbptechJfVBcy8szHLbaYZ8aoZVO3Qw4CSCzeBcmDH5kBBGlJS8guLBgKulAdk4ORNl8mv38rXxoJxVVLkdYV/khTTfB6bXAwDVw2iVifyoEHUAZGcDgz39pl7+zXu7bvcG1Rdx1YcE4uQYddO476ztK0EbhtpJ/U64KHMcCEObv+rQWy5PT7/jfD78G11xPi8cf6ZmNHbNGZ0Z2NGbx3M6OKlLjCj2n1QoHtNqtx4p7g7vpI7xWO/T7SYIm6q7x+j7ybpuKUa7I+d6jS1hiNHDPu2N29BB07JbRe14/AQZz68eb2Ht9QfyhCbdW6buVnddGnqBgDpcwPGiz9YtO5yurN2c3vMod6+6bX7B7HDBJrR0dr972UqDMDA3TPLbWRbLfwV4naFos+bi2BShNp7qtpXRG+z5I5gLWzLZp+YaArcUvwluNydM2kwxYTz7iZ3FRH5gOjIckQdMT8yD5g9pg3meLN4asOC4NEkGdhK/AOa6JQy8NM1aINCXiCug7bLNm/hxhT6qneSzhCpb8Nm+lCYBHexFOLLpsqN+hzwpWpLEqzYhNu6iFovTmP4xa3wC7UyLTQuUcOS5lm1Tfd4m+5jmx7oPm3TQ9Nln7bpfnmxWt81e/grYKvan2CAeki1ELdxsBjIpj2sv2Dq4oWI/fIDDCswdUx/fNHIwChwELXWx8t5nzbhATbhPnbaOvopMpMo4Bv+9Scc5KF7tC1nBl3yrNqW08a2PLQQ3CQGciRBRiIINZe523LU2JZBOKrCPV/QoggYMXxGmKiVmdVZFlnqUFNQL1qDeoXfRD7pJWpFPrH3wWMlk62cl1GHIGa1gmgSrJEsDtzDU7g29AGAPnuXDGRLzwzZGUz+Vt8jxWrpq3s/o6kPZ4TRLyPGFaAwDKraq03TT0d28hblPfZ1ns5edIFGnk69DAmuo3sBh6vM7/+Xhz4x4d0Vw8GvPWwDnAAwe5m3mW/get/n+RA9Sg8UoSaf+scOhpeZ7HaT+F6fkZo9E4B7tx0qXgvsiFQ5HFUNR/Fw/n88AeGJGO4+u9UYUQwI+sgd09GHQTuIg3GDpt9gihpj8V2outszNoS9GSQwb6OOS59rGwVyxQdxwvPUXQCNSLTVaBQtzYzlUI2hqtlDbYZVY6gz1o6dr+qL5mvFK1aiohnxb/sBeDSih2Xc63jVKmdOkTuniOcUC2k35hQ11h1sMXLnETXmEa0UMc8DnD2RS8ZLT1wy0l3CfeLKvU9cidOY0knjOkwFts5nIu0z4XXkWiP37khhGz4D9B2+8A1Lh3T2tKBAEUNjg1Xd2+QtexrRBGwunbSpTpz7mOlY3oFrVMC3M5sTkpFp2w4m/fJiNTwef6jyWfDNr7P06znsP4WCDzQ9p6RBPnPL6ziP0bibvVD1m5z1yS74EQkP4jxBNXJfiEZiexhPed9vP4bzITyPa8japeMg3+PRbSxIt7EaXVPSdVej21iNLlYj0xHhJvs0fgwvE37GjJ/th//O7MP/mHITmEIs1g65CDjVEYexpWJiwnUCifjc+nySBzsBoobsyjjBcHmi+ACumiUHrvocDQEzespWpmzFU3zxW5NtFYqOpi6RC8cKGtSNquswrQChHC5AA4KfcCi/5FFFOJkyoUGrFK4wSf2Sr/g+3s1zKJEni9gdfsLDj5vMaS1F0kW17pATDPkx5kKMT01GlAAYNB0GTzsfwll/JfdddvRJP/DJRuxbYgIVKYZlwPMJGaQRQBrriECa4JNDKRig6UZ0hAobkhJJQCHPM7Z045XmZ2/tNccJleNi14NFLBBNXIiaQbOtNGZb6djDnyGipEwOnZuTZ0k15AcM+ZAeRERSoSjHYr4KmfAe0wVuGKhnRPIYRlYjqhiAj9mxHUTlC1Gt+oqCVdaqg+o+5mv5dssNMiaMUlx61Ne79/UcUbT07/m4dZkjJJDWMcyORkFY+qZxUg45A5x+0z7c3eL8vF181lslnJt4C8DXTlZqRe1FsIEc2iWugLapquiusek9qx3XtZf1Oqg1+nGKKPg7X+HcyNLTAWb5FktrjDykw8A3I0hVRH58lMzH8h5BQXNmqAXB7qpauP2by/dvb3v/tHn/PE3M5xvrdNSvec5j4pU744jS2ODUMq3nCCrC1QKSHW3teVIXJfO0Fpc7PiwXzOi0qgNEXl15gzhvpwgxmOpkxXD41TcIXhAdNSU8xTqOYDrRPh2opivCTvHCzRKGbRD0Z4MgMMAODkct2u67mC0YL0pejIgXI+bFSJhXpOAVXZ0Sr6DdjU7UrOBubGw4WFK57ursYNEVGs5qVcobg+BraOqlchk1vBPNB08m77MOYUCEauACKsaq0hE+sEl7GLqCNPQwLB8WI8affseGOIwcpoVT5pBQ5Fv4vqGh4AtJTkNGmCF5p7+4RJLIIInFDmY6NeyYE+yIatgxXC1oG8I2k4/qUm8+34od87bOSM8BO3g7Qy7C4VSPDHYMDXaQXikh7Ohi4yC8GCChk4503+DD0Hr2i4udCAR6YAA8rI7BfUaYASPMexVxNDWbo129eY52jeWCG8mxDZ/ecQBaIKNbWIUt7mmyq3AckAetqX/EYwmWg8UftRIsFzzSIsHupZ6qd6GdILUGe70a1/UmP7auwWZ0Lj8OtS+wEX6MgqC64mlDfoxLp9qmSOWRK1mw7zBPwZY6TDfIfiAMEkP4kQmx3sgPuVS7RjVWnsfUS56IkzETZJf5RMZ8omdd2LSyO7xfykb+DE9kf1OeyH2O/1QkeEFMHmifVwaxjPmIeMNID8AbEj0CH1FIfpJqRXk7Edgg4c19rUwt3sAYzLvQJvypbqyYyYLLTPA8qj0vFmv8ZJH5yeIafrJQ5ycLdX6yAH6y4HCTvFtjJT3drTGSLcJIujVGsrBaZDqb5ov100m+tbow0HKQrVUNpEQkDtKj7CJmAAtTvWg4yILhIL1Mz9HMtc/3hs9RysRiK8eG9PTiVJuXphOkZTUMZQHl83rB8dn1JEpcj/B1JDyly+q8jK2xPVaBvTMIFG39/uHaPu+z0k8xZH2GrL/xPu/8Zy1stT0/YBYezN7zg+qWWl9Dh0YUWO6GAWN5xLsh7tvjcmZutcVKZLGC2mL5qwU0I6T8yJVdj8DoJss8HSGtmB90MtEs2fieOGMZDIQ3PmM+u5XalPNJhwPleQr8y7Yd269KJ1h2UqzsXb+pTMfVqSwRHQgOLublQCcrkubDCv8x6dCQzU/7q2+4/B50MjGdlCIO4ZZ5M+JYe0V7WKkB/YXQCDMhDrHr8rSG6gpCpM/WFkYuUVHNFhyjGhLJra/RWjmAnOX7nohOWUMUiFtEgWS1QMwlxX7mqSMKdO3aR21SQY3m7deUhUeskZfV1RwJMgimZoUSs0IytkqOzMWV155hZ/Dpzmw+zQssu0LEIEgc6bFXm8VAdfhiRbB2jkBXhsP7mvstFF/Jrkg7dz9HTsDfNdR9AylkpxDUiQ01TVjrIUdiOSCL1kNHZkxdxtpOdrEdepfeISNxGbAg5hEWqN6Y+jiUizh12qY8gijx6KpiN2v8eGRV8W34fOp7UB1g+YXS0wTXokSzaBGM/TtQ50x5iSSEJPN61WTGlRC7YxwEapmKkDKEBJX2VEVXt6cqwksdfr5erqJA13swAzi6UbKi53PAZsCvNbMVoWz8lVW6orASw7xKDPPGf11PV+Rpxa+xWwR+VkJYh50QQhHsgP2mER++80Hhj/86vpFklj+b588jR15z6iXP7HstXf7IG9u73MNdIltTrVfsF9wuhUCinXPPg6zq5rrZn0em1t++9tW26VgrBKxM7jbgvvvnTAkJYzvkMef+iTn3T1S7u9dMiFN9tEvNZVxl/bpVJ1jmKIe++eP3/nr93mLbB/spLXHgrmGTrS//xA+/tPVlHmBCbmT8vXctBoomq+PRPr5yWdyc95bTAI9xh4+qRVp6brSEKNb14+hbukUulWstXaTODbNrlhx6oLe/yZmPi1aYcHSHqXVuzTnDFJ7vLNOSPBvoZ0Dkk2hrcql9dxFyfqfgoA6QGYZSOu1vQZGAUQSZir/vb60PENCRUUcZg7h/3VcrJEaNroVEDkxfAvvgxEx+uQDjKgHLgQyYW6VoquVsezPpauSnJz9fH4fQ1Sd8sQV8Dlmb8OxclaOsUTbHMo/f+a90Ca6qcYn6oZB2kNbsSE7oMpTt485zqcWPffrlZYtlS/uLRMdwRcRixXlS8bMDX8eFclWvmXLrRdj3/kjrRdg8uYBPQiHvnsI0Uj6ddJfLFcx0AhN47xD2l/5yEXMm4GKAScYkVazohCIETpaoa/wAhuKJx6coUzlB5QSV64+0Hpg1pKb4s1lhl6mwJBWW2ipcVyCtzIhOUiKB3kzAASmYcc5pn6NOinlt/lnAP4v4Z4AQlMQ83X2IrBbhHaRPWDqUb6FX86060z0Osj+UZ1a3qvTWZeyoy4a56jLEU5mETWjL/u6iUtaolDqVkADZ7rxWF8triUMeNCU4muhFyiCTjH4OGEt715FX3sPo4gPzY4aFPVUqRRp+JFXDUpUppnRS/kDfSO5JUBjgY0ChinLs6ZoJmuGONYbWrYGiLA3J6SfudyhCOSD9vlbNFeK0VpAxWmcqMYwBbzCWCUnwIs4LcfYnvh9y5qSOScuCDs2IUa2DmRZp3qXF6XKuHx+Li3Qf98m5KD09uW//39/2F0ff+sjD13POSlTpUerr+8ktBacUZv8bv6zaXy4h2cXcujw3cun8eawYy5z8neCWmml4Bm4RgYx19f0VaEn7HOXEHrN+s1xcOAWsclqVWCiBrqj2Uwwkteg0/vmXHa0xg9HHj4rHxvf7fmROHwAu/oA7Yy8P2H5DGgZsYiCiDtbQ1x105udmmYB2eVKRhnDJDqef0RE+u/etFNn+t//yB//wz+764/8V3qCEgnlGCMPn9+r5LyO2nZ4X/LzorRR9+7Z5ue/WTXUXn6Y22zUS3cNHRF3w6UYUV3hs1gTA6QgGyppJ9JgnpvDseoqZBGpa0RMyp5iCd2FXNMRGWenHu9190cDzL5QKyJWWr0TymS79bycRaw/f1M4ihhskv2F4PG/rwt9CWhKcTc1qmaUZ+9r8mQT4/nfnip6BnRk+P17ChMPcZ4aAanfKBZ++AMhaPOmeDx+8K9Lx6H1wrZlWlEAPO6B9qycpGcasqOSjv/3qtqjkqyi9VFSLmI4on20ACjSTOMwmMpC3T9sNhkk2zehWbT6+5TsLtUNcyxVAZTMzEDbUS34cC89ysebGiKrQFN7UMeREwIIQJ4/xPb6vwE/eGctvOwWbsMi3ro8jV5c4EgBH9rTITnupagfo5GmSeT37jhGWdptOPhMHQ/JsUeUxa/Lh1DpmW4PH0vqZpujYUqQQbLqElGLvYEzyx+d+Kl7Oe+bL5O8DeJN1KdU1gD9AikaDRMVI+P0QL3C9sHzT7Ex5j/MtgiSH5MeHOziQ+T+U78aoP08IFOq5+zV/7QF7euLEJ3sE2yKJp2q/nvTrzCl/DNMI+hmyetQ3r3pmT2fjs7wzNhWXtflZe7ccsx5yVUoGJcPX/HOep1eELI4t5EPIv2VrnAIbbJ9VpvOc2cgU9VGwxah8ttJu0Ndb+OGimfAiisaHMTcAulc1h4wAdih66wq/6mv+vYjfxIqwneDPkIQHGHEDAP3TAJB8zi4KN90lphCyf2aoRzos9ym5+iQc34n3aw6DIW/dc7QkQ5Q7axEysHpUhsnOs36ploVrFUt93/6PZPlff/qzJonXjmJuyjOa5+zEmn+LvCM+iz189KRHdFVayoOGeZwmReqvmB7PzrLFibP6Nq8Wq9OhR2eDOZotBrL+IAjB77w37hDUerwEaEgSWE1MTQYHDbUwwM7MzOZo76cPiFjLUkAVwWxolkWfzgPfCH6NqBKxOmfmVz+rZ/P2dAZO4IPArT/4n3oep+hr5TJMvo0znU8nm5d9wMkE41eZYPigiOHRtgQXgxlN/MtPzWwChLaHWBi+NXLz7QYX463x3W1nxvfLmXGXmd9vsC3Hs2qk0Trcbd+6Xh6wSLuuM13y56tcZ7p8eLIKyW+10It410Kj4x/8m5r5K2KNva6kCE+jKKZtzOaK7loHkbppYxUKNgp7o/d38y7UrSstrKGkbjOhPFlgu0Ai5ufXgUwMSQF1B6yAB5529cAwmgFtXVyXJ6s7pj7yONpmyZPFJsyz5WhjxRhhprCckJKzWzp7Ba4h3JLobGcWJM/FH0xd4gDWL+3cRYemUkD8Yg+yItI9MyxtV2yP4aUDBjY3f7uZFU14wLWGK1xNd6uJ34mJD3HNBDUMClVsguf7cboETW5GfHw6eN88YKjV5cIixvs4CWjDesC4rMMZLTY5JuWRY5iMsv9C7rvl2lZS3WPlLvxf13a3a7Pd7W12t0cUF63dwQr9kLjNoOd7vM9p12ek68Yo3uj5gdiAd671qGNzCfvWFUpUsQfzQPBbqCRmj99kLN5uSiv2aKssssp6sUlmqHSqU9Gf2yOX40cbVR7l0RtYWPxzFYRkHvQ2Nd5IdjmMt+m5gmGnOqTHBd2hYcarqvFKmis+taU6oyPUVPemlIZ7kse8Q2VWcLfuhJJRPME+Wy0FH9h0/IbVPGFFkbWvZGvtKxg6qGZt7hXdLVMRJhzYGK8UvfqKNxdBYQ8Wt0KI5OYjLI8wCDMNJQ+XzKjco+3EygYjHc1sUPd0dGpVpFeFZQb/Wrdp80o8Ye0FO6ocADr+rQqQ9b2RykaLQ2QesCkpdE2vvJzr+yP1So+D3kX6Iyl6o0gxgUCnrMbp4e8bdhR93aNUZGDPhNyMKoOp2QoAAIMqIWO8LWSMF5AI4lslA/uiHRDPeTluRav4x67yjjcUMXt4hStF5NA7j0j7PGrFozYfiofo08IouzDto5jdjI4w9YNmsaNq2kCI9duE04wBhaUTCrg+6WOxEXVw8Yv9mDif4bwGp2wIwGAI3dIDLSMFgTYfvg7wkZWqMssedCJqpqnuy+IXoUZxbyrrXqxdSNkXOTQbH74A0GrAGjhhAPeWMus0M/0ldNuSB9GzWg8v46TOa8VURWLqz/6zk29R1fItirFRQ8RFXVgblbU2ilCtmiZHMjhmeOFaiNtY7kBcx6TF3LcT2ITLmNyZEzxHotzEZWBjZzHf+AvBatMmnv/C+btnSvhico10YDUS6BfIXJYExhzj6JMC8zmrs3v/8hXtnVXnCB2YjxtnHCX+BFrP2aeR66yV6UNrTgxjj5zXOMutGJs64wt48tG1lT9JdbRnKozeyp4w3EBAJg+8LJZkr26c5sTdjnGa0cWz6OJrb41x2neM014mlZbhIoh9/9eVN9jQoLRPDEr3/WOLQYmNQFGzQmXdiLXPfK5ItPknxT9d/ENOAL1aMEagIxoAS8Kh7iKxdN7XST7QsahVAlbfhHLaGZRHfj7LK/kWaWWLYYJDo/gIRZiWA74YFUS9IzJSw7zh4xwBJW4lLme612bk8GDkCJpGjlCgWiYSU8TSyvgC3XMHKQoHYVM2c5iT3lmtyesMKSzIjnJknAhJvkvJ1k3rW8X2hHhJG1ZY+mIFVTF+OPk3UYeeADUhAt3KSBnYbHuSNe8PYQ5RdUlyqT1dXjmqPHaEO06hxwmlISO1SHBqdgo9EeHiF3IeOTjSeNojz0YDPLYTsHJQm4+A8+ozuALOJB8TjFKdEDBCnVYAMs9u5bKYy8y3xHyrJDAxe3hYOg9LN2sIqGwGWYNwnvJQPOlRmnTayu70EfPgKOUrh/jxC3Tt9oMX0Vb104KZkqMFWo2KbBfNWmgF1Y9wxfG/nDtSeY0cwU5lseuEpzjXrns+wEpZu/IusyDeN/AFPuK9SR5ScmyIdQhxBt3GB43uVukA0HjWDlz3o8qX8qDmkWXFXpFtI1okyHkMasAF2wbEpsxqww2oftrzAyvstkY0CXmgGz7j8EnMnxFy5G8cckSWKFpmXyuejb26IaChteFINi+OAVeL8soU3UaSiIWFb9e8LpeWkFeN8vLMKs4XrOZxK5nuKCLQg5/UeoC6bPBUHuxVNks53wI5yonTEwkqM8NtCePCMx2v0GongHDzCKyIpvB6p/Xkax4AtEWnHZYM/N0AylM41lkwhI7hFKC624kM/3XGsccQdC1Q8FuC2XxWFER1UESc9LeILDRKQbipDtgtM3ZSoxbcqARl+VzrtzBj/wt0xqXZbGXWjHWcR+6sv44V2K0KnnJ7KqMSNTqVhLZ+FXiFGMBneLD+tyDVraVy1ydMt6BFmw4q3QejLJj7YwlankXIQ4qYFONy4HvNyyXsE524sGe3CE2wDPERMth99OrMmIZAXBVSYAvyrQntRpf4Q39rmqs0Y5bepedG6257BxtoE4t6RlCFrX7RBgHnEbOLn/J93+66LEf59UTMpbXUCOZ1LGAb+rRQ5Sb/zmq3r1++vWOyiROaDii8vNVB7of/x91tDnL21hQeHbu4soPojaWDq2o3/yI7rUTqkLd1I/jHFcrYt5PY5kc5na1XYrG/z6WXWSewn/6+GafF8hT0oSnhPPzzpuT0yRTVGZsH5judbMT19FpU4V1ln9wYMlWFjzTa+MbrMxpfA5iMcTEk8xTf3CZ4ErKcs87qItY5aFnnoL7ObSmj3DQCVjDzn9MOquZq+xuvti+r7c9abd9dbbVmtf321b6LmScvT+E7/qgYsEedfub3nQF7jdP1zjHHJvPSYrDmJRjTPNZxoO1qGclNE5+d7Al0IuYwqg9KAiyIt2OjBdmRneP44GBWNB2v7eXTpZ1+uCZ22IPJlqhs+getIBD376BCbIK/BL95xso/ZvlZJp9HqB3pAHYtD16XsTx5lujjyUWoZI8B/dIhYEnHyJbQ5mP/8+5GaHNrXPNVmIljTgqz9/gk+zDGtV28AQ4Ahm49r894NKUOsZRqS/NpS+uU1ryOc30VlXIwgWqXFQxy1AMNzOxEsSp0bb4F5eW2LPPvzpXN7RDIJaWV9oB3FWy1sI+bnsEhiDhU5Z3FIrzN+CCHq9212xKUHNp9cU3//o81yFZuP/he3wt4a2kFY0cAZcEp8PIZXi5tYtQSx4BdvCMQU24KDFC0eY8tGR0DNVps3lsrSAUMKR85bHmz9RlAGAEgY0BdQcavtNIdsgKv42/1659ovQUC6BVmH/G8SMSxnYUvjAwzstoDDFYiKH0z1DxiwMSgGTpleqhOF+p1MqiUyEaOqXg0bUhGOuBpQyqwhzTMk85v1Tw9zNPTEeZJ6jNZdztJUIy77oHMN9KcQPusu+4Rzxfyno8bN+3R2a8vf+tZdal2UI1RL1qbASWk8o1PYjtr+1bSwgcThw+2uPc7KnACsPZMPwdx9CVi4XOvVnKpudmIMJzyxJuzqBnXzWkRTYYJi5EwFnuaj5ZiLEPV0kFaj4pf8cqIlgALxz01qTEQanwdX2rcdOcFyhjNQaRSEmIArM/1AlVzTxiOofiZsBwFY4nECasyH5/iMP0utrTKmeLwN4tOKytXOWusYda4dZ3XMCXQmiZP5j2F95kBmgXrlwuW6pTPBlCFruS9at1i3nkieishorGrJdfH3QkdcAilU2pxgq98r9yzsxXYgzPXnRhiuTAZrKttmguaCx3KQj/8SOtVeMPMzqhuVuepYPeANc58xMw70nJTjZtQ9jaEsnsRrjKApVdSPp100T0A4s7IywSG0D1XDwBGhnoFzS6/bOvk3TIZMCyKFVB7KzqTLIeiBXdhux4Mf7AVhvAQ62f/GKiEFIPrkUqHJYIOSKXKiAO5wG79tCm1xEKGrbGQLqlETCqBHGiFVBId25B6PEhxgL1RVoxz7TRWq7seX1M0PR0wYtMf2BaK8euZHGjAbA97hucwK8BXngVtLBEXEuKXlcAgvnVqrKz5SnPHCWXH+cQn25crY01wJTNhDJCZPOmavedTbT4UY32HNZcMMNUOsGa4EIDBRAT3K8zV/LQDR20dAzycqMtidlxJV5xka23kp9WY6ix7dRoykw7u8r/kGXXXwrgrSNkVRt2dzai7uktsrUsso+hZv7+aW3tW8wzsGb5rf+7/zW/C/95jKg1W4EMtjxIT+DcCD5oz7Y5W8pHduNlyH/k8noS4Gi+53QkkqGzWTgDSxLMWpmha4aiJmCTzvH2jiSAWDMDsRnwjuB7K9Txzwr1NYPGEdxgrOVingE1vLSc/M2NrAfTxZ0A/v3ZHCaodBZfl61j4BomdzX2F+fdsvFiweLGQya5Czub9jXeVfvWgvjn3+S37EFx+gfYs3UeFBa6wYCsslFuSXiDfz/LotMA9LdilWah2JsmOE2nzbh3lfuj4/yMo14NPT9aKsgPds6gIb8s+p+CpY/KKXpC1z1ZkA6Rlb+6BEmUWg9nGl7oHnmavEZuUS/QRnD9H7ipv6oc5I8+Gl+6Og5wPo/7y+K4XFWoccLglTnUvBYDHR5LqxvLdNedF3Nrxmac97TnPGv/tDdP9v/ErT3vZZ9/80XeOfgEhMytQqBwykTgnV1nF+dpulB2OyTvMl1OJKIU3wU131g9hzFQTVI/heNvCVOP1mCq6ZIZQsHyEDYBFUxO3+2JOPL3bjCp4JpnUEvzh5M+BA4FhgD14G+Egok5ShoEESiWls5M6suS0IkmuBvagg+PfQPcnHHbAd+g3VmfQFOcGppMVg5HmP4OKNSxFMmvzz8r+b/ij73k+o/SoxNrTU/jsjywS6+GKYRWj+/MFEgp1umzmAr3HDj5HMXP3zEeV9WXekgaS7qAn2/eCXDaRDxp6jBRjnueHejBpfz63wfNSfKTFXdajqjroSi6vzvCRrUNQr2uXUti13C7rol3PLWMOmvVeXGxdLvyD+TbsHMRYlsae3nrwZL4dS77A5o15WvlF7LibXPmFDVbeFQ23YS0CXhJfL2mPmOFV2mOkC4odbIW4qvD0FjzwoZIx/xi9nnSh+yvFzv1f85o9H37tf/2668lysnP/Mx9Y+ZfPmiAV9EriYhfBkjvgM7PD3GppXtbb9c6V3A7f4NJWKGos6QMb9byZ6dBqMWT9vKxWrZYipa/7/MpIz3G+M49XdXXS2oru25fhQ6NHelS+01+FcADtWOFjvDvLCL190yrcpipazQel0nOn9k8al/kWdcTAUUdsuDap9ghZ4Fu342DpijBYg7qDVozVvexfU9U7nJgkXi4nbFVI4SATWL9oOKZAm8VaqtjJrZzKdlwEwtoiZm2qhbWFOsYfWBsHEPQg2zEphDo4SUEWccXakjqCSxCai+BDEPSwQvBhA4jDJhCH2jOsbUjIUIxqrA2Lbf6ps7a5Omub13OWtUFCXDARdfkiUYhWxNp62sPBw96Knm9xD06hPfSM0JXtfHGitzCiEb9ZqKHhsE1nh4nXXmivMr9RFQme9vSc0zvLDTXcadcCNrldVIkPfCbra0ULW2xl/rYNXG05X6ohwXaS6rcZYe2qsae3GWY3DySYY2Y3IlzYDma3SVyYuyhcuIq5XICPsGJ2ZhUZDf2CfHh83SsMI8YDcnoy/1TMDjtUMXSZ3dAyO/7ZYBN1HqFTwpI6RwwsRzQ7IB1RzOLkW/S2PKxzQ87eCL7fvvhbiF8iuWO1sLWXazxyo4bwdq01ckMY1vGTAytDvplZwBKeNA23sLyhw/I2WiHwIHYk9rASEPR5kYo6lVXzKxF6LQLr/mbcY94ERT3xtKLuCsZ8LVwm3wzMXqRDkhljkRkVxlqlKWyaLnwdY5+MW0wXmlpX2l+G76RpdZnDoaAgqrIgGkzFo+py893k5kpuc5W7oV/PqNm8UVn7LYvh1xZjY5ldq77X6gx+/nV3tzuDc8flSe9KjIDdBS5qEAQ1TvBdxUGKGyZim+i3mJJVS/RkS9ylODXvG7PCtTPT0yagSjlbtJQsuG1JmoZy/icRx+LzKcUO09U0+qxpxHytgyJFOdgkx/ZWBfbMCeuhX5iMBLdde90v/8cfXtlxGpmBi5Cz0Olw/yuf+9tv/7mDzzj9gh10q0LGcWBks+CtPuGI0E6J7MlaT1ZF5SIXtprq4MvD6mmf5IBESACCpxg367bMjqRLKEKkZsIeAC2zkDwOXby5dcC5OmJPgXtyhyxbVsHuGjY7vIBNg14gBr2PPdpqSsnexxcN+PJXxylfXDkudPNOc2mcO1V4adSGS6NWCyVLo+pLo7A0NhNLHthlCrW6X1ygmktmXco6fNM35xFikMIZPMI1H3VYsljs55avurr1FkBaGSEWGWH68UYuJAHk/ygx3n8sML4V0RmWn3fM1tH9edqK3ozVRVfwGkYSrMiVx+7Xf6Idu9/rheU1GqUPzKNTxTkdr8VX8+VhuCZ5kknFH98kKY9Ytcf9jc898FbTPqTiPbRB+5foRtTI4qxDdobiYelwmcfkjQOMyJrRsh9U4gA5vtcj1yb7FnsLHfOaXB5QvdcrfE5Dbz5uwQcqmQljsfHoLn50Kz8an58qtF4+PeLx49vk8Ufdx/fI40Py+IL7+Kg8vl0ef9J9/Bp5fAdvqeNH7GMznwdoms8spZmbsfatfla//9KjrX5W2Mj89uhnPKG87mMLwxLnpTvt4f60O79a3cLfjniUkhpfj5qvt2faz14dh8oo42KTOt6uzeZJ/mZOMcCUQl5rFW3THrb//45/a/v/9kf/nxtqOVVvAsrs/++LP/PMP/9vd1QPYsTG4cH//oaffvPZ//snqgcJ4nHx4KNf9fZ/N8x+vHqQgqfgwZv/5fnf/p7PTMsHnGcADz7+a+96xpu/7fXVg4x8qiVxzc3gTPXUpjGHKCYcophK7gB2/c2yajklIzanrr4jH+Dj9nyIj0PsB3RbPsLHrTgwAXrzJffqz+Be/YvhXv1Z3GtBx+bkW2NhdIjRI3xs5STQ2/S8zjj/8xLztSKk/XoOwdNUZ0q/R8TnRtVvqBoStCi/hzrWQ2GPW/RWvaS3Tcz/ii0cKhXpAeWYNvwdyamRXTVk9ons1OGU+wRnmINhAlx0nu4qKPrCSu/M5zPJ0mJqECCPeMV2PO3nc6X5zjwCqA0R84vb81F5DZ55RA0drd7qZBKEZR7Rcr2meouC9wa6xxUH6zLxgaF2HPSZJ3SYc4yYv8wxF5o3fKpG6yPh83MYkZnU210pZq7k8z/iebTtcvJOvPRgPHeEnhWi2Oceb6pFathEGUp0R41zBtrpnKouTpbTyHUNdsK1rOqjCuU4YM40PxEp3yRFCyq35JsKv2QQuSrzdhL5FMGUqIlimu/L4/rpR5tnpji8ryAzppnUSdthEXACqoAymHFY1a2lWTRZnbIkEcLWZX6EGZ/zUjnndSVvgDg06tAgXMvWFjpbW9jY2sLGwQaDPPtyr/DZio2jyLN24LRj7ivolbqkUHqMJpe2mbo9tnWlyq4C7eNBpWOM6Xev+p1IcDTxJwmKLjq1+wR2msL6b934vav2m9LDlI3pFAqjlNoDh+oSB6q3rKm8XqTXFu1yiyhRollYaJ2miFHDRwzxbIo0FDnFfiPKmw4XnLQAp8aOeGrx0IxEk9BJz3yjqMOpzVCGk3v1W+N3bH9jNDrk38JP4NPVbojNxJTwS59yaDcrlWs+NlNtw9tO/+mvIryN42FL11aba/XjlGv1A6FP0rbQyPPWbvHADoQC086DW0KJjDF8lgPPe8IgEMP8sHFaKPERKycV9zcrmh9Uoez3gFXhteVobRH3JhSWKUIvRTdYjiMjKEtuH09bcvk17xHBV7PufMO8Dndc6z/o+TVWtXETAbyUfXTsXtOJHfehziHcb9eQLsvs+50KwEU4PoX1V/tYtCY6NG9TqHygQ/iL4KfEbhQB5dZpyft0ymMR7ITnlp/G78+a/w2/Wh335C7EsHbtUljdlfx+z7qcl2W/5TXuYipCU3rGIFTOF4Kbt/odbgzT+irzhkEa+Nzc+J1iuP1a79exeMy/iZc7WPe13u9yfO3Xeg957IkdDrM1F6MAEB/48JG2UJDsX0cRbLtdOowHd8m7Pls3KliTTu5f/9lGcVuDry9MXZLBbHytcHuGSO0B7fku4YfFq3lX3mWgS3hxr7QT92akx++x+OW3uYQhJYGIwt31x9W34+rTezrAVSfAP7noBEHbyOMn0v6D2HVAEy/idfKZMoo5EIYbEf/8wifv7BUsB2Cpsuq2EEvYGxOQD8UYpz4pcwdPPFKqN3gT5xKvXXw27wRkMVYdN0hJ+eyPMx3PN7qfbziU6OAZh/XCm1/xk8WiiY15EV2EuHDS6rP1/MpUx6SyWzz4oh15nElwceSMAAKPXZC5k8bMuFq09N3gHQzdCgqjxpqalIZtjczZRubwplmcRZF2ijkaFkShE16xlW+ZmH86MQQ9Jw0fLW+aeLphGFk9k3uxDc/P30EcrEvi+poZ2hIaD7BVuOjBk3rp/tV8iazb5rv5yq0ba8VqsaUxkS2tiLCT+8AL2xovbGud+ZJ0/u3UmmbsRTGCuhkF9FYImnRqeZP3TNYQGfKeJ+o3nZrSauvCs1MeKO4gmM4D3twqb18GiKdhjWgyVisHz2NEsbEv47Tnc0O121b30nYiZLEhbjA0wCawwTDoGSmMHLpJotqVCf1e62tm0w95bJK4VpiibKMXs2X6kE5HOlhm3DVIi4JFEhKFq/Nt0AYFcA9+vILnCZxw9mZc52bscB6KzSCfz4qMmzPd40CFYoE3tmE+R2fKOdGmelqRWEz9F8SjkxfTC4tIbL5I4CU/qBGe9XTwopPTKQ7B5dzNfPjr73ocQNKH3tLPaAI6wA9PJrivWDR8pASTDx3j4skpVTSmrK0NIG19Y75ogbQI+XJxGcCapyxVWI0KWmgOJiUugTGLOtxp+jdYCx9xnmWALzxB8nKJM34zKQJ89PBmWgFEF4tO/XzeNLuIJ7sOFotgXtANGzwgBOX0uixKgPcu6Bhz3D3VC9Y8zOYrlO/hh4TWIEFZxudDNpmjE5UsqFlNPqzyVqKTZWwbDPNfJ5hDVIBoIJcDs6hA68IsNdn0JsteDnDL85f5NvszVUNdNLTZXZHd9GTQE/jfQs7E9XBuZhIJcloT3YSj/8hebsAS9v1hdQOxMn8SoKfXXHd3TT1G76Z9GGFr+OtnIXW13g9RMvDxo77oz/j+xns90xg/FD8Oc1dRzWVBrbadQyMLmihDLh8fGv7IwELDD+SQQdvwUJ6gVeZkm2oHevJoGbrWuKlnVU83IzWfEWkwwOzukAs76CoNDP1RvzBPT1CtMrUJSt7CJfzjdP3Hu/kHKOpMeTfD8xw+XF6OfhuZkRrjT1uuGxzT37N2gGBuoiBBNApmumhAQ98wl0T7ZIGS09iHf+xV0Hz7kudde7y91i8iOe7ZKzM+xOK7/wH53M9K0xMeJHv+ftp8f8gr92tyGD/q1Q2IpHZW9QQYt2Eb0PYejo9t64aEl36Fn+lhtal0B1Fp0o4uLiYfCHlEHIXeL7mwHxIR+R3iYXnKQ8bTxsXRmaNRonaOerhFBd+OefD3d+4Pyxr5L3sNf+83mKKnqzvrLqS9Fb6Ei2MjjzLoTdvaEwzPzNY18azqK8tKJ/w+p27LStGo5n1eYITmtaI3LTZ0sPRIbVsMtdLmD6qX8n7Inum9zSl6aN8n5dyQE3QhCz3bKvo0m2Ny1pPLi0fQF+HPJB+co9SWGOSd+QAft+fz8NLh1HTYGhd0iA+zseBji07wMWSj4aIemV+yRuSipOljqOc1F/J1oUVvgjlYQX0HJy7ZovEhpkNJVWW3jufJzsQ0G1QnRlNC8kOxFftHqkPSc8OPCIPZBgeyJb5PZTs+znjFVWbOW8urKfT2Z/W9tly/untyteZryHmo9TYzsqVcybsh+R3R5BDkwHmpA/wK5NcEbtd5T3YOU9dEFNQ0undWdxlC41vP3NfFC13ROlOVq/R2MuVsJc/P1I7MPIK7JY8KPSPMJhA0BKRvLcIdnG5Rmy+qnkFIUXPL+io44hVdEv74XomuycmGIAtB7NsA8IpHAf9ZaYB675dAjv3334f/fQRe7A307LXe1vqQ++Kv3bBxHBkHHL/br1OrgiD5iFcv6hpZHaVHfPMyzQrbOS4BCQgxckU/FP8IqviDnOKEBZBDABKLy7mXSnC+oEgBTqTiMl9CVz9fuZZ1OatIl1erTG9AjiaMo/vwxN7msawXn8O38cvaiFnLgLnISq11K2C3WvhshQyELpwbj9pjKHbY13ZkmkifbD/LTCgH2HC0nxnzaZ+p6B0++w6c8nM6Ml3w8h4+z3vMMM55ORlPPiQ6jrPC0D9gGLmqX5/ZN6OwKCxQB9hw7smNujRH7P02EmUoJKy4isjXhw4A4hnZj8D6/YmpPq+7JBFn8gL1Wa+Lx3mGpms1zvoHuDvpymn4mL9Sb1jCTMCq8yfoqMxaHmFoXZoyumPyDTUB414ztCdwfCdiOiYyOmqIoHiu/kpGNbkSP37YR8pD9IeiessTf6XRMiCYVrdu9PInarNv8xCXMESfNFDUn2IO0yPkMkN8IuN4rzlEWvCP1l9hVseV+PEFGiL6Q1G95RP+SqNlNqTsWC4Sg3aIJpTbqchWsK08aD/iFTvNluvzryO+2bDouxERfSO6+SzyPOQbicgfGyzRQYklYa2JJxgRstbEpNbEh2wT6hya6JomQoJwrYEnGv5Wa+BErYHztTF8FA34poEUPNy45494bp4e8dxGjbnNX8TcOvoJhqqemPcoJyQoMAXzMBAODPqFzTkPLmLOkd6Zz1PTV+WdsmlMoxcADl7VaO8i4LBEjWLMaBRjDnALFlPOAl57i1dg4Zn7v8Pjtk4YodkVZaGnYY7AZp8uqd6JX9KsUxSmtjBAoRIjBXIy2EfYPFgWIiX2FrPp4HNRul+grlPEwbFBYckcGzCvyFTAZ8dUwKeBwwWPLy0/77H+7Bw+FSR0ns9Zjw0SkNQhyhzx2BgLV4LEZHXtRVkFIIF8fWEzrGymt2Gj2s6S0/ZxAm7cHx8WUahxl5wii8LD73QcNhQfpCrLm915rB0/+5deWDqoeWWqmAv2plB/X2U8+qOP45SJDl/jV2Yb2DJGn3zQ/JC9HLNmtUiVmW+Diz13tV3s6bde7LnLTPKX/rjtYk8srq3m3DDq3Nlctsa3D1J2WfZrwbCa6WugBfmR769duBm4F24GfOGmX79rHfiHHacIxi893TnQ2ubPfuDuRpt4w+hpbfMjaX7UaF4r7AaFPwa7bWn6/O+0D1dLe7reXkbiOt+PETB64kxnRnLMk/RRon/jJ2d9krHBy8/7dFBC6ft9vjoSjdRM53xukhtlT/lzE+qUzhJ4ljl3+oeVwGZOS+OXncZkwurgRkc6SCJjH/fbkTQy9pcPjY2eMfl2VEcCLNF0PFh5CvFdl1Dpkm6X4GeTQD3Q5tYFEwepfOlUf/TIVcvCHvBj3vw4Vf7omh9vKX/4y1BBzJrPmpkg7dCRnead1+EXALzXVRwfwTnT+2r/2dUxE+eek0W4ytdICyWf0ii4hTceJvADRWTuMeN7AIXKbUqt8WdJzzh+qf76Vrz8pZfXkCcq3wIamVegClSkzMCHNEVq0Bqa9TQlH67jrJ+JMqsIGDKOWUbw44IYgkWXK7qvPBTw3AvYNt5ELeBpROgw+ifwIJzQTXebXQi8SP5KZiFyn9vLY3vjK7XUor9ys4bwJW0B0uWO/hGj0B43CTLKSigWvgUZ5Xfx7jiVJ6Li8K0AHFrfW5BAdQe9TlZZbVG5c0wrWoNOtpHm0c5bcuNjJ2VFiiCK3QZYLB89fK/5Ubq+szWUa1YIRXIkHOHxtPGs8L+xz7fRwjG+QVuA12HwG2X2llLXFFi16CfdO1/55+uSqItdiTVRlcWWurW39TG55yELFYy1J2QVl9pz+eOTryOyR6O245SjCS7vbSYV14+TrxQk/8oIzRL3yWJQuRv3VttiVprZ7mCS8p5N6T9O/fCRRqsjyD24OzDUPuqMxu/4nZc16vg2nRHdOD8tnEgnDPcHPvPy8qXSy2z/yWIOZCRmHtQjhv/sxoXKI2KYf+leUjuqfBXm8qHcyyjko2OoqUZ/xrhUErJDuajCHrSssBs9AqJhOurp7qkpqZ10j9WCq1Y9Z/eW0Z+ifbzBrH30J9Jfn8xh3FSFxqO/xNNMU8+jD1Vo3nN4A4gAwx/A1HRyWg+4i+iI3xv9BV7lQ1mMooPYj+580TIpEzib/VV4SEStw9E5GiUfk1lHpbtY7tGf44EUJ/UHH+bBSdFyEY9feoRnZB7jPkzK4Qslc8Q3uEgjsduw7kHoZL3dUMRkIojGvRU1ENyaxwYzenTRivXXWufykh7cLXeQNiwqL7eIdSyXW6AXSofUrVyiYsQp9ThU2iY2qqedqEcDdNeEAcBWENW9mU78GXkzRTO8mf6FuMh7M8X6bJFtz1jZ1m5wztXotoN/+JNXVaLm/hLnrXC7zq31Z9a9td63vvZSWdJUjn/rHbOEW1utTbjlDdYncueq9kL7so/xV3C7HwgEoC35KpFS7sH6rfamNX6b/Y7ws4R0HknOfLqVOsKw7g9vbG3yLS9/pdskakNkrBrfx41DinA7GHvw+8ALO80GSgb6iDItuK4JieM2atOb6tgoMdeMqIM0fL9Z52n1Tn1x9DyFLPjo37Znfl5Ke60vvPa3Zr3gMZVD/MNkdZFCQkzNRkC0MvYoj29YQIgAfHXXsIjaDfMR3gqWi9AwCso0Q2BLGhmKx75pi+8KsDy2JdGdm99Ie+SUHR8CTzDtZ2yaHTVv5A9lA+nqcPyWv63d1xdS9TzhsxO9xUknE5iQBSH4wBLygaVrSQ8T6413tWPZPx1tIC4q4yhVNbooWDZqIJkkjqHEIulJHSC7uimu5GxTaEqgHcgIboYjspdhEdNtzBnfRRQxNH+0BYiuvyInADlUGFgsH8JVvrgEyKZwGn+Uo8TiPrNrEjjLy/y5qIBuH6Sd8r0rLUeZQ0XKTuEpbxVFl+NVujzyVEeHyuK7qDjVoazqEQ8dxtgtajLiXWwID0G49HEAvN8eFE1Dz+ePm/FBNj7EurPNCRjHMW+RgB5hLvLAazw4yhzPt3f3/fgw6hs+Ps/2yLbLKK1lktX8oRgoI3HYi9n4k7BOO+UYLgLGfkk8kPc4mWdfy731A+fsistdjWrKX4I5lb7pr1aJs2R0QAAqjKg4K3PYzumAPYqC6jygkPkHDtXFwsF8nuqMJFBiETHdnvbNF98s0BbTsFXk36IXdYp1MjlAyN4FZeM2stos6QVg8EK+VW9jVwysGsLR51j3u5RvpQ62jj10oPQ2STO2FWPeWkYWbCPlN23JC3rpoDEmuG/Ntb7FkRP01hatsF8s4vmiWO7mgBaZNpPNMlZkbdcDSI5XjRPdJxXdjvHteoCZ7TxolNoDSHN3UEbfJ3LYuNIDEN+TMPtca0XN0I8cJgVxh2LnHeMabj4CEFffwHjLQUaLO4oluYB3W7kSsHcsQGGoe7kJC3FAZM9lBaXaijnV1gKu+BjqRTIIFMiEUgAei4DAogWL1wDmFoh0Xd1/Zt8nDAP+LwHFPhlVlMtD3LmszcVVCRpd0lcBJE8WM/4SPqAnH4mMdsQzfS2Z6TyJo+t4kbZWSysJQbdiGFvro5nX2w8Wu/D0KWb2X6YNDj7LSH4vyv+d+blbZ/lTDUKGej7/cmw2QEm4iG4neC9yNAyMwCkVPI2Jq0sYiVQW5snoueuNcJve6o6QhyYDFeRbxJi7+ml4sAUfcywa62W9e5nc8ZX5E6rRg2f1AVCF+6YTQDrB9y2QDwp2WLyanZiKr9Bb5Krkr5xyEg1d6K+Y6qv1V05X7H1EIMASg5c0lqVgRwDTsCyHloWRuJ7WBc2XCDn/Xb8DkzEgym5SuOrLNE+F2w0w53k/xsoYLKZJLTCwFvUiNgRYpUBYXZKiCYA8ekBwQUBXzxG6CwzI07tMj77cK+c0uCANLjQaZKF8bYPjDo2dX+aXCPF12ZDwgqfkX46L/pReAmPCCQKcAKdZZmFPM8uiiWmBLSU42yb5Qn3G29qnyEjSMtNFnRxktLyL0CXTXeyqT2XUaG+T+dPsNrk+O7yhUpHoLSYpfdVJkhEZ6HxZf5kZ3DgxrWzPF4HjeptpyydWDl+8J4J/16gTKNMgTerxy4xVzJDibv2E5Xx3ef+VD0rYhp20IhlpgEdu+Szfd8nb8Bxvwxnv1l1OL6B6qlGFzF5PzTP95fl8S4TJVokwec+/OMLq1vJMppyc6Mqevj5Np6+fGkTiRfQS7664PIMdeZVzCGNdH2unxyYg+KhfCh2BvQlaNCwtsUqONxnOCDqCd0O4qYPaEa/loKZaD2pcWQ5q7/uJWQc1W223X2sLDxAkV+qReKPCCo/JShhi5Mgt0RBsI9PZR+55mSvYhvY0FpVybMide9DjowZn3iOgoqlJUGpYY0dGZ90vRvLbb2y9VsFm5FdPVbcUyTMOfxMacLREEQlxH/uzl9YbKFmg3UMDSb9oAn7RHEXszRrMQy9tHwyoIXmb9o1AHmRrhuGP3/9Lr3ZghdvZlrTC4G+73h/ZA0BUczOEjbBcgh0FBFwsUe3Yd+OMYf743xxZB2Z8uqGJnlx7MuIWfubuBtTtWac82wbOfeilpmJJ09fe3Cvohf9yKg9wWPYpGVGIkyG53J0s0lurw+E+ltuvK5fztrfpdPVHN7yUo7RRdBgm+7Hjc+w14xRYCOfBJ6EappmqHtTFjeOJzadgw8aaRwO2rciz5ukAOmy5EJgldrPHcdZdzfI8Se+HKtx/MBACLfrEjtuX8swrZyylIr/B0y+W4ThnginZpwe6K1mmBtR/4WPX7Wv/281KoHG+CdGHpDTSQ9NjhsMi34lIzqjaL9Vivh7xHUGH7XWNrB1jFbfOXAEjYxjhJBciTiYp0wbzFpHhI5HwYxa4B3wXpGR6Q0lPOujSbRreHMVqUZwZuB1YXMk9rpKjEa/s2bUr20HMcacck+mn9RpQexGoNLaMQ+g6OHTEa+vpmEd1ANawCsyzFhdwWDRG2EwmF0FmOnvD+5xRevy6Na1XgfWo9yZPmi78qvEIMguWzkfKBXZAZurQvpyiyXk3lFQj5U8e+AkwQuyD9jaRC101pMMtDRkWXg7yJiDmAZ9vQ+pah6C9gzjRjs8xJSUc4p/Wwsl0zu6dTmqAu1hRvxtIgJ1L4rzKLH8jHd1Yd8eao7IhTj0jHePUM9AjiSKQIBtJCYNC/iGGqBSSHbtm4LzjMzpCes9DFpV5KPvzVCxv87xYCyWm82Fo0UX3RQbPFkL4rXpREH5rhfCLhPDw42JSXCKkOlRshdhChLhdm9Hpeb0AJKO1yn0ixm2UP26M+IhFTruCtHg4VPhEn3RnlqRUTinBLxXi21YUrpSGOPioXSWiprzA7+KF6YSqpVjWlEkRrIGofh6rTnIYZBdOBwDdncArMxKfJ+c3RiY5cqhDDEPW6PiSWznUSwdI/bCgoflfotlfBRlbX3VjP+CIuHwro3YKbQ9qFKG8niJ4hbMpz5uhWn6VljehyKqirl6irlOOk5B8CQ94Gm9mghP1C10XMJEFmTc2dW5KLvWWF1ikBah1atncvHQ+X635PH+UJpXURZlUB2iSPW8Z5ZYYxGwsLOYrqg6JZZhVDw+CSGXC/r7mf9SKGekg8HwVdDI2Q5mVg4KUf/AZdJ6cCfp6gcfcC3EskucyDc/AYlTW7KFmgppqbU15KO8sle9kKB7hHW+9d6SavK3Lt7soXkKxxLrI7buZXMabiQM2wEWAmjBG8vqiCeeiXk9L7pvUbASU1lsiL0sGusQ4mnIQpq4jDP940DM2tYN4zO+Ct7KDBTwbwT8Z18FfQua5e2/cUW4Gd+iEmKaY47io3GRAQaOxx47U1vzMlqLyJx9d6oamY39OhibPNTR92I2Tv7klFQ6rbR+u4uT9rD38HS79H/VgImfJrBYnf2BNxQueVKgC88g900OqDOMO8pBng/dsoG2LF0OLGzb5Wfh9ZtOut8Y3y9jCqtfWsPyGizaHXyqJoA/MKj0gnkXHq2HuQ0cbNqXKSPqwGUmvxnsPIYC7JZD+HAfSywoUwfiAQYF6HD0S2mL7DnRAqff2llfoFApCs3+JUfSTMoo+qEXRB1XE/O+2RNF/YE0UfWBK/6AWRf+7jSj6D1AUfeBE0Z/xJEaiET5/1huzv5ebe00yIgbNqHlV4vhkmHCc2uhwUKX6Ym90k+3XtxfvTjdMydUeLt/yVsPcBOegPGEUZ1FhdzNcnmWjPnT/A92HbERW7z5FJY3KQPqRG5U0pHIkKT9YDMTAPaxVgaSDP2POnhNUgpaelVQjPSfXqDAbLAb1uPiBxMUvAt05emcg2whxK0uXbfN3AxDNhOB5ReDKt/D9DwHBHzt3hp/bqFn4U/RF43pza1w8e0QttbhRTYiZmo4mPMilxqiWmjFFfRMXP0Rc/HaJi9+mh/W4+KWVqSlCZqntiIvfBsPHltUccdfDMjz+qrXB4xRGe9VqcVWj/6uaUOkzhDEUs4ASG49ETpuF6KKcrzlKK3BD4gMJie+3hsQjDopWO5dGrqHZ1GLj14bFb9FXtca4t4xsJ/PM/rcj2spA1SzGKr1du+V8S+OW8y0/TSHGUIWjlUXECg9k2x3aWGwGEge893mrtQHv2A4wZwnK7bsB7/1GwHuwYcB7gJFs0wFFBg/WBLxfx3BnMmiL5m8BTQ/jaga8B6ubXPJd+IT2Gax/UIa+g1wp1PxWzqJ1S6Z7xCoKE5+wXcTL0sKATQSULLHVeHNU9G1sdTFEbPGQprYCuX+EZz3dp2DzbTrMh8zLzxpejrcXDQYDSJM8ACLrfn2xUGGpIFTnoxcKdpo6WN5AJzyGPr4k312FggcZv5mYgQ0kFDyphquLIX7ZUPBt1O+AQsGHYIESCo5U22gMsMN+SFxouzbDpFDw7aJDLzFlgPI9/JAWHAgpAL8V++si+sCuy2C+lYVFOSTEy+CUHPZjNOBu0oGW1R3Y1R1kluGyVFFFe/OmKfHkA37wASeefNO7kI0nH0g8+R9UDflgysnGG6BYFmTW91IsufkoBVKv0r0PRPeeat5MVtzNOS117wtGoneyO7GYep0rpr7M85RzNXfh27t9wa4wgZpvHUmt1qcQCQWklvm2gsor943ehRwOExZw6e4458FK7rtXe/+p74dGgOBd2+ddW9UvEODrA6AT41sDJOny2syEEZXTFQMF+xe44cbORONqoskLIZBzTnbS1NCtX34ZMJ6HmANdg6OTlfvylK/98lniRQNdHRMUYm2+GdIuIdAFBBKEEFaFKzhDBbprr++Se7tq4ZZrx6JoLKhshlBfjpjHQtchrGmS28q+xw9ZMmtfZE7VMOF4gAle5rXNI8URaOpW8jWJtG8wV0lCux06Wsmj8j6o+pAiWd2IV/fX/ACpedVh1bLCGEIelMPivheLCKtOzk0PiX+XjSBXayPIYyqHU5QBmax63Fh1DBozNa3izwA1MUXhBEFSYLBdhZkmN0IXRe0XMTFAmEX59rHg1gJs2UzfQMHPyCPG26GzlTwTKMTLHI6DWD8GzZg6ZM9HjxdSwqkjDKgOtaxcyIgbYZ7iLuR+z+NQ+xJ0lX+yv1JZsfyV1RKeBG9+PDVrxOvxAh8e0zWRz69aURBw7CZNRMsXIA2z1tQSP/7DrTerZ9fNGugKZSidrjvAV/q+Mjctla/kfoUoit4WfGnercSokzDqJJwjAP5Ws+9bAuIaZlR6wMZQMQgGNT1hfeT3U7ScCd/wycsZU4NFukzolFLCC/OBnsv1TIAZrOirT7SRCJvDud3l3i5pGfbyx24+GuM6qh/yIz54+WQ+5eyvPomsDKTdkmi1us6vhLgDp1Tg1HXhFK29l6pL5TalIidUdFK+msb4Sj1kPUx1yJCRa8wwVYAEkPZIzFQnOaUKSzddWmjwSt/qmkTbJ5ASj5lSjcSJdJWBB0RyvsfgyTbHPj4OcPaOm2yefNzMgIvPlQGeMKMqPSiLurvL9IUdelH7RBeczleZXjLOuxswJooVGasL2gFN22MTZxXnFMHcAo+Nq6+UGpMym8h0EzlVkH/BwIQSIsngzJjkrcqwiGG8gKezT6ZDGEIFE5oNimwQSDmE1YkhdqZbxbT4NAtRBqUj0B9wIPtpL7AJvwmkBAqBpCV1BqYPYFZ3Uron0joAfQBQxoAmoE/glSoh6FsItlz70MwEGUDTW0FQMQQBIyxo4dPy4l0HZjJk6ehOgEk2OTxmUL1KccbzlxBd7hNLmJsR168y4vprdFzK1VypanUwGqqpamKvqmb6H2i06gQd0crVMeEAoraD0im+W/v/bz85+jbJIG3bRlet2b0/9aut5n6MHfXe9Lzxp1/ZPzR+1y/fDz3r2PtunO81Gr1+WmoxbJIiw/TUhBaSk+j6bAYMnUauNa1W0VURb0/M9Eu4a//k1ES0Yd10s89Im15MHzeZpXh7JMnn45rcc5zvhK+ygBeqgSxqTboyyabFVhOWT8xHItciVNz0UOGf5LRJHJwyKVF6ytnM8qTay1IOasm7nOFFdFQQWHW4AinvpJkEJZUla68SMuBbjqny7UXv5HQiLVN/t0wnLEzddjIPy6tOXygeYsq51whPJhUPVQYdSnAcEBgf8Qq1KX2wrwPKs3II3BwPEjKO2Gxlh6oVDOurqj3qJEaAaGctKgXjux/5zvKHzyih/dpCFwkHr4DJrUGBECiAuQCEKyW5XG9geW/ppULp06cbL76nezLD26Grr+ao6nO8vURxXoC9MltOMFRECDi8pEkCPJRFSK2ZZFjiuYb0ETmTnHiQ1LDIK7lquW3L17xCJ47c4xJ3PSHwezzfr3GwXe0crBRMNN83YOn6QJNc97VBwK//UCUE3Knu/7af+b0D3/Ctf29u5/ye4ht/8Ge2/wNCGXcDKm7FAhK8VS/KjZ2R8oX+2Q5acyZSblq2WfAYZtUtIRtnwRZmoTZiFs8WZnHnlLjQZP+fvujVr334O//5hopZoBy2es571XU4RKCVyyGCOofgNOeZ4Q/7d6W/uuWm3Q+XrVJn+wyjoPoHwCgAmMAyisBhFHgy4cMoi1d7S1DstowimG6cjhyMQtESPxvUZxlFafbhOBawMchKN7chi9qQXCLeFZp4Eeu4jhcYO8Do0MydvMgBH0w2XmdPZzKhm2ZN6Cae0O1Qg952aRMKJa/YZihiDzNDZ1ZHvIwvTTaz5WX8GWXk3oDoof1yDmLXLWW6UdZ2Q9XYk9NH07IA1inM4hb+uMnmSMPnnRy4QjIkO/LwV45WYulR5D9rH2nKiiAkiLUu4CWAtAh5w+BlqEO+iUJAPt+pUP8RyzpFWjmgvqW5dkrWzl0SzFTHjXrEOVUDI48BbNkfRTFkGPtHhMvMw1SZMnuQnX9/EdSYym2ixNlXRFR6C5XeNLE3G1xXRXAqm1NLx7Wg1nD//0L/+70bjENKycHAcagJKyvs//TgNw5cl+7c18oLGrmtoZamLXW/yLP/7ree8d9v/A9/c8OmXo7wcnRtTRDetW9K1ClTKTHQzKREXDOREl9b58FkUJvPxY2Ep1FSzsWBQKtSeDCTYCbUIpQ0X/fxOrZZaMVqzCcqmc8+hx46a7E+KvG4wW/gDh42cTubJd3tL0lNgdRaugmkm6CFraGbJg/Wfq0bv+zmQEXFClRsO9qQf5p3Wnoi2oJ66rCcZEc4V26uVcgyY9zb5iNFfC2ytjrmXmPPhHVUY72MXyEqfhaKSPPAlMSLJmY2dtrpZnxwlfga7qkgif4sKPdUKqCA8d7KqvvA/fa2ymmASVNOUw1JlVKuNqU32pKm2HRbBNUDWIUjHpaB9wZWL+zdgEvjTfDojRfqJgIou0rkVoehxUXiRrO34I4YpaAZd+5zRzSsLCcd/suF4xVBwaTwsen69hCNFyCzKY6pD1jzEhIdSsBuVXktjOMG4GRxrAppxQBzUgrVBrd1ze9mhwEwX59kY/UpR4oteCcPWGQ5vuiGFw27AvZKobJbyk0wbtv3mnvXTe7WhetwlIhhJHYUwUqRwHnZfJswm/BI166Tyf3o9XZLDkB9IPDUPMa/Ef0bTqasWnk4CGFACMSIAC2dz2vDGbyayk4GvL0bC4uS8hJ1Wf2ZQf3Z0xmpP/sVZQwE+OyHkJFKNCtVopmrEu1Tue4Z43fRE5Vov17F4lTFIPbKdcb4MP1m6nA91eHA73gerIg9kyyFrCqFo6nx8E4vyNiXYC0i9RuIhCuFce38VBxYlYsiyiJIrurYkdSwI61hR8zY0a9jR1+wo1/Hji5jR1cnFjuo9BYqTU15ka4UI2QsN98meATsSHU60aPJ/ej19roZwq8hPLhdRIuxzF6zXa2m5kX8G9O/CeGN3NkLPsRG3uXS29qXU6RYNrAgmP5BD1fgcljH1eST9z3EXs6/3aPtyYMzRSOmRBE7WoVL4NrMaiL4nr/e3iJpssG93TMY/bcqYi0051A2j9FNXmkYc1WdGoO64a4p+HKrRUjtshYT36Dq9MkKhRMjLijyca6F8R70MN7NtoYL1y9LftsECEEpcPiiOZg/AlQSTXwCTXwCKEFevx6evGTHKoWrp9uhcdBlQufLhBLTwD/K9JTaGsH4JdJxasbTpZh57cOVOmG/54CU/sQVVidFoEOKbUHpUlVqlhbKduEicJiurCxqhbYfnZl/Vln3iBQypPxiDZmlq3ZFma1Q15fx6g2zFtpJxj4ZKSQ7pxIPbjx7VfD4Yl+xxbbryk5XDLylWpbflSYuTPe/5H/55h/7vjd8+J2fd1R4asfhBde7/OYly2P1XwzDuR7SEfY8zxrOGVN8wRSetqm5aYy5vkSY64Ev2GvJurzHGB+rtyRRXEB+/kme0rKmfcm1HQsu1dYefTNC+VqRDZNxSvurE4lWVrKcXV5Aksh1F4ZligLpLVOrOt4hbwIrednyLuGl/M6svoGw18da5j4c4RlfdcyDRJvAZToZZjoTNOlpVd9RsimXm7FM6/nczbjr3inYakJTRJjir8EU38UUWwEjE0MlYA9EqQtk/LSKZtAxT9KU6xjDj/H4jAot2/hSYBrgFDXkcZnGI9dzxH6dcUjahhTcghnC7Q024aFUigjBPF67ZHwnaj72tJ6C1lPmZMlG1C8nkSbdk6vXWZILvlcFWG+heRRakgfEmnOws+I5yBULfnWbtzZSDy9IHlW5A4HUdh3DcWBjCes3ciNQgtl5ES5LZk3d5P/xWBZKB+VSnjWdhbZGYvg/9x2aIUXg/xHz/4CjmxIdCP+PzcIa0BHDQOlSVZpqVdvsQ2HwYXlxj05WIFZis4/B4UX7iaUIgAC0FDG9J5EozZVuWdxP+LIY/hf2YmAFagviLgYo2DB0Z0GErkKsAgP69gb4PZRKkVaWrgJLVwThEBAOsZA8zsuG+VY5Ke3W5svo+JtwlDJ08UYVKNaEtuf22W0z4OwqMPANnSlQXTao6Jmi/aYtw6al/Wg9ruZquZlcOtlMF5weenfWolhhLRy1FjVObQqROq2qxI5tXAihvNaK7/aGo6lWQhKh7pxcATU0fa1En8B4gx2hYRSLtBr/7MdrKQWU9q3IQlFQGkVRaTX0nCQPZs8tl9Cs228HtG5w77wy68bzbvdiYh+mPHHcCZlaL3u523OAti83VjAPeG3Ya1Xcz9rdquLZblU6hH9hH1k4Sg8rD+fkmu8Z9prgVD4Qn9RWc1OFa6qBa4NNWPASHYlVE/JdJVb3gGIKKNab6P5UZ3WnNuvGJsiVCHIpnbjIlaxFLhSpErm6DnJ1s5t88IC2WbIikCW3xjSbFMD+KKxb+ojnQ8auMMUva8vBoh5bbYAeVp7IIWmHQjqqrL2IM6JyoIT1KIyavofsUYiLjyIdiUdhoEPWVVgPwpbJkna9xQVCsXdhux/wGzzPF4Xr7axwvWTbPJsLVLPwFtbDdaq4NoOPEsMGk8FanSxpfLVvnh7AANfqY/dVujM2xNe0sXuogJSbe5vaWBaQ2YIe8I35ISsAI35/Yy0si62EnC1aWMSqbEbtuhewL00yYWWivKUIAEKxoURsQ4md8Qjg3XGxjrVV83r7bM3rnQ3N6xGxRLSpXNd1zf1MqYgNzdXqoh3nZVH0XlMRyyCPeQESWY+Ul6fLmfY4z3Z7lF7lNjWq9LJzVeRev9TL9lsi96LZkXutuMV62SE+TL+uXnYoetm+HszWyw6hlx3puZXcX4tbQ6xhPs9623xh08pY4ExSw5nFGs7EjDPDujJ2KDgzrCNMygiTuspYaFipdBHK2EWjhdWxNh+LUMYCYZADbKJTUsbC8rag522jQJW5yZRVsX0AuU0Lq4NKRl80SLRIjKmPQ2dfBzortbIBsievVdHu4aPXXlHRDgGU31VBmfJbLG71LN0t7p/uXlZbVIXwfNXxfFX6Ms3cOdcyusqH1bFp9ZTVUUDj3qQkkGXNcmM9LqDRCo06hCd+cSMJKvPbijsYP2ttpimDts+O+HK02a68EoTI5mN9OU7L14yI124KulOFNcNR63dUyCncI/PXtg27AqIEZV2MnHhNe6J3aBaIk6SldJa6nCSj8tlJrjlix27lnOU60IFkuY6pQQkGgKxHVOjafWXD5lsu84TD0PaUfqrZxUxYEjNA3LSmdDbvhg5WbbzJ9Hipezp0l1onElmbZBKxYBN0S+a4a8ySftQLSr8VWgbJP+3OvF0om+WZsRmPTfZJ9c0YZrkTXFMCRM2yd7eLO6XBNNRqrR37rz3FTOkSWJLLMYQzvWQZO45ff7YRL/GavMT0MZONNAnech6mVFVRqnIodVUFJaV+6dMpkPSxps7NUyTWZnO090ueX3qLLfEk2gW62YS2EcpqvoFFvCCvmeUFec3mtzFMD5RUKn80KX9OlsqfT/uKlT+tKgRtMW/nJat+dq2nC9jl6AJ2bl71oz9Xqh8zpIvW5+zcrD7nWEDgDzcP/svW4HwOV4i1NVGprQkuQ1uzgZrmEjQ0m1LPBFDQHBI0uBwlzM5NKmGgM/HK3Ea8OI1bmmYEFb3z0+1pO4Hd5f3WHEjQOVkocAX2A76aL9gzJ25nbw1sxJREu5FEwAatYMztIkNOpvjFDp/k2KN9H57wua+DV3CQw+cKv8o5D7MLfiSXXdOfhM22xBIEEkvw1n9shMSWsQR8Tg6r/TLio3JcC3RXHN6OlD4c8i6B7jo4mCsyRU7zhCcqJ+xUx2irK+EHpjUzHvwZ1GOnH2hXhDQ2xKWUuQmC2FnlB4JmQ0ARVfq+iN1rEpjVOLTnZGnf0RGgiM8VVvlzsWNjw9MJP6ULWwXUppz9K3/PC+21TjRuTHjjXUk0M81ocutfhoWrB2lEmFsk6nKf5xZjbpzNQKZWxNMpDMCw9vg6nmX51bFj8t2HUytKV7j0PhUFlSe3f3loxLHPAIoT+4w5lgJUh7GpQ1w1KJEjBQmQJNUpOVzH5XABlRPCFQSkRoqF9bBrwxxdoe5wPgXG2FgHy0gNuQbTshUd8WpkvBpdIh0gXh7xoohNOtJd4Bs+JRcBFztrg6fmxbX4FjG+/agKVYlthx8T+mYvRKbX9dan665POmN90tnrwywiWm+ZWi4faWECWCZaIXaway5RuKITXqKQlyjSySRPeHFYdQ3+gMXB5wqbxrnYWRzmIsnaxUl4ce5VQYiFuXyaEaWkziNeEL4C7qIIJpmxIMmlEUzcWIm4uRKRSzAJCCbkNWknm7iNbMCZYodsYiYbfK6wqwkXOyuDp+bFtSsT88qcZOO478gBV7cEC5Yae3985tOdZQ6ndy3liCBq3FgbasDx9b/g3Fgb2vy7fDEQx7HjwF8LQNxbM9k5nKBT/YD45xsJQ6tKlohr0//WHYDkrTvy2LlESjXFjQOlSKqgCdAxZUQBcCizeAwY46EpLlCDzfjZj6kITj1BzbFn78l6Eg5I46bzQKt6fvtKAx6xnFRnLMxwUhkTI3bX2j4ZxXtA8Y7uWZfnaxjLkfuoR1jeAxpChO01cl/oEOOx0Pzx3KcQREBI9+ktjSxgRafFEZo0hmbYKb0AGtK9g0Vf94ks8GoPb0nKblxKNisYpmvJo0tX7OuBXF7UBxn0JROK0l2QgU9kgKWcFFgETkX0wh25ktyl2mCnxWsskcHrPwwSXxZHPHHaOY8TQHr+M3e3B5Ay3dVlEl69Fi7Ei5XWbirq8BVFVrrzARZaKVXyI+VaiwMj+JYnlQQpu7EkLXblCDXp7jf8mWVg4BvIzOROzUNowhwIywpXA4QlTIuIr3ECxzhQ9HcUvDoDuU1lWAswG7AWawpxcKqH9t5SWKo4nIR9RQd6wBEz3WftkEPOZDKR+kv7VovRBI0MdcRIiErax30Y6GHOjMnWXdGjFT0nv5PTq+bNqDamwDQsvuPMNbtm6YRlBsIyg3VZZiAs001WIizzZSr0iPID83cFJVsWXmFDnhaxFXMLwg+tsBRpuRSZLEWvNu0MBX1I9oZCda+2FH36LymXItPZ+ksxAEB1j5RxSqe0FEm5FEMzuvpSDFb0sL4UTvxhv1wKZj9mJYoIgnifBPG+jkpBvO8sAZ6YSgL3vgjiKF3h0j8FeSuW9h5b8m4X/jZL2+n6tJ1eOm23y4AubbN0UXSXsZIkbyRfijQOmdXSeMI0js91BdbAvNWgcSuw/nqQlI5qwDNsJZeJXzoPnCO/m0+giU/JDHyKGvhUqrlwN0siiORqvOoYlAoGpSUGbaiiDBiDCCckA5SO2SkNbMSYmBpYlKyPRSPItbrnYtGI/gMWJQ4WJTOwaG6CRoa6p5O1WDRvxlTHorkVPe9gUZ1ljkzDjpTNypDkZD4STcgIuITPdTUhI/NWA5esJuTXAlIaqCuDR0g33ao72DwSxTOQKL40JGrRGLhIFLpIFAOJAk0/dfSli0rQc1hUihiV8LmukmNk3mqgklVyPBxEcNnx8CdWWS3OzDbVJlSPIRviotohKp5xiIolELFUSaba53XCMcRm31Yo7OuAEYwzefo6EnW7HH8G1fFniLBFc/wZ6WHt+KPAc8jpsuFqB237NB9SOm61g84yPtXDSduipF9/pauH03zOvBKvmDdNe/gzCDovpDtfImjWQNCsiaA9dtbTfZ0ROiZmMEWqA4uO/o5CtI2Cjl279KXycQo12FR3a+gY03/BGFTtL5cn1b1FtM7+mFBoZYSJEzoGJToumDE19scFBx3T2pjiCh3ndDbh/Jc4aAEHgfGS7lLuyxAsy/jslHUkUyHUuD676jQyjmxG2mVRynfjW6xJSNx2GL8426H2jc+6gkRxKz5VPUldpxeUdSWunlPWojZG0FKbb2/sscOQvFSE1EmHOkFofUjNeNKMx324TckguTV/rWGOufaFT7/MuRjNcm0eR2YTHP4fFDEv95L7MjoEBSCMpM9oXt4r8SEUclHhy3XAPkdnuDchwMKqvNHhqqHcrwWnbJCJN6Y1XJNwVUdUPjsT75isTg4xwwWNpc48o3NL8B0H8x4S2+LvG3YUfR0fBIUrkmF1DwZnKhtqeXWEK2Z9EsfobtxgvJuA0OVgil3lj6H5ocsfI/NjZ/nDID2SbYu2zucFJn+GOfwzAuXpIf4l6uXLejhzrwRtlJdpjfAxkntvtQ9Vgy8BQoHECikmjZ5WlJlf9zBoGcsITc3lAe4D45H4OqA+aTgt/dou5EZ9UeOmrDeMD9p7T+hQZO/2erXvxYfra8601+YBHYkHdLyhB3TMxBIhK2/UkpVXe2am7PDM6XY5g67pgDGGh5ortKxDTtnLi4KE47QyHiBJowt0TGmakfq1zFuM7nOP0SEkA1CVjwMA88RHmjJq8tYJUvi4Utghg7XWbqyVTWm4sTdSIFfp8dbW/k4jO+XYAIMuf6RrBvdVpB41Ux+x0hTRQkYRSDzg/dUN0zHc8OjXc5jqUfDu5iVr8H+lPqt3i5jT3Me8qZkUjXJpsvr6NZfiBbiE8WPOve2+wEZMyCgI3AsPW6cQu5hDeQzHPLyG0y54Gg20z6yEAW4aB1PDAy4uAmF2gSn/QGPaqO4Ys8Ps4TCKDvukDYiNeCSuwYXfvEReYv3f7l49qWxiTEsrO8tE1i1XjFMexKTKjZhWs0JjdPN3Ne28O+u0nlm0ySytNQnMP5knNhRB6cjaKKKGCLWa95AGAWMAvUL8hcg+rAWwjXSXWYoPfhZq8zHP18otUBp/ucO2r0dGfCp3cQxAPLQgLD5iLquHyDzV/ZPTYjHfgq2qhx+S/C6VWos6JVEq35KRrv/FlZ/SFjPYqQTv5om9UGILfJmnow/TqpblI5OWautU22qTYnEV6ZvNdQtVmU5W+ApmyY01Piz+d9pGleM+6tWVN0x5xEtwjp7qbXBqXn0Dxpjcb4Y8hyvazNIPyRwOwNu74Rb5cjcz/JA+U604J1WRECu3tyUrndh78tbyqNKBegEPFur3EQfl8piFMv8M6uy+fhHAiU/QRQDavQjg+3yfDaDWcXkznmDq2pleIHJPFYKp+BjZKQKmLfWN9CQAiwtqftmUTpjq9fmgKQYWumWVSwol1K0QvO4SN+oGQGG7xRDLQSja2gzmilxSfvDe9quNHlBqQHocuSISQ7PikKTXXnJykLPWdYME20QJYcNBkeW2pFTuhesEhClNlotUZ/gzJNrnDOIDkdP7IL5AEqQUQ5L/RzVZYaRjyjg2GuOYP5C7/ALd+3qS1xL8GWLvIqZUzusB6D3RXbTMHocsC0GuQFs4eY5qtxdAUbesR7UULIrYyByuqFZfTwcYOpygPnJ+o5KEm6bNBsXVEe3KnrobmvSAkNWmiK8b6tZcr7MhGivc++q14sf5193dzu655fKGms110bm4LoQEKto4z9s0+wTh3jL6faOlh3NrNnli0JSsUqsZM/zpVx5p7749IaQO0FidzNb3/p/tUnz7BsvH3ZUg5tTVKDDfIKi9OQ5wvEwNlVawqaKRbJbnoHYxUtC4GCn4aRbAIBSUigN7AUUsF1AkuKOWm08pw2rzgrHqgop+qaHotyjJejqGkixuKMm4CnsW327qYRPXfY4IjA19RyBqFpDzPhoBrRBMY95ifKLoYpAHM2A4EAjmAXe0AUR6DJEe9CSh6bAH3YgZwMEC2g7Mw2caxsQZynbHCNAhpZMeIP0nnVzxmMeoKJnU/kd/6u9/9znfctMN4C2ro1/Axk8O+RkOddQKa8Pgx0dG3YncCUCJY6Dl+HrDoeTiSfF2lB2SmCGb4NgVPbmisIkYNlEGSBB8sEwlfCKBTB5eBGCSzQAGnRgxoIkbcYkbfUy9p81HH1ZJNoSFTVBGAkq+kxYCekigDNfCVo6UAmLOrCK6nq6h/9p22hVtBnTA2B/+7lGHm8WizcjeU5Kr/yVOrr0auWaWXPHtS5Biu0KxFPEH/CoGFOVHB47BdGVjyhWSFQL+N0O5vRrlZkS5Wt2fD4V8McIKrn0L10gH0I9PH3My/rFPtJPxJ3wvOGxFft1w/GaR30f+Dp+lZY47cash7QlLErvgLAWCLj20dcAuuv7ymlfoWUcrI/A0TuYBncw/9QlHjxpUgkxr7TeuHmmvbU9euJSCcREdG21j/T7Ddx7mjKLKeJyNZ3Xye+hk00P6hfba2ZvF1a7yP18q+FoaO7giPEU6bb5E+xRwrzMrp7CbOZbRfQ/fX8NJEWurwCpEx6uPffOoa6qEZDRuhQ7bKmC9MH8G24NadjbtGzuJgj9Yh143tUP+wi5w/N3j+Foy9E1hQaTDcu1c3MFHpclDnhwcGkmD9xbPOclyzFNlW6lMHXUX7h2TTcUOE8ZfcnOufpDT6Wj1opMcWv9BnL/DKz3qWlT+0mZuVwtn3K4WzrxdreWOs1AuUOPkYnE9lwU7D1zq3JrXLupY4CeMrjXrRQOw+soBdue/bcD+te+XIdu63WLgsc3Iq2xGHgHEK7WVXlvOlNk2I3AdmX+gfU1gUPiIAUb8PWuH9g7mngMVFmSSFqgkDlTWqFnbbqiOLrktN103xh8Cwk0jjghDAugvRob2nY8ztMuiu+98nKF9ngD7Ed8PmwztMU0CNSv7UxFhbL6OwBgUPiIXLuw40gKX2IFLiw+3w4b44HTJbTXDu5T2GcYMXJezfTGztO96nKVdFuV91+Ms7fME2F/5XLM0d7LqEnlLm+jlX3Jbbtx/AJUMA04YlBwp2ZTqwu9bkUzjsSD4JWSgKvnKUd+Ho+/MC9A9cbsKN7wAPSyvwg7t8oRNfA2MeA2krt0sXoQsU5sP1bKEUcucI2fOLb68zhLSzna4DvZWePO+cKUZgV2/K7sv3CHr99BjtS9s4HeHcbS63vGj9bzv4BDGOXBCKGioDWFVQS2VhjYYcYUYFo+IvLzuqEsJNsfxWkjqLx1I7rzykIy1mg3J32CewlP3ObzZ5/BmMFPL5NHaWj4flI9mxzbDBAw+42ufnIV8akP4h+8gkVq+MlzEAvPSW2yjZbWM5WNgCltib8ovSrb04ktiS4+zpRdfIbb0OFt68ZVjS4+zpRe3s6WGU9+/klPfvOvU909xM23+Mb+WvUvjj1x1CkVOsWTVGXujjyH1WgFPH3EB7jwXqRwovRg8+WC18nMlD3FjniSv2r1cBKOP4+1NJeAyk+HsTvKSVhgMf1+FZVWNtfyEdzf8i+RXLJkXKDIDH/tQvz02scU1WzpWiFSK8aHLZdxo2I5H90ZdMYB0RNeXwAPMyc7Glj81/tCvOtnZpHHWAF3rB7OG5dmekLJNe9f6cLxWdcdrT8A0PtMxE75mU3lHUMnNkxsg4KaETy2/dajD2v3KG+cqY2sp0t7dMfa+0zxUa9qUb8m+6SU1rA5x8Jt/ZQd7Fdr0HoPBouGMc7GLMfk6zuLX7q36j3/V6ipI629I2+bs+2Dg+5boL3SMjlGeRfCa5VajuVewU/wNo48cB+9ElPDXdL6D6pRWlKs7nSJme308+sVXHTliamAoHh/aBCaSpgxu7J/1pDUAjNWLlK8vmns99cZVO/Rg9Bs/YYqcVzQ1JFztLa9+Bbhah7PwzP0ICjl4KNY+ao6/ih9+oEz2U4AKmEab7pZkVvnhH30lQ5AfRAB5oCOaMtMPCmMB7FXjw8JpwPAKr3JCOf3/3Vd6l3rMkdpsPg6Four4Xzs3tg7rFb//sjXD2lUNS/OwDC9sjgzp7WK0c/x5Bdw1y8a58Kiijf/7Tr7CNh5z44tV4yOKEInA/QPxG0WjjJRXZzoy6FMiVpz9P573Et15KgD9jL2vMP4Qu18hLhGnP9u5+x5TsCQF52642/xK+NeFJ919Dx4mR/HzkSEeLeH7ozG9tNt8/4xC6d6j99xzzzuztwXKpwh6m6rdSZVrBTFOKlw4FznxlbscIoTEga3Zhd70jtbsQoy2imOtA4PnJzla8GTub6bVhx6e1WpJ5kpuGNtLMSztHsotGT+voeCEwvRySDyo5WXOu0R7MPm70X5c7qi5T+oW+QHGCMJLckX0x7GCPmJXUVGunjANtTYV6Y58i51Gdcf+SIiE0UMiHeEXvYGPCL0lmnM9Q5wB6lFOQQHKTvj3liKe+WZdaxjO9zCcsYX/zqfvdiF99+UIPZ0vZqHncaHncaHncaHn90IhfH89wr+uTve6ftg58Dmg+90z6X7fRdL9vouj+90NurcEsseJz98wP6Qav3B5/MJvyNWm+geg+p0W+v/4p47U6N8ZwmWQ/UXRulbmhueB73cobkwdAgm1o+CbXjkDBWk/NcQiCM18XRkMN8iOLihN5mbJ45pxC1L/rlI+XRss0YntgtBOEYT2tQlCV1ciy9WtIstfvn0jQWh3UxDaRKuv3kAQuroShK65OEFoDwlP7YLQgSJyZRaAmUUPlckepiGDzxB65O1OnfBYfqFsvpXgkm1KQnl9u4RyaYyq8wXMqB5nVI8zqn/sBpytKmhBahsxsBvjPW+DhGcERf7xn82aCGMY5VZgRqDqoSG4JJa6Upvr5+/+dDbAJLw5Y4rkbALtatJjXpMeq5NZAYePNn2vqzyPx+EdHCn0PEvFNjVDipfKtA46kRjoZEZih2OSWOnZeXpxo/B0eq3/Gg+fZkSByaBifh+V35wU4nVeK3+JmQO0ddFG5if5JrO4lcHcVmcwEeHpHvmJW8vqDKdbMZw9eCSsJypZD2ew2MS0YxkT854uPnR57gHoqrwf2bTKB9ybFP1Gy/1Gy5tLjB5r9SzZwlruGF3bYNDvYMA4WLWokr733Y4qydeKWRC+xg0yKtGN+es9vLTdxhi67hK6R6XAPSptnDMLxGT40LX+XQA7H4qu9e/Uir+ayuoiGlKHpCE+BHFD9NVU9q/AiK5CQ97lj4gaEtZ7C19nccRb79Tzm5s99fxDlsYSHRQctrfjCedgWe01Hh+xX+e1J/PRob13pQz7LtLGdNNGAmYW2PCEFFOZI5mmTcn0NuTEa0qmt1Qy5C31BDNHOaVhOD7zK44M6TuSaY8jRlN7DH3hJpt9zV/MarZcoF6e8vxagNDI2WPWzCv6OoQwytC+x8sHNDYdnix638L3WN6ZjxzozjUanms2PKAMK/TOUJwTQ0rE4muVh2VKqHk9IvF1gIrM+1mEDfWgZJkdPbAKuhSzDJEJsXpCeWgyMtfqFIVsZJSbu9HoXdp8G0Hd74wj1b2VfM6MoU9jGNqBeTKwYmACD5tD65dDQShjOa4FPU+DKaqSXv3xIoaN3xjsAr6hLv9cxKv0raf79cnM6UXdww3FHC5pfi/o1PxOJxvMEr+OSpb0Jde0XjqFRkg8FrVlNYII4iz1hjhkYRrS5Z75HOdJGRkCPpkvICmh446X6rlVvTBtu5HaDTNROtUjG8pH6ToIFJh6qBWmrtiYnG/BPBHyXGbbiikVfJfG1dXRqXzR1EKA6hC5QCgvw6kXM3fRQxIWQrSfLyBGlXMe0mKwP6Nf7qWJXJlW6u9bp+FukFg1s7YJKGyks91+IoTR3xQl9fTiKlKwYXl9HUtezRFl50Hya2qyh3icqc4YWqGefzFnEcWAB+iGEUmnU/JErccijgDNkZ4zeGVma8C6LDe1hZywR4fspqsX8DHE5jSUmNza7Uyhk8w1HL/t063JXJFtaMu/PWG78/kVth8Xth8Xth8Xth8Xtj+YkeYutLbFI03NHecl813rgjK03BUCFsYV1BjXrs3fWHhvd31jXAu5Xes/0LUCSftLiX0pkdtEJ12iPvJ8CMAGRKhXLMWlwhWw11LernWMialtPaX7XMf/fXn8Pd9gHoqejcqCZ/WtQ9tLHU2WVZ4hZVhV6f6XvqK9ElNcwKR2c23YTEdgomq2RtS9Z4aznp3k2wjlLR00bLZBXSUajJfKH5mMhDWigWuy3VjXJh3jxaU8w4eoRDNcC5/o6JCOl8fbn7VpJScAwdcBHFjD2IIaTQTjNz/08jaasLD1TDI+UkcWyNKmbiyiHaRP3I+BG7JGlWUd7TA7dhfbabIsq3bsx94Kr56HPEnxGiEhkFrmbOL7l75i//P+Nd++byoXHB/5pt/ZJ1lbz5lKXNj5418vC8/aws++uyw8Ywvff7osfMgWvvrtZeFpW/hHv1gWnrKFn/j5svCELXzwZ8vC47bwV99YFk5qbf5EWXivLXxgtSw8ZgvPTcrCo7Zw9GNl4RFb2LmvLHzErwrv+qGy8IItfP4PloXnbeG+76/gaQtve3UFT98O6eUVPG3hmZdW8LSFt99VwbP2+osreNZ6/44Knrbw9LdIYTXFr0fBcR9pCDElI1J3gDB8BkOLVaRSYMqRmhACNt+Npkb/DNqT443NTCg7wj40CsZ+pGLsQfYDHlJrm/7E94CzC2lvtfBanHk9x5nXa1Cd1yRkEQuQteTEB8jvBB5bit3vTI8JajTKetmPhAEkfFy3XbP41a5rCOS6hlDyy9qLeK1bVLRG57KvUo7sa/iKJRoc4e9dt6jE0blElLCr8Js6l42b/a0/n9WsrIqOcj/jJIacQ/N1XZbR9/MR8mbO43WsmzMbw0DaJOCeBX0vG2/XyFFFSWd1rP3Rv76J+ucmcbSXFMvOAT+URBQHDZ6M8U3xqTgwp+LS8sf5tPDjgS5ujJW79dLxdro9ANkx2SWLRn1vF+w2ZeYpB2ed8g1+mLEs2E37//vizzzzz//bgzdMV98wJd+t4z6BQ6c4IRDaJzoAQZhl7+WBzoQMlOSiJwma0+BOcWoZPYoZT23S8FDH6C1sJBHHViOJZLuQ6DBsiADpMoglRVEqbufv8vn633YTlitKiG0JsNBY9w6pEygTvSlWh5YJjgbWZnfOE77/zeeXalbcuLLicuSrjXoth2+vckPTaFQrUhiYx4e4gu081omx/aaNQSQ8CK9+CZ0Hw6J1eqsfhAK5lbEaVYoEyXSHrB2e5DhbO8rspZ7Hl//1cp+pNuCETp0CwOIsWgb/hWc43KEwj3pUF5gnogLJvwELnknhHTypg5OrWhmdhndyIjdKj36l5rRz0cJs5wtbmH1cmH1cmH1cmH1cmH1cmP3jOdEO++t7QFsF69V1TcWDnsvcrf5qH/NPw4O9KmXzpnWuew7lSUPRit210rQ+e109qxlVrhw9655L1LMWCWla7+US/vE6R+16zFuXyV6EinMmkz3CXTCn3XSr0A9XDcYnp5B/mgpa4c+R8GfpCb900aJtbO1jU6pUzK2cZlSOhjS6zJo3E+N4qw5uzFW7JrSxjzOz56U/xOGxBgaURdKbo9zirBSkYFC+yVvsEdf6h8Sgxzdw5KGra95L93JNK7VzNClatI9NNbKZaLopOFEloLpyNqi48jGLx7/5rpoaOdY+D5dVybHrOuaQIosEULzX1cRJpSaOwCUOQy1qla0iuG8GFUhRewets7x7ey9wmmS16+abxBvSJL+LJlXZWRGPr5rdWkPyAsG2DFDH5pP6le4uvtHmELnR5Yo+7gR531ji4gSx2vjBzDQevdwY6nBHjaB338/aEZXqjx5AgWndwdjC9DIxfXGVB9HgVeDao8+Czmua7YCv7GkKG1F947ngy+YaufsTb8NRcyc7isLmnncMhc3d8V4UNvfRCQqbO+5xFDb35hMobO7ip1DY3O9Po7ApGTyEwqYMcQaFTWnjbG1Ik7r4FTUlmPMobMo6F1DYlIoeQWFTfjoSoLAhaR1FYVMmO4bCpvR2Lwqbct4EhU2J8DgKm7LjCRQ6UqYIHMc9R+BwBFfcr4W85NV2PmNLbR56Yp0amZtsKopiNpmXYlcNlkVkCcYjm+dHSAiSyxo7Gkb/ZtcEE880wfxYFMDXqWdPrWc8K9zgvgurCHvAw64XNKYTNB0E4BDhu3tGHl2BNmJ+P0+gcIKKSOCcYIPeqEVSHYXPJSADBnYF8x7DtM9C4cC2qjfTaqbDA9JqlA91nA9qCbhb3h/Z90d4P9Sj59ZdvQLyxRog9pddTIo5x0NAkxvNHewhhed6aOrSRS9zqyIHHIKjyqFlnS3rgJ0kAjhJDPAx0BlmW145SfMkSSKTy2FKhZUiJx50QlFWZb8Z+i1C9Ey3fvK3AJM2fyOZ+AiKu04VeXzu9aAOU5f9o+iO1eYzPJBb4TOz9gVuvcGeHWnzjQZzp+kZFVHaM59FqOes5k2QI5NrcqALGOHbSDJnkJ4ImBU5m8ea3UT7hgSEQLIf2J6yI2CfnAI5iHZz+uOoqT8+4k2LeBNOe6qm6VXjl//KOgrkmJ326grkTTb7/g+3Nkvt5X7Ndy/O/aw9mKTBxvhynC5hTWGQ6ZDodNmpoy+Ok4nIjoOGlIV+dXqyiHE/ANa6GI4PPzMfsYg5J0eW+erWwAIXgG2cRrMHkl40H7jnCXhpKs2PzaEwEESdQzNbGs1saU4tNkObaHXSEGCAa1WYFBSRQroszn9QTupFXf4uh7q3faCNHhIMNIGLGbg7JsfcXQ8MJPOtPGhP9/PRpQ483uzA9Yh5yFbW++Lfy5gRX9zZMrGezghDttaWe9vs5W6f7nrLrX1cSRzrrSgcmY/EdEYtbiuxwKsDc6nR+lJzRlvqWLB1DSjzJTMn/raFYRrrEReU0C22r0z19gkB3TQX6yW9ZWU6qcO2fZ4bY8sWiy3byMCgB4dymF8wUWwb+eBSJ5vwITHVV1UYUeygeW7Xqd5Ghfx7SxtYdlZgWZoFlicYsDxBwLJknu/USwwWPSAwbb8sMA3oSrcWaF0GTKIGLbHSgCEgPzDzRftjSY/sjyeUIN1WAyk/ZKgyqKuiJzLkAJsnCGwYhQCrLRWstpvfT9TbHwNYXTKhbAZO21vhxBBMXAQQODCOXEnSAWu9gnsCj7/OXbmoncHysyvOY422cdhT2aVOy9v8tK7chocxIw/LfFbJBRtv8ym8qHWmFbznS7v0Zm3SLJnYgII7oY6ARD83Rh3c86oVWau3uie7jcc1h7uofRaB9BxA2CO+JwehpbqB2tA4BqwjFrlxgfVykUBlny/oBMfOPGXVhB7pOWheF81zOFSLwW9qVRZTQ1IJ8V6OU9HULfZCufU5MatrxVhDYWzjxs2tpu0lmN9SZujlOXRxefSosK4Uy8UViCSfYHjOFm7A9LwlAxuaIOSUbfOgVOufrreUVs3pZKqVtCHHWijb5DbvauBsn56DKD8nzvVpc2EWWW5YkPXZnGyYYnE8F+gCX/YPmA3dLQzdJR6kuB7MMYgXayDWCqxKQMPQsJBonzzxu4nISHM8+bq/wCWZIzqPmyMeN0c8bo543BzxuDnicXPE4+aIx80RX6jmiHdnsarCriHkzBRx/HFPJJxmaMhDrRIOiGov3jM+gizoMH+9vV0auNgEL9fMFAZucXbxuO4OlrR5gN2yaQ8w7pg9vxLeneOMUt3kgeM+uGFj2L7CO0hoDBqyGQQ2FugMO3p21WyhNumXiBuL/OWCBeqoTAcYlg6HU+uuOGmTYDLbnGRHbclU4zgp60z3npXP9Dfs27p9rpRBO9YWk8b09auNmLSexKRtNgdNcwZ2K89sABqWzbihPp/KN0wz57YJlz/jyah7vE0aaCg0p6rmbI65S2mV90nTqn/FBnkVmvOu9CDRaqYjvic/4CNcecHs/adNaaIDeegW21DwDfvLTKM6Wh4vlS1/+CNoonOxTQSX3QRGMVrm+XhAyudx4lrkSNrNbW0qqZInw5G22uP6AuLif+Ny8WAmF/9sonA3eZlu9tno2A6uJeHakpjIbmlLuLa3MmXtbU2Ndu87N0q4dk0z4domWv21v1g/4dreKuHas8XUt5mU/s8rEh1TbgvigLfnKY1Px8/MuxyWEfAt65nltHQleMvFw24AZ0o3Y7Mc7EYHcDsPeWwHyAzimV4jfMTsnK8Mrdy5jIgM0mN00R/ljY1RTN9Sug3bPuBSdsA3b4/QZIwPOoQ9XwfiVtnWnd/ojjfD9h752cV2Wpu86SZBNxSfECNHXQs4Yh5fV8Yno9ApjbDIzLzRDn0WnLOuUBhKF/XoW1wZevEaLOytr03lPa3sTMopdPHRdWfSNjxPhzIumzI45C6TsqSPQZQ/BuZH9WTIk0MGtQHy77XMpG+eDXXfPCsnddHDjlDYeTKRzPhN95l/S5GEkLmFUlymBG4z0sHoj82Jar2UgH8zIyXgDs94LhymzMmFrz18qG9BWNgLdly6iNn5/IuYj4uYj4uYj4uYj4uYj4uYH/OVTy5Zwr1HjXw9GKeh+pnJc/7pV17aFsJkc3QrYWwbuwAyu9KtlVturdDhs5tjontGf/fXa1wg2mgMMzKjRuZrWJ/LmNLBI298OxwuvGsGHADwUQlvlf2WpzzeNWvA9Wu5uXTRaZVTW69i8o2IW/g6AP2Yzbk0Hnc2JenyvQa6wy933KTBvkgIAfPP5joHpYRwwHOmsgY6PkHnt193T/1tX6Az5M0eMkH2cqUgSqiZgIEAVZ1qrtn3rZgS/zr6e/teKPX8zWEblrOevM7IhXILWaQ7FOlE6WPQ3LNxHog5H5sEKSv4j2Ysv0WZjsT4KUQ5zGQhTaVGnr9Yo8OfM6BzlHi8f/MhSmduWxLXzSOJaGcmaSxYMf0vkWgcrKya7yP63rEyMq9nM49XzHm8misSl+v5P7MrmcLr/g1TeB2oLK3nZqWxnczMrHXNRWfWusXJrHXWyaz1Acms9fXWxHqmxcQ68fKAj5jpRY2CTawPNDJr3evYVB+8Upm1bpuZWetON3mW+aXdQNpG/qw7LzJ/1m2cOCuTNFquEfE6Spo1reyJ0SbzZ23G0visPN6URZWFP/CEmfmzjr3rovJn3WKtjK/zNmPkc2XLuCZbtmcAm5Wt6jXcW6SjunzXAoA1r8N+7ebb2nTH6pDt2EqCl9a/TdP1uZ84p/X6vE28ng3sdn5ybN1sYK/dbDawnx50I7Bw84dPTzzuxT3Er3bXXLVd9ckXfeZxxWNnZLVv2rpUPdEuM1tD/hJNkDV9+O9sy7t7e6VKvL2hSuyTKvHtv+yoEvtr8+7eViRNF/6Nm/2+D89qtlydXp7MONC2SGXHvGKgA9JNDiW78YjGpgPKuztXpnG1u9g8YLzQaHuh2fZID030CbsgEvvCH6SXQGzspSouH/F1qgqv6L44VYlPOmWgNf/wb7kGVY/Yt5vTpvYlBahtya+3xLuF0xgXbdhebcg6QZbeBClz0Wo+as5hrux5zlQdUd+cWLfMt1vYHLoYAtWC1217LTu0OQxtrjE026FXdYa2FqvMvvytJ8Nx+9hi+thiR4KsPgvadLxht7SYtPobYRbcKAl2gjdq9n0Ti/a9RYZ5f0c+rxfNl0UC/hBvP7sIxrfD5LzIp0r+uVUHRoPJ8QP72XFR7N3spHc1eaurcuua0/O0WuRHaSBP/rNkUDfEhVp6yEl2hnlAm4zus9BaGCDS6tyKLR+g6VMuC4mgCvQiXAppOXqUlJYoZAWAXVnFCwT/PrVkgJ9MROkB23q+zYxgseWqXrmkmO4nzsM1txFv1fCHTAlESoen8iWawaJWZgYQpavcwpDiFmnGGAHcGH29CJwJlkHLwv6WhFi3AboZhtqyzbgkvkUnSCkMaVD8aPstqYnbWMWcbWcOMSFLq4S1BNguUhMP9FaMB4mSAVVTihTD5lFPB0gx3OUUw4EecIrhEToeWQrSyZTgDZyWNMF6CNQe6gXAP9EGx8sUw6J0NxwPtef1FnwsYn0X8cTuEz0sNRBkIIeZbeYfhC5tJWrLyBd/QIs/LRDT0JtOiLq23LpDJ0ilfWCH69ba0HD3RcP9A+55p1+ed16nWP/Ror3mvGs9LMNaNfZO6ynRdjJhLUZLjragnqNtw2NqpQKHIqPtPx0O0hSiYxBGcVIaDHopvi3hG5VpfIvxbTe+Rfi2B99CfNuLbwG+ne7gq8LXh+irn61RsJAD0cPOCTasZ0zmFFMdmweHDrAd3m7M3OR3tWNkLbe2fMGcQjuPn0IfP4U+fgp9/BR6sRN//BR66Rtr5/GN9THbWLfIazj4P1Xd/EukJM6eUCstcDrXHh5O+emTGu/YS1f5uW59+xmH7yob2MEVxABWtnM9lpqf2ca1d42/83tkWE9sefaMwy+/Sx4/Bblxbc8+evZtG9L57tm1pDWp+EbPR1qCmleV9akqSlWJefsFMDwA7vdmU/JcgjvNHgc/N74vUsNfCrkemAgoVaD5+OeO2fbHj5hy1AlNHQkkuA6bKi/YbjPW04GvWjONyHWc8Ly3twbWLTlq/IsfvbvNknNVxlGCu3mmSpbwW7+uEgGO+sub81CA5ifg/QpzO3KahwKKXv1DXHSvffZfmHsldV2+ocZv+1DtHnwF49RT1SR7G6c9XqWRmRVYMfDmdrUyTe2xLVX3gYw9AJS2w7EeHym9urlEI9Xd13QcAPGIZf/UZevjv/wfL+XxatsJz9C9dLHCmm9mwhyZF5B6JMG/aJpYG9FqYn4EtJNbyIwf/j3ooAAz7gToUn9p5NT+CGoLy1TVqDws356KTCd1Ot2d1dJxANvfEQSe+O2IZq6B5kXoIDoj5NPVueshGe72P+T1OxYnz14PPP3o9dAi0EAF3mic7XJfYeTziGjh6o5XXWv6p51nFjEw33yjPCfjHV8jc8eWnJhK5WO6PtV84nmQ0dufqd7+jLz9o7/ofW2nYzUJ/D4qyPufqd63/1FbH0IFIcafN5JQHHiep7yQ+a08eBAPVGD+5/nmAYp+EEWxKYmChGyC7zQFfsdT0LzE6KyPbwm+9fDtQzQC0nHQty4Y+1Oe2Q/Nu0+5sR/aEfhhGHqhQqvcjWe66QQ+Nd3Huwm+dfEtxrcU3yJUz01iDpQ8RaAZ6Mh8M1DNE5JyhBdWy+jbZSR2c/560ncE46+l1xLA0xew4pB9k2Gqwh1xdPFrSWX/4bfr2tTR3+BzKKE8o9f/sPl1rf/Rl/C+P7r/zcCSsTUjlwx39Bs/YZ5souFmQ3+mvKASOU53nEOj5eeg4I9Gc68nygEEZCJIV021zBCLgKzmOuBYJfOEO1PSGX6gnpv0BvNUdp4Ma8BzHY78rr9t58jidPA0sy60YJYle/QE9O+Qm4RXESniX73MvOhq4kUvWR69/s2YycyB/NAfvKxtIPWLXQNmfqH2qauKj+mg4pU6FJZEHMlwjDaWBGTrMUTb1/ej+CT3CayjdaB4e+ynta3PrHBQPqPrw9iFb+wb0zzGlcfjDkfUKlp/8KEUhNbRKbTLHewEWDQQj47RRFxa/z18QPjkFz150d+HV+ljrKmh8dId46UXj79zefzf+dg+/vFf74ARdei9r+nAFfZ7uGXFLfto2RcaPSAFOoJz6vgpbC+hDj7rvYgiiHo8DOmq6I0eBYrRvW30jBIo8yR6Y/2d4zccNjmLvwGGD1NuJp33TEVkUcd8IVSn/EYPbySI4A4bDm/cUTr+AcN6umA9KjD/eh0exo8Rh0IxikzBWcNA5QDn68QkngLOYU/ptwjr/Zqw3nr4duMNA+gsRggQ5NWloKnRPRTx13usOgWoi9TAIO9ixnhw3OeE8WCrgiQYXBcSQ31wuhqcn5UDK7pmaFDWPJmypet09PofMp+0LWk8M/83l0k77eypt1Pm+frdn0TSaIhW9aqnO2Vd5vcWHHxAqFeWiplOzH/hAcTKx9rU4DDL5UK+HMzjnrJ594FEqdAE9gDAwdKMYLBApcwvAPw+UxFvmr3H9yo/4SPvtGKrEDmMJ57556k+jgpSyAxttFyosrh0CXzkBjgK+tqjB8eAA2Dk1/rH8dUfJwZKbwKYuKHRA7JJ5EEb6yyZpz9+9DMd56HpfucyXWUunPSw5aSt3nfMR9tzptsXSIhcw0c9y0etaOcDWjaT8quVBeMxF4yTNjBOamBsA+JSBcSJBeIpBuKSGds7AERuZvSjb66B6zWfxb0hEp77mRtMuguBrm5Cl8q0Aih5U7psUPqtoNTrg7KxAEfZcfieY6jmatpG6J4xIhC9a5nU+lh9LZ7mQ4oW0QLHy04pTd9XKD79acXH8eyHPD8QS/zOnOHsGOE9Nr7jVMjmeJZBTPFBHOUVbCLRGAUhm608Y7bCeEO+r4LMOx4lBaT+Y+imdPyCHfZGCmwHQr9KR3zyvd2Hnsaa6NtOsK03ru8BRPh0yCdYZU+wrAc2dcznM/712Fvf9Q8v+6v7n/nVdHx9gHz9rG7otEVhewiVg/c3Ww/ARTmCbqjdYYQgH04zAOfo9EY5gOLUGDmnxj1FVJ4aQS5aR4K8XKAj59AY1eWg0/VDY+QcGkP30BjV9QTth0ZTL0C7AgI5MYYzT4xR88S4tMGJsXyBFlGOhqdrR0PdcVdMa4+apQ0Ky/cxj5avYkGTmpyN1dOgxQqVTObMe/exqgPSNObqA5IjAt29BLueMF826kAfOPaYL/QbAI8dhunCW8dW8PSfZnp9utI9r+kBGbEHZJOzRKWwG2bC6mRCYfbzSsX1CJeRnS2dJHpyAcr6DjW6QxPDC6+Jy1ysiT2VtF/J6xgNZCZdvMTQXNYJULY7/vRbcE1HfYdJxlRTbFY6Gf/FW6sqoFetyNKdEfPIe2wVT6AYxfeA004iH2mkWMudkRmc9Jj40F25HSAkl1nnkm1IG19vOqV7SsvMUe/3tAL5ikRnE/aI0FC/RaCrexA6IjyIUCKLp9ica/XP5ap1HD/rTvaLwcw1WyfVaHM98evM8y5h7drvJZdV65pVw5J0wTQ5zAkyIEM8QSePds3ZBLlwx+ytUHR1l3wUerWVCynbEhAMH7Q7wYVFh+bwryMz+J7c/tTlbLBquaCLhThzViNnUhf7QpcgHWu66yrBR1I79DcOjV05NP7yA47OuluuSNbzZ73yxs++fMYrHsyknJ2mMDUPSWrhuDbtLk9bYaaGKR/Ej8CdJ81SB3z3yVWQOtwpAuGuNUAGhB28waNK4XD6yLtwh0qXFqRUxWdf0bF+cS4Dh357L6eMwlfa8Y+EQWxYZXQ4pl3/6vVvSiP2V0R8MshjekN+JFixfXmKj715l0WIDB8677Ek0SdlZD4QZzzdB8gAyGG5kQGdqh+92g9KoEzv6IBkC3ptWdxnirBqQHNh1Yb7G3St8GcwdaR70jvEDrxo5jnAR6b7+BhWyoB8zn6dryxZ+YL9uljLscbXZGsFN32f8CJ5Milfit6NOyTJquQnjehxrO2DYpueJ/cSPffNOKlvg37zyIuno88ckWyK+aJ5cev+7/u7t07+6b0nrgct18YBF50tk3xLVYRLvBdFgKhjBHWSz+lt+TyQWr7qxXzBgMI00sV97wUxwVAvaLgHmZIVvWierBRbUR5oM5yp7k6Krr0RTZIwl8mnh/gYwpRYXpPmgbMiPMa8tNdg4M+XASdjsmgobLTnwLA5Hw6QTvvQ2+4G1lI/R73q63lv2U5VVV+rL0IqJyZIk2LasSD4yn21TG+rq9UxfDot1Mr9tbYmq/bScknN9jrld03UO2O3z7iuGMkDpp8Q9BPpkOgnBvaCgoqEpEGghIO2qo6j5VX5AV2WX0RUE1gc41tcvaO5sELtSCf4M6idcl46nRIKcl9ddvHKe9gw8RyWQDz3DI8qQvKfwPM+0JFWHWAuECUcAsrgyT2NKogl7tfuauvnPVrYdZs/25H2B7b9U9T+wHy712+0P6i1P5D2A+xLeMA7FIbAit9EVuUjwKTZoWLgXZuLXNKBxJaCzxsxoXE3FlR47/m4Fc7YfMKt/+LbWZcR1OKzuHlUA79sECGz5T2cP4+xmjm0fN3L35xdIMhOBoZtB0Z6SAkJd23MtrXLtnfV2DZyoDH37jL3zshQw2x7J7PtJcu2B8K2m6x5YFlzyZhb2O5QD5jthmAWfUpmYJnnaDbP5Qrr8dwe0mfn2/ScGXk3X9LDNh48sDx43uHB9kExp3tYmXm9DR89yyXnwZOOGm58ntoCq9VzKHvkjqkkf8wXwIGnNsvoTWM2uPiZZVRbVuAE6xS8gXxh9aIOyfnHNJJNV6Z6SS9MJ8hTOV1p47LMV/VSnhoOnln+Cn+xJWazGV9aZzi2OQ1nv1IiTvJvGHEEW7YYbNkq2LLtCmDL1hJbthK28M6t5+8v0aWne23oYoo3QJfRit2dGHFaHzVRKDP4s21T+LPNrOOWJv5sc/BnC+PP1R3LSdvZ2F4rXH7AV8FdUChZxwNn9jiGC0WVdurVwmdoaYU0Gmz0nnBRHjKW+YxlirEsYiyLGY8T4LFZP+AxHfQSu+/GWFiLXDUoBiusQ6dasLUcLDqCjWkdG0Mj7OTdMZ0bDxapTnXnG+RmVE6bnGMLTike834YScpMHonu0t42BTJPtW+IezIpQsmvjNdifMRlzg3EpYaVwOTzEihego+phHNahHeFEj7DdOrT7uZC2HRXh7D4YK4WsUA50MFkiu51LFC2IjxBORBJnqHcYyj3AeWB7hOUh/ACJyj3AT+I7f1WKCcrJAkNqRZE7YPFQKA8rEM5NWOBl742PRwshohiMFAe6B61W8zBszvT5qOnQ3wMtY+POQJ3kBviBMgpS28gRDvEtCFYs4YHFggXTgkKGE7zq0UqoIi0WWOBS5HamUDUSibTIlkxAzVdKsNJIhwbRrpHq2wAOtVdUN2kCKxDenlhgUjFAyz2QM/h15yO5ezHkrH5iHm9/6cKPHM8Cy9mnVEjXC0iZ5VJ21qucsKrnPIqR7zKXV7ljFe5Z1YZY8YqExfv0Sr3sH44qfVaVzleAdT1ALUAksHBoi+rPKivcmLGlA+BLLpnEAGLbVYZK9vjUBrwZW0+Mu3jY8BSJXg/G8EV+91HONtGTb4SldAIK1zPhzUsr8Vh6SHzmiJeMQOCYiLDuVGOPLEOpsirg5WEOlqWsDzfSBr9Playr4M8tTwUSxjwEr5LhZZgN8kMi8BdRAzyc7mIanOLqDa7iEF9EVW5iGFtERvwiC08DMNKyj0ApNeyiCEtrl3E0F1EtflFVM1FFL77j54PbmtvUd60GeI6YCtOEu3u/w9+qPWW3WFmjy2b7mqvFp2KavHLxzOEEDSLvcrJH1Zb/Dovv/aTJ1bfZlHy6eZrn3/LEXgPDa+SBr4VmHx/HlR4HtYeRdgYOYmWBCEx9koo5n5G233tG02p1spHJZPL56rNZx5AQYDUvCs/+lrtMFJWDGWcSSBfbkDpOhvQQM/jz2DyFr1oBKh8azUDVlEgYgjCYlePwOvRYxFBGJyQQnrITn4DUAtHa1nhc5vOsJXlfWpH6aFpp1zn6/hW7a16eHKqFyecCXxRb5sa4CzgY1tG5JKHTCl5zDJm7oPw6MYOUlXo7v24JEwoxiel2RIkECEtXS3W6alRd3RXNJmJpoU/XeHtiinChlF52K5QKYC+Z1L4ogZPdSRp3OZRZ1779U3sALLYe47xbtemUFmxztRSmqvJBGYDP/FumYZeBwfo17nakw/Jk+eya1SAQ3YT97n4bBtJcCecj6ts2FCYtS1mn/UTTI7/2ORUYv19orhrqof4vBQyekcsrUasJSpJndwKI0JqkkiDphhauwYs71oW6HPSO1EedXRspdjYeV13V3MAJMUflPZN9E51D+gdIqZOUd9Fn9E7JMuKWCPNyAm9ReEDqQsUqkXXI/kX8ZOwtgsiJOzSLEpPzZALzvUHRENzyFii/TwUjU9fsIsvRqgeeGhnn1mAtykVAPRtVhRN49RY1ws2BMvwNLZytKp1/upBG4VnEVC3By615+Zp6H7I7KlgMo2BN5T87KRds6Z77rfswAa1B6LDtxWh4QcG4dzYdMaRiY6mD2wYSjGLgrDxUhyzWTbQB6fCPIiUM/1OxoXLBXt99xSbXF4kcSBArWf1JWwYRTizmAIgRpkNhkM1O/ZGsfFaA9jrFLuIz9LV7Td9MOXIWTzQSlySdED98K8bv6tvr37BnFr32FdhRWeH2M1GlRqiqMrxQ7mIoiyibCJNlkUU1cz7VmJI59R6GML40WGn+863uUhydfsQ2vz7YfT2nFXxsg+AXQeH21EOUqbBug3ZN7ayPOD9PCyb2scuiZyRFYingHgRPg5CYGfEU0A8ZREvNJSj1YvQAeOeqnAPRVqVuKcE90LGPVXHveyHVQThBdJ3LBL4voYagVEqD3nwEfPnmBhzUjHmlOZUcChynmnzJUA4NNh4F6zXHoPDxjEYqggq113oDroYX0MfYZ708Wc4KkQHY+0eMkccgb9CChdZATwZzLG6oHNiVmWusSpzzZs38KLvLIIealI6RPhITBdx0UW3sU7MR2H+eS6vShdK/K5dlZ5OXsTSySjv4vVnw4BvviblcnTL5VjWZl52MXQfnLwvGvuzKghEhfFvkYEX0QNt+RFcUo10x2SzjT7/rBytJDaJV7KiIyQ2aOfun0KwUrgeHyn8BzY0xTAxhsxJonZOAo0PUNdc+psn+CD8xdyp0Igidu4RuEnwojzm6Yc6wPRDTB9FaEoHJQhiAUHEIIgJBLGAIOY8ZmDgJ202s+wX6ozG/1JkNMXcA8V8Y9nmG6wGOUgMzs59nlkO3ufV6pL6b0XPGe3eZA0XelMYKJLhw0vlQo+9dMCbHaND1GBHnfXZUSjywrcVwXrsKJwWYRs7ah7NTubJOrwoKHmRAcdzWSuJ3T0od/eOs7vHta29w1t7p3VrD6E8lgAALcFziureSO+YV72SXHnvL5SsvRJmFTKzspGoIaacNOsXqTWo8LvdlSmfhKon75zqrg1tpuvEAUIpWtq3WmQTvJPqxDy8k9P8mL5shRWdrehe2Yb5bQZX67c7Mf+TENlmgs73KOUbCS246zJ5KxLkq80wWCjVwVxjuUdRx7yYAZhrsJa5BmuZK4osYw2A5MocVoW15rEsbEALi4ZlYUNZ2FhSyAeypkHJfcF56RZr1l+oZs2iBlV+K12ZonfA265mWlvNYO1q0kkVa6kDWc3M9FVfza5ZUGc1Va3fFKuZ+4J2Pu8U/xLUdoro3+xOkZzM5z/X2wSyQvHuhI67jHRdPQLGRYxx6+8glMxIz5kfxUKzZrFoV758a2rqLhiNXg3j5um/ruDapI5tWyaob/SOuivYttX0U8e2LSt6a4ltp1dN9YVan/OEbXN2M5xbs+FNPd+XY9BOaHzkgK20Xx6w1UUcsH1NurYHjrRn0LWbRbtjvG/xgYPV6WCafRqhCN5lb8j3tGzI4QbHAnfHq+c1CWlLvrvlwO4exvF1E0d4b/QOClZpOYcf8794ph84KojmXOvuiZFIMZ1Tct8BwwElDEBv9MszIPJvBCHe+W97+qf/bU//V/9tT/9ds6b/W4FiYakFAJLzUc0ARVCBoikPt+X3D9YolaL1lUotra6jVIpkV2RGGPApLmDRLYHKaBPHOVUd56L1jnNqWskE5duQAP0bd0w2PhtQk6FkVkFaWCvOTh7QitvZRCs6Ko+DAY6DET5wgoCylwudE0Rsjw8AGB8H244PCUv5NpjMlKN1EnIpBjphlZVO+LGDT5HZXYFP6+u5W8AHGb3wGYYXpbsq6gcd7bceryJ8MHAu+3gVu/ChW50Yu7XP8Ik5JLOK/HyzSpLD1paprJac52EjxxD+SaDKI55bXOIvhZWlbmhoCl1kKn6h3YYvWSQO56ADXF4V4g/5X1tgT2AnrzB1MJ/jXArzOuHDe77AgV7Wmt7XHDdWxCRgI5xhZBZtsbFoi+4lQ61K8jkd0QWo+IiwMEWqFS2U+UAGQDmKpAhgSu2CDXT0ojwlt+E8xes4ikTmayQrBbgkfKc8XN/59MArJauUIneqRhlm4y2z+fPfjHT8/n/b2+Fvzpr+b7ZOv554dKcLgMa8j643750XN2+etcSfH8471vm6LuzXLArwv3JtBb++4XSWLn06S5c3Hat2LTr4wrtKZ6ZV+7yvzK7SHoMyez4YU9u6BX0va1zRohA484b6TMtZ5pGzhC3Xh7VIJizNbN40BvgoC5+EI1sSRnR7HSOLMrnhhuwxImH/AkpoJYIWHwHNV6jr1HD6jrio24QADqSTbNINY3FGG10ctMk3aKkMNMY4w7LqLrdqRFV31avGZdU9btWEqu7hqnUe8sCGkbc6KZV3EX/plZr+PkoM+LjrQZkQNk8rsXeoEzwKnNsQRo0OR43029avsL3yvK08n+kukrovWNxqf8dN6h5+m0GB+NvyLcYKilhHvUAbabCM8ByIBEt6HuG72/FxML9KL8I7dAc+DuY7DcY8QSPRfv5E8/VJBnmepLvP7rMh5YmmJcQW7ySzX1h4eDNESEZp6suAbaYh8wiR5T0/YwOuaWVx+UW5LM8WTuS/PY/1VfkCqRhDDixegFi6UDUVmhEWoW0q4qbmTVNyatjKTW3LF/RSrpWZbRFjrgtam49CV03FZup4VDaVcFNzpqkYbraeyAKhUIUewm0107H85oT920AR2/QSPpb0dnxs11fh4yq9Ax879E587NRPwseTQDuXCfwb+74A/3Hgewx8j4HvMfA9Br7HwPcY+J4AX1j4QFi4AY+7WQ0wEeKYm0myUKVn1APwZcuMn+BwyCdkAewME8ozYDck7Rydlza+Y6VtYwK3a+Sxj5vn5MRyjIuaFIJl/Oq+rzW5dUt5abJhkwApSdoy0lhGilibl76+NtKYO+eEOjHBUCe1/hlV8i6zWq90sVRNv0rv23J0GtFDTosQik0lqtdTjFJ0Z3GMv2ft0LFJoMPth+V2EOsMVJhwXjg6MHhlCuiEzWTfIUc/3X0RYMgptBhbrVel7KA2UQLQRFtp8hs8766Wq7p3N4y7fITz0R/HepnPcjG0P2Ef+U8olczGNn3FsC1tYlvsYFtLYvGZ2IbVT2W1baprTLatmeatQikwrI0WHAwL0EeJYQFjWFzvk5a+yL4t7zXuAGHUiyqcCVyc6Vhk6RGyVCFnJZqAhX0HH0NTOpBmOpYzJ+yhNiTQ3rftLdsIiJOIGtzDUlS3JvJqK/L+puepw4b9KJ967kDSo7yC9KO6IREruqqKQFQeiJA3tcrclYo8/Qr4CYDnj0eo/1Bdi0eY3ikfvb/2CO2CCNAcZ/rylt3XQyx2aB4/eLccqZQOKMe3DmBwSvhXkGmV/V7ohVXeJ5u9cXyYpcTadM49D3qda/rkwC35N0f/43UEldEP4xMOVYE7FFrcyJR1zr742k6HO76OxVUXcp2xmdeyXPsIaBUhx8y4kIOgHCyTLhPw8Ux2/ZQ/j+Gz8xWd06tqHHzn1+Czzgr3Eyd89QdfVeeEgfZskr894IO8vRB4fU3LlLAWE+PuKcz59UfNz/o55XUUvzj+mT++27YdctsahwhKQah9e5FV42VPY1YP/r6TdrTc6Ug7iIqTSPLgFDFrbGJaBmck+6Wtl559VVtbOs7DEro4oABwdP9YVCbR8ehh7nNjqlomzIabu9ZfZCwaVZlZHvl5ymYVUP5jO0uu1qmqXZBqVZ2sXMsOrWXspG41r1Om7UwD4QD+sy/GV6eSDkjriLr1DFE7OjJsTNBtNfspzwsOj4PcE4wrfMmbpMqMs9rDqOBUG0gWD2bUDRrlS4goQMC0Rk34tgmx8nWcxvxaPkbzgJ4HIBq5Uv4sXSnP18PrIJundactosP4n/2c5/kl9/Es2XCqIfQeMNEEDaIJ0D14CgaMCj5xK6Y9mp4/g5lgK76LMgb7zE8g1FIHvfIkr1wQM+b32JlHYcPlZCfuiMmDk47RPOJOY8QdjLjDZG76grXcz34U0zck+MuvxEB43bzRr+CdwqALpVEBgo3eiQoAc4V9x19G2KdGp/EIozb3rqRaYRUS/Bx9/09yHuHxa3rLNZwYveuVtnng9OiDKLgKrdN7v4qfRhp4SX1sgTO2kF8mXlAbW8Cd85B/ot49vx7Y7qWFsNl9UHW/zebuPXE3UiUZ7Bof87KPe8prT73lXuWr1f5nPrDyL5/97MffOdGqkoVeuBnLB7ckmWBOe6KsN2IPp4Q5iIKWzG/h+O3fW8swH9YFFfyIHLG0vDVA16W+Fn3hF/SEJxc3YV03bVz6hPUX1wrvvOwV1l80K7xkV3jnzAl/KvIHRvNnjxmRPDId8kv8LUF2Svo2QspJH5F+GFypqSxiOWAlbJHBJqQ9yeMGjUDOHec9CYyLOUlIOo5xu55JJMpxkhfM59A0MEICEMkA1kXVvh5hNtTvvI7yRM/lC9orxTpsjfNkpdQLFKo8X+a9W4BUviDpIdjOF8rWO0R1VCwWb2VnOZiIqCRfRIXF/fffh//91DtpLQd6AM21BwYITVCGdAMjbLwjYpq98RHzvVcX/U1t/BkwAGgXYHrCZn5nvoDMlbfni7jvcezlicw1KQ1vIV8pUczrBaQQDGlMOjEdzucLWGHz4Jn8AAl0eAJ4vIX0hjSSsJbXCbkdCNYhgXCBr8m62YYUkwSM6MwCUHTL5V2EMxfza54mtRTDALj7c975yRkpg+oYX5glEWuAcdLTC4JzVBpIKQ+Ln9BFauqZdkwgInha6kSqni+r1q8htVgC61V9BkykkhtKciRaJNFRdUIbGqhSNboivvyWVN/0MotdoVGJy5TPvO80PbSrcVhW40HP8+8i80fusV6CB3TkhftuhdikaiWnXyACtRR8975J4Zn5oR0p+t/35Yw1dGW8X5airfL76dzT1QNqkk45hqyzYVZv/bRt/f+DQXrU6P6n/9h/nN74Zz9ww7TwKYceZ54tPUZ8DogufK1qNRXXnIJ3UEYgrjXF4nzQ80JRlxx91z4IcZUpD82OwGOnRbDyBnj6P/pTf/+7z/mWm24AklOnOlytqj9Ymcp+fPT+l1KkNmjXd9pLilCH9xXRqo6q1r51xxQxeJy8Lt0HXMYwqwmsYpx0EcSvo1lbzvMJaCQ0TvKBn0zeYGCSvciogajH3GfY2Rdt2HijpPABE3TefMECsLkO1Spkdyuvh8TUcOTfe2i56DytM0KUp/bop4ef4dS8jmOz9vART/GZFInu4CM1g6c5IPkDIvETzKbo6gCB6pGOoMFNqSybrgP5+zS69albhW57eFuhxz6aUOhsgM4yStek+7o/BVulpofrNo0B9jDAPgZIjXT1Bq8U2f6/v+0vjr71kYevZ1Lg/w0pyR/aonRO2vyH0YVoODAlCR4GgESoI/MbUMAAw1XdQx3zScMOzDfz4D6drWbf5Rnnc79ECQ8YFwDI5mfICIiWYgZwhAejAr0wsvMzPOFRKPMbiIVeg1XacbXS+EZKXfrWyW7qcI+S5dU6L5uH/CShkThP0AD6pCE4T0bZj6Xejrt0UMejUAd1PIoEj2LGo0TwKGU86mJVCF0AQoszFrcI1ijrrbdySAGjfTsIgFrRzwA/hzKIkQ7wMWfAiN7neRALGMTQoAZ5lsM/nDpcJDzTI6SaWNALVLZl3UFsJY/+iFFjpdhG+KITSty5pJeQFGybhLREOqYa26jZ7avFVXqAzod6ZMp3mF7nyXnd/Nipd2IAQ4xsYH4/QT9hqnfoHfTmjtXiiVP9BG0+n2CaNw09Ce1yT0/SO/HAfHuiXsKz7eVAtqONbfoq83u73i4toWKsl/DKEuC+Hd/wUPe4PXmV6+9cFxQYTIQ3aFWpkUyv/8pV2uYr0dsMEMxobMHSClhS1xZsNwTAYwMsLMIQH1q3I7wRlaFFOuaxrf9KpAcAwAgAWODpbNlgOonehjVbYpSiVxY3eAWpUXaglxC9xNzL+gMzL6CXkHuJuZf1Xwk5N79+wn37//vizzzzz//bPTd8q9nIrnJ/Ju7P1P3Zc39G7s+B+zN0fpKP2BP0VZMVW4yddIx7a7fCL8t5YsQOeqOnoxlvDHTYfIOd8QKT4tbH2azukrJhEL3cGaNOrki9/7xvOvq+YwZyLa82PQ9x72O40X0JjocHpwYibcwFuB1lP/XlQWoOWHOHs/KQdcI39qwyCT8OdpAbP+QRvxudcvXKofZwI3Gla3rlT0L9irOgZ3XKzn0+3vglL2KnN8jJOIiZX7h4lw5gZsB0WpO8OZw9il9MyViSsfEUiWNPezozqjIuyId09xApilS9jrV4QUDWw6erhzycP057GOZxb3n0N4CDjhFglODMcdwr0/Xh1wn5tXvZPTYk0GwP+dnSsh7wtxG9cwrviBaVc0/JLZyR5J6S852vPZyd4tGvHLGK9UR0432NBn/1T51wm36pZPYzPmf4aKbf/u6n/uhlre+SBdHX/iFzMY9jY8lTPDAjpGffXuBE61aYMxVG5rUiccvn0aFbtMBp/+n00NU9rDi8OkdYXzod9zGJrukq9+hun2IxV1RbacKPxbyLGimlTccdQvkW/DAvFFt1l0u2aYU3l/KM3sy0jxivJboojPpVMOyP/hZLXJIsS+nbxuTptIU/Up2h3UTatYWe8zvRqvF8q/097tD5/UMIwEJaZqw2TsgJHWj7FKuuO+ao6KiZxX4eEXYnIDQgcoSvN8NtNIOeNIHONsDWjn6TcYceZmbqnMwT2IQu6UJ9xtPT9z/Khzs+1EmKJ3YRGd9OTiHjO+HMsICPHXoOHztN4V3LZjddwAf8QrbJCm5rruCiToHfTzJQ8IEQHpr0ULTVvLaElYv1NpKJlgxZmPpL4wT1t2HBdL6Vmt3KS63zbaXFO0XZIb2N4EraDMIF0DPy+m2lFhPIpEZYIg6b6wQfxRSfSfFk/ST83IW9iSSqQptHT9ZPxlbNcleu86nepXehZF0BPR8ai0OmkWvvCQZLn5hvUfsE7KV5Yws+tmhEBRZd8iZ5AdZ5ux7JLQpXMcFEQIEd5FvMVgxOHr+ss2dj0UwrhC28vknl0K4jPIn4CXtDK1PhTl7Su9BohI9IDLnbUK1LjAlZ280vipHEeyODrRj6VsIYxVx1SS/SzXHaeNVgmKzUAVXqec0/+vWl8GhL2G5m/KR8hGRQyCDlI6msHiG7CxZ3m2iLfNYWoVIfnXR1go8+f0S6y78ofNMQ6cdApLzc2Vimiw8EaRLEhaFanRFmCOCP8DHS2wQKIa6TBEfQWZ4Ah0EaiGRloJsbLQjPRjBEe5jpiOZcThPcgZ4mxVZmCo1HifbqBTDUd0u0NMdHHcuBpA8sffJU91G8SxPS5tMVe+7POZnbUyq8pppfNuXif2cQdKXYPRX0NghLDT51qr9MP9k8+fKpfoo2v/4d/XoahPXJajE0B6Vjvg71l2t8PYcNseBqpm8qO4LHpj28P5CyCcp209cLeGWg0Q+/cj81+gi39GS8VbZ0L956Gn09z4+/DB2VjR71YQobl3m7le4xPiheeqU9/tiKj1irirbzIdFyPqC55/nYg2uxoFVikruZdsZAoSF0bxA1DOw4xnaqOZ0dvgqADZmXOpV34goq2rElm7whYApeMSkAs/rtBVuAiH4GNLgZ/epttGkQW5ZCbIWO/Q9IBrNd24Osp8rGDKFsQzWIIxlJVkAqpz58KBsF882CBbcg+7p+SNDG7m/wvrYhjHtgEzw5ndAYaI4gvmD09yA7hDqcxDE+1b75THRaSjv38C6SAmQsk2VoFNw9MwRESxYBbYdcklCJLwzax5NcR/hZGCx9skV+qt2pllxHxLXBmX3m6sPpCvg2MADceoDlNG0QZlSoPtKZEc2oTKNT7pJojVF3QMqGjG7OYqzSEdWLbD2uYmZIg6jaAffldspG9nAbTh23DeQdRAXbCSo4jWg0UnaU2I6SqpG9aMN5zpO2bZyR2cibtiNpZNwpzR3jHjFUbMF+SUJgwRBGhZI0LigjiikFX0GQDLiS6YhFNYNWvCPYuLUJvxC4AkZWl0aPltLoj73maJs0ypiFI5RPLMK/sR833zdvv+WPrW0JYpb4YeiEtN1Va9UM7ZtLYrGg0ZMY0TgiDRuxQVCq1b03fptvagvLThwQlZU+8S+vNpXq88owL7k/2kdd8SXF15kifzL+3r+8250oHHw8mekxz041I7d8ldEBCrYq2r7lgGbkaZ2M/id9x6PwDnmwhJSkOmYo4aQLzouRpqY58FhVY9UMp31v2Ecmr0Sneb+2sfMuNTB4aP6+tciQuh82uAwsto/jTr++V3e1wqbJsI11xJQPnF2Sfn52n8GnpToXxsiqofbEcocDSrFoQL3IOVfFfNHDEIGn1GanbPM04WgPAlBPG+YkwwFzNMPJ+9AZGfAYcuCJ89RiJMNYLrZAMBjRSDMzznzI596tCOMiyQ/PWcjdYp6jJzpi3qlDSGJ3mI/Rtf7tFZb86x8eJVSCGVFvrR2PNV43LDTDx2Bl/x3viJ616zMJ6/wB4mj0CfBp9rDp84FDoFua86pr2UaC/Vv1aPyD/ypUxw+AlBxOEOot/L0y7EwrS4NR3t6GibQ/ugX7G/bd2hwyGQvZo2j5g5IZYHrVBTwE2EURngoR5mnqK3hkwdknQEwqQDCl6gEEVixXHRyL9kjGoLCOZhGDAkzMBQWYnwVFfz1Q3DwbFDdpMj8TO85qbmupeyI/UvLADzZP81SJ7g7WGHx0aPzXpqlyUx7plDblkWzKo3JTPsKb8qhknX0FSb4PwFQcXhHfA7bQ8QMAZw/6BEuUSKYQkldAnFELZ0c5qhVoYs3zhHeVLXwzH+Qo1nNoHAiy2gGG9hrLMwEgXjR7vsv0tmbbemtzNOitT8xMLy2Pb1lmmRCUjD492tV01LaT1Rdj/wb70Wi8G/Mg2JL8Cq6AK5ZUs5Vk/FvNXUnxdcjmKwSO1m2J3xyVu5J/UbvSnjW7EmSSlo0JPVZ1V34fdWuTdMei2b8qKyGnbSdnpRO9vO7u9/ctu98e2v3w4ddZOsiuMIskareI8ISP29VyUxd84h/eVwxX9bBuE8XSshqtxs91l3dU7cnnEn8aELbqxn7hz17atvrVzgz4QU14wreRaO/xvMrhfc/BQskDxc6eCjc5LwlAXnvvPexzxzdca35MI/BF8cNXF8sDTzRtR8t8Ota91ZdxB/COIf3cb/9i45p+63hq+zlW9pNTirU91qXmrZ6vTCpO3WELLezj5eUSPCT+VYTa4xqFN9WKDI8da+pmvwtyLgADsGpWz37t2K+h3AqrO6u0S5pPeArfj09PK/qEhj1CrRBigJk32xU9cu3JpiqE69OM/BCOzn1jHyfRmLcn6nMJr6ysd/vkWxo91400OcKRJn/zvle7kSb1Vw6wIxSKS6dqSkQJsNYV/zgs0ybqmYB2hJ2QhBNrDixx3VNTuVQzxibYle5GhoZJA4T9tyukKjejg0w4OprtC21giu3MY06lHsFmxbaCPG6eVN2o2Dh7UHnJXRxVAcusj49IrMwxfrJFFofCFD/ZIsvUb/dVu9cW2X0VU3hBiXBsbK58SCY1h45EELbLZuREMNk4h9VQMaoZ/mDDS/gGl/XGkcNltXowrR6sliRUlehspeitU9MA1dYNVnRvZXZlna0WAYxzCt8yHU0n8BJBScBuEJkpEWeAFLPA79IZoAuzPC0hviXgevStkx2Bcw+tAgJWbK92JMIPfLpshomQzrDSPQo7XNhBoRQB5OASvvZrjgEKpTQCpUP65njsnr6n9Nh9OMj+KxyJvfHxYLmARznCvpmS7g3w7wP07yQYPQJ0rF3FCleSEwbjJeDXY1Ge89SD8hpxUqy5ZWWqJFr46SfFqrr2wntJxefPDCpjGLVF1zSWVjBmDEcTtmdxAsoKtW7V9vsLvpPEHGEbqQilXZL5jv65I4d0mZtXPl/SRmUoCNCLLTXK5op95AYhqh/GyEGBCIk4CfkEg7MJX96e4O6PxDVp4e4Do0dTOpFrGxPc1e9U4VKop9VTVYcKtPdU0+pXq1MJP8TymVZ6o/NYI1q1JFcMp5x+P5jkKSyE1Lz28BI3JoXUxglbiB6Omx4miU7ZfIkqEdce/RW6AVwa0Jf4nWqJXrI88L2OyggQeYbzS0QD6Jl/ij53JqUJSs0kBtUQevTtHDp9KJIhPgRgcQ0u5umcMcWd+thPm7E/RKeEbJk74OoQuEafJCgFtCYQN7gV1MUXbgbl3GloYJ1RCb6eMV9PoOF7+akMVwqgFWmM/96Im+IaGkhw2oDwUxgDTtH8Fg+eC3itm7M5gnbOh06nKGjt9HzILXENHQJAhkhHH5Vez4Qy5UcM4FJ5mYsTOirDsMLFPO3zZgRnQmBbcwSn2kdwKuT2uAZGk9ruJ2X3x9LlYmgRsez+qCke1bs/khpUDPGk2f3R9u6Phtwe1wDsa91fCBowR4GFOUM8nzMPzvIDAQUK+NUKZHruq9WFwMLobMDNcVWsvOn376Tf087LKGg2f5wLRraAXxk21+J0YAFzPOCmuDrwvNbnMbcBFDS6eEQJ1CcG6vNO8YjaNMULzcU4Jv3fa74/orhZfgnUVuv/HDfDDUgBupOObCvnFEbOD2sUzq+vpW3FTXEV9Fzr84RycQIFaLbJWk4oIEazy3tndHmv4pa4CqbctV0eaXZ5xO0SHRJGnfcbS46CJkYdUXalz/vcGlfFetS6PeM73aKgvdtTfmPVUWDxgrs949sFPuVza1wVCFbrdtLsdjKj26O+u9gocNAB3U58iwVHfW6Nq4KKat1e8JxuUdDe7VmU00J1ly3p0tto3hYS+Xrc/bGuIV+PW+Xq+F7r/nSz+9Mzuj9edn/C9oRC7v6U2/1p6f646f64V3eSAQyyGiU3uz82o/tHOtL9Q7YnFMom53Z/TLo/bbq/kxvl2gBUVqPjjtM7Ctp7f6js/ZztCIXc+3m391u487Om8wPcJlcGmKrO7V1IIxJD8vmxl3eRnxgaHV82citj7GmMdE8r8e8hp3yBCShyvHSoQAb1ugiwxLxhbAUjYRRLIlrgBeoClevSBctgHZHBUpHBhmw5cfpo7wCKV0heMYQuFrh0bNqZz5Ue5R17+6nSKWdil9CWFBBKJWpB4s5ZWQN9UBdfLaiOJsu1aIUz9KtQ/JufCnzwxUpYmOfK09WZRGSixBBuwi8wXEQQ9XllgrK7C7HLa1Hg8lqRptn7uNHFhZjfEEltaVYvZ5u9nJ3dy5k1vZyN+Q1w3d6sLk43uzi9bhcTt4vTMb8BBjWzi+PNLo6vC6tGF8djfgNMqOqiSSjHml0ca3SBdW40fCzmeqDTsmE4ndWotMdU6hOFRtBzziaGR6zszSTYIEA8byeQRyJLIVyxRiV+rnTvcqmEwZXZmaHB8oB55H/Dac9MSVrIU0SwcVd4sax1mpQFsk7X71ud2q/y7Zp9UzsuGVCKAUmeCBpp7USqK3sh9YaaPLsi0xnuYSDrVOK8r3TyhjypgwM96gSKgRYgiD4WyzIQRVN2X0pRkGl1SO+s0QM+GGxGEcgxihpq6qbulnJfsPpWNLWo5apWi6D9bqJ76ylBNhyRq+b3ddRyORFGjVNxr/T33VxjbMnGWbX+YnIRL77fvBiVL46KjZLrAv/pRcx4NL6Gr1I8HiCarwVWHSRQ+UnnVlR3ylj3+A4zjrf0nIsbOc7uHT20X8QzWv5pxIfPajmgzHCsbCJ1yLtNDzG7caY6FuUq8Yf3955Lfm+hjiUeNOPw9a4YjUPUOoFa665Nz0KqB0j1AKkIyqhIsn5KihYx4IRk8hp3jBQiOYW4nyLS0SF0LdljkWGVlcAhazRE3cWJ9eSyReEoR8BSymsWe9wVq9aAqdw+q7N4FjV1lmpXZzHQjwrQm+qsUNaL+ygC2s+BykeMeT1k1Z4MF5+kyTvWX6OYOmpqB1pxSsmlxmMfkw6YJ4No6FtiihPSx/TMq7w5QOnVQ9nZHlu6UHKBSs7VSh4xJRjM/fhpONMsBaRccWLYT6kBD7LvYg3mnqYCcyf+0ZRHqXq5ocGELct3NJdLUOiDFemOm+rJ1V1+/8bscPcXGjfcfdnMUAAUEIfZw3rES2OOZ5JLZI4fSC6FOV42L3xH0sIL351cAV64h1nh+5NZrPADyWZY4anksWeF3M9jwQo1sJSbf6w4obaMkBSMIbGIJh+8N13DB4+ll8wHzyY1PgitKuv7LdejkvO1kiOpywdb+Fg7E3wlDOXo8tc7y5JUCb9+FSdUJlzjz38nM1RJ9TfhL+MHg+XRp9GuDQbK/bpVxxfeyAK0lRlLq46PJfaFM776qbGSy5e8ulXnnLkRPLZWnSNJkVizTuqadUooFd0aBnRnYEAmGNAzM86aGNCrMACLfy6p2Xa6oJW6UUcjD2FQt+bU7DxdYX8PpkWGbA/mi3g4ApIpX5DdQTHXe1Na9I0UlurQZgIZe9+V99gJSK4BuK/t1p6BJdQBekVcdKYHB0yI1rWmXWtgKYZjBe+iXp4xe+6hR3zCgSjjyniVRtcYCT/P4JtImRU1glue9OKiZyj4u8RRCK73jtdkJKlHOJopGv/UnzjQziTfyFU9P6t3R841tLToRxonR1rdt79W7qvSG0xcG3TrSr/mwqvaVjqTY6ZkVWkMg9dMLFMBYBah/vF07BNjvUvGYlzyk/Lhm/hhVD45mjLpFmZZpKxiFBlxVFtKGJNHjCTwAgWFk7FLeAYXwIqFL2UhlM4XYPVJuYKOodUXThKDY/Ar99pXUIiGs1obZqhGg5zQQ7RxwraBV6HtyawHUHRS90+uFuFKEeAOzjPpVIf4csoY6gulqfBsWXgahQic5vKHyvITKCfrdD1WvexwBD+kkS6LzjSGLJomHZUFYr2+NzVfY1YRn0m4HrPX0UcwnZ7vruTMRWwuIZgCLx1/ZS49+ms0yvtE+f1ppq0iwOfRdCUPFaNWM0FH6CboCG16Ds4dwpxNusLuyQhykvHj5Cq0UWfhYWxfPS2vNrCxJxSk4Nth3pngRYYJ9mZQ2Y0lJy3My1gZs149xk5+c6ozyvaKi+Nt1hA6ODbThTDLDGrUhAliUIEJeAGUR2bLOpEa/GeIZToWazbvcLKiXMgboS2sGbTjmkF74Bi0o5KwRX/U03GbQTtuM2jH1qANZgpIavRVt2Z3m4Zs14ztZwxoyGGlHXsAhParjsWOPQBdDaueB6UdO3bt2BWSu3ZsS7/Wjh3jrMQdcHVkIRBNcywGbK5klWdcDrI3hqQeleDruR4ZsOPSgF2NszRg+42B3xtxU1xDdx0DdswGbEvCXJDUSNgasMGGQqdTFLR2ej7klrgGppZaAzboP5QpH+0aUrDsg5rHq13rX0DTfgScIwR2NUdwqn0Ep0Juj2rg32Nd2/2k7H7StWpxLk4IUKZ4znbPxqVJiPE2uz/a3v3RkNujGvj3eK37C0ED5mLAjhwD9ryOSwN2BYrSgF2BTM/DgG1hdDbg5riqjq3dD9+dl1HQbF4M2HNOgVUp235OBxYwxwNuCtW551qfx9wGUNDogg3YQFID9QWneETLZ4oXm4txTPqH2e0Rxc3yS5i/7b80YFcNlAZs6ci2cg6tiAG7Rtr8+lqiVtwUV8EqZ7bPE8rFidKA3eQpJxRwrdnlvTO6vFdxS1wF6FXr8kizyyNul+iQMOq831hyFDQx6oiyK33e59a4Ktaj1u0Z3+kWBe3dnvLdVUeBi1jzMGDbBT7lc2tcFd9r3U6a3U5mdHvUdxcbBQ46oNuJb7HgqM+tcVXMudbtBc/pFgXt3bIBG/SQWXbOBmysoS0k8vW4+0kGAza3ytUB+F6NfJvdn27vXgzYqGB7QiF3/5Db/Wnp/lQGAza3ytWBaLXujzW7P9bevRiwMQXbEwplk3O7PybdwzHrTm6UawNQtd7PdZzeUdDeOxuwAUbbkRiw0bDb+y3c+XnT+QFuE5X536rzZIw/nKqR1a+PSBG2XFt5Yk9jcHta6X2PjtkkzRui7sNmnRlJwprHUIEk6JogILxhScQIvEBdoHJdkmAxqzw/9UTMQpuNBjGCep8V8+mQcJVCtBJrXIp28kjP5ZkNZI10T6IoOxIplpAWCR84Hx6WFAu1m3VFmYJXADDHcg1g8FlGfovlWh6MahICZrtiBFY+T5hPWK75BYaOSJxVPxfixglFTNZOi9YMWwSN1i/E/I5IZ0trOjjb7ODs7A7OmA5Uo4OzMb8D1O+vaf10s/XTzdaVDidui6djrgciXtvi8WaLx5stBmtaPB5zPbS7tsVjzRaPNVvsrmnxWMz1MPeyRcRk1WhtADpj+/NsxH7Eis5MTsuFg+h43o7sj0QW27liA+MHl4nxfIG2tTb364wEynH78DSduNczMu8y/vShGVZm2yiivGeG18PwKCxexibJcyR8EyOpRZRoD6Ouz4zHTtMrKGdeaM6rMj/ODPEGybQZceSgx6ka0ZOHWl5dQ5xWEUSXqHjKsJbD0mj9f4hO9L2OTvR6VyXqXn6CGrtFH1rZg5T2oat86xG+4SD70a6CjjNquYqDNbBsit2FXqvM7OdMuSS575Sps/8StoeGRWczATJalfaQR6hVa0nZ/JuP4k1rSml7073ILaKL3Nou+zuioIfXqmlMCcTkQQ2hAhtTHjY9r7WmfJQ110Xc3jbMKbPbZlV3nsCuwprpT6KTdovKo89ii0pQWlQcewrggVrnnlVkRnE6HuVBmShHzVibzMIpA5wya1qRq2FEYw4kRx+m9CylAejqQHYxa3uBJtYYWDBAiY8OQGJiZJGzn3u/yGwjS8adQpn1/o5rvADUxQpwXxHKlM1w7zAaj5OY2pplUOOf+yfJb8UPfH6L32GzIQqdtanSkAWkSfE7Xia0d1tlizZsw26iVUqgyWoeGtC3YsPrP/LSGdjgr9c8Nwpw3GPAMfaEFH6jg1VggvqNiqA2T0snzEuFqlxOnl7aVepBeiGBQJF94xkYrTYHpWezNwSr5Hhgp0xbOkQTsCK5/oIoanpE+Vq5VqcjNJjK7HSv+YnlNx/V0CZcdqxedhxlqmZ7WtdsFDGLRLCuc2eNyv5wJnO0wSFLhTIMkgyTEiPttS/zvX9z92yiZ86OJgLLZd/7mHDZ914yl33vJXHZy+ex723lse+9PB57vcti3zubxd64KRZ745cYi32olcXuqnHYGy+Jw954ORx252PKYHfO4q8P1fjr+2r89X2Xwl/fV/LX3RW/2r0xdz1gql3tMtf3XS5zfZ/LXM1PLLz5sMyVy47Vy46jzGGu7QLo+qz114MgPuzTvawAioRsrn/zGwTmuh8Vb1Kjl/0MZFlAZCfTjnhFFUndvTQYH7ltGf/euVxUEZ3Ny82sY1TjgjVrWgx1fPDUapGWN6x9w47CPzU1JBTyNRARPno6xkdf+6Z2Phh3yhT9nB/Go8rGsjI+FQCw+Uibr4v0dY6eIiXJEkn6AW/9eae8UDBAwgFxY6mGGehsGZZjW05oOWfvi0b6xdpFfV6Gx3qE8kD3yW0WHx094EuRcNma0pwEf1p3rsUHRnFYGBBaWcnnGq3EzI5A3zey1zLxtiI4NdVzuGV9RsNoEcDowT5DFU0VsGxMO5PpNa45/4XLiL7VX0TRt7oWfavXRt/qS4u+1W70rXajb7VE32qJvtWN6FvdFn2r3ehb7UTfHl262PBb/ViE3+r28FvdDL/VX8jht/piw2/15zj89vHwW/14+O0XbPit/tyH3+rHw28fD799PPz2CyD89ujSF0/8rZaQQy0hh/rfRvzt4/G3j8ffgkxtAG47NXypBOBiro9tBC56uKwQXDRw+TG45tD+p6wAwh9HvG1e/8MBJKRCqyl/lq6c8keHeeAogIKaAigQBRC+6KCmAApmK4B0zNd+1q7B1B7f8VDMjfeS4mdez41PjejrQmmuLaCBCQ/Jnf5QUV6aHmjB0QPNN/VAC3oe5UoPqad2VdD8xqogNLSSL0hDm9QGLUz1/HraIIAFuypXbNUGDRG7NazdVWrw61Mp2W6SlrBGJ764MDaKE1Vg4fGALyg38yHItBtXrkjk42vWiXyMZkY+Hm8fUSP3ItDOhj5G9aSRIJVd1o6zmcYiHUuoY/3F5CJe/IB5MbaWow215TFpy4HULaBpCXV0Z2h+S6jjrrZQx1207El7y7AbzW6Z8wSmNuTx/aaHhM1GXZ2IN0mXYh13sdkoQuJEinXsseEoy2OqFVGQIGqtuxR9C5g+ANMHRGNYiwyQgPCRG+sY6V5brOMuXMB4SLoONN0nE7PDjKib3ITLNumnzshGVO5nus9dsQoeiMnt14Idw5oeNdwg2DFqC3aMZL24j3q041Pg8QcZwAn7DmG+eMracEdTO9DhrHBHyKj1iMeoEfG4y4l43EWBHrtqEY9Ucr5WcuQpTsRjOtNWYZYprkVvR6DJRbOEpWtRgK2KwwYxevy6HbaeVhNePXgyzn41o2ju7jrR3Fc/dtHclqeFFxHNffVlRHOjDuuhpb1wU40FVfR2/cXkIl78QP3F0WZfBEu7yOhtNFO6GgQcyRiwNRI3mQbOtWnX+pKeOIDwEPe5Tgc/e+b/Ugt3ExmmxUldo0PN29gg1ZjHizoA+8adNHifa+Lb4nO4XR1revOMJ0MtUF3HVKcw7qpoPj0oXEgapU21TNyObwwXNyK/6FKucmKjWli5bmPlmlh5dnFR64wzYS1qvQdObjrIxAGg4tEpD6GMWs/KC92Zk8dO1LreKGo9sfiQ8B1tG0Wt99s4uV4TtZ4w14glaj2ZGbUeEyePS2t/Yjn5roqR68cqan1XnY/nErWu10St52vZeM5R65tk483Ade2wcU1sXNfYuCY2Xis5kjtsvNd+5KCttgujH1/BDiY0Yh4eNni4sjxcWR5u72F3eXiU/X4QROZYhD9M4I/E5ZOPRgpHo0ArOhqFWtHRKKpC5LWHw9id9U2H/bJGr6RhA54fgttC7brMWBKH+HwGfOiFyzY6Hr+/e9mNlbdB8uB+fOwIm4ekCIekBF/wZw5JHXNISvmQ1DSWd3DG6huIDmgcAx3zAWlQs4MrtoPbg5lyzzk8EKW7y/WjARphUzugw7Z2ORMNAQhan81ZyZXu4TKCAB+B7vPNDjga+QgDLo8vPkDktxwp2UreaCWSQ6ppHTP2dcI3UqrKSt7eMFvJ2T83dczkChhZzX4AQh/IiejYlyelmRyf6yQ0WGpLaLBUJTRYekwSGizVExpYRtpvNZdDDl1jLu+KuRxYv73MbbC9lttgu81tsF1yG2wvBibTAH4NykwD/EZIc7yv6DcYef+N+dAy8mFGjQ+pYd1dm5Zgu6lQArAYcZKDLO9xkoNMus7QdY+71r321vh5Zl4ecJKDnu4hyUFmtq0NkxyE7b7mofia5xFdpupmORjReqMjJ8vB4LHJcrCEs1MF+E0lOtiOkRRhPdHBEh7yujYSHWwHq19C/HjoJDrYblpoSXSwPY8YY/KeTXSQtSQ62O4mOljaRKKD7WsSHYS1NsxQN0p0EDqJDnom0UF3pVBlooNuleigr6nwrBRyogPcGs/lD3E5JzrgiIe+7lOiA9VMdGAYl5voIJyd6KCr1TqJDpZaEh1gsWYuYmMJbaKD7TbRwVIt0cH2eqKDpUKZT/PuSt7lu4TXJDrouokOurVEB90y0UHVKzYYRpCTjB+S6GCppzL76ml5tYGNoZvoYGmCFxkmjUQHS2Wig+1mEcO2RAddJ9GBwszaEx2YATcTHUAKOQco95HoYPuMRAdLbYkOltxEB0tuogMz7GHNd2gpj4S2OTmEoXEn0cFSW6IDt4fjS+Q7RFmzQG7mRfS3xneoO8t3aMn6DhHMc2VzHgzrpiguTVCa1DIh6GFbzoOl9pwHptgh5dNL7TkPgEV156Hu5aY+8JupDzrO+NtTHyytSX0Qrp/6YMlNfWA7RYHb6cWnPsjaUx/01kt94FsMbR/B5lMfDNpTH4zaUx80uz/a3v1mUh+E66U+WKqnPug1Ux9kl576wAmkbDZvnYfc1AeDy0x9YBuwzkNfTKkPmrS9qdQHnWbqgzpr2TD1QbPLTaU+sF0ecbscNlIf9JqpD7LLSX3A3XJBe7cN5yEUMF5cTuoD2+2k2e1jmfpAuuWCZrePfeoD2/3pZvePeeoDN4lJs/vHPvWB9M4Fzd4f+9QHIxZE8oWxx3HHNeehbk3K2NMY65428udMCDbGX/fgPRQ2greXbOx2eyaE0M2EwPKFlcPC8owlctjgIjIhDCB9NTIhZHohj/SojGrguPCMDoiN2Gs2J9V1XcjoxwHVFlbtSRCiWUkQLFdUm0uCwB11Rc1okyFEzWQIYf0UY31iNk6F0N7N2WY3Z2d3AweiDRMitPRxutnH6XX72DhFQksfx5t9HF8XXJtJmrCGXI41+xAfImexN5c8oVej1qFQaweUKj5E7TTRTKLQu7gkCpZQuGKNWKCIGV4usTDAMjs1NKi7DR8izBVN5JlN2OD6EOGkv0GChWpgLWkduIe6rs50Ftm0CBGq8vwK5E00a5Z3MUG3gUh335B36xBBn3zFYAscRK01ZuPNpWq5nJQKOsp+rKdCBA21JT8g7xt2EckD6QgAV+OdKINrH4U3jpPR62EKJegjiaBopZY4eT0yf+sQ7+DXA/xL868J/9rFv0pFvSnZbTg4R/uZxsa3L0u6hmzDWGBrdQ3FEqY0hvqqv3Vsi6phPYWJQQcSdWy+58qqQOOG/jOeHVnsvJlcxJuP4s3IGlNb3twwstidMIyp7RN2Iov/qDWymA0uRdLedtOsqNaaFcMyiUOK0GJ00u4j8uj/yZZFVfqIiIdIFVqsKGT2/yx6HFqMgNV1Vmb9xNh8i7JYBavQYiWhxWY1ZPu1scdQMR+qXesfasUpsrm+kyKb3xLqb3Mb6VVpQ49+qDW0+EHO3hDLlJUbW+wuQ+jGFofa57fqscUotGtTjy1WVidko3/ZpWSq49bgYnb/mV2b61Cw8IdqwcJ/XAsWNt8lT/yGhBFWwcLmpSJkvy8bgOsmY4gxo2a48PNNvTeVakMe2CnTlo7r8cLh2nhhYMcsS+oRGoyNFzY/sZrmw8YLc9mxetlxlIWOWwwDsmGljMRCCR5P/n2BXG0gFsuQ7W0U4yE2yYKmE5LFMrYm75rZrY2AEQ/eTsBOjHKU/V0QRXJndCy22D/YtC32+ropli3HCOGu22HPXjE7rA5y5dhiVc0Wq8QWiy9akS02JYdVxUbYkI2wETuspjqCw2rkOKyyPVZ8UsneyT6pSnxS6zbZ/lqbrOuTaj1fASVyfS3DlQkmWNjNOaz64mfqW4dVa5WFw6prPG1ef2EdVpsNVYbZtMUwyw6r7W2zqRfJPJoeq6rhsRqs8Vg9lamwPduIm2tkRsKL3/xoe36R0F5iH5QJRsjcYOq0ChGqvQMIETM7ENoo+dY58128o1T7VuXebQGkFSHCeTO5iDcfxZshv9kuRDQ83EIdsBARXFx6Ep6w+S1CxB+0ChHMKYrk4tKTcNtK0pKAPliG+IPZMsT/LulJ1vqZ8oGD05Og1rrr4fqZhuxnGkJ0CNdmJUF/LX6m6Af52w5x15yLpM8Cvlkp62fa6gTT9DO1uUjOtgoMu1le4G4vPhcJ3pqZiyR0c5G0yQv6YsQFPUtaOFuTFj5YkxY+WMnSG1KAKingxAfL1CJXC5Cx4eRhTVZoSy1yM5zgXFHBNKTjy0ktQiOxooL5iXU0H1ZU4LJj9bLjKFPtooLdRUMrKIS1iJqg2lI5ZsHHpukICsoKCozKNnTh4hLHhI6gEGY/YQUFOG2xcOBDOFDaJ+EgwOdpj5UO17CMMHpNOQ3fTqOI64dpz7Sh/WV83qr9WuwKSm4zJfht9yArfWOdee8NIAyg+t68U5cJwlImCPE3QyYISpkg5CwmQxrasJIHbqF9sxhx5hIeJv+YJ6y3Ukmn4a0VUCFLBv1GtMq8s/nPOZu/7pl5DvII1fTcN/c7+Fgx3aFcFBGQYTDADkCXkJd8EZmNe36q5yZamVJ37y6dIJ9vxq67XA27tp/xOvjc0lzLq/UDT8fd4cHFhjTFvCM7/MeeFPvigRU5iUqeWG31jB+KOdwhcbmSC6+CmsdVMMPjKqz51Yfr+dXvbqYose7YhGZF3O54FejYdbzCTmgdr3YRRp7wykETWZ721jh1njJrwi9qvzVbCZcmVoHuwwR2woPHAT8EnzGtJNbj4LacPm5nMjvE7gd3IojPeh0c8yquZb0OjqLQ9nLEk4wlkQ55Z3A8DiyMgtaLFg7ZexYEInms/dLrIBmPbE4MLk1Qai9MgLhZeh341r3gOEBW1rDOCBNTHNZHf68HrwP4lO5Y5g64OjyzrVXgal4cXxwPuLrl8lzO9oqzO6gEX8/sIMcDv3Q8kBFLAcinMYV7I26Ka+gAu4FXOh74jawlKOB210zoCNo5H7qdoqCt0/Mht8Q1MLUl63iAn6FM+RHryCHFmDH8iSSZiUz7/BIcD4B2zRGcah/BqZDb4xoYzXbb/US6J++znsXGsvujprhf7/7Idjge4Emz+6Pt3R8NuT2uAdjb7ptZS7jAwpwhng+0XzoeVKAoHQ+iqrsBHA8sjM4G3BxXxcqbfv9O+j3tvoyCRvPieNB3CqBkaq7F6cAC5njATXF1oHqtz2NuAyhodMGOBwCXgfrQKR5Rm6Z41FyMY9L/vdvheMDN8ksgONt/6XgwsuTuXEZgWzmnMHLlIn8za4klb8VNcRVB8OOe7feEcvGidD5ocpgTCsjR7PbeGd3eq7glroJpX2W7PNLs8ojbJTokrDrvN5YdBU2sOqLsap/3uTWuijWpdXvGd7tFQWu3p3x35VHgItcAzgd2kU/53BpXBZLVup00u53M6Pao7yw4ClyUQLcT32LCUZ9b46qgpFq3Fzy3WxS0dsvOB1ioqyxLZ+cDNE+FloQ97v7YVXA+4Fa5Or7Xuj/d7P70jO6Pl92fsD2hkLs/5XZ/Wro/fhWcD7hVrg4Y7KhRc7P7Y+3di/MBqMP2hELZ6Nzuj0n3p033d3KjXBuAqvV+ruP2joLW3tn5ABVsRyjk3s+7vd/CnZ81nR/gNrkywFR1bmMF+2OP0wOw04HdyOuSxp7GQPe00v4e7bPnAfMPnYrnQacuBSyxDFY/6zFbWBIBAy9QF6hsZYxWQazHl0w6HbS3jrCbSNMmiqOm9iF8ybW3/bolFVIfcqdEXNV8dQyrrJWraxk49glfadrsUM2Wj85aSNb9EvDLgqvuO+pj2sj+sSRS0hL8EPgFBpOVUanpQBaOO7kQu/wXBS7/Dep6hkZHF6QJkeCW1u/rbLOvs7P7OrOmr7PSBPjxzvU7Ot3s6PS6HU3cjk5LE2BgG3R0vNnR8XWh1+jouDQBVmU7aqWqY82O3CQnjAWN5o/Ji6BpaZ4jDC1FJ0TNOLDOIplHrITOVNqgUTxvJ6NHoiYdoXKNlpIrREtktLFzqk5JMA/WPRR48p08dPpMobbquV4KgQ42nelEUrDYkdXv+evUp8hVuNeINUM6npplywPxOmBzyhvyYFy+2CnHCV4nfgrBqjU31XOd+OYsb3Oc/AAHYyfrBGMvbSoY24Oq+hqNxb6aA63jMlo3LFvauZnAZ7Ye6+i5/TbnCXhv/PIDR1qdJ2LSiELf8ayZ777xsy+f/a4Mc0/7MF2dJg8TFh7uaXz652DcMOfcDm9cBvTRMn5415r3YD/bRLA64OgbrCT9HJRXEVmxrvX3ata7jEMo9K9z1fnaQ6Qxa/ONovX55jdr8aD5ipZRdguV8fdb+btp9baZV51Hm4EB2rnWP0SNmBeSTb5wR/nCaJMv3GmvBn9/myXjA01DRlQLso5mBlmzBhxGi9tNLUS4EOkn9cjqO8vA6qSeWZ2zr2MWzArLxOph6f3QDr5mYvUuJ1bvwoTRLQOsLY0zTxDvh1iHsskzSdvE6t2SDYCNknXChlrbxOpdcICuvNwWap1xp6QVyyNHuxdtNtI6qkVaR+tFWu8Wz8mmSg495Wq2Pi7aKMg6aqrirMLfq/ZOVqdRn/d6rJ9itZtV86PkaUbLBjW/qwmPa5b/EJuK3SdAr8sl5y66NljvVpTjd7vrmJsf4x1BEoqqPuDP9dX1GN33Wz090gFcXwDgHd7onB3iyA2irL8HX4pIxsRRUDc01fW1fYP18XmMimevzxPWmrPTMVTxpVbZKvDjVQrMDagWqfkLBWZG0LMvaBTCZEjNFBn8d6zKH72Sel8Z3f+gukIg4Gk+t5pUgHeHGD0PUee+qOp5rvSoGDlq+7hpsx/pGOU+KcR1zyxSP/fZ2wGOCbFY1O0airxhvRzQxEo+qjcRisuE0j7oONLQ9XrLyMiFC53jyYxWS2J89HozeD3gumKpT5wQarZ9igJ/8uWpX4VQ++avpsS/8KRqc2f4lVr819xQRk6fvWH5CuvxQednb2jT4u8uwovS4od1Lf4D+4oQ4dPmi1hBK3Z87z4JosZDCbbeh3QiE/xKxh52QVPkJHcJ7mszOaeWX6cZtZ9S2zpwIp+5PVOhBGfR5TjqUPwXdSi9h+g94t511N4aP0eKt4TjMyNEUSO1M0VRsyWUEji44dDdchH3cMSwjYkOdbL5mGh3YRET3bawGU80D0sI1sfi8WLUjAw8KlQ2cODA51pU9PkbSpHlQX4Ylk+OYH+/cIOxoeioHhV99DSdAkI3LBpokQsO5HQcTtl0YVVbZVj0IzfU7SlmBOY8nHIFHCC3y2aBg2tllzF92gPw2v3GDNacdRN+iMOhbQQ6WooXqN3ScFJ3TFx0sFLEyFJ5bvtUB/jy0PbppMg0FZ4vC8+gsKd7Uy4/W5afRnmggylEAYqLjiH2S4cjQLyny6Kz7pC5YFS3ZARU9/h2UXZtN5SbcD3Ejt5QxkWrtgWdtZbNlQQ/kBWsvp+/wUZHHzHlVXi0aa2Izad5eyUP+C6bNeHRgRseHdTCo4PyOsuqX5yAGVFOMp5wePSZG3pBZl89La/WKeIepggPNOG6b0flKUJCxr0aJieV40LpJ1AECK42PU7QLQOWBK5Qgqsx2iJEneP7CrpkgZ28sU1MyU/RrHk9uJqdJtqDq8101wRXxyaqG6uU3W8We58NrgbOlsh+ztIHFXJovEs0ZwzRnE64AsQoM+yu1U8cFeZw7IY8EmaREMhvyAlBy55O2EapkAO13Z4mpqfjkg0KsgFXZS2B3UxazZ3ctWVFBHrSlpwXe2D9ggYuTVBau6DBF03ledI7lGbN01gmrsHFPJ+HTLHDFk6ZwZ+JwBZ2LnMHqN60drIpGjpVbgjVHWvnqcra+cjOyjBzwXw9hbYn7h0NKGBnpsYUJhE3xTV0AMH6BmvtPBo1LGBHud2wOaGjNKHQ7RQFbZ1eCLklroF/tzvWzrN4TUwBhWXWKE7EiFN06vaoozADhMC85ghOt4/gdMjtUQ22L9juj/M7MAVYqyoXJ2LMKRxz2ARmgBADa3Z/rL37YyG3xzWwArXuH2laHVFgYc4Qz0dQvQeOvwEXjGr7mx4ZjVpgYXQu4Oa4KtCuZip5yH0ZBY3mT3DB0BbwK2lzLR4KLGBOBNwUVwfC1/q8120ABY0ujqBAbFnFnFM8EntJMd9cjHul/1Pm+5GAm+WX8G/NQnKeTYDcABfU7zq3rZxXgFbT7HiGX19L3oqb4irov9bnKbzkmPW42SZ3OUVeHM0uJzO6nChuiasA2LUujza7POp2iQ4Joy74jSVHQROjjiq70hd8bo2rYj1q3Z713W5R0Nrt6abJEQWMF7bbs75d4NM+t8ZVgc61bo83uz0+o9tjvrPYKHDRAd0e9y0WHPO5Na4KWqp1+4jndouC1m7PoVzMZZZ06W3Mhwot+Xrc/Ykdhnw9bpWrYxA7a+Tb7P6hGd2fQLko5y0ll92fdbt/SLp/CG40HrfK1QGJWvf3Nru/d0b3R8ruz9ueUCibnNv9vdL9OdP9EY9b5eqAVK378x23exS0dn8G5WIOsnRMbwOTdzrd38a9P2J6v4nb5MqA0861ps7h2KOozQ6bOlm0CKrdHELG3sYw97aS/l4ogVGT90bdgaET2tq6AKBnxb9okS3wAnVBlSHNi3jRLoWlFx1mg8hREjZSttQk1lAT6qHrFgp1UohzG1cPyVKTQHhtz/zYGXui9WAY2PDqCq5hZedybJ74JZDDl8I5zxjZ/sJ2kZXgFpPwCwwxFlZb1+0RN9YXBQyqdptdo5tHpAmR4pbW6+lcs6dzs3s6s6anc9IEwPyE9bp5qNnNQ+t2M3G7eUiaABNbt5sTzW5OrAu3RjcnpAlQ3brd3Nvs5t6WbhqN3ysvgrClcWBunaC7IGa2dM6mmSOxFdCJUht0iuftFHQkbpIQKtdoqHulaMi0ltTmFZaHpLTF2klqKrdT8tJPL8rciaBs1TDE8tCa5s62YGzuNmnYOxM0k9TtnR1X446XIgAoEZNnu37daD5L/Xon+96e8usmzz0tStGa5TNoaAWDNhOVea3V9BlZ0+cmmqLKZuQwfbYqHpqmz6hh+gzZ9Nn+Lps+299tmh1DMTuexbQIKmx4/ND1LZbHh68n81t0LXTVZkX5BSjkQ+g6oZ5HKf+4p/xxrVm7jaPF28HmWozR4LWGSG1c9+beeF31xmhzbxgGYDP3f/T6FkvkJ6+fEZcdtcVlR2sskYblSHy2mCLtLc+mc5uun5M8Z+U9zz2qJbyqDKNqh13zAoQeX4DQgw2yJ+n6a1ZC6i9rhlGxjhux19J1qCOYEnt8pbOkqCC1H5o+zE0nM650jsu467pJ73hNOX9fEUiX0eyQa4z6SCPkmt9qhlw7YK9MB1FrCNUuiooK2kOogp43u7JUgfbRgz6fLCFirdCbYyr3mpdKh4SarjB0bCk6akRLwc5QKQzzQNSfZSDDaK3AN5q1XY3wkDV71V7MujkMyJxCWQnGOjxebdZ/Ycue3FDZTr+/9UoBbHgSvSJGvHDZ7nk9q9O/h570ZuUMb6M0xEW1U1oGZwdrbH2Xpzwyl5XShbUQsgWR15Vd745l+x/9qb//3ed8y003TKcbusSYd/0+2zox5MoeOd7Ljhp4xy+X6jnQzPLvPS5f4ZQN5pENTgbZ7xOXm6vHneyvoogjwGEtVnfVOvHRCY2cA6F1eUdPiA/JfrlYdGBZjtHtQx6LOvvylKgPDAjlp72ig7Yi2JWt9RaTTKgcqfYPFrEYeBPHwGuhxqlsNF82/OSX0yKY7CQ/ZD6Bw7Gmv2/AvVpwWDiZ93X3ZD6g/NM9HLF8naILHdIoirhEu/SkDjT90tl0pbxYydF8a6UHE3tlPX6+UIpXymKfX2ITzaR63dTpv2BHMWys+LCZMd+niZMVesiNbZxjP4YcmJxc0cPa64VamWoFUco0AjZZpLr7TPZNq4t5MyHG6eF1ZiBeAs9rAi8pgZcZ8E0+VzBruQdoQ5g17+whR8FYYBZfLMw8nRr6GXeGJetIRVLywa3Mq6/9mBOn7ouklP1zNwoqOguadMakxBkWgtK7MDT9e2DoTIQRo3/MRJgwEaaasjR0JUtDh+lPlb4TacNhAgRJ5bqrjbdeF9NvUKWOaiQnfXZqJNexJNfVAf4MAmUQH78r77Hk3NfR/UR4gc6Y8BThTsKuFl3BHY7/1fRTD6ZF1Fi86I15xy5eB4vXObkicrHSHTPyA6hW9wGgLC7mEatWdHiw6JBM3POR8MV5BtdutICGLQ7mUUYA8UxN3b9xhyBWOFbPQl+SS4GGbJa8RJ/RCpLUs8E+0lFtp9//Q8f/n2/6pm96zw3TAluiQWI0PUTT8vK03r0VFoq5Kld/sm9azK9w1/LKnO1Bj/AI3ja6rzu21XkdrThjNDbeiY54oBlQYFlHjPGc/EGHjPGq7hbCi0SesvdfwhIVnbZFAvBbVwhYtIkVqhZkTEh4sBgaiHYNHnZLBOSrGPjCii6khABrJytbDHltZy5kiZxDGpke0iTx66CZYw1emJnihCQS8S++coDc2rG1r/PILuVs3DEs0+CDHtQwYgFxwTTdoUy36GMEie4DAgtm+fMFnr5XkqDNT6AHAEcJkFSbWd64o4iBnDG+WjQCm7R4V6LasI5qC614ZuGYMhxThmO6GTj28dG34KTE3i7r9YX1KmK9/vj1n3FYrypZ7/2+D4emtRLZtPAb+Ow3UnFhjODC/FWOFHVHMPZAC9rks6AhnwWz5bPAlc8OoDFXqIRarcKZSdu4XTr0xoFGejUs74EdhoyOJBr/HNhxrb/fwjL7Oxc2V18ObK7ZADanOy5wrmsAZ+9GwGm0d6bR3vs7jQYf6mwK3LdY5+3HAtzPF3DfbMD9w4ED7usuB9z7m+C+8uBptHiu0eKHmi2evdgWLzRa/GizxfMX2+IRz23x0WaLj2wOKY555SLte0yw4jWeoMVR0112b5ykdJT06c/D51oJcb+9QJbcd2V8RUR4EWXtAmLAAmIgrr/q5P7PPO1pz3nW+G/NZH7jV572ss+++aPvHP3CS8FRAU3vxaSc4a4O5P3SWTed6aybreBFc3CopE7e+LptHruZHqzmQ1MhxJ/ZFkdjT/dMZSTmmsP5w8gtJ/MFUQ2N+OzRR1Olm+9iefbon9Sxpl9CRGYg9F7mHkQyvTDJs0qayRrrlr0x79p162baDIOuL8KH0pkZ1EqR7V/6iv3P+9c83TcdfQZzYQGXxx1QFrJCUeQJd+LAZ7r/a16z58Ov/a9fdz2lMR1Uba3mW7BDk8u3SDrzBE+rphnoXv2uX193ZaO1HdBlxsPpSrFVb9XZ6nSamw8rawAolHYIg8VWizFjnltxQBtstskZjQz01pV84PZXz0G2xYj2eVaGyABRJjUa2mgtSKndfVatPzvaHDFaZv11xlJsH6Pr64il2H4mUREiPPTNvgrhoRHc0+Xgnua5rVsKDw+WlOkJZaovacoc1ChzWKPMEShzDpQ5L5Q5lMgSUORCjQYNVU5mkeH8RZHhaFNkuHjJZLhYI8NFnWiaxVqCnGMwLuot02LL/Ya0emUaPr9ExiLQWxq0MzC0s6gXiXZ0ILatTVGlbXPrZtpsb2UmPV5RKkSvAjfdlfEYmjQlwrNtJEsXFvfHjEpPJ1FPohb8w9FdVtxkErXSkBKCfX4eMMGGnNWSCfbmIiaCjSWUKeHLI1Mm3y6TLz1bgq4D5NvHB+XHDGaTL3RqIF9zFDyEjvHiqMwq2YOOGVQ0V5pIcHScW0vNgxW0AwoUwu/pPs7PfbwcLAsXKMKqGc2F9r48Pb+aL5iXIvwZCl80FD40DeAW9y2GcA1yxyfzbWIRWuS9d8QnS92VUVZpOrUpTHX1e3RSJ/TL7sZy4aHLBgZ6m9l1KlwcNHBv0EzWZwYGpX2MDxxb+4YNDNawgXkwJZoJlsJ8FOafig0M6lBssIH5GhtYMq2YNgyCCvFvJajb3Xjeft2uh2VEEas1aR1Cdx8d6AFSaq4UV+mrDH+dFldN8x3aF3O8+WFKa5Q6sAQSg5oxH8Bgh94+MR1eBQ46f8ldzWh8u96xYhqf11dBo+AMp377fc8srl7S8wg3Mp/bTUxVuaubeg4/2WhNSe/Xf5YdAzfu87z6dQwDSx5kOsPzAbO7EeYw0jFzkFEmlkfhICNzoKtxkL5wkIA4SL/JQYKSg/xZkjAHKff58HEusg4Xma9xkYUaF1kEF9kCLrJVuMgCuEjCY9tWlxNGJyezGMTWi2IQi5tiEEuXzCCW6gxCpxqzAPl35dtVTaaxhYEMGim235/vMN+uMuR4f74TLKPM3+iXVFzM6asaZDxvyHhJLxEZLxmtWyk/KOhEQ0OxpjCUwk0xkHpnOy+usx31ztqbn8k0rgx3sIyhCEqo68AOs4/xpFLer+SQnimx+1dR3anPvn8ZnvK75XESDx4zBvOZbjLPIoowmIQZzBmHwZyzDMaqRwL8clUbcE7wShNsTNwnkTsBvSIl9pNKXswuJ12kX3vyHptm+8yaBsyahsyaRsya5vBBd7OBwyzomFhTrKN1WNOijsCatugtktvjmEcnxoR2WLHqFttKpjJnSqofo/qPIf9ocq3FFXRxMl8CclCbegE0vMBpCsxLMb7FVQeaC6s+Gr+H7m8wkaXVfLtpNMGf4WpXjT29xXSg04OGghdOGuJNT+ZPIIaV6KtYNtrKpx89kPnZncsU9nX1O8Dvnv0d4ndmf289qbt1wWmRull0+eKifsIkX6zIarFBRotvzBcsGS0YocF0kj9Rp/iIzdsLhi8utvLFJxaRmaapG5uPwvxT8cXF+hKswxefBF6PTCeR8MCdtGRWWtL2a26/Fvbrk/UWTp6A9aUkE9XJsjYGvTjV24VfLRK/ynfpQI4g5sdTtLI/vkz79oepb5kUACyZUzmOluYfZXqXfvLEDOUpupjkhf4ynU/y3HSlJ7l+DIY0YxBP1rtWzCAK/ZQVM4hcf9mKGYTWSyu5diehY3DamBjTPPjZk7Qm8WyOf+T0Y8Q/Cvwwn0+e5oul4GZacFjzRjhFtpwFsGaiiwXuFnOqIFN1L7OuRhDY3yF/zRczPcSjRd5ZtgIWW3XKfHdrRoF0CO8H+02E/W6FbrbGfxccV8WFJv+NSv77C9mXGP99nP92eVZPrEmVhpNOriD33LYZ7rmNuee2S+eeSzrTNIv8Sbon37Tuy7dcD+Rb0c5l9ZJ+0rR40v35k8GqpoW+P99lvuXTIr/fsJ8lQ/pFcX/+ZeCwzF997ZfMrNimi3W5md5mJS2qnut6YcCF2ikMUbign4TCBSncFP+tD+vLLm5YT2kb1q62YT25Pqz2gczks1eGbVqOWUTl6urImVCk+83ygMt7zXKZluBQNTPDnE2JlVJsxhaWgOfwVOm1D0Z4ELQ8GOIB9yYPFvCglXdfEab9sO+DYTNnHfGlYYU/9l7EHFlX98TY2G1yf5abZnTwjdDMsDsrUj5gD3+BCWmwd8z4kn0FvJ8csMs7voShSLt639QmYBi/QEc2ZQWNJfpp04yXoesyz7vsIR+iVrX/jdZLE7fnNE2Qaq2b5vnrnZEUYQPLwjdyn4xlPuDsX+t/9Pqmi4TcDOSPf/vk0babgbL3Kb/PUGYgWMOGaa28BSfAB98raEZW2/puyRPZolJsDuTv2aXxQUPrOp+lVK4TMMpEjBBprYpOwNTJXQZA2LUsPuJdOJJ5wh2Am12rKKqTsGL0i7IavgA9ahq8IfkS9/KEZU09MAsDODOUdVKlFpkWowbAR2uTukSYSUqhE0g0tIxdPwZSxeIxyWE30qIeTvJhPTIlhA51yDm2POvoEmHxa8uYCLnERC7J+E2fdMglLsnlxIg8ktP2O3as+0thnS5NwoeG32bZaVBLhBaM/+oPXt2aCC2AKOmmw1FOYphxREnyzZSu44aLcHxs5a2mMXK7P81fQ2lGby5Z4HUcWrIHQ3wwriI+KHsMVGn09Dq6NeUb+501EwrGD39Soin4gc/1jbP9ovluPkaYNLuw16aqMjR+9uVeEbF/WeVuf+s4xOpQaZGYj/COIpVcDw96LYEvb/LKlHvPQws6QCwYssnxjwARNIfoR2K+3Yxv2PjN3Pdrj0YLxwKjmgvM42eX8L9mLfxNX6aTfQL7YHyBAd41nUym9DW4ONjvY9jvdWEfMOwDgf2+Ip4J+zd8ai3s9wH2AcO+w7BvAD5gwHfZGa0azW1aRM/QfATw6magv6UN6O9goAec5zCgSKJb6FtMoD3AoN1XA+1NLb5YSPrVqXxLGMaP0PcyCMoMSPi9LUCIj+t7AlaVMebZvHA9+BxL5A48r33J9lR5XRcOuZL75v3tAQV+uXR2hcu9ZMOlDownptlnDRhYYzmaIBCD1s9fLuI8IOUxmN1LeDF2G0Q2kA9OFkpiL242vwvavc7fodV0/+Sz33/fq1d2nJ5yWjuaTHV70OroPEAir96OpipmhcKwdrvLig7xitQ9pCWct4wJCnRW3sba0RlD/p4mOsBob8pfU2EEFT0bKIVlCXhZQrA6WhaDXAg5wQ7Xr9ZtX2PdeE9J7LrJCSX9gl635+vUWbdb8Lt91ZDMtn3VRN5rBf7rWoB/wJQ/4AL/Jgf4+5rA55MLS2c06oChukGYBHcWwsc15b2dIyWKpOo25NvHylaLRGafYIrObV64L6xxGGDM3/xY9q83lmfbsXCrmx8Lsy5NEtFDXj035hkPMMU4DueBc7dTkH3AU+LaguDlf9hRhYCOz/Dm4CnMkC+FRJcQwujsic8bh3Jp78k3bAYzP7mD/jlgBPBGJ5IR1SPRk/yBx5/akXtcqINnQ6EyJHb6HTQQnwbSRzqxTMYFCfc7+pzI8FNphGMDbq3CX+Uc+KjV9UigBJF5HpSgy8MSbFbA5bgm1vGkLAR3edPaSRqaImPNB99irLs1tUapgMl0cjAHunA/nJbgIQ9Om9wdB6pTQY2j9PxSFotlCpGV29BuPP7gn7wKAIyrcsQgVG/pyNWBxON//DOnPl8Lyin7fOykNnBFaBWDDqva32pjJ+P6a+O3cArH5ttVKEkemnWpDRPO6X0716JXZmjrdxqxftbEzrwpXmY6pYCtGnfitNcodvlSDHqJ64ZsT0cgCohUIBUIF9itIAP4THetbd+K4padKuYwChiptO/sSzH2pbYhWBDWTEfx+J3tpiOysyPQCn8mr+kQOoSRAdMcgWxO9/jUM6hBbU5TrXm8ctDgJ7Yn3hD03I19Qvu7WKYoZ72E+Se6J3hMbLOI6cLvwmDMSOO7Z07+kpiP9Zo3UYwHfsa8PEEZBtC/P1/U8/Xli2HPw6NwSoCaFAS3RId6UUdTUcYAWKbf7tfjwEUNZ3JiksSy9aXscATyAv+szwr1ZVZM3vvNNOfGPj0a8ILPVdFITO3PBgjmeTKmMmY7V852QY/q99cGOnaMkDGveJcvsWPEoJanOqaphhzQGnLliEqnhfwMib27AFgAAAYuAJj313PGzhMA6Osg+60gDMDuXoIYs1JO3wkku+CVcrq/5v5IT9PdgT/nBL16InsPwV53Q1VSO1DfRYOAPE6uju7Z0pWRORECKhtg/ZdTZUSZ67ruGUZXVm1U4IZECrLRR/+Bo49OUHQfQr/5f4cBq/gZ3l06eNNL8gRgftsKUudjvX6y6PK1vh79xoGbf0Nh1LW86M2sJL2p74N909BN1Tf/pxmA+6e33T0DcAqTDpm5Q/20otOpjghdEjPGPCnjkT18eGbgh+8i1heIrx6NJ/cuYu4BRmA2TpmxzI+3UeIR3Z5vB1aPifaAU1698272MAc4ey/ZEJc8Bgk2Awjbv+Dgkl/DJUEbJHZoz+wv01Mn8qAxPT7xmSxiSBThYGNhlGUPo9Rn+aHzX95s0uhcPwsntX8K6VNNutHrISz8dRh7L5F5UnSmyZJmOsn9aoCFwhCDxhCDE3nYGGIINDZDyaOKKnwd/kd0+lQzoFyC1WnlgDwuOBXtcVrxQTd2YdQ+AL8xAFYCCowUoGEw5b+8ufABjxnQ6JzSkUCDaZ3J1r0hRIxbuvE6KMRpLqDEq9dP84BJNtD+24pk9C6DAXgY6OSFOzYJyUCHhngTHIfBIn+y8BCcFh0CRhlK0eE37ZBbusFPPcb12N41yqIr0m9jf9JYQ95+ghWdIEmMlQ5EHVwSQQdEQEx1vfnpyFLn5mYUldQZ860lLxUCVZZAh5kdLcY3a2A1VmQVg2p8/sRL2xSD0Eqm2WqSloiemNTe7Oh2WcgO5M4jloljQf2E5eaUfdtTEp9N7yQ+9+xG0Z5fpOEHZBNsVCQ0EBLqtJJQyiSUMgl1LpeE0JBpVCeGhAZEQn3zFspP6URohhECYcK6Vya1Twj/UianSPfMKmORNYZHuaghp5Wm0GgcoFKKJU4F6bIZLWXUEtThxgu73iC7Y6/bbNvGa1rq4Q/6drg61fqMuE8Muwftu5KIWCYh5JDu79gkPE2TuA2sRPeuVmZGEUiHKZThTGCyVx2I7T/FNFIhAPZDhaKhJ5Rbo4Wu0EIKWjCvv+EtDi2kJS2MgDl23lFj3ornPacH2I5DPXgb+Rb36NLdVhjo+Rp/m3/hZqEC1rgCS5j2hbcl4G2h9oWxdQlwwthSPQc//jrQMhdoOhXmtmAGVr84SCCZAZLZupDUo2zVV+ri9nylKSW3Kz8qu+fXturvAS9jCcCm8tfrCo0KQiNYT1kMvoMzjrCssAHr8EQeNWAdiSmpw0Y2MGCKFKm47+Ea9+XdYgPue6mC0ft+9nMnGAHa4IDnZglGeiPB6B9UVBeMLlcsOtcmFsHtpSkdqVbWTl4Lno6ZtavLZu0xQBK70pHme4/rW76HqjUJCRXyxGJjsLGIEG9eRBBExXs6BqIqV1KIHEkhquMq58iaKSlETrB8NH4fJIWWYPk/DWIrJEAavrICwrm6gPCQxxLCLWsFBL15AcERD0LBoWgT4kF0JcWDcIZ4ACMAqwC7UAEybiBeErsqbUA4lg1rG1CXkYA3XnN/E0N+cCkbb0Qbb1hiT0Ybb9fZQ2pbryCS7LgZ8CnbzMabORtvNv6zX2jfeA3GDrO/9ZR/KfvL+c3sLy9ZLmhrsPfPbR5VsTd0duTiVlLyYzjBO/tER2jPa5HS4WpADQQCsl+5xH1idRMH6AvXX+o+gR3BhRr2iQ+V+wTvEvA/yH7KC306KYAlmFdMpcIHgBXIzeBx4AB6c3uxj+VjOUsvM1cwxOTrSAclono23jkmqyrDWRQlEs0Ie68gohnqT6jAe0mXgC1j87nlXDH7CXj8ecjsJ+K0ZRGr98FDyHGFHFSs4SniQXZJqZhnZeLRLovwWSlryy1sNq8cgSVxmkJAJbeWkdEHlASzQGzrFF2bS5WEuzIlWq/sSGQ42xF8DvFn+EgirUt6iVQnN8otFgHpYxuL0z+RDxqLM6CbuvTA7jexRt6pbnmU9vmsAWDYHI3MD8rzhuUXIJPKJIs6AUovlf5/6guM/hVxgMeE/iEnfmHQ/4+q0EqAIKtzly7/gfYiR/ZzqZRM3S1iX79zcRIMgGSlRNP0pe7wABMaEg0aQGIFuotFL2DV+oLd4YsV7O4JqsVJLntxkM6R1yhm/piAP6Y6ESktIfGM+FpzBcMNVtCwwUauvERy5R1xT+hJKSj0+Cqk5EotYkK8lIW0mkiWQiSDZkzTH4tiYMtYI+bZvGx95DLQncoZZ/NjUDquC2Cp7ueJK4ClPLqsJoAlWOJETu91ASwDM83q2XB72d5OyVuWXIcsMKrDRAwd4Rh78f3/7eOKWUPbf+sr7y5cFuno5PxyVu+s3Ju1b43IOyYb5SniMAfQIziqyXoTIN5SmVvotHpRruryfVtTbuLkgHL7cBhFXC4/kBzkQ5nDjGdA3UGrSBpNJm/MPdskEBRgd7ju0XKLef0P3uMylPK2uhDTijW4es3EapOyANVIRpmsEVJEOnmpodUqi4g4Z46c3OGYGZq0q+kQUdDMWUwuIK94Tz1n8UaXLjuAwIhtWuNAdhhSqzoIEbUgRFRHiLacgG4+4oClpVCHhBDxQVi+gBDhi+yg9SV35k4LIhNs7ZWSCcZ7uKElz16z7CEt+6+/+p7Wq2YTGjvsx/CfqYty9npvrZrr7uaOH9nU8b/WRm9fwtT0z99/udQ0/eKjpsep6Qcun5qmm6Cm3/o3Rk1vfe2lUxNgqn0OFJxFUr+qHhOSeu+7H3uSuoIEc+XJ4VOvunRy4IVTsnAb08Tvf4HSRDKLJtqb3DRN/NCxS6YJIlXaaJKSMiafY9L4q3/rpPEzl79TbJo0/sb3YdVcExbVtl65atPViKpTrfECCwy2PPo+u5buFUBtQXsz1lLV19Ljw3TQ2t1PvKetu52b726E7ghCbo8AbO2wGMj367i8Q3em7+EH/OOasXnRcSn3sp8NfdyQdNFM6BrmHHvykJ2yI+EjG/AL18MepPusPN2AbTWz20Fdig1ZK1CAQsJB1NAhCpBZSLE2lFQHDhO7ejOz42BQZyWPck47Nf6frpjcrTExGVnC0YVdTVb8mJTHB9mFLIACOYCZh5VIPL5g4/G5QEMndnxJjckm43/43hlMNjDjGxNZ0DrRmvE9HNFz8EEeKeM7lwsizAijh+NK17AXE6LyoiLIE4V+mZzNMKuTFGZM7rvmbTBjfChRdmOHabQY4O9ZO3RwEDtNe5s1zo63pAdh8K+IFKIE1BrmblesjU0EbWyC2SZTrunsFb8OSqUAyCUOciybBIOkwLGdy7Tfnngf1yS0g9dvRFRm0X9XuwjZoKNQvHItI95AAnUCWpl6upZ62t/J7DtYFGilJNwJWjXQjPmH44CYpxxklwsJ3KMElN6z1xBERgTx4R9wEC6rYobQFydiYoJlsghys7sjCNfTGZo1VhTPFHhkT0nrmjbFzviMAY5azbxuOg/YrsFLwGkAdChlIQ86evYMUeRPvq+VSnSUA8NoiBn+MKqD1poS6NDxImcziXXJ9WSIlcNxwF3IsgJPWpeouc/7OrRhlV7J8ZWzSaqLYtyPM+4/+QJn3N//ms8F4wZ/JU67cuUYt21zA8Z9LCbGHTwGjPtNm2bcf3CpjNvlvMK4uyXjzjZi3G5wHbih6z2z4V7BjJvF/B44KVhewFkMFM0GBaHOhAdmRA46XMu4UyKII676PBWEw2lMGHfKAGayyHLKuo80jEorIEJhw8GietxQyIybuWI9+gfZnikzdMQDxKBToBOluaayLg86tYMOaoeQYPyv39d+CElzBSIJJayeKOWZ7MbzHPpQQiQhXfqizYfH9RUBadlk/KcwoUCkEEbmACQRgEDc0wq6PghOnXH2TY9b9agWuBn+sHVwLAduhuKw+JYesIXY8xCW+LHbQgJnCwke30Iuags5+gW+hfzS51b2nz4Gsv90I9k/VuFjJPu/7dfqW4jXuoXwsP7ivXYLCWgLcQgobixhPEPoT8q9I7Vk0/q6u3c0hf72d1x2UBfEu7R3KE6/H9L9mkxBEQq7OmUK4nw5oe6u3T9CooYf/4F2Vtw1/dmNg1izbBxgjY2No2s3jqbEbzcOjAK0neouj4xHG0DiT2TjSHi00dqNQ2l0Npkp8Yck8Tc3jlQnz6GPUEhD8V1d5sPj+gr9qWrj8MqTwbS5cbj6SQBZZQLlwuNWPaqF9cAfNg6OMVJ243B7aG4cCuurahuHamwc8H5qx5R2/RZvHOrxjeNKbBwffe0X9sbx+u/9nJ49Vh+Ds8fqBhvHqx+7s8f/+LXNnj1+mTeOx88er/yBL8Kzx8su9+yBDDDojbYQHjVmI1tIWLlNhyCGsCQNOwlM+bJPHauf/1PH2x7fPC5i8zjzBb55vOwSN4+o2jw8DgoHHm+8eVgbIvN32TqEWgiJOdmf2+zGO4htWPYPpg53G/nEY2d7+LuHNruN/MgV3UY2b3twCTK9VNtDXB1DFHYN809le4hREGN7qdseYsuRU2t7MHU+cqzd9hCjr8j2pUrbQ0ryd4F9IAOrLCp3gyKqOxykvI2IS68V37F/sO0h4gHyoBUGjZWp2R7iWXvfw66iN60PurmFBDoEqYQ6s6cQMs3QDWt5ipBy3j2UPUNbROZg8rUyFnI0OCYOe0Oa7BShbcdup7xrtJ41Ln+7sGeN1Nku0se3i4vaLn78C1xJ9cHPrZKKkfgx0FRxwxucOu5/7E4d5zZ96nj14xYP5rzv/mI8dbzzMbZ4WLUSY/RjZfZodvN5P4X8ZPT4trL5beW+zZ5CYlL3JgeLBMxZJ4ZWqlj5IrTMtKnutXwTQz9IO1PI02ndmaBnvvK701+9eubuFK6/O4V2d1IYptBEy+7EvpDrnmB4S2q0FYj2PKRNiQIQk6pr1KSrgKE+Bvw2BDRH/PJo1j32vPux28Tet+kzz9+/50r6W6XlJta9qE2MqTbbaBPr2Xd6ziaW1U0vvWVUrIi3q5XdD3ptm1iPCPE33DNPz25iPcfME4iUZzexnu41NjG1qU2shwH27ACt9QV7mdiK+NZzpF2atZG99zXtG1nEG1nQ3Mi6On0OPlz1WXq56rMA/IX1A9yeR7WwLvgDVA7a5LbSPWr2sGaooG0F2eDCbDb07Ljc7JEBlir43G13j8RKUX7ly3eqZl/pypX+W2akAPilH3YybaqGr3S7a/aDD31OXbN/6zFzzQ6YSSmXSbU37O5PlT5Gq6Z9uP11V0ygjdjORbe/M9spVPHZEDtwYp1CUUDRz0zvGziFnji2kVNowkqguom42+4U2t2kUyjy9bgm4gRliQ6kLDC10JY2T2Y5hv50uxeeTnIP/KM2KlJc5V5ppq16VhgK/gyjMJW8WjJXrxdkM2fA6zVjsTp2sTpYjEB3bAB6iw3YcfD/CUnhcdjkk/dnRJ9D7qtFE1y9QeJHlwPxlSq7cZmS5Kp97oxEGb/7gSNtiTIQeu9n/9n3D6u7+L49n+/bU1Wi96CkS4oq8bXPN0QF2IleYAQe8xneugPQkKzTUNoVZmFwDH+7Z5oOGk27KQosqbyQ9W4r9yG5CypxX7EOX0iTh3C2oiPOIThh6RSHn7gqXMljcIe4ZTQ9P8vQur2NbCoTCtvGjsH/IgYfXsTgQ9N8DtAEZnSKh8/iICVIDpEU3nwGL+wD7DqCCgjA08lKkZhRMAZtPO6Exp3MGvdq6MeHveouMI3cJeV1YP1O64VXn/ytIzOSxvgm64m5MJGlhPEjculVH8weN/EUysiPuACycVMXJ055xGRBooQpZoTLz/is+V/81WqE6xVCGwSm3SCwCEBqiw6L8aDKWJIgYZ+zGGmDWNI1R0itkP6YU5UoiC4J5mpv1aroLrV5/KlPmQREZR+DFzHDzPtqzj+GZviaCoe4Y77rxzZHlxH440PLyEaOb7ct64i/3b6sU8oo8jR127RIKcU53m2JTU7rsclt83aDDX0jj+noTWB+ASrwPMo5yKVveVpyxpheN6+VYxxVS8f4Bj6KbwHPYkyZJsMZV6n93O+3Ylb2175kzAKHrOHWDAT983++ux1BJdlW56lqVAQ/mfvlDWVJCzd38QHtB0iWYwUFpf2DIBPDRe29DwnzGf/kKkSEiCUDJXiIYVIqaNopO1jPwKRD/Wq+PvubSHPZMWtLCGQGSbI54M/Ezon+OpIR2Ct5Rgh+4SJNyArQcEUnqxMAXFZLGIAkzO+YX2gO7MBjFvwHFwfo937+AI2tzYBZh6t5WAHaLwGtLgfQYM2Gb66FN+Zc2iELAHdqWK2FpIBXgO3A9TWx8toP5623vOF/2MZ4+s7tJADMA2ru+xqS/h43BTH47Wc/q17EYArGnwFJ3g7Jg+UAk4rqtnr07H66NW7yqVdaMZuCYG08bGRvVWzv0RnruX3TYjP3nr3ZMAt1txkMmnUaGG+ugTeZd7PWHQAhrXX5qKU5l/XxDYHPdqT4zd3ddhMrtCn16UmsW+tdfx878YoZd/1huxGdB5/UcWdaoCPDMtce0yNq7OxZp7HI2UlvorEcNJOhtRqflguXy73y2XyB1N6190ftq+Z0C62x3OCR8zUweUdEraiJbSCf0R3j0YtPlsU3TIkwGAuBNVTHu2OM2dy5XNW7nuuNfo8u1OpkVbQWqCfsQ47GFnIzKBaLLZcutUHYxAW2Q7h5yP7PnncYA/7uwjMr+cD3BYfMx6OfjV8k4x3/5N3eoeUCPz5rSpFE2gwRwdzao2fj4Xe3Ps7O+IEPOjc8lJXQPj4OyG2flYR8SxEKZIuYBDRFINWBXOFi9XySlor0fMj55Wi1RAI44k3bhP+mPOM91UBRvemuIjXghLCArFrJf+LUqti047vNA1l2Xm/Vut68wbSutxq/6l86h/iEw0qzmUuuZMlVVqpcYswxpiXXCmsNzvl7zDnjLyDOeftazvkvn/x8cc7bL4Nz3v4FwTmZbxqd5wy++SsXxzdjHT13BtOcXB7TXDq0IdPEB9N1OA5gGcBVmigL+cJCc6UpE1gXH7eDoeqAReRApyD0QCeV700TM6MWLluoJp+N2vksarqcNtaKTH0rUud2Jsz1GfDt6zHgj//a5hjwG1UAMRN3yTXYJJhUEbwtDyuGGRHDBJ8knlSkeZchnOU9tpESoKZ82ZOO1rJQydQvtz31MK/eTE66sYCK5QQbDZiNBjU2GjTYKK8yj/xWOvvFZXbj9hVWOlm7wiEboYSz8hEDFVsXmSvLIidQtYU6biyy9ZlyL2rJAJqMGXCCtQYDflmgOFHLzEwsPp+1/TKvhQXspvnAAbnL6rl9r3HQCOmg8VJXIxVWB43W2m/95bvba1dcrfAbkMe5tMy06a+dninnAeIye56oqe+3d/+bv3cxg/2rt7QPlrnQBzp1HQrLbe/vrOVBz6tuKt/LZgkzaFZYMbrJ2aRu+SgCURj5Y27a3pMu+TZPv2nfV6t9rNwKROm3N/fZoK6YZINSIyoJUtFfERmIomxPHuNjN+OsJ1R25/06Wh39MnRwhdG+7dGevcAwJuXWbu3JwPdlrL7Sim990z4+5Y47pfHROHaVUwPu/mlEuBtuGnf3Vxiyedy9uUKOWfrUE+36VMZH14LTPqwGeWy+g9baPwCMW384et3hPPuKDufNP7/ecESesMquNYvScl//2PztoFvAx7KBXO3SOxnqD0HqWDaIL/oJbO5y87RvflyDH8/h+6bxe0+b0nKvubmbNOr2glFDw2gz4kseEzGBoi4onm/cBMosYwzLrDULgMA48ZEi4rAoIuSich2zbHMTPAFoQrYznzsLqE26c4/IHj6ioSbegapC2eXVkuMOeuWcx/baw/bV+eVfaF0dSH1R9lbs49jFfVEg7wOqMEMqoGY+CZ3hSckOzytxU843FYM1QHxO+ISZ4uPmvKuYmAozCnxkTlL07CRdx6MjYMIK9n8Ys62Cs1/mTSeQ98gW4OHT1CWAkpkLN1CSZ/GNOwwcfNsGONCkak33YLMo+g186zeNcl6VZjjvc2ONN3rNNxLdM1NZ0f3au0VvZap7EFvswgArRGypbh0Cd+v2faACJjbhiTW3lljj/Xf9nbN2calO/SXP5w3d8jpLXxs7V+FQp9WOAme0A5ZEXUEGWKnQgyWsIiB6bZCWWktafPKyt26JCLoPLP2dKvAO+0Z0NP/almelfP/tf5rBWyBoQt708WWf0VEWZKorpU5ahpMN6RAoF2plqp7MI44sdS8CDnU0Yd84fqqjF0rxChfbA2vjwj+Ub2hQ9EtzIssqIHCQ2Atyed/icFtiudi2xXYvysxfNhhtagjo0uBtZIcCPSi0oGXCc9IsY7l0YC7jLMhh4xn6Fc/Qr/zfdrAscUHJ3dglys7cdRSZHz5FDChXbiK16ywoN236PGB7rAyg6OEHYXXgHmo1+BLpthF99JfWjgimq33yduS0H7W0H5Xt7262j/p/9I62Ge8ndP8QeDpX7GicMSEjtsiDzydKBaN/Npuy9lp9RzvAmsZr8+pNdL7ymR5cG4I9HhInsjSn1hBb9v2hn1Ymxp0N1JdB8pbg1+4P3ysXK0Pws8fSahTo3ocNk98UVkM4uKYHPi/6hu+P/e8oQtMdDrE2iaU4hxYxTI+cUz6Bw175w+edKmXBN+RdrEsnV+6LyQ7XWiW5x3eNKOtSJEaMAALB14PizJ5ujA+k8EN5WXQniibao38Tvhc61uo7MIaqzF+ulRRZYx2zpoTq6xSeFfxG20mAvRLk7hMd2yuf9wI6BDm+Ny/g2fskjwduW7w2jhmaICzQ0IFJ8u/Co2Xm7sSDDabZZGepjjeeJvuXYdcp7+M/8ap3GVobfyUw+NGwxNi3hgpGca9V6Vi3lH9Fp8N28obPEhDJsZOLx9P4L/8HLmewjk/CyjujP8eBHa5KPdcQD3N6VO2j56+vlFKR0UeNl0o2MX4YT6rSQn2j3V3PtZrbz19fmMPLB67XAb20zNps4yqVzXA+iXH1AQ83hnFOkRHt3Mtpx32/8DAz0bPXa97/DcidRyTqmceF0sm1fA0MJLvR09UI356qoAfjb8lXq2TcES1Qm5Fdhk4AYORN+IKvgMx0QZuBPWo1sKvxITGrK9gJY/rWYmBn/9/YtbPf0GZRdx29gJdoM+HOlqxzrw4qa7oQUERonWlVDmhULQvz39IrKeAhO2q1MPtfPAhFFW7/0ceBf4DBa/wSBh42jtEnHwS2Am+yH1chtmPVju4O2rFkb+BemCZHubJG3Y323xajLvxpi7DNeh7o0LGep2LUFZmrY2ZMnAYwAftmay6QPiSkgOWX8TPkYxQhUkf8WrAzdThzMR+WOKDOjI3koGCtMT3QKT/UAdvTg4zxmEZlHumA0eMw31aUtF8mHIInwDWhwRO8OlcIy8tawsbS/qAKymX6fC8SO3ef1MFqHlSLFJWLFF/hRcK2Oc2T+lq5wJeV0zE+G/dQ82LI0sxck/de4pr8Sy8gsrFrchpRq/LcK5k62OxbYFBpF/4xSlx7OH7QW8umx2/yAKZr/Ylpjl5uePqizDwLiO0Ga7SngRnxH511bFOKmqFN8ig4sFmPIx4dF//5b+Fli5xzXs1N1qdrg8CrepgJOut31nSj4A3yB004+iUUVb09j1Wb99DUaP7Hjuw0BY922vapezx0+xoPYxgfPXKVQakHyh/z5se95Y+u+fG68odvfhwTy5gRE+1BFz18NJp7PfXALPk0AF8+H/3GT2AlP+uNPnIcZ09HySuVUdXM7Zf+GNaOMTV52pv7EWryKlCHrbbbr7WFeZdtqPExXu9HRE7GYFpW74e/X25z4geKX7/Wvx3gNT8udJy1Ko8MD/KJhEMhT3nQl96C8reIw/Jxj/yGIrCGY9k3O13DYBabrt8CfKi6hnh2Sx4hphHrhNcqHezNdlw3ybjOmEqxYyTzMX2jyj/dOdA605VX1WfK73jAxtMGmxa1Ij9u29GSdDRy58+dfLbzrNY+ThxtQBO9XOtr2+wuaVavaRZy6Y1rWoW28chrGq0GAH3V5H5uEhZF7a1dqnvNvO7kY9BeLnkArkOcIBxwBrctolWAuVrbkyUvh939NlGtGzvZKY2KtAgY4Cl/bsL9RZVW/8gjNxjTjvnpfbUZmqcjrOxt3IwRFbwxr9fY/3aW4UQJA2TiPopAPB8KM3X9DXQm9vgY4N1xCoIYppAHdsvgnduHMiTQ0f6lr9j/vH/Nt++bmu109GG0XvktTqt51VP3so5SR1bDwTd1jQVR7i0HXXfPBLKPHr7XbpCnmeE0ppcHLEC/A08bz4rgG+F9S7cPj095a7RULRj2Sy+v4UJYgozMEy/VWGEFI80efAgUOeW7oAstO/tX7KljIPEUVe49fjboaDo6jx7GFlP+9OTn3yZpUAp10M3Sp+hnzeRyVbLfagfJQ8ICPgm/zmPl7DGPF3OpEdvQbUgSXVfBaW8QDkpPDP9k0atMgv3Vthbcc2tgvnokNQjODQxuFUN4CfjloQAjvnladGv6XwWjKh1UTxYjSG886v3mG1PY/oZjwBwdFv7yRxw14VwVTziCAE8e+3No5066+bc7+jNglY50fxX/WC+THXkXuIq/Z+0wR/Wx992QcEp5BVBmewAkGZvItEvGrunUhh+V0mQwHpXhR4me0/2KzKfEjnUfH7evliN4Z83xe/SnGCReY7Ie/Ql+y8JkBBACjaFmZlIBdOMHn0lnpMxMYEaKvn/+zaNtsRc9rxqiENroL9EhqAe3gXyo7L0GLwg/RKakEe/r4cnpip0AXfI31P3RX+BVTuGRoOjg2DeRZi9a1gOj/xq9VVTEhhnASztm7qOHo3PVa+MOqlr7Zsw8gzRHJUSBb6M/xyvyMF37+MP82HlQBOawbZ4ehpCDLwiLUeSIwj4p0pzSBnkP1nvR/afDm6KyigXOTZzB+MFH7265iXN2/VM/fOSi6r/jd152UfV/4DMvb6vvaFN+mLQpytWm/KnntWTiYZHrmtZ4tr0t8WwS9gwht2mpUmSfe+iDgBex6GjuFfSmSPNWlq9Ht1nHFqtVrl3PsY/LO6eerg6gmL/eVF7NMbKRO++ASaJLXJa5pY9t+xFj/yAOlQf4uIk57IE8KpWweVxK4nlSstY8LeXQvFsF1WSVL0yPbxHtY0fp6D7dIjoASdEty3321zcPasZ8XHJO5doQwUG2chA92Crmp3nnYDHQA93BfZ3apyaW8z6sZNN8yGe60i0sBGrzvj3V6aRQWj2wsrFhVsyeaNje7EOpQUef4ba6E9jl0FaLws9tq697xOar9rRi/tkH/+yLERU0NylVmjqoBA8OADIC1biT/XjkJSV2nus00HNXK3rubqBn69Es5NI9bmnUivbi577GiBUTYq+c3Rix45Y4yra2/rqtrVG9LaD2mubCGc39altz2m1Or20umtHc5A9bmtvjNrdnbXPxjOY+3cYR9rnNne6saU/MNwUr6BDkHOFnqkP+yTFBKb4lOjWq7ay190d+95Vre7/J7f1Ms3fELOFAzi6Vd7Hh6k5WeN7BlpzbzUdyCuc503+7JzcPkZ891DxVg+vxkUF8HI0LC/06I7+eLzzOkINlcv8apcqIkqH5C8wfu9WYl852IJmTYcreCU+iZAgueP4OZnhHRKS8i3ndnczo7hAPuSaL0/jWZ2Y3ALMb6gExuxE+T3v5HPRBJAIV8/mC+bFILGpBL54qtsAOswiZbSut5YKVjvQWdvXaBkhvzbfpRZFPFxr8ZuGN+aLlN4vZ2Mu3ZTpjU9+S7iwX2zHEBfbio2JRP21xzOB88/eyXni61fmY17Si5rWSx0mtBR3XfyzoJb1oeBncRxdRsqJTHsVVmn5Pqco285yfXsUvTs1c9QDnulXDTtG9XsDvO6caI5+YMfhmXnqxHKBVl/FBf8HAZ5Ft1nqO9l0IxnUvsXndnwICekSP9VCbzX0o+8uoXnNBR1OskqkyZ7Ygbb7QNhNQg8uyeLy/tFuht9rF2GoGrXuyFnqrTBy8H+uow0kRMmJskVCoLcb4bt7B3BYbzjXmzIseqb70qY3/dWVJH79Ah9at/EXU3k+TpRT4VyIEea7ojkiil9VgXDX4/KpBs0e9xSc/tqhFimJquYTsHsTcikjcr5/jXAgPJgZROxo/+pGj7XtPZPeepEoJV7HPpijQMC9zZrs8YVNp5cPNLhgB/0iwrCwN8fJCTIFlkNgb8EdcY8R22byeLs3eHnlhCbELmdXMQgV3lg/z1829HEVAHfPr/EnY1dHNNXXDFTS4eFa6/UPrppZBvA/7AOD4B6EyXNbRjvGRRFR9AAJqjb9ytHIUSuCQ1nrc+RpIzPQIzeHB+LUfxut49+4fxrs6YF9P6Scc/8aPmGJ8+fDf34Oa1487tCLB3FEen9kjAglGqG/W4w8+etRR/XKLZWiCsh7wBrg0RXRMN5t7DBisWjXOf/yHV9vWYtsa6aZj82viLdsmlVFO/AOmbm6HR9XjnuEL4z3CFEzBebXMxaMfuBdF/INUPkU0eh2XAUnRF249/VucP6DWpWQ6H/0oRlN0SJNqRtWsb9wusPvTZhrzVSot1SJsq6j9h2/j1m+nxj9CjbN61XknospvfDW2dvj7R9TyudZaf/QhHsBNUutMa62f/RvueJ/UOt1a62VvP0K19kitPW2V3ve7XElLJe1WCqjSbz7MYx/pgCqNykqElpmQT/apJ4aKIplCG7V4Iqr4ztgrk/EnRTD+VXWAVC2BqCX1XftWN3Skr2iO/cICDHJPEfF1iAAHMsaUmPwvf48FGWdjPomN7nspDZmfmpfe9QnChnis3Br0HbyMW0+v9R+E0cd8TkIN1vHrF2il/fEkrKC1thUf9HEsNJ/HouXxonnvtT8NUkSBee+eu7kWwcNgHCpeCLni2/70bq54pKq4/8DPvuP+T3zwv12fh3w07NoSgAWnxqJ3X9GvirGV1epIWFZfZ6vFoAHmQSM4hzlsJpV27ZvmmWzr3dk9hFUP4WZ7CG0Pkh8uu6/IzGZehNp8GN2Y3fnygf1KI1njDNc1HUvhf97Xeh50hwC0OZlT7G423f/fF3/mmX/+3+65YUqt99a03nNb33iC5Mo6oCQ+emDbN68+XV0IIMiHJT+Px7/xl1CsFBGQIFgeverHBDkGVn1NCVQGK/dVEDeOpsacco5sFOGyxrvnqnfHGeyr47d/oo0G6Lt5+sdMIR2LxOc/TiUjpz4e/MjshkAqYic4duK04d1nzZCqcAAUnAl0Ytr44b8TujljhvmKGpdJGw08ZBt4/2kUnA40Ak9+khooEpzBZjbxIL1xqtnECTSRAFYbvHm8OfpJ+ebEvhmP30RMYDy/BlJvZUjNtYP8Dz66BuR/31a/QjXJ68i7D5ONC6x7A84xcizQseBTIqAuUjCbxnxj8/7vvxH/vYfePyrvHwkoY+zrLlQwPtLy5k/Tqz9MkHpE8ZsXFNI7A3VV8wUXtOflhXMKXQFf7QsskZUs4ciN+9gt1rLrGlxjB6iGkzeAGq0L1H23GKCCPpqA5cGdVU3sVe2APdOcLb//kH3/1JsJeVUTsKfb3zxl3/xlxtkSsCfaXziuGkg+KQE7mQXYzv4ZgC1SC9qWBTxyP+Ga6RD708deijeGZn9Dh9F4woLVCOhme6adb/QAScBxk1Wc+2lCPjQYnyr3gdNTq8uvKGBicFPRxvtZ7iYGbjYgMqd97u9a/4Kv51D5byp4X/DLfZo3WRnTHL863xjTeV+bFupjuv8+/O/XyjHteSnGdM7X8zoGEvstQ0E31/pnMJQEuFIfwZnZI5j8LPG/5giEKP539Hu67Pd0a79n0O+Jst8T9X5PzO73dcz61ut3UvY78dciIxqHnO0L/h2z/aZNKmxHraPo22DUETQxwgo3urGo89C7iPt4DTq94BGSCIXGWAOv2QT7nZrUPlz3r/8WdbGGkPNbO3sNdXbWazIFNBAD3i19dIw91IiLp7mT7y07OT2zkzO/SntWs5MTZScn2js5BpmUO5mWnUxmdvI66uTeZifHyk6OtXQCUdOQH/fxtrKPI96spTn7P9HknY0ubpceLnTWYg4EVygmwUbOVMtRVYRo+xWdHkQsPrU0ON7NFoYn8dscnCqhaoWsT1ijRr8RKVt7coKKhVVov3aQKoXf/7qPpK5VxOloK4KyROk4/VXd8rmieR7gICwWAl5xwdmvqmZq4q7pU/en1YY1gQBvIPQXnW/oexZ4Rv5bMh/la/P7HK45au5brKlvLgFawVqTPNzeUqe2g2nf7iyqvrMksrNA82kX4RcZGqN2cWj1E5uUQHFKEvdX1gMHFNPSQLQ9AIYLOgx/L0mPry1BsKcEAYccpVrZM+hUJ8aTtFsTv8aJOChGNAgTwEjd65hMUpmllS4pEp+uNEC6dhC7dcJAYTEWA9FWnkQkf2y6UKKWkqq/yJiSNM6wYAlReez+rOfVkwR5XGyPyr5FTjV+B2/2wbiLgEdpkkHxTu6r+WBtVXxH4t6G1OWLbwi+7IHCKMC969Sf9qiSffeffu1VzrsdPAjIKy4QDdpVdQ2T72iYMu2VSjtTJ0spIZXpkb918O21gWLbQ6mH6DdyG4//5AM1RZdiBAs0+6wxWQXwIWNOUU8HOnrL6xi+qFmE9ZMirelYj4/1RWdVCV1IOkUIFBTcV+FxCmzK+WQ4lLgPkdtqQO3k3ngxTzkNpY6/XlrXgal8yDykSJf0QF85xd3xb5OdlF8bd55LHviKHTLVMoIPtPHXqN984sPZnMMPoEexpvl3vA4Q0j5PGEG6h928uzC/Gd3Gn0FDyUpcirScWlFzw/yk5Djiv7jojhfhFebpLs1DRvAXb4fiCQGPL8LQTTf2Aoccnyn+DuygG/P5ggd7VzuIpF8SyR7PP9yaj+zcn72iNX/cW5SlqolfkhWbUEcNRbCkDq8CWa/jj32cQOYDU9X3KqC+9+xLCfMN7r+DVLe2Ctogl0frgspUfO55hW8MwMAActd2vcj2y0xe8c+tXjaZ6RrfQP1vuR/aPrh5viMhTd5bqeBa/xTc6E1jprzvbb5bf/xTn7KdMvGPf/0jd5sBrN79siMMDALFd+5wvHxRsz7A0+AsPKon/098x5Ce/Kv4ZiCC6RlxKqmmMn6bjPvdCSGhXy6zT/8PwBU+UnMhOWYWMK4WMHZXDxaU3ezt9b6OIUA2meLDdBqMe7kPcsJPcq8yH+M7gI1Fyjnfk2+kjxTYyV6NfEMEKe7lgk7GhFMJowjwPNK+zB/976mKRx8jdzzwsa/1ngWL09d6B2BpJaTZZR2SzKTKWR/0fDtTB1UbM/XKnkYXfoaakaU2cCx84hTQ3gPcYrihuD7bk+5kDylfmbwOte78qju/0Z3PgBW2h2/M+yQ4jHPiIRmrhOhhNPih4UPJj2Md3dr35Dn07OAiWZlYP6aMGmVGSQCLPV4j+LOaX/fjfYh4RlcWGymzJNU7YJEnk7OR3NiCbux6GT/+Ku9ZhSLddOQIeGOVB/Xw3b5vJJ2xXy/aYX7al77V8CjJiD32n9nSgJfBYlPvZgeZSLwbd0iqCIMC5nUmP8uYT/0d77xEhpaKtMcULAugfYtXo48zVvk1rNlmyqXByY+8i8gJrC779532AO2aN/A7D0PWshHWdwdhQM5MCsl42YZPO+ledmjawwb+feLdijgT+IV3yEAfszN8Xlnu2N6v8/TJNBGdjl7/Q+Bf6Y2S1X+j28hYHfx1zTChyvCZkCFBMHMJcHS9n+LyEVDnYBGJgTqu1SpbNouzmve0X8ue2x9T2iXDcXCoMVbHiNqXzJISUSZzM1ghUczL1cASHUCU6JN/Y2I9n6ejC3hlOi187Vu98CqCw4AuEqexk9sqBjo0Zvyh2YLBwEonzoHyO57KNJ6yQ3lI380PicbGjm8k/kwUR6WFf6hDEe/BHyFTewhi2sNEhyjtS8CbP1FhIC7H6jLxhvOOC8YkgjHJMy0OsK25wrG0DQeKrqwvAdIUdtfDCtQv8aKI629qLm9FlsxBlt5mkCVxkGUXLzDPIGVk6enM/KWbQpY0D+xSC9JoQRqfkKZP55hOiU0apfjdJxwQjBD8WA8j/u9OS/gSYwSO6oIIDfzY28QX9hjiMEb4JvFXoM+7wjBCUgqDQmkdfZCmgbEoYCwK2asyYtNZXEOmRJAptcgEfHNvD2kxJbk3gQCCjHJ5n5ZIfgwqdLPMZ7g+70nLR3AUO1gkwnvSWbxn5KDTHK7mmebz5o0EWJXCdGGwKqljVcJY1W9lQUNy/2xFODBW8AEg3Jwemb9hG8LxCPRQ7kskBK0wEFYswsKM7+vo1lnWAna/SeHr7kTH0xUdreh57ZvmLAJPVovFabFFx5MinhZbdTQptkGT7/6ne4M46ni+CsI404sGS0OWEii8PZ6abwo+Rj66MT8QKyF9jE5PTaFemJBMoY2/l6lg6SUi1ijBuEIIW/U2U1tjUHks9BCxIBKzIKLYIbhryIKJZC8TyZ4akexpJZKb+eOAQxStRDM+Z4nkTI1I7g3jiHMzkw9eaAmFiEExwgdML6GEbDG9bEgoB9gZb7ege0bELj96latyv3JVHrTx3GGNc2p4fDV48HA96sD7JX0Uab0lzeX1xqToCtNR5hDLbiGWAZmRnUdXy6M+kVidjgbr0NGA6ajfoKO+7hMd9WvcHIOuEeymqMk3rn5CTYugJiB4yQ+0X98FYvYIBJJrVLWyAZODxfxbCPPZTZ4JoCse8UwAoSEAg5l3zBYYSGm88b5w1KtQ/oj9+oglhNOdugcRyOFsFPbvCkjkiBxSMKlrGfkDRn7xs4gYz2Mmk4TJJOVtpYuPox7wHokg8x4+78w5wiYf1KhnKNQzqsssOp9j/DCrPCdUM1d3+aztJIu2fAvcK/X8jX3rybcFGLLIjXE57zoLGwi6o/JRiydmG5FsdYhkG4gT1DHSI3LPHNapY8jUMde2y9gB86Oq0Rr2FmVXT9/3YK3bF+zgWS3oFPSzUD6o4phGper6yN59q2bBFvKUDwRbdBfIFVv0ZwF4Gxi43tJGgnG9duGvFjhMRtMinOYBp3xXekvetQSIVKo9BHiZv4GOapsbrtwxIMRz8zHVgR7QZ6j7+JxMJoZEE61q1LmqB0YY8yfFQPfNl6VJ0dc982X7pOjpzHy5alJQQK2vBxODbkuGJRjk2657E4OKV+lskmeV+A4SHQqJZhTH7ekeTDscVQR/8YEJLmKSpQS0oOPmiTpmOk6YjlPeyLq8kf2gb9QQ7XuZG0i6V3YoKbpwg5XsGkWnG0WGtJFNhmJC7vVwpO6Qdga/l5AwBkqawvgJCjOAB539ekq+Sp4XBgZKJn6Dt5yC1ve4z9UhHXC7ZUNHbZu6+nZLs3Fwm+/rhcVdIXGbpMZtxvf6HNAC5Qp/DcDO+GsIHubR1whXn/DXGFs8f00gEvPXFIDjr10AjL9mUNby1x5mwl/7UJXx1wE65q9DdMxfR+Cj/HUOHTOtziNRBH9dwBj46yIWUYgZY+CvWzEG/roNXPCUny/h84Sfb8fnxM+vwudxP99BTNPPd+LzvJc/AZ9nvPyJ9J6XPwmf93q5ZqaaM1cumAE/ucZbdwlvfYrLW79MeOu/018mPHS35aFPrfPWL7flTzOotVv/uzpvfRq4zZev5a1P3YC3PqXirbv0Uw4Wu4S3PmUWb73a4a1fYaruAm99in6K3mV46646b91leKtM7yklj8m/jMb+FIfTYvj6y/D5lZhFm1jPE3maXqqLF7nSX6GvNn9Pa2OLT7IDLbr6SS6LDHSXjGHBdKX4qtUiNdyyHoMtT1PzdM9q8UTzpfYUCbSeOC126idp3/w90VS6arXIpwZZcvOrVvMJqLKab6+K9FcZG639tWc1H9hfV63m2v4ijc3TDGIGhpK6MOEZIkgN9j8xn4MdYV73psUesOi+3qO7OAwYNjzVO7UG09bZVC+akq/ST5rqwnz5f4GLfxVYeH6Vc27891Wf31KDLcvFeDz6PSi4V/VX6n8/5e/T/CuxJfGLwAzzonksb3Als5Z2w5k37H6LXjD/boXjhRmZ+bpNp2Y8ujBfn6yfqM34vlI/VV81XTH/7nA2mCdM9VdNJqbqipnPpChw9PFRsMg7zyKSY+9BwYIp+MpJsTDV8+bbnkkxj53nqwwA8kL7BiD5oullAVEie/T8JJ8vd55d2Hl2yc6zwzgt+bzH3OvzJnPM513mKD53mh3J5+3mEY/3mwv4fMLTDYvgjeecxzvPWXw+8emGZfAW9JDHO9tpfD7JeFPJDndCdrjjHm9xE3xq0z8+h6Z/fI5kR5yTHTHnHXGed8QF3hEXeUcseEfcwjviVt4Rt/GO+GTeEZdM95jGdtM9Pq+C+wy2SG/dw95e/rilsRvd3PgtipM7me1aUZe/MrduisWusHzMs+fD98Zhn7eohu7WhPIrEXADEXBD5sURC7gxi80Ji80pM+gui80Zi809Fpv7zLUvSSJesNx5sc61t9jyrZAHXYl4awaJby3XXsyqY+k2h1aXGjqepTfm81bHM3+FBentDrNf2lCQFqiMKmY/R1MeOcwes9Zz+PTt5E2Nysu6Ll0vVmzgx/ViVcO4XC/aXAxbdQYZe0lvN39b23aCVKd15WKiFyFkez0/w7dv7uOzanx1/wdXb/9fux/87A3WHXqCVHzx/TrBThJP6s0V2WoeWK6ZgDclU92tH1/zsIrU06Y6bnsnFj1YoRaN6DyBlI4Ql3ks0TYdCROli6ZZbi55aQx9O4T3FXq1Py0iHUNij2sGGnA9bHF9VNCKXoBQTnL/xEjmU2xyjtStFw1VbM0zqyolnhMIzwmF50TMc2LmOQnznJR5Tpd5TsY8p8c8p888Z2B4zhcob3n355W3PM5bHuctDv8Aj0mmtqi7UucgNzjMp0t2tft1l1LWwYzsNzjLCljLNPctb/FL3uKv4S0+OInfwkkSZE4g/tEn9VvFVnwo7MBZfGgMPp+cpZat4/R9lK3Dc7N1HLDK6jYec1Pj9wGXjVyQr6anY3EUcqS4+UvXpi1kGleg8UArovFQK6LxqCLPmBBZrka1zjkppSEi1gGmiABcNv1DNwkfKTPNlFK9SQynOHh4ZfR0hqD3rCrqIJ4+K9u/rtb+TdL+84EVxMZ6vbKnmzbZ0/OdnoqeWbOqr33UUy0+uNuID+7+NIfN0U1Zahx/fZ5ymH3GzLXLXBUurRHqm5o6suyE3tGp8aqSW0E0Zdg8WATCekI3E0igo4PI6KEDw16UYMoFwhSdjn1c2qwzdGC+RTaTUbdknCWfLLknb2L8uR+fUKlon0Ax9xOOz9U1ZOl24+dJv4GPJB8C7tJ6PqwY9YgrGb07pySBtYpe0KOVYkEPOLmIMTTpeRi5Voq56QTEPMJOgCPW3HRlYixllGxo+MBKMWQP2oEemB+GasqQsUFroJibtgqIogmyNHCJoRsa033jzWHzzUgnhMbV23rACU3kAjhJCBVXzBWEDBi+hmC4iuwpeVd4R5cyC+XKCYhW2bWmNbowqVNmXOlMiuq7J77Bge6UyV18FGVf2/oa1ylC+2JVQQfT8t2ne95dZXsI1a6qqKlO4GNb6zgx7+mq1+vQK7+J2pjuRPpU9h3bI0Y4KV++sfFyyK/z8GsbQ9jaUlg2M16vmfKNouO047awn+f/GTt/mUNHo0UAITHVV5w5ESTMhMpG/g80Yl9NtKp1jr7qc3JGYstNH+gLu9xK2e5rAk7F3573t9onXvuxZh5hCDhrcjCB/X/4/a0OmOSJ1pqfHdmcweGdMrhxtTb/kYfXab454LGmvGXN9JrNtFF/icrc5sx8UdzDegBx7/reMNcukNXcnpFYmLS/5IahKrqYeUkDGGFLgm0MH8+UaVAeS5ayQ416I6SbcLhDJ7sF2aPXXfUCvmszbtr405e+ov2mDXa93GUEgr/wAo8uF/YOyyVcJtH3RQIOlQl4/1nkaEgbdkScqC6kEf3Dh50Rhc41jCES3G3UwiN/MasFepH930Obcx6npB/zlU+T5ERDo/t+1rzydRcPNMBHAT5BHT4tLthuYizKrO8DOo2EruxW/DqeUdOt2MJhzBeP+QSe9iYe3kQT9IvT2/gWPgY8v3UFcMBiQP0iznsEqGZBfu8XGmCVzHZ24We8+Nm3znixttQ0tWo+L/8CW263w0/+QmuHdonbX/vRX5zxml3RBhj+6XOxrD/0lktc1t/7xY2XNQ/LGWEJ8F0383QHlKZzwu6ZAU/8FX418QYGjA8PsysHC1kgYUwn39J6z6aFRPtrF36x+doVg8PfEQJUORB35f5F3QIJPBZ2bK9gYk4S5CGe0qxwPjnI4AFQdfhmC6HAWfRg/IezsMVl27WrmSPqp3PAeoaqiYyiKpjydP+gXHbViu9Lm5YB/lMebYQYzk0nVDkCBHVs0MPLGigfC8r/ytuc2cc1WgGO8CxjAHVmE6/7pZlNQNj/RkC+9cVHT7W/WIc8ys0p1MkwbeD6f21CBpnBtF7zsg0FkL8pVy2wq7Z0kZTJZ++IlRcxOdPVJJIIPmb2QN0AUCIAequ7CydNRrbphk48PKMhHZM+xRTpEHcY5SFgPyL9VkzJQr2vk1482wvlNzEcQFSYdCbtWLfVTr1mRC8WMbyOzT+J9rCYNmXZq1TAG2NoQ7XKXW5p413OEXwZ5uLAmADmaZlgWkcEd3/8BwRTNzQg1AmBwdcJqZUSGUkXNEThdLo7fv/D9kUlV2bwZS2xuwa4Szc6lFMsDD02v33jTSjQ8R09Sg7Qpjo5WJDex+hSPB2jNVKgKAB2GT8oB5pZC99UDukK4/r1vJLgDFGFEgYXu+7Dgg8p4UNSIULKiCC3NJ4u0d6vo/0V3pxf/9ZL3JxPztyc65TmCT4Di/lCaJ8xm9HVszgdNnC6ROZQ+0Bmvw2ZQ0ZmuU1E+01k/oASCIaPAQSjdghGG0IwaoWgfdGlG7aiJGxFwbsAYscAMU8Jqu6O7WrhdEqQ9kodo9fQMZYU40F3IUmGm8Tj0RtFCNOc+cc04MAYBFi1g1Y4TWAyxq+IyQjJiUMdi/YR44p0ymTkKdJuUq3qLjFQktxvJpp23FongS8J1B98yxfDifPK54rll4ChFnKQSshBKlgJwrSkTLWctAQb+bMjjeogbrk5quWsG1KD6KbArSHaA44mNdAx2AKDkHBiHD/JhN8u6+53Fd03z0a1d85Cteq+Ak8mQ1PhK/67hzjxyygPMAT8ga1ZccLDqnnlaCNKY68judRexw1+F+qIPClpoWzie2F5ovW0nO+iWvfqrU830bqh8Y+1iHRLn2ORDshthLIbdxTrCncfuXzh7pcuVbj7sVl9C2uWrPgecWcr5+E6HBRYUa8WsXjs/jJi8YEge5Pv5aKQzIOxzkMyV5jVilhTBRZ9LQnjHkL6Iwh3I4jmuDovIoY3fgnub8T++f+n66r66/iNaBT41cmN6w0b4zOGoJnZ3sC1w8zMiYIbY5iZOSkzM7+U8an9Cn3tF8hzz0gyFP6J7f2tNKSj0ZwLu1pxd5WnJRUbcbdVJZIZXjpkanIzWuEH/eWkyqw4WyJkIeqTaZiGqF+mx5UyA9NlJmbILMzErLTMph13iXEi2cjWzym9jRw9RJKrh6mShxzkIi/6+j0dRD6Dy28Yn8859/EVeJ25XqfQ6wAFmItCIHritIRaQi2nky9FMaSYTcVWSlASkCjKSv1sivlghuHSS0a1jPFliUzAhCA1QfH6lW5mz7+E9GfGLZ1JVjHNjb/38W9UDZuLSIZbSzI5/pZrnsLTKdbDp4qZVMy0hEyveNYXRFOj7/1Q9bLYkcW9itQN/0oUXxOCqF/PK4aYkZaZsfEwJmFj5tnuXbLMoeoc3i5uCFDQzg7uc0JUuYQzxxLXPN2WIj+GFFCpwBLDuVJImgCyke/Q+44LR9it6GGCB+8awSsicsVSihKUpmVebPRiUsxPZAFDWeBDWUi1hWNCaZJFfPzQBFmMRVicSBnXrJFylEkFyqUSFahMSxUtVaMK1YnU0FINV85tF3Rt3CB1qEUdE5u262m7foxtotmAhrCHUyONNKERTVaaKdfMBA8QtAQIWtGKFittaFMI2uPf/esuWztCbyc60WGlC+3oiu7c0qaYsCxBLEuxRJZhKZZ1y3J6SWM50ol000u3e6ySpmIPZVdghej9yT2EIsS3Cqt0ZazmyliD1VjTJ2uxFmv6ZR3l12OdbMB62YgN2Ngtm7BJVqawUjbTyRZsxpZEttLJVvfQJk37bd7Xdjf32+kljHBHGMNO7MQOK7uwS0e4G7sDNnv8y/K92IO9VvZhn+z334cewAHZn8J+OYhtOGjlEA5Fv3Iqh+n4sNYDak6VI5Q9iiNyDEflOI7heFpOMEiLE7CJnGQ0J5ePzNqpuEpO4xRO+1k7Q0tnwqx5a2dZFc7hLM5xQwDfktDYeSQ4b6U3INeHXvRFX3O7ffrw++mmn268ykCQG8RgGOUQjVzAEC5YuYgBXLRyiY4u4xIu01HKY3eFRq6MGLnqLV/DVZDHrptg84bBDROs3jRg+01j5Zahg9sGtwxu8/SOCejfNQH+ewb8ucu++wb3jc7BA4M7Bg9MGEiq2D02QR4aPHT9j+gSj1iGM3xAj7UDj41C9yNn/cmw9acG/HlC688Mnjnt54ajeW7CcDLkhcELE/1GxVNB/eWw+isD/ryk+msdxxuD1wZvnKNx8lbDeGt0lhQnHuSdK4XvteM9lT4YfDChHL4zWakvTjIrh4vmJE44X+DxNaaQfIPQp7RmLuCBVkt4IMeAB3JMPg8TlX90owktl9H3XcWZzPbJXFDaPlOmMKwUpijniLv3Oy2fjo1uY4+sRCK3BKLRpJvGGFgpMd0n3QzamtEwvow55805qyUyK45kNvtmW5mDOZKtxRTZ0WcdYeSwI4c5r6JTJZdm8pAr+ciTAuSjIC1zGUChckwioHv4kidUk1FfkRShKCRPMbuKObnanq+0o7NWqmcZo/XTygKUykIskEVYiEUrZDF7yrAYZYmU00053ahKtlTwrGJkyJXxn8ZJFSpR5cdcTWfVGsd4FwekBjXqr9b7q6PVetSh3koDalk3/+jrJrUaubGHCk2UJqLejCZpQbOwWqI1LW3Ua0cb2hPpoP+OUcw7iXkXOtHl/ce0FHv/3tgSH8ZSsIBSxIexjOaWYxmWW0l7WLrRjTT7Q9Q96NGoV3gsV2IFVobV4+dlFd2sohsnXiarGcQaNq2xWlpD8q3OSv0zw9wdQ+v4BFbP9pWVWydrnZ4UZ/tM7hN3A3q/ZMSVw6+CNB2RSpPGjc/IJFyeoE+H8WYCh+sLFd8QIaJdZme2z84+ZibJvF9mOs2ZI5qzAh3NDsuV2alJmq3pGegoBzkj4rnx33U3N8kL4vlgmlrmaS4KgjiJPdMMF5xCFCqoYHwYG59ANL4ixkd6R3GfJimK+6U0rpB5KNUMFd4BggVpWRgbn6GJuy9k8UgwZSgrH0dWpxGyOir6pBKk9n4Se6USOxOxmllYg9r0aBYmyt0jJhrj8f/N3sOht6BFQyd7h0XVRoE2T7zUbEd7aO9gewe50st3+nrfBWaolZj5SSrHEqvpWMYhL2NsLg+7JU3FtOc6anR7TuhBN3qsrHB12aehlVWMfjVWYbWVNVRaE+p2hqyNf+XK7bowH+tBcrdk9w0ay0asJbtvlM3YhM2rZAutbMUWbE1kG4HcpmXkZ059e1DfgR3YbpXPVX2X97Ebu8jofwyMvhN7uGa8wN54HFl9r+wnsx/AfhxIy0H6OISDOJTIYfo4TB8UOsKgj+j8j095m0dD3MeC4+MgvVs5QWI/qksyxGVD90mchLVyCqfU7ekwQ2dwRk/P4jTOjjI2UTtHz+dGR5cEK+dBrlem71W1Pg97P/rQb2Ug/odL7MEgO4QhDFry+gAuBNvDQV0MIpdwScn+Mi6ruSve3FVcwVUr13wgZPBrpHFLZvdZc1MZnqweTHrVW+wkuxMfh04+yT6G3NHWO9S9q9weasdtUmDqTx97zLhiPr3qY8+/2fvb9rhxI28U5//l5iv83/Akq52ZRN22JGcy0cZzryzbM9710215Jtn4zOkLTYLdmCYJDkG2JN+5z2c/9asCwGY/yHJyritvjuxGFaoKIAjiGYXCZFLYtlLd4/+lSnV93MNx2VK1xz27RWlVd5zbfl7qY7e0bXdc2npxfPpobrrjtW3nxv3vJI1/zbo4vjHHy2517HJ3rNbt8bVa6xvynVJkKjvOVHF8vdbHdrE4rprsdHXcFl8/IlQv/nfyt78lH//Jf8li3pN7kZk8/U9F2LPT01MCtu8+Juu5aj4mrXa2/pgY+pW21QQu3l+pPBek1QrYCn8fk6JYMX5FoNYL1Zm1Tp1eOMNkdg25Bs6VOBTqYzL/pdUfE0X8Dz99TKZwrq74AS9ev3/27u27ZxdPz9Oi1b/0us5u06p3XTrX6YKe3+k27ZaqTk8fpqrO01I7Fwj0l35Pb1V98zGpHtGDP/w0Rfxw3co0Kd7v48fb5HppsmVK37wv87S2HLmumu42WbTK1GfnqanXqqRsYn+a69oZ4pq6MDWQWl/PMtWojDzpt+n8evJt8CbwXNs2d+mfHo85l7avu/Y2qXSnctWpybdwp1LUZpmtKl1307Wuc9vOXNeaejEtdb3olunjxzQZ+9vfyKHW9XPCa37iZEIlX+fp9p/TXdpqVU46U+mUZfqSgqVNa2yLl+M8ttmKHlrZIabHr/fEFAN1Nn29E5K4dVfW5+lFSWTV4TGelcUPoYSn4+M6emX/1zsk0bZ66touLWybOtt2Ohdi2qpuGQqHSjv6nrZVFEV6cnSUpvN+kZo6fXnx6llKhcrmeHxp5iyS4yvPKHl2purMlCWI68w2t0mn5qU2A8oYavts3heFbmdMoMzOCHDtuU2ubqtmCWTZdoVWbXmbvKizss+1S2vtkOTO2jTXuiHWS2sbl6pW7+FRVs9v3VKvG0s+d1t36mZCxGw1sTVRjIBcU0pa5IT5qDlnvnv22qUnx+kp/T+j3zcpER/9MWXx1W2iqGqSC8eYlaE/SjYcxQg9WZXZTNe6XdCXy5eqLKjU284QKCitVIhNboigbb0in9O100CatVvoOkdhr3SOMGmpF6pM58rpoU5LaVBtqzhI0dqKPcjCpWq0eJ6/vLiczaQozLhokGsWtc5nKLWzT0r1tRPk05KUnK8ffVru/mJnp7P4fqfAuAR5zFc1vZqO/cFL2eQ61enz9M+trRf8YW2R2r5r+i718VrXuaw1TZcb15REUS4zJnhMKRlvmjZH0S+K2/QQL9BdAYB0MlznGqASsNaZIEYpco+qB0f5g6PbhL/3jQgTXN3cJAX9ntCv066buvUNupibpDnjss19LZ6q63XZ3CQUrlME1/ZGatBNYuhXWnqbkqCu+X2nqxuqZ+YmqWxeqa4ljHK2ItC1cLNlDSAVNmKViOWMuMKUhlLUtLowGzETzl15sqTfVaPJvahrmxPkZtQjHmsEaLuefDs3Xas6PWMSGvysWEy+Xc/bWaVuZiNuzHSKCa2lEENH06SF0WUuVKSYcmzohiLV1NvEbKlqs02cTHbaCmmlO9ukqkAnyhw0grYllNKkUlWHtlRCUwdK2VTpn9IGCVbtwqH7aSpilaamt3Ozm1O89XLyLRFG9JMx3WlFz/mutHNVXnW6QYF+RfT06OEppfd3lLiHf3lI2MO//O7hXwifPLz53cOblEhSTKY3yW9+w59rRonZ8C3YJ0LtlFOg64gQ5HJ5HcrndShv18hPClZ0jAGETKQSpo/D+GCu0/Y4vT5O22tfuBaNx4BQYlp7nSwErBtyMEaY3bRAf+lV3dGripfSDFffmK4meNUp6h6BFbYsAVSnylS3rW3TCX0KVde6TU2NOi/dTWrXui1YttQ3UaTp3XIyR2yR/4pSUfXV0ORy3QOnW+rUNTozhdF5Sm/c69S4yH7745vLtGtV7RrrdCRfmzoHWMzJ/biin6F842wgpKbaV7rZ0mcMg+uERysEPyqSsGmlnVMLyk7y9iU5Ck7VTwAu2O1Txtn9YfISOLvI1zWPKg05P9v1mr6ngVv1ZUdA3zTEt+vE0K+jvrteJ0XHoDRrzchrmyJ10kPmIlJ0hkCeMchQLgFtNQd8rkxJWZT3LSpK5mxf5y9q0z0jnlIrcoxZJwtXzSgt9HHhNiXGqJqSpPKcXNfP19IOUhPDDXtyVNJvueyFrPrkS6otf0tvTr9K/0TLRX2SplQ02i49T49+D9/zVlECbR0Jz+pccMlu3/qkZ6d9QvWpP49OSg4CvL9tNELAQ3+X9MlfPBUC2lzddb4pSBvVqkrTK6BEnKeupdX3o+kfFsfpagN1VePg6xOS7067my6pNTmSR081Dbdewz+FwwX48WPpvJLJX9P4lxseswXORPzCOyxVmspQAj88rvvqpyhlZIiVZqVpGlPzcE/1ubEhoHxNDE5RQY0qjdM8+k0x+h3LYkokbSkN7w0aKzVNXwe25PqqO/ciHXKXnm9rZ1yn6y69piSPhO8nWvS1fGgpp2jba12mGSYOaW6140FypbosBkl/+9vfEjXNVFlyC4DCbRtdIwtevXj6IgiiAflg5j9hLiEkqZ+5zmyu28m3TWvW6K0m35r6nvkF1v0SIXL0XVbGLc/T56akL4iZzNLmKZoo09LbqQn6y/TL2tKzvvKBbiw5bmmKDoh0jQklAQCjUMACDjec5ylaBNOUGhMGl9oidV0OtrSjmaplxhfIXGKBeE6rkfA0k6nGBiPj6ecm44faqUIjh5YKc19F2VI4s0iVQ+lDfyoPRj4Dm6u2K3VHUWJmhOn0ecooJcaUZdr2NbLsmDNSOLYo0sK0DgWfXog6dtfpauKGWsJD6VToqK94bO8/1fClfpXu/wtjyi/1dEFLhTZX2Vf0RsigXBem1rl/vKvza9U2hL0k6hPpjt747iadpC84e5+qTlFuOAqvabplSVzVvguLpTuWZH1jnK8gyDD6xEXNZafoKtsW24IoI3cK/KpZUz6cU4pLvc0r5DHbUWJu0AG7EFAztXZdCYQH4ZWuxUedTCvkovHQCKN02hSMPkMh5LIiTWqD2pUOLJni7jLRIy8FyQE2WtLvdHfZty2l4g0HeAn+c7DTH56+SS/aRcqkrqUvoQnp6xWNKupUFsC4emnwxakahu3SLJbAlmt3cp4qSkbN6zd43bjmkmtpbfN0fpuepo01dedSirTUSsKeIaz7pccMln7qUFBEPw55+veFrNypO1BbXdslyD1LUGZnkgUzp/WKv//MgadRM4sw2AVl3cBtdWU7zegr4xx/I6keUnhsG2cwg4SpDwjI2g0e9JeLp1fvUOr0XvY+7tKUc01wjvZ6kbvJt3WjyL/IJ9+66dx+uHry6uIvM0c17+QnjLWFMQiVg1A5Eiq9EC22nZyezQr097Os6We2oeJvJyjl2jlj6wko/6qyTBP8zW9qyzWDMwktryBl40oCb2p9tRSYMqJyzCISrH6ezFymSo35EHdlSSOgtLbxleA8vcZEF5OMngugSPyvYWbT6karQH+/1FQWS+24qjtpf3ODNgmBwfKSCyvPRBMslNUFSsZfdWsvpX+9ZHJ4Dte7wtZoMbhpTTKqWB5j5jt677V+Ubuu5bQ+abVaNZYFek3fT+sOI+hsJSUaiYvFN7W19mMBCYK2RtUZ5YAeNx16rcFe1LaF94sj9wUFJJh94XnsbofbEZiZu0TQa1tduBQfHQSpStRB69Du4BkkVjRpJt6YV7WqZDRtYmYkr394+VJeTbfxc8bJb9V2lYufOdTSsKI5s/OfddbNZEnTr2jOKHLddjN47xvE6c+TV02j6zwGMQN66WFrbRd7g6SzTfCEAkWDgb5peEXyWSmMQkY5yN/CZAaki2rOkOeuJueYAXhgkwFSJUlzDflOpurk42lkgkFjB+Ti7eWrmZ9aKvSosxuaY2ezzs6o8s4qyGBiJOMjikwBv4RTl0hUSBlGo2h4MMNrlHNov9AtAEdZy0S67qs5SdtC6txxelQco2EEpVX1QkfZGPPK1DnJ5Qfl0N8Bkd7/ZtUlvN5jVp4SEYKNCp4zQn6D+TMmC3ptMu0+PDb13+ghMhPgzjRVa2VKyPtRqhfloZEPjZzZiWI7NIauO4FlHYYgtkxKQV0/5yrAHrQXjHxUK4atZjCHG9ct2OO/DTxbPRYW7m1zO5Ol6pmMlGdouA2+OJZAKVXErjGLcJsxUAm6bjFDEqLCarUQtqQwAB1JbRIad4t1kFJ8aMYFK9Fd8BK6lr5jCC9YN/9jQL4JyB8C8nVAfh+Qk4g9iqSInUVSxE4jacAiErGHkSQYlvNPBSlNBU7rmpKgdrSMt+T3/sD49azp2p+mnGGzzlRoL7+lZQzqgTvbzbeClMp1ewL8Ll3ojnOHArgvF0X2FfpxgrRm6KY+IvRdgOk3cGnqD4D9x/CNyiZDQ9T0FHOrncl7Vc6wWD77pWxmG+2Km/FbDUJnZ0MshbnR+W481ybXu3Lgd7bVM6yc75NCmu6WoRdJgR8dvWmROG6iztO3tu1aZbh1ddg2aamlYd/guYxYs8aUD98JUL4fYFvAMXBL7ekFi8/Lvh2G99e2XaWuNLzRc6u75Orp8/fpa+KYqpH2WfPad7c0Ls2U0yx1gbrJs8aKXtDvLKa5IXmMiGSjBvHHxj5GLpHUW08A92lPjiz7Jg07qMarFaYNW+MwWxSgYTkaUIYejLqCkfAZHGpvNfOz95mw1gpuaGGAz2lij1ot5YNJ77lpQzrhu1Rz1RIcLY5dlqo1NRJaKoBl1zXnDx6g6k9dMQUJIzp5qwXSuawB4nstODFwh2VaPwHCWEIGQNohBfxAlkkh4xrVneUUVWvzPus29pks+cxalUd5inKXZrYuSkPExpanrc4kt5wugfLShnT1SU6/79+9f44aoAjHtpzrFK/yrBqBBvDrRyi3KWsGJGenG565WaS6zo2qhTD+aDJHkJYbfUttpXVIR3+tuk69CIb5lapv4zjIgRO4pnZ9qNj7JcIEb5X3VROIP4xmfZgHrUxNc6wg7BSKZWCn6ZXuwuyG58sx+VJS48h7YKBUpns3kf988eMgpnqQ94ld/DBI2cXigNSb77578OObd09eXAXpZm0zmpdIOo+kgps6vXj1dvb83bP/OURq2kxVeyN98e7y4tUgiP5s/9NfvX323SCnTFEceJcXz5+LnBQkAYbAE624YmQA3BbM6GVnjVroGY9M99EXoI9617DD7BSLdtiufTIvruLcl+ckstwVGyhVprLzL1XKxSWRFxiPg+1XyXiYjgFxEKyt3wV09No7e4vy2n3DU0OoRTRLk7ljXmh6G4XTIYrvOMRnB8v3BMNa2EbahoSK3N3Sm3uin0wSC2+EXnx2iMm+tKUQDQGjcNiRisi1SxpLDraJ6atx04cSj7aqd8nl0rYEqKHm7eHENuS8gfO2NRUB2TFtlvS1R02IVHJ3YHXZpbkdlpX9dDyGKRtpynhjqTV5XPBwceHUjRvDXQol5pSp83kGgEVJoiFFnb4xQJ77iq1KdFa3qSf7JG6TeYXEydRYzzJnG/I9u+l0jfTFGTwegDqCiJh2WWrVDrN1J2OtlFHZcZEVIXweXsZWXTreLUPSj1O38lsMUO4wupWpNL6+1NWJyrKeV7KHr7/NkYFiXIUKUTA4D3WY59cG2YKVvZzVN7gf+LX59XH665wczEp+/cuvQ/jdniVspA/t+TCdk688yPJo6jyNkZh6zBZlhBh+h4+NDbxmp+8UimXzIHmh6w0WabP8/mxP+rfFdP2IVjJfxTUX5AmkRXgQtD1K+sbaTB1F59uy11uvLMvIO1m2mfqwn5EPUrEZnqtNalh+oOjTP4Xxyn61LhIBvifcvYPdayWk1djtGsIcHT2jihN8m+o55+n75eg7d7oaNyZTCLAsbwnQwE3LuJgaz3kvdavW1ynHSVH3ZYdlBwh2tlNlFJfl2U0tBxNWXMMqaouUIBkHwnxSPKi3xBD7JDrb2uawRKbL8m6uuiP6EgtdiwfYyyY4EpxuvRllp75T5rMnkHsCbEu800WpuQc5FDKoO4z5YWHHQUtibgTGyXHSO53PgKEKFH1ZDqyXVPe+p3pVKYyIhIb5WhT3WjboK+tdIoWZmbqwk295l3p2NpPPD6FXQai2nGpKck/u+BGY+IeYeSqVtdnJ16LlhUiYZKnqV/4VWPuTkbNTBl9CJGiA/vbslHT101NEy9y4sixTOzcoZtkMOdPkqtNXnSJ8ewhsZBTMj8GcBDKizAyfhMha6wCdIF3LEIq2guBDt5qQJyr305tJTf5p+r69Tf3a1CYj+c5Vs7etblqbcbiy14tWOQe9EMDxNPIJk6iANgrC1na36ROgT1sq+/8m+IZiSGZL27cg4am2Xyw5mzgulynEqlAFXSKDEmkHdNuClE5kCyXX6H/yaZoaakeW9GYEPi345ZH7ao80pgoTXrt8/OHhyaBtENLsUlunzA8B+pr7EnzatFGGKBi7XGIv9/ycC5km2qUqs76UxVtbzLqlnr18/3Y2aF8kIyUBh9HJMT4Fd/jEa3UFxiiANAVh0PTpuDZFXkjoTdJ7a9OCmmf6KLlrtFqBOOroJEjkNT1X71mY/2KA59RaY8rPxUK6C2GUVuV7GKKwiZdoN6pD0f6CZo/YumPlk+RfBdhSyTTpPOXVBdJNER0C6XZYITY3a5PLZiJGsaVqfDmKG46lahdBd5jIWG8vsQkuz6gDMpkw3FZ+DmNj7cVMqev0W+9BVR3lPpKIX4jaWHoBp7yPXhvb7DqNRBRAIFL+9hZAKc8hCmGIX3YVCE7hDGspGfmev3me1lrnjpe6QtY4rwO/jxW+hyiNycaPZQYqePH7WcDOgGGlrjgBlkUMtDkwfEge+DaWChq0zTCVlvrQ2dlLu5hdtFrN3oHkkhJ56ETPhHWZvpARfTqZLHXZfIG0YDghC/i22FjDtw0idYlIbqpMlBjZ9cirIBTmLZikY/dyOQtzJifHE56/OadgGaczNS5sbsyRFneePpx8gwVCpETG6vR2ziAVvCwlEf3xIRTSWRMdDTAr2UAJCDrqi9uU8tqRHA9vs4zSx5P5fI09wpwTWvldH5dgfVO3f/EaRh91a5GoWGvqlIYSttY1tHcoqG59OE7byeQpNyangLLsGRc1j9OF7dAUDiufsjQ6aEUigSdPZSC3VG4sjHLXaejSn4cRs5SnzobaNRo7zk2NlrM0K43FPfKomgvzUNImk8zlE+gCTCgczfcqR25Lv6hWfR60e7CgnKo0nErZHqRiuRLtHGEKO1oeL8NmxswTXHdKLnpc0W+M2zzne+dQbnxCxYfxm8x7eXsmHFi3DE+DrulyrsvSj6FQiEPxCIU4+HPdKUiMVodlIanl8hym+8lRPon428s3r3988/LHZ3veKAihdRmaRFNv8pJjqBnxrPvIBSqS6RVCDdrK3YZyd3aIbbrd8Ah9d/jtkKLzuW+uGEWwMMpt3CelTH16P5n9pWFXzW+QQ6EaIjo4I787EmkCx1GFyl9bSPCCvCLyjPYiZwtWv3bDMv15uufoTZBqu7yvKqpURVAE3JEJO5x3ysQ9jLvFdrSjoIgcuVjy+o5xGQoLHhZ4VlylnfbIgpHJf8VyE2alC5xowUPfPrv4L8qzvl5h9UwBvNMq5/T1LfapuVwTucJMiJU5UHPQqabiw+42a1eLH60VxkEOOx55burpB/FQmxF9/z+Zayc/CoCKLOXFStepQfiJH3JPGtUt43pexM6AYurUoXglW0UlrdRtOMzWLb02onIp1nFswaS4EhNHqbEsCXWnjN9d/hBme4FEiKWtyS3izjMfRwNpXJ9PHseRCx1SgobwxBYy3E4rR3qQjx5fq7ZGSB4HBc/mWCgMd2ydBvbmKCjSKrWQ4VDhkof5nFzOjh3dIQwZpbydS7c4kqCovMQt/VrKxHZ+8+8pLZDMXejphoWlI1kxRDcLfKFMLT3aRtCLslGfFzRU8dJOlkaIPDzBucnXf8UaE8KYkebFMXX3p7+PgxNp0iAYwj9hF2r5NE7uCFUDGo5ReW+u4K5Le93qA7mITwrlErejksBghqEKMa+W9rrra8KokAGEPSrMQZwo9MYOZnsGLMoxR3mQ3qet/9Kq/JXFySp3UJsf82uTidTWyjUNn7BCRhkpCXP7N1+xd8MLVrMgduT29BuBOdnYH+MM56QMbBe5oguI02TbMuUgg7q2T+RsEME69w6/iGxZMdjmfzPwv5kgfDxNh8nZtnS2LX1Y9vLp5OlFuq0qJzpxsv8dJ2ZopMpbnsHxOBpzuN9/883BqEqt8gnK/T8YjyTp/43EmDqsOd43mjCGLa3TrPV3nsJfcB6aOk5xoPjKlcHvGmS3GfA3ZW40z+JqKtAz7nZfDwsqawtlpjhf2lDtMl221PdbJOZTxbNKSQhZIrnenqCmREM7EJpiEfRrPCNhoY1l8ZYT2YxyyaCstf1m78NWhbxXsjZzcv+bfi53yWh9Lh7KBhWe3bZrKm1uo1tjif1Gvv/2PI8Pk9PjKeZ896tvbCtslwBbDGqgp2mIIO62NHwEcHOWMbAmnvfKthubDzKZaFLPrO3wPYmFhpNyZN427nbGB3or5VZyGnEWGWG1FzxTL4jRaAgT8o5WYOkFXVR1jmONTreVqVVn218dTf/4TWi4Z+ggvB5EOnFHfXpEvKPpoygg6mzgURf19RkxTx4+5DlWKWcxXSJDhVPxhoGdE2whmKnJOUf2Tfc/evd5ydHkt9PfDp3nu/ey8YYJ5fmvjtyvjoh51E+P+iOCDv+SVKpbzb0xVIJU1trUs5zM54l1nuKzNtYZTyD+qxlHM/XgoqHEPOXl2QdMmZCLWikvK4qYqJNHRJfTVbbAU2XWfJ1fi/8Yi9upcWBBvFlTcqI9gzgzrzXEvyi/SEnmi/YLP53HLmc7+o7SwelcpvFIBSJHCuECkaOgqZbFtb4OIYh37IP72Z9tx+59w/5joTAANULIJygD6bxcSe5htYHfxRBPmtcRFwE7XXspTDdkKJEelSSudeVEH79SJRZTRCiIHJLoBzXgNEyuRc/Cl80jA8ndB87NIq5Bwi9CRy6saXBzfxQmnYXdphtXyFRsi345eD8rdzcUwd9Q2KBDjniCQDiCIQeFAik8jIPLYO3uodw4mL5B59tFXqfmPMffnDxCMAo8308+kpVwl36JqE9wmkymlCIQ18vDlDtWQel0JPOl/x3OTlGk3388JkBsAmWZb8jdJfbp6PyM60v3lYS4+2Oh+Fy+e3N1FT53aZUnixGVbTqdMfnv19vEUEB3I7l4+nSXiAnGNvXlW1B3ZZ/88Hwf40d8gjHxYJE+B4+Hjqbex+przJnih0ehimVKJJ5zlUOBjg2ttTxgZjY++ViZEwVAFtaMyIQ1HuB7SyAYYfNktGyTTmWK8XWboaGa/IeIHyrSPC/ihuJwjH+6dG9kofpbCMlyuNSseISX+VzOECvgluj4XCbSJFJ3tCHpZALu8UYhTr/EyeD9Bf0ryA3zrysgaEa+/GonBxEVpPc/91cHOAWmxGD+C97s4N/JYyjeXF49lT78N9QU+AUWqmIPmfnm3eWDq8s3k1aXvFIcJMVoQBvMCviT2us2+b6vbN8GdeNEdlNywuKie2W2/LqCf3rTkThUKwnipQDDSC8qdIpP07cH9NsDQNlCQTveXuUpqyJqAaE2qW5UTmDRMajEo7vhyCi22jd8/0q/suES4HhVDCqzLUYSbaL6zma2bZP39OOhGI6FJXN2r8wqI7AyGTxwaZ3rxrYjLReON9ei4Ue8ytYGcJ9O+lxDi77Vuckggl1mbP3P3usW+82BLmu9nFTRxZCUTdaqNVGpWQXefbYG924ArvWwRejXaVwWF4JlogQbEX7/Nkguimby7Y9P3pFGTjAAYmpKuQKzhMoGwa41C49qgWjks4BmM4+tK4M0J+81g38FQC4L3OwXUCYECbkfCpNQfxj5ovGUc29iKa642iBSdAsd8ND64vzkJok/LnpzIUJD6yT6h4dKGyMkOSX1FjsrzzYIr3T1vC9LIRVMek4i+iVPmTYl0YTQkJkPvm7Sf6gHfXvPqNyCylbJOUYOW5VpvWUQMl5B+bkiaFo+N07g3nNe0Z2psTbE62azRhk8xC1RW53TizYR9R1+HMMXNSoSRbh1uJEPH7RKhN4XlLNygLdNLqGdgb2OzVPAsJryBrRBO68LG3o8T1GLnrg/m47Iov/e18EekT+Pl+xQILYt9HAf0a3lZBe3RIJ1rUcK65FqXQUe6qPHyyYLGB/rRRZlDC8KuKNWQwbJUQsh6fq2tkUhGzHROsuGQN6a5loBe780jpt7lM5oVCDukF0iL9FzTMkoRo4+ueRgL9mt9fWEInWE0icPqC3zSO3avml0KCx2sYjba8phWOaXNoMNBPKqLflcj+RRX3bFXVFay4iq80Yxlql6qaoK79iiA23ZkgI4SwUQDjfFTAobP2E9wNtEMCQr1jSSN+wWJRaHpVkCjDtDaJTOw1DYhHmo2AVQaW3rCe82o2wg3E5be0jTQtUxzNAUDasWoVm1rRuC+Kn1Wt8dNBSJO4OKTbZ2R2UZqZfC7THmCD683c5qNlZ+hSW1BupfI38b/be3joTRBomhjLjtT14vMpmnccNztBKefokR5KppcxpcNRoLqkXHaiJSpl88eBPjmESFEtk+/YfjCyop41glPsehIXEg9BN5o/uHeEjd52/Rd9o2D7kYvXuUFDF0GDGlBeEvg3B8SjIemxRJacXnUMliZVdvbYDlVZ0PIxERj6c0h2jCu3ybbstuPYokHv6PdE/Ax9sh0/N9plj4e01FnWoaU7wn+OGNf7wVckzE/PRItnJSJXudsocnAu9NpWVTKNQjiIjKmXJG5MKX8c8ZWZJJsFflSgP0Y17MSpUDzQ0xg6dqFlT90retXbTcsH3hUs7jzfP+CpJBlyzhGudxedIMvvjmUpUp+kAO3YrMesIq0V4mnjUwdzTU5exvbbljCUIV5QgB3ilAI4Ssi3jstzbU1ocz8ulY5vQuGTHJN0hQakfbpLKzPpau7iseJik4Rdxa8rTbnIWuA6lZVMphV2ejl5Hvtx0oaCCCvLd3EmOQm4p/cQbk2mxEX7PvGmHDMGrEJ88MkR8WaM2CdnMP8onXmeoQOzx/9QmBT/GvzZ0Cd7Lhu5t/mIu4Z3ey7+DihDSy7xN5p+9O+93sg8xCOWHfma3qToE72fB9in9ykB/Lq+3bTI954/Mqe0XIU9m2WUap/bFTTEKSoYmq8zapeyw220YFXNA1Wmhs6iTzvhO30+0cjHkcjSQfVStGjdaEyBakrbED6YdzaZxRh70CoL59kKk3CHIAQ3qKMKSckLyqF31JlOtFBsCWthMnbtcCYhcnwzmsf8zcAUch1gh1PkdqKebTNnk8HZreAT0l1B+y+yUg179Ag+YXepVfQhuR4I1yIPRgctv5z+SyWiCGEzS3n/2CAcrjVOb68Kf/9m/pycP02w1SUhQ3DZskTAyc6+smaYqi6GY0yUCX3DeUTnLCwYgGHxfHAtkqBiEg8LSrScpGEKy2wFUAkIcxLjHKJX4A7JMC5k2DoX3X2WY0hYRfKYO/xnJozDV4BYIR22NQyyjeBMmNk0whXxJ5i3SxS/oNu8bAJSPf9B8YPfjqCkj6khmrFYjiKrjmZyGvjAFi5A8e2PJmCO4VkLdL21m3JEzXOQRIgv4T9qQ13VuCV1DgBfKfcAZzPapMQXjfmmbyPSHfe/iMfg+6qkmO3IOjm6ObCUxaTEFA0SXQN04RyKliAgkaxdt/olcMVlKXilx1c7Na4dOR8zN9qzwrDSWPR76XQNWKHXlzwSICCNcwAS5yFMAIUAKuBBRA6YcP4PSCCEXRJN6MD5YQEgy/bdal6O+pasgGVqcHjlrrfUxpflAgKddLQtDMNKGZabxZVeghvb149/7Fxcv3F2/P01vbjw/aqQ4zLF4qmuvCtoEoE9YQxYaPp65A1tctuX3NYF2R06k5gNjNJuRy2RpH4er0neJsapIpHDa7Ov0AhJo8QVpdCULxC6LyXBDXz4GYK47jTTNedX3+6hGRnp0+onLMK9ENb9WFijYr8hlUN+TQQ6sz22LvWCRRFG4sXDg2eTGjlDez7toif02Rn6dF0fEIf9jNbbAmhBEcxCq/Ez83nV/1udVt+uJFiohSSOw37ypLo3HyLZEiXQgitl1HK6IjAbQLNsnouRYwgJVAAZ1h0ArIPFgAbK9ivaghj5kwwVHecnueosNS26wfzfzPVIRAP3KUD7C3m7xjd9EbcrcKni9B8X3iQoAM5Wv0d4kqugkjcr7gPH261SOCQf8PMqarXVYwUmGceFW7ON30nASPWP1eXS91VF08H3TWhS7D9c5KAKirmXD+Ah8H2qHphsRYOcbwUvWjPRco6Pqg+NnniZ9+nvjJfcVfhP2Tbpkf7wmkfCBThPPsc70wtZM1FWbJ5k3aGqfZ9iSOPG3yvRI4QFDREQYaz8FQqNCu3gkMG3OiCxINoE0mDpQ7+Fb4P9S8W4463AuqvTA197/AMXAVnJubxiY3Jvyt2FL/uqE/ljMWyMpay/7VShDCPEUFikdIxDBSmBX7EZ8gV4IMNspVy1co8JBCsMBjH+LyD/uZ4FXovKw0cQwspODe3KzZNT9SgoEakmVEyUtIUkAU/CriilpgwhsfI4FrPy6wv8AXXkGCBZQEyQWLhBBUsMABQqL/5D+8EP6urvijvNkjIZkKFw6DmP63AbuK2MrEl5MQgRygIJwdEQ1M/ElgARSDRA/AuSsZuBIfA0VCjBTiVQyMoU8tsiuGnHATWYzRi/syE/1qRFAeKAH0/CtGIOOhRC2xs88IUMJSjLN7QzbDf7b4nyA6woBeBRQChjEEvjEAcBGTACNJJDETn0o4PACCgBI8gmxSVEQihNwV3IJ+c1XN+VkKrlKS6cDZkcFzIsNcg1rx5g2VmUMHgytbkzD9nvWtnbzX2ZLwptWNUXWsy3JKtbZyIPfKlsiI+HpIS0QiANsAbH5BZiol3CvhrpQQAa6AQvAXyXI8hyQIyhMEMWZAGVFKwIYg/vBtmQvnxmAAY4dpGs+XLpc4OcjJYBdRhjgYVQKM4EaeZSArwkCVh/4tQyhBGQlsE3ATMRURcfEHpKBfrte8l520nUAYHZqcPDhNL9hLkvylyZ2ye0W/Pm8m9Blt8l7VCxkw1oVNsMTbMDZXXhc+naSDbsxCx3O6Jtcs+OLFC84pEGagYPDEsKTfz9jxmzhYsfee1HvWGZUU48idwpmrOWWXki8PIH8Wo2bOHwAlYKXEJwCTOBR9EODc3Lx5y1QA8/YNAIhw34Bh3zCAa4xi+JoGgvT2pqbZa9JquJgF50C6VuDoYhzRcUQ1gS/skidQjAn442kO4NZ1kjWu62tapGjJnbxI498LXJYkxztFW4IFJnIVj4h8Qrg1rcbCRPJiUUfTL9iTiRcYSR/L66gL7Vh1TQ4ZBZvcGGs2CjOvOqnbpvazr5pPGzpbY8qqAcsmwEIQPhHK6yIElqqtCORKA4i98XrnDJ0MjY7pBcZmTl68i4qNKULYsscSgFy48A/FsPdMiRy2wluIVLwvYNLXBstIe+8LkPEe1u8wuFQtcaEKNg9R7KxdHYpCJHaj8GVnTDx4TETwWVAWlnW56MNw0W8CpEcmalbmx4Q2pcrkai69Nrb3RUHChXwOp5WDbrfqcMUIPbTTTBfLsSStW6dHFmQH23yoK9uW+cINAGNhkQxjc+x0HQxxeHdKNTYPQq9taKrOJk/Zvp9Z9K3wDtzMFtgYS4tSuhbVo1jmrmFYX3WoUdEUus5jyLgTNLSYPH2XSGydSqwie4eu2ek3j+VA7hyHhSvV4kRLPNPORx8iZ+P0w91h/JFCltw5zCgagxAYh1oPklBdwrug6RFdkzJEHVj4+3SAPRuvQUNMe4mLsV9m6Oe8UMzmaig6Kp0bvNMDTFSJsILhSc9xYuJ574D/UM/lKDwWo8VKsa1z04nxu8F4eRzjoOJAOygcmqFwtk3/b4T88NMnA8jquwjfP/aj7HND/EcK5z8OB8Piuco6jci/PJqe3nx1z0d88eGLHcmwjiTPr+Na3BdffXHfWL/clUSxmrcTHBU33e3j592mvURPRdiorzc3najkoVCFSLhKzKgkSpQfJYpo29mfCYqmW6PgZPPI0N8V6PXBQK67peS+3gkvGmgvaqRfdTjN9aNwtpXxgnZyYIsltWgwAdNsANEnjfeEzLCRGm5O5O0CAje3hhxTy50oBF8quBgPogndummPm+SKPrEtwR7pjwYq/UqJgbWdJTUE3mm3ZmW8J1hauet+FeJO7LBkIiRRFURAuOFctCywyuMA5IgjqzbM2MI5GnY+QLxDvO50y4gLSDzLz3sYjCHeBaCpsxk9SSJhygzcRUVToSTrSgC8KOBRDtcVjexwQ8pjhYHKcQL1LW9aLfqBjK8cwduPqFFXD2wnPDlXsWNlb5DYuSiPlYbk3sVS89gOAAEAS7XAlhRrLsL/M13JlgLhk+VxkTGgjJmiA2BVTyyjAzSKyh/9HkADxE3e2Yo881JlKyCXto53aqZhoR0teQ4A9XI5QWGLTR30MBudW1tqVW+uBC9okgYa9hl1ly3f1Mn/+B/kHJWLI3wQdtKjUuEHj2DxF6g5NYZnxVeEe+UH3E5GjoGjyEFX4voKrwkAL3aCUNdqAMpOQPpBreYhNvRy7X1g7NygdhxWXCu5Yy2p1I3KMo/MneDE3MQFUeWc3Au4Yg2zCrrgVUIPtQRwnRgQDNkBxmNcb+/63FdjGWsNx0NJRBoomOqN8ndIoxK3cVYRQ9G3Jtewy7bCGg+LijDuvueENNmys5RDcO6jQ0tPyTcUaTFPq3OCTVVRrP/kP56//tMTgL9/egL+WQlJVECeiReYPSUXSzDkZ3d1BRcLw9VwzGLZmSrB0TFAP9vo54NSGEa2zFtbR65ZkXMFB4s8IBgjQDFUBnw486bIrJuameCMQPqKALqPZhGqhrQt9LAq+f9/eHSUAZwBTCZ9Z3hI9BpWn+Jf29ep53hVKpL9ATOR6hCfmYmM9qGHihkVCGXvlhv+17Lbh2UlbyHHM97LONvbcsC5VbkLiUcNXz8KYk/ZzenHFrWlamCrmdwr3Pf1n4q/ANMqLFLhZSUXryR7rvARE91V35BbPQKfHGmjz2Kzdwb6SYXOejnliMh9t7ztlpXJ0ivbl7JFSwkv0fF1tkzWKutagpjUnzaEyPAGK2EZgYUA7Jy1a6z93FZz8kNVJnkN5x0uXPu39J0lPNPkFNUcwPadKiHYMRT9NJ7kDqc8x/19JO+f8FOChgaR0tNYav4g/RQzmPR7QlGwS+RXmehfCnLLhod5okA/PvjvOZWAUkAhYOnmgkTDW3wqAe/W6DYrKAPpd3AWvjH+npV6rSkX7MasNJKCVRUhrJRxFMGciOT7zrqGwGBcKOoB4mh53JN2rD3OlpyH+7WCaAIDpdEjlXvXj2oXiThignwazNTJes1K3/KxbTZ8r6N4TB4G2ThKwMUHYGEXdk7wX0sF8HGVlQmX0VwT1ueW4UeVDQm5SXmxea3KhAdHQN7ptWEC3H/0Ho87b/AYm3W0Te7EbO6mrgsKQKUBv9dqfZu+YvwJRnUef6pVt/T4+2WrXPBUtlZ9SwiPmICIElMXrPXNjLcp/6mjVmGFyNY6TnkQbHz00srcShZcwJ5MwpJ3Ovpjyg9P32LWiG/nEDSGOnyXyaELTKTSKI8wLCoGJMpQtk8mL+q8xyIfBG15W9sKqC9ZYW0JhU7KR2RtkiYvpXjGff7mNPAOXVln3Iz5UsZcRhhaH0bwbRj50cJ91TsDeFkqJ5ipndjQQmclGFSfALZNQpSHTEKU3iQEIeok/V2qTsnBLOPqydur/ybqFYoUrZ6X/ib8lSjZEZQLvVfhHm3BAhp0axkhUOAehWAenjAqGHBJnMCSfohdBZJbJZM6jX+19YcJbN3ZFBNDzpyma1fJte5wH0w4YSUYFTyP0Wci5NV7cmRRbcMMGG7YECHA11CeaWhOLzZAfga2eXwpXsBfVJ3YFzughh75e04/HfNcTthhYSbK79dcl5D7RdiKMGRwa87dEnjuXolg8T4sZ+DCj2de8q0tqXl/C/QiMzkwEJsHz4H8p/r48XeMKZQFgoWp5UtognLccU4Yc4FQCQeQmeXKd/oc4+Q5kNfKr/WxD7t1iWIHKMHVP/aHCIzHVKRcRYoAI4BdA6cIfgyLABaqd24KjDvmqUgaDgy3KKKQCqGSK/o9oV9u1h+nBGHIshBTKPCKya0boI3UHaCs1QbEV6cOeNAtHYIB42O6ggToloxU1i7kcAZ88q2A8egLiIw+QphyeIaXsrkgqg5ILgiWe8K7qFOMqobozoD6y+dOx8mAVxQMwl56ohSDgn6Pp+Q4bgeKlTczTAKdrQnwOkdfamlYAOM0obvW2pepfOWtEKPswb1eNGWfwSeQakBpCVYZAwgJlmdzhlAQDTs6Qtlr7UxUl8UelsjtXMEGcFCMsmMYRgoDRX/yDhiPxgWzPVYKavGFJRrxjoYEQkE1FeyiRDcuvZGwMNfQzkXC96rNGQsdi3/ibdUsbR28b90tMl6XgfCd7ZaCH8wZdT3rTd2dnc5qS4GR612rAMpSENaTFXTP+ahOl6WcoTwgINtAd4poWwx8WaG60hu3el4GHmUhlWUpVSvol0Q1fkLRJTeaEEU/r3GqQuUULNqFlEoheNBFVaGuRdlBEpi0CWpoBGLkaqjtAx8Y13ZBBEptV6ParmJtjylQoXqGMOXwDGBS21Wo7TG9MblqqN9qqN/jB4tX3cxWOBIwkyHDTBrCxMBRcKZwfHbG3NzIzI28jFkZ3iPIRSkg6oqecUVPIWimF/iGtanXp0CrJjsNjcYJvUOm+mxJLW+y0HUOSOlFYyxoE1FTCwrBiLq+CqiYtxKcDdlHT2my4Bk39olcExQffjP1zRuQSsGVXEE4Ry9ACAFBOuURjFfB+KUlgHzG9j/juM4X0NTM0Qyg+DgrhWwAMBuJjEXnk1UUwDAEVsDQ/GofvyDxBrpAXozI4ssaZzOOKFsCiV1mQj5i8pvBVVWTzwtgGBoCakzzdC4W7/xnmTNiakaCpY1pGGEwr20ZKUrLkPKCXEStKsEEzvuu9LDTbUCXA4lRqKFzLlzj7KzlTFrMBcO4H7AQ9R48nD4dSxvngOEd2Rx7LTkhuGRGxJ2BW8GNBT6Ud2B+t4I/ONxfagag9RUyobMAssgKqdYAIHVQ/CIUj2IUwm1jgVxrM+9LYJk2AH5MHz+wxxaCxRGc/z6AbccdJbhaAUhFMuEbG58KE1MHTIY0Rr4MyGZUQ2ZGSsRScgagUwwkioAtJXcpIyVrGcHH4QBzdAghHZQhwFkpXvKrQDaaGsCfHeIyz0Bl6CIldiVI37EqNscRMJiO5SNWCAkAUmVQd0MdHoowciy+eqyBEVsA69scr4Z+Saq0bltGs4iKYRbBDEMxjycFaq6BhVzlal0LhiLhsb4O2Fx3yqOoGTjtIW2YhuoFcFFMAgaDfFowtFKZ/waARauyoaDP5WMIGov5PFRvqcSdYsTUgpRakGHoyPL0e4ykz/9Irhw0/ob9cFGa/xBKNpBuLu7XUfiEUNxAy+6JgEeR+zVQxHIChKMBBlEWOvnaI2engoTjZvEznrG0uCcAoYeR9hhQ7GGcSrkEiAfVYuYydX4a03UmhBMPyKXvfAaIxJ6ehMQCg4CAh/KIE4IgArB2LKnDQudVrUzUL8bSNyB+cBX9MUKiJAUAEoErQd8QaKqfNzUzEyMAsRk4hCMSIxj9CvgA4Bo4859py/Ln5Bn92MzSjQkLA4IQYDMtybVyJlmprGnNpn0R45XfDLQYnalra7z2HgU0cPzGqQlbWR4pKqDSeESS8Suq9KR+hYhacpWfCBKzAIjvBz/4cDBwAYX9CANV5+Safj7wEExCRIb4BREgooIpAUEW+A2iFtT8f3//7D+Zl2LMCiCDGGBzsPyXuyLIA3iCMogFgvG5IAG6pSAYvwaKIBhzC6LqgOSCYEAAJDaT8MW5ieGZa0Els5PL3Xztccu+KEodahv46GxBQJ2gYNxwhwY8tN5orwFDE54EBTk9sfWEKXKHr0RsfPP1X+paIaeIimTOTBhAA13oOqBrGlARQL33vjUg5RhDKJ8wQp0ZQ8oDhpQFgHi+7TvCoFULyGsEMqguqs7HARiuqBCzYjO2txluMmHWsajBBa9/qiSuUkAwoNp9BO8fBHJBSDQ06xMsUcy4yZByw2reYZoTSgiQMM3xX5nRMM0JxSTIRSkgVOISc0VxA2IwT5DVPbqqAR6GLsBf2slzg8mQGSZDRuZ7J9yqUuQ1FV2gKEvA4+TIDJOiUU6EDyyoqQO60BGNMySzMUMym5MiszkpkkdNQz6ZMPExYeIjyQcSLycF+ksLMEx+jJ/8IGOYowHi5MeMbvMHw1SA4br2ILoAFiZBRiZB8hxBwmwnkheCyLTHhGnPkFaHWJCDwEI7Eq5xk9wPaMETJK6bgmRWyFxSfVrr6JEldKD4fEDipMr4SZUZT6ogMXcbeSFv2PqogYQJlfETKsMTKhOPrk9jgQNaO8UQDw2YQJmpGaA8pzLDnMrEOZWJcynjDysAYy1/gjy7MnF2ZYbZlWR4xOPsSgoNgrIbVd/4/erwUYDFOjhUQRNnXkb0wxjpSkDOHsE6BZcnZSaoGRGGgEBkehYGIBJD0xlgXcsgTtSkXRM0TNRMnKgZmagZ2T8hyHsW8iYAMiuTbw8YZmcmrFkBDTO0UIA9tmAszNo2hlgSPUCYtplh2mbG0zYTh7fswRxO8h+gUwxkxiafSxDM2EycsRmZnRmZncUY8Xw5ObDWhPspmglTtKGd49oeMFzqIl+9wDok8DBrA54LiLM2szFbgw8PLHV89dh2RGyh5YvT5wOGCZzxEzgTJ3CIKKIygRPMCJQJnAkTuJC/wMIEToqKx/o6YHECZzZmbSbM1RAleiH5moLA6JwSTqsZKRtGQPHn9UU+eCT3BrrH1tBzxXNbBRAmf/JdAxonf9IMAfqpnsHCPs/sTJzZwQ9XZnYmzOxAFvfrKHwCFDM7wzO7UBUehcL/iBlw41zPhLmej/hEZADCXM+EuZ6P7ixEByTM/mJpYOJc3BOA0KWaYEs4xAME8QCReWCMjtE53DD5k/g8IFcmfyZM/kyY/ImAgIfkyuQPPgYTk8zkajvdmWx2xN/O22o+T9/Kofmtm2Ngcr7xHONSCcMBAplou2HirdUxDBusDk+BpevDD9oNTLfvvX7z4u8NTfas/66gMhzdb6UHfBkRHuajot0dni805UuFi/r0sFylPiki4+q7pWRE/WkpjLc/LYWR9KfFkEeflkJOfVoK4/wodc9cPfl0rp7cK1dP7pWrJ/fK1ZP75erJvXL15F65evLpXL1LatvChr7JtM51vll7IEbBcHMOFAvhxa5k4oqnuiFIfUZlLSFzKz60RPsNP2S2mvtzV6ipZgEdBLn9Vvb00E0ruab5MVlkMtu3PMtOyx6Bu4PfL/L0d7tBqmJ+nsqaFK7WWok2iGST81r+ohAlAXYOWpqq6UunU1EVJCTavwohcLTyc8Mofz/xgsLWITmj69BhsOz0m2gxV2yBDQLbX2ivSZVSO7mOJh5CHMcQduBHxLGhtDFPDPaH9KKQQdc+Ns8iFcwSXZucPHIa54nKn5juz6DsV8tkZdn9upAY0rpDwYQHy7uAvFbpGl+mW0LCggstz1l6YQOnBpkcv0WR6OU3y+UhGz1QJ12axVKuBmE9O8pjHemyMLPkrt5PPHXb2T4Tktc226ASCog6mHFCG8OI6ku8HHAe/7qsVfBgNBLwLdPqUW9vuOJ/nxjOgIwlMPC7aQgOtw83Qj0FTA/9QYEzND6d9Zcjpa9xpSGmzRxH29cEXkjNqsNVHtt2tuUEsRMrpnhlXZJ71WhNYPrAtdmD0szxzR8Qv+xz/cArBzyYm45eYjldJufnrrB1t0iqtqvcAlnaLuj7kvNRkYON7aSkX0E/U6kFRVIvEtwaoeUw8ZHbsMNEbamoEMs9XKKNLTet19pBUoyyJpt1It5ekaRvqW68BXZ1bfgxEjEbnFrUxuk8vXr+5of3//2WYl2H6yGSF1uWTYe7JUSBrNN5vP5CTCCP9TrlJLuaBEOALtRHhB8rfcoZ7uP02Y25M7ZRqHF8w3PuH9t2GNG23HxGKCUxwb8S8iC+GUksUvCObuS4OzG7eXFIDfaz49GlHkp3jDU2wL/avMF8aGU2IueO6e7HxnBbT4tPkQvMpe0aonodrHGPLo0PBq9+FcSulqZg5CnFzsiajwE7vTjn6lCY1nVDT2LcpkFbnF0dh4mS+8QaV8xE21e6lHCOcfI7WeAOp7k0rqxMRUYOtHlBb6RDbJPrfeLhiOYDr5h6nl7Ee2zlQqNw20JhQ5EKQUOKpQIGajif+2s8Kq6wB67vTMtbOZObB/r44owrnuY543B1QqdZ4p3oi4qZfLmL5Uu6sWU6nVIclnU8w+n+xnv5lF7fDIR3b5/NFq3JoxUDEKlIAO5otgV99kqZmiNX7jZ9yTrrEqyqAKVxVGluWh673/47N2jSHg+JIr7LVMsUOVomJqjhjxddBELV6MXgwxpruAR7JjT0iNZlaW61tJ9QEk6vlwZfuTQsIvUi6NmGQyFHOVHiF8579NEy3JPd2+GKp0xML9KnkrWpDRPPjq/sxZk4UXyHBYm+nY/rkRQWsbKwfbUv8GgOglLjDCVwAndjHX41qy30HKI1X9wywlCGS/SoKzFK/t7aJ2YhAxu7WPBBmmIh2hG8rnXjtO+QGAOpAyI3X/CMJNDZLzdg3OcCjKEuJ6z0DgzfL3SlPwOlnM1LPVON7tRiww6rqBKy/R9isEHW9Nu9vKS1PCzhPCgJLIpMjLZC234mq3lzokdjQvM/I4If5+17hNbxmqU227xvoLPnqdyHNP3DgtrsAZVWUnwJndp/uOBrlI4WG5dAxUPZR7E1CGdoMfI8B71ZF0HdNXn27t2bd7gRqeQmfvPGudgOFuYzhGczPsQ0K3yYBf3k2LQrqMRXti3C5uAUnWyjNwjscU1BM+WS3P86+/0MsFpnS+8FrDpLQehn6iLRFaWLfk2+VGWRHJUF/gPLzwHcqvDffWFIunQaoM7JlYuYgMhCmRitARKGl8DFjC4hCk44YEwonTAGW1YWRYcgLh2KN64Mjrxnp95rijpnAJdH06rKC9lh5THgOqO0zeFyUhvlkYwQMYVLCYpJGJ5OL//H6e+Hx7Nf3LMi+Zd/SdP0/dEfgBP6RLA0PeKy9Xt4QkKL5NEpOUe/++MUQNxv4IYpWNH+wrZPjhHylCI8egTw3p84m6Z/ogrkiu7xEcjPoT1xno65ueemO3LS1fA8gCULYJDgtJyQ63xVyf3+qvj+ILwvwFWdJhIl+mEhMltUEoQz7BkWssVZ0OoxIjkqEnRmmBiy5Ze6l2WE0IZuXF+SZiVm7NP0Snp1Coq9HQ7aGtza+Q+GCpPk/aHuTiZ9rcNBpYvAWiZP+IJdh15uosSM/uxY7DiaeoEAhhz8Z/TXR+7X4tk1zx+Pgfvp1zmkQuFpteMBWeatkDLzNWVNgTh4PlOrWnipGB7S+bbQLjfazSy6UNDueuoxmP6w1nkq9mu3TmpiQBWs6R62rhtt4raqjJYt0O8ubcMhDZXieO9GVKFIFr12bla0Wsu4Ta6fAOsfs2uua9e3eiYPM4UlDXdlSnR14gPj77ltZ/RuO/eghdzfzEnZwhvfjNaahcHJG58X0n0Z/kRCk4+HiXbRFTV/Auk/ZDYrQtSy14YCy8JRNK8g6ZGBWLAe5TS3EsTSoMfRj0SEW8fON8xnpN3G6WYpSSPJu2V26wEWNjcEwsokNwJ3BzT1noCbpHD9PFviokF5+fz5+7o5/fKrIRKibMp+QuiFP4uZ+gFrPBuKrJ2mvObFy5l/+jaFXZcrBJqbeua0ohZ2BsPMTIuLaFfeBNMl2+Finmz5acKu1xrbkVnfElLahSBvbUtNT2st4d+rNY+Kl4Dx2uujXIb48dqy9Vw1H6vPDAB5vsmJEZSieBctUyDzTcQeMRa3iROYCghfPtaUspyEpjph29duqRpcXYEW1WUqysokLMOIPgSQqoIsb2WuHCSjwGXf2WLjiqpdibJxpQ0Xswzt0yAwnKuOa6Hx7iuxhubiLV2j7grZE2MZzgH59SjXsX20bIeb73Bf6dx0CujmkSGMipFVXHvP01pWu5C2zJaozYy39trhI232a8lT1a7Q14zNEl2ZesFUR8vRtQb6d60SlhRYBYv2/ogYb5cykmvWUik1P19fp38G8g4OZYFO3sPZMFcD+zemJlpQKBgOgVNE6RZJVc0WyUSTyp5R23TTG1QxwonLhZ9pgCYiclhmY+Wf/EWpFp6bzhVoNtdbT/6fW36/8uv7ii+5TJ5+tSXU2n6xxErkSOzkq3vEFYVewWzjghCoW+xdU5dpl5o7W0LkelEAbtnbZ1Jf82KyzsmOmO10VN1A8RM4+f43sVCIVb2lphyfa9V5810nx+kpOpMzNnuhKNnDXZY+jkkMg1vOtuJTnx/jzrG3HAteet/mw35ernd5YXXl7iBi4bVTh54G9lq3priNIUR6NvMLXjOYzPBE6g9SL5YKRW4ym8CuUQs/235Ld/+c7sQOSViJQT3dtADHoV+8G99BKyP++Bigh61XiMyMha4Xvcn1aXqDccUJGj9BT4eF29j4zm1c6+XVYJY28HP13Lz1JjmKS5BjeoVRV71hqEN1FFGIQlImXj5Uep6usoZSYFstYyqR2H7GiCx3FYaDpn2Tg2jyGWBc9WLPUzhs8Pl72zvqdsp+7tH/Y8/BR7b/G63kmHoGwcJkpSXoTUEmTtfkooMDfOmh7DomGk6h4D6HKzYFamsIFa2L1389T/lizsL47SHOP+mubCqiok8ispCQPoQzdeNuV3yjsFQXIvERvGaXF+mGK6bDKFJYGE7onQuUVfkozcDAgu/ulbjBEoBM8M9TgEjjqwd5aFCoTJaY472SGtcJgoCTuiWQJ7oAaDXG2C4TXHksEzCZrLRuJo7XZyaB5jgPxlScyGWE7gS/YmSha3K/Y/eKEk/A6ZUmEKwgT3jqE1YwizQ04ksIqVJdc/nvgWznPERQ5OSeSDwhIFi+RNHEl/WmG4FGC7RNU97KoWWhm/FMg2mDCYQxnci273yHSGtD8V65WNmIDk9rFstOwkDGflYQsZz4+U8xnxVELpMaeu9iWCfxl40PPBgiahfCC/W7kfV1IYbnqRJF6DZlazre7o3ZMEaZjrJ8tEmb+BFzxjdqDDxsWL7+4eVLERrt+/8QLeTio2/v86NC6XqtS9tsjKC3h4f+qZ4YjtyfX/JwFxxf9zi+UIFTEbb1jFxna53UcCZDF42g1JOlX2KTQzZUdVl+lfIdKlxjZEcoN3ySHEPbnKOY+IDy949Ht3MYgqOLVFmy1y2vDtSZlhj3RPSew/19gV/4a4WAv4bT4WaBvjWEtq4pAX/2EDlM/XzFHn4zxmo0ntxix41AIiABwegOxMLBK1Laef085VIMDVk5egEsXBCIlq4EEgaOIpyCFApi/PAlpn1EQaZnCrf0my6qgZw8fHh0hBlP1vQS/AIFa2PZ58sQUZ4efezTP/GkSDxfiQn47QfmyJrFKGexmjdNL4KESud8P7JfMlGyQJGO3gi7HkwJquNDfXYr41mTp2n842YZC3UPTzaGjdDDdWlfd6YcpUiCTzjQZKHrkzT9h6K6qOG+MjUafcwo49qKaMXJypJohEEEyCnP4MTE6yCO7RMZjckiWLgZdv9dtl6xOF1RKpq621iO6ax8ehF7+yMNHu4h9ebyk0JXr5/++eLdW3w2UMPYSpgXeU67O88Z73NbA7oCAJXgBhnpPWiWN72mjr6JTREEn0LyP+zxDhIToTx+Hk0A3iVttuMz9VZ0IIxiOyxcW7GYlus11hoD7aWptQnN2ZgXrQ7CL0MjWHM9T8fbU8IOtNgJgojVKrkgcrR3vsVj220DKya1MFuEmEORoaO9+uFtx+kZKM94q9620rEF+m7HGB+JGYiG0WGhfAfneas1z/pE/X9U7n03mUTzSGOVgXPOveO0d7JbXFW3nrOti/BYsjlEI0LBng1G311X8kCsM0Dew+V9EH8L+azVUroT7Cj7O5GFgkqJYUWcLx2eT2GdcNbAc4fg4oDg2Nqdvml4jT+KRut1IQwuI8m1v4tAB2rfQHaO4uxJ2NKFatCYipHABE0vctaTVFk2liAunz6N2Aljk4lcdpFu/Xlqhf3WoL6mb0yXmgK6Eg+GEiE6XKJNeQyfKIKM5yZVY/BxxbRmDBsZkwnR0t0/dHaQRhHl0RwVe6mgBQe7HIteMgumQTPtzbkXm+KTTATk73OCwk5mrCiyAYVdjM7Ohtj/HCMMg0gFs2BBkUVqrLRIEuA/dwPUdAXI5cWrw2Eu9oW5ePH8+eEgy81hnL+tO7X1ruQV29e+pBfzw3S1SM0eudLMnUfp4zC8VHWw9Z0OZrHBYnUaJE4aN8yutwNEsb1cKcR7hF5dvH958ST9/fRhSugENGmaxyP5cXIGa+OtkY4R6zGqDk2MPKexvBgadEq8zgrzvI2szXuQfeFivaaskwlp7Ik8NYV1SylQU9d20vQFZoihtAtgW70YUf03QHKlOKKVj9sAQhOtz9DpIMOxVBoHinFtPIi41EjI3Rs/4mcJy8SHeMiJvbywPiBrD2PWhOcBuy+KIFxIwJJLgLz5Xc48CVxb5Ifg25b/MFU29V4m1lX9Ups0QuO3i8mUVcpD2SIlSrhx+yQ8QtSkgvq5lDWZxcWS3KhsHDd40ko8mz37i7Cex7Qgd1OM6Cbg7QQbsyQReA7e8+Lq8sULYezaU8SHf4cmY4cP6r4ngX4o4UK/bLXszf9osfXzHLT/7OtFeWAx1je0M2dYRu4jAta1RpDNM/lhPzZs5onmk5jBGC0haGHFAMEbmoThJpvfHOXhLUaSGBHzkd9kbhZeAznNbT8Hj4cbW8QrqEGHnEWEw3JDYvarF6NyshEOfkecy6gFk3vFUjFl3CzdsDygcqkEuMYuLfZI3y0K/K5oJao90p8SDXqZcQ8xtguhXqio+Sn8ffvDciO88GMNiOsqoMrO5ax0M/HhsIkr5oPmgNBlrjUor41Um8aaTWPFprFeEw5M5eXtkECZnofcyelTt+YmNA2xrra25/cUtogP+5Q74s9foRXXQXB8+CMs/O1NT+gPhAmb3Xew1H7edpwEB95yjWUviwCffmvt+jJGCl26zTjNdpRBSdaFJDaOkCqGkUE+7gD65JOj5KeyWvR+NlQreJX6k8FQ0w8FQnHcLeKbat5b7+1q1Qhpj6qjv4xDCHcnanSx2ieFwzLpeHHy/uuYd8WNneh0ocz9JNFCfkpQYoOZ5U9Jjm2pb+R0bf1FaeE7MTDn0TJwo1ww8v/JAhb1E2QHd299i2uyneo2JdRhkbvfLCwa36f9uLcsmwYJYpMJPLz7MfqTUzXIGBO0ZyC497Xbvtz/tsIZ9w4Fqk4gDlo/u0rctgh9wd7mZGgx+nqbOgxwl6rNsRezZUvfz0UH/fO1MuWhoKa+V0gow+y5RI/lB6kr0Z0Pt2Qx91ZvSoRXEYsscQGG7rZCzmFLRmDXAm5t2114S/2sfmBWeuei+FbBLK3ey35Fj6rmKvCK6rpvS4MBVE7u+MoHUX5Lvmv7moA/GNeoXLqx0RnycJ/F+YZ+/1hA1srPpWttfRTQY02NG0u2GnuvLjvf3AXekdp4jnzPMRvDzlSLdqBZmtKO2NinfPbu9cXL1OuHX9oWw0QeSowlh/sVjooxR9qIMUmu7v+P9C3U+e9I0Yref8yGAQ7KvTF1884JIWAu5e9CyZaR4rfkmRJmXBM0FZnpbieUi1Dn4PGKTocXsrVEvhuExdN7BSEFpInNOglx/yBUqT83SJMtPzOIiH8yiChAXRAsuqLVu1orYyJ6lkBMD/6FrDygnYWSzUqgyZH0Ym+fXfyXt3l/rZxsox6nLgsdupEKHJXfhggu1qruFqolNJ7bqCz5YF3al4xSt0KLi4KD92TwTiZhp2r8MpHatMa2eCsWL6p2CRias3Ddv1wdGKZh4YjPeDMt1t4oTvaFYA/mjXi+7wvcQgFcDI03atWJoXCZVA43z85RZUYk0TNmWjiwfJ6GOeIm87PvJ7k2ud57KwlrQzStzg1UwQ7LhfhF4vBtHcKP6dvLHUxHzRz89PQ+04Lnlq+1aDQ5dYdTQUShiiHcSZvGujGsz7pW+XtkWhaaeCUnkFGXPh3AF7cQYifAaivAKv200OWb1z++efnjs/O9HXw86rl/xUuGF0McgRnEF1jICAred0YhE2TqlGAnydSy6ejw5NEavAg/oVi5jiCNcr4Y5Jw8mWrbWxjaQ61vEYmus5Gu5Xe6u5TBByukwlEQed8ymPw8ZFrvNHm6JeoFJ3bY6Azr7yPSXJUMoSSVM/ZU4vyfaR533HSps04aSslx2R5Db7SPCiUCTjyHvutGEtT1EEjWTSem3rMqiM31iW2NKN/Exgch4nXhqJ4SWWzxxSfxjZcYQxx7QxfV2gJiTlYCadYohoS4Bu4Vu+/0YqH0yKqdTsYKU+HiFGkDjz7mSXOdJ8/pJ8ft+jzxOyCZy3EMIHW/tPmgIgvb4pt+eCima0UQBvgZkbsbkowq5k3TEvZxVcFVcGElczMC3Rryx4M0nAOBKN8syQTAbhUtaUs/gy7Ja9aTJ49jQXmxSwkBrTbsDUmQYDwjDHop2PTo4SkKYAhwdMSrhrY9DxTZY4+7rVF9KCnigDWsiww8fz242yC9VpUeU3iUeX2eKudsZnhTnEntWKZTzZ0yYs9rJBKOZw5CWMk5Ozsfr2ptsU/uZj88zA6Xvp7vsILJ3j2cq7DEeD6MQw7LyP7HXQKuM0UBdei7hCq1hx9WF+4KmKsKbee2iFxVeJ7KCvs2c8OIx/kuU4xGjj5cNOQ2yEVbjZ8UxEc63f5IR5sS73dJYfE8611nq1CSZYz39se//FlE99UEbINvZqLqcG6x1DcyINTtMGPXCIkmOFWS0RLk7zkxIKYv0UCkTmeWYjln1zVOE6ByxPDo6K1a6DdtjgNYFy4DjaclphNTfWy9NthA8qZso7dV5PirhL0uVVKUKoueJ2aRPgHCln6HS5ifIQmNgzn2aJc9MeziODcjBZyjh78tAdj93RFcZFrser1lnWbCr5547Wk5kj0x6RHk+dyayXntoSI4hfPO2u617bQfSA7GBaOFte/QCTzfKvKS13i+CEdLcAck0eq5YLsgrqWFCOLT/u7gw80u0iEcFfuZR/lAj+/+o6QgIwe9RNzykkG+DORTYsalKVxMfYfcq/fLXI4nckkBmIXUf9TykBjX6GwcuLsXncpYGnrAj07ON26Za+1czWM3E8ysJKL9HvdqNnlivdWXFkiMmTDgsT5noyvk6MmGRZMtWy5Jnt1ftqWI7ylp7i2aZ/cU3KvpEvbuhgNDcYgR9jgtwvM5W3cs5wPpm7jOdH2npXFDizVaLY+pmIaC1kDRs0MAP6zSN0vVOxBebRMKZ+Klb6NrFBNvuGJMjXVOFOy39bsH+4oH+ahxh5liQfKQQPj+mCc09npii0l3LfYyXFgc3A7wGdKt/vjxlmfUoYSLpgJ4rsu5rk2z82DORS5BdFF5OuqLJi/fXqauROLlQQNHLqOLJ42/PMq/2jgYG9YkQP73QQ0x+Rm2435LzRIOVtyrF5MZS9j2rYxDOHzFVgMNPWpIe2wLwJujOOQ6OwnTk3jd90jszV3Mi71ULFssjaNvgvwIR0zdXrnClPeSg3mGT8l5s9W7ryCt59H+mLFiPI55RywaLTvwyLszDYdQGzXHqdLDMWM9e5f9FDO7ix3yYt5//Hi+Q5Ydy106FQLctrLLCZdG7Ykq13vpMqm/2WXIIvQehswsdulizHCXDpOF+zli4XGXEQ2i7+HU2K5oHFgHC+kuJ99Lh6aU3sMQs+J76DWMMBx49H6OGMtZdXu/IYxg7f+ExT6G3Px/OLfcLitMA3bjUmWj9jGO3IEv3u59hXnZ72cgO/QeFg5tg76/SXDNLidMUfY+BoXhYCnZ+yad2kNn4wj7OMj0A+XjUOx7GFzH9tD51Pae91L1/gxyfbXDkEnifnmV53s4ZSMZass9j0ZS99CLA/Slmx/gyD3k+1lx1/Zw+32gAVvtD9J07R5OvJls7xfZS5fTSHsfPlsd+uLmUH7tYcjVKHsYPHncJUdrWwdYezmFLQ7VsGKXE80Y7WEFpb8dTtih3fuG2X55GLrZx1D5HrIcE9mlx8WJQ3l7qCtz2Q5HVrcOBdil03MPcNboyw72rmqXE0+87mNhrH0oyH5GGH/vb2IeHapOZ4eK9NmBmHbp4aLPQ73o6aFu9HRvLu5Sg9X8AynapYtp/F2yrtdlc/Mlb658tcMOW9cH+fyad3PN3eyTT/DPPhH8IFvs7qWf5KsD/KiMtUUPiqOih85GOLHhcpxewyrIXIt+aS7nEOWENfoE67o5Y0/pyz1h7N3FK0GgEMdm9FzK23k5jOPwRJbi+Y03v5uaRQ3eWMd7tBD/74dlBmOhUUhWUXRbTHjBR9Zeap4Jhjn8cZCNU3tIIT5d89KYBi+dyNa52F3Ip2lcjO9hF87Ud8jkmB5GOVm0z9OFrsUYFz5KYO29HrqvVXtLLjZAN6uFbTT8B21AGGTQDAaGHYWGVaCeHiyHilb4dDUSEg8axwVrmAwkOgdHbo0mrqJBnjy7kfkrXkOLLlBgvfCDjBFx7wF7MCYvU9fleEpWd2WgXmm9CriYhMXBVjYvq24pFS8ox8SoRJB66s+6sxYYBLGSHJiw1nzuD6T51/J7qLWaQyD949FRmv637bGCSI+qIIB9WLYyOMy/ZfVaFrLlvPe877aWuRFv3O8fDqWVauEG+r2s+rSwLCLtmtP40rbMCbx6fvXir89wLKoqZnLIdbiuogjm36OZfrlX4CCT2oiDPJXnB3k4F8Ss010eLkU4xMvN+iAPCT3EREIP8ZDQgzzXzw8/UDWHWHL9w11veJgr1z3c+ZaH2XK9w11vepg7uiTj8Cc72ftCd7DWwrvja57c9TVP7viaJ3d8zZO9b3jnA+943sFg6iBLCsFdGXOYK4XgrrQeZo/u+DhcCA5n0Z1hD7BgwuW1oEdxlRTtKSipzf2QXS6Pwi4VXP1oTr0BnLkhhZTcH4pIXCGgzhlOJrLzMbGV6R5DT+FKjl/e1qoyWVpiENYav9Db2XQcitgh0P5QIcRbHBRNn6iyVLncabW5BH5re1HFFVNzdao6F7Y859gtCkSZKIfQrDP5FuPsvzuKDV8pQFYodT6Dai0oslsgZ6/E+gRhYd4jmDxJYtygMiK6Yri7dhZEGEYr3oMFbZgsWKkluLllafHoOp8xcvRH+v1u+ihMrQ6pPKio9BCVHcQoaVCC+JyAknsxpO27o5xtJhM4P5fsItTU5PxmBcfAKcg5yuUf/EcZ3DkcRc7oNM0M1Cs4T8j5E52mfPfiL7zB8Jj8VGEN0gT7kMHe67BgrLqgups/IOGtfb1SUcEYNAmmJOGtQQCNI0tREgs9veriIZF0JFe5+b1ly8+QNbURG3a7Ihf+swF/qQZcrBd5z9F/T46qiXyW/Jig7Kzgu/JAHFT50nKjqmy9kVwc/KZsIOZgzt7/GyRbBtcoDV3f4gkY8Mqeti2QIP5IeMNgWRKbSo0yrRPromjxSGohUvOmgF5Gp0LzGCwyigZV+iWHRNQ3x+ntVzFcu3EuAPb8xNQ5WOGQ73OUk5GhxQ1Dh6mpTO2utW78pT2P+Mhu+4DsnkTjv5SHqi8lZNc6HXID50BKAzPrzPPKJUMJRQ3f2BG2DlKy4xM3I4k0UsDG1GzgcgjMwQp9LUozbuM0AOY3x7B9ysNYw8ITuEGVEW3O8L0cylacdnAR2pvsjUNxHJmq8wciavN8Y7TcWAhkS+t0PZhMPk5bPFHO1yEMthV29Rzjrp2c+pO5ZswfyeCdvPny4TG98jiLEGaYFDpOclC1cDxNME6MB2xI5p+WPA4HekKSQfTohu5GVOdwZsE2F8bUWuaBYyJWBTzlX2RyBAaSE09Ti9lkSBwwggvWy+dvBtMVvGShOismrqTyb1xO425F+8XW+/lB6V+YsYWxYedPbF3JRieExupvx9Cg5HA/hp04zAORy6GDCXPtXwXJVuMuDWRwvFIhqjlJnywzekgI4+7SKnycPelrhAmk0f1oaEzhejrn/u7xbLRD9xXavs16n7F1NEYxwXIOWE4MSjk/3yuA5A5sV8gyznkqMEihcZibRWgLlEhj+WXLsqHoLjA3cMaaycx6sXsVnTDokXy1Qox38z4aSBxHa9XwiaGEouhKM4cqwHjffdec8naqZTt5+xnJdjSiS4rD4G8aXW/aaUYRvSMIK4ZqBPye83F/0JgW20C3WqhPtetMrfbpGDL/SlT29rF+JY3uBBmzcfav5nIzmKg8+b237+pSBLuXPepjjj+FuV2MNv6FfLxlnfFdZP7ilbgyT1n9YDrldSgqF6sHrWuzJGv6BkA0hi2h28tisKslhmVqO8sOCaDF8xYIVclrZ4fEAe4Qf08/+WqDrj56I6+XjeRvqkihD5pKXn1NIauGX7sksEdrC2Tc3izAiOzaZrJFIVdIAPksY2ncu6ASsnjStFoQSju93Vw8rB87VldLFOuS6FrSJEnKSOnN9g7IpS4Bnu6/Ei6O1cg13bLSHGSpuMt91TvyPYOCfWtroN0S4K27xRqXLgn/znZLAsoUlOf0o6Lb6owt/Qy3Kagu1yGhwPbeIelPqBUQ78LAwUC8JQ8Fp9+cPo3yOQw9TNkOI2gKcrABpttuOHd/Ggx+Jjn93mfJuyx5nSUvKcrTbOs2OVntnBIZpKo5w/GkB9HUUbPuwJs+ePOmcQ+qm6LY9DcF/FthYZ0J18hvP8kuFlFdTWF1cb9Iru8UoU+l+N5LO/95H5/bbJBB/O7q1dcnDx80rfb6cdtpRb/Qrq1pd+KJB8v2JnKpy2YPa6yUt/0wIR8Mlev9bKn7e+Lr1EovTWvHL1vibi3YY9wSRzzypG0GFJq3aY27Retdysd+b5sHmctx7uUT78zmvEy92I5Pbifapq7nbShph0rg+OXaZkcQzk6iWMF0HFTl+Y4YtWhjISHE+7Ijeir5IEpd7gG1EwbYCZFp0p/hN9xuEMy+PCZiGGqyEfQJE4K5MYwl2nSQiQPHLE6CB8r1nOdR/Vwu+GeryYnBqbF5UksXxXorHiXIiLTXDAyBJ3pu58kz+jXVnDeEyVc9Ileux5rzNhxgaWrA+9yLNcelsokkdZ7MS5WtKlXP6OVa42aPUBRnfzzN6Zl6jgc1t6ddp+h9+gpgdPKZuQX50bWcAj6h6J99w8mk1D0iBL/qG3KrR0BPH53OcZ0QcU9OQjoezpP0N/OkvVbe2IBHCARL1XbWrhW1+ZTIDqZjvlP1wnUqgfEC7u54l5mGJrUigIlvDuSgQbrQMN1tW4ctXc6wemWL7SBbTZs3nD4DaceukkyzZNwUdGzvEMQeGCaYnyOKTn0kH0plOFyHMd6IE/ZXhbPnGWhR8YyDjxeWjIRry9t7OFSVFkNgOSt2WAwRjcUu6pungNyev6KUs68UpQBHn1jBzdRcMag3zOMNg6iERsvkojABfmcp3vRSNQ0MLVBVAghxKpRelCPKmaxtCLy1JTwrsyLAMlNgV/TLzfrjlCCNx1rtbgilKk7EaZA0q27gC/vGtoIE6JZA+HKvksquZp/iG4lEoOpLIJK+EKYcnuGlbC6IqgOSA5FGZ4jgzCcI+nmn4wez19CbGqPibcP0lIXybUuokcqvwqPGZXBg8wAfA66IzlmW3JWit/nEn2SkihkJtJG6D5TzFIiQVh3wmL8I1hcuBgcm+SyIQMlnNcpnFfNZhXxWIZtCmHJ4lpeyuSCqDkjOiOSzGvJZDfk8fjB7s2U9U8NIOOK5ZvzDT7EsfQiJA8aPAybPE0zyJ8qpKKeiXKSZehqIgqorZGxt6vXp9IKSeUJvkKk+W95OFU+qCKLBx5gbKJ/hDB5RCI6S9OVEDwaI6mytgVSKXHpkY68JsumUNSEEBOmUIOjqEGfvANwvLQDlk1jx4ChqC2hq5mgGQ0GQ8rGBDtgZo/RAgNJUgEEVVh7iNJDh+KknL0Zk8WWNsxmQheqdk1eahlKYqKrJ54xhZjRnxNSCSN60IN2o3DESoGlbC6QoLUMsHNVApH8HJlXLMz0mPXlgkzvvu9LDTrcBXQ4kRq9bBbCeM6AvA4P7FjHbxVwwrJcwpbAsYpyztTyGoTNwK3YLuLGAxfIVXoM/A9xfagbQMekrQvjeciB1B2UOJEybeV8Cy7QBkOoERKsVASmbJmS/8SkF9PU0NB5GEotnGMnHpSQboFMAnAELee0QI067xWyPuR4zfchzvI+pCwLh0qgQocflbiA8U1OJszVQJVAspTP2c8Ak2UD6NocI5vZSIXTbMpoN6ByvBkxOEQ7vKin1GL2Mx/oamITslEdl0QQfsFUAfiwpkQGTyDwWRo2hlMeaowRbCPYYvq4t/xC/3ll8OWChtZGqDijq3KfyHQBCs3gS8FwDF907ETt5SPCISFhVCcMIDNZubmc8VJ2t+Zgh+eQ4JNaDicAjPs8YTJAsWns9k7jiWG4cLGHJmax/ysoK7NWWhplF0W0Hz3rtlloHekwiJqEyQwbHYaruT6jMsIYSDFkMpvhMXdgZtcDCp+R/x4pld4prl6lGQ0RGr3E5yIUXoXeXx87kkg0xsBFjsTh/6pMubyumbrffUgbL/Myk74pvSl1vZziilxwXox/cDodRdliwpEByW5CkLuZWII/zcPwE0LO+VBROttNmScz8XZaYM7TxXqhwvw++yxCua/EcbvbDaP6A5Xkhb99/s51Pjcm6vtU7H4QomLFEnwQbvBqLTJz8JhvIMZbNQIIfer/tBEGMqyRCdLt3RiJZ0ZrKLltiO8xH8P3XU26/olhnSTAer3Mk3H9x3Ei5eShyN/+tXPAZv8AuY6nczOQzaV9AgBoEytJOKpC9iVx+hJIQ8ykQI0GqS/RuZ2syu3h6Obv8/uL162cvr8j79GLTa3BmL174+bs3Pz57B42PWbLnQgPJh6koWCI3puGyziHY4+kM0/C4pyR2fjGZ+r/8GPCD+yn5sPrJj78+GGAYLwrW6gqYjBwZk1CCUe4wRknjZoVSp9rudHbmKxPS0qlWtgI/ZMufkt7pWQ3fLFt+WLQ/gQgpGgvt0HGJjys+uGL+E9QM2VeZGoSYSBWTpkKCgK3oouPEwCngKDigBU/wB5IA+l0xNAiNP+8Rv0AFGOmRFVFzBUg/QFEEgbQi58oYAXCVkicyLgDP92FBFHAFED9PfPH4cWIGxE/jMwJIsAhoMcMdtFuy0jJ5jkZM84oPCf+9xrRkPi6L3R8eTk5O/3BXXCv9GdH87cHk//Sv3nyQVwcirw4Erw5EXh0IXh2IhFIfViEcUAkpqIQFKqEZlfCCSgwxfAwdw8aQMdwQygTMhPAmhDchvAnhTQgfWUoFHjBhAotzPi8Y0FYHTNITAwkaZnZCZOzx9K+wAlSprLXn/w9tX97WuK39r3/bV+G70DvTkjS2s8EFep3EAZfETu2EpfP0+gkQmAxLUgJTOr/trf8+50iKomAGvhsPkY7OIm/adXTOycnJ7unp6arTPLmrxGQHZHws9W3AB8HZS4JmXeUl4U6UHUZxHsXZMA/SNDgVbJG7m6RQhco7GQKwDHogjE9ob07uYpVO+E/8+HA7J5TBZEcnVhbBYHgiBkkWWWhkuh91gWPX/e8WP/yS94MT7z3Z5oJfWoeTkkjmjqV2fs4mUsGxhrL5NZNF2ag0T/CWcSfQ1hZunZwNOp3jo2PhVQ3segZevdmj5AReY8I8HXpbB8ciDY5F1Opran/UC2x+YGyWQHNYiOvD5OfBEeFFMFr9EiJIhxGimIIho3oSPIj2D0JAWT6Kk6GQK5ilPdZ6QGclFzj74TDoBMMgH54OQtx82oqyvJ30+2E8FBXiewcVoxyDzjE3JCXn7I/Snk6+dzZUPq1oeJxGwzDNO2E3GPXoTtppyNmo0pJHHU6pOMt7CEgwO4i6wzzF7Q5FOxmcMmSRNGbfQvfC7tseqz0Ks4MwJOFABojWy66FiMIQcC8Berc8RNcznWdY4s4AXWfU3iPMOJRObsuAeC/7kUFpeYxBtoaBkl+eZrSOTTNkAhkNQMtPjTxRM7VKmfF6El8RKAoyBHolXvtFY3Nm2oDD4CizHqUdpekoo1LQj2IAsdTjAsSPkYmzTOYvLyCvYGeRJaO4kw2CdojimkUoHoM0BE8rW3k+DROgnd0SrB8LIA8mxze8XWG2m1HnBsNeplbcsyEGQP08jNtJJ0xRiiJcH99rlAE+CnpRJ49H/RZISXc5/nq7bDvo9VpB+5BeSNiLBllkP2qcpClQ7Qx5xfuZOA0zkfeTzqgHIOtk4uoCFtXLd/QoaDHarSBWyJt15NSAK2trSLBlFE8n56wdA8CsiGU8zZ6DjWAa+mkcr3Rlel2LgauJJaCOSQHF+2R3dIUrXfAyc3wHCf29lH+Ha01+vGFYqmITxF4qpgDMc+RTfWcM6T05TjD7MlsApjiY0qAdhq5ctGwqTqYWP7L180bAsLVWhvgOAWg9cUB/2zV34xvQM3IEbhxsb/S3N+xPn/SiZJCiXCSpuLqcl/bYDuEOlU8Un07UDoagvFrSNA4j+XX2TihJ/bCfpKc5imKCTKMk/hpzFoaHX6Mn+/uKjPpNYfAzwqzbidJ/ZhlCMewPKMrigGMmGQaE/WcYNN6MCihMBnSlOkCjUg+vKrtAOOqPj02RGz2chIb2lDIUSBI8aVwqCeW8Ruvs6HYaHUGKFj/HBaJ4n5rtg6STD6hPo/cSdtAttEMvD7N2MAiJEIAnfMNnGMXZaDBI0iHyaCfxMIhiiMVhNDxA/Ob2gj4+7LugTHTeItbCFz3M6YBVPkySPOvjG1P5WslDiRV/TP6Qy8wwETwIA2LmuWxpTy7VlOUwPLe7vC69Gt02creXBf1BT6ME+5vKOaPyfyWfAofApE30P5PzfzlTY9oXfteozf8FQcxhj8N9hNgCnM0HIpPRNf4Gg9lsBkw3GSFPMSbMgEnJgPtNxHoiCqidxUk2ZBT+ICnBbAkmCKdTCkP8rPFiFvZszH7Da+ZtxtqtE+Mun/CXyAtNZ/gDbP5UKhFjDi8vGUYi4btO6IGTIaJEHITDlLkH4MPjIQQbx08Jh0gxkiMO6ZHmSUIvjEL6TQHR5RAijhOBkW8w6kSJPcrNYonU6ylfH7DJWhHF3YStpJaU6noJx0ngloX/qGFnfVhscMsRDRO54WHXa0na/jFr41GnM/UXiywzMJ4cCBnENP8HwAH9RvgNgc0Q47fSLZoEwaMOvjtaKxr1RjG3WRjgdkdxm8E3NzO/9AZopcJuN8fIqh1lJJxh4nMUIaY5AuIFmy/Ak8MdljIgxgryj3eb5GXrnrf5+0G6zzKwBcBxNmohtkpcdJSgiUrDWBxm/UGGluow5EfJg1in4vZB3LNI6b5O/hqmSafV1UmacqQKlu2Xxg/D/VCnuDrqxCEVQs1mYLqQzijG7WtuNNkajlbgUTyMegqGi7OwZ917pFK4OXQtOtteFkZdc40lnKXBMNTXMzAJaPD4IOppOOmYOw5jnQiq+g6C1TJjYIClB9sK8eOdPtz1wErmOPvFLjc+Kru9m/po/Q07kGU3bQ6yKTFkbEX/17NEheiLjAKcYqGtz+tcwgAMcpyPGWaAGpW+PZM66oug1xr11xsvaHPhHNaog7HEMq/D/JBhCUS2zKBtp8NsHXPUD/Fbx6Zo2JI0PEENAMmaWTPCbpaKkGEnCo64DhZQU3Twx2GvV0D69fQkLMInh1EBFhfpJftR+wUyJs8YGiL9wg3ydKyAmEWog0EBIeoXYU+DfnBQREAvVC9G+8VorxjtFqDjfobu+MQi6HJS9KL2FbaPSfGMfMk7Mo0353RQjmdXOM2JhReFduvXZwsHF1Fpr2qnfc9O481YnPSMClGt2AiWZYSrEE1eBlLXNfBI2VtwJJ1Q2TpixXMaRDXW9p4Ggi1fgPGqRVn6XmGWTLAzMBj9OI/67lcey2CKh67UDCZdhX3D6HYUYzSfhUGrF2ohduopJ2eCfO6KXjsPEPXHT7wTQfMGDMh5BSgfhKme/391H6NQwGxuuL+9ganyMtOTIkYnREZvTuuJT8i2AOkVIX0baRX91q9HXPyHwLePghhRb8DRegVJQyB3yz2zZHyo14wJPBgeCjQcweDw9TFJcigK9uJKe+yWyYzY7BwgVdhM6ts/XOlUDjlhINWtKLSBrpnDzveXEUZbYYoSdSjQ9HuH7MZYrqUcWvo8nOJXod8EQdc/U5/1s8gQqIH8z4L2gKaId8uAI3ESCS8fRMJFACj7JR0CoNeHKEwiTLRXnibihIEIPc2nCq0h/ZAKbaBrEtTM4CY4euEPTxzuOz22YULJIGuvI2n4TfsxeBabIlrJ8EA8rVajXhjvA3degDtblPagRUClH/usT87OKvGTncQSN3+hQYDE6/VeTtjaaTvvRxk+aftgbSl2sJ8mo0E+TEfo8sMQ9DYma0G8L7DUYfHS84lhsK+81fagNpxN5myuqFuAGx53sabfFXyET2+R8IFAVHTyYGr0wMPEZntGxNzEvu2k18KKTtvPswFGlSLpdkUaIQgo6K79iUHQFW38TOHtmneOk0TqpcM+VzdMeT3h7XMJswbBX+qg1TvkBAyCY03rMqcNav7cXUYfH4V2Hxz3IoUS9A0w1JTHheNd5D8KHWuziSlSW9ycr45p3wjMLDyBqU4yvmBJszAoU5zmIU0P40udWLX42x9aT/pp5C46FNB0Oc5CfdbVMsPslBY1pxv0QC7YuhFZ0h0yMKc3xpv6NFnNYT8H29t3v5FSAs/6eLIq4vAY07NQHCR9O78gHuphaFhcMZDocIWgF3WN49ulBdtdNs6RmbJgs8WFNPbggfVV20+wOttJDcGaT2RHy+nP8oP1XaSyhsMoiLz8iXj9RNy+1DHvpwE68JD0S1+i2d3rD85Xu2Qtg2XB3ttLhZGXxcOeT5wMUUCi1lvyw/6ZIgfg51Uj0evidnJeG6WM0xizzG0nPMHlItr2Qv/OJAzyPQ7dSvis286GHQtHs5X2UdYRZ/dzKmZYA8mPsW4oFq6VXJWh4so7NBa228dc9Bjz+QwETHMQvvqYQY8K5CnjMDtB69ApLrej+FWWoMVrr4V7o61TzK8hvB+vMQywMwMULXqKy964bRF7qZ3OkjgAqs3PXreJvOSbJj3UMEw1sLrSFvAC/YbeqZdkyPk0foE3C3HJA7qIrLbMal94lBPr2q0fFCBPwpaF4elP1lrLLoiTAX2aYRrYlAHS/49uUg/QA4K9qoF9bwVfMbA9TuuhaORpB3g0JqWL1u6HCirg6h/UzPTBerbld9Fa8a+HlN7SJUAvfbXQ5w21H5xv22abcgC87HSJyi2HW/+2pJf4lPdxMPWi1rJ+tewnP4ho547W1FuGp9IS6Xet5UmOQEJTA/oGLI8NfWzoGoT8WNMN6GuQ5Jd0A/oW1iCDV4uSXvx8c8NWLGF3K5rlbRsNhh3q2h6dLisHwfpcfisgX+KgkOvrKU52A2JNc+CndypxhVjrTWuUhM0OXGAUgTV8MWH4Xyygzeih3VVuaqFieVH+tq/UoojnBhBKtHaJcWf0V37CibPfP3/6mPx8NPhJ/PTTT/o4319+EjtkWOphT+y0F8aYymJP6Jyp93vAucCdH9cZ9Ll2FGjjo5yui6ySOalIFmdjiDvSVFG2dNNxD9yPRUgbt7AYLSQNaq4YUo/IwkfSOlLh7RjiztlsRtadZN7ZR4wuetisw84yMECspQ0MbpUwV1C+Nel98IUgT8OU4lv4ColsGfDlzP2cF7NaHCzyNW5DZFHWnG2xVB8DqMspUkxaT3YZLMqRORW5VAL3MluH5Gm3evevGxd/3RPKO9Eu6UWWyO0eJ2zHoUL73gRUggPKXSHHbbvYMecIigEILdehgk8CIsb+2P0DrfOS8PnsBkcQFxokSG+fsB0K5DjDNGMxZlh78tUYEpOx5XJU4Khxid3LYRMOyTuMg2+Y+WwCGIeIrjmFrMhqCeAKDssgAntJmiJDovTDBsKVHWR5ZGcC4LnnVSEXuMXS351QPQ4KLRiXSU7pO8qnwK86PhXahfOusHwsilUXjTgUQWrhD2poLZ6PxEXREFzsyPJhvndBIdBsNurxYl6SJ4PI9SP0uSXOJMywXiUkhKVOhSqxLSGiGQ9+QloqWb5ihrlPF3u7Yhd3sksO8Iy1HVYvpXbcCXlyS0V8ZxN98qazh39Eu/j9BV9uz/n73x2Wdt7hg5FNWT6QOWb599vLrBzPWU6Ud97C767y06zEWDfSnhaEPgBrDGABiSpwgYfQbkC2td9G/jjlb75xHN4fI60EKtGGjotJi0vfMOzQASSb5YYOvymd6xusICAv/K0yfvvNN+QeljYgodACxMZCriLQ0Rs+/crWUPQp3KfSjGznobBJfUrwsW27KaQcOHjRR9TLjhM9sORiwvdO9rYWU5p1sZkOyNEJE7wDbTAWL4WLuHltmw7Uw0rS36mzYRFWkN9QsKBGHFVFXhxpNvNTblxtOtcG5GZDpb5VnGQ2TD/SQpo0pGc+o55Y70ZSaQLPBOxKXVXMVJwrZ1Ww8ZFvTLfJT1zNN+ZgVp2bK0tq28YMHTWI/NZZH16/701c/GrKXn8LeJ13f9JQs/L+ZZlSabVFMTtrD1B7VBSHSJDCtBbFBCK3zstsZSfTbCW76UpeEuFhzDlKwybk7KJkLLDhpBZVAB4/2x/C8spqLDIzo3YjCUQHPNvPzSehYUK5Xq02so20HYij5Bg7aMUceF67u9AzCtUCw8DU7A91xpyYZH7KoB4rsU0uTKnd1l4tCWxtNMr+pVMuy3ioIhX3twWclz5wvd3GgxTQt7f/Pb27zdkq9L+3KT0M4oNtczl2xXVx+cDGyzcJIU/7LYDwy+6lU3JkfPDl/ZukAJeAMPx2VYTcpZLDk15Qa8NFVHOCMi+kLJwPGxe/KXJbm/1cTMYYBrMuBIoOBsQsQlbMtl9UU5YOp1wArPYGRZn8d6osWziN9dQU4eVDk92DTe6bPDpvisnDLfAc4Df52JQnddBfETswzXVf4KyCwyDZRGoWb3V2g2wol3ybZGGi8IaDNl+Q7qHaRIRQPNxWCagivJlfusWCRykI9TKCSrnu1+vuVgPbevVGren6Vb/SFO3yaNgtNTFagsv+KQ/atRc7bt/QtskaI9kwltvTVtHlItgPjl4LIxpbzPu+KfBGoUSUtLFKMaT33DSq6veTK1zElXb4sBtUgNwBPxZuterXB6xB/laG3xLK6fzyCrsy+C58Sg/NpPM95w4Si6QIsXXmbGgs1Wu+VUbxUU4+s3fe4GEEor//qyFcryFOpvOP5eT+imzkHvGRPMct+2XwjXFTe2hI6XY5gWdpUEGpQ7gunw27kLKXIyaTAKXWqIupBsyuHZ8imt2RcUDpNtzZYQ4c94et+pphXdflJxpqY9WtbXn1ml9rbjW2fM9vVutWGWDdoy6pbwRdvy7ccrXq1bdqlWoFRWir7lcrDaC9csNtek36VWtblWrN82u+nVGnyxvjqjq4da4PiL5a2jXdMhm2AAclXmC4ssnFNQEElC5yX3eHgoBWnpZSd3eBvt1x1beYzFASKF9SqOPleXyUIuyOwyJW0azYRdNGsgCuH8WmcLuoBMDyUXIqJqUqyXKScq6ja1CTlv8F8y2bYziW2Rw/bmLCszkfX24uPj9t3qGd24Sdk83p/fn4dvOPenUT/BzUBJ6/hnJWkzf6OMcgEhdQABcrkMpVv+ptoTVwtyq+V8P3bNRr4pboXq0GG4R/wFgcjr9pxLvC0oUnMXhtvStn4L2WZJ8r7I2FPK++W7y3OkI2ZOicgWJsuy0gp0c7rF+smxZcEOMhKehUaA3MrckNPK9cs17zHh5zvVUBhl4SmeTxEOEufq9y2QRqxj+EmOth3QapT7dVqIMyN45q386vq6yzjehTVdx+PkcjCiJ+k6o4q4pBlFfFde5XEeEDgFQVQRWfgXJoQgINMaIHZElRyBG+27NawVFOvUT+iF4eHLIeAeCajvj+EsExfkbpGIm0i6BS9t2mX9lqNuuIG1uVesOt0S3cVvlxADI0v70kWEYTAil+aBL0cMsRbpdFlAyzqRjBPJSEpqYzgcMzjkIO0fMYEt4CYzlpmBBXPQ/h0nrbk1+1F2CHXrW4Z14n9LNnKKwWAzNpeh5fB6BfdV2KXQlwI+9WZSuPmO3yyXhKMZp9jhdu/Ywi30PEt+65AI6x93NlhntqL4lXvZYu9f65LMIe+an/qhCm9xj3rEvYRvimc/Zwt+RRS1wAH2Dg+A51gypUdb0GAEN1c/yImrNDKdP6UT3LJ0/cjNmIHZK6pMmer10biY+fFz6QPMryV0xTsesQn6uWL83+wdyZ9nsk/qLnLoiduYs5mLdJDweSrHa+8oSkDRIBUDHXQF/WQF9VP19MltfGnBmHb+kU1vTCh9f9M//ZJjiO3IWpjcYgKsnaPmqpL5aHoc/mC3pV/hpqhzBuudaoNNAZevXGVrW5RSMkz86zN8KeqtQBe65Ruo7Vmh/PCf2MUd3JmeM2HK8CGOVVjkJrLhIeghXdBV9+y/45PiBCgsH0xfviibunB5zV9AR70kXMzoHoPX32xMfpDUrgg6c9SmkHUvSFPfqOCFEwz6YEsMNDRLNb9pnqKY+eAMhKJo6iPN57a4UBiE9QrKL4izJ0wb7jELOxlzkALi4ejHjiN8Hcx1OqNRmavQg9i8fOq0SInywmHldJxNpRj3ZkD+iKI/Lzp2/PQ8WmgTeuQu+G+jUXaQY8LliIuGAhnyv2Ugf0OW9p41a8T55po28xZcinZKdDlUF6qwjIvtHncwBky44W8vGWJ7/DIRIA7g0p68fpBWJ0nTi9QwB+XEUWF96K4wFPWW7FpfFbWvvyqIfxBOnZuCr2RC+G5G3ohUB0vEJdCw+F20O30GjW/K2mW/f9rUa1Sl1E3VM9IcfEU9/y3SqGd5VabWurWgMP0apV/kK+V2zTFcMS7qhAf6UrA4fsynz6JAgm+FkbL3p/Ze2MJR1T0DBtqcdcP98oi196qtRwVmT1LAQgL78oGAMYtHiACqYujDamfDlJq2/LoT4nGB3efvEQzji4pZCCCQEUNwmoIqBuj3ncKtOZgfBIclqHwOuoKoF78sZEq/WOsgrJkw+fmgrPxc9uTY4i/FzvpUmfTRikSZZgi9utgzBx16jsqgMInMpoE80r+xWv1qxVtjyUGswI6s1qBcWVa7k9fptgSxM4lxp9lAFYtt1DzLM2vG2thUJfyCtWr7NZXjsLY3HbfSFjaLjOw3QX0wPuWsl2Ls2Y1tS3nBJQ3PW5aHKo/XxwxUcsqZLBSL6HXOZDzabLzaa73hC6qt1j8u8umjvkRd+whBUsFwXEVa7oVMviqhbDFYXupAE7ZM5zuUcoujdjhJMz1/5ag0EeDUf5fk5KyW5B9+eihXCpXLnSwhCqpY/QKuguj5E8V46REPOYyCNelwU4cimchx6jOHRVhMDlPzPGo0WtRf50T161Kq64hMWWd1gpxvCGZw7lGpDcdErVL1c8m/fz3GkVX7Hx1oDJKocljD0qVAh/cIXcinD+5pL5G4ft3zhs/0bqael1N5Y1R0jgO8NV/eG2dmOhcx9rLxjPsvzHwuFFNStrLSfvyF2uOaqdR7kW/s91LtmSnigb+V/3PgLPIs4x+RF8XBhr+XwLSG7SlIoF1bxquuCp1X/iGv+pi3zG10Z099FRJ5+poUVpxjonPGl1eczAdtoZfUY19+oCWoDyIHHJ4G5WcNqcKleKypqHmooYTz9dXz4c0t73bA4tV8IAkR0CNLoS4l288c77Pov6nTz7Vcfv3+/ucmsf70mOr9HlRoA+gY5TSHKxXfnJYw2P5Z5cRci1Ki6PK2sOe6C4Zdej6Zxbb1S2ajXXqzX8LUJX0XG4fq3u+Q0flApmmRXR7pQ6gbNW9tZLm1va2uKi1Kis9wrUKQx/qT/DH0tCtSKacgXrgf1b4GENDHwdDJUyxskuZp9N123Wa9VGzasCDYPMDqKYx6euJ9/TOR6RsMXrNx7Y75mDuQFL0Rc1mdqpW8HICMEr66fMUbz+5b50N2sEaX55bfVLYxE59TKAjY2WdFR01ZrBaUPFrfCvhidqVCq0NoeQ2jp+tAo/Jye5IQMtR+2q8J/43/+7jIJyBZc4MwBfd5EEhj367SLYpWCHgr8whN/GXwZZKbiYnU1KHpI8mSAA44mF9CNTQrnTFAKaFfOHJM0jzz9UWNeT0t99R9njd/mAWr+A13TLuQRX+pUm8ZZ7Ne3myy6llbXm+4rdDcwWuviaXRw0Oevc11fj+ZsYp+xW84150trhS6wLWsTaA3Chgc8casMbdJqzLM225cpuG53U1fCCmTH6MAlzBpRllwbjLmdmWPPsCni3Ob9bzpxfqOR6mGG/TNlCW5WTNt6wzEcCyB2duqLjOaQZPE7NZQiVJ3YdxSk6RFrak30fI9jKXZlDKhHv3sFA/cX37ytshEYSV7hhWJxjmrMvbYIxZtXiXmnP0F55LWxgC/NJ9ZjMzsrJfPJ6ckfmzhakDsP6yR+mWLus/sZcKzRG+zTek6R33Nfg5fBw5cMZKC4p4q6hfyP8ey1xUyxx86KEnVlB/sC4WuJNd/X2jG6eS9y8XcJ+vLdn9HJnBxLsSGEST80lPqlEfX8vY7P5xmkz/xI3fk7bPKU9ks3ZHB3vWzO1eG+ESah2MuYWl6E/phcopAxikxiV62ubMPL2nuSSS4OKOicYDcPxEhhzZFbVOckjV9w2Ru+Msu+Tb0LbhwNFr66voHAzHzSMV32/8vr13d8v4fHnK8D6vjRo3cMPrkJ+8vCxWphT8qEIJe+p2OX4pQ2BkrN4Lxnm2LFH9Z3BweUu0m9vC5n7TjdWuyYv2SQAY+XOm3rPuAzWaqcYI8196tU9ibNNcNAeEeNR4M5xmUUZLSgaGNoTlPjHhVoWMKji5QhtV4lPpCIJHPTctTEGzC/fnAFpNx/mUZa2bTEu6/S4qFbO//7fjmzseeiZV19n8V9n8STLDa7pvc7tvs5SkSzvni+yfOc03msijGhZOKtM/YXS9CGNHU5mBt4uCQZjystzLoMdywhubRYLB5DyJupgNW9OO3rADI6wo2UjkvZqeuPScehHS4GY5XxbEdkl9DosW1Sy1ix+hG8P0dUOx4z3IfSLWm9X9p2ihZsgm1tOo1Z17tWIsuykk9LZ4xTDQHYucuV6PimaoiO8gQyGg18cvXdZKTvxTG01lDHP5IgVZmeAlCM21GE+YsqKeJvYmTPaLzy7XuHDAS3mKjut51wLeuCycmgF74otvMRr9mu4zQotXCxI7+JsSSiz/4Ephshy/1Mqu1xM2YurIstF5Bc5zGYjq46BW/m5Y+2gGY3d8J3xoeRYS66jPBArv+k/J8gD7+jLtTQese18GV/ztNWSl+7bDff4rdzm3WH7Tr5hDlnrhx2SA03tDK2EGP5t/gxwolyIp4q2JCT8ddvyW7S1gwm6FyZHdy9T7Vz5i9Dm1J2TdbF7kQ5H2KeIEoeUC8/XmJWN24+8NvanPD03ZcFWmsAmbJDRumF3TZhlSVU4J3Mdq1LtIC0SwNVa+oH1/SmBg1F8WCQBMmZnupjSWNJh12P09Yn4j8vbB+cfyt88KRtKxzFWBsFIfSqtEioLn10TXmNpwpCj8yM2/rOjJesCe/KsLOvoPZXprECUzBa+Xcaqw9Y9Te7kd1rjhisTzLkumEJFwVwBfFw5OJ81qT8+Eg7tzB3J4XyrZpKuTMrkjkx76f9TyfKupJ6+lL8dSLXNPx00b/JMC+dnPaS+aNeqJVwCaAWUmFdq8/P3gIbZtGQ22S4bHc5yoZB0yOrZayK/Q9od4OyS5fiGeZGbn43sShPbLRKstwqBq0fYJi4LNFYr1yUdDXXhGK+cZ8nsfhZFGmaAtR2CEkZzS7FtUxDwAm7HV+yJ1zlmFdeF006d0h7CXpfe0/+n7d3b2jiWflH+Nc9zvkOTbG1EliQDdhy/SuwczMVmBwMLYcdZ61kvR2hGeF6EpKWRHMi5fPZTv/51qaY1GgPJu/0YmKmq7unp6Ut1XTX5M2NlWx1mPoqmGsPTYlaac6yV61y0XbOJfGHrYRik3soXL979ItuVb/LIW4BJ4Q95Ot8ACrZh+dIvgUSW0kN3tDJm+egrKqnryyl7Niktksjsngm5YzutmvLD5MabVE9hHwywUVco4R1y4uRrsoGkEzvwv4ywjyv7/V8o+/wvlN1eKLszxXFpanlNuw6J/9R4oJy5NyqCWX1vCfsEDP1RmGCab/T+QtgcH17IPnbVMOGOOtGizh+tpALGXuSeUhRUiVFy9wsWpCw303Lk2fYzwYu25iJuqabMvBUZNxaqCV2H/lopJ2IJhEnA5TKT2uJcpjZ9f02zSaImlwFHPdgFY7XXN8B9GOdhWXk1wxSmMtUQXrDnD0FrTtPAqZfSTeEBOzAGT+WI5MhgBjh4n/24eZbaFp+CGtEkE4I4y1zDvTEWI9rc483cSICCcNYgft0M1qbivwvkd4Ytb83SKgcfnAhrwzPeYLpD3TXJGoSS1tQP1Vi+SIwpM36eF1+fCOu6/jBSpHKrJMV7GCm2x/trvZ/07ODhtHELENbhgaQQnn+N9Kk0+GncEmParEzl8YX3ZTKJcmE1ys1WmcQWlqE8lPbjX2QXGYmwwA+YdStTzeeh7BvRpz+YGJqEJcSIkmGvVUVm3KrGx19viTh/3cHEPZFtb7FI2/hDrQK5WkNKCSPDwiAL3k3g/HpqTX8PMXRcqrf+Q3knrEEVBekGTb4K7yGF/cr1lFuWZ7WSGbglXQWVGcRBvjz1bXJDwKuOH0yl3x2UC4HHsl4u4z8d2pmX2PKgKqPtqIS3VgSCNiGhP3ted58q5lVZOiXL+z6PTGHJEZ4w6yleD9PqRUFu1rTUN+Omt0jAwMCNWB/9OzpiP7Yc5H+PLzWVU0k2eHw5Mbmafn58MblI/0gfXw6hxB9diskU/7sbaaSDccx5ews1ge1cjiZ+bg4Y14izDIBuHzNAOn3skOhsZbcotAG/A8l2i9aA4UgAvxhghoX9lm7WetKhPIdngZaF+Qgz+SAbFn0SYSmAFbfbIznG7bWY9WEK81CSzPy0tlg0ZD3pDFkuA+S9ZaKtWXB/PEXf2okOFCcywfpiIYlKlcO1k1SMPzrouPpAnBnp2Kpn5o2oQLQQleZxEL1l+j7pXUgjcSV7zFAlZ4e6dKa73mezLd9B2XoAlDxaY7BI2tkO48cOq0bpVyIdOgw7IEXl61KrZoRiiXprwoNklOZFOUExm71WZ2XnEQQfW0Et16MqfSvZObJBIh4+Vn81exYvvPjtkdZS88tet2jh2ZqnbUXCCnIOzNav3LGwFATbd7PGl48xnJTlItT9P56e7M399MYExAzqUvbqfXeAauSzIt1FVV2gXD/d3/llfVm/rMOQMmCqmZESVUn0BiJ7SKmqB1LZAzvC8xvVV/hFHwLBWMaqBnoQxtz9pNWdVVHUWvP4suU3ss8al6ER86NO4Kpkk2WSibmEJaGvbdsdykYjc3WYkoeDHJA2GmWpNJVrAvdyxDRRHpQldZwq1ReflFIkUUk+pdjaZXnklsvDeET/+Wv0Li5QEo4TcX/PYAOldOB+kYTRVrF/RvE1jp/B3DgeIBhDHnx7hY4skQPIAzQsQoHmRGO58DNiaYUmXfdqE3vxM7w7Oz9orcpsmA0w5rAPt1rprWwvqOyP699dUMG7DJL4a0omwXWTIKsisBpu7qviXopr2brcNf9U0GTDP+JKuouVdH+/j4BPwR+jKT/F9GalN63GZV/Bdatx7L3qSquRtRyyJHx1eNM2898Rny5ZfSJ8Qn8G6WkBjjGi4UdkVCAYQWAgGsXSHG756hOQYDBhT50NoDAxZRuNGKXcbIrj3J2358rBHyHihAqefRM7CNl++FFCDgbtTJDKDtIp5eYMKRGOReBcUC6ayCgYOqo3COKr1w6mPeyOHgyFQy/fR2A1SO2gsKFWVVeJtHt/rfxW5Qrvp+qY+sMUL+joSDWiDJX1k0ki/fFZMg7NK/BRzQpF8ql8x4ft5w7vK6RSdgb+Gs2apNqs8NE4DvrzBlzN5ONTtqjl7WNywVIEWObR4EuB5IjGGsbBIpE46y2IAjKL90BZLv6KBFzZ40ghbVyntLmH7QwVpNPZmIylSChp34xVm4JcCiuINR2QiSeC2ix8JWuZUJ95WTll54KXaiiZnk0wcwZ3LI/PggJWfUnbVmaWx9k41VImVNXt4oBi09Isi7n+cq14rn4VbCKxqspEbzHNw9VZ1cVsvyQHwrZj3ZJ5IMfBqBsx/gWG+k23H53tIqFQjB1ay8LBMEWVEvaZy513/Xdd9PC9pSAGenwhCSP7+FKQApVLPeyQL8WFcg9uJjJtm17DrpFC+kxIhIeaQg8m/XLKhS1LxaAXRzPj7WBt3OUtmJOqUWNhUUmFuOUYqybij+a4GSBDyh8GNyMNm046lpk5ixR0OYMcIKqkLLzbv8XmpPwvUIBXit4oMTUyqjkiOeXytfRs79czrzoyRVLWdzi7cG1Fh3Pziypp2+guz1WOcHlVrD2VFeTKOQaW+TK9GwndUtrLIrPqe1iyuBmNDc7hEsQxETsfz0qIQr/5OOQkMIUZRyAi8JaLrkONvF6oQUJBx1Sl06JRldpHePmFOCXL9IUzmx1YlPP3E8jOJRHY6qkyfiEHD9FRoG2rxUsFFSSCXiAnR6BLH3Ohng1HeS9333mAek0VSmS3wtpGcRasXef3bjGxuN2K6lKsDEZYisoS+uLT5qYdGIRdXZ6Rq46N4GkFdRSLqyFV7o8rnEGXKRWauO2h/0cScE4s8/s4RNdrfdgV57IUvIWukroJSo5yeQ5KLD3L90UQGcaPdpj4uoM6uCB1KEzK++pYUWtt99FmHt/ndHtyFlPrkKSSGGN2GV9jgaj6FxSromaaP/jyaqfmbf1kXQycD2WvsR2dCs7IDdlpP/geWVxOdn2JNi8QD/0wisvJ+xYLeqsqzVTFyAMMuyaniUx4LXwIwWyhjAb5EDmDKudv0es+bwJrZ0e5E3zy0RADZFmhbPiwMjYSz6j+fhoOTvzkzIVVZrvkNjKF0tHm5eMccjJ2xDsdozRdVxdARsO74gBEKQpxMTQmo7sgWnnjY/G1XbgNsfnmvdNjyQM2hIev3uhqCK/PCntK7s+YYUVrShmRshde0fEmch+1is5SmKguqWviEQ+vbleUE9KRh09P3OjSp2Mf0LtnPEFmAZAs2VtN8juKmUTd7kWdwONq22fUCKJplVYXS4QvWcNsgmxD4ilPuPbIpEKUQT8N/WD8jDOur7z6oKVr002QteGLYNbyGG6KhXDkKfDiY5nBfXCp9Y2AtDFo9lbu5BcemUBO6nJVN348uALqXE2n5k5Ac5MRe0rQKkasMA9B0nm9z/eRwoZTxqUR2/BwvUWbUVdAnrGAbZjnBbFcSGWbJg0ee+feTkmW97qTBOW4oT662OGwO4bJ8yTDyAFz2VSmUsBfMk/UGd2kYHR4oDMbGaP4FfvPg05t6BrtRB5dwshhwvdsuHAQ43antpLdsrUk7RtpWoQlHvNevxvFdYHs7cijcP4OQaLsjE1RSvemuM6a4RaO6WAlRj37+kUNvPBi0r3CZfRMV0IWWxdMLuq+WTEJ36FEYjZB1BJiDKPTfZBOvn93gJJ3+BoUJy0UPbiPCyb9PQYVfqUjZYlJL5GUzeRwYdJs2L+ZmlHL/DaaycccgTkJMtqRHMKGsM7v0yHaZCKQnZS/3UUX+vOLAv9oa5vM9lGeDrEeUZQulcnr+8W460LsuRAwwZ9/RoFZ2D39oMPUBh0CdGRJ0WHdLOVk43/ZWrmVdTPYsNlESVL4/3VpMx80wC/ANsSClMCyoV6NRrTlB+b3MeMenzeQIt6kU+69OilvN+Rb+nARz604zNaaW0+3n0rUL7KGYVBEIgzPxcBjVarYkggV8mebdy/8n+3tze/x57m/e0bc8+db8ofRk1DWHnoynuUPe5g9xaovVwgLFPlr/EYR1f2vGAXx4qQkOj+TXveboyfI7iPoLhB0ywRX91CwERRDl59fjet+FXdVjeQxQE6osnWHNqEvwxsWxtprkA/GTOo4GvjoPvxenLYCS8ni5S3hVpTJgQAkvTUhZheMSJPTkrzGz25v9rklZVAgbA6cz1IcyyVwR8LsMjgttnLyGLlKQ+vYNEE/4D4vmtt8JqC7DfviSNiHEOMinc9huGUB/V2XqhypyktlXB2vPup79ldYx1ZOzwmpjNa/Wc4dwpiVuuyV2FKT+BChj5dXppxCgzlIiyd38pa9De5Ltvhig4Lk2uxBJPLGbNAN9gX1sVr082T488byBZfSZT3bqyCJBm0VJXD9uBIQspRK8MktibIuGXNXWunfmiuu8t/WK8S18sGsZSK/kvLNUZ8xxd1NfiWrxStVpjRWNBj0s35DQ0RvyeVmIklgHceGwqqfuPn02fZTUfb+x4v5o3UZqCP+Y/KmwXj1G1IL+F32e82H0BXY75d/W/nPv8nbrXzH/fG7lZv3x8Nf7/74h1z9cfjp+OC7le++CxrZ73D9wa4FjqMGmCrcRv8ImJu94j4E32p7xgbjvIvp8FkM1D33v4F0be2iAtamqz8oyXDpZjxs3jac0MucuFA316m85IX0wYWK+OuKaRRDTvYvxQl2Q6SEQ+Ht8vTFczDGEyku37zWq9e2BbkYlirLmT7M+wGlifgZbqyIwrremQ2fHmMxeNn0+R2bg65gStGJXjPYUwku7r/1rZn76Se33I/T8jVrXkQfy2qjsrKXMz695AWPEmUEirz4XuK7SrGCp75AAfkOr5z72+e4Nf9+lHu2LbAovBf7SX0z4w5bEnfJSws2isEdZjkjO1g4HBzxGOSh7r1J5CnNEUo1mxLJtcl0Jk2ZO+Efw1w7wp3AsfBDYd1wYv02y2T5xQo+wKq4WjGhyFWqCKOetoS5aI6Sbm+DJkQmVoZObmNZTN9DhNTa3Pxh87mrn6XJrIflfd9yfqH9InFveslA9E+4Isrip6NZ7zMeCJqGXzklgLCrM+eE1AAdRP3d+/dOzncD90smIJhFf3J1TedKyFfuNUEpcrcI0q+E9Z2xMChPO28PYyySBLo6fu3S4D0ltwEUTBjqp6MJxVfB1DngJBO2qHD3zuW5RyLbbrjdhpMUX/Irl9tc/k7lrxCC16yHISo7br6x8mfXuZWfuJC9dnUZsq2wkmApTWyqC5l3ZfihteV2l7ZN/g/wF6Q7GBIfhK0Q+k1S2xvsFikRg3bLXKZMkjZu+pOeLLtg9fviqns1kZdF5aKTySH8A1MTxh1PF9whhyP6igrpLh3eH0g7vhOG//PDqBG8/kGEHbIdDyM+z6aDh1F2RXhx5089tYEKaciRaIR4eGEJISRB9bld/VH3UmAICn81khrk0/TlQ8jP0QQfRD5OX34m4WMJqQQ2cxJ+LvqGOha+l2+7J5ULOELufdxzL7SEDRArtuV2FoZQuWKjMOSOiKes7YsPtmElhQL1C6mpTLerD3pR3RRS8fW3AokVfC71vrGaBcHX/j56bYVuWQWGsUmCVpYnSfwwayURYRury6VnTfJmTS6PYOgk92rHThThJaAyFwJom1mBqdtIRcavNxj5waapHB1TvUjZhGRgV4KkAhVU0lZUmQ0fXGM1qYlJSFqiCxIVTCSSb6zUzTOD99i1NVLF1PPqYRN/FUJQFviEVxC9Jhk4KRJtIApDdRWvSzW8dtXEpcpXvtPjAx5NXiKE5yG/wHjtnlHw7ER+MRuSvzCW4hFMyOUE7MZlOh+bUgDLBP8cTUdjuZHfvA7IcLWBMIQJ1hfZw7Fl8W9UB3ivW05mewRw3CM8xeGVHOHTYnIzLxrp7PGgOd/goWwEm+DzUx27+J93q029TEcy/zvQuGNLYkGdy9N54jYGKqhnsPiTR0hSwK6I6oeyp19dUUhRBxPjDrAyQ0RNlEqJykipt3fdMbZ7Htil4SQXV96/yYSoLpGwBhsIJzG5aqvwOWyIqjK49CH6hAnG6dCcDEkshbPhny/rD70XouTMhC7JpE9yPxj7dQRosdDzl9CbCb2om4X7ue5mDlfb11iIwolVYsV9PDkKal9Xp89MLdtYgQa77tc99zHDCV2+MlOFbIja7nLU9pblQyRksiZ4bZhFDXB1f8Rz9luHNNmbEJzKx8rD2PaMRV2Z+QLyIcW+EgyrQB8YRe/X1BlDRHD/kSgdLo+sKozIjrKVbhdjn/0lUoJSi0XW4XlIVO4tq5bVCiqGZdQtcWvplijX/RRTyKdMK80hGMZMMpkXHu0XuSDN+JKqF423kZ3OEqnmvSSfpVi5kLtEnT+DuYbAyQL7BOLGa0rtm7fbm83N2x+kJphD1JHkTsW1ezNhZTtTGYainJBRVzsVVQpW9S6yc/FMbA7wYxF+sbmvaoLc1clAxdjh0JSu1JJJdA96p2QYaUkDhZhEL+wU39QBApkq/kH/pYujSAXqSlHKyo7J2xqQTYVGJfcnr1TWq4Ror5SrH0CkfSSyH/D6YUjsyqfuGV9ezckc9eSvUO5zJu5xyUSZMtuBklYCa0FdWrURLQjy1TZWEHhB5mrWAyP0a8O5Tw33W8P9o3jS/3S+scLV4wviX7U07TfOyCEfuPtbYFsBbyLjquQs7+xLwVPMg/0hnvFv8e85O+xsrOQwjhz5o/n4s5x2c76AIngXuuSZMx4NwK/M5b8sYUBHfb2khcf+akvADhQEDg9uDSIpW8b1+x+TDf/UY+T3Yx6Dt+HXffTbMLHxw9/mzzxGfpceoxtFOdahCYXK6McMnDgb+P1v99/7qJJQg9GQ1A2rAn34fqcC/9LjgSkJRAwVC/9CouhybTHK9kEDl58S4TqCeZOKOHqQ3j31TulPxerrCJvItjTAayD3UuxWMOc8LFUm29+ZbXnYrbKh1yPIokxFJb8/HbRVbVs8osOXCJViI9Uy9u8v18rj5Mt42fZrtu0DXPS4hMtPidKO4XZ6r6SgrGe3TIGGPNd2xGXeLN9VQuM3412q/J2ZHtxEAeX6BDmWHbtwdCgfT3ZtF9CNEUCL3FyWoqq8NA7njPDNYEh2dja8I8jONJ+rBOYarrrX32RBffOzvGpQ+VNtq2oqFXPFYY5AhC+eSzkxy3wpXWCunGrU2nJ11Oi2/0OZGLryQkUh1FI5flFpRBX2hhbZkiJqQammCL3PEDsqhRCYxaiPc0xq9CDVC9DueJPfmwxiZlXMaaNehlN9FAGFi9i8FUIDHX6SJcP1qQUsSEELYfBEkrOuBWKhFWbHwsR7GvDPrBNyalTkChrDxSb9IJ0pJyo1fqYPjvsd3DnfTq1wYOUrZaXnvBXMvL0/zFm5m1SYxTs5CLocJi60GQomQ1ZA6NfqC4drO5ADZufxr4n4fTDGai5Wcs3Z5zQ7x/ASKSz1VBU8SYX3ToVy3ilSlCveTXbVdXL5VKw5XsqvLcHAZkB4T/9RJj5hmJZTLO3o2JXojjCeLZLdxDc5Rw/R9SRUEMpbcz9L7YVB/T1eydzpMPUQDMd8DPJ5U4Q0ripLdNQIytsU1xEbReL8yfYid1z3/XlcPiKE/kBhpnEwBeXavC0ehxk4ml19Dq9Mueu8DULyYYijSxSSiMME/S8dBsxL+qozJAbItaFSHo4XsQGkjO+FKbP9TETCc2Wy1xFj6oQSTmJw+9OAeiXMmyfFJPRqksHq6mI6E7/3uoD2h4kF9+4NhJmQUbgluvJx9mWE9ae+vYEvCOsZ0MNuu37qRYaddAJJyDMbeEVDQrOPYwNA5yP3Zr0MByszm3Z1/9mQns9fbGObZLboxQOnnARlJOI84ASL3pzlUl7ujw7fvBJ7j9MD4MToVYQoe51T90oqwyHZdOzwt+lNUthozcbymtCRQdMO23ORg48GMzQe3yE0W2pYMitz9OI8UZWwmmgIom/flxylxLjhCT4ad6877iLDOA5CiMEqphRJDqtzjciKG198OrqQmY2I2dsM7PxUrqoPVZK3ID5QgZrd0u3BH4NyzvkA27YvevZxB5bhNsgF511M6m+PP7gTn0cWweulBe+7U/FlEbn0dnmgCejToXwnUUeeY/GWoW8PWRBNlUYOSM/1jDzy8r3XgGHfuMLzb7BNw/wwzMuf9dNtyarASVKyYuMkhwoTWWPmT9oqzmHbjdh5oXp5/qi4Bfy8saa9I8X5wt+nTbmuM2UlYmf7pXD38xm2dxwZSkBQSqx/Lyze/3u9hG+4ZtQ4SBZmY9UHUfij7RDCkMCDUuPQ3EusdpCJbOFhw0skMvUZWXDXxe/vN2UNmnbjYJ3suavRyKbypn28ddhY9lJGKyTzEUzq550q1CGJCduDDy1IOaC5Leah3LIKNdRZvBeAwHutxeNuy8bd9y0hKQfBx+TNpzGIIbEXgV76ckFbumUYyHsWEPmktwBRt6lWS1suQFcP3t8UMhGUE8Rb5Pe7uDaNJ/rE5z0KpkdcoDGbQe0xRl1NyXofRFnHwsIcXdRXSIHXrwkkQT6R1aUiy4DHWZIB1mAFUEV1Ada/z5EdUo6Df5tkYpCL2U6VtEunvZbw0CN0YxgeXCu6A2p2QgrvgZ+i+Sz3UkXZzwTPsjDIQuAy79PSFz5QPtOq6pyC+FsqFaiXilJPXa1QtNNI+UQEbJh2yZ0MnaynnIC06e4O9jZDqmPqwtYZF1XCfr0acJIwpLtg8fr9D30YpY8ylj6INhXWdaKkFzlWDykQu8gKJSW7yvYKEbj4VChVDe3tlSHY3+GnxxLSFAMjgNMJvrLc7aXYVUGer+7uuje/NY93m8d7q3L2k1UHpmZhx1kJWY3CbWlHWrkSa+i8DvUEVJ8r6//f+sr6/7O+opo/hHoIoZXabr0pitR1WPd4Dwsa3ApYgLCJ8X5LCe0dAQs+HkejbkIuMxvIiy7YbJOS5yPpNLqUylY7G6RFVJI25/4eixRfU6/2M6WKCargvsWGtQw39BUETPsm3nPYDbIxqUXPTVfkNgHavHV9GTEO/2SUQpLPs6kPodTKJ1OmrTKkbwDKSOEDK4xO8y8HArr76B6O+uJyRy6Jyh0h2f9okjHIrZousQ2sK2ctVA2LCyTree+S0vOteHVB3ezMJI6ewWvolZ6Ms/+Un3/Jzz/l52f5eSU/bfl5ur5y0WrKBX4a8vM3+flOfjbkpy4//1N+avLzrfysrUO/GHS9PBNJ/ZIMaDGFTzdK4LNZq/kEYJtysUgJ7rCSttb9Hyvf4Ex9903QfZxDqihqvc75N/gYr76p5Yo62nmzf3RxfvLL/vE3TrbndFDEftg7udg57gQ8FUVwuCvRnL39OtG5kJzt/HZxuCfpJr+BuzPgMUU1TjOOfSOzoIw7+HC8e354Io/uVxXc1JKbxOZ9BAZPzZvLS01wVCccIiWMdoR6VW63BoIEB+trA2G9DAfUYZgU4QGYjZFj+FK62vdCVGjwt992EWf8m5VvlBOYjq7ToaKZFEN7GqsbXrcv5AW35W9W/IgPzlRuaz5Kvul+03DfZPj1b/zq41civ2R5+SbVZyB95dvyQxLF13p61bnYOT09+m3hG9vtoQw4xNUy+g/HJ4W7I7v2su53hweSyvrw7bsC/O0ymqP9g2KlIi3/0LH7/aPD085hAXByVkD+3a6P7eYXsdzTEax9vfvu+GgB9o/9s5O9NwcLULyn9pfW9/bk/GSBqgwqQTCZYkC4t4rP3+0fL1RcBpUhktPz8GjZCx7GQFGJ7R8exLDF+86ZBKpZaBZA5ZpiyK/vDo8WQCd78f3O84VHyfKzJ29jjd7/9ejweN/wR4Xrt/tRuW9WREz7SibHN96tq5necuYxGJBfIdfgmQAnY7c/GGQw6e8yno9FW2diCpm9k4mQvxMbw8fQMxx5pYvxmklu9aCoMl7yaUJxHImZKJJmhWsr4zUmtBCK6OQy7A7XVNA8GI0QSY2ioZJflTltaeAQLHMewBakGu9wbaVnkuu1SIz9jNJdB3YxxhDCzNquSe9gHifWVkSoJtzp+HMbQrgQLdwk+hRCo5lKzxTcbc2DSZfNUqgzRP5EXXw9LbX954rdV0pEQ499VrkUZJmwf6ZzIASmApS8CDzjmgBOoB+G5dAx3Z7nynXcoDiku9MQ8KOzf3Z48qHjLjcn113UccjuHY6ccNld14RALY5wLBVZD1jPmJu+venXsG28aHVJQ5YLIpZ3VckKbC4nLOA/X6hcIw+xHCapxn/zIrKS73rk9fO1mmKGGvXQcahcxWo/GYZD/GsnGi2YouFeTqwIwn+bCs2pGlq1HQTB5Ow5QNJbOS5PQZSkISGwOVMDXJHlwNYV97zhmL70BTUjaFRwxmk47w7cZeQBGNF1L7OBCDRD07gkdOH9KqsHZMTMuL5msQ8PUhwgghkO1zQwtmty9NC2u/2Tg0KJU7q5+4Woq/7pwftALdvFcmZyh3nP5E7DdGPNawsQL03FsNKDC2ud6tjW1laKjtG5FKOGSeYekGf7Ypgif9fWfj07OX4rV/tnZydnEtAkpN3O+k2kDXUjfymgIceWtIRRJGrJmpQaI2ZD9ybptyH+6Y2NDX8Nn0UA5OOONAJTRcYYeo8K5RK20MLsn528n8fgWVvdmZI/FVqcbGiIdbZjJNLBdGymPoJcqMQ0DElwupdshAwFEcZNslu3gviYKxDOjKeTa9ja+gmdN+RKtsnxdCCVCoU/M2K06Ahzgl0pOHlYBCOcJ80pFpuadOlKUJLKwihDi4EIco9ozr0ucq87p6WnFMBN2g4ju+GzktQYSVn+jGs4v17LK+sZztK9o3SQVId8183MrbCLygA5rnjlXhFGkU4E8qoS3Lva4Kr0s/JNGSQ9aDe1K61J7Ifhd9mXrhdD/82+q71sbetvMUSqyX+55fUmgJv+LvcjcOULOJk4jQQUx/2hGIchBTm3UXk6/PgcPii037XbDS+DUFkmCLLa88T/kd/fsnZcrrprGWNyhdp4GnoCuHMSg04+vUOls1Xn+i03ldnun4FbyVeaO2DlcZvbn9yK/JXfOnPaq2Iv/RpjBnl7hljw2LxXAnRuXzXmzsAa4sNFwBBuJgY66RFL9lRCuv+BS4eEkG1pwi1MDdNi0G2Bnk8yRIJDoaPRLJE5IeNrkgvmVLzwymBdPUzL68XPwHjJSv5U1oLBLJEVgPaAIEzSdNxGi8xfBVZCKJMN5bef1rWtrdb3fXuCDvHYc68lrntSmNIRdLKv114JocQI85ocu+WSjOsc0hLAas/w5/D48Nz5Z6LeDDX58ROWKrHB14+JTtk/O3ggcXXNIuzTm1LdDydnwDZeO9fBzjiQzu3JrTA/H/fPari0Hq/9Jrer1qa2s5js3g8rRYQSfMznzkNgENDV3AqOsH3a6iqMYO94D6d777Ph81a7lSdPBHle+0E8X10TczYFJ5AiiI1NeLkUZyr3/TNyVDNZyWBglI+F+Qg7bMNI5LQxGwi8RCDWJ/iD9RR/a7n8ElmtKKVoY4kL7rl0wU3kXtQ1IgXy0nG5bNI7OCzF2EUW011LkZ/kQJB6T5Qxptl4A1wnpQQPWbk/d23dDjyMDsYFuMougcc4J4OK2+An5x75PNkwyTfL95zHQpRKGK5BQ3HouAAGwY39xTr/qP3tMY4mhX+ltOCGIj66U+Bq+IsEmfufLiCKjqTQ7dVQNp8UFzX5/e6PVZwc4NVrQwb9BesAea10ilOAHFVnyFQkGkMUMKn579C2xeUuyTd0J3+uIDuzXLailZcTIZtTS3n6m36tSB86/6oicBH9VQ4GQkgx86pTm/NdbPrsOwOeioZilIQtMoqTsIEOfotYJHEEJVD+xSeh5lALcjdTJJzlgAWWRTivPY83x/WMp+sNL+Fn6qtR0OwUydD+arp52CqcMp2lSvBXQjonNOsZBakh1ftwe+br8AcJjeaAqodpDztLFYVhw+E4989ngg+uXzQYY+Bl5YG96+v/9AMB/K4Ulz5jrJwZG56nsgJep4KhZoOKDTeZDbu/dwU6pC1CLWs4yFR5Jcl2wzXjJkEgIkelVwK4lRcejUbCxrexcvhU2VCFjvM+7XtDwMi1VwQFexF5YSnp3AEZIf4L7NBLj/kYXPh+VhbqWAJLvUnB+QbA2Uj6UT5AynJSqvZeL6Hao+Z067m7yS/btVs38H8wO1Wpk98xafRoiAgMroRsqlokoPGEVWsaB66+A259y8/Fp3V+e9w99mrC0e+rQYHWXsjGJgejOHTbKGQGWTU2PPFrRf7cSXSMpfCuhzPUwGFn75jxBtAapwfGNmER1U6ZSmG0hjrtDm7Ezc3tCMzVW79/STdsqp51fd8jEI0AQ/KXnO++tRqxqVavZ62zKC2F/MEqmg6/rK6c15KntQTeIG0nbixjTKve+C6cgsY+HJumCHC1P2arwo6Tx60NBnKH8dCW5RKKAAruBJH5XH5epjEb+wO7AGdevpbmjVA3Sv+z9VR0+E/nuY+f0sip167lssnUsn+FT0ahUHobvqN+uD6FhFIVM4vgSpv0yYedg8khjKFeEeW4BmKsfO9vpdM+HR4UR9isJQcEwfGVX0GL8qo208HUHE9ydpYY5gn8Rz8/ea1PPgTPDKmEA6yG9RMRiDBp14LMrZbh0Ze8AVUIJTpGTK/ma6bQF4QQWaw40OFjhph6DbVjO5Ka3SkdfFgjo66hRIPCDCEnGV+fH2CGj/vgSrGiWBUPqrcjjRAKDgAANLJcQJCeAdooNDCqz/dR1bAu4XhSdphY/BRfLskJlxA7b864d77yKL5o219fwpuAlxKoTi85fuxOGmg3jK8QjoUEdriH5ulEtpThaE7q3ktgG3e4Nz+vulO1LCRJLi+i1HFEPQUyG3IH458gsfpLFCvsSS9c6+oxYY5cAsWI9VO4RBAea5dfLWoFgN3A8FXhiM5jLcEeiW7Vl9lL/dnbOQWIGsNFFFBUKMAoPooIskhhADblo4xLvS0OOwOGzpeOIBC7B2EUAXCTkCZ7CcpTN4YVoVYAWiw/hlC4rbVPucYpXNgkwNT00Fmf025ISDjyjL/KAbtMZepoJd7E3oqepd6Y9M8UhSsju3UO/Ajj9+lo1VH0bq+aS3C3sd0m6VgGl95yVhRqPiFXYaDT7tB/AtTEdyVCG6g1sYXWHIpp/kRJJ0LaUYJwjAWgJtH2SQ00v4ooJ4B1X/KWJ8JZqzsJydp4DluFRAOhMxeg/WIi2ThwlmC9CIsnNgELVCQouRsAR9lIN/nSHfawD32P8/QluCccUsnG+tMCaMciebeFTY1YBAHt9tnxzlEQLxweu4+yQolW0cFOYG5mnKNnEChQpNaj+8u5+n+8fLFRXRp+63AdEEa0HRJ0qdsCTpskeqNuB4hx5vd+8vPMyzjfwI5FNN7DNx7iUyhyB1LfIM63RHJMAtkFQT4FU41nA+h92hnKgEtyxMVoFHTy4zSgAd/9ZTAWbkCI8C7yTTxYHig28he+jy88KQ6vWhGkTkmhURhQctPF1erqarr6rXx5uYbO0KwFZ0NU5I2Iw9Z4lwoRlJLCdiLI2PR3eQn0dUn5CsJ5iFnXZgRuXOO9aTUqsfJUFQcs+XntYKmRDhjo+ZScnETKRe4WENHUTIhEnewnhrRJYDpiu8I29YzsqzTPtufCb7l78dzfJaMZ5ocFqCI6ZmgP9/f3FbGnThaubbSd2SWJ5fvcdC80VgRDBXYTHlzyfkuJoo9/I6dsfnpmNA9ECLMOuWaO0Iw5s4Qg4H+SFmjYU/44N49brq7/5XoCn4s5gFqCJ7opgakAvq8BsO5VkukEKT0ZHYHN0Facn0nK+s6c8JKdcT/h2KsC76W0Z+epDPHkHsocvvbte4iEw/86yWElzk7ZS1suDqXiO7v/d6WOzRCoiUL8xFm+6iPNXE187lJzaoxdAVTXZrljSrrJnKIKBKKwzydPjCvCfpJoiQauOZQ4QhePk3S5jKPGmN2hFFKbRcr7qbwippyTnKo14E6ZXikoWzWZLoZB95anJSEKguhchmnCdmbTRWSyFLm6a7ErBwWVAhjuaG11+aThrvGDKP2e+0hlyXoTpNEmD7y+JPrSMCWclSqjg2nv3JA2XzWBOOQFjgIDsD78NHO9d8OxiyWH5M0dHQpYfm2tqoZs+JAKTMM9jCxnwnARgrn5vlnA0hja5f0RgswPRpddITRbvCgnieGZR0Eio2I3lHvKx+fGLzglqhiwGdxLSBmvmjbgKcWyPtR1e9NGqD+wWVRhLSFMG4RlzIjvx6sAD/eefdmWE4peb4VrIRC6XurdQrt3frrQPhcviV1NiPYH3TF4NzJPUNvyg7R9JE4pIxGQw3V8rK8p+1EG00FJZTbzW+8d3kFSnVp43ivrOfQWQ164PZhFhPFn2I/UH+PyDcTJIoZW80nuBBBtgF0HxXCkVi+YaWAI2R8WzFADVxHBji/DWYBDq0wfgasZnXymvnLzsHfYqkJGEouojo/KvCSY6bVN6Nxqze1N3D5LNubXre/k93svw6TaHTOCQwIYPUIZk15DqQy9KdUO5LbmyfYxFHgOC73t4WKj74UKNXynDQwIgMGPLoHajS6mc9t6gPaKAlcMaQxZojpU+Ef8KDEHFBnijgB0Nr9n14p4DJMsJPOvjNllWH0T4zEBr+g7IJKQ54lr/hysLvs6HE1HL71pLBrsFUKrxqmfShiTBMGq3rqi3DcADKEy8hZ8fo3zMBHaW8T+jLAQzFimdmnNApq73f2t5dkHJeSWzuiDmfSXIfhFaZKBW1qQXQxGqN3Wr2Ir+EE8VuPOovsJkXGibgoIpo75JmsdcauK8HucgsGkyKQqBbDjzFOqcDhQVJJN2INGIIwh4+GVeqxI0qeisIrE+BNrTkwB/evz52L9VIGm9ZwldjSMVYjPt/zNvg32AuuGj30/GGnJkLrzsLdwBMCQVssifhFvjtO26K9e+dTgWtHAITPxhFXh6ARE+y/EHE9JGxZljKrq8SpFiC5J9p+5ce9mlVAG1eL2KKhaUrl0ECPtbz3PjYFBXMB/1vJ/BWRaNiIBJticqDLm+SfCTZoVKWsMGykFUF+sElBQrBOw8iXMe8X4GffKX8ZDCUtt9Gljuz5+5JDNJ/7W7fKIeGipsoqAx8W8pCSoIAfTeCNS0ofSY9I/mBjcxYOJfaa/Zw+ktqtHVb/9KOqtCuqCjFxNSYjYS+1GlweZiAzmoUHrUWoJ3uKD8ITBDDwkfZ9xScJhZ4ChQfAOLh72lWg9SvJgD8BYjtOuBxoP585lwBHkxWUlezXvlYMYR2E4Ygsh/S1WN7s1e2eU48BVk3US2QG1YvUnDV9qEa+epKE3DXlJ1XPk4wyq+GTEPT80i2jaUmnXulq49p+YRpkARHL/OWQKBlpvjrp3o5neli3WiDGdSJAehyam2QQyPKx6TZja2UNrza1tu5W7Td7x1Bvsa/Sp4Rqbg2ZP4VFW94OIvBxogIZFXyTSgMoZoJRJQwG1TPMHJ4ONBWSLK62WApIhOjXajIbEDcizlNIkPOraXphWKbyPIvTrZmGknj/jLYMu8BLBQSPnPRvY8cfUm1MYCINL701bBJpuJdyejX7P9R13R4P59aGYcSoRa9wz5TTP70SirXbD2a/9MQejBnajBGjqZFeqr2HZQBUq/9bTDT3G6tUQ3EUYLRYKG+B7H8hFAU897Fzca0ZRMX2qQRgKHJD4RVRXHGF05zWDO8OU9+Q3mjzHQB0fuTMqSXuLodlbCNnP8o9EgVuIgDY9kbDC+Aa+M1VyEazD8RsX3hlczm5iGJIyTtIFGAOKG6zMAM1Pei6COfdB2OpFst/SbgmmH8VgSERK8wfDWQHt/hgMXfrXmPhmJfdm8yfhNeL4cmkPG4CPMCLbTAC4TnBTYh0BGP19wg3WTAgj3QjOQ3kPYv44DM50RGmPZZpUM7ZXOQqNpVQ2eEC5H5cUfHQxPWpw3eQ6u0rDYr2hWgsL1a68UdpmZBX0t0Z0WmUAZqlSpVQMAQbMXnaVTbsDLMHDvA8IlnvKXNanJhX9eDmhvCFIxHQzQqW30p0EVxbPNI6B0sVCMxz9Kf1iFL1leL6SonX5LjhL/Wiu/bK/4nDYHSLpjlCblxBOtWrXBqZjAP3oilcn9KVmi7PsKVU9RCrKIjmeg0fXkMK7aXds0t52beyHYOgd+WwAjJF3XeqdA0ZjP/ItlyURVk8J82TQG4i9gVw2ZGolOWCWfuYopbMyO1hrQlpJf/2kO7vtfWZN7WDN84dYrQgYBA00l5RisMTka2yIcDeuRsxhdBIjEKequVz2Rxly4zHTPgEZbHku5rY8scykVN7l6RXt8DnEpTY8pvk69Fg3gbkyrvuiyxDRJu+CTA5yuKmE4ZEN90JFRUbgb6tJqLJix2AEmIJRSqNtESpIeIHcOe9IqM6943+06Yij8ZQp+wxTkLK/ebbVhkYLDMlOrJq/XMnO3kObMkm/XtPu2Umn899SU+fw+Pjk8K9Xxdf7b6nnzYcDdPdfr4tWvbzRsFfFcNQjDGXgkEBEZp6qf4dNeyiYpHjFIyziasBJgMTMqmHRXyZ59boaQTZaFAxq4RTOb6swbzczEAMvCJmdYT6EC+YabnLxfp/dJh745O+u9hz5S2Y5etCklLpgIwUq0oCA3Nbf8qrrknB8XaXlP1wkLasstTbBeFiWpmGPYD1vfhiqfvES7UvpJYr9lrr8SDSigcxYh517JvlE4rMhKgcPV6/dIF2GptnYUjQODPfhWT3jlTv6agXSkJHZdRkFwq9mw9GTsH49Gd5OcflkPPmCv7jv9vwt/sidVPxELvuDqydyKUN8wYzgBmYo494iGJAKsZ0E/FPnFe4SGlZF6hmNBquPdP6AeQTsu/O7m8vHly4WtTTIn9VDv8/IaqppbLk5ytwKLOBlWOw5PAxs1qXgbkEUKLAfbDfngdW7glNVdrBCkmJsKnCaQrXo4wi5BTBTALm4KBVRo+uwOEwn8nAQXHUnl4y6FUx0jINSWvPAXUayRM2CykQQnC1DJoakxKoiOWsNFA+Xl9GSeOaDJDao3qvZM26CqKoWHBqkMaB00M9PJDiZ9wri01mMUhYLHVnLHiMbnOfGUFM3c5Mks4K+SLvoStT8KPmnyHBEbgbDpNg/H24Hh9yC+Pb68ioMDM7j8EcQ3ioo53D3KHFtwcoh0chljSC9aT+2spnFTE2CEZkc++Lq4MbkEuRBxwar4RivUp+fYQLmu8hvRWYjggkmnSEb5KiQiWFtraFmRNIRpnxibtliQudKSvlGX6ekNmyXloSmxFllqifkOsGGJyQHWPIQtPS0QIT8LxQ2yY0/ienNdXNMViEkD3FFAwM+QJaPkejMfG5JD4EA1UtxZ7kpMDWjhYYy85RvMvk1j4zXlZuQXPOHKxiP2CVsSMKdX46C0+RVODVvJ0E6OBjgCnA44YdQQrUtSTzybNCfX4iTQgoPRM0b+m3WLzirRFETb/vh3wPWd90RonVe3l5YKJl/Ex9OxF9P0gdV9/C6jGOQV6nlSQkmEJSSq6FH1tCbdNWVmxet5/InScMSSh2zFy3l9FLDOgoX0GoiP0KVCBF4OfTbTiqH6yj/4sFPoDZmvpEGly9xbKZFLL4mzGzErnuEGLU7N+N28ExuQzTtNCZezRM/wZboeuMcz93qrz6Bg1/hfmX1SXIpMzfNP5OvEzuQJiYNhiPhoyExDb3v9wFAYTIHeC3fWHm+B9eSJ7Vx6b8Aif6AoaxZLTVyR3DA8wQpR/gP/qHptd3YIBdOaihypAFvmPUGl2zWznO4rqNWglT/ORj3LkK4jfSiGAO57ebLSP4560/FZ4URUsUnxfV8dhqpZCiH2Byo263G3Rbq7jdqfXe73bjb1jt82UgV4i2VbcPt6z6QjACVsL7UdiD3uceqgc0kQz8rF8ZIAYMUNPcr0UyXQ3mQXHEYcXD4M3wfv8cTRvDrDTJ/umdboIKneAKWa45Zsfzu2PdiCWkV/vPeohgEwJsZXtZJhPTbC0nBfdsGopQTHcDuELWYPvgUOWO80odwYfnGF+HprzxkF4ZZcBwN98PEVw+RnwSV5KUM7t6XKa+v0uHmFkxWWhl5GoIFL5Xwep5dtVwiE3+TEjS/BjewCA6s4SK4EFxiEeWvCHQf/VfhTZCU9r1FA/JItr05pJh5qWU+uaM+5Ram+KNlkk9pdNkd/wE7jiokcYiyE59eg3XZyDPVfvynCZc2P25iL4YzGYKHCa4SjEv5l4e/H5XY4aRqnjlAGl6Vm6gua5JpkCddN9FbMig0FKfXU3ILTHVXYhhHf11h2xD29wu8/cAMHGQwo4zUHsRZ0ijaqKjHKVSfuiv8v/P4C2ZCOb8v+tuSBScG3012E/BTGhYmshATerCIwhXglTGtVNdK8BPYPCajoVxq0A47DagNiQPKDkU8IrN9qXBX/qCLCb7d3MMKBFqJ4GriEAb88Ut3QbgUSUki/qxReALqhcsemT+TKP3Z4iZGenR5a/2fL0yB0V+oAKW1875aPE0qSv+psrE/x7JIPUNPdyTn0YH89Rp0v2bw5KvCmK0gwJGNmWFD8I/iXffPpvf5+peD1gZieo5xXBn5Q+nnnsnCLmM1hog2sg7WtBJWRrUkxyNNwgPBPEMbFQh+dAeR/VVMki7Nkaq6q+XmBayGeG9uXNB+FXGHg0ET7yKI3Y+ERR9G2Rw6OmHmBc9pIWBTymU0uLO6K0KGVCKvFgSUGnZ0uktgtUl1MJbG0MEiFewhYt8TOq6sanweHi80MlY+lxRI6Wh4we+DxHOPh5hDMn1coPIOTZyNl+ndaKivp/iO7tg87H2R70JEXBHCLuCc1qAzFFojG43s+/0hUFbu4aIEFWkwxH6W0FQnxF9r8LgvAov7696qrltrW6zIYkzPRdXlSV/+yDaY+U3JstvnDoU+2FiaYXuSv8h6gVMA0go4YimrtFJUCdKbqrhsCcrSJE7kwJHlVWi4upXREghJRN3bz563Y4SuBycGrJwNFVMPBbqy+ckFTXjOJ6lcncpJHe+HW+OK9FRJA6A5s6gubjm0ivzslyk+i1z3/NvpJwphZyjRBWq1FoxqcgEWV0KIHmnzTvVgbjzLdOTFcvm4CzJUbWum3zL6HtHflLgG9q+1uZqaNdNcGmghFc31KZ44RYoFjDTekPQfH0JOJByMg9oZqWEV2+vOEIypKz16LV8kOm3jPjgg0+DADBvM+oSwpGQfA9g+KoB16yrTZHDtyYZYznJ2WU2QpahwAFpqbayKWKB6Ewn1yj0CheUqLMU4y5pjkH61eSrilnM0jvX8lhXSzjJIGADsW8JoJ28uUEEIBJ8n+L3ljL2INVR+oTaVa3lnUHcmB3spdOZlpgA65/4BaaYE0cpFcT2bChCb/ljqy701cDfvZVmMj4MyQamDmdMTbvyugfBLMTXtuSBL8u0j0Dv9qGi8ZphYq7wUmCjQb1xWh4Lh1VlkoznVbZujoBoVWcxPI3W0/OleBgDkBRhtITRKsuhaqr7LRP2uepCif8zTI9nnnsKqU/mRREh6ngq8We+u5z2ARzxJcRMLVoQNh+ks0pNtxr8J1ghWAQZ8x8sUlekD9ARLTwgbmeVCLmd2oDiOIV3I8dbBhzscHziQaRQ//R0NspRuQJinZQnFMpPlCCyKSxGM87sUJfEMK8p08+vuclSSiqelK+Fgm4JTnQX0yGD/AgRi+GHoqrOdnJlMxGBkdKi0kWaxd380InXpcBpZB0MRC9c19kKla7l4KBvxggW9j78uZ5TDM6MpGINIVQqzICJOLnFsnnb82qQ+AWbFEtKigQun10x9g8IbHqSDzwkmtp8koPR7kTEEd0AUd6B24OL9yVuqozp7yjifPVl8UMkZHUTIDJOnl80KgeIQ2GpDERbxQ6UWlJIGLgQlp15M3uY+puk0Uq+DSOywAEQBzG2BwV0S2mrgJIzIYbl8IMgzq5Fli6r+OHSHwBNQYGnH5GeILe5x0az7EWsktrhpUBsJzaXv4WFvGaXithbIk7SKHDgjJy8UHKfxSewMP1iGpiDT0LLTXnz2V87UAPL3h8T/Jnx3liKSSptoGXaM7iMI7Oy4eY/ra+eHBu4TRE+J781C+ftkUUqNU+IyKTWulfaX9E6si0H5INrdcf5g2tPe5wfTgvAe2s6oD/4w2A+rMavvBkQ+ijZKWZkkKrHssKLYf/Xzzw039tLkIlxzWhju3mgUW8+2nlWHo5BacJKQmjCmknAt0lL/e+KOTk5O/eV+iAalEFq9tmsc98dk0Ms482Z8ggQa7VrzGfNmCJZmrTcpzHHNXnhFZj35Ge6L6kfp/llL/gUDMtD4wH9JQu5NLQ5cPpAJCvS0EMLH9PftcF7yKoGrQKoB1+nxDZDZq6W0V8PCgImuKvCkbNLmMyjJWkzaMt39ZPa4KqJfPzMSHa4pD5xbHIAK4VNMgYoF2/AoVOlbWebL/MvO8pgGLBFwMdw8Lw0C3gUQ4V9w6BW+d+xll0bxfoYGILK3Oe1GFObVW0VQ7Q7Kr8qvZVUQrvnqsIQTEnA5jZTMzczyupTUNBxdBbxYw7R6MqP0xTsH+5Le5BCJut/vy/TcW4XtAm3Qsfy54I/hC+uervVyU8bn+13jSoJMg/fweMIILh4uQzqEtoHCA7ByxGsAyzGuAS6HuTaoRbrmXPUus2FWAYSc27tP9379+KtMXsRml3rDS6JTvJVJG3k/eeIqns5/5DBaSkhRjRlYbheJ8RgklXZ9izPFBRekoADXf5IkFqIxNLgOlsN0S13zuA8FGWq7xpsnsDuj4CQJCstkHuitP0U7BcIwNHNX4sKZwNMFKrCp5KDhZheZypSm7fiL2AJQaGhkrMIf38d/pY6Qaw9F2GUA7qNavCndO+MxBSaIsJBcTt2bjhFUkxYgZNNY3M+cUZ9yQBT7louYXM1i9y0O89F4LgigNYx3BGeZMsOqIXSw4uF1pfANLKiKUfnNEsCkPHMnx17DPK4TK+ETnMgGgoga9oiCk6Tf+ibW3IaVjegnkIhlg6eMRWI9whFdfkSxHsrH2FIGzkd9Rjv3qWc/ReKZcj3lZ7HOR1Risp4qMpMELotHXvHlrTNL3x5NdD/jaRjl61bDxyihwCz3qkYpNj8wrx5Zm/RhIrjL+nf2staf1h8PLVfRn1b+ntBX5X1F6gQ3F3albLqvKRd/n4yYnIS4Uzl0VeAsNijo0Ca0XfkBW+o4KbpjTVvG5roq26t2kW6ATMn09wvOGyZrBF5MR3KHX+B85bsnbf1FfDITk40eFxYWwB+9Of14sLVqt3pCxLUqOhPpNmYvkxbmDUS7BfnA/zGy49Oz4zmw7AaGSItRzoOfYAui3pFLHNDBhk0GaZg1a6QuOu1A0T4Rsb4sxnMblOe0QbEb2qCwMHUiL577yFtuMUyuAFRQQXrGbX+2/UBy8CCVpOQ+pslnmsMsFr1M4bN75b0/AJIrORaMPyveM6Sq7QywQ1gfh2u+MkQnSBziL+FSMh31hlNP8qO/kyN6KNBLsQ/JtDDRfp97KggkEYbGRcWtcdFy4L7I0xvY5PTAUIclRhuZyLxgBS9vHeZlPwm4wQgcD8ZBFH0VUXv3xOadCzV7K1D15dP3JzfhjuZDbT1aXGRgbdFb7YgXDEWHI6sjXHFMYYZBqgOvlVHSwL13FOZVoEZrIe3itQDt5uDw0/v9tnG8tsEFH+7kEQ72B8YaWBRHe8iHYZC+gG1r6loIEnO7iqHocVzFCkqKNbF8xGXL66mvilsMSXNcpnrno1Vu8xq8GT52uBUaXpFoKybiLYjC1f4niY52fvj+1WuEuRVp1AbgDSwyMi71XuPNBoZbQbvRHXSeJszwsDM4NxmFo3sv1yBH/94y7lMJdzxqgfPZheGZQU+9/4JFFFen4I/o6hB8qQgXTRWcRAwTlCRnKvcixh7wK1gnB298FVoTg1CnqlrZm92MIc0ZJjCYrLfyJN9YPdj8YX/VgUzXXn1YKHXMbY/VMf8lu0+duyeLGQ2oMNESHEgy8g0kX2xo0Ukpwuet+i9jUgVqOQtrudCk/CmD+iqUT3Dm/utu1EOdt+EgofS9kESEhxAFa3QwP7PiB7pOEeZ8ZAT9+kWcb9ZqFdoegX0owLxbPsMfwwW7i3NPOUJJrB8rNe/MYBpRV0PHOhfkd1oTYXDbczHMl5i3PVEfF54mdNBc5Wp9JZz9SCOZl+h/3fn4FVLriVyYpHfZLhQqitEoCQuUNpvRcN348a0oX1Lyj+/2znht2ZNwXdMrxt8pPc1ADpHzr7b4AXmzTRyDyl1QmeMYj0ca4ff7uC8vy1DSIin39vOLZ9sF2hIUjuT4hPXkzYYOk27Cc/ji+zh2jML7N0YSlgi7Pxmmkhp/+i7zw8Yw0awy8pHMkQzcCGaJgXdmtxQLY2ATWo5TRijX1OID71lGiNcFxOphy3Zgem/QcnyAlfK8KU+bZcWQLv0LKPiq8TbBF1025wxaThKyupyQzsjOAlQDHARLRsV9gWGzC9C89C7ushwjoWd9YLtfGTY/chiIXEWp3zsxdMG7pYhBoHhZbRDKplSNTvkI0ynBLGxE/KF/5UsalIPtqYgFXNWbLk4FvoeBeSBDwJYYnN7AJzFDHeXGMhYzgVw08e2MMA7tN6fjFmSw8lAqYyaGCJhV35Ws26DRA60Sb4XkSuC/h1wPZQyeVwZrPJglGIYpX4bpTXplMGVKjiTxxFQghTxhnLrypFbgsaSkvtjaWfUEOu8smqIbyrhYjTOuBysZJyxuYAhuurDpsQjc7rtVZ/+UzA6fcQLYa5/BXaqD38ZsHBX16SXpZtCSdSsfNSzhO47ouLvOxrhj7VFptEkU3EMm//GxZJPgM9ta1VYh4VAfHdYILTEI5PQaexkSDQtrar7NNLLs+XMVZVevgjdIN4EmaNwXtl5gQlG0C4O4aG7ev+Nf5W1D9FJT6mV6VfIUPe6rGBKU8whmphGCI6iczKC1Got19BBGAVhnpl1E87kcifVULyNAIwlpeBtjn1ZE1Sm64LQI2hlTnIGlxaCn9MkrQrIe0t4XIAhVgsOiwSxSZGKwwP5oYEeGax53r7wcFNGHcJK1AEQVsQw9gARVMTSANEt1s1MqBPpEND14+dIYwGRLuatTmKFrMahX/4lUQ4hj7UuFaFeMbvFPESoJc2WnPwoWS2c+YcF6QgWb/1hd4P652dja/kFwbLAMSHwuzPCdqZjBXM5Q2+rurnvzG4/47EaqJQIbL6mXPtnGoPH/pKm0mqXntcHB/o9dGUxqzp4S9SK4bG+Ikeyx24Zlp+DbqN1hW0l4GKDXsbdNzWdMEibIwopCWr70jpAW77fCPTtGouH3mNgONd7IcQuPEiR7qc07TU6ih9ss9zpBxYpmapBdpxfwObnDwYTfUJUy1WSzIFYokUapFp8tB28vB28ZeH72fC9CEzeHW6Iu7iDGsiiJdq1BkNA2HYiMmgmwVi3naSCw4+f88XGOUqdgac1w1u9iReBpEkA7/+H2sktT1IBEd06okHMBRt1v5+ACGWR2zi/kbCSD+c2ZTAn82sGvtz9IfLrt59eXOQVbHrLlnm0bhDTPNw0SGW6LAR39Ul96lrCE33qxFC6PMDgTcDENCCFbL0qg7ecl0LPtEoitiKty5apKICgmHYRYZrJnI04OPcsCcjL7GS6qfFcPwr+NQGa5fOLbQim52yCWnkc3YZ2/GF3+lywIF6IBN3k6LNChuvYrgewY4CW4lKtJv9oXaignb2io+fbFNijYZL4/fSuiv4vDt8cnZ/sXnXPxG3l/tH/89vxduQITDz20Bgf7n4gpQ6C2o53f9s+kxN4F7qQP5Z9k/YZV8cd92v/K6PV1XbzZ2bs4/+1UwJ3znbNzcFMHh0f7kCH2UmR0oZjUvensfX3Fbx6P9lKcuUCQc/1vHkuhRMXh9Y2v6OVR+7udY6yue2cf3v+y/xsuQ1oEySI4yMWR+HRHsmoDfnxy7j6c7u34cnu2CSwoW/a4zsJyDKlGboLPr9lptoTG/dRsvva0XJcokODJSa9lOdJL7Nh8GAR7li5LLoVKVm5kZs0V5Po3erkvDBuYIl+D7WXaSOyOJsNUDJYqXuqJJyC4RYQbcR0bhMv/ouVX+YFsc0AdFW/gsqrNdWe4wasrhI0yiF/BFfnmZO83XmtYREauCW+nZHZ+Mho9YpVpDBaDHID3jcEhwOmkJ1ymjsFdKZRjDMSWe+B0cV4glybBKWnKR9I3cSjYM2EBRxThvJINHA7RyQKJj0YwhrK5RPf1NneE/053sDmHBnd2HvOWcXm+sK9ide5lKLEIQmZ/yvLIydaLwSkbPFo2/OFto4WeH16nsGWUVyGT+3NFlY+uh+O9w3Qs60n+4vk6fRF+DmvTCENM/YAkxOOSpG/Og6F44tVPYsX9Wv485d/OdXCM/mk3P2HuDI9lfuQFAkjK+/jmAkccXuRLbothn9y+4j93vvPmaB8LgC4KGouKeKlafnZFYxpC8Qc3VghJX7+u5T/9tLpyB/4IaAXMhuWMx2TdzIJiTnwTB6kXOBDAOP97lTvUiO+q6ZmrAvVC53cHIjNEoL4ZbYjDU0sdb+l1pIp/gLCc41jCYBQWtp8WXIogG70UKwN5wKvduVPOqeihBEBber0LZcjz0obMoEkM3WXEc4jHp7g/YmgJ8IzyVoCcf07NOcuhEWKTmxJb8S5JxbsYNko1ATVqNikmtYlDe9vHlaLmuYD33t89Pzw55k27HY6ddhps+OVp/f9dx9ecD522J6Y7S0QOhMQSxF4UNdhBq7YcR7m7EpylyayHKqlzvryjlRFqCC8AqgMmFKZZAALOygRWH5nTCKbnalyXLd22VpcYxb2E/3iYqBPhRy7mT5FGznwYwtmG+z9fPEJT0freJE3Oua3N7efL5JGE5ionfk6nFktvfONuxs/MhrE7CQ5ReTrwh0v/KMp8geAQc5Kjfavhtht+65HieNah98JzQb24Nb/a9othX52N+jyuCsjPVphJ+SBIY6HzGSMtdpasZoxP83pL5sTJ8ceTo4/7TvLtd2R4td1HyYL+VQezhkW0y4JpQXOLGzwuSkJ0wJpIrG6/ALoeSg7ZWze8+7dE4XD9f/cQjONLb+QE4bByw/Bj88cgF+vmbguSGR4egngLI33rQTYkr18JYWlYSXduVXfPT5tyLHab7oX8VXb41/3DM1jUX8POZHOeXprLc95CeFgRCVx4syfZF5aWfHVvyTVfMqMLhb/Ok+0LH523zWI+Ch02JQydn0BRil8NmJkGiHT7sz8nCebpd1zXv3u6xAiBW8MSKwTbKsC6zcbqbc0Ca84v1PC39uYbOXLaZHR3HU3w590frcV8ZbBY0gjlmpC4hXG9LNudb73Humq08ly/yo6Bp6RsNEnQiqe1DHfzMOJ5VK2GLOkc7F6IHf+F6BNPz/Y7mBgXR/sf94+YwFfIvws8uelexqqi595PMrbGcxNpgudbaDTvHuhJfrdIEArlghViuJMvIj+l1p41OkPa81flUdifAU4Qporvz0QkpSrZ0L9aow+fnnlZteu6I1k2mWMLYbff0DKelEWO7v3O2S/k57ictNz55wkDPSPxO7wiyYG2VN4rHYjFNU+7snnRFUlKhSiLGqBMewnvQoXNvPt3zZD4zftT1/VhvEFgUk45Ne+7IVZos4j1AlELQDkZjea9yGl4QctdFQpQo0DtbCsWbWIp1n4NBBQHBz9NoDhszHBZ3rJcxHzoOKS5bySZT3rmSc4tpkUIwn+JN5BzJ74ePpW4dDCgdLGHD9DjmtxXjZSpT+hScQnGHhF2Qz9fojiC7LfdUVcF3wMpD20HRnOJllJK5EqD2fA1KsZejBeldywSqCIKdfDXHU9gdjq4a0njbvE+vpa94FgJCftTnBPBM2AMZXnJW9TdpSgSZH0y+lSauP7HeikDaSVtXkVLgfWYp9nQG65NcQJtDEyaPLjTmGvonn3pnpN+k1YgVEGzhkiloD6Swb6HXcxP1NJ4W0gpqnG00Thvv4XBwXRS9oXD/LB4QMN0NMutatSaz6fMPtZNqR8crQ61MKaPCp6aeH2GN1CH5kmKEan4XDvFsqjLTjO6Up8mhJr9PBowxV0IG9lS4yafQn3n/b7LzDEXhOxu2IFZGYx7xOMiEjSyrn+/Tawu13R7A9NmjkYt1zEmwT2zEvOj7M6NGNzN0FfotBDxaOvlpktSUQ5q7e6N7kj4AL0Lz8mKjaVgD9/vqPHi3bAnq9Uwy6mWYkyHOL8FV8YgvqnXPm3glS1E5h75OxVnzVpih5FZQCWt7Z3wq0w66GOQCrxMV/1UCMPj5wLymCpqnxaa/ZjCeOuHFbcvijP/60iSVS4Ujay4dziZwVWFRrT0kLIuhOsG/K7Y6r4mVYfasp95gkPOWWlSwtEb+BudWvECiNTxHNogKLZt28C66rfVITQ8V6O0CFer2bon/gbMbMvcxP9EqcnjS9GL/NGlYGDcfij92zT9Y22t0IWRgQz2Nd5zSEA/nct0gY93a3V3HjPUTbFZ5D0J8iV8bCvyWlc3W4vsde0TwP/IYHppopHEwwhcH3evp0E+NQ9m5EO+GxUXB91PeHRp2eGkSLg/V7x/PBEW9OTD8d6FiLF3VLBTYEAuPevxx1P0OKynLnHeB0ksdwwBzZKUIoGUgzI0pqXu42wz/cc985TC9hxv0fN4xKMQAf0qXTlI4rcHBDhsBQd84xu60lPdiUrTP4cC3hphGKvGC8MU3zhXxyxboG1EVhOwBoyUr1RQibfvX0Zaf4PDsDccyBDUSSyJK086n9ykmMmo9Qj77reZTwQxGwcWFzeUG0B0GkYVg+PZEQKdCWF+yxTAXLB+h59Es5szZYOuXO5/zW400QOPGhyzYdxREuF1cVhD1UYlMIBDdyDiASuAEghWAikD9jXO3mUl3To0FGF+hFMWZgMnKPz80JL169l1th7X77u9sRhUah37qlHyvQsKHlBqXPgU5SIBsk0NBkahUL6JXm6+Yy9Dl/9ycGt8Bnq8teiLgD4uuS2SCua4YxH2FZirCF18g6KP43DRbkcPilbcDCWYoF8xxuNxsmPi9mYDvyTOmZeBMunzCP3C+hQNbWkaRb+l1v2KsY41fSoNQe21vdDoAar4C2wNtm6VwPtVHd6Q2XCW+WqLG6hYJO0e7vmRx92eJFjrZ+Mpc7rj7KOb6ROjWcWxxaTZ3Hq4WgVp+/q7s/MDiE79EJYALBZ2WsqriJV3MPIMq1ytrwHOuBlhvglQxvJA7o0c8AcRu+W9uMCf3eJI7DnMB5eqJX+izJ6ViQfK6f5OONirmwp6WQct+5RfmPI9o4rFJMqadYHh0l7Kx9wf9m1dX4asEOiIFcbF/rHPYvj24u8fdo4Oz39j3NxWwZZg1a9A3uGs4c4OXjz3A8wOcNGi4gfocMQVW6c3lrfyEd/ivCijAaIo0GngFmG/eKGHKPYWxQyMdPrVUqMb9dO5YET2RxXHznwxxg3H46MKmy+6FowCtC7bFLOkHJGPS9y0a8MFvebHXN7tpxvB5Cr6+dH9Npp5lq+L8YBB5GuQIymei9075jz8otJFYuV8JGvpLPgwqqVMS33Z9hAW/206Ff0WNpr6hpzqy7SI7IqBzD8u7MXpbZb78efnO86xIXE+l2MSY6zF5AzQXEFOgwLKpSyYGJAOKA7Kcjm0qVwEMcEeW6QjRhlVRTjrdn0yMZ/KlMaB0ukUkHKAzKUXQo3+k+2OS7hFNgbv4ncTlY0aSaewIXVtS1I0N/KmTzxz8suh28sQpT/r8QzO45hRH/sBA42PQhZynv5EBrmDkHrennzy2o+rjElUWeheYQyNMDH+49EvdvPom9bn0gw4n2SFsKS1jH2IJSgOIclVJmStzy6lWX8L6eotCFaZxhRlZrvp6frS9uhQFeMp8PtfWPbIj0qnGGsRvr/JQnzviH4LmNJBBGwX3so/JhA1H/9vlSI7nGA4LTkyLifIvdNy/DLyVB6g8En43d26qGXc+pxtN+aQZxlMbhl4GHCUJ1Kq5h8W5rT84odVdX+Ww08RktjBnWWwWT2fKyKyacOn4WgOes3xBLoS2RKaqKnJmqT17NNMujhYf5LF/2MhCiBXm6b39B2kwm0nbLMF1gOJ7+Qj7xZw6Heqw0NLoUp5KaSZrlgGkm0ZBt4C7gKHwMuu971Ti7imCshZ2ESjXy++sLNUV9BhZEbGd+2NgCPi9P3OpyAgx/mULAUVn7YOlJh1NJnrVcTLVhfoV7O9tqWXotgRx8ibx2UUo74TdVhdKkZxBzplMLe6Dzg0AosUnVkpoBDp11ZbhRQti8NgCeZruZ2m8FY6E0Fetv+1KaMaF5WIBSP8ucFO4K3pE/DFIy9yLpdyRWRWqOWMnuS+TcRq5kQ8DBFe9uThQ1n+HswvUGImstrJ5GrNNJVaL/INzXg2wVNJzXHRdFMKjoUa/hkaoA09LFMwy+W7vBU/yGE6wfj/PErUhCN3z5uQP8ukyltuL+13ZwNh/qNInOz3pKT4pAzmcuKXPQGSpgMHCuw68lQmGY2+/y+IUBDCq7BALN50iFWaXJgEfDkN3zumojBVT410T9ZzYSloDRc7KtoiRlgr24N/uVgS7MFbLLBwyuzjGFVIygdPmuxmdqNU97Q6oopVbKbqPn7f4V7PoV+iDJ4QshJ5ZWUUfaPiPFPbK1Nphb4SnyOILG9kdBDTlh5dUSCYjcCE/PTs8KOYsTLTQzGUxHfOAlW9YjnuX5D9K8dUn7MJG+xAOft7Yxl/gFvWz8jWMR1Jk8a+wNdOYHPkZDnS3tvabWPqNd5O1vMLmPUe7x91WpYxZDb21by8fvdHwydHbMiic8uPynpLqpawlcEiULmQLjah8fX0Asv13Lg4j2h2cJLZ20f4vbML70ufkeDrX8G8FHzf791PzZGr1JGE9mQQNAUaM1bZ6jNwknfeWnSMhXbMZC0uecNOiOQ3aDh43hD9/4VfjY1x31r4HuPsptt8XT0VXrvNxRI3efO1JwMXXElqlVfT8u3PdeHV4dgSFCJ40psqhBACVDMqmk+UoSDsQ7we2JyEZJUNuQTfitgo1/4R3i7ReXrHf0LB/wTiD9WiXrxDaO0lMuDwKaOJZQnRMojuGKN7Ht8CzwywtxHwhmFtH2+9BxNjpgWVfzirQEi6uVzM4uo+qaSuSLYi80TA5RcO77r81mHshkmQwpTG23RaIYg0TC4Yittyut7pHO8VKwLr2Pma2hJUxSA9joUeL/QOX78k324iC98k8Bg6v4di5YdPVRdp5eU8MrgtabRrCHzO53Qw3ohYNqak7uYM7m6Z7uqvwILORESBesQPMU83gk4wQ2R4S/WpYPKeEaK0dZhyEhsoj8RTbt8m5o2EPHogpTCJXaW0wJeMDgCVA9/2S5lZxMesLEYgfQ5ByeBIZSoarjyMjKPPqDg7B03G/MDwJ0MuLySjSxgBWNvO8jZp1QY3IelSGjvgW+y/Zkg0zS9Y//bZA+m2H0i3xXHCI3JZG0kFpMzIjfvZtPrGA1m5wxD7CQXs4Lt/vOdODty7/R3ZkuKTbomKdufNRSqvz9h6uk31xuqDD9Irjpxxq5bEqgvXljxvj6qHipnae7+WiAloU8NrO+ChvNAUaLh2rxwj5U5vp2Of3rshBsiD6QVNi0M8V5ySG6odIn8TnJBkI0WvcnUCnlRfR1Ohp1pZBPAJmV5DfOxeGKmcsIhhOg1DWw/LqEt1ULbUj7s5+S/OXtCo8wtuivYmMATV5pBd0TxXkT8ULAfzllGGbZZrF4/UtN/hFpDlc8m6lSmaJYSH+IWwNpuvQDzAZdOY1WUV1TFwHAm4pVMwNIUEw4zGXD0o1TZCYgK0kEkyGQ6ymIwjnwclnBssluMVcsNdzONhaDXr4yJTRkur0SZcuvqk+ztAalXKnvRxZnx3QnQsb9TNsH77GEJrhFvMBiogzZ0waD8ZYR2k1f6GHBlleMQgQhrMqG31Q/FEQkOk67wVw4ZNNnKbsXUTVjLdquq5nGdxQRsnFGUY16hAXQQCThQe5AxBJFMfib+dlwzkmTJZhUy3Sux3hRvRuaEYBQl4HrJekoIjFnTwfHKB0tFtF++h3ti3QpI3Cv/Z3ch1GEYhXT6J0DhGZYRz2r+EqGFdLWmiD+Tsdp17pjoPNrA5CSOf+CpnZSIp1wzCYnOi+LB34jz6jZdDajqATGUcwEd08gmtsaphIGMYYZMl2NWdHFYgaq936uNj48XIoqq1Bt8RNYw9hYaDJYOx8ZiMSd0pEt6DkbydjIdTH2KxL2lM4Bzi1oQZHJfHNlZVNXep6NTNCtqHN2wsr7p98UyTt2OmmhzcTwfz77nUkHFCNsg2HmMM34HKSL+DylPF7FlqQkUUlHnB9HDKgRS4OKCtY2hHwLZuWMw6IvOgAReEffv5TG24Eh6FwsofY+VfvWP3ujlHRUqPIQzhMa5n40gNIC/Z3wDb14czSyFFTkCgdpUnYsZdiJPrRTha+KUHQGFYBYzVR0r0RrkwZIsSVVe/9m6CPmNiNd52Cjm+fZ3uJkUs73Y1ARsyWULRva+KblRFNQFe5usEfI1qCo2Fepx+OjdhfmBa6wX5/4aPIbCN9XweRCAmWBrIytWjA/tGObAVaK5mPjXNhnE3HLEA0R6s7RAxkz+JtGDMi3d/OOwUbeRUQOlniXhYM+9AvZR4APvvu8OO67w7+XC05x273+2cnu4fg6dMx15W4yzoaDMKOsrTUix6IvwcSwIyKDK6iuWXIdpLl0y+BiCOO4CQxLJNWU5eqg1MdabFzOfO5ZNQem5fQPFhWMrLSGxS1ga8T2ziaFB7sEJPEIZC2cTm62ABExsVvHbU5UMQ9+boZPeXi87hP/a/WoGJde6pwfiwtZ/DvTFXXhKyCTCluRWsUFJYlUqIcrS2Mkk5ZliZqBxtbrNEU4obKCvq6JPzGfMXSPfjXBh1C6MMbKoBoikqcmUm1tUZsBDk1PZbt5icGEgo7yuRywKTFul+Il3JNN7vSUOZ23bIr2rHT8SV/e8W2rMFzaNSC6+STkyvpHwWI+6TBJxt6A9KauB+H5TfSHs5hsuA8qOU8teb3Y1SlAB8x0uzexTR7K5Y1J5jrGL/UnvNQrBQnlWeA+1saWVdS7/4c6y7GmslBGSRVRbVHx58Kg/oPWIOlmMcxHBLURaFoYSJgjKUCSwiQwljARrKqNr7B8N/IoYu5hb/gmS4D4EztLnO4rt4iwkGzqzD0SIfiYTPvVkkkxAhMd5MHt8y4JtJTr2kcJgjm4qcF+SwpiYlsU8SV9yfN8oxX6PhK3vn8pd+7baBUSfgUrnKYs/vfeSz7dKqZ1Np2+oto0pxOUtVgKYUCBL8YJFI0VsbpRAy8RGkYTOBxLGfdKn9IKr0tw3sjkzBBiurrM3OB5v3nMNJUl2V0ZRjDZc5oQdtKDLgOu7Nh7drGziZaRbY3IGpxkkQRzJUFDb6TkFgsI5oMCqFp6l9MKCWfYMSL5/+x2dhcVnIa7Ci3PctmHTLZCHFccxsa+IFT92g4dhiyWz4qIIIwoAjJuIBtAPI6dEd/2rPk/jvM/wlJeVRfDKnuJlsT9z/VeutLxphSbn3eCh8S0QgxulGWDcXdcC3tfxb4YJGyZ3jJRvumPFvVpH6QpoLcZA4nVIH+shyrlhQTpc9xFDcSRK/CnUHKnbB55ZxYEkFGf5n1FcMT+sR1AQVzAuvMXqIi9UZWO9wFL9bQ3DDCZVnNDZIZpDsSC/Sq7iSQEcBqfh9jkfxaExkG01D/g/szvxuqPKj7rlBXI5xufP+9ELSr//dyB58gqfxoCbgVwfSO0wsGBCtlV1Wr1Iz5TTPxiDIQ4F9Mx/UWYVRpeIS1hck3qCPnTDVP3VgpeIS7LGou2xZxCn6SuOHoucqv8JCStraVyn1mGO0BQuTbC7rjTzs1xbtrM35DLha74kILMeVT71JRZt8Jz38uTvLMcbtU8Cwlh+CySXd1cKmDF+i2DOB5xWjWCtGD0K8Nx/+JqXtKc9oVBBKPYLrWT5oLoZ1KvLg4S8/cWQhVK51M4paGFbMddWHr0VRVV6ryWI3++OPOweBvtDTN4LSfxISDXKUTVJwftZzSFOH+D792WDNTL9C4gw8EY6mWW5i17VHKE6DvBFNm/u/OpjYrfn4hfPX2P5+UzXLuYmDdBCU+wEmUnQkz/1869dqFBiandjTq0x6gDMCZdaKqWgj96wYU/C7esyb0myRRjzZgmd3xtkk7Hg2SNaCl7GObOsXuGlROEJTVVnSg6mqo4+I1GUm4T+vPTorR5QUH8aaSJN0Z1nkIRAEg5xtrNlxeI326MyCEMbBZ+GKgMC2QaOF30V75c3XAS41y4/3Csv5RB5i9vvZBo2uIsZJ5l2e4XtI3YWNTsIARo1AdODUZ1vI2RRgTSNszD7Yo9t++Gfu+KJRWfNl5FcQ0zRf82QH3YZa2zhPA3k6mvm7k2t/PEb9bVcEQ5ZyUQarGZkTcN/AMmqXgeUj+fJuDlKnibntmyVambkveQt/vJIIW0B/NPRePjn0EbiBQRv+gqTmnLtrytJ8jbmXK+g2AtH0hJEXz+mC7DSrHXIlynLro0qNu9PPgOHHEAoQQSIBrhdCiyWizHJqcisIHEonPpX4KJvoCFkdPLvA+Gy+RmYRbz514ZV1bUyzVTkWgzqEMiv+A3YiWDwGfLqMoelGNXaSbsRludV4WQCej+nRNiza4adigMVlpyOxoSK6jK3PkwPjFTbcKuiEXfGfsvwOK1v4YNJhFO8JQAU0g75+r80m8KXOxoo5ugbcB6nA9zEQxhLWlvBhT+WyHWqei6ghJqNu/+LNhwPbAbCgmVNsz5m3n+3rPgAQ9C5mAiV4P1shluf3ZVpkDAbmAMPc15fauZVpXH7/YtMLbc+p3rWBSKQ7HYyCebyHxF8DkJ1XIgFpHAg/3PgVv96/EhHwufxq1vL/A/u8xpbqdzXyFfRHg67fodpc2GnCg2zH5GEzJHaeIOZY6suFzXuiYQalDxCmVRbfVfJj7ylSxTGhoBJHCFgogFXdLDerxYzcPrN+7m1hpujtkeboBuHq6q6lAKcymB0BmoZLaUxZppRVoopQO2Ntrb16MpcTd87UBEE6Hsu0F33BHdGF0IFSHFSjfttn4XpEVe4BdfmIJAlNmnNNIO6auWuOplKta17W5PYNft2IZcj//m/aID7kREOCzld8LtyQx0HfaUr3rteHctZEus48inWEGo7gxaHxEGP7imB1yCIi0c3E0yscT4KZPD8qffM5WMznCRnyiA9aRD/UCuFEMrNKkevo/NByp35/5qEjGPHnzD+zuTE/PJv0jFRX6dBnkAD34+BFMclkX5jdrCNk/miAHFlrvo6tDXdQKrBz1NkRyi7TpuuZCh3AsM2q5kdjGURaaYRlbPl6tzcCrTlMCnVwmy1K2WksjC6p5U9Wai8kBZ/8GQwS+d37/9l747iYunZ9/N7TVFVTVRWlUKSoqATR1JqqElAAgKIKKSGBMCoREIKAAAABYGpPVQmhCBAChDRJIar53TPt8e7T+z6Hc5zP9/nj+d3TNWuufd3rXmvtvfaa2e01a9RAFeSmhOAyUEHE1e4GrwERUNfBCIqGW8OTLjUw4bEY+CkbwD3JEyYObIDLT4/A+cBc6BlhCbf7e0BvlVJQf98JzNYVwYeWDdDhpBmUuR2Amq6x4HW5E2x7Fw9nrCLBfeF4uLe2BwyO6wHbqnvAivHx0L42Hb61doGn0k2gs1kZ9OwloDFqBYS3DodbC7uB+nVr8PE7DztCCHR8Px4uWc+C1x+ugOv8T/C1hyqsG7QcfoS9h9Ynx4Pa2FXgoDQM5tf5QOWRMDAX3YJu1Vvg5aGWMC5wLaiZvoElKcGQajgeVgkmgfCBFKxn9gcVFUe4NswIrh6cCfNfBEDYSjGY5PSCG6HZoF5WAiPjbGBFdA7sN9sIXieegMnwItjnpgzKqlJwWkggq3MZbPZ7CpcXdAYr12xoFSaBnd/GQdfWPWFR1TX4tLQlxCRZwBTLGLgb8R0cOs4GIxdPOGuYB9km2+FYThbY9XcHHoyFhAU+8HJ6R9iatwWcJgCcuR0DZw5sgu5D78J9ty+wR9cY+kfXQdB2G4i8fwQmxnyDeWnDobnRWxD3HgYu9x7CgXhnsGx7He4tnw2jhrQFaH0RPmmYgsnNZ7DTUQohraZAyvBAOPqjFyxc9ADaBJ+HzmWJ8IYOAEnODZjaTR3GkmJo9vQ+jHB5Ck+3roPbbdpD+4QyeDGiP+Rd6wxqL5tB6YLr0FzsD59bHgDj0tHQyaALxOlPgDhfCmpWj4ZjaYug1bsq8O3jCbqhd+DwkwdwfLwHTAm8CRrt98KdlDOgsr8KxsxeBHuy4iCQvwyWz5wDJ1aOgmn306Hj/olQTV+HVYslYJUZCkOvecO1h92g/cHbkBW4CvSvzgaulSHo+2yFnJE5kJ/rBf1PrQVo/hmKPY9Bh96vof6uLkBGHbRKLoDImxVg4FYD5Z+EcPptNlz51h7WKydD5nQ36KR+GjS9P8My/W1wxHw+dDq7E3qty4L5ne2BNzQcZhxIgrC3rcHx+kaY26wPuM99AdXPEqEseRO8eBMPKY6bYNnHMBg/vhtcrtcG3y1nIHTvVJg+wwNWje0MO40ugOi1OqxybAdfo3qAg7IZaPEo6Ks2CewqRkCvw0kQ9ZYD6fcs4euC/RDhOwN2NpPA6uT9cGbtFygaPBBuaVSB+WYnqOm7EE5NnARP3MaDYKwSLElcBEMHdYDuQWIIf6ALnX07w+h+s2DA9GLwHhIBmuqZYFMzGQxD7oK16nYYy/WHMy6P4X10LiytbQ69wxZAS+tLsHFyB8grOArHDIdA0ospsOxhItjN8Afu3gyYrZoMnx0iAeqs4f30gxCS1RuCSl1h05M42EM2gWdyPWglrARH96ewrsd2eBK5Epqffwtqz1zAqLstjBGmwijhetDVWwc6ZQ9gqvAEPJb2BeckHRhpHA0T9hlB4PXLcCXxIugK0uF2FRd6z7KGD+e+wOM2l0HD8DAkWtlDUFw0qLs4gXZyCxjY8zC03JMFJz4ehzFW+hCe1R86ztsG4mGbQInEgXrlF7AVrIRwxxTocUYVeOZG8CB7NNSsy4G8Y31hwLV9cKD7DXhzqBscWZcMTzwmgcnEpxC9UgKTVgyCusfd4fiuI/DMyBHwBfB+PIKg/iHwUfk8dAh2gOHDaOgl7QlTai/CrIzP0H79MzgidICQlV+Ae90IvrdRgYevWoLr6b0w3HQNdLuhDgM83oFBxl5wansWKg+3AL/gg3A7cx9oEh0YPecGtK2NhvkruJDYfAbk7R8M0yJegOQDwNY+IyDn0Xk4HHIJom/dgiJOSzj5qSOsTMmE7GOzIcH3EXwdmwp5wmo4WmkPT8q3ABkjgsKn4ZB0pTXYPD4He9r1BDixBY4NXg/nhnOhQ8cz0Fe4EB6pHoDow9owf+QuaKZvAyXnO8L31/WQ+LgBEjPq4VX0VFA5VAduwkhYEmEE9Uul0N5NFQJDncDGOAH6p7/H8+kErAmPgA2hPcCRHg3x933B4VkzuNLRE9oFdoWrkTfB4foFoKfWw17YDcpTX8GoJ6lgMa0XTNC/DRfHxENkYG8IG1YKKYMo8B/aHVrdPQ9On3LAIGI8jHV4BUs6HYKWp7JhV+duoHZ+L7w/iWPUVwtYM/kVWEtnA09JiON6R/C7kQrm+1Lg9O47YD9WA87UeoDeo+uwIKMQtj7OhCPN0+Ha7sWgNmUMdBraHKxhKCwyrITnqglgqBkEG91XwdKMp/Co3gbC2p2D+YldQPlzA1ykd8CkKX7Qx+Yg+OWMgo7fRHB/1GaovrIBtPqvAvOe+2Hv8PFgSE6C0HkDFJhTMP1JAlx9eg7ogBroH6wHlGoYrEw7CqfEhTBwqC+0+qENG2Zkwx4VFxALuoJKyXwo9S6AAR2+w71r+VD22R1igp7C1qAH8DDDEfZuyobZI4ph8stcqHxkAJd68sHH2AeGzhoPt9NrIGJdHhztNBa0vT6CmZsHBOYshQ717+Dtvc/QJuYaTFvbFdRKc0F6fxVETHkBafV5sF4tE2LGRkHYsVNwI2I7uM2YD3l6U+DrrUPQYeYzOHv1EpyHgfDilBZEXbKE1wsCIOrBctAysoPFxjxYGJIMVIdmsHNeNNTXZ8Awbwk8xPfu8ocGsOLSRcjZVAeOB63hU0Q2JOd2gwcHh8GZg2fhVoE26Cd2hGnDu4DdsERIufkS7plfhLBxh8HNZhvojS+Aes0+8Lz6B6x2CYcXCXbwrjge6s4cAklFEXTqehXsewSCs4UXmD7Mh8V1GvCjzxSwN3sAg8/Ew4CUlTCkTQHYDC0Bcd490DTZCC0iL8DkDUFgNSoAyKAKWKSnA9Vn9aDueg10EXVEVEDZ2AJ4Mi4AQldvhXVOErja/AIEjtgKz4eLYGBcHjxw04Un032ho9kTOGG8CyzsfGDk5/vwcN5m2DFEDH4J32GYSh28nnscEtt0A+djbSB0fQkMLTsMsVbOcO3tVhiotRdSnE7CofvaMFnZF4JPVcKiZQdgWb9NUFvUDSzWnYb5sX1g8y0LEOwsgZJeQ+F5VE8I/eABDdufwbji8TA/dC9cOjoPhn7ZDbbL2oL7paEwMkINLGwSoEevOEh8+QZe7yiG3j8EIB32Dsx0rkHuyOWQ/N0W7mTmgk7uLXg86jj0yk2AJZ4TwCLBBezmJoNu4FKw6TcfhHYtwJPWh2VWSTCHnwgHc17B68fzIadnFlhVv4evodgH1tEQvMcWXNefhPQYTdg7sASsn0yEyc+fwJZkEzjYYQNMutke1D+eAa+d5jBg8zWIjJ0IC2Pags7FznCgZjUYDnsLFp/U4Cx+ppm2sD/sMxkIZ2uPQOyze7DxSSA068bBMndC3O5dMONjOPRYNQ9iLxyCsM5jwMd6NECXj3AbZkNd9VCgRvaH0ulCYJngh0UtAbSOXlFumAg3+3zjYxowsGCOi4zHmVb2kPmZt5vnLONtYl92A7SWnyd3bYi1De5lFCoAuTl7Anxv8OgUTfd02SHa8pWXnl4vRXtG+EOGouWStbbNbw0duo80L9wbqqe3mIDc8j0kPWT53hDLnFhpOn2TnK3m3VcLO0oK/H1uHzkVR+J7Dthaen8o+rOtkkTQy1r4uWzld3X6ccj1i4SMLXmwzSBguihQONttS7mEFIUs1Z03Lkm0ZFFEmdFLCTH4Etp10O2V/KglRnfSHkrI99W1bYU3V4iefnnSIaxQQgLz3wQO+BrAz986y9j7ioSk3HEa/WpPEj/uc941twwJCZ8fN3b/lk18ncTaqSPOSkidpH5di7Or+V97zbBddxTL22Yf6Zrhxt9ddKdz+R4J0YxISuyiNEVkeqfhRMhWCdFOt7cZNGyDaOBo/UJqvYQMfT9gpUToLypwnCpOXy4hzarvXmx7da2otOOh41tiJeTE0DHvXt4R8geu3pe/eZ6E+K7f997IVCiaP3AB/8IMCXHt/HRoZes1overVjrXTpEQerABWZm4gj/r+rQPoydKiNUHvehtDzeKisdw40tHS0iAfU+3r+Vb+IcvTnJcOkRCtjsnXI99u0bU8mFdG//+ErIqe7+X+7Tl/HsrJyxz8ZGQBdxXacrzhPyNJQvW9iYSknzw4Mv61Rv5zhNmRcxzRt03qsp43FI+2X/K76ajhFS9bb3ZtpeQ/yTmRbC3rYSMU5tO5l/YKFo8seb5M0sJcTyiHv78ayz/+dPWNdtb4f6np7XYauEqSnr4qHCRsYSc0eDNiO2+gq+p9Gr/En0JWXP9ZuI6wwj+MHu3Qyd4EnLuSFr/Wf3j+EbnHTUaVCSkX9TRF5RHAt/xQb+6SEpC+ny7M7bHkzV8abOgU2p1FYQ7erWLcE+C6NPOdeNzv1SQSf59Cz72WSe6fqhn9wOfKsjqjgNNv6mmiEIeKIcfL68gt7slu5UVTRd93fm6y+O3FcTI9OZpE5MU0euDBtkdX1aQ8H42B3x3LuG36aLfb//TCrJ8cvt5AfrrRWbCo1zvRxVkdGJz3zUHRohsOn210LhXQUy39A7dahcj2nTQ/2FNUQXRO5oV8HGiJ79jYmCA2s0KIglScVEP2cgfDi0/ul+rIHOVdj16XhDBL+Rnnt2dV0Ec9HXIaul6/tM79yttsitI2ol5l28mRfOtbbrdfURXkNmlQz6kt1zP13pSn3JKhO3ZMx26JK8RHbDbHn3qYgXpvWd9ScHTpSKPkFu7H52rIOOdddLzns4RxfptH2Z7poJ8GTO/3Ec/QaSzbuy1vScx//16Y+Wu6/mPrM9263WigihvXW5/fvN8fv2VTcX6xyqI+hCzF88nJvE7DPF9onqkgrzPM/FfcqUL/7zPyOVWhypIV3GQ7ZvOyXxfi2NG0w5UkJ3RKYF9Xq0UqZdEX3y+r4Ic7C9xyXVaKVoytGfawr0V5Pg728Q5g+NF5tkFXXz2VJARI4bNeXJzvahdm6GxzrsrSJDJQuFh3eH8mYf6FQ/dVUHatxlHS06vF91wWRSyI7WCxF7ssvSY/hQR/Uhzlj7yikPhFyShE0X2LYL5p3ZWkIHLSoe4lghF8ckDaxcgv+U2amFQ6zmiqPHlZbOQpy1YIe5TkSCKWrzPdwvy5W+GtupskiC6Guox7APyO8Xq465vS+KTsU/9JmP8lvv6XyzpPF+0lPow0xDrEyYOHVJfnszvnOlAfUQ+dOq9I88/BPMnDLjV7TPW3+PWafvcXctE+i3chlhje7t0d/l0bvJ6kcHNfimJuD9aSU16xo8Tio5daevTAvdXxPAZD/yLk0Uf13ltfXiwgsBy7dGhx5L4KSHLH145XEHOvK/MtD+/iv841cbj9dEKIn2buy3gXLBopdfZZp3xeHmN/zwy7st8frfZRinH8XjGubY60Fp9vShPulZzNB7vDq2mrrhwaKzode6NtO7nK8jIi0kxtW2ninQG5V/3ulRBDtdWt/H0XCfyH/B0Z2x6Bem7OuT+1GtLRJdUr0V+ElcQ65trbetOTOcnVe6JXZtTQS7P1Hje9XY4v23blyYT8yvIxDYT2nBzl4qCX4+dH1JQQe46vniZYLaC79SxT/nWQjyfLovuFF1eKxrbzu2U0l083xwrtjkWJPFHnHYw2PGwgpweNTMifnI8n66fOzTsKbZ3++pNN57FiuZ9vkOH4fm31On6utktVvKP3RmVsrOsgnx/WNRnzfwkUci5VR1UKyrIpeMlwx5mDxX9MPK7sPtzBRF82e+qvTdJ1HPk61UzanH/rz/mXH1vkqjXuB9V0VLsr8tHhL2oWCvqo7LLIU1ZQm48Ga9xXxrFv53ZN6kVjjdHN6/7/iN9rUi91f3RWTgeneadcDgeMZO/bdCSJ1tNcDys3zmm88vV/HmF0vFHzNF/pHrRmtJ4ft+i4Z0+WUtIaIsBziduTOSffauSHG4vIZNM1k21CwvlT06SlJh3l5DbZwvijJcLRd+zxw7VJBIy7buUjD22RhSTqNqnYy8J6X1olvNxrSRRVaKW2lI/CTmg6rp/yZ4o/tK9P0qMR0iIThuB+Y61saLNcVebvQzA8tdl3vUftZq/pPNjpTeTJaRvGHV0ZM94fsAZ6rPFTAlp7XZG1eJurGj81vlOm2Ik5KpWL5eLNomiDrtqDH0SJOTOsp4B3HNR/C9kxdtOSRIyfcb2geW5cfy4fld+DNwiIZVr76zR/7pG9Chp7+4Te3H8j2r7YvPxVaJPoas7+p6QEDXzw+6i7NV861GBFaaXJKTzh0PZybbx/E2Xwrrb5kpIxZIix0NBy/kC74jR0fh++/Gly6tL3VeLDDO2Hat/jO9HN9b2d0mczX+QtGNx5lsJSSwIcM9UHsz/NH2NbdZnCZk4VGZ3ybwGXT09vUzS4H7a9NKuI6T7PZX46qCNZH18xLuXVrGkvdKwq23Cw4lRXGlD/uPhhAquqnrg5Ukm6a5q8dXKgexf1z112UJD8u5AZWedC/pk5uCAx9dnfc4onkdHRdr8cAPGGseZN0SRgtxKFSndEPz1VeCue+Sv0nvDyu0vW99qmtKK9FfbXbcO3Xnk2AVFSjflgdl3bINNbpNfpcDYyseTYNriAnJH9NKw5dWz9Jvj7V7F7SiiFVyhA2P6hiSv5GwO6bL7TPdvWYU/tzOcZnQaGIvySf6iMn4zeTp9+epXVSfo5KVLRt0Rnf7JFTow1uzH9Yqr2afItMXc3DWOB37GYThh9J/bTyQHL5s4Noe4RN5cdvtpmiKlme0/U8V2hR87H5v/T+M9K9Vcfyh2F2FSuklKfl//X8Vh+lse+d+mV6MzdrawT2+a0uz09/U/z/erOE3TKfKOtJtukpJfpPQv8zXZ/mf+f83njjjY9YbLU6JIJ7WZOmfevmJCPeWoL2/98WcKjJ3mTT+64vEbokinqtemhp4uI/VfZpVu03tHK1JgzOv7xw/iHm8Jk/7c3uGjVoZDSgVhUhp+YaUZ2tucdp+hFSkwdvzB+Gi/VvcIk/5sDzSxwY3Tj4BZ5rbxayQzGyfcBoPXNLxZzqziIJsEj/f45LcIZwTLb5VFyOfpMOsQREXNBX/Z7B/5epLMskzgF8n8NrU8H5Jw2d3SIMwjm/k0ifkFwxk4nWhG4+07haK44wg+6NG43OHMxt8QbvIlvZ9LK8pz4lS+4MabqPI6RE/GVvjJv5DGzEr711z+CbNmzgX5N+uZyT0z5+IUsHD5pIh/eeEWnEcUiLfH5uI0z5/fCFQs4iKfXAWestuMHeXFNa7HJl+GpKP8CwmyFjKhwUvRSvnekM/FlP1qWQRzV1B++xEPAe6n4BmsXSebVBMku1P4X53l34oGX7wjjXetsXJ4G3HiJHnlcG4pxpLffkMf5oul8ruS0Nvejzmeih3NVBt3ZWBjtiZK4/FlHaHeM9kUhsgmSmErmT3qPSd4InMfkylIsasUC+iCO/NCPpO18XDirVUYjL/vPQ1/iFu+B+XrYMoPvvxr/z+dhuALnDw1Vz7FQV6svJnMDh7A3ITHG8uym/RYP6zrz2OGE56ayrIcE3HGZpCiv8mdFDsCi2d1t59lyyso302y25TsEn52myA8/jLRfLb8Rva0ibjYH8h/TY45gSbK7nnL8+Cs3mj5GtA4FStYdiawTxvsjXgiTsVNPsyvazf9hRGshuL3pWW9HJuGRyao8Yzo/fPnBuSrEkSjdz+sunzupfzu90ycp4jeWAdcymnitKnMEcN9oIjJHP2Z2JbgKPDCW/rM4vGKnfTzd+qgvzwHe4cpwjYuFf1zfTlFtJ8yNom1E1mbWfP4YACb/eziIYHheGr+V1f5KcQEUTg2KWNAcJTsm0J44sinwCk4+yz6j2dmRKMfWwucoKgfM4+mcRRiFTZY3lxmLQPMht7MNnmtFBvZh12xwj52bWxJqKwFLJW9FTsVc+ufmbgAA2fhDKifix9Cf9kqJrhK17++iQ2egZGBExS/WMj+0UH4l83iDIB71AvuRa4xtVr5I6cZtwo2KVFKzsonqFjKT8me2wqKlXeDvlIrpSzqqZIaHFUGKojziQpW7sJZybnF6ajUj/tSeSfnG9dMWU35JKevshFnDgzi8JU+Kb2CbKUF3AI4rDRX2ZITQYUrteEe4XrBD+o4xCkFwGtKlZvMHce1hRFUD2odZClvpTw5PtQXZZCbCWiAiYkJoDFb1BGgiWB0PQ3UlTRUgTJV1zRGXUVTpqtgHkVOtmkjFJG1ZLoWAAfUteWRteX6XxiP9drg55M6jxHZehPTZb3WQXB15Dl1GZGtNzF91mu9n0/q+goR/1oAogU+/0droqvDr82Q9br5zyd1Q0Zk602sGeu10c8n9WYKEf8ccKJql67dujv3cPfw9PL2AefG/zM7hF5ZP/xzJ1fFdVzAUJm9plUaORkwdGRKSso7Mm9vB/n2d96+W0f3rqKzidUKW6gkILPUL5gyln+xKtbuHi0c1r295ZnvfJCZkKWrjaDTi+7S5l9LH6jtM0sHmQWw9BHezWdH36XD/c/d3TuhbaMuYOnfOi491uIufTc0bcer+DcikJk5S58ze8P4jGK61K3D+smm3Mb8wNIDzLJWBBbTBfH9fO0fGDS2u7TmX/rBhAQHbjHdUzP242ePksb6i1m67+Sh/fbfoQOSBybknTRvzJ/K0oWbtzzpdYdeJ8wt7j+yXaMuZOnmzy+9KLtNP7A9n9JqvlWjHsDSlz01GJV4myZpt84ZXjP6PV3A0ufc+uHe4TYd/Whwe8tRzdIby2Tpmydnbs4vorlD3k4SnWjdqAO7/UeOjAktoisPxjrltW7N7J9qVvuP165QLqJDRinX5xy0aswvZulJM19Y7imktZWqF1aE8Rr1VJZeeCa5naCQXtSxeseFbpWi39KFLF0wLtz44i16KT/liM1wLWb/sPSAkuvHKm/SlicStp23smX2D0uvtIlQtb5J60rJED/75sz+YelivzCLMTdo00nXLq+9ZMGcFyw9dcuVr2sK6C7xOyf5zbX+Pb30M2v/dIxKyLpOrzm/wjFtgEmjLmbpYuGAq5+v0SFJN8jEAZf4jTFZetqL1qK21+j3mT4lQSvbpf+WLmTp/tXbRg26Sr8szuQ+LLJhzj+WXmgenLoon1b//ngRna7Yfyy9VJeTeOQKPaLP4BlJj39TN2fHN3mrcy+PDnlxas+UV7pM/2PvnwORDtJcuoe/7k7PHa1+Ty+tYrV/18vXVrn0mtGqSSuemjP9k6ULr0+17Z9D8+d0DczkNXf9LT2VpSe1Mq+bnk33HGLdP2HOJ2Z8Y+mVrb8N2pBFq+VMb+6wypLZvyw9wP6uzflMeuMePeO9wk6/pwvY5RfGLLwvpqtHly3bOFnD9bd0c5Ze+thxbTlNVzntGTNkFtM/gKWDLZ4fGTQfTxS7Ljauv6WXfmL139FrhowT0SoZ40cM57Vk9j9LL+3TM3zdJTr/8Oiyrj3auf6WnsrSUx3veWdfoCcNs+/fIcbg93QhSw94vfx25Tn60Uynq903WTH7n6WbqxBV07P08HF5gaM5rV1/Sxew62+68b77afqZQW3Bo3F2v6ebs3ThnopuwSdp9T1rosfFGDbqwNb1xA4aJ+i1q7vF7RjZ8ff00kqWbjL9iccRul/kvdfzYs1+TxezdHHnLyOiDtAVu6q6+NTZpf+WnsrWGy4u3bGHPtxgVXOeU8P/LV3I0mGO9tbYnfQr9YUxVsIO6b+lB7Dbd1fV9OImusf+7+uHrGrPnF/s/HVpB8Vr6G3773yJafVM9Fu6OVvXDbMpXUS/EjzSIi9M0n9LB9T/2n6tiyUsPXGWka6QlNluTwm7osvsH5YuXD9imHkSuf31hcroEsXnK3b+q+3b9d5MuvBGdb6UasPUj6UL3iaOdU8lg+9/GiPWo5j+UcHK36n4eMhe0r4+fdbMZnZM+SxdvNPwcPJBssBqVOGGuUz7BWz9yY2Z148S1fYPelVNasHsP7auInZ8f5zMd7nq56anzYz/H1nnt0+Ry6aTZOsOrWFjOyveH1l6adGBmvTT5P6Ax/vG5TPnXwBLT93Uf9S7s6RVy7F8lclM/QUsXfxe4w6cJ50/bj+0qlU5H+TG0gUjx45zukge9UrvOUavLbN/yln1O7Yqf8pl8nrSV1thkgFTP5YuEFEjlonInaOj8op8FJ8PWbq5RlyPKxmk1PvNiUnijkz9ytnje4+1ZTSp19jld68L035g69axq5tnkirVjjfnSCyY8/8D6/2r7ULbw5mkS4qz1+oDzP5JZenCBF5gURbZdWbx9anblZjxlaUnGaXVBWeTxBl92x60z+M31o+lpznFua7NIXPO1Q+ZG8eM7+Zsfder19a55MqCya/LnJj2l77/l667MmPA8DwypxPfbsUtxecnlh45a4V+ZR55brHt9So9xfFn6f5eS1YlXiHKnmsjdUMU1x8sHXp8OJGRT4rs3h0e4qrK7F+2/rVk1KirZJo0dUT7KlVm/GXppcv5H9dfI5Mthvl7zmjP9M93rM8/o4c/cLxODj8/OmBVVx4zfrL0UhfnpYXXyTn9ISNz+nZk6s/SdSvzfkwrILdtN+bOKP8kaqw/S08qTnM9eYN0TTP6aiO1YerPzv9Wqj34JnGodg+w1s/iN+5/lg5PXh2ruUn0Vl8ONrK41hgfWHra6almKbeIwzPetfLrpsz+L2Ndv/UPcJ5eSNYO+Njs8bZvzPjO0gMCQzvmFJJ37/nNVhhbM/2HpZfJ+mcRMavcN1Hbwo45Piz929HrY8KKyOJm+77e2KL4/MnSJ42amEIXkfPpvQZ+3K94f2XpF7TDvQ1vk/eXfC49XarB9K+3rP1XElOZcZtUc/37fN9mw7SPpQfcef7J8A65wLe4M+8Fc3xTWbpuRnRo2B2SP/tT2o0IPaZ9LN3BafagrDtkTLrKuSEuxsz5zdLL7rY9Y1JMtpcmlXd7pca0j6XnT89aNb2YzLoXqn7T2p4ZH9nxm+8ovVpM9j7QME00Zz4/AktPdVY93uYuGXklaHFkRiem/W9Y/TN/8Nf5d4lEMLbi47HWTPtZesDIZ+l375KS4L1qNpoa6U3/j0A1BqRHOwyU359O8v6A895u0XrUJ8vTKVfJznyV17OG5tLA+M1m7mNfr5fK/XhPNqSkoN8B71Dcnks7PPXaY9k7iwS7euyVSmn62j2b9vHTRUQ6Kc3zQ8pFeknhia+xi8+TG95FswwGnaV3Pi3NruzylUDSm7mLCu7Trd/ZTZljgBy0siqm3adTz35XC6j6QqB0oMFLg/v0gpUGrfcXIZ/T3nn0hXt00Zlczd4nZVyYNHTsPfoSz96p11rkYBxdyLlHt/VoY7xzOvKkpIRrB+/SD1vtS/EbhNxfaZin3106x3LN4WFOyAVh2d2/FNOGJdvDThvK9IP1B7YX0/3G5A0K+lJD4GBij3XexbSf3dqzoQ+QX0jrUf3xDv00afR10SXkkWu8bm68Q89p8bAqcDvy1PTmrQR36KXDfPSHCZELfSQv3t2m74S9vblpIvJSB2fT5Nv0+kUHXrTrhXzZo5W5brfpOG8VD6kN8iTrDs/fFdHP0k89bqOD/JuvbfiGIvr+0y691nyuRn5xS6h7ES1o//SW5wPkmyXJhR8L6fw9c8Ru6ch1Hxvv21JIL29Xmr1oN/ILEwe96VWI17nFlsrLkFcmeLf5cIvW7GhiejMceVrzWX163aKHGPe483AwcgddV6+9N+lR8We8rHvK9HdeWpyb9I9vRu5nzWX5Z3fYHXCDPlnt9ihWFXnSBi4lLqDXNAwfu6biM5afOKyDeQH9rp9m6sO7Mr54VfPF12nbTF1xQDrywjsFV19coy88mmVruQ95kn4ngfc1mlO480abVcgrW06affAqbTYvPnf0LOQOvpPDeVfpF92O9b45FrnYe7/59HxaUNx/81wfmW54Zs29K7TldenNMfbIIyfwL/Cv0L21ds2abYw8oPvWLXvy6KQebt3zKeSp54c4aubR7t82XB7woQrzW0YvmJlLFx0y4WjclfGsNfNLcmib+vMHazOQw+2Bdj459BFT3jyzQzIeJ1qelk07nDUMmLFexnuHpZhm0zW7hg//vgC5YG/SkKVZNO3ScuvpSchT5367+DmTTq9ZE7d9sIzbtcsPyKRd1K4ePu+G3Pzr8EU3xfQ5wSFbykamN/Qu4Yvpzu4FG+caIRf2FaUPp+mtdbdbmlOy+IKNat0zaE3f/r2ryz8hr3Xb3Dydnhy8ZlDNA+SpDwaE1l6mYxYO12ubizzA3nxuySX6ndX1qJiTyIXt32aLL9LnWtjxqB3IxTNO++y/QKdHnpufthw5HD1NrTpPnxNJ2i2fLePO3p+i8DrMsV/XVUGy/EvDtcedpZ+Mt066OBB56a6nY3zP0P1ud96rTWTlT+n/0Ok0/ahWd8YKO+QBud/mmp+iHc+Wt3dogdx8wmYf7ZP0iS7xj36oIofbU6Z+P0GfDhugU1FTie2Z3WfVo2P0zZ02Y1VeIYclr8pFR2iLfXYTvW4jF+sLEncdoltsfhFzQCzjHKcRyw7QRd3y4uxPIBfeCx03fR/dwyB18+PtMh7ce/mYPfSzt4NOHFkpi28U9LL3LvpH+wH2O+fL9A+x4hk7aJM1XVeenSLjgwZ9GrqFtqst31cxUsYX35rgupFOsiu60bs3cji88kf7dfShY5V5ec4yXms+33ElfajzXIPg9nJ9bFeTeNp35ntrS2MZL89S0p9DbzhpqMJVk3HLuercALrFd6uvrUslyJPiP0umkaj3gVlmu2Tctat7yVLSKWVxmu5E5MKsnD0315Mbxyr4X9ohh0TDzJ1byVuDtUr57yqQ6918kLaLHDl5fY7wOHIxVTh6+T6ylbd9d4so5MIHgrgxh8jZFI24tT1lfLhkivUxMmxLgHopJfPf/HrzrDSy+fLs19S1jwTMtV7WDD5FlNbGaFatQw7OK550OkNujvkRcnQMcvHwpSNVzpHtT8cdtrNGDlO6Rj/Ccd0uzC2iqhyPt9kAzyMXCWfugd3hGTKudfnKnMskXK17uNUK5OZvOxt4phPuiLHpySNk+tPpjho0WbnzstNZK+SCtbZGoWJC3pZXxNV8IJC2LnZJr0ySufHxrPoc5A7XbkRYZZH2fRJ4rTYg98/df18pm9i5SXJfBCPXdeJnP8smK5ZdDfXtjlw4L6zbpRzSx6GlRV915JVF7XuszyULJVVLyh6/R25seWNKHtntGuDY8gTypJDyb4Ir5MCIO+RNrExvUSM2yicrZqpLBMORC78M6fAun1j3PZJkY4dc8I3T7fJVUlS13iCVQg52Zh9XXCOm/MeWO++/I1BIjRk4+jpJOnlFud1x5GJRQWiHAmJ/c1NVpyXIA3zvdv1SQGb13VtxaYxM9+mSnnmDOPu+3Z7XBXnprQvUypvkzaBQez8t5EnNxepDb5Ht96WrB70pI3Chtf5U7UISAwU7b9LIC9drX8DPddrZGY/EKcgjE3aEFReSH83bHraOkul9nZZ2KyJqW04fBT/kvm1DtTYXkaFuwWW9bZALC0ql34pIAKd6A6WCfNLE++NH3iYd9pRObPfiLYGDhuoOF2+TY2dLZp/OQB7gqTvD+A7Jarcp9PBW5Mbl4Vaz75DhKs2rVOcidzjxw+/uHcIzuPf42jDkpfYvKzoXk7BzfhToviH80R5rp3IW8jec6a8EDm+I+1jwfU+v4s8pTtYC/zfk/L57CQcWreYfmzZAFSLfkH7thoS9rwvkH9d51iBd84bUa4/sZ70wRiTKnagKaW8I9ajEd1LmctGXzDGtoPAN0Vvfe7sZieO7fVH+IJW8IYM7vmjBFS4UCTclaIPuWzJorvr0EOl8vv670Dqp/VtiuTTd6gWs5E/RW/xM6veW3KY+RazlRIiStoXqQORbErVtyI3pdaGirvkLv0vXvCVx3JodmRmL+W+yzBukJ96S4KCCDs0XRorgKvkovfWWmK2YrzZDKBRFt7B6J5W8Jcdrt4e3F6/il+3ZxgXdMuLU7/XA24sS+Wvs1jcHhzKy+LPDuXcNy0XbZjqpgH8ZEXUNDqPpRH5eooc5RJaRWfP1PgfTK0TcuTUfpGvKyPDrrrsjIFH0jCtqA2llRKNvqfMzWCBabsp7Lb1VRpR3Sn2mwzKR5+q1dVJJGXGOnFc4f3Ec/8r4761A9x1ROvMseq1bIv/ifB8DcHhHojmb+w4QLuJPU614I/V7RzpNkD6sXLhGVKTPfyqd9o5ccrbaeDg2UqS13LtauuYdkRwMWmsqXCpy67T5ifTEO9J9/ajlpYKlopAfvbH9sv67NVPtJuEP3PbJHCrfEY3Ry6wPk+UilTRvPdB9T4Y9GpHii/NXv3+5rAoO74lxuO3yIxkr+XNbbtIF//fEYe6cJ9calvF9O9W0hMj35PGRB67R7mtEg5xGmkHSe6IfnRXPoVeL+rr52UDaezKeSPnc+smiolbH70tvvSdnIpP037rFiuZwB1ZIJe/JnqfapW4qU/ijtYIfS3U+kIsarZ3zVUbxh1873CC1/0Ba8ttGtaLmikoubXgo9ftAdtokTNKVzhVtC95hCZEfiJtfQqG3FOeDNltaK13zgdRmZ22c3RDD97vOvS098YHk2FZVWEsnirzHuN+W3vpALN67VJyXThU9U5/4TSr5QMZodtqk5L5YNDj67HOpTjkxmXI+OShzBf/l8O+fpPbl5GOewypJQ5DI8hVdIvUrJ7N6lYsmkXjR14tDPkqnlZPy0sGVexbG8++uScHjX04+ratdpRI3k7/Fop0FpJUTrrZx0Or6SaJtPslPpLfKyYz3V8wyFq7mR+fUv5dKyknDsp3HemSs5tt+29IMdD+S6aMuHly7YBa/5VcdLXD4SB5diZyclJnIz9GZ+17q95HwGkbkdtceIXq9tKQTRH4kXjqZ/e8JF4kOx5ZYQNJHMmZMffKamChRHCfsgfTER7Iw0CK35aKV/B69pnaAwo9k8EnpqR3UMn5NktdrqeQjzo8dlHcbIvjJX47ckOrgfOrJHc0FcYtET/IHPZba4/x5NdNrmTCfL2nmUSX1w/nwR5LTDkpn8PXGLS+TTsP53xmSkzO/DBdpSXfoQVIFofI1x60Sxou8mu97JsX55GfNPe+qwBz+rkX6LQDnb68bMyzgG8dflIMzwqGygui96TrWS7BExFk1r0aqIyHKayU9HH/4ia4sf90KHCRkqN7MqqOLl/OTu8TWSHH+sueV+8XuZDk/rN+hOuk0CZk1Z7NZNWeCyD2n9rl0Dc5Xfju7umjBbP7Cl6V4/CXEcU/MFhNqmmjHq9lmgPOFTx692bdi8XS+Y3bpV6lEQkYtjaS6K0eIIgKCq6U6leSRhlnvYwuXi0bMS/gsta8kpafqsicv2iRqrlVXL/WrJKOTr3dpoDfxY/vfUILISnJ92CtxHMTyy65XYf+rJC1mdc94Jg0XBT/iUZBWST5YvTm+iKwVOd/ZS0FhJfm603fu9wVCfn39o+9SSSURh92LVObOFm2sv6QJup/IBM3w+GLhav7Y6tffpfafiKRbfdB3ejv/4Za7OP5+Isf99SNnwxb+lqEWOP59IhVPX76orV/FtxpiXSdd84nMnOFS4gBr+SP5rvqQ9okso5SEcxel8M/v6PBNeusTCV2580jn2mARFC+vlko+kQ+jD2ynF63n701YwQPdKtJmdP3aMOFOvpLnEhz/q4gTvfNDlnQ9P/6LSCr1qyIzOnVa+JaK5j+06FAjnVZFAnmLoi/XLeLze643hKQqYuvO4V/jzBAZTBxqCGlVhNO6yilWuE7kMqjhg/RWFakq8XNeKF0m2njsgiZUVpFcdwf/gdIlohMv5v2Q6nwm29uPWzYdFosWjT+K5/9nYnT+PBkrXSsaFrqfB/6fSXrsijaxizbwLb7+0IPIz6TgrlbOJRDyL9qPxP3/mQw8cKrjdpIs8rj9hAtpn8lz5+jIsEVL+MOvnqqR3vpMHPVp3Z6ceXzjM2l4/n0maYNOhoQv2syvPtHZCHSrieUSk/Hdv4XyO6zoheN/NfEcWDLjDRXHn3hmw1upXzUZlXjqwmRpIr90Fhf7fzUZUpW19aR4g+ht5jSJdE01mWHTs0pdsJXPPZDxWnqimngv0KLPS5NFT611m0NhNXGdUjI9SJwieuFWqQOV1cRs8BLNxEWb+EV9S/RBt4Z02xsyPZgbwJ9nrdwMHGqIeue2N2/SG0X9Ih+XS/1qyP1dysozOImiQ0PGS6TTaoh+0FXtN/RWvr7um+aQVEOSJCcW5y5cxl/ndlUJ0mqImEdrqLnvFIlMereEwhrSoVe7HzaLN4sS5114K5XUEO7kj8LzC5NFwJjf5UDl0KNPiHFHryE/LN6RrV8W39acKWF4LdFi/u+Q82Gz7P8NtDQO1sn+zzC9WduGvOkiOsK8X+4N7/MkfEvUiaq00/RA18LUEK2TZEv900Ednx6jP2hFW/adf4jYT51i53VmN633qM3LnseSCDD2Iti+zSLbeXzVMYZOVvsX89OvV85bphrJ8LV8DoBYCcFFKCNUEKoINYQ6QgOhieAhtBDaCB2ELkIPoY8wQBgijBDNEM0RxggTRAuEKcIM0RLRCtEaAQCnKYBsDkIJwUUoI1QQqgg1hDpCA6GJ4CGw/DvamOogAHiXKeBlcxBKCC7wHgOa9H9qQHGUuMoqqmrqzAYNTZ6Wto6unr6BoVGz5sYmLUzNWrZqbW7Rpu3v6X+zYXu4qkoqygAwPjIRpOr2OsAyDUQQokwJQNcaIDWBAoGHDgg3bgZ4XqNMsXw5CAWn2K8ZTWH/2zzUX+ZhgaVz2NtY/mw7Mc7bR9VSXbA5Qj9OfO0H3XPd9UW+hBK3m8XZomZaTTd+70FVPK1yydUhmZVkXN98VVdTrjj87Y9Dn27X0kyq2C5g/BT5BEwcwsRVlEPY9WB/T8VnVedbYfg5Im3M11ubJkiIVbuiPaseSMjC8LkvLb5IiNaN+IBl9RLyeN3WZhOkErJu+eolDzDltJxg8QXTNxEjltVj2qUFypjOSkAZ022BKGMairIslcuYwm9ZJVHUb+Kh4/tfLHhANPdP5l/4lk/sznQQ7W9+kRg+0PoU3PoQWRiy5+tQixQSf+VpXZFFIpkOoQ2VFnPJpb0FGd8sJpNOvd4c/24xkgScLrf5YdGb7B9Q0fuHRQ8Sc/b4wB8WHYjjrR2Df1iYkB13W+B4p07gf2gbnB/PnzfwORl8KabIzb+UTH8YuK3IoJRoB3VLruSWkrVqJmUuVClZ8LT7lwFQSmoNB6YbYNpmtr+Ei+nb0jsuFKZTq6sHAKZP+Shj2sUPZUxvoCxLP6OM6S/qx/Q91jpEyk04xVVSBra/srKqspqqurKqqrqquroGV1lZRVlFRVUGFVVVNQrwwfYHDkIJIXvmyCOqcpXRVw3Q5NtQY+kcJVUul9Eb86uAsjwCFx+qoIygQIUpB6OpcZXV1HG801BDqKKnslznyOMpy3NhbCa6EldFjcvF+mIBqphJFl8DDEAXNOQ+qpjKStPEXFqgB2qY8pDpgw4+c1BXkc+rVJKXwZX7ctjt5cr2ChaCz7iLNDQ0sVKamo3PPHzi8XjAMiWMoYLReRhJWd5aXVDHrY3t0JanBqCHpWuBhrxOylgnTbkvj2kbe39z5OVjC3F9NlUVNSxfHYEly4uWvdTSApbh/pS3RwdUmfYoY6oqZ2qyB3IdeZs15GVqoqIu96RAW153DoKxxv2LrZa/AWnInnAv4JP82GANEFgDYFnj/m8ObaEVtkdPfgzU8JU+GOGzKpanDjr42hzagwGoYJla0AzaQCfMo4+6IW61AHswhWby/dYa0w7QAoxQwWMj99fAKLryXkShjxqoInDPMb0Rq4uVwiOG9cN9Jkt4jceLx2OOGJos0dLiack5vtJo3KCFxw/jG2ONLLBMHSyjcYs5tkVTXrIq1kAfW9daXiMT3GIALmDKHPO2YIFKT9R15cfCDOtuzhxxNdDGBw/rrIWpunyfa8r3OT4UZ4u84vI9rqaBqXyXYztwf2tq8BRHn2mHrP6NHYHpD5hiJF2sQwewBissG+sgP9rNQReZJujJj4E2tq0VtkYVuQboyI+PGWijr7n8eBggx36LvD16tIaW+Kwl38Om8rNHR54X6y/nagisPzIArrz+GvIeI+sdKvIGyHuNfDs+y49P47MsbWyRjKHxKFCW164NOEEn6AU20AW8EJ5gB7ZgID8aPExbY2vs5PvaGMwRraEtNJP3ey1sqyW4gCP0B3doiS1ohTBFXxvQRR9DaAeu4Ax+0BsEGLMfOOOWFhjBBPO3RR8+9IBA6AszYDR0Q6/u0AEcoCvGNYaeGKkzBGAuHxgLQ6A/bvHDUvqAI3rpgT10hAHIZsI4GIWKNwyGXpjDBaywVjrgC22wvPEwBobCaPQYBr3l9XSSt88GYYj1tcMyB6DvcHx2hU7QDWvYChVdrIUJdEBmBy64dSB4YE16yHV9sAZNpv/1wEiDML8/1qcnxjLCdrfAGjST52+Or3yAj2VaotYC2uAWU3mPVMXX5mCGkRyhL5bYBdvdHp/NMLqevD90lB8bAThjmxyRtQYD4DH9AfsA+jcHQ8xviTXpir66yPGMRY2S9x9d9NXD0kzQq6W8P/Jwm5pi9AdKGfsL9oXG01FbW9admK7BQ6otU2WvG2UdHYbKmJyrqyNFIlOR6mJehaiFVFceV05RRo7ecoIMqb6+3F+xAb8yrNnoryN31tXXY1TkuvLP2BhckRu99fR/qnKmr49UJqGhN25odNXT1TVA3QB1dEVJV+ZsZGikj+2XtZeptDYzjjVybeSK9ms1VpunzrSfaZCWRqPKUB2enCNDjlRXS1NOmQYiZ7yRoOnpabEpVkxLHpqh+NDGguV5UcQ66zK7EhkaOmg3ivImoulr6yBldh22Vw+JljY6yvYGUl1tTUUFGo2nKh+LuoI99IMYmAojYT4+z4YwGAjzgMjfL3XBFDqBJbiCE9iAD3SBweAOHcAFLJmR1hhZG+Sy3iuAzjAA3MAfnMECWoIZmIAtWAOB7jAWS3HBZ1/oBn3RryXGagY2mMsTesB48EOlB9bBGxzBA8s0hf7QDtri657oORr6YFwH9CIwCtwwlxUsAHPgy8+OMViqO5YxHHphPXsjfKAVhENXjDUORmB5Htii0ag4Y4kCsAMjMME4tlj3/riV4PYx+MoD7MFTPv5YgiHGaoOMj+U7Yox++HoKbuuGJVtDc9CRx3fCHKNgEPr0AAd5CzrIz3A3UIdh8ta1w7oIsAW2mHbHLSbYcn3QxEc0eEEr3NYZW9sH6++IcY3l46aW/NPLaLCTv7O0AYL58fyXjw4GqKnJ36/ny+uGxw9jm2OudphbjxkhOEBhXdth3laYxxD05O/ruvLRQQ0h/zynrNL4RsF0eWXZePAvrqWiyuLYb1TVkCJjZC0FVXB1xlnRzTQUlOnY/2KMznBG1mY5yznDGK6j4ApZh8djnJmziMcSZVyLsUamzXBGRWt8/7ODPkAgAsbCUdgAy6EKnkM2zKH0mPc/Q2gLbvK9PBj6ghfMhqsQBrdAnXn/swJP6AmhMAp2gS8sglkYqwhugq58/LYGbxDADJgIw2EHrIQ6KIYrEEeFUy0wmiXGc4eZEAynYS9sBTXqC7yAFdRCagqlDh7QClzAGULgIhwDdWo11EMZJFHx1DwqndKFadANukAQXIBTkApLgKKq4RU8hMVUBHWdowETwAFGwwjYB9shGZSpb7CJWkVFUTHUXKUoJTUYCkNgIOyEbbAGuFQtHKHWUsuoRdR9zlVODkcVtkA/6A2rIA6AqoHD1EZqOSWknnFCqTxOAKUJK2Axtn0BfIV38BoeQyL1lvOcU8iZpTRD6TzFhc8wB6KxdS/hGayk3nPecEo5RZx8ThbnGZyhVOAalMJTeAQPYAkVSy2gplJzlC5T2ZwL1FlKrMKFD5w7cBsKYQY1n3rKucO5xrmiMlMpXGmqUpxWoBIH5lLTqRC4DPc4tzkh1BVOLmeCUp5KqFKsVojSKQqAJ3+n1MRnPflnYS1mi/yKCNFk/NdoMv5rNBn/NZuM/7wm479mk/Gf12T85zUZ/3lNxn9ek/Ffq8n4z2sy/ms1Gf+1moz/Wk3Gf62fZ3ajacj6byfwh3Wggn3jFHWY2s5ZxUnkhHOUOWrcEfLPz0ZgBb0gFubBAyiCPOhFjaQI1YFqTtmAvfx6oQ94gRDmwBO4BVlwDoZQLpQ11ZKjDwPBGvqCDyTAAoiCEiiADDgF3lR3qh2lg/13PfiCNyyFRRANkXAb8kEEAZQn1ZlqSZlxcASkPGAxLITZMAPuwTUQwxkYSrlSHSkTSoXiQS3Mh7kwC6bDfbgJ2XARRlN9qC5UW0qXUsP+f5qaCdMgHO7AdciByxBI9aN6UDaUKWXAWUDpYX8vhkK4AVchEy7BSTgEAsqeakXxKA5nLtbPj7oCuUBDOpyF49CfcqccKQvKgFLnzKdmYv/fxrkA5+E0nIARVF+qJ+VAtaGMKH3OImoWnoEasJIzijoCB2EvuFFdKVuqNWVIqVIUZzYViee3CizjeFB8yplyojpRlpQZpUUpU8CZQ83AMyGU4sJUjh3VnrKizKkWlB6lQSlxYqho7PPh1GQqmOKAOteYakbpU5qUGqWEY8Y8PLenUWHUJCqECqJA/vlWcf2L/b/xKpXV/7nM5z9mkGWuOZEzl22qSFkDvLrieoJxUEdDyvijrsFQJj8yFkVdk02x/2kqjM0VMnJeI2Mocl5TzhhSNlf0by02Ra7OGFNvFQo0QA0MgYfQBXN5fzcGADNkxggd+RWlAzSD9mAJAtSN0dOc+RQN8msyZXyogipydXxoMA9N5sFjPbQUwIe23EuZuR7F3Kz8muz8CHZ+bSZtzI/lsvMi5HkRPCavliJlla8tLx995fn+U15WfgZY7k/oyKGOz5ivaV4GWv9tXi1EYx4Ndpub5NVukl+HBV15+ZjnL/I2LbtJ+Ux+zaZtbpKXlYeVV08O9Gcfo6Z5Geg0rTeqcjD5WWiSl/cf82L5TCprK491jP+6vbqscvUYYPmsPskqu2m+Jvl/1oEpH/Efy2RDXl4T6DP5df4iL7tMfYQeCwbyFPPjg8nD1IPJxxwndpv12Xl/1h/7HguaDHgsaP2ERhOoMJ+xleQjqio+44MZC+TnNHNmsk3xf1gVRmPyIFfDLery3MxrfNaQe7HPbzR5RF2EMcIc0R7hgHBGCBD+iABEJEKISEKkIqRo8Dt5GH8xohQBFPogmPy/LF/63xigqSA0mRhGwDZW7D+op8wyPn+bWx74hZg4bByd1/CUdl12os/H6TVkb11x50maj+k03crKHhuqyfzzrTVWuN+nlyhdSNtw9TOZfyu8xbvtd+h9Qct4Jlp4P/tc1eetLQvp1NWa89uMqyKV81xMW8ZcpfEGTJ8+lz+RnfwT61/WZtGXXi+vHNH2Exmzag59PeAifQBS3MmGSnJzfK9z26cdppt+X+pory31KwMqiGuN5c5rzqdJ6hRO69N7y8mltc5DDkXnkDd1U4Z3M/9Abr/K6aMZf5N0PLxrYlHWO2IWnFfprVJMPrrPUXqTUEa+7TS127b6AZngO7imJPQtKZh/csDe0hKiGdH7arPo22Re3qzUySb36SeXDkzVuPKU5H/J8O1l9Ja2vWCD68J+JYp6KdZbVaybqlj/VLGOqWI9UsW6oor1QRXrfCrW61Ssu6lYP1OxDqZiPUvFupSK9SUV60Qq1ntUrNuoWH9RsY6iYj1ExbqGivUJFesMKtYLVKz7p1i/T7EOn2I9PcW6eIr17UBuZR7Jbdf2/TblKPmc893/Jn2T3BvEk+L3Bxjd2bNxHd1egkY/kVujXyfGbyNhr+3Ahs6/meq/GbCsqWNTh8YNSjKD/2QqCGUW1JtAhc1Z/qoIJdZ2HqOpNOGaCI0mC1Los+vfhKuyAPI4DFj11WFzFpQQPHZdGfBYXI2BMqt8uc6Kp8/w/6lRTcBhoMQCB5oYq476zDjWCmGJsEN0Q3iwxrEoxErEQUQ+ogJhRqGOWIkoRGhgIQKmIC7TXnZ8c4QNM0b2Ye7nxyOOM2Pjb9sftmUGYhliNyILUYZoRgH0Qyxn2mL237SlBRPbAeHGxJ3ExDzzB235G47LX7Yl4f/ouLDL00UY/oc2dWHK7oMYhYhgyt+NyGHaZE4BDEPsRrDbwo7djInbnonpgRiCmIJY9v+gLTaIzgg+whcxgilbiNiGyEC8keWjsK0I4S/aYoawYmIqPlMEIRb+P2gLu68NQoQw5W5jzplKRHsKYCpCjLDi/Pq42CB6IgYwfWz5P/l8+Qe0hYcwZpXBPi+mIuJZn4vLZL5M3ZMQJYhuHABnRE8EH+HGtIX9+VsRvwsTOwARw8TdjdiL2M+U8X9pSk3fc//ifZfLoOkcnKb8r14z6R99Hvj3OjaJz4DbNGWg3CRVYV43TVWZ16z0L+uk1qQuXBbUWNBlwNSf0Zvyv37NpHLTZ/pKNwaK176sdBQrncpg4X/I74Roi+iK6MX0Px+mb3sjhiMmM+fTPNYcRkPmnLZgrilbIzooPhsxcWyZuIQZ9/sgdBioMmBzYFJ2P0ENYyP+4vOtEgO2Nf3syAb3F1DkVWaVo8FA6xdQnM/qDBTm5HQHm6/n6eQ0U3H9lwng4D6o9/aeFDLd38qTL88zTT9Onsf4t/KksvOA+W/liWTngfa/lcdcnuf7xzB5Hof/RR7n38ojFsvyND8/UJ5H8Ft5gJ0H/H+dR2HuXYTd5XkC/i2PueDf8wgxTRMM6t1Snify3/Lo/oc8gDxJME1fSZ5H2CTPlpRacqOgAH14rDwC5EIBtqeHLE8qK4+MX2j1Gv3E6KOqyCNGL+QBiEYfcZM8gy5kECen06h/9ygfOIdgfHQpRY5lMVbaJA/GJCEh++V5fJ/PI43HRtcdMBP7RGTnwdg/8zTuL8gEMHeXv2ZM0CQP/nR1kzyyfiNwh7829j7E/AmYN999S8pDsQxOTi8F7PI4zNjSuC1V5utB/WWMFLEMNwqOCnB/EcxDK2KYIk5tX8PEyPHg/EWMkBArMQJjTEUOCIFYEaM5wv7JXiZGlocSe5+zYmCfoGWQ55cj9WcMfcQzv3QmhtiD+xcxZA1mAEycTEUMHkJ3xEMmRoaH8l/EwONCEMyxl/Uvh58x1Jj+K4sREiLyUPm3/pMk39c3Cni4Lw1k+yGzsd8G/IzBRVzpqyPvhzcKLnuoNomBxwI1X88bBXYCGTBmZmMfXMbEaLTn8yxRE2Ifv+yh9m8xDqG2Ec8VJ4EMAAeZPnkhU3aOAWP2T/ioyfwveag3iYHndZMYF+Rjm2zMlo0HwFhD8YifMTSaxJAfE1YM5Ew/f5Cpcb+tC/y0gJ8x/mN/Z84VPEbYV68iUv6tvxsx5+Jf9XfcJ0yMEDH2c3HjsRL/Www8D37GaNrfFeMJHl9Z3xA3tgkQrBjM2KOIofRvx+aiAD09Q0Le0Jhfdt4wY5LwZ383RCz5UPQzRtP+/q+x0AnPmZUyEGYfsvoIM24yMZr2d8UYDAAEX7sBVGL5QlldWH2E6e9MjKb9XTH2t15iS7Ad2BfDsPxC3LYZYxT9jCE/F5gYqn8R40ZBP4Jlky0p2zEGuAOksfsZyM8FJobaX8TAfoF1WE8ASn72d9n7HbCNiaH+l/UoIDIA6GYp+jvuj/8YQ+MvYijGsMYYgv82BqDhbhebpwaU6ib5FzqkRVaqLfPNb39wUpnx5hEPnC/M+caN98qx3Bv0yjB5SHGXM1HVvJX9CuyOTi032zamhC+KqePEemS12T3hhf66Qbc7n5pRpbG8zzWbw1Pet9gy6lHPS/O+qyT45FntD3nTbOOwe93ORX/RXj3gZqfjERWtdox76paxsGFc3FRiJMl2C89ZSLql57t6li8iaRpX+TkNi8gynasuNwrKxQoAGGdiin0/G1+nYf/d+F+g+NzQbWRfsjnB4t/wfavQLWVHpSuwjMMCxYLCpGjAssQdL8nrweXkwLgastWwlmg/rCPz17wnjzY9JC/iaRKz9iBhjQ/Yd/j4PjcSkejeeJne08PJqT+mIZgmYLoG00OIbHzNwX70UIDnqRyN50khjvetML+7O44fGCPS3clpkzuOFZjex1QNxwRzzO+C+Sfg6xmI9TjWHMH0Em6v8wCWdeS5usxyqHNuftvXZVh6lsvzt4dEi/VP8genLBUNLMm6kCLadcn+e5roCdXKdf8ybTej4+PoIf0cBDbll8UtLzV3p7Z4ZUY993ffMbtr5g7D74KZ9tFiYJm+6ZdLp7WfuBSUtLz80nQJ3+Zksaib5Dxf56aaaF6UpihKS1PkMadCdLlqrKvVfhW30V4CutMqnmD2rpVi4yGPBQ4aWpnLdjV335mllmm987rAaOc4dnxQC9UVmc+667Ly7kRRHofj+uSknkvYQ0/XVW+C0rP5J/l57xalrzOh0yf4tnL7PkzM79ByQHrAOWu3Vr4fMnyzhcT081061UZHMHhIB3GBfzfBCHdjdnwoOvpJ9Pqdiot2hcb5h8uErpfi6Mu7j2SKxqo2EynPUXH1e3oivfva0IzsVlvdSrr4uGQP3MufOMTZ9ebJCRlT+uW7CW+HZkw/apVhNyYuQ6/bctIQfpMGliU7JommfVsiihqkxn8RPcX1iU3m5a2w5XKfmanp1u2qXfNIVTqvIjZjLznqlvTqM79wTcf050cPu1ZusUqv15Smu3Jr3I7kD6Dn1NS6lm4fT64V0ez4EL/upEvCDU76mjT8DmfKPddm96xdjd7Xp5/QtHbVipskKvebnOH9RT9j8NfXbqoU19W1aqrrV4flrjnUVRetwRPdBjvez+hnzHM5Ks7I6Pt0k1vr2+bs+NCMFl+e0Nk0/Y7JSdfRZsUug1uvyigbt8Nt6ir3DLVoW7drA63cJjq4022rdElHnWT+mOEJ/BVfPNNPKy93dTE/lGF5/I1br5Eq/A4kMSO71wa3WssEdnzYsLvm8sdpxun2l1e5Dg1dwi/PXpyxfGBrN/MbWfx5k53cHg3WzzhrrkZniAyJijSZX2WQzy/ufUO0qHRY+ohLERlU5BW32sJmbrVT/TK6We7JiNvPYceH2JNnRQWWXq4r+lmlB099nW4ad1V0b5KRm59TUfq6W51chz7sclny7H6G93B14n9S4Ko7LsA1iBZk9L3ilGGT1cLtZdelbnd3kvQJPrx0G+snGePchRnAsglzYohL/RwyYU4d3X5GHS3jbN2gQwx5HTCHGHSoo89Y1NEyztY9Ls4jY1bPIh4Xv9PDjnynZZytzzk+lzyNn0nmHK+lF2+ppWWcrY+2mEveT59BRlvU0lnqtbSMs/WI8mjibRtBIsq/0D2zv9AyztZX5c8iCbVhZFV+DT08uYaWcbZ+LWgWad0zjFwLqqGX2NXQMs7Wl9vOIDHNgsly2yr63vVPtIxDE1Nco+uxru+NESas/ycZMp9neAgthBmiJet/EPoIA4QGQhPRAmHK+v9SM+bzvzZCB9FKcV1immBTUNDF1mJAvG3d1+22I7btl6cyLtsu0wd/o+0aDh2xW9d5g93OxfPsJC1727ldam4XdeyW7ZKdYbbnR66T+RxFn6PocxR9jqLPUfQ5ij5H0OcI+hzGWIcx5hGMfQTLOIJlyVMZl22X6f9X9WlnLT7q1O7Y0fdFm4++HBJ3tPbEyKOa2rZHQ9pUH7nqmHikz/zth+EvzDdJePi438vDysenH35/S8XthkGx24ppXkR6YgVpXrifzPqQTzJe1JB5sS0Ek3/0EVwcniQI0/0seNfzvPsYsxhyeZUl8Wp5wu3UmkhSXOiYscDUi75/eiwBANJwVol+lPApgzMzNSOqV8+MlmmZ6UuvW6e33DVJ5DN/xuWD8aPJg4uB5EmLmWTxpfnE/dFCUp+/iATXLiKrpIvIf1NnG6yzDdZZ1nY7bLsdtt0O226HbbfDttth222x7bbY9v+z4zX3VvOM5S6Ux16nZM+t+WO8rh3o6HOifbyX+Olmz8Vbv7hf2RYt6H8+3CMr2NGrj84+70Edz+X2mtQvp/fdlCwP7nrxOJVJ+DnH100psFWGXT91D6+3Gz0DQvp52d/v4qN3cL3XrIJUz06Pa929YsIF67YM8zivYeu1zGuPd9vPebmL3Sbm+B86nWVrc0xMGQ8iWblX3J4lWWYkbdT1MNfZ7LnSvrvX9GEuPsHC3V5z9h7wzHz7w33Dx+GCoo98j072bb38J6Z6nyq7n1u5aF5OkNutrLmjs8W3SlyJY6ohcR1tk3GSau4xZfEmzwkNZl7apu4+r5eleX0Zf8yz79U69y4ufQTH/Nt4nNJo4XV44TbvwZVluXNrl+XUx5RnvXV4JM7UssXPcZ5khcg+o2+0mcdJ2w2eA7N/eI5p5eOza126V/OGk55RHX6479vfU9DfQdXD7aKO1/NDm7yTymtzQy4k59TvVc6O5X0V50SakPejppM5J7tkaJaae+RKkzz7HjrtqT6yjw+Ju+r1cupZT964b+69d3YROL677548l+v1/fta75Txynmlg1Jz3mwwys7sq5F58a4aedRjNanudjFjbEdLj4rc5Z7z93h6Zub299nYpdgr+sx5z8KoavdDSm0Ex9akunuJKz2zl67wnrdPK8/szJGcWBur7GWDTTIj21e5pYTuJt37pGccWNfOI3lfrOe5rwPclwb4+/RKeuL19fkFz3OcCvcU2kQwvXSI+4te9z2jJsV7XzpvlGd+7lxOinn37G8xtpmyc+oz9yy5XCbOGD3PyuOl1nTPEVUu2e7tB/l8jH/tdTfjgudVpTJ33fVcweSqB4KIlyJP+5C53vcSWuYNdMvMGRrgm/2h2DXTv/N5N6VXuaSXbk5G762WHvrzRng2N7yevdJssM+D2g9eF/ef9/za7Lm75vdqmY+b98ddnqM5k70l3HZ5MVbXc3RTR2Z3I/6ZHv5b3RwfF5NOOkZ01VQLjwlOfM/BeuY5JfzBPj6fK70qJp31tBLfd49MfEZG8M6It+9P8LS/N9x7g7ldnsrQ4hzdnCnZmdsnZBYTodvm3Oekx7lm9HuJmcfNLFPPar9xOS9WDfI5F1jtVet8yvNJ+1vuMa/zSY93nTN1bw3zTNX38e59o3Oe0b6SnElp87OpL7MzT5zo6zYurpy8WdOHtlxv5NE2ROKh+3JNzlW9gT77+33xiuUc92z2KNfdzPck4Y2PyyzlWXgOfO3k/fWHc95K6cucFZYJ2RcSEzKDXjd3k7X92bW+9NWPPI9n6qkex+FUTsdbA3wuX/zidbfhoKeT/yX33NGniHnBwcwVXx94dJtv4V22wy3vje/7nOTWq7MflSVllpy96pph+IPonFxEbxZwPMbdNfCY4nE3x+pGXx+PozVePt33eEaGnHT/MTWFDPx2LfNt2xCPMyo63qcPe+a9GCXJ2bRrQ7aHytZMfo/eruE5DaTbnXY+Xif3eZ+YPsnL26mbl5CX5Hnm7mIPDnxyb0PiBI4Gvj4HHD97DTu3zfPw5P3uP4JqvSKVdN31drzLBJYJLwNjhQJFmjwGwOvov283HIrJgp/b3OX/y8DXF1wBxGNBZu4Aasx2saBPJ4A2wwBk27601/3pv9IGy3UDaNzWDK85tsm3P2sFUIp5cBten5hgrCR5nPbNAfRsAXAb+rfC65Q9cn8fIwBBawDZNgDzn3EideCn2fUDcO4DcNAXwN8HYIxXY9mVfIAuPQGKHRrXeYhg8mA75Hm8WP6TPACiBI15AlwA3MwYf1Z8lr/cdyX67nVujG/W7qc/1vWcvI5bUt7h/5GUZPXGNrlh6o8IQEQi4t3Z8/8KVbGOgHG1Gz/X8HUwF6Yx2P72mI4wBcBioF9LrAs0tkeA6TcbjIqpqAtGxrSuJ0aHxnYIobFdqdBYZzE07qNSTPP7Nn6oqsa2CTA1xCBsy0TnxZmNGpWNeZUwHgfAPQt5HnIV5KrIrwCAMvrnon8O+nNRL0Cdh7oW6jdQ10H9Fuo3UddGroH8GvLryDXR/yr6q6O/GvrnI3+A3Bi5CfKHAGCK/o/R/xH6t0DeCvlT5M8a+wb1BP1bor8Z+pcANgb1YtTvom6E+n3Um6PeDPV7yG8j10dugPwOAOihfxH6F6K/LuqVqDug7oj6J9SdUP+MehXqnZF3Q/4F+Vfk3dG/Bv27on8X9K9GnY96Her1qLuiLkWdoO6GegPy78h7IndB/gMAeqB/Lfp/Q39n5O2RlyF/h7wD+n9Af1v0t0H/98grkHdCbo9cAgAd0f8j+pejvx3qr1C3RL0d6q9Rt0b9LepvULdC3gb5C+QvkbdF/+fob4H+5uhfijwVeQDyQOS7AGAi+u9B/93oPwF5CPL9yA8gD0X/fegfjP5B6L8X9amoH0X9GOrhqJ9AfRrqEagfR34Y+RTkYciPAMBk9D+E/gfRfxLyOcgvIL+IfC76X0b/+eg/D/0vIc9AvhD5IuR043iVmY7+IvSPQf0M6lGoz0L9LOqzUT+P+jnUo5HPQH4K+WnkM9H/JPpPR/9I9E9D3R/1JNTXoj4Q9fWoD0Z9EOrrkG9EPgz5cOSbAGAo+m9A/2T0H4L6NtTHoD4W9e2oj0d9J+o7UB+HfBTyLci3Ih+N/inoPxL9R6D/ZuTLkPsi7408EQD6ov8K9F+O/n2QD0C+Gvka5H7ovwr9+6N/P/RfiboX6vGoL0HdG/WlqPdC3Qf1BOSxyD2QeyKPA3xC/8XoL0R/AerKShwu647ufEQb5t5xb8RE5lqrPXMNtbaxSRDF3H9eihiKCGDm5Yxk4oQh4huLgxHM/ewQRCAzp8oVsQphjqBY8517MHNTOIgVzLwfJeZtqjNz3cZFdEcsYu6Rz0FMYO6BOzD32WOY68UhzD3ImYiBiNkIZdb8GBfmPr0VwhExmrlGXIzwQyQiVJl79kGIOOa60gLRCWHPjOktEesQBDGMubffEbGauX7tz8yHEiCWMNelHghr5vo0FMFD9GXm0Wgx9/LdEOGIWcz16lTEGIQnYizCFjGXuYb1Yq5ndRH9mLkE0Qg9Zu7UGmYOYwTCm7l+noYYz8w5sEG0Y661nRF2iGDEYMQ4Zk7aesR05vraCRGLSELwET7MNbQvc61thoiPjU+IXx6/On5d/Mb4LfE74nfH748/HH88/lT8ufhL8RnxmfHZ8bnxV+Kvxl+PvxF/K74o/k783fj78Q/jH8c/iX/Gfc59wX3JfcV9zX3Dfcst477jvud+4JZzP3IruBJuZU6l16ecT15VOVVen3M+e1XnVHvV5NR4fcn54vU156vXt73fXn2zrA2q3Vv7qtbye9D3vd9ffbf8EfRj749XPyzrguqS687UFddV1xnWd6kfUh9Vn1x/pr64vrresKFLw5CGqIaVDdsajjaIGgoaShrKG+oaeFIzqZ2UL+0nHSOdKo2RLpMmSTdLU6UHpWnSC1KxNF9aKH0gLZWWSSul36QAMQti5sbMipkeEx4zOSY4JjBmbMzImKExA2P6x/SO8Y5xj3GL4cf0jHGO6RbTJaZzjENMpxi7GJuY9jFWMZYxbWLM61rVtawzqzOta1FnUmdc17yuWZ1RnWGdQZ1+nV6dbp0OX0ekzdcWafG1RDw+T6TJ1xRp8DVE6nx1kRpfTaQ6RtVMtURlm8oYFTOVEuVtymOUzZRLuNu4Y7hm3BKlbfg9035Kdko8pXJOAecoZyVnKqcfx47D45RTBdRRaiUVRQVRQygvqgtlSRlSXPm3b4shB87AXkiGeJgDkTAJAmAE+IMvCMBZ/h15czBmvj8mbWior6+r+/Hj+/fa2m/fvn798qWmprr68+eqqk+fKislaBVoH9HK0T6gvUd7h1aG9hbtDdprtFdoL9FeoD1HK0V7xthTxp4wVsLYY8YeMfaQsQeM3WfsHmN3GStm7A5jtxkrYqyQsVtN7GYTu9HECprY9SZ2rYldbWL5TexKE8trYrlNLKeJZTexrCaW2cTETYz+hWX8wtJ/YaJf2OVf2KVf2MVf2IVf2Plf2Llf2Nlf2Jlf2Olf2Klf2MlfWNov7MQf2vE/tGN/aEf/0I78oR3+Qzv0h3bwD+3AH9r+P7R9f2h7/9D2/KHt/kPb9YeW+oe282+2HX+zbf+bbdvfbFv/ZtvyN1vK32yb/2bb9Dfbxr/ZNvzNlvw32/q/2db9zbb2b7akv9nW/MNt9T/cVv3DbeU/3Fb8w235P9wS/+G27B9uS//hlvAPtyX/cIv/h1vcP9xi/+G2+B9uwv/ffmHwX034XvhBWCZ8J6wQSoTlwo/CF8KXwlLhc+Eb4VvhK+FrQY24RlAtrhZ8FX8VfBF/EXwSfxJUiisFn8WfBVXiKjgMx2E37IdL8oWWz8FyWA2xkABbYAesg41wF+5DEdyBJ/AMHsJjyIUrkAnZcANuwVW4frDhQsOyhs0NZQ3fGvIbHjS0b3BuUGswbpjUMKfBt2FEw0GcxbEMZ3SU4eyNfJzJ0V7qLFWTGksnSedIfaUjpKnfS7+bfw/4nvqj9If5j4Afqd9Kv5l/C/iWWltaa14bUOtfH1mvW+9QX1hfWZ9Un1bvXxeJ0zQc6grrKuuS6tLqhEZCQ2FzYTOhnlBXaCDUF7YUmglbC1sJTYTGQlNhC7GGQEOsKdAUqwnUxOoCdbG2QFusI9AR8wQ8sZZAC4bBIPlPgfiAh/yHQaJhBiyEeRACEyACpsiX+7eHjvIf7rCGduACPYDIf9rAEbpD1xGULzWHmkQZU2qUM9WeekDlU9+oMmoztYy6QB2kRoAvzIFJYAxq4Azt4QHkwzcog82wDC7AQQhQNlcuVU5VDuCac0u5qdwAVXPVUtVU1QAVc5VSlVSVNE4SpxLXR3fg6HIiOf6cNKUkpUqlQiUHJV2lSCV/pbvF9+8VFd65/aTk2dOHDx4/ys25kpcpzs66UXDr5tX869dkk0Nkk0Rkk0Nkk0Rkk0ekOIlENnlENolEMRFEMTFEMRFEMTFEMZFEMbFEMZFEMbGk6T9Om/4juek/1pr+o7HpjZemN6Ka/mO+6Y2KX32A+NUHzF8NQL96g/rVPzB+9Q+uX10A/eoC+U8nPPzphIs/nfDwpxMu/nTCy59OuPnTCS9/OuHm775h/3dPWPi7b9j/3RMW/u4JO3/3hKW/e8LO3zthCQ2iIJwKp6JAUF/arbSboB4AtPGhsG9LQY+ahQ89aikyoVSsZK4n9hX74rOSUAoAHODKc3DxFXpwYSncxTyemOcQPmZRnpj3Lm7lolot1YcOIIBIyIOJ1ATuBO5EKg+ZALfqQ7UUGo0jf6jI46owjKlPhtQMJsEhKAV9yo0KoVZQx6jr+ImJwzHldMOHKYfDKcMtx1AJQQ99qhS9J4EZZEjhm5gSU6BUygX83CRQFfJS9QKaBZhCW7EddDf3gOEwHJ+7I2sbYBrQLFVPyBOomiuDMuZQkuf9l3F+PrigIl88ncc8NJCpAJfl8dP4zDz0vqz1+ZSb/J5s0zXJ1ZjXXRE2vwCPAcaRRxECHAbnrdM5TbhSE67ShKs24RQyC9U7egle+ZnXmHqzee8B7v17e/r59x7sM6S3+6AhvT37IwZ59fZHyLYNGdRXnv4n9BowCBhTZX3HXAOhyfpOuTbre+gGCCNmDr4JwoyZ696GmTPfgdnPnRHdmf3ugeiN8EeMQAQiwpg5+bHMfPztiGOIDEQR4g2iHtGcAnBCDETMRGxGZCIqEOYcgGGIdYhihJkSwFRENsKSC7AawVEGiEPoqgAcQQzDhupjQ0uZH5pOx8YWYmOl2Nh+2NBLOphiQ1WxoRWGACrY0CHY0BJTgH2tAM5ZYPuxodfaAzyzAxjtCNC3G8BFF4BT7o3fl1voBzB9OIB9AMDNyQATojD+ImAZ8ibGYa0NqfYrvckPK4sRlYgC3LYMwS4EWIsfOSA3Zra9aQLZPk5hYoYgQIlJEbhdrrP91VRVVJTRuIwpNTHOL4z6Q4O/2WYGhkdODZ4RGBUMLJsdGB0cFBgVyIwtzHnFZa/pyYBirVfGZacMlBidHUedVdI05re8xzdWpOPMyfOC4X9jTKx3rFjYqj+K9V4Wa+KkwIiI4Kkz4X9vkYo29g+cERY8438dSo09xivAYSEW5CarMvz0DQIOBIMSTAcuRIEyzAEViAFVWI35FwF7zWfzv1hzlsug6XY11mtNaLTmrLU9WrB0ZjxmOLuvsOP9tb9mE53LbGvqzwWWsf1ZPiz7rfxctg9bZNf/F/E1f6FzFW38Rf00f5Ff7veL9mn+on2av2if5i/iq/0iv9pv1F/tF/nZdTjfMpMb4RKr/tDKU6skmmsQFpbb/FT/hBbK/r1aXfioZqVTebXNvXvL7QOv97UN2srreifhhqNG6mp+erqfc+RjvX5X8gp9W5Wu9z5UP8j96DGj8aZpxaOzNm4aNmvFsEH53UymLLJ9ELFfa+tEPd1RoYaClnP3jC1ZMG/+zsgbIeOiSs+13Tz8yIttq1ftWtsjKWADX2y9YsWTN2sG/dgX+/pNUMKI0bYZEp//j7B7AIs7cODHn+3Wsl3L13XddZlLC2st23bLto3lWthlLSybW661Zdst/e/7/Pez3s/zeu4+tnXQBjSqaAnys2oI5eKBCfCeVBy8hpXoY9sVJNrzz7I6XU4/a9WuKig6LylRAoce0G77GOgaJ9Og7qNsgeCL/M8PN7LtrQ/nZd4vVzei61KHL9vZEx17XNN+R55O4YBuezleckUUaLXWgHAVWjArFaUU4wAUgduFrodj6nM8kVeg6uvCMhzK1+0TtMSH0YglN4qoftMYGKMTIzjoVRletc1avtaJJM6/42bdV1ZTbO261R2bdghNkB6mLbpk8w0wdA10fvhRf7Aw+qVhypujPMulo4CLTS7d9npRPGOw9Cvdiln5/RNrqcraTqFibWHXI8yonTmGsTk5faOehxMWnQm0i5cg4Am5wT2JuNSvyJIWt/r82YIzkcPnIHWXunHtHYL7VhQLcF8UcnsMsa29jPVwvn3/jv/vhvLls+FZx+DesV8v35joVPj8y1hIeOscIMf7x3En+JdOwcPiyRqO9cenCfvAlXgjoUFVM/50jE9hMSP+erBo18NaRU8tXBTVdYIBRRAwXDaBU04y2gdBD2rRo70lHvxeQ19KLQ9CzczO8ov+DCH/jRy1AZukMjnw+t0i/xuPHLEcWx0IyzwJctLYLLr8cQbWy5kW3t8CQgLlzulXqTkp5Izh6tR4Wjzn3xRPro3sYXcLTnaPP+k4N8yhBzsdlBWH2GhWp83trAuIZTszi4Glvx0/my3bTDD2r05vdKPcFE40HBqN+MeJdo4kvnwjaO5o/FLlV1v0AK4m2XmoHO9u/eKz6l08aATMcfa7zS/XbUymlXVPp3jNHwnDvox146oN6uN1DstKjNbnjlP8eFuFoSnePPJOZide5eJB9S3nKo5cbveEFL1fsE+6kVSAqiyCy51uj8cTdrjV29dydim8KMZMXAPm+4o5hAZaOiQRTuRkvPaLVILQfKRgOgM0XTRq7CPKX/hqZSlCO+3qAmKfCUUjA6fBcdMZTOAJLbrNQxIuzZtZdm+WioFJiFUPKTXneAHCwXDpO9g8kbLdzzFbnj++HicrPWOFmx7zRrs1Z4wHZMcbJ9SdpWeVBWZXruGs9/05O0+YT61R39e84ywHwYHTKw+hczEd2SbpfnnttaIpOLCXjDqC2ho0XOeqP5z8ZVbAyyJ7i8aOZR/3VmR9YFOj+G0dAjy/esh/4uddFMwYHrpU0DPJuK9BM8q65rc/+U8JqUvJR8cHq2nrr7ZxBFEV3z2Y2E2xFrtTXz3mObJBIzqJc9QIpnTke6lQi2u7+9tM2trc31v42EU0MUVcW2/nsUoskmd/JkeQV5E9BCdHXOzt3UP/AEBMuLuWUwGQsnkYC7CY7u9t2wV7uVrgtbW8egJphLnGfF5LYJT7gJ68Hamb+2FleeOFl88hOdYXDoTFVc2pU8S0eejPUagqHjbTZ0HYBe++3eEGWAAhceeCXDI3dt5dXHnqSwoR05zqDBTd8qStrZ2n2MrKSZ6isU5teHIq74UIL4KrR83OkDrRPU7JTlYiEWaYInXRuJ4vABPYVjZBEY71mT+YSSwBEkV50PDgjfWekJIT1j3aTjhtf2vB44i3nRLQa01c5DZT63k0vCVVCwHihbyz3j6PLX9kvJkXeMVByjF4L9/TyBy1aIHbaLjyw10WE4kD5vP7sLGiJM0nz0vTRKkKO0rUczTxyEZn27g557HBvJ+05xsqHnGfTw8Tbdvizfi2QCgBE4cWiBx2uLXYKCwUYah4KCublQSKqla+T/TNK/PBk7Q0+eXd0+hcigAr9jCU/VGZZ4g8vZYIwKGP2vnjb5KK3OUjyxn8+HArtc3ORIWne7dKGhVcvPjdwKTHLg7KQaP2KDCeuRgbLE2e9i5D1p9BMcLyjO++fOgYVEciaqljuVEm1TSa04/xWmd1eQAVWE7ez/PJtG1NucvnPt+Oiei4dhtbLEZqNflDcL946CoPvzYVcI3B5H7huXgNlesR2/McSlS6hJBGhtoTOzqfZ9mKZehv40Rfp/91rTwhoEvqqdhfh+f7CU+RCQ/Qqc5pFcm+rn+adAp7dwyPSJBM7V6uP3Et7QhmycZr5/93UyAtUuwiVkcmVso+S1mn6y1R3UT6TDktzN2/3rnR0qjoMJbInyOtG0VT53YxTYoZe7T8wwJ2XdgLEAhivOU5OCvvz3xjvfpWi5TIL3oeu+Zj1NpqmPw9/mzjaB+G+wzhCgfIFP2Qvs4v7SS8UPNW0wWbiqV6FPUq/DZYQQeYkxNl7bT/vtwawjNfhnNJ2vWbTl7z62OUsv8QT84M5Ukw4nCdtesrJ6dCB7yu9PqpMmnjRGVgp5rmVprdzEcF2GhM9gX9vawAiFNE+ZZqLfZkUmAGteOUiMrhIth6k1vKie+JKkeKfjU4SbdYuSzCRNNNE9qFFvlYNlvQQ2/tiwBqrzGcGXHNG6XEXEN9M0dP9Yzmfxu73HVisE4OuoQu0tOfRIxq8MvOBMmDqJpT71HN5MpOXudY3vY36Dh5O+ZYV3X0By8ZoeZgU/hoigy2KZ+QbJfljjB1qSDAE/F1ERHvYx1y1LU1ElW9CXoOTRsa0eEMSpocNirIbACva5gaHwh1w61L+orDNP8Fs/hTAAZHwmssGOMkttNwNPWtmTqVfxKE5h66SWv3aY/icJ6X0oTxI/l2QhCZ/FdV4imEDCLZ62eCno8shJo0XK9m6q9JdORySVcPpV+vJZJALEUmwCcjJSBrc1/hRwZPEZ/4GuiFz6CY+wKN6OLVtKChNgZgHmYMVEP8JtQvW88vdWAjMEqLzKfcsMKbqJ3PQnolx5qHyM1MDrthij14oseWZaYLblBiQKVNZSwX0WHjSQxmLzM/5KQfEeBojAfxCDCscbctRL2B+qhxddNzesjFXXpOemW7K8xKuv1KUXDWFUty+jl65/Legs71TubEK2Af6H1DZejjXBvxaes2NsBUV9P/oBrqa4+07Ve7X2grJONt872WwEqYatj6q26fHectpX0Rkosjc3WlQ2ScmTk+fYdZ+OycBaIXrmWqGJoJccpv02yLFmPqUUcjujpR5S/UO0rcewkqFdIfVEWQ9d6214Qq8uscKzTdCMqTzT1I5XszSr6OfSueRJcsgWKZJR0yJiGDJcomF5d8JvvOu/HdwpydmgEdqsZS7Kq60tj8hzFLPC3JZEvNAdGu91bUzgandRWGFtLd+ut7ZHpuNcQfL5HHtD/dFOk86XzSDZTSOkI/jT+Op9g9xWwWO8k9BxxS6h8dJJeH7ZGg6O+3sqZsiMUobjb7M6zz/fy7VpJ2vs0ozL5VOS6+w2WUuXsW8+vckxXl7Pmn/YW3f9PlkfD3G9s0i9sNI/xr8/GFq+FT8hdVqZ7nwebyRwkKp6dZfZ87jfPi+2WU0Qf9cqK/RjNSC7sBOfMO0Rez+ywcc77G9NMPE/c/XECJM9ep8j+1W8KX/lAaLGqdCC3/kDxdkUbd+t1XIfLnrd771YmzuF8ElCOjGS2EYzSSXiNZJwXDOBVVEzGoruNIZxSTYXq9U2wBOP01M7MDLCydQ4XR5oOACYe+BuPmXnDqn+5OEHqPuIlf9tBkaY4KZDxrJONVpt407ecV36Fc9ajqvDlmj3wvtNbUl0qjNA9DzIzzyx/pZo3LKZtkSMk2x7aJxxINSbyVtxEtaDzhopeyod8M88LekKUFVjUqBzFIMIWUHj8GY0zyRyWYHESiZYREB0F0Y175votPmY5MoGBej/scJRxbcGFVyGpQW1BdtVTEjo5Y3CGOVQY5+vmlnry9VLDJtCQzHVZDC3avTp+i+kpo2g8LZZoqR44krYj286/C/VFWOQ3e6PiQDu78barR9XEq5vt4ZGC7IpN2W+8PvlYZv/1vewas9Y4XLw076Ol1xlUqtVdHMk2u4p8b/zZdNfuRv2lBgKcl2/7XEhtFh0O9pxGq0rVv/XxmwS+z027b52AqrMyD+06kCOaZ2jMZM47PWfiztGGtKi4f5x9RhY0trLaLuV7dvmrx5vyEiqc4kW+aUWa8HkP4EPshQOFBaHgm/bCi6RmPhiflp9Pnrfoh9CiHr/fYLpSmFtXuPwgnexV9ic5l9w9kf4UC2RwutfKv8qKvsKjSpRKd33IxoHFkt9rePPxGJlaSdphiuCGvSbNzc31OvnFUwMhpYG07mkmkC8JXt32i3j5P7ImR2i0UWYr2+8CKYbzWad4Zj0+0KpwWgKh9Sbp1av0JFLSCqw2UMArV79rIPGBOkA7NuGMSwE27e59I/GMDyx83thXTHsJgVvfu1w5sVzbGOerqkVDUIWnCEOOebS859SqcbjOVry1eXkcaR/P4t3FkiN3rPcCND+CmE51FgtXmL08adXYmvpPs5fmFjrRtfjjH0t7OZ6kw8CPz8R/FrkBkZtxb0+SM7K57a7JilUv3ADoJJNqMFce+kvm/EGKljF2/57WIUbM43cJsfLnXCCY5XvUkD1NsXqzVKgS95LN+NJ4WWP7dj5ZFVUjb36kyI01cOF6QBmqTf6M/nIzXGocQ/J65crJWyPqK1EJZ28TlYbeSj4hjh2o3jWuKIth2b70/q0gTZfrD9T0Gz7lCV1Nu2g/0w2uLz+Hs1NCdssovMZ/6SR4pXBOSBsmciZdrDv3Rej5iWnj0mbWRluIYFogZh0zGvd70JvURI9q/Zyx1TX0Z69nM99WNl/pOcKGGGZ0fZwnaO54uCuNr10Pnwhm0OTdxo06aO3FSbowkK0cmcnezL0B6tQx2HK7rP55FMwjEsDq6tfrjkd145IOvpLtukiioQXIWPOL1Zl/oL68BLOOIl3YtNiIs7t3O5naTmnektdjYC2akWvLcZg3BiKagHwk4Ass9jtqyQlWLsv1u3MMy3R8RnX7LbuUtxcnQU2AIZQr/lQ9TedYXmclzyQvN3LzcncNnTt9wBvFgFNFbMuuNrEqaYG5eVwN52LXni1BmVVLY6RgLbTCp8joC9l8f+4XUEYoWRg1PW0lB2vjrGhf1HGpU/jcRVidy3gcXZ5sR3HlqZyrsY5+TD+G36uhRxOrxlz+IhPGnr52Mv3r8qOVNJ7SFJx7ob5q7TobtrRVsUQriJRxIqPQl39J8RtWYTFmC+m59i96JMv92SPUZz9lZwqgPjX7ho+1Tx5f9dWxoKNQ84VL/J0leUIPrjRnKfk6rje7R4mpPEEqzGDIZYqlDvyMpeclinJsXxSCGDUzPvLnvhGjezS0Aizb66XU5QeLoYNFupTMo2oPAYCPlS3+C6ojHHY//UdolCRHpaVHkJ4FxMK6GT4FRAgI8cZa4ChRTFMkZ5aQrISFXdHhb99ZZSif1rzg3H9DQ9yVijLYwqIYvZ5JqnrPDQqmNMTYJ2PIV0S+J3mC14eD9DAmy/jP6umeYMKdsQDshjqUY6YDzIE1ShI+Mmc8LCxPSG+EAjCEYpH/3ufANeVT01AbKcW9VisycEw3DonANojkyg4XV26bJgCRQhcvim+AkxsLtXBugckxdO0f4XQVarCSTcRB2w0j6tGh1ThZHmJfJlw13Tt63JmedXI7fivFbArmt2ka+dcOIAF8KdOlipQpghyr7YKmP/C1Mmj6lGAY9bI4akV1D0hr8BQoULDGV61VHX8pFpGtd6xg7wQbIo2gzZkOq0uPTqSNVq6urgaIs73YFHIdUmRrfsrE/aaMwys2ZcuNJjgnPTX0F5K5ELFhqrS1z98hPXCvxdHeo45KF/bEhGZfvRSIdKMU3+BF/VKq3v340JnEjJMvy4K+Jdd6/ZP8YpzJwqNVXtEO7EIW6pXOCAZuQpfUQpycSO0eqQfU1L1I6nGjKsKhs/e0SpMv8sqNlZ6Ui0bLNrvR8iyor/clEEfd4VG/eCKaW7xZeb3a/3sXloFB+s8ld2vWE4xfuZOs0tdtn+cqmxEbfPyGq7HIv9NRMPAWwz5rn94CdOuRhlxW/3h//3q44hMor0mj3+tS+2kTuk/spnadIB1oqLp9xlnTZSHw+Z3XIvFiYEVf9hr0Z89tPXeVcnjdtiH5KQhZOqAWTlr+5KmwyhIOj7Bq3Q5kZlVOeqznyWmoxZOOhjopDlUN6VKwFau8FYuqrvx917bJLl4uUMJa6N+PXTEGsisK/djfp039pfSUYq3vaeqhVxiMl4VfEpAQgRj/HyzN6lMMcPswNrdmZSwxF5abexLCMVqTtQH9DdE2CQKaaaUmChj+FtBpcjp+aHnLkSLm1zhKrdPOEyPnQSIvJGJfswN2POihMG1kI0MqNXoARHi9vhctMiGEzdHuQ442Op1oPhSH3TBvEl62SZseJHpEeCJQGSjL54zKzC22gGmA7mmhI3o1KZ7nDFKaNwys5j9a/mPgo1H674e4820JqeWtt3ob8PAFbdK0sSLIMkrI52FFh9FP5eHfGrll3gh0baWoX1HPVn07hXZyjYR/pVb526r7uKWcC/kvn6LqHYz5ibmsVeNEXoBtQ4kJkm5C0v7OXW+AsHuPzyBrOr4wCweg2BUp8GKPPXv76ZmYyYopNaq3XeFZ+ru0jz+KlIvJPhUGzPwhq48Mrv6oGkocDWaxldjnpfqqKPBiy8dVLYO3HjNtv9eoOXJLPFz2/642irlI9IdhYlEUXfk+P5SSHizA6aoMbot9LoT1dSkrYH391oLB/X/xb4sRLg2WTDwEeL1w2yjOKd8BIUi+uNcECu0xQpCcBz5mOFcOiRLet+FKrhVUvrzPBqbwv6IrOYK1JW2O4elq6NqRcITNTaFSiWXXIGjY0TRjYtSqcs/CyvlxzMdLDul13ZLiXdXtbiOiY8JXdDb1d7WNAs7ckaWohsmNWFNlu/LlgfsgS91KUpFVhqI0rewqRgVoeWEa4YwNFom6UdqSsnr+uKpudfAOpzviUo3L/Tj0i6fpT7v1C0WrQcvQg5sTFoXP38tmJFPLvdBXOAZqPGnsWmj6XeB7F9R4+MRXPdpeh4cYr+dxsUuhazLZUv/mJ+crEIByT1Ju2zQRjTqLoDfqyWDmy9cRh06M0sDFJzLkdMMrTkzoLcwcHJ+6XIhH36GU+/SQXrwFMLPdjomCTNLG/jp1Mycrm5gfiyv4mHwQ1KHSo5cOW+i2eZo/83PtS3+FOdiiaH5lhUa8rEabdAESOH6hYZepDu6BdX0uaymejJkofk0sjmGZWo3GG33922+ZK1Hu2zR5qJc44Lc4JzIjfjOtKi6mxnL0sUp3yaRLaQG6lva86jzCeeaz5pHu48IFx50VJsZ8VV2AE/3X7b09I34whnd67cDwm/WqSr2/nQbNyz4wd5iwm/VZ43koBHpoAFwPVXMjgwhbwZNyOPn391Zvvf33xLNpRkFUKYl8B467IadJnwGOlVUKb3xnpclJ0uRoiBfBtRxSRpH72kUBe2smIt4jVYnxt9YotNxVX3ubIXqpdmnESxFgjYyP7+7D4uGpAt86iiXOfijBeHSwz2+1eiKIMcAT4DiOZXf35pBD7U12dKWd0VC9948dsUPbj19j63f5qm7KOYslOQCM4UekbUQxWQ9SEy/fC+b8VSw/BJedrB+HshckxiG0Uud4ZJklqsaOLI6/q59bxwb1ZDJJTdcIcx9Ze6msSpsu3wipFfwnfQ72HfWTc1owmTDOVmxxqtVaVrEhLJcRxuLRA9O91CcBPRJFFYbQF33AxFlPdUc8SqFnZJs05EOaOoV53abzvNo3ZVdzJmSwckgRopPZFgdpBVCfk94SDSM5o33kwsdMBhZJ4X5dUWVrUtA2y2d97BEl4VncLfwpfqbN/vhkxmj/W2sTv4z5hXSy7N7z+feV50jxfUzO5EtEoO/6SJdqzEJweqUpxEmaJaJFM+4YmX0jIo/PUA692yD78S5f4c2WGbmsBDnU3jAlNvk2Pk7fFjVc77aszXWaoTXnCo9x08Kye15hSPwJ8BRD5g+ri7BdgP/P5qHztsr/Baqsjj2A/NSzBRrnq1tK8NsCJ+jO6n2C4o+HxEKn6wK98mc7zXfm0A1VEXBchHGbrLkp96aHX7oY1ABjNgnAYqiH3Exsr45wAAjyEVh9UGaar8wRa739cduYKb8yNefyw5//SjWq+t+Mj7HpL7CDSX5VxPNfXXUQyWPoWpfoCVeg19iyLv17O+K3Lzmo+c8UJ6y+vF9UYIbG3J3+4Gb4lUmeLS+BckOJxxCqmQbaoljH0trHJAfXSS3wLX4c/Bm4+rHvzH0Rx+/FcMA2LZrtG4DJEa1G9XSX/pdp6PsF6+v05/7Xj6a0E3UgUdfvi+turw48NzH/5tmzAgKBgTr35CbItHirMWC+NTVQt7gt7ROOeubva6c6aF4LWUVLE6c/a/FZmUYwIAoOo/o76r16DiFire/qAg+mxN32XZrtVJZyzxPp/B3ywmvbvI1Pvkv6sjLGzYC1LOMtQSL+CYb+R2gCltgmwPx774gfX7dIc7JRzqdN6i4DlgY9iXL+PP3xK+n0aIj4VMYvPjPfXBWABg6L/1jx63YxcPN9goTi0wodyZTo8t42dn93n3of4kzpVZb3UPv9sAjzNO2wIoi/A8CQiOy9DdirbH8T+qrdg+kC8tYLUe93wPk6wmdec6bclB6lF3gMa3kgjnVMaDx9ZrxFSAaSOeNjueWYC83VvqcHHc+ovkWvuZ0NYj7/bKFOjrtneODEJS7Pa3ktIhuyxk4yvJB1Rj963qx9F7I48ndaGT35Q+PBHjIaMFuxzhqf+pgt6MOfwJjiY3vxkmsstPMJETtS/QUuL/TFdQ+lVBIRStzFkI7r0sGkgJG3fIPnpO2GhjFx3LRdBghObu6WxOAOb+t3KvVRibHMFedFYq/N1aMwIzvvsQl0KnRLRC8Vx604vt0Q7a6ohRlWTnFYDrPFb+3pBFt9lE+uOP+hBsJZ3k3n4FbQJls/v3lJdbeu6FVdajev4eJfgAr4VWv0qHxFLyXEelIwmT8L9ajmR3omfvRTfYoqR/wcgZ7isVqNSj7bmh/XCZ2dS7h9+GI6cEfJDqQTC9rlJI+CnuxYF2ExU2f1DeGOJ7MnmoVFil5Pz3Z6YpDjhiQabbGEKF6NCsIwbWt1T3EJB2nJmLKn2t88B+DfVQzesXTWFVgGV/YEOvSlT+p9saJSIoGo2dsajPijAMPmOKc2Ps5mUWT+eLiO/VXa0I2rYV1qjMIivcRiqRfoRmPCG9rhqz8Q36DdbFAmusyfFkd0Fbqu2lOUQv2m5lDYNVeysT2M8eHrPkkAirbKo43lDH2OR59FfvO3rXB/HKRok+PM0UT+s4J32mrwEbwu6S6TKvOkaeZZMngyS5g2RsqXKYa4HS8dMM+MS5ItivFvqpWdpWA7dgSMRXob/p4+Lyr0FmHqVt7K5NcnVcUMD698DRHhrSG0DoqyFtjIRjaqqvmV9avsxKfhptmrVtuMxWRsFVUrBTh0HAZ7RX4W6qd+kWgzMN47yHWRt3tfv8mEvoK72YJeEi67Gzl4hciVUmk2ZGrU6gAobRr/bOtpuC2JFYb7Ms6mPfVmEIfp43xjS5FCk9YIlNEfyhvJIxHK7nVadsL76cl5/0vQWK7tmMO4jnayibU6zeUVEXDDcIP8MUysBOJ+90Ks7GR7G/0BpOhTYCxBKbvguAhR0W8tw4AhzD177OLtEm/AYM6ehPx0D7BKROKCxDFxvW38LpWx7pX2v9TtUG/fguvyCjh2zwl/pUKYx8S2Ne85JZpecat86A4yH8xnHbZaNiYXmKsxPPMkyKVp5cFRR1kQpKLuP9M8L/QMJY2CBZMna90gvie156mJMqh4k9dXRslnS1+gJCq7bpiE10iBfbzub5tIJvr1unlUGqvjwTVIOBPaxGF3PauuWTpfhoyhkELHUnyx56jafkgWL5ZfX9v7ev+r+MATPQiflMXLTWn43DvkhkeQyWt467bdrcbLVXsA27DRuOjDrKDzmCCRMbxLXKzj42m5VZ7SgKS64j5nzMUBpz2kr+jSRoieApT4nlWDGbafDSLJhMLLK81KvjI4hRtYDitYj+V4uXWtDuZq8kkncPqnIHvbDDaCyQEgMj+Vps8avOFw5yVrnaDQ9tj9T7515H5JgBM/wPosb5kbwRZ8oY8Vn3R6ZDxFGNALvEbzvowoZvhxJTdrzbqR9hcgSW+zuyoOCUUsuDEpecCNjYUOaXDdZfFMUGscOEsk7o0PaYNtcNMMop/EQNs67i8VZfm7vBDvFHNOyDDDIMjfvO0xcbPuSeRVT+N5XfZBHEwHn8lpXPZ20JfNt89FHCSKblM8NfBN3aqvoTGfhROhOLIsrP/zCvwskKZkkj8ZZA5XkmjJIyafdH2ZwZgveLD9e7KDpV7Sadsm4dNHQNDS2ZXpbUfax4t7zHP/QdlsqKI8h9sWcViY/FIkYeGspO3myHkuk2vbTE6ZFVoWDu+vHZMhVGIbi2m+5941ssMGL2ESwfqrP4aiSPpjFI3DJ+XxtqJ1LIndbvtiJJxWJ8yS/DMYkhX7ziWWbovavtITqGzvisLMJ+ZU0nhJChfiXaUkOb4q8GAbpB+vJeNbhtDYtkI1TdBYf96nP6pbAcjgzyB/hdOuPbl0QtMVHP/coNKbxu8oHkm0C/lvM5RMtdcrti9kfwhoJCXp1pjKBBKB3xYmZ2QF8ff0UMzx4gy5uUxPzF6iEnhW6bmkySeUAGgd/KqWSok7Sv0OGD7yUzwXnBDoskPEHP/MK8qQa99bRHBR5QbXFfQf8TuzgAePKJRQbPMPJ5hqUxBnlPR38o4bSpf51R1TzNj6jCK2HDhZccEtwzJkt43Q1Xo+I2U8jy/9yPwwyHPp/971bMbgAuJf/QIRDhkOHw4ejhRODC4B7+Q9EOGQ4dDh8OFo4MbgAuJf/QIRDhkOHw4ejhRODC4CDt+G/j1Iv/A5BOE04bTg9OCM4MzgrODs4Jzg3OC84X7hAuGC4ULhwuEi4aLhYuHi4RLhkuFS4dLhMuGy4XLgCuCK4ErgyuHK4SrivcNVwtf/U/9MI1/xPK1wbXAfcd7juf3rh+v8Z/Gf4n1G4cbhJuGm4Wbj5/8nPf9XH4Ub/Nd//r93f//nXnf9aru1fvxX8G255ODq4s57/0X+ftf/yPeB/v3f/flH+3SpI9O+X/v//DeT9zy+K7RVA8r9vy/+7fQji/8f2/k/tE23cEsBMuhSIqUcEiNBhARgpiAFGFVSALwssAMUaPsA7CBTgFKEAYCzQArQmmwHe27sCIvODAI/Y0YAUlBSAdXIugL+rDCCWVgdIoe0EbFmPAGCB8wCg8xagTOESEBmLKNh9iymIdkok6OFDJdhdxiIo5MMnuIwMFTRQUhCEGGsJflM1E3xkdhWM9g4SDN+MEvRdShYMM8sVVI8vExQwrhNk3usQ/MU9IjgpMS8owb0l+AHpUjDBAhGoOoUJvO4jAmYqUwH33FmA/HJ8QLdxEaABoQLQnEELOIljBoSf4QFmaAQBqdqjgC7VycAaYC4wSL8MKMhVBxyq7QBuXQ4DEZHngUaHm0Ca9gtgkTii0GEZptB5JpHQCC2VEI0MixCUmE+IJk1EyHFeXqho873Q7YipUFSGi1ANV5DQ9+QoIbeQZKEdjFyh72/KhOTua4W8vTuEnluHheT654SSyzeF7lwvhLopEEEp/pige3siENoFJcjkFQtI6w8vaFFfBJScIw+6KHkPEogwBTm8cwHNoAeBbG2iQMHaySCOlRwQ5mMpyGqgFgSR7ACx+w+DCsLmQEvmm6C9Nxeg/SsEYVktTGE8KSJhtX5K4aZNZuGAKl7hIhYR4QEjeWENi/fCIdKmwlaYLsKIG4HCTJJRwp+5koV9YDnCpmOlwllJtcK42B3CFlLDwthyc8L8jJvCx9vnwtRTCGBUbkwwLxkRuCKdEkzSwAxu8eQF+55CwFgs8uAh1vfgHURTsFevMxjSEQjeJ48CDyIlg1cCcsBj2aXgRf1a8OlMO7gBYxgciTEHzl/bAKPnn4P1KhAg06iYEINjQgi+NSUkNJgZ8iTFC7FshUCMD+UgyvuaEP0uE0iujzMkID0Q0nYeCblfSILIqedAJGxKIawctZCN3HYI0eQQhHR0FkKXtwER1D6HlIUgiHxZxRDJ7CUUCYZQiiCqM4toEvCKGAdBRIZr5US2KzVF9nxNRGYBziJTToEi6SORImBYkkg3U47IgHCpSNhNjci2ebtIcMqQyLeYWZFG3Q0Rb8JzkQd9BGhUEwb0TwYhFAmPEhpHzwz99osHav8WAhX3kIMm2WlCw8AmUIYTJyiHYiA0oDASGhmcBJW/zYZqY5ZCL3proHfc7VDkj0NQe+VZqB75BvTH6BlUF4Qg6hmHISpgTyiauEYhynrOJMpdwSMaQQwRHYXIiSpza4oK3RmLhn5xEk1gDhR19Y4U3fiQJPprJFv0frFE1D6hRpTyrk00jWZIVAB/VpR0YV0UGnomOkiEIOZijiGWIkkoxtlAITbZzSRW584jVv8LLGaOKCdGfaYh9tBkLPZg5PTvO5BOvf8fd2cAEem6xvGwl+WGxSIsFiGEEHKFMK4QQgghhEEYhC4HychKciUZyUrWSJKxVnKs1CcryVprrbHWsdZ15Dq4LjiA8x37e/h5ra1d0/TNwd+3apz5/t/zvP/n/zzv+3W+D/NgEY1fRv+fUAtWwL+l/0/BNprfQD/Pc3zMuk7+dXZr6BrJvh8T1LsqMLcaiBoX9W0Lju3m9zD7NnqoS305hsRvSnEs55gGc8R5Ec7L1PRN13Dq9664nlFbP2Wt5Xd+ej3e5GjmuMrRBeeRHONgVLENvzMJzyVQlY9ZA7XwK2AP7Lcuxl0Lp9/Gkxy1HNs5GnD9lOP30y9xHc7xCESc+3MMw3UGvlOgQrzDy60ozpHTm4pxHV/2At91ho/6NbsZv67Tm+FxjoEcFfie45/uZzlX/v27YtwN1xGuA+T3KIg4z4avBeZeFecaa5n8Ju7keML/glz/mKP6A1gSQktW0cua7yW0k3upk3vPyb2M/Ht7ezqT59FNwfriOc+mnLm6V1iH2yZI+4PdWGv4/2P4NnNcZa3h9yC7Hg9BL3kWPCOXKqyzWVAhvxYVW9fETdWMHbAd8YXrSWtim2vFdaBPyb7gXo5uuJZYS6WILxiXtixSM2a5Lji+jq3W05405Uhc339//ci14htAN3dzHOVowrWbuPbmGCKmfehnL+iH6xT1cpzrNFzLqh9VONP74nngG1y1Zi/g+p/sBvl5+g2gmSOgkmMBzkdw/TNv7xPX0NKIdQ9xHYBz1JNSjiFQlqZOKucXpGGR2zV5oIMkj98ojwX85DXQ3CHVkg19d+rFQkP2pN8Xuo82AE24GSpgTvVpFZ4rnq8oz3bMNzQEvhlzjc+3xzdfE9dA9XdGs6UpeC4G74gziPiuy2en9fmZYntCbJut5co6uAbfqIUzXEvyJTwTaiTc0/XkfJb/bJDHGWsKvby1+vcIbegDj9CN0Mhx9OMxv3sIQksm5b9HFfdZOFeFZfnvdfWPm8rvg9QLpF40rX945hP887b08Uq+8hP14ZPQDY976CWfB194DvIsotcadA4Q65L4lwD+lN6LteFZqz0DOZD2lu9u6ME/4iPOeW6HPMc662gr8gzgNel1NJ+Vrrxvh4Zew+MF97ZDjqxFPwOoD/wcX5LU6F242ms+B9HXvvU6aym+woeY1EL7waK0cR7EHH4hnc9LP9fSWbzjK75HXlMt4/qFy4a4LIrDXIJZrYUJ1ks5enjgvYoycf5J8Sa26iVyqFY8/3EvBgz5X63hKTANZuwjw3OBUfmvRyC86JBrR/CGr3WiKqyk8Y5cF//wZZfXeiGevXRrRCgpLuEZ++HQjW72UEfQz/wK+MxA1BQQPfwg/448CEyCCcDzpZZaM/Gi8ggZcf5RrdnPyGfATJMrecaaOsZ78XyLgq4m93XGGmjkqMNhS2t1yfqRzDs9H3I98jpqP4gZa/pEMXN9WCZPvHYWNAt1DtXUm+/y3zvWumk3v/fELkOvHbt17rvKWpiIXg3tmRTKwR+eK6lueiYBkjjjudpTCzfEbZ41P6JZzBDo5+pZbxnMyme79iyqjtJnoZ14IXLomJjfDjfqCLEqoYn3qAPd6tcfa0bzEL696GXMQPukn+Opfrofk4+oBv/Ie+7zvAW8z8T5WeI7d5O9oYOoUeTbK2at/y2Ijl7DTzGlf/Xcz30rXI/EF//FPkrx+NVVH8JnLnkeJP+xqflXPfVe2kf4cMc14zW1osH9bhC3MutkOq6grPlulbguJzOZdfH3LPsA7ifkNTOxW6nxl3zPofJyHW4VtBGtRDvdu+L14DyhvZMZuMdzqDr2AP70VF7PzOCI+29ZC7wLOrImbhNoYbd85X3wIOa8fGZMWjnMdVKedlQY43cz5i+4jmxqXkHt+OGaf6mafyDOG3yHfa57udiresvz/lwwL/ou9deaZ7KumANptuy8gmsmb/Iaf8LzLgg34qb6sOz8sffQPHcHwDnVD3O90x7iedR27n1VvrMM7DtmkxlXFSSzT/wB0D7gC+U3Z/vYj20tt5cRO62zNe6zjF7Qq+LB8KWgBOcxfj6czIFnXE9iPsV1VbnwTJxZzz/Ald5I68WeZZPnvhj+WnPcB2jnY+59WDPg+He3+vh+Pjuo5zOg5zXlvUT1XDVxzcyzxfm6TyxrrK0d+THP/S6TPcnC4Rp+nNuhHqMp3hPTmdoj1YsmnAvHjRhtaZZYVe9u/7mhteOzxoeOb+t0o2V94TPiNS99mI79AqA+nn5fnlR7KK6X6Sy0oZi/vQ1vkHoX9XrLcBtO5qGDmvH2gQn0JAc9PTNWPjfjekIOrGq/ZF/ndpjH3UrcdvnOFe5lTHvqPVyjH/fvhuIz0tQhXYfF33VmWjM6n9E6lm59bhHXD56rsYZ25XE9W3/Jc9G6KjDwatKYI9XE1eR8wba9p+dhBfPWXn9viJtnhugBcx96eWsHsa37TJJ69l+ygvLTWlyXfo5rBoq+cGUvCt5+T8VnKhrO63bwJycveeaeGdalM6OgV35zWD8fgPeQz2/xHEqgDP9VakPMpDK+v8l85i74DaJ7veI1xrWkeUVvsofWj5Y+dK+v/cRF1cc98b29Xpl8Vc04kO+sF2AfpRXcLuDWgFNNe0dPvYfis43sJRSd35uoDxE7ze3tO9bR1r2Y6Uavzlr6pZixZV+JdUjsKpp/VrRvMq3zrWvqL9I9kwP17KkHa6O3pjYwXyIXV3Q2a5hrWZy/ev5As9AF9emafbCm8WH0UW3hJy15yporoX/9YBJuaCi/Y48+9pSknQOK/QzXFeK8y3e+hmO79ncvebbP3depl31lP9aJ+gm3us9+EdsGeOHeDT9SZG4ftG/9s/UTLOmcVs3vO+h8UlbA8xRpXX+p2reBRs6Cn9KznmBT+60NNOpI53M+8K7Dne8BWkOJ1bT6d79bNK59lfTs0hyayZwTn03/Cm/OtbZ7D5A9CPwnHPrknaeS80d9aOafZ0XvWTc1650k9k9iHqU++VW790DR0HO44n+ZCene5Fk+dIA/S3M1g1fo54pQkzfjDGAn8ez6xH3vkFO8f0SN5p0+zWa+st9e1NrY9Znc/JmaHvvMI9KPcTATM4t0jg+8R3ShPSI8+J3l5jEasx4eU3smJa59Ogs6JL7T5DT7ourXeSeAdXuJL2i2UUObfPcL4lF1/y5N7Of6OOPsPfB5p14+N0Ht9JkSZjLsh97dOcNDna3d8xqzR+lAmN8K2NDM8yvvwHYct2N69IrO/63Lb7pv9x57R/FDOzlPyBkD9kbANnyZ3SfvExecn87T98pnM9NkRsFeaFIHXxduXxduxOAQvRuM855wnZOnHAUVnsGSagL9Q7FiSX1/x7o60nnIBrzfdZbXNLqu8FaeT8TZz4bOgbmn63R+GzoDGfsm+0kv97ZDfPWveMML9fFVdGROs94tYsrcCU0psGYm70Z4djYjPz2bvNu+jKY00t5Q74gViZvf+aiTj5Oab47GeSOufcB//26WGFMjmeMWK47/I477mik8bcFZ/SLyq8r3N1I96VRu1L5tdGWBOG6rlyOOHcnvDf7lKeuqwjpkv8TvQPhvgTDXLja/34jNATxitjkQ71SBJe0LAs6FF78GnhGXefgN6L3MEhjSu/7J353qmB6pId/yDDA30my2c/v3hs7V7qR/zyrmnx3Ob07zzlW/YxXvQ3Qwv329zz8PvvYu/GQncURDm+Rh+m73FLNB+l7QefzO8S39aGRfzDO1R9QNejqEn/eODnXGbjsFfIxO5vckRafz8x4n/myQWfzuaYfPreXPtvBhI6y5q78Qv3289DSx62ZGePVX4EftXiV2zVM0M8f9wq09///+/5ajp2v+H2P//Pvw/y9P/iDNr+KqbMIw0FssVEAJA7EokRRUej1zX5QiIRKipCKNdMeKsbs7X+wiFBO7RQEDsTtBEFtUFOF7Dr7dvffB/zd5zb06haxWCZvosZF9DX/Lfu8YREfqfch2y0zyeVpIF0rPkvPs51RysY1OxvTC7w5DMKjBAi1PJLDYPhZbNSbAqNdkDF8Wi7Q1ySgdlYnCeblwKS/A5W8yeMUpcHk0x9eTHI8+cmz/x/G7nWNv9zwHjVwVybxFFySe6UxY7b9ZmNytQTAN0GeeOZPYwjcLmPLiIqa/8TZL+vyb7bTWpOg0E3Lu40KuKmFkaZ9LV84toLCp62le2h7q/PQYnV5xleoV98lqeR29KftJavGdkJ+ogshgLZgaD8CCm/rY7WqKEXwEFPn22GAGhC0bDV7ohV2T/BB/ZCKCD4eiW0AEWldGoywzHgt/JuLqoFQkN6WDYrOwcVkO4pPz0KlLAXTCpNiQJ8OyCDk0dBQYVqTAwf4cnokcbrs4ZldzSN9xaPzg+O8vx5M2jsftHOJ3THRRzbMfOUvFMefkBcfXVUxidGuzZJFuo6Q51kBAdLBQzhcJkn6lwueMu0LE4jbBYnhflvFxONvEPdjTFzFM2nkmK/yzgrnf2s6M+BFW0rWCqUc+Zljyif24oEQntqrS9Jf96JjCgHbnWVJWlYT0s8bSktRASjwZSQF+aXTESkEppnOpNWwJdS9dTQsHbKboHTsozbWIclsOke2lkxT+30VaNb+Scvgd2jj9MS1d8JoerWukjvu+0aKTf+hvtBKipnWBc1J3BCeoIStCA5N9+6Derj/q+wyCY4Murhw0RFaiMUjbHAbHLGHmNgrJF2zRw8IRVnMZdKqdoNHmisQB7lhq4IlPfcah17fxmH3cH59jAtHp3yTMkIVAeBuGPtZT0JY4FT8XRaHn6hhEzo6DXngC5gxOxL1rSYgLS8GmR6l46ZSO4pUZmHUrE19/ZWGRag4+q+XiQmsuih/lIWpXPjZFFKCXqhSyvVLssJXB/bgMJmZyqK2S4/hnOd45KxC8UIEb1xX424FjrRWHTzDHDSnHsfUcew5y2Fzm+FzLEfqSo7mBY9RXDv6TQ/KH42wrx4Q2Dqd2jpOiT6K2///9v081z852roqD0dULDpNfM8fGj5sdA2MaHe33G0huPQmW7Hu9SGJ6qFSiFnpPUv2kXRLav5/wZ7iVcNHCS9jcO14Ynj5LeFW5SjjRd5egNOG40DyjUrha+FzYVPxdqKjtzO65q7M/Iway0hXGLCbWhi054MIWJ/myC5snszlIZiYTZKy1aQ7Teb+EqQ1Yy1Lm/MfuGu1hd9oOsGbVE+ya70VWc72Krcy9xxYFv2CjUhtYx/LvLGFUG5uW1pnuv+hORXG9aINyHxp3ToeylurS0SwjKk83J/05I2lNqT0d+kjUx2U0hRV50WATf/p+MojSIqaQcf9Y2v82iWZfzCS3QwV04tF0qoqcTTo/5lHCkkWUN3wZdX2wkmrnrqXNbCMN+ruFtM5tI4cFu8g9eB+1DC+hLj3KyLDxCKndKqfs8tOkufs8bVh3mc4uvkbWc6rpwPTb9Epxl+T8IVnPfErlc1/SicVvqWHVe/q9qYnW7vxC2SU/yPXYbzp0tpUcojpgQ2xH+Cd0hpDYFVZJ3dA1qQfWTVPF6bie8IlSx7BwTegF9kYfr754TtqYZKWDsCEDUaEyGNnNQ+DyVA+q5w1wcOtQqCqGoW2SCeKHm2GYkgUG3R4Os01WGBU5Ev2GWuP0Gxt0/s8O9wMc0K+LBCVlAqYHE/JaAcVGZ8hGuSK8wg2qE8cg94U7FkZ5wPa1J+JDvaFxaxwM2His2OUL727+8IoJwMzTE1CvNhEZwZOgUxiEx8+DUawdioXeYUgvCEf49snwuTwFri8j4PhzKmy7RsFePRquvWMQphmLOT3icLU1DkMb4rH3VgKCD06D06JExEYk4aFlMgpbknH9TAqmylKRY5OGfg1p8FuXDhunDNx9kwE2MxOzBmSh/EAWPlE27K9no8gnByG3RF65OH8xF9tt8tBnZx6seuajW1Y+jt3Lx/hRBfiwuADbXxdgkbUU52ZKEXhDitjeMnQPkiFovQzT7oltLzkcx8hhUiAHFcmx7JEctl0U8BquwNsJCgzIV0B5kwJnTyoQ9FCBpu8KLFfjCB3KESXhOD2eQx7JcSKTY94sjpYVHIaFHDpFHJ+Ochw+x1FwjSPwNseEBxzzn3F0eMNRXS/u/cCx9jNH2TdxvZlj+S+O5BaOn384bFs57P5xKLVxbBZptnPEiXaIqkXvRD9EraL2//9zXwRBNc/231wVe63rF+x/1zOH1c2bHTJzGh0+nTRwTG8JdtT9u8gx4mGpo/7qe46d+nWQ1Pj3kzjLrSR91npJum2JlzRcmyXp7bha8njbLol6h3LJ/AlVEvXCF5KcFz8kFxd2EabragiPrAYJxadMhCfnbQVXJzfhooO/YF0SIWRuTBWClLjwPG2ecHLLMsFUeb3Qv2SrkLZsn9Cv9JDws9tp4XvhFaE545bwasYjYXP1G6FHwCehZ58WYUz3jqxslzI7NUWN+dlpsVjz/qyOhrBLKUNZwykz5m40klWW2LOp/mC/tMaw/G/e7M7HAPalSyg75RjJdBcnsG5/0lj47Dw2u8901vJzFptZN49pvV3ECj8vYzrdV7Ncq/VsX8xmtmPvVhbUspOdnLSPnbxUwrzZITbl8jFWF3SK1fw5xzT3X2brY6+zQKubzF65lll9eMAsnz5l+o9fsd9v69i21g9MRe8rM/D/yR4t+8vUkjtQgnYn+nW9C5XO6EZzoELpnXpS/A11itiiReMz+5Lp+P703mogybSH0LMu+tT+25AefB1GIV9MSf7Dgka1WVGGmjVZ6NtRkOBI70MZ3Z7uRJ2KXCnn8RjS6eVJ78aOo4p5vnS0KoC2955EPDKEcDSc7qlOpZEJ0eRRGUeqVomUtDGFwrpnUJUsm0p+5NHXNBkt/MrJ+tQMOstnUeiYOdS51zw6+Gg+Be9eSM1Zi0kxeik19ltOI5tWkM/FVWS7cQ29zFxHY8ZvoHDzTTREZQvN/PAf8RtbSaVsOw1Zu5PKZLvpZPResvTZT90diomGltJVzYO0VukQ7fl6mD69PkrR945T27UTdPjMKSo4fIY895+j/tsv0LONl2jp6iukv6yCli68TlVzq+jGrBu0eMYt+sdrSJvX0h3FPdLjD6iVP6KgGU/IYtYzSpvzgvrNf0X9F72hpKXvqMvKenqypoHebvhAff77SLHbP1PV7q8kKfpOJQeaqc+RX5RY3kI7T/+lo+f/0drL7TT4bQfceqeEoPqOOPa+E143dMaDxi5Y+aErVJuU4dLUDRZN3VH5oQe0Pqigc6Mq1r1Xw7W6nljxthc+v1LH0+camPBEE34PtHD7Tm9U3ugDdq0v9C/2Q/YpbYw80h+BxTp4sGMAjm0ciKblg5A9dzDGSYcgJVUX9yP1oAjUR7S7AWbaG+Ku8VBM0jZCF+VhePJjGO69MsbnGyYwPGGK9B1mqFlsDqdsC5wOGw64WqLC2Ao+aiNQ+2UEfGtH4tKRURi2xhoFWTYo97fFU0s7vFOxx806e6w57wDbDY4oTZOgZYyAPgMZ2j8zHL5IsFoNpEc7IWuUM+yUXHDshgs+r3fFy0g3zDUbjeffRqOufAw2y93xz2kslDt5oPySB3rO8kRXZy8U/vPCg3JvFGeMw0AzHxi99kHFuvH45+WL622+GHbQD30j/LG2ZwB2ngoA4iYgTiMQOicDMXHqRAxUnoSEokkgnyCs/xyEvGXBeGYRgquVIRgZGwq9DmFYtT4Mcy3D8fdyOL4FTUbCh8mIlE3BE5UI3NsQAV+jqfAum4rrjpGouBiJMR5RcL8ZhUq/aNyujUbQhBhE18bgh28sut+IxQ73OFw6H4dE+3hsLI2Hv0ECVq1NQES3aSjPm4Yt9dOgHpgIrQuJ2G2WhKrVSZjdmoSayGQcqUiGlVkK3Jak4MfHFDiNS4VpUSqOKqfhVWQayk6nwahPOlyT0tHjYjqkfTOwKSED005loFElE0NCM9F9XyaKm8XWOQsGi7LQWpuFdQOy0Tw1Gzp7stHtQzYuWORgbGoOCg/koPJTDq6b52JbQi4m7MrF2xe5COyfh71+eXg9Pw+dzuVB/UceVIzz8SskHw8W56PkTD7kH/PhMbAAvT0L8DqnAEe3F2D5jQLk/CpAoq4UaWOlWJgqxck1UnQ5JUXyCymaO8qwdagM6e4yJMXLsGq+DA17ZMi4KoPVWxmMlOQIHiTHdXs5ZAFyZCbLcWiuHEKhHFrHxfamHOVv5Vj0R2x7KeBiqIC5vQJ5XgqYTVZgTJoC1TMUuLhSAZMdCnQ+rMDEiwoY1CjE+grYfVRg1h8FApU5DmhxrB7CoWzG0cOWY6sTxw1PjpUTOL6Fc3yO5ViSynEzl+Mo53CdxyFbyhG5huPXJg62ncN+L0dDCUfAYY68co6QMxytFzimXOWYW8mRdZPD5A7H3nscPx5yqD0Vs885Dr8Sz3srztdxvHsvZho5PjZxnP7EkfCF4+dXjpjvHMd/cHxq5lD5xaH+m6NNdL+FY9MfDu+/HE0iWauYF6X846gVmbdx5IvOiH6JTNs5JojyRGtFB0SXRLWil6JG0VfRT9Ef0T9R2//sff9/rqhXno32PBW7V9cv2CU2MPvpvzbbnypotNc+Z+Bwr0OIg73SYod3r0odgrbfcxD0OjhqT+3neGC5leP3A16Od8/GOxY+n+W4LHC1o9XlXY65puWOIfOrHKufvXA8Z9rsuPp4F4ksUEOinjpI4tHZVDKkj51k4TY3yYx9/pJW86mSr2ZpkqDdXKJ1c55kX9flkgbZekm11TbJeP39kml+hyU6Z09LJsZflej43pZMyX4sGfLwrSQg77PkR+AfiaK8o1AW3U1YYdlT6N+/tzBGT0fQGqsrKJYYCTO+mgv9s0YJzn0chZ93nYSRh92F7wd8hJFVgcKHzuGCTni0cLI2Ubganyk4DpQKyrkzBL3UOUJszgLh7uIlQsKhFYJe/Rrhr+lG4bv8P6Hry+3CSL89QmZNkVARcVAwaz8ibCw+IWglnBVWWl8Seve6Jqz5XS1ofa0RFvy+LzT3fCoEWL8StsbXCQ+KPgg//30RWib/FJ7e/Cvc2N2BbUjuxG5JurJkje4s45MKe3qnJ9tzVoPVlvVmk4v7MbdSHTbn+CA2+JouU31pwHzajdiroabscoAF+z7fiiVfGcUsu9sxuwmObOZuxnp1cGaPI9zY62vuzMDei20u9WEe5v7MuCyQ2bFglnk7jD2aFsHiVKNZ/6Nx7FN0InszIJX9eJTBBhfmsIjEAnaMFGyZ6gzm8W8mW/h1NhvfMJetfTufTX6zkO15t5glf1jKDvxYzpKVVrGdGmtYwNB1LE/YwDQmbWKDs7ewTWsL2fxT29jrNzvYvl672WPay7LS97OsPcXs8ctStn1QGbsRfphN2naU0fvjbObIk0x3+mnWt+Ysixx6gXWUX2LND64wB9trrGpdJdvXWs1qo28xt9s1rJXuspaD95m90SNW/t8Tlq3znKVueMl2DHjDem57xw6YvGezjzayhW4f2bn7n5le0jdW2rmZRW39xQh/GHvVysLntjOffkrUmtSR7C93ovaBXcgvtytZ1CrTCqvuJF/Wgz59VqG3fmo0+WhPCtZRp/vTNejOe00a59+bRp/pQ+Um/Wj3Om1SU9ahptwB5Nw4kFQmDyaP2iH0x0OPBl7UpxKJIRUfG0rao4bRl4PGNNLKlJ4eNKNPIy0o5thwcpJYkeLCCBrsMYoG3bEmaZgt2b63I+9sBzrVSUKzVgm03ZCo73HQc09n+v3ChSJz3GhgzzFksMedsp09SPOZJ/3K9yYDbR9ac3w8eQb5kcsff8rfMoG+OE+kHfWTaOXSYDppG0o6L8OobOFkktlGUMGbqbRvRRQpO8fQqq+x5LUjnswnTiPbHkkUey6ZTmWn0iiLdKp+l0GzC7MoJCSHvPrmUWBtPuWtkNJBXzn9U+c0PGE6xXjOIEPzmZTQcxZZf51FM+/Opgnlc2jf5rnEZ8yje7Hzqch7AbWPXEg1/ReRrtJiani/mIbXLKGmE0tJf8cyur14Of3IWUFLp66kzd6raJD9atIwXEM56mvJ+99aWt64jlwfrqeoqxvo85GNVLdjE7mv2kwas7aQa+Z/9CSqkB5P2ErCmG3UyX47mZnuoKMDd9LWXruooeNuWvFzN61p3EPNz/fSwdp9dOXafhp5toh+Hi4mjf0lNGNrKY1ed4BClx6ky3PKSC4/RHOyD9PT5CM0PfYopU05RkVBx8nSv5xavU6QxpiTlOR0ilQkp+mzzRnqO+IsKczPkZHxeVIzvECjdC/S2oGXyLr/ZVLte4UGa12lePUKalC7RoUq12lh90rap1xFLV2qSdr5Bpl3ukkqHW+RttJt8utQQ0fba8il/Q79bqule2136WHbPWpvu09e7Q+ovP0huXd4TM0dntAlpadU0vEZHen0nO53fkEaXV9SjPIrut3tNfn1eEP1Km9pudo78u5VR/016qlZ8z297N1Aj/o20jPtD9Sk00RdBn2kYUM+0Xi9zyQ3+EIHh36lumHfaIjpdwoy/0ErhjfTNauf9G/kL7Kw+U1Bdi0kc/hDGyR/qZi10lH8o8PObbTDtZ0u6XdAyY4OWGqohNhdSrAx6og/uzviyLBOiNrbCV1MOmPTvs4wNO2Cwv1doGrWFQlFXXHcTBk/ipSha94NkuJucDPvDsfi7hho3gMfinpgp5kKPIpU8NBUFb77VVFmooa/e9VgbtwTo/f0hJtRL5js6oXvBurYvl0dNnoaKC7UQJfBmnDerIkpOlqYvF4LrG9vtK7qjU0afaC9rA+yVPuiZEFfXOraD8dm9cOcDtoYLtfG4RZtaOb0h+e3/ghN0cHoRh10jR2AwlcD0DN8ICY8HIjUgEGYcnMQDD0G4/SlwTCmIYgtH4LckboIKdZFTyM9rCzUQ522Pnqs1Me/HgY4O8sA41oNsC/LELVNhrgWPRQLnw5F3wlGSKkywjKXYSg4MQyWVsYo3m2MrwNN0LbSBHe6mSJJYYob303xPd4ML56ZYZm/OTpVmEMisYDtAQv80B+OrLXDcay7JU7ILCH/bAmlSCuMvmuFsWNGoEf5CCwyGYnKjSNxVWUUuGwUfjaNgnG4NfresMY5wQaGxTZwGWCLAQttUfrbFi2xdmi7a4dTLvawPGiP0EEOwEIHPPrpAJMoR1jdckSTowThuyWYqSEgXCbgQ50Acz8GvVMM1w0JBksJVr8In6YAk68BCisn+K53Qk27EzrFOePtDWdkW7vg6EYX7OjgCqdYVyyqcsUsKzeYrHGDrMUN0vDRGHZhNLjhGMyeNwajGsdgqbc7Vpe6w019LArTx2LnnbEIGOWB4lUeKP3ugeAAT5Qc8sQ+DS+MS/PCxpteWGbuDbOF3kip90aw2zg0bh0H/X/j0CHYB3OO+OBgr/GYPm08fl4eD80hvriT5wv7O75wMfPDt1l+GP3UD8zaH48W+UP7jT9aHQIwa3kASusCIBUmoGnFBHSon4DjkkCoLw+E6ttA7LebiA8LJ+Lms4kIsJqE/JmT4HJ3EoqHBqE8JwgxFUE40i8YO+OCYXM8GPFdQyAJDMGBHSG48jUEUoTizuJQXH8UiqlGYdiYEYbMs2H42D0cyoHhuFgYjkGN4dC2nozD8sn4fHUyqnpNwdigKYjeOgV676dAYRkBaU4EtM9EILDTVIzymIqypVNxq3YqlmhHoiksEh+2RmLh20hUDovC/mlRMC2JgtfnKKiNiEZqRjQyDkejz49ohFjHAFkxuHI4Bk3fYnBkRCwGpcViWGksaj/EQtckDr1i41C4PQ41z+OwUyceOhPjMWJFPD5UxcO9awJGOyWgLj8BpocToN6UgA2G03AlbBpWr54G5eppGNQpEfcdEmGdlgib3Yl4/CQRhhpJ0ByThJ0FSXhamoTy10lw6JuMCI9kmMuSsaU0GUdfJiNTMwX3XVPwKisFK3eloOFeCt53ScVSm1Q8iU5FzapUpFxMxeEvqdg6OA223mnIzk9D+O40fL6TBpP2NPQ0S8fmiem4NyMd5cXpGPMgHVwpA1FmGfg+IQPDFRnosycD+25loOFXBu4PyUS6eybKUzJRsiYTvqczsf11JrZ1y4Lv8CyUBmThVF4Wcrdk4e2FLCjVZeFm92x4W2RD6puNsMxsfFqTjVHl2TB9nI3av9mwGpQDJ8pBpyk5KOA52F2Yg7nncjDgRQ5i2kSDcjFAyMW8kFzsy8vFrLW50DqSi9Aa0adc9FbJw+xheSh1zcOKKXkYLhXHa/OwpiwPEdV5qK/Lg4lSPowG5OOFdT4CffIxPy4fedPzMXRDPpaX5ePE9Xxse5WPsS35KFUvwN1hBThBBYgILMDVxAJ8mlGAh+sKMKukAF8vFkDvYQF6fyxApZIUbn2lmGkqxRySYpy/FI9ipDDLF+cXS6FfKMW1MimsL0sRf1+KqPdSDPsjxREVGboPksF4uAwakOHyeBmcI2RYkCbD5ukyyJbLMGyrDP8dkOH1WRl+3JCh9qkM0z/I8LdFhtHd5JjcVw53QznaR8gxH3K88pZDJUQO5Tg57mbKkTldjneL5TDdIIfLLjmGl8nx6bQcM6/J8aFWDpMXcrBGOYya5ahrl0PWQ4HG3gpYDlHAy0QBp1EKqDEFjoxRYJSvAouDFTgXqcCNRAWOZimQJ1eg31wFVi5VoGGtAgMLFTDfo4DOAQXeHVNg6VkF+l5VQHZDgYt3Fah/osCH1wrcblBgzRcFJL8UuPRPzHTmyOnBsUOd43Bfjl0DOaT6HNbGHHcsOAJGcZy05+hCHDauHF5jOcaO4zD15/g+UcyFcjhGcJyI5tBN4EhN5tidzlGRzXE7n+OynGPbDI74ORz9F3AcW8zBlnMcXMXRcx1H8EaOZVvE2ls5Lu3gOL+bo2gfx+xiDs8DHO1lYo0jYu3jHMdPcBif5lhwluPReQ6dSxzeV8SaFRwzr3PMq+JQ3OCIvcXhXCOeX8tx4y7H9PscRg85zj0S9z/hqH4qrj/n2P+Co9srjtDXYo03HC/fcmjVcUjqOULec6Q0cBQ0csg+cGQ1cUR/5PD6xGH6mUPpC8ct0ZqvHBO+cah+5zgtivnBodzMsV1k95PjqsjnF0eNaNxvjssi2xZxXdT9D0eS6LpI/y9HjuiqSLOVI1i0RfRMpPOPI0A0X3RK1Cjq28bhJIoTLRKViKpFjaIu7RyDRTYiT9FkUZpoumiZaIton+iI6Jzomui26IHomeiN6L2oSfRZ9F3ULPotahH9FbX+z7/n/8+I3/H/T1V3y7MumqtiO77ygu3ZBmb36ddmu/PSRjuz8wb22zqG2J/puNje+22p/Ztd9+wrDDo47I3u5zB3jZVD/DEvB6eKeAflt7McEsJWO5yr3uXQ1abcwXlNlUPCxxcOeazZofxiF8fdkRqOcxWDHP36mjp2N7VzLD7h5mh7xd9xl/dUxz/j0xwtb3FH/XfzHDfqLnds37De0ddvm+OiMfsdS/MPO55sPO1YtOGq44y5tx0dyx473u3/znH8+c+Oe3b+cUx+01GSvaqbJCGyp8TDt7dEK1xHUjFfVxJdayR5L1hIAq6MkuxMcpQ8Huks+d5vrOTzgPGSapooWTg9XGL0KlqyLSJJ0tKWKbE4LZUMqp4hWXF9jiT9/gLJ6W9LJOmDV0pWBK+V6OzcKFFt+08SG7dDYvxyj8Q3vljyvP2gpGb3UYlx+EnJW/1zko6/L0lmPb0mibl9Q7K39o7Es+6BxLvbM0mxw2tJQkG9ZFZlk6TF5Jukcv0vSXPffxLBX0nYr9tZuPyzq7Dgbneh5YSqoLWnl/Bwk6Ywen0fIWyztqCzd4Aw49RgYdl9PWF0i6Gw1cBY2B5oJngsGy6suT1CmNPfRtCZZi/4XZQI5voQ9i5wESp+jxbmpnoIdR+9hfpMX2Gu0gThytpJwvZRocLAh5MF69mRwnu7WMH+e4JgcCxZ2D89Xaj0zxZmmecL99XkQoR0urAtc6ZQmjpbPGeuYJw5X1hTsFC4MWexcHP1UmH9nuWC+dmVwvyHq4WSn2uFjdobBB/aJFTGbRHU1hQK/a5uE+r/7BDko3YLj1L3Ci0H9gsvvhcLCyQHhF9zywTj+4eFQSbHhHu8XPB9fFJYbH9GWLjxnODZ4aJQmXBZUHlwVVAde124cbpKGGdzU1hcdltYMKJWGH30nnBGeCh8r3gs1E18JqxpeCF0mP5aGKbzTuhWXi/sDG4U/rQ1Cd33fhbuTPgmBHRpFpac+CUo0v8Iwyz+CXOb2oWbk5SY9amOLFu3M1s+rwub86UrmxDajf2r6M6m26qwJ7tVmXr/nmzQkl6sUycNdqFAk036ocWupPZhPT72ZcOStJnOx/7sbeoANvvHQPa3YDBz76TLEpbosYj+BsxijyG7aWvEXK8NY0tCTVjRF1O2eZ45i9Adzn6ftGRRk0awrc0j2YE11my5nS1zfWLHKqY7sIHGEuZcIzB7GbE2Yye2+oEz+zPPlVk6jmajPo1hXXaOZbtDPVnvPt7M9/Y4FrJkPBvh7cfuqgYwt1sT2PRVE9m84CAWohfCfjeGsqnHwtnqWVPYCv+pLMggir1vjmbOlbEsems888mbxpT8k5jUIoWd7pHGrjSks9WVmcykJJvNWZHLdufms8VTpMzOQ852W3P2cfl0ljB/Brs6fSbrUjCLDc2azYalzmHdE+ey6rh5LC1mPvsRtYAFRS1kW6IWsQvRi9nl2CVsT8JSNi15GVPJWM4W5a5gjfKVzHjOKua6ZDVja9ew3lvXsuv717GwY+tZ1cUNTPv2RubyfBMb+3EzM/23hTWoFbLZQ7ayPyO2Me/R21lB8A42M2Uni5m9ixls2s1OH9rDLKv2MtnbfWx72362o38xk9mUMEv/UnYq9QAbsvQgCyspY+k3DrHJnw4zA/Wj7PzIY8x64nHGC8rZ1sITbMOVkyy+6RRT632GzRfOskcx51j7svPsz8kLrLLuIkvVuswanK4wu9SrLPi/CuZz8xrr136dHbaqYgZR1Sxm7Q2WX3mTRbTfYv1tatjOxDusw45aZvHkLjPvfZ/9HfeAbZz/kPW4/Ih5dnjCgtlTZi99xupOPGdRLS9YqcMrdq3gNTt4+g2LbX/LGlzqmOO8ehZU/Z65aDaylqAPTLa1iVW9/8jqRnxm1dIvTH71K2vR+M4w+QcbX9TMTFt+spvuv5mwroVl1P9hGfatzHHhP1b5tI1paHcgvYsdaE2SEiX160i7L3Ykt5RONFqnM+292plSM7vQet2uZHCzK2nIlCnStBv1ftSNjOd3py12PSi7vgeVrFMh97Gq5NKiSv/tV6PQsJ6U17MX/Tzfi+5lqpPWMA0qe6xBB5ZqkpqrFlX+0qL64t4UFdmHSLsv5d3sS+pz+pGyoE1h37VJvag/6UXp0IoBA2jy3QG0YMlA0nAfRD87DCb7U4PpQfYQqrXSJbMmXXq5R4++RulTuK4BGT0zIM+NhlQ5aSjt6mNET2qNKGnlMAryM6ZCdRNyum1CkuWmtNzXjKBhTmPvmNP+VRYUGzicCvpZ0vtHlnRgsxXdnDKCRhuMpD71I4kVjaIzqda02tqGLrXYkMc5WzKaY0ehXvZUp+FAFQ8dqL3QkZbESSjdUqCiXwJJzjMasoAo2B/0foATVb9zoi4HnWllgQtljnalvepuNOKpG/XcO5ooawxddHKn9Wpj6cLjscT2epBqjieZu3lRoaY3Rb/ypoKD4+gV96GN48fTziG+1P7Zl/af96PdK/zpW2QALbGeQPldA+nIw0BC0UTqr5hEzn5BdMIwmBS/g2lVdQg1bw2lXdlhtMMznD4NmUzzmidTctUUKtwWQYPzplKDTyQpGUVR9L8o0roXTT1LYmjCnFh6Fx5HF2zjqb5XAgU1JJDWpWmkvSWR4nKTqN0vmV6ap5BKt1RSvEklx3NpRJvSaVFuBg2ZkEl/rbJoSM9sWvghmyTXc8h6Ty5lzsmj31H5dNmlgO7pSclcSUbXXsrE6yOn21sVJJnBqdlqOqVum04qmjPo+swZtPf7DNoXPZOq782kXu6zKLt8Fv01mU3bN82mRLU5NIHPofCvc2h+1Fy6c28usbHz6NrJeZRlMZ+wdT6Zai0g67kLaHLLAtqbtJA0Xi6kDQGLyKliEXWVLKYPpYvps/4S0li3hPxVllIZX0rDfyyl6/HLaOazZeL9uJx8KpZThLCClpWtoKdGK2nM5pV0Q2MVpc9bRSP/rSL1zNXUvWE16U5ZQ/731tA2r7WkenEtrbRfRzYH1tH3oeupevN6uqC1gWoWbqBWpY3kkr+RdnzZSEPiN9HRF5soZtJmsrq1mfq4b6He57aQhd1/FHHgPyoeVkiaWwtphfZWMlmxlR5330a7Zm6j+X+30eys7bT+43a6EruDerzcQXHBO+npnZ2U4L2Lel7dRZXYTf+d2E0LRu2hRSV7aOewvXRv214aMHAf5a/dRx/V91Puov2k3bWIbk4vok1/i0ieU0zZX4tpZlIJ7aovoWeRpWT6vJQWBx+gjvcO0FLfgzS8+iC9di+j/ZfKaB4OUe6pQySzO0yrDx+mc5ZHqK3oCPkaH6WjO4+Shd4xKt9yjAJ1jlOXdcepQqucNi8vp5lqJ0i68ATNUT5J22afpJtKp0iNn6Lw1lN0Nv80Wf06TYeyztCYb2eoIfUsbfl4liITz5FtwznSiTtPPd+dJ42oC2T46gKNmXKRcp9dpPLQS6T8+BJFB12mmvuXySvwCt2tvUKJ/ldJveYqXRpfQbNvVpD/uGtkUX2N+nhdJ5XK66TmUUmDrlWSvXsVTb1aRWtGV9P9y9Wk73aDpJdu0AuXmzT+4k2qdL5Ffhdu0Wun28TP3yYjpxp6eK6GVuMOhZ67Q+aoJeVztfSB7tLjs3fpDt2j2rP36Dndp29n71MvPCCbcw8oCg9p47mH9AiPSPf8I0pzekwV5x+TkfMTWnzhCf1xfkppF59Sk8szSrv0jP64PqdFl5+T/ugXdP7KC4oe85J6VrykM+6vKPPaKxru8Zo+X39NRz3fEK96Q+O935Lhjbf0b9w7enLzHZ0dX0c7b9fRUr96kt+pp9SA9xR99z2FBzZQ8H3RpEYKfdhIEcEfKP7xB8oIbSLF0yZaEv6R/nv+kQ5O+USXX36ix1M/09fXn6lH9BcyePeFKPYrBdd/paz4b7Si4RuVTPtOlR++U13SD+r06QcNSW0myZdmmpj+k9K+/aQFmb9o249fVJ79m27+/E2vc1vox+8W6lzwhzT//qHBsr9k/O8vWSpaybq9lWyn/yNrpTaymtlGxp3aadDsdprXsQPaXDogc1YH1F3qgImdlXDFTQkj5ihh0xUldOraEXFjOqJybkeYVnTEPOVOeOXeCfbzO2HJtU543q0zzD06I3dBZ5y73hmdenSBm2cXzFzYBacru+Bbj64w9OqKgEVdoajqil0qyqjwUkbdImUoVSujn2o3mHh3g+3ibkB1N7iqdoerd3fQ4u6wru6Ooao9oOndAy2LeuBJVQ+Uq6hguZcKIhepwLJKBT97qKLcUxVZC1VhVqmKJ93VMNdDDWYL1FB5TQ2R3Xqi2b0nZszrCeWKnpjXtRc6jOmFjDm98PxyL7h2Vsc2V3W0zFSHx0V1rFLSwD0nDWhM18DocxrIaNPAOqaJozJNVJ3SxOM/mnjloIVXeVp4eFwL135q4aBNbyzL6o24w71h+603/ln1wenUPsgo7QPdj31wxawvIqf1xc+9fTGjvi86GfWDPLofPm7vhwmv+uHQEG0oT9ZGwGZtrHmsjZva/fFvYn8YrOkP1PaHv4YOQsbrIHiJDnyqdODQfQD6uw/Al9kDcPriACg6DIQtDcQb6UDMPTEQg38NRLH1IFhmDMKeA4PQ++Mg5JgOxs24wdDZNRihrwdjxZAhOB02BE82DMHn+0PwS0sXP3x1UbdEF1WVutilrIdMNz3YzNDDhzN6WPtHD9Z2+riaqQ+vg/q40qSPkSYGWBljgLptBhj+3AAJOoZYN9EQJ1Ya4sZNQ9zrMRS3xwzF2ZlD8d/Zocj4MxT2tkb4mm6ELSVGkDQYodpwGMZHDMOVTcNg8WAY5mkao3acMTQXGMPlsjFi2o2R72iC6dkmyDtogsgPJiAjU6hMNUXlJlMU3DfFQA0zHPAyg/VcM+w/bwb1v2ZIsDHHoVRzNO0zR7+35hg12AJOQRZgKy1gVm2BHl2H4zGGY2P+cHgeHo4PTcMhM7JE2xRLpG2wxJ07ljBUtULsaCusV1jh5HErVH+xwg2TETgXOQJbN41A+t0RGKE2Eq9Gj8R0xUj0Oj4SSz6PxN9hozApYhR2rB+F57dHoVt3a+g7W8M03xp6ZdZQbrDGE10bFAbZwG+5Db5V2GBGuw3abW2RlGKLq7tsof7MFu697ZDsZYcZM+0w64Qdsr7YwX+YPQZPtsej1faYUWWPfh0dsMneAWqpDkja5YATTxzwQ8MRA8c6YqTCETZHHGHU6IjOuhLcCpRg3iIJLC5IcP6nBE7mAkqmClBeJ8CnWsBMJYYdtgxliQxFWxlW3mOI7UEYBsLdTELKXsKPp4Q4DeDqaECjAPAoBZJfA4q+TijwdEKUwgn2h5zw+50TdvV3Bo1zxqXpzrA+4ozl9c54qOMCNR8XmM9wgf0RF1jWu0BTxxUvvV2xkbvC6ZArbr91xbh+bjji4QZlmRtGl7oh9aUbZmmOxiy30UjJGQ23vaPR5fFolKmMwVg2BpUpY2C3dQyW1YzBnY7uaB/ljn4x7tBZ645uFe54+csdO4zHwi94LBoWjEXiybF42DgWVgM8kOHlgf+kHjhaJHrigW0qnsiReMI20RMvN3oiq9IT31o8EWLihZIgLzTM8xLvay/o1nlBp4832ly9UZ3hjdnbvGF02xtlbWJrMQ5zQsfh5oJx6FA+DgPrxkG/tw80XHzQmOqD4i0+CKrywaffPkgyGo97AeNhNGM8ppaOx9wn47Gqmy8W2vgiMdIX1st8UX/KF7Pe+6JbHz/kOvvhZrIfem30g8NVP3h/84P7YH+Ye/rjT7Y/yrb5w++GPx7/9oe3YQB2jw9AY0EA+u4OgHlNAExbA6AxbAJe+k3ABtkEOO6ZgMs1E2DbOgErjQJx3zcQHaWB0N4ViL63AtH6OxDV+hMxy3siDHMmorhwIgZfn4i8bxNxcsAkvHObhN/Jk/Bj7SQ8PDcJu95PQohGEH47BEERGYSmhUFwPRyEmU+CsK9TME6YBaMsIBgrpMEI2REMlapg7PwWjKE6IVjmHIJX8SEYsDwEdDwEY5+HQNIlFH3NQ/HIPxRz8kOhvTUUq6+G4ndTKNy0wpDnEIY1U8KwYU4Y5haFIbQmDNq/wnBmYDg8XcJxLi4cA5eEI/JQOJY9CMeu1nBs15uM+WMmY2LiZKgsn4x9RybD8tFkbPk3Gd/1pmDEmCkImjYFsUunIOzQFEjuT4HSnyk4MCgCY5wjcDk6AmbzI1BQFIGDNyNw62sE7veeiit2U7EpZCpC5FOhtHUqll+cim7vpiJOORKlJpF45hWJ5uRI/FgWiadlkSiqjURUcyQ69YvCIvso/A2OQoA0Cqs2R+H0mShUP4/ClfYo7NaNRopzNHQjo3FiZjQcd0Rj56VoNL+JhmXnGPgbxiDMLQY+0TEwmR2Dph0xWHcpBmZvYrCnYyxU9GMxyTkWiyJisZfHovS/WGw6E4v0p7Gw/BuL+/3jEGMfh6cT4yDJjsPsVXE4UhaHG7ficPNjHMpV4rHQJB6j3ePREB2PrJliWyiOz8Rj0eN4nPgVj1u9E3BrRAKO+SRgXmICnOYn4NXOBCRdSMCLZwmQ/EkA7zsNxSOn4ZLPNFyYNg375k5D/vZpGHV2Gu49moaI5mm4q54IK/NE5LgnYldkIk7LE3FmfSL2HE5E/s1E2DQk4nGnJMQPTsIL+yQgIAnzk5Nwal4S7m9LwpNTSbh+LwnbPidhavdkqBgko1BIxoCJyZiRmoya+cnovj0Z5qeSYX83GRYfk6HaNQV3B6dgrl0K9HxTsDs+BX1mpCBlQwoOlqXg6fUUfH0laknBY41UlJikYppzKtSDU7EtLRUD56diemEqbh1LhfLNVJi+S4VtayostNLQ0zQNj5zSsHRSGoanpKF8dhrMNqVhYVka7lSkocvzNBj8SINpj3QM0k1Hi006LnilI2NqOnrlpmPt4nQob09H1PF07K9Ox9NX4p6f6eigmoFvuhm4ZZOBdZ4Z8JiSgfrMDKTNz8CbzRlwKcvA4isZuPAoA68+ZqBJKRNv+mTiikkmVrJMePpl4lN0JuR5mfi9KBOTCzNx4FAmmq5kos+jTJg0idrFvmYWmgyzcMAuC5M9s/A7LAs8NQtfZ2TBd3UWNu7Owu3yLHyrzILSsyz8/ZSF1x2ycVQzG1mG2Rhim43j7tmQBGejaFo2usmy4bckG/P+y8a+A9koP5+NwzXZ2PQ6G2nfszGycw5e9s6BdGgOOtnmIG9MDh5NzIFxXA6ic3OweF4Otq/Lwa49OVhzPAcZFTlgD3LQXJeDjT9zYN41F8V9cqEzNBfZ1rk445qL7/656BuZC+P0XAybngutZbn4tCUXx4pzkXQqF+qVudj+MBf69blY3pyLpk55sNPMQ6puHtYOz8N+IQ+lnnkoDMoDj83DuKw89JiZh6PL8jB+Sx4e7M+DT3kejlzJQ7faPHi/zIPiYx7++yPmlPNR0jsfm/TykTs8H66SfLS552PvhHy4TM1HZbLYFuRj39x8dFiVjzGF+ZAV5WPb8XwcvZSPk7fE/JN8rKjPR/T3fBi35+NJjwIo+hZAXb8AqywK0NWhAAluBTg9vgDtIQUYFVuAiekFmCYrQOq8AkStLMDYLQUYvLcAbw8ViM/9ArhcK8DjO+LaswI8qy+A+7cCbG8twKeuUphpSBE8QIq8oVIssJRioYMUMlcpIsZJYTNJitYIKQ5PkyIsS4pfcilmzZNCaYUUaRulqNkhhWGJFPHHpPjvnBRXr0nxskaKpsdSNL6R4nGTFKebpVjeJsVEZRl6qstwQluGiXoy1JnIED9ShqeOMri6yrDZS4b3ATIMC5MhKFoGWZIMq7Jk2CKTYcNsGRYsliFxtQzOm2XovlOGK0UyZB2Woe8pGYovymBdKcPBGhl0H8kw66UMj+plMPgsw9SfMqz8J8PxznLcVpHjmaaovxw1unKcGCYX73M5Ym3kMBXkeOMixzIPOax85bgyUQ6fcDmqo+SgaXLsSpOjQ64cvnI5Vs+S48YCOf4uk2PQWjmsN8vhtF0O571y2JXKoX9Ejo4n5XhwTo5tV+SIqJKjT40cZ+/LEf5Ujm+v5JDVi/kmOdK+yfH4lxyO/8TaHRV4oqzAQDUF/DUV4P0U2DZQgZN6ClwzUqDaTIEKKwWO2yjwn6MCUijg46ZAPw8FHoxTYIm/Ao6TFHgWqkBOhAJdY8S5BAV6pCigyFCgIUcBL6kCO7kC32cp4DBfgdzFChQtV+D+agVa1iuguUUBg20KmO9SwGyfAvolCqiXKfDziAK15QrsOa1A5nkF7C6LZ1QosLtKAb9bYv+OAkvvK6D7WDzvmQIWr8S9bxXQea/A7A8K1H9SwOWbAmuaFXj5WwHDVgUi2hVY3ZHjQheOum4cnVU5BvTiMNXkGNlHpM1hNoBj0GCObnocTQYc1404/jPhSDbnsLHk+DmC44A1R5QdRy9HjqMCRwDEvc4ccjcx586xxINDxZtjlg/HD1+OKQEclwI59II48kM4qsI4+k3hCJvKsSmK416MmIvnsJ3GEZ7EwVPE+TSOsgyOC1ni/hyO23kctwo4rss4zig4iqZzrJ7JkTebY+JcDsv5HB0XctQs4tiwRDxnGcfAFeLZKzkWrOZwWMvxZh3H/A0cxps4Lm/mCPmPo6mQI38bh9IOjtk7OTrt5pDv4fi2lyNqv1iziMOuhGNjKUfLAY4JZRz7D3H8PczhcZRj5TGOB8c5tE9wBJ7kWHKK48JpMX+GY/A5DvfzHIkXOBZf5Nh7SVy7zHH/Ckf9VY7mCo72axxdKjmUqzi6VnMo3RDriD7e5Hh+i6PqNsfRGo7Ndzh4LceUuxySexy973M0is48EGs+5Ah5xGHwmKNBVPKEI/kph9kzjneizc85/F5wdHrJcUg0+ZVY7zVHqcj/Dcd30cq3HMPfcVSIJtdxfBPNrufQes+xVWTaIGZF9o0cp0TCB7EV2TVxlIlMPnIUijQ/iTnRd1HEZ45qkc0Xjs0ipa8cMaKroqHfOGaJnovsv3MsF9WLJD84lopeiIY3c8hE10RaPzlCRTtEDSKLXxypojLRF5Hlb44k0R7RK5FOC4e/aL7otOiLSP8PR4BoluiQ6KVI9S+HnWiqaKHokOiRqF1k2MoxVpQoWiIqEd0QfRSp/OMwFo0WRYikojWiUlGF6LmoWaTaxqEnshV5isJFaaKZotWiXaKjoiuiu6I3oq+iNpFKO4e2yFBkKZKIRovGi4JFUaIkUZZIJpotWixaJdoo2iraLSoWHRIdF50WXRBdEVWKbopqRPdED0VPRS9Er0RvRXWiBtEH0UfRZ9EX0bf/2f/2P0W//mf/3/8R/f3/a/3/+/f/1/Y/0/6/Q/wP//+Tq8gbFTlfxWbdtQs2vg3M9vivzbbDZY22G84b2P3oGGJn//9jiLoDcv67aMhq2+1hJiPRep7v554koWGmrFfZI6Fh0x5CSZpWe6c9bFpGe6GUdkmlSVbi/d19/7njnHFeWm3tyVppMe+0rOYKaN88OEu7MHCZ9tSHRtqbC49om3e4asuZ+2t3lEVrx2o91HYKLtY2HWzSnrtqWNvh5Xhe38EpvP0ucrxyaRWejqoWL+PFap58yRae99a9vK/brXnmHxx5bd2XeVMX3OCtDA/mHd0Rzru5MYGX5ZrBqxl+yhuOfsUT86/gzc6p4y1V6eDxqvp57OFvnkzfWP7M0El80ZNifAHz6fz+Y9L8umBFfk77fH74xiX8Sx9W8E1c+Px5hrr8gWXr+NmaG/mndpnxl4Tu5jeOOcj3dLXiq8w9xS9ou8hf3OLMH2xy56v1XeH3CV/nz+Pd5NecDuSPz7vNT5YL5Vd6RvJPjIvje3jf50suSOPPrcjix3s+5sdvesFXUi7gTxMv5DuML+PvE67mv1Cs5fvrN/BbzrfyY5518tskevnBdkP8go4f/MOHR/m6l8ZwV4wFOe+5EzljQSHuVY8IN1InzvVUTuUCKmZwI+8lOekOGe7bb3nOU3I2V0PzuCZLZS48dBEn93EpZ6K4nFtlpcF1v9DmjGUYd9hBh+O6VnGvd63hRN4bcELb13O5LZu4ZXZbOTOR7ZxG0i6uxNSCk56wn1N8fohrtLfktuif4Byn23J7e05zI4XnOeNUe25huRM3qciFy3vjxm0r9uBeVXpyUz5e5bS6vTitP9e5qVN9udeL/LhtBgFcnmUQN+HGLW7eozuc/Kd73ODMMC7EKIKb5xbFeeTEcDkC8dzb1YlcrlcSd6U2hVuonM5FXszkhquyOaWlj7j53k84wYFn3GOzHM4gN49LU33JDYW/5oQki7gR3xKuQLycO+RbyTXNfMuphb3ndi75wO16Xs+tMGnk2nqauWOebVyh8ifuX8lnTuR0Dzeg2MclVgxw5PaVi+a+c+3ff3K/s0a4jnN/ubehAkxx/Fi2zWocO/9OkHmsnMAckiayPbKT2RJvIdbxT5h5nhJlM3rEmPd+CdbfMIVxO6cx29rpzG/7TBZSN4v5mUsxu3Zpxqxk2cCwHPN2VmDTxZWYe8hs1qw6l83Nn8e2bF/AjvYrM0tPFbZ1zmKmnLOEdZirsmv/ljHpiOXs5hp19vWLBqMALWatw2NePXzme4sxBwOwrSM6bGqKLnt0QI+tk9VnOe/WMAXfdezwBkMWJGrMUsrWs1TfjSzYbDM7LGfCFD5tZc9TzZi+/XaWYbSTTZb9H1vbt5sdy7NgZ4P3Mkvr/Wy14UE2fv5hljTuKGNtliy9wIqJxZ1gm72t2cVTtuza7lPMZd0ZZqFxjs2ee4EVT7/Edk50YBUjjmzmLyemOezMDIdc2KYBV2bQ78Y0+t3ZtAEP1jF4mcV/82QWP6+wSaNXWdRYL7Z8sjdLl7jO5kn5sGuzb7DWxb5ssfZNdmS1Hwvc7M+yLQJY4YlAVuoQxAp8gtn98FvscuZtZvLmDpvScJflDt1j+yaHsmHFMHaBF84Gt0SwHccjWbpnFBuNima8vBh2uDmWefyLY0EKCSx4ZSK7tu8+O+mexFbHJzOhshSW+zWVHZVOZ2NXZbBrlplsgn8Ws3mezUq7HjDpmY/YNr3HzN3mCYsMe8rSKp6xtDEvWNiKHOZ0KJdtup3HJMrzWa7gS7aXe8WGbF8z28Q3rK29kOkpFDO/nSWsOrCUjXtbxmZPrWBqmyvZMt8qJl9Vzf5Me8cKzd4z99s1TK2plpXMrWNmx+pZRfpHpj3SwG6sbmLvrzczkboWtmx+G9Oza2f6uR1MU6KTzdjzmbWldrGwsT3MyPQLa4/rZVajfax1ywBbEz/Ibgl8ZXXbv7FJ6cNsnsgPtuzwT7Yw/xcTVxxh7fZ/WMzHUWbK/rHzGwRI558AXUwdQ0v3jaXt08fRz1fjSPyCIN1dMp7CW8aTTOAEEjGaSKcEJtGW7EkUazWZbOYIUUadEFneFKZgQxFi40Rp21NR6jwtRn2q4nSsW5zMoyXo9Z4pFCM7lUZqp9KrgGk00WQ6PZeYQd1lM8jbeyZFG88idRFJ0i6RpDQvKQpfL00TxGWouUKGlvnJ0ndTOVKTkqfWj/I0KVyBog4qUpaKEnEDSqSVPZviLs2h63pzqUtoHj2umkf/bs+nx/sXUPdiZfL5rkxxOQtJ65oKcWaLKFNpMYX3LibBx0uo3mMpzd+qSp1Ky0h2YBm9eq5GHd7L6dzuFeS4RJ1GRtXpS5kGbQ7TJBVbLTq3Wpv4s3hk3c0jmed84t/kqOQQo2qOaOMUEDpB4c906Jz/Sso/pksueqsoS0aP/vdNj86UribBWH2a4LyGLu1aSwc111HeFAO62WtA7wsNyTvGiB66GpPZ3vV0RGcDfZHbSB1/NtKmj5to6dPN5HR3C+nbm5C9+VZSXmlK+rPN6L3gNqrr3Eabi7cTP2UHBfrtpIPndlHs7v/RLr3d5LLQnGQlLEj5hwXFNu6h4Fd7aSR5H1UG7Scp5wP01vIgCZgeolCdw5SqcoRWzDxKC8da0o0+Szpaf4wy31iRTfZxCos6Qbp+J2mrizXV2thQ2V5b0txiR+J6p2iH+mmaOf8M6UmepVahc/R19BydHjxPRzouUMmHixRRdok+59tT2CMHKkxxJDUTJ3pQ5kSnDZ3p2Ctnur3Khca8cKEwzpXOPXQlTw03qkx3o83L3Eko2Z1GFnnQvAQP8lC+TIqxl2lonif9ifIkzL1CDyOvkOWcq7Q18iqdmXONKiOv0f65XrQk2ouWzvemI7HeVKd8nVwTrtOBxT5kn+xDZctukFnGDZql6Utij3wJ7CZFv7hJenp+JP3ajxYY+dPxcn/qNgmgkNoAuro7kJJaA2nikSC61RtE++yCaf+vYLrjeIuEJtymVK/bdH3aHYq8fYf6le6SbfxdWqx2j+Qe3SN93RCKLgwhbksoTaoPJdEDYbSuN4wenwmn/QIRpHc1gnZOj6TYkEhatDCKPmVEUS2iSaAomixMY2i4OYZyrWKp4Gcs/XWLoxNT4ml6SDwNqiSQ4MME2qCfSGVVieS+5z7Z9N2ngEtJ1CeUTA63kklPOYV0HqSQ7ZpUqnuXSucOptH64TTa7p5OwTMySDwmg55oZlLI60zK3p5Fgt1ZdOViNumJPqDloQ9ou9pDysh/SKvNHpFw1yOaeOkx8cSfUFjEEyLNpyRR9JQkzZ+R6dAzeuPxnKxlXtCG1Be0Vz+HEupyaIF1LtWNz6O8O3nUrJZPy9/k02PzAjo7XEBHvF6Sz5xX1PP4FV3a8ppWdb8mcnlDVtKF/3FfSJZGRcRrLyLOvpjsZpZQc0oJORuUkllbKe21L6PQWeU0Lb2cnhhXUFBnBcW5VFKvXBUdflRFM0yr6edANYl5v6UdC99R7ct35LXvPdn9e08+d2uoiVdL+2tqSeb0B5o4rY7mp9XRhY31NLavnp55faSkRQ1UUdRACywbKX1yE1nHN9E+g2by7Gqm1istdFKllVSLW2mOVRsZirZTdHI7qW/qoOHBDur2+0TTNDvpRG0njV74TC/kuigzp4sa9neT9sQeep3QQ54bvpD90BeKCuylf/w+8mrqI2O3ftJZOEAHywbomd0gGUgN0cQXQ/TjwFeSFv5G1mnf6Oe2Ycr4O0xh0d8px/gHTf32g4Lu/KT1er9Iq+cXbfH7TaHcCCm0j1Cl1x/K0hil4sZRmub5l7zV/hGv/h95rRKAf5AAsr4IoE93DHSDxiDpyxiorRqLsqCxcOsdCxO9ceBu/ef947BVXxAedwRROSgI9XXjkRoyHquHx2PIaAIeRExA4K8J8N40EXdjJ6Lg70SMN5sE86RJKBecjB3/m4w/GZPxQFgIV/cL4cwTIVyYJozAY8IozheGpKwI7E+J4HeJCG7MEwUcRCFYI4o2VTF88BTD5xYxiHPi2OAvjuhecUxfK4E7YRLg/5bAoMkU5CZNQdzEqYjdOxXPn0xF74xpWGE9DTeLpmHyvOkIcpwOqpuOEfUZqPSZgefdM5CvPxPNYTMx489M7N02Cy/TZ2GlmCSqj0rC4aUkVipJQdpeCsIfpDBdQxrqvtKw6pXGEwMZzI6RQdhYWWhYyKL1iSxiJOXgfFoOp6rk4KAqj1AvedR0yWPBWgV4RylAeKwiwiwUYfxMERIySug+p4T690poV5+NcX6zwR+cjcsb56AnaQ4Oi8zFL8u5iCici33K86B9eR7mf5oHFf350I+aj7PjFiBn3wIo5C1AgJIylJyV8bJZGQ4rF2Jj2EJoCqhgxR4VrMtRga3iImQ4LYJwyyKc112M0fDFCB67BAb7l0CiYAn65i5Fq/tS9H5aCtF1qlgdrwpfoWUYPrYMJ0qX4e9SNUTeUIPFkBrUti6HVPZyzJJcgUUXVsD04wr4Qx3dYeowG6eB2oMaOPlGA7KLNNHkrYmHA5qINdFCYrYWXkppY/iSNrhmbQTq8TAxlgdvIT4WnuCjvpKPCA0ODrc4WI9yOLeXIeAlw+uFBPHrBKshQqMZcOgJME5RB1luOrDv0sHODSthlLESJpK6OGmvi7BWXXSuXYVVSauQMVUPvHN6qG7Qg6veaqyNXw0lcX2In9bH1Hp9qOiuwbbYNbgluhYDdmuxq24t6leuw8nYdZASM0DNKQPE1xvgxipDeMUb4p6EEXLPGmGk0QgGa4yRmGSM2TPWI+nSehi3r4eA8Qa8ydiAKJmNCHDdiNs9G5FhsgktTzZh9tzNOOe1GS3fNsNi9xYMvtyCoKUm2BxkAgWBrRhzdCt+VG6FAGcK+ShTbBQ1Q8AZM/Q1mWGXwTbUp2+Dtex2SHpsR3X/dkTu2AGP/B24tGQnPIJ2ImrMLrw7tgvS73fBduX/0JDwP/xvxm70O+6Gf/durDc1h3SOOX6pWOBLgAWGBPZA2GoPtGr24OyqvShK2gtVqX2Ic9sH9YF9qNq1H26v98NgxQEohh6AsPBBTDp7EJJtB8FtPASbJ4fweMFhzPA/DFeBIxh3/AiCPhwBW3MUw+lHkaNgiXtelvD+ZYkbh44huvoYSlZaYUKyFbbIHEeq53EofT+OqP0nwKs8gRacxO37J3FI2hqrPa2h/t0aWgdsYFRlA5uVtohPtsVXWTtsumaH57/sQEdOofz9Kdjpn4Zy5mn0zz6DN75nkCFwFiknz+JZ41k0rD8HsWfnsGnxeUTfOQ8h4QtwuXABQt0XELXjIjYVXoQo7xLq4y7hsaQ9Ej3tkfTTHjlHHNBe6wBpA0fseeSIj9OdILHeCevdneD3zAktw07QWuqMwEPOGA1xxvEaZ3SIu+DQOhf0ObnA6ZELpIZc8ETFFYf2u0Lyriuq37oiUNQN+9a4QcPRDVMeumF4wA2tC93xfp87qu+4o/atOzpEPfB7jQdmOXmAHnnAcsgDYYsuo+HAZcwJuQzrmst4JeGJOYaeuOLqiR9PPWH13RNdqldw8ugV/Im4At+PV7B05lVUb7wKxytXoZ5/FQN/riJT8xqcrK9ha8I1qLZfw1R5L4xu80K/rxe6ir3QM94bwzremHDBGwqZ3tDp88Zh5esI3HcdpXevQ6TmOrZM8UGokQ+G3X2wOccHWb99oKRxA34nb0As4QZ82m9ASsEX8Tt8oevvi+YyX3hMvgn11TfR5XAT0Y9u4ui3/3pVP0yw9ENTlB9eNPkhVtofgab+uHbDH57F/vCaEIBg3QAkXApA/oMAtA0FQHhpIHhHA3EyKhCJTYHokw6CtlkQrvoGobUkCLqTghGrF4xpjsG4/DgYY74Hw0XtFoSO38KtuFv//XwLxQq3cWLXbUgG3cabqttwFLsDMryDsR53UJp7ByGjd3CWdxemp++CS7uLBb13IbXwHqYe/M/D70Gy4R7mSoVAyzQEm3xDYF0agsDJocjXD8V351CoPg/Fyd+hyNQMwxi7MJikhOF+TxiElcNhfSAc9WHhWN8QjgKpCKwyi8CrmxHYXB6BFuFInF0XienukcjOjYTF30iIclHIOxsF+8wo0GAUBJdGo8IyGhGx0bjYHo0dSjEg8xgsuBODWbUxEJkRi4lbYjHJJxbiJbGQnRyHpWvisMY1Dgdy4uA5Goc0fjyazsZjelY8NgzFw1s1AdVWCZBLSMDxzgTkz02Ewr5EOIYm4tPHRGyWvo+8bffBC7iPrKr70JRIwrP1STC4loS6N0mwmZAM0dXJSHZOhumLZAiMJv+3IwWHz6VgTnYK2r6mIF4tFadOpmJ1UiqkelLxVTkNVYfSkB2VhrDWNFxXTIezeTrO303H2br/smQGnMwy4OWfgXtVGUiXyETphkx88cqERHEmeJOzcHhtFm67Z6EyPwuiY7OxYWU2/Byy0fA0G4tHsuHIe4Casw+gnv0AAd8eYGT5Qxy0eYi3KQ+xtu8hXix+BO7YIzyNfwTdz49QNP8xth98jJ7Ix3BufQxZpSd4avEEFiFPMLHhCTJlnuLAzqeQuvUUVTVP4TPzGTaZPsNM/2doqnqGpCnP4bjpOUx9nkO17DlERV+g3+gF3l19gReFL5A0KQeha3MQ4JEDn5c58BbMhY9eLvxdchGSm4tEgTw81clDpUMeup/lYcJoHuazfBhezIfN43zc+5WPEu0C/D1bAPUHBTjxvQCJGi/x5dRLqGW+xPmvL1Gw/BWm2b7CobRXeDrwCjOWvYbtydeoSn4Nzb7XuLfkDSYef4PT99/gU88b7FxUiErLQhgnFKKoqxBGC4tQcaQI2+OK0NpZBOsFxRhzuBgBMcVY8qkYr+eV4MDBEghGlyCuvQQb5pbi5/5SREWWwqStFOPnlOHxvjLYRpRhSWsZupXKkbi3HCfCy6HeUo5RxQq82VOBwLAKHG6uAKdYiSl7KtEdWolXTZWIUqiCu0UVjoRWYUNTFbQUqqFkUQ3x0Gr8a6zGoPxbfDJ/i4aQt6hpfItq+XeoNH+HqpB3eNf4DvXy79Fq/h5fQt7jZ+N7TFSogaRFDVRCa6DTVINtCrWwtqjFtdBaxDfV4o3CB3RbfIBY2AesaP6AXYp1cN9Th9SwOjQ210FUqR46e+thG16P2JZ6NCp9xKx9H7El4iOut35EyewGiOxvwIbIBtxsa0DNnEbIHWjEoahGpLY34s/cJhgcbEJwdBM+dzSBP78Z1w81oy2mGbzOZvguaEH34Rbox7Ug/HML/im3wvxoK57Ht0KxuxWuKm3otGyDcWIbMnraILO4HW5W7ei7346dve14vaQD6ic6EJncgWn9HXBX/YQfJz/BMvUTGgc+wUStE0U2ndBN78SjoU4sX/EZ9+0+Y37mZ0R8+wwFjS7cPd0F6ewu3PreBSmtbtw62w3ph924+7MbCrweRJzvwfzHPUj43QNV7guyLn4B9/QL8v58gQH1otK+Fzue96L1by+O6fRh2LEPjjl9EBrTjwDdfii69CMxrx9a4wZQoDeATW4DaCgYgOX4QfzQH4SbxyCmvh5E2MQhLFk3hCeeQzAsHELt5K84ZPgV365+hWvxV0wR+YZQ429Y6v0NT0u/wVBsGLUbhnHIZxjfyofhLPEd4pu/467vdyys+o7sqT+gZ/ID5X4/sOvtD3RO/wk705/4G/ATnu9/YtqsX7i37RfmB/9CSu0vaEv9Rs6O31h3+zfK637DTGYEH3eNYO/dEXz6OAJLuT/o2/0HNiF/8LXxD04rjGLYYhRnwv7LzaM4pfQXg3v/4kTEX/S0/sWhOf/QvP8fdkb9Q3X7P0RPFdBpWS6gI2MioGNmJ6Bzw09ApzBDQGfsWwEd/jcBHdvpY3Ti1cfoNG8dozPz9Bgd44AxOs5ZY3Sy3o3R6RoeoyM7c+z/GRrLgCoMdo+rIF0mLdJdKh0/uru7O0+fw+zubnEGzkB0YTHB7m6dCna72V4TXy8fnvwXCZ79mJDRjx2yfjxc1o+B7f0I/qcfgs/9+FVfibNeSnzOVMJSoUTCCiUUfyux/qYSZ74o8d5AGUMfZchWprxJmZkrldm+V5lLt5T58FWZwUb9GeXbn7Sc/oh/6c/CVf3Z3tGfM7f78+Rbf34aqWDgp4JbrgpRo1UoaFZB0qnCjC4Vmr+r8LuxKgf9VLmUq8q90aq8alblW6cqqt2qDOxRxcREDWt/NZzy1Bg5Rg2f1WoE7FMjqFuN0B41wkzUCfNXJyRPnaAx6vivVsdrnzru3erY96hjbqKBvr8GWnka/BytwftmDR51anC1S4PD3zV68zVZ5afJ1FxNGkZrktGsiX+nJuZdmvT/rskzIy1O+WqxJUeLab9oUbJKi8AOLfRva/H2qxYnDbVZ7aONIFubkCZtBq3U5tHf2vx5U5uxX7SJMtBhgLcONzN1WCvXoXS5DjbtOjy/ocPmTzqUD9XFwlOXO+m6LJPqkrBUF+Xduvx9TZeaj7oYD9bjzEg9FKl6WIn1uLBID9kOPUyu6HH4nR5lAwag4j6AjUkDCBUM4N78ATT9MYABFwew+fUA/HUGcsF5IIXxA3ldN5DRcwaium0gC84ORP/fgfyqMYjhDoNoiR6ERfUg1s4YhPGWQSw9OQjtZ4OYrDKYz9aDqQofzM2ywURMGcyODYMxPjqYyQ8H86LvEOLMh/B70BC0i4ZQM34Ix9cMwezAEKR3hnCmZwimJkOp9xvKvpyhqP0ylJSVQ1n591Du/TMUi89DKRuqT4uHPvfS9DGS6JOyWJ8ZO/TpvKzPq7f6mOgZEO1qgDjBgOZ6Aw7PMeBxmwEqZw2wemlAsLohuXaGiCMNmVFhSPNUQ9p+M2TvUUOOPzTkQl8jrg834hZGdBUYcXusEf+sNuJKpxFnbhtx8KsROwyMafEyZkGGMaOlxpQtMSZmpzEuV4zRfWfMK10TTruY0BJvQlOdCfGzTTDbasKrUybsfWbCZBVTYqxN0Qkz5WKJKfMm9t7rTFE6aErHHVMaekwxMx7GeZ9hNGUNw0I+jFNLh1G7axhaV4ex9d0wwvXMuONihijejP51ZiyZZYZ5qxltJ80Y8dSMPcrD8bYczp7g4YwoGs7WccMZ/utwFncOR+n2cARfhnN7qDnBHuZsTDVHRWRO2QJzDv5ujv55c+r+NeeAugXadhZkR1jQUmbB80kWOK63oPagBZvvWPDguwUGRpbEelsyOsOSLRJLri6y5OuflphetCTwlSW5mlbI7K2YG2nF+nIr/ppsxcH1Vpw+aMWlO1Zc+27FdUNrrnhZcy7dmqNia9oXWrP5D2uWnLdm3L/WlKvbEGVrg124DcqlNtyZYMPONTZM22dD+m0bzL/Y8GKILb+PtEWQbItLoy0v5tiybqstaadsUX5qyw4lO3LN7eiLHb/l2RH6ix33ltuh2G2H1lU71ry1w1HHnj2O9vhH23Oowh6m2NO53p5RB+1p7bbH6Js9M/QdeD/KgewUB/Y1OmAy1wH5VgcunXTA6okD0n6OHDFzRCvAkZQcR5bIHbm6xBGdHY6EX3RE8Z8jW9SduGbjRE+oE+bFToSMc6Kw2QnF307Mu+7E2vdObNd15m8nZw5EO3O4wpmDk53pWOfMX/ud2XjbmSWfnZkw2IVKdxdiE1xwrHVBdYYL939zYddhF6bcdSH5uwtGBq7cHeXK2mRX8hpcGTLblTObXRl9zBW7B65c/uGKzMgNfS83dqW6ES9w4+EcN8StbvQ54cbMh27o/HRjnrE7mt7uTElz54vAneq57txodSfwhDstD93p99OdQuMR7PEagUbaCHIEI9g0ZwSvtozA7fgIGh+MYOuPETwwHMkgz5GEpIykrmEki2aNZNemkVw+MpKXd0fS5/tI9PRHYTpyFNaJo7Cv7a3pvfuGUZgcHIVu1yh+fBrF84EeXHDx4M8YD+ZWeFAxyQO/NR5odnjwz3UP1r7zoETbE3N7T7rDPFlU5EnYGE/eLfdk1U5PuOjJvZeejFbxYqCFFxsDvBiV7cUBiRehC7w41uZF8Ekv9j70wvl/Xqw29EbVw5v6JG8u1nrjNN2bqS3e3Nrvjd0tb8QfvenQ9aHHwQefCB9ExT5sGuPDjeU+9N3pg90FH2Je+FCp7MsEM1+W+PqyId2X3wW+7Jrty55Nvuw87Etbty9rP/syb6AfCmc/CqL8oNQP43F+fFjhx/Gdfiy54Ef+Cz8slP15OMyfX338SUvzp3+jPztm+pP7mz//O9D7v+WP10d/zukEkG8fwPPQABoLAninCKBhcQDPtgeQeyqA0w8DGPkjgBX6gXx1DyQtLpC2ikB6JgQS3RzIwt2BXLsYyKCXgcQpw4Rh8Kc3dKVAn3ownw4B6yGtEyqug/gNjFYPYrxlEGMDgpBlBlEjDCJndhBhG4NwOBiExq0gnrwPYp9WMHNtgskJCsY8J5jH4mDWzw0me3Mw2oeD6bwdTNnHYNR0QthsG0JwcAg3ckKokITwbm4I8s0hfDkUgvh2CC8/hJCrHcpJm1Bcg0JZmB3Ka1Eo4XNCWbExlKcHQnG5GYrwXSh/aITx3DIMk4AwYjPCkDSGsXJGGH+vD+NKRxhPr4bx6b8w+qiE09+st7zD6ZMczv9Vh/N0UjiXm8PZsyuc5efDET0NJ+pnOIYGETxxi6AtOoK6kgjsRkdwd3EE87dF4Hc8god3Ipj8KQIz3Uj22EYSGRTJ1axIcoSRdM+MJKslkosdkQRdjWTbv5EMUo5CYhLF5VFR2MZH0VQexfGxUWguiyL+9yhmnoji4N0o3n6KwkQ3mhDbaEqJZnxmNEsbo9k0PZq/1kbT3t5bF6PZ8SyaLT+jWaEfw2TXGKoiY4gqjMFCHsPneTGc3BTDwgMxpN+IYfDrGC70j2WSaSzuHrHcjotlXFksJmNi2b04lqi2WK4fiSX/diz33/VO9TiuD48j0juOnYlxGFXGMWZcHDeXxuGyPY7xx+I40xWH3oc4kjTimW0ezyHveN4mxvdy4wkcF0/+0nhk2+KZeTSe5bfjWfcung1qCawzS2C5ZwIz4xOQlSWQPzqBwEUJGLYm8OZgAoduJDDrVQKJyonoGidy2j2RsVGJOBYmck2aiHxOIkM2JLJtbyJcSuTs00RSfiRydVASiQ5JHA9KwiMzibX1SShPSaJ0VRL7/0xC72QSBXeS2PwhiRfqydgMTybfM5n5ccl0liTzQJFM3/nJmGxMxq0zmaDLyUQ/Syb+RzKxg1IItU/BgxQs0lNQr03h5YQUTixLoXlbCrVHerGbKXx7lcJepVSEhqlYu6ZyJSyVppxUjAWptE9NJb45lbt/plJ1IpVXXanUvUvlqUoa2SZpnHRPwyUyjYV5abwSphE6PY0lq9O491califTKO1OY/W7NC6qpPPDOB1r93QiI9IpzU2nSZDOrKnpLF2Vzso/0llxLJ1Ft9KZ+jodkVIGOQYZ+DtnYBCSweuMDA7UZjBjQgZxSzPQ3JrBsQMZyK5mYPk8g7M9GdQNyETVJpPVvpk4JWaypzQTX0Um7XMycV2fScvuTHTOZCK5m8n1970/1SymGGdx1TULk7AsCrOyWF3Xe0/IQnlpFq6tWaTvz0JyOYt5T7Jo+ZrFH9rZtJtns9cjm93R2bTlZ9MszGba1GxqVmYTtT0b88PZfLiWzaHn2UzvySZSL4d+Vjm0e+VQEZuDbmEOO0Q5JE7L4enKHOTbc1A6nMOMazmoPs9h4vccPurkUmKRy2mPXByjc5mel0t3Yy5Ok3ORLculozWXL/tycb2US/GjXOZ+ymWneh7XTPJ47ZpHv9A89DLyMKjOw2hMHvrz89BuyePHrjyen8zj3O082l7lMblPPhmD8rGwyeeFdz6tsfmUFeRjIMzn5OR8BMvyGdiazx+d+URcyOef+/kUf8jnaf8Cyg0KuOtQQHJAAQcSC7AqKWCqpID70wrwWFnAlLYCzu8vQO9SAfEPe++PBexWKeS+QSH9HQuxCigkILGQpOJC8sWFlE8tpGJ5IcWthWR0FhJ+vhCXe4UMfFfIm35FnBhcxHKbIkq8i7CLKeJZbhHr6otIG19E34VFbGkpInpXEU+OF/HLP0VovChi8bcihmoVs8S0GE3XYsYGFfM8uZj40mK2S4pRmVZMzvJiNm8p5s3eYtzOFlPXXUzLq2Iu/6+Y77olDDMvwX9ECWmhJZSnlSAsL0Eu663pJQhWlFDWWkJKRwm+Z0sw6S7h838lnP9Rwq86pVSaleLoVsqLoFLWJ5eSWlLKT1EpGyeXEr6klPu/lSLZXUq/E6XMulGK9rNSZn7u5aiWITAo47ZdGYE+ZfwaXcan7DKiaspY+ksZXbPKMGkuI7OtjDmdZXScLeNRVxkq/5Vh2VOGr1Y5sSblZDiVk+vfW3HlpOWVE1lXjseYckzmlPO/5nJutZXzR2c5486WE9VVjta/5Zz5Vs4kjQpGGVVw376CaT4V2ERXcDirgvSqCh7JK6ibXsHrZRXUbqrg4e4KUo9XcOBaBZaPK5j0oYKufpW4DKxkjHklR90q6R9USVBiJbKCSjbVV3JpTCUfZ1cysLkSh62VBOytJPpUJUn/9NbTSmL/r5evXIXroCoMLKr47lbFLar4M6GKSflVJNRVMXh0FddmVjFvRRUhm6t4u7uKlceq8L/ay31QheBtFX1/VjFHu5oBJtUsdKhG06ea8ZHVvEqvJr2smnZRNYMnVlMzv5rOX6tR2VZNbEc1s09Vc+xGNV8eV2PzoZqEvjUIdGuYa1rDBscadvnUcDCyhmPpvVVaw35hDX+Nr2Ht3BqmN9dQ01pDRHsNpsdreH2lho77NYx/XQM9NXxVr2W7fi251rUoj6xlc1AtYQm1dOXWUl9dy1dZLeOn1PJzYS2/rK3l9bZaCjpqOXmyFofrtcx4WMv9N7WM/FHLBI06TujXoWZdR+iIOpqoozWujqvZdXypqENfUofbxDrC5tWR0lxHzpY68nbXkX2kjqSLdQR31+H8oo5Bn+r40K+eC7r1bDCpR2Rfj79nPX1C6zmQWI88rx6H6nr+kdYzflI95vPr2d9cT9qWep7sqkd4uJ7P53t5t+t5/7Seyg/13PhZT5BWA78ZNKBk3UCuewN/BDTwI7qB8IwGppc0cKyhgZ5fGnCe3kDO4gYmrG1gfVsD+9sbuHq0gUcXG3jd1cCHZ731oYFXPxt4qNnIZf1GOiwbWePayFi/RtIjG7FPbeRzQSMHaxqZJGuESb333EZaVzaSsbGRH382snZfI36nGrlytZHSe428edmI9FMjn/oKEGkLeGYgIMtKwFFXAXZ+AmZGCHiULMA7X8CMKgFXxAL0xwvInCVg4VIBx9cJ+NgmYFi7gJAjAorPCxh9U8D8RwJ+fS1g81cBbcpCWnWFtBgJWWYtZIqbkHo/IckRQlyThajlCemqELJVKEQ0RojndCEfFwrZvlpI0WYhOjuEtO8TkntSyNfLQhZ1C7F+JmTnOyH+PUIOqYgIHCCi3ViEo42IVW4ilPxEVIaLOJ4owixHhLhMxJEGEZpNIhIni5g/V8Sp5SJ+rBfhtE1E5h4Row+JaD4jYs81EWfviuh6LuLpexH/9oj4T0XMMz0xd4zEXLAS0+EiZp23mEkhYgrixHhkiFEtEnOtWkyzuPc3VozxdDFXF4iZtkrMqN96tdvFTGgXY3ZYzN9nxMRfE9N9R0zFMzH/vhVT+03MUyUJedoSzg2V4D1cwlp7CX1GSsj3l7ArXIJKooS0LAmriyXcq5FgKpGQOVbC7GkSOuZLeLxCgnqLBPs2CWG7JOTul1B3QoLiooTxNyVMfNA7X0qQf5BQ0yMhu7+UEB0pNvpSVIZLeWAnZY+7lOm+UlJDpRjFSelOk7IyX0pyhRTlRik75VLyJkjpO1PKuoVS/FZJudwipaRNypudUmT7pHw91jvP997XpZTelXLlqZSAN1JaPktR6iOjUE3GHj0ZaoYyMsxlrLWX8chdhoWvjLwQGYtiZBxNkfEmR8bQUhk+tb08sQzBaBlTJstYMlvGmsUyNjbL2LRBxoY2Gc07ZczrlDH2qIzKszLirspw7pKh/kjG/ZcydryXMeGbjJh+cnQ05FwYIGemoZwgcznv7eSsc5MT5S3nFXLmRMqxTZRzIENOYoGc7nI55fVyXkjkVI+R83iynJzZcs4tkuOzSk7Lejkqrb2cP+Ucapejf7CXd0LOnvNyfl6TE9YtZ8ojOQdfyvn0To79VzmZfRRMVFWwSUfBiSEKHpko+GapQMdRgckIBbY+CpyDFLhEKnBKUGCVrsAwT4F6qYKP1Qq6BAoOyBWsHqdANlVB3BwFposVvFypYOc6BfLNCrx+V/B+l4LWTgV5RxRonlaw+6KC3BsKeroVrHqkYORLBSffKsj6rODxDwV1yk281WiicUATL/WbKB7WxFWrJkIcm9jm3sRA7yYkgU1cDmvCIbaJ8clNXMpswrSgifKy/+fuLqCjuto1AE+ghQTrj1OCS9LiMm4vHty1EIq7+xzZOwQNtMRwtwR3dye4uzeGE8P1vm3nv4vrrt9aD3vO9v2dwyw9Ew9W9+O4IR4EjPYgWPcgcpwHh8I8eBbuQd6ZHpjne9BmqQdDVnowcb0Hc7Z6sGK3B5sPerDzuAe7z7C8xOsbHqy858HcRA8mPfFgaKoH7V57YP3oQYFMClKyKjiWU8HMvAp6fK+gYnEFGWUUbC2nYGgVBeXNCh44FETVVIAgBY8bK5jWUkGV9grOBSvo3V3Bpz4Kwgcp/H+kYIWHc0gFG8aznKJgZbiCYjMURM5V8GWRgn4xCi6uVmDcqCB6G9ffraDeQQVzjyl4ckqB+YICcVXB4VsK3/9RUCNJgeeJgvUpCt+xUZDzvQLLFwXB36iQfioW5FKxM6+K84VUJBRVkV5KxedAFVkqqshWTUV2iwpfpwqfmire1FXxuKGK681UHGqtYmUHFVM7q+jfXUVQHxXFB6rIGKri6CgVUaqKjiEqSk5QkRimYtk0FZ2jVRSYreLUfBXKEhWBsSourFYxaoOKQltV7NipouU+rnFIhX5cRa7TKuadV1HmiorVN1RUvKti7W8cl6xi0RMVeVNUjM/gnt+o6PRRxRGDhoBvNUzw0xCfU4M9j4aIAvxcWEOV4hrU0hqOBGrIWkFD/SoaJho1HLRqeOPUUK6mhp/qapjUQMPGJhqutdDwro2GQj9pMHbW0KSbhm69NIzop2HcIA3ThmmYOUrDPEXDAsEylNcTWT9FQ+g09oti/5kcN5fjF3KepZwvRsP1VRo2r9MQtklD520aKu/S8GmvhriDGsKPamh1QkO+Mxoun9fw62UNda9reH9Lw5p73F+8hm+TNax7rKHlcw0vUzVEv9RQ6S3Hf9AQ/EVDSiYdMouO7Nl0TM+pwz+3joX5dBQrpGOev478xXX8UkqHIUDHsB91PKigo1EVHVuq6yhk0aHYddx06TDX1BFeR0dSkA5rIx1hTXXmREfJNjr6tNexrqOOlM46KnXT0a+njmV9OK6/jhyDdbiGsW6kjhljdOxTdcQLHd+E6igzQee77Dq/s3QMmaZjQqSOmdN1LJ+lY+NcHbsW6DiwWMfhZRSr4+AqHXvWcm8bdKzczP1v0zF1p44xe3R036+j4SEdVY7qyBOnI+2kjnNndKw6ryPkko42V3UE3tDx5paOo3d1THvAugQdhZN13HmkY/5THR1e6MibpuN0Bse81lH9nY6EDzrfp9Xh8BFIyCwQlkWggp/AmewC/XIJZMktsDCvgKmAwIlCAj/5CzwqKjCihMDnUgITygpk+0Hgl3ICOSpyfGWBb6oJaEaBdLNAT5vANYdAHbfAxhoChWsLjK0rkBwkUL+hwMrGAt82E+jSQmBXK4Hv2gp0by+w7SfOEyzQ4meBeV25t+4CP/YSGNBHYF0/gWcDBH4YLNBtqMDc4QIXRgpkHiNQXWGdJjBNCOwMEXgQyvknsO8kgQZhAn2mCoz/VWBRuMCOSJ4zmn1mCKTNEjDMFcg5X6DQQoESiwUClgqUW858xNJKrr9aoOxagWLrBfJv5Lk3C3zaIvBim8CdHQIndwls2cP97uMZD/DshwSCjggEHuMe4rjOCYHdpwQizwj0Pidgv8CcXRK4fZl5uCow/LqA6ybPfZtz3WFO7wk0ecA+8QKnEpjrJAH3Q4FXjwRWPxHo/Iz5eiGwP4V5SRMomCFw6CXP+Fog11uBze8EWn8QyPjINT8LVDJInPCR6JJZ4s03ElOzSBTzldjgJ+HOLnE6h0TbXBL3v5PonVvieR6JIfkk0vNLDC8okVZIYlBhicf+Et2KStwsJtG0hMThkhLG0hLLy0jkCZCQgRJPfpBoVU5id3mJEhUlxlWSSK4sUa+qREw1iUxGiWCTxHazRC6rRA+bxC67RA4n610Sa90S78H+NSUia3Gt2hIl60r0qiexOkjiWX2Jig0lBjSSWNVYIqmJRPFmEu2bS4S3kDjaUuJtK4lybSQ6tpWY0k5iZ3uJxA5cr6OEpZNE52CJ8Z05/meevQvP25Xrd+eYHhJBPXnGXhJab4npfSTW9JU42E/iSn+eYwDzN1Aiy2CJfEO4r6ESFYZJmIZLuEZI1Bkp0WCURJPREs3GSDT3kMJcqRKNNJ5Jl6ghJGxSokqIRMBYCf9Q7muchGG8RCrdnyBxdiJzMol5nSwxLUxi1BTmZqpE7V8kfvhVIvs07pnOhkusi+D9jOR9i2J7tETR6RKv6ewMjp8p4ZnF/cxmjuZIpNGhuRIR8zjffJ53gcQrOrBQYvIi7nmxRIElErdp0VLmYZlEmeXMHS2L4XUs51nBdpqxkv1XSWRdLbGfRq7hfGsl7lLEOola6yXSaekG5mCjxCdatUmizWaJz7RiC8dv5V5p/jbmZTvXoYk7eMadEieo9y7mejfXJuzhujRyL/O1TyKWXPt5X6jvAc5PEQclSh2S2Ep1Dktcpm5HJFJIPcq9HpOIJP/jnJPKx0lsJusJiX1U86TEUap3SiKOgk6zpLpnJI5QjbMSe8h8TmITlTvP81HhC1ybslzkOpRC3S5JXKV6lyV2UOAViZn0zVWJYXSPGl6T2EYlrkuEUTp1uCFxkAJvSvxCadTmlsRO8r8todFdct2RWEAfqMNdrkF570kMplNU5r6EoOtU+QHzSnep+m9ci+5S1XiJCXSdfkyQUOg0+SdK9KNdlDVJojUtoedkTZYYR2ep4EOJLrSSUsj8SEKnI+T7WKIxRdAVKviE+6S5dJuKPJXoRPPoFhV6JtGWouk8ZX/O/FMo7aXXVPmFRB9aTDfouxTeG1JpEyWTfyqfKwql7fSICqdxL6TTerpHudKZQxpAc+kEvaJSGRxPKsXSRfpIAS/5HJOHltJpyiD/V3zWqS+F0za6TYbXEmWpAQ2kSNpK1+k9FXkj4aafKYQW0yH6jQxvJYqTm4JJpdm0nS5TKuV4J/ED1aGfSaEZtIFOUQJ9ogLvmTcKoi40hsIplvbTFXpKPh94j6gC1aJ2NIBCaDqtpL10gRLoNfl+5PmpIoFaUDcaTuNpBsXQdjpOVymJXlLmTxJ5qCRVJjc1pg7Um0ZQKIXTPFpJ2+gQnaWblEip9IGyfJbITUUogKqSg+pSM+pA3WgAjSRBkyiCZtMSWkWbaBcdopN0gW7QfUqm5/SSPlCmL8wB5aL85E8lKZAqUjWykotqU31qQi2pHXWiLtST+tIgGkajSCFBoTSRptA0iqQZNJvm0SJaSjG0ktbQetpIW2g77aQ9tI8O0mE6SsfpJJ2ms3SeLtIlukLX6AbdpNt0h+599R59PCVQEiXTQ3pEj+kJPaVn9JxefPWOfZpXOmXQS69X9Nrrjddbr3de77/y4Ssfv/Lp7/n8T/jyr8T37//HubcmVveLzKg+dbOP0Vkim7F04bzGLquKGFdcDzA22lDV2NzhMg6Z1MBYenFb486oHsY2A4cbJy8aa/yYfYox+ptoY9+o+cZqB2KNmLHJGF18nzGx70njupBrRvPQRGNsgwzj5F98TAff+JmypOQxjVKLmA7GBpgsalXTrcwuU+fGDUyOrm1Nu5r1MH0sO9w0xTPWNDEhzKTdjDJN6DHf1HJarKl6102mso/2mu5UOmk6V/OaqWalRFO7TBmm8F4+5mbn/cyvjuQxz25SxPxoZIC5WlBV84gzTnPn3A3MPUu1NZ/L0cO8894w86xWY81F9oSZh62PMm8wzzePDY41mypuMsdt3GtOzDhh9sl8zdzlaYK52J5089IaPpansX6WtNl5LCeLF7EUqxtgceWtaik2w2kZfK2+ZWlCG8ubk90tYbOGWTZUHGvZHxVmGTEuypLsO9+yv0KsJejdRovHs9fyeecJS9DRq5aolQmWt8PTLQcL+1ijhZ/13cA81izp/tZu+QKsbe9Xsd4Idlqj5tW3pi9vY60+qbt1UPNh1stZx1r79wuzhraPspa7Pc/q9zHG2ufYRquj1l7rj+KEdfGEq9abPROsjyqkWx+/NNjqtfWz5aqdx9biqL9tW0JZm1xTxbY0wGk71qW+rVWvNrZxdbrb+vgNs/nEh9jK1AqzLagYZVPXzbN1Px1jmxO50ZYz+15br9onbNmDrtqqlU6wPU9KsxU9b7B/W8nPXqVQHvuqmf72/FvK2neMrmLXUhz2bAH17XGBbezJPt3tYw4PtTv2htgffx9mP54pyn5bzrOfnhtjvxG80Z5yeY99i+8J+2Tfq/ZFD+LtWRel2TutMjgufOvn6Pw8t+O7vv6O8aFlHZ9qV3H03ung7xEEOZo8bu0IPtDNMV8d6pAzQxy70yY73l2PdAS1nOeo2S/GEVhuoyN+/h5HnnNxjoKnrjhKLIx3mNqnOWLHGZwr7vo6Zx/O7Qx1+Dt9WpZ1tv5LFWfXsQ7niY1BzqTVrZ2PtG7OK8ahzvNDQpwzT0522tdFOg+Wmec8ZotxTni9wZnUc48zNDrOuWvqFefWjvFOT+4054dggytsm6/r/qzcrky5/F2/lizr2nWnsmtgQ4erxqggV+SA1q4J9m6uUi+GuMo1CnHJJZNdk0MjXfXfzHW194txpR/e4HpbaY8rc4c418AmV1ydvo93XTyV6upoNbhH/+rrrj4wtzviQWF3YFoZdyW+yzUpr8N9yhHkblKptdvytqt7/Ioh7vCyIe7hnsnu+Hb8neqTc93vbix3Dwzf4PZ/u9s9o1icu/p3V9wFr//mdo1P5d9TNmBYT19E18qN8lsK49zBMtg0sjI237Gjp08Qiqa2wodtXfGhy5A/vwN8+K/BYGhLNegLw2DIcYToH4sShw3/CeFDjBCC11cRcuA/vsL/jzn+6+NSLQPjizf+Vfft739+d5WPDqPG/T/LyQl/lkMe/lm2f+ptT/G2Z3jb33jbP3jbv3jbM9f8oxifq+bcOb/Hrr/Nofcaf5YnUf2PuOy9vul9jh546xPQ649I9rY/xtkzv8czb79UGDJ5D/Kv8Xv8hXz/lRilKT/50V+jGOUjb5eDBsNifM8POSgT/TXykR994n35+3Uf/xV1Wej936vLTK+/qstDPpT+d+q82fl7dZ95/XVdDm/ds6/qfvL6+e/p+0/4fezf94ji6YbX5a98oreUQWn02uvNP+Kfuo0fvWPSKdVbZtBLr1def8PeWwU4rjt7wtOJJRVIsp3uuczM/DHN/37M8PIxMy3vvi0zMzM87evyviwzMzNdxnMZq+RyWu3Ek85JumfOGf3cFVeVyGXLslxdUerztMR3a96qjm9Wquqq6/t+o+X99Z7lszqMrJ5FHd+zUofmNarqqO0yMnu+1+qp61iWOzwWq6s6LzOevQ6j90o/MHuM3k8d3/Ehr+PwflmnFyuo75e1/mn3zVFccr/MOPd+0fbU9hqX3C8z2v3y4a5ja9QveDL63xb8sfuofg53QrAgsmdntmeyPutq+qf2HPwmu2bfbaTHuLE5wlbIG/XLOoy+Susxe7/d6vjOuk6l6hyctkXpfFu+pjqO2Y4XNWqbrmTLewdkeSubugWda8u37+uzdhe0eWQd32l7442sbsu3IMu76BcVQdVPhzNsUaptqucLp+tYp++8wBZf9bf8ttiyMs68Z3nW+nlX3bfxLbLl2Dz8G6ry37tiy2wPC/19yVPTP9b71o7lmx553/7dmip7vqo6nveWVL0DfM+VbFkex3IsWnvO1M+Xv70kq8vOix3b+vFqfV+zpGXfuMwWO78rVF2/v/4a+vtazwn6qhX6moUtS8zPYCdEZsuSrL+ZLaftuYYt/3id7PrYvbWkaoxb9I3zbFG60Bbrg0t9fc8pWb71/v6etneC/s6JYzFbLqZ3bT4GF87H6necpR1zfafrWO/n89zuueZjy7F9Y2Tn6sznrdHCnuecj9WobfJnzC2XVNtz/fnYG7LlmedjS1zVlgvmMLUtp+ZjtZ+kJm1/ru/0fGx9Xvk9Vt/ltqzPYb7qxPNW21fUttS0HN+/9Qh9W3V9ntCWam5Z34NG1fm8WdaxuMZfo8d04nn97etzy3VbqrmYO2Oe/N6RPv9dlU97fZ5sx7RKZtMZ87HlO3p9367Px2pbllT399PzMbt3jpD1pTPmY6vHcsZ87J+t0DcflGnzsW8+Qu9Veea+1Bm5ik7Ppeox7LR/7Nw5jI2HJ2yx/nMVW+xar9xzN1bv+c/KhV1n2KK0tMmfacvyOamwcfF8P0w9Hl5gS20PnG2LUT0eXmjLaZ+S5lHU/6O1Pm7UCYWLbLH6r2TLcqw+25Yz5mNrc5gXK8/brzrhH/v22j/2xLYo1XUtxyF75q/asvQ7fX1NVvc3VufrqW2p7anP5fIdad2WtWf+wrey1Fd99Jur9pbvMLVNYTmHOfa8OzEn/K6VuZiW/8eVLad8Stfwj/1N2df0t5f9ftVvavacmJtonX/nBJ3yBdb2HJIdxxX8Y1/3TPMxhV8QGUWbj63Nxb+96p9LbKr3oL6uY0knfDB1H1n/n4bNA0/NYU4cx7fU/vX1+djJOr7zMlvs+lxuy+n52Ok6Ts/HVmw5Yz62bstZ87ETdZx47l9oSz0fO9+W5Xzsclv0ufvN62THcOJZeaEtipsr2PJdV7LFfB5LOms+dvg8P28+9p1XsuWw/fPnY+v/Z7Ln6vL4FrFb3/5stqyPQ9972habV52eW560xdpanY+dOI6vq+cq63PL9bnUGXPL1b5udp+cj52wxeo5Obf8hxeQ2aP7k/QNJ+ZjJ9t7pvnY1y1tOhH/vOxj9XMz2PMG7RnKNmdL5kvr7X9Po8Vz3wrdWXz6Rwl9tNDHCGks+scJfbzQJwh9osWsf7LQpwh9qtCnWWz7Zwh9ptBnCX220OrxGYUF+TrtHBsq2hndGq3atXZ8FfmKVO6WdKJMWNgBZ16TD+71XT8+pVRRrqhf0PBE19cvrkkwnXv266v4+/vvn9jevpfynn1P5btUr3j1/vbR9sN+/+UF46v/o2Bn+ruz99o/hopU7j/7OCns+2VKdmFenx/OIMWnnEGK+XtDx/d/Y/+9ofLNrZ/+h16ds1f8Ghmjj9EvX9AvEvoZQj9uQT/qNfT/CE395PPten7Rq+m4v3hq/yd8iem/dLrO//TLpvSP/Qo7vn9v2v+LP399b1j0T9t/50q/7Ow4nMlgcjroh1D2v0G+3/U/Cb06Qj/sD0p7f0C/Z7ikqb1fJvvf//v/1xfvH89TtgGEpuv8KWtk1/qPHyG91r+hXesP1LV+9Zpr/Rv+wEQ/7JAU7Vp/wK61XtMXKzRf51dLatf6A3utf/+r4/TDTlzr39qu9QcI3WtoW/m5b1b6yjnkqnp1LYrpmf/qlfAr9Busz/19oXq8eSX07wn9Z0L/lc0t/y+dSwr90a98HZ20t7b1hL3eyK3SCXvNviWpjdeyV9tep7fV3tqG8+i0rafsXdj52P6ysNNsfXJ7tf0l3SxoDeu2nbb38df0U5Z0NXtrG0/jPDuX98bStiU9p72Pwto9sEJLLMbdhW2vTtC5dlZ0AdbsfCRO2/nW23sWlra+9fZuFnQmalvffnsvQzU+n0/N3vdvbwiBvQ8cvKdIlEIADkHlQCwyEUZEZADgxJT7Xv9S7mMcFSF49N6jlAdmiiEE5QslIiYEQgACCJgi8Zhz6nNMY4r9OOZR8smfC17AiCj1haITEAIKAUIACB6YkMYx9n0fc84U+xQTE5AQEIZAiMyMKiOBB5VzohiZCAIQMctB92NBElba3wjK2LSRbftgtNp2unVONu/8yZu92zrdNK+aE4IezcCZmNPQzxB9lMSo57uPrOdbSc8bR5H1mBGRCCDmGDOzUGQxOU3lfSA9VXp+cymvctDzRilSxFIeEAGKrHUK6bmS0jlLWfDe6Ul2TAh6pCZ7lQXyEWTng8iYmbJQnxi5j5FZK0ZAzRtZD1h5QNURxNgzURICCJGQYx9ZykrRzGJASvP53my2ghcVytnWM6jnu3vs+fZd6IILXjag9ABRQQESqikAcRQE59B3HYBzMOQ0iBz8duvAdSHH2FMAFJ1H71wfkSCNI/A4suwVngahfgTZKzD1JZ3ieBSe+zGU/GPpep1U2IU0eujHoZ/SPaaSLuKotcbcj0lI4SiPDvMYsB97UW1DHLeeRyd1xDhqmuhElnoTD6MeBkpZ4jwOWY49TjQfnyMhqSvgOCaxSYoWe7T+KLzelZyFqC8H82JreLGAqDqB6x55vezukE3g91sA5FRB6t2UO29ZXnS+bGELHXZ4ciHAsCk5HQIxx3wESaD9Ab3HCAEYsJe+EII0hd558NCDpIMYSJKRIfS5TwLgnoJnpN5JHi974tgrOh96H6BHwCJ72QeRSfIUJCFi2ad9fs1DNJXfON870YGQQutXGU3OMfVRyxuClEUiSciWPxRdtPZCmNqPdjxJh26O/RqSHleNmCbKtVJkwwu5WivXSzanV6zzeoee7h8bZ/n1Xg4IiEjIiRPR/Q1d+uPmSHtTr5nG6uABTra36abO5MDDKsKN5Nl094d/4+PQxX7AfijYOB4cpwHTJHcQB4dR5CmDfnJOQzQxeByDhzEiF4XrwiBWZ/TQT7JPcmgcZD8w5RilrkB9yd/3gyvwxzZBqDbQLUwbBgTdCAh1Y9mIWLeCmLL2H2l/7PWQ9dY/jo0r6ISqI7lv8cUJ6DUuPaJsIBu6snmSjQMFAkbZiDmydtSYOSsl/TRepJSP4sU0Itlo08lxvjiBaiATQ9xkBgYMFBAY+GKPJWzVTPDgbB8gvG+86Go42U6f8TI+359v2agjR45d9NFfal+5RdREBwAYQI0DJEQ6H4g32y5snL+/3zq63UK6DfG2YOP5VsRb5En2Id2iyJR2R7H1NHbAd0B8p9h0sOs8jAHo7m68u9s6GLedHwF0ajncpdTfEcW7PveS+/Z2ea+FaoN5m7rMvIVpo0AwbzxvGOeNIiVO2p1Tn4c89rvh7gg2bnrCHrvbtJUXJ2CzJLvnyjFPR1hGgv39H2OSLcdeaEhjGvOYh/I56rxjORoMe+j95qWL4xY3qM/b0/3xZro3g6NAIVKmjJntcSy4uD++Bv5szPebze1lO32/+W09vtk958hNPeJS+/TBpQdULiZ78jHIBrJRVPBZ6Jxn5zzpuckJUUwmIYQQMEdg2TNAYMSAifVO2932w3DLTIkIeymbJD9D8CEzsfAxFDlwYmQMPoIQAnCiIOXH2zHn20gQE+EQIMQQguaHGFnb0vwqEzExAiQUHWEQPvBu1+92w7jrmXaMuBuGNEQmIfR95DQMOSeOQ0RMiSiOu3HMeoPF3EfiuJsR025g3N3IdHOaPmwWk9xpWqPQG+/0/LaT62Kz2wkhgMcQWY+wT3pn6fyOIIsuy00QOgzpptv4bajmFy68dIAvCePdnYwIHeCdF2JOd3f9eIec74D6O0793YwktNtN/NbDnQ94p+UVTnjv72WgdAfCM02yFuvH3d1OSBFED8h3OeUie8kbgO8ipyIj91JHFnlKX4KH3V3fjzq2FmAe7mLs78Z+qn+4lfRBki19ic02pK7T+S+OL4f+5cYFdi5kDKRzk5ddoDEE7Bl5eLnrX+5evnzZj+PtS6lX2Lu12VGYtmqsJtnYc+AQH26QIIJ+Jpy2MlZTLmO1bLkfep0Pjy8/6qPkT/Fyj/143VUt+/tWX5yAThJwudXzpDJTslkS65idenuAjH0/zTf73aCn5Chu3GIG6YMAAsD0RHhxAvc+Ebe3Ltg8EwEFRDQ95nrKmCjRdPpiedjptC3p/SjMcIi+f1HN3gTu9Pxtvk3NrOkSz49fRr54vA1b2JLQ9HibLgBqt1Hr4pko9lU2np6/ybiy0ZzTiKLbfjJfzvOl9m3cxpsbBR1Pt4R+IgOfAyrYeMDAKd1sdRyMdLPRul24v1p+cC4MCPb+46DIELDIiHHwkobEw4xk71Hz+5KXMghk5UPvOt8HD1ae+yB1AWDVq3qhXHiQugFpYJpkL/X4QEWvGuKsdQxEPKyhr/goUszDo7HpQupc6CHQMOQiD9suZCj29MV2PX7Ge6vr6g/f/+q56P496sEWA9tG5VNkmLYEEVk3ihRRiHMconwO4xEMgs7g9vAFwbYXJ6DHW82MttVoV44e9y/+mLEn27gnewdUz0MUSmU7QN50B/NlQSgAwenHuG5TBcUsG03KFnXDyJFk4xjLnopGwbZXEE27w/u/whnvp3bKfTX1R2SMdPH9X7wgwQWFD5dCTqDB6Sa7x85np848XSxAxEhMFIkut8+Zdc42RRfOgp+h45mTwtXVyWIlg/ekDlR1G7utyDqwIWUCHCUtUQg0cMqjohpENp0fOxdGCDQqtp3vZYwsfiKFBxq9l6pA0u09LPb9oKTo3AJTh7eOYs9m23DaAIF0C+R1X0YFYI5RiJNusY/mX9GhM48y6V/DsfutavVx76f7Grw9wG0rx8uox5VjHvKQhGKflMuyL97KmLNwsT+OF9oHJ7Kn7uNnOL6r5292Bi9/fxOUFtzU1YHLgMfMSMQCOgc2ntiLyun5kjlKJ+PMaRcQCCKmMtLmy/1dZTPHiHHh/eLmLYg3vDQG4E1i+V2zhncL3RxtYN+bBPte3L/z4l3DD5PYh2+S2Jjv/jenWM9f8BE9J218aeNLw/tHV3WEr6y+c/tzXrTxRc/JprpPnh+X35cbo0twie0/IFgdXyy9+v78hxht/pJN/petT4KtD/HfvMPzlza+tPGl4Trzl0+wMeVHmX7QJSeEfvs7PH/pDuf5zwpr0+iyd5TN+xwfqjrOxvYR/c+daL9eG+hYer22T8PbhU01fwHzwXSVD0bTvVC0daK+SOcz79D8xVvq4XqL56CNL218aeNLtPGjq/y8H21jTj3WkL1L3dr702frO9VZ407z7zb/bkPz7zb/Lizuk+V60d3z+F+q/fm4qY//wvnL9srjo/le1rCYt5w/f9H0ej3UhufFpuoI/73NV36UdCZvc5nfK/QNkinbPOYjQj9Js0ueLxD91q7trprL/AtC/6nQDxX6dUJ/W/04kv/PC/0sKfNfbN/28eXVqzK+dG18aePLVdDGF5CxxMaUrxJllP1/Z2PN33bT2PGV1dgCkue/6qa+cSf0GeYL/k+EfoiNK39X6F+VvL9b6IdJ/t+wlbxS12/xH5DxBZr/pflfGi7BpmLm+cpQzVX+extTPupmusYfXc9RbCz5NTomCf1fNx+y96NN6x8/ILi8fMO7Pr7Eg5Tmf6Hav7v4jTt3hBQgFB5JCjqD3mQcTkNDQ0MbgxoaGtoY0NDQ7v+GhoY2Brz58g0NDW0MamhoeJfwAwas+HZO2jloaGhoaGh4F3GziFmB6vtV7xL+2fbdtZ8w9lEXtA03LgdKw4CdH8ri6LkLA8Y8DORCFqbvE2CmmHKfEIMHjjEDuM4JNxB55wFpUb/zMUsd467bOA4ktWCnTOp3vQ9SgtPAzjvnMfXRBS+MlPABfMCYMkBwDigOiOBFhdU7/Ub5rrOGQrhnLoADmBhAnJiAdJUKA6HVPDMNDaf7IZExl/XDMNeDyBNDzNepkPH9V9jQOjZdp2MTc93Dr1kh48lSDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDRv7/812ZX2sm64L/ljBzrkQzkrwISCek9DQ0FnfdNV6xTfVegyw7K+bbZjTvF8yISwZBGNgZl7v/L7Zbr2g5Pal49ZMCABENYOChwwJzI+tzKX2dlttHQRa/75xFFhLr1Uwc1wqNEddIMZawaYQwdKLQnFfoFaU9JQWOUwhQsmQTCHgqYZKYWLKa4oiqWyKokqxVizW+8Bq7WsnxHbuo53/ZOc/2/nvrfxwbHz08td5T4iMODGEGCbTmYPomZhIGWJl6iSakow5/H/6fH2JKHiAma20hVmyIEDBQxYNpHgdW62H2Al5Oy/BjgvsOOd8pB/18Wpl3rm5azKHvaB98P6QlkKMylnPTOlBN913r1QJSVNyZlK+dIm+F71IOc29474rpPSg53izMZidYHai2UlmJ6+su7PZlh+29wcfj32+hsAMLOh4yw9AfBzE10Lgc5sgvhqAV9EQnwznz/+8B5huQbufkZA5OhU0Qe+zftIzUyTug93yeqv1RACaiTNRz1yElHL5tX4SlIGaisCUOKWSkpI2GClz3+eciCLrLdwrWBC5j0WIkTnHq93P2/l5igZiXiiIDhRBZTARiSnUOYiIVVwUqRRqKxSggUl0dZ2kCqzAXCtIsFfUddyrSEXVCFe1K6grLSCqFDTnKcqrP0+Xzzv35PFjgFepMOCy5oaG0/2Q8CrdJsz1IJIxF8btINZHaBU2NJw5wAJepx8i0ZUqpEWF2CJ+r4OGhoaGhoaGhoaGhoaGhoaGhhY/5p86fixYQkPDxfFj2856X7dnnDE+wEG0GKIxNDOLkK7j8VpSTLs57BkQZg7oKfU/V/yY/X8flUp99//cttgv7xaKEBYKix8roikmcUo/rkA8CAY7pjBxoYizwpqsQ72OKFR8nUIrVFEVhqmGZ4wfC/v4sTAxgSbjyM+xYX4fP8Zcx4/F9fixTafjqQCAnJuu7UM2hDp+TGAsKFZYRFJULArAtChauCh+TKD17kPGCJnOjx+LdfxYXI0fixY/JrBuJULdCx8EG6Z43fixTi6Qd4Lq45z4sa6bImO6EDhlwRa2eQLFbHAZsiLmZJqUKR/FtcaTKl6I6IGgpzwH4RFLJ46j8EGFKMjMlilxLaSY+0ykgoBzGoTHqEk5TyFCWlniHPuUmSLZPd73MZaUmAVjjFOU0dXihfbxmVhA3psClwrT2E22EkBkClCsK5j4IAfzIgczViDVPJBrhRVR1FkKtPJFjtV4IWIDGp54/Oy6AAEojtsb75Xpg9fjinkEjz4gp1E02ttiD0AQQqCMFAlEypz6pL1jGHe727vdMNwtr+8WBBTzduOD1j8EH1AVA3jonDYQPDhtKQNQEIESckTU3JR6ZkJKaRhzn1MeF/UjRNYePPgb5z3GPGLnMGDqB3CgdY0jasuiGRkQkeIwpAAhSOY+eR0WKaUcyjHQsn96HyVxGMdu4yBg7Pup/jjs2IfOA+cdOa+V5JFcCD5QGtiFYqzVjzENgL7Uv4zXcleP1wp1GIAxF8CFMytsaKi6DdB1uk0V1sLGMF2nQq5qbmg4czyEa3Vspuus94V04k65OhoaGhoaGhoaGhoaGhoaGhoaGlq81kqCb+t9vTG0eK0NnLPe13oE1+n1voIAccHAQw3iHME1M0SIwiiMuXi9L7DwgcVqXvi49b74jPW+KsW9yNXyXscWADux3pcimkLBRVUrOC4XADN5VkTFcr2v+LzrfYVAiFTHa03nhngO06rjtSiyIthFIr8Wr6X9LShgv9AMLNgQjrGwsgqYsYqKRVxoL43XAkDch2hNwVv+XjgRrzV3o6PrfSk/CYj7zpdS1a1y3gsKFqRZiNFS3pL1vpwj8gjyQUjPDKCrgc8G8RtAw/uZ/4WAyDHFOWQPo+BeYE7DHPAbJZsKQQUWaSCag/xSGpggMDFHFmEYpp6TYhEYGXvlVegTa4sxq5CTZsqaokhJhZxNkEy5v9r9vB+/DMeC8YJgbfEu2isQ7mUq6XMOmnNUMsEsq4g8qeYq6/W+rFKuFapiXio0xwOVKQjJGmbZFHMrWseku2+GeVJNOa7+PH3++DG4VvwYtPixhnP7IVw9zIbael9vDA0uLIfB63dspOvfKQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ1tva+Gdyt+bGu9z3Uz89r1vmhmnm69L+aaqdb7QrzSel+KY+t9EYvCLRUqLtb7OqJQQcU1RR1OFl+73tdSUeewAnUw2IFCxeUCYFqDoA4Wexvixxhxz4RimoWNMS3ix7igaOr4MT5c72uOH8P9Il81S6Hg9Hpfbzx+zLuL48ew6GMdPxYfET8WF/FjKeZrrvfVVUt9nR0/tt1ywTb4iekgXPJLgtcYT0JAJL4PEaK4FMYqXijtRAiTENMtEYCd/nzLBMGEeHsraSYkERgZc0wq3O1SnvQ53d3d9YkpcREUKWtKMiHFOKTrxQs5t4gXmkU0FAXUCstu4tF4IQYB1vFBlUJkVgXuQQrmuk5W7KWj4UEHirkQzapJQ4LFAmBo4JLD0q3Is6735TpAQIp9d+OcB44RHCByihEdlKWqEngIAfWYAgYBRSLGSRdTFBY5DUPfR+J4UD8SijpJ/VogZq0UKKVEocT6xow+eGUiAgYfgCOz1g+iSjkyIsY4jv0QidOifg9J8vTD0G264IFTT10HwuSRnXceojLCBUpD9EFrTX0CmNbj6sO0HlfuAbwX1cF8IKQs1e92+/W+qHPkgfsxuuDmhqQlTKPUPzWZg9aGnDOgJnEaiNS0Y8+XSXDBG+PDdcKrACrmWStsaOiu222q4oB0lTgZf18hXFBhQ+vYV+qHhMYAXulOwet17IaGhoaGhoaGhoaGhoaGhoaGhhavtdl23h11G64GcnXueIItk7SWcBU0tPW+wpSWknXD+Nr1vnAZwcV0ar0v95r1vgCIagZxGcFFhHjNeC2NHzu+3he9v/W+oiqKSIv1vuj4el/7MJHjCn7tel8mmkJxoJjFSsHLeC3FWxav5aezS0d/n5Gq32e0eC0iisRr633Buet9hTe93hfhgyW+gluJ16KV32dcxGtZrGMdr0WoQjodr6VCngThOVF+a9b76ra0Rwe+FgK9RbjS+dL+4UJAJFqLB2MRemURlU2xBwArMS0ZZZlUYASehKjrRwkfBfv1o/IsxMyFzSr0KVIi4UUQpCwJcRZi5Byvu36U3asFK8tFHShUXl0/ihkWGZbxYMwmmqJSESpYgRVYszws8VAxVVtUVfjXejwY1b//WAeZCega8WBt/ajro6GtH4Vt/ag3hgYX4KkXRoPrrx+lmoaGhoaGhoaGhoaGhoaGhoaGhoZL45FWw47OTfDeIx5PuPp/YBra+lHOe2NMEwSn45HoVDySrR+lOwBjVtePAnja9aM222U8ktqtgorHFUGwWC7qQDFXSLxUnI5HqsKPBKcUj4lHmgq8ThEFH6T1owy+jkd67fpRAFQtGlWxU+J58Uj4Zn9/kM9fP8r6HKGynOr1ox4Xj5Tyg/Wjrhhv0tnSUfZx9vpRaY+t9/dCByG9Rbj8fK2tTxWIeBmPNFTxSGnUTCKQCrdVPJIIjIEX61NFEfJuWp8qxZLt7jb18/pUu9s7i0cS6X59KkmbhBhjjvm661P5k+tTwSPWp9rjYTzSY9anmkbyWrVcn8oUMGuW61OpYoLwc51MRXEQj4TL8KM5vV6fip5lfSqHVDqbu3F+Wi3KeQDZZ3IgLCfRBO9FxRhQuKDmRIQQqIwVhIDMue8TI/Lh+ldT/d3GaSWcoPMQMMZMHjrnkSM675TR+oUr9TMEP61/RVP9fR8TI831/4CBKv7FO452DhoaGhoaGt5N3BhtlKo5+SD0KS/eDfyz7bx/9+xnTDFyjKmHDXfgAsU+BUIASuPIXXTogPMQPQTvgdPAHTrfeRLOcwg+UOoTRgQ/vQUQTCus9swoHGA8vr6qf6r1Vf2V1lf1sKh5FQ0N7gnXV8W2vmrDh2bh4KoftvVVGxoaGhoaGhoaGhoaGhoaGhoa3vLfw57Cv+0DYM7o/STaB+J6wrVhHkHm+SPygwTaJ3C8fuN+2Xh8kEBcHcHVAYizWRxry4FwFqNZ/k5836bbtu/bfJDQvm9jvc/7JROCMaILxoTDX3DHx33fJhTUDMDq+r/KPN36vwBYcOzbNEsFx3KcKtTftykKetTvtcd4xvdtVHydYl/AFEW18m2alNcUR3+vPaU3+H0bQgxTPDrx6vq/i99rP77+byfVF2AI+9B870/+XnthjH1Dv9fur/J77dV3vGY2plrQlJzJulURmB7+RHtM0bpCFFz399pdd8n3bVwX9+gQeI8NBF4D8bPjqt+38QCERPP3bZA5pur7Nint5o4SY6wFSWGeMkVOUQQMZFd+HEfrEBSjCExMKXIsQp9LCUoq5By1FcE4DuOQUqREOSk/pigCX7N/zPcvwOJ+ffD1mkoBBjQQEYRasVj/VxVUpZOAqUqfv+ZSV8kKE5aKortX0JSBeILVKbCOSCJYpVUhEfcKIlMo5lqoqJ54fPY+EhFSjP6G3PQj5hGBAyCnnlwMEDDmnnwA55VFD8ErFzHg/vs3xGBfykmpnGyS4n1OtIi9IEycKaaUwyY6coFijn76cfk0UCc6D9HiAV3gKDrQeECUVE8h+ICpj8gIXstmJrR4wMQkHCCfigf0V44HDC0esOFDFA8IV44HDC0esOHRcE8fDxgAr1shoGoaGhoaGhoaGhoaGhoaGhoaGhoaLoy3ck4+7aOOT3HePwgUJDqRcH2f5f0H4mrCh6zxOXhn/iBaT7g6WjxgQ8Pl61FbP1wytiK3Ys8EmJnwyHhAWz9WagshgDGr62+joGaq9beVvfr622SHU6+/vVRMBR780PoDRTQDZkU8qqh/NXoRD3ivgLmAKWBW7HPQIkDQTlCtmNJfqzDRFIpa8cbW32amyHU8oDGBFUeTzl5/25h9EGAwFuDceEC8XjzgdJ0fxgOqcN7623E1HvBAyLnqRZVQLcU+CSnFeN31t+cowO59xQN2D+MB74UNhrgGjtfHc8YDBgjTdbUeQjAtrj2Ltq76HAiIU+os0rSC+o55EliypqwiMLHKmrrbkUhRkGaRMbLKScRRO0lJm1JFpIiaVlKHXekoLKl5FHmXYqLIOaso6IcoCkntRRjGIZdgw5T7hb3BzhnYeUM7b2Tnje28RTtvycrl+/eDRTyhijAJqBDFSoDhYv3uvYxcxxNajkMFHqzfjRWYeFYQCdUKVRHW8YQCU+wLCUxBmsPqKDoV6hw0tUB1obmSp16/208HENlteIonTIkC+wCoSvYgqtyz99C5AJTIheCcB2I969qjERmALcqQKSGGoPXEPjLqUFuhC5l6iv3Qd9IeedAup+2VAETs2KHHmPssO2mPYkIXtBFKiQAheKCcE5dLzrlPEdFLah57UZYjGNv6gh9ENLT1BRsa2vqChoaGhoaGhoaGhoaGhoaGhoaGhhZPGN6KeEJYDemDD3c8YWjxhCvxWQt0bjWe0LV4woYPaTyhxe8harXGOGN0V68vqBXhIsJwsb4g0aX26mEAIAJYPNasmMSiCA8V3h+ED9aKeGY8Ib8mnhDxQGGNmuK+QFKFwhSCR8cTxng0njC+BfGEvBJPGJ8knrBiodaeG0+IeN14QmIORbBeeiKe0DqSrS94302pQPilsA8hfCikundMQjLh+vGErns/8YTbbdyjC+Fe2ALEtwjXiyfUfoBAFk9oQhVPuA9BTrf7hQVZpFnkIogYowoichLFrohWMuXb3c7GFZXyUESKnBQaE5h7qyfnrAGCfaREU+pulK0U1JIq7kaRKMZ9PGHup2Uq+16EcdfnyJr6dPGEYEABq2oRMUgLJU3KqWiVTRCZ75W0V0YQmM5QBR5SpYxVE4YqeLBSRlGa7kROvVK0AMepgqVSQbQsfqCMx5Q8Y6mMcZEQYzysNnJUqLpSCg5qrcZFFGLrA9H6RLJ+ka1f9NYvBusXo/WLnfWLW6vv7iC6hAXEVbxjZPTkQxl0HeuF5pTZuynekclP8Y7IFAC915yMyMFWVaSEoJ2GE2cm5R++GVJmjkM/OhcwlF9RlurIaYGegACA5Z4A52DbecoDBh+6rcO8IwTyzgsXtbcF4LzLKVIoupyTpgIPi+ffIoymu1a845VW4+ruK4S65oaGx3UbvLzb1MWReGboKhUC1TU3NLyhjs00MYB0nQqJqpobGhoaGhoaGhoaGhoaGhoaGhoaLl6frnsQ7whh+bPJpiM6TAjwlPGO1viDNlzY6+DpGl+2sZ5wdQDRXDPqB9NBgn3wu7J+onPH4x1Xwhq3awner6yk4iyhoeHZ4x33FT0y3rGr4h0XjO6U0Wq9MesrKl453lHrOhLvGOOhwvuD8MYjirnC+xyv/YFlxWMU+FBhVdYhaKo4tn5ien28Y1pfP/GDH+8IcG684woLE/CJf0+5jne01qp4R6JT8Y5UxTtWy3ySohJOxTvGw3hHE96a9RO321ShC6EWt+DTBxTRcM34v2W8JBPz1MeKEEvk44OYyVQtu8is6ZxiUVi6Ik+hkmwFRHmX9gpNz+lud8vRRNWk3e1tnNItx268zX20/Irb29uh1wMSvuhud7KlKV0pS5FbVbBsU5FRYimHYWqh70UhGlVwphRLDsVulGTWOvpexFFCO3OKnLkXPPF4t63jLw3Ibr+mI+7Beh3CUnmgonJhauVBqKXplkq6V6q4VO7VdFRJp5VWtFaa+lBJdIFScWXlm4q/3AImigrfefBAxBFcR10AJE5AgMgxZfIdbp2kM4NH53wQNQYu8ZcUGeMUf5nu4y972fbxlz9goIp/8Y7j3TwHDQ0NDQ0NDTdCm+pddhD6FKF/V+jXvkP2b+tz8A7Zv0XmpC+St65zQJSG3W3ohMWYx1soL8eqJAjCA4+3jCFo3vE2MQjrwrDLCbwv3G4gEC0Kt4tEiDTuHpxv516UPwdBXacILoAy1ZeIHMIL0D8HODFVkmn2zML/tXVOdPcf5lZFdIUrPlUIhPNv0TBXCQGQ7hMAUbjiL2KSj5RzloScqgTSj5xKQsqv+/8YS/WB7AORyRoH4gcJZI0TavU0f5gLKiXAScfLhNc0DnysDTpMKJYTA9GDxs2VmtMyIZ1sPBDlJDWnKB9WTNQxSkLKqkuLBGSWEkz6wSndGygJUoLkY5Hw4nrQxq16prqNKoGmxvOUcPr/Yxf+f2LxbwMyhuyHmGy9BG+MZmWumQWe2N9T+Z/t9ypW/uFwxu8z8cH/F44rYPXXl1TxdkL9kyH4EDrvi0GoDOmmcmRiDoQcFYFoYjwRxciiQZqTMBYcjIf768HdUdYL5i+Gi1CUymqy4iELBmGJjrMhXPD/gKv83g4IaP5/wtyNTCDkuc/t/30VQiWojROrQkQTUnqa56/6p519nP//gMpe4sne+Rv/D4SXtYkPhRgnthKUFeHlS2Yi5VMyIc5C3zMrOwnDJOT8UnCnWhXuFLNwpetr/mQFziwEqLSzLgAihgkzC4K9trCqMVb5Q60wgkv+v6WlhQICoXdOa1ViYqpEIuadMEBkAxvtJv18RXYxaYKSiLxLacpoqbudZmVFnETr68xJxZymjIpZJBMVMdoVzfcii5SKOAyWaGIfNZX7fOX/12yrizqj/p8l7lEr92oyFdYgZghLZf2vgZNKPADzUk1UKwmRpo86JwlQ/1hhmr2WJ1QZBaY0SbVYK9HyVTkLTIuX/GsAHyrxICsxPvP/C/T/n7xHFwLv4QB5BfT8uOLzLCg8COxJXYYScvO6VSQYcAIQMg9gEpEIZZiwf2cOKSOQPROGXEqJmkUYBgzoy0VVgSPSNACIEJlCpCgYhn4YiEn0OQ4i9ZGYE8fr/X98W/4vvkc4gUX5jxH6aKGPFfoooY8Tein08daXPsH61idaX/sk63ufXPk+eqFPtb76adZ3P92O9TPs2D/TbPkss+2zzdbPMds/187F59n5+Hw7H19g5+ML7Xx8kZ2PLxZSfMnB/8c45ZzSkP22C4jEOVG3dSEgpT6G8vhXDrwvXGYMwgWInAhB+MCcmBBD8MRJwQgUY9/rKE4U6/Y6jrnv9f/K2r+Q0ri7Da4Tlvvb4g/wgfMwam0hUOpvCYKXDfMQSbWdoz4n1hCXTUjSRVB7Lqbb21FbQ87n+wPwtD8AnsUfQCv+AKr9Aen5/QGWwJf6A4gPj4oYj/sDUsTj/oB42h8Qz/YHpLjiD4jpqf0BdOAPiFMC0/P6Ayx+aCWe0Dk/uwH2jCYYo5pn9wdsp+MFQbW+Yv2ufqhwrgpAjDFO9oTDAEQT01IR00Jhl6VWvP3+gEBk/oCyJ0eEHImjJKz6A4hUrvIcjocHTgDEio1TBhRoxcYyWyTOIWu+AwUoKhZY8eb9Afb2df9+fLieYhDgLABICprAXJip49Uvy2+vPyAsXADl2M1eKsJdEAAWIRUBVdBQNmZbJPBAuLsjgbIPhSxCzuYCWAgCi2Hr863ChP5K17erfi/YmIlVfqkFOIMVvI69zB8A1tnMKQVAyNMFAxHtKvEtCIgQj4nxduqMSLVYEAVyqlHANouvRI5FTHt/QNLMeRaTpCqE5ZjyA1HlXMRhKJGMelXv/QE55ifwBwQbr474A7DCceVSpSCiNSUeUeKhEg9A/EBN0x/LVpUqvOrIdFXGOee9P0DBXNRUQ1SGyp0wNUXLJSX3mZHQPoipVk8wcYE5H2IhfNC6nQjLaNo37A/wfukceGvwZP4ALIMJkzPBXADCmj+AVECi2h9Q+kwsAszXdcgD2BBh/gAKeyGaPyBGFUhSILL5A1hkS+n72Uv8ZP6A5g/ocxbynQtIPPsDACkl9Qc4DxhzQu8mLmIoLHPkyR9AnJgKi1wC70XA8t6fj/gDkugl8nzU2iRRvABeAMB5p/4AnaemYdRGfEBJJq1Y2NRrvZM/ICWG4g+IYz8QiBajhqW/zh8glxJB/rww8Pj4ALjMHxAIj/oDAuCKP4Aimz8gPfAH0EX+ACJtg5b+AEsg2vsDeO8PiNpGrOMD9COefCX3h41zacOvNY4PnBFsbVSNx0c3HojSqj9gmVD5A6j4AyiZ5Qt/gL2Sxyf3B/C6P2Bh+an5e/MHgIq1Ak3hnSoevP4fKKoCcUXxAfcHBE8FD/0BTMxr/gCqNI/yB9yzey3Gmd37A+ZQAcv7kA0hLN78jRXU7Jv2B9TfN7T4gAN/gLKHAnPlAqj/X/4WxweUo4/RTKSlP8BCAmAZH1D+11+5ABbCy5ckECFVQkpZhZSqkICcl/EBMeeh38cH5HRFf4D3/ogTQPDW+gO8VoL7CI7KAWDi3MfuQLAQ6V7cOwBEqMS992bvDxD5zvwBKtX+ABWKmBMv/QFTWn7oD8jmD+iTps7iOIrIel2v7A8oT49z/AGKq/oDBI/xByheq6TH5zSWJlS6Srn3GxhnSgWaqsZ8AEvtVMGhFmvt3oBlRjrUIk765/IHdFtWrLsBOuAPNOgyPMf6BkFwv9zD3ktBwPZLNM7NsQs4DzmjKhSEkUQVRYWzShSWK6W52siTA1JVQDYG5tSrahyRUBWCyd2sKkCYVFlUJVfMaMWkVCq5EhMwatXTcDYqOE4Ptl7+hn5ScYQkBcfcy1ZUfR8FUkgVk2oYJ1NywTghZ1X1WtlokLoFuRflrBt6VWpdeZhVw6zax12hXUOy68h2HaNdx2TXMdt17O06DnYdR6tnd/8+0dkco8Y77G8pF1TIdw6o+FvQdXt/i5v8Lan4W1xAzpHC5BWZ/C3OeaIUCcF7B5RTjEwYgLTeFBmR6vZc2snVvpXlApzWENMw7ixWVb+PYV6W2xGCssD9LapS2NQzAQTXdZRjYgy+2/ioqwFACA60op4RgdJRf4sHMH8LwNLfIhp1wkBhjvlbtAGcmMf6W9QmLSsiqA7JXB6SADglBP0gZHN5IBDNLg/m+ygEACwJHKeE099K8GBODVx4NnyAkoC0SABEntq1xqO5IwBVxMOEdWePNW5HsGzcEnDh7GGzXA+D68bNaCyN86nGA5lHheWDp0pFzTEglQSOcwJHTWBkSnWMB09tpKhtpzrBjuq6/hZKx9rQxh8kRE5TwpP6W+x9zOs9UphgTFBGE6x/7xlNqJk34m/xvlpJxy0dMCW9VnhTVL9vaYra33LggAmwHqGRPnjfxwgeLf4iKIPkEJH338dQIwKKVPtbzBXD6/4WuxoKnlmAQ7byrITjbDB/y54lmtm9vmLfkL+l+v1NRFd/9cfXwoMO9lAgqjoecyU8BboH/pYKp8eTyl7zq5iJ5nzp3L1w5wUWmTELNAlEISCawFwJ9gZf7qelYG/vaSkI7M0999Vr/NW+j+Gq2eFRFioWRHhL/C2AWPtb7BQv/C0vtcFKhIcim4NFJRFjRDBp8o6hgM3D8nK6XsSLK6bCoaiIcb5Us8jpXuyHIsziMP2cZrp6/IXdvRfGX8Bj/S1wkb/likoVlt4ORaWsE2v3CdY6Ux/R0qqSTFmrTH2Yb6k09TP6W+ICnfMHKm+qGhw/VOCnxfXf9+t4EtgHP3IJQptjR8wT40y1D7it/TUUWRSC3awqeQrGVDmhJwfxrlaZj2W3mxQ8OWdEOX9/zVw4fc6iGlK2+LVUMmmuHBmZktWkBaW2qTGR9E9UoowUcV43r9dc4y73MU25elWN9ivGmbJWrgWHUlRE0/R9UYyiynFfcMI4pKlUP/SzakyqK36dp/PXOIU/xLvqr9GznfreOyi9134WF5lTSlD8NcQpUxA2IMfE4I1lAtUipcSk2oB9Lr6bABijsCw8vljiv/pTr8r+Z/ylV5P8t6b9z/uH0/7H/NNp/z98Tdn/hP/0Wyb5h33HtP+Pvm/af/TNR8r+u1zZw3+UPrJZXbfkXUFDQ8PmDZbvbL998a6ioaGNP13l+3p30NDQ0N5DGhoUba3Y5y7f3kMaGhrae0hDQ8MPGELFt3PyLp+DhoaGhoaG5p8JVYzOu4b/9R23v9sGjMOw3bjAuQ+d8xh70Pg9yhi8B4qRKMi+j+S7gIvvJ9xs9PNdwsJ+56bvuukaxDEak5Iy3v8ge2++GDnKdH3W1112phYWbX7+nLn/m5yJ+BEoJFLpsuut7322VLsxcIAQcESWU3HgBwIv/dHNXoikpCESOi0gdfveIsPgkXHQMEZBvZagEnqDNJ6zhp9c9ztV3LpWzFlCbzAEII98uf9//y0d1p++L6H/3G76IzaqHtAihLZns9cavJE6ahYJwUJ6YvHmRxp8dlmD3o5FkK9ZTowl9AgNfoELSDHk51bODSAyjGOHYlFyyk8IYUTwo46g6Aa693f9ud3Gvh9uGtEdMHCdlxzN7Psk1VR6N6QYkzQuhaXMoFcMNDQMOaWIqM2HDGroT0oSSoPact9rOyFE4lka7HuMjmEcFOLOwjhKg2kf+jE4a5RrRHz+OW9IOq53gvPkID/44NLlIDFplVgTGDCONc9i0sgTIFwAfV+GauA47TBIRtC8spmIYGMcNYYTMJ7BDhDbg6ho1KakBk1JoN1glC8AvdT4wD435HVdCNK2BOaoXBrQpASFBEMF+p68WoNyTAHJR0CTDki5+z2qSemHBJa83ZKiSVuxmBCIWAuES0CaCtqooztAAIC1EIKYjJqM4XaLMWoySmHthMSkhiaJKdA9AMQSyWGgAfJKLEkRB9IO4KmdVb+i8vYgwTBIoMmJpMrmJTkXdBJgEmBWYJ72pAbErIYAmQaoe66xAOQJbvLsSDIlqaaxksySZD9DAA8cmFPixgtAAxWo7c1Rikg5b8oAYtC7WIvk6RjomGZqRLmIPQTx8a5Sthq0TJCJMRpSw4ES1JmZF2ltmdm3JRHkXAMBiK3EanLV5CxJA2ZNzgJsx3Ipgq7nBtYtRYkVose0LfsdrBKjiBaO21LqRqlB89TV+TNA8hSwGjlFNWTJH9FvA8BqLCVWCJeEZhmaVcINB17NhUiVUrAuVf4poIHzKhgTaU9jAM7EWhjCdR1zXifZCZdSTjnvU3ucZAWyxVJMeS+ivMpKuOgEtnI0EOMBYK3LMAy7xAigRaUPtwZ9LFDAYs4hA4y2BtSmHKCcxmJKrAfL7NMdo8R03jalz3Lmi1DqRB9NrnVqpfCkQEw/tnSkz+rchTRqY56NcFFiBCkWys+FcJq382ondXkgtHkobzylXAVmKKrAtoEqsFYWc7vrwqeHr2vzJLGZZKVPgBuHmDMx1yREMjYlUF8nh0GLQEwrV6oJwHPernDOErnSDJCPhKu8sqQDEcBpxiK4AwngCeFGAaLcc9RAqkUnXK1mgQNz3Ll2LOe0ZTROwB4ECOfrCxNvS5WyaVorr/JssZQFnQp9ZjgJsMFEr7EDe1LQStENdsZxxPg6xxCWpXBNAhihLKGBdV/rFgIFsOFEWnfC0bIEEvuBob3c4vcCgSHcnH1FcsLNlVdH6lEEioZYmTjaWjd7OW9vUuqV5InZ2QmXnAe23MwJhjmv6ofrvDORZG4/cCm38+pMOB3U6EyUnh9XOP9IrfeyNxCvFjJilWspFyZWXtEKMQGyA9a8r3DQbJlrjBVuU9bNP1JJZmZwmXc2nT9cbfkiyfpy5FppwJOFIHMwwtlKCM0gv6BiTWJ7y1ttz9hEkQUm+rJpvMoF5caVcB9KuA8n6xIV+Op+G4rpPy3f7/eUb/d7Tj/0E1KCnG/CmtwLk+ZOgPxD7Sua7wqMSrteY9KXeS3VZPonEavJTwiSlJ8fkgfAocMVmGeJZcl7V+Nd3+esf4wlyV313ue1l2TWh2YW/qDVW1epviwk+XwIEssKLBpsGlmqJFataUOEG0VIqOWKrPLlSwidCmE7vY26mUpKJPl86iUWJC8nCWIECH0f41CBDPBjHCW2qF1FZUjY+gQgJbmheSlA1kQIsZ6YG3IudeVn47ZJ6khabMqbjJWOZAiTlls3ASYBJq0xbVaNi5GaGcJFA0W5cq5FGCTbuoG/aUNg00yZQWIS6EdDKRLkIqgA1eoJywD6aVQMUCRP6yaoFolSZKuA3ssPbAjNpklMcxw13FhnWDJ03TSJhWUJxqsfC0yUcuucQ9jWaDW2VdASY4J1cGRql1wIZ8PJVOsKCgF0TOf77ZbSqMtjYPKkxAoZBm1ZPxrmCLAK2aCOFp6yDOwSJUazC9VqVS5/5JYVOlYmOrCJjS4laYWAJwpG2L1k/njhMYipPIMJYErRAJ4jCeAL878pmwTgiUpyARQ9KsCi3KAGTOTxk2CWidJHRlHytA3l1QxVlFc2pln5B0ANrDrhctKbgGtzZR0X1Rj2RQpgXIMsjdJzvVPtpRnPahxAkzGXchQBYPIUpeczQ6xF9kVGi2Tii954yqXnWTLvSrgw9NMcKuEWCCe8WuY0juusvMoKyEImTVFuksmZEzUyALeWWYfqqM0Yz0wKj91WmbgwBvMkayeEy0xyKpzcBFdezUkKL5BBsrfCq8A/HvlDaxiZjJVKipaAshSu1IN1JAEq4VjNGPY6iNkIoqs3PZIiAIvxSoDMGFBXu6BjlXS5mVfmmkeS6Ra0FJm4AwDr+YTdmJijYm3KrEiM0MIsbADMIIERM0uRBpg3X+GUtocVrgJU23aA/mKcZZNby9pL5g02VV5BhgxAZxgDikhAng27tjLR8wrIaGxqNOw9T5mh0waiWONDc9ahk/FbzMa0cRtZgEXHinuRwvO8rvWTc1NgmrXIXI0LsCwKZHjPnPPYSzl6PmmNslDESY1Dn9nYg0ktoUCqn411SDAOBWwYJQnfjEt0u1xrDbgWAAZeP+fyJBzRSdvmWest9bO7PJyLJIhpA9roVpKr3iLVgGbobUu41SA+U3h5ADYGMUWGSQOl6AYteSR1tuiq80rQOtgrRcTqxoAceZV8QLS9aXagDgOjBJGgd575F8jGgNhKuKybLZbk0b2cBJBsYtapedPYboMPIooIhaQucAH2B36G7auSuhBu1ttYtFtKfonlaV1YTyVv3XQgprJKTctinJTEAhMlWLDBoqqfnCz6ZZiWCkiSQrqjghEu2cLNGqQL1LYTbtEFJVVAkvYc1aVF2vI1zFe4iQhxqLoDzsRFWTbBhMI/SduggFJ33SYeU+gza3LGELF9cin8aENjkiQKzSrh1Ab/wks74RZj+M6rFV7pfDC1Bug06mIp3V+g6AK51gfCAcxHMmiujRQLqP37D7tz5dVEubXSZ1l4yiXwZzufbVTTrLbUhe1UM4wPf5umbf3s7wveWXCR/rvxEX6zcu/+94e+3JGfcrBziYyDv9+Ri7cnZUuXSER37pJXqGxmNEoBzhcvEakl5Xi/w74hRLJUGwS8hZFmtMEpEE0paSn91n0IvP3JYozIxFshsSHx0s4UQ+SNyJySRO40aLViKrc45xx5dRJoUAr8oMGgLSdp8Px+553+c7y29Flj9fDzd15fyY/E+/2n0/AmED+CauYhIp0cZATZdkhfSt3vEg+dRu4KaTfsXHIJ+27USC91JdQcatWIltEhljg5QX5IBloWo9Ja+dF2+k7jcll18muOxomc32/ej1f3P79o41/5avovngE/z1szxph8f5rR9msJtl9LtP1aku3Xkt2/gmdqtmdssWdutWdwM3sf9hz+w/ebac7z/8l/b/x/uP4Z98NaokcXTTJK+ks31u3GfOPUpKAvWN95HShDl/gne5oan+S/Xj7JL5/k1/W6Xtfrel2v67/4+n//i/v++vcPf2v8Lf6k93tv19vtrSMxyH9vnKEhEVISctUjhy1u1+hRvRQeK+LFqOspwJFyTTvEwik//MHzedXrWoJ3PanqXf4jfPr9BXW4iHs5rr//vt37kMvfI1k3FO9j0qPb+hD521M9NMfudh/i2IvF/uXP/Ut/biKNPzeutZf+3O7G3VvESuKQe+3P3Tb4XX9uiWSzO1QoAwWB4v/Yn5vIlT93R0iyI97WIsQb+cGfe/SekPMH/LlbB/H4I3qDX/XnvtXv+/px6J76c9fv+9yf+839ud/f+9st9P0zf+4cgvlz08pIO3HU66k/d+XIHX9uaTyc/bmj+XPXbwmrP7f6jgfaaVgjmfHRn/vnT1l/9aY6aSaU9XCUiy2Th9GD6srdh0C5GIcg5UDdbduTj0CMDjT+3NJL+kiSrpIsnRtJEiOogAY1RuDAKJFLwINq/OTPPerc6eX+3HgNlZiaL4C7bXusBcITIIxP/LkH3Dgaf+7x2p+71A3BglKO5AUQz0Bwf26SIWDX/LklMC+t2PpzXwLX/txPAXOvTcLYtLvXplQOkTeH0ixAzh7LR0fviaTEBC1OjVFQAILq8q3VqGENTO7PXX2oiaXqkxgyPrbuY7bHAPD/qsDRi7Zx1528xg4Qc3/udHavTQd/7lhj3JABmHQggHrSvdJONUjGxp97mvBxxPVLg7m60s74sFZfQ0/m1Ry4K7B4uZh2p1ocd2sN8yxzLzeeLWIhmN3duNXlNvYbig3gsZS22a1FdeAmttdYawcX8uYj4RJkIGY+Lu4Ta0mhVIJ1TLIxEbS4QVo5JxwMg5heYw/4AGC6mVqf/QN99ljJ82Q8MDFEQx95ZUA+ArMRzt5UHQgXNGjdtkElliqgQcMrrzGOFfCmUBEcgfrYTzpR00zMfWxj3tmUza8awJ1llacreQSNk64LA3CD3GKEjhooN4IRzso54ZxX6cSXBWvwz+lDrNgg6UyMad6TGtNWahETEOSzgMAJlzKoL2Rw6MjEEyedV3jRVgJPbQNm6CAggD7u63pBszPhshOuZeK3VjgIJwm1OwwWpBCdTR5rlQUxNYR78OdugGkHghKORSYUwjHxvm7krcx5VPdup5QmFagTWtUk8EqnVoEMS0CXAlSqGEvKRyrWQhDaWoxGKez0wSG3WdfEkACHO/DmnVepNkBsr8HRP0YQlionnHDokVd8chbCJV/Iqj835RzYCXxkIlT+EuHSiXDppFLKCkQnXGVYbhYyB06ftZMCEO5yhYsphqsPyPTMn/uScFFjF4CvcOeP1GlfoFZz4CbIxFxeUD5DQdcSc91BrL7+MQJoEkCZWDUBTrhil2Al5ssSpK4xBSJJ8+L2R2MXEGjSnxlvYKmEq4vlF/25wd/f8eeO8YZXM76QEqSbeiLia90JuruC5nyvLooAEYAa1YFM7OsM4E5CngTmzYVjJ37GAPIFyxi6vosR54viSLVu89xpclQGjwDrKsC2TRPlUgj4cytQXHQULd4sOLnmyZ2wzL2bqwBrcUV6V39u8QoZhk5jP7qOP/Nw2w4B8WgPoHkShAAQNDYYkBKAqMMlti5Tllb483Zdisf2YMBUyqncCf9m9x4vAb6kjB5JBqwCW3WqJTmvOJjjy6w1COyKsbp350l66QDNL7M5xNkxqHJVz24k8sQkIMb9mbd3AxCrQNSYSgvK2aU54SI2DBSRScCXVIG8bDQgNMt5QBOgQXXwnUpeVBlfuHf4HtNUTvh9J3V5jF2Hc6b6JFINAYGY353if1TCFW9C9aDafTBVi6AcRzsQNJASYkOHTPPE+DirP3eKAswLPokQPfP0Muyr1sATsRJOUus082t3kNrdwbRcdVeTDpocIDC1QS5ul2TW+Y2K1i7YTU4hpuroHel+9Z+jeZ48FTQpoO5l0l+9y5M/t8Rcd0CQik4A39kypgu+vZVwFUiJp1Yazea3b15fXDGtJGuQz8qC6hpZjadEgKIBjlcvbvMfrh643KT11x8IAHNfXVd7IBA4xGhFbPUJZZHR+1NNzx1NQM4BwunHAC6FkjdPQjiZc2MiwzlBzCLZE4CW16UaZ0AlOQqKWyVNSVCAtZSbq5d50YY44SDNui2z5PHBVQiX8MhjQgsZYpyWBLBtawGqyzdcwgDMAt2lLNvB9XVl5fJFpjJHB9vcnY+jCwrHLUbhCuQ8W89jyAl3WBMQqDP0qrcRYiHcdkk4VbxBEJI8oZVwmy190CzFZeH+FDDCSbb7cz8l3IqjI4BzrXp2W2eYX/dk33nlHu8KpApE8mYIBwUmX2QAJO7OshWgZTyEzUm8BAgmjs7kOS8LJqv/+mxFClCq1ZmuNvC6VgC+QH4mAFdQAXSRcdVEkTn5R2/SagLARPtstJYnHG0TXaUGnKwrnLu+npc+ISa/qCFYSoWES2HiBLoIRlIKL3wIixGJLSQzT63Eij/3Kmampc7mqjexT7MWEZPmyU4N5z2E8xWEVYpVgKQP+5Qrh2zY9ZMJwAUEWtd4heM5XWmYeHS5hc/14xgfWx1bPoRNjUZTmodXuMRImjpgWWkeH2DumQ5SBBtWbSr51NBlpGq2XAtjkogZ5swsacy5xCDcOpugIyCx8CFZFwG0yMTobiu8wqNXgF1Hs4k1OL6qdWrYR1YywtlSNS/V5HwkHAEAggSA6onNQjbvvJrc59gJh/8/t1cAFVPq/ExKAWsewBg7a2yuAgItAlWYNDiJDSlMbIGsasNug5ZNzLDu5WgMwgV71Aic8CQTE8CSoTxgXG09WPfHGTJQ7US4ZXEmVvdpqkmCf+/AP+io81YLL3Mpp8sxLNl0QFxAULWN1FjVJLqDowyL59KNi0lXFqwfZeA+/qQ/9/t79ee+q/sw8YGIvt+pVwy6kY1G2KXlfffnxnu5O/hzS3X35w4haGTIUk3Au7/fyTEFjQ5TisWf+/CmJsSDY/feoPxkrBOJgbNtjw0eNgDSe7EG+ZO0Ooin2Ppzc8f1iN7qz02Xrv257xf+3B6hHRmR8jPKT/HG7iWiZvoKyWBq2MvPIJG+1iKzP0a60kLTIJHOHMQpXJ22SwRDJHtCiz/35/7cM/vr0K37w9f9/7o/9+m4/pEvLv55/tw/zZ/br3+6P3cfbT889ee+9WPEn7sL/aDEH1IKfdeP85zjGLI6rZx8WMxbvlP/lfc3Oyi3w38FgGGXJ0/aIH/Q58ji/OcXidGifgqy5uwpxYPEAkl7P8mllTQh/w2hB/FSw5/zX3l/l+m6cajszbxX5PpN/5Wfb+q/En/+9fP9Poy3n3+/3cd4f5O30ujgb12vi1ynhfQ09td+hG3/ZVSf+6+4J0aMx4hC7+L4ct6P0Fw+iAzn/Qhj1LBt0J0UfuG/Umv5foTUuvawid/1X8El5an/CqNjP537r3itxv3leLuE/rNDgWRwl5TP3E2aWr7T4ROHmPGb/ivvfCjLT+96tVEikt+5/0qQTI3wvadUuvNT/Ff6w8aErf+K7yN43o8wxtDsRzgMT/cjpMHxwX+lNBhoMx39V8YL/xUi8WI/wtuNtZJe4r+iqbq74BjiqDEPKhAV0JKOngGSxJ4BDNLA1XV0sPqv0K7mt7FrwAJPfgHAgwXLtdO4chydTjTW47pU8hzwcsRigBkViBHAYyCeNPeTK/8Vd1NpYl8Djg4rVwCxYF0VYl34r7ibSiKpMQc8aUXSsYa7qaS2qQr4211/OUbgL3HnCYDkabM338ZrYj8uA3zzJPKocbGD4Xy1H+EYPOn7Eao1i6VMEsDKze5OcAY8lh9ruP9Kfcvv28M1TifuskAM4NGGv/b1oBZ5AGK07eEWf0lFsr6SLTH3HyhBrskZwF+71RrkWZHHDQ0tBtGxZkEqL4DbTQQ91uzR5W9tS2A3bqjvPZgNWPd949Yn7gS+PZwGsElj5NVyp7e7TqSdcAQAjdtBqdbuR9hsD2e7C17uR+iABw7MEntGOAce9yNM0Xfrcq8BjVEN6j3dravddrDZjzAYQN/87W77Gt5epvpWXBDJYikvO7A6E692gbOYNXCgwJlwMxxfa2x2XlUiubeW86ow0Rt1wD1ePLk2MduPcKqEIwbr2vWq3Y9QUU9qrN0FzreHO21oWIBZgZZwZ/+Vybcd3AOS2YGseV4EwsXTQmZAerbCYRKuJd+P0Dd7O1GqZaKjj/sREmuAaQdCis0Kh2cRfPFl6XEDVqePBxV4zCvAVrlWtwmM41iNh1DZHiSoy1ezpHmyst0ZZsliY6sxb2rZnIlOOCNIghZGOOOVLUv6udrs5KvowyfneL0fYX5k4hcIl3whyzHNDwtZINkQruWVA58RLgS4dr0f4ZXDFLEGePSLmq6BdoVzPxJjyVR5deSaL33NR2VumegxB1Yv0u5HWL21QM8bYJ4IfChyBPyTk7oOrAq0q+O3/VduN/dfKa/74sl/pWxlBnDlvzKf/FeWufivpNZ/BUDKTZMB8gULSoQY+Waa/V5431D9V3L1X1lmaWDFzyDGePBfkTwcW+qrC95A5MnfLQm6AwfHlnlR/5Xx/v4+DHfzX9E/6qr/ynDyX0lH/5UDkCIAL3t5nbb7r6yStwO7/4rO3zP/FdtxhiTv2AsgFDz6rxxf+27Vp2Db/VfqK7E8bQCGUHjFVaP4r4z4rwwn/5XhO/4rMRZAZ0N6Xv1XeBnt/iuLZJRyU15+nPxXUqr+K2UXqdxrkk3/xq4Qzrwz8DNIupztfgb6Fp330PXNklKl+jIUgNevvjPmxot7918ZNRBG0AB+URn/lSky7CukEdaNCkw8wgBsBbety9l/xd93+r5Aem22Dycv9Kr/SgjVf4UBY/87818xN5WQNUgJYI4RIKb6MAnKFmpQHmcNnjt3T+CN24P/Sggn/xUl3NS6E0yViRXQhUWAsv0agL1l5aIwfZQCoE44Gwv3X6HTNHrtv5Ib/xUxDtD4r0Reg+LbRM9X1hIrgj8HQHUnMP+VrnvivzI891/JefdfWc0Fwgmnd2qEkxiNAnCTi95JNMKFo/+K8ABy4b8CqXdezfAFbmTleJJYpKtKn5ObCm9eBTISrqsBm7+rVYAFqo59doKY70bw0c2GGjF9WZonq2b+K+uF/4qarPOxLs8Il7az/4pvhghzdk8qXSIrsEIpVrPKq7rQ09RUAPdf4X3wp/4r2IgSuP+KM5EiR4C8ed/n0naOPQNLAeYy5+6/Mu3+K1Bld05Js1nD2Y/xE2CmCID7r/iwm415w3+FIgostlEm7/glP1f/lZSqO0Glj/k/SiyGysRtdXcCSdYaAIvSaneYmnaHqXnVoN26zf1XpAAONfo0EqzLKpiOm9BbYvigbBuLLwCro+1luElhaXPWahtPlNbIld7ULSYFmPO0+9e4/0punQPq1O6jW++uOgutxDQPoOWVu6mAVkDt7k4+MW4L64EG5roiwVpdR9fqvzJvoBsrqwDb1vqvsPcg19F/ZWEwAbSGWl4BtvXsv2K+UpP5r0zuvwKvJOAx8N03GSspkuGV8gDC+aaOWa5S2P1Xtq/7r0wFWM1/ZVIgqcnFgBWTND8f/VecVw7QwL413k6fqfpjLbM5pS642xDDrnkB4r9CYQGIsTPmZA8TU7rgClPo7XelbShFnYmscEfCsRxvO+H2Ybf9ITf3ItpruJfn6v9Ug1LUOBFu3Q4+sjFBODHJltXwio5Cb4pkG3Roa8SEsSlvH9Vus+fhpqsoAE+PAwwThT9+/Fn/lds3/VfGg/9K2RGvI3LwX/H3O/s+ggFwHKq7SX2/MyGvMP8Vfqbn/iu83+mb9zvlZ4rx0X+FH/NfCSPQo/+KXeq9ws6ERMx/5f6Z/4pCn/iv3PEyIUnE/FdkuHp3Ujn5r/RP/FeG5/4rXv6Z/4o32BO59l/5Y44jf9x/5fa/vR9hiFmul/9K3f/j1un+H7LxR5hu4p3RjfH2rp4Sqm1/12QMunbMc1K5fOu/8vMwuj/Ff+VdymqiV7ehAkiKp6/6rEiCMjhcUVEmhv8sYWkJ60VGjROab0oV29ckEUsELqvzh/1XJJD/5LI9WH7Pf8X3cry/9nV87Wv0ul7X63pdr+t1vc6a/y8/b56z5l/nzf8cu/uYpp9/DbJhWkiDKmn6GO7qQX4fx/tP8fl+H8bh3t3UAzyFOHa3PuRxGm9v96H59/Z/pb/3r75Pav6+weWYffN4lVkRjwEMw+dAW8STzy+clv9pF8bf32uMMeDyGEDXfQ60RTx5fXk5gr6nxreHvX8+7P/SF532Ox3HJ/0IgbjHKPwF4PnFdP+XXs6mcSS4GERDvz/s/5aEe96Pp0yMPga/RbgX4Yh9gVefT9S/fc9BY3zW8/CsRvjCp9qLcF9cr9qZ8fkg1tZ4Xa/rdbWayjYfla985r533X0YjvpS3b4edajkd+xKftrpHE2py0qLChKxcC8tDGy8vAsHcQWV11Y9SbkUOuhLXZJZBaIOoeL0Ao2+VCCsuMSyVP/Sxbt6144efiTHe0gB/wGyHyq6QpccV5zyY3dPMUuO9KR2SXMqRD4QP5rTNlgjmPP2jw0yE1aLzNNtOBdafWnrf9BJBH3peKkvrf4Hri+VOuTs+2e4vrTvL/WlKSWJ+Axf6UvHT/Wl5Sd/RV8aG30p73vL+/1R7xrJ51BfaZoYdAQgGeR6AjRFSFKKAIDLk1JCxrxnPOqu6BZciUex0AJDRWNJDjWmLRIrgQN7XjGuj/jYdQJ0cjFfEuMeJdAlIWgvI1pSygHoa2MBqlpUY4y/AzHYXuOjBK4vpZwAao1AEgToS+/3NAxVFNrLVZJa9yuAOl6U4EFfqsGTLdSj6UtdFNoEXefJuCdjCzzRl1oDFWB0J+XGNI4EwzCnVJMomYgpRyYF5iCXFJFgHD1JbBwBiE0EAORJEOeUSUrAdtU652wiEzVPXX+GRMyCEI4xD/IzgCBaA1ljdYt3Cc6NIqiONiQCECOgSIzVRkzHutmBVAGCCtAAeTgf1Y1q/YY0Vmimw45aOo5yFZOS0PK04Uli4RrwGjriEpS7Z5/3hDKPch5UuR/P0RiIJQuiFqE9HwNPNgDtPwCRGlbNY6HEeH4bwrEhv/MKgOTkTKzAkVfxRDgCeEUAQKy04oSLkjTCQZXYEKmSxvlHF4g54DEnXNzzMrGTWoq1DsLFnXDZCDc6rxRwwpF0YByvCQcgMQdKMlbgTDjNlthTwtFfiz0lnAOSYfdChW1xvsSGcJIKxAie8SpdAbEAXyEcCRhnhGOpqrzSFU6VLb5y7byqC1loeQVAkcpJGrCdrw+E0yRFiBXC2ST7nD+scM46B/IZyF4jPlvhohPzyQqXS/KRVyXvxKtdbu8AMdobJBY/IRz7iUEzX+GccHXpqEn4RLISbjwTToGcfYWTpvy5rCtcqrQIEE5/EVC4GHdeJedfimfCGRBBLgDs+jEaTj1rp35UOg9QgZpQVANfpapuNNRAkwAUITlZKxK4oLkqomnZatg/Z/JxZlxlTlA/iiCrJz12sUOCy4kf9KWuXE1MsnEtE+z6UlZCWOJ8OUibHXAZKUELPBc0u77U1gOuqsvUWF4tpjfuQFWVUtgBvRSIB4AGtqovjVourxtA8BXOl0NkzBo1KahTD0FpLRIrEAqg0aoqtRrR5NObK6L32Pbb+tKyQ/F5f/Rp15fOzf7oE/rSHTBV5Poxr1XH8XHUl358fOi2wtWtPiX2Rw/67/p01JduH64vFVIDLFtp2fWl04ic5GOZVFUg6EfdGljKqTXd7bI40X/MVSVDEXz0BbjWlw6X+lLfHz2GChR5KEDR7iw/dn1pXHZ9qd69yhcox+RUfWk46Us/VO4nwUlfmhUwyQCaXSXZri/9UfWlH65H2fWlEjAMBoigYFVgFhtq/Ev7o4dP9kePBVBmi2Zj15fm9UOq8Y1KDKoPS5TjJmng/UFfGiMavaIvRVMsqOtLVWI8zaxzwWpM82GHYulYJZwYNyAy8ehLswqHPj4g3O2kL40QBFUfedHlfh+rAutBXzoDCDuXRQLsSvNcH8JYNCcSWxdJK8N8u+oP21a4d31pP8TY6EtZsHYZqQZVXxpCoy+tKkHuftTxm3RWo1w7MDGwql/Snsf4qC/dYMnHLk5y3fLHSV/6o+6PnsUGjR95tS6mYHlQX1XCzR8fda9sgsP+6LnZH91XH8o96kvpedWqh9GVtRShO/NZX9ruj+6SwnzUl/auWzYx6ml/9GWtxqWIrmRVyCUU8A35uegCCQTNvj+6E06DVl9qqrmDvnROZYXbdsIJKY1w6EsFIqrBYsA2A5gsq+6PTgClYtWXtvujG68AYmj3R4/SVajso/uhHdT2cgZYANiY94JwScp9wJx2f3QFVnhVCTe7vnQXNH8805dKoy5otg18P9eXVsKNZxmpGZ8YkkZfOjPmLEasrDsw7drPxL34IGrevl31efPz5DJSiXFXVegIsO+PXmLY+DDdchldq8uEm9xv4am90JeuMNb1pbp2hhhd7ke3yv1RgzVsRYqnvHL9piAb3HUAyShLnw7QLJg2sE1ZklP5xC7L4Vb0pXVXahj7IY0CSMO2U7qyfRO2cwTCbJq/tRQp1iS21qMIALi2D5f7pSr3mw9iY+R+NuywiTUMQbPpS31/dCR7Trh1X8ga4amM+KKMW3x/9ELlj0XKCbIsVYIvt7KWvRegDMZNX7oXmXk+mBceZQC6T41VNYQQnLrSfbFl227TD9eXwo0p12TSZBV7QsddEIm+lNlf9v3Rl5kBhVesVq4vZaaNcDohlXAy7OhLQ13h9F7toTN9aYQMyo2pAJiMcsFOCQot1l2/mcttIJR3DaStIasBM9xYdUCFNHwSa3u2Pzqc/NCWmQwMrZoktqwA61L/7Vif87VMkP5oK9SVC+Gpb8ifT/pSBnH7OAma67AjAKVmVfkWADPMqis5jQy+P7ovfXlblfWGpqR8yVp3Wm3QfX/0ZfmoMlKNTQWQmAnRIZwYf9CXfmzSN3j1cQYYJvs8/5P60tvNz7+19zvdhb40xpEXPSnGZn/0Rl8qb318/9AYApEs9RX09zuSU/dHRw56tT/69Lg/eohVsOoNlp9k+6PXBnsXrKr1EkkptfrS93fXl3a+P3rpv4QP+tKu6Evvj/ujd1JYr8HEotf6Un5MVqo/w1N96Ujkfq0v7Z/pS0eN9N5U3xvUEbnSl/rV/Rdc5/533XvXvf0n97dvrs/1tfVL5n+avlaut4vrn3Y/+vSH/POv7u3Wx7m7Ia3N4r0uW5UP4X6T2E0ftE7feLOVrqwD/TTnKJm9y22v9bbo+rtBE2/vBth+8SVfLtPeEneJreltPdUT2kW2bxOvMaKeIFk1tiQtQfxP6W3/0tmUn3cJJJQfU97+9n7xuevGaf7514yeoFePki6Eu7Z9G0xP0B/0BDIft37M8t/7t/UELz3B3+5LT3BwpT17y/eDJ89Af+n8SPJfX0/AwtOoA/yuQBmXFngn+ft6gmHw8Xsq4/gaMLTD/m/g9ums6/vfV2tcay+eX0zof+nlw+70uR7dBvBqTrOGif9+hGt73uqGvt/z7xPuRbjff87/pa++9077+tyudc+1Yp5sCTeOLz3BV4d9HH9TGdnW/TrhXtfreukJ3u530xP0/VFPIH8Yv+PgfkNPYN76vEI6+tk3egLxYejQE0g4nPUE7wLRoP4x3DR4VAxQuNUTPLqIY65AhL+hJ+D7DdcT0H+P0KurH6CjnoI4kTev2EgNSpXupDDwCOVdOtBUl9DbIY6YwPUEjIJkeuT5bbR6ghtX1RPoJdPTq57Ez6saQzzqCd6qnuBe9ATl+2apRkvDk/OqFKpfD0e5Rr1O51WhpGiOMrtXPUH4n51XBTXSo57grbQ/EmhbttmZGCyXH80UQ2gAahCnmuXvbqRjuSl8rgA06bHxfq/KA1MReEADtFg1AZ53BYRQ0CECBAWIVWBMFjNg7Dr0BMTolvlCBknajev9RZJnIJ4BmQpiIUieJQGYiuobyKRXQPsbMWnqAHPzlxjTLIHLBkg+BbRHtchJQBBjBWLsNaZARObSBKYEoIZLBDzpMXjnMQACB2iqeoHiPl2BlMQQ7t2ICpRIOHrPMdYkMUUBSM4KSBEJBLAkwDBUgEa9RkoAMUrMmicWdLoj7s6aJJb2pOdVgOQ1cERjbcodd3Mm5kFhrPqWGw8YEjdeaLEnHaBwAyRiDlie70sfo5cjFuGGjp+UkgA2xUiyOgyDklRJEOUqALl4hIhpkRi0KxUwHtAUrofkGVBphnv3EaixcgeDt9IAnnTUA/fNB7VYMkAJF64I50QCnfuhJmHTFROtbgjECJxcBXCf05ZwBEaQZ4QLoSbDBeBsIo+gdr8SLpwJd9AT+AP7wKs6Hy0T7fm9IFyshDMgBr8rgF8QTskACpuOQMtEGFantu+vCLetJB8J53nWXycSvfRWroDowDkAqGKfscSciXq7o69Is67Pvl7VJQ1AgpgAnHqVVylWZQvAIJcmi57ACPeoJygfQCeCVJacGObJNuZJJ5dTwGUIJ8VUAa4ELO3Q0byjTwHXHRigQXIA4wC+wnUdXIsQxBVTR/oAkASoc34EPEa7pal9fmP0Fc6Z44Qry1yDcnl/Nd4Anmxa3gEXWh1jTKjrVCQpAQ7/E8l6IpqrDaYKUIQ8UEkOl3qC+eGANPQEADYzB2mRGYphj0VHsUuyASYAYlmBWJv6/LyqNAbXEzRBaNUB044CpCNwpSfwwbnWE/DPmZNMZ9cTZEmiDuDRyLkCpvxal+g1LoQGDvjJfc3JVRAO5py4tqyVL+tyItz6DHChwYfYcGVL+thVBBuxjVai5v2+ngCvQ9cT9H2fn+oJHDD3qBjxh1ta924DPlZzyVRvQdcT3P28KnM5e9QT/MD1azueV8VKpoWr/5efV0VhgcQK/mQV2Chne/6rnmBUPUHf31EH6EcXLmJ31xNokZOeAJF2ARo9QVSHSNMTxKgn2gxhBCjHyyAgQB0g/bo4r+rjA1dVku5tq/74W3XvBliWowIhE/gpQYsfUGABVxa79BsU49Zf1xOMxEK41hM0QIgGxBBMTzCYnkBmX6hPETFZgVyOa+BLlpzEYPTzqnBovtATTPt5VdN00hPMy8nVd13MM7ScGAPgegJJzgc9QQhVTxCjFC8ClrOeQIHVmDgOfdb1YbLzqn5UPYEdFYTf4bb7OG7VCbZcAIJr3tKjaNPxk2DXE8ScSO56gmju8SFG9AQTn+8VOOoJ8LvVaribup6A+8NpX73/GvfutB/a8kxPAOE2AE0uNrrkUY2nyAk3LeR9nIHNhmHROxhG7sD1BCEwgyQ1lr6hJ+AeZus5T0Adkqn2PEWdc9cT6HQT0NW86wmmOY7jPEcDcKl2PUHe9QTzUo2XOTdeYZwbqudVXegJQhidcOo5zd2TF0OoeoKlEO6oJ1AmJsnbHV5LXbVvxwcxvgBLBeaJCDaqnoCAfsRWT/D8vKq+dz0B45wzhuBVlYTFo9AAYJsBnHApFdbl6v9/1BPAsAzhPjYAKAWAK3cVsHycvLiPK5whORVn2YfzqlzAAkHGg54gGRlIhmLycUiQDYgZk5Rk7YIBaNmWBYBHzfUEMAx/7l1PYLqcdNATLObePQYtksVQKMC8+DFX+lm26wk+1nquEBwzxR49r+7dIRz1BB94RGMc926bUPP7/nD37qnqCbZtKUooP4xqs4Xsw0hogDrUAzALkrcsOpuc6kMNXLmLe3fO5s+tKKSmyFYaKEIDnWuW1+oL7mcSfajt9UNjK8/gao0a76t7dwxlGUmcuMN5S3vPZ2LKphV/6fqpISbdvdtOM1p9ITOXfubXmYhyDtdr7pN1ctJPv6xrcT3JjAaWGvswOZEY58ypHVgFkJ7qPavxxYzUIvTjo9yBr7vbVk+4Qo4ClUN0wk1L5V+rJ5gAjnoCtQ59poz+RKydeEVd08YBfKwfCqQE4WCO8Uon2QUsVANYt0ZPIEkADrcyqlTCLUa4taJVZIEcwJVDy5az0mLa/xHI9Ck3SnI2hq0QTtGtljNli86h5c207DqVqkWAcNuq1qYKuJ4AwhVeiWl4pfxzGQdtsPQ1eoJ5Qgu7XuhU/CCrg6+//dt1M9Ismlf7je5hUkDzuGNQAO6qHkZliypAlSFALCsiJiBcc5DVQoQaf/i8qiIp6JAR4FM+7nqCAe/WoY8hFh1A4hvKt11PwMsR9AR3P6+qb8+ryuFBT5BSPV4qFz1BdD1BrHqC1OoJYohEpvp+p1ShnVgbjIndnwQKo7Y50SCRFD/XE3R0iYj2/86lHsW4/Pc18n54vyXJenCVVr+RM1D4qCeQHIVcT9Af1QNmwnM8gp6ApOsJWoHCs/OqOKPqK+dVvfQE928e1nX/3zpe6zfuoW+ufyM9wc9y/QvpCULXsR/+jJ5guIsz/H2Id9MTdO/oCfrB9AQxDkVPMMXQd5d6Ap4z5gg9ARMmTyd6gq6kZCmR/zR37MdeVyDKSHzkrK+xKAdI6FUlBPx+TPgJXqEmNGaRYEgt8Uf1BH/rXDKfdgrbu/33m3qCv1VPEObt51/b+3uftry8y7yELNMiIxuy6ApEsTGmwIdSyHMKej5B3OYQ5HyC8Zt6gpeeoOvcf/M3vfD+w/UEnrwG2rr/e3qC7w/7S0/wX+1t+zt6AoD/JD3BcNXBl57gn0C42/2/Qk9wSTjQl57gn6AnuBp2n4/fP/Lndb2ul55Aj7o2PcHtuZ7gbu7/o+sJ+LnUE9zxa5dwkJy+Mz1B378LRINdz1tzflo9AYUtwmu3L+sJxt/SE7y9nfUExF1PQPh1PcHbH9ITUOupnoD4l/QETTuoED4/n0AvdTFv9AQRPcE47nqCW6Mn4Fvh/jt6gvCoJxgv9AR83/yr8wkaPUEI13qCFFs9gXwHUr69HUeTDeCH2uoJTDagNw0wNnoCs00urTjgeoKoF0nXE1DNTxYg6DV4oifw4FFP0ALE0oWeIJmeQOzqlAS9jbjrCSJJvK8URTbwHHiiJxjcPxf3wdbhFW/bvq8BvpBj+L6eoHc9geUJPboLPUFPHrFIzAI6fe/SF/UEHngNR6/1BEkBDXDAw6lbR3LqO3PMrk7dArA1t6Dmcut+3yF8SU8AQB7BEp/pCXIqMQ/GSJErPUHOn+kJHIjpQU8QW/fupEEE+KKeID0A3jKtuJ4AwPUEHii9ce8e3L2bByKTNPduyBU0ScwBT7qy4OTeHapjdlaPRaPe2b07Bs8j2AkieLp2734KeODzgXGLHeYIwilzJLjQEyjhjFdjACiFwx6DXGpoJ2shXEkCuJ4gfq4naIMHXjXAw3S3TPxcwDKOrZ4gpeeygUegPtgVuCYcM0OyzkcVS+16glgI1+oJ9mT8HuEaAcvyqCfYl75Q8kYvEuNnhIu/Jlwk1hDOYqaQuNQT+Mp1pE+JXQBOOEiInkCChnA6FYgPiKF0Y45altSYLzyt0KAFnFdqEuBaT1ADhr3VE6RPZQMxNUAN0kEt1A/Oq/OJBgVwPUGENA96AotVtM6Wf2wfeeV6gmiKqXHwMQgRwn2mJ2hFFMMj4WLUWEs4AG/ZuebagacxGEFQDhCYHvUEHNazA+NkeoLB0INOQAN45cBZTzCZDRv77MFZRfCbegIHGj1BldDECMBq0egJpphq7HM9ATYcqHqCMTugMT+fYL7QE8TykBzUAXWbf/z/QV1PQDmTDYyhAqvrCYi50MCkBFMuLv2/0hOkg2xgOayJztiIJuAEbI8yQJaC1UxS15UF39ETKHZ7N+3A3dQB5m95U6daXdOmXoCDt22nwAhQd+9eLjZszvjt4ZEqAa5k61YATQC8cz6BrhmDBsUbmK3cNTmq09tYtosH2OaZZNJ7CQCSh3v3gtdXdX7EwI/q67cD61o8QwEWPZ8gcD4BOoHiX68zwLELRTYAgCFdlACCAHFwwN1m8VRDXhAjTn4VwD8SQOixAbTbxaMJcE/Yo8/phi+ae9suFWB/2rr5rDs/4jH26IuGnuAD10gxftITjCP+/5/JBrhnJd4OxKJAiHJJz3OmHB1ENgAgJnMCwO8RQLiWc3XpL26QCTIM6AmqbABeQbji952FDNXvG8IZr5ZKOElOhVcZYFZgwxEdFuBHyXbxcAj6wA20A2M/pIxOJQKs66K+wtBMKuqwxzKXP2YZRgjnm3R/YMB45ecTMA+7t+06VD18KDbifj6BJvPFMQQAc4wAKTqgA3aSDagPa0rRtouH97pmcDsAymydWidcYc4HeSfC1X3k6xb85q+KKy1MPLkZbtjgmSaogERMuHNw747S6NGxXZOZGEW8gy1gju01tm3u2C6GHJB7WLFRF5mo69pk5xMIkXJdkVha5jmNowSCTnWFE/5p4UljCiS8d9UGrqALE87gFOfV5EzUpYV96ZdF4jkhuToRbhNeMSg4HiZIbSvcgoClJMU4twZQPGHnA69WksWhGLWBMRHvcQn4z4RHLuOo/v+5PRbCuiBXBajmQEw8PdAbtLibOrDtwIqfcSFcs8J9bPh474RbDDAlCmN6XuG2lRVOrO0nsDjhJvN6PXrbbjzRNFWZQ8wJgg1i2CDGQDBvDsRoQO3g5k7n9YiAejpKJRwAg0jdGkzTrMEyt+7dtis8dzXPWs6KFGCqMYxzL6smmMFpLnO+mY6m7FWPoO0oPKoOwFVPkF1PUNyIJ9ZYvXtJxsRH6rpatcoriVlX4ZUGrphC1mB6gnnN2Ry4qaEBIpTVZQMa42wX0HWhASsiDW0b667Eqnu3yQY2vbM8mXGJ43Tueof6GVWZTXXUTO5L7wcXwJw6CyuzT54FOs5c+bwrvC992lHr90JygayqWdRbmxkpwXP60BgTta60zB7v1jLnSijAsGKcM2XMxrLJCACsu9/3hwKr6QmoAeFSIRxEmmYB6K8EuVAvw8RF0aonKEUYq2VVwsErJhReZek5//xwActmAIQDcAkcwYcNfNWOyrADKJtgxEQSwrEisXxJUHngZ0zp2scc7p+wmkW5zQgHaTatWzV+c6HoUqgHCV1FWjm5Qbit2tiwti3WQWjmClQpvFYmfko4Jm9pCQfwgelKuNUAJpTFDXL5RypTS96ybEfC0QsC6DPbkQjawIc9mlnz1sLJ1RZLACGmdUUnVmN1uFZ4XMU0ZvwfG61wKaAVaeoff/58ggc9wVj1BAN6Av6IQgmQ0llPYMcSvEt5jby/H/UEOcZAPNXjBIKLBsz9f7bzCfpokLv/56onCAc9QSAyPewX5XoCGhx6azAcGpxjSkPf6gneL/UE96OeAIfeX+kJiOh1OmzAzye41BP0g/z3TT3B9YEHT/UE/ABd6QleeoKbjrF76N++oAx4fw69PZciwKJvX2/9U33A/Rnw0hP8MT3Bm+oJsuyHv77f+rT2Ih/QYwjQE8j62N10X3x9uji0hD0gRIvUTUsY1cXhUk/QPeoJJPFETzAc9ASD6QmG39ATcAVNeNJzKRY8/q+qJ/jruf/K63pdr+u/RQfzv1z/db2u1/W6Xtfrel2v6/V3yOt6XS/NzF//hPqv63W9rtf1ul7X63pd/59d90P8NSb/zWPwul7X63pdr+t1vb6f+XnwCfp/Xv3/r7p+3saY5nV9+/vnezekpfv5989bF+bh/W/ZDzYssdP9SPOaBz0uN+YthuF+G6L8FqQf/xKXpdut/Nzu6hOokU4i9zf1muvLT9erx5W0IGE3DG93KSsNapuSBOoUGvs3dbXtJSmNSFZXIMrsOThrsgXHIEEYwiiQ5tvm0OMQdkhs6W3c+k5Cb4fC3uAgV9BavdbqRy+zm+gkNQ596M/7n7y/i7uj7ssj7q54HI5BgjCSdxObg/R04K6iNB4D5ciTMdL8IQjQR7Hdj6OWC5rHAaspxJAiAHlSLhQPRAWxMaiJUdsbtWqxQV6naQL5CWxNEaXcWIEed7aYBhUVDlqXctp+UrM5qie99DkGzY9DGKNAkhmigNKPoceuTNA4lH5oYbPRiw293UGN6O1GypFHIHliXDvZGJfmr4ynQF5IIUftAvecaF6RSYclk6dZufQj5jTpLU/0UpvKGiTyaC9KKDEJNDXpzzyp1kVq56zFFJ0yeVngqdPZ0vaC3F8KQY2EFKeEzJvmCWg+aV3KaZ4ORI7kRa2BareUy2maaF4NTWo8UY47w7jeWX5XgX4Z9u407OpkybAztaEODnNehj00w96XYbcBoyOXw+5zrjacPoxBsaF0DsjhabROQErYlXy7yX0C0Bki+c+BiWI41DhUwclWwcikAN7oh/MK2mph7qU8ONiQ9qmbAHQgBJApC8wMhIMMdDoGFNOBCVDjEeOUq8ZDrmMVYplaSAPMY0o/GD8IRzXKaVYOApJViGRdzYlgJ9w0g1KOfOYcULoFd+2usEthum+GGCsjUnbjDIQ3Sl2CQnYYN0O4xvj8jHC+yDgZhmCLjJKhTlQ4sWT45Dk3brBL1v6cx3BBuLpewQMIN4wsljqHEA5AC9bFMkEponXO43HOaS+E85zrfDaEc7bT32JDDY8Btivhhi4M0hkjXJ2yjF2JRTMOfYrxwAqiK0Mcc2AGlR9y90ZRX0t2wqVEt5hfbpd5Y3AAqAFASF0v5yuc8cDK+QpX5oNWBiecspY87W41nqxRngKmrPQDrmWpUY1Pu3HoNs/0kqeAgFUPwnXDAA8IUsRQSBL0A3l1edWeFtperbsAYxkmglTGSjsobI91eaVcxriC/fjMBlMxalOaGaN16/E5T/YIhaA9DNq5SDcnNf7L59yMj96P0sG0P+cAxl0zLmhjPEWmzMoxydigbjF+/FSbIQ1j5byaKVf7m6jr/Zgop/mszxgo/ZBikpby2nKataFlnudp0TYnBptykrcs0ywxOoghG0Qja6ZbAPsHRKnL1O4LBRUmX1MpqOXoP5RTBP5RTiC9tEjaCZf6Qrhk9CaP5615BmFJfT4MKCOu40eSoNzCJBf9oIi27LcrpB7sOedRcxs0vxO49FxBxqp9zn1Z90fSP1h28sN7bM8aPuvHRMvtIoNxbpIRH+Oo+Tb77SKDDcgVUhCzmSJBQAgyCSu+MufkkskiszORGtjY53yq3JgmzSqLTMljlolqZlbYn1oCwWhqLsloj731Q0FMYrswkbboh/eXT03tn7J95tZi5jGSclGztNCSvrP/yZvuLyp/L0l4u+vfFxKXUER07yqB0c8nFbGhWun099iPwzt/7NyHS4haQxFHnSDNGTSi+YOu/4qHMIThViFF9LEQiJUyaINi5Wjrbg32h1rWoAIhDkdbw26rx9b5PKM39If8yKVCzLrdpoZ+IQHit0a0oCNHSEZNMX6aWuRY4fZAmlrYRYCaosDeIBfW9wa9ljUFcizjJijyqL/Tv69FNMf83/qO+e90/m/vUr6X2VMRYxnC+rcq889f0/6H7WCja/M/Si3mmVrlYKm7Usnmv+99/vugM6ntxDL/ITD/KhuNzP+gc262xqDzz3xSSznC/Ee5em1Pcmz+u1HDoT/Of3+e/9vN/oy+dWpDW9RAkspwjZJE6IWoC4C8e/k2AIAitZxdY/lvBPBy5AHJABdrowTWPMFusiT1/yo483I9eTWo5doLwMv5tRsfnhgn6XVb44MBw3MbR+AM9W2NEALhXqokCxCCA5QjrwYUDo+X5zdo/3BXNPLcRgOMBoxH4+MXjZ+GffxDcz58cc59ahsbmk/Sg3CcqBrUq+EaY0LgY3UECe7P+kGSu2pm3yeqN6gMu9fdWTJ+PlE+JF6kuV2SBFwGhG8S7vLq3Th2LnjVtGjlHoFHrjlwff1ykRm/Rrjhi4vMCb4/W0us+fFhzinstPC5/MKcD6c5b/rr9+f9JXDjtq61bCfZXG7cV5AjX8Z2zn0ha7l2JhzAV+eczAvU56Np1JMELRM17uzek7+7vDbrqeWRJPjC8srVjkFT7vmj1hgn8s0PlmvjNfaV5xzjTaefP+du/HrinwLDZ8PO9b1hd447AWr59nbHyzkPY2vjenklaIw/6bkb/yLhGuME/tRq7PeN8/v5c+4mr+e8fbbacuELhBvd+EPPQ0tqN94AzSw8f87bnj837gNxPeeNcctu7+BxPrwf7ZzbEv77bHcbl2w/3MB3/r5+f9eDNbohvHW3MNyHMaT7OKQg79aGQd+v1dcpYSzf8ep7r4G8Wy81+NpsCEPWZ2ygXOKNhvwep5TlKn8EldcpQxqTZgYBx/c7b8rEpO5XHeV3nkOMU+7EbBz6EMuXJFHM8q3hZF9VFZOJF0l8kZpCrF+N2IukKS3TPC/aXk72FivOAk3LomB+7+68JY2pG/vy8mcaU6jfvw7lG6mcpFGMz7z3CtzQEHqM5TnmMKvxfDaexfg0L2Y8Ybx8x4vxNJQvG7WBRI15XqXGsnIbert896hZ0gfpx1a/cJ0BNGvZ5P+PVYst2vIqueuyLJxxvq6bdnUmS8NV8yR33ZZBpzHaXc3YXuSGtzkcbCStNVP3Y63fEc3awf17y2mzb3wktcyrhtL6tureZ3pT5caZhXVRw+v6sdx0E/l7z7APyohoX7lpnm4wzZxnpQ/DvtQ5Z9iH8vZoijnO9uWgVmaI5Xf0Oc/kMed8+5n1i6dbeSnDN50Qrhifc99LXMHyegHjOhBTr8bheM+cl0bDZN/PSWX7jk3KMzAznWHyKGcvkuIa1X8AXmXrR1b6pDlzLwDli0DJXKTFddYv/MvbhiFKDZ33JUlTKaqNoKRUqs1qXHmyFZbAD4ZFB+Mjz2lLY4CiuRCuTLrM3LoGaKtAlnqL1Jk25hfK6z0uOuezkmsTfF2gt1JzNYas04fQa10nBl+KrQqum17LJvQZQpjMeI5zVr6sertiIwLY9//CdujKXZV+LDHrpGqe2NlmSK39K/3VxwZebeQp31YZ+VWgj+1j3uYfM4TrdCTvQ58iD90Qw5Tqc14XGZ2LGGXCpJwRrh9tzueQxtNzzrfb8psnbx5jsOecb3slh4laLuZ8WtTOZHMe4xT0XnSyFsa1znmapMZkc65s52VGmfOcZ+acQZzrnE+FeoteCha20143lp6zwtl37gLaWzuWV5ZI6W8MvHtRtvMWaw7Zej7FIMbLChdteV3ob1KqRI3NmplshcuTzbmgE7eqnAk25xPcZc4/dDHbmJmss6csofWNRYYy2j8Wow9JTT90oYFwkJW1Dhpsi/JkjKG82aqEm4UWc94gv61wkwTUYnlifbYVLi5JG12nNW0TvFJDWm7ZFr2r9Qc0y0uuK+E6qXXdPHObWNIwLoEyWzBpd9EOThMU4LHKE6vjKj3XuyKPQHv6ocOyaFktx9q+rLrIfqyy6G91NJay6Mt/ki8trWOEJXli2Ockxm2i1LCCa9LnPCedCwEX+wCyRd+ec9Z2rTxpOX0A11km6wNTantR2+ukxcXquvEcDnx4ReW4zyCPM2t2nfOZ53zeAPw51yVMB1cGYC3lGDrWBL0fNj61RWaRDpfn/EPGfdb/xhhtdKPeOdxgveJzWh+ehUanvEo9/TjU6XHjk9wQhJMizGhWo4tcSjg+OVdoxhInbNKObXq7+ceEcW2OJy+vLHtyZzoQ66TzvkJ+bUob+rFxp2psi3PaSuYsv6fSfQxJ1jpLFhsXf0wMpRBfeq5E+JBsAT+mIYZsbE9xZoB0EdwWCJfK1MrtOl9CigCwBL5tYrja3ddn6d2iAyw3kqasAD2fBFwEXLTYEG1tZxB5ID60KbOhveSzjK4uut+r3hXPeZlzNVZWhnoHM4+kVGFYth9LzlpKec6cS+bHhxKOYc8xCRxqzxfudH/OF3penl9pECZmPtCMovOic6m0km5Xcm1qrRBbTCZBF8ZFYosOybTanOsynNesMyjllw+p+YNu6ZxnoQ8clEnSfhznXBuVj6j1gznXMoXtCzTTzv2QOjLn3IZEmVAlgjDLe27P+STlWGRshcNQZoXLS/morGyXdBJOZsY9L3mbdPptiHXYIbbcGe2tmdo6QlBUH84t/8H9Rdv3O115v9Pp+52uK69jcH8MI36B9SWO5I144+yvfnqg/l0qD6UWTpKBWrzfuVU/zF6hcRzsK7z6pibwpkZg3u+oqagN9marK7ZGbPlboVhrxWMtXlWV9zvY8teMXbu/KO837f3e/fB+7x3HzfqKjP0c+SX/A6n/aNdC3Tvv0fZaHVAHdAPqgNr3e5ThhxiR2uD9aYM1YpV7YgZZre7T93uv/UXlzS7D/+7j9Pz6ZRma+rPXNxv87v6if8kJmu/v7Q6jMZYir/1Fb2OMeV7e//qp35bEUdzSb/chhPef8rsf4v0mV9enTiJSYhqGXumxxCCRJ/uL8qTeh0H3F33v7Wn/KdOwP/n3bt9TdOzr2/ve9xftx0FXVElI3N8k8y1Z871q++IJ2BM621fIH9pflLmUHw2O0/rb+4veQ8rz9vEm09GP09bpdq9DWoZ3iehc3W9ipxvy0N1+/n3rP1Ic5QNt2HIaOyn6Bb1A53qB7lEv0H1BL8CHzvgFvcB41guEs16gv9QLjAe9QPiDeoH7g14gmF7gfqUXCJ/qBcK1XuB+1AtcuvISaFXcbFu9wHCtF7jyHY+7XiBXvYDcPS7Eu14gXOkF3K+bwtgFGCvgfsTRjf9aL1CrSUCNXS+wu9nG6tftegGA8ej7d/im9ejiN5dvWjXf3NZ2b1ruvtULxDBFbOz+hbGKAaZDP5hU978NZ/9CrBTj6AXcO+27eoGx1Qv0u15gdL3AwPgZN2zY4/WwA2K3pU+jF+iHVi8Adxu9QNr1AgzgM71A+Uq80QuMDa/I8weszn5OxwfnqBeIj3qBaH72j77jGI+uFyDQEpNR1PUCEugozVSDZsyv5sOtObleIOYiGpj5+vFRLzC7y/5Etxhnd98+O0pHbANQd6jG04NeILpABb7Zt/IH40mNz8X48jW9QI9ewAi3T9RZLxCf6wVor7qIk+96ASf12OoFqggrMOeuFxh9UYVwNufhOOfMgusFnBumJILtv9YLDNWx3vUCyrWneoH8db3AYITDbox1vSLPHeHdr5tyPMTYBYhP9AJLcdl3P2JCyVoENL0AXHPCBdcLqHF3Fi/Gq14gnPQCc3TjT/QCc9IgVr3Akjse2EYvEA96gei+/M1jcFrbY9ULEFDYxqpZ27kpe9Se6wWGp3qB8UovMGfJRy8gQdRuxku9wFz1AnxX7m+G6Ec8dXBs9QLzRDn4PDbGJZm9Ab3m/PCcT/ucu14gT9VFfGKsJqXUBGOt04cPyOmgF/BBFLNhzlJ+0Wmfp1YvUPs7L/Zt8/zoOz5NFD7rBejHxAtCXgCZg3s4fkBWvcA0aZKQN3YzjVLOXvotarwSruoFohOurAzXeoHh4Gcf3c+++Tx3L3L6YUUCz0O5DZa+/Tk/2oCE7XNueoFGF2SUunzOdZADYyUgMyiXaUS+rBfAxoVeIEK4mOPB+D7O02J6gbHoBRJvVJgUpUa6mHPqMudZb6A8efSjDOL+5FFD85akMFThJimnXeM79SUBayZshwiTsT1f6QUg/z6DxhcCnbcICf1fZLwZYjzVBje51O9mF15zBTEvESkX5xkwr9/TC7zteoG76wUkgl7g0V88BIkWf/H7WP96Uai3P4c6/UuZf7Vr1nCopTljQHsZhJX6WR340IxFAhAkT1A+1vgYj0qCN/MXH6qt6i8e1MQwaiOD1opSqy+1gjZYbEkVhWLsQz9GMTG0/uKuF8Atf4/ILyJcref/rYG+ohfwHMJWL9Bd6AW6L+sFuCx2LPMLvcBfPv9y2d/XWr87fp/KAUv8K42/r/37VAnLkUsSB+J2gW7N159DT36v8fo9CL+1ei1cvqOtEA1ii7r1a9NbibgJknaHVquUwdxuqyu2Tv2vfy33eP+7XoC+9vT36O4/AGhWaXEHXFLQXqB7zC+a2qudXVs1BeAuuiXoQS5cYMl85jtOfgtof6vdxrglW4f02o+x9av1cs+Nt3oBkNa3vW3Fr+ANtOiVKy+/2vxwcOUdzNCXjI9PjIdr8xeIu7pXD+qHYVcuXPvyD9dz/tt6gaG14UkPuNzkc71Ae13nt8aPnHSuNXWfGyd4bvzrQxKGS/o8+Bf6DPrUXjo3um+2o0/n49L4o4+v/DTGsXblyltp5sadcF37nA/Xz7mXc73Ab+qCWsL5nF9xtwEIqfFbc/4tvcD4VB1jySfX8Az6wpw3nswONNKDqzkfG8JR7puEC17X2W6BE+mZy74TlqD1I75kSZvXGG+BdlF1S22+e+YPX/EjdsHGFx41L3zhxPylYW9sXBgPT4yT06oYrn2u3e43Fxm/Lnt+NexjM+xfYbtfX5zzZl4uuUDQPN1PB8InoPk8f044f9R+KURrm/renJOs+V74+885Rb5AuPEJ4YIT7vkHC8nvzPlzwjXpdoIvG8LGr4w3U/bL5fVRiDZej9WX9QLgqhfQN9Cj/I2FTwzO+1UvoEKCe9cF1sby5S96Ackbw00VBvtuONA89pK2b7fZUKF+u13+aO61nOZNIaIXuKsuuEc0SM9S+WJC8sbQie2odaN/EXPvpRx5Xd/H4uQfpAYmM+mo5dL+BkHtpv0L9eJrr2DCOHZptH5RjnF2+tmNB4xPR+NDh/HSaKQuN+nGJzOuWbXc/uUbL1GoMdEF//YkhNN2DZMCmr+ECGD6CFpfiv5Au0SMgK948DvDGnVxsl7kWvlfZRAxxPpdnH8faTai7xC2FIdeLZddYVAArZGr3ZlyM2bE/MrXXDswYRw3xGbYh+BzLsmuq8M+MkLtsPc+7Dbno6bJS9HmfKK905xPE8OO7zi8gj4jXyLiO45dAdLAnI9iOKpxypHXD315M4OHt71yDZSrxukvJmNMNrpTMR7niHF45f3Q+gkbSGT0OQIpg61A5AHD+C5WiGqjEI48jPM9sislQqxiBSm0VIry5FGkEG6ZIWEM9TWxDmEhUvPtNnmwpLwh1igkVMMbs14JRzkJmXO+3S5fNlZliJXbeRUEKM9rNonLTOFUXWCzebrmdaJlHmJsK7eU7R8reTiAQz3NK+6azSJj+qawP+cXi0zni4w959MYR3/OKZf215cThIvUHf05Tz7nlXBU03LMOe+Ky6IadWDqnIeoK2mCJTGhoarNM1ssoGl3w/c3UVCvzjlsd8I52zEeMC6GKuGM7d3O9m5/DznC9lQJFzEe92+FfYWbdGEy40MImgfhbM4Xm3MppQM5w9MJ/2Nb4ewbdLVB6zrn5a0Yc46HfCHcqh7LOdcVjiKrejZDuOO328EIh7gDG81uOKxmWq6+EJOYSRTSWupiiLyp+ufruquMp5zEFr2ki8tEz+klQYKT6kE9lrw0Vc2OabxmypHHXamhhcBek/DkSRIfeNyZfW2nnFxrUeCMatwftZT9OUfxUXuu/6+VPlPehXeHt3GZNSIRlYLayZX1HeP7eoDr/aLDPvmc14+JGTd01hKA8o6B55yBdHmcu7pPMxbTUoQxNEC46nPuSondOAoDHWwXqEzZplaKMN0AZNKjqoiqXvOVzu0KN2NfEmLHe26E099lWcrqNV+NR/WaNy9t/NgzQKmRdb3SGYQHDATGV7zmcd+m+8hUtAG0C3J9rIV6kqljgMM+Aq5/tIRTVEUh9kQ5r7hxAl/bwz7s+1PG1MIrLti+1jeXK9IDhVCLbD7nEM6eWp4oSB0Tr55o0zQTxzkPk825Do4/avacK6G17zlJHi3nzJOknvRKuLFdZGYTCFw853X1CXvPJcadpim58an0fP9HC6jShvVgzuRNS17ywNMdc2bBY843XrQypj7n2uTH1ZwvzDliBUkUbY/OuRgvYoJtKxTXVpkeyVr+ISyB7XjSQLjCdjhJfzE+MWV7j8rTTUFqMMaZvtHzJCHDjrKSyxRRvsIJ+2D7H9cLXO8H1T3uB+V6geruuEP9ARrrflBAjV7A9oMaTYAw+s5OdT8o29nJ94P6VC/gtVJxk0qSo10ZDnqBoHEJxVarF3i/yUu5i/3APnHUfwJ1F1Dn0NV+YECdv6nics//T219Vuv2eBs1euz/Sy8gPsx9zw+XR5Rdz67334K670B/vsHBrlYv8POtVQskuV56gTJGt6Dar/Vdt7HvxxR+SuQ+hHj7+fP91g9Z3oOrl3UueoH7PPa9Pt9rDOz39tff/6fVC+gOdOUbI+nW/X3oNDqOP9XzvRtKgnfsw30UTBI8yoPGh7FOJO/ILEEw1h3o0F3ppaWDpuu7qDGOURN7XP6zK8W0J/Ec/uN6AQJ+E37y+SUaCxkLuS70An93Kof9UL1AN4RpVb1Ap3qBm36OhSnKfLzfhpgHiYg2Y0lh6GTOtpzTKBnSskzAzyu9wPvhfIHezxfQiHw+FLHArgWQuEbQC+AO0ws9DnqBsdULDGPVC4y2qSDtKMIU7Vq8vUFvp3e9QLkfl+lRbWj0AphAL6AmLvQCaoGg0QvcH/QC4aAXuFe9QHiuFwgP5wso2z7XC4SzK6/2x/UC1/t1h/7kyuu+46lu2c4XN7A5nfUCw5VeYPi1XsABNx7HcHJcrz7mVi5GHNfPeoHhqBdIVS8QjnqBiPudCwlGA7DhegFzw5xy+eam+pTmMhC+K6/d/RADAeW4K0aSsXK9AM5lD3qBaEA17nu+Ixpw4+6dNinwRC/g7tvP9QLD0e2Z+ah6AQIbduy2GpF40gs0nuDU1QfJ9QKMQZYA9+1WL5AIuD+fKJ8Abi2E4HoBBuf7eoHmwYEVD+cLkBeZPYy3egGMN3qBseoFYrzQC6B7EHQI1R3Sd9/QgCISZMrFCZdand3n+47TLe+vXMZJvOsf9QJTHUQ/pAG3ToxH9zd2/9vZyK/s99M0vny+wOBriROuZUmrF4imF4iNXgAiJtcLwN1WL/C4WIYyl9eL5bMzJfY5L+Xc+Vfn87ofRrhHvQDGi15gP19grAIVP18AwiWTJzUnj4T4RC8QoxEuSQ2XHtBUpin8iMOuF4jHE1Rq0J6gQl+9HJMOIfqh0QtE0wscnZgZPhqFcMNRL0D/lOInvUA67sOtvQz77uARrmmQTnoBWJJavcC+rb4/tY/nb5jbcz7IG7iNq+U11+X1aGN0TYLrBWJWUIxYz10vkNrzBUYdAR02XkeonVnB9jnPp+c8+vps93zhuO53VXyuK8ANAXAvdaEQa+l8vkAt58Zzs+N69PMFNA3/CPRnpt7ZtRoDjV6gBOgF+E6I9ry/s71uWdrzBeCVH5QCwIJnBJa6NhDt+QIzfUvG53xURGmbpGl5V0TNrheI/Ylwqf2YiCe9wOB6AQFKjfM/Jlhf/Y1Kc+ALC3KjF/CmmHMetX3JyH5S0oU6JudKC3/UTNjhChdlhO/L3/QjVV1Qe4iJmjW2s63duOsFXM13oQsy41ouprDrBRJ6gZnR3efcbeTznPupID7n1GCGrR8ElePWc+aXG1TwqIhSuGG7q3caUlOHl3T+6a5B3M9JoN3ZykmADV7mpRynoP2NBLOQMH/3fAH/+6qcL7D7i/dVj93Xv6/YLVhCmVTTFNjfVwXqgNBj+99Xp1qaM2iEz3klvp0vEMdbv/99JVfw8wXiWP6+ok2zdcNWN4oJcobi1RilPN9dRg4s2HdIAQqhk1QQPjb+4rf92v38bzVyvDp+LNpA/huoqe4QMc9q3PuvzjLwBr0hL/xpLS4XIDjUni/w7HyJ5nyB4bPzBdCL+PkCrhdpzxdgAoUPRS8iceZ/cL2IIKb8GF0v0p4v0OpFtJ3x+H1yIR3zPxZbQbkYH86XuLleQIIrvcD5fIEKXOoF+j1p10jQAjVfmqKVQYPWZb/da54AwMsNl3qBL2/9fX2+QGPDG3XgWi8w/mG9QOvc+GQTYS/pDnafe9kxdGa3MT5cO7SevYcdaMs9GHcvu3oJ3a6HvfvCnH8q0xh+rRExk26jBr3RqW3Uy31BWxEIPK8Bz/31fjzaeO6+HXwWnhsn5TGC/qlnpRd8rhe49iP+8tbf/de2/h6fbob8zQ2w/XpOOOfVA+G83O/rgp4LVH5fL3Dt9uxAO+cPxhvCPa4+9Ldlu3PtknAVagn3W9u9ewtfPMTEy31lr3lPPhofnukFSP/K+Niw3YPn56H4kBzKDeGXY+VAoxf49FHD7i/dt0M77Bq9cN+2JOEXjJP3+abnX3ffDt+a86+KFcL3zxf4+rEONPHQ8/C17d6ve/4dwrVdvThh6Hd3p+9/e9iJtT0Pz3t+SbjvGx/c+LUQ7YpwXi5c9zz8Dw+0IP0HVji38c1HLXx5hfuuXqDr2KnujfOye/5+sfPBB/m/t6+9+3HAhyb4udq3/j72dnZyHwfeHZZ9OukFW8HEgJt3YTlfSQ/sHyiUj9K8tCIt+du48HB67unbbQOOr1NiAbRI2REplDfO9Xzw+jovKar5kgl46+77a7ru+DbOXtmMRxvBjKO/8eOaY/Kje0u5GJIbVzQGuYrxQB6gHToeD9t6+e0mf51Xzp51IDbHbdbNvLQcXwLuvo5+kqp9k+jfbovx+jYuSuCv+MijeQlyMUJdB/wcZ/+ekeT+rZe/TiFfw+PpuUK3cbzvb0d7G/YYNY/XKbF/mHNljg27z7kN4vGdbcjYrTsg+ZxnCZnzYiNgPOgcVxsDhCuu2tJofVPh341ivG5Nk8yuRusOSJFOH8bqPLrxZm9mxkIf70cZCNhe+GKN1oGwB2ysE/BwVjQ1nO3kQbhUz5+lq7TQng+ueU44Px+cfjjhlGF+RDfJUs6/470iHHM+lfnAUPRnME1GuCBx+KeXE04Knr4bxWJzPriWd8JhfNe6lO1+EoRjfu/1lX85FtsWmeoz4PMBE8mDJe0rNBaZEHyRSenwRJ3e0wfmXP/HxkhdytE8wDie5hx2Dj7njFq7yDDn9f2dz7m/s6W5W9+d2B7qIb6Qmp5bj5ztjNBwZvuYfB/Dlu30d2d7cLaf59z3ASr828VVtsLZnEf/dtu/D/c5t6/Wbc4hXDrs9+Xn7bKgYOhxhXNS51LXVzj3ZCBPFR/FuJfDhq9wVk57UFe41BtLLPD11J7Bw15cqfmM8rEqt1vruo9E2t/fWbnmoWPYncr+Lsdm0NrzBcCf82ai9n3Bkn/EzBi3ZDFuPsgK5P5snLr+weLGvdHDfBydHeh5pgU3Xt5tRBt3GyE/Vxt6+yD6ImN5mqzKrnK73At5QTOvVjjax0OhEi63by4B+4sVLlW2RwVthbPXrWe2jznaDMaJcgBGrpgjhkrPKbf741CD1czdVZo5P/DKh51yzYH01Ki8Shf+OMdyWIeNw9Wcx3bOM436enWYKPKs08ToZZ1zM155wGzl58a954f3d05qf86bR+3wwULLZeIhHNwAbQh3MedTvJzznNo510XV57w4GABQDs+Bw5ynfc4nyaTGsI/uWNk+HZcMZtBXOAYxHNlOHoSD+F6uLq68PCz5mf6Sq2xPf0ovoJifHy5Xd/9kPyi2TJLwsL8+UN/X/aB63w9KW3i2HX7Pr9N+UPrCiDJ30GY/KFpzf/najkCW4/tBUcttXewH1Z39J2+3ohe42YnhxCT8ytuz70PkfPv93m9AZ6TaAnrpBc7vN39e6QW6547635cS/P715xs86QXwzf5UL/DSC6A+Fr3A213VxeFNIt0wJtm9XhzUh9zfZF/7rp+GohdYwtCZXoBvaf7u0iTqun+oN3v1b7/3aR5u6vGOf7vU7+PU39/lyIK71Ovv4t/+jynH7/q3j7/wbx+f+7ePF/7t/f8d//bxuX97/2v/9q74koytf3v3qX9798y/ffzUv/3W+rcPjX/7EKhbfZ1j9HsBcAdlzQr2hYkk9501kt1LdT2N7np65d+O3+uDH3KIu9+rA4P7s1KXcu7fHi6M8+if/NvHo397EJQ8vnshqP/cTI1/e6zA1Z8xJhzGWvVRz9m8qR7829V8iq1/e/VDdv925jMQmJOxBI2NlFr/dmvA3feY82f+7WV0CdxvvfVvb4f90b+9Hx/mHCC2NoZalwcJ7hIwzgTOXQ3cFZh5qxNVvythFmjPy/kYuPFGHnF4cMaHb4O5SQH6kg/gvs4Yqt8MxtzujW5/F4Tcnh3gXxEcCBfK/cbpsR/NAQwxl3K7f7sE2Td2KEF+5t/u9PHvlSBh3LUAx37UQwUAnFeaV1iNDciabLAxPmE8334hqHBeOeGcJU64ARHN8+f80r/9Yb0SrPFvH8Yr/3ax0fi3j+7fbt9whrN3tK8M2Y07270f8ZHUsRJORgi7BHCIwG00X68yLnu5wKyGo3+7EY4ajEvl7oWrvK2ECUNOuOjHnjLn1e+1tBef+bf7+QTMEcETUk/0g0nQzvibjClqtcsdwpl8xsH8RQHznO5n/3b3snX3bwmSP4Otf7uvp5ZXyrmPf6td2r+iYnvycLaR63Pe+jq7cCodh8RdzEft4cG/He/rfHjOp8+fc+/gBX0ydZvnfD8JIFX/9nT+YPHnfFLg4L+bh32sxtNXIpNpKSSgPf+eL0R3qvY9xbGR2fM9zgS5+rfP5vxv27Frv23DqTLYoT72Z/92gPRr/3aaP3xbQ5KQIxhotPVvh3CX/u3hwb/d/80AEy9YcqVXmzFJA0f/9io4OuhYfPU5znnzBfnUsv3xObd1/Mq/nZbdv90J17D90+f8ZLwqKDBey137twf823kK3L/dhDqYuNQ0MFjP/NsLpeCzc7x8pMIrHlOASKiZAk7Fnx+iu/qMDo5Oao0lxgrjtikT63OOu0c8tJo0yU0WVrPrSlXwzJFgmrXE9/3bPzlv7NacN1acxofiA93deiCcwi7OGwPqBpcWkyPVi397EGL2owTH88aG43ljY3PeWJUx+99XWosGz/ph/xtspLURSAqGh/PG6jYZJdSr9W9/vP4E5A7zj99/AVboOw12Vq0th4ndpve/6hvuP4t/++2ob7ihbxh2fcPwqG8YTvqG4ahvGH6hb+j74PqGKkfow0HfMKAEi8x/PzzVN0CiXmtd6huY/yHs+oZ2/m/1aFK8PzV2cgbtW791B4g54EF7jZ7XoO45T+C+pp5s98O3mu77+9v+7Xb3HlijGrswDtq78f/pfvhcrW/8l/d4//5++A4/N/79/b6/ermrZPdsP/yGAl8adp9zD54POzZaj1/nFTEPmiF55t/+/f3wh7Yf13qDS/92v5c/sh8+wNVMeblHscM3N+lu3RC/f6hAcOMPNxR+afwJ4Qgs+bDIXAgRrNzw5ed8uJpzt/H5lvQefGE/fDJbtOmHt9f211t+fMD+x/vhD7+/YTPIOREu59yv729P7sZbqFlEWzf754R7PoPP9ThfP/fi+cP57Dn/XI8Twjeec4IGePacuzU3/v2N2b1sXWYeb+qbc+79+NUiE5oVzoUXzZx/2TjX58cQXJXHhqe8EZJfJtzzz/Nrrl0T7rkepynn0VZR5SZ/g3A+A+E52y9sf5VwrUzrdwnnTbWE8+trW9KTbMp/zbiPX2v8inAkrz9SwzH48/7t1UdzPPi3j/i3D7t/e3nf1mtQ3zUN5rIp7R3926sr5sD+a/o/rqehHrfL65Qx7G6h1d1Yqu2+zpFTV83Bx/3bj+7G7k116W78rv7t2L2f/NtjsdG7D33c/ds7HmY77fXs/Vluxo1X78948P7khs7+7dWTN5/djetbO82aCIJ/9+NAdv/24ymQxRnP3c4l8K9Zy6Ygoe6glA9vmMLu5Bk1cBtl6Kr3p/s8SbQ1zuXuxlbuyr8dd+N+382knIHAsJ92aUp3n3P82+3GG//2lGJ41DRQzmUFu397/JJ/e2z92/0NrNp1v/Br/3bXAhTjhT48R0P1b4/4t9NBGMHMwGJ//RvKaxd/9+y+zjorvlfRlIMC5HEbYroYD36KcOPeGoxwMds4Va9OfzWroHt1mpete3/uRx9ofks4QN9tyoeEpkJsv90GmLP7WdI1N06Z/Zts/i+EA8gPm2NNqSEcA6Gsq8+579IUd8IxUbBkJ5x2wYe9EdGUt3a1XIg+576QjW6j+rcPNuemzWDeYCek3gnHMGmJmJo5p8tjM+eaGQU8+7er8Wv/dn8P+cy/PdPphu35dHp7u5ZIy1aj8VYnaStcOnuxhnj0b68+20z30TXA96fyOScGEajVbG/26DBekibawLivcGn3b8fdOBe/+nbfmqnx/nz0b0/uTd+8jXO3B3e6da97f9vgew+2q7wla8BTwLuWKljYjdPz46Y5tdG6XVBj3F89Fbt7NxMPphuvTsaN8Uc/fTdOp690LOlBx9KcW1/92914+87WbTwdRKsrYJ3zagNr5Lk1X+H0Nysc/fVXaNPu317PNk6RfkTvB/zz3TJ3tmfWYgYCwtVGMWuu3pTT9HGFaxU8aY4HwvlwpthKlHxIHND7q8CjlzfWWn+cZqz2t1gPcx7bnbkYzidzvldzcmG88fIG9bFq2A762HNpr/YIoNmNjZ43DxjGy4eX3b3vtFmN+5wzgwehTl3hsNvO+d7zqDZ8zmnhYs7JZHoskxqfLRnZH/uzfzvlLvzbNebLazosr1PMzQr3p/3b3995uefnHb9f+7f3ckn8wb+9u/RvLz/3R//27rl/e/fUv/125d9+7wW6Pu/YbGH01/7tj+/3CK9fxxE49Fjk+Uu8h9Lds/d7FP6FE/v9m/7t1/tXvfzbb7dxfBtGCQ5fDch1G4ZHRTtA6C3m4G9et283MYY/dt2/buPPGX9d93+y/X/eNPb/FKsvwv0zn9uB8D/B+Ot6Xa/rdb2u1/XV93tf04++9KPzut1+vt+HMebwJocYdUNId9WPohv9KULQbhq6myrx0Y/KcG5J9aP32992WXPole/ir+q7b+97bZsPMT/DuO+srJETFI7Q+Pa8VlekPxKv7ySQYKWyRY9COLcrlJJGgN4ubPXFltUKVium1Fv12JknbDATvEkIvHNr9aDad+kQAYeDlACvbRVryu+hCkUlKEDH9yp3AfqqID3q3cR4q68yyehR0KfNawPDQOAKJc3X5KjJo26Pcg6QR9DvJnlifAOosyTTNSpJ5tuNj0fj1cbY2FCfZMWCACedmMvBxqONlChcjR9PFqIGc2VUSLtyJuwSIhc75Wkazi0rUA6eoC4q0ORCBknN8fhNavbTS6f9kBPbdSOdJBzGFwnSLu0bAsYr4FogbJAsJqR5V0vRwGRbuwDkdXl/OuzdYdidJbz3uwZMTtdO7XHOx1CADJC0KWY1PGkqRAJ/t3jWnAbySjBUXwECV4xhEmsEDvAYuPHj672j/jX4C5nuxD9/t1iSdRHx9zPOklZHeSGEA8h5b6U4MDBXBJRziY4DMVXCkbSpnZbZt7RScCJv0qAvvLoQr8A/szFlrwvgX35zciwonaGr+1vFWYJi3CVduUq15kvCdQSfPeeXgJEhNM95zr4eNIvM1ZzTt2Zd0/xK0eFIBpriBQXlfM5jqi/6KHyYcx0u3pl1pwfscrFsaFH7EcKZ7fGC1HXnpUHAfe9Ff+9ic17vnjWM4Ei4+nKI9QrAj15R4LQ/l/GvHDPD/AJU0kDEdQa/eM80ETipCbxuZaIJlXcgu42MDSP1vNDL1L5bFPPvJ3HwF0Rq89OH8yR45bT0uaoiywTMrfT6aVPtGzZuPJ2ecwcI/C0eAWs4hpphZzQ0mPtiHBtu3GwYc1x5KbfbGE8AZvz0up+5lcDmXOvOpopcFoxPrlIt69D+cUfSb9dPh78CsFFeJtKqppVvBGvm820u5VbJW7Z1XuVXv2ueoUUtt8wseAC2JkqmZK8LPU9qk82x4DOD6F45UnLm2jjkPJXMuRx2Tsf1TP3l64Sr624D+OPsb193Xi3753lpoAJlonzOH2z4lpe+NNfn/KgbpRUObXe5M80jfkSdeHxWU3kGV+7quh9S+JHUs9R1JjqQjEgnUs+QobI9Hk8BI4/j4HGF8zn358PmXErXV7OFQzPDVHe8g0d8Rq3MeWGNXKXsKti2MefkEpmUCOg1w4V8FSeDh/VKrMCauPOq+di2YnVdm8TyJollTZP3l49SASS+LN/Sg/5kv533t/ddD/pu++3sG93oJ/FJ2efQ6byjAalgherndy1TIkMViAQ+dP0PtlKmAxpjqMq+8e3SFiU/qeW2qgmO3xnlp/37SjrOj22JRoTr6SvX7hPo7Tl0vzw/neu2QxoA1ULvn95G22CNeWFDvOVHPSjzf73fks9/3W+J+ffzrp7OP3rQOv+wxv8qhwDD2Oy3NO77LR3P6n+c/9pO77VcD0yto61qQlvmNs564HvxesCtARsWdFUo2ipDKzAASJajpB9ln5YPUCCXlnqNU3Bq4agNdCmjxzx5KUVxYDgCnd9VG/h1KUzk+r7xmufAdwRLT4FfCxla4M8bb220wOjADapcznnfnJTVzrkHhjZz9Di6LeDNX82gz/RDU8Ml8Kl29lqe5yZbFd7X5cQkvyriBAjt4TmOPjbUznk4AOGLcx5OwKPx1kZbrRXrtDY+PZxhdKgS7tfP+WH2YSJ5/VOWjC0ZuFrAm7rmlc/5p0vGV6e2uQ4d/H4/2tv1u3lK0RbwvOdHqjhLWsJdz/n4O6eBPB/E8HyFu2a7e5y0qqoduGP8G0MSHmfwk2eQYDjkPz5qv7+2e49+84OlMR4Im348m/MwXtvY8y7m3Ke9HcTnPXfjTf4XV7jQkOHaOEUep/tbPf8a2+8Xn+fEntzVc8I1eb+cqGt15xd7Hj55zkl/cdh/7zkPz57z8Uv/knlOuOcL2TXQ2vjkU43Ip8bHC5HzF9n++ESdmql533xfzH6uaD/fyznA/ppOft32/Vx9n1bKkcf7O9+ntdMytRwzMZaXafv3yCPlyAM87+cqaD17hDzT6A3N3p7Fhu/nCoDetOpQj+/v0jBebqmabD/XvhuP+7mOp/1cuV03buUe93MdHjeTTbvx8cq4f4NOcLzddnvNlAn2d5NJg2gA7UU/MCld7ueKCMePpdi/zQ/NLrMkq+gtYcT33eSmfNdG38/Vt91rzkdwIeZhP1deDjO/vPT1YWdqH/Za9WGX+C/3cw3p8zm/3DP2ej/XkCR4tvWltlzHhAAjZT4eBzFnwNvVPsHS1NV+rqUuQD1gq+T7wTukm/1ck/HPHrAQ9/OOeoazdsvfMGnS5jYY4WIhEr0M19/xhkw5gqoTs8PkvZwTjvmtj/2RV2N4sp8rxn3e0g6cbaTzfq7JyvlpIGnaCTeORiSx1y4yQ7vIjFf7oD5/zisTW8KFG6T+xn6ulXBjs/l1LHwmXeZpF55xQ15uV1TyRF32oyX1+Hw/1zJl7hlBwMWq8rjTs3somFi7Wa8y/Bvr0Pl+rgoc93PVa+KXOQn4CWr1gC3aSyZmK3wTIFXCmcLf5wO20wVJHkk9wfYxtPu50snYKNWMcHU/V3sUqm5qPkjICTBOYHntWUTte5ZqkueDwrVcFXHWtT3Vci7P6wuLbQFwG+3eniHU/Vwp58b9HYiOXC5KcQH9JLRGG5gOm8maDYxbBynS7u1Z93N15b4LEwFKudrAZIK83OzbbHM+MfbNaVI+tWctc061H827nON5R1Jey0Utp9brjtW0d3XekZ/u5Yr3J/u5smbNrSrSNY6Ue7afKx2uetAZ45eEy064x38z5OzAYCw5nXd0cVqO6yh9P1cmijlv9pmnPUwehaK+BfQI0Ozhm5M/aolgl2RS2N/sl7W9Gg8QrukHeTbxweq68WY/V5T1jJrfZD7sTD9mbadVil/v53pSPzca4Kk50a3O+f65lVySmXBEeNzP1Va49OTN5ZRDq4T1GWxOdMtV8f543pG/uQx681HLxaz5f1YP+vl+r+15GvVN3eA+lppz2O+1f7rfq0T603kavT4x1cdyqFCviDQXgNhA1Pd7pcF2v1erNZQdSet+r0BDgeQKNNhJgcv9XrnQgfIj0ed60M83de2eQVx/YL/X7g/v9/p/xtf1ul7Xf8QV/gWu1/W6Xtfrel2v63W99JA/f+b8sxtS/jnecx6zXEGDt3ufc9ehL4jZLoDhntOoWV3qjkDK373eh0FMhqx2TzaGlDI57TXuRqLb+73rDePp0fj4zDh3xZXA/1uv/5+9t4aTZWnyxXrPdFVmZEZS9TxmZjZF3/fELHN9Pes5YjliWeuLyf/Jt561zxGz5D1mhmXevYr4ZxR0dc+dM3P6nL373YrpygrKjCyciKysik+CMbLuScHS7pgLef+Y57w/w9572vlknwDbGwJ5v/WHgWOuNTGsXdlL6EG+t+WGLDUOeN9NJhVcv3l7uOP+IO/PRFT7NHAwnnCQ01bAtcDG1x7zVD8JfMq2bfn1k9oEZYMfcMAB33wo3yLjB3wD4G3fWxnO+N5Kn0q+jIJ+i7+38mRwmuE7f/47WP+rf72v/7m/q2up9MN9/QM/2tdf/Zjp/WRf/+mfMf2fN/3v+27Xf8La/3Ppu2L7gAMOOOCAAw444IADDjjgi8IRhxxwwHEP+MWof8ABBxxwwAEHHPCVgd/gxz459sG3FA444IADDjjGZ7B82LyT/mu/Rf7Pr7L177P1t9E3ZM6cBXgcPVHMfP4wji7mpMmehE5+8KMXJXxeO4je0/l8djm68yhVsrxPMngnuoOKo/wUiUF+ZyIfo/44Bs4ROX1DijHls+8iFg7y/STBRSFkXsb97LyU9sdRf057MDoSZPTOkT87LYUppdjuabFd8IJAWUQkHCGdD6N9LtpftY98VV76ju8s9GzWzFJG3qQ5oU0uJU4moE2SJUYhnJICayFY5pzwwZpWSaQlRM4olFeqFLWKabTCjGKTMQWfHBI0BVmSLkVMl+xUj1hNCtO+RZS0ZeaqdWsRslV8zkaW5yaCXEVQShTmlHLPgvWy8SI20HxOpEa0mhpPRfSsQ4FjUruloAercWD4GD++99GNp1SlEEwamiZ8NURM1xp05wStlqv0NOXcGjGrcq4N1Uq5TKes1UTQRKAFJySaP13EkGaEyKeasmCpIHd8kxq1Xk4iqGqtSZHbVKaMnB6nJsYLelqD2lBpy6U1tVEL7IoN4Skzl3qCAB1qMaep5So1tIIZL0WspXI65SZ2q/RWjbdTQlHySbMNSDGVUzsJvGE+5dMwEMnpH7SgIGCf4hqcC8E5HyIKfHcQxQiBd1GLICxKUeQpCp6TaGTVSxn50KRIWRsVQVi+6WYfbEvdhvdRC23crgFWXnSeQk9SFgPHLPyEiyM6chxEGDlwUH6vljPs6rmYRJ8r4xRRnhjPbN/UioXx1ZzZeC/6dwbnCzBGscvRORLLyhNhLM4E+BIjB7XLkUOJ1vy85SmlVoTiMncoowdJRLVxjpWp76tgOYr6N3R0RVEFgVNGe8Kx73aRbUdJEVsorUMs1fTiiELizE9cuOG9i35Vpwi90qTGCUnnThTmQ4Fi+XBVg0DsFtaO98/spHkn4gDkwFGUlanWcHnqr5QYhafQ9PA2Zsu0VWOKegHWdsqC8QnwlvcJe3bF8zh4QYIgoxfAOUgCOHkUCdFbGsYV0QJn1DxdeG//bLYH68to/XEm9zf9gX1trJTzMKghbbbW8zDORM7OOsB6TRvBuCIEmRNFlkpQikmI1pbpzLmcptDxrJd4jeAKlLoSa6qg2vSuc5pAnPTuUE8zjLZtzrbV2/aSbW+w7Y2mf3N8dG6z/FCM+hvlJ/Cxx294ih18vIKwonvBw8C/KPkCxt0DbBwQ3gpvv7+MAoSPKA2W5SXIHwnh5dc/dyVc3GEAQoDCdQyJIvIXQdiNJvoAjYwL2f61ZiUT2kl2I1VlqAiZgbGyhRQ8C94v9wddz0+6va5vjtdLehRUCRLCCQESSW8UBSjhZsKZCgX5dQIQgiGKkhFGatF/AjPXCLAXAgvgQds7jEyZ6DKqI+7owvr/hOJEuuXOtyyFDzzR6PVvIh99dEOpmqewxIlTTo1Lkz0VQiz1/PTkBheqcy5Q5DoOA4moasQwOqrRPY0SsVSmsx+E3sQv5g8DCYKfFbH4Be5uRvzCgswi9vY12qRITvJ7JX7BSSyl4Gdw8LPEPSPObe3DLAJHWYYE+rj4hVkqxOv4xT4QLPr3k8SSRi2BWYtoaSTVVSgi6KFLRcFJBEl9+asQYk0dWoqQySKF7Xf5akX8guhhiV8yBEK2qlgRWWvFMnFdLtqhGkVvEsGakK5dbuOXWpb4BXZTiP3yhK+19ipnKUyArgkJu4gtahHOBTnIqgoq/H7V63bRA4tfuLXACZ9YfRZBmy4WKeSm3b1MyKenydhUYNEDNrCiBtK3dWv19JxKfW5TfT6dSr08n7jk6ZJqedYCiRhPzxq/nNR4CazGtc+5lul5sVGj8tCDIu1pij0RpG68SZGnpjUuSJHHuSBumk7q1ZxE+fnU2rMaLxfpkPBylaJMYrdJcXnj/fts8YsVdn5u45cwSqEQUxBBgmD0KtXCPgwcUjS3WAvFcEdG0QVLYScVawgxbkKIMNft8Uvwy8fccXXgSh6hTCKFQGpkFaYlbsrAMsfElpLY/H4TwOGGT34dvwTrH+IXax4RlDUvpQqsQ17jF7Mb8i5y03DAogdVySoQLKhZnNGxsO0rq5EhSPBorRuohp7mSYpaRLBsh9Uo2A6LX1Ip4BWujAtBLwmLHlj1ckkn7djJ4pcleIJeUhEF4cV5T+aE6FskzYxjmCRAkJtYa7g35PlLxfiY+1SLRtRC5or+RY41W15Tbu+JXwRoDls2iNNiG7+ExX1YEOorZkEeGr8gzjyPPX7BmWXxSwCxoMy1uJXYxC+dQK96ZBM6mnCXFXwhmsU1iDE3RK5TLgJVoE2nEwjLJPlZ4heBUQDFxx+/GCm+ASg+DEI84ItA+LLw+PgF/rmFLI7wBV4lvCy4csf5XsNceCYix54TRLgJCQlARAz4lmLjF7noH5Qsx0Q2tBRdhIAOaC4Ja4A0ucKjrudB4xcLQoZhRgWGcViJmb8Qu/jFwEHFSEMsmFlx+dsCBDewBjYW0DwqfvEptBiL+6BxBNV0fhpGH59DD9em4tS9yc9hdCM530iD1+EcuV1yDY6P+OWIX4745YhfjvjliF+O+OVbGL88fSBy9DXgr2Gt+ko+idf9z8P/PPzPVNRZ4RbJhUDcwvgk+ym0EkbyFFvxZ/c0UK1h8Op3pjj4p6chJ3ZBLOQb/zPe+p9wMpf5PxxzvhJl8z/ho974n7im+s/8T5135ARfOOPG/3TwP6Hzqv9p/q1Tl5YIBaYVSBHt/7tgUQr7LydrTougS2mZN+Htv1zJJAXu+vAcqwhSNidUCuX1fzlXNiLPPm7OQjITTC4zACJLNQi8mOzSiPk/aoM4lmI+ZKpVWocf2Fq3y1yKKldM/VHBZTbOMB5hV4q0GLftjWl2TK97xWiPU7LthV6IYiipj4absTYKu202PuGR+CSmc0avUAhPaoigUox9Ck53l4Wj9+06NbVRgs3/qU14F3VlT8+sz95SrvADn1vVW3tRvzWK4MIltwY/sDbxRItO0NEDJXa1vchVu3tpWVVm462GbqNMU5ZG1TE9oVdNClGudUJyILUxTXA94YkWaf2iPWucpUdqt+lGi6CcNInQ6fR2/1NDLvifjhRiRIHTtbtns//JpAUE8D8hFR5HK8wTZcWWfJApQwBemMMgSHGq05ULyHzlf9p0m57k577/mSIEV3Nacj95cCHQfvJRLAkC3Y5wYzwyw8Y9/9Nt/c9NZAhvklf/E82z8LMZhze5CLRnvp/qwToOAXYYyLlGT/5XVWqCxf/knCr8QJz+S5a7WjIXRhRYI7NKY+l3iVS49QSV3XhYjc8h6M4rhl0WYb3uVRLYZDDNsIseoPmcSmowDrsx8ZI6j1v6lPk/AiHAz1Nk9j/jgnhF9BB2JDAvc20W5HHzfzb+J8eSl/k/5n8GReFyzny20B987JsNUat5pUmgrQSmKnYuJj4uhFCX2f+cLhP8T6SJqxIKP3z+zyiFlvhXObzJ/2TAmQ0GXiC+Az79+LlRJ/gSZvhi9kOAi3o2l01Q+KtrnOBWIiXXvdg+Q0MIZSeBmimAj5yHFQSnDAr8gnGQ1rSCsgUvLTJwIapIegVhCzzMXx3gr2LbOmow8wGCAnvBX71LGLYQtCH2/urrxKP8VcpcUkhOL0fnWf3VYaTCiJpczu48nkcv9DiIIJOTbR/OIehxC6PHfMvCNXj11mQ9nKUm1ey1uVC1/tPga6HByalUUxjd+emcEjuS9vh2vvqL/mrOgoR85a+6CDeJswcS862/er7nr3oniDPO7Xjprb/qvsZfddf+Kn+dv5pe8lfztb+asw2+2Dhj563+asr3/dV811/lPmW8VCi/5K9mjFaCVGexyvq0+HmlCzCLNetk72vjMTCM82o8m79q87dT3fUq2n/3jb9a4X3CHVaPuYFEA2a89Lt29Rt/NZaaMbqY81TRXbiMqFZ08FFbep63o28ghixPWnR/NWfxa1OV5jEWoWOcJxFMJ65ZXUZRrlM7NS1O5ixHG+iFVO9PJ9iw7ZVC7apvWieKNpDaYk7Preh0eBGeLjHlpr1/Vqe1Xeo0nZ5F2E7qJ2ujGLG9PBcVtFP9bP4qXfurbuOv0uKvmht0469SUIEVKXJc/VXa+6t0668KvO6vCnadEnrvr0KaV391Z5w+yl81AQoI4o2/you/qp763PHX/VXk5AZp23Hlr5Zbf7XkJIKdv5pnf9VSrC7+arn1V9mM89Zf5Wt/tTCnG39Vu3Xtr1oP0LxQqc7+qvnTEAijvs1fRS5W/b/ap1PiACyIDZJFQ/bjpbfz1cPjxksJrw+YvwrnVYj746WlmH4n0OPZXzW++aszqte88BkEQmtDc8nb8dKC4Lzn1b3I9W/7v+oznekb468+BcAZpSEG9A54xPGDv+oDwUkVlOawQUhnJDPH9Sjiou5kBJlTEmJ9qSAXkBFUabmY9yoEjglUExSrQAABWRPAE0oEdU2lMXGGZoO0kwWEAM4ckYmqkdYM1E/X4GyfeNtHZPss2H6Ltt/Y9luyenn1d908+AoYxisyhJUBViB3JRfYMAIYOzkYNMsBi9zosJUDTAoasKeDkdeM8HWMaOTLjKsG8SDvdA3e9jnZfg+236Ptd7b9nmy/Z9vvxerXXXsjJc4xJH8eNIjgqP63oxy7/52SG0YR5ehwXabufz8RsdQLo9Pop+ZUg3MhhVJJzn+pXxlebZz975L84KSdyjTqeLFUwXhxeYP/XeB/pxv/u3y9/z287H8rgt99/3v8uPFivx0vDvC/A/M99xQ39Z2AlketPijGsz+K1x85Z3M253HbXDj3Ad0yna+GbBnDGiGuI7OcEgob15HCBCFBCp83Q7pOGUCBcFdMT/BbhTfPG8C7nCJoz8PGuBg1f3Txv3n2vzG9Imo5C1JCEW2+Qi1io+bFb0Xz7dr/bjFBUDDI26at/80QPF+SCCqx9XQS+xXTEk6lTn07SszcN7CVVp6f1dApYYv0rU487J1keVY/GK9sTiJ9nmC3PlcRXtrlNBuv3bj637qvLjZejDkRnNqUm7RTdF7CtldqXHds1dBAbKDuSeMNew9MqedUNCoQvYsYlw49q//9/JjxYv82/zvc9b/51v9OiebxYhT58f63eYiv+N/p6/zv9Kbx4siv+9/vHy9O8L/Tff+75u7f8t3x4lrN/+ZlvDh1/7t9rP+dendvxovz1XhxuR4vbuZ/K6l69cr/bp/sf9PL/nd8xf+OD/S/cew+0f+uVfkLoae/OWkg4ma82PgYLwZ/GS/OxRyzX3bq3rcQU3v+Zd8c/5sXeOK4EucY+D0QPw88Zn+Zf6/evfn3o/n38sfhrD7G6u7bxJf5JUEl10kr5t8rAQAplJG45SqS5QfXYdbMJWdQEMDhFxKyolSpwWQFUONK1tI6mYolQ2wmxYnWav0M/r17wb+/z3jNv6db//6W4WklAbM8zLClXmaEFxnxVYcfjPAiw9r4zP79k9eTLaahn5qJ9Dp3soZDLEL49z6Zf8/Beyf+vccAG41u+73EsMEFPb6XeMABBxxwwAEHHN9LtKXK8g9+C/yfX2/rP2zrf+lb+N3Ec2hJ/gSeRk+RCtc2YgQjxNYcgsMkcj8O7uwGnxuRJ40fa+Pg/Fm4gkUKIw0ut5xCOfunIbeWYxnD6Evb2pvHy6WpPlQWBHGBBO8c/DAmlpITJEVBMF6ufHDwfcUQFUn77ys+ze/32RC480Cc4FeD4kTyE74jxRcdKYWUZda5HS+/Go/0gdJ+vHz0UoS4GS8nEfh74+Xpar5KbnWZX52W+dU2Xl5yafsx+bidMhLXmSFoJbIU43a+io2XYzwaw92KXY+Xtwl213HrVFIT03U6vWS8jItxL3SKy2ib6u3mq9S4mV+dWjekdpvwSwtxO1+lYMIyuoZdMk9xNkHKedLuotE2f1+xtlPWU26erzKhKYywP2eVSrXnKhgmM150vPzZxsu1PRtN1/HtS9XJLJONl+NQwLioXFqy+Sq1dzcw5sRUdHdSwTruP7U8iaBIY7ChKs+npL3EdJgqdp67oJaTFtOpXkTQpnfOVxn1/Bxxfi7j5eMynDw6TzZeTlKM8/xq2s1X8WQYo4jM9k0+bY+3gpiTSvfzVVYVkOv7fWI72sdH3d3xcqsW5uHpZX51LhCss1liipkheNG4bNtuvJz5Zr6Kj2AxeoBqIBVLaF6pvAiS6sFuZu3BMmR9/Wwhp7UG2mMbBy/WlG2H2uBihuzxg+mJVXuzMUY0us4v4coYPbs+Hv1QqKGtjXncP7OW0FtnuaM97cHSvGCR1WquJXFOFUcfeqqigBneld8zXm7TVDweo+jzWi+ciHNQj4KeoDg1lY3d5oVh3Q0sdM7KxzZ+2ng5/l8Mffy+D4ySMDqCFS6YGXHziL4hIZKNnc7II+YLS3f0R+TFUAyC6Pkb4plwkjF7XIyBk5uRReQ4hpSiItyR2+e983ilPagg+c0oeRqBCEqGAoDcoIYEgVdR68Ng+2S0/eKsX976SaYXbuYTBUHmyScbdPSGJF4faiQgzInzgiY8g+5I2aILImgEKkR5Z3+fMP8ZMIzL1JABXKAjeABlGQrkFkVp6Cvwvv5ivnxIBmeitMAQNgSnDcT0mYC/Bh73/AP7Vz1bT3R2o7qeigqoi+hpGQaP9nqoLpHjSoKKNr9JCRaQikYC+mlnBCcoQ4b7ME5Tw1NeycQgcZcTEpC1IYVOZVNVNGUj0RLIz/H8w/ub5x8E8i7DzeSLDGttnZHkTW4MCkaYXMCvwpenM93TCHuNHUPK8KaHKlujX+L5BxwAjSPOg3pLxCXo7cQTJcUwLSgmPAcZnYs5OjcKcww5U3/RItbovTDd2XEI8qMwjBS46Pnind/aO8eq8WBt7ezEQqhcm8O381mwkRyFoA756Ab5c0Gk5MlrGNOcwzQoKs33KRgfXMkplSGcn8bWSmouupHq7no8vz0eHD5TPOhu40H/Sjw4nK/iQbJ40N41NK/zJh4cb+PBtMSDZRsP5nr1vq3NnyoiLe3+KwTxJh6UXy5LPMi38WCpWrco1qRoiKMqwr45HrRAR+OjgolGLwajauNePFhv40FtlEtZ4kHEUVWbn3Lex4NVBZc2x4M5r6+8Cm96FgvtOh5s/X1bFMv7tqUL8PastIfv2ffvvajeBe+yVS0Z3+A36eVSJ5FeZBLTCccjoD3mUnPJFykkdJvjwZO901vbSW1MMN43AbOrlPdc2gU2WsMXXVKWYFTYp5MIJwies/Yv16zzpzQePJXT5fHxoJvjwbjGg+5+PBiv48Gc4DDdCGLibTzoYGOdihWXeND6oqykhRq3eFCk4U48mJKSPZDSJZvdJR5kiwfzeH8eWOw2EPF9bTwI42sUuGL2+nrk23iQRaDSdHdfMadNDRTKKpvt2MRqnCFd48GMzdLF4kG27bVWMhddl/qS8bTGgzTbyMK/7VWarcWZtHgQeQPU0jYeFCnmBKWcavrUeDBaPDh79sTX8aDQKXkPOqVlHklQLH2+eNBv4sEFcV5XFKOS6jgu358xRLDHxYN6Kqt1T4K4QGcxOU8iDiGF+XsUgoiy8AkiIQOnjlAKt/8ft/HgqAjQcfOm5i26cQk3qCEfhX6+eHCZtLZBFySlDRoUSWkejomc7ITuvFLmeLA8Kh4U0H03MwUdjSfQeXfiQfexoaF7RDxIvixw9pTyCoOnvIG4YEZ+0+Hh8ZHFk+TlZ/GkoAYgEWHY21WO5gASIPU2JEM2B5DJSEjmADIYrlKLJ0Hjzr7gRsaZzGmeuWmgwi0JYqazkYrq78H762kTT3q/nT4Has/Yz6e7z1iUX2YY+TJjRwZjvAgh3LJ2eLghV45NpdsyQH32eJLwYjRrPKmDHTEgnhQ0hFTDOCqTOCc3jqLgYg6uB5QhlUBeJ9iGLIgfR2kBAyOBaBgQTwp457b2BrbXsNrZiS610JpeME4sl+YoxMBZY0x9v0YEtY6Bggsx1qaX0uAGX5v6BqN2I3Pg6OL5/MG1Uoovox9oH0+6TTyJMFJKiyfjbTzJm3gygmPfb3pXPOl2zxcfHU/ef75I958vAtu8j1P1uLer54vb93HuxJPl6pX0bTzZYrp5vpiW54s18DZyK1lfwcx1iSdFr0tzyacKwbB7GSjG8lI82V54vsiwVjJswG7g5aNLqdRJGxVBrhOkiP+yrubni1IjSjF/gbO15UkeajQ0pR/fnAXc0F5DLjR8GQX50TRy66/dCEfjyZPFeqlCivfhqwSbF5EgmCULZgvelq+q0q7jyaLGm5QiEOVm8aQUyhNDFTZOPX5OuYh2nfAR0UtP3ZabhLB4KR6CcnnY88Vw5/kiv/58Md57vpgWQZdanCOC8X48yTfxpIV0nD4unkQ4uYsn+WviSfdKPJlu40la40l+PZ5c4rDX4sl0XaP39F48GbUVCFBNOLt4stYYr+LJlFn5+eV4Mr8aT/JNPMm8jSfT1fPFBBW2eNLe4HnX+zj7eNJ5Wp4UMeMEVQT/IiyexBFb40kgD48n/fb54uvx5PJY8fPEk57I9XiSguBnsdEHVaPuHb2sdB0FGYiEj3iyH1kRRUX46+NJ3eIFBTY//yIBYc3o9gNAghlqSFhQUAs3zCh98vPFTRCJ7R0HRW1EqotTmtFtEJnzBg3QE6SUEJZX2KMhuS5oKfWd/e17EmCIoTO+8LzfoH0liKHAjHuLGgL0k+PJp5sPGxj6eCDAJ48vDH4kvPi0vEoXBUAIV4EVXQKlheCUU0ftIbISwu2UVJ3Pg6YEgyilv++kCD5oEJIKqoCQWqPkJpgACAF8yeBh788JDALjAu5FuPO93l8py6+QRXNP/3JZfrUsv0yWXyPLs+Xfvsjy62SZZNE5l02W32CxyW+0WOU3Wezymy2W+S3W199qff9tti2/3bbtd9i2/k7b9t9l++J32/74PbY/fq/tj99n++P32/74A9b/P3gnPir4krXeti0+UmefruKjkt2oXC9S3y+6mDLio/NAHIi8yJ9GPBtW9uADXuxlf7yTtIXjnaQDDjjggAMOOMDeRzJfdvUR/0lZ/rtvgf/zGpy+x2HM09QAZ7x6VBrmmo0+amw0uOE8hqw8zeAVUm0Nzrd3oVQmUqd7iCXnNAzu6eylenIujGMQrIaYgyDX+eJF0fWfR+YSQaT0M9J/FCLFoEgMgm9F4ASviOpsx0Nuv1+0jga+8LrCy98P5dv3MWwU7c78mwTpizZuv9TJCcUIwfZ9DJtXcztvJWVdsglMz8YZU3rROG+Nb79fxHe/H7qdf2N6aP6FeSupoFf78VJe5tDc1sgFxW47xErZzG+BSTSvUPHaBQSLFKOVEL40Xprz7XaUl7bDrKGuYcv7GGpptYueCtSSy9vHSx/z/gMrQo8Ynzyv44chRAEb8Fqnctwwxpl8keFA+kDBZlaDoQ2YQvKLeqeNEQTsozZdTpBH+/yNGeg1UlBY5RmMjTzlCFwpyDMYKjW5MIDPcmOYGHT+zM+H1/Fh7+1+6L2Ugi/zcZEFjomjIlF+vBXh3I8duR0fXsYvty9FGAp8NPEWfXGk0hui6C0QLei7xwPtfZl5xtGg6EyMKyHogoeZjzFEoN7OFON3AmwIViJAYlwI2Lj9MgNzPmlWPD7s/YinXf6vBT46f8Zy24jRUIypr4QI+PoCXghObKhdhVuCVjTnK2K55jDyHo2tRMdSEbQW4Sfjl0eNn744Hu9eGo8HvvD8DvWfezx+fv9lM8Id5ru4kQFkhJsApM8eikYuBwdI3/OchSQhAfN/4GBHpZMhmqzkTGGVZZAmyyoNsbcJwBGdZfYQBTIc1dJWmf4e/X3f9SrfwHjL3L8Hs5+q9CrT71khUNgxA5hmwhgGV3bBlQL4XvNl5sy41bxhAr3R/FhmuK0e7jFn9uvWw43m5rwnWaKdA2znRLLzItt5Uey8qHZeNDsvJjsvLtbe8+33AwlwJoOB3g1e4AH5ZvQmMpIL3h5cafQxX+PKSsJyBAALVzFmENnFDcjJeQrGUmaeQw0j4XaWmbVOMMxghZlRZp84bDJZltrzLRpd5ScAluVgrLmANTMUKv6UJZxkd3WwA3NWqKABsbOsFphwoU1sq/nhnNFgKceqGHBOuRtauKcOZMcg2DGJdozYjlmyY5jtOBY7jtWOY7N2pmX+guXdXMF9LXzPP49LloVT4hMfmAUj8U18iKnW4M5PgyONm8idoZBTpFHfj1Ms4LW3IBgDpcQxcyQvdaIoZMwL2tqjOo8/DF7P6dZqxVPgkItgzp2lkao8dxaN0qobpWGV21t2T+egUV0Yxqcnn0orcfRiObdS2AciLi+MP9iQwi3ibfwh2mgDBg/AD+DA36Zwd/zhCeMPqj2iijawf//Hb9//WQVdinYhXcJakBwtvQenWWBSeATKT+PtEEC8HX8IYZmvNQu61HxeCFANespTsDlhi11IE4yrNN8ajzvjwXuzocZXwWrcrKHjqgHMjAuV116h6EE5vzSFLW7ma1nBSw2zETZNJWzHOv0Nykmg4IaIA7CRWqbrXJbjwShWFZDz9jLagyDf6ZVJYaNjnBTsCxJzh1IGBrso3zf+gClC98cfNoibA4UF0cJOTiU//fsL1g2/RB7Dq4xRyG08owyhF0ZkIfYDEjuGt4DRRlOSMWjNHt1JkzOnhbGMUIDYjkCA3o5AQLYdgYBwOwJhUqNSziY1zjdq/CG+MP7AXzf+MFzFax31hgIWBOMPr8yfAg9gvJdHJR4//jCMK7FBd4ShNv5gxOvjD+uJA+LF8Yfw4PGHcx9/0OL8KeMPtB1/uCXujj+A8B8z/nBF5BwWNJUNIaCYoaWsxOPyg29HGvboHoz3Kvgrws/Iij5g/METrTPsrscfRGD79nrA4ZrkecBBFxtwAMkLuY4xlAwSMqH34w9lloHYDjhoIGLk8rVysyeoEHVDIhr5kuMPrzOdsfybxx/suxw3imBuSCjumYFeHmrY6i1Ab2XeH6n4qKEGkuL1AQRjAl5vcyW+/PhD3MA5xGsyxG82hNfgs7yvKX/mbEXmeXzE93uQOtJy1RHAnCsBvEQi5Pp6ZNq+v2nu0ZoTwUY6wVpzJvQ7irAQxMBhR44601Idq1YLdJKAEj2DL+yBg2xoGPlA00ogBZooNftE2jyluFlu7qQVhJA/XUu9PA+Q9ORoxRIIK0vIVoTLmTM6mPuYiVTuG6btLEnVlFVLbwmC2j7X+Ii4Bfv5yvL3bR4fSTY+MlBAMsoSdJJyz0XrhqfBBy4lBHcGKkAOYykpcRR0GIkzc4C7i8f3Qf/P97PxZnwE8J/+P9/B+vv/dF//ir/Y1z/9V43/t/v6n/u7WP+H/+KPmPzH+/qP/1TnX37O5B++i/Ufct/9r/8rhd8Jvuyd3fr32vr39/Wf/P73rf+5P9vX//Ff6es/9jf7+jt/v6//0x/u6/ijff3Vj/X1v/0Tff2nf8ba+Xnb/u9b+t/5/0fn/8D/19f/7l9d2unb9yd+sK//+3/kBPgLtv6hf+R0vv0gMxaDX2/nLi8cO5d3vOctbVBs/SObeUTBlq8Etvgz2rjFf/jO8hO2/KwsuBfvFrYlWzuvtbGN3Qcs6z3f23b8JdHbL39Dlr8jy49YWz8jy09hAb5bPm5bsLzQl2Lb8tJi7SzLaQe2r17flteXu/Z/zGQ/tbf9Qj/U3nb5IbTxcf34aWzj7Xb8tdcX21ZbXt8W258v79tRlnv9+FvW/t9bltXm7bY/YFu+hdfLuFv8Zpue33i9nO9tyxe8Xj7cXvtY4Me/4Xq5d/19sLZ+KVwvP2Ltoc0Xlp950PWyb3ff5/PufAjLsl4vP/FCO79gy/7e97mul9e25b3Xy9LWl9qWL3C93N+m43p5bVu2c+afdueA25wHZEuwJdrCtiRbsi3FlmpL2yyTLZfN8mxx1C+3+OpXml/6cv/WProNPdhytuUJy8vbRpvt4c02lE2/p5f7uED3x//m4ocva0uSUn5H5/jd8kcA/9/ix+/X/60co3n5L2T59zfLv7mcV7/F4prfbut/eBuvWH8ARntb1++ct/vqjcs47+u3L+jLxy7ys+U/tOV//KPvXb7Z22vbaMsjthd9f+eCbX1nXfT79eXh23v6xYPvvn95//a+FHv8xJ3/g+F0H750G/fhvp/x13b/319rgzbnIC3Ldr7AxZHzkfj8fZcRaYrStIAfJyTDyBONk6gJOjnhOecoNu+Fp0NjLYSJyTviKZWppBhimTJa0I/vrs+LMV7cicG5FfkEGLzviKfQEUfhIQ06oh1ywAGvn4chrMgngJurE3FHAsfHNMiGhMinAw744if27nymwI9pMLI1yPRqrQMOOOCAAw444IADDjjggAMOOOCAAw444PX3w87jeK+isN1Lgvs1hE30iuCAAz7tex5PH9zMG8c94twe8X6PvHgqWvtPowC0ncAe8Z5oi3jyPgS0b0gIRIoIAPnU7T1fv10N49tXnbH9YEC+04iR+R6jN9fJW0ZC51dGEgY2bccgmslbRp6rxC0DrF0uEZNfMaBQZgYLQKGcZoBC+hLvX+OVmvHsXNSeB0FCCIKPSgoEJBHmSDRSABIcBJxYOSFwSmMgQYS1e/96c3xDCED6fh/Bo5lLAgvqFRUEIIYMtVeVgQo3RGAENATIFbrqp7yvKjBqf8dBVgAKwY0g7DoA0zblREpIAbscl1NRiKR1sRE8X0TEiXMnCFlDlEhJlXC8pMjCx+tadrpsTgVOiQXPD8uPj3w5snFSGIbiY/+/+lfAvRH2588gQDGGDm4UMHwhaaWdB2HgnRQUvsHw+PcdkU3XERGzfWQFiCdhChWFETiAGQknpyxCRVYRNImARQERYCESdrSrTUXaAmkVKLGWylqzHIbAIqQIlaAsLILjD2yoBjQc0TeVeIJACtSDUlRFpVBVMFOHTBhBYaZBENZmG9W6HLQxgZFJYQTIyoFmhC30Hw0Q2BAaGwSotTcUrDW0IGDmjVo4UKEv9/7wMDbfs5ANH9qZBudjqguM5zqEwYVcE9XonadUnfDceRQ9P1bn5fyiRL6SH0fBYqx62QmWUu2fSUi76/fR86ncfvqTp09q0Pm5QX/Mpzrgreehf9A0vKU6UTQkhoc06KMhFOLpgANeux/uz59HndgxzA3GxzQYoiERnAMOOOCAAw444IADDjjggAMOOOCAAw444DPNp9KHx28SOPfCiPkIwQEHPGA+1Ycn5941n4oMCeGV+VTDsJlPRbRFvMCCoCGiPfLo+VRP43gzOeo1hreUMLfTp4R+fT5VemE+1T0GyJcZQloFMMDaM+YKOb/E6CQYM4DxZedTYY/Sbj4VEAKycmw+FUflgDmijiDb+TC6yPlmWTJFw6ZW7VCIb1Ege7QjNrlhgxLtuO+fTzVaf4lGTE7pLUchFJElhHjymzleJxL2QqRE65mZN4RdO4omI0RmZ1LKdh5lIXK+OgvtZClb4lH5GT70+8F4U3zs/1d6MPjPBA+bfybgPacMGBUCZQM3DkpyMnAOx3slvV+pxBxC2pFXwIvUyFt4Xf5G5cd/zx5X+jplUhZLKGQMoWPgGFN0ztjB9KKwOwtqHRjVSSEAZvbMiTNHYGUqGDet07MUApqUAja3mqpsDa7cJHxVBJdNU3doCLytbIm+2OgIBAwGagyIEnSNa7pWH5Vss1WTQYNjK1ixBmZrsJOSqgQzzzAOReBW284EdCGtPfhC87s+DM8uOB9iPH94HvzoKIRngQvADZcxOIqpRX8JTvWK8DQ3EsXqxgvy51EiukSSyj5xvtQUyFPK7TJNTc+rrT0XdB+WOpUAJ4JFr//XCVwmwTQ1X0gluHGQU5e4ROGdn84uJibvhDkE3U0kmgNhx0tLTuwJiCDs5pM9PS1hxYo8Dj7o/F+4N7tCb1PXAiIUInD+VmA59QTDsY8sRU5aZBFQmHkxgmfFw8B7j5YZhRpKKNIsiKsgoXikcfKrXWApLcaVtxYpP9445byaXLf8VsDpCxhHwS8ImF+Pvz81Huj59pbXKLZIny8NhDqighjBAfIKPNx/Nv/JvFnr7vYFkXDNELj7gsjdN0aMZL7LsAY3juKO8Q0Ey5+HPKVjn8WsiGAxDMiNF5jdnG3bCRvIGJUluHCEZNWJHbmNN+ZcefFuvBHj4mYIOhpq3FsFsMBdCN6h78s39jh/dBy9nRvI1UoCyBrXiQDCQvwQbgndluWkYX70GfToeGPOzxaW7bWckyMI6/2zczeEKgmx3d7n7kka8fzL1vD/l/2yayLnjqYsRC1CRMGFEIDntCceFZ/N8SgObMe8V3Rc0I68gpquroAq3EWt4iPiZ73qRkU6ERFDu5V89tusoVsSh415MyDDzykZaUfrGaqzFKQPgWdpSrPqSoZ+1J4VzBtfSFFOJu3HW2TLUS1FaiJF1YPjIzu+3uDmFrRCiOGWKZrGepkZ5vhnwzLYMsOGudMDU+BFJqhXmWHLAhPwcCbg4UzAl8+fd34KPmxg3ODGoPAths8/PjrfPQPFkGJOuKcJOPKRhME5DWCZz6A6pbROqg6HrjWzlix5tTTmNS9z4iRadWHZ7Unaas3+qysn1Zyzsrw0HmadWoWFF+jASaVo82B5psRzOtCmoC0hh5/+NUDvZsmiUY1XimpJJTQOyJlDjoWb8NrM1A5kIUAbSyyWhGozlIa2RGvDzamz2ufLxyewzcfnAN/afHxnh8HqkOrQEzQT17H7UYGLG5WrYu+ccJXpnHBFNbD34I4U8S99HAcPBz1qi5xyKZkx3rKH7/xf1/n4/vjfWPLtPQ3eZU+X4cMw0EgXL+GBp3Rx5xE0e0chposf/Eiju3gfnDsPF26XMqU4zfm4/ZxiO85IOBMRRx+j5xg4B40nYsgccxaR8CmyclIWqY8csujcxBNI964/pztLfoqQd+TOigjHj0L6SDGMekV6ClFF3otURML3PopI+CK9fV8Y4ZD3ayiCYqS+FTGiCDEkJimStLQV6N7pV72PMafAsSSSInNONXNKLYsgZYqci6ilok5O5ZRzHdSQ/FAX8VXJQYqiNViwlKTISZCs1Vp1MRovKJOT1BBOycRcu0pIqVbRL1XYlyaCXFVFBU0EqRUWYYNxGEIPtNGC25KLIYFMiPFQV4yV0o0joTV3QS1sxktB81H1uORp0u1T47Bbeg9E1proV21KBVxbkBqt1Do1lU6euYpybpPUmGpptV2yCKrHBuY0NZFOVkOKKZYsWC7TiUs54S44ZeGfYs5NeLldtEOnMtVTy1OdTmK8lsA8YV+VJCot13qZjacJPahi9zKJodNFBU0ErcWcGnp6kU25iI1yaVzEHCuWaztN0lJT45PaFeWqTTVRKVM5TW8cv5FoDYnmiVAgnJQVMpTjwZwVApFJiy7wVixp2VMQKbOQmUkPZOSkBZekgkRRCq2vPBQpDb0pb0WYVXj0PgqPAvcoPcTIsiRWvYj/ixAEDimqIKldrSsYx5w4JvswwSxlETDnviRu5cp4DLCrdhKMo3ntQRQQQeiCELuAXAz9JFWfgdS46JXeA2HnjDgF7eEsx/WNx3+cYopiVXkxa4F+5iLikkn1tJWs7anDUKq6EskuImyMSIVXivBbv6Zw4WtMX9QVqbnmEwQ1Jq4qkOYzl4Q8umY8JOwcARbzKdWmBypj/2l7WTtUECMRamiDWk0hVwjUrFQXcv4+SBO6pRpZTSodOUrrNddTLrHEt8/v6bHxubtgG8Ti2RgMCXEZQluQJYJckE8cv0R/+qGf2pNeMhFB5RXRJjejmpB9JeplCh2tpcmlGmalKoShrZ0uRmTlCwH+1KaFqHpjEvxURbtdLsoX4lIbVACPGn8axlF2OQqAcyi+Od/jGAcKc+QG5wBgJBFtyOtQ6+xpSy6Ekd+b3+MYR+cxFYQifgJh7IM2oY8lSkkc4Nqw91F5wsUuji5ssu5zEI4UDhwKKlMtRdipBVXrD2CJVeBQWS2wfblHZKIZoimyMKNg7EUtBqVhmqKQ0aumKkBAXeqD6pE2B2UOAhi5VWUGWylGl/UP/Z4FhtkPhQ1CgQQngoykdkUktmyXiF0iFVvDvIyDoIo1rrtTeztzsVIEmoF0zctDasg7wtg0aH+x73E4PStKTFUveCcU1zAOgoZYK41OeT7XaJFEEZ6KSXjsgLpU/agxxfkcK3kiJ0SqFo4K3D4v0J/H/2MKg7oVJPji6Lt+nnEShFIU5ErErI5+iIKEtJ+f9LT496Oe+fJTxDv5AfH9pxtFpAgmAHWRg8gHcl5FuiXhjn/vPSaIDlqY/xRiHNFDxVCYJxBT6gLVQwGeFkxwB7qPLph6vkWKmkmkOUSGX5yVJ4UsVUxrK8JFAU8ABUgSFG784t+X4iBgsQavpPv3LALYhceNIqds7vTstxcVKE+kIqjtReOwAf+ehLbt0FIFCXbhx6BD6AHBuJLoS8q5XdTFqDAOu/Bj4MFn7YGYRihTixYV/x61yxOhp5xrw3aUXqO21gU51aqCWqoKpKicsxbSALZXWqrPUmGaYs5VeHkWtDJJoW58jBk7rBtPufvy3UZvPrIU0vyzOv6rAL3qylMpBTaahS3Zoo6LUpfZeLtIAbvTpD2ob30+2/17d+3fh+7fE563ShEArALGybz694SHdlIIFgTDCaQFR7i/fbZN7DxIo569ws9X/r1gYVEZ0byj7k7jdpsWFzs48+8DomIpEFeY8X6tyBIzM1xT8ELqzntk8FPJwxrAmE8Qu3GQnizCwJXJ6AGUvfLg35uhkKJFNnMgDv9ea+U1aNAIqNsVPPfrAr4y6kIgqiDRyiYiwDUAPfBgI8Fbh7TvzshdT9ASKxxIXGyQQi9lrsLIpfjlGMEQ7OKmAePzdtjVr8JKNAdn6DP6m7RXsAG9KMIsUItQXEGiUdyscsl6IXy6fx/CeTBk9u/jFoGLAo4iPA+jGiLYJ/r3T3heo/1RBPHGzLFJAGFGKNi0N3S1I8tktAX59Hjj7L38hkieo/yGEH1k+Z0j/mGk5HPiXLkWj0CLSz1HRKQ5+yJkEamIYi1cdt9D3D6fOo8DEEWHcUYNIYENOiOBgqGKAwkA463owgX2Kd9DHAaPM/yMg0B6+gnaY/XEg50auAMATakVCDm13Go/hUReGnh9bB28XJoQMQsCT6XM0ZlQ7+yvDHsu+xfIinbugnhaUKIFuUK9ITcobVCD9+5f+iUO/hV4eDw14Dm4k9IiTPwTCZ30WPnrkJKWNcRG3YC/okbvt7wBJNHHRqv0Xvgc8aePgSjCF9GIIvpICKuCloPrg3zCJCEFo3GZGoWgFSe8yiiioeCjMCzYxK7wfcdGZahOV/UxwlCwdgJ0hIYhj8pRGfIjoT0pFyrK970xLaEzy2zANOJwKKKaAToEDnjggAeLgXpDikBmKp/7eefTGDz77PNl0Il4Y3T14vRuT5Evl/HshBfcNNl9iabJDX6QZZwmJj2NlOddGP0wnuMUS+Xo/UjIX1trTXW66j+894tAxI05lctz9toyp/Jc8ApG4DxlcsPTWdCagh9lEpGPOQZhns9jzHrmi+YYFCOp7kJGaC0kX8eTeNaFH/xYoo54IFKC2c+sAETxwZuOcqKyIAqC7+NJ/e8z7OM9KUBuxrLNB4u8E+y86BVjC6BSpmspXGnW4p4NFG4ZspbCgk0Uq69rAnMA0xaLNqdJl258leKRtQqKGg83xiOMBzMOfxqNBjN+3aveqG3botfdZrVESq69QofQAwtoQ69rAmZ0N601FCxAnv1pCNh8XRVEVowFg11dal78aRTQSzmVPgbrCccDxrWpWQXGl+1Ad61lFey3I4kUNqDXDcGuCFNd7XIyQdVIN7/Rn/6w+K94DXBGnF/917Ag5r/GoKQgwcbLF/81frL/uvg/aFhAr0/0qzOYh94/vzBGZxUWhtBXDCFWEgy3Y4BYp5PdYRi5fi99lYfOMCGAdwyGxiqE/IqRwAAKEpBzXOkv9f7fPL7mcesLigSSnyA+2iAaEQdmRXBN2/hajA4DkBRsfI2Y9vHD6t8CWdDRUOPtUCA36AJEOxTIgn6KfzvM80tDjP1SEbghrk834ftghAfbThEhjA8C6BXBIExf0ZyvCNNWdEc8an7pcB/eOh8X23PezGvfEhaZzxeXEmEmbvfKhpgvtWwS2/4NmvMVsejnXK6IB+4vB9ifzzNqQqCvnc9AZvQV+JT8AGqUENee3UgWjEdiOo/b1BUsSrq2HWrHCaTQOB4A7OwdmZcTGjt8IQW2BwlEKUaiotBXB6oYySpSZbPXZbUaCZGQD40/4L/dzrLF4d2ygsCeCXBgGTMYdKZBULaNhfiFYbAa3jJXq7fMsIUd7zWm4a8yDXudGW6Bwhdgfsn5uMMTeVoAQ0i35A2ELXyr8jvM+UnIBd/vBcJAmOgDRcqUQ4rKAi+YM56LMCzhAO4SLZeqrDCzMOVhsv8REU5xxWOT5X9I1ym1TnZfY7bBula14jxWr3Sb2iSM+e6lGgsLXneV3yTQ0DBsFVmUU6Oq2OzaWqRanZRRpMY83VXUkrBgq6KhKkytJPpCwZzyEFA00QADEXOWFtR4M5aURcxIRWEKwOBnmz/7hPmz4/DK7NnlP9j3+PzZwQecSnnCm8IUODfCo+4Q00UwQYXZ/KioC7H4Pn+WYvbkBR1dzBQj6TQZyjGXJGxHOZVLwyvo+bSHf/V/+g7WP/D/9fW/+1f7+qsfw1r2qq1/o63/4b7+k9+P9Wb+rdF/3+bh/pTRP9jXf+x/2bYP+K//K4U/8YNGGvzQP9KdexwvHFteZPd5z7b+ka+++gqIwd8Rer/8kCw/sdUzCDDZ4V+elze2MaD8tDYAt20Agi1fCWzxWV/b2y4/u1nMv17a4HnZ2flh0V2WXVtLHG7LYEvYtfGXRHe//A3b7h+x9n5Glp/CAhzL0sYX2JalrVt4+LbA/m75MaurdSwWut6vr/Tjr8nyt9Z+oD20uVteaePV5W/s2ngJcN3aWi9wXTyWFf4I4P8zvb+wrP9bsaHLfyHLv2/Lv7kcm8nuF798uf/c2gUY3y/y82Z5euMyzvHQ2xeB//Afef/yP/7R9y7ftu1F39+5oO+/xLZ3xHFa4TxMLujwahg+TIMbBI1tAXduI40+cImukU7DiWUU3ngefKzjqG7ESKl6apG8j6kRt5LVQW5cmkJt7Xq+2fnR+av8Lm0VkEc0SDQjxjnggFdPGx/CY9L8BNpl96H4iWl+wtxOeHODBxwnNtGMhAflr4qGhEed2HHN0HbAAQcccMABBxxwwAEHHHDAAQcccMABB3zG/FXjG/NXYbriGwQHHPDl8leR//j8VW7NX7Uiu/xVQL5g/ipvbwDs0lVF3jE4ontKGIM3jDgziHYJrW7SVXViZSiLwjWDSFgg88wgVEuzxtpkzvv8VTMjRjBy3jHQKMBI0wCwwJd5f8XN+asiBaZg+auIRuxM5KYCEsJIc/6qYGlWRrzgBxF2TNi/z7ccX8jXA0krGoBsUb+gATCLY9imo1G+CuOspFwgyv6E+f7L97fdOCrSsyZ0QiREgU9ewT7EbYTgeHKZtsmsTgSISuDJlPCTnbNQSswJxw3vLXZJf6OFpTYgRT0bEhuVovz4Ud8fe9L/dyO+zymrtfimfH9MZ88GHw2Qay2GmXT9Y0NxoXHbWkjyzoMyQL09/YsMj54vjvcv+puwNKeGYmbyCsulEyMLez61A+EXActEcmUwXpCN2tasKNTygTD5s3rCWT6pFSHoyhByNMMCAQUHta9ygn40MXMgipbHwtQVJxiFKgxFVlIpRt0141UXKaZyWIq9efBMxmCIqrEZlYFgZTWEVgJcWgRkqaMApEpoFD+ggbBiAo9Zfgy2acCslmg3Cp++1PsX53HyEbet83kaSOdThUmgAdzQxigsYqbGOF+S8jwmaI+KDefBkXPN0zgI0/tG0etlSaEx476++37Xo+dTuQfPp3LLfKotcsABb512Qg+ZduJ96AiF8JgGA+0bPOCAL35i0zrzMDy4weBv1Q444IADDjjggAMOOOCAAw444IADDjjggLd//3QY7lXEZ/zfJLA0V68IvtlwwDGf6ozsxajrHNEWoeA9kDAjURC0GKMhzI+dT4UvaK/fAxbedVr4Owyb3NXJ+4wQ9tOn9owYrxkC9xgg94xVQ0lUAAMQrYWVYS2kvGPkWcPk6Wo+1Zf6HvA4z6cKRPIbZmQMCjZXihaEIgWHzTaO4EQdCXTzPWDM3wOIdE1osaBS6T7qAS+jIF5G3z+fahzn89Fp10GEGI2wiVLgKmwJSJiBikCIxOQ38wCvTuIQNkRKQGNSImchTCLAbKekEQFqj5lPheMzjuNN8bHzqZ6ewgJScyVG58M3BEjgYfkvMd+aqB8S7C2ynE4lj5AZmVPTEwbHNSkspBI5txiXHO+5pMbcSUhraw0ilSGZmMi1Zp7JUmaiGglaoDaBKiL8VFkg5wqhkUj6XkpupXX1YtIHz+/a5BMiTwYxsls/4W4QYzTm9bfZPeBG8w7TWK8ykcB8y4ImdHdMhq7xtpo7XlDFaLwNE3DFE5r1d8UL8VbT/s/cZwrsmfgJumHeaZUZerxtNyrTWv3i39e9/d6l5Ys3OLtI7F0Y9bIbxkoDkpNUdx6Fdi1gjqufRHYezkNxI7DCaeIWqW2/d98/bS+Is3zxyFgYo4sxxGT54hMLMmxElFJgiARJ8WvyxVs+SUHEBLlhmy/eqUXhe/hTKhIdT+AIS0SE7r2UL54IhQ9Lvni/yxc/Z57bCShAsM0XrwXyaNTMmWvxlk8yFRQ9VTPn3PNJEuraWVLyJmW7Kgae84FIUYpTZmAYEpqTKEdBKqGuYnHOF184l6aCXBbBlOYEiNPgdVO3xjOMFzHOackXj0YzeiDGkwrSmi++8pKsPgimhlrhnh0y914txosKahX9hnzxWqNXQ4LGiwjKRHO+eK3RqlRQQT1BUJCtXaS1Fs3vnrRazPlSOZfTJAoT8klesvBVMGmjl0sXtHKq0u7lJMazboL1QFs5ZbF0gXGRWc5KKOepNRX0TWic06Vavvg6Gy/l0pLazMK61KKCkisEJ87lIgLZhHLJU31PvvhhxPk5mkMkRQzjTbrFELf54iFwa/6buGBJ9czniVImkKJhhfDSC/niLQkvC2nZ2ud88aFfHHO+eA4qEJ7li2cSzGwIKWiKuSerV1J5aCCz8Fkg5yvj8do47PKS/4Zh5CZfvNVIoRvnOf+N/EpWi8ny36AIqXsDzBH5JCFIEIhmLiLgPOeTZPS5dK9EiGJNsUrjmk+SS17ySapeTimWWCz/Da6uKAK2fPHaWi0ex2PpATNb/vmrvJgQoG7Jc6+wHds8Ppb/xlLZKtSMvi2ZbWvkWHISSUk5Zv6UfJI4WktiyfFePkk4bzMSI4rIS2LJh+SLN++xVksRr/tvEgL8hPyzppLzQvSd1k7KFySnklszJaHL6YTbM/5qEyKZeygSFqTgc+lyladsSkKcWptOFRd9w//uWk9FUMCj/OVxRCZJvMAoPxTfoHzxAquzhFfNaCHHEVfqIh3H6IHNJIVV6oKhRkL1C8IXyhc/WFYcZrgdulg+PjJGL5Bjiua3FgAcVA+aCmQFmgu69MTnEEATTCmj6XtwI+lKeZGJkOtPKdMKMAbbs7tsvnjw0IksvzWJPZFyhK2EspQk0AocLUUfNOcs8mCzgMi0vVkVZlABmlqytcRgKgtVBGAdXUT/0CiY3O0F04+2AabebSsCCmI0goaMCVtQNPmXel/DJSpUfUiaI5BccGLbss5w9cIDl6PdB2JRPc0ySCkReR16oKxa4sU/DcKKPjh/HjjWVhon78vL+ayCI1IkEJA1KTyFJZ9VFOQ2X7whHG7yxQ+zf3+bL14o4SjunJ6TQjtygiz5rkQkpEj7LhDpR/j3tPPv6da/hx6KRcBk/n1e88VnFFf+vWWVQ3EnZTscqyVfvHnSyspX+eJz9/459fZKFbZljo9KIvGGupzF/HvuAmTRy/hH9mq++NTzxaNRxCTQg5uEwhx/LkltWLJ6lkJUaxXh3Ct4EUJXZTW4MFcp20vNEORcLSLQnqOGtHSRGuW05osvEJQyJ4iPJU+Vs2AsvKmIDO70CSnbWaQqsGztIpimjX+v24buZlUx47YdymtVZK3NgtLQA9hFD6ShhjhqUmHLGnVUQdR479CJtX9CXE51Kqd35Iu3UxOFgJ2fIOd88fZenRZrvvhe7PLFo1j9exRExlvyxScUc1MWKlCYVaK7yRcfLPfkmi9ew0fl9ysEza/+qepnXpNrxi6A8dm/h3Ep1nzx8W6+eDWswjQ6CCgE8+8tT31Y7QITgMcd1XiE3bQRcMiRSAR0mwtUSFKeRQTKStiO3sCaLx7etQq6f7/44yLOoVh6OVzfXaCxepRFJWZjOR5qBT3Y22DYSAmCPoBNKhVI5t+j+WSxukIuuofz3Oj/z955QEdR7n//N7OTye5mYSebbA0lu4kQqbPZvlnIkh01FDUUNRQ1FL3YI3CvXOuWAKEHghiKGggqAmqkhh4IamCjhqJEQA2Ev6JYIqigorzfMye8N5dze3vL9Tn/n/nMZ8rTfs8znOT876AFaBE8TsBq1f/4v+8T2v37/k9/Lx5aTlFAu3/fo/xbvhef0AZXfS++HaDhaAmqlkH+fjAKjtvBP9We9u9HvFzkFwogUQZOLc8zxkdz5fdfGg1mD9B2CrkO0/b7LwCuSfoL34tv+wMJSjtsOynjX/1yOaKt238V/6m/77T/2iNmX3MFkQFXANnaDpVtgOXRDq8ANuo/YMf/7QThCqL8c9+L/9PfH/wHv6cpf9i4Df/l39PkuKR2RZGk/KNDjN3/K+U/9700+T3TlpM4QHq3fYix3aE8bji48v+GrsFhW/Liv7iz7Q0q/+lQg7M4xEnsu0BN25sRF4Lk32LhENfjCIfyK1h+FIq8L6N6+VIUXIw94spfrOWQa5MvxTFeG2AQDnEOgEOA/L1b1P8vHi82QV6/KFd9qxHH7QXMH3+jsa2g01cJmD/8KQmBckWgXPW5/D//7cT25//8FX/5+4tXHUJcrSD+8kcY/93fi5dL8Zag/HPRHvxECX78N38/LP2f+n7Yn/9+1I9/+vthf+L7Uf/5Z9CffMbf/n0wZbtQt8Xf810u+TlXx7//+2D/fF/+Pd8H+/X7YO2+8/XH3+cS/vfPP3zXqN33Agvj+IkSPX319752/9t+JnZUdUrT6b25bntmRo/exY88+fv77xt3V/7N1w8YMXzU7c2ffvXZpZ/Ofdf08fsH99UdeLvsmeeWzJkdnbb6tRdXbNywbedbtfvfOX7ivUOXL37zfcvpLz/fUr1119p1L6ycXxqZXr7o2aXd06/tkxNwZXc1JRsUXAf1bQUj7xg85Lq8hyaOvXvylCcenTlvRvjphcuWv755d80ra6pW/fDLhdb/OXX2iz1vvlv/4bHDR+558DdFv5302ONDb72z8MZBIcncxSgksEkaa7e+Wf38DudNA4M3DLtlzOjfPTz1qXsfmDC+v0/02K7p1ZNnlFpL59SUV1+ufGn9ph3bFy+oeH7W3JLYRx80Ht37RkP8k5Nnvv7x52/PI6vC2rCa0sJdKJWSw46wmwLkC2dR73D3sI3Gh++m++me8FR6IvxIeBIV0C3hO8OjaHD4JpJoQLgu/CY10P5wE30YPho+RK30Xfhy+Ec6G/6KTtPJcCW9EH4tvIa2h3fRRno9XB5eTMtpSbiU5oZnhKMUi0xn5jAzIxXMs5FnIguZamZTZHdkG7M28iqzilkRaWb+J/J15HPmp8gvzLfMN5HDkfeZE8wHkXrm7chbkb1MkLkucnNkEDM6cgczghkamRz5HfM48/vIROaByG8i45iMSDemF3NtxMv0i3gi2YzA6CNdIxYmKdKR4RgmoojxCo1CFTMpOseMMZ1CVLhiuTG/omesjyJTYY0VKe6KPRS7V/FY7EnFFMXDseGxWxVjFCNj+YobYzfE8hS1ijdi78YOKI7HPlIcURyMnY99r7ik+CF2RvFl7NPYKUVV7EXFOsXLsRrFztiW2HpFmeLp2POxpYrZsXmKEkUkFmanRedHZ7HLos+xi9gF0Q3RzewOdmt0NftK9KXoSrYl+gn7BftZ9CL7c/RC9BzbyL4X/Th6jI1H32H3sXuioej17BB2YLSQvT16W3QYW8z+NvpU9FH2vuiD7AR2bDSdvSbaN9qDzYn2Z52sPZoSNbCdWHNUyXaIJkZZlkgxXTGH1IoKQgIoFiqqCQmg2EZZilcVq8imaCYkgOJzmqr4RfEtIQEU7ytO0ChFPSEBFHsVQUICKAZRk+IOxQhCAih+p3icflRMJCSAYhxVKropetEahZeQAIpshUBIAIWFShUdFRxF+TC+BavhZyWY+Of4RQm6BJHfzO9I8POrE/okZPIrE4r4T/gvEu7lLyY8mTCFP8c3JtyaMIY/lpDPv8PvS8hLqOWv54ckHOALEz5KOMIP44sTvk+4xD+acIZ/kJ+QcIpPT3gxYR3fI6GG7887E9YnlPEGvlPCUl6ZMC+hhGdVYTWv1qhmqU2q51SL1Dq1qNqs2qH2q1ar+6gzVSvVRapPVF+o71VdVD+pnqI6p2pU36oeozqmzle9o9qnzlPXqq5XDVEfUBWqP1IfUQ1TFau/V19SPao+o3pQNUF9SpWuflG9TtVDXaPqr3Kq16vLVAZVJ/VSlVI9T12iYrWkma6Zg1/UVWi7aFM1CzXVWrc2oNmmzdK8qlmltWmatXdr79d8rp2q+UXzrXaStkDzvuaEdpSmXnuTVtLs1QS1b2obNIO0TZo7NCO0h7Stmt9pHtf+qJmo/Up7WjNOW6nppumlXaPxandpN2qyNYJ2sXa5xqItxT+8OW2UyBjuGQ7Q8LBEU+mhcFV4I5XS8+FW+jR8PNxAocgIZiLzVERgEiM5kV5MM3MhEo+cYDZEVjEVzPxILLqIXc3ujjayb0V/in7BprOeaFK0Ezs5OoEtZG+O1iqOxs7GLinKYyWKGsVrsfGxKYp8xZ0xUdE9lhbTKBTTUhOyEnKnFSTcMO2xafcnVCZsmTZ72vKE89NOJzQlvDstyN1Wcl/J41xKCcd5ub4lLSXfcvXcxyXV3Esly0rmcOHEZ2asnbEj8fCMfYkXE7+ekTHDiV/edZ1RnPibGaNnDEmsm36EP8Nfnl7Gz5i+ffo6voh/ZPrg6WN4x/RM3sRrpytmpaqz1LmzCtQ3zHps1v3qSvWWWbNnLVefn3Va3aR+d1Yw6bbZ981+PCllNpfkTeo7u2X2t0n1SR/Prk56afay2XOSwspnSteW7lAeLt2nvKj8ujSj1Il/3HctLVb+pnR06RBl3cwjqjOqyzPLVDNmbp+5TlWkemTm4JljVI6ZmSqTSjuTtMb5PecHtMPnS9qp2ofmV83fqC3VPj+/Vfvp/OPzG7SheSM6Tuz41DyhY+K8nHm9OjZ3vDAvPu9Exw3zVnWs6Dh/Xmzuog6rO+ye29jhrbk/zf2iQ3oHz9ykuZ06TJ47oUNhh5vn1mqOzjk755KmfE6Jpkbz2pzxc6Zo8jV3zhE13eekzdFosP4XKVZjxTeShDX+hSKdkACKTljHExSF1MAHE45gLT2OdcPx3oR1WI/f8vVYgdUJmVizczRhbSpydQfycp/movZ+5JtTo0SGFWtPIyeHYH2MUE3EihDUJVgDvVTN6ilYOyewzlapKtSazuEuqV2yOu/oUtB5X+eLXe7vUtnZ2VnZZXnn4i6nuzR1HpJWaxphmph2ySSklaTVmHqZmtOmpOWbTqSJplWmijRNMukW6VYnB3SNyVLyVN0XuvTkjcmluk7JrboJusLkBmMw9UjqGePjqWVGzuhNXZdaZPzWWJ86xlidmplqMs7JDQdSA1m5OwIFuftyLwbuD1TmOnOVgeW5xYHTgabcIb5a/wj/RN8lv+Ar8dX4e/mbfVN8+f4TPtG/yl/h0zhIXCSudgTERofkmCp+IaY7NjpKxU6OVnGCWOhocAXdR9xnXI+7y1ycy+te5y5yfeuqd49xVbsz3SbXHBtZF1lX2wLWRptkm2r9wppu22grtXaytVonWAttDZnB7ke6n8l8vHtZJpfp7b6ue1Hmt5n13cdkVnfP7G7KnNMn3Du1d1afHb0L+uzrc7H3/b0r+zj7KHsv71Pc+3Tvpj5Dsmp7jug5MetSTyGrJKumZ6+ezVlTsvJ7nsgSe67qWZGF+X8sfB5v4xa8gQXmvkgd3lSiYnAsnR0dPYy3UGzGxcTixKQZRXza9PLpZ/ggl1OyoaSeq5rWlFCQ0HOaYv5Ubat29vzmjsvmpcyb2LFWs32OY06+JmNuYYfGDmvnhpU/lU4uVSrHzzSpylRnZ4Zme5Oqk+KzK9XHZw2flaVWPDe1S2uX2c81d132fMrzE7vWdt7+rOPZ/M4Zyws7NXZauzxs/mnJ5CVK8/gKk6nMdLYitNRrqbbEl1amHV82fFlWGiU/tuD8gtLklrIKQRDuK6tbWKMTdYMXpqeMLj9cvjoltviiodiQtLjImPZM+TNnjEF9ztMbnq7XVy1qSi1I7blIsWNqoDUwe0dzv2U7U3ZO7Febu323Y3d+bsauwv6N/dfuCuf8tH3ydmXO+G0mf5n/7LZQjddb7Y3XVPqObx2+NctHjsc2nN9Q6mhZX5EtZN+3vq66RhTFwdXp9tGvH359tT228aKz2Jm0sciVtql80xlX0JOzZcOWek/V5iZ3gbvnZrI9tvL8ylJbS1VFhpBxX1XdihqraB28Ij19dOXhytXpsRcuXlN8TdILRZlpq8pXnckMdst5ccOL9d2qXmrqXtC950uKV6b2bu09+5XmXsvWpayb2Ku2z/ZXHa/m98l4rbBvY9+1r4V7/LRm8hplj/FrTT3Lep5dG3rZe231tfGXK7OOrx6+OisL6/+iophK+eYEE9b4RFVQXYO1WY91XKhp1GbpwslTsZaUWDcVRiH1DNaj11Sdlt85vUsT1uxqa9g2FbmqRF5WZArdzyDfvD2rs/L7pPduQk6uxvq4KBY7Sl3NbhPWwER/0FeDtVOPdVaY2xjIuiEsTZVab1AOKMqryBMGnLmp9kbvjdU35eenD24aXJC/+ha69eKtxbeUDm8uMBWUDZ84JnhnzZ3imPpRlSMLRzaOyrqb7rp4V/HdpUXN403jy4omPhS8v+Z+8aH6eyrvLby38Z6sKeFHpj7SOkU5qejhioeFSWeeqH3S+2T1E/mPpU9tmlrw2OrZ4dKppa2zlXOL5lXME+aeidZGvJHqaH5J+oymGQUlq5fQ0otLi5eUPt+83LS87PmJZcHymnKxrH5x5dOFTzcuzlpDL198uXhN6brm10yvla2bWBWsrKkUq+pfqHyx8MXGF7Jqwtunbm+tUe4q2lmxU9h15vXa9d711a/nb0nf2LSxYMvqBnr34rvFDaUHmveb9pcdmPhG8M2aN8U36usqawtrG+uyPgp/OPXD1o+UTUXHK44LTWeO1h7xHqk+mn8w/VDToYKDq78MfzX1q9YvlWeLzlScEc6eOV37qffT6tP5p9JPNp0sOLX6Ml26eKn4cukPzT+afiz7YeL3we9qvhO/r2+tPF94vrEV858SyYiKilBJAbb2yTNipWWqSvWG2bWaw3Nb5rVqFQsEIT3FsTCoH75o/DPFhrC5vKJqWbWl7tnGTs1dzz+nWClkpKc7VgS7DX9p/Kria8I9ytdWra6+tu7Vxr7Nvc6/Qo6U9Rmvi2JoSwG2vskbY9vL/JW+DTW1uYd3texsDSj2CdelX+94Kxgcvmf83uJQeEj521XvVN9cV984sHnQ+TjdknIk46h4a+hgQUHR8MmHYh+Wjam8c8NHtSMPN7Ucbx1Fd6d8mnFavCt0qmB8UdHkk7Gvyh6qvH/Dl7X3Hj7bcqb1HsUF4Xfpv3V8G5w8/Nz4b4qLw0+V/1L1c/XjdT81Ptr8+/MXFUphZvosR1JwzvAO4zsWzw+Hy5kqtjpWxzVOa55+PpGWpJgy0sSloc4Fy4uen9wlllxWVlm+QVf79OHUFmPrYlqT0jMjS3w51KfgtaJ1k3vHbGVVlZUbrLUvHu7ektn6giJH2Ja+1eEN7h7ef3y/4h3hDeXZVfbq6jpP4+bmTeed1JByY8ZN4ruh/IL9RQcmD45JZW9UvrnhhtrawwNa8lrrFLcLJ9I/dtwR/GB44fjRxcfC75WPqLqt+v26oY2NzYfPD1M8KHyd/oXjgeDnw+8bP7H4s/An5b+pmlD9P3XjGluam8+PpcspT2Y8IV4KPVbwY9EPk6fGHin7vvK7DVNqzx+e1PJwaysRL2jS1aIp2KUgtUhXLIbdZYFKf3VWbZ/GzGZb613h8WX3VD5U/UTtY40PNz/SegsNF0am3yneGBxcMKDohuJ3w/vL6irfqD5ae7DxePOHrZfpB+F8+nfip8GTBWeLvixeQ+uEF9MrxfXBjQW7imqKl4aXly2uLKuO1pY0zmsubV0WeXbBMysWvB7bM+3g/JMzv1nLvJL8knWFfcOATUN3j9368C/MxeRz1m/tnwxoHvr52C8efidSv2Dvin2vv7+n8eCxkye+GcEMSy603mEfMmDQ0ODY6x+eEBm3YOKKB19/fM+jB4tP/u4be8SzoN+KnNev3dP34DUnM75hmMTkDtYku3lA16H6sSkPO2Ku8twq34aedb0xYdbzCkVCijZD5UgLdR5uHJ88+VZFQcqojDGOm0L5w/PGS5PvjhWV31t1/4Yn66ZiAKecv6T4MaU143vH6dCp4WfGfzW5IXagvLbqzQ1H6g4hQT86vyT2fPnTVeUbInUzsKBmn39Z8VrKCxlVjtdDW4bvHL998mr2Vd0q28rs6rzNw3aM2zapIvrcwkUrF64P751+aM6pWefejsYX7ln51vr39h4+9MGpj8/9zP6k+8Z2Ift/8lqGfTbu60m/iY5deN/KB9Y/tff3hyaf+u2529ihutG227Nvzhs4LDTuukksy+k62pTZlrxOwwzjhEnZUefC/iu963vs7XWo26n0c3cPGRsKjR1ydzoRCW1haovUdn8LzESkI4JtgevkcrmtpLc7r0SY2nERgmmLB9sccTjf5oxK2VH6XwkGkdj27F9yr/wuGfEnvvvOtNUj/Jnfo2kRXds5BsFf9bdHoa0PT7XxQMlBf6ow7Z7Btnsm3+5vEoxMAoWJ1pB32cM4Jmvi4eTpUv2eA2DFVecVV51PvOo8f9VxW7/lcqWVuVfmiP58qeb++Hhf2+8ey9qOv2JJLhVKkksjzuvw8z5EPaIUHWnGNUPR4YJkCAzYbwYQvZdHNEQiil9HNOwGolP5RI8OIkobQvTWjeCbibxD0bZhRAdHEK27lWhhIVF0FNGTY4hK7iBajMTZOI7owwlEut8QjbiHaCUq/uUBoruLiU5MQm79lujcI0TljxLlPYE+Y6Dal2tNf3x8tm2QTBqSS0RPcnnQRnLRoC8uDG5MjTq1uA6LoMVMZLESbetJcnmgK8mlvBljdVVRCuhHMgDl7o8uX77VgAn67A/XTcI4PqLD8y5cvvzeicuX+Q5oI36h2vurP1yjQHBtPK075c6+m8kd/a0id+K5xFxvRYdcf44+98ExXXP71fbK/WpJ/9znPr41N+fHqbmu6qdz037YmfvaekUwzzAqeL06Y8Dc5yh36t6E3NyM5NzOi6/JDe8bmDtw34zcbr8/kbs8UBW8EGFzd35jzj064e7cd/nM4JHZ6twp/V7KPc+5cumqNX51+eWq+LktLrXFT23xI+KHtriIuID4HvEd4jziHKIV8TXiS8RZxBnEJ4gWxEnEh4hjiKOIw4h3EXHEm4g9iB2ILYjXEWsRLyCeR1QgFiBmI2KIxxG/RTyAuBtxJ+I2RAFiICIPEUC4ESKiJ6IbwoboiuiM6CQHGJGOyEBc23a9FxFC3Iy4HfEgIoJYjHgF8VZbn9i2PTUf8RBiCeINxLeIbgzRaMQCRByRiIuvQ0xDvIVIUmCtIZ5BfIzIQrI8jNiGUCRg3SEWIY4huiKXxyFWIj5GmLE+bkI8hViDOIhoRaiUWJuIaxDdEekILeI7nGtEVCLuQnRBxPGc+xGX8fzpCELch7oPoC0WxO0s1gDavRWnDqOvzUiOj5EYh5AUW5EQi5AQE5AMPS5ijpEIS5AIEv5Q8RkSYQb+EGJtxVxiPQz5EvchGSbjjxoqrKGqTzG2n+C607gHgzgcf7CwnETefIy1hLX2NpLk2Ank4HHMA2I+EoZBLPwAz0eYETqEHfF7xOeIUpwfjmtvxH1Tcf8RPGcC1nUWnm1DPcNQ31YkYyHa0RdtCqJ9M9HWpIvIPfRl22X0AX0ehLE6rSHalIx5MGBPSiMaYyW60I1ody/sY9lER7wYY6yqGdgTDUMw38MwxyOJfleEfQH7W+RBjDP2s/jjGNsYkXc25nUh0WokR1Ml9r2XiPSvYQ43E/E7iT6oI5p7AHNykGjWUYz/h9grW4h2fUZ0z9fYH5FMKT8SqS/DKRjqrWRohIahvgJDu1IYumRg6DMzQ7FODL3VhaGN6QwNtDE0PYOhiZkMtSK6XMPQH8qvZe2aNbtv+u2M3Qf423avXdMDnAg+ugt+F/wueHAPcCL46E74nfA74cE9wIngozvgd8DvgAf3ACeCj26H3w6/HR7cA5wIProNfhv8NnhwD3Ai+OhW+K3wW+HBPcCJ4KM18DXwNfDgHuBE8NEt8Fvgt8CDe4ATwUc3w2+G3wwP7gFOBB/dBL8JfhP8prb+5+I4F8e5uA6cCD7aH74/fH94cA9wIvhoP/h+8P3gwT3AieCjAfgAfAA+AB+AD8DnwOfA58DnwOfA58D74f3wfng/vB/eD++D98H74H3wPngfvBfeC++F98J74b3wHngPvAfeA++B98C74d3wbng3vBveDe+Cd8G74F2Ecs1AXe677jP9L9xU0/+agQv7v+ueCPaCdeAz/eD7wfeDB3vBOvCZAHwAPgAP9oJ1Afgc+Bz4HHiwF6zLgffD++H98GAvWOeH98H74H3wYC9Y54P3wnvhvfBgrxfeC++B98B74MFesM4D74Z3w7vhwV6wzg3vgnfBu+DBXrDOBe+EdxLKzNLS/tXbC/s/lNCr/8xSJbip30MJ6/rB94MH9wIrwU0B+AB8AD4AD1YG4HPgc+Bz4HPgwUpwkx/eD++H98ODlX54H7wP3gfvgwcrffBeeC+8F94L74X3wnvgPfAeeA88WOmBd8O74d3wbniw0g3vgneVlpa64F3wLngXvBPeieud8E54uf9KK9f/9M6D/T6e+mI/pbWk3+mdQ8HdwBz4YAA+AB+AD8CDuQB8DnwOfA58DjyYy4H3w/vh/fB+eDDnh/fB++B98D54MOeD98J74b3wXngw54X3wHvgPfAeeDDngXfDu+Hd8G54MOeGd8G74F3wLngw54J3wjvhnfBOeDDnhHfAOwjFqoz2W37PTf3uOZLRL13Jgt8J3HOkKgAfgA/Ag9kAfA58DnwOfA58Dq7PgffD++H98H54MOuH98H74H3wPngw64P3wnvhvfBeeDDrhffAe+A98B54MOuBd8O74d3wbngw64Z3wbvgXfAueDDrgnfCO+Gd8E54J9rphHfAO+Ad8A54uf8cy/Qr3d8Q6DVrZYBjI4HS/UPANjADbsiBz4HPgQfbwAy4wQ/vh/fDg21gxg/vg/fB++DBNjDjg/fCe+G98F54MOOF98B74D3wYBuYATe44d3wbniwDcy44V3wLngXPNgGZlzwTngnvBMebAMzTngHvAPeAQ+2gRkHfDZ8NqGEw+HANz8NDlz+xBoIhwkcz7n8yYqcSDicAw+25sCD4354P7wfHmz1w4PjPngfnuODB1t9kTCB4154L673woOtYALHPfAeeA882AomcNwN78Zz3PBgK5jAcRe8C9e74MFWMIHjTngnvBMebAUTOO6Ad8A74MFWB54DjmfDZ+P52fBgq9z/9CAFap+O57Q8vSInPRjOqX16MNgKJnDcD++H98ODrWACx33wPngfPNgKJnDcC++F98KDrWACxz3wHngPPNgKJnDcDe+Gd8ODrWACx13wLngXPNgKJnDcCe+Ed8KDrWACxx3wDngHPNgKJnA8Gz4bPhsebAUTOG6HtxOKMj2c8864wTmTH7DmKNMJHPdPfmCFH94PD7aCCRz3wfvgffBgK5jAcS+8F94LD7aCCRz3wHvgPfBgK5jAcTe8G94ND7aCCRx3wbvgXfBgK5jAcSe8E94JD7aCCRx3wDvgHfBgK5jA8Wz4bPhseLAVTOC4Hd4Ob4cHW+X+swLl3DEw7g+NXOFnhbD/joGDwVYwgeM+eB+8Dx5sBRM47oX3wnvhwVYwgeMeeA+8Bx5sBRM47oZ3w7vhwVYwgeMueBe8Cx5sBRM47oR3wjvhwVYwgeMOeAe8Ax5sBRM4ng2fDZ8ND7aCCRy3w9vh7fBgK5jAcRFeJBRGGfa/HBjs732z1U9KAsd9vW9e4SNl2AcPtoIJHPfCe3G9Fx5s9cKD4x54D7wHHmz1wIPjbng3vBsebAUTOO6Cd8G74MFWMIHjTngnvBMebHXiOeC4A96B9jjgwVYwgePZ8Nm4PhsebM2GB8ft8HZ4OzzYCiZwXIQX4UV4sBX9R+HIf7M77rMNQp+5sO9m92CwFUzguBfeC++FB1vBBI574D3wHniwFUzguBveDe+GB1vBBI674F3wLniwFUzguBPeCe+EB1vBBI474B3wDniwFUzgeDZ8Nnw2PNgKJnDcDm+Ht8ODrWACx0V4EV6EB1vBJML3he9LKMSGfTbHYN+zN6DPLIHj3mdvWOGF98KDrWACxz3wHngPPNgKJnDcDe+Gd8ODrWACx13wLngXPNgKJnDcCe+Ed8KDrWACxx3wDngHPNgKJnA8Gz4bPhsebAUTOG6Ht8Pb4cFWMIHjIrwIL8KDrWAS4fvC94XvCw+2ov8oDPnm2OPeUdejz0zYO8c+GGwFEzjugffAe+DBVjCB4254N7wbHmwFEzjugnfBu+DBVjCB4054J7wTHmwFEzjugHfAO+DBVjCB49nw2fDZ8GArmMBxO7wd3g4PtoIJHBfhRXgRHmwFkwjfF74vfF94sBVM4Hgf+D6EEia8q8TB3q3XWb1hInDcs/W6FR54DzzYCiZw3A3vhnfDg61gAsdd8C54FzzYCiZw3AnvhHfCg61gAscd8A54BzzYCiZwPBs+Gz4bHmwFEzhuh7fD2+HBVjCB4yK8CC/Cg61gEuH7wveF7wsPtoIJHO8D3we+DzzYKvf/7YaG3fvmrNydwkV2v90wBGwDM+CGXfC74HfBg21gBtywE34n/E54sA3MgBt2wO+A3wEPtoEZcMN2+O3w2+HBNjADbtgGvw1+GzzYBmbADVvht8JvhQfbwAy4oQa+Br4GHmwDM+CGLfBb4LfAg21gBtywGX4z/GZ4sA3MgBs2wW+C30Qo/219hgfbwMyV/ufiOBfHubiuP67rj+v6w4NtYAbc0A++H3w/eLANzIAbAvAB+AA82AZmwA058DnwOfBgG5gBN/jh/fB+eLANzPjhffA+eB882AZmfPBeeC+8F94LD2a88B54D7wHHmwDM+AGN7wb3g0PtoEZN7wL3gXvggfbwIyrLf9zcS4X53L/28aCUHzzWnZPXL5x94mR83f75o0HO8FacMsu+F3wu+DBTrAW3LITfif8TniwE6wFt+yA3wG/Ax7sBGvBLdvht8Nvhwc7wVpwyzb4bfDb4MFOsBbcshV+K/xWeLATrAW31MDXwNfAg51gLbhlC/wW+C3wYCdYC27ZDL8ZfjM82AnWgls2wW+Cl/P/v63P8GAnWCv3/7+tz/Ab4TfCb2zrf38c98dxf1wHdoK14JZ+8P3g+8GDnWAtuCUAH4APwIOdYG0APgc+Bz4HHuwEa8Etfng/vB8e7ARr/fA+eB+8Dx7sBGt98F54L7wXHuwEa73wHngPvAce7ARrPfBueDe8Gx7sBGvd8C54F7wLHuwEa13wTngnvLMt/3NxLhfncv/bxqJt/nNxLhfncv/bxoLaCvtnon1h/kTI5W+8/q/ff3X87YWV4x8vij8Zf3v/5ev/wf5ziATcraCfL3P0w+UE+uYyTycvJ9Key0qKXFYRc1lNzC9JxFzSEHOxAzGtHYlp1hJTKxAT/r/l/kT8F8/AtSr6W5/z6/3/79+v+Av3//vP/3qebXf+Hzn+df/59f5f95//6Plf959/fr+Sj+W2/J17xj97v+Kv3P9/+/lfx+//7fP/xH4pz8H/6/f//z6/7FXn//Lxr8dpOO6CUCI0bdy+6No83/aTYRgEK//AESsfEMuwUBBA+QQKK5/GDxYXgXCJfCkUHI7wE+Wq+vBpGHxgAD9SkpNT5QOdLpl0ySm65FT5hI6ScVUKJafKF+lSkikFHxlITpVv0KUmU2pySmpyqnwz7iZcAi0/CIV0uhSdLlV+KA7QwRTSpcoV4ASl6FJSdKlyZbiIUnUpqbpUuWLcQKgKj5cbgZsJl+MSHTSQUFKIUuXG4aE4SEmhVLmhqAAnUlIpVW40KiM0Gc2UO4CKCdWiKrkzeCoRbsXluAQaiJKSKncSjcNDcZAqdxgNJVh0V+48Gk24Ak2WBwKtI1yNauVBQQ2EO3GrPEC4CmdwhEJXil6vZ/R6g15v1OtxYNLrzXo9q9db5BMMozcweiOjJ0ZvYvRmRs8yeot8A2PQGwx6o0FPBr3JoDcb9KxBb5EfxBj1BqPeaNSTUW8y6s1GPWvUW+QKGNIbSG8kPWo2kd5Mepb0FrlixqQ3mPRGk55MepNJbzbpWZPeIjeIMesNZr3RrCez3mTWm8161qy3yA1lWL2B1RtZPbF6E6s3s3qW1VvkDjAWvcGiN1r0ZNGbLHqzRc9a9Ba5Y+gZeoCWEqrF4/EYXC53GMXAMEY57U0MY5aT3yIPBE4YDIzRwJCBMRkYs4FhDYxFHiDcYDAyRiNDRsZkZMxGhjUyFnng8CADMUZ5+ZiIMcuLyCIPKCowmBijiSETYzIxZhPDmhiLPNCo2GBmjGaGzIzJzJjNDGtmLPIEoEEGljHKy9DEMmZ5MVrkiUFDDRbGaGHIwpgsjNnCsBbGIk8YOoAZw8wQhhnDiWHD8MgTiY6hZ+gBoTmoFo/HY+QJxhkUo8FABoPJYDAbDKzBYJEnHgOBE0ajgYwGk9FgNhpYo8EiJwQGCDcYyUBkMJHBTAaWDBY5UTBweJDRZCCTwWQymE0G1mSwyAmEAUUFRrOBzAaT2WA2G1izwSInFgYaFRtZA7EGE2swswaWNVjkhMMEoEFGi4EsBpPFYLYYWIvBIiciJgYNRSYS0grpgzRBOsgJiglDBzBjhOHHMGM4MWxy4mIk0DH0jNBMNAfV4vFyQuMOnEEho9FkNJqNRtZotMiJzmAUYMlIZDSR0UxGlowWeQEgITBAuIFMRpPJaDYZWZPRIi8MJAoGDg8is9FkNprNRtZstMgLBgmEAUUFxBpNrNHMGlnWaJEXEhILA42KyWI0WYxmi5G1GC3yAkPCYQLQIMIywnLBskD6ywuPwayglfKmbUJayVu3RV6QmHlMGDpAmBYMP4YZwykvVIwQRgIdIzQfzURzUK28gBnC5dCEYiIyy68Ai7ywGcw6RgHWRCYTmU3EmsgiL3gsACQEBgg3mMxkNhNrJou8ETDIEoya/BIxsWSWXyUWeYPAgkECYUBRgclCZguxFrLIGwcWEhILA42KsXNgh2Cx3OUNhUG2YfTRGiwvLCMsFywLeaNBpiMRMTGENES6Ia2QPvIGhIzAzGPCCNOFacHwY5jljQkjhxHCSBC6heajmWiOvGGhBjwJd+AMitlkYk0mi7yRYWEj0THxBGs2mc0m1myyyBscFjwWABICA4QbzKyJZU0WeePDRoCFgUTBwOFBZouJtZgs8oaIDQILBgmEAUUF2BFZbG/yRomNAwsJiYWBRsXYOVhsA/IGipWNBYaEI7QGywvLCMtF3lixApDpSERCK5GGSDeklbzhIlOQEZh5QusxXZgWDL+8EWNEMXIYIUKv0C00H82UN2jUjBrwJNyBMyis2WyRN24GqxpZjlnHKMCyZpY1W+QNHRscFjwWABICA4QbWIvZIm/0jB6rHdmPbMDo4GqWxXYuvwAY7A5YLcgejCaeLv/DwyK/GLCTYePAQkJiYaBRMYvtQX5hYMVjZWOBEUYfrcHywjKSXyRYGVgByHTCrKCVSEOkm/yCQQYhU5ARhNlC6zFdmBb5xYORxohi5AjDgF6hW2i+/EJCi1AzaiAWl0OzKBb5RcVgF8OqRpZj1jEKsBbWIr/AGOxuWO3IfmSDHqMAa7HILzYGux52AawKZAlGDU/BNi+/8BjshtgdsFqQPRhNPB3bofwiZLCNYdfAKkJWYZRRK7YN+QXJYLljWWN1Idsw+mgNlpf84sSKwcrACiBkIWYFrUQayi9UZBYyCJlCmHbMFlqP6ZJftJgBjDRGlDA8GAb0Ct2SX8BoKVqEmlEDnoQ7cAaF/vPl1/Jr+bWkI4KIIkQYUYmoRTQjiMF5RBBRhAgjKhG1iPb3iwhv23MK2p5V/GeeF2Tgr7o/6x94xt9af1nb/dVXPeNKUSIEhOlvbEvb8/4l90vr4LYDniCy3Yr23Y7j/kTJPdHOPri/a/vvFFwdV861Lxzao0F7UtGeLpRJvchJ/WkQjaIHaTqtpH30FWb0VmYlE2Q5lLb/wXqNkGrqZOuR7R7yHOF+E+4UKQ93TaXl9CZdov5MRdsdPK7uqDN08f6J2npQNgUonwrpXgrjzl30CaUyg5hwu9p43C/oDJ1sWX3c7tr2tY2gSbQYc9RKvZhHr9TGozYh1ZL3J/vmxl3D6G56EnXtxX1ZzP1MLdONbdc3uWtduvXxSiPutvxR33DXq/Q5eZnnmE7slb7haouth/w7EFyr+6OaCjCPU2gOraZ6jGInpoCZwzQyatzLy0UpN9XUKb1bH2dA8rvbasO9+bjzSdz3EXo2R76jrXEddZb0Hro/W9skKqWV6NkZMjBDmFmordMf1YZxtKA2d//rh2T+obab6H5k2TZqRd8q2vrWNm2m9F7/6r61r20h7mhfW5cs3f/ntV3JJznrcXUJ1nYt5suEWsqYE4yb9bJ+NsD2x70aucg1ZYne4JBRbb8SM+H+fNy7nJqwNqcwzcwnzBfMOawApVIpX5+J6yxta12FSEAoEByCQSgRTLvzVwqPz8/h21KKJDVRYmIiobMKfN+BVHLR8Dp0AU0ijUrFazUq4mF5eC08BPEaFc/r2j1RDIphsVYke9CuFPPFUrFeVNrz7YJYIJaJjaJgL7CbxEKxQmwSTfZCe7pYJFaKzWK6vcieJU4UV4tnxCz7RDsjDhAj4h6RsQ+wq8SB4kxxv6iyD7Qni0PFBeJBMdk+1G4WR4pLxA9Es32k3SqOFVeIJ0Wrfaz9WvEe8WXxM/Fa+z12VswTo+JekbXn2dXiIHGWeEBU2wfZdeIwcaF4SNTZh9kt4ihxqXhMtNhH2W3iOHGleEq02cfZe4j3imvEz8Ue9nvtCjEkxsQ6UWEP2ZPEweJsMS4m2QfbU8ThYrl4WEyxD7eniaPFZeJxMc0+2p4hjherxBYxwz7e3lO8T1wrnhV72u+zc6Ikloj7RM4u2TXiEHGO2CBq7EPsqeIIcZF4REy1j7B3EseIy8UTYif7GHumOEFcJZ4WM+0T7L3E+8V14hdiL/v9dgoGg+FgbVAZzA+WBuuDQrAgWBZsDJqChcGKYFOQCQ4IRoJ7gqrgwODM4P5gcnBocEHwYNAcHBlcEvwgyAbzgtHg3qA6OCg4K3ggqAsOCy4MHgpagqOCS4PHgopgKBgL1gWTgoODs4PxYEpweLA8eDiYFhwdXBY8HqQCZYFQwBSoCpIL2AJ1ga5AUZBUkFIgpxhHfJBQBRfkwxRmw1yYr6Vatpar5ZWkZJWcks+nfDafy+dLqZQt5Ur5eqpn67l6XiCBFTiBLyA8livgy6iMLePK+EZqZBu5Rt5EJtbEmfhCKmQLuUK+girYCq6Cb6Imtolr4tMpnU3n0vkiKmKLuCK+kirZSq6Sb6Zmtplr5hliWIZj+AE0gB3ADeAjFGEjXITfQ3vYPdweXkUqVsWp+IE0kB3IDeRn0kx2JjeT30/72f3cfj6ZktlkLpkfSkPZodxQfgEtYBdwC/iDdJA9yB3kzWRmzZyZH0kj2ZHcSH4JLWGXcEv4D+gD9gPuA95KVtbKWfmxNJYdy43lV9AKdgW3gj9JJ9mT3Ele/i04x/J5lMfmcXl8lKJslIvye2kvu5fby6tJzeLLOfwgGsQO4gbxs2gWO4ubxR+gA+wB7gCvIx2r43T8MBrGDuOG8QtpIbuQW8gfokPsIe4QbyELa+Es/CgaxY7iRvFLaSm7lFvKH6Nj7DHuGG8jG2vjbPw4GseO48bxK2klu5JbyZ+iU+wp7hSvIAWr4BR8iEJsiAvxMYqxMS7G11EdW8fV8UmUxCZxSfxgGswO5gbzs2k2O5ubzccpzsa5OJ9CKWwKl8IPp+HscG44X07lbDlXzh+mw+xh7jCfRmlsGpfGj6bR7GhuNL+MlrHLuGX8cTrOHueO8xmUwWZwGfx4Gs+O58bzVVTFVnFVfAu1sC1cC88RJ+/AEkmsxEl8CZWwJVwJv4/2sfu4fTx2MlbDafghNIQdwg3h59Acdg43h2+gBraBa+BTKZVN5VL5ETSCHcGN4BfRInYRt4g/QkfYI9wRvhN1YjtxnfgxNIYdw43hl9Nydjm3nD9BJ9gT3Ak+kzLZTC6Tn0AT2AncBH4VrWJXcav403SaPc2d5kkICmGhVlAK+UKpUC8IQoFQJjQKJqFQqBCahHShSKgUmgVGGCBEhD2CShgozBT2C8nCUGGBcFAwCyOFJcIHglUYK6wQTmKx5AlRYa+gFgYJs4QDgk4YJiwUDgkWYZSwVDgm2IRxwkrhlKAQQkJMqBOShMHCbCEupAjDhXLhsJAmjBaWCceFDGG8UCW0YOlJQomwT9AIQ4Q5QoOQKowQFglHhE7CGGG5cELIFCYIq4TTAlUqK4VKplJVmYwFpq7UVSoqkypTKglFwTAMslihUHAclpuCEIz8f2C5hHNN11mD26bMCn7XNx68uUE5YN7DfQaU5d46AOcGpO17esDhUesGHN5UN+By/fEBX8/8dsDbF/g87oeUPNyX93FTn7zI64G8+xsG5V3ffWTemd2/yStc9Lu8sQejeXhm3gOOhXm7NUvziFbmzdKsyauzr88zPrQt75e6vXmoLy+8/nBej8En8qI/nM5L3/ll3vKnv8+riF7OOz6AC6EtoSeKOoT6/ZIcmviCIdR0S1roHm166IeDmaG7nr02hHaGbrnJEVrq8IbyrP1CojEvNFB/Q2hS2pDQwmuHhtCH0IjbR4feihaFDr52V+iO0/eGbksvDq0e/9tQ4NVHQ+hfqHhdNHTXmGmh97WloW1vzgopI3NDW/qXhWovLwyh76HdsytCL9y6LPRG5nMh4/eVocUHqkK+lS+Gfnz85RDGJbQ957XQK13Xh1bxm0LPtG4JRT/cFrrj7Z2ha2prQxizUNGrb4bqX94f4lc3hFJefjf0+bpDodIN74X+Z0dTCOMZeufoR6GCz06Gnvr5dOjW1DOhQ73Phr4c+FVo5cRvQhjr0LuvXAgFjvwYcv78c2jkIpJG9mSlJXUKSX97goR5kHaVK6VPRLV03btJ0tEHO0jLtVqp7HVB2jhCJ2GOpPBzeqnbdUbp/Bcm6dOnLRIFO0mBs52lpc90lTB/0sbzNunBqkxJGtFNcvJZUr+t10q3P9BTWmTrLWFupX5lovRqfrbUl3VKu3e4pDumeiSVyyfVnvNLmHdpyMP9pS7ZQen78wOk9zaHpC2PXictz71BKkkYKCEnpBGLhkj+22+SunQvkC5/M1Q6tnO4VD3rFumpwtsk5IvEXRgl1bw1Rhq75A7pl/uKpPm546Tk1AlSyWd3Scglyf/MPdJjD90nrcl/QNpne0g68HOxtP2DSdLTm6dIyDOJnTxVWjTsUUnjeFy6J/VJae33T0lnvghLX3wUkZCD0vX7YtLyLSXS2LXTpMXPT5d8i2ZIg2eWSg1PzpSQn5L+vtnSR2PnSCkj50obC+ZJe/PnS/4BZVIX/wIJuSt1710uDeq+SDpqfVp6p9NiqbfpGen7lAqpu7BEQl5LtaplUlbicukC96zUS/GctJ95XopTpeSgFRJyHj+rpAO0SnqTeUHqpnhR+px7SUpOXC0tV70sYT1Ix7VrpXkp66Qq4yuSpdOr0rn016Re3aqlt3q+LmGtSF29G6Tj/TdKF67bJE26cbN04y1bpBm310jpd2+VsI6kB6Zul6zRHVL2nJ3SisW7pAdW7JYWr6uVOtXskbDGpH6NdVLTiX3SO5+9IaVfeFN6m6uX3tPtl7zWAxLWn9Qht0F66qa3pUF3vCMVP/iu9NWTjdKb8w9KFyoPSVib0rh9R6Tl778n9fnsfcl06ag0SvuBdM52TGpxH5ewbqW37vxQ2jHlI4mf9bH00vPN0rObTkqfxU9Js0+1SFjT0jvCJ9JDWZ9KdwXPSK8Vfibd+PDnUu6ss9L0qi8krHepw9GvpJu++Vo6mfSNVN/tnMTmnZfm3f6tdP/vv5OwF0hd11+Qzr9zUTJ/8YNUpvpJGtn9kjTpup+lD8f/ImGfkA4V0P9i0IzCeu6WMFoIAAiADxDKAQAQzEIRgEAKBBCAoCqqBKmKSKhKpFSVBKBSComiEkKRQoGkirMv9vPU738/875rjVjnashcC02ZrVFNLF2qSVLH6jI6vLqoGSJnn9aQQ8u05OxPLXl5oKaMallLEoNqyY7htUXNF5lqUkc2l9SRW7Z1pV/zepJ8vp4cHF5fLB7VFzV7JOxHA6nj0FAc2zSS3qGNpGxsYynMaCwaa5qImktyxrWp6Og0k4zrzSRouraczdeWm5bNRaNxC1EzS34Nbynnn7SUfStbiWVlKznp2lre9Ggjk2+3ETXPxPlzW1lm105M2rQXq/D2Ejepg+jldpCrO/4TNetk9PmOMmRMJ5n1opO4bewsv2t1EauzXaTXsK6i5qAUrekmGjW6y7DT3cVjsI40f6IjMat7yN7qPUXNSNk0pJecSeslJWt1ZXlNPak4qydRI3qLy/PeouanXK7fR76f7yPG4/tK7uu+ctCyn8xt0V8mRPQXNVvFoXCAvLQfKDO7DJJPtweJ36LBYvVnsOzxHCJq7srLJ0Nl5IZhcrvecFl+Ybj0mjhCmuSPkNZ2I0XNZDl8e5SULR4tBypHS/9TY0RzuL6UZOqLxs6xoua12F4ZJz/mjBf7X+NlmMcEqT9IRCNDRHsboma5+ERPlGZzJ0lQ6SRZfHyy9B9qID2yDGSUpaGoOS+JN6bISJOpkvZvqhw4ZyTzx0+TKfnTZInDdFE7QPJSZsjcDTPlY+NZcjxylqycO1vm/Jkty7zniNoPkvNurky0nydPexrL7kfGMn7TfOnVfIH0jV0ganfIcc1F8idgkVgaLJbWxYvlhZuJRA5dIqGvlojaK/JXx0xmPzKTpM1LZUGrZVLv1jLJXrZc7tdZIWrnSPmclTK2cqUE+ppLz8mr5EHxKnH0XC3LR60RtY9ku/NaCe6/Tv5mrZMNNuulsscGCXqyQTbt3ChqV8nCJAvZY7FJrrXaLC3ubpajq7dIt6ZbJfPaVlF7TDzqb5cz0dsl0WSH1Ku9U9aF75TCBbvkQA1LUTtOGhvvFs1qe6TRpT0ybO5esdbYJ3kX98nyOVai9p8smmMtiRetRV/DRhLn2MiiYBv5p2Er4XNtRe1GGV3NTlob20n1UDupqL5fNBbsF+2w/TK45gFRe1P8Ig7I19r2MmmJvVyOtpeu9R3k/FIHGRrrIGqnit1KRxl101G0tJ0ke42T3LrrJJdbHZSQjQdF7VtJb+8slVudpd9DZ9na5ZAkWB6SLk8PyZGeh0XtYjmaeVi69D0iCQ5HZOubI9JvyFGpOHJUnn44KmpPy0VP9b66SAzHJM3nmPwpPSb/m+Yqm867itrh0t7YTRzD3ORfbXfZb+YuLa65S3RTDzFb6yFqv8u7dp4Svc1TPB97yn6d42JlfVwcso7L6f4nRO1++Zp3QnqN9pKtx70kucRLehuclNN+J6Vt1UlRuUBGhp2SN3W8xWWZtxjd9JZWLU9LicVpSU8+LSozyL19PvIo00fy+p+R2ofPyLCPZ2T72LNy99RZaVV6VnZPPydFF8/JKi1f+b7EVxyv+Ypucz/J3ugnKmvIkm7+MtDaX5q/9JcagwPkr0uA1PwcIK0nBorKIbKyKlDOGJ+X/MjzMqRRkHisCRKN+0Gyo9MFURlFDmZeEJ2BFyX16EXZX3RRZGKwNPMLli9/g0XlF0m4cknimobI4w0hkp8cIrV1QmWoXahseRMqKttIoxOXZePPy/JyepjMCgmTzDrhsmpluGjFhYvKPbJ0T4R0yYqQkkGRkuQaKSHFkeIzJUpOXYgSlYnk6rJoyboTLVodrsjo3VfENvOKPBsUI33cYkTlJalndFWcg69KizqxEroyVmbEx4pG52ty3eqaqCwls0dcl/5e16Xd7+vSdM4NaRZ5Qzo1uSnDNt4UlbPkiO4tSXa6JU0KbskKbkuc/235X/U74m92R1QGk8gOd8Vw710peXlXzg6/Jwu97knnsnvya26cqHwmN7TjJXxLvEQ8jZdb/RIkwyVByooTRGfafVHZTQIaJErpukSZ+TBRYnWTRM85SS4WJslAgweicp2sqpMs2quTJSUpWQ73SJEFjikyoCBFWkx6KCrziUbtR1Jz1SNpkfRIBvR4rH5/LIcKHkvypFRReVDM6zyR+6ufSN/kJxLYK026O6dJRFGaTJ7yVFRWlOMNnsm0Dc+kWeozedsnXa65pIvPt3Q5PDNDVI6Uw9rP5fS25xL7/Lm8GfJCGnu9kCnlL8RtYaaojCnjOmTJRassaf82S06Ny5Yu/tkSo/VS5pi/FJU/JbJXjmw+lCMjvuZI4+mvpDj8lWQ3ey2p216LyqaSNeyNfD31Rhr+fSPDTHNl471cudz1rZTbvxWVWyXc8J20C30nro3fS9Mt7+V0xnsZMDRP0k/micq0Msg0X37dy5c73T6Ip+MH2V70QcyMPsrccPW0C8RsR4Fszy4Qz1Gf5M7ZT/KzeqEMNC+UvcmForKw9D1WJCd/FkkD48/ifP2zaP/3Rc7bfhH58EVUTpYzIV9lUZNi6bKtWH5mFsuTkSUSc7ZEztf4Jn6rvknQw29yte93eer+XUrLvku3xT/E5O4P8e32U1S+lolff8rFmb+kRcwvOdy2VBpal4pXXqn0mfxbVPaWXU3LpPeOMil6WSZR+n/EIeCPLK9bLoYby0Xlchk6rEJG+VTI1OqVYr6qUpwfVUps/yr5frxKVGYXm6V/5UXiXxna+5/4uf6TVmX/JOV/GriYaaDyPD0SNaj4o0G6nibhSzRxd9Vkd4Imq8o0UVmf6SbVMDxWjSnx1ZjxuxqLelVn7eLqWLlUR/UAYkqrk92zBtUW16CPSw3M4mpworQG6T21UB2BhS5aBMRp8atUC4NeNfFbXBPNYzVZEV8T1R8YrluLSya16OxaC5+EWvz3pxb+erXpY1ob1S2YmVibovLaOP2vDrpL6/DMow5WD+rQt6oOqndwbnldzE7UpfvDuhT/q8vNAfVwMa/HqlP1UJ2E7tXr02BIfcrW1KfApz45T+vzvGYD0oc3QPUV3vg24PPzBlTVbUizMQ3535aGGJ1vyOaXDVFdhuTxjajc0YiBlxphkduIcO3G/J7UmLF7G6N6Dnn5jRnVpgknjZpQaduEZTFNSC1qwpiOTVEdiP85NeXSzab0+d6UmO7NGL+wGelHm7EmvhmqH+HfW5uJS7Up8dTmdIo20zSaozWoOXdXN0d1J+RZcxrWbkHOyBaEbmrBgcAWmL1swdjGLVG9ikaWLakKbUnJ+5YUtGpF3lT1bFvxKaYVqnNRrXNrms9rjd6h1ky+25rVpa05qtuGWNM2qD5Gm5Q2zNRoy5FBbUld0xbts20xyWhLSN12qK6G8bZ2RF1sh3ZuOyybtyfPoD0zrduTEN0e1eO42rEDQ+d24KZzBybe7UBGaQfM9f7jr9l/qI7H8Ef/8bpaRxyGdmTQho589OvI6ayOGDfqhOp/5Fh2wj+sE5s+dGJcu860mtmZ7w6dSbvZmegfnfHu2QXHJV3Y5dGFDSldMNfsyoohXVm1viuqN2KZ1RWnRt04Ld24srsbz8K78fNjN9p06I7qlGw52J3AO915Vdqd1r11mL9MBx8vHT6m6qD6JvYje5CzuQeDL/TA400P/jTviemUnjy07YnqokQU90S3ey+CFvWil1svwh70YoSGLsmDdVE9lV9+uhzL1qVfEz2eT9TDap8eetF6vC7SQ3VYjOb3pr5Lb1Lv9+Z4VW+WDvwf/df+j5q+/0P1W6436sNp+mC7tw/rovqwoKgPUzr3Zdz8vqjuy8jEvuj/7cvEQf2Yta4fy/z6sTO7H8ea9Ef1YlKt+vPzSn86fO3PlG4D2LdoANFuAyhJHoDqzGweNpBYi4FoBQ1kzpuBXGgxiGpGgzA5MAjVp+n6cxBHdAdTsXQw608O5n3aYBbXGcJL/SGork3+5SFYfBzCvw5DcZ07lF5HhpKQMJQVVUNRPZzwdcMw8R9Go5xhxDUbzh7D4QyzG07FteGojs7BXiMwXjqCnidHoPF0BNl1RnJ17EhO7RqJ6u+s+zSShZ1GYTR/FHJsFGMfjEJfczQTho1GdXvmXRiN+dvR7Gk9BvcZYwhzGkPa3TH8+jMG1fsxWKPPbl99wrL1+dR0LDqGY1llN5aQ62NRTIAJeuPwXD6OIu9xSMY4/BqMR4vxrN03HsULGF88nmidCeiaTiDgxAS6pk0gsI7Qe5ygWAJECplFwsauUGcxBHmA4WP4XnMiijNguHMif8MmEv1pIhadJ9Fn4SS+u00i9uEkFINg1ujJdN8xmarLk8ksmExMJwNOLjDAxs0AxSdYqGWI0WhDZIch+mGGjPlkyLjOU5i8cAqKXbDs0RS215zK4TFTCdo5lfvhU/lUOJXGXY1QXIPVnkZ4pxrxtPY0GoybhuHuaRyJmkb6l2ko5sF60+nc9ppO82fT2Vh/Bo9kBn2sZuBxdQaKh7BOdyavl89kts9MHr2YiUGTWTw0mMWM/bNQrATz37Mo6zubw2tm091/NnGvZrOs5Rxqz5iD4igsip9D/b9zuDNkLjs3zWVg8Fx+5s0lpsM8FGPBwHUerR/O47OWMXFjjPHZZczeSGOWfDFG8Rf6ms2nw6n5NM6YT81GC9CYvIAq2wX8u7EAxWZo0G8hbdYuRDdgIWPeLMS49SK2zlqE++FFKG5DruZi6o1czIjti9kQtpiAwsXkdjXhvyUmKKZD0DMTvjdYgv6kJRyzXcLHG+rv30s43c8UxXtYFmjKw1xThrY1I2iOGe1czHBPNqOR1lIUC6Kp5VK8opbSpXgpET2XMWH5MrJ9lrElaxmKExFhtJx5TsvRiF9OyN/lLB62giZbV/AgdAWKITGh60pqLVnJY6+VnEhfycpG5gw1MKfhAXMUXyKh3JzAQatwtljFluBVmH5YxbROqxm/aDWKPTH46WoGNljDkElrGGW3hom31jDnzxpWDlyL4lK4X1xLeP5a0jqu49fCdbQ7vo5JT9exo8F6LkxaT67detrcXo9x+Xq8Bm3gtcUGdC5tYOvHDSieRSuTjVh4bSQlfSO9GltwyNCC7/YWLLpngWJdjBi2ibCtm+gZtomAok1009lM0NLN9PXZjOJgTG6+hZfTt7Dp0BbqJm0hqPpWJo3ZyhfLrShGhv73rZT03obf6m3MD9hGs7fbSGu3HTfj7Sh+Rscn2/lSbwc3J+7AxW4H5rd3MK5iBx2H7ESxNQpCd5JWuJNb3XcRunQXvj67OJm9C48WlijuhucRS7yTLQmsuZvIcbuJ37ebzGu7KSndjWJy6G7cg1HwHrZ+3INPl72kLNlL5am99Mvci+J1BEzfR96hfeg82Md6LStixlqhtc+KudesUCwPm9bWXB5izZs51jTeas0EV2t2halvj61RnI/O9Www6WmD90QbclbY0H6/Daa+NgTcsUExQAZW2bCvrS3Jw2xpZWzLqu22xLrbUj/SFsUHiSm2pVFDO9bo2ZFgYEeX1XbYOtjxPsAOxQ4JfmdHE8397PpvP+9H7cdo0X5uWO5H12s/iivS8Pl+7H7u50/TA1j0O0DhtAOs2HCAd4cOoJgjbx8cYHnBAQpq2rO+mz2/xtuzb6k9dWzsUTySrrfsicqxhwp7sls7sHGoAzXnOXBmmwOKVZIR4cCWNAealTgQ1dAR496OVBo64rfGEcUx+XXekXP3HZmW78jf6k5c7uyE2VgnWpg6oRgndqedGHXDibJsJ6L/OLG11UEGDjlI6ZyDKP6JldtBiDhIo7SDZBcfJLChM1t7OzNhijOKjVLg5MzNIGfcE51Z98EZtA7Rqesh/o07hOKm3LI+xLkzhzhw6xBrXx1iZuUhRrQ9TPfhh1FMFc2dh/nmeZj30Yd5nn6YlB+Hudf0CNf6HUHxVsI2HiHkiHoh6j1U/xep73WPcq3nURSLJcX8KM/tj/Iu4Cjf4o+imXeUptVd6NbZBcVpmWHqwmorF+x8XDhz04UbOS68rHChss0xFMNl/PxjrNp5DJfjx4i9coz3Gcdo/OsYo7VdUXyXMzNdebrJlZrHXBkV5sq2VFdCv7pS2MANxX5ZMcWNwLVuFBx0Q/eiGxYP3IgpcEOjtjuKC+OJO+9XuDPggDt2/u48j3On13t3rKt5oJgxfcd64GzqwUcrD+SMBwG3PKj52oPVVR4onszAkZ54L/REa7cnm0568irWkylZntwo80SxZs4NOU6Lecc5tP04Wp7H2Rd9nPL04+z4eRzFodk+4ARlM0+wZ/MJNF1P4Bh+giZpJzhVcgLFqInq48X4aV6kb/Bi5REvykO8OPrIC50vXih+zQK9k5QansRt7UkGOJ8k/eJJtiefpE3hSRTbxrznKRpPPsX1Vepvx1M0DzpFfOIptn08heLe5HT3xhVvJq/0ppq9NzcDvNmV4M2QfG8UE+dq19PsnnCaMctPo7X/NA/9TuMRdxrT96dRvJzyzj4kj/Ph1FIfNtj6MM7Xh1b3fCh+60OS5hn8Op3BauwZFpudYZTNGTqcO4Pm3TPk555BcXYiOp7llP5Z7E3Pstn6LKZnzzLtzln0c8+iGDw6Hc/RTv8c2qbnaGB9jlpnz1H9zjk0c8+h+DyaHX2pru9LLVNf9buvyt++tLvji06uL4rdo9/Rj2n6fiwx9WOztR8Hzvpx6o4f4bl+KK5PXkd//un7097MnxE2/iw858/eu/6ce+uPYv587hSA9rgARi8NYLVtAJ6+AcTfC+DnuwCUD2B+l0AOjw8kflkgFXaBDPIPZGN8IJfyAlGugJ7dzrNGzhOy4jzfDpxnSOB59t0/T+KH8yiPwGKdIIInBlFuHoSBYxCng4IoSQpCPgWhHAO/el7AyOACF9dcoJbzBVYEXyAh5QI6ny+g/APFeheZM/UiN9dfpPuRixwLvUjV44usLb6IchNM6RvMrenB9N8UTNCxYP6LCObE02Ca/ghGeQvqDbzEwdmXqLvtEoc8LtHoyiXcn1+i7e9LKKeB3tAQrhqHMGFXCE+9Qlh6LYQf2SHYV4SgfAdhI0OZuDiU3L2hWPqE0uJ2KJFvQlUnuoxyIbiPvczQpZd5ZXsZO7/L6MZfJiPvMtZaYShPQjZhHDQPY4RjGF+DwvB9EMa8wjAa1gtHORRspoQzan045YfDiQ0NZ1dqOCNKwvnbOALlV3CaGcGMLRG0cY8gPyqC8IwIrEojMGoZiXIvfDOOJGFXJCdPRrLpeiSTcyLpUhXJ3/ZRKC9D7JIovKyjsDwXxeJ7UYx9H4VOjWgadotGORverozmkUM014KiufAgGq/CaA7Wu8I+vSson8OqDVcwPXqF+WFXmJ12henfr2DULIapA9WbE8O07THMOh6D8dUYTLJiWFkeg0Xbq+weeRXlgfDYd5WAM1eJvnOVpLdXyakWy7cusdSWWJQjYrhDLHOCYtn8IBaXwljC6l0jTe8aP6ZeQ/kj1XGusTz8GoeeXuPKj2u8075Oo8HXGTXvOsot4eN1nbRr19HKuc6Iquts7nCD4DE3yDe9gfJOmPjdwDv+Bjn5N+hQ6yZmPW4SMPkmRWtuopwUu0NukvD4Jk1KbmLS5BaX+t+ictYtjLbdQvkqfsXcwjDrFn7lt6hoe5u5o24TbnKbhta3US6LR/du0yfvNq5adyjtfodFk+4Qt/oOes53UJ6Lao/vsLH4Dq8b38Wo/11uz7pL/213CfS8i3JguGXdpX7FXezb3aPa6HtYLblHlfU99vreQ/kxbPLvoVUrDucecTQ1iOPU2ji6HY4jLDQO5c5I+RbHwmbxfB4Yj9XceJrtjCfIK54x1+NRXo1Nf+Np0DGBC2MTmLgsgY/7E3AMTKBXUgLKubGl3n3a9L7PPaP7rLW4TwvX+8RF3sci4z7Kx/GkVSK2wxMZvCiRor2JapcmMv9uIk3fJ6JcHU7dk2BSElprkkhwTsIhJAmD1CQafUtCeTy8Bz5gxdwH9Nn5gAqvByRdf8DxVw9Y+e8ByvFRd3wyb5YnE2WfjHNQMsuTkxn1OZnWDVNQ/o9nM1KI3JKCu0cK22NSmJ+VwpiKFLq1f4hyg5SaPuSt7UMe+T/k+v2HXCh4yMm6jzik9wjlDdli8YjVro8wi3rE/OePmFX2iGltHjNl5GMMTNSzfoyh72OM4h8z88Nj5tVOxaRXKiunpKJ8I7tdUnGISMUjPRX/0lSiWj3h/vAnZC16gnKR1Dj3hHZxTxiU/4RptdJY2zMNR8M0AtenoTwlH8PTqJuexv9K05jV6imWw5/iu+ipyj5PUQ6TLnFPmZH/FOtazwjr+Yx3hs9ovuEZBi7PUH6TmPRnlJQ+o1frdFaOSFd8LJ23Vul08k1HuU/8P6RTUDuD3roZbJ2awY2NGWi5ZjA9KgPlRflUlqG6y3McRz0ne8lzets+x8b/OS/uP0c5UxzqvSC39wtGTn/Bic0vKHV/wZyYF1zJeoHyqezukEmufiYsyyT0QCYtgzKxSc7ky+dMlGslqV8WQ2dncWF7Fm29sjh6PYsar7PYrZGN8rCsk2w+mGez9GA2uZeyMUnN5vW3bEy1X6IcLebzX/J590u2+Lyk4s5LDrx/SeOaOXj3yEH5W2LX5zDZJYeXETlsyMihWlkOJ9q8os+oVyi3i5ntKyr9X+GV+Iohha94Xv812/u8VpzoNde3vsb0+GtqXntNSM5r5v57jUbnNwRPeIOx+RuUEyb60htWpr6h1fc3PNTOxXpILoMX5PJ1Ty7KF2N2L5d2+blk1XrL8V5vmTf1La0s3pLt+hblklma+ZYeFW8paf+OWP132C17h5H9O9peeMenFPXt6zsONnnPooHv6TvvPVqW73np/Z6I2+9RDpoVWnmM7ZFHB8M8KtfnkeOSx43IPM48z0P5aczb5TN1TD6DlubT/kA+tYPy+ZGcT+6XfJS75taAD4TO/cC5XR9w9/6A0+0PWL37wHatjyivzWrDjyrvf8Ts2EeWRKn3Qr1y9X/7ApTzZvWyAjbaF7D9QgFWDwtwKi7Aveknzg36hPLh3Nr9icc+n8i9+4kfeZ+oXbuQ9rqFDDIqRLlyzN0LsY0pxCe7kBtVhbzsWETF+CLamRehPDrLQ4pwelJE2I8iMlt8RnP4Z/QWf8bY+jPKsRN1/zN5nz7TosEXJvX9wp5ZXwjf/oUCry/8d/ML83O/4Fb9K6ndv1Lf4CsG679y0OUrKZFfUW6e6eVf8WhfrHhUMV2WF7POoZgrF4vRfFyM8vZ4a5dQNKSEEQtLOLyvhNxzJQxKKOFgQQnK6TO8zzfcZn7j67ZvGHh9I+jGN2rlfsO8+neU70fX4DtH13/np8t3FkZ9594L9a3iO54dfqBuAdi44gevHH8w5dIPbqb+oM+PH/i1+Emr4T9RdwJo2fxkr/9Pfif+ZHPRT4ob/mJ9/198nvMLdUPAF+9fWNz5xc/3v7CsVYqmbilORqU03VyKui+gR2wp0TmlTND4zbMuv1k+8Te/1/zm4JHfqNsDojN+M+XPb/LblWGlX0ab5WVccShjdnAZ6i4Bt+9lDGrxh8xhf9iz+A+dbP6Q5P8Hi6Q/qJsF4hqVs3FAOe3mlZNsWa4yTjm698p5lV+OumdAeldQMb2CiK0VrDlRQdcbFbx5U8Gp6pWoWwdaGlaSuaESL9dKFl6p5L/sSvKqKgnuVMVmqWLE6iq0DleRFlbF6fQq1papb+3+Uk//L+pGgjCHv+wP/sv81L/0/fGX2i3/8W74P26Y/EPdT7At8B+zkv8x4Os/6tbR+D9D9xwf1rkHYDy2bdu29cRu0thobNdu167d6nWs3U51h9TI7WozqbXau+8fR7/zxk6+zyd8MJLgsYsE18MkELaCA+US7OqQYPM0CVYukWDZegnm75FgxpAEwl3Q81yCNhlJ6vUkqXaQpCxIkqJkSfKKJREmg+xJkmQukCRjtSTpO8R2VJxfEbMnkgivQa6WFPk2UhT7SVEeL0VNvhSNDVK0j5NCWA4m/STFrF+l+PqgFMsvSLH6gRTbPkqxR00a4Tw46yXNrRhpnuZI87lWGtV+aUzmSOP6vTTCgJA2KE3ZWWk67koz/Z003yjLsNVUhgPuMggfwr9ZMihUy2DRI0PALBkylstQv1mGqX/KIOwIu4dlOP9ahpcKsmgay+LuKktKuCwNGbIIV8LGTllOTJfl6VJxf6MsPvtkyT0pS/8tWYQ54YCcHA8N5NB0liMgVI7SNDlmlMmxrV0O4VGQXSKHx3o5CvbIMX1Ijl9vyHHzuRzqsvIIq0KDozzLg+U5niLPpxJ53NvkKZsiz9eL5BGOhQ+7xOyEPJXX5Vn2rzwnpRWQ11Mg3EEBYVzYmqzA/WIFrFsVKJ6swNKFCpxdo4DWLgWEf+GLawoce6aAkrQiCbqKzLRX5GigIsrJiggbw7wWRU5PUkR/oSIFaxT5YaciI8cUcbmmiHAz7JJSQkpXiUR7JRYEKnE1SQmHYiXaW5QQpgblhUrkrlFi1U4lXhxTIuqaEvOfKXFTShnhbZhkr8yZQGXskpXpLVbmeIsyFpOV6VyojLA4WOxSpvu4MkPXlLH9V5lx0iqc11XBw0EF4XQYSVYhokSF5a0qvJ2sQs4iFX5Zq4LWbhWE4eHkdbH2uQrzZVR5rqdKtqMqvwerYpiqivA93GxTJW6qKhsXq6K1XpWeParcGFKFm6oI+4OhnBqTDdR47KTG6FA1BtPUcC9XY3mHGsIF0b1UjZENamTvU2P/STV8bqux6pUaegrqCDPEBxd1msLVuZWhTk6lOse61ImYqc72b9QRnohVf6pjclqdhSPqqL0VD6OkgZSpBmPdNRDWiM5sDf6t1qCpV4NHszWo/06DB1s1GDOogXBI1N0T8/fivqomz8w1affS5E2MJv25mgijxLQBTVS+1OTrHzUx+lWTnw5q4nRRk18eaiL8Eoc0tMi01uKarxZj4rV4na/F5EYtNCdoIWwTbqu02Lddi9SjWly/okXLUy2kpLRZoKONcE/sDtQmLVmb4WJtelu1UZ+izepF2oSu00aYKBqHtJG7qc33L7QJlNPhjIEOzc46KIfpILwUsRU63OrUYcIMHcy/0WHfJh2K/9Thv1M6CEtF5FsdhpV0mWaqi5OHLkNRurSN0sWgVhfhrKico4vSD7r8/LMu+Qd0kb6gy8YHuuR80kUYLDZY6ZHrq4d0vB5b8vUoatRDaYIeO7/SQ/gsDHbocfioHj1X9XB6pscVKX3m6uoT6aCPsFusS9GnuFQf7XZ9jkzVZ8ISffw36PN0rz7CdVF6Wx/D1/qcVjBgrrEBCW4GyEYa8FeWAcJ8EdxrwLvZBuz4zoDubQb47zfgzTlxfd8A4cEIUTfks6Uhf/kYMhVDEvMNUW805Mx4Q4QVo2yVIQ47DHl21JAdVw2Z+MyQJGkjRD2McGRsCDaiO9WI6DIjNDqMuDpNzJYa0bfRCGHMMDxlxINhI3a/MeILJWOKTY3x9DBGJtoY4c/YWGvMxH5jcuca4/qjmP9qzOWDxvxy0Rhh06j8z5hQLRMMbE147m/CiUQT1hWZMK3FBOHWiFhkgtk6Ez7tNuHKkAl7bpqw/KUJY+VNEaaNCFdTrCNMkcsy5UGVKUM9pvwy25Sl35kivBtV+01JPm+KzwNTTD6ZIqthxlMrMy76miEsHJsLzFjWZMa0iWa0LzCjdI0ZqbvMCD1hhnByGL8wQ1nOnI8G5jxxNud6mDmnMsw5UGmOMHRsmmXOj9+as2irOV8MmjP5nDl9981p/WiO8HWUW1lQ4GvBqHgL0gosSGyyIHaiBZELLBD2juBdFgSesMD/hgV+LyzwlbPE19ASPxdLhMsjINOSoCpLQnssiZhtScx3liRssyR1vyXC7JH3wJLST5bUaFjRbG1Ft58VExKsmFlohfB8fDfJinULrfhtrRV/7bZiaMiKyzetuP/SCmH9kDO2Rs/NGrtIa/yzrYmvsSa/z5qGOdYIB8hXv1iz+qA1uy9ac/KRNXf+s+ajlg3adjYII0hUsg35JTa0t9kwZ6oNa5bY8PcGG67us0H4QXRHbPB6a0Oasi2NZrZ84WnLhhhbjuXaImwhKuNscZ1vS9pKW1q327LgqK14P7TlyjNbhDvETt+OJCc72kLtWJJux58VdtzrskNjlh3CJFKx1Y45g3bsOGfH7ft2qH+yI1jDnlpre4RXZDDBnueF9li22JMx2Z6Ji+z5eZ09t/fYIywj3Lan77U9mxUduGXigJ6HA0nRDkzMcUA4R54MOGA7z4GiFQ4s+t2B/x1xQOGqA1HPHBAGkh16jrx0dMQj1JHGdEfWVziK588Ru1mOCB/Jqq2OjAw6YnvekZoHjqz95MhDDSdcbZwQdpLfEp14V+REWKsTU6Y4cXSxExobnMjd54RwldwddsLjrRO9ys4Mmjmj5uVMXqwzK0c7I8wloeOdmfWVMxdWOWO305nO487sv+6MzgtnhMfkN0MX5F1dyItwYUOWC5+rXcjsc2H1HBeE1ST9V3F+yIWPl1zIeiLWSLoipetKgYMrwnGiluZKbbkrf3e6YjbTld7lrpzb4or3oCvCePLkvivJn1zZoOGGso0b9f5uHEt0w7XYDeE/eTbFjawlbmzf4IbRH26MP+XG8IgbCe/cEDYUPQt3xnq7MxznTnK+O781umM20Z0ZC9wRbpSi3e4cHnLH55Y7P75yR03Rg34TD+67eyBMKYdyPPCv82DNWA8M5nswc6UHH7Z70HjMA+FNyXou1sh6EmzoyVYXT+wiPFme5Yl2jSfCoiI515O+Hz15/qsnDYc9GbnsSelTTy5LeSGcKqccvUgN9eJYuhcJlV4c6vYibrYXB77zIuZncTzgRexFLw4+8iJewptj2t6k2HvzT5A3wrdyscyb4k5vhmd4U7fcm2dbvOke9Oa/c94I+4rGZ2+WavpgbevDpgAfApJ9GCzxIa3dB+FiqV3mw+tNPkz5ywetsz78eM8Hz48+/KXuizCz3PbzpSPRF/liX5a2+uI61Zc/l/gyaqMvwtMy/rQvund92fDelyg1Py5Z+tHm64dSgh/C2hLa4sf5yWK22A/VDX6s3edH7Ck/bo74IRwuJqr+7LbwJ9/Hn3f4s7TAn8Bmfy5N8kcYXczW+/PnXn8q/vFHfsSfDW/9SVcJ4JV5AMLvEkkAd/MD+LIpAL9JAVxfGMD0dQF47g1A2F6mDgeI929xrhzIdPNAfLwDuRkXyNz8QIT75eHEQJYtDCRxXSDv9wSy/mQgBcOBqL4NRJhg2syDsPUO4mJcEHPyg4hqCuLtxCA2LQxCeGGM9wZx6mQQs4aDiH4bxEflYH4zD6bZOxhhiRnJD+aHpmAKJwVjuCiYc+uCWbA3mMx/ghHOmJNvg5mnEkK6RQiaPiGcIoQFBSHkNIcgDDJXFoXww/oQqvaF4HgqhKcjIfz2LoR+1VCET0bJN5RT8aEsKwyloiUU1ymhvFkcyt8bQhF2mdGnQ7G9G8q/70PZpxaG+Fcp5PuF4ZgYhnDNHG4NY8nUMMYsDSNoUxgqf4Vx/UwY2+6FIcwzeRrhuNqEIxUQzvmkcDaVhDOlPZyC6eEID43SlnBu/x3OnnPhLHwQTvPncBK1IrC1i0BYaa6mRLCzLIJFnRF0zIwg89sIPLdFoHEgAuGoxef8CLZJRPKVTiQdDpHkhEQSmB6JSWUkwlgzPDuSI99HsvmXSBYciqTvciRlTyOJl45C+GsMnaOQCo/iYWYUZ6uj+KMvivVzo1j0UxTCZtN0NIqCa1HEP4/CTy4aW6NodNyikY6KRrhthsdEc3ZsNIfmR7NzVTQbdkbz3YlovroZjTDd9CvG0GIaQ5VnDAWxMWTmxZDQGEPkxBiE98ZrXQzOe2MQ7gPzkRgM38WgoxqLhmUswoKjmBCLXFEsMq2xSE2NRXJpLBKbxPaX2M6K6/ti/knc14xDzjYOxcA4VFLi0CiLQxhyDGfGYf5tHDbb4nA+EIfXxTgCH8cRKQkJupDpCAWhUJUBzVXQ1wvT5sD8H0HYczYcgR1X4eC/cEY2ntuG8Tx3jUcqKh7h0rGpi8d3XDx8FU/e6ngadsUzYSier2/FI8w6e5USOGWWwD2vBD7HJaBbkIBrcwKxkxMQnp2uDQl8+UcC604nsP9uAtc/JPBePRE9m0SEdSctOZHG0kRmdySybkYih5cncndrIvIHEhEOnoTHidRJJvGFbhKbHZP4JzSJVxlJGFYnIYw85XOTmP5TEpt+T+LM0STeX0vC6kUSifLJCD/PN+7J7I9O5kluMoYNycRMSKZ5gZivTUbYel6eTMZyJJm0d8mMU01ho2UKV3xTUElMQbh7GttS+G5aCieXpSC1JQXfwRRqz6ew/GEKwuQjq5NKsEMqLSGprElP5WplKrq9qaTMSUV4ffb9lsqbI6l4Xkul/nkqq+XSuGmUhql7GsLyszA3jdP1aWhMSCNtQRpz1qZxfE8aKv+kkTwirt+lMaSajoZVOpl+6SxMTOdCcTrG7emIBoCV36Rzf0s67vvT6byQzu5H6UhJZpCom4HoA7gcmoFNZgaN1Rls78tA6ssMUlZksGR7BqIdwPNGBuNeZnBMIRND00xqPDP5PTYTufxMRFfA6kmZvFmUSfyGTJb9kcnj05mE38vk64+ZiOaAYNss5gVmMZIizsuzmN+Vxb1ZWYR/n4XoEXh6KIv4K1n8+CyLDzLZjDLMZqtrNspR2YhWgcG6bMzHZzPwdTaX1mQTsCebxSezeT0s1r7L5jfVUehZjaLbbxQXEkcRVDKKb9tHITFjFKJx4NDWUeL9fhTzLo7i9eNRFErl8LdeDo7OOYj+gbdZOZTW5nBkIAev+TksX5WD3K4cWodyEG0E8W9y+FU5F0uLXOb65PIxPpe6olwutObCtFy2L8vFfksuSwZzUbyQS9+jXB5JjKZEdzSiqSA2bDQ7M0fjWjOan/pHYzBvNHNXjkZm52hEb8Hzm6Opez2aW0p5FJjnccY7j9T4PA4X5iFaDPZNzSNoWR6/b87DezCPrefzcH2UxwaJfESnwTrHfBzC8lmbmY9jTT7r+/NxnpfPppX5iIaDn0/k43crn12v8wlTLmDQvIB4nwKG4gsQfQeXWwson1bAg2UFtG0p4MNgAVMuFKD6uADRfmClV8gmp0ICwgvZn1VIRm0h1wYKqZ9fiOhCmLGrEP3/FbL6diF+bws5qFJErmUR93yLEM0IKiVFfN9ehNeMIg4uLyJ/WxFPDhQx+VIRoidhi3QxAgFx1aWYjshiVHKKWVlXTOj4YkRrQuvaYpT3FrP6n2Ii74h174vpVS9Bz6YE0aGQkVLC07IS5nSV4DK7hOPfl9DwawmqR0oQjQppz0v4V66UBcal+HmUcimmlHF5pVg1lSL6FRoWl6K1sZQdf5ZScrYUuQelbP5cSo52GaJtYU1IGRkZZXyoKmNVXxnpX5bxcUUZa3eUIboXJG+Vsfl1GYXK5ShZlLPTp5zahHIMissRTQy908txWl7O5a3lzD1QTsSlcl48KWeNdAWil0HdtYL9kRX05lTgXl/ByPgKli+oIGtdBaKlYfBUBQN3K/D9WMFTjUrW2VZSEVSJWVolorNhUU8lmXMqUf+pkuO/VzLrWCXxNyqRf1XJIcUqpplVEeddhXx8lXifqmJWaxXJ06pQ+6YK0eewcH8VeRerMH1SxS2patboV9PoUo1PZDWi3eHvumpmjq8mY0E1Ruuqub23mk2nqum+W43oelDRrOGCbQ0rgmpoSashtLIGpV4xm1ODaH7o3F5DzPEadG7WMPyqhl+VaplqXkuuTy2iB+JDUS1DbbX8NL2WzuW1JG6rxexgLS8v1SJaIX6QGUOX4RhS3MZgGz2GT7ljONswhs0TxyA6Iso3jCHkzzHonx3D8/tjGPo8hvXadUx3qEM0RkRl1mFRU8fn/jquzqtj76o6vt1Vx9j/1SH6I8Lf1WGpVo+0dT13/Os5klzPprJ65nfVI9okCn6oJ+K3euyO1qN6vZ4XL+q5rNDAoGkDoltiAQ2MLWygurWBjGkNBH/TgN3WBrQONCCaJh48aeC8dCP7DRr52bWRH6Ma+TK3kfENjYjeieJFjaRtaCTiz0a8zjZi86ARvf8aUdRpQrRQPAttYjiziYs1TQwNNLF/fhO7VjexbXcTopPi+5EmFr9vYp56MzNtmpkU2MxAajNdFc2IhoqGOc3U/tRM5fZmSo83U3SzmYLXzeQptyD6KnJ8WxiVKLYSsXWI65li/l0Leb+0INoriq62UPq8hUr5VmpNWmnwbKU1rpWuglZEl8Wkqa3MXNbKvC2tLN7fyvcXW1n7pJVt0m2IZov9rm0MRbVxMbeN4YY2nk1s4+OiNhQ3tiF6LqzPteH5sI0IiXbSdNspdmqnKbydcdntiNaLH8a1s+3rdgbXtnNubzv3T7Xz8W47Gp/aER0YgfYdpIV0UJnRQV91B/P7O1g7r4M/V3UgGjGe/a8DxZEOrN53EKLeSY5NJ62BnXyR2onox9jf08mNOZ18+qkT4x2dBJ7oJPdWJ11vOhFtGb9ZdnHWr4vXSV3ol3UR0NVF/uwuBn7oQnRnDB7t4s71LpRfdeGu1E22eTd9Pt38kNCNaNJ40t6N7sxuQr/rpuqXbuYe7mb71W7xO+5uRK+Gr2kPpV49fEEPOwp7GG7tQXN6D2HLexAtG8sO9nDkcg9vn/VgL9dLrnEvMzx62RHbi+jcMGnpJXVqLxOW9fLrll7u7u/F+FIv6U97EQ0cuwz7eObWh11MH0V5fSxo6uPY5D5klvYh+jg6B/vYfKGPe4/7sJbup8ign6Wu/ZyJ6ke0c6Q09jNrUj+HFvcju6mfmL/7mXS+n78f9SO6OiL1B5jkMsBg5ACyuQPQMMDMiQMcXzSAaO7I+muAxecGuPxwAEvJsVTrjWWj81ieR4wlMOf/DNz1g8jnA8Bx3V3DDMOCw7SZmH7rms5N15gZX30dLl26dt1d7s51p+vu7u7+Pj88n3jqP3i/3iL94C0xUm+ZrveWC45vsQh5S33GWzbVvUW0esTPfscciXdc3/kOlzPv6Lv/jgNS79DTfYfo+FgX8g7pjHck175j8TBJ/pktSegKSWbslEQ0fvjcl2SclCSXdCVxcZBkRIgkZzMkcayVRPR/OE6Q4uxsKYYvlsJphRTnN0oxaqcUboekEG0g4/+UEndIceOZFNOkpAhUluKBrhTzzKQQ3SDPvKVYFiJFWpwUMhlSrC2WorhWig8dUoimkOYJ0pjNlubkYmlGSEjjuVGamzulmX1YGtEb8vJPaSQeSFPwTJoPUtLsVpGmQ1caezNpRIvINB9pIkKkeREvzcpMaYqLpdGtk+ZQpzSiU8R7ogz358iw+HsZMiVkUNskw55dMvQelkE0jNz9S4ZFD2XIei6DhrQMqMowpCeDr7kMom9k+WcZSkNlME6Q4UyWDFNLZYitl0G2SwbRPtI9SRbPb2R5tESWFatkqdgsi/luWa4clUV0kWRel0Xrb1mOv5BlkqwscWqyKOrLss9SFtFMEuori1S4LDu+yjKQLUtAmSyvG2XZ2iOL6Cn5MkWO1/Pk2LpMjv7VcgRukePdXjl+Py6HaC0JuymH3GM59r+SY5y8HPEacqgbynHSWg7RYZLtL4dRpBzXkuVYmidHVYUcTs1yPOmTQzSa9E2TJ+RbeRR+lOfIWnlmbJMne788n07KI/pNVt6Rp+2JPF/eyCOjKM8hLbHHRJ5cW3lE28mDQHk2xMgzkCpPdIE8H6rludgmz7JBeUT3id9MBWQXKnBsuQLzNihQvkMBt4MKvDmtgGhCmXVfgeL/FHCWVOClsgL7dcWcmQIlDgqIXpS3IQocjhdnMxWoLlbAp04B+U4FzgxXRLSktM9RJPx7RbRXKnJzsyIbdisy+qgimecUEZ0pL/5W5NALRb6VVaRBTZEQfUW0LBW55aKIaFCZGKFI4VdF3HMUkS9X5EKTIqt6FRkxWgnRp+I4XwmpH5Q4s0YJia1KDNsv5k8o4XRJCdGucuGJEmveKDFWUYlCTSW8jZVQs1XilocSomtldowSDalKRBUo8alaiRdtSpwcFHeNf49oXila+B6/5e/R3vCeR7+/58Ch9yw9856ha+8RPSw+z96jJSXWVN5zSO89P5m/Z6TTe4p93iNaWYwS3vMy6z1nS9+zoeE9M7vf0zJCmeTJyoiOFvWlyvy9WpmjW5RZuVeZSceVqb+gTOJNZURji/orZR7LK3PigzLrjJSZZaNMh5sy2V+UEf0txinKSOYrc71KmX2tyiwfEHeMU6F5hgqizcX3ZxVM1qsgvUOF2wdVOHxahTXXVJhzXwXR7VIqqUKMsgouuiromqnw2lGF6z4qHApVQTS9zMtSYXipCjX1KqR0qeA3QhWLyaqozFVF9L5cWa0KW1RZu1eVb4+rMvqiKk03Vcl9rIpogXGTV8XogyoKRqr8a6PKVXdVDgWosilaFdEJM61Alf4qVWpbVckaEGfGqeExUw2zhWpoLFfj7QY1Hv6uxsVDahw8o8aWP9X4+YEac5+rIfpiulXUqNZTI8dcjVgnNfw/q+EUpoZJohqiPUaqTI1/G9W41aPGuVHqHJqqzrb56qz5QR3RJTNnqzoT9qszeEKd1kvqVN5WJ++JOslv1BHNMv5a6riaqGNtp46RpzqaQeooxqrzNl0d0TPzoFad6x3qXBimwcmJGhyYo8HO7zX4daUGonVm+W4NlhzV4NvzGsy6ocHkRxqMfanBcDkNRAdNh4EGTVYa1LpqUOGvQXGkBnnJGmTlaSAaab62aBDXr0H02A+Ez/hAyHcfCPz5A/7rPyD6abwPfsDz9Afcr33A9f4HnJ99wEnqA44qHxBtNfbmH7BzEuOzGGFiJIqRLebLxHqjGD1i/yhNnKdq4jJfE7cfNPFYo4nXVk1Ek43fSU0CLmsSfEeTsH81iXqrSaySJonamohemwx7TXK9NCkK1qQsTpOaDE0aizVpq9NEtNwMDddi9GQtJs7VYsZSLeat1mLxFi1+2quF6LzZdFGLHbe0RPyjxbHXWpxV0OKaphZ3jbUQDTivPLSQDdRCLUaLj2lamBdq4VijhU+7FqIPJ36CNpmztSldrE2DhDY9m7QZvVub6Ue1Ee04K25os/mRNntfanNSTpurGto8NNTmlbU2oitH74s2VlHaeKZoE5avTUqVNsWt2jQPaCOac6bO0mHRIh1+WaHDzo06nNypw/XDOjw9q4Po0dF7qIPt/3Twk9EhXk2HQn0dmi11GOmqg2jVWR6pw7ZkHU7k6XCzUocXLTqo9utgNlYX0bET950uRT/r0r5elwm/67LokC4bz+hy+E9dROPOi+e6aEjrYq2qS+BHXdItdKlz1mWkny6if2d9ktibq8vNCl3eNuui26eL6xg9YqbrIdp4+n7SY/Z6PX7Zocehg3rcPK2H5DU9DO/rIbp5UqT0qFfRY9xHPZZZ6LHTWY8rvnq8DNdDNPV45uiRXK5HY5Mek/r0WD7mI0z/yO0FHxG9PZbrPhK2/SMlBz4y7PRHFl/7yO/3P3Lt2UdEi4+ZykdC9MS6+UdGOH9kqe9H9oaL818/Ijp97Ms/Et/0kcbej0wbo8/66fqcXaDPy5/0EQ0/Idv1KT+gz7jT+qy8ps+J+/o8e6aPoZQ+wSpiTU+f8Rb6/OKszxlffV6H62P+VZ/oHH1E+8/sZn229elzY4wBKtMN8FhgQO5PBoxYb4BwAfjjoAFvThtgdc2AxPsGdD0zYLG0AYdUDRBmAKYWBsQ4G9Dma8B3EQYcSDLgaa6YrzBAeAJ09hmwZKwhx2YY8uo7Q2x+NiRtvSHDfjdEWANcOmOI0p+G+DwwpPy5ITNkDNmpZshjfUOEQ0CCiyF9foZIRBpyMdkQ5TxD/CsNqW0xRBgFHB5nxJuZRjgvNKJwuRFTNxqxa6cRTw8bIfwCsv4yYvzfRmx7YcQjWSPM1Y3IMDBinLURwjbg8RcjLKPEvhQjJhUYsbPaiGdtRjgMGiHcA2bPNubQYmOkJIzx2WRM/S5jlh415sJ5Y4SJQPQjYwZfGrNJ3pi/PxhjbWRMgY0452GM8BJQiDEmOM2Y7kJj1tYa86DDGKthJhRONEFYCpxaYoLaKhOifzVhxF4Tth834cVFE7xumSCcBSTemHBH0QQrLROKTUz4zt6EC14m6AWbIAwGpmeacLxE3FFvQnyXCeNHmsIUUxTmmSJ8BkatMWXPVlNk9psSdtKUEVdM2X1X/D81RdgNjFQ2Za+uKfJmpkQ5mjL2sykHw0xRSTRFuA5MLTflZJMpOr2mZI3+xPzpn7iy4BNmP31CmA/8vOMTDw9+wu30JzqufWLLg0+8e/6JcOlPCA+CY/qf0Lb8RI7LJxb5f+JW5Ceckj/RmvcJYUUg1fqJ6IFPTBlvxtlZZpguMqNyhRmrN5khHAmCj5gx7rwZJ2+YYfjIjLKXZqySN+N/H8wQxgQTbc0442GGWaAZtTFmbEw3Q7rIjIRaM4Q/wY3h5rhOMqfvG3MOLDVHZ7U5JVvMWb3PHGFTEHPJnDl3zLn5rzkeb80Z9t6cYzrmmHwyR7gV/OZjzvtQc3ISzPk525wXZeJMozlze80RpgV+0ywYv8CCiz9Z4LjOgoHtFhw7aIHZaQuEd8HeBxboPbegRtqCrWoWqOtbUGJpwUZXC4SFQX6kBb+kWCCXb0F2lQUr2yyQHrQgc7wlwslAarElGRLie7Ml0rstyTpqyaoLlsjdtEQYGqx9bYmSgiVFmpZsNrFE3c6SSk9LdgRbInwNmjIsocQSs3pLerosOTXSCscpVoyeb4WwN/BbY8XMbVb8jRUxp6xYctWKt/esyP7PCuFyoKFiRZ2eFVhYYelsxZCvFZcjxLkkK4TZwdNKK5JbrFg1YIXKOGtqZlrDImusV1gjPA+u77Im9Ig1i89bI3nDmqJH1ux4ZY2pvDXC+uCasTXBtmLd0xqpIGtKYq3Zk2GNVbE1wgHhTpc1sSNskJhig/o8G5qX2fDHGht8ttogjBDenrKh+IoNe+/ZYPefDZOkbPhHxYYMPRuEH4Kpsw0j/Wy4F2HD1yQbNuTZYFhpw7BWG4QtQuI4W9bPssVwkS3DJWy5u8mW5F22bD5qi3BHGHvTlsePbcl+ZctOBVvsNW2ZYWLLaztbhEnCsWBbfONsWZJpi2qJLZ31tvzVbUvCSDuEV4LFfDsm/2jHy7V2lG+z48QBOwL+sGP5NTuEZcKI53Y8lrYjX9WOg/p2+FjasczVDi1/O4RzwqMUsZZvx+FqO/zbxLkhO/Qn2DN2jj3CQKFqpT3nfrUneo89m4/bY3fRnrm37Xn/xB7ho/BQyZ4CbXuOf7In1MGe9T72WIeKPYn2CDuFgTJ7/mmyp6xX3DPGgfjpDuz4zgGPnx0QrgpGvzsw7bADcmcd6PnLgcd/O1D+woELcg4Ic4V9Rg58sXFgnYcDdoEOLIp1QC/dgcnFDgiPhf5OB56OcKRusiM35jmSt8yR02scSdjqiLBaCDrlyOarjrjfc2TFM0espBxZqOqI/kdHhOOCmosj4/wdkY10ZDDZkZf5jnRUOfKkzRFhvHBvghMVs53463snClc6celXJ7L3OHHmuBPCf+HEbSe+PnHiyFsn4pScOKjjRPQnJ/Y7OiFsGPaGORGe6MSeHPEud2J3s3j3if+xzgg3hr0LnYlc7sz+jc5E73Tm4BFn4s45c+SGM8KU4cQrZ9LknTmj6Uy2sTOX7Jwp9HTmerAzwpvhXqYzDSXOPGlwpqPbmVejXBic6oLsty4Iiwb1dS7M3OGCwUEXFp1xwfpPFyQeuuD+PxeEU0Owugv7DF1ItHbhtLsL+QEu3IhxoS7NBWHY0F/rglynC5NHuKI32ZVF81yxW+bK2jWuCN+GfbiSdMqVC1ddKbvnyqNnrvRIuSKn6oqwbzC0dOVHV1c8/F3ZHuVKXIorZwtcKa12Rbg49A+58n6iG3O+ccNqiRtrV7sRvMWNo/vcEGYO9y+70X3HDcWnYo+kG9bKbmzQcyPC3A3h6VDm68bTCDdGJbuhk+fGD1Vu+LS6waAbwtrh3mx3+ha7o7bSnUW/uuO+x509x93JvOiOcHjoe+KO+lt3lrx3x1vHnYNm7hQ4uvPkszvC6MHgqzurc90Jr3DnfIs7Df3uyIzzYO4sD4Tfwx4JD3I3efDPbg/GHPPA5IIHG255EP+PB8L2oVfRA01tD5Z/8iDUwYMLPh60hnqgnOiBcH8IKPfgTLMHjX0eKI315PuZnnxZ6MmZFZ4IEwjlXZ78cNSTkPOeXLrpSedjTzRfe7JK0RPhBXHT1JPhDp6YeHuyJdSTzARPnmZ7Mq3cE2EJcbjPk+oxXijM8GLZQi/Clnvx10YvhnZ6IZwhtp/3Iv+GF68fe/Htay++KHhxUcuLPhMvhEHEVm+xHuLF2wQvFmZ7EVzmxZ9NXozo80L4ROyb4U31d94oL/dm5UZvknZ68+8Rb2af90bYRVx+7M3QK28sFbxBy5s6E28+2Huzwdsb4RrxLsGbpdnexJR586jJm5l93viN8eHaDB+EeYTTch9ObfShZ6cPZkd84LwPTTd80Hvsg/CQqFTwQV3Lh02mPhTZ+6Do7cOaUB9yEnwQVhIry33IaPJBss+H5WM/kzbjM+8WfubnFeJ7o/je9ZnlRz+Tfv4zkjc/I/HPZ7Jef0ZW8TPCWCLP9DNKDp/Z6POZktDPaCR+ZlvOZ2rKPyP8Jfb1f6ZtrC/mM305vsiXwRW+OG/y5fJuX4TNhP8FX+7f8mXeE19i3/jyUsmXFTq+5H7yRbhNbPvsS0OYL6ZfxflcX4ZX+uLR4svNAV+E6UTsLD9eL/Zj9Uo/Sjb7obPHD4770XvRD+E9cf1fP+a88yPuvR/vdP1YZ+5HlZMfxr5+CAuKMcl+BOT58aTKj5/a/CgY9EN7gj+H5vgjnCg+r/Ln0RZ/ftjnT/4Jf3Qu+3P4rj8j//NHGFI8VfFn5Ud/yi38MXHx56y/P1Oj/IlJ8Uf4Umyt8aej3R/XYV+4N+kLy+Z+oXDpFwx++YKwp5jKF+JPfUHh6hd23//C4LMv+Et/4bnaF4RLRZPVF5zcxNmAL/wY84WytC+YF33hat0XhFlF7ogADKYEcG5+AHN+DCB9bQDa2wP442AAwrMi9c8ANB8GcPJFANPlxL9GAFpGYt02AGFdkR4UgF6cOJ8ZwNzSAHIbAjDuCeDq6ECEg0XZgkBsfg7k7oZAJHYG0nQ4EI9zgTy/EYgwshh4FUioQiAKWoEcMg1kqkMg6d6BGIQGIvwsluYEUlMeiGtzIP/1B7J1XBDDZwURvSgIYWtxZnMQC/YEUXYsCMeLQfx7O4jf/g1ixLsghLuFlm4Ql8yDWOocRL1vEN4RQbxLDuJAfhDC5CKvLQjroSAeTwzmt2+CGbU0mKTVwRj+FozwulhzKpi+K8FE3wtG+1kwV6WDkVALpks/GGF58cEtmCsBwayIEXNpwUQWBaNVF8yfXcEI54v+KSHEzQ/B4McQ7qwLYdOOEEYfCiH9TAjCAOPp3yHseRnCTPkQyj6E4GkcgpxdCGe8QhA+GJ3xIcRkifNlITxoCmFbXwhTxoZSPCMUYYchvyKU85tCkdgdyuDRUFIuhGJ1K5QXT0IRrhiL3ofSphNKjFkoxk6hPPENZX9EKN8mhyLMMSKrQjFqC+WfITE/MYwF34TRtiSM2NVhCI9MqAthHDsVxg9Xw+i/F0b6szAcpcOQVQtDWGWstw5jknsYFQFhBMaEoZcexuPiMA7WhyEcM/pHhpM5NRy3b8NR/imcm+vD+f33cOYfDkcYZyRfD8fxUTiKr8K5rhDODi2xZhpOp304wj/DNTQc1cRw7uWEs78inKUt4QwfCKdoXATCRsNwcQQvV0Zw7tcINu6NYNaJCNouRZB6JwLhpqEpGcE/KhGc+BjBGssIprlG0OIfQUpUBMJUQ7swgv9qIzjTGcGmEZHMnRJJ77xI8n+IRHhrmG2PRPZgJLfORHLgr0gk/o5kystIWuUiERYbfsaRmNhFIu0l9oREcighktXZkcwsj0Q4bRT0RRI+Ngq7mVGoL4riP4koLm6OYueeKIThxuRLUbTfjiLv3yjC3kVhrxyFpl4ULyyiEL4bB/yjWBsVxbzUKIYXRlFbE0VaRxQBw6OxmRyNxrxoXv4QzfW10RzZHs3mg9F8fyaaiX9FI1w4Sl5EkyAXzecP0VgaR6NuF80rr2huh0QjzDh2ZEcjUR7NN83RjOqPpmVsDIUzY0hYFIPw5LDdHIPunhhkj8fw5FIMf96J4djTGLZLxiCsOb79GMMEyxh6XWKo9Y8hNyqGuNQY/AtjEA4dRp0xqIyI5c2UWP6eH8u1H2M5sS6W3TtiEUYdP56NZe71WCY8imXgZSxN8rGUasaSYRKL8OsI8I7FNTQWy8RYPubEolIRi2RLLP8NxCJsO67MjuPU93GwKo7tW+JYty+On0/GsfBKHMK9Y8KzOIZLx9GlGkejfhwVVnHku8WRFhCHMPEIS4/DvzgOj/o4HLrjsBwVj9G0eHQWxCO8PBQ2xCO5M54XR+L593w8D2/Gc/ufeP58E4+w9DitE89xs3gOOcWzzzeenRHxbE2OZ3N+PMLZY3V7PCuGJfDTpASWzk1g8bIEFqxJYN62BL45kMCs0wlM/zOBqQ8TmPwigYlyCYz/kMBY4wSEz8corwRGhiQwIiGB4dlilCcwrFmMfjHGJTJslhiLExm+UoxfExmxN5GRJxIZdTkR4fox9r9ExkslMlE1kcn6iUy1SmS6WyKzAhIR5h/z0hNZUJzI4vpElnYn8tOor6yY9pXVC74iPEA2b/jK1p1f2XnkK/vOf+XQza8c/+crp998RViBXNP5yi2zrzxw+sq/vl95EfEVyeSvyOd/RTiCaLd/xWhYEhaTknCYm4THsiT81iQRti0JYQySejqJvD+TKH+YRMOLJDrlkhj6kMR4kySEP8h33kn8FJrE2sQktuYksb8iiZMtSVweSELYhPw7O5m33yfzflUyuluSMd+XjPPJZPyuJCPcQtKeJVMknUy9WjK9BsmMtUlmtkcyS4KSEaYhOzKTOVKazKXGZO71JvNiTAqKM1LQW5iC8A7x3pRC5O4U0o+lUH4xhY7bKYx+msIcyRSEhcjmjykcsEzhgmsKD76k8CY6BfW0FMyKUhBOIhFdKWSNTKVmair936Yy9edUlmxIZePOVIShyOXzqfxzMxW5f1LRf5OKk1IqoTqpZJqlInxFhnxTmR2ZyoqUVHYWpHKmJpUHHalID09D2Iu4zEsj4oc08tam0bo9jfGH0lh8No1fr6chXEbuvEpDUkHs1UrDzTSNGIc0SnzS6A1LQ5iNrMxLY19VGtfa0ngxlIbWxHScvkknamk6wnOkb2s6cw6ks/Z0Okf+TOfOw3RkX6RjKpeOsB7JNE6n1S6dKd7pSISmQ2I6N3PSka5IRziQBAykkzM+g67ZGcxaksG61Rmc/C2Dx/szEEYkTlcziL+fQe3zDMbLZrBcI4MDRhnctc1A+JHYBWcQE59BdZZYL89gRXMGh/szeDguE2FL4rI4k+SVmbT+msmsfZlsOpnJ+SuZvL6XiXAnCZHOpEwtkzGGmaywyeSoRyZPgjLRictEmJQUlGYyvCmTH/syOTQ2i8czs9BZlIWfRBbCq2TU3ixWnMjixOUsnt/NEl1VFuFSWdSoZiEsSzZbZ3HVPQv5wCycY7NIz8iivySLZY1ZCOeS/8ZkYzIjm6iF2TSuyOabzdns2pPN/ePZCAOTwDvZVD3NZrpUNltVs7mln80Hq2z83bIRPibTYrPZlpHNnRKxvyGboJ5sakfnMGdGDsLO5PGKHIw25RCzO4eOYzksuZTD8Ts5vH2ag3A1yVbJYYx+DhuscrjuloNmQA7BMTk0pucgzE2ONOTwpicHx9G55E3PZcLCXH5bkcv9TbkIj5P4Y7n0X8xl1Z1crj7NRUMylxCVXFo/5iKsTs645aIYkItfTC716bksLMnlZEMucj25CMeT2ul5LFyYx8kVechvysNvdx4Nx/L4/lIewvhE+WkewZJ5tKvksVw/j6tWeWi75REbkIfwP9mQkceDkjzMG/LI6sljyph89s3I583CfIQNSu2mfL7fk8+F4/loXson9k4+w//LZ4tUPsINxUE/nzKrfBa453MmMB/12HxiMvIZUZqPMEV51puP65gCamcUsGxRAdckCjDcXEDGngKEN8rhywUo3i0g7L8CBqUK+E2tQDR1BXhaFyAsUlYGFXAvrgCbzALKSgv4vqmAq30FGI8tRDilzF1cyNmVhej8Wkja3kKmnyzkxJVCNO4VIgxTpsgUcky9EDXDQhJtCpnsWcjR4ELU4wsRvilTy8X+5kI0+wtJHVfErNlFnPm+iI+rihD2Kd/uL+LKqSLMrhZRer+IH/5XxF3ZIhw1ihAuKuvsinjmVYRfSBEDCUXsyilCvqKIuJYihJnKHxOK0Z9TTMGSYpb+UszdrcW4UEzbH8UITxXJh8VEvShmknwxf2gWY2hSTIl9MT/7FCOsVXy+FjOYW8z+qmLU24rJHCpm4aQS7swtQTisdK8pYdf2EpQPlpB2poTvrou1RyW4vSpBGK3s1S5B41MJOY4lLPMt4XFECf7JJYwuKEH4rRh3lFA1vJT1U0qRnF9K/I+lfLO+lJu/lyJsVwbOlXLoZin6/5RS8aaUde9LkdIt5at5KcJ95b5/Kb5RpYxNK+VMUSlWdaW0dZWye1QZwoSlZEEZa5eXIb2xjJRdZXx/rIwnF8sIu12G8GK5IVmGl0oZo/XLOGtVhp1bGb0BZRyOLUNYsjSVlLG7sQyd3jKqxpTz28xy1BaVUyxRjnBmUdxbTu6JclZfKUfmXjmZz8qRkClHUr0cYdCy3Lacd57lpAWX83NCOW+zxXe5mG8pR/i0ZIyvQGJOBTJLKsheXcEvWytQoIKCPyoQdi2qDysof1HBNvkKdDQrqDepYK9DBSY+FQjXlmNJFdjmVTCsuoIL7RV4Dqtk0uRKbs+rRJi3zF9XybMdlSQdqmTFuUrkblRS9LiS395UIjxcWnQqOWpeib1zJaP9K/krqpLA1ErmFVUirFzSuipZM6oKtWlV1C6o4sDyKqw3VjFydxXC0SX4YhXf3anizdMqciWr2KJahb5+FV1WVQhjF5/AKmbHVfEss4qM0io2NlWh21dF59hqhL/L58XVzF1Vzcst1eTuq2bbqWpMrlYzdL8aYfMSLlst+qpqlIyrqbWr5qh3NW6h1cz8Wo1we8mprGZ7WzXmQ9WMmlTD3bk1JC6rYe3aGoTpS+/BGq6drSHieg3LH9eg8bqGdsUaLurUILxffnSuQdWvhtbIGi6k1hBcKObqalDrqkFYwFyeVkv4gloklteivbGWvl213DhWS/zFWoQTjPHTWkZL1fJItZYs/Vp2Wdfi4F7LrKBahCFMVWYtp8pqCWiq5cf+WjTH1dE/q44739chfGG2/1Yn9KQ6Zv1Rh9S1Ouof1HH+RR0RcnUIexgTkzomONTxP586ysPqOJlUR1BeHSur6xAuMWOH1/N8cj3l8+o59WM9oevq+eX3ekwP1yPMYt7crKf+n3ouva0n/n09W/XqcbSo51vXeoRnTH90PX+n11NQXM+xhnpCeupZO6YBixkNCOsYBYkGujc3cH9vA/knGjh+pYHQew1seN6AcJCZr9GAmlEDw+0a+M+rgeqQBi4nNpCc04AwkvFrbWD1kLhvYiPfzG1EdVkjI9Y28r/tjQg/metnG8m+3sixx41EvG5kq1Ij7jqN/GzeiLCVmePfiFpUI6PSGnlT1Eh7XSMPuxspG9WEcJdJ/66JIyuaiNzUxI49TXw+3sSay03Y321CmMwYSzcxR72JD4ZNTLBtQt6ziaHgJl4lNCG8Zh5XNFHb0sTtwSZKJjRz5Ztmspc2c3pNM8Jy5ujBZmLPNLP/ejNhj5r5/XUzAYrNbNFpRjjPbHBuxsOvmTVRzbikNrOyqBmHumaWdzcjDGh+nN6C9XctLFvRgtWmFpbuacHyuHhfFu+74v1MvKXFW12sG7bwg20LNp4t/BTSgrCjWZ7TgmNFC6taW3AdbGHtxFY8v2ll47JWhCvNb9tbCTzYys6zrYRfb4XHrcS9buWYUivCnOaseSu5zq1c9W+lLKqVO2mt1Be18qS+FeFR82Z0G8NntKG4sI1JEm1obW5j7t42Pp1oQ1jVON1rY93zNvxk2tip0UaMURvH7drI8mpDONZUJrbxKLeNzso2JNvaGDusXfRQ7cyb144wrpFY147XjnZ2HG4n+lw7J2+2k/dPO7fetiP8a17ptTPKsh0N13bmB7RjHdPOmox2AkraETY2ab3tXBvbQd3MDv63uIORqzpEz9DBd/s7EG42m691EPGgg5MvOiiS6+ChZge9Jh0oOXQgTG2swjtYn9xBaH4HJ2rEno4OHo3oZGBKJ8LbZsHPnTht6GTbrk5hHHRy+WInDbc7efu0E2Fx80m1kzUGnYRad3LKo5PyoE6ex3cyNrsT4XQj0dJJ0EAnJyZ0UTani+dLuxi3pgvjbV0Iw5uwM12cvd5F7aMu3r7uYoZSFzY6Xfxm3oXwvbnh30V3VBdqaV0sKe7Ct76Loz3irtHdCPubqYu6sZboZuuv3aTs7ebuyW6GrnSjd78b4YITIdvN5Q/dtBl3o2LfzVKfbr6EdfNHUjfCDEeuupvvOrrxHt7DsSk9VM/vQfqnHuZv6EF44hw7KuYu9CBzu4cFT3v4LNnDSdUe6vV7ENY4Szx6CAzq4Xx8D+1ZPXwo72FlSw8xAz0Ih5xh3/RisrSXLWt6ydzWy9ODvUw724vz9V6EUU7N614UlHpZpttLmHkvf7n0MuTfi2l0L8IvJ6+4l1cNvczr7cVvTB/nZ/bRvagP/ZV9CNuc7H19vDjVx7xrffg96OPiiz765Pow1uxDuOcUOfQh/bmPJRF9RCT3cbugj3G1fTh29iFMdJqn9qO9oJ9Ny/vJ2djPm939LD7eT/ilfoSXzsRn/bhK93NavZ9uw35MbPvZ5dVPZUg/wlJnbW4/mZX9vG7r5/thA0RPGuDveQOibx5AOOv8+fsAY48M4Hx+gNO3Buh/MoDluwEOqQwgDHYMrQbY5T5ATeAAWnED/JY1QFnZACrNAwifnYLxgyjMGWTN0kFyfhlEdtsgqw4OknVmEGG3I/F4kIzXg0gpiW/dQTLNxbzLICu/iD3RYn/6IKtLBsltEPf0DrJ+7BBFM4dQWTyEMN+p2DKE1v4hfv9jiPprQxg8HIKXQ3TIDyE8eE5+GmLIcQhn3yEuRw4xIXUIv8Ih7tYNIax4boz4P0N3FV/l1SxgfLu7+94p7u7F7cGd4C7Bgrs7gQpwKO5OKC2EtkhxissHwd0dSopDoZy5mvVba2ZevZ6/gj8NCtx2Bb28Cg6GFYS/UTAwtwKZI0+2EgpGlVNwvrKCAiiYXF/BzaYKSrVWIDPmedJdQZVUBYsGKXgzQkG98QrWTlWg+EGBzJ9n60IFlhUKuq1TsG+TgtBvCgbtVHB6nwKZTc+EUwqun1NQ8qqCWbcVPHuooMYLBctfK5C59TRXKNmiU2KxKunuVnIgqCSaUDIspxKZaU+hYkpmlFHysKKSKjWULK2r5GNjJc1aSl17JdZuSnr0VnJ4gJJvhisZM1bJtclKSn2nRGbhkzVfSb1lStLXKNH/rKRLhpL925XE9iqROflcOaGkZKaS/7us5J+bSuo/UPLzMyWmV0pSPkjf/5Rk16qYYFZx26miQkDF4piKf7OrkPn6bC+iwldaxeAKKs5XU1GsjorZjVT8k6xCZu/zaxcVtl4qUvurODVURf4xKr6bpOL5dBUyl5+N81SYl6rotVrFiXQV+baomLFNxbPdKmRmPz8fV2E9q6LPJRWnb6godF/Fj09VZGWpkHn+ZHxR4daoGWRSc9GhppRfzfyomk/Z1Misf3YXVhMvpWZ8eTX3qqqpXlvNuoZqjMlqxAHgVGc1hXqqmd1PzZshapJHq9k5UU1kuhoxArg7V2qWqFm/So05XU3qZjWZf6gpsVuN+AF8Pqamwxk1By+qyXVDzYx7al4+UdMkS43YAoS/SB+1hntGDTg0/OzT4IxqGJxNg7gDVCysYXVJDYbyGvpU1ZBZS0PphhqWNNcgJgHdO2s41UND0X4a5g/R8N8oDZ0najiWpkG8An6aq+HfxRo6rtJwdIOGgps1zPlD9nbJ3kHZOyZ5ZyTvoobP16X2nobjTzQUydIgzgFfP8s11FpOG7WUdGhZ4tOijWrpnU2LGAh8W1gr96fFUl7LoKpartfSUq2hlk3NtYiPwOjOWh720NKgn5ZtQ7QkRmtJm6jlVZoWsRP4a66WAku0zF2l5esGLT02a+X9Sd/dWsRVwH5cy/AzWu5d1FLvhvS4pyXpqZYZWVrEXKD9Fy3H1TqKm3Qsc+gw+nUMiuq4lU2HeAz8VlhHvJSO6eV1vKuqo2NtHScb6iiVrEOsBmxddIzoqeNhPx2Nh+rYPVpHnkk6fpquQxwH+szTcXWJjhqrdWSkS68tOvn/dHzYrUOMB84e11HhrI6Nl3QEbuqYfF/Hq6c62v+jQ/wHyv6nY51Gj9esZ6JTT5ZfT7uYnpPZ9YgNwfoienyl9UyqoOdVNT0d6uj5XyM95VvoETeCUFc9ab30fOivp9swPRfG6Kk2Wc/WGXrElGD2fD3KZXr6rdFze6OeBhl69m7XU3CvHvEmsJ3UMyZTz9+X5bq39Jx+oKfCcz2/vNIjFgU/ftWj0BnoZzFwx2WgcdDAgbiBYjkNiFOBt5iBKWUMfKhooEcNA1frGqjbxMDulgbEsGB5NwOuPgYmDTTwbriB7uMkZ4rkfG9AfAsKLzSwcrn0WWdg6iYDn7Ya6L3TwK19BsS+4NApA6XPG9h41UDsjoFZjwxo/jYw9I0BcTFopzSSqTdS3WZkh8dIgbCRFUlGvLmNiJnBl+JG+pcz8qCykZYYOV3fSJVmRra1NiKeBstTJLevkemDjfw30sjACUYeTzPS7kcjYm3AYiO7VxoptsHI+l+NxP4wMmeXEeNBI+Jw8PZ/RnpdNHLnupHke0ZOPTFSLcvIzndGxOhgndpE1GRijsOE2W9iQtTEh2wm+uY1IX4H7UqZuFDeRN1qJg7WNlGukYmMZBN525kQ24NgLxOz+pswDjMxfoyJj5NM9J9h4sksE+J+cGWpicZrTBzfaKJqhok/t5sovtfEpkMmxARhWaaJwBXpccuE6aGJic9NfH5lYshHE+KF0ENn5q7FTBu3mYtBMw0SZo7lNFO1gBmxRChV1kxGJTP5a5pZW89MUlMzi1qZ8XU0I84I5lQzUwaZUY40M2q8mfdTzQz4wcyLOWbEIOHeCjPt15u5+ouZ5r+bOfunmXoH5BpHzYhPwv4LZspfN7PjrpkST8xseWmm4Dsz6Z/NiF3CKqOFuMPCYp+FYNTC3GwW3HktzCxsQVwTppe3oK9mYVJtC6pGFsYmW/jc1sKILhbEPGFwfwuvh1roP8bCy0kW+syw8GyWhR7zLYiHQrc1Fu5vtNA5w8Kd7RY67LVw65CFtictiJVC6ysWrt6y0PKhhcvPLbR4beHSRwvNFVbEUaGZ1coFt8SQlfMJK01zSSwgsbjEshIrS6wp5/Ulr6nE1lLX0UrzFCvir9BisJUrI620nGDl6jQrrX+0cuMnK+0WWxGbhQ4brNz91UrnP6w82GWl20Erj49Z6XnGirgtpN6w8vKelQFPrbzJsjLkvZUPX6yM1NgQ04WxThuqgI3JMRv6HDam57NhLWpjZmkb4r0wt7qNYF0bSxrbSLS0saq9jVzdbKT3tiEWDBnDbZQcZ2PHFBvlv7ex//9sVF9o4/hyG+LEkLnJRvJvNq7ttNF+v437R2z0OG3j7/M2xJDh/R0box7bUL60MeWtDctnG7NUdnxGO+LLkOSzsy5iJ382Oxl57JQubGdPSTvVytsRe4aGte1cbGinTbKdu23t9Ohi52VPO0P62xGXholj7Jgm25k1w45/tp2l8+3kXGZn0xo7YtbwZ4adKjuk1147jQ7buXLSTsdzdh5fsSOeDR8e2hn3wo7hjZ2Zn+wElA6W6x3ksTkQ64YyYQcHkhzUye3gXEEHbUo4eFDOQWoVB+LgMK6BA2NzB7PbOAh3drCmh4OC/RxsH+JAjBxOTHTQbLqDmzMdpMxz8GqJg1GrHeg2OhA/h/B2qdnjoNAhBztPOKiW6eB/lx20uuVAbB36Pnfw6ZWDyR8dOBROFumc5LQ6yXA7EXeHowmn/HNObhVw0qu4k/dlnUys7MSGEzF5yNlMcls7qdjJyYkUJ8l9ndwf7KTfKCfi9ZCW5sQ308nKuU4KLXGya5WTWulOLm52IpYPWbudjPnLifmEk/lnpd9lJ1tvOqn8wIk4P7R95eTpByfDvjoR/Jw5FhffuF1sCboQA4hTOV20KeDiaTEXw8u6MFR2Mbemixz1XYgPRNXWLjI7uuiY4iIr1cXYwS7so1wsneBC7CB2/+ii3lwX1xe76L3KxecNLr7b7CKyzYW4Qnz7l4uTx120PevixSUXo2+6sD2Q+mcuxBxi3wcXDb+6uKN1M8DiRu12MyfoJkfCjXhEUMDNlWJuepV187mSmx9quknUd7OlqRuxirjQ0U33FDcfU93MGOwmOsrNrxPcVElzI44R3efK2WI3361yE0+Xus1uqm1zc2m3GzGO+HLczcyzbrJdluvddFP7gZsbz9z0f+VG/CPmf3WTX+dhn8VDE7eHR0EPIxMe7Lk8iI1E6eIeTpb10LGyh7c1PaTV9xBr5mFraw/iJnE9xUP/vh50QzwsGuWh8EQPh9I8tJ7pQUwlJi/xEF7tYXO6B8GbuL5N8vd40B/yIN4SxTI9HLvsof0t6f/Aw3fPPXzz2sP2jx7EYuKBzssoqxe3x0t6yEulJC+XcnlJLehFnCYWl/NSvIqXE3jp1MDLp2ZeZrXxkqezFzGcaNHPS9YQL9NGe0lM8rJ9upeGs7w8nudFfCeCa7xs2eilVoaXu9u9jNgr1zrs5eeTXsR+4uYVL0Nve3E88rLhhZcqb7xc++RlkNKHuFCss/mo7PVxNexj0Deyl8fH+kI+qpT0IWYUQ6r6cNT2kd7QR7VkH7fa+hjexYe7lw/xpKg1zMe9MT7GTPYR/M7Hb7N9NFjg4+kyH2JNkdjk48+tPpJ3+ni1z8cPR3zkOe3j0Hkf4lDx+Y6P+Y99FH/p48xbH70/+zCo/awx+hGjihs+PyOifnzZ/WzN66dBET/PS/lJq+BH/CoO1vHTobGfLy38LGzvp1Q3P+d7+xkw0I/YVmwa56f2VD+Pv/czZY6f7Iv87F/hp/16P+Jesfh3P2V3+bl8wM+QY368Z+Q6F/00vuFHTCx+fOqn4D9+Tr730+s/PyZtgA3mALgCiJfF1HiAnDkDHM4foGuxANqyAVZXClCtZgCxtJjYNEC21gEOdgzQOSWAuq+cD5bzUQHE2WJyWoAcM6V+boBuSwLoVwdYnx6g1pYAYnAxfU+A/IcCnDoRIDUzgP1KgM23AjR+GEB8Ln56HaDkpwCXFUFG6INEbEH2eIJ0CAcRu4vVuYOCCgV5XCLIjG+DFKga5EytIAMaBhHXi21tg7TqEuRLzyDL+wepOizIwzFB0iYHEfOLM7ODDFwQxLc8yM61QdpuCqL8LcianUHEA+P5kSAzTwcpfiHI5WtBRt8NkvQkyKGXQcQKw/YlSIY6RLIpxL+OEMv9IarHQjzNHkIcMYoXDXGldIgxFUNkqxHiaN0QqU1CuFuFEGOMdt1DaFJDpA8K0WBkiLfjQyyaFqLyjyHEH+P7xdJjVYirG0KM2xwi17YQp3aHGPRXCLHJ2H82RMrlEPZbIf54EKLtc+n3OsTGjyHELeOjLswKaxg8YbJCYeYlhamYO8yjgmHENKPkt2FuVgkzpVaYgg3DXGweZkzbMLm6hBHvjGH9wySGhTk2Jkz/yWFC34U5ODtM7wVhxEJjz9ow3TeFcfwWZsfOMJ32h7EcDfP76TDipGG4HibjbpjWT8Jos8L8+i5Myy9h1JoIYqiR7IygDET4ORaheY4IivwRNhaN0KyMrCvJuobs15N1U1m3knVHyU+R/NQIYq+hHhXhlwkRWqVF0M6MsGVuhDZLIhhWRxCXjQ5bIli2R9i2J0KXQxEcJyPsyoyQciWCmG3sfxihz4sIoTcRjnyKMFAZJWGIcsoWRTw3ckWinP8myvg8UQoWjnKtZJS08lFKVosi1huzGkWp2CLK83ZRFnaNQu8o7wZEWT08ijhwKKZG+eX7KG3mRDEvirJjRZSU9VF8v0YRI46Bu6J8czDK2WNRxp2JUuhSlJs3onx/P4r4cTz7J8qiD1Fqf43yURtjgyVGS3cMQyiG2HKk5IoRKBjjaPEYw8rFyF0lxmViTGsQQ9w5nrSJsaBzjNo9Y3zqF2Pj0BhtxsSwTI4hJh2ps2PEF8Q4syzGhLUxim2KcX9rjJ92xhCvjg9HYqSflpoLMazXY+y9G6P/kxjZsmKIZcfULzHKaOI8M8VZ6ozTMBBHFY/ze4444twRKhbnVJk4YyvFKVozzoN6ceY3jVOndRwx8NiSEqdr3ziBIXFOjpK8iZI3Pc7DmXHEx6P+0jjKNdJvY5weGXGiO+Kc3RtnyuE4Yufx97k4q67GSb4Tx/I4zr6/4wx+Gyfv5zji6vF/xgQ4EnzxJciIJuiePUE0X4LMIgnE3KN8xQSvqidYXzdBuyYJ3K0SHOuQYGz3BOLx8WxQghUjEyRPSGBNS/DXjwlGzE1QeEkCsfpYkp6g6ZYE5u0JDuxJMOxQgkInEzzMlLMrcnY7geVRgoMvpO5NgqL/JniiTGKFIQkx/nD4kjgaSWJctiRK5U3iZeEk1pVKokOFJMT/40ydJKY1TqJyyyQ+tk8io1sSPf+fva+Aj+ro3n7O3I2H4A4RIEghOMETgjsUSXBPcQtJsOLuViMtLvUWqSOpY3V3dxzeKi37PTkdNpsloe2ffvT9/d7Ow3POmTM+d67M3c0yNqpt+dSotvy/AdvePCeqbafFUW39V0W1zbw5qu2UO6La1t4W1RZ/JgiDMY7jGI1SWi0EtQJkKKVQ54OoDiOFLGFzlYSoLmXLVADgUEdDVFckHaImABd1LYjq2vS7iOYA/KhbQFS3pN+P6APAn7ovRHU/+v2JKQACqKdCVE+jP4C4A0Ag9QaI6o0w1EF4HkAQcQii+jAMZQh+BRBM/RtE9UUY6vyIEyCEOl5EdTMx1GVwmwCh1OtFVGeIof6n5s2x8+bYeXM889bDzltPiOpEO28pdt4mQVSn2nm7xc7brRDVt4HzRjwJIIj6KYjqp3XegnEGQDBxFqL6nM5bPlQTIIQ6RkR1dZ23KEwTIJR6uojqG3Xe/tvWm79db/663qjtegvETAAB1LMgqmfrvAXjAQCB1A9CVO/SecuH7wAEUR+HqD6h81YQDQQIpm4oorqRGOqi2ChACPUmEdWbdd78UcYAodRljagON3/nvDl23hw7b45n3mLtvNWHqG5g562tnbd2ENXt7XobZNfbYIjqITpvAXbeAnTeqO28BeEuQM/LuyGq77Hz9pGdt48hqj/ReSug6yqYmutKdXU7b8vtvK2w87ZS540rVOeNZ7gR1aHXZN5cdt5cdt5cdt780BnQeeoCUd3Vrrcxdr2NhageZ+dttZ23NRDVa+28PWHnbR9E9X6dt1A9H4Ooz0JUn7PzpuuNmusN1Ha9FdPrWAj1ehHVGXmtt//Jectv5y2/zhu1nbciWCtACPU6EdU3/dest3/n7d95c0EDtUBUG4Ja50eoOT+qOT+qawI68loQ1bW1hL9e5x3qdhDV7XXeAnUeXNScB9XjtFSwPnf5UW+AqN6o8xaKdwD4U78LUf2e1h6GSAECqKNEVJcTQ10IqQIEUqeJqE4XQy34RIAg6k9FVH8mRvVXOm+Cr0VUfyNG9QmdN8FJEdWndN7y4ZwAodTnRVT/Rwy1DTBKIQk4pEvHwRkgA8ARk0E6Qn/WxyNKKx9lGJEfBVEARSlLsuelURgVUQRd6Pmjep3L69W7X4hXvUUoi9t6SzM2CEX/TH8ZC2IsmFYIZaiOOj9rLUxZnPWWYb3lWO919NRhvflYrwOQQrJWhYv0o/SnDKAMpAyiDCZCtNYwlizgVW8p1hvOesvRU5b1lv6L9XJtE+ytT72lWW8E6y1v57fQNevvf3+9/gAppCEdUmtEoK6AAITSCtPnAl5bWG8J3cPkQyS9FVlvDFMEBclCZGGyCFk0x/nhqHZRC3UgtSFC4ahVQMdiWI7jIUvYtRhOBvxP7guvYr7+J/eDVzFf/3P7QAew9CeFpA+GLEQSOj8uOz9+/3P7PZ9wFfP1v7HPu/r5+p953r7m8/XvfP07X/6kozqUWqg5P9rzCtQOdU1KF3UTna//wX2cT7jg/s3tdheEoACAs+7v3T+6f/eVg2G/3O4oRKIgtebwCefzyF/AlvANn7u/dn/rPuv+2Zapg/KojVrIsgvDYZmaKKexQohizPi0/bX7pPu8p8U6cFCeqbVREyzPerL7QUt7IuDoSC2Pfe5M9yH3u+7P3afZ85+1lp5oxfQe6E5ZDy21ZDS6oSgu0LqeXj/UpexKtkAdO2MV0BxF6ElAM1yqyWV742T3RsdTSGvKbTyZ7qfcz7lfd3+q47Kzwh71YJ+6g7b2KFqtbvDz6lNdtFBvV/aogu0Te4QEaE/QjHk4t/jR9o39occB+2P7oXOMgsyf3Z+n3Mfcb3N2TnJ2Lnhmpx7zdtc58tPc7BFjnCGNXa+z00JnyIWfPbPD46O9YJ+gdWl/CtNje4LL141di57jNc+9yL3Gfb/7iPtD93H3eTuWyRjOHOlI0vxpuAFt1EpFIv3JqI8fNd8ktIadTwxlSiWk4NK4hiEAE+gbQnKEOq/+Os6WKI7T7qz4RMZjUZFp2Wsi5+wXw2DGBpG8ciJr1nKO3wUdv+Zt5lkd9njY1c4Sea73Re5V7ju5Qt50f+k+7TP6NK2HYwdHTiahp+1pIjgH0PF7jn8r9ND13R2VqFOgM4BLoyyOCVpbrM4Tx6PH2K5Iz9obonkqwh/FtORg6NGnnX126Nhx1s6Ejh7e61FHDq3VrsYoLV/Ijj7nelzh3uB+1P26jt6e9Tr+dB1vzhlIho4d9VVPQk9UsnObgtY63uKe8eqx19HyauI1Py1JPq2Do8QQzxiLYRCYR2dP1wEuHYuisKvBjohnACpAz0QtUQcJdtzfe+ayGThuex6Us2ehTdMZgNcKcC4GXYy+OPri3os/XqzjHu5ewXPhmD0XfvTUeBG/4jechJvlTuNjbfkUXmbsI2Tac+ECXmL8A/JBfEt5Ah/i0oz+ghdxkL7j2KRlf8Z3jB3A+zhtZ2cVfqLnBfIBbNR5WUl7FmbiR429x9j92K+lj+EHjMdZO0PfYCDTNuBdTfseXzN2H/bZXnXBf9R/FF/hPFPiyRV4B8dtuzVwTtPH4Q7kt3N8BANwr3pn4G109pzRh/EW4lj+cfJ23EMZgbP4ljOV1cMzjD+BL7XcF1jO2Fh8rn3/jHZ1hFGG41NPvz9Bf3rexI1a4hA6MbYMj9kV9QYyGL8bYyifR1O87z7uWZ+vYzpi6H8NZbX+R2n3w3Naz3pMwzOeo30nbkUHvKop+fAK8y3FXZ67SUc8S89oPELZBNU019Poq/phLEEZvMl7KUfP+FPMcxtCKZ8kH8IoO1c7MRWN6dlLLkYf/J67KmM7MJJyOzkFi7SfN9GejHTswfdatjR2a1sh2MWUW9Dejr0RtjHeGzdTXoeteNX9rT1apbBFSwRjBDbbHixEO6xTb0P0YokFGG6PfRWsBbWexw20B/OY7nstn2R7UxJr1B+E1fS3xXydxd+vZK0xDJWp56IE3nZ/6bl31UclFAfPeLInAmz/JyCW8aFopfX1QEXGhtg7wBzafGfhdW33xyBkP3F0h733wQ969ts660Lvf6igJZvre+KT9tjY6x88d0C1auXxtOP9NAYUvNji4oaLP19sxzN/r94FLt0D3TgNnvn4mPIU+Rtetn35FR8xfhKZlBfIl3DCpnyIB8GzHQe1leN4Ua8Im+ya9z7vvc/5jbb0t5jF+I+4X1Pfw37GxpMPIL+O1Z77mroS3zBlIDbYs34mY1/jPnvkj2Kf+t/FCnRR6z+IZ47zeAcfuy9dc75CDfrOkeNwRnPxfGbsDhyxPeJ1wJ7V9mrAWGd84RnPchymJw5jNf0tfK5Xhsdt6ep6jfgM4XrkP6Udhk8o++NNvO7+2jPTN+IQvZ2wjPIN8jFkaA3e5z/PerzmuZ7GIB/K0jcdj2rdr9Lup+f3c1jquXfchY70PIvRmucR2usRquf6M3aepuFO8BzWszqE8mmyGvriCJ/QLo3xYZShdwlu0zE+hQ45zv/GmIq9mnIrFoNnvucasEevAaUpd5O7MNKOiee5XhemaKlF4Nlue+x9zuc82zdjBEvbsx28kqChjmmdXlGCKHthAY6x15fmtIp9hllLuYYsidW2Bp7ZXvf2BrDXBJtaGXMZL4E5Np6KQMZnI1FzZz/12B7rE5/e+e1z4ETVAeA1wNYw1D79V9SUISimmmc96nEtnuRa1KcA6Llv7/72zg9qfe6ra+tqYe/9dSgTyCJw4UfPk6+993vOf577TPV9+vN6/rH3/zoXD1xc737f/aXnmJ/GRebmfV7zvoxfGcvEBZ1zPcM99/GfsMr2bRZ+1PP1B7g963QgvkcX8OzDeRyz98h4fO7Zi/DaYZ8UPqL+lvwO79rrzUkc1zYO4kXVH+B9PGDX1gv6NPCe+mfiPhz13LlnYAAO4By22R7UQH5EMPdZvJx1xmnpjYzvxzGv68gGfG1HsQ8rGH8H4yi/wh24tJ7uxRP0fGmvAHqH1/KH9YlgLPkWbkf2ruZx3INPPefz3Tpz02k/ilfwubblfTXIeRV4WJ9HL7Wc4bkGMKb3+Xy2PO/lek531JRHMA1NcKn9vuD9296tb8NU2KcQhHuuXa/bZ4hXtW+NoWcwytq6edWg5xm9PlTTK8PD+NbTp6f0OtIBD2nLo7ATe+0R6IMdqAqe/SgNnW2e/XqH15wjcQtj7bHd5uaTAbZpSiP0xnXYxL3zx157w5sxwl4DFmIybrKl2iEJw7FV+10Ken2w9/919kqQ8/6fjiCUBHPrlWA12qp3PtKg5z+Oe9q7ATz/NbUNUlFCrTn2bh2IRHDfp2OapE8Ore2Oz+73wCcAFNdZsrsAfRLI9RrAmL332xr13QDs+W/3gEXhxyuEznpezwA6qpz7H7v3U+3gj+7/TS8u413/6z915v+iz/aboOe95xxfhewz357z0OduPG7rjMd56JO21nJWn5vP4Gv3j4zlh+4l7BPFS9ASekXgmW+vAC/iA30K+M6uXX2CsE8O+tyA+6HPC7b0Maxk/Bv7bPCu59nAjaLuiXzKed2O1z4p2B3BBc85mQ9f2dg48FmA6QPwhD1OXzJ2L2ZQvo0vYJ8BVHdGdcR5ejgWbzHP57gdejWAfRKwPfw0j2f/T9kv3+d/xjxPADG2/Guwd39NfRX9Lrvzr4c+32s6n/BVv4JQNLE1PINp4P7A66lf7/Q4xL3fSVsL7/nQO76dDT4joLHm34VglNKj+RD0/FfvVNyqejP4DG3Pwb1YDGp9Lthj27ZPBbo/uAXbkb3zbg9eEaA7AOR4HrAlt2AE9Fqgqe1wE/Ssx1Nuz8zp+a/3f3vur4U+21/x7l8Zdub0CV/P/hxP6/rGw+4Hitvd/STYHQBSYNvWfYLnKUB3/7rvh6bqjl+f+lm35xnA3vdfdL+v7y111uw1oCj07u/zRsi++UERuyJzefuhPc0+//XdF2lyef/1uddbrxDkpz8fwuwzjB+CoP2Eo1fZUI0ZiLYYCAbPyPOzFMvaPCEIZiyIeTSVdfnrWFz2qmRyvLtdntwr7sHh++IAxFfpWC5+w1ft4oHZ8SfefSD+hzHFm61Pv+Ui7UzmOeiTX/Mxv5YD41n+rHQwZOXPKsfyM7PqoX1ZfhIXnPVxp+a54s+76sX/tCA5/j/PrKT9cPx3rX+MPx2dqO3TzmSeTN/8zKf5WU7jWX6ma/tZ+VlO28+qh7Zvfu3Pby2TVF+Kn6lfQjUAm/52HKhZNg6afptqklrLU2t5ai1v00Gt5Zva8tRaXjVJbdu17Xm3Q3rXa+vTdN/yNo5L7TSx6aqZbuNQzfTGNl31PzoH5D85B9RZfVFt4zoX1J71xbHYdGRpnQtq7aMtrxrsqy1PreWptbxNR5bWubDlqW27tj3vdkhPvTbdU49PedVMt3GoJpvYdNVMt3GoJhuT/+wckP/kHNzcyNXUrHq/6bL4znE1H92p17TPlreMH/bJxvhdcUWbFX3lx2Z9GgQ8dXJW8yc/GvJz5vHD+zOnzc3IbF1zfuZbN43IfD29a+aGtk0zO6fEZL70fUTmnqpFMltsDsoEkFm7xKmDMyt+ePC9d1842PTE/oN3l73/YGjNDQdHfr6cnHzwxcI9Dj69NuagX7JzsNLUuw7s6nFu/9/Vn9vviMmskhSVefezxTPzdS6Q+cay4My6sf6Zk36VzDdWnDp4oP2xgy/8dvvBrze1Ojjm68UHkEcw7AuVtp3VJtvSNjhWHSPHpmPiWHQM+IdCzJCMuLRt++J3dPy4Wb05BTk/Q54sfnOhJyu++UZmatM7M+dlLM1MazQus0eLbpnPp//tx+uAPV4H7fHKtMfrSXu8EuzxirfHK94er3h7vOJtf+Jtf+Jtf+Jsf+Jsf+Jsf+Jsf+Jsf+Jsf5r8Xf2x6yferp94u37i7fqJs+snzq6fptCA2b7arp9Mu36a2fUTb9dPvF0/cXb9MO+1CJf3066fTLt+Euz6aWbXT7xdP/F2/fxtx2t48rjklJFDMTgtdTxsZOCwkakjklMwsk6DWIysmyXqWWGT0KlTL9Rp2Xn8ZKhsNSUVCWNSRyYmD0X37q0wpUFsTGxdJHTrhM6tunRWkRVPtKUGpo8clzp4eDI8xT0eFvfYDK+Qg8jZBSmiqLtahyFdwFwqURMIJPMXzIUtAdgiYgkU4OTjHjS4faKAVQe8XnBhy8NPHQXg+KQ7PukBPun+PvEoByhPliNdnvo4VqvjrXbbugLJIDKYDCFDyXxkmNYKFCQLk0XJ4mRJsgwZAbZBRpNVyBiyNlmfbEI2J9uRXcle5GByNJkOnTesIjeQ95MHyVfJr8jfyOLC/pLXk5PI28inyFNkpAESybXkG2QZBxhDPkNWcAErSeMHzCML+AP3kokBQCEO9BPymSDgAAf7Cgfr5mA7hgFP5KfmQAMKs40igD8H2oMD/aA0sCMceCSK4+dAj1YGPq4G9K0FdIgFHm8M7EkAWrYFZnYBJiYBNQYBL40EhqSy/lnIGYR9ImuSXckJ5GrySfKMHVtXQx/5ChnpMA/5JBnpop+EHzDbjm0XOSiAaYEsT74SRAZznCFMz8e0MMbzs46CbLMwfUWpi7N8SdplmI9jQznmi2YdVYBmMWyrFhnLfE0Yb848bZnWlXF7EL2D2yfY0wL+dl35UXrTWF2QLEAKkIPGJw6xwTgiLrks+PkHBEpQsISE5gvLX6BgocJFihQpWiQrFCteomSp0mXKhoeHR4RHRkZGRVmh/8pFRpavEF2xklSucl3VajHVa9SMqlW7Tt16sZH1GzRsFNmY6U2axsXLXwnNcvUmyNUEaOhP9CUGE97hBgxDLzgQFEQ3VEAoyut33oJ1doOYGoJEIj9KIAKRCKOnJ+FPHYB8tHIFU8uhIqK19gpaQ88rIJm9G4gB7F8f9m8ohqAj2qMDJS+/uB5d0JXohYJEYVQggFCiPFEELiKYKItAojQKEEFEGRRCEkKIcOpEaEAJohhKIoIohUgiCsURRgCVySq4Dj3Yp+bwJwBD5iPqa0/rklVJBeKsbkA2tXZblCOKoiIRregFG7QPNmgLf7bO/p65GYJ2OidddE4KE0ARoixRmihDAOE6YpCUKEaUJEoRUURxAqiEHgRsC9XI3FCU0IA2traeVwCD5qlt441Y7+U1x3jyeuXMM1d3yjpoidbUjdEC1dEE8aihqfUQi35/Ig9Qk1YztPKyeqOWpg9SWYtoiASlb5B/HOYfh0PcIg5cRBXSDzzDKP0RTPjT5yjqw6WoAT/FTvgrAvJEQV2/lLoua5ENUE/XbHdyJ2UJoj5ZAzdLEIrQqs02SxJ3kWWJRVIWEYpKRD1yodRiPd7tBOaJYnrm1LZnTysynLiLjCTuIaPojVJEE6XJqkQZsiZ9zE15PyLteo8WUjR3jnZCUIGgZJ3lUI0kUJGYJxVRnaipLMd6Gmre+1GH+T2wuevS+rPIh8qoQ1RmjbFoQtQhH6a/Lq2nqedKZRC06yqaEpXJ+5j2INmMnCiUiKUdR+QjWQPBcohVK4GgRHO0JBX2PL6P7bUkWtPzIFpQtrBog7b0ttO8HdGBnvZ4RL2d9Sr3gnq70tuCNXfROwG9tBPpHS+JaE3vOLme+dqy3A6yA9oT7dCLOe+l5F1EUUJYNzrTy+sm60lSDMQQghLJuIGgxAhiFzmS2E2OIXaQ44i2Mg4TiHvJiUQJmYhJxF4yjRgtaUgnRkk6phC7yKnEbnI60VamYwbxIjlLMZvYS84lXiQfpe8ZzFPMpzVfsQAvkbPoW6AYKfOxmHiJPIylxDzyMJYR88nlxKPkSmKErMQqYriswhqilazBWqKArMU64mayidyMWxS3IoOgxAbiBtmAskwjsIl4lbxVsZUoIFvxOPEquY9oJfuwn9hEHiSayEE8STxFPkdZVihxiDgCkniZVOAoCslREDhG7yt4Da/TegPqw+cgrPdNj9fmx9t4i9538C7eAz9jx4fM+bJ6C4m39yN8jE9Y+jV8hi/wqcoiol4Mk0ryJkt8ynyV5D2Wfp8lv1R8hW9RTCgxVD7GcWKIHMcpYqCcYu5P0UnO4iw+Ic8TpeU8vieKyPf4kfhZWUyKys8g8AtRXH7Br4rfFBcVJUUYfoWIQxQk/YhSZGkJIH5FgAQRIWQZylBFPqIoWZgoSRaXcAlRRBBVyIJSWa6TqlKNVoxUZ41VaNXweGupt4x0lNr0NpV2UlPq0FtfEU5vI+atot7GEkOrriRIS7mOVnNpIfW0ltb0Vmf5NtKeZWvS20BRmzXGE3XIDqypM+tIljjpQquh1GWsq4yR6yVW6+zCci2kG+vtyhqv19q6Sw/pKYPpXckaxkqiJEkv6+0svVmmn3S13j6suz9jvaUvvdez5gFSnt5u9KbIYHonsYYUenuwtnKsIVWiWHYSS8+X/JImvVg2nd6+MpnlwHID6J0iU+mdJtPpvZG5Z8hMmaXe2eqdQ+8C610s8+ldIsvoXSoriFXkYlkjZ0CvrKV3sqwjZpFrWO5WuY3eZ/EQ9uABzJS7sVTuBL2yHVtY5g7cjkUYjQFYJfFojOuQH2sEWCsZueL2XHFHrtggYKAkVcpGgQZqUqVs8gDYJJs1x2ZRCGht8cFWAbZauU2xXWDDdtmRK9b/FwAMCZiDBViCFdiKz1WXF6Af2dH1iOsBPEL5IOXj2ItMHKV1Bv/BS/gJT+FXnEUpecRVQfx4NryJATITzVxBUpS+2rIaLrmPZepy/T+IPrIcD6CmhEiYa5ikcx0EuWZyPSyUW7heTmK9cO44L/fK3XKX7JYH5XF5WPaxpn1sc6kclnfkXcbAWBaCXCcEtE+q76yco/5BfqEs4rpIacwjLn8TTBlGFjLFKEuZcMpyZEWypImhrGUqmWqmrgHKuNoz3sX0ML2o+5lBlMPMCDOGepwZbNJMVrvppqGrgWsa7blknGsJZT3XUbkJtV3PoKbre7wmEyVIqrsmyWk5LzGuAFPNNVDuk2rMuYJcY26mXE9uMJtME6ls/F0TDbDTxJs7zFZzp9kjEaaB2WYeNNPNLrPb7DUHzCHzvDlijppj5kXzgnnJvGfeNx+YT803zPWtOW7cBpwNOIC/Q41gyh+dgpRFyZJkWbKwU4mylFPWiXSA1516jDUkm5LNydZkW6ex04X6P85gU9u523R3vjClnJ9MpPOOVHVinTAnwUkzXZx+zHPA2efcRR0iwOeml9PT6e30cfo6/Z0BzhBngjPcGeNMdGY7i5w5zmhnmTPZmeLMcIabcc4W4hHXHGeBs9CZ6/Q3S52VzgUZ76xy7nDaO++b25ytzp3O3c4u51HnMedxJ9N50nnKed550XnNOey87LzlfMYZfMJxmwucg83OJNPb9OQM5jch5i7noPOcPMVV0EvedD5yvnJOOmec887Pzi/Or85vjtsRl3E5Ln+uotFSSY47Ia5XsBP5XYVcRV2FeZQjXPudEtSlaVWl3odpqOyqQquLq48r2TXONcU1y7XYtdp1i2u9a5PrHhc08KySDAt7FaIVggzJx7S/jg2Ex84D2bk3kpuIzVeAbwtbvOytVm8jrxbb/09j3GE9fw62lO8MqNUCOhfUnI+/AN+Z2Wpn5OpHvMPT6z8eDZ8S8aeOo0/5vGv+w1nwLn8V9XjqoOVTM6VXTG3gSvcmiBH7zxFxuVx+Ln9//wCXBlqBQYHBrmBXYIg/Q0hgYFBQoAr6A0UDfEIBFEQhFNY9eFEUQ3GUAN8W6X64LMIRoTvgckR55q2AaFREJVTWN2UWqIpqiEF1T7wGaqIWatOqg7rq4XsY1fXRAA3RCI3RhLU1RRziqZtpD5ppDxJy7YHuG3160BKtPLA98MRb606yHS3uAdXDt4mqO9s9oHcPuqMHMiitRiL6oT+l1bgDPRUZHp2ksBrd0Au9QUnmgO4ph6scg7HIoMwgRmIUPqMsKJ9hHMbjIcrt9A/ACExQPREpyKCcimlYLVMxS7EON2E3ZQbuxMM+LeXVg9GYhFTcRZmOycignI4bUUimYzbmIINyHg5hvmI5ViCNcgM2YgplBhZgBmZiIa255CZsBtc7uYgpK3O0MxCLsURlEZmHLbbGVVgNPv9iK7ZhB+VOlnuUNS3FMhSXDAzKBlO4NwV9fxqDcTPuxj2Uj7Dc43gC91JmYAjux314FkOxXG4BgSh5AA9iF/bjAG6lzMAw5VPkIqHEHjyNg8jEMMoyMoz6NqzHXtDS40WJeSzzvOKQ3ZUWk314kbEMHEEJjvuoJ53HWeUxptC28hBB6W0z5VnVJPEcvgBtypes7328ipdpvYK38bruYL/CB8igtPte2m+hrHyED3U3+6nduX6L4zihMnsVnsJpZFByRNQjdVUWkDG6CjMoz+IcispZXX+tZKKunQzK8/gP9XnPGvoeP6CkfK/rs5RM1TU1VqbjR/yEDEpdr7rCSsts/IILOESZgZ+xXnTn67XqfkMG+TMW4KKCq07X0iHK9SJiZAFEDsERFy1HuEoRTukn/pJByTXGMqsQIIGSoXvkYOog4dmi7zcyKG9RhEg+CRNK4QqnfwOpKbqyMyhDhRCuVjSi5IrCIcoIiZRREiFcPdiC/dB1IgdVP0V5hrK9lJenUUEqyG8gwaceRAshh9SuKISsFz32KCzU1qcrCYc860G9FpXEriMvVJHKwryIU2lh06rKdcI3G7RUetLWSzWJYf7aZE2pLrWkhmS/38iwso5wxVAf13UyV06hs9STicJVgbqUdhXo0U+Q7/Vo15cfyRbsp+73hceaeez7DVzMBr1ijyWPJPM7Yo+gtBUeO1lgj10IZQay32+ESXPKeGkmrSlbMk1ThEeFdoQ0plSgiVptOMamtDwzo7KdTBDvmTxk+9tB6EMX6SqaF4lyva2vu3SzFt80aFm+YVBPH+kttrz0lWTtWz/KDAzmER4itgUMkv4y1MYGyg0ykqUGyAh6htMaTY6RceLpETk+O6ZIYXwSmSp2LJjPWJroqMA9I2OdGJusq2ye+hdq3ilys3SUqUwvL9PomU6Laxw3ygwdyyzKmdJQZsscuyaz5WLx9MEjlYoVstKrxDq5SSjVEys2L5YI/bJM6Mcqu4bL2VqXSmFZK7Ze9mmN+iFn8A1ukSfxmK7XWzmTt0k35IY+uaJvrrhdn6coSZV4hpIQalIlDsOCscN4QXO8AAVo4WsffEfvd1aeVLhpK8SN/JIrmOOfxrjA0u7S7rEBlIRAtQ/ew9iAsQGFoXkVb+I1ytpBe/n97ovYGbCT5a+MZq50132uvlwDD7tjnQfwscnyHnNXZYt1A3i/QgMEB5V2f4P6cqlMIbBmtlyU7V4J9bV/X7spFR8HBOkveBiswwO4wBx9xTt/CyzWcb4o/oaaiDcJqB00he8RvjPluWu/2XnJ+cxVwq+z33y/J/zO+FX07+e/1v+w/0V/9oXfL5/N8gvISzjDuRiOauoJwMPu6qiHCESx/aNowDZCZQl7cKs8LRekLuP3kFEy4rLZrkHPfPKBK/BZ1rScvM78bhex/NKdzS5a8+9HpSHndQDjwUF1A7tdYSb5lA0+YdtWOA7X0kDWAdos65WT6WNZ826M0rRNYK7AwdiidT+mvn3gOYMX6Zlux/g6nsJPjH+i8VcDv6IGA8wfhL6mk+nQwvRJatemZ1vTPjuhnzGJJuEKJXuZ3h2vWHVz09n800GM48r6zklQcPY3Top6vmoSERlVTr9W4vlWye9fKsn6TknjrO+TNGvZqnWXrtd3694DNqA8wikdAqQgEcVxF61eOKfe7+33rMqjGAqjCCW9lKp1X8W8ZLjmSUR9xg5DoN8wENF9k0vzBejvFgkc3cWF6a899ra7KQc9NY8f/FFXd3uJ6MyaelImaZ6hGIae+hw6AiNpJZK9mNaTSCImadluWACHsF4vPY8sIguxSJ8Nl+rnXGVkFL0zMQsJSNRRbIegkvSDS9vWHutOtA5qC3usbSRBOKZGov3EAZZdgZW6U+H+A/rUqJ+F3YYDuh92sSbH1sXdKErD0dE7OfbCdgeqe18Hp0gXafuABK0jCSxHS2iVQSLlKd2nOgi2v1TamTaPEcGeMmcxzROud7cf8CMtSvorSBLCJZ8wJxHDuhohg6VtPfoXSmHCPiBM3G7tA9w2sA/WLi2JaAhBeeaJFpXCniJR06sLLVSXXoxx5SBWOBuU/GtLYe/QWDgbTIuyteUxG3b+66IXYlGfebn/h6Cd5zs+2poNnA2vWGf2jm16eRLANnU2rtwmR84c3iMXXBo501AAnjRt06Zpm7ZFT/h9lNrmX2yxBVirfReRPd7sUSZeocVEHeX/bYy+7fm2eHVjLIBcZtWGAmr9fS1ePncCXme0jG9a7i32xl9r0X1ZEOvLc4wMPmO82hbtGAsgjzEy/F1j/L0l8W3pimPk2f9/bJH3GFTwrBzfoFcK5D2rCfgbjyPD1RzHa9/ivy36tpV3i2wLneHblga2+Kfb+retf9v6t61/2/q3LYZr39bV31n6UV/TFin/oRavwRF00Bt5H8FC+n6haB5tOrDPfj5txYCj8ynL9wu0GrEtllOfLesTYnzKlUR2WQeRsOV8euxTzvbu93K5t2dzI2c5fX+g5S7ljrJW9sgcqAVHteb2GqOt7bLelLKWrS1nb2xt1Cpz1kv9B8fB1qZ5eKS9atUjrTIqx3GwweapQdodPS3Pjt63Ps/KaQNbnw1/tj4NKIOJGKLfwN+PUvT+hKGIxo/Y5u6GQrLVvd1dVCqhPSYQZXT/EoXH3I9wBnu4H3bf674dG/AzbsMvjI/HeFyP6eiGMFmP+/EAykmo8E0PFoLl7ZulrdiDaZihb5juxsOasguHcQ4sr++aUpGOKRiGe5CMA7gPBzVlLx5i7BE8isfwOFvr4d6mZB+V07XsbhzBfxAiWX3MIvuoPIBDLF1ejuFFvIxX9ZvObyNa9uF7PIPnMA/L2Vp+OY8nUV3yyUKMQkHRHuunrHMRK+yxtpGJOzimxlJaKkllCZJ5eFe/Af0xPsXn+BJf62fCJ7EPwTIa0Rx9Yalo6xqDSrhOamhdtcT3HB/reZdWQC6wXB2pZ8vNY+/ry2mwHK02OIMGshxPYYK+DWwonA9FLJrKRlTAJu3pFnq28LhU1PVbhujBtRLFGqpJpFSRUqJ7UWzm6BfgFO71vD/sqmvjNyxkbtgjZ4P2QQMqsA93wiVlNDdzkvP0GyAM2hrbowS6owfjfhKNKE1h72j5SyUASbY239kIkFoIlDrQ+wz6YxQGYCCg30uY6vUecTk8QWcjO8TiLr06ZYd5eqXibEBDnm/TLnLkyDHyGz0jdzNthSfNtmnT2KZPi9AWoW1eqUWIb4tPY5XW6vPe1GuUy6/Q4vI/bFEua/FZOw7f9rxbvJoxGm1xhVeLz3uvJ01j+BtbvHzujuq7aAbftDxa/PUvtnh5eMHqvMeIqxrj5eElO8YVvmPMo0VH/s8t2pZe8W3pSmPUs///1KK+Fw1W6zVcHvRKfYVZnXdVs/qGr+P/+3F865q3WFKudYsp13CMaVb/YYvaVqxvWzZM+lNtTb6Gbb1zDdt67xq29cE1bOuja9jWJ9ewrc+uYVtfXMO2vrqGbX1zDdv67hq2deIatoU/3dZon7bGXLGtsVdo6+rvLBnA3zw6bVHHCN8xaosM13iM+NvHmNdqETxxhdVi4MAFP+QexD77+bZViIzNWVbflQDFZJKWY7BlfUMhn3L+nrIlRBBgy9nvfOh3DQqgYC7lALHlcm/P5vYpV1rKSFlhOU/uqmItz8jEWqoRo7k9Y/TU5tubJgLvXng0vGuj9hw5rde31jyCra27/X0TG2xtiSqTvProHXqR2wDPjh5eO3rf+mDr26715Rq0vt551GdDzevw2OPF8rdq3Wbb9h0777zrbjCYgED/CNSJAWrXGjjwif37Duzes/ehhx95dNd99z/woN3WYOrcZcuxYqBOECAuPwcDGevYrm37xA49O3X2+aLYE/vuQ98+mIPZs2ZmrN8ApE4CmrdsgVzDFmArihYpXLxQPiCsbFk0qK8rGlWBe8BwLypzIHfcPmF8ysQpKIsbkseNHTJ4xPAxo4cNHTXylptXr1q75rZbp0+bceP8eQsXLF2yeNFN6wZu3AyEFgAQG1kpumF4xayvuzXqzZ490CupymSgGkoEoWxw9TI10tNYJ5ptQgiAxmURXxIMTVGwbBMgIQ6lmFoagBFjjIg4josKCHSEigH5DVzissFxieMnfn7CYBwXc7sC+KdSRujxDVqboxrO5cEYPz+XI2oyiDptAe9cpONH7alSLgsA+g8YqGGQhiFDBw8eNmzYDcNHjByVPHr0mDFjfcM4G8aPn8AwcWLKpEmTUlNT03KG9Ethcm5hSlaYeilMuxSm5x5u/D3MmDFz1mxPmDN33rz582G/7VnG/Z21joPSYqj7BPwZh/o+cb/jPoYv3B+5XTjnLmbzPQ7HU+IsxgD6N2g7UBytUUS2oARa4iyipKY0kh9QEsWlNBqiLMIlQuYjHDsxDg/q33I1RZz+pVg8miFB38M3RwvAyfqCZcnI7K9VxtRvMGDg4OQxY8eNn5B644yZc+YWKx4e4f2dyzZtO/fpO37ylKnTpnPI8+bf4AyRyZPBMj0T5yX2KlykWHhUTI2sb2bG1m/YKC0xsVfWlzl7FQuPSZ88JV36TBVCJk+RyX7+zJUwKdXFL3yG5U8s0LxF6zZt27Xv0LFTL+mXLulFisUMkxptBqU1bBgzfsbMdJaf6kyZ0nsKQ++pTs+kJEmSycQUJ02m5MDU3DA/KWl4zzSn5+jRwiXYm8xSwp7VSJviSL/RTnrPQT2HDmo0tpFM4fdKJ6YkjRg0evJop15sSumoSbGjnZEsENtztFPGGTW6lAOGvcSTeBb6DV+8hFfxJt7HZ/gG3+EUzuAkfoEjLvGTQAmWUAmTAhIgdaWBNJYW0kZ6SLqsl3tknzwjL8iHclpg/EyoKWyKmHBT2VxnqppqJsbUNfVME9PUNDOtTBeTZIaZsWaRWWduMZvNVrPd3GXuMfeZ3WaP2WseMg+bR8yj5jHzuHnC7DP7zQFz0GSaZ8wR84p51bxmXjdvmrfNu+ZD85H52HxiPjWfmc/NF+ZL85X52nxjvjXfmePmhDlpTpnT5ow5Z743P5mfzS/mgrlo3AaO8PT1dwKcECfUye8UcAo6hZzCThGnqFPMKe6Uckpzjso64U6EE+lEOeWc8k60U9Gp7FRxqjrVnBinulPDaeAkOB2dTk5Xp5vTw0l0ejl9nH7OYOcGZ4wz1hnvTHQmOWnOZGeqM92Z4cxysv72e7Vzu7PB2eJsc/Anfr/OCL9NTB0oQZTeXyqWYpqheJ5BSjA1+3vHxXN+8bh48VpSW/7xAA1hRCGiOFGKGI5kOEQgNQE/hFOG/yGSkZ813aCfuBVhXSVYV2k48A7BpD9czB1AGBhKoG0eNQJxKuO9PEPybB86jsJebfuGEAQTgAFU+pYfTHn1YICoLAsbbJsVvfJUvaxUpcs8EWRlT6xPHq1VsPo6j6ea1e3I9j65O5AdyU5kZ7IL2ZW8nuxG9kYQtO8EUAAabNnyZF+yzmV9iPSyG6uslWtfh5LDrF1bZRWyrlrdAc9TYCKZZJ/xgDK2PyWpi5H1NH+0V731VZZT2ZBspFZNla0u60WUtQrasQHVVTYjm3vl60e2VCtBZQvrjyFrIB9lrMYbkE3JJmSb7PIe3ZrsTwIDAPuMGqpxuQZwCBfhdw0QcA0QhEIoQZZFBBqiNBlBuwRRGuXIFihDXZ4IUjvoL6EAioKgLsayUeBulihGHYU6eFTqozlRAV2ZJxb1yba0CxBtmetBKYAo+uIVXdCBvjroDnppd8F90h1p6I3ZmIYuZLzaaZiuuFc6YAYxk+iA5MvBPLOIBViIRVhILKO9kvYqrKG9FmGyEutob5W19N2CdeRa4mZskpuhf5MrC1gmTGjTuxabKDfrX5Bvp73DY++kfSfuwnrZRftutTcQ99C+RdbJo9hHexOxBbSxH7uwULZgrsyR/fR5QP8BZOJ5HMFLeDmH/SrewFv6N9Wf5bC/0ucffoqO0zls/RtZ/fvYH3PYP+FnXMBvcEPE23bETwIkSPIR1hbeuqW4lJTSEpXDLi8VJJ9+pn+d2tWsHSM1aTeQRlJU7SZqx0mCtKDdWtpau73aHaWzdKXdnVBbkqSvDJBBMkSGyrAc9nCZwVyjZIyMp50kKdZOlTTak2WqTFd7prVnyTza82WRLFF7mbWXywraK2WVrFH7JmvfKrfT3iCbZZvaO6x9p9xN+355QHapvdvae2Qv7YflMXlC7f3WniZTaD+ZA08RTxPP5MCzki7PEs8RzxOHPDicA0dy4KhMJC3kWA6Mk5FygwyW/tJbeko3aSXNpKnUl1ipJ3WljtTWv7WuIhWlnERKhIRLWSkihaWQFJBQOYVv8SW+wMf4CB/qL9W9h3fxDt7E63gRL+AYjuIwnsOzeAZP62/pPYHH8TAewl7swW48iAdwH+7FRtyB27Eet+FW3ITVWIHlWIolmI95mIs5uBFTMRnpSMUkpGAiJmAcxmA0RmIEhuvvAA/FEAzGIP0l3v7oh77611mJ6Ilu+suJHfWXFdugNVohAY30dzrr6m9WxqAaqqASKuo9thS4S0NBhCEEmXItgMtCLdRBLPUIcj3Jp3SiFHkYjrMOEQ5whPP7s5kFN/cCM3EPNuCsmYoL5mX99P8hzvIJ7hcinEJatqATzF0AEOaApd9CkHPG7Mc+fG3W47xhDvUfJwOdd3A39cfmU+49nsIH5n1zGh+aD9nOG/gALG3OUX5q3uBu5DXzC+0PzIvcr3xiPjDH6HmF8iXjyFvmSe5NTrH2r7lTAY6T35oXTCb5vPkIx8wRpn1ofoAjnxpeOaS4XMDzuht6yJSSn1BGIpwnuF+KkEdYl5EA2W0qSEWuxodNaQmRPdw/7Taxsot56stdppk050puIS25itvo1aELz/9essVsZksPcu91vWwzu4i7zP309BN6uSvrL8MkhfYk2Wp2cJ92t7mDTKXnNpMmt5ubzXqz1qTLZHpmkrvNLFltZtNaZ5abNdzj3W5uMuuZb47MlXn032IWmqXUy2SZ4RWD1kpZalYJU0j+Mp6s19+T4i+kMb6d3EHuJO8kHyAfJHeRu8kIZ4nZI5UEWGVYk5nFVh+Tx+UJpu0j95M30ncjWz0gcwyvD/TMMbwqyFxzhPYL8gplqnlV5pt0M8/MNHPMRDPBvE7vG+Q7kmrepx5jPqD8kBxtPqb8hPyC/Jr8hvyWnGaOU95kgDPUU9mjs9SjzDnK85Ji/iPfyw9aw2+Uww2YQ8gxxlD2N36UQSbYtOEuurbJZyqYMHrek4KmKPUIHrdipgSt5lKSshRZ1kSZcswXTbsiWV+qUMZKDGVVKSPVqWuSIVKLMkBqU9YjG5KNyM/wOrg3NwcQZxK4P29NX1vyQbSjbE92IrPQkzv3PmaQSTbDzUju4FPNdDPXLDHwhEwR8PosmeJHW5+WqLPxlEpet8k/gne5Z8nnyOdJbxyyNWbnPqwy7xpV+nhyx5E/aNv2wLZK5Nra1eMIkVvLeY8jbw+RV7qP3zenb3mb9hdw1Grf+q7cd9p59tanNiutdUUcs72xyLtN3xxX7C3rzbUkcYWafI9o3sf4ynMO/OE9VMQIg77R8wTxlwD/3IMIcobQHJ9FhSoKkZdDv6VM7f2bY0UI/dUvavvLY55vcBdRVGIJfj7n+YyO8k8hxsq/ApZg/dXJP4caVv4FaImaaIy2aKK/PDYFnTAVSeihf4vZGf3RBS3QVT85GoRaaInrKf8K6th34nVZTzf0xmAMQzLrGYI+TDsoaUydhaFsozlSkI5JmIfr9bvt89FK95N9kYrpzHWj7uRaM607GqAfFmMV9kgP7GGtj7Lnq9nzGaz1Mey1+XfLEq2dxFJsxha7d9uBnbpfu5v5H2HaATzFmp/GM3geB3GUNb+Al3EIryJMjuEtvIJd8hpexId4Gx/pr2C9iwflPd2JPSCZeBL55XN8jffxJo7jA5y2e6wTcOOM/hrRRYhA91j3S5gYCRCX+Ms3+BZBEij3yb3yKIpLsJzEKZzlCEpISckvW+UcNkkPKSXee7kCcgCl5XlUkOvkZf29sEOIlqryCvsbI2+B+y/5DK+huryNhtKYPfsK3IPJcbSQ0+xlvDSXE2gpZ9gS92TSXp+1zqGNtJMO0km6SFfJ3iNeL9p/QIxnj9idfWL/9Z07d2x2jzhM+slAKcHelpFkGS4VpKfu2K6TERIt42W0jGUvYyRFJugesb9Ul0kyXdhHu0e8UfeI7J+0ZK/YH7tH7KAtsmfsTZi2qDs72+ICWSxLtcUM2+J4tphfUrTFCbrXm8Sd3q1sa7WsldvlZrlNbtTd3h22po2yRbbZmnZw17dd7tZyO+UulrxHy92qJXWPyPJ3MB9LMSf3iMy3V3eDdzHvE/KQPCKPy3769tk94gH69qt3n6yXWxivDG80JJoScTkwGutkNOVYYjwxzYOZOXBvDiTKSkn0YE4OrJDlskwWyjyZyxmdLbNkpsyQaTJV+IGRpEuapMpEu6scKkNksAySPtJbekmSZ3fZxGd/WVNqSDWpIpWlklSU8lJOojx7zWJSVPebe1BICko+CZUQuQ/f6a7zU3yCj/EOXsIRu8vknkZ3mM0wRXeZu7FL95j3635xlO4X79O3KhuxQfecGXbXeQtuxk1Yh7VYo7vPZViIBbr3nM3aMmWy3XXaWnTX2Qs99Vf+26ARajNPCK75fvGvfr7iCZJPM4TlGSQ/UwuEhWV9GhMWVjQsTH/mJSzr85awsIiwsEgepH88QEM+wvvzlQiiMirCEIHUBFykn1pR9n/3qYAwlquU89MUvWsbeIcg0h8OAgiBUIarnzVou4V9SvuGYAQRgAAq8+PyIFaXJeD5VKC89ZaxabDv5wvaWKj6Q5AzlPR5M10EoqxGgnQRxRRC1GD+RkQNVLMec7X4r3jLHXTVCLlqFEIZVEdtZQ80JTtjDmP1FZ2Zzhwqk4j6zDEbZdTTU9GU6EX0Jm4geqK/YrhiFHEDUoj+SCOGI52YhZmMp2Cygu/NkGqvXGMxmp75XljghYXEIi8sxkgsJpYQS4llxHIPVnhhpRdWeSHZ+52cvpHrg0R0x/Xoii7opFfO9miL1miJFkhAMzRBYzREHdRCTcSA7+T0HCuPSJRAYRRAPsz7G+AbouDPupvbz87mkzvI8TKBGE0+h/4imCCFyFEC0C/Pg5IYqXKEDJYbBEgmh2mOUHSTvfBDB+kgT9OeoHiVKQOkBAZId3lBa+gnfSl7SG8BepFJZEtpLC2lmRxEC2lEPUHasQ+foZO8C76rp7ch/adQQxoQdaS61JUJlMdxlnWWl/O4QP0LTlP+hJ/wI3WA/Ixf4TAfY5R+5Gl8iWfwiMYLSDEpIeEsHS2VpIrESB22Ei/QN7BcH5R+ZAAZRIaQ2ViochGZFxaTS8il5DKftOVaPhsr/lJpW4ctSVBfGStJX6zS1esd905FnnXBc5/VHaf4++UMIvAJ89DY7i1559AdYl0UQT0U1evvPBRXn/7OtO4qO6MJ7d7oghg00ntMGMp41RCmKEIWJYuRxcmy1s8aVId7PKxB96RRlJejgpVXAnOwdDSZGypaeQXYnJXyqKGylVeAzVkljxqus/IK0BzV0BQd0A0d0Z2yKeVAzEUn9OSMJ2KQfn82DjVQU49AEu05iKesZXPQ1pRhZAomIcn+dadKMh2p6h8F2pQzKGdjFkbTr3mYNpOcjmmYiimYzDxhXojwQm0i1gstWL4F0YpoQ7QjenjQywtpXrgxG3pXGI9xHPNYjMENSEYfjqabvWrbT1Hs9bm5Xp/7oDFzzNMreHvvFPrroCpT8v3N12fjQ7GkraFnjxaICCd+F2U/KuS6GQxur4A8QnWye9o4dBo/Dj3SkpGUPAw9RqShdcpIdB+cCqYNGzyVyaqYYxI1mGucWmDeFDVYgAosk5ZCA+0Hj0Pr5CHoNDgFCRNSqOlLG0eOQULacHRPnoAuQ1PReXw6WiYPBfOnDU6ZCpZJUYMFh44Ai44cA1s4GSw9FSyeNikVrCE1eeyQ5BSwnvHUYF3qACtUAwmd0LUTogdHRg+JjE6OjO4RGd0b0WNrRA+rET0V0W0bRXdqFN0d0e1+NyKjJwDZ6dm/3OhbhackAwb0ndq7P+W4zv0xNXkSxo3HZcHABSELkgVIxhX+pB/pkAFkdghsZo3/x96dAERV9Y//P3cGBARDNPcFlBTN3DKXUeiMmamloZG5pbjknvueCzOMpOZKymNugSvuOyqKjkZIhqaohKQIhIqoiIiESDj/9zAXv+nDs3y3//bj6Kszn3vPPds9s9sdNX8kbXmqrNP/iw4pvgnEttSqOF2RXwy88YF2ZqK8cN6absi1a6wpTU7yKZ+4eWKW7Jr21et7u+RI/sOt5/KPRp8v/yFP6G3ly+lt9TgVt+eNkuStao8O0OGvyQnOJeOEHezh8Mr61QLqfqAcUJwUlSglL22bRs3rN5hSXzRo9s4I8WrS4j+TPIZ4tLD+Kf/q2fvP1jNCreW/mTyGl1aHBtq/zLEzKsANlVENdeCOBmiMJmiO1ugAH3RCF3SDL/zQD0MwHCMxFuMwCQEwYREWIwSrsQGbEY49OIQImHEGMYjFFaQgHbeRiWzkoBCKwnhQAa6oghqohQZohbbQwQcfoRcGYCCGYCQmYBpmIwBBWIpgrMFmbMU+HMBRnMAZnMMFXMQVpCAD95GLfBTBScO8ow480RStoEMHdMRH6IU+6Ad/DMdojMUMGGHCAizFSoRgI7ZiFw7hJGJwEYlIRjoykI08FEDRsi5QGXXQGE3QGm3RAT7ogt7ohwHwxzhMwhTMwGIsx2psxA7swSFEIhZxiEciUnAbZeuzbH3+v3l95iAPhSiCgx3zBVfUQC00gBeaQqITOqMbfNEbAzEMoxEAIxZjJTZgM3bgAE7iDGJxAReRgDTcRxEs0NrTFzjDDVVQDbXghcZojl7og4EYjhkwYjlWIgRrEIpw7MIeHIIZ5xCHi4hHAq4jA7kohEM51jrcUA3u8EQTNIcPOqILuqEH/NAbAzAcsxAAE4KwARuxGXsQiROIwQVcQRJSkIN8FKIITg6sG7jDC23RGR/BF73QG30wBOMwBbOwGEuxAaGIwAlE4xwu4CKu4DrScB9ZyIe9I+sDVVAPnvBCY7SCREf0gh/6YSD8MRqTYMI6hGIr9uAkzIhGHK4jGWnIRDbyUAB7J84J6sATDdAEzdEandANPeCL3ugHf4zFJMxAEBZhOdZhM3ZgD2KRhHTcRzbykI8iVC7P/KMeWkIHH3RDHwzBMIzEBEzDbATAiCAsxkqsxhqEYgd2IQIncQYXkYTbyEAWcpALrTPrElVQC55ojKaQ6IJe6IOBGI4JmI1FWIqVWIN1OIpIRCMOF5GMNGQiD4VwcOG+CTc0QHO0REcMgD+GYBymYAZMWIRghGADDiECkTiBWKTjNu4jB/kohFKB8cIVleGOemiCpvCBhC96YzRmwYggLMBiLMVm7MJRnEQszuECriAB13EbGchFESxwek2IaqiDevBCc7RGB3yEPuiHgRiLSZiGuViA5QjBOhzAUUQiGvFIwHVkIRsFcHBlzlEB1dAAjdESndAFPeALP/TDAIzEWAQgBBuxGeHYg0OIwAnE4wqSkIlsFKII2orMPdxRDw3QBDr4QKIXRmMKZmE2grAAwViJDdiMrdiHAziBMziHDOQgF0Wwd2PcqAIvNIUOndEF/eCPYRiNCTDChKVYh43YinDsQjRiEI9EZCAbeShEhUqcX7jDE43RBC3RFh3RBX7wxyRMwSzMxXKsxj4cQgQiYcYZXEA8UlAEh8q0iRrwQlO0RSd0Rjf4og8GYiRGYxxmw4gFWIxgrMQGhGIfTiAaCUhCCu4jC7kogAW1XufcojlaoQM6owf6YSwmYBKmYSnWIBQbcQBHcRJxSEA6MmBfhfMIN1SDOxqgMZqgLXzQEZ3QDf4YjpEYi7kIgAnLEYzVWIcInMAZxOACEpEPh6rcb+GKyqiCGqiFBmgFHXzQGb7ojdEYhwmYhpVYjVDswD5E4CSicRFXkITrSMNt3EcW8lEAp2r0BZ7wQit0xEAMwwzMxlKEYB1CsRWHEAkzziEOCUhDJnKRBwscqjNe1EFrtEUHdEI39EBvjMQkzMBcBCAIy7EOGxCOPTiESJxBLOKRiCSk4DbuIw9FqFKDeUZLtEJndEMvDMAsGLESq7EGm7EDu3AAEYjFRVxHFoqgrcm6ghuqoR480RTN0RoSPdALozEWszEXC7AIKxGOXdiDA4jEOVxEAhKRjlwUwgL7WrSHBmiOlmiLDuiILvBFb/TDcIzFFATAhGBsQDjMiEE8EpGEbOTDqTbnEjXghSZoilbwQWd8BF/0xhQYsRhLsQabsRUROIpzSEMuCuBUh3OFevBEa+gg0REfwQ8DMQyjMQnTMBtzsQCLEII1CMVWhOMQjiIGibiONOShAEpd1iycURnV0ABN0Bw+6IYe8MU4TMIiLEcINmIPTuAMYhCLOCQjHdnIRxEUdyEqwBW1oEM3fIReGIlpmI0gBGM11mADtmIfInACV5CGDNxHLixw86B+1IEXGqMpWqELeqAX/DEMwzEaMzAXi7ARu3AAkYhGDNKRgSxkoxAWVKjHPKI1OqIbfNEPA+CPKZiLIIRgNTZiHw4hAmcQi0Qk4zYykYM8FEJbn/UDV9RCPTRAE7SEDh/BF8MwElMwDQEIwgIEYwNCsRlHcRLXkYbbyEI+tJ60CWd4oTGaoxVaozN6wQ/9MAxjYcJyhCAce3AAZsTgHBKQjHRkIxcFsH+D9lANNdAYPuiITugBf4zEWMzCXAQgCOuwEfsQgROIQRwuIBFJSEYK8pCPQigNuH+gMmrACy3hg074CL6YAiOWYiVWYwNCsQsHcBIXcBFJSEM+CmDfkDHCFVXghcZojQ6Q+Ah+6IfhGI0JmA0jTFiOdQjFHhxCNM4hDglIRjby8GpS4IaK0MAO5WAPLRxQksKXvHHnubuLfkuLVcdaHXPUv/W3WHnt41y58+2MqYft42XR7W4Lt8/cJKd2jemfGD1ZlvybKVFqSpW2/JKa35VbJlq/QDgtPzlWN+h+r2uSLxPYkC4bW78+aPRAvvz9BP20fb+Bf9V/pfiPGypCAzuUgz20cICw7oEbKkKj1l4O9tDCAeLf/o6lvFDghorQwA7lYA8tHDBY/XdMjT9uXy8pc43sPfxw2+DJa6Wn27uhv4ask76NjkUsq7te+j9acSpt2wa5xME5YU3z7+XpwJwJs+eEyj/Ot45eowmToxoM9x4ZGCaft9jUJfpsmGzStfag2b4b5Rm/fqMTV26UrXYv/H1L5U3y3NGYLNF3kzz7rf9bBTGb5Offr2/bu/xm2fbPyY0qXV4kV7w5sndg+jdydvEXOPPl1fc2Te21JEhubmgY4rQ7QO7qeDh5aoZB6uybh6fenirvD6mmnHGcIcWLdJpvAlPOqHlHoabunfw7fdqvZ2f19se9e3T+pFun4tufduvR+UUZ3+7dO35KyO0evh93/rTjJ/2Kb3f28+vYpbOfKEmdmvX+9IOm7cQ/Su3gja6l8EY7NMUbqA4XKLClN/Qvfz/2jv7l7RXVXFdS7pW8tv6/1/5/s/9qGnrKu13HxFPtdOte0/lENtQl3O2ta7skUKdbt0zXYedanX2rbTqnXqd0V5LOWbexP0GXVO5hMW4Xb2d/cTnKF7MeTz3F9VnrtdZvbae0NuN/9qGu8SVtvtSetY3NywuK86u/Orb3u6gpxrYX7Zf0weG9g8VtU0dxfdT7T9se8+xBu5LxUv5F2yXtU29xTrvF7Vnb7bCzZvvjm14vRt3t2fdSfxLz00qdE3U+/lN94piX5p/xFddLG8VzQtvFfQgb79F+09y3itWb3tCav9qvl/r0n52nV9cFx5baF+uclOQo7svCbu3aj6/yfjGnXu9a4+L+qXP16jz9589dKX0qWZ+M/8U54rwVK5kfh/feLs7ZX3JOS+0T/fm3+kSZf7SeXpqrkn6V9I121b6p1L7g1XNXXA9KuX/95+eJ8f1dn5gnoJQ1XdI+4/kvrRvKl9o+YyuuX1Xq/ec/2yZlXjoHtPniPJS0jRfjeXU+mbPi8+nx6HTbUs7vS/VzHADikj6+qOdfzQ1lARD/0/XFdmv+0r76E8/K9h7hsunD5fLyxGVSCAP+I70x6KxsWyNcbsteLrMn/f3+JX/8JP2+2i/H3Fgpa+Ut+bv9bqiGDuiCSQjAZphxBbfhqn73qEMvjMQ0rMEF1FG/45uBQ4iBvfr9mj9WIw6u6vdcw7ASZ3Af1dTvl5YjDhnwUb/bCUIMCtHWgXYwC6G4j3rq9yAmbEUy6qjfS8zAZqSr3yfoMAE7cBtV1M/xh+MoouGsfs4+BItwAlr1s+9ZWIoLyEUd9XPo5YhGFlqqnxGHYCOuwFX93HYB9iEHXupnqiZsRaL6magf5uIQ4lGEturnkaFIQAGaq58RHsBJZKCj+hmeCSfgpH7u5ovVOIk0eKmfg83GIWSijvp5VQD2IAlVarANRkTgIuzVz3oWIRLpsKCl+plLMGLgpH5+YkQE0lAAnfq5xiIcRQEaqJ8zbEQsslFL/WwgGPuQob6/98dcRKIQldX33FOwD7fhpL4XDsBmXIdWfb86DCFIh7363nIs1iEGefBS39+F4iIK0Fp9P2ZCMvLQ1ov+IABnkI7KjZhbrMZJXIdbY7ZhAsKRiOZvcl4wFhuQjkL8NfUuTlnSlkeY/7+dl43j1bxsHGXjKBtH2TjKxlE2jrJxlI2jbBxl4ygbR9k4ysZRNo6ycZSNY9dOa7qnjifG/L+Vl7VT1k5ZO6XnZe3cVvME838u////cbXqOrrUFX9JmuJUcqEo4pLbJXFx+mt58VLSFqcXxxO/dLzGyV5rpzgqGqe/HMIO6uQwOzuhaLRWtr8arfX6GOXs+VWS8kI4ODgIrsCodXS0F07FyaVcpUpCcHEq4eLkVM7VxUmUc+IG213ZzgZRzsWpXLlKTqKUpJCKW9WI/1wy3GwkDD/1ECJ8uhDvfC8MlWKFIfShEPOqKYbP9Yohc6QiflqhiN7HFGvdWthBUXNHWEjWWAMFf732wKu5mkrfriZF9df27PHKvzf7H4816h+FP6XNo1ZNGhJLQenx6agv2FwOSo2ZPT6dPLZ4RM1FqemRuWRsWjjAFe6QCIDFSoEWDnCFOyQC8MpMvb+b83eCG3OFqP+ZEKcHEr8rhFsTIVKbCaHn2JeTh9CLwcIgwsRpkUpnPBS9MlgxKGHKaaWFhv3Wq31QpielJv6lHOuAEtb9jf5Jib8/fgX7978oYV0tFUX1UmqhHKX+9X5rGtzRlqeSl5w/j+FdquRLsSm72Z/2GT46UxPiDPMpu/Y3nGJvysLmE7/oUiXR3LW7tueXMy7LqG/vNToU+4u5WUG1tAZDf5bPA23l87W28nIOMeVvDXhUXP728unJTpRvk/Fj3elDfpbrwr+IklVizR/WevRp/PwfpXe7t8JvLfrBPOJh/0bND52WT3cfGNvoDfqz/8JDf6c088bzl0fkp/0hxaXpJ1fNTzV/c7XFaz4biZ/e3dtJSTUHfXnp7QdDiPXObWKe3zQ//c4t5JkncerRmklFyeYvNRe3DMjIk2JFrMteyw3zMd96/e13E4cVubWzu2GuO76qa9Yk4tT2b490vm5u/dS5n5OOeH/T/s2r/GZO3jMky1chHvy0f0C9JPOl2V2XHfv5CfVN2t+jxTXzQ99Wh3UhxKk7ChZ1TDSPTtiXEjfYur9GRJPev5r9Im99PKIpccV1mzzHJpi3XavjphTm0r6/63DTVXObvi5HQ85Z4z/aZm64Yv6w6MiHtdcQD17qt/H4ZXPEmlSXZaOJ9T/rTUnx5oMZlQNvtSdO1bcPenbJfOBkUI0aFYhbZLy9vs4lc+Kkgz83SH3M8c82zQ36xRx4ofJFu8PEBp9hP105b+4ZN+et/QuJw17vrm0YZ77dY9Ww+oOIU32b155zznygytc+n71DLAxS82usud2+d9M/cLbut68Z3uqsOXnzhaKHv+ewv09m3qofzS10zn0/PEEclvrGrYIfzKJ+wHy/VcSni/r3G3rG7J2YcLrceGLDyWlr15vNP9w62sW/q3V/wYA+s6PM8UFiT19PYsMT17ODI81e9f1cHz23rssjXX7vfsS8vP2lGR7XifXKwZnykDnJ0O/XO0eJT79Xc267/eal+tnP3w0hFhGO307YaTZ1iPm5wRRrPMM35Kst5s9rVbi1upc1donZ7rnBvGmZx5ngFtZ4ZuOGY4LN9eYdalCxojW+e+2pxwzz2PCfC+adzibuecDv+ddyfs4fV4a/T2xwTTtfe6MMqDg/1OH8Q+LFS/7ssVve7b96Tfs+xPo+dd/eeUje8Tn56NfbWdb9l8KqR8pD7SzGIzOI9Xa/ZU4+JTtl9pgc4UI8OKDn5Rtn5LBpr904uOUB83dTu2v6j7JX3K93l0lij99ndHKIld1dNL5Nku9z/I7FN5edkz9XGSy+nEucennMsQrn5fJWzca38bDGv+wrP/8XqevZuOHEmHu0P/Jw+VmXZHJLryhlHPFpZZT97ni5OEdGXalKnPr8qtv1y3LP85Hd4n/IpHzMxx+Uuyo1a+Y8uTWR+FF7p1NNE+TjqEBdoQfxpZ4eK3r9KnP65S9Qrtxl/70LlyclynF/RN6//TXxirlB65ddk6si+x5Z7U08OK23sj1J1q941mL/JIPjr4yvfuo3+v969fp7iFPD9j6+dF0usXxfcGMksd7ssyX1hlxWPrKS8Lgj7Y+8X26X3SLvbe/0sROD78gd+UPvrbMM8Y553CDaEnpHHl/hHXdxXqC3Xf/IdiL1jmy4cspnCy0LvdNXrUm1uGfIA4H+Xvqib7wrvtavihicITuaPA9PK5oclTBgeCURliGnN3ljzh3Hmd7bMvu9LVIz5NH6fzS85Tg06vLBw1kW97uy+bmtdT/QzI+K/vNZUzH4rnRf+3jTk/xx3j3HLsm3hN6VRSHdnPzslkWNqDJSJ1Lvys6zY0/l2n0T1bma+XeLe6b09nhN/86zGVHxoZ+ft/hnyoGjw+wNlulRI7sc7yDCMqV23oMff3w60Xtr08gMS0qm1HywpEtSwDLvfUXNEi3u9+S8vRd69HYZExVisbtp8b8nxx7MXLJj7tfeTZYO+tkSek/erNw94tz8wKh72j3JlpR70rvZ4Hs/Verr3cOnQo7F/b5cP9NrT/KzZVH9q9b7xeJ/X7atdLZGtTg/76l3eiZZQlkvv6zqmJQ/xXvf9vWVRep9eXrdwHo/lp/mvSblgwHC44E8dybTb9vDsd578yN52nsgf534oVeow5yob4p6DxVhD6R797vT9c5fRQ106p5kSXkgEyPWFrQqWOh98ddpBRb3LHkqzX+E41t9o1bW/myTxT9L5oZcXtfIbnaUy+L6GyyhWbLNJtd3emkWeFedFzVcpGZJl2tbqtZVpkUFd/lDIzweytSh2U7NDYu8r21L7CMGP5TP8l36TnOeF+VyOstLhD2Ubt91djLNXxI1Jy7vS5H6UD6ZXiXEy7A86vzcJjOFR7Zc7jd1cpJxeVT5zi4NxeBsecPi5SUm6aNaJSy5awnNlvu3F6XdqNU3atHXrgmWlGw5fllwXM2CBd4jPRvbCY9H0vjB28NzA9Z5j/o1Pd3i/0jODtmb7Pjsa+8+4UHlRdgjGVx4xXDz9z5R56V/TZH6SL7+KMa+VWBwVN7xfU8t7jnyh+OGESeeLY7aE9zjtsU/R2ZntK1WKWBDVFqb3W4iLEda8qralxfrvbu+91MNkZojwwb+dqswcEXU+EHPXYXHY9mpcH33S0ULo4KvhdL/xzIwftWsN58v8f7tzrbGIuyxjFk8aNIUzcQo3buNUy0pj2XBtoO/6eas8w58dCPf4p4rP/3kxvhWOXO9By/u/8jinyvvt7zQ/TPt91Hn977WTITlyhlbrnyU8Wiad5uDHexEaq5stXDD63Fz13tbFsQz/09kI5+mF/c5zvM+MKddBcHz2bY1w4PaOgZ6Lwr9zE6EPZGXo3xXfP5sUVRup9Yc/0Q29quW1cBtZpRrgOa8xT1P3vh0xvxrpu+8JxxaUGTxz5MOjS61zHBaEHU8v85jS2ie1MyePCo0f4G38Z0/71tS8uS7mS2arTAER1Us5fWsBkopr2fVfaWmU7lPZ1lfF9zcucSQPzvB7LNw34fW5/nr406HPzp12by/4qNH1uftke17Beyte8kcpD223/o8nPlG4LZrLePMW79Y6GJ9Xu0743R53z5nzWHLnGcXP08a18c22XnGLN+p+aH1eW/Qa0t+mf7xcfPx2988sj6Pna89pL/36gPmcLGmo+R5qa5LWrsnn2wyv/p6eXeXtUVLWNfz+z0euHPrThk2RuN+iOeBw83a7PQbFCXv/Dmmj/Vx3fG6x4zbDWNk050bh1kfpyd2qV/h6x/iZFbHmdo7PO6mzQv7abF9vBza1S/P+jjq9PBInxZ2V2W27tnz95rdke+YjnXd/Nol8xjnVOcBfRKkZ8fyj59bUsz2L+az9Dm0e+maSaUkg97ggYpq7vhKbPcv9mv+m8cr/w+3L6zJEXZqrnklVv75/urON6Kdn16Pnud4I3pS3vVoV2IN8TTiUcT7yt+I3px/PboqsRPxNuK1xC7Egrgu5d0oP594JnEVYkfi2cQTiI9QfgflaxO7Eu8hDiOuTFyO+BlxFvFgYj/iHOJbxH2IPyQOJg4ifupwI/r+k+vRC4nnEGcT/04saO8J8QjK96d8PvvvEQ8k7kX8HfFi4ueUz6H8cuJA4jziu8TdC+9EOk0aHjluh1YXUO2I7v0tDY+ftk+KrPJ78LGgVe66Zh6HI1dPsxzb5T9at+HxXV1EmwrHN725LTKk8Z22Q7YG6kxjtMff/fbbyMf3F7SL8fmbrl5wm+NfpTyNDNjiGFn/B3O7uwVXIuV4Gdlmd2NdevVzum896xz/3O5sZLlI52Mfr+6sg/V2O7ZZ97WnjLWs9Rgdx+qo4xh16ajTWnd72rC2dYw2rW23pw/WvhylT9a+taePkfTV2ud29F3HGKxjaceYrGNrzxitY7WOWcfYdfeCchY1qRNvjn5y8uvUpxnyUvfFvW9m3pHU6XF31I4XcfS5Luv9b+6QHdpoco7P+1U+rn+sTcHlVLln806nTeP/Iz465HW75RMSZScx8UHSlAj50wC/mILT12TthPefdd16+0UsSk1d9a/9crS9Yu+nt8V99W9Oa7PsjxsD1O3++vragJTq1war+4eq24fpQ9rX6jL74TB9Toxd8r4zX+gdMgZsMAQO128bvadmaqsR6nEj9OvrzbhVOHGkevwo/Q+RlUzjm1112/7GzQF/i95Vr337odNGjBg+uYX4xyllv+MaoaZDl/d6eR7ZLf/ckXO5x9Ce6vX7HG31H/te/9r9BvsKXPfL5uM3K1H2n6jjdinef/r8DX1EnPOPEbsPSn+HX2r0+m2AjM6zXtgvp7icfsSveqXf6nsFWw/LIW/3bvHmjk5yaMW+usM/udrqbxWtN80K/bLm3iMv2n84R7YedFxjq7/RVX0Hj0+7lc87+qJ9r5aOu2v3f/6i/m9urgj2S9v+ov2eS1ePr2R6IEv6t/Cox/K3Jm170f5Tv/St6350Kq7f0Oi8vuSzo+d49Tp/wMvp/6H19v/b/7+RXhtcDeVFLYP1F1vcDK0MbYS30BkaiaYGL0N9McwwQnwpRhtmirmGGYbJoqfobfA39BcfGT4W74uOhmjDWXFenDNcE8mGRMNl8UjkGSyGZ+K+4aH19wkMYWKrYZ9hpzhhOGX9NQLDSsPfxHqxxrBQLDUsMAQKk/FrZYmyyPidssG42vitsl+JMJqNx5Vdxr3KFmWjMVW5bcw23lMKjc+VJ0qO8YrxV+WGkmT8SblgjDX+oOiVzkZf44fKAOMgriLdyzjFOF2Zo8wyjlLGGUcahyqexobWX1YwtlN8jG2NbysVlSpGd2NNxdn4mmKnKEatqRy/D+1kqq6tY6pmqqRtoW1tkqb22iamZto3tPVMg7XDTRN4oJxtmqedqp1k8jN9xi9A9zN11fYwdTG9pz2tjTFdNP2svW66qb2qjTflmv7Q/qktMN3VZpkyTL9rN5u2aXdrd5iOaU+ajpoO8uvQIaZQ01rtYtMy7Xyt0WTQBAUuD/xGsy7we35BLTjwUOARfv8tMpDfZwsMD9ykSQ+8w2/HZQY+1RQF5gc+5rflEgJTAn/TxAX+ovlRcyawU+AHmu6aboF9NQMD+wR+wi+aTQsMCPxKMzZwPL/APSTQQ9MgsHngm5oOge/yC90tAysHVtXU1tQIdNRUCHQI1GhqN/3kvT/cHspvpjjPq9n+rFnX8+KmCaa75mq1jUsWm7JlnvM3U7enJ5jrVPX+5GjwLfPO7n3vfnXk/ovrkWrfThi21TVVrii38szcFdyfGsWvnRCeJp9+OCr7w4Xp8kKHgBHfh92RH3h+N6PRbd6/uc2uXpj1WFYxd+2SfPe5dNiV/s03j6vqhZpK6ik5rqScUFPvla5KyMT70mW7fN6+7QM5ISLj+wHDHsr+8RXe7DkjW/Z3vdK06/VsaWesucK9IFv2uHX9u7cs2TLevtHWHPLzpyZcME9PNfsfGdj1eoub5j+VLr6DX7tqflAzKOhh11hzP7/H4do2x8wXywUmTyzYYj4d3m+D5+tLzblXHGNH+Y43CzWp3zeY1Vx++0Y3/l6WbsXpjJxf8T3HevP3y4p2HfkbJh3tNEa9xwpZsTgZpEEoGjvHidKuol4odoOlUHjM1/SUPFbwVy8VD2FnEC2ksCMSHpTnv6Ii+61/hHp910yzLU8qyUu2y9qxk/j7wGzLb6j5+ZJcqttLykmhphefertxbe3XBYlfMOXHHWpoaoqSZPkH6fkrilR/qgpVz1Cgeop8/IE85OIxHiEbWbiPu7iDdKQhGb8hEVdwEXE4izOIwlEcwC5sRSi+QzAWw4Q5mIZxGAF/9EFPdMN78EYbtEATNER9uKMOaqvqwAOeaIwWaIdO8MVAjIcRf8MexCId1ll/A10xAWsQgydoqF5HMhhxcKBwZwQhFs5aIXpiNVLQyE6ISTiuXlOwO1bhN1iv4zcUm5CCGg5CfIwA7EQ8HsHJUYhaaAAveMAVeey7hDAMR13EUc+XsFD/1xAYS9s/05eaGEgfv6XfkeyynqtUFkcKC+MyiyKSBbGKBfEFi+FNFsMdFsIaFsL7TyyWTBbCghyLpd4jzuVDi6V7FsexGKbcs1icMi2WzRnM7R3K3eIYJtHvd4ulJosjO8ViSbhpsVxIZo3cYA1e5zxgOQtGwbdJ1I8aqISWmIV7WMh+P8r24LiZHH+Ver5ItVgaUXd92vmE9iJZjH3pR3P6pKd/i+irM30/y1iOW9cpY/6Qubplvc6bG+ehqhCPawnxeT0h8hsKYX5LiMNvC3G1HXMshVjQWYiq3Tnfn3CO+wkxfbAQk0cKYRzPPE9jfucwtyYh2i3mvH4rxHYWx7UwIZ6Hc+/cxzk8IkS5k0IkRQux9GfOSbwQ3yQy/8lCJKcLcSpTiNHZQtxgMVV+JkR5C9u0imjqqIhPXRTRvKIiTlVWxJ9VFZFZQxGm2oqIrauIwx6K6FZfEV97KmLUG4p4hLoNFPHXlH0u+r09o7+Xe559Pi7m+Sb5oPkJL1fnrfKz0F17rvlvU69XMPXF60NRnPrp/2luGKDGg9R4iC0/PVTd/oUaj7Tl+jHq9vFq+UlqPFUtN8OWe8yx5S2Mtjw1SN2+RN0ebMt7rlK3r7flCzfb8r67bPmqA+SlpZJxjFbbnazGs9T2Amz5fpMtr7hQLbdE3b/Cll9bqba/Wt2+Vh1nqLp9ky2vvtWWr99uy+/uVseh9u/wYbX9SFv++ilbvuwHWz4x1pZ/8Is6ziv6R1W79vyzeqL89vPnnZ5l2es//cQrbFHPhvp5SyLHOg35QK/r3GVywZQR+pRU55U7chfq17xZPeSq0xP5ujx7I+L9qvrjY50Kwvq00bNxVP1Rn9nKnZ+utx6u27JV3/GzVWPbb9gtR/+24j3t032y+9qO4ambD8oOlaoe/CDgsDyRlDG376wjMmDS3b3f5x6VGYXWNyb35PuLv+RmpvS8XjBvTNRdGTAmaurK6n+f/5Y46Iu3jy6Wnp/38X69wmQ5dv2SJ0O39JG+01zeWZo0VJ75xTv5t1nqOiSNKE535L/K//9z/e2y6xuXXd+47PrGZdc3Lru+cdn1jcuub1x9jhCjhKPQCuryUkTVMSXvg0tPZ+spwkBeUv7UKPU1AUpSk8XipTIOahk7lKRBHi/Xc0wtY4+S1I43fl3/UmbRaCHKvXL9t/rW1+Z/KWMmcOS2E0qS7pV6Zoy11VMeJcnzH9TjjJJ0mNf/E1+px4XbFVCSNv6DMq+hJO3+N+pZ82/UM9L/5XleN5h1xO2KKElD/o0yYkDpZdxQkp71/xdl1ORTTRFPKWott2U292FvRVTidmWUpDuUWehpK7ObMv05oa8LykJNL62Dqng1VUN1vBVfsdRfq7GQxH8iHRtQodggxvYFcUn/d31t+83Nmn+ddz+1DFo0U4rL1OJ2bZSkMdQz012IkjF2sLe9Lq6LkjSFehr9pZ7a4BDhgZJU8W3ut+9wn+Z+euWSEL9lCNH9SyFumYSIOi/ElzjE++YgPyFi4oUYjGA8xXgfIfRY6y1EJJLhQSxQ944QW6G0oywLrennivibTohWxxUxmDjC03Zdy3nkB26wTa+IGDraMFkR4/GQbTPjlOJ/0fl7rBAnfxIihPfeze4KETtFiO/UxbzZmTVI/s0A9dcVyduR92WQI8h7JYriuby2k7GQR7IQppB/z3HTyI/Vpk/kIRw0XbyabI+7Crn9Ydu5306sJV/L8XbkX7PdnnyRg+0+35bF6EB+mff6juRd5toeB7oOV4QzeeQXinAhXzNMERXIfzlou89FrrSt90sm9b6jt639Tz4UrG/G7Whb4x+PVYrX6w8HhPAkf6e6UrxWlx+2rddBJ2zr6V32e1j3LxGiHnkA7dcvZe36048P1NvuFHyfQjPJeyEX36M222Z50CbnzfexIqZx3hLVa8l0ILduu8q5yf+E8bJONKyN9Zds2xddFWJvd0U84LxN/cm27Z3TQjTg9g9xSnGczBpbho1XbPvHUDac9TCOE/anI8fdYa0glO3PBvCZCmvpwmFFyAhuq336qQVtN2P+dNw3pBCFPRWxknwZ+9/nDdTdboyV+g//yPi6U578W3Jf3mjdIa9Evpj7QJ1JQjyaQv+mCnGwAvl41t84IVw46Z+hrk4RcU6KCMHNForYime/M6fct1ZZ8yzWI/mFk6xT8vAdnDvyQ+wvTGNNpguxgjd4U6zXPb3Ffay1EHMw60fWx00hqjJvbXizNpU+pNSgPzUZ3zFFxLMo/Bhj5mVF/GBkrUQq4hr9m3jGNv6hg0Rx2jtaKT7vCr7eCrwhXk6d1nL/cLeV0dKvyLm299L/F3NvAB/XlP7/n2kjTZImplWkwKCoXdbQIoBBS0sxtMiiTClSYFAEMAsE2OmqFRYGRQoMitBiALFgUITCdHUJYIANi/7fM7nTnOf8n7G3Wfv7Ol6f1/N8zvncc8+993mee+9NpHbb5pI+TccGumYO97SSJlxmnms37dNMKKO5mBh197WOo7nzSrlmTXPHdkbs6/KNA8bV3L1T73oGePtaDocmdP+4r5A7fev5lBfzdY1sR+/cd55Zj6o5iGN3NSMdzYPbiX2pmo7e85P4pfPzwpUlTfnz00Ys7e+dnwt56b4PzXqO5rRLejUDPE3uVEOTute57rZmIvO4mj9d9Z/3tc9HUjOACX/naF6pluupwnH3dZm15hUv47x76/m9pfmstGbv+eIwRZOr7ltPhvpyJBrGRXt4J28eT9OO2J1noyu9ebwcPEiZZ8TFUnNjwNXQt37AjLDu3xuA9fE3sDTT/+BpvNi4GRQ0f7A0b3rzlGIjj2ZDI9v0DfR9hS3N6WX2tZGleV/Z18ZGtsPL7GuUpTmizL5GW5qXlH1tYmSLldnXpvZX5TL72szSzFX21ejme5l5Nrc0TynzbGFk+6zNiHlmwbd0/t3IdcNyX2eDrfG3sTQbxozY12zmcX+x55gN5XqeZJ6IozkpLM/hOt453M6uvRtKzR3esW9vH3ubEfWQuOc7rWzvXlTQ9NVnNDSpuyQs62oBY4xsmR0DYp4CaEJ375p9GtYMejVjl1Iz40IjNKV97WhpTm6UGupUse1kab4rc93HWZpwmes+3tJklfO8s5HtCuUc7uJontPPodB9JK+Xd1xyf4+UOYcTLM01Zc7hrpbmvDLncDdL06jE/O5GthYl5qOO5qwyMb+HfV8uE/N7WppFZa7pREuzWplrOsnSrKMc115GtkOV49rbrVFljmsfS3NDmeNqsjTzyhzXHy3N4DLHta+lGaYc135GtknKce3vPkuUOa7J9nNmmeM6wNIsKHNcB1qa5cscV8zSrKoc1xQj22TluA5y87TMmg+2NEeVOfaplqbyYnlcD18k7imqpkPRfLhh+ftOOc0ZiubhC41Y8+Pevg6x7ztryuNaFhTmOdR+l3GOfQ1QmOcwS3OdM88B8MI8zZZm2TLnZ9wvaDoUTb7MsY//Bc08RfNMmfMzzX7GLnN+Drc0u4b1Yz/C0sxeUz+HR1qany7Sj33iL2geVjTvljk/k35BM0/R3Fvm/Bxl50WZ83O0pblciY3CPMfY33fdGPPmiVua19TzI+vh8/pxUQ/Lz/Owj3nOUOY5v8z5OdbSHFzm/BxnaS4qc36O96GZbmm+Uc+PrKuzy6z5BPv8qMcua29Ufw4X3/fuVp7DTzKy3VvmXtBiaQaWuRecbGlqlXvBKUa2XZR7wamO5nn1HMr1PKGeH7me79U4lJrTy1yL0+z6U+bedLp9nmcwj/e9/vCAtyb8My3NXlZd1TX0X9l3Ds243ufVhJHtoTL7+pP9Xin2pWsuUfZ1lpHtp1UCpX3xHOpde/xz7PNj7auc5nMrd/guwXns1ZxraW7sWw/P8t4zvZHtwNUN576C9fR+J/mU7xTn47damjbWg8b8kqY5HihqAp7mGzQXGNk6x8lYLeBCR/PjTlJTOHZX8y47dzUXOZp3ZjgxDy7Gv8SuddZ3krOYBxTmEXPN29HRgEvxwZL2u5MMx973ne0rHgz/bGTbr01q/jo6YJKO5v0DezUDHc2MpdS0XYnGOj/aem6/oqQpv+YTL0ZjvaNdgoYmdNfLedTjinnz/NKaz3LW/Ddlno0/ol5w7KX1vOWt5y92Ll+JxppnIRrGRbvp4l6NPQ8aofue/Apb74zdimavTfs0E9B8oWjOuOY/r+eZP3sauR7RVt0s4GnEvkSbd7UxISsHC/eLyxzNcn/u1QzwNM94wT7T0kxtk/PcqcwzZNUAmmCiNE+HN8/llubrVQqaKldj/mrfmwgC5jEDLc0Vzjz3cL2YR2janHmeOk9q7oK7mq8hI9hX6bge44GXcBFtxvm9mtKa39wKNe0q+3qxEfsS57nN/bnDdb33lFLtDXAv/5ujeWKGp/HqPBqa1K1ZJWt4pTJP56CixvuOjUaZJzSRa4HEOz/FmL4a/xpL01jQWPflgu5a/OsszTq9mkpbk8K/3tK8sSq3P6f23oB/o6tx7gWzjGxvK/PchH+zq3HmucXI9t5Hcp6bQTv+bPueouzrVvzbXI2zr9uNbGsPduYBd+Df6Wqcee4ysv3jdGcekMa/29J8vLquucfSBLhe7rHfiz/H0gS3cOYB9+Hfb2nuG6FrHrA0rzbqmg5LM/1WNM6z8YP4D1maYxsC8vyAuYbmapx9zcN/2NJ8tZ9znsEjhuZqnHkexc9Ymt1rpWYs+fUY/uOWpnIjeY/b9AjyG/9JSzNKiY2n8J+2NNUbORpq3TP4nZbm6Bo0znvBs4bmapx5/o7/nH2PI8bceZ43NFfjzPMC/ouW5jBlPS8Zmqtx5sniv2xfC2U9r7jXS1nPq/jz7dyZLjWF5+PX8F+3NC8u26cpjJ/K9XoDv8uuUQfq+fWmpRm0sVczre/YbxlgPyOF5Xds9lfsX2BpahC4+3ob/x1H48bzu0a29ZUYe0/O42nkPDn3mYR791bWPMfygLAQ/x+uxprnWO6v7xvZtv6Ce4/zDrKojGaA9b5DE7o1SFz3vfufhqZqvFrnaT6wNKtbGuYozvWhN6ZpmIO5ejXdlmbTK///6/nIyLbexd59WX5PELoX1gx4Gvlzxo8tzTa7cG92rukn+J/a9ybq2CpY+/7+Gf7n5TXM06v5ArjtIPKhrbYKLdeHNV7AdfkS/yugtetbjElZ+TR8Ms9b+N9YmsK//duOLc3ZgOZb/O+A29ZIyPkeJf7+hd9jaYbxUbMh0Kt57lTe+5upV/g/LMXv6/0bNICml4PiF0EDnq0BS9Oaz64roqU6YGLW+sew1h/xf7K0P4ekhr9RiIZ+S3P8HPn7jY/zcX6xvUDakCMCQnPmIY6GtvwAjtHRBBgfYGmuCrgafPoqLM2PRwfMaJ59B3iaXad559nSTOQ4Wq3f3Z3BPJWMD7I0p86R+7qQ95kqxqstzViebzKeZvwanJ9mrgfjtZZm6/1lnLzHB/zBjNdZmo+p422WZmU09Ywva2ki+DFrX7vwbhCkb4ilOZCC5P6u6VDGl7M003dnLkczjPHlgd3eOl3efy4jv1ZAsyLQ2l58cIg7v3M8GB93Sdu+jGakpdnVxzxb+JhnnTMK16+hr5bMpN4x/jugtcmPBsxaL3L9eJi5lIBqWdGYqykGw2vJ6Rjjx/J7VwRb5hZyCG3bcK5Z0LquxP36zL0B0NpaGxSuV59+AusJwzey9D9PC7gas7Gj6VmOa2zF7gPsdxTjo4Hd/sVccUv3Ku+Nm6DZFGjtyNO8nPBq357E8mZoGy19eKau2dzSjD9Z12xhaYaVmWdLS7NHmXm2sjSrqvPgA7ehocl82g5sD3YAY8BYsCPYCYwD48HOYBcwAewKdgO7gyjYA+wJJoJJYC+wN9gHNIE/gn3BfmB/MBkcAA4EMTAFHAQOBlPBIeBQcBhoBtPA4eAIcCQ4ChwNjgFxcCw4DhwPpoMTwIngJNACTgaFdgr2VPBLv989wLMx3pzDoHS+4vhnWTyJfwNwW4Vn04xlQYnn8M2ggabS40H8mMWT+Dl7vIpxUFUaxw9W9/EoftbiwZqBJgmCHs/iZwfL9WXrrPF6xoMDDacDwIfAlxtYPP6BFi/4gyxegb+sxSvxt7V4Ff5ii9cU+MA+XlfgqyvzDYOvMLD4HMCwx735LT4I/0yLF/dn8eoCD/Tx2gIfVOLW/j1eatkVB5qIdT3z8Cj8Nua6Hdzh4c6lxIZbkgsX8A2QEzuym5zgnnvxueRTjjrMvXQ1NFv+iXr5PjVtG459D5796J9HUv3E/TD6EXWb7eumkV9nkTuFF2eeR0ayzXqNvG8yVsXYXxvoZrsv0JzP/C8fy/vWhzzHwP+dYLs89+wnyGFqewrdsZzEz+C/Y/sbqclPnk6eFNbF/vZkH8uiqWfsFm50D4Eb6ZvAXFfjZ9Gt1k19YZsvW7keXLQhwzkuvjVuTgJ+zbrPQHMcL3ILKcjrcr7Xf4TzwbabYGdxTl6PGvN7ns1XPpucRTuc8/DR6rxzTOFZk/2sdAb7Y///YOwd9vEm9sNbee/luOK8z3w8ndxOUFOYcyrr/5jzdzb6LcFx4GDwIds9+Dnnggf3K+7iuNDuvTPniXm+O5Lryv4uLRwb6z6FQJzBPJ+gnT6X56cnqVsc3xbs6y2eMZZbg/dB+gbWcF14+JnLWJRzedFqzMe+NuAaPMJ83z/OOWLtD+FfzXwVnON32e7pCcRCjufeydTHc6hpHM8pa/I9nX0HuZargLm7UVNPIj5b6X+U9zDmGE3/6s9xP+Z6BMAzfFg6jfU/em/hWa7KvEVVPmdxlG9J33HfnRxIOjX/PP4SyBhzEd8ufuCePzFwSuCawMOBBYHvAsEB6w1gTSMHmBtXGmD+GRpg3gYvrkun1XYbP3HSgRttV1cTCoU2Cm88uq7GrZccNzeLgdgF3LgqsN9zU6jFrsdNohq743asH7sDdjD2aF4G6rDN2CrsePrrsUee3VsLvuD9J4g9hPEh2CCxuhz2aa7VUOydnKdh2Je4Bitg9+SBbHnsTrv01rLTuaENwC7EDsT+MKp3XVO5aS6DPY51VWLP46FiUKEfG8TutH3v/l7ADsVegV0OOwc7DLvcDr37OYDtV8CezwPJitjJjDdgv2N/w7GjOf4Q9n3618Bey41yTex0bqRrYedy4xqBfZYb39rYOPOsU+DTyRXsq0eR39hL2S6MvYIb30bYnxjfGLszN/ZR2G0nEB/Yueg2wd7CddgUex7r3Ax7LvpGbBN8c+z7rGsL7Dxuqltih7G+rbBbcqPfGnsA4xHsdui3w57I+doeuw834Cg2xfr3xE7l5jwRew36vbA3Md8fsUF0MexT5PwU7CWcj4OwX/DgcDD2bPRTsT+y30Owv2M/h2I/4vocht2A8zANG+V44tiLeUA4FruI4zgO+1ceEo7H7g2fjj2BdZyAXcDDxInY0VzHk7APcf5asE+x/cnYbh4MEtibuW5/wmbhZ2EvZfuzsXU8uJyDvYntzsUOZT/nYYM8SFyA/ZaHnxnY69H/Bft7+BXYDTmONuwV1Oorscey7kIA3sdxB7ATWc8A7InYgdgs/UOwI6cRX9jXtyEesNvAzQDyenv02MMORI+9heMMYS/bqfdheN5uWAL5T1znBAF83XbwIPmDDWCP3YHtsRdvxfbYeJS4x36+Gboh6OCFQP56EyyBXFWwBOooto9yor/k+MPHMS/x+fNi6i4PelcNN5FDD1185guDX1h/1MTFZ3Yee9ihDZP33uup3dYeP2aMiSzeiT/Nsw9/9uewxccsPmnxmcdNO/TQP8x4achNr49cUPEYz2BTTjzk69tfHXLxyyaz+6ULLjz0qOkhwaccPN3mU6dMn2Lz6w/i5z+gezQ/4/HskQMKFoD8ZXXFXK+aWWcC2BC2wCPYCmwcOwibxVZhw5f38iS2ApvBVmHdNvS80pMR53MG55fIDScGmsXNTv0jkkfTH34mgH9o0V8Rv9QGEsFb0TfmBa4JUTwOf5tn8Im8SfjnP4xP1MXwr3+e62WOMHH8G54u+EeaBP7jGXwiP4k/6BF8oj+Ff9XD+ERuGr91Hj5Rm8G/t9jfarL4rzGn3ZYxR5kc/aEXAvgnEEwDTc88fDIohD+w0E8WRfBnvIlPJsXwrytqzjcJ/HkFn8xI4T/7cMG/0GTwG9hXpffbVx9k8Mm+HP2vzyv4p3BTY21FzakmhH9m0T/NRPAnF/2LTAz//YcL/iUmgb8Dvt0GmdNNiv4p9A8yFxf7Hnmo4F9qMvTv/SS+95PvI1l/lfebXpPnFfx40W/NFPwz8Mjlp/G930QZ9XzBT+CRcw/he781sldRQ8Wg9TxY8JN4pBBryAyoMJGBoAJUghowFKwJtifCaCnvb2LcAG4Es8BN4BbQDmaDW8Ft4HZwByi0NPZucA+4F5TaHPz7gDt+P3gAdJQZfxA8BOaCeeBh8Ah4FGRA5K91Zn/QAtpAB+gCdmu6os58A5JtdWb9K+tMJ5h6FZq/1ZmrQePVdWY+iF9TZwZfW2fawZjr6kwOnJaqMw3Xo6XVgkRrhcmBYr5eTd1/AntBhYmDFEheWGEyIA9Cl/ba6IwKkwDBv6GZVWHCd6J5gDGQnkv/PLYHKZAF5mE0IAkyIA/SjzBPAZ30sZ5IvncNn+KbG+qKa8uuNai4tkpvbXEK9//V2gZ6a0st7F1b6sLq4toW034r5y2/XH1xbcm9a7xrin9I8dz979fGPv1c0+g+NUvO2//F2mjqeRuIn2ZtWVDob9y599zl4T+CYFPNkrXlDqtZglihH2T2AyB/AJZ1hQ5i7GAAEh6SHlIgA7IgB1gbD3Q1JgTstXVvWm/yYCB+6OnetS2m/VbWlo30ri32Zd95a9uicO7+92tLfOnvvKXQlc7bb2VtnLein0GXAwV/5Fq9564HXoD5qm9tEXxa0Qb54yphD6VWWlvq296+DmwBGQ9Z0A2+Aea73rWFsBFQWluA7Vp3rjdJMAA/OqaWtfWet9/K2uLR3rWZA2pNCBT8yOq9564RXkAElNaWwKcVbHFt0QNrC/C5NjCldsnasvjl1jZy777zlkfH2orn7beyNs5bsfYGD6r17gve/apu4G/hXi/Wtpj2f7C2svcFfNbWF280Yu63EG9ybYtpv4m1efFmtxjXOAFSIANyIHgj24AYSIEcSL5aYWKhZUwSZECp5fEj99YVbcKzGc+aOb024tmEZzOeNfd5455NeDaDLbXgLJ6ZQQy0gjSwW1eB31RnRoIoaAF2S8E7QR403MxxgWaQBB0gB6puqTNh0AQSoB1kQQ8ItdeZcSAO2kAGdIPgbNYFYqAVpEEXMLeyFhAFLSAFOkEeNNzG/kEzSIIOkANVt7N/0AQSwG7t8CzoAaE7WAuIgzaQAd0geCdrATHQCtKgCxTbXawHREELSIFOkAcNadYDmkESdIAcqLqb9YBCa8ImQDvIgh4Quod1gDhoAxnQDYJc94D38/oU8VK+IQEVIDX/P+tqwCwfuuEg7UMXAVkfOhMg/l7zdxzB1/0dxzB0fo4j5EMXKcCnLoHOz/FmfOiqQeYNf8eR9aGLgDw6P/sNd/nbb6TL335jPnWpLn/nL9fl7zhyb/o7jrwPXQQE3/K33yg6P/uNofMVVz50VSDjc76sT11wwX/WJUDUhy4Esj7ny/vQDQXxt/+zbmOQ9KFLgCw6P/uNvuNvv3EfugRI+9BVgfC7PuuVT13Chy4BMj50IRB5z998MR+6oSCHzsd5Ruhvv5Gcv/1mcv72m/O539BCf3UttdDn/fwfPu/n6Hzdz9H5qhs+dMEC3vcXzyF0fs5L2IcuAsKL/F2PuA9dCOR9zhf8p7/5kuh81QMfuqEg/IG/OI360CVAEp2f/QY/9LffMDpf18OHLgjyPnRVwHT7fO7s9nkf/MjnfRCdr/ugz/nyPueLf+zz+qLzdX0/8Xl90fm6vuj87Dfvc7/BT31eDx+6KpD1oYuAnE9d6DOf90EfuhDI+ZzPfO7vPCd86DYGKR+6BMj53G/sC3/7TaDz9VxSXqf+PmUImC34JnI/7+sgCoL8oWl3PEtfD3DHg954bi7v7/N4fwd54G6ffphvA0CMW9tnHuNdHgQf530fuNsnn+A7AXDHg2DmupUm9UxdEZ0e7O0L462ddUCMi+07/s78IOfB3T71XB0Q42L77At1RfR4cLfveLEOiHGxfXe2rojgywC422fpA3Lc2376a5XGzK8rYqQHa3vGmZ8+IMbt7ZvfqCsi6cHdPtpVB8S42D77Vl0RPR7c7TsW1AExLrZvfLeuiJgHd/vQe3VAju8BQmOJ3fJtiS6Brj8t1FEn+DiHxx3e5vCMx7uxwQf7xhrxYxZvxU+DLvCrtofkfCMdHnV4i8NTHu/E5q2xBvI9AkqtGT8JOoDvplynaNLf9Uz/B10VuJ4H+RzXPdAbaTkQK8XVfC8eKsCxdKYPLOnCRd1AT5ek395v7KCSLlrUlapt+CCpy5TRhQ7u062BIArH0OJFXemoElO99XnzZeG9uhNzYMlxjDikb76TQRjeq5sk9pu2dLNBbonu2hzaJbrkoX264SAL185L/lB5/oKHebrUygtN6t9952+a3G8aXtQl3mS+GUv2GztcnpcUXDsv2SPwrOsbOlK/vsOOlOvLn6sfR/Zced1Srfp1i7dKnblA18UukMeRhGvHkblQXt/gRfr1nXqRvL5xuHZ985ZuNghdrF/f7MXy+gYv0c9LmH6RlyVdasvC9e2LK/pFXMG165u8VJ6XLFw5LwjlfoMz/NWDOLp+tUec+ujwqMNbHJ7yeCc2b401PEp9BKXWjJ8EHeDXbDlnvqqM5GGHNzk84fF2bNYa68EPPdbHx+HHQRv4b+p75G1/1zOFzk99z87Q8//JGTL/U7fpcZ6gX8T5nWXq9p1Sl1Z1eHfJOI/AtTiPp2X+Z9J6/g+7W+Z/CK7lf8rSzQZZuJb/iXtk/mfg2nnJ3SPPn7lXr++J++R+U3At/6P3O3URrtbFB2R9D3bo17eiQ64v97J+HJmX5XVLzi9Tt+dLXV7VwV6Tx5GAa8eRfl1eX/OGfn0nvSGvbwyuXd+cpZsNgl369c10yetr3tTPS4h+kZdwrb6n3nTiCq5d38Rb8rxk4Np5yS9w7qPv+KsHMXT9abknnPr4pORhhzc5POHxdmzWGuvBDz1l1Uf8OGgDv2bLOPN1Ozz4tOSNDo95vBWbtsa6Cv4zfXwkfhS0gP+mvufWqfSli/BO66e+Z97R83/OOzL/k//S4zxOv9jvD2Xq9g9Sl1J1tH/LOA/DtTiP/SjzPw3X8r/iJ5n/QbiW/0lLNxtk4Fr+x3+W+Z+Gq8+9P8v58iVdxySZ/4ulLgdXn+9MpXy+gyvnBUGluL5RuHZ9x9BvX9/QKpXqcRj67euWXa1SvW6p1aQuvLquS9Iv6hhcrWOhSnF9I2tUqtd3Jv329U3BtesbWrNSnOcoXLu+Zq1KcX0jcO28xNaS8yXg2vUNj5C6OFy7vqG15XmJwbXzklynTzcVpDeG96OlO53ft3K4eVbykQ6POrzF4ylspzWWx2/4ex+P4DeDJPDTSscZ3ddfPQuN0uN9GP3ifXWCfl2zE6Quubuui9Mv6t6eerwH95S6lKqjTZTXPwxX694kmRdpuFr39pJ5EYSrdY9+Uffgat3bW+ZFGq6eP/pF3YOrdW8fqcvB1brX5NQ9uFr39pV5kYH3p3U+J+My7/CG5yWPOLzZ4UmPd2Bz1lgV36jDoNSa8BOgHSxNXqTO8pcX4f30vBhBv3gPOUG/rrnpUpc6Sdcl6Bfve6fo8R46RerSqg7vVHn9I3D1fe80mRcZuPq+d7rMixBcfd+jXzyXw9X3vTNkXmTg6vk7Q85nzvR03fss5Kbf972H/pJuIciXdJl3RF7kEvK8hP6kn5foWTIvgmfD+9FyLzrP+S9JHnZ4k8MTDm/3eBbbY42FsnVmHCi1OH4byIClyYvkbf7yInG2nhfTz5bxHr1Gv67ha6Quf52uy9Iv7gM36PEev0HqzI26Lka/eN+Hq+/7s2ReBG/S82Iq/eI7KFz9Dkq/+A56s54XWfrFd9Bbypw/+sVzWUnXOnmhSS83pWJJwMi8iLR7uthXzHd53/PW7D7dgwjicAxtujgv4dtkXpjb4f1oPS/LuAy9Ivk4h8cd3ubwjMe7scFX+8Ya8WMWb8VPgy6wNHkRfM1fXsRv1/Ni6u0y3iNP69c19LTU5Tp1XYZ+8f3ouTLx/pzU5VUd7HmZFwm4+v3oBZkX5kU9LybRL74fwdXvR/SL70cv6XmRoV98P8qWOX9ZJ95LuvOOX2iiKyzJi/DL8njjcAzt22JelI439YrMizxcy4v0fJkXyVy/8oI4c76bODzm8FaPp7Fd9tjr/DwdlFoUv8XiKfxOi+fxG/j5eQQsTV6E8+WPU8TJQj0vJi2U8R6Dq88B7zvvyYv0ODaL5HXNwdX3wUVOff+gTH2nX9R3uFrfLd1sEPtQj+MQ/aK+d5ep791OfS/pEtnC+vqO9yO5vghcW1/mI+f5CK7dB3Ify3gPfaLHe+5Tub7IZ57u7dMXmu5RS/Is/5nUhT8v7XfoQpPo6Nsv/bTi2EYg9EVpv23F/ZaiLEa/eI7Pw/vRWrqcn5c5vNPheY83vEmOgFJrxk9avAM/Z/Gqt3hfAaXWhJ8A7WBp8ixiBvnKs+CXZe4/X8o8i8PVn59/7byff1Pm/eIbmWd5uJZnqW9knoW+0/Ns+ncyjhNwLY7Nv5zvQnAtz8KWbjgI9ejHG+lx8hau5Vnwe7m+KFxbX9bSLQTmBz3P8j/IPAv/W8+z/I9OHfhJzzPzs5OPcC3P8j/LPAsv1vMsvtj5Xkb89aflFjjvP29LHnZ4k8cT2HZrLIvfY/HQO7zvgFKL47dZPIPfDYLvLl2epYf4y7NQYJD+/kO/nWcJuBJ3CAbJ9324+r5Pv51nZplB+nMZOnt94cpBap6dQ78dx0m4FsfBQYPkd1q4lmcRSzcchKv0443SL/IWruVZqFquLwZXnxst3UIQrBmk5pmpHSTyLALX8szUyfMcq/N0DdcsNA1bTynpkvV9umkIcnAMAysX86ykiwYHiTxLwbU8y9Fvx19oKLwfbdx7zvuSw9scnvF4NzaYs96X8GMWb8VPW7yr4C/s4yPxo6AFLE2exdbyl2fJoXqeLaJffD+Aq9+bl5d5loGrP1+hX7wPrKDnWWgFmWepFfU8+2ZFGcemQY/jRIPMizxcy7N0g8yz1HD9eDPD5Xw5uJZnyZXk+rJwbX3RlWWeJeBansVXkXmWhmt5Fl9N5k8WjjGJyWmRZ5GQ1CVDep6ZNWWeReFaniU9XXgE9h91RRvzbMazofd7bcKzOWxmnyoTWdRrU541/+y1Mc9msO7vr68GIlsz5wd1RYzz4I5XfVgH+sYD3hyVYP60QSbMWAHpjwAobb+st33847oi2jy48zd9Ugf6xt35E4wVYD4HwJ0/Q18B3R7c+du/qAN94+78WcYKiH5VgJz/9rmDTPDruiIaPdjzF8Z76ANLxt35Q9/UFZH/DgB3/vS/6oro8uDO39ZTB/rG3fkzjBWQ/DcA7vzRH+uKaPHgzt/4Ux3oG3fnjzFWQNjUFyDmz8arTJ6+AhoCRYj5C+Nd9IHSuDs/pL6IbAUA7vzJZeqL6PDgzt9SWQ/6xt35U4wVEK8GwJ0/XFNfRJMHd/6G2npQGl/6+eN19IM2D+78TfX1oDS+9POng/VFdHlw528bUg9K4/7m3wjExi39fb6JOlBqCfx2i2fxeywe6qaegFKL47dZfRlsNwhSU/4XrXScKc7Bf9JVgE+n/7JuGfA1SI3Tnwdm0i9040u6xhzo0413dDuXmW9nR7dL3/0R9Okm9Ok2GYwOrn6/apI688eS7jR0+/e9jx7Sdz8reJPg3nGI+WKHyPUlluguz4G+95FDHR28V7d/DvTpDnN08KKuddRCMGWJrrlvfcNBotnTZXjPNFf2vfc7uuC00n5b5M8TpjnPP9P155/UCfL5JwdX36tO7NNVg2Fw7ThCnq6R+I+BUmvF/1/mxf8qz8Icz9K29k+s+oHfY/HQp9QKUGpx/DaLZ/C7rb7gZ9znQAz8L48zfoW/enI9Oj/1JH6inv9T6Re6k/R6MpV+oWspM1+LoztZrydTT5F1Ig7X4jx9ntRl4Vo9CV4m68kIuFZPwpfJ9UXhWj0ZM9PRwbV6MuZyRwfX8nDMX2WdiMK1ehJ3dDm4Vk/MFbKepOFaPYm1Oe9TcPV9ytJVg/lw7Thynq6V+E+DUutS8+K3X0/yHM/Stp4vrPqRp36AUovjt1k8g99t8eCXnCdQ6ovht4I0+J/WzYf81ZMp6PzUk/CVev6PoF/ortLryQj6he5vZeajX+iu1uvJiGtknQjD1e8ks6UuCdfqSfY+WU8WwbV6kr9Pri94v15PKh5wdHCtnlR0ODq4locVDzrPHXCtnoQdXQqu1ZPMg853y4f0ehKaK+tJDK6d54SlqwYz4dpxpDxdVyH+v7K+t+HLvPjt15MIyD7dz++a31g1xPLb8DMW78YPftvHG/FjFm/FT1t9XQXL94KRIAp+reNMfuuvnmTR+aknoWf0/A8+I/M10qnHW6hT5k1yvl53WuY7utf0/Z7zuqODa3XnnDecegLX1pd9X+rycK3uhPOy7ozJ63Unmnees/J63Zn6paODa3Vn6leODl7UTZi8EExZovva0cG1vJ76jaw7cbhWn5KOznyr16cQ/eJ7L1yrT8nvZH3KwtWf/1q6alDxL/04gvQXV0PupECpdao59duvTyGOpz+tu8d6hvneqj/4MYu34qct3lXwf7DqOn4UlPpasCnQCfLg1zrO3NpVvupTaJ0qf+9P/9LrRIx+kf89ZZ47emTe5Cqq1PrUSb/QLVOl7nd+paODa/Vp/qAqsb4cXK2fw6QuAtfqUyJUJerTTLhWn1Ihub4MXKtPc9ZwdHCtPs1Z09HBtfo0Zy1HB9fyes6IKlF3MnCtPuUcXZS40upTnH7x+z/ElVafcvSL39dYV78eEfrt+jQJrh1HzNM18M0+AkqtGV/Jqd98fYpzPP1prT/1HWfa8rsK/s9W/cGPWrwFP2XxTvy81dewmPMKmkES/FrHGd7bX32Kl9fJOF9XrxPpdZ38H6nHW4Z+8Z61iV6fGjZxdJvq+x2xmaODq+9tjXJ9YbhaP8dIXRKuvrdFZX1aBFff26JyfcE99PpUsaejg6vvbRMdHVyrTxWTHB1cfb/bS9adIFx9v3N0Kbj6freXrE+JvfX6FN5H1qc4XLseSUtXDWbBteNIe7oOcicHSq3K1Cs59duvT/lT+1efRg6oX+JHLb8FP2XxTvy8xRsG1psIKLVm/KTV14HNgSp+5hkGv9r73a3+6lO2vE7m/2ll6sTpTv7D1fy/QOZNEq7Vp3MudHRw9f3uIkcHV9/vLnbqDlx9v2uTujxcfb+7SdanMXD1/Y5+8fwJV9/vbnZ0cPX97hZHB1ff79odHVx9v5st604crr7fOTpDvKjvd/SL9zu4+n53m6xPWbj6fke/eL+7XT+OIP2F1kTuJECptVeoOfXbf7/jePrTOiv7jjNv+Q2DqDWg1JrxkxbvwM9ZvKqKcwZKfU34CdAOsuDXOs7MW/7qk1ngrz7FbtfrxKQ7ZF7H4Fq8pR503jvgWn2a85Cjg2v7nTPX0cG1+jRnnlxfBq6tzzwrdSG4Vp9ir8n6NB2u1afEa3J9KbhWn2a+7ujgWn2a+Yajg2v1aWaXo4NreT3zTee5CK7Vp4yjC7+l16foW7I+BRfo9SmzQNYn83aZ9+23ZX0aDdeOI+LpesidUHVf/oyr1nLqt1+fohxPf1qk1qpBlp/E77B4Dr9qcB8P4zdZPIHfbvVlsT0gVFdvxoFf7TmxptpX3Um+Xeb55B3nuQOuPnd8JPMhD9fqzqKPHR1c2++iTxwdXKs7iz51nnfg2vrC30tdFK7VneQy1aLuzIJrdSdNv72+LFyrO09WOjq4VneeHOTo4FrdebLK0cG1fH2yulrUkyxcqzt5RxcjXrS6k6BffDeohfejJeqtZxvLz+L3WDy0LHkASi2O32bxDH631RcM1ptGEAOt4Ff7PjLWX/7EOR/q76EMrhZxF4dr8ZlucK4rXMufJ4c7Ori23ydXcnRwLX+eXFmuLwvX1hccKXVhuJY/8dEyf86Ba/mTHC3Xl4Zr+TNrE0cH1/Jn1qaODl7UHd6yEExZottMHkca3ps/E4v5s+S5fQeZF8Exev6Ex0hdCq5+97B0VSBOXPWnZYb0xXa35QeHEv+g1GL4rRZP43dZ3CxXb0aCUl8UvwWkQCf4L5o4zpkX+sufxFg9jqfvKK9XAq5+N9xTXv8cXMuf+RMdHVz9ucYkRwdXf66xl1xfDq4+Zx0kdRG4+nONo2X+zISrP9egXzyXw9Wfaxzj6ODqzzXicn2ZeCl/2or5U9qvOV3qQnAtf2IXyLxIwLX8STm64IV6/oRLcXRRtYkOqy/apGezng0u32ujnk16NuvZ4AreuGeTns1iSy3g2RAIzmKbFeuLaPTgjvfQB5xxxrzx9PD6Iro8uNu3rVQPxLjYPrpKfREtHtztG1etB2JcbJ9frb6IhtUBcLfvog9Y43L75Br1RXR4cLdvWbMeiHGxfXhEfRFNHtztG9auB+44YyDyLddmnfoiejzY2xfGO9atB2JcbN+9Xn0Rwd8B4G6fpQ9Y43J7s0F9ESM9uNt309etjAfB/PVqTEO4voiIB3v7wrjZqB6IcbF9YlR9Ee0e3O2bR9eDvvElzy139e/+EmqoF3ycw+MOb3N4xuPd2ODwvrFG/BhoBb/me1x6brWv/68xfleZ5yT6bV22jG5Euk93LJ1huPocd4/UZeGaLnpftfy75XDt/5PMWrrZwNxfrb7vp+m33/fzcPU57gHnOOBFXWj5hfxyS99xPCj3m4UXdYlXme8Ub7/Qh6QuA0dHaxLHEec6ifdSeH9ahlppt26HB1eWvNHhMY+3YtPWWFfBp36OBL/qz5E7/cVneJ4ed+fQb+uSZXSL5snrmoerP794VOqScDVOHpfxGYZr8ZmkX1x/uBaf8SdkfKbh6ncE+sVxwLX4jD8t95uEa/EZeUbqEnAtPsOdMj7T8P602KoyflodnnZ4l8PNar18JDYKSq0FPwU6wa/6c8RX/MVnvlOPuzHPyviMwjXdrGfldU3D1e80z0tdFK7GyYsyPvNwLT6jLznXH67+vDkr4zOe1febtHQbgXRJl15dxGc+K/cbfFmPz8zLUmde0eMzTb/4LvEqvD8tJONnpMOjDm9xeMrjndi8NdbAs18ENINfMz5T7/i8v79a5v7+qnN/L6MbMd+5L8LV+/vrUpeFa7rom879Ha7e3990rv9bZe7vbzn3d7hatxc4dRte1IU2KcRnX91e4NRtuBaf8belLg3X4jP2jozPHLw/LbWmjJ9Oh+cd3rCW5BGPN2OT1lgHfg5Ujfh14zP0kb/4DL1b5vsG/bYuUUY3/10Zdzm4dv1jC6UuAdd0ZpGMkxBci8/EIuf6w7X4jP1TxmcKrn6n+afcb66ky20r/r5s5IM+3UIQh2t/Xzb2YbX896Lg6r8X1S3jM8Z160+LrC3jp9nhSYd3ODzn8SreVcOg1JrwE6Ad/Jrxab71F5+pj/S4+4Z+W2c+1nWTPpZxF4Nr1z/3qdSZz3Rd4gsZJym4Fp8mL+MznNfjM5eX8Rn6Ut9v5Es5Xwyu/f3j4FcyPqNwLT4jX8v4TMC1+Ex/Uy3/Xo+pMf1puXVl/FSNlDzs8CaHJxze7vEstscaC/FNZRwotTh+G8gA/3+XiFZf4ys+s6ZGv28HaoQuDFffo+gX7z1w9f5ZIXVhuKZLV9aI+MzCtfgMD5K6GFzTZegXz9tw7e8cjamqkX8XD67+XTxHZ6o9XWKu+LtEiWqpS8O1+cI1NTIv4Gpe1NbIvICreTG4RuYFXM2LuhoRL3HipT+t53cyLkO/l3ycw+MOb3N4xuPd2OD61ncu/JjFW/HToAssTV5EV/GXF7l6Pd5HLyvjKQLXdDOXlfGegqs/vxgqdRG4pssMk/Geg2vxHlle6uJwTZelX9x/VtDzYtIKMo5jcC2Oc44uuKKeF8kVpS4D1+aLNMh4jzd4ukX7ibyIDZe6FFzLi+RKMi+ycC0vzCoyLzLw/rTgH5zvZQ6PObzV4WmHd5X4hnxLA6UWxW+xeAq/E+TBUuQF9xl/eRFetcx9gH5blyyjW0S/+A4FV7+nhaQuGdJ1wbVkvIfh6vc0R5cpowuNkMcRhWt5MWuEU9/han1f28kfuJYXOUcXXEefL7mOkz8l3T9axN9Rjawr7ytxuPZ3VEMja8TfnYvBtb87lxop8yI/Gt6PNnIj57uIw1scnvJ4JzZvjTVszHcRUGrN+EmLd+DnLF41ivcC0ASW6jlqrL+8iG2ix/ucTWQcZ+Dq83Gj8zwDV59nGmUdy8O1OhbaQsZxHK7F8ZNbyHjKwrW4i24p4ykBV7/3bVUjv/fB1e999Iv3X7j29x1jW8v1peDa+kLbOM9HcO3vO0a27dM9iCAB1/6+Y2Q7eT1S8KKu4fTi33cszWe279NNQxCGa3/fMbWDzLM8XMuz8BjnuYz4609Ljnbelx2ec3jVJr08jG0CpZbAb7d4Fr/H4qFNeV8BpRbHbwMZsDR5Ftrb53PZ2DLPZTs6z1Fw9TlqnPMcBVefo8bLPIvDtTxL7ey8X8DV94tdnPcLuPp+YelmAzNBz7M0/eK7JVy9P+4q5wvDtTzL7SrXF9pNX19qN5lnWbiWZ5ndZZ6ZqJ5nmT3kfKE9Pd0JV4o8C06UeRaFa3mWmSTzLLiXnmdR+gst31xjfgT50DImuFl90YY9G8e6fw81BGauW2nSjBXQ5cEdb9mivoiUB3c8tmU90Menv1ZpmreuLyLpwRmnvtUDOT4VBKf1r160Nf5yvmac8W6HBzeXvNHjMWyrNZbG77K1HPtIEAVe8/fvNnGc6ndf+sXPuc7W8yJ8tqwD5rwy70nnSl2sjC5znnNfhqv35VbnvgxX78utzn0Zrt6XL3Duy3D1vnyhc1+Gq/flC+X60iVdermFoO//X71I5m0QrtUBc7GsAxG4VgfMpfK+F4P3p7WSU7/U0s54l6vfSvKRHo9iW6yxFH6nxfP4DeRhBCzNfS8yp8ZXvGcv1eP9yUud7wzt+nVNtMs4jt5W5v3nNqlLqzq822W8R+BavMfvkPGUgWvxPuxO5/4DV+8/lm42yMK1eE/cJeM9A1e/m9Mv7rfpGvXfH0unZbzn03q85+6W8R66R4/33L0y3tPEQX9ayzbO+5LDOx2e93jDtsQqKLVm/KTFO/BzFq+K8P4ESq0JPwHawdLEe/opf895ofv0eB92n4z3BFy7rqbDiXe4Gu8dIo65aHocpzuc7+EP6XF8zkMyjpNwLY6Dc526DdfiODJXxnF4nn680XnO+z5ce84LPex8j4Cr3/Medur7I2Xq+6NOfYer9f0xeZ5jcPXfpXhcPufl4NpzXvRJ+ZyXgmvPeTn6S7/fnI94v6+8Xa+NYsv9fnKSsQI6PLi/n1o1pr6IsAd3PE8fsMbl75eGdqovYpwHd7xqXD0ojZd+/xQ83c86sb1TJxze6fC8wxt26OURbDMotSR+B8iB/jU9/xNP6/k/n35blyujG/2M8z4IV98Hn5W6HFzTxZ6X9SQB1+pJztLNBsEX9LzOvCDz2ryo7zf0ojzeCFx7HptJv/gODtfyNfmSzNcsXMvX5MvO9z54f1rDWBkXEYc3Ozzp8A6H5zxetSN5BUqtCT9h8Xb8LOgBS3N/yr7n83vfK2W+99Fv6zJldMNelXEXgmvXP/Wa1GXgmi7S5bynwNX3FEeXV3WwN+VxJODa/W7+m/J+koNr95PYW1KXhGvfwYMLpC4C1+bLLHCex+Daz4dyb0td6B3950PBd+X9KQrXngMS78m8iOTg/Wjhcc7vCzg84fB2j2exPdZYaDz3B1Bqcfw2i2fwuy0e3LneNIIYWJq8yOf95UU6p8d7xUIZx0G4+v75vvP+AVffPxY57x9w9f3jn04+wtX3jw+c9w+4+v5Bv3j/gKvvHx867x9w9f3jQzmf6daf29Ldcn15uLa++EfOfQCu3gc+du4DcPU+8KmTZ3Dt+1zuM/ncFvpcf25LfiGf23Jw7bkt5MVb8PuiLX6PSxGzBZvBut/TcvQVULULAO54+671RWQB6PvuzPz9aZ3s45da3hlvmCB5xOHNHk9iO6yxHH7Vrn08jN8EEmBpvpclvy/zc9vvZV7GlqvV7y/023kZXKFWf/5ZXuriZXRZ+sV714q1av6GG2rlfQiu3ofoF/chuHofGl4r8i0JV9+7VqoV+ZuAq/dn+kV9gWvPZ8NWrpX3IbiWl8FVakVeRuFaXgZXq5U/J4L3pyV3++U46nDGcw6v2l3ysMebsAlrrB0/a/Ee/FCUexdYmjjOcZzqewH9dhynG/XrlaRfPCdtqcdneEupy5TRhbaScRyFq88NW8s4ycK1OB6xjYzjMFyL47Slmw1ycC2Ok9vKOM7CtfOSp1+8t0Rq1e9gmYiMY7OdHsf57WQch7fX4zi/Azrv/TxBLBRsCuu+j2foK6Dbg/u+3TixvoiYh9L7cnxM//KifQ8Zl1mH9zg8tKfk4zwex7ZZYxn8bhCc+Ou+L6c5TvW5a6yMuyBc000dK/MnDlfjZCepC47TdcmdZf6k4epz3C4y7iJwLY7z9IvvYBP0/UYnyOONw7V6/OQEGcdZuPpzzF1lHJvd9DjO7C7rcSgK70cLTXLiyOFxh7c5POPwbo8H9yI/QKnF8FstnsbvAmZvsBRxl4zq8bSIfluXL6Mbs4eMpyhcu67ZiVKXh2u6+N4y7pJwLe7yji60j65L0C/yDK7V7YomWbeDcPX3txxdBq69B0f+KHVxuDZfnn7xXLFvrfoeHNxP6qJw9feH95f3swRc/R4+uVfXPaXWnHNUwNwZ7VVVg1Jbwci2YaDXNoD23JDCSf2vWyPxWsCkPQPmLlDNOpomBMyIsQFzdWPAnAZG7R4wu2OD2FJ7B3/aFgGz7fiA2QntK2xrt4U7BkyIbW7ZPGDu3yRgTgGzdg2YS3cJmCt3DpgP6N91m4BZlTm+of90tl+wW8D4bQM9O+u1gGEr4F/rd95SqyyXw8oaqvxpaeW1y/jSyrXNnt+nHfwraiOvBEzFQNYEKsEgUAWqgd22qQKgCn99Jj909UARg+AbwO8gri4/JlA8tj/ALyB+bj2Oub24fv5L4oU4qoKH4Y04oKjfCD6z0RCP7B++MfzrowMmxfZ/mRowE44wZnPw2sSAWdzs5etJtSYK4iABWoHdQm21JnU1mutrTfIG7Cw5Ho0O5pkL7DrYJPYYzDf7waYVP73nYJMaM5jf9wETB5uusYNN426DuT+AnQabJH5k78Fm3LjBphs/vg/bj6dvd7ZrGmw6dh5s2vCzfxzMPRng03ztw1j7CFv7iFn7SFr7yFj7yO872IxkvnFR64rv1+sP8GzQsxGsPR73bNqzec8m9ve2m9xrUyV7gGcP9GxMzpeaOpj4wzYPNgM8O9CzFZ6t9GyVZ2s8W2frjhxslvFspWcHebbKs9WerfVsnWdNwcZ7bQ4bOpbzCFIgB0LHgePBdHAC/fAUPDUdwNcbSFyDP4ANwWiwCdgUbAYaweZgC7Al2ApsDbYBhbYtNgJGge3A9mAHMAaMBTuCncA4qaf504/39Dtb8+/i6SeAXS39bqA0/+4+1tMf/Q1vBMyA1wPmJWpPGzXl+pep/eAv2YA576WAef3FgImCd9AcQt07HF01ujPQfIVmOhiL7h40q4KL0Y1Ctyu6hWgOAq+gWR0MQHcsmp4XmAtdPbpNXw2YP9/OPi4LmCvuDZjvbg2YDOPNtwTMHPqH0Lccfd/9hbWAE8/srSs7gvvP5H73jDHPfGTMS2Au97XHwLvcw94c11tJj5x20PFHTz102pGHhA46OTT2uGlHhKYeEtphyvHTjzsmNOGY+DGlX3c9b4BJTh5gTgeLx7C/+/owdGyvvYtgnQ3sNoD/VnqO+jmHOox/44OsYUXqOP6cvxf78Qaal/DbCesg/iv39/pxnhg+eZ7jL2jwBz5X8lc0J65K7DYEzFlmLdPKh8ffNwfMGmTX7TsEzN0k01QTMpc/xjkeYUwMP42/zd1sy5672dcM5q/EP+/BXn8o/ile/3L4+3n+MvhXeX7piA7zjsew1nlP9661MMPrjwfMnjvjstZ/P9G7VsNaa9CwVvyg2YP9Zc/GZe/7cs0ri5rB5jzioXlNXDL959c9nyO6gTmTK7Atx3nH4cZ0rYnP8TzGPB+H8FnhwGc4juI89eZt+l+8p/fOvcZDrL14PdY0jcTZmYeg5+lsd9a/2xEFf4ipeQobwaVSbUr/2Ht779rj5xGXxf3Wmp3YdlxxW+LLO1+GinXXE57PGZu6pH+4OZv4P2CuoS1r5nFcD14m/47dvsRP6VnzKs8fCG73/ArwmecvA3by/EoQCRkaewejPD8IHvPibgh4xvOHgq+Jh+IKwdWeHwLrnNDrh8Hq3vwbgZ88zcag3uuPgJEb9/rbgaDnbw9W8fw1wINe7K2J/4Q3z1rgVc8fAd73/D3Alt78URD2/BjgeaHYpoIPRvT6CfA8OTuGZ5E/4d+Dv9fhxD/+NfiF+I/j3+s9jx8L3vD848Cjnn88eA7fblUXko/YqbPJSuz4CwLF6/EsdaUCG7uGeMc23U28YrfGDsJ+Qu2pwk68g5qHDdwYMDXYc5mvFhu5IWAGY8NXB4hq9k1/PXYUdlnszmwfxA6FD8EeeBu1pKA7h5qG/fj8gBmGfQC7PHaN6wJmBezr1L0VsffdFDAN2Fb6h2OvZv8rYTvPDpiVsV9fGzCrYPdkfC1s158CXGNi6qxA8fquyvajsOOxo7Hb0z8C++6dAbM2dgL1dB1sArsqdh/Oy2rYLam9q2PX36A3lv4+g9qDPYX1r4kdkgiYdbHD4COxzamAWQ/7Bcf1O+ycc7le2I0YXx87k9q+ATbPOv6AfZbzsiF20qUBE8auw3o2wU7Bbopd6+aA2Qz7ONs3Yq/Abo5Nsp8tsPtxHrbENnPet8Iez7q3xtZeTA3EbordFjsFG8EefEWgGNcz/hooxnQH8++ADcHHYD/FjsU+ht0RexPnaSfsBRdRF7CXX879rDDOddytYDnO8diOtoDZGbtKa8Dsgr2W/UzADkW/O/a9mdzXsEddEijmwwFzqJ/Y9bETsUnsJOxx6PfC/p043Bv7A3wf7CPYJuxY1vVH7BHYfbFzOU/7YVfgPOyP/YD1TsbOZD8HYBtY14HYn4mTGPbOuwJmCnYQcXwQ9kaO42DsulyXqdgqdIdgr+V6HIr9mXvsYdgI8zVjl8NOw85gv4djf4/+COzGVwbMkdhX2e4obJzrfjT2UMaPwb7H+Y9jb+B8HYs98M+BYq6+Rd4cj73yPJ4fsJuShydg94SfiD2P83kSdn14C3b36wPmZOzlzHcK9nXWdyr2KvZzGnYL4v507Ciu1xnYA7BnYudgE9hFbb01ZQ/mPQu7Pef1bOxKrOOcwjj5cy52c9Z/HnZb4ux8bBW2FTuP/V6AHcL6L8QGOe5LsV9z3H/GppkniV2Efgb2TuxfsJ9yfS7DdmJnYrs5jsuxZ7Hev2IPx16BvY71tWEN9krMX4ibq7CbkN9/w4bZ79XYz7kO12BXZr/XYjNcz+uwc1h/CvsI1/N67DPobsA+PCtgbsQOZ78XYRvTPJ9hP0R3CXYt9jMLO5n4uAn7GvqbsesSx7dg3+P83YFNEpft2ChxMxv7b+yt2DvaA+Y27HB0t2OPJw7vxB7E+bkL28T609hP2e8D2JOwd2NvYj/3YP+IvRd7JnYOdhnsfdg51KP7savBO7DjOf4HTW97YCB5Bx4ED4G5YB54GDwCHgUZ8Bh4HDwBngRPgafBM6ATPAv+Dp4Dz4MXwIvgJZAFL4NXwKtgPngNvA7eAF3gTfAWWADeBu+Ad8F7IAcWgn+A98Ei8E/wAfgQdIOPwMfgE/Ap+Ax8Dr4AefAl+Ap8Db4B34LvwL9AD/ge/AD+DX4EP4GfwWJQuKkFwAAwEFSAZUAlGASqQDWoAbVgMKgD9WBZEARDwFCwHBgGlgcrgBVBAxgOVgIrg1XAqmA1sDoIgTXAmmAtMAKsDdYB64KRYD3wO/B7sD7YAPwBbAjCYCOwMRgFRoNNwKZgM9AINgdbgC3BVmBrsA3YFkTAdmB7sAMYA8aCHcFOYBwYD3YGu4AJYFewG9gdRMEeYE8wEUwCe4G9wT6gCfwR7Av2A/uDyeAAcCCIgSngIHAwmAoOAYeCw0AzmAYOB0eAI8FR4GhwDIiDY8Fx4HgwHZwATgQngRZwMjgFnApOA6eDM8CZIAH+BM4CZ4NzwLngPHA+aAUXgAvBReBicAm4FPwZJMEM8BdwGZgJLgd/BVeANnAluAr8DVwNrgHXgutAClwPbgA3glngJnAzuAW0g9ng/0VrH6j338r+77TG7sK/G6TBPeBeMAfMBrf9f+ydB5zUVPT9T5aFpalIF4GlLLAqXUCUtioiHVSw0ZGyBRQREKStIkXqUqQ3QQUsCIKKogJWELuioKIoWLAAioqV/Z9MMjsnbxLXX/n3XD6PbHK/c+59L3kvmUwKWfL/acul4f8C2414K8Fi5VOH7GlfpjnTBzj97zMLoYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFtr/r/bma9URWmihhRZaaKGFFlpooYUWWmihhfYfsxM7gqf/xg6lwbFWsC17bJpJhBZaaKGF9r/3HtIW+P/aQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgsttNBCCy200EILLbTQQgufr6Lzrf7Ne7Qt9YUWWmihhRZaaKGFzzQK6xVaaKGFFlpooYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFlpooYUWWmj/C8z6t77/9HMTD7XCf6dJLv9/PCsotNBCCy200EILLbRvCjglyCy3/Bv/1P8Tj8fzyX/pEtsOtAoEWte+kuUK/B9qoYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFlpooYUWWmihhRZaaKGFFlpooYXPtBogTL7PkkrDv7DQQgsttBM7QGtl/buxaCL++6y2BWT0AyawTGF55gQiNv25BHxRCXiaZdgZwK2HLEzvBFzGacOOFr5oZmFfZwtWUwsZF1pI7WThIJe90tLCmyzzWKazLKMvhdxqTu9heYqVPMZycLiFzVdZqEPfLE7Hc1ld8vXSLPzOaWnOt2S5jH+3oL8h/57KMpxlIMutLKdYCpD/gUwS/36RpTpLcy57h9N+jNeIn23Pv69nWc2yimU+y6csZ5H7jtOHWSrw7wmc1uT0uYYWjja2UKOBhWuocU5bCx+1sfDeQQt9PraATy18w7oeY7mZ/hMHOc/yM8tnLIn0v8ppYU57kH+Xevsbsc3IHmT5rLmF3Vz2PZkPWX5jeYtlL8tfLMX5uY85bVsG6P4u0KU80LwkcEU28NYtFh7NsnDh61zO+bfTLZw/0MLamyw062fhdF8LV5Dtxc/0ZdlxIdChA1DpdmAIl+/ZAiTf7qzrS/j5a7isO/3XskzuCVw+Bri0vIUN/OxKlodYWlVkHThdM5ztUcnCI0eAvVxm29RabJcOiNjmROBxlqiVmw907IGIbeHyreKb8gBzDPB9f5GFS13fE1z+pOt7itP5fYGqx/0/dybzxwR/X6pbB8vHt7cY0P5ORGwblz8tvkNPAac2IWLPcPl28T3PbWvW7YjYs4Zm70rBvlX1uX4LIWLPJVLH9e0QJqko8CHbrxS3m3S271puLz06OO12YL7Ttm0WODlUZyzTjmQBGeTZXpHpmJ7ufHFn+vh8Z9rpIWf6VgsL/Tk9faUzXd3Qma5s7kxNe3o8sJ+aU67gdp3MbZj9ZhpzPXG7s/xeft5ej4OTnG2kVALwNpevZd0/4NS05u2BfVWsSP1OzPeN5+o4df+QffKP3kARxnmYUzt+GcYf3d6KrDPb0gqVRNQu5+fXJwMF4OjsYdu9lAi8LG1+4sfiKG2zdbt3a1OnKfysy0SnrZutBKpEx2jmYo+Xr1JLbXKOzTgxMwlGGeVubBbTYXtF1stuU+coUFEYW2ePwRRbBNR2mdQlznbymsGU5meVsbX2GszQrdRxc64609F5ncwbwl3Ozylj67xpMD2mAWmItffoLOAt+t8W5gs2ynphdqYD79D/LotpF4wE6gNIcMeV66YgYh8KazL39QpmLHcM2t1L/Mq4eW2rw/7FPrCfzAFfHXJ1WX/qfOSj00h0LqDOx2Q+STQY0TlOnYOGzhsNvPWqRB3bPk1UxqyX6xd74jOgreh0cdvwM3ImU8Blti0ADtH/uTCztwBNhbHLF/QfNhnJh8VmaAYj7WOXI2S+NHWkfVgijFrWGG8+szOAr8h8zaKM5vNmJhk/HclnbBbwDZmjpo7ks8iHGUDGrPu34lcmQdoQ8HIlLrWQkhirV1nOf8f574VJDGB+EKbbOJCJ5dOP88eMfNr6MMcN5laJZbdPXc6f4PyPwg0MYH4SpgaXpSbG+v0FnD/J+Z+FOSeA+UWYQdxX1Zf1Po/xfqX/lDA3BDC/CdOorZfZ46NTK4BRnfESy855qcv8LsywAOYPYfq39TIHfHS6BzCq04GMjgnvkPmTfrWWPsxfBjOVOUf7xQtTgTVk/iZzWrghbb3M5z7MaJexwOULge/J5Bqx1iwHqkg+9r4FBb1MgTlkZF1EGeW+X+bdr9palqEze3ZMhwy1HEa5d1bE55Ng6FyYY+TjMsp17g3Uhhx/VONYRn/iPzDlZyLCFDQZGaMqkylEf5LJyBhVcAlQWPx+OltZipAp+g86uWSK+ejoPq4i8ylO5oyCBqNjOPM509Ap1BlIFZ0HWc4iU0K4F475M2cL8yT/TnFiOcdbmUBJI1bDRXY+5fOYu3oBpQym7xaHKeAyNza3UJpMGeG6uEyCy3QjY1tZYYYttZkSnljljFhZsxymgOiUJ3OOcPML2UzhvLr3IFOB/nN9mGg7T2KsikaslZzfCuTF+oJ9uxKXVRbOZFIaxTN/bwI2CbOQTDL9Vf5B57t/ofOrj87IJWRkndp1q2rUq/BiL7OMOtXMdjaYv5QJyPnrf9E+5zfyZ7Req6VeQUxC43jmsrJAcxTOY57OAqrTnyLM/TX4GTJ6vFFD/MLoMRsZL1frQ3dMcBk7Xk36awlz5EvGlnH1BuacasTasMzL2OU8g3ltBOtlxep+QUsL55O5QLhPJsUztemvw2Ia/fp3pJj2RHvky8wYmT/zyJH8maO98mcuzgaq5MMsqgw0TY4x/B4cZ1uOOONikujULQjUc4ttn7K9y7vHd18+YUWY+kY77jnLZVydxCctNDCYD+oBFRFj7G2tocHcUYGMFWPsY8kLDWZpE8vDZLNejQym7POslxUb722dxmSaCDeFOinGOHQR/U2FaV8WykS0LjaYlyszlmz7E8hcQn8zg6lvxZgU5tOc/hbCnEwGqkgsm2tJfyvtr7W9jF3S6L9UmKdYL2XsPnSZwbQa5d3X/dQbuNxow55sD2Uu7Qu0NphKQ5mPMPZ3oyvM/sp8lFmfBbQxmEal47eNKw3m2jKMJet94nigrcH0IdMXXqadwSRNQtz2095gzibTE16mg8F8dQwoL4xdOhrMZ1scJsHop52E28n1U8UY8zobOjtcJkEYmoc7m+vLPG7tYuj82gMO457ztJmuBvPUKmC/y9zd1oqMG1cZzMG5ZNx8/mAp5Q4/yp1by83ZPSa1i21XCzN8EnyZa4RZ2dPLRL/vdhOm0RBvH7TPGXWn/1rVaZJ/Oxdbgnzb8PKl+bdPy1kxhu3jy2ytbuUxy8c6zHUGc9W17INyXtj+7nN9QRbhHhpJRs4rvzA1nvnw+nidGwqyCLPRR8dkxt0Qr3NjQRZhXvDRMZmDPvn0KMgizDYfHZP5yEenZ0EWYbb46JhMKZ969SrIIsxzPjoms+pbj45T6O8tTMVRHh2WeCblU6/OCQ5YfejvI0w5Q2cji8nMYTF1+tLfV5ixI02deGbXSiBVvsvexfbpR7/H5pKR81JPTwHNy82oaZGJ9eXsJPe8hTCfX0od6YM/NbLiYk3j8lT5/l27scMo9zlzTJGc7XV6k6HzrQ8zwGCe82EGGsxSH2aQwbzlwww2mIlTyUgbchujefOeFsBo3lcGMJr3t1P8Gc17aICO5r26ikUmtk73cd62dGE2BDAZwqQHMJm6zQcwWcLMDmCGaL1mwMOsmeEuF2ZUAHOzMI0DmFuEOTLdnxkmTI8AnVuFKVzNW68WnLdtuDBnBzC3CfN2VX9mhDBZAcxIYX4NYEYJ0844J2eX281+MZuMz/ls5fZeafkeA4wWpnQN/+ONMcJc45PPHUY+BwLyUW5fQD5jhakckM84YeYt9I6rEzg/3hx/pnjH1Rx3XFXunelkJNbDLjNBmET2A2X6TXfHHGE6VfUyY1wmW5iUpfFteKeR84RV8cxdBjN3ZTwzyWCylsUzdxvM9z7rdLLBvJvo+Q7icAaz3SefqQbztA8zzWAu9cn5HoO5zYeZbjC7VsQzMwymiM+6mGkwVX3aZ5bBHPPRmW0wd/nozDGY/T455xjMNB+dueY6XRLPzDOYwz7MfIP5xYdZYDD3rI7fL99rMEn3xessNJjHVscziwzmPp/2WWwwS32YJQaz3odZajC1ZvmPY9pX75zrz2hffTvHn9G+WmG2P6N99fI5/oz21T8CYmk//C2AmaZMQN21H1YLyFn74VkBsbQfFg+Ipf3wxYBY2g9fCtDRfvhDgI72w0sCctZ+eDJAZ64yM/0Z7YffBjDaD/8KYLQfzpjnf5yp/fBgwPaj/eeDAEb7z5EARvtP0fn+jPb5dfP8Ge3z46r7HwMsE+atmv7McmFuCmBWCHNDij+zUpj+NfyZVcLUC9BZLcz8AOY+rVdArDXC9Aton7XCJATo3K99MCCfB4SpH6DzoDCFAtp5nTBNAnTWC3NZQL02CHNxAPOQMB0CmIeFaVbL/zj8EWGeDsj5UWEeD2A2CrMzgHlMmAm1/JlNwlwXwGwWJjdgXTwuzIM+x5lbzN+UAvZxyp0TsP1sFSbZ55jtCfNcd8AYrtx9PjpPGjoNA8Zn5Rb56Dxl6KQG6ChXYYXquL9zGDrjjDHTZmgebpjPcd3Ths7VPjk/YzCP++hsN5ifl8YzzxrMQR/mOYNZuCKeed5g3p2jjFN/k7lAdOj31RlZw8r3HPVin5x3mMeZPjnvNJhtPswug7nPJ9YLBvOlD/OiqROwzWvef8/xZzTvQjn+jOb9UEAszXt7AKN5/xkwrr4kTBGf7fBlo+5/+2zPrxhMGR+dVw3m4YB+qvFWBTAa76kARuNVHQ00Nfr7bnPcKGchRZi71gN7DKbfonid1wymnQ+z12Cu8mFeN5hlq5RxrlF/w2Am+zBvGkyOD/OWwaycq9eEOszbZN4RbloA864w8wOY94S5gXVPMa4tfd/IJ3GD6jjrYh+ZD4Tbs9Krs7A38KGhU9jIx2b2kzkg3JvLgTTRuZOxPjJ0aswhIzo28zGZT4QbtDRe56C5/cyK1/mUzGfCvch82opONplDhk6FOWREx2Y+J/OFcH32aCznPNth+o8I06mmpded5zFfClNuaLzOV/R/LcwfKYaOy3wjTNZm954CV6f1OOAo/d8K83kNS+87yGO+E2Z6RStO53tD54Oapg4ZQ+fWzvH5/ED/MWEyUwwdlzkuzCTWa7Ghc4L+H4U5yXotVh2X+UmYpayXqXPS0Pm2pqlDxtC5s3N8Pj/T/4swE1IMHZf5VZjbfOp1iv7fNB+zXi7zuzDzfOr1h6FzyKyXy6jOsSoWhhnMn/T/Jcw5VeOZvw1mjE/7nKY/V5gRZvu4DArFmL2jgL7SLx5fAFj0JwiTWsMiE9MZspB/058ojFUUylAnninZOT5WQfoLCdMvJT5WEv2FhfmtSHwsk1mTBAyTa9/6ZQJF6C8qzBXtgWxhMtKBYvQXF+ac6par4/7uSZ0z6D9TmMYpXC7MXOqcRX8JYfYwZ9Xp56NzjIzqZPjoPNURnmvA7+sLnE1/SWEKzyZj3BthM6WEua9jbDy0v3deRKY0/WWEWeJz/FOWfrU/ZpORWCxkvFwL3++eZIUZuBJoK9cz7hoMlDdibcwhI+trPJlzyFQQrntNy2WcWFHmXGEyV8THqmjE2jLHP1Yl4VbW8I9VWZjbVsfHSjZijZznH6uKcA1r+ceqKswApw2z/6kNH81xmH9qw241LZcJbsOMFRrLvw0fn+MfS9twRQ3/WNqGw1drLP82HDHPP5a2YYNa/rG0Da+7xUJzWRf3s1Sjv7owly6BL5MizLsjgK5kdIyqQX9NYTJZ9/KXx5hXMoBa9KcKM30KyMRiRZnzhPk1OX+d4VW8zEGXOV+YVjPgYfa6zAXCfFTVq/OFy9QWZudVNiPHdVlAHcnZZKjjMEbOuNrLzHYZzfmQoTPVZTTnKobOvS6jOS8IWBd1hblpqv+6qCfM3QHtXF+YqwLauYEw3we0c0Nh0q72b0PN+bWAdaE5Fw1oZ83524B21pzPD2hnzTm1ln87XyjM6oB2biTMloB2bixMdkA7NxHm3Gr+7XyRMO0D2llz3hfQzppzmYB21px/8W9nyZl8QDtrzl9PADrK+LOK9WpK/8XCXLzAn7lE+xd1clxm71jgjHSgGf3NhXmhKbDYZV5ymRb0txTm9QCmlTCZ6ZZvrDRhTrOubeX4ZznnL6X/MmGOLPMyVTKByw2mtEVdqXshMq3pv0KYUmSmCVOcTBv6rxSm+TRgtDD90hmb/nbCLD4GNJJ8Zg4E2tPfQZiWc8nIcVSU6ajb2HpvvWaQ6UR/Z91+jO/UUaaL5rwIuN7Q6Ur/VcLsmENGdVzmamEql7cwzNC5hv5uwoyZCzKi4zLdhbmktDfn2pnAtfRfp22Y4637PRmA7b5emPdnAunCFOZMYQA3CLMoQOdGYd4L0OkhzNlDgWxhJg50jm97CvNEEjBNmHfI9KK/tzAtpnp1/hzs6PQRZnXRWDsPnAK8zHz60t9PmFar4GE6kelvMLtGQ+7XdNr6JvoHCFNIzpNEj9UH0j9ImDPJ6PZjX/M2mP50YdLLxN8XkEG/2qs93bq7zAfMKZNMlnBfXeg9b/P8AGAI/UM1n1FAV/0+SOZm+m8Rpuw33pyfIzOM/lu1X2RZvsxwYRrcHtNpW9XCFenAbfSPEGbSSGCx5TAzxwJXDQZG0j9K19dyL9OOzO0Gk1oCaFoF2dH2WZcFjKZ/jI6HS7zMc5nAHQbTr4aXedDVGSvMQ0u9zLOujjLVa1ioKN/jbM62ccJ8cmnsPHaLajFmvDBNr4np1K8bYyYIs/HC/HVSe7I4DNdFjJkoTLfqFrolIyFar8FJQDb9dwpThflUQYyxc7qL/knCzK6BfHWq98yfmfZA/kzHfvkzs5LyZ37Myr/uybdE1kVCgstEv5vfLcw3GQ5TQJjJ9E8RpuW/0OmSmb9OlfR4Zir904R5eYC/zj3CNJwA33ymCzOhn3eMGjEJmEG/WobLJAhj20zhprhMAUNHmfFkqkisW8jMMmKlu0yCMLbNFi57pNwjJjrKfHoWUFuYR9kWc+jPEWZGBf96zRVmlE/7zDNyXjok/l6q+QZzi4/OAoPJzo7/Lfteg+lcNrLNW5bcF7nQYHbOBPZL3e394CIyi4UrVN3yMGtcZokwj/YEtmkbkllK/zJhrpsFFLZiTMnBwHL6VwjzImMpU9NlVgpz5d1AmsSatRBYRf9qYfay77QWZiaZ++hfI8xw9p22wswgs5b++4U5wb7TUZjpZB6g/0Fh/lzuzcc+d7HOyGfFanjy2UxmvZFPdzKazyYyG4x8CpHRfB4j85CRT+1pQLqez2TOD9P/iDDvsn3S5djGZh6lf6MwY9Jjx1E5UxzmMfo3CXNqgBxrucxm+h8XpuQKbz4TyGwx8nlwNSQfh9lq5NObjOZjM08Y+ZwlzECXedLIJ60p0FzuqUldAjxF/zZhyi7zMqep87TBHBgRiZVtuTnPYwWeoV+tXClgmtwPu6sXsJ3Ms8LdMBBIlXU6fgHwHP3PC3Nwiff6efs+1h1GrCMzvdfPzyIDeLkLq3uve5/nMjuF+fhfxPriX8Rq8C9i7UrK/7zfwZWaj9uORj4VjXuyWGheboVxT1aUeUGYr31ivWjEqhkQS7l1AbFeEuY9n1gvG7FKBsRSbn5ArFeEecwn1qtGrGM5/rGUuzMg1m5h+i2Jj7XHiNV6pn8s5Q5W84/1mjB9fWLtNWJdHhBLuU8CYr0uzMll8bHeMGLdO9s/lnInUvxjvSnMzqXxsd4yf3OZ5R9LucSAWG8LM3oh0NS4L+Ad83hjChmf65aVe0AYxspj3hXmi+XeetnMe0asi+eQ8Yml3PU1pF4S631h/jS2eXufsc+Idclc/3uOlNtubPNR5gNh9iWSMb6/f2j25VVAReOYbb/BDJpLRvaVUUa5H3368gFDp37AuKHc5oC+/JEwjUcCJ9x87O95RwcBH9P/iTD3ZFpxzEGDqb/cq/MZmU8NZv7qeOYzg2lsnCuwYx2i/3MjH5P5wmCYjzKRWIddRvMxmSMG88QI7/Ml7OONL+lX+3lLPPOVwQxs7z32G0TmazLfCHd2puXLHBXmwAQgXZjrpgDf0v+dMBuZc1Nhcsh8T/8PwnQsZ5GJ5TyQsY4ZObdxmQSJBXi5rwZZaC46A6hz3ND51GZEp4uro1xGRfcZbFL3E4ZOf5sRnYGujnK3VUOczo+GzhAyfjrKPV02Pp+fDJ3HyfjpKHdBFcS180lDpzoZv3ZW7syX4seNn+n/RZifx8afY/zViNV+mrttCHOKzG869j4Ur/O7ofPlWUCqT93/EO7XRWSMNqTfY3dmWpKPo/Mnmb+EOzrEu76i4/PfwrRPAsrX8/aL0/TnCjPH5xpXJMFj230Yy2AGB1ybqtwbAdfhJwjzik+sAkas4T7XkySSKSjcfjeWnqO2mULCfD7Ke13lZX1ZdSNWu0bxTGGD+a59PFPEYNZWjGeKGsyw6V5mfRZQzGBuOh7/3MHiBjN6uVfnz97AGQZzemk8c6bB3LAsnjnLYK720SlhMCkr4q+DPdtgCvnc61HSYLoa93rYdaex/sEMdWherQHFyKFEdt45osFAKSPWZ1PIyHP+7navAyktXN+qlod51WXKCDOQsdrmE+t2h8E/MYemOMw/5dOP+Sjjl89JQ6cXmbL0lxNmhKFzm8uUF+bVFfHPljvHyLlMjsOYY4Jy3YraTHnPuFrB0OntMgkuE9VR7hT/bi46/RYC5xo6VmEyolPfHTOVa5Pozec0dSoaOleR0Xyix+HKPZ5sIVW+49vjcyX6KwszsJI9zpfIG8fm9gaS6a8izIvneK/7us5dF1WFWVXde91XlKkmzDMBOtWFWRCgkyLM2wE6NYTZEKBTU5jmFpCKhLh1WkuY8yOMlWAyqbqtBty7dJ4wRX3ugaLfY+/P8tc5X7jzlsXr0O+xTwJ0LhCuQbyO65d1muOvU1u4Tivjdej32NOTyBjHSHXI1BVuaQ1/pp4w37f0Z+oLM3aPP9NAmCkB9wo1FGZ4DUuZvOOEC4XZw3qlAVZ0jLp4MNCI/sbCfH0RMKxVjLFaWmhC/0XCFM50jlddJvLc+qb0XyxM8WVenb9bWLjE0ClUM/K7Ayx5JmUz+tWeWuplEsg0N5h19rGf1KtIOtCCTEsdEyZ5r4UYmwG0oj9NmF+mxjOX0n+ZMD8HMJcLM28ykC1Mn4FAa/qvEGZuANNGmPZL45+FcqVR9ytm+Z+XUG57dcv3WShthSlZzvtswwWZQDvx+zFvkGlvMJPXx46x28hvxx2ES8yIfU9pLUxHYZ7l39tcprkwnYS5bIiVx9QWprMwZR5yn1cp5y660N9VmI3jgd+SY9/fS1HmKvqvFqbUKDBWjGGsCHONbvMbIttq3tjL93M4+2thFpexlPH97fge6tSW4wT7+053c6wzmNNkrjWYVvb3HTLmtnGdcH9zeYqhc72h08Y4frbLDQZjdfDeNzEpE7iRjN6f0s64byLK/CQMDJ1OLD3I/CJMW0MnyvwqzMn28fn0JPObMGlmPi7zuzA/tY/PpxeZXGFaGToOY9wP8ia1ZRy7eBzQm4xa9zTLw5zimNnHYG67yMtcTp2+BlOtpZf5izr9DIa/4ZHxPge6v8H8OdVhElzmjzSb9ubdjsuUOdrCYTTv0028TK6ro3mXaelljrk6mvcK5qzMtjoOo3mXuh3OPT4u8+ZY4Cb6B/wD85EPU5jMaGFutICB9A8S5jPWS5lBZAbTny5MlQJWvjo5F+WvU7snMM7QyaA/U5iq5bztk0HGtixhsNi73vuOA4aonzbPWF+PujpDNR93O9Tnyt5s6Oz9GmRi+6Zers4twt250mHcsYX9QvyuXdHIUp28fIYJN4H5qA77heuX9bUi/nzUrQZzaY7DmMfPyjXOAlobxwDD6b9NmG9TLDKxMSHKjBDmzUZAX2GmZwIj6R8lzOyO3uvryg4Cbqd/tDDrz/H+NjppMDCG/juE6Z1lYb/onGPnTf84YdpUzJ/55YnY8eqhp5wynv4JwhxzGctg1BrfBbwtOkvTgYlksoVby/XzjeTTJAu4k/67hDnJZZpzxYHAJPrvFqZIHaC1xFo9BZhM/xRhjhe1kC7Myizq0T9NmH6rIIxzPe09BnMg2UJHYT6aCkynf4b2naJAW/kOu5g6M+mfpdtGe6CjPKveZmbTP0eYQ5mxd0oMWujEyzHPWa3I/zxkj5z8z0Om1Mz/PORlK+NjzTVizQyIpVydgFjzhDl/aXys+UasOrP8Yyl3V3X/WAuE2eBznu1eI9Yjc/1jKZdQyz/WQmFqjIr/7W+REasFGfNYfbHBvNfE8jBrsoAlBtN8JFBbroGxuaVklglXbhQZud7mCHWW079CmMpkmsr1Nl+mAyvpXyXMlQPjf3dYTf9qYV5IIePz/f0+YU5s8T7v/U761thFmD4F45m1dhGmVIN45n67CPNqcjzzgF2EmbshnnnQLsJ8vB5IFWYs59clsQhz9PN4Zn0SizAfkqkoTFJRYEMSi469/FyKMOM4/1ASizA3H4tnHk5iEabgOfH1esQuwtySAzQlVUDOGz9K/0ZhSq50GO07j9GvdkcjSxjnHPUmg7mEjMaymc1GrD4XuYw8q/xx+rcIc1VjL2OXrQZz/fMgk5ZX90NTnXsOnhQmaaXD6DnPp4yck5d4mVTObzOYATkOo+dSnjZidWOOytzFtniG/u3CXNHYy9zA+WcN5v72sWcaPDIWkfMtz9H/vDBDKziMm3Meo3blMq9OApkdhk6zpV6dKKOWOjr+d5mdBjPH517pXQazoH38M+pfMJjTsi8g447PXq4Jl6fI+novHXjR0Jm1Ah5mA5mXDOYtVyfBZZ6YAppXa825Xma5y6jWxnnwMDk+zJOrka9OwZ75My8ZOUd/J3pZmEVGztHfiV4RJsPIme0cxwxejXx1/uiRP3NDP8Rds/0q/buF6Rtw7bcyV7mMZeio3ZLtv2/ao/n0zv+dC1eTye/dDXt6uvtTlxk5GHiNcfbqceZclxGd1w2m3eb4Zxq8Qf+bwlyQQ0ZyjjJvCYOt/jpvC9MhQOcdYQ4e894DlT0QeJf+93Qcm0tGdKLM+zoeJnl1nssE9nHZB8K0bB875m/TwMKbZD6kf78wRYp6tx9b6wD9Hwnzy82W1j2yTj+m/xNhhvUBUoWZncG60v+pMN/NJ2O0oc18JsyxIf7MIWHqpVu+zOfCXF3RwjbjXrwv6D8szOX8u7UwX5M5wmVfCvP7YMuX+UqYc3oCC+S+rTmZwNf0fyPMwynAAHkmxlwyR+n/VpgSRYGOEmseme/o/16ZgFg/6LgaEOuYrq8k/1jHhdngs42d4LIfte5FXUbu7bKZn4TZ3QeeZ870GQ+cpP9nYSZW9N4f1zEd+IX+X4VpVhy+zClhptfxMq1c5jdhcirLWOceS/xOv9qg5Pj96R/KuMtN5k9/Rt4J6TB/CTckEQHvoFEm/3fQjJLf7FRHtdrPgZkPdbxaE6vFv5Ptb/N3z0kOU8BglOvQ23v9hs2cNnQ63U1Gxrooo9y7jzNnK5ZPkZYWcg2dw1MjjBXNp6DLKHfXYiDV1pHf9VAYHmu0xWao4zInW3CGTIJwPWvA81vbrAzmT3+iMPuPxh/XFRS/H2OXQgZTcZr+NhrTUa33xsfHShK/MhqrsMHsnmzEcnVUqw77qb6HpQe5IobONdOh72HhsZ/DKJfTI/6apaKGTqqxbXzV3CLj5T4aFV/3YobOSrNeLqNc167xfbC4oVP5blfHYJR7vHO8zhmGTmnRUUa5yzbH9/czDZ02heP711kGM3uStmGMUa6Lj04JQ2exqeMyyo142XtueedWC2cbOmvsY2xjXZQkU0rX6b9gGiz1Xg/5yAS2qxFr6Mp4pozB9PTRKWswt/volDOYRvIbtM2sI2NbeeGezPFnzhGmU4BOBWF2BuicK8zQZCA3twr+yeaw7vUTveccKhr1mj7LYXRdVCJTwZLjqBUOE31PbEeWyobO2bUsV4esyyQbOu9eGovVMYDpPSfGbKvjzxypHovFYwBnH2wwG5u4jPTBqmSqSd6/XYQIY75fT5mLI3WPfRduxnyqG3XvNsdhCrhMIzIpRj5JzFOZy3yY3WwfZdr5MKOXOowe29Qw8rltllenE5mahs4bbENlZpGpZTAPNPEwzrtbyZwn8Y5fhAiTIAzgZXi8SKavJ9b5RqzF9v6ifizWvQ0tXGAwD88A2iJW93daWKgtcfyYg2TqGExaNbarcc6qrsHkNIpn6hlMiaVAIxlX2w5mPQ2m1KwYw/7ly6RXt/IYbs+MFc/c0YSM7C/8mIoEGrnnGAcsdLgGBjNuNkikxV2j2FC4L1IsZfLeS3WhMB+e5X4HcZmj1GlEf2NhVkeORavE/V7QRJiZNSyHMc4VXKTbzwjGkt+bvuFMU/ovFqbti7F3SWRasXMXl+iYWTB/5pft3n1cKW4HzYw2fL9j/LFWc7MPrgCuF2Z0EtDCYJ41npNjMy3JtBJuHduHTLR98pg0Yer5xLrUiDXLJ9ZlZC4XbowZy2VaC9PJJ9YVRqxFPrHakLlSuElmLJdpK0zJyHOSy3uu22lnxOq+zWHM++OU213GIuM9hmxv6Cw8ijimg8G82D6e6Wgw232YTgFMNGeeD49YZ+HWvhSv08XQWT4k/rf+rgaT04HtDxQqYPPRa7qMcbXPQ0BPedZHhYLA1WSu0b5TLLbNcz1EuG5GrJ97Apvkd7RPmlvoTuZa4aZ3YU7y/f3yTOA6+q83mPXC1CdzA/03CvPHW95zF7Psd9zT31OY1nfFfsseM4Xz1OlFf2+DGSdMAzJ96O/ro2Ox3Mq6D2LpZ9R9QVkL42SMuoc6/cncJFyZS4DRLvMYY/3aGxhA/0BhajZyzzG6xz92GUT/YGE2TWaRur8ykPnRn8Hyn7XGXFebu1go1MTCgnYWLunIvy+2UIpl2kALDbnsDP79RVNOyX7E6RssP7PYtnmC9zqPbhlAJvPJCshpeRcbjvEDpgBDyA4N4G8oCNwsvk/nu9f1y/WDtxifndDFYaLj0EDGGEbmVuGKLoi/X2G4ofPOKP/7FZSr6I5V2hdvM3Q2feAw+q7vEWRGsph2O5eNZhnDcgfLWJZxLONZJrBMZMlmuZPlLpZJLHezTGaZwjKVZRrLPSzTWWawzGSxdWexzGaZ487nsMx1/57HMp9lAcu9LAvd5WZZxLKYZQnLUpZlPsxyd7qCZSXLKpMxilqTTAu5ufhH68TtpkTB2DbUchxwH3XWiNaKeXAZZ72d7zJrhWnMWFVEJ5XM/fQ/IEyNq7znHfsUBx6kf50wg27xPtPu+8nAevo3CNMoy3ve+kcyD9H/MEu8nWj1//f8f7/u0iW2PZ3/vPu5/+r8f2la4ta0RyreOKDZZ8e99em4Oq1F0Q/XDmtxzF1efydsu/uBtKllD7x56poon+osn7kh7byec174JfUTd3kDZ3mJ0Wn1DqYUuvPeKJ+S5ixfnfbiL6n8xA/u8kYO3+T+tLGlN175+R3fe5cvX5/m1PuAd3n57LSI/OWGfqPlad9fta3y5O+ORpc7/LNrHT+or8tbmvrnO8tTp6UNitgxr379pWmsLSvwrbu8vMMvXuO2g5H/g+vSLozYYe/yEqKvljgvLdL8RaP1qubwKWvTfk21A3zjLm/hLJ8Wzd+tb/blzvJvJqUlT/6OLcF2VvttRtobr9sWzbOww/+2VvKR9fjXOkOn0f8a/Wl3pn1+h71BkFc7kSPbj6zHj9Yay+s6y6s95M1Htp/CkQ5gbP8Vc4w8C7v8/WncqphodHnNqL4sF/23R6bZvavLrOPePDfNTGOtWDWD77nG0GnmLL/2AW8+2WnO8tWj0w4/sOylKpuOefVbL5DtRPvvwjQuZQsdN5Yb+mjtLD80Li2S5sYoX9rZ/nfOc/vpEW/caWvd7XCPt17D1qV5x62WzvKcYTI+iE7feUb7NHGXr5F+IfpLNxh8K2d5dobWV/JcLLxsJ/3XCi/j2x3SvyT//+v10+a449J7XC526IE0boX2puiNaz3nbg9fe/nXdyifv6Wtcre3r7z537PVHZ+/8fa7As+648C3hv4N2q9F/zFX55B3Oxn3hCyXuGk7/PcvRR/QdlZ9dzv82ts+3z2VFln8odFuHZ436tXQbH/h/xvbX/fv2q//m/bvOr6Jvs/4lhIwvjXwH99wkbl/FH2//WPhgP1jI//9I9J2Gtuh8H7bYV2f7VDiLthlbIf/12+f/wv0/3e2f9j+jxT1nt9auAh4pDDwqP7emGGhq83IPa8b6X+MxbSCNYFprWLnCs9uaWGLwT251MucQWarwXx1UYSxCojOE2SeFK7YMpcRnacM5sSNQBUkIsFlou+v3SbMpz2Abslk5D5S254W5oezgE1yz9glBYFn6N8uTPI1ludZ4efWtfAs/c8Js2WSV2e+BTxP/w5hTi73MnPI7DSY1+czZ+MeyF1GG9boDPS0dYR5gcyLwl1pPIMmdQnwkqEzeHn8O+xfNpimL7rniOWa11cMJoPLzPPIrxrMmTUs7ExOzI7m3KAgsJvMHuEuYjvnIBFRpjTb+TX69wpzMXNWndrUed3QWTLZZmI6sy3gDfrfFKbACi9zD5m3DKbgAqAnGb2P9G2jXv1XuIysi3fImLa3GNugJ3B+RQt9WPi3XSJ/29bq6tj1dolPWpHyLnXeE60OZPTdAPcvBt6nf59PvHvWAx9x+RTG+JjT/a8Cn3C6+zngoA+fYj9bPrlE3rZQj/U4ZHDfN7E8TC8ynxvM4EZeZuR44AuDad7Yy4wjc9hgzHx21bFwJB/mFJkvDebuZfH1+spguvrk/LXBlFqCuLp/YzD1fep11GAaHwaqgIzcE/GtwZz1vD0GFM5jWjPWdwbTgX1Omb5kvjeYiUXIMB/V+cFgHrnIZUTnmLnep5JrGXtuT2Uyx8mcEO5nbhvKVHeZH4VJmeav85MwRS/y1zkpzIdNgaZyfdShqYxP/y/CTJkETJPfEHsNBk7R/5swKxcDaXLufkEm8LtR9+RKluddLd9kAH+Q+VO49+Y6OvoOEZv5S5jnF5GR9T6dzN/m7w3FIkzsPhdX57RwJvOsy+QK89e5kTE7W8djFIHHjvowlsF84MMkGMyLPkwBg9nkwyQazAofpqDBLPBhChnMDB8myWDu8mEKG8wYH6aIwRQkYDJFDeYnH51iBvOZD1PcYF73Yc4wmKd9mDMN5kEf5iyDse4DUuSdd3YpYTAHVsczZxvMLh+mpMGM82FKGUx5H6a0wfy+Kp4pYzDf+DBlDeYLH6acwez1YcobzHYf5hyDOcunnSsYzB8+dT/XYN71YSqa27wPU8lgmvswlQ0m16deyQaTON9hzN87qwj3yTx/pqowLwUw1YSZEMBUF6Z2AJMiTHIAU0OYMwOYmsIUDmBqCfPjXH8mVZjPA5jzhCkZ0M7nC/N3QD4XCLMvgKktzN0BTB1hugYwdYWpEcDU01i9gTTjvVT16W8gzHsZFobIfrlTJtCQ/guFWVrU+93lSBbQiH6118rZz6WJ7U97EG5MpolwzZKAnOTCeUxPMhfR31SYnnOB/b1ixxulWMGL6b9EmKfnxTPNDKbnNZb3ve11LTSnv4UwD8yAhxm3AGhJfythzs8G2sq1NAOnAGn0XyqMWrMtQAnLe+/MZWQvD+DHFES+v69nJOXPzC1j5ct0mgmslvo+0dxCa+Z1heT2VTWLTCz/KNNGmNeos150tpC5kv62wpSobum1Q3lMO2GGzaWOkU97+jsI80pNr06U6SiM2smR3vcvN81kvcl2DuCHvMkcysb43QOALmS7Bq2vTAtpsn5f7A1cRfZq4a9O9zLPkLnGYD4e4GU2kenmMmqTEoH6BR0uayGwZhDQncy1wqmVuzpyj0V29J605EYWriN7fQD/+XagCuEo/+Zg4AayNwpfoQqw04oxb6UDPejvqUyWRcar04v+3kbczhUtdE10uHsXAfN6AX3I9PVwonuLhbZyrc71mUA/sv2FP5xBTWH6krmJ/gHCWFwn1wuTSWYg/YOE2bgZmJYcY+xrVAbTny7MIyeA3UCEKb8VeL83kEF/pjBbDOapBUAW/UNYTJt4SQL2fWThofQEvDQ4AWkDEzCaf3fuk4Da/HtmceCDLcBaTkuWAu7c6jxvpu964I2yVmQZi81xGitb58f+7tTe62/HdVWvvIXpW+354HLx5ph2TbbfCOY/nGWUT1nZkOugvYU1nHZhGcS/hzSwsI1/H+hiRfzjrrBw90Bukywrb7LwWTsLBdpa+KCNhYpNHEbLfOa5sauFTGr9yKI+Lcup8/CVFu6l7iP8W60Icx8n48HSKZxnvuNZ/OzEJmCxu+52jAVGkJ9AdqL272NAbWHsbSWb/jt9NGcVYT+X7wnl04G7DO6Ji7xMdTKTDGZnEnNz63E/Y9YlczeZySzKbHIZ3vsRYabQP1WYYlO9575uywCm0X+PMAuqWh5mVJbDTBfm9+lenWmuzgxhalfx6gx1dWYK8/4UAJb3GGUW/bOFOTDdyySlxzPFGUuZbT5M96pe5nkfpm8zIFWYl9lec+jPEUatpH2NfkLseTT7mMc8svOFn8m4mwrEmFTOL6D/Xh/NT/sBacZ7/xeSWyTsDZkcy4TpOxBYTP8SYXqM8eo819yK6CwV5uzNwAg5/z3JApbRv1yYRj2B1cmxczITyaygf6Uwy46xDVhmsoxmueM4IdfeGpT/ccnJW/Jnvu2bP3PsX8RKGJY/c+pfxDqwyvt+Gvs81CrzO95c7/HlkAxgNZn7hGu4GkgTnUnUWWPotJnnXZdZ1FlL5n7hTlCnrejcRZ0HDJ2T88iITiZ1HiSzTrh3WK/mRj7rDZ1Tc8kY+Wwg85Bw5zGf1kY+Dxs6LeaRMfJ5hMyjwn1NnY6icyd1Nho6384jIzoZ1HmMzCZtH65T830nm83zdIOsuHc/PG4wf3BbrW28G2OLwQwY570vxf6+tFUYtV//xTb7979gavbPn7l4SP7MzQPzZ8r1yZ/5ei6Q446jDaYAl7KdnmAbPCntsHIrMCwhxlxM5in6twmza5WjYwHoT387lqeNtiw9D/jN1TmPOueQeYbMduHWbaVuYowpQuZZ+p8T5tgqW8eJdeNCcizPm99zGWu3ezx+DnX23AvsILNTtzXGalskxmwgs4vzLwjz6mpbx4nVnnGOknnRiNWQsdKLOTq/T2Y+ZF4i87JwT20lUzLGHF0AvEL/q8JUXm3rOLHOZ6wM6uw2Yl1njw0FvO2zh8xrwvW18ynkrdde+l8X5nLGWm5F25AcyxtGrI5kKhaI1d1uwzeFUcsa7f/79FvCzwxg3hZmRADzjjDZAcy7wlxQ3f5tKna/VK8k9zyKMIVr+DPvC1M9xZ/ZJ0ztAOYDYfYtAZnYWNNvHPCh0ZafzISr446zNgwvV2t5vM5+Q2fPbH8d5b6f5c8cEOaXAOYjMqYVq2qhb0Ls+H08+Y/JfSLsr62ArsIsWAAcpP9TYRpke5leZD6j/5B5Pj4JyJbviXunAp+T+UI4taMdgWMfAJ13AfXqAX+z3V4qYKFwJ8c/cQuQbjwf5zC1joieydye5TBfCtP7FivuuP0r+r/+B2aay3xjMsYxuc0c/QdmlMt8K0xiln8+3wUxks/3QYzk80MQI/kc076b7p/P8SBG8jkRxEg+PwYxks9PwlgDLQyT5wfZ+Zyk/2eDSRcmms8vgUwsn18DmVg+p4SpNxVYbLTPb/T/Lsw2flYY6jjMH8JUmuHVmebq/ClM1ypenaGuzl/CPBmQz9/aZ6v553NamIUB+eQKsycgHxSNMRV6ANnShhMHAhb9CcJkdWHdROfevvyb/kRhhlf03ns0mjoF6S8kzLv14PuOhCRhbt0CTDPapzD9Rf6BmeYyRU3GqLvNFPsHZpTLFBdmKJndwtzKWGfQf+Y/MFNc5qx/YEZkOUyJf2CyXOZsYbaTyTZ+2yhJf6l/YJLSHab0PzDPu0yZf2C2uUxZYZoNARbL9nN8AFCO/vL/wPzmMucEM+zbDlPhH5iiLnOuMJc3cs5RJbjnY+1iW0VhDpTyMmOmu31cmEtmAsPkN5tMylSmP1mY+8cA9X3eC1JFmLeTLVwv5+GSM4Gq9FcTZhyZdIdhPg5Tnf4UYTKz/Jkawgx8COibnAi9j7om/bVYTFteJv4dPakGd0NhZZxynsHc2iT+GWXnG0zjUUC2y9zd1sLIgcAFBtNLriUsUNdhahvM4dkxZlsdf6bsOUBb2WavnQLUIVNXuI8zLF+mnjBPTwbSrdh6e2kQ0JD+C4VZxo1iNWLMjMFAI/obC3NjuoX9wnxFpgn9Fwmz/1+cB/pstbOt6bVGTY26fzGPjPHM/IvJXCLcqFreZy1GmWbCbGYbntYLgnzsnure5+kdYr2aU6OF6OROgZ6vy2NaClOlilfHSneYVsL8MB0e5k9XJ02Y7KpenSRX51Jh1vYE+sq66M66X0b/5cJMv8DLTCTTmv4rhDmrItAIsev0RrFubehXe6sS0FWYU8WAKw3ma5eJts9Jl2kr3DBjG9ubBbSjv72ur9FAxcT465Q7CDPRfTeTXmPWkf5OqjPDu76qkulMfxcdX3sCO6WdO2WwDvRfxaK2Rt6Pa49Xq/sCV5O5Rji1ghdRx4o9v+DaBUA3st2FH3yGy7j1XLaVHP3X+WiWywZGF3Pa7YmxQLX5rBu5G4StW85CbThMn/HOerqR/h7C2OeJU+XavPHMqyf9vYRZXtll3LxGkOlNfx9hzt0AbJL1aJ+H60t/P2HUZiZ7f//dNRjoT/Ym4Q9T02QGGEyBl4GdBjOQ/kHC7Ooazww2mPeT4pl0g/m2H1DFijFFyWTQnylMsT1AV2FODgKy6B+i22E6dQxmKP03C/NNF65Pg7mF/mHCvNAIyDaYW+kfzmLa+B4AZLzflAHcRm6EsFt2ADnCvFcMGEn/KGGu5bK3hVlHndvpHy3MzXW8+5btZMbQf4cw341nXYQpmwmMpX+cMLWPAr8VkP3PAtaD/gnCXDDB+/3/bcaaSH+2MAOOGAx17jSYmofimbvonyRM4TvjmbvpnyzM6nTLw2TOB6bQP1WY848ytsFMo/8eYZImIk5nOv0zhLnlIWC3MPczn5n0zxLmy67MW7aRNhnAbPrnCHOkh60TY+oNBnLonyvMp9RphBhjjwPz6J8vjNq2e4DRVuz6mucygQVk7xX+4vIWGfkdhfkvpH+RMDuoc0iuP2jSwsJi+pcYcW8vDpRIir1bLbUgsJTMMuHUGk4Dyku77GeHXE52RQD/V5b3mTCLmO9KsquE/4qMjoEryaym/z5hflBGdNYI8/JnQFN51s0iC1hL//3CvFrJn3lAmOSKQJpcr2AzD9K/Tse0JKC26Njcevo3CPNTydi6v28KIs8ie4j+hzVWKX/mEWH6d/HmPHoB8Cj9G4UpWcfL9LOAx+jfJMy8CkB9Yc5aBGym/3Fhuu+w8FNHYN/PwOxU5tKF+b4MjB8FNNgHJFUHKrwPnF/ZwizOZ9wNXMO/X+LfEzidOAKofC1Q9wPguglAG073k9m6wEL3RAsFNlooz2XruWzSD0CrycBv/KzFz0zjskOPWqjEZX/y7+OM8/PZwGDGHtEB+IL6f7O8y+WpwxCxvvxcjmyPHw4GthRlPKmTzSx2mb1jEWGeoP9JYd67y6vTsrmFp+jfZjCqYzNP0/+MMAcNph2Z7fQ/K8xrGRZWyzHQlIXAc/Q/L0wL6jQVxi476N8pzGXTdBt0tp1d9L8gzO6y3vdKdWHdX6T/JWFuXwUPk0bmZYN5erN873Xv+XiF/leF2eYw2f/EXG8zcl1kq5EOs1v7KHPeDfmOlQ7sof81YUYxZ2XakNlrMEWLusf+7liauxh4nf43hGlCHWVWLwDeNBirDuum57AygLfofzvGcN49zyXPtnyH/neFeb6ndyzsOAV4j/73dX0t9ca6kbH2GbHaroLGihx7fmDEGrPMG+sSxvrQiNWjiPfaxh8HAvvpPyBMRcZS5isyHwljWpc+QJq+74vb/8dkPxH+7Rv9mYM+mp/uANKlrpPZrp+ROyRs9ZVexh7XPjeY67t4x76xPYEv6D8szHOfAUOEKdDCwhH6vxRmRyXGEqYIma/o//ofYiX1yT9WuX8Rq4RPrMNJQKqxH/qG/qP/wbr3ag+0NfYx39L/nTCnJgCNUDiPGUzme/p/EObGCmTk/XNlBwLH6Fe7T9599UAdZ9w6TuYEy48u22070FzysfeNP9F3UrTufUAZ5115P9P/izAryljoKkwp5vMr/aeEaTjS285/NrPwG/2/C1NnuZf5mcwfBlPb3ocUiDEJ3K7/pP8vg9ntMt3bWxHmb/pPC3OwJ9BT8yGTa/uLxZhqnO8m38l/IWPRnyDM76xXqrF/KEB/ojDnVvI+83rhVqAg/YUMJlWY+WSS6C8szDMp3uOPGb2AIvQXNRhdX9PIFKO/uDD3FEJQPsrkm8+GgkH5KJN/Po2vBvpGmanOMdMZ9J8pzIGilqfvvJtFjv4Swlyd5WUGTnGYs1nUNpXXc3UOW5JMKeG+WufPlBZGdThu5zFlhGlxHBhmXO9flv5ywpTcAHSU/eNRlvL0nyOMWtHCwGKp5yBqViB7bgA/qiBQ2+jnFclWCuAvmeb9beZ4soXzyJ6v6yPT8jALqHmBwZweAlxvPKOgNv11jLgFZ+n5MacN6pNpINyN1b3njaNMQ2Huneevc6EwV9Ty12kkTHIO0NU4d9qY/ibC7Kvhff6CzVxEf1MW02YsBqoY9+FfbHAX7vG+xyn6XNhLhFvVIP6Zr80MnUUveRm7NDeYyo+zfkY7tSDTUriq+TOmTuTcW6t8dJRRHW3LcWTS6L9UdQKZYJ01M4DLAnWCmVlHgXTJ+XrGupz+1sLkBDKGjsQa4jJXqE6+jOjIb11tzHwCmeB8HnYZI598mQqbgTRj27iS/rbCfH8smDF1dF3YTDtDJz9ma0dvrF32/Tr0dxBmYRBj6GisV12mo+oEMsE677lMJ9UJZIJ1ojl3NnTyY04lu7+VusyVVS3Y1kUYtcl7gL5y3v26KUBXslcJn5JleZguZK6m/xofzXuLA9cnII/9MB3oRq67sPXkPRwv2c+LyAKuNbTG5MSOSSYIc53BTSlixb035gaDqePzztsbDebtys5+U58z3MNgGiUBOYmxcwh3DAZ6kukl3E+3A2kOw/Z3mN709xGmZ0nmY4ztfY1YA3yYfgZTqnD8+6/6G8yFxvt1f+oN3GQw60d7c753MOOTGSjc8vbAYqm7zQyif7AwPw62fNsnXbfh8f7tkyFMoXTLN1amMKvG++ecJcy2ru51u67OX4OAIfQPZfnP2vhXve8qnMf2vJl6t4hm77vgua5ydfQd78K8lMhcyBQQ5lb6hwuzpLe3L6/rhYjdJszaLUBtYTa6zAhh2hf0Z0YKs6Gj9/zY4CxgFP23s6gNHDgQGenpGMjSr18/9LOnt9+OWzgdaZeRI3HLLbdg+PDhGDJkCIYOHYqbb76ZZTBuHjwYfMgYbrvtNowgexvL6NGjkU7NdH4mvV86+vfvjwEDBiAzMxODyY8aNQp33HEH+TtwB/lf9wPZcq6+1UJgNHMcI3kWOKAMC5k76B8rTLLBvHovMI7+8cKcbTC1yEygf6Iw524F+sp4dxFjZdN/pzDnkUlLjDFJZO6if5IwV5I5UTjGrGOsu+mfLExTMofOijFfLwCm0D9VmHsWAYvlWvXzGWsa/fdo3Wt5ry/8eTAwnf4ZLKZV7xX7TmPvj1cy5kxys4R9uiuoVzjvHO02MrPpnyPMDz2950xuYW459M8VZmdZCwOEeaM5+xf984VpI7/T27HWkVlA/73CZKyHR2c1Yy2kfxGLaV8yr5mi9wlzX0xuibBdzwYWuMwOl1lK/zIfvdZHgWlko9dO9WLs5eRWCNtB7u8jExmXV9K/Sseukt7vpJnUWU3/fUbMTsUsnBCt7pnAGjJrhRu7CB4mm8z99D8gzFPJZGQ/MYrMgz71q/A48F1FC/exnmX4d/nRkXenZkfaj3zCIGAdp+vlsyZT3IcZMc6ub4yZ3hPYwOlDwvy1hfkLY5eHWR4R5qu7gNbCTLV/2+F0ozCPlYzXeYxlkzCrzgGaC7NnPrCZ08eFKXA3UCKBjPtdfv9AYAv9W4Upwro3BRl3PbbrBzxB/5PCPMG6rncY5ztjBtcH/duEKbPBeS5HNNZcMk/T/4wwhbhu02WfMjgJ2E7/s8JcUN7LrK1vRZjnhGk41D1nJMcez9O/Q5ivt/gzO4W5ahoZ833X5jHVhvh7mV4wmFrCMFbk/bcvGsxNW9lecl7lgYHAS2ReFu7YBGC0/MbRNx14hf5XhXlwMtBcr29irN32+hcmfY73/rQo85ow2WW8sTqR2Uv/68L0fhGobVwj9gb9bwqzo48Vd03wW/S/LcxzlYG+xj0A79D/rjDXr/f+/v7XQOA9+t/Xdcp8NNbqScA++j/Q9tnsPhvRrfvF9v0g9O/XflrDIhPTiTIHhHm+ohWn85Gh83NNU4eMofNA5/h8Pqb/E2GmpRg6LnNQmGW9veevBhQHPqX/M2F2ue8X0neFHaJfrUi5eOZzZVRHni33RYCOMocNpsNz+T+3Y1gjC6nSv95LB44YOvVtRq6vJUPzcr+sgEdnA5kvDZ2rc+DRKeLqKPfUsvjvYl+ZfXm27vuc8jWZb4SbscM7JqzPAo4aOhVXxo8b3xrMoNu970++gMx3ZL4XbudkMnq9nsv8wGLaC1wno4G8a926kT9G7jiLP8MijGmfjARyZBxJnQKcIPejsGrHyd8v/AMLgJ/InhT+gl7AemF6pgM/0/+LMF9S55Ac8wy1f+eh/5QR9zfO/85iT/9g+ZPlL3f6N8tpllx3iuKAxZLgTguwJLIUdKeFWJJYCrvTIixFWYq50+IsZ7Cc6U7PYinBcrY7LclSiqW0Oy3DUpalnDstz3IOSwV3ei5LRZZK7rQySzJLFXdalaUaS3V3msJSg6WmO63F8vYyoL48m3BdOnA+l6vdPRtoKu8VqtTCctYDuXhLJFkcJVAa5VEZKaiNRmiJ9rgRN2MK1uAlHEMV61prjZWWkIjYv0L8V5j/iuZ9uiKq4Xw0RBN0xMpI85enXn1cRq3RWI5X8BdaWotFp5D7+TNREmUZvalPPrZic7TF9chENlWex1cobbW3sn3yKZSXD/Ui+aSiLprw305PPt0wHAu57ARqW3dQRzTcfOz4FUj6tU8TLr8agzCB2bxAjVRriLXTqpng1z5F5bM1mUtTtGb0QahgtM8EbMS3aGqttComaD5ubPJsW/4NLivO2mkuXdEXIzAT67Ebx1DR6mrNtN62ilKnENx/0tLRdVUlkk8jNGdGl1DHzYd/taXeBKp9itpUsnW8NeLaYj5VmE/JwHyGYxrWsHW+QVmuq+nMp6J/Pu66qpCXTxraoCNSJJ/OGIIcPIMTbJ/F0j6y9ZCsgtr/i9pH85lHHf98KiOV0zCf/PJxe4Hbx4fgbqzGTnyD8swjx/rEapLQNOGShOYJLalTHHn/JI9Ufrop0tARNyIh7x/orY+2VFyO/RzBRliHrK+s762f2N8Lg/9EI8X9TAVmCRREAf77OzcRv+cWxI+5hfB5bhJ25RbGnblFYOUWhcXdi/VXcVi/nQHrxJmweJrE2lkCVvb/KZ9P4v/UIFsE/1bn//7Ph58v8A+fD/3/8/0J4v/PzIfjT/j5cPz5X+8Px5//3LxuL5rLvx0z/qufL5DP5/9P9//f3X6h/z81Xso6+L/98/+vr98Ew//P8+F8/aklsGlGCfTNKYHVczmdXwJ/5v6dm5t7NiyUgGFs6V9yT+U6RDWqlURublVUwdmc+vEnA/gS7idMO5z7de7R3B9zf3c/cyGqoyEawP67FArwM/VRLTJXElU5l2DE/jr3h9yTeREv5Ceq09sQ9cHPUyeWB/+KZGLRYys4n9+euyP31dwDuYdzjzPz3yMq3XEF/d1wDf9vjNaRT9bA1SiDP/nXVVxaEI34f1eWy3Gh234puAylueRSpCGqlOhmU0CysetTMqLkV58dubtyX859L/fzSL3cVmFG3ZjTNfy8k1GNyF9Xo6Dk1AiXR5Z2ZUYpbk52RpfCySSNjN22p9zcmA+XFADzcfNw2vhs8rF8duXuzf2QrfMDW4eabus0JntNpI0KRmhmxDm2EOfsbBpFWoa5RPprtHW4fiJZMCc3PzufUlwSzSR+u3G3zLz1NSl3au7c3Edz9+QezP2OLeSo347BJEbhugg/EoNwZeSvEbiWywfiIpyKcLehDaLteRM9tTAc0XoNQBKGcVl/FtYw0q6FIvVsjXI4nmvP38r5JqhJX2yb8LZ+WfTjXF+WgugKu9W89U906h9h0/K2jtj64NpgiwVv71Nz5+Su4xayL/fL3ONG7UdGdOy6s+Ys16G7m+m1sNvAqb+7/lnHbpHt+xrU4nQ4nBaI1rIc24IUa3uTWx97Hce2SGfb6x9haqIQykY+2Q+Rtc+/Y73DqfuPbks4tdft0am5o+psjVU5x/o7tTe2x1m5K3KfYv9g7Z1e79Z/lF1fowUGwqn7RXDWfXfUctt2ONpE6lsur772undqy9FE2qc1SyHW1a5l/7w6lkVfajqt52wH0XVRBu7W4NbI7gEpcHqiM0Jd6tbbbg+HSQPr7faDam4vdHxOC0C2gAKni5yucTrr9JbTp05fmDs4dxb7wl63L5zKUzyNv/A3fkAuP3ccn0UiH8NbnPsUO9y+8Cfe5PwnLI/hKP//HgcRbdE/8Aae57LvsAr2/O/4lnPP4WMcd1tnDn7jktdZNmJlpF1m8++JmIBTkbmPOPconoXN7sWvuAU/ui30DfrQtwIHIr5f8DXnHsF2N6su+Dmy/DV8hZP0tGKZhf34zo1bDz9F/DdjOc5y23gPeuPhyNLx+BCd83r0bnyAlvz80yzL8BD/T8aPOMqWsjM8wfln8CVs8ghmcm4oDsP2fMG/6+JM/l8Zn+flfQi9uGQfxsGeexWdODcD2+B438dSzm/AEP7/ClrgY66RaGu+h7Gow+XvolJE/yn+3RMvR3SW4A68mLe212EROuCdiOcMvE1uOtbn7U064iUuycKT/L85akeoF9AjMn0C96Ai9nFfytpzfheZxSjO/3eybEWm21YPYgyacckWlmm4EQ59AeceQAb/v59lNKZG8lwAu2+NwuOk7M+ei82RWMWwiZ6FaO/W/RKs5fwNuJf/n481eIdZOGurAu6DPS2KdKx2M5iCdpgfWXoxrucnJmMwHPo8zONypx83jWQwiX5zLL/NzeYczI0sL4IcLm+LuyOt6IxkbTAAqZzehfL4kGNFdIu4CLVQDk6P744kN/9haML5m3BFRK8banKuv7sHuJN/F0a2jO2F0BexI45rEN33FYTT+x3NRnD2fylw9sMXojR+cNdNdPyL7QHtvxoEHO14j83OPn356RWnfz/djj1/i70XcPeBNByH3fM/A/s6y994y83lL3zK+R+wA+z1LG/ie9dzEI/B7u3PR6J8hzciI8Iqd5vXfq99fiUc71FM5PwpPBrxfoRnOXcLy0acFamr2/cj3tn4hp4+WOH2+gmc+xqPuGv+NWyPLD+AWegS+etntCJxEvvxGUd6h/oK9bjsJ5abcYJUpD9zbjn2uBlxHJBezdGAc51xJK8+M7GbS1piaMT/AQ5HRoan4XjrRsaIL1A5suY/599n4hD/74V9eC/367yWHodXubQTZoD9nmUbljoK0v/tXv9u3nhaB2egEpeNxVMR7XfsESDSv1/G9Lx9x3p05JKXkBVh7F6+JNKDm+NFt53uwDqwD0d6dTGw97PURg/s4RFatI5PoCKX3oPFsOd2oYOn/zfDGGyJeBZhGj0X5I0Bj0fGgHP5/2aWTchw68R+HhkXRsOemwr2djdj7fPe3r4a6SDh9nZ7JLk4Uqf5kRGlCP+/HpOxl1lH2/Q89xhmHv+fy3IOclwF9mzZtzeFOya43lTcxfnyuNOdH4HCnM/GtRE6dtQTzZhHfO6e3zkOvJVTZ+/fxFW4yT36rxnx9EdZTp1e35jb4g/cFqNHAez77t7f3fNz6hz3NXK1Lnf3/RfC6fWlkYhTeUe+7r4/r/+z79MrR3/m8Y+7/7/w9HOnl+R+zL4fXefHcZo09/MR9i38xbkd+DPS5k4Pj+7Hf8McN7eJOBXpr78iN2877YNf0AV27zuJve4+shUO530X4djhHil8yulRlm9xwB1vfsB3kRjP443I9BN8jI3utvV65Gjgo8jyCXgEr+XtucejN57DT1jrZlAPZyGZ9I94y+5xkU+v5Pyz2CvjyAp87dZiO2Zxfj9uhj0+LEd0e3oYz3DJl+4I4OzhnWOClpE9vd37lyH2reZpPITP8/rzhkjLjYW9r34bh51YMhp4R4Enct+TcXhpdAwg5eznz4Dj4b480qc7RjxP4g40RzR+D3v/7e6tF2MMokchlfPGrvfcY4h3Irk1g9ODK7naHDW45MXI+FA7MjI8gaN5Oe2KjCMdsDUSORMPYou7Bm7EA7gAdu8/F05rb4azh7e9GVjIufa436XtI4O1cPb5N+B8rOJ358/ku+G9SHfHgCm4HQvcT7XDdRiMNZG8K8AZH5z9/3xnJDD2/6NQBOeQdkaCHLSNLL0bI+H0/+/y4g0C+3/EeyVGoHzkrzvdvXVh2Ef+Tm+9LXLk0Mb9xhf9vmcfAZTLOx68Fc6RgO8YwDl33+8qOucG3P7vfgcsg4IcIWy94GMA3f/HRoHouYECyG//3+L0DO71v/5XPf+PyLH9Kjj9PtrH5yDW86N93jnuftrVbIWTcI60bZUfI8fNJ/B17inOneV+l3COKN50tz57RGDPd0eAN/BJ5CjgW0Sz5BGEe+TgHDc8Cud4wfHuxWzOf+MeGxzIOzbIRZncW3mU857Ul0cK7jeCP/P65Bn4inPRbwV76O+NZ9z19CXssWA8//8QR+AeA0SmnVEXLfMyHIoPyBzGMrijgXsk4Hg/Dzj2/5x5Gcf/JGJHAHXgeN+N7v0j3nfQM27PvwSR43v6nSN8e/o2iqO5q/Ai7iCxTo76nT39q/zu94OrYu/znT2+0xr2MUKzCL8JRVEhsja3wun/9tIxWBSZrgaPod0+uAXTuMw5LnjcjR09KsiIHPXfj9g37/awRwTnG4DneMD95H1IhzMWOOPAAji9fldurOXs/h/Z/5OJHgHw2P4f9/6pbss5R/hO79ejdeeMh7PHKud+u78N0W8Aw9217nxPiBwFyLkOfu93Y9vf+CNH/dSOHQM4+/03uP+1z1s6reaMAWXcsz5yRkjO/JR2t0ifsx+Mp+c/SsI9N2ie/3ItpVlJ2Hb3QmfZanf6NqfqxyJnPs2dZrvTEovdz7nT+kvc6VJ3usydLvfq1V9dApY9vb8EEtxpAXea6E4LudPC7rSoOz1DufUlUNCdFnKnSe60sDst4k6LudMz3OlhOetXDGfB/p58pnsMV5CfctZTgchepnhkLiHSeokRZeSt+bP4KX7WZYqhKOeKkHG8SSgUWZeJ7qic4Dl3Xf9Rp12GcTp8PbCpZexe6DfHArWLA3VYomYt8mfqCnOoikVG7g8Z7zD1hBk4HR7mfVenvjBnj+YyuTb9ghYWGtDfUBi1Vz/zPkv7eHOnnhcKXyfLQlfRfDwLaER/Y2H6bwdSRIf33ESsiTBZAcxFwtzRHagiDEvEmgqjNn8LcAKxNlk1GLiY7CXCF2f+yvTLAJoZTMpQYJqFPGbjAqA5/S2MuGc/C8yUd/GtywJakmkl3I1v5s+UoM6zwryWDqTRf6kw365QHedZlZcZOj1W5s8cXeGNtYaxLpdYaqMfAn6TtnpsMNCa3BXCqh3ok/89J1uXee8VmbAQaGPo9Z1NxueZ7srtSLF832NwpTId88+nv08+bc31HJCPcl0D8mknzIHl3ve27e4FtDdi1Z9DRvrXfWQ6kOkoXJcaluc+80ddppMwv/g8L6Mz/V2EWd0PuN54NkdX+q8SZpUybt2vpv8aYZ4hs0meAVE6E+hGf3dhivQQxn3+y7X0X6djS6aFxRKrWQZj03+DMKc6M0cjnxvp7yFM5T3AaGF+mAz0pL+XMO1rWmRi7RNleuv4sxk4Ie96nmABfejvq+sigOmn46EP05/+m4TZd8xfZ4Awp3sDh4TJJDOQ/kHCXN/HnxkszP0rgfrGNp9Ov9rhnPj3KmSQyRRuFNtQn0EQZbKE2bDce5/nacYaYsQqOsd/X6BcG27zKRIrygwVpuweYBrkHvjJwM303yJMWk3v86qizDBhUhcAXYWZPBC4lf7hwqyfYz4bymFuE2b2esYzdEbQP1KY7+aQMXRsZpQwM1bqGOWU2402fM24v44lsi5GC9erpneMijJjhFnyL2Lt/xexsv5FrAyu07ayf3klA7iD/rE6rk5FHkONPGacMLdW8eocdJnxwrScAQ+z12Um6Phc1avzhctMFOapCcD1wmwgk03/ncLUquVfr7t0XA2o1yRhJgbkfLcwjwfUfbIwFar512uKMP3SLd96TdXx+SqgvjH2TqP/HmFKj0bcfebT6Z8hzI5kh0kQxraZwtyWCAzRe24HA7Pony1MMv9uLTlPWQjM4bIcYSZU9I7zTdOBufTPE+aeOvBl5gvTdguQJu8XWL0AWED/vcLsXxg/1i2kX23UVP+xTrlFVbxj3T7OR5YLM2CGqyP7d9sWC5NbVXVi7+FZIswjPjkvNXKuHJCzcq0Ccl4mTPGAnJcLsy4g5xXCrPXJeaWRc5mAnJVrEpDzKmEKBOS8WpiVATnfJ0zFpZqzU9YYOSfPIuPzfUe5EdW9sVicNhHmFZ/2ud+IdWNA+yg3NqB9HtB+EdA+DwpzOKB91gmz1Sfn9UbONQNyVu7KgJw36BgVkPNDwjwWkPPDwiQVi3/m9aP0bxRmiM8zrx8zmK6WHks4Opvo3yxMtyXKODqPG0y/IhYWy3hYeyCwhf6twqQwH2Wqk3nCYK60gNEFkccc6AU8Sf9TwrRb4mW2k9lmMCeZZ9OEGPMBmafpf0aYa1d4mW1kthvMkaIW3kbsOeb7yTxL/3PaPqyXMs+Qed5gnunD+su6sLezHfTvFGYeY0UY6YO7ipMXpkId7z3yzwwEXqT/Jc95Eu/2nMr2epl+tXeXenU2UucVQ+ejZfH94lXxq3XpEnvuaTv3PYK7ye4RfkdpMvKuCjvua/TvFaZYZ33ehaPzOv1vCNPY8mfeFOYhtnGa8R7Bt+h/W5gazEGZUVkO844w02d4dYa4zLvCPFfFqzPUZd4TpmWm9/2IracA79O/T5gmxvtHuzHnD+j/kMW0O5O941F0rDkg7M+Vych7ff9KdpiPhJlq6ETHo4+F+aOyy7g60fMLn+i4n2JhdUlne9o8hjGygIP0fypM/WvIlHCY+nWtCPMZ/YeE2TsgopNtMw3v8NdJ7hNjtgQw9frHmEZj/ZlXa3DMKuTkM8+uM5nP6f9CmBZ2zolk3HfO2cxh+o9oLAvYjaKxMYLMl/R/JUz/CkAV6lgukzwI+Fr8fsyLjPeNwZxR00KJhrF2bjoOOErmW+HK28z5sXpdTOY7+r8X5opryNSPrQtb5wf6jwnT1WZSY3W3dY7Tf0KYddv5+Sqxujch8yP9PwlT6FnYOWe7z/nyzfmv7TGmdQCjdv4iYEByrK3qkz9psAWnAdPkXRbjCf9M5hfhfmW/UaZSQYf5VZhn5wN9k8tHY0Xa4ZQRa+0kxiIT1ZlA+Dcyvws3oJLlYaoXdJg/hJnEevWUerVmrD+NWD2mA6Ml54mE/yLzt3DV2IbKNCnoMKeFeXk+YzEfjZVrxHpkEmOR0Vg4A7BYojaU9RKGsRwmQZieRSykIcbUaGGhAP2JwixaDDRFLJ/pmUBB+tVyy8NXp5Bw5/joJBk6I4v66xQW7qlF8TpFDJ3snv46RYXr5pNPMVOnuFenHnWKkzlDuK+YT3PRWZ4OnGnoTAnQOUu4Yz46JQydr4r565wt3D4fnZKGzqEAnVLCveGjUzriFyZAp4xwL/volDV0fgjQKSfcpz465Q2dtER/nXOEW7KIjKFTwdD5tE98rHMNpnxFoL58/++3AKhIppJw7/QhQx2TqSzM8x39mWRh7toMZCeTkTGhCv1VhRkewFQT5v31wDCJtXwgUJ3+FGGasX1GG0wN+msKU7c00FeYmplALfpThbkqCegpzF1kzqP/fGEmTPJ+h2mTDlxAf21h9iRbGCA6e3sDdeivy2LaeyPtvLzv3qtHrr6wSz8EpgnzPpkG9DcUZi+TSpX1P2ghcKFPvOJve99r+0oWcAm5ZsLWPIK4d242p7+FMAnU6Ss6O6nTkv5WwpSjTrocyy/jB9Lov1SYyd2BHNGxmcvov1yYHDJpVox5mLFa03+FMLdvARbDy7Sh/0phpvgwbelvJ8zcTMvzXMO6U4D29HcQRq0jl3di6czShaUry1UsV7NcwzLJPhajmj7nrpuhVbUzkEpCz6t0N5hzXEa/011L5jrh+hazmQRPrOsNnZ4uU8BlXpjq6NwgXO7tZEjoM7VvNHT+cJmoziwytk4P4Y4edRk352isnsKkZfvn00uYsj3cust5+N709xEm86FYLDLUcZi+wsww6r5mhsP0EyZxtLde83o7TH9hjh/1xorq3CTMdUa9PrvSijADzsD/YA8OigCIAAAA3s0Y4sjk4UkQAcTQQhNBlPDc3VcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYI4VeWv3Pjit/l1KvgHPcWPL+Cbple2Azu+HkMXM8efB9h2Hmecega0ttu8+ypFW3PTM5CjMzMzNtmJmZmZmZc1XdkseeneTmLbj/VfXvqmpUC37u+6KdJpnioT/JpPBlzFLZTJSfZrwr+GTVZ1lD+g2urNXmyZVia65r2L/6v2vwuCuyJEa6s/r86b0Y7jyyCqIkaPlKtDnWIPNocz3ESpLT38yLWw+lYgqde7/7UypIrvx6xBqyVJ1fNRHxIlL59/OvUsTCXqusNp96iItIQ7/7k2qEIvNxhg3/bF7VMs7CkflRJeet0flRFY+iBfMb6MlMKL7MPOZeylRzYAjGfjHPSknK44V/mCc54+2ky7EbeaCSbHrR+DwrduJIxC2d4bLzWHlpEkV+EvOkXl9uPg3JksDnU0ItPxbIpBOHmyQs3DQJO9AfK6xiVH8HVTeSm3IpWYOvzaKoxoLWigvTTMRqHV7rNArdSmM+xmn7ASh8bKZcecVcxdI0mvZDphh0BaxcucrKA5ZGlNRYlNtWpVJlEY+/tUBzRG+3+vZyRjFrS/rOQqPu33e+u+Kgbob9vcLJ4A7y/SJYsU38YFmjGNwLfmjyFnMt+B8tb2yzV/WPVzH6OZfuT4p0BtfnT/M4cy3Cn40aW7HSft4n43L6RZ+Ma+aXRdOKhfGrvHOWnv2/XqbfglP8N6sazdzzeLUVjHWpyVrNx6R/Ro4XznvTbnXirwvFb2mbt6FDfodlkE7/nrBakqk/uLKWtf4fbbMIhur/l8LIoD9bqLJpX8RC+VpmkMmfjyhj9CWWf9ETI5gr/C/Lcloa8l+59Yzzv6ZhhOUaK2Q84kxyyL0jOfZfo81jJdekgaavBVENWtvLuAbrlMMoh+uOYSa54AfNTtxabzRNpJjyoSUsEo14/WXCaFCzwZiIFc9iFvVUGw7r1rRTlrG23KispZqI5cYlDVWSblJpt1lq2rDpgjxNv5lEoYgbm43AHIHBCo198yEW9pqyxZCumHGcbVuOhEJCOtwku5XbZiKeGPJ9LP1uIsI/wmRJMtEQmB9q/2ZgWYe4rP/WxcH7O+pLxTL196UutA/H7x+GNPJ5F+L+Yy6knUjyfyJa+OdFRoeDFiWp1IP4L8T3g0T+K5WgrMU+zJKMQz2RjJvR+7fKjIYBWYq45kCNYBjyxnk3VY+SybBST/0ayzLBMz7Ku5A+k36YdGoRrxfMDjIbhZSg1HT4VCoIdHF1/N9n1WsNyZQHgkUBkzzqC9AeAVxPsoD7WCP2YCRxZSSQnmJx6sDP4mUZrAQlB1ublRgMRRIzJgvUUjlqsQ5lKok563q6nGKTRMtT1IjTtClqHcW2plGC5X94NSig6//Tq6Upk1NT/wUg6Kipqf92oJ/+Z5S1ayJIQm7WyzZWWRSaba0yK/B2uT7kQbK9tVIB9S4VJLxeF4HAZbGDrmOMO1pEb5Q7WSMwJioUia/lnS2qd5nuLjMGrdjV8nw/wh1qN2u4sKC4u1XxcTCwp1p7oA2FTozinjNUnHR7WRUdRG8ye1tl6O5EO9/H8oQMYd6qfVEbBSpjsdzP1M54liWZH+1vlQrhAEtvNs3sQMsDXRzx+CDLmwwylbRrB0MTAgSHoK+6DjB1qEUNOswi9QwmzeFQptD7R1ilbl1fD+tHWkMGQK9l/CjLSTrqaIs2uALlMZaXJilevI6Fmm3lTx1nyuR4U3ZOsJyUhSdaFKV6epK1UpTEjXwy+nGifNlJzSX9ZMvLY56C3cyk5BnUYSI61VqhGNbq4Nw7DUa5BrO2zePgdBjJAp9hDfX0PjvTGmIz0llFHRjys3Udg8/RdQz22bl5HSOdZ43mK0zEsDpEeD60K5m8wDKrbIlV2ZpniYjrMYsvtEpBkwctaMlFVt8Ku9iqREnDF3hJ4ZdYFejvXLjUmrVKL7P6l+nl1uDavMJyoe74lXnwq2bXvnqg9jX9OVw7y9V1lltvJ+H1lgu/9Rt6rQxFFxt0Y3/dmywH8r/ZRP39LbOj3mq5TIr4Nsva6naAQSLvAHgnQMXiuywCKberd+OCAZSM32O5wG7ea7nAbN5nucBq3m8RCFFd7QGLYK3xB60VzJHNZ8WI+4pBMPmQVTGWLZLJ8YctL2NSikb8iEUNeNTymEGPWaVGDh+3SlEOn7BIG909CYuGIXjKoqjvtJ+GmgY9Y9kN9Sz88OcsO1LPww9/wbL54hctO+YvWaSGE/hly2Fx+IplJ9mrkHYYtlqvWUR2aq3W6xCkE7Vab1gEOrTVetNyNt18nbdAmwDrbcNm7xg2e9ew2XuGzd43PPaB5rHWh5rHWh9pHmt9rHms9QnywP6p4bHPDI99bnjsC8NjXxoe+8qiOLyt1ja2AWxbA1hruxyw7W0aJDjTd7A9ZtCOtitiVd3JJliwnW1Sz1hQ3cWmumS72hU0+BmOym72kGYZaffcVI+SJNsjNxlpT7usTQEX0V6GxrSwt13K4rAqOQ/3sV2E+9q0JhDsZ7usJqv72zinVqseYOOkWa16oE3k4kxVD7JxZlUPtnFmVQ+xcWZVD7UJQ+1hUKL6cChRf4RNcBpWj7QJzsPqUTZRDOSjbapnYvUY7X28eqxN9ZSsHqejs+NtXITsBNsFMzvRxGYn6djsZB2bnaJjs1NNbHaaic1ON7HZGSY2O9PEZmeZ2OzsPDY7x8Rm59qejs3YeTYJa6ydnm8T+A1rF0BWGiyxvbBWl4AvBDJoQLjILrEcXgyjpSIeX2J7dRU040heipoglZehJkqVaF9uezDp0cUVtltXMrvS9jKl7ymusmkSqDRoXm1T+AV8jU2hMoBrIZxB12kS4Ou1DXg32GUAbRGKOL7RLoPV4JvsMlgNvtn2gDMF8i0ajQO61S4BUp3YF7fZ1MDb7VHoixqTXE3qq/gddgl24KQO4p3gL4fsLrskeVvg4eJuu8wKfA+MCI/VvdBvWN5n22HtftuBznzArsw4ftAemhHYQzBVZ8SHbVvEj9ieiFmWselHbUfE8jH8Xfw4/jafwN/kSVwn1d8/hUL8NAqrjz+DszxoVjHvZ+1hxH6S6uvZc3YJRbQ8D+FmLC8gj0VRLr5ok6SjZPUl202C5vjLulj9FaMdf1WXi1d/zZS/fV2b4zdsCiI4edMeQpBleg99C9Uova3pQfMdrch4+q5NWRhC3Pdsz4DW+zbR6AMbtxURf2hTXbKPbM+A1sc2FdLfjG32ie0ZwD7VKhHXP0MVAva5XTKHlnr8hb2onUAiIJjW+SnP6l8upcVkv7IrkNtWLG6AvI1TKoRtnaHmpB80WRzzSG7nlLsyNseH7Z2SjM0BbQeERrujgzfhQTvdySnhGQvvM3d2PN+coHdBJJuRaO8KZkANroLdHK9dy1QyGeyOSGI6ezhl3wd/MmDxnhpLmbKA7+UM+bilMW3Zu8+yj1Nq8ilt2tcphTzQcD/HQyLsIfs7XreOuH5AX60DHcKyhh8f5JQlJosxD3a+/vR0CHiR2suhzhA0VAAPm3iYQ436cN1+lUwdkYPwSMdlKqkf5ejjIvTM0dgGwEEzizvRMchDfKzmieP6sjted5JK4db2BE0DcKIBTJ3kjOkuh16E1PwOPmY52XFDwTunOGN4AIcxTDvKx+MVU6c6Y43ZutOcMrQ+5DgLTncWRkIqn3XwyBzyrgi4PMMZ00rcRArdmc4CcyaY4GrzVIkkPqtPs4W+Ez270KxfaM7pr6VzONdZrscxmvV0Uuc5oz3mhjGoz3cW9hSbbrjOhlp5gbP8gHI9EXFtWOKssJTBuL/QWTRgMdqLHNKcThN1sWPLxZc4bp0n9UudMZhleIeR5HcTPLzMKRW6yx2iwRUOzfikiMMrHRcn8lWOFyY+oqudsj5AxQ3VvMYZMY8cOioJkiy71vHAhqrrnBFckD3L9U5ZM7N6Xd3glNGm8Y0OxcIXNzkVQxAg3uxUkGGEWxwPSuTcasLpiu1OpG4zQXry7c4o2gWDgeU+KO9wSkhAeKdDtI+78kTQ490mEY3vcagJcq9x4uPTHJWkSXSfM6pZPcX9uQKgSlD7gLNAV+kpxh90FgxSxh/K47ZZQz5s4mr8SJ5i2pSP5s3D4wBeHx4zzevJjxd9CF36hHGh8ZMOxcIXT+WEAGI+bQgaP+NQLHzxrDOkCTiwyeRzzpCmGOl5ZzjtyoDnp+QXZkQkvZi7RsVLxrXGL+fDJlB4xQybEV51ylkyaZy9lmO0vu5Qo3/DKQdJZAhvamwIbznU6N92RnCp97y84wzB7OKx7GR8fJ13+6xY7T2nMsN+3xh7/j/ok5H8oSEb+0fOsGyKuhKx5n7cEzX1E6iKYtJR2vxpn4z2z5wyPqRhGTj83CnpkWJSfuHQTjyZsfRLxzyvCgP1leO2oNjGdeB3W3eo0Iu4u51LDdjeNZ2bQjt2cEvtek1H3dF1AO7kuvArdnZHdRgfDyJZIsJdXC+eUlBlfFd3WD9Jizjrcl/s5i7oE9Hx7m4JOlHfXu7hjoa8n72nOzagQP5e7go6Vpdls57a7O1WtEUL+7i48usiivbFABrV94O0+JTqsmh/rZSoPcAtoVKC9kC3bDxA1x1UYJ5lBxe4wdUhLg46y4RqAutQdxgks0pEix+mozIWhoe7FBCAI1CFQBxpkOzUjtJGAEejCoE4xhhh1zhWIwDqOExSI3F87kV0T9B1AZyIKgTiJK3KePtkVCEQp+i8iiyrp2pPTEAap2kOotMHOONnaI7A5M90ywVdnIXYqMXZGrcyloXhOYaTtQCf65qj1ZprnudWUItCq3W+oWjpAncop6O0xNBa2nRhnhx0w0V5DgAvdj34RZ+XaDIK4PNSU5Np8bKeUwnS5blTbboibwIKV+ZNQHxV0QSocrXGpvo1OR97+1qTBcLr8qqIrzf+tV7coAVjEDf2nLajmwqngG/OWwaDdEveMoC3GgZqxW25f8S3z/Ru947CC+A7cy8wrnflXgDebRioFffkXhDfOxM/vG8mr/B+rGq6/AENWwzgg0aLA/qQgRloH0ZoevKRnAvw0YIra48VXFl73MRrYUc8YeIxxE8WlHb0lIHYO0/nnqG9z+SeAT7by6L7XC+L7vO9lvD2C3qKw4byousZIF4yTAH45bxbAL6SdwsyXkVs1OK1whkIr/ccp5NvaH+LJVdv6hBtNvUWqhBU3zYqEb+DKgTVd3Uo5Fffy1dx+33UIWDVD5CIsPqhnpu4E3Mgf4QUI32M0Q2sfqLVQZJOVz91l8Uzo9lnVKJYpF89feZ6OeNzdyRHLb3DfdGr2/qyB8e/0kk1eLwNqehWpLiZbUuGjKC30O2ITiYSAd+eUJWJti92IC6CHbVpvA4/O5FSHTH835mUC63YhZQLtdiVjBV6P6nXIRDs8GTBLN3uBO9wGOaxB3ER7kk8EWvFXsQBtDcZyW+TmNm8+2RMeF+MH4u4O+6vuR+p9DDbX7criLi+2h1ASoV0INYwsHUQyQ+5a3am1sRXLweTCutMBU19pD+ELBq0rimn4+BQMsxQ8FVT33JAX4QZD5IsPBzaH+Z1jyD5Qbv3QvJIUtau8b3VUYap9UeThTVWSwYvWMcQD5WQ+bFkJX8ttAdJG1ruhzzCqymEVvw4sgya1ulTHU9crHgC+QFa/shSfOSKryDBedCJmAIBVx5XPJMnkgUz9QUe208iC/vrmduUk/vDGNUppuZmSViQTiUr9deUIm5Ehe00MlSrBfmhxD+djKy11todtWkSJxuC4gxS7slnkpGMxWHS9uNOu8azsyAO2iYgXa7ZZ5OhPs05xDPH2fRc4qWQH6DzyLI1EcEiHuzS80kJdQgvIB7CrBMvISW8zWNKTV9IRvWbCkjZ3E5fRPC1RpdneMt8MXGhIfISMtzutvG9EMdpdSkp98TLyHBNLO6w0LTyclI2ItCuINTgK4lnALuKVNpJ0ugGuAyuJl4uXENKGd9662lQXkuIhtdB3osBgep6QjS8gXihwBtldSOh3QCnyU3EAXAzTPOa8XkLIRreSsrQLzFXoLuNUINvJyWYBRz3qjsI0fBOMhRzqXjIUtDeRUqFdDcpR0nGY0zgHkINvhczDjmo7iMuovthiJNJHtb0cnuALFhnExHzzXwQ9Lx5kJQK+0NkuMsClSWR7qmHe6Je0I/A6HWCZsQGR+9RQiJcV48RslhCwx8nrhR19QRxZDN7kngKjK2IP4Vy9DQMVqy2foaQYBoW+rPEY36gtvaj54gHrYt4oJ4n3nrr+P+47labv0BWwY8I8CWCrxJfY8XaKaxa+H2RUFPhJeLicn+Z6JdGwSsEbzIRvQqdqh/1vEYW4QMa0f+Ux2+9Dtri/npt8/xmC5W9QYbrIg6LJzpvkoVm+foxnyyUbxl/yaC/t+eKwt6Zi8veJZW0K/N7hffIsrMT2SQJWu8XHKzyARkCobh9+LCQtO0jMhZCTyhe5OeHtY/JirN9rsMUw6vTJ2ShMW0iZGGTn5JSAD1b78TBZ2QFY19HO80ZSP6crNp7QLB2EuPMyK0b4KOoLwrz+nOavySL4kRh+kVfSNWpfQWNb8YN3lNqgtiGjpiHN2DE0/y2dGVAvYvtIHk7Wjwx2J6u+HW0Heb2YMZux28wsp2+wTixszbKuRPbBdOZ27irqTd3Ort9g3Fi928wsj3owoF+0+o96Vx93NprttoE33tONttnTjbbd072xH5zsif212o5e7QPmFPdOtCoZyd40JxsdvCcbHYIXQjqtpjqZx86qDTcw7QDff7o5x6+tBrZR8yZxcSRc2YxcZQO6LcGyEfTsaWUx9BFSxMnjjVM1q89zugm+nXH0+VAh282s4G8TtB68xVMv/5EOiI5ZNvi0zrRkyht6VfLJ1PPgIlT6JgG2KT8ge7EqbTS002cNiM0ktNpqRDOoEMFnGgkZ9IFs9ycRUutpKMwxtnUy+E5dCGCwXDn0qEZ5cR5dJnZlPNpuae6oI/cSJbQYSOZLC6k1HzWcREdBqB4Zjr4Ykr09x+X0JFcbY4Ol1ISJaC5DIaPR9Hgle9yWtJKPEdQF+GV9HtmB1xbXzNgE6yLRidj+BD4b1km8JHnVfS7hrNlh2fTc1Kupt/u7bNzEq6hy2Hjg3qjm2t8aGKHX1v43oJlcu7w1xmK2f3nZMjr6XCQtPHsoa8HN9DlB64H9QYwsfaNprW5Ye5wN9Ef9XPgsD53zJvpyoYH7tfFa/baMEX/mEzo4b0FjX3dKjI8MGdrdep1nt1KK/pBlH4hcBvNL3tbcRYO8m4vTFtw3ho03UFXMqb1oo5sDtruLGx/l4nZoe+iqxSNkypLpgetd0M3RjiNzBS7h5aNCCN3L6UG30ddvOu9n7oMigdoCV804zn7Qeo1uELpIVpinVjgC4mHaVm0cvwILSFC7qPUY3i0Z9lj1AOAusdhHbaM8glKGXQji5+kHpRofYp6oqV1T1P8ACSLQwFpPUM9EJDwLKzNXP8ceMrh85BKDl+gLsIXKRFIfAli1JD2Mi1jqZ28glG09ColrME68jVaxkKi9XVKRQulNyD9gMHJcvpNWtYAzW/lVMzrbeq1jPAOuDToXahl0HvYVOPgfUgwNfADWkl7zj7EjssNH9GKAej5Y2hnLn0CbnL4KbjJ4WeQeY0r9jktYYHOvsDEUfgSbJNc1L6iJSzQto0HNhS29SiMqJByO6+sS7Ru70GHaGkHr9Lg8XjVR/WO3rBuCS66juI75aJvngjvXIhd/WXoLt6w79fxYK8/jd3V+7b59jMStcCPk2Ay1F+XMgUCsnbzluNZFid+XUx10pkPTHf3Vl6qYp0FAZeSqT2+ptKe3opLV5KKwd+9vqbK3t6owuN4LRKBj9R9vOVmTvJgKo74+3o/XMp3n8J8AsvUft4PvomWtSEyU/t/TTYHePhyMOykB3r6K7V2epD37d5XoxlvCAkY78qxEzk+IzjYG8u/AROx3m1jJQ/xqPns81BvFPyJFGtAKC4P81boy0bfSWQ8wo94D1/awmoSLUd4o6Y6fvQUNLk80lu1j5omqXk8kGclj/JcLI/2lu9joSYf8mO84f7Ax3oj/eL4cR4143y85+KAnOBR8/Xxid6CPodoOskj9SBW0ckewVus7ile75tBlE/1yuaLQnxE7eHrvxDTOB1qYXkGlEg706P1Ou6sZ3kk7LTb02eDQj9hOccbwUkv8HlEFvji3Bk5kKEvzpuRoZt9cb43jA5hZehX0Rd4Ffz4y9iW9Amt/yXtLeDdRpK90QeT2LItMsh2JgOXvm/mfrRxcvfbxy+Tmezm7cxOfnPmLjzyT8eST3RjS161fJJzfzTMzMzMzMzMzMzMPF9XlVpq6Ti5tJDT9a/q6moqNfuqQjF0IyC9qwsW6OD1ldt6uKZQAAZzo2sLRSFyHQU7HL2+gHN5HrqhIGb1NxYMnnQfDaRp4bqb5kHhzYWKgGAeekuGZLcWVEFiqdxWKAk6HN6eyOI+6R2SLKfZnQVdYvP40V1JBDzxeTdYM5qDjgVlBPg9XCIMGOvQd+jegvJHNufj/sF9hQUjONpzf2EhYQ8UFjq806yJHixsMuJ/HiosXN8fwrJD4X/kgUcKm/B/vUc5MRo+xonR0Hu8sIBjo+ETKMqBJwsNTK+fO478FC9vqrinuXJeLs8UxEz92YJBLByUYCk+V4APICzJPV8wiUmM7eAM9AsFPcZ4ZhF5UUhtyzPtk9RLBY0wPiFF4GUBrB4T8ArqIYDGGq8WGqkpy0dw9hslXysUBnDSyndeLyzsMTDsjcKmeVHSgRHeLNRTLjdgyu3BiOetQjUD/70feYO3wXgJ/J27PnqnoKYYN+9dYTvSfOHmPRmAcnhfTjEpGPaBDJOZEPqQMiqk/Z4dwWfD/UhWO8Xb/MeFxSmw3footHv83AHvZuMhqP8E9OTYO3Of/mmhJulxYe4RuSs/411/1OmtWfs5RMuzd/7Dyi9EjawMXarFL2WDAP1KzlAixr4uxOPUVbR9z93zChT7plBi9qzn9+GazLeF8tBe6/bGYcgjfSd04ykIXjTfU/IErAAf9QOlRgisbFDMH2V4KoF/oviiVMd+9HNhCzIL7/TMuOE2vBnDKMCP+CCVu3tnl+JfShJJElTI8I/t99xdi4szQlku2624xUQdO+JcD4zZvdjMSiRj7z2Km0kcKNCs7j2LrRw/ibpXsZrNHJT93sVaFlwxcG1/n6IhoVNwwWFfIcjLLy2V/YqWGMPDVyll7I92orjUAFP+AcUt5YiTRA4UusEkqSbYQcVNJ5gibmAdDIZKtrujHfnq8yHz0FV+FBxa1CUUevJhGTlYGfP8sXs4yEmxg9ERxXp6MwwujK0ejGc8/0hhmoBFnfIRZzh3FESS5iDxJbOji/E60BDpLq6DHlM00x4SCx4rjAPNvPviSIgdV2yl6PJMhOOFEugusREniGaAPSYGTxRlzdtaDE3NDaeDwUnFJtlGCxFw+2qdHfrccZ5cbKYG8iYSeb041VOKShdu9eBBsCKcFIPQacUFOPw8vZgbZJ5RnDzIPLO4AHcQzirKQx24y3V2Uenz5oJu8JyiOWL9Ln5I4QsKd8POLSqA4cDmvKIGYThGz+YYL9rziyUAaFBzQVEFAgS7IQt7FxZ1oOF7Dcq4uosoPkqjyMUUhXERHF1dUqwQTVEuRXkMdvHY/2WxMfDFv5zCONK6IrYD83hlzIDcXVUsQ9hj3ZE3cq+m5JL8XoP68SONibBrKf1xbN51xYW4xN+/vrhg4PCv4A3FCp4eXEpjihuL6pqARTgm7PY7zk3FskTfnOV6t2RpdmvRCN3RwO65iYLbiloWun2ejHfHPIjdWdRQM2a/63T6dxUrEtC/O8P3Ov17MgDr9O8tmkJpouS+op7F+vfnpEDVAzkMtD1Y1LhVvJ69Ea3VPlRUAMDww8D0JOYjwPQo/GixNN3v9Il4rKiL0p6mzD6eIgNCnigaEoIWPJlC0zH0VFGlQ5u/XIYV97RcUc4zUsVAxp/N0t5zWZo9n6sl5wW5SkjHi/Mg76V5EHs5U0/OK3K1QHt4NVdxzmu5inNez1eS80auQkDPmzkMVL2Vw0Db20XNyVTcO0UFAAy/C0y54t4Dpkfh94uGKGFRWR9I0ICgD4umLIXpfiRhogo/Li6kU8OfoMuDzvppUcEjrz4/6voZohD6vLgJuLgvim3JrdEhN3FR98viZhLPE2OkhP9VEW5TceJr7PziBqj7TersyJZvixbyWc/z1vDMuGHM+K5YB8a05xNMeeh/X6xlYSiB/g/FskT+WDRAxnH79ngQ4UzmJ+GyUPnPRV1YMbWyu+p3K3fcRUE+3GjmZu4qUaO53RTwg/C94FP93ROCudEeCrnescsoh3sqlQTgwnsRyUsCob0VzJKXDCUo0j4KZonZUIq8CGkVel/FEHEdO0J0P6XJeM6jdZ4TrYEPERtP09Hi/ZXmeDLnADQRV4Z4wrz7HqjoNg7bu+IQ+UGKIeWWzzsH/YMVi0oQ1/b7cJCg24Px5yEKOXvRfA9VqkTL7fswIeQRfbgQktv5ESTkCKEjSSjbGY4i0/DrFw1H8Dk5WinDdKnrOUsje+YYpQDUTL93rFJavvNvINPjgX2conD4zx044nO8Ul3p+c7vXBsuaG/jRTA3OEFp+hlg5XgwWOXzz9GJijG0R50dVi9dyTWMXb83d5JSiaVQ4mSlPDUcrQz/jNQpSsNjO7lwxWQAd3xdXPQK505VynC2sDuNy7enKfoACjF0YTMFmubpioLIkM30z1DKGMZxVf9MpbDGZt0ddvjjWYoCoaXb/i5YdzahU1PbnaMU41DnXKXseAyX7Feu3u48RROndelG2fmKAe0HdfMhJvMC/wLFEhAdZReMC5W/TBi8YHlHhroPs0IXKZVEaBwOLlZqCRlg0/R55i9R4kP5lyoFDIwHl8XQ4HKl4MHxfje8QilwOljnhlcChqGrAEPu1YqevZvYv0ZR5XvE/WuVcnqNr3+dooqbe/iZuj6RDlD6hoQeI32jssmI/7lJke443qwkdxxvySi/VSnDukZ8sfE2pcwHLYK6XcldGbwjZ8mdisZbx+xK6EPbuHwEfpdSBmAHez1vVOxupQTUcucfxiy6R6kkstv5zr0K3Znq36cYv99mJ6wS0R3vV6ozYzde1+WOrtddv3TZA4qJi3My9qDSoCqcxocUegF4H9vzH1LqcO8iDz+s1PnBFR8cER+p45wTzHxEqcLJoi7rw/1Aj7mg+lEFjzCL1NhjSh3b3/qQl20XF2eAflwx83DvCcWCHAUD7pUil7ZveLsNRk8qOgoHYw4j8pRSSomnlSY3E8eZ9IQAjMPBm7JnFBpFxptNz2ICcM4il8BzSnU5Z2TB55XqinngC4qWAJiRF5UFPDRyX1LKoeuMe3D8yXFfVhTerqgCX1EULKb1Q89/VSlhGIvrNUWHoiJPOuLtLXhdUQDB8BtK1Q+w2MnLQk9ibyq1aZdF3TXcgQxtH66v8tTeUkqpyNskktY33qp5R9EQABGUfVepkBLKxnsK3xQOAgb9nK7c+NzXvK9oieKuz73hB4ouAcF2Uys+VBo5hGcoGHY+mowv/VixyM+4sNzdRRcJ5el+ojQEAw6AJReePlU0gVOePouBGQF8rjSFBDQRSecXyAHRPOdLKbVp3Hj7/XS4sz3zVYzP5PCvFTXBYQX8G8mqaVD4rbBKAN8ptURCVONw9L3SnoCSQ/0hjjGT4f2IMfIoxfhJKkzuf9zQgxGEPfjTz1lG12cjNheNfXeXEjFm8oxdS5UkBu8ku8XkDJG7lzSZ2/3zHjEwI4A9S/WsxJh76Ghur9LmGXjo8gY3TR/O7trpEds7FpjZkMA+pTQrQ5txTzxjY7/aV2Qlz9ivtHhyDCq0/WP2zGT2ASUjic0HD9HcyD2wZMoQX9mbdQ+KsRkJOzgrh5+vQyQ5gR1aWpTIcTdh2zzkMy/yZnmJHRYzZyYxDy+lzRY3lVas2Ql80RExPpPDj5Qyw/rYW46SSgczjIdZeYi73UE4PFqUzmT2MZLpeTY7Vpg+iXlcyRBMMXI4XqpBMbTAM64nlKqCge4Rd8JOLG0hksZxvxju4eWtIazknCS10iHre+tPFq1UAKeUKvRq0Sh04YBtySDSng5j6DQBzSbQ6SWl349zdEapCGH4Sp5ZohsznD6r9D/yrYyzS+b2S3l34o60a/v2AFScU1rM/+VgN9577e4wlZYKO7e0CC6du2EER3MjDz4rHeG5zyupPCJ4GzoteX6pAn/AO8Io44KShiRbSkcz2IUlA1a1fm17/nKe/Bzz2EUlDYP/6E6h62MXl0p07uRP44F7SanCV8529qKBC5EuLZWGTi+CecKyX11W0ujCFZDTtu9cTk1MDDiGo6VUNVeUFnmsCyzxFBRuG9My0pWlxYIp9kBl9lVxm8B80Nmhq0vVAC5pj4ext4Yx+zWlqpw2DZ+vLW06H+xGLo/Efcd1FIWW2DyfuNeXWvOj0JDshtJmE1ie67rEv7G09SR+cgvJkWRvAp82WReNB28u/e3GlcnCt5SsycK35pPJa7mt9JcbF4Dw7SVTFsINwztKJcRw/fDOkpJU0l0ls0vrfem1zLtLRYHdU1qAgXtL5eWOw7+cOGq9r1SCdkkf0vtLcLBoew5zAtm/wUn6AyXt70cwqd1hzLzeip1WPCg5BwhAT8cG91BJ/yP32TiFp9HKw6UKl0LmNIxLS/+efPt6iiAyzp0ID8+l49ro0ZLOUyJvQmsFj5VM0VGxJEDf4yUdw10gotC1h0+U6g4ogPKDvt7zBgM+vXuyVOQxQarzVEmDh5xwM5qnGblPlwyafKdanimVf4NDMCz5Z0t1MSADMqRR35LnSmVswpSH50s4bMZBFSnprnuBY+QIZ1w/dLtwXfjFUjnGQPylksEpfjUCTOKdw/OXvFzi05dg7Xj0a4jzCgqAOK8bUvNqqeQx7jTc7W1/5rUMPwKH8bpIFSHwXSx6IyNmD6bHwzdLugTNuXb4VqkqIbywYcjydiYm7PCtfUf6BpD1nP1uSUuHzPbI672X6KdPwmzn/Vy8JRDvg7zYkg9LNY50qRA4Tbn+CFFBdfkQ1Bm44celIsjyocLok1IdgqMwgCk9T44kPy0p44G9Dkv7s5KBYVx6hFDH+Xwe1P9iHuR9OQ9iX5VMhMRSMRBfZ7A+Yt9kMA+xbzMYQ+w73kJ7QzTz+5IKwfi0Q8f5IUv3f8zS3k9Zmv1c0hJ64HodZ5dyFujvmgO83XIA210CpkHHHjmgv2cO8PbKAWzvDMA6zj45oL9vDvD2ywFs/wwQdZwDckD/wBzgHZQD2MFy5kDHITmgf2gO8A7LAezwclrGY14nR2Tp/pFZ2jsqS7OjZYVQFsfkgP6xOcA7Lgew4wkQLY71TpCBPgdOlAGPAyfJAOPAyWVd1sHr+hQZ6QNyqox4gJwmIwyQ07N6eH2fkdEDyJkZPYCcldEDyNl5PeycvB52bl4POy+vh52f1xNdkNcTXZjXE12U1xNdnC+f6JJ8+USX5ssnuixfPtHl2boa966QgT4HrpQBjwNXyQDjwNV5W9g1eVvYtXlb2HV5W9j1ZR0ah7RQe0O5hAgSN5Z1J8u+qVxyEvbNEHsss2+B2OOYfSvEzrBvg9iCfXvZwDqU+HeUywgRdWfZcHICd5XLCBF1N2mIJIF7SENE1L2kQRa4DzUIgftJgycJPEAaPKIeJA2ywEOoQQg8DBoGGSMfAQ0AIfUoaMgKPAYaEoHHSYNs5BOoQRj5JGmQBZ5CDULgadIgG/kMahBGPksaZIHnUIMQeL6s2OJT+ELZsJMvmo2fwhfnQf2X5kHey/Mg9krZtOVPIRCvZrA+Yq9lMA+x1zMYQ+yNsj7zXztLu0t+Keaeb6aI4yLyVox0lgmZtxNEyLxTrnBkiRB4l0jBfS+WX/YLIfB+ggiZD8oGR9ZjZuPrAh8SRAYT9FHZRIgi0RLtx4ShaoF9Uoazno6HT2nAQvan5QV9uHr9mcwYBXzdrKywyB3huPiLclEs8X5ZLocujZHHveir8sIxjsu/LiuYFr49QWEcgn9bLifWd53vZKr/vUx5P8gU+7HcwL2sfJ5+KlcAE/X8c4bs71KRSW/XDMl2q5SQxHnL7hWpDEn3HpWCPcadoz0rOg8Ri0b+e1WKHKFnMCvFkd1HuX0qBgRlwX0R6iyjfKDe/SoVCXL2z5D9AzKkd2CGZAdVVCRFhg/O0v1DsrR3aJZmh1XKRKPph1dKSGHVHFExkZCL4MgK7Lrw/x1V0aJ1AUxNugQcXTFgYcKVoGMqej8YhxJybEXlsdbZczF9XEXxPRZhWR1fMTEsF9YJlRJidA26UhFvG0VuLzqpUpsOA9vp2Vxg1g5p5/PkiplFmRudksdm+NpNRevZoRTxtEolAWDVRpAkfkYl3tAMQrGbemZFE2dgCDiLgJkEOLvSBoArpwV/Qmlmdk7FWmfPwvMecTUPI3qZ99xKVTCoJGbGnnNepSVAPmEQi9u4/nh+RRcsm9ZqLqg0BcJgHbSDNQfd9MKEI0ae6+NULxIJiFRT1sW5SFgsyLkkF0liXZpkDxaAEIIVGuZeVmnIcURhsstzqYxcey2puiKXisS6srJpzoAxr6EhMdlVFUNwvSG9AXB1RYeg5CqvQUT2lNdmo0FPuK6iQBBb4fWVhu31+8iTHc8NqZl51o2VEkDUu2+SiP7NEuHdIhHs1qw62UXfJizI4bdXyhwSjuAOmerfKVPeXTLF7q6oqE8U0j0SDbm/t1IXpgyZ7YgZ4H2VuiDlzN5f0QRMGX4gB/QfzAHeQzmAPVzRBRDn5pE80n80j3iP5RH2eKUiEMjIExVVkFiVT6Y5kMvxqcpf5vNL+mzHHsWvIrOn+beCDeMT9c9UikBAqTxLeIDvqj1X0X7NidWhG8/4n68UgGs7zgsYgs7xIkXG500o6Afh8OVYkoWviNDgVQrB2yYVAxRvv3pFV6zVvl7ZHKApXDjf2Q2HCae7Epds36iUtl++E542DEdvVv5yJXhDEo9A3BbifRCHTvlWZbON8t+ubJFLcgrO6Ltpmu9U/iqfDCMRWc+7lc03LvBepYnZhc1lTGe1GIm8X/kLmZO3AGN/QIW10+rtuttBNXPow0p7+eoVO8BJAHiNoRsPXtBNf5SKb+uS+McVBSC48hd+QhVMDebTSpkzQA5YnxHLQerzSpkIPPX6BVK/XPILeqirUiMq03O+EmimNX5dacYob5QZ+W8yHDnOtxWVOGJYlaX732dp74cszX6saESL7vdTDuj/nAO8XdQswHZVRY6h6+2mVoiKB1dqcd0vl+Fnfw/VgKD81d9TVQBCyb1UZWhHf4eie6smhmXZfdQSYii8r1pY76HofqrOQ7Lg/qqSOIID1CLnYpQDVV3yVbCSdVAe6R+cR7xD8gg7VDUkBFdPDpsH9Q+fB3lHzIPYkQBJk2qewFEZqA/Q0RnIA+iYDMQAOlY1M7ogheMyWB+x4zOYh9gJGYwhdqJatGdDLOOTVAOCciGfrCoAYcmeohaZ00HJU1UNPv74sccDu6epCvBQ7nTVEsMmGifQCYkgPENtAsN31+c5Z6qtZDRGBUf88dLOWRQJzqzInOHSztnq4jxH1nmOWked9qwYTNBwTFX5YRW6MAvbEOdJNNzhPV+tZugpOEFygWpkwB1990K1nkDwpmbAPHx5U4q+zRzcP/Zm/ItVLQHxEMElkr7lzixcerhUXTD01i/55WX4t/OLy+nvsivw79LOlSo+WYhfK3aVytdtyTVcrVo0YrV9xw6drj0T75xdo6rASOhr1ZIz56PDGY6uU4tAQPB6tWwP7F7sb25QK9thgB7VuVGtyuR2rGeP3JvUEoHwTM/N6iKMTlssM16PKw3Wei5OI29RGxOZt6qmlCYN025TS2Nf5Op2tTD2sTzuwBCUyJ0itOwuDEGp3K2asB2SfD52DjrL7lGtedgUvH1473zhX9w3D1vauT+nADBU8ACZjWUozH5QLUvYQ6oCFHIeVksYxk7xiFoBQnTbRzNk/7EM6T2eIdkTcRLkUZ6Uqf5TMuU9LVPsGTIGPeSzGdOpkJ9TVcRgPgfziuelWhEyL6htUYPw6eulnWzIXlS3xHFlz6ZemExjBvZcMI5go+UldfNEJOhPEHhZLQIPnMorqgFBsp0mEa9KEMQd2qPX1CpAqXeBO1av50FofG+oTQAnuJs3Sa3s6N5SVYCY0PC2WgYa9qN4x3pHVYDCmnxXNZPIws731EowAx1thhdbwN6XSDdgH6i1hJwJbX88cEcB+1A1E5S5oWcP/OAj1UiwEd/0ciP2saoDRLt72K4+QSGB4DMhn6qNJB69TTAeQl4+UzU4dIkrNpwT9j5Xq7K2YNbtef4XqglSvJphNkt3Dr9Em4Ug2eL5X8lJ047o17JGgrreNzKIZvHq/lZVEZzzqX98p2qCplx8r+oJQPubP0gi68Igcn9UTQGgWjy3rRoCE0n9jGJy+p6/i5bqwnMcu2pyZhDaTWvnoaRudtfq80qEJ7WH1pgHj7hVe2qFYLYLz6jvpeldcS9i7IPE3lqZu0OY5Aahw/bRWrzRBGs5NILjRUtw9IpPiOyrGcji8cRy3H5aezYIpz3WZXhdCdhiULq/ZsY8RLFQD9CaMgYFH3fwAydwyD0cpBVYEHJ77YM1KEiwmRo8CB2iVTMYXuo5VFMz4GE5IbTl8ESIyvYIzUhp2wHlR2oVAcFe7FFaWZC2M3u0YJL8MYk6dGHs2CRN9ATUhI7jpT87EmdRQOfxGQSOhp+gVbqzXnfE5pA8EcgRkmDSSZrJbR3DRMt3u3iyi52sKUPPJ+IUTbejyPXHdhSzT9VUoQDzfRrReMoTlnhO12pw6pyA7pq56dBzhqMzMFlMBYTO1ErMddHvMfcsrcp54vlEOKjPP39nawaA9nA0tHHR1J47R9sMIL4iNRoksyAXJ6B49+JcTYdEJeQ8baE9gto+X1PwuA9k+QKthGG0/kJNRQLuJa6zQ+cizSAa363pDzyXXazpBHm8G+AM7BLNzAjN8WX0S7UKYv0gBD2XoR5Z5FeXa2Z3Fi+IuINg5NILfVpVxsimK7VaBmQc6625SisAygvk6pyiIS/ua3KK8D3ka7Wa6AR4yJDSvE6r51BM9XrNysH848Cdi3OD1swxbMehpSJtUY6DLpL8xE1axQn7SYHcrC10QtvpL7slDnRujQMzt2kKSuIj5VoJw2jSHYmlg1EPj9TiB/FOrSrB8Tr/XVAAhNJZLugmd2t1AdJBN2Ldk7gSzAYmfC8UugziOut9WiOLht4InsC8X6vKMJn7QGKuWH2gQRS0ZIfxKrG5qQg9pBmxpMNGFPlhzcpHpj7+iNbIM/Br8ahmQd5duCM+CgY2fu0HI36sR2vlI6CR3J8/LljSukXo4s+jPaE18iw09cl8FKHO85/SmvNYfAbG03l6vjJ0as9o1nz/Ds3lWUglz6DvyXNJUSNI7v35LEie/QVtEQXoS+Vw2Sici1/YfBFSyMeYZdCWX8J85FnAeXkyh7nRKxPVYaRXk143YODxyG2+pqn42zi/iLP1umbENN7mwVPwWpkg9ORvZgUAekvTCRJLQUveziOdd7QSIku6fS96V9PsXm88xBdPAHhPK/bxoW7ffV9bOIJLf3/6QNNEY9wGneqHWiV0fZgD4LXtjzSLNNJpulEglH0cZ0nsB36ilYnG8v804VKGP9MWeDAl+1wzCE8z/oWIiLn8MisA0FeaTlCS8a/zSOcbTeNNWSrObwUgtHynKQCgdd9rCz3c2vhBKyNIRv5IIij+ExQDS0r2Z63U/cWSmNhFB94S4dx21YEXE7vpJeT1BjZju5OgULIH8jrE2xN5HaFkLyKF6N66OuROi49ayeJ9dD2hydh99apA0lzvpxsCFIr3TyGh/ABdtFE6lEbO90C9mkWhOR+kW/NBmN0crNdzjD/DG2yH6CXOjG+hHJqXIWd3mN4gGE3uJls+h+uGjINNR+imDNHTxjofcqBDoSnKUXo7725o5sOZR+viE4ClKOw4Rte4Chy9kY5jhQ7hNYUK7s6OS8yFwks3x47X9VycE/QWIWKeiYMrzMiJ+qIMC0ZQnEsSJ+mLs0wxUCL2yfqmWTYWr+8Q95R8orjnhKxT9c2yLBwgwUPwxD9N18l/cSODEG4Lna43J+QAjnefoVdnhL3J0eMz85YhG/6NYJNRt7JcKAjQdbZu5GvsHCofGaLDkYE/mDs3sYoGF2mTOU/HeVXMxQeTEpPEW9DyzPQCXY25tOJwYZbuX5SlvYuzNLtErxBNE+ZLRUfKTLgv07UM6lyeA/pX5ADvyhzArkoal1jCuFqIiJn7NXqZAFwFuTa1FI/vX6dXZcvphPn1SRS4+npDGoUOficphHQe+ya9nrUKlbCbk0II4abULXpp5fbLV3RhEv6rW/VyQiz55W36IokSk3WcGi7t3K7XkInDRyw4aIF36FYepQd579TreQa4vbvmw9DM7tYbeRidxz36v8vjyTFbnD+LHfB79aV5Qfr9Hfim2328kWczvF7tp9Hv07ecHwsSAIJK4X5987zITEbgAX2rvABWus/GQ9fB9tDFH+R1nQf1/5gThRDrDlwaekvC4PYe0reelDS+iU4Rx75I52G9PamgBt7Qix7RF+d59OoZsR/Vt8izEQch24O3SR7LF5OQoOuu0Eoen68Eiyjkh5vGeJX7CX3THA/nCL2BB1+aJ/PFLMXH6E/9Ewn8ctnTG1MBAs/kylMIkH08S1E0gFmZ49n+s/OzDKesqdj9AKr+Of0/TxaZE0daRL3HEZ6nCPn0NxzhBf2vJhvs2+Ec/5eh8Iv5PiLy7fXcLomQ9pfyeRLqov6v4kJ4eeMiUIqv6H9BInRrIPYyXZqxxtdnXgU1koz4AIAEbEzDj/Dpf7kxNST0uqh0EkLPSddAPeg1M/bgDX3TDUjASsKbehUAHBl3xcOub0E1SFHIOcZDDTENsYdpGm/r/+WfjIAXnZIY7+hFKLEB9zXvYqPbeGQR7T1swUKWnmFY47pRIvC+vllGYOT1onGYpvuB/scMX9w2waaQ3OPqBiG542Ao1Qz2aNdBeRitJEfySPxD/Vf/WtUf6cvlqJhpuDlCO+DdoRutCZxUh0tNF1xoxEUZ/WCivs2/SQd+TT7Rf/NvUSJeFYE8fSpqAsYzYhfGxvvddNcCW+5kfp8LsDWf63+zIQlw3eJBEPYFNorJcriC8+VGBPBr9hU2+MkC9B3Dt75wgdSG9wy+1lWKsMO2fwc7k9/oWkKvhJ/E/FavJsDO8JvYUKDf6bUEXJ5MZL/XF/bxpYgfeAAelAp+FP5qyD9C4Ryt3QjPR86eDuz+tHFBcEYk+LP+7zciOJYkdzG23oik8Kgku6vxNxuWhYIbkNxuRoPZfViBQwGe7W4nGHVHuxvCw3nrXSe5Zol34JPOtYeBpm9ciK+EOe6expJ/WjL5cjPPGduDvYz/+i+O0126lDv/vY3Fk2IKoX2Mv9gYGw3eF7O2cRlKbD9jkSQJEtws+nbZg/2NLTbMRCUHQEVtVIKSOdBYgD+GfJCxcICBg410MIrPbTDYJekcYjQQxhVLWoTEpcxDhZk5HJM4zNhsMhPdiT04nEqM+KIsxK87ugMcxB4xQYaHM7+WfyQVB8mIZfWMxFHGL1KJfKmTa/5zTunRxt/9S6Ngpo8x/o9/abxcazvW2O7fqIHq9jjq2KgHv0vUvPGbNO1y9xSvsnenR+x4UY9CVqgC5glGK2HmmtKJchVPaGUnGX+1UT5ZerKxdH6O3fXgjV2HxpfcBac20cDoFGNxPhb1Y/riniqspt0/8vI0QzvN2HQii6Zpp2+AS9+oM4wtJ3JxZYCwM42GRKWXqc8ytOy35Wwq9bwu+kSdY/yniUzOgs+yDT0JJEeB74AjPtfYfKI8nZC2I/c8499tUCAKoqRc2fnGVhsUFAvU8YmaCybngL7CF4rKzzHFhUz67amLDA3PJyR5utgo42yUdoMvMcpYaARdikUoCV9mGPCWkufE5xd5e7ncWJyRyY0vrzCaWXYypLzSsLIcMZa8yjDE+2fiF4GvNuogC4Nysowc7TVGNQtD27zWWEyrD3SgnhhRIOZ51xmdjRbTGN4EhjkYHNIQtl1PX9J8JBzsw0viwYD3hhuMeqbBgcr1c90bjS0QFv1p/vDuJiNd2EDTsdvcbFh5lHrMLUY9z4CFjVtzsDhLZDTyMA5Fbze2yOPQ4jBI6wp3GLrEC/nn5E7R/iQ82V2+i3qEzAxdnhJzY4G7cwL5FH91z3yTPJZZv7jXWJyXoOhwm8dl9wlvkWNLiwD3Q2/buEjXD/DgyAOyOXlRlHxw4+nBqO+hjSoBiYeN/7xxJfmVgUc2kKo0jX/U+OuJIrmJ+2NigJQXmzdzf1wMDPKS0tT9iY3LYGafNLbOy0DV8T6B62SUAxgZcTOfMqQZjuvPm+E8jUWb58sznGcwtckS4jEl0cWfFWO4vGxuNvSc8V82KEfZzU9mnjcazMO1heRgEl0BNKw8Tl3zRaOZZ8Rv3rxklPp8BZUmTS9PEGMo9oqhxcuoozFuhLwqvs62IzlcrNnXhJtBR4kCtCr9uvgwo3cVPLz9ZvvRG6gxz0W3/KaxOYQ37O/egiTzccF3vz0pSdhFmbYjb/iOUejy9JnTfxdCzPOd/ntGuQvLhN2RF3T67xubcH7/g9jliVHwNDeAO87oQ2PRRLwLR/E+ykca8Coc2v7HYjCbw3mkMPRYdxke7P+fOs40Pm82CKbdT4yaHAXKzHfZp0Y9g/YHNvwa+WdGNQPj7418npNdYw+H/PP9hWHmYN//MpeptbbHYFnXZcwdfJXT44+jiLfOrw1LhvGH0W0YHXyTK4Qo9BD/NmdkNF7rzn2XTVnMM4j5vahKweQrxWv415y4P+T0rXMHvTU/5oaQrp8MIX8y/nYiC5q7+PUIfIfOnXUHP2PSeWHx9dzFnMwlj7GrqeOPi4hvFuvuZmpiaEBNcnfToH2JtCPtYW6Z15kfpe5pTh6l7mVuwa0X4+mkq9D2JRsPWXdvs8F7gNefyy2V7GNahOfdzr5mmxipgQlvvyQSLomkjP1NA9WAY6asdw8wTZHzpD8eaKrQJRP6IPMvNlgx4pm6g82tNiiTzDZoMHyI+dcbEpXXZw/diJg9Cpz4tsthGzFOFM3hGzBO5Fx6EugIcxEOnXHSk19wPNIs0yPBzIUftjHbpDWpgWD6H3gng7Z8tLlIjIGlLceB68/w+f8xpopv2sz2aGH2WJGFvCJqzF2AjjMXb0zmeLOVHZJD9kn7CebSyTGzEeIeEZPsRLPzz4nl+fjDPTF50j8vEr21KyKdbP7v/3QkkRmcquOyOS2Fj2wvPOWfl0GoVknLqabCnTP9rM9pZoP1u0Bmu9/pCU6TAIGfIXB62T7BzzSbAqeqTjhnmXXBcYN+Ap9tWgLO9u9zkhQwVwl+bhIh17fPM1VC48PG55sm0vIW9AVmqZ8c0L+QIiQ7yReZSpLRi80KhMWe8iWmkZYNhDrOpfOg/mXzIO/yeRC7ImOX0wHiygzWR+yqDOYhdnUGY4hdYy5KCsTPl+K1ZltiZuvwOpmXq8frTS2xG589vcGsklm/kt59uNFUBYj0TWaN6CW/lKRuNjWBEnCLEOssk8RuJTFEEbjNrDrzkrzdVAWI9B1mzZmf5J2mJlAC7kKxfJJ3CzGR5D1xdcWfBvBR95oqkxO8z9RYRvX9AhBKHjBVT47xoKl5mRgPCUDEeNjEo/fUSLyQRTjMfcSsiuPreKUBwUdNTYD02wyPIUDVjhKPyxJQqU+Y8jH2RNOTpiXBdHgKGU+ZbaEA9/IRjBf3njY3lSJB+sSl07jPmJsDV0K6vfinSJwuzj7MIgiAx3nOVCCIPfF5Uwn78WXCF8wahHPXPV6ch4KvfslsATrpwsfLpoksufe/YmqIMaHkVbMCgOjlr5klJNGm181itH4dmvSGWQzXdzD4pqn5Q9ZNr1C/ZRoCEBcA354H9d+ZB3nvzoPYe6aZQMI9vD8f638wH/M+nI+xj0w9wShTH8vmQ+19YtYTQHrO4lNzEd7bQ1b+cvVnsuU0RvzcrA9H7kx3sDQzKPzC/MssLHKFx2i6DG+YfWn+xUQhPHsTy3xlbjFRxvOFxNeTteCbnULmG3PLjZkzDPzg23xCsjEo8Z252QZNAf73eQ2yISjxg9nIFxZWzo9mK4+LT9NPZjvPSt5n+dlcnOfJj6PuUt00x4b2L17n3bWaLRKx1CUOu3Nkt/kiLCeye7W96nc7L+ksxTsuYjk3ol9+qlZintPjKyN7Vi0i6UBbd0kULME9vr2qm05mYJntXV20IW6H7VMt0x4AvhK4b7VOovRaBYxFgbFf1RB2BHAbzQ2X7C/MxsYagx3eWLj3P2AyD/N04DxVnYNEojR7EqVzcNXMwPCU6SEJli5BH1pVsdCEpzqsqnIN4uvrzxxehV+q4xA7olql2FgJowAH7kcKMN2xGPWPggLN5WApn3d7/ihY1zm62prPpawfI9fY0l8eOy+3S4+rNletWpW+v93t27DBybqd4zfEWXJCtQEcx0320mimc2J1AU9mSeekaom353hicXJVFWm6fV4yp1T1hO7hMeFTRYPAcqBG0R/7uBHFTsvVBqwPBaPo9KqWaoF7V2dUTYpJ/gFXss4UiimuWJqnkwxnVSu8D+CUD856n10t9OwRhM6pasPRDMYaRrhxUi2nQOe8qioo1HO+KH3pZFfMukCkL1bfKXN03+nCapOYRHajQGyvXFRtEAcMRjdNIhfzvrHOHsVrqpckrRpOuYvJH412Lq3WpEZkxy/2XJa01mm8VQIney6vViUsCAbwLb5CFoT1PX88ujJpOn0XTrzwPnpVdSHn245zdbXCA/BjGKjiGlHD9LMe07ZzLdoqEDHkoAc5r6sWuQQ23eurCgTR2BuqFQjD2iF0nRurKpDQpbpA31TVBE2blDcTkJwmY7dUawCAsOjIgTN3K4nBuJjEbkMAP6Akdjvag0PoO6olCNKhyDurlXhBlR7PrZZGA94BMYG7OREwbz0S91TLRAzwuZaqRnIiJ/dVK5R/yuf9VXPG9d3Q66WZe6BalTHK4INVk+JJeXyo2hSCuXw+LKSlrD4iMCm3j1YrQgPk+LGqSiJxph+vKljdkOMnKIwpPVnVISyZ8hQhUnJPEyIl9kxVp/bJUd5DuGd5tmomiCig56qmvGOGe53PJ12CWOKN6ReqVr6Hk74X804cUfYS9cg8TIm8nEsEG3QU9F6pVmWchF/NfQ7c9V70WrWZs9Jx1+NU/fV59rMOt5W9kdMC2JvVzSVM7HMji/zDW7lIUAlv5xLgFmLBv5N636AbztrvCl9GPxRRLREFX9b3BQEF+0FVTQl72PmwWiGaWu1HVY3XHg7WKcGPhV74VvifVI2Y4lLkCz8VAtjOPqvWM55RjD2rVRIiP0EO4ovq4hiUfwfMDWP2l1VDDFLWuGTMVyItlPw6yQrJfSOygiuWnW+FMJbXd4kwrXl8LwoFxh0/JExap/qx2ohp6uLQdWAd46dqAX4tujea+7lq4oBLPgSwS00TGBXmrjUjAeKfSt6tZsoQepLday2B0S9oUWYhE3tI4mKcuWdNTTCIvldNT2ia3OydR/r75BFv3zzC9qu15SxlbvzvX9ssw8uPPw+oKcjHuzhkc2ZWdxDxsfYPrlUgLCZ0h9SK8K4OcA6tVSGYnVUelgfxuk2tCeCEOeURNRU4TIgfWTOAlo05qlbmkEj/6JqCFFTYMTXFWTdLr2IeW6tgmGI6x2XI/vEZ0jshQ7ITayqSospOIr1YXSfXShimx1tqZSSo3k6Vqf5pMuWdLlPsjJqBFNUHltOZMeT6CXRWrSFLDQKbztScXVPg+Qcs83NqJQyjOefWakDkauC8PIpVcH6tBeikOrigZiJLLvQLaxpiScVcVKsAIKrh4lo1jSOa3SW1KryOFqz1pNn8pbVFEph7Fu2yPFOeFF9e02aD9ZKqK2plDogqvlKm+lfJlHe1TLFraiWgqNaulYj+dRLhXS8R7IZauRckruFGNEWazd9UK4Y2LWXcXCuy2fUYvKVmQFAuyFtrCkCo5bZayePD8SHK3l6rEiFL31ErI0jyd9aKs0EPpe+qGRCUZe+uKQCh5D3cBoeh5L01A4Ky5H01DaAOtG/Mw/01PQFI8gESWZqIPEgiCJDIQySyLBF5mEQQIJFHaiVAqKAflYj+YxLhPS4R7IlaObXXeVKm+k/JlPe0TLFnahWgRJ99FksAu+xzNQWCtAzG3dWsS6tgNQOCcsG8WFMAQsmXakVnnYOSL9fgdS1aO3ulZmJYjvZqrYQYxnutVhzNUud8vWZAUBZ9o6YAhJJv1oprorUo+VbNgKAs+XZNAQgl3+EJjHodkn23ViVCln6vVkaQ5N+vbSoeixJ3CWh7H2+eflBrTOR+WFuUw4f2PwQhRfqoVp/E/Li2OK9rPA3zPor1Sc2azP60Vssx4Hv5GaK4lyUOG/IzjZ/X2gIFEqZ+yY7gF7Wq0JNG+LLWEmBe/ivuh71oTfzJ/7qmxxQ1RD/6pmbKCK4ofVszCEuXob6rVWWI5L7Pgbig9UOtJkBpIezHWoFRG/mppiQ/IvxzLf3JYThfvktd5ySVD71As2vdhK2l0GXBOOy5wFu7W71BIrRvxf2568MW9u71SjLv5Wr3qJcS3c6e9aJIdK96mQfFEGlvkBJOfZ86WAldaN+6mnnEdb+6xmkooj5lc/8EiHN4ANou5/nAuiGQfgwdVIffFIGfPA36jj13cL0+7+eeeRYOqU/+FehD65tAJR5Wh8Mc4IQPr9dpAEa/Pi0uzR5R1wjYDnK4A5s5UgA7wC9Gzri/P6reoIjMd6DgRcyj603C+ZjT810ac7sRZx4jVEzNscgdToXH1o38z9YfV68mP0a+o/iN7OPrFQJX4JuYJ9TLRO4Ek5cT6wtwEnNSXfxKPM1sYzvF75ifXDfx2nUwShcBT6nXKMpy3Pek9NipdSVW5Lmn1RuJhfjT/uEULm6eXq8NPcfrOu4s/qwJ/Z7KGXV9W/i7A2et8uFHws+sqwkCz7WdVTcSesdxBCJn17UEwifZzqmrmZ81P1eUEvxwPZXxeWQ4QstXr4rR8+tmgv4mYNG2dmRfILCpFLuwrq4duSEfxwQO/AD7RXUd1kelzfaLRQn/yXMHziX1Msmj9KV1My7DFLus3iR5fKcOfjRxVXzC4nJRn6vdEHrcb9lwxK6oq5m2dGW9lhGi5+iuAikJvRpVUfZ+x5sU/+uza+olAuFX5K+tb5pIrBiHoetDnYlfmLqOMoXcqfB6ifpteENdSyg08ca6nibWW+MP2E31eg5ZBRcxb5Zi/sLZZuXULfVWAqAE5WaKN+5b6+2ExWs/w7uNckvWjTz/dlEmU0RTJu4QZuGP+AN+Z9KGHSeVu6uuSdqCcXS3sF4AJHePiC0swpK9t16Vs0DgffUtMi1pFcSH/XvXWQ5HfVfteH998w1J7LBq21WrdnxA0outBGrnQWHZKobYateH21gP1RuJMhl/WNSxwHfEl4im4GF4hz0imvtOuOSDAo9KrWJ+jMfqzUTfCgZs4TEelzI82ac8kWZYsKbQ1QuBJ+utvIBgPZXzp1NPiwbwBzv0uY5nhMC20MO4B36WBNAlc/L3zwkanqj9v4aj5+uNfGLbw4GsFwT+6yz+okjgty68MMjYS/XNhAKq9hU0ABAmvyxlFxtLXuAVkV0s5u1medULP/Bqfcs8a3l8cFuIvFaH1cU5/NqiO3293obhCIa7YUQHyumxLPZGvRJGIE7sN+u1rFgEvvotySFyzzSA5vZ2XQ3dXprIO3UtjAAJHQLe5QIRfuWJfq9eR5U5X/9+vZ0UxurYbFEOH0htaie0UnA+pBIiDpkhWB+RQmLFFgnex3I0Mk6wPqGCRRb2w23dWa/nbs8NFSKfSg0ZOuJ8ic+kJiKUAP9zyWtQTIS/EA1lu/VUdfDtwoECNf8v63+VJCiL0DdRJPpV/S/mSYnvpJD5uv7XG9C0Qi6EbyaLiU+sEPu2/pfzxcRnVwh9V/+bDenKpPl9fau8XL4chOgPVIzUsdivQ3u0xoYBbX1RWi/8A4wMEecnibktnyZnmD9LzN96g0GGuUtjkWSYF2WYuzaq84c8uzWsAAPYvnFnMsDzWLs3rEQVDgWEmj0kxk47Y5PZIXDGA3fPRi3T1gjdq5F+TQnZu2EK52U7qwdjPlRk+zTU+GmFAfbffRsVoFes/nsk92uk3zT0ifsLYCoGDhBKd4bi3R4XPQ9EIYHxqAeh6QLgUYX/ORjLTTBWBKM5XuWCeUijnWOu8gXv0Mbm4qMz4zGOcYc6Hdhp9z2ssVgIwLMLefbhjbTnr/QGrtxkjxDW/i6IvP6cYLvOkY10VMhLCFzbUY1NU3dn+04wnHJdZ2UYDIF7dCPtyzDg2LG/w59Wbr/zMZQ4RUKfFDp/z9wQBorHNpoSD7yc4BwnciSyvC0+yCisPl5YItg4UhfcE0SSGAkH/syNB98nNqQBCUIw9jhJQnfmM+GVQbg8nDlZ5EgMUzi2wo9OaTTmwaDkVAmnzxfJn9aw8jhFOF1u5HSXhtrUGY3NJjPiMcWZ1JJQI7iE+DP5O3zb7CyyOs88u9HMwLy+XYpwDtgtcX7v8nmbF82dmyoSVqwc2DPnSQ2Dj3Sg6s+XoNUroR+zC6RqX4UnNmCgRgleKHg03YrHDDRUvQiyJk1OMsyLRUfIoKLau53uJRsXWNK9VKroWIbX0GWiBFYHo5VeyATrcqlkZPwKkYEcvjyKwisbZjrSx/UWPtNolNPP37KrG5VknMUTvwZNypfUtZJH23G1HQ7ZdY1qgvzf9tptIMiul0p+Zw/r5wZJ307YAQC9URLkHw/G12BuykFuxG5umJkeDv37Fknftrhqwj2se2tDH6KjJZduO85tjZbk7DLe/PZGc0IW4Ut/B1R3fvomdNzZKMPqxhhu7LHwroaeUD7Oj+5Ga0WJUIHc06jGO88r0gnmvUJw2yBpC/c1Cj16Ruf+hhaH4vPJD6QAbWw92KgIAOb4DzUaMonnBmCL62HoMHynja2h6X/8ExuPQOoyzD86j6JGPM4MjMdAY06kyy9SPN7YLIvDkQw/ABYe0nwipxr4T8q6CENdT+Wtozd6nm5UMzCIsmfysvQ7y882all46IYz7nN5DVAozzcW50QzRfVCY9MsO8N9EdIRr9OhFBTISw3Yb2f2bLze9XJjk5E/Hr7SqEUQ2Q5nqC1ip3u1UeEA24kfu/FC13mtobDRwAPPy15vqFgxYq3mjUZhMDM99gbOm40Cj8SXQjtvNep4ajwIM9ei3m5o8D5xkGynvNMwOf/XOGf4vR16kJd3G9VYv5e09V+81yjhmdJgFK2P3m8YMMaWBT5otOJINAGRWB82qhGVjh/ZHjQ6vzv6qGHOS+TjhorFiAhP5pOGDsZHMLWwHTht8mnDhDbnkAi9OPFZY1EGY7BmG7+TyT5v6HTQP1H6RUOLESo99mXDoKJCEpeMv2qYtDg3FYGF2Eq+bhR4PDhJ801DIdN5ZXzbMGRJMP+7hoa5gBVpbBvfN8qogS5e/5B8PHhj8QbuzlxWOIwfG60Mb8ewJ1g/NQxcSVrNay12DT83yn0uBOXDsV2sJr5YyMsKbuzwlESWdrXaxIkf/KX1U+LtZhV4sQz47vXuFOIR97AUrC9eWYM9LU20tXEETXQvS8eN3iCAo0KA7G1V4Um89eKWE66a7WMt4qCQyjH3tSzazu/67owdebNuXF37WQa9aU5FBW1if0u0k1TJAVabsAkJHGgZMc/24ZzVWtc/yKpl+guhB1tWjNILfZEHp6an3cEhVlWkOBxFcyR9qNUiUGx6zARRQKzDrM2yRQQL6JJFh1u1OFNeP83XESJfkqYjJ5jkOVz4KMsiFXT9O9VytLWFx1Kyi1JYzmHsOI6xVNH5uV0D51gLv4boGnpd/MF2WFW2KvG9K6j5JcdbDXKuXCGeNKNOxU6wVBGDZ2bsn5gUNicoDydZSg8sCh3+0KNVorDPiVOsRdBw0nKh2qB+cqr1l3Krmix0mlWdEb92CVs+CJ5uNcgEwqH8ET/DquPmBm8GfgDl4yB8pqUhLOqKnWVpHkNq1g4BOdtSMxLnWDjpEno751otQZMLxR0SLLfzrIrkSTrnW23YUxnMJg0PInK1PO4FVtkJutP2WngU0r3QKnjMw7ssVgk3B1DfxVbRY9QoL7EW9wL4nkTp3bwo4AVF4UutBuqmZOjIMjjFy0RmPB9ze7mlpeq764eDK6yyZPKVlk7iSVleZVVkBVdDX4cw/ciWPQDwGktFUJTgtZaWzfd1Vj0LcLvtXnR9kidOp3kS+bvB0iXTYNJ9o2UiIiu5yTKEyTOMQx6LbrYKtuMAcIulYkjk5larGHPYbZYat3jSdruFh5ywsPEzfIdVI4FMt73TsgjN98S7LD1mrOclsR5WlK2y1Kfuserk8zJFx+61FNxa4M2+f59VofHbzgF8FO63tLSnwgnXByw9BXBj7UGKjU71IatMB5UwuYctQ0xDAAN9j1gL7CgYDB61lG7XY2zEG95jVhGvdHNtj1tqop1j65+wNktpetgr+Tn+CJZurVbKp5GiEHjKWiyx6IiJiMmlnrbqKRsL3fNdP3hGhlkCP2uVMI/oXZ6zFvBuY0fPW4W5uTHMXV8gNlXci1YZCeqYL1kLPBB52SqK7ZtXMIifm1etxtwc9sgR/y56wTj2o69ZVcLpFAsZ/rplprbFb4y/YWlcsG/DWylYG29aVioEW8Ei9luWwlsv5eBtqykJ0Y9wkNQ71qYSh63zot4aHifmvpspbqrpmPWetShljYJRprDfl43C83ox+wOrmq2FiGf3Q6uWrQN8kP0jEJWaBj04ZzUyoPhli09EuxF6e7TRJM68f5pPlw/h/M/kdGG87wH6uUCFqAdN4os8irJfyp0DLxB8hfWDbZWO0H1t6QDMDaeDASHfgAh8a+31VIXfWqW5OcelCxrfWUXOjcKB639vKXNzEXjUMPwBnPX0wPbX/ii6DDQhXgQ/WVZKU1lTS/zZqqeMtGnv0twshSd0sV2brZSf7WK7NRdLrHldbPemlGDaxfZo6imM2J7NQnzLdK8m9Za9m7lmvU9zckfZtzmho+zXhO+aONC/f7PKKa/vuH06PQye9oBmiYPjod0Lgz8f2FyUWpRvuwdxk9i2Xnhwc1NJSPQYIXVIk74Tjsv/eJDsoc1Gvh7wkPJhTbl+pA56eNNMGXH3PkIu/GyHO7LZlFhyHz5KtnReHz5aTl/ui8c0aykj6XbHNqspKrrdcXLepG53PLQlyhO+1CYGfayLBc1OaNbh05fyCD+xqYtoAQme1OTN2x7wFfiTKcR95SnNtKEznuipUkaY3NBPk9odSxv66VJDZxMa+hlSWbNsQz9TauhsfkM/S04wbehnSw2dIXZO0tDPjRv6ec2Fgd/dbseV5+db/AUbaPEXTmrxFzXFp+hiqfLZvGZ6idTSWb6lX9oseQyWVPliZ3jZvAZ9eVOl8T9Vmn1Fc+F04AxtduWkDnZVsyJLXy21GCb1hmvkSpR7w7VSb2Bxb7hOrqFsb7he6g0s0xtukAtkXm+4cX4jIsZNUm9gSW+4WeoNTPSGW+S8Sb3h1rRZM2rWtzULwQgP8d3eNIZz/UGEC1C0MHRHU7eZNyMhdzb1dVnkLl4rWeTupomtXsbuaRo42pSge5sNgmaSJ31waeK+ZpUOwi/nandwh9vgT/g21Vkbf+2QI0E490BTx8gp8mCzlpGgnbSHmmYGXcl1PtwsYVfCBB5plonYAfL+qGBtEwSDxwTxBy73uCBAwxPNChGUyJNCx3Iw6almjbJPa188ecjZ080q5VYGn2la6RmM+OcPYZuCPQvNCkLbwcCd/cHjWwT2ELc0noOOL21pAI+vUEEQ2M83m/kdD84FzgvNRpKYWNICiRebNXnVnrNW88y/JBr7ytAV2MtNg9cVJ6Zwrg9KX2nWc5FR76uiU6/0fJEYWgpxXgPVOUNeb7ZCVzyrIdKjKnuj2QxdXNHKc95smp44ACY4bzU1lKWa4XJvN3HxLKHfaTZRgNaKVuMPS9LZrHebBkjKjPeaOgqvhGN3WLvvN00QSgGu8oOmwWhjzHM80vVhkgpgtHFOnI+aFqWSZ3ws6mdqTTAeONvaPI8+V/tJU49xcDh/sJn3adOav7gOjM9EsQOxIndw5PPmVt3uOs7o/gPrbvz4yRdNHfw0WBjzv8QkKQrAQpJ91SwNkx36r5sVIGCjDzbjv2mWh+me+7dNQ24qYOJ3Imu4zQfI982mh4u7Lou4QTthYrgZ90MT1hsIgFb0Y7PKadpgx91PAH9qSge5AnileRBvk4Hyn7F4iEsZlpi7tDaBV+t3bSmzzMNRcH+3ltEFPzkYdGcZQbu3ioK7R0sX3Ji5Z6vYj5l7pcw+IXu3Cl28CdTZp6V26eSo4/Q5vW9L6cLrv0HkLduvVUJx2qduKY49JHd9QKvAwxA8sPU/8tBBLY0n4PbwzuQ/Br57MADREMjoH2FEfkirkkhwxqGQKnSiAeyJd8PDWkpCHQ7W+vCjlv4MvmA0OKJV7nZt1iPZI1uFOHxUawH+Pbq1kOelt845prWgz0Ps2FYVfDalEIwYDcpaFQDxs8Ir+PiWCiR5R06f0FJAyTh0vPDE1kI84eqd1CphABWc3FqAxCmtInG7U6e2Kim/O3VaqyyRpwsmfYnPaGlOD68MhMQ/s1UWAE//rFZRUGcnjA5nnJMwOue2Fg4GUCPn8bx4fCzhd+g1lpYqk90LWnVB2/jShOMCfmFLy4hNXdQqE4D0xUJLzL2ENy84rcZtuLRVioMcv6xV4A0XyMsTM/AY5RWtlkx2Iek1YeAHY3Zlq51h2RLvqlZV8GaSN5quTrOA6+ejAGqxd01L4YYEY6jBaym8BIy6rqWDTcCJM3t9q0ySaPMNraLg39hSRJDd1Fo0qaDip1UgO3m7iHULxctbR8xbW5tvqBhI4LbWFrnCyEvcnuY+tae76o5WdT5850TZqbtaNYIzGu6ehE7dQ3qFQQTf21qIvX/2vlah77ARL8f7KTTgz7C0FhL0YKuwlqCHAILAw62F/T4U+yPE48SjrQVOl/99DGQAeLxVhN/zAU/7RKtAwejJVm828Jwtt/pbFjn/8//c7Xb+5/95K9sP/LkhL5ktwY/ggtjWwBt4073RqGtHwdCj9av/NY689VZb/+9bxeEtcRoF0H/ckudlax54qmWhepoirIsvLYZbbf10a1MafQbhlpyxlXjhckt4JGDrZ1pWwqUOjWn87dbPtv7ThqP9xy0xLXx6FEaa3Wjr51pbTVQ0QfT51l/FJRGtCfGxQbFOCobTtvFWW7/Q0lcHAzvswOnA7urf77jixVZ5JxdWI1fDj12+1CqtDP+8c4DEy63CSpcP8Vf5r7Qqy+EXCn9jD/p/8PxXWxXb4auaK7ywx080vNaq4RbUikEIZ29i9PVW8e+3pUO3b7SKcNxrijf7N1vl1SH/hoajqZHbe6u1cOyDK327pax1hiPsf++k4dG7rRKEO8h4TyJG7xOxFDkfSMToQyKWIecjiRh93Fqw1hkPR5+0FvoY+LS1EP92PosDSz+PA8u+aBXXhg5G+zIJTn3VUniQzPk6DY++wTAZ820aHn2HYTLl+zQ8+oFbAg7/R7AEAj/xdOFv5+c4sHSXNgWW7dqGeAx17JaGR7vHAmyPNrwFJy7Y7tnWu0DSI2POjMv2aqvYOwc+3X7eu11BmtFvS+4DJLKR3DchsYPv19bjUYJYpt8/iY4CB7Qb7nA84/os+w09sF0ZeD7/3xIUO6itE8kb5RIUOLhdiOxpCB0i81D60HaR83Aj4DDSIyIe3taneWt2qG1D7CNkBGMf2a7IMke1yzx6L2DIPLpdWD+Hb2Ic01bjkEe3QdtFQR/XVoZR0Ef4+PYmED6hrSLElSJ8Yrso6JPaSp/7FvrytzeB8CltFSEhfWq7KOjT2gtHvTWcOL2tTI/6NPE9o70Qw2vPJBCr7ywKg+Vrz44FvHNS0Du3rfJw97fd31Li57XLCb02PL+tcYoLCuACEre7NolfCOJIA/ciIS6AixHoru2u/e1vUf6SdiUBOP9SjA45BGMva+sUPeFfDuKoHskrhECCXCnr88KrhECCXN02UABpsuEaMgohVHKtDECk69qb+Lx0r28X4Q8sXd6ANejfiIz+Te1ibzhCZTe3C8GoA5ebb2kvBNC2b40Da29razyATYja6+3tcgqsvUOmvDtTYfq03kVsAtbeLVPePW2dUx1J9b3tioSsvS9Deve34zUI3lkCMvyBdpEgvmfUViho+85D7QqGeTdfY4/ch9sl3ovYAB7B9R5pq4JAFY9KzLWPSUw+9l/7eLuAn+Wu90S7QiFYbQv8J9slJFHFU0Jq7dNtjccni5H1TLucAmuflSnvubaOIfQiKP28jGAvfQFzRfSLbSsn3/WDKPRmXkKGHC1mvNyuyDFewdJC4tW2mnJ4/34Nspcqfp1Ioe4N6MUuLmUg+822BodmenO9ARXiW20lAd5uKzBDGMGzvO+0NbGbTMuj77aLnEb+e+1KMpvbzp99v51eAKNzOxz8QMhMocyH7br4pSmubxZWYWCE81Fbl882c8GP22p6fYvTn/B2KZYFmMuBT9vSVBJfhlvNV5Dhs82Zn7U3YSuGo8/bDZJZQbu5IAHJfdG2EhzWNHz+f+CxL9uLY2vhSBNf4HfhraE50Ar8r9ptkabEDELgfd2upQsuOF+GKfE3bTNFAeiudL5t11OMjq0C5zthlDgpDKs1sDz0PTHEtB3Yv8Hh2w+onMwBFCfloiQBwFn/TxyBv9AdcODOfuZNH69RjLjduyxaPDnZ7nIYoe+6SE/vhyGy2yKDEDx7j9DuAlo55bprEdpjUc39M08t+yndc1GRryz8N7q+MjyRbGv3Sgcn1j1GUVVQRf5PSEbOz5HT585zx77h2FUekkCaDxL4INJz/oy7u7e7u7u7u7u7e98le1NA9x1Jrfdda2sVtW3tXSR+6HOjKE4M+sjn6MzyYONjn12Qn/hgPaa7nelPfTB33Iyb9umB/sznoln8bDTX9O+f+x6RutKW2wqD8EufLYGzuYmvfDSY7Qv5+9pnp0nc5o5vfHZoW9Od8EEYXzU0BnGYKaTOAAb9zuciitymvvdV5HNwB37w9cDLj75KovnLDpCrn3zuIuJnn7clU4R/8dleTEJnpuNXiBMnscIJSP43n4dskmz0u6+KYL4PTDynabMkG0imn6+SY5VEf5+XIxB4gM9BOYbuw0CfuzeK7Ok8yOf4cyf0/V/vkxzs84DXVlu8Nx+pNcRXSRmijz5gpob6HqU48vH/KK3YYT7dcjtlZ8IXyMOwb+/ef41gx2O4z19ugT11qR4hnxgr2EhfpfiZohF+ctSHk53ktf86r9DmR/t6NCXeCI+hS+NYn6MpAYsAUJnjfM5EArfedOby40l+/o2XsKH3icnYB3I5ER6gZv7W/BvhSb6KJEY8ma+NU3zOpIx6qs+VLMQ9zSdeS6Iw0329GJeWcYavpsTsFfCanenz0EdbX0zms/BznOXrWWISjqBytq+ylJ0jiRdf+CtZzPXVZBOQnygQMIcFueqIz/O5i9B8n7MQZIHPkczjKWiZloU+Wx96oBf5oLGj5aTFKNEs6RKfE4uYb4HMLZVl7P3X51C3jLOAmH02lvs8ksBX2Aofnx3FPmjttEN3pQzzF3EHV+HNbH+yHteO6GcKxzD4HETBFpk1vtpSc/QmXcv5kMm8vo6NELdnw0jBQ7HeV1VGbvBVlzHxjT4HlRKS2yS1L+V5J+qfX93ss16jktvi84jDm+lHtdVXAeTfXt7mq6Asb+dreAdfG3bytXEXX5/azden9/D1mb18fXYfX/+0n671Tx7ga/1BvoYP8bXhsM/WCpf6xiNMNB7l61PH+Pr0cb4+c4Kvz57k659O0TX85Gm+1p/ha8NZnx1XBqHhPcdM43m+PnWBr89c5Ouzl+ja8ORlvtZf4Wv4Kl8brvG18TpdG5+8wdf6m3wN3+Jrw22+Nt7h65/u0vWp+nt8Dd/na8PbyhN0pZMMxYeC8uw6mntHgVzHW+A+vKvUslUMR+/i9Pv3FA+/Lbkr9b5iTzL+QLHHWPpQobnM3gQ+UjzsYMvwY8WeYqtPFEfyXyx+qtjApx+cUj9TvM38sghncaLhc8WO36WEXvgXipeYsNB/qThiIvRXSo8XoPf5teJN4EyuzNk3iltieAV8q9gF+k5xdbd2Qi+rHujvFbsAP0g6DPSPkg7/pHjIReiv3Zn/Gc9lflYeERJGitcX8FNb+V8Uj+TBTTP1q+L8B+wLJ/k3xUHe2NHer/yukHcSSI2vZf9QPHB9Lt36FJn1U9wdnU1xcFtKQ8z9lSoyot8sRpUfoDikfqDiyPWBUQfYDVKc3Z3gkvImyIMVG8tDZMwNFPNQxd0Hdqm/CacK4Oyv4pBouLR7luxGKBVNDWAxUnH2iWFvveX5hlHS5GkyGa1U937l7xno5+ex/L3h6RmjuAQFxFjFLsA4GbCRAo5XPNCBaE7ABla0m6A4C3AiPFAZeFF0822bpNgS6W6wmQwC8VMUG/RagZlKAvyipil2gF2wPjxdsYEEwgzFwRMN+fqZCvS0OkVXfxY8BbK3Ho3MVrwS8WSt4ixo5wpL1s1TPMWW8y3D1AKlB/RZcguVCnKWW6R4ITXs43Gci5VKTN46YmOJ0pMIXguXR3MvVewi2LLSCJ5brvRC+1hZgBWWGc+aKpWpkoRXKd4SYrXikHiN4ilWrYXfZBFcp1QWw2huveIqELkNCizvUGEiGxW7EDcpNpY2K+Auz11dMcET2aJUlVFblcpSZhu+FKycb1fcRXAHpM4Iekg7Syyf28U6roPdDFi3B0pfHOdexVOM9yl2Afcr7iLFAYgjKmDkoOIsgEOKQ8qH+YbIKXt5Q44ovV57+TnekxW1duYdVVSLpjkoaFdpQ0MkBkZvHisORjOfvfHEj+NKT4vG1yexJ5QaixU99JPKo6RrKk/5lKIUK6AfJ1PGocVpRbe0D83ZGeUxYWHljZM+W5wkZ48V5xSDFSU55AMO2kkDY63zDzUi6qV2sgWjC0rPhxhdVJ5ISLZ8oHFJoZ0V+MEdwtHLireEuGJhGr5cVXCRPBvLw1Yl8nm5prihOWkS6LoCo3d0QebYbijuInhTIorpFjz1uKJXNFi5rTjBlaEP9VzuKA5wuSHxruLMwzIlyfcUPEeO5fsYHwTmtN72VxB6x29j9l2/nYXIe36HMIy8L8VI5AO/h0XaIpT80O+y4EclusjHIlRHW/YT/6M5scM0mqBsiBXDTzk82kQjn/ndFkh+XowiX2AGsVK/RCEPpfnKb2ch+jUkxFLkG9Ri0/UtalGIfgdaliLfQwbZMIU/wR9Qw/BHv1OKkZ8KAVI/I81i5Bc/emYn0GterLb6nQXiN39NQZaP0O9+b0lZ//C728iBhnae9/PD7Hwelxv79vfbU+iY3t53AOQ6lodAyYF+F0uY0UF+G4PBUp8aAplky+6hUkx1D5P67uF+J1yepIyO8DtAJnEk0fUkjyJZLK+S3EDyGJIbSR5L8lMkjyP5aZLHk/wMyRNIfpbkiST/ieRJfhemxXmYzIBTnsKAk57KgNOexoATn86AU59BACKLwgMxk5JheRZbMZhNIMxgDoEGBnMJNDKYR+ApBvMJPM1gAYFnGCwk8CyDRQT+xGCx381lI7SEkcjDUkYiE8sYiVwsZySysYKRyMdKUcIUglVUQpZXcwkZrOESMljLJWSwjkvIYD2XkMEGLiGDjVxCBpu4hAw2cwkZbBElZLSVkcjDNkYiE9sZiVzsYCSysZORyMcuv7M9DT6d+Ezv9leQvMfvjrWg73MY2b1+u0D7/HY83rY9072fsgUjcmo2/Q4BUgcpblyORcUhv1Oi1GE/7ARBX5PWeAvqjvidBXzUX1mQKcljSDxXZH3c77KIE/6e9A0jPnwt2dbZhiYn/VVl7Cm/C08Vi6dRfdpvY3DG722Fuwj/8+v2LOae24Rz/p6t0NmNlTYt5/2VxHbAq5uIC8UEhrsI4WDS9M2yJsnvIBYSv+y3pUi+4q9ly5YkTuA2daIL51W/LUbsNb+Trn0hyHV4ATG4AfXP0k2hbwb9Lalvvi31zXf8bvCiyUA2MqnO7F1/BR4T3nzPD14x6eaOHO56Q6+1+34PueFwduNvq06Ij+V3VBvOLWfb31XtIDSD9J7qkJ4/76uVWDAMyzPSH6i95EkUzeSBFiH6Q9U6OOtluGWdkL+PVDdv+IKtDtHcx6pTopZPVBfKnMSnrKBJws/UiiTugPtcrUjh9QvVlmxG4UvVliLhK2DaUfgaGBK+UW3gm4NjPBKgp/ad6sglczBxk2v/XrXlqNv2AwgU9Y9ohcJPakVHEgbnP0OafXAvnGrHEJlE4lfVIaTwb6pTipHfLTn1R8GkoR/TKEb6W3JqgOqAuwJDuGhyoOpkEZ6mQYJuhRNbkUYR6CEF6+xQyzo7rGCdHW5ZZ0eo7tZcTDpXjFThacJl3VHqfwVhtNqLlI2lD+cY1UU0Dp0axwoAT1FX4zjVAY7GbWHQjAexLdzQCOIEZhtAnMgispPUXihm2ksjn6w6mYawU1Qbj8ynqj2a4Ac4TX2sDwziYayULvu9TFddxHLTonoZiIZ7pvoIBcv9szTQLNXNfN8UPGyzVYdEc9QnUBQbeUsDzVW9qKNdjIjnqdUSy/Tmswl6YLM3MZsQFiYL1UoZilvNRWqNRQijxWoVcjmrI7pErbUYabZUfdwiSzO7DMrUla/Hd9hytQeKK4gJI7OSmPAqYhqQWU1MwxrV25VFz4t8vBXptaqzgNepTjDhp2W96gQXcZY3qA4pb1TdKIrcbVJdL/V+DvalvZlP5jfDUy3NtqgekoXdVtVJEWGvehvEwHup0f9xu+oRKI7HV+2AlGgPQnN8p+rpK34lUWhYdqku2KLYTZOF+d2qOw9DkxbQwW95j1qBsT+5V63FReKXcVcXeJ7yiWT7VBsnsF914dk5DA6o3hQe3i4TO6g6ZGKHVDqAAVceIO7DakVLHEaYR1RXEy7x9M3CK+MolrSN5WOqoxNihMep5bj6iLUVnd2YyRX3hOrM5HBGCuI5idlJQDKnVDE7WuhknlYrYL0pkz3DGvZgJc1Z1QNbVylazNo51VsMI+dVdxG+oLplhgBdVJ0S1V+y5PBl1daXfuRXVHtf9kq7SgVPob8sXK+pLowQfM+xzVE9AlCCN1Q7QvjvpuqQSd9SnVnhixy9rTqkfEd1FejIXdUjtgFQkHuqB+/CS+Im3Fd94uy0IlLuZX9bk19N4c+zvFOKw++W4ob3tEce+nGS97Va5IWtODD/A62CPn/yIV3rwx9pLmgI29jB82PNxuInGrSXb8LbB6dA0Xn0U60Km1XYdi2ZzzQPO5oy/Fyrpq8wJjA4fS2k/gvN0Y3fO4C6/BKMLW36K82ezOOmzuzXmkPS32i1NAaXZ7DRmuy3oKdlwmT7dxq5huYT32s14szQJG6YpzL/oLks7kfNyYHgbv+k2fNZvOuJn7UaGsHnE1FxOmz9079otWVcZ/3Tv2rVZeSzvz0QtvPZ3zW74P7QqkQaMjv9NHSQ7M7hCkd/zA1O9kDWBmguIYP5QATtIp+DNGcyg/0TnLik0FyYIZoXagMVfG7cUMLQ0exiPEzr9bDjIodr5YcVMT9C8+b4hAM+w3ik5o48B4nBw4PNJSXM8mjMHT40uAAxRnPT7m7u8oyFOsVbkWwfpznQuh3E8ZqzBVareOilebh/xIfkTtSqKHRzHsuE4iS4hYkybrLmfOOvL8PSDSQ+RXPgRihEUzX7G3+lKpumiR8NlVN4pMsfzXStMg3W+Gblcy9maB5CfApUdKbmLoKzNG+xMjK7BL8UnSMDM56rVZaoI/O0Kvk+FVHM1ypLmQVadZlJZKH2aBpOc8BZk9L2bZHmlQrCiy1MneslmgfswbmRG6mlmpMh1NQyzcbycs2FAnSCgV2h2QVYqT0CddecTPctTXKV1hNuG80hcP+A2NVar4ew0TXaIw+jI2u1niLyYn5dOUtlWK/1Emys2HiDJt3WNpYbcLhNcGMz3dic5jjVzZoTCVrF2KJVkLxVs9M1FtsmpdR2IaViOzRXIUTfnZqNQN9dWhWz3cDz2E9zFzF7NLlRBpqqFzI52E9I36Xdq8lzM1+npdR9mkdibBP3a24J4XyJA5byhXg2f1BCBC+/fkiTOzi68uRDijSe9nLYiqQ5mz9SFGVb/qhWxQhXWsLgfxo/pnmStGbNvczj0gB1YbQ6IdOJYF3j1CisqWZBexJqJguh+AsoAlC1n9bcBMKkOiMR6c4igsLxD+1c4Q6e15zM5zrbL2h2lpMXNU+RdfgSpiKMwpdFvA08PykRz04ias6KXto1zcbouuaFv81QKlbc0BwS39Qq8RrOQsebdLc0Z4G4rdnBCwz91+5oXprWampPkdVdzSHxPa023Zko6yrf15xAsvy2zjJm8B3dwRX+3+vf1V0Fk/B7BNgm/L5ejRu2cdUOykwHxH6g1xQdY8PLzB/q7qLdPR/p3hKLj/XqEvxCvuUTvVc59VdYCfpUd+MQP5OmHs9nukOiz3V7WxvdgS90G3TWWpLxL4FqJuorvYLOb/oa7EUP5hsQ421v/Dny579+q9PejubvdDvspkTpe7063QJqfHWHu6FBfOH5H/RK0d8R/I+6kw94j8fjP+nuXDovFPmf9Sp0lf7zP6N4eGNvoH7R3dku2mMebcu3/qoLpwRUR1BAm9+gZHHYycMvgd91JyN0StErSO6nu+gaRrK/bmMwQHeQ0JRtG6hX0ilRUXRqowlM3WURg3U3dkPAzQRVQ3S7QEN1seKPfWrpnzRMh4VjOL92uO7GvXDg1IK7nUZwmel42pF6Jfb6UebbP0qvQm/7jMWMFgXlmKWr1Jjy9NDpaazugZrBNJ7Hqflx+iMYOVan+DoVP1rj9Srk/4rpcKszgbOB8eAZTJ35iTp3s+SBtpSdSbobrcDdLw4d9sm6t4Da4bywKcUY3kdTi3GmuWNaMQZn3Ol6LWJ4wbwZQyePjkxnc58Zeg2Szbwdq5mmsWYyB0MnGHu3MTeLiyY+HmCFn82JZHGXbBM0bHM4y+I0uLnwPIijrbLzLDkyX3fArE+ahq+6B0XsVSJcqNsgw9A3XaTboUwdENlivaIrjn4ouh1KgbEv1R1Calqmu6QYTS7XHSRhU6vboQoQrdQdQmpapbtQZOPVlACCNbozKcSmtbqbZLZZp9uhq4VgvW6L8R4OoBJU9I26I0l10pHeBL9ZuIB6M0jMbRFqsN4KJIfeBhJz24Vhn/YdUIRWWTU7dbcFIrt0ZwHt1h1U/RD1Hqi+PpzeXt0uyH2gz/JN2K/bU03U4zigO1KCPKjTXsBkO81/6jYGhykFJo/oFSQf1Z0QH3PH9AqSj/N9hS0NyJ7QXfhLieKzlT+p1/wLBnWvgozOkLTv8pTuoZ/3C3wU42ndLkKf0b24cAK3nFu3sxbmiU6dz/opGJzXq0qJ+guQZclcRC28Diz1JYsRUV7Wqy2mnpu0EorbNb0qD2/KZiumayUM2lzXayhlDpsn7kYpx6tweu0DXP0t/slD8yX2Jd3W7fz8PHNHd7IA1nd1G8v35ONV33hfdwkJDN4O2AV4JyAswvXvBlxCAov32ALA+wFbEnP/zAcBB11B+2GggsSPAnbS1Td+HHCyANpPAjaWPxXqcP1nrKaoP0c1yl9AzFCI5me+BDsQIDtfsQTJfh2gosLDJLqM3wRk2Ru47N8GnOCHTd8be/a7gJ3lZ78PuAps4oeAQ9CJH6GgQv7JMql/+mdpAkPGgNviE7/K6EH+LeBMSvC7Fboh/IcM3RDux6GZT/SXoUEeQKEZDLRCP904SIZ+unEwh2Y+MUSGBnkohWYwLFBl5bAJHojG4QEvMwKPYAvOBTEjpYXAowKVyZIgo5mwLMYE3Dk+NRZ/p2MDdoHGBexiQmk8PCr0jRA0mBCwMZgIQq4DGrNJcBfJL6R9csDBUiIxJVDFIg53qcM+NeAuYqYFPEUoPB2SoDEDWs4I2BjMDFSlcE6KDVE1K+AuYmYHKlEQTVEaTmJgwmps5gZ6IoEtWBE7j82wueK2an6gujSi+sYFwoYOc8C34cIAeJ20U59kUaAHiov5VwNmSwI92nPZ9qVQipa4WDBaFrAxWB5w4LZm7G2s4Kc6Ci9I3nO0Ep6JTnCjhxpbFXC2RTE7UKWrwQ5kucUwnV7DSugMtmfWBmhMjXGuCzjxQt2N9YEaoFuilEAbD6o3BB4t8q4u2ly9MWDHNzHU4aaAg6VEYnOgUtRAlKtlS8BNlRalWtsaqBQNvFBvC7is6tkeqLZqmQPsCLhxUgS7P1BHO2VeMLfFedkV6AVNSFusbGC7O+B9Jdb3uebmzjY6RGAP4GS7hfcGqlHflLeofUCBSTG1H2oIYo7lQD4AcrKd5YMBD4dmeAgghWR4mEOlUD5CoVg+KkMxPCZDMTweqIQjd2PpRulCdiLwmEW8gYPO52hvfKb9JDwpMXCWboqB5lSAj/Ni29MBLwu0UyIVPxOwC9OzAbfQtEAf45xA7Id2PuDuSjbhCe/tOKEacEh0Ee5ha6Y1AxPMoLgUcEh0Gaqdw5dU+5XAY0C3xSDtshtyNVBpaai5CzgLxPVAT9i60Bbp5hH4X2M5nDi6EfBKlnJ5E34KmUwrtgu3Al4qtNTfDlSQ6k7ACbsj2fwuVEy2AeY9Kbl7geoiRB5o9wMepvjX9HbQK2BnO9q8ExQh8JedSLbChpN3g1WCgvzRIajvyUBigvX9oIyTvJo/CEIeYlHxeesPgy4+zARO72n+iFQyQx9DPIw48U8wHsSct08xL7GSvHwWLP2q9ueYt1hx3r4oxMmGXwZrSz+UlI+/9NpXQf5yE/4MoWMby6Uo7NdBnNKjkco3QTtecSUx6MgL8rtgBV2/D9raOvMwJfxD8Akx8uNODA7txRpH/segHMjyl5N/CvbCNQZcZuygvSDcsfs5+LiIIstfabFi+CXo4VzCDx3u76/BijQupv8WtNEiRvvvQT+vc/AAiEPB3mT5Ge6gg+2ikX5BF77/ONr+wWqOFqzE6ccDgOI1nELqA4M9BVUc+6BgrWD5pUnk4CA41tOpXhhlfkiQO5MRDEYrG0ODtQ9mdFiwJ1diyShueDBQevx9BPLNAzV54MaIYHWxiz46mY8M9kCP/FFBWw64fHR0sHTXgWU5Juh72H4EVo4N9mRlCTsuyOdI8moGTc2PD1oHC/MGWRTFZ7smBKvLlRODHhDhBx6m5mhSsLIYRrOTC3royrVnpgTdAmJEU2WWeftR6YnM04JiR9S/4Tm+pbrpXJcP1b2aeQHLNCOolJxJX2o0M6gVHxUJE2el+vysYC1ucYbNKq3RLknODj7Kn+nPZPmZyKMe1HOC/P7CVyRq5gYrCeclMS9YvMcMjjieH+yRzrSGF8DvLpOtf3phsBI/0IYx8gfdFgVtsD4XjmUXQ9RdzTCDFm7kVVaIWmAaQNQvDdaUErAvc9kDXCq2/EG72IqyyMIry4zCENmqcg4iW/2gXWxNWWQNa8uMGiCydeUcRLb+QbvYhmBVgeOCbyyLvnFTWbBGiH5zOQfRb3nQLraVarVPoVa3CSxttlPyFo7GdgTdXdmCu93OoKOrOUFBdwWdKKJVanfQJeVYao8FUrG9RZrYPnjxZjn0/qALRDZKHWDAwQ8WgdihIrPYYQie4uBHgE/J4EcZcPBjRSB2nAEHPwHBu7g3eRJ4EDn4qeB/bU8nTjPFkZwp0sfOFmli54KOtjx/VPY8itwmXQh64SQFaIzFIvxFqEZox9OxFvlt6EvBWouRtXk5+MiDJNylKw/nU1cfyqdi14I9LT4sFdeDPf4aa/9vN4KPlis5lZv/H0XqVrlCpnM76KUT7LpiXKg7wWqJpdXdoDeRKdpCci9YLbE0uR90NGWaeALacKMoFO8Y1fSJTkg12UVHheffNXpBxYJrF7xFo/yxHGz13zPcbeT1SV4U7xtOiVIfGO6O3BvYMYc/LR8aMIcPoyi0+siwkRz72KgWJGQqnkHdJ4aXdYL71Hi0BONnDOD1nc9+ZoBDBEUfTX5u2IX8hWHL0kH+X4JA7e9XhpMFeAd/bVRksbDfgDKGwreGpz2NdcIPy3eGkyHuWDFsLP9g2FkI/2jI7/i0ZeWW1J+MKj6zGx3+eBracMPtkvAXgw4Qeo1e1/lfobZo52UHvrd/M2pRhx20RBLaNLRv/N1wYv+FTjr9gwNHsVv+dGM/Q7Sgr8a7eRIWP4XR36gSq1q4IR7XIQYYooEWm/Es24GGh3yVOUB+kOGBmpXLFdHBhpMhTlNDrKzKwx4l3Ag61KgRDOy/pMFvZ3aY4RYcWgw3bIxGGC5BpxOZkYaTHKDCuA5s2FgebdSwwCmTPMZ47AEuSn41Y0UU6CE1TkTRMF5E0VBkPsGwwaHnDfXJiUatyAFg2JBPW5omGQ7S4p4XYZiaIoTYVMNrFQWIaYYDcAqfhOksppKpjhmGIwVyGsSZzMZAnEViDA1ms4jsHMNJMWA/d65hY3meIPNAzhdkfoEBr/JMmGaPjVoUeWOePJNzkeFEkuZfFxt2lrNLDBtLS5nCMb7RA6Xlhh2Or4eBTH6F4aQxfwrH9oaN5VWGq6vArobADNYYDthtHP8PINcaFSSuMx7nSuHTwbP8Udg0zNl1rKd7jK9ZnFI2vJh53iAJnm4bDRsrNxnuNN7CTA7NNht2gbYYvN+3b6oDFVsNh4TbjNpsrD1cOtTbbtiRBMsdLMEa306jKsrnqrYku3D6NrHLgI1F8FvJ5ZLQQOw2sHuT2GN4ZbeGtv/uNbzoyhru6Mu/+X0WpnZlv1HJrq6yATlABhZx0KiWWL4tDxmPEZVKxcu2hB+m2FjDraXhLBBH4ZWYy7JD6TEstuBxhzkZHxdJS/KEUVPA8Arh9tOoRlF8/YO+jnbK8BSbnS4KlRehzkgT5s4aT2RhtQPekHiQUGkRzhl2IZ3HkltWWFsXjF68X5fOOIJXGC8FXjRqS2lcBLxkOJuBS8Jsdf4yPpfgz4WvpyvMJ5C/itWTzycaQb4m5DDI14XcAPINIT8F8k2jihOCpolfSbeMnsyII0mZvW1UMvsvaEJy0KrdMR5nglxj0J2kcAD+XcOZk/m5x3ITyvfh9xFroey8bZKIuXyHxCZk32UR2ffMx8qjp2TjLe+bvbJ9YJzcVnZ2gOlsjsFrPobz26aN5Y+AhCe9uQ+QH5vgSZyCGLCNNG0sf2ra8zFaJvkMpI5kX5A+Nx2wozKXAfELs4LEL03wKIfjtztzQH5VAPBj/dp0NiFA629MG8vfmo7uTt7s/51ZQeL3kDp4DbViTn4w3SzTFsofTd63+Vp7HHdl/mR6WOL9mT+b1RJCSNrC+QsUKh2DxIH41bSx/JvpkFsWfzcrSPzDrHw+0437pYXPdT8TOivdcSxtf7OCxAEmz1S9iA49zw00q1jAtF7Ed9og080MZWawWfVyEhvuDjkhNsT0CIY3cEIKOXi0cPcmpIDicPORbJ838zCvVHq/RpiuVzNwGyncyOJsvDzKrGKhkI3RppsZsh5j8kgNTvKIQ3zxsWa1FMW8XHycWVtM8ezVeNMrSE51glXz6JAx0axiiYLgdVIJ8xdoHyebHmY4hikcA2y2p0Nwp5oeIZF2mukk7XMvRt6Ybrrwgh95eq19hukugERiplmLCJN4rgNPlcYCzDJrmMQaaI69idxss5fkIjDHDNmhz73OMXsKWn4tDo3nlseKS8rzymJFbv4DwZFdYFYXgqfTyOQXilwztcislIhrd7HpRIJKvkTcz+eT/9YZa1lqeliI0jbUZWYvhrKaeWPyctPNNMWwAn7lyfZU+U66laYTaZJXsUyv0dWmg2auIcY1ZgWJa03YU9EMxDqzBwix9eZ/hcsG00GLHcBvNO0kwpS5WYk+Awj4qNfNwgrm0LeYThKx4d4KP9zmXAwiR7TN9AhEbnvbTSfvRMFG1rSxvNN09sk3QVMO5C7TwXIyvdv0UB5jbS0J3BEK1RWHtdF26mbvxXIJ5T6QIRD1KPebzhSATA7gAdMhxYOmPZskg0Nm9V/ggOJ2OLxD1tFhVsKpH0eKlVxpR7GUySyt8Zo9UDxuumEPRmeal45OmHaBTpo28LwF6pTpZiHalMp2nDbtKYKtZ9AAhbOmnQ1y50yHUObOMwnSBdOFMzHNmTT6BZt2AS6ZDhjb1z8L5GXTTmJL0xXThZsQgUPHYNMuwDXTBZUlxhjXTbsANyA5Id6E312n8O+9ZbqljEfTmU4UaHxzx3RLGTR34WHIduJW73umU0jRyH3TgbOb2CK/HXIJEfh3Qj3QYendkAsvXNXvhSoIvB+yZfHEmNQHoUq6jwTQ4sNQjUXIk20gCuRiCWyiQm4BUPtJyCOmpsmH6tOQJ5tOU9gotlchr4R8PF3ocSvysnNuQo9mcekEHPhLFV9iHKwg/FXIIfHXkJV0J8TEJxSEXIRexz/fYii44slKOKP6XaiKTiB4I5ZMP9eMhfo+5E6gE2QUjvCJpX8AJLwZ8MCCkF2gnyDSLvqZAP1zyC7AL0jn8ehzbN9CDgl+C7lBTOAvDxu5kKcIRf8IeYthpB+GY9yfwoEHRSoGqgGoYDQw5ESbjm6gB4VsLA8WZA6HcILMDcXM5XEOfhgkS9+44noZDnFbcESoUiBxc0dK6zDvnwxVCSgNRkumQTJjQi7q8fBmylAVZIQ8x4V6HDF9kokOyYwPeYBBXyl28EUDhsJgIsbYJlZ4JoW8DIRyMuI09ATyHHxKqFpiaTI1VNOR6wO9lSJuGsYpvROnYxwIhHIG5ohuGalnYo4YCoNZIVcTakg9O+RlIJRzQl5xGCd+C7alZW7IiQ8G3dZ5oQqS54ccklvADxHf9YX4FGTEOg90XheFXBx1V/7N/OJQFSl5REjHHYQeJY2grJOzloaqs11owTvLYSzZugxCF1MN4eVlTP3TK0TyuEaKipXSgkd9EMuqUGURA5GsLiEgjjVIQBzkV42KtYIAX0XaX55fJ4jWuCDWh1xEwBskntoQ8nKZxKL/RlFqMqV33Sa0aOos/FY2h8jpL/oXeSxbfkvIU2yxFRIsDhDZFnIWiO1oy2Nb1O0IuYvgTkzKUkZ2hRwS70ZDeipQsyfkstBeiNJSRfaF7ALuD7lgqTrBHqQHQhUEDoZ6ZbvSmfJ33qGQPY/X+rbDIRtJbUdCrrx4yOrbjgq2/liogoTjIWdBe0IEDredtMKE206JMOHTlm34jCAbzobscL/SUC/nLHXD+ZCnTzLdBKtLvDsz5ESnoEw3/L1oqdD6Er33RN/kcsgtAKquhGroFtF5S+ImXQ3V4o0tLfW1UFUki55UcLgeH1t2PeR6HcxwkbsteyPkfL0Lrn+Bp/0mJidv6a2QswBuY9JSEbkTsjG6G6qBHJVOXd6jXMIAKobN+X2MUYK366pf/3skKo6Sp/N43qmzN0GVxNPJd+scMtx7dXYR6P06DI4vQwj+AVsg+pAsUPqorgespyQ+rqP1lvAndWXrLZ/Wlc5UfFaHvwXc1yeOaK9zC0ytIsTL6EuWcvF//4osOkQZvq7zFKH6bzBPDL+tc0qx/juyCssN899DZAx/qKsRkvV6/lEaM/dTnQfEMFCk/bnOLuAvdTVCssL+Ko2Z+62ukvKfTzYLz1siEvQ2onv3B5XfIvpRrhn3x4xYugEM5RF1A8mS4aC64sZ8MNUQtUnYQtY5JBrKCmyacPSHCkbDKa42GlqPqLOxPJJudlOaBtSj6uwCjOYahyWJJFb5GArKcCwZ0bECxDbR+Hc8FhFl8XubQHVg4dhEihFnT/6FGZ5UV12AsgmkjMMiAT14U+qqJJLtHyXHXfhpmBzKQjedkuNzwqnKZ5CBRcwswhhmFmbH0s+mauiO0ftxDpSQwVyiYb9rN9DzgGYwn+jWGAVdADSDhfSc8a2UkzaL6h4D7mFnkSymHLAGollCGWSIGVwqsHzbL+MKZYwGy+uqSonwCgpCnU8eo1EdMxb1tIpMmuPyWNPVUBLGOGCDkjBYW+cQP8nudSQSu77OxiE3CCG1kas9Lns10U0Uv0Vspiww/n/NXQV440iyvryd2A4PLO/xXWTJlp1NMstze5dJMjN5O4GLM7vHeooh0RlXsgOHy8zMjLPMzMzMzMzMr6qr25ZlewL78r1biKr+gi61pFa7JVXxEB5uxpt9mS/hH8EOIQGyj2LDxD7WrMBc3PT9tJB6XdOyaSxMbILHJSjcWmYqyuPNmxW0EMKFKyPLlbbckqa8TFlSf4obSsMuKU80jxYs6XKmj7mYqfrTNbi1C3kBlrRJop9ujbhhaZhxXVaosSebk3PWFH2yjzWF9Ixo76nm+Ny3x8vzQc735sSctkbVSfPNPdOcm7PmLLFz+ImfI+n+s81jc9ou7WaZhp9rHpmjhuGHNTXIz5vnm605aklUDaA6AfRDQbT6QvP2c9aqGaUibhFHn77Y/D9z1iYDZeWl5ngZReFqjT44FJUrasFYVrxDLzd3rXEcxPJiNGTaR0Gf080rzdnZBh2JTits3JY0+2pzZu6vaTGC0I3jtebs3DeJY3Lxnr7eHJvrE48O7RvNh1cVNf3T2R5YMUqU16LIsGoI/d268tEXd943m4+rst/a8XEa3tijES2jG+aSORwNMlPoxAzTysrKW81tBTU6b4qa8m1tg9M0u1Debt7F2eNzd6RxVc/ILmndNJfY2nGKvUPBlzXPA86bzLvNx/+nHhMLP/uOyMp7c3bp/MvuTVbebz7lP/z8pCvpg+atKioXjcdlx9wPmyfnbEdwQi+v4TbzUfMWwoO9flLZU9Np+3FzsGCbyiWjphEGD0mMrkiThi5Z+aS51d4YVu8fi5r5B/wwCpZWWPq0eYQVQvppmTCpYhKZLZmiwtLWU5Zg+qy5cxYtOa/5z5t/Vca+cu9gKFkzFxV99EXz0jL2tlOIl4Va45H5sjmCakV7EknbvPD6Vvxu4uwq0cZUPfZV89IZNFPerfJ18+8RX2Ov0xv4S7h9pXhLA/ymeZMZ+eaelG+bD1zTuKOBSXKOB5+N1Z/GcNVN/PiSle+aD//PC4qGlR2kU//T71kU6I5SaPpdWDq5aqVr1bn7O0mSc5mEr5CkY2TKJyY7S73/p83vIvGPZ2hFmtaad5UW2UH+5cBu0nyBisXr3SUoQZGC1liCOD0iE9fJ1HzKHtJvYV71UwIzidyIkVoysO2QqYejWxepVvwhA+bFnLKnNFjJZ9usne4lKQWneMNbMrQtVsrYWu4M9a/q69LAnBCfsrfkK+jq+Nh4Dcr7lDhentUjlmnXJcSn7Gt3HEfHa1DezxnFmpT3l/yOKHiP2ZU55FMOkFSn6zWpH2hXj0+pfpAUKB9LWxn1Np9ysBR0RDOFwSF2g/g0DA6VmjhDAcnKYdIvyHyAzq/WXEL9aVsugYOBjh+FWnjpHC7NF3bUjqwcIe1QNScjlcMZ00zlEolMFpxsbZ+eKUdKY/argPaJr9LMSWzip+BRUis13JGb6IVhiD0/sv1KcV6ceOEdLf2GUKw4TqE61Qpy3pDj2j1G0kvu0PgQkYVHzUAHEV2AhC+bGb5yjVX32OsXmpGluzs+claOlQamCBN9rvmPI+zjpE4WTUncWopHTnMmit+JiD4/XoqU3XnqfLH3gqHtLPb/BGkZ2ZaLliRF4RJUJt4TpR86Tk5Lw+r7fNZ0kjRSfnfo4aTYnzxHxGz26GSph4zL7hKJiveJsHI7dYr0d0fU+P4K3oqjqazonuIZJMRDAn5Q4DIqOUrTM1ROlT6s4qPV2DAMVgTbdyv/+u+SUj3wXxZ0jmxbbulN6MnhiL6xVy41gMK4Zb3MWXvKadK/Ss4Ue6+vudMk0buz7XVJOV2aLAnAgtbpK1krbc46hqnbPgNuM/bBpMgAm26f+/0/U9q7ajidTlQ6AvTJ7EhONyMzDSYPSNMPZ7U0VjJCJY3UDK9CaebH4qz8LKBNTB/Odkwf2nD6sIlz+nCOtEAY5s/6c6W2olsonPF6MjPFPfQ8KUjotqxaIh+8tq54m1LOlz6euxGjbe6HjFk2qFwg7VHluGbxYuG9vEaPXpmU1J/SFqLPW83GXLlQOqiKDlT5fs87JaWpvTuCmpW9cpGUnOL+S0S5WzARM7sLXyxtO8OjCGKx7iIr5eQUwCXSPs5DrdGgPIODJAnK9z2PtqRcKp2+5hF78f9dYN8z1Muk89cc6iZzGersYr5cOqL0cFNCCnE31tr/nw79FdJxa+7P7x/Y94zwSulEupVX7j1gqRRfNvr/1I1XSf3TnbA7RiknLKbtV0uNtEwj7tvXlPvZv6nzvn2t1CTMdAr7OmkjgZjwWmqbXPRD73rHPZ2CmOKefkOhkUwYNrJyYwGJEHKTZLPELX4kKGuQ0kSDvKarBgqDs3KzZHs+xGsqikBs3SlGVp+QyZWtxDg/lYZyi9RE61D5/rq1gMQJuU3imYMH2WfPt9vZ3qE7xMJjKBrl0J0EibdSTQDvkvADJE03R/iyxt2Sy4xgypl7pBpWXA9TaN8ruVnpkUT2PsmDmU0QvF/y4Ofz2WhP1wNSI5EaT+rzoOQKbYsZyR+SakmSgevhYQnrGzD+EakGSPr09VEJM2cy+DGpBkiCH5dqQSUUTUWiY9knGLMcBMA8KdVhJjCLRE8Rx2VPS02wQ4MUWMoajEWekdZ2ICwx5LM2xc7RFMDPSfPzSAjfhu5JPS9BXmDb5ygvSJ7xEXxl0ki9KLmBRNFLkgfs2BdUL0suOj1fkVyk+KpUa2VZLmFgXpPcnHldaqSqFlaYPL8hNQJJGEPetAGUfllalzLCYedrrBwbPTB82y7ApEgisf870iIsrqrRXALFWOfiXWkdK5zCLyAdBX2kmkjO4m+LSwuRFq8wUlKyDxygjuCH0iIE24pVP3KgpPsxdLmew7K/PG15/BNpvTxS7OFTqbFY97MyquT2c6mR1cPIibKPX0geAXwp1eZlfV9JjXokwk90POe/lury0lDfNzbd0LdwwsUE+51UExf0Dl5XIoYf3e7onQdEfCe20Xf21mBk7A3ZXbx1cWKgKW1Xb11eooV289bbZKHdvbUFdg/S5OmG9/S6ObeXtxqz8Bl70za+j7cO5HiRwmVl7euto0xRDNjPux7bwsF2HN/9vTVWGG9LmE3DC+dADgvzFesc6N0woY9szGgtlRaFEykd1kHeWhTGNTypDvY2RJOawb5NMlN66hDvennLYrNDmUQvIznMW8Mk6O9w1rJevuUjvOuDMBcp4+NIb51WkB3ldRMTP1pQ+jHejYgq6/pYOm4MPM7rYnT8eE7oJ3jreA4ElJ+Y5+JaPH6SFwZFbdzUMyfncV3T46fYOf3UAgc2p3nhzKTvI073rk0rH46vk0GDwVCIwdsABx9TTlPoq721xGtYi8HrIuZsbx0RbQifA0ERd653PaBy0VTY+SL2ed7GggSB8701eeAC1mgOE0Ozh1UXoozzF3kXWrF0KqvZH3td7J1vB9HmEq8nFFvJ6hhe6nVz8jKvi6jLUTrAvoa/wlsLJM9yeSUqIHOVt5GI3nQqjZKrSY2Aa9BjBnOhXIuUgdR1aIEUDk7RmDFxvXdhKNbB3nzuSCSoMesG76JQrAcvNLvzG71NDvSmIgR1bvbW2ZBbsF0k2m9FXJi13+att2m13+6d73Dcfgd0bgwLVPGOvxP7jngxpN3lrY6Mp83I3aCKH1t0UTJr6x6vmxXRMaP3whEZ1ePsJfr7vC6i74cegDQTA+xUw2PwgLe2ADzoXQRqGceA8JC3cQA+uDNDKEKbh721BeARZBKTqXTSgFu0dwHkRRuetEajY4ii9mPeRUUYaT7udQ10dSaMzBNe90DXCj0R+92Tgvr9U94mjeW5sTAJKxbNe9pbBz9BwvjrHT/Agi6DoRmLOYvv/J/1NhDES0U/512ExZOXgQGqDIymU7BW9bzXI9y84G2kpLSsXjsk833RW28DNn/J21Qkb930ZW+DDWnd9BWHRnvbq0Ua7W2vOTQ2Xfx6kcami99waGwee7NIY/PYW975jjhibxeFDsA7Dh3ICfxukQ4A7zl0IPPv+0U6AHwg2t5GH9cNzfjQW2fjP/LWsqTMOnbox14XMZ94F5BOlvziCPSpF780g+Ep9Zm3VlR5iaU/99ZwWAt94a1HOgUpZxOWFvrS60HWMuETaNIaNvDjLm9tQesbr4t0viX3oPEd6WaielzbQfYIeke5Ng+HdpKZzpgOUe4s1+VpLbSL3ACR4XVFYe8q19v53eQmwYpvoeV6+2W5h9zkuCr3lPFTHd0kB3vJjcQJ8d5MjB/FoXgfFCMnxPvKDdxfG339LM8XvFDZX25gX/+YmVGmcoA8X/BC5UC2V+MiCO2gPE/VeQ6W3Zw/BPaXKAsFh8o1efYweR5OAQ6Xa+lTI2SOAMyIZY+Ucb6RiieiR8lwS0kanDta9mACFGBGjgFBRg/zs+FY2cM4aOI4uZqRx0NTGV5w5gTZRfSJCEYMFstJCCJ9slwPFtl2fls+BXWQBZ1T5fW5CJh83Rfd1JPWafJ8uxUWRDtdXmCH2Ez4DGwFsTOFPlNl0+jVci1BBt5FZTdnzhZujILqOUKaPVdIswXpefmG6Ut+uPEkzpfdXf3b9WE5QNkdGujuBOpC7Ca4oQN5EZFYzuViJCPYQdlLCIWAMpcimTXjgF5GKHKXI2mx8mNXyG5EgbkSQT2C4FWkCnPb5NXMrRED9BpCgYldyxyEE4BeRyh+OXc9kqPssNxA6CgcmBuRjBmoexOhwGRvltehyB1VQG+R58WSRupW3OgTt8GVtX0OZp6YMYHJb5cbbQhMOO/AqxazmsLN6U440Hlhsd+75AZWTwoZnLDeLVcz/h4Zi2ykM/dCP+iJ8HAifp/MRqJwGp/23i+7gcnEEpEHIHY0iJrmg3B+Z9Oxh+TqDH4E8DCcHKBjjj0ie8Qv3EfldSj3q4F1pDRMp4qTtOhjcq1hYa64TnD+uFwLX4HqEHxqIvOEXIPOsCnrSQgOmm19Sm5iMYOWifP1dOppkOA3f89AuDgrN81nZTctGESfg/MnGyn+rvV5eV0rC1q64agd+YLsGs8i8SISWBvvJdhBfnG8LNcKUou/Itfx0nio/qrsBo7VipUbOE75R19nevlcVEyvL5yZfFNuAgoI4TH0FtPkmbojbzM/gtPi7zj1M+8yjbCe5ch7xCcznH9fbuRlTTnwAbgoArQP5fpQ1uzPaN2m2WuNfCQvLJJTemm5sRj8RF5QDGDODocllVKQsQCPZXf2eTGEWl/ITVSJNQ9+6URCX3EkkUe+diKZb6jjc8Mc+VZuBB7PVg58xxTw7kn8Dgq6yGUgCI7sCAhlRxDITkoDVt2JjXB+Z6YBF1Z0giO7KPMBKYJ2VaiDNKytxrHdlBqLfcAJyrsrLljiSeeyeyjVsUwql9xTcaUm4LSz9lJccMEAsbdST+niJpPDMDHYR6lhCRPT8WhqX6WRaCHcD3StVV39UMwIMxjuL9iUhewBSj0lhyLrAxWecZcegYqMXlqa5UU7SFmIvnPsLVdQMPAMPlhxW5OoZx6ieJJ6Bn/RW4cqTQCGbZVfD1Mai5HDlQV5QNxcj1AW5rH8ROFIZZ1ikCsfpTTibKPg8WhlQR4QSsdgIPhoN5ZLJFo3TSSTxyq1BeQ4p9g63oFY1gl2pG0xuDjRiVgnORDLOtmOtLeB1SlOxDrVgVjWacp8OxIDs9NLIOsMJwSpRorDHk4mVzsR6ywHAtlGisMGq3OciHWuA4GUI8Vhg9X5TsS6wIFY1oWOoMHsohLIutgJwQfYwtWonoixQ3ipUltALnOKrcsdCBTotSPsEF7pRKyrHAikIrEj7BBe40Ssax0IFOelPSCEDuH1JZB1gxOyrBvtrtghvMmJWDc7ECjOWxw2WN3qRKzbHIhl3V4cNljd4USsOx0I/Cp2BA1md5dA1j1OyLLuVbCm6aaL71MaWUZ1vP+xUqL3K+vCEMXI4jvtA0qNEBgPFuj4Q0qNyMky/LBSh6o81ecjSj0QNFfHMkuKR7CPoT2RxuNKnZ5n9CeU2gL3pNKYd8D8PqWsDQBM8opDe1qpJRiZZxQXMc8qi+x50IdYirC255SFpejzyvr5EqCdOdOEsZUEPZEXlPkk+u+0kSLwRWXdUhcr07DgraxNgu10I1uAX1Z+VA7uS2MSN7irvCL8QbUmIzZZ0HhVWc+ebd0meU1ZYA+hNwc1iF9XmghDBYa8oazjQPrSGMObwnpVKiEkb4l+4W0x8O3iLlxKeUjfEbvJVTn8rvCKTXDsvWIH8MQpAsng31caOZom7Q+okwkIGSNwg/vQ0Qg3/UhoDuZSkHUfS/Z9rIh6gIloNPOJ8B3KGCnc70/JgoBVDPqMIiVoyJxE7HOx/8KuB2tGKeuK52qi3osG64G56JdKk+CjKYZ8BXfiLKz0hOEU0npSYRNnr18X1CJRpvaNsra9uLGw/lZZmIyaI6zuXB78DkNyFnHdwcePMpa6YyUTdvRxNbaq0QmTb6j6spNvgQPsSe3sa7RhIViP9/GuQT9UNGFX3/pOCIqvpDF75W7YjrMQ8+6+4gKNQzCp30O4JQwT8+8pmu6GpYhOmF7t5VuvdN86cFaxt29txw4yeB80cO4lk+zrW7dkV5lgP986zn1h+P6+H1XaRyY/ABw69okEB4JDx44x/CCKjYYPKu/TSTX5DhaSkFNyCPeFNh04kHL80HzQxfhhPCjEQ+xBDRccLgTLHYIjfIvyFlA0laNHCnS5HT3KV53FhZCjfR6siJHFfG6+akYe61s3N6LHh3XTKB51j/M1FGVCO95Xx/g2Jj3B10icEJ/oa4Dff+GcOUY/I07yNUAy4wJ/sq8Jc6fQ2hpDTvG5qDbnqb7qOFDR03zVOm5P97nAFQjO8LniQKVTZ/qq2XY1mFgjuIDhq0OCp0U8G/QS4GnkHO5y5FyfG58ZY8Ian4dTref7PElOX+Bzgz1SF/rcZGteBJjBqIt9rgnm/RJfHRK8mUt9HuLahi/zuTl5uc/Ngh1puwIw8n4lxMOwq/iejFzN9FF2DQTB1a71uUnNvE44Ma+HPUhhp9wAe0DUjeANuyV1k6+abW9GHXRwC+gQdSu4YjLzNhAy4nZoe2wCs2iDfWoskZm4E9QJugtkDLobldDBPSAj6l5wxWTmfRAVUff7XGG2uw/46sKFDnnQ5wYOjR6CNtIW7MDDoMmIR0DGCPNRcBhm1GM+Fyy8gPrj4JmoJyAAlljzSfDAiKd81Wz7NLpsxdVxXzX4Drc+CwBujed8bthi1zzvo6zdqRcYBEjHiwgh9RKqo/BlXzVsodIDbfVX2VaPv0Zb/XVSTBhvoCkoGm8SoRtvIQGqxttE6MY7XLn9Xa7c/h5Xbn+fK7d/wJXbP/S5YxTMRz5XjAXzMUJIGJ/AgUqzovu+WiI02O/PEEX5574NiGDPr3WT5zPHyvPpL3wblZVRvYEv0R9K0d9Xvjpi2pH72rc+F4WhgH/Y7vMb34blROTyW5+be/kOrtEIphvzu9hW29HvJiK0kx9Fk6md/a7hv/0NoF3884Zzf/vbrn7XyDDyu/ldlIttd7+biNY9/NUjqLOn351J5OJY5clfzd4u2Ntfg8/vQa+9dR8/prwH4b7+6jii+0FTuN3fX22OAn6A38Xw0QMBwO1BsDVwcZgLjENIYBwKWzwgh3FB+HAShI/wuzJpPJWP9LvjRB3lnwdE9mhoFLfH+F1Z9jrDsaBB1HEgAip6vH8ebk7wuwmfONFfjcDESdCMjtTJEDFuT4F+Y5JTYZ8s1D0NvBF1OiiztyTOgJhwe6bfTZKJ1aCNyMRZoK0z8mzwxIhz/J5ExmTH4Fy/m5Pn+WsEGDrf7wIabrcX+Bd1pTEBcA87uGmq4n2hvyYEu4e4dZEfKlSzUvUsU9TF6IWzl2AzFM6l2Axr+zKmQOjlqBBj8BUQbtLCkdDv5umzrvK7h/UEUlf71wLhNf55KLmWwTjVuM7v4VTb9ejVSqTZEi16NVhJghv9tUDy0G+CzmKfN9/sr2bbW/xuyHmHDdzq9zBKT2Zu87tyGSRuh9NUi2s4HPpryAfQd/pdRN+FZyRLDXy3vyYO0AguVd6Dqpy+Fw41rinf55+Hm/v9HnQ7imOi3xO3gEwnIg8iSuRDfqxdgIXZ/W4gTKAeYdQ4UI/CqaRjAI/569jKPdWFetxfzbgn0BbRJzkx/hQjwOZp9IGE8YygUs8Kqv05vxs2EzgyCmziBb+HU+MvMrAVB0fuuPVlvyucHAbkFf+8cDo5/Cp2xBhSr8H5lcC09a/7a+l1HLZgCkd2DPXfBIKhb8GFo2O3v+1fC4h3/PXsBYvN6Cfdu34Y+LBf3/O7idj4ff9aQH0g+LYP/W5YFEziKOl3IZVOfQw+xwDQPvFXM+JTv5uA0Gf+eZiG8XPezBbUzBd+d5jkX/pdRH3l9+Crb+nEWPRrf20GaFL4xl+TZ77lNCp9569mhjuoHiHfUaVGdGpkJxX2ZQTwndW1gNhFrcuNQHUZEu6qVsfxpYjd1Hm42V11x5MGfke3h+oiYk/VI07evdR6TjHjvVVPnPP7qB6dk/uqnhicSHjO7qfOQ3J/tRYH/GwasQNUFzEHqnXZAnyQ6ubcwSoVNCT8ENXNuUNVD1IIHqbOQ/Jwte6vRhZabUPwCNXNuSPVWqIQPkp1EXO00LYQPkZoW8eqHk7px6lw10njhAZVjlfdnDtB9SA1AeSJaj2SWa5zEkqIPRnUMxZeQ6eQDmAZ1DmVdJA9DUjSyZyuLjJw7m2kcumctcqKmvjW3xnqongpeqZa35kD2kyxbl2tLtJLlc5S64x4vgrQ2WqtnmfOUevopbJ2ND9XdXPuPNXDKf18oWKgygVCxbgQjjEnLxIqo6hysVAZvQRViLxUXWB0GVbYjGajIq7L1AVxJ3a5ukB3YleoHlG26ErVhWQ8fhWcnUhdzQH9GiL0+LWc0K9TC+WOrlerGX2D6sZNezx+o+qKM/ImDunxm4VQv0Vg+q1wUjLyNtUjSsvfrs5D8g7VA6s29P6HOg/Ju8DMTEdy4ezdKr/RTd6j0o1u8l689pIip7F2n+qJ8KvyfrWakQ+oHjZQAfSgWs3Ih+Akp0HrYbUmloWlpRiOu6qL6EdVFz7Giscf44T+OBF6/AlO6E+q1WkTVJ6irf40bkHhGdrqz6quCabwHCf055FAlRc4ob+oVqfSWS3+Em31l9UGSiGdiMIfmIkW8/qrRTzMTIt5/XW1kXjoxlF08IYD0N+0A+jiLQegv6025kZS7FZOPfqOWq9nrXze2XfxWtMjGmC4pv+eWj1sjeuZ91U31/pArS3of6g2cib1N2b+kVqTBz4mz0L4iVoHrEgZ/anqIu4ztODw52oD0dzbF2ojm60ByGukqB6h8JXaxPJVd3R19f1hGLSsr1WP0P6G2uKOvmVRWkYqlTaY3+/UhWihRVOwGjOJz2zgZNshUJPX2jFQb7fYKdAErD0V886B2gKyS8CVnMTXk3YNNBTp7RaYDzwvukN3+t1RxQbtwVTohsCt9kQVG7QX4wuJmfcOeAS/D4sZX0LRQvsG6mxq+wXcXLJ/oBpfoosfEHDh1jIPDDREExhMJDwZhsneQYE6zqP84AC+mgwU3iwCHqTR+lBQwiUUMjksL7AOD9QwATJHBKg8fBznzwEX0UcF6ohg0R8dqLdxoWMCtQX22ICbM8cF3BYjreO5S5SfwD2R6YmBanwTJn4SbfWThas2EJ8iXLWdKuB2nGQLuP30wFpG6m9nBObByuzfzgzU5kbEq8irAy5rLIaLC4G1gDg7UMuzRQN0TsDNmXMDNWyAwvPrvICL0eb5SCB4QQDuXewuemFgLaAuClTDX12/mLbxS9g2rl8KwWGdMBNjvgyCI+ZyAbcCfIWAW68M1LEld5MSuAdqkaML4+pAIxfFaf3pmkA9AbTefy1nDbK9LtDEWaF/faCBI2RwAzdoJ4Mb0YBYbnATN2jnBjeTQTxLAd0SmE/tA8AtbqUYESKT2wILqE2b0u35yITWHVyr3aZ1Zz4coXUX75txFu7dvKlxYXAPRocAad/LoxsvuLxPmAiP93MTnrPygUANsSOZ8QcDtUTjOxAPCQEkvX1Y2Jg6qw4W8Aj2USEZZ5LHUELs4wG+jgpJ91dljYSRnXwiUFj+5tCTgfXsRVc5ik+SnwosIgkyhBtR6+mAR1TVeyawUX6FkNt1RWGgMNiLEM8K6fJy0ucCTbZFVPx9+HxgoQ3h2c5fCCwa02FK5sgFH6ge00fgVwZuYadfDnhga4wA9AonAX010MAqNo4N6xltJGW9FqinBUeYbcFQ83qggRE4Sodh2HwD1GGDLMPfDMwvkms9PW8FmmAqr2U0y4jA4YOD93agNl8JIfIOtB0Na8monno30MQ+C6BlDixX/F6gngXCa6a9D65srGaZHwSaqGwBYuwYfhhYxHagrQt0xrQs1fH+KNBgt9Q/DjSyUl9sSNcihvlJoIkDolDip4GFaFLciZ8FqhFs/Zz8tYra+l8EaolHpS8DLsboX1H4hGr614KFOo+wZPxNYG07K1x9G2gsgvXvAgvsAJXZDC4qwTR9x+A8RHcKsnaEw52DLsbquwRrkKBCYcE6TqPhbsRxb7uTc0dcewTn21E03DPYYIf0vYLUZUVB7R30MPBvenwfdEGk8Lovd4EQ6u8XbBI8d7N/cD0HImwPCK7tkNB3A0FWihB/dgVdVJTwYISQaD8k6EFqAqSHBmuIBPowTm8P9OFCeeIIUCZq/Mg8aR1FuohaR+fh7Y8pwNsfG6yHOv1ZIwvR4YpUsCHPZkDj+GAd/UyfQOkJweqMCffrE4Nujp4U9CT5m64nB2s5iffRPB4/NU/qpwVrkmK0PT1YJ2hcqi9I4mcWaH110IW0ZpxFXlD3bI7Fz+GEfm7QjQR4PY9smc/zBRq/QFD6hXDCsS/X+9nuXhSsxmIk8YuDLtxqxiVAYAfELw26GaEZl4EOrDXGLwcRbDXjCgBguT1+JQCw1Yyrgg3k1CKvV5O3sfg14AQJzbgWICs3PBa/DiAgALqetzAWvyHoYRSAN+J5YIyNxW8CKRAA3UztjsVvAQgIgG6llsfitwEEBEC3Q1B4V7kDENxqxp24K3jd3BWsHWNLXBjb3YAy5h4wwJWGe8GAFhjugzD4z+n7AaSHGQ9QC0A9CG7Y4igqPBQsLK8+DC6Z4BGuYaDGoxw1HoOzDdc/EXwcGkX6CdCMhiOJSQSfBE3GPBX0xOG8ROzpoAtJffKZoCusI/Js8L/C+nPBRbhiQr1t6AlesDJYm4XTBWIEvReCzvIoLwZr4lmdFF4K1hI9AczLsG+0LPRK0EXUq0EPh0KvQay4VPR6cCF70VK8YEjfnQX5i4VvIjGA35kFa/BjPwa+zWnE3yF6FPF3g/UDIa1Xj0eXQ8+PvsfYLlMfZ+z7jO2eMLKM/SBYg5odVtgwPgzW4GNVRn8UrEETRn8cdE9MsvXRT4IefBOWFRUJerpyyeTkslTbZ3my9fM82f5F0I26YPUlWUWhza8IhC7/OrjeeIZqSThuzN8EG/8WiWmtmTR/tf1bO4AP5b4LLioASfGa4A4tThR1d2xhxm15bzvZAdTYmezair3t4kBJd9eWJkRtZa93K0JQZ/eWBREDDWxaezgw1NuzpT7evomW4PXC9yqwKN2b2FEu3UewJN23pW48K15Z1/Zr4efJ/kjg+XBAizuaSBjQ+we21CWiyZRhxbEO/0EtbrgudbhhHNzihilSKm1EDmnBD6pgenFoC55Epj4czVmHtcAyYsLIJQ8HqZ4YTmePaHHDjYW9etdS/bc4Lra1rPW3uHk0/DXMY5AePxbp8eNa5gGdPB42xnjyBNSGDjwR0XDiJGB1MD4ZVHXzFAB1c+RUZMZPQ2Y8eTpqgMEZyIYTZ7YsgHaLT5HVLe4Y1uXWs2e1VIdHYb5ydsuPNJiuWgamsmTr1FjrKKNnR+k7zHNaqDqkzh+yu4/purnqB02aBm7CcZF9u6pBg5kXrMJMsinPf9VrNIli3Fp1mjYa1TOMmbfe8v6hYARCCIrXIYO4ZJeu/kmpoDOkbdsxqA39fqBb63BNoRByT6GwjacFFXDyXFBY487XrF/q0cpGIN7aH5W6Yl8wa5HocG6k7ieVxKk0U6j/pfBcNhR4MmuY6VRDmT0aNrL4xIL6t7FMgAZ+eL5xUxkJzEnBan6ZI6BH/rq4fUEZAfO1sLxgcfuin5UKUqaWjmlWbFgbxveT1l63VCXb3p5Ypyzellj3h2W6PByzDA3XdtZbu1Q6ml1/w1I0wapoDic22KBUxrpuk003rCRqa9/oR2WiiC2FCHrw1eMf/sx5eLHBJJYdw/snvs77o43KeIDfnKyU9o8rCFtR+JMyzkc2a2uHcmbgGF9vNn9aSaVtsVD52Y/LqrQK+c8ruVi8sVD5xRoCiaaYyi8rByJUmisFwuVS5UCEirfMgRqxklDfdqlcQfTblUuVjcqL+gaXdXT6KtiByF/m2s1YcGG3GfQltvrLygpY9pO0AhXcxISbYAU3sSI3LWWuB1zXNCK5qDaw8YZlpPgZlqkNtPpK/Y+lzWHD0iDFR5wf5TELC/C0KdPSRdX2cgHBTDaDP5sGFv+iVLpsZUenpoXNMJw3dOkplZT6ly/XejsGBnr6cLu8p3PTJdNRXdYzGBrSVnR3dHUPagMdndt0D7Ehf7O2StahVUuXDXb0dmsrBzrhZBnQQit6IFvGyu6+zbesaDM02N3Rq/V2D3V0dQx1aND4yp7OjqGe/j6tpwttt1iv7P3CSG3pm8Jp6Pd9nUjD3mylVtKliJf19w/BbnYOdmKTS9qnG25PSFvZEWL7+KuNp2uEvYgWW7dN0wKVlw+twM2vu6drQ3xP37J+Df5qS1f2d26jhXr+wJr+zazcdPzO4aZjttFQrws3S2cZjcNN59JZuAl19A6s7NYGO4aYj65fz8JH54qOvr7ulSF00L1sFg6W9gyFtIHuQR4N+lnWNQs/Q/1DHSu5ExbN8s5pe+nu3magv6dviDrV7mTFLJxwSf+yZaFudnn0zMYJ9Ubfqt6l3YPo5L+XT9fJtv2DS+Hi7Ozv7e0GT/D/4O9tl9E2s3SEsQia9c3Knuk66lzVHVrR3T0ESFcPsICt7F9u27neJTN2tRJGZ62nD637tpyxNe4WG2L7fzVj28HuUPfgtt3MfODXMzbHbhwahJsK68TfztgBGcMe0IA92Dnzne/r6v5d0W6EOmbppHAIh2bronCdrFo2u77AKNBZTyddtNt2ztKPvUu2Wz5LJwOD3Vp378CKjlAPi+Z3sz3C4l75+45ZOigcnD/M1kXh4Pxx8+m6GOjpHFoFnSDi/1PXTC17e3rJ3DZs/XnZTL10dYc6B3sGcD5l8/OXLWbqZ7ueLjLVtpyp6YrunuUrWPf9zxYzD3+AmtVn3Gxn/8r+QXbyDf96praOSVd400oO8L7SP/B7aKwL58zgaEV/V/6oRVbMzG6gY3CoBw8VXH2DcCFr/YNddO5Gl0x30g0uu5ctwwuwsyfEj3rsVzO/9w6AvHtF/0oIYKT/e+4GnIMdA92IQ6Awzx4d+H4O20o8Giu/n0fhiXr7r73fN74id/Fl3zO4wY7t0E+ifRq/23DAo19tdPInmysZbQuz3f5B/gMpFVjzDyTySD+pwGtambZ6pnVaqvbbzvZbTseEfotA7LgLMH1fziZ4Zvv0bfO/HKzF0zFy/lbIbjUtK/7rQOsIhXqW9+HMEY1zm0/LuMwvg7Hpdegfugf74VRiHTquTsuE//yd+M1Ugw2NcJ39faGhDtidpb+HDumAqTCesb0doW0mA1N6sIf3N2VaDaLq3zeZUnU7+EEOcbCeA9FyNPvHr6bXwrKe36Gpc3/+udU0AxzoLDX+1zS7c9vuwaWw8NFb6uHf5ZfM07nsDlXtYpHJ6TyRCbP6RblsVNNz2XQ4bZpR+n5hx6ql07GiFTE9ocXMdFLbPpEBSTQWM8IGVsXeqWr593eijRuQkqJqi0qeIENbNJL3NRylvG0RAx+GMttdqhbPxnbXKu80Fo/wzNmt6hfT0Ny9atOKWlkzqie7aPm3G5864zetOYs+TdyjapM1G3an0JBlarPb7Vm18bQaRJsomexVVWYBHm71rbAunIFjsXfVz0VXOuVYNC6hT0bN1n2modS27zSU2verkisq0cf5rdl0q4afXO5fFaikSs8cyaOGn8fgw5UDqvzT0G9to5XTA9egjY/p+EItKVsHVVVcg7Zodfngql9W1igsQh9SrpNQLUKJ/DQrCu+SVpVZGWb5WBJwOrceVrVBqY8wSyCkHV5V5kESnKtDK7rxtteldQwuP6Jqisd7nUdOpTF4FF0gFTWgncGO3x9d9dNSrYH+lb/X+lfRunLomHKO0AsEWtA6FgMq66injzSOK+enn/0E6liZ1zqeur98a0LphHKuNC08oWOdSV480Txxqj4aOGkqjZ6Tp9IYPgWPdZkHl0ndip9a9eNSGXvays/a06o2KmMM4Wv43vPpVWuXSsPWGWVh/cyqMrej0Vwslg2vrlqvguisckbQh+G0dXa5HcvGQNK+6TkVZa1t51KXOaPGHJqhcLoXuuU8OukclxjI05loSovguyHnl7uczWi4oHEB9a1DI4tuSOFCasWpgE7MCKlcVLaVbDiRtqKkcXGVVKpBSUfwGRFmLCXFS6qaSxWTRsRw6F2Kl79TrwslvaDck+qHHbwMw6qog+kGLserpKIGJBxAN1dgB1RU2g5zoVxZ7vwLm/z0vKrcnYndA0h+dblREL4ZTA2wXH/XlHOO4uX4IeW15XaSV1qkLAvXYfzlNfB+jXnFrscmnCr5d5JuKCfNv8l0Yzlp/t2mm6jxim8thMcjNZ6qH1QzjR9INfT9T9S0qup5HoFoJDA8WVUdTuipEVfr4uDGwY1/8POmLHtWr8WiMGcwo1aVvymZY50ZoKTp1v8CKxVaBA=="),module$dist$__csound_wasm_inline=
+{};module$dist$__csound_wasm_inline.default=$jscompDefaultExport$$module$dist$__csound_wasm_inline;const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.proxy"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.endpoint"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.releaseProxy"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.thrown"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>"object"===typeof a&&null!==a||"function"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=
+{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&
+throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([["proxy",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],["throw",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);
+function expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener("message",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const m=h.slice(0,-1).reduce((p,q)=>p[q],a),l=h.reduce((p,q)=>p[q],a);switch(g){case "GET":var n=l;break;case "SET":m[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);
+n=!0;break;case "APPLY":n=l.apply(m,k);break;case "CONSTRUCT":const p=new l(...k);n=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case "ENDPOINT":const {port1:q,port2:u}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,u);n=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case "RELEASE":n=void 0;break;default:return}}catch(m){n={value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(n).catch(m=>
+({value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(m=>{const [l,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(m);b.postMessage(Object.assign(Object.assign({},l),{id:f}),p);"RELEASE"===g&&(b.removeEventListener("message",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return"MessagePort"===a.constructor.name}
+function closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error("Proxy has been released and is not useable");}
+function createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"RELEASE",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if("then"===
+g){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"GET",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,n]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,
+{type:"SET",path:[...b,g].map(m=>m.toString()),value:k},n).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"ENDPOINT"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if("bind"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,
+b.slice(0,-1));const [k,n]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"APPLY",path:b.map(m=>m.toString()),argumentList:k},n).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,
+{type:"CONSTRUCT",path:b.map(n=>n.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}
+function processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}
+function proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c="*"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}
+function toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:"HANDLER",name:b,value:d},e]}return[{type:"RAW",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}
+function fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case "HANDLER":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case "RAW":return a.value}}
+function requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener("message",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener("message",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}
+function generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;
+module$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;
+module$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};
+var LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b="log_with_warnings"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error("Invalid log level "+b+" allowed: "+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=
+function(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e="log_with_warnings"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>
+module$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split("{}");for(var k=[f.mockConsole,"%c"+b,c],n=0;n<h.length;n++)k.push(h[n]),void 0!==g[n]&&k.push(g[n]);if(h.length-1!==g.length)if("log_with_warnings"===f.logLevel)f.mockConsole.error("MissMatch amount of arguments");else if("log_raise_error"===f.logLevel)throw Error("MissMatch amount of arguments");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,
+c){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return"color: white; background-color: "+b+"; padding: 2px 6px; border-radius: 2px; font-size: 10px"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^
+d>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b="");b=a.getHash(b);for(var c="#",d=0;3>d;d++)c+=("00"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,"trace"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,"debug"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,
+"info"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,"warn"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,"error")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;
+const isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};
+logSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;
+module$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;
+module$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const csoundCreate$$module$src$modules$instantiation=a=>()=>a.exports.csoundCreateWasi();csoundCreate$$module$src$modules$instantiation.toString=()=>"create = async () => undefined;";const csoundDestroy$$module$src$modules$instantiation=a=>b=>a.exports.csoundDestroy(b);csoundDestroy$$module$src$modules$instantiation.toString=()=>"destroy = async () => undefined;";const csoundGetAPIVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetAPIVersion();
+csoundGetAPIVersion$$module$src$modules$instantiation.toString=()=>"getAPIVersion = async () => Number;";const csoundGetVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetVersion();csoundGetVersion$$module$src$modules$instantiation.toString=()=>"getVersion = async () => Number;";const csoundInitialize$$module$src$modules$instantiation=a=>(b,c)=>a.exports.csoundInitialize(c);csoundInitialize$$module$src$modules$instantiation.toString=()=>"initialize = async () => Number;";
+var module$src$modules$instantiation={};module$src$modules$instantiation.csoundCreate=csoundCreate$$module$src$modules$instantiation;module$src$modules$instantiation.csoundDestroy=csoundDestroy$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetAPIVersion=csoundGetAPIVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetVersion=csoundGetVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundInitialize=csoundInitialize$$module$src$modules$instantiation;const WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders=!1;function TextEncoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";return this}TextEncoderPoly$$module$src$utils$text_encoders.prototype.encode=function(a){if("string"!==typeof a)throw new TypeError("passed argument must be of type string "+a+" "+typeof a);a=unescape(encodeURIComponent(a));const b=new Uint8Array(a.length);[...a].forEach(function(c,d){b[d]=c.codePointAt(0)});return b};
+function TextDecoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";this.ignoreBOM=!1;this.trimNull=a=>{const b=a.indexOf("\x00");return-1<b?a.slice(0,Math.max(0,b)):a};this.decode=function(a,b){if(void 0===a)return"";if("boolean"!==typeof(void 0!==b&&"stream"in b?b.stream:!1))throw new TypeError("stream option must be boolean");if(ArrayBuffer.isView(a)){a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);const c=Array.from({length:a.length});a.forEach(function(d,e){c[e]=String.fromCodePoint(d)});
+return this.trimNull(c.join(""))}throw new TypeError("passed argument must be an array buffer view");}}
+const decoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextDecoderPoly$$module$src$utils$text_encoders:new TextDecoder("utf8"),encoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextEncoderPoly$$module$src$utils$text_encoders:new TextEncoder("utf8"),uint2String$$module$src$utils$text_encoders=a=>decoder$$module$src$utils$text_encoders.decode(a);var module$src$utils$text_encoders={};
+module$src$utils$text_encoders.decoder=decoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.encoder=encoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.uint2String=uint2String$$module$src$utils$text_encoders;const trimNull$$module$src$utils$trim_null=a=>{const b=a.indexOf("\x00");return-1<b?a.substr(0,b):a};var module$src$utils$trim_null={};module$src$utils$trim_null.trimNull=trimNull$$module$src$utils$trim_null;const freeStringPtr$$module$src$utils$string_pointers=(a,b)=>{a.exports.freeStringMem(b)},ptr2string$$module$src$utils$string_pointers=(a,b)=>{({buffer:a}=a.wasi.memory);b=new Uint8Array(a,b);b=uint2String$$module$src$utils$text_encoders(b);return trimNull$$module$src$utils$trim_null(b)},string2ptr$$module$src$utils$string_pointers=(a,b)=>{if("string"!==typeof b)console.error("Expected string but got",typeof b);else{b=encoder$$module$src$utils$text_encoders.encode(b);var c=a.exports.allocStringMem(b.length);
+({buffer:a}=a.wasi.memory);(new Uint8Array(a,c,b.length+1)).set(b);return c}};var module$src$utils$string_pointers={};module$src$utils$string_pointers.freeStringPtr=freeStringPtr$$module$src$utils$string_pointers;module$src$utils$string_pointers.ptr2string=ptr2string$$module$src$utils$string_pointers;module$src$utils$string_pointers.string2ptr=string2ptr$$module$src$utils$string_pointers;const csoundParseOrc$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundParseOrc(b,c);csoundParseOrc$$module$src$modules$performance.toString=()=>"parseOrc = async (orchestra) => Object;";const csoundCompileTree$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundCompileTree(b,c);csoundCompileTree$$module$src$modules$performance.toString=()=>"compileTree = async (tree) => Number;";
+const csoundCompileOrc$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileOrc(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileOrc$$module$src$modules$performance.toString=()=>"compileOrc = async (orchestra) => Number;";
+const csoundEvalCode$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundEvalCode(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundEvalCode$$module$src$modules$performance.toString=()=>"csoundEvalCode = async (orchestra) => Number;";const csoundStart$$module$src$modules$performance=a=>b=>a.exports.csoundStartWasi(b);csoundStart$$module$src$modules$performance.toString=()=>"start = async () => Number;";
+const csoundCompileCsd$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);let d;try{d=a.exports.csoundCompileCsd(b,c)}catch(e){console.error(e)}freeStringPtr$$module$src$utils$string_pointers(a,c);return d};csoundCompileCsd$$module$src$modules$performance.toString=()=>"compileCsd = async (path) => Number;";
+const csoundCompileCsdText$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileCsdText(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileCsdText$$module$src$modules$performance.toString=()=>"compileCsdText = async (csoundDocument) => Number;";const csoundPerform$$module$src$modules$performance=a=>b=>a.exports.csoundPerform(b);csoundPerform$$module$src$modules$performance.toString=()=>"perform = async () => Number;";
+const csoundPerformKsmps$$module$src$modules$performance=a=>b=>a.exports.csoundPerformKsmpsWasi(b);csoundPerformKsmps$$module$src$modules$performance.toString=()=>"performKsmps = async (csound) => Number;";const csoundPerformBuffer$$module$src$modules$performance=a=>b=>a.exports.csoundPerformBuffer(b);csoundPerformBuffer$$module$src$modules$performance.toString=()=>"performBuffer = async (csound) => Number;";const csoundStop$$module$src$modules$performance=a=>b=>a.exports.csoundStop(b);
+csoundStop$$module$src$modules$performance.toString=()=>"stop = async () => undefined;";const csoundCleanup$$module$src$modules$performance=a=>b=>a.exports.csoundCleanup(b);csoundCleanup$$module$src$modules$performance.toString=()=>"cleanup = async () => Number;";const csoundReset$$module$src$modules$performance=a=>b=>a.exports.csoundResetWasi(b);csoundReset$$module$src$modules$performance.toString=()=>"reset = async () => Number;";var module$src$modules$performance={};
+module$src$modules$performance.csoundCleanup=csoundCleanup$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsd=csoundCompileCsd$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsdText=csoundCompileCsdText$$module$src$modules$performance;module$src$modules$performance.csoundCompileOrc=csoundCompileOrc$$module$src$modules$performance;module$src$modules$performance.csoundCompileTree=csoundCompileTree$$module$src$modules$performance;
+module$src$modules$performance.csoundEvalCode=csoundEvalCode$$module$src$modules$performance;module$src$modules$performance.csoundParseOrc=csoundParseOrc$$module$src$modules$performance;module$src$modules$performance.csoundPerform=csoundPerform$$module$src$modules$performance;module$src$modules$performance.csoundPerformBuffer=csoundPerformBuffer$$module$src$modules$performance;module$src$modules$performance.csoundPerformKsmps=csoundPerformKsmps$$module$src$modules$performance;
+module$src$modules$performance.csoundReset=csoundReset$$module$src$modules$performance;module$src$modules$performance.csoundStart=csoundStart$$module$src$modules$performance;module$src$modules$performance.csoundStop=csoundStop$$module$src$modules$performance;const sizeOfPrimitive$$module$src$utils$native_sizes={int:4,MYFLT:4,char:1},sizeofStruct$$module$src$utils$native_sizes=a=>a.reduce((b,[,c,...d])=>b+("char"===c?sizeOfPrimitive$$module$src$utils$native_sizes[c]*d[0]:sizeOfPrimitive$$module$src$utils$native_sizes[c]),0);var module$src$utils$native_sizes={};module$src$utils$native_sizes.sizeOfPrimitive=sizeOfPrimitive$$module$src$utils$native_sizes;module$src$utils$native_sizes.sizeofStruct=sizeofStruct$$module$src$utils$native_sizes;const structBufferToObject$$module$src$utils$structure_buffer_to_object=(a,b)=>{[a]=a.reduce(([c,d],[e,f,...g])=>{g="char"===f?sizeOfPrimitive$$module$src$utils$native_sizes[f]*g[0]:sizeOfPrimitive$$module$src$utils$native_sizes[f];f="char"===f?trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(b.subarray(d,g)))||"":b[d];c[e]=f;return[c,d+g]},[{},0]);return a};var module$src$utils$structure_buffer_to_object={};
+module$src$utils$structure_buffer_to_object.structBufferToObject=structBufferToObject$$module$src$utils$structure_buffer_to_object;const CSOUND_PARAMS$$module$src$structures=[["debug_mode","int"],["buffer_frames","int"],["hardware_buffer_frames","int"],["displays","int"],["ascii_graphs","int"],["postscript_graphs","int"],["message_level","int"],["tempo","int"],["ring_bell","int"],["use_cscore","int"],["terminate_on_midi","int"],["heartbeat","int"],["defer_gen01_load","int"],["midi_key","int"],["midi_key_cps","int"],["midi_key_oct","int"],["midi_key_pch","int"],["midi_velocity","int"],["midi_velocity_amp","int"],["no_default_paths",
+"int"],["number_of_threads","int"],["syntax_check_only","int"],["csd_line_counts","int"],["compute_weights","int"],["realtime_mode","int"],["sample_accurate","int"],["sample_rate_override","MYFLT"],["control_rate_override","MYFLT"],["nchnls_override","int"],["nchnls_i_override","int"],["e0dbfs_override","MYFLT"],["daemon","int"],["ksmps_override","int"],["FFT_library","int"]],CS_MIDIDEVICE$$module$src$structures=[["device_name","char",64],["interface_name","char",64],["device_id","char",64],["midi_module",
+"char",64],["isOutput","int"]];var module$src$structures={};const csoundGetSr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSr(b);csoundGetSr$$module$src$modules$attributes.toString=()=>"getSr = async () => Number;";const csoundGetKr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKr(b);csoundGetKr$$module$src$modules$attributes.toString=()=>"getKr = async () => Number;";const csoundGetKsmps$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKsmps(b);csoundGetKsmps$$module$src$modules$attributes.toString=()=>"getKsmps = async () => Number;";
+const csoundGetNchnls$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnls(b);csoundGetNchnls$$module$src$modules$attributes.toString=()=>"getNchnls = async () => Number;";const csoundGetNchnlsInput$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnlsInput(b);csoundGetNchnlsInput$$module$src$modules$attributes.toString=()=>"getNchnlsInput = async () => Number;";const csoundGet0dBFS$$module$src$modules$attributes=a=>b=>a.exports.csoundGet0dBFS(b);
+csoundGet0dBFS$$module$src$modules$attributes.toString=()=>"get0dBFS = async () => Number;";const csoundGetA4$$module$src$modules$attributes=a=>b=>a.exports.csoundGetA4(b);csoundGetA4$$module$src$modules$attributes.toString=()=>"getA4 = async () => Number;";const csoundGetCurrentTimeSamples$$module$src$modules$attributes=a=>b=>a.exports.csoundGetCurrentTimeSamples(b);csoundGetCurrentTimeSamples$$module$src$modules$attributes.toString=()=>"getCurrentTimeSamples = async () => Number;";
+const csoundGetSizeOfMYFLT$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSizeOfMYFLT(b);csoundGetSizeOfMYFLT$$module$src$modules$attributes.toString=()=>"getSizeOfMYFLT = async () => Number;";const csoundSetOption$$module$src$modules$attributes=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundSetOption(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundSetOption$$module$src$modules$attributes.toString=()=>"setOption = async (option) => Number;";
+const csoundSetParams$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetParams(b,c)};csoundSetParams$$module$src$modules$attributes.toString=()=>"setParams = async (csoundParams) => undefined;";
+const csoundGetParams$$module$src$modules$attributes=a=>b=>{var {buffer:c}=a.wasi.memory;const d=sizeofStruct$$module$src$utils$native_sizes(CSOUND_PARAMS$$module$src$structures),e=a.exports.allocCsoundParamsStruct();c=new Uint8Array(c,e,d);a.exports.csoundGetParams(b,e);b=structBufferToObject$$module$src$utils$structure_buffer_to_object(CSOUND_PARAMS$$module$src$structures,c);a.exports.freeCsoundParams(e);return b};csoundGetParams$$module$src$modules$attributes.toString=()=>"getParams = async () => CSOUND_PARAMS;";
+const csoundGetDebug$$module$src$modules$attributes=a=>b=>a.exports.csoundGetDebug(b);csoundGetDebug$$module$src$modules$attributes.toString=()=>"getDebug = async () => Number;";const csoundSetDebug$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetDebug(b,c)};csoundSetDebug$$module$src$modules$attributes.toString=()=>"setDebug = async (number) => undefined;";var module$src$modules$attributes={};module$src$modules$attributes.csoundGet0dBFS=csoundGet0dBFS$$module$src$modules$attributes;
+module$src$modules$attributes.csoundGetA4=csoundGetA4$$module$src$modules$attributes;module$src$modules$attributes.csoundGetCurrentTimeSamples=csoundGetCurrentTimeSamples$$module$src$modules$attributes;module$src$modules$attributes.csoundGetDebug=csoundGetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKr=csoundGetKr$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKsmps=csoundGetKsmps$$module$src$modules$attributes;
+module$src$modules$attributes.csoundGetNchnls=csoundGetNchnls$$module$src$modules$attributes;module$src$modules$attributes.csoundGetNchnlsInput=csoundGetNchnlsInput$$module$src$modules$attributes;module$src$modules$attributes.csoundGetParams=csoundGetParams$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSizeOfMYFLT=csoundGetSizeOfMYFLT$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSr=csoundGetSr$$module$src$modules$attributes;
+module$src$modules$attributes.csoundSetDebug=csoundSetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundSetOption=csoundSetOption$$module$src$modules$attributes;module$src$modules$attributes.csoundSetParams=csoundSetParams$$module$src$modules$attributes;const csoundGetInputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBufferSize(b);csoundGetInputBufferSize$$module$src$modules$rtaudio.toString=()=>"getInputBufferSize = async () => Number;";const csoundGetOutputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBufferSize(b);csoundGetOutputBufferSize$$module$src$modules$rtaudio.toString=()=>"getOutputBufferSize = async () => Number;";const csoundGetInputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBuffer(b);
+csoundGetInputBuffer$$module$src$modules$rtaudio.toString=()=>"getInputBuffer = async () => Number;";const csoundGetOutputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBuffer(b);csoundGetOutputBuffer$$module$src$modules$rtaudio.toString=()=>"getOutputBuffer = async () => Number;";const csoundGetSpin$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpin(b);csoundGetSpin$$module$src$modules$rtaudio.toString=()=>"getSpin = async (csound) => Number;";
+const csoundGetSpout$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpout(b);csoundGetSpout$$module$src$modules$rtaudio.toString=()=>"getSpout = async () => Number;";var module$src$modules$rtaudio={};module$src$modules$rtaudio.csoundGetInputBuffer=csoundGetInputBuffer$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetInputBufferSize=csoundGetInputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetOutputBuffer=csoundGetOutputBuffer$$module$src$modules$rtaudio;
+module$src$modules$rtaudio.csoundGetOutputBufferSize=csoundGetOutputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpin=csoundGetSpin$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpout=csoundGetSpout$$module$src$modules$rtaudio;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}
+function adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);
+function all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}
+function and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}
+function anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.split("").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}
+function apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;
+function __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&"constructor"!==c&&("object"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),"function"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}
+function __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&"undefined"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}
+function __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,
+b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;
+for(;d<f;d++){if("object"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);"function"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&"constructor"!==e&&("object"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):"function"===typeof a[e]&&(d[e]=a[e](...c)));return d}
+function applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);
+function _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;
+function assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d="string"===typeof a?a.split(".").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e="object"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&
+isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);
+function _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}
+function _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};
+case 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,n){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,n,m){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,n,m,l){return b.apply(this,arguments)}}}
+function curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error("First argument to _arity must be a non-negative integer no greater than ten");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}
+function bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}
+function chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error("min must not be greater than max in clamp(min, max, value)");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);
+function clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]="object"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}
+class ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError("reduce: list must be array or iterable");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}
+const reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);
+function _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};
+case 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,n){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,n,m){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,n,m,l){return b.apply(this,arguments)};default:throw Error("First argument to _arity must be a non-negative integer no greater than ten");}}
+function _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}
+function pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("pipe requires at least one argument");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}
+function compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("compose requires at least one argument");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof a?`${a}${b}`:[...a,...b]}
+function cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}
+function mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;
+function map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}
+function max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}
+function converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}
+function count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}
+const dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}
+function type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return"Null";if(void 0===a)return"Undefined";if(Number.isNaN(a))return"NaN";a=Object.prototype.toString.call(a).slice(8,-1);return"AsyncFunction"===a?"Promise":a}
+function _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}
+function _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property 'indexOf' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}
+function _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}
+function parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return["Error","TypeError"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}
+function equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if("Function"===c)return void 0===a.name?!1:a.name===b.name;if(["NaN","Undefined","Null"].includes(c))return!0;if("Number"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if(["String","Boolean"].includes(c))return a.toString()===
+b.toString();if("Array"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);
+if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if("Set"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if("Object"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});
+return f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \'indexOf\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}
+class _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Null","Undefined","NaN"].includes(b)?b in this.items?!1:this.items[b]=!0:["Object","Array"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}
+function uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}
+function dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}
+function drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}
+function dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if("function"!==typeof a)throw Error(`'predicate' is from wrong type ${typeof a}`);if(!c&&"string"!==typeof b)throw Error(`'iterable' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):
+(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join("")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}
+function dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}
+function dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join("")}
+function either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}
+function endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if("string"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}
+function prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);
+function evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}
+function evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if("Object"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return"Function"===e?a[d](c):"Object"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}
+function evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error("iterableType !== rulesType");if(!["Object","Array"].includes(c))throw Error(`'iterable' and 'rules' are from wrong type ${c}`);return"Object"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,
+b)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}
+function filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error("Incorrect iterable input");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}
+function find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}
+function findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}
+function flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}
+function flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error("R.flip doesn't work with arity > 4");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}
+function forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}
+function fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}
+function groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError("list.reduce is not a function");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),n=0===e.length;h=h===b.length-1;if(k)return n&&e.push(f),e.push(g),h&&d.push(e),g;if(n)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},
+void 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b="."){return"string"===typeof a?a.split(b):a}
+function path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}
+function hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[0]||"":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;
+function identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===("boolean"===typeof a?a:a(...d))?b(...d):c(...d)}
+const ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}
+function indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}
+function indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}
+function init$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}
+function intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}
+function isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Undefined","NaN","Number","Null"].includes(b)?!1:a?"Object"===b?0===Object.keys(a).length:"Array"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}
+function join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[a.length-1]||"":a[a.length-1]}
+function lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||"string"===typeof a?a.length:NaN}
+function lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return"[object String]"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}
+function updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);
+function lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}
+function lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}
+function mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);
+function sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}
+function mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}
+function mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}
+function mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}
+const mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);
+function ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}
+function _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,
+d,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}
+function modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);
+function modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],
+b,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}
+function moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error("Rambda.move does not support negative indexes");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);
+function multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}
+function not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}
+function omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}
+function on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}
+function once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});
+function overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);
+function partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}
+function partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}
+function partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}
+function pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);
+function pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);
+function paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}
+function pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}
+function pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}
+function pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof b?[a].concat(b.split("")):[a].concat(b)}
+const product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);
+function propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);
+function props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error("propsToPick is not a list");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}
+const propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);
+function range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError("Both arguments to range must be numbers");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}
+function reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}
+const replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.split("").reverse().join(""):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}
+const set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);
+function sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}
+function split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||"Function"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}
+function take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():"string"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}
+function splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property 'slice' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&"string"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,
+b)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error("First argument to splitEvery must be a positive integer");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}
+function splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property 'length' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}
+function startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}
+function subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}
+function symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}
+function T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}
+function takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return"string"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}
+function takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join("")}
+function takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join("")}
+function tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof a)throw new TypeError(`\u2018test\u2019 requires a value of type RegExp as its first argument; received "${a}"`);return-1!==b.search(a)}
+function times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError("n must be an integer");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}
+function toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}
+function trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>["Promise","Function"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));
+function tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn '${a}'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}
+function union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}
+function uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}
+function uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}
+function unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}
+function values$$module$node_modules$rambda$dist$rambda_mjs(a){return"Object"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}
+function whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}
+function whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}
+function whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}
+function without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}
+function zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}
+function zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;
+module$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;const csoundSetMidiCallbacks$$module$src$modules$rtmidi=a=>b=>{a.exports.csoundSetMidiCallbacks(b)},csoundGetMIDIDevList$$module$src$modules$rtmidi=a=>(b,c)=>{const {buffer:d}=a.wasi.memory,e=a.exports.csoundGetMIDIDevList(b,void 0,c?1:0);if(0===e)return[];const f=sizeofStruct$$module$src$utils$native_sizes(CS_MIDIDEVICE$$module$src$structures),g=a.exports.allocCsMidiDeviceStruct(e);a.exports.csoundGetMIDIDevList(b,g,c?1:0);const h=new Uint8Array(d,g,f*e);b=range$$module$node_modules$rambda$dist$rambda_mjs(0,
+e).map(k=>structBufferToObject$$module$src$utils$structure_buffer_to_object(CS_MIDIDEVICE$$module$src$structures,h.subarray(k*f,f)));a.exports.freeCsMidiDeviceStruct(g);return b};csoundGetMIDIDevList$$module$src$modules$rtmidi.toString=()=>"getMIDIDevList = async (isOutput) => Object;";
+const csoundGetRtMidiName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getRtMidiName(b);c=new Uint8Array(c,b,128);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetRtMidiName$$module$src$modules$rtmidi.toString=()=>"getRtMidiName = async () => String;";
+const csoundGetMidiOutFileName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getMidiOutFileName(b);c=new Uint8Array(c,b,128);b&&0<b.length&&freeStringPtr$$module$src$utils$string_pointers(a,b);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""},_isRequestingRtMidiInput$$module$src$modules$rtmidi=a=>b=>a.exports.isRequestingRtMidiInput(b),csoundPushMidiMessage$$module$src$modules$rtmidi=a=>(b,c,d,e)=>{a.exports.pushMidiMessage(b,
+c,d,e)};csoundPushMidiMessage$$module$src$modules$rtmidi.toString=()=>"midiMessage = async (status, data1, data2) => undefined;";var module$src$modules$rtmidi={};module$src$modules$rtmidi._isRequestingRtMidiInput=_isRequestingRtMidiInput$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMIDIDevList=csoundGetMIDIDevList$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMidiOutFileName=csoundGetMidiOutFileName$$module$src$modules$rtmidi;
+module$src$modules$rtmidi.csoundGetRtMidiName=csoundGetRtMidiName$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundPushMidiMessage=csoundPushMidiMessage$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundSetMidiCallbacks=csoundSetMidiCallbacks$$module$src$modules$rtmidi;const csoundInputMessage$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessage(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessage$$module$src$modules$control_events.toString=()=>"inputMessage = async (scoreEvent) => Number;";
+const csoundInputMessageAsync$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessageAsync(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessageAsync$$module$src$modules$control_events.toString=()=>"inputMessageAsync = async (scoreEvent) => Number;";
+const csoundGetControlChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetControlChannelWasi(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundGetControlChannel$$module$src$modules$control_events.toString=()=>"getControlChannel = async (channelName) => Number;";
+const csoundSetControlChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);a.exports.csoundSetControlChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c)};csoundSetControlChannel$$module$src$modules$control_events.toString=()=>"setControlChannel = async (channelName, value) => void;";
+const csoundGetStringChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetStringChannelWasi(b,c);const d=ptr2string$$module$src$utils$string_pointers(a,b);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,b);return d};csoundGetStringChannel$$module$src$modules$control_events.toString=()=>"getStringChannel = async (channelName) => String;";
+const csoundSetStringChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);a.exports.csoundSetStringChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d)};csoundSetStringChannel$$module$src$modules$control_events.toString=()=>"setStringChannel = async (channelName, value) => void;";var module$src$modules$control_events={};
+module$src$modules$control_events.csoundGetControlChannel=csoundGetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundGetStringChannel=csoundGetStringChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessage=csoundInputMessage$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessageAsync=csoundInputMessageAsync$$module$src$modules$control_events;
+module$src$modules$control_events.csoundSetControlChannel=csoundSetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundSetStringChannel=csoundSetStringChannel$$module$src$modules$control_events;const csoundGetOutputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetOutputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetOutputName$$module$src$modules$general_io.toString=()=>"getOutputName = async () => String;";
+const csoundGetInputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetInputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetInputName$$module$src$modules$general_io.toString=()=>"getInputName = async (csound) => String;";var module$src$modules$general_io={};module$src$modules$general_io.csoundGetInputName=csoundGetInputName$$module$src$modules$general_io;
+module$src$modules$general_io.csoundGetOutputName=csoundGetOutputName$$module$src$modules$general_io;const csoundAppendEnv$$module$src$modules$extra=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);b=a.exports.csoundAppendEnv(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d);return b};csoundAppendEnv$$module$src$modules$extra.toString=()=>"appendEnv = async (csound, variable, value) => Number;";const csoundShouldDaemonize$$module$src$modules$extra=a=>b=>a.exports.csoundShouldDaemonize(b);
+var module$src$modules$extra={};module$src$modules$extra.csoundAppendEnv=csoundAppendEnv$$module$src$modules$extra;module$src$modules$extra.csoundShouldDaemonize=csoundShouldDaemonize$$module$src$modules$extra;const csoundIsScorePending$$module$src$modules$score_handling=a=>b=>a.exports.csoundIsScorePending(b);csoundIsScorePending$$module$src$modules$score_handling.toString=()=>"isScorePending = async () => Number;";const csoundSetScorePending$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScorePending(b,c);csoundSetScorePending$$module$src$modules$score_handling.toString=()=>"setScorePending = async (pending) => Number;";
+const csoundReadScore$$module$src$modules$score_handling=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundReadScore(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundReadScore$$module$src$modules$score_handling.toString=()=>"readScore = async (score) => Number;";const csoundGetScoreTime$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreTime(b);csoundGetScoreTime$$module$src$modules$score_handling.toString=()=>"getScoreTime = async () => Number;";
+const csoundGetScoreOffsetSeconds$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreOffsetSeconds(b);csoundGetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"getScoreOffsetSeconds = async () => Number;";const csoundSetScoreOffsetSeconds$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScoreOffsetSeconds(b,c);csoundSetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"setScoreOffsetSeconds = async () => Number;";
+const csoundRewindScore$$module$src$modules$score_handling=a=>b=>a.exports.csoundRewindScore(b);csoundRewindScore$$module$src$modules$score_handling.toString=()=>"rewindScore = async () => undefined;";var module$src$modules$score_handling={};module$src$modules$score_handling.csoundGetScoreOffsetSeconds=csoundGetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundGetScoreTime=csoundGetScoreTime$$module$src$modules$score_handling;
+module$src$modules$score_handling.csoundIsScorePending=csoundIsScorePending$$module$src$modules$score_handling;module$src$modules$score_handling.csoundReadScore=csoundReadScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundRewindScore=csoundRewindScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScoreOffsetSeconds=csoundSetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScorePending=csoundSetScorePending$$module$src$modules$score_handling;const csoundTableLength$$module$src$modules$table=a=>(b,c)=>a.exports.csoundTableLength(b,c);csoundTableLength$$module$src$modules$table.toString=()=>"tableLength = async (tableNum) => Number;";const csoundTableGet$$module$src$modules$table=a=>(b,c,d)=>a.exports.csoundTableGet(b,c,d);csoundTableGet$$module$src$modules$table.toString=()=>"tableGet = async (tableNum, tableIndex) => Number;";const csoundTableSet$$module$src$modules$table=a=>(b,c,d,e)=>a.exports.csoundTableSet(b,c,d,e);
+csoundTableSet$$module$src$modules$table.toString=()=>"tableSet = async (tableNum, tableIndex, value) => undefined;";const csoundTableCopyIn$$module$src$modules$table=a=>(b,c,d)=>{const e=a.exports.allocFloatArray(d.length);(new Float64Array(a.wasi.memory.buffer,e,d.length)).set(d);a.exports.csoundTableCopyIn(b,c,e);a.exports.freeFloatArrayMem(e)};csoundTableCopyIn$$module$src$modules$table.toString=()=>"tableCopyIn = async (tableNum, float64Array) => undefined;";
+const csoundTableCopyOut$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundTableLength(b,c);if(0<d){const e=a.exports.allocFloatArray(d);a.exports.csoundTableCopyOut(b,c,e);({buffer:b}=a.wasi.memory);d=new Float64Array(b,e,d);a.exports.freeFloatArrayMem(e);return Float64Array.from(d)}};csoundTableCopyOut$$module$src$modules$table.toString=()=>"tableCopyOut = async (tableNum) => ?Float64Array;";const csoundGetTable$$module$src$modules$table=csoundTableCopyOut$$module$src$modules$table;
+csoundTableCopyOut$$module$src$modules$table.toString=csoundTableCopyOut$$module$src$modules$table.toString;const csoundGetTableArgs$$module$src$modules$table=a=>(b,c)=>{const d=a.exports.allocFloatArray(1024);a.exports.csoundGetTableArgs(b,d,c);({buffer:b}=a.wasi.memory);b=new Float64Array(b,d,1024);a.exports.freeFloatArrayMem(d);return b};csoundGetTableArgs$$module$src$modules$table.toString=()=>"getTableArgs = async (tableNum) => ?Float64Array;";
+const csoundIsNamedGEN$$module$src$modules$table=a=>(b,c)=>a.exports.csoundIsNamedGEN(b,c);csoundIsNamedGEN$$module$src$modules$table.toString=()=>"isNamedGEN = async (tableNum) => number;";const csoundGetNamedGEN$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundIsNamedGEN(b,c);if(0<d){const e=a.exports.allocStringMem(d);a.exports.csoundGetNamedGEN(b,e,c,d);({buffer:b}=a.wasi.memory);d=new Uint8Array(b,e,d);return uint2String$$module$src$utils$text_encoders(d)}};
+csoundGetNamedGEN$$module$src$modules$table.toString=()=>"getNamedGEN = async (tableNum) => ?string;";var module$src$modules$table={};module$src$modules$table.csoundGetNamedGEN=csoundGetNamedGEN$$module$src$modules$table;module$src$modules$table.csoundGetTable=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundGetTableArgs=csoundGetTableArgs$$module$src$modules$table;module$src$modules$table.csoundIsNamedGEN=csoundIsNamedGEN$$module$src$modules$table;
+module$src$modules$table.csoundTableCopyIn=csoundTableCopyIn$$module$src$modules$table;module$src$modules$table.csoundTableCopyOut=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundTableGet=csoundTableGet$$module$src$modules$table;module$src$modules$table.csoundTableLength=csoundTableLength$$module$src$modules$table;module$src$modules$table.csoundTableSet=csoundTableSet$$module$src$modules$table;function writeFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.writeFile(c,b)}}writeFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";function appendFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.appendFile(c,b)}}appendFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";
+function readFile$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readFile(c)}readFile$$module$src$filesystem$worker_fs.toString=()=>"async (path) => ?Uint8Array";function unlink$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.unlink(c)}unlink$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";function readdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readdir(c)}readdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => string[]";
+function mkdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.mkdir(c)}mkdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";var module$src$filesystem$worker_fs={};module$src$filesystem$worker_fs.appendFile=appendFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.mkdir=mkdir$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readFile=readFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readdir=readdir$$module$src$filesystem$worker_fs;
+module$src$filesystem$worker_fs.unlink=unlink$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.writeFile=writeFile$$module$src$filesystem$worker_fs;const api$$module$src$libcsound={csoundCreate:csoundCreate$$module$src$modules$instantiation,csoundDestroy:csoundDestroy$$module$src$modules$instantiation,csoundGetAPIVersion:csoundGetAPIVersion$$module$src$modules$instantiation,csoundGetVersion:csoundGetVersion$$module$src$modules$instantiation,csoundInitialize:csoundInitialize$$module$src$modules$instantiation,csoundParseOrc:csoundParseOrc$$module$src$modules$performance,csoundCompileTree:csoundCompileTree$$module$src$modules$performance,csoundCompileOrc:csoundCompileOrc$$module$src$modules$performance,
+csoundEvalCode:csoundEvalCode$$module$src$modules$performance,csoundStart:csoundStart$$module$src$modules$performance,csoundCompileCsd:csoundCompileCsd$$module$src$modules$performance,csoundCompileCsdText:csoundCompileCsdText$$module$src$modules$performance,csoundPerform:csoundPerform$$module$src$modules$performance,csoundPerformKsmps:csoundPerformKsmps$$module$src$modules$performance,csoundPerformBuffer:csoundPerformBuffer$$module$src$modules$performance,csoundStop:csoundStop$$module$src$modules$performance,
+csoundCleanup:csoundCleanup$$module$src$modules$performance,csoundReset:csoundReset$$module$src$modules$performance,csoundGetSr:csoundGetSr$$module$src$modules$attributes,csoundGetKr:csoundGetKr$$module$src$modules$attributes,csoundGetKsmps:csoundGetKsmps$$module$src$modules$attributes,csoundGetNchnls:csoundGetNchnls$$module$src$modules$attributes,csoundGetNchnlsInput:csoundGetNchnlsInput$$module$src$modules$attributes,csoundGet0dBFS:csoundGet0dBFS$$module$src$modules$attributes,csoundGetA4:csoundGetA4$$module$src$modules$attributes,
+csoundGetCurrentTimeSamples:csoundGetCurrentTimeSamples$$module$src$modules$attributes,csoundGetSizeOfMYFLT:csoundGetSizeOfMYFLT$$module$src$modules$attributes,csoundSetOption:csoundSetOption$$module$src$modules$attributes,csoundSetParams:csoundSetParams$$module$src$modules$attributes,csoundGetParams:csoundGetParams$$module$src$modules$attributes,csoundGetDebug:csoundGetDebug$$module$src$modules$attributes,csoundSetDebug:csoundSetDebug$$module$src$modules$attributes,csoundGetInputBufferSize:csoundGetInputBufferSize$$module$src$modules$rtaudio,
+csoundGetOutputBufferSize:csoundGetOutputBufferSize$$module$src$modules$rtaudio,csoundGetInputBuffer:csoundGetInputBuffer$$module$src$modules$rtaudio,csoundGetOutputBuffer:csoundGetOutputBuffer$$module$src$modules$rtaudio,csoundGetSpin:csoundGetSpin$$module$src$modules$rtaudio,csoundGetSpout:csoundGetSpout$$module$src$modules$rtaudio,csoundGetMIDIDevList:csoundGetMIDIDevList$$module$src$modules$rtmidi,csoundSetMidiCallbacks:csoundSetMidiCallbacks$$module$src$modules$rtmidi,csoundGetRtMidiName:csoundGetRtMidiName$$module$src$modules$rtmidi,
+csoundGetMidiOutFileName:csoundGetMidiOutFileName$$module$src$modules$rtmidi,csoundPushMidiMessage:csoundPushMidiMessage$$module$src$modules$rtmidi,_isRequestingRtMidiInput:_isRequestingRtMidiInput$$module$src$modules$rtmidi,csoundInputMessage:csoundInputMessage$$module$src$modules$control_events,csoundInputMessageAsync:csoundInputMessageAsync$$module$src$modules$control_events,csoundGetControlChannel:csoundGetControlChannel$$module$src$modules$control_events,csoundSetControlChannel:csoundSetControlChannel$$module$src$modules$control_events,
+csoundGetStringChannel:csoundGetStringChannel$$module$src$modules$control_events,csoundSetStringChannel:csoundSetStringChannel$$module$src$modules$control_events,csoundGetInputName:csoundGetInputName$$module$src$modules$general_io,csoundGetOutputName:csoundGetOutputName$$module$src$modules$general_io,csoundAppendEnv:csoundAppendEnv$$module$src$modules$extra,csoundShouldDaemonize:csoundShouldDaemonize$$module$src$modules$extra,csoundIsScorePending:csoundIsScorePending$$module$src$modules$score_handling,
+csoundSetScorePending:csoundSetScorePending$$module$src$modules$score_handling,csoundReadScore:csoundReadScore$$module$src$modules$score_handling,csoundGetScoreTime:csoundGetScoreTime$$module$src$modules$score_handling,csoundGetScoreOffsetSeconds:csoundGetScoreOffsetSeconds$$module$src$modules$score_handling,csoundSetScoreOffsetSeconds:csoundSetScoreOffsetSeconds$$module$src$modules$score_handling,csoundRewindScore:csoundRewindScore$$module$src$modules$score_handling,csoundTableLength:csoundTableLength$$module$src$modules$table,
+csoundTableGet:csoundTableGet$$module$src$modules$table,csoundTableSet:csoundTableSet$$module$src$modules$table,csoundTableCopyIn:csoundTableCopyIn$$module$src$modules$table,csoundTableCopyOut:csoundTableCopyOut$$module$src$modules$table,csoundGetTable:csoundTableCopyOut$$module$src$modules$table,csoundGetTableArgs:csoundGetTableArgs$$module$src$modules$table,csoundIsNamedGEN:csoundIsNamedGEN$$module$src$modules$table,csoundGetNamedGEN:csoundGetNamedGEN$$module$src$modules$table,fs:module$src$filesystem$worker_fs};
+var $jscompDefaultExport$$module$src$libcsound=function(a){return mergeAll$$module$node_modules$rambda$dist$rambda_mjs([reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,api$$module$src$libcsound[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(dissoc$$module$node_modules$rambda$dist$rambda_mjs("fs")(api$$module$src$libcsound))),reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,
+api$$module$src$libcsound.fs[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(module$src$filesystem$worker_fs))])},module$src$libcsound={};module$src$libcsound.api=api$$module$src$libcsound;module$src$libcsound.default=$jscompDefaultExport$$module$src$libcsound;const appendBuffers$$module$src$utils=(a,b)=>{const c=new Uint8Array(a.byteLength+b.byteLength);c.set(new Uint8Array(a),0);c.set(new Uint8Array(b),a.byteLength);return c.buffer},nearestPowerOf2$$module$src$utils=a=>1<<31-Math.clz32(a),isIos$$module$src$utils=()=>/iPhone|iPad|iPod/.test(navigator.userAgent),isFirefox$$module$src$utils=()=>navigator.userAgent.toLowerCase().includes("firefox"),isSafari$$module$src$utils=()=>"string"===typeof navigator.vendor&&navigator.vendor.includes("Apple"),isSabSupported$$module$src$utils=
+()=>!isFirefox$$module$src$utils()&&window&&void 0!==window.Atomics&&void 0!==window.SharedArrayBuffer,areWorkletsSupported$$module$src$utils=()=>void 0!==AudioNode&&void 0!==AudioWorkletNode,WebkitAudioContext$$module$src$utils=()=>{if(void 0!==window.webkitAudioContext)return window.webkitAudioContext;if(void 0!==window.AudioContext)return window.AudioContext},isScriptProcessorNodeSupported$$module$src$utils=()=>{const a=WebkitAudioContext$$module$src$utils();return void 0!==a&&void 0!==a.prototype.createScriptProcessor},
+csoundApiRename$$module$src$utils=a=>{let b=a.replace(/^csound/i,"");"csoundPushMidiMessage"===a&&(b="midiMessage");return b.charAt(0).toLowerCase()+b.slice(1)},stopableStates$$module$src$utils=new Set(["realtimePerformanceStarted","realtimePerformancePaused","realtimePerformanceResumed","renderStarted"]),makeProxyCallback$$module$src$utils=(a,b,c,d)=>async(...e)=>{if(!d||!stopableStates$$module$src$utils.has(d)){const f={};0<Object.values(f).length&&await a.callUncloned("syncWorkerFs",[b,f])}return await a.callUncloned(c,
+[b,...e])},makeSingleThreadCallback$$module$src$utils=(a,b)=>async(...c)=>await b.apply({},[a,...c]),fetchPlugins$$module$src$utils=async a=>await Promise.all(a.map(async b=>(await fetch(b)).arrayBuffer()));var module$src$utils={};module$src$utils.WebkitAudioContext=WebkitAudioContext$$module$src$utils;module$src$utils.appendBuffers=appendBuffers$$module$src$utils;module$src$utils.areWorkletsSupported=areWorkletsSupported$$module$src$utils;module$src$utils.csoundApiRename=csoundApiRename$$module$src$utils;
+module$src$utils.fetchPlugins=fetchPlugins$$module$src$utils;module$src$utils.isIos=isIos$$module$src$utils;module$src$utils.isSabSupported=isSabSupported$$module$src$utils;module$src$utils.isSafari=isSafari$$module$src$utils;module$src$utils.isScriptProcessorNodeSupported=isScriptProcessorNodeSupported$$module$src$utils;module$src$utils.makeProxyCallback=makeProxyCallback$$module$src$utils;module$src$utils.makeSingleThreadCallback=makeSingleThreadCallback$$module$src$utils;
+module$src$utils.nearestPowerOf2=nearestPowerOf2$$module$src$utils;module$src$utils.stopableStates=stopableStates$$module$src$utils;const messageEventHandler$$module$src$mains$messages_main=a=>b=>{if(b.data.log)a&&a.publicEvents&&a.publicEvents.triggerMessage?a.publicEvents.triggerMessage(b.data.log):console.log("object"===typeof b.data.log&&"string"===typeof b.data.log.log?b.data.log.log:b.data.log);else if(b.data.playStateChange&&a&&a.onPlayStateChange)a.onPlayStateChange(b.data.playStateChange)},iterableMessageChannel$$module$src$mains$messages_main=()=>{const {port1:a,port2:b}=new MessageChannel;return[a,b]},safelyClosePorts$$module$src$mains$messages_main=
+([a,b])=>{if(void 0!==a.close)try{a.close()}catch(c){}if(void 0!==b.close)try{b.close()}catch(c){}};
+class IPCMessagePorts$$module$src$mains$messages_main{constructor(){const {port1:a,port2:b}=new MessageChannel;this.mainMessagePort=a;this.workerMessagePort=b;const {port1:c,port2:d}=new MessageChannel;this.mainMessagePortAudio=c;this.workerMessagePortAudio=d;const {port1:e,port2:f}=new MessageChannel;this.csoundWorkerFrameRequestPort=e;this.audioWorkerFrameRequestPort=f;const {port1:g,port2:h}=new MessageChannel;this.csoundWorkerAudioInputPort=g;this.audioWorkerAudioInputPort=h;const {port1:k,port2:n}=
+new MessageChannel;this.csoundWorkerRtMidiPort=k;this.csoundMainRtMidiPort=n;const {port1:m,port2:l}=new MessageChannel;this.sabWorkerCallbackReply=m;this.sabMainCallbackReply=l;const {port1:p,port2:q}=new MessageChannel;this.mainMessagePort2=p;this.workerMessagePort2=q;this.restartAudioWorkerPorts=this.restartAudioWorkerPorts.bind(this)}restartAudioWorkerPorts(){safelyClosePorts$$module$src$mains$messages_main([this.csoundWorkerAudioInputPort,this.audioWorkerAudioInputPort]);[this.csoundWorkerAudioInputPort,
+this.audioWorkerAudioInputPort]=iterableMessageChannel$$module$src$mains$messages_main();safelyClosePorts$$module$src$mains$messages_main([this.mainMessagePortAudio,this.workerMessagePortAudio]);[this.mainMessagePortAudio,this.workerMessagePortAudio]=iterableMessageChannel$$module$src$mains$messages_main();safelyClosePorts$$module$src$mains$messages_main([this.csoundWorkerFrameRequestPort,this.audioWorkerFrameRequestPort]);[this.csoundWorkerFrameRequestPort,this.audioWorkerFrameRequestPort]=iterableMessageChannel$$module$src$mains$messages_main();
+safelyClosePorts$$module$src$mains$messages_main([this.mainMessagePort2,this.workerMessagePort2]);[this.mainMessagePort2,this.workerMessagePort2]=iterableMessageChannel$$module$src$mains$messages_main()}}var module$src$mains$messages_main={};module$src$mains$messages_main.IPCMessagePorts=IPCMessagePorts$$module$src$mains$messages_main;module$src$mains$messages_main.messageEventHandler=messageEventHandler$$module$src$mains$messages_main;function clearArray$$module$src$utils$clear_array(a){for(;0<a.length;)a.pop()}var module$src$utils$clear_array={};module$src$utils$clear_array.clearArray=clearArray$$module$src$utils$clear_array;class EventPromises$$module$src$utils$event_promises{constructor(){this.timeoutTimers=[];this.resumeResolver=this.resumePromise=this.pauseResolver=this.pausePromise=this.stopResolver=this.stopPromise=this.startResolver=this.startPromise=void 0;this.createStartPromise=this.createStartPromise.bind(this);this.releaseStartPromise=this.releaseStartPromise.bind(this);this.createStopPromise=this.createStopPromise.bind(this);this.releaseStopPromise=this.releaseStopPromise.bind(this);this.createPausePromise=
+this.createPausePromise.bind(this);this.releasePausePromise=this.releasePausePromise.bind(this);this.createResumePromise=this.createResumePromise.bind(this);this.releaseResumePromise=this.releaseResumePromise.bind(this);this.waitForStart=this.waitForStart.bind(this);this.waitForStop=this.waitForStop.bind(this);this.isWaitingToStart=this.isWaitingToStart.bind(this);this.isWaitingToStop=this.isWaitingToStop.bind(this)}isWaitingToStart(){return void 0!==this.startPromise}isWaitingToStop(){return void 0!==
+this.stopPromise}isWaiting(a){return void 0!==this.startPromise?(console.error(`cannot ${a} while starting, did you forget to 'await'?`),!0):void 0!==this.stopPromise?(console.error(`cannot ${a} while stopping, did you forget to 'await'?`),!0):void 0!==this.pausePromise?(console.error(`cannot ${a} while pausing, did you forget to 'await'?`),!0):void 0!==this.resumePromise?(console.error(`cannot ${a} while resuming, did you forget to 'await'?`),!0):!1}async waitForStart(){return this.startPromise?
+await this.startPromise:-1}async waitForStop(){let a;return null!=(a=this.stopPromise)?a:-1}async waitForPause(){let a;return null!=(a=this.pausePromise)?a:-1}async waitForResume(){let a;return null!=(a=this.resumePromise)?a:-1}createStartPromise(){this.startPromise||(this.startPromise=new Promise(a=>{this.startResolver=a;const b=setTimeout(()=>{this.timeoutTimers=reject$$module$node_modules$rambda$dist$rambda_mjs(equals$$module$node_modules$rambda$dist$rambda_mjs(b),this.timeoutTimers);this.startPromise&&
+(console.warn("start promise timed out"),this.startResolver(),delete this.startResolver,this.startPromise&&delete this.startPromise)},2E3);this.timeoutTimers.push(b)}))}releaseStartPromise(){try{this.timeoutTimers.forEach(clearTimeout),clearArray$$module$src$utils$clear_array(this.timeoutTimers)}catch(a){console.error(a)}this.startResolver&&(this.startResolver(),delete this.startResolver);this.startPromise&&delete this.startPromise}createStopPromise(){this.stopPromise||(this.stopPromise=new Promise(a=>
+{this.stopResolver=a;const b=setTimeout(()=>{this.timeoutTimers=reject$$module$node_modules$rambda$dist$rambda_mjs(equals$$module$node_modules$rambda$dist$rambda_mjs(b),this.timeoutTimers);this.stopPromise&&(console.warn("stop promise timed out"),this.stopResolver(),delete this.stopResolver,this.stopPromise&&delete this.stopPromise)},2E3);this.timeoutTimers.push(b)}))}releaseStopPromise(){try{this.timeoutTimers.forEach(clearTimeout),clearArray$$module$src$utils$clear_array(this.timeoutTimers)}catch(a){console.error(a)}this.stopResolver&&
+(this.stopResolver(),delete this.stopResolver);this.stopPromise&&delete this.stopPromise}createPausePromise(){this.pausePromise||(this.pausePromise=new Promise(a=>{this.pauseResolver=a;const b=setTimeout(()=>{this.timeoutTimers=reject$$module$node_modules$rambda$dist$rambda_mjs(equals$$module$node_modules$rambda$dist$rambda_mjs(b),this.timeoutTimers);this.pausePromise&&(console.warn("pause promise timed out"),this.pauseResolver(),delete this.pauseResolver,this.pausePromise&&delete this.pausePromise)},
+2E3);this.timeoutTimers.push(b)}))}releasePausePromise(){try{this.timeoutTimers.forEach(clearTimeout),clearArray$$module$src$utils$clear_array(this.timeoutTimers)}catch(a){console.error(a)}this.pauseResolver&&(this.pauseResolver(),delete this.pauseResolver);this.pausePromise&&delete this.pausePromise}createResumePromise(){this.resumePromise||(this.resumePromise=new Promise(a=>{this.resumeResolver=a;const b=setTimeout(()=>{this.timeoutTimers=reject$$module$node_modules$rambda$dist$rambda_mjs(equals$$module$node_modules$rambda$dist$rambda_mjs(b),
+this.timeoutTimers);this.resumePromise&&(console.warn("resume promise timed out"),this.resumeResolver(),delete this.resumeResolver,this.resumePromise&&delete this.resumePromise)},2E3);this.timeoutTimers.push(b)}))}releaseResumePromise(){try{this.timeoutTimers.forEach(clearTimeout),clearArray$$module$src$utils$clear_array(this.timeoutTimers)}catch(a){console.error(a)}this.resumeResolver&&(this.resumeResolver(),delete this.resumeResolver);this.resumePromise&&delete this.resumePromise}}
+var module$src$utils$event_promises={};module$src$utils$event_promises.EventPromises=EventPromises$$module$src$utils$event_promises;var module$node_modules$eventemitter3$umd$eventemitter3_min={};
+module$node_modules$eventemitter3$umd$eventemitter3_min.default=function(){return function e(b,c,d){function f(k,n){if(!c[k]){if(!b[k]){var m="function"==typeof require&&require;if(!n&&m)return m(k,!0);if(g)return g(k,!0);n=Error("Cannot find module '"+k+"'");throw n.code="MODULE_NOT_FOUND",n;}n=c[k]={exports:{}};b[k][0].call(n.exports,function(l){return f(b[k][1][l]||l)},n,n.exports,e,b,c,d)}return c[k].exports}for(var g="function"==typeof require&&require,h=0;h<d.length;h++)f(d[h]);return f}({1:[function(b,
+c,d){function e(){}function f(l,p,q){this.fn=l;this.context=p;this.once=q||!1}function g(l,p,q,u,t){if("function"!=typeof q)throw new TypeError("The listener must be a function");q=new f(q,u||l,t);p=m?m+p:p;return l._events[p]?l._events[p].fn?l._events[p]=[l._events[p],q]:l._events[p].push(q):(l._events[p]=q,l._eventsCount++),l}function h(l,p){0==--l._eventsCount?l._events=new e:delete l._events[p]}function k(){this._events=new e;this._eventsCount=0}var n=Object.prototype.hasOwnProperty,m="~";Object.create&&
+(e.prototype=Object.create(null),(new e).__proto__||(m=!1));k.prototype.eventNames=function(){var l,p,q=[];if(0===this._eventsCount)return q;for(p in l=this._events)n.call(l,p)&&q.push(m?p.slice(1):p);return Object.getOwnPropertySymbols?q.concat(Object.getOwnPropertySymbols(l)):q};k.prototype.listeners=function(l){l=this._events[m?m+l:l];if(!l)return[];if(l.fn)return[l.fn];for(var p=0,q=l.length,u=Array(q);p<q;p++)u[p]=l[p].fn;return u};k.prototype.listenerCount=function(l){return(l=this._events[m?
+m+l:l])?l.fn?1:l.length:0};k.prototype.emit=function(l,p,q,u,t,x){var r=m?m+l:l;if(!this._events[r])return!1;var y;r=this._events[r];var v=arguments.length;if(r.fn){switch(r.once&&this.removeListener(l,r.fn,void 0,!0),v){case 1:return r.fn.call(r.context),!0;case 2:return r.fn.call(r.context,p),!0;case 3:return r.fn.call(r.context,p,q),!0;case 4:return r.fn.call(r.context,p,q,u),!0;case 5:return r.fn.call(r.context,p,q,u,t),!0;case 6:return r.fn.call(r.context,p,q,u,t,x),!0}w=1;for(y=Array(v-1);w<
+v;w++)y[w-1]=arguments[w];r.fn.apply(r.context,y)}else for(var z,B=r.length,w=0;w<B;w++)switch(r[w].once&&this.removeListener(l,r[w].fn,void 0,!0),v){case 1:r[w].fn.call(r[w].context);break;case 2:r[w].fn.call(r[w].context,p);break;case 3:r[w].fn.call(r[w].context,p,q);break;case 4:r[w].fn.call(r[w].context,p,q,u);break;default:if(!y)for(z=1,y=Array(v-1);z<v;z++)y[z-1]=arguments[z];r[w].fn.apply(r[w].context,y)}return!0};k.prototype.on=function(l,p,q){return g(this,l,p,q,!1)};k.prototype.once=function(l,
+p,q){return g(this,l,p,q,!0)};k.prototype.removeListener=function(l,p,q,u){l=m?m+l:l;if(!this._events[l])return this;if(!p)return h(this,l),this;var t=this._events[l];if(t.fn)t.fn!==p||u&&!t.once||q&&t.context!==q||h(this,l);else{for(var x=0,r=[],y=t.length;x<y;x++)(t[x].fn!==p||u&&!t[x].once||q&&t[x].context!==q)&&r.push(t[x]);r.length?this._events[l]=1===r.length?r[0]:r:h(this,l)}return this};k.prototype.removeAllListeners=function(l){var p;return l?(p=m?m+l:l,this._events[p]&&h(this,p)):(this._events=
+new e,this._eventsCount=0),this};k.prototype.off=k.prototype.removeListener;k.prototype.addListener=k.prototype.on;k.prefixed=m;k.EventEmitter=k;void 0!==c&&(c.exports=k)},{}]},{},[1])(1)}();class PublicEventAPI$$module$src$events{constructor(a){this.parent=a;this.eventEmitter=new module$node_modules$eventemitter3$umd$eventemitter3_min.default;this.currentDerivedPlayState=void 0;this.decorateAPI=this.decorateAPI.bind(this);this.triggerRealtimePerformanceStarted=this.triggerRealtimePerformanceStarted.bind(this);this.triggerRealtimePerformancePaused=this.triggerRealtimePerformancePaused.bind(this);this.triggerRealtimePerformanceResumed=this.triggerRealtimePerformanceResumed.bind(this);
+this.triggerRealtimePerformanceEnded=this.triggerRealtimePerformanceEnded.bind(this);this.triggerRenderStarted=this.triggerRenderStarted.bind(this);this.triggerRenderEnded=this.triggerRenderEnded.bind(this);this.triggerOnAudioNodeCreated=this.triggerOnAudioNodeCreated.bind(this);this.terminateInstance=this.terminateInstance.bind(this)}terminateInstance(){this.eventEmitter.removeAllListeners("play pause stop realtimePerformanceStarted realtimePerformancePaused realtimePerformanceResumed realtimePerformanceEnded renderStarted renderEnded onAudioNodeCreated message".split(" "));
+Object.keys(this).forEach(a=>delete this[a])}triggerRealtimePerformanceStarted(){this.eventEmitter.emit("realtimePerformanceStarted");"play"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("play"),this.currentDerivedPlayState="play")}triggerRealtimePerformancePaused(){this.eventEmitter.emit("realtimePerformancePaused");"pause"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("pause"),this.currentDerivedPlayState="pause")}triggerRealtimePerformanceResumed(){this.eventEmitter.emit("realtimePerformanceResumed");
+"play"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("play"),this.currentDerivedPlayState="play")}triggerRealtimePerformanceEnded(){this.eventEmitter.emit("realtimePerformanceEnded");"stop"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("stop"),this.currentDerivedPlayState="stop")}triggerRenderStarted(){this.eventEmitter.emit("renderStarted");"stop"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("stop"),this.currentDerivedPlayState="stop")}triggerRenderEnded(){this.eventEmitter.emit("renderEnded");
+"stop"!==this.currentDerivedPlayState&&(this.eventEmitter.emit("stop"),this.currentDerivedPlayState="stop")}triggerOnAudioNodeCreated(a){this.eventEmitter.emit("onAudioNodeCreated",a)}triggerMessage({log:a}){this.eventEmitter.emit("message",a)}decorateAPI(a){a.eventNames=this.eventEmitter.eventNames.bind(this.eventEmitter);a.listenerCount=this.eventEmitter.listenerCount.bind(this.eventEmitter);a.listeners=this.eventEmitter.listeners.bind(this.eventEmitter);a.off=this.eventEmitter.off.bind(this.eventEmitter);
+a.on=this.eventEmitter.on.bind(this.eventEmitter);a.addListener=this.eventEmitter.on.bind(this.eventEmitter);a.once=this.eventEmitter.once.bind(this.eventEmitter);a.removeAllListeners=this.eventEmitter.removeAllListeners.bind(this.eventEmitter);a.removeListener=this.eventEmitter.removeListener.bind(this.eventEmitter);return a}}var module$src$events={};module$src$events.PublicEventAPI=PublicEventAPI$$module$src$events;var $jscompDefaultExport$$module$dist$__compiled_vanilla_worker_inline=()=>(window.URL||window.webkitURL).createObjectURL(new Blob(['(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(".");d=d||goog.global;a[0]in d||"undefined"==typeof d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE="en";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(".")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;\ngoog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;\ngoog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error(\'Module with namespace "\'+a+\'" already exists.\');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error(\'Module with namespace "\'+\na+\'" has been loaded incorrectly.\');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0});\ngoog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath="";goog.abstractMethod=function(){throw Error("unimplemented abstract method");};\ngoog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME="goog";\ngoog.hasBadLetScoping=null;\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if("function"===typeof a)d=a.call(void 0,d);else if("string"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error("Invalid module definition");var e=goog.moduleLoaderState_.moduleName;if("string"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&\nObject.seal&&"object"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error(\'Invalid module name "\'+e+\'"\');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};\ngoog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};\ngoog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};\ngoog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split("-");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join("-")};d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};\ngoog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,"&lt;"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&apos;/g,"\'").replace(/&quot;/g,\'"\').replace(/&amp;/g,"&"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};\ngoog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"").match(/Edge\\/(\\d+)(\\.\\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?"complete"!=a.readyState:"loading"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&"string"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=\ngoog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?");d=-1==d?c.length:d;if("base.js"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,"\\\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=\n[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error("Unregonized namespace: "+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},\ngoog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=\nfunction(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error("Bad dependency path or symbol: "+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_("goog.require could not find: "+a)},goog.DebugLoader_.prototype.loadDeps_=\nfunction(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error("Cannot call pause after the call to load.");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error("Double call to loaded.");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,\nmoduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||""})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error("Cannot register with defer after the call to load.");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};\ntry{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==\na.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?\nthis.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=\nfunction(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf("://");0<=b&&(a=a.substring(b+3),b=a.indexOf("/"),0<=b&&(a=a.substring(b+1)));return a},\ngoog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},\ngoog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error("Callback key "+a+" does not exist (was base.js loaded more than once?).");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==\nb.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error(\'Cannot write "\'+this.path+\'" after document load\');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&"complete"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?\' nonce="\'+c+\'"\':"";var f=\'<script src="\'+this.path+\'"\'+\nc+(goog.Dependency.defer_?" defer":"")+\' id="script-\'+e+\'">\\x3c/script>\';f+="<script"+c+">";f=goog.Dependency.defer_?f+("document.getElementById(\'script-"+e+"\').onload = function() {\\n goog.Dependency.callback_(\'"+e+"\', this);\\n};\\n"):f+("goog.Dependency.callback_(\'"+e+"\', document.getElementById(\'script-"+e+"\'));");f+="\\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement("script");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=\nc);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,\nb,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,m){var n="",p=goog.getScriptNonce_();p&&(n=\' nonce="\'+p+\'"\');l=m?\'<script type="module" crossorigin\'+n+">"+m+"\\x3c/script>":\'<script type="module" crossorigin src="\'+l+\'"\'+n+">\\x3c/script>";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,m){var n=d.createElement("script");n.defer=!0;n.async=!1;n.type="module";n.setAttribute("crossorigin",\n!0);var p=goog.getScriptNonce_();p&&(n.nonce=p);m?n.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(n)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);\na.setModuleState(goog.ModuleType.ES6)});f(void 0,\'goog.Dependency.callback_("\'+g+\'")\');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,\'import * as m from "\'+this.path+\'"; goog.Dependency.callback_("\'+h+\'", m)\');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,\'goog.Dependency.callback_("\'+\nk+\'")\')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=\ne.transform(e.contents_),e.contents_&&(e.contents_+="\\n//# sourceURL="+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var l=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(l));if(f)var m=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),m)});a.loaded()}}\nfunction d(){var l=goog.global.document,m=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(m);c()}),n=goog.getScriptNonce_();n="<script"+(n?\' nonce="\'+n+\'"\':"")+">"+goog.protectScriptTag_(\'goog.Dependency.callback_("\'+m+\'");\')+"\\x3c/script>";l.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(n):n)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,a.loaded()):\na.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&("ActiveXObject"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){"interactive"==h.readyState&&(h.onreadystatechange=\nk,c(),a.resume());"function"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,\nc,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?"goog.loadModule("+goog.global.JSON.stringify(a+"\\n//# sourceURL="+this.path+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+a+"\\n;return exports});\\n//# sourceURL="+this.path+"\\n"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=\nb||[];a=a.replace(/\\\\/g,"/");var e=goog.normalizePath_(goog.basePath+a);d&&"boolean"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?\nnew goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),\ngoog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy("goog#base#devonly#eval")||{createScript:goog.identity_}};const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.proxy"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.endpoint"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.releaseProxy"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.thrown"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>"object"===typeof a&&null!==a||"function"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=\n{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&\nthrowMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([["proxy",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],["throw",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);\nfunction expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener("message",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const m=h.slice(0,-1).reduce((p,q)=>p[q],a),n=h.reduce((p,q)=>p[q],a);switch(g){case "GET":var l=n;break;case "SET":m[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);\nl=!0;break;case "APPLY":l=n.apply(m,k);break;case "CONSTRUCT":const p=new n(...k);l=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case "ENDPOINT":const {port1:q,port2:w}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,w);l=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case "RELEASE":l=void 0;break;default:return}}catch(m){l={value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(l).catch(m=>\n({value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(m=>{const [n,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(m);b.postMessage(Object.assign(Object.assign({},n),{id:f}),p);"RELEASE"===g&&(b.removeEventListener("message",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return"MessagePort"===a.constructor.name}\nfunction closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error("Proxy has been released and is not useable");}\nfunction createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"RELEASE",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if("then"===\ng){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"GET",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,l]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"SET",path:[...b,g].map(m=>m.toString()),value:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"ENDPOINT"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if("bind"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\nb.slice(0,-1));const [k,l]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"APPLY",path:b.map(m=>m.toString()),argumentList:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"CONSTRUCT",path:b.map(l=>l.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}\nfunction processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}\nfunction proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c="*"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}\nfunction toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:"HANDLER",name:b,value:d},e]}return[{type:"RAW",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}\nfunction fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case "HANDLER":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case "RAW":return a.value}}\nfunction requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener("message",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener("message",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}\nfunction generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;\nMessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};\nvar LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b="log_with_warnings"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error("Invalid log level "+b+" allowed: "+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=\nfunction(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e="log_with_warnings"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>\nmodule$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split("{}");for(var k=[f.mockConsole,"%c"+b,c],l=0;l<h.length;l++)k.push(h[l]),void 0!==g[l]&&k.push(g[l]);if(h.length-1!==g.length)if("log_with_warnings"===f.logLevel)f.mockConsole.error("MissMatch amount of arguments");else if("log_raise_error"===f.logLevel)throw Error("MissMatch amount of arguments");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,\nc){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return"color: white; background-color: "+b+"; padding: 2px 6px; border-radius: 2px; font-size: 10px"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^\nd>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b="");b=a.getHash(b);for(var c="#",d=0;3>d;d++)c+=("00"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,"trace"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,"debug"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,\n"info"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,"warn"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,"error")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;\nconst isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};\nlogSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;\nmodule$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;\nmodule$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const DEFAULT_BUFFER_LEN$$module$src$constants=128,MAX_CHANNELS$$module$src$constants=32,RING_BUFFER_SIZE$$module$src$constants=16384,MIDI_BUFFER_SIZE$$module$src$constants=1024,MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants=3,CALLBACK_DATA_BUFFER_SIZE$$module$src$constants=16384,initialSharedState$$module$src$constants=[0,4096,0,0,0,0,-1,-1,-1,-1,0,DEFAULT_BUFFER_LEN$$module$src$constants,0,0,0,0,0,0,0,0],AUDIO_STATE$$module$src$constants={CSOUND_LOCK:0,FRAMES_REQUESTED:1,IS_PERFORMING:2,IS_RENDERING:3,\nIS_PAUSED:4,STOP:5,SAMPLE_RATE:6,KSMPS:7,NCHNLS:8,NCHNLS_I:9,IS_REQUESTING_MIC:10,BUFFER_LEN:11,OUTPUT_READ_INDEX:12,OUTPUT_WRITE_INDEX:13,AVAIL_IN_BUFS:14,AVAIL_OUT_BUFS:15,IS_REQUESTING_RTMIDI:16,RTMIDI_INDEX:17,AVAIL_RTMIDI_EVENTS:18,HAS_PENDING_CALLBACKS:19},DATA_TYPE$$module$src$constants={NUMBER:0,STRING:1,FLOAT_32:2,FLOAT_64:3};var module$src$constants={};module$src$constants.AUDIO_STATE=AUDIO_STATE$$module$src$constants;module$src$constants.CALLBACK_DATA_BUFFER_SIZE=CALLBACK_DATA_BUFFER_SIZE$$module$src$constants;\nmodule$src$constants.DATA_TYPE=DATA_TYPE$$module$src$constants;module$src$constants.DEFAULT_BUFFER_LEN=DEFAULT_BUFFER_LEN$$module$src$constants;module$src$constants.MAX_CHANNELS=MAX_CHANNELS$$module$src$constants;module$src$constants.MIDI_BUFFER_PAYLOAD_SIZE=MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants;module$src$constants.MIDI_BUFFER_SIZE=MIDI_BUFFER_SIZE$$module$src$constants;module$src$constants.RING_BUFFER_SIZE=RING_BUFFER_SIZE$$module$src$constants;module$src$constants.initialSharedState=initialSharedState$$module$src$constants;const handleCsoundStart$$module$src$workers$common_utils=(a,b,c,d,e)=>f=>{const {csound:g}=f,h=1===b.csoundShouldDaemonize(g);h&&(b.csoundSetOption(g,"--daemon"),b.csoundSetOption(g,"-odac"));const k=b.csoundStart(g),l=b.csoundGetOutputName(g)||"test.wav";logCommonUtils$$module$src$logger(`handleCsoundStart: actual csoundStart result ${k}, outputName: ${l}`)();0!==k&&a.post(`error: csoundStart failed while trying to render ${l},`+" look out for errors in options and syntax");setTimeout(()=>{const m=\nb._isRequestingRtMidiInput(g);if(h||m||l.includes("dac"))d(f);else if(a.broadcastPlayState("renderStarted"),e)e(f);else for(;0===b.csoundPerformKsmps(g););},0);return k},instantiateAudioPacket$$module$src$workers$common_utils=(a,b)=>{const c=[];for(let d=0;d<a;d++)c.push(new Float64Array(b));return c},renderFunction$$module$src$workers$common_utils=({libraryCsound:a,workerMessagePort:b})=>async({csound:c})=>{const d=a.csoundGetKr(c);let e=0,f=0;for(;("renderStarted"===b.vanillaWorkerState||"renderStarted"===\nb.workerState)&&0===e;)e=a.csoundPerformKsmps(c),f+=1,"function"===typeof setTimeout&&0===e&&0===f%(2*d)&&await new Promise(g=>setTimeout(g,0));b.broadcastPlayState("renderEnded")};var module$src$workers$common_utils={};module$src$workers$common_utils.handleCsoundStart=handleCsoundStart$$module$src$workers$common_utils;module$src$workers$common_utils.instantiateAudioPacket=instantiateAudioPacket$$module$src$workers$common_utils;module$src$workers$common_utils.renderFunction=renderFunction$$module$src$workers$common_utils;const csoundCreate$$module$src$modules$instantiation=a=>()=>a.exports.csoundCreateWasi();csoundCreate$$module$src$modules$instantiation.toString=()=>"create = async () => undefined;";const csoundDestroy$$module$src$modules$instantiation=a=>b=>a.exports.csoundDestroy(b);csoundDestroy$$module$src$modules$instantiation.toString=()=>"destroy = async () => undefined;";const csoundGetAPIVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetAPIVersion();\ncsoundGetAPIVersion$$module$src$modules$instantiation.toString=()=>"getAPIVersion = async () => Number;";const csoundGetVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetVersion();csoundGetVersion$$module$src$modules$instantiation.toString=()=>"getVersion = async () => Number;";const csoundInitialize$$module$src$modules$instantiation=a=>(b,c)=>a.exports.csoundInitialize(c);csoundInitialize$$module$src$modules$instantiation.toString=()=>"initialize = async () => Number;";\nvar module$src$modules$instantiation={};module$src$modules$instantiation.csoundCreate=csoundCreate$$module$src$modules$instantiation;module$src$modules$instantiation.csoundDestroy=csoundDestroy$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetAPIVersion=csoundGetAPIVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetVersion=csoundGetVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundInitialize=csoundInitialize$$module$src$modules$instantiation;const WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders=!1;function TextEncoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";return this}TextEncoderPoly$$module$src$utils$text_encoders.prototype.encode=function(a){if("string"!==typeof a)throw new TypeError("passed argument must be of type string "+a+" "+typeof a);a=unescape(encodeURIComponent(a));const b=new Uint8Array(a.length);[...a].forEach(function(c,d){b[d]=c.codePointAt(0)});return b};\nfunction TextDecoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";this.ignoreBOM=!1;this.trimNull=a=>{const b=a.indexOf("\\x00");return-1<b?a.slice(0,Math.max(0,b)):a};this.decode=function(a,b){if(void 0===a)return"";if("boolean"!==typeof(void 0!==b&&"stream"in b?b.stream:!1))throw new TypeError("stream option must be boolean");if(ArrayBuffer.isView(a)){a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);const c=Array.from({length:a.length});a.forEach(function(d,e){c[e]=String.fromCodePoint(d)});\nreturn this.trimNull(c.join(""))}throw new TypeError("passed argument must be an array buffer view");}}\nconst decoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextDecoderPoly$$module$src$utils$text_encoders:new TextDecoder("utf8"),encoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextEncoderPoly$$module$src$utils$text_encoders:new TextEncoder("utf8"),uint2String$$module$src$utils$text_encoders=a=>decoder$$module$src$utils$text_encoders.decode(a);var module$src$utils$text_encoders={};\nmodule$src$utils$text_encoders.decoder=decoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.encoder=encoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.uint2String=uint2String$$module$src$utils$text_encoders;const trimNull$$module$src$utils$trim_null=a=>{const b=a.indexOf("\\x00");return-1<b?a.substr(0,b):a};var module$src$utils$trim_null={};module$src$utils$trim_null.trimNull=trimNull$$module$src$utils$trim_null;const freeStringPtr$$module$src$utils$string_pointers=(a,b)=>{a.exports.freeStringMem(b)},ptr2string$$module$src$utils$string_pointers=(a,b)=>{({buffer:a}=a.wasi.memory);b=new Uint8Array(a,b);b=uint2String$$module$src$utils$text_encoders(b);return trimNull$$module$src$utils$trim_null(b)},string2ptr$$module$src$utils$string_pointers=(a,b)=>{if("string"!==typeof b)console.error("Expected string but got",typeof b);else{b=encoder$$module$src$utils$text_encoders.encode(b);var c=a.exports.allocStringMem(b.length);\n({buffer:a}=a.wasi.memory);(new Uint8Array(a,c,b.length+1)).set(b);return c}};var module$src$utils$string_pointers={};module$src$utils$string_pointers.freeStringPtr=freeStringPtr$$module$src$utils$string_pointers;module$src$utils$string_pointers.ptr2string=ptr2string$$module$src$utils$string_pointers;module$src$utils$string_pointers.string2ptr=string2ptr$$module$src$utils$string_pointers;const csoundParseOrc$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundParseOrc(b,c);csoundParseOrc$$module$src$modules$performance.toString=()=>"parseOrc = async (orchestra) => Object;";const csoundCompileTree$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundCompileTree(b,c);csoundCompileTree$$module$src$modules$performance.toString=()=>"compileTree = async (tree) => Number;";\nconst csoundCompileOrc$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileOrc(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileOrc$$module$src$modules$performance.toString=()=>"compileOrc = async (orchestra) => Number;";\nconst csoundEvalCode$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundEvalCode(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundEvalCode$$module$src$modules$performance.toString=()=>"csoundEvalCode = async (orchestra) => Number;";const csoundStart$$module$src$modules$performance=a=>b=>a.exports.csoundStartWasi(b);csoundStart$$module$src$modules$performance.toString=()=>"start = async () => Number;";\nconst csoundCompileCsd$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);let d;try{d=a.exports.csoundCompileCsd(b,c)}catch(e){console.error(e)}freeStringPtr$$module$src$utils$string_pointers(a,c);return d};csoundCompileCsd$$module$src$modules$performance.toString=()=>"compileCsd = async (path) => Number;";\nconst csoundCompileCsdText$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileCsdText(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileCsdText$$module$src$modules$performance.toString=()=>"compileCsdText = async (csoundDocument) => Number;";const csoundPerform$$module$src$modules$performance=a=>b=>a.exports.csoundPerform(b);csoundPerform$$module$src$modules$performance.toString=()=>"perform = async () => Number;";\nconst csoundPerformKsmps$$module$src$modules$performance=a=>b=>a.exports.csoundPerformKsmpsWasi(b);csoundPerformKsmps$$module$src$modules$performance.toString=()=>"performKsmps = async (csound) => Number;";const csoundPerformBuffer$$module$src$modules$performance=a=>b=>a.exports.csoundPerformBuffer(b);csoundPerformBuffer$$module$src$modules$performance.toString=()=>"performBuffer = async (csound) => Number;";const csoundStop$$module$src$modules$performance=a=>b=>a.exports.csoundStop(b);\ncsoundStop$$module$src$modules$performance.toString=()=>"stop = async () => undefined;";const csoundCleanup$$module$src$modules$performance=a=>b=>a.exports.csoundCleanup(b);csoundCleanup$$module$src$modules$performance.toString=()=>"cleanup = async () => Number;";const csoundReset$$module$src$modules$performance=a=>b=>a.exports.csoundResetWasi(b);csoundReset$$module$src$modules$performance.toString=()=>"reset = async () => Number;";var module$src$modules$performance={};\nmodule$src$modules$performance.csoundCleanup=csoundCleanup$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsd=csoundCompileCsd$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsdText=csoundCompileCsdText$$module$src$modules$performance;module$src$modules$performance.csoundCompileOrc=csoundCompileOrc$$module$src$modules$performance;module$src$modules$performance.csoundCompileTree=csoundCompileTree$$module$src$modules$performance;\nmodule$src$modules$performance.csoundEvalCode=csoundEvalCode$$module$src$modules$performance;module$src$modules$performance.csoundParseOrc=csoundParseOrc$$module$src$modules$performance;module$src$modules$performance.csoundPerform=csoundPerform$$module$src$modules$performance;module$src$modules$performance.csoundPerformBuffer=csoundPerformBuffer$$module$src$modules$performance;module$src$modules$performance.csoundPerformKsmps=csoundPerformKsmps$$module$src$modules$performance;\nmodule$src$modules$performance.csoundReset=csoundReset$$module$src$modules$performance;module$src$modules$performance.csoundStart=csoundStart$$module$src$modules$performance;module$src$modules$performance.csoundStop=csoundStop$$module$src$modules$performance;const sizeOfPrimitive$$module$src$utils$native_sizes={int:4,MYFLT:4,char:1},sizeofStruct$$module$src$utils$native_sizes=a=>a.reduce((b,[,c,...d])=>b+("char"===c?sizeOfPrimitive$$module$src$utils$native_sizes[c]*d[0]:sizeOfPrimitive$$module$src$utils$native_sizes[c]),0);var module$src$utils$native_sizes={};module$src$utils$native_sizes.sizeOfPrimitive=sizeOfPrimitive$$module$src$utils$native_sizes;module$src$utils$native_sizes.sizeofStruct=sizeofStruct$$module$src$utils$native_sizes;const structBufferToObject$$module$src$utils$structure_buffer_to_object=(a,b)=>{[a]=a.reduce(([c,d],[e,f,...g])=>{g="char"===f?sizeOfPrimitive$$module$src$utils$native_sizes[f]*g[0]:sizeOfPrimitive$$module$src$utils$native_sizes[f];f="char"===f?trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(b.subarray(d,g)))||"":b[d];c[e]=f;return[c,d+g]},[{},0]);return a};var module$src$utils$structure_buffer_to_object={};\nmodule$src$utils$structure_buffer_to_object.structBufferToObject=structBufferToObject$$module$src$utils$structure_buffer_to_object;const CSOUND_PARAMS$$module$src$structures=[["debug_mode","int"],["buffer_frames","int"],["hardware_buffer_frames","int"],["displays","int"],["ascii_graphs","int"],["postscript_graphs","int"],["message_level","int"],["tempo","int"],["ring_bell","int"],["use_cscore","int"],["terminate_on_midi","int"],["heartbeat","int"],["defer_gen01_load","int"],["midi_key","int"],["midi_key_cps","int"],["midi_key_oct","int"],["midi_key_pch","int"],["midi_velocity","int"],["midi_velocity_amp","int"],["no_default_paths",\n"int"],["number_of_threads","int"],["syntax_check_only","int"],["csd_line_counts","int"],["compute_weights","int"],["realtime_mode","int"],["sample_accurate","int"],["sample_rate_override","MYFLT"],["control_rate_override","MYFLT"],["nchnls_override","int"],["nchnls_i_override","int"],["e0dbfs_override","MYFLT"],["daemon","int"],["ksmps_override","int"],["FFT_library","int"]],CS_MIDIDEVICE$$module$src$structures=[["device_name","char",64],["interface_name","char",64],["device_id","char",64],["midi_module",\n"char",64],["isOutput","int"]];var module$src$structures={};const csoundGetSr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSr(b);csoundGetSr$$module$src$modules$attributes.toString=()=>"getSr = async () => Number;";const csoundGetKr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKr(b);csoundGetKr$$module$src$modules$attributes.toString=()=>"getKr = async () => Number;";const csoundGetKsmps$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKsmps(b);csoundGetKsmps$$module$src$modules$attributes.toString=()=>"getKsmps = async () => Number;";\nconst csoundGetNchnls$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnls(b);csoundGetNchnls$$module$src$modules$attributes.toString=()=>"getNchnls = async () => Number;";const csoundGetNchnlsInput$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnlsInput(b);csoundGetNchnlsInput$$module$src$modules$attributes.toString=()=>"getNchnlsInput = async () => Number;";const csoundGet0dBFS$$module$src$modules$attributes=a=>b=>a.exports.csoundGet0dBFS(b);\ncsoundGet0dBFS$$module$src$modules$attributes.toString=()=>"get0dBFS = async () => Number;";const csoundGetA4$$module$src$modules$attributes=a=>b=>a.exports.csoundGetA4(b);csoundGetA4$$module$src$modules$attributes.toString=()=>"getA4 = async () => Number;";const csoundGetCurrentTimeSamples$$module$src$modules$attributes=a=>b=>a.exports.csoundGetCurrentTimeSamples(b);csoundGetCurrentTimeSamples$$module$src$modules$attributes.toString=()=>"getCurrentTimeSamples = async () => Number;";\nconst csoundGetSizeOfMYFLT$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSizeOfMYFLT(b);csoundGetSizeOfMYFLT$$module$src$modules$attributes.toString=()=>"getSizeOfMYFLT = async () => Number;";const csoundSetOption$$module$src$modules$attributes=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundSetOption(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundSetOption$$module$src$modules$attributes.toString=()=>"setOption = async (option) => Number;";\nconst csoundSetParams$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetParams(b,c)};csoundSetParams$$module$src$modules$attributes.toString=()=>"setParams = async (csoundParams) => undefined;";\nconst csoundGetParams$$module$src$modules$attributes=a=>b=>{var {buffer:c}=a.wasi.memory;const d=sizeofStruct$$module$src$utils$native_sizes(CSOUND_PARAMS$$module$src$structures),e=a.exports.allocCsoundParamsStruct();c=new Uint8Array(c,e,d);a.exports.csoundGetParams(b,e);b=structBufferToObject$$module$src$utils$structure_buffer_to_object(CSOUND_PARAMS$$module$src$structures,c);a.exports.freeCsoundParams(e);return b};csoundGetParams$$module$src$modules$attributes.toString=()=>"getParams = async () => CSOUND_PARAMS;";\nconst csoundGetDebug$$module$src$modules$attributes=a=>b=>a.exports.csoundGetDebug(b);csoundGetDebug$$module$src$modules$attributes.toString=()=>"getDebug = async () => Number;";const csoundSetDebug$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetDebug(b,c)};csoundSetDebug$$module$src$modules$attributes.toString=()=>"setDebug = async (number) => undefined;";var module$src$modules$attributes={};module$src$modules$attributes.csoundGet0dBFS=csoundGet0dBFS$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundGetA4=csoundGetA4$$module$src$modules$attributes;module$src$modules$attributes.csoundGetCurrentTimeSamples=csoundGetCurrentTimeSamples$$module$src$modules$attributes;module$src$modules$attributes.csoundGetDebug=csoundGetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKr=csoundGetKr$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKsmps=csoundGetKsmps$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundGetNchnls=csoundGetNchnls$$module$src$modules$attributes;module$src$modules$attributes.csoundGetNchnlsInput=csoundGetNchnlsInput$$module$src$modules$attributes;module$src$modules$attributes.csoundGetParams=csoundGetParams$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSizeOfMYFLT=csoundGetSizeOfMYFLT$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSr=csoundGetSr$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundSetDebug=csoundSetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundSetOption=csoundSetOption$$module$src$modules$attributes;module$src$modules$attributes.csoundSetParams=csoundSetParams$$module$src$modules$attributes;const csoundGetInputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBufferSize(b);csoundGetInputBufferSize$$module$src$modules$rtaudio.toString=()=>"getInputBufferSize = async () => Number;";const csoundGetOutputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBufferSize(b);csoundGetOutputBufferSize$$module$src$modules$rtaudio.toString=()=>"getOutputBufferSize = async () => Number;";const csoundGetInputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBuffer(b);\ncsoundGetInputBuffer$$module$src$modules$rtaudio.toString=()=>"getInputBuffer = async () => Number;";const csoundGetOutputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBuffer(b);csoundGetOutputBuffer$$module$src$modules$rtaudio.toString=()=>"getOutputBuffer = async () => Number;";const csoundGetSpin$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpin(b);csoundGetSpin$$module$src$modules$rtaudio.toString=()=>"getSpin = async (csound) => Number;";\nconst csoundGetSpout$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpout(b);csoundGetSpout$$module$src$modules$rtaudio.toString=()=>"getSpout = async () => Number;";var module$src$modules$rtaudio={};module$src$modules$rtaudio.csoundGetInputBuffer=csoundGetInputBuffer$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetInputBufferSize=csoundGetInputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetOutputBuffer=csoundGetOutputBuffer$$module$src$modules$rtaudio;\nmodule$src$modules$rtaudio.csoundGetOutputBufferSize=csoundGetOutputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpin=csoundGetSpin$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpout=csoundGetSpout$$module$src$modules$rtaudio;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}\nfunction adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}\nfunction and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}\nfunction anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.split("").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}\nfunction apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;\nfunction __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&"constructor"!==c&&("object"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),"function"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}\nfunction __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&"undefined"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}\nfunction __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,\nb,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;\nfor(;d<f;d++){if("object"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);"function"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&"constructor"!==e&&("object"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):"function"===typeof a[e]&&(d[e]=a[e](...c)));return d}\nfunction applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;\nfunction assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d="string"===typeof a?a.split(".").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e="object"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&\nisArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}\nfunction _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)}}}\nfunction curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error("First argument to _arity must be a non-negative integer no greater than ten");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}\nfunction bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}\nfunction chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error("min must not be greater than max in clamp(min, max, value)");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]="object"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}\nclass ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError("reduce: list must be array or iterable");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}\nconst reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);\nfunction _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)};default:throw Error("First argument to _arity must be a non-negative integer no greater than ten");}}\nfunction _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}\nfunction pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("pipe requires at least one argument");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}\nfunction compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("compose requires at least one argument");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof a?`${a}${b}`:[...a,...b]}\nfunction cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}\nfunction mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nfunction map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}\nfunction converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}\nfunction count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}\nconst dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}\nfunction type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return"Null";if(void 0===a)return"Undefined";if(Number.isNaN(a))return"NaN";a=Object.prototype.toString.call(a).slice(8,-1);return"AsyncFunction"===a?"Promise":a}\nfunction _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}\nfunction parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return["Error","TypeError"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}\nfunction equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if("Function"===c)return void 0===a.name?!1:a.name===b.name;if(["NaN","Undefined","Null"].includes(c))return!0;if("Number"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if(["String","Boolean"].includes(c))return a.toString()===\nb.toString();if("Array"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);\nif(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if("Set"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if("Object"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});\nreturn f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \\\'indexOf\\\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}\nclass _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Null","Undefined","NaN"].includes(b)?b in this.items?!1:this.items[b]=!0:["Object","Array"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}\nfunction uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}\nfunction drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}\nfunction dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if("function"!==typeof a)throw Error(`\'predicate\' is from wrong type ${typeof a}`);if(!c&&"string"!==typeof b)throw Error(`\'iterable\' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):\n(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join("")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}\nfunction dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}\nfunction dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join("")}\nfunction either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}\nfunction endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if("string"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}\nfunction prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}\nfunction evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if("Object"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return"Function"===e?a[d](c):"Object"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}\nfunction evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error("iterableType !== rulesType");if(!["Object","Array"].includes(c))throw Error(`\'iterable\' and \'rules\' are from wrong type ${c}`);return"Object"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,\nb)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}\nfunction filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error("Incorrect iterable input");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}\nfunction findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}\nfunction flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}\nfunction flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error("R.flip doesn\'t work with arity > 4");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}\nfunction fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}\nfunction groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError("list.reduce is not a function");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),l=0===e.length;h=h===b.length-1;if(k)return l&&e.push(f),e.push(g),h&&d.push(e),g;if(l)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},\nvoid 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b="."){return"string"===typeof a?a.split(b):a}\nfunction path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}\nfunction hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[0]||"":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;\nfunction identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===("boolean"===typeof a?a:a(...d))?b(...d):c(...d)}\nconst ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}\nfunction indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}\nfunction indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}\nfunction init$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}\nfunction intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}\nfunction isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Undefined","NaN","Number","Null"].includes(b)?!1:a?"Object"===b?0===Object.keys(a).length:"Array"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}\nfunction join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[a.length-1]||"":a[a.length-1]}\nfunction lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||"string"===typeof a?a.length:NaN}\nfunction lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return"[object String]"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}\nfunction updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}\nfunction lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}\nfunction mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}\nfunction mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}\nfunction mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}\nfunction mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}\nconst mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}\nfunction _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,\nd,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],\nb,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}\nfunction moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error("Rambda.move does not support negative indexes");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}\nfunction not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}\nfunction omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}\nfunction on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}\nfunction once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});\nfunction overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}\nfunction partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}\nfunction pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}\nfunction pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof b?[a].concat(b.split("")):[a].concat(b)}\nconst product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error("propsToPick is not a list");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}\nconst propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError("Both arguments to range must be numbers");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}\nfunction reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}\nconst replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.split("").reverse().join(""):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}\nconst set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}\nfunction split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||"Function"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}\nfunction take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():"string"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}\nfunction splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property \'slice\' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&"string"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,\nb)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error("First argument to splitEvery must be a positive integer");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}\nfunction splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property \'length\' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}\nfunction startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}\nfunction subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}\nfunction symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}\nfunction T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}\nfunction takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return"string"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}\nfunction takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join("")}\nfunction takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join("")}\nfunction tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof a)throw new TypeError(`\\u2018test\\u2019 requires a value of type RegExp as its first argument; received "${a}"`);return-1!==b.search(a)}\nfunction times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError("n must be an integer");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}\nfunction toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}\nfunction trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>["Promise","Function"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));\nfunction tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn \'${a}\'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}\nfunction union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}\nfunction uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}\nfunction uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}\nfunction unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}\nfunction values$$module$node_modules$rambda$dist$rambda_mjs(a){return"Object"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}\nfunction whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}\nfunction whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}\nfunction whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}\nfunction without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}\nfunction zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}\nfunction zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;const csoundSetMidiCallbacks$$module$src$modules$rtmidi=a=>b=>{a.exports.csoundSetMidiCallbacks(b)},csoundGetMIDIDevList$$module$src$modules$rtmidi=a=>(b,c)=>{const {buffer:d}=a.wasi.memory,e=a.exports.csoundGetMIDIDevList(b,void 0,c?1:0);if(0===e)return[];const f=sizeofStruct$$module$src$utils$native_sizes(CS_MIDIDEVICE$$module$src$structures),g=a.exports.allocCsMidiDeviceStruct(e);a.exports.csoundGetMIDIDevList(b,g,c?1:0);const h=new Uint8Array(d,g,f*e);b=range$$module$node_modules$rambda$dist$rambda_mjs(0,\ne).map(k=>structBufferToObject$$module$src$utils$structure_buffer_to_object(CS_MIDIDEVICE$$module$src$structures,h.subarray(k*f,f)));a.exports.freeCsMidiDeviceStruct(g);return b};csoundGetMIDIDevList$$module$src$modules$rtmidi.toString=()=>"getMIDIDevList = async (isOutput) => Object;";\nconst csoundGetRtMidiName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getRtMidiName(b);c=new Uint8Array(c,b,128);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetRtMidiName$$module$src$modules$rtmidi.toString=()=>"getRtMidiName = async () => String;";\nconst csoundGetMidiOutFileName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getMidiOutFileName(b);c=new Uint8Array(c,b,128);b&&0<b.length&&freeStringPtr$$module$src$utils$string_pointers(a,b);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""},_isRequestingRtMidiInput$$module$src$modules$rtmidi=a=>b=>a.exports.isRequestingRtMidiInput(b),csoundPushMidiMessage$$module$src$modules$rtmidi=a=>(b,c,d,e)=>{a.exports.pushMidiMessage(b,\nc,d,e)};csoundPushMidiMessage$$module$src$modules$rtmidi.toString=()=>"midiMessage = async (status, data1, data2) => undefined;";var module$src$modules$rtmidi={};module$src$modules$rtmidi._isRequestingRtMidiInput=_isRequestingRtMidiInput$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMIDIDevList=csoundGetMIDIDevList$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMidiOutFileName=csoundGetMidiOutFileName$$module$src$modules$rtmidi;\nmodule$src$modules$rtmidi.csoundGetRtMidiName=csoundGetRtMidiName$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundPushMidiMessage=csoundPushMidiMessage$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundSetMidiCallbacks=csoundSetMidiCallbacks$$module$src$modules$rtmidi;const csoundInputMessage$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessage(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessage$$module$src$modules$control_events.toString=()=>"inputMessage = async (scoreEvent) => Number;";\nconst csoundInputMessageAsync$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessageAsync(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessageAsync$$module$src$modules$control_events.toString=()=>"inputMessageAsync = async (scoreEvent) => Number;";\nconst csoundGetControlChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetControlChannelWasi(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundGetControlChannel$$module$src$modules$control_events.toString=()=>"getControlChannel = async (channelName) => Number;";\nconst csoundSetControlChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);a.exports.csoundSetControlChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c)};csoundSetControlChannel$$module$src$modules$control_events.toString=()=>"setControlChannel = async (channelName, value) => void;";\nconst csoundGetStringChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetStringChannelWasi(b,c);const d=ptr2string$$module$src$utils$string_pointers(a,b);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,b);return d};csoundGetStringChannel$$module$src$modules$control_events.toString=()=>"getStringChannel = async (channelName) => String;";\nconst csoundSetStringChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);a.exports.csoundSetStringChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d)};csoundSetStringChannel$$module$src$modules$control_events.toString=()=>"setStringChannel = async (channelName, value) => void;";var module$src$modules$control_events={};\nmodule$src$modules$control_events.csoundGetControlChannel=csoundGetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundGetStringChannel=csoundGetStringChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessage=csoundInputMessage$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessageAsync=csoundInputMessageAsync$$module$src$modules$control_events;\nmodule$src$modules$control_events.csoundSetControlChannel=csoundSetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundSetStringChannel=csoundSetStringChannel$$module$src$modules$control_events;const csoundGetOutputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetOutputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetOutputName$$module$src$modules$general_io.toString=()=>"getOutputName = async () => String;";\nconst csoundGetInputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetInputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetInputName$$module$src$modules$general_io.toString=()=>"getInputName = async (csound) => String;";var module$src$modules$general_io={};module$src$modules$general_io.csoundGetInputName=csoundGetInputName$$module$src$modules$general_io;\nmodule$src$modules$general_io.csoundGetOutputName=csoundGetOutputName$$module$src$modules$general_io;const csoundAppendEnv$$module$src$modules$extra=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);b=a.exports.csoundAppendEnv(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d);return b};csoundAppendEnv$$module$src$modules$extra.toString=()=>"appendEnv = async (csound, variable, value) => Number;";const csoundShouldDaemonize$$module$src$modules$extra=a=>b=>a.exports.csoundShouldDaemonize(b);\nvar module$src$modules$extra={};module$src$modules$extra.csoundAppendEnv=csoundAppendEnv$$module$src$modules$extra;module$src$modules$extra.csoundShouldDaemonize=csoundShouldDaemonize$$module$src$modules$extra;const csoundIsScorePending$$module$src$modules$score_handling=a=>b=>a.exports.csoundIsScorePending(b);csoundIsScorePending$$module$src$modules$score_handling.toString=()=>"isScorePending = async () => Number;";const csoundSetScorePending$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScorePending(b,c);csoundSetScorePending$$module$src$modules$score_handling.toString=()=>"setScorePending = async (pending) => Number;";\nconst csoundReadScore$$module$src$modules$score_handling=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundReadScore(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundReadScore$$module$src$modules$score_handling.toString=()=>"readScore = async (score) => Number;";const csoundGetScoreTime$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreTime(b);csoundGetScoreTime$$module$src$modules$score_handling.toString=()=>"getScoreTime = async () => Number;";\nconst csoundGetScoreOffsetSeconds$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreOffsetSeconds(b);csoundGetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"getScoreOffsetSeconds = async () => Number;";const csoundSetScoreOffsetSeconds$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScoreOffsetSeconds(b,c);csoundSetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"setScoreOffsetSeconds = async () => Number;";\nconst csoundRewindScore$$module$src$modules$score_handling=a=>b=>a.exports.csoundRewindScore(b);csoundRewindScore$$module$src$modules$score_handling.toString=()=>"rewindScore = async () => undefined;";var module$src$modules$score_handling={};module$src$modules$score_handling.csoundGetScoreOffsetSeconds=csoundGetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundGetScoreTime=csoundGetScoreTime$$module$src$modules$score_handling;\nmodule$src$modules$score_handling.csoundIsScorePending=csoundIsScorePending$$module$src$modules$score_handling;module$src$modules$score_handling.csoundReadScore=csoundReadScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundRewindScore=csoundRewindScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScoreOffsetSeconds=csoundSetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScorePending=csoundSetScorePending$$module$src$modules$score_handling;const csoundTableLength$$module$src$modules$table=a=>(b,c)=>a.exports.csoundTableLength(b,c);csoundTableLength$$module$src$modules$table.toString=()=>"tableLength = async (tableNum) => Number;";const csoundTableGet$$module$src$modules$table=a=>(b,c,d)=>a.exports.csoundTableGet(b,c,d);csoundTableGet$$module$src$modules$table.toString=()=>"tableGet = async (tableNum, tableIndex) => Number;";const csoundTableSet$$module$src$modules$table=a=>(b,c,d,e)=>a.exports.csoundTableSet(b,c,d,e);\ncsoundTableSet$$module$src$modules$table.toString=()=>"tableSet = async (tableNum, tableIndex, value) => undefined;";const csoundTableCopyIn$$module$src$modules$table=a=>(b,c,d)=>{const e=a.exports.allocFloatArray(d.length);(new Float64Array(a.wasi.memory.buffer,e,d.length)).set(d);a.exports.csoundTableCopyIn(b,c,e);a.exports.freeFloatArrayMem(e)};csoundTableCopyIn$$module$src$modules$table.toString=()=>"tableCopyIn = async (tableNum, float64Array) => undefined;";\nconst csoundTableCopyOut$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundTableLength(b,c);if(0<d){const e=a.exports.allocFloatArray(d);a.exports.csoundTableCopyOut(b,c,e);({buffer:b}=a.wasi.memory);d=new Float64Array(b,e,d);a.exports.freeFloatArrayMem(e);return Float64Array.from(d)}};csoundTableCopyOut$$module$src$modules$table.toString=()=>"tableCopyOut = async (tableNum) => ?Float64Array;";const csoundGetTable$$module$src$modules$table=csoundTableCopyOut$$module$src$modules$table;\ncsoundTableCopyOut$$module$src$modules$table.toString=csoundTableCopyOut$$module$src$modules$table.toString;const csoundGetTableArgs$$module$src$modules$table=a=>(b,c)=>{const d=a.exports.allocFloatArray(1024);a.exports.csoundGetTableArgs(b,d,c);({buffer:b}=a.wasi.memory);b=new Float64Array(b,d,1024);a.exports.freeFloatArrayMem(d);return b};csoundGetTableArgs$$module$src$modules$table.toString=()=>"getTableArgs = async (tableNum) => ?Float64Array;";\nconst csoundIsNamedGEN$$module$src$modules$table=a=>(b,c)=>a.exports.csoundIsNamedGEN(b,c);csoundIsNamedGEN$$module$src$modules$table.toString=()=>"isNamedGEN = async (tableNum) => number;";const csoundGetNamedGEN$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundIsNamedGEN(b,c);if(0<d){const e=a.exports.allocStringMem(d);a.exports.csoundGetNamedGEN(b,e,c,d);({buffer:b}=a.wasi.memory);d=new Uint8Array(b,e,d);return uint2String$$module$src$utils$text_encoders(d)}};\ncsoundGetNamedGEN$$module$src$modules$table.toString=()=>"getNamedGEN = async (tableNum) => ?string;";var module$src$modules$table={};module$src$modules$table.csoundGetNamedGEN=csoundGetNamedGEN$$module$src$modules$table;module$src$modules$table.csoundGetTable=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundGetTableArgs=csoundGetTableArgs$$module$src$modules$table;module$src$modules$table.csoundIsNamedGEN=csoundIsNamedGEN$$module$src$modules$table;\nmodule$src$modules$table.csoundTableCopyIn=csoundTableCopyIn$$module$src$modules$table;module$src$modules$table.csoundTableCopyOut=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundTableGet=csoundTableGet$$module$src$modules$table;module$src$modules$table.csoundTableLength=csoundTableLength$$module$src$modules$table;module$src$modules$table.csoundTableSet=csoundTableSet$$module$src$modules$table;function writeFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.writeFile(c,b)}}writeFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";function appendFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.appendFile(c,b)}}appendFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";\nfunction readFile$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readFile(c)}readFile$$module$src$filesystem$worker_fs.toString=()=>"async (path) => ?Uint8Array";function unlink$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.unlink(c)}unlink$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";function readdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readdir(c)}readdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => string[]";\nfunction mkdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.mkdir(c)}mkdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";var module$src$filesystem$worker_fs={};module$src$filesystem$worker_fs.appendFile=appendFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.mkdir=mkdir$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readFile=readFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readdir=readdir$$module$src$filesystem$worker_fs;\nmodule$src$filesystem$worker_fs.unlink=unlink$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.writeFile=writeFile$$module$src$filesystem$worker_fs;const api$$module$src$libcsound={csoundCreate:csoundCreate$$module$src$modules$instantiation,csoundDestroy:csoundDestroy$$module$src$modules$instantiation,csoundGetAPIVersion:csoundGetAPIVersion$$module$src$modules$instantiation,csoundGetVersion:csoundGetVersion$$module$src$modules$instantiation,csoundInitialize:csoundInitialize$$module$src$modules$instantiation,csoundParseOrc:csoundParseOrc$$module$src$modules$performance,csoundCompileTree:csoundCompileTree$$module$src$modules$performance,csoundCompileOrc:csoundCompileOrc$$module$src$modules$performance,\ncsoundEvalCode:csoundEvalCode$$module$src$modules$performance,csoundStart:csoundStart$$module$src$modules$performance,csoundCompileCsd:csoundCompileCsd$$module$src$modules$performance,csoundCompileCsdText:csoundCompileCsdText$$module$src$modules$performance,csoundPerform:csoundPerform$$module$src$modules$performance,csoundPerformKsmps:csoundPerformKsmps$$module$src$modules$performance,csoundPerformBuffer:csoundPerformBuffer$$module$src$modules$performance,csoundStop:csoundStop$$module$src$modules$performance,\ncsoundCleanup:csoundCleanup$$module$src$modules$performance,csoundReset:csoundReset$$module$src$modules$performance,csoundGetSr:csoundGetSr$$module$src$modules$attributes,csoundGetKr:csoundGetKr$$module$src$modules$attributes,csoundGetKsmps:csoundGetKsmps$$module$src$modules$attributes,csoundGetNchnls:csoundGetNchnls$$module$src$modules$attributes,csoundGetNchnlsInput:csoundGetNchnlsInput$$module$src$modules$attributes,csoundGet0dBFS:csoundGet0dBFS$$module$src$modules$attributes,csoundGetA4:csoundGetA4$$module$src$modules$attributes,\ncsoundGetCurrentTimeSamples:csoundGetCurrentTimeSamples$$module$src$modules$attributes,csoundGetSizeOfMYFLT:csoundGetSizeOfMYFLT$$module$src$modules$attributes,csoundSetOption:csoundSetOption$$module$src$modules$attributes,csoundSetParams:csoundSetParams$$module$src$modules$attributes,csoundGetParams:csoundGetParams$$module$src$modules$attributes,csoundGetDebug:csoundGetDebug$$module$src$modules$attributes,csoundSetDebug:csoundSetDebug$$module$src$modules$attributes,csoundGetInputBufferSize:csoundGetInputBufferSize$$module$src$modules$rtaudio,\ncsoundGetOutputBufferSize:csoundGetOutputBufferSize$$module$src$modules$rtaudio,csoundGetInputBuffer:csoundGetInputBuffer$$module$src$modules$rtaudio,csoundGetOutputBuffer:csoundGetOutputBuffer$$module$src$modules$rtaudio,csoundGetSpin:csoundGetSpin$$module$src$modules$rtaudio,csoundGetSpout:csoundGetSpout$$module$src$modules$rtaudio,csoundGetMIDIDevList:csoundGetMIDIDevList$$module$src$modules$rtmidi,csoundSetMidiCallbacks:csoundSetMidiCallbacks$$module$src$modules$rtmidi,csoundGetRtMidiName:csoundGetRtMidiName$$module$src$modules$rtmidi,\ncsoundGetMidiOutFileName:csoundGetMidiOutFileName$$module$src$modules$rtmidi,csoundPushMidiMessage:csoundPushMidiMessage$$module$src$modules$rtmidi,_isRequestingRtMidiInput:_isRequestingRtMidiInput$$module$src$modules$rtmidi,csoundInputMessage:csoundInputMessage$$module$src$modules$control_events,csoundInputMessageAsync:csoundInputMessageAsync$$module$src$modules$control_events,csoundGetControlChannel:csoundGetControlChannel$$module$src$modules$control_events,csoundSetControlChannel:csoundSetControlChannel$$module$src$modules$control_events,\ncsoundGetStringChannel:csoundGetStringChannel$$module$src$modules$control_events,csoundSetStringChannel:csoundSetStringChannel$$module$src$modules$control_events,csoundGetInputName:csoundGetInputName$$module$src$modules$general_io,csoundGetOutputName:csoundGetOutputName$$module$src$modules$general_io,csoundAppendEnv:csoundAppendEnv$$module$src$modules$extra,csoundShouldDaemonize:csoundShouldDaemonize$$module$src$modules$extra,csoundIsScorePending:csoundIsScorePending$$module$src$modules$score_handling,\ncsoundSetScorePending:csoundSetScorePending$$module$src$modules$score_handling,csoundReadScore:csoundReadScore$$module$src$modules$score_handling,csoundGetScoreTime:csoundGetScoreTime$$module$src$modules$score_handling,csoundGetScoreOffsetSeconds:csoundGetScoreOffsetSeconds$$module$src$modules$score_handling,csoundSetScoreOffsetSeconds:csoundSetScoreOffsetSeconds$$module$src$modules$score_handling,csoundRewindScore:csoundRewindScore$$module$src$modules$score_handling,csoundTableLength:csoundTableLength$$module$src$modules$table,\ncsoundTableGet:csoundTableGet$$module$src$modules$table,csoundTableSet:csoundTableSet$$module$src$modules$table,csoundTableCopyIn:csoundTableCopyIn$$module$src$modules$table,csoundTableCopyOut:csoundTableCopyOut$$module$src$modules$table,csoundGetTable:csoundTableCopyOut$$module$src$modules$table,csoundGetTableArgs:csoundGetTableArgs$$module$src$modules$table,csoundIsNamedGEN:csoundIsNamedGEN$$module$src$modules$table,csoundGetNamedGEN:csoundGetNamedGEN$$module$src$modules$table,fs:module$src$filesystem$worker_fs};\nvar $jscompDefaultExport$$module$src$libcsound=function(a){return mergeAll$$module$node_modules$rambda$dist$rambda_mjs([reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,api$$module$src$libcsound[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(dissoc$$module$node_modules$rambda$dist$rambda_mjs("fs")(api$$module$src$libcsound))),reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,\napi$$module$src$libcsound.fs[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(module$src$filesystem$worker_fs))])},module$src$libcsound={};module$src$libcsound.api=api$$module$src$libcsound;module$src$libcsound.default=$jscompDefaultExport$$module$src$libcsound;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=new WebAssembly.Global({value:"i32",mutable:!0},0);const h=new WebAssembly.Global({value:"i32",mutable:!0},0);let k=c.length;"function"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);"function"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k,\nb.exports.csoundModuleInit),k+=1);"function"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);"function"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=c.length,\n"function"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),"function"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error("Plugin doesn\'t export nececcary functions to quality as csound plugin.")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt);\nconst WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants=\n10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants=\n20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants=\n31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41,\nWASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants=\n52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants=\n62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants=\n73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants=\n7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants=\n18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants=\n3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants=\n16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants=\ngoog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants=\ngoog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants=\ngoog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants=\ngoog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|\nWASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|\nWASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants=\nWASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\nWASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,\nRIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants=\n1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants=\n0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name="CustomError";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name="AssertionError";\ngoog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split("%s");let c="";const d=a.length-1;for(let e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:"%s");return c+a[d]}\nfunction module$contents$goog$asserts_doAssertFailure(a,b,c,d){let e="Assertion failed",f;c?(e+=": "+c,f=d):a&&(e+=": "+a,f=b);a=new module$contents$goog$asserts_AssertionError(""+e,f||[]);module$contents$goog$asserts_errorHandler_(a)}goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(module$contents$goog$asserts_errorHandler_=a)};\ngoog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&module$contents$goog$asserts_doAssertFailure("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&module$contents$goog$asserts_doAssertFailure("Expected to exist: %s.",[a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&module$contents$goog$asserts_errorHandler_(new module$contents$goog$asserts_AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"number"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"string"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"function"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&module$contents$goog$asserts_doAssertFailure("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!Array.isArray(a)&&module$contents$goog$asserts_doAssertFailure("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"boolean"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||module$contents$goog$asserts_doAssertFailure("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||module$contents$goog$asserts_doAssertFailure("Expected instanceof %s but got %s.",[module$contents$goog$asserts_getType(b),module$contents$goog$asserts_getType(a)],c,Array.prototype.slice.call(arguments,3));return a};\ngoog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||"number"==typeof a&&isFinite(a)||module$contents$goog$asserts_doAssertFailure("Expected %s to be a finite number but it is not.",[a],b,Array.prototype.slice.call(arguments,2));return a};\nfunction module$contents$goog$asserts_getType(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;const module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.ASSUME_NATIVE_FUNCTIONS=module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS;function module$contents$goog$array_peek(a){return a[a.length-1]}goog.array.peek=module$contents$goog$array_peek;goog.array.last=module$contents$goog$array_peek;\nconst module$contents$goog$array_indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};goog.array.indexOf=module$contents$goog$array_indexOf;\nconst module$contents$goog$array_lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEach=module$contents$goog$array_forEach;\nfunction module$contents$goog$array_forEachRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)}goog.array.forEachRight=module$contents$goog$array_forEachRight;\nconst module$contents$goog$array_filter=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){const d=a.length,e=[];let f=0;const g="string"===typeof a?a.split(""):a;for(let h=0;h<d;h++)if(h in g){const k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};goog.array.filter=module$contents$goog$array_filter;\nconst module$contents$goog$array_map=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){const d=a.length,e=Array(d),f="string"===typeof a?a.split(""):a;for(let g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};goog.array.map=module$contents$goog$array_map;\nconst module$contents$goog$array_reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEach(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduce=module$contents$goog$array_reduce;\nconst module$contents$goog$array_reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEachRight(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduceRight=module$contents$goog$array_reduceRight;\nconst module$contents$goog$array_some=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};goog.array.some=module$contents$goog$array_some;\nconst module$contents$goog$array_every=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.every=module$contents$goog$array_every;\nfunction module$contents$goog$array_count(a,b,c){let d=0;module$contents$goog$array_forEach(a,function(e,f,g){b.call(c,e,f,g)&&++d},c);return d}goog.array.count=module$contents$goog$array_count;function module$contents$goog$array_find(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find;\nfunction module$contents$goog$array_findIndex(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1}goog.array.findIndex=module$contents$goog$array_findIndex;function module$contents$goog$array_findRight(a,b,c){b=module$contents$goog$array_findIndexRight(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight;\nfunction module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty;\nfunction module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt;\nfunction module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore;\nfunction module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast;\nfunction module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf;\nfunction module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)}\ngoog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0<b){const c=Array(b);for(let d=0;d<b;d++)c[d]=a[d];return c}return[]}const module$contents$goog$array_clone=goog.array.toArray=module$contents$goog$array_toArray;goog.array.clone=module$contents$goog$array_toArray;\nfunction module$contents$goog$array_extend(a,b){for(let c=1;c<arguments.length;c++){const d=arguments[c];if(goog.isArrayLike(d)){const e=a.length||0,f=d.length||0;a.length=e+f;for(let g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}}goog.array.extend=module$contents$goog$array_extend;function module$contents$goog$array_splice(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,module$contents$goog$array_slice(arguments,1))}goog.array.splice=module$contents$goog$array_splice;\nfunction module$contents$goog$array_slice(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice;\nfunction module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e<a.length;){const g=a[e++],h=c(g);Object.prototype.hasOwnProperty.call(f,h)||(f[h]=!0,b[d++]=g)}b.length=d}goog.array.removeDuplicates=module$contents$goog$array_removeDuplicates;\nfunction module$contents$goog$array_binarySearch(a,b,c){return module$contents$goog$array_binarySearch_(a,c||module$contents$goog$array_defaultCompare,!1,b)}goog.array.binarySearch=module$contents$goog$array_binarySearch;function module$contents$goog$array_binarySelect(a,b,c){return module$contents$goog$array_binarySearch_(a,b,!0,void 0,c)}goog.array.binarySelect=module$contents$goog$array_binarySelect;\nfunction module$contents$goog$array_binarySearch_(a,b,c,d,e){let f=0,g=a.length,h;for(;f<g;){const k=f+(g-f>>>1);let l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:-f-1}function module$contents$goog$array_sort(a,b){a.sort(b||module$contents$goog$array_defaultCompare)}goog.array.sort=module$contents$goog$array_sort;\nfunction module$contents$goog$array_stableSort(a,b){const c=Array(a.length);for(let e=0;e<a.length;e++)c[e]={index:e,value:a[e]};const d=b||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(c,function(e,f){return d(e.value,f.value)||e.index-f.index});for(b=0;b<a.length;b++)a[b]=c[b].value}goog.array.stableSort=module$contents$goog$array_stableSort;\nfunction module$contents$goog$array_sortByKey(a,b,c){const d=c||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(a,function(e,f){return d(b(e),b(f))})}goog.array.sortByKey=module$contents$goog$array_sortByKey;function module$contents$goog$array_sortObjectsByKey(a,b,c){module$contents$goog$array_sortByKey(a,function(d){return d[b]},c)}goog.array.sortObjectsByKey=module$contents$goog$array_sortObjectsByKey;\nfunction module$contents$goog$array_isSorted(a,b,c){b=b||module$contents$goog$array_defaultCompare;for(let d=1;d<a.length;d++){const e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0}goog.array.isSorted=module$contents$goog$array_isSorted;function module$contents$goog$array_equals(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;const d=a.length;c=c||module$contents$goog$array_defaultCompareEquality;for(let e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0}\ngoog.array.equals=module$contents$goog$array_equals;function module$contents$goog$array_compare3(a,b,c){c=c||module$contents$goog$array_defaultCompare;const d=Math.min(a.length,b.length);for(let e=0;e<d;e++){const f=c(a[e],b[e]);if(0!=f)return f}return module$contents$goog$array_defaultCompare(a.length,b.length)}goog.array.compare3=module$contents$goog$array_compare3;function module$contents$goog$array_defaultCompare(a,b){return a>b?1:a<b?-1:0}goog.array.defaultCompare=module$contents$goog$array_defaultCompare;\nfunction module$contents$goog$array_inverseDefaultCompare(a,b){return-module$contents$goog$array_defaultCompare(a,b)}goog.array.inverseDefaultCompare=module$contents$goog$array_inverseDefaultCompare;function module$contents$goog$array_defaultCompareEquality(a,b){return a===b}goog.array.defaultCompareEquality=module$contents$goog$array_defaultCompareEquality;\nfunction module$contents$goog$array_binaryInsert(a,b,c){c=module$contents$goog$array_binarySearch(a,b,c);return 0>c?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove;\nfunction module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;e<a.length;e++){const f=a[e],g=b.call(c,f,e,a);void 0!==g&&(d[g]||(d[g]=[])).push(f)}return d}goog.array.bucket=module$contents$goog$array_bucket;function module$contents$goog$array_bucketToMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d],f=b(e,d,a);if(void 0!==f){let g=c.get(f);g||(g=[],c.set(f,g));g.push(e)}}return c}goog.array.bucketToMap=module$contents$goog$array_bucketToMap;\nfunction module$contents$goog$array_toObject(a,b,c){const d={};module$contents$goog$array_forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d}goog.array.toObject=module$contents$goog$array_toObject;function module$contents$goog$array_toMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d];c.set(b(e,d,a),e)}return c}goog.array.toMap=module$contents$goog$array_toMap;\nfunction module$contents$goog$array_range(a,b,c){const d=[];let e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;d<b;d++)c[d]=a;return c}goog.array.repeat=module$contents$goog$array_repeat;\nfunction module$contents$goog$array_flatten(a){const b=[];for(let d=0;d<arguments.length;d++){const e=arguments[d];if(Array.isArray(e))for(let f=0;f<e.length;f+=8192){var c=module$contents$goog$array_slice(e,f,f+8192);c=module$contents$goog$array_flatten.apply(null,c);for(let g=0;g<c.length;g++)b.push(c[g])}else b.push(e)}return b}goog.array.flatten=module$contents$goog$array_flatten;\nfunction module$contents$goog$array_rotate(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])}goog.array.moveItem=module$contents$goog$array_moveItem;\nfunction module$contents$goog$array_zip(a){if(!arguments.length)return[];const b=[];let c=arguments[0].length;for(var d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){const e=[];for(let f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b}goog.array.zip=module$contents$goog$array_zip;function module$contents$goog$array_shuffle(a,b){b=b||Math.random;for(let c=a.length-1;0<c;c--){const d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}}\ngoog.array.shuffle=module$contents$goog$array_shuffle;function module$contents$goog$array_copyByIndex(a,b){const c=[];module$contents$goog$array_forEach(b,function(d){c.push(a[d])});return c}goog.array.copyByIndex=module$contents$goog$array_copyByIndex;function module$contents$goog$array_concatMap(a,b,c){return module$contents$goog$array_concat.apply([],module$contents$goog$array_map(a,b,c))}goog.array.concatMap=module$contents$goog$array_concatMap;goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s",goog.dom.asserts.debugStringForType_(a))}return a};\ngoog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&"undefined"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAnchorElement")};\ngoog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLButtonElement")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLLinkElement")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLImageElement")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAudioElement")};\ngoog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLVideoElement")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLInputElement")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLTextAreaElement")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLCanvasElement")};\ngoog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLEmbedElement")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFormElement")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFrameElement")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLIFrameElement")};\ngoog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLObjectElement")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLScriptElement")};\ngoog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return"<object could not be stringified>"}else return void 0===a?"undefined":null===a?"null":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};\ngoog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}};\ngoog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}};\ngoog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e<c;e++)d=b[e].apply(this,arguments);return d}};goog.functions.and=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(!b[d].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(b[d].apply(this,arguments))return!0;return!1}};\ngoog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){let b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){let b=a;return function(){if(b){const c=b;b=null;c()}}};\ngoog.functions.debounce=function(a,b,c){let d=0;return function(e){goog.global.clearTimeout(d);const f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){let d=0,e=!1,f=[];const g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);let k=f;f=[];a.apply(c,k)};return function(k){f=arguments;d?e=!0:h()}};\ngoog.functions.rateLimit=function(a,b,c){let d=0;const e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.functions.isFunction=a=>"function"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||"";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};\ngoog.DEBUG&&(goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got \'"+a+"\'");return"type_error:Const"};\ngoog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+"#html":"";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof\nmodule$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeScript, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeScript"}static stringify_(a){return JSON.stringify(a).replace(/</g,"\\\\x3c")}static createSafeScriptSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScript(a):\na;return new module$contents$goog$html$SafeScript_SafeScript(a,module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE)}}module$contents$goog$html$SafeScript_SafeScript.EMPTY=function(){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("")}();goog.html.SafeScript=module$contents$goog$html$SafeScript_SafeScript;goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.UrlObject_=function(){};goog.fs.url.UrlObject_.prototype.createObjectURL=function(a){};goog.fs.url.UrlObject_.prototype.revokeObjectURL=function(a){};\ngoog.fs.url.getUrlObject_=function(){const a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error("This browser doesn\'t seem to support blob URLs");};goog.fs.url.findUrlObject_=function(){return void 0!==goog.global.URL&&void 0!==goog.global.URL.createObjectURL?goog.global.URL:void 0!==goog.global.createObjectURL?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.fs.blob={};goog.fs.blob.getBlob=function(a){var b=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==b){b=new b;for(let c=0;c<arguments.length;c++)b.append(arguments[c]);return b.getBlob()}return goog.fs.blob.getBlobWithProperties(Array.prototype.slice.call(arguments))};\ngoog.fs.blob.getBlobWithProperties=function(a,b,c){var d=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==d){d=new d;for(let e=0;e<a.length;e++)d.append(a[e],c);return d.getBlob(b)}if(void 0!==goog.global.Blob)return d={},b&&(d.type=b),c&&(d.endings=c),new Blob(a,d);throw Error("This browser doesn\'t seem to support creating Blobs");};goog.html.TrustedResourceUrl=class{constructor(a,b){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=b===goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+""}};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};\ngoog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",c[2]||"",a)+goog.html.TrustedResourceUrl.stringifyParams_("#",d,b))};goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};\ngoog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail("expected object of type TrustedResourceUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:TrustedResourceUrl"};\ngoog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error("Invalid TrustedResourceUrl format: "+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(d,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error(\'Found marker, "\'+e+\'", in format string, "\'+c+\'", but no valid label mapping found in args: \'+JSON.stringify(b));d=b[e];return d instanceof goog.string.Const?goog.string.Const.unwrap(d):\nencodeURIComponent(String(d))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=RegExp("^((https:)?//[0-9a-z.:[\\\\]-]+/|/[^/\\\\\\\\]|[^:/\\\\\\\\%]+/|[^:/\\\\\\\\%]*[?#]|about:blank#)","i");goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/;\ngoog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b="",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.TrustedResourceUrl.fromSafeScript=function(a){a=goog.fs.blob.getBlobWithProperties([module$contents$goog$html$SafeScript_SafeScript.unwrap(a)],"text/javascript");a=goog.fs.url.createObjectUrl(a);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};\ngoog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScriptURL(a):a;return new goog.html.TrustedResourceUrl(a,goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};\ngoog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if("string"===typeof c)return c?a+encodeURIComponent(c):"";for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var e=c[d];e=Array.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?"&":"")+encodeURIComponent(d)+"="+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))};\ngoog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\\s\\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};\ngoog.string.internal.newLineToBr=function(a,b){return a.replace(/(\\r\\n|\\r|\\n)/g,b?"<br />":"<br>")};\ngoog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,"&amp;").replace(goog.string.internal.LT_RE_,"&lt;").replace(goog.string.internal.GT_RE_,"&gt;").replace(goog.string.internal.QUOT_RE_,"&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.internal.NULL_RE_,"&#0;");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.internal.AMP_RE_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.internal.LT_RE_,\n"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.internal.GT_RE_,"&gt;"));-1!=a.indexOf(\'"\')&&(a=a.replace(goog.string.internal.QUOT_RE_,"&quot;"));-1!=a.indexOf("\'")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;"));-1!=a.indexOf("\\x00")&&(a=a.replace(goog.string.internal.NULL_RE_,"&#0;"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/"/g;goog.string.internal.SINGLE_QUOTE_RE_=/\'/g;\ngoog.string.internal.NULL_RE_=/\\x00/g;goog.string.internal.ALL_RE_=/[\\x00&<>"\']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g," &#160;"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};\ngoog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(".");b=goog.string.internal.trim(String(b)).split(".");const d=Math.max(a.length,b.length);for(let g=0;0==c&&g<d;g++){var e=a[g]||"",f=b[g]||"";do{e=/(\\d*)(\\D*)(.*)/.exec(e)||["","","",""];f=/(\\d*)(\\D*)(.*)/.exec(f)||["","","",""];if(0==e[0].length&&0==f[0].length)break;c=0==e[1].length?0:parseInt(e[1],10);const h=0==f[1].length?0:parseInt(f[1],10);c=goog.string.internal.compareElements_(c,h)||\ngoog.string.internal.compareElements_(0==e[2].length,0==f[2].length)||goog.string.internal.compareElements_(e[2],f[2]);e=e[3];f=f[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};\ngoog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};\ngoog.html.SAFE_MIME_TYPE_PATTERN_=RegExp(\'^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\\\w+=(?:\\\\w+|"[\\\\w;,= ]+"))*$\',"i");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};\ngoog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)};\ngoog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert("MediaSource"in goog.global,"No support for MediaSource");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\\/]+=*$/i;\ngoog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,"");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SIP_URL_PATTERN_=RegExp("^sip[s]?:[+a-z0-9_.!$%&\'*\\\\/=^`{|}~-]+@([a-z0-9-]+\\\\.)+[a-z0-9]{2,63}$","i");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"fb-messenger://share")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"whatsapp://send")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf("#");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"ssh://")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\/\\/([^\\/]+)\\//,a,b)};\ngoog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(d){return goog.string.Const.unwrap(d)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};\ngoog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.trySanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SAFE_URL_PATTERN_.test(a)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):goog.html.SafeUrl.tryFromDataUrl(a)};\ngoog.html.SafeUrl.sanitize=function(a){return goog.html.SafeUrl.trySanitize(a)||goog.html.SafeUrl.INNOCUOUS_URL};\ngoog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),"%s does not match the safe URL pattern",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){return new goog.html.SafeUrl(a,goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};goog.html.SafeUrl.INNOCUOUS_URL=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.SafeUrl.INNOCUOUS_STRING);goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");const module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeStyle_SafeStyle{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=b===module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;(0,goog.asserts.assert)((0,goog.string.internal.endsWith)(a,";"),`Last character of style string is not \';\': ${a}`);(0,goog.asserts.assert)((0,goog.string.internal.contains)(a,\n":"),"Style string must contain at least one \':\', to specify a \\"name: value\\" pair: "+a);return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_}toString(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString()}static unwrap(a){if(a instanceof module$contents$goog$html$SafeStyle_SafeStyle&&a.constructor===module$contents$goog$html$SafeStyle_SafeStyle)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;\n(0,goog.asserts.fail)(`expected object of type SafeStyle, got \'${a}`+"\' of type "+goog.typeOf(a));return"type_error:SafeStyle"}static createSafeStyleSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyle_SafeStyle(a,module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE)}static create(a){let b="";for(let c in a)if(Object.prototype.hasOwnProperty.call(a,c)){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(`Name allows only [-_a-zA-Z0-9], got: ${c}`);let d=a[c];null!=d&&\n(d=Array.isArray(d)?d.map(module$contents$goog$html$SafeStyle_sanitizePropertyValue).join(" "):module$contents$goog$html$SafeStyle_sanitizePropertyValue(d),b+=`${c}:${d};`)}return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c);\nreturn b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING="zClosurez";\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return\'url("\'+goog.html.SafeUrl.unwrap(a).replace(/</g,"%3c").replace(/[\\\\"]/g,"\\\\$&")+\'")\';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):module$contents$goog$html$SafeStyle_sanitizePropertyValueString(String(a));if(/[{;}]/.test(a))throw new module$contents$goog$asserts_AssertionError("Value does not allow [{;}], got: %s.",[a]);return a}\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValueString(a){const b=a.replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_URL_RE,"url");if(module$contents$goog$html$SafeStyle_VALUE_RE.test(b)){if(module$contents$goog$html$SafeStyle_COMMENT_RE.test(a))return(0,goog.asserts.fail)(`String value disallows comments, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;\nif(!module$contents$goog$html$SafeStyle_hasBalancedQuotes(a))return(0,goog.asserts.fail)(`String value requires balanced quotes, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;if(!module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a))return(0,goog.asserts.fail)("String value requires balanced square brackets and one identifier per pair of brackets, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING}else return(0,goog.asserts.fail)(`String value allows only ${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}`+\n" and simple functions, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;return module$contents$goog$html$SafeStyle_sanitizeUrl(a)}function module$contents$goog$html$SafeStyle_hasBalancedQuotes(a){let b=!0,c=!0;for(let d=0;d<a.length;d++){const e=a.charAt(d);"\'"==e&&c?b=!b:\'"\'==e&&b&&(c=!c)}return b&&c}\nfunction module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a){let b=!0;const c=/^[-_a-zA-Z0-9]$/;for(let d=0;d<a.length;d++){const e=a.charAt(d);if("]"==e){if(b)return!1;b=!0}else if("["==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b}\nconst module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS="[-,.\\"\'%_!#/ a-zA-Z0-9\\\\[\\\\]]",module$contents$goog$html$SafeStyle_VALUE_RE=new RegExp(`^${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}+\\$`),module$contents$goog$html$SafeStyle_URL_RE=RegExp("\\\\b(url\\\\([ \\t\\n]*)(\'[ -&(-\\\\[\\\\]-~]*\'|\\"[ !#-\\\\[\\\\]-~]*\\"|[!#-&*-\\\\[\\\\]-~]*)([ \\t\\n]*\\\\))","g"),module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS="calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax radial-gradient repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)? steps var".split(" "),\nmodule$contents$goog$html$SafeStyle_FUNCTIONS_RE=new RegExp("\\\\b("+module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS.join("|")+")\\\\([-+*/0-9a-zA-Z.%#\\\\[\\\\], ]+\\\\)","g"),module$contents$goog$html$SafeStyle_COMMENT_RE=/\\/\\*/;function module$contents$goog$html$SafeStyle_sanitizeUrl(a){return a.replace(module$contents$goog$html$SafeStyle_URL_RE,(b,c,d,e)=>{let f="";d=d.replace(/^([\'"])(.*)\\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})}\ngoog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1}\nfunction module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)}\nfunction module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a}function module$contents$goog$object_containsKey(a,b){return null!==a&&b in a}\nfunction module$contents$goog$object_containsValue(a,b){for(const c in a)if(a[c]==b)return!0;return!1}function module$contents$goog$object_findKey(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return d}function module$contents$goog$object_findValue(a,b,c){return(b=module$contents$goog$object_findKey(a,b,c))&&a[b]}function module$contents$goog$object_isEmpty(a){for(const b in a)return!1;return!0}function module$contents$goog$object_clear(a){for(const b in a)delete a[b]}\nfunction module$contents$goog$object_remove(a,b){let c;(c=b in a)&&delete a[b];return c}function module$contents$goog$object_add(a,b,c){if(null!==a&&b in a)throw Error(`The object already contains the key "${b}"`);module$contents$goog$object_set(a,b,c)}function module$contents$goog$object_get(a,b,c){return null!==a&&b in a?a[b]:c}function module$contents$goog$object_set(a,b,c){a[b]=c}function module$contents$goog$object_setIfUndefined(a,b,c){return b in a?a[b]:a[b]=c}\nfunction module$contents$goog$object_setWithReturnValueIfNotSet(a,b,c){if(b in a)return a[b];c=c();return a[b]=c}function module$contents$goog$object_equals(a,b){for(const c in a)if(!(c in b)||a[c]!==b[c])return!1;for(const c in b)if(!(c in a))return!1;return!0}function module$contents$goog$object_clone(a){const b={};for(const c in a)b[c]=a[c];return b}\nfunction module$contents$goog$object_unsafeClone(a){if(!a||"object"!==typeof a)return a;if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);if(a instanceof Date)return new Date(a.getTime());const b=Array.isArray(a)?[]:"function"!==typeof ArrayBuffer||"function"!==typeof ArrayBuffer.isView||!ArrayBuffer.isView(a)||a instanceof DataView?{}:new a.constructor(a.length);for(const c in a)b[c]=\nmodule$contents$goog$object_unsafeClone(a[c]);return b}function module$contents$goog$object_transpose(a){const b={};for(const c in a)b[a[c]]=c;return b}const module$contents$goog$object_PROTOTYPE_FIELDS="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\nfunction module$contents$goog$object_extend(a,b){let c,d;for(let e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(let f=0;f<module$contents$goog$object_PROTOTYPE_FIELDS.length;f++)c=module$contents$goog$object_PROTOTYPE_FIELDS[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}}\nfunction module$contents$goog$object_create(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");const c={};for(let d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c}\nfunction module$contents$goog$object_createSet(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_createSet.apply(null,arguments[0]);const c={};for(let d=0;d<b;d++)c[arguments[d]]=!0;return c}function module$contents$goog$object_createImmutableView(a){let b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b}function module$contents$goog$object_isImmutableView(a){return!!Object.isFrozen&&Object.isFrozen(a)}\nfunction module$contents$goog$object_getAllPropertyNames(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return module$contents$goog$object_getKeys(a);const d={};for(;a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){const e=Object.getOwnPropertyNames(a);for(let f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return module$contents$goog$object_getKeys(d)}\nfunction module$contents$goog$object_getSuperClass(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor}goog.object.add=module$contents$goog$object_add;goog.object.clear=module$contents$goog$object_clear;goog.object.clone=module$contents$goog$object_clone;goog.object.contains=module$contents$goog$object_contains;goog.object.containsKey=module$contents$goog$object_containsKey;goog.object.containsValue=module$contents$goog$object_containsValue;goog.object.create=module$contents$goog$object_create;\ngoog.object.createImmutableView=module$contents$goog$object_createImmutableView;goog.object.createSet=module$contents$goog$object_createSet;goog.object.equals=module$contents$goog$object_equals;goog.object.every=module$contents$goog$object_every;goog.object.extend=module$contents$goog$object_extend;goog.object.filter=module$contents$goog$object_filter;goog.object.findKey=module$contents$goog$object_findKey;goog.object.findValue=module$contents$goog$object_findValue;goog.object.forEach=module$contents$goog$object_forEach;\ngoog.object.get=module$contents$goog$object_get;goog.object.getAllPropertyNames=module$contents$goog$object_getAllPropertyNames;goog.object.getAnyKey=module$contents$goog$object_getAnyKey;goog.object.getAnyValue=module$contents$goog$object_getAnyValue;goog.object.getCount=module$contents$goog$object_getCount;goog.object.getKeys=module$contents$goog$object_getKeys;goog.object.getSuperClass=module$contents$goog$object_getSuperClass;goog.object.getValueByKeys=module$contents$goog$object_getValueByKeys;\ngoog.object.getValues=module$contents$goog$object_getValues;goog.object.isEmpty=module$contents$goog$object_isEmpty;goog.object.isImmutableView=module$contents$goog$object_isImmutableView;goog.object.map=module$contents$goog$object_map;goog.object.remove=module$contents$goog$object_remove;goog.object.set=module$contents$goog$object_set;goog.object.setIfUndefined=module$contents$goog$object_setIfUndefined;goog.object.setWithReturnValueIfNotSet=module$contents$goog$object_setWithReturnValueIfNotSet;\ngoog.object.some=module$contents$goog$object_some;goog.object.transpose=module$contents$goog$object_transpose;goog.object.unsafeClone=module$contents$goog$object_unsafeClone;const module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeStyleSheet_SafeStyleSheet{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=b===module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString()}static createRule(a,b){if((0,goog.string.internal.contains)(a,"<"))throw Error(`Selector does not allow \'<\', got: ${a}`);const c=a.replace(/(\'|")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g,\n"");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(c))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and strings, got: "+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error("() and [] in selector must be balanced, got: "+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/</g,"\\\\3C ")+"}";\nreturn module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}static hasBalancedBrackets_(a){const b={"(":")","[":"]"},c=[];for(let d=0;d<a.length;d++){const e=a[d];if(b[e])c.push(b[e]);else if(module$contents$goog$object_contains(b,e)&&c.pop()!=e)return!1}return 0==c.length}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments,\nc);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,"<"),`Forbidden \'<\' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeStyleSheet, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}}\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A="A";goog.dom.TagName.ABBR="ABBR";goog.dom.TagName.ACRONYM="ACRONYM";goog.dom.TagName.ADDRESS="ADDRESS";goog.dom.TagName.APPLET="APPLET";goog.dom.TagName.AREA="AREA";goog.dom.TagName.ARTICLE="ARTICLE";goog.dom.TagName.ASIDE="ASIDE";goog.dom.TagName.AUDIO="AUDIO";goog.dom.TagName.B="B";goog.dom.TagName.BASE="BASE";goog.dom.TagName.BASEFONT="BASEFONT";goog.dom.TagName.BDI="BDI";goog.dom.TagName.BDO="BDO";\ngoog.dom.TagName.BIG="BIG";goog.dom.TagName.BLOCKQUOTE="BLOCKQUOTE";goog.dom.TagName.BODY="BODY";goog.dom.TagName.BR="BR";goog.dom.TagName.BUTTON="BUTTON";goog.dom.TagName.CANVAS="CANVAS";goog.dom.TagName.CAPTION="CAPTION";goog.dom.TagName.CENTER="CENTER";goog.dom.TagName.CITE="CITE";goog.dom.TagName.CODE="CODE";goog.dom.TagName.COL="COL";goog.dom.TagName.COLGROUP="COLGROUP";goog.dom.TagName.COMMAND="COMMAND";goog.dom.TagName.DATA="DATA";goog.dom.TagName.DATALIST="DATALIST";goog.dom.TagName.DD="DD";\ngoog.dom.TagName.DEL="DEL";goog.dom.TagName.DETAILS="DETAILS";goog.dom.TagName.DFN="DFN";goog.dom.TagName.DIALOG="DIALOG";goog.dom.TagName.DIR="DIR";goog.dom.TagName.DIV="DIV";goog.dom.TagName.DL="DL";goog.dom.TagName.DT="DT";goog.dom.TagName.EM="EM";goog.dom.TagName.EMBED="EMBED";goog.dom.TagName.FIELDSET="FIELDSET";goog.dom.TagName.FIGCAPTION="FIGCAPTION";goog.dom.TagName.FIGURE="FIGURE";goog.dom.TagName.FONT="FONT";goog.dom.TagName.FOOTER="FOOTER";goog.dom.TagName.FORM="FORM";\ngoog.dom.TagName.FRAME="FRAME";goog.dom.TagName.FRAMESET="FRAMESET";goog.dom.TagName.H1="H1";goog.dom.TagName.H2="H2";goog.dom.TagName.H3="H3";goog.dom.TagName.H4="H4";goog.dom.TagName.H5="H5";goog.dom.TagName.H6="H6";goog.dom.TagName.HEAD="HEAD";goog.dom.TagName.HEADER="HEADER";goog.dom.TagName.HGROUP="HGROUP";goog.dom.TagName.HR="HR";goog.dom.TagName.HTML="HTML";goog.dom.TagName.I="I";goog.dom.TagName.IFRAME="IFRAME";goog.dom.TagName.IMG="IMG";goog.dom.TagName.INPUT="INPUT";\ngoog.dom.TagName.INS="INS";goog.dom.TagName.ISINDEX="ISINDEX";goog.dom.TagName.KBD="KBD";goog.dom.TagName.KEYGEN="KEYGEN";goog.dom.TagName.LABEL="LABEL";goog.dom.TagName.LEGEND="LEGEND";goog.dom.TagName.LI="LI";goog.dom.TagName.LINK="LINK";goog.dom.TagName.MAIN="MAIN";goog.dom.TagName.MAP="MAP";goog.dom.TagName.MARK="MARK";goog.dom.TagName.MATH="MATH";goog.dom.TagName.MENU="MENU";goog.dom.TagName.MENUITEM="MENUITEM";goog.dom.TagName.META="META";goog.dom.TagName.METER="METER";\ngoog.dom.TagName.NAV="NAV";goog.dom.TagName.NOFRAMES="NOFRAMES";goog.dom.TagName.NOSCRIPT="NOSCRIPT";goog.dom.TagName.OBJECT="OBJECT";goog.dom.TagName.OL="OL";goog.dom.TagName.OPTGROUP="OPTGROUP";goog.dom.TagName.OPTION="OPTION";goog.dom.TagName.OUTPUT="OUTPUT";goog.dom.TagName.P="P";goog.dom.TagName.PARAM="PARAM";goog.dom.TagName.PICTURE="PICTURE";goog.dom.TagName.PRE="PRE";goog.dom.TagName.PROGRESS="PROGRESS";goog.dom.TagName.Q="Q";goog.dom.TagName.RP="RP";goog.dom.TagName.RT="RT";\ngoog.dom.TagName.RTC="RTC";goog.dom.TagName.RUBY="RUBY";goog.dom.TagName.S="S";goog.dom.TagName.SAMP="SAMP";goog.dom.TagName.SCRIPT="SCRIPT";goog.dom.TagName.SECTION="SECTION";goog.dom.TagName.SELECT="SELECT";goog.dom.TagName.SMALL="SMALL";goog.dom.TagName.SOURCE="SOURCE";goog.dom.TagName.SPAN="SPAN";goog.dom.TagName.STRIKE="STRIKE";goog.dom.TagName.STRONG="STRONG";goog.dom.TagName.STYLE="STYLE";goog.dom.TagName.SUB="SUB";goog.dom.TagName.SUMMARY="SUMMARY";goog.dom.TagName.SUP="SUP";\ngoog.dom.TagName.SVG="SVG";goog.dom.TagName.TABLE="TABLE";goog.dom.TagName.TBODY="TBODY";goog.dom.TagName.TD="TD";goog.dom.TagName.TEMPLATE="TEMPLATE";goog.dom.TagName.TEXTAREA="TEXTAREA";goog.dom.TagName.TFOOT="TFOOT";goog.dom.TagName.TH="TH";goog.dom.TagName.THEAD="THEAD";goog.dom.TagName.TIME="TIME";goog.dom.TagName.TITLE="TITLE";goog.dom.TagName.TR="TR";goog.dom.TagName.TRACK="TRACK";goog.dom.TagName.TT="TT";goog.dom.TagName.U="U";goog.dom.TagName.UL="UL";goog.dom.TagName.VAR="VAR";\ngoog.dom.TagName.VIDEO="VIDEO";goog.dom.TagName.WBR="WBR";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE="",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a};\nconst module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:""}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null}\nfunction module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData();\nfunction module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal="string"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal}\nfunction module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal}\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)}\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp("([A-Z][\\\\w ]+)/([^\\\\s]+)\\\\s*(?:\\\\((.*?)\\\\))?","g"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT;\ngoog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent;\ngoog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_=\n!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error("Unsafe call to resetForTesting");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("fullVersionList");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("platformVersion");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:"Android Browser",CHROMIUM:"Chromium",EDGE:"Microsoft Edge",FIREFOX:"Firefox",IE:"Internet Explorer",OPERA:"Opera",SAFARI:"Safari",SILK:"Silk"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand;\nfunction module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0<a.brands.length}\nfunction module$contents$goog$labs$userAgent$browser_hasFullVersionList(){return module$contents$goog$labs$userAgent$browser_isAtLeast(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM,98)}function module$contents$goog$labs$userAgent$browser_matchOpera(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Opera")}\nfunction module$contents$goog$labs$userAgent$browser_matchIE(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Trident")||module$contents$goog$labs$userAgent$util_matchUserAgent("MSIE")}function module$contents$goog$labs$userAgent$browser_matchEdgeHtml(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Edge")}\nfunction module$contents$goog$labs$userAgent$browser_matchEdgeChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.EDGE):module$contents$goog$labs$userAgent$util_matchUserAgent("Edg/")}\nfunction module$contents$goog$labs$userAgent$browser_matchOperaChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.OPERA):module$contents$goog$labs$userAgent$util_matchUserAgent("OPR")}\nfunction module$contents$goog$labs$userAgent$browser_matchFirefox(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Firefox")||module$contents$goog$labs$userAgent$util_matchUserAgent("FxiOS")}\nfunction module$contents$goog$labs$userAgent$browser_matchSafari(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Safari")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchCoast()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_matchEdgeChromium()||module$contents$goog$labs$userAgent$browser_matchOperaChromium()||\nmodule$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_isSilk()||module$contents$goog$labs$userAgent$util_matchUserAgent("Android"))}function module$contents$goog$labs$userAgent$browser_matchCoast(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Coast")}\nfunction module$contents$goog$labs$userAgent$browser_matchIosWebview(){return(module$contents$goog$labs$userAgent$util_matchUserAgent("iPad")||module$contents$goog$labs$userAgent$util_matchUserAgent("iPhone"))&&!module$contents$goog$labs$userAgent$browser_matchSafari()&&!module$contents$goog$labs$userAgent$browser_matchChrome()&&!module$contents$goog$labs$userAgent$browser_matchCoast()&&!module$contents$goog$labs$userAgent$browser_matchFirefox()&&module$contents$goog$labs$userAgent$util_matchUserAgent("AppleWebKit")}\nfunction module$contents$goog$labs$userAgent$browser_matchChrome(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM):(module$contents$goog$labs$userAgent$util_matchUserAgent("Chrome")||module$contents$goog$labs$userAgent$util_matchUserAgent("CriOS"))&&!module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_isSilk()}\nfunction module$contents$goog$labs$userAgent$browser_matchAndroidBrowser(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Android")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_isSilk())}const module$contents$goog$labs$userAgent$browser_isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;\ngoog.labs.userAgent.browser.isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;const module$contents$goog$labs$userAgent$browser_isIE=module$contents$goog$labs$userAgent$browser_matchIE;goog.labs.userAgent.browser.isIE=module$contents$goog$labs$userAgent$browser_matchIE;const module$contents$goog$labs$userAgent$browser_isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;goog.labs.userAgent.browser.isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;\nconst module$contents$goog$labs$userAgent$browser_isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;goog.labs.userAgent.browser.isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;const module$contents$goog$labs$userAgent$browser_isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;goog.labs.userAgent.browser.isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;\nconst module$contents$goog$labs$userAgent$browser_isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;goog.labs.userAgent.browser.isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;const module$contents$goog$labs$userAgent$browser_isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;goog.labs.userAgent.browser.isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;const module$contents$goog$labs$userAgent$browser_isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;\ngoog.labs.userAgent.browser.isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;const module$contents$goog$labs$userAgent$browser_isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;goog.labs.userAgent.browser.isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;const module$contents$goog$labs$userAgent$browser_isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;goog.labs.userAgent.browser.isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;\nconst module$contents$goog$labs$userAgent$browser_isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;goog.labs.userAgent.browser.isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;function module$contents$goog$labs$userAgent$browser_isSilk(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Silk")}goog.labs.userAgent.browser.isSilk=module$contents$goog$labs$userAgent$browser_isSilk;\nfunction module$contents$goog$labs$userAgent$browser_createVersionMap(a){const b={};a.forEach(c=>{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||""}\nfunction module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b(["Version","Opera"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()?\nb(["Edge"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b(["Edg"]):module$contents$goog$labs$userAgent$browser_isSilk()?b(["Silk"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b(["Chrome","CriOS","HeadlessChrome"]):(a=a[2])&&a[1]||""}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion;\nfunction module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher;\nfunction module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\\d\\.]*)/.exec(a);if(b&&b[1])return b[1];b="";const c=/MSIE +([\\d\\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\\/(\\d.\\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b}\nfunction module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):"";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c(["Version",\n"Opera"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c(["OPR"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c(["Edge"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c(["Edg"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c(["Chrome","CriOS","HeadlessChrome"])}return a===\nmodule$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&&\na[1]||"":""}\nfunction module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(".")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(""===b)return NaN;b=b.split(".")}return 0===b.length?NaN:Number(b[0])}\nfunction module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast;\nfunction module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost;\nclass module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a=\nawait module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;\nasync function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions;\ngoog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()};\nfunction module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b="";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(""===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a,\nc,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf;\nfunction module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return""}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)}\ngoog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&&\na.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got \'${a}\' of type `+goog.typeOf(a));return"type_error:SafeHtml"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof\nmodule$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\\x3c!--"+\ngoog.string.internal.htmlEscape(a)+"--\\x3e")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:"");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Tag name <${a}> is not allowed for SafeHtml.`:"");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:""},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n"The browser does not support sandboxed iframes.":"");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a);\na=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if("language"==d||"src"==d||"text"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set "${d}" attribute`:"");}c="";a=module$contents$goog$array_concat(a);for(d=0;d<\na.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:"text/css"},{},b);let c="";a=module$contents$goog$array_concat(a);for(let d=0;d<a.length;d++)c+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(a[d]);\na=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",b,a)}static createMetaRefresh(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(module$contents$goog$labs$userAgent$browser_matchIE()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml())&&goog.string.internal.contains(a,";")&&(a="\'"+a.replace(/\'/g,"%27")+"\'");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",\n{"http-equiv":"refresh",content:(b||0)+"; url="+a})}static join(a,b){a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);const c=[],d=e=>{Array.isArray(e)?e.forEach(d):(e=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(e),c.push(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(e)))};b.forEach(d);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c.join(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static concat(a){return module$contents$goog$html$SafeHtml_SafeHtml.join(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY,\nArray.prototype.slice.call(arguments))}static createSafeHtmlSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createHTML(a):a;return new module$contents$goog$html$SafeHtml_SafeHtml(a,module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE)}static createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(a,b,c){b=`<${a}`+module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes(a,b);null==c?c=[]:Array.isArray(c)||(c=[c]);goog.dom.tags.isVoidTag(a.toLowerCase())?\n(goog.asserts.assert(!c.length,`Void tag <${a}> does not allow content.`),b+=">"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=">"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+"</"+a+">");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c="";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Invalid attribute name "${d}".`:"");const e=b[d];null!=e&&(c+=" "+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,"Must be lower case"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c,\nf)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override "${e}" attribute, got "`+f+\'" with value "\'+c[f]+\'"\':"");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape;\nconst module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0,\n[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0};\nfunction module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\'Attribute "style" not supported.\':"");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Attribute "${b}`+\'" requires goog.string.Const value, "\'+c+\'" given.\':"");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if("string"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute "${b}" on tag "${a}`+\'" requires goog.html.SafeUrl, goog.string.Const, or string, value "\'+\nc+\'" given.\':"");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert("string"===typeof c||"number"===typeof c,"String or number value expected, got "+typeof c+" with value: "+c);return`${b}="`+goog.string.internal.htmlEscape(String(c))+\'"\'}\nfunction module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\'The "style" attribute requires goog.html.SafeStyle or map of style properties, \'+typeof a+" given: "+a:"");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)}\nmodule$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||"",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>")}();\ngoog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};\ngoog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&"undefined"===typeof document)return!1;var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement});\ngoog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};\ngoog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML to be immediatelly used."),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)};\ngoog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};\ngoog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};\ngoog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,\'URL must be TrustedResourceUrl because "rel" contains "stylesheet"\'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):\nb instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};\ngoog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute("nonce",b)};\ngoog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))};\ngoog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||"";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)};\ngoog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,"text/html")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)};\ngoog.dom.safe.createImageFromBlob=function(a){if(!/^image\\/.*/g.test(a.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_("script[nonce]",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_(\'style[nonce],link[rel="stylesheet"][nonce]\',a)};goog.dom.safe.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:"":""};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\\u00a0",ZERO_WIDTH_SPACE:"\\u200b"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;\ngoog.string.subs=function(a,b){const c=a.split("%s");let d="";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\\s\\xa0]+/g," ").replace(/^\\s+|\\s+$/g,"")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;\ngoog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\\t\\n\\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};\ngoog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\\u0080"<=a&&"\\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)/g,"\\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\\xa0|\\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\\xa0|[ \\t]+/g," ")};\ngoog.string.collapseBreakingSpaces=function(a){return a.replace(/[\\t\\r\\n ]+/g," ").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,"")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\\s\\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\\s\\xa0]+$/,"")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;\ngoog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g<f;g++){c=d[g];const h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\D+/g)};\ngoog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\.\\d+|\\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\\+/g," "))};goog.string.newLineToBr=goog.string.internal.newLineToBr;\ngoog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,"&#101;"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};\ngoog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};\ngoog.string.unescapeEntitiesUsingDom_=function(a,b){const c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":\'"\'};let d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;"#"==f.charAt(0)&&(f=Number("0"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),\ne+" ")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return\'"\';default:return"#"!=c.charAt(0)||(c=Number("0"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};\ngoog.string.preserveSpaces=function(a){return a.replace(/(^|[\\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;d<c;d++){const e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};\ngoog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\\x00":"\\\\0","\\b":"\\\\b","\\f":"\\\\f","\\n":"\\\\n","\\r":"\\\\r","\\t":"\\\\t","\\v":"\\\\x0B",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\","<":"\\\\u003C"};goog.string.jsEscapeCache_={"\'":"\\\\\'"};\ngoog.string.quote=function(a){a=String(a);const b=[\'"\'];for(let c=0;c<a.length;c++){const d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push(\'"\');return b.join("")};goog.string.escapeString=function(a){const b=[];for(let c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};\ngoog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];let b;const c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\\\x",16>c||256<c)b+="0"}else b="\\\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains;\ngoog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b<a.length&&0<c&&(d=a.slice(0,b)+a.slice(b+c));return d};goog.string.remove=function(a,b){return a.replace(b,"")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,"")};\ngoog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,c.replace(/\\$/g,"$$$$"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,"\\\\$1").replace(/\\x08/g,"\\\\x08")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};\ngoog.string.padNumber=function(a,b,c){if(!Number.isFinite(a))return String(a);a=void 0!==c?a.toFixed(c):String(a);c=a.indexOf(".");-1===c&&(c=a.length);const d="-"===a[0]?"-":"";d&&(a=a.substring(1));return d+goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};\ngoog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){let b=0;for(let c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};\ngoog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};goog.string.toTitleCase=function(a,b){b="string"===typeof b?goog.string.regExpEscape(b):"\\\\s";return a.replace(new RegExp("(^"+(b?"|["+b+"]+":"")+")([a-z])","g"),function(c,d,e){return d+e.toUpperCase()})};\ngoog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return"string"===typeof a?/^\\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};\ngoog.string.lastComponent=function(a,b){if(b)"string"==typeof b&&(b=[b]);else return a;let c=-1;for(let d=0;d<b.length;d++){if(""==b[d])continue;const e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};\ngoog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.string.path={};goog.string.path.baseName=function(a){const b=a.lastIndexOf("/")+1;return a.slice(b)};goog.string.path.basename=goog.string.path.baseName;goog.string.path.dirname=function(a){const b=a.lastIndexOf("/")+1;a=a.slice(0,b);/^\\/+$/.test(a)||(a=a.replace(/\\/+$/,""));return a};goog.string.path.extension=function(a){a=goog.string.path.baseName(a).replace(/\\.+/g,".");const b=a.lastIndexOf(".");return 0>=b?"":a.slice(b+1)};\ngoog.string.path.join=function(a){let b=arguments[0];for(let c=1;c<arguments.length;c++){const d=arguments[c];b=goog.string.startsWith(d,"/")?d:""==b||goog.string.endsWith(b,"/")?b+d:b+("/"+d)}return b};\ngoog.string.path.normalizePath=function(a){if(""==a)return".";let b="";goog.string.startsWith(a,"/")&&(b="/",goog.string.startsWith(a,"//")&&!goog.string.startsWith(a,"///")&&(b="//"));a=a.split("/");const c=[];for(let d=0;d<a.length;d++){const e=a[d];""!=e&&"."!=e&&(".."!=e||!b&&!c.length||".."==module$contents$goog$array_peek(c)?c.push(e):c.pop())}return b+c.join("/")||"."};goog.string.path.split=function(a){const b=goog.string.path.dirname(a);a=goog.string.path.baseName(a);return[b,a]};const DEBUG_WASI$$module$src$filesystem$wasi=!1;function assertLeadingSlash$$module$src$filesystem$wasi(a){return/^\\//g.test(a)?a:`/${a}`}function removeLeadingSlash$$module$src$filesystem$wasi(a){return a.replace(/^\\//g,"")}function shouldOpenReader$$module$src$filesystem$wasi(a){return(a&(WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants))!==goog.global.BigInt(0)}\nfunction performanceNowPoly$$module$src$filesystem$wasi(){if("undefined"===typeof performance||"undefined"===typeof performance.now){const a=Date.now();return Date.now()-a}return performance.now()}function concatUint8Arrays$$module$src$filesystem$wasi(a){var b=a.reduce((d,e)=>d+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}}\nconst WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:"/dev/stdin",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:"/dev/stdout",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:"/dev/stderr",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:"/",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0};\nWASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)"function"===c.kind&&c.module.startsWith("wasi_")&&("object"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b};\nWASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a};\nWASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START);\ndefault:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("clock_time_get",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_advise",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_allocate",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_close",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_datasync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_get",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants),\n!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_flags",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_rights",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_get",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b,\ngoog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_size",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_times",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_pread",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_dir_name",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_get",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log("fd_pwrite",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_read",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((n,p)=>n+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,l=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,"\\x00"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;f<c;f++){var m=b+8*f;const n=g.getUint32(m,!0);m=g.getUint32(m+\n4,!0);l||(k+=m,Array.from({length:m},(p,q)=>q).reduce((p,q)=>{if(l)return p;const [w,r]=p;let u=p=0,A=!1,x=0,t;if(0===q)for(;!A;)t=e[p]?e[p].byteLength:0,x<=h&&t+x>h?(A=!0,u=h-x):(x+=t,p+=1);else p=w,u=r;e[p]?(g.setUint8(n+q,e[p][u]),u+1>=e[p].byteLength?(p=w+1,u=0):u+=1):(g.setUint8(n+q,"\\x00"),h+=q,l=!0);return[p,u]},[0,0]),l||(h+=m))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error("Reading non existent file",a,this.fd[a])};\nWASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_readdir",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_renumber",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_seek",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break;\ncase WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_sync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_tell",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_write",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0<this.fd[a].buffers.length?[concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)]:this.fd[a].buffers;let f=0;for(let k=0;k<c;k++){var g=b+8*k,h=e.getUint32(g,!0);g=e.getUint32(g+4,!0);f+=g;h=new Uint8Array(e.buffer,h,g);if(this.fd[a].buffers[0]&&\nthis.fd[a].seekPos<this.fd[a].buffers[0].length){const l=Number(this.fd[a].seekPos);h.slice(0,g).forEach((m,n)=>{this.fd[a].buffers[0][l+n]=m})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_create_directory",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_get",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_set_times",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_link",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_open",a,b,c,d,e,f,g,h,k,arguments);const l=this.getMemory();var m=(this.fd[a]||{path:"/"}).path,n=new Uint8Array(l.buffer,c,d);n=decoder$$module$src$utils$text_encoders.decode(n);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?"":m,n)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(";; opening path",\np,"withREader",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith("/..")||"/._"===p||"/.AppleDouble"===p)return WASI_EBADF$$module$src$filesystem$constants;(m=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?n=m.fd:(n=this.fd.length,this.fd[n]={fd:n});this.fd[n]={...this.fd[n],path:p,type:"file",seekPos:goog.global.BigInt(0),buffers:m?this.fd[n].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("should open a read handle for",\np);l.setUint32(k,n,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_readlink",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_remove_directory",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_rename",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_symlink",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3<a&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_unlink_file",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.poll_oneoff=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("poll_oneoff",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.proc_exit=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_exit",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.proc_raise=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_raise",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.random_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("random_get",a,b);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sched_yield=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sched_yield",arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.sock_recv=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_recv",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sock_send=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_send",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.sock_shutdown=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_shutdown",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.findBuffers=function(a){const b=Object.values(this.fd).find(({path:c})=>c===a);return[b&&b.buffers,b.fd]};\nWASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+"/").replace("//","/"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\\//g.test(d.replace(b,""))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,""))).filter(d=>!!d)};\nWASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]};\nWASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can\'t append to non-existing file ${a}`)};\nWASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn\'t been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)};\nWASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)};\nWASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0<c.length?console.warn(`mkdir: path ${a} already exists`):(a=Object.keys(this.fd).length,this.fd[a]={fd:a,path:b})};var module$src$filesystem$wasi={};module$src$filesystem$wasi.WASI=WASI$$module$src$filesystem$wasi;function clearArray$$module$src$utils$clear_array(a){for(;0<a.length;)a.pop()}var module$src$utils$clear_array={};module$src$utils$clear_array.clearArray=clearArray$$module$src$utils$clear_array;const CompressionMethod$$module$src$zlib$zlib={DEFLATE:8,RESERVED:15};var module$src$zlib$zlib={};module$src$zlib$zlib.CompressionMethod=CompressionMethod$$module$src$zlib$zlib;/*\n zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */\nfunction Huffman$$module$src$zlib$huffman(a){const b=a.length;let c=0,d=Number.POSITIVE_INFINITY,e,f,g,h;let k,l;for(k=0;k<b;++k)a[k]>c&&(c=a[k]),a[k]<d&&(d=a[k]);const m=1<<c,n=new Uint32Array(m);e=1;f=0;for(g=2;e<=c;){for(k=0;k<b;++k)if(a[k]===e){h=0;var p=f;for(l=0;l<e;++l)h=h<<1|p&1,p>>=1;p=e<<16|k;for(l=h;l<m;l+=g)n[l]=p;++f}++e;f<<=1;g<<=1}return[n,c,d]}var module$src$zlib$huffman={};module$src$zlib$huffman.Huffman=Huffman$$module$src$zlib$huffman;const ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate=32768;\nfunction RawInflate$$module$src$zlib$rawinflate(a,b){this.blocks=[];this.bufferSize=ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate;this.bitsbuflen=this.bitsbuf=this.ip=this.totalpos=0;this.input=new Uint8Array(a);this.bfinal=!1;this.bufferType=RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE;this.resize=!1;if(b||!(b={}))b.index&&(this.ip=b.index),b.bufferSize&&(this.bufferSize=b.bufferSize),b.bufferType&&(this.bufferType=b.bufferType),b.resize&&(this.resize=b.resize);switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.op=\nRawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;this.output=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength+this.bufferSize+RawInflate$$module$src$zlib$rawinflate.MaxCopyLength);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.op=0;this.output=new Uint8Array(this.bufferSize);break;default:throw Error("invalid inflate mode");}}RawInflate$$module$src$zlib$rawinflate.BufferType={BLOCK:0,ADAPTIVE:1};\nRawInflate$$module$src$zlib$rawinflate.prototype.decompress=function(){for(;!this.bfinal;)this.parseBlock();switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:return this.concatBufferBlock();case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:return this.concatBufferDynamic();default:throw Error("invalid inflate mode");}};RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength=32768;RawInflate$$module$src$zlib$rawinflate.MaxCopyLength=258;\nRawInflate$$module$src$zlib$rawinflate.Order=function(a){return new Uint16Array(a)}([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);RawInflate$$module$src$zlib$rawinflate.LengthCodeTable=function(a){return new Uint16Array(a)}([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]);RawInflate$$module$src$zlib$rawinflate.LengthExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]);\nRawInflate$$module$src$zlib$rawinflate.DistCodeTable=function(a){return new Uint16Array(a)}([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);RawInflate$$module$src$zlib$rawinflate.DistExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\nRawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable=function(a){return a}(function(){const a=new Uint8Array(288);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=143>=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=5;return Huffman$$module$src$zlib$huffman(a)}());\nRawInflate$$module$src$zlib$rawinflate.prototype.parseBlock=function(){let a=this.readBits(3);a&1&&(this.bfinal=!0);a>>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error("unknown BTYPE: "+a);}};\nRawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error("input buffer is broken");for(;c<a;)b|=d[e++]<<c,c+=8;this.bitsbuf=b>>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<<a)-1};\nRawInflate$$module$src$zlib$rawinflate.prototype.readCodeByTable=function(a){let b=this.bitsbuf,c=this.bitsbuflen;var d=this.input;let e=this.ip;var f=d.length;const g=a[0];for(a=a[1];c<a&&!(e>=f);)b|=d[e++]<<c,c+=8;d=g[b&(1<<a)-1];f=d>>>16;if(f>c)throw Error("invalid code length: "+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error("invalid uncompressed block header: LEN");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error("invalid uncompressed block header: NLEN");e=a[b++]|a[b++]<<8;if(f===~e)throw Error("invalid uncompressed block header: length verify");if(b+f>a.length)throw Error("input buffer is broken");\nswitch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error("invalid inflate mode");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);\nbreak;default:throw Error("invalid inflate mode");}};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;e<c;++e)d[RawInflate$$module$src$zlib$rawinflate.Order[e]]=this.readBits(3);d=Huffman$$module$src$zlib$huffman(d);c=new Uint8Array(a+b);e=0;for(b=a+b;e<b;){var f=this.readCodeByTable(d);switch(f){case 16:for(f=3+this.readBits(2);f--;)c[e++]=g;break;case 17:for(f=\n3+this.readBits(3);f--;)c[e++]=0;var g=0;break;case 18:for(f=11+this.readBits(7);f--;)c[e++]=0;g=0;break;default:g=c[e++]=f}}g=Huffman$$module$src$zlib$huffman(c.subarray(0,a));a=Huffman$$module$src$zlib$huffman(c.subarray(a));switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(g,a);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(g,a);break;default:throw Error("invalid inflate mode");}};\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanBlock=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;const e=c.length-RawInflate$$module$src$zlib$rawinflate.MaxCopyLength;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,n=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=\ne&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=m[f],0<n[f]&&(g+=this.readBits(n[f])),d>=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,n=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]=\nf;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=m[f],0<n[f]&&(g+=this.readBits(n[f])),d+h>e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\nRawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;\nreturn c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&("number"===typeof a.fixRatio&&(b=a.fixRatio),"number"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a<d.length?d.length+a:d.length<<1):a=d.length*b;a=new Uint8Array(a);a.set(d);return this.output=a};\nRawInflate$$module$src$zlib$rawinflate.prototype.concatBufferBlock=function(){let a=0;const b=this.output,c=this.blocks;let d;const e=new Uint8Array(this.totalpos+(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));let f,g,h,k;if(0===c.length)return this.output.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,this.op);f=0;for(g=c.length;f<g;++f)for(d=c[f],h=0,k=d.length;h<k;++h)e[a++]=d[h];f=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;for(g=this.op;f<\ng;++f)e[a++]=b[f];this.blocks=[];return this.buffer=e};RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferDynamic=function(){let a;const b=this.op;this.resize?(a=new Uint8Array(b),a.set(this.output.subarray(0,b))):a=this.output.subarray(0,b);return this.buffer=a};var module$src$zlib$rawinflate={};module$src$zlib$rawinflate.RawInflate=RawInflate$$module$src$zlib$rawinflate;function Util$$module$src$zlib$util(){}Util$$module$src$zlib$util.stringToByteArray=function(a){a=[...a];let b,c;b=0;for(c=a.length;b<c;b++)a[b]=(a[b].charPointAt(0)&255)>>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){"string"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0<d;){e=d>Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0};\nAdler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error("unsupported compression method");}if(0!==((c<<8)+d)%31)throw Error("invalid fcheck flag:"+((c<<8)+d)%31);if(d&32)throw Error("fdict flag is not supported");this.rawinflate=\nnew RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType;\nInflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error("invalid adler-32 checksum");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\\n$/g.test(d);e=/^\\n/g.test(d);var k=d.split("\\n").filter(m=>0<m.length),l=[];if(0===k.length&&h||e)l.push(c.join("")),clearArray$$module$src$utils$clear_array(c);k.forEach((m,n)=>{n+1===k.length?h?0===n?(l.push(c.join("")+m),\nclearArray$$module$src$utils$clear_array(c)):l.push(m):c.push(m):0===n?(l.push(c.join("")+m),clearArray$$module$src$utils$clear_array(c)):l.push(m)});l.forEach(m=>{m.replace(/(\\r\\n|\\n|\\r)/gm,"")&&b.post({log:m})})}},assertPluginExports$$module$src$module=a=>{if(a&&"object"===typeof a&&"object"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,"A csound plugin turns out to be neither a plugin, opcode or module.\\nPerhaps csdl.h or module.h wasn\'t imported correctly?");\nreturn!1}console.error("A csound plugin didn\'t export __wasm_call_ctors.\\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors");return!1}console.error("Error instantiating a csound plugin, instance and/or export is missing!");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let l=0,m=1;for(;;){const n=a[c++];l+=(n&127)*m;m*=128;if(!(n&128))break}return l}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error("Wasm magic number is missing!");\nif(0!==a[8])return logWasmModule$$module$src$logger("Dylink section wasn\'t found in wasm binary, assuming static wasm."),"static";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]==="d".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="y".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="l".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="i".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="n".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="k".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\n".".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="0".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory,\nstreamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]};\nvar $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{"/":"/"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if("static"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(t,z)=>{t=await t;\nlet v,y;try{v=new Uint8Array(z),y=getBinaryHeaderData$$module$src$module(v)}catch(C){console.error("Error in plugin",C)}y&&t.push({headerData:y,wasmPluginBytes:v});return t},[]);var l=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((t,{headerData:z})=>"static"===z?0:t+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+l;const m=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),n=new WebAssembly.Table({initial:k+\n1,element:"anyfunc"});e.setMemory(m);const p=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);l=new WebAssembly.Global({value:"i32",mutable:!1},l);const q=new WebAssembly.Global({value:"i32",mutable:!1},1),w=new WebAssembly.Global({value:"i32",mutable:!0},0);a=await WebAssembly.compile(a);const r=e.getImports(a);let u=[],A=d;r.env=r.env||{};r.env.memory=m;r.env.__indirect_function_table=\nn;r.env.__stack_pointer=p;r.env.__memory_base=l;r.env.__table_base=q;r.env.csoundLoadModules=t=>{u.forEach(z=>{void 0===x?console.error("csound-wasm internal: timing problem detected!"):dlinit$$module$src$dlinit(x,z,n,t)});return 0};r.env._ZTH5errno=function(){};r.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:m,messagePort:c,streamBuffer:[]});r.env.printDebugCallback=(t,z)=>{t=new Uint8Array(m.buffer,t,z);t=uint2String$$module$src$utils$text_encoders(t);console.log(t)};\nr["GOT.mem"]=r["GOT.mem"]||{};r["GOT.mem"].__heap_base=f;r["GOT.func"]=r["GOT.func"]||{};const x=await WebAssembly.instantiate(a,r);c=Object.assign({},x.exports);a={};a.exports=Object.assign(c,{memory:m});u=await b.reduce(async(t,{headerData:z,wasmPluginBytes:v})=>{t=await t;try{const {memorySize:y,memoryAlign:C,tableSize:F}=z,E=await WebAssembly.compile(v),B=e.getImports(E),G=new WebAssembly.Global({value:"i32",mutable:!1},A*PAGE_SIZE$$module$src$module);n.grow(F);B.env=Object.assign({},B.env);B.env.memory=\nm;B.env.__indirect_function_table=n;B.env.__memory_base=G;B.env.__stack_pointer=p;B.env.__table_base=q;B.env.csoundLoadModules=w;delete B.env.csoundWasiJsMessageCallback;A+=Math.ceil((y+C)/PAGE_SIZE$$module$src$module);const D=await WebAssembly.instantiate(E,B);assertPluginExports$$module$src$module(D)&&(D.exports.__wasm_call_ctors(),t.push(D))}catch(y){console.error("Error while compiling csound-plugin",y)}return t},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]},\nmodule$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;let combined$$module$src$workers$vanilla_worker,audioProcessCallback$$module$src$workers$vanilla_worker=()=>{};\nconst rtmidiQueue$$module$src$workers$vanilla_worker=[],createAudioInputBuffers$$module$src$workers$vanilla_worker=(a,b)=>{for(let c=0;c<b;++c)a.buffers.push(new Float64Array(RING_BUFFER_SIZE$$module$src$constants))},generateAudioFrames$$module$src$workers$vanilla_worker=(a,b)=>{if("realtimePerformanceEnded"!==b.vanillaWorkerState)return audioProcessCallback$$module$src$workers$vanilla_worker(a)},createRealtimeAudioThread$$module$src$workers$vanilla_worker=({libraryCsound:a,wasm:b,workerMessagePort:c,\naudioInputs:d,inputChannelCount:e,outputChannelCount:f,sampleRate:g})=>({csound:h})=>{var k=a.csoundGetInputName(h).includes("adc");g&&a.csoundSetOption(h,`--sr=${g}`);f&&a.csoundSetOption(h,`--nchnls=${f}`);e&&a.csoundSetOption(h,`--nchnls_i=${e}`);const l=a.csoundGetNchnls(h),m=0<e?e:k?a.csoundGetNchnlsInput(h):0,n=a.csoundGet0dBFS(h);k=a.csoundGetSpin(h);const p=a.csoundGetSpout(h),q=a.csoundGetKsmps(h);let w=new Float64Array(b.wasi.memory.buffer,k,q*m),r=new Float64Array(b.wasi.memory.buffer,\np,q*l),u=0,A=0;c.broadcastPlayState("realtimePerformanceStarted");audioProcessCallback$$module$src$workers$vanilla_worker=({numFrames:x})=>{const t=instantiateAudioPacket$$module$src$workers$common_utils(l,x),z=0<d.buffers.length&&d.availableFrames>=x;0<rtmidiQueue$$module$src$workers$vanilla_worker.length&&(rtmidiQueue$$module$src$workers$vanilla_worker.forEach(v=>{a.csoundPushMidiMessage(h,v[0],v[1],v[2])}),clearArray$$module$src$utils$clear_array(rtmidiQueue$$module$src$workers$vanilla_worker));\nfor(let v=0;v<x;v++){A=(A+1)%q;if("realtimePerformanceEnded"===c.vanillaWorkerState)return 0===u&&(a.csoundStop(h),u=a.csoundPerformKsmps(h)),c.broadcastPlayState("realtimePerformanceEnded"),audioProcessCallback$$module$src$workers$vanilla_worker=()=>{},clearArray$$module$src$utils$clear_array(rtmidiQueue$$module$src$workers$vanilla_worker),d.port=void 0,{framesLeft:v};if(0===A&&0===u&&(u=a.csoundPerformKsmps(h),0!==u))return c.broadcastPlayState("realtimePerformanceEnded"),audioProcessCallback$$module$src$workers$vanilla_worker=\n()=>{},clearArray$$module$src$utils$clear_array(rtmidiQueue$$module$src$workers$vanilla_worker),d.port=void 0,{framesLeft:v};0===w.length&&(w=new Float64Array(b.wasi.memory.buffer,a.csoundGetSpin(h),q*m));0===r.length&&(r=new Float64Array(b.wasi.memory.buffer,a.csoundGetSpout(h),q*l));t.forEach((y,C)=>{0<r.length&&(y[v]=(r[A*l+C]||0)/n)});if(z)for(let y=0;y<m;y++)w[A*m+y]=(d.buffers[y][v+d.inputReadIndex%RING_BUFFER_SIZE$$module$src$constants]||0)*n}z&&(d.availableFrames-=x,d.inputReadIndex+=x%RING_BUFFER_SIZE$$module$src$constants);\nreturn{audioPacket:t,framesLeft:0}}},callUncloned$$module$src$workers$vanilla_worker=async(a,b)=>(a=combined$$module$src$workers$vanilla_worker.get(a))&&a.apply({},b||[]),initMessagePort$$module$src$workers$vanilla_worker=({port:a})=>{logVANWorker$$module$src$logger("initMessagePort")();const b=new $jscompDefaultExport$$module$src$utils$message_port_state;b.port=a;b.post=c=>a.postMessage({log:c});b.broadcastPlayState=c=>{b.vanillaWorkerState=c;a.postMessage({playStateChange:c})};b.ready=!0;return b},\ninitRequestPort$$module$src$workers$vanilla_worker=({csoundWorkerFrameRequestPort:a,workerMessagePort:b})=>{logVANWorker$$module$src$logger("initRequestPort")();a.addEventListener("message",c=>{const {framesLeft:d=0,audioPacket:e}=generateAudioFrames$$module$src$workers$vanilla_worker(c.data,b)||{};a.postMessage({numFrames:c.data.numFrames-d,audioPacket:e,...c.data})});a.start();return a},initAudioInputPort$$module$src$workers$vanilla_worker=({port:a})=>{logVANWorker$$module$src$logger("initAudioInputPort")();\nconst b={availableFrames:0,buffers:[],inputReadIndex:0,inputWriteIndex:0,port:a};b.port.addEventListener("message",({data:c})=>{0===b.buffers.length&&createAudioInputBuffers$$module$src$workers$vanilla_worker(b,c.length);b.buffers.forEach((d,e)=>{d.set(c[e],b.inputWriteIndex)});b.inputWriteIndex+=c[0].length;b.availableFrames+=c[0].length;b.inputWriteIndex>=RING_BUFFER_SIZE$$module$src$constants&&(b.inputWriteIndex=0)});b.port.start();return b},initRtMidiEventPort$$module$src$workers$vanilla_worker=\n({rtmidiPort:a})=>{logVANWorker$$module$src$logger("initRtMidiEventPort")();a.addEventListener("message",({data:b})=>{rtmidiQueue$$module$src$workers$vanilla_worker.push(b)});a.start();return a},initialize$$module$src$workers$vanilla_worker=async({audioInputPort:a,inputChannelCount:b,messagePort:c,outputChannelCount:d,requestPort:e,rtmidiPort:f,wasmDataURI:g,wasmTransformerDataURI:h,withPlugins:k=[]})=>{logVANWorker$$module$src$logger("initializing wasm and exposing csoundAPI functions from worker to main")();\nconst l=initMessagePort$$module$src$workers$vanilla_worker({port:c}),m=initAudioInputPort$$module$src$workers$vanilla_worker({port:a});initRequestPort$$module$src$workers$vanilla_worker({csoundWorkerFrameRequestPort:e,workerMessagePort:l});initRtMidiEventPort$$module$src$workers$vanilla_worker({rtmidiPort:f});const [n,p]=await $jscompDefaultExport$$module$src$module({wasmDataURI:g,wasmTransformerDataURI:h,withPlugins:k,messagePort:l});n.wasi=p;const q=$jscompDefaultExport$$module$src$libcsound(n);\na=pipe$$module$node_modules$rambda$dist$rambda_mjs(assoc$$module$node_modules$rambda$dist$rambda_mjs("csoundStart",(r,u)=>handleCsoundStart$$module$src$workers$common_utils(l,q,p,createRealtimeAudioThread$$module$src$workers$vanilla_worker({audioInputs:m,inputChannelCount:b,libraryCsound:q,outputChannelCount:d,wasm:n,wasi:p,workerMessagePort:l}),renderFunction$$module$src$workers$common_utils({inputChannelCount:b,libraryCsound:q,outputChannelCount:d,wasm:n,workerMessagePort:l}))(u)),assoc$$module$node_modules$rambda$dist$rambda_mjs("wasm",\nn))(q);combined$$module$src$workers$vanilla_worker=new Map(Object.entries(a));q.csoundInitialize(0);const w=q.csoundCreate();l.port.addEventListener("message",r=>{r.data&&r.data.newPlayState&&("realtimePerformanceEnded"===r.data.newPlayState&&(q.csoundStop(w),"realtimePerformanceEnded"!==l.vanillaWorkerState&&q.csoundPerformKsmps(w),l.broadcastPlayState("realtimePerformanceEnded")),l.vanillaWorkerState=r.data.newPlayState)});l.port.start();return w};\nexpose$$module$node_modules$comlink$dist$esm$comlink_mjs({initialize:initialize$$module$src$workers$vanilla_worker,callUncloned:callUncloned$$module$src$workers$vanilla_worker});var module$src$workers$vanilla_worker={};}).call(this);\n//# sourceMappingURL=__compiled.vanilla.worker.js.map\n'])),
+module$dist$__compiled_vanilla_worker_inline={};module$dist$__compiled_vanilla_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_vanilla_worker_inline;class VanillaWorkerMainThread$$module$src$mains$vanilla_main{constructor({audioContext:a,audioWorker:b,audioContextIsProvided:c,inputChannelCount:d,outputChannelCount:e}){this.ipcMessagePorts=new IPCMessagePorts$$module$src$mains$messages_main;this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.publicEvents=new PublicEventAPI$$module$src$events(this);b.ipcMessagePorts=this.ipcMessagePorts;b.csoundWorkerMain=this;b.publicEvents=this.publicEvents;this.audioWorker=b;if(this.audioContextIsProvided=
+c)this.sampleRate=a.sampleRate;d&&(this.inputChannelCount=d);e&&(this.outputChannelCount=e);this.exportApi={};this.currentPlayState=this.csoundInstance=void 0;this.midiPortStarted=!1;this.onPlayStateChange=this.onPlayStateChange.bind(this)}async terminateInstance(){this.csoundWorker&&(this.csoundWorker.terminate(),delete this.csoundWorker);this.audioWorker&&this.audioWorker.terminateInstance&&(await this.audioWorker.terminateInstance(),delete this.audioWorker.terminateInstance);this.proxyPort&&(this.proxyPort[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),
+delete this.proxyPort);this.publicEvents&&this.publicEvents.terminateInstance();Object.keys(this.exportApi).forEach(a=>delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}get api(){return this.exportApi}handleMidiInput({data:a}){this.ipcMessagePorts.csoundMainRtMidiPort.postMessage&&this.ipcMessagePorts.csoundMainRtMidiPort.postMessage(a)}async prepareRealtimePerformance(){if(this.csoundInstance){this.audioWorker.sampleRate=await this.exportApi.getSr(this.csoundInstance);var a=
+await this.exportApi.getInputName(this.csoundInstance);this.audioWorker.isRequestingInput=a.includes("adc");this.audioWorker.isRequestingMidi=await this.exportApi._isRequestingRtMidiInput(this.csoundInstance);this.audioWorker.outputsCount=await this.exportApi.getNchnls(this.csoundInstance);this.audioWorker.inputsCount=this.audioWorker.isRequestingInput?1:0;logVANMain$$module$src$logger("vars for rtPerf set")()}else console.error("fatal error: csound instance not found?")}async onPlayStateChange(a){if(this.publicEvents){this.currentPlayState=
+a;switch(a){case "realtimePerformanceStarted":logVANMain$$module$src$logger("event: realtimePerformanceStarted from worker, now preparingRT..")();await this.prepareRealtimePerformance();break;case "realtimePerformanceEnded":logVANMain$$module$src$logger("event: realtimePerformanceEnded")();this.eventPromises.createStopPromise();this.midiPortStarted=!1;this.publicEvents.triggerRealtimePerformanceEnded(this);await this.eventPromises.releaseStopPromise();break;case "renderStarted":await this.eventPromises.releaseStartPromise();
+this.publicEvents.triggerRenderStarted(this);break;case "renderEnded":logVANMain$$module$src$logger("event: renderEnded received, beginning cleanup")(),this.publicEvents.triggerRenderEnded(this),await this.eventPromises.releaseStopPromise()}this.audioWorker.ipcMessagePorts||(this.audioWorker.ipcMessagePorts=this.ipcMessagePorts);await this.audioWorker.onPlayStateChange(a)}}async csoundPause(){if(this.eventPromises.isWaiting("pause"))return-1;this.eventPromises.createPausePromise();this.audioWorker&&
+void 0!==this.audioWorker.workletProxy?await this.audioWorker.workletProxy.pause():await this.audioWorker.onPlayStateChange("realtimePerformancePaused");await this.eventPromises.waitForPause();return 0}async csoundResume(){if(this.eventPromises.isWaiting("resume"))return-1;this.eventPromises.createResumePromise();this.audioWorker&&void 0!==this.audioWorker.workletProxy?await this.audioWorker.workletProxy.resume():await this.audioWorker.onPlayStateChange("realtimePerformanceResumed");await this.eventPromises.waitForResume();
+return 0}async initialize({wasmDataURI:a,withPlugins:b}){a=a();"function"===typeof this.audioWorker.initIframe&&await this.audioWorker.initIframe();b&&!isEmpty$$module$node_modules$rambda$dist$rambda_mjs(b)&&(b=await fetchPlugins$$module$src$utils(b));logVANMain$$module$src$logger("vanilla.main: initialize")();this.csoundWorker=this.csoundWorker||new Worker($jscompDefaultExport$$module$dist$__compiled_vanilla_worker_inline());this.ipcMessagePorts.mainMessagePort.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));
+this.ipcMessagePorts.mainMessagePort2.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePort.start();const c=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(this.csoundWorker);this.proxyPort=c;this.csoundInstance=await c.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({wasmDataURI:a,messagePort:this.ipcMessagePorts.workerMessagePort,requestPort:this.ipcMessagePorts.csoundWorkerFrameRequestPort,audioInputPort:this.ipcMessagePorts.csoundWorkerAudioInputPort,
+rtmidiPort:this.ipcMessagePorts.csoundWorkerRtMidiPort,sampleRate:this.sampleRate,inputChannelCount:this.inputChannelCount,outputChannelCount:this.outputChannelCount,withPlugins:b},[a,this.ipcMessagePorts.workerMessagePort,this.ipcMessagePorts.csoundWorkerFrameRequestPort,this.ipcMessagePorts.csoundWorkerAudioInputPort,this.ipcMessagePorts.csoundWorkerRtMidiPort]));this.exportApi.pause=this.csoundPause.bind(this);this.exportApi.resume=this.csoundResume.bind(this);this.exportApi.terminateInstance=
+this.terminateInstance.bind(this);this.exportApi.getAudioContext=async()=>this.audioWorker.audioContext;this.exportApi.getNode=async()=>{const d=this.audioWorker.audioWorkletNode;return d?d:await new Promise(e=>{this.exportApi.once("onAudioNodeCreated",e)})};this.exportApi=this.publicEvents.decorateAPI(this.exportApi);this.exportApi.enableAudioInput=()=>console.warn("enableAudioInput was ignored: please use -iadc option before calling start with useWorker=true");this.exportApi.addListener("message",
+console.log);for(const d of Object.keys(api$$module$src$libcsound)){const e=api$$module$src$libcsound[d],f=makeProxyCallback$$module$src$utils(c,this.csoundInstance,d,this.currentPlayState);switch(d){case "csoundCreate":break;case "csoundStart":b=async function(){if(this.eventPromises.isWaiting("start"))return-1;this.eventPromises.createStartPromise();const g=await f({csound:this.csoundInstance});await this.eventPromises.waitForStart();return g};b.toString=()=>e.toString();this.exportApi.start=b.bind(this);
+break;case "csoundStop":b=async function(){if(this.eventPromises.isWaiting("stop"))return-1;this.eventPromises.createStopPromise();this.ipcMessagePorts.mainMessagePort.postMessage({newPlayState:"renderStarted"===this.currentPlayState?"renderEnded":"realtimePerformanceEnded"});await this.eventPromises.waitForStop();return 0};this.exportApi.stop=b.bind(this);b.toString=e.toString;break;case "csoundReset":b=async()=>{if(this.currentPlayState){if(this.eventPromises.isWaiting("reset"))return-1;stopableStates$$module$src$utils.has(this.currentPlayState)&&
+await this.exportApi.stop();const g=await f([]);this.audioContextIsProvided||(await this.audioWorker.terminateInstance(),delete this.audioWorker.audioContext);this.ipcMessagePorts.restartAudioWorkerPorts();return g}};this.exportApi.reset=b.bind(this);b.toString=e.toString;break;case "fs":this.exportApi.fs={};Object.keys(e).forEach(g=>{const h=makeProxyCallback$$module$src$utils(c,this.csoundInstance,g,this.currentPlayState);h.toString=e[g].toString;this.exportApi.fs[g]=h});break;default:f.toString=
+e.toString,this.exportApi[csoundApiRename$$module$src$utils(d)]=f}}logVANMain$$module$src$logger("exportAPI generated")()}}var $jscompDefaultExport$$module$src$mains$vanilla_main=VanillaWorkerMainThread$$module$src$mains$vanilla_main,module$src$mains$vanilla_main={};module$src$mains$vanilla_main.default=$jscompDefaultExport$$module$src$mains$vanilla_main;/*
+ unmute-ios-audio. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
+var module$node_modules$unmute_ios_audio$index={default:function(){function a(m){"blocked"===e&&(e="pending",b());"blocked"===f&&(f="pending",h=new d,k=h.createBufferSource(),k.buffer=h.createBuffer(1,1,22050),k.connect(h.destination),k.start(),"running"===h.state?(f="allowed",c()):(f="blocked",k.disconnect(h.destination),k=null,h.close(),h=null))}function b(){g=document.createElement("audio");g.setAttribute("x-webkit-airplay","deny");g.preload="auto";g.loop=!0;g.src=n;g.load();g.play().then(()=>
+{e="allowed";c()},()=>{e="blocked";g.pause();g.removeAttribute("src");g.load();g=null})}function c(){"allowed"===e&&"allowed"===f&&USER_ACTIVATION_EVENTS$$module$node_modules$unmute_ios_audio$index.forEach(m=>{window.removeEventListener(m,a,{capture:!0,passive:!0})})}const d=window.webkitAudioContext;if(0<navigator.maxTouchPoints&&null!=d){var e="blocked",f="blocked",g,h,k,n=function(m){const l=new ArrayBuffer(10),p=new DataView(l);p.setUint32(0,m,!0);p.setUint32(4,m,!0);p.setUint16(8,1,!0);return`data:audio/wav;base64,UklGRisAAABXQVZFZm10IBAAAAABAAEA${window.btoa(String.fromCharCode(...(new Uint8Array(l)))).slice(0,
+13)}AgAZGF0YQcAAACAgICAgICAAAA=`}((new d).sampleRate);USER_ACTIVATION_EVENTS$$module$node_modules$unmute_ios_audio$index.forEach(m=>{window.addEventListener(m,a,{capture:!0,passive:!0})})}}};const USER_ACTIVATION_EVENTS$$module$node_modules$unmute_ios_audio$index="auxclick click contextmenu dblclick keydown keyup mousedown mouseup touchend".split(" ");const DEFAULT_BUFFER_LEN$$module$src$constants=128,MAX_CHANNELS$$module$src$constants=32,RING_BUFFER_SIZE$$module$src$constants=16384,MIDI_BUFFER_SIZE$$module$src$constants=1024,MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants=3,CALLBACK_DATA_BUFFER_SIZE$$module$src$constants=16384,initialSharedState$$module$src$constants=[0,4096,0,0,0,0,-1,-1,-1,-1,0,DEFAULT_BUFFER_LEN$$module$src$constants,0,0,0,0,0,0,0,0],AUDIO_STATE$$module$src$constants={CSOUND_LOCK:0,FRAMES_REQUESTED:1,IS_PERFORMING:2,IS_RENDERING:3,
+IS_PAUSED:4,STOP:5,SAMPLE_RATE:6,KSMPS:7,NCHNLS:8,NCHNLS_I:9,IS_REQUESTING_MIC:10,BUFFER_LEN:11,OUTPUT_READ_INDEX:12,OUTPUT_WRITE_INDEX:13,AVAIL_IN_BUFS:14,AVAIL_OUT_BUFS:15,IS_REQUESTING_RTMIDI:16,RTMIDI_INDEX:17,AVAIL_RTMIDI_EVENTS:18,HAS_PENDING_CALLBACKS:19},DATA_TYPE$$module$src$constants={NUMBER:0,STRING:1,FLOAT_32:2,FLOAT_64:3};var module$src$constants={};module$src$constants.AUDIO_STATE=AUDIO_STATE$$module$src$constants;module$src$constants.CALLBACK_DATA_BUFFER_SIZE=CALLBACK_DATA_BUFFER_SIZE$$module$src$constants;
+module$src$constants.DATA_TYPE=DATA_TYPE$$module$src$constants;module$src$constants.DEFAULT_BUFFER_LEN=DEFAULT_BUFFER_LEN$$module$src$constants;module$src$constants.MAX_CHANNELS=MAX_CHANNELS$$module$src$constants;module$src$constants.MIDI_BUFFER_PAYLOAD_SIZE=MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants;module$src$constants.MIDI_BUFFER_SIZE=MIDI_BUFFER_SIZE$$module$src$constants;module$src$constants.RING_BUFFER_SIZE=RING_BUFFER_SIZE$$module$src$constants;module$src$constants.initialSharedState=initialSharedState$$module$src$constants;var $jscompDefaultExport$$module$dist$__compiled_sab_worker_inline=()=>(window.URL||window.webkitURL).createObjectURL(new Blob(['(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(".");d=d||goog.global;a[0]in d||"undefined"==typeof d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE="en";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(".")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;\ngoog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;\ngoog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error(\'Module with namespace "\'+a+\'" already exists.\');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error(\'Module with namespace "\'+\na+\'" has been loaded incorrectly.\');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0});\ngoog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath="";goog.abstractMethod=function(){throw Error("unimplemented abstract method");};\ngoog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME="goog";\ngoog.hasBadLetScoping=null;\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if("function"===typeof a)d=a.call(void 0,d);else if("string"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error("Invalid module definition");var e=goog.moduleLoaderState_.moduleName;if("string"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&\nObject.seal&&"object"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error(\'Invalid module name "\'+e+\'"\');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};\ngoog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};\ngoog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};\ngoog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split("-");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join("-")};d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};\ngoog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,"&lt;"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&apos;/g,"\'").replace(/&quot;/g,\'"\').replace(/&amp;/g,"&"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};\ngoog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"").match(/Edge\\/(\\d+)(\\.\\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?"complete"!=a.readyState:"loading"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&"string"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=\ngoog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?");d=-1==d?c.length:d;if("base.js"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,"\\\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=\n[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error("Unregonized namespace: "+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},\ngoog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=\nfunction(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error("Bad dependency path or symbol: "+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_("goog.require could not find: "+a)},goog.DebugLoader_.prototype.loadDeps_=\nfunction(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error("Cannot call pause after the call to load.");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error("Double call to loaded.");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,\nmoduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||""})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error("Cannot register with defer after the call to load.");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};\ntry{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==\na.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?\nthis.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=\nfunction(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf("://");0<=b&&(a=a.substring(b+3),b=a.indexOf("/"),0<=b&&(a=a.substring(b+1)));return a},\ngoog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},\ngoog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error("Callback key "+a+" does not exist (was base.js loaded more than once?).");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==\nb.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error(\'Cannot write "\'+this.path+\'" after document load\');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&"complete"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?\' nonce="\'+c+\'"\':"";var f=\'<script src="\'+this.path+\'"\'+\nc+(goog.Dependency.defer_?" defer":"")+\' id="script-\'+e+\'">\\x3c/script>\';f+="<script"+c+">";f=goog.Dependency.defer_?f+("document.getElementById(\'script-"+e+"\').onload = function() {\\n goog.Dependency.callback_(\'"+e+"\', this);\\n};\\n"):f+("goog.Dependency.callback_(\'"+e+"\', document.getElementById(\'script-"+e+"\'));");f+="\\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement("script");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=\nc);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,\nb,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,n){var m="",p=goog.getScriptNonce_();p&&(m=\' nonce="\'+p+\'"\');l=n?\'<script type="module" crossorigin\'+m+">"+n+"\\x3c/script>":\'<script type="module" crossorigin src="\'+l+\'"\'+m+">\\x3c/script>";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,n){var m=d.createElement("script");m.defer=!0;m.async=!1;m.type="module";m.setAttribute("crossorigin",\n!0);var p=goog.getScriptNonce_();p&&(m.nonce=p);n?m.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(n):n:m.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(m)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);\na.setModuleState(goog.ModuleType.ES6)});f(void 0,\'goog.Dependency.callback_("\'+g+\'")\');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,\'import * as m from "\'+this.path+\'"; goog.Dependency.callback_("\'+h+\'", m)\');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,\'goog.Dependency.callback_("\'+\nk+\'")\')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=\ne.transform(e.contents_),e.contents_&&(e.contents_+="\\n//# sourceURL="+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var l=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(l));if(f)var n=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),n)});a.loaded()}}\nfunction d(){var l=goog.global.document,n=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(n);c()}),m=goog.getScriptNonce_();m="<script"+(m?\' nonce="\'+m+\'"\':"")+">"+goog.protectScriptTag_(\'goog.Dependency.callback_("\'+n+\'");\')+"\\x3c/script>";l.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(m):m)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,a.loaded()):\na.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&("ActiveXObject"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){"interactive"==h.readyState&&(h.onreadystatechange=\nk,c(),a.resume());"function"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,\nc,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?"goog.loadModule("+goog.global.JSON.stringify(a+"\\n//# sourceURL="+this.path+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+a+"\\n;return exports});\\n//# sourceURL="+this.path+"\\n"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=\nb||[];a=a.replace(/\\\\/g,"/");var e=goog.normalizePath_(goog.basePath+a);d&&"boolean"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?\nnew goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),\ngoog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy("goog#base#devonly#eval")||{createScript:goog.identity_}};const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.proxy"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.endpoint"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.releaseProxy"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.thrown"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>"object"===typeof a&&null!==a||"function"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=\n{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&\nthrowMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([["proxy",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],["throw",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);\nfunction expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener("message",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const n=h.slice(0,-1).reduce((p,q)=>p[q],a),m=h.reduce((p,q)=>p[q],a);switch(g){case "GET":var l=m;break;case "SET":n[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);\nl=!0;break;case "APPLY":l=m.apply(n,k);break;case "CONSTRUCT":const p=new m(...k);l=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case "ENDPOINT":const {port1:q,port2:B}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,B);l=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case "RELEASE":l=void 0;break;default:return}}catch(n){l={value:n,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(l).catch(n=>\n({value:n,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(n=>{const [m,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(n);b.postMessage(Object.assign(Object.assign({},m),{id:f}),p);"RELEASE"===g&&(b.removeEventListener("message",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return"MessagePort"===a.constructor.name}\nfunction closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error("Proxy has been released and is not useable");}\nfunction createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"RELEASE",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if("then"===\ng){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"GET",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,l]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"SET",path:[...b,g].map(n=>n.toString()),value:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"ENDPOINT"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if("bind"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\nb.slice(0,-1));const [k,l]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"APPLY",path:b.map(n=>n.toString()),argumentList:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"CONSTRUCT",path:b.map(l=>l.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}\nfunction processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}\nfunction proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c="*"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}\nfunction toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:"HANDLER",name:b,value:d},e]}return[{type:"RAW",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}\nfunction fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case "HANDLER":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case "RAW":return a.value}}\nfunction requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener("message",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener("message",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}\nfunction generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;\nMessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;const csoundCreate$$module$src$modules$instantiation=a=>()=>a.exports.csoundCreateWasi();csoundCreate$$module$src$modules$instantiation.toString=()=>"create = async () => undefined;";const csoundDestroy$$module$src$modules$instantiation=a=>b=>a.exports.csoundDestroy(b);csoundDestroy$$module$src$modules$instantiation.toString=()=>"destroy = async () => undefined;";const csoundGetAPIVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetAPIVersion();\ncsoundGetAPIVersion$$module$src$modules$instantiation.toString=()=>"getAPIVersion = async () => Number;";const csoundGetVersion$$module$src$modules$instantiation=a=>()=>a.exports.csoundGetVersion();csoundGetVersion$$module$src$modules$instantiation.toString=()=>"getVersion = async () => Number;";const csoundInitialize$$module$src$modules$instantiation=a=>(b,c)=>a.exports.csoundInitialize(c);csoundInitialize$$module$src$modules$instantiation.toString=()=>"initialize = async () => Number;";\nvar module$src$modules$instantiation={};module$src$modules$instantiation.csoundCreate=csoundCreate$$module$src$modules$instantiation;module$src$modules$instantiation.csoundDestroy=csoundDestroy$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetAPIVersion=csoundGetAPIVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundGetVersion=csoundGetVersion$$module$src$modules$instantiation;module$src$modules$instantiation.csoundInitialize=csoundInitialize$$module$src$modules$instantiation;const WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders=!1;function TextEncoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";return this}TextEncoderPoly$$module$src$utils$text_encoders.prototype.encode=function(a){if("string"!==typeof a)throw new TypeError("passed argument must be of type string "+a+" "+typeof a);a=unescape(encodeURIComponent(a));const b=new Uint8Array(a.length);[...a].forEach(function(c,d){b[d]=c.codePointAt(0)});return b};\nfunction TextDecoderPoly$$module$src$utils$text_encoders(){this.encoding="utf8";this.ignoreBOM=!1;this.trimNull=a=>{const b=a.indexOf("\\x00");return-1<b?a.slice(0,Math.max(0,b)):a};this.decode=function(a,b){if(void 0===a)return"";if("boolean"!==typeof(void 0!==b&&"stream"in b?b.stream:!1))throw new TypeError("stream option must be boolean");if(ArrayBuffer.isView(a)){a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);const c=Array.from({length:a.length});a.forEach(function(d,e){c[e]=String.fromCodePoint(d)});\nreturn this.trimNull(c.join(""))}throw new TypeError("passed argument must be an array buffer view");}}\nconst decoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextDecoderPoly$$module$src$utils$text_encoders:new TextDecoder("utf8"),encoder$$module$src$utils$text_encoders=WITH_TEXT_ENCODER_POLYFILL$$module$src$utils$text_encoders?new TextEncoderPoly$$module$src$utils$text_encoders:new TextEncoder("utf8"),uint2String$$module$src$utils$text_encoders=a=>decoder$$module$src$utils$text_encoders.decode(a);var module$src$utils$text_encoders={};\nmodule$src$utils$text_encoders.decoder=decoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.encoder=encoder$$module$src$utils$text_encoders;module$src$utils$text_encoders.uint2String=uint2String$$module$src$utils$text_encoders;const trimNull$$module$src$utils$trim_null=a=>{const b=a.indexOf("\\x00");return-1<b?a.substr(0,b):a};var module$src$utils$trim_null={};module$src$utils$trim_null.trimNull=trimNull$$module$src$utils$trim_null;const freeStringPtr$$module$src$utils$string_pointers=(a,b)=>{a.exports.freeStringMem(b)},ptr2string$$module$src$utils$string_pointers=(a,b)=>{({buffer:a}=a.wasi.memory);b=new Uint8Array(a,b);b=uint2String$$module$src$utils$text_encoders(b);return trimNull$$module$src$utils$trim_null(b)},string2ptr$$module$src$utils$string_pointers=(a,b)=>{if("string"!==typeof b)console.error("Expected string but got",typeof b);else{b=encoder$$module$src$utils$text_encoders.encode(b);var c=a.exports.allocStringMem(b.length);\n({buffer:a}=a.wasi.memory);(new Uint8Array(a,c,b.length+1)).set(b);return c}};var module$src$utils$string_pointers={};module$src$utils$string_pointers.freeStringPtr=freeStringPtr$$module$src$utils$string_pointers;module$src$utils$string_pointers.ptr2string=ptr2string$$module$src$utils$string_pointers;module$src$utils$string_pointers.string2ptr=string2ptr$$module$src$utils$string_pointers;const csoundParseOrc$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundParseOrc(b,c);csoundParseOrc$$module$src$modules$performance.toString=()=>"parseOrc = async (orchestra) => Object;";const csoundCompileTree$$module$src$modules$performance=a=>(b,c)=>a.exports.csoundCompileTree(b,c);csoundCompileTree$$module$src$modules$performance.toString=()=>"compileTree = async (tree) => Number;";\nconst csoundCompileOrc$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileOrc(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileOrc$$module$src$modules$performance.toString=()=>"compileOrc = async (orchestra) => Number;";\nconst csoundEvalCode$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundEvalCode(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundEvalCode$$module$src$modules$performance.toString=()=>"csoundEvalCode = async (orchestra) => Number;";const csoundStart$$module$src$modules$performance=a=>b=>a.exports.csoundStartWasi(b);csoundStart$$module$src$modules$performance.toString=()=>"start = async () => Number;";\nconst csoundCompileCsd$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);let d;try{d=a.exports.csoundCompileCsd(b,c)}catch(e){console.error(e)}freeStringPtr$$module$src$utils$string_pointers(a,c);return d};csoundCompileCsd$$module$src$modules$performance.toString=()=>"compileCsd = async (path) => Number;";\nconst csoundCompileCsdText$$module$src$modules$performance=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundCompileCsdText(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundCompileCsdText$$module$src$modules$performance.toString=()=>"compileCsdText = async (csoundDocument) => Number;";const csoundPerform$$module$src$modules$performance=a=>b=>a.exports.csoundPerform(b);csoundPerform$$module$src$modules$performance.toString=()=>"perform = async () => Number;";\nconst csoundPerformKsmps$$module$src$modules$performance=a=>b=>a.exports.csoundPerformKsmpsWasi(b);csoundPerformKsmps$$module$src$modules$performance.toString=()=>"performKsmps = async (csound) => Number;";const csoundPerformBuffer$$module$src$modules$performance=a=>b=>a.exports.csoundPerformBuffer(b);csoundPerformBuffer$$module$src$modules$performance.toString=()=>"performBuffer = async (csound) => Number;";const csoundStop$$module$src$modules$performance=a=>b=>a.exports.csoundStop(b);\ncsoundStop$$module$src$modules$performance.toString=()=>"stop = async () => undefined;";const csoundCleanup$$module$src$modules$performance=a=>b=>a.exports.csoundCleanup(b);csoundCleanup$$module$src$modules$performance.toString=()=>"cleanup = async () => Number;";const csoundReset$$module$src$modules$performance=a=>b=>a.exports.csoundResetWasi(b);csoundReset$$module$src$modules$performance.toString=()=>"reset = async () => Number;";var module$src$modules$performance={};\nmodule$src$modules$performance.csoundCleanup=csoundCleanup$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsd=csoundCompileCsd$$module$src$modules$performance;module$src$modules$performance.csoundCompileCsdText=csoundCompileCsdText$$module$src$modules$performance;module$src$modules$performance.csoundCompileOrc=csoundCompileOrc$$module$src$modules$performance;module$src$modules$performance.csoundCompileTree=csoundCompileTree$$module$src$modules$performance;\nmodule$src$modules$performance.csoundEvalCode=csoundEvalCode$$module$src$modules$performance;module$src$modules$performance.csoundParseOrc=csoundParseOrc$$module$src$modules$performance;module$src$modules$performance.csoundPerform=csoundPerform$$module$src$modules$performance;module$src$modules$performance.csoundPerformBuffer=csoundPerformBuffer$$module$src$modules$performance;module$src$modules$performance.csoundPerformKsmps=csoundPerformKsmps$$module$src$modules$performance;\nmodule$src$modules$performance.csoundReset=csoundReset$$module$src$modules$performance;module$src$modules$performance.csoundStart=csoundStart$$module$src$modules$performance;module$src$modules$performance.csoundStop=csoundStop$$module$src$modules$performance;const sizeOfPrimitive$$module$src$utils$native_sizes={int:4,MYFLT:4,char:1},sizeofStruct$$module$src$utils$native_sizes=a=>a.reduce((b,[,c,...d])=>b+("char"===c?sizeOfPrimitive$$module$src$utils$native_sizes[c]*d[0]:sizeOfPrimitive$$module$src$utils$native_sizes[c]),0);var module$src$utils$native_sizes={};module$src$utils$native_sizes.sizeOfPrimitive=sizeOfPrimitive$$module$src$utils$native_sizes;module$src$utils$native_sizes.sizeofStruct=sizeofStruct$$module$src$utils$native_sizes;const structBufferToObject$$module$src$utils$structure_buffer_to_object=(a,b)=>{[a]=a.reduce(([c,d],[e,f,...g])=>{g="char"===f?sizeOfPrimitive$$module$src$utils$native_sizes[f]*g[0]:sizeOfPrimitive$$module$src$utils$native_sizes[f];f="char"===f?trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(b.subarray(d,g)))||"":b[d];c[e]=f;return[c,d+g]},[{},0]);return a};var module$src$utils$structure_buffer_to_object={};\nmodule$src$utils$structure_buffer_to_object.structBufferToObject=structBufferToObject$$module$src$utils$structure_buffer_to_object;const CSOUND_PARAMS$$module$src$structures=[["debug_mode","int"],["buffer_frames","int"],["hardware_buffer_frames","int"],["displays","int"],["ascii_graphs","int"],["postscript_graphs","int"],["message_level","int"],["tempo","int"],["ring_bell","int"],["use_cscore","int"],["terminate_on_midi","int"],["heartbeat","int"],["defer_gen01_load","int"],["midi_key","int"],["midi_key_cps","int"],["midi_key_oct","int"],["midi_key_pch","int"],["midi_velocity","int"],["midi_velocity_amp","int"],["no_default_paths",\n"int"],["number_of_threads","int"],["syntax_check_only","int"],["csd_line_counts","int"],["compute_weights","int"],["realtime_mode","int"],["sample_accurate","int"],["sample_rate_override","MYFLT"],["control_rate_override","MYFLT"],["nchnls_override","int"],["nchnls_i_override","int"],["e0dbfs_override","MYFLT"],["daemon","int"],["ksmps_override","int"],["FFT_library","int"]],CS_MIDIDEVICE$$module$src$structures=[["device_name","char",64],["interface_name","char",64],["device_id","char",64],["midi_module",\n"char",64],["isOutput","int"]];var module$src$structures={};const csoundGetSr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSr(b);csoundGetSr$$module$src$modules$attributes.toString=()=>"getSr = async () => Number;";const csoundGetKr$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKr(b);csoundGetKr$$module$src$modules$attributes.toString=()=>"getKr = async () => Number;";const csoundGetKsmps$$module$src$modules$attributes=a=>b=>a.exports.csoundGetKsmps(b);csoundGetKsmps$$module$src$modules$attributes.toString=()=>"getKsmps = async () => Number;";\nconst csoundGetNchnls$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnls(b);csoundGetNchnls$$module$src$modules$attributes.toString=()=>"getNchnls = async () => Number;";const csoundGetNchnlsInput$$module$src$modules$attributes=a=>b=>a.exports.csoundGetNchnlsInput(b);csoundGetNchnlsInput$$module$src$modules$attributes.toString=()=>"getNchnlsInput = async () => Number;";const csoundGet0dBFS$$module$src$modules$attributes=a=>b=>a.exports.csoundGet0dBFS(b);\ncsoundGet0dBFS$$module$src$modules$attributes.toString=()=>"get0dBFS = async () => Number;";const csoundGetA4$$module$src$modules$attributes=a=>b=>a.exports.csoundGetA4(b);csoundGetA4$$module$src$modules$attributes.toString=()=>"getA4 = async () => Number;";const csoundGetCurrentTimeSamples$$module$src$modules$attributes=a=>b=>a.exports.csoundGetCurrentTimeSamples(b);csoundGetCurrentTimeSamples$$module$src$modules$attributes.toString=()=>"getCurrentTimeSamples = async () => Number;";\nconst csoundGetSizeOfMYFLT$$module$src$modules$attributes=a=>b=>a.exports.csoundGetSizeOfMYFLT(b);csoundGetSizeOfMYFLT$$module$src$modules$attributes.toString=()=>"getSizeOfMYFLT = async () => Number;";const csoundSetOption$$module$src$modules$attributes=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundSetOption(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundSetOption$$module$src$modules$attributes.toString=()=>"setOption = async (option) => Number;";\nconst csoundSetParams$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetParams(b,c)};csoundSetParams$$module$src$modules$attributes.toString=()=>"setParams = async (csoundParams) => undefined;";\nconst csoundGetParams$$module$src$modules$attributes=a=>b=>{var {buffer:c}=a.wasi.memory;const d=sizeofStruct$$module$src$utils$native_sizes(CSOUND_PARAMS$$module$src$structures),e=a.exports.allocCsoundParamsStruct();c=new Uint8Array(c,e,d);a.exports.csoundGetParams(b,e);b=structBufferToObject$$module$src$utils$structure_buffer_to_object(CSOUND_PARAMS$$module$src$structures,c);a.exports.freeCsoundParams(e);return b};csoundGetParams$$module$src$modules$attributes.toString=()=>"getParams = async () => CSOUND_PARAMS;";\nconst csoundGetDebug$$module$src$modules$attributes=a=>b=>a.exports.csoundGetDebug(b);csoundGetDebug$$module$src$modules$attributes.toString=()=>"getDebug = async () => Number;";const csoundSetDebug$$module$src$modules$attributes=a=>(b,c)=>{a.exports.csoundSetDebug(b,c)};csoundSetDebug$$module$src$modules$attributes.toString=()=>"setDebug = async (number) => undefined;";var module$src$modules$attributes={};module$src$modules$attributes.csoundGet0dBFS=csoundGet0dBFS$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundGetA4=csoundGetA4$$module$src$modules$attributes;module$src$modules$attributes.csoundGetCurrentTimeSamples=csoundGetCurrentTimeSamples$$module$src$modules$attributes;module$src$modules$attributes.csoundGetDebug=csoundGetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKr=csoundGetKr$$module$src$modules$attributes;module$src$modules$attributes.csoundGetKsmps=csoundGetKsmps$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundGetNchnls=csoundGetNchnls$$module$src$modules$attributes;module$src$modules$attributes.csoundGetNchnlsInput=csoundGetNchnlsInput$$module$src$modules$attributes;module$src$modules$attributes.csoundGetParams=csoundGetParams$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSizeOfMYFLT=csoundGetSizeOfMYFLT$$module$src$modules$attributes;module$src$modules$attributes.csoundGetSr=csoundGetSr$$module$src$modules$attributes;\nmodule$src$modules$attributes.csoundSetDebug=csoundSetDebug$$module$src$modules$attributes;module$src$modules$attributes.csoundSetOption=csoundSetOption$$module$src$modules$attributes;module$src$modules$attributes.csoundSetParams=csoundSetParams$$module$src$modules$attributes;const csoundGetInputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBufferSize(b);csoundGetInputBufferSize$$module$src$modules$rtaudio.toString=()=>"getInputBufferSize = async () => Number;";const csoundGetOutputBufferSize$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBufferSize(b);csoundGetOutputBufferSize$$module$src$modules$rtaudio.toString=()=>"getOutputBufferSize = async () => Number;";const csoundGetInputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetInputBuffer(b);\ncsoundGetInputBuffer$$module$src$modules$rtaudio.toString=()=>"getInputBuffer = async () => Number;";const csoundGetOutputBuffer$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetOutputBuffer(b);csoundGetOutputBuffer$$module$src$modules$rtaudio.toString=()=>"getOutputBuffer = async () => Number;";const csoundGetSpin$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpin(b);csoundGetSpin$$module$src$modules$rtaudio.toString=()=>"getSpin = async (csound) => Number;";\nconst csoundGetSpout$$module$src$modules$rtaudio=a=>b=>a.exports.csoundGetSpout(b);csoundGetSpout$$module$src$modules$rtaudio.toString=()=>"getSpout = async () => Number;";var module$src$modules$rtaudio={};module$src$modules$rtaudio.csoundGetInputBuffer=csoundGetInputBuffer$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetInputBufferSize=csoundGetInputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetOutputBuffer=csoundGetOutputBuffer$$module$src$modules$rtaudio;\nmodule$src$modules$rtaudio.csoundGetOutputBufferSize=csoundGetOutputBufferSize$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpin=csoundGetSpin$$module$src$modules$rtaudio;module$src$modules$rtaudio.csoundGetSpout=csoundGetSpout$$module$src$modules$rtaudio;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}\nfunction adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}\nfunction and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}\nfunction anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.split("").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}\nfunction apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;\nfunction __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&"constructor"!==c&&("object"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),"function"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}\nfunction __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&"undefined"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}\nfunction __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,\nb,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;\nfor(;d<f;d++){if("object"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);"function"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&"constructor"!==e&&("object"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):"function"===typeof a[e]&&(d[e]=a[e](...c)));return d}\nfunction applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;\nfunction assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d="string"===typeof a?a.split(".").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e="object"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&\nisArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}\nfunction _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,n){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,l,n,m){return b.apply(this,arguments)}}}\nfunction curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error("First argument to _arity must be a non-negative integer no greater than ten");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}\nfunction bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}\nfunction chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error("min must not be greater than max in clamp(min, max, value)");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]="object"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}\nclass ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError("reduce: list must be array or iterable");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}\nconst reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);\nfunction _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,n){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,l,n,m){return b.apply(this,arguments)};default:throw Error("First argument to _arity must be a non-negative integer no greater than ten");}}\nfunction _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}\nfunction pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("pipe requires at least one argument");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}\nfunction compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("compose requires at least one argument");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof a?`${a}${b}`:[...a,...b]}\nfunction cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}\nfunction mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nfunction map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}\nfunction converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}\nfunction count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}\nconst dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}\nfunction type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return"Null";if(void 0===a)return"Undefined";if(Number.isNaN(a))return"NaN";a=Object.prototype.toString.call(a).slice(8,-1);return"AsyncFunction"===a?"Promise":a}\nfunction _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}\nfunction parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return["Error","TypeError"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}\nfunction equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if("Function"===c)return void 0===a.name?!1:a.name===b.name;if(["NaN","Undefined","Null"].includes(c))return!0;if("Number"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if(["String","Boolean"].includes(c))return a.toString()===\nb.toString();if("Array"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);\nif(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if("Set"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if("Object"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});\nreturn f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \\\'indexOf\\\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}\nclass _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Null","Undefined","NaN"].includes(b)?b in this.items?!1:this.items[b]=!0:["Object","Array"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}\nfunction uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}\nfunction drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}\nfunction dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if("function"!==typeof a)throw Error(`\'predicate\' is from wrong type ${typeof a}`);if(!c&&"string"!==typeof b)throw Error(`\'iterable\' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):\n(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join("")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}\nfunction dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}\nfunction dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join("")}\nfunction either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}\nfunction endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if("string"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}\nfunction prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}\nfunction evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if("Object"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return"Function"===e?a[d](c):"Object"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}\nfunction evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error("iterableType !== rulesType");if(!["Object","Array"].includes(c))throw Error(`\'iterable\' and \'rules\' are from wrong type ${c}`);return"Object"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,\nb)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}\nfunction filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error("Incorrect iterable input");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}\nfunction findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}\nfunction flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}\nfunction flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error("R.flip doesn\'t work with arity > 4");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}\nfunction fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}\nfunction groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError("list.reduce is not a function");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),l=0===e.length;h=h===b.length-1;if(k)return l&&e.push(f),e.push(g),h&&d.push(e),g;if(l)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},\nvoid 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b="."){return"string"===typeof a?a.split(b):a}\nfunction path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}\nfunction hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[0]||"":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;\nfunction identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===("boolean"===typeof a?a:a(...d))?b(...d):c(...d)}\nconst ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}\nfunction indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}\nfunction indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}\nfunction init$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}\nfunction intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}\nfunction isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Undefined","NaN","Number","Null"].includes(b)?!1:a?"Object"===b?0===Object.keys(a).length:"Array"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}\nfunction join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[a.length-1]||"":a[a.length-1]}\nfunction lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||"string"===typeof a?a.length:NaN}\nfunction lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return"[object String]"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}\nfunction updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}\nfunction lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}\nfunction mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}\nfunction mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}\nfunction mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}\nfunction mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}\nconst mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}\nfunction _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,\nd,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],\nb,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}\nfunction moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error("Rambda.move does not support negative indexes");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}\nfunction not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}\nfunction omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}\nfunction on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}\nfunction once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});\nfunction overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}\nfunction partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}\nfunction pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}\nfunction pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof b?[a].concat(b.split("")):[a].concat(b)}\nconst product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error("propsToPick is not a list");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}\nconst propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError("Both arguments to range must be numbers");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}\nfunction reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}\nconst replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.split("").reverse().join(""):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}\nconst set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}\nfunction split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||"Function"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}\nfunction take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():"string"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}\nfunction splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property \'slice\' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&"string"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,\nb)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error("First argument to splitEvery must be a positive integer");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}\nfunction splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property \'length\' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}\nfunction startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}\nfunction subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}\nfunction symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}\nfunction T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}\nfunction takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return"string"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}\nfunction takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join("")}\nfunction takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join("")}\nfunction tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof a)throw new TypeError(`\\u2018test\\u2019 requires a value of type RegExp as its first argument; received "${a}"`);return-1!==b.search(a)}\nfunction times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError("n must be an integer");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}\nfunction toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}\nfunction trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>["Promise","Function"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));\nfunction tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn \'${a}\'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}\nfunction union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}\nfunction uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}\nfunction uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}\nfunction unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}\nfunction values$$module$node_modules$rambda$dist$rambda_mjs(a){return"Object"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}\nfunction whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}\nfunction whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}\nfunction whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}\nfunction without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}\nfunction zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}\nfunction zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;const csoundSetMidiCallbacks$$module$src$modules$rtmidi=a=>b=>{a.exports.csoundSetMidiCallbacks(b)},csoundGetMIDIDevList$$module$src$modules$rtmidi=a=>(b,c)=>{const {buffer:d}=a.wasi.memory,e=a.exports.csoundGetMIDIDevList(b,void 0,c?1:0);if(0===e)return[];const f=sizeofStruct$$module$src$utils$native_sizes(CS_MIDIDEVICE$$module$src$structures),g=a.exports.allocCsMidiDeviceStruct(e);a.exports.csoundGetMIDIDevList(b,g,c?1:0);const h=new Uint8Array(d,g,f*e);b=range$$module$node_modules$rambda$dist$rambda_mjs(0,\ne).map(k=>structBufferToObject$$module$src$utils$structure_buffer_to_object(CS_MIDIDEVICE$$module$src$structures,h.subarray(k*f,f)));a.exports.freeCsMidiDeviceStruct(g);return b};csoundGetMIDIDevList$$module$src$modules$rtmidi.toString=()=>"getMIDIDevList = async (isOutput) => Object;";\nconst csoundGetRtMidiName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getRtMidiName(b);c=new Uint8Array(c,b,128);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetRtMidiName$$module$src$modules$rtmidi.toString=()=>"getRtMidiName = async () => String;";\nconst csoundGetMidiOutFileName$$module$src$modules$rtmidi=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.getMidiOutFileName(b);c=new Uint8Array(c,b,128);b&&0<b.length&&freeStringPtr$$module$src$utils$string_pointers(a,b);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""},_isRequestingRtMidiInput$$module$src$modules$rtmidi=a=>b=>a.exports.isRequestingRtMidiInput(b),csoundPushMidiMessage$$module$src$modules$rtmidi=a=>(b,c,d,e)=>{a.exports.pushMidiMessage(b,\nc,d,e)};csoundPushMidiMessage$$module$src$modules$rtmidi.toString=()=>"midiMessage = async (status, data1, data2) => undefined;";var module$src$modules$rtmidi={};module$src$modules$rtmidi._isRequestingRtMidiInput=_isRequestingRtMidiInput$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMIDIDevList=csoundGetMIDIDevList$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundGetMidiOutFileName=csoundGetMidiOutFileName$$module$src$modules$rtmidi;\nmodule$src$modules$rtmidi.csoundGetRtMidiName=csoundGetRtMidiName$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundPushMidiMessage=csoundPushMidiMessage$$module$src$modules$rtmidi;module$src$modules$rtmidi.csoundSetMidiCallbacks=csoundSetMidiCallbacks$$module$src$modules$rtmidi;const csoundInputMessage$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessage(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessage$$module$src$modules$control_events.toString=()=>"inputMessage = async (scoreEvent) => Number;";\nconst csoundInputMessageAsync$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundInputMessageAsync(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundInputMessageAsync$$module$src$modules$control_events.toString=()=>"inputMessageAsync = async (scoreEvent) => Number;";\nconst csoundGetControlChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetControlChannelWasi(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundGetControlChannel$$module$src$modules$control_events.toString=()=>"getControlChannel = async (channelName) => Number;";\nconst csoundSetControlChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);a.exports.csoundSetControlChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c)};csoundSetControlChannel$$module$src$modules$control_events.toString=()=>"setControlChannel = async (channelName, value) => void;";\nconst csoundGetStringChannel$$module$src$modules$control_events=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundGetStringChannelWasi(b,c);const d=ptr2string$$module$src$utils$string_pointers(a,b);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,b);return d};csoundGetStringChannel$$module$src$modules$control_events.toString=()=>"getStringChannel = async (channelName) => String;";\nconst csoundSetStringChannel$$module$src$modules$control_events=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);a.exports.csoundSetStringChannel(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d)};csoundSetStringChannel$$module$src$modules$control_events.toString=()=>"setStringChannel = async (channelName, value) => void;";var module$src$modules$control_events={};\nmodule$src$modules$control_events.csoundGetControlChannel=csoundGetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundGetStringChannel=csoundGetStringChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessage=csoundInputMessage$$module$src$modules$control_events;module$src$modules$control_events.csoundInputMessageAsync=csoundInputMessageAsync$$module$src$modules$control_events;\nmodule$src$modules$control_events.csoundSetControlChannel=csoundSetControlChannel$$module$src$modules$control_events;module$src$modules$control_events.csoundSetStringChannel=csoundSetStringChannel$$module$src$modules$control_events;const csoundGetOutputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetOutputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetOutputName$$module$src$modules$general_io.toString=()=>"getOutputName = async () => String;";\nconst csoundGetInputName$$module$src$modules$general_io=a=>b=>{var {buffer:c}=a.wasi.memory;b=a.exports.csoundGetInputName(b);c=new Uint8Array(c,b,64);return trimNull$$module$src$utils$trim_null(uint2String$$module$src$utils$text_encoders(c))||""};csoundGetInputName$$module$src$modules$general_io.toString=()=>"getInputName = async (csound) => String;";var module$src$modules$general_io={};module$src$modules$general_io.csoundGetInputName=csoundGetInputName$$module$src$modules$general_io;\nmodule$src$modules$general_io.csoundGetOutputName=csoundGetOutputName$$module$src$modules$general_io;const csoundAppendEnv$$module$src$modules$extra=a=>(b,c,d)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);d=string2ptr$$module$src$utils$string_pointers(a,d);b=a.exports.csoundAppendEnv(b,c,d);freeStringPtr$$module$src$utils$string_pointers(a,c);freeStringPtr$$module$src$utils$string_pointers(a,d);return b};csoundAppendEnv$$module$src$modules$extra.toString=()=>"appendEnv = async (csound, variable, value) => Number;";const csoundShouldDaemonize$$module$src$modules$extra=a=>b=>a.exports.csoundShouldDaemonize(b);\nvar module$src$modules$extra={};module$src$modules$extra.csoundAppendEnv=csoundAppendEnv$$module$src$modules$extra;module$src$modules$extra.csoundShouldDaemonize=csoundShouldDaemonize$$module$src$modules$extra;const csoundIsScorePending$$module$src$modules$score_handling=a=>b=>a.exports.csoundIsScorePending(b);csoundIsScorePending$$module$src$modules$score_handling.toString=()=>"isScorePending = async () => Number;";const csoundSetScorePending$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScorePending(b,c);csoundSetScorePending$$module$src$modules$score_handling.toString=()=>"setScorePending = async (pending) => Number;";\nconst csoundReadScore$$module$src$modules$score_handling=a=>(b,c)=>{c=string2ptr$$module$src$utils$string_pointers(a,c);b=a.exports.csoundReadScore(b,c);freeStringPtr$$module$src$utils$string_pointers(a,c);return b};csoundReadScore$$module$src$modules$score_handling.toString=()=>"readScore = async (score) => Number;";const csoundGetScoreTime$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreTime(b);csoundGetScoreTime$$module$src$modules$score_handling.toString=()=>"getScoreTime = async () => Number;";\nconst csoundGetScoreOffsetSeconds$$module$src$modules$score_handling=a=>b=>a.exports.csoundGetScoreOffsetSeconds(b);csoundGetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"getScoreOffsetSeconds = async () => Number;";const csoundSetScoreOffsetSeconds$$module$src$modules$score_handling=a=>(b,c)=>a.exports.csoundSetScoreOffsetSeconds(b,c);csoundSetScoreOffsetSeconds$$module$src$modules$score_handling.toString=()=>"setScoreOffsetSeconds = async () => Number;";\nconst csoundRewindScore$$module$src$modules$score_handling=a=>b=>a.exports.csoundRewindScore(b);csoundRewindScore$$module$src$modules$score_handling.toString=()=>"rewindScore = async () => undefined;";var module$src$modules$score_handling={};module$src$modules$score_handling.csoundGetScoreOffsetSeconds=csoundGetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundGetScoreTime=csoundGetScoreTime$$module$src$modules$score_handling;\nmodule$src$modules$score_handling.csoundIsScorePending=csoundIsScorePending$$module$src$modules$score_handling;module$src$modules$score_handling.csoundReadScore=csoundReadScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundRewindScore=csoundRewindScore$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScoreOffsetSeconds=csoundSetScoreOffsetSeconds$$module$src$modules$score_handling;module$src$modules$score_handling.csoundSetScorePending=csoundSetScorePending$$module$src$modules$score_handling;const csoundTableLength$$module$src$modules$table=a=>(b,c)=>a.exports.csoundTableLength(b,c);csoundTableLength$$module$src$modules$table.toString=()=>"tableLength = async (tableNum) => Number;";const csoundTableGet$$module$src$modules$table=a=>(b,c,d)=>a.exports.csoundTableGet(b,c,d);csoundTableGet$$module$src$modules$table.toString=()=>"tableGet = async (tableNum, tableIndex) => Number;";const csoundTableSet$$module$src$modules$table=a=>(b,c,d,e)=>a.exports.csoundTableSet(b,c,d,e);\ncsoundTableSet$$module$src$modules$table.toString=()=>"tableSet = async (tableNum, tableIndex, value) => undefined;";const csoundTableCopyIn$$module$src$modules$table=a=>(b,c,d)=>{const e=a.exports.allocFloatArray(d.length);(new Float64Array(a.wasi.memory.buffer,e,d.length)).set(d);a.exports.csoundTableCopyIn(b,c,e);a.exports.freeFloatArrayMem(e)};csoundTableCopyIn$$module$src$modules$table.toString=()=>"tableCopyIn = async (tableNum, float64Array) => undefined;";\nconst csoundTableCopyOut$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundTableLength(b,c);if(0<d){const e=a.exports.allocFloatArray(d);a.exports.csoundTableCopyOut(b,c,e);({buffer:b}=a.wasi.memory);d=new Float64Array(b,e,d);a.exports.freeFloatArrayMem(e);return Float64Array.from(d)}};csoundTableCopyOut$$module$src$modules$table.toString=()=>"tableCopyOut = async (tableNum) => ?Float64Array;";const csoundGetTable$$module$src$modules$table=csoundTableCopyOut$$module$src$modules$table;\ncsoundTableCopyOut$$module$src$modules$table.toString=csoundTableCopyOut$$module$src$modules$table.toString;const csoundGetTableArgs$$module$src$modules$table=a=>(b,c)=>{const d=a.exports.allocFloatArray(1024);a.exports.csoundGetTableArgs(b,d,c);({buffer:b}=a.wasi.memory);b=new Float64Array(b,d,1024);a.exports.freeFloatArrayMem(d);return b};csoundGetTableArgs$$module$src$modules$table.toString=()=>"getTableArgs = async (tableNum) => ?Float64Array;";\nconst csoundIsNamedGEN$$module$src$modules$table=a=>(b,c)=>a.exports.csoundIsNamedGEN(b,c);csoundIsNamedGEN$$module$src$modules$table.toString=()=>"isNamedGEN = async (tableNum) => number;";const csoundGetNamedGEN$$module$src$modules$table=a=>(b,c)=>{var d=a.exports.csoundIsNamedGEN(b,c);if(0<d){const e=a.exports.allocStringMem(d);a.exports.csoundGetNamedGEN(b,e,c,d);({buffer:b}=a.wasi.memory);d=new Uint8Array(b,e,d);return uint2String$$module$src$utils$text_encoders(d)}};\ncsoundGetNamedGEN$$module$src$modules$table.toString=()=>"getNamedGEN = async (tableNum) => ?string;";var module$src$modules$table={};module$src$modules$table.csoundGetNamedGEN=csoundGetNamedGEN$$module$src$modules$table;module$src$modules$table.csoundGetTable=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundGetTableArgs=csoundGetTableArgs$$module$src$modules$table;module$src$modules$table.csoundIsNamedGEN=csoundIsNamedGEN$$module$src$modules$table;\nmodule$src$modules$table.csoundTableCopyIn=csoundTableCopyIn$$module$src$modules$table;module$src$modules$table.csoundTableCopyOut=csoundTableCopyOut$$module$src$modules$table;module$src$modules$table.csoundTableGet=csoundTableGet$$module$src$modules$table;module$src$modules$table.csoundTableLength=csoundTableLength$$module$src$modules$table;module$src$modules$table.csoundTableSet=csoundTableSet$$module$src$modules$table;function writeFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.writeFile(c,b)}}writeFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";function appendFile$$module$src$filesystem$worker_fs(a){return(b,c,d)=>{b="string"===typeof d?encoder$$module$src$utils$text_encoders.encode(d):d;a.wasi.appendFile(c,b)}}appendFile$$module$src$filesystem$worker_fs.toString=()=>"async (path, data) => void";\nfunction readFile$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readFile(c)}readFile$$module$src$filesystem$worker_fs.toString=()=>"async (path) => ?Uint8Array";function unlink$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.unlink(c)}unlink$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";function readdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.readdir(c)}readdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => string[]";\nfunction mkdir$$module$src$filesystem$worker_fs(a){return(b,c)=>a.wasi.mkdir(c)}mkdir$$module$src$filesystem$worker_fs.toString=()=>"async (path) => void";var module$src$filesystem$worker_fs={};module$src$filesystem$worker_fs.appendFile=appendFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.mkdir=mkdir$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readFile=readFile$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.readdir=readdir$$module$src$filesystem$worker_fs;\nmodule$src$filesystem$worker_fs.unlink=unlink$$module$src$filesystem$worker_fs;module$src$filesystem$worker_fs.writeFile=writeFile$$module$src$filesystem$worker_fs;const api$$module$src$libcsound={csoundCreate:csoundCreate$$module$src$modules$instantiation,csoundDestroy:csoundDestroy$$module$src$modules$instantiation,csoundGetAPIVersion:csoundGetAPIVersion$$module$src$modules$instantiation,csoundGetVersion:csoundGetVersion$$module$src$modules$instantiation,csoundInitialize:csoundInitialize$$module$src$modules$instantiation,csoundParseOrc:csoundParseOrc$$module$src$modules$performance,csoundCompileTree:csoundCompileTree$$module$src$modules$performance,csoundCompileOrc:csoundCompileOrc$$module$src$modules$performance,\ncsoundEvalCode:csoundEvalCode$$module$src$modules$performance,csoundStart:csoundStart$$module$src$modules$performance,csoundCompileCsd:csoundCompileCsd$$module$src$modules$performance,csoundCompileCsdText:csoundCompileCsdText$$module$src$modules$performance,csoundPerform:csoundPerform$$module$src$modules$performance,csoundPerformKsmps:csoundPerformKsmps$$module$src$modules$performance,csoundPerformBuffer:csoundPerformBuffer$$module$src$modules$performance,csoundStop:csoundStop$$module$src$modules$performance,\ncsoundCleanup:csoundCleanup$$module$src$modules$performance,csoundReset:csoundReset$$module$src$modules$performance,csoundGetSr:csoundGetSr$$module$src$modules$attributes,csoundGetKr:csoundGetKr$$module$src$modules$attributes,csoundGetKsmps:csoundGetKsmps$$module$src$modules$attributes,csoundGetNchnls:csoundGetNchnls$$module$src$modules$attributes,csoundGetNchnlsInput:csoundGetNchnlsInput$$module$src$modules$attributes,csoundGet0dBFS:csoundGet0dBFS$$module$src$modules$attributes,csoundGetA4:csoundGetA4$$module$src$modules$attributes,\ncsoundGetCurrentTimeSamples:csoundGetCurrentTimeSamples$$module$src$modules$attributes,csoundGetSizeOfMYFLT:csoundGetSizeOfMYFLT$$module$src$modules$attributes,csoundSetOption:csoundSetOption$$module$src$modules$attributes,csoundSetParams:csoundSetParams$$module$src$modules$attributes,csoundGetParams:csoundGetParams$$module$src$modules$attributes,csoundGetDebug:csoundGetDebug$$module$src$modules$attributes,csoundSetDebug:csoundSetDebug$$module$src$modules$attributes,csoundGetInputBufferSize:csoundGetInputBufferSize$$module$src$modules$rtaudio,\ncsoundGetOutputBufferSize:csoundGetOutputBufferSize$$module$src$modules$rtaudio,csoundGetInputBuffer:csoundGetInputBuffer$$module$src$modules$rtaudio,csoundGetOutputBuffer:csoundGetOutputBuffer$$module$src$modules$rtaudio,csoundGetSpin:csoundGetSpin$$module$src$modules$rtaudio,csoundGetSpout:csoundGetSpout$$module$src$modules$rtaudio,csoundGetMIDIDevList:csoundGetMIDIDevList$$module$src$modules$rtmidi,csoundSetMidiCallbacks:csoundSetMidiCallbacks$$module$src$modules$rtmidi,csoundGetRtMidiName:csoundGetRtMidiName$$module$src$modules$rtmidi,\ncsoundGetMidiOutFileName:csoundGetMidiOutFileName$$module$src$modules$rtmidi,csoundPushMidiMessage:csoundPushMidiMessage$$module$src$modules$rtmidi,_isRequestingRtMidiInput:_isRequestingRtMidiInput$$module$src$modules$rtmidi,csoundInputMessage:csoundInputMessage$$module$src$modules$control_events,csoundInputMessageAsync:csoundInputMessageAsync$$module$src$modules$control_events,csoundGetControlChannel:csoundGetControlChannel$$module$src$modules$control_events,csoundSetControlChannel:csoundSetControlChannel$$module$src$modules$control_events,\ncsoundGetStringChannel:csoundGetStringChannel$$module$src$modules$control_events,csoundSetStringChannel:csoundSetStringChannel$$module$src$modules$control_events,csoundGetInputName:csoundGetInputName$$module$src$modules$general_io,csoundGetOutputName:csoundGetOutputName$$module$src$modules$general_io,csoundAppendEnv:csoundAppendEnv$$module$src$modules$extra,csoundShouldDaemonize:csoundShouldDaemonize$$module$src$modules$extra,csoundIsScorePending:csoundIsScorePending$$module$src$modules$score_handling,\ncsoundSetScorePending:csoundSetScorePending$$module$src$modules$score_handling,csoundReadScore:csoundReadScore$$module$src$modules$score_handling,csoundGetScoreTime:csoundGetScoreTime$$module$src$modules$score_handling,csoundGetScoreOffsetSeconds:csoundGetScoreOffsetSeconds$$module$src$modules$score_handling,csoundSetScoreOffsetSeconds:csoundSetScoreOffsetSeconds$$module$src$modules$score_handling,csoundRewindScore:csoundRewindScore$$module$src$modules$score_handling,csoundTableLength:csoundTableLength$$module$src$modules$table,\ncsoundTableGet:csoundTableGet$$module$src$modules$table,csoundTableSet:csoundTableSet$$module$src$modules$table,csoundTableCopyIn:csoundTableCopyIn$$module$src$modules$table,csoundTableCopyOut:csoundTableCopyOut$$module$src$modules$table,csoundGetTable:csoundTableCopyOut$$module$src$modules$table,csoundGetTableArgs:csoundGetTableArgs$$module$src$modules$table,csoundIsNamedGEN:csoundIsNamedGEN$$module$src$modules$table,csoundGetNamedGEN:csoundGetNamedGEN$$module$src$modules$table,fs:module$src$filesystem$worker_fs};\nvar $jscompDefaultExport$$module$src$libcsound=function(a){return mergeAll$$module$node_modules$rambda$dist$rambda_mjs([reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,api$$module$src$libcsound[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(dissoc$$module$node_modules$rambda$dist$rambda_mjs("fs")(api$$module$src$libcsound))),reduce$$module$node_modules$rambda$dist$rambda_mjs((b,c)=>assoc$$module$node_modules$rambda$dist$rambda_mjs(c,\napi$$module$src$libcsound.fs[c](a),b),{},keys$$module$node_modules$rambda$dist$rambda_mjs(module$src$filesystem$worker_fs))])},module$src$libcsound={};module$src$libcsound.api=api$$module$src$libcsound;module$src$libcsound.default=$jscompDefaultExport$$module$src$libcsound;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=new WebAssembly.Global({value:"i32",mutable:!0},0);const h=new WebAssembly.Global({value:"i32",mutable:!0},0);let k=c.length;"function"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);"function"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k,\nb.exports.csoundModuleInit),k+=1);"function"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);"function"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=c.length,\n"function"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),"function"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error("Plugin doesn\'t export nececcary functions to quality as csound plugin.")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt);\nconst WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants=\n10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants=\n20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants=\n31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41,\nWASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants=\n52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants=\n62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants=\n73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants=\n7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants=\n18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants=\n3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants=\n16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants=\ngoog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants=\ngoog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants=\ngoog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants=\ngoog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|\nWASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|\nWASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants=\nWASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\nWASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|\nWASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|\nWASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,\nRIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants=\n1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants=\n0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants;\nmodule$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name="CustomError";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name="AssertionError";\ngoog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split("%s");let c="";const d=a.length-1;for(let e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:"%s");return c+a[d]}\nfunction module$contents$goog$asserts_doAssertFailure(a,b,c,d){let e="Assertion failed",f;c?(e+=": "+c,f=d):a&&(e+=": "+a,f=b);a=new module$contents$goog$asserts_AssertionError(""+e,f||[]);module$contents$goog$asserts_errorHandler_(a)}goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(module$contents$goog$asserts_errorHandler_=a)};\ngoog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&module$contents$goog$asserts_doAssertFailure("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&module$contents$goog$asserts_doAssertFailure("Expected to exist: %s.",[a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&module$contents$goog$asserts_errorHandler_(new module$contents$goog$asserts_AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"number"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"string"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"function"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&module$contents$goog$asserts_doAssertFailure("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!Array.isArray(a)&&module$contents$goog$asserts_doAssertFailure("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"boolean"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||module$contents$goog$asserts_doAssertFailure("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};\ngoog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||module$contents$goog$asserts_doAssertFailure("Expected instanceof %s but got %s.",[module$contents$goog$asserts_getType(b),module$contents$goog$asserts_getType(a)],c,Array.prototype.slice.call(arguments,3));return a};\ngoog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||"number"==typeof a&&isFinite(a)||module$contents$goog$asserts_doAssertFailure("Expected %s to be a finite number but it is not.",[a],b,Array.prototype.slice.call(arguments,2));return a};\nfunction module$contents$goog$asserts_getType(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;const module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.ASSUME_NATIVE_FUNCTIONS=module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS;function module$contents$goog$array_peek(a){return a[a.length-1]}goog.array.peek=module$contents$goog$array_peek;goog.array.last=module$contents$goog$array_peek;\nconst module$contents$goog$array_indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};goog.array.indexOf=module$contents$goog$array_indexOf;\nconst module$contents$goog$array_lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};\ngoog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEach=module$contents$goog$array_forEach;\nfunction module$contents$goog$array_forEachRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)}goog.array.forEachRight=module$contents$goog$array_forEachRight;\nconst module$contents$goog$array_filter=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){const d=a.length,e=[];let f=0;const g="string"===typeof a?a.split(""):a;for(let h=0;h<d;h++)if(h in g){const k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};goog.array.filter=module$contents$goog$array_filter;\nconst module$contents$goog$array_map=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){const d=a.length,e=Array(d),f="string"===typeof a?a.split(""):a;for(let g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};goog.array.map=module$contents$goog$array_map;\nconst module$contents$goog$array_reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEach(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduce=module$contents$goog$array_reduce;\nconst module$contents$goog$array_reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEachRight(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduceRight=module$contents$goog$array_reduceRight;\nconst module$contents$goog$array_some=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};goog.array.some=module$contents$goog$array_some;\nconst module$contents$goog$array_every=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.every=module$contents$goog$array_every;\nfunction module$contents$goog$array_count(a,b,c){let d=0;module$contents$goog$array_forEach(a,function(e,f,g){b.call(c,e,f,g)&&++d},c);return d}goog.array.count=module$contents$goog$array_count;function module$contents$goog$array_find(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find;\nfunction module$contents$goog$array_findIndex(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1}goog.array.findIndex=module$contents$goog$array_findIndex;function module$contents$goog$array_findRight(a,b,c){b=module$contents$goog$array_findIndexRight(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight;\nfunction module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty;\nfunction module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt;\nfunction module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore;\nfunction module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast;\nfunction module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf;\nfunction module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)}\ngoog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0<b){const c=Array(b);for(let d=0;d<b;d++)c[d]=a[d];return c}return[]}const module$contents$goog$array_clone=goog.array.toArray=module$contents$goog$array_toArray;goog.array.clone=module$contents$goog$array_toArray;\nfunction module$contents$goog$array_extend(a,b){for(let c=1;c<arguments.length;c++){const d=arguments[c];if(goog.isArrayLike(d)){const e=a.length||0,f=d.length||0;a.length=e+f;for(let g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}}goog.array.extend=module$contents$goog$array_extend;function module$contents$goog$array_splice(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,module$contents$goog$array_slice(arguments,1))}goog.array.splice=module$contents$goog$array_splice;\nfunction module$contents$goog$array_slice(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice;\nfunction module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e<a.length;){const g=a[e++],h=c(g);Object.prototype.hasOwnProperty.call(f,h)||(f[h]=!0,b[d++]=g)}b.length=d}goog.array.removeDuplicates=module$contents$goog$array_removeDuplicates;\nfunction module$contents$goog$array_binarySearch(a,b,c){return module$contents$goog$array_binarySearch_(a,c||module$contents$goog$array_defaultCompare,!1,b)}goog.array.binarySearch=module$contents$goog$array_binarySearch;function module$contents$goog$array_binarySelect(a,b,c){return module$contents$goog$array_binarySearch_(a,b,!0,void 0,c)}goog.array.binarySelect=module$contents$goog$array_binarySelect;\nfunction module$contents$goog$array_binarySearch_(a,b,c,d,e){let f=0,g=a.length,h;for(;f<g;){const k=f+(g-f>>>1);let l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:-f-1}function module$contents$goog$array_sort(a,b){a.sort(b||module$contents$goog$array_defaultCompare)}goog.array.sort=module$contents$goog$array_sort;\nfunction module$contents$goog$array_stableSort(a,b){const c=Array(a.length);for(let e=0;e<a.length;e++)c[e]={index:e,value:a[e]};const d=b||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(c,function(e,f){return d(e.value,f.value)||e.index-f.index});for(b=0;b<a.length;b++)a[b]=c[b].value}goog.array.stableSort=module$contents$goog$array_stableSort;\nfunction module$contents$goog$array_sortByKey(a,b,c){const d=c||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(a,function(e,f){return d(b(e),b(f))})}goog.array.sortByKey=module$contents$goog$array_sortByKey;function module$contents$goog$array_sortObjectsByKey(a,b,c){module$contents$goog$array_sortByKey(a,function(d){return d[b]},c)}goog.array.sortObjectsByKey=module$contents$goog$array_sortObjectsByKey;\nfunction module$contents$goog$array_isSorted(a,b,c){b=b||module$contents$goog$array_defaultCompare;for(let d=1;d<a.length;d++){const e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0}goog.array.isSorted=module$contents$goog$array_isSorted;function module$contents$goog$array_equals(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;const d=a.length;c=c||module$contents$goog$array_defaultCompareEquality;for(let e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0}\ngoog.array.equals=module$contents$goog$array_equals;function module$contents$goog$array_compare3(a,b,c){c=c||module$contents$goog$array_defaultCompare;const d=Math.min(a.length,b.length);for(let e=0;e<d;e++){const f=c(a[e],b[e]);if(0!=f)return f}return module$contents$goog$array_defaultCompare(a.length,b.length)}goog.array.compare3=module$contents$goog$array_compare3;function module$contents$goog$array_defaultCompare(a,b){return a>b?1:a<b?-1:0}goog.array.defaultCompare=module$contents$goog$array_defaultCompare;\nfunction module$contents$goog$array_inverseDefaultCompare(a,b){return-module$contents$goog$array_defaultCompare(a,b)}goog.array.inverseDefaultCompare=module$contents$goog$array_inverseDefaultCompare;function module$contents$goog$array_defaultCompareEquality(a,b){return a===b}goog.array.defaultCompareEquality=module$contents$goog$array_defaultCompareEquality;\nfunction module$contents$goog$array_binaryInsert(a,b,c){c=module$contents$goog$array_binarySearch(a,b,c);return 0>c?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove;\nfunction module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;e<a.length;e++){const f=a[e],g=b.call(c,f,e,a);void 0!==g&&(d[g]||(d[g]=[])).push(f)}return d}goog.array.bucket=module$contents$goog$array_bucket;function module$contents$goog$array_bucketToMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d],f=b(e,d,a);if(void 0!==f){let g=c.get(f);g||(g=[],c.set(f,g));g.push(e)}}return c}goog.array.bucketToMap=module$contents$goog$array_bucketToMap;\nfunction module$contents$goog$array_toObject(a,b,c){const d={};module$contents$goog$array_forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d}goog.array.toObject=module$contents$goog$array_toObject;function module$contents$goog$array_toMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d];c.set(b(e,d,a),e)}return c}goog.array.toMap=module$contents$goog$array_toMap;\nfunction module$contents$goog$array_range(a,b,c){const d=[];let e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;d<b;d++)c[d]=a;return c}goog.array.repeat=module$contents$goog$array_repeat;\nfunction module$contents$goog$array_flatten(a){const b=[];for(let d=0;d<arguments.length;d++){const e=arguments[d];if(Array.isArray(e))for(let f=0;f<e.length;f+=8192){var c=module$contents$goog$array_slice(e,f,f+8192);c=module$contents$goog$array_flatten.apply(null,c);for(let g=0;g<c.length;g++)b.push(c[g])}else b.push(e)}return b}goog.array.flatten=module$contents$goog$array_flatten;\nfunction module$contents$goog$array_rotate(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])}goog.array.moveItem=module$contents$goog$array_moveItem;\nfunction module$contents$goog$array_zip(a){if(!arguments.length)return[];const b=[];let c=arguments[0].length;for(var d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){const e=[];for(let f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b}goog.array.zip=module$contents$goog$array_zip;function module$contents$goog$array_shuffle(a,b){b=b||Math.random;for(let c=a.length-1;0<c;c--){const d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}}\ngoog.array.shuffle=module$contents$goog$array_shuffle;function module$contents$goog$array_copyByIndex(a,b){const c=[];module$contents$goog$array_forEach(b,function(d){c.push(a[d])});return c}goog.array.copyByIndex=module$contents$goog$array_copyByIndex;function module$contents$goog$array_concatMap(a,b,c){return module$contents$goog$array_concat.apply([],module$contents$goog$array_map(a,b,c))}goog.array.concatMap=module$contents$goog$array_concatMap;goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s",goog.dom.asserts.debugStringForType_(a))}return a};\ngoog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&"undefined"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAnchorElement")};\ngoog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLButtonElement")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLLinkElement")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLImageElement")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAudioElement")};\ngoog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLVideoElement")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLInputElement")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLTextAreaElement")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLCanvasElement")};\ngoog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLEmbedElement")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFormElement")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFrameElement")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLIFrameElement")};\ngoog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLObjectElement")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLScriptElement")};\ngoog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return"<object could not be stringified>"}else return void 0===a?"undefined":null===a?"null":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};\ngoog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}};\ngoog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}};\ngoog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e<c;e++)d=b[e].apply(this,arguments);return d}};goog.functions.and=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(!b[d].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(b[d].apply(this,arguments))return!0;return!1}};\ngoog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){let b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){let b=a;return function(){if(b){const c=b;b=null;c()}}};\ngoog.functions.debounce=function(a,b,c){let d=0;return function(e){goog.global.clearTimeout(d);const f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){let d=0,e=!1,f=[];const g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);let k=f;f=[];a.apply(c,k)};return function(k){f=arguments;d?e=!0:h()}};\ngoog.functions.rateLimit=function(a,b,c){let d=0;const e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.functions.isFunction=a=>"function"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||"";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};\ngoog.DEBUG&&(goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got \'"+a+"\'");return"type_error:Const"};\ngoog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+"#html":"";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof\nmodule$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeScript, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeScript"}static stringify_(a){return JSON.stringify(a).replace(/</g,"\\\\x3c")}static createSafeScriptSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScript(a):\na;return new module$contents$goog$html$SafeScript_SafeScript(a,module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE)}}module$contents$goog$html$SafeScript_SafeScript.EMPTY=function(){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("")}();goog.html.SafeScript=module$contents$goog$html$SafeScript_SafeScript;goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.UrlObject_=function(){};goog.fs.url.UrlObject_.prototype.createObjectURL=function(a){};goog.fs.url.UrlObject_.prototype.revokeObjectURL=function(a){};\ngoog.fs.url.getUrlObject_=function(){const a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error("This browser doesn\'t seem to support blob URLs");};goog.fs.url.findUrlObject_=function(){return void 0!==goog.global.URL&&void 0!==goog.global.URL.createObjectURL?goog.global.URL:void 0!==goog.global.createObjectURL?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.fs.blob={};goog.fs.blob.getBlob=function(a){var b=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==b){b=new b;for(let c=0;c<arguments.length;c++)b.append(arguments[c]);return b.getBlob()}return goog.fs.blob.getBlobWithProperties(Array.prototype.slice.call(arguments))};\ngoog.fs.blob.getBlobWithProperties=function(a,b,c){var d=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==d){d=new d;for(let e=0;e<a.length;e++)d.append(a[e],c);return d.getBlob(b)}if(void 0!==goog.global.Blob)return d={},b&&(d.type=b),c&&(d.endings=c),new Blob(a,d);throw Error("This browser doesn\'t seem to support creating Blobs");};goog.html.TrustedResourceUrl=class{constructor(a,b){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=b===goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+""}};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};\ngoog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",c[2]||"",a)+goog.html.TrustedResourceUrl.stringifyParams_("#",d,b))};goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};\ngoog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail("expected object of type TrustedResourceUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:TrustedResourceUrl"};\ngoog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error("Invalid TrustedResourceUrl format: "+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(d,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error(\'Found marker, "\'+e+\'", in format string, "\'+c+\'", but no valid label mapping found in args: \'+JSON.stringify(b));d=b[e];return d instanceof goog.string.Const?goog.string.Const.unwrap(d):\nencodeURIComponent(String(d))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=RegExp("^((https:)?//[0-9a-z.:[\\\\]-]+/|/[^/\\\\\\\\]|[^:/\\\\\\\\%]+/|[^:/\\\\\\\\%]*[?#]|about:blank#)","i");goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\\?[^#]*)?(#[\\s\\S]*)?/;\ngoog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b="",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.TrustedResourceUrl.fromSafeScript=function(a){a=goog.fs.blob.getBlobWithProperties([module$contents$goog$html$SafeScript_SafeScript.unwrap(a)],"text/javascript");a=goog.fs.url.createObjectUrl(a);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};\ngoog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScriptURL(a):a;return new goog.html.TrustedResourceUrl(a,goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};\ngoog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if("string"===typeof c)return c?a+encodeURIComponent(c):"";for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var e=c[d];e=Array.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?"&":"")+encodeURIComponent(d)+"="+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))};\ngoog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\\s\\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\\s\\xa0]*([\\s\\S]*?)[\\s\\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};\ngoog.string.internal.newLineToBr=function(a,b){return a.replace(/(\\r\\n|\\r|\\n)/g,b?"<br />":"<br>")};\ngoog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,"&amp;").replace(goog.string.internal.LT_RE_,"&lt;").replace(goog.string.internal.GT_RE_,"&gt;").replace(goog.string.internal.QUOT_RE_,"&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.internal.NULL_RE_,"&#0;");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.internal.AMP_RE_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.internal.LT_RE_,\n"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.internal.GT_RE_,"&gt;"));-1!=a.indexOf(\'"\')&&(a=a.replace(goog.string.internal.QUOT_RE_,"&quot;"));-1!=a.indexOf("\'")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;"));-1!=a.indexOf("\\x00")&&(a=a.replace(goog.string.internal.NULL_RE_,"&#0;"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/"/g;goog.string.internal.SINGLE_QUOTE_RE_=/\'/g;\ngoog.string.internal.NULL_RE_=/\\x00/g;goog.string.internal.ALL_RE_=/[\\x00&<>"\']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g," &#160;"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};\ngoog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(".");b=goog.string.internal.trim(String(b)).split(".");const d=Math.max(a.length,b.length);for(let g=0;0==c&&g<d;g++){var e=a[g]||"",f=b[g]||"";do{e=/(\\d*)(\\D*)(.*)/.exec(e)||["","","",""];f=/(\\d*)(\\D*)(.*)/.exec(f)||["","","",""];if(0==e[0].length&&0==f[0].length)break;c=0==e[1].length?0:parseInt(e[1],10);const h=0==f[1].length?0:parseInt(f[1],10);c=goog.string.internal.compareElements_(c,h)||\ngoog.string.internal.compareElements_(0==e[2].length,0==f[2].length)||goog.string.internal.compareElements_(e[2],f[2]);e=e[3];f=f[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};\ngoog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};\ngoog.html.SAFE_MIME_TYPE_PATTERN_=RegExp(\'^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\\\w+=(?:\\\\w+|"[\\\\w;,= ]+"))*$\',"i");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};\ngoog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)};\ngoog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert("MediaSource"in goog.global,"No support for MediaSource");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\\/]+=*$/i;\ngoog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,"");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SIP_URL_PATTERN_=RegExp("^sip[s]?:[+a-z0-9_.!$%&\'*\\\\/=^`{|}~-]+@([a-z0-9-]+\\\\.)+[a-z0-9]{2,63}$","i");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"fb-messenger://share")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"whatsapp://send")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf("#");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"ssh://")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\\/\\/([^\\/]+)\\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\\/\\/([^\\/]+)\\//,a,b)};\ngoog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(d){return goog.string.Const.unwrap(d)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};\ngoog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.trySanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SAFE_URL_PATTERN_.test(a)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):goog.html.SafeUrl.tryFromDataUrl(a)};\ngoog.html.SafeUrl.sanitize=function(a){return goog.html.SafeUrl.trySanitize(a)||goog.html.SafeUrl.INNOCUOUS_URL};\ngoog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),"%s does not match the safe URL pattern",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};\ngoog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){return new goog.html.SafeUrl(a,goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};goog.html.SafeUrl.INNOCUOUS_URL=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.SafeUrl.INNOCUOUS_STRING);goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");const module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeStyle_SafeStyle{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=b===module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;(0,goog.asserts.assert)((0,goog.string.internal.endsWith)(a,";"),`Last character of style string is not \';\': ${a}`);(0,goog.asserts.assert)((0,goog.string.internal.contains)(a,\n":"),"Style string must contain at least one \':\', to specify a \\"name: value\\" pair: "+a);return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_}toString(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString()}static unwrap(a){if(a instanceof module$contents$goog$html$SafeStyle_SafeStyle&&a.constructor===module$contents$goog$html$SafeStyle_SafeStyle)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;\n(0,goog.asserts.fail)(`expected object of type SafeStyle, got \'${a}`+"\' of type "+goog.typeOf(a));return"type_error:SafeStyle"}static createSafeStyleSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyle_SafeStyle(a,module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE)}static create(a){let b="";for(let c in a)if(Object.prototype.hasOwnProperty.call(a,c)){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(`Name allows only [-_a-zA-Z0-9], got: ${c}`);let d=a[c];null!=d&&\n(d=Array.isArray(d)?d.map(module$contents$goog$html$SafeStyle_sanitizePropertyValue).join(" "):module$contents$goog$html$SafeStyle_sanitizePropertyValue(d),b+=`${c}:${d};`)}return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c);\nreturn b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING="zClosurez";\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return\'url("\'+goog.html.SafeUrl.unwrap(a).replace(/</g,"%3c").replace(/[\\\\"]/g,"\\\\$&")+\'")\';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):module$contents$goog$html$SafeStyle_sanitizePropertyValueString(String(a));if(/[{;}]/.test(a))throw new module$contents$goog$asserts_AssertionError("Value does not allow [{;}], got: %s.",[a]);return a}\nfunction module$contents$goog$html$SafeStyle_sanitizePropertyValueString(a){const b=a.replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_URL_RE,"url");if(module$contents$goog$html$SafeStyle_VALUE_RE.test(b)){if(module$contents$goog$html$SafeStyle_COMMENT_RE.test(a))return(0,goog.asserts.fail)(`String value disallows comments, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;\nif(!module$contents$goog$html$SafeStyle_hasBalancedQuotes(a))return(0,goog.asserts.fail)(`String value requires balanced quotes, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;if(!module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a))return(0,goog.asserts.fail)("String value requires balanced square brackets and one identifier per pair of brackets, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING}else return(0,goog.asserts.fail)(`String value allows only ${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}`+\n" and simple functions, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;return module$contents$goog$html$SafeStyle_sanitizeUrl(a)}function module$contents$goog$html$SafeStyle_hasBalancedQuotes(a){let b=!0,c=!0;for(let d=0;d<a.length;d++){const e=a.charAt(d);"\'"==e&&c?b=!b:\'"\'==e&&b&&(c=!c)}return b&&c}\nfunction module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a){let b=!0;const c=/^[-_a-zA-Z0-9]$/;for(let d=0;d<a.length;d++){const e=a.charAt(d);if("]"==e){if(b)return!1;b=!0}else if("["==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b}\nconst module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS="[-,.\\"\'%_!#/ a-zA-Z0-9\\\\[\\\\]]",module$contents$goog$html$SafeStyle_VALUE_RE=new RegExp(`^${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}+\\$`),module$contents$goog$html$SafeStyle_URL_RE=RegExp("\\\\b(url\\\\([ \\t\\n]*)(\'[ -&(-\\\\[\\\\]-~]*\'|\\"[ !#-\\\\[\\\\]-~]*\\"|[!#-&*-\\\\[\\\\]-~]*)([ \\t\\n]*\\\\))","g"),module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS="calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax radial-gradient repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)? steps var".split(" "),\nmodule$contents$goog$html$SafeStyle_FUNCTIONS_RE=new RegExp("\\\\b("+module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS.join("|")+")\\\\([-+*/0-9a-zA-Z.%#\\\\[\\\\], ]+\\\\)","g"),module$contents$goog$html$SafeStyle_COMMENT_RE=/\\/\\*/;function module$contents$goog$html$SafeStyle_sanitizeUrl(a){return a.replace(module$contents$goog$html$SafeStyle_URL_RE,(b,c,d,e)=>{let f="";d=d.replace(/^([\'"])(.*)\\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})}\ngoog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1}\nfunction module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)}\nfunction module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a}function module$contents$goog$object_containsKey(a,b){return null!==a&&b in a}\nfunction module$contents$goog$object_containsValue(a,b){for(const c in a)if(a[c]==b)return!0;return!1}function module$contents$goog$object_findKey(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return d}function module$contents$goog$object_findValue(a,b,c){return(b=module$contents$goog$object_findKey(a,b,c))&&a[b]}function module$contents$goog$object_isEmpty(a){for(const b in a)return!1;return!0}function module$contents$goog$object_clear(a){for(const b in a)delete a[b]}\nfunction module$contents$goog$object_remove(a,b){let c;(c=b in a)&&delete a[b];return c}function module$contents$goog$object_add(a,b,c){if(null!==a&&b in a)throw Error(`The object already contains the key "${b}"`);module$contents$goog$object_set(a,b,c)}function module$contents$goog$object_get(a,b,c){return null!==a&&b in a?a[b]:c}function module$contents$goog$object_set(a,b,c){a[b]=c}function module$contents$goog$object_setIfUndefined(a,b,c){return b in a?a[b]:a[b]=c}\nfunction module$contents$goog$object_setWithReturnValueIfNotSet(a,b,c){if(b in a)return a[b];c=c();return a[b]=c}function module$contents$goog$object_equals(a,b){for(const c in a)if(!(c in b)||a[c]!==b[c])return!1;for(const c in b)if(!(c in a))return!1;return!0}function module$contents$goog$object_clone(a){const b={};for(const c in a)b[c]=a[c];return b}\nfunction module$contents$goog$object_unsafeClone(a){if(!a||"object"!==typeof a)return a;if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);if(a instanceof Date)return new Date(a.getTime());const b=Array.isArray(a)?[]:"function"!==typeof ArrayBuffer||"function"!==typeof ArrayBuffer.isView||!ArrayBuffer.isView(a)||a instanceof DataView?{}:new a.constructor(a.length);for(const c in a)b[c]=\nmodule$contents$goog$object_unsafeClone(a[c]);return b}function module$contents$goog$object_transpose(a){const b={};for(const c in a)b[a[c]]=c;return b}const module$contents$goog$object_PROTOTYPE_FIELDS="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\nfunction module$contents$goog$object_extend(a,b){let c,d;for(let e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(let f=0;f<module$contents$goog$object_PROTOTYPE_FIELDS.length;f++)c=module$contents$goog$object_PROTOTYPE_FIELDS[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}}\nfunction module$contents$goog$object_create(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");const c={};for(let d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c}\nfunction module$contents$goog$object_createSet(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_createSet.apply(null,arguments[0]);const c={};for(let d=0;d<b;d++)c[arguments[d]]=!0;return c}function module$contents$goog$object_createImmutableView(a){let b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b}function module$contents$goog$object_isImmutableView(a){return!!Object.isFrozen&&Object.isFrozen(a)}\nfunction module$contents$goog$object_getAllPropertyNames(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return module$contents$goog$object_getKeys(a);const d={};for(;a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){const e=Object.getOwnPropertyNames(a);for(let f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return module$contents$goog$object_getKeys(d)}\nfunction module$contents$goog$object_getSuperClass(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor}goog.object.add=module$contents$goog$object_add;goog.object.clear=module$contents$goog$object_clear;goog.object.clone=module$contents$goog$object_clone;goog.object.contains=module$contents$goog$object_contains;goog.object.containsKey=module$contents$goog$object_containsKey;goog.object.containsValue=module$contents$goog$object_containsValue;goog.object.create=module$contents$goog$object_create;\ngoog.object.createImmutableView=module$contents$goog$object_createImmutableView;goog.object.createSet=module$contents$goog$object_createSet;goog.object.equals=module$contents$goog$object_equals;goog.object.every=module$contents$goog$object_every;goog.object.extend=module$contents$goog$object_extend;goog.object.filter=module$contents$goog$object_filter;goog.object.findKey=module$contents$goog$object_findKey;goog.object.findValue=module$contents$goog$object_findValue;goog.object.forEach=module$contents$goog$object_forEach;\ngoog.object.get=module$contents$goog$object_get;goog.object.getAllPropertyNames=module$contents$goog$object_getAllPropertyNames;goog.object.getAnyKey=module$contents$goog$object_getAnyKey;goog.object.getAnyValue=module$contents$goog$object_getAnyValue;goog.object.getCount=module$contents$goog$object_getCount;goog.object.getKeys=module$contents$goog$object_getKeys;goog.object.getSuperClass=module$contents$goog$object_getSuperClass;goog.object.getValueByKeys=module$contents$goog$object_getValueByKeys;\ngoog.object.getValues=module$contents$goog$object_getValues;goog.object.isEmpty=module$contents$goog$object_isEmpty;goog.object.isImmutableView=module$contents$goog$object_isImmutableView;goog.object.map=module$contents$goog$object_map;goog.object.remove=module$contents$goog$object_remove;goog.object.set=module$contents$goog$object_set;goog.object.setIfUndefined=module$contents$goog$object_setIfUndefined;goog.object.setWithReturnValueIfNotSet=module$contents$goog$object_setWithReturnValueIfNotSet;\ngoog.object.some=module$contents$goog$object_some;goog.object.transpose=module$contents$goog$object_transpose;goog.object.unsafeClone=module$contents$goog$object_unsafeClone;const module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeStyleSheet_SafeStyleSheet{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=b===module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString()}static createRule(a,b){if((0,goog.string.internal.contains)(a,"<"))throw Error(`Selector does not allow \'<\', got: ${a}`);const c=a.replace(/(\'|")((?!\\1)[^\\r\\n\\f\\\\]|\\\\[\\s\\S])*\\1/g,\n"");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|]+$/.test(c))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\\\]()=^$|] and strings, got: "+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error("() and [] in selector must be balanced, got: "+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/</g,"\\\\3C ")+"}";\nreturn module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}static hasBalancedBrackets_(a){const b={"(":")","[":"]"},c=[];for(let d=0;d<a.length;d++){const e=a[d];if(b[e])c.push(b[e]);else if(module$contents$goog$object_contains(b,e)&&c.pop()!=e)return!1}return 0==c.length}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments,\nc);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,"<"),`Forbidden \'<\' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeStyleSheet, got \'"+a+"\' of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}}\nmodule$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A="A";goog.dom.TagName.ABBR="ABBR";goog.dom.TagName.ACRONYM="ACRONYM";goog.dom.TagName.ADDRESS="ADDRESS";goog.dom.TagName.APPLET="APPLET";goog.dom.TagName.AREA="AREA";goog.dom.TagName.ARTICLE="ARTICLE";goog.dom.TagName.ASIDE="ASIDE";goog.dom.TagName.AUDIO="AUDIO";goog.dom.TagName.B="B";goog.dom.TagName.BASE="BASE";goog.dom.TagName.BASEFONT="BASEFONT";goog.dom.TagName.BDI="BDI";goog.dom.TagName.BDO="BDO";\ngoog.dom.TagName.BIG="BIG";goog.dom.TagName.BLOCKQUOTE="BLOCKQUOTE";goog.dom.TagName.BODY="BODY";goog.dom.TagName.BR="BR";goog.dom.TagName.BUTTON="BUTTON";goog.dom.TagName.CANVAS="CANVAS";goog.dom.TagName.CAPTION="CAPTION";goog.dom.TagName.CENTER="CENTER";goog.dom.TagName.CITE="CITE";goog.dom.TagName.CODE="CODE";goog.dom.TagName.COL="COL";goog.dom.TagName.COLGROUP="COLGROUP";goog.dom.TagName.COMMAND="COMMAND";goog.dom.TagName.DATA="DATA";goog.dom.TagName.DATALIST="DATALIST";goog.dom.TagName.DD="DD";\ngoog.dom.TagName.DEL="DEL";goog.dom.TagName.DETAILS="DETAILS";goog.dom.TagName.DFN="DFN";goog.dom.TagName.DIALOG="DIALOG";goog.dom.TagName.DIR="DIR";goog.dom.TagName.DIV="DIV";goog.dom.TagName.DL="DL";goog.dom.TagName.DT="DT";goog.dom.TagName.EM="EM";goog.dom.TagName.EMBED="EMBED";goog.dom.TagName.FIELDSET="FIELDSET";goog.dom.TagName.FIGCAPTION="FIGCAPTION";goog.dom.TagName.FIGURE="FIGURE";goog.dom.TagName.FONT="FONT";goog.dom.TagName.FOOTER="FOOTER";goog.dom.TagName.FORM="FORM";\ngoog.dom.TagName.FRAME="FRAME";goog.dom.TagName.FRAMESET="FRAMESET";goog.dom.TagName.H1="H1";goog.dom.TagName.H2="H2";goog.dom.TagName.H3="H3";goog.dom.TagName.H4="H4";goog.dom.TagName.H5="H5";goog.dom.TagName.H6="H6";goog.dom.TagName.HEAD="HEAD";goog.dom.TagName.HEADER="HEADER";goog.dom.TagName.HGROUP="HGROUP";goog.dom.TagName.HR="HR";goog.dom.TagName.HTML="HTML";goog.dom.TagName.I="I";goog.dom.TagName.IFRAME="IFRAME";goog.dom.TagName.IMG="IMG";goog.dom.TagName.INPUT="INPUT";\ngoog.dom.TagName.INS="INS";goog.dom.TagName.ISINDEX="ISINDEX";goog.dom.TagName.KBD="KBD";goog.dom.TagName.KEYGEN="KEYGEN";goog.dom.TagName.LABEL="LABEL";goog.dom.TagName.LEGEND="LEGEND";goog.dom.TagName.LI="LI";goog.dom.TagName.LINK="LINK";goog.dom.TagName.MAIN="MAIN";goog.dom.TagName.MAP="MAP";goog.dom.TagName.MARK="MARK";goog.dom.TagName.MATH="MATH";goog.dom.TagName.MENU="MENU";goog.dom.TagName.MENUITEM="MENUITEM";goog.dom.TagName.META="META";goog.dom.TagName.METER="METER";\ngoog.dom.TagName.NAV="NAV";goog.dom.TagName.NOFRAMES="NOFRAMES";goog.dom.TagName.NOSCRIPT="NOSCRIPT";goog.dom.TagName.OBJECT="OBJECT";goog.dom.TagName.OL="OL";goog.dom.TagName.OPTGROUP="OPTGROUP";goog.dom.TagName.OPTION="OPTION";goog.dom.TagName.OUTPUT="OUTPUT";goog.dom.TagName.P="P";goog.dom.TagName.PARAM="PARAM";goog.dom.TagName.PICTURE="PICTURE";goog.dom.TagName.PRE="PRE";goog.dom.TagName.PROGRESS="PROGRESS";goog.dom.TagName.Q="Q";goog.dom.TagName.RP="RP";goog.dom.TagName.RT="RT";\ngoog.dom.TagName.RTC="RTC";goog.dom.TagName.RUBY="RUBY";goog.dom.TagName.S="S";goog.dom.TagName.SAMP="SAMP";goog.dom.TagName.SCRIPT="SCRIPT";goog.dom.TagName.SECTION="SECTION";goog.dom.TagName.SELECT="SELECT";goog.dom.TagName.SMALL="SMALL";goog.dom.TagName.SOURCE="SOURCE";goog.dom.TagName.SPAN="SPAN";goog.dom.TagName.STRIKE="STRIKE";goog.dom.TagName.STRONG="STRONG";goog.dom.TagName.STYLE="STYLE";goog.dom.TagName.SUB="SUB";goog.dom.TagName.SUMMARY="SUMMARY";goog.dom.TagName.SUP="SUP";\ngoog.dom.TagName.SVG="SVG";goog.dom.TagName.TABLE="TABLE";goog.dom.TagName.TBODY="TBODY";goog.dom.TagName.TD="TD";goog.dom.TagName.TEMPLATE="TEMPLATE";goog.dom.TagName.TEXTAREA="TEXTAREA";goog.dom.TagName.TFOOT="TFOOT";goog.dom.TagName.TH="TH";goog.dom.TagName.THEAD="THEAD";goog.dom.TagName.TIME="TIME";goog.dom.TagName.TITLE="TITLE";goog.dom.TagName.TR="TR";goog.dom.TagName.TRACK="TRACK";goog.dom.TagName.TT="TT";goog.dom.TagName.U="U";goog.dom.TagName.UL="UL";goog.dom.TagName.VAR="VAR";\ngoog.dom.TagName.VIDEO="VIDEO";goog.dom.TagName.WBR="WBR";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE="",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a};\nconst module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:""}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null}\nfunction module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData();\nfunction module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal="string"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal}\nfunction module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal}\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)}\nfunction module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp("([A-Z][\\\\w ]+)/([^\\\\s]+)\\\\s*(?:\\\\((.*?)\\\\))?","g"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT;\ngoog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent;\ngoog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_=\n!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error("Unsafe call to resetForTesting");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("fullVersionList");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("platformVersion");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:"Android Browser",CHROMIUM:"Chromium",EDGE:"Microsoft Edge",FIREFOX:"Firefox",IE:"Internet Explorer",OPERA:"Opera",SAFARI:"Safari",SILK:"Silk"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand;\nfunction module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0<a.brands.length}\nfunction module$contents$goog$labs$userAgent$browser_hasFullVersionList(){return module$contents$goog$labs$userAgent$browser_isAtLeast(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM,98)}function module$contents$goog$labs$userAgent$browser_matchOpera(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Opera")}\nfunction module$contents$goog$labs$userAgent$browser_matchIE(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Trident")||module$contents$goog$labs$userAgent$util_matchUserAgent("MSIE")}function module$contents$goog$labs$userAgent$browser_matchEdgeHtml(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Edge")}\nfunction module$contents$goog$labs$userAgent$browser_matchEdgeChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.EDGE):module$contents$goog$labs$userAgent$util_matchUserAgent("Edg/")}\nfunction module$contents$goog$labs$userAgent$browser_matchOperaChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.OPERA):module$contents$goog$labs$userAgent$util_matchUserAgent("OPR")}\nfunction module$contents$goog$labs$userAgent$browser_matchFirefox(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Firefox")||module$contents$goog$labs$userAgent$util_matchUserAgent("FxiOS")}\nfunction module$contents$goog$labs$userAgent$browser_matchSafari(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Safari")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchCoast()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_matchEdgeChromium()||module$contents$goog$labs$userAgent$browser_matchOperaChromium()||\nmodule$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_isSilk()||module$contents$goog$labs$userAgent$util_matchUserAgent("Android"))}function module$contents$goog$labs$userAgent$browser_matchCoast(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Coast")}\nfunction module$contents$goog$labs$userAgent$browser_matchIosWebview(){return(module$contents$goog$labs$userAgent$util_matchUserAgent("iPad")||module$contents$goog$labs$userAgent$util_matchUserAgent("iPhone"))&&!module$contents$goog$labs$userAgent$browser_matchSafari()&&!module$contents$goog$labs$userAgent$browser_matchChrome()&&!module$contents$goog$labs$userAgent$browser_matchCoast()&&!module$contents$goog$labs$userAgent$browser_matchFirefox()&&module$contents$goog$labs$userAgent$util_matchUserAgent("AppleWebKit")}\nfunction module$contents$goog$labs$userAgent$browser_matchChrome(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM):(module$contents$goog$labs$userAgent$util_matchUserAgent("Chrome")||module$contents$goog$labs$userAgent$util_matchUserAgent("CriOS"))&&!module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_isSilk()}\nfunction module$contents$goog$labs$userAgent$browser_matchAndroidBrowser(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Android")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_isSilk())}const module$contents$goog$labs$userAgent$browser_isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;\ngoog.labs.userAgent.browser.isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;const module$contents$goog$labs$userAgent$browser_isIE=module$contents$goog$labs$userAgent$browser_matchIE;goog.labs.userAgent.browser.isIE=module$contents$goog$labs$userAgent$browser_matchIE;const module$contents$goog$labs$userAgent$browser_isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;goog.labs.userAgent.browser.isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;\nconst module$contents$goog$labs$userAgent$browser_isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;goog.labs.userAgent.browser.isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;const module$contents$goog$labs$userAgent$browser_isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;goog.labs.userAgent.browser.isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;\nconst module$contents$goog$labs$userAgent$browser_isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;goog.labs.userAgent.browser.isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;const module$contents$goog$labs$userAgent$browser_isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;goog.labs.userAgent.browser.isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;const module$contents$goog$labs$userAgent$browser_isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;\ngoog.labs.userAgent.browser.isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;const module$contents$goog$labs$userAgent$browser_isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;goog.labs.userAgent.browser.isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;const module$contents$goog$labs$userAgent$browser_isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;goog.labs.userAgent.browser.isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;\nconst module$contents$goog$labs$userAgent$browser_isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;goog.labs.userAgent.browser.isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;function module$contents$goog$labs$userAgent$browser_isSilk(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Silk")}goog.labs.userAgent.browser.isSilk=module$contents$goog$labs$userAgent$browser_isSilk;\nfunction module$contents$goog$labs$userAgent$browser_createVersionMap(a){const b={};a.forEach(c=>{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||""}\nfunction module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b(["Version","Opera"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()?\nb(["Edge"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b(["Edg"]):module$contents$goog$labs$userAgent$browser_isSilk()?b(["Silk"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b(["Chrome","CriOS","HeadlessChrome"]):(a=a[2])&&a[1]||""}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion;\nfunction module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher;\nfunction module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\\d\\.]*)/.exec(a);if(b&&b[1])return b[1];b="";const c=/MSIE +([\\d\\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\\/(\\d.\\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b}\nfunction module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):"";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c(["Version",\n"Opera"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c(["OPR"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c(["Edge"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c(["Edg"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c(["Chrome","CriOS","HeadlessChrome"])}return a===\nmodule$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&&\na[1]||"":""}\nfunction module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(".")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(""===b)return NaN;b=b.split(".")}return 0===b.length?NaN:Number(b[0])}\nfunction module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast;\nfunction module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost;\nclass module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a=\nawait module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;\nasync function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions;\ngoog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()};\nfunction module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b="";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(""===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a,\nc,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf;\nfunction module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return""}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)}\ngoog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={};\nclass module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&&\na.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got \'${a}\' of type `+goog.typeOf(a));return"type_error:SafeHtml"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof\nmodule$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\\x3c!--"+\ngoog.string.internal.htmlEscape(a)+"--\\x3e")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:"");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Tag name <${a}> is not allowed for SafeHtml.`:"");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:""},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n"The browser does not support sandboxed iframes.":"");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a);\na=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if("language"==d||"src"==d||"text"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set "${d}" attribute`:"");}c="";a=module$contents$goog$array_concat(a);for(d=0;d<\na.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:"text/css"},{},b);let c="";a=module$contents$goog$array_concat(a);for(let d=0;d<a.length;d++)c+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(a[d]);\na=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",b,a)}static createMetaRefresh(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(module$contents$goog$labs$userAgent$browser_matchIE()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml())&&goog.string.internal.contains(a,";")&&(a="\'"+a.replace(/\'/g,"%27")+"\'");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",\n{"http-equiv":"refresh",content:(b||0)+"; url="+a})}static join(a,b){a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);const c=[],d=e=>{Array.isArray(e)?e.forEach(d):(e=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(e),c.push(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(e)))};b.forEach(d);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c.join(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static concat(a){return module$contents$goog$html$SafeHtml_SafeHtml.join(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY,\nArray.prototype.slice.call(arguments))}static createSafeHtmlSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createHTML(a):a;return new module$contents$goog$html$SafeHtml_SafeHtml(a,module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE)}static createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(a,b,c){b=`<${a}`+module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes(a,b);null==c?c=[]:Array.isArray(c)||(c=[c]);goog.dom.tags.isVoidTag(a.toLowerCase())?\n(goog.asserts.assert(!c.length,`Void tag <${a}> does not allow content.`),b+=">"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=">"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+"</"+a+">");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c="";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Invalid attribute name "${d}".`:"");const e=b[d];null!=e&&(c+=" "+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,"Must be lower case"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c,\nf)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override "${e}" attribute, got "`+f+\'" with value "\'+c[f]+\'"\':"");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape;\nconst module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0,\n[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0};\nfunction module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\'Attribute "style" not supported.\':"");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\n`Attribute "${b}`+\'" requires goog.string.Const value, "\'+c+\'" given.\':"");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if("string"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute "${b}" on tag "${a}`+\'" requires goog.html.SafeUrl, goog.string.Const, or string, value "\'+\nc+\'" given.\':"");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert("string"===typeof c||"number"===typeof c,"String or number value expected, got "+typeof c+" with value: "+c);return`${b}="`+goog.string.internal.htmlEscape(String(c))+\'"\'}\nfunction module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?\'The "style" attribute requires goog.html.SafeStyle or map of style properties, \'+typeof a+" given: "+a:"");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)}\nmodule$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||"",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>")}();\ngoog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};\ngoog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};\ngoog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&"undefined"===typeof document)return!1;var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement});\ngoog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};\ngoog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML to be immediatelly used."),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)};\ngoog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};\ngoog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};\ngoog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};\ngoog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,\'URL must be TrustedResourceUrl because "rel" contains "stylesheet"\'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):\nb instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};\ngoog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute("nonce",b)};\ngoog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))};\ngoog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||"";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)};\ngoog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,"text/html")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)};\ngoog.dom.safe.createImageFromBlob=function(a){if(!/^image\\/.*/g.test(a.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};\ngoog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_("script[nonce]",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_(\'style[nonce],link[rel="stylesheet"][nonce]\',a)};goog.dom.safe.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:"":""};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\\u00a0",ZERO_WIDTH_SPACE:"\\u200b"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;\ngoog.string.subs=function(a,b){const c=a.split("%s");let d="";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\\s\\xa0]+/g," ").replace(/^\\s+|\\s+$/g,"")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;\ngoog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\\t\\n\\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};\ngoog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\\u0080"<=a&&"\\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\\r\\n|\\r|\\n)/g,"\\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\\xa0|\\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\\xa0|[ \\t]+/g," ")};\ngoog.string.collapseBreakingSpaces=function(a){return a.replace(/[\\t\\r\\n ]+/g," ").replace(/^[\\t\\r\\n ]+|[\\t\\r\\n ]+$/g,"")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\\s\\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\\s\\xa0]+$/,"")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;\ngoog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g<f;g++){c=d[g];const h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\D+/g)};\ngoog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\\d+|\\.\\d+|\\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\\+/g," "))};goog.string.newLineToBr=goog.string.internal.newLineToBr;\ngoog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,"&#101;"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};\ngoog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};\ngoog.string.unescapeEntitiesUsingDom_=function(a,b){const c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":\'"\'};let d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;"#"==f.charAt(0)&&(f=Number("0"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),\ne+" ")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return\'"\';default:return"#"!=c.charAt(0)||(c=Number("0"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};\ngoog.string.preserveSpaces=function(a){return a.replace(/(^|[\\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;d<c;d++){const e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};\ngoog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\\x00":"\\\\0","\\b":"\\\\b","\\f":"\\\\f","\\n":"\\\\n","\\r":"\\\\r","\\t":"\\\\t","\\v":"\\\\x0B",\'"\':\'\\\\"\',"\\\\":"\\\\\\\\","<":"\\\\u003C"};goog.string.jsEscapeCache_={"\'":"\\\\\'"};\ngoog.string.quote=function(a){a=String(a);const b=[\'"\'];for(let c=0;c<a.length;c++){const d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push(\'"\');return b.join("")};goog.string.escapeString=function(a){const b=[];for(let c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};\ngoog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];let b;const c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\\\x",16>c||256<c)b+="0"}else b="\\\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains;\ngoog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b<a.length&&0<c&&(d=a.slice(0,b)+a.slice(b+c));return d};goog.string.remove=function(a,b){return a.replace(b,"")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,"")};\ngoog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,c.replace(/\\$/g,"$$$$"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,"\\\\$1").replace(/\\x08/g,"\\\\x08")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};\ngoog.string.padNumber=function(a,b,c){if(!Number.isFinite(a))return String(a);a=void 0!==c?a.toFixed(c):String(a);c=a.indexOf(".");-1===c&&(c=a.length);const d="-"===a[0]?"-":"";d&&(a=a.substring(1));return d+goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};\ngoog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){let b=0;for(let c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};\ngoog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};goog.string.toTitleCase=function(a,b){b="string"===typeof b?goog.string.regExpEscape(b):"\\\\s";return a.replace(new RegExp("(^"+(b?"|["+b+"]+":"")+")([a-z])","g"),function(c,d,e){return d+e.toUpperCase()})};\ngoog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return"string"===typeof a?/^\\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};\ngoog.string.lastComponent=function(a,b){if(b)"string"==typeof b&&(b=[b]);else return a;let c=-1;for(let d=0;d<b.length;d++){if(""==b[d])continue;const e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};\ngoog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.string.path={};goog.string.path.baseName=function(a){const b=a.lastIndexOf("/")+1;return a.slice(b)};goog.string.path.basename=goog.string.path.baseName;goog.string.path.dirname=function(a){const b=a.lastIndexOf("/")+1;a=a.slice(0,b);/^\\/+$/.test(a)||(a=a.replace(/\\/+$/,""));return a};goog.string.path.extension=function(a){a=goog.string.path.baseName(a).replace(/\\.+/g,".");const b=a.lastIndexOf(".");return 0>=b?"":a.slice(b+1)};\ngoog.string.path.join=function(a){let b=arguments[0];for(let c=1;c<arguments.length;c++){const d=arguments[c];b=goog.string.startsWith(d,"/")?d:""==b||goog.string.endsWith(b,"/")?b+d:b+("/"+d)}return b};\ngoog.string.path.normalizePath=function(a){if(""==a)return".";let b="";goog.string.startsWith(a,"/")&&(b="/",goog.string.startsWith(a,"//")&&!goog.string.startsWith(a,"///")&&(b="//"));a=a.split("/");const c=[];for(let d=0;d<a.length;d++){const e=a[d];""!=e&&"."!=e&&(".."!=e||!b&&!c.length||".."==module$contents$goog$array_peek(c)?c.push(e):c.pop())}return b+c.join("/")||"."};goog.string.path.split=function(a){const b=goog.string.path.dirname(a);a=goog.string.path.baseName(a);return[b,a]};const DEBUG_WASI$$module$src$filesystem$wasi=!1;function assertLeadingSlash$$module$src$filesystem$wasi(a){return/^\\//g.test(a)?a:`/${a}`}function removeLeadingSlash$$module$src$filesystem$wasi(a){return a.replace(/^\\//g,"")}function shouldOpenReader$$module$src$filesystem$wasi(a){return(a&(WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants))!==goog.global.BigInt(0)}\nfunction performanceNowPoly$$module$src$filesystem$wasi(){if("undefined"===typeof performance||"undefined"===typeof performance.now){const a=Date.now();return Date.now()-a}return performance.now()}function concatUint8Arrays$$module$src$filesystem$wasi(a){var b=a.reduce((d,e)=>d+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}}\nconst WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:"/dev/stdin",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:"/dev/stdout",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:"/dev/stderr",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:"/",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0};\nWASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)"function"===c.kind&&c.module.startsWith("wasi_")&&("object"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b};\nWASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a};\nWASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START);\ndefault:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("clock_time_get",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_advise",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_allocate",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_close",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_datasync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_get",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants),\n!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_flags",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_rights",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_get",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b,\ngoog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_size",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_times",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_pread",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_dir_name",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_get",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log("fd_pwrite",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_read",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((m,p)=>m+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,l=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,"\\x00"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;f<c;f++){var n=b+8*f;const m=g.getUint32(n,!0);n=g.getUint32(n+\n4,!0);l||(k+=n,Array.from({length:n},(p,q)=>q).reduce((p,q)=>{if(l)return p;const [B,r]=p;let v=p=0,D=!1,y=0,u;if(0===q)for(;!D;)u=e[p]?e[p].byteLength:0,y<=h&&u+y>h?(D=!0,v=h-y):(y+=u,p+=1);else p=B,v=r;e[p]?(g.setUint8(m+q,e[p][v]),v+1>=e[p].byteLength?(p=B+1,v=0):v+=1):(g.setUint8(m+q,"\\x00"),h+=q,l=!0);return[p,v]},[0,0]),l||(h+=n))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error("Reading non existent file",a,this.fd[a])};\nWASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_readdir",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_renumber",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_seek",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break;\ncase WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_sync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_tell",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_write",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0<this.fd[a].buffers.length?[concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)]:this.fd[a].buffers;let f=0;for(let k=0;k<c;k++){var g=b+8*k,h=e.getUint32(g,!0);g=e.getUint32(g+4,!0);f+=g;h=new Uint8Array(e.buffer,h,g);if(this.fd[a].buffers[0]&&\nthis.fd[a].seekPos<this.fd[a].buffers[0].length){const l=Number(this.fd[a].seekPos);h.slice(0,g).forEach((n,m)=>{this.fd[a].buffers[0][l+m]=n})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_create_directory",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_get",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_set_times",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_link",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_open",a,b,c,d,e,f,g,h,k,arguments);const l=this.getMemory();var n=(this.fd[a]||{path:"/"}).path,m=new Uint8Array(l.buffer,c,d);m=decoder$$module$src$utils$text_encoders.decode(m);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?"":n,m)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(";; opening path",\np,"withREader",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith("/..")||"/._"===p||"/.AppleDouble"===p)return WASI_EBADF$$module$src$filesystem$constants;(n=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?m=n.fd:(m=this.fd.length,this.fd[m]={fd:m});this.fd[m]={...this.fd[m],path:p,type:"file",seekPos:goog.global.BigInt(0),buffers:n?this.fd[m].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("should open a read handle for",\np);l.setUint32(k,m,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_readlink",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_remove_directory",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_rename",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_symlink",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3<a&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_unlink_file",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.poll_oneoff=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("poll_oneoff",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.proc_exit=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_exit",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.proc_raise=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_raise",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.random_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("random_get",a,b);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sched_yield=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sched_yield",arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.sock_recv=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_recv",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sock_send=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_send",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};\nWASI$$module$src$filesystem$wasi.prototype.sock_shutdown=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_shutdown",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.findBuffers=function(a){const b=Object.values(this.fd).find(({path:c})=>c===a);return[b&&b.buffers,b.fd]};\nWASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+"/").replace("//","/"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\\//g.test(d.replace(b,""))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,""))).filter(d=>!!d)};\nWASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]};\nWASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can\'t append to non-existing file ${a}`)};\nWASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn\'t been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)};\nWASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)};\nWASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0<c.length?console.warn(`mkdir: path ${a} already exists`):(a=Object.keys(this.fd).length,this.fd[a]={fd:a,path:b})};var module$src$filesystem$wasi={};module$src$filesystem$wasi.WASI=WASI$$module$src$filesystem$wasi;function clearArray$$module$src$utils$clear_array(a){for(;0<a.length;)a.pop()}var module$src$utils$clear_array={};module$src$utils$clear_array.clearArray=clearArray$$module$src$utils$clear_array;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};\nvar LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b="log_with_warnings"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error("Invalid log level "+b+" allowed: "+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=\nfunction(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e="log_with_warnings"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>\nmodule$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split("{}");for(var k=[f.mockConsole,"%c"+b,c],l=0;l<h.length;l++)k.push(h[l]),void 0!==g[l]&&k.push(g[l]);if(h.length-1!==g.length)if("log_with_warnings"===f.logLevel)f.mockConsole.error("MissMatch amount of arguments");else if("log_raise_error"===f.logLevel)throw Error("MissMatch amount of arguments");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,\nc){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return"color: white; background-color: "+b+"; padding: 2px 6px; border-radius: 2px; font-size: 10px"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^\nd>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b="");b=a.getHash(b);for(var c="#",d=0;3>d;d++)c+=("00"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,"trace"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,"debug"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,\n"info"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,"warn"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,"error")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;\nconst isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};\nlogSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;\nmodule$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;\nmodule$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const CompressionMethod$$module$src$zlib$zlib={DEFLATE:8,RESERVED:15};var module$src$zlib$zlib={};module$src$zlib$zlib.CompressionMethod=CompressionMethod$$module$src$zlib$zlib;/*\n zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */\nfunction Huffman$$module$src$zlib$huffman(a){const b=a.length;let c=0,d=Number.POSITIVE_INFINITY,e,f,g,h;let k,l;for(k=0;k<b;++k)a[k]>c&&(c=a[k]),a[k]<d&&(d=a[k]);const n=1<<c,m=new Uint32Array(n);e=1;f=0;for(g=2;e<=c;){for(k=0;k<b;++k)if(a[k]===e){h=0;var p=f;for(l=0;l<e;++l)h=h<<1|p&1,p>>=1;p=e<<16|k;for(l=h;l<n;l+=g)m[l]=p;++f}++e;f<<=1;g<<=1}return[m,c,d]}var module$src$zlib$huffman={};module$src$zlib$huffman.Huffman=Huffman$$module$src$zlib$huffman;const ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate=32768;\nfunction RawInflate$$module$src$zlib$rawinflate(a,b){this.blocks=[];this.bufferSize=ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate;this.bitsbuflen=this.bitsbuf=this.ip=this.totalpos=0;this.input=new Uint8Array(a);this.bfinal=!1;this.bufferType=RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE;this.resize=!1;if(b||!(b={}))b.index&&(this.ip=b.index),b.bufferSize&&(this.bufferSize=b.bufferSize),b.bufferType&&(this.bufferType=b.bufferType),b.resize&&(this.resize=b.resize);switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.op=\nRawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;this.output=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength+this.bufferSize+RawInflate$$module$src$zlib$rawinflate.MaxCopyLength);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.op=0;this.output=new Uint8Array(this.bufferSize);break;default:throw Error("invalid inflate mode");}}RawInflate$$module$src$zlib$rawinflate.BufferType={BLOCK:0,ADAPTIVE:1};\nRawInflate$$module$src$zlib$rawinflate.prototype.decompress=function(){for(;!this.bfinal;)this.parseBlock();switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:return this.concatBufferBlock();case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:return this.concatBufferDynamic();default:throw Error("invalid inflate mode");}};RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength=32768;RawInflate$$module$src$zlib$rawinflate.MaxCopyLength=258;\nRawInflate$$module$src$zlib$rawinflate.Order=function(a){return new Uint16Array(a)}([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);RawInflate$$module$src$zlib$rawinflate.LengthCodeTable=function(a){return new Uint16Array(a)}([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]);RawInflate$$module$src$zlib$rawinflate.LengthExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]);\nRawInflate$$module$src$zlib$rawinflate.DistCodeTable=function(a){return new Uint16Array(a)}([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);RawInflate$$module$src$zlib$rawinflate.DistExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\nRawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable=function(a){return a}(function(){const a=new Uint8Array(288);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=143>=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=5;return Huffman$$module$src$zlib$huffman(a)}());\nRawInflate$$module$src$zlib$rawinflate.prototype.parseBlock=function(){let a=this.readBits(3);a&1&&(this.bfinal=!0);a>>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error("unknown BTYPE: "+a);}};\nRawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error("input buffer is broken");for(;c<a;)b|=d[e++]<<c,c+=8;this.bitsbuf=b>>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<<a)-1};\nRawInflate$$module$src$zlib$rawinflate.prototype.readCodeByTable=function(a){let b=this.bitsbuf,c=this.bitsbuflen;var d=this.input;let e=this.ip;var f=d.length;const g=a[0];for(a=a[1];c<a&&!(e>=f);)b|=d[e++]<<c,c+=8;d=g[b&(1<<a)-1];f=d>>>16;if(f>c)throw Error("invalid code length: "+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error("invalid uncompressed block header: LEN");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error("invalid uncompressed block header: NLEN");e=a[b++]|a[b++]<<8;if(f===~e)throw Error("invalid uncompressed block header: length verify");if(b+f>a.length)throw Error("input buffer is broken");\nswitch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error("invalid inflate mode");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);\nbreak;default:throw Error("invalid inflate mode");}};\nRawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;e<c;++e)d[RawInflate$$module$src$zlib$rawinflate.Order[e]]=this.readBits(3);d=Huffman$$module$src$zlib$huffman(d);c=new Uint8Array(a+b);e=0;for(b=a+b;e<b;){var f=this.readCodeByTable(d);switch(f){case 16:for(f=3+this.readBits(2);f--;)c[e++]=g;break;case 17:for(f=\n3+this.readBits(3);f--;)c[e++]=0;var g=0;break;case 18:for(f=11+this.readBits(7);f--;)c[e++]=0;g=0;break;default:g=c[e++]=f}}g=Huffman$$module$src$zlib$huffman(c.subarray(0,a));a=Huffman$$module$src$zlib$huffman(c.subarray(a));switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(g,a);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(g,a);break;default:throw Error("invalid inflate mode");}};\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanBlock=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;const e=c.length-RawInflate$$module$src$zlib$rawinflate.MaxCopyLength;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,n=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,m=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=\ne&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=n[f],0<m[f]&&(g+=this.readBits(m[f])),d>=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\nRawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,l=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,n=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,m=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]=\nf;else for(f-=257,h=k[f],0<l[f]&&(h+=this.readBits(l[f])),f=this.readCodeByTable(b),g=n[f],0<m[f]&&(g+=this.readBits(m[f])),d+h>e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};\nRawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;\nreturn c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&("number"===typeof a.fixRatio&&(b=a.fixRatio),"number"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a<d.length?d.length+a:d.length<<1):a=d.length*b;a=new Uint8Array(a);a.set(d);return this.output=a};\nRawInflate$$module$src$zlib$rawinflate.prototype.concatBufferBlock=function(){let a=0;const b=this.output,c=this.blocks;let d;const e=new Uint8Array(this.totalpos+(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));let f,g,h,k;if(0===c.length)return this.output.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,this.op);f=0;for(g=c.length;f<g;++f)for(d=c[f],h=0,k=d.length;h<k;++h)e[a++]=d[h];f=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;for(g=this.op;f<\ng;++f)e[a++]=b[f];this.blocks=[];return this.buffer=e};RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferDynamic=function(){let a;const b=this.op;this.resize?(a=new Uint8Array(b),a.set(this.output.subarray(0,b))):a=this.output.subarray(0,b);return this.buffer=a};var module$src$zlib$rawinflate={};module$src$zlib$rawinflate.RawInflate=RawInflate$$module$src$zlib$rawinflate;function Util$$module$src$zlib$util(){}Util$$module$src$zlib$util.stringToByteArray=function(a){a=[...a];let b,c;b=0;for(c=a.length;b<c;b++)a[b]=(a[b].charPointAt(0)&255)>>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){"string"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0<d;){e=d>Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0};\nAdler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error("unsupported compression method");}if(0!==((c<<8)+d)%31)throw Error("invalid fcheck flag:"+((c<<8)+d)%31);if(d&32)throw Error("fdict flag is not supported");this.rawinflate=\nnew RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType;\nInflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error("invalid adler-32 checksum");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\\n$/g.test(d);e=/^\\n/g.test(d);var k=d.split("\\n").filter(n=>0<n.length),l=[];if(0===k.length&&h||e)l.push(c.join("")),clearArray$$module$src$utils$clear_array(c);k.forEach((n,m)=>{m+1===k.length?h?0===m?(l.push(c.join("")+n),\nclearArray$$module$src$utils$clear_array(c)):l.push(n):c.push(n):0===m?(l.push(c.join("")+n),clearArray$$module$src$utils$clear_array(c)):l.push(n)});l.forEach(n=>{n.replace(/(\\r\\n|\\n|\\r)/gm,"")&&b.post({log:n})})}},assertPluginExports$$module$src$module=a=>{if(a&&"object"===typeof a&&"object"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,"A csound plugin turns out to be neither a plugin, opcode or module.\\nPerhaps csdl.h or module.h wasn\'t imported correctly?");\nreturn!1}console.error("A csound plugin didn\'t export __wasm_call_ctors.\\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors");return!1}console.error("Error instantiating a csound plugin, instance and/or export is missing!");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let l=0,n=1;for(;;){const m=a[c++];l+=(m&127)*n;n*=128;if(!(m&128))break}return l}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error("Wasm magic number is missing!");\nif(0!==a[8])return logWasmModule$$module$src$logger("Dylink section wasn\'t found in wasm binary, assuming static wasm."),"static";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]==="d".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="y".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="l".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="i".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="n".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="k".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===\n".".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="0".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory,\nstreamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]};\nvar $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{"/":"/"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if("static"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(u,z)=>{u=await u;\nlet C,A;try{C=new Uint8Array(z),A=getBinaryHeaderData$$module$src$module(C)}catch(G){console.error("Error in plugin",G)}A&&u.push({headerData:A,wasmPluginBytes:C});return u},[]);var l=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((u,{headerData:z})=>"static"===z?0:u+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+l;const n=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),m=new WebAssembly.Table({initial:k+\n1,element:"anyfunc"});e.setMemory(n);const p=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);l=new WebAssembly.Global({value:"i32",mutable:!1},l);const q=new WebAssembly.Global({value:"i32",mutable:!1},1),B=new WebAssembly.Global({value:"i32",mutable:!0},0);a=await WebAssembly.compile(a);const r=e.getImports(a);let v=[],D=d;r.env=r.env||{};r.env.memory=n;r.env.__indirect_function_table=\nm;r.env.__stack_pointer=p;r.env.__memory_base=l;r.env.__table_base=q;r.env.csoundLoadModules=u=>{v.forEach(z=>{void 0===y?console.error("csound-wasm internal: timing problem detected!"):dlinit$$module$src$dlinit(y,z,m,u)});return 0};r.env._ZTH5errno=function(){};r.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:n,messagePort:c,streamBuffer:[]});r.env.printDebugCallback=(u,z)=>{u=new Uint8Array(n.buffer,u,z);u=uint2String$$module$src$utils$text_encoders(u);console.log(u)};\nr["GOT.mem"]=r["GOT.mem"]||{};r["GOT.mem"].__heap_base=f;r["GOT.func"]=r["GOT.func"]||{};const y=await WebAssembly.instantiate(a,r);c=Object.assign({},y.exports);a={};a.exports=Object.assign(c,{memory:n});v=await b.reduce(async(u,{headerData:z,wasmPluginBytes:C})=>{u=await u;try{const {memorySize:A,memoryAlign:G,tableSize:F}=z,I=await WebAssembly.compile(C),t=e.getImports(I),E=new WebAssembly.Global({value:"i32",mutable:!1},D*PAGE_SIZE$$module$src$module);m.grow(F);t.env=Object.assign({},t.env);t.env.memory=\nn;t.env.__indirect_function_table=m;t.env.__memory_base=E;t.env.__stack_pointer=p;t.env.__table_base=q;t.env.csoundLoadModules=B;delete t.env.csoundWasiJsMessageCallback;D+=Math.ceil((A+G)/PAGE_SIZE$$module$src$module);const x=await WebAssembly.instantiate(I,t);assertPluginExports$$module$src$module(x)&&(x.exports.__wasm_call_ctors(),u.push(x))}catch(A){console.error("Error while compiling csound-plugin",A)}return u},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]},\nmodule$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;const handleCsoundStart$$module$src$workers$common_utils=(a,b,c,d,e)=>f=>{const {csound:g}=f,h=1===b.csoundShouldDaemonize(g);h&&(b.csoundSetOption(g,"--daemon"),b.csoundSetOption(g,"-odac"));const k=b.csoundStart(g),l=b.csoundGetOutputName(g)||"test.wav";logCommonUtils$$module$src$logger(`handleCsoundStart: actual csoundStart result ${k}, outputName: ${l}`)();0!==k&&a.post(`error: csoundStart failed while trying to render ${l},`+" look out for errors in options and syntax");setTimeout(()=>{const n=\nb._isRequestingRtMidiInput(g);if(h||n||l.includes("dac"))d(f);else if(a.broadcastPlayState("renderStarted"),e)e(f);else for(;0===b.csoundPerformKsmps(g););},0);return k},instantiateAudioPacket$$module$src$workers$common_utils=(a,b)=>{const c=[];for(let d=0;d<a;d++)c.push(new Float64Array(b));return c},renderFunction$$module$src$workers$common_utils=({libraryCsound:a,workerMessagePort:b})=>async({csound:c})=>{const d=a.csoundGetKr(c);let e=0,f=0;for(;("renderStarted"===b.vanillaWorkerState||"renderStarted"===\nb.workerState)&&0===e;)e=a.csoundPerformKsmps(c),f+=1,"function"===typeof setTimeout&&0===e&&0===f%(2*d)&&await new Promise(g=>setTimeout(g,0));b.broadcastPlayState("renderEnded")};var module$src$workers$common_utils={};module$src$workers$common_utils.handleCsoundStart=handleCsoundStart$$module$src$workers$common_utils;module$src$workers$common_utils.instantiateAudioPacket=instantiateAudioPacket$$module$src$workers$common_utils;module$src$workers$common_utils.renderFunction=renderFunction$$module$src$workers$common_utils;const DEFAULT_BUFFER_LEN$$module$src$constants=128,MAX_CHANNELS$$module$src$constants=32,RING_BUFFER_SIZE$$module$src$constants=16384,MIDI_BUFFER_SIZE$$module$src$constants=1024,MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants=3,CALLBACK_DATA_BUFFER_SIZE$$module$src$constants=16384,initialSharedState$$module$src$constants=[0,4096,0,0,0,0,-1,-1,-1,-1,0,DEFAULT_BUFFER_LEN$$module$src$constants,0,0,0,0,0,0,0,0],AUDIO_STATE$$module$src$constants={CSOUND_LOCK:0,FRAMES_REQUESTED:1,IS_PERFORMING:2,IS_RENDERING:3,\nIS_PAUSED:4,STOP:5,SAMPLE_RATE:6,KSMPS:7,NCHNLS:8,NCHNLS_I:9,IS_REQUESTING_MIC:10,BUFFER_LEN:11,OUTPUT_READ_INDEX:12,OUTPUT_WRITE_INDEX:13,AVAIL_IN_BUFS:14,AVAIL_OUT_BUFS:15,IS_REQUESTING_RTMIDI:16,RTMIDI_INDEX:17,AVAIL_RTMIDI_EVENTS:18,HAS_PENDING_CALLBACKS:19},DATA_TYPE$$module$src$constants={NUMBER:0,STRING:1,FLOAT_32:2,FLOAT_64:3};var module$src$constants={};module$src$constants.AUDIO_STATE=AUDIO_STATE$$module$src$constants;module$src$constants.CALLBACK_DATA_BUFFER_SIZE=CALLBACK_DATA_BUFFER_SIZE$$module$src$constants;\nmodule$src$constants.DATA_TYPE=DATA_TYPE$$module$src$constants;module$src$constants.DEFAULT_BUFFER_LEN=DEFAULT_BUFFER_LEN$$module$src$constants;module$src$constants.MAX_CHANNELS=MAX_CHANNELS$$module$src$constants;module$src$constants.MIDI_BUFFER_PAYLOAD_SIZE=MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants;module$src$constants.MIDI_BUFFER_SIZE=MIDI_BUFFER_SIZE$$module$src$constants;module$src$constants.RING_BUFFER_SIZE=RING_BUFFER_SIZE$$module$src$constants;module$src$constants.initialSharedState=initialSharedState$$module$src$constants;let combined$$module$src$workers$sab_worker,pollPromise$$module$src$workers$sab_worker,unlockPromise$$module$src$workers$sab_worker;\nconst callUncloned$$module$src$workers$sab_worker=async(a,b)=>(a=combined$$module$src$workers$sab_worker.get(a))&&a.apply({},b||[]),sabCreateRealtimeAudioThread$$module$src$workers$sab_worker=({libraryCsound:a,callbacksRequest:b,releaseStop:c,releasePause:d,releaseResumed:e,wasm:f,workerMessagePort:g})=>async({audioStateBuffer:h,audioStreamIn:k,audioStreamOut:l,midiBuffer:n,csound:m})=>{const p=new Int32Array(h);initialSharedState$$module$src$constants.forEach((H,K)=>{Atomics.store(p,K,H)});h=a._isRequestingRtMidiInput(m);\nvar q=0===Atomics.load(p,AUDIO_STATE$$module$src$constants.NCHNLS_I)&&a.csoundGetInputName(m).includes("adc"),B=Atomics.load(p,AUDIO_STATE$$module$src$constants.NCHNLS),r=Atomics.load(p,AUDIO_STATE$$module$src$constants.NCHNLS_I),v=Atomics.load(p,AUDIO_STATE$$module$src$constants.SAMPLE_RATE);-1<B&&a.csoundSetOption(m,`--nchnls=${B}`);-1<r&&a.csoundSetOption(m,`--nchnls_i=${r}`);-1<v&&a.csoundSetOption(m,`--sr=${v}`);const D=a.csoundGetNchnls(m),y=r||q?a.csoundGetNchnlsInput(m):0,u=Atomics.load(p,\nAUDIO_STATE$$module$src$constants.SAMPLE_RATE)||a.csoundGetSr(m);Atomics.store(p,AUDIO_STATE$$module$src$constants.NCHNLS,D);Atomics.store(p,AUDIO_STATE$$module$src$constants.NCHNLS_I,y);Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_REQUESTING_MIC,q?1:0);Atomics.store(p,AUDIO_STATE$$module$src$constants.SAMPLE_RATE,a.csoundGetSr(m));Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_REQUESTING_RTMIDI,h);q=a.csoundGetKsmps(m);Atomics.store(p,AUDIO_STATE$$module$src$constants.KSMPS,q);const z=\na.csoundGet0dBFS(m);B=[];r=[];for(v=0;v<D;++v)B.push(new Float64Array(l,RING_BUFFER_SIZE$$module$src$constants*v,RING_BUFFER_SIZE$$module$src$constants));for(l=0;l<y;++l)r.push(new Float64Array(k,RING_BUFFER_SIZE$$module$src$constants*l,RING_BUFFER_SIZE$$module$src$constants));g.broadcastPlayState("realtimePerformanceStarted");Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_PERFORMING,1);logSABWorker$$module$src$logger("Atomic.wait started (thread is now locked)\\n")();k=!0;let C=0,A=0,G=0,F=\n0,I;l=(H=!1)=>1===Atomics.load(p,AUDIO_STATE$$module$src$constants.STOP)||1!==Atomics.load(p,AUDIO_STATE$$module$src$constants.IS_PERFORMING)||0!==C||H?(0===C&&(logSABWorker$$module$src$logger("calling csoundStop and one performKsmps to trigger endof logs")(),a.csoundStop(m),a.csoundPerformKsmps(m)),logSABWorker$$module$src$logger("triggering realtimePerformanceEnded event")(),g.broadcastPlayState("realtimePerformanceEnded"),logSABWorker$$module$src$logger("End of realtimePerformance loop!")(),c(),\n!0):!1;for(v=!0;!v||(I=Atomics.wait(p,AUDIO_STATE$$module$src$constants.CSOUND_LOCK,1,1E4));){if("timed-out"===I){l(!0);break}k&&(k=!1,await new Promise(w=>{unlockPromise$$module$src$workers$sab_worker=w;g.broadcastSabUnlocked()}),logSABWorker$$module$src$logger("Atomic.wait unlocked, performance started")());1===Atomics.load(p,AUDIO_STATE$$module$src$constants.IS_PAUSED)&&(await new Promise(w=>setTimeout(w,0)),d(),await new Promise(w=>setTimeout(w,0)),Atomics.wait(p,AUDIO_STATE$$module$src$constants.IS_PAUSED,\n0),await new Promise(w=>setTimeout(w,0)),e(),await new Promise(w=>setTimeout(w,0)));if(l())break;if(h){var t=Atomics.load(p,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS);if(0<t){var E=Atomics.load(p,AUDIO_STATE$$module$src$constants.RTMIDI_INDEX),x=E;for(let w=0;w<t;w++){x=(E+MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants*w)%MIDI_BUFFER_SIZE$$module$src$constants;const J=Atomics.load(n,x),L=Atomics.load(n,x+1),M=Atomics.load(n,x+2);a.csoundPushMidiMessage(m,J,L,M)}Atomics.store(p,AUDIO_STATE$$module$src$constants.RTMIDI_INDEX,\n(x+1)%MIDI_BUFFER_SIZE$$module$src$constants);Atomics.sub(p,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS,t)}}const H=Atomics.load(p,AUDIO_STATE$$module$src$constants.BUFFER_LEN);t=Atomics.load(p,AUDIO_STATE$$module$src$constants.AVAIL_IN_BUFS)>=H;E=a.csoundGetSpin(m);x=a.csoundGetSpout(m);const K=t&&new Float64Array(f.wasi.memory.buffer,E,q*y),N=new Float64Array(f.wasi.memory.buffer,x,q*D);E=Atomics.load(p,AUDIO_STATE$$module$src$constants.FRAMES_REQUESTED);for(x=0;x<E;x++){if(0===A)if(0===\nC)C=a.csoundPerformKsmps(m),!v&&Atomics.add(p,AUDIO_STATE$$module$src$constants.AVAIL_OUT_BUFS,q),v=!1;else if(0!==C){Atomics.store(p,AUDIO_STATE$$module$src$constants.IS_PERFORMING,0);l(!0);return}B.forEach((w,J)=>{w[F]=(N[A*D+J]||0)/z});t&&(r.forEach((w,J)=>{K[A*y+J]=(w[G]||0)*z}),G=t&&(G+1)%RING_BUFFER_SIZE$$module$src$constants);F=(F+1)%RING_BUFFER_SIZE$$module$src$constants;A=(A+1)%q}t&&Atomics.sub(p,AUDIO_STATE$$module$src$constants.AVAIL_IN_BUFS,E);1===Atomics.compareExchange(p,AUDIO_STATE$$module$src$constants.HAS_PENDING_CALLBACKS,\n1,0)&&await new Promise(w=>{pollPromise$$module$src$workers$sab_worker=w;b()});if(l())break;t=Atomics.load(p,AUDIO_STATE$$module$src$constants.OUTPUT_READ_INDEX);t=Math.max(2048-(F<t?F+RING_BUFFER_SIZE$$module$src$constants-t:F-t),0);Atomics.store(p,AUDIO_STATE$$module$src$constants.FRAMES_REQUESTED,t);0===t&&await new Promise(w=>setTimeout(w,H/u*1E3))}},initMessagePort$$module$src$workers$sab_worker=({port:a})=>{const b=new $jscompDefaultExport$$module$src$utils$message_port_state;b.post=c=>a.postMessage({log:c});\nb.broadcastPlayState=c=>a.postMessage({playStateChange:c});b.broadcastSabUnlocked=()=>a.postMessage({sabWorker:"unlocked"});b.ready=!0;return b},initCallbackReplyPort$$module$src$workers$sab_worker=({port:a})=>{a.addEventListener("message",b=>{if(b.data&&b.data.unlock)b=unlockPromise$$module$src$workers$sab_worker,unlockPromise$$module$src$workers$sab_worker=void 0,b&&b();else{b=b.data;var c=b.reduce((d,{id:e,argumentz:f,apiKey:g})=>{try{const h=combined$$module$src$workers$sab_worker.get(g),k=h&&\nh.apply({},f||[]);d.push({id:e,answer:k})}catch(h){throw Error(h);}return d},[]);a.postMessage(c);c=pollPromise$$module$src$workers$sab_worker;pollPromise$$module$src$workers$sab_worker=void 0;c&&c(b)}});a.start()},renderFunction$$module$src$workers$sab_worker=({libraryCsound:a,callbacksRequest:b,releaseStop:c,releasePause:d,releaseResumed:e,workerMessagePort:f})=>async({audioStateBuffer:g,csound:h})=>{g=new Int32Array(g);Atomics.store(g,AUDIO_STATE$$module$src$constants.IS_RENDERING,1);for(f.broadcastSabUnlocked();1!==\nAtomics.load(g,AUDIO_STATE$$module$src$constants.STOP)&&0===a.csoundPerformKsmps(h);)1===Atomics.load(g,AUDIO_STATE$$module$src$constants.IS_PAUSED)&&(d(),Atomics.wait(g,AUDIO_STATE$$module$src$constants.IS_PAUSED,0),e()),1===Atomics.compareExchange(g,AUDIO_STATE$$module$src$constants.HAS_PENDING_CALLBACKS,1,0)&&await new Promise(k=>{pollPromise$$module$src$workers$sab_worker=k;b()});Atomics.store(g,AUDIO_STATE$$module$src$constants.IS_RENDERING,0);f.broadcastPlayState("renderEnded");c()},initialize$$module$src$workers$sab_worker=\nasync({wasmDataURI:a,withPlugins:b=[],messagePort:c,callbackPort:d})=>{logSABWorker$$module$src$logger("initializing SABWorker and WASM")();const e=initMessagePort$$module$src$workers$sab_worker({port:c}),f=()=>d.postMessage("poll"),g=()=>d.postMessage("releaseStop"),h=()=>d.postMessage("releasePause"),k=()=>d.postMessage("releaseResumed");initCallbackReplyPort$$module$src$workers$sab_worker({port:d});const [l,n]=await $jscompDefaultExport$$module$src$module({wasmDataURI:a,withPlugins:b,messagePort:e});\nl.wasi=n;const m=$jscompDefaultExport$$module$src$libcsound(l);a=pipe$$module$node_modules$rambda$dist$rambda_mjs(assoc$$module$node_modules$rambda$dist$rambda_mjs("csoundStart",(p,q)=>handleCsoundStart$$module$src$workers$common_utils(e,m,n,sabCreateRealtimeAudioThread$$module$src$workers$sab_worker({libraryCsound:m,callbacksRequest:f,wasm:l,workerMessagePort:e,releaseStop:g,releasePause:h,releaseResumed:k}),renderFunction$$module$src$workers$sab_worker({libraryCsound:m,callbacksRequest:f,workerMessagePort:e,\nwasi:n,releaseStop:g,releasePause:h,releaseResumed:k}))(q)),assoc$$module$node_modules$rambda$dist$rambda_mjs("wasm",l))(m);combined$$module$src$workers$sab_worker=new Map(Object.entries(a));m.csoundInitialize(0);return m.csoundCreate()},sabWorker$$module$src$workers$sab_worker={initialize:initialize$$module$src$workers$sab_worker,callUncloned:callUncloned$$module$src$workers$sab_worker};\nexpose$$module$node_modules$comlink$dist$esm$comlink_mjs({initialize:sabWorker$$module$src$workers$sab_worker.initialize,callUncloned:sabWorker$$module$src$workers$sab_worker.callUncloned});var module$src$workers$sab_worker={};module$src$workers$sab_worker.sabWorker=sabWorker$$module$src$workers$sab_worker;}).call(this);\n//# sourceMappingURL=__compiled.sab.worker.js.map\n'])),
+module$dist$__compiled_sab_worker_inline={};module$dist$__compiled_sab_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_sab_worker_inline;class SharedArrayBufferMainThread$$module$src$mains$sab_main{constructor({audioContext:a,audioWorker:b,audioContextIsProvided:c,inputChannelCount:d,outputChannelCount:e}){this.hasSharedArrayBuffer=!0;this.ipcMessagePorts=new IPCMessagePorts$$module$src$mains$messages_main;this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.publicEvents=new PublicEventAPI$$module$src$events(this);b.ipcMessagePorts=this.ipcMessagePorts;this.audioContextIsProvided=c;this.audioWorker=b;this.audioWorker.onPlayStateChange=
+this.audioWorker.onPlayStateChange.bind(b);this.currentPlayState=this.csoundInstance=void 0;this.currentDerivedPlayState="stop";this.exportApi={};this.callbackId=0;this.callbackBuffer={};this.audioStateBuffer=new SharedArrayBuffer(initialSharedState$$module$src$constants.length*Int32Array.BYTES_PER_ELEMENT);this.audioStatePointer=new Int32Array(this.audioStateBuffer);c&&Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.SAMPLE_RATE,a.sampleRate);d&&Atomics.store(this.audioStatePointer,
+AUDIO_STATE$$module$src$constants.NCHNLS_I,d);e&&Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.NCHNLS,e);this.audioStreamIn=new SharedArrayBuffer(MAX_CHANNELS$$module$src$constants*RING_BUFFER_SIZE$$module$src$constants*Float64Array.BYTES_PER_ELEMENT);this.audioStreamOut=new SharedArrayBuffer(MAX_CHANNELS$$module$src$constants*RING_BUFFER_SIZE$$module$src$constants*Float64Array.BYTES_PER_ELEMENT);this.midiBufferSAB=new SharedArrayBuffer(MIDI_BUFFER_SIZE$$module$src$constants*
+MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants*Int32Array.BYTES_PER_ELEMENT);this.midiBuffer=new Int32Array(this.midiBufferSAB);this.onPlayStateChange=this.onPlayStateChange.bind(this);this.prepareRealtimePerformance=this.prepareRealtimePerformance.bind(this);logSABMain$$module$src$logger("SharedArrayBufferMainThread got constructed")()}async terminateInstance(){this.csoundWorker&&(this.csoundWorker.terminate(),delete this.csoundWorker);this.audioWorker&&this.audioWorker.terminateInstance&&(await this.audioWorker.terminateInstance(),
+delete this.audioWorker.terminateInstance);this.proxyPort&&(this.proxyPort[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),delete this.proxyPort);this.publicEvents&&this.publicEvents.terminateInstance();Object.keys(this.exportApi).forEach(a=>delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}get api(){return this.exportApi}handleMidiInput({data:[a,b,c]}){var d=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS);const e=Atomics.load(this.audioStatePointer,
+AUDIO_STATE$$module$src$constants.RTMIDI_INDEX);d=(d*MIDI_BUFFER_PAYLOAD_SIZE$$module$src$constants+e)%MIDI_BUFFER_SIZE$$module$src$constants;Atomics.store(this.midiBuffer,d,a);Atomics.store(this.midiBuffer,d+1,b);Atomics.store(this.midiBuffer,d+2,c);Atomics.add(this.audioStatePointer,AUDIO_STATE$$module$src$constants.AVAIL_RTMIDI_EVENTS,1)}async csoundPause(){if(this.eventPromises.isWaiting("pause"))return-1;this.eventPromises.createPausePromise();Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED,
+1);await this.eventPromises.waitForPause();this.onPlayStateChange("realtimePerformancePaused");return 0}async csoundResume(){1===Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED)&&1!==Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.STOP)&&1===Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PERFORMING)&&(Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED,0),Atomics.notify(this.audioStatePointer,
+AUDIO_STATE$$module$src$constants.IS_PAUSED),this.onPlayStateChange("realtimePerformanceResumed"))}async onPlayStateChange(a){if(void 0===this)console.log("Failed to announce playstatechange",a);else if(this.currentPlayState=a,this.publicEvents&&a){switch(a){case "realtimePerformanceStarted":logSABMain$$module$src$logger("event: realtimePerformanceStarted received, proceeding to call prepareRealtimePerformance")();try{await this.prepareRealtimePerformance()}catch(b){console.error(b)}break;case "realtimePerformanceEnded":this.eventPromises.createStopPromise();
+Object.values(this.callbackBuffer).forEach(({argumentz:b,apiKey:c,resolveCallback:d})=>this.proxyPort.callUncloned(c,b).then(d));this.callbackBuffer={};logSABMain$$module$src$logger("event: realtimePerformanceEnded received, beginning cleanup")();initialSharedState$$module$src$constants.forEach((b,c)=>{Atomics.store(this.audioStatePointer,c,b)});break;case "renderStarted":this.publicEvents.triggerRenderStarted(this);this.eventPromises.releaseStartPromise();break;case "renderEnded":logSABMain$$module$src$logger("event: renderEnded received, beginning cleanup")(),
+this.publicEvents.triggerRenderEnded(this),this.eventPromises&&this.eventPromises.releaseStopPromise()}try{await this.audioWorker.onPlayStateChange(a)}catch(b){console.error(b)}}}async prepareRealtimePerformance(){logSABMain$$module$src$logger("prepareRealtimePerformance")();const a=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.NCHNLS),b=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.NCHNLS_I);this.audioWorker.isRequestingInput=Atomics.load(this.audioStatePointer,
+AUDIO_STATE$$module$src$constants.IS_REQUESTING_MIC);this.audioWorker.isRequestingMidi=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_REQUESTING_RTMIDI);const c=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.KSMPS),d=Atomics.load(this.audioStatePointer,AUDIO_STATE$$module$src$constants.SAMPLE_RATE);this.audioWorker.ksmps=c;this.audioWorker.sampleRate=d;this.audioWorker.inputCount=b;this.audioWorker.outputsCount=a}async initialize({wasmDataURI:a,withPlugins:b}){b&&
+!isEmpty$$module$node_modules$rambda$dist$rambda_mjs(b)&&(b=await fetchPlugins$$module$src$utils(b));logSABMain$$module$src$logger("initialization: instantiate the SABWorker Thread")();const c=new Worker($jscompDefaultExport$$module$dist$__compiled_sab_worker_inline());this.csoundWorker=c;const d=this.audioStateBuffer,e=this.audioStatePointer,f=this.audioStreamIn,g=this.audioStreamOut,h=this.midiBuffer;logSABMain$$module$src$logger("providing the audioWorker a pointer to SABMain's instance")();this.audioWorker.csoundWorkerMain=
+this;logSABMain$$module$src$logger("adding message eventListeners for mainMessagePort and mainMessagePortAudio")();this.ipcMessagePorts.mainMessagePort.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePort.start();this.ipcMessagePorts.mainMessagePortAudio.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePortAudio.start();logSABMain$$module$src$logger("(postMessage) making a message channel from SABMain to SABWorker via workerMessagePort")();
+this.ipcMessagePorts.sabMainCallbackReply.addEventListener("message",m=>{switch(m.data){case "poll":this.ipcMessagePorts&&this.ipcMessagePorts.sabMainCallbackReply.postMessage(Object.keys(this.callbackBuffer).map(l=>({id:l,apiKey:this.callbackBuffer[l].apiKey,argumentz:this.callbackBuffer[l].argumentz})));break;case "releaseStop":this.onPlayStateChange("renderStarted"===this.currentPlayState?"renderEnded":"realtimePerformanceEnded");this.publicEvents&&this.publicEvents.triggerRealtimePerformanceEnded(this);
+this.eventPromises&&this.eventPromises.releaseStopPromise();break;case "releasePause":this.publicEvents.triggerRealtimePerformancePaused(this);this.eventPromises.releasePausePromise();break;case "releaseResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);this.eventPromises.releaseResumePromise();break;default:m.data.forEach(({id:l,answer:p})=>{this.callbackBuffer[l].resolveCallback(p);delete this.callbackBuffer[l]})}});this.ipcMessagePorts.sabMainCallbackReply.start();const k=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(c);
+a=a();this.proxyPort=k;const n=await k.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({wasmDataURI:a,wasmTransformerDataURI:this.wasmTransformerDataURI,messagePort:this.ipcMessagePorts.workerMessagePort,callbackPort:this.ipcMessagePorts.sabWorkerCallbackReply,withPlugins:b},[a,this.ipcMessagePorts.workerMessagePort,this.ipcMessagePorts.sabWorkerCallbackReply]));this.csoundInstance=n;this.ipcMessagePorts.mainMessagePort.start();this.ipcMessagePorts.mainMessagePortAudio.start();
+logSABMain$$module$src$logger("A proxy port from SABMain to SABWorker established")();this.exportApi.pause=this.csoundPause.bind(this);this.exportApi.resume=this.csoundResume.bind(this);this.exportApi.terminateInstance=this.terminateInstance.bind(this);this.exportApi.enableAudioInput=()=>console.warn("enableAudioInput was ignored: please use -iadc option before calling start with useWorker=true");this.exportApi.getNode=async()=>{const m=this.audioWorker.audioWorkletNode;return m?m:await new Promise(l=>
+{this.exportApi.once("onAudioNodeCreated",l)})};this.exportApi.getAudioContext=async()=>this.audioWorker.audioContext;this.exportApi=this.publicEvents.decorateAPI(this.exportApi);this.exportApi.addListener("message",console.log);for(const m of Object.keys(api$$module$src$libcsound)){const l=makeProxyCallback$$module$src$utils(k,n,m,this.currentPlayState),p=api$$module$src$libcsound[m];switch(m){case "csoundCreate":break;case "csoundStart":b=async function(){if(!n||"number"!==typeof n)return console.error("starting csound failed because csound instance wasn't created"),
+-1;if(this.eventPromises.isWaiting("start"))return-1;this.eventPromises.createStartPromise();const q=await l({audioStateBuffer:d,audioStreamIn:f,audioStreamOut:g,midiBuffer:h,csound:n});await this.eventPromises.waitForStart();this.ipcMessagePorts&&this.ipcMessagePorts.sabMainCallbackReply.postMessage({unlock:!0});return q};b.toString=()=>p.toString();this.exportApi.start=b.bind(this);break;case "csoundStop":b=async()=>{logSABMain$$module$src$logger(["Checking if it's safe to call stop:",stopableStates$$module$src$utils.has(this.currentPlayState),
+"currentPlayState is",this.currentPlayState].join("\n"))();return this.eventPromises.isWaiting("stop")?(logSABMain$$module$src$logger("already waiting to stop, doing nothing")(),-1):stopableStates$$module$src$utils.has(this.currentPlayState)?(logSABMain$$module$src$logger("Marking SAB's state to STOP")(),this.eventPromises.createStopPromise(),Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.STOP,1),logSABMain$$module$src$logger("Marking that performance is not running anymore (stops the audio too)")(),
+Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PERFORMING,0),"realtimePerformancePaused"===this.currentPlayState&&(Atomics.store(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED,0),Atomics.notify(this.audioStatePointer,AUDIO_STATE$$module$src$constants.IS_PAUSED)),"renderStarted"!==this.currentPlayState&&!Atomics.compareExchange(this.audioStatePointer,AUDIO_STATE$$module$src$constants.CSOUND_LOCK,0,1)&&Atomics.notify(this.audioStatePointer,AUDIO_STATE$$module$src$constants.CSOUND_LOCK),
+await this.eventPromises.waitForStop(),0):-1};this.exportApi.stop=b.bind(this);b.toString=()=>p.toString();break;case "csoundReset":b=async()=>{if(this.currentPlayState){if(this.eventPromises.isWaiting("reset"))return-1;stopableStates$$module$src$utils.has(this.currentPlayState)&&await this.exportApi.stop();this.ipcMessagePorts.restartAudioWorkerPorts();this.audioContextIsProvided||(await this.audioWorker.terminateInstance(),delete this.audioWorker.audioContext);return await l([])}};this.exportApi.reset=
+b.bind(this);b.toString=()=>p.toString();break;case "csoundPushMidiMessage":b=async(q=0,u=0,t=0)=>{this.handleMidiInput({data:[q,u,t]})};this.exportApi.midiMessage=b.bind(this);b.toString=()=>p.toString();break;case "fs":this.exportApi.fs={};Object.keys(p).forEach(q=>{const u=makeProxyCallback$$module$src$utils(k,n,q,this.currentPlayState);u.toString=()=>p[q].toString();this.exportApi.fs[q]=u});break;default:b=async(...q)=>{if("realtimePerformanceStarted"===this.currentPlayState||"renderStarted"===
+this.currentPlayState||this.eventPromises.isWaitingToStart()){const u=this.callbackId;this.callbackId+=1;const t=new Promise((x,r)=>{const y=setTimeout(()=>r(Error(`Worker timed out so ${csoundApiRename$$module$src$utils(m)}() wasn't called!`)),1E4);this.callbackBuffer[u]={resolveCallback:v=>{clearTimeout(y);x(v)},apiKey:m,argumentz:[n,...q]}});Atomics.compareExchange(e,AUDIO_STATE$$module$src$constants.HAS_PENDING_CALLBACKS,0,1);return await t}return await l.apply(void 0,q)},b.toString=()=>p.toString(),
+this.exportApi[csoundApiRename$$module$src$utils(m)]=b}}logSABMain$$module$src$logger("PUBLIC API Generated and stored")()}}var $jscompDefaultExport$$module$src$mains$sab_main=SharedArrayBufferMainThread$$module$src$mains$sab_main,module$src$mains$sab_main={};module$src$mains$sab_main.default=$jscompDefaultExport$$module$src$mains$sab_main;async function requestMidi$$module$src$utils$request_midi({onMidiMessage:a}){logMidiRequest$$module$src$logger("requesting for web-midi connection")();if(navigator&&navigator.requestMIDIAccess)try{const b=await navigator.requestMIDIAccess();if(b.inputs){const c=b.inputs.values();for(let d=c.next();d&&!d.done;d=c.next())logMidiRequest$$module$src$logger(`Connecting midi-input: ${d.value.name||"unkown"}`)(),d.value.onmidimessage=a}else logMidiRequest$$module$src$logger("no midi-device detected")()}catch(b){logMidiRequest$$module$src$logger("error while connecting web-midi: "+
+b)()}else logMidiRequest$$module$src$logger("no web-midi support found, midi-input will not work!")()}var module$src$utils$request_midi={};module$src$utils$request_midi.requestMidi=requestMidi$$module$src$utils$request_midi;var $jscompDefaultExport$$module$dist$__compiled_worklet_worker_inline=()=>"data:application/javascript;base64,bGV0IHNlbGYgPSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmO2dvb2cuZXhwb3J0UGF0aF89ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnNwbGl0KCIuIik7ZD1kfHxnb29nLmdsb2JhbDthWzBdaW4gZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkLmV4ZWNTY3JpcHR8fGQuZXhlY1NjcmlwdCgidmFyICIrYVswXSk7Zm9yKHZhciBlO2EubGVuZ3RoJiYoZT1hLnNoaWZ0KCkpOylpZihhLmxlbmd0aHx8dm9pZCAwPT09YilkPWRbZV0mJmRbZV0hPT1PYmplY3QucHJvdG90eXBlW2VdP2RbZV06ZFtlXT17fTtlbHNlIGlmKCFjJiZnb29nLmlzT2JqZWN0KGIpJiZnb29nLmlzT2JqZWN0KGRbZV0pKWZvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJihkW2VdW2ZdPWJbZl0pO2Vsc2UgZFtlXT1ifTsKZ29vZy5kZWZpbmU9ZnVuY3Rpb24oYSxiKXtpZighQ09NUElMRUQpe3ZhciBjPWdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTLGQ9Z29vZy5nbG9iYWwuQ0xPU1VSRV9ERUZJTkVTO2MmJnZvaWQgMD09PWMubm9kZVR5cGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpP2I9Y1thXTpkJiZ2b2lkIDA9PT1kLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxhKSYmKGI9ZFthXSl9cmV0dXJuIGJ9O2dvb2cuRkVBVFVSRVNFVF9ZRUFSPTIwMjA7Z29vZy5ERUJVRz0hMDtnb29nLkxPQ0FMRT0iZW4iO2dvb2cuZ2V0TG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuTE9DQUxFfTtnb29nLlRSVVNURURfU0lURT0hMDtnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRztnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITE7Cmdvb2cucHJvdmlkZT1mdW5jdGlvbihhKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuIik7aWYoIUNPTVBJTEVEJiZnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhhKX07Z29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGEsYixjKXtpZighQ09NUElMRUQpe2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV07Zm9yKHZhciBkPWE7KGQ9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIuIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGQpOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZF09ITB9Z29vZy5leHBvcnRQYXRoXyhhLGIsYyl9O2dvb2cuTk9OQ0VfUEFUVEVSTl89L15bXHcrL18tXStbPV17MCwyfSQvOwpnb29nLmdldFNjcmlwdE5vbmNlXz1mdW5jdGlvbihhKXthPShhfHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yJiZhLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKSkmJihhPWEubm9uY2V8fGEuZ2V0QXR0cmlidXRlKCJub25jZSIpKSYmZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KGEpP2E6IiJ9O2dvb2cuVkFMSURfTU9EVUxFX1JFXz0vXlthLXpBLVpfJF1bYS16QS1aMC05Ll8kXSokLzsKZ29vZy5tb2R1bGU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPT10eXBlb2YgYXx8IWF8fC0xPT1hLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pKXRocm93IEVycm9yKCJJbnZhbGlkIG1vZHVsZSBpZGVudGlmaWVyIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoIk1vZHVsZSAiK2ErIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS4iKTtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLiIpOwpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lPWE7aWYoIUNPTVBJTEVEKXtpZihnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV19fTtnb29nLm1vZHVsZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cubW9kdWxlLmdldEludGVybmFsXyhhKX07Z29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXJldHVybiBnb29nLmxvYWRlZE1vZHVsZXNfW2FdLmV4cG9ydHM7aWYoIWdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1thXSlyZXR1cm4gYT1nb29nLmdldE9iamVjdEJ5TmFtZShhKSxudWxsIT1hP2E6bnVsbH1yZXR1cm4gbnVsbH07Z29vZy5Nb2R1bGVUeXBlPXtFUzY6ImVzNiIsR09PRzoiZ29vZyJ9O2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7Cmdvb2cuaXNJbk1vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKXx8Z29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXygpfTtnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe3JldHVybiEhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5HT09HfTtnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5FUzYpcmV0dXJuITA7dmFyIGE9Z29vZy5nbG9iYWwuJGpzY29tcDtyZXR1cm4gYT8iZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRDdXJyZW50TW9kdWxlUGF0aD8hMTohIWEuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTohMX07Cmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ZnVuY3Rpb24oKXtpZighQ09NUElMRUQmJiFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGUiKTtpZighQ09NUElMRUQmJiFnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlLiIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9Owpnb29nLmRlY2xhcmVNb2R1bGVJZD1mdW5jdGlvbihhKXtpZighQ09NUElMRUQpe2lmKCFnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuIik7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGV4aXN0cy4nKTt9aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8pZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZT1hO2Vsc2V7dmFyIGI9Z29vZy5nbG9iYWwuJGpzY29tcDtpZighYnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGIuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSAiJysKYSsnIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuJyk7Yj1iLnJlcXVpcmUoYi5nZXRDdXJyZW50TW9kdWxlUGF0aCgpKTtnb29nLmxvYWRlZE1vZHVsZXNfW2FdPXtleHBvcnRzOmIsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmF9fX07Z29vZy5zZXRUZXN0T25seT1mdW5jdGlvbihhKXtpZihnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFKXRocm93IGE9YXx8IiIsRXJyb3IoIkltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCIrKGE/IjogIithOiIuIikpO307Z29vZy5mb3J3YXJkRGVjbGFyZT1mdW5jdGlvbihhKXt9O0NPTVBJTEVEfHwoZ29vZy5pc1Byb3ZpZGVkXz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNffHwhZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2FdJiZudWxsIT1nb29nLmdldE9iamVjdEJ5TmFtZShhKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXsiZ29vZy5tb2R1bGUiOiEwfSk7Cmdvb2cuZ2V0T2JqZWN0QnlOYW1lPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxnb29nLmdsb2JhbDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sbnVsbD09YilyZXR1cm4gbnVsbDtyZXR1cm4gYn07Z29vZy5hZGREZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQpeyFDT01QSUxFRCYmZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCYmZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShhLGIsYyxkKX07Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSPSEwO2dvb2cubG9nVG9Db25zb2xlXz1mdW5jdGlvbihhKXtnb29nLmdsb2JhbC5jb25zb2xlJiZnb29nLmdsb2JhbC5jb25zb2xlLmVycm9yKGEpfTsKZ29vZy5yZXF1aXJlPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSJiZnb29nLmRlYnVnTG9hZGVyXy5yZXF1ZXN0ZWQoYSk7aWYoZ29vZy5pc1Byb3ZpZGVkXyhhKSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXJldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oYSl9ZWxzZSBpZihnb29nLkVOQUJMRV9ERUJVR19MT0FERVIpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7dHJ5e2dvb2cuZGVidWdMb2FkZXJfLmxvYWRfKGEpfWZpbmFsbHl7Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89Yn19cmV0dXJuIG51bGx9fTtnb29nLnJlcXVpcmVUeXBlPWZ1bmN0aW9uKGEpe3JldHVybnt9fTtnb29nLmJhc2VQYXRoPSIiO2dvb2cuYWJzdHJhY3RNZXRob2Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigidW5pbXBsZW1lbnRlZCBhYnN0cmFjdCBtZXRob2QiKTt9Owpnb29nLmFkZFNpbmdsZXRvbkdldHRlcj1mdW5jdGlvbihhKXthLmluc3RhbmNlXz12b2lkIDA7YS5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe2lmKGEuaW5zdGFuY2VfKXJldHVybiBhLmluc3RhbmNlXztnb29nLkRFQlVHJiYoZ29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zX1tnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfLmxlbmd0aF09YSk7cmV0dXJuIGEuaW5zdGFuY2VfPW5ldyBhfX07Z29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zXz1bXTtnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUw9ITA7Z29vZy5TRUFMX01PRFVMRV9FWFBPUlRTPWdvb2cuREVCVUc7Z29vZy5sb2FkZWRNb2R1bGVzXz17fTtnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEPSFDT01QSUxFRCYmZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSO2dvb2cuVFJBTlNQSUxFPSJkZXRlY3QiO2dvb2cuQVNTVU1FX0VTX01PRFVMRVNfVFJBTlNQSUxFRD0hMTtnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU9Imdvb2ciOwpnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbDsKZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZToiIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExLHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkdPT0d9O3ZhciBjPXt9LGQ9YztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpZD1hLmNhbGwodm9pZCAwLGQpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSlkPWdvb2cubG9hZE1vZHVsZUZyb21Tb3VyY2VfLmNhbGwodm9pZCAwLGQsYSk7ZWxzZSB0aHJvdyBFcnJvcigiSW52YWxpZCBtb2R1bGUgZGVmaW5pdGlvbiIpO3ZhciBlPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7aWYoInN0cmluZyI9PT10eXBlb2YgZSYmZSlnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlLGQsYyE9PWQpOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmCk9iamVjdC5zZWFsJiYib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJk9iamVjdC5zZWFsKGQpLGdvb2cubG9hZGVkTW9kdWxlc19bZV09e2V4cG9ydHM6ZCx0eXBlOmdvb2cuTW9kdWxlVHlwZS5HT09HLG1vZHVsZUlkOmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWV9O2Vsc2UgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIG5hbWUgIicrZSsnIicpO31maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPWJ9fTtnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhLGIpe2V2YWwoZ29vZy5DTE9TVVJFX0VWQUxfUFJFRklMVEVSXy5jcmVhdGVTY3JpcHQoYikpO3JldHVybiBhfTtnb29nLm5vcm1hbGl6ZVBhdGhfPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLyIpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KSIuIj09YVtiXT9hLnNwbGljZShiLDEpOmImJiIuLiI9PWFbYl0mJmFbYi0xXSYmIi4uIiE9YVtiLTFdP2Euc3BsaWNlKC0tYiwyKTpiKys7cmV0dXJuIGEuam9pbigiLyIpfTsKZ29vZy5sb2FkRmlsZVN5bmNfPWZ1bmN0aW9uKGEpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMpcmV0dXJuIGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMoYSk7dHJ5e3ZhciBiPW5ldyBnb29nLmdsb2JhbC5YTUxIdHRwUmVxdWVzdDtiLm9wZW4oImdldCIsYSwhMSk7Yi5zZW5kKCk7cmV0dXJuIDA9PWIuc3RhdHVzfHwyMDA9PWIuc3RhdHVzP2IucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtnb29nLnR5cGVPZj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0IiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtnb29nLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO3JldHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RofTsKZ29vZy5pc0RhdGVMaWtlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmlzT2JqZWN0KGEpJiYiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRGdWxsWWVhcn07Z29vZy5pc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0Ij09YiYmbnVsbCE9YXx8ImZ1bmN0aW9uIj09Yn07Z29vZy5nZXRVaWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGdvb2cuVUlEX1BST1BFUlRZXykmJmFbZ29vZy5VSURfUFJPUEVSVFlfXXx8KGFbZ29vZy5VSURfUFJPUEVSVFlfXT0rK2dvb2cudWlkQ291bnRlcl8pfTtnb29nLmhhc1VpZD1mdW5jdGlvbihhKXtyZXR1cm4hIWFbZ29vZy5VSURfUFJPUEVSVFlfXX07Z29vZy5yZW1vdmVVaWQ9ZnVuY3Rpb24oYSl7bnVsbCE9PWEmJiJyZW1vdmVBdHRyaWJ1dGUiaW4gYSYmYS5yZW1vdmVBdHRyaWJ1dGUoZ29vZy5VSURfUFJPUEVSVFlfKTt0cnl7ZGVsZXRlIGFbZ29vZy5VSURfUFJPUEVSVFlfXX1jYXRjaChiKXt9fTsKZ29vZy5VSURfUFJPUEVSVFlfPSJjbG9zdXJlX3VpZF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO2dvb2cudWlkQ291bnRlcl89MDtnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO2lmKCJvYmplY3QiPT1ifHwiYXJyYXkiPT1iKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEuY2xvbmUpcmV0dXJuIGEuY2xvbmUoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBNYXAmJmEgaW5zdGFuY2VvZiBNYXApcmV0dXJuIG5ldyBNYXAoYSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZhIGluc3RhbmNlb2YgU2V0KXJldHVybiBuZXcgU2V0KGEpO2I9ImFycmF5Ij09Yj9bXTp7fTtmb3IodmFyIGMgaW4gYSliW2NdPWdvb2cuY2xvbmVPYmplY3QoYVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGF9O2dvb2cuYmluZE5hdGl2ZV89ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9Owpnb29nLmJpbmRKc189ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O2dvb2cuYmluZD1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIik/Z29vZy5iaW5kPWdvb2cuYmluZE5hdGl2ZV86Z29vZy5iaW5kPWdvb2cuYmluZEpzXztyZXR1cm4gZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Cmdvb2cucGFydGlhbD1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Z29vZy5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07Z29vZy5nbG9iYWxFdmFsPWZ1bmN0aW9uKGEpeygwLGV2YWwpKGEpfTsKZ29vZy5nZXRDc3NOYW1lPWZ1bmN0aW9uKGEsYil7aWYoIi4iPT1TdHJpbmcoYSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4gWW91IHBhc3NlZDogJythKTt2YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bZV18fGV9LGQ9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCItIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoO2crKylmLnB1c2goYyhlW2ddKSk7cmV0dXJuIGYuam9pbigiLSIpfTtkPWdvb2cuY3NzTmFtZU1hcHBpbmdfPyJCWV9XSE9MRSI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/YzpkOmZ1bmN0aW9uKGUpe3JldHVybiBlfTthPWI/YSsiLSIrZChiKTpkKGEpO3JldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTj9nb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTihhKTphfTsKZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihhLGIpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWE7Z29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz1ifTshQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyk7Z29vZy5HZXRNc2dPcHRpb25zPWZ1bmN0aW9uKCl7fTsKZ29vZy5nZXRNc2c9ZnVuY3Rpb24oYSxiLGMpe2MmJmMuaHRtbCYmKGE9YS5yZXBsYWNlKC88L2csIiZsdDsiKSk7YyYmYy51bmVzY2FwZUh0bWxFbnRpdGllcyYmKGE9YS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyZxdW90Oy9nLCciJykucmVwbGFjZSgvJmFtcDsvZywiJiIpKTtiJiYoYT1hLnJlcGxhY2UoL1x7XCQoW159XSspfS9nLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIG51bGwhPWImJmUgaW4gYj9iW2VdOmR9KSk7cmV0dXJuIGF9O2dvb2cuZ2V0TXNnV2l0aEZhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZXhwb3J0U3ltYm9sPWZ1bmN0aW9uKGEsYixjKXtnb29nLmV4cG9ydFBhdGhfKGEsYiwhMCxjKX07Z29vZy5leHBvcnRQcm9wZXJ0eT1mdW5jdGlvbihhLGIsYyl7YVtiXT1jfTsKZ29vZy5pbmhlcml0cz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5zdXBlckNsYXNzXz1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuYmFzZT1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O2dvb2cuc2NvcGU9ZnVuY3Rpb24oYSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLiIpO2EuY2FsbChnb29nLmdsb2JhbCl9O0NPTVBJTEVEfHwoZ29vZy5nbG9iYWwuQ09NUElMRUQ9Q09NUElMRUQpOwpnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jb25zdHJ1Y3RvcixkPWIuc3RhdGljcztjJiZjIT1PYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yfHwoYz1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4iKTt9KTtjPWdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXyhjLGEpO2EmJmdvb2cuaW5oZXJpdHMoYyxhKTtkZWxldGUgYi5jb25zdHJ1Y3RvcjtkZWxldGUgYi5zdGF0aWNzO2dvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjLnByb3RvdHlwZSxiKTtudWxsIT1kJiYoZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoYyk6Z29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGMsZCkpO3JldHVybiBjfTtnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTPWdvb2cuREVCVUc7Cmdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTP2Z1bmN0aW9uKCl7dmFyIGM9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7Y1tnb29nLlVJRF9QUk9QRVJUWV9dPWNbZ29vZy5VSURfUFJPUEVSVFlfXTtyZXR1cm4gY306YX07Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU189ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYykmJihhW2NdPWJbY10pO2Zvcih2YXIgZD0wO2Q8Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO2QrKyljPWdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2RdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGMpJiYoYVtjXT1iW2NdKX07Z29vZy5pZGVudGl0eV89ZnVuY3Rpb24oYSl7cmV0dXJuIGF9Owpnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzO2lmKCFjfHwhYy5jcmVhdGVQb2xpY3kpcmV0dXJuIGI7dHJ5e2I9Yy5jcmVhdGVQb2xpY3koYSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlffSl9Y2F0Y2goZCl7Z29vZy5sb2dUb0NvbnNvbGVfKGQubWVzc2FnZSl9cmV0dXJuIGJ9OwohQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmlzRWRnZV89ZnVuY3Rpb24oKXtyZXR1cm4hIShnb29nLmdsb2JhbC5uYXZpZ2F0b3ImJmdvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ/Z29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudDoiIikubWF0Y2goL0VkZ2VcLyhcZCspKFwuXGQpKi9pKX0sZ29vZy5pbkh0bWxEb2N1bWVudF89ZnVuY3Rpb24oKXt2YXIgYT1nb29nLmdsb2JhbC5kb2N1bWVudDtyZXR1cm4gbnVsbCE9YSYmIndyaXRlImluIGF9LGdvb2cuaXNEb2N1bWVudExvYWRpbmdfPWZ1bmN0aW9uKCl7dmFyIGE9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7cmV0dXJuIGEuYXR0YWNoRXZlbnQ/ImNvbXBsZXRlIiE9YS5yZWFkeVN0YXRlOiJsb2FkaW5nIj09YS5yZWFkeVN0YXRlfSxnb29nLmZpbmRCYXNlUGF0aF89ZnVuY3Rpb24oKXtpZih2b2lkIDAhPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIJiYic3RyaW5nIj09PXR5cGVvZiBnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSClnb29nLmJhc2VQYXRoPQpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50LGI9YS5jdXJyZW50U2NyaXB0O2E9Yj9bYl06YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiU0NSSVBUIik7Zm9yKGI9YS5sZW5ndGgtMTswPD1iOy0tYil7dmFyIGM9YVtiXS5zcmMsZD1jLmxhc3RJbmRleE9mKCI/Iik7ZD0tMT09ZD9jLmxlbmd0aDpkO2lmKCJiYXNlLmpzIj09Yy5zbGljZShkLTcsZCkpe2dvb2cuYmFzZVBhdGg9Yy5zbGljZSgwLGQtNyk7YnJlYWt9fX19LGdvb2cuZmluZEJhc2VQYXRoXygpLGdvb2cucHJvdGVjdFNjcmlwdFRhZ189ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvPFwvKFNDUklQVCkvaWcsIlxceDNjLyQxIil9LGdvb2cuRGVidWdMb2FkZXJfPWZ1bmN0aW9uKCl7dGhpcy5kZXBlbmRlbmNpZXNfPXt9O3RoaXMuaWRUb1BhdGhfPXt9O3RoaXMud3JpdHRlbl89e307dGhpcy5sb2FkaW5nRGVwc189CltdO3RoaXMuZGVwc1RvTG9hZF89W107dGhpcy5wYXVzZWRfPSExO3RoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3Rvcnk7dGhpcy5kZWZlcnJlZENhbGxiYWNrc189e307dGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtkJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChkLDApLGQ9bnVsbCl9dmFyIGQ9YjtpZihhLmxlbmd0aCl7Yj1bXTtmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGFbZV0pO2lmKCFmKXRocm93IEVycm9yKCJVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICIrYVtlXSk7Yi5wdXNoKHRoaXMuZGVwZW5kZW5jaWVzX1tmXSl9Zj1nb29nLnJlcXVpcmU7dmFyIGc9MDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKWYoYVtlXSksYltlXS5vbkxvYWQoZnVuY3Rpb24oKXsrK2c9PWEubGVuZ3RoJiZjKCl9KX1lbHNlIGMoKX0sCmdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCsiZGVwcy5qcyIpLCJkZXBzLmpzIixbXSxbXSx7fSkpO3RoaXMubG9hZERlcHNfKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5yZXF1ZXN0ZWQ9ZnVuY3Rpb24oYSxiKXsoYT10aGlzLmdldFBhdGhGcm9tRGVwc18oYSkpJiYoYnx8dGhpcy5hcmVEZXBzTG9hZGVkXyh0aGlzLmRlcGVuZGVuY2llc19bYV0ucmVxdWlyZXMpKSYmKGI9dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bYV0pJiYoZGVsZXRlIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2FdLGIoKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5zZXREZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihhKXt0aGlzLmZhY3RvcnlfPWF9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkXz0KZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRQYXRoRnJvbURlcHNfKGEpKXt2YXIgYj10aGlzLGM9W10sZD1mdW5jdGlvbihlKXt2YXIgZj1iLmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIWYpdGhyb3cgRXJyb3IoIkJhZCBkZXBlbmRlbmN5IHBhdGggb3Igc3ltYm9sOiAiK2UpO2lmKCFiLndyaXR0ZW5fW2ZdKXtiLndyaXR0ZW5fW2ZdPSEwO2U9Yi5kZXBlbmRlbmNpZXNfW2ZdO2ZvcihmPTA7ZjxlLnJlcXVpcmVzLmxlbmd0aDtmKyspZ29vZy5pc1Byb3ZpZGVkXyhlLnJlcXVpcmVzW2ZdKXx8ZChlLnJlcXVpcmVzW2ZdKTtjLnB1c2goZSl9fTtkKGEpO2E9ISF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aDt0aGlzLmRlcHNUb0xvYWRfPXRoaXMuZGVwc1RvTG9hZF8uY29uY2F0KGMpO3RoaXMucGF1c2VkX3x8YXx8dGhpcy5sb2FkRGVwc18oKX1lbHNlIGdvb2cubG9nVG9Db25zb2xlXygiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAiK2EpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPQpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9dGhpcy5wYXVzZWRfO3RoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoJiYhYjspKGZ1bmN0aW9uKCl7dmFyIGM9ITEsZD1hLmRlcHNUb0xvYWRfLnNoaWZ0KCksZT0hMTthLmxvYWRpbmdfKGQpO3ZhciBmPXtwYXVzZTpmdW5jdGlvbigpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7Yj0hMH0scmVzdW1lOmZ1bmN0aW9uKCl7Yz9hLnJlc3VtZV8oKTpiPSExfSxsb2FkZWQ6ZnVuY3Rpb24oKXtpZihlKXRocm93IEVycm9yKCJEb3VibGUgY2FsbCB0byBsb2FkZWQuIik7ZT0hMDthLmxvYWRlZF8oZCl9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIGc9W10saD0wO2g8YS5sb2FkaW5nRGVwc18ubGVuZ3RoO2grKylnLnB1c2goYS5sb2FkaW5nRGVwc19baF0pO3JldHVybiBnfSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihnKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTpnLAptb2R1bGVOYW1lOiIiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITF9fSxyZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoLGwpe2wmJihnb29nLmxvYWRlZE1vZHVsZXNfW2xdPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmx8fCIifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoKXtnb29nLmxvYWRlZE1vZHVsZXNfW2ddPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKGcpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciB3aXRoIGRlZmVyIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7YS5kZWZlcl8oZCxnKX0sYXJlRGVwc0xvYWRlZDpmdW5jdGlvbigpe3JldHVybiBhLmFyZURlcHNMb2FkZWRfKGQucmVxdWlyZXMpfX07CnRyeXtkLmxvYWQoZil9ZmluYWxseXtjPSEwfX0pKCk7YiYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihhKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGEpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDtiKyspaWYodGhpcy5sb2FkaW5nRGVwc19bYl09PWEpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZShiLDEpO2JyZWFrfWZvcihiPTA7Yjx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDtiKyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1tiXT09CmEucGF0aCl7dGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoYiwxKTticmVha31pZih0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg9PXRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoJiYhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgpZm9yKDt0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDspdGhpcy5yZXF1ZXN0ZWQodGhpcy5kZWZlcnJlZFF1ZXVlXy5zaGlmdCgpLCEwKTthLmxvYWRlZCgpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZF89ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhhW2JdKTtpZighY3x8IShjIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NffHxnb29nLmlzUHJvdmlkZWRfKGFbYl0pKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW4gdGhpcy5pZFRvUGF0aF8/CnRoaXMuaWRUb1BhdGhfW2FdOmEgaW4gdGhpcy5kZXBlbmRlbmNpZXNfP2E6bnVsbH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmRlZmVyXz1mdW5jdGlvbihhLGIpe3RoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2EucGF0aF09Yjt0aGlzLmRlZmVycmVkUXVldWVfLnB1c2goYS5wYXRoKX0sZ29vZy5Mb2FkQ29udHJvbGxlcj1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wZW5kaW5nPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuc2V0TW9kdWxlU3RhdGU9CmZ1bmN0aW9uKGEpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJNb2R1bGVTdGF0ZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24oYSl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkRlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnBhdGg9YTt0aGlzLnJlbGF0aXZlUGF0aD1iO3RoaXMucHJvdmlkZXM9Yzt0aGlzLnJlcXVpcmVzPWQ7dGhpcy5sb2FkRmxhZ3M9ZTt0aGlzLmxvYWRlZF89ITE7dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucGF0aCxiPWEuaW5kZXhPZigiOi8vIik7MDw9YiYmKGE9YS5zdWJzdHJpbmcoYiszKSxiPWEuaW5kZXhPZigiLyIpLDA8PWImJihhPWEuc3Vic3RyaW5nKGIrMSkpKTtyZXR1cm4gYX0sCmdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKGEpe3RoaXMubG9hZGVkXz9hKCk6dGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGEpfSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3RoaXMubG9hZGVkXz0hMDt2YXIgYT10aGlzLmxvYWRDYWxsYmFja3NfO3RoaXMubG9hZENhbGxiYWNrc189W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspYVtiXSgpfSxnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSExLGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF89e30sZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzIpO2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYl09YTtyZXR1cm4gYn0sZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oYSl7ZGVsZXRlIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYV19LApnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfPWZ1bmN0aW9uKGEsYil7aWYoYSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKXtmb3IodmFyIGM9Z29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1thXSxkPVtdLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWQucHVzaChhcmd1bWVudHNbZV0pO2MuYXBwbHkodm9pZCAwLGQpfWVsc2UgdGhyb3cgRXJyb3IoIkNhbGxiYWNrIGtleSAiK2ErIiBkb2VzIG5vdCBleGlzdCAod2FzIGJhc2UuanMgbG9hZGVkIG1vcmUgdGhhbiBvbmNlPykuIik7fSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpP2EubG9hZGVkKCk6YS5wYXVzZSgpO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGI9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7aWYoImNvbXBsZXRlIj09CmIucmVhZHlTdGF0ZSYmIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyl7aWYoL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSl7YS5sb2FkZWQoKTtyZXR1cm59dGhyb3cgRXJyb3IoJ0Nhbm5vdCB3cml0ZSAiJyt0aGlzLnBhdGgrJyIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpO312YXIgYz1nb29nLmdldFNjcmlwdE5vbmNlXygpO2lmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBkPWZ1bmN0aW9uKGgpe2gucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9aC5yZWFkeVN0YXRlP2gub25sb2FkPWQ6KGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGUpLGEubG9hZGVkKCkpfTt2YXIgZT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZCk7Yz1jPycgbm9uY2U9IicrYysnIic6IiI7dmFyIGY9JzxzY3JpcHQgc3JjPSInK3RoaXMucGF0aCsnIicrCmMrKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8/IiBkZWZlciI6IiIpKycgaWQ9InNjcmlwdC0nK2UrJyI+XHgzYy9zY3JpcHQ+JztmKz0iPHNjcmlwdCIrYysiPiI7Zj1nb29nLkRlcGVuZGVuY3kuZGVmZXJfP2YrKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NyaXB0LSIrZSsiJykub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgdGhpcyk7XG59O1xuIik6ZisoImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjcmlwdC0iK2UrIicpKTsiKTtmKz0iXHgzYy9zY3JpcHQ+IjtiLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoZik6Zil9ZWxzZXt2YXIgZz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2cuZGVmZXI9Z29vZy5EZXBlbmRlbmN5LmRlZmVyXztnLmFzeW5jPSExO2MmJihnLm5vbmNlPQpjKTtnLm9ubG9hZD1mdW5jdGlvbigpe2cub25sb2FkPW51bGw7YS5sb2FkZWQoKX07Zy5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoO2IuaGVhZC5hcHBlbmRDaGlsZChnKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oIkNhbm5vdCB1c2UgZGVmYXVsdCBkZWJ1ZyBsb2FkZXIgb3V0c2lkZSBvZiBIVE1MIGRvY3VtZW50cy4iKSwiZGVwcy5qcyI9PXRoaXMucmVsYXRpdmVQYXRoPyhnb29nLmxvZ1RvQ29uc29sZV8oIkNvbnNpZGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBUIGJlZm9yZSBsb2FkaW5nIGJhc2UuanMsIG9yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuIiksYS5sb2FkZWQoKSk6YS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGEsCmIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLkRlcGVuZGVuY3kpLGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGssbSl7dmFyIG49IiIscD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuPScgbm9uY2U9IicrcCsnIicpO2s9bT8nPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luJytuKyI+IittKyJceDNjL3NjcmlwdD4iOic8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInK2srJyInK24rIj5ceDNjL3NjcmlwdD4iO2Qud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChrKTprKX1mdW5jdGlvbiBjKGssbSl7dmFyIG49ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLmRlZmVyPSEwO24uYXN5bmM9ITE7bi50eXBlPSJtb2R1bGUiO24uc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsCiEwKTt2YXIgcD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuLm5vbmNlPXApO20/bi50ZXh0PWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdChtKTptOm4uc3JjPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTChrKTprO2QuaGVhZC5hcHBlbmRDaGlsZChuKX1pZihnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCk/YS5sb2FkZWQoKTphLnBhdXNlKCk7ZWxzZSBpZihnb29nLmluSHRtbERvY3VtZW50XygpKXt2YXIgZD1nb29nLmdsb2JhbC5kb2N1bWVudCxlPXRoaXM7aWYoZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSl7dmFyIGY9Yjtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2UgZj1jO3ZhciBnPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGcpOwphLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSk7Zih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrZysnIiknKTtmKHRoaXMucGF0aCx2b2lkIDApO3ZhciBoPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihrKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhoKTthLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyhlLnBhdGgsayxnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKX0pO2Yodm9pZCAwLCdpbXBvcnQgKiBhcyBtIGZyb20gIicrdGhpcy5wYXRoKyciOyBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInK2grJyIsIG0pJyk7dmFyIGw9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18obCk7YS5jbGVhck1vZHVsZVN0YXRlKCk7YS5sb2FkZWQoKX0pO2Yodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInKwpsKyciKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuIiksYS5wYXVzZSgpfSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe2dvb2cuRGVwZW5kZW5jeS5jYWxsKHRoaXMsYSxiLGMsZCxlKTt0aGlzLmNvbnRlbnRzXz1udWxsO3RoaXMubGF6eUZldGNoXz0hZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8ISgibm9Nb2R1bGUiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2UuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhlLnBhdGgpO2UuY29udGVudHNfJiYoZS5jb250ZW50c189CmUudHJhbnNmb3JtKGUuY29udGVudHNfKSxlLmNvbnRlbnRzXyYmKGUuY29udGVudHNfKz0iXG4vLyMgc291cmNlVVJMPSIrZS5wYXRoKSl9ZnVuY3Rpb24gYygpe2UubGF6eUZldGNoXyYmYigpO2lmKGUuY29udGVudHNfKXtmJiZhLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpO3RyeXt2YXIgaz1lLmNvbnRlbnRzXztlLmNvbnRlbnRzXz1udWxsO2dvb2cuZ2xvYmFsRXZhbChnb29nLkNMT1NVUkVfRVZBTF9QUkVGSUxURVJfLmNyZWF0ZVNjcmlwdChrKSk7aWYoZil2YXIgbT1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfWZpbmFsbHl7ZiYmYS5jbGVhck1vZHVsZVN0YXRlKCl9ZiYmZ29vZy5nbG9iYWwuJGpzY29tcC5yZXF1aXJlLmVuc3VyZShbZS5nZXRQYXRoTmFtZSgpXSxmdW5jdGlvbigpe2EucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKGUucGF0aCxnb29nLmdsb2JhbC4kanNjb21wLnJlcXVpcmUoZS5nZXRQYXRoTmFtZSgpKSxtKX0pO2EubG9hZGVkKCl9fQpmdW5jdGlvbiBkKCl7dmFyIGs9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhtKTtjKCl9KSxuPWdvb2cuZ2V0U2NyaXB0Tm9uY2VfKCk7bj0iPHNjcmlwdCIrKG4/JyBub25jZT0iJytuKyciJzoiIikrIj4iK2dvb2cucHJvdGVjdFNjcmlwdFRhZ18oJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrbSsnIik7JykrIlx4M2Mvc2NyaXB0PiI7ay53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKG4pOm4pfXZhciBlPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWIoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCIiLHRoaXMuY29udGVudHNfKT8odGhpcy5jb250ZW50c189bnVsbCxhLmxvYWRlZCgpKToKYS5wYXVzZSgpO2Vsc2V7dmFyIGY9dGhpcy5sb2FkRmxhZ3MubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuRVM2O3RoaXMubGF6eUZldGNoX3x8YigpO3ZhciBnPTE8YS5wZW5kaW5nKCkubGVuZ3RoO2lmKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8mJihnfHxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSlhLmRlZmVyKGZ1bmN0aW9uKCl7YygpfSk7ZWxzZXt2YXIgaD1nb29nLmdsb2JhbC5kb2N1bWVudDtnPWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJigiQWN0aXZlWE9iamVjdCJpbiBnb29nLmdsb2JhbHx8Z29vZy5pc0VkZ2VfKCkpO2lmKGYmJmdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkmJiFnKXtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwO2EucGF1c2UoKTt2YXIgbD1oLm9ucmVhZHlzdGF0ZWNoYW5nZTtoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJpbnRlcmFjdGl2ZSI9PWgucmVhZHlTdGF0ZSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPQpsLGMoKSxhLnJlc3VtZSgpKTsiZnVuY3Rpb24iPT09dHlwZW9mIGwmJmwuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWVsc2UgZ29vZy5pbkh0bWxEb2N1bWVudF8oKSYmZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKT9kKCk6YygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYSl7fSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQsZSl7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGEsYixjLGQsZSl9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYiwKYyxkLGUpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxhLGIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZ2b2lkIDAhPT1nb29nLmdsb2JhbC5KU09OPyJnb29nLmxvYWRNb2R1bGUoIitnb29nLmdsb2JhbC5KU09OLnN0cmluZ2lmeShhKyJcbi8vIyBzb3VyY2VVUkw9Iit0aGlzLnBhdGgrIlxuIikrIik7IjonZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsidXNlIHN0cmljdCI7JythKyJcbjtyZXR1cm4gZXhwb3J0c30pO1xuLy8jIHNvdXJjZVVSTD0iK3RoaXMucGF0aCsiXG4ifSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkKXtiPQpifHxbXTthPWEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBlPWdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCthKTtkJiYiYm9vbGVhbiIhPT10eXBlb2YgZHx8KGQ9ZD97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSk7Yz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koZSxhLGIsYyxkKTt0aGlzLmRlcGVuZGVuY2llc19bZV09Yztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuaWRUb1BhdGhfW2JbY11dPWU7dGhpcy5pZFRvUGF0aF9bYV09ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBlLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkdPT0c/bmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koYSxiLGMsZCxlKTplLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNj9nb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ/Cm5ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGEsYixjLGQsZSk6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShhLGIsYyxkLGUpOm5ldyBnb29nLkRlcGVuZGVuY3koYSxiLGMsZCxlKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oYSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoYSl9LGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrIiNiYXNlIik6bnVsbCxnb29nLmdsb2JhbC5DTE9TVVJFX05PX0RFUFN8fGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpLApnb29nLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2dvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChhLGIpfSk7aWYoIUNPTVBJTEVEKXt2YXIgaXNDaHJvbWU4Nz0hMTt0cnl7aXNDaHJvbWU4Nz1ldmFsKGdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eVNjcmlwdCkhPT1nb29nLmdsb2JhbC50cnVzdGVkVHlwZXMuZW1wdHlTY3JpcHR9Y2F0Y2goYSl7fWdvb2cuQ0xPU1VSRV9FVkFMX1BSRUZJTFRFUl89Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzJiZpc0Nocm9tZTg3JiZnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeSgiZ29vZyNiYXNlI2Rldm9ubHkjZXZhbCIpfHx7Y3JlYXRlU2NyaXB0Omdvb2cuaWRlbnRpdHlffX07Y29uc3QgcHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxjcmVhdGVFbmRwb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSx0aHJvd01hcmtlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxpc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPWE9PiJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hfHwiZnVuY3Rpb24iPT09dHlwZW9mIGEscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz0Ke2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiZhW3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdLHNlcmlhbGl6ZShhKXtjb25zdCB7cG9ydDE6Yixwb3J0MjpjfT1uZXcgTWVzc2FnZUNoYW5uZWw7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKTtyZXR1cm5bYyxbY11dfSxkZXNlcmlhbGl6ZShhKXthLnN0YXJ0KCk7cmV0dXJuIHdyYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKX19LHRocm93VHJhbnNmZXJIYW5kbGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9e2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiYKdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyBpbiBhLHNlcmlhbGl6ZSh7dmFsdWU6YX0pe3JldHVyblthIGluc3RhbmNlb2YgRXJyb3I/e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6YS5tZXNzYWdlLG5hbWU6YS5uYW1lLHN0YWNrOmEuc3RhY2t9fTp7aXNFcnJvcjohMSx2YWx1ZTphfSxbXV19LGRlc2VyaWFsaXplKGEpe2lmKGEuaXNFcnJvcil0aHJvdyBPYmplY3QuYXNzaWduKEVycm9yKGEudmFsdWUubWVzc2FnZSksYS52YWx1ZSk7dGhyb3cgYS52YWx1ZTt9fSx0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9bmV3IE1hcChbWyJwcm94eSIscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc10sWyJ0aHJvdyIsdGhyb3dUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc11dKTsKZnVuY3Rpb24gZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiPXNlbGYpe2IuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShkKXtpZihkJiZkLmRhdGEpe3ZhciB7aWQ6Zix0eXBlOmcscGF0aDpofT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxkLmRhdGEpLGw9KGQuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTt0cnl7Y29uc3QgbT1oLnNsaWNlKDAsLTEpLnJlZHVjZSgocCxxKT0+cFtxXSxhKSxuPWgucmVkdWNlKChwLHEpPT5wW3FdLGEpO3N3aXRjaChnKXtjYXNlICJHRVQiOnZhciBrPW47YnJlYWs7Y2FzZSAiU0VUIjptW2guc2xpY2UoLTEpWzBdXT1mcm9tV2lyZVZhbHVlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZC5kYXRhLnZhbHVlKTsKaz0hMDticmVhaztjYXNlICJBUFBMWSI6az1uLmFwcGx5KG0sbCk7YnJlYWs7Y2FzZSAiQ09OU1RSVUNUIjpjb25zdCBwPW5ldyBuKC4uLmwpO2s9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhwKTticmVhaztjYXNlICJFTkRQT0lOVCI6Y29uc3Qge3BvcnQxOnEscG9ydDI6cn09bmV3IE1lc3NhZ2VDaGFubmVsO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEscik7az10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHEsW3FdKTticmVhaztjYXNlICJSRUxFQVNFIjprPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gobSl7az17dmFsdWU6bSxbdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc106MH19UHJvbWlzZS5yZXNvbHZlKGspLmNhdGNoKG09Pgooe3ZhbHVlOm0sW3Rocm93TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOjB9KSkudGhlbihtPT57Y29uc3QgW24scF09dG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhtKTtiLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6Zn0pLHApOyJSRUxFQVNFIj09PWcmJihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhiKSl9KX19KTtiLnN0YXJ0JiZiLnN0YXJ0KCl9ZnVuY3Rpb24gaXNNZXNzYWdlUG9ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3JldHVybiJNZXNzYWdlUG9ydCI9PT1hLmNvbnN0cnVjdG9yLm5hbWV9CmZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtpc01lc3NhZ2VQb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSkmJmEuY2xvc2UoKX1mdW5jdGlvbiB3cmFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXtyZXR1cm4gY3JlYXRlUHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLFtdLGIpfWZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7aWYoYSl0aHJvdyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIik7fQpmdW5jdGlvbiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsYj1bXSxjPWZ1bmN0aW9uKCl7fSl7bGV0IGQ9ITE7Y29uc3QgZT1uZXcgUHJveHkoYyx7Z2V0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtpZihnPT09cmVsZWFzZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMpcmV0dXJuKCk9PnJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJSRUxFQVNFIixwYXRoOmIubWFwKGg9PmgudG9TdHJpbmcoKSl9KS50aGVuKCgpPT57Y2xvc2VFbmRQb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpO2Q9ITB9KTtpZigidGhlbiI9PT0KZyl7aWYoMD09PWIubGVuZ3RoKXJldHVybnt0aGVuOigpPT5lfTtmPXJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJHRVQiLHBhdGg6Yi5tYXAoaD0+aC50b1N0cmluZygpKX0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtyZXR1cm4gZi50aGVuLmJpbmQoZil9cmV0dXJuIGNyZWF0ZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxbLi4uYixnXSl9LHNldChmLGcsaCl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbbCxrXT10b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGgpO3JldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSwKe3R5cGU6IlNFVCIscGF0aDpbLi4uYixnXS5tYXAobT0+bS50b1N0cmluZygpKSx2YWx1ZTpsfSxrKS50aGVuKGZyb21XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyl9LGFwcGx5KGYsZyxoKXt0aHJvd0lmUHJveHlSZWxlYXNlZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGQpO2Y9YltiLmxlbmd0aC0xXTtpZihmPT09Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtpZigiYmluZCI9PT1mKXJldHVybiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsCmIuc2xpY2UoMCwtMSkpO2NvbnN0IFtsLGtdPXByb2Nlc3NBcmd1bWVudHMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhoKTtyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkFQUExZIixwYXRoOmIubWFwKG09Pm0udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omx9LGspLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX0sY29uc3RydWN0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbaCxsXT1wcm9jZXNzQXJndW1lbnRzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZyk7cmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLAp7dHlwZToiQ09OU1RSVUNUIixwYXRoOmIubWFwKGs9PmsudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omh9LGwpLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX19KTtyZXR1cm4gZX1mdW5jdGlvbiBteUZsYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhKX0KZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2E9YS5tYXAodG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyk7cmV0dXJuW2EubWFwKGI9PmJbMF0pLG15RmxhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEubWFwKGI9PmJbMV0pKV19Y29uc3QgdHJhbnNmZXJDYWNoZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHRyYW5zZmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXt0cmFuc2ZlckNhY2hlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuc2V0KGEsYik7cmV0dXJuIGF9CmZ1bmN0aW9uIHByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oYSx7W3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOiEwfSl9ZnVuY3Rpb24gd2luZG93RW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGI9c2VsZixjPSIqIil7cmV0dXJue3Bvc3RNZXNzYWdlOihkLGUpPT5hLnBvc3RNZXNzYWdlKGQsYyxlKSxhZGRFdmVudExpc3RlbmVyOmIuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKGIpLHJlbW92ZUV2ZW50TGlzdGVuZXI6Yi5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoYil9fQpmdW5jdGlvbiB0b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2Zvcihjb25zdCBbYixjXW9mIHRyYW5zZmVySGFuZGxlcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylpZihjLmNhbkhhbmRsZShhKSl7Y29uc3QgW2QsZV09Yy5zZXJpYWxpemUoYSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmIsdmFsdWU6ZH0sZV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmF9LHRyYW5zZmVyQ2FjaGUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy5nZXQoYSl8fFtdXX0KZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIkhBTkRMRVIiOnJldHVybiB0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZ2V0KGEubmFtZSkuZGVzZXJpYWxpemUoYS52YWx1ZSk7Y2FzZSAiUkFXIjpyZXR1cm4gYS52YWx1ZX19CmZ1bmN0aW9uIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGIsYyl7cmV0dXJuIG5ldyBQcm9taXNlKGQ9Pntjb25zdCBlPWdlbmVyYXRlVVVJRCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKCk7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBoKGcpe2cuZGF0YSYmZy5kYXRhLmlkJiZnLmRhdGEuaWQ9PT1lJiYoYS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixoKSxkKGcuZGF0YSkpfSk7YS5zdGFydCYmYS5zdGFydCgpO2EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6ZX0sYiksYyl9KX0KZnVuY3Rpb24gZ2VuZXJhdGVVVUlEJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoKXtyZXR1cm4gQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz17fTttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuY3JlYXRlRW5kcG9pbnQ9Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZXhwb3NlPWV4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHk9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHlNYXJrZXI9cHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucmVsZWFzZVByb3h5PXJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy50cmFuc2Zlcj10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMudHJhbnNmZXJIYW5kbGVycz10cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndpbmRvd0VuZHBvaW50PXdpbmRvd0VuZHBvaW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndyYXA9d3JhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO2Z1bmN0aW9uIE1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlKCl7fU1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5yZWFkeT0hMTtNZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5wcm90b3R5cGUucG9ydD12b2lkIDA7TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUucHJvdG90eXBlLnBvc3Q9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5icm9hZGNhc3RQbGF5U3RhdGU9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS53b3JrZXJTdGF0ZT12b2lkIDA7Ck1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS52YW5pbGxhV29ya2VyU3RhdGU9dm9pZCAwO3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUsbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9e307bW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUuTWVzc2FnZVBvcnRTdGF0ZT1NZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTttb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTtjb25zdCBERUZBVUxUX0JVRkZFUl9MRU4kJG1vZHVsZSRzcmMkY29uc3RhbnRzPTEyOCxNQVhfQ0hBTk5FTFMkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTMyLFJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTE2Mzg0LE1JRElfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTEwMjQsTUlESV9CVUZGRVJfUEFZTE9BRF9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cz0zLENBTExCQUNLX0RBVEFfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPTE2Mzg0LGluaXRpYWxTaGFyZWRTdGF0ZSQkbW9kdWxlJHNyYyRjb25zdGFudHM9WzAsNDA5NiwwLDAsMCwwLC0xLC0xLC0xLC0xLDAsREVGQVVMVF9CVUZGRVJfTEVOJCRtb2R1bGUkc3JjJGNvbnN0YW50cywwLDAsMCwwLDAsMCwwLDBdLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cz17Q1NPVU5EX0xPQ0s6MCxGUkFNRVNfUkVRVUVTVEVEOjEsSVNfUEVSRk9STUlORzoyLElTX1JFTkRFUklORzozLApJU19QQVVTRUQ6NCxTVE9QOjUsU0FNUExFX1JBVEU6NixLU01QUzo3LE5DSE5MUzo4LE5DSE5MU19JOjksSVNfUkVRVUVTVElOR19NSUM6MTAsQlVGRkVSX0xFTjoxMSxPVVRQVVRfUkVBRF9JTkRFWDoxMixPVVRQVVRfV1JJVEVfSU5ERVg6MTMsQVZBSUxfSU5fQlVGUzoxNCxBVkFJTF9PVVRfQlVGUzoxNSxJU19SRVFVRVNUSU5HX1JUTUlESToxNixSVE1JRElfSU5ERVg6MTcsQVZBSUxfUlRNSURJX0VWRU5UUzoxOCxIQVNfUEVORElOR19DQUxMQkFDS1M6MTl9LERBVEFfVFlQRSQkbW9kdWxlJHNyYyRjb25zdGFudHM9e05VTUJFUjowLFNUUklORzoxLEZMT0FUXzMyOjIsRkxPQVRfNjQ6M307dmFyIG1vZHVsZSRzcmMkY29uc3RhbnRzPXt9O21vZHVsZSRzcmMkY29uc3RhbnRzLkFVRElPX1NUQVRFPUFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5DQUxMQkFDS19EQVRBX0JVRkZFUl9TSVpFPUNBTExCQUNLX0RBVEFfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzOwptb2R1bGUkc3JjJGNvbnN0YW50cy5EQVRBX1RZUEU9REFUQV9UWVBFJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5ERUZBVUxUX0JVRkZFUl9MRU49REVGQVVMVF9CVUZGRVJfTEVOJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5NQVhfQ0hBTk5FTFM9TUFYX0NIQU5ORUxTJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5NSURJX0JVRkZFUl9QQVlMT0FEX1NJWkU9TUlESV9CVUZGRVJfUEFZTE9BRF9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50czttb2R1bGUkc3JjJGNvbnN0YW50cy5NSURJX0JVRkZFUl9TSVpFPU1JRElfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzO21vZHVsZSRzcmMkY29uc3RhbnRzLlJJTkdfQlVGRkVSX1NJWkU9UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM7bW9kdWxlJHNyYyRjb25zdGFudHMuaW5pdGlhbFNoYXJlZFN0YXRlPWluaXRpYWxTaGFyZWRTdGF0ZSQkbW9kdWxlJHNyYyRjb25zdGFudHM7dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleD17ZGVmYXVsdDp7fX07bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQuX19lc01vZHVsZT0hMDttb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5Mb2dnZXJGYWN0b3J5PW1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVscz12b2lkIDA7bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzPXtsb2dfcmFpc2VfZXJyb3I6MSxsb2dfd2l0aF93YXJuaW5nczoyLHRyYWNlOjMsZGVidWc6NCxpbmZvOjUsd2Fybjo2LGVycm9yOjcsZGlzYWJsZTo4fTsKdmFyIExvZ2dlckZhY3RvcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtpZih2b2lkIDA9PT1iJiYoYj0ibG9nX3dpdGhfd2FybmluZ3MiKSx2b2lkIDA9PT1jJiYoYz1udWxsKSx0aGlzLmxvZ0xldmVsPWIsIW1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tiXSl0aHJvdyBFcnJvcigiSW52YWxpZCBsb2cgbGV2ZWwgIitiKyIgYWxsb3dlZDogIitKU09OLnN0cmluZ2lmeShtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHMpKTt0aGlzLm1vY2tDb25zb2xlPWN8fGNvbnNvbGV9cmV0dXJuIGEucHJvdG90eXBlLmR1bW15PWZ1bmN0aW9uKCl7fSxhLnByb3RvdHlwZS5zZXRMb2dXYXJuaW5ncz1mdW5jdGlvbihiKXt0aGlzLmxvZ0xldmVsPWJ9LGEucHJvdG90eXBlLmdldExvZ1dhcm5pbmdzPQpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvZ0xldmVsfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXJDb2xvcj1mdW5jdGlvbihiLGMsZCl7cmV0dXJuIHRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYix0aGlzLmdldENvbG9yU3R5bGUoYyksZCl9LGEucHJvdG90eXBlLmdldFNpbmdsZUxvZ2dlcj1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMuZ2V0UmFuZG9tQ29sb3IoYik7cmV0dXJuIHRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYix0aGlzLmdldENvbG9yU3R5bGUoZCksYyl9LGEucHJvdG90eXBlLmdldFNpbmdsZUxvZ2dlclN0eWxlPWZ1bmN0aW9uKGIsYyxkLGUpe3ZhciBmPXRoaXM7cmV0dXJuIHZvaWQgMD09PWUmJihlPSJsb2dfd2l0aF93YXJuaW5ncyIpLGZ1bmN0aW9uKCl7Zm9yKHZhciBnPVtdLGg9MDtoPGFyZ3VtZW50cy5sZW5ndGg7aCsrKWdbaF09YXJndW1lbnRzW2hdO2lmKG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tmLmxvZ0xldmVsXT4KbW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzW2VdKXJldHVybiBmLmR1bW15O2c9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZyk7aD1nLnNoaWZ0KCkuc3BsaXQoInt9Iik7Zm9yKHZhciBsPVtmLm1vY2tDb25zb2xlLCIlYyIrYixjXSxrPTA7azxoLmxlbmd0aDtrKyspbC5wdXNoKGhba10pLHZvaWQgMCE9PWdba10mJmwucHVzaChnW2tdKTtpZihoLmxlbmd0aC0xIT09Zy5sZW5ndGgpaWYoImxvZ193aXRoX3dhcm5pbmdzIj09PWYubG9nTGV2ZWwpZi5tb2NrQ29uc29sZS5lcnJvcigiTWlzc01hdGNoIGFtb3VudCBvZiBhcmd1bWVudHMiKTtlbHNlIGlmKCJsb2dfcmFpc2VfZXJyb3IiPT09Zi5sb2dMZXZlbCl0aHJvdyBFcnJvcigiTWlzc01hdGNoIGFtb3VudCBvZiBhcmd1bWVudHMiKTtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuYXBwbHkoZCxsKX19LGEucHJvdG90eXBlLmdldExvZ2dlckNvbG9yPWZ1bmN0aW9uKGIsCmMpe3JldHVybiB0aGlzLmdldExvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGMpKX0sYS5wcm90b3R5cGUuZ2V0Q29sb3JTdHlsZT1mdW5jdGlvbihiKXtyZXR1cm4iY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAiK2IrIjsgcGFkZGluZzogMnB4IDZweDsgYm9yZGVyLXJhZGl1czogMnB4OyBmb250LXNpemU6IDEwcHgifSxhLmdldEhhc2g9ZnVuY3Rpb24oYixjKXt2b2lkIDA9PT1jJiYoYz0wKTt2YXIgZD0zNzM1OTI4NTU5XmM7Y149MTEwMzU0Nzk5MTtmb3IodmFyIGU9MCxmO2U8Yi5sZW5ndGg7ZSsrKWY9Yi5jaGFyQ29kZUF0KGUpLGQ9TWF0aC5pbXVsKGReZiwyNjU0NDM1NzYxKSxjPU1hdGguaW11bChjXmYsMTU5NzMzNDY3Nyk7cmV0dXJuIGQ9TWF0aC5pbXVsKGReZD4+PjE2LDIyNDY4MjI1MDcpXk1hdGguaW11bChjXmM+Pj4xMywzMjY2NDg5OTA5KSw0Mjk0OTY3Mjk2KigyMDk3MTUxJihNYXRoLmltdWwoY15jPj4+MTYsMjI0NjgyMjUwNyleTWF0aC5pbXVsKGReCmQ+Pj4xMywzMjY2NDg5OTA5KSkpKyhkPj4+MCl9LGEucHJvdG90eXBlLmdldFJhbmRvbUNvbG9yPWZ1bmN0aW9uKGIpe3ZvaWQgMD09PWImJihiPSIiKTtiPWEuZ2V0SGFzaChiKTtmb3IodmFyIGM9IiMiLGQ9MDszPmQ7ZCsrKWMrPSgiMDAiKyg4KyhiPj43KmQmMTI3KSkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTIpO3JldHVybiBjfSxhLnByb3RvdHlwZS5nZXRMb2dnZXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZ2V0TG9nZ2VyQ29sb3IoYix0aGlzLmdldFJhbmRvbUNvbG9yKGIpKX0sYS5wcm90b3R5cGUuZ2V0TG9nZ2VyU3R5bGU9ZnVuY3Rpb24oYixjKXtyZXR1cm57dHJhY2U6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS50cmFjZSwidHJhY2UiKSxkZWJ1Zzp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmRlYnVnLCJkZWJ1ZyIpLGxvZzp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmxvZywKImluZm8iKSx3YXJuOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUud2Fybiwid2FybiIpLGVycm9yOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUuZXJyb3IsImVycm9yIil9fSxhfSgpO21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LkxvZ2dlckZhY3Rvcnk9TG9nZ2VyRmFjdG9yeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4O2xldCBsb2dXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU0FCTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU0FCV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dWQU5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dWQU5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ09sZFNwbk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ09sZFNwbldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nSW5kZXgkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NQTk1haW5TaW5nbGUkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyOwpjb25zdCBpc1Byb2QkJG1vZHVsZSRzcmMkbG9nZ2VyPTE7bG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1NBQldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nVkFOV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dPbGRTcG5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTUE5NYWluU2luZ2xlJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTsKbG9nU2luZ2xldGhyZWFkV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ0NvbW1vblV0aWxzJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dXYXNtTW9kdWxlJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dNaWRpUmVxdWVzdCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307dmFyICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fSxtb2R1bGUkc3JjJGxvZ2dlcj17fTttb2R1bGUkc3JjJGxvZ2dlci5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dDb21tb25VdGlscz1sb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nSW5kZXg9bG9nSW5kZXgkJG1vZHVsZSRzcmMkbG9nZ2VyOwptb2R1bGUkc3JjJGxvZ2dlci5sb2dNaWRpUmVxdWVzdD1sb2dNaWRpUmVxdWVzdCQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nT2xkU3BuTWFpbj1sb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dPbGRTcG5Xb3JrZXI9bG9nT2xkU3BuV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTQUJNYWluPWxvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NBQldvcmtlcj1sb2dTQUJXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NQTk1haW5TaW5nbGU9bG9nU1BOTWFpblNpbmdsZSQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nU2luZ2xldGhyZWFkV29ya2xldE1haW49bG9nU2luZ2xldGhyZWFkV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyOwptb2R1bGUkc3JjJGxvZ2dlci5sb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyPWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1ZBTk1haW49bG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nVkFOV29ya2VyPWxvZ1ZBTldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV2FzbU1vZHVsZT1sb2dXYXNtTW9kdWxlJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dXb3JrbGV0TWFpbj1sb2dXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV29ya2xldFdvcmtlcj1sb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjtjb25zdCBoYW5kbGVDc291bmRTdGFydCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz0oYSxiLGMsZCxlKT0+Zj0+e2NvbnN0IHtjc291bmQ6Z309ZixoPTE9PT1iLmNzb3VuZFNob3VsZERhZW1vbml6ZShnKTtoJiYoYi5jc291bmRTZXRPcHRpb24oZywiLS1kYWVtb24iKSxiLmNzb3VuZFNldE9wdGlvbihnLCItb2RhYyIpKTtjb25zdCBsPWIuY3NvdW5kU3RhcnQoZyksaz1iLmNzb3VuZEdldE91dHB1dE5hbWUoZyl8fCJ0ZXN0LndhdiI7bG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyKGBoYW5kbGVDc291bmRTdGFydDogYWN0dWFsIGNzb3VuZFN0YXJ0IHJlc3VsdCAke2x9LCBvdXRwdXROYW1lOiAke2t9YCkoKTswIT09bCYmYS5wb3N0KGBlcnJvcjogY3NvdW5kU3RhcnQgZmFpbGVkIHdoaWxlIHRyeWluZyB0byByZW5kZXIgJHtrfSxgKyIgbG9vayBvdXQgZm9yIGVycm9ycyBpbiBvcHRpb25zIGFuZCBzeW50YXgiKTtzZXRUaW1lb3V0KCgpPT57Y29uc3QgbT0KYi5faXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQoZyk7aWYoaHx8bXx8ay5pbmNsdWRlcygiZGFjIikpZChmKTtlbHNlIGlmKGEuYnJvYWRjYXN0UGxheVN0YXRlKCJyZW5kZXJTdGFydGVkIiksZSllKGYpO2Vsc2UgZm9yKDswPT09Yi5jc291bmRQZXJmb3JtS3NtcHMoZyk7KTt9LDApO3JldHVybiBsfSxpbnN0YW50aWF0ZUF1ZGlvUGFja2V0JCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzPShhLGIpPT57Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGE7ZCsrKWMucHVzaChuZXcgRmxvYXQ2NEFycmF5KGIpKTtyZXR1cm4gY30scmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9KHtsaWJyYXJ5Q3NvdW5kOmEsd29ya2VyTWVzc2FnZVBvcnQ6Yn0pPT5hc3luYyh7Y3NvdW5kOmN9KT0+e2NvbnN0IGQ9YS5jc291bmRHZXRLcihjKTtsZXQgZT0wLGY9MDtmb3IoOygicmVuZGVyU3RhcnRlZCI9PT1iLnZhbmlsbGFXb3JrZXJTdGF0ZXx8InJlbmRlclN0YXJ0ZWQiPT09CmIud29ya2VyU3RhdGUpJiYwPT09ZTspZT1hLmNzb3VuZFBlcmZvcm1Lc21wcyhjKSxmKz0xLCJmdW5jdGlvbiI9PT10eXBlb2Ygc2V0VGltZW91dCYmMD09PWUmJjA9PT1mJSgyKmQpJiZhd2FpdCBuZXcgUHJvbWlzZShnPT5zZXRUaW1lb3V0KGcsMCkpO2IuYnJvYWRjYXN0UGxheVN0YXRlKCJyZW5kZXJFbmRlZCIpfTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz17fTttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLmhhbmRsZUNzb3VuZFN0YXJ0PWhhbmRsZUNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO21vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMuaW5zdGFudGlhdGVBdWRpb1BhY2tldD1pbnN0YW50aWF0ZUF1ZGlvUGFja2V0JCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO21vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMucmVuZGVyRnVuY3Rpb249cmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM7Y29uc3QgVkFOSUxMQV9JTlBVVF9XUklURV9CVUZGRVJfTEVOJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXI9MjA0OCxhY3RpdmVOb2RlcyQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyPW5ldyBNYXA7CmZ1bmN0aW9uIHByb2Nlc3NTaGFyZWRBcnJheUJ1ZmZlciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKGEsYil7dmFyIGM9MT09PUF0b21pY3MubG9hZCh0aGlzLnNoYXJlZEFycmF5QnVmZmVyLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cy5JU19QRVJGT1JNSU5HKSxkPTE9PT1BdG9taWNzLmxvYWQodGhpcy5zaGFyZWRBcnJheUJ1ZmZlcixBVURJT19TVEFURSQkbW9kdWxlJHNyYyRjb25zdGFudHMuSVNfUEFVU0VEKTtjb25zdCBlPTE9PT1BdG9taWNzLmxvYWQodGhpcy5zaGFyZWRBcnJheUJ1ZmZlcixBVURJT19TVEFURSQkbW9kdWxlJHNyYyRjb25zdGFudHMuU1RPUCk7dGhpcy5zdGFydFByb21peiYmKHRoaXMuc3RhcnRQcm9taXooKSxkZWxldGUgdGhpcy5zdGFydFByb21peik7aWYoIXRoaXMuc2hhcmVkQXJyYXlCdWZmZXJ8fGR8fCFjfHxlKXJldHVybiB0aGlzLmlzUGVyZm9ybWluZ0xhc3RUaW1lPWMsdGhpcy5ub3RpZmllZE9uY2U9dGhpcy5maXJzdEJ1ZmZlclJlYWR5PQohMSwoYlswXXx8W10pLmZvckVhY2goZz0+Zy5maWxsKDApKSwhMDt0aGlzLmlzUGVyZm9ybWluZ0xhc3RUaW1lPWM7YT1hJiZhWzBdO2I9YiYmYlswXTtjPWJbMF0ubGVuZ3RoO3RoaXMuYnVmZmVyTGVuZ3RoIT09YyYmKHRoaXMuYnVmZmVyTGVuZ3RoPWMsQXRvbWljcy5zdG9yZSh0aGlzLnNoYXJlZEFycmF5QnVmZmVyLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cy5CVUZGRVJfTEVOLGMpKTtkPWEmJjA8YS5sZW5ndGg/KHRoaXMuaW5wdXRXcml0ZUluZGV4K2MpJVJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzOjA7Y29uc3QgZj1iJiYwPGIubGVuZ3RoPyh0aGlzLm91dHB1dFJlYWRJbmRleCtjKSVSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50czowO2lmKEF0b21pY3MubG9hZCh0aGlzLnNoYXJlZEFycmF5QnVmZmVyLEFVRElPX1NUQVRFJCRtb2R1bGUkc3JjJGNvbnN0YW50cy5BVkFJTF9PVVRfQlVGUyk+PWMpdGhpcy5idWZmZXJVbmRlcnJ1bkNvdW50JiYKKHRoaXMuYnVmZmVyVW5kZXJydW5Db3VudD0wKSxiLmZvckVhY2goKGcsaCk9PntnLnNldCh0aGlzLnNhYk91dHB1dENoYW5uZWxzW2hdLnN1YmFycmF5KHRoaXMub3V0cHV0UmVhZEluZGV4LGY8dGhpcy5vdXRwdXRSZWFkSW5kZXg/UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6ZikpfSksYSYmYVswXSYmMDxhWzBdLmxlbmd0aCYmKGEuZm9yRWFjaCgoZyxoKT0+e3RoaXMuc2FiSW5wdXRDaGFubmVsc1toXS5zZXQoZyx0aGlzLmlucHV0V3JpdGVJbmRleCl9KSx0aGlzLmlucHV0V3JpdGVJbmRleD1kLEF0b21pY3MuYWRkKHRoaXMuc2hhcmVkQXJyYXlCdWZmZXIsQVVESU9fU1RBVEUkJG1vZHVsZSRzcmMkY29uc3RhbnRzLkFWQUlMX0lOX0JVRlMsYVswXS5sZW5ndGgpKSx0aGlzLm91dHB1dFJlYWRJbmRleD1mLEF0b21pY3Muc3ViKHRoaXMuc2hhcmVkQXJyYXlCdWZmZXIsQVVESU9fU1RBVEUkJG1vZHVsZSRzcmMkY29uc3RhbnRzLkFWQUlMX09VVF9CVUZTLApjKSxBdG9taWNzLnN0b3JlKHRoaXMuc2hhcmVkQXJyYXlCdWZmZXIsQVVESU9fU1RBVEUkJG1vZHVsZSRzcmMkY29uc3RhbnRzLk9VVFBVVF9SRUFEX0lOREVYLHRoaXMub3V0cHV0UmVhZEluZGV4KTtlbHNle2lmKDQwOTg8dGhpcy5vdXRwdXRSZWFkSW5kZXgpY29uc29sZS5sb2coImJ1ZmZlciB1bmRlcnJ1biIpO2Vsc2UgcmV0dXJuITA7dGhpcy5idWZmZXJVbmRlcnJ1bkNvdW50Kz0xO2lmKDEwMD09PXRoaXMuYnVmZmVyVW5kZXJydW5Db3VudClyZXR1cm4gdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5wb3N0KCJGQVRBTDogMTAwIGJ1ZmZlcnMgZmFpbGVkIGluIGEgcm93IiksdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VFbmRlZCIpLCExfXJldHVybiEwfQpmdW5jdGlvbiBwcm9jZXNzVmFuaWxsYUJ1ZmZlcnMkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcihhLGIpe2lmKCF0aGlzLnZhbmlsbGFJbml0aWFsaXplZClyZXR1cm4gdGhpcy5hdWRpb0ZyYW1lUG9ydC5yZXF1ZXN0RnJhbWVzKHtyZWFkSW5kZXg6MCxudW1GcmFtZXM6ODE5Mn0pLHRoaXMucGVuZGluZ0ZyYW1lcys9ODE5Mix0aGlzLnZhbmlsbGFJbml0aWFsaXplZD0hMCx0aGlzLnN0YXJ0UHJvbWl6JiYodGhpcy5zdGFydFByb21peigpLGRlbGV0ZSB0aGlzLnN0YXJ0UHJvbWl6KSwhMDtpZighdGhpcy52YW5pbGxhRmlyc3RUcmFuc2ZlckRvbmUpcmV0dXJuKGImJmJbMF18fFtdKS5mb3JFYWNoKGY9PmYuZmlsbCgwKSksITA7YT1hJiZhWzBdO2NvbnN0IGM9KGI9YiYmYlswXSk/YlswXS5sZW5ndGg6MCxkPWImJjA8Yi5sZW5ndGg/KHRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleCtiWzBdLmxlbmd0aCklUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6CjAsZT1hJiYwPGEubGVuZ3RoPyh0aGlzLnZhbmlsbGFJbnB1dFJlYWRJbmRleCthWzBdLmxlbmd0aCklUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6MDtpZihjJiZ0aGlzLnZhbmlsbGFBdmFpbGFibGVGcmFtZXM+PWMpe2IuZm9yRWFjaCgoZixnKT0+e2Yuc2V0KHRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzW2ddLnN1YmFycmF5KHRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleCxkPHRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleD9SSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50czpkKSl9KTtpZihhJiYwPGEubGVuZ3RoJiYoYS5mb3JFYWNoKChmLGcpPT57dGhpcy52YW5pbGxhSW5wdXRDaGFubmVsc1tnXS5zZXQoZix0aGlzLnZhbmlsbGFJbnB1dFJlYWRJbmRleCl9KSwwPT09ZSVWQU5JTExBX0lOUFVUX1dSSVRFX0JVRkZFUl9MRU4kJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcikpe2NvbnN0IGY9W10sZz0oMD09PWU/UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6CmUpLVZBTklMTEFfSU5QVVRfV1JJVEVfQlVGRkVSX0xFTiQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyLGg9MD09PWU/UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHM6ZTt0aGlzLnZhbmlsbGFJbnB1dENoYW5uZWxzLmZvckVhY2gobD0+e2YucHVzaChsLnN1YmFycmF5KGcsaCkpfSk7dGhpcy5hdWRpb0lucHV0UG9ydC50cmFuc2ZlcklucHV0RnJhbWVzKGYpfXRoaXMudmFuaWxsYU91dHB1dFJlYWRJbmRleD1kO3RoaXMudmFuaWxsYUlucHV0UmVhZEluZGV4PWU7dGhpcy52YW5pbGxhQXZhaWxhYmxlRnJhbWVzLT1jO3RoaXMuYnVmZmVyVW5kZXJydW5Db3VudD0wfWVsc2UgaWYoMTx0aGlzLmJ1ZmZlclVuZGVycnVuQ291bnQmJjEyPnRoaXMuYnVmZmVyVW5kZXJydW5Db3VudCYmKHRoaXMud29ya2VyTWVzc2FnZVBvcnQucG9zdCgiQnVmZmVyIHVuZGVycnVuIiksdGhpcy5idWZmZXJVbmRlcnJ1bkNvdW50Kz0xKSwxMDA9PT10aGlzLmJ1ZmZlclVuZGVycnVuQ291bnQpcmV0dXJuIHRoaXMud29ya2VyTWVzc2FnZVBvcnQucG9zdCgiRkFUQUw6IDEwMCBidWZmZXJzIGZhaWxlZCBpbiBhIHJvdyIpLAp0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZUVuZGVkIiksITE7YT0yMDQ4LXRoaXMudmFuaWxsYUF2YWlsYWJsZUZyYW1lczswPGEmJih0aGlzLmF1ZGlvRnJhbWVQb3J0LnJlcXVlc3RGcmFtZXMoe3JlYWRJbmRleDoodGhpcy52YW5pbGxhQXZhaWxhYmxlRnJhbWVzK2QrdGhpcy5wZW5kaW5nRnJhbWVzKSVSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cyxudW1GcmFtZXM6YX0pLHRoaXMucGVuZGluZ0ZyYW1lcys9YSk7cmV0dXJuITB9CmNsYXNzIENzb3VuZFdvcmtsZXRQcm9jZXNzb3IkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3Nvcntjb25zdHJ1Y3Rvcih7cHJvY2Vzc29yT3B0aW9uczp7Y29udGV4dFVpZDphLGlucHV0c0NvdW50OmIsb3V0cHV0c0NvdW50OmMsa3NtcHM6ZCxtYXliZVNoYXJlZEFycmF5QnVmZmVyOmUsbWF5YmVTaGFyZWRBcnJheUJ1ZmZlckF1ZGlvSW46ZixtYXliZVNoYXJlZEFycmF5QnVmZmVyQXVkaW9PdXQ6Z319KXtzdXBlcigpO2FjdGl2ZU5vZGVzJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIuc2V0KGAke2F9Tm9kZWAsdGhpcyk7dGhpcy5tZXNzYWdlUG9ydHNSZWFkeT0hMTt0aGlzLmN1cnJlbnRQbGF5U3RhdGU9dm9pZCAwO3RoaXMucGF1c2U9dGhpcy5wYXVzZS5iaW5kKHRoaXMpO3RoaXMucmVzdW1lPXRoaXMucmVzdW1lLmJpbmQodGhpcyk7dGhpcy5pc1BhdXNlZD0hMTt0aGlzLmtzbXBzPWQ7dGhpcy5pbnB1dHNDb3VudD0KYjt0aGlzLm91dHB1dHNDb3VudD1jO3RoaXMuYnVmZmVyVW5kZXJydW5Db3VudD10aGlzLm91dHB1dFJlYWRJbmRleD10aGlzLmlucHV0V3JpdGVJbmRleD0wO3RoaXMuaXNQZXJmb3JtaW5nTGFzdFRpbWU9ITE7dGhpcy5wcmVQcm9jZXNzQ291bnQ9MDtpZihlKXt0aGlzLnNoYXJlZEFycmF5QnVmZmVyPWU7dGhpcy5hdWRpb1N0cmVhbUluPWY7dGhpcy5hdWRpb1N0cmVhbU91dD1nO3RoaXMuc2FiT3V0cHV0Q2hhbm5lbHM9W107dGhpcy5zYWJJbnB1dENoYW5uZWxzPVtdO2ZvcihhPTA7YTxiOysrYSl0aGlzLnNhYklucHV0Q2hhbm5lbHMucHVzaChuZXcgRmxvYXQ2NEFycmF5KHRoaXMuYXVkaW9TdHJlYW1JbixSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cyphLFJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzKSk7Zm9yKGI9MDtiPGM7KytiKXRoaXMuc2FiT3V0cHV0Q2hhbm5lbHMucHVzaChuZXcgRmxvYXQ2NEFycmF5KHRoaXMuYXVkaW9TdHJlYW1PdXQsClJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzKmIsUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHMpKTt0aGlzLmFjdHVhbFByb2Nlc3M9cHJvY2Vzc1NoYXJlZEFycmF5QnVmZmVyJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIuYmluZCh0aGlzKX1lbHNlIHRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzPVtdLHRoaXMudmFuaWxsYUlucHV0Q2hhbm5lbHM9W10sdGhpcy5wZW5kaW5nRnJhbWVzPXRoaXMudmFuaWxsYUF2YWlsYWJsZUZyYW1lcz10aGlzLnZhbmlsbGFJbnB1dFJlYWRJbmRleD10aGlzLnZhbmlsbGFPdXRwdXRSZWFkSW5kZXg9MCx0aGlzLnZhbmlsbGFGaXJzdFRyYW5zZmVyRG9uZT10aGlzLnZhbmlsbGFJbml0aWFsaXplZD0hMSx0aGlzLm1pbkJ1ZmZlclNpemU9NDA5Nix0aGlzLnZhbmlsbGFJbnB1dENoYW5uZWxzPWluc3RhbnRpYXRlQXVkaW9QYWNrZXQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoYiwKUklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHMpLHRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzPWluc3RhbnRpYXRlQXVkaW9QYWNrZXQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoYyxSSU5HX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJGNvbnN0YW50cyksdGhpcy5hY3R1YWxQcm9jZXNzPXByb2Nlc3NWYW5pbGxhQnVmZmVycyQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyLmJpbmQodGhpcyksdGhpcy51cGRhdGVWYW5pbGxhRnJhbWVzPXRoaXMudXBkYXRlVmFuaWxsYUZyYW1lcy5iaW5kKHRoaXMpO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHtpbml0aWFsaXplOmluaXRpYWxpemUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcixwYXVzZTp0aGlzLnBhdXNlLHJlc3VtZTp0aGlzLnJlc3VtZX0sdGhpcy5wb3J0KTtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigiV29ya2VyIHRocmVhZCB3YXMgY29uc3RydWN0ZWQiKSgpfWluaXRDYWxsYmFja3Moe3dvcmtlck1lc3NhZ2VQb3J0OmEsCmF1ZGlvSW5wdXRQb3J0OmIsYXVkaW9GcmFtZVBvcnQ6YyxzdGFydFByb21pejpkfSl7bG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImluaXRDYWxsYmFja3MgaW4gd29ya2VyIikoKTthJiYodGhpcy53b3JrZXJNZXNzYWdlUG9ydD1hKTtiJiYodGhpcy5hdWRpb0lucHV0UG9ydD1iKTtjJiYodGhpcy5hdWRpb0ZyYW1lUG9ydD1jKTt0aGlzLm1lc3NhZ2VQb3J0c1JlYWR5PSEwO3RoaXMuc3RhcnRQcm9taXo9ZH11cGRhdGVWYW5pbGxhRnJhbWVzKHthdWRpb1BhY2tldDphLG51bUZyYW1lczpiLHJlYWRJbmRleDpjfSl7dGhpcy5wZW5kaW5nRnJhbWVzLT1iO2lmKGEpe2ZvcihsZXQgZD0wO2Q8dGhpcy5vdXRwdXRzQ291bnQ7KytkKXtsZXQgZT0hMSxmOyhjK2IpJVJJTkdfQlVGRkVSX1NJWkUkJG1vZHVsZSRzcmMkY29uc3RhbnRzPGMmJihlPSEwLGY9UklOR19CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyRjb25zdGFudHMtYyk7ZT8odGhpcy52YW5pbGxhT3V0cHV0Q2hhbm5lbHNbZF0uc2V0KGFbZF0uc3ViYXJyYXkoMCwKZiksYyksdGhpcy52YW5pbGxhT3V0cHV0Q2hhbm5lbHNbZF0uc2V0KGFbZF0uc3ViYXJyYXkoZiksMCkpOnRoaXMudmFuaWxsYU91dHB1dENoYW5uZWxzW2RdLnNldChhW2RdLGMpfXRoaXMudmFuaWxsYUF2YWlsYWJsZUZyYW1lcys9Yjt0aGlzLnZhbmlsbGFGaXJzdFRyYW5zZmVyRG9uZXx8KHRoaXMudmFuaWxsYUZpcnN0VHJhbnNmZXJEb25lPSEwKX19cGF1c2UoKXt0aGlzLmlzUGF1c2VkPSEwO3RoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlUGF1c2VkIil9cmVzdW1lKCl7dGhpcy5pc1BhdXNlZD0hMTt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZVJlc3VtZWQiKX1wcm9jZXNzKGEsYil7cmV0dXJuIHRoaXMuaXNQYXVzZWR8fCF0aGlzLm1lc3NhZ2VQb3J0c1JlYWR5PyEwOnRoaXMuYWN0dWFsUHJvY2VzcyhhLGIpfX0KZnVuY3Rpb24gaW5pdE1lc3NhZ2VQb3J0JCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIoe3BvcnQ6YX0pe2xvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0TWVzc2FnZVBvcnQgaW4gd29ya2VyIikoKTtjb25zdCBiPW5ldyAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU7Yi5wb3N0PWM9PmEucG9zdE1lc3NhZ2Uoe2xvZzpjfSk7Yi5icm9hZGNhc3RQbGF5U3RhdGU9Yz0+YS5wb3N0TWVzc2FnZSh7cGxheVN0YXRlQ2hhbmdlOmN9KTtiLnJlYWR5PSEwO3JldHVybiBifQpmdW5jdGlvbiBpbml0UmVxdWVzdFBvcnQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcih7cmVxdWVzdFBvcnQ6YSxhdWRpb05vZGU6Yn0pe2xvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0UmVxdWVzdFBvcnQgaW4gd29ya2VyIikoKTthLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGM9Pntjb25zdCB7YXVkaW9QYWNrZXQ6ZCxyZWFkSW5kZXg6ZSxudW1GcmFtZXM6Zn09Yy5kYXRhO2IudXBkYXRlVmFuaWxsYUZyYW1lcyh7YXVkaW9QYWNrZXQ6ZCxudW1GcmFtZXM6ZixyZWFkSW5kZXg6ZX0pfSk7YS5zdGFydCgpO3JldHVybntyZXF1ZXN0RnJhbWVzOmM9PmEucG9zdE1lc3NhZ2UoYykscmVhZHk6ITB9fQpmdW5jdGlvbiBpbml0QXVkaW9JbnB1dFBvcnQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcih7aW5wdXRQb3J0OmF9KXtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigiaW5pdEF1ZGlvSW5wdXRQb3J0IGluIHdvcmtlciIpKCk7cmV0dXJue3JlYWR5OiExLHRyYW5zZmVySW5wdXRGcmFtZXM6Yj0+YS5wb3N0TWVzc2FnZShiKX19CmNvbnN0IGluaXRpYWxpemUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3dvcmtlcj1hc3luYyh7Y29udGV4dFVpZDphLGlucHV0UG9ydDpiLG1lc3NhZ2VQb3J0OmMscmVxdWVzdFBvcnQ6ZH0pPT57YT1hY3RpdmVOb2RlcyQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyLmdldChgJHthfU5vZGVgKTtjPWluaXRNZXNzYWdlUG9ydCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKHtwb3J0OmN9KTtiPWluaXRBdWRpb0lucHV0UG9ydCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKHtpbnB1dFBvcnQ6Yn0pO2Q9aW5pdFJlcXVlc3RQb3J0JCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF93b3JrZXIoe3JlcXVlc3RQb3J0OmQsYXVkaW9Ob2RlOmF9KTtsZXQgZTtjb25zdCBmPW5ldyBQcm9taXNlKGc9PntlPWd9KTthLmluaXRDYWxsYmFja3Moe3dvcmtlck1lc3NhZ2VQb3J0OmMsYXVkaW9JbnB1dFBvcnQ6YixhdWRpb0ZyYW1lUG9ydDpkLApzdGFydFByb21pejplfSk7YXdhaXQgZn07cmVnaXN0ZXJQcm9jZXNzb3IoImNzb3VuZC13b3JrbGV0LXByb2Nlc3NvciIsQ3NvdW5kV29ya2xldFByb2Nlc3NvciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyKTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfd29ya2VyPXt9OwovLyMgc291cmNlTWFwcGluZ1VSTD1fX2NvbXBpbGVkLndvcmtsZXQud29ya2VyLmpzLm1hcAo=",
+module$dist$__compiled_worklet_worker_inline={};module$dist$__compiled_worklet_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_worklet_worker_inline;let UID$$module$src$mains$worklet_main=0;
+class AudioWorkletMainThread$$module$src$mains$worklet_main{constructor({audioContext:a,audioContextIsProvided:b,autoConnect:c}){this.autoConnect=c;this.audioContextIsProvided=b;this.ipcMessagePorts=void 0;this.audioContext=a;this.softwareBufferSize=this.hardwareBufferSize=this.outputsCount=this.inputsCount=this.sampleRate=this.ksmps=this.workletProxy=this.csoundWorkerMain=this.currentPlayState=this.audioWorkletNode=void 0;this.initialize=this.initialize.bind(this);this.onPlayStateChange=this.onPlayStateChange.bind(this);
+this.terminateInstance=this.terminateInstance.bind(this);this.createWorkletNode=this.createWorkletNode.bind(this);logWorkletMain$$module$src$logger("AudioWorkletMainThread was constructed")()}async terminateInstance(){this.audioWorkletNode&&(this.audioWorkletNode.disconnect(),delete this.audioWorkletNode);if(this.audioContext){if("closed"!==this.audioContext.state)try{await this.audioContext.close()}catch{}delete this.audioContext}this.workletProxy&&(this.workletProxy[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),
+delete this.workletProxy)}createWorkletNode(a,b,c){a=new AudioWorkletNode(a,"csound-worklet-processor",{inputChannelCount:b?[b]:0,outputChannelCount:[this.outputsCount||2],processorOptions:{contextUid:c,isRequestingInput:this.isRequestingInput,inputsCount:b,outputsCount:this.outputsCount,ksmps:this.ksmps,maybeSharedArrayBuffer:this.csoundWorkerMain.hasSharedArrayBuffer&&this.csoundWorkerMain.audioStatePointer,maybeSharedArrayBufferAudioIn:this.csoundWorkerMain.hasSharedArrayBuffer&&this.csoundWorkerMain.audioStreamIn,
+maybeSharedArrayBufferAudioOut:this.csoundWorkerMain.hasSharedArrayBuffer&&this.csoundWorkerMain.audioStreamOut}});this.csoundWorkerMain.publicEvents.triggerOnAudioNodeCreated(a);return a}async onPlayStateChange(a){this.currentPlayState=a;switch(a){case "realtimePerformanceStarted":logWorkletMain$$module$src$logger("event received: realtimePerformanceStarted")();await this.initialize();this.csoundWorkerMain&&this.csoundWorkerMain.eventPromises&&(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformanceStarted(this),
+this.csoundWorkerMain.eventPromises&&await this.csoundWorkerMain.eventPromises.releaseStartPromise());break;case "realtimePerformanceEnded":logWorkletMain$$module$src$logger("event received: realtimePerformanceEnded"+!this.csoundWorkerMain.hasSharedArrayBuffer?" cleaning up ports":"")();if(!this.audioContextIsProvided&&this.autoConnect&&this.audioContext&&"closed"!==this.audioContext.state)try{await this.audioContext.close()}catch{}this.autoConnect&&this.audioWorkletNode&&(this.audioWorkletNode.disconnect(),
+delete this.audioWorkletNode);this.workletProxy&&(this.workletProxy[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),delete this.workletProxy);this.workletWorkerUrl&&(window.URL||window.webkitURL).revokeObjectURL(this.workletWorkerUrl);this.audioWorkletNode&&delete this.audioWorkletNode;this.softwareBufferSize=this.hardwareBufferSize=this.outputsCount=this.inputsCount=this.sampleRate=this.currentPlayState=void 0;break;case "realtimePerformancePaused":this.csoundWorkerMain&&this.csoundWorkerMain.eventPromises&&
+(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformancePaused(this),await this.csoundWorkerMain.eventPromises.releasePausePromise());break;case "realtimePerformanceResumed":this.csoundWorkerMain&&this.csoundWorkerMain.eventPromises&&(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformanceResumed(this),await this.csoundWorkerMain.eventPromises.releaseResumePromise())}}async initialize(){this.audioContext||(this.audioContextIsProvided&&
+console.error("fatal: the provided AudioContext was undefined"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));"closed"===this.audioContext.state&&(this.audioContextIsProvided&&console.error("fatal: the provided AudioContext was closed, falling back new AudioContext"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));this.sampleRate!==this.audioContext.sampleRate&&(this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}),
+this.audioContextIsProvided&&console.error("Internal error: sample rate was ignored from provided audioContext"));this.workletWorkerUrl=$jscompDefaultExport$$module$dist$__compiled_worklet_worker_inline();try{await this.audioContext.audioWorklet.addModule(this.workletWorkerUrl)}catch(c){console.error("Error calling audioWorklet.addModule",c)}logWorkletMain$$module$src$logger("WorkletWorker module added")();if(this.csoundWorkerMain){var a=`audioWorklet${UID$$module$src$mains$worklet_main}`;UID$$module$src$mains$worklet_main+=
+1;this.isRequestingMidi&&(logWorkletMain$$module$src$logger("requesting for web-midi connection"),requestMidi$$module$src$utils$request_midi({onMidiMessage:this.csoundWorkerMain.handleMidiInput.bind(this.csoundWorkerMain)}));if(this.isRequestingInput){let c;var b=new Promise(f=>{c=f});const d=void 0===navigator.mediaDevices?navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia:navigator.mediaDevices.getUserMedia,e=f=>{if(f){f=this.audioContext.createMediaStreamSource(f);
+this.inputsCount=f.channelCount;const g=this.createWorkletNode(this.audioContext,f.channelCount,a);this.audioWorkletNode=g;this.autoConnect&&f.connect(g).connect(this.audioContext.destination)}else this.inputsCount=0,this.audioWorkletNode=this.createWorkletNode(this.audioContext,0,a),this.autoConnect&&this.audioWorkletNode.connect(this.audioContext.destination);c&&c()};logWorkletMain$$module$src$logger("requesting microphone access")();void 0===navigator.mediaDevices?d.call(navigator,{audio:{optional:[{echoCancellation:!1,
+sampleSize:32}]}},e,console.error):d.call(navigator.mediaDevices,{audio:{echoCancellation:!1,sampleSize:32}}).then(e).catch(console.error)}else this.audioWorkletNode=this.createWorkletNode(this.audioContext,0,a),logWorkletMain$$module$src$logger("connecting Node to AudioContext destination")(),this.autoConnect&&this.audioWorkletNode.connect(this.audioContext.destination);b&&await b;this.workletProxy=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(this.audioWorkletNode.port);this.ipcMessagePorts.mainMessagePortAudio.addEventListener("message",
+messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePortAudio.start();await this.workletProxy.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({contextUid:a,messagePort:this.ipcMessagePorts.workerMessagePortAudio,requestPort:this.ipcMessagePorts.audioWorkerFrameRequestPort,inputPort:this.ipcMessagePorts.audioWorkerAudioInputPort},[this.ipcMessagePorts.workerMessagePortAudio,this.ipcMessagePorts.audioWorkerFrameRequestPort,this.ipcMessagePorts.audioWorkerAudioInputPort]));
+logWorkletMain$$module$src$logger("initialization finished in main")()}else console.error("fatal: worker not reachable from worklet-main thread")}}var $jscompDefaultExport$$module$src$mains$worklet_main=AudioWorkletMainThread$$module$src$mains$worklet_main,module$src$mains$worklet_main={};module$src$mains$worklet_main.default=$jscompDefaultExport$$module$src$mains$worklet_main;const requestMicrophoneNode$$module$src$mains$io_utils=a=>{const b=void 0===navigator.mediaDevices?navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia:navigator.mediaDevices.getUserMedia;console.log("requesting microphone access");void 0===navigator.mediaDevices?b.call(navigator,{audio:{optional:[{echoCancellation:!1,sampleSize:32}]}},a,console.error):b.call(navigator.mediaDevices,{audio:{echoCancellation:!1,sampleSize:32}}).then(a).catch(console.error)};
+async function enableAudioInput$$module$src$mains$io_utils(){console.log("enabling audio input");requestMicrophoneNode$$module$src$mains$io_utils(async a=>{if(a){a=(await this.getAudioContext()).createMediaStreamSource(a);this.inputsCount=a.channelCount;const b=await this.getNode();a.connect(b)}})}var module$src$mains$io_utils={};module$src$mains$io_utils.enableAudioInput=enableAudioInput$$module$src$mains$io_utils;module$src$mains$io_utils.requestMicrophoneNode=requestMicrophoneNode$$module$src$mains$io_utils;var $jscompDefaultExport$$module$dist$__compiled_old_spn_worker_inline=()=>(window.URL||window.webkitURL).createObjectURL(new Blob(['(function(){/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\nvar $jscomp=$jscomp||{};$jscomp.scope={};var COMPILED=!0,goog=goog||{};goog.global=this||self;goog.exportPath_=function(a,b,c,d){a=a.split(".");d=d||goog.global;a[0]in d||"undefined"==typeof d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)if(a.length||void 0===b)d=d[e]&&d[e]!==Object.prototype[e]?d[e]:d[e]={};else if(!c&&goog.isObject(b)&&goog.isObject(d[e]))for(var f in b)b.hasOwnProperty(f)&&(d[e][f]=b[f]);else d[e]=b};\ngoog.define=function(a,b){if(!COMPILED){var c=goog.global.CLOSURE_UNCOMPILED_DEFINES,d=goog.global.CLOSURE_DEFINES;c&&void 0===c.nodeType&&Object.prototype.hasOwnProperty.call(c,a)?b=c[a]:d&&void 0===d.nodeType&&Object.prototype.hasOwnProperty.call(d,a)&&(b=d[a])}return b};goog.FEATURESET_YEAR=2020;goog.DEBUG=!0;goog.LOCALE="en";goog.getLocale=function(){return goog.LOCALE};goog.TRUSTED_SITE=!0;goog.DISALLOW_TEST_ONLY_CODE=COMPILED&&!goog.DEBUG;goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING=!1;\ngoog.provide=function(a){if(goog.isInModuleLoader_())throw Error("goog.provide cannot be used within a module.");if(!COMPILED&&goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');goog.constructNamespace_(a)};goog.constructNamespace_=function(a,b,c){if(!COMPILED){delete goog.implicitNamespaces_[a];for(var d=a;(d=d.substring(0,d.lastIndexOf(".")))&&!goog.getObjectByName(d);)goog.implicitNamespaces_[d]=!0}goog.exportPath_(a,b,c)};goog.NONCE_PATTERN_=/^[\\w+/_-]+[=]{0,2}$/;\ngoog.getScriptNonce_=function(a){a=(a||goog.global).document;return(a=a.querySelector&&a.querySelector("script[nonce]"))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.NONCE_PATTERN_.test(a)?a:""};goog.VALID_MODULE_RE_=/^[a-zA-Z_$][a-zA-Z0-9._$]*$/;\ngoog.module=function(a){if("string"!==typeof a||!a||-1==a.search(goog.VALID_MODULE_RE_))throw Error("Invalid module identifier");if(!goog.isInGoogModuleLoader_())throw Error("Module "+a+" has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You\'re likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide.");if(goog.moduleLoaderState_.moduleName)throw Error("goog.module may only be called once per module.");\ngoog.moduleLoaderState_.moduleName=a;if(!COMPILED){if(goog.isProvided_(a))throw Error(\'Namespace "\'+a+\'" already declared.\');delete goog.implicitNamespaces_[a]}};goog.module.get=function(a){return goog.module.getInternal_(a)};goog.module.getInternal_=function(a){if(!COMPILED){if(a in goog.loadedModules_)return goog.loadedModules_[a].exports;if(!goog.implicitNamespaces_[a])return a=goog.getObjectByName(a),null!=a?a:null}return null};goog.ModuleType={ES6:"es6",GOOG:"goog"};goog.moduleLoaderState_=null;\ngoog.isInModuleLoader_=function(){return goog.isInGoogModuleLoader_()||goog.isInEs6ModuleLoader_()};goog.isInGoogModuleLoader_=function(){return!!goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.GOOG};goog.isInEs6ModuleLoader_=function(){if(goog.moduleLoaderState_&&goog.moduleLoaderState_.type==goog.ModuleType.ES6)return!0;var a=goog.global.$jscomp;return a?"function"!=typeof a.getCurrentModulePath?!1:!!a.getCurrentModulePath():!1};\ngoog.module.declareLegacyNamespace=function(){if(!COMPILED&&!goog.isInGoogModuleLoader_())throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module");if(!COMPILED&&!goog.moduleLoaderState_.moduleName)throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace.");goog.moduleLoaderState_.declareLegacyNamespace=!0};\ngoog.declareModuleId=function(a){if(!COMPILED){if(!goog.isInEs6ModuleLoader_())throw Error("goog.declareModuleId may only be called from within an ES6 module");if(goog.moduleLoaderState_&&goog.moduleLoaderState_.moduleName)throw Error("goog.declareModuleId may only be called once per module.");if(a in goog.loadedModules_)throw Error(\'Module with namespace "\'+a+\'" already exists.\');}if(goog.moduleLoaderState_)goog.moduleLoaderState_.moduleName=a;else{var b=goog.global.$jscomp;if(!b||"function"!=typeof b.getCurrentModulePath)throw Error(\'Module with namespace "\'+\na+\'" has been loaded incorrectly.\');b=b.require(b.getCurrentModulePath());goog.loadedModules_[a]={exports:b,type:goog.ModuleType.ES6,moduleId:a}}};goog.setTestOnly=function(a){if(goog.DISALLOW_TEST_ONLY_CODE)throw a=a||"",Error("Importing test-only code into non-debug environment"+(a?": "+a:"."));};goog.forwardDeclare=function(a){};COMPILED||(goog.isProvided_=function(a){return a in goog.loadedModules_||!goog.implicitNamespaces_[a]&&null!=goog.getObjectByName(a)},goog.implicitNamespaces_={"goog.module":!0});\ngoog.getObjectByName=function(a,b){a=a.split(".");b=b||goog.global;for(var c=0;c<a.length;c++)if(b=b[a[c]],null==b)return null;return b};goog.addDependency=function(a,b,c,d){!COMPILED&&goog.DEPENDENCIES_ENABLED&&goog.debugLoader_.addDependency(a,b,c,d)};goog.ENABLE_DEBUG_LOADER=!0;goog.logToConsole_=function(a){goog.global.console&&goog.global.console.error(a)};\ngoog.require=function(a){if(!COMPILED){goog.ENABLE_DEBUG_LOADER&&goog.debugLoader_.requested(a);if(goog.isProvided_(a)){if(goog.isInModuleLoader_())return goog.module.getInternal_(a)}else if(goog.ENABLE_DEBUG_LOADER){var b=goog.moduleLoaderState_;goog.moduleLoaderState_=null;try{goog.debugLoader_.load_(a)}finally{goog.moduleLoaderState_=b}}return null}};goog.requireType=function(a){return{}};goog.basePath="";goog.abstractMethod=function(){throw Error("unimplemented abstract method");};\ngoog.addSingletonGetter=function(a){a.instance_=void 0;a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.LOAD_MODULE_USING_EVAL=!0;goog.SEAL_MODULE_EXPORTS=goog.DEBUG;goog.loadedModules_={};goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER;goog.TRANSPILE="detect";goog.ASSUME_ES_MODULES_TRANSPILED=!1;goog.TRUSTED_TYPES_POLICY_NAME="goog";\ngoog.hasBadLetScoping=null;\ngoog.loadModule=function(a){var b=goog.moduleLoaderState_;try{goog.moduleLoaderState_={moduleName:"",declareLegacyNamespace:!1,type:goog.ModuleType.GOOG};var c={},d=c;if("function"===typeof a)d=a.call(void 0,d);else if("string"===typeof a)d=goog.loadModuleFromSource_.call(void 0,d,a);else throw Error("Invalid module definition");var e=goog.moduleLoaderState_.moduleName;if("string"===typeof e&&e)goog.moduleLoaderState_.declareLegacyNamespace?goog.constructNamespace_(e,d,c!==d):goog.SEAL_MODULE_EXPORTS&&\nObject.seal&&"object"==typeof d&&null!=d&&Object.seal(d),goog.loadedModules_[e]={exports:d,type:goog.ModuleType.GOOG,moduleId:goog.moduleLoaderState_.moduleName};else throw Error(\'Invalid module name "\'+e+\'"\');}finally{goog.moduleLoaderState_=b}};goog.loadModuleFromSource_=function(a,b){eval(goog.CLOSURE_EVAL_PREFILTER_.createScript(b));return a};goog.normalizePath_=function(a){a=a.split("/");for(var b=0;b<a.length;)"."==a[b]?a.splice(b,1):b&&".."==a[b]&&a[b-1]&&".."!=a[b-1]?a.splice(--b,2):b++;return a.join("/")};\ngoog.loadFileSync_=function(a){if(goog.global.CLOSURE_LOAD_FILE_SYNC)return goog.global.CLOSURE_LOAD_FILE_SYNC(a);try{var b=new goog.global.XMLHttpRequest;b.open("get",a,!1);b.send();return 0==b.status||200==b.status?b.responseText:null}catch(c){return null}};goog.typeOf=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};\ngoog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return Object.prototype.hasOwnProperty.call(a,goog.UID_PROPERTY_)&&a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){null!==a&&"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};\ngoog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);b="array"==b?[]:{};for(var c in a)b[c]=goog.cloneObject(a[c]);return b}return a};goog.bindNative_=function(a,b,c){return a.call.apply(a.bind,arguments)};\ngoog.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};\ngoog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};goog.now=function(){return Date.now()};goog.globalEval=function(a){(0,eval)(a)};\ngoog.getCssName=function(a,b){if("."==String(a).charAt(0))throw Error(\'className passed in goog.getCssName must not start with ".". You passed: \'+a);var c=function(e){return goog.cssNameMapping_[e]||e},d=function(e){e=e.split("-");for(var f=[],g=0;g<e.length;g++)f.push(c(e[g]));return f.join("-")};d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(e){return e};a=b?a+"-"+d(b):d(a);return goog.global.CLOSURE_CSS_NAME_MAP_FN?goog.global.CLOSURE_CSS_NAME_MAP_FN(a):a};\ngoog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};!COMPILED&&goog.global.CLOSURE_CSS_NAME_MAPPING&&(goog.cssNameMapping_=goog.global.CLOSURE_CSS_NAME_MAPPING);goog.GetMsgOptions=function(){};\ngoog.getMsg=function(a,b,c){c&&c.html&&(a=a.replace(/</g,"&lt;"));c&&c.unescapeHtmlEntities&&(a=a.replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&apos;/g,"\'").replace(/&quot;/g,\'"\').replace(/&amp;/g,"&"));b&&(a=a.replace(/\\{\\$([^}]+)}/g,function(d,e){return null!=b&&e in b?b[e]:d}));return a};goog.getMsgWithFallback=function(a,b){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,!0,c)};goog.exportProperty=function(a,b,c){a[b]=c};\ngoog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.base=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};goog.scope=function(a){if(goog.isInModuleLoader_())throw Error("goog.scope is not supported within a module.");a.call(goog.global)};COMPILED||(goog.global.COMPILED=COMPILED);\ngoog.defineClass=function(a,b){var c=b.constructor,d=b.statics;c&&c!=Object.prototype.constructor||(c=function(){throw Error("cannot instantiate an interface (no constructor defined).");});c=goog.defineClass.createSealingConstructor_(c,a);a&&goog.inherits(c,a);delete b.constructor;delete b.statics;goog.defineClass.applyProperties_(c.prototype,b);null!=d&&(d instanceof Function?d(c):goog.defineClass.applyProperties_(c,d));return c};goog.defineClass.SEAL_CLASS_INSTANCES=goog.DEBUG;\ngoog.defineClass.createSealingConstructor_=function(a,b){return goog.defineClass.SEAL_CLASS_INSTANCES?function(){var c=a.apply(this,arguments)||this;c[goog.UID_PROPERTY_]=c[goog.UID_PROPERTY_];return c}:a};goog.defineClass.OBJECT_PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");\ngoog.defineClass.applyProperties_=function(a,b){for(var c in b)Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c]);for(var d=0;d<goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++)c=goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d],Object.prototype.hasOwnProperty.call(b,c)&&(a[c]=b[c])};goog.identity_=function(a){return a};\ngoog.createTrustedTypesPolicy=function(a){var b=null,c=goog.global.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:goog.identity_,createScript:goog.identity_,createScriptURL:goog.identity_})}catch(d){goog.logToConsole_(d.message)}return b};\n!COMPILED&&goog.DEPENDENCIES_ENABLED&&(goog.isEdge_=function(){return!!(goog.global.navigator&&goog.global.navigator.userAgent?goog.global.navigator.userAgent:"").match(/Edge\\/(\\d+)(\\.\\d)*/i)},goog.inHtmlDocument_=function(){var a=goog.global.document;return null!=a&&"write"in a},goog.isDocumentLoading_=function(){var a=goog.global.document;return a.attachEvent?"complete"!=a.readyState:"loading"==a.readyState},goog.findBasePath_=function(){if(void 0!=goog.global.CLOSURE_BASE_PATH&&"string"===typeof goog.global.CLOSURE_BASE_PATH)goog.basePath=\ngoog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_()){var a=goog.global.document,b=a.currentScript;a=b?[b]:a.getElementsByTagName("SCRIPT");for(b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?");d=-1==d?c.length:d;if("base.js"==c.slice(d-7,d)){goog.basePath=c.slice(0,d-7);break}}}},goog.findBasePath_(),goog.protectScriptTag_=function(a){return a.replace(/<\\/(SCRIPT)/ig,"\\\\x3c/$1")},goog.DebugLoader_=function(){this.dependencies_={};this.idToPath_={};this.written_={};this.loadingDeps_=\n[];this.depsToLoad_=[];this.paused_=!1;this.factory_=new goog.DependencyFactory;this.deferredCallbacks_={};this.deferredQueue_=[]},goog.DebugLoader_.prototype.bootstrap=function(a,b){function c(){d&&(goog.global.setTimeout(d,0),d=null)}var d=b;if(a.length){b=[];for(var e=0;e<a.length;e++){var f=this.getPathFromDeps_(a[e]);if(!f)throw Error("Unregonized namespace: "+a[e]);b.push(this.dependencies_[f])}f=goog.require;var g=0;for(e=0;e<a.length;e++)f(a[e]),b[e].onLoad(function(){++g==a.length&&c()})}else c()},\ngoog.DebugLoader_.prototype.loadClosureDeps=function(){this.depsToLoad_.push(this.factory_.createDependency(goog.normalizePath_(goog.basePath+"deps.js"),"deps.js",[],[],{}));this.loadDeps_()},goog.DebugLoader_.prototype.requested=function(a,b){(a=this.getPathFromDeps_(a))&&(b||this.areDepsLoaded_(this.dependencies_[a].requires))&&(b=this.deferredCallbacks_[a])&&(delete this.deferredCallbacks_[a],b())},goog.DebugLoader_.prototype.setDependencyFactory=function(a){this.factory_=a},goog.DebugLoader_.prototype.load_=\nfunction(a){if(this.getPathFromDeps_(a)){var b=this,c=[],d=function(e){var f=b.getPathFromDeps_(e);if(!f)throw Error("Bad dependency path or symbol: "+e);if(!b.written_[f]){b.written_[f]=!0;e=b.dependencies_[f];for(f=0;f<e.requires.length;f++)goog.isProvided_(e.requires[f])||d(e.requires[f]);c.push(e)}};d(a);a=!!this.depsToLoad_.length;this.depsToLoad_=this.depsToLoad_.concat(c);this.paused_||a||this.loadDeps_()}else goog.logToConsole_("goog.require could not find: "+a)},goog.DebugLoader_.prototype.loadDeps_=\nfunction(){for(var a=this,b=this.paused_;this.depsToLoad_.length&&!b;)(function(){var c=!1,d=a.depsToLoad_.shift(),e=!1;a.loading_(d);var f={pause:function(){if(c)throw Error("Cannot call pause after the call to load.");b=!0},resume:function(){c?a.resume_():b=!1},loaded:function(){if(e)throw Error("Double call to loaded.");e=!0;a.loaded_(d)},pending:function(){for(var g=[],h=0;h<a.loadingDeps_.length;h++)g.push(a.loadingDeps_[h]);return g},setModuleState:function(g){goog.moduleLoaderState_={type:g,\nmoduleName:"",declareLegacyNamespace:!1}},registerEs6ModuleExports:function(g,h,k){k&&(goog.loadedModules_[k]={exports:h,type:goog.ModuleType.ES6,moduleId:k||""})},registerGoogModuleExports:function(g,h){goog.loadedModules_[g]={exports:h,type:goog.ModuleType.GOOG,moduleId:g}},clearModuleState:function(){goog.moduleLoaderState_=null},defer:function(g){if(c)throw Error("Cannot register with defer after the call to load.");a.defer_(d,g)},areDepsLoaded:function(){return a.areDepsLoaded_(d.requires)}};\ntry{d.load(f)}finally{c=!0}})();b&&this.pause_()},goog.DebugLoader_.prototype.pause_=function(){this.paused_=!0},goog.DebugLoader_.prototype.resume_=function(){this.paused_&&(this.paused_=!1,this.loadDeps_())},goog.DebugLoader_.prototype.loading_=function(a){this.loadingDeps_.push(a)},goog.DebugLoader_.prototype.loaded_=function(a){for(var b=0;b<this.loadingDeps_.length;b++)if(this.loadingDeps_[b]==a){this.loadingDeps_.splice(b,1);break}for(b=0;b<this.deferredQueue_.length;b++)if(this.deferredQueue_[b]==\na.path){this.deferredQueue_.splice(b,1);break}if(this.loadingDeps_.length==this.deferredQueue_.length&&!this.depsToLoad_.length)for(;this.deferredQueue_.length;)this.requested(this.deferredQueue_.shift(),!0);a.loaded()},goog.DebugLoader_.prototype.areDepsLoaded_=function(a){for(var b=0;b<a.length;b++){var c=this.getPathFromDeps_(a[b]);if(!c||!(c in this.deferredCallbacks_||goog.isProvided_(a[b])))return!1}return!0},goog.DebugLoader_.prototype.getPathFromDeps_=function(a){return a in this.idToPath_?\nthis.idToPath_[a]:a in this.dependencies_?a:null},goog.DebugLoader_.prototype.defer_=function(a,b){this.deferredCallbacks_[a.path]=b;this.deferredQueue_.push(a.path)},goog.LoadController=function(){},goog.LoadController.prototype.pause=function(){},goog.LoadController.prototype.resume=function(){},goog.LoadController.prototype.loaded=function(){},goog.LoadController.prototype.pending=function(){},goog.LoadController.prototype.registerEs6ModuleExports=function(a,b,c){},goog.LoadController.prototype.setModuleState=\nfunction(a){},goog.LoadController.prototype.clearModuleState=function(){},goog.LoadController.prototype.defer=function(a){},goog.LoadController.prototype.areDepsLoaded=function(){},goog.Dependency=function(a,b,c,d,e){this.path=a;this.relativePath=b;this.provides=c;this.requires=d;this.loadFlags=e;this.loaded_=!1;this.loadCallbacks_=[]},goog.Dependency.prototype.getPathName=function(){var a=this.path,b=a.indexOf("://");0<=b&&(a=a.substring(b+3),b=a.indexOf("/"),0<=b&&(a=a.substring(b+1)));return a},\ngoog.Dependency.prototype.onLoad=function(a){this.loaded_?a():this.loadCallbacks_.push(a)},goog.Dependency.prototype.loaded=function(){this.loaded_=!0;var a=this.loadCallbacks_;this.loadCallbacks_=[];for(var b=0;b<a.length;b++)a[b]()},goog.Dependency.defer_=!1,goog.Dependency.callbackMap_={},goog.Dependency.registerCallback_=function(a){var b=Math.random().toString(32);goog.Dependency.callbackMap_[b]=a;return b},goog.Dependency.unregisterCallback_=function(a){delete goog.Dependency.callbackMap_[a]},\ngoog.Dependency.callback_=function(a,b){if(a in goog.Dependency.callbackMap_){for(var c=goog.Dependency.callbackMap_[a],d=[],e=1;e<arguments.length;e++)d.push(arguments[e]);c.apply(void 0,d)}else throw Error("Callback key "+a+" does not exist (was base.js loaded more than once?).");},goog.Dependency.prototype.load=function(a){if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==\nb.readyState&&!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING){if(/\\bdeps.js$/.test(this.path)){a.loaded();return}throw Error(\'Cannot write "\'+this.path+\'" after document load\');}var c=goog.getScriptNonce_();if(!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING&&goog.isDocumentLoading_()){var d=function(h){h.readyState&&"complete"!=h.readyState?h.onload=d:(goog.Dependency.unregisterCallback_(e),a.loaded())};var e=goog.Dependency.registerCallback_(d);c=c?\' nonce="\'+c+\'"\':"";var f=\'<script src="\'+this.path+\'"\'+\nc+(goog.Dependency.defer_?" defer":"")+\' id="script-\'+e+\'">\\x3c/script>\';f+="<script"+c+">";f=goog.Dependency.defer_?f+("document.getElementById(\'script-"+e+"\').onload = function() {\\n goog.Dependency.callback_(\'"+e+"\', this);\\n};\\n"):f+("goog.Dependency.callback_(\'"+e+"\', document.getElementById(\'script-"+e+"\'));");f+="\\x3c/script>";b.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(f):f)}else{var g=b.createElement("script");g.defer=goog.Dependency.defer_;g.async=!1;c&&(g.nonce=\nc);g.onload=function(){g.onload=null;a.loaded()};g.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(this.path):this.path;b.head.appendChild(g)}}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),"deps.js"==this.relativePath?(goog.logToConsole_("Consider setting CLOSURE_IMPORT_SCRIPT before loading base.js, or setting CLOSURE_NO_DEPS to true."),a.loaded()):a.pause()},goog.Es6ModuleDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,\nb,c,d,e)},goog.inherits(goog.Es6ModuleDependency,goog.Dependency),goog.Es6ModuleDependency.prototype.load=function(a){function b(l,m){var n="",p=goog.getScriptNonce_();p&&(n=\' nonce="\'+p+\'"\');l=m?\'<script type="module" crossorigin\'+n+">"+m+"\\x3c/script>":\'<script type="module" crossorigin src="\'+l+\'"\'+n+">\\x3c/script>";d.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(l):l)}function c(l,m){var n=d.createElement("script");n.defer=!0;n.async=!1;n.type="module";n.setAttribute("crossorigin",\n!0);var p=goog.getScriptNonce_();p&&(n.nonce=p);m?n.text=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScript(m):m:n.src=goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createScriptURL(l):l;d.head.appendChild(n)}if(goog.global.CLOSURE_IMPORT_SCRIPT)goog.global.CLOSURE_IMPORT_SCRIPT(this.path)?a.loaded():a.pause();else if(goog.inHtmlDocument_()){var d=goog.global.document,e=this;if(goog.isDocumentLoading_()){var f=b;goog.Dependency.defer_=!0}else f=c;var g=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(g);\na.setModuleState(goog.ModuleType.ES6)});f(void 0,\'goog.Dependency.callback_("\'+g+\'")\');f(this.path,void 0);var h=goog.Dependency.registerCallback_(function(l){goog.Dependency.unregisterCallback_(h);a.registerEs6ModuleExports(e.path,l,goog.moduleLoaderState_.moduleName)});f(void 0,\'import * as m from "\'+this.path+\'"; goog.Dependency.callback_("\'+h+\'", m)\');var k=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(k);a.clearModuleState();a.loaded()});f(void 0,\'goog.Dependency.callback_("\'+\nk+\'")\')}else goog.logToConsole_("Cannot use default debug loader outside of HTML documents."),a.pause()},goog.TransformedDependency=function(a,b,c,d,e){goog.Dependency.call(this,a,b,c,d,e);this.contents_=null;this.lazyFetch_=!goog.inHtmlDocument_()||!("noModule"in goog.global.document.createElement("script"))},goog.inherits(goog.TransformedDependency,goog.Dependency),goog.TransformedDependency.prototype.load=function(a){function b(){e.contents_=goog.loadFileSync_(e.path);e.contents_&&(e.contents_=\ne.transform(e.contents_),e.contents_&&(e.contents_+="\\n//# sourceURL="+e.path))}function c(){e.lazyFetch_&&b();if(e.contents_){f&&a.setModuleState(goog.ModuleType.ES6);try{var l=e.contents_;e.contents_=null;goog.globalEval(goog.CLOSURE_EVAL_PREFILTER_.createScript(l));if(f)var m=goog.moduleLoaderState_.moduleName}finally{f&&a.clearModuleState()}f&&goog.global.$jscomp.require.ensure([e.getPathName()],function(){a.registerEs6ModuleExports(e.path,goog.global.$jscomp.require(e.getPathName()),m)});a.loaded()}}\nfunction d(){var l=goog.global.document,m=goog.Dependency.registerCallback_(function(){goog.Dependency.unregisterCallback_(m);c()}),n=goog.getScriptNonce_();n="<script"+(n?\' nonce="\'+n+\'"\':"")+">"+goog.protectScriptTag_(\'goog.Dependency.callback_("\'+m+\'");\')+"\\x3c/script>";l.write(goog.TRUSTED_TYPES_POLICY_?goog.TRUSTED_TYPES_POLICY_.createHTML(n):n)}var e=this;if(goog.global.CLOSURE_IMPORT_SCRIPT)b(),this.contents_&&goog.global.CLOSURE_IMPORT_SCRIPT("",this.contents_)?(this.contents_=null,a.loaded()):\na.pause();else{var f=this.loadFlags.module==goog.ModuleType.ES6;this.lazyFetch_||b();var g=1<a.pending().length;if(goog.Dependency.defer_&&(g||goog.isDocumentLoading_()))a.defer(function(){c()});else{var h=goog.global.document;g=goog.inHtmlDocument_()&&("ActiveXObject"in goog.global||goog.isEdge_());if(f&&goog.inHtmlDocument_()&&goog.isDocumentLoading_()&&!g){goog.Dependency.defer_=!0;a.pause();var k=h.onreadystatechange;h.onreadystatechange=function(){"interactive"==h.readyState&&(h.onreadystatechange=\nk,c(),a.resume());"function"===typeof k&&k.apply(void 0,arguments)}}else goog.inHtmlDocument_()&&goog.isDocumentLoading_()?d():c()}}},goog.TransformedDependency.prototype.transform=function(a){},goog.PreTranspiledEs6ModuleDependency=function(a,b,c,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.PreTranspiledEs6ModuleDependency,goog.TransformedDependency),goog.PreTranspiledEs6ModuleDependency.prototype.transform=function(a){return a},goog.GoogModuleDependency=function(a,b,\nc,d,e){goog.TransformedDependency.call(this,a,b,c,d,e)},goog.inherits(goog.GoogModuleDependency,goog.TransformedDependency),goog.GoogModuleDependency.prototype.transform=function(a){return goog.LOAD_MODULE_USING_EVAL&&void 0!==goog.global.JSON?"goog.loadModule("+goog.global.JSON.stringify(a+"\\n//# sourceURL="+this.path+"\\n")+");":\'goog.loadModule(function(exports) {"use strict";\'+a+"\\n;return exports});\\n//# sourceURL="+this.path+"\\n"},goog.DebugLoader_.prototype.addDependency=function(a,b,c,d){b=\nb||[];a=a.replace(/\\\\/g,"/");var e=goog.normalizePath_(goog.basePath+a);d&&"boolean"!==typeof d||(d=d?{module:goog.ModuleType.GOOG}:{});c=this.factory_.createDependency(e,a,b,c,d);this.dependencies_[e]=c;for(c=0;c<b.length;c++)this.idToPath_[b[c]]=e;this.idToPath_[a]=e},goog.DependencyFactory=function(){},goog.DependencyFactory.prototype.createDependency=function(a,b,c,d,e){return e.module==goog.ModuleType.GOOG?new goog.GoogModuleDependency(a,b,c,d,e):e.module==goog.ModuleType.ES6?goog.ASSUME_ES_MODULES_TRANSPILED?\nnew goog.PreTranspiledEs6ModuleDependency(a,b,c,d,e):new goog.Es6ModuleDependency(a,b,c,d,e):new goog.Dependency(a,b,c,d,e)},goog.debugLoader_=new goog.DebugLoader_,goog.loadClosureDeps=function(){goog.debugLoader_.loadClosureDeps()},goog.setDependencyFactory=function(a){goog.debugLoader_.setDependencyFactory(a)},goog.TRUSTED_TYPES_POLICY_=goog.TRUSTED_TYPES_POLICY_NAME?goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME+"#base"):null,goog.global.CLOSURE_NO_DEPS||goog.debugLoader_.loadClosureDeps(),\ngoog.bootstrap=function(a,b){goog.debugLoader_.bootstrap(a,b)});if(!COMPILED){var isChrome87=!1;try{isChrome87=eval(goog.global.trustedTypes.emptyScript)!==goog.global.trustedTypes.emptyScript}catch(a){}goog.CLOSURE_EVAL_PREFILTER_=goog.global.trustedTypes&&isChrome87&&goog.createTrustedTypesPolicy("goog#base#devonly#eval")||{createScript:goog.identity_}};const proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.proxy"),createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.endpoint"),releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.releaseProxy"),throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs=Symbol("Comlink.thrown"),isObject$$module$node_modules$comlink$dist$esm$comlink_mjs=a=>"object"===typeof a&&null!==a||"function"===typeof a,proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs=\n{canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs],serialize(a){const {port1:b,port2:c}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b);return[c,[c]]},deserialize(a){a.start();return wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a)}},throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs={canHandle:a=>isObject$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&\nthrowMarker$$module$node_modules$comlink$dist$esm$comlink_mjs in a,serialize({value:a}){return[a instanceof Error?{isError:!0,value:{message:a.message,name:a.name,stack:a.stack}}:{isError:!1,value:a},[]]},deserialize(a){if(a.isError)throw Object.assign(Error(a.value.message),a.value);throw a.value;}},transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs=new Map([["proxy",proxyTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs],["throw",throwTransferHandler$$module$node_modules$comlink$dist$esm$comlink_mjs]]);\nfunction expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self){b.addEventListener("message",function e(d){if(d&&d.data){var {id:f,type:g,path:h}=Object.assign({path:[]},d.data),k=(d.data.argumentList||[]).map(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);try{const m=h.slice(0,-1).reduce((p,q)=>p[q],a),n=h.reduce((p,q)=>p[q],a);switch(g){case "GET":var l=n;break;case "SET":m[h.slice(-1)[0]]=fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(d.data.value);\nl=!0;break;case "APPLY":l=n.apply(m,k);break;case "CONSTRUCT":const p=new n(...k);l=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(p);break;case "ENDPOINT":const {port1:q,port2:r}=new MessageChannel;expose$$module$node_modules$comlink$dist$esm$comlink_mjs(a,r);l=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(q,[q]);break;case "RELEASE":l=void 0;break;default:return}}catch(m){l={value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0}}Promise.resolve(l).catch(m=>\n({value:m,[throwMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:0})).then(m=>{const [n,p]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(m);b.postMessage(Object.assign(Object.assign({},n),{id:f}),p);"RELEASE"===g&&(b.removeEventListener("message",e),closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(b))})}});b.start&&b.start()}function isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return"MessagePort"===a.constructor.name}\nfunction closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a){isMessagePort$$module$node_modules$comlink$dist$esm$comlink_mjs(a)&&a.close()}function wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[],b)}function throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(a){if(a)throw Error("Proxy has been released and is not useable");}\nfunction createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=[],c=function(){}){let d=!1;const e=new Proxy(c,{get(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);if(g===releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs)return()=>requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"RELEASE",path:b.map(h=>h.toString())}).then(()=>{closeEndPoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a);d=!0});if("then"===\ng){if(0===b.length)return{then:()=>e};f=requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"GET",path:b.map(h=>h.toString())}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return f.then.bind(f)}return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,[...b,g])},set(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [k,l]=toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"SET",path:[...b,g].map(m=>m.toString()),value:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},apply(f,g,h){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);f=b[b.length-1];if(f===createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs)return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"ENDPOINT"}).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);if("bind"===f)return createProxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\nb.slice(0,-1));const [k,l]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(h);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,{type:"APPLY",path:b.map(m=>m.toString()),argumentList:k},l).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)},construct(f,g){throwIfProxyReleased$$module$node_modules$comlink$dist$esm$comlink_mjs(d);const [h,k]=processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(g);return requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,\n{type:"CONSTRUCT",path:b.map(l=>l.toString()),argumentList:h},k).then(fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs)}});return e}function myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Array.prototype.concat.apply([],a)}\nfunction processArguments$$module$node_modules$comlink$dist$esm$comlink_mjs(a){a=a.map(toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs);return[a.map(b=>b[0]),myFlat$$module$node_modules$comlink$dist$esm$comlink_mjs(a.map(b=>b[1]))]}const transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs=new WeakMap;function transfer$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b){transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.set(a,b);return a}\nfunction proxy$$module$node_modules$comlink$dist$esm$comlink_mjs(a){return Object.assign(a,{[proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs]:!0})}function windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b=self,c="*"){return{postMessage:(d,e)=>a.postMessage(d,c,e),addEventListener:b.addEventListener.bind(b),removeEventListener:b.removeEventListener.bind(b)}}\nfunction toWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){for(const [b,c]of transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs)if(c.canHandle(a)){const [d,e]=c.serialize(a);return[{type:"HANDLER",name:b,value:d},e]}return[{type:"RAW",value:a},transferCache$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a)||[]]}\nfunction fromWireValue$$module$node_modules$comlink$dist$esm$comlink_mjs(a){switch(a.type){case "HANDLER":return transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs.get(a.name).deserialize(a.value);case "RAW":return a.value}}\nfunction requestResponseMessage$$module$node_modules$comlink$dist$esm$comlink_mjs(a,b,c){return new Promise(d=>{const e=generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs();a.addEventListener("message",function h(g){g.data&&g.data.id&&g.data.id===e&&(a.removeEventListener("message",h),d(g.data))});a.start&&a.start();a.postMessage(Object.assign({id:e},b),c)})}\nfunction generateUUID$$module$node_modules$comlink$dist$esm$comlink_mjs(){return Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-")}var module$node_modules$comlink$dist$esm$comlink_mjs={};module$node_modules$comlink$dist$esm$comlink_mjs.createEndpoint=createEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.expose=expose$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.proxy=proxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.proxyMarker=proxyMarker$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.releaseProxy=releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.transfer=transfer$$module$node_modules$comlink$dist$esm$comlink_mjs;\nmodule$node_modules$comlink$dist$esm$comlink_mjs.transferHandlers=transferHandlers$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.windowEndpoint=windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs;module$node_modules$comlink$dist$esm$comlink_mjs.wrap=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs;var module$node_modules$lines_logger$lib$index={default:{}};module$node_modules$lines_logger$lib$index.default.__esModule=!0;module$node_modules$lines_logger$lib$index.default.LoggerFactory=module$node_modules$lines_logger$lib$index.default.logLevels=void 0;module$node_modules$lines_logger$lib$index.default.logLevels={log_raise_error:1,log_with_warnings:2,trace:3,debug:4,info:5,warn:6,error:7,disable:8};\nvar LoggerFactory$$module$node_modules$lines_logger$lib$index=function(){function a(b,c){if(void 0===b&&(b="log_with_warnings"),void 0===c&&(c=null),this.logLevel=b,!module$node_modules$lines_logger$lib$index.default.logLevels[b])throw Error("Invalid log level "+b+" allowed: "+JSON.stringify(module$node_modules$lines_logger$lib$index.default.logLevels));this.mockConsole=c||console}return a.prototype.dummy=function(){},a.prototype.setLogWarnings=function(b){this.logLevel=b},a.prototype.getLogWarnings=\nfunction(){return this.logLevel},a.prototype.getSingleLoggerColor=function(b,c,d){return this.getSingleLoggerStyle(b,this.getColorStyle(c),d)},a.prototype.getSingleLogger=function(b,c){var d=this.getRandomColor(b);return this.getSingleLoggerStyle(b,this.getColorStyle(d),c)},a.prototype.getSingleLoggerStyle=function(b,c,d,e){var f=this;return void 0===e&&(e="log_with_warnings"),function(){for(var g=[],h=0;h<arguments.length;h++)g[h]=arguments[h];if(module$node_modules$lines_logger$lib$index.default.logLevels[f.logLevel]>\nmodule$node_modules$lines_logger$lib$index.default.logLevels[e])return f.dummy;g=Array.prototype.slice.call(g);h=g.shift().split("{}");for(var k=[f.mockConsole,"%c"+b,c],l=0;l<h.length;l++)k.push(h[l]),void 0!==g[l]&&k.push(g[l]);if(h.length-1!==g.length)if("log_with_warnings"===f.logLevel)f.mockConsole.error("MissMatch amount of arguments");else if("log_raise_error"===f.logLevel)throw Error("MissMatch amount of arguments");return Function.prototype.bind.apply(d,k)}},a.prototype.getLoggerColor=function(b,\nc){return this.getLoggerStyle(b,this.getColorStyle(c))},a.prototype.getColorStyle=function(b){return"color: white; background-color: "+b+"; padding: 2px 6px; border-radius: 2px; font-size: 10px"},a.getHash=function(b,c){void 0===c&&(c=0);var d=3735928559^c;c^=1103547991;for(var e=0,f;e<b.length;e++)f=b.charCodeAt(e),d=Math.imul(d^f,2654435761),c=Math.imul(c^f,1597334677);return d=Math.imul(d^d>>>16,2246822507)^Math.imul(c^c>>>13,3266489909),4294967296*(2097151&(Math.imul(c^c>>>16,2246822507)^Math.imul(d^\nd>>>13,3266489909)))+(d>>>0)},a.prototype.getRandomColor=function(b){void 0===b&&(b="");b=a.getHash(b);for(var c="#",d=0;3>d;d++)c+=("00"+(8+(b>>7*d&127)).toString(16)).substr(-2);return c},a.prototype.getLogger=function(b){return this.getLoggerColor(b,this.getRandomColor(b))},a.prototype.getLoggerStyle=function(b,c){return{trace:this.getSingleLoggerStyle(b,c,this.mockConsole.trace,"trace"),debug:this.getSingleLoggerStyle(b,c,this.mockConsole.debug,"debug"),log:this.getSingleLoggerStyle(b,c,this.mockConsole.log,\n"info"),warn:this.getSingleLoggerStyle(b,c,this.mockConsole.warn,"warn"),error:this.getSingleLoggerStyle(b,c,this.mockConsole.error,"error")}},a}();module$node_modules$lines_logger$lib$index.default.LoggerFactory=LoggerFactory$$module$node_modules$lines_logger$lib$index;let logWorkletMain$$module$src$logger,logWorkletWorker$$module$src$logger,logSABMain$$module$src$logger,logSABWorker$$module$src$logger,logVANMain$$module$src$logger,logVANWorker$$module$src$logger,logOldSpnMain$$module$src$logger,logOldSpnWorker$$module$src$logger,logIndex$$module$src$logger,logSPNMainSingle$$module$src$logger,logSinglethreadWorkletMain$$module$src$logger,logSinglethreadWorkletWorker$$module$src$logger,logCommonUtils$$module$src$logger,logWasmModule$$module$src$logger,logMidiRequest$$module$src$logger;\nconst isProd$$module$src$logger=1;logWorkletMain$$module$src$logger=a=>b=>{};logWorkletWorker$$module$src$logger=a=>b=>{};logSABMain$$module$src$logger=a=>b=>{};logSABWorker$$module$src$logger=a=>b=>{};logVANMain$$module$src$logger=a=>b=>{};logVANWorker$$module$src$logger=a=>b=>{};logOldSpnMain$$module$src$logger=a=>b=>{};logOldSpnWorker$$module$src$logger=a=>b=>{};logIndex$$module$src$logger=a=>b=>{};logSPNMainSingle$$module$src$logger=a=>b=>{};\nlogSinglethreadWorkletMain$$module$src$logger=a=>b=>{};logSinglethreadWorkletWorker$$module$src$logger=a=>b=>{};logCommonUtils$$module$src$logger=a=>b=>{};logWasmModule$$module$src$logger=a=>b=>{};logMidiRequest$$module$src$logger=a=>b=>{};var $jscompDefaultExport$$module$src$logger=a=>b=>{},module$src$logger={};module$src$logger.default=$jscompDefaultExport$$module$src$logger;module$src$logger.logCommonUtils=logCommonUtils$$module$src$logger;module$src$logger.logIndex=logIndex$$module$src$logger;\nmodule$src$logger.logMidiRequest=logMidiRequest$$module$src$logger;module$src$logger.logOldSpnMain=logOldSpnMain$$module$src$logger;module$src$logger.logOldSpnWorker=logOldSpnWorker$$module$src$logger;module$src$logger.logSABMain=logSABMain$$module$src$logger;module$src$logger.logSABWorker=logSABWorker$$module$src$logger;module$src$logger.logSPNMainSingle=logSPNMainSingle$$module$src$logger;module$src$logger.logSinglethreadWorkletMain=logSinglethreadWorkletMain$$module$src$logger;\nmodule$src$logger.logSinglethreadWorkletWorker=logSinglethreadWorkletWorker$$module$src$logger;module$src$logger.logVANMain=logVANMain$$module$src$logger;module$src$logger.logVANWorker=logVANWorker$$module$src$logger;module$src$logger.logWasmModule=logWasmModule$$module$src$logger;module$src$logger.logWorkletMain=logWorkletMain$$module$src$logger;module$src$logger.logWorkletWorker=logWorkletWorker$$module$src$logger;const handleCsoundStart$$module$src$workers$common_utils=(a,b,c,d,e)=>f=>{const {csound:g}=f,h=1===b.csoundShouldDaemonize(g);h&&(b.csoundSetOption(g,"--daemon"),b.csoundSetOption(g,"-odac"));const k=b.csoundStart(g),l=b.csoundGetOutputName(g)||"test.wav";logCommonUtils$$module$src$logger(`handleCsoundStart: actual csoundStart result ${k}, outputName: ${l}`)();0!==k&&a.post(`error: csoundStart failed while trying to render ${l},`+" look out for errors in options and syntax");setTimeout(()=>{const m=\nb._isRequestingRtMidiInput(g);if(h||m||l.includes("dac"))d(f);else if(a.broadcastPlayState("renderStarted"),e)e(f);else for(;0===b.csoundPerformKsmps(g););},0);return k},instantiateAudioPacket$$module$src$workers$common_utils=(a,b)=>{const c=[];for(let d=0;d<a;d++)c.push(new Float64Array(b));return c},renderFunction$$module$src$workers$common_utils=({libraryCsound:a,workerMessagePort:b})=>async({csound:c})=>{const d=a.csoundGetKr(c);let e=0,f=0;for(;("renderStarted"===b.vanillaWorkerState||"renderStarted"===\nb.workerState)&&0===e;)e=a.csoundPerformKsmps(c),f+=1,"function"===typeof setTimeout&&0===e&&0===f%(2*d)&&await new Promise(g=>setTimeout(g,0));b.broadcastPlayState("renderEnded")};var module$src$workers$common_utils={};module$src$workers$common_utils.handleCsoundStart=handleCsoundStart$$module$src$workers$common_utils;module$src$workers$common_utils.instantiateAudioPacket=instantiateAudioPacket$$module$src$workers$common_utils;module$src$workers$common_utils.renderFunction=renderFunction$$module$src$workers$common_utils;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;\nMessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;const WebkitAudioContext$$module$src$utils$new_audio_context=()=>{if(void 0!==window.webkitAudioContext)return window.webkitAudioContext;if(void 0!==window.AudioContext)return window.AudioContext},newAudioContext$$module$src$utils$new_audio_context=()=>{const a=WebkitAudioContext$$module$src$utils$new_audio_context();if(a)return new a};var module$src$utils$new_audio_context={};module$src$utils$new_audio_context.WebkitAudioContext=WebkitAudioContext$$module$src$utils$new_audio_context;\nmodule$src$utils$new_audio_context.newAudioContext=newAudioContext$$module$src$utils$new_audio_context;function add$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>add$$module$node_modules$rambda$dist$rambda_mjs(a,c):Number(a)+Number(b)}const cloneList$$module$node_modules$rambda$dist$rambda_mjs=a=>Array.prototype.slice.call(a);function curry$$module$node_modules$rambda$dist$rambda_mjs(a,b=[]){return(...c)=>{c=[...b,...c];return c.length>=a.length?a(...c):curry$$module$node_modules$rambda$dist$rambda_mjs(a,c)}}\nfunction adjustFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d=0>a?c.length+a:a;if(a>=c.length||0>d)return c;a=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);a[d]=b(a[d]);return a}const adjust$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(adjustFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction all$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>all$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(!a(b[c]))return!1;return!0}function allPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(!a[c](...b))return!1;c++}return!0}}function always$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>a}\nfunction and$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>and$$module$node_modules$rambda$dist$rambda_mjs(a,c):a&&b}function any$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>any$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=0;for(;c<b.length;){if(a(b[c],c))return!0;c++}return!1}\nfunction anyPass$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{let c=0;for(;c<a.length;){if(a[c](...b))return!0;c++}return!1}}function append$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>append$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.split("").concat(a);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);c.push(a);return c}\nfunction apply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>apply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.apply(this,b)}const {isArray:isArray$$module$node_modules$rambda$dist$rambda_mjs}=Array;\nfunction __findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a,b=0){for(const c in a)!1!==a.hasOwnProperty(c)&&"constructor"!==c&&("object"===typeof a[c]&&(b=Math.max(b,__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a[c]))),"function"===typeof a[c]&&(b=Math.max(b,a[c].length)));return b}\nfunction __filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(){const a=[];let b=0;const c=arguments.length;for(;b<c&&"undefined"!==typeof arguments[b];)a[b]=arguments[b],b++;return a}\nfunction __applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){var d=b-c.length;if(1===d)return f=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f));if(2===d)return(f,g)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g));if(3===d)return(f,g,h)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,\nb,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h));if(4===d)return(f,g,h,k)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,f,g,h,k));if(4<d)return(...f)=>__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,b,__filterUndefined$$module$node_modules$rambda$dist$rambda_mjs(...c,...f));if(isArray$$module$node_modules$rambda$dist$rambda_mjs(a)){var e=[];d=0;const f=a.length;\nfor(;d<f;d++){if("object"===typeof a[d]||isArray$$module$node_modules$rambda$dist$rambda_mjs(a[d]))e[d]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[d],b,c);"function"===typeof a[d]&&(e[d]=a[d](...c))}return e}d={};for(e in a)!1!==a.hasOwnProperty(e)&&"constructor"!==e&&("object"===typeof a[e]?d[e]=__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a[e],b,c):"function"===typeof a[e]&&(d[e]=a[e](...c)));return d}\nfunction applySpec$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs(a);return 0===c?()=>({}):__applySpecWithArity$$module$node_modules$rambda$dist$rambda_mjs(a,c,b)}function assocFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return Object.assign({},c,{[a]:b})}const assoc$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _isInteger$$module$node_modules$rambda$dist$rambda_mjs(a){return a<<0===a}const isInteger$$module$node_modules$rambda$dist$rambda_mjs=Number.isInteger||_isInteger$$module$node_modules$rambda$dist$rambda_mjs;\nfunction assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d="string"===typeof a?a.split(".").map(e=>isInteger$$module$node_modules$rambda$dist$rambda_mjs(Number(e))?Number(e):e):a;if(0===d.length)return b;a=d[0];if(1<d.length){const e="object"===typeof c&&null!==c&&c.hasOwnProperty(a)?c[a]:isInteger$$module$node_modules$rambda$dist$rambda_mjs(d[1])?[]:{};b=assocPathFn$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(d,1),b,e)}return isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)&&\nisArray$$module$node_modules$rambda$dist$rambda_mjs(c)?(c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c),c[a]=b,c):assoc$$module$node_modules$rambda$dist$rambda_mjs(a,b,c)}const assocPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(assocPathFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction _curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return function(){var d=0;let e=0;const f=b.length,g=arguments.length,h=Array(f+g);for(;d<f;)h[d]=b[d],d++;for(;e<g;)h[f+e]=arguments[e],e++;d=a-h.length;return h.length>=a?c.apply(this,h):_arity$1$$module$node_modules$rambda$dist$rambda_mjs(d,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,h,c))}}\nfunction _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};default:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)}}}\nfunction curryN$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>curryN$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(10<a)throw Error("First argument to _arity must be a non-negative integer no greater than ten");return _arity$1$$module$node_modules$rambda$dist$rambda_mjs(a,_curryN$$module$node_modules$rambda$dist$rambda_mjs(a,[],b))}\nfunction bind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>bind$$module$node_modules$rambda$dist$rambda_mjs(a,c):curryN$$module$node_modules$rambda$dist$rambda_mjs(a.length,(...c)=>a.apply(b,c))}function both$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>both$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>a(...c)&&b(...c)}\nfunction chain$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>chain$$module$node_modules$rambda$dist$rambda_mjs(a,c):[].concat(...b.map(a))}function clampFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(a>b)throw Error("min must not be greater than max in clamp(min, max, value)");if(c>=a&&c<=b)return c;if(c>b)return b;if(c<a)return a}const clamp$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(clampFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction clone$$module$node_modules$rambda$dist$rambda_mjs(a){const b=isArray$$module$node_modules$rambda$dist$rambda_mjs(a)?Array(a.length):{};if(a&&a.getTime)return new Date(a.getTime());for(const c in a){const d=a[c];b[c]="object"===typeof d&&null!==d?d.getTime?new Date(d.getTime()):clone$$module$node_modules$rambda$dist$rambda_mjs(d):d}return b}function complement$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>!a(...b)}\nclass ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs{constructor(a){this.value=a}}function reduceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(c))throw new TypeError("reduce: list must be array or iterable");let d=0;const e=c.length;for(;d<e;){b=a(b,c[d],d,c);if(b instanceof ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs)return b.value;d++}return b}\nconst reduce$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(reduceFn$$module$node_modules$rambda$dist$rambda_mjs),reduceStopper$$module$node_modules$rambda$dist$rambda_mjs=a=>new ReduceStopper$$module$node_modules$rambda$dist$rambda_mjs(a);\nfunction _arity$$module$node_modules$rambda$dist$rambda_mjs(a,b){switch(a){case 0:return function(){return b.apply(this,arguments)};case 1:return function(c){return b.apply(this,arguments)};case 2:return function(c,d){return b.apply(this,arguments)};case 3:return function(c,d,e){return b.apply(this,arguments)};case 4:return function(c,d,e,f){return b.apply(this,arguments)};case 5:return function(c,d,e,f,g){return b.apply(this,arguments)};case 6:return function(c,d,e,f,g,h){return b.apply(this,arguments)};\ncase 7:return function(c,d,e,f,g,h,k){return b.apply(this,arguments)};case 8:return function(c,d,e,f,g,h,k,l){return b.apply(this,arguments)};case 9:return function(c,d,e,f,g,h,k,l,m){return b.apply(this,arguments)};case 10:return function(c,d,e,f,g,h,k,l,m,n){return b.apply(this,arguments)};default:throw Error("First argument to _arity must be a non-negative integer no greater than ten");}}\nfunction _pipe$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(){return b.call(this,a.apply(this,arguments))}}\nfunction pipe$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("pipe requires at least one argument");return _arity$$module$node_modules$rambda$dist$rambda_mjs(arguments[0].length,reduceFn$$module$node_modules$rambda$dist$rambda_mjs(_pipe$$module$node_modules$rambda$dist$rambda_mjs,arguments[0],Array.prototype.slice.call(arguments,1,Infinity)))}\nfunction compose$$module$node_modules$rambda$dist$rambda_mjs(){if(0===arguments.length)throw Error("compose requires at least one argument");return pipe$$module$node_modules$rambda$dist$rambda_mjs.apply(this,Array.prototype.slice.call(arguments,0).reverse())}function concat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>concat$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof a?`${a}${b}`:[...a,...b]}\nfunction cond$$module$node_modules$rambda$dist$rambda_mjs(a){return b=>{let c=!1,d;a.forEach(([e,f])=>{!c&&e(b)&&(c=!0,d=f(b))});return d}}const {keys:keys$1$$module$node_modules$rambda$dist$rambda_mjs}=Object;function mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=Array(b.length);for(;d<b.length;)e[d]=c?a(b[d],d):a(b[d]),d++;return e}\nfunction mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,g);let c=0;const d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b),e=d.length,f={};for(;c<e;){const g=d[c];f[g]=a(b[g],g,b);c++}return f}const mapObjIndexed$$module$node_modules$rambda$dist$rambda_mjs=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nfunction map$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>map$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error(INCORRECT_ITERABLE_INPUT);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?mapArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):mapObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction max$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>max$$module$node_modules$rambda$dist$rambda_mjs(a,c):b>a?b:a}\nfunction converge$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>converge$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=reduce$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>max$$module$node_modules$rambda$dist$rambda_mjs(d,e.length),0,b);return curryN$$module$node_modules$rambda$dist$rambda_mjs(c,function(){return a.apply(this,map$$module$node_modules$rambda$dist$rambda_mjs(d=>d.apply(this,arguments),b))})}\nfunction count$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>count$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?b.filter(c=>a(c)).length:0}function countBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>countBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};b.forEach(d=>{d=a(d);c[d]?c[d]++:c[d]=1});return c}\nconst dec$$module$node_modules$rambda$dist$rambda_mjs=a=>a-1;function isFalsy$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a||!0===Number.isNaN(a)}function defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c):isFalsy$$module$node_modules$rambda$dist$rambda_mjs(b)?a:b}\nfunction type$$module$node_modules$rambda$dist$rambda_mjs(a){if(null===a)return"Null";if(void 0===a)return"Undefined";if(Number.isNaN(a))return"NaN";a=Object.prototype.toString.call(a).slice(8,-1);return"AsyncFunction"===a?"Promise":a}\nfunction _lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.lastIndexOf(a);({length:c}=b);let d=-1;for(;-1<--c&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`Cannot read property \'indexOf\' of ${b}`);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(!["Object","Array","NaN","RegExp"].includes(c))return b.indexOf(a);let d=c=-1;const {length:e}=b;for(;++c<e&&-1===d;)equals$$module$node_modules$rambda$dist$rambda_mjs(b[c],a)&&(d=c);return d}\nfunction _arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a){const b=[];let c;for(;!(c=a.next()).done;)b.push(c.value);return b}function _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(a.size!==b.size)return!1;a=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(a.values());const c=_arrayFromIterator$$module$node_modules$rambda$dist$rambda_mjs(b.values());return 0===a.filter(d=>-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,c)).length}\nfunction parseError$$module$node_modules$rambda$dist$rambda_mjs(a){const b=a.__proto__.toString();return["Error","TypeError"].includes(b)?[b,a.message]:[]}function parseDate$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toDateString?[!0,a.getTime()]:[!1]}function parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a){return a.constructor!==RegExp?[!1]:[!0,a.toString()]}\nfunction equals$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>equals$$module$node_modules$rambda$dist$rambda_mjs(a,f);var c=type$$module$node_modules$rambda$dist$rambda_mjs(a);if(c!==type$$module$node_modules$rambda$dist$rambda_mjs(b))return!1;if("Function"===c)return void 0===a.name?!1:a.name===b.name;if(["NaN","Undefined","Null"].includes(c))return!0;if("Number"===c)return Object.is(-0,a)!==Object.is(-0,b)?!1:a.toString()===b.toString();if(["String","Boolean"].includes(c))return a.toString()===\nb.toString();if("Array"===c){c=Array.from(a);const f=Array.from(b);if(c.toString()!==f.toString())return!1;let g=!0;c.forEach((h,k)=>{g&&(h===f[k]||equals$$module$node_modules$rambda$dist$rambda_mjs(h,f[k])||(g=!1))});return g}var d=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(a),e=parseRegex$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseDate$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseDate$$module$node_modules$rambda$dist$rambda_mjs(b);\nif(d[0])return e[0]?d[1]===e[1]:!1;if(e[0])return!1;d=parseError$$module$node_modules$rambda$dist$rambda_mjs(a);e=parseError$$module$node_modules$rambda$dist$rambda_mjs(b);if(d[0])return e[0]?d[0]===e[0]&&d[1]===e[1]:!1;if("Set"===c)return _equalsSets$$module$node_modules$rambda$dist$rambda_mjs(a,b);if("Object"===c){c=Object.keys(a);if(c.length!==Object.keys(b).length)return!1;let f=!0;c.forEach(g=>{if(f){const h=a[g];g=b[g];h===g||equals$$module$node_modules$rambda$dist$rambda_mjs(h,g)||(f=!1)}});\nreturn f}return!1}function includes$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>includes$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof b)return b.includes(a);if(!b)throw new TypeError(`Cannot read property \\\'indexOf\\\' of ${b}`);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b):!1}\nclass _Set$$module$node_modules$rambda$dist$rambda_mjs{constructor(){this.set=new Set;this.items={}}checkUniqueness(a){var b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Null","Undefined","NaN"].includes(b)?b in this.items?!1:this.items[b]=!0:["Object","Array"].includes(b)?b in this.items?-1===_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,this.items[b])?(this.items[b].push(a),!0):!1:(this.items[b]=[a],!0):(b=this.set.size,this.set.add(a),this.set.size!==b)}}\nfunction uniq$$module$node_modules$rambda$dist$rambda_mjs(a){const b=new _Set$$module$node_modules$rambda$dist$rambda_mjs,c=[];a.forEach(d=>{b.checkUniqueness(d)&&c.push(d)});return c}function difference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>difference$$module$node_modules$rambda$dist$rambda_mjs(a,c):uniq$$module$node_modules$rambda$dist$rambda_mjs(a).filter(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dissoc$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(null===b||void 0===b)return{};const c={};for(const d in b)c[d]=b[d];delete c[a];return c}function divide$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>divide$$module$node_modules$rambda$dist$rambda_mjs(a,c):a/b}\nfunction drop$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>drop$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.slice(0<a?a:0)}function dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>dropLast$$module$node_modules$rambda$dist$rambda_mjs(a,c):0<a?b.slice(0,-a):b.slice()}\nfunction dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(0===b.length)return b;const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if("function"!==typeof a)throw Error(`\'predicate\' is from wrong type ${typeof a}`);if(!c&&"string"!==typeof b)throw Error(`\'iterable\' is from wrong type ${typeof b}`);let d=!1;const e=[];let f=b.length;for(;0<f;)f--,d||!1!==a(b[f])?d&&e.push(b[f]):\n(d=!0,e.push(b[f]));return c?e.reverse():e.reverse().join("")}function dropRepeats$$module$node_modules$rambda$dist$rambda_mjs(a){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`${a} is not a list`);const b=[];a.reduce((c,d)=>{equals$$module$node_modules$rambda$dist$rambda_mjs(c,d)||b.push(d);return d},void 0);return b}\nfunction dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw Error(`${b} is not a list`);const c=[];b.reduce((d,e)=>{if(void 0===d)return c.push(e),e;a(d,e)||c.push(e);return e},void 0);return c}\nfunction dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>dropWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!1;const e=[];let f=-1;for(;f++<b.length-1;)d?e.push(b[f]):a(b[f])||(d||(d=!0),e.push(b[f]));return c?e:e.join("")}\nfunction either$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>either$$module$node_modules$rambda$dist$rambda_mjs(a,c):(...c)=>!(!a(...c)&&!b(...c))}\nfunction endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>endsWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);if("string"===typeof b)return b.endsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;const c=b.length-a.length;let d=!0;return a.filter((e,f)=>{if(!d)return!1;(e=equals$$module$node_modules$rambda$dist$rambda_mjs(e,b[f+c]))||(d=!1);return e}).length===a.length}\nfunction prop$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>prop$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(b)return b[a]}function eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a,b),prop$$module$node_modules$rambda$dist$rambda_mjs(a,c))}const eqProps$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(eqPropsFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapArray$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c,b,!0)}\nfunction evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return mapObject$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>{if("Object"===type$$module$node_modules$rambda$dist$rambda_mjs(c)){const e=type$$module$node_modules$rambda$dist$rambda_mjs(a[d]);return"Function"===e?a[d](c):"Object"===e?evolve$$module$node_modules$rambda$dist$rambda_mjs(a[d],c):c}return"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?a[d](c):c},b)}\nfunction evolve$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>evolve$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=type$$module$node_modules$rambda$dist$rambda_mjs(a),d=type$$module$node_modules$rambda$dist$rambda_mjs(b);if(d!==c)throw Error("iterableType !== rulesType");if(!["Object","Array"].includes(c))throw Error(`\'iterable\' and \'rules\' are from wrong type ${c}`);return"Object"===d?evolveObject$$module$node_modules$rambda$dist$rambda_mjs(a,b):evolveArray$$module$node_modules$rambda$dist$rambda_mjs(a,\nb)}function F$$module$node_modules$rambda$dist$rambda_mjs(){return!1}function filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(const d in b)a(b[d],d,b)&&(c[d]=b[d]);return c}function filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){let d=0;const e=b.length,f=[];for(;d<e;)(c?a(b[d],d):a(b[d]))&&f.push(b[d]),d++;return f}\nfunction filter$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>filter$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!b)throw Error("Incorrect iterable input");return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?filterArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,!1):filterObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction find$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>find$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=0;const d=b.length;for(;c<d;){const e=b[c];if(a(e))return e;c++}}function findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>findIndex$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;let d=-1;for(;++d<c;)if(a(b[d]))return d;return-1}\nfunction findLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLast$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return b[c]}function findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>findLastIndex$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=b.length;for(;0<=--c;)if(a(b[c]))return c;return-1}\nfunction flatten$$module$node_modules$rambda$dist$rambda_mjs(a,b){b=void 0===b?[]:b;for(let c=0;c<a.length;c++)isArray$$module$node_modules$rambda$dist$rambda_mjs(a[c])?flatten$$module$node_modules$rambda$dist$rambda_mjs(a[c],b):b.push(a[c]);return b}\nfunction flipFn$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>{if(1===b.length)return c=>a(c,b[0]);if(2===b.length)return a(b[1],b[0]);if(3===b.length)return a(b[1],b[0],b[2]);if(4===b.length)return a(b[1],b[0],b[2],b[3]);throw Error("R.flip doesn\'t work with arity > 4");}}function flip$$module$node_modules$rambda$dist$rambda_mjs(a){return flipFn$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction forEach$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>forEach$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(void 0!==b){if(isArray$$module$node_modules$rambda$dist$rambda_mjs(b))for(var c=0,d=b.length;c<d;)a(b[c]),c++;else{c=0;d=keys$1$$module$node_modules$rambda$dist$rambda_mjs(b);const e=d.length;for(;c<e;){const f=d[c];a(b[f],f,b);c++}}return b}}\nfunction fromPairs$$module$node_modules$rambda$dist$rambda_mjs(a){const b={};a.forEach(([c,d])=>b[c]=d);return b}function groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>groupBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c={};for(let d=0;d<b.length;d++){const e=b[d],f=a(e);c[f]||(c[f]=[]);c[f].push(e)}return c}\nfunction groupWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b))throw new TypeError("list.reduce is not a function");const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(b);if(1===b.length)return[c];const d=[];let e=[];c.reduce((f,g,h)=>{if(0===h)return g;const k=a(f,g),l=0===e.length;h=h===b.length-1;if(k)return l&&e.push(f),e.push(g),h&&d.push(e),g;if(l)return d.push([f]),h&&d.push([g]),g;d.push(e);h&&d.push([g]);e=[];return g},\nvoid 0);return d}function has$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>has$$module$node_modules$rambda$dist$rambda_mjs(a,c):b?b.hasOwnProperty(a):!1}function createPath$$module$node_modules$rambda$dist$rambda_mjs(a,b="."){return"string"===typeof a?a.split(b):a}\nfunction path$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>path$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=b,d=0,e=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);d<e.length;){if(null===c||void 0===c||null===c[e[d]])return;c=c[e[d]];d++}return c}}\nfunction hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>hasPath$$module$node_modules$rambda$dist$rambda_mjs(a,c):void 0!==path$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function head$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[0]||"":a[0]}function _objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b){return a===b?0!==a||1/a===1/b:a!==a&&b!==b}const objectIs$$module$node_modules$rambda$dist$rambda_mjs=Object.is||_objectIs$$module$node_modules$rambda$dist$rambda_mjs;\nfunction identical$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>identical$$module$node_modules$rambda$dist$rambda_mjs(a,c):objectIs$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function identity$$module$node_modules$rambda$dist$rambda_mjs(a){return a}function ifElseFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return(...d)=>!0===("boolean"===typeof a?a:a(...d))?b(...d):c(...d)}\nconst ifElse$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(ifElseFn$$module$node_modules$rambda$dist$rambda_mjs),inc$$module$node_modules$rambda$dist$rambda_mjs=a=>a+1;function indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={};for(let d=0;d<b.length;d++){const e=b[d];c[path$$module$node_modules$rambda$dist$rambda_mjs(a,e)]=e}return c}\nfunction indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>indexBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof a)return indexByPath$$module$node_modules$rambda$dist$rambda_mjs(a,b);const c={};for(let d=0;d<b.length;d++){const e=b[d];c[a(e)]=e}return c}\nfunction indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_indexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=-1,{length:e}=a;c=c>e?e:c;0>c&&(c+=e);e=b>c?0:c-b>>>0;b>>>=0;for(c=Array(e);++d<e;)c[d]=a[d+b];return c}\nfunction init$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.slice(0,-1):a.length?baseSlice$$module$node_modules$rambda$dist$rambda_mjs(a,0,-1):[]}function intersection$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>intersection$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b)}\nfunction intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>intersperse$$module$node_modules$rambda$dist$rambda_mjs(a,f);let c=-1;const d=b.length,e=[];for(;++c<d;)c===d-1?e.push(b[c]):e.push(b[c],a);return e}function is$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>is$$module$node_modules$rambda$dist$rambda_mjs(a,c):null!=b&&b.constructor===a||b instanceof a}\nfunction isEmpty$$module$node_modules$rambda$dist$rambda_mjs(a){const b=type$$module$node_modules$rambda$dist$rambda_mjs(a);return["Undefined","NaN","Number","Null"].includes(b)?!1:a?"Object"===b?0===Object.keys(a).length:"Array"===b?0===a.length:!1:!0}function isNil$$module$node_modules$rambda$dist$rambda_mjs(a){return void 0===a||null===a}\nfunction join$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>join$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.join(a)}function juxt$$module$node_modules$rambda$dist$rambda_mjs(a){return(...b)=>a.map(c=>c(...b))}function keys$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.keys(a)}function last$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a[a.length-1]||"":a[a.length-1]}\nfunction lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function length$$module$node_modules$rambda$dist$rambda_mjs(a){return isArray$$module$node_modules$rambda$dist$rambda_mjs(a)||"string"===typeof a?a.length:NaN}\nfunction lens$$module$node_modules$rambda$dist$rambda_mjs(a,b){return function(c){return function(d){return c(a(d)).map(e=>b(e,d))}}}function nth$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>nth$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=0>a?b.length+a:a;return"[object String]"===Object.prototype.toString.call(b)?b.charAt(c):b[c]}\nfunction updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);return-1===a?c.fill(b,a):c.fill(b,a,a+1)}const update$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(updateFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction lensIndex$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(nth$$module$node_modules$rambda$dist$rambda_mjs(a),update$$module$node_modules$rambda$dist$rambda_mjs(a))}function lensPath$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a),assocPath$$module$node_modules$rambda$dist$rambda_mjs(a))}\nfunction lensProp$$module$node_modules$rambda$dist$rambda_mjs(a){return lens$$module$node_modules$rambda$dist$rambda_mjs(prop$$module$node_modules$rambda$dist$rambda_mjs(a),assoc$$module$node_modules$rambda$dist$rambda_mjs(a))}function match$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>match$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=b.match(a);return null===c?[]:c}\nfunction mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mathMod$$module$node_modules$rambda$dist$rambda_mjs(a,c):!isInteger$$module$node_modules$rambda$dist$rambda_mjs(a)||!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||1>b?NaN:(a%b+b)%b}function maxByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)>a(b)?c:b}const maxBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(maxByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sum$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>b+c,0)}function mean$$module$node_modules$rambda$dist$rambda_mjs(a){return sum$$module$node_modules$rambda$dist$rambda_mjs(a)/a.length}function median$$module$node_modules$rambda$dist$rambda_mjs(a){var b=a.length;if(0===b)return NaN;const c=2-b%2;b=(b-c)/2;return mean$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,0).sort((d,e)=>d===e?0:d<e?-1:1).slice(b,b+c))}\nfunction mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeRight$$module$node_modules$rambda$dist$rambda_mjs(a,c):Object.assign({},a||{},b||{})}function mergeAll$$module$node_modules$rambda$dist$rambda_mjs(a){let b={};map$$module$node_modules$rambda$dist$rambda_mjs(c=>{b=mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,c)},a);return b}\nfunction mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=clone$$module$node_modules$rambda$dist$rambda_mjs(a);Object.keys(b).forEach(d=>{"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(b[d])?"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a[d])?c[d]=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(a[d],b[d]):c[d]=b[d]:c[d]=b[d]});return c}\nfunction mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>mergeLeft$$module$node_modules$rambda$dist$rambda_mjs(a,c):mergeRight$$module$node_modules$rambda$dist$rambda_mjs(b,a)}function mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){const d={};Object.keys(b).forEach(e=>{d[e]=void 0===c[e]?b[e]:a(b[e],c[e])});Object.keys(c).forEach(e=>{void 0===d[e]&&(d[e]=void 0===b[e]?c[e]:a(b[e],c[e]))});return d}\nconst mergeWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(mergeWithFn$$module$node_modules$rambda$dist$rambda_mjs);function min$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>min$$module$node_modules$rambda$dist$rambda_mjs(a,c):b<a?b:a}function minByFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)<a(b)?c:b}const minBy$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(minByFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction ownKeys$$module$node_modules$rambda$dist$rambda_mjs(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}));c.push.apply(c,d)}return c}\nfunction _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c),!0).forEach(function(d){_defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,d,c[d])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):ownKeys$$module$node_modules$rambda$dist$rambda_mjs(Object(c)).forEach(function(d){Object.defineProperty(a,\nd,Object.getOwnPropertyDescriptor(c,d))})}return a}function _defineProperty$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c;return a}function isIterable$$module$node_modules$rambda$dist$rambda_mjs(a){return Array.isArray(a)||"Object"===type$$module$node_modules$rambda$dist$rambda_mjs(a)}\nfunction modifyFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return isIterable$$module$node_modules$rambda$dist$rambda_mjs(c)&&void 0!==c[a]?isArray$$module$node_modules$rambda$dist$rambda_mjs(c)?updateFn$$module$node_modules$rambda$dist$rambda_mjs(a,b(c[a]),c):_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a]:b(c[a])}):c}const modify$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){a=createPath$$module$node_modules$rambda$dist$rambda_mjs(a);if(1===a.length)return _objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},c),{},{[a[0]]:b(c[a[0]])});if(void 0===path$$module$node_modules$rambda$dist$rambda_mjs(a,c))return c;b=modifyPath$$module$node_modules$rambda$dist$rambda_mjs(Array.prototype.slice.call(a,1),b,c[a[0]]);return b===c[a[0]]?c:assoc$$module$node_modules$rambda$dist$rambda_mjs(a[0],\nb,c)}const modifyPath$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs);function modulo$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>modulo$$module$node_modules$rambda$dist$rambda_mjs(a,c):a%b}\nfunction moveFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){if(0>a||0>b)throw Error("Rambda.move does not support negative indexes");if(a>c.length-1||b>c.length-1)return c;const d=cloneList$$module$node_modules$rambda$dist$rambda_mjs(c);d[a]=c[b];d[b]=c[a];return d}const move$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(moveFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction multiply$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>multiply$$module$node_modules$rambda$dist$rambda_mjs(a,c):a*b}function negate$$module$node_modules$rambda$dist$rambda_mjs(a){return-a}function none$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>none$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(let c=0;c<b.length;c++)if(a(b[c]))return!1;return!0}\nfunction not$$module$node_modules$rambda$dist$rambda_mjs(a){return!a}function objOf$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>objOf$$module$node_modules$rambda$dist$rambda_mjs(a,c):{[a]:b}}function of$$module$node_modules$rambda$dist$rambda_mjs(a){return[a]}\nfunction omit$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>omit$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(null!==b&&void 0!==b){var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={};for(const e in b)c.includes(e)||(d[e]=b[e]);return d}}\nfunction on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,d){return 3===arguments.length?e=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,c,e):2===arguments.length?(e,f)=>on$$module$node_modules$rambda$dist$rambda_mjs(a,b,e,f):a(b(c),b(d))}function onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b){let c;return function(){a&&(c=a.apply(b||this,arguments),a=null);return c}}\nfunction once$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length){const c=onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b);return curry$$module$node_modules$rambda$dist$rambda_mjs(c)}return onceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b)}function or$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>or$$module$node_modules$rambda$dist$rambda_mjs(a,c):a||b}const Identity$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(a))});\nfunction overFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(d=>Identity$$module$node_modules$rambda$dist$rambda_mjs(b(d)))(c).x}const over$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(overFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction partial$$module$node_modules$rambda$dist$rambda_mjs(a,...b){const c=a.length;return(...d)=>b.length+d.length>=c?a(...b,...d):partial$$module$node_modules$rambda$dist$rambda_mjs(a,...[...b,...d])}function partialObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return c=>a(mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b){const c={},d={};Object.entries(b).forEach(([e,f])=>{a(f,e)?c[e]=f:d[e]=f});return[c,d]}function partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b,c=!1){const d=[],e=[];let f=-1;for(;f++<b.length-1;)(c?a(b[f],f):a(b[f]))?d.push(b[f]):e.push(b[f]);return[d,e]}\nfunction partition$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>partition$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?partitionArray$$module$node_modules$rambda$dist$rambda_mjs(a,b):partitionObject$$module$node_modules$rambda$dist$rambda_mjs(a,b)}\nfunction pathEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return equals$$module$node_modules$rambda$dist$rambda_mjs(path$$module$node_modules$rambda$dist$rambda_mjs(a,c),b)}const pathEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction pathOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,path$$module$node_modules$rambda$dist$rambda_mjs(b,c))}const pathOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(pathOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction paths$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>paths$$module$node_modules$rambda$dist$rambda_mjs(a,c):a.map(c=>path$$module$node_modules$rambda$dist$rambda_mjs(c,b))}\nfunction pick$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pick$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)c[e]in b&&(d[c[e]]=b[c[e]]),e++;return d}}\nfunction pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>pickAll$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(null!==b&&void 0!==b){for(var c=createPath$$module$node_modules$rambda$dist$rambda_mjs(a,","),d={},e=0;e<c.length;)d[c[e]]=c[e]in b?b[c[e]]:void 0,e++;return d}}\nfunction pluck$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>pluck$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=[];map$$module$node_modules$rambda$dist$rambda_mjs(d=>{void 0!==d[a]&&c.push(d[a])},b);return c}function prepend$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>prepend$$module$node_modules$rambda$dist$rambda_mjs(a,c):"string"===typeof b?[a].concat(b.split("")):[a].concat(b)}\nconst product$$module$node_modules$rambda$dist$rambda_mjs=reduce$$module$node_modules$rambda$dist$rambda_mjs(multiply$$module$node_modules$rambda$dist$rambda_mjs,1);function propEqFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?equals$$module$node_modules$rambda$dist$rambda_mjs(b,prop$$module$node_modules$rambda$dist$rambda_mjs(a,c)):!1}const propEq$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propEqFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction propIsFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return is$$module$node_modules$rambda$dist$rambda_mjs(a,c[b])}const propIs$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propIsFn$$module$node_modules$rambda$dist$rambda_mjs);function propOrFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c?defaultTo$$module$node_modules$rambda$dist$rambda_mjs(a,c[b]):a}const propOr$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propOrFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction props$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>props$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error("propsToPick is not a list");return mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>b[c],a)}function propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(prop$$module$node_modules$rambda$dist$rambda_mjs(b,c))}\nconst propSatisfies$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(propSatisfiesFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction range$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>range$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(Number.isNaN(Number(a))||Number.isNaN(Number(b)))throw new TypeError("Both arguments to range must be numbers");if(b<a)return[];const c=b-a,d=Array(c);for(let e=0;e<c;e++)d[e]=a+e;return d}\nfunction reject$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>reject$$module$node_modules$rambda$dist$rambda_mjs(a,c):filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!a(c),b)}function repeat$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>repeat$$module$node_modules$rambda$dist$rambda_mjs(a,c):Array(b).fill(a)}function replaceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.replace(a,b)}\nconst replace$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(replaceFn$$module$node_modules$rambda$dist$rambda_mjs);function reverse$$module$node_modules$rambda$dist$rambda_mjs(a){return"string"===typeof a?a.split("").reverse().join(""):a.slice().reverse()}function setFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return over$$module$node_modules$rambda$dist$rambda_mjs(a,always$$module$node_modules$rambda$dist$rambda_mjs(b),c)}\nconst set$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(setFn$$module$node_modules$rambda$dist$rambda_mjs);function sliceFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return c.slice(a,b)}const slice$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(sliceFn$$module$node_modules$rambda$dist$rambda_mjs);\nfunction sort$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sort$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort(a)}function sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>sortBy$$module$node_modules$rambda$dist$rambda_mjs(a,c):cloneList$$module$node_modules$rambda$dist$rambda_mjs(b).sort((c,d)=>{c=a(c);d=a(d);return c===d?0:c<d?-1:1})}\nfunction split$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>split$$module$node_modules$rambda$dist$rambda_mjs(a,c):b.split(a)}function maybe$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){b=a&&"Function"===type$$module$node_modules$rambda$dist$rambda_mjs(b)?b():b;c=a||"Function"!==type$$module$node_modules$rambda$dist$rambda_mjs(c)?c:c();return a?b:c}\nfunction take$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>take$$module$node_modules$rambda$dist$rambda_mjs(a,c):0>a?b.slice():"string"===typeof b?b.slice(0,a):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,0,a)}\nfunction splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>splitAt$$module$node_modules$rambda$dist$rambda_mjs(a,d);if(!b)throw new TypeError(`Cannot read property \'slice\' of ${b}`);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(b)&&"string"!==typeof b)return[[],[]];const c=maybe$$module$node_modules$rambda$dist$rambda_mjs(0>a,0>b.length+a?0:b.length+a,a);return[take$$module$node_modules$rambda$dist$rambda_mjs(c,b),drop$$module$node_modules$rambda$dist$rambda_mjs(c,\nb)]}function splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>splitEvery$$module$node_modules$rambda$dist$rambda_mjs(a,e);if(1>a)throw Error("First argument to splitEvery must be a positive integer");const c=[];let d=0;for(;d<b.length;)c.push(b.slice(d,d+=a));return c}\nfunction splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>splitWhen$$module$node_modules$rambda$dist$rambda_mjs(a,g);if(!b)throw new TypeError(`Cannot read property \'length\' of ${b}`);const c=[],d=[];let e=!1,f=-1;for(;f++<b.length-1;)e?d.push(b[f]):a(b[f])?(d.push(b[f]),e=!0):c.push(b[f]);return[c,d]}\nfunction startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>startsWith$$module$node_modules$rambda$dist$rambda_mjs(a,d);if("string"===typeof b)return b.startsWith(a);if(!isArray$$module$node_modules$rambda$dist$rambda_mjs(a))return!1;let c=!0;return a.filter((d,e)=>{if(!c)return!1;(d=equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]))||(c=!1);return d}).length===a.length}\nfunction subtract$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>subtract$$module$node_modules$rambda$dist$rambda_mjs(a,c):a-b}\nfunction symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs(a,c):concat$$module$node_modules$rambda$dist$rambda_mjs(filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,b),a),filter$$module$node_modules$rambda$dist$rambda_mjs(c=>!includes$$module$node_modules$rambda$dist$rambda_mjs(c,a),b))}\nfunction T$$module$node_modules$rambda$dist$rambda_mjs(){return!0}function tail$$module$node_modules$rambda$dist$rambda_mjs(a){return drop$$module$node_modules$rambda$dist$rambda_mjs(1,a)}\nfunction takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>takeLast$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=b.length;if(0>a)return b.slice();let d=a>c?c:a;return"string"===typeof b?b.slice(c-d):baseSlice$$module$node_modules$rambda$dist$rambda_mjs(b,c-d,c)}\nfunction takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return f=>takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs(a,f);if(0===b.length)return b;let c=!1;const d=[];let e=b.length;for(;!c||0===e;)e--,!1===a(b[e])?c=!0:c||d.push(b[e]);return isArray$$module$node_modules$rambda$dist$rambda_mjs(b)?d.reverse():d.reverse().join("")}\nfunction takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return g=>takeWhile$$module$node_modules$rambda$dist$rambda_mjs(a,g);const c=isArray$$module$node_modules$rambda$dist$rambda_mjs(b);if(!c&&"string"!==typeof b)throw Error("`iterable` is neither list nor a string");let d=!0;const e=[];let f=-1;for(;f++<b.length-1;)a(b[f])?d&&e.push(b[f]):d&&(d=!1);return c?e:e.join("")}\nfunction tap$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>tap$$module$node_modules$rambda$dist$rambda_mjs(a,c);a(b);return b}function test$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>test$$module$node_modules$rambda$dist$rambda_mjs(a,c);if("string"===typeof a)throw new TypeError(`\\u2018test\\u2019 requires a value of type RegExp as its first argument; received "${a}"`);return-1!==b.search(a)}\nfunction times$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return c=>times$$module$node_modules$rambda$dist$rambda_mjs(a,c);if(!isInteger$$module$node_modules$rambda$dist$rambda_mjs(b)||0>b)throw new RangeError("n must be an integer");return map$$module$node_modules$rambda$dist$rambda_mjs(a,range$$module$node_modules$rambda$dist$rambda_mjs(0,b))}function toLower$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toLowerCase()}\nfunction toPairs$$module$node_modules$rambda$dist$rambda_mjs(a){return Object.entries(a)}function toString$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toString()}function toUpper$$module$node_modules$rambda$dist$rambda_mjs(a){return a.toUpperCase()}function transpose$$module$node_modules$rambda$dist$rambda_mjs(a){return a.reduce((b,c)=>{c.forEach((d,e)=>isArray$$module$node_modules$rambda$dist$rambda_mjs(b[e])?b[e].push(d):b.push([d]));return b},[])}\nfunction trim$$module$node_modules$rambda$dist$rambda_mjs(a){return a.trim()}const isFunction$$module$node_modules$rambda$dist$rambda_mjs=a=>["Promise","Function"].includes(type$$module$node_modules$rambda$dist$rambda_mjs(a));\nfunction tryCatch$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(!isFunction$$module$node_modules$rambda$dist$rambda_mjs(a))throw Error(`R.tryCatch | fn \'${a}\'`);const c=isFunction$$module$node_modules$rambda$dist$rambda_mjs(b);return(...d)=>{try{return a(...d)}catch(e){return c?b(e,...d):b}}}function unapply$$module$node_modules$rambda$dist$rambda_mjs(a){return function(...b){return a.call(this,b)}}\nfunction union$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>union$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=cloneList$$module$node_modules$rambda$dist$rambda_mjs(a);b.forEach(d=>{includes$$module$node_modules$rambda$dist$rambda_mjs(d,a)||c.push(d)});return c}\nfunction uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>uniqBy$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=new Set;return b.filter(d=>{if(c.has(a(d)))return!1;c.add(a(d));return!0})}function includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){let d=!1,e=-1;for(;++e<c.length&&!d;)a(b,c[e])&&(d=!0);return d}\nfunction uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>uniqWith$$module$node_modules$rambda$dist$rambda_mjs(a,e);let c=-1;const d=[];for(;++c<b.length;){const e=b[c];includesWith$$module$node_modules$rambda$dist$rambda_mjs(a,e,d)||d.push(e)}return d}function unless$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unless$$module$node_modules$rambda$dist$rambda_mjs(a,c):c=>a(c)?c:b(c)}\nfunction unwind$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>unwind$$module$node_modules$rambda$dist$rambda_mjs(a,c):isArray$$module$node_modules$rambda$dist$rambda_mjs(b[a])?mapArray$$module$node_modules$rambda$dist$rambda_mjs(c=>_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs(_objectSpread2$$module$node_modules$rambda$dist$rambda_mjs({},b),{},{[a]:c}),b[a]):[b]}\nfunction values$$module$node_modules$rambda$dist$rambda_mjs(a){return"Object"!==type$$module$node_modules$rambda$dist$rambda_mjs(a)?[]:Object.values(a)}const Const$$module$node_modules$rambda$dist$rambda_mjs=a=>({x:a,map:b=>Const$$module$node_modules$rambda$dist$rambda_mjs(a)});function view$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>view$$module$node_modules$rambda$dist$rambda_mjs(a,c):a(Const$$module$node_modules$rambda$dist$rambda_mjs)(b).x}\nfunction whenFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return a(c)?b(c):c}const when$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(whenFn$$module$node_modules$rambda$dist$rambda_mjs);function where$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return d=>where$$module$node_modules$rambda$dist$rambda_mjs(a,d);let c=!0;for(const d in a){if(!c)continue;const e=a[d](b[d]);c&&!1===e&&(c=!1)}return c}\nfunction whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(void 0===b)return c=>whereAny$$module$node_modules$rambda$dist$rambda_mjs(a,c);for(const c in a)if(a[c](b[c]))return!0;return!1}\nfunction whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return d=>whereEq$$module$node_modules$rambda$dist$rambda_mjs(a,d);const c=filter$$module$node_modules$rambda$dist$rambda_mjs((d,e)=>equals$$module$node_modules$rambda$dist$rambda_mjs(d,b[e]),a);return Object.keys(c).length===Object.keys(a).length}\nfunction without$$module$node_modules$rambda$dist$rambda_mjs(a,b){return void 0===b?c=>without$$module$node_modules$rambda$dist$rambda_mjs(a,c):reduce$$module$node_modules$rambda$dist$rambda_mjs((c,d)=>-1<_indexOf$$module$node_modules$rambda$dist$rambda_mjs(d,a)?c:c.concat(d),[],b)}function xor$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>xor$$module$node_modules$rambda$dist$rambda_mjs(a,c):!!a&&!b||!!b&&!a}\nfunction zip$$module$node_modules$rambda$dist$rambda_mjs(a,b){if(1===arguments.length)return e=>zip$$module$node_modules$rambda$dist$rambda_mjs(a,e);const c=[],d=Math.min(a.length,b.length);for(let e=0;e<d;e++)c[e]=[a[e],b[e]];return c}function zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,b){return 1===arguments.length?c=>zipObj$$module$node_modules$rambda$dist$rambda_mjs(a,c):take$$module$node_modules$rambda$dist$rambda_mjs(b.length,a).reduce((c,d,e)=>{c[d]=b[e];return c},{})}\nfunction zipWithFn$$module$node_modules$rambda$dist$rambda_mjs(a,b,c){return take$$module$node_modules$rambda$dist$rambda_mjs(b.length>c.length?c.length:b.length,b).map((d,e)=>a(d,c[e]))}const zipWith$$module$node_modules$rambda$dist$rambda_mjs=curry$$module$node_modules$rambda$dist$rambda_mjs(zipWithFn$$module$node_modules$rambda$dist$rambda_mjs);var module$node_modules$rambda$dist$rambda_mjs={};module$node_modules$rambda$dist$rambda_mjs.F=F$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.T=T$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.__findHighestArity=__findHighestArity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._arity=_arity$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._indexOf=_indexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs._lastIndexOf=_lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs._pipe=_pipe$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.add=add$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.adjust=adjust$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.all=all$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.allPass=allPass$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.always=always$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.and=and$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.any=any$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.anyPass=anyPass$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.append=append$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.apply=apply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.applySpec=applySpec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assoc=assoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.assocPath=assocPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.bind=bind$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.both=both$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.chain=chain$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clamp=clamp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.clone=clone$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.complement=complement$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.compose=compose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.concat=concat$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.cond=cond$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.converge=converge$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.count=count$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.countBy=countBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curry=curry$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.curryN=curryN$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dec=dec$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.defaultTo=defaultTo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.difference=difference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dissoc=dissoc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.divide=divide$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.drop=drop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropLast=dropLast$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.dropLastWhile=dropLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeats=dropRepeats$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropRepeatsWith=dropRepeatsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.dropWhile=dropWhile$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.either=either$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.endsWith=endsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.eqProps=eqProps$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.equals=equals$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolve=evolve$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.evolveArray=evolveArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.evolveObject=evolveObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filter=filter$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterArray=filterArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.filterObject=filterObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.find=find$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findIndex=findIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLast=findLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.findLastIndex=findLastIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.flatten=flatten$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.flip=flip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.forEach=forEach$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.fromPairs=fromPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupBy=groupBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.groupWith=groupWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.has=has$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.hasPath=hasPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.head=head$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identical=identical$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.identity=identity$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.ifElse=ifElse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.inc=inc$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.includes=includes$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexBy=indexBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.indexOf=indexOf$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.init=init$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersection=intersection$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.intersperse=intersperse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.is=is$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.isEmpty=isEmpty$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.isNil=isNil$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.join=join$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.juxt=juxt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.keys=keys$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.last=last$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lastIndexOf=lastIndexOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.length=length$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lens=lens$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensIndex=lensIndex$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.lensPath=lensPath$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.lensProp=lensProp$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.map=map$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapArray=mapArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObjIndexed=mapObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mapObject=mapObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.match=match$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mathMod=mathMod$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.max=max$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxBy=maxBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.maxByFn=maxByFn$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mean=mean$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.median=median$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.merge=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeAll=mergeAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeDeepRight=mergeDeepRight$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.mergeLeft=mergeLeft$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeRight=mergeRight$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.mergeWith=mergeWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.min=min$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.minBy=minBy$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.minByFn=minByFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modify=modify$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPath=modifyPath$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modifyPathFn=modifyPathFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.modulo=modulo$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.move=move$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.multiply=multiply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.negate=negate$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.none=none$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.not=not$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.nth=nth$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.objOf=objOf$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.of=of$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.omit=omit$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.on=on$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.once=once$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.or=or$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.over=over$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partial=partial$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partialObject=partialObject$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.partition=partition$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionArray=partitionArray$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.partitionObject=partitionObject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.path=path$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pathEq=pathEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pathOr=pathOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.paths=paths$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pick=pick$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pickAll=pickAll$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.pipe=pipe$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.pluck=pluck$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prepend=prepend$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.product=product$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.prop=prop$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propEq=propEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.propIs=propIs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propOr=propOr$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.propSatisfies=propSatisfies$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.props=props$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.range=range$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.reduce=reduce$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceFn=reduceFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reduceStopper=reduceStopper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reject=reject$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.repeat=repeat$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.replace=replace$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.reverse=reverse$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.set=set$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.slice=slice$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sort=sort$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.sortBy=sortBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.split=split$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitAt=splitAt$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitEvery=splitEvery$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.splitWhen=splitWhen$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.startsWith=startsWith$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.subtract=subtract$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.sum=sum$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.symmetricDifference=symmetricDifference$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tail=tail$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.take=take$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLast=takeLast$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeLastWhile=takeLastWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.takeWhile=takeWhile$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tap=tap$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.test=test$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.times=times$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toLower=toLower$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toPairs=toPairs$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.toString=toString$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.toUpper=toUpper$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.transpose=transpose$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.trim=trim$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.tryCatch=tryCatch$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.type=type$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unapply=unapply$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.union=union$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniq=uniq$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqBy=uniqBy$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.uniqWith=uniqWith$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.unless=unless$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.unwind=unwind$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.update=update$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.updateFn=updateFn$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.values=values$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.view=view$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.when=when$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.where=where$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereAny=whereAny$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.whereEq=whereEq$$module$node_modules$rambda$dist$rambda_mjs;\nmodule$node_modules$rambda$dist$rambda_mjs.without=without$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.xor=xor$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zip=zip$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipObj=zipObj$$module$node_modules$rambda$dist$rambda_mjs;module$node_modules$rambda$dist$rambda_mjs.zipWith=zipWith$$module$node_modules$rambda$dist$rambda_mjs;let startPromize$$module$src$workers$old_spn_worker;\nconst getAudioContext$$module$src$workers$old_spn_worker=a=>window[a]||window.parent[`__csound_wasm_iframe_parent_${a}`]||newAudioContext$$module$src$utils$new_audio_context(),closeAndDeleteContext$$module$src$workers$old_spn_worker=async a=>{const b=window[a],c=window.parent[`__csound_wasm_iframe_parent_${a}`];if(b){if("closed"!==b.state)try{await b.close()}catch(d){}delete window[a]}if(c){if(b!==c&&"closed"!==c.state)try{await c.close()}catch(d){}delete window.parent[`__csound_wasm_iframe_parent_${a}`]}},getAudioNode$$module$src$workers$old_spn_worker=\na=>window[a+"Node"]||window.parent[`__csound_wasm_iframe_parent_${a}Node`],setAudioNode$$module$src$workers$old_spn_worker=(a,b)=>{window[a]?window[`${a}Node`]=b:window.parent[`__csound_wasm_iframe_parent_${a}Node`]=b},disconnectAudioNode$$module$src$workers$old_spn_worker=a=>{(a=getAudioNode$$module$src$workers$old_spn_worker(a))&&a.disconnect()},deleteAudioNode$$module$src$workers$old_spn_worker=a=>{window[a+"Node"]&&delete window[a+"Node"];window.parent[`__csound_wasm_iframe_parent_${a}Node`]&&\ndelete window.parent[`__csound_wasm_iframe_parent_${a}Node`]},PERIODS$$module$src$workers$old_spn_worker=4,spnInstances$$module$src$workers$old_spn_worker=new Map;\nclass CsoundScriptNodeProcessor$$module$src$workers$old_spn_worker{constructor({audioContext:a,contextUid:b,hardwareBufferSize:c,softwareBufferSize:d,inputsCount:e,outputsCount:f,sampleRate:g,audioContextIsProvided:h,autoConnect:k}){this.autoConnect=k;this.audioContextIsProvided=h;this.hardwareBufferSize=c;this.softwareBufferSize=d;this.inputsCount=e;this.outputsCount=f;this.sampleRate=g;this.vanillaOutputChannels=[];this.vanillaInputChannels=[];this.pendingFrames=this.vanillaAvailableFrames=this.vanillaInputReadIndex=\nthis.vanillaOutputReadIndex=0;this.vanillaFirstTransferDone=this.vanillaInitialized=!1;this.vanillaInputChannels=instantiateAudioPacket$$module$src$workers$common_utils(e,c);this.vanillaOutputChannels=instantiateAudioPacket$$module$src$workers$common_utils(f,c);this.audioContext=a;this.contextUid=b;this.scriptNode=this.audioContext.createScriptProcessor(this.softwareBufferSize,e,f);this.process=this.process.bind(this);a=this.process.bind(this);this.scriptNode.onaudioprocess=a;this.autoConnect?setAudioNode$$module$src$workers$old_spn_worker(b,\nthis.scriptNode.connect(this.audioContext.destination)):setAudioNode$$module$src$workers$old_spn_worker(b,this.scriptNode.context.destination);this.updateVanillaFrames=this.updateVanillaFrames.bind(this);this.initCallbacks=this.initCallbacks.bind(this)}async initCallbacks({workerMessagePort:a,transferInputFrames:b,requestPort:c}){this.workerMessagePort=a;this.transferInputFrames=b;this.requestPort=c;if("suspended"===this.audioContext.state){for(a=0;100>a;)if(await new Promise(d=>setTimeout(d,100)),\n"suspended"===this.audioContext.state)a+=1;else return;this.workerMessagePort.broadcastPlayState("realtimePerformancePaused")}}updateVanillaFrames({audioPacket:a,numFrames:b,readIndex:c}){this.pendingFrames-=b;if(a){for(let d=0;d<this.outputsCount;++d){let e=!1,f=b;(c+b)%this.hardwareBufferSize<c&&(e=!0,f=this.hardwareBufferSize-c);this.vanillaOutputChannels[d].set(a[d].subarray(0,f),c);e&&this.vanillaOutputChannels[d].set(a[d].subarray(f))}this.vanillaAvailableFrames+=b}this.vanillaFirstTransferDone||\n(this.vanillaFirstTransferDone=!0,startPromize$$module$src$workers$old_spn_worker&&startPromize$$module$src$workers$old_spn_worker())}process({inputBuffer:a,outputBuffer:b}){if("realtimePerformanceEnded"===this.workerMessagePort.vanillaWorkerState)return setPlayState$$module$src$workers$old_spn_worker({contextUid:this.contextUid,newPlayState:"realtimePerformanceEnded"}),!0;if(!this.vanillaInitialized){var c=this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker;this.requestPort.postMessage({readIndex:0,\nnumFrames:c});this.pendingFrames+=c;return this.vanillaInitialized=!0}if(!this.vanillaFirstTransferDone)return!0;c=range$$module$node_modules$rambda$dist$rambda_mjs(0,this.inputsCount).map(h=>a.getChannelData(h));const d=range$$module$node_modules$rambda$dist$rambda_mjs(0,this.outputsCount).map(h=>b.getChannelData(h));var e=0<c.length;const f=(this.vanillaOutputReadIndex+d[0].length)%this.hardwareBufferSize,g=e?(this.vanillaInputReadIndex+c[0].length)%this.hardwareBufferSize:0;if("realtimePerformanceStarted"!==\nthis.workerMessagePort.vanillaWorkerState&&"realtimePerformanceResumed"!==this.workerMessagePort.vanillaWorkerState)return d.forEach(h=>{h.fill(0)}),!0;if(this.vanillaAvailableFrames>=d[0].length){d.forEach((h,k)=>{h.set(this.vanillaOutputChannels[k].subarray(this.vanillaOutputReadIndex,f<this.vanillaOutputReadIndex?this.hardwareBufferSize:f))});if(0<this.inputsCount&&e&&0<c[0].length&&(e=this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker,c.forEach((h,k)=>{this.vanillaInputChannels[k].set(h,\nthis.vanillaInputReadIndex)}),0===g%e)){const h=[],k=(0===g?this.hardwareBufferSize:g)-e,l=0===g?this.hardwareBufferSize:g;this.vanillaInputChannels.forEach(m=>{h.push(m.subarray(k,l))});this.transferInputFrames(h)}this.vanillaOutputReadIndex=f;this.vanillaInputReadIndex=g;this.vanillaAvailableFrames-=d[0].length;this.bufferUnderrunCount=0}else 1<this.bufferUnderrunCount&&12>this.bufferUnderrunCount&&(this.workerMessagePort.post("Buffer underrun"),this.bufferUnderrunCount+=1),100===this.bufferUnderrunCount&&\n(this.workerMessagePort.post("FATAL: 100 buffers failed in a row"),this.workerMessagePort.broadcastPlayState("realtimePerformanceEnded"));this.vanillaAvailableFrames<this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker&&this.pendingFrames<this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker&&(this.requestPort.postMessage({readIndex:(this.vanillaAvailableFrames+f+this.pendingFrames)%this.hardwareBufferSize,numFrames:this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker}),\nthis.pendingFrames+=this.softwareBufferSize*PERIODS$$module$src$workers$old_spn_worker);return!0}}\nconst initAudioInputPort$$module$src$workers$old_spn_worker=({audioInputPort:a})=>b=>a.postMessage(b),initMessagePort$$module$src$workers$old_spn_worker=({port:a})=>{const b=new $jscompDefaultExport$$module$src$utils$message_port_state;b.post=c=>a.postMessage({log:c});b.broadcastPlayState=c=>{"realtimePerformanceStarted"===b.vanillaWorkerState&&"realtimePerformanceStarted"===c||a.postMessage({playStateChange:c})};b.ready=!0;return b},initRequestPort$$module$src$workers$old_spn_worker=({requestPort:a,\nspnClassInstance:b})=>{a.addEventListener("message",c=>{const {audioPacket:d,readIndex:e,numFrames:f}=c.data;b.updateVanillaFrames({audioPacket:d,numFrames:f,readIndex:e})});a.start();return a},setPlayState$$module$src$workers$old_spn_worker=async({contextUid:a,newPlayState:b})=>{const c=spnInstances$$module$src$workers$old_spn_worker.get(a);c&&("resume"===b?("suspended"===c.audioContext.state&&c.audioContext.resume(),"running"===c.audioContext.state&&c.workerMessagePort.broadcastPlayState("realtimePerformanceResumed")):\nc.workerMessagePort&&("realtimePerformanceEnded"===b&&"realtimePerformanceEnded"!==c.workerMessagePort.vanillaWorkerState?(c.workerMessagePort.broadcastPlayState("realtimePerformanceEnded"),c.autoConnect&&disconnectAudioNode$$module$src$workers$old_spn_worker(a),deleteAudioNode$$module$src$workers$old_spn_worker(a),spnInstances$$module$src$workers$old_spn_worker.delete(a),c.autoConnect&&!c.audioContextIsProvided&&closeAndDeleteContext$$module$src$workers$old_spn_worker(a)):"realtimePerformanceResumed"===\nb&&"suspended"===c.audioContext.state&&c.audioContext.resume(),c.workerMessagePort.vanillaWorkerState=b))},initialize$$module$src$workers$old_spn_worker=async({contextUid:a,hardwareBufferSize:b,softwareBufferSize:c,inputsCount:d,outputsCount:e,sampleRate:f,audioInputPort:g,messagePort:h,requestPort:k,audioContextIsProvided:l,autoConnect:m,initialPlayState:n})=>{logOldSpnWorker$$module$src$logger("initializing old-spn worker in iframe")();startPromize$$module$src$workers$old_spn_worker=void 0;const p=\ngetAudioContext$$module$src$workers$old_spn_worker(a);b=new CsoundScriptNodeProcessor$$module$src$workers$old_spn_worker({audioContext:p,contextUid:a,hardwareBufferSize:b,softwareBufferSize:c,inputsCount:d,outputsCount:e,sampleRate:f,audioContextIsProvided:l,autoConnect:m});h=initMessagePort$$module$src$workers$old_spn_worker({port:h});g=initAudioInputPort$$module$src$workers$old_spn_worker({audioInputPort:g,spnClassInstance:b});initRequestPort$$module$src$workers$old_spn_worker({requestPort:k,spnClassInstance:b});\nb.initCallbacks({workerMessagePort:h,transferInputFrames:g,requestPort:k});spnInstances$$module$src$workers$old_spn_worker.set(a,b);if("realtimePerformanceStarted"===n)return await new Promise((q,r)=>{startPromize$$module$src$workers$old_spn_worker=q;setTimeout(()=>{if("function"===typeof startPromize$$module$src$workers$old_spn_worker)return r(Error("a call to start() timed out")),startPromize$$module$src$workers$old_spn_worker=void 0,-1},6E5)})};\nexpose$$module$node_modules$comlink$dist$esm$comlink_mjs({initialize:initialize$$module$src$workers$old_spn_worker,setPlayState:setPlayState$$module$src$workers$old_spn_worker},windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(window.parent));var module$src$workers$old_spn_worker={};}).call(this);\n//# sourceMappingURL=__compiled.old-spn.worker.js.map\n'])),
+module$dist$__compiled_old_spn_worker_inline={};module$dist$__compiled_old_spn_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_old_spn_worker_inline;let spnWorker$$module$src$mains$old_spn_main,proxyPort$$module$src$mains$old_spn_main,UID$$module$src$mains$old_spn_main=0;
+class ScriptProcessorNodeMainThread$$module$src$mains$old_spn_main{constructor({audioContext:a,audioContextIsProvided:b,autoConnect:c}){this.autoConnect=c;this.audioContextIsProvided=b;this.audioContext=a;this.softwareBufferSize=this.hardwareBufferSize=this.outputsCount=this.inputsCount=this.sampleRate=this.csoundWorkerMain=this.currentPlayState=void 0;this.scriptProcessorNode=!0;logOldSpnMain$$module$src$logger("ScriptProcessorNodeMainThread was constructed")()}async terminateInstance(){window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]&&
+(window[`__csound_wasm_iframe_parent_${this.contextUid}Node`].disconnect(),delete window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]);if(this.audioContext){if("closed"!==this.audioContext.state)try{await this.audioContext.close()}catch(a){}delete this.audioContext}proxyPort$$module$src$mains$old_spn_main&&(proxyPort$$module$src$mains$old_spn_main[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),proxyPort$$module$src$mains$old_spn_main=void 0);this.iFrameElement&&this.iFrameElement.remove();
+spnWorker$$module$src$mains$old_spn_main=void 0;UID$$module$src$mains$old_spn_main=0}async onPlayStateChange(a){if(this.currentPlayState!==a){switch(a){case "realtimePerformanceStarted":logOldSpnMain$$module$src$logger("event received: realtimePerformanceStarted")();this.currentPlayState=a;await this.initialize();await this.csoundWorkerMain.eventPromises.releaseStartPromise();this.publicEvents.triggerRealtimePerformanceStarted(this.csoundWorkerMain);break;case "realtimePerformanceEnded":logOldSpnMain$$module$src$logger("event received: realtimePerformanceEnded")();
+window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]&&(window[`__csound_wasm_iframe_parent_${this.contextUid}Node`].disconnect(),delete window[`__csound_wasm_iframe_parent_${this.contextUid}Node`]);break;case "realtimePerformancePaused":this.csoundWorkerMain&&this.csoundWorkerMain.eventPromises&&(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformancePaused(this),await this.csoundWorkerMain.eventPromises.releasePausePromise());break;case "realtimePerformanceResumed":this.csoundWorkerMain&&
+this.csoundWorkerMain.eventPromises&&(this.csoundWorkerMain.publicEvents&&this.csoundWorkerMain.publicEvents.triggerRealtimePerformanceResumed(this),await this.csoundWorkerMain.eventPromises.releaseResumePromise())}this.currentPlayState=a;!proxyPort$$module$src$mains$old_spn_main||"realtimePerformanceStarted"===a&&"renderStarted"===a||await proxyPort$$module$src$mains$old_spn_main.setPlayState({contextUid:this.contextUid,newPlayState:a})}}async initIframe(){if(void 0===window||void 0===window.document)throw new TypeError("Can only run SPN in Browser scope");
+const a=window.document;var b=['<!doctype html>\n<html lang="en">\n<head>\n<meta charset="UTF-8">\n</head>\n<body>',`<script type="text/javascript" src="${$jscompDefaultExport$$module$dist$__compiled_old_spn_worker_inline()}"></script>`,"</body>"].join("\n");b=new Blob([b],{type:"text/html"});this.iFrameElement=document.createElement("iframe");this.iFrameElement.src=URL.createObjectURL(b);this.iFrameElement.sandbox.add("allow-scripts","allow-same-origin");this.iFrameElement.style.cssText="position:absolute;left:0;top:-999px;width:1px;height:1px;";
+b=new Promise(c=>{this.iFrameElement.onload=()=>{c()}});a.body.append(this.iFrameElement);try{await b}catch(c){console.error(c)}spnWorker$$module$src$mains$old_spn_main=this.iFrameElement.contentWindow}async initialize(){if(!spnWorker$$module$src$mains$old_spn_main&&(await this.initIframe(),!spnWorker$$module$src$mains$old_spn_main)){console.error("SPN FATAL: Couldn't create iFrame");return}var a=`audioWorklet${UID$$module$src$mains$old_spn_main}`;this.contextUid=a;UID$$module$src$mains$old_spn_main+=
+1;proxyPort$$module$src$mains$old_spn_main||(proxyPort$$module$src$mains$old_spn_main=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(windowEndpoint$$module$node_modules$comlink$dist$esm$comlink_mjs(spnWorker$$module$src$mains$old_spn_main)));this.audioContext||(this.audioContextIsProvided&&console.error("fatal: the provided AudioContext was undefined"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));"closed"===this.audioContext.state&&(this.audioContextIsProvided&&
+console.error("fatal: the provided AudioContext was closed, falling back new AudioContext"),this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));this.audioContextIsProvided||this.sampleRate===this.audioContext.sampleRate||(this.audioContext=new (WebkitAudioContext$$module$src$utils())({sampleRate:this.sampleRate}));spnWorker$$module$src$mains$old_spn_main[a]=this.audioContext;window[`__csound_wasm_iframe_parent_${a}`]=this.audioContext;let b;this.isRequestingInput&&
+await new Promise(c=>{requestMicrophoneNode$$module$src$mains$io_utils(d=>{d&&(b=this.audioContext.createMediaStreamSource(d));c()})});logOldSpnMain$$module$src$logger("initializing proxyPort")();await proxyPort$$module$src$mains$old_spn_main.initialize(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({contextUid:a,hardwareBufferSize:32768,softwareBufferSize:2048,inputsCount:this.inputsCount,outputsCount:this.outputsCount,sampleRate:this.sampleRate,audioInputPort:this.ipcMessagePorts.audioWorkerAudioInputPort,
+messagePort:this.ipcMessagePorts.workerMessagePort2,requestPort:this.ipcMessagePorts.audioWorkerFrameRequestPort,audioContextIsProvided:this.audioContextIsProvided,autoConnect:this.autoConnect,initialPlayState:this.currentPlayState},[this.ipcMessagePorts.audioWorkerAudioInputPort,this.ipcMessagePorts.workerMessagePort2,this.ipcMessagePorts.audioWorkerFrameRequestPort]));logOldSpnMain$$module$src$logger("done initializing proxyPort")();(a=spnWorker$$module$src$mains$old_spn_main[`${a}Node`]||window[`__csound_wasm_iframe_parent_${a}Node`])&&
+b&&b.connect(a);this.publicEvents.triggerOnAudioNodeCreated(a);this.isRequestingMidi&&this.csoundWorkerMain&&this.csoundWorkerMain.handleMidiInput&&(logOldSpnMain$$module$src$logger("requesting for web-midi connection")(),requestMidi$$module$src$utils$request_midi({onMidiMessage:this.csoundWorkerMain.handleMidiInput.bind(this.csoundWorkerMain)}))}}var $jscompDefaultExport$$module$src$mains$old_spn_main=ScriptProcessorNodeMainThread$$module$src$mains$old_spn_main,module$src$mains$old_spn_main={};
+module$src$mains$old_spn_main.default=$jscompDefaultExport$$module$src$mains$old_spn_main;const dlinit$$module$src$dlinit=(a,b,c,d)=>{if(b.exports.csoundModuleInit){var e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=new WebAssembly.Global({value:"i32",mutable:!0},0);const h=new WebAssembly.Global({value:"i32",mutable:!0},0);let k=c.length;"function"===typeof b.exports.csoundModuleCreate&&(c.grow(1),e.value=k,c.set(k,b.exports.csoundModuleCreate),k+=1);"function"===typeof b.exports.csoundModuleInit&&(c.grow(1),f.value=k,c.set(k,
+b.exports.csoundModuleInit),k+=1);"function"===typeof b.exports.csoundModuleDestroy&&(c.grow(1),g.value=k,c.set(k,b.exports.csoundModuleDestroy),k+=1);"function"===typeof b.exports.csoundModuleErrorCodeToString&&(c.grow(1),h.value=k,c.set(k,b.exports.csoundModuleErrorCodeToString));a.exports.csoundWasiLoadPlugin(d,e,f,g,h)}else b.exports.csound_opcode_init||b.exports.csound_fgen_init?(e=new WebAssembly.Global({value:"i32",mutable:!0},0),f=new WebAssembly.Global({value:"i32",mutable:!0},0),g=c.length,
+"function"===typeof b.exports.csound_opcode_init&&(e.value=g,c.grow(1),c.set(g,b.exports.csound_opcode_init),g+=1),"function"===typeof b.exports.csound_fgen_init&&(f.value=g,c.grow(1),c.set(g,b.exports.csound_fgen_init)),a.exports.csoundWasiLoadOpcodeLibrary(d,f,e)):console.error("Plugin doesn't export nececcary functions to quality as csound plugin.")};var module$src$dlinit={};module$src$dlinit.dlinit=dlinit$$module$src$dlinit;void 0!==goog.global&&(goog.global={});goog.global.BigInt||(goog.global.BigInt=void 0===BigInt?Number:BigInt);
+const WASI_ESUCCESS$$module$src$filesystem$constants=0,WASI_E2BIG$$module$src$filesystem$constants=1,WASI_EACCES$$module$src$filesystem$constants=2,WASI_EADDRINUSE$$module$src$filesystem$constants=3,WASI_EADDRNOTAVAIL$$module$src$filesystem$constants=4,WASI_EAFNOSUPPORT$$module$src$filesystem$constants=5,WASI_EAGAIN$$module$src$filesystem$constants=6,WASI_EALREADY$$module$src$filesystem$constants=7,WASI_EBADF$$module$src$filesystem$constants=8,WASI_EBADMSG$$module$src$filesystem$constants=9,WASI_EBUSY$$module$src$filesystem$constants=
+10,WASI_ECANCELED$$module$src$filesystem$constants=11,WASI_ECHILD$$module$src$filesystem$constants=12,WASI_ECONNABORTED$$module$src$filesystem$constants=13,WASI_ECONNREFUSED$$module$src$filesystem$constants=14,WASI_ECONNRESET$$module$src$filesystem$constants=15,WASI_EDEADLK$$module$src$filesystem$constants=16,WASI_EDESTADDRREQ$$module$src$filesystem$constants=17,WASI_EDOM$$module$src$filesystem$constants=18,WASI_EDQUOT$$module$src$filesystem$constants=19,WASI_EEXIST$$module$src$filesystem$constants=
+20,WASI_EFAULT$$module$src$filesystem$constants=21,WASI_EFBIG$$module$src$filesystem$constants=22,WASI_EHOSTUNREACH$$module$src$filesystem$constants=23,WASI_EIDRM$$module$src$filesystem$constants=24,WASI_EILSEQ$$module$src$filesystem$constants=25,WASI_EINPROGRESS$$module$src$filesystem$constants=26,WASI_EINTR$$module$src$filesystem$constants=27,WASI_EINVAL$$module$src$filesystem$constants=28,WASI_EIO$$module$src$filesystem$constants=29,WASI_EISCONN$$module$src$filesystem$constants=30,WASI_EISDIR$$module$src$filesystem$constants=
+31,WASI_ELOOP$$module$src$filesystem$constants=32,WASI_EMFILE$$module$src$filesystem$constants=33,WASI_EMLINK$$module$src$filesystem$constants=34,WASI_EMSGSIZE$$module$src$filesystem$constants=35,WASI_EMULTIHOP$$module$src$filesystem$constants=36,WASI_ENAMETOOLONG$$module$src$filesystem$constants=37,WASI_ENETDOWN$$module$src$filesystem$constants=38,WASI_ENETRESET$$module$src$filesystem$constants=39,WASI_ENETUNREACH$$module$src$filesystem$constants=40,WASI_ENFILE$$module$src$filesystem$constants=41,
+WASI_ENOBUFS$$module$src$filesystem$constants=42,WASI_ENODEV$$module$src$filesystem$constants=43,WASI_ENOENT$$module$src$filesystem$constants=44,WASI_ENOEXEC$$module$src$filesystem$constants=45,WASI_ENOLCK$$module$src$filesystem$constants=46,WASI_ENOLINK$$module$src$filesystem$constants=47,WASI_ENOMEM$$module$src$filesystem$constants=48,WASI_ENOMSG$$module$src$filesystem$constants=49,WASI_ENOPROTOOPT$$module$src$filesystem$constants=50,WASI_ENOSPC$$module$src$filesystem$constants=51,WASI_ENOSYS$$module$src$filesystem$constants=
+52,WASI_ENOTCONN$$module$src$filesystem$constants=53,WASI_ENOTDIR$$module$src$filesystem$constants=54,WASI_ENOTEMPTY$$module$src$filesystem$constants=55,WASI_ENOTRECOVERABLE$$module$src$filesystem$constants=56,WASI_ENOTSOCK$$module$src$filesystem$constants=57,WASI_ENOTSUP$$module$src$filesystem$constants=58,WASI_ENOTTY$$module$src$filesystem$constants=59,WASI_ENXIO$$module$src$filesystem$constants=60,WASI_EOVERFLOW$$module$src$filesystem$constants=61,WASI_EOWNERDEAD$$module$src$filesystem$constants=
+62,WASI_EPERM$$module$src$filesystem$constants=63,WASI_EPIPE$$module$src$filesystem$constants=64,WASI_EPROTO$$module$src$filesystem$constants=65,WASI_EPROTONOSUPPORT$$module$src$filesystem$constants=66,WASI_EPROTOTYPE$$module$src$filesystem$constants=67,WASI_ERANGE$$module$src$filesystem$constants=68,WASI_EROFS$$module$src$filesystem$constants=69,WASI_ESPIPE$$module$src$filesystem$constants=70,WASI_ESRCH$$module$src$filesystem$constants=71,WASI_ESTALE$$module$src$filesystem$constants=72,WASI_ETIMEDOUT$$module$src$filesystem$constants=
+73,WASI_ETXTBSY$$module$src$filesystem$constants=74,WASI_EXDEV$$module$src$filesystem$constants=75,WASI_ENOTCAPABLE$$module$src$filesystem$constants=76,WASI_SIGABRT$$module$src$filesystem$constants=0,WASI_SIGALRM$$module$src$filesystem$constants=1,WASI_SIGBUS$$module$src$filesystem$constants=2,WASI_SIGCHLD$$module$src$filesystem$constants=3,WASI_SIGCONT$$module$src$filesystem$constants=4,WASI_SIGFPE$$module$src$filesystem$constants=5,WASI_SIGHUP$$module$src$filesystem$constants=6,WASI_SIGILL$$module$src$filesystem$constants=
+7,WASI_SIGINT$$module$src$filesystem$constants=8,WASI_SIGKILL$$module$src$filesystem$constants=9,WASI_SIGPIPE$$module$src$filesystem$constants=10,WASI_SIGQUIT$$module$src$filesystem$constants=11,WASI_SIGSEGV$$module$src$filesystem$constants=12,WASI_SIGSTOP$$module$src$filesystem$constants=13,WASI_SIGTERM$$module$src$filesystem$constants=14,WASI_SIGTRAP$$module$src$filesystem$constants=15,WASI_SIGTSTP$$module$src$filesystem$constants=16,WASI_SIGTTIN$$module$src$filesystem$constants=17,WASI_SIGTTOU$$module$src$filesystem$constants=
+18,WASI_SIGURG$$module$src$filesystem$constants=19,WASI_SIGUSR1$$module$src$filesystem$constants=20,WASI_SIGUSR2$$module$src$filesystem$constants=21,WASI_SIGVTALRM$$module$src$filesystem$constants=22,WASI_SIGXCPU$$module$src$filesystem$constants=23,WASI_SIGXFSZ$$module$src$filesystem$constants=24,WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants=0,WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants=1,WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants=2,WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants=
+3,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants=4,WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants=5,WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants=6,WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants=7,WASI_FDFLAG_APPEND$$module$src$filesystem$constants=1,WASI_FDFLAG_DSYNC$$module$src$filesystem$constants=2,WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants=4,WASI_FDFLAG_RSYNC$$module$src$filesystem$constants=8,WASI_FDFLAG_SYNC$$module$src$filesystem$constants=
+16,WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants=goog.global.BigInt(1),WASI_RIGHT_FD_READ$$module$src$filesystem$constants=goog.global.BigInt(2),WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants=goog.global.BigInt(4),WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants=goog.global.BigInt(8),WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants=goog.global.BigInt(16),WASI_RIGHT_FD_TELL$$module$src$filesystem$constants=goog.global.BigInt(32),WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants=
+goog.global.BigInt(64),WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants=goog.global.BigInt(128),WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants=goog.global.BigInt(256),WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(512),WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants=goog.global.BigInt(1024),WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(2048),WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants=
+goog.global.BigInt(4096),WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants=goog.global.BigInt(8192),WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants=goog.global.BigInt(16384),WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants=goog.global.BigInt(32768),WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants=goog.global.BigInt(65536),WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants=goog.global.BigInt(131072),WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants=
+goog.global.BigInt(262144),WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(524288),WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(1048576),WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants=goog.global.BigInt(2097152),WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants=goog.global.BigInt(4194304),WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants=goog.global.BigInt(8388608),WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants=
+goog.global.BigInt(16777216),WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants=goog.global.BigInt(33554432),WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants=goog.global.BigInt(67108864),WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants=goog.global.BigInt(134217728),WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants=goog.global.BigInt(268435456),RIGHTS_ALL$$module$src$filesystem$constants=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|
+WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|
+WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|
+WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|
+WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_BLOCK_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_BASE$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_CHARACTER_DEVICE_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants=
+WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_TELL$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|
+WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants|WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants|
+WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants|WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants|WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants|WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants|WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants|
+WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants|WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants|WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants|WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants|WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants|
+WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants|RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants,RIGHTS_SOCKET_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|
+WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants|WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants,RIGHTS_SOCKET_INHERITING$$module$src$filesystem$constants=RIGHTS_ALL$$module$src$filesystem$constants,RIGHTS_TTY_BASE$$module$src$filesystem$constants=WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants|WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants|WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants|WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants,
+RIGHTS_TTY_INHERITING$$module$src$filesystem$constants=goog.global.BigInt(0),WASI_CLOCK_REALTIME$$module$src$filesystem$constants=0,WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants=1,WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants=2,WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants=3,WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants=0,WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants=1,WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants=
+1,WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants=2,WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants=4,WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants=8,WASI_O_CREAT$$module$src$filesystem$constants=1,WASI_O_DIRECTORY$$module$src$filesystem$constants=2,WASI_O_EXCL$$module$src$filesystem$constants=4,WASI_O_TRUNC$$module$src$filesystem$constants=8,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants=0,WASI_DIRCOOKIE_START$$module$src$filesystem$constants=0,WASI_STDIN_FILENO$$module$src$filesystem$constants=
+0,WASI_STDOUT_FILENO$$module$src$filesystem$constants=1,WASI_STDERR_FILENO$$module$src$filesystem$constants=2,WASI_WHENCE_SET$$module$src$filesystem$constants=0,WASI_WHENCE_CUR$$module$src$filesystem$constants=1,WASI_WHENCE_END$$module$src$filesystem$constants=2;var module$src$filesystem$constants={};module$src$filesystem$constants.RIGHTS_ALL=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;
+module$src$filesystem$constants.RIGHTS_BLOCK_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_BASE=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_CHARACTER_DEVICE_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_BASE=RIGHTS_DIRECTORY_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_DIRECTORY_INHERITING=RIGHTS_DIRECTORY_INHERITING$$module$src$filesystem$constants;
+module$src$filesystem$constants.RIGHTS_REGULAR_FILE_BASE=RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_REGULAR_FILE_INHERITING=RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_BASE=RIGHTS_SOCKET_BASE$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_SOCKET_INHERITING=RIGHTS_ALL$$module$src$filesystem$constants;module$src$filesystem$constants.RIGHTS_TTY_BASE=RIGHTS_TTY_BASE$$module$src$filesystem$constants;
+module$src$filesystem$constants.RIGHTS_TTY_INHERITING=RIGHTS_TTY_INHERITING$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_MONOTONIC=WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_PROCESS_CPUTIME_ID=WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_CLOCK_REALTIME=WASI_CLOCK_REALTIME$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_CLOCK_THREAD_CPUTIME_ID=WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_DIRCOOKIE_START=WASI_DIRCOOKIE_START$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_E2BIG=WASI_E2BIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EACCES=WASI_EACCES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EADDRINUSE=WASI_EADDRINUSE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EADDRNOTAVAIL=WASI_EADDRNOTAVAIL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAFNOSUPPORT=WASI_EAFNOSUPPORT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EAGAIN=WASI_EAGAIN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EALREADY=WASI_EALREADY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBADF=WASI_EBADF$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EBADMSG=WASI_EBADMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EBUSY=WASI_EBUSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECANCELED=WASI_ECANCELED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECHILD=WASI_ECHILD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNABORTED=WASI_ECONNABORTED$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ECONNREFUSED=WASI_ECONNREFUSED$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ECONNRESET=WASI_ECONNRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDEADLK=WASI_EDEADLK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDESTADDRREQ=WASI_EDESTADDRREQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EDOM=WASI_EDOM$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EDQUOT=WASI_EDQUOT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EEXIST=WASI_EEXIST$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFAULT=WASI_EFAULT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EFBIG=WASI_EFBIG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EHOSTUNREACH=WASI_EHOSTUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIDRM=WASI_EIDRM$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EILSEQ=WASI_EILSEQ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINPROGRESS=WASI_EINPROGRESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINTR=WASI_EINTR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EINVAL=WASI_EINVAL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EIO=WASI_EIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EISCONN=WASI_EISCONN$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EISDIR=WASI_EISDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ELOOP=WASI_ELOOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMFILE=WASI_EMFILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMLINK=WASI_EMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMSGSIZE=WASI_EMSGSIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EMULTIHOP=WASI_EMULTIHOP$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENAMETOOLONG=WASI_ENAMETOOLONG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETDOWN=WASI_ENETDOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETRESET=WASI_ENETRESET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENETUNREACH=WASI_ENETUNREACH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENFILE=WASI_ENFILE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENOBUFS=WASI_ENOBUFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENODEV=WASI_ENODEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOENT=WASI_ENOENT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOEXEC=WASI_ENOEXEC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLCK=WASI_ENOLCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOLINK=WASI_ENOLINK$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENOMEM=WASI_ENOMEM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOMSG=WASI_ENOMSG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOPROTOOPT=WASI_ENOPROTOOPT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSPC=WASI_ENOSPC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOSYS=WASI_ENOSYS$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENOTCAPABLE=WASI_ENOTCAPABLE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTCONN=WASI_ENOTCONN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTDIR=WASI_ENOTDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTEMPTY=WASI_ENOTEMPTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTRECOVERABLE=WASI_ENOTRECOVERABLE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ENOTSOCK=WASI_ENOTSOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTSUP=WASI_ENOTSUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENOTTY=WASI_ENOTTY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ENXIO=WASI_ENXIO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EOVERFLOW=WASI_EOVERFLOW$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EOWNERDEAD=WASI_EOWNERDEAD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPERM=WASI_EPERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPIPE=WASI_EPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTO=WASI_EPROTO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EPROTONOSUPPORT=WASI_EPROTONOSUPPORT$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EPROTOTYPE=WASI_EPROTOTYPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ERANGE=WASI_ERANGE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EROFS=WASI_EROFS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESPIPE=WASI_ESPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESRCH=WASI_ESRCH$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ESTALE=WASI_ESTALE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_ESUCCESS=WASI_ESUCCESS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETIMEDOUT=WASI_ETIMEDOUT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_ETXTBSY=WASI_ETXTBSY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_CLOCK=WASI_EVENTTYPE_CLOCK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EVENTTYPE_FD_READ=WASI_EVENTTYPE_FD_READ$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_EVENTTYPE_FD_WRITE=WASI_EVENTTYPE_FD_WRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_EXDEV=WASI_EXDEV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_APPEND=WASI_FDFLAG_APPEND$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_DSYNC=WASI_FDFLAG_DSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_NONBLOCK=WASI_FDFLAG_NONBLOCK$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_FDFLAG_RSYNC=WASI_FDFLAG_RSYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FDFLAG_SYNC=WASI_FDFLAG_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM=WASI_FILESTAT_SET_ATIM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_ATIM_NOW=WASI_FILESTAT_SET_ATIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM=WASI_FILESTAT_SET_MTIM$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_FILESTAT_SET_MTIM_NOW=WASI_FILESTAT_SET_MTIM_NOW$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_BLOCK_DEVICE=WASI_FILETYPE_BLOCK_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_CHARACTER_DEVICE=WASI_FILETYPE_CHARACTER_DEVICE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_DIRECTORY=WASI_FILETYPE_DIRECTORY$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_FILETYPE_REGULAR_FILE=WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_DGRAM=WASI_FILETYPE_SOCKET_DGRAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SOCKET_STREAM=WASI_FILETYPE_SOCKET_STREAM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_FILETYPE_SYMBOLIC_LINK=WASI_FILETYPE_SYMBOLIC_LINK$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_FILETYPE_UNKNOWN=WASI_FILETYPE_UNKNOWN$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_CREAT=WASI_O_CREAT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_DIRECTORY=WASI_O_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_EXCL=WASI_O_EXCL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_O_TRUNC=WASI_O_TRUNC$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_PREOPENTYPE_DIR=WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ADVISE=WASI_RIGHT_FD_ADVISE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_ALLOCATE=WASI_RIGHT_FD_ALLOCATE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_DATASYNC=WASI_RIGHT_FD_DATASYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FDSTAT_SET_FLAGS=WASI_RIGHT_FD_FDSTAT_SET_FLAGS$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_GET=WASI_RIGHT_FD_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_SIZE=WASI_RIGHT_FD_FILESTAT_SET_SIZE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_FILESTAT_SET_TIMES=WASI_RIGHT_FD_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_READ=WASI_RIGHT_FD_READ$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_FD_READDIR=WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SEEK=WASI_RIGHT_FD_SEEK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_SYNC=WASI_RIGHT_FD_SYNC$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_TELL=WASI_RIGHT_FD_TELL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_FD_WRITE=WASI_RIGHT_FD_WRITE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_DIRECTORY=WASI_RIGHT_PATH_CREATE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_CREATE_FILE=WASI_RIGHT_PATH_CREATE_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_GET=WASI_RIGHT_PATH_FILESTAT_GET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_SIZE=WASI_RIGHT_PATH_FILESTAT_SET_SIZE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_PATH_FILESTAT_SET_TIMES=WASI_RIGHT_PATH_FILESTAT_SET_TIMES$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_SOURCE=WASI_RIGHT_PATH_LINK_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_LINK_TARGET=WASI_RIGHT_PATH_LINK_TARGET$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_OPEN=WASI_RIGHT_PATH_OPEN$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_PATH_READLINK=WASI_RIGHT_PATH_READLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_REMOVE_DIRECTORY=WASI_RIGHT_PATH_REMOVE_DIRECTORY$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_SOURCE=WASI_RIGHT_PATH_RENAME_SOURCE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_RENAME_TARGET=WASI_RIGHT_PATH_RENAME_TARGET$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_RIGHT_PATH_SYMLINK=WASI_RIGHT_PATH_SYMLINK$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_PATH_UNLINK_FILE=WASI_RIGHT_PATH_UNLINK_FILE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_POLL_FD_READWRITE=WASI_RIGHT_POLL_FD_READWRITE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_RIGHT_SOCK_SHUTDOWN=WASI_RIGHT_SOCK_SHUTDOWN$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGABRT=WASI_SIGABRT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGALRM=WASI_SIGALRM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGBUS=WASI_SIGBUS$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCHLD=WASI_SIGCHLD$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGCONT=WASI_SIGCONT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGFPE=WASI_SIGFPE$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGHUP=WASI_SIGHUP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGILL=WASI_SIGILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGINT=WASI_SIGINT$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGKILL=WASI_SIGKILL$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGPIPE=WASI_SIGPIPE$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGQUIT=WASI_SIGQUIT$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGSEGV=WASI_SIGSEGV$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGSTOP=WASI_SIGSTOP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTERM=WASI_SIGTERM$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTRAP=WASI_SIGTRAP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTSTP=WASI_SIGTSTP$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGTTIN=WASI_SIGTTIN$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGTTOU=WASI_SIGTTOU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGURG=WASI_SIGURG$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR1=WASI_SIGUSR1$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGUSR2=WASI_SIGUSR2$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGVTALRM=WASI_SIGVTALRM$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_SIGXCPU=WASI_SIGXCPU$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_SIGXFSZ=WASI_SIGXFSZ$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDERR_FILENO=WASI_STDERR_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDIN_FILENO=WASI_STDIN_FILENO$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_STDOUT_FILENO=WASI_STDOUT_FILENO$$module$src$filesystem$constants;
+module$src$filesystem$constants.WASI_WHENCE_CUR=WASI_WHENCE_CUR$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_END=WASI_WHENCE_END$$module$src$filesystem$constants;module$src$filesystem$constants.WASI_WHENCE_SET=WASI_WHENCE_SET$$module$src$filesystem$constants;goog.debug={};function module$contents$goog$debug$Error_DebugError(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,module$contents$goog$debug$Error_DebugError);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));void 0!==b&&(this.cause=b);this.reportErrorToServer=!0}goog.inherits(module$contents$goog$debug$Error_DebugError,Error);module$contents$goog$debug$Error_DebugError.prototype.name="CustomError";goog.debug.Error=module$contents$goog$debug$Error_DebugError;goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;function module$contents$goog$asserts_AssertionError(a,b){module$contents$goog$debug$Error_DebugError.call(this,module$contents$goog$asserts_subs(a,b));this.messagePattern=a}goog.inherits(module$contents$goog$asserts_AssertionError,module$contents$goog$debug$Error_DebugError);goog.asserts.AssertionError=module$contents$goog$asserts_AssertionError;module$contents$goog$asserts_AssertionError.prototype.name="AssertionError";
+goog.asserts.DEFAULT_ERROR_HANDLER=function(a){throw a;};let module$contents$goog$asserts_errorHandler_=goog.asserts.DEFAULT_ERROR_HANDLER;function module$contents$goog$asserts_subs(a,b){a=a.split("%s");let c="";const d=a.length-1;for(let e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:"%s");return c+a[d]}
+function module$contents$goog$asserts_doAssertFailure(a,b,c,d){let e="Assertion failed",f;c?(e+=": "+c,f=d):a&&(e+=": "+a,f=b);a=new module$contents$goog$asserts_AssertionError(""+e,f||[]);module$contents$goog$asserts_errorHandler_(a)}goog.asserts.setErrorHandler=function(a){goog.asserts.ENABLE_ASSERTS&&(module$contents$goog$asserts_errorHandler_=a)};
+goog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&module$contents$goog$asserts_doAssertFailure("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertExists=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&null==a&&module$contents$goog$asserts_doAssertFailure("Expected to exist: %s.",[a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.fail=function(a,b){goog.asserts.ENABLE_ASSERTS&&module$contents$goog$asserts_errorHandler_(new module$contents$goog$asserts_AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1)))};goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"number"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"string"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"function"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&module$contents$goog$asserts_doAssertFailure("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!Array.isArray(a)&&module$contents$goog$asserts_doAssertFailure("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&"boolean"!==typeof a&&module$contents$goog$asserts_doAssertFailure("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||module$contents$goog$asserts_doAssertFailure("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
+goog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||module$contents$goog$asserts_doAssertFailure("Expected instanceof %s but got %s.",[module$contents$goog$asserts_getType(b),module$contents$goog$asserts_getType(a)],c,Array.prototype.slice.call(arguments,3));return a};
+goog.asserts.assertFinite=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||"number"==typeof a&&isFinite(a)||module$contents$goog$asserts_doAssertFailure("Expected %s to be a finite number but it is not.",[a],b,Array.prototype.slice.call(arguments,2));return a};
+function module$contents$goog$asserts_getType(a){return a instanceof Function?a.displayName||a.name||"unknown type name":a instanceof Object?a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a):null===a?"null":typeof a};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;const module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS=2012<goog.FEATURESET_YEAR;goog.array.ASSUME_NATIVE_FUNCTIONS=module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS;function module$contents$goog$array_peek(a){return a[a.length-1]}goog.array.peek=module$contents$goog$array_peek;goog.array.last=module$contents$goog$array_peek;
+const module$contents$goog$array_indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.indexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};goog.array.indexOf=module$contents$goog$array_indexOf;
+const module$contents$goog$array_lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.lastIndexOf)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.lastIndexOf.call(a,b,null==c?a.length-1:c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.lastIndexOf(b,c);for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};
+goog.array.lastIndexOf=module$contents$goog$array_lastIndexOf;const module$contents$goog$array_forEach=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.forEach)?function(a,b,c){goog.asserts.assert(null!=a.length);Array.prototype.forEach.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEach=module$contents$goog$array_forEach;
+function module$contents$goog$array_forEachRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;--d)d in e&&b.call(c,e[d],d,a)}goog.array.forEachRight=module$contents$goog$array_forEachRight;
+const module$contents$goog$array_filter=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.filter)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.filter.call(a,b,c)}:function(a,b,c){const d=a.length,e=[];let f=0;const g="string"===typeof a?a.split(""):a;for(let h=0;h<d;h++)if(h in g){const k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};goog.array.filter=module$contents$goog$array_filter;
+const module$contents$goog$array_map=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.map)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.map.call(a,b,c)}:function(a,b,c){const d=a.length,e=Array(d),f="string"===typeof a?a.split(""):a;for(let g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};goog.array.map=module$contents$goog$array_map;
+const module$contents$goog$array_reduce=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduce)?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return Array.prototype.reduce.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEach(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduce=module$contents$goog$array_reduce;
+const module$contents$goog$array_reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.reduceRight)?function(a,b,c,d){goog.asserts.assert(null!=a.length);goog.asserts.assert(null!=b);d&&(b=goog.bind(b,d));return Array.prototype.reduceRight.call(a,b,c)}:function(a,b,c,d){let e=c;module$contents$goog$array_forEachRight(a,function(f,g){e=b.call(d,e,f,g,a)});return e};goog.array.reduceRight=module$contents$goog$array_reduceRight;
+const module$contents$goog$array_some=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.some)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.some.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};goog.array.some=module$contents$goog$array_some;
+const module$contents$goog$array_every=goog.NATIVE_ARRAY_PROTOTYPES&&(module$contents$goog$array_ASSUME_NATIVE_FUNCTIONS||Array.prototype.every)?function(a,b,c){goog.asserts.assert(null!=a.length);return Array.prototype.every.call(a,b,c)}:function(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.every=module$contents$goog$array_every;
+function module$contents$goog$array_count(a,b,c){let d=0;module$contents$goog$array_forEach(a,function(e,f,g){b.call(c,e,f,g)&&++d},c);return d}goog.array.count=module$contents$goog$array_count;function module$contents$goog$array_find(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.find=module$contents$goog$array_find;
+function module$contents$goog$array_findIndex(a,b,c){const d=a.length,e="string"===typeof a?a.split(""):a;for(let f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1}goog.array.findIndex=module$contents$goog$array_findIndex;function module$contents$goog$array_findRight(a,b,c){b=module$contents$goog$array_findIndexRight(a,b,c);return 0>b?null:"string"===typeof a?a.charAt(b):a[b]}goog.array.findRight=module$contents$goog$array_findRight;
+function module$contents$goog$array_findIndexRight(a,b,c){var d=a.length;const e="string"===typeof a?a.split(""):a;for(--d;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1}goog.array.findIndexRight=module$contents$goog$array_findIndexRight;function module$contents$goog$array_contains(a,b){return 0<=module$contents$goog$array_indexOf(a,b)}goog.array.contains=module$contents$goog$array_contains;function module$contents$goog$array_isEmpty(a){return 0==a.length}goog.array.isEmpty=module$contents$goog$array_isEmpty;
+function module$contents$goog$array_clear(a){if(!Array.isArray(a))for(let b=a.length-1;0<=b;b--)delete a[b];a.length=0}goog.array.clear=module$contents$goog$array_clear;function module$contents$goog$array_insert(a,b){module$contents$goog$array_contains(a,b)||a.push(b)}goog.array.insert=module$contents$goog$array_insert;function module$contents$goog$array_insertAt(a,b,c){module$contents$goog$array_splice(a,c,0,b)}goog.array.insertAt=module$contents$goog$array_insertAt;
+function module$contents$goog$array_insertArrayAt(a,b,c){goog.partial(module$contents$goog$array_splice,a,c,0).apply(null,b)}goog.array.insertArrayAt=module$contents$goog$array_insertArrayAt;function module$contents$goog$array_insertBefore(a,b,c){let d;2==arguments.length||0>(d=module$contents$goog$array_indexOf(a,c))?a.push(b):module$contents$goog$array_insertAt(a,b,d)}goog.array.insertBefore=module$contents$goog$array_insertBefore;
+function module$contents$goog$array_remove(a,b){b=module$contents$goog$array_indexOf(a,b);let c;(c=0<=b)&&module$contents$goog$array_removeAt(a,b);return c}goog.array.remove=module$contents$goog$array_remove;function module$contents$goog$array_removeLast(a,b){b=module$contents$goog$array_lastIndexOf(a,b);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeLast=module$contents$goog$array_removeLast;
+function module$contents$goog$array_removeAt(a,b){goog.asserts.assert(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length}goog.array.removeAt=module$contents$goog$array_removeAt;function module$contents$goog$array_removeIf(a,b,c){b=module$contents$goog$array_findIndex(a,b,c);return 0<=b?(module$contents$goog$array_removeAt(a,b),!0):!1}goog.array.removeIf=module$contents$goog$array_removeIf;
+function module$contents$goog$array_removeAllIf(a,b,c){let d=0;module$contents$goog$array_forEachRight(a,function(e,f){b.call(c,e,f,a)&&module$contents$goog$array_removeAt(a,f)&&d++});return d}goog.array.removeAllIf=module$contents$goog$array_removeAllIf;function module$contents$goog$array_concat(a){return Array.prototype.concat.apply([],arguments)}goog.array.concat=module$contents$goog$array_concat;function module$contents$goog$array_join(a){return Array.prototype.concat.apply([],arguments)}
+goog.array.join=module$contents$goog$array_join;function module$contents$goog$array_toArray(a){const b=a.length;if(0<b){const c=Array(b);for(let d=0;d<b;d++)c[d]=a[d];return c}return[]}const module$contents$goog$array_clone=goog.array.toArray=module$contents$goog$array_toArray;goog.array.clone=module$contents$goog$array_toArray;
+function module$contents$goog$array_extend(a,b){for(let c=1;c<arguments.length;c++){const d=arguments[c];if(goog.isArrayLike(d)){const e=a.length||0,f=d.length||0;a.length=e+f;for(let g=0;g<f;g++)a[e+g]=d[g]}else a.push(d)}}goog.array.extend=module$contents$goog$array_extend;function module$contents$goog$array_splice(a,b,c,d){goog.asserts.assert(null!=a.length);return Array.prototype.splice.apply(a,module$contents$goog$array_slice(arguments,1))}goog.array.splice=module$contents$goog$array_splice;
+function module$contents$goog$array_slice(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)}goog.array.slice=module$contents$goog$array_slice;
+function module$contents$goog$array_removeDuplicates(a,b,c){b=b||a;var d=function(g){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;let e=d=0;const f={};for(;e<a.length;){const g=a[e++],h=c(g);Object.prototype.hasOwnProperty.call(f,h)||(f[h]=!0,b[d++]=g)}b.length=d}goog.array.removeDuplicates=module$contents$goog$array_removeDuplicates;
+function module$contents$goog$array_binarySearch(a,b,c){return module$contents$goog$array_binarySearch_(a,c||module$contents$goog$array_defaultCompare,!1,b)}goog.array.binarySearch=module$contents$goog$array_binarySearch;function module$contents$goog$array_binarySelect(a,b,c){return module$contents$goog$array_binarySearch_(a,b,!0,void 0,c)}goog.array.binarySelect=module$contents$goog$array_binarySelect;
+function module$contents$goog$array_binarySearch_(a,b,c,d,e){let f=0,g=a.length,h;for(;f<g;){const k=f+(g-f>>>1);let n;n=c?b.call(e,a[k],k,a):b(d,a[k]);0<n?f=k+1:(g=k,h=!n)}return h?f:-f-1}function module$contents$goog$array_sort(a,b){a.sort(b||module$contents$goog$array_defaultCompare)}goog.array.sort=module$contents$goog$array_sort;
+function module$contents$goog$array_stableSort(a,b){const c=Array(a.length);for(let e=0;e<a.length;e++)c[e]={index:e,value:a[e]};const d=b||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(c,function(e,f){return d(e.value,f.value)||e.index-f.index});for(b=0;b<a.length;b++)a[b]=c[b].value}goog.array.stableSort=module$contents$goog$array_stableSort;
+function module$contents$goog$array_sortByKey(a,b,c){const d=c||module$contents$goog$array_defaultCompare;module$contents$goog$array_sort(a,function(e,f){return d(b(e),b(f))})}goog.array.sortByKey=module$contents$goog$array_sortByKey;function module$contents$goog$array_sortObjectsByKey(a,b,c){module$contents$goog$array_sortByKey(a,function(d){return d[b]},c)}goog.array.sortObjectsByKey=module$contents$goog$array_sortObjectsByKey;
+function module$contents$goog$array_isSorted(a,b,c){b=b||module$contents$goog$array_defaultCompare;for(let d=1;d<a.length;d++){const e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0}goog.array.isSorted=module$contents$goog$array_isSorted;function module$contents$goog$array_equals(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;const d=a.length;c=c||module$contents$goog$array_defaultCompareEquality;for(let e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0}
+goog.array.equals=module$contents$goog$array_equals;function module$contents$goog$array_compare3(a,b,c){c=c||module$contents$goog$array_defaultCompare;const d=Math.min(a.length,b.length);for(let e=0;e<d;e++){const f=c(a[e],b[e]);if(0!=f)return f}return module$contents$goog$array_defaultCompare(a.length,b.length)}goog.array.compare3=module$contents$goog$array_compare3;function module$contents$goog$array_defaultCompare(a,b){return a>b?1:a<b?-1:0}goog.array.defaultCompare=module$contents$goog$array_defaultCompare;
+function module$contents$goog$array_inverseDefaultCompare(a,b){return-module$contents$goog$array_defaultCompare(a,b)}goog.array.inverseDefaultCompare=module$contents$goog$array_inverseDefaultCompare;function module$contents$goog$array_defaultCompareEquality(a,b){return a===b}goog.array.defaultCompareEquality=module$contents$goog$array_defaultCompareEquality;
+function module$contents$goog$array_binaryInsert(a,b,c){c=module$contents$goog$array_binarySearch(a,b,c);return 0>c?(module$contents$goog$array_insertAt(a,b,-(c+1)),!0):!1}goog.array.binaryInsert=module$contents$goog$array_binaryInsert;function module$contents$goog$array_binaryRemove(a,b,c){b=module$contents$goog$array_binarySearch(a,b,c);return 0<=b?module$contents$goog$array_removeAt(a,b):!1}goog.array.binaryRemove=module$contents$goog$array_binaryRemove;
+function module$contents$goog$array_bucket(a,b,c){const d={};for(let e=0;e<a.length;e++){const f=a[e],g=b.call(c,f,e,a);void 0!==g&&(d[g]||(d[g]=[])).push(f)}return d}goog.array.bucket=module$contents$goog$array_bucket;function module$contents$goog$array_bucketToMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d],f=b(e,d,a);if(void 0!==f){let g=c.get(f);g||(g=[],c.set(f,g));g.push(e)}}return c}goog.array.bucketToMap=module$contents$goog$array_bucketToMap;
+function module$contents$goog$array_toObject(a,b,c){const d={};module$contents$goog$array_forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d}goog.array.toObject=module$contents$goog$array_toObject;function module$contents$goog$array_toMap(a,b){const c=new Map;for(let d=0;d<a.length;d++){const e=a[d];c.set(b(e,d,a),e)}return c}goog.array.toMap=module$contents$goog$array_toMap;
+function module$contents$goog$array_range(a,b,c){const d=[];let e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d}goog.array.range=module$contents$goog$array_range;function module$contents$goog$array_repeat(a,b){const c=[];for(let d=0;d<b;d++)c[d]=a;return c}goog.array.repeat=module$contents$goog$array_repeat;
+function module$contents$goog$array_flatten(a){const b=[];for(let d=0;d<arguments.length;d++){const e=arguments[d];if(Array.isArray(e))for(let f=0;f<e.length;f+=8192){var c=module$contents$goog$array_slice(e,f,f+8192);c=module$contents$goog$array_flatten.apply(null,c);for(let g=0;g<c.length;g++)b.push(c[g])}else b.push(e)}return b}goog.array.flatten=module$contents$goog$array_flatten;
+function module$contents$goog$array_rotate(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?Array.prototype.unshift.apply(a,a.splice(-b,b)):0>b&&Array.prototype.push.apply(a,a.splice(0,-b)));return a}goog.array.rotate=module$contents$goog$array_rotate;function module$contents$goog$array_moveItem(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=Array.prototype.splice.call(a,b,1);Array.prototype.splice.call(a,c,0,b[0])}goog.array.moveItem=module$contents$goog$array_moveItem;
+function module$contents$goog$array_zip(a){if(!arguments.length)return[];const b=[];let c=arguments[0].length;for(var d=1;d<arguments.length;d++)arguments[d].length<c&&(c=arguments[d].length);for(d=0;d<c;d++){const e=[];for(let f=0;f<arguments.length;f++)e.push(arguments[f][d]);b.push(e)}return b}goog.array.zip=module$contents$goog$array_zip;function module$contents$goog$array_shuffle(a,b){b=b||Math.random;for(let c=a.length-1;0<c;c--){const d=Math.floor(b()*(c+1)),e=a[c];a[c]=a[d];a[d]=e}}
+goog.array.shuffle=module$contents$goog$array_shuffle;function module$contents$goog$array_copyByIndex(a,b){const c=[];module$contents$goog$array_forEach(b,function(d){c.push(a[d])});return c}goog.array.copyByIndex=module$contents$goog$array_copyByIndex;function module$contents$goog$array_concatMap(a,b,c){return module$contents$goog$array_concat.apply([],module$contents$goog$array_map(a,b,c))}goog.array.concatMap=module$contents$goog$array_concatMap;goog.dom.asserts={};goog.dom.asserts.assertIsLocation=function(a){if(goog.asserts.ENABLE_ASSERTS){var b=goog.dom.asserts.getWindow_(a);b&&(!a||!(a instanceof b.Location)&&a instanceof b.Element)&&goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s",goog.dom.asserts.debugStringForType_(a))}return a};
+goog.dom.asserts.assertIsElementType_=function(a,b){if(goog.asserts.ENABLE_ASSERTS){var c=goog.dom.asserts.getWindow_(a);c&&"undefined"!=typeof c[b]&&(a&&(a instanceof c[b]||!(a instanceof c.Location||a instanceof c.Element))||goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s",b,goog.dom.asserts.debugStringForType_(a)))}return a};goog.dom.asserts.assertIsHTMLAnchorElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAnchorElement")};
+goog.dom.asserts.assertIsHTMLButtonElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLButtonElement")};goog.dom.asserts.assertIsHTMLLinkElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLLinkElement")};goog.dom.asserts.assertIsHTMLImageElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLImageElement")};goog.dom.asserts.assertIsHTMLAudioElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLAudioElement")};
+goog.dom.asserts.assertIsHTMLVideoElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLVideoElement")};goog.dom.asserts.assertIsHTMLInputElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLInputElement")};goog.dom.asserts.assertIsHTMLTextAreaElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLTextAreaElement")};goog.dom.asserts.assertIsHTMLCanvasElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLCanvasElement")};
+goog.dom.asserts.assertIsHTMLEmbedElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLEmbedElement")};goog.dom.asserts.assertIsHTMLFormElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFormElement")};goog.dom.asserts.assertIsHTMLFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLFrameElement")};goog.dom.asserts.assertIsHTMLIFrameElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLIFrameElement")};
+goog.dom.asserts.assertIsHTMLObjectElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLObjectElement")};goog.dom.asserts.assertIsHTMLScriptElement=function(a){return goog.dom.asserts.assertIsElementType_(a,"HTMLScriptElement")};
+goog.dom.asserts.debugStringForType_=function(a){if(goog.isObject(a))try{return a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(b){return"<object could not be stringified>"}else return void 0===a?"undefined":null===a?"null":typeof a};goog.dom.asserts.getWindow_=function(a){try{var b=a&&a.ownerDocument,c=b&&(b.defaultView||b.parentWindow);c=c||goog.global;if(c.Element&&c.Location)return c}catch(d){}return null};goog.functions={};goog.functions.constant=function(a){return function(){return a}};goog.functions.FALSE=function(){return!1};goog.functions.TRUE=function(){return!0};goog.functions.NULL=function(){return null};goog.functions.UNDEFINED=function(){};goog.functions.EMPTY=goog.functions.UNDEFINED;goog.functions.identity=function(a,b){return a};goog.functions.error=function(a){return function(){throw Error(a);}};goog.functions.fail=function(a){return function(){throw a;}};
+goog.functions.lock=function(a,b){b=b||0;return function(){return a.apply(this,Array.prototype.slice.call(arguments,0,b))}};goog.functions.nth=function(a){return function(){return arguments[a]}};goog.functions.partialRight=function(a,b){const c=Array.prototype.slice.call(arguments,1);return function(){let d=this;d===goog.global&&(d=void 0);const e=Array.prototype.slice.call(arguments);e.push.apply(e,c);return a.apply(d,e)}};
+goog.functions.withReturnValue=function(a,b){return goog.functions.sequence(a,goog.functions.constant(b))};goog.functions.equalTo=function(a,b){return function(c){return b?a==c:a===c}};goog.functions.compose=function(a,b){const c=arguments,d=c.length;return function(){let e;d&&(e=c[d-1].apply(this,arguments));for(let f=d-2;0<=f;f--)e=c[f].call(this,e);return e}};
+goog.functions.sequence=function(a){const b=arguments,c=b.length;return function(){let d;for(let e=0;e<c;e++)d=b[e].apply(this,arguments);return d}};goog.functions.and=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(!b[d].apply(this,arguments))return!1;return!0}};goog.functions.or=function(a){const b=arguments,c=b.length;return function(){for(let d=0;d<c;d++)if(b[d].apply(this,arguments))return!0;return!1}};
+goog.functions.not=function(a){return function(){return!a.apply(this,arguments)}};goog.functions.create=function(a,b){var c=function(){};c.prototype=a.prototype;c=new c;a.apply(c,Array.prototype.slice.call(arguments,1));return c};goog.functions.CACHE_RETURN_VALUE=!0;goog.functions.cacheReturnValue=function(a){let b=!1,c;return function(){if(!goog.functions.CACHE_RETURN_VALUE)return a();b||(c=a(),b=!0);return c}};goog.functions.once=function(a){let b=a;return function(){if(b){const c=b;b=null;c()}}};
+goog.functions.debounce=function(a,b,c){let d=0;return function(e){goog.global.clearTimeout(d);const f=arguments;d=goog.global.setTimeout(function(){a.apply(c,f)},b)}};goog.functions.throttle=function(a,b,c){let d=0,e=!1,f=[];const g=function(){d=0;e&&(e=!1,h())},h=function(){d=goog.global.setTimeout(g,b);let k=f;f=[];a.apply(c,k)};return function(k){f=arguments;d?e=!0:h()}};
+goog.functions.rateLimit=function(a,b,c){let d=0;const e=function(){d=0};return function(f){d||(d=goog.global.setTimeout(e,b),a.apply(c,arguments))}};goog.functions.isFunction=a=>"function"===typeof a;goog.string={};goog.string.TypedString=function(){};goog.string.Const=function(a,b){this.stringConstValueWithSecurityContract__googStringSecurityPrivate_=a===goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_&&b||"";this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_=goog.string.Const.TYPE_MARKER_};goog.string.Const.prototype.implementsGoogStringTypedString=!0;goog.string.Const.prototype.getTypedStringValue=function(){return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_};
+goog.DEBUG&&(goog.string.Const.prototype.toString=function(){return"Const{"+this.stringConstValueWithSecurityContract__googStringSecurityPrivate_+"}"});goog.string.Const.unwrap=function(a){if(a instanceof goog.string.Const&&a.constructor===goog.string.Const&&a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_===goog.string.Const.TYPE_MARKER_)return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_;goog.asserts.fail("expected object of type Const, got '"+a+"'");return"type_error:Const"};
+goog.string.Const.from=function(a){return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_,a)};goog.string.Const.TYPE_MARKER_={};goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_={};goog.string.Const.EMPTY=goog.string.Const.from("");goog.html={};goog.html.trustedtypes={};goog.html.trustedtypes.POLICY_NAME=goog.TRUSTED_TYPES_POLICY_NAME?goog.TRUSTED_TYPES_POLICY_NAME+"#html":"";goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse=function(){if(!goog.html.trustedtypes.POLICY_NAME)return null;void 0===goog.html.trustedtypes.cachedPolicy_&&(goog.html.trustedtypes.cachedPolicy_=goog.createTrustedTypesPolicy(goog.html.trustedtypes.POLICY_NAME));return goog.html.trustedtypes.cachedPolicy_};const module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE={};
+class module$contents$goog$html$SafeScript_SafeScript{constructor(a,b){this.privateDoNotAccessOrElseSafeScriptWrappedValue_=b===module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static fromConstant(a){a=goog.string.Const.unwrap(a);return 0===a.length?module$contents$goog$html$SafeScript_SafeScript.EMPTY:module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a)}static fromJson(a){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(module$contents$goog$html$SafeScript_SafeScript.stringify_(a))}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(a).toString()}static unwrapTrustedScript(a){if(a instanceof
+module$contents$goog$html$SafeScript_SafeScript&&a.constructor===module$contents$goog$html$SafeScript_SafeScript)return a.privateDoNotAccessOrElseSafeScriptWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeScript, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeScript"}static stringify_(a){return JSON.stringify(a).replace(/</g,"\\x3c")}static createSafeScriptSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScript(a):
+a;return new module$contents$goog$html$SafeScript_SafeScript(a,module$contents$goog$html$SafeScript_CONSTRUCTOR_TOKEN_PRIVATE)}}module$contents$goog$html$SafeScript_SafeScript.EMPTY=function(){return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("")}();goog.html.SafeScript=module$contents$goog$html$SafeScript_SafeScript;goog.fs={};goog.fs.url={};goog.fs.url.createObjectUrl=function(a){return goog.fs.url.getUrlObject_().createObjectURL(a)};goog.fs.url.revokeObjectUrl=function(a){goog.fs.url.getUrlObject_().revokeObjectURL(a)};goog.fs.url.UrlObject_=function(){};goog.fs.url.UrlObject_.prototype.createObjectURL=function(a){};goog.fs.url.UrlObject_.prototype.revokeObjectURL=function(a){};
+goog.fs.url.getUrlObject_=function(){const a=goog.fs.url.findUrlObject_();if(null!=a)return a;throw Error("This browser doesn't seem to support blob URLs");};goog.fs.url.findUrlObject_=function(){return void 0!==goog.global.URL&&void 0!==goog.global.URL.createObjectURL?goog.global.URL:void 0!==goog.global.createObjectURL?goog.global:null};goog.fs.url.browserSupportsObjectUrls=function(){return null!=goog.fs.url.findUrlObject_()};goog.fs.blob={};goog.fs.blob.getBlob=function(a){var b=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==b){b=new b;for(let c=0;c<arguments.length;c++)b.append(arguments[c]);return b.getBlob()}return goog.fs.blob.getBlobWithProperties(Array.prototype.slice.call(arguments))};
+goog.fs.blob.getBlobWithProperties=function(a,b,c){var d=goog.global.BlobBuilder||goog.global.WebKitBlobBuilder;if(void 0!==d){d=new d;for(let e=0;e<a.length;e++)d.append(a[e],c);return d.getBlob(b)}if(void 0!==goog.global.Blob)return d={},b&&(d.type=b),c&&(d.endings=c),new Blob(a,d);throw Error("This browser doesn't seem to support creating Blobs");};goog.html.TrustedResourceUrl=class{constructor(a,b){this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_=b===goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_+""}};goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString=!0;goog.html.TrustedResourceUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString()};
+goog.html.TrustedResourceUrl.prototype.cloneWithParams=function(a,b){var c=goog.html.TrustedResourceUrl.unwrap(this);c=goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c);var d=c[3]||"";return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1]+goog.html.TrustedResourceUrl.stringifyParams_("?",c[2]||"",a)+goog.html.TrustedResourceUrl.stringifyParams_("#",d,b))};goog.html.TrustedResourceUrl.unwrap=function(a){return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString()};
+goog.html.TrustedResourceUrl.unwrapTrustedScriptURL=function(a){if(a instanceof goog.html.TrustedResourceUrl&&a.constructor===goog.html.TrustedResourceUrl)return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;goog.asserts.fail("expected object of type TrustedResourceUrl, got '"+a+"' of type "+goog.typeOf(a));return"type_error:TrustedResourceUrl"};
+goog.html.TrustedResourceUrl.format=function(a,b){var c=goog.string.Const.unwrap(a);if(!goog.html.TrustedResourceUrl.BASE_URL_.test(c))throw Error("Invalid TrustedResourceUrl format: "+c);a=c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_,function(d,e){if(!Object.prototype.hasOwnProperty.call(b,e))throw Error('Found marker, "'+e+'", in format string, "'+c+'", but no valid label mapping found in args: '+JSON.stringify(b));d=b[e];return d instanceof goog.string.Const?goog.string.Const.unwrap(d):
+encodeURIComponent(String(d))});return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.FORMAT_MARKER_=/%{(\w+)}/g;goog.html.TrustedResourceUrl.BASE_URL_=RegExp("^((https:)?//[0-9a-z.:[\\]-]+/|/[^/\\\\]|[^:/\\\\%]+/|[^:/\\\\%]*[?#]|about:blank#)","i");goog.html.TrustedResourceUrl.URL_PARAM_PARSER_=/^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;
+goog.html.TrustedResourceUrl.formatWithParams=function(a,b,c,d){return goog.html.TrustedResourceUrl.format(a,b).cloneWithParams(c,d)};goog.html.TrustedResourceUrl.fromConstant=function(a){return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};goog.html.TrustedResourceUrl.fromConstants=function(a){for(var b="",c=0;c<a.length;c++)b+=goog.string.Const.unwrap(a[c]);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.TrustedResourceUrl.fromSafeScript=function(a){a=goog.fs.blob.getBlobWithProperties([module$contents$goog$html$SafeScript_SafeScript.unwrap(a)],"text/javascript");a=goog.fs.url.createObjectUrl(a);return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};
+goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse=function(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createScriptURL(a):a;return new goog.html.TrustedResourceUrl(a,goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};
+goog.html.TrustedResourceUrl.stringifyParams_=function(a,b,c){if(null==c)return b;if("string"===typeof c)return c?a+encodeURIComponent(c):"";for(var d in c)if(Object.prototype.hasOwnProperty.call(c,d)){var e=c[d];e=Array.isArray(e)?e:[e];for(var f=0;f<e.length;f++){var g=e[f];null!=g&&(b||(b=a),b+=(b.length>a.length?"&":"")+encodeURIComponent(d)+"="+encodeURIComponent(String(g)))}}return b};goog.string.internal={};goog.string.internal.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.internal.endsWith=function(a,b){const c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.internal.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(0,b.length))};goog.string.internal.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.internal.caseInsensitiveCompare(b,a.slice(a.length-b.length))};
+goog.string.internal.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.internal.isEmptyOrWhitespace=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.internal.trim=goog.TRUSTED_SITE&&String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};goog.string.internal.caseInsensitiveCompare=function(a,b){a=String(a).toLowerCase();b=String(b).toLowerCase();return a<b?-1:a==b?0:1};
+goog.string.internal.newLineToBr=function(a,b){return a.replace(/(\r\n|\r|\n)/g,b?"<br />":"<br>")};
+goog.string.internal.htmlEscape=function(a,b){if(b)a=a.replace(goog.string.internal.AMP_RE_,"&amp;").replace(goog.string.internal.LT_RE_,"&lt;").replace(goog.string.internal.GT_RE_,"&gt;").replace(goog.string.internal.QUOT_RE_,"&quot;").replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;").replace(goog.string.internal.NULL_RE_,"&#0;");else{if(!goog.string.internal.ALL_RE_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.internal.AMP_RE_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.internal.LT_RE_,
+"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.internal.GT_RE_,"&gt;"));-1!=a.indexOf('"')&&(a=a.replace(goog.string.internal.QUOT_RE_,"&quot;"));-1!=a.indexOf("'")&&(a=a.replace(goog.string.internal.SINGLE_QUOTE_RE_,"&#39;"));-1!=a.indexOf("\x00")&&(a=a.replace(goog.string.internal.NULL_RE_,"&#0;"))}return a};goog.string.internal.AMP_RE_=/&/g;goog.string.internal.LT_RE_=/</g;goog.string.internal.GT_RE_=/>/g;goog.string.internal.QUOT_RE_=/"/g;goog.string.internal.SINGLE_QUOTE_RE_=/'/g;
+goog.string.internal.NULL_RE_=/\x00/g;goog.string.internal.ALL_RE_=/[\x00&<>"']/;goog.string.internal.whitespaceEscape=function(a,b){return goog.string.internal.newLineToBr(a.replace(/ /g," &#160;"),b)};goog.string.internal.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.internal.caseInsensitiveContains=function(a,b){return goog.string.internal.contains(a.toLowerCase(),b.toLowerCase())};
+goog.string.internal.compareVersions=function(a,b){var c=0;a=goog.string.internal.trim(String(a)).split(".");b=goog.string.internal.trim(String(b)).split(".");const d=Math.max(a.length,b.length);for(let g=0;0==c&&g<d;g++){var e=a[g]||"",f=b[g]||"";do{e=/(\d*)(\D*)(.*)/.exec(e)||["","","",""];f=/(\d*)(\D*)(.*)/.exec(f)||["","","",""];if(0==e[0].length&&0==f[0].length)break;c=0==e[1].length?0:parseInt(e[1],10);const h=0==f[1].length?0:parseInt(f[1],10);c=goog.string.internal.compareElements_(c,h)||
+goog.string.internal.compareElements_(0==e[2].length,0==f[2].length)||goog.string.internal.compareElements_(e[2],f[2]);e=e[3];f=f[3]}while(0==c)}return c};goog.string.internal.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.html.SafeUrl=class{constructor(a,b){this.privateDoNotAccessOrElseSafeUrlWrappedValue_=b===goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_?a:""}toString(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()}};goog.html.SafeUrl.INNOCUOUS_STRING="about:invalid#zClosurez";goog.html.SafeUrl.prototype.implementsGoogStringTypedString=!0;goog.html.SafeUrl.prototype.getTypedStringValue=function(){return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString()};
+goog.html.SafeUrl.unwrap=function(a){if(a instanceof goog.html.SafeUrl&&a.constructor===goog.html.SafeUrl)return a.privateDoNotAccessOrElseSafeUrlWrappedValue_;goog.asserts.fail("expected object of type SafeUrl, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeUrl"};goog.html.SafeUrl.fromConstant=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a))};
+goog.html.SAFE_MIME_TYPE_PATTERN_=RegExp('^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon|heic|heif)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\w+=(?:\\w+|"[\\w;,= ]+"))*$',"i");goog.html.SafeUrl.isSafeMimeType=function(a){return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a)};
+goog.html.SafeUrl.fromBlob=function(a){a=goog.html.SafeUrl.isSafeMimeType(a.type)?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.revokeObjectUrl=function(a){a=a.getTypedStringValue();a!==goog.html.SafeUrl.INNOCUOUS_STRING&&goog.fs.url.revokeObjectUrl(a)};
+goog.html.SafeUrl.fromMediaSource=function(a){goog.asserts.assert("MediaSource"in goog.global,"No support for MediaSource");a=a instanceof MediaSource?goog.fs.url.createObjectUrl(a):goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.DATA_URL_PATTERN_=/^data:(.*);base64,[a-z0-9+\/]+=*$/i;
+goog.html.SafeUrl.tryFromDataUrl=function(a){a=String(a);a=a.replace(/(%0A|%0D)/g,"");return a.match(goog.html.DATA_URL_PATTERN_)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):null};goog.html.SafeUrl.fromDataUrl=function(a){return goog.html.SafeUrl.tryFromDataUrl(a)||goog.html.SafeUrl.INNOCUOUS_URL};goog.html.SafeUrl.fromTelUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"tel:")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SIP_URL_PATTERN_=RegExp("^sip[s]?:[+a-z0-9_.!$%&'*\\/=^`{|}~-]+@([a-z0-9-]+\\.)+[a-z0-9]{2,63}$","i");goog.html.SafeUrl.fromSipUrl=function(a){goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a))||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromFacebookMessengerUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"fb-messenger://share")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SafeUrl.fromWhatsAppUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"whatsapp://send")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};goog.html.SafeUrl.fromSmsUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"sms:")&&goog.html.SafeUrl.isSmsUrlBodyValid_(a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SafeUrl.isSmsUrlBodyValid_=function(a){var b=a.indexOf("#");0<b&&(a=a.substring(0,b));b=a.match(/[?&]body=/gi);if(!b)return!0;if(1<b.length)return!1;a=a.match(/[?&]body=([^&]*)/)[1];if(!a)return!0;try{decodeURIComponent(a)}catch(c){return!1}return/^(?:[a-z0-9\-_.~]|%[0-9a-f]{2})+$/i.test(a)};goog.html.SafeUrl.fromSshUrl=function(a){goog.string.internal.caseInsensitiveStartsWith(a,"ssh://")||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SafeUrl.sanitizeChromeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\/\/([^\/]+)\//,a,b)};goog.html.SafeUrl.sanitizeFirefoxExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\/\/([^\/]+)\//,a,b)};goog.html.SafeUrl.sanitizeEdgeExtensionUrl=function(a,b){return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\/\/([^\/]+)\//,a,b)};
+goog.html.SafeUrl.sanitizeExtensionUrl_=function(a,b,c){(a=a.exec(b))?(a=a[1],-1==(c instanceof goog.string.Const?[goog.string.Const.unwrap(c)]:c.map(function(d){return goog.string.Const.unwrap(d)})).indexOf(a)&&(b=goog.html.SafeUrl.INNOCUOUS_STRING)):b=goog.html.SafeUrl.INNOCUOUS_STRING;return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};goog.html.SafeUrl.fromTrustedResourceUrl=function(a){return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a))};
+goog.html.SAFE_URL_PATTERN_=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;goog.html.SafeUrl.SAFE_URL_PATTERN=goog.html.SAFE_URL_PATTERN_;goog.html.SafeUrl.trySanitize=function(a){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return goog.html.SAFE_URL_PATTERN_.test(a)?goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a):goog.html.SafeUrl.tryFromDataUrl(a)};
+goog.html.SafeUrl.sanitize=function(a){return goog.html.SafeUrl.trySanitize(a)||goog.html.SafeUrl.INNOCUOUS_URL};
+goog.html.SafeUrl.sanitizeAssertUnchanged=function(a,b){if(a instanceof goog.html.SafeUrl)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);if(b&&/^data:/i.test(a)&&(b=goog.html.SafeUrl.fromDataUrl(a),b.getTypedStringValue()==a))return b;goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a),"%s does not match the safe URL pattern",a)||(a=goog.html.SafeUrl.INNOCUOUS_STRING);return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a)};
+goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_={};goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse=function(a){return new goog.html.SafeUrl(a,goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_)};goog.html.SafeUrl.INNOCUOUS_URL=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.SafeUrl.INNOCUOUS_STRING);goog.html.SafeUrl.ABOUT_BLANK=goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank");const module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE={};
+class module$contents$goog$html$SafeStyle_SafeStyle{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleWrappedValue_=b===module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyle_SafeStyle.EMPTY;(0,goog.asserts.assert)((0,goog.string.internal.endsWith)(a,";"),`Last character of style string is not ';': ${a}`);(0,goog.asserts.assert)((0,goog.string.internal.contains)(a,
+":"),"Style string must contain at least one ':', to specify a \"name: value\" pair: "+a);return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_}toString(){return this.privateDoNotAccessOrElseSafeStyleWrappedValue_.toString()}static unwrap(a){if(a instanceof module$contents$goog$html$SafeStyle_SafeStyle&&a.constructor===module$contents$goog$html$SafeStyle_SafeStyle)return a.privateDoNotAccessOrElseSafeStyleWrappedValue_;
+(0,goog.asserts.fail)(`expected object of type SafeStyle, got '${a}`+"' of type "+goog.typeOf(a));return"type_error:SafeStyle"}static createSafeStyleSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyle_SafeStyle(a,module$contents$goog$html$SafeStyle_CONSTRUCTOR_TOKEN_PRIVATE)}static create(a){let b="";for(let c in a)if(Object.prototype.hasOwnProperty.call(a,c)){if(!/^[-_a-zA-Z0-9]+$/.test(c))throw Error(`Name allows only [-_a-zA-Z0-9], got: ${c}`);let d=a[c];null!=d&&
+(d=Array.isArray(d)?d.map(module$contents$goog$html$SafeStyle_sanitizePropertyValue).join(" "):module$contents$goog$html$SafeStyle_sanitizePropertyValue(d),b+=`${c}:${d};`)}return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(d)};Array.prototype.forEach.call(arguments,c);
+return b?module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b):module$contents$goog$html$SafeStyle_SafeStyle.EMPTY}}module$contents$goog$html$SafeStyle_SafeStyle.EMPTY=module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse("");module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING="zClosurez";
+function module$contents$goog$html$SafeStyle_sanitizePropertyValue(a){if(a instanceof goog.html.SafeUrl)return'url("'+goog.html.SafeUrl.unwrap(a).replace(/</g,"%3c").replace(/[\\"]/g,"\\$&")+'")';a=a instanceof goog.string.Const?goog.string.Const.unwrap(a):module$contents$goog$html$SafeStyle_sanitizePropertyValueString(String(a));if(/[{;}]/.test(a))throw new module$contents$goog$asserts_AssertionError("Value does not allow [{;}], got: %s.",[a]);return a}
+function module$contents$goog$html$SafeStyle_sanitizePropertyValueString(a){const b=a.replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_FUNCTIONS_RE,"$1").replace(module$contents$goog$html$SafeStyle_URL_RE,"url");if(module$contents$goog$html$SafeStyle_VALUE_RE.test(b)){if(module$contents$goog$html$SafeStyle_COMMENT_RE.test(a))return(0,goog.asserts.fail)(`String value disallows comments, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;
+if(!module$contents$goog$html$SafeStyle_hasBalancedQuotes(a))return(0,goog.asserts.fail)(`String value requires balanced quotes, got: ${a}`),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;if(!module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a))return(0,goog.asserts.fail)("String value requires balanced square brackets and one identifier per pair of brackets, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING}else return(0,goog.asserts.fail)(`String value allows only ${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}`+
+" and simple functions, got: "+a),module$contents$goog$html$SafeStyle_SafeStyle.INNOCUOUS_STRING;return module$contents$goog$html$SafeStyle_sanitizeUrl(a)}function module$contents$goog$html$SafeStyle_hasBalancedQuotes(a){let b=!0,c=!0;for(let d=0;d<a.length;d++){const e=a.charAt(d);"'"==e&&c?b=!b:'"'==e&&b&&(c=!c)}return b&&c}
+function module$contents$goog$html$SafeStyle_hasBalancedSquareBrackets(a){let b=!0;const c=/^[-_a-zA-Z0-9]$/;for(let d=0;d<a.length;d++){const e=a.charAt(d);if("]"==e){if(b)return!1;b=!0}else if("["==e){if(!b)return!1;b=!1}else if(!b&&!c.test(e))return!1}return b}
+const module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS="[-,.\"'%_!#/ a-zA-Z0-9\\[\\]]",module$contents$goog$html$SafeStyle_VALUE_RE=new RegExp(`^${module$contents$goog$html$SafeStyle_VALUE_ALLOWED_CHARS}+\$`),module$contents$goog$html$SafeStyle_URL_RE=RegExp("\\b(url\\([ \t\n]*)('[ -&(-\\[\\]-~]*'|\"[ !#-\\[\\]-~]*\"|[!#-&*-\\[\\]-~]*)([ \t\n]*\\))","g"),module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS="calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax radial-gradient repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)? steps var".split(" "),
+module$contents$goog$html$SafeStyle_FUNCTIONS_RE=new RegExp("\\b("+module$contents$goog$html$SafeStyle_ALLOWED_FUNCTIONS.join("|")+")\\([-+*/0-9a-zA-Z.%#\\[\\], ]+\\)","g"),module$contents$goog$html$SafeStyle_COMMENT_RE=/\/\*/;function module$contents$goog$html$SafeStyle_sanitizeUrl(a){return a.replace(module$contents$goog$html$SafeStyle_URL_RE,(b,c,d,e)=>{let f="";d=d.replace(/^(['"])(.*)\1$/,(g,h,k)=>{f=h;return k});b=goog.html.SafeUrl.sanitize(d).getTypedStringValue();return c+f+b+f+e})}
+goog.html.SafeStyle=module$contents$goog$html$SafeStyle_SafeStyle;goog.object={};function module$contents$goog$object_forEach(a,b,c){for(const d in a)b.call(c,a[d],d,a)}function module$contents$goog$object_filter(a,b,c){const d={};for(const e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d}function module$contents$goog$object_map(a,b,c){const d={};for(const e in a)d[e]=b.call(c,a[e],e,a);return d}function module$contents$goog$object_some(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return!0;return!1}
+function module$contents$goog$object_every(a,b,c){for(const d in a)if(!b.call(c,a[d],d,a))return!1;return!0}function module$contents$goog$object_getCount(a){let b=0;for(const c in a)b++;return b}function module$contents$goog$object_getAnyKey(a){for(const b in a)return b}function module$contents$goog$object_getAnyValue(a){for(const b in a)return a[b]}function module$contents$goog$object_contains(a,b){return module$contents$goog$object_containsValue(a,b)}
+function module$contents$goog$object_getValues(a){const b=[];let c=0;for(const d in a)b[c++]=a[d];return b}function module$contents$goog$object_getKeys(a){const b=[];let c=0;for(const d in a)b[c++]=d;return b}function module$contents$goog$object_getValueByKeys(a,b){var c=goog.isArrayLike(b);const d=c?b:arguments;for(c=c?0:1;c<d.length;c++){if(null==a)return;a=a[d[c]]}return a}function module$contents$goog$object_containsKey(a,b){return null!==a&&b in a}
+function module$contents$goog$object_containsValue(a,b){for(const c in a)if(a[c]==b)return!0;return!1}function module$contents$goog$object_findKey(a,b,c){for(const d in a)if(b.call(c,a[d],d,a))return d}function module$contents$goog$object_findValue(a,b,c){return(b=module$contents$goog$object_findKey(a,b,c))&&a[b]}function module$contents$goog$object_isEmpty(a){for(const b in a)return!1;return!0}function module$contents$goog$object_clear(a){for(const b in a)delete a[b]}
+function module$contents$goog$object_remove(a,b){let c;(c=b in a)&&delete a[b];return c}function module$contents$goog$object_add(a,b,c){if(null!==a&&b in a)throw Error(`The object already contains the key "${b}"`);module$contents$goog$object_set(a,b,c)}function module$contents$goog$object_get(a,b,c){return null!==a&&b in a?a[b]:c}function module$contents$goog$object_set(a,b,c){a[b]=c}function module$contents$goog$object_setIfUndefined(a,b,c){return b in a?a[b]:a[b]=c}
+function module$contents$goog$object_setWithReturnValueIfNotSet(a,b,c){if(b in a)return a[b];c=c();return a[b]=c}function module$contents$goog$object_equals(a,b){for(const c in a)if(!(c in b)||a[c]!==b[c])return!1;for(const c in b)if(!(c in a))return!1;return!0}function module$contents$goog$object_clone(a){const b={};for(const c in a)b[c]=a[c];return b}
+function module$contents$goog$object_unsafeClone(a){if(!a||"object"!==typeof a)return a;if("function"===typeof a.clone)return a.clone();if("undefined"!==typeof Map&&a instanceof Map)return new Map(a);if("undefined"!==typeof Set&&a instanceof Set)return new Set(a);if(a instanceof Date)return new Date(a.getTime());const b=Array.isArray(a)?[]:"function"!==typeof ArrayBuffer||"function"!==typeof ArrayBuffer.isView||!ArrayBuffer.isView(a)||a instanceof DataView?{}:new a.constructor(a.length);for(const c in a)b[c]=
+module$contents$goog$object_unsafeClone(a[c]);return b}function module$contents$goog$object_transpose(a){const b={};for(const c in a)b[a[c]]=c;return b}const module$contents$goog$object_PROTOTYPE_FIELDS="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
+function module$contents$goog$object_extend(a,b){let c,d;for(let e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(let f=0;f<module$contents$goog$object_PROTOTYPE_FIELDS.length;f++)c=module$contents$goog$object_PROTOTYPE_FIELDS[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}}
+function module$contents$goog$object_create(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");const c={};for(let d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c}
+function module$contents$goog$object_createSet(a){const b=arguments.length;if(1==b&&Array.isArray(arguments[0]))return module$contents$goog$object_createSet.apply(null,arguments[0]);const c={};for(let d=0;d<b;d++)c[arguments[d]]=!0;return c}function module$contents$goog$object_createImmutableView(a){let b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b}function module$contents$goog$object_isImmutableView(a){return!!Object.isFrozen&&Object.isFrozen(a)}
+function module$contents$goog$object_getAllPropertyNames(a,b,c){if(!a)return[];if(!Object.getOwnPropertyNames||!Object.getPrototypeOf)return module$contents$goog$object_getKeys(a);const d={};for(;a&&(a!==Object.prototype||b)&&(a!==Function.prototype||c);){const e=Object.getOwnPropertyNames(a);for(let f=0;f<e.length;f++)d[e[f]]=!0;a=Object.getPrototypeOf(a)}return module$contents$goog$object_getKeys(d)}
+function module$contents$goog$object_getSuperClass(a){return(a=Object.getPrototypeOf(a.prototype))&&a.constructor}goog.object.add=module$contents$goog$object_add;goog.object.clear=module$contents$goog$object_clear;goog.object.clone=module$contents$goog$object_clone;goog.object.contains=module$contents$goog$object_contains;goog.object.containsKey=module$contents$goog$object_containsKey;goog.object.containsValue=module$contents$goog$object_containsValue;goog.object.create=module$contents$goog$object_create;
+goog.object.createImmutableView=module$contents$goog$object_createImmutableView;goog.object.createSet=module$contents$goog$object_createSet;goog.object.equals=module$contents$goog$object_equals;goog.object.every=module$contents$goog$object_every;goog.object.extend=module$contents$goog$object_extend;goog.object.filter=module$contents$goog$object_filter;goog.object.findKey=module$contents$goog$object_findKey;goog.object.findValue=module$contents$goog$object_findValue;goog.object.forEach=module$contents$goog$object_forEach;
+goog.object.get=module$contents$goog$object_get;goog.object.getAllPropertyNames=module$contents$goog$object_getAllPropertyNames;goog.object.getAnyKey=module$contents$goog$object_getAnyKey;goog.object.getAnyValue=module$contents$goog$object_getAnyValue;goog.object.getCount=module$contents$goog$object_getCount;goog.object.getKeys=module$contents$goog$object_getKeys;goog.object.getSuperClass=module$contents$goog$object_getSuperClass;goog.object.getValueByKeys=module$contents$goog$object_getValueByKeys;
+goog.object.getValues=module$contents$goog$object_getValues;goog.object.isEmpty=module$contents$goog$object_isEmpty;goog.object.isImmutableView=module$contents$goog$object_isImmutableView;goog.object.map=module$contents$goog$object_map;goog.object.remove=module$contents$goog$object_remove;goog.object.set=module$contents$goog$object_set;goog.object.setIfUndefined=module$contents$goog$object_setIfUndefined;goog.object.setWithReturnValueIfNotSet=module$contents$goog$object_setWithReturnValueIfNotSet;
+goog.object.some=module$contents$goog$object_some;goog.object.transpose=module$contents$goog$object_transpose;goog.object.unsafeClone=module$contents$goog$object_unsafeClone;const module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE={};
+class module$contents$goog$html$SafeStyleSheet_SafeStyleSheet{constructor(a,b){this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_=b===module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}toString(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_.toString()}static createRule(a,b){if((0,goog.string.internal.contains)(a,"<"))throw Error(`Selector does not allow '<', got: ${a}`);const c=a.replace(/('|")((?!\1)[^\r\n\f\\]|\\[\s\S])*\1/g,
+"");if(!/^[-_a-zA-Z0-9#.:* ,>+~[\]()=^$|]+$/.test(c))throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: "+a);if(!module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.hasBalancedBrackets_(c))throw Error("() and [] in selector must be balanced, got: "+a);b instanceof module$contents$goog$html$SafeStyle_SafeStyle||(b=module$contents$goog$html$SafeStyle_SafeStyle.create(b));a=`${a}{`+module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b).replace(/</g,"\\3C ")+"}";
+return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}static hasBalancedBrackets_(a){const b={"(":")","[":"]"},c=[];for(let d=0;d<a.length;d++){const e=a[d];if(b[e])c.push(b[e]);else if(module$contents$goog$object_contains(b,e)&&c.pop()!=e)return!1}return 0==c.length}static concat(a){let b="";const c=d=>{Array.isArray(d)?d.forEach(c):b+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(d)};Array.prototype.forEach.call(arguments,
+c);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)}static fromConstant(a){a=goog.string.Const.unwrap(a);if(0===a.length)return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY;(0,goog.asserts.assert)(!(0,goog.string.internal.contains)(a,"<"),`Forbidden '<' character in style sheet string: ${a}`);return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a)}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_}static unwrap(a){if(a instanceof
+module$contents$goog$html$SafeStyleSheet_SafeStyleSheet&&a.constructor===module$contents$goog$html$SafeStyleSheet_SafeStyleSheet)return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;(0,goog.asserts.fail)("expected object of type SafeStyleSheet, got '"+a+"' of type "+goog.typeOf(a));return"type_error:SafeStyleSheet"}static createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a){return new module$contents$goog$html$SafeStyleSheet_SafeStyleSheet(a,module$contents$goog$html$SafeStyleSheet_CONSTRUCTOR_TOKEN_PRIVATE)}}
+module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.EMPTY=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse("");goog.html.SafeStyleSheet=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet;goog.dom.HtmlElement=function(){};goog.dom.TagName=class{static cast(a,b){return a}constructor(){}toString(){}};goog.dom.TagName.A="A";goog.dom.TagName.ABBR="ABBR";goog.dom.TagName.ACRONYM="ACRONYM";goog.dom.TagName.ADDRESS="ADDRESS";goog.dom.TagName.APPLET="APPLET";goog.dom.TagName.AREA="AREA";goog.dom.TagName.ARTICLE="ARTICLE";goog.dom.TagName.ASIDE="ASIDE";goog.dom.TagName.AUDIO="AUDIO";goog.dom.TagName.B="B";goog.dom.TagName.BASE="BASE";goog.dom.TagName.BASEFONT="BASEFONT";goog.dom.TagName.BDI="BDI";goog.dom.TagName.BDO="BDO";
+goog.dom.TagName.BIG="BIG";goog.dom.TagName.BLOCKQUOTE="BLOCKQUOTE";goog.dom.TagName.BODY="BODY";goog.dom.TagName.BR="BR";goog.dom.TagName.BUTTON="BUTTON";goog.dom.TagName.CANVAS="CANVAS";goog.dom.TagName.CAPTION="CAPTION";goog.dom.TagName.CENTER="CENTER";goog.dom.TagName.CITE="CITE";goog.dom.TagName.CODE="CODE";goog.dom.TagName.COL="COL";goog.dom.TagName.COLGROUP="COLGROUP";goog.dom.TagName.COMMAND="COMMAND";goog.dom.TagName.DATA="DATA";goog.dom.TagName.DATALIST="DATALIST";goog.dom.TagName.DD="DD";
+goog.dom.TagName.DEL="DEL";goog.dom.TagName.DETAILS="DETAILS";goog.dom.TagName.DFN="DFN";goog.dom.TagName.DIALOG="DIALOG";goog.dom.TagName.DIR="DIR";goog.dom.TagName.DIV="DIV";goog.dom.TagName.DL="DL";goog.dom.TagName.DT="DT";goog.dom.TagName.EM="EM";goog.dom.TagName.EMBED="EMBED";goog.dom.TagName.FIELDSET="FIELDSET";goog.dom.TagName.FIGCAPTION="FIGCAPTION";goog.dom.TagName.FIGURE="FIGURE";goog.dom.TagName.FONT="FONT";goog.dom.TagName.FOOTER="FOOTER";goog.dom.TagName.FORM="FORM";
+goog.dom.TagName.FRAME="FRAME";goog.dom.TagName.FRAMESET="FRAMESET";goog.dom.TagName.H1="H1";goog.dom.TagName.H2="H2";goog.dom.TagName.H3="H3";goog.dom.TagName.H4="H4";goog.dom.TagName.H5="H5";goog.dom.TagName.H6="H6";goog.dom.TagName.HEAD="HEAD";goog.dom.TagName.HEADER="HEADER";goog.dom.TagName.HGROUP="HGROUP";goog.dom.TagName.HR="HR";goog.dom.TagName.HTML="HTML";goog.dom.TagName.I="I";goog.dom.TagName.IFRAME="IFRAME";goog.dom.TagName.IMG="IMG";goog.dom.TagName.INPUT="INPUT";
+goog.dom.TagName.INS="INS";goog.dom.TagName.ISINDEX="ISINDEX";goog.dom.TagName.KBD="KBD";goog.dom.TagName.KEYGEN="KEYGEN";goog.dom.TagName.LABEL="LABEL";goog.dom.TagName.LEGEND="LEGEND";goog.dom.TagName.LI="LI";goog.dom.TagName.LINK="LINK";goog.dom.TagName.MAIN="MAIN";goog.dom.TagName.MAP="MAP";goog.dom.TagName.MARK="MARK";goog.dom.TagName.MATH="MATH";goog.dom.TagName.MENU="MENU";goog.dom.TagName.MENUITEM="MENUITEM";goog.dom.TagName.META="META";goog.dom.TagName.METER="METER";
+goog.dom.TagName.NAV="NAV";goog.dom.TagName.NOFRAMES="NOFRAMES";goog.dom.TagName.NOSCRIPT="NOSCRIPT";goog.dom.TagName.OBJECT="OBJECT";goog.dom.TagName.OL="OL";goog.dom.TagName.OPTGROUP="OPTGROUP";goog.dom.TagName.OPTION="OPTION";goog.dom.TagName.OUTPUT="OUTPUT";goog.dom.TagName.P="P";goog.dom.TagName.PARAM="PARAM";goog.dom.TagName.PICTURE="PICTURE";goog.dom.TagName.PRE="PRE";goog.dom.TagName.PROGRESS="PROGRESS";goog.dom.TagName.Q="Q";goog.dom.TagName.RP="RP";goog.dom.TagName.RT="RT";
+goog.dom.TagName.RTC="RTC";goog.dom.TagName.RUBY="RUBY";goog.dom.TagName.S="S";goog.dom.TagName.SAMP="SAMP";goog.dom.TagName.SCRIPT="SCRIPT";goog.dom.TagName.SECTION="SECTION";goog.dom.TagName.SELECT="SELECT";goog.dom.TagName.SMALL="SMALL";goog.dom.TagName.SOURCE="SOURCE";goog.dom.TagName.SPAN="SPAN";goog.dom.TagName.STRIKE="STRIKE";goog.dom.TagName.STRONG="STRONG";goog.dom.TagName.STYLE="STYLE";goog.dom.TagName.SUB="SUB";goog.dom.TagName.SUMMARY="SUMMARY";goog.dom.TagName.SUP="SUP";
+goog.dom.TagName.SVG="SVG";goog.dom.TagName.TABLE="TABLE";goog.dom.TagName.TBODY="TBODY";goog.dom.TagName.TD="TD";goog.dom.TagName.TEMPLATE="TEMPLATE";goog.dom.TagName.TEXTAREA="TEXTAREA";goog.dom.TagName.TFOOT="TFOOT";goog.dom.TagName.TH="TH";goog.dom.TagName.THEAD="THEAD";goog.dom.TagName.TIME="TIME";goog.dom.TagName.TITLE="TITLE";goog.dom.TagName.TR="TR";goog.dom.TagName.TRACK="TRACK";goog.dom.TagName.TT="TT";goog.dom.TagName.U="U";goog.dom.TagName.UL="UL";goog.dom.TagName.VAR="VAR";
+goog.dom.TagName.VIDEO="VIDEO";goog.dom.TagName.WBR="WBR";goog.labs={};goog.labs.userAgent={};const module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE="",module$contents$goog$labs$userAgent_USE_CLIENT_HINTS=!1;let module$contents$goog$labs$userAgent_forceClientHintsInTests=!1;goog.labs.userAgent.setUseClientHintsForTesting=a=>{module$contents$goog$labs$userAgent_forceClientHintsInTests=a};
+const module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride=module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE?!!goog.getObjectByName(module$contents$goog$labs$userAgent_USE_CLIENT_HINTS_OVERRIDE):!1;goog.labs.userAgent.useClientHints=()=>module$contents$goog$labs$userAgent_USE_CLIENT_HINTS||module$contents$goog$labs$userAgent_useClientHintsRuntimeOverride||module$contents$goog$labs$userAgent_forceClientHintsInTests;goog.labs.userAgent.util={};const module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT=!1;function module$contents$goog$labs$userAgent$util_getNativeUserAgentString(){var a=module$contents$goog$labs$userAgent$util_getNavigator();return a&&(a=a.userAgent)?a:""}function module$contents$goog$labs$userAgent$util_getNativeUserAgentData(){const a=module$contents$goog$labs$userAgent$util_getNavigator();return a?a.userAgentData||null:null}
+function module$contents$goog$labs$userAgent$util_getNavigator(){return goog.global.navigator}let module$contents$goog$labs$userAgent$util_userAgentInternal=null,module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData();
+function module$contents$goog$labs$userAgent$util_setUserAgent(a){module$contents$goog$labs$userAgent$util_userAgentInternal="string"===typeof a?a:module$contents$goog$labs$userAgent$util_getNativeUserAgentString()}function module$contents$goog$labs$userAgent$util_getUserAgent(){return null==module$contents$goog$labs$userAgent$util_userAgentInternal?module$contents$goog$labs$userAgent$util_getNativeUserAgentString():module$contents$goog$labs$userAgent$util_userAgentInternal}
+function module$contents$goog$labs$userAgent$util_setUserAgentData(a){module$contents$goog$labs$userAgent$util_userAgentDataInternal=a}function module$contents$goog$labs$userAgent$util_resetUserAgentData(){module$contents$goog$labs$userAgent$util_userAgentDataInternal=module$contents$goog$labs$userAgent$util_getNativeUserAgentData()}function module$contents$goog$labs$userAgent$util_getUserAgentData(){return module$contents$goog$labs$userAgent$util_userAgentDataInternal}
+function module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(a){if(!(0,goog.labs.userAgent.useClientHints)())return!1;const b=module$contents$goog$labs$userAgent$util_getUserAgentData();return b?b.brands.some(({brand:c})=>c&&(0,goog.string.internal.contains)(c,a)):!1}function module$contents$goog$labs$userAgent$util_matchUserAgent(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.contains)(b,a)}
+function module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase(a){const b=module$contents$goog$labs$userAgent$util_getUserAgent();return(0,goog.string.internal.caseInsensitiveContains)(b,a)}function module$contents$goog$labs$userAgent$util_extractVersionTuples(a){const b=RegExp("([A-Z][\\w ]+)/([^\\s]+)\\s*(?:\\((.*?)\\))?","g"),c=[];let d;for(;d=b.exec(a);)c.push([d[1],d[2],d[3]||void 0]);return c}goog.labs.userAgent.util.ASSUME_CLIENT_HINTS_SUPPORT=module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT;
+goog.labs.userAgent.util.extractVersionTuples=module$contents$goog$labs$userAgent$util_extractVersionTuples;goog.labs.userAgent.util.getNativeUserAgentString=module$contents$goog$labs$userAgent$util_getNativeUserAgentString;goog.labs.userAgent.util.getUserAgent=module$contents$goog$labs$userAgent$util_getUserAgent;goog.labs.userAgent.util.getUserAgentData=module$contents$goog$labs$userAgent$util_getUserAgentData;goog.labs.userAgent.util.matchUserAgent=module$contents$goog$labs$userAgent$util_matchUserAgent;
+goog.labs.userAgent.util.matchUserAgentDataBrand=module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand;goog.labs.userAgent.util.matchUserAgentIgnoreCase=module$contents$goog$labs$userAgent$util_matchUserAgentIgnoreCase;goog.labs.userAgent.util.resetUserAgentData=module$contents$goog$labs$userAgent$util_resetUserAgentData;goog.labs.userAgent.util.setUserAgent=module$contents$goog$labs$userAgent$util_setUserAgent;goog.labs.userAgent.util.setUserAgentData=module$contents$goog$labs$userAgent$util_setUserAgentData;var module$exports$goog$labs$userAgent$highEntropy$highEntropyValue={AsyncValue:class{getIfLoaded(){}load(){}},HighEntropyValue:class{constructor(a){this.key_=a;this.promise_=this.value_=void 0;this.pending_=!1}getIfLoaded(){if(module$contents$goog$labs$userAgent$util_getUserAgentData())return this.value_}async load(){const a=module$contents$goog$labs$userAgent$util_getUserAgentData();if(a)return this.promise_||(this.pending_=!0,this.promise_=(async()=>{try{return this.value_=(await a.getHighEntropyValues([this.key_]))[this.key_]}finally{this.pending_=
+!1}})()),await this.promise_}resetForTesting(){if(this.pending_)throw Error("Unsafe call to resetForTesting");this.value_=this.promise_=void 0;this.pending_=!1}},Version:class{constructor(a){this.versionString_=a}toVersionStringForLogging(){return this.versionString_}isAtLeast(a){return 0<=(0,goog.string.internal.compareVersions)(this.versionString_,a)}}};var module$exports$goog$labs$userAgent$highEntropy$highEntropyData={};module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("fullVersionList");module$exports$goog$labs$userAgent$highEntropy$highEntropyData.platformVersion=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.HighEntropyValue("platformVersion");goog.labs.userAgent.browser={};const module$contents$goog$labs$userAgent$browser_Brand={ANDROID_BROWSER:"Android Browser",CHROMIUM:"Chromium",EDGE:"Microsoft Edge",FIREFOX:"Firefox",IE:"Internet Explorer",OPERA:"Opera",SAFARI:"Safari",SILK:"Silk"};goog.labs.userAgent.browser.Brand=module$contents$goog$labs$userAgent$browser_Brand;
+function module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(a=!1){if(module$contents$goog$labs$userAgent$util_ASSUME_CLIENT_HINTS_SUPPORT)return!0;if(!a&&!(0,goog.labs.userAgent.useClientHints)())return!1;a=module$contents$goog$labs$userAgent$util_getUserAgentData();return!!a&&0<a.brands.length}
+function module$contents$goog$labs$userAgent$browser_hasFullVersionList(){return module$contents$goog$labs$userAgent$browser_isAtLeast(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM,98)}function module$contents$goog$labs$userAgent$browser_matchOpera(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Opera")}
+function module$contents$goog$labs$userAgent$browser_matchIE(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Trident")||module$contents$goog$labs$userAgent$util_matchUserAgent("MSIE")}function module$contents$goog$labs$userAgent$browser_matchEdgeHtml(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Edge")}
+function module$contents$goog$labs$userAgent$browser_matchEdgeChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.EDGE):module$contents$goog$labs$userAgent$util_matchUserAgent("Edg/")}
+function module$contents$goog$labs$userAgent$browser_matchOperaChromium(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.OPERA):module$contents$goog$labs$userAgent$util_matchUserAgent("OPR")}
+function module$contents$goog$labs$userAgent$browser_matchFirefox(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Firefox")||module$contents$goog$labs$userAgent$util_matchUserAgent("FxiOS")}
+function module$contents$goog$labs$userAgent$browser_matchSafari(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Safari")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchCoast()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_matchEdgeChromium()||module$contents$goog$labs$userAgent$browser_matchOperaChromium()||
+module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_isSilk()||module$contents$goog$labs$userAgent$util_matchUserAgent("Android"))}function module$contents$goog$labs$userAgent$browser_matchCoast(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?!1:module$contents$goog$labs$userAgent$util_matchUserAgent("Coast")}
+function module$contents$goog$labs$userAgent$browser_matchIosWebview(){return(module$contents$goog$labs$userAgent$util_matchUserAgent("iPad")||module$contents$goog$labs$userAgent$util_matchUserAgent("iPhone"))&&!module$contents$goog$labs$userAgent$browser_matchSafari()&&!module$contents$goog$labs$userAgent$browser_matchChrome()&&!module$contents$goog$labs$userAgent$browser_matchCoast()&&!module$contents$goog$labs$userAgent$browser_matchFirefox()&&module$contents$goog$labs$userAgent$util_matchUserAgent("AppleWebKit")}
+function module$contents$goog$labs$userAgent$browser_matchChrome(){return module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()?module$contents$goog$labs$userAgent$util_matchUserAgentDataBrand(module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM):(module$contents$goog$labs$userAgent$util_matchUserAgent("Chrome")||module$contents$goog$labs$userAgent$util_matchUserAgent("CriOS"))&&!module$contents$goog$labs$userAgent$browser_matchEdgeHtml()||module$contents$goog$labs$userAgent$browser_isSilk()}
+function module$contents$goog$labs$userAgent$browser_matchAndroidBrowser(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Android")&&!(module$contents$goog$labs$userAgent$browser_matchChrome()||module$contents$goog$labs$userAgent$browser_matchFirefox()||module$contents$goog$labs$userAgent$browser_matchOpera()||module$contents$goog$labs$userAgent$browser_isSilk())}const module$contents$goog$labs$userAgent$browser_isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;
+goog.labs.userAgent.browser.isOpera=module$contents$goog$labs$userAgent$browser_matchOpera;const module$contents$goog$labs$userAgent$browser_isIE=module$contents$goog$labs$userAgent$browser_matchIE;goog.labs.userAgent.browser.isIE=module$contents$goog$labs$userAgent$browser_matchIE;const module$contents$goog$labs$userAgent$browser_isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;goog.labs.userAgent.browser.isEdge=module$contents$goog$labs$userAgent$browser_matchEdgeHtml;
+const module$contents$goog$labs$userAgent$browser_isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;goog.labs.userAgent.browser.isEdgeChromium=module$contents$goog$labs$userAgent$browser_matchEdgeChromium;const module$contents$goog$labs$userAgent$browser_isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;goog.labs.userAgent.browser.isOperaChromium=module$contents$goog$labs$userAgent$browser_matchOperaChromium;
+const module$contents$goog$labs$userAgent$browser_isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;goog.labs.userAgent.browser.isFirefox=module$contents$goog$labs$userAgent$browser_matchFirefox;const module$contents$goog$labs$userAgent$browser_isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;goog.labs.userAgent.browser.isSafari=module$contents$goog$labs$userAgent$browser_matchSafari;const module$contents$goog$labs$userAgent$browser_isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;
+goog.labs.userAgent.browser.isCoast=module$contents$goog$labs$userAgent$browser_matchCoast;const module$contents$goog$labs$userAgent$browser_isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;goog.labs.userAgent.browser.isIosWebview=module$contents$goog$labs$userAgent$browser_matchIosWebview;const module$contents$goog$labs$userAgent$browser_isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;goog.labs.userAgent.browser.isChrome=module$contents$goog$labs$userAgent$browser_matchChrome;
+const module$contents$goog$labs$userAgent$browser_isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;goog.labs.userAgent.browser.isAndroidBrowser=module$contents$goog$labs$userAgent$browser_matchAndroidBrowser;function module$contents$goog$labs$userAgent$browser_isSilk(){return module$contents$goog$labs$userAgent$util_matchUserAgent("Silk")}goog.labs.userAgent.browser.isSilk=module$contents$goog$labs$userAgent$browser_isSilk;
+function module$contents$goog$labs$userAgent$browser_createVersionMap(a){const b={};a.forEach(c=>{b[c[0]]=c[1]});return c=>b[c.find(d=>d in b)]||""}
+function module$contents$goog$labs$userAgent$browser_getVersion(){var a=module$contents$goog$labs$userAgent$util_getUserAgent();if(module$contents$goog$labs$userAgent$browser_matchIE())return module$contents$goog$labs$userAgent$browser_getIEVersion(a);a=module$contents$goog$labs$userAgent$util_extractVersionTuples(a);const b=module$contents$goog$labs$userAgent$browser_createVersionMap(a);return module$contents$goog$labs$userAgent$browser_matchOpera()?b(["Version","Opera"]):module$contents$goog$labs$userAgent$browser_matchEdgeHtml()?
+b(["Edge"]):module$contents$goog$labs$userAgent$browser_matchEdgeChromium()?b(["Edg"]):module$contents$goog$labs$userAgent$browser_isSilk()?b(["Silk"]):module$contents$goog$labs$userAgent$browser_matchChrome()?b(["Chrome","CriOS","HeadlessChrome"]):(a=a[2])&&a[1]||""}goog.labs.userAgent.browser.getVersion=module$contents$goog$labs$userAgent$browser_getVersion;
+function module$contents$goog$labs$userAgent$browser_isVersionOrHigher(a){return 0<=(0,goog.string.internal.compareVersions)(module$contents$goog$labs$userAgent$browser_getVersion(),a)}goog.labs.userAgent.browser.isVersionOrHigher=module$contents$goog$labs$userAgent$browser_isVersionOrHigher;
+function module$contents$goog$labs$userAgent$browser_getIEVersion(a){var b=/rv: *([\d\.]*)/.exec(a);if(b&&b[1])return b[1];b="";const c=/MSIE +([\d\.]+)/.exec(a);if(c&&c[1])if(a=/Trident\/(\d.\d)/.exec(a),"7.0"==c[1])if(a&&a[1])switch(a[1]){case "4.0":b="8.0";break;case "5.0":b="9.0";break;case "6.0":b="10.0";break;case "7.0":b="11.0"}else b="7.0";else b=c[1];return b}
+function module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a){var b=module$contents$goog$labs$userAgent$util_getUserAgent();if(a===module$contents$goog$labs$userAgent$browser_Brand.IE)return module$contents$goog$labs$userAgent$browser_matchIE()?module$contents$goog$labs$userAgent$browser_getIEVersion(b):"";b=module$contents$goog$labs$userAgent$util_extractVersionTuples(b);const c=module$contents$goog$labs$userAgent$browser_createVersionMap(b);switch(a){case module$contents$goog$labs$userAgent$browser_Brand.OPERA:if(module$contents$goog$labs$userAgent$browser_matchOpera())return c(["Version",
+"Opera"]);if(module$contents$goog$labs$userAgent$browser_matchOperaChromium())return c(["OPR"]);break;case module$contents$goog$labs$userAgent$browser_Brand.EDGE:if(module$contents$goog$labs$userAgent$browser_matchEdgeHtml())return c(["Edge"]);if(module$contents$goog$labs$userAgent$browser_matchEdgeChromium())return c(["Edg"]);break;case module$contents$goog$labs$userAgent$browser_Brand.CHROMIUM:if(module$contents$goog$labs$userAgent$browser_matchChrome())return c(["Chrome","CriOS","HeadlessChrome"])}return a===
+module$contents$goog$labs$userAgent$browser_Brand.FIREFOX&&module$contents$goog$labs$userAgent$browser_matchFirefox()||a===module$contents$goog$labs$userAgent$browser_Brand.SAFARI&&module$contents$goog$labs$userAgent$browser_matchSafari()||a===module$contents$goog$labs$userAgent$browser_Brand.ANDROID_BROWSER&&module$contents$goog$labs$userAgent$browser_matchAndroidBrowser()||a===module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_isSilk()?(a=b[2])&&
+a[1]||"":""}
+function module$contents$goog$labs$userAgent$browser_versionOf_(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand()&&a!==module$contents$goog$labs$userAgent$browser_Brand.SILK){var b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);if(!b||!b.version)return NaN;b=b.version.split(".")}else{b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a);if(""===b)return NaN;b=b.split(".")}return 0===b.length?NaN:Number(b[0])}
+function module$contents$goog$labs$userAgent$browser_isAtLeast(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)>=b}goog.labs.userAgent.browser.isAtLeast=module$contents$goog$labs$userAgent$browser_isAtLeast;
+function module$contents$goog$labs$userAgent$browser_isAtMost(a,b){(0,goog.asserts.assert)(Math.floor(b)===b,"Major version must be an integer");return module$contents$goog$labs$userAgent$browser_versionOf_(a)<=b}goog.labs.userAgent.browser.isAtMost=module$contents$goog$labs$userAgent$browser_isAtMost;
+class module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion{constructor(a,b,c){this.brand_=a;this.version_=new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(c);this.useUach_=b}getIfLoaded(){if(this.useUach_){var a=module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.getIfLoaded();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}if(module$contents$goog$labs$userAgent$browser_preUachHasLoaded)return this.version_}async load(){if(this.useUach_){var a=
+await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();if(void 0!==a)return a=a.find(({brand:b})=>this.brand_===b),(0,goog.asserts.assertExists)(a),new module$exports$goog$labs$userAgent$highEntropy$highEntropyValue.Version(a.version)}else await 0;module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0;return this.version_}}let module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;
+async function module$contents$goog$labs$userAgent$browser_loadFullVersions(){module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)&&await module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.load();module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!0}goog.labs.userAgent.browser.loadFullVersions=module$contents$goog$labs$userAgent$browser_loadFullVersions;
+goog.labs.userAgent.browser.resetForTesting=()=>{module$contents$goog$labs$userAgent$browser_preUachHasLoaded=!1;module$exports$goog$labs$userAgent$highEntropy$highEntropyData.fullVersionList.resetForTesting()};
+function module$contents$goog$labs$userAgent$browser_fullVersionOf(a){let b="";module$contents$goog$labs$userAgent$browser_hasFullVersionList()||(b=module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a));const c=a!==module$contents$goog$labs$userAgent$browser_Brand.SILK&&module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0);if(c){if(!module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:d})=>d===a))return}else if(""===b)return;return new module$contents$goog$labs$userAgent$browser_HighEntropyBrandVersion(a,
+c,b)}goog.labs.userAgent.browser.fullVersionOf=module$contents$goog$labs$userAgent$browser_fullVersionOf;
+function module$contents$goog$labs$userAgent$browser_getVersionStringForLogging(a){if(module$contents$goog$labs$userAgent$browser_useUserAgentDataBrand(!0)){var b=module$contents$goog$labs$userAgent$browser_fullVersionOf(a);if(b){if(b=b.getIfLoaded())return b.toVersionStringForLogging();b=module$contents$goog$labs$userAgent$util_getUserAgentData().brands.find(({brand:c})=>c===a);(0,goog.asserts.assertExists)(b);return b.version}return""}return module$contents$goog$labs$userAgent$browser_getFullVersionFromUserAgentString(a)}
+goog.labs.userAgent.browser.getVersionStringForLogging=module$contents$goog$labs$userAgent$browser_getVersionStringForLogging;goog.dom.tags={};goog.dom.tags.VOID_TAGS_={area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};goog.dom.tags.isVoidTag=function(a){return!0===goog.dom.tags.VOID_TAGS_[a]};const module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE={};
+class module$contents$goog$html$SafeHtml_SafeHtml{constructor(a,b){this.privateDoNotAccessOrElseSafeHtmlWrappedValue_=b===module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE?a:"";this.implementsGoogStringTypedString=!0}getTypedStringValue(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}toString(){return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString()}static unwrap(a){return module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(a).toString()}static unwrapTrustedHTML(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml&&
+a.constructor===module$contents$goog$html$SafeHtml_SafeHtml)return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_;goog.asserts.fail(`expected object of type SafeHtml, got '${a}' of type `+goog.typeOf(a));return"type_error:SafeHtml"}static htmlEscape(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a="object"==typeof a&&a.implementsGoogStringTypedString?a.getTypedStringValue():String(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a))}static htmlEscapePreservingNewlines(a){if(a instanceof
+module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static htmlEscapePreservingNewlinesAndSpaces(a){if(a instanceof module$contents$goog$html$SafeHtml_SafeHtml)return a;a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static comment(a){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\x3c!--"+
+goog.string.internal.htmlEscape(a)+"--\x3e")}static create(a,b,c){module$contents$goog$html$SafeHtml_SafeHtml.verifyTagName(String(a));return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a),b,c)}static verifyTagName(a){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Invalid tag name <${a}>.`:"");if(a.toUpperCase()in module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?
+`Tag name <${a}> is not allowed for SafeHtml.`:"");}static createIframe(a,b,c,d){a&&goog.html.TrustedResourceUrl.unwrap(a);const e={};e.src=a||null;e.srcdoc=b&&module$contents$goog$html$SafeHtml_SafeHtml.unwrap(b);a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{sandbox:""},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static createSandboxIframe(a,b,c,d){if(!module$contents$goog$html$SafeHtml_SafeHtml.canUseSandboxIframe())throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?
+"The browser does not support sandboxed iframes.":"");const e={};e.src=a?goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)):null;e.srcdoc=b||null;e.sandbox="";a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes(e,{},c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe",a,d)}static canUseSandboxIframe(){return goog.global.HTMLIFrameElement&&"sandbox"in goog.global.HTMLIFrameElement.prototype}static createScriptSrc(a,b){goog.html.TrustedResourceUrl.unwrap(a);
+a=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({src:a},{},b);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",a)}static createScript(a,b){for(var c in b)if(Object.prototype.hasOwnProperty.call(b,c)){var d=c.toLowerCase();if("language"==d||"src"==d||"text"==d)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot set "${d}" attribute`:"");}c="";a=module$contents$goog$array_concat(a);for(d=0;d<
+a.length;d++)c+=module$contents$goog$html$SafeScript_SafeScript.unwrap(a[d]);a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script",b,a)}static createStyle(a,b){b=module$contents$goog$html$SafeHtml_SafeHtml.combineAttributes({type:"text/css"},{},b);let c="";a=module$contents$goog$array_concat(a);for(let d=0;d<a.length;d++)c+=module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.unwrap(a[d]);
+a=module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style",b,a)}static createMetaRefresh(a,b){a=goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a));(module$contents$goog$labs$userAgent$browser_matchIE()||module$contents$goog$labs$userAgent$browser_matchEdgeHtml())&&goog.string.internal.contains(a,";")&&(a="'"+a.replace(/'/g,"%27")+"'");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta",
+{"http-equiv":"refresh",content:(b||0)+"; url="+a})}static join(a,b){a=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(a);const c=[],d=e=>{Array.isArray(e)?e.forEach(d):(e=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape(e),c.push(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(e)))};b.forEach(d);return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c.join(module$contents$goog$html$SafeHtml_SafeHtml.unwrap(a)))}static concat(a){return module$contents$goog$html$SafeHtml_SafeHtml.join(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY,
+Array.prototype.slice.call(arguments))}static createSafeHtmlSecurityPrivateDoNotAccessOrElse(a){const b=goog.html.trustedtypes.getPolicyPrivateDoNotAccessOrElse();a=b?b.createHTML(a):a;return new module$contents$goog$html$SafeHtml_SafeHtml(a,module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE)}static createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(a,b,c){b=`<${a}`+module$contents$goog$html$SafeHtml_SafeHtml.stringifyAttributes(a,b);null==c?c=[]:Array.isArray(c)||(c=[c]);goog.dom.tags.isVoidTag(a.toLowerCase())?
+(goog.asserts.assert(!c.length,`Void tag <${a}> does not allow content.`),b+=">"):(c=module$contents$goog$html$SafeHtml_SafeHtml.concat(c),b+=">"+module$contents$goog$html$SafeHtml_SafeHtml.unwrap(c)+"</"+a+">");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)}static stringifyAttributes(a,b){let c="";if(b)for(let d in b)if(Object.prototype.hasOwnProperty.call(b,d)){if(!module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG.test(d))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?
+`Invalid attribute name "${d}".`:"");const e=b[d];null!=e&&(c+=" "+module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,d,e))}return c}static combineAttributes(a,b,c){const d={};for(var e in a)Object.prototype.hasOwnProperty.call(a,e)&&(goog.asserts.assert(e.toLowerCase()==e,"Must be lower case"),d[e]=a[e]);for(const f in b)Object.prototype.hasOwnProperty.call(b,f)&&(goog.asserts.assert(f.toLowerCase()==f,"Must be lower case"),d[f]=b[f]);if(c)for(const f in c)if(Object.prototype.hasOwnProperty.call(c,
+f)){e=f.toLowerCase();if(e in a)throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Cannot override "${e}" attribute, got "`+f+'" with value "'+c[f]+'"':"");e in b&&delete d[e];d[f]=c[f]}return d}}module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES=goog.DEBUG;module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE=!0;module$contents$goog$html$SafeHtml_SafeHtml.from=module$contents$goog$html$SafeHtml_SafeHtml.htmlEscape;
+const module$contents$goog$html$SafeHtml_VALID_NAMES_IN_TAG=/^[a-zA-Z0-9-]+$/,module$contents$goog$html$SafeHtml_URL_ATTRIBUTES={action:!0,cite:!0,data:!0,formaction:!0,href:!0,manifest:!0,poster:!0,src:!0},module$contents$goog$html$SafeHtml_NOT_ALLOWED_TAG_NAMES={[goog.dom.TagName.APPLET]:!0,[goog.dom.TagName.BASE]:!0,[goog.dom.TagName.EMBED]:!0,[goog.dom.TagName.IFRAME]:!0,[goog.dom.TagName.LINK]:!0,[goog.dom.TagName.MATH]:!0,[goog.dom.TagName.META]:!0,[goog.dom.TagName.OBJECT]:!0,[goog.dom.TagName.SCRIPT]:!0,
+[goog.dom.TagName.STYLE]:!0,[goog.dom.TagName.SVG]:!0,[goog.dom.TagName.TEMPLATE]:!0};
+function module$contents$goog$html$SafeHtml_getAttrNameAndValue(a,b,c){if(c instanceof goog.string.Const)c=goog.string.Const.unwrap(c);else if("style"==b.toLowerCase())if(module$contents$goog$html$SafeHtml_SafeHtml.SUPPORT_STYLE_ATTRIBUTE)c=module$contents$goog$html$SafeHtml_getStyleValue(c);else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'Attribute "style" not supported.':"");else{if(/^on/i.test(b))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?
+`Attribute "${b}`+'" requires goog.string.Const value, "'+c+'" given.':"");if(b.toLowerCase()in module$contents$goog$html$SafeHtml_URL_ATTRIBUTES)if(c instanceof goog.html.TrustedResourceUrl)c=goog.html.TrustedResourceUrl.unwrap(c);else if(c instanceof goog.html.SafeUrl)c=goog.html.SafeUrl.unwrap(c);else if("string"===typeof c)c=goog.html.SafeUrl.sanitize(c).getTypedStringValue();else throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?`Attribute "${b}" on tag "${a}`+'" requires goog.html.SafeUrl, goog.string.Const, or string, value "'+
+c+'" given.':"");}c.implementsGoogStringTypedString&&(c=c.getTypedStringValue());goog.asserts.assert("string"===typeof c||"number"===typeof c,"String or number value expected, got "+typeof c+" with value: "+c);return`${b}="`+goog.string.internal.htmlEscape(String(c))+'"'}
+function module$contents$goog$html$SafeHtml_getStyleValue(a){if(!goog.isObject(a))throw Error(module$contents$goog$html$SafeHtml_SafeHtml.ENABLE_ERROR_MESSAGES?'The "style" attribute requires goog.html.SafeStyle or map of style properties, '+typeof a+" given: "+a:"");a instanceof module$contents$goog$html$SafeStyle_SafeStyle||(a=module$contents$goog$html$SafeStyle_SafeStyle.create(a));return module$contents$goog$html$SafeStyle_SafeStyle.unwrap(a)}
+module$contents$goog$html$SafeHtml_SafeHtml.DOCTYPE_HTML=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>")}();module$contents$goog$html$SafeHtml_SafeHtml.EMPTY=new module$contents$goog$html$SafeHtml_SafeHtml(goog.global.trustedTypes&&goog.global.trustedTypes.emptyHTML||"",module$contents$goog$html$SafeHtml_CONSTRUCTOR_TOKEN_PRIVATE);module$contents$goog$html$SafeHtml_SafeHtml.BR=function(){return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>")}();
+goog.html.SafeHtml=module$contents$goog$html$SafeHtml_SafeHtml;goog.html.uncheckedconversions={};goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeHtml_SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeScript_SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyle_SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return module$contents$goog$html$SafeStyleSheet_SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b)};
+goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract=function(a,b){goog.asserts.assertString(goog.string.Const.unwrap(a),"must provide justification");goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)),"must provide non-empty justification");return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b)};goog.dom.safe={};goog.dom.safe.InsertAdjacentHtmlPosition={AFTERBEGIN:"afterbegin",AFTEREND:"afterend",BEFOREBEGIN:"beforebegin",BEFOREEND:"beforeend"};goog.dom.safe.insertAdjacentHtml=function(a,b,c){a.insertAdjacentHTML(b,module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(c))};goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_={MATH:!0,SCRIPT:!0,STYLE:!0,SVG:!0,TEMPLATE:!0};
+goog.dom.safe.isInnerHtmlCleanupRecursive_=goog.functions.cacheReturnValue(function(){if(goog.DEBUG&&"undefined"===typeof document)return!1;var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);if(goog.DEBUG&&!a.firstChild)return!1;b=a.firstChild.firstChild;a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(module$contents$goog$html$SafeHtml_SafeHtml.EMPTY);return!b.parentElement});
+goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse=function(a,b){if(goog.dom.safe.isInnerHtmlCleanupRecursive_())for(;a.lastChild;)a.removeChild(a.lastChild);a.innerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};
+goog.dom.safe.setInnerHtml=function(a,b){if(goog.asserts.ENABLE_ASSERTS&&a.tagName){var c=a.tagName.toUpperCase();if(goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c])throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of "+a.tagName+".");}goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a,b)};
+goog.dom.safe.setInnerHtmlFromConstant=function(a,b){goog.dom.safe.setInnerHtml(a,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Constant HTML to be immediatelly used."),goog.string.Const.unwrap(b)))};goog.dom.safe.setOuterHtml=function(a,b){a.outerHTML=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};
+goog.dom.safe.setFormElementAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLFormElement(a).action=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setButtonFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLButtonElement(a).formAction=goog.html.SafeUrl.unwrap(b)};
+goog.dom.safe.setInputFormAction=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);goog.dom.asserts.assertIsHTMLInputElement(a).formAction=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setStyle=function(a,b){a.style.cssText=module$contents$goog$html$SafeStyle_SafeStyle.unwrap(b)};goog.dom.safe.documentWrite=function(a,b){a.write(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};
+goog.dom.safe.setAnchorHref=function(a,b){goog.dom.asserts.assertIsHTMLAnchorElement(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setAudioSrc=function(a,b){goog.dom.asserts.assertIsHTMLAudioElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:audio\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};
+goog.dom.safe.setVideoSrc=function(a,b){goog.dom.asserts.assertIsHTMLVideoElement(a);if(!(b instanceof goog.html.SafeUrl)){var c=/^data:video\//i.test(b);b=goog.html.SafeUrl.sanitizeAssertUnchanged(b,c)}a.src=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.setEmbedSrc=function(a,b){goog.dom.asserts.assertIsHTMLEmbedElement(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setFrameSrc=function(a,b){goog.dom.asserts.assertIsHTMLFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};
+goog.dom.safe.setIframeSrc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.src=goog.html.TrustedResourceUrl.unwrap(b)};goog.dom.safe.setIframeSrcdoc=function(a,b){goog.dom.asserts.assertIsHTMLIFrameElement(a);a.srcdoc=module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b)};
+goog.dom.safe.setLinkHrefAndRel=function(a,b,c){goog.dom.asserts.assertIsHTMLLinkElement(a);a.rel=c;goog.string.internal.caseInsensitiveContains(c,"stylesheet")?(goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl,'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'),a.href=goog.html.TrustedResourceUrl.unwrap(b),(b=goog.dom.safe.getStyleNonce(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof goog.html.TrustedResourceUrl?goog.html.TrustedResourceUrl.unwrap(b):
+b instanceof goog.html.SafeUrl?goog.html.SafeUrl.unwrap(b):goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b))};goog.dom.safe.setObjectData=function(a,b){goog.dom.asserts.assertIsHTMLObjectElement(a);a.data=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};goog.dom.safe.setScriptSrc=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.src=goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b)};
+goog.dom.safe.setScriptContent=function(a,b){goog.dom.asserts.assertIsHTMLScriptElement(a);goog.dom.safe.setNonceForScriptElement_(a);a.textContent=module$contents$goog$html$SafeScript_SafeScript.unwrapTrustedScript(b)};goog.dom.safe.setNonceForScriptElement_=function(a){const b=goog.dom.safe.getScriptNonce(a.ownerDocument&&a.ownerDocument.defaultView);b&&a.setAttribute("nonce",b)};
+goog.dom.safe.setLocationHref=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.href=goog.html.SafeUrl.unwrap(b)};goog.dom.safe.assignLocation=function(a,b){goog.dom.asserts.assertIsLocation(a);b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.assign(goog.html.SafeUrl.unwrap(b))};
+goog.dom.safe.replaceLocation=function(a,b){b=b instanceof goog.html.SafeUrl?b:goog.html.SafeUrl.sanitizeAssertUnchanged(b);a.replace(goog.html.SafeUrl.unwrap(b))};goog.dom.safe.openInWindow=function(a,b,c,d){a=a instanceof goog.html.SafeUrl?a:goog.html.SafeUrl.sanitizeAssertUnchanged(a);b=b||goog.global;c=c instanceof goog.string.Const?goog.string.Const.unwrap(c):c||"";return void 0!==d?b.open(goog.html.SafeUrl.unwrap(a),c,d):b.open(goog.html.SafeUrl.unwrap(a),c)};
+goog.dom.safe.parseFromStringHtml=function(a,b){return goog.dom.safe.parseFromString(a,b,"text/html")};goog.dom.safe.parseFromString=function(a,b,c){return a.parseFromString(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b),c)};
+goog.dom.safe.createImageFromBlob=function(a){if(!/^image\/.*/g.test(a.type))throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*.");var b=goog.global.URL.createObjectURL(a);a=new goog.global.Image;a.onload=function(){goog.global.URL.revokeObjectURL(b)};a.src=b;return a};goog.dom.safe.createContextualFragment=function(a,b){return a.createContextualFragment(module$contents$goog$html$SafeHtml_SafeHtml.unwrapTrustedHTML(b))};
+goog.dom.safe.getScriptNonce=function(a){return goog.dom.safe.getNonce_("script[nonce]",a)};goog.dom.safe.getStyleNonce=function(a){return goog.dom.safe.getNonce_('style[nonce],link[rel="stylesheet"][nonce]',a)};goog.dom.safe.NONCE_PATTERN_=/^[\w+/_-]+[=]{0,2}$/;goog.dom.safe.getNonce_=function(a,b){b=(b||goog.global).document;return b.querySelector?(a=b.querySelector(a))&&(a=a.nonce||a.getAttribute("nonce"))&&goog.dom.safe.NONCE_PATTERN_.test(a)?a:"":""};goog.string.DETECT_DOUBLE_ESCAPING=!1;goog.string.FORCE_NON_DOM_HTML_UNESCAPING=!1;goog.string.Unicode={NBSP:"\u00a0",ZERO_WIDTH_SPACE:"\u200b"};goog.string.startsWith=goog.string.internal.startsWith;goog.string.endsWith=goog.string.internal.endsWith;goog.string.caseInsensitiveStartsWith=goog.string.internal.caseInsensitiveStartsWith;goog.string.caseInsensitiveEndsWith=goog.string.internal.caseInsensitiveEndsWith;goog.string.caseInsensitiveEquals=goog.string.internal.caseInsensitiveEquals;
+goog.string.subs=function(a,b){const c=a.split("%s");let d="";const e=Array.prototype.slice.call(arguments,1);for(;e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};goog.string.isEmptyOrWhitespace=goog.string.internal.isEmptyOrWhitespace;goog.string.isEmptyString=function(a){return 0==a.length};goog.string.isEmpty=goog.string.isEmptyOrWhitespace;
+goog.string.isEmptyOrWhitespaceSafe=function(a){return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a))};goog.string.isEmptySafe=goog.string.isEmptyOrWhitespaceSafe;goog.string.isBreakingWhitespace=function(a){return!/[^\t\n\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};
+goog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\u0080"<=a&&"\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")};
+goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=goog.string.internal.trim;goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=goog.string.internal.caseInsensitiveCompare;
+goog.string.numberAwareCompare_=function(a,b,c){if(a==b)return 0;if(!a)return-1;if(!b)return 1;const d=a.toLowerCase().match(c),e=b.toLowerCase().match(c),f=Math.min(d.length,e.length);for(let g=0;g<f;g++){c=d[g];const h=e[g];if(c!=h)return a=parseInt(c,10),!isNaN(a)&&(b=parseInt(h,10),!isNaN(b)&&a-b)?a-b:c<h?-1:1}return d.length!=e.length?d.length-e.length:a<b?-1:1};goog.string.intAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\d+|\D+/g)};
+goog.string.floatAwareCompare=function(a,b){return goog.string.numberAwareCompare_(a,b,/\d+|\.\d+|\D+/g)};goog.string.numerateCompare=goog.string.floatAwareCompare;goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\+/g," "))};goog.string.newLineToBr=goog.string.internal.newLineToBr;
+goog.string.htmlEscape=function(a,b){a=goog.string.internal.htmlEscape(a,b);goog.string.DETECT_DOUBLE_ESCAPING&&(a=a.replace(goog.string.E_RE_,"&#101;"));return a};goog.string.E_RE_=/e/g;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?!goog.string.FORCE_NON_DOM_HTML_UNESCAPING&&"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};
+goog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};
+goog.string.unescapeEntitiesUsingDom_=function(a,b){const c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"'};let d;d=b?b.createElement("div"):goog.global.document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(e,f){let g=c[e];if(g)return g;"#"==f.charAt(0)&&(f=Number("0"+f.slice(1)),isNaN(f)||(g=String.fromCharCode(f)));g||(goog.dom.safe.setInnerHtml(d,goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."),
+e+" ")),g=d.firstChild.nodeValue.slice(0,-1));return c[e]=g})};goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:return"#"!=c.charAt(0)||(c=Number("0"+c.slice(1)),isNaN(c))?b:String.fromCharCode(c)}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};
+goog.string.preserveSpaces=function(a){return a.replace(/(^|[\n ]) /g,"$1"+goog.string.Unicode.NBSP)};goog.string.stripQuotes=function(a,b){const c=b.length;for(let d=0;d<c;d++){const e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};
+goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;a=a.substring(0,b-d)+"..."+a.substring(e)}else a.length>b&&(d=Math.floor(b/2),e=a.length-d,a=a.substring(0,d+b%2)+"..."+a.substring(e));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\x0B",'"':'\\"',"\\":"\\\\","<":"\\u003C"};goog.string.jsEscapeCache_={"'":"\\'"};
+goog.string.quote=function(a){a=String(a);const b=['"'];for(let c=0;c<a.length;c++){const d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('"');return b.join("")};goog.string.escapeString=function(a){const b=[];for(let c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};
+goog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];let b;const c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\x",16>c||256<c)b+="0"}else b="\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.contains=goog.string.internal.contains;
+goog.string.caseInsensitiveContains=goog.string.internal.caseInsensitiveContains;goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){let d=a;0<=b&&b<a.length&&0<c&&(d=a.slice(0,b)+a.slice(b+c));return d};goog.string.remove=function(a,b){return a.replace(b,"")};goog.string.removeAll=function(a,b){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,"")};
+goog.string.replaceAll=function(a,b,c){b=new RegExp(goog.string.regExpEscape(b),"g");return a.replace(b,c.replace(/\$/g,"$$$$"))};goog.string.regExpEscape=function(a){return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=String.prototype.repeat?function(a,b){return a.repeat(b)}:function(a,b){return Array(b+1).join(a)};
+goog.string.padNumber=function(a,b,c){if(!Number.isFinite(a))return String(a);a=void 0!==c?a.toFixed(c):String(a);c=a.indexOf(".");-1===c&&(c=a.length);const d="-"===a[0]?"-":"";d&&(a=a.substring(1));return d+goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.getRandomString=function(){return Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^goog.now()).toString(36)};
+goog.string.compareVersions=goog.string.internal.compareVersions;goog.string.hashCode=function(a){let b=0;for(let c=0;c<a.length;++c)b=31*b+a.charCodeAt(c)>>>0;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};goog.string.toNumber=function(a){const b=Number(a);return 0==b&&goog.string.isEmptyOrWhitespace(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};
+goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};goog.string.toTitleCase=function(a,b){b="string"===typeof b?goog.string.regExpEscape(b):"\\s";return a.replace(new RegExp("(^"+(b?"|["+b+"]+":"")+")([a-z])","g"),function(c,d,e){return d+e.toUpperCase()})};
+goog.string.capitalize=function(a){return String(a.charAt(0)).toUpperCase()+String(a.slice(1)).toLowerCase()};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return"string"===typeof a?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);const d=[];for(;0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};
+goog.string.lastComponent=function(a,b){if(b)"string"==typeof b&&(b=[b]);else return a;let c=-1;for(let d=0;d<b.length;d++){if(""==b[d])continue;const e=a.lastIndexOf(b[d]);e>c&&(c=e)}return-1==c?a:a.slice(c+1)};
+goog.string.editDistance=function(a,b){const c=[],d=[];if(a==b)return 0;if(!a.length||!b.length)return Math.max(a.length,b.length);for(var e=0;e<b.length+1;e++)c[e]=e;for(e=0;e<a.length;e++){d[0]=e+1;for(var f=0;f<b.length;f++)d[f+1]=Math.min(d[f]+1,c[f+1]+1,c[f]+Number(a[e]!=b[f]));for(f=0;f<c.length;f++)c[f]=d[f]}return d[b.length]};goog.string.path={};goog.string.path.baseName=function(a){const b=a.lastIndexOf("/")+1;return a.slice(b)};goog.string.path.basename=goog.string.path.baseName;goog.string.path.dirname=function(a){const b=a.lastIndexOf("/")+1;a=a.slice(0,b);/^\/+$/.test(a)||(a=a.replace(/\/+$/,""));return a};goog.string.path.extension=function(a){a=goog.string.path.baseName(a).replace(/\.+/g,".");const b=a.lastIndexOf(".");return 0>=b?"":a.slice(b+1)};
+goog.string.path.join=function(a){let b=arguments[0];for(let c=1;c<arguments.length;c++){const d=arguments[c];b=goog.string.startsWith(d,"/")?d:""==b||goog.string.endsWith(b,"/")?b+d:b+("/"+d)}return b};
+goog.string.path.normalizePath=function(a){if(""==a)return".";let b="";goog.string.startsWith(a,"/")&&(b="/",goog.string.startsWith(a,"//")&&!goog.string.startsWith(a,"///")&&(b="//"));a=a.split("/");const c=[];for(let d=0;d<a.length;d++){const e=a[d];""!=e&&"."!=e&&(".."!=e||!b&&!c.length||".."==module$contents$goog$array_peek(c)?c.push(e):c.pop())}return b+c.join("/")||"."};goog.string.path.split=function(a){const b=goog.string.path.dirname(a);a=goog.string.path.baseName(a);return[b,a]};const DEBUG_WASI$$module$src$filesystem$wasi=!1;function assertLeadingSlash$$module$src$filesystem$wasi(a){return/^\//g.test(a)?a:`/${a}`}function removeLeadingSlash$$module$src$filesystem$wasi(a){return a.replace(/^\//g,"")}function shouldOpenReader$$module$src$filesystem$wasi(a){return(a&(WASI_RIGHT_FD_READ$$module$src$filesystem$constants|WASI_RIGHT_FD_READDIR$$module$src$filesystem$constants))!==goog.global.BigInt(0)}
+function performanceNowPoly$$module$src$filesystem$wasi(){if("undefined"===typeof performance||"undefined"===typeof performance.now){const a=Date.now();return Date.now()-a}return performance.now()}function concatUint8Arrays$$module$src$filesystem$wasi(a){var b=a.reduce((d,e)=>d+e.length,0);if(0!==a.length){b=new Uint8Array(b);var c=0;for(const d of a)b.set(d,c),c+=d.length;return b}}
+const WASI$$module$src$filesystem$wasi=function({}){this.fd=Array.from({length:4});this.fd[0]={fd:0,path:"/dev/stdin",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[1]={fd:1,path:"/dev/stdout",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[2]={fd:2,path:"/dev/stderr",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.fd[3]={fd:3,path:"/",seekPos:goog.global.BigInt(0),buffers:[],open:!1};this.getMemory=this.getMemory.bind(this);this.CPUTIME_START=0};
+WASI$$module$src$filesystem$wasi.prototype.start=function(a){this.CPUTIME_START=performanceNowPoly$$module$src$filesystem$wasi();a.exports._start()};WASI$$module$src$filesystem$wasi.prototype.getImports=function(a){const b={};a=WebAssembly.Module.imports(a);for(const c of a)"function"===c.kind&&c.module.startsWith("wasi_")&&("object"!==typeof b[c.module]&&(b[c.module]={}),b[c.module][c.name]=this[c.name].bind(this));return b};
+WASI$$module$src$filesystem$wasi.prototype.setMemory=function(a){this.memory=a};WASI$$module$src$filesystem$wasi.prototype.getMemory=function(){this.view&&this.view.buffer&&this.view.buffer.byteLength||(this.view=new DataView(this.memory.buffer));return this.view};WASI$$module$src$filesystem$wasi.prototype.msToNs=function(a){const b=Math.trunc(a);a=goog.global.BigInt(Math.round(1E6*(a-b)));return goog.global.BigInt(b)*goog.global.BigInt(1E6)+a};
+WASI$$module$src$filesystem$wasi.prototype.now=function(a){switch(a){case WASI_CLOCK_MONOTONIC$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi());case WASI_CLOCK_REALTIME$$module$src$filesystem$constants:return this.msToNs(Date.now());case WASI_CLOCK_PROCESS_CPUTIME_ID$$module$src$filesystem$constants:case WASI_CLOCK_THREAD_CPUTIME_ID$$module$src$filesystem$constants:return Math.floor(performanceNowPoly$$module$src$filesystem$wasi()-this.CPUTIME_START);
+default:return 0}};WASI$$module$src$filesystem$wasi.prototype.args_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,module$src$filesystem$constants);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.args_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.clock_res_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("args_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.clock_time_get=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("clock_time_get",a,b,c,arguments);const d=this.getMemory(),e=this.now(a);d.setBigUint64(c,goog.global.BigInt(e),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.environ_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.environ_sizes_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("environ_sizes_get",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_advise=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_advise",a,b,c,d,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_allocate=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_allocate",a,b,c,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_close=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_close",a,arguments);this.fd[a]&&(this.fd[a].open=!1);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_datasync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_datasync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_get",a,b,arguments);const c=this.getMemory();c.setUint8(b+4,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);c.setUint16(b+2,0,!0);c.setUint16(b+4,0,!0);c.setBigUint64(b+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_BASE$$module$src$filesystem$constants),!0);c.setBigUint64(b+8+8,goog.global.BigInt(RIGHTS_REGULAR_FILE_INHERITING$$module$src$filesystem$constants),
+!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_flags=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_flags",a,b,arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_fdstat_set_rights=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_fdstat_set_rights",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_filestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_get",a,b,arguments);let c=0;this.fd[a]&&(c=this.fd[a].buffers.reduce(function(e,f){return e+(null==f?void 0:f.byteLength)?null==f?void 0:f.byteLength:0},0));const d=this.getMemory();d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(a),!0);b+=8;d.setUint8(b,WASI_FILETYPE_REGULAR_FILE$$module$src$filesystem$constants);b+=8;d.setBigUint64(b,
+goog.global.BigInt(1),!0);b+=8;d.setBigUint64(b,goog.global.BigInt(c),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);b+=8;d.setBigUint64(b,this.msToNs(this.CPUTIME_START),!0);d.setBigUint64(b+8,this.msToNs(this.CPUTIME_START),!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_size=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_size",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_filestat_set_times=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_filestat_set_times",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_pread=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_pread",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_prestat_dir_name=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_dir_name",a,b,c,this.fd[a]);if(!this.fd[a]&&!this.fd[a-1])return WASI_EBADF$$module$src$filesystem$constants;({path:c}=this.fd[a]);a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);(new Uint8Array(a.buffer)).set(c,b);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_prestat_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_prestat_get",a,b,this.fd[a]);if(!this.fd[a])return WASI_EBADF$$module$src$filesystem$constants;var {path:c}=this.fd[a];a=this.getMemory();c=encoder$$module$src$utils$text_encoders.encode(c);a.setUint8(b,WASI_PREOPENTYPE_DIR$$module$src$filesystem$constants);a.setUint32(b+4,c.byteLength,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_pwrite=function(a,b,c,d,e){console.log("fd_pwrite",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_read=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_read",a,b,c,d,arguments);const e=this.fd[a]&&this.fd[a].buffers;var f=e.reduce((l,p)=>l+p.length,0);const g=this.getMemory();if(e&&0!==e.length){var h=Number(this.fd[a].seekPos),k=0,n=!1;if(h>=f)return k=g.getUint32(b,!0),g.setUint8(k,"\x00"),g.setUint32(d,0,!0),WASI_ESUCCESS$$module$src$filesystem$constants;for(f=0;f<c;f++){var m=b+8*f;const l=g.getUint32(m,!0);m=g.getUint32(m+
+4,!0);n||(k+=m,Array.from({length:m},(p,q)=>q).reduce((p,q)=>{if(n)return p;const [u,t]=p;let x=p=0,r=!1,y=0,v;if(0===q)for(;!r;)v=e[p]?e[p].byteLength:0,y<=h&&v+y>h?(r=!0,x=h-y):(y+=v,p+=1);else p=u,x=t;e[p]?(g.setUint8(l+q,e[p][x]),x+1>=e[p].byteLength?(p=u+1,x=0):x+=1):(g.setUint8(l+q,"\x00"),h+=q,n=!0);return[p,x]},[0,0]),n||(h+=m))}this.fd[a].seekPos=goog.global.BigInt(h);g.setUint32(d,k,!0);return WASI_ESUCCESS$$module$src$filesystem$constants}console.error("Reading non existent file",a,this.fd[a])};
+WASI$$module$src$filesystem$wasi.prototype.fd_readdir=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_readdir",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_renumber=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_renumber",a,b,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_seek=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_seek",a,b,c,d,arguments);const e=this.getMemory();switch(c){case WASI_WHENCE_CUR$$module$src$filesystem$constants:var f;this.fd[a].seekPos=(null!=(f=this.fd[a].seekPos)?f:goog.global.BigInt(0))+goog.global.BigInt(b);break;case WASI_WHENCE_END$$module$src$filesystem$constants:f=(this.fd[a].buffers||[]).reduce((g,h)=>g+h.length,0);this.fd[a].seekPos=BigInt(f)+BigInt(b);break;
+case WASI_WHENCE_SET$$module$src$filesystem$constants:this.fd[a].seekPos=BigInt(b)}e.setBigUint64(d,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.fd_sync=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_sync",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_tell=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_tell",a,b,arguments);const c=this.getMemory();this.fd[a].seekPos||(this.fd[a].seekPos=goog.global.BigInt(0));c.setBigUint64(b,this.fd[a].seekPos,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.fd_write=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("fd_write",{fd:a,iovs:b,iovsLength:c,nwritten:d});const e=this.getMemory();this.fd[a].buffers=this.fd[a].buffers||[];this.fd[a].buffers=0<this.fd[a].buffers.length?[concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)]:this.fd[a].buffers;let f=0;for(let k=0;k<c;k++){var g=b+8*k,h=e.getUint32(g,!0);g=e.getUint32(g+4,!0);f+=g;h=new Uint8Array(e.buffer,h,g);if(this.fd[a].buffers[0]&&
+this.fd[a].seekPos<this.fd[a].buffers[0].length){const n=Number(this.fd[a].seekPos);h.slice(0,g).forEach((m,l)=>{this.fd[a].buffers[0][n+l]=m})}else this.fd[a].buffers.push(h.slice(0,g))}this.fd[a].seekPos+=goog.global.BigInt(f);e.setUint32(d,f,!0);[1,2].includes(a)&&console.log(decoder$$module$src$utils$text_encoders.decode(concatUint8Arrays$$module$src$filesystem$wasi(this.fd[a].buffers)));return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_create_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_create_directory",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_filestat_get=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_get",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_filestat_set_times=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_filestat_set_times",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_link=function(a,b,c,d,e,f,g){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_link",a,b,c,d,e,f,g,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_open=function(a,b,c,d,e,f,g,h,k){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_open",a,b,c,d,e,f,g,h,k,arguments);const n=this.getMemory();var m=(this.fd[a]||{path:"/"}).path,l=new Uint8Array(n.buffer,c,d);l=decoder$$module$src$utils$text_encoders.decode(l);const p=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(goog.string.path.join(3===a?"":m,l)));DEBUG_WASI$$module$src$filesystem$wasi&&console.log(";; opening path",
+p,"withREader",shouldOpenReader$$module$src$filesystem$wasi(f));if(p.startsWith("/..")||"/._"===p||"/.AppleDouble"===p)return WASI_EBADF$$module$src$filesystem$constants;(m=Object.values(this.fd).find(q=>q.path===p&&Array.isArray(q.buffers)))?l=m.fd:(l=this.fd.length,this.fd[l]={fd:l});this.fd[l]={...this.fd[l],path:p,type:"file",seekPos:goog.global.BigInt(0),buffers:m?this.fd[l].buffers:[],open:!0};shouldOpenReader$$module$src$filesystem$wasi(f)&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("should open a read handle for",
+p);n.setUint32(k,l,!0);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_readlink=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_readlink",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_remove_directory=function(a,b,c){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_remove_directory",a,b,c);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_rename=function(a,b,c,d,e,f){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_rename",a,b,c,d,e,f,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.path_symlink=function(a,b,c,d,e){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_symlink",a,b,c,d,e,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.path_unlink_file=function(a,b,c){3<a&&DEBUG_WASI$$module$src$filesystem$wasi&&console.log("path_unlink_file",a,b,c,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.poll_oneoff=function(a,b,c,d){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("poll_oneoff",a,b,c,d,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.proc_exit=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_exit",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.proc_raise=function(a){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("proc_raise",a,arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.random_get=function(a,b){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("random_get",a,b);return WASI_ESUCCESS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sched_yield=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sched_yield",arguments);return WASI_ESUCCESS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.sock_recv=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_recv",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.sock_send=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_send",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};
+WASI$$module$src$filesystem$wasi.prototype.sock_shutdown=function(){DEBUG_WASI$$module$src$filesystem$wasi&&console.log("sock_shutdown",arguments);return WASI_ENOSYS$$module$src$filesystem$constants};WASI$$module$src$filesystem$wasi.prototype.findBuffers=function(a){const b=Object.values(this.fd).find(({path:c})=>c===a);return[b&&b.buffers,b.fd]};
+WASI$$module$src$filesystem$wasi.prototype.readdir=function(a){const b=(assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a))+"/").replace("//","/"),c=[];Object.values(this.fd).forEach(({path:d})=>!/\//g.test(d.replace(b,""))&&c.push(d));return c.map(d=>removeLeadingSlash$$module$src$filesystem$wasi(d.replace(b,""))).filter(d=>!!d)};
+WASI$$module$src$filesystem$wasi.prototype.writeFile=function(a,b){const c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));a=Object.keys(this.fd).length;const d=Object.values(this.fd).find(({path:e})=>e===c);this.fd[a]={fd:a,path:c,seekPos:goog.global.BigInt(0),buffers:[b]};d&&delete this.fd[d]};
+WASI$$module$src$filesystem$wasi.prototype.appendFile=function(a,b){var c=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));[c]=this.findBuffers(c);c?c.push(b):console.error(`Can't append to non-existing file ${a}`)};
+WASI$$module$src$filesystem$wasi.prototype.readFile=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),[c,d]=this.findBuffers(b);this.fd[d]&&this.fd[d].open&&console.warn(`readFile: file ${a} hasn't been closed yet!`);if(c)return concatUint8Arrays$$module$src$filesystem$wasi(c)};
+WASI$$module$src$filesystem$wasi.prototype.readStdOut=function(){const a=Object.values(this.fd[0]);return concatUint8Arrays$$module$src$filesystem$wasi(a&&a.buffers||[])};WASI$$module$src$filesystem$wasi.prototype.unlink=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a));(a=Object.values(this.fd).find(({path:c})=>c===b))?delete this.fd[a]:console.error(`While trying to unlink ${b}, path not found`)};
+WASI$$module$src$filesystem$wasi.prototype.mkdir=function(a){const b=assertLeadingSlash$$module$src$filesystem$wasi((0,goog.string.path.normalizePath)(a)),c=[];Object.values(this.fd).forEach(({path:d})=>d.startsWith(b)&&c.push(d));0<c.length?console.warn(`mkdir: path ${a} already exists`):(a=Object.keys(this.fd).length,this.fd[a]={fd:a,path:b})};var module$src$filesystem$wasi={};module$src$filesystem$wasi.WASI=WASI$$module$src$filesystem$wasi;const CompressionMethod$$module$src$zlib$zlib={DEFLATE:8,RESERVED:15};var module$src$zlib$zlib={};module$src$zlib$zlib.CompressionMethod=CompressionMethod$$module$src$zlib$zlib;/*
+ zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */
+function Huffman$$module$src$zlib$huffman(a){const b=a.length;let c=0,d=Number.POSITIVE_INFINITY,e,f,g,h;let k,n;for(k=0;k<b;++k)a[k]>c&&(c=a[k]),a[k]<d&&(d=a[k]);const m=1<<c,l=new Uint32Array(m);e=1;f=0;for(g=2;e<=c;){for(k=0;k<b;++k)if(a[k]===e){h=0;var p=f;for(n=0;n<e;++n)h=h<<1|p&1,p>>=1;p=e<<16|k;for(n=h;n<m;n+=g)l[n]=p;++f}++e;f<<=1;g<<=1}return[l,c,d]}var module$src$zlib$huffman={};module$src$zlib$huffman.Huffman=Huffman$$module$src$zlib$huffman;const ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate=32768;
+function RawInflate$$module$src$zlib$rawinflate(a,b){this.blocks=[];this.bufferSize=ZLIB_RAW_INFLATE_BUFFER_SIZE$$module$src$zlib$rawinflate;this.bitsbuflen=this.bitsbuf=this.ip=this.totalpos=0;this.input=new Uint8Array(a);this.bfinal=!1;this.bufferType=RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE;this.resize=!1;if(b||!(b={}))b.index&&(this.ip=b.index),b.bufferSize&&(this.bufferSize=b.bufferSize),b.bufferType&&(this.bufferType=b.bufferType),b.resize&&(this.resize=b.resize);switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.op=
+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;this.output=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength+this.bufferSize+RawInflate$$module$src$zlib$rawinflate.MaxCopyLength);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.op=0;this.output=new Uint8Array(this.bufferSize);break;default:throw Error("invalid inflate mode");}}RawInflate$$module$src$zlib$rawinflate.BufferType={BLOCK:0,ADAPTIVE:1};
+RawInflate$$module$src$zlib$rawinflate.prototype.decompress=function(){for(;!this.bfinal;)this.parseBlock();switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:return this.concatBufferBlock();case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:return this.concatBufferDynamic();default:throw Error("invalid inflate mode");}};RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength=32768;RawInflate$$module$src$zlib$rawinflate.MaxCopyLength=258;
+RawInflate$$module$src$zlib$rawinflate.Order=function(a){return new Uint16Array(a)}([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);RawInflate$$module$src$zlib$rawinflate.LengthCodeTable=function(a){return new Uint16Array(a)}([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,258,258]);RawInflate$$module$src$zlib$rawinflate.LengthExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0]);
+RawInflate$$module$src$zlib$rawinflate.DistCodeTable=function(a){return new Uint16Array(a)}([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577]);RawInflate$$module$src$zlib$rawinflate.DistExtraTable=function(a){return new Uint8Array(a)}([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);
+RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable=function(a){return a}(function(){const a=new Uint8Array(288);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=143>=b?8:255>=b?9:279>=b?7:8;return Huffman$$module$src$zlib$huffman(a)}());RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable=function(a){return a}(function(){const a=new Uint8Array(30);let b,c;b=0;for(c=a.length;b<c;++b)a[b]=5;return Huffman$$module$src$zlib$huffman(a)}());
+RawInflate$$module$src$zlib$rawinflate.prototype.parseBlock=function(){let a=this.readBits(3);a&1&&(this.bfinal=!0);a>>>=1;switch(a){case 0:this.parseUncompressedBlock();break;case 1:this.parseFixedHuffmanBlock();break;case 2:this.parseDynamicHuffmanBlock();break;default:throw Error("unknown BTYPE: "+a);}};
+RawInflate$$module$src$zlib$rawinflate.prototype.readBits=function(a){let b=this.bitsbuf,c=this.bitsbuflen;const d=this.input;let e=this.ip;if(e+(a-c+7>>3)>=d.length)throw Error("input buffer is broken");for(;c<a;)b|=d[e++]<<c,c+=8;this.bitsbuf=b>>>a;this.bitsbuflen=c-a;this.ip=e;return b&(1<<a)-1};
+RawInflate$$module$src$zlib$rawinflate.prototype.readCodeByTable=function(a){let b=this.bitsbuf,c=this.bitsbuflen;var d=this.input;let e=this.ip;var f=d.length;const g=a[0];for(a=a[1];c<a&&!(e>=f);)b|=d[e++]<<c,c+=8;d=g[b&(1<<a)-1];f=d>>>16;if(f>c)throw Error("invalid code length: "+f);this.bitsbuf=b>>f;this.bitsbuflen=c-f;this.ip=e;return d&65535};
+RawInflate$$module$src$zlib$rawinflate.prototype.parseUncompressedBlock=function(){const a=this.input;let b=this.ip,c=this.output,d=this.op;var e=a.length;let f;const g=c.length;this.bitsbuflen=this.bitsbuf=0;if(b+1>=e)throw Error("invalid uncompressed block header: LEN");f=a[b++]|a[b++]<<8;if(b+1>=e)throw Error("invalid uncompressed block header: NLEN");e=a[b++]|a[b++]<<8;if(f===~e)throw Error("invalid uncompressed block header: length verify");if(b+f>a.length)throw Error("input buffer is broken");
+switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:for(;d+f>c.length;)e=g-d,f-=e,c.set(a.subarray(b,b+e),d),d+=e,b+=e,this.op=d,c=this.expandBufferBlock(),d=this.op;break;case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:for(;d+f>c.length;)c=this.expandBufferAdaptive({fixRatio:2});break;default:throw Error("invalid inflate mode");}c.set(a.subarray(b,b+f),d);this.ip=b+f;this.op=d+f;this.output=c};
+RawInflate$$module$src$zlib$rawinflate.prototype.parseFixedHuffmanBlock=function(){switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(RawInflate$$module$src$zlib$rawinflate.FixedLiteralLengthTable,RawInflate$$module$src$zlib$rawinflate.FixedDistanceTable);
+break;default:throw Error("invalid inflate mode");}};
+RawInflate$$module$src$zlib$rawinflate.prototype.parseDynamicHuffmanBlock=function(){var a=this.readBits(5)+257,b=this.readBits(5)+1,c=this.readBits(4)+4,d=new Uint8Array(RawInflate$$module$src$zlib$rawinflate.Order.length);let e;for(e=0;e<c;++e)d[RawInflate$$module$src$zlib$rawinflate.Order[e]]=this.readBits(3);d=Huffman$$module$src$zlib$huffman(d);c=new Uint8Array(a+b);e=0;for(b=a+b;e<b;){var f=this.readCodeByTable(d);switch(f){case 16:for(f=3+this.readBits(2);f--;)c[e++]=g;break;case 17:for(f=
+3+this.readBits(3);f--;)c[e++]=0;var g=0;break;case 18:for(f=11+this.readBits(7);f--;)c[e++]=0;g=0;break;default:g=c[e++]=f}}g=Huffman$$module$src$zlib$huffman(c.subarray(0,a));a=Huffman$$module$src$zlib$huffman(c.subarray(a));switch(this.bufferType){case RawInflate$$module$src$zlib$rawinflate.BufferType.ADAPTIVE:this.decodeHuffmanAdaptive(g,a);break;case RawInflate$$module$src$zlib$rawinflate.BufferType.BLOCK:this.decodeHuffmanBlock(g,a);break;default:throw Error("invalid inflate mode");}};
+RawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanBlock=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;const e=c.length-RawInflate$$module$src$zlib$rawinflate.MaxCopyLength;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,n=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,l=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=
+e&&(this.op=d,c=this.expandBufferBlock(),d=this.op),c[d++]=f;else for(f-=257,h=k[f],0<n[f]&&(h+=this.readBits(n[f])),f=this.readCodeByTable(b),g=m[f],0<l[f]&&(g+=this.readBits(l[f])),d>=e&&(this.op=d,c=this.expandBufferBlock(),d=this.op);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};
+RawInflate$$module$src$zlib$rawinflate.prototype.decodeHuffmanAdaptive=function(a,b){let c=this.output,d=this.op;this.currentLitlenTable=a;let e=c.length;var f;let g,h;const k=RawInflate$$module$src$zlib$rawinflate.LengthCodeTable,n=RawInflate$$module$src$zlib$rawinflate.LengthExtraTable,m=RawInflate$$module$src$zlib$rawinflate.DistCodeTable,l=RawInflate$$module$src$zlib$rawinflate.DistExtraTable;for(;256!==(f=this.readCodeByTable(a));)if(256>f)d>=e&&(c=this.expandBufferAdaptive(),e=c.length),c[d++]=
+f;else for(f-=257,h=k[f],0<n[f]&&(h+=this.readBits(n[f])),f=this.readCodeByTable(b),g=m[f],0<l[f]&&(g+=this.readBits(l[f])),d+h>e&&(c=this.expandBufferAdaptive(),e=c.length);h--;)c[d]=c[d++-g];for(;8<=this.bitsbuflen;)this.bitsbuflen-=8,this.ip--;this.op=d};
+RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferBlock=function(a){a=new Uint8Array(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength);const b=this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,c=this.output;a.set(c.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,a.length));this.blocks.push(a);this.totalpos+=a.length;c.set(c.subarray(b,b+RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));this.op=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;
+return c};RawInflate$$module$src$zlib$rawinflate.prototype.expandBufferAdaptive=function(a){let b=Math.trunc(this.input.length/this.ip+1);const c=this.input,d=this.output;a&&("number"===typeof a.fixRatio&&(b=a.fixRatio),"number"===typeof a.addRatio&&(b+=a.addRatio));2>b?(a=(c.length-this.ip)/this.currentLitlenTable[2],a=Math.trunc(a/2*258),a=a<d.length?d.length+a:d.length<<1):a=d.length*b;a=new Uint8Array(a);a.set(d);return this.output=a};
+RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferBlock=function(){let a=0;const b=this.output,c=this.blocks;let d;const e=new Uint8Array(this.totalpos+(this.op-RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength));let f,g,h,k;if(0===c.length)return this.output.subarray(RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength,this.op);f=0;for(g=c.length;f<g;++f)for(d=c[f],h=0,k=d.length;h<k;++h)e[a++]=d[h];f=RawInflate$$module$src$zlib$rawinflate.MaxBackwardLength;for(g=this.op;f<
+g;++f)e[a++]=b[f];this.blocks=[];return this.buffer=e};RawInflate$$module$src$zlib$rawinflate.prototype.concatBufferDynamic=function(){let a;const b=this.op;this.resize?(a=new Uint8Array(b),a.set(this.output.subarray(0,b))):a=this.output.subarray(0,b);return this.buffer=a};var module$src$zlib$rawinflate={};module$src$zlib$rawinflate.RawInflate=RawInflate$$module$src$zlib$rawinflate;function Util$$module$src$zlib$util(){}Util$$module$src$zlib$util.stringToByteArray=function(a){a=[...a];let b,c;b=0;for(c=a.length;b<c;b++)a[b]=(a[b].charPointAt(0)&255)>>>0;return new Uint8Array([a])};var module$src$zlib$util={};module$src$zlib$util.Util=Util$$module$src$zlib$util;function Adler32$$module$src$zlib$adler32(a){"string"===typeof a&&(a=Util$$module$src$zlib$util.stringToByteArray(a));return Adler32$$module$src$zlib$adler32.update(1,a)}Adler32$$module$src$zlib$adler32.update=function(a,b){let c=a&65535;a=a>>>16&65535;let d=b.length,e,f=0;for(;0<d;){e=d>Adler32$$module$src$zlib$adler32.OptimizationParameter?Adler32$$module$src$zlib$adler32.OptimizationParameter:d;d-=e;do c+=b[f++],a+=c;while(--e);c%=65521;a%=65521}return(a<<16|c)>>>0};
+Adler32$$module$src$zlib$adler32.OptimizationParameter=1024;var module$src$zlib$adler32={};module$src$zlib$adler32.Adler32=Adler32$$module$src$zlib$adler32;function Inflate$$module$src$zlib$inflate(a,b){this.input=a;this.ip=0;if(b||!(b={}))b.index&&(this.ip=b.index),b.verify&&(this.verify=b.verify);const c=a[this.ip++],d=a[this.ip++];switch(c&15){case CompressionMethod$$module$src$zlib$zlib.DEFLATE:this.method=CompressionMethod$$module$src$zlib$zlib.DEFLATE;break;default:throw Error("unsupported compression method");}if(0!==((c<<8)+d)%31)throw Error("invalid fcheck flag:"+((c<<8)+d)%31);if(d&32)throw Error("fdict flag is not supported");this.rawinflate=
+new RawInflate$$module$src$zlib$rawinflate(a,{index:this.ip,bufferSize:b.bufferSize,bufferType:b.bufferType,resize:b.resize})}Inflate$$module$src$zlib$inflate.BufferType=RawInflate$$module$src$zlib$rawinflate.BufferType;
+Inflate$$module$src$zlib$inflate.prototype.decompress=function(){var a=this.input;const b=this.rawinflate.decompress();this.ip=this.rawinflate.ip;if(this.verify&&(a=(a[this.ip++]<<24|a[this.ip++]<<16|a[this.ip++]<<8|a[this.ip++])>>>0,a!==Adler32$$module$src$zlib$adler32(b)))throw Error("invalid adler-32 checksum");return b};var module$src$zlib$inflate={};module$src$zlib$inflate.Inflate=Inflate$$module$src$zlib$inflate;const PAGE_SIZE$$module$src$module=65536,PAGES_PER_MB$$module$src$module=16,csoundWasiJsMessageCallback$$module$src$module=({memory:a,messagePort:b,streamBuffer:c})=>function(d,e,f,g){if(a){d=new Uint8Array(a.buffer,g,f);d=uint2String$$module$src$utils$text_encoders(d);var h=/\n$/g.test(d);e=/^\n/g.test(d);var k=d.split("\n").filter(m=>0<m.length),n=[];if(0===k.length&&h||e)n.push(c.join("")),clearArray$$module$src$utils$clear_array(c);k.forEach((m,l)=>{l+1===k.length?h?0===l?(n.push(c.join("")+m),
+clearArray$$module$src$utils$clear_array(c)):n.push(m):c.push(m):0===l?(n.push(c.join("")+m),clearArray$$module$src$utils$clear_array(c)):n.push(m)});n.forEach(m=>{m.replace(/(\r\n|\n|\r)/gm,"")&&b.post({log:m})})}},assertPluginExports$$module$src$module=a=>{if(a&&"object"===typeof a&&"object"===typeof a.exports){if(a.exports.__wasm_call_ctors){if(a.exports.csoundModuleCreate||a.exports.csound_opcode_init||a.exports.csound_fgen_init)return!0;console.error(a.exports,"A csound plugin turns out to be neither a plugin, opcode or module.\nPerhaps csdl.h or module.h wasn't imported correctly?");
+return!1}console.error("A csound plugin didn't export __wasm_call_ctors.\nPlease re-run wasm-ld with either --export-all or include --export=__wasm_call_ctors");return!1}console.error("Error instantiating a csound plugin, instance and/or export is missing!");return!1},getBinaryHeaderData$$module$src$module=a=>{function b(){let n=0,m=1;for(;;){const l=a[c++];n+=(l&127)*m;m*=128;if(!(l&128))break}return n}1836278016!==(new Uint32Array((new Uint8Array(a.subarray(0,24))).buffer))[0]&&console.error("Wasm magic number is missing!");
+if(0!==a[8])return logWasmModule$$module$src$logger("Dylink section wasn't found in wasm binary, assuming static wasm."),"static";let c=9;const d=b();c++;(0,goog.asserts.assert)(a[c]==="d".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="y".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="l".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="i".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="n".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="k".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]===
+".".codePointAt(0));c++;(0,goog.asserts.assert)(a[c]==="0".codePointAt(0));c+=3;const e=b(),f=b(),g=b(),h=b(),k=b();return{sectionSize:d,memorySize:e,memoryAlign:f,neededDynlibsCount:k,tableSize:g,tableAlign:h}},loadStaticWasm$$module$src$module=async({wasmBytes:a,wasi:b,messagePort:c})=>{const d=await WebAssembly.compile(a);a=new WebAssembly.Memory({initial:16384});const e=b.getImports(d);e.env=e.env||{};e.env.csoundLoadModules=()=>0;e.env.memory=a;e.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:e.env.memory,
+streamBuffer:[],messagePort:c});c=await WebAssembly.instantiate(d,e);b.setMemory(a);b.start(c);c.exports.__wasi_js_csoundSetMessageStringCallback();return[c,b]};
+var $jscompDefaultExport$$module$src$module=async function({wasmDataURI:a,withPlugins:b=[],messagePort:c}){var d={};const e=new WASI$$module$src$filesystem$wasi({preopens:{"/":"/"}});a=new Uint8Array(a);a=(new Inflate$$module$src$zlib$inflate(a)).decompress();var f=getBinaryHeaderData$$module$src$module(a);if("static"===f)return await loadStaticWasm$$module$src$module({messagePort:c,wasmBytes:a,wasmFs:d,wasi:e});const {memorySize:g,memoryAlign:h,tableSize:k}=f;b=await b.reduce(async(v,z)=>{v=await v;
+let B,w;try{B=new Uint8Array(z),w=getBinaryHeaderData$$module$src$module(B)}catch(C){console.error("Error in plugin",C)}w&&v.push({headerData:w,wasmPluginBytes:B});return v},[]);var n=128*PAGES_PER_MB$$module$src$module;d=Math.ceil((g+h)/PAGE_SIZE$$module$src$module);f=Math.ceil(b.reduce((v,{headerData:z})=>"static"===z?0:v+(z.memorySize+h),0)/PAGE_SIZE$$module$src$module);f=d+f+n;const m=new WebAssembly.Memory({initial:f,maximum:1024*PAGES_PER_MB$$module$src$module}),l=new WebAssembly.Table({initial:k+
+1,element:"anyfunc"});e.setMemory(m);const p=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);f=new WebAssembly.Global({value:"i32",mutable:!0},f*PAGE_SIZE$$module$src$module);n=new WebAssembly.Global({value:"i32",mutable:!1},n);const q=new WebAssembly.Global({value:"i32",mutable:!1},1),u=new WebAssembly.Global({value:"i32",mutable:!0},0);a=await WebAssembly.compile(a);const t=e.getImports(a);let x=[],r=d;t.env=t.env||{};t.env.memory=m;t.env.__indirect_function_table=
+l;t.env.__stack_pointer=p;t.env.__memory_base=n;t.env.__table_base=q;t.env.csoundLoadModules=v=>{x.forEach(z=>{void 0===y?console.error("csound-wasm internal: timing problem detected!"):dlinit$$module$src$dlinit(y,z,l,v)});return 0};t.env._ZTH5errno=function(){};t.env.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module({memory:m,messagePort:c,streamBuffer:[]});t.env.printDebugCallback=(v,z)=>{v=new Uint8Array(m.buffer,v,z);v=uint2String$$module$src$utils$text_encoders(v);console.log(v)};
+t["GOT.mem"]=t["GOT.mem"]||{};t["GOT.mem"].__heap_base=f;t["GOT.func"]=t["GOT.func"]||{};const y=await WebAssembly.instantiate(a,t);c=Object.assign({},y.exports);a={};a.exports=Object.assign(c,{memory:m});x=await b.reduce(async(v,{headerData:z,wasmPluginBytes:B})=>{v=await v;try{const {memorySize:w,memoryAlign:C,tableSize:F}=z,E=await WebAssembly.compile(B),A=e.getImports(E),G=new WebAssembly.Global({value:"i32",mutable:!1},r*PAGE_SIZE$$module$src$module);l.grow(F);A.env=Object.assign({},A.env);A.env.memory=
+m;A.env.__indirect_function_table=l;A.env.__memory_base=G;A.env.__stack_pointer=p;A.env.__table_base=q;A.env.csoundLoadModules=u;delete A.env.csoundWasiJsMessageCallback;r+=Math.ceil((w+C)/PAGE_SIZE$$module$src$module);const D=await WebAssembly.instantiate(E,A);assertPluginExports$$module$src$module(D)&&(D.exports.__wasm_call_ctors(),v.push(D))}catch(w){console.error("Error while compiling csound-plugin",w)}return v},[]);e.start(a);a.exports.__wasi_js_csoundSetMessageStringCallback();return[a,e]},
+module$src$module={};module$src$module.csoundWasiJsMessageCallback=csoundWasiJsMessageCallback$$module$src$module;module$src$module.default=$jscompDefaultExport$$module$src$module;function MessagePortState$$module$src$utils$message_port_state(){}MessagePortState$$module$src$utils$message_port_state.prototype.ready=!1;MessagePortState$$module$src$utils$message_port_state.prototype.port=void 0;MessagePortState$$module$src$utils$message_port_state.prototype.post=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.broadcastPlayState=()=>{};MessagePortState$$module$src$utils$message_port_state.prototype.workerState=void 0;
+MessagePortState$$module$src$utils$message_port_state.prototype.vanillaWorkerState=void 0;var $jscompDefaultExport$$module$src$utils$message_port_state=MessagePortState$$module$src$utils$message_port_state,module$src$utils$message_port_state={};module$src$utils$message_port_state.MessagePortState=MessagePortState$$module$src$utils$message_port_state;module$src$utils$message_port_state.default=$jscompDefaultExport$$module$src$utils$message_port_state;class ScriptProcessorNodeSingleThread$$module$src$mains$spn_main{constructor({audioContext:a,inputChannelCount:b=1,outputChannelCount:c=2}){this.publicEvents=new PublicEventAPI$$module$src$events(this);this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.audioContext=a;this.onaudioprocess=this.onaudioprocess.bind(this);this.currentPlayState=void 0;this.onPlayStateChange=this.onPlayStateChange.bind(this);this.start=this.start.bind(this);this.stop=this.stop.bind(this);this.pause=
+this.pause.bind(this);this.resume=this.resume.bind(this);this.csoundApi=this.csoundInstance=this.wasm=void 0;this.exportApi={};this.spn=a.createScriptProcessor(0,b,c);this.spn.audioContext=a;this.spn.inputChannelCount=b;this.spn.outputChannelCount=c;this.spn.onaudioprocess=this.onaudioprocess;this.node=this.spn;this.exportApi.getNode=async()=>this.spn;this.sampleRate=a.sampleRate;this.messagePort=new $jscompDefaultExport$$module$src$utils$message_port_state;this.messagePort.post=d=>messageEventHandler$$module$src$mains$messages_main(this)({data:{log:d}});
+this.messagePort.ready=!0;this.started=this.running=!1}async terminateInstance(){this.spn&&(this.spn.disconnect(),delete this.spn);this.audioContext&&("closed"!==this.audioContext.state&&await this.audioContext.close(),delete this.audioContext);this.publicEvents&&(this.publicEvents.terminateInstance(),delete this.publicEvents);Object.keys(this.exportApi).forEach(a=>delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}async onPlayStateChange(a){if(this.publicEvents&&this.currentPlayState!==
+a)switch(this.currentPlayState=a,a){case "realtimePerformanceStarted":this.publicEvents.triggerRealtimePerformanceStarted(this);break;case "realtimePerformanceEnded":this.publicEvents.triggerRealtimePerformanceEnded(this);break;case "realtimePerformancePaused":this.publicEvents.triggerRealtimePerformancePaused(this);break;case "realtimePerformanceResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);break;case "renderStarted":this.publicEvents.triggerRenderStarted(this);break;case "renderEnded":this.publicEvents.triggerRenderEnded(this)}}async pause(){this.started&&
+this.running&&(this.running=!1,this.onPlayStateChange("realtimePerformancePaused"))}async resume(){this.started&&!this.running&&(this.running=!0,this.onPlayStateChange("realtimePerformanceResumed"))}async stop(){if(this.started){this.eventPromises.createStopPromise();const a=this.csoundApi.csoundStop(this.csoundInstance);await this.eventPromises.waitForStop();this.watcherStdOut&&(this.watcherStdOut.close(),delete this.watcherStdOut);this.watcherStdErr&&(this.watcherStdErr.close(),delete this.watcherStdErr);
+delete this.csoundInputBuffer;delete this.csoundOutputBuffer;delete this.currentPlayState;return a}}async start(){if(this.csoundApi){var a=(this.csoundApi.csoundGetOutputName(this.csoundInstance)||"test.wav").includes("dac");if(a&&"realtimePerformanceStarted"!==this.currentPlayState){this.result=0;this.csoundApi.csoundSetOption(this.csoundInstance,"--sample-rate="+this.sampleRate);this.nchnls_i=this.nchnls=-1;this.cnt=this.ksmps=a=this.csoundApi.csoundGetKsmps(this.csoundInstance);this.nchnls=this.csoundApi.csoundGetNchnls(this.csoundInstance);
+this.nchnls_i=this.csoundApi.csoundGetNchnlsInput(this.csoundInstance);var b=this.csoundApi.csoundGetSpout(this.csoundInstance);this.csoundOutputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,b,a*this.nchnls);b=this.csoundApi.csoundGetSpin(this.csoundInstance);this.csoundInputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,b,a*this.nchnls_i);this.zerodBFS=this.csoundApi.csoundGet0dBFS(this.csoundInstance);this.publicEvents.triggerOnAudioNodeCreated(this.spn);this.eventPromises.createStartPromise();
+a=this.csoundApi.csoundStart(this.csoundInstance);this.csoundApi._isRequestingRtMidiInput(this.csoundInstance)&&requestMidi$$module$src$utils$request_midi({onMidiMessage:({data:c})=>this.csoundApi.csoundPushMidiMessage(this.csoundInstance,c[0],c[1],c[2])});this.running=!0;await this.eventPromises.waitForStart();return a}if(!a&&"renderStarted"!==this.currentPlayState)return a=this.csoundApi.csoundStart(this.csoundInstance),this.onPlayStateChange("renderStarted"),setTimeout(()=>{let c=0;for(;0===c&&
+this.csoundApi&&this.csoundInstance;)c=this.csoundApi.csoundPerformKsmps(this.csoundInstance);this.onPlayStateChange&&this.onPlayStateChange("renderEnded")},0),a}else console.error("starting csound failed because csound instance wasn't created")}async initialize({wasmDataURI:a,withPlugins:b,autoConnect:c}){this.plugins||!b||isEmpty$$module$node_modules$rambda$dist$rambda_mjs(b)||(b=await fetchPlugins$$module$src$utils(b));if(!this.wasm){const [f,g]=await $jscompDefaultExport$$module$src$module({wasmDataURI:a(),
+withPlugins:b,messagePort:this.messagePort});this.wasm=f;this.wasi=g;f.wasi=g}const d=$jscompDefaultExport$$module$src$libcsound(this.wasm);this.csoundApi=d;const e=await d.csoundCreate(0);this.csoundInstance=e;c&&this.spn.connect(this.audioContext.destination);this.resetCsound(!1);Object.keys(d).reduce((f,g)=>{if(["mkdir","readdir","writeFile"].includes(g)){f.fs=f.fs||{};var h=async(...k)=>makeSingleThreadCallback$$module$src$utils(this.wasm,d[g]).apply({},k);h.toString=d[g].toString;f.fs[g]=h}else h=
+csoundApiRename$$module$src$utils(g),f[h]=(...k)=>makeSingleThreadCallback$$module$src$utils(e,d[g]).apply({},k),f[h].toString=d[g].toString;return f},this.exportApi);this.exportApi.pause=this.pause.bind(this);this.exportApi.resume=this.resume.bind(this);this.exportApi.start=this.start.bind(this);this.exportApi.stop=this.stop.bind(this);this.exportApi.terminateInstance=this.terminateInstance.bind(this);this.exportApi.getAudioContext=async()=>this.audioContext;this.exportApi.name="Csound: ScriptProcessor Node, Single-threaded";
+this.exportApi=this.publicEvents.decorateAPI(this.exportApi);this.exportApi.reset=()=>this.resetCsound(!0);this.exportApi.addListener("message",console.log);return this.exportApi}async resetCsound(a){if(a&&"realtimePerformanceEnded"!==this.currentPlayState&&"realtimePerformanceStarted"!==this.currentPlayState)return-1;if("realtimePerformanceStarted"===this.currentPlayState)this.onPlayStateChange("realtimePerformanceEnded");this.started=this.running=!1;this.result=0;const b=this.csoundInstance,c=this.csoundApi;
+a&&c.csoundReset(b);c.csoundSetOption(b,"--sample-rate="+this.sampleRate);this.nchnls_i=this.nchnls=-1;delete this.csoundOutputBuffer;delete this.csoundInputBuffer}onaudioprocess(a){if(this.csoundApi&&!["renderStarted","renderEnded"].includes(this.currentPlayState)){if(null===this.csoundOutputBuffer||!1===this.running){var b=a.outputBuffer,c=b.getChannelData(0);if(c){c=c.length;for(var d=0;d<c;d++)for(var e=0;e<b.numberOfChannels;e++)b.getChannelData(e)[d]=0}}this.running&&!this.started&&(this.started=
+!0,this.onPlayStateChange("realtimePerformanceStarted"),this.eventPromises&&this.eventPromises.releaseStartPromise());b=a.inputBuffer;a=a.outputBuffer;c=a.getChannelData(0).length;d=this.csoundOutputBuffer;e=this.csoundInputBuffer;var f=this.ksmps,g=this.zerodBFS,h=this.nchnls,k=this.nchnls_i,n=this.cnt||0,m=this.result||0;for(let u=0;u<c;u++,n++){n===f&&0===m&&(m=this.csoundApi.csoundPerformKsmps(this.csoundInstance),n=0,0!==m&&(this.started=this.running=!1,this.onPlayStateChange("realtimePerformanceEnded"),
+this.eventPromises&&this.eventPromises.releaseStopPromise()));d&&0!==d.length||(d=this.csoundOutputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,this.csoundApi.csoundGetSpout(this.csoundInstance),f*h));e&&0!==e.length||(e=this.csoundInputBuffer=new Float64Array(this.wasm.wasi.memory.buffer,this.csoundApi.csoundGetSpin(this.csoundInstance),f*k));var l=Math.min(this.nchnls_i,b.numberOfChannels);for(var p=0;p<l;p++){var q=b.getChannelData(p);e[n*k+p]=q[u]*g}if(this.nchnls===a.numberOfChannels)for(l=
+0;l<a.numberOfChannels;l++)a.getChannelData(l)[u]=0===m?d[n*h+l]/g:0;else 2===this.nchnls&&1===a.numberOfChannels?a.getChannelData(0)[u]=0===m?.5*(d[n*h]/g+d[n*h+1]/g):0:1===this.nchnls&&2===a.numberOfChannels&&(l=a.getChannelData(0),p=a.getChannelData(1),0===m?(q=d[n*h]/g,l[u]=q,p[u]=q):(l[u]=0,p[u]=0))}this.cnt=n;this.result=m}}}var $jscompDefaultExport$$module$src$mains$spn_main=ScriptProcessorNodeSingleThread$$module$src$mains$spn_main,module$src$mains$spn_main={};
+module$src$mains$spn_main.default=$jscompDefaultExport$$module$src$mains$spn_main;var $jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline=()=>"data:application/javascript;base64,bGV0IHNlbGYgPSBBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTsKLyoKCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTt2YXIgQ09NUElMRUQ9ITAsZ29vZz1nb29nfHx7fTtnb29nLmdsb2JhbD10aGlzfHxzZWxmO2dvb2cuZXhwb3J0UGF0aF89ZnVuY3Rpb24oYSxiLGMsZCl7YT1hLnNwbGl0KCIuIik7ZD1kfHxnb29nLmdsb2JhbDthWzBdaW4gZHx8InVuZGVmaW5lZCI9PXR5cGVvZiBkLmV4ZWNTY3JpcHR8fGQuZXhlY1NjcmlwdCgidmFyICIrYVswXSk7Zm9yKHZhciBlO2EubGVuZ3RoJiYoZT1hLnNoaWZ0KCkpOylpZihhLmxlbmd0aHx8dm9pZCAwPT09YilkPWRbZV0mJmRbZV0hPT1PYmplY3QucHJvdG90eXBlW2VdP2RbZV06ZFtlXT17fTtlbHNlIGlmKCFjJiZnb29nLmlzT2JqZWN0KGIpJiZnb29nLmlzT2JqZWN0KGRbZV0pKWZvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJihkW2VdW2ZdPWJbZl0pO2Vsc2UgZFtlXT1ifTsKZ29vZy5kZWZpbmU9ZnVuY3Rpb24oYSxiKXtpZighQ09NUElMRUQpe3ZhciBjPWdvb2cuZ2xvYmFsLkNMT1NVUkVfVU5DT01QSUxFRF9ERUZJTkVTLGQ9Z29vZy5nbG9iYWwuQ0xPU1VSRV9ERUZJTkVTO2MmJnZvaWQgMD09PWMubm9kZVR5cGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjLGEpP2I9Y1thXTpkJiZ2b2lkIDA9PT1kLm5vZGVUeXBlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZCxhKSYmKGI9ZFthXSl9cmV0dXJuIGJ9O2dvb2cuRkVBVFVSRVNFVF9ZRUFSPTIwMjA7Z29vZy5ERUJVRz0hMDtnb29nLkxPQ0FMRT0iZW4iO2dvb2cuZ2V0TG9jYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIGdvb2cuTE9DQUxFfTtnb29nLlRSVVNURURfU0lURT0hMDtnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFPUNPTVBJTEVEJiYhZ29vZy5ERUJVRztnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkc9ITE7Cmdvb2cucHJvdmlkZT1mdW5jdGlvbihhKXtpZihnb29nLmlzSW5Nb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cucHJvdmlkZSBjYW5ub3QgYmUgdXNlZCB3aXRoaW4gYSBtb2R1bGUuIik7aWYoIUNPTVBJTEVEJiZnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhhKX07Z29vZy5jb25zdHJ1Y3ROYW1lc3BhY2VfPWZ1bmN0aW9uKGEsYixjKXtpZighQ09NUElMRUQpe2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV07Zm9yKHZhciBkPWE7KGQ9ZC5zdWJzdHJpbmcoMCxkLmxhc3RJbmRleE9mKCIuIikpKSYmIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKGQpOylnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bZF09ITB9Z29vZy5leHBvcnRQYXRoXyhhLGIsYyl9O2dvb2cuTk9OQ0VfUEFUVEVSTl89L15bXHcrL18tXStbPV17MCwyfSQvOwpnb29nLmdldFNjcmlwdE5vbmNlXz1mdW5jdGlvbihhKXthPShhfHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuKGE9YS5xdWVyeVNlbGVjdG9yJiZhLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKSkmJihhPWEubm9uY2V8fGEuZ2V0QXR0cmlidXRlKCJub25jZSIpKSYmZ29vZy5OT05DRV9QQVRURVJOXy50ZXN0KGEpP2E6IiJ9O2dvb2cuVkFMSURfTU9EVUxFX1JFXz0vXlthLXpBLVpfJF1bYS16QS1aMC05Ll8kXSokLzsKZ29vZy5tb2R1bGU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPT10eXBlb2YgYXx8IWF8fC0xPT1hLnNlYXJjaChnb29nLlZBTElEX01PRFVMRV9SRV8pKXRocm93IEVycm9yKCJJbnZhbGlkIG1vZHVsZSBpZGVudGlmaWVyIik7aWYoIWdvb2cuaXNJbkdvb2dNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoIk1vZHVsZSAiK2ErIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuIE5vdGUsIG1vZHVsZXMgY2Fubm90IGJlIGxvYWRlZCBhcyBub3JtYWwgc2NyaXB0cy4gVGhleSByZXF1aXJlIHNvbWUga2luZCBvZiBwcmUtcHJvY2Vzc2luZyBzdGVwLiBZb3UncmUgbGlrZWx5IHRyeWluZyB0byBsb2FkIGEgbW9kdWxlIHZpYSBhIHNjcmlwdCB0YWcgb3IgYXMgYSBwYXJ0IG9mIGEgY29uY2F0ZW5hdGVkIGJ1bmRsZSB3aXRob3V0IHJld3JpdGluZyB0aGUgbW9kdWxlLiBGb3IgbW9yZSBpbmZvIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvd2lraS9nb29nLm1vZHVsZTotYW4tRVM2LW1vZHVsZS1saWtlLWFsdGVybmF0aXZlLXRvLWdvb2cucHJvdmlkZS4iKTtpZihnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgbW9kdWxlLiIpOwpnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lPWE7aWYoIUNPTVBJTEVEKXtpZihnb29nLmlzUHJvdmlkZWRfKGEpKXRocm93IEVycm9yKCdOYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGRlY2xhcmVkLicpO2RlbGV0ZSBnb29nLmltcGxpY2l0TmFtZXNwYWNlc19bYV19fTtnb29nLm1vZHVsZS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cubW9kdWxlLmdldEludGVybmFsXyhhKX07Z29vZy5tb2R1bGUuZ2V0SW50ZXJuYWxfPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXJldHVybiBnb29nLmxvYWRlZE1vZHVsZXNfW2FdLmV4cG9ydHM7aWYoIWdvb2cuaW1wbGljaXROYW1lc3BhY2VzX1thXSlyZXR1cm4gYT1nb29nLmdldE9iamVjdEJ5TmFtZShhKSxudWxsIT1hP2E6bnVsbH1yZXR1cm4gbnVsbH07Z29vZy5Nb2R1bGVUeXBlPXtFUzY6ImVzNiIsR09PRzoiZ29vZyJ9O2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7Cmdvb2cuaXNJbk1vZHVsZUxvYWRlcl89ZnVuY3Rpb24oKXtyZXR1cm4gZ29vZy5pc0luR29vZ01vZHVsZUxvYWRlcl8oKXx8Z29vZy5pc0luRXM2TW9kdWxlTG9hZGVyXygpfTtnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXz1mdW5jdGlvbigpe3JldHVybiEhZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5HT09HfTtnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfPWZ1bmN0aW9uKCl7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLnR5cGU9PWdvb2cuTW9kdWxlVHlwZS5FUzYpcmV0dXJuITA7dmFyIGE9Z29vZy5nbG9iYWwuJGpzY29tcDtyZXR1cm4gYT8iZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRDdXJyZW50TW9kdWxlUGF0aD8hMTohIWEuZ2V0Q3VycmVudE1vZHVsZVBhdGgoKTohMX07Cmdvb2cubW9kdWxlLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ZnVuY3Rpb24oKXtpZighQ09NUElMRUQmJiFnb29nLmlzSW5Hb29nTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlIG11c3QgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgZ29vZy5tb2R1bGUiKTtpZighQ09NUElMRUQmJiFnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKXRocm93IEVycm9yKCJnb29nLm1vZHVsZSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0byBnb29nLm1vZHVsZS5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlLiIpO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfLmRlY2xhcmVMZWdhY3lOYW1lc3BhY2U9ITB9Owpnb29nLmRlY2xhcmVNb2R1bGVJZD1mdW5jdGlvbihhKXtpZighQ09NUElMRUQpe2lmKCFnb29nLmlzSW5FczZNb2R1bGVMb2FkZXJfKCkpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhbiBFUzYgbW9kdWxlIik7aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8mJmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWUpdGhyb3cgRXJyb3IoImdvb2cuZGVjbGFyZU1vZHVsZUlkIG1heSBvbmx5IGJlIGNhbGxlZCBvbmNlIHBlciBtb2R1bGUuIik7aWYoYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNfKXRocm93IEVycm9yKCdNb2R1bGUgd2l0aCBuYW1lc3BhY2UgIicrYSsnIiBhbHJlYWR5IGV4aXN0cy4nKTt9aWYoZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8pZ29vZy5tb2R1bGVMb2FkZXJTdGF0ZV8ubW9kdWxlTmFtZT1hO2Vsc2V7dmFyIGI9Z29vZy5nbG9iYWwuJGpzY29tcDtpZighYnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGIuZ2V0Q3VycmVudE1vZHVsZVBhdGgpdGhyb3cgRXJyb3IoJ01vZHVsZSB3aXRoIG5hbWVzcGFjZSAiJysKYSsnIiBoYXMgYmVlbiBsb2FkZWQgaW5jb3JyZWN0bHkuJyk7Yj1iLnJlcXVpcmUoYi5nZXRDdXJyZW50TW9kdWxlUGF0aCgpKTtnb29nLmxvYWRlZE1vZHVsZXNfW2FdPXtleHBvcnRzOmIsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmF9fX07Z29vZy5zZXRUZXN0T25seT1mdW5jdGlvbihhKXtpZihnb29nLkRJU0FMTE9XX1RFU1RfT05MWV9DT0RFKXRocm93IGE9YXx8IiIsRXJyb3IoIkltcG9ydGluZyB0ZXN0LW9ubHkgY29kZSBpbnRvIG5vbi1kZWJ1ZyBlbnZpcm9ubWVudCIrKGE/IjogIithOiIuIikpO307Z29vZy5mb3J3YXJkRGVjbGFyZT1mdW5jdGlvbihhKXt9O0NPTVBJTEVEfHwoZ29vZy5pc1Byb3ZpZGVkXz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBnb29nLmxvYWRlZE1vZHVsZXNffHwhZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfW2FdJiZudWxsIT1nb29nLmdldE9iamVjdEJ5TmFtZShhKX0sZ29vZy5pbXBsaWNpdE5hbWVzcGFjZXNfPXsiZ29vZy5tb2R1bGUiOiEwfSk7Cmdvb2cuZ2V0T2JqZWN0QnlOYW1lPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxnb29nLmdsb2JhbDtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylpZihiPWJbYVtjXV0sbnVsbD09YilyZXR1cm4gbnVsbDtyZXR1cm4gYn07Z29vZy5hZGREZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQpeyFDT01QSUxFRCYmZ29vZy5ERVBFTkRFTkNJRVNfRU5BQkxFRCYmZ29vZy5kZWJ1Z0xvYWRlcl8uYWRkRGVwZW5kZW5jeShhLGIsYyxkKX07Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSPSEwO2dvb2cubG9nVG9Db25zb2xlXz1mdW5jdGlvbihhKXtnb29nLmdsb2JhbC5jb25zb2xlJiZnb29nLmdsb2JhbC5jb25zb2xlLmVycm9yKGEpfTsKZ29vZy5yZXF1aXJlPWZ1bmN0aW9uKGEpe2lmKCFDT01QSUxFRCl7Z29vZy5FTkFCTEVfREVCVUdfTE9BREVSJiZnb29nLmRlYnVnTG9hZGVyXy5yZXF1ZXN0ZWQoYSk7aWYoZ29vZy5pc1Byb3ZpZGVkXyhhKSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXJldHVybiBnb29nLm1vZHVsZS5nZXRJbnRlcm5hbF8oYSl9ZWxzZSBpZihnb29nLkVOQUJMRV9ERUJVR19MT0FERVIpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGw7dHJ5e2dvb2cuZGVidWdMb2FkZXJfLmxvYWRfKGEpfWZpbmFsbHl7Z29vZy5tb2R1bGVMb2FkZXJTdGF0ZV89Yn19cmV0dXJuIG51bGx9fTtnb29nLnJlcXVpcmVUeXBlPWZ1bmN0aW9uKGEpe3JldHVybnt9fTtnb29nLmJhc2VQYXRoPSIiO2dvb2cuYWJzdHJhY3RNZXRob2Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigidW5pbXBsZW1lbnRlZCBhYnN0cmFjdCBtZXRob2QiKTt9Owpnb29nLmFkZFNpbmdsZXRvbkdldHRlcj1mdW5jdGlvbihhKXthLmluc3RhbmNlXz12b2lkIDA7YS5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe2lmKGEuaW5zdGFuY2VfKXJldHVybiBhLmluc3RhbmNlXztnb29nLkRFQlVHJiYoZ29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zX1tnb29nLmluc3RhbnRpYXRlZFNpbmdsZXRvbnNfLmxlbmd0aF09YSk7cmV0dXJuIGEuaW5zdGFuY2VfPW5ldyBhfX07Z29vZy5pbnN0YW50aWF0ZWRTaW5nbGV0b25zXz1bXTtnb29nLkxPQURfTU9EVUxFX1VTSU5HX0VWQUw9ITA7Z29vZy5TRUFMX01PRFVMRV9FWFBPUlRTPWdvb2cuREVCVUc7Z29vZy5sb2FkZWRNb2R1bGVzXz17fTtnb29nLkRFUEVOREVOQ0lFU19FTkFCTEVEPSFDT01QSUxFRCYmZ29vZy5FTkFCTEVfREVCVUdfTE9BREVSO2dvb2cuVFJBTlNQSUxFPSJkZXRlY3QiO2dvb2cuQVNTVU1FX0VTX01PRFVMRVNfVFJBTlNQSUxFRD0hMTtnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU9Imdvb2ciOwpnb29nLmhhc0JhZExldFNjb3Bpbmc9bnVsbDsKZ29vZy5sb2FkTW9kdWxlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfO3RyeXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17bW9kdWxlTmFtZToiIixkZWNsYXJlTGVnYWN5TmFtZXNwYWNlOiExLHR5cGU6Z29vZy5Nb2R1bGVUeXBlLkdPT0d9O3ZhciBjPXt9LGQ9YztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpZD1hLmNhbGwodm9pZCAwLGQpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSlkPWdvb2cubG9hZE1vZHVsZUZyb21Tb3VyY2VfLmNhbGwodm9pZCAwLGQsYSk7ZWxzZSB0aHJvdyBFcnJvcigiSW52YWxpZCBtb2R1bGUgZGVmaW5pdGlvbiIpO3ZhciBlPWdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWU7aWYoInN0cmluZyI9PT10eXBlb2YgZSYmZSlnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5kZWNsYXJlTGVnYWN5TmFtZXNwYWNlP2dvb2cuY29uc3RydWN0TmFtZXNwYWNlXyhlLGQsYyE9PWQpOmdvb2cuU0VBTF9NT0RVTEVfRVhQT1JUUyYmCk9iamVjdC5zZWFsJiYib2JqZWN0Ij09dHlwZW9mIGQmJm51bGwhPWQmJk9iamVjdC5zZWFsKGQpLGdvb2cubG9hZGVkTW9kdWxlc19bZV09e2V4cG9ydHM6ZCx0eXBlOmdvb2cuTW9kdWxlVHlwZS5HT09HLG1vZHVsZUlkOmdvb2cubW9kdWxlTG9hZGVyU3RhdGVfLm1vZHVsZU5hbWV9O2Vsc2UgdGhyb3cgRXJyb3IoJ0ludmFsaWQgbW9kdWxlIG5hbWUgIicrZSsnIicpO31maW5hbGx5e2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPWJ9fTtnb29nLmxvYWRNb2R1bGVGcm9tU291cmNlXz1mdW5jdGlvbihhLGIpe2V2YWwoZ29vZy5DTE9TVVJFX0VWQUxfUFJFRklMVEVSXy5jcmVhdGVTY3JpcHQoYikpO3JldHVybiBhfTtnb29nLm5vcm1hbGl6ZVBhdGhfPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLyIpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KSIuIj09YVtiXT9hLnNwbGljZShiLDEpOmImJiIuLiI9PWFbYl0mJmFbYi0xXSYmIi4uIiE9YVtiLTFdP2Euc3BsaWNlKC0tYiwyKTpiKys7cmV0dXJuIGEuam9pbigiLyIpfTsKZ29vZy5sb2FkRmlsZVN5bmNfPWZ1bmN0aW9uKGEpe2lmKGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMpcmV0dXJuIGdvb2cuZ2xvYmFsLkNMT1NVUkVfTE9BRF9GSUxFX1NZTkMoYSk7dHJ5e3ZhciBiPW5ldyBnb29nLmdsb2JhbC5YTUxIdHRwUmVxdWVzdDtiLm9wZW4oImdldCIsYSwhMSk7Yi5zZW5kKCk7cmV0dXJuIDA9PWIuc3RhdHVzfHwyMDA9PWIuc3RhdHVzP2IucmVzcG9uc2VUZXh0Om51bGx9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtnb29nLnR5cGVPZj1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0IiE9Yj9iOmE/QXJyYXkuaXNBcnJheShhKT8iYXJyYXkiOmI6Im51bGwifTtnb29nLmlzQXJyYXlMaWtlPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO3JldHVybiJhcnJheSI9PWJ8fCJvYmplY3QiPT1iJiYibnVtYmVyIj09dHlwZW9mIGEubGVuZ3RofTsKZ29vZy5pc0RhdGVMaWtlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmlzT2JqZWN0KGEpJiYiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRGdWxsWWVhcn07Z29vZy5pc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgYTtyZXR1cm4ib2JqZWN0Ij09YiYmbnVsbCE9YXx8ImZ1bmN0aW9uIj09Yn07Z29vZy5nZXRVaWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGdvb2cuVUlEX1BST1BFUlRZXykmJmFbZ29vZy5VSURfUFJPUEVSVFlfXXx8KGFbZ29vZy5VSURfUFJPUEVSVFlfXT0rK2dvb2cudWlkQ291bnRlcl8pfTtnb29nLmhhc1VpZD1mdW5jdGlvbihhKXtyZXR1cm4hIWFbZ29vZy5VSURfUFJPUEVSVFlfXX07Z29vZy5yZW1vdmVVaWQ9ZnVuY3Rpb24oYSl7bnVsbCE9PWEmJiJyZW1vdmVBdHRyaWJ1dGUiaW4gYSYmYS5yZW1vdmVBdHRyaWJ1dGUoZ29vZy5VSURfUFJPUEVSVFlfKTt0cnl7ZGVsZXRlIGFbZ29vZy5VSURfUFJPUEVSVFlfXX1jYXRjaChiKXt9fTsKZ29vZy5VSURfUFJPUEVSVFlfPSJjbG9zdXJlX3VpZF8iKygxRTkqTWF0aC5yYW5kb20oKT4+PjApO2dvb2cudWlkQ291bnRlcl89MDtnb29nLmNsb25lT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cudHlwZU9mKGEpO2lmKCJvYmplY3QiPT1ifHwiYXJyYXkiPT1iKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEuY2xvbmUpcmV0dXJuIGEuY2xvbmUoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBNYXAmJmEgaW5zdGFuY2VvZiBNYXApcmV0dXJuIG5ldyBNYXAoYSk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZhIGluc3RhbmNlb2YgU2V0KXJldHVybiBuZXcgU2V0KGEpO2I9ImFycmF5Ij09Yj9bXTp7fTtmb3IodmFyIGMgaW4gYSliW2NdPWdvb2cuY2xvbmVPYmplY3QoYVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGF9O2dvb2cuYmluZE5hdGl2ZV89ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhLmNhbGwuYXBwbHkoYS5iaW5kLGFyZ3VtZW50cyl9Owpnb29nLmJpbmRKc189ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoMjxhcmd1bWVudHMubGVuZ3RoKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O2dvb2cuYmluZD1mdW5jdGlvbihhLGIsYyl7RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQmJi0xIT1GdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIik/Z29vZy5iaW5kPWdvb2cuYmluZE5hdGl2ZV86Z29vZy5iaW5kPWdvb2cuYmluZEpzXztyZXR1cm4gZ29vZy5iaW5kLmFwcGx5KG51bGwsYXJndW1lbnRzKX07Cmdvb2cucGFydGlhbD1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Z29vZy5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3coKX07Z29vZy5nbG9iYWxFdmFsPWZ1bmN0aW9uKGEpeygwLGV2YWwpKGEpfTsKZ29vZy5nZXRDc3NOYW1lPWZ1bmN0aW9uKGEsYil7aWYoIi4iPT1TdHJpbmcoYSkuY2hhckF0KDApKXRocm93IEVycm9yKCdjbGFzc05hbWUgcGFzc2VkIGluIGdvb2cuZ2V0Q3NzTmFtZSBtdXN0IG5vdCBzdGFydCB3aXRoICIuIi4gWW91IHBhc3NlZDogJythKTt2YXIgYz1mdW5jdGlvbihlKXtyZXR1cm4gZ29vZy5jc3NOYW1lTWFwcGluZ19bZV18fGV9LGQ9ZnVuY3Rpb24oZSl7ZT1lLnNwbGl0KCItIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoO2crKylmLnB1c2goYyhlW2ddKSk7cmV0dXJuIGYuam9pbigiLSIpfTtkPWdvb2cuY3NzTmFtZU1hcHBpbmdfPyJCWV9XSE9MRSI9PWdvb2cuY3NzTmFtZU1hcHBpbmdTdHlsZV8/YzpkOmZ1bmN0aW9uKGUpe3JldHVybiBlfTthPWI/YSsiLSIrZChiKTpkKGEpO3JldHVybiBnb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTj9nb29nLmdsb2JhbC5DTE9TVVJFX0NTU19OQU1FX01BUF9GTihhKTphfTsKZ29vZy5zZXRDc3NOYW1lTWFwcGluZz1mdW5jdGlvbihhLGIpe2dvb2cuY3NzTmFtZU1hcHBpbmdfPWE7Z29vZy5jc3NOYW1lTWFwcGluZ1N0eWxlXz1ifTshQ09NUElMRUQmJmdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyYmKGdvb2cuY3NzTmFtZU1hcHBpbmdfPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQ1NTX05BTUVfTUFQUElORyk7Z29vZy5HZXRNc2dPcHRpb25zPWZ1bmN0aW9uKCl7fTsKZ29vZy5nZXRNc2c9ZnVuY3Rpb24oYSxiLGMpe2MmJmMuaHRtbCYmKGE9YS5yZXBsYWNlKC88L2csIiZsdDsiKSk7YyYmYy51bmVzY2FwZUh0bWxFbnRpdGllcyYmKGE9YS5yZXBsYWNlKC8mbHQ7L2csIjwiKS5yZXBsYWNlKC8mZ3Q7L2csIj4iKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyZxdW90Oy9nLCciJykucmVwbGFjZSgvJmFtcDsvZywiJiIpKTtiJiYoYT1hLnJlcGxhY2UoL1x7XCQoW159XSspfS9nLGZ1bmN0aW9uKGQsZSl7cmV0dXJuIG51bGwhPWImJmUgaW4gYj9iW2VdOmR9KSk7cmV0dXJuIGF9O2dvb2cuZ2V0TXNnV2l0aEZhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZXhwb3J0U3ltYm9sPWZ1bmN0aW9uKGEsYixjKXtnb29nLmV4cG9ydFBhdGhfKGEsYiwhMCxjKX07Z29vZy5leHBvcnRQcm9wZXJ0eT1mdW5jdGlvbihhLGIsYyl7YVtiXT1jfTsKZ29vZy5pbmhlcml0cz1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5zdXBlckNsYXNzXz1iLnByb3RvdHlwZTthLnByb3RvdHlwZT1uZXcgYzthLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hO2EuYmFzZT1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O2dvb2cuc2NvcGU9ZnVuY3Rpb24oYSl7aWYoZ29vZy5pc0luTW9kdWxlTG9hZGVyXygpKXRocm93IEVycm9yKCJnb29nLnNjb3BlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aGluIGEgbW9kdWxlLiIpO2EuY2FsbChnb29nLmdsb2JhbCl9O0NPTVBJTEVEfHwoZ29vZy5nbG9iYWwuQ09NUElMRUQ9Q09NUElMRUQpOwpnb29nLmRlZmluZUNsYXNzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jb25zdHJ1Y3RvcixkPWIuc3RhdGljcztjJiZjIT1PYmplY3QucHJvdG90eXBlLmNvbnN0cnVjdG9yfHwoYz1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJjYW5ub3QgaW5zdGFudGlhdGUgYW4gaW50ZXJmYWNlIChubyBjb25zdHJ1Y3RvciBkZWZpbmVkKS4iKTt9KTtjPWdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXyhjLGEpO2EmJmdvb2cuaW5oZXJpdHMoYyxhKTtkZWxldGUgYi5jb25zdHJ1Y3RvcjtkZWxldGUgYi5zdGF0aWNzO2dvb2cuZGVmaW5lQ2xhc3MuYXBwbHlQcm9wZXJ0aWVzXyhjLnByb3RvdHlwZSxiKTtudWxsIT1kJiYoZCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2QoYyk6Z29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfKGMsZCkpO3JldHVybiBjfTtnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTPWdvb2cuREVCVUc7Cmdvb2cuZGVmaW5lQ2xhc3MuY3JlYXRlU2VhbGluZ0NvbnN0cnVjdG9yXz1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmRlZmluZUNsYXNzLlNFQUxfQ0xBU1NfSU5TVEFOQ0VTP2Z1bmN0aW9uKCl7dmFyIGM9YS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7Y1tnb29nLlVJRF9QUk9QRVJUWV9dPWNbZ29vZy5VSURfUFJPUEVSVFlfXTtyZXR1cm4gY306YX07Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU189ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZ29vZy5kZWZpbmVDbGFzcy5hcHBseVByb3BlcnRpZXNfPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjIGluIGIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYykmJihhW2NdPWJbY10pO2Zvcih2YXIgZD0wO2Q8Z29vZy5kZWZpbmVDbGFzcy5PQkpFQ1RfUFJPVE9UWVBFX0ZJRUxEU18ubGVuZ3RoO2QrKyljPWdvb2cuZGVmaW5lQ2xhc3MuT0JKRUNUX1BST1RPVFlQRV9GSUVMRFNfW2RdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLGMpJiYoYVtjXT1iW2NdKX07Z29vZy5pZGVudGl0eV89ZnVuY3Rpb24oYSl7cmV0dXJuIGF9Owpnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeT1mdW5jdGlvbihhKXt2YXIgYj1udWxsLGM9Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzO2lmKCFjfHwhYy5jcmVhdGVQb2xpY3kpcmV0dXJuIGI7dHJ5e2I9Yy5jcmVhdGVQb2xpY3koYSx7Y3JlYXRlSFRNTDpnb29nLmlkZW50aXR5XyxjcmVhdGVTY3JpcHQ6Z29vZy5pZGVudGl0eV8sY3JlYXRlU2NyaXB0VVJMOmdvb2cuaWRlbnRpdHlffSl9Y2F0Y2goZCl7Z29vZy5sb2dUb0NvbnNvbGVfKGQubWVzc2FnZSl9cmV0dXJuIGJ9OwohQ09NUElMRUQmJmdvb2cuREVQRU5ERU5DSUVTX0VOQUJMRUQmJihnb29nLmlzRWRnZV89ZnVuY3Rpb24oKXtyZXR1cm4hIShnb29nLmdsb2JhbC5uYXZpZ2F0b3ImJmdvb2cuZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQ/Z29vZy5nbG9iYWwubmF2aWdhdG9yLnVzZXJBZ2VudDoiIikubWF0Y2goL0VkZ2VcLyhcZCspKFwuXGQpKi9pKX0sZ29vZy5pbkh0bWxEb2N1bWVudF89ZnVuY3Rpb24oKXt2YXIgYT1nb29nLmdsb2JhbC5kb2N1bWVudDtyZXR1cm4gbnVsbCE9YSYmIndyaXRlImluIGF9LGdvb2cuaXNEb2N1bWVudExvYWRpbmdfPWZ1bmN0aW9uKCl7dmFyIGE9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7cmV0dXJuIGEuYXR0YWNoRXZlbnQ/ImNvbXBsZXRlIiE9YS5yZWFkeVN0YXRlOiJsb2FkaW5nIj09YS5yZWFkeVN0YXRlfSxnb29nLmZpbmRCYXNlUGF0aF89ZnVuY3Rpb24oKXtpZih2b2lkIDAhPWdvb2cuZ2xvYmFsLkNMT1NVUkVfQkFTRV9QQVRIJiYic3RyaW5nIj09PXR5cGVvZiBnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSClnb29nLmJhc2VQYXRoPQpnb29nLmdsb2JhbC5DTE9TVVJFX0JBU0VfUEFUSDtlbHNlIGlmKGdvb2cuaW5IdG1sRG9jdW1lbnRfKCkpe3ZhciBhPWdvb2cuZ2xvYmFsLmRvY3VtZW50LGI9YS5jdXJyZW50U2NyaXB0O2E9Yj9bYl06YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiU0NSSVBUIik7Zm9yKGI9YS5sZW5ndGgtMTswPD1iOy0tYil7dmFyIGM9YVtiXS5zcmMsZD1jLmxhc3RJbmRleE9mKCI/Iik7ZD0tMT09ZD9jLmxlbmd0aDpkO2lmKCJiYXNlLmpzIj09Yy5zbGljZShkLTcsZCkpe2dvb2cuYmFzZVBhdGg9Yy5zbGljZSgwLGQtNyk7YnJlYWt9fX19LGdvb2cuZmluZEJhc2VQYXRoXygpLGdvb2cucHJvdGVjdFNjcmlwdFRhZ189ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvPFwvKFNDUklQVCkvaWcsIlxceDNjLyQxIil9LGdvb2cuRGVidWdMb2FkZXJfPWZ1bmN0aW9uKCl7dGhpcy5kZXBlbmRlbmNpZXNfPXt9O3RoaXMuaWRUb1BhdGhfPXt9O3RoaXMud3JpdHRlbl89e307dGhpcy5sb2FkaW5nRGVwc189CltdO3RoaXMuZGVwc1RvTG9hZF89W107dGhpcy5wYXVzZWRfPSExO3RoaXMuZmFjdG9yeV89bmV3IGdvb2cuRGVwZW5kZW5jeUZhY3Rvcnk7dGhpcy5kZWZlcnJlZENhbGxiYWNrc189e307dGhpcy5kZWZlcnJlZFF1ZXVlXz1bXX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXtkJiYoZ29vZy5nbG9iYWwuc2V0VGltZW91dChkLDApLGQ9bnVsbCl9dmFyIGQ9YjtpZihhLmxlbmd0aCl7Yj1bXTtmb3IodmFyIGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGY9dGhpcy5nZXRQYXRoRnJvbURlcHNfKGFbZV0pO2lmKCFmKXRocm93IEVycm9yKCJVbnJlZ29uaXplZCBuYW1lc3BhY2U6ICIrYVtlXSk7Yi5wdXNoKHRoaXMuZGVwZW5kZW5jaWVzX1tmXSl9Zj1nb29nLnJlcXVpcmU7dmFyIGc9MDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKWYoYVtlXSksYltlXS5vbkxvYWQoZnVuY3Rpb24oKXsrK2c9PWEubGVuZ3RoJiZjKCl9KX1lbHNlIGMoKX0sCmdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkQ2xvc3VyZURlcHM9ZnVuY3Rpb24oKXt0aGlzLmRlcHNUb0xvYWRfLnB1c2godGhpcy5mYWN0b3J5Xy5jcmVhdGVEZXBlbmRlbmN5KGdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCsiZGVwcy5qcyIpLCJkZXBzLmpzIixbXSxbXSx7fSkpO3RoaXMubG9hZERlcHNfKCl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5yZXF1ZXN0ZWQ9ZnVuY3Rpb24oYSxiKXsoYT10aGlzLmdldFBhdGhGcm9tRGVwc18oYSkpJiYoYnx8dGhpcy5hcmVEZXBzTG9hZGVkXyh0aGlzLmRlcGVuZGVuY2llc19bYV0ucmVxdWlyZXMpKSYmKGI9dGhpcy5kZWZlcnJlZENhbGxiYWNrc19bYV0pJiYoZGVsZXRlIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2FdLGIoKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5zZXREZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbihhKXt0aGlzLmZhY3RvcnlfPWF9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkXz0KZnVuY3Rpb24oYSl7aWYodGhpcy5nZXRQYXRoRnJvbURlcHNfKGEpKXt2YXIgYj10aGlzLGM9W10sZD1mdW5jdGlvbihlKXt2YXIgZj1iLmdldFBhdGhGcm9tRGVwc18oZSk7aWYoIWYpdGhyb3cgRXJyb3IoIkJhZCBkZXBlbmRlbmN5IHBhdGggb3Igc3ltYm9sOiAiK2UpO2lmKCFiLndyaXR0ZW5fW2ZdKXtiLndyaXR0ZW5fW2ZdPSEwO2U9Yi5kZXBlbmRlbmNpZXNfW2ZdO2ZvcihmPTA7ZjxlLnJlcXVpcmVzLmxlbmd0aDtmKyspZ29vZy5pc1Byb3ZpZGVkXyhlLnJlcXVpcmVzW2ZdKXx8ZChlLnJlcXVpcmVzW2ZdKTtjLnB1c2goZSl9fTtkKGEpO2E9ISF0aGlzLmRlcHNUb0xvYWRfLmxlbmd0aDt0aGlzLmRlcHNUb0xvYWRfPXRoaXMuZGVwc1RvTG9hZF8uY29uY2F0KGMpO3RoaXMucGF1c2VkX3x8YXx8dGhpcy5sb2FkRGVwc18oKX1lbHNlIGdvb2cubG9nVG9Db25zb2xlXygiZ29vZy5yZXF1aXJlIGNvdWxkIG5vdCBmaW5kOiAiK2EpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZERlcHNfPQpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLGI9dGhpcy5wYXVzZWRfO3RoaXMuZGVwc1RvTG9hZF8ubGVuZ3RoJiYhYjspKGZ1bmN0aW9uKCl7dmFyIGM9ITEsZD1hLmRlcHNUb0xvYWRfLnNoaWZ0KCksZT0hMTthLmxvYWRpbmdfKGQpO3ZhciBmPXtwYXVzZTpmdW5jdGlvbigpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCBjYWxsIHBhdXNlIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7Yj0hMH0scmVzdW1lOmZ1bmN0aW9uKCl7Yz9hLnJlc3VtZV8oKTpiPSExfSxsb2FkZWQ6ZnVuY3Rpb24oKXtpZihlKXRocm93IEVycm9yKCJEb3VibGUgY2FsbCB0byBsb2FkZWQuIik7ZT0hMDthLmxvYWRlZF8oZCl9LHBlbmRpbmc6ZnVuY3Rpb24oKXtmb3IodmFyIGc9W10saD0wO2g8YS5sb2FkaW5nRGVwc18ubGVuZ3RoO2grKylnLnB1c2goYS5sb2FkaW5nRGVwc19baF0pO3JldHVybiBnfSxzZXRNb2R1bGVTdGF0ZTpmdW5jdGlvbihnKXtnb29nLm1vZHVsZUxvYWRlclN0YXRlXz17dHlwZTpnLAptb2R1bGVOYW1lOiIiLGRlY2xhcmVMZWdhY3lOYW1lc3BhY2U6ITF9fSxyZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoLGspe2smJihnb29nLmxvYWRlZE1vZHVsZXNfW2tdPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuRVM2LG1vZHVsZUlkOmt8fCIifSl9LHJlZ2lzdGVyR29vZ01vZHVsZUV4cG9ydHM6ZnVuY3Rpb24oZyxoKXtnb29nLmxvYWRlZE1vZHVsZXNfW2ddPXtleHBvcnRzOmgsdHlwZTpnb29nLk1vZHVsZVR5cGUuR09PRyxtb2R1bGVJZDpnfX0sY2xlYXJNb2R1bGVTdGF0ZTpmdW5jdGlvbigpe2dvb2cubW9kdWxlTG9hZGVyU3RhdGVfPW51bGx9LGRlZmVyOmZ1bmN0aW9uKGcpe2lmKGMpdGhyb3cgRXJyb3IoIkNhbm5vdCByZWdpc3RlciB3aXRoIGRlZmVyIGFmdGVyIHRoZSBjYWxsIHRvIGxvYWQuIik7YS5kZWZlcl8oZCxnKX0sYXJlRGVwc0xvYWRlZDpmdW5jdGlvbigpe3JldHVybiBhLmFyZURlcHNMb2FkZWRfKGQucmVxdWlyZXMpfX07CnRyeXtkLmxvYWQoZil9ZmluYWxseXtjPSEwfX0pKCk7YiYmdGhpcy5wYXVzZV8oKX0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnBhdXNlXz1mdW5jdGlvbigpe3RoaXMucGF1c2VkXz0hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLnJlc3VtZV89ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZF8mJih0aGlzLnBhdXNlZF89ITEsdGhpcy5sb2FkRGVwc18oKSl9LGdvb2cuRGVidWdMb2FkZXJfLnByb3RvdHlwZS5sb2FkaW5nXz1mdW5jdGlvbihhKXt0aGlzLmxvYWRpbmdEZXBzXy5wdXNoKGEpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUubG9hZGVkXz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMubG9hZGluZ0RlcHNfLmxlbmd0aDtiKyspaWYodGhpcy5sb2FkaW5nRGVwc19bYl09PWEpe3RoaXMubG9hZGluZ0RlcHNfLnNwbGljZShiLDEpO2JyZWFrfWZvcihiPTA7Yjx0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDtiKyspaWYodGhpcy5kZWZlcnJlZFF1ZXVlX1tiXT09CmEucGF0aCl7dGhpcy5kZWZlcnJlZFF1ZXVlXy5zcGxpY2UoYiwxKTticmVha31pZih0aGlzLmxvYWRpbmdEZXBzXy5sZW5ndGg9PXRoaXMuZGVmZXJyZWRRdWV1ZV8ubGVuZ3RoJiYhdGhpcy5kZXBzVG9Mb2FkXy5sZW5ndGgpZm9yKDt0aGlzLmRlZmVycmVkUXVldWVfLmxlbmd0aDspdGhpcy5yZXF1ZXN0ZWQodGhpcy5kZWZlcnJlZFF1ZXVlXy5zaGlmdCgpLCEwKTthLmxvYWRlZCgpfSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYXJlRGVwc0xvYWRlZF89ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuZ2V0UGF0aEZyb21EZXBzXyhhW2JdKTtpZighY3x8IShjIGluIHRoaXMuZGVmZXJyZWRDYWxsYmFja3NffHxnb29nLmlzUHJvdmlkZWRfKGFbYl0pKSlyZXR1cm4hMX1yZXR1cm4hMH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmdldFBhdGhGcm9tRGVwc189ZnVuY3Rpb24oYSl7cmV0dXJuIGEgaW4gdGhpcy5pZFRvUGF0aF8/CnRoaXMuaWRUb1BhdGhfW2FdOmEgaW4gdGhpcy5kZXBlbmRlbmNpZXNfP2E6bnVsbH0sZ29vZy5EZWJ1Z0xvYWRlcl8ucHJvdG90eXBlLmRlZmVyXz1mdW5jdGlvbihhLGIpe3RoaXMuZGVmZXJyZWRDYWxsYmFja3NfW2EucGF0aF09Yjt0aGlzLmRlZmVycmVkUXVldWVfLnB1c2goYS5wYXRoKX0sZ29vZy5Mb2FkQ29udHJvbGxlcj1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oKXt9LGdvb2cuTG9hZENvbnRyb2xsZXIucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUubG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5wZW5kaW5nPWZ1bmN0aW9uKCl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5yZWdpc3RlckVzNk1vZHVsZUV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuc2V0TW9kdWxlU3RhdGU9CmZ1bmN0aW9uKGEpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuY2xlYXJNb2R1bGVTdGF0ZT1mdW5jdGlvbigpe30sZ29vZy5Mb2FkQ29udHJvbGxlci5wcm90b3R5cGUuZGVmZXI9ZnVuY3Rpb24oYSl7fSxnb29nLkxvYWRDb250cm9sbGVyLnByb3RvdHlwZS5hcmVEZXBzTG9hZGVkPWZ1bmN0aW9uKCl7fSxnb29nLkRlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLnBhdGg9YTt0aGlzLnJlbGF0aXZlUGF0aD1iO3RoaXMucHJvdmlkZXM9Yzt0aGlzLnJlcXVpcmVzPWQ7dGhpcy5sb2FkRmxhZ3M9ZTt0aGlzLmxvYWRlZF89ITE7dGhpcy5sb2FkQ2FsbGJhY2tzXz1bXX0sZ29vZy5EZXBlbmRlbmN5LnByb3RvdHlwZS5nZXRQYXRoTmFtZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucGF0aCxiPWEuaW5kZXhPZigiOi8vIik7MDw9YiYmKGE9YS5zdWJzdHJpbmcoYiszKSxiPWEuaW5kZXhPZigiLyIpLDA8PWImJihhPWEuc3Vic3RyaW5nKGIrMSkpKTtyZXR1cm4gYX0sCmdvb2cuRGVwZW5kZW5jeS5wcm90b3R5cGUub25Mb2FkPWZ1bmN0aW9uKGEpe3RoaXMubG9hZGVkXz9hKCk6dGhpcy5sb2FkQ2FsbGJhY2tzXy5wdXNoKGEpfSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWRlZD1mdW5jdGlvbigpe3RoaXMubG9hZGVkXz0hMDt2YXIgYT10aGlzLmxvYWRDYWxsYmFja3NfO3RoaXMubG9hZENhbGxiYWNrc189W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspYVtiXSgpfSxnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSExLGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF89e30sZ29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzIpO2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYl09YTtyZXR1cm4gYn0sZ29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja189ZnVuY3Rpb24oYSl7ZGVsZXRlIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja01hcF9bYV19LApnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfPWZ1bmN0aW9uKGEsYil7aWYoYSBpbiBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tNYXBfKXtmb3IodmFyIGM9Z29vZy5EZXBlbmRlbmN5LmNhbGxiYWNrTWFwX1thXSxkPVtdLGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKWQucHVzaChhcmd1bWVudHNbZV0pO2MuYXBwbHkodm9pZCAwLGQpfWVsc2UgdGhyb3cgRXJyb3IoIkNhbGxiYWNrIGtleSAiK2ErIiBkb2VzIG5vdCBleGlzdCAod2FzIGJhc2UuanMgbG9hZGVkIG1vcmUgdGhhbiBvbmNlPykuIik7fSxnb29nLkRlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWdvb2cuZ2xvYmFsLkNMT1NVUkVfSU1QT1JUX1NDUklQVCh0aGlzLnBhdGgpP2EubG9hZGVkKCk6YS5wYXVzZSgpO2Vsc2UgaWYoZ29vZy5pbkh0bWxEb2N1bWVudF8oKSl7dmFyIGI9Z29vZy5nbG9iYWwuZG9jdW1lbnQ7aWYoImNvbXBsZXRlIj09CmIucmVhZHlTdGF0ZSYmIWdvb2cuRU5BQkxFX0NIUk9NRV9BUFBfU0FGRV9TQ1JJUFRfTE9BRElORyl7aWYoL1xiZGVwcy5qcyQvLnRlc3QodGhpcy5wYXRoKSl7YS5sb2FkZWQoKTtyZXR1cm59dGhyb3cgRXJyb3IoJ0Nhbm5vdCB3cml0ZSAiJyt0aGlzLnBhdGgrJyIgYWZ0ZXIgZG9jdW1lbnQgbG9hZCcpO312YXIgYz1nb29nLmdldFNjcmlwdE5vbmNlXygpO2lmKCFnb29nLkVOQUJMRV9DSFJPTUVfQVBQX1NBRkVfU0NSSVBUX0xPQURJTkcmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkpe3ZhciBkPWZ1bmN0aW9uKGgpe2gucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9aC5yZWFkeVN0YXRlP2gub25sb2FkPWQ6KGdvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGUpLGEubG9hZGVkKCkpfTt2YXIgZT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZCk7Yz1jPycgbm9uY2U9IicrYysnIic6IiI7dmFyIGY9JzxzY3JpcHQgc3JjPSInK3RoaXMucGF0aCsnIicrCmMrKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8/IiBkZWZlciI6IiIpKycgaWQ9InNjcmlwdC0nK2UrJyI+XHgzYy9zY3JpcHQ+JztmKz0iPHNjcmlwdCIrYysiPiI7Zj1nb29nLkRlcGVuZGVuY3kuZGVmZXJfP2YrKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NyaXB0LSIrZSsiJykub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gIGdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgdGhpcyk7XG59O1xuIik6ZisoImdvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oJyIrZSsiJywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjcmlwdC0iK2UrIicpKTsiKTtmKz0iXHgzYy9zY3JpcHQ+IjtiLndyaXRlKGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZUhUTUwoZik6Zil9ZWxzZXt2YXIgZz1iLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2cuZGVmZXI9Z29vZy5EZXBlbmRlbmN5LmRlZmVyXztnLmFzeW5jPSExO2MmJihnLm5vbmNlPQpjKTtnLm9ubG9hZD1mdW5jdGlvbigpe2cub25sb2FkPW51bGw7YS5sb2FkZWQoKX07Zy5zcmM9Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlU2NyaXB0VVJMKHRoaXMucGF0aCk6dGhpcy5wYXRoO2IuaGVhZC5hcHBlbmRDaGlsZChnKX19ZWxzZSBnb29nLmxvZ1RvQ29uc29sZV8oIkNhbm5vdCB1c2UgZGVmYXVsdCBkZWJ1ZyBsb2FkZXIgb3V0c2lkZSBvZiBIVE1MIGRvY3VtZW50cy4iKSwiZGVwcy5qcyI9PXRoaXMucmVsYXRpdmVQYXRoPyhnb29nLmxvZ1RvQ29uc29sZV8oIkNvbnNpZGVyIHNldHRpbmcgQ0xPU1VSRV9JTVBPUlRfU0NSSVBUIGJlZm9yZSBsb2FkaW5nIGJhc2UuanMsIG9yIHNldHRpbmcgQ0xPU1VSRV9OT19ERVBTIHRvIHRydWUuIiksYS5sb2FkZWQoKSk6YS5wYXVzZSgpfSxnb29nLkVzNk1vZHVsZURlcGVuZGVuY3k9ZnVuY3Rpb24oYSxiLGMsZCxlKXtnb29nLkRlcGVuZGVuY3kuY2FsbCh0aGlzLGEsCmIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLkRlcGVuZGVuY3kpLGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUubG9hZD1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGwsbSl7dmFyIG49IiIscD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuPScgbm9uY2U9IicrcCsnIicpO2w9bT8nPHNjcmlwdCB0eXBlPSJtb2R1bGUiIGNyb3Nzb3JpZ2luJytuKyI+IittKyJceDNjL3NjcmlwdD4iOic8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSInK2wrJyInK24rIj5ceDNjL3NjcmlwdD4iO2Qud3JpdGUoZ29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV8uY3JlYXRlSFRNTChsKTpsKX1mdW5jdGlvbiBjKGwsbSl7dmFyIG49ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtuLmRlZmVyPSEwO24uYXN5bmM9ITE7bi50eXBlPSJtb2R1bGUiO24uc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsCiEwKTt2YXIgcD1nb29nLmdldFNjcmlwdE5vbmNlXygpO3AmJihuLm5vbmNlPXApO20/bi50ZXh0PWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdChtKTptOm4uc3JjPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfP2dvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfLmNyZWF0ZVNjcmlwdFVSTChsKTpsO2QuaGVhZC5hcHBlbmRDaGlsZChuKX1pZihnb29nLmdsb2JhbC5DTE9TVVJFX0lNUE9SVF9TQ1JJUFQpZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKHRoaXMucGF0aCk/YS5sb2FkZWQoKTphLnBhdXNlKCk7ZWxzZSBpZihnb29nLmluSHRtbERvY3VtZW50XygpKXt2YXIgZD1nb29nLmdsb2JhbC5kb2N1bWVudCxlPXRoaXM7aWYoZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKSl7dmFyIGY9Yjtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwfWVsc2UgZj1jO3ZhciBnPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbigpe2dvb2cuRGVwZW5kZW5jeS51bnJlZ2lzdGVyQ2FsbGJhY2tfKGcpOwphLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpfSk7Zih2b2lkIDAsJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrZysnIiknKTtmKHRoaXMucGF0aCx2b2lkIDApO3ZhciBoPWdvb2cuRGVwZW5kZW5jeS5yZWdpc3RlckNhbGxiYWNrXyhmdW5jdGlvbihsKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhoKTthLnJlZ2lzdGVyRXM2TW9kdWxlRXhwb3J0cyhlLnBhdGgsbCxnb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lKX0pO2Yodm9pZCAwLCdpbXBvcnQgKiBhcyBtIGZyb20gIicrdGhpcy5wYXRoKyciOyBnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInK2grJyIsIG0pJyk7dmFyIGs9Z29vZy5EZXBlbmRlbmN5LnJlZ2lzdGVyQ2FsbGJhY2tfKGZ1bmN0aW9uKCl7Z29vZy5EZXBlbmRlbmN5LnVucmVnaXN0ZXJDYWxsYmFja18oayk7YS5jbGVhck1vZHVsZVN0YXRlKCk7YS5sb2FkZWQoKX0pO2Yodm9pZCAwLCdnb29nLkRlcGVuZGVuY3kuY2FsbGJhY2tfKCInKwprKyciKScpfWVsc2UgZ29vZy5sb2dUb0NvbnNvbGVfKCJDYW5ub3QgdXNlIGRlZmF1bHQgZGVidWcgbG9hZGVyIG91dHNpZGUgb2YgSFRNTCBkb2N1bWVudHMuIiksYS5wYXVzZSgpfSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe2dvb2cuRGVwZW5kZW5jeS5jYWxsKHRoaXMsYSxiLGMsZCxlKTt0aGlzLmNvbnRlbnRzXz1udWxsO3RoaXMubGF6eUZldGNoXz0hZ29vZy5pbkh0bWxEb2N1bWVudF8oKXx8ISgibm9Nb2R1bGUiaW4gZ29vZy5nbG9iYWwuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpfSxnb29nLmluaGVyaXRzKGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LGdvb2cuRGVwZW5kZW5jeSksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kucHJvdG90eXBlLmxvYWQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2UuY29udGVudHNfPWdvb2cubG9hZEZpbGVTeW5jXyhlLnBhdGgpO2UuY29udGVudHNfJiYoZS5jb250ZW50c189CmUudHJhbnNmb3JtKGUuY29udGVudHNfKSxlLmNvbnRlbnRzXyYmKGUuY29udGVudHNfKz0iXG4vLyMgc291cmNlVVJMPSIrZS5wYXRoKSl9ZnVuY3Rpb24gYygpe2UubGF6eUZldGNoXyYmYigpO2lmKGUuY29udGVudHNfKXtmJiZhLnNldE1vZHVsZVN0YXRlKGdvb2cuTW9kdWxlVHlwZS5FUzYpO3RyeXt2YXIgbD1lLmNvbnRlbnRzXztlLmNvbnRlbnRzXz1udWxsO2dvb2cuZ2xvYmFsRXZhbChnb29nLkNMT1NVUkVfRVZBTF9QUkVGSUxURVJfLmNyZWF0ZVNjcmlwdChsKSk7aWYoZil2YXIgbT1nb29nLm1vZHVsZUxvYWRlclN0YXRlXy5tb2R1bGVOYW1lfWZpbmFsbHl7ZiYmYS5jbGVhck1vZHVsZVN0YXRlKCl9ZiYmZ29vZy5nbG9iYWwuJGpzY29tcC5yZXF1aXJlLmVuc3VyZShbZS5nZXRQYXRoTmFtZSgpXSxmdW5jdGlvbigpe2EucmVnaXN0ZXJFczZNb2R1bGVFeHBvcnRzKGUucGF0aCxnb29nLmdsb2JhbC4kanNjb21wLnJlcXVpcmUoZS5nZXRQYXRoTmFtZSgpKSxtKX0pO2EubG9hZGVkKCl9fQpmdW5jdGlvbiBkKCl7dmFyIGw9Z29vZy5nbG9iYWwuZG9jdW1lbnQsbT1nb29nLkRlcGVuZGVuY3kucmVnaXN0ZXJDYWxsYmFja18oZnVuY3Rpb24oKXtnb29nLkRlcGVuZGVuY3kudW5yZWdpc3RlckNhbGxiYWNrXyhtKTtjKCl9KSxuPWdvb2cuZ2V0U2NyaXB0Tm9uY2VfKCk7bj0iPHNjcmlwdCIrKG4/JyBub25jZT0iJytuKyciJzoiIikrIj4iK2dvb2cucHJvdGVjdFNjcmlwdFRhZ18oJ2dvb2cuRGVwZW5kZW5jeS5jYWxsYmFja18oIicrbSsnIik7JykrIlx4M2Mvc2NyaXB0PiI7bC53cml0ZShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXz9nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZXy5jcmVhdGVIVE1MKG4pOm4pfXZhciBlPXRoaXM7aWYoZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKWIoKSx0aGlzLmNvbnRlbnRzXyYmZ29vZy5nbG9iYWwuQ0xPU1VSRV9JTVBPUlRfU0NSSVBUKCIiLHRoaXMuY29udGVudHNfKT8odGhpcy5jb250ZW50c189bnVsbCxhLmxvYWRlZCgpKToKYS5wYXVzZSgpO2Vsc2V7dmFyIGY9dGhpcy5sb2FkRmxhZ3MubW9kdWxlPT1nb29nLk1vZHVsZVR5cGUuRVM2O3RoaXMubGF6eUZldGNoX3x8YigpO3ZhciBnPTE8YS5wZW5kaW5nKCkubGVuZ3RoO2lmKGdvb2cuRGVwZW5kZW5jeS5kZWZlcl8mJihnfHxnb29nLmlzRG9jdW1lbnRMb2FkaW5nXygpKSlhLmRlZmVyKGZ1bmN0aW9uKCl7YygpfSk7ZWxzZXt2YXIgaD1nb29nLmdsb2JhbC5kb2N1bWVudDtnPWdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJigiQWN0aXZlWE9iamVjdCJpbiBnb29nLmdsb2JhbHx8Z29vZy5pc0VkZ2VfKCkpO2lmKGYmJmdvb2cuaW5IdG1sRG9jdW1lbnRfKCkmJmdvb2cuaXNEb2N1bWVudExvYWRpbmdfKCkmJiFnKXtnb29nLkRlcGVuZGVuY3kuZGVmZXJfPSEwO2EucGF1c2UoKTt2YXIgaz1oLm9ucmVhZHlzdGF0ZWNoYW5nZTtoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJpbnRlcmFjdGl2ZSI9PWgucmVhZHlTdGF0ZSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPQprLGMoKSxhLnJlc3VtZSgpKTsiZnVuY3Rpb24iPT09dHlwZW9mIGsmJmsuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fWVsc2UgZ29vZy5pbkh0bWxEb2N1bWVudF8oKSYmZ29vZy5pc0RvY3VtZW50TG9hZGluZ18oKT9kKCk6YygpfX19LGdvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LnByb3RvdHlwZS50cmFuc2Zvcm09ZnVuY3Rpb24oYSl7fSxnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYixjLGQsZSl7Z29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kuY2FsbCh0aGlzLGEsYixjLGQsZSl9LGdvb2cuaW5oZXJpdHMoZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeSxnb29nLlRyYW5zZm9ybWVkRGVwZW5kZW5jeSksZ29vZy5QcmVUcmFuc3BpbGVkRXM2TW9kdWxlRGVwZW5kZW5jeS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGEpe3JldHVybiBhfSxnb29nLkdvb2dNb2R1bGVEZXBlbmRlbmN5PWZ1bmN0aW9uKGEsYiwKYyxkLGUpe2dvb2cuVHJhbnNmb3JtZWREZXBlbmRlbmN5LmNhbGwodGhpcyxhLGIsYyxkLGUpfSxnb29nLmluaGVyaXRzKGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3ksZ29vZy5UcmFuc2Zvcm1lZERlcGVuZGVuY3kpLGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3kucHJvdG90eXBlLnRyYW5zZm9ybT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5MT0FEX01PRFVMRV9VU0lOR19FVkFMJiZ2b2lkIDAhPT1nb29nLmdsb2JhbC5KU09OPyJnb29nLmxvYWRNb2R1bGUoIitnb29nLmdsb2JhbC5KU09OLnN0cmluZ2lmeShhKyJcbi8vIyBzb3VyY2VVUkw9Iit0aGlzLnBhdGgrIlxuIikrIik7IjonZ29vZy5sb2FkTW9kdWxlKGZ1bmN0aW9uKGV4cG9ydHMpIHsidXNlIHN0cmljdCI7JythKyJcbjtyZXR1cm4gZXhwb3J0c30pO1xuLy8jIHNvdXJjZVVSTD0iK3RoaXMucGF0aCsiXG4ifSxnb29nLkRlYnVnTG9hZGVyXy5wcm90b3R5cGUuYWRkRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkKXtiPQpifHxbXTthPWEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBlPWdvb2cubm9ybWFsaXplUGF0aF8oZ29vZy5iYXNlUGF0aCthKTtkJiYiYm9vbGVhbiIhPT10eXBlb2YgZHx8KGQ9ZD97bW9kdWxlOmdvb2cuTW9kdWxlVHlwZS5HT09HfTp7fSk7Yz10aGlzLmZhY3RvcnlfLmNyZWF0ZURlcGVuZGVuY3koZSxhLGIsYyxkKTt0aGlzLmRlcGVuZGVuY2llc19bZV09Yztmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuaWRUb1BhdGhfW2JbY11dPWU7dGhpcy5pZFRvUGF0aF9bYV09ZX0sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeT1mdW5jdGlvbigpe30sZ29vZy5EZXBlbmRlbmN5RmFjdG9yeS5wcm90b3R5cGUuY3JlYXRlRGVwZW5kZW5jeT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBlLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkdPT0c/bmV3IGdvb2cuR29vZ01vZHVsZURlcGVuZGVuY3koYSxiLGMsZCxlKTplLm1vZHVsZT09Z29vZy5Nb2R1bGVUeXBlLkVTNj9nb29nLkFTU1VNRV9FU19NT0RVTEVTX1RSQU5TUElMRUQ/Cm5ldyBnb29nLlByZVRyYW5zcGlsZWRFczZNb2R1bGVEZXBlbmRlbmN5KGEsYixjLGQsZSk6bmV3IGdvb2cuRXM2TW9kdWxlRGVwZW5kZW5jeShhLGIsYyxkLGUpOm5ldyBnb29nLkRlcGVuZGVuY3koYSxiLGMsZCxlKX0sZ29vZy5kZWJ1Z0xvYWRlcl89bmV3IGdvb2cuRGVidWdMb2FkZXJfLGdvb2cubG9hZENsb3N1cmVEZXBzPWZ1bmN0aW9uKCl7Z29vZy5kZWJ1Z0xvYWRlcl8ubG9hZENsb3N1cmVEZXBzKCl9LGdvb2cuc2V0RGVwZW5kZW5jeUZhY3Rvcnk9ZnVuY3Rpb24oYSl7Z29vZy5kZWJ1Z0xvYWRlcl8uc2V0RGVwZW5kZW5jeUZhY3RvcnkoYSl9LGdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfPWdvb2cuVFJVU1RFRF9UWVBFU19QT0xJQ1lfTkFNRT9nb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeShnb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUUrIiNiYXNlIik6bnVsbCxnb29nLmdsb2JhbC5DTE9TVVJFX05PX0RFUFN8fGdvb2cuZGVidWdMb2FkZXJfLmxvYWRDbG9zdXJlRGVwcygpLApnb29nLmJvb3RzdHJhcD1mdW5jdGlvbihhLGIpe2dvb2cuZGVidWdMb2FkZXJfLmJvb3RzdHJhcChhLGIpfSk7aWYoIUNPTVBJTEVEKXt2YXIgaXNDaHJvbWU4Nz0hMTt0cnl7aXNDaHJvbWU4Nz1ldmFsKGdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eVNjcmlwdCkhPT1nb29nLmdsb2JhbC50cnVzdGVkVHlwZXMuZW1wdHlTY3JpcHR9Y2F0Y2goYSl7fWdvb2cuQ0xPU1VSRV9FVkFMX1BSRUZJTFRFUl89Z29vZy5nbG9iYWwudHJ1c3RlZFR5cGVzJiZpc0Nocm9tZTg3JiZnb29nLmNyZWF0ZVRydXN0ZWRUeXBlc1BvbGljeSgiZ29vZyNiYXNlI2Rldm9ubHkjZXZhbCIpfHx7Y3JlYXRlU2NyaXB0Omdvb2cuaWRlbnRpdHlffX07Y29uc3QgcHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz1TeW1ib2woIkNvbWxpbmsucHJveHkiKSxjcmVhdGVFbmRwb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5lbmRwb2ludCIpLHJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSx0aHJvd01hcmtlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxpc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPWE9PiJvYmplY3QiPT09dHlwZW9mIGEmJm51bGwhPT1hfHwiZnVuY3Rpb24iPT09dHlwZW9mIGEscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz0Ke2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiZhW3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdLHNlcmlhbGl6ZShhKXtjb25zdCB7cG9ydDE6Yixwb3J0MjpjfT1uZXcgTWVzc2FnZUNoYW5uZWw7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKTtyZXR1cm5bYyxbY11dfSxkZXNlcmlhbGl6ZShhKXthLnN0YXJ0KCk7cmV0dXJuIHdyYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKX19LHRocm93VHJhbnNmZXJIYW5kbGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9e2NhbkhhbmRsZTphPT5pc09iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpJiYKdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyBpbiBhLHNlcmlhbGl6ZSh7dmFsdWU6YX0pe3JldHVyblthIGluc3RhbmNlb2YgRXJyb3I/e2lzRXJyb3I6ITAsdmFsdWU6e21lc3NhZ2U6YS5tZXNzYWdlLG5hbWU6YS5uYW1lLHN0YWNrOmEuc3RhY2t9fTp7aXNFcnJvcjohMSx2YWx1ZTphfSxbXV19LGRlc2VyaWFsaXplKGEpe2lmKGEuaXNFcnJvcil0aHJvdyBPYmplY3QuYXNzaWduKEVycm9yKGEudmFsdWUubWVzc2FnZSksYS52YWx1ZSk7dGhyb3cgYS52YWx1ZTt9fSx0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM9bmV3IE1hcChbWyJwcm94eSIscHJveHlUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc10sWyJ0aHJvdyIsdGhyb3dUcmFuc2ZlckhhbmRsZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc11dKTsKZnVuY3Rpb24gZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiPXNlbGYpe2IuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZnVuY3Rpb24gZShkKXtpZihkJiZkLmRhdGEpe3ZhciB7aWQ6Zix0eXBlOmcscGF0aDpofT1PYmplY3QuYXNzaWduKHtwYXRoOltdfSxkLmRhdGEpLGs9KGQuZGF0YS5hcmd1bWVudExpc3R8fFtdKS5tYXAoZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTt0cnl7Y29uc3QgbT1oLnNsaWNlKDAsLTEpLnJlZHVjZSgocCxxKT0+cFtxXSxhKSxuPWgucmVkdWNlKChwLHEpPT5wW3FdLGEpO3N3aXRjaChnKXtjYXNlICJHRVQiOnZhciBsPW47YnJlYWs7Y2FzZSAiU0VUIjptW2guc2xpY2UoLTEpWzBdXT1mcm9tV2lyZVZhbHVlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZC5kYXRhLnZhbHVlKTsKbD0hMDticmVhaztjYXNlICJBUFBMWSI6bD1uLmFwcGx5KG0sayk7YnJlYWs7Y2FzZSAiQ09OU1RSVUNUIjpjb25zdCBwPW5ldyBuKC4uLmspO2w9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhwKTticmVhaztjYXNlICJFTkRQT0lOVCI6Y29uc3Qge3BvcnQxOnEscG9ydDI6dX09bmV3IE1lc3NhZ2VDaGFubmVsO2V4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsdSk7bD10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKHEsW3FdKTticmVhaztjYXNlICJSRUxFQVNFIjpsPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2gobSl7bD17dmFsdWU6bSxbdGhyb3dNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qc106MH19UHJvbWlzZS5yZXNvbHZlKGwpLmNhdGNoKG09Pgooe3ZhbHVlOm0sW3Rocm93TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOjB9KSkudGhlbihtPT57Y29uc3QgW24scF09dG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhtKTtiLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxuKSx7aWQ6Zn0pLHApOyJSRUxFQVNFIj09PWcmJihiLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGUpLGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhiKSl9KX19KTtiLnN0YXJ0JiZiLnN0YXJ0KCl9ZnVuY3Rpb24gaXNNZXNzYWdlUG9ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3JldHVybiJNZXNzYWdlUG9ydCI9PT1hLmNvbnN0cnVjdG9yLm5hbWV9CmZ1bmN0aW9uIGNsb3NlRW5kUG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtpc01lc3NhZ2VQb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSkmJmEuY2xvc2UoKX1mdW5jdGlvbiB3cmFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXtyZXR1cm4gY3JlYXRlUHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLFtdLGIpfWZ1bmN0aW9uIHRocm93SWZQcm94eVJlbGVhc2VkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7aWYoYSl0aHJvdyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIik7fQpmdW5jdGlvbiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsYj1bXSxjPWZ1bmN0aW9uKCl7fSl7bGV0IGQ9ITE7Y29uc3QgZT1uZXcgUHJveHkoYyx7Z2V0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtpZihnPT09cmVsZWFzZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMpcmV0dXJuKCk9PnJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJSRUxFQVNFIixwYXRoOmIubWFwKGg9PmgudG9TdHJpbmcoKSl9KS50aGVuKCgpPT57Y2xvc2VFbmRQb2ludCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpO2Q9ITB9KTtpZigidGhlbiI9PT0KZyl7aWYoMD09PWIubGVuZ3RoKXJldHVybnt0aGVuOigpPT5lfTtmPXJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLHt0eXBlOiJHRVQiLHBhdGg6Yi5tYXAoaD0+aC50b1N0cmluZygpKX0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtyZXR1cm4gZi50aGVuLmJpbmQoZil9cmV0dXJuIGNyZWF0ZVByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxbLi4uYixnXSl9LHNldChmLGcsaCl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbayxsXT10b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGgpO3JldHVybiByZXF1ZXN0UmVzcG9uc2VNZXNzYWdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSwKe3R5cGU6IlNFVCIscGF0aDpbLi4uYixnXS5tYXAobT0+bS50b1N0cmluZygpKSx2YWx1ZTprfSxsKS50aGVuKGZyb21XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyl9LGFwcGx5KGYsZyxoKXt0aHJvd0lmUHJveHlSZWxlYXNlZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGQpO2Y9YltiLmxlbmd0aC0xXTtpZihmPT09Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkVORFBPSU5UIn0pLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKTtpZigiYmluZCI9PT1mKXJldHVybiBjcmVhdGVQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEsCmIuc2xpY2UoMCwtMSkpO2NvbnN0IFtrLGxdPXByb2Nlc3NBcmd1bWVudHMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhoKTtyZXR1cm4gcmVxdWVzdFJlc3BvbnNlTWVzc2FnZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEse3R5cGU6IkFQUExZIixwYXRoOmIubWFwKG09Pm0udG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omt9LGwpLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX0sY29uc3RydWN0KGYsZyl7dGhyb3dJZlByb3h5UmVsZWFzZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhkKTtjb25zdCBbaCxrXT1wcm9jZXNzQXJndW1lbnRzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoZyk7cmV0dXJuIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLAp7dHlwZToiQ09OU1RSVUNUIixwYXRoOmIubWFwKGw9PmwudG9TdHJpbmcoKSksYXJndW1lbnRMaXN0Omh9LGspLnRoZW4oZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKX19KTtyZXR1cm4gZX1mdW5jdGlvbiBteUZsYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhKX0KZnVuY3Rpb24gcHJvY2Vzc0FyZ3VtZW50cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2E9YS5tYXAodG9XaXJlVmFsdWUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyk7cmV0dXJuW2EubWFwKGI9PmJbMF0pLG15RmxhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEubWFwKGI9PmJbMV0pKV19Y29uc3QgdHJhbnNmZXJDYWNoZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHRyYW5zZmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSxiKXt0cmFuc2ZlckNhY2hlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuc2V0KGEsYik7cmV0dXJuIGF9CmZ1bmN0aW9uIHByb3h5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoYSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oYSx7W3Byb3h5TWFya2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanNdOiEwfSl9ZnVuY3Rpb24gd2luZG93RW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGI9c2VsZixjPSIqIil7cmV0dXJue3Bvc3RNZXNzYWdlOihkLGUpPT5hLnBvc3RNZXNzYWdlKGQsYyxlKSxhZGRFdmVudExpc3RlbmVyOmIuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKGIpLHJlbW92ZUV2ZW50TGlzdGVuZXI6Yi5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQoYil9fQpmdW5jdGlvbiB0b1dpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe2Zvcihjb25zdCBbYixjXW9mIHRyYW5zZmVySGFuZGxlcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcylpZihjLmNhbkhhbmRsZShhKSl7Y29uc3QgW2QsZV09Yy5zZXJpYWxpemUoYSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOmIsdmFsdWU6ZH0sZV19cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmF9LHRyYW5zZmVyQ2FjaGUkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy5nZXQoYSl8fFtdXX0KZnVuY3Rpb24gZnJvbVdpcmVWYWx1ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgIkhBTkRMRVIiOnJldHVybiB0cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZ2V0KGEubmFtZSkuZGVzZXJpYWxpemUoYS52YWx1ZSk7Y2FzZSAiUkFXIjpyZXR1cm4gYS52YWx1ZX19CmZ1bmN0aW9uIHJlcXVlc3RSZXNwb25zZU1lc3NhZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcyhhLGIsYyl7cmV0dXJuIG5ldyBQcm9taXNlKGQ9Pntjb25zdCBlPWdlbmVyYXRlVVVJRCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzKCk7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbiBoKGcpe2cuZGF0YSYmZy5kYXRhLmlkJiZnLmRhdGEuaWQ9PT1lJiYoYS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixoKSxkKGcuZGF0YSkpfSk7YS5zdGFydCYmYS5zdGFydCgpO2EucG9zdE1lc3NhZ2UoT2JqZWN0LmFzc2lnbih7aWQ6ZX0sYiksYyl9KX0KZnVuY3Rpb24gZ2VuZXJhdGVVVUlEJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMoKXtyZXR1cm4gQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCk9Pk1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikudG9TdHJpbmcoMTYpKS5qb2luKCItIil9dmFyIG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcz17fTttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuY3JlYXRlRW5kcG9pbnQ9Y3JlYXRlRW5kcG9pbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMuZXhwb3NlPWV4cG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHk9cHJveHkkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucHJveHlNYXJrZXI9cHJveHlNYXJrZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMucmVsZWFzZVByb3h5PXJlbGVhc2VQcm94eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkY29tbGluayRkaXN0JGVzbSRjb21saW5rX21qcy50cmFuc2Zlcj10cmFuc2ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanMudHJhbnNmZXJIYW5kbGVycz10cmFuc2ZlckhhbmRsZXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndpbmRvd0VuZHBvaW50PXdpbmRvd0VuZHBvaW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzLndyYXA9d3JhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRjb21saW5rJGRpc3QkZXNtJGNvbWxpbmtfbWpzO2Z1bmN0aW9uIE1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlKCl7fU1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5yZWFkeT0hMTtNZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5wcm90b3R5cGUucG9ydD12b2lkIDA7TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUucHJvdG90eXBlLnBvc3Q9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS5icm9hZGNhc3RQbGF5U3RhdGU9KCk9Pnt9O01lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS53b3JrZXJTdGF0ZT12b2lkIDA7Ck1lc3NhZ2VQb3J0U3RhdGUkJG1vZHVsZSRzcmMkdXRpbHMkbWVzc2FnZV9wb3J0X3N0YXRlLnByb3RvdHlwZS52YW5pbGxhV29ya2VyU3RhdGU9dm9pZCAwO3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9TWVzc2FnZVBvcnRTdGF0ZSQkbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUsbW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGU9e307bW9kdWxlJHNyYyR1dGlscyRtZXNzYWdlX3BvcnRfc3RhdGUuTWVzc2FnZVBvcnRTdGF0ZT1NZXNzYWdlUG9ydFN0YXRlJCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTttb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZS5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTtjb25zdCBjc291bmRDcmVhdGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uPWE9PigpPT5hLmV4cG9ydHMuY3NvdW5kQ3JlYXRlV2FzaSgpO2Nzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJjcmVhdGUgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kRGVzdHJveShiKTtjc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi50b1N0cmluZz0oKT0+ImRlc3Ryb3kgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQ7Ijtjb25zdCBjc291bmRHZXRBUElWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbj1hPT4oKT0+YS5leHBvcnRzLmNzb3VuZEdldEFQSVZlcnNpb24oKTsKY3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRBUElWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KCk9PmEuZXhwb3J0cy5jc291bmRHZXRWZXJzaW9uKCk7Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24udG9TdHJpbmc9KCk9PiJnZXRWZXJzaW9uID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kSW5pdGlhbGl6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249YT0+KGIsYyk9PmEuZXhwb3J0cy5jc291bmRJbml0aWFsaXplKGMpO2Nzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLnRvU3RyaW5nPSgpPT4iaW5pdGlhbGl6ZSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwp2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb249e307bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kQ3JlYXRlPWNzb3VuZENyZWF0ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kRGVzdHJveT1jc291bmREZXN0cm95JCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjttb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbi5jc291bmRHZXRBUElWZXJzaW9uPWNzb3VuZEdldEFQSVZlcnNpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uO21vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLmNzb3VuZEdldFZlcnNpb249Y3NvdW5kR2V0VmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb247bW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24uY3NvdW5kSW5pdGlhbGl6ZT1jc291bmRJbml0aWFsaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbjtjb25zdCBXSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzPTE7ZnVuY3Rpb24gVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoKXt0aGlzLmVuY29kaW5nPSJ1dGY4IjtyZXR1cm4gdGhpc31UZXh0RW5jb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcigicGFzc2VkIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgIithKyIgIit0eXBlb2YgYSk7YT11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYSkpO2NvbnN0IGI9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgpO1suLi5hXS5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7YltkXT1jLmNvZGVQb2ludEF0KDApfSk7cmV0dXJuIGJ9OwpmdW5jdGlvbiBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycygpe3RoaXMuZW5jb2Rpbmc9InV0ZjgiO3RoaXMuaWdub3JlQk9NPSExO3RoaXMudHJpbU51bGw9YT0+e2NvbnN0IGI9YS5pbmRleE9mKCJceDAwIik7cmV0dXJuLTE8Yj9hLnNsaWNlKDAsTWF0aC5tYXgoMCxiKSk6YX07dGhpcy5kZWNvZGU9ZnVuY3Rpb24oYSxiKXtpZih2b2lkIDA9PT1hKXJldHVybiIiO2lmKCJib29sZWFuIiE9PXR5cGVvZih2b2lkIDAhPT1iJiYic3RyZWFtImluIGI/Yi5zdHJlYW06ITEpKXRocm93IG5ldyBUeXBlRXJyb3IoInN0cmVhbSBvcHRpb24gbXVzdCBiZSBib29sZWFuIik7aWYoQXJyYXlCdWZmZXIuaXNWaWV3KGEpKXthPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGEuYnl0ZU9mZnNldCxhLmJ5dGVMZW5ndGgpO2NvbnN0IGM9QXJyYXkuZnJvbSh7bGVuZ3RoOmEubGVuZ3RofSk7YS5mb3JFYWNoKGZ1bmN0aW9uKGQsZSl7Y1tlXT1TdHJpbmcuZnJvbUNvZGVQb2ludChkKX0pOwpyZXR1cm4gdGhpcy50cmltTnVsbChjLmpvaW4oIiIpKX10aHJvdyBuZXcgVHlwZUVycm9yKCJwYXNzZWQgYXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIgdmlldyIpO319CmNvbnN0IGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1XSVRIX1RFWFRfRU5DT0RFUl9QT0xZRklMTCQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzP25ldyBUZXh0RGVjb2RlclBvbHkkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczpuZXcgVGV4dERlY29kZXIoInV0ZjgiKSxlbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9V0lUSF9URVhUX0VOQ09ERVJfUE9MWUZJTEwkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz9uZXcgVGV4dEVuY29kZXJQb2x5JCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM6bmV3IFRleHRFbmNvZGVyKCJ1dGY4IiksdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycz1hPT5kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKGEpO3ZhciBtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM9e307Cm1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGVyPWRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVyczttb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2Rlcj1lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7bW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLnVpbnQyU3RyaW5nPXVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnM7Y29uc3QgdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsPWE9Pntjb25zdCBiPWEuaW5kZXhPZigiXHgwMCIpO3JldHVybi0xPGI/YS5zdWJzdHIoMCxiKTphfTt2YXIgbW9kdWxlJHNyYyR1dGlscyR0cmltX251bGw9e307bW9kdWxlJHNyYyR1dGlscyR0cmltX251bGwudHJpbU51bGw9dHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsO2NvbnN0IGZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57YS5leHBvcnRzLmZyZWVTdHJpbmdNZW0oYil9LHB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzPShhLGIpPT57KHtidWZmZXI6YX09YS53YXNpLm1lbW9yeSk7Yj1uZXcgVWludDhBcnJheShhLGIpO2I9dWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhiKTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKGIpfSxzdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycz0oYSxiKT0+e2lmKCJzdHJpbmciIT09dHlwZW9mIGIpY29uc29sZS5lcnJvcigiRXhwZWN0ZWQgc3RyaW5nIGJ1dCBnb3QiLHR5cGVvZiBiKTtlbHNle2I9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShiKTt2YXIgYz1hLmV4cG9ydHMuYWxsb2NTdHJpbmdNZW0oYi5sZW5ndGgpOwooe2J1ZmZlcjphfT1hLndhc2kubWVtb3J5KTsobmV3IFVpbnQ4QXJyYXkoYSxjLGIubGVuZ3RoKzEpKS5zZXQoYik7cmV0dXJuIGN9fTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM9e307bW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMuZnJlZVN0cmluZ1B0cj1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVyczttb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycy5wdHIyc3RyaW5nPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzO21vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzLnN0cmluZzJwdHI9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnM7Y29uc3QgY3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFBhcnNlT3JjKGIsYyk7Y3NvdW5kUGFyc2VPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBhcnNlT3JjID0gYXN5bmMgKG9yY2hlc3RyYSkgPT4gT2JqZWN0OyI7Y29uc3QgY3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZENvbXBpbGVUcmVlKGIsYyk7Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVUcmVlID0gYXN5bmMgKHRyZWUpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kQ29tcGlsZU9yYyhiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVPcmMgPSBhc3luYyAob3JjaGVzdHJhKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT4oYixjKT0+e2M9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtiPWEuZXhwb3J0cy5jc291bmRFdmFsQ29kZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZEV2YWxDb2RlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjc291bmRFdmFsQ29kZSA9IGFzeW5jIChvcmNoZXN0cmEpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFN0YXJ0V2FzaShiKTtjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4ic3RhcnQgPSBhc3luYyAoKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2xldCBkO3RyeXtkPWEuZXhwb3J0cy5jc291bmRDb21waWxlQ3NkKGIsYyl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX1mcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBkfTtjc291bmRDb21waWxlQ3NkJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJjb21waWxlQ3NkID0gYXN5bmMgKHBhdGgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRDb21waWxlQ3NkVGV4dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZENvbXBpbGVDc2RUZXh0KGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNvbXBpbGVDc2RUZXh0ID0gYXN5bmMgKGNzb3VuZERvY3VtZW50KSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFBlcmZvcm0oYik7Y3NvdW5kUGVyZm9ybSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLnRvU3RyaW5nPSgpPT4icGVyZm9ybSA9IGFzeW5jICgpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUtzbXBzV2FzaShiKTtjc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InBlcmZvcm1Lc21wcyA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFBlcmZvcm1CdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kUGVyZm9ybUJ1ZmZlcihiKTtjc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJwZXJmb3JtQnVmZmVyID0gYXN5bmMgKGNzb3VuZCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTdG9wKGIpOwpjc291bmRTdG9wJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UudG9TdHJpbmc9KCk9PiJzdG9wID0gYXN5bmMgKCkgPT4gdW5kZWZpbmVkOyI7Y29uc3QgY3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRDbGVhbnVwKGIpO2Nzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+ImNsZWFudXAgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlPWE9PmI9PmEuZXhwb3J0cy5jc291bmRSZXNldFdhc2koYik7Y3NvdW5kUmVzZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS50b1N0cmluZz0oKT0+InJlc2V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZT17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENsZWFudXA9Y3NvdW5kQ2xlYW51cCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRDb21waWxlQ3NkPWNzb3VuZENvbXBpbGVDc2QkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZUNzZFRleHQ9Y3NvdW5kQ29tcGlsZUNzZFRleHQkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kQ29tcGlsZU9yYz1jc291bmRDb21waWxlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZENvbXBpbGVUcmVlPWNzb3VuZENvbXBpbGVUcmVlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7Cm1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRFdmFsQ29kZT1jc291bmRFdmFsQ29kZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQYXJzZU9yYz1jc291bmRQYXJzZU9yYyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO21vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZS5jc291bmRQZXJmb3JtPWNzb3VuZFBlcmZvcm0kJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTttb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UuY3NvdW5kUGVyZm9ybUJ1ZmZlcj1jc291bmRQZXJmb3JtQnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFBlcmZvcm1Lc21wcz1jc291bmRQZXJmb3JtS3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFJlc2V0PWNzb3VuZFJlc2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0YXJ0PWNzb3VuZFN0YXJ0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2U7bW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLmNzb3VuZFN0b3A9Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlO2NvbnN0IHNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXM9e2ludDo0LE1ZRkxUOjQsY2hhcjoxfSxzaXplb2ZTdHJ1Y3QkJG1vZHVsZSRzcmMkdXRpbHMkbmF0aXZlX3NpemVzPWE9PmEucmVkdWNlKChiLFssYywuLi5kXSk9PmIrKCJjaGFyIj09PWM/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tjXSpkWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbY10pLDApO3ZhciBtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcz17fTttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplT2ZQcmltaXRpdmU9c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplczttb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcy5zaXplb2ZTdHJ1Y3Q9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcztjb25zdCBzdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD0oYSxiKT0+e1thXT1hLnJlZHVjZSgoW2MsZF0sW2UsZiwuLi5nXSk9PntnPSJjaGFyIj09PWY/c2l6ZU9mUHJpbWl0aXZlJCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplc1tmXSpnWzBdOnNpemVPZlByaW1pdGl2ZSQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXNbZl07Zj0iY2hhciI9PT1mP3RyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGIuc3ViYXJyYXkoZCxnKSkpfHwiIjpiW2RdO2NbZV09ZjtyZXR1cm5bYyxkK2ddfSxbe30sMF0pO3JldHVybiBhfTt2YXIgbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdD17fTsKbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdC5zdHJ1Y3RCdWZmZXJUb09iamVjdD1zdHJ1Y3RCdWZmZXJUb09iamVjdCQkbW9kdWxlJHNyYyR1dGlscyRzdHJ1Y3R1cmVfYnVmZmVyX3RvX29iamVjdDtjb25zdCBDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGVidWdfbW9kZSIsImludCJdLFsiYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiaGFyZHdhcmVfYnVmZmVyX2ZyYW1lcyIsImludCJdLFsiZGlzcGxheXMiLCJpbnQiXSxbImFzY2lpX2dyYXBocyIsImludCJdLFsicG9zdHNjcmlwdF9ncmFwaHMiLCJpbnQiXSxbIm1lc3NhZ2VfbGV2ZWwiLCJpbnQiXSxbInRlbXBvIiwiaW50Il0sWyJyaW5nX2JlbGwiLCJpbnQiXSxbInVzZV9jc2NvcmUiLCJpbnQiXSxbInRlcm1pbmF0ZV9vbl9taWRpIiwiaW50Il0sWyJoZWFydGJlYXQiLCJpbnQiXSxbImRlZmVyX2dlbjAxX2xvYWQiLCJpbnQiXSxbIm1pZGlfa2V5IiwiaW50Il0sWyJtaWRpX2tleV9jcHMiLCJpbnQiXSxbIm1pZGlfa2V5X29jdCIsImludCJdLFsibWlkaV9rZXlfcGNoIiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5IiwiaW50Il0sWyJtaWRpX3ZlbG9jaXR5X2FtcCIsImludCJdLFsibm9fZGVmYXVsdF9wYXRocyIsCiJpbnQiXSxbIm51bWJlcl9vZl90aHJlYWRzIiwiaW50Il0sWyJzeW50YXhfY2hlY2tfb25seSIsImludCJdLFsiY3NkX2xpbmVfY291bnRzIiwiaW50Il0sWyJjb21wdXRlX3dlaWdodHMiLCJpbnQiXSxbInJlYWx0aW1lX21vZGUiLCJpbnQiXSxbInNhbXBsZV9hY2N1cmF0ZSIsImludCJdLFsic2FtcGxlX3JhdGVfb3ZlcnJpZGUiLCJNWUZMVCJdLFsiY29udHJvbF9yYXRlX292ZXJyaWRlIiwiTVlGTFQiXSxbIm5jaG5sc19vdmVycmlkZSIsImludCJdLFsibmNobmxzX2lfb3ZlcnJpZGUiLCJpbnQiXSxbImUwZGJmc19vdmVycmlkZSIsIk1ZRkxUIl0sWyJkYWVtb24iLCJpbnQiXSxbImtzbXBzX292ZXJyaWRlIiwiaW50Il0sWyJGRlRfbGlicmFyeSIsImludCJdXSxDU19NSURJREVWSUNFJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXM9W1siZGV2aWNlX25hbWUiLCJjaGFyIiw2NF0sWyJpbnRlcmZhY2VfbmFtZSIsImNoYXIiLDY0XSxbImRldmljZV9pZCIsImNoYXIiLDY0XSxbIm1pZGlfbW9kdWxlIiwKImNoYXIiLDY0XSxbImlzT3V0cHV0IiwiaW50Il1dO3ZhciBtb2R1bGUkc3JjJHN0cnVjdHVyZXM9e307Y29uc3QgY3NvdW5kR2V0U3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcihiKTtjc291bmRHZXRTciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRTciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEtyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0S3IoYik7Y3NvdW5kR2V0S3IkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0S3IgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRLc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEtzbXBzKGIpO2Nzb3VuZEdldEtzbXBzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldEtzbXBzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldE5jaG5scyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE5jaG5scyhiKTtjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0TmNobmxzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0TmNobmxzSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXROY2hubHNJbnB1dChiKTtjc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXROY2hubHNJbnB1dCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0MGRCRlMoYik7CmNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldDBkQkZTID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRBNChiKTtjc291bmRHZXRBNCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJnZXRBNCA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcyhiKTtjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0Q3VycmVudFRpbWVTYW1wbGVzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNpemVPZk1ZRkxUJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQoYik7Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0U2l6ZU9mTVlGTFQgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFNldE9wdGlvbihiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMudG9TdHJpbmc9KCk9PiJzZXRPcHRpb24gPSBhc3luYyAob3B0aW9uKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcz1hPT4oYixjKT0+e2EuZXhwb3J0cy5jc291bmRTZXRQYXJhbXMoYixjKX07Y3NvdW5kU2V0UGFyYW1zJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldFBhcmFtcyA9IGFzeW5jIChjc291bmRQYXJhbXMpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2NvbnN0IGQ9c2l6ZW9mU3RydWN0JCRtb2R1bGUkc3JjJHV0aWxzJG5hdGl2ZV9zaXplcyhDU09VTkRfUEFSQU1TJCRtb2R1bGUkc3JjJHN0cnVjdHVyZXMpLGU9YS5leHBvcnRzLmFsbG9jQ3NvdW5kUGFyYW1zU3RydWN0KCk7Yz1uZXcgVWludDhBcnJheShjLGUsZCk7YS5leHBvcnRzLmNzb3VuZEdldFBhcmFtcyhiLGUpO2I9c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NPVU5EX1BBUkFNUyQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGMpO2EuZXhwb3J0cy5mcmVlQ3NvdW5kUGFyYW1zKGUpO3JldHVybiBifTtjc291bmRHZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLnRvU3RyaW5nPSgpPT4iZ2V0UGFyYW1zID0gYXN5bmMgKCkgPT4gQ1NPVU5EX1BBUkFNUzsiOwpjb25zdCBjc291bmRHZXREZWJ1ZyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldERlYnVnKGIpO2Nzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+ImdldERlYnVnID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPWE9PihiLGMpPT57YS5leHBvcnRzLmNzb3VuZFNldERlYnVnKGIsYyl9O2Nzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy50b1N0cmluZz0oKT0+InNldERlYnVnID0gYXN5bmMgKG51bWJlcikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldDBkQkZTPWNzb3VuZEdldDBkQkZTJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0QTQ9Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldEN1cnJlbnRUaW1lU2FtcGxlcz1jc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldERlYnVnPWNzb3VuZEdldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXRLcj1jc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0S3NtcHM9Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzOwptb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHM9Y3NvdW5kR2V0TmNobmxzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczttb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcy5jc291bmRHZXROY2hubHNJbnB1dD1jc291bmRHZXROY2hubHNJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0UGFyYW1zPWNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXM7bW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kR2V0U2l6ZU9mTVlGTFQ9Y3NvdW5kR2V0U2l6ZU9mTVlGTFQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZEdldFNyPWNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlczsKbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMuY3NvdW5kU2V0RGVidWc9Y3NvdW5kU2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldE9wdGlvbj1jc291bmRTZXRPcHRpb24kJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO21vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLmNzb3VuZFNldFBhcmFtcz1jc291bmRTZXRQYXJhbXMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzO2NvbnN0IGNzb3VuZEdldElucHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldElucHV0QnVmZmVyU2l6ZShiKTtjc291bmRHZXRJbnB1dEJ1ZmZlclNpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldE91dHB1dEJ1ZmZlclNpemUoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXRCdWZmZXJTaXplID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7Y29uc3QgY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRJbnB1dEJ1ZmZlcihiKTsKY3NvdW5kR2V0SW5wdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0SW5wdXRCdWZmZXIgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRPdXRwdXRCdWZmZXIkJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXRCdWZmZXIoYik7Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldE91dHB1dEJ1ZmZlciA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTcGluKGIpO2Nzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLnRvU3RyaW5nPSgpPT4iZ2V0U3BpbiA9IGFzeW5jIChjc291bmQpID0+IE51bWJlcjsiOwpjb25zdCBjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW89YT0+Yj0+YS5leHBvcnRzLmNzb3VuZEdldFNwb3V0KGIpO2Nzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby50b1N0cmluZz0oKT0+ImdldFNwb3V0ID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvPXt9O21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldElucHV0QnVmZmVyPWNzb3VuZEdldElucHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRJbnB1dEJ1ZmZlclNpemU9Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRPdXRwdXRCdWZmZXI9Y3NvdW5kR2V0T3V0cHV0QnVmZmVyJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzsKbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8uY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZT1jc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbzttb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpby5jc291bmRHZXRTcGluPWNzb3VuZEdldFNwaW4kJG1vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvO21vZHVsZSRzcmMkbW9kdWxlcyRydGF1ZGlvLmNzb3VuZEdldFNwb3V0PWNzb3VuZEdldFNwb3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbztmdW5jdGlvbiBhZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5hZGQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOk51bWJlcihhKStOdW1iZXIoYil9Y29uc3QgY2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSk7ZnVuY3Rpb24gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9W10pe3JldHVybiguLi5jKT0+e2M9Wy4uLmIsLi4uY107cmV0dXJuIGMubGVuZ3RoPj1hLmxlbmd0aD9hKC4uLmMpOmN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKX19CmZ1bmN0aW9uIGFkanVzdEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2NvbnN0IGQ9MD5hP2MubGVuZ3RoK2E6YTtpZihhPj1jLmxlbmd0aHx8MD5kKXJldHVybiBjO2E9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7YVtkXT1iKGFbZF0pO3JldHVybiBhfWNvbnN0IGFkanVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYWRqdXN0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7Zm9yKGxldCBjPTA7YzxiLmxlbmd0aDtjKyspaWYoIWEoYltjXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gYWxsUGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+e2xldCBjPTA7Zm9yKDtjPGEubGVuZ3RoOyl7aWYoIWFbY10oLi4uYikpcmV0dXJuITE7YysrfXJldHVybiEwfX1mdW5jdGlvbiBhbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYj0+YX0KZnVuY3Rpb24gYW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJiZifWZ1bmN0aW9uIGFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9MDtmb3IoO2M8Yi5sZW5ndGg7KXtpZihhKGJbY10sYykpcmV0dXJuITA7YysrfXJldHVybiExfQpmdW5jdGlvbiBhbnlQYXNzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuKC4uLmIpPT57bGV0IGM9MDtmb3IoO2M8YS5sZW5ndGg7KXtpZihhW2NdKC4uLmIpKXJldHVybiEwO2MrK31yZXR1cm4hMX19ZnVuY3Rpb24gYXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLnNwbGl0KCIiKS5jb25jYXQoYSk7Y29uc3QgYz1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjLnB1c2goYSk7cmV0dXJuIGN9CmZ1bmN0aW9uIGFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmEuYXBwbHkodGhpcyxiKX1jb25zdCB7aXNBcnJheTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN9PUFycmF5OwpmdW5jdGlvbiBfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGI9MCl7Zm9yKGNvbnN0IGMgaW4gYSkhMSE9PWEuaGFzT3duUHJvcGVydHkoYykmJiJjb25zdHJ1Y3RvciIhPT1jJiYoIm9iamVjdCI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixfX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2NdKSkpLCJmdW5jdGlvbiI9PT10eXBlb2YgYVtjXSYmKGI9TWF0aC5tYXgoYixhW2NdLmxlbmd0aCkpKTtyZXR1cm4gYn0KZnVuY3Rpb24gX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2NvbnN0IGE9W107bGV0IGI9MDtjb25zdCBjPWFyZ3VtZW50cy5sZW5ndGg7Zm9yKDtiPGMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGFyZ3VtZW50c1tiXTspYVtiXT1hcmd1bWVudHNbYl0sYisrO3JldHVybiBhfQpmdW5jdGlvbiBfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXt2YXIgZD1iLWMubGVuZ3RoO2lmKDE9PT1kKXJldHVybiBmPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZikpO2lmKDI9PT1kKXJldHVybihmLGcpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsZixnKSk7aWYoMz09PWQpcmV0dXJuKGYsZyxoKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLApiLF9fZmlsdGVyVW5kZWZpbmVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoLi4uYyxmLGcsaCkpO2lmKDQ9PT1kKXJldHVybihmLGcsaCxrKT0+X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsX19maWx0ZXJVbmRlZmluZWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyguLi5jLGYsZyxoLGspKTtpZig0PGQpcmV0dXJuKC4uLmYpPT5fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixfX2ZpbHRlclVuZGVmaW5lZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKC4uLmMsLi4uZikpO2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSl7dmFyIGU9W107ZD0wO2NvbnN0IGY9YS5sZW5ndGg7CmZvcig7ZDxmO2QrKyl7aWYoIm9iamVjdCI9PT10eXBlb2YgYVtkXXx8aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pKWVbZF09X19hcHBseVNwZWNXaXRoQXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdLGIsYyk7ImZ1bmN0aW9uIj09PXR5cGVvZiBhW2RdJiYoZVtkXT1hW2RdKC4uLmMpKX1yZXR1cm4gZX1kPXt9O2ZvcihlIGluIGEpITEhPT1hLmhhc093blByb3BlcnR5KGUpJiYiY29uc3RydWN0b3IiIT09ZSYmKCJvYmplY3QiPT09dHlwZW9mIGFbZV0/ZFtlXT1fX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZV0sYixjKToiZnVuY3Rpb24iPT09dHlwZW9mIGFbZV0mJihkW2VdPWFbZV0oLi4uYykpKTtyZXR1cm4gZH0KZnVuY3Rpb24gYXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPV9fZmluZEhpZ2hlc3RBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpO3JldHVybiAwPT09Yz8oKT0+KHt9KTpfX2FwcGx5U3BlY1dpdGhBcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyxiKX1mdW5jdGlvbiBhc3NvY0ZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LGMse1thXTpifSl9Y29uc3QgYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIF9pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYTw8MD09PWF9Y29uc3QgaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9TnVtYmVyLmlzSW50ZWdlcnx8X2lzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBhc3NvY1BhdGhGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtjb25zdCBkPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiLiIpLm1hcChlPT5pc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhOdW1iZXIoZSkpP051bWJlcihlKTplKTphO2lmKDA9PT1kLmxlbmd0aClyZXR1cm4gYjthPWRbMF07aWYoMTxkLmxlbmd0aCl7Y29uc3QgZT0ib2JqZWN0Ij09PXR5cGVvZiBjJiZudWxsIT09YyYmYy5oYXNPd25Qcm9wZXJ0eShhKT9jW2FdOmlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGRbMV0pP1tdOnt9O2I9YXNzb2NQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkLDEpLGIsZSl9cmV0dXJuIGlzSW50ZWdlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpJiYKaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpPyhjPWNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpLGNbYV09YixjKTphc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKX1jb25zdCBhc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFzc29jUGF0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBkPTA7bGV0IGU9MDtjb25zdCBmPWIubGVuZ3RoLGc9YXJndW1lbnRzLmxlbmd0aCxoPUFycmF5KGYrZyk7Zm9yKDtkPGY7KWhbZF09YltkXSxkKys7Zm9yKDtlPGc7KWhbZitlXT1hcmd1bWVudHNbZV0sZSsrO2Q9YS1oLmxlbmd0aDtyZXR1cm4gaC5sZW5ndGg+PWE/Yy5hcHBseSh0aGlzLGgpOl9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxfY3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxoLGMpKX19CmZ1bmN0aW9uIF9hcml0eSQxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA0OnJldHVybiBmdW5jdGlvbihjLGQsZSxmKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgNjpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07CmNhc2UgNzpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDg6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDk6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2RlZmF1bHQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYsZyxoLGssbCxtLG4pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fQpmdW5jdGlvbiBjdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5jdXJyeU4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKDEwPGEpdGhyb3cgRXJyb3IoIkZpcnN0IGFyZ3VtZW50IHRvIF9hcml0eSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgbm8gZ3JlYXRlciB0aGFuIHRlbiIpO3JldHVybiBfYXJpdHkkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsX2N1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsW10sYikpfQpmdW5jdGlvbiBiaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+YmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS5sZW5ndGgsKC4uLmMpPT5hLmFwcGx5KGIsYykpfWZ1bmN0aW9uIGJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5ib3RoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTooLi4uYyk9PmEoLi4uYykmJmIoLi4uYyl9CmZ1bmN0aW9uIGNoYWluJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOltdLmNvbmNhdCguLi5iLm1hcChhKSl9ZnVuY3Rpb24gY2xhbXBGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZihhPmIpdGhyb3cgRXJyb3IoIm1pbiBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4IGluIGNsYW1wKG1pbiwgbWF4LCB2YWx1ZSkiKTtpZihjPj1hJiZjPD1iKXJldHVybiBjO2lmKGM+YilyZXR1cm4gYjtpZihjPGEpcmV0dXJuIGF9Y29uc3QgY2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGNsYW1wRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGNsb25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk/QXJyYXkoYS5sZW5ndGgpOnt9O2lmKGEmJmEuZ2V0VGltZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2Zvcihjb25zdCBjIGluIGEpe2NvbnN0IGQ9YVtjXTtiW2NdPSJvYmplY3QiPT09dHlwZW9mIGQmJm51bGwhPT1kP2QuZ2V0VGltZT9uZXcgRGF0ZShkLmdldFRpbWUoKSk6Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkKTpkfXJldHVybiBifWZ1bmN0aW9uIGNvbXBsZW1lbnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PiFhKC4uLmIpfQpjbGFzcyBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanN7Y29uc3RydWN0b3IoYSl7dGhpcy52YWx1ZT1hfX1mdW5jdGlvbiByZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZHVjZTogbGlzdCBtdXN0IGJlIGFycmF5IG9yIGl0ZXJhYmxlIik7bGV0IGQ9MDtjb25zdCBlPWMubGVuZ3RoO2Zvcig7ZDxlOyl7Yj1hKGIsY1tkXSxkLGMpO2lmKGIgaW5zdGFuY2VvZiBSZWR1Y2VTdG9wcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpcmV0dXJuIGIudmFsdWU7ZCsrfXJldHVybiBifQpjb25zdCByZWR1Y2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpLHJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT5uZXcgUmVkdWNlU3RvcHBlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpOwpmdW5jdGlvbiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihjLGQpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihjLGQsZSl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKGMsZCxlLGYpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA1OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSA2OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCl7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTsKY2FzZSA3OnJldHVybiBmdW5jdGlvbihjLGQsZSxmLGcsaCxrKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgODpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsKXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Nhc2UgOTpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0pe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07Y2FzZSAxMDpyZXR1cm4gZnVuY3Rpb24oYyxkLGUsZixnLGgsayxsLG0sbil7cmV0dXJuIGIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtkZWZhdWx0OnRocm93IEVycm9yKCJGaXJzdCBhcmd1bWVudCB0byBfYXJpdHkgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG5vIGdyZWF0ZXIgdGhhbiB0ZW4iKTt9fQpmdW5jdGlvbiBfcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGIuY2FsbCh0aGlzLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKX19CmZ1bmN0aW9uIHBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJwaXBlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBfYXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhcmd1bWVudHNbMF0ubGVuZ3RoLHJlZHVjZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX3BpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyxhcmd1bWVudHNbMF0sQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEsSW5maW5pdHkpKSl9CmZ1bmN0aW9uIGNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXRocm93IEVycm9yKCJjb21wb3NlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpO3JldHVybiBwaXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCkucmV2ZXJzZSgpKX1mdW5jdGlvbiBjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5jb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOiJzdHJpbmciPT09dHlwZW9mIGE/YCR7YX0ke2J9YDpbLi4uYSwuLi5iXX0KZnVuY3Rpb24gY29uZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBiPT57bGV0IGM9ITEsZDthLmZvckVhY2goKFtlLGZdKT0+eyFjJiZlKGIpJiYoYz0hMCxkPWYoYikpfSk7cmV0dXJuIGR9fWNvbnN0IHtrZXlzOmtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzfT1PYmplY3Q7ZnVuY3Rpb24gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYz0hMSl7bGV0IGQ9MDtjb25zdCBlPUFycmF5KGIubGVuZ3RoKTtmb3IoO2Q8Yi5sZW5ndGg7KWVbZF09Yz9hKGJbZF0sZCk6YShiW2RdKSxkKys7cmV0dXJuIGV9CmZ1bmN0aW9uIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGc9Pm1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZyk7bGV0IGM9MDtjb25zdCBkPWtleXMkMSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLGU9ZC5sZW5ndGgsZj17fTtmb3IoO2M8ZTspe2NvbnN0IGc9ZFtjXTtmW2ddPWEoYltnXSxnLGIpO2MrK31yZXR1cm4gZn1jb25zdCBtYXBPYmpJbmRleGVkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7CmZ1bmN0aW9uIG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9Pm1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoIWIpdGhyb3cgRXJyb3IoSU5DT1JSRUNUX0lURVJBQkxFX0lOUFVUKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP21hcEFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTptYXBPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBtYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmI+YT9iOmF9CmZ1bmN0aW9uIGNvbnZlcmdlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9Pm1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsZS5sZW5ndGgpLDAsYik7cmV0dXJuIGN1cnJ5TiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLG1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQ9PmQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGIpKX0pfQpmdW5jdGlvbiBjb3VudCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmNvdW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/Yi5maWx0ZXIoYz0+YShjKSkubGVuZ3RoOjB9ZnVuY3Rpb24gY291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmNvdW50QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9e307Yi5mb3JFYWNoKGQ9PntkPWEoZCk7Y1tkXT9jW2RdKys6Y1tkXT0xfSk7cmV0dXJuIGN9CmNvbnN0IGRlYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PmEtMTtmdW5jdGlvbiBpc0ZhbHN5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIHZvaWQgMD09PWF8fG51bGw9PT1hfHwhMD09PU51bWJlci5pc05hTihhKX1mdW5jdGlvbiBkZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5kZWZhdWx0VG8kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzRmFsc3kkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKT9hOmJ9CmZ1bmN0aW9uIHR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtpZihudWxsPT09YSlyZXR1cm4iTnVsbCI7aWYodm9pZCAwPT09YSlyZXR1cm4iVW5kZWZpbmVkIjtpZihOdW1iZXIuaXNOYU4oYSkpcmV0dXJuIk5hTiI7YT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkuc2xpY2UoOCwtMSk7cmV0dXJuIkFzeW5jRnVuY3Rpb24iPT09YT8iUHJvbWlzZSI6YX0KZnVuY3Rpb24gX2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZighaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpKXRocm93IEVycm9yKGBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAnaW5kZXhPZicgb2YgJHtifWApO3ZhciBjPXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtpZighWyJPYmplY3QiLCJBcnJheSIsIk5hTiIsIlJlZ0V4cCJdLmluY2x1ZGVzKGMpKXJldHVybiBiLmxhc3RJbmRleE9mKGEpOyh7bGVuZ3RoOmN9PWIpO2xldCBkPS0xO2Zvcig7LTE8LS1jJiYtMT09PWQ7KWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGJbY10sYSkmJihkPWMpO3JldHVybiBkfQpmdW5jdGlvbiBfaW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgQ2Fubm90IHJlYWQgcHJvcGVydHkgJ2luZGV4T2YnIG9mICR7Yn1gKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoIVsiT2JqZWN0IiwiQXJyYXkiLCJOYU4iLCJSZWdFeHAiXS5pbmNsdWRlcyhjKSlyZXR1cm4gYi5pbmRleE9mKGEpO2xldCBkPWM9LTE7Y29uc3Qge2xlbmd0aDplfT1iO2Zvcig7KytjPGUmJi0xPT09ZDspZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYltjXSxhKSYmKGQ9Yyk7cmV0dXJuIGR9CmZ1bmN0aW9uIF9hcnJheUZyb21JdGVyYXRvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2NvbnN0IGI9W107bGV0IGM7Zm9yKDshKGM9YS5uZXh0KCkpLmRvbmU7KWIucHVzaChjLnZhbHVlKTtyZXR1cm4gYn1mdW5jdGlvbiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoYS5zaXplIT09Yi5zaXplKXJldHVybiExO2E9X2FycmF5RnJvbUl0ZXJhdG9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYS52YWx1ZXMoKSk7Y29uc3QgYz1fYXJyYXlGcm9tSXRlcmF0b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLnZhbHVlcygpKTtyZXR1cm4gMD09PWEuZmlsdGVyKGQ9Pi0xPT09X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkLGMpKS5sZW5ndGh9CmZ1bmN0aW9uIHBhcnNlRXJyb3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPWEuX19wcm90b19fLnRvU3RyaW5nKCk7cmV0dXJuWyJFcnJvciIsIlR5cGVFcnJvciJdLmluY2x1ZGVzKGIpP1tiLGEubWVzc2FnZV06W119ZnVuY3Rpb24gcGFyc2VEYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9EYXRlU3RyaW5nP1shMCxhLmdldFRpbWUoKV06WyExXX1mdW5jdGlvbiBwYXJzZVJlZ2V4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEuY29uc3RydWN0b3IhPT1SZWdFeHA/WyExXTpbITAsYS50b1N0cmluZygpXX0KZnVuY3Rpb24gZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTt2YXIgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoYyE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlyZXR1cm4hMTtpZigiRnVuY3Rpb24iPT09YylyZXR1cm4gdm9pZCAwPT09YS5uYW1lPyExOmEubmFtZT09PWIubmFtZTtpZihbIk5hTiIsIlVuZGVmaW5lZCIsIk51bGwiXS5pbmNsdWRlcyhjKSlyZXR1cm4hMDtpZigiTnVtYmVyIj09PWMpcmV0dXJuIE9iamVjdC5pcygtMCxhKSE9PU9iamVjdC5pcygtMCxiKT8hMTphLnRvU3RyaW5nKCk9PT1iLnRvU3RyaW5nKCk7aWYoWyJTdHJpbmciLCJCb29sZWFuIl0uaW5jbHVkZXMoYykpcmV0dXJuIGEudG9TdHJpbmcoKT09PQpiLnRvU3RyaW5nKCk7aWYoIkFycmF5Ij09PWMpe2M9QXJyYXkuZnJvbShhKTtjb25zdCBmPUFycmF5LmZyb20oYik7aWYoYy50b1N0cmluZygpIT09Zi50b1N0cmluZygpKXJldHVybiExO2xldCBnPSEwO2MuZm9yRWFjaCgoaCxrKT0+e2cmJihoPT09ZltrXXx8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxmW2tdKXx8KGc9ITEpKX0pO3JldHVybiBnfXZhciBkPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxlPXBhcnNlUmVnZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtpZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZURhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtlPXBhcnNlRGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpOwppZihkWzBdKXJldHVybiBlWzBdP2RbMV09PT1lWzFdOiExO2lmKGVbMF0pcmV0dXJuITE7ZD1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7ZT1wYXJzZUVycm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZFswXSlyZXR1cm4gZVswXT9kWzBdPT09ZVswXSYmZFsxXT09PWVbMV06ITE7aWYoIlNldCI9PT1jKXJldHVybiBfZXF1YWxzU2V0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYik7aWYoIk9iamVjdCI9PT1jKXtjPU9iamVjdC5rZXlzKGEpO2lmKGMubGVuZ3RoIT09T2JqZWN0LmtleXMoYikubGVuZ3RoKXJldHVybiExO2xldCBmPSEwO2MuZm9yRWFjaChnPT57aWYoZil7Y29uc3QgaD1hW2ddO2c9YltnXTtoPT09Z3x8ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaCxnKXx8KGY9ITEpfX0pOwpyZXR1cm4gZn1yZXR1cm4hMX1mdW5jdGlvbiBpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PmluY2x1ZGVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZigic3RyaW5nIj09PXR5cGVvZiBiKXJldHVybiBiLmluY2x1ZGVzKGEpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5IFwnaW5kZXhPZlwnIG9mICR7Yn1gKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpPy0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTohMX0KY2xhc3MgX1NldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpze2NvbnN0cnVjdG9yKCl7dGhpcy5zZXQ9bmV3IFNldDt0aGlzLml0ZW1zPXt9fWNoZWNrVW5pcXVlbmVzcyhhKXt2YXIgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJOdWxsIiwiVW5kZWZpbmVkIiwiTmFOIl0uaW5jbHVkZXMoYik/YiBpbiB0aGlzLml0ZW1zPyExOnRoaXMuaXRlbXNbYl09ITA6WyJPYmplY3QiLCJBcnJheSJdLmluY2x1ZGVzKGIpP2IgaW4gdGhpcy5pdGVtcz8tMT09PV9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSx0aGlzLml0ZW1zW2JdKT8odGhpcy5pdGVtc1tiXS5wdXNoKGEpLCEwKTohMToodGhpcy5pdGVtc1tiXT1bYV0sITApOihiPXRoaXMuc2V0LnNpemUsdGhpcy5zZXQuYWRkKGEpLHRoaXMuc2V0LnNpemUhPT1iKX19CmZ1bmN0aW9uIHVuaXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPW5ldyBfU2V0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMsYz1bXTthLmZvckVhY2goZD0+e2IuY2hlY2tVbmlxdWVuZXNzKGQpJiZjLnB1c2goZCl9KTtyZXR1cm4gY31mdW5jdGlvbiBkaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZGlmZmVyZW5jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6dW5pcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLmZpbHRlcihjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpKX0KZnVuY3Rpb24gZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+ZGlzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtpZihudWxsPT09Ynx8dm9pZCAwPT09YilyZXR1cm57fTtjb25zdCBjPXt9O2Zvcihjb25zdCBkIGluIGIpY1tkXT1iW2RdO2RlbGV0ZSBjW2FdO3JldHVybiBjfWZ1bmN0aW9uIGRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS9ifQpmdW5jdGlvbiBkcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+ZHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Yi5zbGljZSgwPGE/YTowKX1mdW5jdGlvbiBkcm9wTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmRyb3BMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPGE/Yi5zbGljZSgwLC1hKTpiLnNsaWNlKCl9CmZ1bmN0aW9uIGRyb3BMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxnKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7Y29uc3QgYz1pc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKGAncHJlZGljYXRlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYX1gKTtpZighYyYmInN0cmluZyIhPT10eXBlb2YgYil0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBpcyBmcm9tIHdyb25nIHR5cGUgJHt0eXBlb2YgYn1gKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPWIubGVuZ3RoO2Zvcig7MDxmOylmLS0sZHx8ITEhPT1hKGJbZl0pP2QmJmUucHVzaChiW2ZdKToKKGQ9ITAsZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lLnJldmVyc2UoKTplLnJldmVyc2UoKS5qb2luKCIiKX1mdW5jdGlvbiBkcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYCR7YX0gaXMgbm90IGEgbGlzdGApO2NvbnN0IGI9W107YS5yZWR1Y2UoKGMsZCk9PntlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGQpfHxiLnB1c2goZCk7cmV0dXJuIGR9LHZvaWQgMCk7cmV0dXJuIGJ9CmZ1bmN0aW9uIGRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmRyb3BSZXBlYXRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBFcnJvcihgJHtifSBpcyBub3QgYSBsaXN0YCk7Y29uc3QgYz1bXTtiLnJlZHVjZSgoZCxlKT0+e2lmKHZvaWQgMD09PWQpcmV0dXJuIGMucHVzaChlKSxlO2EoZCxlKXx8Yy5wdXNoKGUpO3JldHVybiBlfSx2b2lkIDApO3JldHVybiBjfQpmdW5jdGlvbiBkcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMTtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWQ/ZS5wdXNoKGJbZl0pOmEoYltmXSl8fChkfHwoZD0hMCksZS5wdXNoKGJbZl0pKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIGVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmVpdGhlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6KC4uLmMpPT4hKCFhKC4uLmMpJiYhYiguLi5jKSl9CmZ1bmN0aW9uIGVuZHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKCJzdHJpbmciPT09dHlwZW9mIGIpcmV0dXJuIGIuZW5kc1dpdGgoYSk7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSlyZXR1cm4hMTtjb25zdCBjPWIubGVuZ3RoLWEubGVuZ3RoO2xldCBkPSEwO3JldHVybiBhLmZpbHRlcigoZSxmKT0+e2lmKCFkKXJldHVybiExOyhlPWVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGUsYltmK2NdKSl8fChkPSExKTtyZXR1cm4gZX0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoYilyZXR1cm4gYlthXX1mdW5jdGlvbiBlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKX1jb25zdCBlcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhlcVByb3BzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIGV2b2x2ZUFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygoYyxkKT0+IkZ1bmN0aW9uIj09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9hW2RdKGMpOmMsYiwhMCl9CmZ1bmN0aW9uIGV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIG1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChjLGQpPT57aWYoIk9iamVjdCI9PT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYykpe2NvbnN0IGU9dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pO3JldHVybiJGdW5jdGlvbiI9PT1lP2FbZF0oYyk6Ik9iamVjdCI9PT1lP2V2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0sYyk6Y31yZXR1cm4iRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbZF0pP2FbZF0oYyk6Y30sYil9CmZ1bmN0aW9uIGV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7Y29uc3QgYz10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSksZD10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoZCE9PWMpdGhyb3cgRXJyb3IoIml0ZXJhYmxlVHlwZSAhPT0gcnVsZXNUeXBlIik7aWYoIVsiT2JqZWN0IiwiQXJyYXkiXS5pbmNsdWRlcyhjKSl0aHJvdyBFcnJvcihgJ2l0ZXJhYmxlJyBhbmQgJ3J1bGVzJyBhcmUgZnJvbSB3cm9uZyB0eXBlICR7Y31gKTtyZXR1cm4iT2JqZWN0Ij09PWQ/ZXZvbHZlT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTpldm9sdmVBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsCmIpfWZ1bmN0aW9uIEYkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygpe3JldHVybiExfWZ1bmN0aW9uIGZpbHRlck9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7Y29uc3QgYz17fTtmb3IoY29uc3QgZCBpbiBiKWEoYltkXSxkLGIpJiYoY1tkXT1iW2RdKTtyZXR1cm4gY31mdW5jdGlvbiBmaWx0ZXJBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjPSExKXtsZXQgZD0wO2NvbnN0IGU9Yi5sZW5ndGgsZj1bXTtmb3IoO2Q8ZTspKGM/YShiW2RdLGQpOmEoYltkXSkpJiZmLnB1c2goYltkXSksZCsrO3JldHVybiBmfQpmdW5jdGlvbiBmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5maWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFiKXRocm93IEVycm9yKCJJbmNvcnJlY3QgaXRlcmFibGUgaW5wdXQiKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2ZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLCExKTpmaWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfQpmdW5jdGlvbiBmaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9MDtjb25zdCBkPWIubGVuZ3RoO2Zvcig7YzxkOyl7Y29uc3QgZT1iW2NdO2lmKGEoZSkpcmV0dXJuIGU7YysrfX1mdW5jdGlvbiBmaW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5maW5kSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2NvbnN0IGM9Yi5sZW5ndGg7bGV0IGQ9LTE7Zm9yKDsrK2Q8YzspaWYoYShiW2RdKSlyZXR1cm4gZDtyZXR1cm4tMX0KZnVuY3Rpb24gZmluZExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5maW5kTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9Yi5sZW5ndGg7Zm9yKDswPD0tLWM7KWlmKGEoYltjXSkpcmV0dXJuIGJbY119ZnVuY3Rpb24gZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmZpbmRMYXN0SW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2xldCBjPWIubGVuZ3RoO2Zvcig7MDw9LS1jOylpZihhKGJbY10pKXJldHVybiBjO3JldHVybi0xfQpmdW5jdGlvbiBmbGF0dGVuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtiPXZvaWQgMD09PWI/W106Yjtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKylpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtjXSk/ZmxhdHRlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGFbY10sYik6Yi5wdXNoKGFbY10pO3JldHVybiBifQpmdW5jdGlvbiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4oLi4uYik9PntpZigxPT09Yi5sZW5ndGgpcmV0dXJuIGM9PmEoYyxiWzBdKTtpZigyPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdKTtpZigzPT09Yi5sZW5ndGgpcmV0dXJuIGEoYlsxXSxiWzBdLGJbMl0pO2lmKDQ9PT1iLmxlbmd0aClyZXR1cm4gYShiWzFdLGJbMF0sYlsyXSxiWzNdKTt0aHJvdyBFcnJvcigiUi5mbGlwIGRvZXNuJ3Qgd29yayB3aXRoIGFyaXR5ID4gNCIpO319ZnVuY3Rpb24gZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBmbGlwRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0KZnVuY3Rpb24gZm9yRWFjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PmZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKHZvaWQgMCE9PWIpe2lmKGlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSlmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDspYShiW2NdKSxjKys7ZWxzZXtjPTA7ZD1rZXlzJDEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtjb25zdCBlPWQubGVuZ3RoO2Zvcig7YzxlOyl7Y29uc3QgZj1kW2NdO2EoYltmXSxmLGIpO2MrK319cmV0dXJuIGJ9fQpmdW5jdGlvbiBmcm9tUGFpcnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtjb25zdCBiPXt9O2EuZm9yRWFjaCgoW2MsZF0pPT5iW2NdPWQpO3JldHVybiBifWZ1bmN0aW9uIGdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5ncm91cEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF0sZj1hKGUpO2NbZl18fChjW2ZdPVtdKTtjW2ZdLnB1c2goZSl9cmV0dXJuIGN9CmZ1bmN0aW9uIGdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoIWlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJsaXN0LnJlZHVjZSBpcyBub3QgYSBmdW5jdGlvbiIpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik7aWYoMT09PWIubGVuZ3RoKXJldHVybltjXTtjb25zdCBkPVtdO2xldCBlPVtdO2MucmVkdWNlKChmLGcsaCk9PntpZigwPT09aClyZXR1cm4gZztjb25zdCBrPWEoZixnKSxsPTA9PT1lLmxlbmd0aDtoPWg9PT1iLmxlbmd0aC0xO2lmKGspcmV0dXJuIGwmJmUucHVzaChmKSxlLnB1c2goZyksaCYmZC5wdXNoKGUpLGc7aWYobClyZXR1cm4gZC5wdXNoKFtmXSksaCYmZC5wdXNoKFtnXSksZztkLnB1c2goZSk7aCYmZC5wdXNoKFtnXSk7ZT1bXTtyZXR1cm4gZ30sCnZvaWQgMCk7cmV0dXJuIGR9ZnVuY3Rpb24gaGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+aGFzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiP2IuaGFzT3duUHJvcGVydHkoYSk6ITF9ZnVuY3Rpb24gY3JlYXRlUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYj0iLiIpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdChiKTphfQpmdW5jdGlvbiBwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1iLGQ9MCxlPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtkPGUubGVuZ3RoOyl7aWYobnVsbD09PWN8fHZvaWQgMD09PWN8fG51bGw9PT1jW2VbZF1dKXJldHVybjtjPWNbZVtkXV07ZCsrfXJldHVybiBjfX0KZnVuY3Rpb24gaGFzUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pmhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnZvaWQgMCE9PXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpfWZ1bmN0aW9uIGhlYWQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhP2FbMF18fCIiOmFbMF19ZnVuY3Rpb24gX29iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYT09PWI/MCE9PWF8fDEvYT09PTEvYjphIT09YSYmYiE9PWJ9Y29uc3Qgb2JqZWN0SXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1PYmplY3QuaXN8fF9vYmplY3RJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwpmdW5jdGlvbiBpZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOm9iamVjdElzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBpZGVudGl0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBhfWZ1bmN0aW9uIGlmRWxzZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiguLi5kKT0+ITA9PT0oImJvb2xlYW4iPT09dHlwZW9mIGE/YTphKC4uLmQpKT9iKC4uLmQpOmMoLi4uZCl9CmNvbnN0IGlmRWxzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoaWZFbHNlRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyksaW5jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+YSsxO2Z1bmN0aW9uIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1twYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKV09ZX1yZXR1cm4gY30KZnVuY3Rpb24gaW5kZXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PmluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuIGluZGV4QnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtjb25zdCBjPXt9O2ZvcihsZXQgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtjb25zdCBlPWJbZF07Y1thKGUpXT1lfXJldHVybiBjfQpmdW5jdGlvbiBpbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+X2luZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOl9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBiYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7bGV0IGQ9LTEse2xlbmd0aDplfT1hO2M9Yz5lP2U6YzswPmMmJihjKz1lKTtlPWI+Yz8wOmMtYj4+PjA7Yj4+Pj0wO2ZvcihjPUFycmF5KGUpOysrZDxlOyljW2RdPWFbZCtiXTtyZXR1cm4gY30KZnVuY3Rpb24gaW5pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGE/YS5zbGljZSgwLC0xKTphLmxlbmd0aD9iYXNlU2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLDAsLTEpOltdfWZ1bmN0aW9uIGludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PmludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+aW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGEpLGIpfQpmdW5jdGlvbiBpbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGY9PmludGVyc3BlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtsZXQgYz0tMTtjb25zdCBkPWIubGVuZ3RoLGU9W107Zm9yKDsrK2M8ZDspYz09PWQtMT9lLnB1c2goYltjXSk6ZS5wdXNoKGJbY10sYSk7cmV0dXJuIGV9ZnVuY3Rpb24gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bnVsbCE9YiYmYi5jb25zdHJ1Y3Rvcj09PWF8fGIgaW5zdGFuY2VvZiBhfQpmdW5jdGlvbiBpc0VtcHR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7Y29uc3QgYj10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7cmV0dXJuWyJVbmRlZmluZWQiLCJOYU4iLCJOdW1iZXIiLCJOdWxsIl0uaW5jbHVkZXMoYik/ITE6YT8iT2JqZWN0Ij09PWI/MD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aDoiQXJyYXkiPT09Yj8wPT09YS5sZW5ndGg6ITE6ITB9ZnVuY3Rpb24gaXNOaWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gdm9pZCAwPT09YXx8bnVsbD09PWF9CmZ1bmN0aW9uIGpvaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5qb2luJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpiLmpvaW4oYSl9ZnVuY3Rpb24ganV4dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiguLi5iKT0+YS5tYXAoYz0+YyguLi5iKSl9ZnVuY3Rpb24ga2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBPYmplY3Qua2V5cyhhKX1mdW5jdGlvbiBsYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hW2EubGVuZ3RoLTFdfHwiIjphW2EubGVuZ3RoLTFdfQpmdW5jdGlvbiBsYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pl9sYXN0SW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBsZW5ndGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfHwic3RyaW5nIj09PXR5cGVvZiBhP2EubGVuZ3RoOk5hTn0KZnVuY3Rpb24gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBmdW5jdGlvbihkKXtyZXR1cm4gYyhhKGQpKS5tYXAoZT0+YihlLGQpKX19fWZ1bmN0aW9uIG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz0wPmE/Yi5sZW5ndGgrYTphO3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpP2IuY2hhckF0KGMpOmJbY119CmZ1bmN0aW9uIHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2M9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyk7cmV0dXJuLTE9PT1hP2MuZmlsbChiLGEpOmMuZmlsbChiLGEsYSsxKX1jb25zdCB1cGRhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBsZW5zSW5kZXgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG50aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLHVwZGF0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBsZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBsZW5zJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpLGFzc29jUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX0KZnVuY3Rpb24gbGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gbGVucyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKX1mdW5jdGlvbiBtYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Pm1hdGNoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxkKTtjb25zdCBjPWIubWF0Y2goYSk7cmV0dXJuIG51bGw9PT1jP1tdOmN9CmZ1bmN0aW9uIG1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tYXRoTW9kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTohaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl8fCFpc0ludGVnZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKXx8MT5iP05hTjooYSViK2IpJWJ9ZnVuY3Rpb24gbWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT5hKGIpP2M6Yn1jb25zdCBtYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobWF4QnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gc3VtJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEucmVkdWNlKChiLGMpPT5iK2MsMCl9ZnVuY3Rpb24gbWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiBzdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKS9hLmxlbmd0aH1mdW5jdGlvbiBtZWRpYW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXt2YXIgYj1hLmxlbmd0aDtpZigwPT09YilyZXR1cm4gTmFOO2NvbnN0IGM9Mi1iJTI7Yj0oYi1jKS8yO3JldHVybiBtZWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwwKS5zb3J0KChkLGUpPT5kPT09ZT8wOmQ8ZT8tMToxKS5zbGljZShiLGIrYykpfQpmdW5jdGlvbiBtZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6T2JqZWN0LmFzc2lnbih7fSxhfHx7fSxifHx7fSl9ZnVuY3Rpb24gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtsZXQgYj17fTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT57Yj1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKX0sYSk7cmV0dXJuIGJ9CmZ1bmN0aW9uIG1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGQ9PnsiT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2RdKT8iT2JqZWN0Ij09PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhW2RdKT9jW2RdPW1lcmdlRGVlcFJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVtkXSxiW2RdKTpjW2RdPWJbZF06Y1tkXT1iW2RdfSk7cmV0dXJuIGN9CmZ1bmN0aW9uIG1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1lcmdlTGVmdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6bWVyZ2VSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsYSl9ZnVuY3Rpb24gbWVyZ2VXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Y29uc3QgZD17fTtPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGU9PntkW2VdPXZvaWQgMD09PWNbZV0/YltlXTphKGJbZV0sY1tlXSl9KTtPYmplY3Qua2V5cyhjKS5mb3JFYWNoKGU9Pnt2b2lkIDA9PT1kW2VdJiYoZFtlXT12b2lkIDA9PT1iW2VdP2NbZV06YShiW2VdLGNbZV0pKX0pO3JldHVybiBkfQpjb25zdCBtZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1lcmdlV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIG1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YjxhP2I6YX1mdW5jdGlvbiBtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGMpPGEoYik/YzpifWNvbnN0IG1pbkJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtaW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBvd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXt2YXIgYz1PYmplY3Qua2V5cyhhKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGEpO2ImJihkPWQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZSkuZW51bWVyYWJsZX0pKTtjLnB1c2guYXBwbHkoYyxkKX1yZXR1cm4gY30KZnVuY3Rpb24gX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtmb3IodmFyIGI9MTtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKXt2YXIgYz1udWxsIT1hcmd1bWVudHNbYl0/YXJndW1lbnRzW2JdOnt9O2IlMj9vd25LZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoT2JqZWN0KGMpLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe19kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCxjW2RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGEsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoYykpOm93bktleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhPYmplY3QoYykpLmZvckVhY2goZnVuY3Rpb24oZCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsCmQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjLGQpKX0pfXJldHVybiBhfWZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtiIGluIGE/T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYix7dmFsdWU6YyxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmFbYl09YztyZXR1cm4gYX1mdW5jdGlvbiBpc0l0ZXJhYmxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSl8fCJPYmplY3QiPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpfQpmdW5jdGlvbiBtb2RpZnlGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXNJdGVyYWJsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMpJiZ2b2lkIDAhPT1jW2FdP2lzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT91cGRhdGVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYihjW2FdKSxjKTpfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thXTpiKGNbYV0pfSk6Y31jb25zdCBtb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZGlmeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7YT1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7aWYoMT09PWEubGVuZ3RoKXJldHVybiBfb2JqZWN0U3ByZWFkMiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKF9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoe30sYykse30se1thWzBdXTpiKGNbYVswXV0pfSk7aWYodm9pZCAwPT09cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYykpcmV0dXJuIGM7Yj1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSwxKSxiLGNbYVswXV0pO3JldHVybiBiPT09Y1thWzBdXT9jOmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYVswXSwKYixjKX1jb25zdCBtb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhtb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gbW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+bW9kdWxvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphJWJ9CmZ1bmN0aW9uIG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtpZigwPmF8fDA+Yil0aHJvdyBFcnJvcigiUmFtYmRhLm1vdmUgZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSBpbmRleGVzIik7aWYoYT5jLmxlbmd0aC0xfHxiPmMubGVuZ3RoLTEpcmV0dXJuIGM7Y29uc3QgZD1jbG9uZUxpc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKTtkW2FdPWNbYl07ZFtiXT1jW2FdO3JldHVybiBkfWNvbnN0IG1vdmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vdmVGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gbXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5tdWx0aXBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YSpifWZ1bmN0aW9uIG5lZ2F0ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybi1hfWZ1bmN0aW9uIG5vbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBjPT5ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtmb3IobGV0IGM9MDtjPGIubGVuZ3RoO2MrKylpZihhKGJbY10pKXJldHVybiExO3JldHVybiEwfQpmdW5jdGlvbiBub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4hYX1mdW5jdGlvbiBvYmpPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9iak9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTp7W2FdOmJ9fWZ1bmN0aW9uIG9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuW2FdfQpmdW5jdGlvbiBvbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+b21pdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe3ZhciBjPWNyZWF0ZVBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLCIsIiksZD17fTtmb3IoY29uc3QgZSBpbiBiKWMuaW5jbHVkZXMoZSl8fChkW2VdPWJbZV0pO3JldHVybiBkfX0KZnVuY3Rpb24gb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxkKXtyZXR1cm4gMz09PWFyZ3VtZW50cy5sZW5ndGg/ZT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyxlKToyPT09YXJndW1lbnRzLmxlbmd0aD8oZSxmKT0+b24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsZSxmKTphKGIoYyksYihkKSl9ZnVuY3Rpb24gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtsZXQgYztyZXR1cm4gZnVuY3Rpb24oKXthJiYoYz1hLmFwcGx5KGJ8fHRoaXMsYXJndW1lbnRzKSxhPW51bGwpO3JldHVybiBjfX0KZnVuY3Rpb24gb25jZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2NvbnN0IGM9b25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKTtyZXR1cm4gY3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKX1yZXR1cm4gb25jZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKX1mdW5jdGlvbiBvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9Pm9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphfHxifWNvbnN0IElkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9YT0+KHt4OmEsbWFwOmI9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihhKSl9KTsKZnVuY3Rpb24gb3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBhKGQ9PklkZW50aXR5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYihkKSkpKGMpLnh9Y29uc3Qgb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMob3ZlckZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXJ0aWFsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwuLi5iKXtjb25zdCBjPWEubGVuZ3RoO3JldHVybiguLi5kKT0+Yi5sZW5ndGgrZC5sZW5ndGg+PWM/YSguLi5iLC4uLmQpOnBhcnRpYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLC4uLlsuLi5iLC4uLmRdKX1mdW5jdGlvbiBwYXJ0aWFsT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gYz0+YShtZXJnZURlZXBSaWdodCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwYXJ0aXRpb25PYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2NvbnN0IGM9e30sZD17fTtPYmplY3QuZW50cmllcyhiKS5mb3JFYWNoKChbZSxmXSk9PnthKGYsZSk/Y1tlXT1mOmRbZV09Zn0pO3JldHVybltjLGRdfWZ1bmN0aW9uIHBhcnRpdGlvbkFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGM9ITEpe2NvbnN0IGQ9W10sZT1bXTtsZXQgZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOykoYz9hKGJbZl0sZik6YShiW2ZdKSk/ZC5wdXNoKGJbZl0pOmUucHVzaChiW2ZdKTtyZXR1cm5bZCxlXX0KZnVuY3Rpb24gcGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cGFydGl0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTppc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYik/cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpOnBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil9CmZ1bmN0aW9uIHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe3JldHVybiBlcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKSxiKX1jb25zdCBwYXRoRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHBhdGhFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxwYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9Y29uc3QgcGF0aE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhwYXRoT3JGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcGF0aHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6YS5tYXAoYz0+cGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYikpfQpmdW5jdGlvbiBwaWNrJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGljayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWNbZV1pbiBiJiYoZFtjW2VdXT1iW2NbZV1dKSxlKys7cmV0dXJuIGR9fQpmdW5jdGlvbiBwaWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZj0+cGlja0FsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZik7aWYobnVsbCE9PWImJnZvaWQgMCE9PWIpe2Zvcih2YXIgYz1jcmVhdGVQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSwiLCIpLGQ9e30sZT0wO2U8Yy5sZW5ndGg7KWRbY1tlXV09Y1tlXWluIGI/YltjW2VdXTp2b2lkIDAsZSsrO3JldHVybiBkfX0KZnVuY3Rpb24gcGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT5wbHVjayQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7Y29uc3QgYz1bXTttYXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkPT57dm9pZCAwIT09ZFthXSYmYy5wdXNoKGRbYV0pfSxiKTtyZXR1cm4gY31mdW5jdGlvbiBwcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cHJlcGVuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6InN0cmluZyI9PT10eXBlb2YgYj9bYV0uY29uY2F0KGIuc3BsaXQoIiIpKTpbYV0uY29uY2F0KGIpfQpjb25zdCBwcm9kdWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMobXVsdGlwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcywxKTtmdW5jdGlvbiBwcm9wRXFGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYz9lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLHByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpKTohMX1jb25zdCBwcm9wRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BFcUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBwcm9wSXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gaXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGNbYl0pfWNvbnN0IHByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcElzRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gcHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIGM/ZGVmYXVsdFRvJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjW2JdKTphfWNvbnN0IHByb3BPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMocHJvcE9yRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7CmZ1bmN0aW9uIHByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+cHJvcHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoInByb3BzVG9QaWNrIGlzIG5vdCBhIGxpc3QiKTtyZXR1cm4gbWFwQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT5iW2NdLGEpfWZ1bmN0aW9uIHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShwcm9wJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjKSl9CmNvbnN0IHByb3BTYXRpc2ZpZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHByb3BTYXRpc2ZpZXNGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTsKZnVuY3Rpb24gcmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT5yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7aWYoTnVtYmVyLmlzTmFOKE51bWJlcihhKSl8fE51bWJlci5pc05hTihOdW1iZXIoYikpKXRocm93IG5ldyBUeXBlRXJyb3IoIkJvdGggYXJndW1lbnRzIHRvIHJhbmdlIG11c3QgYmUgbnVtYmVycyIpO2lmKGI8YSlyZXR1cm5bXTtjb25zdCBjPWItYSxkPUFycmF5KGMpO2ZvcihsZXQgZT0wO2U8YztlKyspZFtlXT1hK2U7cmV0dXJuIGR9CmZ1bmN0aW9uIHJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYz0+IWEoYyksYil9ZnVuY3Rpb24gcmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpBcnJheShiKS5maWxsKGEpfWZ1bmN0aW9uIHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5yZXBsYWNlKGEsYil9CmNvbnN0IHJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKHJlcGxhY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKTtmdW5jdGlvbiByZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik6YS5zbGljZSgpLnJldmVyc2UoKX1mdW5jdGlvbiBzZXRGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gb3ZlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYWx3YXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYiksYyl9CmNvbnN0IHNldCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoc2V0Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyk7ZnVuY3Rpb24gc2xpY2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYy5zbGljZShhLGIpfWNvbnN0IHNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9Y3VycnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhzbGljZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpOwpmdW5jdGlvbiBzb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c29ydCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikuc29ydChhKX1mdW5jdGlvbiBzb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zb3J0QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmNsb25lTGlzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpLnNvcnQoKGMsZCk9PntjPWEoYyk7ZD1hKGQpO3JldHVybiBjPT09ZD8wOmM8ZD8tMToxfSl9CmZ1bmN0aW9uIHNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/Yz0+c3BsaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmIuc3BsaXQoYSl9ZnVuY3Rpb24gbWF5YmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7Yj1hJiYiRnVuY3Rpb24iPT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2IoKTpiO2M9YXx8IkZ1bmN0aW9uIiE9PXR5cGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjKT9jOmMoKTtyZXR1cm4gYT9iOmN9CmZ1bmN0aW9uIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT50YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTowPmE/Yi5zbGljZSgpOiJzdHJpbmciPT09dHlwZW9mIGI/Yi5zbGljZSgwLGEpOmJhc2VTbGljZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIsMCxhKX0KZnVuY3Rpb24gc3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PnNwbGl0QXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdzbGljZScgb2YgJHtifWApO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYikmJiJzdHJpbmciIT09dHlwZW9mIGIpcmV0dXJuW1tdLFtdXTtjb25zdCBjPW1heWJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoMD5hLDA+Yi5sZW5ndGgrYT8wOmIubGVuZ3RoK2EsYSk7cmV0dXJuW3Rha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLApiKV19ZnVuY3Rpb24gc3BsaXRFdmVyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUpO2lmKDE+YSl0aHJvdyBFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gc3BsaXRFdmVyeSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciIpO2NvbnN0IGM9W107bGV0IGQ9MDtmb3IoO2Q8Yi5sZW5ndGg7KWMucHVzaChiLnNsaWNlKGQsZCs9YSkpO3JldHVybiBjfQpmdW5jdGlvbiBzcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT5zcGxpdFdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2lmKCFiKXRocm93IG5ldyBUeXBlRXJyb3IoYENhbm5vdCByZWFkIHByb3BlcnR5ICdsZW5ndGgnIG9mICR7Yn1gKTtjb25zdCBjPVtdLGQ9W107bGV0IGU9ITEsZj0tMTtmb3IoO2YrKzxiLmxlbmd0aC0xOyllP2QucHVzaChiW2ZdKTphKGJbZl0pPyhkLnB1c2goYltmXSksZT0hMCk6Yy5wdXNoKGJbZl0pO3JldHVybltjLGRdfQpmdW5jdGlvbiBzdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+c3RhcnRzV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7aWYoInN0cmluZyI9PT10eXBlb2YgYilyZXR1cm4gYi5zdGFydHNXaXRoKGEpO2lmKCFpc0FycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpcmV0dXJuITE7bGV0IGM9ITA7cmV0dXJuIGEuZmlsdGVyKChkLGUpPT57aWYoIWMpcmV0dXJuITE7KGQ9ZXF1YWxzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxiW2VdKSl8fChjPSExKTtyZXR1cm4gZH0pLmxlbmd0aD09PWEubGVuZ3RofQpmdW5jdGlvbiBzdWJ0cmFjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphLWJ9CmZ1bmN0aW9uIHN5bW1ldHJpY0RpZmZlcmVuY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT5zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTpjb25jYXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhmaWx0ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjPT4haW5jbHVkZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhjLGIpLGEpLGZpbHRlciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9PiFpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsYSksYikpfQpmdW5jdGlvbiBUJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKXtyZXR1cm4hMH1mdW5jdGlvbiB0YWlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygxLGEpfQpmdW5jdGlvbiB0YWtlTGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGU9PnRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPWIubGVuZ3RoO2lmKDA+YSlyZXR1cm4gYi5zbGljZSgpO2xldCBkPWE+Yz9jOmE7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYj9iLnNsaWNlKGMtZCk6YmFzZVNsaWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYixjLWQsYyl9CmZ1bmN0aW9uIHRha2VMYXN0V2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBmPT50YWtlTGFzdFdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxmKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGI7bGV0IGM9ITE7Y29uc3QgZD1bXTtsZXQgZT1iLmxlbmd0aDtmb3IoOyFjfHwwPT09ZTspZS0tLCExPT09YShiW2VdKT9jPSEwOmN8fGQucHVzaChiW2VdKTtyZXR1cm4gaXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpP2QucmV2ZXJzZSgpOmQucmV2ZXJzZSgpLmpvaW4oIiIpfQpmdW5jdGlvbiB0YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBnPT50YWtlV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGcpO2NvbnN0IGM9aXNBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGIpO2lmKCFjJiYic3RyaW5nIiE9PXR5cGVvZiBiKXRocm93IEVycm9yKCJgaXRlcmFibGVgIGlzIG5laXRoZXIgbGlzdCBub3IgYSBzdHJpbmciKTtsZXQgZD0hMDtjb25zdCBlPVtdO2xldCBmPS0xO2Zvcig7ZisrPGIubGVuZ3RoLTE7KWEoYltmXSk/ZCYmZS5wdXNoKGJbZl0pOmQmJihkPSExKTtyZXR1cm4gYz9lOmUuam9pbigiIil9CmZ1bmN0aW9uIHRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRhcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7YShiKTtyZXR1cm4gYn1mdW5jdGlvbiB0ZXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYz0+dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk7aWYoInN0cmluZyI9PT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKGBcdTIwMTh0ZXN0XHUyMDE5IHJlcXVpcmVzIGEgdmFsdWUgb2YgdHlwZSBSZWdFeHAgYXMgaXRzIGZpcnN0IGFyZ3VtZW50OyByZWNlaXZlZCAiJHthfSJgKTtyZXR1cm4tMSE9PWIuc2VhcmNoKGEpfQpmdW5jdGlvbiB0aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGM9PnRpbWVzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTtpZighaXNJbnRlZ2VyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYil8fDA+Yil0aHJvdyBuZXcgUmFuZ2VFcnJvcigibiBtdXN0IGJlIGFuIGludGVnZXIiKTtyZXR1cm4gbWFwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxyYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKDAsYikpfWZ1bmN0aW9uIHRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpfQpmdW5jdGlvbiB0b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGEpfWZ1bmN0aW9uIHRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9TdHJpbmcoKX1mdW5jdGlvbiB0b1VwcGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGEudG9VcHBlckNhc2UoKX1mdW5jdGlvbiB0cmFuc3Bvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS5yZWR1Y2UoKGIsYyk9PntjLmZvckVhY2goKGQsZSk9PmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2VdKT9iW2VdLnB1c2goZCk6Yi5wdXNoKFtkXSkpO3JldHVybiBifSxbXSl9CmZ1bmN0aW9uIHRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKXtyZXR1cm4gYS50cmltKCl9Y29uc3QgaXNGdW5jdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWE9PlsiUHJvbWlzZSIsIkZ1bmN0aW9uIl0uaW5jbHVkZXModHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpKTsKZnVuY3Rpb24gdHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKCFpc0Z1bmN0aW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSkpdGhyb3cgRXJyb3IoYFIudHJ5Q2F0Y2ggfCBmbiAnJHthfSdgKTtjb25zdCBjPWlzRnVuY3Rpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiKTtyZXR1cm4oLi4uZCk9Pnt0cnl7cmV0dXJuIGEoLi4uZCl9Y2F0Y2goZSl7cmV0dXJuIGM/YihlLC4uLmQpOmJ9fX1mdW5jdGlvbiB1bmFwcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSl7cmV0dXJuIGZ1bmN0aW9uKC4uLmIpe3JldHVybiBhLmNhbGwodGhpcyxiKX19CmZ1bmN0aW9uIHVuaW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD0+dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9Y2xvbmVMaXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSk7Yi5mb3JFYWNoKGQ9PntpbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYSl8fGMucHVzaChkKX0pO3JldHVybiBjfQpmdW5jdGlvbiB1bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPT51bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9bmV3IFNldDtyZXR1cm4gYi5maWx0ZXIoZD0+e2lmKGMuaGFzKGEoZCkpKXJldHVybiExO2MuYWRkKGEoZCkpO3JldHVybiEwfSl9ZnVuY3Rpb24gaW5jbHVkZXNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiLGMpe2xldCBkPSExLGU9LTE7Zm9yKDsrK2U8Yy5sZW5ndGgmJiFkOylhKGIsY1tlXSkmJihkPSEwKTtyZXR1cm4gZH0KZnVuY3Rpb24gdW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBlPT51bmlxV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZSk7bGV0IGM9LTE7Y29uc3QgZD1bXTtmb3IoOysrYzxiLmxlbmd0aDspe2NvbnN0IGU9YltjXTtpbmNsdWRlc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGUsZCl8fGQucHVzaChlKX1yZXR1cm4gZH1mdW5jdGlvbiB1bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmM9PmEoYyk/YzpiKGMpfQpmdW5jdGlvbiB1bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT51bndpbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOmlzQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiW2FdKT9tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGM9Pl9vYmplY3RTcHJlYWQyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoX29iamVjdFNwcmVhZDIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyh7fSxiKSx7fSx7W2FdOmN9KSxiW2FdKTpbYl19CmZ1bmN0aW9uIHZhbHVlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpe3JldHVybiJPYmplY3QiIT09dHlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEpP1tdOk9iamVjdC52YWx1ZXMoYSl9Y29uc3QgQ29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcz1hPT4oe3g6YSxtYXA6Yj0+Q29uc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhKX0pO2Z1bmN0aW9uIHZpZXckJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT52aWV3JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxjKTphKENvbnN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpKGIpLnh9CmZ1bmN0aW9uIHdoZW5GbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYixjKXtyZXR1cm4gYShjKT9iKGMpOmN9Y29uc3Qgd2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMod2hlbkZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO2Z1bmN0aW9uIHdoZXJlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZih2b2lkIDA9PT1iKXJldHVybiBkPT53aGVyZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsZCk7bGV0IGM9ITA7Zm9yKGNvbnN0IGQgaW4gYSl7aWYoIWMpY29udGludWU7Y29uc3QgZT1hW2RdKGJbZF0pO2MmJiExPT09ZSYmKGM9ITEpfXJldHVybiBjfQpmdW5jdGlvbiB3aGVyZUFueSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYodm9pZCAwPT09YilyZXR1cm4gYz0+d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpO2Zvcihjb25zdCBjIGluIGEpaWYoYVtjXShiW2NdKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gd2hlcmVFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9PndoZXJlRXEkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGQpO2NvbnN0IGM9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGQsZSk9PmVxdWFscyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGQsYltlXSksYSk7cmV0dXJuIE9iamVjdC5rZXlzKGMpLmxlbmd0aD09PU9iamVjdC5rZXlzKGEpLmxlbmd0aH0KZnVuY3Rpb24gd2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIHZvaWQgMD09PWI/Yz0+d2l0aG91dCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6cmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGMsZCk9Pi0xPF9pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoZCxhKT9jOmMuY29uY2F0KGQpLFtdLGIpfWZ1bmN0aW9uIHhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2M9PnhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGEsYyk6ISFhJiYhYnx8ISFiJiYhYX0KZnVuY3Rpb24gemlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxiKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZT0+emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYSxlKTtjb25zdCBjPVtdLGQ9TWF0aC5taW4oYS5sZW5ndGgsYi5sZW5ndGgpO2ZvcihsZXQgZT0wO2U8ZDtlKyspY1tlXT1bYVtlXSxiW2VdXTtyZXR1cm4gY31mdW5jdGlvbiB6aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9jPT56aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGMpOnRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aCxhKS5yZWR1Y2UoKGMsZCxlKT0+e2NbZF09YltlXTtyZXR1cm4gY30se30pfQpmdW5jdGlvbiB6aXBXaXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhLGIsYyl7cmV0dXJuIHRha2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhiLmxlbmd0aD5jLmxlbmd0aD9jLmxlbmd0aDpiLmxlbmd0aCxiKS5tYXAoKGQsZSk9PmEoZCxjW2VdKSl9Y29uc3QgemlwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzPWN1cnJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoemlwV2l0aEZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMpO3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM9e307bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLkY9RiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuVD1UJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLl9fZmluZEhpZ2hlc3RBcml0eT1fX2ZpbmRIaWdoZXN0QXJpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuX2FyaXR5PV9hcml0eSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5faW5kZXhPZj1faW5kZXhPZiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fbGFzdEluZGV4T2Y9X2xhc3RJbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5fcGlwZT1fcGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hZGQ9YWRkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFkanVzdD1hZGp1c3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYWxsPWFsbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbGxQYXNzPWFsbFBhc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFsd2F5cz1hbHdheXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYW5kPWFuZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hbnk9YW55JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFueVBhc3M9YW55UGFzcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBlbmQ9YXBwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseT1hcHBseSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5hcHBseVNwZWM9YXBwbHlTcGVjJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jPWFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmFzc29jUGF0aD1hc3NvY1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuYmluZD1iaW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ib3RoPWJvdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2hhaW49Y2hhaW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xhbXA9Y2xhbXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY2xvbmU9Y2xvbmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29tcGxlbWVudD1jb21wbGVtZW50JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb21wb3NlPWNvbXBvc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29uY2F0PWNvbmNhdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jb25kPWNvbmQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY29udmVyZ2U9Y29udmVyZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuY291bnQ9Y291bnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmNvdW50Qnk9Y291bnRCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeT1jdXJyeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5jdXJyeU49Y3VycnlOJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRlYz1kZWMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGVmYXVsdFRvPWRlZmF1bHRUbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGlmZmVyZW5jZT1kaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRpc3NvYz1kaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZGl2aWRlPWRpdmlkZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wPWRyb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZHJvcExhc3Q9ZHJvcExhc3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BMYXN0V2hpbGU9ZHJvcExhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0cz1kcm9wUmVwZWF0cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5kcm9wUmVwZWF0c1dpdGg9ZHJvcFJlcGVhdHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmRyb3BXaGlsZT1kcm9wV2hpbGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVpdGhlcj1laXRoZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZW5kc1dpdGg9ZW5kc1dpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXFQcm9wcz1lcVByb3BzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmVxdWFscz1lcXVhbHMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlPWV2b2x2ZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlQXJyYXk9ZXZvbHZlQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZXZvbHZlT2JqZWN0PWV2b2x2ZU9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maWx0ZXI9ZmlsdGVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlckFycmF5PWZpbHRlckFycmF5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbHRlck9iamVjdD1maWx0ZXJPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmQ9ZmluZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5maW5kSW5kZXg9ZmluZEluZGV4JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0PWZpbmRMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZpbmRMYXN0SW5kZXg9ZmluZExhc3RJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mbGF0dGVuPWZsYXR0ZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmZsaXA9ZmxpcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5mb3JFYWNoPWZvckVhY2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZnJvbVBhaXJzPWZyb21QYWlycyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5ncm91cEJ5PWdyb3VwQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuZ3JvdXBXaXRoPWdyb3VwV2l0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGFzPWhhcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5oYXNQYXRoPWhhc1BhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaGVhZD1oZWFkJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlkZW50aWNhbD1pZGVudGljYWwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaWRlbnRpdHk9aWRlbnRpdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlmRWxzZT1pZkVsc2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5jPWluYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmNsdWRlcz1pbmNsdWRlcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbmRleEJ5PWluZGV4QnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW5kZXhPZj1pbmRleE9mJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbml0PWluaXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuaW50ZXJzZWN0aW9uPWludGVyc2VjdGlvbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pbnRlcnNwZXJzZT1pbnRlcnNwZXJzZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pcz1pcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5pc0VtcHR5PWlzRW1wdHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmlzTmlsPWlzTmlsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmpvaW49am9pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5qdXh0PWp1eHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMua2V5cz1rZXlzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLmxhc3Q9bGFzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGFzdEluZGV4T2Y9bGFzdEluZGV4T2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuZ3RoPWxlbmd0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zPWxlbnMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc0luZGV4PWxlbnNJbmRleCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5sZW5zUGF0aD1sZW5zUGF0aCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubGVuc1Byb3A9bGVuc1Byb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWFwPW1hcCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBBcnJheT1tYXBBcnJheSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmpJbmRleGVkPW1hcE9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXBPYmplY3Q9bWFwT2JqZWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRjaD1tYXRjaCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXRoTW9kPW1hdGhNb2QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWF4PW1heCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeT1tYXhCeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tYXhCeUZuPW1heEJ5Rm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lYW49bWVhbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5tZWRpYW49bWVkaWFuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlPW1lcmdlUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VBbGw9bWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VEZWVwUmlnaHQ9bWVyZ2VEZWVwUmlnaHQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlTGVmdD1tZXJnZUxlZnQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWVyZ2VSaWdodD1tZXJnZVJpZ2h0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1lcmdlV2l0aD1tZXJnZVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluPW1pbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5taW5CeT1taW5CeSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubWluQnlGbj1taW5CeUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeT1tb2RpZnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kaWZ5UGF0aD1tb2RpZnlQYXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm1vZGlmeVBhdGhGbj1tb2RpZnlQYXRoRm4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW9kdWxvPW1vZHVsbyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubW92ZT1tb3ZlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm11bHRpcGx5PW11bHRpcGx5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5lZ2F0ZT1uZWdhdGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMubm9uZT1ub25lJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm5vdD1ub3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm50aD1udGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2JqT2Y9b2JqT2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub2Y9b2YkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub21pdD1vbWl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLm9uPW9uJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5vbmNlPW9uY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3I9b3IkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMub3Zlcj1vdmVyJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpYWw9cGFydGlhbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXJ0aWFsT2JqZWN0PXBhcnRpYWxPYmplY3QkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBhcnRpdGlvbj1wYXJ0aXRpb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uQXJyYXk9cGFydGl0aW9uQXJyYXkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGFydGl0aW9uT2JqZWN0PXBhcnRpdGlvbk9iamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRoPXBhdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aEVxPXBhdGhFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGF0aE9yPXBhdGhPciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wYXRocz1wYXRocyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5waWNrPXBpY2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGlja0FsbD1waWNrQWxsJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnBpcGU9cGlwZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucGx1Y2s9cGx1Y2skJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJlcGVuZD1wcmVwZW5kJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb2R1Y3Q9cHJvZHVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wPXByb3AkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcEVxPXByb3BFcSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucHJvcElzPXByb3BJcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wT3I9cHJvcE9yJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnByb3BTYXRpc2ZpZXM9cHJvcFNhdGlzZmllcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5wcm9wcz1wcm9wcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yYW5nZT1yYW5nZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVkdWNlPXJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VGbj1yZWR1Y2VGbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZWR1Y2VTdG9wcGVyPXJlZHVjZVN0b3BwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmVqZWN0PXJlamVjdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBlYXQ9cmVwZWF0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5yZXBsYWNlPXJlcGxhY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMucmV2ZXJzZT1yZXZlcnNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNldD1zZXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc2xpY2U9c2xpY2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc29ydD1zb3J0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zb3J0Qnk9c29ydEJ5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0PXNwbGl0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnNwbGl0QXQ9c3BsaXRBdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy5zcGxpdEV2ZXJ5PXNwbGl0RXZlcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3BsaXRXaGVuPXNwbGl0V2hlbiQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3RhcnRzV2l0aD1zdGFydHNXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1YnRyYWN0PXN1YnRyYWN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnN1bT1zdW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuc3ltbWV0cmljRGlmZmVyZW5jZT1zeW1tZXRyaWNEaWZmZXJlbmNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhaWw9dGFpbCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzOwptb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudGFrZT10YWtlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0PXRha2VMYXN0JCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRha2VMYXN0V2hpbGU9dGFrZUxhc3RXaGlsZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50YWtlV2hpbGU9dGFrZVdoaWxlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRhcD10YXAkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRlc3Q9dGVzdCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50aW1lcz10aW1lcyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b0xvd2VyPXRvTG93ZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudG9QYWlycz10b1BhaXJzJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnRvU3RyaW5nPXRvU3RyaW5nJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50b1VwcGVyPXRvVXBwZXIkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJhbnNwb3NlPXRyYW5zcG9zZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy50cmltPXRyaW0kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHJ5Q2F0Y2g9dHJ5Q2F0Y2gkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudHlwZT10eXBlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51bmFwcGx5PXVuYXBwbHkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pb249dW5pb24kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcT11bmlxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVuaXFCeT11bmlxQnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW5pcVdpdGg9dW5pcVdpdGgkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVubGVzcz11bmxlc3MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMudW53aW5kPXVud2luZCQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy51cGRhdGU9dXBkYXRlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnVwZGF0ZUZuPXVwZGF0ZUZuJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZhbHVlcz12YWx1ZXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczsKbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnZpZXc9dmlldyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aGVuPXdoZW4kJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmU9d2hlcmUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVBbnk9d2hlcmVBbnkkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMud2hlcmVFcT13aGVyZUVxJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Cm1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy53aXRob3V0PXdpdGhvdXQkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMueG9yPXhvciQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzO21vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcy56aXA9emlwJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7bW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzLnppcE9iaj16aXBPYmokJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qczttb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMuemlwV2l0aD16aXBXaXRoJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanM7Y29uc3QgY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT57YS5leHBvcnRzLmNzb3VuZFNldE1pZGlDYWxsYmFja3MoYil9LGNzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMpPT57Y29uc3Qge2J1ZmZlcjpkfT1hLndhc2kubWVtb3J5LGU9YS5leHBvcnRzLmNzb3VuZEdldE1JRElEZXZMaXN0KGIsdm9pZCAwLGM/MTowKTtpZigwPT09ZSlyZXR1cm5bXTtjb25zdCBmPXNpemVvZlN0cnVjdCQkbW9kdWxlJHNyYyR1dGlscyRuYXRpdmVfc2l6ZXMoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzKSxnPWEuZXhwb3J0cy5hbGxvY0NzTWlkaURldmljZVN0cnVjdChlKTthLmV4cG9ydHMuY3NvdW5kR2V0TUlESURldkxpc3QoYixnLGM/MTowKTtjb25zdCBoPW5ldyBVaW50OEFycmF5KGQsZyxmKmUpO2I9cmFuZ2UkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygwLAplKS5tYXAoaz0+c3RydWN0QnVmZmVyVG9PYmplY3QkJG1vZHVsZSRzcmMkdXRpbHMkc3RydWN0dXJlX2J1ZmZlcl90b19vYmplY3QoQ1NfTUlESURFVklDRSQkbW9kdWxlJHNyYyRzdHJ1Y3R1cmVzLGguc3ViYXJyYXkoaypmLGYpKSk7YS5leHBvcnRzLmZyZWVDc01pZGlEZXZpY2VTdHJ1Y3QoZyk7cmV0dXJuIGJ9O2Nzb3VuZEdldE1JRElEZXZMaXN0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLnRvU3RyaW5nPSgpPT4iZ2V0TUlESURldkxpc3QgPSBhc3luYyAoaXNPdXRwdXQpID0+IE9iamVjdDsiOwpjb25zdCBjc291bmRHZXRSdE1pZGlOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldFJ0TWlkaU5hbWUoYik7Yz1uZXcgVWludDhBcnJheShjLGIsMTI4KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS50b1N0cmluZz0oKT0+ImdldFJ0TWlkaU5hbWUgPSBhc3luYyAoKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PmI9Pnt2YXIge2J1ZmZlcjpjfT1hLndhc2kubWVtb3J5O2I9YS5leHBvcnRzLmdldE1pZGlPdXRGaWxlTmFtZShiKTtjPW5ldyBVaW50OEFycmF5KGMsYiwxMjgpO2ImJjA8Yi5sZW5ndGgmJmZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7cmV0dXJuIHRyaW1OdWxsJCRtb2R1bGUkc3JjJHV0aWxzJHRyaW1fbnVsbCh1aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGMpKXx8IiJ9LF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaT1hPT5iPT5hLmV4cG9ydHMuaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQoYiksY3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpPWE9PihiLGMsZCxlKT0+e2EuZXhwb3J0cy5wdXNoTWlkaU1lc3NhZ2UoYiwKYyxkLGUpfTtjc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkudG9TdHJpbmc9KCk9PiJtaWRpTWVzc2FnZSA9IGFzeW5jIChzdGF0dXMsIGRhdGExLCBkYXRhMikgPT4gdW5kZWZpbmVkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk9e307bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5faXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQ9X2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpO21vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGkuY3NvdW5kR2V0TUlESURldkxpc3Q9Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRHZXRNaWRpT3V0RmlsZU5hbWU9Y3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpOwptb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZEdldFJ0TWlkaU5hbWU9Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaTttb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLmNzb3VuZFB1c2hNaWRpTWVzc2FnZT1jc291bmRQdXNoTWlkaU1lc3NhZ2UkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7bW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaS5jc291bmRTZXRNaWRpQ2FsbGJhY2tzPWNzb3VuZFNldE1pZGlDYWxsYmFja3MkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGk7Y29uc3QgY3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJpbnB1dE1lc3NhZ2UgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kSW5wdXRNZXNzYWdlQXN5bmMoYixjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO3JldHVybiBifTtjc291bmRJbnB1dE1lc3NhZ2VBc3luYyQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLnRvU3RyaW5nPSgpPT4iaW5wdXRNZXNzYWdlQXN5bmMgPSBhc3luYyAoc2NvcmVFdmVudCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0Q29udHJvbENoYW5uZWxXYXNpKGIsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtyZXR1cm4gYn07Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+ImdldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBOdW1iZXI7IjsKY29uc3QgY3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2EuZXhwb3J0cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbChiLGMsZCk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKX07Y3NvdW5kU2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldENvbnRyb2xDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lLCB2YWx1ZSkgPT4gdm9pZDsiOwpjb25zdCBjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM9YT0+KGIsYyk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0U3RyaW5nQ2hhbm5lbFdhc2koYixjKTtjb25zdCBkPXB0cjJzdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYik7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxjKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGIpO3JldHVybiBkfTtjc291bmRHZXRTdHJpbmdDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMudG9TdHJpbmc9KCk9PiJnZXRTdHJpbmdDaGFubmVsID0gYXN5bmMgKGNoYW5uZWxOYW1lKSA9PiBTdHJpbmc7IjsKY29uc3QgY3NvdW5kU2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzPWE9PihiLGMsZCk9PntjPXN0cmluZzJwdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZD1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGQpO2EuZXhwb3J0cy5jc291bmRTZXRTdHJpbmdDaGFubmVsKGIsYyxkKTtmcmVlU3RyaW5nUHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsZCl9O2Nzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy50b1N0cmluZz0oKT0+InNldFN0cmluZ0NoYW5uZWwgPSBhc3luYyAoY2hhbm5lbE5hbWUsIHZhbHVlKSA9PiB2b2lkOyI7dmFyIG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cz17fTsKbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldENvbnRyb2xDaGFubmVsPWNzb3VuZEdldENvbnRyb2xDaGFubmVsJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZEdldFN0cmluZ0NoYW5uZWw9Y3NvdW5kR2V0U3RyaW5nQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRJbnB1dE1lc3NhZ2U9Y3NvdW5kSW5wdXRNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7bW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLmNzb3VuZElucHV0TWVzc2FnZUFzeW5jPWNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHM7Cm1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRDb250cm9sQ2hhbm5lbD1jc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzO21vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cy5jc291bmRTZXRTdHJpbmdDaGFubmVsPWNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cztjb25zdCBjc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz1hPT5iPT57dmFyIHtidWZmZXI6Y309YS53YXNpLm1lbW9yeTtiPWEuZXhwb3J0cy5jc291bmRHZXRPdXRwdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0T3V0cHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8udG9TdHJpbmc9KCk9PiJnZXRPdXRwdXROYW1lID0gYXN5bmMgKCkgPT4gU3RyaW5nOyI7CmNvbnN0IGNzb3VuZEdldElucHV0TmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW89YT0+Yj0+e3ZhciB7YnVmZmVyOmN9PWEud2FzaS5tZW1vcnk7Yj1hLmV4cG9ydHMuY3NvdW5kR2V0SW5wdXROYW1lKGIpO2M9bmV3IFVpbnQ4QXJyYXkoYyxiLDY0KTtyZXR1cm4gdHJpbU51bGwkJG1vZHVsZSRzcmMkdXRpbHMkdHJpbV9udWxsKHVpbnQyU3RyaW5nJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMoYykpfHwiIn07Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby50b1N0cmluZz0oKT0+ImdldElucHV0TmFtZSA9IGFzeW5jIChjc291bmQpID0+IFN0cmluZzsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbz17fTttb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pby5jc291bmRHZXRJbnB1dE5hbWU9Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbzsKbW9kdWxlJHNyYyRtb2R1bGVzJGdlbmVyYWxfaW8uY3NvdW5kR2V0T3V0cHV0TmFtZT1jc291bmRHZXRPdXRwdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbztjb25zdCBjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYT1hPT4oYixjLGQpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2Q9c3RyaW5nMnB0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtiPWEuZXhwb3J0cy5jc291bmRBcHBlbmRFbnYoYixjLGQpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7ZnJlZVN0cmluZ1B0ciQkbW9kdWxlJHNyYyR1dGlscyRzdHJpbmdfcG9pbnRlcnMoYSxkKTtyZXR1cm4gYn07Y3NvdW5kQXBwZW5kRW52JCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEudG9TdHJpbmc9KCk9PiJhcHBlbmRFbnYgPSBhc3luYyAoY3NvdW5kLCB2YXJpYWJsZSwgdmFsdWUpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhPWE9PmI9PmEuZXhwb3J0cy5jc291bmRTaG91bGREYWVtb25pemUoYik7CnZhciBtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmE9e307bW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhLmNzb3VuZEFwcGVuZEVudj1jc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYTttb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEuY3NvdW5kU2hvdWxkRGFlbW9uaXplPWNzb3VuZFNob3VsZERhZW1vbml6ZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGV4dHJhO2NvbnN0IGNzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZElzU2NvcmVQZW5kaW5nKGIpO2Nzb3VuZElzU2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJpc1Njb3JlUGVuZGluZyA9IGFzeW5jICgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kU2V0U2NvcmVQZW5kaW5nKGIsYyk7Y3NvdW5kU2V0U2NvcmVQZW5kaW5nJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJzZXRTY29yZVBlbmRpbmcgPSBhc3luYyAocGVuZGluZykgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PihiLGMpPT57Yz1zdHJpbmcycHRyJCRtb2R1bGUkc3JjJHV0aWxzJHN0cmluZ19wb2ludGVycyhhLGMpO2I9YS5leHBvcnRzLmNzb3VuZFJlYWRTY29yZShiLGMpO2ZyZWVTdHJpbmdQdHIkJG1vZHVsZSRzcmMkdXRpbHMkc3RyaW5nX3BvaW50ZXJzKGEsYyk7cmV0dXJuIGJ9O2Nzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4icmVhZFNjb3JlID0gYXN5bmMgKHNjb3JlKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRHZXRTY29yZVRpbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT5iPT5hLmV4cG9ydHMuY3NvdW5kR2V0U2NvcmVUaW1lKGIpO2Nzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4iZ2V0U2NvcmVUaW1lID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nPWE9PmI9PmEuZXhwb3J0cy5jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMoYik7Y3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJnZXRTY29yZU9mZnNldFNlY29uZHMgPSBhc3luYyAoKSA9PiBOdW1iZXI7Ijtjb25zdCBjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZz1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyhiLGMpO2Nzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLnRvU3RyaW5nPSgpPT4ic2V0U2NvcmVPZmZzZXRTZWNvbmRzID0gYXN5bmMgKCkgPT4gTnVtYmVyOyI7CmNvbnN0IGNzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9YT0+Yj0+YS5leHBvcnRzLmNzb3VuZFJld2luZFNjb3JlKGIpO2Nzb3VuZFJld2luZFNjb3JlJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcudG9TdHJpbmc9KCk9PiJyZXdpbmRTY29yZSA9IGFzeW5jICgpID0+IHVuZGVmaW5lZDsiO3ZhciBtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc9e307bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcz1jc291bmRHZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kR2V0U2NvcmVUaW1lPWNzb3VuZEdldFNjb3JlVGltZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nOwptb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kSXNTY29yZVBlbmRpbmc9Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZzttb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcuY3NvdW5kUmVhZFNjb3JlPWNzb3VuZFJlYWRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRSZXdpbmRTY29yZT1jc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nO21vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZy5jc291bmRTZXRTY29yZU9mZnNldFNlY29uZHM9Y3NvdW5kU2V0U2NvcmVPZmZzZXRTZWNvbmRzJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmc7bW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLmNzb3VuZFNldFNjb3JlUGVuZGluZz1jc291bmRTZXRTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZztjb25zdCBjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVMZW5ndGgoYixjKTtjc291bmRUYWJsZUxlbmd0aCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVMZW5ndGggPSBhc3luYyAodGFibGVOdW0pID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+YS5leHBvcnRzLmNzb3VuZFRhYmxlR2V0KGIsYyxkKTtjc291bmRUYWJsZUdldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVHZXQgPSBhc3luYyAodGFibGVOdW0sIHRhYmxlSW5kZXgpID0+IE51bWJlcjsiO2NvbnN0IGNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkLGUpPT5hLmV4cG9ydHMuY3NvdW5kVGFibGVTZXQoYixjLGQsZSk7CmNzb3VuZFRhYmxlU2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJ0YWJsZVNldCA9IGFzeW5jICh0YWJsZU51bSwgdGFibGVJbmRleCwgdmFsdWUpID0+IHVuZGVmaW5lZDsiO2NvbnN0IGNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyxkKT0+e2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jRmxvYXRBcnJheShkLmxlbmd0aCk7KG5ldyBGbG9hdDY0QXJyYXkoYS53YXNpLm1lbW9yeS5idWZmZXIsZSxkLmxlbmd0aCkpLnNldChkKTthLmV4cG9ydHMuY3NvdW5kVGFibGVDb3B5SW4oYixjLGUpO2EuZXhwb3J0cy5mcmVlRmxvYXRBcnJheU1lbShlKX07Y3NvdW5kVGFibGVDb3B5SW4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS50b1N0cmluZz0oKT0+InRhYmxlQ29weUluID0gYXN5bmMgKHRhYmxlTnVtLCBmbG9hdDY0QXJyYXkpID0+IHVuZGVmaW5lZDsiOwpjb25zdCBjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+e3ZhciBkPWEuZXhwb3J0cy5jc291bmRUYWJsZUxlbmd0aChiLGMpO2lmKDA8ZCl7Y29uc3QgZT1hLmV4cG9ydHMuYWxsb2NGbG9hdEFycmF5KGQpO2EuZXhwb3J0cy5jc291bmRUYWJsZUNvcHlPdXQoYixjLGUpOyh7YnVmZmVyOmJ9PWEud2FzaS5tZW1vcnkpO2Q9bmV3IEZsb2F0NjRBcnJheShiLGUsZCk7YS5leHBvcnRzLmZyZWVGbG9hdEFycmF5TWVtKGUpO3JldHVybiBGbG9hdDY0QXJyYXkuZnJvbShkKX19O2Nzb3VuZFRhYmxlQ29weU91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4idGFibGVDb3B5T3V0ID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7Y29uc3QgY3NvdW5kR2V0VGFibGUkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKY3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9Y3NvdW5kVGFibGVDb3B5T3V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc7Y29uc3QgY3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU9YT0+KGIsYyk9Pntjb25zdCBkPWEuZXhwb3J0cy5hbGxvY0Zsb2F0QXJyYXkoMTAyNCk7YS5leHBvcnRzLmNzb3VuZEdldFRhYmxlQXJncyhiLGQsYyk7KHtidWZmZXI6Yn09YS53YXNpLm1lbW9yeSk7Yj1uZXcgRmxvYXQ2NEFycmF5KGIsZCwxMDI0KTthLmV4cG9ydHMuZnJlZUZsb2F0QXJyYXlNZW0oZCk7cmV0dXJuIGJ9O2Nzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0VGFibGVBcmdzID0gYXN5bmMgKHRhYmxlTnVtKSA9PiA/RmxvYXQ2NEFycmF5OyI7CmNvbnN0IGNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZT1hPT4oYixjKT0+YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUudG9TdHJpbmc9KCk9PiJpc05hbWVkR0VOID0gYXN5bmMgKHRhYmxlTnVtKSA9PiBudW1iZXI7Ijtjb25zdCBjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPWE9PihiLGMpPT57dmFyIGQ9YS5leHBvcnRzLmNzb3VuZElzTmFtZWRHRU4oYixjKTtpZigwPGQpe2NvbnN0IGU9YS5leHBvcnRzLmFsbG9jU3RyaW5nTWVtKGQpO2EuZXhwb3J0cy5jc291bmRHZXROYW1lZEdFTihiLGUsYyxkKTsoe2J1ZmZlcjpifT1hLndhc2kubWVtb3J5KTtkPW5ldyBVaW50OEFycmF5KGIsZSxkKTtyZXR1cm4gdWludDJTdHJpbmckJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycyhkKX19Owpjc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLnRvU3RyaW5nPSgpPT4iZ2V0TmFtZWRHRU4gPSBhc3luYyAodGFibGVOdW0pID0+ID9zdHJpbmc7Ijt2YXIgbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlPXt9O21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXROYW1lZEdFTj1jc291bmRHZXROYW1lZEdFTiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRHZXRUYWJsZT1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kR2V0VGFibGVBcmdzPWNzb3VuZEdldFRhYmxlQXJncyQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlO21vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZS5jc291bmRJc05hbWVkR0VOPWNzb3VuZElzTmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTsKbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weUluPWNzb3VuZFRhYmxlQ29weUluJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGU7bW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLmNzb3VuZFRhYmxlQ29weU91dD1jc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVHZXQ9Y3NvdW5kVGFibGVHZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVMZW5ndGg9Y3NvdW5kVGFibGVMZW5ndGgkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTttb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUuY3NvdW5kVGFibGVTZXQ9Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZTtmdW5jdGlvbiB3cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyxkKT0+e2I9InN0cmluZyI9PT10eXBlb2YgZD9lbmNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZW5jb2RlKGQpOmQ7YS53YXNpLndyaXRlRmlsZShjLGIpfX13cml0ZUZpbGUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCwgZGF0YSkgPT4gdm9pZCI7ZnVuY3Rpb24gYXBwZW5kRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjLGQpPT57Yj0ic3RyaW5nIj09PXR5cGVvZiBkP2VuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoZCk6ZDthLndhc2kuYXBwZW5kRmlsZShjLGIpfX1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgsIGRhdGEpID0+IHZvaWQiOwpmdW5jdGlvbiByZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLnJlYWRGaWxlKGMpfXJlYWRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+ID9VaW50OEFycmF5IjtmdW5jdGlvbiB1bmxpbmskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS51bmxpbmsoYyl9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO2Z1bmN0aW9uIHJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMoYSl7cmV0dXJuKGIsYyk9PmEud2FzaS5yZWFkZGlyKGMpfXJlYWRkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMudG9TdHJpbmc9KCk9PiJhc3luYyAocGF0aCkgPT4gc3RyaW5nW10iOwpmdW5jdGlvbiBta2RpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcyhhKXtyZXR1cm4oYixjKT0+YS53YXNpLm1rZGlyKGMpfW1rZGlyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnRvU3RyaW5nPSgpPT4iYXN5bmMgKHBhdGgpID0+IHZvaWQiO3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzPXt9O21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMuYXBwZW5kRmlsZT1hcHBlbmRGaWxlJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMubWtkaXI9bWtkaXIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy5yZWFkRmlsZT1yZWFkRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzLnJlYWRkaXI9cmVhZGRpciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mczsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcy51bmxpbms9dW5saW5rJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMud3JpdGVGaWxlPXdyaXRlRmlsZSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdvcmtlcl9mcztjb25zdCBhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kPXtjc291bmRDcmVhdGU6Y3NvdW5kQ3JlYXRlJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmREZXN0cm95OmNzb3VuZERlc3Ryb3kkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZEdldEFQSVZlcnNpb246Y3NvdW5kR2V0QVBJVmVyc2lvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGluc3RhbnRpYXRpb24sY3NvdW5kR2V0VmVyc2lvbjpjc291bmRHZXRWZXJzaW9uJCRtb2R1bGUkc3JjJG1vZHVsZXMkaW5zdGFudGlhdGlvbixjc291bmRJbml0aWFsaXplOmNzb3VuZEluaXRpYWxpemUkJG1vZHVsZSRzcmMkbW9kdWxlcyRpbnN0YW50aWF0aW9uLGNzb3VuZFBhcnNlT3JjOmNzb3VuZFBhcnNlT3JjJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kQ29tcGlsZVRyZWU6Y3NvdW5kQ29tcGlsZVRyZWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRDb21waWxlT3JjOmNzb3VuZENvbXBpbGVPcmMkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSwKY3NvdW5kRXZhbENvZGU6Y3NvdW5kRXZhbENvZGUkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRTdGFydDpjc291bmRTdGFydCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2Q6Y3NvdW5kQ29tcGlsZUNzZCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZENvbXBpbGVDc2RUZXh0OmNzb3VuZENvbXBpbGVDc2RUZXh0JCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybTpjc291bmRQZXJmb3JtJCRtb2R1bGUkc3JjJG1vZHVsZXMkcGVyZm9ybWFuY2UsY3NvdW5kUGVyZm9ybUtzbXBzOmNzb3VuZFBlcmZvcm1Lc21wcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFBlcmZvcm1CdWZmZXI6Y3NvdW5kUGVyZm9ybUJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZFN0b3A6Y3NvdW5kU3RvcCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLApjc291bmRDbGVhbnVwOmNzb3VuZENsZWFudXAkJG1vZHVsZSRzcmMkbW9kdWxlcyRwZXJmb3JtYW5jZSxjc291bmRSZXNldDpjc291bmRSZXNldCQkbW9kdWxlJHNyYyRtb2R1bGVzJHBlcmZvcm1hbmNlLGNzb3VuZEdldFNyOmNzb3VuZEdldFNyJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRLcjpjc291bmRHZXRLciQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0S3NtcHM6Y3NvdW5kR2V0S3NtcHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sczpjc291bmRHZXROY2hubHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZEdldE5jaG5sc0lucHV0OmNzb3VuZEdldE5jaG5sc0lucHV0JCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXQwZEJGUzpjc291bmRHZXQwZEJGUyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0QTQ6Y3NvdW5kR2V0QTQkJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLApjc291bmRHZXRDdXJyZW50VGltZVNhbXBsZXM6Y3NvdW5kR2V0Q3VycmVudFRpbWVTYW1wbGVzJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRTaXplT2ZNWUZMVDpjc291bmRHZXRTaXplT2ZNWUZMVCQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0T3B0aW9uOmNzb3VuZFNldE9wdGlvbiQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kU2V0UGFyYW1zOmNzb3VuZFNldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0UGFyYW1zOmNzb3VuZEdldFBhcmFtcyQkbW9kdWxlJHNyYyRtb2R1bGVzJGF0dHJpYnV0ZXMsY3NvdW5kR2V0RGVidWc6Y3NvdW5kR2V0RGVidWckJG1vZHVsZSRzcmMkbW9kdWxlcyRhdHRyaWJ1dGVzLGNzb3VuZFNldERlYnVnOmNzb3VuZFNldERlYnVnJCRtb2R1bGUkc3JjJG1vZHVsZXMkYXR0cmlidXRlcyxjc291bmRHZXRJbnB1dEJ1ZmZlclNpemU6Y3NvdW5kR2V0SW5wdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbywKY3NvdW5kR2V0T3V0cHV0QnVmZmVyU2l6ZTpjc291bmRHZXRPdXRwdXRCdWZmZXJTaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRJbnB1dEJ1ZmZlcjpjc291bmRHZXRJbnB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0T3V0cHV0QnVmZmVyOmNzb3VuZEdldE91dHB1dEJ1ZmZlciQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0U3Bpbjpjc291bmRHZXRTcGluJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRhdWRpbyxjc291bmRHZXRTcG91dDpjc291bmRHZXRTcG91dCQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0YXVkaW8sY3NvdW5kR2V0TUlESURldkxpc3Q6Y3NvdW5kR2V0TUlESURldkxpc3QkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kU2V0TWlkaUNhbGxiYWNrczpjc291bmRTZXRNaWRpQ2FsbGJhY2tzJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLGNzb3VuZEdldFJ0TWlkaU5hbWU6Y3NvdW5kR2V0UnRNaWRpTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSwKY3NvdW5kR2V0TWlkaU91dEZpbGVOYW1lOmNzb3VuZEdldE1pZGlPdXRGaWxlTmFtZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHJ0bWlkaSxjc291bmRQdXNoTWlkaU1lc3NhZ2U6Y3NvdW5kUHVzaE1pZGlNZXNzYWdlJCRtb2R1bGUkc3JjJG1vZHVsZXMkcnRtaWRpLF9pc1JlcXVlc3RpbmdSdE1pZGlJbnB1dDpfaXNSZXF1ZXN0aW5nUnRNaWRpSW5wdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyRydG1pZGksY3NvdW5kSW5wdXRNZXNzYWdlOmNzb3VuZElucHV0TWVzc2FnZSQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLGNzb3VuZElucHV0TWVzc2FnZUFzeW5jOmNzb3VuZElucHV0TWVzc2FnZUFzeW5jJCRtb2R1bGUkc3JjJG1vZHVsZXMkY29udHJvbF9ldmVudHMsY3NvdW5kR2V0Q29udHJvbENoYW5uZWw6Y3NvdW5kR2V0Q29udHJvbENoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRDb250cm9sQ2hhbm5lbDpjc291bmRTZXRDb250cm9sQ2hhbm5lbCQkbW9kdWxlJHNyYyRtb2R1bGVzJGNvbnRyb2xfZXZlbnRzLApjc291bmRHZXRTdHJpbmdDaGFubmVsOmNzb3VuZEdldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRTZXRTdHJpbmdDaGFubmVsOmNzb3VuZFNldFN0cmluZ0NoYW5uZWwkJG1vZHVsZSRzcmMkbW9kdWxlcyRjb250cm9sX2V2ZW50cyxjc291bmRHZXRJbnB1dE5hbWU6Y3NvdW5kR2V0SW5wdXROYW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkZ2VuZXJhbF9pbyxjc291bmRHZXRPdXRwdXROYW1lOmNzb3VuZEdldE91dHB1dE5hbWUkJG1vZHVsZSRzcmMkbW9kdWxlcyRnZW5lcmFsX2lvLGNzb3VuZEFwcGVuZEVudjpjc291bmRBcHBlbmRFbnYkJG1vZHVsZSRzcmMkbW9kdWxlcyRleHRyYSxjc291bmRTaG91bGREYWVtb25pemU6Y3NvdW5kU2hvdWxkRGFlbW9uaXplJCRtb2R1bGUkc3JjJG1vZHVsZXMkZXh0cmEsY3NvdW5kSXNTY29yZVBlbmRpbmc6Y3NvdW5kSXNTY29yZVBlbmRpbmckJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZywKY3NvdW5kU2V0U2NvcmVQZW5kaW5nOmNzb3VuZFNldFNjb3JlUGVuZGluZyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFJlYWRTY29yZTpjc291bmRSZWFkU2NvcmUkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRHZXRTY29yZVRpbWU6Y3NvdW5kR2V0U2NvcmVUaW1lJCRtb2R1bGUkc3JjJG1vZHVsZXMkc2NvcmVfaGFuZGxpbmcsY3NvdW5kR2V0U2NvcmVPZmZzZXRTZWNvbmRzOmNzb3VuZEdldFNjb3JlT2Zmc2V0U2Vjb25kcyQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFNldFNjb3JlT2Zmc2V0U2Vjb25kczpjc291bmRTZXRTY29yZU9mZnNldFNlY29uZHMkJG1vZHVsZSRzcmMkbW9kdWxlcyRzY29yZV9oYW5kbGluZyxjc291bmRSZXdpbmRTY29yZTpjc291bmRSZXdpbmRTY29yZSQkbW9kdWxlJHNyYyRtb2R1bGVzJHNjb3JlX2hhbmRsaW5nLGNzb3VuZFRhYmxlTGVuZ3RoOmNzb3VuZFRhYmxlTGVuZ3RoJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsCmNzb3VuZFRhYmxlR2V0OmNzb3VuZFRhYmxlR2V0JCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kVGFibGVTZXQ6Y3NvdW5kVGFibGVTZXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRUYWJsZUNvcHlJbjpjc291bmRUYWJsZUNvcHlJbiQkbW9kdWxlJHNyYyRtb2R1bGVzJHRhYmxlLGNzb3VuZFRhYmxlQ29weU91dDpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZTpjc291bmRUYWJsZUNvcHlPdXQkJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxjc291bmRHZXRUYWJsZUFyZ3M6Y3NvdW5kR2V0VGFibGVBcmdzJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kSXNOYW1lZEdFTjpjc291bmRJc05hbWVkR0VOJCRtb2R1bGUkc3JjJG1vZHVsZXMkdGFibGUsY3NvdW5kR2V0TmFtZWRHRU46Y3NvdW5kR2V0TmFtZWRHRU4kJG1vZHVsZSRzcmMkbW9kdWxlcyR0YWJsZSxmczptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd29ya2VyX2ZzfTsKdmFyICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZD1mdW5jdGlvbihhKXtyZXR1cm4gbWVyZ2VBbGwkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhbcmVkdWNlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoKGIsYyk9PmFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoYyxhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kW2NdKGEpLGIpLHt9LGtleXMkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhkaXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiZnMiKShhcGkkJG1vZHVsZSRzcmMkbGliY3NvdW5kKSkpLHJlZHVjZSQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKChiLGMpPT5hc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKGMsCmFwaSQkbW9kdWxlJHNyYyRsaWJjc291bmQuZnNbY10oYSksYikse30sa2V5cyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3b3JrZXJfZnMpKV0pfSxtb2R1bGUkc3JjJGxpYmNzb3VuZD17fTttb2R1bGUkc3JjJGxpYmNzb3VuZC5hcGk9YXBpJCRtb2R1bGUkc3JjJGxpYmNzb3VuZDttb2R1bGUkc3JjJGxpYmNzb3VuZC5kZWZhdWx0PSRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJGxpYmNzb3VuZDtjb25zdCBkbGluaXQkJG1vZHVsZSRzcmMkZGxpbml0PShhLGIsYyxkKT0+e2lmKGIuZXhwb3J0cy5jc291bmRNb2R1bGVJbml0KXt2YXIgZT1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LDApLGc9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7Y29uc3QgaD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKTtsZXQgaz1jLmxlbmd0aDsiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRNb2R1bGVDcmVhdGUmJihjLmdyb3coMSksZS52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZSksays9MSk7ImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kTW9kdWxlSW5pdCYmKGMuZ3JvdygxKSxmLnZhbHVlPWssYy5zZXQoaywKYi5leHBvcnRzLmNzb3VuZE1vZHVsZUluaXQpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kmJihjLmdyb3coMSksZy52YWx1ZT1rLGMuc2V0KGssYi5leHBvcnRzLmNzb3VuZE1vZHVsZURlc3Ryb3kpLGsrPTEpOyJmdW5jdGlvbiI9PT10eXBlb2YgYi5leHBvcnRzLmNzb3VuZE1vZHVsZUVycm9yQ29kZVRvU3RyaW5nJiYoYy5ncm93KDEpLGgudmFsdWU9ayxjLnNldChrLGIuZXhwb3J0cy5jc291bmRNb2R1bGVFcnJvckNvZGVUb1N0cmluZykpO2EuZXhwb3J0cy5jc291bmRXYXNpTG9hZFBsdWdpbihkLGUsZixnLGgpfWVsc2UgYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8Yi5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQ/KGU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCksZj1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiEwfSwwKSxnPWMubGVuZ3RoLAoiZnVuY3Rpb24iPT09dHlwZW9mIGIuZXhwb3J0cy5jc291bmRfb3Bjb2RlX2luaXQmJihlLnZhbHVlPWcsYy5ncm93KDEpLGMuc2V0KGcsYi5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdCksZys9MSksImZ1bmN0aW9uIj09PXR5cGVvZiBiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCYmKGYudmFsdWU9ZyxjLmdyb3coMSksYy5zZXQoZyxiLmV4cG9ydHMuY3NvdW5kX2ZnZW5faW5pdCkpLGEuZXhwb3J0cy5jc291bmRXYXNpTG9hZE9wY29kZUxpYnJhcnkoZCxmLGUpKTpjb25zb2xlLmVycm9yKCJQbHVnaW4gZG9lc24ndCBleHBvcnQgbmVjZWNjYXJ5IGZ1bmN0aW9ucyB0byBxdWFsaXR5IGFzIGNzb3VuZCBwbHVnaW4uIil9O3ZhciBtb2R1bGUkc3JjJGRsaW5pdD17fTttb2R1bGUkc3JjJGRsaW5pdC5kbGluaXQ9ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdDt2b2lkIDAhPT1nb29nLmdsb2JhbCYmKGdvb2cuZ2xvYmFsPXt9KTtnb29nLmdsb2JhbC5CaWdJbnR8fChnb29nLmdsb2JhbC5CaWdJbnQ9dm9pZCAwPT09QmlnSW50P051bWJlcjpCaWdJbnQpOwpjb25zdCBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9FQUREUklOVVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMsV0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NSxXQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRUFMUkVBRFkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NyxXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTgsV0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTksV0FTSV9FQlVTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTAsV0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTEsV0FTSV9FQ0hJTEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTIsV0FTSV9FQ09OTkFCT1JURUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9FQ09OTlJFRlVTRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTQsV0FTSV9FQ09OTlJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE1LFdBU0lfRURFQURMSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNixXQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNyxXQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTgsV0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9FRVhJU1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjIwLFdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIxLFdBU0lfRUZCSUckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjIsV0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9FSURSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNCxXQVNJX0VJTFNFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yNSxXQVNJX0VJTlBST0dSRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI2LFdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjcsV0FTSV9FSU5WQUwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjgsV0FTSV9FSU8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjksV0FTSV9FSVNDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMwLFdBU0lfRUlTRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQozMSxXQVNJX0VMT09QJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMyLFdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTMzLFdBU0lfRU1MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTM0LFdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzUsV0FTSV9FTVVMVElIT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzYsV0FTSV9FTkFNRVRPT0xPTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MzcsV0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOCxXQVNJX0VORVRSRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0zOSxXQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQwLFdBU0lfRU5GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQxLApXQVNJX0VOT0JVRlMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDIsV0FTSV9FTk9ERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDMsV0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NDQsV0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ1LFdBU0lfRU5PTENLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQ2LFdBU0lfRU5PTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00NyxXQVNJX0VOT01FTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OCxXQVNJX0VOT01TRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz00OSxXQVNJX0VOT1BST1RPT1BUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUwLFdBU0lfRU5PU1BDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUxLFdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQo1MixXQVNJX0VOT1RDT05OJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTUzLFdBU0lfRU5PVERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NCxXQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NSxXQVNJX0VOT1RSRUNPVkVSQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01NixXQVNJX0VOT1RTT0NLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTU3LFdBU0lfRU5PVFNVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OCxXQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01OSxXQVNJX0VOWElPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYwLFdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYxLFdBU0lfRU9XTkVSREVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KNjIsV0FTSV9FUEVSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02MyxXQVNJX0VQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY0LFdBU0lfRVBST1RPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY1LFdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY2LFdBU0lfRVBST1RPVFlQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02NyxXQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02OCxXQVNJX0VST0ZTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTY5LFdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTcwLFdBU0lfRVNSQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzEsV0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzIsV0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjczLFdBU0lfRVRYVEJTWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03NCxXQVNJX0VYREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTc1LFdBU0lfRU5PVENBUEFCTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NzYsV0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TSUdBTFJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TSUdCVVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX1NJR0NITEQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfU0lHSFVQJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTYsV0FTSV9TSUdJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjcsV0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1NJR0tJTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OSxXQVNJX1NJR1BJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTAsV0FTSV9TSUdRVUlUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTExLFdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xMixXQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTMsV0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE0LFdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xNSxXQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTYsV0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTE3LFdBU0lfU0lHVFRPVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KMTgsV0FTSV9TSUdVUkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MTksV0FTSV9TSUdVU1IxJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIwLFdBU0lfU0lHVVNSMiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMSxXQVNJX1NJR1ZUQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yMixXQVNJX1NJR1hDUFUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MjMsV0FTSV9TSUdYRlNaJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI0LFdBU0lfRklMRVRZUEVfVU5LTk9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRklMRVRZUEVfQkxPQ0tfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjMsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz01LFdBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz02LFdBU0lfRklMRVRZUEVfU1lNQk9MSUNfTElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz03LFdBU0lfRkRGTEFHX0FQUEVORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0xLFdBU0lfRkRGTEFHX0RTWU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9GREZMQUdfTk9OQkxPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz04LFdBU0lfRkRGTEFHX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjE2LFdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEpLFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMiksV0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0KSxXQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgpLFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYpLFdBU0lfUklHSFRfRkRfVEVMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzIpLFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCg2NCksV0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEyOCksV0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjU2KSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoNTEyKSxXQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwMjQpLFdBU0lfUklHSFRfUEFUSF9MSU5LX1NPVVJDRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjA0OCksV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPQpnb29nLmdsb2JhbC5CaWdJbnQoNDA5NiksV0FTSV9SSUdIVF9QQVRIX09QRU4kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDgxOTIpLFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMTYzODQpLFdBU0lfUklHSFRfUEFUSF9SRUFETElOSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMzI3NjgpLFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg2NTUzNiksV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEzMTA3MiksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KZ29vZy5nbG9iYWwuQmlnSW50KDI2MjE0NCksV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg1MjQyODgpLFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDEwNDg1NzYpLFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgyMDk3MTUyKSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCg0MTk0MzA0KSxXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoODM4ODYwOCksV0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Cmdvb2cuZ2xvYmFsLkJpZ0ludCgxNjc3NzIxNiksV0FTSV9SSUdIVF9QQVRIX1JFTU9WRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDMzNTU0NDMyKSxXQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9Z29vZy5nbG9iYWwuQmlnSW50KDY3MTA4ODY0KSxXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgxMzQyMTc3MjgpLFdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMjY4NDM1NDU2KSxSSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX0ZEX1NFRUskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FEVklTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0FMTE9DQVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfT1BFTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFQURMSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU5BTUVfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1RJTUVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRklMRVNUQVRfU0VUX1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyxSSUdIVFNfQ0hBUkFDVEVSX0RFVklDRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMsUklHSFRTX0NIQVJBQ1RFUl9ERVZJQ0VfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0KV0FTSV9SSUdIVF9GRF9EQVRBU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9URUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BTExPQ0FURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX0dFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3wKV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9USU1FUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1nb29nLmdsb2JhbC5CaWdJbnQoMCksUklHSFRTX0RJUkVDVE9SWV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPVdBU0lfUklHSFRfRkRfRkRTVEFUX1NFVF9GTEFHUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1NZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9DUkVBVEVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9DUkVBVEVfRklMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfUkVBRERJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9TT1VSQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfUEFUSF9SRU1PVkVfRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfApXQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19ESVJFQ1RPUllfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8UklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8CldBU0lfUklHSFRfUE9MTF9GRF9SRUFEV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19TT0NLRVRfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLFJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz1XQVNJX1JJR0hUX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfFdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9HRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN8V0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cywKUklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MyxXQVNJX0VWRU5UVFlQRV9DTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX0VWRU5UVFlQRV9GRF9XUklURSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0yLFdBU0lfRklMRVNUQVRfU0VUX0FUSU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjEsV0FTSV9GSUxFU1RBVF9TRVRfQVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MixXQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTQsV0FTSV9GSUxFU1RBVF9TRVRfTVRJTV9OT1ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX09fQ1JFQVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9MSxXQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9NCxXQVNJX09fVFJVTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9OCxXQVNJX1BSRU9QRU5UWVBFX0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cz0wLFdBU0lfRElSQ09PS0lFX1NUQVJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9CjAsV0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTIsV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTAsV0FTSV9XSEVOQ0VfQ1VSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTEsV0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzPTI7dmFyIG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM9e307bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQUxMPVJJR0hUU19BTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfQkxPQ0tfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0JBU0U9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19DSEFSQUNURVJfREVWSUNFX0lOSEVSSVRJTkc9UklHSFRTX0FMTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19ESVJFQ1RPUllfQkFTRT1SSUdIVFNfRElSRUNUT1JZX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfRElSRUNUT1JZX0lOSEVSSVRJTkc9UklHSFRTX0RJUkVDVE9SWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19SRUdVTEFSX0ZJTEVfQkFTRT1SSUdIVFNfUkVHVUxBUl9GSUxFX0JBU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfUkVHVUxBUl9GSUxFX0lOSEVSSVRJTkc9UklHSFRTX1JFR1VMQVJfRklMRV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1NPQ0tFVF9CQVNFPVJJR0hUU19TT0NLRVRfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLlJJR0hUU19TT0NLRVRfSU5IRVJJVElORz1SSUdIVFNfQUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuUklHSFRTX1RUWV9CQVNFPVJJR0hUU19UVFlfQkFTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5SSUdIVFNfVFRZX0lOSEVSSVRJTkc9UklHSFRTX1RUWV9JTkhFUklUSU5HJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9DTE9DS19NT05PVE9OSUM9V0FTSV9DTE9DS19NT05PVE9OSUMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRD1XQVNJX0NMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfQ0xPQ0tfUkVBTFRJTUU9V0FTSV9DTE9DS19SRUFMVElNRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0NMT0NLX1RIUkVBRF9DUFVUSU1FX0lEPVdBU0lfQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0RJUkNPT0tJRV9TVEFSVD1XQVNJX0RJUkNPT0tJRV9TVEFSVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRTJCSUc9V0FTSV9FMkJJRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFDQ0VTPVdBU0lfRUFDQ0VTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUREUklOVVNFPVdBU0lfRUFERFJJTlVTRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBRERSTk9UQVZBSUw9V0FTSV9FQUREUk5PVEFWQUlMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQUZOT1NVUFBPUlQ9V0FTSV9FQUZOT1NVUFBPUlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VBR0FJTj1XQVNJX0VBR0FJTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUFMUkVBRFk9V0FTSV9FQUxSRUFEWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUJBREY9V0FTSV9FQkFERiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VCQURNU0c9V0FTSV9FQkFETVNHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQlVTWT1XQVNJX0VCVVNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ0FOQ0VMRUQ9V0FTSV9FQ0FOQ0VMRUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VDSElMRD1XQVNJX0VDSElMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5BQk9SVEVEPVdBU0lfRUNPTk5BQk9SVEVEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUNPTk5SRUZVU0VEPVdBU0lfRUNPTk5SRUZVU0VEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FQ09OTlJFU0VUPVdBU0lfRUNPTk5SRVNFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURFQURMSz1XQVNJX0VERUFETEskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VERVNUQUREUlJFUT1XQVNJX0VERVNUQUREUlJFUSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRURPTT1XQVNJX0VET00kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRFFVT1Q9V0FTSV9FRFFVT1QkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VFWElTVD1XQVNJX0VFWElTVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUZBVUxUPVdBU0lfRUZBVUxUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FRkJJRz1XQVNJX0VGQklHJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSE9TVFVOUkVBQ0g9V0FTSV9FSE9TVFVOUkVBQ0gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJRFJNPVdBU0lfRUlEUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSUxTRVE9V0FTSV9FSUxTRVEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlBST0dSRVNTPVdBU0lfRUlOUFJPR1JFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlRSPVdBU0lfRUlOVFIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJTlZBTD1XQVNJX0VJTlZBTCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUlPPVdBU0lfRUlPJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FSVNDT05OPVdBU0lfRUlTQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VJU0RJUj1XQVNJX0VJU0RJUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRUxPT1A9V0FTSV9FTE9PUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU1GSUxFPVdBU0lfRU1GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTUxJTks9V0FTSV9FTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNU0dTSVpFPVdBU0lfRU1TR1NJWkUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VNVUxUSUhPUD1XQVNJX0VNVUxUSUhPUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOQU1FVE9PTE9ORz1XQVNJX0VOQU1FVE9PTE9ORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVERPV049V0FTSV9FTkVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5FVFJFU0VUPVdBU0lfRU5FVFJFU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkVUVU5SRUFDSD1XQVNJX0VORVRVTlJFQUNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTkZJTEU9V0FTSV9FTkZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9CVUZTPVdBU0lfRU5PQlVGUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PREVWPVdBU0lfRU5PREVWJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9FTlQ9V0FTSV9FTk9FTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0VYRUM9V0FTSV9FTk9FWEVDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9MQ0s9V0FTSV9FTk9MQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT0xJTks9V0FTSV9FTk9MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PTUVNPVdBU0lfRU5PTUVNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FTk9NU0c9V0FTSV9FTk9NU0ckJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1BST1RPT1BUPVdBU0lfRU5PUFJPVE9PUFQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1NQQz1XQVNJX0VOT1NQQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PU1lTPVdBU0lfRU5PU1lTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENBUEFCTEU9V0FTSV9FTk9UQ0FQQUJMRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVENPTk49V0FTSV9FTk9UQ09OTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVERJUj1XQVNJX0VOT1RESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RFTVBUWT1XQVNJX0VOT1RFTVBUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFJFQ09WRVJBQkxFPVdBU0lfRU5PVFJFQ09WRVJBQkxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNPQ0s9V0FTSV9FTk9UU09DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5PVFNVUD1XQVNJX0VOT1RTVVAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VOT1RUWT1XQVNJX0VOT1RUWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU5YSU89V0FTSV9FTlhJTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9WRVJGTE9XPVdBU0lfRU9WRVJGTE9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRU9XTkVSREVBRD1XQVNJX0VPV05FUkRFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQRVJNPVdBU0lfRVBFUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQSVBFPVdBU0lfRVBJUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VQUk9UTz1XQVNJX0VQUk9UTyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPTk9TVVBQT1JUPVdBU0lfRVBST1RPTk9TVVBQT1JUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVBST1RPVFlQRT1XQVNJX0VQUk9UT1RZUEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VSQU5HRT1XQVNJX0VSQU5HRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVJPRlM9V0FTSV9FUk9GUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRVNQSVBFPVdBU0lfRVNQSVBFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1JDSD1XQVNJX0VTUkNIJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1RBTEU9V0FTSV9FU1RBTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FU1VDQ0VTUz1XQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVElNRURPVVQ9V0FTSV9FVElNRURPVVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VUWFRCU1k9V0FTSV9FVFhUQlNZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfQ0xPQ0s9V0FTSV9FVkVOVFRZUEVfQ0xPQ0skJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VWRU5UVFlQRV9GRF9SRUFEPVdBU0lfRVZFTlRUWVBFX0ZEX1JFQUQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9FVkVOVFRZUEVfRkRfV1JJVEU9V0FTSV9FVkVOVFRZUEVfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0VYREVWPVdBU0lfRVhERVYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19BUFBFTkQ9V0FTSV9GREZMQUdfQVBQRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GREZMQUdfRFNZTkM9V0FTSV9GREZMQUdfRFNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19OT05CTE9DSz1XQVNJX0ZERkxBR19OT05CTE9DSyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZERkxBR19SU1lOQz1XQVNJX0ZERkxBR19SU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRkRGTEFHX1NZTkM9V0FTSV9GREZMQUdfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU09V0FTSV9GSUxFU1RBVF9TRVRfQVRJTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX0FUSU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFU1RBVF9TRVRfTVRJTT1XQVNJX0ZJTEVTVEFUX1NFVF9NVElNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XPVdBU0lfRklMRVNUQVRfU0VUX01USU1fTk9XJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0U9V0FTSV9GSUxFVFlQRV9CTE9DS19ERVZJQ0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX0NIQVJBQ1RFUl9ERVZJQ0U9V0FTSV9GSUxFVFlQRV9DSEFSQUNURVJfREVWSUNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlk9V0FTSV9GSUxFVFlQRV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEU9V0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9ER1JBTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfU09DS0VUX1NUUkVBTT1XQVNJX0ZJTEVUWVBFX1NPQ0tFVF9TVFJFQU0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX0ZJTEVUWVBFX1NZTUJPTElDX0xJTks9V0FTSV9GSUxFVFlQRV9TWU1CT0xJQ19MSU5LJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfRklMRVRZUEVfVU5LTk9XTj1XQVNJX0ZJTEVUWVBFX1VOS05PV04kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fQ1JFQVQ9V0FTSV9PX0NSRUFUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0RJUkVDVE9SWT1XQVNJX09fRElSRUNUT1JZJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9PX0VYQ0w9V0FTSV9PX0VYQ0wkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX09fVFJVTkM9V0FTSV9PX1RSVU5DJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUFJFT1BFTlRZUEVfRElSPVdBU0lfUFJFT1BFTlRZUEVfRElSJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9BRFZJU0U9V0FTSV9SSUdIVF9GRF9BRFZJU0UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0FMTE9DQVRFPVdBU0lfUklHSFRfRkRfQUxMT0NBVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0RBVEFTWU5DPVdBU0lfUklHSFRfRkRfREFUQVNZTkMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX0ZEU1RBVF9TRVRfRkxBR1M9V0FTSV9SSUdIVF9GRF9GRFNUQVRfU0VUX0ZMQUdTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUPVdBU0lfUklHSFRfRkRfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfU0laRT1XQVNJX1JJR0hUX0ZEX0ZJTEVTVEFUX1NFVF9TSVpFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVM9V0FTSV9SSUdIVF9GRF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1JFQUQ9V0FTSV9SSUdIVF9GRF9SRUFEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfUkVBRERJUj1XQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1NFRUs9V0FTSV9SSUdIVF9GRF9TRUVLJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9GRF9TWU5DPVdBU0lfUklHSFRfRkRfU1lOQyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfRkRfVEVMTD1XQVNJX1JJR0hUX0ZEX1RFTEwkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX0ZEX1dSSVRFPVdBU0lfUklHSFRfRkRfV1JJVEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlk9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9ESVJFQ1RPUlkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfQ1JFQVRFX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX0NSRUFURV9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX0dFVD1XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfR0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0ZJTEVTVEFUX1NFVF9TSVpFPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfU0laRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfRklMRVNUQVRfU0VUX1RJTUVTPVdBU0lfUklHSFRfUEFUSF9GSUxFU1RBVF9TRVRfVElNRVMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfTElOS19TT1VSQ0U9V0FTSV9SSUdIVF9QQVRIX0xJTktfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX0xJTktfVEFSR0VUPVdBU0lfUklHSFRfUEFUSF9MSU5LX1RBUkdFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9PUEVOPVdBU0lfUklHSFRfUEFUSF9PUEVOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRUFETElOSz1XQVNJX1JJR0hUX1BBVEhfUkVBRExJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWT1XQVNJX1JJR0hUX1BBVEhfUkVNT1ZFX0RJUkVDVE9SWSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFPVdBU0lfUklHSFRfUEFUSF9SRU5BTUVfU09VUkNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQ9V0FTSV9SSUdIVF9QQVRIX1JFTkFNRV9UQVJHRVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QQVRIX1NZTUxJTks9V0FTSV9SSUdIVF9QQVRIX1NZTUxJTkskJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1JJR0hUX1BBVEhfVU5MSU5LX0ZJTEU9V0FTSV9SSUdIVF9QQVRIX1VOTElOS19GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9QT0xMX0ZEX1JFQURXUklURT1XQVNJX1JJR0hUX1BPTExfRkRfUkVBRFdSSVRFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9SSUdIVF9TT0NLX1NIVVRET1dOPVdBU0lfUklHSFRfU09DS19TSFVURE9XTiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0FCUlQ9V0FTSV9TSUdBQlJUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdBTFJNPVdBU0lfU0lHQUxSTSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQlVTPVdBU0lfU0lHQlVTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdDSExEPVdBU0lfU0lHQ0hMRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHQ09OVD1XQVNJX1NJR0NPTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0ZQRT1XQVNJX1NJR0ZQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czsKbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0hVUD1XQVNJX1NJR0hVUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHSUxMPVdBU0lfU0lHSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdJTlQ9V0FTSV9TSUdJTlQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR0tJTEw9V0FTSV9TSUdLSUxMJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdQSVBFPVdBU0lfU0lHUElQRSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHUVVJVD1XQVNJX1NJR1FVSVQkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdTRUdWPVdBU0lfU0lHU0VHViQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHU1RPUD1XQVNJX1NJR1NUT1AkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RFUk09V0FTSV9TSUdURVJNJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdUUkFQPVdBU0lfU0lHVFJBUCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFNUUD1XQVNJX1NJR1RTVFAkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1RUSU49V0FTSV9TSUdUVElOJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVFRPVT1XQVNJX1NJR1RUT1UkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VSRz1XQVNJX1NJR1VSRyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHVVNSMT1XQVNJX1NJR1VTUjEkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NJR1VTUjI9V0FTSV9TSUdVU1IyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdWVEFMUk09V0FTSV9TSUdWVEFMUk0kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Cm1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TSUdYQ1BVPVdBU0lfU0lHWENQVSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfU0lHWEZTWj1XQVNJX1NJR1hGU1okJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NUREVSUl9GSUxFTk89V0FTSV9TVERFUlJfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9TVERJTl9GSUxFTk89V0FTSV9TVERJTl9GSUxFTk8kJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1NURE9VVF9GSUxFTk89V0FTSV9TVERPVVRfRklMRU5PJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOwptb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzLldBU0lfV0hFTkNFX0NVUj1XQVNJX1dIRU5DRV9DVVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7bW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cy5XQVNJX1dIRU5DRV9FTkQ9V0FTSV9XSEVOQ0VfRU5EJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzO21vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMuV0FTSV9XSEVOQ0VfU0VUPVdBU0lfV0hFTkNFX1NFVCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cztnb29nLmRlYnVnPXt9O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IoYSxiKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLG1vZHVsZSRjb250ZW50cyRnb29nJGRlYnVnJEVycm9yX0RlYnVnRXJyb3IpO2Vsc2V7Y29uc3QgYz1FcnJvcigpLnN0YWNrO2MmJih0aGlzLnN0YWNrPWMpfWEmJih0aGlzLm1lc3NhZ2U9U3RyaW5nKGEpKTt2b2lkIDAhPT1iJiYodGhpcy5jYXVzZT1iKTt0aGlzLnJlcG9ydEVycm9yVG9TZXJ2ZXI9ITB9Z29vZy5pbmhlcml0cyhtb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLEVycm9yKTttb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yLnByb3RvdHlwZS5uYW1lPSJDdXN0b21FcnJvciI7Z29vZy5kZWJ1Zy5FcnJvcj1tb2R1bGUkY29udGVudHMkZ29vZyRkZWJ1ZyRFcnJvcl9EZWJ1Z0Vycm9yO2dvb2cuZG9tPXt9O2dvb2cuZG9tLk5vZGVUeXBlPXtFTEVNRU5UOjEsQVRUUklCVVRFOjIsVEVYVDozLENEQVRBX1NFQ1RJT046NCxFTlRJVFlfUkVGRVJFTkNFOjUsRU5USVRZOjYsUFJPQ0VTU0lOR19JTlNUUlVDVElPTjo3LENPTU1FTlQ6OCxET0NVTUVOVDo5LERPQ1VNRU5UX1RZUEU6MTAsRE9DVU1FTlRfRlJBR01FTlQ6MTEsTk9UQVRJT046MTJ9O2dvb2cuYXNzZXJ0cz17fTtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFM9Z29vZy5ERUJVRztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX0Fzc2VydGlvbkVycm9yKGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvci5jYWxsKHRoaXMsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYikpO3RoaXMubWVzc2FnZVBhdHRlcm49YX1nb29nLmluaGVyaXRzKG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IsbW9kdWxlJGNvbnRlbnRzJGdvb2ckZGVidWckRXJyb3JfRGVidWdFcnJvcik7Z29vZy5hc3NlcnRzLkFzc2VydGlvbkVycm9yPW1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3I7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvci5wcm90b3R5cGUubmFtZT0iQXNzZXJ0aW9uRXJyb3IiOwpnb29nLmFzc2VydHMuREVGQVVMVF9FUlJPUl9IQU5ETEVSPWZ1bmN0aW9uKGEpe3Rocm93IGE7fTtsZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19lcnJvckhhbmRsZXJfPWdvb2cuYXNzZXJ0cy5ERUZBVUxUX0VSUk9SX0hBTkRMRVI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19zdWJzKGEsYil7YT1hLnNwbGl0KCIlcyIpO2xldCBjPSIiO2NvbnN0IGQ9YS5sZW5ndGgtMTtmb3IobGV0IGU9MDtlPGQ7ZSsrKWMrPWFbZV0rKGU8Yi5sZW5ndGg/YltlXToiJXMiKTtyZXR1cm4gYythW2RdfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZShhLGIsYyxkKXtsZXQgZT0iQXNzZXJ0aW9uIGZhaWxlZCIsZjtjPyhlKz0iOiAiK2MsZj1kKTphJiYoZSs9IjogIithLGY9Yik7YT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiIitlLGZ8fFtdKTttb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8oYSl9Z29vZy5hc3NlcnRzLnNldEVycm9ySGFuZGxlcj1mdW5jdGlvbihhKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl89YSl9Owpnb29nLmFzc2VydHMuYXNzZXJ0PWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiFhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiIixudWxsLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Z29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cz1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZudWxsPT1hJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgdG8gZXhpc3Q6ICVzLiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5mYWlsPWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2Vycm9ySGFuZGxlcl8obmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfQXNzZXJ0aW9uRXJyb3IoIkZhaWx1cmUiKyhhPyI6ICIrYToiIiksQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSl9O2dvb2cuYXNzZXJ0cy5hc3NlcnROdW1iZXI9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmIm51bWJlciIhPT10eXBlb2YgYSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG51bWJlciBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0U3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJzdHJpbmciIT09dHlwZW9mIGEmJm1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBzdHJpbmcgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTtnb29nLmFzc2VydHMuYXNzZXJ0RnVuY3Rpb249ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyYmImZ1bmN0aW9uIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgZnVuY3Rpb24gYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydE9iamVjdD1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhZ29vZy5pc09iamVjdChhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIG9iamVjdCBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9O2dvb2cuYXNzZXJ0cy5hc3NlcnRBcnJheT1mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiYhQXJyYXkuaXNBcnJheShhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIGFycmF5IGJ1dCBnb3QgJXM6ICVzLiIsW2dvb2cudHlwZU9mKGEpLGFdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07Cmdvb2cuYXNzZXJ0cy5hc3NlcnRCb29sZWFuPWZ1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMmJiJib29sZWFuIiE9PXR5cGVvZiBhJiZtb2R1bGUkY29udGVudHMkZ29vZyRhc3NlcnRzX2RvQXNzZXJ0RmFpbHVyZSgiRXhwZWN0ZWQgYm9vbGVhbiBidXQgZ290ICVzOiAlcy4iLFtnb29nLnR5cGVPZihhKSxhXSxiLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSk7cmV0dXJuIGF9Owpnb29nLmFzc2VydHMuYXNzZXJ0RWxlbWVudD1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Z29vZy5pc09iamVjdChhKSYmYS5ub2RlVHlwZT09Z29vZy5kb20uTm9kZVR5cGUuRUxFTUVOVHx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkIEVsZW1lbnQgYnV0IGdvdCAlczogJXMuIixbZ29vZy50eXBlT2YoYSksYV0sYixBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMikpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEluc3RhbmNlb2Y9ZnVuY3Rpb24oYSxiLGMsZCl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8YSBpbnN0YW5jZW9mIGJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZG9Bc3NlcnRGYWlsdXJlKCJFeHBlY3RlZCBpbnN0YW5jZW9mICVzIGJ1dCBnb3QgJXMuIixbbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19nZXRUeXBlKGIpLG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKV0sYyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMykpO3JldHVybiBhfTsKZ29vZy5hc3NlcnRzLmFzc2VydEZpbml0ZT1mdW5jdGlvbihhLGIsYyl7IWdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUU3x8Im51bWJlciI9PXR5cGVvZiBhJiZpc0Zpbml0ZShhKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19kb0Fzc2VydEZhaWx1cmUoIkV4cGVjdGVkICVzIHRvIGJlIGEgZmluaXRlIG51bWJlciBidXQgaXQgaXMgbm90LiIsW2FdLGIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpKTtyZXR1cm4gYX07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFzc2VydHNfZ2V0VHlwZShhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIEZ1bmN0aW9uP2EuZGlzcGxheU5hbWV8fGEubmFtZXx8InVua25vd24gdHlwZSBuYW1lIjphIGluc3RhbmNlb2YgT2JqZWN0P2EuY29uc3RydWN0b3IuZGlzcGxheU5hbWV8fGEuY29uc3RydWN0b3IubmFtZXx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpOm51bGw9PT1hPyJudWxsIjp0eXBlb2YgYX07Z29vZy5hcnJheT17fTtnb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTPWdvb2cuVFJVU1RFRF9TSVRFO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TPTIwMTI8Z29vZy5GRUFUVVJFU0VUX1lFQVI7Z29vZy5hcnJheS5BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OUztmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGEpe3JldHVybiBhW2EubGVuZ3RoLTFdfWdvb2cuYXJyYXkucGVlaz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrO2dvb2cuYXJyYXkubGFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbmRleE9mPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXtjPW51bGw9PWM/MDowPmM/TWF0aC5tYXgoMCxhLmxlbmd0aCtjKTpjO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuInN0cmluZyIhPT10eXBlb2YgYnx8MSE9Yi5sZW5ndGg/LTE6YS5pbmRleE9mKGIsYyk7Zm9yKDtjPGEubGVuZ3RoO2MrKylpZihjIGluIGEmJmFbY109PT1iKXJldHVybiBjO3JldHVybi0xfTtnb29nLmFycmF5LmluZGV4T2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbGFzdEluZGV4T2Y9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YpP2Z1bmN0aW9uKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYSxiLG51bGw9PWM/YS5sZW5ndGgtMTpjKX06ZnVuY3Rpb24oYSxiLGMpe2M9bnVsbD09Yz9hLmxlbmd0aC0xOmM7MD5jJiYoYz1NYXRoLm1heCgwLGEubGVuZ3RoK2MpKTtpZigic3RyaW5nIj09PXR5cGVvZiBhKXJldHVybiJzdHJpbmciIT09dHlwZW9mIGJ8fDEhPWIubGVuZ3RoPy0xOmEubGFzdEluZGV4T2YoYixjKTtmb3IoOzA8PWM7Yy0tKWlmKGMgaW4gYSYmYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9Owpnb29nLmFycmF5Lmxhc3RJbmRleE9mPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2xhc3RJbmRleE9mO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2g9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuZm9yRWFjaCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpfTtnb29nLmFycmF5LmZvckVhY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsYixjKXt2YXIgZD1hLmxlbmd0aDtjb25zdCBlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IoLS1kOzA8PWQ7LS1kKWQgaW4gZSYmYi5jYWxsKGMsZVtkXSxkLGEpfWdvb2cuYXJyYXkuZm9yRWFjaFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2hSaWdodDsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmlsdGVyPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmZpbHRlcik/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPVtdO2xldCBmPTA7Y29uc3QgZz0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBoPTA7aDxkO2grKylpZihoIGluIGcpe2NvbnN0IGs9Z1toXTtiLmNhbGwoYyxrLGgsYSkmJihlW2YrK109ayl9cmV0dXJuIGV9O2dvb2cuYXJyYXkuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbHRlcjsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbWFwPWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLm1hcCk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYSxiLGMpfTpmdW5jdGlvbihhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPUFycmF5KGQpLGY9InN0cmluZyI9PT10eXBlb2YgYT9hLnNwbGl0KCIiKTphO2ZvcihsZXQgZz0wO2c8ZDtnKyspZyBpbiBmJiYoZVtnXT1iLmNhbGwoYyxmW2ddLGcsYSkpO3JldHVybiBlfTtnb29nLmFycmF5Lm1hcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9tYXA7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZT1nb29nLk5BVElWRV9BUlJBWV9QUk9UT1RZUEVTJiYobW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfQVNTVU1FX05BVElWRV9GVU5DVElPTlN8fEFycmF5LnByb3RvdHlwZS5yZWR1Y2UpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2QmJihiPWdvb2cuYmluZChiLGQpKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMsZCl7bGV0IGU9Yzttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoKGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlZHVjZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQpP2Z1bmN0aW9uKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9Yik7ZCYmKGI9Z29vZy5iaW5kKGIsZCkpO3JldHVybiBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHQuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjLGQpe2xldCBlPWM7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaFJpZ2h0KGEsZnVuY3Rpb24oZixnKXtlPWIuY2FsbChkLGUsZixnLGEpfSk7cmV0dXJuIGV9O2dvb2cuYXJyYXkucmVkdWNlUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVkdWNlUmlnaHQ7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU9Z29vZy5OQVRJVkVfQVJSQVlfUFJPVE9UWVBFUyYmKG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X0FTU1VNRV9OQVRJVkVfRlVOQ1RJT05TfHxBcnJheS5wcm90b3R5cGUuc29tZSk/ZnVuY3Rpb24oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJmIuY2FsbChjLGVbZl0sZixhKSlyZXR1cm4hMDtyZXR1cm4hMX07Z29vZy5hcnJheS5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2V2ZXJ5PWdvb2cuTkFUSVZFX0FSUkFZX1BST1RPVFlQRVMmJihtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9BU1NVTUVfTkFUSVZFX0ZVTkNUSU9OU3x8QXJyYXkucHJvdG90eXBlLmV2ZXJ5KT9mdW5jdGlvbihhLGIsYyl7Z29vZy5hc3NlcnRzLmFzc2VydChudWxsIT1hLmxlbmd0aCk7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5ldmVyeS5jYWxsKGEsYixjKX06ZnVuY3Rpb24oYSxiLGMpe2NvbnN0IGQ9YS5sZW5ndGgsZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKGxldCBmPTA7ZjxkO2YrKylpZihmIGluIGUmJiFiLmNhbGwoYyxlW2ZdLGYsYSkpcmV0dXJuITE7cmV0dXJuITB9O2dvb2cuYXJyYXkuZXZlcnk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXZlcnk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvdW50KGEsYixjKXtsZXQgZD0wO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYsZyl7Yi5jYWxsKGMsZSxmLGcpJiYrK2R9LGMpO3JldHVybiBkfWdvb2cuYXJyYXkuY291bnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY291bnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZChhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleChhLGIsYyl7Y29uc3QgZD1hLmxlbmd0aCxlPSJzdHJpbmciPT09dHlwZW9mIGE/YS5zcGxpdCgiIik6YTtmb3IobGV0IGY9MDtmPGQ7ZisrKWlmKGYgaW4gZSYmYi5jYWxsKGMsZVtmXSxmLGEpKXJldHVybiBmO3JldHVybi0xfWdvb2cuYXJyYXkuZmluZEluZGV4PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kUmlnaHQoYSxiLGMpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZEluZGV4UmlnaHQoYSxiLGMpO3JldHVybiAwPmI/bnVsbDoic3RyaW5nIj09PXR5cGVvZiBhP2EuY2hhckF0KGIpOmFbYl19Z29vZy5hcnJheS5maW5kUmlnaHQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZmluZFJpZ2h0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXhSaWdodChhLGIsYyl7dmFyIGQ9YS5sZW5ndGg7Y29uc3QgZT0ic3RyaW5nIj09PXR5cGVvZiBhP2Euc3BsaXQoIiIpOmE7Zm9yKC0tZDswPD1kO2QtLSlpZihkIGluIGUmJmIuY2FsbChjLGVbZF0sZCxhKSlyZXR1cm4gZDtyZXR1cm4tMX1nb29nLmFycmF5LmZpbmRJbmRleFJpZ2h0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZpbmRJbmRleFJpZ2h0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zKGEsYil7cmV0dXJuIDA8PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxiKX1nb29nLmFycmF5LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbnRhaW5zO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzRW1wdHkoYSl7cmV0dXJuIDA9PWEubGVuZ3RofWdvb2cuYXJyYXkuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pc0VtcHR5OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jbGVhcihhKXtpZighQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGI9YS5sZW5ndGgtMTswPD1iO2ItLSlkZWxldGUgYVtiXTthLmxlbmd0aD0wfWdvb2cuYXJyYXkuY2xlYXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY2xlYXI7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0KGEsYil7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29udGFpbnMoYSxiKXx8YS5wdXNoKGIpfWdvb2cuYXJyYXkuaW5zZXJ0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRBdChhLGIsYyl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYywwLGIpfWdvb2cuYXJyYXkuaW5zZXJ0QXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQoYSxiLGMpe2dvb2cucGFydGlhbChtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2UsYSxjLDApLmFwcGx5KG51bGwsYil9Z29vZy5hcnJheS5pbnNlcnRBcnJheUF0PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEFycmF5QXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5zZXJ0QmVmb3JlKGEsYixjKXtsZXQgZDsyPT1hcmd1bWVudHMubGVuZ3RofHwwPihkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luZGV4T2YoYSxjKSk/YS5wdXNoKGIpOm1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYixkKX1nb29nLmFycmF5Lmluc2VydEJlZm9yZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9pbnNlcnRCZWZvcmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZShhLGIpe2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW5kZXhPZihhLGIpO2xldCBjOyhjPTA8PWIpJiZtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpO3JldHVybiBjfWdvb2cuYXJyYXkucmVtb3ZlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVMYXN0KGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9sYXN0SW5kZXhPZihhLGIpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUxhc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlTGFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMT09QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYiwxKS5sZW5ndGh9Z29vZy5hcnJheS5yZW1vdmVBdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVJZihhLGIsYyl7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9maW5kSW5kZXgoYSxiLGMpO3JldHVybiAwPD1iPyhtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBdChhLGIpLCEwKTohMX1nb29nLmFycmF5LnJlbW92ZUlmPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JlbW92ZUlmOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZihhLGIsYyl7bGV0IGQ9MDttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mb3JFYWNoUmlnaHQoYSxmdW5jdGlvbihlLGYpe2IuY2FsbChjLGUsZixhKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxmKSYmZCsrfSk7cmV0dXJuIGR9Z29vZy5hcnJheS5yZW1vdmVBbGxJZj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVBbGxJZjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQoYSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sYXJndW1lbnRzKX1nb29nLmFycmF5LmNvbmNhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb25jYXQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbihhKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhcmd1bWVudHMpfQpnb29nLmFycmF5LmpvaW49bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfam9pbjtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5KGEpe2NvbnN0IGI9YS5sZW5ndGg7aWYoMDxiKXtjb25zdCBjPUFycmF5KGIpO2ZvcihsZXQgZD0wO2Q8YjtkKyspY1tkXT1hW2RdO3JldHVybiBjfXJldHVybltdfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2Nsb25lPWdvb2cuYXJyYXkudG9BcnJheT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b0FycmF5O2dvb2cuYXJyYXkuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9BcnJheTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZXh0ZW5kKGEsYil7Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107aWYoZ29vZy5pc0FycmF5TGlrZShkKSl7Y29uc3QgZT1hLmxlbmd0aHx8MCxmPWQubGVuZ3RofHwwO2EubGVuZ3RoPWUrZjtmb3IobGV0IGc9MDtnPGY7ZysrKWFbZStnXT1kW2ddfWVsc2UgYS5wdXNoKGQpfX1nb29nLmFycmF5LmV4dGVuZD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9leHRlbmQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc3BsaWNlKGEsYixjLGQpe2dvb2cuYXNzZXJ0cy5hc3NlcnQobnVsbCE9YS5sZW5ndGgpO3JldHVybiBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoYXJndW1lbnRzLDEpKX1nb29nLmFycmF5LnNwbGljZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zcGxpY2U7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlKGEsYixjKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTtyZXR1cm4gMj49YXJndW1lbnRzLmxlbmd0aD9BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLGIpOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsYixjKX1nb29nLmFycmF5LnNsaWNlPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NsaWNlOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzKGEsYixjKXtiPWJ8fGE7dmFyIGQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGdvb2cuaXNPYmplY3QoZyk/Im8iK2dvb2cuZ2V0VWlkKGcpOih0eXBlb2YgZykuY2hhckF0KDApK2d9O2M9Y3x8ZDtsZXQgZT1kPTA7Y29uc3QgZj17fTtmb3IoO2U8YS5sZW5ndGg7KXtjb25zdCBnPWFbZSsrXSxoPWMoZyk7T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGYsaCl8fChmW2hdPSEwLGJbZCsrXT1nKX1iLmxlbmd0aD1kfWdvb2cuYXJyYXkucmVtb3ZlRHVwbGljYXRlcz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZW1vdmVEdXBsaWNhdGVzOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2hfKGEsY3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUsITEsYil9Z29vZy5hcnJheS5iaW5hcnlTZWFyY2g9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5U2VhcmNoO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlbGVjdChhLGIsYyl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLCEwLHZvaWQgMCxjKX1nb29nLmFycmF5LmJpbmFyeVNlbGVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWxlY3Q7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaF8oYSxiLGMsZCxlKXtsZXQgZj0wLGc9YS5sZW5ndGgsaDtmb3IoO2Y8Zzspe2NvbnN0IGs9ZisoZy1mPj4+MSk7bGV0IGw7bD1jP2IuY2FsbChlLGFba10sayxhKTpiKGQsYVtrXSk7MDxsP2Y9aysxOihnPWssaD0hbCl9cmV0dXJuIGg/ZjotZi0xfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYSxiKXthLnNvcnQoYnx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUpfWdvb2cuYXJyYXkuc29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0KGEsYil7Y29uc3QgYz1BcnJheShhLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspY1tlXT17aW5kZXg6ZSx2YWx1ZTphW2VdfTtjb25zdCBkPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnQoYyxmdW5jdGlvbihlLGYpe3JldHVybiBkKGUudmFsdWUsZi52YWx1ZSl8fGUuaW5kZXgtZi5pbmRleH0pO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspYVtiXT1jW2JdLnZhbHVlfWdvb2cuYXJyYXkuc3RhYmxlU29ydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zdGFibGVTb3J0OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxiLGMpe2NvbnN0IGQ9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc29ydChhLGZ1bmN0aW9uKGUsZil7cmV0dXJuIGQoYihlKSxiKGYpKX0pfWdvb2cuYXJyYXkuc29ydEJ5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRCeUtleTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0T2JqZWN0c0J5S2V5KGEsYixjKXttb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9zb3J0QnlLZXkoYSxmdW5jdGlvbihkKXtyZXR1cm4gZFtiXX0sYyl9Z29vZy5hcnJheS5zb3J0T2JqZWN0c0J5S2V5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3NvcnRPYmplY3RzQnlLZXk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkKGEsYixjKXtiPWJ8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlO2ZvcihsZXQgZD0xO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWIoYVtkLTFdLGFbZF0pO2lmKDA8ZXx8MD09ZSYmYylyZXR1cm4hMX1yZXR1cm4hMH1nb29nLmFycmF5LmlzU29ydGVkPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2lzU29ydGVkO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2VxdWFscyhhLGIsYyl7aWYoIWdvb2cuaXNBcnJheUxpa2UoYSl8fCFnb29nLmlzQXJyYXlMaWtlKGIpfHxhLmxlbmd0aCE9Yi5sZW5ndGgpcmV0dXJuITE7Y29uc3QgZD1hLmxlbmd0aDtjPWN8fG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7Zm9yKGxldCBlPTA7ZTxkO2UrKylpZighYyhhW2VdLGJbZV0pKXJldHVybiExO3JldHVybiEwfQpnb29nLmFycmF5LmVxdWFscz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9lcXVhbHM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTMoYSxiLGMpe2M9Y3x8bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmU7Y29uc3QgZD1NYXRoLm1pbihhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBlPTA7ZTxkO2UrKyl7Y29uc3QgZj1jKGFbZV0sYltlXSk7aWYoMCE9ZilyZXR1cm4gZn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYS5sZW5ndGgsYi5sZW5ndGgpfWdvb2cuYXJyYXkuY29tcGFyZTM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29tcGFyZTM7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZGVmYXVsdENvbXBhcmUoYSxiKXtyZXR1cm4gYT5iPzE6YTxiPy0xOjB9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9kZWZhdWx0Q29tcGFyZTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlKGEsYil7cmV0dXJuLW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlKGEsYil9Z29vZy5hcnJheS5pbnZlcnNlRGVmYXVsdENvbXBhcmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfaW52ZXJzZURlZmF1bHRDb21wYXJlO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHkoYSxiKXtyZXR1cm4gYT09PWJ9Z29vZy5hcnJheS5kZWZhdWx0Q29tcGFyZUVxdWFsaXR5PW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2RlZmF1bHRDb21wYXJlRXF1YWxpdHk7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeUluc2VydChhLGIsYyl7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlTZWFyY2goYSxiLGMpO3JldHVybiAwPmM/KG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2luc2VydEF0KGEsYiwtKGMrMSkpLCEwKTohMX1nb29nLmFycmF5LmJpbmFyeUluc2VydD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlJbnNlcnQ7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYmluYXJ5UmVtb3ZlKGEsYixjKXtiPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2JpbmFyeVNlYXJjaChhLGIsYyk7cmV0dXJuIDA8PWI/bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVtb3ZlQXQoYSxiKTohMX1nb29nLmFycmF5LmJpbmFyeVJlbW92ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9iaW5hcnlSZW1vdmU7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldChhLGIsYyl7Y29uc3QgZD17fTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7Y29uc3QgZj1hW2VdLGc9Yi5jYWxsKGMsZixlLGEpO3ZvaWQgMCE9PWcmJihkW2ddfHwoZFtnXT1bXSkpLnB1c2goZil9cmV0dXJuIGR9Z29vZy5hcnJheS5idWNrZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0O2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2J1Y2tldFRvTWFwKGEsYil7Y29uc3QgYz1uZXcgTWFwO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWFbZF0sZj1iKGUsZCxhKTtpZih2b2lkIDAhPT1mKXtsZXQgZz1jLmdldChmKTtnfHwoZz1bXSxjLnNldChmLGcpKTtnLnB1c2goZSl9fXJldHVybiBjfWdvb2cuYXJyYXkuYnVja2V0VG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfYnVja2V0VG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3RvT2JqZWN0KGEsYixjKXtjb25zdCBkPXt9O21vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZvckVhY2goYSxmdW5jdGlvbihlLGYpe2RbYi5jYWxsKGMsZSxmLGEpXT1lfSk7cmV0dXJuIGR9Z29vZy5hcnJheS50b09iamVjdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b09iamVjdDtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV90b01hcChhLGIpe2NvbnN0IGM9bmV3IE1hcDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdO2Muc2V0KGIoZSxkLGEpLGUpfXJldHVybiBjfWdvb2cuYXJyYXkudG9NYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfdG9NYXA7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3JhbmdlKGEsYixjKXtjb25zdCBkPVtdO2xldCBlPTAsZj1hO2M9Y3x8MTt2b2lkIDAhPT1iJiYoZT1hLGY9Yik7aWYoMD5jKihmLWUpKXJldHVybltdO2lmKDA8Yylmb3IoYT1lO2E8ZjthKz1jKWQucHVzaChhKTtlbHNlIGZvcihhPWU7YT5mO2ErPWMpZC5wdXNoKGEpO3JldHVybiBkfWdvb2cuYXJyYXkucmFuZ2U9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmFuZ2U7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfcmVwZWF0KGEsYil7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbZF09YTtyZXR1cm4gY31nb29nLmFycmF5LnJlcGVhdD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yZXBlYXQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2ZsYXR0ZW4oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGQ9MDtkPGFyZ3VtZW50cy5sZW5ndGg7ZCsrKXtjb25zdCBlPWFyZ3VtZW50c1tkXTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7Zis9ODE5Mil7dmFyIGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2xpY2UoZSxmLGYrODE5Mik7Yz1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuLmFwcGx5KG51bGwsYyk7Zm9yKGxldCBnPTA7ZzxjLmxlbmd0aDtnKyspYi5wdXNoKGNbZ10pfWVsc2UgYi5wdXNoKGUpfXJldHVybiBifWdvb2cuYXJyYXkuZmxhdHRlbj1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9mbGF0dGVuOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGUoYSxiKXtnb29nLmFzc2VydHMuYXNzZXJ0KG51bGwhPWEubGVuZ3RoKTthLmxlbmd0aCYmKGIlPWEubGVuZ3RoLDA8Yj9BcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShhLGEuc3BsaWNlKC1iLGIpKTowPmImJkFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGEsYS5zcGxpY2UoMCwtYikpKTtyZXR1cm4gYX1nb29nLmFycmF5LnJvdGF0ZT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9yb3RhdGU7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW0oYSxiLGMpe2dvb2cuYXNzZXJ0cy5hc3NlcnQoMDw9YiYmYjxhLmxlbmd0aCk7Z29vZy5hc3NlcnRzLmFzc2VydCgwPD1jJiZjPGEubGVuZ3RoKTtiPUFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChhLGIsMSk7QXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGEsYywwLGJbMF0pfWdvb2cuYXJyYXkubW92ZUl0ZW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfbW92ZUl0ZW07CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X3ppcChhKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bXTtjb25zdCBiPVtdO2xldCBjPWFyZ3VtZW50c1swXS5sZW5ndGg7Zm9yKHZhciBkPTE7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKylhcmd1bWVudHNbZF0ubGVuZ3RoPGMmJihjPWFyZ3VtZW50c1tkXS5sZW5ndGgpO2ZvcihkPTA7ZDxjO2QrKyl7Y29uc3QgZT1bXTtmb3IobGV0IGY9MDtmPGFyZ3VtZW50cy5sZW5ndGg7ZisrKWUucHVzaChhcmd1bWVudHNbZl1bZF0pO2IucHVzaChlKX1yZXR1cm4gYn1nb29nLmFycmF5LnppcD1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV96aXA7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZShhLGIpe2I9Ynx8TWF0aC5yYW5kb207Zm9yKGxldCBjPWEubGVuZ3RoLTE7MDxjO2MtLSl7Y29uc3QgZD1NYXRoLmZsb29yKGIoKSooYysxKSksZT1hW2NdO2FbY109YVtkXTthW2RdPWV9fQpnb29nLmFycmF5LnNodWZmbGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfc2h1ZmZsZTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9jb3B5QnlJbmRleChhLGIpe2NvbnN0IGM9W107bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfZm9yRWFjaChiLGZ1bmN0aW9uKGQpe2MucHVzaChhW2RdKX0pO3JldHVybiBjfWdvb2cuYXJyYXkuY29weUJ5SW5kZXg9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29weUJ5SW5kZXg7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0TWFwKGEsYixjKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0LmFwcGx5KFtdLG1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X21hcChhLGIsYykpfWdvb2cuYXJyYXkuY29uY2F0TWFwPW1vZHVsZSRjb250ZW50cyRnb29nJGFycmF5X2NvbmNhdE1hcDtnb29nLmRvbS5hc3NlcnRzPXt9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbj1mdW5jdGlvbihhKXtpZihnb29nLmFzc2VydHMuRU5BQkxFX0FTU0VSVFMpe3ZhciBiPWdvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93XyhhKTtiJiYoIWF8fCEoYSBpbnN0YW5jZW9mIGIuTG9jYXRpb24pJiZhIGluc3RhbmNlb2YgYi5FbGVtZW50KSYmZ29vZy5hc3NlcnRzLmZhaWwoIkFyZ3VtZW50IGlzIG5vdCBhIExvY2F0aW9uIChvciBhIG5vbi1FbGVtZW50IG1vY2spOyBnb3Q6ICVzIixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpfXJldHVybiBhfTsKZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXz1mdW5jdGlvbihhLGIpe2lmKGdvb2cuYXNzZXJ0cy5FTkFCTEVfQVNTRVJUUyl7dmFyIGM9Z29vZy5kb20uYXNzZXJ0cy5nZXRXaW5kb3dfKGEpO2MmJiJ1bmRlZmluZWQiIT10eXBlb2YgY1tiXSYmKGEmJihhIGluc3RhbmNlb2YgY1tiXXx8IShhIGluc3RhbmNlb2YgYy5Mb2NhdGlvbnx8YSBpbnN0YW5jZW9mIGMuRWxlbWVudCkpfHxnb29nLmFzc2VydHMuZmFpbCgiQXJndW1lbnQgaXMgbm90IGEgJXMgKG9yIGEgbm9uLUVsZW1lbnQsIG5vbi1Mb2NhdGlvbiBtb2NrKTsgZ290OiAlcyIsYixnb29nLmRvbS5hc3NlcnRzLmRlYnVnU3RyaW5nRm9yVHlwZV8oYSkpKX1yZXR1cm4gYX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBbmNob3JFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxBbmNob3JFbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEJ1dHRvbkVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEJ1dHRvbkVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxMaW5rRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MTGlua0VsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxJbWFnZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEltYWdlRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEF1ZGlvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MQXVkaW9FbGVtZW50Iil9Owpnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MVmlkZW9FbGVtZW50Iil9O2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxJbnB1dEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxUZXh0QXJlYUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFRleHRBcmVhRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTENhbnZhc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTENhbnZhc0VsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MRW1iZWRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzRWxlbWVudFR5cGVfKGEsIkhUTUxFbWJlZEVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGb3JtRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MRm9ybUVsZW1lbnQiKX07Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTEZyYW1lRWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTElGcmFtZUVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0VsZW1lbnRUeXBlXyhhLCJIVE1MT2JqZWN0RWxlbWVudCIpfTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFNjcmlwdEVsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNFbGVtZW50VHlwZV8oYSwiSFRNTFNjcmlwdEVsZW1lbnQiKX07Cmdvb2cuZG9tLmFzc2VydHMuZGVidWdTdHJpbmdGb3JUeXBlXz1mdW5jdGlvbihhKXtpZihnb29nLmlzT2JqZWN0KGEpKXRyeXtyZXR1cm4gYS5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZXx8YS5jb25zdHJ1Y3Rvci5uYW1lfHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9Y2F0Y2goYil7cmV0dXJuIjxvYmplY3QgY291bGQgbm90IGJlIHN0cmluZ2lmaWVkPiJ9ZWxzZSByZXR1cm4gdm9pZCAwPT09YT8idW5kZWZpbmVkIjpudWxsPT09YT8ibnVsbCI6dHlwZW9mIGF9O2dvb2cuZG9tLmFzc2VydHMuZ2V0V2luZG93Xz1mdW5jdGlvbihhKXt0cnl7dmFyIGI9YSYmYS5vd25lckRvY3VtZW50LGM9YiYmKGIuZGVmYXVsdFZpZXd8fGIucGFyZW50V2luZG93KTtjPWN8fGdvb2cuZ2xvYmFsO2lmKGMuRWxlbWVudCYmYy5Mb2NhdGlvbilyZXR1cm4gY31jYXRjaChkKXt9cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zPXt9O2dvb2cuZnVuY3Rpb25zLmNvbnN0YW50PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhfX07Z29vZy5mdW5jdGlvbnMuRkFMU0U9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Z29vZy5mdW5jdGlvbnMuVFJVRT1mdW5jdGlvbigpe3JldHVybiEwfTtnb29nLmZ1bmN0aW9ucy5OVUxMPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2dvb2cuZnVuY3Rpb25zLlVOREVGSU5FRD1mdW5jdGlvbigpe307Z29vZy5mdW5jdGlvbnMuRU1QVFk9Z29vZy5mdW5jdGlvbnMuVU5ERUZJTkVEO2dvb2cuZnVuY3Rpb25zLmlkZW50aXR5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGF9O2dvb2cuZnVuY3Rpb25zLmVycm9yPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3Rocm93IEVycm9yKGEpO319O2dvb2cuZnVuY3Rpb25zLmZhaWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgYTt9fTsKZ29vZy5mdW5jdGlvbnMubG9jaz1mdW5jdGlvbihhLGIpe2I9Ynx8MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwLGIpKX19O2dvb2cuZnVuY3Rpb25zLm50aD1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzW2FdfX07Z29vZy5mdW5jdGlvbnMucGFydGlhbFJpZ2h0PWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IGQ9dGhpcztkPT09Z29vZy5nbG9iYWwmJihkPXZvaWQgMCk7Y29uc3QgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2UucHVzaC5hcHBseShlLGMpO3JldHVybiBhLmFwcGx5KGQsZSl9fTsKZ29vZy5mdW5jdGlvbnMud2l0aFJldHVyblZhbHVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZnVuY3Rpb25zLnNlcXVlbmNlKGEsZ29vZy5mdW5jdGlvbnMuY29uc3RhbnQoYikpfTtnb29nLmZ1bmN0aW9ucy5lcXVhbFRvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiP2E9PWM6YT09PWN9fTtnb29nLmZ1bmN0aW9ucy5jb21wb3NlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hcmd1bWVudHMsZD1jLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZTtkJiYoZT1jW2QtMV0uYXBwbHkodGhpcyxhcmd1bWVudHMpKTtmb3IobGV0IGY9ZC0yOzA8PWY7Zi0tKWU9Y1tmXS5jYWxsKHRoaXMsZSk7cmV0dXJuIGV9fTsKZ29vZy5mdW5jdGlvbnMuc2VxdWVuY2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtsZXQgZDtmb3IobGV0IGU9MDtlPGM7ZSsrKWQ9YltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGR9fTtnb29nLmZ1bmN0aW9ucy5hbmQ9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hcmd1bWVudHMsYz1iLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oKXtmb3IobGV0IGQ9MDtkPGM7ZCsrKWlmKCFiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMTtyZXR1cm4hMH19O2dvb2cuZnVuY3Rpb25zLm9yPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YXJndW1lbnRzLGM9Yi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKGxldCBkPTA7ZDxjO2QrKylpZihiW2RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm4hMDtyZXR1cm4hMX19Owpnb29nLmZ1bmN0aW9ucy5ub3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIWEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07Z29vZy5mdW5jdGlvbnMuY3JlYXRlPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZnVuY3Rpb24oKXt9O2MucHJvdG90eXBlPWEucHJvdG90eXBlO2M9bmV3IGM7YS5hcHBseShjLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7cmV0dXJuIGN9O2dvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRT0hMDtnb29nLmZ1bmN0aW9ucy5jYWNoZVJldHVyblZhbHVlPWZ1bmN0aW9uKGEpe2xldCBiPSExLGM7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWdvb2cuZnVuY3Rpb25zLkNBQ0hFX1JFVFVSTl9WQUxVRSlyZXR1cm4gYSgpO2J8fChjPWEoKSxiPSEwKTtyZXR1cm4gY319O2dvb2cuZnVuY3Rpb25zLm9uY2U9ZnVuY3Rpb24oYSl7bGV0IGI9YTtyZXR1cm4gZnVuY3Rpb24oKXtpZihiKXtjb25zdCBjPWI7Yj1udWxsO2MoKX19fTsKZ29vZy5mdW5jdGlvbnMuZGVib3VuY2U9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTA7cmV0dXJuIGZ1bmN0aW9uKGUpe2dvb2cuZ2xvYmFsLmNsZWFyVGltZW91dChkKTtjb25zdCBmPWFyZ3VtZW50cztkPWdvb2cuZ2xvYmFsLnNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmFwcGx5KGMsZil9LGIpfX07Z29vZy5mdW5jdGlvbnMudGhyb3R0bGU9ZnVuY3Rpb24oYSxiLGMpe2xldCBkPTAsZT0hMSxmPVtdO2NvbnN0IGc9ZnVuY3Rpb24oKXtkPTA7ZSYmKGU9ITEsaCgpKX0saD1mdW5jdGlvbigpe2Q9Z29vZy5nbG9iYWwuc2V0VGltZW91dChnLGIpO2xldCBrPWY7Zj1bXTthLmFwcGx5KGMsayl9O3JldHVybiBmdW5jdGlvbihrKXtmPWFyZ3VtZW50cztkP2U9ITA6aCgpfX07Cmdvb2cuZnVuY3Rpb25zLnJhdGVMaW1pdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9MDtjb25zdCBlPWZ1bmN0aW9uKCl7ZD0wfTtyZXR1cm4gZnVuY3Rpb24oZil7ZHx8KGQ9Z29vZy5nbG9iYWwuc2V0VGltZW91dChlLGIpLGEuYXBwbHkoYyxhcmd1bWVudHMpKX19O2dvb2cuZnVuY3Rpb25zLmlzRnVuY3Rpb249YT0+ImZ1bmN0aW9uIj09PXR5cGVvZiBhO2dvb2cuc3RyaW5nPXt9O2dvb2cuc3RyaW5nLlR5cGVkU3RyaW5nPWZ1bmN0aW9uKCl7fTtnb29nLnN0cmluZy5Db25zdD1mdW5jdGlvbihhLGIpe3RoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXz1hPT09Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8mJmJ8fCIiO3RoaXMuU1RSSU5HX0NPTlNUX1RZUEVfTUFSS0VSX19HT09HX1NUUklOR19TRUNVUklUWV9QUklWQVRFXz1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl99O2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwO2dvb2cuc3RyaW5nLkNvbnN0LnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlX307Cmdvb2cuREVCVUcmJihnb29nLnN0cmluZy5Db25zdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQ29uc3R7Iit0aGlzLnN0cmluZ0NvbnN0VmFsdWVXaXRoU2VjdXJpdHlDb250cmFjdF9fZ29vZ1N0cmluZ1NlY3VyaXR5UHJpdmF0ZV8rIn0ifSk7Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuc3RyaW5nLkNvbnN0JiZhLlNUUklOR19DT05TVF9UWVBFX01BUktFUl9fR09PR19TVFJJTkdfU0VDVVJJVFlfUFJJVkFURV89PT1nb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl8pcmV0dXJuIGEuc3RyaW5nQ29uc3RWYWx1ZVdpdGhTZWN1cml0eUNvbnRyYWN0X19nb29nU3RyaW5nU2VjdXJpdHlQcml2YXRlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgQ29uc3QsIGdvdCAnIithKyInIik7cmV0dXJuInR5cGVfZXJyb3I6Q29uc3QifTsKZ29vZy5zdHJpbmcuQ29uc3QuZnJvbT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IGdvb2cuc3RyaW5nLkNvbnN0KGdvb2cuc3RyaW5nLkNvbnN0LkdPT0dfU1RSSU5HX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfLGEpfTtnb29nLnN0cmluZy5Db25zdC5UWVBFX01BUktFUl89e307Z29vZy5zdHJpbmcuQ29uc3QuR09PR19TVFJJTkdfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Z29vZy5zdHJpbmcuQ29uc3QuRU1QVFk9Z29vZy5zdHJpbmcuQ29uc3QuZnJvbSgiIik7Z29vZy5odG1sPXt9O2dvb2cuaHRtbC50cnVzdGVkdHlwZXM9e307Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRT1nb29nLlRSVVNURURfVFlQRVNfUE9MSUNZX05BTUU/Z29vZy5UUlVTVEVEX1RZUEVTX1BPTElDWV9OQU1FKyIjaHRtbCI6IiI7Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oKXtpZighZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSlyZXR1cm4gbnVsbDt2b2lkIDA9PT1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV8mJihnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV89Z29vZy5jcmVhdGVUcnVzdGVkVHlwZXNQb2xpY3koZ29vZy5odG1sLnRydXN0ZWR0eXBlcy5QT0xJQ1lfTkFNRSkpO3JldHVybiBnb29nLmh0bWwudHJ1c3RlZHR5cGVzLmNhY2hlZFBvbGljeV99O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFPXt9OwpjbGFzcyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV89Yj09PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVNjcmlwdFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO3JldHVybiAwPT09YS5sZW5ndGg/bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBmcm9tSnNvbihhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnN0cmluZ2lmeV8oYSkpfWdldFR5cGVkU3RyaW5nVmFsdWUoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXN0YXRpYyB1bndyYXAoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYSkudG9TdHJpbmcoKX1zdGF0aWMgdW53cmFwVHJ1c3RlZFNjcmlwdChhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdClyZXR1cm4gYS5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU2NyaXB0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTY3JpcHQsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVNjcmlwdCJ9c3RhdGljIHN0cmluZ2lmeV8oYSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpLnJlcGxhY2UoLzwvZywiXFx4M2MiKX1zdGF0aWMgY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVTY3JpcHQoYSk6CmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdChhLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX19bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuRU1QVFk9ZnVuY3Rpb24oKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCIiKX0oKTtnb29nLmh0bWwuU2FmZVNjcmlwdD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTY3JpcHRfU2FmZVNjcmlwdDtnb29nLmZzPXt9O2dvb2cuZnMudXJsPXt9O2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5mcy51cmwuZ2V0VXJsT2JqZWN0XygpLmNyZWF0ZU9iamVjdFVSTChhKX07Z29vZy5mcy51cmwucmV2b2tlT2JqZWN0VXJsPWZ1bmN0aW9uKGEpe2dvb2cuZnMudXJsLmdldFVybE9iamVjdF8oKS5yZXZva2VPYmplY3RVUkwoYSl9O2dvb2cuZnMudXJsLlVybE9iamVjdF89ZnVuY3Rpb24oKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9O2dvb2cuZnMudXJsLlVybE9iamVjdF8ucHJvdG90eXBlLnJldm9rZU9iamVjdFVSTD1mdW5jdGlvbihhKXt9Owpnb29nLmZzLnVybC5nZXRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7Y29uc3QgYT1nb29nLmZzLnVybC5maW5kVXJsT2JqZWN0XygpO2lmKG51bGwhPWEpcmV0dXJuIGE7dGhyb3cgRXJyb3IoIlRoaXMgYnJvd3NlciBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBibG9iIFVSTHMiKTt9O2dvb2cuZnMudXJsLmZpbmRVcmxPYmplY3RfPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PWdvb2cuZ2xvYmFsLlVSTCYmdm9pZCAwIT09Z29vZy5nbG9iYWwuVVJMLmNyZWF0ZU9iamVjdFVSTD9nb29nLmdsb2JhbC5VUkw6dm9pZCAwIT09Z29vZy5nbG9iYWwuY3JlYXRlT2JqZWN0VVJMP2dvb2cuZ2xvYmFsOm51bGx9O2dvb2cuZnMudXJsLmJyb3dzZXJTdXBwb3J0c09iamVjdFVybHM9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9Z29vZy5mcy51cmwuZmluZFVybE9iamVjdF8oKX07Z29vZy5mcy5ibG9iPXt9O2dvb2cuZnMuYmxvYi5nZXRCbG9iPWZ1bmN0aW9uKGEpe3ZhciBiPWdvb2cuZ2xvYmFsLkJsb2JCdWlsZGVyfHxnb29nLmdsb2JhbC5XZWJLaXRCbG9iQnVpbGRlcjtpZih2b2lkIDAhPT1iKXtiPW5ldyBiO2ZvcihsZXQgYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYi5hcHBlbmQoYXJndW1lbnRzW2NdKTtyZXR1cm4gYi5nZXRCbG9iKCl9cmV0dXJuIGdvb2cuZnMuYmxvYi5nZXRCbG9iV2l0aFByb3BlcnRpZXMoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9Owpnb29nLmZzLmJsb2IuZ2V0QmxvYldpdGhQcm9wZXJ0aWVzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1nb29nLmdsb2JhbC5CbG9iQnVpbGRlcnx8Z29vZy5nbG9iYWwuV2ViS2l0QmxvYkJ1aWxkZXI7aWYodm9pZCAwIT09ZCl7ZD1uZXcgZDtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKylkLmFwcGVuZChhW2VdLGMpO3JldHVybiBkLmdldEJsb2IoYil9aWYodm9pZCAwIT09Z29vZy5nbG9iYWwuQmxvYilyZXR1cm4gZD17fSxiJiYoZC50eXBlPWIpLGMmJihkLmVuZGluZ3M9YyksbmV3IEJsb2IoYSxkKTt0aHJvdyBFcnJvcigiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IGNyZWF0aW5nIEJsb2JzIik7fTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsPWNsYXNze2NvbnN0cnVjdG9yKGEsYil7dGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfP2E6IiJ9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VUcnVzdGVkUmVzb3VyY2VVcmxXcmFwcGVkVmFsdWVfKyIifX07Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnByb3RvdHlwZS5nZXRUeXBlZFN0cmluZ1ZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5wcm90b3R5cGUuY2xvbmVXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYil7dmFyIGM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAodGhpcyk7Yz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLlVSTF9QQVJBTV9QQVJTRVJfLmV4ZWMoYyk7dmFyIGQ9Y1szXXx8IiI7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoY1sxXStnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnN0cmluZ2lmeVBhcmFtc18oIj8iLGNbMl18fCIiLGEpK2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuc3RyaW5naWZ5UGFyYW1zXygiIyIsZCxiKSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcFRydXN0ZWRTY3JpcHRVUkwoYSkudG9TdHJpbmcoKX07Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwVHJ1c3RlZFNjcmlwdFVSTD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCYmYS5jb25zdHJ1Y3Rvcj09PWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlVHJ1c3RlZFJlc291cmNlVXJsV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbCgiZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgVHJ1c3RlZFJlc291cmNlVXJsLCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlRydXN0ZWRSZXNvdXJjZVVybCJ9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdD1mdW5jdGlvbihhLGIpe3ZhciBjPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKTtpZighZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5CQVNFX1VSTF8udGVzdChjKSl0aHJvdyBFcnJvcigiSW52YWxpZCBUcnVzdGVkUmVzb3VyY2VVcmwgZm9ybWF0OiAiK2MpO2E9Yy5yZXBsYWNlKGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuRk9STUFUX01BUktFUl8sZnVuY3Rpb24oZCxlKXtpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZSkpdGhyb3cgRXJyb3IoJ0ZvdW5kIG1hcmtlciwgIicrZSsnIiwgaW4gZm9ybWF0IHN0cmluZywgIicrYysnIiwgYnV0IG5vIHZhbGlkIGxhYmVsIG1hcHBpbmcgZm91bmQgaW4gYXJnczogJytKU09OLnN0cmluZ2lmeShiKSk7ZD1iW2VdO3JldHVybiBkIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGQpOgplbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGQpKX0pO3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmNyZWF0ZVRydXN0ZWRSZXNvdXJjZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLkZPUk1BVF9NQVJLRVJfPS8leyhcdyspfS9nO2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQkFTRV9VUkxfPVJlZ0V4cCgiXigoaHR0cHM6KT8vL1swLTlhLXouOltcXF0tXSsvfC9bXi9cXFxcXXxbXjovXFxcXCVdKy98W146L1xcXFwlXSpbPyNdfGFib3V0OmJsYW5rIykiLCJpIik7Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5VUkxfUEFSQU1fUEFSU0VSXz0vXihbXj8jXSopKFw/W14jXSopPygjW1xzXFNdKik/LzsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5mb3JtYXRXaXRoUGFyYW1zPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZvcm1hdChhLGIpLmNsb25lV2l0aFBhcmFtcyhjLGQpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5jcmVhdGVUcnVzdGVkUmVzb3VyY2VVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpfTtnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21Db25zdGFudHM9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1nb29nLnN0cmluZy5Db25zdC51bndyYXAoYVtjXSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9Owpnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLmZyb21TYWZlU2NyaXB0PWZ1bmN0aW9uKGEpe2E9Z29vZy5mcy5ibG9iLmdldEJsb2JXaXRoUHJvcGVydGllcyhbbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQudW53cmFwKGEpXSwidGV4dC9qYXZhc2NyaXB0Iik7YT1nb29nLmZzLnVybC5jcmVhdGVPYmplY3RVcmwoYSk7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV89e307Cmdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7Y29uc3QgYj1nb29nLmh0bWwudHJ1c3RlZHR5cGVzLmdldFBvbGljeVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgpO2E9Yj9iLmNyZWF0ZVNjcmlwdFVSTChhKTphO3JldHVybiBuZXcgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybChhLGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURV8pfTsKZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC5zdHJpbmdpZnlQYXJhbXNfPWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT1jKXJldHVybiBiO2lmKCJzdHJpbmciPT09dHlwZW9mIGMpcmV0dXJuIGM/YStlbmNvZGVVUklDb21wb25lbnQoYyk6IiI7Zm9yKHZhciBkIGluIGMpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZCkpe3ZhciBlPWNbZF07ZT1BcnJheS5pc0FycmF5KGUpP2U6W2VdO2Zvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdO251bGwhPWcmJihifHwoYj1hKSxiKz0oYi5sZW5ndGg+YS5sZW5ndGg/IiYiOiIiKStlbmNvZGVVUklDb21wb25lbnQoZCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZykpKX19cmV0dXJuIGJ9O2dvb2cuc3RyaW5nLmludGVybmFsPXt9O2dvb2cuc3RyaW5nLmludGVybmFsLnN0YXJ0c1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09YS5sYXN0SW5kZXhPZihiLDApfTtnb29nLnN0cmluZy5pbnRlcm5hbC5lbmRzV2l0aD1mdW5jdGlvbihhLGIpe2NvbnN0IGM9YS5sZW5ndGgtYi5sZW5ndGg7cmV0dXJuIDA8PWMmJmEuaW5kZXhPZihiLGMpPT1jfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoPWZ1bmN0aW9uKGEsYil7cmV0dXJuIDA9PWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmUoYixhLnNsaWNlKDAsYi5sZW5ndGgpKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRW5kc1dpdGg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gMD09Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlQ29tcGFyZShiLGEuc2xpY2UoYS5sZW5ndGgtYi5sZW5ndGgpKX07Cmdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUVxdWFscz1mdW5jdGlvbihhLGIpe3JldHVybiBhLnRvTG93ZXJDYXNlKCk9PWIudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4vXltcc1x4YTBdKiQvLnRlc3QoYSl9O2dvb2cuc3RyaW5nLmludGVybmFsLnRyaW09Z29vZy5UUlVTVEVEX1NJVEUmJlN0cmluZy5wcm90b3R5cGUudHJpbT9mdW5jdGlvbihhKXtyZXR1cm4gYS50cmltKCl9OmZ1bmN0aW9uKGEpe3JldHVybi9eW1xzXHhhMF0qKFtcc1xTXSo/KVtcc1x4YTBdKiQvLmV4ZWMoYSlbMV19O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXthPVN0cmluZyhhKS50b0xvd2VyQ2FzZSgpO2I9U3RyaW5nKGIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGE8Yj8tMTphPT1iPzA6MX07Cmdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csYj8iPGJyIC8+IjoiPGJyPiIpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuaHRtbEVzY2FwZT1mdW5jdGlvbihhLGIpe2lmKGIpYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKS5yZXBsYWNlKGdvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXywiJmx0OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuR1RfUkVfLCImZ3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5RVU9UX1JFXywiJnF1b3Q7IikucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTlVMTF9SRV8sIiYjMDsiKTtlbHNle2lmKCFnb29nLnN0cmluZy5pbnRlcm5hbC5BTExfUkVfLnRlc3QoYSkpcmV0dXJuIGE7LTEhPWEuaW5kZXhPZigiJiIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXywiJmFtcDsiKSk7LTEhPWEuaW5kZXhPZigiPCIpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuTFRfUkVfLAoiJmx0OyIpKTstMSE9YS5pbmRleE9mKCI+IikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5HVF9SRV8sIiZndDsiKSk7LTEhPWEuaW5kZXhPZignIicpJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuaW50ZXJuYWwuUVVPVF9SRV8sIiZxdW90OyIpKTstMSE9YS5pbmRleE9mKCInIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5TSU5HTEVfUVVPVEVfUkVfLCImIzM5OyIpKTstMSE9YS5pbmRleE9mKCJceDAwIikmJihhPWEucmVwbGFjZShnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXywiJiMwOyIpKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcuaW50ZXJuYWwuQU1QX1JFXz0vJi9nO2dvb2cuc3RyaW5nLmludGVybmFsLkxUX1JFXz0vPC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkdUX1JFXz0vPi9nO2dvb2cuc3RyaW5nLmludGVybmFsLlFVT1RfUkVfPS8iL2c7Z29vZy5zdHJpbmcuaW50ZXJuYWwuU0lOR0xFX1FVT1RFX1JFXz0vJy9nOwpnb29nLnN0cmluZy5pbnRlcm5hbC5OVUxMX1JFXz0vXHgwMC9nO2dvb2cuc3RyaW5nLmludGVybmFsLkFMTF9SRV89L1tceDAwJjw+IiddLztnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTtnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybi0xIT1hLmluZGV4T2YoYil9O2dvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEudG9Mb3dlckNhc2UoKSxiLnRvTG93ZXJDYXNlKCkpfTsKZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zPWZ1bmN0aW9uKGEsYil7dmFyIGM9MDthPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW0oU3RyaW5nKGEpKS5zcGxpdCgiLiIpO2I9Z29vZy5zdHJpbmcuaW50ZXJuYWwudHJpbShTdHJpbmcoYikpLnNwbGl0KCIuIik7Y29uc3QgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCk7Zm9yKGxldCBnPTA7MD09YyYmZzxkO2crKyl7dmFyIGU9YVtnXXx8IiIsZj1iW2ddfHwiIjtkb3tlPS8oXGQqKShcRCopKC4qKS8uZXhlYyhlKXx8WyIiLCIiLCIiLCIiXTtmPS8oXGQqKShcRCopKC4qKS8uZXhlYyhmKXx8WyIiLCIiLCIiLCIiXTtpZigwPT1lWzBdLmxlbmd0aCYmMD09ZlswXS5sZW5ndGgpYnJlYWs7Yz0wPT1lWzFdLmxlbmd0aD8wOnBhcnNlSW50KGVbMV0sMTApO2NvbnN0IGg9MD09ZlsxXS5sZW5ndGg/MDpwYXJzZUludChmWzFdLDEwKTtjPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oYyxoKXx8Cmdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVFbGVtZW50c18oMD09ZVsyXS5sZW5ndGgsMD09ZlsyXS5sZW5ndGgpfHxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlRWxlbWVudHNfKGVbMl0sZlsyXSk7ZT1lWzNdO2Y9ZlszXX13aGlsZSgwPT1jKX1yZXR1cm4gY307Z29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZUVsZW1lbnRzXz1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH07Z29vZy5odG1sLlNhZmVVcmw9Y2xhc3N7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfPWI9PT1nb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz9hOiIifXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV8udG9TdHJpbmcoKX19O2dvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc9ImFib3V0OmludmFsaWQjekNsb3N1cmV6Ijtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMDtnb29nLmh0bWwuU2FmZVVybC5wcm90b3R5cGUuZ2V0VHlwZWRTdHJpbmdWYWx1ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVVcmxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9Owpnb29nLmh0bWwuU2FmZVVybC51bndyYXA9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsJiZhLmNvbnN0cnVjdG9yPT09Z29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGEucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVVybFdyYXBwZWRWYWx1ZV87Z29vZy5hc3NlcnRzLmZhaWwoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVVcmwsIGdvdCAnIithKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVVybCJ9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21Db25zdGFudD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChhKSl9Owpnb29nLmh0bWwuU0FGRV9NSU1FX1RZUEVfUEFUVEVSTl89UmVnRXhwKCdeKD86YXVkaW8vKD86M2dwcDJ8M2dwcHxhYWN8TDE2fG1pZGl8bXAzfG1wNHxtcGVnfG9nYXxvZ2d8b3B1c3x4LW00YXx4LW1hdHJvc2thfHgtd2F2fHdhdnx3ZWJtKXxmb250L1xcdyt8aW1hZ2UvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwfHgtaWNvbnxoZWljfGhlaWYpfHZpZGVvLyg/Om1wZWd8bXA0fG9nZ3x3ZWJtfHF1aWNrdGltZXx4LW1hdHJvc2thKSkoPzo7XFx3Kz0oPzpcXHcrfCJbXFx3Oyw9IF0rIikpKiQnLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuaXNTYWZlTWltZVR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TQUZFX01JTUVfVFlQRV9QQVRURVJOXy50ZXN0KGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuZnJvbUJsb2I9ZnVuY3Rpb24oYSl7YT1nb29nLmh0bWwuU2FmZVVybC5pc1NhZmVNaW1lVHlwZShhLnR5cGUpP2dvb2cuZnMudXJsLmNyZWF0ZU9iamVjdFVybChhKTpnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLnJldm9rZU9iamVjdFVybD1mdW5jdGlvbihhKXthPWEuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpO2EhPT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HJiZnb29nLmZzLnVybC5yZXZva2VPYmplY3RVcmwoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tTWVkaWFTb3VyY2U9ZnVuY3Rpb24oYSl7Z29vZy5hc3NlcnRzLmFzc2VydCgiTWVkaWFTb3VyY2UiaW4gZ29vZy5nbG9iYWwsIk5vIHN1cHBvcnQgZm9yIE1lZGlhU291cmNlIik7YT1hIGluc3RhbmNlb2YgTWVkaWFTb3VyY2U/Z29vZy5mcy51cmwuY3JlYXRlT2JqZWN0VXJsKGEpOmdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkc7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLkRBVEFfVVJMX1BBVFRFUk5fPS9eZGF0YTooLiopO2Jhc2U2NCxbYS16MC05K1wvXSs9KiQvaTsKZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmw9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7YT1hLnJlcGxhY2UoLyglMEF8JTBEKS9nLCIiKTtyZXR1cm4gYS5tYXRjaChnb29nLmh0bWwuREFUQV9VUkxfUEFUVEVSTl8pP2dvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKTpudWxsfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tRGF0YVVybD1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwudHJ5RnJvbURhdGFVcmwoYSl8fGdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19VUkx9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21UZWxVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ0ZWw6Iil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXz1SZWdFeHAoIl5zaXBbc10/OlsrYS16MC05Xy4hJCUmJypcXC89XmB7fH1+LV0rQChbYS16MC05LV0rXFwuKStbYS16MC05XXsyLDYzfSQiLCJpIik7Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNpcFVybD1mdW5jdGlvbihhKXtnb29nLmh0bWwuU0lQX1VSTF9QQVRURVJOXy50ZXN0KGRlY29kZVVSSUNvbXBvbmVudChhKSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9O2dvb2cuaHRtbC5TYWZlVXJsLmZyb21GYWNlYm9va01lc3NlbmdlclVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsImZiLW1lc3NlbmdlcjovL3NoYXJlIil8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5mcm9tV2hhdHNBcHBVcmw9ZnVuY3Rpb24oYSl7Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aChhLCJ3aGF0c2FwcDovL3NlbmQiKXx8KGE9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLmNyZWF0ZVNhZmVVcmxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNtc1VybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNtczoiKSYmZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfKGEpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuaXNTbXNVcmxCb2R5VmFsaWRfPWZ1bmN0aW9uKGEpe3ZhciBiPWEuaW5kZXhPZigiIyIpOzA8YiYmKGE9YS5zdWJzdHJpbmcoMCxiKSk7Yj1hLm1hdGNoKC9bPyZdYm9keT0vZ2kpO2lmKCFiKXJldHVybiEwO2lmKDE8Yi5sZW5ndGgpcmV0dXJuITE7YT1hLm1hdGNoKC9bPyZdYm9keT0oW14mXSopLylbMV07aWYoIWEpcmV0dXJuITA7dHJ5e2RlY29kZVVSSUNvbXBvbmVudChhKX1jYXRjaChjKXtyZXR1cm4hMX1yZXR1cm4vXig/OlthLXowLTlcLV8ufl18JVswLTlhLWZdezJ9KSskL2kudGVzdChhKX07Z29vZy5odG1sLlNhZmVVcmwuZnJvbVNzaFVybD1mdW5jdGlvbihhKXtnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVTdGFydHNXaXRoKGEsInNzaDovLyIpfHwoYT1nb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfU1RSSU5HKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVDaHJvbWVFeHRlbnNpb25Vcmw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVFeHRlbnNpb25VcmxfKC9eY2hyb21lLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVGaXJlZm94RXh0ZW5zaW9uVXJsPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXygvXm1vei1leHRlbnNpb246XC9cLyhbXlwvXSspXC8vLGEsYil9O2dvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRWRnZUV4dGVuc2lvblVybD1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUV4dGVuc2lvblVybF8oL15tcy1icm93c2VyLWV4dGVuc2lvbjpcL1wvKFteXC9dKylcLy8sYSxiKX07Cmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplRXh0ZW5zaW9uVXJsXz1mdW5jdGlvbihhLGIsYyl7KGE9YS5leGVjKGIpKT8oYT1hWzFdLC0xPT0oYyBpbnN0YW5jZW9mIGdvb2cuc3RyaW5nLkNvbnN0P1tnb29nLnN0cmluZy5Db25zdC51bndyYXAoYyldOmMubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBnb29nLnN0cmluZy5Db25zdC51bndyYXAoZCl9KSkuaW5kZXhPZihhKSYmKGI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORykpOmI9Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTtnb29nLmh0bWwuU2FmZVVybC5mcm9tVHJ1c3RlZFJlc291cmNlVXJsPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYSkpfTsKZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fPS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHApOnxbXjovPyNdKig/OlsvPyNdfCQpKS9pO2dvb2cuaHRtbC5TYWZlVXJsLlNBRkVfVVJMX1BBVFRFUk49Z29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fO2dvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplPWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybClyZXR1cm4gYTthPSJvYmplY3QiPT10eXBlb2YgYSYmYS5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nP2EuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpOlN0cmluZyhhKTtyZXR1cm4gZ29vZy5odG1sLlNBRkVfVVJMX1BBVFRFUk5fLnRlc3QoYSk/Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpOmdvb2cuaHRtbC5TYWZlVXJsLnRyeUZyb21EYXRhVXJsKGEpfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuaHRtbC5TYWZlVXJsLnRyeVNhbml0aXplKGEpfHxnb29nLmh0bWwuU2FmZVVybC5JTk5PQ1VPVVNfVVJMfTsKZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQ9ZnVuY3Rpb24oYSxiKXtpZihhIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7aWYoYiYmL15kYXRhOi9pLnRlc3QoYSkmJihiPWdvb2cuaHRtbC5TYWZlVXJsLmZyb21EYXRhVXJsKGEpLGIuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpPT1hKSlyZXR1cm4gYjtnb29nLmFzc2VydHMuYXNzZXJ0KGdvb2cuaHRtbC5TQUZFX1VSTF9QQVRURVJOXy50ZXN0KGEpLCIlcyBkb2VzIG5vdCBtYXRjaCB0aGUgc2FmZSBVUkwgcGF0dGVybiIsYSl8fChhPWdvb2cuaHRtbC5TYWZlVXJsLklOTk9DVU9VU19TVFJJTkcpO3JldHVybiBnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Owpnb29nLmh0bWwuU2FmZVVybC5DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFXz17fTtnb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBnb29nLmh0bWwuU2FmZVVybChhLGdvb2cuaHRtbC5TYWZlVXJsLkNPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEVfKX07Z29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1VSTD1nb29nLmh0bWwuU2FmZVVybC5jcmVhdGVTYWZlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoZ29vZy5odG1sLlNhZmVVcmwuSU5OT0NVT1VTX1NUUklORyk7Z29vZy5odG1sLlNhZmVVcmwuQUJPVVRfQkxBTks9Z29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJhYm91dDpibGFuayIpO2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlV3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT9hOiIiO3RoaXMuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz0hMH1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKCgwLGdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoKShhLCI7IiksYExhc3QgY2hhcmFjdGVyIG9mIHN0eWxlIHN0cmluZyBpcyBub3QgJzsnOiAke2F9YCk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsCiI6IiksIlN0eWxlIHN0cmluZyBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lICc6JywgdG8gc3BlY2lmeSBhIFwibmFtZTogdmFsdWVcIiBwYWlyOiAiK2EpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV99dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5wcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2VTYWZlU3R5bGVXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlJiZhLmNvbnN0cnVjdG9yPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVdyYXBwZWRWYWx1ZV87CigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZVN0eWxlLCBnb3QgJyR7YX1gKyInIG9mIHR5cGUgIitnb29nLnR5cGVPZihhKSk7cmV0dXJuInR5cGVfZXJyb3I6U2FmZVN0eWxlIn1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYSl7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlKGEpe2xldCBiPSIiO2ZvcihsZXQgYyBpbiBhKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpKXtpZighL15bLV9hLXpBLVowLTldKyQvLnRlc3QoYykpdGhyb3cgRXJyb3IoYE5hbWUgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05XSwgZ290OiAke2N9YCk7bGV0IGQ9YVtjXTtudWxsIT1kJiYKKGQ9QXJyYXkuaXNBcnJheShkKT9kLm1hcChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUpLmpvaW4oIiAiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoZCksYis9YCR7Y306JHtkfTtgKX1yZXR1cm4gYj9tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYik6bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLkVNUFRZfXN0YXRpYyBjb25jYXQoYSl7bGV0IGI9IiI7Y29uc3QgYz1kPT57QXJyYXkuaXNBcnJheShkKT9kLmZvckVhY2goYyk6Yis9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChkKX07QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhcmd1bWVudHMsYyk7CnJldHVybiBiP21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKTptb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuRU1QVFl9fW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlU2FmZVN0eWxlU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HPSJ6Q2xvc3VyZXoiOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWUoYSl7aWYoYSBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKXJldHVybid1cmwoIicrZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLnJlcGxhY2UoLzwvZywiJTNjIikucmVwbGFjZSgvW1xcIl0vZywiXFwkJiIpKyciKSc7YT1hIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpOm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX3Nhbml0aXplUHJvcGVydHlWYWx1ZVN0cmluZyhTdHJpbmcoYSkpO2lmKC9bezt9XS8udGVzdChhKSl0aHJvdyBuZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckYXNzZXJ0c19Bc3NlcnRpb25FcnJvcigiVmFsdWUgZG9lcyBub3QgYWxsb3cgW3s7fV0sIGdvdDogJXMuIixbYV0pO3JldHVybiBhfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9zYW5pdGl6ZVByb3BlcnR5VmFsdWVTdHJpbmcoYSl7Y29uc3QgYj1hLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfRlVOQ1RJT05TX1JFLCIkMSIpLnJlcGxhY2UobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfVVJMX1JFLCJ1cmwiKTtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRS50ZXN0KGIpKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9DT01NRU5UX1JFLnRlc3QoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgZGlzYWxsb3dzIGNvbW1lbnRzLCBnb3Q6ICR7YX1gKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORzsKaWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkUXVvdGVzKGEpKXJldHVybigwLGdvb2cuYXNzZXJ0cy5mYWlsKShgU3RyaW5nIHZhbHVlIHJlcXVpcmVzIGJhbGFuY2VkIHF1b3RlcywgZ290OiAke2F9YCksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLklOTk9DVU9VU19TVFJJTkc7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX2hhc0JhbGFuY2VkU3F1YXJlQnJhY2tldHMoYSkpcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKCJTdHJpbmcgdmFsdWUgcmVxdWlyZXMgYmFsYW5jZWQgc3F1YXJlIGJyYWNrZXRzIGFuZCBvbmUgaWRlbnRpZmllciBwZXIgcGFpciBvZiBicmFja2V0cywgZ290OiAiK2EpLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5JTk5PQ1VPVVNfU1RSSU5HfWVsc2UgcmV0dXJuKDAsZ29vZy5hc3NlcnRzLmZhaWwpKGBTdHJpbmcgdmFsdWUgYWxsb3dzIG9ubHkgJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfWArCiIgYW5kIHNpbXBsZSBmdW5jdGlvbnMsIGdvdDogIithKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuSU5OT0NVT1VTX1NUUklORztyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRRdW90ZXMoYSl7bGV0IGI9ITAsYz0hMDtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hLmNoYXJBdChkKTsiJyI9PWUmJmM/Yj0hYjonIic9PWUmJmImJihjPSFjKX1yZXR1cm4gYiYmY30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfaGFzQmFsYW5jZWRTcXVhcmVCcmFja2V0cyhhKXtsZXQgYj0hMDtjb25zdCBjPS9eWy1fYS16QS1aMC05XSQvO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKXtjb25zdCBlPWEuY2hhckF0KGQpO2lmKCJdIj09ZSl7aWYoYilyZXR1cm4hMTtiPSEwfWVsc2UgaWYoIlsiPT1lKXtpZighYilyZXR1cm4hMTtiPSExfWVsc2UgaWYoIWImJiFjLnRlc3QoZSkpcmV0dXJuITF9cmV0dXJuIGJ9CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1ZBTFVFX0FMTE9XRURfQ0hBUlM9IlstLC5cIiclXyEjLyBhLXpBLVowLTlcXFtcXF1dIixtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9SRT1uZXcgUmVnRXhwKGBeJHttb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9WQUxVRV9BTExPV0VEX0NIQVJTfStcJGApLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1VSTF9SRT1SZWdFeHAoIlxcYih1cmxcXChbIFx0XG5dKikoJ1sgLSYoLVxcW1xcXS1+XSonfFwiWyAhIy1cXFtcXF0tfl0qXCJ8WyEjLSYqLVxcW1xcXS1+XSopKFsgXHRcbl0qXFwpKSIsImciKSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUz0iY2FsYyBjdWJpYy1iZXppZXIgZml0LWNvbnRlbnQgaHNsIGhzbGEgbGluZWFyLWdyYWRpZW50IG1hdHJpeCBtaW5tYXggcmFkaWFsLWdyYWRpZW50IHJlcGVhdCByZ2IgcmdiYSAocm90YXRlfHNjYWxlfHRyYW5zbGF0ZSkoWHxZfFp8M2QpPyBzdGVwcyB2YXIiLnNwbGl0KCIgIiksCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX0ZVTkNUSU9OU19SRT1uZXcgUmVnRXhwKCJcXGIoIittb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9BTExPV0VEX0ZVTkNUSU9OUy5qb2luKCJ8IikrIilcXChbLSsqLzAtOWEtekEtWi4lI1xcW1xcXSwgXStcXCkiLCJnIiksbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfQ09NTUVOVF9SRT0vXC9cKi87ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfc2FuaXRpemVVcmwoYSl7cmV0dXJuIGEucmVwbGFjZShtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9VUkxfUkUsKGIsYyxkLGUpPT57bGV0IGY9IiI7ZD1kLnJlcGxhY2UoL14oWyciXSkoLiopXDEkLywoZyxoLGspPT57Zj1oO3JldHVybiBrfSk7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShkKS5nZXRUeXBlZFN0cmluZ1ZhbHVlKCk7cmV0dXJuIGMrZitiK2YrZX0pfQpnb29nLmh0bWwuU2FmZVN0eWxlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZTtnb29nLm9iamVjdD17fTtmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZm9yRWFjaChhLGIsYyl7Zm9yKGNvbnN0IGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbHRlcihhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWIuY2FsbChjLGFbZV0sZSxhKSYmKGRbZV09YVtlXSk7cmV0dXJuIGR9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcChhLGIsYyl7Y29uc3QgZD17fTtmb3IoY29uc3QgZSBpbiBhKWRbZV09Yi5jYWxsKGMsYVtlXSxlLGEpO3JldHVybiBkfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lKGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4hMDtyZXR1cm4hMX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V2ZXJ5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKCFiLmNhbGwoYyxhW2RdLGQsYSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldENvdW50KGEpe2xldCBiPTA7Zm9yKGNvbnN0IGMgaW4gYSliKys7cmV0dXJuIGJ9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldEFueUtleShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZShhKXtmb3IoY29uc3QgYiBpbiBhKXJldHVybiBhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhhLGIpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZShhLGIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0VmFsdWVzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpe2NvbnN0IGI9W107bGV0IGM9MDtmb3IoY29uc3QgZCBpbiBhKWJbYysrXT1kO3JldHVybiBifWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5cyhhLGIpe3ZhciBjPWdvb2cuaXNBcnJheUxpa2UoYik7Y29uc3QgZD1jP2I6YXJndW1lbnRzO2ZvcihjPWM/MDoxO2M8ZC5sZW5ndGg7YysrKXtpZihudWxsPT1hKXJldHVybjthPWFbZFtjXV19cmV0dXJuIGF9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NvbnRhaW5zS2V5KGEsYil7cmV0dXJuIG51bGwhPT1hJiZiIGluIGF9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWluc1ZhbHVlKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZihhW2NdPT1iKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maW5kS2V5KGEsYixjKXtmb3IoY29uc3QgZCBpbiBhKWlmKGIuY2FsbChjLGFbZF0sZCxhKSlyZXR1cm4gZH1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZFZhbHVlKGEsYixjKXtyZXR1cm4oYj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleShhLGIsYykpJiZhW2JdfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9pc0VtcHR5KGEpe2Zvcihjb25zdCBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NsZWFyKGEpe2Zvcihjb25zdCBiIGluIGEpZGVsZXRlIGFbYl19CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9yZW1vdmUoYSxiKXtsZXQgYzsoYz1iIGluIGEpJiZkZWxldGUgYVtiXTtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfYWRkKGEsYixjKXtpZihudWxsIT09YSYmYiBpbiBhKXRocm93IEVycm9yKGBUaGUgb2JqZWN0IGFscmVhZHkgY29udGFpbnMgdGhlIGtleSAiJHtifSJgKTttb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0KGEsYixjKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0KGEsYixjKXtyZXR1cm4gbnVsbCE9PWEmJmIgaW4gYT9hW2JdOmN9ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldChhLGIsYyl7YVtiXT1jfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zZXRJZlVuZGVmaW5lZChhLGIsYyl7cmV0dXJuIGIgaW4gYT9hW2JdOmFbYl09Y30KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0KGEsYixjKXtpZihiIGluIGEpcmV0dXJuIGFbYl07Yz1jKCk7cmV0dXJuIGFbYl09Y31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXF1YWxzKGEsYil7Zm9yKGNvbnN0IGMgaW4gYSlpZighKGMgaW4gYil8fGFbY10hPT1iW2NdKXJldHVybiExO2Zvcihjb25zdCBjIGluIGIpaWYoIShjIGluIGEpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jbG9uZShhKXtjb25zdCBiPXt9O2Zvcihjb25zdCBjIGluIGEpYltjXT1hW2NdO3JldHVybiBifQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdW5zYWZlQ2xvbmUoYSl7aWYoIWF8fCJvYmplY3QiIT09dHlwZW9mIGEpcmV0dXJuIGE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhLmNsb25lKXJldHVybiBhLmNsb25lKCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgTWFwJiZhIGluc3RhbmNlb2YgTWFwKXJldHVybiBuZXcgTWFwKGEpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFNldCYmYSBpbnN0YW5jZW9mIFNldClyZXR1cm4gbmV3IFNldChhKTtpZihhIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gbmV3IERhdGUoYS5nZXRUaW1lKCkpO2NvbnN0IGI9QXJyYXkuaXNBcnJheShhKT9bXToiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyfHwiZnVuY3Rpb24iIT09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlld3x8IUFycmF5QnVmZmVyLmlzVmlldyhhKXx8YSBpbnN0YW5jZW9mIERhdGFWaWV3P3t9Om5ldyBhLmNvbnN0cnVjdG9yKGEubGVuZ3RoKTtmb3IoY29uc3QgYyBpbiBhKWJbY109Cm1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZShhW2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlKGEpe2NvbnN0IGI9e307Zm9yKGNvbnN0IGMgaW4gYSliW2FbY11dPWM7cmV0dXJuIGJ9Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFM9ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2V4dGVuZChhLGIpe2xldCBjLGQ7Zm9yKGxldCBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKGxldCBmPTA7Zjxtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfUFJPVE9UWVBFX0ZJRUxEUy5sZW5ndGg7ZisrKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X1BST1RPVFlQRV9GSUVMRFNbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZShhKXtjb25zdCBiPWFyZ3VtZW50cy5sZW5ndGg7aWYoMT09YiYmQXJyYXkuaXNBcnJheShhcmd1bWVudHNbMF0pKXJldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlLmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtpZihiJTIpdGhyb3cgRXJyb3IoIlVuZXZlbiBudW1iZXIgb2YgYXJndW1lbnRzIik7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCs9MiljW2FyZ3VtZW50c1tkXV09YXJndW1lbnRzW2QrMV07cmV0dXJuIGN9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jcmVhdGVTZXQoYSl7Y29uc3QgYj1hcmd1bWVudHMubGVuZ3RoO2lmKDE9PWImJkFycmF5LmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldC5hcHBseShudWxsLGFyZ3VtZW50c1swXSk7Y29uc3QgYz17fTtmb3IobGV0IGQ9MDtkPGI7ZCsrKWNbYXJndW1lbnRzW2RdXT0hMDtyZXR1cm4gY31mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldyhhKXtsZXQgYj1hO09iamVjdC5pc0Zyb3plbiYmIU9iamVjdC5pc0Zyb3plbihhKSYmKGI9T2JqZWN0LmNyZWF0ZShhKSxPYmplY3QuZnJlZXplKGIpKTtyZXR1cm4gYn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNJbW11dGFibGVWaWV3KGEpe3JldHVybiEhT2JqZWN0LmlzRnJvemVuJiZPYmplY3QuaXNGcm96ZW4oYSl9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzKGEsYixjKXtpZighYSlyZXR1cm5bXTtpZighT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fCFPYmplY3QuZ2V0UHJvdG90eXBlT2YpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGEpO2NvbnN0IGQ9e307Zm9yKDthJiYoYSE9PU9iamVjdC5wcm90b3R5cGV8fGIpJiYoYSE9PUZ1bmN0aW9uLnByb3RvdHlwZXx8Yyk7KXtjb25zdCBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGEpO2ZvcihsZXQgZj0wO2Y8ZS5sZW5ndGg7ZisrKWRbZVtmXV09ITA7YT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYSl9cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRLZXlzKGQpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0U3VwZXJDbGFzcyhhKXtyZXR1cm4oYT1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYS5wcm90b3R5cGUpKSYmYS5jb25zdHJ1Y3Rvcn1nb29nLm9iamVjdC5hZGQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2FkZDtnb29nLm9iamVjdC5jbGVhcj1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY2xlYXI7Z29vZy5vYmplY3QuY2xvbmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2Nsb25lO2dvb2cub2JqZWN0LmNvbnRhaW5zPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucztnb29nLm9iamVjdC5jb250YWluc0tleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNLZXk7Z29vZy5vYmplY3QuY29udGFpbnNWYWx1ZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY29udGFpbnNWYWx1ZTtnb29nLm9iamVjdC5jcmVhdGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZTsKZ29vZy5vYmplY3QuY3JlYXRlSW1tdXRhYmxlVmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfY3JlYXRlSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5jcmVhdGVTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2NyZWF0ZVNldDtnb29nLm9iamVjdC5lcXVhbHM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2VxdWFscztnb29nLm9iamVjdC5ldmVyeT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZXZlcnk7Z29vZy5vYmplY3QuZXh0ZW5kPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9leHRlbmQ7Z29vZy5vYmplY3QuZmlsdGVyPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9maWx0ZXI7Z29vZy5vYmplY3QuZmluZEtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZmluZEtleTtnb29nLm9iamVjdC5maW5kVmFsdWU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2ZpbmRWYWx1ZTtnb29nLm9iamVjdC5mb3JFYWNoPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9mb3JFYWNoOwpnb29nLm9iamVjdC5nZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2dldDtnb29nLm9iamVjdC5nZXRBbGxQcm9wZXJ0eU5hbWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbGxQcm9wZXJ0eU5hbWVzO2dvb2cub2JqZWN0LmdldEFueUtleT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0QW55S2V5O2dvb2cub2JqZWN0LmdldEFueVZhbHVlPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRBbnlWYWx1ZTtnb29nLm9iamVjdC5nZXRDb3VudD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0Q291bnQ7Z29vZy5vYmplY3QuZ2V0S2V5cz1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfZ2V0S2V5cztnb29nLm9iamVjdC5nZXRTdXBlckNsYXNzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRTdXBlckNsYXNzO2dvb2cub2JqZWN0LmdldFZhbHVlQnlLZXlzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZUJ5S2V5czsKZ29vZy5vYmplY3QuZ2V0VmFsdWVzPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9nZXRWYWx1ZXM7Z29vZy5vYmplY3QuaXNFbXB0eT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfaXNFbXB0eTtnb29nLm9iamVjdC5pc0ltbXV0YWJsZVZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X2lzSW1tdXRhYmxlVmlldztnb29nLm9iamVjdC5tYXA9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X21hcDtnb29nLm9iamVjdC5yZW1vdmU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3JlbW92ZTtnb29nLm9iamVjdC5zZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldDtnb29nLm9iamVjdC5zZXRJZlVuZGVmaW5lZD1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3Rfc2V0SWZVbmRlZmluZWQ7Z29vZy5vYmplY3Quc2V0V2l0aFJldHVyblZhbHVlSWZOb3RTZXQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckb2JqZWN0X3NldFdpdGhSZXR1cm5WYWx1ZUlmTm90U2V0Owpnb29nLm9iamVjdC5zb21lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9zb21lO2dvb2cub2JqZWN0LnRyYW5zcG9zZT1tb2R1bGUkY29udGVudHMkZ29vZyRvYmplY3RfdHJhbnNwb3NlO2dvb2cub2JqZWN0LnVuc2FmZUNsb25lPW1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF91bnNhZmVDbG9uZTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU9e307CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXR7Y29uc3RydWN0b3IoYSxiKXt0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXz1iPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFP2E6IiI7dGhpcy5pbXBsZW1lbnRzR29vZ1N0cmluZ1R5cGVkU3RyaW5nPSEwfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIGNyZWF0ZVJ1bGUoYSxiKXtpZigoMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYSwiPCIpKXRocm93IEVycm9yKGBTZWxlY3RvciBkb2VzIG5vdCBhbGxvdyAnPCcsIGdvdDogJHthfWApO2NvbnN0IGM9YS5yZXBsYWNlKC8oJ3wiKSgoPyFcMSlbXlxyXG5cZlxcXXxcXFtcc1xTXSkqXDEvZywKIiIpO2lmKCEvXlstX2EtekEtWjAtOSMuOiogLD4rfltcXSgpPV4kfF0rJC8udGVzdChjKSl0aHJvdyBFcnJvcigiU2VsZWN0b3IgYWxsb3dzIG9ubHkgWy1fYS16QS1aMC05Iy46KiAsPit+W1xcXSgpPV4kfF0gYW5kIHN0cmluZ3MsIGdvdDogIithKTtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5oYXNCYWxhbmNlZEJyYWNrZXRzXyhjKSl0aHJvdyBFcnJvcigiKCkgYW5kIFtdIGluIHNlbGVjdG9yIG11c3QgYmUgYmFsYW5jZWQsIGdvdDogIithKTtiIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlfHwoYj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZV9TYWZlU3R5bGUuY3JlYXRlKGIpKTthPWAke2F9e2ArbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLnVud3JhcChiKS5yZXBsYWNlKC88L2csIlxcM0MgIikrIn0iOwpyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5jcmVhdGVTYWZlU3R5bGVTaGVldFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpfXN0YXRpYyBoYXNCYWxhbmNlZEJyYWNrZXRzXyhhKXtjb25zdCBiPXsiKCI6IikiLCJbIjoiXSJ9LGM9W107Zm9yKGxldCBkPTA7ZDxhLmxlbmd0aDtkKyspe2NvbnN0IGU9YVtkXTtpZihiW2VdKWMucHVzaChiW2VdKTtlbHNlIGlmKG1vZHVsZSRjb250ZW50cyRnb29nJG9iamVjdF9jb250YWlucyhiLGUpJiZjLnBvcCgpIT1lKXJldHVybiExfXJldHVybiAwPT1jLmxlbmd0aH1zdGF0aWMgY29uY2F0KGEpe2xldCBiPSIiO2NvbnN0IGM9ZD0+e0FycmF5LmlzQXJyYXkoZCk/ZC5mb3JFYWNoKGMpOmIrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGQpfTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGFyZ3VtZW50cywKYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgZnJvbUNvbnN0YW50KGEpe2E9Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpO2lmKDA9PT1hLmxlbmd0aClyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWTsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KSghKDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29udGFpbnMpKGEsIjwiKSxgRm9yYmlkZGVuICc8JyBjaGFyYWN0ZXIgaW4gc3R5bGUgc2hlZXQgc3RyaW5nOiAke2F9YCk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKX1nZXRUeXBlZFN0cmluZ1ZhbHVlKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZVN0eWxlU2hlZXRXcmFwcGVkVmFsdWVffXN0YXRpYyB1bndyYXAoYSl7aWYoYSBpbnN0YW5jZW9mCm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQmJmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0KXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVTdHlsZVNoZWV0V3JhcHBlZFZhbHVlXzsoMCxnb29nLmFzc2VydHMuZmFpbCkoImV4cGVjdGVkIG9iamVjdCBvZiB0eXBlIFNhZmVTdHlsZVNoZWV0LCBnb3QgJyIrYSsiJyBvZiB0eXBlICIrZ29vZy50eXBlT2YoYSkpO3JldHVybiJ0eXBlX2Vycm9yOlNhZmVTdHlsZVNoZWV0In1zdGF0aWMgY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhKXtyZXR1cm4gbmV3IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQoYSxtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEUpfX0KbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVTaGVldF9TYWZlU3R5bGVTaGVldC5FTVBUWT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0LmNyZWF0ZVNhZmVTdHlsZVNoZWV0U2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIiIpO2dvb2cuaHRtbC5TYWZlU3R5bGVTaGVldD1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVTdHlsZVNoZWV0X1NhZmVTdHlsZVNoZWV0O2dvb2cuZG9tLkh0bWxFbGVtZW50PWZ1bmN0aW9uKCl7fTtnb29nLmRvbS5UYWdOYW1lPWNsYXNze3N0YXRpYyBjYXN0KGEsYil7cmV0dXJuIGF9Y29uc3RydWN0b3IoKXt9dG9TdHJpbmcoKXt9fTtnb29nLmRvbS5UYWdOYW1lLkE9IkEiO2dvb2cuZG9tLlRhZ05hbWUuQUJCUj0iQUJCUiI7Z29vZy5kb20uVGFnTmFtZS5BQ1JPTllNPSJBQ1JPTllNIjtnb29nLmRvbS5UYWdOYW1lLkFERFJFU1M9IkFERFJFU1MiO2dvb2cuZG9tLlRhZ05hbWUuQVBQTEVUPSJBUFBMRVQiO2dvb2cuZG9tLlRhZ05hbWUuQVJFQT0iQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5BUlRJQ0xFPSJBUlRJQ0xFIjtnb29nLmRvbS5UYWdOYW1lLkFTSURFPSJBU0lERSI7Z29vZy5kb20uVGFnTmFtZS5BVURJTz0iQVVESU8iO2dvb2cuZG9tLlRhZ05hbWUuQj0iQiI7Z29vZy5kb20uVGFnTmFtZS5CQVNFPSJCQVNFIjtnb29nLmRvbS5UYWdOYW1lLkJBU0VGT05UPSJCQVNFRk9OVCI7Z29vZy5kb20uVGFnTmFtZS5CREk9IkJESSI7Z29vZy5kb20uVGFnTmFtZS5CRE89IkJETyI7Cmdvb2cuZG9tLlRhZ05hbWUuQklHPSJCSUciO2dvb2cuZG9tLlRhZ05hbWUuQkxPQ0tRVU9URT0iQkxPQ0tRVU9URSI7Z29vZy5kb20uVGFnTmFtZS5CT0RZPSJCT0RZIjtnb29nLmRvbS5UYWdOYW1lLkJSPSJCUiI7Z29vZy5kb20uVGFnTmFtZS5CVVRUT049IkJVVFRPTiI7Z29vZy5kb20uVGFnTmFtZS5DQU5WQVM9IkNBTlZBUyI7Z29vZy5kb20uVGFnTmFtZS5DQVBUSU9OPSJDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkNFTlRFUj0iQ0VOVEVSIjtnb29nLmRvbS5UYWdOYW1lLkNJVEU9IkNJVEUiO2dvb2cuZG9tLlRhZ05hbWUuQ09ERT0iQ09ERSI7Z29vZy5kb20uVGFnTmFtZS5DT0w9IkNPTCI7Z29vZy5kb20uVGFnTmFtZS5DT0xHUk9VUD0iQ09MR1JPVVAiO2dvb2cuZG9tLlRhZ05hbWUuQ09NTUFORD0iQ09NTUFORCI7Z29vZy5kb20uVGFnTmFtZS5EQVRBPSJEQVRBIjtnb29nLmRvbS5UYWdOYW1lLkRBVEFMSVNUPSJEQVRBTElTVCI7Z29vZy5kb20uVGFnTmFtZS5ERD0iREQiOwpnb29nLmRvbS5UYWdOYW1lLkRFTD0iREVMIjtnb29nLmRvbS5UYWdOYW1lLkRFVEFJTFM9IkRFVEFJTFMiO2dvb2cuZG9tLlRhZ05hbWUuREZOPSJERk4iO2dvb2cuZG9tLlRhZ05hbWUuRElBTE9HPSJESUFMT0ciO2dvb2cuZG9tLlRhZ05hbWUuRElSPSJESVIiO2dvb2cuZG9tLlRhZ05hbWUuRElWPSJESVYiO2dvb2cuZG9tLlRhZ05hbWUuREw9IkRMIjtnb29nLmRvbS5UYWdOYW1lLkRUPSJEVCI7Z29vZy5kb20uVGFnTmFtZS5FTT0iRU0iO2dvb2cuZG9tLlRhZ05hbWUuRU1CRUQ9IkVNQkVEIjtnb29nLmRvbS5UYWdOYW1lLkZJRUxEU0VUPSJGSUVMRFNFVCI7Z29vZy5kb20uVGFnTmFtZS5GSUdDQVBUSU9OPSJGSUdDQVBUSU9OIjtnb29nLmRvbS5UYWdOYW1lLkZJR1VSRT0iRklHVVJFIjtnb29nLmRvbS5UYWdOYW1lLkZPTlQ9IkZPTlQiO2dvb2cuZG9tLlRhZ05hbWUuRk9PVEVSPSJGT09URVIiO2dvb2cuZG9tLlRhZ05hbWUuRk9STT0iRk9STSI7Cmdvb2cuZG9tLlRhZ05hbWUuRlJBTUU9IkZSQU1FIjtnb29nLmRvbS5UYWdOYW1lLkZSQU1FU0VUPSJGUkFNRVNFVCI7Z29vZy5kb20uVGFnTmFtZS5IMT0iSDEiO2dvb2cuZG9tLlRhZ05hbWUuSDI9IkgyIjtnb29nLmRvbS5UYWdOYW1lLkgzPSJIMyI7Z29vZy5kb20uVGFnTmFtZS5IND0iSDQiO2dvb2cuZG9tLlRhZ05hbWUuSDU9Ikg1Ijtnb29nLmRvbS5UYWdOYW1lLkg2PSJINiI7Z29vZy5kb20uVGFnTmFtZS5IRUFEPSJIRUFEIjtnb29nLmRvbS5UYWdOYW1lLkhFQURFUj0iSEVBREVSIjtnb29nLmRvbS5UYWdOYW1lLkhHUk9VUD0iSEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLkhSPSJIUiI7Z29vZy5kb20uVGFnTmFtZS5IVE1MPSJIVE1MIjtnb29nLmRvbS5UYWdOYW1lLkk9IkkiO2dvb2cuZG9tLlRhZ05hbWUuSUZSQU1FPSJJRlJBTUUiO2dvb2cuZG9tLlRhZ05hbWUuSU1HPSJJTUciO2dvb2cuZG9tLlRhZ05hbWUuSU5QVVQ9IklOUFVUIjsKZ29vZy5kb20uVGFnTmFtZS5JTlM9IklOUyI7Z29vZy5kb20uVGFnTmFtZS5JU0lOREVYPSJJU0lOREVYIjtnb29nLmRvbS5UYWdOYW1lLktCRD0iS0JEIjtnb29nLmRvbS5UYWdOYW1lLktFWUdFTj0iS0VZR0VOIjtnb29nLmRvbS5UYWdOYW1lLkxBQkVMPSJMQUJFTCI7Z29vZy5kb20uVGFnTmFtZS5MRUdFTkQ9IkxFR0VORCI7Z29vZy5kb20uVGFnTmFtZS5MST0iTEkiO2dvb2cuZG9tLlRhZ05hbWUuTElOSz0iTElOSyI7Z29vZy5kb20uVGFnTmFtZS5NQUlOPSJNQUlOIjtnb29nLmRvbS5UYWdOYW1lLk1BUD0iTUFQIjtnb29nLmRvbS5UYWdOYW1lLk1BUks9Ik1BUksiO2dvb2cuZG9tLlRhZ05hbWUuTUFUSD0iTUFUSCI7Z29vZy5kb20uVGFnTmFtZS5NRU5VPSJNRU5VIjtnb29nLmRvbS5UYWdOYW1lLk1FTlVJVEVNPSJNRU5VSVRFTSI7Z29vZy5kb20uVGFnTmFtZS5NRVRBPSJNRVRBIjtnb29nLmRvbS5UYWdOYW1lLk1FVEVSPSJNRVRFUiI7Cmdvb2cuZG9tLlRhZ05hbWUuTkFWPSJOQVYiO2dvb2cuZG9tLlRhZ05hbWUuTk9GUkFNRVM9Ik5PRlJBTUVTIjtnb29nLmRvbS5UYWdOYW1lLk5PU0NSSVBUPSJOT1NDUklQVCI7Z29vZy5kb20uVGFnTmFtZS5PQkpFQ1Q9Ik9CSkVDVCI7Z29vZy5kb20uVGFnTmFtZS5PTD0iT0wiO2dvb2cuZG9tLlRhZ05hbWUuT1BUR1JPVVA9Ik9QVEdST1VQIjtnb29nLmRvbS5UYWdOYW1lLk9QVElPTj0iT1BUSU9OIjtnb29nLmRvbS5UYWdOYW1lLk9VVFBVVD0iT1VUUFVUIjtnb29nLmRvbS5UYWdOYW1lLlA9IlAiO2dvb2cuZG9tLlRhZ05hbWUuUEFSQU09IlBBUkFNIjtnb29nLmRvbS5UYWdOYW1lLlBJQ1RVUkU9IlBJQ1RVUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJFPSJQUkUiO2dvb2cuZG9tLlRhZ05hbWUuUFJPR1JFU1M9IlBST0dSRVNTIjtnb29nLmRvbS5UYWdOYW1lLlE9IlEiO2dvb2cuZG9tLlRhZ05hbWUuUlA9IlJQIjtnb29nLmRvbS5UYWdOYW1lLlJUPSJSVCI7Cmdvb2cuZG9tLlRhZ05hbWUuUlRDPSJSVEMiO2dvb2cuZG9tLlRhZ05hbWUuUlVCWT0iUlVCWSI7Z29vZy5kb20uVGFnTmFtZS5TPSJTIjtnb29nLmRvbS5UYWdOYW1lLlNBTVA9IlNBTVAiO2dvb2cuZG9tLlRhZ05hbWUuU0NSSVBUPSJTQ1JJUFQiO2dvb2cuZG9tLlRhZ05hbWUuU0VDVElPTj0iU0VDVElPTiI7Z29vZy5kb20uVGFnTmFtZS5TRUxFQ1Q9IlNFTEVDVCI7Z29vZy5kb20uVGFnTmFtZS5TTUFMTD0iU01BTEwiO2dvb2cuZG9tLlRhZ05hbWUuU09VUkNFPSJTT1VSQ0UiO2dvb2cuZG9tLlRhZ05hbWUuU1BBTj0iU1BBTiI7Z29vZy5kb20uVGFnTmFtZS5TVFJJS0U9IlNUUklLRSI7Z29vZy5kb20uVGFnTmFtZS5TVFJPTkc9IlNUUk9ORyI7Z29vZy5kb20uVGFnTmFtZS5TVFlMRT0iU1RZTEUiO2dvb2cuZG9tLlRhZ05hbWUuU1VCPSJTVUIiO2dvb2cuZG9tLlRhZ05hbWUuU1VNTUFSWT0iU1VNTUFSWSI7Z29vZy5kb20uVGFnTmFtZS5TVVA9IlNVUCI7Cmdvb2cuZG9tLlRhZ05hbWUuU1ZHPSJTVkciO2dvb2cuZG9tLlRhZ05hbWUuVEFCTEU9IlRBQkxFIjtnb29nLmRvbS5UYWdOYW1lLlRCT0RZPSJUQk9EWSI7Z29vZy5kb20uVGFnTmFtZS5URD0iVEQiO2dvb2cuZG9tLlRhZ05hbWUuVEVNUExBVEU9IlRFTVBMQVRFIjtnb29nLmRvbS5UYWdOYW1lLlRFWFRBUkVBPSJURVhUQVJFQSI7Z29vZy5kb20uVGFnTmFtZS5URk9PVD0iVEZPT1QiO2dvb2cuZG9tLlRhZ05hbWUuVEg9IlRIIjtnb29nLmRvbS5UYWdOYW1lLlRIRUFEPSJUSEVBRCI7Z29vZy5kb20uVGFnTmFtZS5USU1FPSJUSU1FIjtnb29nLmRvbS5UYWdOYW1lLlRJVExFPSJUSVRMRSI7Z29vZy5kb20uVGFnTmFtZS5UUj0iVFIiO2dvb2cuZG9tLlRhZ05hbWUuVFJBQ0s9IlRSQUNLIjtnb29nLmRvbS5UYWdOYW1lLlRUPSJUVCI7Z29vZy5kb20uVGFnTmFtZS5VPSJVIjtnb29nLmRvbS5UYWdOYW1lLlVMPSJVTCI7Z29vZy5kb20uVGFnTmFtZS5WQVI9IlZBUiI7Cmdvb2cuZG9tLlRhZ05hbWUuVklERU89IlZJREVPIjtnb29nLmRvbS5UYWdOYW1lLldCUj0iV0JSIjtnb29nLmxhYnM9e307Z29vZy5sYWJzLnVzZXJBZ2VudD17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9VU0VfQ0xJRU5UX0hJTlRTX09WRVJSSURFPSIiLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFM9ITE7bGV0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X2ZvcmNlQ2xpZW50SGludHNJblRlc3RzPSExO2dvb2cubGFicy51c2VyQWdlbnQuc2V0VXNlQ2xpZW50SGludHNGb3JUZXN0aW5nPWE9Pnttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cz1hfTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfdXNlQ2xpZW50SGludHNSdW50aW1lT3ZlcnJpZGU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnRfVVNFX0NMSUVOVF9ISU5UU19PVkVSUklERT8hIWdvb2cuZ2V0T2JqZWN0QnlOYW1lKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFNfT1ZFUlJJREUpOiExO2dvb2cubGFicy51c2VyQWdlbnQudXNlQ2xpZW50SGludHM9KCk9Pm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X1VTRV9DTElFTlRfSElOVFN8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50X3VzZUNsaWVudEhpbnRzUnVudGltZU92ZXJyaWRlfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudF9mb3JjZUNsaWVudEhpbnRzSW5UZXN0cztnb29nLmxhYnMudXNlckFnZW50LnV0aWw9e307Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9BU1NVTUVfQ0xJRU5UX0hJTlRTX1NVUFBPUlQ9ITE7ZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKXt2YXIgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdmlnYXRvcigpO3JldHVybiBhJiYoYT1hLnVzZXJBZ2VudCk/YToiIn1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudERhdGEoKXtjb25zdCBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCk7cmV0dXJuIGE/YS51c2VyQWdlbnREYXRhfHxudWxsOm51bGx9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF2aWdhdG9yKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLm5hdmlnYXRvcn1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnRJbnRlcm5hbD1udWxsLG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudChhKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsPSJzdHJpbmciPT09dHlwZW9mIGE/YTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZygpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCl7cmV0dXJuIG51bGw9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50SW50ZXJuYWw/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXROYXRpdmVVc2VyQWdlbnRTdHJpbmcoKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudEludGVybmFsfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3NldFVzZXJBZ2VudERhdGEoYSl7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF91c2VyQWdlbnREYXRhSW50ZXJuYWw9YX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3Jlc2V0VXNlckFnZW50RGF0YSgpe21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfdXNlckFnZW50RGF0YUludGVybmFsPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0TmF0aXZlVXNlckFnZW50RGF0YSgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX3VzZXJBZ2VudERhdGFJbnRlcm5hbH0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChhKXtpZighKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiBiP2IuYnJhbmRzLnNvbWUoKHticmFuZDpjfSk9PmMmJigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKShjLGEpKTohMX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KGEpe2NvbnN0IGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtyZXR1cm4oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb250YWlucykoYixhKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudElnbm9yZUNhc2UoYSl7Y29uc3QgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudCgpO3JldHVybigwLGdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbnRhaW5zKShiLGEpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXMoYSl7Y29uc3QgYj1SZWdFeHAoIihbQS1aXVtcXHcgXSspLyhbXlxcc10rKVxccyooPzpcXCgoLio/KVxcKSk/IiwiZyIpLGM9W107bGV0IGQ7Zm9yKDtkPWIuZXhlYyhhKTspYy5wdXNoKFtkWzFdLGRbMl0sZFszXXx8dm9pZCAwXSk7cmV0dXJuIGN9Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLkFTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX0FTU1VNRV9DTElFTlRfSElOVFNfU1VQUE9SVDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmV4dHJhY3RWZXJzaW9uVHVwbGVzPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZXh0cmFjdFZlcnNpb25UdXBsZXM7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLmdldE5hdGl2ZVVzZXJBZ2VudFN0cmluZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldE5hdGl2ZVVzZXJBZ2VudFN0cmluZztnb29nLmxhYnMudXNlckFnZW50LnV0aWwuZ2V0VXNlckFnZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50O2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5nZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwubWF0Y2hVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudDsKZ29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50RGF0YUJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLm1hdGNoVXNlckFnZW50SWdub3JlQ2FzZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50SWdub3JlQ2FzZTtnb29nLmxhYnMudXNlckFnZW50LnV0aWwucmVzZXRVc2VyQWdlbnREYXRhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfcmVzZXRVc2VyQWdlbnREYXRhO2dvb2cubGFicy51c2VyQWdlbnQudXRpbC5zZXRVc2VyQWdlbnQ9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnQ7Z29vZy5sYWJzLnVzZXJBZ2VudC51dGlsLnNldFVzZXJBZ2VudERhdGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9zZXRVc2VyQWdlbnREYXRhO3ZhciBtb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5VmFsdWU9e0FzeW5jVmFsdWU6Y2xhc3N7Z2V0SWZMb2FkZWQoKXt9bG9hZCgpe319LEhpZ2hFbnRyb3B5VmFsdWU6Y2xhc3N7Y29uc3RydWN0b3IoYSl7dGhpcy5rZXlfPWE7dGhpcy5wcm9taXNlXz10aGlzLnZhbHVlXz12b2lkIDA7dGhpcy5wZW5kaW5nXz0hMX1nZXRJZkxvYWRlZCgpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpKXJldHVybiB0aGlzLnZhbHVlX31hc3luYyBsb2FkKCl7Y29uc3QgYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKTtpZihhKXJldHVybiB0aGlzLnByb21pc2VffHwodGhpcy5wZW5kaW5nXz0hMCx0aGlzLnByb21pc2VfPShhc3luYygpPT57dHJ5e3JldHVybiB0aGlzLnZhbHVlXz0oYXdhaXQgYS5nZXRIaWdoRW50cm9weVZhbHVlcyhbdGhpcy5rZXlfXSkpW3RoaXMua2V5X119ZmluYWxseXt0aGlzLnBlbmRpbmdfPQohMX19KSgpKSxhd2FpdCB0aGlzLnByb21pc2VffXJlc2V0Rm9yVGVzdGluZygpe2lmKHRoaXMucGVuZGluZ18pdGhyb3cgRXJyb3IoIlVuc2FmZSBjYWxsIHRvIHJlc2V0Rm9yVGVzdGluZyIpO3RoaXMudmFsdWVfPXRoaXMucHJvbWlzZV89dm9pZCAwO3RoaXMucGVuZGluZ189ITF9fSxWZXJzaW9uOmNsYXNze2NvbnN0cnVjdG9yKGEpe3RoaXMudmVyc2lvblN0cmluZ189YX10b1ZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKCl7cmV0dXJuIHRoaXMudmVyc2lvblN0cmluZ199aXNBdExlYXN0KGEpe3JldHVybiAwPD0oMCxnb29nLnN0cmluZy5pbnRlcm5hbC5jb21wYXJlVmVyc2lvbnMpKHRoaXMudmVyc2lvblN0cmluZ18sYSl9fX07dmFyIG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhPXt9O21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdD1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoImZ1bGxWZXJzaW9uTGlzdCIpO21vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLnBsYXRmb3JtVmVyc2lvbj1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLkhpZ2hFbnRyb3B5VmFsdWUoInBsYXRmb3JtVmVyc2lvbiIpO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlcj17fTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kPXtBTkRST0lEX0JST1dTRVI6IkFuZHJvaWQgQnJvd3NlciIsQ0hST01JVU06IkNocm9taXVtIixFREdFOiJNaWNyb3NvZnQgRWRnZSIsRklSRUZPWDoiRmlyZWZveCIsSUU6IkludGVybmV0IEV4cGxvcmVyIixPUEVSQToiT3BlcmEiLFNBRkFSSToiU2FmYXJpIixTSUxLOiJTaWxrIn07Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLkJyYW5kPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQ7CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKGE9ITEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfQVNTVU1FX0NMSUVOVF9ISU5UU19TVVBQT1JUKXJldHVybiEwO2lmKCFhJiYhKDAsZ29vZy5sYWJzLnVzZXJBZ2VudC51c2VDbGllbnRIaW50cykoKSlyZXR1cm4hMTthPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpO3JldHVybiEhYSYmMDxhLmJyYW5kcy5sZW5ndGh9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaGFzRnVsbFZlcnNpb25MaXN0KCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdExlYXN0KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU0sOTgpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIk9wZXJhIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlRyaWRlbnQiKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiTVNJRSIpfWZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpPyExOm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkVkZ2UiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5FREdFKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJFZGcvIil9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudERhdGFCcmFuZChtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLk9QRVJBKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJPUFIiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiRmlyZWZveCIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJGeGlPUyIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoU2FmYXJpKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNhZmFyaSIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0KCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bSgpfHwKbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpKX1mdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3QoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoKT8hMTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDb2FzdCIpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldygpe3JldHVybihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJpUGFkIil8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoImlQaG9uZSIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hTYWZhcmkoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDb2FzdCgpJiYhbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQXBwbGVXZWJLaXQiKX0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpP21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnREYXRhQnJhbmQobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5DSFJPTUlVTSk6KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIkNocm9tZSIpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX21hdGNoVXNlckFnZW50KCJDcmlPUyIpKSYmIW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlSHRtbCgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXIoKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9tYXRjaFVzZXJBZ2VudCgiQW5kcm9pZCIpJiYhKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWUoKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEZpcmVmb3goKXx8bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCl8fG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCkpfWNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNPcGVyYT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmE7Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc09wZXJhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzSUU9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFO2dvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5pc0lFPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzRWRnZT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWw7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNFZGdlQ2hyb21pdW09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzT3BlcmFDaHJvbWl1bT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoT3BlcmFDaHJvbWl1bTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNPcGVyYUNocm9taXVtPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtOwpjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzRmlyZWZveD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRmlyZWZveDtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNGaXJlZm94PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTYWZhcmk9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaTtjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ29hc3Q9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENvYXN0Owpnb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNDb2FzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ29hc3Q7Y29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0lvc1dlYnZpZXc9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElvc1dlYnZpZXc7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzSW9zV2Vidmlldz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoSW9zV2Vidmlldztjb25zdCBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQ2hyb21lPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hDaHJvbWU7CmNvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBbmRyb2lkQnJvd3Nlcj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQW5kcm9pZEJyb3dzZXI7Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQW5kcm9pZEJyb3dzZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEFuZHJvaWRCcm93c2VyO2Z1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfbWF0Y2hVc2VyQWdlbnQoIlNpbGsiKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNTaWxrPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNTaWxrOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2NyZWF0ZVZlcnNpb25NYXAoYSl7Y29uc3QgYj17fTthLmZvckVhY2goYz0+e2JbY1swXV09Y1sxXX0pO3JldHVybiBjPT5iW2MuZmluZChkPT5kIGluIGIpXXx8IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbigpe3ZhciBhPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50KCk7aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCkpcmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0SUVWZXJzaW9uKGEpO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9leHRyYWN0VmVyc2lvblR1cGxlcyhhKTtjb25zdCBiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfY3JlYXRlVmVyc2lvbk1hcChhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCk/YihbIlZlcnNpb24iLCJPcGVyYSJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKT8KYihbIkVkZ2UiXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VDaHJvbWl1bSgpP2IoWyJFZGciXSk6bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1NpbGsoKT9iKFsiU2lsayJdKTptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoQ2hyb21lKCk/YihbIkNocm9tZSIsIkNyaU9TIiwiSGVhZGxlc3NDaHJvbWUiXSk6KGE9YVsyXSkmJmFbMV18fCIifWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfZ2V0VmVyc2lvbjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcihhKXtyZXR1cm4gMDw9KDAsZ29vZy5zdHJpbmcuaW50ZXJuYWwuY29tcGFyZVZlcnNpb25zKShtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb24oKSxhKX1nb29nLmxhYnMudXNlckFnZW50LmJyb3dzZXIuaXNWZXJzaW9uT3JIaWdoZXI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc1ZlcnNpb25PckhpZ2hlcjsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYSl7dmFyIGI9L3J2OiAqKFtcZFwuXSopLy5leGVjKGEpO2lmKGImJmJbMV0pcmV0dXJuIGJbMV07Yj0iIjtjb25zdCBjPS9NU0lFICsoW1xkXC5dKykvLmV4ZWMoYSk7aWYoYyYmY1sxXSlpZihhPS9UcmlkZW50XC8oXGQuXGQpLy5leGVjKGEpLCI3LjAiPT1jWzFdKWlmKGEmJmFbMV0pc3dpdGNoKGFbMV0pe2Nhc2UgIjQuMCI6Yj0iOC4wIjticmVhaztjYXNlICI1LjAiOmI9IjkuMCI7YnJlYWs7Y2FzZSAiNi4wIjpiPSIxMC4wIjticmVhaztjYXNlICI3LjAiOmI9IjExLjAifWVsc2UgYj0iNy4wIjtlbHNlIGI9Y1sxXTtyZXR1cm4gYn0KZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkdXRpbF9nZXRVc2VyQWdlbnQoKTtpZihhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5JRSlyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaElFKCk/bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRJRVZlcnNpb24oYik6IiI7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2V4dHJhY3RWZXJzaW9uVHVwbGVzKGIpO2NvbnN0IGM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9jcmVhdGVWZXJzaW9uTWFwKGIpO3N3aXRjaChhKXtjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuT1BFUkE6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaE9wZXJhKCkpcmV0dXJuIGMoWyJWZXJzaW9uIiwKIk9wZXJhIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hPcGVyYUNocm9taXVtKCkpcmV0dXJuIGMoWyJPUFIiXSk7YnJlYWs7Y2FzZSBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkVER0U6aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaEVkZ2VIdG1sKCkpcmV0dXJuIGMoWyJFZGdlIl0pO2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hFZGdlQ2hyb21pdW0oKSlyZXR1cm4gYyhbIkVkZyJdKTticmVhaztjYXNlIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuQ0hST01JVU06aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaENocm9tZSgpKXJldHVybiBjKFsiQ2hyb21lIiwiQ3JpT1MiLCJIZWFkbGVzc0Nocm9tZSJdKX1yZXR1cm4gYT09PQptb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLkZJUkVGT1gmJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hGaXJlZm94KCl8fGE9PT1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0JyYW5kLlNBRkFSSSYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9tYXRjaFNhZmFyaSgpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5BTkRST0lEX0JST1dTRVImJm1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hBbmRyb2lkQnJvd3NlcigpfHxhPT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLJiZtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzU2lsaygpPyhhPWJbMl0pJiYKYVsxXXx8IiI6IiJ9CmZ1bmN0aW9uIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdmVyc2lvbk9mXyhhKXtpZihtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCgpJiZhIT09bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9CcmFuZC5TSUxLKXt2YXIgYj1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmN9KT0+Yz09PWEpO2lmKCFifHwhYi52ZXJzaW9uKXJldHVybiBOYU47Yj1iLnZlcnNpb24uc3BsaXQoIi4iKX1lbHNle2I9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSk7aWYoIiI9PT1iKXJldHVybiBOYU47Yj1iLnNwbGl0KCIuIil9cmV0dXJuIDA9PT1iLmxlbmd0aD9OYU46TnVtYmVyKGJbMF0pfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk+PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRMZWFzdD1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2lzQXRMZWFzdDsKZnVuY3Rpb24gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9pc0F0TW9zdChhLGIpeygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKE1hdGguZmxvb3IoYik9PT1iLCJNYWpvciB2ZXJzaW9uIG11c3QgYmUgYW4gaW50ZWdlciIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3ZlcnNpb25PZl8oYSk8PWJ9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmlzQXRNb3N0PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfaXNBdE1vc3Q7CmNsYXNzIG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfSGlnaEVudHJvcHlCcmFuZFZlcnNpb257Y29uc3RydWN0b3IoYSxiLGMpe3RoaXMuYnJhbmRfPWE7dGhpcy52ZXJzaW9uXz1uZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYyk7dGhpcy51c2VVYWNoXz1ifWdldElmTG9hZGVkKCl7aWYodGhpcy51c2VVYWNoXyl7dmFyIGE9bW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmdldElmTG9hZGVkKCk7aWYodm9pZCAwIT09YSlyZXR1cm4gYT1hLmZpbmQoKHticmFuZDpifSk9PnRoaXMuYnJhbmRfPT09YiksKDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYSksbmV3IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlWYWx1ZS5WZXJzaW9uKGEudmVyc2lvbil9aWYobW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkKXJldHVybiB0aGlzLnZlcnNpb25ffWFzeW5jIGxvYWQoKXtpZih0aGlzLnVzZVVhY2hfKXt2YXIgYT0KYXdhaXQgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weURhdGEuZnVsbFZlcnNpb25MaXN0LmxvYWQoKTtpZih2b2lkIDAhPT1hKXJldHVybiBhPWEuZmluZCgoe2JyYW5kOmJ9KT0+dGhpcy5icmFuZF89PT1iKSwoMCxnb29nLmFzc2VydHMuYXNzZXJ0RXhpc3RzKShhKSxuZXcgbW9kdWxlJGV4cG9ydHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRoaWdoRW50cm9weSRoaWdoRW50cm9weVZhbHVlLlZlcnNpb24oYS52ZXJzaW9uKX1lbHNlIGF3YWl0IDA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwO3JldHVybiB0aGlzLnZlcnNpb25ffX1sZXQgbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSExOwphc3luYyBmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2xvYWRGdWxsVmVyc2lvbnMoKXttb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX3VzZVVzZXJBZ2VudERhdGFCcmFuZCghMCkmJmF3YWl0IG1vZHVsZSRleHBvcnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkaGlnaEVudHJvcHkkaGlnaEVudHJvcHlEYXRhLmZ1bGxWZXJzaW9uTGlzdC5sb2FkKCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9wcmVVYWNoSGFzTG9hZGVkPSEwfWdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5sb2FkRnVsbFZlcnNpb25zPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbG9hZEZ1bGxWZXJzaW9uczsKZ29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLnJlc2V0Rm9yVGVzdGluZz0oKT0+e21vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfcHJlVWFjaEhhc0xvYWRlZD0hMTttb2R1bGUkZXhwb3J0cyRnb29nJGxhYnMkdXNlckFnZW50JGhpZ2hFbnRyb3B5JGhpZ2hFbnRyb3B5RGF0YS5mdWxsVmVyc2lvbkxpc3QucmVzZXRGb3JUZXN0aW5nKCl9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2Z1bGxWZXJzaW9uT2YoYSl7bGV0IGI9IiI7bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9oYXNGdWxsVmVyc2lvbkxpc3QoKXx8KGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSkpO2NvbnN0IGM9YSE9PW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfQnJhbmQuU0lMSyYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl91c2VVc2VyQWdlbnREYXRhQnJhbmQoITApO2lmKGMpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCR1dGlsX2dldFVzZXJBZ2VudERhdGEoKS5icmFuZHMuZmluZCgoe2JyYW5kOmR9KT0+ZD09PWEpKXJldHVybn1lbHNlIGlmKCIiPT09YilyZXR1cm47cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX0hpZ2hFbnRyb3B5QnJhbmRWZXJzaW9uKGEsCmMsYil9Z29vZy5sYWJzLnVzZXJBZ2VudC5icm93c2VyLmZ1bGxWZXJzaW9uT2Y9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mOwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nKGEpe2lmKG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfdXNlVXNlckFnZW50RGF0YUJyYW5kKCEwKSl7dmFyIGI9bW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9mdWxsVmVyc2lvbk9mKGEpO2lmKGIpe2lmKGI9Yi5nZXRJZkxvYWRlZCgpKXJldHVybiBiLnRvVmVyc2lvblN0cmluZ0ZvckxvZ2dpbmcoKTtiPW1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JHV0aWxfZ2V0VXNlckFnZW50RGF0YSgpLmJyYW5kcy5maW5kKCh7YnJhbmQ6Y30pPT5jPT09YSk7KDAsZ29vZy5hc3NlcnRzLmFzc2VydEV4aXN0cykoYik7cmV0dXJuIGIudmVyc2lvbn1yZXR1cm4iIn1yZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckbGFicyR1c2VyQWdlbnQkYnJvd3Nlcl9nZXRGdWxsVmVyc2lvbkZyb21Vc2VyQWdlbnRTdHJpbmcoYSl9Cmdvb2cubGFicy51c2VyQWdlbnQuYnJvd3Nlci5nZXRWZXJzaW9uU3RyaW5nRm9yTG9nZ2luZz1tb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX2dldFZlcnNpb25TdHJpbmdGb3JMb2dnaW5nO2dvb2cuZG9tLnRhZ3M9e307Z29vZy5kb20udGFncy5WT0lEX1RBR1NfPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGNvbW1hbmQ6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH07Z29vZy5kb20udGFncy5pc1ZvaWRUYWc9ZnVuY3Rpb24oYSl7cmV0dXJuITA9PT1nb29nLmRvbS50YWdzLlZPSURfVEFHU19bYV19O2NvbnN0IG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURT17fTsKY2xhc3MgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbHtjb25zdHJ1Y3RvcihhLGIpe3RoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfPWI9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX0NPTlNUUlVDVE9SX1RPS0VOX1BSSVZBVEU/YToiIjt0aGlzLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmc9ITB9Z2V0VHlwZWRTdHJpbmdWYWx1ZSgpe3JldHVybiB0aGlzLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXy50b1N0cmluZygpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMucHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlU2FmZUh0bWxXcmFwcGVkVmFsdWVfLnRvU3RyaW5nKCl9c3RhdGljIHVud3JhcChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChhKS50b1N0cmluZygpfXN0YXRpYyB1bndyYXBUcnVzdGVkSFRNTChhKXtpZihhIGluc3RhbmNlb2YgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbCYmCmEuY29uc3RydWN0b3I9PT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKXJldHVybiBhLnByaXZhdGVEb05vdEFjY2Vzc09yRWxzZVNhZmVIdG1sV3JhcHBlZFZhbHVlXztnb29nLmFzc2VydHMuZmFpbChgZXhwZWN0ZWQgb2JqZWN0IG9mIHR5cGUgU2FmZUh0bWwsIGdvdCAnJHthfScgb2YgdHlwZSBgK2dvb2cudHlwZU9mKGEpKTtyZXR1cm4idHlwZV9lcnJvcjpTYWZlSHRtbCJ9c3RhdGljIGh0bWxFc2NhcGUoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT0ib2JqZWN0Ij09dHlwZW9mIGEmJmEuaW1wbGVtZW50c0dvb2dTdHJpbmdUeXBlZFN0cmluZz9hLmdldFR5cGVkU3RyaW5nVmFsdWUoKTpTdHJpbmcoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKGEpKX1zdGF0aWMgaHRtbEVzY2FwZVByZXNlcnZpbmdOZXdsaW5lcyhhKXtpZihhIGluc3RhbmNlb2YKbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbClyZXR1cm4gYTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGdvb2cuc3RyaW5nLmludGVybmFsLm5ld0xpbmVUb0JyKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGh0bWxFc2NhcGVQcmVzZXJ2aW5nTmV3bGluZXNBbmRTcGFjZXMoYSl7aWYoYSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwpcmV0dXJuIGE7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmh0bWxFc2NhcGUoYSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShnb29nLnN0cmluZy5pbnRlcm5hbC53aGl0ZXNwYWNlRXNjYXBlKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbW1lbnQoYSl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiXHgzYyEtLSIrCmdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSkrIi0tXHgzZSIpfXN0YXRpYyBjcmVhdGUoYSxiLGMpe21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudmVyaWZ5VGFnTmFtZShTdHJpbmcoYSkpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoU3RyaW5nKGEpLGIsYyl9c3RhdGljIHZlcmlmeVRhZ05hbWUoYSl7aWYoIW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfVkFMSURfTkFNRVNfSU5fVEFHLnRlc3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YEludmFsaWQgdGFnIG5hbWUgPCR7YX0+LmA6IiIpO2lmKGEudG9VcHBlckNhc2UoKWluIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfTk9UX0FMTE9XRURfVEFHX05BTUVTKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgVGFnIG5hbWUgPCR7YX0+IGlzIG5vdCBhbGxvd2VkIGZvciBTYWZlSHRtbC5gOiIiKTt9c3RhdGljIGNyZWF0ZUlmcmFtZShhLGIsYyxkKXthJiZnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChhKTtjb25zdCBlPXt9O2Uuc3JjPWF8fG51bGw7ZS5zcmNkb2M9YiYmbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYik7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse3NhbmRib3g6IiJ9LGMpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoImlmcmFtZSIsYSxkKX1zdGF0aWMgY3JlYXRlU2FuZGJveElmcmFtZShhLGIsYyxkKXtpZighbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jYW5Vc2VTYW5kYm94SWZyYW1lKCkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/CiJUaGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHNhbmRib3hlZCBpZnJhbWVzLiI6IiIpO2NvbnN0IGU9e307ZS5zcmM9YT9nb29nLmh0bWwuU2FmZVVybC51bndyYXAoZ29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemUoYSkpOm51bGw7ZS5zcmNkb2M9Ynx8bnVsbDtlLnNhbmRib3g9IiI7YT1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKGUse30sYyk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiaWZyYW1lIixhLGQpfXN0YXRpYyBjYW5Vc2VTYW5kYm94SWZyYW1lKCl7cmV0dXJuIGdvb2cuZ2xvYmFsLkhUTUxJRnJhbWVFbGVtZW50JiYic2FuZGJveCJpbiBnb29nLmdsb2JhbC5IVE1MSUZyYW1lRWxlbWVudC5wcm90b3R5cGV9c3RhdGljIGNyZWF0ZVNjcmlwdFNyYyhhLGIpe2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGEpOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY29tYmluZUF0dHJpYnV0ZXMoe3NyYzphfSx7fSxiKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGEpfXN0YXRpYyBjcmVhdGVTY3JpcHQoYSxiKXtmb3IodmFyIGMgaW4gYilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixjKSl7dmFyIGQ9Yy50b0xvd2VyQ2FzZSgpO2lmKCJsYW5ndWFnZSI9PWR8fCJzcmMiPT1kfHwidGV4dCI9PWQpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/YENhbm5vdCBzZXQgIiR7ZH0iIGF0dHJpYnV0ZWA6IiIpO31jPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihkPTA7ZDwKYS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcChhW2RdKTthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzY3JpcHQiLGIsYSl9c3RhdGljIGNyZWF0ZVN0eWxlKGEsYil7Yj1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbWJpbmVBdHRyaWJ1dGVzKHt0eXBlOiJ0ZXh0L2NzcyJ9LHt9LGIpO2xldCBjPSIiO2E9bW9kdWxlJGNvbnRlbnRzJGdvb2ckYXJyYXlfY29uY2F0KGEpO2ZvcihsZXQgZD0wO2Q8YS5sZW5ndGg7ZCsrKWMrPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQudW53cmFwKGFbZF0pOwphPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShjKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5jcmVhdGVTYWZlSHRtbFRhZ1NlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKCJzdHlsZSIsYixhKX1zdGF0aWMgY3JlYXRlTWV0YVJlZnJlc2goYSxiKXthPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZShhKSk7KG1vZHVsZSRjb250ZW50cyRnb29nJGxhYnMkdXNlckFnZW50JGJyb3dzZXJfbWF0Y2hJRSgpfHxtb2R1bGUkY29udGVudHMkZ29vZyRsYWJzJHVzZXJBZ2VudCRicm93c2VyX21hdGNoRWRnZUh0bWwoKSkmJmdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zKGEsIjsiKSYmKGE9IiciK2EucmVwbGFjZSgvJy9nLCIlMjciKSsiJyIpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sVGFnU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIm1ldGEiLAp7Imh0dHAtZXF1aXYiOiJyZWZyZXNoIixjb250ZW50OihifHwwKSsiOyB1cmw9IithfSl9c3RhdGljIGpvaW4oYSxiKXthPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShhKTtjb25zdCBjPVtdLGQ9ZT0+e0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKGQpOihlPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZShlKSxjLnB1c2gobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoZSkpKX07Yi5mb3JFYWNoKGQpO3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYy5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwKGEpKSl9c3RhdGljIGNvbmNhdChhKXtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5qb2luKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU1QVFksCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfXN0YXRpYyBjcmVhdGVTYWZlSHRtbFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGEpe2NvbnN0IGI9Z29vZy5odG1sLnRydXN0ZWR0eXBlcy5nZXRQb2xpY3lQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoKTthPWI/Yi5jcmVhdGVIVE1MKGEpOmE7cmV0dXJuIG5ldyBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sKGEsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9DT05TVFJVQ1RPUl9UT0tFTl9QUklWQVRFKX1zdGF0aWMgY3JlYXRlU2FmZUh0bWxUYWdTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShhLGIsYyl7Yj1gPCR7YX1gK21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpO251bGw9PWM/Yz1bXTpBcnJheS5pc0FycmF5KGMpfHwoYz1bY10pO2dvb2cuZG9tLnRhZ3MuaXNWb2lkVGFnKGEudG9Mb3dlckNhc2UoKSk/Cihnb29nLmFzc2VydHMuYXNzZXJ0KCFjLmxlbmd0aCxgVm9pZCB0YWcgPCR7YX0+IGRvZXMgbm90IGFsbG93IGNvbnRlbnQuYCksYis9Ij4iKTooYz1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNvbmNhdChjKSxiKz0iPiIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXAoYykrIjwvIithKyI+Iik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX1zdGF0aWMgc3RyaW5naWZ5QXR0cmlidXRlcyhhLGIpe2xldCBjPSIiO2lmKGIpZm9yKGxldCBkIGluIGIpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsZCkpe2lmKCFtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1ZBTElEX05BTUVTX0lOX1RBRy50ZXN0KGQpKXRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTPwpgSW52YWxpZCBhdHRyaWJ1dGUgbmFtZSAiJHtkfSIuYDoiIik7Y29uc3QgZT1iW2RdO251bGwhPWUmJihjKz0iICIrbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRBdHRyTmFtZUFuZFZhbHVlKGEsZCxlKSl9cmV0dXJuIGN9c3RhdGljIGNvbWJpbmVBdHRyaWJ1dGVzKGEsYixjKXtjb25zdCBkPXt9O2Zvcih2YXIgZSBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGUpJiYoZ29vZy5hc3NlcnRzLmFzc2VydChlLnRvTG93ZXJDYXNlKCk9PWUsIk11c3QgYmUgbG93ZXIgY2FzZSIpLGRbZV09YVtlXSk7Zm9yKGNvbnN0IGYgaW4gYilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYixmKSYmKGdvb2cuYXNzZXJ0cy5hc3NlcnQoZi50b0xvd2VyQ2FzZSgpPT1mLCJNdXN0IGJlIGxvd2VyIGNhc2UiKSxkW2ZdPWJbZl0pO2lmKGMpZm9yKGNvbnN0IGYgaW4gYylpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYywKZikpe2U9Zi50b0xvd2VyQ2FzZSgpO2lmKGUgaW4gYSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz9gQ2Fubm90IG92ZXJyaWRlICIke2V9IiBhdHRyaWJ1dGUsIGdvdCAiYCtmKyciIHdpdGggdmFsdWUgIicrY1tmXSsnIic6IiIpO2UgaW4gYiYmZGVsZXRlIGRbZV07ZFtmXT1jW2ZdfXJldHVybiBkfX1tb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz1nb29nLkRFQlVHO21vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuU1VQUE9SVF9TVFlMRV9BVFRSSUJVVEU9ITA7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5mcm9tPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuaHRtbEVzY2FwZTsKY29uc3QgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9WQUxJRF9OQU1FU19JTl9UQUc9L15bYS16QS1aMC05LV0rJC8sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUz17YWN0aW9uOiEwLGNpdGU6ITAsZGF0YTohMCxmb3JtYWN0aW9uOiEwLGhyZWY6ITAsbWFuaWZlc3Q6ITAscG9zdGVyOiEwLHNyYzohMH0sbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9OT1RfQUxMT1dFRF9UQUdfTkFNRVM9e1tnb29nLmRvbS5UYWdOYW1lLkFQUExFVF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuQkFTRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuRU1CRURdOiEwLFtnb29nLmRvbS5UYWdOYW1lLklGUkFNRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTElOS106ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUFUSF06ITAsW2dvb2cuZG9tLlRhZ05hbWUuTUVUQV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuT0JKRUNUXTohMCxbZ29vZy5kb20uVGFnTmFtZS5TQ1JJUFRdOiEwLApbZ29vZy5kb20uVGFnTmFtZS5TVFlMRV06ITAsW2dvb2cuZG9tLlRhZ05hbWUuU1ZHXTohMCxbZ29vZy5kb20uVGFnTmFtZS5URU1QTEFURV06ITB9OwpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldEF0dHJOYW1lQW5kVmFsdWUoYSxiLGMpe2lmKGMgaW5zdGFuY2VvZiBnb29nLnN0cmluZy5Db25zdCljPWdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChjKTtlbHNlIGlmKCJzdHlsZSI9PWIudG9Mb3dlckNhc2UoKSlpZihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLlNVUFBPUlRfU1RZTEVfQVRUUklCVVRFKWM9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9nZXRTdHlsZVZhbHVlKGMpO2Vsc2UgdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J0F0dHJpYnV0ZSAic3R5bGUiIG5vdCBzdXBwb3J0ZWQuJzoiIik7ZWxzZXtpZigvXm9uL2kudGVzdChiKSl0aHJvdyBFcnJvcihtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLkVOQUJMRV9FUlJPUl9NRVNTQUdFUz8KYEF0dHJpYnV0ZSAiJHtifWArJyIgcmVxdWlyZXMgZ29vZy5zdHJpbmcuQ29uc3QgdmFsdWUsICInK2MrJyIgZ2l2ZW4uJzoiIik7aWYoYi50b0xvd2VyQ2FzZSgpaW4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9VUkxfQVRUUklCVVRFUylpZihjIGluc3RhbmNlb2YgZ29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybCljPWdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGMpO2Vsc2UgaWYoYyBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsKWM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGMpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYyljPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplKGMpLmdldFR5cGVkU3RyaW5nVmFsdWUoKTtlbHNlIHRocm93IEVycm9yKG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRU5BQkxFX0VSUk9SX01FU1NBR0VTP2BBdHRyaWJ1dGUgIiR7Yn0iIG9uIHRhZyAiJHthfWArJyIgcmVxdWlyZXMgZ29vZy5odG1sLlNhZmVVcmwsIGdvb2cuc3RyaW5nLkNvbnN0LCBvciBzdHJpbmcsIHZhbHVlICInKwpjKyciIGdpdmVuLic6IiIpO31jLmltcGxlbWVudHNHb29nU3RyaW5nVHlwZWRTdHJpbmcmJihjPWMuZ2V0VHlwZWRTdHJpbmdWYWx1ZSgpKTtnb29nLmFzc2VydHMuYXNzZXJ0KCJzdHJpbmciPT09dHlwZW9mIGN8fCJudW1iZXIiPT09dHlwZW9mIGMsIlN0cmluZyBvciBudW1iZXIgdmFsdWUgZXhwZWN0ZWQsIGdvdCAiK3R5cGVvZiBjKyIgd2l0aCB2YWx1ZTogIitjKTtyZXR1cm5gJHtifT0iYCtnb29nLnN0cmluZy5pbnRlcm5hbC5odG1sRXNjYXBlKFN0cmluZyhjKSkrJyInfQpmdW5jdGlvbiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX2dldFN0eWxlVmFsdWUoYSl7aWYoIWdvb2cuaXNPYmplY3QoYSkpdGhyb3cgRXJyb3IobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTkFCTEVfRVJST1JfTUVTU0FHRVM/J1RoZSAic3R5bGUiIGF0dHJpYnV0ZSByZXF1aXJlcyBnb29nLmh0bWwuU2FmZVN0eWxlIG9yIG1hcCBvZiBzdHlsZSBwcm9wZXJ0aWVzLCAnK3R5cGVvZiBhKyIgZ2l2ZW46ICIrYToiIik7YSBpbnN0YW5jZW9mIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZXx8KGE9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU3R5bGVfU2FmZVN0eWxlLmNyZWF0ZShhKSk7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYSl9Cm1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuRE9DVFlQRV9IVE1MPWZ1bmN0aW9uKCl7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZSgiPCFET0NUWVBFIGh0bWw+Iil9KCk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWT1uZXcgbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbChnb29nLmdsb2JhbC50cnVzdGVkVHlwZXMmJmdvb2cuZ2xvYmFsLnRydXN0ZWRUeXBlcy5lbXB0eUhUTUx8fCIiLG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfQ09OU1RSVUNUT1JfVE9LRU5fUFJJVkFURSk7bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5CUj1mdW5jdGlvbigpe3JldHVybiBtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLmNyZWF0ZVNhZmVIdG1sU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoIjxicj4iKX0oKTsKZ29vZy5odG1sLlNhZmVIdG1sPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWw7Z29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zPXt9O2dvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwuY3JlYXRlU2FmZUh0bWxTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU2NyaXB0RnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlU2NyaXB0X1NhZmVTY3JpcHQuY3JlYXRlU2FmZVNjcmlwdFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnNhZmVTdHlsZUZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS5jcmVhdGVTYWZlU3R5bGVTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlU3R5bGVTaGVldEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIG1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlU2hlZXRfU2FmZVN0eWxlU2hlZXQuY3JlYXRlU2FmZVN0eWxlU2hlZXRTZWN1cml0eVByaXZhdGVEb05vdEFjY2Vzc09yRWxzZShiKX07Cmdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlVXJsRnJvbVN0cmluZ0tub3duVG9TYXRpc2Z5VHlwZUNvbnRyYWN0PWZ1bmN0aW9uKGEsYil7Z29vZy5hc3NlcnRzLmFzc2VydFN0cmluZyhnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSksIm11c3QgcHJvdmlkZSBqdXN0aWZpY2F0aW9uIik7Z29vZy5hc3NlcnRzLmFzc2VydCghZ29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5Db25zdC51bndyYXAoYSkpLCJtdXN0IHByb3ZpZGUgbm9uLWVtcHR5IGp1c3RpZmljYXRpb24iKTtyZXR1cm4gZ29vZy5odG1sLlNhZmVVcmwuY3JlYXRlU2FmZVVybFNlY3VyaXR5UHJpdmF0ZURvTm90QWNjZXNzT3JFbHNlKGIpfTsKZ29vZy5odG1sLnVuY2hlY2tlZGNvbnZlcnNpb25zLnRydXN0ZWRSZXNvdXJjZVVybEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdD1mdW5jdGlvbihhLGIpe2dvb2cuYXNzZXJ0cy5hc3NlcnRTdHJpbmcoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpLCJtdXN0IHByb3ZpZGUganVzdGlmaWNhdGlvbiIpO2dvb2cuYXNzZXJ0cy5hc3NlcnQoIWdvb2cuc3RyaW5nLmludGVybmFsLmlzRW1wdHlPcldoaXRlc3BhY2UoZ29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGEpKSwibXVzdCBwcm92aWRlIG5vbi1lbXB0eSBqdXN0aWZpY2F0aW9uIik7cmV0dXJuIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwuY3JlYXRlVHJ1c3RlZFJlc291cmNlVXJsU2VjdXJpdHlQcml2YXRlRG9Ob3RBY2Nlc3NPckVsc2UoYil9O2dvb2cuZG9tLnNhZmU9e307Z29vZy5kb20uc2FmZS5JbnNlcnRBZGphY2VudEh0bWxQb3NpdGlvbj17QUZURVJCRUdJTjoiYWZ0ZXJiZWdpbiIsQUZURVJFTkQ6ImFmdGVyZW5kIixCRUZPUkVCRUdJTjoiYmVmb3JlYmVnaW4iLEJFRk9SRUVORDoiYmVmb3JlZW5kIn07Z29vZy5kb20uc2FmZS5pbnNlcnRBZGphY2VudEh0bWw9ZnVuY3Rpb24oYSxiLGMpe2EuaW5zZXJ0QWRqYWNlbnRIVE1MKGIsbW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChjKSl9O2dvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTXz17TUFUSDohMCxTQ1JJUFQ6ITAsU1RZTEU6ITAsU1ZHOiEwLFRFTVBMQVRFOiEwfTsKZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfPWdvb2cuZnVuY3Rpb25zLmNhY2hlUmV0dXJuVmFsdWUoZnVuY3Rpb24oKXtpZihnb29nLkRFQlVHJiYidW5kZWZpbmVkIj09PXR5cGVvZiBkb2N1bWVudClyZXR1cm4hMTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2EuYXBwZW5kQ2hpbGQoYik7aWYoZ29vZy5ERUJVRyYmIWEuZmlyc3RDaGlsZClyZXR1cm4hMTtiPWEuZmlyc3RDaGlsZC5maXJzdENoaWxkO2EuaW5uZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC5FTVBUWSk7cmV0dXJuIWIucGFyZW50RWxlbWVudH0pOwpnb29nLmRvbS5zYWZlLnVuc2FmZVNldElubmVySHRtbERvTm90VXNlT3JFbHNlPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5kb20uc2FmZS5pc0lubmVySHRtbENsZWFudXBSZWN1cnNpdmVfKCkpZm9yKDthLmxhc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmxhc3RDaGlsZCk7YS5pbm5lckhUTUw9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0SW5uZXJIdG1sPWZ1bmN0aW9uKGEsYil7aWYoZ29vZy5hc3NlcnRzLkVOQUJMRV9BU1NFUlRTJiZhLnRhZ05hbWUpe3ZhciBjPWEudGFnTmFtZS50b1VwcGVyQ2FzZSgpO2lmKGdvb2cuZG9tLnNhZmUuU0VUX0lOTkVSX0hUTUxfRElTQUxMT1dFRF9UQUdTX1tjXSl0aHJvdyBFcnJvcigiZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWwgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGNvbnRlbnQgb2YgIithLnRhZ05hbWUrIi4iKTt9Z29vZy5kb20uc2FmZS51bnNhZmVTZXRJbm5lckh0bWxEb05vdFVzZU9yRWxzZShhLGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbm5lckh0bWxGcm9tQ29uc3RhbnQ9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChhLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJDb25zdGFudCBIVE1MIHRvIGJlIGltbWVkaWF0ZWxseSB1c2VkLiIpLGdvb2cuc3RyaW5nLkNvbnN0LnVud3JhcChiKSkpfTtnb29nLmRvbS5zYWZlLnNldE91dGVySHRtbD1mdW5jdGlvbihhLGIpe2Eub3V0ZXJIVE1MPW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZUh0bWxfU2FmZUh0bWwudW53cmFwVHJ1c3RlZEhUTUwoYil9Owpnb29nLmRvbS5zYWZlLnNldEZvcm1FbGVtZW50QWN0aW9uPWZ1bmN0aW9uKGEsYil7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEZvcm1FbGVtZW50KGEpLmFjdGlvbj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuc2V0QnV0dG9uRm9ybUFjdGlvbj1mdW5jdGlvbihhLGIpe2I9YiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5TYWZlVXJsP2I6Z29vZy5odG1sLlNhZmVVcmwuc2FuaXRpemVBc3NlcnRVbmNoYW5nZWQoYik7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxCdXR0b25FbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRJbnB1dEZvcm1BY3Rpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSW5wdXRFbGVtZW50KGEpLmZvcm1BY3Rpb249Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldFN0eWxlPWZ1bmN0aW9uKGEsYil7YS5zdHlsZS5jc3NUZXh0PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVN0eWxlX1NhZmVTdHlsZS51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuZG9jdW1lbnRXcml0ZT1mdW5jdGlvbihhLGIpe2Eud3JpdGUobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSl9Owpnb29nLmRvbS5zYWZlLnNldEFuY2hvckhyZWY9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTEFuY2hvckVsZW1lbnQoYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmhyZWY9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEF1ZGlvU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxBdWRpb0VsZW1lbnQoYSk7aWYoIShiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmwpKXt2YXIgYz0vXmRhdGE6YXVkaW9cLy9pLnRlc3QoYik7Yj1nb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiLGMpfWEuc3JjPWdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0VmlkZW9TcmM9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTFZpZGVvRWxlbWVudChhKTtpZighKGIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybCkpe3ZhciBjPS9eZGF0YTp2aWRlb1wvL2kudGVzdChiKTtiPWdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIsYyl9YS5zcmM9Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpfTtnb29nLmRvbS5zYWZlLnNldEVtYmVkU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxFbWJlZEVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldEZyYW1lU3JjPWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxGcmFtZUVsZW1lbnQoYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXAoYil9Owpnb29nLmRvbS5zYWZlLnNldElmcmFtZVNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MSUZyYW1lRWxlbWVudChhKTthLnNyYz1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKX07Z29vZy5kb20uc2FmZS5zZXRJZnJhbWVTcmNkb2M9ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzSFRNTElGcmFtZUVsZW1lbnQoYSk7YS5zcmNkb2M9bW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKX07Cmdvb2cuZG9tLnNhZmUuc2V0TGlua0hyZWZBbmRSZWw9ZnVuY3Rpb24oYSxiLGMpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MTGlua0VsZW1lbnQoYSk7YS5yZWw9Yztnb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucyhjLCJzdHlsZXNoZWV0Iik/KGdvb2cuYXNzZXJ0cy5hc3NlcnQoYiBpbnN0YW5jZW9mIGdvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwsJ1VSTCBtdXN0IGJlIFRydXN0ZWRSZXNvdXJjZVVybCBiZWNhdXNlICJyZWwiIGNvbnRhaW5zICJzdHlsZXNoZWV0IicpLGEuaHJlZj1nb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsLnVud3JhcChiKSwoYj1nb29nLmRvbS5zYWZlLmdldFN0eWxlTm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpKSYmYS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixiKSk6YS5ocmVmPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuVHJ1c3RlZFJlc291cmNlVXJsP2dvb2cuaHRtbC5UcnVzdGVkUmVzb3VyY2VVcmwudW53cmFwKGIpOgpiIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Z29vZy5odG1sLlNhZmVVcmwudW53cmFwKGIpOmdvb2cuaHRtbC5TYWZlVXJsLnVud3JhcChnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKSl9O2dvb2cuZG9tLnNhZmUuc2V0T2JqZWN0RGF0YT1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MT2JqZWN0RWxlbWVudChhKTthLmRhdGE9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTtnb29nLmRvbS5zYWZlLnNldFNjcmlwdFNyYz1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNIVE1MU2NyaXB0RWxlbWVudChhKTtnb29nLmRvbS5zYWZlLnNldE5vbmNlRm9yU2NyaXB0RWxlbWVudF8oYSk7YS5zcmM9Z29vZy5odG1sLlRydXN0ZWRSZXNvdXJjZVVybC51bndyYXBUcnVzdGVkU2NyaXB0VVJMKGIpfTsKZ29vZy5kb20uc2FmZS5zZXRTY3JpcHRDb250ZW50PWZ1bmN0aW9uKGEsYil7Z29vZy5kb20uYXNzZXJ0cy5hc3NlcnRJc0hUTUxTY3JpcHRFbGVtZW50KGEpO2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50XyhhKTthLnRleHRDb250ZW50PW1vZHVsZSRjb250ZW50cyRnb29nJGh0bWwkU2FmZVNjcmlwdF9TYWZlU2NyaXB0LnVud3JhcFRydXN0ZWRTY3JpcHQoYil9O2dvb2cuZG9tLnNhZmUuc2V0Tm9uY2VGb3JTY3JpcHRFbGVtZW50Xz1mdW5jdGlvbihhKXtjb25zdCBiPWdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2UoYS5vd25lckRvY3VtZW50JiZhLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpO2ImJmEuc2V0QXR0cmlidXRlKCJub25jZSIsYil9Owpnb29nLmRvbS5zYWZlLnNldExvY2F0aW9uSHJlZj1mdW5jdGlvbihhLGIpe2dvb2cuZG9tLmFzc2VydHMuYXNzZXJ0SXNMb2NhdGlvbihhKTtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EuaHJlZj1nb29nLmh0bWwuU2FmZVVybC51bndyYXAoYil9O2dvb2cuZG9tLnNhZmUuYXNzaWduTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtnb29nLmRvbS5hc3NlcnRzLmFzc2VydElzTG9jYXRpb24oYSk7Yj1iIGluc3RhbmNlb2YgZ29vZy5odG1sLlNhZmVVcmw/Yjpnb29nLmh0bWwuU2FmZVVybC5zYW5pdGl6ZUFzc2VydFVuY2hhbmdlZChiKTthLmFzc2lnbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTsKZ29vZy5kb20uc2FmZS5yZXBsYWNlTG9jYXRpb249ZnVuY3Rpb24oYSxiKXtiPWIgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9iOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGIpO2EucmVwbGFjZShnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYikpfTtnb29nLmRvbS5zYWZlLm9wZW5JbldpbmRvdz1mdW5jdGlvbihhLGIsYyxkKXthPWEgaW5zdGFuY2VvZiBnb29nLmh0bWwuU2FmZVVybD9hOmdvb2cuaHRtbC5TYWZlVXJsLnNhbml0aXplQXNzZXJ0VW5jaGFuZ2VkKGEpO2I9Ynx8Z29vZy5nbG9iYWw7Yz1jIGluc3RhbmNlb2YgZ29vZy5zdHJpbmcuQ29uc3Q/Z29vZy5zdHJpbmcuQ29uc3QudW53cmFwKGMpOmN8fCIiO3JldHVybiB2b2lkIDAhPT1kP2Iub3Blbihnb29nLmh0bWwuU2FmZVVybC51bndyYXAoYSksYyxkKTpiLm9wZW4oZ29vZy5odG1sLlNhZmVVcmwudW53cmFwKGEpLGMpfTsKZ29vZy5kb20uc2FmZS5wYXJzZUZyb21TdHJpbmdIdG1sPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nKGEsYiwidGV4dC9odG1sIil9O2dvb2cuZG9tLnNhZmUucGFyc2VGcm9tU3RyaW5nPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5wYXJzZUZyb21TdHJpbmcobW9kdWxlJGNvbnRlbnRzJGdvb2ckaHRtbCRTYWZlSHRtbF9TYWZlSHRtbC51bndyYXBUcnVzdGVkSFRNTChiKSxjKX07Cmdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYj1mdW5jdGlvbihhKXtpZighL15pbWFnZVwvLiovZy50ZXN0KGEudHlwZSkpdGhyb3cgRXJyb3IoImdvb2cuZG9tLnNhZmUuY3JlYXRlSW1hZ2VGcm9tQmxvYiBvbmx5IGFjY2VwdHMgTUlNRSB0eXBlIGltYWdlLy4qLiIpO3ZhciBiPWdvb2cuZ2xvYmFsLlVSTC5jcmVhdGVPYmplY3RVUkwoYSk7YT1uZXcgZ29vZy5nbG9iYWwuSW1hZ2U7YS5vbmxvYWQ9ZnVuY3Rpb24oKXtnb29nLmdsb2JhbC5VUkwucmV2b2tlT2JqZWN0VVJMKGIpfTthLnNyYz1iO3JldHVybiBhfTtnb29nLmRvbS5zYWZlLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChtb2R1bGUkY29udGVudHMkZ29vZyRodG1sJFNhZmVIdG1sX1NhZmVIdG1sLnVud3JhcFRydXN0ZWRIVE1MKGIpKX07Cmdvb2cuZG9tLnNhZmUuZ2V0U2NyaXB0Tm9uY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGdvb2cuZG9tLnNhZmUuZ2V0Tm9uY2VfKCJzY3JpcHRbbm9uY2VdIixhKX07Z29vZy5kb20uc2FmZS5nZXRTdHlsZU5vbmNlPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLmRvbS5zYWZlLmdldE5vbmNlXygnc3R5bGVbbm9uY2VdLGxpbmtbcmVsPSJzdHlsZXNoZWV0Il1bbm9uY2VdJyxhKX07Z29vZy5kb20uc2FmZS5OT05DRV9QQVRURVJOXz0vXltcdysvXy1dK1s9XXswLDJ9JC87Z29vZy5kb20uc2FmZS5nZXROb25jZV89ZnVuY3Rpb24oYSxiKXtiPShifHxnb29nLmdsb2JhbCkuZG9jdW1lbnQ7cmV0dXJuIGIucXVlcnlTZWxlY3Rvcj8oYT1iLnF1ZXJ5U2VsZWN0b3IoYSkpJiYoYT1hLm5vbmNlfHxhLmdldEF0dHJpYnV0ZSgibm9uY2UiKSkmJmdvb2cuZG9tLnNhZmUuTk9OQ0VfUEFUVEVSTl8udGVzdChhKT9hOiIiOiIifTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HPSExO2dvb2cuc3RyaW5nLlVuaWNvZGU9e05CU1A6Ilx1MDBhMCIsWkVST19XSURUSF9TUEFDRToiXHUyMDBiIn07Z29vZy5zdHJpbmcuc3RhcnRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5zdGFydHNXaXRoO2dvb2cuc3RyaW5nLmVuZHNXaXRoPWdvb2cuc3RyaW5nLmludGVybmFsLmVuZHNXaXRoO2dvb2cuc3RyaW5nLmNhc2VJbnNlbnNpdGl2ZVN0YXJ0c1dpdGg9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlU3RhcnRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aD1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVFbmRzV2l0aDtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVFcXVhbHM9Z29vZy5zdHJpbmcuaW50ZXJuYWwuY2FzZUluc2Vuc2l0aXZlRXF1YWxzOwpnb29nLnN0cmluZy5zdWJzPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hLnNwbGl0KCIlcyIpO2xldCBkPSIiO2NvbnN0IGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2Zvcig7ZS5sZW5ndGgmJjE8Yy5sZW5ndGg7KWQrPWMuc2hpZnQoKStlLnNoaWZ0KCk7cmV0dXJuIGQrYy5qb2luKCIlcyIpfTtnb29nLnN0cmluZy5jb2xsYXBzZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rL2csIiAiKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9O2dvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2U9Z29vZy5zdHJpbmcuaW50ZXJuYWwuaXNFbXB0eU9yV2hpdGVzcGFjZTtnb29nLnN0cmluZy5pc0VtcHR5U3RyaW5nPWZ1bmN0aW9uKGEpe3JldHVybiAwPT1hLmxlbmd0aH07Z29vZy5zdHJpbmcuaXNFbXB0eT1nb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlOwpnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlU2FmZT1mdW5jdGlvbihhKXtyZXR1cm4gZ29vZy5zdHJpbmcuaXNFbXB0eU9yV2hpdGVzcGFjZShnb29nLnN0cmluZy5tYWtlU2FmZShhKSl9O2dvb2cuc3RyaW5nLmlzRW1wdHlTYWZlPWdvb2cuc3RyaW5nLmlzRW1wdHlPcldoaXRlc3BhY2VTYWZlO2dvb2cuc3RyaW5nLmlzQnJlYWtpbmdXaGl0ZXNwYWNlPWZ1bmN0aW9uKGEpe3JldHVybiEvW15cdFxuXHIgXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNBbHBoYT1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aXS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNOdW1lcmljPWZ1bmN0aW9uKGEpe3JldHVybiEvW14wLTldLy50ZXN0KGEpfTtnb29nLnN0cmluZy5pc0FscGhhTnVtZXJpYz1mdW5jdGlvbihhKXtyZXR1cm4hL1teYS16QS1aMC05XS8udGVzdChhKX07Z29vZy5zdHJpbmcuaXNTcGFjZT1mdW5jdGlvbihhKXtyZXR1cm4iICI9PWF9Owpnb29nLnN0cmluZy5pc1VuaWNvZGVDaGFyPWZ1bmN0aW9uKGEpe3JldHVybiAxPT1hLmxlbmd0aCYmIiAiPD1hJiYifiI+PWF8fCJcdTAwODAiPD1hJiYiXHVmZmZkIj49YX07Z29vZy5zdHJpbmcuc3RyaXBOZXdsaW5lcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXHJcbnxccnxcbikrL2csIiAiKX07Z29vZy5zdHJpbmcuY2Fub25pY2FsaXplTmV3bGluZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKFxyXG58XHJ8XG4pL2csIlxuIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVdoaXRlc3BhY2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXHhhMHxccy9nLCIgIil9O2dvb2cuc3RyaW5nLm5vcm1hbGl6ZVNwYWNlcz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9ceGEwfFsgXHRdKy9nLCIgIil9Owpnb29nLnN0cmluZy5jb2xsYXBzZUJyZWFraW5nU3BhY2VzPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1tcdFxyXG4gXSsvZywiICIpLnJlcGxhY2UoL15bXHRcclxuIF0rfFtcdFxyXG4gXSskL2csIiIpfTtnb29nLnN0cmluZy50cmltPWdvb2cuc3RyaW5nLmludGVybmFsLnRyaW07Z29vZy5zdHJpbmcudHJpbUxlZnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXltcc1x4YTBdKy8sIiIpfTtnb29nLnN0cmluZy50cmltUmlnaHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rJC8sIiIpfTtnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb21wYXJlPWdvb2cuc3RyaW5nLmludGVybmFsLmNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU7Cmdvb2cuc3RyaW5nLm51bWJlckF3YXJlQ29tcGFyZV89ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEpcmV0dXJuLTE7aWYoIWIpcmV0dXJuIDE7Y29uc3QgZD1hLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZT1iLnRvTG93ZXJDYXNlKCkubWF0Y2goYyksZj1NYXRoLm1pbihkLmxlbmd0aCxlLmxlbmd0aCk7Zm9yKGxldCBnPTA7ZzxmO2crKyl7Yz1kW2ddO2NvbnN0IGg9ZVtnXTtpZihjIT1oKXJldHVybiBhPXBhcnNlSW50KGMsMTApLCFpc05hTihhKSYmKGI9cGFyc2VJbnQoaCwxMCksIWlzTmFOKGIpJiZhLWIpP2EtYjpjPGg/LTE6MX1yZXR1cm4gZC5sZW5ndGghPWUubGVuZ3RoP2QubGVuZ3RoLWUubGVuZ3RoOmE8Yj8tMToxfTtnb29nLnN0cmluZy5pbnRBd2FyZUNvbXBhcmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcubnVtYmVyQXdhcmVDb21wYXJlXyhhLGIsL1xkK3xcRCsvZyl9Owpnb29nLnN0cmluZy5mbG9hdEF3YXJlQ29tcGFyZT1mdW5jdGlvbihhLGIpe3JldHVybiBnb29nLnN0cmluZy5udW1iZXJBd2FyZUNvbXBhcmVfKGEsYiwvXGQrfFwuXGQrfFxEKy9nKX07Z29vZy5zdHJpbmcubnVtZXJhdGVDb21wYXJlPWdvb2cuc3RyaW5nLmZsb2F0QXdhcmVDb21wYXJlO2dvb2cuc3RyaW5nLnVybEVuY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhhKSl9O2dvb2cuc3RyaW5nLnVybERlY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEucmVwbGFjZSgvXCsvZywiICIpKX07Z29vZy5zdHJpbmcubmV3TGluZVRvQnI9Z29vZy5zdHJpbmcuaW50ZXJuYWwubmV3TGluZVRvQnI7Cmdvb2cuc3RyaW5nLmh0bWxFc2NhcGU9ZnVuY3Rpb24oYSxiKXthPWdvb2cuc3RyaW5nLmludGVybmFsLmh0bWxFc2NhcGUoYSxiKTtnb29nLnN0cmluZy5ERVRFQ1RfRE9VQkxFX0VTQ0FQSU5HJiYoYT1hLnJlcGxhY2UoZ29vZy5zdHJpbmcuRV9SRV8sIiYjMTAxOyIpKTtyZXR1cm4gYX07Z29vZy5zdHJpbmcuRV9SRV89L2UvZztnb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzPWZ1bmN0aW9uKGEpe3JldHVybiBnb29nLnN0cmluZy5jb250YWlucyhhLCImIik/IWdvb2cuc3RyaW5nLkZPUkNFX05PTl9ET01fSFRNTF9VTkVTQ0FQSU5HJiYiZG9jdW1lbnQiaW4gZ29vZy5nbG9iYWw/Z29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXyhhKTpnb29nLnN0cmluZy51bmVzY2FwZVB1cmVYbWxFbnRpdGllc18oYSk6YX07Cmdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNXaXRoRG9jdW1lbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ29vZy5zdHJpbmcuY29udGFpbnMoYSwiJiIpP2dvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXNVc2luZ0RvbV8oYSxiKTphfTsKZ29vZy5zdHJpbmcudW5lc2NhcGVFbnRpdGllc1VzaW5nRG9tXz1mdW5jdGlvbihhLGIpe2NvbnN0IGM9eyImYW1wOyI6IiYiLCImbHQ7IjoiPCIsIiZndDsiOiI+IiwiJnF1b3Q7IjonIid9O2xldCBkO2Q9Yj9iLmNyZWF0ZUVsZW1lbnQoImRpdiIpOmdvb2cuZ2xvYmFsLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBhLnJlcGxhY2UoZ29vZy5zdHJpbmcuSFRNTF9FTlRJVFlfUEFUVEVSTl8sZnVuY3Rpb24oZSxmKXtsZXQgZz1jW2VdO2lmKGcpcmV0dXJuIGc7IiMiPT1mLmNoYXJBdCgwKSYmKGY9TnVtYmVyKCIwIitmLnNsaWNlKDEpKSxpc05hTihmKXx8KGc9U3RyaW5nLmZyb21DaGFyQ29kZShmKSkpO2d8fChnb29nLmRvbS5zYWZlLnNldElubmVySHRtbChkLGdvb2cuaHRtbC51bmNoZWNrZWRjb252ZXJzaW9ucy5zYWZlSHRtbEZyb21TdHJpbmdLbm93blRvU2F0aXNmeVR5cGVDb250cmFjdChnb29nLnN0cmluZy5Db25zdC5mcm9tKCJTaW5nbGUgSFRNTCBlbnRpdHkuIiksCmUrIiAiKSksZz1kLmZpcnN0Q2hpbGQubm9kZVZhbHVlLnNsaWNlKDAsLTEpKTtyZXR1cm4gY1tlXT1nfSl9O2dvb2cuc3RyaW5nLnVuZXNjYXBlUHVyZVhtbEVudGl0aWVzXz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8mKFteO10rKTsvZyxmdW5jdGlvbihiLGMpe3N3aXRjaChjKXtjYXNlICJhbXAiOnJldHVybiImIjtjYXNlICJsdCI6cmV0dXJuIjwiO2Nhc2UgImd0IjpyZXR1cm4iPiI7Y2FzZSAicXVvdCI6cmV0dXJuJyInO2RlZmF1bHQ6cmV0dXJuIiMiIT1jLmNoYXJBdCgwKXx8KGM9TnVtYmVyKCIwIitjLnNsaWNlKDEpKSxpc05hTihjKSk/YjpTdHJpbmcuZnJvbUNoYXJDb2RlKGMpfX0pfTtnb29nLnN0cmluZy5IVE1MX0VOVElUWV9QQVRURVJOXz0vJihbXjtcczwmXSspOz8vZztnb29nLnN0cmluZy53aGl0ZXNwYWNlRXNjYXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdvb2cuc3RyaW5nLm5ld0xpbmVUb0JyKGEucmVwbGFjZSgvICAvZywiICYjMTYwOyIpLGIpfTsKZ29vZy5zdHJpbmcucHJlc2VydmVTcGFjZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKF58W1xuIF0pIC9nLCIkMSIrZ29vZy5zdHJpbmcuVW5pY29kZS5OQlNQKX07Z29vZy5zdHJpbmcuc3RyaXBRdW90ZXM9ZnVuY3Rpb24oYSxiKXtjb25zdCBjPWIubGVuZ3RoO2ZvcihsZXQgZD0wO2Q8YztkKyspe2NvbnN0IGU9MT09Yz9iOmIuY2hhckF0KGQpO2lmKGEuY2hhckF0KDApPT1lJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09ZSlyZXR1cm4gYS5zdWJzdHJpbmcoMSxhLmxlbmd0aC0xKX1yZXR1cm4gYX07Z29vZy5zdHJpbmcudHJ1bmNhdGU9ZnVuY3Rpb24oYSxiLGMpe2MmJihhPWdvb2cuc3RyaW5nLnVuZXNjYXBlRW50aXRpZXMoYSkpO2EubGVuZ3RoPmImJihhPWEuc3Vic3RyaW5nKDAsYi0zKSsiLi4uIik7YyYmKGE9Z29vZy5zdHJpbmcuaHRtbEVzY2FwZShhKSk7cmV0dXJuIGF9Owpnb29nLnN0cmluZy50cnVuY2F0ZU1pZGRsZT1mdW5jdGlvbihhLGIsYyxkKXtjJiYoYT1nb29nLnN0cmluZy51bmVzY2FwZUVudGl0aWVzKGEpKTtpZihkJiZhLmxlbmd0aD5iKXtkPmImJihkPWIpO3ZhciBlPWEubGVuZ3RoLWQ7YT1hLnN1YnN0cmluZygwLGItZCkrIi4uLiIrYS5zdWJzdHJpbmcoZSl9ZWxzZSBhLmxlbmd0aD5iJiYoZD1NYXRoLmZsb29yKGIvMiksZT1hLmxlbmd0aC1kLGE9YS5zdWJzdHJpbmcoMCxkK2IlMikrIi4uLiIrYS5zdWJzdHJpbmcoZSkpO2MmJihhPWdvb2cuc3RyaW5nLmh0bWxFc2NhcGUoYSkpO3JldHVybiBhfTtnb29nLnN0cmluZy5zcGVjaWFsRXNjYXBlQ2hhcnNfPXsiXHgwMCI6IlxcMCIsIlxiIjoiXFxiIiwiXGYiOiJcXGYiLCJcbiI6IlxcbiIsIlxyIjoiXFxyIiwiXHQiOiJcXHQiLCJcdiI6IlxceDBCIiwnIic6J1xcIicsIlxcIjoiXFxcXCIsIjwiOiJcXHUwMDNDIn07Z29vZy5zdHJpbmcuanNFc2NhcGVDYWNoZV89eyInIjoiXFwnIn07Cmdvb2cuc3RyaW5nLnF1b3RlPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO2NvbnN0IGI9WyciJ107Zm9yKGxldCBjPTA7YzxhLmxlbmd0aDtjKyspe2NvbnN0IGQ9YS5jaGFyQXQoYyksZT1kLmNoYXJDb2RlQXQoMCk7YltjKzFdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bZF18fCgzMTxlJiYxMjc+ZT9kOmdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoZCkpfWIucHVzaCgnIicpO3JldHVybiBiLmpvaW4oIiIpfTtnb29nLnN0cmluZy5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24oYSl7Y29uc3QgYj1bXTtmb3IobGV0IGM9MDtjPGEubGVuZ3RoO2MrKyliW2NdPWdvb2cuc3RyaW5nLmVzY2FwZUNoYXIoYS5jaGFyQXQoYykpO3JldHVybiBiLmpvaW4oIiIpfTsKZ29vZy5zdHJpbmcuZXNjYXBlQ2hhcj1mdW5jdGlvbihhKXtpZihhIGluIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfKXJldHVybiBnb29nLnN0cmluZy5qc0VzY2FwZUNhY2hlX1thXTtpZihhIGluIGdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc18pcmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWdvb2cuc3RyaW5nLnNwZWNpYWxFc2NhcGVDaGFyc19bYV07bGV0IGI7Y29uc3QgYz1hLmNoYXJDb2RlQXQoMCk7aWYoMzE8YyYmMTI3PmMpYj1hO2Vsc2V7aWYoMjU2PmMpe2lmKGI9IlxceCIsMTY+Y3x8MjU2PGMpYis9IjAifWVsc2UgYj0iXFx1Iiw0MDk2PmMmJihiKz0iMCIpO2IrPWMudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9cmV0dXJuIGdvb2cuc3RyaW5nLmpzRXNjYXBlQ2FjaGVfW2FdPWJ9O2dvb2cuc3RyaW5nLmNvbnRhaW5zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbnRhaW5zOwpnb29nLnN0cmluZy5jYXNlSW5zZW5zaXRpdmVDb250YWlucz1nb29nLnN0cmluZy5pbnRlcm5hbC5jYXNlSW5zZW5zaXRpdmVDb250YWlucztnb29nLnN0cmluZy5jb3VudE9mPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEmJmI/YS5zcGxpdChiKS5sZW5ndGgtMTowfTtnb29nLnN0cmluZy5yZW1vdmVBdD1mdW5jdGlvbihhLGIsYyl7bGV0IGQ9YTswPD1iJiZiPGEubGVuZ3RoJiYwPGMmJihkPWEuc2xpY2UoMCxiKSthLnNsaWNlKGIrYykpO3JldHVybiBkfTtnb29nLnN0cmluZy5yZW1vdmU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5yZXBsYWNlKGIsIiIpfTtnb29nLnN0cmluZy5yZW1vdmVBbGw9ZnVuY3Rpb24oYSxiKXtiPW5ldyBSZWdFeHAoZ29vZy5zdHJpbmcucmVnRXhwRXNjYXBlKGIpLCJnIik7cmV0dXJuIGEucmVwbGFjZShiLCIiKX07Cmdvb2cuc3RyaW5nLnJlcGxhY2VBbGw9ZnVuY3Rpb24oYSxiLGMpe2I9bmV3IFJlZ0V4cChnb29nLnN0cmluZy5yZWdFeHBFc2NhcGUoYiksImciKTtyZXR1cm4gYS5yZXBsYWNlKGIsYy5yZXBsYWNlKC9cJC9nLCIkJCQkIikpfTtnb29nLnN0cmluZy5yZWdFeHBFc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oWy0oKVxbXF17fSs/Ki4kXF58LDojPCFcXF0pL2csIlxcJDEiKS5yZXBsYWNlKC9ceDA4L2csIlxceDA4Iil9O2dvb2cuc3RyaW5nLnJlcGVhdD1TdHJpbmcucHJvdG90eXBlLnJlcGVhdD9mdW5jdGlvbihhLGIpe3JldHVybiBhLnJlcGVhdChiKX06ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkoYisxKS5qb2luKGEpfTsKZ29vZy5zdHJpbmcucGFkTnVtYmVyPWZ1bmN0aW9uKGEsYixjKXtpZighTnVtYmVyLmlzRmluaXRlKGEpKXJldHVybiBTdHJpbmcoYSk7YT12b2lkIDAhPT1jP2EudG9GaXhlZChjKTpTdHJpbmcoYSk7Yz1hLmluZGV4T2YoIi4iKTstMT09PWMmJihjPWEubGVuZ3RoKTtjb25zdCBkPSItIj09PWFbMF0/Ii0iOiIiO2QmJihhPWEuc3Vic3RyaW5nKDEpKTtyZXR1cm4gZCtnb29nLnN0cmluZy5yZXBlYXQoIjAiLE1hdGgubWF4KDAsYi1jKSkrYX07Z29vZy5zdHJpbmcubWFrZVNhZmU9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6U3RyaW5nKGEpfTtnb29nLnN0cmluZy5nZXRSYW5kb21TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcigyMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDM2KStNYXRoLmFicyhNYXRoLmZsb29yKDIxNDc0ODM2NDgqTWF0aC5yYW5kb20oKSleZ29vZy5ub3coKSkudG9TdHJpbmcoMzYpfTsKZ29vZy5zdHJpbmcuY29tcGFyZVZlcnNpb25zPWdvb2cuc3RyaW5nLmludGVybmFsLmNvbXBhcmVWZXJzaW9ucztnb29nLnN0cmluZy5oYXNoQ29kZT1mdW5jdGlvbihhKXtsZXQgYj0wO2ZvcihsZXQgYz0wO2M8YS5sZW5ndGg7KytjKWI9MzEqYithLmNoYXJDb2RlQXQoYyk+Pj4wO3JldHVybiBifTtnb29nLnN0cmluZy51bmlxdWVTdHJpbmdDb3VudGVyXz0yMTQ3NDgzNjQ4Kk1hdGgucmFuZG9tKCl8MDtnb29nLnN0cmluZy5jcmVhdGVVbmlxdWVTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iZ29vZ18iK2dvb2cuc3RyaW5nLnVuaXF1ZVN0cmluZ0NvdW50ZXJfKyt9O2dvb2cuc3RyaW5nLnRvTnVtYmVyPWZ1bmN0aW9uKGEpe2NvbnN0IGI9TnVtYmVyKGEpO3JldHVybiAwPT1iJiZnb29nLnN0cmluZy5pc0VtcHR5T3JXaGl0ZXNwYWNlKGEpP05hTjpifTtnb29nLnN0cmluZy5pc0xvd2VyQ2FtZWxDYXNlPWZ1bmN0aW9uKGEpe3JldHVybi9eW2Etel0rKFtBLVpdW2Etel0qKSokLy50ZXN0KGEpfTsKZ29vZy5zdHJpbmcuaXNVcHBlckNhbWVsQ2FzZT1mdW5jdGlvbihhKXtyZXR1cm4vXihbQS1aXVthLXpdKikrJC8udGVzdChhKX07Z29vZy5zdHJpbmcudG9DYW1lbENhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC9cLShbYS16XSkvZyxmdW5jdGlvbihiLGMpe3JldHVybiBjLnRvVXBwZXJDYXNlKCl9KX07Z29vZy5zdHJpbmcudG9TZWxlY3RvckNhc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhKS5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCl9O2dvb2cuc3RyaW5nLnRvVGl0bGVDYXNlPWZ1bmN0aW9uKGEsYil7Yj0ic3RyaW5nIj09PXR5cGVvZiBiP2dvb2cuc3RyaW5nLnJlZ0V4cEVzY2FwZShiKToiXFxzIjtyZXR1cm4gYS5yZXBsYWNlKG5ldyBSZWdFeHAoIiheIisoYj8ifFsiK2IrIl0rIjoiIikrIikoW2Etel0pIiwiZyIpLGZ1bmN0aW9uKGMsZCxlKXtyZXR1cm4gZCtlLnRvVXBwZXJDYXNlKCl9KX07Cmdvb2cuc3RyaW5nLmNhcGl0YWxpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIFN0cmluZyhhLmNoYXJBdCgwKSkudG9VcHBlckNhc2UoKStTdHJpbmcoYS5zbGljZSgxKSkudG9Mb3dlckNhc2UoKX07Z29vZy5zdHJpbmcucGFyc2VJbnQ9ZnVuY3Rpb24oYSl7aXNGaW5pdGUoYSkmJihhPVN0cmluZyhhKSk7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT8vXlxzKi0/MHgvaS50ZXN0KGEpP3BhcnNlSW50KGEsMTYpOnBhcnNlSW50KGEsMTApOk5hTn07Z29vZy5zdHJpbmcuc3BsaXRMaW1pdD1mdW5jdGlvbihhLGIsYyl7YT1hLnNwbGl0KGIpO2NvbnN0IGQ9W107Zm9yKDswPGMmJmEubGVuZ3RoOylkLnB1c2goYS5zaGlmdCgpKSxjLS07YS5sZW5ndGgmJmQucHVzaChhLmpvaW4oYikpO3JldHVybiBkfTsKZ29vZy5zdHJpbmcubGFzdENvbXBvbmVudD1mdW5jdGlvbihhLGIpe2lmKGIpInN0cmluZyI9PXR5cGVvZiBiJiYoYj1bYl0pO2Vsc2UgcmV0dXJuIGE7bGV0IGM9LTE7Zm9yKGxldCBkPTA7ZDxiLmxlbmd0aDtkKyspe2lmKCIiPT1iW2RdKWNvbnRpbnVlO2NvbnN0IGU9YS5sYXN0SW5kZXhPZihiW2RdKTtlPmMmJihjPWUpfXJldHVybi0xPT1jP2E6YS5zbGljZShjKzEpfTsKZ29vZy5zdHJpbmcuZWRpdERpc3RhbmNlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1bXSxkPVtdO2lmKGE9PWIpcmV0dXJuIDA7aWYoIWEubGVuZ3RofHwhYi5sZW5ndGgpcmV0dXJuIE1hdGgubWF4KGEubGVuZ3RoLGIubGVuZ3RoKTtmb3IodmFyIGU9MDtlPGIubGVuZ3RoKzE7ZSsrKWNbZV09ZTtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtkWzBdPWUrMTtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKylkW2YrMV09TWF0aC5taW4oZFtmXSsxLGNbZisxXSsxLGNbZl0rTnVtYmVyKGFbZV0hPWJbZl0pKTtmb3IoZj0wO2Y8Yy5sZW5ndGg7ZisrKWNbZl09ZFtmXX1yZXR1cm4gZFtiLmxlbmd0aF19O2dvb2cuc3RyaW5nLnBhdGg9e307Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZT1mdW5jdGlvbihhKXtjb25zdCBiPWEubGFzdEluZGV4T2YoIi8iKSsxO3JldHVybiBhLnNsaWNlKGIpfTtnb29nLnN0cmluZy5wYXRoLmJhc2VuYW1lPWdvb2cuc3RyaW5nLnBhdGguYmFzZU5hbWU7Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lPWZ1bmN0aW9uKGEpe2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLyIpKzE7YT1hLnNsaWNlKDAsYik7L15cLyskLy50ZXN0KGEpfHwoYT1hLnJlcGxhY2UoL1wvKyQvLCIiKSk7cmV0dXJuIGF9O2dvb2cuc3RyaW5nLnBhdGguZXh0ZW5zaW9uPWZ1bmN0aW9uKGEpe2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKS5yZXBsYWNlKC9cLisvZywiLiIpO2NvbnN0IGI9YS5sYXN0SW5kZXhPZigiLiIpO3JldHVybiAwPj1iPyIiOmEuc2xpY2UoYisxKX07Cmdvb2cuc3RyaW5nLnBhdGguam9pbj1mdW5jdGlvbihhKXtsZXQgYj1hcmd1bWVudHNbMF07Zm9yKGxldCBjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7Y29uc3QgZD1hcmd1bWVudHNbY107Yj1nb29nLnN0cmluZy5zdGFydHNXaXRoKGQsIi8iKT9kOiIiPT1ifHxnb29nLnN0cmluZy5lbmRzV2l0aChiLCIvIik/YitkOmIrKCIvIitkKX1yZXR1cm4gYn07Cmdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aD1mdW5jdGlvbihhKXtpZigiIj09YSlyZXR1cm4iLiI7bGV0IGI9IiI7Z29vZy5zdHJpbmcuc3RhcnRzV2l0aChhLCIvIikmJihiPSIvIixnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vIikmJiFnb29nLnN0cmluZy5zdGFydHNXaXRoKGEsIi8vLyIpJiYoYj0iLy8iKSk7YT1hLnNwbGl0KCIvIik7Y29uc3QgYz1bXTtmb3IobGV0IGQ9MDtkPGEubGVuZ3RoO2QrKyl7Y29uc3QgZT1hW2RdOyIiIT1lJiYiLiIhPWUmJigiLi4iIT1lfHwhYiYmIWMubGVuZ3RofHwiLi4iPT1tb2R1bGUkY29udGVudHMkZ29vZyRhcnJheV9wZWVrKGMpP2MucHVzaChlKTpjLnBvcCgpKX1yZXR1cm4gYitjLmpvaW4oIi8iKXx8Ii4ifTtnb29nLnN0cmluZy5wYXRoLnNwbGl0PWZ1bmN0aW9uKGEpe2NvbnN0IGI9Z29vZy5zdHJpbmcucGF0aC5kaXJuYW1lKGEpO2E9Z29vZy5zdHJpbmcucGF0aC5iYXNlTmFtZShhKTtyZXR1cm5bYixhXX07Y29uc3QgREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ITE7ZnVuY3Rpb24gYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4vXlwvL2cudGVzdChhKT9hOmAvJHthfWB9ZnVuY3Rpb24gcmVtb3ZlTGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShhKXtyZXR1cm4gYS5yZXBsYWNlKC9eXC8vZywiIil9ZnVuY3Rpb24gc2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7cmV0dXJuKGEmKFdBU0lfUklHSFRfRkRfUkVBRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c3xXQVNJX1JJR0hUX0ZEX1JFQURESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpKSE9PWdvb2cuZ2xvYmFsLkJpZ0ludCgwKX0KZnVuY3Rpb24gcGVyZm9ybWFuY2VOb3dQb2x5JCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHBlcmZvcm1hbmNlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe2NvbnN0IGE9RGF0ZS5ub3coKTtyZXR1cm4gRGF0ZS5ub3coKS1hfXJldHVybiBwZXJmb3JtYW5jZS5ub3coKX1mdW5jdGlvbiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSl7dmFyIGI9YS5yZWR1Y2UoKGQsZSk9PmQrZS5sZW5ndGgsMCk7aWYoMCE9PWEubGVuZ3RoKXtiPW5ldyBVaW50OEFycmF5KGIpO3ZhciBjPTA7Zm9yKGNvbnN0IGQgb2YgYSliLnNldChkLGMpLGMrPWQubGVuZ3RoO3JldHVybiBifX0KY29uc3QgV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2k9ZnVuY3Rpb24oe30pe3RoaXMuZmQ9QXJyYXkuZnJvbSh7bGVuZ3RoOjR9KTt0aGlzLmZkWzBdPXtmZDowLHBhdGg6Ii9kZXYvc3RkaW4iLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6W10sb3BlbjohMX07dGhpcy5mZFsxXT17ZmQ6MSxwYXRoOiIvZGV2L3N0ZG91dCIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmZkWzJdPXtmZDoyLHBhdGg6Ii9kZXYvc3RkZXJyIixzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltdLG9wZW46ITF9O3RoaXMuZmRbM109e2ZkOjMscGF0aDoiLyIsc2Vla1Bvczpnb29nLmdsb2JhbC5CaWdJbnQoMCksYnVmZmVyczpbXSxvcGVuOiExfTt0aGlzLmdldE1lbW9yeT10aGlzLmdldE1lbW9yeS5iaW5kKHRoaXMpO3RoaXMuQ1BVVElNRV9TVEFSVD0wfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKGEpe3RoaXMuQ1BVVElNRV9TVEFSVD1wZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCk7YS5leHBvcnRzLl9zdGFydCgpfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZ2V0SW1wb3J0cz1mdW5jdGlvbihhKXtjb25zdCBiPXt9O2E9V2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMoYSk7Zm9yKGNvbnN0IGMgb2YgYSkiZnVuY3Rpb24iPT09Yy5raW5kJiZjLm1vZHVsZS5zdGFydHNXaXRoKCJ3YXNpXyIpJiYoIm9iamVjdCIhPT10eXBlb2YgYltjLm1vZHVsZV0mJihiW2MubW9kdWxlXT17fSksYltjLm1vZHVsZV1bYy5uYW1lXT10aGlzW2MubmFtZV0uYmluZCh0aGlzKSk7cmV0dXJuIGJ9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2V0TWVtb3J5PWZ1bmN0aW9uKGEpe3RoaXMubWVtb3J5PWF9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5nZXRNZW1vcnk9ZnVuY3Rpb24oKXt0aGlzLnZpZXcmJnRoaXMudmlldy5idWZmZXImJnRoaXMudmlldy5idWZmZXIuYnl0ZUxlbmd0aHx8KHRoaXMudmlldz1uZXcgRGF0YVZpZXcodGhpcy5tZW1vcnkuYnVmZmVyKSk7cmV0dXJuIHRoaXMudmlld307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLm1zVG9Ocz1mdW5jdGlvbihhKXtjb25zdCBiPU1hdGgudHJ1bmMoYSk7YT1nb29nLmdsb2JhbC5CaWdJbnQoTWF0aC5yb3VuZCgxRTYqKGEtYikpKTtyZXR1cm4gZ29vZy5nbG9iYWwuQmlnSW50KGIpKmdvb2cuZ2xvYmFsLkJpZ0ludCgxRTYpK2F9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUubm93PWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIFdBU0lfQ0xPQ0tfTU9OT1RPTklDJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiBNYXRoLmZsb29yKHBlcmZvcm1hbmNlTm93UG9seSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKSk7Y2FzZSBXQVNJX0NMT0NLX1JFQUxUSU1FJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnJldHVybiB0aGlzLm1zVG9OcyhEYXRlLm5vdygpKTtjYXNlIFdBU0lfQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOmNhc2UgV0FTSV9DTE9DS19USFJFQURfQ1BVVElNRV9JRCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpyZXR1cm4gTWF0aC5mbG9vcihwZXJmb3JtYW5jZU5vd1BvbHkkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCktdGhpcy5DUFVUSU1FX1NUQVJUKTsKZGVmYXVsdDpyZXR1cm4gMH19O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5hcmdzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmFyZ3Nfc2l6ZXNfZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJhcmdzX3NpemVzX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfcmVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiYXJnc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuY2xvY2tfdGltZV9nZXQ9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiY2xvY2tfdGltZV9nZXQiLGEsYixjLGFyZ3VtZW50cyk7Y29uc3QgZD10aGlzLmdldE1lbW9yeSgpLGU9dGhpcy5ub3coYSk7ZC5zZXRCaWdVaW50NjQoYyxnb29nLmdsb2JhbC5CaWdJbnQoZSksITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmVudmlyb25fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJlbnZpcm9uX2dldCIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5lbnZpcm9uX3NpemVzX2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZW52aXJvbl9zaXplc19nZXQiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FkdmlzZT1mdW5jdGlvbihhLGIsYyxkKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FkdmlzZSIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2FsbG9jYXRlPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2FsbG9jYXRlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9jbG9zZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Nsb3NlIixhLGFyZ3VtZW50cyk7dGhpcy5mZFthXSYmKHRoaXMuZmRbYV0ub3Blbj0hMSk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9kYXRhc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2RhdGFzeW5jIixhLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmRzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmRzdGF0X2dldCIsYSxiLGFyZ3VtZW50cyk7Y29uc3QgYz10aGlzLmdldE1lbW9yeSgpO2Muc2V0VWludDgoYis0LFdBU0lfRklMRVRZUEVfUkVHVUxBUl9GSUxFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKTtjLnNldFVpbnQxNihiKzIsMCwhMCk7Yy5zZXRVaW50MTYoYis0LDAsITApO2Muc2V0QmlnVWludDY0KGIrOCxnb29nLmdsb2JhbC5CaWdJbnQoUklHSFRTX1JFR1VMQVJfRklMRV9CQVNFJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzKSwhMCk7Yy5zZXRCaWdVaW50NjQoYis4KzgsZ29vZy5nbG9iYWwuQmlnSW50KFJJR0hUU19SRUdVTEFSX0ZJTEVfSU5IRVJJVElORyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50cyksCiEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfZmxhZ3M9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfZmxhZ3MiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2Zkc3RhdF9zZXRfcmlnaHRzPWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX2Zkc3RhdF9zZXRfcmlnaHRzIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X2dldD1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfZ2V0IixhLGIsYXJndW1lbnRzKTtsZXQgYz0wO3RoaXMuZmRbYV0mJihjPXRoaXMuZmRbYV0uYnVmZmVycy5yZWR1Y2UoZnVuY3Rpb24oZSxmKXtyZXR1cm4gZSsobnVsbD09Zj92b2lkIDA6Zi5ieXRlTGVuZ3RoKT9udWxsPT1mP3ZvaWQgMDpmLmJ5dGVMZW5ndGg6MH0sMCkpO2NvbnN0IGQ9dGhpcy5nZXRNZW1vcnkoKTtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLGdvb2cuZ2xvYmFsLkJpZ0ludChhKSwhMCk7Yis9ODtkLnNldFVpbnQ4KGIsV0FTSV9GSUxFVFlQRV9SRUdVTEFSX0ZJTEUkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2IrPTg7ZC5zZXRCaWdVaW50NjQoYiwKZ29vZy5nbG9iYWwuQmlnSW50KDEpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsZ29vZy5nbG9iYWwuQmlnSW50KGMpLCEwKTtiKz04O2Quc2V0QmlnVWludDY0KGIsdGhpcy5tc1RvTnModGhpcy5DUFVUSU1FX1NUQVJUKSwhMCk7Yis9ODtkLnNldEJpZ1VpbnQ2NChiLHRoaXMubXNUb05zKHRoaXMuQ1BVVElNRV9TVEFSVCksITApO2Quc2V0QmlnVWludDY0KGIrOCx0aGlzLm1zVG9Ocyh0aGlzLkNQVVRJTUVfU1RBUlQpLCEwKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX2ZpbGVzdGF0X3NldF9zaXplPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9maWxlc3RhdF9zZXRfc2l6ZSIsYSxiLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfZmlsZXN0YXRfc2V0X3RpbWVzPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9wcmVhZD1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlYWQiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3ByZXN0YXRfZGlyX25hbWU9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcHJlc3RhdF9kaXJfbmFtZSIsYSxiLGMsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0mJiF0aGlzLmZkW2EtMV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7KHtwYXRoOmN9PXRoaXMuZmRbYV0pO2E9dGhpcy5nZXRNZW1vcnkoKTtjPWVuY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5lbmNvZGUoYyk7KG5ldyBVaW50OEFycmF5KGEuYnVmZmVyKSkuc2V0KGMsYik7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcHJlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3ByZXN0YXRfZ2V0IixhLGIsdGhpcy5mZFthXSk7aWYoIXRoaXMuZmRbYV0pcmV0dXJuIFdBU0lfRUJBREYkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7dmFyIHtwYXRoOmN9PXRoaXMuZmRbYV07YT10aGlzLmdldE1lbW9yeSgpO2M9ZW5jb2RlciQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzLmVuY29kZShjKTthLnNldFVpbnQ4KGIsV0FTSV9QUkVPUEVOVFlQRV9ESVIkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHMpO2Euc2V0VWludDMyKGIrNCxjLmJ5dGVMZW5ndGgsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3B3cml0ZT1mdW5jdGlvbihhLGIsYyxkLGUpe2NvbnNvbGUubG9nKCJmZF9wd3JpdGUiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3JlYWQ9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9yZWFkIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmZkW2FdJiZ0aGlzLmZkW2FdLmJ1ZmZlcnM7dmFyIGY9ZS5yZWR1Y2UoKG4scCk9Pm4rcC5sZW5ndGgsMCk7Y29uc3QgZz10aGlzLmdldE1lbW9yeSgpO2lmKGUmJjAhPT1lLmxlbmd0aCl7dmFyIGg9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyksaz0wLGw9ITE7aWYoaD49ZilyZXR1cm4gaz1nLmdldFVpbnQzMihiLCEwKSxnLnNldFVpbnQ4KGssIlx4MDAiKSxnLnNldFVpbnQzMihkLDAsITApLFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHM7Zm9yKGY9MDtmPGM7ZisrKXt2YXIgbT1iKzgqZjtjb25zdCBuPWcuZ2V0VWludDMyKG0sITApO209Zy5nZXRVaW50MzIobSsKNCwhMCk7bHx8KGsrPW0sQXJyYXkuZnJvbSh7bGVuZ3RoOm19LChwLHEpPT5xKS5yZWR1Y2UoKHAscSk9PntpZihsKXJldHVybiBwO2NvbnN0IFt1LHRdPXA7bGV0IHY9cD0wLEE9ITEseT0wLHI7aWYoMD09PXEpZm9yKDshQTspcj1lW3BdP2VbcF0uYnl0ZUxlbmd0aDowLHk8PWgmJnIreT5oPyhBPSEwLHY9aC15KTooeSs9cixwKz0xKTtlbHNlIHA9dSx2PXQ7ZVtwXT8oZy5zZXRVaW50OChuK3EsZVtwXVt2XSksdisxPj1lW3BdLmJ5dGVMZW5ndGg/KHA9dSsxLHY9MCk6dis9MSk6KGcuc2V0VWludDgobitxLCJceDAwIiksaCs9cSxsPSEwKTtyZXR1cm5bcCx2XX0sWzAsMF0pLGx8fChoKz1tKSl9dGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludChoKTtnLnNldFVpbnQzMihkLGssITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfWNvbnNvbGUuZXJyb3IoIlJlYWRpbmcgbm9uIGV4aXN0ZW50IGZpbGUiLGEsdGhpcy5mZFthXSl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfcmVhZGRpcj1mdW5jdGlvbihhLGIsYyxkLGUpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVhZGRpciIsYSxiLGMsZCxlLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF9yZW51bWJlcj1mdW5jdGlvbihhLGIpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfcmVudW1iZXIiLGEsYixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3NlZWs9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF9zZWVrIixhLGIsYyxkLGFyZ3VtZW50cyk7Y29uc3QgZT10aGlzLmdldE1lbW9yeSgpO3N3aXRjaChjKXtjYXNlIFdBU0lfV0hFTkNFX0NVUiQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czp2YXIgZjt0aGlzLmZkW2FdLnNlZWtQb3M9KG51bGwhPShmPXRoaXMuZmRbYV0uc2Vla1Bvcyk/Zjpnb29nLmdsb2JhbC5CaWdJbnQoMCkpK2dvb2cuZ2xvYmFsLkJpZ0ludChiKTticmVhaztjYXNlIFdBU0lfV0hFTkNFX0VORCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50czpmPSh0aGlzLmZkW2FdLmJ1ZmZlcnN8fFtdKS5yZWR1Y2UoKGcsaCk9PmcraC5sZW5ndGgsMCk7dGhpcy5mZFthXS5zZWVrUG9zPUJpZ0ludChmKStCaWdJbnQoYik7YnJlYWs7CmNhc2UgV0FTSV9XSEVOQ0VfU0VUJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOnRoaXMuZmRbYV0uc2Vla1Bvcz1CaWdJbnQoYil9ZS5zZXRCaWdVaW50NjQoZCx0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuZmRfc3luYz1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coImZkX3N5bmMiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5mZF90ZWxsPWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJmZF90ZWxsIixhLGIsYXJndW1lbnRzKTtjb25zdCBjPXRoaXMuZ2V0TWVtb3J5KCk7dGhpcy5mZFthXS5zZWVrUG9zfHwodGhpcy5mZFthXS5zZWVrUG9zPWdvb2cuZ2xvYmFsLkJpZ0ludCgwKSk7Yy5zZXRCaWdVaW50NjQoYix0aGlzLmZkW2FdLnNlZWtQb3MsITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZkX3dyaXRlPWZ1bmN0aW9uKGEsYixjLGQpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygiZmRfd3JpdGUiLHtmZDphLGlvdnM6Yixpb3ZzTGVuZ3RoOmMsbndyaXR0ZW46ZH0pO2NvbnN0IGU9dGhpcy5nZXRNZW1vcnkoKTt0aGlzLmZkW2FdLmJ1ZmZlcnM9dGhpcy5mZFthXS5idWZmZXJzfHxbXTt0aGlzLmZkW2FdLmJ1ZmZlcnM9MDx0aGlzLmZkW2FdLmJ1ZmZlcnMubGVuZ3RoP1tjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kodGhpcy5mZFthXS5idWZmZXJzKV06dGhpcy5mZFthXS5idWZmZXJzO2xldCBmPTA7Zm9yKGxldCBrPTA7azxjO2srKyl7dmFyIGc9Yis4KmssaD1lLmdldFVpbnQzMihnLCEwKTtnPWUuZ2V0VWludDMyKGcrNCwhMCk7Zis9ZztoPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGgsZyk7aWYodGhpcy5mZFthXS5idWZmZXJzWzBdJiYKdGhpcy5mZFthXS5zZWVrUG9zPHRoaXMuZmRbYV0uYnVmZmVyc1swXS5sZW5ndGgpe2NvbnN0IGw9TnVtYmVyKHRoaXMuZmRbYV0uc2Vla1Bvcyk7aC5zbGljZSgwLGcpLmZvckVhY2goKG0sbik9Pnt0aGlzLmZkW2FdLmJ1ZmZlcnNbMF1bbCtuXT1tfSl9ZWxzZSB0aGlzLmZkW2FdLmJ1ZmZlcnMucHVzaChoLnNsaWNlKDAsZykpfXRoaXMuZmRbYV0uc2Vla1Bvcys9Z29vZy5nbG9iYWwuQmlnSW50KGYpO2Uuc2V0VWludDMyKGQsZiwhMCk7WzEsMl0uaW5jbHVkZXMoYSkmJmNvbnNvbGUubG9nKGRlY29kZXIkJG1vZHVsZSRzcmMkdXRpbHMkdGV4dF9lbmNvZGVycy5kZWNvZGUoY29uY2F0VWludDhBcnJheXMkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHRoaXMuZmRbYV0uYnVmZmVycykpKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2NyZWF0ZV9kaXJlY3Rvcnk9ZnVuY3Rpb24oYSxiLGMpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9jcmVhdGVfZGlyZWN0b3J5IixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9maWxlc3RhdF9nZXQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfZ2V0IixhLGIsYyxkLGUsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2ZpbGVzdGF0X3NldF90aW1lcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfZmlsZXN0YXRfc2V0X3RpbWVzIixhLGIsYyxkLGUsZixnLGFyZ3VtZW50cyk7cmV0dXJuIFdBU0lfRVNVQ0NFU1MkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSRjb25zdGFudHN9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX2xpbms9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX2xpbmsiLGEsYixjLGQsZSxmLGcsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5wYXRoX29wZW49ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoLGspe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygicGF0aF9vcGVuIixhLGIsYyxkLGUsZixnLGgsayxhcmd1bWVudHMpO2NvbnN0IGw9dGhpcy5nZXRNZW1vcnkoKTt2YXIgbT0odGhpcy5mZFthXXx8e3BhdGg6Ii8ifSkucGF0aCxuPW5ldyBVaW50OEFycmF5KGwuYnVmZmVyLGMsZCk7bj1kZWNvZGVyJCRtb2R1bGUkc3JjJHV0aWxzJHRleHRfZW5jb2RlcnMuZGVjb2RlKG4pO2NvbnN0IHA9YXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGdvb2cuc3RyaW5nLnBhdGguam9pbigzPT09YT8iIjptLG4pKSk7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCI7OyBvcGVuaW5nIHBhdGgiLApwLCJ3aXRoUkVhZGVyIixzaG91bGRPcGVuUmVhZGVyJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShmKSk7aWYocC5zdGFydHNXaXRoKCIvLi4iKXx8Ii8uXyI9PT1wfHwiLy5BcHBsZURvdWJsZSI9PT1wKXJldHVybiBXQVNJX0VCQURGJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzOyhtPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZChxPT5xLnBhdGg9PT1wJiZBcnJheS5pc0FycmF5KHEuYnVmZmVycykpKT9uPW0uZmQ6KG49dGhpcy5mZC5sZW5ndGgsdGhpcy5mZFtuXT17ZmQ6bn0pO3RoaXMuZmRbbl09ey4uLnRoaXMuZmRbbl0scGF0aDpwLHR5cGU6ImZpbGUiLHNlZWtQb3M6Z29vZy5nbG9iYWwuQmlnSW50KDApLGJ1ZmZlcnM6bT90aGlzLmZkW25dLmJ1ZmZlcnM6W10sb3BlbjohMH07c2hvdWxkT3BlblJlYWRlciQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZikmJkRFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic2hvdWxkIG9wZW4gYSByZWFkIGhhbmRsZSBmb3IiLApwKTtsLnNldFVpbnQzMihrLG4sITApO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZWFkbGluaz1mdW5jdGlvbihhLGIsYyxkLGUsZil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3JlYWRsaW5rIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9yZW1vdmVfZGlyZWN0b3J5PWZ1bmN0aW9uKGEsYixjKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVtb3ZlX2RpcmVjdG9yeSIsYSxiLGMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfcmVuYW1lPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInBhdGhfcmVuYW1lIixhLGIsYyxkLGUsZixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucGF0aF9zeW1saW5rPWZ1bmN0aW9uKGEsYixjLGQsZSl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3N5bWxpbmsiLGEsYixjLGQsZSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnBhdGhfdW5saW5rX2ZpbGU9ZnVuY3Rpb24oYSxiLGMpezM8YSYmREVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwYXRoX3VubGlua19maWxlIixhLGIsYyxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucG9sbF9vbmVvZmY9ZnVuY3Rpb24oYSxiLGMsZCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJwb2xsX29uZW9mZiIsYSxiLGMsZCxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnByb2NfZXhpdD1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfZXhpdCIsYSxhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUucHJvY19yYWlzZT1mdW5jdGlvbihhKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInByb2NfcmFpc2UiLGEsYXJndW1lbnRzKTtyZXR1cm4gV0FTSV9FU1VDQ0VTUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yYW5kb21fZ2V0PWZ1bmN0aW9uKGEsYil7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJyYW5kb21fZ2V0IixhLGIpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTtXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuc2NoZWRfeWllbGQ9ZnVuY3Rpb24oKXtERUJVR19XQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSYmY29uc29sZS5sb2coInNjaGVkX3lpZWxkIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VTVUNDRVNTJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kY29uc3RhbnRzfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfcmVjdj1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19yZWN2Iixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnNvY2tfc2VuZD1mdW5jdGlvbigpe0RFQlVHX1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpJiZjb25zb2xlLmxvZygic29ja19zZW5kIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5zb2NrX3NodXRkb3duPWZ1bmN0aW9uKCl7REVCVUdfV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kmJmNvbnNvbGUubG9nKCJzb2NrX3NodXRkb3duIixhcmd1bWVudHMpO3JldHVybiBXQVNJX0VOT1NZUyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJGNvbnN0YW50c307V0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLmZpbmRCdWZmZXJzPWZ1bmN0aW9uKGEpe2NvbnN0IGI9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDpjfSk9PmM9PT1hKTtyZXR1cm5bYiYmYi5idWZmZXJzLGIuZmRdfTsKV0FTSSQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2kucHJvdG90eXBlLnJlYWRkaXI9ZnVuY3Rpb24oYSl7Y29uc3QgYj0oYXNzZXJ0TGVhZGluZ1NsYXNoJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaSgoMCxnb29nLnN0cmluZy5wYXRoLm5vcm1hbGl6ZVBhdGgpKGEpKSsiLyIpLnJlcGxhY2UoIi8vIiwiLyIpLGM9W107T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5mb3JFYWNoKCh7cGF0aDpkfSk9PiEvXC8vZy50ZXN0KGQucmVwbGFjZShiLCIiKSkmJmMucHVzaChkKSk7cmV0dXJuIGMubWFwKGQ9PnJlbW92ZUxlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koZC5yZXBsYWNlKGIsIiIpKSkuZmlsdGVyKGQ9PiEhZCl9OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUud3JpdGVGaWxlPWZ1bmN0aW9uKGEsYil7Y29uc3QgYz1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpO2E9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoO2NvbnN0IGQ9T2JqZWN0LnZhbHVlcyh0aGlzLmZkKS5maW5kKCh7cGF0aDplfSk9PmU9PT1jKTt0aGlzLmZkW2FdPXtmZDphLHBhdGg6YyxzZWVrUG9zOmdvb2cuZ2xvYmFsLkJpZ0ludCgwKSxidWZmZXJzOltiXX07ZCYmZGVsZXRlIHRoaXMuZmRbZF19OwpXQVNJJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5wcm90b3R5cGUuYXBwZW5kRmlsZT1mdW5jdGlvbihhLGIpe3ZhciBjPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSk7W2NdPXRoaXMuZmluZEJ1ZmZlcnMoYyk7Yz9jLnB1c2goYik6Y29uc29sZS5lcnJvcihgQ2FuJ3QgYXBwZW5kIHRvIG5vbi1leGlzdGluZyBmaWxlICR7YX1gKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkRmlsZT1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksW2MsZF09dGhpcy5maW5kQnVmZmVycyhiKTt0aGlzLmZkW2RdJiZ0aGlzLmZkW2RdLm9wZW4mJmNvbnNvbGUud2FybihgcmVhZEZpbGU6IGZpbGUgJHthfSBoYXNuJ3QgYmVlbiBjbG9zZWQgeWV0IWApO2lmKGMpcmV0dXJuIGNvbmNhdFVpbnQ4QXJyYXlzJCRtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaShjKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5yZWFkU3RkT3V0PWZ1bmN0aW9uKCl7Y29uc3QgYT1PYmplY3QudmFsdWVzKHRoaXMuZmRbMF0pO3JldHVybiBjb25jYXRVaW50OEFycmF5cyQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koYSYmYS5idWZmZXJzfHxbXSl9O1dBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS51bmxpbms9ZnVuY3Rpb24oYSl7Y29uc3QgYj1hc3NlcnRMZWFkaW5nU2xhc2gkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKCgwLGdvb2cuc3RyaW5nLnBhdGgubm9ybWFsaXplUGF0aCkoYSkpOyhhPU9iamVjdC52YWx1ZXModGhpcy5mZCkuZmluZCgoe3BhdGg6Y30pPT5jPT09YikpP2RlbGV0ZSB0aGlzLmZkW2FdOmNvbnNvbGUuZXJyb3IoYFdoaWxlIHRyeWluZyB0byB1bmxpbmsgJHtifSwgcGF0aCBub3QgZm91bmRgKX07CldBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpLnByb3RvdHlwZS5ta2Rpcj1mdW5jdGlvbihhKXtjb25zdCBiPWFzc2VydExlYWRpbmdTbGFzaCQkbW9kdWxlJHNyYyRmaWxlc3lzdGVtJHdhc2koKDAsZ29vZy5zdHJpbmcucGF0aC5ub3JtYWxpemVQYXRoKShhKSksYz1bXTtPYmplY3QudmFsdWVzKHRoaXMuZmQpLmZvckVhY2goKHtwYXRoOmR9KT0+ZC5zdGFydHNXaXRoKGIpJiZjLnB1c2goZCkpOzA8Yy5sZW5ndGg/Y29uc29sZS53YXJuKGBta2RpcjogcGF0aCAke2F9IGFscmVhZHkgZXhpc3RzYCk6KGE9T2JqZWN0LmtleXModGhpcy5mZCkubGVuZ3RoLHRoaXMuZmRbYV09e2ZkOmEscGF0aDpifSl9O3ZhciBtb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaT17fTttb2R1bGUkc3JjJGZpbGVzeXN0ZW0kd2FzaS5XQVNJPVdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpO2Z1bmN0aW9uIGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYSl7Zm9yKDswPGEubGVuZ3RoOylhLnBvcCgpfXZhciBtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5PXt9O21vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkuY2xlYXJBcnJheT1jbGVhckFycmF5JCRtb2R1bGUkc3JjJHV0aWxzJGNsZWFyX2FycmF5O3ZhciBtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9e2RlZmF1bHQ6e319O21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0Ll9fZXNNb2R1bGU9ITA7bW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQuTG9nZ2VyRmFjdG9yeT1tb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHM9dm9pZCAwO21vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVscz17bG9nX3JhaXNlX2Vycm9yOjEsbG9nX3dpdGhfd2FybmluZ3M6Mix0cmFjZTozLGRlYnVnOjQsaW5mbzo1LHdhcm46NixlcnJvcjo3LGRpc2FibGU6OH07CnZhciBMb2dnZXJGYWN0b3J5JCRtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7aWYodm9pZCAwPT09YiYmKGI9ImxvZ193aXRoX3dhcm5pbmdzIiksdm9pZCAwPT09YyYmKGM9bnVsbCksdGhpcy5sb2dMZXZlbD1iLCFtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbYl0pdGhyb3cgRXJyb3IoIkludmFsaWQgbG9nIGxldmVsICIrYisiIGFsbG93ZWQ6ICIrSlNPTi5zdHJpbmdpZnkobW9kdWxlJG5vZGVfbW9kdWxlcyRsaW5lc19sb2dnZXIkbGliJGluZGV4LmRlZmF1bHQubG9nTGV2ZWxzKSk7dGhpcy5tb2NrQ29uc29sZT1jfHxjb25zb2xlfXJldHVybiBhLnByb3RvdHlwZS5kdW1teT1mdW5jdGlvbigpe30sYS5wcm90b3R5cGUuc2V0TG9nV2FybmluZ3M9ZnVuY3Rpb24oYil7dGhpcy5sb2dMZXZlbD1ifSxhLnByb3RvdHlwZS5nZXRMb2dXYXJuaW5ncz0KZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2dMZXZlbH0sYS5wcm90b3R5cGUuZ2V0U2luZ2xlTG9nZ2VyQ29sb3I9ZnVuY3Rpb24oYixjLGQpe3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGMpLGQpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXI9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLmdldFJhbmRvbUNvbG9yKGIpO3JldHVybiB0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsdGhpcy5nZXRDb2xvclN0eWxlKGQpLGMpfSxhLnByb3RvdHlwZS5nZXRTaW5nbGVMb2dnZXJTdHlsZT1mdW5jdGlvbihiLGMsZCxlKXt2YXIgZj10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT0ibG9nX3dpdGhfd2FybmluZ3MiKSxmdW5jdGlvbigpe2Zvcih2YXIgZz1bXSxoPTA7aDxhcmd1bWVudHMubGVuZ3RoO2grKylnW2hdPWFyZ3VtZW50c1toXTtpZihtb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5sb2dMZXZlbHNbZi5sb2dMZXZlbF0+Cm1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleC5kZWZhdWx0LmxvZ0xldmVsc1tlXSlyZXR1cm4gZi5kdW1teTtnPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGcpO2g9Zy5zaGlmdCgpLnNwbGl0KCJ7fSIpO2Zvcih2YXIgaz1bZi5tb2NrQ29uc29sZSwiJWMiK2IsY10sbD0wO2w8aC5sZW5ndGg7bCsrKWsucHVzaChoW2xdKSx2b2lkIDAhPT1nW2xdJiZrLnB1c2goZ1tsXSk7aWYoaC5sZW5ndGgtMSE9PWcubGVuZ3RoKWlmKCJsb2dfd2l0aF93YXJuaW5ncyI9PT1mLmxvZ0xldmVsKWYubW9ja0NvbnNvbGUuZXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7ZWxzZSBpZigibG9nX3JhaXNlX2Vycm9yIj09PWYubG9nTGV2ZWwpdGhyb3cgRXJyb3IoIk1pc3NNYXRjaCBhbW91bnQgb2YgYXJndW1lbnRzIik7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmFwcGx5KGQsayl9fSxhLnByb3RvdHlwZS5nZXRMb2dnZXJDb2xvcj1mdW5jdGlvbihiLApjKXtyZXR1cm4gdGhpcy5nZXRMb2dnZXJTdHlsZShiLHRoaXMuZ2V0Q29sb3JTdHlsZShjKSl9LGEucHJvdG90eXBlLmdldENvbG9yU3R5bGU9ZnVuY3Rpb24oYil7cmV0dXJuImNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZC1jb2xvcjogIitiKyI7IHBhZGRpbmc6IDJweCA2cHg7IGJvcmRlci1yYWRpdXM6IDJweDsgZm9udC1zaXplOiAxMHB4In0sYS5nZXRIYXNoPWZ1bmN0aW9uKGIsYyl7dm9pZCAwPT09YyYmKGM9MCk7dmFyIGQ9MzczNTkyODU1OV5jO2NePTExMDM1NDc5OTE7Zm9yKHZhciBlPTAsZjtlPGIubGVuZ3RoO2UrKylmPWIuY2hhckNvZGVBdChlKSxkPU1hdGguaW11bChkXmYsMjY1NDQzNTc2MSksYz1NYXRoLmltdWwoY15mLDE1OTczMzQ2NzcpO3JldHVybiBkPU1hdGguaW11bChkXmQ+Pj4xNiwyMjQ2ODIyNTA3KV5NYXRoLmltdWwoY15jPj4+MTMsMzI2NjQ4OTkwOSksNDI5NDk2NzI5NiooMjA5NzE1MSYoTWF0aC5pbXVsKGNeYz4+PjE2LDIyNDY4MjI1MDcpXk1hdGguaW11bChkXgpkPj4+MTMsMzI2NjQ4OTkwOSkpKSsoZD4+PjApfSxhLnByb3RvdHlwZS5nZXRSYW5kb21Db2xvcj1mdW5jdGlvbihiKXt2b2lkIDA9PT1iJiYoYj0iIik7Yj1hLmdldEhhc2goYik7Zm9yKHZhciBjPSIjIixkPTA7Mz5kO2QrKyljKz0oIjAwIisoOCsoYj4+NypkJjEyNykpLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC0yKTtyZXR1cm4gY30sYS5wcm90b3R5cGUuZ2V0TG9nZ2VyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmdldExvZ2dlckNvbG9yKGIsdGhpcy5nZXRSYW5kb21Db2xvcihiKSl9LGEucHJvdG90eXBlLmdldExvZ2dlclN0eWxlPWZ1bmN0aW9uKGIsYyl7cmV0dXJue3RyYWNlOnRoaXMuZ2V0U2luZ2xlTG9nZ2VyU3R5bGUoYixjLHRoaXMubW9ja0NvbnNvbGUudHJhY2UsInRyYWNlIiksZGVidWc6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5kZWJ1ZywiZGVidWciKSxsb2c6dGhpcy5nZXRTaW5nbGVMb2dnZXJTdHlsZShiLGMsdGhpcy5tb2NrQ29uc29sZS5sb2csCiJpbmZvIiksd2Fybjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLndhcm4sIndhcm4iKSxlcnJvcjp0aGlzLmdldFNpbmdsZUxvZ2dlclN0eWxlKGIsYyx0aGlzLm1vY2tDb25zb2xlLmVycm9yLCJlcnJvciIpfX0sYX0oKTttb2R1bGUkbm9kZV9tb2R1bGVzJGxpbmVzX2xvZ2dlciRsaWIkaW5kZXguZGVmYXVsdC5Mb2dnZXJGYWN0b3J5PUxvZ2dlckZhY3RvcnkkJG1vZHVsZSRub2RlX21vZHVsZXMkbGluZXNfbG9nZ2VyJGxpYiRpbmRleDtsZXQgbG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1NBQldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nVkFOV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5NYWluJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dPbGRTcG5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTUE5NYWluU2luZ2xlJCRtb2R1bGUkc3JjJGxvZ2dlcixsb2dTaW5nbGV0aHJlYWRXb3JrbGV0TWFpbiQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIsbG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyLGxvZ01pZGlSZXF1ZXN0JCRtb2R1bGUkc3JjJGxvZ2dlcjsKY29uc3QgaXNQcm9kJCRtb2R1bGUkc3JjJGxvZ2dlcj0xO2xvZ1dvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTQUJXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O2xvZ1ZBTldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nT2xkU3BuV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dJbmRleCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nU1BOTWFpblNpbmdsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307CmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcj1hPT5iPT57fTtsb2dDb21tb25VdGlscyQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e307bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyPWE9PmI9Pnt9O3ZhciAkanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI9YT0+Yj0+e30sbW9kdWxlJHNyYyRsb2dnZXI9e307bW9kdWxlJHNyYyRsb2dnZXIuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nQ29tbW9uVXRpbHM9bG9nQ29tbW9uVXRpbHMkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ0luZGV4PWxvZ0luZGV4JCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nTWlkaVJlcXVlc3Q9bG9nTWlkaVJlcXVlc3QkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ09sZFNwbk1haW49bG9nT2xkU3BuTWFpbiQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nT2xkU3BuV29ya2VyPWxvZ09sZFNwbldvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nU0FCTWFpbj1sb2dTQUJNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTQUJXb3JrZXI9bG9nU0FCV29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dTUE5NYWluU2luZ2xlPWxvZ1NQTk1haW5TaW5nbGUkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluPWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRNYWluJCRtb2R1bGUkc3JjJGxvZ2dlcjsKbW9kdWxlJHNyYyRsb2dnZXIubG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlcj1sb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcjttb2R1bGUkc3JjJGxvZ2dlci5sb2dWQU5NYWluPWxvZ1ZBTk1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1ZBTldvcmtlcj1sb2dWQU5Xb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dhc21Nb2R1bGU9bG9nV2FzbU1vZHVsZSQkbW9kdWxlJHNyYyRsb2dnZXI7bW9kdWxlJHNyYyRsb2dnZXIubG9nV29ya2xldE1haW49bG9nV29ya2xldE1haW4kJG1vZHVsZSRzcmMkbG9nZ2VyO21vZHVsZSRzcmMkbG9nZ2VyLmxvZ1dvcmtsZXRXb3JrZXI9bG9nV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXI7Y29uc3QgQ29tcHJlc3Npb25NZXRob2QkJG1vZHVsZSRzcmMkemxpYiR6bGliPXtERUZMQVRFOjgsUkVTRVJWRUQ6MTV9O3ZhciBtb2R1bGUkc3JjJHpsaWIkemxpYj17fTttb2R1bGUkc3JjJHpsaWIkemxpYi5Db21wcmVzc2lvbk1ldGhvZD1Db21wcmVzc2lvbk1ldGhvZCQkbW9kdWxlJHNyYyR6bGliJHpsaWI7LyoKIHpsaWIuanMgMjAxMiAtIGltYXlhIFsgaHR0cHM6Ly9naXRodWIuY29tL2ltYXlhL3psaWIuanMgXSBUaGUgTUlUIExpY2Vuc2UgKi8KZnVuY3Rpb24gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl7Y29uc3QgYj1hLmxlbmd0aDtsZXQgYz0wLGQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGUsZixnLGg7bGV0IGssbDtmb3Ioaz0wO2s8YjsrK2spYVtrXT5jJiYoYz1hW2tdKSxhW2tdPGQmJihkPWFba10pO2NvbnN0IG09MTw8YyxuPW5ldyBVaW50MzJBcnJheShtKTtlPTE7Zj0wO2ZvcihnPTI7ZTw9Yzspe2ZvcihrPTA7azxiOysraylpZihhW2tdPT09ZSl7aD0wO3ZhciBwPWY7Zm9yKGw9MDtsPGU7KytsKWg9aDw8MXxwJjEscD4+PTE7cD1lPDwxNnxrO2ZvcihsPWg7bDxtO2wrPWcpbltsXT1wOysrZn0rK2U7Zjw8PTE7Zzw8PTF9cmV0dXJuW24sYyxkXX12YXIgbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW49e307bW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4uSHVmZm1hbj1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbjtjb25zdCBaTElCX1JBV19JTkZMQVRFX0JVRkZFUl9TSVpFJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT0zMjc2ODsKZnVuY3Rpb24gUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUoYSxiKXt0aGlzLmJsb2Nrcz1bXTt0aGlzLmJ1ZmZlclNpemU9WkxJQl9SQVdfSU5GTEFURV9CVUZGRVJfU0laRSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGU7dGhpcy5iaXRzYnVmbGVuPXRoaXMuYml0c2J1Zj10aGlzLmlwPXRoaXMudG90YWxwb3M9MDt0aGlzLmlucHV0PW5ldyBVaW50OEFycmF5KGEpO3RoaXMuYmZpbmFsPSExO3RoaXMuYnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFO3RoaXMucmVzaXplPSExO2lmKGJ8fCEoYj17fSkpYi5pbmRleCYmKHRoaXMuaXA9Yi5pbmRleCksYi5idWZmZXJTaXplJiYodGhpcy5idWZmZXJTaXplPWIuYnVmZmVyU2l6ZSksYi5idWZmZXJUeXBlJiYodGhpcy5idWZmZXJUeXBlPWIuYnVmZmVyVHlwZSksYi5yZXNpemUmJih0aGlzLnJlc2l6ZT1iLnJlc2l6ZSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMub3A9ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoK3RoaXMuYnVmZmVyU2l6ZStSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5vcD0wO3RoaXMub3V0cHV0PW5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyU2l6ZSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGU9e0JMT0NLOjAsQURBUFRJVkU6MX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5kZWNvbXByZXNzPWZ1bmN0aW9uKCl7Zm9yKDshdGhpcy5iZmluYWw7KXRoaXMucGFyc2VCbG9jaygpO3N3aXRjaCh0aGlzLmJ1ZmZlclR5cGUpe2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5CTE9DSzpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJCbG9jaygpO2Nhc2UgUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuQnVmZmVyVHlwZS5BREFQVElWRTpyZXR1cm4gdGhpcy5jb25jYXRCdWZmZXJEeW5hbWljKCk7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aD0zMjc2ODtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhDb3B5TGVuZ3RoPTI1ODsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50MTZBcnJheShhKX0oWzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMjU4LDI1OF0pO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkxlbmd0aEV4dHJhVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGEpfShbMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwLDAsMF0pOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0Q29kZVRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVWludDE2QXJyYXkoYSl9KFsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzddKTtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSl9KFswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXSk7ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkTGl0ZXJhbExlbmd0aFRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBhfShmdW5jdGlvbigpe2NvbnN0IGE9bmV3IFVpbnQ4QXJyYXkoMjg4KTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09MTQzPj1iPzg6MjU1Pj1iPzk6Mjc5Pj1iPzc6ODtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpO1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkZpeGVkRGlzdGFuY2VUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gYX0oZnVuY3Rpb24oKXtjb25zdCBhPW5ldyBVaW50OEFycmF5KDMwKTtsZXQgYixjO2I9MDtmb3IoYz1hLmxlbmd0aDtiPGM7KytiKWFbYl09NTtyZXR1cm4gSHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYSl9KCkpOwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucGFyc2VCbG9jaz1mdW5jdGlvbigpe2xldCBhPXRoaXMucmVhZEJpdHMoMyk7YSYxJiYodGhpcy5iZmluYWw9ITApO2E+Pj49MTtzd2l0Y2goYSl7Y2FzZSAwOnRoaXMucGFyc2VVbmNvbXByZXNzZWRCbG9jaygpO2JyZWFrO2Nhc2UgMTp0aGlzLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2soKTticmVhaztjYXNlIDI6dGhpcy5wYXJzZUR5bmFtaWNIdWZmbWFuQmxvY2soKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJ1bmtub3duIEJUWVBFOiAiK2EpO319OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUucmVhZEJpdHM9ZnVuY3Rpb24oYSl7bGV0IGI9dGhpcy5iaXRzYnVmLGM9dGhpcy5iaXRzYnVmbGVuO2NvbnN0IGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO2lmKGUrKGEtYys3Pj4zKT49ZC5sZW5ndGgpdGhyb3cgRXJyb3IoImlucHV0IGJ1ZmZlciBpcyBicm9rZW4iKTtmb3IoO2M8YTspYnw9ZFtlKytdPDxjLGMrPTg7dGhpcy5iaXRzYnVmPWI+Pj5hO3RoaXMuYml0c2J1Zmxlbj1jLWE7dGhpcy5pcD1lO3JldHVybiBiJigxPDxhKS0xfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnJlYWRDb2RlQnlUYWJsZT1mdW5jdGlvbihhKXtsZXQgYj10aGlzLmJpdHNidWYsYz10aGlzLmJpdHNidWZsZW47dmFyIGQ9dGhpcy5pbnB1dDtsZXQgZT10aGlzLmlwO3ZhciBmPWQubGVuZ3RoO2NvbnN0IGc9YVswXTtmb3IoYT1hWzFdO2M8YSYmIShlPj1mKTspYnw9ZFtlKytdPDxjLGMrPTg7ZD1nW2ImKDE8PGEpLTFdO2Y9ZD4+PjE2O2lmKGY+Yyl0aHJvdyBFcnJvcigiaW52YWxpZCBjb2RlIGxlbmd0aDogIitmKTt0aGlzLmJpdHNidWY9Yj4+Zjt0aGlzLmJpdHNidWZsZW49Yy1mO3RoaXMuaXA9ZTtyZXR1cm4gZCY2NTUzNX07ClJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5wYXJzZVVuY29tcHJlc3NlZEJsb2NrPWZ1bmN0aW9uKCl7Y29uc3QgYT10aGlzLmlucHV0O2xldCBiPXRoaXMuaXAsYz10aGlzLm91dHB1dCxkPXRoaXMub3A7dmFyIGU9YS5sZW5ndGg7bGV0IGY7Y29uc3QgZz1jLmxlbmd0aDt0aGlzLmJpdHNidWZsZW49dGhpcy5iaXRzYnVmPTA7aWYoYisxPj1lKXRocm93IEVycm9yKCJpbnZhbGlkIHVuY29tcHJlc3NlZCBibG9jayBoZWFkZXI6IExFTiIpO2Y9YVtiKytdfGFbYisrXTw8ODtpZihiKzE+PWUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogTkxFTiIpO2U9YVtiKytdfGFbYisrXTw8ODtpZihmPT09fmUpdGhyb3cgRXJyb3IoImludmFsaWQgdW5jb21wcmVzc2VkIGJsb2NrIGhlYWRlcjogbGVuZ3RoIHZlcmlmeSIpO2lmKGIrZj5hLmxlbmd0aCl0aHJvdyBFcnJvcigiaW5wdXQgYnVmZmVyIGlzIGJyb2tlbiIpOwpzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6Zm9yKDtkK2Y+Yy5sZW5ndGg7KWU9Zy1kLGYtPWUsYy5zZXQoYS5zdWJhcnJheShiLGIrZSksZCksZCs9ZSxiKz1lLHRoaXMub3A9ZCxjPXRoaXMuZXhwYW5kQnVmZmVyQmxvY2soKSxkPXRoaXMub3A7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOmZvcig7ZCtmPmMubGVuZ3RoOyljPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoe2ZpeFJhdGlvOjJ9KTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJpbnZhbGlkIGluZmxhdGUgbW9kZSIpO31jLnNldChhLnN1YmFycmF5KGIsYitmKSxkKTt0aGlzLmlwPWIrZjt0aGlzLm9wPWQrZjt0aGlzLm91dHB1dD1jfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRml4ZWRIdWZmbWFuQmxvY2s9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5idWZmZXJUeXBlKXtjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQURBUFRJVkU6dGhpcy5kZWNvZGVIdWZmbWFuQWRhcHRpdmUoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTticmVhaztjYXNlIFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkJ1ZmZlclR5cGUuQkxPQ0s6dGhpcy5kZWNvZGVIdWZmbWFuQmxvY2soUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWRMaXRlcmFsTGVuZ3RoVGFibGUsUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRml4ZWREaXN0YW5jZVRhYmxlKTsKYnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLnBhcnNlRHluYW1pY0h1ZmZtYW5CbG9jaz1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZEJpdHMoNSkrMjU3LGI9dGhpcy5yZWFkQml0cyg1KSsxLGM9dGhpcy5yZWFkQml0cyg0KSs0LGQ9bmV3IFVpbnQ4QXJyYXkoUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuT3JkZXIubGVuZ3RoKTtsZXQgZTtmb3IoZT0wO2U8YzsrK2UpZFtSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5PcmRlcltlXV09dGhpcy5yZWFkQml0cygzKTtkPUh1ZmZtYW4kJG1vZHVsZSRzcmMkemxpYiRodWZmbWFuKGQpO2M9bmV3IFVpbnQ4QXJyYXkoYStiKTtlPTA7Zm9yKGI9YStiO2U8Yjspe3ZhciBmPXRoaXMucmVhZENvZGVCeVRhYmxlKGQpO3N3aXRjaChmKXtjYXNlIDE2OmZvcihmPTMrdGhpcy5yZWFkQml0cygyKTtmLS07KWNbZSsrXT1nO2JyZWFrO2Nhc2UgMTc6Zm9yKGY9CjMrdGhpcy5yZWFkQml0cygzKTtmLS07KWNbZSsrXT0wO3ZhciBnPTA7YnJlYWs7Y2FzZSAxODpmb3IoZj0xMSt0aGlzLnJlYWRCaXRzKDcpO2YtLTspY1tlKytdPTA7Zz0wO2JyZWFrO2RlZmF1bHQ6Zz1jW2UrK109Zn19Zz1IdWZmbWFuJCRtb2R1bGUkc3JjJHpsaWIkaHVmZm1hbihjLnN1YmFycmF5KDAsYSkpO2E9SHVmZm1hbiQkbW9kdWxlJHNyYyR6bGliJGh1ZmZtYW4oYy5zdWJhcnJheShhKSk7c3dpdGNoKHRoaXMuYnVmZmVyVHlwZSl7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkFEQVBUSVZFOnRoaXMuZGVjb2RlSHVmZm1hbkFkYXB0aXZlKGcsYSk7YnJlYWs7Y2FzZSBSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlLkJMT0NLOnRoaXMuZGVjb2RlSHVmZm1hbkJsb2NrKGcsYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW52YWxpZCBpbmZsYXRlIG1vZGUiKTt9fTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5CbG9jaz1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2NvbnN0IGU9Yy5sZW5ndGgtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4Q29weUxlbmd0aDt2YXIgZjtsZXQgZyxoO2NvbnN0IGs9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoQ29kZVRhYmxlLGw9UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTGVuZ3RoRXh0cmFUYWJsZSxtPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RDb2RlVGFibGUsbj1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5EaXN0RXh0cmFUYWJsZTtmb3IoOzI1NiE9PShmPXRoaXMucmVhZENvZGVCeVRhYmxlKGEpKTspaWYoMjU2PmYpZD49CmUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKSxjW2QrK109ZjtlbHNlIGZvcihmLT0yNTcsaD1rW2ZdLDA8bFtmXSYmKGgrPXRoaXMucmVhZEJpdHMobFtmXSkpLGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYiksZz1tW2ZdLDA8bltmXSYmKGcrPXRoaXMucmVhZEJpdHMobltmXSkpLGQ+PWUmJih0aGlzLm9wPWQsYz10aGlzLmV4cGFuZEJ1ZmZlckJsb2NrKCksZD10aGlzLm9wKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmRlY29kZUh1ZmZtYW5BZGFwdGl2ZT1mdW5jdGlvbihhLGIpe2xldCBjPXRoaXMub3V0cHV0LGQ9dGhpcy5vcDt0aGlzLmN1cnJlbnRMaXRsZW5UYWJsZT1hO2xldCBlPWMubGVuZ3RoO3ZhciBmO2xldCBnLGg7Y29uc3Qgaz1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhDb2RlVGFibGUsbD1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5MZW5ndGhFeHRyYVRhYmxlLG09UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuRGlzdENvZGVUYWJsZSxuPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLkRpc3RFeHRyYVRhYmxlO2Zvcig7MjU2IT09KGY9dGhpcy5yZWFkQ29kZUJ5VGFibGUoYSkpOylpZigyNTY+ZilkPj1lJiYoYz10aGlzLmV4cGFuZEJ1ZmZlckFkYXB0aXZlKCksZT1jLmxlbmd0aCksY1tkKytdPQpmO2Vsc2UgZm9yKGYtPTI1NyxoPWtbZl0sMDxsW2ZdJiYoaCs9dGhpcy5yZWFkQml0cyhsW2ZdKSksZj10aGlzLnJlYWRDb2RlQnlUYWJsZShiKSxnPW1bZl0sMDxuW2ZdJiYoZys9dGhpcy5yZWFkQml0cyhuW2ZdKSksZCtoPmUmJihjPXRoaXMuZXhwYW5kQnVmZmVyQWRhcHRpdmUoKSxlPWMubGVuZ3RoKTtoLS07KWNbZF09Y1tkKystZ107Zm9yKDs4PD10aGlzLmJpdHNidWZsZW47KXRoaXMuYml0c2J1Zmxlbi09OCx0aGlzLmlwLS07dGhpcy5vcD1kfTsKUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckJsb2NrPWZ1bmN0aW9uKGEpe2E9bmV3IFVpbnQ4QXJyYXkodGhpcy5vcC1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCk7Y29uc3QgYj10aGlzLm9wLVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLGM9dGhpcy5vdXRwdXQ7YS5zZXQoYy5zdWJhcnJheShSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5NYXhCYWNrd2FyZExlbmd0aCxhLmxlbmd0aCkpO3RoaXMuYmxvY2tzLnB1c2goYSk7dGhpcy50b3RhbHBvcys9YS5sZW5ndGg7Yy5zZXQoYy5zdWJhcnJheShiLGIrUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTt0aGlzLm9wPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoOwpyZXR1cm4gY307UmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUucHJvdG90eXBlLmV4cGFuZEJ1ZmZlckFkYXB0aXZlPWZ1bmN0aW9uKGEpe2xldCBiPU1hdGgudHJ1bmModGhpcy5pbnB1dC5sZW5ndGgvdGhpcy5pcCsxKTtjb25zdCBjPXRoaXMuaW5wdXQsZD10aGlzLm91dHB1dDthJiYoIm51bWJlciI9PT10eXBlb2YgYS5maXhSYXRpbyYmKGI9YS5maXhSYXRpbyksIm51bWJlciI9PT10eXBlb2YgYS5hZGRSYXRpbyYmKGIrPWEuYWRkUmF0aW8pKTsyPmI/KGE9KGMubGVuZ3RoLXRoaXMuaXApL3RoaXMuY3VycmVudExpdGxlblRhYmxlWzJdLGE9TWF0aC50cnVuYyhhLzIqMjU4KSxhPWE8ZC5sZW5ndGg/ZC5sZW5ndGgrYTpkLmxlbmd0aDw8MSk6YT1kLmxlbmd0aCpiO2E9bmV3IFVpbnQ4QXJyYXkoYSk7YS5zZXQoZCk7cmV0dXJuIHRoaXMub3V0cHV0PWF9OwpSYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5wcm90b3R5cGUuY29uY2F0QnVmZmVyQmxvY2s9ZnVuY3Rpb24oKXtsZXQgYT0wO2NvbnN0IGI9dGhpcy5vdXRwdXQsYz10aGlzLmJsb2NrcztsZXQgZDtjb25zdCBlPW5ldyBVaW50OEFycmF5KHRoaXMudG90YWxwb3MrKHRoaXMub3AtUmF3SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJHJhd2luZmxhdGUuTWF4QmFja3dhcmRMZW5ndGgpKTtsZXQgZixnLGgsaztpZigwPT09Yy5sZW5ndGgpcmV0dXJuIHRoaXMub3V0cHV0LnN1YmFycmF5KFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoLHRoaXMub3ApO2Y9MDtmb3IoZz1jLmxlbmd0aDtmPGc7KytmKWZvcihkPWNbZl0saD0wLGs9ZC5sZW5ndGg7aDxrOysraCllW2ErK109ZFtoXTtmPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLk1heEJhY2t3YXJkTGVuZ3RoO2ZvcihnPXRoaXMub3A7ZjwKZzsrK2YpZVthKytdPWJbZl07dGhpcy5ibG9ja3M9W107cmV0dXJuIHRoaXMuYnVmZmVyPWV9O1Jhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlLnByb3RvdHlwZS5jb25jYXRCdWZmZXJEeW5hbWljPWZ1bmN0aW9uKCl7bGV0IGE7Y29uc3QgYj10aGlzLm9wO3RoaXMucmVzaXplPyhhPW5ldyBVaW50OEFycmF5KGIpLGEuc2V0KHRoaXMub3V0cHV0LnN1YmFycmF5KDAsYikpKTphPXRoaXMub3V0cHV0LnN1YmFycmF5KDAsYik7cmV0dXJuIHRoaXMuYnVmZmVyPWF9O3ZhciBtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5SYXdJbmZsYXRlPVJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlO2Z1bmN0aW9uIFV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsKCl7fVV0aWwkJG1vZHVsZSRzcmMkemxpYiR1dGlsLnN0cmluZ1RvQnl0ZUFycmF5PWZ1bmN0aW9uKGEpe2E9Wy4uLmFdO2xldCBiLGM7Yj0wO2ZvcihjPWEubGVuZ3RoO2I8YztiKyspYVtiXT0oYVtiXS5jaGFyUG9pbnRBdCgwKSYyNTUpPj4+MDtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW2FdKX07dmFyIG1vZHVsZSRzcmMkemxpYiR1dGlsPXt9O21vZHVsZSRzcmMkemxpYiR1dGlsLlV0aWw9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWw7ZnVuY3Rpb24gQWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYSl7InN0cmluZyI9PT10eXBlb2YgYSYmKGE9VXRpbCQkbW9kdWxlJHNyYyR6bGliJHV0aWwuc3RyaW5nVG9CeXRlQXJyYXkoYSkpO3JldHVybiBBZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGUoMSxhKX1BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi51cGRhdGU9ZnVuY3Rpb24oYSxiKXtsZXQgYz1hJjY1NTM1O2E9YT4+PjE2JjY1NTM1O2xldCBkPWIubGVuZ3RoLGUsZj0wO2Zvcig7MDxkOyl7ZT1kPkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj9BZGxlcjMyJCRtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5PcHRpbWl6YXRpb25QYXJhbWV0ZXI6ZDtkLT1lO2RvIGMrPWJbZisrXSxhKz1jO3doaWxlKC0tZSk7YyU9NjU1MjE7YSU9NjU1MjF9cmV0dXJuKGE8PDE2fGMpPj4+MH07CkFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyLk9wdGltaXphdGlvblBhcmFtZXRlcj0xMDI0O3ZhciBtb2R1bGUkc3JjJHpsaWIkYWRsZXIzMj17fTttb2R1bGUkc3JjJHpsaWIkYWRsZXIzMi5BZGxlcjMyPUFkbGVyMzIkJG1vZHVsZSRzcmMkemxpYiRhZGxlcjMyO2Z1bmN0aW9uIEluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlKGEsYil7dGhpcy5pbnB1dD1hO3RoaXMuaXA9MDtpZihifHwhKGI9e30pKWIuaW5kZXgmJih0aGlzLmlwPWIuaW5kZXgpLGIudmVyaWZ5JiYodGhpcy52ZXJpZnk9Yi52ZXJpZnkpO2NvbnN0IGM9YVt0aGlzLmlwKytdLGQ9YVt0aGlzLmlwKytdO3N3aXRjaChjJjE1KXtjYXNlIENvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFOnRoaXMubWV0aG9kPUNvbXByZXNzaW9uTWV0aG9kJCRtb2R1bGUkc3JjJHpsaWIkemxpYi5ERUZMQVRFO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoInVuc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1ldGhvZCIpO31pZigwIT09KChjPDw4KStkKSUzMSl0aHJvdyBFcnJvcigiaW52YWxpZCBmY2hlY2sgZmxhZzoiKygoYzw8OCkrZCklMzEpO2lmKGQmMzIpdGhyb3cgRXJyb3IoImZkaWN0IGZsYWcgaXMgbm90IHN1cHBvcnRlZCIpO3RoaXMucmF3aW5mbGF0ZT0KbmV3IFJhd0luZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRyYXdpbmZsYXRlKGEse2luZGV4OnRoaXMuaXAsYnVmZmVyU2l6ZTpiLmJ1ZmZlclNpemUsYnVmZmVyVHlwZTpiLmJ1ZmZlclR5cGUscmVzaXplOmIucmVzaXplfSl9SW5mbGF0ZSQkbW9kdWxlJHNyYyR6bGliJGluZmxhdGUuQnVmZmVyVHlwZT1SYXdJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkcmF3aW5mbGF0ZS5CdWZmZXJUeXBlOwpJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5wcm90b3R5cGUuZGVjb21wcmVzcz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuaW5wdXQ7Y29uc3QgYj10aGlzLnJhd2luZmxhdGUuZGVjb21wcmVzcygpO3RoaXMuaXA9dGhpcy5yYXdpbmZsYXRlLmlwO2lmKHRoaXMudmVyaWZ5JiYoYT0oYVt0aGlzLmlwKytdPDwyNHxhW3RoaXMuaXArK108PDE2fGFbdGhpcy5pcCsrXTw8OHxhW3RoaXMuaXArK10pPj4+MCxhIT09QWRsZXIzMiQkbW9kdWxlJHNyYyR6bGliJGFkbGVyMzIoYikpKXRocm93IEVycm9yKCJpbnZhbGlkIGFkbGVyLTMyIGNoZWNrc3VtIik7cmV0dXJuIGJ9O3ZhciBtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZT17fTttb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZS5JbmZsYXRlPUluZmxhdGUkJG1vZHVsZSRzcmMkemxpYiRpbmZsYXRlO2NvbnN0IFBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGU9NjU1MzYsUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZT0xNixjc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlPSh7bWVtb3J5OmEsbWVzc2FnZVBvcnQ6YixzdHJlYW1CdWZmZXI6Y30pPT5mdW5jdGlvbihkLGUsZixnKXtpZihhKXtkPW5ldyBVaW50OEFycmF5KGEuYnVmZmVyLGcsZik7ZD11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKGQpO3ZhciBoPS9cbiQvZy50ZXN0KGQpO2U9L15cbi9nLnRlc3QoZCk7dmFyIGs9ZC5zcGxpdCgiXG4iKS5maWx0ZXIobT0+MDxtLmxlbmd0aCksbD1bXTtpZigwPT09ay5sZW5ndGgmJmh8fGUpbC5wdXNoKGMuam9pbigiIikpLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYyk7ay5mb3JFYWNoKChtLG4pPT57bisxPT09ay5sZW5ndGg/aD8wPT09bj8obC5wdXNoKGMuam9pbigiIikrbSksCmNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKTpjLnB1c2gobSk6MD09PW4/KGwucHVzaChjLmpvaW4oIiIpK20pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkoYykpOmwucHVzaChtKX0pO2wuZm9yRWFjaChtPT57bS5yZXBsYWNlKC8oXHJcbnxcbnxccikvZ20sIiIpJiZiLnBvc3Qoe2xvZzptfSl9KX19LGFzc2VydFBsdWdpbkV4cG9ydHMkJG1vZHVsZSRzcmMkbW9kdWxlPWE9PntpZihhJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYib2JqZWN0Ij09PXR5cGVvZiBhLmV4cG9ydHMpe2lmKGEuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycyl7aWYoYS5leHBvcnRzLmNzb3VuZE1vZHVsZUNyZWF0ZXx8YS5leHBvcnRzLmNzb3VuZF9vcGNvZGVfaW5pdHx8YS5leHBvcnRzLmNzb3VuZF9mZ2VuX2luaXQpcmV0dXJuITA7Y29uc29sZS5lcnJvcihhLmV4cG9ydHMsIkEgY3NvdW5kIHBsdWdpbiB0dXJucyBvdXQgdG8gYmUgbmVpdGhlciBhIHBsdWdpbiwgb3Bjb2RlIG9yIG1vZHVsZS5cblBlcmhhcHMgY3NkbC5oIG9yIG1vZHVsZS5oIHdhc24ndCBpbXBvcnRlZCBjb3JyZWN0bHk/Iik7CnJldHVybiExfWNvbnNvbGUuZXJyb3IoIkEgY3NvdW5kIHBsdWdpbiBkaWRuJ3QgZXhwb3J0IF9fd2FzbV9jYWxsX2N0b3JzLlxuUGxlYXNlIHJlLXJ1biB3YXNtLWxkIHdpdGggZWl0aGVyIC0tZXhwb3J0LWFsbCBvciBpbmNsdWRlIC0tZXhwb3J0PV9fd2FzbV9jYWxsX2N0b3JzIik7cmV0dXJuITF9Y29uc29sZS5lcnJvcigiRXJyb3IgaW5zdGFudGlhdGluZyBhIGNzb3VuZCBwbHVnaW4sIGluc3RhbmNlIGFuZC9vciBleHBvcnQgaXMgbWlzc2luZyEiKTtyZXR1cm4hMX0sZ2V0QmluYXJ5SGVhZGVyRGF0YSQkbW9kdWxlJHNyYyRtb2R1bGU9YT0+e2Z1bmN0aW9uIGIoKXtsZXQgbD0wLG09MTtmb3IoOzspe2NvbnN0IG49YVtjKytdO2wrPShuJjEyNykqbTttKj0xMjg7aWYoIShuJjEyOCkpYnJlYWt9cmV0dXJuIGx9MTgzNjI3ODAxNiE9PShuZXcgVWludDMyQXJyYXkoKG5ldyBVaW50OEFycmF5KGEuc3ViYXJyYXkoMCwyNCkpKS5idWZmZXIpKVswXSYmY29uc29sZS5lcnJvcigiV2FzbSBtYWdpYyBudW1iZXIgaXMgbWlzc2luZyEiKTsKaWYoMCE9PWFbOF0pcmV0dXJuIGxvZ1dhc21Nb2R1bGUkJG1vZHVsZSRzcmMkbG9nZ2VyKCJEeWxpbmsgc2VjdGlvbiB3YXNuJ3QgZm91bmQgaW4gd2FzbSBiaW5hcnksIGFzc3VtaW5nIHN0YXRpYyB3YXNtLiIpLCJzdGF0aWMiO2xldCBjPTk7Y29uc3QgZD1iKCk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iZCIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09InkiLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJsIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0iaSIuY29kZVBvaW50QXQoMCkpO2MrKzsoMCxnb29nLmFzc2VydHMuYXNzZXJ0KShhW2NdPT09Im4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSJrIi5jb2RlUG9pbnRBdCgwKSk7YysrOygwLGdvb2cuYXNzZXJ0cy5hc3NlcnQpKGFbY109PT0KIi4iLmNvZGVQb2ludEF0KDApKTtjKys7KDAsZ29vZy5hc3NlcnRzLmFzc2VydCkoYVtjXT09PSIwIi5jb2RlUG9pbnRBdCgwKSk7Yys9Mztjb25zdCBlPWIoKSxmPWIoKSxnPWIoKSxoPWIoKSxrPWIoKTtyZXR1cm57c2VjdGlvblNpemU6ZCxtZW1vcnlTaXplOmUsbWVtb3J5QWxpZ246ZixuZWVkZWREeW5saWJzQ291bnQ6ayx0YWJsZVNpemU6Zyx0YWJsZUFsaWduOmh9fSxsb2FkU3RhdGljV2FzbSQkbW9kdWxlJHNyYyRtb2R1bGU9YXN5bmMoe3dhc21CeXRlczphLHdhc2k6YixtZXNzYWdlUG9ydDpjfSk9Pntjb25zdCBkPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoYSk7YT1uZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOjE2Mzg0fSk7Y29uc3QgZT1iLmdldEltcG9ydHMoZCk7ZS5lbnY9ZS5lbnZ8fHt9O2UuZW52LmNzb3VuZExvYWRNb2R1bGVzPSgpPT4wO2UuZW52Lm1lbW9yeT1hO2UuZW52LmNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjaz1jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2skJG1vZHVsZSRzcmMkbW9kdWxlKHttZW1vcnk6ZS5lbnYubWVtb3J5LApzdHJlYW1CdWZmZXI6W10sbWVzc2FnZVBvcnQ6Y30pO2M9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZCxlKTtiLnNldE1lbW9yeShhKTtiLnN0YXJ0KGMpO2MuZXhwb3J0cy5fX3dhc2lfanNfY3NvdW5kU2V0TWVzc2FnZVN0cmluZ0NhbGxiYWNrKCk7cmV0dXJuW2MsYl19Owp2YXIgJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbW9kdWxlPWFzeW5jIGZ1bmN0aW9uKHt3YXNtRGF0YVVSSTphLHdpdGhQbHVnaW5zOmI9W10sbWVzc2FnZVBvcnQ6Y30pe3ZhciBkPXt9O2NvbnN0IGU9bmV3IFdBU0kkJG1vZHVsZSRzcmMkZmlsZXN5c3RlbSR3YXNpKHtwcmVvcGVuczp7Ii8iOiIvIn19KTthPW5ldyBVaW50OEFycmF5KGEpO2E9KG5ldyBJbmZsYXRlJCRtb2R1bGUkc3JjJHpsaWIkaW5mbGF0ZShhKSkuZGVjb21wcmVzcygpO3ZhciBmPWdldEJpbmFyeUhlYWRlckRhdGEkJG1vZHVsZSRzcmMkbW9kdWxlKGEpO2lmKCJzdGF0aWMiPT09ZilyZXR1cm4gYXdhaXQgbG9hZFN0YXRpY1dhc20kJG1vZHVsZSRzcmMkbW9kdWxlKHttZXNzYWdlUG9ydDpjLHdhc21CeXRlczphLHdhc21GczpkLHdhc2k6ZX0pO2NvbnN0IHttZW1vcnlTaXplOmcsbWVtb3J5QWxpZ246aCx0YWJsZVNpemU6a309ZjtiPWF3YWl0IGIucmVkdWNlKGFzeW5jKHIsdyk9PntyPWF3YWl0IHI7CmxldCBCLHo7dHJ5e0I9bmV3IFVpbnQ4QXJyYXkodyksej1nZXRCaW5hcnlIZWFkZXJEYXRhJCRtb2R1bGUkc3JjJG1vZHVsZShCKX1jYXRjaChDKXtjb25zb2xlLmVycm9yKCJFcnJvciBpbiBwbHVnaW4iLEMpfXomJnIucHVzaCh7aGVhZGVyRGF0YTp6LHdhc21QbHVnaW5CeXRlczpCfSk7cmV0dXJuIHJ9LFtdKTt2YXIgbD0xMjgqUEFHRVNfUEVSX01CJCRtb2R1bGUkc3JjJG1vZHVsZTtkPU1hdGguY2VpbCgoZytoKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPU1hdGguY2VpbChiLnJlZHVjZSgocix7aGVhZGVyRGF0YTp3fSk9PiJzdGF0aWMiPT09dz8wOnIrKHcubWVtb3J5U2l6ZStoKSwwKS9QQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPWQrZitsO2NvbnN0IG09bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDpmLG1heGltdW06MTAyNCpQQUdFU19QRVJfTUIkJG1vZHVsZSRzcmMkbW9kdWxlfSksbj1uZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6aysKMSxlbGVtZW50OiJhbnlmdW5jIn0pO2Uuc2V0TWVtb3J5KG0pO2NvbnN0IHA9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sZipQQUdFX1NJWkUkJG1vZHVsZSRzcmMkbW9kdWxlKTtmPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITB9LGYqUEFHRV9TSVpFJCRtb2R1bGUkc3JjJG1vZHVsZSk7bD1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxsKTtjb25zdCBxPW5ldyBXZWJBc3NlbWJseS5HbG9iYWwoe3ZhbHVlOiJpMzIiLG11dGFibGU6ITF9LDEpLHU9bmV3IFdlYkFzc2VtYmx5Lkdsb2JhbCh7dmFsdWU6ImkzMiIsbXV0YWJsZTohMH0sMCk7YT1hd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGEpO2NvbnN0IHQ9ZS5nZXRJbXBvcnRzKGEpO2xldCB2PVtdLEE9ZDt0LmVudj10LmVudnx8e307dC5lbnYubWVtb3J5PW07dC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT0Kbjt0LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt0LmVudi5fX21lbW9yeV9iYXNlPWw7dC5lbnYuX190YWJsZV9iYXNlPXE7dC5lbnYuY3NvdW5kTG9hZE1vZHVsZXM9cj0+e3YuZm9yRWFjaCh3PT57dm9pZCAwPT09eT9jb25zb2xlLmVycm9yKCJjc291bmQtd2FzbSBpbnRlcm5hbDogdGltaW5nIHByb2JsZW0gZGV0ZWN0ZWQhIik6ZGxpbml0JCRtb2R1bGUkc3JjJGRsaW5pdCh5LHcsbixyKX0pO3JldHVybiAwfTt0LmVudi5fWlRINWVycm5vPWZ1bmN0aW9uKCl7fTt0LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s9Y3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrJCRtb2R1bGUkc3JjJG1vZHVsZSh7bWVtb3J5Om0sbWVzc2FnZVBvcnQ6YyxzdHJlYW1CdWZmZXI6W119KTt0LmVudi5wcmludERlYnVnQ2FsbGJhY2s9KHIsdyk9PntyPW5ldyBVaW50OEFycmF5KG0uYnVmZmVyLHIsdyk7cj11aW50MlN0cmluZyQkbW9kdWxlJHNyYyR1dGlscyR0ZXh0X2VuY29kZXJzKHIpO2NvbnNvbGUubG9nKHIpfTsKdFsiR09ULm1lbSJdPXRbIkdPVC5tZW0iXXx8e307dFsiR09ULm1lbSJdLl9faGVhcF9iYXNlPWY7dFsiR09ULmZ1bmMiXT10WyJHT1QuZnVuYyJdfHx7fTtjb25zdCB5PWF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGEsdCk7Yz1PYmplY3QuYXNzaWduKHt9LHkuZXhwb3J0cyk7YT17fTthLmV4cG9ydHM9T2JqZWN0LmFzc2lnbihjLHttZW1vcnk6bX0pO3Y9YXdhaXQgYi5yZWR1Y2UoYXN5bmMocix7aGVhZGVyRGF0YTp3LHdhc21QbHVnaW5CeXRlczpCfSk9PntyPWF3YWl0IHI7dHJ5e2NvbnN0IHttZW1vcnlTaXplOnosbWVtb3J5QWxpZ246Qyx0YWJsZVNpemU6Rn09dyxFPWF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoQikseD1lLmdldEltcG9ydHMoRSksRz1uZXcgV2ViQXNzZW1ibHkuR2xvYmFsKHt2YWx1ZToiaTMyIixtdXRhYmxlOiExfSxBKlBBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO24uZ3JvdyhGKTt4LmVudj1PYmplY3QuYXNzaWduKHt9LHguZW52KTt4LmVudi5tZW1vcnk9Cm07eC5lbnYuX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZT1uO3guZW52Ll9fbWVtb3J5X2Jhc2U9Rzt4LmVudi5fX3N0YWNrX3BvaW50ZXI9cDt4LmVudi5fX3RhYmxlX2Jhc2U9cTt4LmVudi5jc291bmRMb2FkTW9kdWxlcz11O2RlbGV0ZSB4LmVudi5jc291bmRXYXNpSnNNZXNzYWdlQ2FsbGJhY2s7QSs9TWF0aC5jZWlsKCh6K0MpL1BBR0VfU0laRSQkbW9kdWxlJHNyYyRtb2R1bGUpO2NvbnN0IEQ9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoRSx4KTthc3NlcnRQbHVnaW5FeHBvcnRzJCRtb2R1bGUkc3JjJG1vZHVsZShEKSYmKEQuZXhwb3J0cy5fX3dhc21fY2FsbF9jdG9ycygpLHIucHVzaChEKSl9Y2F0Y2goeil7Y29uc29sZS5lcnJvcigiRXJyb3Igd2hpbGUgY29tcGlsaW5nIGNzb3VuZC1wbHVnaW4iLHopfXJldHVybiByfSxbXSk7ZS5zdGFydChhKTthLmV4cG9ydHMuX193YXNpX2pzX2Nzb3VuZFNldE1lc3NhZ2VTdHJpbmdDYWxsYmFjaygpO3JldHVyblthLGVdfSwKbW9kdWxlJHNyYyRtb2R1bGU9e307bW9kdWxlJHNyYyRtb2R1bGUuY3NvdW5kV2FzaUpzTWVzc2FnZUNhbGxiYWNrPWNzb3VuZFdhc2lKc01lc3NhZ2VDYWxsYmFjayQkbW9kdWxlJHNyYyRtb2R1bGU7bW9kdWxlJHNyYyRtb2R1bGUuZGVmYXVsdD0kanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGU7Y29uc3QgaGFuZGxlQ3NvdW5kU3RhcnQkJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9KGEsYixjLGQsZSk9PmY9Pntjb25zdCB7Y3NvdW5kOmd9PWYsaD0xPT09Yi5jc291bmRTaG91bGREYWVtb25pemUoZyk7aCYmKGIuY3NvdW5kU2V0T3B0aW9uKGcsIi0tZGFlbW9uIiksYi5jc291bmRTZXRPcHRpb24oZywiLW9kYWMiKSk7Y29uc3Qgaz1iLmNzb3VuZFN0YXJ0KGcpLGw9Yi5jc291bmRHZXRPdXRwdXROYW1lKGcpfHwidGVzdC53YXYiO2xvZ0NvbW1vblV0aWxzJCRtb2R1bGUkc3JjJGxvZ2dlcihgaGFuZGxlQ3NvdW5kU3RhcnQ6IGFjdHVhbCBjc291bmRTdGFydCByZXN1bHQgJHtrfSwgb3V0cHV0TmFtZTogJHtsfWApKCk7MCE9PWsmJmEucG9zdChgZXJyb3I6IGNzb3VuZFN0YXJ0IGZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gcmVuZGVyICR7bH0sYCsiIGxvb2sgb3V0IGZvciBlcnJvcnMgaW4gb3B0aW9ucyBhbmQgc3ludGF4Iik7c2V0VGltZW91dCgoKT0+e2NvbnN0IG09CmIuX2lzUmVxdWVzdGluZ1J0TWlkaUlucHV0KGcpO2lmKGh8fG18fGwuaW5jbHVkZXMoImRhYyIpKWQoZik7ZWxzZSBpZihhLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLGUpZShmKTtlbHNlIGZvcig7MD09PWIuY3NvdW5kUGVyZm9ybUtzbXBzKGcpOyk7fSwwKTtyZXR1cm4ga30saW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscz0oYSxiKT0+e2NvbnN0IGM9W107Zm9yKGxldCBkPTA7ZDxhO2QrKyljLnB1c2gobmV3IEZsb2F0NjRBcnJheShiKSk7cmV0dXJuIGN9LHJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzPSh7bGlicmFyeUNzb3VuZDphLHdvcmtlck1lc3NhZ2VQb3J0OmJ9KT0+YXN5bmMoe2Nzb3VuZDpjfSk9Pntjb25zdCBkPWEuY3NvdW5kR2V0S3IoYyk7bGV0IGU9MCxmPTA7Zm9yKDsoInJlbmRlclN0YXJ0ZWQiPT09Yi52YW5pbGxhV29ya2VyU3RhdGV8fCJyZW5kZXJTdGFydGVkIj09PQpiLndvcmtlclN0YXRlKSYmMD09PWU7KWU9YS5jc291bmRQZXJmb3JtS3NtcHMoYyksZis9MSwiZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQmJjA9PT1lJiYwPT09ZiUoMipkKSYmYXdhaXQgbmV3IFByb21pc2UoZz0+c2V0VGltZW91dChnLDApKTtiLmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKX07dmFyIG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHM9e307bW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlscy5oYW5kbGVDc291bmRTdGFydD1oYW5kbGVDc291bmRTdGFydCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLmluc3RhbnRpYXRlQXVkaW9QYWNrZXQ9aW5zdGFudGlhdGVBdWRpb1BhY2tldCQkbW9kdWxlJHNyYyR3b3JrZXJzJGNvbW1vbl91dGlsczttb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzLnJlbmRlckZ1bmN0aW9uPXJlbmRlckZ1bmN0aW9uJCRtb2R1bGUkc3JjJHdvcmtlcnMkY29tbW9uX3V0aWxzO2xldCBsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLGNvbWJpbmVkJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyO2NvbnN0IHJ0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyPVtdLGNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1hc3luYyhhLGIpPT4oYT1jb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5nZXQoYSkpJiZhLmFwcGx5KHt9LGJ8fFtdKTsKY2xhc3MgV29ya2xldFNpbmdsZXRocmVhZFdvcmtlciQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciBleHRlbmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvcntzdGF0aWMgZ2V0IHBhcmFtZXRlckRlc2NyaXB0b3JzKCl7cmV0dXJuW119Y29uc3RydWN0b3IoYSl7c3VwZXIoYSk7dGhpcy5zYW1wbGVSYXRlPXNhbXBsZVJhdGU7dGhpcy5vcHRpb25zPWE7dGhpcy5pbml0aWFsaXplPXRoaXMuaW5pdGlhbGl6ZS5iaW5kKHRoaXMpO3RoaXMucGF1c2U9dGhpcy5wYXVzZS5iaW5kKHRoaXMpO3RoaXMucHJvY2Vzcz10aGlzLnByb2Nlc3MuYmluZCh0aGlzKTt0aGlzLnJlc3VtZT10aGlzLnJlc3VtZS5iaW5kKHRoaXMpO3RoaXMuc3RhcnQ9dGhpcy5zdGFydC5iaW5kKHRoaXMpO3RoaXMuaXNQYXVzZWQ9dGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPSExO3RoaXMuY2FsbFVuY2xvbmVkPSgpPT5jb25zb2xlLmVycm9yKCJDc291bmQgd29ya2xldCB0aHJlYWQgaXMgc3RpbGwgdW5pbml0aWFsaXplZCEiKTsKdGhpcy5wb3J0LnN0YXJ0KCk7ZXhwb3NlJCRtb2R1bGUkbm9kZV9tb2R1bGVzJGNvbWxpbmskZGlzdCRlc20kY29tbGlua19tanModGhpcyx0aGlzLnBvcnQpO3RoaXMud29ya2VyTWVzc2FnZVBvcnQ9bmV3ICRqc2NvbXBEZWZhdWx0RXhwb3J0JCRtb2R1bGUkc3JjJHV0aWxzJG1lc3NhZ2VfcG9ydF9zdGF0ZTt0aGlzLmluaXRpYWxpemVNZXNzYWdlUG9ydD0oe21lc3NhZ2VQb3J0OmIscnRtaWRpUG9ydDpjfSk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LnBvc3Q9ZD0+Yi5wb3N0TWVzc2FnZSh7bG9nOmR9KTt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZT1kPT57dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSE9PWQmJih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LndvcmtlclN0YXRlPWQpO2IucG9zdE1lc3NhZ2Uoe3BsYXlTdGF0ZUNoYW5nZTpkfSl9O3RoaXMud29ya2VyTWVzc2FnZVBvcnQucmVhZHk9ITA7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImluaXRSdE1pZGlFdmVudFBvcnQiKSgpOwp0aGlzLnJ0bWlkaVBvcnQ9Yzt0aGlzLnJ0bWlkaVBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKHtkYXRhOmR9KT0+e3J0bWlkaVF1ZXVlJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLnB1c2goZCl9KTt0aGlzLnJ0bWlkaVBvcnQuc3RhcnQoKX19YXN5bmMgaW5pdGlhbGl6ZShhLGIpe2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJpbml0aWFsaXppbmcgd29ya2xldC5zaW5nbGV0aHJlYWQud29ya2VyIikoKTtsZXQgYztjb25zdCBkPW5ldyBQcm9taXNlKGU9PntjPWV9KTskanNjb21wRGVmYXVsdEV4cG9ydCQkbW9kdWxlJHNyYyRtb2R1bGUoe3dhc21EYXRhVVJJOmEsd2l0aFBsdWdpbnM6YixtZXNzYWdlUG9ydDp0aGlzLndvcmtlck1lc3NhZ2VQb3J0fSkudGhlbigoW2UsZl0pPT57dGhpcy53YXNtPWU7dGhpcy53YXNpPWY7ZS53YXNpPWY7bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj0KJGpzY29tcERlZmF1bHRFeHBvcnQkJG1vZHVsZSRzcmMkbGliY3NvdW5kKGUpO3RoaXMuY2FsbFVuY2xvbmVkPWNhbGxVbmNsb25lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcjt0aGlzLmNzb3VuZD1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZENyZWF0ZSgwKTt0aGlzLnJlc3VsdD0wO3RoaXMuc3RhcnRlZD10aGlzLmlzUmVuZGVyaW5nPXRoaXMucnVubmluZz0hMTt0aGlzLnJlc2V0Q3NvdW5kKCExKTtlPXBpcGUkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcyhhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRDcmVhdGUiLGFzeW5jIGc9PnRoaXMuY3NvdW5kKSxhc3NvYyQkbW9kdWxlJG5vZGVfbW9kdWxlcyRyYW1iZGEkZGlzdCRyYW1iZGFfbWpzKCJjc291bmRSZXNldCIsdGhpcy5yZXNldENzb3VuZC5iaW5kKHRoaXMpKSwKYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RhcnQiLHRoaXMuc3RhcnQuYmluZCh0aGlzKSksYXNzb2MkJG1vZHVsZSRub2RlX21vZHVsZXMkcmFtYmRhJGRpc3QkcmFtYmRhX21qcygiY3NvdW5kU3RvcCIsdGhpcy5zdG9wLmJpbmQodGhpcykpLGFzc29jJCRtb2R1bGUkbm9kZV9tb2R1bGVzJHJhbWJkYSRkaXN0JHJhbWJkYV9tanMoIndhc20iLGUpKShsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTtjb21iaW5lZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj1uZXcgTWFwKE9iamVjdC5lbnRyaWVzKGUpKTtsb2dTaW5nbGV0aHJlYWRXb3JrbGV0V29ya2VyJCRtb2R1bGUkc3JjJGxvZ2dlcigid2FzbSBpbml0aWFsaXplZCBhbmQgYXBpIGdlbmVyYXRlZCIpKCk7YygpfSk7bG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoIndhaXRpbmcgb24gd2FzbSBpbml0aWFsaXphdGlvbiB0byBjb21wbGV0ZSIpKCk7CmF3YWl0IGR9YXN5bmMgcmVzZXRDc291bmQoYSl7aWYoYSYmIXRoaXMud29ya2VyTWVzc2FnZVBvcnR8fGEmJiJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiIT09dGhpcy53b3JrZXJNZXNzYWdlUG9ydC53b3JrZXJTdGF0ZSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIiE9PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUpcmV0dXJuLTE7YSYmInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIj09PXRoaXMud29ya2VyTWVzc2FnZVBvcnQud29ya2VyU3RhdGUmJnRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlRW5kZWQiKTt0aGlzLnN0YXJ0ZWQ9dGhpcy5ydW5uaW5nPSExO3RoaXMucmVzdWx0PTA7Y29uc3QgYj10aGlzLmNzb3VuZDthJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFJlc2V0KGIpO2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU2V0TWlkaUNhbGxiYWNrcyhiKTsKdGhpcy5zYW1wbGVSYXRlJiZsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFNldE9wdGlvbihiLCItLXNhbXBsZS1yYXRlPSIrdGhpcy5zYW1wbGVSYXRlKTt0aGlzLm5jaG5sc19pPXRoaXMubmNobmxzPS0xO2RlbGV0ZSB0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcn1zdG9wKCl7dGhpcy5jc291bmQmJmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kU3RvcCh0aGlzLmNzb3VuZCk7dGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VFbmRlZCIpfXBhdXNlKCl7dGhpcy5pc1BhdXNlZHx8KHRoaXMud29ya2VyTWVzc2FnZVBvcnQuYnJvYWRjYXN0UGxheVN0YXRlKCJyZWFsdGltZVBlcmZvcm1hbmNlUGF1c2VkIiksdGhpcy5pc1BhdXNlZD0hMCl9cmVzdW1lKCl7dGhpcy5pc1BhdXNlZCYmCih0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZVJlc3VtZWQiKSx0aGlzLmlzUGF1c2VkPSExKX1wcm9jZXNzKGEsYil7aWYoISh0aGlzLmlzUmVuZGVyaW5nfHwhdGhpcy5pc1BhdXNlZCYmdGhpcy5jc291bmRPdXRwdXRCdWZmZXImJnRoaXMucnVubmluZykpe2E9YlswXTtiPWFbMF0ubGVuZ3RoO2Zvcih2YXIgYz0wO2M8YjtjKyspZm9yKHZhciBkPTA7ZDxhLm51bWJlck9mQ2hhbm5lbHM7ZCsrKWFbZF1bY109MDtyZXR1cm4hMH10aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb24mJih0aGlzLm5lZWRzU3RhcnROb3RpZmljYXRpb249ITEsdGhpcy53b3JrZXJNZXNzYWdlUG9ydC5icm9hZGNhc3RQbGF5U3RhdGUoInJlYWx0aW1lUGVyZm9ybWFuY2VTdGFydGVkIikpOzA8cnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIubGVuZ3RoJiYocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuZm9yRWFjaChxPT4Ke2xpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kUHVzaE1pZGlNZXNzYWdlKHRoaXMuY3NvdW5kLHFbMF0scVsxXSxxWzJdKX0pLGNsZWFyQXJyYXkkJG1vZHVsZSRzcmMkdXRpbHMkY2xlYXJfYXJyYXkocnRtaWRpUXVldWUkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIpKTthPWFbMF07Yj1iWzBdO2M9YlswXS5sZW5ndGg7ZD10aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcjtsZXQgZT10aGlzLmNzb3VuZElucHV0QnVmZmVyO2NvbnN0IGY9dGhpcy5rc21wcyxnPXRoaXMuemVyb2RCRlM7bGV0IGg9dGhpcy5jbnQ7Y29uc3Qgaz10aGlzLm5jaG5scyxsPXRoaXMubmNobmxzX2k7bGV0IG09dGhpcy5yZXN1bHQ7Zm9yKGxldCBxPTA7cTxjO3ErKyxoKyspe2g+PWYmJjA9PT1tJiYobT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFBlcmZvcm1Lc21wcyh0aGlzLmNzb3VuZCksCmg9MCwwIT09bSYmKHRoaXMuc3RhcnRlZD10aGlzLnJ1bm5pbmc9ITEsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRDbGVhbnVwKHRoaXMuY3NvdW5kKSx0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVhbHRpbWVQZXJmb3JtYW5jZUVuZGVkIikpKTtkJiYwIT09ZC5sZW5ndGh8fChkPXRoaXMuY3NvdW5kT3V0cHV0QnVmZmVyPW5ldyBGbG9hdDY0QXJyYXkodGhpcy53YXNtLndhc2kubWVtb3J5LmJ1ZmZlcixsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldFNwb3V0KHRoaXMuY3NvdW5kKSxmKmspKTtlJiYwIT09ZS5sZW5ndGh8fChlPXRoaXMuY3NvdW5kSW5wdXRCdWZmZXI9bmV3IEZsb2F0NjRBcnJheSh0aGlzLndhc20ud2FzaS5tZW1vcnkuYnVmZmVyLGxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3Bpbih0aGlzLmNzb3VuZCksCmYqbCkpO3ZhciBuPU1hdGgubWluKHRoaXMubmNobmxzX2ksYS5sZW5ndGgpO2Zvcih2YXIgcD0wO3A8bjtwKyspZVtoKmwrcF09YVtwXVtxXSpnO2lmKHRoaXMubmNobmxzPT09Yi5sZW5ndGgpZm9yKGNvbnN0IFt1LHRdb2YgYi5lbnRyaWVzKCkpdFtxXT0wPT09bT9kW2gqayt1XS9nOjA7ZWxzZSBpZigyPT09dGhpcy5uY2hubHMmJjE9PT1iLmxlbmd0aCliWzBdW3FdPTA9PT1tPy41KihkW2gqa10vZytkW2gqaysxXS9nKTowO2Vsc2UgaWYoMT09PXRoaXMubmNobmxzJiYyPT09Yi5sZW5ndGgpaWYobj1iWzBdLHA9YlsxXSwwPT09bSl7Y29uc3QgdT1kW2gqa10vZztuW3FdPXU7cFtxXT11fWVsc2UgbltxXT0wLHBbcV09MH10aGlzLmNudD1oO3RoaXMucmVzdWx0PW07cmV0dXJuITB9YXN5bmMgaXNSZXF1ZXN0aW5nSW5wdXQoKXtyZXR1cm4obGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRJbnB1dE5hbWUodGhpcy5jc291bmQpfHwKIiIpLmluY2x1ZGVzKCJhZGMiKX1hc3luYyBpc1JlcXVlc3RpbmdSZWFsdGltZU91dHB1dCgpe3JldHVybihsaWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZEdldE91dHB1dE5hbWUodGhpcy5jc291bmQpfHwiIikuaW5jbHVkZXMoImRhYyIpfWFzeW5jIHN0YXJ0KCl7bGV0IGE9LTE7aWYodGhpcy5zdGFydGVkKWxvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHdhcyBhc2tlZCB0byBzdGFydCBidXQgaXQgYWxyZWFkeSBoYXMhIikoKTtlbHNle2xvZ1NpbmdsZXRocmVhZFdvcmtsZXRXb3JrZXIkJG1vZHVsZSRzcmMkbG9nZ2VyKCJ3b3JrbGV0IHRocmVhZCBpcyBzdGFydGluZy4uIikoKTtjb25zdCBiPXRoaXMuY3NvdW5kLGM9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRLc21wcyhiKTsKdGhpcy5jbnQ9dGhpcy5rc21wcz1jO3RoaXMubmNobmxzPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0TmNobmxzKGIpO3RoaXMubmNobmxzX2k9bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXROY2hubHNJbnB1dChiKTt0aGlzLnplcm9kQkZTPWxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0MGRCRlMoYik7YT1saWJyYXJ5Q3NvdW5kJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyLmNzb3VuZFN0YXJ0KGIpO2lmKDAhPT1hKXJldHVybiBhO2lmKGF3YWl0IHRoaXMuaXNSZXF1ZXN0aW5nUmVhbHRpbWVPdXRwdXQoKSl0aGlzLmNzb3VuZE91dHB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsCmxpYnJhcnlDc291bmQkJG1vZHVsZSRzcmMkd29ya2VycyR3b3JrbGV0X3NpbmdsZXRocmVhZF93b3JrZXIuY3NvdW5kR2V0U3BvdXQoYiksYyp0aGlzLm5jaG5scyksdGhpcy5jc291bmRJbnB1dEJ1ZmZlcj1uZXcgRmxvYXQ2NEFycmF5KHRoaXMud2FzbS53YXNpLm1lbW9yeS5idWZmZXIsbGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlci5jc291bmRHZXRTcGluKGIpLGMqdGhpcy5uY2hubHNfaSksbG9nU2luZ2xldGhyZWFkV29ya2xldFdvcmtlciQkbW9kdWxlJHNyYyRsb2dnZXIoImNzb3VuZFN0YXJ0IGNhbGxlZCB3aXRoIHt9IHJldHVybiB2YWwiLGEpKCksdGhpcy5uZWVkc1N0YXJ0Tm90aWZpY2F0aW9uPXRoaXMuc3RhcnRlZD0hMDtlbHNlIHJldHVybiB0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyU3RhcnRlZCIpLHRoaXMuaXNSZW5kZXJpbmc9ITAscmVuZGVyRnVuY3Rpb24kJG1vZHVsZSRzcmMkd29ya2VycyRjb21tb25fdXRpbHMoe2xpYnJhcnlDc291bmQ6bGlicmFyeUNzb3VuZCQkbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlciwKd29ya2VyTWVzc2FnZVBvcnQ6dGhpcy53b3JrZXJNZXNzYWdlUG9ydCx3YXNpOnRoaXMud2FzaX0pKHtjc291bmQ6Yn0pLnRoZW4oKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSkuY2F0Y2goKCk9Pnt0aGlzLndvcmtlck1lc3NhZ2VQb3J0LmJyb2FkY2FzdFBsYXlTdGF0ZSgicmVuZGVyRW5kZWQiKTt0aGlzLmlzUmVuZGVyaW5nPSExfSksMH10aGlzLnJ1bm5pbmc9ITA7cmV0dXJuIGF9fXJlZ2lzdGVyUHJvY2Vzc29yKCJjc291bmQtc2luZ2xldGhyZWFkLXdvcmtsZXQtcHJvY2Vzc29yIixXb3JrbGV0U2luZ2xldGhyZWFkV29ya2VyJCRtb2R1bGUkc3JjJHdvcmtlcnMkd29ya2xldF9zaW5nbGV0aHJlYWRfd29ya2VyKTt2YXIgbW9kdWxlJHNyYyR3b3JrZXJzJHdvcmtsZXRfc2luZ2xldGhyZWFkX3dvcmtlcj17fTsKLy8jIHNvdXJjZVVSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcwovLyMgc291cmNlTWFwcGluZ1VSTD0vZGlzdC9fX2NvbXBpbGVkLndvcmtsZXQuc2luZ2xldGhyZWFkLndvcmtlci5qcy5tYXAK",
+module$dist$__compiled_worklet_singlethread_worker_inline={};module$dist$__compiled_worklet_singlethread_worker_inline.default=$jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline;const initializeModule$$module$src$mains$worklet_singlethread_main=async a=>{logSinglethreadWorkletMain$$module$src$logger("Initialize Module")();try{await a.audioWorklet.addModule($jscompDefaultExport$$module$dist$__compiled_worklet_singlethread_worker_inline())}catch(b){return console.error("Error calling audioWorklet.addModule",b),!1}return!0};
+class SingleThreadAudioWorkletMainThread$$module$src$mains$worklet_singlethread_main{constructor({audioContext:a,inputChannelCount:b=1,outputChannelCount:c=2}){this.exportApi={};this.ipcMessagePorts=new IPCMessagePorts$$module$src$mains$messages_main;this.publicEvents=new PublicEventAPI$$module$src$events(this);this.eventPromises=new EventPromises$$module$src$utils$event_promises;this.audioContext=a;this.inputChannelCount=b;this.outputChannelCount=c;this.messageCallbacks=[];this.onPlayStateChange=
+this.onPlayStateChange.bind(this);this.currentPlayState=void 0}async terminateInstance(){this.node&&(this.node.disconnect(),delete this.node);this.audioContext&&("closed"!==this.audioContext.state&&await this.audioContext.close(),delete this.audioContext);this.workletProxy&&(this.workletProxy[releaseProxy$$module$node_modules$comlink$dist$esm$comlink_mjs](),delete this.workletProxy);this.publicEvents&&(this.publicEvents.terminateInstance(),delete this.publicEvents);Object.keys(this.exportApi).forEach(a=>
+delete this.exportApi[a]);Object.keys(this).forEach(a=>delete this[a])}async onPlayStateChange(a){if(this.currentPlayState!==a&&this.publicEvents)switch(this.currentPlayState=a,a){case "realtimePerformanceStarted":this.eventPromises.isWaitingToStart()&&(logSinglethreadWorkletMain$$module$src$logger("Start promise resolved")(),this.eventPromises.releaseStartPromise());this.publicEvents.triggerRealtimePerformanceStarted(this);break;case "realtimePerformanceEnded":this.midiPortStarted=!1;this.currentPlayState=
+void 0;this.publicEvents&&this.publicEvents.triggerRealtimePerformanceEnded(this);this.eventPromises&&this.eventPromises.isWaitingToStop()&&this.eventPromises.releaseStopPromise();this.eventPromises&&this.eventPromises.releaseStartPromise();break;case "realtimePerformancePaused":this.publicEvents.triggerRealtimePerformancePaused(this);break;case "realtimePerformanceResumed":this.publicEvents.triggerRealtimePerformanceResumed(this);break;case "renderStarted":this.eventPromises.isWaitingToStart()&&
+(logSinglethreadWorkletMain$$module$src$logger("Start promise resolved")(),this.publicEvents.triggerRenderStarted(this),this.eventPromises.releaseStartPromise());break;case "renderEnded":this.publicEvents.triggerRenderEnded(this),this.eventPromises&&this.eventPromises.isWaitingToStop()&&this.eventPromises.releaseStopPromise(),this.eventPromises&&this.eventPromises.releaseStartPromise()}}async csoundPause(){void 0!==this.workletProxy&&await this.workletProxy.pause()}async csoundResume(){void 0!==this.workletProxy&&
+await this.workletProxy.resume()}handleMidiInput({data:a}){this.ipcMessagePorts.csoundMainRtMidiPort.postMessage&&this.ipcMessagePorts.csoundMainRtMidiPort.postMessage(a)}async initialize({wasmDataURI:a,withPlugins:b,autoConnect:c}){b&&0<b.length&&(b=await fetchPlugins$$module$src$utils(b));await initializeModule$$module$src$mains$worklet_singlethread_main(this.audioContext);this.node=new AudioWorkletNode(this.audioContext,"csound-singlethread-worklet-processor",{inputChannelCount:this.inputChannelCount?
+[this.inputChannelCount]:0,outputChannelCount:[this.outputChannelCount||2]});c&&this.node.connect(this.audioContext.destination);try{logSinglethreadWorkletMain$$module$src$logger("wrapping Comlink proxy endpoint on the audioWorkletNode.port")(),this.workletProxy=wrap$$module$node_modules$comlink$dist$esm$comlink_mjs(this.node.port)}catch(e){console.error("COMLINK ERROR",e)}await this.workletProxy.initializeMessagePort(transfer$$module$node_modules$comlink$dist$esm$comlink_mjs({messagePort:this.ipcMessagePorts.workerMessagePort,
+rtmidiPort:this.ipcMessagePorts.csoundWorkerRtMidiPort},[this.ipcMessagePorts.workerMessagePort,this.ipcMessagePorts.csoundWorkerRtMidiPort]));this.ipcMessagePorts.mainMessagePort.addEventListener("message",messageEventHandler$$module$src$mains$messages_main(this));this.ipcMessagePorts.mainMessagePort.start();await this.workletProxy.initialize(a(),b);const d=await makeProxyCallback$$module$src$utils(this.workletProxy,void 0,"csoundCreate",this.currentPlayState)();this.csoundInstance=d;await makeProxyCallback$$module$src$utils(this.workletProxy,
+d,"csoundInitialize",this.currentPlayState)(0);this.exportApi.pause=this.csoundPause.bind(this);this.exportApi.resume=this.csoundResume.bind(this);this.exportApi.terminateInstance=this.terminateInstance.bind(this);this.exportApi.getAudioContext=async()=>this.audioContext;this.exportApi.getNode=async()=>this.node;this.exportApi.enableAudioInput=enableAudioInput$$module$src$mains$io_utils.bind(this.exportApi);this.exportApi.name="Csound: Audio Worklet, Single-threaded";this.exportApi=this.publicEvents.decorateAPI(this.exportApi);
+this.exportApi.addListener("message",console.log);for(const e of Object.keys(api$$module$src$libcsound)){const f=api$$module$src$libcsound[e],g=makeProxyCallback$$module$src$utils(this.workletProxy,d,e,this.currentPlayState);switch(e){case "csoundCreate":break;case "csoundStart":a=async function(){this.eventPromises.createStartPromise();var h=await this.workletProxy.isRequestingInput();if(await this.workletProxy.isRequestingRealtimeOutput())return h&&this.exportApi.enableAudioInput(),await this.exportApi._isRequestingRtMidiInput(d)&&
+requestMidi$$module$src$utils$request_midi({onMidiMessage:this.handleMidiInput.bind(this)}),h=await g({csound:d}),this.publicEvents.triggerOnAudioNodeCreated(this.node),await this.eventPromises.waitForStart(),h;g({csound:d});this.publicEvents.triggerOnAudioNodeCreated(this.node);await this.eventPromises.waitForStart();return 0};a.toString=()=>f.toString();this.exportApi.start=a.bind(this);break;case "csoundStop":a=async()=>{if(this.eventPromises.isWaitingToStop())return logSinglethreadWorkletMain$$module$src$logger("already waiting to stop, doing nothing")(),
+-1;this.eventPromises.createStopPromise();const h=await g();await this.eventPromises.waitForStop();return h};a.toString=()=>f.toString();this.exportApi.stop=a.bind(this);break;case "fs":this.exportApi.fs={};Object.keys(f).forEach(h=>{const k=makeProxyCallback$$module$src$utils(this.workletProxy,d,h,this.currentPlayState);k.toString=()=>f[h].toString();this.exportApi.fs[h]=k});break;default:g.toString=()=>f.toString(),this.exportApi[csoundApiRename$$module$src$utils(e)]=g}}return this.exportApi}}
+var $jscompDefaultExport$$module$src$mains$worklet_singlethread_main=SingleThreadAudioWorkletMainThread$$module$src$mains$worklet_singlethread_main,module$src$mains$worklet_singlethread_main={};module$src$mains$worklet_singlethread_main.default=$jscompDefaultExport$$module$src$mains$worklet_singlethread_main;(0,module$node_modules$unmute_ios_audio$index.default)();
+const Csound$$module$src$index=async function({audioContext:a,inputChannelCount:b,outputChannelCount:c,autoConnect:d=!0,withPlugins:e=[],useWorker:f=!1,useSAB:g=!0,useSPN:h=!1}={}){const k=a&&WebkitAudioContext$$module$src$utils()&&a instanceof WebkitAudioContext$$module$src$utils();k||(a=a||new (WebkitAudioContext$$module$src$utils())({latencyHint:"interactive"}));isSafari$$module$src$utils()&&a.resume();const n=areWorkletsSupported$$module$src$utils(),m=isScriptProcessorNodeSupported$$module$src$utils();
+if(f){n?logIndex$$module$src$logger("worklet support detected")():m?logIndex$$module$src$logger("scriptProcessorNode support detected")():console.error("No WebAudio Support detected");var l;!h&&n?l=new $jscompDefaultExport$$module$src$mains$worklet_main({audioContext:a,audioContextIsProvided:k,autoConnect:d}):m&&(l=new $jscompDefaultExport$$module$src$mains$old_spn_main({audioContext:a,audioContextIsProvided:k,autoConnect:d}));if(l)return(d=isSabSupported$$module$src$utils())?g&&logIndex$$module$src$logger("using SharedArrayBuffers")():
+logIndex$$module$src$logger("SharedArrayBuffers not found, falling back to Vanilla concurrency")(),a=d&&n&&g?new $jscompDefaultExport$$module$src$mains$sab_main({audioWorker:l,audioContext:a,audioContextIsProvided:k,inputChannelCount:b,outputChannelCount:c}):new $jscompDefaultExport$$module$src$mains$vanilla_main({audioWorker:l,audioContextIsProvided:k}),logIndex$$module$src$logger("starting Csound thread initialization via WebWorker")(),await a.initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,
+withPlugins:e}),e=a.api}else{if(n&&!h)return logIndex$$module$src$logger("Single Thread AudioWorklet")(),(new $jscompDefaultExport$$module$src$mains$worklet_singlethread_main({audioContext:a,inputChannelCount:b||2,outputChannelCount:c||2})).initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,withPlugins:e,autoConnect:d});if(m)return logIndex$$module$src$logger("Single Thread ScriptProcessorNode")(),await (new $jscompDefaultExport$$module$src$mains$spn_main({audioContext:a,
+inputChannelCount:b||2,outputChannelCount:c||2})).initialize({wasmDataURI:$jscompDefaultExport$$module$dist$__csound_wasm_inline,withPlugins:e,autoConnect:d})}console.error("No detectable WebAudioAPI in current environment")};goog.exportSymbol("Csound$$module$src$index",Csound$$module$src$index);var module$src$index={};module$src$index.Csound=Csound$$module$src$index;
+const Csound = Csound$$module$src$index;
+Csound.toString = () => 'async (options) => CsoundObj;';
+export { Csound }
+export default Csound
+//# sourceMappingURL=csound.js.map
diff --git a/site/code/d3.v7.min.js b/site/code/d3.v7.min.js
new file mode 100644
index 0000000..33bb880
--- /dev/null
+++ b/site/code/d3.v7.min.js
@@ -0,0 +1,2 @@
+// https://d3js.org v7.9.0 Copyright 2010-2023 Mike Bostock
+!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).d3=t.d3||{})}(this,(function(t){"use strict";function n(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function e(t,n){return null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function r(t){let r,o,a;function u(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const r=e+i>>>1;o(t[r],n)<0?e=r+1:i=r}while(e<i)}return e}return 2!==t.length?(r=n,o=(e,r)=>n(t(e),r),a=(n,e)=>t(n)-e):(r=t===n||t===e?t:i,o=t,a=t),{left:u,center:function(t,n,e=0,r=t.length){const i=u(t,n,e,r-1);return i>e&&a(t[i-1],n)>-a(t[i],n)?i-1:i},right:function(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const r=e+i>>>1;o(t[r],n)<=0?e=r+1:i=r}while(e<i)}return e}}}function i(){return 0}function o(t){return null===t?NaN:+t}const a=r(n),u=a.right,c=a.left,f=r(o).center;var s=u;const l=d(y),h=d((function(t){const n=y(t);return(t,e,r,i,o)=>{n(t,e,(r<<=2)+0,(i<<=2)+0,o<<=2),n(t,e,r+1,i+1,o),n(t,e,r+2,i+2,o),n(t,e,r+3,i+3,o)}}));function d(t){return function(n,e,r=e){if(!((e=+e)>=0))throw new RangeError("invalid rx");if(!((r=+r)>=0))throw new RangeError("invalid ry");let{data:i,width:o,height:a}=n;if(!((o=Math.floor(o))>=0))throw new RangeError("invalid width");if(!((a=Math.floor(void 0!==a?a:i.length/o))>=0))throw new RangeError("invalid height");if(!o||!a||!e&&!r)return n;const u=e&&t(e),c=r&&t(r),f=i.slice();return u&&c?(p(u,f,i,o,a),p(u,i,f,o,a),p(u,f,i,o,a),g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)):u?(p(u,i,f,o,a),p(u,f,i,o,a),p(u,i,f,o,a)):c&&(g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)),n}}function p(t,n,e,r,i){for(let o=0,a=r*i;o<a;)t(n,e,o,o+=r,1)}function g(t,n,e,r,i){for(let o=0,a=r*i;o<r;++o)t(n,e,o,o+a,r)}function y(t){const n=Math.floor(t);if(n===t)return function(t){const n=2*t+1;return(e,r,i,o,a)=>{if(!((o-=a)>=i))return;let u=t*r[i];const c=a*t;for(let t=i,n=i+c;t<n;t+=a)u+=r[Math.min(o,t)];for(let t=i,f=o;t<=f;t+=a)u+=r[Math.min(o,t+c)],e[t]=u/n,u-=r[Math.max(i,t-c)]}}(t);const e=t-n,r=2*t+1;return(t,i,o,a,u)=>{if(!((a-=u)>=o))return;let c=n*i[o];const f=u*n,s=f+u;for(let t=o,n=o+f;t<n;t+=u)c+=i[Math.min(a,t)];for(let n=o,l=a;n<=l;n+=u)c+=i[Math.min(a,n+f)],t[n]=(c+e*(i[Math.max(o,n-s)]+i[Math.min(a,n+s)]))/r,c-=i[Math.max(o,n-f)]}}function v(t,n){let e=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&++e;else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(i=+i)>=i&&++e}return e}function _(t){return 0|t.length}function b(t){return!(t>0)}function m(t){return"object"!=typeof t||"length"in t?t:Array.from(t)}function x(t,n){let e,r=0,i=0,o=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(e=n-i,i+=e/++r,o+=e*(n-i));else{let a=-1;for(let u of t)null!=(u=n(u,++a,t))&&(u=+u)>=u&&(e=u-i,i+=e/++r,o+=e*(u-i))}if(r>1)return o/(r-1)}function w(t,n){const e=x(t,n);return e?Math.sqrt(e):e}function M(t,n){let e,r;if(void 0===n)for(const n of t)null!=n&&(void 0===e?n>=n&&(e=r=n):(e>n&&(e=n),r<n&&(r=n)));else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(void 0===e?o>=o&&(e=r=o):(e>o&&(e=o),r<o&&(r=o)))}return[e,r]}class T{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let e=0;for(let r=0;r<this._n&&r<32;r++){const i=n[r],o=t+i,a=Math.abs(t)<Math.abs(i)?t-(o-i):i-(o-t);a&&(n[e++]=a),t=o}return n[e]=t,this._n=e+1,this}valueOf(){const t=this._partials;let n,e,r,i=this._n,o=0;if(i>0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}class InternMap extends Map{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[n,e]of t)this.set(n,e)}get(t){return super.get(A(this,t))}has(t){return super.has(A(this,t))}set(t,n){return super.set(S(this,t),n)}delete(t){return super.delete(E(this,t))}}class InternSet extends Set{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(A(this,t))}add(t){return super.add(S(this,t))}delete(t){return super.delete(E(this,t))}}function A({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):e}function S({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):(t.set(r,e),e)}function E({_intern:t,_key:n},e){const r=n(e);return t.has(r)&&(e=t.get(r),t.delete(r)),e}function N(t){return null!==t&&"object"==typeof t?t.valueOf():t}function k(t){return t}function C(t,...n){return F(t,k,k,n)}function P(t,...n){return F(t,Array.from,k,n)}function z(t,n){for(let e=1,r=n.length;e<r;++e)t=t.flatMap((t=>t.pop().map((([n,e])=>[...t,n,e]))));return t}function $(t,n,...e){return F(t,k,n,e)}function D(t,n,...e){return F(t,Array.from,n,e)}function R(t){if(1!==t.length)throw new Error("duplicate key");return t[0]}function F(t,n,e,r){return function t(i,o){if(o>=r.length)return e(i);const a=new InternMap,u=r[o++];let c=-1;for(const t of i){const n=u(t,++c,i),e=a.get(n);e?e.push(t):a.set(n,[t])}for(const[n,e]of a)a.set(n,t(e,o));return n(a)}(t,0)}function q(t,n){return Array.from(n,(n=>t[n]))}function U(t,...n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");t=Array.from(t);let[e]=n;if(e&&2!==e.length||n.length>1){const r=Uint32Array.from(t,((t,n)=>n));return n.length>1?(n=n.map((n=>t.map(n))),r.sort(((t,e)=>{for(const r of n){const n=O(r[t],r[e]);if(n)return n}}))):(e=t.map(e),r.sort(((t,n)=>O(e[t],e[n])))),q(t,r)}return t.sort(I(e))}function I(t=n){if(t===n)return O;if("function"!=typeof t)throw new TypeError("compare is not a function");return(n,e)=>{const r=t(n,e);return r||0===r?r:(0===t(e,e))-(0===t(n,n))}}function O(t,n){return(null==t||!(t>=t))-(null==n||!(n>=n))||(t<n?-1:t>n?1:0)}var B=Array.prototype.slice;function Y(t){return()=>t}const L=Math.sqrt(50),j=Math.sqrt(10),H=Math.sqrt(2);function X(t,n,e){const r=(n-t)/Math.max(0,e),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=L?10:o>=j?5:o>=H?2:1;let u,c,f;return i<0?(f=Math.pow(10,-i)/a,u=Math.round(t*f),c=Math.round(n*f),u/f<t&&++u,c/f>n&&--c,f=-f):(f=Math.pow(10,i)*a,u=Math.round(t/f),c=Math.round(n/f),u*f<t&&++u,c*f>n&&--c),c<u&&.5<=e&&e<2?X(t,n,2*e):[u,c,f]}function G(t,n,e){if(!((e=+e)>0))return[];if((t=+t)===(n=+n))return[t];const r=n<t,[i,o,a]=r?X(n,t,e):X(t,n,e);if(!(o>=i))return[];const u=o-i+1,c=new Array(u);if(r)if(a<0)for(let t=0;t<u;++t)c[t]=(o-t)/-a;else for(let t=0;t<u;++t)c[t]=(o-t)*a;else if(a<0)for(let t=0;t<u;++t)c[t]=(i+t)/-a;else for(let t=0;t<u;++t)c[t]=(i+t)*a;return c}function V(t,n,e){return X(t=+t,n=+n,e=+e)[2]}function W(t,n,e){e=+e;const r=(n=+n)<(t=+t),i=r?V(n,t,e):V(t,n,e);return(r?-1:1)*(i<0?1/-i:i)}function Z(t,n,e){let r;for(;;){const i=V(t,n,e);if(i===r||0===i||!isFinite(i))return[t,n];i>0?(t=Math.floor(t/i)*i,n=Math.ceil(n/i)*i):i<0&&(t=Math.ceil(t*i)/i,n=Math.floor(n*i)/i),r=i}}function K(t){return Math.max(1,Math.ceil(Math.log(v(t))/Math.LN2)+1)}function Q(){var t=k,n=M,e=K;function r(r){Array.isArray(r)||(r=Array.from(r));var i,o,a,u=r.length,c=new Array(u);for(i=0;i<u;++i)c[i]=t(r[i],i,r);var f=n(c),l=f[0],h=f[1],d=e(c,l,h);if(!Array.isArray(d)){const t=h,e=+d;if(n===M&&([l,h]=Z(l,h,e)),(d=G(l,h,e))[0]<=l&&(a=V(l,h,e)),d[d.length-1]>=h)if(t>=h&&n===M){const t=V(l,h,e);isFinite(t)&&(t>0?h=(Math.floor(h/t)+1)*t:t<0&&(h=(Math.ceil(h*-t)+1)/-t))}else d.pop()}for(var p=d.length,g=0,y=p;d[g]<=l;)++g;for(;d[y-1]>h;)--y;(g||y<p)&&(d=d.slice(g,y),p=y-g);var v,_=new Array(p+1);for(i=0;i<=p;++i)(v=_[i]=[]).x0=i>0?d[i-1]:l,v.x1=i<p?d[i]:h;if(isFinite(a)){if(a>0)for(i=0;i<u;++i)null!=(o=c[i])&&l<=o&&o<=h&&_[Math.min(p,Math.floor((o-l)/a))].push(r[i]);else if(a<0)for(i=0;i<u;++i)if(null!=(o=c[i])&&l<=o&&o<=h){const t=Math.floor((l-o)*a);_[Math.min(p,t+(d[t]<=o))].push(r[i])}}else for(i=0;i<u;++i)null!=(o=c[i])&&l<=o&&o<=h&&_[s(d,o,0,p)].push(r[i]);return _}return r.value=function(n){return arguments.length?(t="function"==typeof n?n:Y(n),r):t},r.domain=function(t){return arguments.length?(n="function"==typeof t?t:Y([t[0],t[1]]),r):n},r.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Y(Array.isArray(t)?B.call(t):t),r):e},r}function J(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e<n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e<i||void 0===e&&i>=i)&&(e=i)}return e}function tt(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e<n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e<o||void 0===e&&o>=o)&&(e=o,r=i);return r}function nt(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e>i||void 0===e&&i>=i)&&(e=i)}return e}function et(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e>n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e>o||void 0===e&&o>=o)&&(e=o,r=i);return r}function rt(t,n,e=0,r=1/0,i){if(n=Math.floor(n),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(t.length-1,r)),!(e<=n&&n<=r))return t;for(i=void 0===i?O:I(i);r>e;){if(r-e>600){const o=r-e+1,a=n-e+1,u=Math.log(o),c=.5*Math.exp(2*u/3),f=.5*Math.sqrt(u*c*(o-c)/o)*(a-o/2<0?-1:1);rt(t,n,Math.max(e,Math.floor(n-a*c/o+f)),Math.min(r,Math.floor(n+(o-a)*c/o+f)),i)}const o=t[n];let a=e,u=r;for(it(t,e,n),i(t[r],o)>0&&it(t,e,r);a<u;){for(it(t,a,u),++a,--u;i(t[a],o)<0;)++a;for(;i(t[u],o)>0;)--u}0===i(t[e],o)?it(t,e,u):(++u,it(t,u,r)),u<=n&&(e=u+1),n<=u&&(r=u-1)}return t}function it(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function ot(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)>0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)>0:0===e(n,n))&&(r=n,i=!0);return r}function at(t,n,e){if(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,e)),(r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return nt(t);if(n>=1)return J(t);var r,i=(r-1)*n,o=Math.floor(i),a=J(rt(t,o).subarray(0,o+1));return a+(nt(t.subarray(o+1))-a)*(i-o)}}function ut(t,n,e=o){if((r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,a=Math.floor(i),u=+e(t[a],a,t);return u+(+e(t[a+1],a+1,t)-u)*(i-a)}}function ct(t,n,e=o){if(!isNaN(n=+n)){if(r=Float64Array.from(t,((n,r)=>o(e(t[r],r,t)))),n<=0)return et(r);if(n>=1)return tt(r);var r,i=Uint32Array.from(t,((t,n)=>n)),a=r.length-1,u=Math.floor(a*n);return rt(i,u,0,a,((t,n)=>O(r[t],r[n]))),(u=ot(i.subarray(0,u+1),(t=>r[t])))>=0?u:-1}}function ft(t){return Array.from(function*(t){for(const n of t)yield*n}(t))}function st(t,n){return[t,n]}function lt(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}function ht(t,e=n){if(1===e.length)return et(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)<0)&&(r=n,i=o);return i}var dt=pt(Math.random);function pt(t){return function(n,e=0,r=n.length){let i=r-(e=+e);for(;i;){const r=t()*i--|0,o=n[i+e];n[i+e]=n[r+e],n[r+e]=o}return n}}function gt(t){if(!(i=t.length))return[];for(var n=-1,e=nt(t,yt),r=new Array(e);++n<e;)for(var i,o=-1,a=r[n]=new Array(i);++o<i;)a[o]=t[o][n];return r}function yt(t){return t.length}function vt(t){return t instanceof InternSet?t:new InternSet(t)}function _t(t,n){const e=t[Symbol.iterator](),r=new Set;for(const t of n){const n=bt(t);if(r.has(n))continue;let i,o;for(;({value:i,done:o}=e.next());){if(o)return!1;const t=bt(i);if(r.add(t),Object.is(n,t))break}}return!0}function bt(t){return null!==t&&"object"==typeof t?t.valueOf():t}function mt(t){return t}var xt=1,wt=2,Mt=3,Tt=4,At=1e-6;function St(t){return"translate("+t+",0)"}function Et(t){return"translate(0,"+t+")"}function Nt(t){return n=>+t(n)}function kt(t,n){return n=Math.max(0,t.bandwidth()-2*n)/2,t.round()&&(n=Math.round(n)),e=>+t(e)+n}function Ct(){return!this.__axis}function Pt(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,f=t===xt||t===Tt?-1:1,s=t===Tt||t===wt?"x":"y",l=t===xt||t===Mt?St:Et;function h(h){var d=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,p=null==i?n.tickFormat?n.tickFormat.apply(n,e):mt:i,g=Math.max(o,0)+u,y=n.range(),v=+y[0]+c,_=+y[y.length-1]+c,b=(n.bandwidth?kt:Nt)(n.copy(),c),m=h.selection?h.selection():h,x=m.selectAll(".domain").data([null]),w=m.selectAll(".tick").data(d,n).order(),M=w.exit(),T=w.enter().append("g").attr("class","tick"),A=w.select("line"),S=w.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(T),A=A.merge(T.append("line").attr("stroke","currentColor").attr(s+"2",f*o)),S=S.merge(T.append("text").attr("fill","currentColor").attr(s,f*g).attr("dy",t===xt?"0em":t===Mt?"0.71em":"0.32em")),h!==m&&(x=x.transition(h),w=w.transition(h),A=A.transition(h),S=S.transition(h),M=M.transition(h).attr("opacity",At).attr("transform",(function(t){return isFinite(t=b(t))?l(t+c):this.getAttribute("transform")})),T.attr("opacity",At).attr("transform",(function(t){var n=this.parentNode.__axis;return l((n&&isFinite(n=n(t))?n:b(t))+c)}))),M.remove(),x.attr("d",t===Tt||t===wt?a?"M"+f*a+","+v+"H"+c+"V"+_+"H"+f*a:"M"+c+","+v+"V"+_:a?"M"+v+","+f*a+"V"+c+"H"+_+"V"+f*a:"M"+v+","+c+"H"+_),w.attr("opacity",1).attr("transform",(function(t){return l(b(t)+c)})),A.attr(s+"2",f*o),S.attr(s,f*g).text(p),m.filter(Ct).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===wt?"start":t===Tt?"end":"middle"),m.each((function(){this.__axis=b}))}return h.scale=function(t){return arguments.length?(n=t,h):n},h.ticks=function(){return e=Array.from(arguments),h},h.tickArguments=function(t){return arguments.length?(e=null==t?[]:Array.from(t),h):e.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(o=a=+t,h):o},h.tickSizeInner=function(t){return arguments.length?(o=+t,h):o},h.tickSizeOuter=function(t){return arguments.length?(a=+t,h):a},h.tickPadding=function(t){return arguments.length?(u=+t,h):u},h.offset=function(t){return arguments.length?(c=+t,h):c},h}var zt={value:()=>{}};function $t(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new Dt(r)}function Dt(t){this._=t}function Rt(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function Ft(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=zt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}Dt.prototype=$t.prototype={constructor:Dt,on:function(t,n){var e,r,i=this._,o=(r=i,(t+"").trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");if(e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++a<u;)if(e=(t=o[a]).type)i[e]=Ft(i[e],t.name,n);else if(null==n)for(e in i)i[e]=Ft(i[e],t.name,null);return this}for(;++a<u;)if((e=(t=o[a]).type)&&(e=Rt(i[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new Dt(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};var qt="http://www.w3.org/1999/xhtml",Ut={svg:"http://www.w3.org/2000/svg",xhtml:qt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function It(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Ut.hasOwnProperty(n)?{space:Ut[n],local:t}:t}function Ot(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===qt&&n.documentElement.namespaceURI===qt?n.createElement(t):n.createElementNS(e,t)}}function Bt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Yt(t){var n=It(t);return(n.local?Bt:Ot)(n)}function Lt(){}function jt(t){return null==t?Lt:function(){return this.querySelector(t)}}function Ht(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Xt(){return[]}function Gt(t){return null==t?Xt:function(){return this.querySelectorAll(t)}}function Vt(t){return function(){return this.matches(t)}}function Wt(t){return function(n){return n.matches(t)}}var Zt=Array.prototype.find;function Kt(){return this.firstElementChild}var Qt=Array.prototype.filter;function Jt(){return Array.from(this.children)}function tn(t){return new Array(t.length)}function nn(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function en(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;u<f;++u)(a=n[u])?(a.__data__=o[u],r[u]=a):e[u]=new nn(t,o[u]);for(;u<c;++u)(a=n[u])&&(i[u]=a)}function rn(t,n,e,r,i,o,a){var u,c,f,s=new Map,l=n.length,h=o.length,d=new Array(l);for(u=0;u<l;++u)(c=n[u])&&(d[u]=f=a.call(c,c.__data__,u,n)+"",s.has(f)?i[u]=c:s.set(f,c));for(u=0;u<h;++u)f=a.call(t,o[u],u,o)+"",(c=s.get(f))?(r[u]=c,c.__data__=o[u],s.delete(f)):e[u]=new nn(t,o[u]);for(u=0;u<l;++u)(c=n[u])&&s.get(d[u])===c&&(i[u]=c)}function on(t){return t.__data__}function an(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function un(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function cn(t){return function(){this.removeAttribute(t)}}function fn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function sn(t,n){return function(){this.setAttribute(t,n)}}function ln(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function hn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function dn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function pn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function gn(t){return function(){this.style.removeProperty(t)}}function yn(t,n,e){return function(){this.style.setProperty(t,n,e)}}function vn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function _n(t,n){return t.style.getPropertyValue(n)||pn(t).getComputedStyle(t,null).getPropertyValue(n)}function bn(t){return function(){delete this[t]}}function mn(t,n){return function(){this[t]=n}}function xn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function wn(t){return t.trim().split(/^|\s+/)}function Mn(t){return t.classList||new Tn(t)}function Tn(t){this._node=t,this._names=wn(t.getAttribute("class")||"")}function An(t,n){for(var e=Mn(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function Sn(t,n){for(var e=Mn(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function En(t){return function(){An(this,t)}}function Nn(t){return function(){Sn(this,t)}}function kn(t,n){return function(){(n.apply(this,arguments)?An:Sn)(this,t)}}function Cn(){this.textContent=""}function Pn(t){return function(){this.textContent=t}}function zn(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function $n(){this.innerHTML=""}function Dn(t){return function(){this.innerHTML=t}}function Rn(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function Fn(){this.nextSibling&&this.parentNode.appendChild(this)}function qn(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Un(){return null}function In(){var t=this.parentNode;t&&t.removeChild(this)}function On(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Bn(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Yn(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function Ln(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var a=0,u=i.length;a<u;++a)if((r=i[a]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function jn(t,n,e){var r=pn(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function Hn(t,n){return function(){return jn(this,t,n)}}function Xn(t,n){return function(){return jn(this,t,n.apply(this,arguments))}}nn.prototype={constructor:nn,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}},Tn.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Gn=[null];function Vn(t,n){this._groups=t,this._parents=n}function Wn(){return new Vn([[document.documentElement]],Gn)}function Zn(t){return"string"==typeof t?new Vn([[document.querySelector(t)]],[document.documentElement]):new Vn([[t]],Gn)}Vn.prototype=Wn.prototype={constructor:Vn,select:function(t){"function"!=typeof t&&(t=jt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a,u=n[i],c=u.length,f=r[i]=new Array(c),s=0;s<c;++s)(o=u[s])&&(a=t.call(o,o.__data__,s,u))&&("__data__"in o&&(a.__data__=o.__data__),f[s]=a);return new Vn(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return Ht(t.apply(this,arguments))}}(t):Gt(t);for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var a,u=n[o],c=u.length,f=0;f<c;++f)(a=u[f])&&(r.push(t.call(a,a.__data__,f,u)),i.push(a));return new Vn(r,i)},selectChild:function(t){return this.select(null==t?Kt:function(t){return function(){return Zt.call(this.children,t)}}("function"==typeof t?t:Wt(t)))},selectChildren:function(t){return this.selectAll(null==t?Jt:function(t){return function(){return Qt.call(this.children,t)}}("function"==typeof t?t:Wt(t)))},filter:function(t){"function"!=typeof t&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Vn(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,on);var e=n?rn:en,r=this._parents,i=this._groups;"function"!=typeof t&&(t=function(t){return function(){return t}}(t));for(var o=i.length,a=new Array(o),u=new Array(o),c=new Array(o),f=0;f<o;++f){var s=r[f],l=i[f],h=l.length,d=an(t.call(s,s&&s.__data__,f,r)),p=d.length,g=u[f]=new Array(p),y=a[f]=new Array(p);e(s,l,g,y,c[f]=new Array(h),d,n);for(var v,_,b=0,m=0;b<p;++b)if(v=g[b]){for(b>=m&&(m=b+1);!(_=y[m])&&++m<p;);v._next=_||null}}return(a=new Vn(a,r))._enter=u,a._exit=c,a},enter:function(){return new Vn(this._enter||this._groups.map(tn),this._parents)},exit:function(){return new Vn(this._exit||this._groups.map(tn),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,a=Math.min(i,o),u=new Array(i),c=0;c<a;++c)for(var f,s=e[c],l=r[c],h=s.length,d=u[c]=new Array(h),p=0;p<h;++p)(f=s[p]||l[p])&&(d[p]=f);for(;c<i;++c)u[c]=e[c];return new Vn(u,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=un);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var a,u=e[o],c=u.length,f=i[o]=new Array(c),s=0;s<c;++s)(a=u[s])&&(f[s]=a);f.sort(n)}return new Vn(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){let t=0;for(const n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,n){var e=It(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?fn:cn:"function"==typeof n?e.local?dn:hn:e.local?ln:sn)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?gn:"function"==typeof n?vn:yn)(t,n,null==e?"":e)):_n(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?bn:"function"==typeof n?xn:mn)(t,n)):this.node()[t]},classed:function(t,n){var e=wn(t+"");if(arguments.length<2){for(var r=Mn(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?kn:n?En:Nn)(e,n))},text:function(t){return arguments.length?this.each(null==t?Cn:("function"==typeof t?zn:Pn)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?$n:("function"==typeof t?Rn:Dn)(t)):this.node().innerHTML},raise:function(){return this.each(Fn)},lower:function(){return this.each(qn)},append:function(t){var n="function"==typeof t?t:Yt(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:Yt(t),r=null==n?Un:"function"==typeof n?n:jt(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(In)},clone:function(t){return this.select(t?Bn:On)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=function(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?Ln:Yn,r=0;r<a;++r)this.each(u(o[r],n,e));return this}var u=this.node().__on;if(u)for(var c,f=0,s=u.length;f<s;++f)for(r=0,c=u[f];r<a;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,n){return this.each(("function"==typeof n?Xn:Hn)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,a=i.length;o<a;++o)(r=i[o])&&(yield r)}};var Kn=0;function Qn(){return new Jn}function Jn(){this._="@"+(++Kn).toString(36)}function te(t){let n;for(;n=t.sourceEvent;)t=n;return t}function ne(t,n){if(t=te(t),void 0===n&&(n=t.currentTarget),n){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(n.getScreenCTM().inverse())).x,r.y]}if(n.getBoundingClientRect){var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}}return[t.pageX,t.pageY]}Jn.prototype=Qn.prototype={constructor:Jn,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};const ee={passive:!1},re={capture:!0,passive:!1};function ie(t){t.stopImmediatePropagation()}function oe(t){t.preventDefault(),t.stopImmediatePropagation()}function ae(t){var n=t.document.documentElement,e=Zn(t).on("dragstart.drag",oe,re);"onselectstart"in n?e.on("selectstart.drag",oe,re):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function ue(t,n){var e=t.document.documentElement,r=Zn(t).on("dragstart.drag",null);n&&(r.on("click.drag",oe,re),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var ce=t=>()=>t;function fe(t,{sourceEvent:n,subject:e,target:r,identifier:i,active:o,x:a,y:u,dx:c,dy:f,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:u,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:f,enumerable:!0,configurable:!0},_:{value:s}})}function se(t){return!t.ctrlKey&&!t.button}function le(){return this.parentNode}function he(t,n){return null==n?{x:t.x,y:t.y}:n}function de(){return navigator.maxTouchPoints||"ontouchstart"in this}function pe(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function ge(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function ye(){}fe.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var ve=.7,_e=1/ve,be="\\s*([+-]?\\d+)\\s*",me="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",xe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",we=/^#([0-9a-f]{3,8})$/,Me=new RegExp(`^rgb\\(${be},${be},${be}\\)$`),Te=new RegExp(`^rgb\\(${xe},${xe},${xe}\\)$`),Ae=new RegExp(`^rgba\\(${be},${be},${be},${me}\\)$`),Se=new RegExp(`^rgba\\(${xe},${xe},${xe},${me}\\)$`),Ee=new RegExp(`^hsl\\(${me},${xe},${xe}\\)$`),Ne=new RegExp(`^hsla\\(${me},${xe},${xe},${me}\\)$`),ke={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Ce(){return this.rgb().formatHex()}function Pe(){return this.rgb().formatRgb()}function ze(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=we.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?$e(n):3===e?new qe(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?De(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?De(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=Me.exec(t))?new qe(n[1],n[2],n[3],1):(n=Te.exec(t))?new qe(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Ae.exec(t))?De(n[1],n[2],n[3],n[4]):(n=Se.exec(t))?De(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Ee.exec(t))?Le(n[1],n[2]/100,n[3]/100,1):(n=Ne.exec(t))?Le(n[1],n[2]/100,n[3]/100,n[4]):ke.hasOwnProperty(t)?$e(ke[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function $e(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function De(t,n,e,r){return r<=0&&(t=n=e=NaN),new qe(t,n,e,r)}function Re(t){return t instanceof ye||(t=ze(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function Fe(t,n,e,r){return 1===arguments.length?Re(t):new qe(t,n,e,null==r?1:r)}function qe(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Ue(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function Ie(){const t=Oe(this.opacity);return`${1===t?"rgb(":"rgba("}${Be(this.r)}, ${Be(this.g)}, ${Be(this.b)}${1===t?")":`, ${t})`}`}function Oe(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Be(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Be(t))<16?"0":"")+t.toString(16)}function Le(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Xe(t,n,e,r)}function je(t){if(t instanceof Xe)return new Xe(t.h,t.s,t.l,t.opacity);if(t instanceof ye||(t=ze(t)),!t)return new Xe;if(t instanceof Xe)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e<r):e===o?(r-n)/u+2:(n-e)/u+4,u/=c<.5?o+i:2-o-i,a*=60):u=c>0&&c<1?0:a,new Xe(a,u,c,t.opacity)}function He(t,n,e,r){return 1===arguments.length?je(t):new Xe(t,n,e,null==r?1:r)}function Xe(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ge(t){return(t=(t||0)%360)<0?t+360:t}function Ve(t){return Math.max(0,Math.min(1,t||0))}function We(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}pe(ye,ze,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ce,formatHex:Ce,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return je(this).formatHsl()},formatRgb:Pe,toString:Pe}),pe(qe,Fe,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new qe(Be(this.r),Be(this.g),Be(this.b),Oe(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ue,formatHex:Ue,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Ie,toString:Ie})),pe(Xe,He,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Xe(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Xe(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new qe(We(t>=240?t-240:t+120,i,r),We(t,i,r),We(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Xe(Ge(this.h),Ve(this.s),Ve(this.l),Oe(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Oe(this.opacity);return`${1===t?"hsl(":"hsla("}${Ge(this.h)}, ${100*Ve(this.s)}%, ${100*Ve(this.l)}%${1===t?")":`, ${t})`}`}}));const Ze=Math.PI/180,Ke=180/Math.PI,Qe=.96422,Je=1,tr=.82521,nr=4/29,er=6/29,rr=3*er*er,ir=er*er*er;function or(t){if(t instanceof ur)return new ur(t.l,t.a,t.b,t.opacity);if(t instanceof pr)return gr(t);t instanceof qe||(t=Re(t));var n,e,r=lr(t.r),i=lr(t.g),o=lr(t.b),a=cr((.2225045*r+.7168786*i+.0606169*o)/Je);return r===i&&i===o?n=e=a:(n=cr((.4360747*r+.3850649*i+.1430804*o)/Qe),e=cr((.0139322*r+.0971045*i+.7141733*o)/tr)),new ur(116*a-16,500*(n-a),200*(a-e),t.opacity)}function ar(t,n,e,r){return 1===arguments.length?or(t):new ur(t,n,e,null==r?1:r)}function ur(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function cr(t){return t>ir?Math.pow(t,1/3):t/rr+nr}function fr(t){return t>er?t*t*t:rr*(t-nr)}function sr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function lr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function hr(t){if(t instanceof pr)return new pr(t.h,t.c,t.l,t.opacity);if(t instanceof ur||(t=or(t)),0===t.a&&0===t.b)return new pr(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*Ke;return new pr(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function dr(t,n,e,r){return 1===arguments.length?hr(t):new pr(t,n,e,null==r?1:r)}function pr(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function gr(t){if(isNaN(t.h))return new ur(t.l,0,0,t.opacity);var n=t.h*Ze;return new ur(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}pe(ur,ar,ge(ye,{brighter(t){return new ur(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new ur(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new qe(sr(3.1338561*(n=Qe*fr(n))-1.6168667*(t=Je*fr(t))-.4906146*(e=tr*fr(e))),sr(-.9787684*n+1.9161415*t+.033454*e),sr(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),pe(pr,dr,ge(ye,{brighter(t){return new pr(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new pr(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return gr(this).rgb()}}));var yr=-.14861,vr=1.78277,_r=-.29227,br=-.90649,mr=1.97294,xr=mr*br,wr=mr*vr,Mr=vr*_r-br*yr;function Tr(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Ar)return new Ar(t.h,t.s,t.l,t.opacity);t instanceof qe||(t=Re(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Mr*r+xr*n-wr*e)/(Mr+xr-wr),o=r-i,a=(mr*(e-i)-_r*o)/br,u=Math.sqrt(a*a+o*o)/(mr*i*(1-i)),c=u?Math.atan2(a,o)*Ke-120:NaN;return new Ar(c<0?c+360:c,u,i,t.opacity)}(t):new Ar(t,n,e,null==r?1:r)}function Ar(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sr(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}function Er(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<n-1?t[r+2]:2*o-i;return Sr((e-r/n)*n,a,i,o,u)}}function Nr(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],a=t[(r+1)%n],u=t[(r+2)%n];return Sr((e-r/n)*n,i,o,a,u)}}pe(Ar,Tr,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Ar(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Ar(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Ze,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new qe(255*(n+e*(yr*r+vr*i)),255*(n+e*(_r*r+br*i)),255*(n+e*(mr*r)),this.opacity)}}));var kr=t=>()=>t;function Cr(t,n){return function(e){return t+e*n}}function Pr(t,n){var e=n-t;return e?Cr(t,e>180||e<-180?e-360*Math.round(e/360):e):kr(isNaN(t)?n:t)}function zr(t){return 1==(t=+t)?$r:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):kr(isNaN(n)?e:n)}}function $r(t,n){var e=n-t;return e?Cr(t,e):kr(isNaN(t)?n:t)}var Dr=function t(n){var e=zr(n);function r(t,n){var r=e((t=Fe(t)).r,(n=Fe(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=$r(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function Rr(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;e<i;++e)r=Fe(n[e]),o[e]=r.r||0,a[e]=r.g||0,u[e]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}var Fr=Rr(Er),qr=Rr(Nr);function Ur(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function Ir(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Or(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(e=0;e<i;++e)o[e]=Gr(t[e],n[e]);for(;e<r;++e)a[e]=n[e];return function(t){for(e=0;e<i;++e)a[e]=o[e](t);return a}}function Br(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function Yr(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function Lr(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Gr(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var jr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Hr=new RegExp(jr.source,"g");function Xr(t,n){var e,r,i,o=jr.lastIndex=Hr.lastIndex=0,a=-1,u=[],c=[];for(t+="",n+="";(e=jr.exec(t))&&(r=Hr.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:Yr(e,r)})),o=Hr.lastIndex;return o<n.length&&(i=n.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?c[0]?function(t){return function(n){return t(n)+""}}(c[0].x):function(t){return function(){return t}}(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)u[(e=c[r]).i]=e.x(t);return u.join("")})}function Gr(t,n){var e,r=typeof n;return null==n||"boolean"===r?kr(n):("number"===r?Yr:"string"===r?(e=ze(n))?(n=e,Dr):Xr:n instanceof ze?Dr:n instanceof Date?Br:Ir(n)?Ur:Array.isArray(n)?Or:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?Lr:Yr)(t,n)}function Vr(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}var Wr,Zr=180/Math.PI,Kr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qr(t,n,e,r,i,o){var a,u,c;return(a=Math.sqrt(t*t+n*n))&&(t/=a,n/=a),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,c/=u),t*r<n*e&&(t=-t,n=-n,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Zr,skewX:Math.atan(c)*Zr,scaleX:a,scaleY:u}}function Jr(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],c=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var c=a.push("translate(",null,n,null,e);u.push({i:c-4,x:Yr(t,i)},{i:c-2,x:Yr(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}(o.translateX,o.translateY,a.translateX,a.translateY,u,c),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Yr(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Yr(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Yr(t,e)},{i:u-2,x:Yr(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e<r;)u[(n=c[e]).i]=n.x(t);return u.join("")}}}var ti=Jr((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Kr:Qr(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),ni=Jr((function(t){return null==t?Kr:(Wr||(Wr=document.createElementNS("http://www.w3.org/2000/svg","g")),Wr.setAttribute("transform",t),(t=Wr.transform.baseVal.consolidate())?Qr((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Kr)}),", ",")",")");function ei(t){return((t=Math.exp(t))+1/t)/2}var ri=function t(n,e,r){function i(t,i){var o,a,u=t[0],c=t[1],f=t[2],s=i[0],l=i[1],h=i[2],d=s-u,p=l-c,g=d*d+p*p;if(g<1e-12)a=Math.log(h/f)/n,o=function(t){return[u+t*d,c+t*p,f*Math.exp(n*t*a)]};else{var y=Math.sqrt(g),v=(h*h-f*f+r*g)/(2*f*e*y),_=(h*h-f*f-r*g)/(2*h*e*y),b=Math.log(Math.sqrt(v*v+1)-v),m=Math.log(Math.sqrt(_*_+1)-_);a=(m-b)/n,o=function(t){var r=t*a,i=ei(b),o=f/(e*y)*(i*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(n*r+b)-function(t){return((t=Math.exp(t))-1/t)/2}(b));return[u+o*d,c+o*p,f*i/ei(n*r+b)]}}return o.duration=1e3*a*n/Math.SQRT2,o}return i.rho=function(n){var e=Math.max(.001,+n),r=e*e;return t(e,r,r*r)},i}(Math.SQRT2,2,4);function ii(t){return function(n,e){var r=t((n=He(n)).h,(e=He(e)).h),i=$r(n.s,e.s),o=$r(n.l,e.l),a=$r(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var oi=ii(Pr),ai=ii($r);function ui(t){return function(n,e){var r=t((n=dr(n)).h,(e=dr(e)).h),i=$r(n.c,e.c),o=$r(n.l,e.l),a=$r(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var ci=ui(Pr),fi=ui($r);function si(t){return function n(e){function r(n,r){var i=t((n=Tr(n)).h,(r=Tr(r)).h),o=$r(n.s,r.s),a=$r(n.l,r.l),u=$r(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=a(Math.pow(t,e)),n.opacity=u(t),n+""}}return e=+e,r.gamma=n,r}(1)}var li=si(Pr),hi=si($r);function di(t,n){void 0===n&&(n=t,t=Gr);for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e<r;)o[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[n](t-n)}}var pi,gi,yi=0,vi=0,_i=0,bi=1e3,mi=0,xi=0,wi=0,Mi="object"==typeof performance&&performance.now?performance:Date,Ti="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Ai(){return xi||(Ti(Si),xi=Mi.now()+wi)}function Si(){xi=0}function Ei(){this._call=this._time=this._next=null}function Ni(t,n,e){var r=new Ei;return r.restart(t,n,e),r}function ki(){Ai(),++yi;for(var t,n=pi;n;)(t=xi-n._time)>=0&&n._call.call(void 0,t),n=n._next;--yi}function Ci(){xi=(mi=Mi.now())+wi,yi=vi=0;try{ki()}finally{yi=0,function(){var t,n,e=pi,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:pi=n);gi=t,zi(r)}(),xi=0}}function Pi(){var t=Mi.now(),n=t-mi;n>bi&&(wi-=n,mi=t)}function zi(t){yi||(vi&&(vi=clearTimeout(vi)),t-xi>24?(t<1/0&&(vi=setTimeout(Ci,t-Mi.now()-wi)),_i&&(_i=clearInterval(_i))):(_i||(mi=Mi.now(),_i=setInterval(Pi,bi)),yi=1,Ti(Ci)))}function $i(t,n,e){var r=new Ei;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Ei.prototype=Ni.prototype={constructor:Ei,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Ai():+e)+(null==n?0:+n),this._next||gi===this||(gi?gi._next=this:pi=this,gi=this),this._call=t,this._time=e,zi()},stop:function(){this._call&&(this._call=null,this._time=1/0,zi())}};var Di=$t("start","end","cancel","interrupt"),Ri=[],Fi=0,qi=1,Ui=2,Ii=3,Oi=4,Bi=5,Yi=6;function Li(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=qi,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)}function a(o){var f,s,l,h;if(e.state!==qi)return c();for(f in i)if((h=i[f]).name===e.name){if(h.state===Ii)return $i(a);h.state===Oi?(h.state=Yi,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+f<n&&(h.state=Yi,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[f])}if($i((function(){e.state===Ii&&(e.state=Oi,e.timer.restart(u,e.delay,e.time),u(o))})),e.state=Ui,e.on.call("start",t,t.__data__,e.index,e.group),e.state===Ui){for(e.state=Ii,r=new Array(l=e.tween.length),f=0,s=-1;f<l;++f)(h=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(r[++s]=h);r.length=s+1}}function u(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(c),e.state=Bi,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);e.state===Bi&&(e.on.call("end",t,t.__data__,e.index,e.group),c())}function c(){for(var r in e.state=Yi,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=Ni(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:Di,tween:Ri,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Fi})}function ji(t,n){var e=Xi(t,n);if(e.state>Fi)throw new Error("too late; already scheduled");return e}function Hi(t,n){var e=Xi(t,n);if(e.state>Ii)throw new Error("too late; already running");return e}function Xi(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Gi(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>Ui&&e.state<Bi,e.state=Yi,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function Vi(t,n){var e,r;return function(){var i=Hi(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a<u;++a)if(r[a].name===n){(r=r.slice()).splice(a,1);break}i.tween=r}}function Wi(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Hi(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:n,value:e},c=0,f=i.length;c<f;++c)if(i[c].name===n){i[c]=u;break}c===f&&i.push(u)}o.tween=i}}function Zi(t,n,e){var r=t._id;return t.each((function(){var t=Hi(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Xi(t,r).value[n]}}function Ki(t,n){var e;return("number"==typeof n?Yr:n instanceof ze?Dr:(e=ze(n))?(n=e,Dr):Xr)(t,n)}function Qi(t){return function(){this.removeAttribute(t)}}function Ji(t){return function(){this.removeAttributeNS(t.space,t.local)}}function to(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}}function no(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}function eo(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}}function ro(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}function io(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}(t,i)),e}return i._value=n,i}function oo(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}(t,i)),e}return i._value=n,i}function ao(t,n){return function(){ji(this,t).delay=+n.apply(this,arguments)}}function uo(t,n){return n=+n,function(){ji(this,t).delay=n}}function co(t,n){return function(){Hi(this,t).duration=+n.apply(this,arguments)}}function fo(t,n){return n=+n,function(){Hi(this,t).duration=n}}var so=Wn.prototype.constructor;function lo(t){return function(){this.style.removeProperty(t)}}var ho=0;function po(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function go(t){return Wn().transition(t)}function yo(){return++ho}var vo=Wn.prototype;po.prototype=go.prototype={constructor:po,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=jt(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var u,c,f=r[a],s=f.length,l=o[a]=new Array(s),h=0;h<s;++h)(u=f[h])&&(c=t.call(u,u.__data__,h,f))&&("__data__"in u&&(c.__data__=u.__data__),l[h]=c,Li(l[h],n,e,h,l,Xi(u,e)));return new po(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Gt(t));for(var r=this._groups,i=r.length,o=[],a=[],u=0;u<i;++u)for(var c,f=r[u],s=f.length,l=0;l<s;++l)if(c=f[l]){for(var h,d=t.call(c,c.__data__,l,f),p=Xi(c,e),g=0,y=d.length;g<y;++g)(h=d[g])&&Li(h,n,e,g,d,p);o.push(d),a.push(c)}return new po(o,a,n,e)},selectChild:vo.selectChild,selectChildren:vo.selectChildren,filter:function(t){"function"!=typeof t&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new po(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new po(a,this._parents,this._name,this._id)},selection:function(){return new so(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=yo(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)if(a=u[f]){var s=Xi(a,n);Li(a,t,e,f,u,{time:s.time+s.delay+s.duration,delay:0,duration:s.duration,ease:s.ease})}return new po(r,this._parents,t,e)},call:vo.call,nodes:vo.nodes,node:vo.node,size:vo.size,empty:vo.empty,each:vo.each,on:function(t,n){var e=this._id;return arguments.length<2?Xi(this.node(),e).on.on(t):this.each(function(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?ji:Hi;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=It(t),r="transform"===e?ni:Ki;return this.attrTween(t,"function"==typeof n?(e.local?ro:eo)(e,r,Zi(this,"attr."+t,n)):null==n?(e.local?Ji:Qi)(e):(e.local?no:to)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=It(t);return this.tween(e,(r.local?io:oo)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?ti:Ki;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=_n(this,t),a=(this.style.removeProperty(t),_n(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,lo(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=_n(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=_n(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,Zi(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=Hi(this,t),f=c.on,s=null==c.value[a]?o||(o=lo(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=_n(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Zi(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Xi(this.node(),e).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?Vi:Wi)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ao:uo)(n,t)):Xi(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?co:fo)(n,t)):Xi(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if("function"!=typeof n)throw new Error;return function(){Hi(this,t).ease=n}}(n,t)):Xi(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Hi(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,a){var u={value:a},c={value:function(){0==--i&&o()}};e.each((function(){var e=Hi(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(c)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:vo[Symbol.iterator]};function _o(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function bo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var mo=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),xo=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),wo=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),Mo=Math.PI,To=Mo/2;function Ao(t){return(1-Math.cos(Mo*t))/2}function So(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function Eo(t){return((t*=2)<=1?So(1-t):2-So(t-1))/2}function No(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var ko=4/11,Co=6/11,Po=8/11,zo=3/4,$o=9/11,Do=10/11,Ro=15/16,Fo=21/22,qo=63/64,Uo=1/ko/ko;function Io(t){return(t=+t)<ko?Uo*t*t:t<Po?Uo*(t-=Co)*t+zo:t<Do?Uo*(t-=$o)*t+Ro:Uo*(t-=Fo)*t+qo}var Oo=1.70158,Bo=function t(n){function e(t){return(t=+t)*t*(n*(t-1)+t)}return n=+n,e.overshoot=t,e}(Oo),Yo=function t(n){function e(t){return--t*t*((t+1)*n+t)+1}return n=+n,e.overshoot=t,e}(Oo),Lo=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(Oo),jo=2*Math.PI,Ho=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return n*So(- --t)*Math.sin((r-t)/e)}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Xo=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return 1-n*So(t=+t)*Math.sin((t+r)/e)}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Go=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return((t=2*t-1)<0?n*So(-t)*Math.sin((r-t)/e):2-n*So(t)*Math.sin((r+t)/e))/2}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Vo={time:null,delay:0,duration:250,ease:bo};function Wo(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}Wn.prototype.interrupt=function(t){return this.each((function(){Gi(this,t)}))},Wn.prototype.transition=function(t){var n,e;t instanceof po?(n=t._id,t=t._name):(n=yo(),(e=Vo).time=Ai(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)(a=u[f])&&Li(a,t,n,f,u,e||Wo(a,n));return new po(r,this._parents,t,n)};var Zo=[null];var Ko=t=>()=>t;function Qo(t,{sourceEvent:n,target:e,selection:r,mode:i,dispatch:o}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:r,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function Jo(t){t.preventDefault(),t.stopImmediatePropagation()}var ta={name:"drag"},na={name:"space"},ea={name:"handle"},ra={name:"center"};const{abs:ia,max:oa,min:aa}=Math;function ua(t){return[+t[0],+t[1]]}function ca(t){return[ua(t[0]),ua(t[1])]}var fa={name:"x",handles:["w","e"].map(va),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},sa={name:"y",handles:["n","s"].map(va),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},la={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(va),input:function(t){return null==t?null:ca(t)},output:function(t){return t}},ha={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},da={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},pa={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},ga={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ya={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function va(t){return{type:t}}function _a(t){return!t.ctrlKey&&!t.button}function ba(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function ma(){return navigator.maxTouchPoints||"ontouchstart"in this}function xa(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function wa(t){var n,e=ba,r=_a,i=ma,o=!0,a=$t("start","brush","end"),u=6;function c(n){var e=n.property("__brush",g).selectAll(".overlay").data([va("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ha.overlay).merge(e).each((function(){var t=xa(this).extent;Zn(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),n.selectAll(".selection").data([va("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ha.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=n.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return ha[t.type]})),n.each(f).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(){var t=Zn(this),n=xa(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?n[1][0]-u/2:n[0][0]-u/2})).attr("y",(function(t){return"s"===t.type[0]?n[1][1]-u/2:n[0][1]-u/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+u:u})).attr("height",(function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+u:u}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function s(t,n,e){var r=t.__brush.emitter;return!r||e&&r.clean?new l(t,n,e):r}function l(t,n,e){this.that=t,this.args=n,this.state=t.__brush,this.active=0,this.clean=e}function h(e){if((!n||e.touches)&&r.apply(this,arguments)){var i,a,u,c,l,h,d,p,g,y,v,_=this,b=e.target.__data__.type,m="selection"===(o&&e.metaKey?b="overlay":b)?ta:o&&e.altKey?ra:ea,x=t===sa?null:ga[b],w=t===fa?null:ya[b],M=xa(_),T=M.extent,A=M.selection,S=T[0][0],E=T[0][1],N=T[1][0],k=T[1][1],C=0,P=0,z=x&&w&&o&&e.shiftKey,$=Array.from(e.touches||[e],(t=>{const n=t.identifier;return(t=ne(t,_)).point0=t.slice(),t.identifier=n,t}));Gi(_);var D=s(_,arguments,!0).beforestart();if("overlay"===b){A&&(g=!0);const n=[$[0],$[1]||$[0]];M.selection=A=[[i=t===sa?S:aa(n[0][0],n[1][0]),u=t===fa?E:aa(n[0][1],n[1][1])],[l=t===sa?N:oa(n[0][0],n[1][0]),d=t===fa?k:oa(n[0][1],n[1][1])]],$.length>1&&I(e)}else i=A[0][0],u=A[0][1],l=A[1][0],d=A[1][1];a=i,c=u,h=l,p=d;var R=Zn(_).attr("pointer-events","none"),F=R.selectAll(".overlay").attr("cursor",ha[b]);if(e.touches)D.moved=U,D.ended=O;else{var q=Zn(e.view).on("mousemove.brush",U,!0).on("mouseup.brush",O,!0);o&&q.on("keydown.brush",(function(t){switch(t.keyCode){case 16:z=x&&w;break;case 18:m===ea&&(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra,I(t));break;case 32:m!==ea&&m!==ra||(x<0?l=h-C:x>0&&(i=a-C),w<0?d=p-P:w>0&&(u=c-P),m=na,F.attr("cursor",ha.selection),I(t));break;default:return}Jo(t)}),!0).on("keyup.brush",(function(t){switch(t.keyCode){case 16:z&&(y=v=z=!1,I(t));break;case 18:m===ra&&(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea,I(t));break;case 32:m===na&&(t.altKey?(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra):(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea),F.attr("cursor",ha[b]),I(t));break;default:return}Jo(t)}),!0),ae(e.view)}f.call(_),D.start(e,m.name)}function U(t){for(const n of t.changedTouches||[t])for(const t of $)t.identifier===n.identifier&&(t.cur=ne(n,_));if(z&&!y&&!v&&1===$.length){const t=$[0];ia(t.cur[0]-t[0])>ia(t.cur[1]-t[1])?v=!0:y=!0}for(const t of $)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);g=!0,Jo(t),I(t)}function I(t){const n=$[0],e=n.point0;var r;switch(C=n[0]-e[0],P=n[1]-e[1],m){case na:case ta:x&&(C=oa(S-i,aa(N-l,C)),a=i+C,h=l+C),w&&(P=oa(E-u,aa(k-d,P)),c=u+P,p=d+P);break;case ea:$[1]?(x&&(a=oa(S,aa(N,$[0][0])),h=oa(S,aa(N,$[1][0])),x=1),w&&(c=oa(E,aa(k,$[0][1])),p=oa(E,aa(k,$[1][1])),w=1)):(x<0?(C=oa(S-i,aa(N-i,C)),a=i+C,h=l):x>0&&(C=oa(S-l,aa(N-l,C)),a=i,h=l+C),w<0?(P=oa(E-u,aa(k-u,P)),c=u+P,p=d):w>0&&(P=oa(E-d,aa(k-d,P)),c=u,p=d+P));break;case ra:x&&(a=oa(S,aa(N,i-C*x)),h=oa(S,aa(N,l+C*x))),w&&(c=oa(E,aa(k,u-P*w)),p=oa(E,aa(k,d+P*w)))}h<a&&(x*=-1,r=i,i=l,l=r,r=a,a=h,h=r,b in da&&F.attr("cursor",ha[b=da[b]])),p<c&&(w*=-1,r=u,u=d,d=r,r=c,c=p,p=r,b in pa&&F.attr("cursor",ha[b=pa[b]])),M.selection&&(A=M.selection),y&&(a=A[0][0],h=A[1][0]),v&&(c=A[0][1],p=A[1][1]),A[0][0]===a&&A[0][1]===c&&A[1][0]===h&&A[1][1]===p||(M.selection=[[a,c],[h,p]],f.call(_),D.brush(t,m.name))}function O(t){if(function(t){t.stopImmediatePropagation()}(t),t.touches){if(t.touches.length)return;n&&clearTimeout(n),n=setTimeout((function(){n=null}),500)}else ue(t.view,g),q.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);R.attr("pointer-events","all"),F.attr("cursor",ha.overlay),M.selection&&(A=M.selection),function(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}(A)&&(M.selection=null,f.call(_)),D.end(t,m.name)}}function d(t){s(this,arguments).moved(t)}function p(t){s(this,arguments).ended(t)}function g(){var n=this.__brush||{selection:null};return n.extent=ca(e.apply(this,arguments)),n.dim=t,n}return c.move=function(n,e,r){n.tween?n.on("start.brush",(function(t){s(this,arguments).beforestart().start(t)})).on("interrupt.brush end.brush",(function(t){s(this,arguments).end(t)})).tween("brush",(function(){var n=this,r=n.__brush,i=s(n,arguments),o=r.selection,a=t.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=Gr(o,a);function c(t){r.selection=1===t&&null===a?null:u(t),f.call(n),i.brush()}return null!==o&&null!==a?c:c(1)})):n.each((function(){var n=this,i=arguments,o=n.__brush,a=t.input("function"==typeof e?e.apply(n,i):e,o.extent),u=s(n,i).beforestart();Gi(n),o.selection=null===a?null:a,f.call(n),u.start(r).brush(r).end(r)}))},c.clear=function(t,n){c.move(t,null,n)},l.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(t,n){return this.starting?(this.starting=!1,this.emit("start",t,n)):this.emit("brush",t),this},brush:function(t,n){return this.emit("brush",t,n),this},end:function(t,n){return 0==--this.active&&(delete this.state.emitter,this.emit("end",t,n)),this},emit:function(n,e,r){var i=Zn(this.that).datum();a.call(n,this.that,new Qo(n,{sourceEvent:e,target:c,selection:t.output(this.state.selection),mode:r,dispatch:a}),i)}},c.extent=function(t){return arguments.length?(e="function"==typeof t?t:Ko(ca(t)),c):e},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:Ko(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Ko(!!t),c):i},c.handleSize=function(t){return arguments.length?(u=+t,c):u},c.keyModifiers=function(t){return arguments.length?(o=!!t,c):o},c.on=function(){var t=a.on.apply(a,arguments);return t===a?c:t},c}var Ma=Math.abs,Ta=Math.cos,Aa=Math.sin,Sa=Math.PI,Ea=Sa/2,Na=2*Sa,ka=Math.max,Ca=1e-12;function Pa(t,n){return Array.from({length:n-t},((n,e)=>t+e))}function za(t,n){var e=0,r=null,i=null,o=null;function a(a){var u,c=a.length,f=new Array(c),s=Pa(0,c),l=new Array(c*c),h=new Array(c),d=0;a=Float64Array.from({length:c*c},n?(t,n)=>a[n%c][n/c|0]:(t,n)=>a[n/c|0][n%c]);for(let n=0;n<c;++n){let e=0;for(let r=0;r<c;++r)e+=a[n*c+r]+t*a[r*c+n];d+=f[n]=e}u=(d=ka(0,Na-e*c)/d)?e:Na/c;{let n=0;r&&s.sort(((t,n)=>r(f[t],f[n])));for(const e of s){const r=n;if(t){const t=Pa(1+~c,c).filter((t=>t<0?a[~t*c+e]:a[e*c+t]));i&&t.sort(((t,n)=>i(t<0?-a[~t*c+e]:a[e*c+t],n<0?-a[~n*c+e]:a[e*c+n])));for(const r of t)if(r<0){(l[~r*c+e]||(l[~r*c+e]={source:null,target:null})).target={index:e,startAngle:n,endAngle:n+=a[~r*c+e]*d,value:a[~r*c+e]}}else{(l[e*c+r]||(l[e*c+r]={source:null,target:null})).source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}else{const t=Pa(0,c).filter((t=>a[e*c+t]||a[t*c+e]));i&&t.sort(((t,n)=>i(a[e*c+t],a[e*c+n])));for(const r of t){let t;if(e<r?(t=l[e*c+r]||(l[e*c+r]={source:null,target:null}),t.source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}):(t=l[r*c+e]||(l[r*c+e]={source:null,target:null}),t.target={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]},e===r&&(t.source=t.target)),t.source&&t.target&&t.source.value<t.target.value){const n=t.source;t.source=t.target,t.target=n}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}n+=u}}return(l=Object.values(l)).groups=h,o?l.sort(o):l}return a.padAngle=function(t){return arguments.length?(e=ka(0,t),a):e},a.sortGroups=function(t){return arguments.length?(r=t,a):r},a.sortSubgroups=function(t){return arguments.length?(i=t,a):i},a.sortChords=function(t){return arguments.length?(null==t?o=null:(n=t,o=function(t,e){return n(t.source.value+t.target.value,e.source.value+e.target.value)})._=t,a):o&&o._;var n},a}const $a=Math.PI,Da=2*$a,Ra=1e-6,Fa=Da-Ra;function qa(t){this._+=t[0];for(let n=1,e=t.length;n<e;++n)this._+=arguments[n]+t[n]}let Ua=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?qa:function(t){let n=Math.floor(t);if(!(n>=0))throw new Error(`invalid digits: ${t}`);if(n>15)return qa;const e=10**n;return function(t){this._+=t[0];for(let n=1,r=t.length;n<r;++n)this._+=Math.round(arguments[n]*e)/e+t[n]}}(t)}moveTo(t,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,n){this._append`L${this._x1=+t},${this._y1=+n}`}quadraticCurveTo(t,n,e,r){this._append`Q${+t},${+n},${this._x1=+e},${this._y1=+r}`}bezierCurveTo(t,n,e,r,i,o){this._append`C${+t},${+n},${+e},${+r},${this._x1=+i},${this._y1=+o}`}arcTo(t,n,e,r,i){if(t=+t,n=+n,e=+e,r=+r,(i=+i)<0)throw new Error(`negative radius: ${i}`);let o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(null===this._x1)this._append`M${this._x1=t},${this._y1=n}`;else if(l>Ra)if(Math.abs(s*u-c*f)>Ra&&i){let h=e-o,d=r-a,p=u*u+c*c,g=h*h+d*d,y=Math.sqrt(p),v=Math.sqrt(l),_=i*Math.tan(($a-Math.acos((p+l-g)/(2*y*v)))/2),b=_/v,m=_/y;Math.abs(b-1)>Ra&&this._append`L${t+b*f},${n+b*s}`,this._append`A${i},${i},0,0,${+(s*h>f*d)},${this._x1=t+m*u},${this._y1=n+m*c}`}else this._append`L${this._x1=t},${this._y1=n}`;else;}arc(t,n,e,r,i,o){if(t=+t,n=+n,o=!!o,(e=+e)<0)throw new Error(`negative radius: ${e}`);let a=e*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;null===this._x1?this._append`M${c},${f}`:(Math.abs(this._x1-c)>Ra||Math.abs(this._y1-f)>Ra)&&this._append`L${c},${f}`,e&&(l<0&&(l=l%Da+Da),l>Fa?this._append`A${e},${e},0,1,${s},${t-a},${n-u}A${e},${e},0,1,${s},${this._x1=c},${this._y1=f}`:l>Ra&&this._append`A${e},${e},0,${+(l>=$a)},${s},${this._x1=t+e*Math.cos(i)},${this._y1=n+e*Math.sin(i)}`)}rect(t,n,e,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${e=+e}v${+r}h${-e}Z`}toString(){return this._}};function Ia(){return new Ua}Ia.prototype=Ua.prototype;var Oa=Array.prototype.slice;function Ba(t){return function(){return t}}function Ya(t){return t.source}function La(t){return t.target}function ja(t){return t.radius}function Ha(t){return t.startAngle}function Xa(t){return t.endAngle}function Ga(){return 0}function Va(){return 10}function Wa(t){var n=Ya,e=La,r=ja,i=ja,o=Ha,a=Xa,u=Ga,c=null;function f(){var f,s=n.apply(this,arguments),l=e.apply(this,arguments),h=u.apply(this,arguments)/2,d=Oa.call(arguments),p=+r.apply(this,(d[0]=s,d)),g=o.apply(this,d)-Ea,y=a.apply(this,d)-Ea,v=+i.apply(this,(d[0]=l,d)),_=o.apply(this,d)-Ea,b=a.apply(this,d)-Ea;if(c||(c=f=Ia()),h>Ca&&(Ma(y-g)>2*h+Ca?y>g?(g+=h,y-=h):(g-=h,y+=h):g=y=(g+y)/2,Ma(b-_)>2*h+Ca?b>_?(_+=h,b-=h):(_-=h,b+=h):_=b=(_+b)/2),c.moveTo(p*Ta(g),p*Aa(g)),c.arc(0,0,p,g,y),g!==_||y!==b)if(t){var m=v-+t.apply(this,arguments),x=(_+b)/2;c.quadraticCurveTo(0,0,m*Ta(_),m*Aa(_)),c.lineTo(v*Ta(x),v*Aa(x)),c.lineTo(m*Ta(b),m*Aa(b))}else c.quadraticCurveTo(0,0,v*Ta(_),v*Aa(_)),c.arc(0,0,v,_,b);if(c.quadraticCurveTo(0,0,p*Ta(g),p*Aa(g)),c.closePath(),f)return c=null,f+""||null}return t&&(f.headRadius=function(n){return arguments.length?(t="function"==typeof n?n:Ba(+n),f):t}),f.radius=function(t){return arguments.length?(r=i="function"==typeof t?t:Ba(+t),f):r},f.sourceRadius=function(t){return arguments.length?(r="function"==typeof t?t:Ba(+t),f):r},f.targetRadius=function(t){return arguments.length?(i="function"==typeof t?t:Ba(+t),f):i},f.startAngle=function(t){return arguments.length?(o="function"==typeof t?t:Ba(+t),f):o},f.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:Ba(+t),f):a},f.padAngle=function(t){return arguments.length?(u="function"==typeof t?t:Ba(+t),f):u},f.source=function(t){return arguments.length?(n=t,f):n},f.target=function(t){return arguments.length?(e=t,f):e},f.context=function(t){return arguments.length?(c=null==t?null:t,f):c},f}var Za=Array.prototype.slice;function Ka(t,n){return t-n}var Qa=t=>()=>t;function Ja(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=tu(t,n[r]))return e;return 0}function tu(t,n){for(var e=n[0],r=n[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var c=t[o],f=c[0],s=c[1],l=t[u],h=l[0],d=l[1];if(nu(c,l,n))return 0;s>r!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function nu(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function eu(){}var ru=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function iu(){var t=1,n=1,e=K,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(Ka);else{const e=M(t,ou);for(n=G(...Z(e[0],e[1],n),n);n[n.length-1]>=e[1];)n.pop();for(;n[1]<e[0];)n.shift()}return n.map((n=>o(t,n)))}function o(e,i){const o=null==i?NaN:+i;if(isNaN(o))throw new Error(`invalid value: ${i}`);var u=[],c=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=au(e[0],r),ru[f<<1].forEach(p);for(;++o<t-1;)c=f,f=au(e[o+1],r),ru[c|f<<1].forEach(p);ru[f|0].forEach(p);for(;++u<n-1;){for(o=-1,f=au(e[u*t+t],r),s=au(e[u*t],r),ru[f<<1|s<<2].forEach(p);++o<t-1;)c=f,f=au(e[u*t+t+o+1],r),l=s,s=au(e[u*t+o+1],r),ru[c|f<<1|s<<2|l<<3].forEach(p);ru[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,ru[s<<2].forEach(p);for(;++o<t-1;)l=s,s=au(e[u*t+o+1],r),ru[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}ru[s<<3].forEach(p)}(e,o,(function(t){r(t,e,o),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?u.push([t]):c.push(t)})),c.forEach((function(t){for(var n,e=0,r=u.length;e<r;++e)if(-1!==Ja((n=u[e])[0],t))return void n.push(t)})),{type:"MultiPolygon",value:i,coordinates:u}}function a(n){return 2*n[0]+n[1]*(t+1)*4}function u(e,r,i){e.forEach((function(e){var o=e[0],a=e[1],u=0|o,c=0|a,f=uu(r[c*t+u]);o>0&&o<t&&u===o&&(e[0]=cu(o,uu(r[c*t+u-1]),f,i)),a>0&&a<n&&c===a&&(e[1]=cu(a,uu(r[(c-1)*t+u]),f,i))}))}return i.contour=o,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.floor(e[0]),o=Math.floor(e[1]);if(!(r>=0&&o>=0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:eu,i):r===u},i}function ou(t){return isFinite(t)?t:NaN}function au(t,n){return null!=t&&+t>=n}function uu(t){return null==t||isNaN(t=+t)?-1/0:t}function cu(t,n,e,r){const i=r-n,o=e-n,a=isFinite(i)||isFinite(o)?i/o:Math.sign(i)/Math.sign(o);return isNaN(a)?t:t+a-.5}function fu(t){return t[0]}function su(t){return t[1]}function lu(){return 1}const hu=134217729,du=33306690738754706e-32;function pu(t,n,e,r,i){let o,a,u,c,f=n[0],s=r[0],l=0,h=0;s>f==s>-f?(o=f,f=n[++l]):(o=s,s=r[++h]);let d=0;if(l<t&&h<e)for(s>f==s>-f?(a=f+o,u=o-(a-f),f=n[++l]):(a=s+o,u=o-(a-s),s=r[++h]),o=a,0!==u&&(i[d++]=u);l<t&&h<e;)s>f==s>-f?(a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l]):(a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h]),o=a,0!==u&&(i[d++]=u);for(;l<t;)a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l],o=a,0!==u&&(i[d++]=u);for(;h<e;)a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h],o=a,0!==u&&(i[d++]=u);return 0===o&&0!==d||(i[d++]=o),d}function gu(t){return new Float64Array(t)}const yu=22204460492503146e-32,vu=11093356479670487e-47,_u=gu(4),bu=gu(8),mu=gu(12),xu=gu(16),wu=gu(4);function Mu(t,n,e,r,i,o){const a=(n-o)*(e-i),u=(t-i)*(r-o),c=a-u,f=Math.abs(a+u);return Math.abs(c)>=33306690738754716e-32*f?c:-function(t,n,e,r,i,o,a){let u,c,f,s,l,h,d,p,g,y,v,_,b,m,x,w,M,T;const A=t-i,S=e-i,E=n-o,N=r-o;m=A*N,h=hu*A,d=h-(h-A),p=A-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=E*S,h=hu*E,d=h-(h-E),p=E-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,_u[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,_u[1]=b-(v+l)+(l-w),T=_+v,l=T-_,_u[2]=_-(T-l)+(v-l),_u[3]=T;let k=function(t,n){let e=n[0];for(let r=1;r<t;r++)e+=n[r];return e}(4,_u),C=yu*a;if(k>=C||-k>=C)return k;if(l=t-A,u=t-(A+l)+(l-i),l=e-S,f=e-(S+l)+(l-i),l=n-E,c=n-(E+l)+(l-o),l=r-N,s=r-(N+l)+(l-o),0===u&&0===c&&0===f&&0===s)return k;if(C=vu*a+du*Math.abs(k),k+=A*s+N*u-(E*f+S*c),k>=C||-k>=C)return k;m=u*N,h=hu*u,d=h-(h-u),p=u-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=c*S,h=hu*c,d=h-(h-c),p=c-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const P=pu(4,_u,4,wu,bu);m=A*s,h=hu*A,d=h-(h-A),p=A-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=E*f,h=hu*E,d=h-(h-E),p=E-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const z=pu(P,bu,4,wu,mu);m=u*s,h=hu*u,d=h-(h-u),p=u-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=c*f,h=hu*c,d=h-(h-c),p=c-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const $=pu(z,mu,4,wu,xu);return xu[$-1]}(t,n,e,r,i,o,f)}const Tu=Math.pow(2,-52),Au=new Uint32Array(512);class Su{static from(t,n=zu,e=$u){const r=t.length,i=new Float64Array(2*r);for(let o=0;o<r;o++){const r=t[o];i[2*o]=n(r),i[2*o+1]=e(r)}return new Su(i)}constructor(t){const n=t.length>>1;if(n>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:r,_hullHash:i}=this,o=t.length>>1;let a=1/0,u=1/0,c=-1/0,f=-1/0;for(let n=0;n<o;n++){const e=t[2*n],r=t[2*n+1];e<a&&(a=e),r<u&&(u=r),e>c&&(c=e),r>f&&(f=r),this._ids[n]=n}const s=(a+c)/2,l=(u+f)/2;let h,d,p;for(let n=0,e=1/0;n<o;n++){const r=Eu(s,l,t[2*n],t[2*n+1]);r<e&&(h=n,e=r)}const g=t[2*h],y=t[2*h+1];for(let n=0,e=1/0;n<o;n++){if(n===h)continue;const r=Eu(g,y,t[2*n],t[2*n+1]);r<e&&r>0&&(d=n,e=r)}let v=t[2*d],_=t[2*d+1],b=1/0;for(let n=0;n<o;n++){if(n===h||n===d)continue;const e=ku(g,y,v,_,t[2*n],t[2*n+1]);e<b&&(p=n,b=e)}let m=t[2*p],x=t[2*p+1];if(b===1/0){for(let n=0;n<o;n++)this._dists[n]=t[2*n]-t[0]||t[2*n+1]-t[1];Cu(this._ids,this._dists,0,o-1);const n=new Uint32Array(o);let e=0;for(let t=0,r=-1/0;t<o;t++){const i=this._ids[t],o=this._dists[i];o>r&&(n[e++]=i,r=o)}return this.hull=n.subarray(0,e),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(Mu(g,y,v,_,m,x)<0){const t=d,n=v,e=_;d=p,v=m,_=x,p=t,m=n,x=e}const w=function(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=t+(f*s-u*l)*h,p=n+(a*l-c*s)*h;return{x:d,y:p}}(g,y,v,_,m,x);this._cx=w.x,this._cy=w.y;for(let n=0;n<o;n++)this._dists[n]=Eu(t[2*n],t[2*n+1],w.x,w.y);Cu(this._ids,this._dists,0,o-1),this._hullStart=h;let M=3;e[h]=n[p]=d,e[d]=n[h]=p,e[p]=n[d]=h,r[h]=0,r[d]=1,r[p]=2,i.fill(-1),i[this._hashKey(g,y)]=h,i[this._hashKey(v,_)]=d,i[this._hashKey(m,x)]=p,this.trianglesLen=0,this._addTriangle(h,d,p,-1,-1,-1);for(let o,a,u=0;u<this._ids.length;u++){const c=this._ids[u],f=t[2*c],s=t[2*c+1];if(u>0&&Math.abs(f-o)<=Tu&&Math.abs(s-a)<=Tu)continue;if(o=f,a=s,c===h||c===d||c===p)continue;let l=0;for(let t=0,n=this._hashKey(f,s);t<this._hashSize&&(l=i[(n+t)%this._hashSize],-1===l||l===e[l]);t++);l=n[l];let g,y=l;for(;g=e[y],Mu(f,s,t[2*y],t[2*y+1],t[2*g],t[2*g+1])>=0;)if(y=g,y===l){y=-1;break}if(-1===y)continue;let v=this._addTriangle(y,c,e[y],-1,-1,r[y]);r[c]=this._legalize(v+2),r[y]=v,M++;let _=e[y];for(;g=e[_],Mu(f,s,t[2*_],t[2*_+1],t[2*g],t[2*g+1])<0;)v=this._addTriangle(_,c,g,r[c],-1,r[_]),r[c]=this._legalize(v+2),e[_]=_,M--,_=g;if(y===l)for(;g=n[y],Mu(f,s,t[2*g],t[2*g+1],t[2*y],t[2*y+1])<0;)v=this._addTriangle(g,c,y,-1,r[y],r[g]),this._legalize(v+2),r[g]=v,e[y]=y,M--,y=g;this._hullStart=n[c]=y,e[y]=n[_]=c,e[c]=_,i[this._hashKey(f,s)]=c,i[this._hashKey(t[2*y],t[2*y+1])]=y}this.hull=new Uint32Array(M);for(let t=0,n=this._hullStart;t<M;t++)this.hull[t]=n,n=e[n];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(t,n){return Math.floor(function(t,n){const e=t/(Math.abs(t)+Math.abs(n));return(n>0?3-e:1+e)/4}(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:r}=this;let i=0,o=0;for(;;){const a=e[t],u=t-t%3;if(o=u+(t+2)%3,-1===a){if(0===i)break;t=Au[--i];continue}const c=a-a%3,f=u+(t+1)%3,s=c+(a+2)%3,l=n[o],h=n[t],d=n[f],p=n[s];if(Nu(r[2*l],r[2*l+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1],r[2*p],r[2*p+1])){n[t]=p,n[a]=l;const r=e[s];if(-1===r){let n=this._hullStart;do{if(this._hullTri[n]===s){this._hullTri[n]=t;break}n=this._hullPrev[n]}while(n!==this._hullStart)}this._link(t,r),this._link(a,e[o]),this._link(o,s);const u=c+(a+1)%3;i<Au.length&&(Au[i++]=u)}else{if(0===i)break;t=Au[--i]}}return o}_link(t,n){this._halfedges[t]=n,-1!==n&&(this._halfedges[n]=t)}_addTriangle(t,n,e,r,i,o){const a=this.trianglesLen;return this._triangles[a]=t,this._triangles[a+1]=n,this._triangles[a+2]=e,this._link(a,r),this._link(a+1,i),this._link(a+2,o),this.trianglesLen+=3,a}}function Eu(t,n,e,r){const i=t-e,o=n-r;return i*i+o*o}function Nu(t,n,e,r,i,o,a,u){const c=t-a,f=n-u,s=e-a,l=r-u,h=i-a,d=o-u,p=s*s+l*l,g=h*h+d*d;return c*(l*g-p*d)-f*(s*g-p*h)+(c*c+f*f)*(s*d-l*h)<0}function ku(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=(f*s-u*l)*h,p=(a*l-c*s)*h;return d*d+p*p}function Cu(t,n,e,r){if(r-e<=20)for(let i=e+1;i<=r;i++){const r=t[i],o=n[r];let a=i-1;for(;a>=e&&n[t[a]]>o;)t[a+1]=t[a--];t[a+1]=r}else{let i=e+1,o=r;Pu(t,e+r>>1,i),n[t[e]]>n[t[r]]&&Pu(t,e,r),n[t[i]]>n[t[r]]&&Pu(t,i,r),n[t[e]]>n[t[i]]&&Pu(t,e,i);const a=t[i],u=n[a];for(;;){do{i++}while(n[t[i]]<u);do{o--}while(n[t[o]]>u);if(o<i)break;Pu(t,i,o)}t[e+1]=t[o],t[o]=a,r-i+1>=o-e?(Cu(t,n,i,r),Cu(t,n,e,o-1)):(Cu(t,n,e,o-1),Cu(t,n,i,r))}}function Pu(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function zu(t){return t[0]}function $u(t){return t[1]}const Du=1e-6;class Ru{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){const r=(t=+t)+(e=+e),i=n=+n;if(e<0)throw new Error("negative radius");null===this._x1?this._+=`M${r},${i}`:(Math.abs(this._x1-r)>Du||Math.abs(this._y1-i)>Du)&&(this._+="L"+r+","+i),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=r},${this._y1=i}`)}rect(t,n,e,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+r}h${-e}Z`}value(){return this._||null}}class Fu{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class qu{constructor(t,[n,e,r,i]=[0,0,960,500]){if(!((r=+r)>=(n=+n)&&(i=+i)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=r,this.xmin=n,this.ymax=i,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:r}=this;let i,o;const a=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let r,u,c=0,f=0,s=e.length;c<s;c+=3,f+=2){const s=2*e[c],l=2*e[c+1],h=2*e[c+2],d=t[s],p=t[s+1],g=t[l],y=t[l+1],v=t[h],_=t[h+1],b=g-d,m=y-p,x=v-d,w=_-p,M=2*(b*w-m*x);if(Math.abs(M)<1e-9){if(void 0===i){i=o=0;for(const e of n)i+=t[2*e],o+=t[2*e+1];i/=n.length,o/=n.length}const e=1e9*Math.sign((i-d)*w-(o-p)*x);r=(d+v)/2-e*w,u=(p+_)/2+e*x}else{const t=1/M,n=b*b+m*m,e=x*x+w*w;r=d+(w*n-m*e)*t,u=p+(b*e-x*n)*t}a[f]=r,a[f+1]=u}let u,c,f,s=n[n.length-1],l=4*s,h=t[2*s],d=t[2*s+1];r.fill(0);for(let e=0;e<n.length;++e)s=n[e],u=l,c=h,f=d,l=4*s,h=t[2*s],d=t[2*s+1],r[u+2]=r[l]=f-d,r[u+3]=r[l+1]=h-c}render(t){const n=null==t?t=new Ru:void 0,{delaunay:{halfedges:e,inedges:r,hull:i},circumcenters:o,vectors:a}=this;if(i.length<=1)return null;for(let n=0,r=e.length;n<r;++n){const r=e[n];if(r<n)continue;const i=2*Math.floor(n/3),a=2*Math.floor(r/3),u=o[i],c=o[i+1],f=o[a],s=o[a+1];this._renderSegment(u,c,f,s,t)}let u,c=i[i.length-1];for(let n=0;n<i.length;++n){u=c,c=i[n];const e=2*Math.floor(r[c]/3),f=o[e],s=o[e+1],l=4*u,h=this._project(f,s,a[l+2],a[l+3]);h&&this._renderSegment(f,s,h[0],h[1],t)}return n&&n.value()}renderBounds(t){const n=null==t?t=new Ru:void 0;return t.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),n&&n.value()}renderCell(t,n){const e=null==n?n=new Ru:void 0,r=this._clip(t);if(null===r||!r.length)return;n.moveTo(r[0],r[1]);let i=r.length;for(;r[0]===r[i-2]&&r[1]===r[i-1]&&i>1;)i-=2;for(let t=2;t<i;t+=2)r[t]===r[t-2]&&r[t+1]===r[t-1]||n.lineTo(r[t],r[t+1]);return n.closePath(),e&&e.value()}*cellPolygons(){const{delaunay:{points:t}}=this;for(let n=0,e=t.length/2;n<e;++n){const t=this.cellPolygon(n);t&&(t.index=n,yield t)}}cellPolygon(t){const n=new Fu;return this.renderCell(t,n),n.value()}_renderSegment(t,n,e,r,i){let o;const a=this._regioncode(t,n),u=this._regioncode(e,r);0===a&&0===u?(i.moveTo(t,n),i.lineTo(e,r)):(o=this._clipSegment(t,n,e,r,a,u))&&(i.moveTo(o[0],o[1]),i.lineTo(o[2],o[3]))}contains(t,n,e){return(n=+n)==n&&(e=+e)==e&&this.delaunay._step(t,n,e)===t}*neighbors(t){const n=this._clip(t);if(n)for(const e of this.delaunay.neighbors(t)){const t=this._clip(e);if(t)t:for(let r=0,i=n.length;r<i;r+=2)for(let o=0,a=t.length;o<a;o+=2)if(n[r]===t[o]&&n[r+1]===t[o+1]&&n[(r+2)%i]===t[(o+a-2)%a]&&n[(r+3)%i]===t[(o+a-1)%a]){yield e;break t}}}_cell(t){const{circumcenters:n,delaunay:{inedges:e,halfedges:r,triangles:i}}=this,o=e[t];if(-1===o)return null;const a=[];let u=o;do{const e=Math.floor(u/3);if(a.push(n[2*e],n[2*e+1]),u=u%3==2?u-2:u+1,i[u]!==t)break;u=r[u]}while(u!==o&&-1!==u);return a}_clip(t){if(0===t&&1===this.delaunay.hull.length)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const n=this._cell(t);if(null===n)return null;const{vectors:e}=this,r=4*t;return this._simplify(e[r]||e[r+1]?this._clipInfinite(t,n,e[r],e[r+1],e[r+2],e[r+3]):this._clipFinite(t,n))}_clipFinite(t,n){const e=n.length;let r,i,o,a,u=null,c=n[e-2],f=n[e-1],s=this._regioncode(c,f),l=0;for(let h=0;h<e;h+=2)if(r=c,i=f,c=n[h],f=n[h+1],o=s,s=this._regioncode(c,f),0===o&&0===s)a=l,l=0,u?u.push(c,f):u=[c,f];else{let n,e,h,d,p;if(0===o){if(null===(n=this._clipSegment(r,i,c,f,o,s)))continue;[e,h,d,p]=n}else{if(null===(n=this._clipSegment(c,f,r,i,s,o)))continue;[d,p,e,h]=n,a=l,l=this._edgecode(e,h),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(e,h):u=[e,h]}a=l,l=this._edgecode(d,p),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(d,p):u=[d,p]}if(u)a=l,l=this._edgecode(u[0],u[1]),a&&l&&this._edge(t,a,l,u,u.length);else if(this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return u}_clipSegment(t,n,e,r,i,o){const a=i<o;for(a&&([t,n,e,r,i,o]=[e,r,t,n,o,i]);;){if(0===i&&0===o)return a?[e,r,t,n]:[t,n,e,r];if(i&o)return null;let u,c,f=i||o;8&f?(u=t+(e-t)*(this.ymax-n)/(r-n),c=this.ymax):4&f?(u=t+(e-t)*(this.ymin-n)/(r-n),c=this.ymin):2&f?(c=n+(r-n)*(this.xmax-t)/(e-t),u=this.xmax):(c=n+(r-n)*(this.xmin-t)/(e-t),u=this.xmin),i?(t=u,n=c,i=this._regioncode(t,n)):(e=u,r=c,o=this._regioncode(e,r))}}_clipInfinite(t,n,e,r,i,o){let a,u=Array.from(n);if((a=this._project(u[0],u[1],e,r))&&u.unshift(a[0],a[1]),(a=this._project(u[u.length-2],u[u.length-1],i,o))&&u.push(a[0],a[1]),u=this._clipFinite(t,u))for(let n,e=0,r=u.length,i=this._edgecode(u[r-2],u[r-1]);e<r;e+=2)n=i,i=this._edgecode(u[e],u[e+1]),n&&i&&(e=this._edge(t,n,i,u,e),r=u.length);else this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(u=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return u}_edge(t,n,e,r,i){for(;n!==e;){let e,o;switch(n){case 5:n=4;continue;case 4:n=6,e=this.xmax,o=this.ymin;break;case 6:n=2;continue;case 2:n=10,e=this.xmax,o=this.ymax;break;case 10:n=8;continue;case 8:n=9,e=this.xmin,o=this.ymax;break;case 9:n=1;continue;case 1:n=5,e=this.xmin,o=this.ymin}r[i]===e&&r[i+1]===o||!this.contains(t,e,o)||(r.splice(i,0,e,o),i+=2)}return i}_project(t,n,e,r){let i,o,a,u=1/0;if(r<0){if(n<=this.ymin)return null;(i=(this.ymin-n)/r)<u&&(a=this.ymin,o=t+(u=i)*e)}else if(r>0){if(n>=this.ymax)return null;(i=(this.ymax-n)/r)<u&&(a=this.ymax,o=t+(u=i)*e)}if(e>0){if(t>=this.xmax)return null;(i=(this.xmax-t)/e)<u&&(o=this.xmax,a=n+(u=i)*r)}else if(e<0){if(t<=this.xmin)return null;(i=(this.xmin-t)/e)<u&&(o=this.xmin,a=n+(u=i)*r)}return[o,a]}_edgecode(t,n){return(t===this.xmin?1:t===this.xmax?2:0)|(n===this.ymin?4:n===this.ymax?8:0)}_regioncode(t,n){return(t<this.xmin?1:t>this.xmax?2:0)|(n<this.ymin?4:n>this.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let n=0;n<t.length;n+=2){const e=(n+2)%t.length,r=(n+4)%t.length;(t[n]===t[e]&&t[e]===t[r]||t[n+1]===t[e+1]&&t[e+1]===t[r+1])&&(t.splice(e,2),n-=2)}t.length||(t=null)}return t}}const Uu=2*Math.PI,Iu=Math.pow;function Ou(t){return t[0]}function Bu(t){return t[1]}function Yu(t,n,e){return[t+Math.sin(t+n)*e,n+Math.cos(t-n)*e]}class Lu{static from(t,n=Ou,e=Bu,r){return new Lu("length"in t?function(t,n,e,r){const i=t.length,o=new Float64Array(2*i);for(let a=0;a<i;++a){const i=t[a];o[2*a]=n.call(r,i,a,t),o[2*a+1]=e.call(r,i,a,t)}return o}(t,n,e,r):Float64Array.from(function*(t,n,e,r){let i=0;for(const o of t)yield n.call(r,o,i,t),yield e.call(r,o,i,t),++i}(t,n,e,r)))}constructor(t){this._delaunator=new Su(t),this.inedges=new Int32Array(t.length/2),this._hullIndex=new Int32Array(t.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const t=this._delaunator,n=this.points;if(t.hull&&t.hull.length>2&&function(t){const{triangles:n,coords:e}=t;for(let t=0;t<n.length;t+=3){const r=2*n[t],i=2*n[t+1],o=2*n[t+2];if((e[o]-e[r])*(e[i+1]-e[r+1])-(e[i]-e[r])*(e[o+1]-e[r+1])>1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:n.length/2},((t,n)=>n)).sort(((t,e)=>n[2*t]-n[2*e]||n[2*t+1]-n[2*e+1]));const t=this.collinear[0],e=this.collinear[this.collinear.length-1],r=[n[2*t],n[2*t+1],n[2*e],n[2*e+1]],i=1e-8*Math.hypot(r[3]-r[1],r[2]-r[0]);for(let t=0,e=n.length/2;t<e;++t){const e=Yu(n[2*t],n[2*t+1],i);n[2*t]=e[0],n[2*t+1]=e[1]}this._delaunator=new Su(n)}else delete this.collinear;const e=this.halfedges=this._delaunator.halfedges,r=this.hull=this._delaunator.hull,i=this.triangles=this._delaunator.triangles,o=this.inedges.fill(-1),a=this._hullIndex.fill(-1);for(let t=0,n=e.length;t<n;++t){const n=i[t%3==2?t-2:t+1];-1!==e[t]&&-1!==o[n]||(o[n]=t)}for(let t=0,n=r.length;t<n;++t)a[r[t]]=t;r.length<=2&&r.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=r[0],o[r[0]]=1,2===r.length&&(o[r[1]]=0,this.triangles[1]=r[1],this.triangles[2]=r[1]))}voronoi(t){return new qu(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:r,halfedges:i,triangles:o,collinear:a}=this;if(a){const n=a.indexOf(t);return n>0&&(yield a[n-1]),void(n<a.length-1&&(yield a[n+1]))}const u=n[t];if(-1===u)return;let c=u,f=-1;do{if(yield f=o[c],c=c%3==2?c-2:c+1,o[c]!==t)return;if(c=i[c],-1===c){const n=e[(r[t]+1)%e.length];return void(n!==f&&(yield n))}}while(c!==u)}find(t,n,e=0){if((t=+t)!=t||(n=+n)!=n)return-1;const r=e;let i;for(;(i=this._step(e,t,n))>=0&&i!==e&&i!==r;)e=i;return i}_step(t,n,e){const{inedges:r,hull:i,_hullIndex:o,halfedges:a,triangles:u,points:c}=this;if(-1===r[t]||!c.length)return(t+1)%(c.length>>1);let f=t,s=Iu(n-c[2*t],2)+Iu(e-c[2*t+1],2);const l=r[t];let h=l;do{let r=u[h];const l=Iu(n-c[2*r],2)+Iu(e-c[2*r+1],2);if(l<s&&(s=l,f=r),h=h%3==2?h-2:h+1,u[h]!==t)break;if(h=a[h],-1===h){if(h=i[(o[t]+1)%i.length],h!==r&&Iu(n-c[2*h],2)+Iu(e-c[2*h+1],2)<s)return h;break}}while(h!==l);return f}render(t){const n=null==t?t=new Ru:void 0,{points:e,halfedges:r,triangles:i}=this;for(let n=0,o=r.length;n<o;++n){const o=r[n];if(o<n)continue;const a=2*i[n],u=2*i[o];t.moveTo(e[a],e[a+1]),t.lineTo(e[u],e[u+1])}return this.renderHull(t),n&&n.value()}renderPoints(t,n){void 0!==n||t&&"function"==typeof t.moveTo||(n=t,t=null),n=null==n?2:+n;const e=null==t?t=new Ru:void 0,{points:r}=this;for(let e=0,i=r.length;e<i;e+=2){const i=r[e],o=r[e+1];t.moveTo(i+n,o),t.arc(i,o,n,0,Uu)}return e&&e.value()}renderHull(t){const n=null==t?t=new Ru:void 0,{hull:e,points:r}=this,i=2*e[0],o=e.length;t.moveTo(r[i],r[i+1]);for(let n=1;n<o;++n){const i=2*e[n];t.lineTo(r[i],r[i+1])}return t.closePath(),n&&n.value()}hullPolygon(){const t=new Fu;return this.renderHull(t),t.value()}renderTriangle(t,n){const e=null==n?n=new Ru:void 0,{points:r,triangles:i}=this,o=2*i[t*=3],a=2*i[t+1],u=2*i[t+2];return n.moveTo(r[o],r[o+1]),n.lineTo(r[a],r[a+1]),n.lineTo(r[u],r[u+1]),n.closePath(),e&&e.value()}*trianglePolygons(){const{triangles:t}=this;for(let n=0,e=t.length/3;n<e;++n)yield this.trianglePolygon(n)}trianglePolygon(t){const n=new Fu;return this.renderTriangle(t,n),n.value()}}var ju={},Hu={},Xu=34,Gu=10,Vu=13;function Wu(t){return new Function("d","return {"+t.map((function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'})).join(",")+"}")}function Zu(t){var n=Object.create(null),e=[];return t.forEach((function(t){for(var r in t)r in n||e.push(n[r]=r)})),e}function Ku(t,n){var e=t+"",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function Qu(t){var n,e=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),o=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((n=t.getUTCFullYear())<0?"-"+Ku(-n,6):n>9999?"+"+Ku(n,6):Ku(n,4))+"-"+Ku(t.getUTCMonth()+1,2)+"-"+Ku(t.getUTCDate(),2)+(o?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"."+Ku(o,3)+"Z":i?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"Z":r||e?"T"+Ku(e,2)+":"+Ku(r,2)+"Z":"")}function Ju(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return Hu;if(f)return f=!1,ju;var n,r,i=a;if(t.charCodeAt(i)===Xu){for(;a++<o&&t.charCodeAt(a)!==Xu||t.charCodeAt(++a)===Xu;);return(n=a)>=o?c=!0:(r=t.charCodeAt(a++))===Gu?f=!0:r===Vu&&(f=!0,t.charCodeAt(a)===Gu&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a<o;){if((r=t.charCodeAt(n=a++))===Gu)f=!0;else if(r===Vu)f=!0,t.charCodeAt(a)===Gu&&++a;else if(r!==e)continue;return t.slice(i,n)}return c=!0,t.slice(i,o)}for(t.charCodeAt(o-1)===Gu&&--o,t.charCodeAt(o-1)===Vu&&--o;(r=s())!==Hu;){for(var l=[];r!==ju&&r!==Hu;)l.push(r),r=s();n&&null==(l=n(l,u++))||i.push(l)}return i}function i(n,e){return n.map((function(n){return e.map((function(t){return a(n[t])})).join(t)}))}function o(n){return n.map(a).join(t)}function a(t){return null==t?"":t instanceof Date?Qu(t):n.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,n){var e,i,o=r(t,(function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=Wu(t);return function(r,i){return n(e(r),i,t)}}(t,n):Wu(t)}));return o.columns=i||[],o},parseRows:r,format:function(n,e){return null==e&&(e=Zu(n)),[e.map(a).join(t)].concat(i(n,e)).join("\n")},formatBody:function(t,n){return null==n&&(n=Zu(t)),i(t,n).join("\n")},formatRows:function(t){return t.map(o).join("\n")},formatRow:o,formatValue:a}}var tc=Ju(","),nc=tc.parse,ec=tc.parseRows,rc=tc.format,ic=tc.formatBody,oc=tc.formatRows,ac=tc.formatRow,uc=tc.formatValue,cc=Ju("\t"),fc=cc.parse,sc=cc.parseRows,lc=cc.format,hc=cc.formatBody,dc=cc.formatRows,pc=cc.formatRow,gc=cc.formatValue;const yc=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function vc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function _c(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function bc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function mc(t,n){return fetch(t,n).then(bc)}function xc(t){return function(n,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=void 0),mc(n,e).then((function(n){return t(n,r)}))}}var wc=xc(nc),Mc=xc(fc);function Tc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(204!==t.status&&205!==t.status)return t.json()}function Ac(t){return(n,e)=>mc(n,e).then((n=>(new DOMParser).parseFromString(n,t)))}var Sc=Ac("application/xml"),Ec=Ac("text/html"),Nc=Ac("image/svg+xml");function kc(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},g=t._x0,y=t._y0,v=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function Cc(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Pc(t){return t[0]}function zc(t){return t[1]}function $c(t,n,e){var r=new Dc(null==n?Pc:n,null==e?zc:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Dc(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Rc(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Fc=$c.prototype=Dc.prototype;function qc(t){return function(){return t}}function Uc(t){return 1e-6*(t()-.5)}function Ic(t){return t.x+t.vx}function Oc(t){return t.y+t.vy}function Bc(t){return t.index}function Yc(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}Fc.copy=function(){var t,n,e=new Dc(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Rc(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Rc(n));return e},Fc.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return kc(this.cover(n,e),n,e,t)},Fc.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;e<o;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(a[e]=r,u[e]=i,r<c&&(c=r),r>s&&(s=r),i<f&&(f=i),i>l&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;e<o;++e)kc(this,a[e],u[e],t[e]);return this},Fc.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{for(var a,u,c=i-e||1,f=this._root;e>t||t>=i||r>n||n>=o;)switch(u=(n<r)<<1|t<e,(a=new Array(4))[u]=f,f=a,c*=2,u){case 0:i=e+c,o=r+c;break;case 1:e=i-c,o=r+c;break;case 2:i=e+c,r=o-c;break;case 3:e=i-c,r=o-c}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},Fc.data=function(){var t=[];return this.visit((function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)})),t},Fc.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},Fc.find=function(t,n,e){var r,i,o,a,u,c,f,s=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new Cc(g,s,l,h,d)),null==e?e=1/0:(s=t-e,l=n-e,h=t+e,d=n+e,e*=e);c=p.pop();)if(!(!(g=c.node)||(i=c.x0)>h||(o=c.y0)>d||(a=c.x1)<s||(u=c.y1)<l))if(g.length){var y=(i+a)/2,v=(o+u)/2;p.push(new Cc(g[3],y,v,a,u),new Cc(g[2],i,v,y,u),new Cc(g[1],y,o,a,v),new Cc(g[0],i,o,y,v)),(f=(n>=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,g.data),b=n-+this._y.call(null,g.data),m=_*_+b*b;if(m<e){var x=Math.sqrt(e=m);s=t-x,l=n-x,h=t+x,d=n+x,r=g.data}}return r},Fc.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var n,e,r,i,o,a,u,c,f,s,l,h,d=this._root,p=this._x0,g=this._y0,y=this._x1,v=this._y1;if(!d)return this;if(d.length)for(;;){if((f=o>=(u=(p+y)/2))?p=u:y=u,(s=a>=(c=(g+v)/2))?g=c:v=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Fc.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},Fc.root=function(){return this._root},Fc.size=function(){var t=0;return this.visit((function(n){if(!n.length)do{++t}while(n=n.next)})),t},Fc.visit=function(t){var n,e,r,i,o,a,u=[],c=this._root;for(c&&u.push(new Cc(c,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&c.length){var f=(r+o)/2,s=(i+a)/2;(e=c[3])&&u.push(new Cc(e,f,s,o,a)),(e=c[2])&&u.push(new Cc(e,r,s,f,a)),(e=c[1])&&u.push(new Cc(e,f,i,o,s)),(e=c[0])&&u.push(new Cc(e,r,i,f,s))}return this},Fc.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new Cc(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,c=n.x1,f=n.y1,s=(a+c)/2,l=(u+f)/2;(o=i[0])&&e.push(new Cc(o,a,u,s,l)),(o=i[1])&&e.push(new Cc(o,s,u,c,l)),(o=i[2])&&e.push(new Cc(o,a,l,s,f)),(o=i[3])&&e.push(new Cc(o,s,l,c,f))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},Fc.x=function(t){return arguments.length?(this._x=t,this):this._x},Fc.y=function(t){return arguments.length?(this._y=t,this):this._y};const Lc=1664525,jc=1013904223,Hc=4294967296;function Xc(t){return t.x}function Gc(t){return t.y}var Vc=Math.PI*(3-Math.sqrt(5));function Wc(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Zc(t){return(t=Wc(Math.abs(t)))?t[1]:NaN}var Kc,Qc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jc(t){if(!(n=Qc.exec(t)))throw new Error("invalid format: "+t);var n;return new tf({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function tf(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function nf(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}Jc.prototype=tf.prototype,tf.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ef={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>nf(100*t,n),r:nf,s:function(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(Kc=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Wc(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function rf(t){return t}var of,af=Array.prototype.map,uf=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function cf(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?rf:(n=af.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?rf:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(af.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=Jc(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,_=t.type;"n"===_?(g=!0,_="g"):ef[_]||(void 0===y&&(y=12),v=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=ef[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),y),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),T&&0==+t&&"+"!==l&&(T=!1),h=(T?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?uf[8+Kc/3]:"")+M+(T&&"("===l?")":""),w)for(i=-1,o=t.length;++i<o;)if(48>(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var A=h.length+t.length+M.length,S=A<p?new Array(p-A+1).join(n):"";switch(g&&d&&(t=r(S+t,S.length?p-M.length:1/0),S=""),e){case"<":t=h+t+M+S;break;case"=":t=h+S+t+M;break;case"^":t=S.slice(0,A=S.length>>1)+h+t+M+S.slice(A);break;default:t=S+h+t+M}return u(t)}return y=void 0===y?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=Jc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3))),i=Math.pow(10,-r),o=uf[8+r/3];return function(t){return e(i*t)+o}}}}function ff(n){return of=cf(n),t.format=of.format,t.formatPrefix=of.formatPrefix,of}function sf(t){return Math.max(0,-Zc(Math.abs(t)))}function lf(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3)))-Zc(Math.abs(t)))}function hf(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Zc(n)-Zc(t))+1}t.format=void 0,t.formatPrefix=void 0,ff({thousands:",",grouping:[3],currency:["$",""]});var df=1e-6,pf=1e-12,gf=Math.PI,yf=gf/2,vf=gf/4,_f=2*gf,bf=180/gf,mf=gf/180,xf=Math.abs,wf=Math.atan,Mf=Math.atan2,Tf=Math.cos,Af=Math.ceil,Sf=Math.exp,Ef=Math.hypot,Nf=Math.log,kf=Math.pow,Cf=Math.sin,Pf=Math.sign||function(t){return t>0?1:t<0?-1:0},zf=Math.sqrt,$f=Math.tan;function Df(t){return t>1?0:t<-1?gf:Math.acos(t)}function Rf(t){return t>1?yf:t<-1?-yf:Math.asin(t)}function Ff(t){return(t=Cf(t/2))*t}function qf(){}function Uf(t,n){t&&Of.hasOwnProperty(t.type)&&Of[t.type](t,n)}var If={Feature:function(t,n){Uf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Uf(e[r].geometry,n)}},Of={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){Bf(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Bf(e[r],n,0)},Polygon:function(t,n){Yf(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Yf(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Uf(e[r],n)}};function Bf(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function Yf(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)Bf(t[e],n,1);n.polygonEnd()}function Lf(t,n){t&&If.hasOwnProperty(t.type)?If[t.type](t,n):Uf(t,n)}var jf,Hf,Xf,Gf,Vf,Wf,Zf,Kf,Qf,Jf,ts,ns,es,rs,is,os,as=new T,us=new T,cs={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){as=new T,cs.lineStart=fs,cs.lineEnd=ss},polygonEnd:function(){var t=+as;us.add(t<0?_f+t:t),this.lineStart=this.lineEnd=this.point=qf},sphere:function(){us.add(_f)}};function fs(){cs.point=ls}function ss(){hs(jf,Hf)}function ls(t,n){cs.point=hs,jf=t,Hf=n,Xf=t*=mf,Gf=Tf(n=(n*=mf)/2+vf),Vf=Cf(n)}function hs(t,n){var e=(t*=mf)-Xf,r=e>=0?1:-1,i=r*e,o=Tf(n=(n*=mf)/2+vf),a=Cf(n),u=Vf*a,c=Gf*o+u*Tf(i),f=u*r*Cf(i);as.add(Mf(f,c)),Xf=t,Gf=o,Vf=a}function ds(t){return[Mf(t[1],t[0]),Rf(t[2])]}function ps(t){var n=t[0],e=t[1],r=Tf(e);return[r*Tf(n),r*Cf(n),Cf(e)]}function gs(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function ys(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function vs(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function _s(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function bs(t){var n=zf(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var ms,xs,ws,Ms,Ts,As,Ss,Es,Ns,ks,Cs,Ps,zs,$s,Ds,Rs,Fs={point:qs,lineStart:Is,lineEnd:Os,polygonStart:function(){Fs.point=Bs,Fs.lineStart=Ys,Fs.lineEnd=Ls,rs=new T,cs.polygonStart()},polygonEnd:function(){cs.polygonEnd(),Fs.point=qs,Fs.lineStart=Is,Fs.lineEnd=Os,as<0?(Wf=-(Kf=180),Zf=-(Qf=90)):rs>df?Qf=90:rs<-df&&(Zf=-90),os[0]=Wf,os[1]=Kf},sphere:function(){Wf=-(Kf=180),Zf=-(Qf=90)}};function qs(t,n){is.push(os=[Wf=t,Kf=t]),n<Zf&&(Zf=n),n>Qf&&(Qf=n)}function Us(t,n){var e=ps([t*mf,n*mf]);if(es){var r=ys(es,e),i=ys([r[1],-r[0],0],r);bs(i),i=ds(i);var o,a=t-Jf,u=a>0?1:-1,c=i[0]*bf*u,f=xf(a)>180;f^(u*Jf<c&&c<u*t)?(o=i[1]*bf)>Qf&&(Qf=o):f^(u*Jf<(c=(c+360)%360-180)&&c<u*t)?(o=-i[1]*bf)<Zf&&(Zf=o):(n<Zf&&(Zf=n),n>Qf&&(Qf=n)),f?t<Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t):Kf>=Wf?(t<Wf&&(Wf=t),t>Kf&&(Kf=t)):t>Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t)}else is.push(os=[Wf=t,Kf=t]);n<Zf&&(Zf=n),n>Qf&&(Qf=n),es=e,Jf=t}function Is(){Fs.point=Us}function Os(){os[0]=Wf,os[1]=Kf,Fs.point=qs,es=null}function Bs(t,n){if(es){var e=t-Jf;rs.add(xf(e)>180?e+(e>0?360:-360):e)}else ts=t,ns=n;cs.point(t,n),Us(t,n)}function Ys(){cs.lineStart()}function Ls(){Bs(ts,ns),cs.lineEnd(),xf(rs)>df&&(Wf=-(Kf=180)),os[0]=Wf,os[1]=Kf,es=null}function js(t,n){return(n-=t)<0?n+360:n}function Hs(t,n){return t[0]-n[0]}function Xs(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var Gs={sphere:qf,point:Vs,lineStart:Zs,lineEnd:Js,polygonStart:function(){Gs.lineStart=tl,Gs.lineEnd=nl},polygonEnd:function(){Gs.lineStart=Zs,Gs.lineEnd=Js}};function Vs(t,n){t*=mf;var e=Tf(n*=mf);Ws(e*Tf(t),e*Cf(t),Cf(n))}function Ws(t,n,e){++ms,ws+=(t-ws)/ms,Ms+=(n-Ms)/ms,Ts+=(e-Ts)/ms}function Zs(){Gs.point=Ks}function Ks(t,n){t*=mf;var e=Tf(n*=mf);$s=e*Tf(t),Ds=e*Cf(t),Rs=Cf(n),Gs.point=Qs,Ws($s,Ds,Rs)}function Qs(t,n){t*=mf;var e=Tf(n*=mf),r=e*Tf(t),i=e*Cf(t),o=Cf(n),a=Mf(zf((a=Ds*o-Rs*i)*a+(a=Rs*r-$s*o)*a+(a=$s*i-Ds*r)*a),$s*r+Ds*i+Rs*o);xs+=a,As+=a*($s+($s=r)),Ss+=a*(Ds+(Ds=i)),Es+=a*(Rs+(Rs=o)),Ws($s,Ds,Rs)}function Js(){Gs.point=Vs}function tl(){Gs.point=el}function nl(){rl(Ps,zs),Gs.point=Vs}function el(t,n){Ps=t,zs=n,t*=mf,n*=mf,Gs.point=rl;var e=Tf(n);$s=e*Tf(t),Ds=e*Cf(t),Rs=Cf(n),Ws($s,Ds,Rs)}function rl(t,n){t*=mf;var e=Tf(n*=mf),r=e*Tf(t),i=e*Cf(t),o=Cf(n),a=Ds*o-Rs*i,u=Rs*r-$s*o,c=$s*i-Ds*r,f=Ef(a,u,c),s=Rf(f),l=f&&-s/f;Ns.add(l*a),ks.add(l*u),Cs.add(l*c),xs+=s,As+=s*($s+($s=r)),Ss+=s*(Ds+(Ds=i)),Es+=s*(Rs+(Rs=o)),Ws($s,Ds,Rs)}function il(t){return function(){return t}}function ol(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function al(t,n){return xf(t)>gf&&(t-=Math.round(t/_f)*_f),[t,n]}function ul(t,n,e){return(t%=_f)?n||e?ol(fl(t),sl(n,e)):fl(t):n||e?sl(n,e):al}function cl(t){return function(n,e){return xf(n+=t)>gf&&(n-=Math.round(n/_f)*_f),[n,e]}}function fl(t){var n=cl(t);return n.invert=cl(-t),n}function sl(t,n){var e=Tf(t),r=Cf(t),i=Tf(n),o=Cf(n);function a(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*e+u*r;return[Mf(c*i-s*o,u*e-f*r),Rf(s*i+c*o)]}return a.invert=function(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*i-c*o;return[Mf(c*i+f*o,u*e+s*r),Rf(s*e-u*r)]},a}function ll(t){function n(n){return(n=t(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n}return t=ul(t[0]*mf,t[1]*mf,t.length>2?t[2]*mf:0),n.invert=function(n){return(n=t.invert(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n},n}function hl(t,n,e,r,i,o){if(e){var a=Tf(n),u=Cf(n),c=r*e;null==i?(i=n+r*_f,o=n-c/2):(i=dl(a,i),o=dl(a,o),(r>0?i<o:i>o)&&(i+=r*_f));for(var f,s=i;r>0?s>o:s<o;s-=c)f=ds([a,-u*Tf(s),-u*Cf(s)]),t.point(f[0],f[1])}}function dl(t,n){(n=ps(n))[0]-=t,bs(n);var e=Df(-n[1]);return((-n[2]<0?-e:e)+_f-df)%_f}function pl(){var t,n=[];return{point:function(n,e,r){t.push([n,e,r])},lineStart:function(){n.push(t=[])},lineEnd:qf,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function gl(t,n){return xf(t[0]-n[0])<df&&xf(t[1]-n[1])<df}function yl(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function vl(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach((function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(gl(r,a)){if(!r[2]&&!a[2]){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);return void i.lineEnd()}a[0]+=2*df}u.push(e=new yl(r,t,null,!0)),c.push(e.o=new yl(r,null,e,!1)),u.push(e=new yl(a,t,null,!1)),c.push(e.o=new yl(a,null,e,!0))}})),u.length){for(c.sort(n),_l(u),_l(c),o=0,a=c.length;o<a;++o)c[o].e=e=!e;for(var f,s,l=u[0];;){for(var h=l,d=!0;h.v;)if((h=h.n)===l)return;f=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=f.length;o<a;++o)i.point((s=f[o])[0],s[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(f=h.p.z,o=f.length-1;o>=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function _l(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}function bl(t){return xf(t[0])<=gf?t[0]:Pf(t[0])*((xf(t[0])+gf)%_f-gf)}function ml(t,n){var e=bl(n),r=n[1],i=Cf(r),o=[Cf(e),-Tf(e),0],a=0,u=0,c=new T;1===i?r=yf+df:-1===i&&(r=-yf-df);for(var f=0,s=t.length;f<s;++f)if(h=(l=t[f]).length)for(var l,h,d=l[h-1],p=bl(d),g=d[1]/2+vf,y=Cf(g),v=Tf(g),_=0;_<h;++_,p=m,y=w,v=M,d=b){var b=l[_],m=bl(b),x=b[1]/2+vf,w=Cf(x),M=Tf(x),A=m-p,S=A>=0?1:-1,E=S*A,N=E>gf,k=y*w;if(c.add(Mf(k*S*Cf(E),v*M+k*Tf(E))),a+=N?A+S*_f:A,N^p>=e^m>=e){var C=ys(ps(d),ps(b));bs(C);var P=ys(o,C);bs(P);var z=(N^A>=0?-1:1)*Rf(P[2]);(r>z||r===z&&(C[0]||C[1]))&&(u+=N^A>=0?1:-1)}}return(a<-df||a<df&&c<-pf)^1&u}function xl(t,n,e,r){return function(i){var o,a,u,c=n(i),f=pl(),s=n(f),l=!1,h={point:d,lineStart:g,lineEnd:y,polygonStart:function(){h.point=v,h.lineStart=_,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=y,a=ft(a);var t=ml(o,r);a.length?(l||(i.polygonStart(),l=!0),vl(a,Ml,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function g(){h.point=p,c.lineStart()}function y(){h.point=d,c.lineEnd()}function v(t,n){u.push([t,n]),s.point(t,n)}function _(){s.lineStart(),u=[]}function b(){v(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(wl))}return h}}function wl(t){return t.length>1}function Ml(t,n){return((t=t.x)[0]<0?t[1]-yf-df:yf-t[1])-((n=n.x)[0]<0?n[1]-yf-df:yf-n[1])}al.invert=al;var Tl=xl((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?gf:-gf,c=xf(o-e);xf(c-gf)<df?(t.point(e,r=(r+a)/2>0?yf:-yf),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=gf&&(xf(e-i)<df&&(e-=i*df),xf(o-u)<df&&(o-=u*df),r=function(t,n,e,r){var i,o,a=Cf(t-e);return xf(a)>df?wf((Cf(n)*(o=Tf(r))*Cf(e)-Cf(r)*(i=Tf(n))*Cf(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*yf,r.point(-gf,i),r.point(0,i),r.point(gf,i),r.point(gf,0),r.point(gf,-i),r.point(0,-i),r.point(-gf,-i),r.point(-gf,0),r.point(-gf,i);else if(xf(t[0]-n[0])>df){var o=t[0]<n[0]?gf:-gf;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])}),[-gf,-yf]);function Al(t){var n=Tf(t),e=2*mf,r=n>0,i=xf(n)>df;function o(t,e){return Tf(t)*Tf(e)>n}function a(t,e,r){var i=[1,0,0],o=ys(ps(t),ps(e)),a=gs(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=ys(i,o),h=_s(i,f);vs(h,_s(o,s));var d=l,p=gs(h,d),g=gs(d,d),y=p*p-g*(gs(h,h)-1);if(!(y<0)){var v=zf(y),_=_s(d,(-p-v)/g);if(vs(_,h),_=ds(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x<m&&(b=m,m=x,x=b);var T=x-m,A=xf(T-gf)<df;if(!A&&M<w&&(b=w,w=M,M=b),A||T<df?A?w+M>0^_[1]<(xf(_[0]-m)<df?w:M):w<=_[1]&&_[1]<=M:T>gf^(m<=_[0]&&_[0]<=x)){var S=_s(d,(-p+v)/g);return vs(S,h),[_,ds(S)]}}}function u(n,e){var i=r?t:gf-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return xl(o,(function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],g=o(l,h),y=r?g?0:u(l,h):g?u(l+(l<0?gf:-gf),h):0;if(!n&&(f=c=g)&&t.lineStart(),g!==c&&(!(d=a(n,p))||gl(n,d)||gl(p,d))&&(p[2]=1),g!==c)s=0,g?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^g){var v;y&e||!(v=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}!g||n&&gl(n,p)||t.point(p[0],p[1]),n=p,c=g,e=y},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}}),(function(n,r,i,o){hl(o,t,e,i,n,r)}),r?[0,-t]:[-gf,t-gf])}var Sl,El,Nl,kl,Cl=1e9,Pl=-Cl;function zl(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return xf(r[0]-t)<df?i>0?0:3:xf(r[0]-e)<df?i>0?2:1:xf(r[1]-n)<df?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,g,y,v,_,b=a,m=pl(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(M(l,h),d&&y&&m.rejoin(),c.push(m.result()));x.point=w,y&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;e<i;++e)for(var o,a,u=f[e],c=1,s=u.length,l=u[0],h=l[0],d=l[1];c<s;++c)o=h,a=d,h=(l=u[c])[0],d=l[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=ft(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&vl(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),v)l=o,h=a,d=u,v=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&y)b.point(o,a);else{var c=[p=Math.max(Pl,Math.min(Cl,p)),g=Math.max(Pl,Math.min(Cl,g))],m=[o=Math.max(Pl,Math.min(Cl,o)),a=Math.max(Pl,Math.min(Cl,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a<f)return;a<s&&(s=a)}else if(l>0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a<f)return;a<s&&(s=a)}if(a=r-c,h||!(a>0)){if(a/=h,h<0){if(a<f)return;a<s&&(s=a)}else if(h>0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a<f)return;a<s&&(s=a)}return f>0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,g=a,y=u}return x}}var $l={sphere:qf,point:qf,lineStart:function(){$l.point=Rl,$l.lineEnd=Dl},lineEnd:qf,polygonStart:qf,polygonEnd:qf};function Dl(){$l.point=$l.lineEnd=qf}function Rl(t,n){El=t*=mf,Nl=Cf(n*=mf),kl=Tf(n),$l.point=Fl}function Fl(t,n){t*=mf;var e=Cf(n*=mf),r=Tf(n),i=xf(t-El),o=Tf(i),a=r*Cf(i),u=kl*e-Nl*r*o,c=Nl*e+kl*r*o;Sl.add(Mf(zf(a*a+u*u),c)),El=t,Nl=e,kl=r}function ql(t){return Sl=new T,Lf(t,$l),+Sl}var Ul=[null,null],Il={type:"LineString",coordinates:Ul};function Ol(t,n){return Ul[0]=t,Ul[1]=n,ql(Il)}var Bl={Feature:function(t,n){return Ll(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(Ll(e[r].geometry,n))return!0;return!1}},Yl={Sphere:function(){return!0},Point:function(t,n){return jl(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(jl(e[r],n))return!0;return!1},LineString:function(t,n){return Hl(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Hl(e[r],n))return!0;return!1},Polygon:function(t,n){return Xl(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Xl(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(Ll(e[r],n))return!0;return!1}};function Ll(t,n){return!(!t||!Yl.hasOwnProperty(t.type))&&Yl[t.type](t,n)}function jl(t,n){return 0===Ol(t,n)}function Hl(t,n){for(var e,r,i,o=0,a=t.length;o<a;o++){if(0===(r=Ol(t[o],n)))return!0;if(o>0&&(i=Ol(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<pf*i)return!0;e=r}return!1}function Xl(t,n){return!!ml(t.map(Gl),Vl(n))}function Gl(t){return(t=t.map(Vl)).pop(),t}function Vl(t){return[t[0]*mf,t[1]*mf]}function Wl(t,n,e){var r=lt(t,n-df,e).concat(n);return function(t){return r.map((function(n){return[t,n]}))}}function Zl(t,n,e){var r=lt(t,n-df,e).concat(n);return function(t){return r.map((function(n){return[n,t]}))}}function Kl(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,g=360,y=2.5;function v(){return{type:"MultiLineString",coordinates:_()}}function _(){return lt(Af(r/p)*p,e,p).map(s).concat(lt(Af(u/g)*g,a,g).map(l)).concat(lt(Af(n/h)*h,t,h).filter((function(t){return xf(t%p)>df})).map(c)).concat(lt(Af(o/d)*d,i,d).filter((function(t){return xf(t%g)>df})).map(f))}return v.lines=function(){return _().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),v.precision(y)):[[r,u],[e,a]]},v.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),v.precision(y)):[[n,o],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(y=+h,c=Wl(o,i,90),f=Zl(n,t,y),s=Wl(u,a,90),l=Zl(r,e,y),v):y},v.extentMajor([[-180,-90+df],[180,90-df]]).extentMinor([[-180,-80-df],[180,80+df]])}var Ql,Jl,th,nh,eh=t=>t,rh=new T,ih=new T,oh={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){oh.lineStart=ah,oh.lineEnd=fh},polygonEnd:function(){oh.lineStart=oh.lineEnd=oh.point=qf,rh.add(xf(ih)),ih=new T},result:function(){var t=rh/2;return rh=new T,t}};function ah(){oh.point=uh}function uh(t,n){oh.point=ch,Ql=th=t,Jl=nh=n}function ch(t,n){ih.add(nh*t-th*n),th=t,nh=n}function fh(){ch(Ql,Jl)}var sh=oh,lh=1/0,hh=lh,dh=-lh,ph=dh,gh={point:function(t,n){t<lh&&(lh=t);t>dh&&(dh=t);n<hh&&(hh=n);n>ph&&(ph=n)},lineStart:qf,lineEnd:qf,polygonStart:qf,polygonEnd:qf,result:function(){var t=[[lh,hh],[dh,ph]];return dh=ph=-(hh=lh=1/0),t}};var yh,vh,_h,bh,mh=gh,xh=0,wh=0,Mh=0,Th=0,Ah=0,Sh=0,Eh=0,Nh=0,kh=0,Ch={point:Ph,lineStart:zh,lineEnd:Rh,polygonStart:function(){Ch.lineStart=Fh,Ch.lineEnd=qh},polygonEnd:function(){Ch.point=Ph,Ch.lineStart=zh,Ch.lineEnd=Rh},result:function(){var t=kh?[Eh/kh,Nh/kh]:Sh?[Th/Sh,Ah/Sh]:Mh?[xh/Mh,wh/Mh]:[NaN,NaN];return xh=wh=Mh=Th=Ah=Sh=Eh=Nh=kh=0,t}};function Ph(t,n){xh+=t,wh+=n,++Mh}function zh(){Ch.point=$h}function $h(t,n){Ch.point=Dh,Ph(_h=t,bh=n)}function Dh(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Ph(_h=t,bh=n)}function Rh(){Ch.point=Ph}function Fh(){Ch.point=Uh}function qh(){Ih(yh,vh)}function Uh(t,n){Ch.point=Ih,Ph(yh=_h=t,vh=bh=n)}function Ih(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Eh+=(i=bh*t-_h*n)*(_h+t),Nh+=i*(bh+n),kh+=3*i,Ph(_h=t,bh=n)}var Oh=Ch;function Bh(t){this._context=t}Bh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,_f)}},result:qf};var Yh,Lh,jh,Hh,Xh,Gh=new T,Vh={point:qf,lineStart:function(){Vh.point=Wh},lineEnd:function(){Yh&&Zh(Lh,jh),Vh.point=qf},polygonStart:function(){Yh=!0},polygonEnd:function(){Yh=null},result:function(){var t=+Gh;return Gh=new T,t}};function Wh(t,n){Vh.point=Zh,Lh=Hh=t,jh=Xh=n}function Zh(t,n){Hh-=t,Xh-=n,Gh.add(zf(Hh*Hh+Xh*Xh)),Hh=t,Xh=n}var Kh=Vh;let Qh,Jh,td,nd;class ed{constructor(t){this._append=null==t?rd:function(t){const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);if(n>15)return rd;if(n!==Qh){const t=10**n;Qh=n,Jh=function(n){let e=1;this._+=n[0];for(const r=n.length;e<r;++e)this._+=Math.round(arguments[e]*t)/t+n[e]}}return Jh}(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){0===this._line&&(this._+="Z"),this._point=NaN}point(t,n){switch(this._point){case 0:this._append`M${t},${n}`,this._point=1;break;case 1:this._append`L${t},${n}`;break;default:if(this._append`M${t},${n}`,this._radius!==td||this._append!==Jh){const t=this._radius,n=this._;this._="",this._append`m0,${t}a${t},${t} 0 1,1 0,${-2*t}a${t},${t} 0 1,1 0,${2*t}z`,td=t,Jh=this._append,nd=this._,this._=n}this._+=nd}}result(){const t=this._;return this._="",t.length?t:null}}function rd(t){let n=1;this._+=t[0];for(const e=t.length;n<e;++n)this._+=arguments[n]+t[n]}function id(t){return function(n){var e=new od;for(var r in t)e[r]=t[r];return e.stream=n,e}}function od(){}function ad(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Lf(e,t.stream(mh)),n(mh.result()),null!=r&&t.clipExtent(r),t}function ud(t,n,e){return ad(t,(function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])}),e)}function cd(t,n,e){return ud(t,[[0,0],n],e)}function fd(t,n,e){return ad(t,(function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])}),e)}function sd(t,n,e){return ad(t,(function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])}),e)}od.prototype={constructor:od,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var ld=16,hd=Tf(30*mf);function dd(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,g,y){var v=f-r,_=s-i,b=v*v+_*_;if(b>4*n&&g--){var m=a+h,x=u+d,w=c+p,M=zf(m*m+x*x+w*w),T=Rf(w/=M),A=xf(xf(w)-1)<df||xf(o-l)<df?(o+l)/2:Mf(x,m),S=t(A,T),E=S[0],N=S[1],k=E-r,C=N-i,P=_*k-v*C;(P*P/b>n||xf((v*k+_*C)/b-.5)>.3||a*h+u*d+c*p<hd)&&(e(r,i,o,a,u,c,E,N,A,m/=M,x/=M,w,g,y),y.point(E,N),e(E,N,A,m,x,w,f,s,l,h,d,p,g,y))}}return function(n){var r,i,o,a,u,c,f,s,l,h,d,p,g={point:y,lineStart:v,lineEnd:b,polygonStart:function(){n.polygonStart(),g.lineStart=m},polygonEnd:function(){n.polygonEnd(),g.lineStart=v}};function y(e,r){e=t(e,r),n.point(e[0],e[1])}function v(){s=NaN,g.point=_,n.lineStart()}function _(r,i){var o=ps([r,i]),a=t(r,i);e(s,l,f,h,d,p,s=a[0],l=a[1],f=r,h=o[0],d=o[1],p=o[2],ld,n),n.point(s,l)}function b(){g.point=y,n.lineEnd()}function m(){v(),g.point=x,g.lineEnd=w}function x(t,n){_(r=t,n),i=s,o=l,a=h,u=d,c=p,g.point=_}function w(){e(s,l,f,h,d,p,i,o,r,a,u,c,ld,n),g.lineEnd=b,b()}return g}}(t,n):function(t){return id({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var pd=id({point:function(t,n){this.stream.point(t*mf,n*mf)}});function gd(t,n,e,r,i,o){if(!o)return function(t,n,e,r,i){function o(o,a){return[n+t*(o*=r),e-t*(a*=i)]}return o.invert=function(o,a){return[(o-n)/t*r,(e-a)/t*i]},o}(t,n,e,r,i);var a=Tf(o),u=Cf(o),c=a*t,f=u*t,s=a/t,l=u/t,h=(u*e-a*n)/t,d=(u*n+a*e)/t;function p(t,o){return[c*(t*=r)-f*(o*=i)+n,e-f*t-c*o]}return p.invert=function(t,n){return[r*(s*t-l*n+h),i*(d-l*t-s*n)]},p}function yd(t){return vd((function(){return t}))()}function vd(t){var n,e,r,i,o,a,u,c,f,s,l=150,h=480,d=250,p=0,g=0,y=0,v=0,_=0,b=0,m=1,x=1,w=null,M=Tl,T=null,A=eh,S=.5;function E(t){return c(t[0]*mf,t[1]*mf)}function N(t){return(t=c.invert(t[0],t[1]))&&[t[0]*bf,t[1]*bf]}function k(){var t=gd(l,0,0,m,x,b).apply(null,n(p,g)),r=gd(l,h-t[0],d-t[1],m,x,b);return e=ul(y,v,_),u=ol(n,r),c=ol(e,u),a=dd(u,S),C()}function C(){return f=s=null,E}return E.stream=function(t){return f&&s===t?f:f=pd(function(t){return id({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(M(a(A(s=t)))))},E.preclip=function(t){return arguments.length?(M=t,w=void 0,C()):M},E.postclip=function(t){return arguments.length?(A=t,T=r=i=o=null,C()):A},E.clipAngle=function(t){return arguments.length?(M=+t?Al(w=t*mf):(w=null,Tl),C()):w*bf},E.clipExtent=function(t){return arguments.length?(A=null==t?(T=r=i=o=null,eh):zl(T=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),C()):null==T?null:[[T,r],[i,o]]},E.scale=function(t){return arguments.length?(l=+t,k()):l},E.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],k()):[h,d]},E.center=function(t){return arguments.length?(p=t[0]%360*mf,g=t[1]%360*mf,k()):[p*bf,g*bf]},E.rotate=function(t){return arguments.length?(y=t[0]%360*mf,v=t[1]%360*mf,_=t.length>2?t[2]%360*mf:0,k()):[y*bf,v*bf,_*bf]},E.angle=function(t){return arguments.length?(b=t%360*mf,k()):b*bf},E.reflectX=function(t){return arguments.length?(m=t?-1:1,k()):m<0},E.reflectY=function(t){return arguments.length?(x=t?-1:1,k()):x<0},E.precision=function(t){return arguments.length?(a=dd(u,S=t*t),C()):zf(S)},E.fitExtent=function(t,n){return ud(E,t,n)},E.fitSize=function(t,n){return cd(E,t,n)},E.fitWidth=function(t,n){return fd(E,t,n)},E.fitHeight=function(t,n){return sd(E,t,n)},function(){return n=t.apply(this,arguments),E.invert=n.invert&&N,k()}}function _d(t){var n=0,e=gf/3,r=vd(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*mf,e=t[1]*mf):[n*bf,e*bf]},i}function bd(t,n){var e=Cf(t),r=(e+Cf(n))/2;if(xf(r)<df)return function(t){var n=Tf(t);function e(t,e){return[t*n,Cf(e)/n]}return e.invert=function(t,e){return[t/n,Rf(e*n)]},e}(t);var i=1+e*(2*r-e),o=zf(i)/r;function a(t,n){var e=zf(i-2*r*Cf(n))/r;return[e*Cf(t*=r),o-e*Tf(t)]}return a.invert=function(t,n){var e=o-n,a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,Rf((i-(t*t+e*e)*r*r)/(2*r))]},a}function md(){return _d(bd).scale(155.424).center([0,33.6442])}function xd(){return md().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function wd(t){return function(n,e){var r=Tf(n),i=Tf(e),o=t(r*i);return o===1/0?[2,0]:[o*i*Cf(n),o*Cf(e)]}}function Md(t){return function(n,e){var r=zf(n*n+e*e),i=t(r),o=Cf(i),a=Tf(i);return[Mf(n*o,r*a),Rf(r&&e*o/r)]}}var Td=wd((function(t){return zf(2/(1+t))}));Td.invert=Md((function(t){return 2*Rf(t/2)}));var Ad=wd((function(t){return(t=Df(t))&&t/Cf(t)}));function Sd(t,n){return[t,Nf($f((yf+n)/2))]}function Ed(t){var n,e,r,i=yd(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=gf*a(),u=i(ll(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===Sd?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function Nd(t){return $f((yf+t)/2)}function kd(t,n){var e=Tf(t),r=t===n?Cf(t):Nf(e/Tf(n))/Nf(Nd(n)/Nd(t)),i=e*kf(Nd(t),r)/r;if(!r)return Sd;function o(t,n){i>0?n<-yf+df&&(n=-yf+df):n>yf-df&&(n=yf-df);var e=i/kf(Nd(n),r);return[e*Cf(r*t),i-e*Tf(r*t)]}return o.invert=function(t,n){var e=i-n,o=Pf(r)*zf(t*t+e*e),a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,2*wf(kf(i/o,1/r))-yf]},o}function Cd(t,n){return[t,n]}function Pd(t,n){var e=Tf(t),r=t===n?Cf(t):(e-Tf(n))/(n-t),i=e/r+t;if(xf(r)<df)return Cd;function o(t,n){var e=i-n,o=r*t;return[e*Cf(o),i-e*Tf(o)]}return o.invert=function(t,n){var e=i-n,o=Mf(t,xf(e))*Pf(e);return e*r<0&&(o-=gf*Pf(t)*Pf(e)),[o/r,i-Pf(r)*zf(t*t+e*e)]},o}Ad.invert=Md((function(t){return t})),Sd.invert=function(t,n){return[t,2*wf(Sf(n))-yf]},Cd.invert=Cd;var zd=1.340264,$d=-.081106,Dd=893e-6,Rd=.003796,Fd=zf(3)/2;function qd(t,n){var e=Rf(Fd*Cf(n)),r=e*e,i=r*r*r;return[t*Tf(e)/(Fd*(zd+3*$d*r+i*(7*Dd+9*Rd*r))),e*(zd+$d*r+i*(Dd+Rd*r))]}function Ud(t,n){var e=Tf(n),r=Tf(t)*e;return[e*Cf(t)/r,Cf(n)/r]}function Id(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function Od(t,n){return[Tf(n)*Cf(t),Cf(n)]}function Bd(t,n){var e=Tf(n),r=1+Tf(t)*e;return[e*Cf(t)/r,Cf(n)/r]}function Yd(t,n){return[Nf($f((yf+n)/2)),-t]}function Ld(t,n){return t.parent===n.parent?1:2}function jd(t,n){return t+n.x}function Hd(t,n){return Math.max(t,n.y)}function Xd(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Gd(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Wd)):void 0===n&&(n=Vd);for(var e,r,i,o,a,u=new Qd(t),c=[u];e=c.pop();)if((i=n(e.data))&&(a=(i=Array.from(i)).length))for(e.children=i,o=a-1;o>=0;--o)c.push(r=i[o]=new Qd(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Kd)}function Vd(t){return t.children}function Wd(t){return Array.isArray(t)?t[1]:null}function Zd(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Kd(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Qd(t){this.data=t,this.depth=this.height=0,this.parent=null}function Jd(t){return null==t?null:tp(t)}function tp(t){if("function"!=typeof t)throw new Error;return t}function np(){return 0}function ep(t){return function(){return t}}qd.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(zd+$d*i+o*(Dd+Rd*i))-n)/(zd+3*$d*i+o*(7*Dd+9*Rd*i)))*r)*i*i,!(xf(e)<pf));++a);return[Fd*t*(zd+3*$d*i+o*(7*Dd+9*Rd*i))/Tf(r),Rf(Cf(r)/Fd)]},Ud.invert=Md(wf),Id.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(xf(e)>df&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},Od.invert=Md(Rf),Bd.invert=Md((function(t){return 2*wf(t)})),Yd.invert=function(t,n){return[-n,2*wf(Sf(t))-yf]},Qd.prototype=Gd.prototype={constructor:Qd,count:function(){return this.eachAfter(Xd)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,a=[o],u=[],c=-1;o=a.pop();)if(u.push(o),e=o.children)for(r=0,i=e.length;r<i;++r)a.push(e[r]);for(;o=u.pop();)t.call(n,o,++c,this);return this},eachBefore:function(t,n){for(var e,r,i=this,o=[i],a=-1;i=o.pop();)if(t.call(n,i,++a,this),e=i.children)for(r=e.length-1;r>=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return Gd(this).eachBefore(Zd)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e])}while(o.length)}};const rp=1664525,ip=1013904223,op=4294967296;function ap(){let t=1;return()=>(t=(rp*t+ip)%op)/op}function up(t,n){for(var e,r,i=0,o=(t=function(t,n){let e,r,i=t.length;for(;i;)r=n()*i--|0,e=t[i],t[i]=t[r],t[r]=e;return t}(Array.from(t),n)).length,a=[];i<o;)e=t[i],r&&sp(r,e)?++i:(r=hp(a=cp(a,e)),i=0);return r}function cp(t,n){var e,r;if(lp(n,t))return[n];for(e=0;e<t.length;++e)if(fp(n,t[e])&&lp(dp(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(fp(dp(t[e],t[r]),n)&&fp(dp(t[e],n),t[r])&&fp(dp(t[r],n),t[e])&&lp(pp(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function fp(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function sp(t,n){var e=t.r-n.r+1e-9*Math.max(t.r,n.r,1),r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function lp(t,n){for(var e=0;e<n.length;++e)if(!sp(t,n[e]))return!1;return!0}function hp(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return dp(t[0],t[1]);case 3:return pp(t[0],t[1],t[2])}}function dp(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,a=n.y,u=n.r,c=o-e,f=a-r,s=u-i,l=Math.sqrt(c*c+f*f);return{x:(e+o+c/l*s)/2,y:(r+a+f/l*s)/2,r:(l+i+u)/2}}function pp(t,n,e){var r=t.x,i=t.y,o=t.r,a=n.x,u=n.y,c=n.r,f=e.x,s=e.y,l=e.r,h=r-a,d=r-f,p=i-u,g=i-s,y=c-o,v=l-o,_=r*r+i*i-o*o,b=_-a*a-u*u+c*c,m=_-f*f-s*s+l*l,x=d*p-h*g,w=(p*m-g*b)/(2*x)-r,M=(g*y-p*v)/x,T=(d*b-h*m)/(2*x)-i,A=(h*v-d*y)/x,S=M*M+A*A-1,E=2*(o+w*M+T*A),N=w*w+T*T-o*o,k=-(Math.abs(S)>1e-6?(E+Math.sqrt(E*E-4*S*N))/(2*S):N/E);return{x:r+w+M*k,y:i+T+A*k,r:k}}function gp(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function yp(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function vp(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function _p(t){this._=t,this.next=null,this.previous=null}function bp(t,n){if(!(o=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var e,r,i,o,a,u,c,f,s,l,h;if((e=t[0]).x=0,e.y=0,!(o>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(o>2))return e.r+r.r;gp(r,e,i=t[2]),e=new _p(e),r=new _p(r),i=new _p(i),e.next=i.previous=r,r.next=e.previous=i,i.next=r.previous=e;t:for(c=3;c<o;++c){gp(e._,r._,i=t[c]),i=new _p(i),f=r.next,s=e.previous,l=r._.r,h=e._.r;do{if(l<=h){if(yp(f._,i._)){r=f,e.next=r,r.previous=e,--c;continue t}l+=f._.r,f=f.next}else{if(yp(s._,i._)){(e=s).next=r,r.previous=e,--c;continue t}h+=s._.r,s=s.previous}}while(f!==s.next);for(i.previous=e,i.next=r,e.next=r.previous=r=i,a=vp(e);(i=i.next)!==r;)(u=vp(i))<a&&(e=i,a=u);r=e.next}for(e=[r._],i=r;(i=i.next)!==r;)e.push(i._);for(i=up(e,n),c=0;c<o;++c)(e=t[c]).x-=i.x,e.y-=i.y;return i.r}function mp(t){return Math.sqrt(t.value)}function xp(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function wp(t,n,e){return function(r){if(i=r.children){var i,o,a,u=i.length,c=t(r)*n||0;if(c)for(o=0;o<u;++o)i[o].r+=c;if(a=bp(i,e),c)for(o=0;o<u;++o)i[o].r-=c;r.r=a+c}}}function Mp(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function Tp(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Ap(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(r-n)/t.value;++u<c;)(o=a[u]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*f}var Sp={depth:-1},Ep={},Np={};function kp(t){return t.id}function Cp(t){return t.parentId}function Pp(t){let n=t.length;if(n<2)return"";for(;--n>1&&!zp(t,n););return t.slice(0,n)}function zp(t,n){if("/"===t[n]){let e=0;for(;n>0&&"\\"===t[--n];)++e;if(!(1&e))return!0}return!1}function $p(t,n){return t.parent===n.parent?1:2}function Dp(t){var n=t.children;return n?n[0]:t.t}function Rp(t){var n=t.children;return n?n[n.length-1]:t.t}function Fp(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function qp(t,n,e){return t.a.parent===n.parent?t.a:e}function Up(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function Ip(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++u<c;)(o=a[u]).x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*f}Up.prototype=Object.create(Qd.prototype);var Op=(1+Math.sqrt(5))/2;function Bp(t,n,e,r,i,o){for(var a,u,c,f,s,l,h,d,p,g,y,v=[],_=n.children,b=0,m=0,x=_.length,w=n.value;b<x;){c=i-e,f=o-r;do{s=_[m++].value}while(!s&&m<x);for(l=h=s,y=s*s*(g=Math.max(f/c,c/f)/(w*t)),p=Math.max(h/y,y/l);m<x;++m){if(s+=u=_[m].value,u<l&&(l=u),u>h&&(h=u),y=s*s*g,(d=Math.max(h/y,y/l))>p){s-=u;break}p=d}v.push(a={value:s,dice:c<f,children:_.slice(b,m)}),a.dice?Ap(a,e,r,i,w?r+=f*s/w:o):Ip(a,e,r,w?e+=c*s/w:i,o),w-=s,b=m}return v}var Yp=function t(n){function e(t,e,r,i,o){Bp(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Op);var Lp=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l<h;){for(c=(u=a[l]).children,f=u.value=0,s=c.length;f<s;++f)u.value+=c[f].value;u.dice?Ap(u,e,r,i,d?r+=(o-r)*u.value/d:o):Ip(u,e,r,d?e+=(i-e)*u.value/d:i,o),d-=u.value}else t._squarify=a=Bp(n,t,e,r,i,o),a.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Op);function jp(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function Hp(t,n){return t[0]-n[0]||t[1]-n[1]}function Xp(t){const n=t.length,e=[0,1];let r,i=2;for(r=2;r<n;++r){for(;i>1&&jp(t[e[i-2]],t[e[i-1]],t[r])<=0;)--i;e[i++]=r}return e.slice(0,i)}var Gp=Math.random,Vp=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(Gp),Wp=function t(n){function e(t,e){return arguments.length<2&&(e=t,t=0),t=Math.floor(t),e=Math.floor(e)-t,function(){return Math.floor(n()*e+t)}}return e.source=t,e}(Gp),Zp=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(Gp),Kp=function t(n){var e=Zp.source(n);function r(){var t=e.apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(Gp),Qp=function t(n){function e(t){return(t=+t)<=0?()=>0:function(){for(var e=0,r=t;r>1;--r)e+=n();return e+r*n()}}return e.source=t,e}(Gp),Jp=function t(n){var e=Qp.source(n);function r(t){if(0==(t=+t))return n;var r=e(t);return function(){return r()/t}}return r.source=t,r}(Gp),tg=function t(n){function e(t){return function(){return-Math.log1p(-n())/t}}return e.source=t,e}(Gp),ng=function t(n){function e(t){if((t=+t)<0)throw new RangeError("invalid alpha");return t=1/-t,function(){return Math.pow(1-n(),t)}}return e.source=t,e}(Gp),eg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return function(){return Math.floor(n()+t)}}return e.source=t,e}(Gp),rg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return 0===t?()=>1/0:1===t?()=>1:(t=Math.log1p(-t),function(){return 1+Math.floor(Math.log1p(-n())/t)})}return e.source=t,e}(Gp),ig=function t(n){var e=Zp.source(n)();function r(t,r){if((t=+t)<0)throw new RangeError("invalid k");if(0===t)return()=>0;if(r=null==r?1:+r,1===t)return()=>-Math.log1p(-n())*r;var i=(t<1?t+1:t)-1/3,o=1/(3*Math.sqrt(i)),a=t<1?()=>Math.pow(n(),1/t):()=>1;return function(){do{do{var t=e(),u=1+o*t}while(u<=0);u*=u*u;var c=1-n()}while(c>=1-.0331*t*t*t*t&&Math.log(c)>=.5*t*t+i*(1-u+Math.log(u)));return i*u*a()*r}}return r.source=t,r}(Gp),og=function t(n){var e=ig.source(n);function r(t,n){var r=e(t),i=e(n);return function(){var t=r();return 0===t?0:t/(t+i())}}return r.source=t,r}(Gp),ag=function t(n){var e=rg.source(n),r=og.source(n);function i(t,n){return t=+t,(n=+n)>=1?()=>t:n<=0?()=>0:function(){for(var i=0,o=t,a=n;o*a>16&&o*(1-a)>16;){var u=Math.floor((o+1)*a),c=r(u,o-u+1)();c<=a?(i+=u,o-=u,a=(a-c)/(1-c)):(o=u-1,a/=c)}for(var f=a<.5,s=e(f?a:1-a),l=s(),h=0;l<=o;++h)l+=s();return i+(f?h:o-h)}}return i.source=t,i}(Gp),ug=function t(n){function e(t,e,r){var i;return 0==(t=+t)?i=t=>-Math.log(t):(t=1/t,i=n=>Math.pow(n,t)),e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*i(-Math.log1p(-n()))}}return e.source=t,e}(Gp),cg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){return t+e*Math.tan(Math.PI*n())}}return e.source=t,e}(Gp),fg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){var r=n();return t+e*Math.log(r/(1-r))}}return e.source=t,e}(Gp),sg=function t(n){var e=ig.source(n),r=ag.source(n);function i(t){return function(){for(var i=0,o=t;o>16;){var a=Math.floor(.875*o),u=e(a)();if(u>o)return i+r(a-1,o/u)();i+=a,o-=u}for(var c=-Math.log1p(-n()),f=0;c<=o;++f)c-=Math.log1p(-n());return i+f}}return i.source=t,i}(Gp);const lg=1/4294967296;function hg(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function dg(t,n){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof n?this.interpolator(n):this.range(n)}return this}const pg=Symbol("implicit");function gg(){var t=new InternMap,n=[],e=[],r=pg;function i(i){let o=t.get(i);if(void 0===o){if(r!==pg)return r;t.set(i,o=n.push(i)-1)}return e[o%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new InternMap;for(const r of e)t.has(r)||t.set(r,n.push(r)-1);return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return gg(n,e).unknown(r)},hg.apply(i,arguments),i}function yg(){var t,n,e=gg().unknown(void 0),r=e.domain,i=e.range,o=0,a=1,u=!1,c=0,f=0,s=.5;function l(){var e=r().length,l=a<o,h=l?a:o,d=l?o:a;t=(d-h)/Math.max(1,e-c+2*f),u&&(t=Math.floor(t)),h+=(d-h-t*(e-c))*s,n=t*(1-c),u&&(h=Math.round(h),n=Math.round(n));var p=lt(e).map((function(n){return h+t*n}));return i(l?p.reverse():p)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),l()):r()},e.range=function(t){return arguments.length?([o,a]=t,o=+o,a=+a,l()):[o,a]},e.rangeRound=function(t){return[o,a]=t,o=+o,a=+a,u=!0,l()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(u=!!t,l()):u},e.padding=function(t){return arguments.length?(c=Math.min(1,f=+t),l()):c},e.paddingInner=function(t){return arguments.length?(c=Math.min(1,t),l()):c},e.paddingOuter=function(t){return arguments.length?(f=+t,l()):f},e.align=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),l()):s},e.copy=function(){return yg(r(),[o,a]).round(u).paddingInner(c).paddingOuter(f).align(s)},hg.apply(l(),arguments)}function vg(t){var n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return vg(n())},t}function _g(t){return+t}var bg=[0,1];function mg(t){return t}function xg(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function wg(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i<r?(r=xg(i,r),o=e(a,o)):(r=xg(r,i),o=e(o,a)),function(t){return o(r(t))}}function Mg(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++a<r;)i[a]=xg(t[a],t[a+1]),o[a]=e(n[a],n[a+1]);return function(n){var e=s(t,n,1,r)-1;return o[e](i[e](n))}}function Tg(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ag(){var t,n,e,r,i,o,a=bg,u=bg,c=Gr,f=mg;function s(){var t=Math.min(a.length,u.length);return f!==mg&&(f=function(t,n){var e;return t>n&&(e=t,t=n,n=e),function(e){return Math.max(t,Math.min(n,e))}}(a[0],a[t-1])),r=t>2?Mg:wg,i=o=null,l}function l(n){return null==n||isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),Yr)))(e)))},l.domain=function(t){return arguments.length?(a=Array.from(t,_g),s()):a.slice()},l.range=function(t){return arguments.length?(u=Array.from(t),s()):u.slice()},l.rangeRound=function(t){return u=Array.from(t),c=Vr,s()},l.clamp=function(t){return arguments.length?(f=!!t||mg,s()):f!==mg},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Sg(){return Ag()(mg,mg)}function Eg(n,e,r,i){var o,a=W(n,e,r);switch((i=Jc(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=lf(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=hf(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=sf(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function Ng(t){var n=t.domain;return t.ticks=function(t){var e=n();return G(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Eg(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),a=0,u=o.length-1,c=o[a],f=o[u],s=10;for(f<c&&(i=c,c=f,f=i,i=a,a=u,u=i);s-- >0;){if((i=V(c,f,e))===r)return o[a]=c,o[u]=f,n(o);if(i>0)c=Math.floor(c/i)*i,f=Math.ceil(f/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,f=Math.floor(f*i)/i}r=i}return t},t}function kg(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(e=r,r=i,i=e,e=o,o=a,a=e),t[r]=n.floor(o),t[i]=n.ceil(a),t}function Cg(t){return Math.log(t)}function Pg(t){return Math.exp(t)}function zg(t){return-Math.log(-t)}function $g(t){return-Math.exp(-t)}function Dg(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Rg(t){return(n,e)=>-t(-n,e)}function Fg(n){const e=n(Cg,Pg),r=e.domain;let i,o,a=10;function u(){return i=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}(a),o=function(t){return 10===t?Dg:t===Math.E?Math.exp:n=>Math.pow(t,n)}(a),r()[0]<0?(i=Rg(i),o=Rg(o),n(zg,$g)):n(Cg,Pg),e}return e.base=function(t){return arguments.length?(a=+t,u()):a},e.domain=function(t){return arguments.length?(r(t),u()):r()},e.ticks=t=>{const n=r();let e=n[0],u=n[n.length-1];const c=u<e;c&&([e,u]=[u,e]);let f,s,l=i(e),h=i(u);const d=null==t?10:+t;let p=[];if(!(a%1)&&h-l<d){if(l=Math.floor(l),h=Math.ceil(h),e>0){for(;l<=h;++l)for(f=1;f<a;++f)if(s=l<0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}}else for(;l<=h;++l)for(f=a-1;f>=1;--f)if(s=l>0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}2*p.length<d&&(p=G(e,u,d))}else p=G(l,h,Math.min(h-l,d)).map(o);return c?p.reverse():p},e.tickFormat=(n,r)=>{if(null==n&&(n=10),null==r&&(r=10===a?"s":","),"function"!=typeof r&&(a%1||null!=(r=Jc(r)).precision||(r.trim=!0),r=t.format(r)),n===1/0)return r;const u=Math.max(1,a*n/e.ticks().length);return t=>{let n=t/o(Math.round(i(t)));return n*a<a-.5&&(n*=a),n<=u?r(t):""}},e.nice=()=>r(kg(r(),{floor:t=>o(Math.floor(i(t))),ceil:t=>o(Math.ceil(i(t)))})),e}function qg(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Ug(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function Ig(t){var n=1,e=t(qg(n),Ug(n));return e.constant=function(e){return arguments.length?t(qg(n=+e),Ug(n)):n},Ng(e)}function Og(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Bg(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Yg(t){return t<0?-t*t:t*t}function Lg(t){var n=t(mg,mg),e=1;return n.exponent=function(n){return arguments.length?1===(e=+n)?t(mg,mg):.5===e?t(Bg,Yg):t(Og(e),Og(1/e)):e},Ng(n)}function jg(){var t=Lg(Ag());return t.copy=function(){return Tg(t,jg()).exponent(t.exponent())},hg.apply(t,arguments),t}function Hg(t){return Math.sign(t)*t*t}const Xg=new Date,Gg=new Date;function Vg(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=n=>(t(n=new Date(+n)),n),i.ceil=e=>(t(e=new Date(e-1)),n(e,1),t(e),e),i.round=t=>{const n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=(t,e)=>(n(t=new Date(+t),null==e?1:Math.floor(e)),t),i.range=(e,r,o)=>{const a=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return a;let u;do{a.push(u=new Date(+e)),n(e,o),t(e)}while(u<e&&e<r);return a},i.filter=e=>Vg((n=>{if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)}),((t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})),e&&(i.count=(n,r)=>(Xg.setTime(+n),Gg.setTime(+r),t(Xg),t(Gg),Math.floor(e(Xg,Gg))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?n=>r(n)%t==0:n=>i.count(0,n)%t==0):i:null)),i}const Wg=Vg((()=>{}),((t,n)=>{t.setTime(+t+n)}),((t,n)=>n-t));Wg.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Vg((n=>{n.setTime(Math.floor(n/t)*t)}),((n,e)=>{n.setTime(+n+e*t)}),((n,e)=>(e-n)/t)):Wg:null);const Zg=Wg.range,Kg=1e3,Qg=6e4,Jg=36e5,ty=864e5,ny=6048e5,ey=2592e6,ry=31536e6,iy=Vg((t=>{t.setTime(t-t.getMilliseconds())}),((t,n)=>{t.setTime(+t+n*Kg)}),((t,n)=>(n-t)/Kg),(t=>t.getUTCSeconds())),oy=iy.range,ay=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getMinutes())),uy=ay.range,cy=Vg((t=>{t.setUTCSeconds(0,0)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getUTCMinutes())),fy=cy.range,sy=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg-t.getMinutes()*Qg)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getHours())),ly=sy.range,hy=Vg((t=>{t.setUTCMinutes(0,0,0)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getUTCHours())),dy=hy.range,py=Vg((t=>t.setHours(0,0,0,0)),((t,n)=>t.setDate(t.getDate()+n)),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ty),(t=>t.getDate()-1)),gy=py.range,yy=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>t.getUTCDate()-1)),vy=yy.range,_y=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>Math.floor(t/ty))),by=_y.range;function my(t){return Vg((n=>{n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),((t,n)=>{t.setDate(t.getDate()+7*n)}),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ny))}const xy=my(0),wy=my(1),My=my(2),Ty=my(3),Ay=my(4),Sy=my(5),Ey=my(6),Ny=xy.range,ky=wy.range,Cy=My.range,Py=Ty.range,zy=Ay.range,$y=Sy.range,Dy=Ey.range;function Ry(t){return Vg((n=>{n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+7*n)}),((t,n)=>(n-t)/ny))}const Fy=Ry(0),qy=Ry(1),Uy=Ry(2),Iy=Ry(3),Oy=Ry(4),By=Ry(5),Yy=Ry(6),Ly=Fy.range,jy=qy.range,Hy=Uy.range,Xy=Iy.range,Gy=Oy.range,Vy=By.range,Wy=Yy.range,Zy=Vg((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,n)=>{t.setMonth(t.getMonth()+n)}),((t,n)=>n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())),(t=>t.getMonth())),Ky=Zy.range,Qy=Vg((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCMonth(t.getUTCMonth()+n)}),((t,n)=>n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth())),Jy=Qy.range,tv=Vg((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,n)=>{t.setFullYear(t.getFullYear()+n)}),((t,n)=>n.getFullYear()-t.getFullYear()),(t=>t.getFullYear()));tv.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),((n,e)=>{n.setFullYear(n.getFullYear()+e*t)})):null;const nv=tv.range,ev=Vg((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n)}),((t,n)=>n.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));ev.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)}),((n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e*t)})):null;const rv=ev.range;function iv(t,n,e,i,o,a){const u=[[iy,1,Kg],[iy,5,5e3],[iy,15,15e3],[iy,30,3e4],[a,1,Qg],[a,5,3e5],[a,15,9e5],[a,30,18e5],[o,1,Jg],[o,3,108e5],[o,6,216e5],[o,12,432e5],[i,1,ty],[i,2,1728e5],[e,1,ny],[n,1,ey],[n,3,7776e6],[t,1,ry]];function c(n,e,i){const o=Math.abs(e-n)/i,a=r((([,,t])=>t)).right(u,o);if(a===u.length)return t.every(W(n/ry,e/ry,i));if(0===a)return Wg.every(Math.max(W(n,e,i),1));const[c,f]=u[o/u[a-1][2]<u[a][2]/o?a-1:a];return c.every(f)}return[function(t,n,e){const r=n<t;r&&([t,n]=[n,t]);const i=e&&"function"==typeof e.range?e:c(t,n,e),o=i?i.range(t,+n+1):[];return r?o.reverse():o},c]}const[ov,av]=iv(ev,Qy,Fy,_y,hy,cy),[uv,cv]=iv(tv,Zy,xy,py,sy,ay);function fv(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function sv(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function lv(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function hv(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=mv(i),s=xv(i),l=mv(o),h=xv(o),d=mv(a),p=xv(a),g=mv(u),y=xv(u),v=mv(c),_=xv(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Yv,e:Yv,f:Gv,g:i_,G:a_,H:Lv,I:jv,j:Hv,L:Xv,m:Vv,M:Wv,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:k_,s:C_,S:Zv,u:Kv,U:Qv,V:t_,w:n_,W:e_,x:null,X:null,y:r_,Y:o_,Z:u_,"%":N_},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:c_,e:c_,f:d_,g:T_,G:S_,H:f_,I:s_,j:l_,L:h_,m:p_,M:g_,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:k_,s:C_,S:y_,u:v_,U:__,V:m_,w:x_,W:w_,x:null,X:null,y:M_,Y:A_,Z:E_,"%":N_},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=_.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=y.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(t,e,r){return T(t,n,e,r)},d:zv,e:zv,f:Uv,g:Nv,G:Ev,H:Dv,I:Dv,j:$v,L:qv,m:Pv,M:Rv,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s.get(r[0].toLowerCase()),e+r[0].length):-1},q:Cv,Q:Ov,s:Bv,S:Fv,u:Mv,U:Tv,V:Av,w:wv,W:Sv,x:function(t,n,r){return T(t,e,n,r)},X:function(t,n,e){return T(t,r,n,e)},y:Nv,Y:Ev,Z:kv,"%":Iv};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u<f;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=pv[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=n[r])&&(r=o(e,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join("")}}function M(t,n){return function(e){var r,i,o=lv(1900,void 0,1);if(T(o,t,e+="",0)!=e.length)return null;if("Q"in o)return new Date(o.Q);if("s"in o)return new Date(1e3*o.s+("L"in o?o.L:0));if(n&&!("Z"in o)&&(o.Z=0),"p"in o&&(o.H=o.H%12+12*o.p),void 0===o.m&&(o.m="q"in o?o.q:0),"V"in o){if(o.V<1||o.V>53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=sv(lv(o.y,0,1))).getUTCDay(),r=i>4||0===i?qy.ceil(r):qy(r),r=yy.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=fv(lv(o.y,0,1))).getDay(),r=i>4||0===i?wy.ceil(r):wy(r),r=py.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?sv(lv(o.y,0,1)).getUTCDay():fv(lv(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,sv(o)):fv(o)}}function T(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a<u;){if(r>=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in pv?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var dv,pv={"-":"",_:" ",0:"0"},gv=/^\s*\d+/,yv=/^%/,vv=/[\\^$*+?|[\]().{}]/g;function _v(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function bv(t){return t.replace(vv,"\\$&")}function mv(t){return new RegExp("^(?:"+t.map(bv).join("|")+")","i")}function xv(t){return new Map(t.map(((t,n)=>[t.toLowerCase(),n])))}function wv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Mv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Tv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function Av(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Sv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Ev(t,n,e){var r=gv.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function Nv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function kv(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Cv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Pv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function zv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function $v(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Dv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Rv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Fv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function qv(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Uv(t,n,e){var r=gv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Iv(t,n,e){var r=yv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Ov(t,n,e){var r=gv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Bv(t,n,e){var r=gv.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Yv(t,n){return _v(t.getDate(),n,2)}function Lv(t,n){return _v(t.getHours(),n,2)}function jv(t,n){return _v(t.getHours()%12||12,n,2)}function Hv(t,n){return _v(1+py.count(tv(t),t),n,3)}function Xv(t,n){return _v(t.getMilliseconds(),n,3)}function Gv(t,n){return Xv(t,n)+"000"}function Vv(t,n){return _v(t.getMonth()+1,n,2)}function Wv(t,n){return _v(t.getMinutes(),n,2)}function Zv(t,n){return _v(t.getSeconds(),n,2)}function Kv(t){var n=t.getDay();return 0===n?7:n}function Qv(t,n){return _v(xy.count(tv(t)-1,t),n,2)}function Jv(t){var n=t.getDay();return n>=4||0===n?Ay(t):Ay.ceil(t)}function t_(t,n){return t=Jv(t),_v(Ay.count(tv(t),t)+(4===tv(t).getDay()),n,2)}function n_(t){return t.getDay()}function e_(t,n){return _v(wy.count(tv(t)-1,t),n,2)}function r_(t,n){return _v(t.getFullYear()%100,n,2)}function i_(t,n){return _v((t=Jv(t)).getFullYear()%100,n,2)}function o_(t,n){return _v(t.getFullYear()%1e4,n,4)}function a_(t,n){var e=t.getDay();return _v((t=e>=4||0===e?Ay(t):Ay.ceil(t)).getFullYear()%1e4,n,4)}function u_(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+_v(n/60|0,"0",2)+_v(n%60,"0",2)}function c_(t,n){return _v(t.getUTCDate(),n,2)}function f_(t,n){return _v(t.getUTCHours(),n,2)}function s_(t,n){return _v(t.getUTCHours()%12||12,n,2)}function l_(t,n){return _v(1+yy.count(ev(t),t),n,3)}function h_(t,n){return _v(t.getUTCMilliseconds(),n,3)}function d_(t,n){return h_(t,n)+"000"}function p_(t,n){return _v(t.getUTCMonth()+1,n,2)}function g_(t,n){return _v(t.getUTCMinutes(),n,2)}function y_(t,n){return _v(t.getUTCSeconds(),n,2)}function v_(t){var n=t.getUTCDay();return 0===n?7:n}function __(t,n){return _v(Fy.count(ev(t)-1,t),n,2)}function b_(t){var n=t.getUTCDay();return n>=4||0===n?Oy(t):Oy.ceil(t)}function m_(t,n){return t=b_(t),_v(Oy.count(ev(t),t)+(4===ev(t).getUTCDay()),n,2)}function x_(t){return t.getUTCDay()}function w_(t,n){return _v(qy.count(ev(t)-1,t),n,2)}function M_(t,n){return _v(t.getUTCFullYear()%100,n,2)}function T_(t,n){return _v((t=b_(t)).getUTCFullYear()%100,n,2)}function A_(t,n){return _v(t.getUTCFullYear()%1e4,n,4)}function S_(t,n){var e=t.getUTCDay();return _v((t=e>=4||0===e?Oy(t):Oy.ceil(t)).getUTCFullYear()%1e4,n,4)}function E_(){return"+0000"}function N_(){return"%"}function k_(t){return+t}function C_(t){return Math.floor(+t/1e3)}function P_(n){return dv=hv(n),t.timeFormat=dv.format,t.timeParse=dv.parse,t.utcFormat=dv.utcFormat,t.utcParse=dv.utcParse,dv}t.timeFormat=void 0,t.timeParse=void 0,t.utcFormat=void 0,t.utcParse=void 0,P_({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var z_="%Y-%m-%dT%H:%M:%S.%LZ";var $_=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(z_),D_=$_;var R_=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse(z_),F_=R_;function q_(t){return new Date(t)}function U_(t){return t instanceof Date?+t:+new Date(+t)}function I_(t,n,e,r,i,o,a,u,c,f){var s=Sg(),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),g=f("%I:%M"),y=f("%I %p"),v=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y");function x(t){return(c(t)<t?d:u(t)<t?p:a(t)<t?g:o(t)<t?y:r(t)<t?i(t)<t?v:_:e(t)<t?b:m)(t)}return s.invert=function(t){return new Date(l(t))},s.domain=function(t){return arguments.length?h(Array.from(t,U_)):h().map(q_)},s.ticks=function(n){var e=h();return t(e[0],e[e.length-1],null==n?10:n)},s.tickFormat=function(t,n){return null==n?x:f(n)},s.nice=function(t){var e=h();return t&&"function"==typeof t.range||(t=n(e[0],e[e.length-1],null==t?10:t)),t?h(kg(e,t)):s},s.copy=function(){return Tg(s,I_(t,n,e,r,i,o,a,u,c,f))},s}function O_(){var t,n,e,r,i,o=0,a=1,u=mg,c=!1;function f(n){return null==n||isNaN(n=+n)?i:u(0===e?.5:(n=(r(n)-t)*e,c?Math.max(0,Math.min(1,n)):n))}function s(t){return function(n){var e,r;return arguments.length?([e,r]=n,u=t(e,r),f):[u(0),u(1)]}}return f.domain=function(i){return arguments.length?([o,a]=i,t=r(o=+o),n=r(a=+a),e=t===n?0:1/(n-t),f):[o,a]},f.clamp=function(t){return arguments.length?(c=!!t,f):c},f.interpolator=function(t){return arguments.length?(u=t,f):u},f.range=s(Gr),f.rangeRound=s(Vr),f.unknown=function(t){return arguments.length?(i=t,f):i},function(i){return r=i,t=i(o),n=i(a),e=t===n?0:1/(n-t),f}}function B_(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Y_(){var t=Lg(O_());return t.copy=function(){return B_(t,Y_()).exponent(t.exponent())},dg.apply(t,arguments)}function L_(){var t,n,e,r,i,o,a,u=0,c=.5,f=1,s=1,l=mg,h=!1;function d(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-n)*(s*t<s*n?r:i),l(h?Math.max(0,Math.min(1,t)):t))}function p(t){return function(n){var e,r,i;return arguments.length?([e,r,i]=n,l=di(t,[e,r,i]),d):[l(0),l(.5),l(1)]}}return d.domain=function(a){return arguments.length?([u,c,f]=a,t=o(u=+u),n=o(c=+c),e=o(f=+f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d):[u,c,f]},d.clamp=function(t){return arguments.length?(h=!!t,d):h},d.interpolator=function(t){return arguments.length?(l=t,d):l},d.range=p(Gr),d.rangeRound=p(Vr),d.unknown=function(t){return arguments.length?(a=t,d):a},function(a){return o=a,t=a(u),n=a(c),e=a(f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d}}function j_(){var t=Lg(L_());return t.copy=function(){return B_(t,j_()).exponent(t.exponent())},dg.apply(t,arguments)}function H_(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}var X_=H_("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),G_=H_("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),V_=H_("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),W_=H_("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"),Z_=H_("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),K_=H_("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),Q_=H_("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),J_=H_("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),tb=H_("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),nb=H_("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),eb=H_("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),rb=t=>Fr(t[t.length-1]),ib=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(H_),ob=rb(ib),ab=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(H_),ub=rb(ab),cb=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(H_),fb=rb(cb),sb=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(H_),lb=rb(sb),hb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(H_),db=rb(hb),pb=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(H_),gb=rb(pb),yb=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(H_),vb=rb(yb),_b=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(H_),bb=rb(_b),mb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(H_),xb=rb(mb),wb=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(H_),Mb=rb(wb),Tb=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(H_),Ab=rb(Tb),Sb=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(H_),Eb=rb(Sb),Nb=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(H_),kb=rb(Nb),Cb=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(H_),Pb=rb(Cb),zb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(H_),$b=rb(zb),Db=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(H_),Rb=rb(Db),Fb=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(H_),qb=rb(Fb),Ub=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(H_),Ib=rb(Ub),Ob=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(H_),Bb=rb(Ob),Yb=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(H_),Lb=rb(Yb),jb=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(H_),Hb=rb(jb),Xb=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(H_),Gb=rb(Xb),Vb=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(H_),Wb=rb(Vb),Zb=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(H_),Kb=rb(Zb),Qb=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(H_),Jb=rb(Qb),tm=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(H_),nm=rb(tm),em=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(H_),rm=rb(em);var im=hi(Tr(300,.5,0),Tr(-240,.5,1)),om=hi(Tr(-100,.75,.35),Tr(80,1.5,.8)),am=hi(Tr(260,.75,.35),Tr(80,1.5,.8)),um=Tr();var cm=Fe(),fm=Math.PI/3,sm=2*Math.PI/3;function lm(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var hm=lm(H_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),dm=lm(H_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),pm=lm(H_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),gm=lm(H_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function ym(t){return function(){return t}}const vm=Math.abs,_m=Math.atan2,bm=Math.cos,mm=Math.max,xm=Math.min,wm=Math.sin,Mm=Math.sqrt,Tm=1e-12,Am=Math.PI,Sm=Am/2,Em=2*Am;function Nm(t){return t>=1?Sm:t<=-1?-Sm:Math.asin(t)}function km(t){let n=3;return t.digits=function(e){if(!arguments.length)return n;if(null==e)n=null;else{const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);n=t}return t},()=>new Ua(n)}function Cm(t){return t.innerRadius}function Pm(t){return t.outerRadius}function zm(t){return t.startAngle}function $m(t){return t.endAngle}function Dm(t){return t&&t.padAngle}function Rm(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/Mm(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,g=r+l,y=(h+p)/2,v=(d+g)/2,_=p-h,b=g-d,m=_*_+b*b,x=i-o,w=h*g-p*d,M=(b<0?-1:1)*Mm(mm(0,x*x*m-w*w)),T=(w*b-_*M)/m,A=(-w*_-b*M)/m,S=(w*b+_*M)/m,E=(-w*_+b*M)/m,N=T-y,k=A-v,C=S-y,P=E-v;return N*N+k*k>C*C+P*P&&(T=S,A=E),{cx:T,cy:A,x01:-s,y01:-l,x11:T*(i/x-1),y11:A*(i/x-1)}}var Fm=Array.prototype.slice;function qm(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function Um(t){this._context=t}function Im(t){return new Um(t)}function Om(t){return t[0]}function Bm(t){return t[1]}function Ym(t,n){var e=ym(!0),r=null,i=Im,o=null,a=km(u);function u(u){var c,f,s,l=(u=qm(u)).length,h=!1;for(null==r&&(o=i(s=a())),c=0;c<=l;++c)!(c<l&&e(f=u[c],c,u))===h&&((h=!h)?o.lineStart():o.lineEnd()),h&&o.point(+t(f,c,u),+n(f,c,u));if(s)return o=null,s+""||null}return t="function"==typeof t?t:void 0===t?Om:ym(t),n="function"==typeof n?n:void 0===n?Bm:ym(n),u.x=function(n){return arguments.length?(t="function"==typeof n?n:ym(+n),u):t},u.y=function(t){return arguments.length?(n="function"==typeof t?t:ym(+t),u):n},u.defined=function(t){return arguments.length?(e="function"==typeof t?t:ym(!!t),u):e},u.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),u):i},u.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),u):r},u}function Lm(t,n,e){var r=null,i=ym(!0),o=null,a=Im,u=null,c=km(f);function f(f){var s,l,h,d,p,g=(f=qm(f)).length,y=!1,v=new Array(g),_=new Array(g);for(null==o&&(u=a(p=c())),s=0;s<=g;++s){if(!(s<g&&i(d=f[s],s,f))===y)if(y=!y)l=s,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),h=s-1;h>=l;--h)u.point(v[h],_[h]);u.lineEnd(),u.areaEnd()}y&&(v[s]=+t(d,s,f),_[s]=+n(d,s,f),u.point(r?+r(d,s,f):v[s],e?+e(d,s,f):_[s]))}if(p)return u=null,p+""||null}function s(){return Ym().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?Om:ym(+t),n="function"==typeof n?n:ym(void 0===n?0:+n),e="function"==typeof e?e:void 0===e?Bm:ym(+e),f.x=function(n){return arguments.length?(t="function"==typeof n?n:ym(+n),r=null,f):t},f.x0=function(n){return arguments.length?(t="function"==typeof n?n:ym(+n),f):t},f.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:ym(+t),f):r},f.y=function(t){return arguments.length?(n="function"==typeof t?t:ym(+t),e=null,f):n},f.y0=function(t){return arguments.length?(n="function"==typeof t?t:ym(+t),f):n},f.y1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:ym(+t),f):e},f.lineX0=f.lineY0=function(){return s().x(t).y(n)},f.lineY1=function(){return s().x(t).y(e)},f.lineX1=function(){return s().x(r).y(n)},f.defined=function(t){return arguments.length?(i="function"==typeof t?t:ym(!!t),f):i},f.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),f):a},f.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),f):o},f}function jm(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function Hm(t){return t}Um.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Xm=Vm(Im);function Gm(t){this._curve=t}function Vm(t){function n(n){return new Gm(t(n))}return n._curve=t,n}function Wm(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Vm(t)):n()._curve},t}function Zm(){return Wm(Ym().curve(Xm))}function Km(){var t=Lm().curve(Xm),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Wm(e())},delete t.lineX0,t.lineEndAngle=function(){return Wm(r())},delete t.lineX1,t.lineInnerRadius=function(){return Wm(i())},delete t.lineY0,t.lineOuterRadius=function(){return Wm(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Vm(t)):n()._curve},t}function Qm(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}Gm.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};class Jm{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n)}this._x0=t,this._y0=n}}class tx{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,n){if(t=+t,n=+n,0===this._point)this._point=1;else{const e=Qm(this._x0,this._y0),r=Qm(this._x0,this._y0=(this._y0+n)/2),i=Qm(t,this._y0),o=Qm(t,n);this._context.moveTo(...e),this._context.bezierCurveTo(...r,...i,...o)}this._x0=t,this._y0=n}}function nx(t){return new Jm(t,!0)}function ex(t){return new Jm(t,!1)}function rx(t){return new tx(t)}function ix(t){return t.source}function ox(t){return t.target}function ax(t){let n=ix,e=ox,r=Om,i=Bm,o=null,a=null,u=km(c);function c(){let c;const f=Fm.call(arguments),s=n.apply(this,f),l=e.apply(this,f);if(null==o&&(a=t(c=u())),a.lineStart(),f[0]=s,a.point(+r.apply(this,f),+i.apply(this,f)),f[0]=l,a.point(+r.apply(this,f),+i.apply(this,f)),a.lineEnd(),c)return a=null,c+""||null}return c.source=function(t){return arguments.length?(n=t,c):n},c.target=function(t){return arguments.length?(e=t,c):e},c.x=function(t){return arguments.length?(r="function"==typeof t?t:ym(+t),c):r},c.y=function(t){return arguments.length?(i="function"==typeof t?t:ym(+t),c):i},c.context=function(n){return arguments.length?(null==n?o=a=null:a=t(o=n),c):o},c}const ux=Mm(3);var cx={draw(t,n){const e=.59436*Mm(n+xm(n/28,.75)),r=e/2,i=r*ux;t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-i,-r),t.lineTo(i,r),t.moveTo(-i,r),t.lineTo(i,-r)}},fx={draw(t,n){const e=Mm(n/Am);t.moveTo(e,0),t.arc(0,0,e,0,Em)}},sx={draw(t,n){const e=Mm(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}};const lx=Mm(1/3),hx=2*lx;var dx={draw(t,n){const e=Mm(n/hx),r=e*lx;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},px={draw(t,n){const e=.62625*Mm(n);t.moveTo(0,-e),t.lineTo(e,0),t.lineTo(0,e),t.lineTo(-e,0),t.closePath()}},gx={draw(t,n){const e=.87559*Mm(n-xm(n/7,2));t.moveTo(-e,0),t.lineTo(e,0),t.moveTo(0,e),t.lineTo(0,-e)}},yx={draw(t,n){const e=Mm(n),r=-e/2;t.rect(r,r,e,e)}},vx={draw(t,n){const e=.4431*Mm(n);t.moveTo(e,e),t.lineTo(e,-e),t.lineTo(-e,-e),t.lineTo(-e,e),t.closePath()}};const _x=wm(Am/10)/wm(7*Am/10),bx=wm(Em/10)*_x,mx=-bm(Em/10)*_x;var xx={draw(t,n){const e=Mm(.8908130915292852*n),r=bx*e,i=mx*e;t.moveTo(0,-e),t.lineTo(r,i);for(let n=1;n<5;++n){const o=Em*n/5,a=bm(o),u=wm(o);t.lineTo(u*e,-a*e),t.lineTo(a*r-u*i,u*r+a*i)}t.closePath()}};const wx=Mm(3);var Mx={draw(t,n){const e=-Mm(n/(3*wx));t.moveTo(0,2*e),t.lineTo(-wx*e,-e),t.lineTo(wx*e,-e),t.closePath()}};const Tx=Mm(3);var Ax={draw(t,n){const e=.6824*Mm(n),r=e/2,i=e*Tx/2;t.moveTo(0,-e),t.lineTo(i,r),t.lineTo(-i,r),t.closePath()}};const Sx=-.5,Ex=Mm(3)/2,Nx=1/Mm(12),kx=3*(Nx/2+1);var Cx={draw(t,n){const e=Mm(n/kx),r=e/2,i=e*Nx,o=r,a=e*Nx+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(Sx*r-Ex*i,Ex*r+Sx*i),t.lineTo(Sx*o-Ex*a,Ex*o+Sx*a),t.lineTo(Sx*u-Ex*c,Ex*u+Sx*c),t.lineTo(Sx*r+Ex*i,Sx*i-Ex*r),t.lineTo(Sx*o+Ex*a,Sx*a-Ex*o),t.lineTo(Sx*u+Ex*c,Sx*c-Ex*u),t.closePath()}},Px={draw(t,n){const e=.6189*Mm(n-xm(n/6,1.7));t.moveTo(-e,-e),t.lineTo(e,e),t.moveTo(-e,e),t.lineTo(e,-e)}};const zx=[fx,sx,dx,yx,xx,Mx,Cx],$x=[fx,gx,Px,Ax,cx,vx,px];function Dx(){}function Rx(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function Fx(t){this._context=t}function qx(t){this._context=t}function Ux(t){this._context=t}function Ix(t,n){this._basis=new Fx(t),this._beta=n}Fx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Rx(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Rx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},qx.prototype={areaStart:Dx,areaEnd:Dx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Rx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ux.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Rx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ix.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Ox=function t(n){function e(t){return 1===n?new Fx(t):new Ix(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function Bx(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function Yx(t,n){this._context=t,this._k=(1-n)/6}Yx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Bx(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:Bx(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Lx=function t(n){function e(t){return new Yx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function jx(t,n){this._context=t,this._k=(1-n)/6}jx.prototype={areaStart:Dx,areaEnd:Dx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Bx(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Hx=function t(n){function e(t){return new jx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Xx(t,n){this._context=t,this._k=(1-n)/6}Xx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Bx(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Gx=function t(n){function e(t){return new Xx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Vx(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>Tm){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Tm){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function Wx(t,n){this._context=t,this._alpha=n}Wx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:Vx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Zx=function t(n){function e(t){return n?new Wx(t,n):new Yx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Kx(t,n){this._context=t,this._alpha=n}Kx.prototype={areaStart:Dx,areaEnd:Dx,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Vx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Qx=function t(n){function e(t){return n?new Kx(t,n):new jx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Jx(t,n){this._context=t,this._alpha=n}Jx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Vx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var tw=function t(n){function e(t){return n?new Jx(t,n):new Xx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function nw(t){this._context=t}function ew(t){return t<0?-1:1}function rw(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(ew(o)+ew(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function iw(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function ow(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function aw(t){this._context=t}function uw(t){this._context=new cw(t)}function cw(t){this._context=t}function fw(t){this._context=t}function sw(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,a[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,a[n]-=e*a[n-1];for(i[r-1]=a[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)o[n]=2*t[n+1]-i[n+1];return[i,o]}function lw(t,n){this._context=t,this._t=n}function hw(t,n){if((i=t.length)>1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o<i;++o)for(r=a,a=t[n[o]],e=0;e<u;++e)a[e][1]+=a[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function dw(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function pw(t,n){return t[n]}function gw(t){const n=[];return n.key=t,n}function yw(t){var n=t.map(vw);return dw(t).sort((function(t,e){return n[t]-n[e]}))}function vw(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++e<i;)(n=+t[e][1])>o&&(o=n,r=e);return r}function _w(t){var n=t.map(bw);return dw(t).sort((function(t,e){return n[t]-n[e]}))}function bw(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}nw.prototype={areaStart:Dx,areaEnd:Dx,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},aw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:ow(this,this._t0,iw(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,ow(this,iw(this,e=rw(this,t,n)),e);break;default:ow(this,this._t0,e=rw(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(uw.prototype=Object.create(aw.prototype)).point=function(t,n){aw.prototype.point.call(this,n,t)},cw.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},fw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=sw(t),i=sw(n),o=0,a=1;a<e;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],n[a]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},lw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var mw=t=>()=>t;function xw(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function ww(t,n,e){this.k=t,this.x=n,this.y=e}ww.prototype={constructor:ww,scale:function(t){return 1===t?this:new ww(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new ww(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Mw=new ww(1,0,0);function Tw(t){for(;!t.__zoom;)if(!(t=t.parentNode))return Mw;return t.__zoom}function Aw(t){t.stopImmediatePropagation()}function Sw(t){t.preventDefault(),t.stopImmediatePropagation()}function Ew(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function Nw(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function kw(){return this.__zoom||Mw}function Cw(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Pw(){return navigator.maxTouchPoints||"ontouchstart"in this}function zw(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Tw.prototype=ww.prototype,t.Adder=T,t.Delaunay=Lu,t.FormatSpecifier=tf,t.InternMap=InternMap,t.InternSet=InternSet,t.Node=Qd,t.Path=Ua,t.Voronoi=qu,t.ZoomTransform=ww,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>qi&&e.name===n)return new po([[t]],Zo,n,+r);return null},t.arc=function(){var t=Cm,n=Pm,e=ym(0),r=null,i=zm,o=$m,a=Dm,u=null,c=km(f);function f(){var f,s,l=+t.apply(this,arguments),h=+n.apply(this,arguments),d=i.apply(this,arguments)-Sm,p=o.apply(this,arguments)-Sm,g=vm(p-d),y=p>d;if(u||(u=f=c()),h<l&&(s=h,h=l,l=s),h>Tm)if(g>Em-Tm)u.moveTo(h*bm(d),h*wm(d)),u.arc(0,0,h,d,p,!y),l>Tm&&(u.moveTo(l*bm(p),l*wm(p)),u.arc(0,0,l,p,d,y));else{var v,_,b=d,m=p,x=d,w=p,M=g,T=g,A=a.apply(this,arguments)/2,S=A>Tm&&(r?+r.apply(this,arguments):Mm(l*l+h*h)),E=xm(vm(h-l)/2,+e.apply(this,arguments)),N=E,k=E;if(S>Tm){var C=Nm(S/l*wm(A)),P=Nm(S/h*wm(A));(M-=2*C)>Tm?(x+=C*=y?1:-1,w-=C):(M=0,x=w=(d+p)/2),(T-=2*P)>Tm?(b+=P*=y?1:-1,m-=P):(T=0,b=m=(d+p)/2)}var z=h*bm(b),$=h*wm(b),D=l*bm(w),R=l*wm(w);if(E>Tm){var F,q=h*bm(m),U=h*wm(m),I=l*bm(x),O=l*wm(x);if(g<Am)if(F=function(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<Tm))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}(z,$,I,O,q,U,D,R)){var B=z-F[0],Y=$-F[1],L=q-F[0],j=U-F[1],H=1/wm(function(t){return t>1?0:t<-1?Am:Math.acos(t)}((B*L+Y*j)/(Mm(B*B+Y*Y)*Mm(L*L+j*j)))/2),X=Mm(F[0]*F[0]+F[1]*F[1]);N=xm(E,(l-X)/(H-1)),k=xm(E,(h-X)/(H+1))}else N=k=0}T>Tm?k>Tm?(v=Rm(I,O,z,$,h,k,y),_=Rm(q,U,D,R,h,k,y),u.moveTo(v.cx+v.x01,v.cy+v.y01),k<E?u.arc(v.cx,v.cy,k,_m(v.y01,v.x01),_m(_.y01,_.x01),!y):(u.arc(v.cx,v.cy,k,_m(v.y01,v.x01),_m(v.y11,v.x11),!y),u.arc(0,0,h,_m(v.cy+v.y11,v.cx+v.x11),_m(_.cy+_.y11,_.cx+_.x11),!y),u.arc(_.cx,_.cy,k,_m(_.y11,_.x11),_m(_.y01,_.x01),!y))):(u.moveTo(z,$),u.arc(0,0,h,b,m,!y)):u.moveTo(z,$),l>Tm&&M>Tm?N>Tm?(v=Rm(D,R,q,U,l,-N,y),_=Rm(z,$,I,O,l,-N,y),u.lineTo(v.cx+v.x01,v.cy+v.y01),N<E?u.arc(v.cx,v.cy,N,_m(v.y01,v.x01),_m(_.y01,_.x01),!y):(u.arc(v.cx,v.cy,N,_m(v.y01,v.x01),_m(v.y11,v.x11),!y),u.arc(0,0,l,_m(v.cy+v.y11,v.cx+v.x11),_m(_.cy+_.y11,_.cx+_.x11),y),u.arc(_.cx,_.cy,N,_m(_.y11,_.x11),_m(_.y01,_.x01),!y))):u.arc(0,0,l,w,x,y):u.lineTo(D,R)}else u.moveTo(0,0);if(u.closePath(),f)return u=null,f+""||null}return f.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-Am/2;return[bm(r)*e,wm(r)*e]},f.innerRadius=function(n){return arguments.length?(t="function"==typeof n?n:ym(+n),f):t},f.outerRadius=function(t){return arguments.length?(n="function"==typeof t?t:ym(+t),f):n},f.cornerRadius=function(t){return arguments.length?(e="function"==typeof t?t:ym(+t),f):e},f.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:ym(+t),f):r},f.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:ym(+t),f):i},f.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:ym(+t),f):o},f.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:ym(+t),f):a},f.context=function(t){return arguments.length?(u=null==t?null:t,f):u},f},t.area=Lm,t.areaRadial=Km,t.ascending=n,t.autoType=function(t){for(var n in t){var e,r,i=t[n].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(e=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;yc&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=e;else i=null;t[n]=i}return t},t.axisBottom=function(t){return Pt(Mt,t)},t.axisLeft=function(t){return Pt(Tt,t)},t.axisRight=function(t){return Pt(wt,t)},t.axisTop=function(t){return Pt(xt,t)},t.bin=Q,t.bisect=s,t.bisectCenter=f,t.bisectLeft=c,t.bisectRight=u,t.bisector=r,t.blob=function(t,n){return fetch(t,n).then(vc)},t.blur=function(t,n){if(!((n=+n)>=0))throw new RangeError("invalid r");let e=t.length;if(!((e=Math.floor(e))>=0))throw new RangeError("invalid length");if(!e||!n)return t;const r=y(n),i=t.slice();return r(t,i,0,e,1),r(i,t,0,e,1),r(t,i,0,e,1),t},t.blur2=l,t.blurImage=h,t.brush=function(){return wa(la)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.brushX=function(){return wa(fa)},t.brushY=function(){return wa(sa)},t.buffer=function(t,n){return fetch(t,n).then(_c)},t.chord=function(){return za(!1,!1)},t.chordDirected=function(){return za(!0,!1)},t.chordTranspose=function(){return za(!1,!0)},t.cluster=function(){var t=Ld,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(n){var e=n.children;e?(n.x=function(t){return t.reduce(jd,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Hd,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)}));var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.color=ze,t.contourDensity=function(){var t=fu,n=su,e=lu,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=Qa(20);function h(r){var i=new Float32Array(c*f),s=Math.pow(2,-a),h=-1;for(const o of r){var d=(t(o,++h,r)+u)*s,p=(n(o,h,r)+u)*s,g=+e(o,h,r);if(g&&d>=0&&d<c&&p>=0&&p<f){var y=Math.floor(d),v=Math.floor(p),_=d-y-.5,b=p-v-.5;i[y+v*c]+=(1-_)*(1-b)*g,i[y+1+v*c]+=_*(1-b)*g,i[y+1+(v+1)*c]+=_*b*g,i[y+(v+1)*c]+=(1-_)*b*g}}return l({data:i,width:c,height:f},o*s),i}function d(t){var n=h(t),e=s(n),r=Math.pow(2,2*a);return Array.isArray(e)||(e=G(Number.MIN_VALUE,J(n)/r,e)),iu().size([c,f]).thresholds(e.map((t=>t*r)))(n).map(((t,n)=>(t.value=+e[n],p(t))))}function p(t){return t.coordinates.forEach(g),t}function g(t){t.forEach(y)}function y(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function _(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,d}return d.contours=function(t){var n=h(t),e=iu().size([c,f]),r=Math.pow(2,2*a),i=t=>{t=+t;var i=p(e.contour(n,t*r));return i.value=t,i};return Object.defineProperty(i,"max",{get:()=>J(n)/r}),i},d.x=function(n){return arguments.length?(t="function"==typeof n?n:Qa(+n),d):t},d.y=function(t){return arguments.length?(n="function"==typeof t?t:Qa(+t),d):n},d.weight=function(t){return arguments.length?(e="function"==typeof t?t:Qa(+t),d):e},d.size=function(t){if(!arguments.length)return[r,i];var n=+t[0],e=+t[1];if(!(n>=0&&e>=0))throw new Error("invalid size");return r=n,i=e,_()},d.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),_()},d.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),d):s},d.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=(Math.sqrt(4*t*t+1)-1)/2,_()},d},t.contours=iu,t.count=v,t.create=function(t){return Zn(Yt(t).call(document.documentElement))},t.creator=Yt,t.cross=function(...t){const n="function"==typeof t[t.length-1]&&function(t){return n=>t(...n)}(t.pop()),e=(t=t.map(m)).map(_),r=t.length-1,i=new Array(r+1).fill(0),o=[];if(r<0||e.some(b))return o;for(;;){o.push(i.map(((n,e)=>t[e][n])));let a=r;for(;++i[a]===e[a];){if(0===a)return n?o.map(n):o;i[a--]=0}}},t.csv=wc,t.csvFormat=rc,t.csvFormatBody=ic,t.csvFormatRow=ac,t.csvFormatRows=oc,t.csvFormatValue=uc,t.csvParse=nc,t.csvParseRows=ec,t.cubehelix=Tr,t.cumsum=function(t,n){var e=0,r=0;return Float64Array.from(t,void 0===n?t=>e+=+t||0:i=>e+=+n(i,r++,t)||0)},t.curveBasis=function(t){return new Fx(t)},t.curveBasisClosed=function(t){return new qx(t)},t.curveBasisOpen=function(t){return new Ux(t)},t.curveBumpX=nx,t.curveBumpY=ex,t.curveBundle=Ox,t.curveCardinal=Lx,t.curveCardinalClosed=Hx,t.curveCardinalOpen=Gx,t.curveCatmullRom=Zx,t.curveCatmullRomClosed=Qx,t.curveCatmullRomOpen=tw,t.curveLinear=Im,t.curveLinearClosed=function(t){return new nw(t)},t.curveMonotoneX=function(t){return new aw(t)},t.curveMonotoneY=function(t){return new uw(t)},t.curveNatural=function(t){return new fw(t)},t.curveStep=function(t){return new lw(t,.5)},t.curveStepAfter=function(t){return new lw(t,1)},t.curveStepBefore=function(t){return new lw(t,0)},t.descending=e,t.deviation=w,t.difference=function(t,...n){t=new InternSet(t);for(const e of n)for(const n of e)t.delete(n);return t},t.disjoint=function(t,n){const e=n[Symbol.iterator](),r=new InternSet;for(const n of t){if(r.has(n))return!1;let t,i;for(;({value:t,done:i}=e.next())&&!i;){if(Object.is(n,t))return!1;r.add(t)}}return!0},t.dispatch=$t,t.drag=function(){var t,n,e,r,i=se,o=le,a=he,u=de,c={},f=$t("start","drag","end"),s=0,l=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",y).on("touchmove.drag",v,ee).on("touchend.drag touchcancel.drag",_).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(a,u){if(!r&&i.call(this,a,u)){var c=b(this,o.call(this,a,u),a,u,"mouse");c&&(Zn(a.view).on("mousemove.drag",p,re).on("mouseup.drag",g,re),ae(a.view),ie(a),e=!1,t=a.clientX,n=a.clientY,c("start",a))}}function p(r){if(oe(r),!e){var i=r.clientX-t,o=r.clientY-n;e=i*i+o*o>l}c.mouse("drag",r)}function g(t){Zn(t.view).on("mousemove.drag mouseup.drag",null),ue(t.view,e),oe(t),c.mouse("end",t)}function y(t,n){if(i.call(this,t,n)){var e,r,a=t.changedTouches,u=o.call(this,t,n),c=a.length;for(e=0;e<c;++e)(r=b(this,u,t,n,a[e].identifier,a[e]))&&(ie(t),r("start",t,a[e]))}}function v(t){var n,e,r=t.changedTouches,i=r.length;for(n=0;n<i;++n)(e=c[r[n].identifier])&&(oe(t),e("drag",t,r[n]))}function _(t){var n,e,i=t.changedTouches,o=i.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),n=0;n<o;++n)(e=c[i[n].identifier])&&(ie(t),e("end",t,i[n]))}function b(t,n,e,r,i,o){var u,l,d,p=f.copy(),g=ne(o||e,n);if(null!=(d=a.call(t,new fe("beforestart",{sourceEvent:e,target:h,identifier:i,active:s,x:g[0],y:g[1],dx:0,dy:0,dispatch:p}),r)))return u=d.x-g[0]||0,l=d.y-g[1]||0,function e(o,a,f){var y,v=g;switch(o){case"start":c[i]=e,y=s++;break;case"end":delete c[i],--s;case"drag":g=ne(f||a,n),y=s}p.call(o,t,new fe(o,{sourceEvent:a,subject:d,target:h,identifier:i,active:y,x:g[0]+u,y:g[1]+l,dx:g[0]-v[0],dy:g[1]-v[1],dispatch:p}),r)}}return h.filter=function(t){return arguments.length?(i="function"==typeof t?t:ce(!!t),h):i},h.container=function(t){return arguments.length?(o="function"==typeof t?t:ce(t),h):o},h.subject=function(t){return arguments.length?(a="function"==typeof t?t:ce(t),h):a},h.touchable=function(t){return arguments.length?(u="function"==typeof t?t:ce(!!t),h):u},h.on=function(){var t=f.on.apply(f,arguments);return t===f?h:t},h.clickDistance=function(t){return arguments.length?(l=(t=+t)*t,h):Math.sqrt(l)},h},t.dragDisable=ae,t.dragEnable=ue,t.dsv=function(t,n,e,r){3===arguments.length&&"function"==typeof e&&(r=e,e=void 0);var i=Ju(t);return mc(n,e).then((function(t){return i.parse(t,r)}))},t.dsvFormat=Ju,t.easeBack=Lo,t.easeBackIn=Bo,t.easeBackInOut=Lo,t.easeBackOut=Yo,t.easeBounce=Io,t.easeBounceIn=function(t){return 1-Io(1-t)},t.easeBounceInOut=function(t){return((t*=2)<=1?1-Io(1-t):Io(t-1)+1)/2},t.easeBounceOut=Io,t.easeCircle=No,t.easeCircleIn=function(t){return 1-Math.sqrt(1-t*t)},t.easeCircleInOut=No,t.easeCircleOut=function(t){return Math.sqrt(1- --t*t)},t.easeCubic=bo,t.easeCubicIn=function(t){return t*t*t},t.easeCubicInOut=bo,t.easeCubicOut=function(t){return--t*t*t+1},t.easeElastic=Xo,t.easeElasticIn=Ho,t.easeElasticInOut=Go,t.easeElasticOut=Xo,t.easeExp=Eo,t.easeExpIn=function(t){return So(1-+t)},t.easeExpInOut=Eo,t.easeExpOut=function(t){return 1-So(t)},t.easeLinear=t=>+t,t.easePoly=wo,t.easePolyIn=mo,t.easePolyInOut=wo,t.easePolyOut=xo,t.easeQuad=_o,t.easeQuadIn=function(t){return t*t},t.easeQuadInOut=_o,t.easeQuadOut=function(t){return t*(2-t)},t.easeSin=Ao,t.easeSinIn=function(t){return 1==+t?1:1-Math.cos(t*To)},t.easeSinInOut=Ao,t.easeSinOut=function(t){return Math.sin(t*To)},t.every=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(!n(r,++e,t))return!1;return!0},t.extent=M,t.fcumsum=function(t,n){const e=new T;let r=-1;return Float64Array.from(t,void 0===n?t=>e.add(+t||0):i=>e.add(+n(i,++r,t)||0))},t.filter=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");const e=[];let r=-1;for(const i of t)n(i,++r,t)&&e.push(i);return e},t.flatGroup=function(t,...n){return z(P(t,...n),n)},t.flatRollup=function(t,n,...e){return z(D(t,n,...e),e)},t.forceCenter=function(t,n){var e,r=1;function i(){var i,o,a=e.length,u=0,c=0;for(i=0;i<a;++i)u+=(o=e[i]).x,c+=o.y;for(u=(u/a-t)*r,c=(c/a-n)*r,i=0;i<a;++i)(o=e[i]).x-=u,o.y-=c}return null==t&&(t=0),null==n&&(n=0),i.initialize=function(t){e=t},i.x=function(n){return arguments.length?(t=+n,i):t},i.y=function(t){return arguments.length?(n=+t,i):n},i.strength=function(t){return arguments.length?(r=+t,i):r},i},t.forceCollide=function(t){var n,e,r,i=1,o=1;function a(){for(var t,a,c,f,s,l,h,d=n.length,p=0;p<o;++p)for(a=$c(n,Ic,Oc).visitAfter(u),t=0;t<d;++t)c=n[t],l=e[c.index],h=l*l,f=c.x+c.vx,s=c.y+c.vy,a.visit(g);function g(t,n,e,o,a){var u=t.data,d=t.r,p=l+d;if(!u)return n>f+p||o<f-p||e>s+p||a<s-p;if(u.index>c.index){var g=f-u.x-u.vx,y=s-u.y-u.vy,v=g*g+y*y;v<p*p&&(0===g&&(v+=(g=Uc(r))*g),0===y&&(v+=(y=Uc(r))*y),v=(p-(v=Math.sqrt(v)))/v*i,c.vx+=(g*=v)*(p=(d*=d)/(h+d)),c.vy+=(y*=v)*p,u.vx-=g*(p=1-p),u.vy-=y*p)}}}function u(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function c(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r<o;++r)i=n[r],e[i.index]=+t(i,r,n)}}return"function"!=typeof t&&(t=qc(null==t?1:+t)),a.initialize=function(t,e){n=t,r=e,c()},a.iterations=function(t){return arguments.length?(o=+t,a):o},a.strength=function(t){return arguments.length?(i=+t,a):i},a.radius=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),c(),a):t},a},t.forceLink=function(t){var n,e,r,i,o,a,u=Bc,c=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},f=qc(30),s=1;function l(r){for(var i=0,u=t.length;i<s;++i)for(var c,f,l,h,d,p,g,y=0;y<u;++y)f=(c=t[y]).source,h=(l=c.target).x+l.vx-f.x-f.vx||Uc(a),d=l.y+l.vy-f.y-f.vy||Uc(a),h*=p=((p=Math.sqrt(h*h+d*d))-e[y])/p*r*n[y],d*=p,l.vx-=h*(g=o[y]),l.vy-=d*g,f.vx+=h*(g=1-g),f.vy+=d*g}function h(){if(r){var a,c,f=r.length,s=t.length,l=new Map(r.map(((t,n)=>[u(t,n,r),t])));for(a=0,i=new Array(f);a<s;++a)(c=t[a]).index=a,"object"!=typeof c.source&&(c.source=Yc(l,c.source)),"object"!=typeof c.target&&(c.target=Yc(l,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(a=0,o=new Array(s);a<s;++a)c=t[a],o[a]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);n=new Array(s),d(),e=new Array(s),p()}}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+c(t[e],e,t)}function p(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+f(t[n],n,t)}return null==t&&(t=[]),l.initialize=function(t,n){r=t,a=n,h()},l.links=function(n){return arguments.length?(t=n,h(),l):t},l.id=function(t){return arguments.length?(u=t,l):u},l.iterations=function(t){return arguments.length?(s=+t,l):s},l.strength=function(t){return arguments.length?(c="function"==typeof t?t:qc(+t),d(),l):c},l.distance=function(t){return arguments.length?(f="function"==typeof t?t:qc(+t),p(),l):f},l},t.forceManyBody=function(){var t,n,e,r,i,o=qc(-30),a=1,u=1/0,c=.81;function f(e){var i,o=t.length,a=$c(t,Xc,Gc).visitAfter(l);for(r=e,i=0;i<o;++i)n=t[i],a.visit(h)}function s(){if(t){var n,e,r=t.length;for(i=new Array(r),n=0;n<r;++n)e=t[n],i[e.index]=+o(e,n,t)}}function l(t){var n,e,r,o,a,u=0,c=0;if(t.length){for(r=o=a=0;a<4;++a)(n=t[a])&&(e=Math.abs(n.value))&&(u+=n.value,c+=e,r+=e*n.x,o+=e*n.y);t.x=r/c,t.y=o/c}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=i[n.data.index]}while(n=n.next)}t.value=u}function h(t,o,f,s){if(!t.value)return!0;var l=t.x-n.x,h=t.y-n.y,d=s-o,p=l*l+h*h;if(d*d/c<p)return p<u&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p<a&&(p=Math.sqrt(a*p)),n.vx+=l*t.value*r/p,n.vy+=h*t.value*r/p),!0;if(!(t.length||p>=u)){(t.data!==n||t.next)&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p<a&&(p=Math.sqrt(a*p)));do{t.data!==n&&(d=i[t.data.index]*r/p,n.vx+=l*d,n.vy+=h*d)}while(t=t.next)}}return f.initialize=function(n,r){t=n,e=r,s()},f.strength=function(t){return arguments.length?(o="function"==typeof t?t:qc(+t),s(),f):o},f.distanceMin=function(t){return arguments.length?(a=t*t,f):Math.sqrt(a)},f.distanceMax=function(t){return arguments.length?(u=t*t,f):Math.sqrt(u)},f.theta=function(t){return arguments.length?(c=t*t,f):Math.sqrt(c)},f},t.forceRadial=function(t,n,e){var r,i,o,a=qc(.1);function u(t){for(var a=0,u=r.length;a<u;++a){var c=r[a],f=c.x-n||1e-6,s=c.y-e||1e-6,l=Math.sqrt(f*f+s*s),h=(o[a]-l)*i[a]*t/l;c.vx+=f*h,c.vy+=s*h}}function c(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)o[n]=+t(r[n],n,r),i[n]=isNaN(o[n])?0:+a(r[n],n,r)}}return"function"!=typeof t&&(t=qc(+t)),null==n&&(n=0),null==e&&(e=0),u.initialize=function(t){r=t,c()},u.strength=function(t){return arguments.length?(a="function"==typeof t?t:qc(+t),c(),u):a},u.radius=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),c(),u):t},u.x=function(t){return arguments.length?(n=+t,u):n},u.y=function(t){return arguments.length?(e=+t,u):e},u},t.forceSimulation=function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=new Map,c=Ni(l),f=$t("tick","end"),s=function(){let t=1;return()=>(t=(Lc*t+jc)%Hc)/Hc}();function l(){h(),f.call("tick",n),e<r&&(c.stop(),f.call("end",n))}function h(r){var c,f,s=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(e+=(o-e)*i,u.forEach((function(t){t(e)})),c=0;c<s;++c)null==(f=t[c]).fx?f.x+=f.vx*=a:(f.x=f.fx,f.vx=0),null==f.fy?f.y+=f.vy*=a:(f.y=f.fy,f.vy=0);return n}function d(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=10*Math.sqrt(.5+e),o=e*Vc;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function p(n){return n.initialize&&n.initialize(t,s),n}return null==t&&(t=[]),d(),n={tick:h,restart:function(){return c.restart(l),n},stop:function(){return c.stop(),n},nodes:function(e){return arguments.length?(t=e,d(),u.forEach(p),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(o=+t,n):o},velocityDecay:function(t){return arguments.length?(a=1-t,n):1-a},randomSource:function(t){return arguments.length?(s=t,u.forEach(p),n):s},force:function(t,e){return arguments.length>1?(null==e?u.delete(t):u.set(t,p(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f<s;++f)(a=(i=n-(u=t[f]).x)*i+(o=e-u.y)*o)<r&&(c=u,r=a);return c},on:function(t,e){return arguments.length>1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vx+=(r[o]-i.x)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=qc(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:qc(+t),a(),o):i},o.x=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),a(),o):t},o},t.forceY=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vy+=(r[o]-i.y)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=qc(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:qc(+t),a(),o):i},o.y=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),a(),o):t},o},t.formatDefaultLocale=ff,t.formatLocale=cf,t.formatSpecifier=Jc,t.fsum=function(t,n){const e=new T;if(void 0===n)for(let n of t)(n=+n)&&e.add(n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&e.add(i)}return+e},t.geoAlbers=xd,t.geoAlbersUsa=function(){var t,n,e,r,i,o,a=xd(),u=md().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=md().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},s.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),c.precision(t),l()):a.precision()},s.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),c.scale(t),s.translate(a.translate())):a.scale()},s.translate=function(t){if(!arguments.length)return a.translate();var n=a.scale(),o=+t[0],s=+t[1];return e=a.translate(t).clipExtent([[o-.455*n,s-.238*n],[o+.455*n,s+.238*n]]).stream(f),r=u.translate([o-.307*n,s+.201*n]).clipExtent([[o-.425*n+df,s+.12*n+df],[o-.214*n-df,s+.234*n-df]]).stream(f),i=c.translate([o-.205*n,s+.212*n]).clipExtent([[o-.214*n+df,s+.166*n+df],[o-.115*n-df,s+.234*n-df]]).stream(f),l()},s.fitExtent=function(t,n){return ud(s,t,n)},s.fitSize=function(t,n){return cd(s,t,n)},s.fitWidth=function(t,n){return fd(s,t,n)},s.fitHeight=function(t,n){return sd(s,t,n)},s.scale(1070)},t.geoArea=function(t){return us=new T,Lf(t,cs),2*us},t.geoAzimuthalEqualArea=function(){return yd(Td).scale(124.75).clipAngle(179.999)},t.geoAzimuthalEqualAreaRaw=Td,t.geoAzimuthalEquidistant=function(){return yd(Ad).scale(79.4188).clipAngle(179.999)},t.geoAzimuthalEquidistantRaw=Ad,t.geoBounds=function(t){var n,e,r,i,o,a,u;if(Qf=Kf=-(Wf=Zf=1/0),is=[],Lf(t,Fs),e=is.length){for(is.sort(Hs),n=1,o=[r=is[0]];n<e;++n)Xs(r,(i=is[n])[0])||Xs(r,i[1])?(js(r[0],i[1])>js(r[0],r[1])&&(r[1]=i[1]),js(i[0],r[1])>js(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=js(r[1],i[0]))>a&&(a=u,Wf=i[0],Kf=r[1])}return is=os=null,Wf===1/0||Zf===1/0?[[NaN,NaN],[NaN,NaN]]:[[Wf,Zf],[Kf,Qf]]},t.geoCentroid=function(t){ms=xs=ws=Ms=Ts=As=Ss=Es=0,Ns=new T,ks=new T,Cs=new T,Lf(t,Gs);var n=+Ns,e=+ks,r=+Cs,i=Ef(n,e,r);return i<pf&&(n=As,e=Ss,r=Es,xs<df&&(n=ws,e=Ms,r=Ts),(i=Ef(n,e,r))<pf)?[NaN,NaN]:[Mf(e,n)*bf,Rf(r/i)*bf]},t.geoCircle=function(){var t,n,e=il([0,0]),r=il(90),i=il(2),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=bf,e[1]*=bf}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*mf,c=i.apply(this,arguments)*mf;return t=[],n=ul(-a[0]*mf,-a[1]*mf,0).invert,hl(o,u,c,1),a={type:"Polygon",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e="function"==typeof t?t:il([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r="function"==typeof t?t:il(+t),a):r},a.precision=function(t){return arguments.length?(i="function"==typeof t?t:il(+t),a):i},a},t.geoClipAntimeridian=Tl,t.geoClipCircle=Al,t.geoClipExtent=function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=zl(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},t.geoClipRectangle=zl,t.geoConicConformal=function(){return _d(kd).scale(109.5).parallels([30,30])},t.geoConicConformalRaw=kd,t.geoConicEqualArea=md,t.geoConicEqualAreaRaw=bd,t.geoConicEquidistant=function(){return _d(Pd).scale(131.154).center([0,13.9389])},t.geoConicEquidistantRaw=Pd,t.geoContains=function(t,n){return(t&&Bl.hasOwnProperty(t.type)?Bl[t.type]:Ll)(t,n)},t.geoDistance=Ol,t.geoEqualEarth=function(){return yd(qd).scale(177.158)},t.geoEqualEarthRaw=qd,t.geoEquirectangular=function(){return yd(Cd).scale(152.63)},t.geoEquirectangularRaw=Cd,t.geoGnomonic=function(){return yd(Ud).scale(144.049).clipAngle(60)},t.geoGnomonicRaw=Ud,t.geoGraticule=Kl,t.geoGraticule10=function(){return Kl()()},t.geoIdentity=function(){var t,n,e,r,i,o,a,u=1,c=0,f=0,s=1,l=1,h=0,d=null,p=1,g=1,y=id({point:function(t,n){var e=b([t,n]);this.stream.point(e[0],e[1])}}),v=eh;function _(){return p=u*s,g=u*l,o=a=null,b}function b(e){var r=e[0]*p,i=e[1]*g;if(h){var o=i*t-r*n;r=r*t+i*n,i=o}return[r+c,i+f]}return b.invert=function(e){var r=e[0]-c,i=e[1]-f;if(h){var o=i*t+r*n;r=r*t-i*n,i=o}return[r/p,i/g]},b.stream=function(t){return o&&a===t?o:o=y(v(a=t))},b.postclip=function(t){return arguments.length?(v=t,d=e=r=i=null,_()):v},b.clipExtent=function(t){return arguments.length?(v=null==t?(d=e=r=i=null,eh):zl(d=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),_()):null==d?null:[[d,e],[r,i]]},b.scale=function(t){return arguments.length?(u=+t,_()):u},b.translate=function(t){return arguments.length?(c=+t[0],f=+t[1],_()):[c,f]},b.angle=function(e){return arguments.length?(n=Cf(h=e%360*mf),t=Tf(h),_()):h*bf},b.reflectX=function(t){return arguments.length?(s=t?-1:1,_()):s<0},b.reflectY=function(t){return arguments.length?(l=t?-1:1,_()):l<0},b.fitExtent=function(t,n){return ud(b,t,n)},b.fitSize=function(t,n){return cd(b,t,n)},b.fitWidth=function(t,n){return fd(b,t,n)},b.fitHeight=function(t,n){return sd(b,t,n)},b},t.geoInterpolate=function(t,n){var e=t[0]*mf,r=t[1]*mf,i=n[0]*mf,o=n[1]*mf,a=Tf(r),u=Cf(r),c=Tf(o),f=Cf(o),s=a*Tf(e),l=a*Cf(e),h=c*Tf(i),d=c*Cf(i),p=2*Rf(zf(Ff(o-r)+a*c*Ff(i-e))),g=Cf(p),y=p?function(t){var n=Cf(t*=p)/g,e=Cf(p-t)/g,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[Mf(i,r)*bf,Mf(o,zf(r*r+i*i))*bf]}:function(){return[e*bf,r*bf]};return y.distance=p,y},t.geoLength=ql,t.geoMercator=function(){return Ed(Sd).scale(961/_f)},t.geoMercatorRaw=Sd,t.geoNaturalEarth1=function(){return yd(Id).scale(175.295)},t.geoNaturalEarth1Raw=Id,t.geoOrthographic=function(){return yd(Od).scale(249.5).clipAngle(90+df)},t.geoOrthographicRaw=Od,t.geoPath=function(t,n){let e,r,i=3,o=4.5;function a(t){return t&&("function"==typeof o&&r.pointRadius(+o.apply(this,arguments)),Lf(t,e(r))),r.result()}return a.area=function(t){return Lf(t,e(sh)),sh.result()},a.measure=function(t){return Lf(t,e(Kh)),Kh.result()},a.bounds=function(t){return Lf(t,e(mh)),mh.result()},a.centroid=function(t){return Lf(t,e(Oh)),Oh.result()},a.projection=function(n){return arguments.length?(e=null==n?(t=null,eh):(t=n).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(n=null,new ed(i)):new Bh(n=t),"function"!=typeof o&&r.pointRadius(o),a):n},a.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(r.pointRadius(+t),+t),a):o},a.digits=function(t){if(!arguments.length)return i;if(null==t)i=null;else{const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);i=n}return null===n&&(r=new ed(i)),a},a.projection(t).digits(i).context(n)},t.geoProjection=yd,t.geoProjectionMutator=vd,t.geoRotation=ll,t.geoStereographic=function(){return yd(Bd).scale(250).clipAngle(142)},t.geoStereographicRaw=Bd,t.geoStream=Lf,t.geoTransform=function(t){return{stream:id(t)}},t.geoTransverseMercator=function(){var t=Ed(Yd),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=Yd,t.gray=function(t,n){return new ur(t,0,0,null==n?1:n)},t.greatest=ot,t.greatestIndex=function(t,e=n){if(1===e.length)return tt(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)>0)&&(r=n,i=o);return i},t.group=C,t.groupSort=function(t,e,r){return(2!==e.length?U($(t,e,r),(([t,e],[r,i])=>n(e,i)||n(t,r))):U(C(t,r),(([t,r],[i,o])=>e(r,o)||n(t,i)))).map((([t])=>t))},t.groups=P,t.hcl=dr,t.hierarchy=Gd,t.histogram=Q,t.hsl=He,t.html=Ec,t.image=function(t,n){return new Promise((function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t}))},t.index=function(t,...n){return F(t,k,R,n)},t.indexes=function(t,...n){return F(t,Array.from,R,n)},t.interpolate=Gr,t.interpolateArray=function(t,n){return(Ir(n)?Ur:Or)(t,n)},t.interpolateBasis=Er,t.interpolateBasisClosed=Nr,t.interpolateBlues=Gb,t.interpolateBrBG=ob,t.interpolateBuGn=Mb,t.interpolateBuPu=Ab,t.interpolateCividis=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},t.interpolateCool=am,t.interpolateCubehelix=li,t.interpolateCubehelixDefault=im,t.interpolateCubehelixLong=hi,t.interpolateDate=Br,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateGnBu=Eb,t.interpolateGreens=Wb,t.interpolateGreys=Kb,t.interpolateHcl=ci,t.interpolateHclLong=fi,t.interpolateHsl=oi,t.interpolateHslLong=ai,t.interpolateHue=function(t,n){var e=Pr(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateInferno=pm,t.interpolateLab=function(t,n){var e=$r((t=ar(t)).l,(n=ar(n)).l),r=$r(t.a,n.a),i=$r(t.b,n.b),o=$r(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateMagma=dm,t.interpolateNumber=Yr,t.interpolateNumberArray=Ur,t.interpolateObject=Lr,t.interpolateOrRd=kb,t.interpolateOranges=rm,t.interpolatePRGn=ub,t.interpolatePiYG=fb,t.interpolatePlasma=gm,t.interpolatePuBu=$b,t.interpolatePuBuGn=Pb,t.interpolatePuOr=lb,t.interpolatePuRd=Rb,t.interpolatePurples=Jb,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return um.h=360*t-100,um.s=1.5-1.5*n,um.l=.8-.9*n,um+""},t.interpolateRdBu=db,t.interpolateRdGy=gb,t.interpolateRdPu=qb,t.interpolateRdYlBu=vb,t.interpolateRdYlGn=bb,t.interpolateReds=nm,t.interpolateRgb=Dr,t.interpolateRgbBasis=Fr,t.interpolateRgbBasisClosed=qr,t.interpolateRound=Vr,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,cm.r=255*(n=Math.sin(t))*n,cm.g=255*(n=Math.sin(t+fm))*n,cm.b=255*(n=Math.sin(t+sm))*n,cm+""},t.interpolateSpectral=xb,t.interpolateString=Xr,t.interpolateTransformCss=ti,t.interpolateTransformSvg=ni,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=hm,t.interpolateWarm=om,t.interpolateYlGn=Bb,t.interpolateYlGnBu=Ib,t.interpolateYlOrBr=Lb,t.interpolateYlOrRd=Hb,t.interpolateZoom=ri,t.interrupt=Gi,t.intersection=function(t,...n){t=new InternSet(t),n=n.map(vt);t:for(const e of t)for(const r of n)if(!r.has(e)){t.delete(e);continue t}return t},t.interval=function(t,n,e){var r=new Ei,i=n;return null==n?(r.restart(t,n,e),r):(r._restart=r.restart,r.restart=function(t,n,e){n=+n,e=null==e?Ai():+e,r._restart((function o(a){a+=i,r._restart(o,i+=n,e),t(a)}),n,e)},r.restart(t,n,e),r)},t.isoFormat=D_,t.isoParse=F_,t.json=function(t,n){return fetch(t,n).then(Tc)},t.lab=ar,t.lch=function(t,n,e,r){return 1===arguments.length?hr(t):new pr(e,n,t,null==r?1:r)},t.least=function(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)<0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)<0:0===e(n,n))&&(r=n,i=!0);return r},t.leastIndex=ht,t.line=Ym,t.lineRadial=Zm,t.link=ax,t.linkHorizontal=function(){return ax(nx)},t.linkRadial=function(){const t=ax(rx);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return ax(ex)},t.local=Qn,t.map=function(t,n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof n)throw new TypeError("mapper is not a function");return Array.from(t,((e,r)=>n(e,r,t)))},t.matcher=Vt,t.max=J,t.maxIndex=tt,t.mean=function(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(o=+o)>=o&&(++e,r+=o)}if(e)return r/e},t.median=function(t,n){return at(t,.5,n)},t.medianIndex=function(t,n){return ct(t,.5,n)},t.merge=ft,t.min=nt,t.minIndex=et,t.mode=function(t,n){const e=new InternMap;if(void 0===n)for(let n of t)null!=n&&n>=n&&e.set(n,(e.get(n)||0)+1);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&e.set(i,(e.get(i)||0)+1)}let r,i=0;for(const[t,n]of e)n>i&&(i=n,r=t);return r},t.namespace=It,t.namespaces=Ut,t.nice=Z,t.now=Ai,t.pack=function(){var t=null,n=1,e=1,r=np;function i(i){const o=ap();return i.x=n/2,i.y=e/2,t?i.eachBefore(xp(t)).eachAfter(wp(r,.5,o)).eachBefore(Mp(1)):i.eachBefore(xp(mp)).eachAfter(wp(np,1,o)).eachAfter(wp(r,i.r/Math.min(n,e),o)).eachBefore(Mp(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=Jd(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:ep(+t),i):r},i},t.packEnclose=function(t){return up(t,ap())},t.packSiblings=function(t){return bp(t,ap()),t},t.pairs=function(t,n=st){const e=[];let r,i=!1;for(const o of t)i&&e.push(n(r,o)),r=o,i=!0;return e},t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Ap(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(n,o)),r&&i.eachBefore(Tp),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},t.path=Ia,t.pathRound=function(t=3){return new Ua(+t)},t.permute=q,t.pie=function(){var t=Hm,n=jm,e=null,r=ym(0),i=ym(Em),o=ym(0);function a(a){var u,c,f,s,l,h=(a=qm(a)).length,d=0,p=new Array(h),g=new Array(h),y=+r.apply(this,arguments),v=Math.min(Em,Math.max(-Em,i.apply(this,arguments)-y)),_=Math.min(Math.abs(v)/h,o.apply(this,arguments)),b=_*(v<0?-1:1);for(u=0;u<h;++u)(l=g[p[u]=u]=+t(a[u],u,a))>0&&(d+=l);for(null!=n?p.sort((function(t,e){return n(g[t],g[e])})):null!=e&&p.sort((function(t,n){return e(a[t],a[n])})),u=0,f=d?(v-h*b)/d:0;u<h;++u,y=s)c=p[u],s=y+((l=g[c])>0?l*f:0)+b,g[c]={data:a[c],index:u,value:l,startAngle:y,endAngle:s,padAngle:_};return g}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:ym(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:ym(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:ym(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:ym(+t),a):o},a},t.piecewise=di,t.pointRadial=Qm,t.pointer=ne,t.pointers=function(t,n){return t.target&&(t=te(t),void 0===n&&(n=t.currentTarget),t=t.touches||[t]),Array.from(t,(t=>ne(t,n)))},t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++e<r;)n=i,i=t[e],o+=n[1]*i[0]-n[0]*i[1];return o/2},t.polygonCentroid=function(t){for(var n,e,r=-1,i=t.length,o=0,a=0,u=t[i-1],c=0;++r<i;)n=u,u=t[r],c+=e=n[0]*u[1]-u[0]*n[1],o+=(n[0]+u[0])*e,a+=(n[1]+u[1])*e;return[o/(c*=3),a/c]},t.polygonContains=function(t,n){for(var e,r,i=t.length,o=t[i-1],a=n[0],u=n[1],c=o[0],f=o[1],s=!1,l=0;l<i;++l)e=(o=t[l])[0],(r=o[1])>u!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort(Hp),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=Xp(r),a=Xp(i),u=a[0]===o[0],c=a[a.length-1]===o[o.length-1],f=[];for(n=o.length-1;n>=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n<a.length-c;++n)f.push(t[r[a[n]][2]]);return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r<i;)n=a,e=u,n-=a=(o=t[r])[0],e-=u=o[1],c+=Math.hypot(n,e);return c},t.precisionFixed=sf,t.precisionPrefix=lf,t.precisionRound=hf,t.quadtree=$c,t.quantile=at,t.quantileIndex=ct,t.quantileSorted=ut,t.quantize=function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},t.quickselect=rt,t.radialArea=Km,t.radialLine=Zm,t.randomBates=Jp,t.randomBernoulli=eg,t.randomBeta=og,t.randomBinomial=ag,t.randomCauchy=cg,t.randomExponential=tg,t.randomGamma=ig,t.randomGeometric=rg,t.randomInt=Wp,t.randomIrwinHall=Qp,t.randomLcg=function(t=Math.random()){let n=0|(0<=t&&t<1?t/lg:Math.abs(t));return()=>(n=1664525*n+1013904223|0,lg*(n>>>0))},t.randomLogNormal=Kp,t.randomLogistic=fg,t.randomNormal=Zp,t.randomPareto=ng,t.randomPoisson=sg,t.randomUniform=Vp,t.randomWeibull=ug,t.range=lt,t.rank=function(t,e=n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");let r=Array.from(t);const i=new Float64Array(r.length);2!==e.length&&(r=r.map(e),e=n);const o=(t,n)=>e(r[t],r[n]);let a,u;return(t=Uint32Array.from(r,((t,n)=>n))).sort(e===n?(t,n)=>O(r[t],r[n]):I(o)),t.forEach(((t,n)=>{const e=o(t,void 0===a?t:a);e>=0?((void 0===a||e>0)&&(a=t,u=n),i[t]=u):i[t]=NaN})),i},t.reduce=function(t,n,e){if("function"!=typeof n)throw new TypeError("reducer is not a function");const r=t[Symbol.iterator]();let i,o,a=-1;if(arguments.length<3){if(({done:i,value:e}=r.next()),i)return;++a}for(;({done:i,value:o}=r.next()),!i;)e=n(e,o,++a,t);return e},t.reverse=function(t){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(t).reverse()},t.rgb=Fe,t.ribbon=function(){return Wa()},t.ribbonArrow=function(){return Wa(Va)},t.rollup=$,t.rollups=D,t.scaleBand=yg,t.scaleDiverging=function t(){var n=Ng(L_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=Fg(L_()).domain([.1,1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleDivergingPow=j_,t.scaleDivergingSqrt=function(){return j_.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=Ig(L_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleIdentity=function t(n){var e;function r(t){return null==t||isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,_g),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,_g):[0,1],Ng(r)},t.scaleImplicit=pg,t.scaleLinear=function t(){var n=Sg();return n.copy=function(){return Tg(n,t())},hg.apply(n,arguments),Ng(n)},t.scaleLog=function t(){const n=Fg(Ag()).domain([1,10]);return n.copy=()=>Tg(n,t()).base(n.base()),hg.apply(n,arguments),n},t.scaleOrdinal=gg,t.scalePoint=function(){return vg(yg.apply(null,arguments).paddingInner(1))},t.scalePow=jg,t.scaleQuantile=function t(){var e,r=[],i=[],o=[];function a(){var t=0,n=Math.max(1,i.length);for(o=new Array(n-1);++t<n;)o[t-1]=ut(r,t/n);return u}function u(t){return null==t||isNaN(t=+t)?e:i[s(o,t)]}return u.invertExtent=function(t){var n=i.indexOf(t);return n<0?[NaN,NaN]:[n>0?o[n-1]:r[0],n<o.length?o[n]:r[r.length-1]]},u.domain=function(t){if(!arguments.length)return r.slice();r=[];for(let n of t)null==n||isNaN(n=+n)||r.push(n);return r.sort(n),a()},u.range=function(t){return arguments.length?(i=Array.from(t),a()):i.slice()},u.unknown=function(t){return arguments.length?(e=t,u):e},u.quantiles=function(){return o.slice()},u.copy=function(){return t().domain(r).range(i).unknown(e)},hg.apply(u,arguments)},t.scaleQuantize=function t(){var n,e=0,r=1,i=1,o=[.5],a=[0,1];function u(t){return null!=t&&t<=t?a[s(o,t,0,i)]:n}function c(){var t=-1;for(o=new Array(i);++t<i;)o[t]=((t+1)*r-(t-i)*e)/(i+1);return u}return u.domain=function(t){return arguments.length?([e,r]=t,e=+e,r=+r,c()):[e,r]},u.range=function(t){return arguments.length?(i=(a=Array.from(t)).length-1,c()):a.slice()},u.invertExtent=function(t){var n=a.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,o[0]]:n>=i?[o[i-1],r]:[o[n-1],o[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([e,r]).range(a).unknown(n)},hg.apply(Ng(u),arguments)},t.scaleRadial=function t(){var n,e=Sg(),r=[0,1],i=!1;function o(t){var r=function(t){return Math.sign(t)*Math.sqrt(Math.abs(t))}(e(t));return isNaN(r)?n:i?Math.round(r):r}return o.invert=function(t){return e.invert(Hg(t))},o.domain=function(t){return arguments.length?(e.domain(t),o):e.domain()},o.range=function(t){return arguments.length?(e.range((r=Array.from(t,_g)).map(Hg)),o):r.slice()},o.rangeRound=function(t){return o.range(t).round(!0)},o.round=function(t){return arguments.length?(i=!!t,o):i},o.clamp=function(t){return arguments.length?(e.clamp(t),o):e.clamp()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t(e.domain(),r).round(i).clamp(e.clamp()).unknown(n)},hg.apply(o,arguments),Ng(o)},t.scaleSequential=function t(){var n=Ng(O_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=Fg(O_()).domain([1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleSequentialPow=Y_,t.scaleSequentialQuantile=function t(){var e=[],r=mg;function i(t){if(null!=t&&!isNaN(t=+t))return r((s(e,t,1)-1)/(e.length-1))}return i.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)null==n||isNaN(n=+n)||e.push(n);return e.sort(n),i},i.interpolator=function(t){return arguments.length?(r=t,i):r},i.range=function(){return e.map(((t,n)=>r(n/(e.length-1))))},i.quantiles=function(t){return Array.from({length:t+1},((n,r)=>at(e,r/t)))},i.copy=function(){return t(r).domain(e)},dg.apply(i,arguments)},t.scaleSequentialSqrt=function(){return Y_.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Ig(O_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleSqrt=function(){return jg.apply(null,arguments).exponent(.5)},t.scaleSymlog=function t(){var n=Ig(Ag());return n.copy=function(){return Tg(n,t()).constant(n.constant())},hg.apply(n,arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],i=1;function o(t){return null!=t&&t<=t?r[s(e,t,0,i)]:n}return o.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),o):e.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t().domain(e).range(r).unknown(n)},hg.apply(o,arguments)},t.scaleTime=function(){return hg.apply(I_(uv,cv,tv,Zy,xy,py,sy,ay,iy,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return hg.apply(I_(ov,av,ev,Qy,Fy,yy,hy,cy,iy,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scan=function(t,n){const e=ht(t,n);return e<0?void 0:e},t.schemeAccent=G_,t.schemeBlues=Xb,t.schemeBrBG=ib,t.schemeBuGn=wb,t.schemeBuPu=Tb,t.schemeCategory10=X_,t.schemeDark2=V_,t.schemeGnBu=Sb,t.schemeGreens=Vb,t.schemeGreys=Zb,t.schemeObservable10=W_,t.schemeOrRd=Nb,t.schemeOranges=em,t.schemePRGn=ab,t.schemePaired=Z_,t.schemePastel1=K_,t.schemePastel2=Q_,t.schemePiYG=cb,t.schemePuBu=zb,t.schemePuBuGn=Cb,t.schemePuOr=sb,t.schemePuRd=Db,t.schemePurples=Qb,t.schemeRdBu=hb,t.schemeRdGy=pb,t.schemeRdPu=Fb,t.schemeRdYlBu=yb,t.schemeRdYlGn=_b,t.schemeReds=tm,t.schemeSet1=J_,t.schemeSet2=tb,t.schemeSet3=nb,t.schemeSpectral=mb,t.schemeTableau10=eb,t.schemeYlGn=Ob,t.schemeYlGnBu=Ub,t.schemeYlOrBr=Yb,t.schemeYlOrRd=jb,t.select=Zn,t.selectAll=function(t){return"string"==typeof t?new Vn([document.querySelectorAll(t)],[document.documentElement]):new Vn([Ht(t)],Gn)},t.selection=Wn,t.selector=jt,t.selectorAll=Gt,t.shuffle=dt,t.shuffler=pt,t.some=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(n(r,++e,t))return!0;return!1},t.sort=U,t.stack=function(){var t=ym([]),n=dw,e=hw,r=pw;function i(i){var o,a,u=Array.from(t.apply(this,arguments),gw),c=u.length,f=-1;for(const t of i)for(o=0,++f;o<c;++o)(u[o][f]=[0,+r(t,u[o].key,f,i)]).data=t;for(o=0,a=qm(n(u));o<c;++o)u[a[o]].index=o;return e(u,a),u}return i.keys=function(n){return arguments.length?(t="function"==typeof n?n:ym(Array.from(n)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:ym(+t),i):r},i.order=function(t){return arguments.length?(n=null==t?dw:"function"==typeof t?t:ym(Array.from(t)),i):n},i.offset=function(t){return arguments.length?(e=null==t?hw:t,i):e},i},t.stackOffsetDiverging=function(t,n){if((u=t.length)>0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c<f;++c)for(o=a=0,e=0;e<u;++e)(i=(r=t[n[e]][c])[1]-r[0])>0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o<a;++o){for(i=e=0;e<r;++e)i+=t[e][o][1]||0;if(i)for(e=0;e<r;++e)t[e][o][1]/=i}hw(t,n)}},t.stackOffsetNone=hw,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r<o;++r){for(var a=0,u=0;a<e;++a)u+=t[a][r][1]||0;i[r][1]+=i[r][0]=-u/2}hw(t,n)}},t.stackOffsetWiggle=function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a<r;++a){for(var u=0,c=0,f=0;u<i;++u){for(var s=t[n[u]],l=s[a][1]||0,h=(l-(s[a-1][1]||0))/2,d=0;d<u;++d){var p=t[n[d]];h+=(p[a][1]||0)-(p[a-1][1]||0)}c+=l,f+=h*l}e[a-1][1]+=e[a-1][0]=o,c&&(o-=f/c)}e[a-1][1]+=e[a-1][0]=o,hw(t,n)}},t.stackOrderAppearance=yw,t.stackOrderAscending=_w,t.stackOrderDescending=function(t){return _w(t).reverse()},t.stackOrderInsideOut=function(t){var n,e,r=t.length,i=t.map(bw),o=yw(t),a=0,u=0,c=[],f=[];for(n=0;n<r;++n)e=o[n],a<u?(a+=i[e],c.push(e)):(u+=i[e],f.push(e));return f.reverse().concat(c)},t.stackOrderNone=dw,t.stackOrderReverse=function(t){return dw(t).reverse()},t.stratify=function(){var t,n=kp,e=Cp;function r(r){var i,o,a,u,c,f,s,l,h=Array.from(r),d=n,p=e,g=new Map;if(null!=t){const n=h.map(((n,e)=>function(t){t=`${t}`;let n=t.length;zp(t,n-1)&&!zp(t,n-2)&&(t=t.slice(0,-1));return"/"===t[0]?t:`/${t}`}(t(n,e,r)))),e=n.map(Pp),i=new Set(n).add("");for(const t of e)i.has(t)||(i.add(t),n.push(t),e.push(Pp(t)),h.push(Np));d=(t,e)=>n[e],p=(t,n)=>e[n]}for(a=0,i=h.length;a<i;++a)o=h[a],f=h[a]=new Qd(o),null!=(s=d(o,a,r))&&(s+="")&&(l=f.id=s,g.set(l,g.has(l)?Ep:f)),null!=(s=p(o,a,r))&&(s+="")&&(f.parent=s);for(a=0;a<i;++a)if(s=(f=h[a]).parent){if(!(c=g.get(s)))throw new Error("missing: "+s);if(c===Ep)throw new Error("ambiguous: "+s);c.children?c.children.push(f):c.children=[f],f.parent=c}else{if(u)throw new Error("multiple roots");u=f}if(!u)throw new Error("no root");if(null!=t){for(;u.data===Np&&1===u.children.length;)u=u.children[0],--i;for(let t=h.length-1;t>=0&&(f=h[t]).data===Np;--t)f.data=null}if(u.parent=Sp,u.eachBefore((function(t){t.depth=t.parent.depth+1,--i})).eachBefore(Kd),u.parent=null,i>0)throw new Error("cycle");return u}return r.id=function(t){return arguments.length?(n=Jd(t),r):n},r.parentId=function(t){return arguments.length?(e=Jd(t),r):e},r.path=function(n){return arguments.length?(t=Jd(n),r):t},r},t.style=_n,t.subset=function(t,n){return _t(n,t)},t.sum=function(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e},t.superset=_t,t.svg=Nc,t.symbol=function(t,n){let e=null,r=km(i);function i(){let i;if(e||(e=i=r()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),i)return e=null,i+""||null}return t="function"==typeof t?t:ym(t||fx),n="function"==typeof n?n:ym(void 0===n?64:+n),i.type=function(n){return arguments.length?(t="function"==typeof n?n:ym(n),i):t},i.size=function(t){return arguments.length?(n="function"==typeof t?t:ym(+t),i):n},i.context=function(t){return arguments.length?(e=null==t?null:t,i):e},i},t.symbolAsterisk=cx,t.symbolCircle=fx,t.symbolCross=sx,t.symbolDiamond=dx,t.symbolDiamond2=px,t.symbolPlus=gx,t.symbolSquare=yx,t.symbolSquare2=vx,t.symbolStar=xx,t.symbolTimes=Px,t.symbolTriangle=Mx,t.symbolTriangle2=Ax,t.symbolWye=Cx,t.symbolX=Px,t.symbols=zx,t.symbolsFill=zx,t.symbolsStroke=$x,t.text=mc,t.thresholdFreedmanDiaconis=function(t,n,e){const r=v(t),i=at(t,.75)-at(t,.25);return r&&i?Math.ceil((e-n)/(2*i*Math.pow(r,-1/3))):1},t.thresholdScott=function(t,n,e){const r=v(t),i=w(t);return r&&i?Math.ceil((e-n)*Math.cbrt(r)/(3.49*i)):1},t.thresholdSturges=K,t.tickFormat=Eg,t.tickIncrement=V,t.tickStep=W,t.ticks=G,t.timeDay=py,t.timeDays=gy,t.timeFormatDefaultLocale=P_,t.timeFormatLocale=hv,t.timeFriday=Sy,t.timeFridays=$y,t.timeHour=sy,t.timeHours=ly,t.timeInterval=Vg,t.timeMillisecond=Wg,t.timeMilliseconds=Zg,t.timeMinute=ay,t.timeMinutes=uy,t.timeMonday=wy,t.timeMondays=ky,t.timeMonth=Zy,t.timeMonths=Ky,t.timeSaturday=Ey,t.timeSaturdays=Dy,t.timeSecond=iy,t.timeSeconds=oy,t.timeSunday=xy,t.timeSundays=Ny,t.timeThursday=Ay,t.timeThursdays=zy,t.timeTickInterval=cv,t.timeTicks=uv,t.timeTuesday=My,t.timeTuesdays=Cy,t.timeWednesday=Ty,t.timeWednesdays=Py,t.timeWeek=xy,t.timeWeeks=Ny,t.timeYear=tv,t.timeYears=nv,t.timeout=$i,t.timer=Ni,t.timerFlush=ki,t.transition=go,t.transpose=gt,t.tree=function(){var t=$p,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new Up(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new Up(r[i],i)),e.parent=n;return(a.parent=new Up(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore((function(t){t.x<f.x&&(f=t),t.x>s.x&&(s=t),t.depth>l.depth&&(l=t)}));var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),g=e/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=Rp(u),o=Dp(o),u&&o;)c=Dp(c),(a=Rp(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Fp(qp(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!Rp(a)&&(a.t=u,a.m+=l-s),o&&!Dp(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=Yp,n=!1,e=1,r=1,i=[0],o=np,a=np,u=np,c=np,f=np;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(Tp),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l<r&&(r=l=(r+l)/2),h<s&&(s=h=(s+h)/2),n.x0=r,n.y0=s,n.x1=l,n.y1=h,n.children&&(e=i[n.depth+1]=o(n)/2,r+=f(n)-e,s+=a(n)-e,(l-=u(n)-e)<r&&(r=l=(r+l)/2),(h-=c(n)-e)<s&&(s=h=(s+h)/2),t(n,r,s,l,h))}return s.round=function(t){return arguments.length?(n=!!t,s):n},s.size=function(t){return arguments.length?(e=+t[0],r=+t[1],s):[e,r]},s.tile=function(n){return arguments.length?(t=tp(n),s):t},s.padding=function(t){return arguments.length?s.paddingInner(t).paddingOuter(t):s.paddingInner()},s.paddingInner=function(t){return arguments.length?(o="function"==typeof t?t:ep(+t),s):o},s.paddingOuter=function(t){return arguments.length?s.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):s.paddingTop()},s.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:ep(+t),s):a},s.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:ep(+t),s):u},s.paddingBottom=function(t){return arguments.length?(c="function"==typeof t?t:ep(+t),s):c},s.paddingLeft=function(t){return arguments.length?(f="function"==typeof t?t:ep(+t),s):f},s},t.treemapBinary=function(t,n,e,r,i){var o,a,u=t.children,c=u.length,f=new Array(c+1);for(f[0]=a=o=0;o<c;++o)f[o+1]=a+=u[o].value;!function t(n,e,r,i,o,a,c){if(n>=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d<p;){var g=d+p>>>1;f[g]<h?d=g+1:p=g}h-f[d-1]<f[d]-h&&n+1<d&&--d;var y=f[d]-l,v=r-y;if(a-i>c-o){var _=r?(i*v+a*y)/r:a;t(n,d,y,i,o,_,c),t(d,e,v,_,o,a,c)}else{var b=r?(o*v+c*y)/r:c;t(n,d,y,i,o,a,b),t(d,e,v,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Ap,t.treemapResquarify=Lp,t.treemapSlice=Ip,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Ip:Ap)(t,n,e,r,i)},t.treemapSquarify=Yp,t.tsv=Mc,t.tsvFormat=lc,t.tsvFormatBody=hc,t.tsvFormatRow=pc,t.tsvFormatRows=dc,t.tsvFormatValue=gc,t.tsvParse=fc,t.tsvParseRows=sc,t.union=function(...t){const n=new InternSet;for(const e of t)for(const t of e)n.add(t);return n},t.unixDay=_y,t.unixDays=by,t.utcDay=yy,t.utcDays=vy,t.utcFriday=By,t.utcFridays=Vy,t.utcHour=hy,t.utcHours=dy,t.utcMillisecond=Wg,t.utcMilliseconds=Zg,t.utcMinute=cy,t.utcMinutes=fy,t.utcMonday=qy,t.utcMondays=jy,t.utcMonth=Qy,t.utcMonths=Jy,t.utcSaturday=Yy,t.utcSaturdays=Wy,t.utcSecond=iy,t.utcSeconds=oy,t.utcSunday=Fy,t.utcSundays=Ly,t.utcThursday=Oy,t.utcThursdays=Gy,t.utcTickInterval=av,t.utcTicks=ov,t.utcTuesday=Uy,t.utcTuesdays=Hy,t.utcWednesday=Iy,t.utcWednesdays=Xy,t.utcWeek=Fy,t.utcWeeks=Ly,t.utcYear=ev,t.utcYears=rv,t.variance=x,t.version="7.9.0",t.window=pn,t.xml=Sc,t.zip=function(){return gt(arguments)},t.zoom=function(){var t,n,e,r=Ew,i=Nw,o=zw,a=Cw,u=Pw,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=ri,h=$t("start","zoom","end"),d=500,p=150,g=0,y=10;function v(t){t.property("__zoom",kw).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",S).filter(u).on("touchstart.zoom",E).on("touchmove.zoom",N).on("touchend.zoom touchcancel.zoom",k).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new ww(n,t.x,t.y)}function b(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new ww(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e,r){t.on("start.zoom",(function(){w(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){w(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,o=arguments,a=w(t,o).event(r),u=i.apply(t,o),c=null==e?m(u):"function"==typeof e?e.apply(t,o):e,f=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),s=t.__zoom,h="function"==typeof n?n.apply(t,o):n,d=l(s.invert(c).concat(f/s.k),h.invert(c).concat(f/h.k));return function(t){if(1===t)t=h;else{var n=d(t),e=f/n[2];t=new ww(e,c[0]-n[0]*e,c[1]-n[1]*e)}a.zoom(null,t)}}))}function w(t,n,e){return!e&&t.__zooming||new M(t,n)}function M(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,n),this.taps=0}function T(t,...n){if(r.apply(this,arguments)){var e=w(this,n).event(t),i=this.__zoom,u=Math.max(c[0],Math.min(c[1],i.k*Math.pow(2,a.apply(this,arguments)))),s=ne(t);if(e.wheel)e.mouse[0][0]===s[0]&&e.mouse[0][1]===s[1]||(e.mouse[1]=i.invert(e.mouse[0]=s)),clearTimeout(e.wheel);else{if(i.k===u)return;e.mouse=[s,i.invert(s)],Gi(this),e.start()}Sw(t),e.wheel=setTimeout((function(){e.wheel=null,e.end()}),p),e.zoom("mouse",o(b(_(i,u),e.mouse[0],e.mouse[1]),e.extent,f))}}function A(t,...n){if(!e&&r.apply(this,arguments)){var i=t.currentTarget,a=w(this,n,!0).event(t),u=Zn(t.view).on("mousemove.zoom",(function(t){if(Sw(t),!a.moved){var n=t.clientX-s,e=t.clientY-l;a.moved=n*n+e*e>g}a.event(t).zoom("mouse",o(b(a.that.__zoom,a.mouse[0]=ne(t,i),a.mouse[1]),a.extent,f))}),!0).on("mouseup.zoom",(function(t){u.on("mousemove.zoom mouseup.zoom",null),ue(t.view,a.moved),Sw(t),a.event(t).end()}),!0),c=ne(t,i),s=t.clientX,l=t.clientY;ae(t.view),Aw(t),a.mouse=[c,this.__zoom.invert(c)],Gi(this),a.start()}}function S(t,...n){if(r.apply(this,arguments)){var e=this.__zoom,a=ne(t.changedTouches?t.changedTouches[0]:t,this),u=e.invert(a),c=e.k*(t.shiftKey?.5:2),l=o(b(_(e,c),a,u),i.apply(this,n),f);Sw(t),s>0?Zn(this).transition().duration(s).call(x,l,a,t):Zn(this).call(v.transform,l,a,t)}}function E(e,...i){if(r.apply(this,arguments)){var o,a,u,c,f=e.touches,s=f.length,l=w(this,i,e.changedTouches.length===s).event(e);for(Aw(e),a=0;a<s;++a)c=[c=ne(u=f[a],this),this.__zoom.invert(c),u.identifier],l.touch0?l.touch1||l.touch0[2]===c[2]||(l.touch1=c,l.taps=0):(l.touch0=c,o=!0,l.taps=1+!!t);t&&(t=clearTimeout(t)),o&&(l.taps<2&&(n=c[0],t=setTimeout((function(){t=null}),d)),Gi(this),l.start())}}function N(t,...n){if(this.__zooming){var e,r,i,a,u=w(this,n).event(t),c=t.changedTouches,s=c.length;for(Sw(t),e=0;e<s;++e)i=ne(r=c[e],this),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var l=u.touch0[0],h=u.touch0[1],d=u.touch1[0],p=u.touch1[1],g=(g=d[0]-l[0])*g+(g=d[1]-l[1])*g,y=(y=p[0]-h[0])*y+(y=p[1]-h[1])*y;r=_(r,Math.sqrt(g/y)),i=[(l[0]+d[0])/2,(l[1]+d[1])/2],a=[(h[0]+p[0])/2,(h[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],a=u.touch0[1]}u.zoom("touch",o(b(r,i,a),u.extent,f))}}function k(t,...r){if(this.__zooming){var i,o,a=w(this,r).event(t),u=t.changedTouches,c=u.length;for(Aw(t),e&&clearTimeout(e),e=setTimeout((function(){e=null}),d),i=0;i<c;++i)o=u[i],a.touch0&&a.touch0[2]===o.identifier?delete a.touch0:a.touch1&&a.touch1[2]===o.identifier&&delete a.touch1;if(a.touch1&&!a.touch0&&(a.touch0=a.touch1,delete a.touch1),a.touch0)a.touch0[1]=this.__zoom.invert(a.touch0[0]);else if(a.end(),2===a.taps&&(o=ne(o,this),Math.hypot(n[0]-o[0],n[1]-o[1])<y)){var f=Zn(this).on("dblclick.zoom");f&&f.apply(this,arguments)}}}return v.transform=function(t,n,e,r){var i=t.selection?t.selection():t;i.property("__zoom",kw),t!==i?x(t,n,e,r):i.interrupt().each((function(){w(this,arguments).event(r).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()}))},v.scaleBy=function(t,n,e,r){v.scaleTo(t,(function(){return this.__zoom.k*("function"==typeof n?n.apply(this,arguments):n)}),e,r)},v.scaleTo=function(t,n,e,r){v.transform(t,(function(){var t=i.apply(this,arguments),r=this.__zoom,a=null==e?m(t):"function"==typeof e?e.apply(this,arguments):e,u=r.invert(a),c="function"==typeof n?n.apply(this,arguments):n;return o(b(_(r,c),a,u),t,f)}),e,r)},v.translateBy=function(t,n,e,r){v.transform(t,(function(){return o(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof e?e.apply(this,arguments):e),i.apply(this,arguments),f)}),null,r)},v.translateTo=function(t,n,e,r,a){v.transform(t,(function(){var t=i.apply(this,arguments),a=this.__zoom,u=null==r?m(t):"function"==typeof r?r.apply(this,arguments):r;return o(Mw.translate(u[0],u[1]).scale(a.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof e?-e.apply(this,arguments):-e),t,f)}),r,a)},M.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var n=Zn(this.that).datum();h.call(t,this.that,new xw(t,{sourceEvent:this.sourceEvent,target:v,type:t,transform:this.that.__zoom,dispatch:h}),n)}},v.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:mw(+t),v):a},v.filter=function(t){return arguments.length?(r="function"==typeof t?t:mw(!!t),v):r},v.touchable=function(t){return arguments.length?(u="function"==typeof t?t:mw(!!t),v):u},v.extent=function(t){return arguments.length?(i="function"==typeof t?t:mw([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),v):i},v.scaleExtent=function(t){return arguments.length?(c[0]=+t[0],c[1]=+t[1],v):[c[0],c[1]]},v.translateExtent=function(t){return arguments.length?(f[0][0]=+t[0][0],f[1][0]=+t[1][0],f[0][1]=+t[0][1],f[1][1]=+t[1][1],v):[[f[0][0],f[0][1]],[f[1][0],f[1][1]]]},v.constrain=function(t){return arguments.length?(o=t,v):o},v.duration=function(t){return arguments.length?(s=+t,v):s},v.interpolate=function(t){return arguments.length?(l=t,v):l},v.on=function(){var t=h.on.apply(h,arguments);return t===h?v:t},v.clickDistance=function(t){return arguments.length?(g=(t=+t)*t,v):Math.sqrt(g)},v.tapDistance=function(t){return arguments.length?(y=+t,v):y},v},t.zoomIdentity=Mw,t.zoomTransform=Tw}));
diff --git a/site/code/input-knobs.js b/site/code/input-knobs.js
new file mode 100644
index 0000000..65aefb1
--- /dev/null
+++ b/site/code/input-knobs.js
@@ -0,0 +1,342 @@
+window.addEventListener("load",()=>{
+ let op=window.inputKnobsOptions||{};
+ op.knobWidth=op.knobWidth||op.knobDiameter||64;
+ op.knobHeight=op.knobHeight||op.knobDiameter||64;
+ op.sliderWidth=op.sliderWidth||op.sliderDiameter||128;
+ op.sliderHeight=op.sliderHeight||op.sliderDiameter||20;
+ op.switchWidth=op.switchWidth||op.switchDiameter||24;
+ op.switchHeight=op.switchHeight||op.switchDiameter||24;
+ op.fgcolor=op.fgcolor||"#f00";
+ op.bgcolor=op.bgcolor||"#000";
+ op.knobMode=op.knobMode||"linear";
+ op.sliderMode=op.sliderMode||"relative";
+ let styles=document.createElement("style");
+ styles.innerHTML=
+`input[type=range].input-knob,input[type=range].input-slider{
+ -webkit-appearance:none;
+ -moz-appearance:none;
+ border:none;
+ box-sizing:border-box;
+ overflow:hidden;
+ background-repeat:no-repeat;
+ background-size:100% 100%;
+ background-position:0px 0%;
+ background-color:transparent;
+ touch-action:none;
+}
+input[type=range].input-knob{
+ width:${op.knobWidth}px; height:${op.knobHeight}px;
+}
+input[type=range].input-slider{
+ width:${op.sliderWidth}px; height:${op.sliderHeight}px;
+}
+input[type=range].input-knob::-webkit-slider-thumb,input[type=range].input-slider::-webkit-slider-thumb{
+ -webkit-appearance:none;
+ opacity:0;
+}
+input[type=range].input-knob::-moz-range-thumb,input[type=range].input-slider::-moz-range-thumb{
+ -moz-appearance:none;
+ height:0;
+ border:none;
+}
+input[type=range].input-knob::-moz-range-track,input[type=range].input-slider::-moz-range-track{
+ -moz-appearance:none;
+ height:0;
+ border:none;
+}
+input[type=checkbox].input-switch,input[type=radio].input-switch {
+ width:${op.switchWidth}px;
+ height:${op.switchHeight}px;
+ -webkit-appearance:none;
+ -moz-appearance:none;
+ background-size:100% 200%;
+ background-position:0% 0%;
+ background-repeat:no-repeat;
+ border:none;
+ border-radius:0;
+ background-color:transparent;
+}
+input[type=checkbox].input-switch:checked,input[type=radio].input-switch:checked {
+ background-position:0% 100%;
+}`;
+ document.head.appendChild(styles);
+ let makeKnobFrames=(fr,fg,bg)=>{
+ let r=
+`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="${fr*64}" viewBox="0 0 64 ${fr*64}" preserveAspectRatio="none">
+<defs><g id="K"><circle cx="32" cy="32" r="30" fill="${bg}"/>
+<line x1="32" y1="28" x2="32" y2="7" stroke-linecap="round" stroke-width="6" stroke="${fg}"/></g></defs>
+<use xlink:href="#K" transform="rotate(-135,32,32)"/>`;
+ for(let i=1;i<fr;++i)
+ r+=`<use xlink:href="#K" transform="translate(0,${64*i}) rotate(${-135+270*i/fr},32,32)"/>`;
+ return r+"</svg>";
+ }
+ let makeHSliderFrames=(fr,fg,bg,w,h)=>{
+ let r=
+`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${w}" height="${fr*h}" viewBox="0 0 ${w} ${fr*h}" preserveAspectRatio="none">
+<defs><g id="B"><rect x="0" y="0" width="${w}" height="${h}" rx="${h/2}" ry="${h/2}" fill="${bg}"/></g>
+<g id="K"><circle x="${w/2}" y="0" r="${h/2*0.9}" fill="${fg}"/></g></defs>`;
+ for(let i=0;i<fr;++i){
+ r+=`<use xlink:href="#B" transform="translate(0,${h*i})"/>`;
+ r+=`<use xlink:href="#K" transform="translate(${h/2+(w-h)*i/100},${h/2+h*i})"/>`;
+ }
+ return r+"</svg>";
+ }
+ let makeVSliderFrames=(fr,fg,bg,w,h)=>{
+ let r=
+`<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="${w}" height="${fr*h}" viewBox="0 0 ${w} ${fr*h}" preserveAspectRatio="none">
+<defs><rect id="B" x="0" y="0" width="${w}" height="${h}" rx="${w/2}" ry="${w/2}" fill="${bg}"/>
+<circle id="K" x="0" y="0" r="${w/2*0.9}" fill="${fg}"/></defs>`;
+ for(let i=0;i<fr;++i){
+ r+=`<use xlink:href="#B" transform="translate(0,${h*i})"/>`;
+ r+=`<use xlink:href="#K" transform="translate(${w/2} ${h*(i+1)-w/2-i*(h-w)/100})"/>`;
+ }
+ return r+"</svg>";
+ }
+ let initSwitches=(el)=>{
+ let w,h,d,fg,bg;
+ if(el.inputKnobs)
+ return;
+ el.inputKnobs={};
+ el.refresh=()=>{
+ let src=el.getAttribute("data-src");
+ d=+el.getAttribute("data-diameter");
+ let st=document.defaultView.getComputedStyle(el,null);
+ w=parseFloat(el.getAttribute("data-width")||d||st.width);
+ h=parseFloat(el.getAttribute("data-height")||d||st.height);
+ bg=el.getAttribute("data-bgcolor")||op.bgcolor;
+ fg=el.getAttribute("data-fgcolor")||op.fgcolor;
+ el.style.width=w+"px";
+ el.style.height=h+"px";
+ if(src)
+ el.style.backgroundImage="url("+src+")";
+ else {
+ let minwh=Math.min(w,h);
+ let svg=
+`<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h*2}" viewBox="0 0 ${w} ${h*2}" preserveAspectRatio="none">
+<g><rect fill="${bg}" x="1" y="1" width="${w-2}" height="${h-2}" rx="${minwh*0.25}" ry="${minwh*0.25}"/>
+<rect fill="${bg}" x="1" y="${h+1}" width="${w-2}" height="${h-2}" rx="${minwh*0.25}" ry="${minwh*0.25}"/>
+<circle fill="${fg}" cx="${w*0.5}" cy="${h*1.5}" r="${minwh*0.25}"/></g></svg>`;
+ el.style.backgroundImage="url(data:image/svg+xml;base64,"+btoa(svg)+")";
+ }
+ };
+ el.refresh();
+ };
+ let initKnobs=(el)=>{
+ let w,h,d,fg,bg;
+ if(el.inputKnobs){
+ el.redraw();
+ return;
+ }
+ let ik=el.inputKnobs={};
+ el.refresh=()=>{
+ d=+el.getAttribute("data-diameter");
+ let st=document.defaultView.getComputedStyle(el,null);
+ w=parseFloat(el.getAttribute("data-width")||d||st.width);
+ h=parseFloat(el.getAttribute("data-height")||d||st.height);
+ bg=el.getAttribute("data-bgcolor")||op.bgcolor;
+ fg=el.getAttribute("data-fgcolor")||op.fgcolor;
+ ik.sensex=ik.sensey=200;
+ if(el.className.indexOf("input-knob")>=0)
+ ik.itype="k";
+ else{
+ if(w>=h){
+ ik.itype="h";
+ ik.sensex=w-h;
+ ik.sensey=Infinity;
+ el.style.backgroundSize="auto 100%";
+ }
+ else{
+ ik.itype="v";
+ ik.sensex=Infinity;
+ ik.sensey=h-w;
+ el.style.backgroundSize="100% auto";
+ }
+ }
+ el.style.width=w+"px";
+ el.style.height=h+"px";
+ ik.frameheight=h;
+ let src=el.getAttribute("data-src");
+ if(src){
+ el.style.backgroundImage=`url(${src})`;
+ let sp=+el.getAttribute("data-sprites");
+ if(sp)
+ ik.sprites=sp;
+ else
+ ik.sprites=0;
+ if(ik.sprites>=1)
+ el.style.backgroundSize=`100% ${(ik.sprites+1)*100}%`;
+ else if(ik.itype!="k"){
+ el.style.backgroundColor=bg;
+ el.style.borderRadius=Math.min(w,h)*0.25+"px";
+ }
+ }
+ else{
+ let svg;
+ switch(ik.itype){
+ case "k": svg=makeKnobFrames(101,fg,bg); break;
+ case "h": svg=makeHSliderFrames(101,fg,bg,w,h); break;
+ case "v": svg=makeVSliderFrames(101,fg,bg,w,h); break;
+ }
+ ik.sprites=100;
+ el.style.backgroundImage="url(data:image/svg+xml;base64,"+btoa(svg)+")";
+ el.style.backgroundSize=`100% ${(ik.sprites+1)*100}%`;
+ }
+ ik.valrange={min:+el.min, max:(el.max=="")?100:+el.max, step:(el.step=="")?1:+el.step};
+ el.redraw(true);
+ };
+ el.setValue=(v)=>{
+ v=(Math.round((v-ik.valrange.min)/ik.valrange.step))*ik.valrange.step+ik.valrange.min;
+ if(v<ik.valrange.min) v=ik.valrange.min;
+ if(v>ik.valrange.max) v=ik.valrange.max;
+ el.value=v;
+ if(el.value!=ik.oldvalue){
+ el.setAttribute("value",el.value);
+ el.redraw();
+ let event=document.createEvent("HTMLEvents");
+ event.initEvent("input",false,true);
+ el.dispatchEvent(event);
+ ik.oldvalue=el.value;
+ }
+ };
+ ik.pointerdown=(ev)=>{
+ el.focus();
+ const evorg = ev;
+ if(ev.touches)
+ ev = ev.touches[0];
+ let rc=el.getBoundingClientRect();
+ let cx=(rc.left+rc.right)*0.5,cy=(rc.top+rc.bottom)*0.5;
+ let dx=ev.clientX,dy=ev.clientY;
+ let da=Math.atan2(ev.clientX-cx,cy-ev.clientY);
+ if(ik.itype=="k"&&op.knobMode=="circularabs"){
+ dv=ik.valrange.min+(da/Math.PI*0.75+0.5)*(ik.valrange.max-ik.valrange.min);
+ el.setValue(dv);
+ }
+ if(ik.itype!="k"&&op.sliderMode=="abs"){
+ dv=(ik.valrange.min+ik.valrange.max)*0.5+((dx-cx)/ik.sensex-(dy-cy)/ik.sensey)*(ik.valrange.max-ik.valrange.min);
+ el.setValue(dv);
+ }
+ ik.dragfrom={x:ev.clientX,y:ev.clientY,a:Math.atan2(ev.clientX-cx,cy-ev.clientY),v:+el.value};
+ document.addEventListener("mousemove",ik.pointermove);
+ document.addEventListener("mouseup",ik.pointerup);
+ document.addEventListener("touchmove",ik.pointermove);
+ document.addEventListener("touchend",ik.pointerup);
+ document.addEventListener("touchcancel",ik.pointerup);
+ document.addEventListener("touchstart",ik.preventScroll);
+ evorg.preventDefault();
+ evorg.stopPropagation();
+ };
+ ik.pointermove=(ev)=>{
+ let dv;
+ let rc=el.getBoundingClientRect();
+ let cx=(rc.left+rc.right)*0.5,cy=(rc.top+rc.bottom)*0.5;
+ if(ev.touches)
+ ev = ev.touches[0];
+ let dx=ev.clientX-ik.dragfrom.x,dy=ev.clientY-ik.dragfrom.y;
+ let da=Math.atan2(ev.clientX-cx,cy-ev.clientY);
+ switch(ik.itype){
+ case "k":
+ switch(op.knobMode){
+ case "linear":
+ dv=(dx/ik.sensex-dy/ik.sensey)*(ik.valrange.max-ik.valrange.min);
+ if(ev.shiftKey)
+ dv*=0.2;
+ el.setValue(ik.dragfrom.v+dv);
+ break;
+ case "circularabs":
+ if(!ev.shiftKey){
+ dv=ik.valrange.min+(da/Math.PI*0.75+0.5)*(ik.valrange.max-ik.valrange.min);
+ el.setValue(dv);
+ break;
+ }
+ case "circularrel":
+ if(da>ik.dragfrom.a+Math.PI) da-=Math.PI*2;
+ if(da<ik.dragfrom.a-Math.PI) da+=Math.PI*2;
+ da-=ik.dragfrom.a;
+ dv=da/Math.PI/1.5*(ik.valrange.max-ik.valrange.min);
+ if(ev.shiftKey)
+ dv*=0.2;
+ el.setValue(ik.dragfrom.v+dv);
+ }
+ break;
+ case "h":
+ case "v":
+ dv=(dx/ik.sensex-dy/ik.sensey)*(ik.valrange.max-ik.valrange.min);
+ if(ev.shiftKey)
+ dv*=0.2;
+ el.setValue(ik.dragfrom.v+dv);
+ break;
+ }
+ };
+ ik.pointerup=()=>{
+ document.removeEventListener("mousemove",ik.pointermove);
+ document.removeEventListener("touchmove",ik.pointermove);
+ document.removeEventListener("mouseup",ik.pointerup);
+ document.removeEventListener("touchend",ik.pointerup);
+ document.removeEventListener("touchcancel",ik.pointerup);
+ document.removeEventListener("touchstart",ik.preventScroll);
+ let event=document.createEvent("HTMLEvents");
+ event.initEvent("change",false,true);
+ el.dispatchEvent(event);
+ };
+ ik.preventScroll=(ev)=>{
+ ev.preventDefault();
+ };
+ ik.keydown=()=>{
+ el.redraw();
+ };
+ ik.wheel=(ev)=>{
+ let delta=ev.deltaY>0?-ik.valrange.step:ik.valrange.step;
+ if(!ev.shiftKey)
+ delta*=5;
+ el.setValue(+el.value+delta);
+ ev.preventDefault();
+ ev.stopPropagation();
+ };
+ el.redraw=(f)=>{
+ if(f||ik.valueold!=el.value){
+ let v=(el.value-ik.valrange.min)/(ik.valrange.max-ik.valrange.min);
+ if(ik.sprites>=1)
+ el.style.backgroundPosition="0px "+(-((v*ik.sprites)|0)*ik.frameheight)+"px";
+ else{
+ switch(ik.itype){
+ case "k":
+ el.style.transform="rotate("+(270*v-135)+"deg)";
+ break;
+ case "h":
+ el.style.backgroundPosition=((w-h)*v)+"px 0px";
+ break;
+ case "v":
+ el.style.backgroundPosition="0px "+(h-w)*(1-v)+"px";
+ break;
+ }
+ }
+ ik.valueold=el.value;
+ }
+ };
+ el.refresh();
+ el.redraw(true);
+ el.addEventListener("keydown",ik.keydown);
+ el.addEventListener("mousedown",ik.pointerdown);
+ el.addEventListener("touchstart",ik.pointerdown);
+ el.addEventListener("wheel",ik.wheel);
+ }
+ let refreshque=()=>{
+ let elem=document.querySelectorAll("input.input-knob,input.input-slider");
+ for(let i=0;i<elem.length;++i)
+ procque.push([initKnobs,elem[i]]);
+ elem=document.querySelectorAll("input[type=checkbox].input-switch,input[type=radio].input-switch");
+ for(let i=0;i<elem.length;++i){
+ procque.push([initSwitches,elem[i]]);
+ }
+ }
+ let procque=[];
+ refreshque();
+ setInterval(()=>{
+ for(let i=0;procque.length>0&&i<8;++i){
+ let q=procque.shift();
+ q[0](q[1]);
+ }
+ if(procque.length<=0)
+ refreshque();
+ },50);
+});
diff --git a/site/code/jquery.js b/site/code/jquery.js
new file mode 100644
index 0000000..4024b66
--- /dev/null
+++ b/site/code/jquery.js
@@ -0,0 +1,4 @@
+/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */
+!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c;
+}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ca(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Fa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ba.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Oa(a,b,c||(g?"border":"content"),d,f)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),
+void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(hb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!ib.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,ib.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b)}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href;function wb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function xb(a,b,c,d){var e={},f=a===tb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function yb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function zb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Ab(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?yb(yb(a,n.ajaxSettings),b):yb(n.ajaxSettings,a)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=ob.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=vb.protocol+"//"+vb.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),xb(sb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!qb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(lb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=nb.test(f)?f.replace(nb,"$1_="+kb++):f+(lb.test(f)?"&":"?")+"_="+kb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+ub+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=xb(tb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=zb(m,x,d)),u=Ab(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;function Gb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Cb.test(a)?d(a,e):Gb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Gb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Gb(c,a[c],b,e);return d.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Db,"\r\n")}}):{name:b.name,value:c.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(b){var c,d;return l.cors||Ib&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Hb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Jb.pop()||n.expando+"_"+kb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Kb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Kb,"$1"+e):b.jsonp!==!1&&(b.url+=(lb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Jb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Lb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Lb)return Lb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Mb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Mb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Mb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Ob),b&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n});
diff --git a/site/code/nexusui.js b/site/code/nexusui.js
new file mode 100644
index 0000000..f06e818
--- /dev/null
+++ b/site/code/nexusui.js
@@ -0,0 +1,9393 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["Nexus"] = factory();
+ else
+ root["Nexus"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+/******/
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ var NexusUI = _interopRequire(__webpack_require__(1));
+
+ module.exports = NexusUI;
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { "default": obj }; };
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ exports.colors = colors;
+ exports.context = context;
+ exports.clock = clock;
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ "use strict";
+
+ var Interfaces = _interopRequire(__webpack_require__(2));
+
+ var math = _interopRequire(__webpack_require__(5));
+
+ var Rack = _interopRequire(__webpack_require__(38));
+
+ var Tune = _interopRequire(__webpack_require__(40));
+
+ var Transform = _interopRequireWildcard(__webpack_require__(39));
+
+ var Counter = __webpack_require__(28);
+ var Radio = __webpack_require__(41);
+ var Drunk = __webpack_require__(27);
+ var Sequence = __webpack_require__(26);
+ var Matrix = __webpack_require__(25);
+
+ var WAAClock = _interopRequire(__webpack_require__(42));
+
+ var Interval = _interopRequire(__webpack_require__(29));
+
+ /**
+ NexusUI => created as Nexus
+ */
+
+ var NexusUI = (function () {
+ function NexusUI(context) {
+ _classCallCheck(this, NexusUI);
+
+ for (var key in Interfaces) {
+ this[key] = Interfaces[key];
+ }
+
+ for (var key in math) {
+ this[key] = math[key];
+ }
+
+ var Core = {
+ Rack: Rack
+ };
+
+ var Models = {
+ Counter: Counter,
+ Radio: Radio,
+ Drunk: Drunk,
+ Sequence: Sequence,
+ Matrix: Matrix
+ };
+
+ for (var key in Models) {
+ this[key] = Models[key];
+ }
+
+ for (var key in Core) {
+ this[key] = Core[key];
+ }
+
+ this._context = null;
+
+ this.tune = null;
+ this.note = null;
+
+ this.clock = null;
+ this.Interval = null;
+
+ this.colors = {
+ accent: "#2bb",
+ fill: "#eee",
+ light: "#fff",
+ dark: "#333",
+ mediumLight: "#ccc",
+ mediumDark: "#666"
+ };
+
+ this.transform = Transform;
+ this.add = Transform.add;
+
+ this.Add = {};
+ for (var key in Interfaces) {
+ //this.Add[key] = Transform.add.bind(this, key);
+ }
+
+ /* create default component size as 1st style element in document */
+ var defaultStyleNode = document.createElement("style");
+ defaultStyleNode.type = "text/css";
+ defaultStyleNode.innerHTML = "[nexus-ui]{height:5000px;width:5000px}";
+ var h = document.head;
+ h.insertBefore(defaultStyleNode, h.firstElementChild);
+ }
+
+ _createClass(NexusUI, {
+ context: {
+ get: function () {
+ return this._context;
+ },
+ set: function (ctx) {
+ this.clock.stop();
+ this._context = ctx;
+ this.clock = new WAAClock(this.context);
+ this.clock.start();
+ }
+ }
+ });
+
+ return NexusUI;
+ })();
+
+ var Nexus = new NexusUI();
+
+ function colors() {
+ return Nexus.colors;
+ }
+
+ function context() {
+ return Nexus.context;
+ }
+
+ function clock() {
+ return Nexus.clock;
+ }
+
+ exports["default"] = Nexus;
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ module.exports = {
+ Position: __webpack_require__(3),
+ Slider: __webpack_require__(14),
+ Toggle: __webpack_require__(15),
+ /* Range: require('./rangeslider'),
+ Waveform: require('./waveform'), */
+ Button: __webpack_require__(16),
+ TextButton: __webpack_require__(18),
+ RadioButton: __webpack_require__(19),
+ Number: __webpack_require__(20),
+ Select: __webpack_require__(21),
+ Dial: __webpack_require__(22),
+ Piano: __webpack_require__(23),
+ Sequencer: __webpack_require__(24),
+ Pan2D: __webpack_require__(30),
+ Tilt: __webpack_require__(31),
+ Multislider: __webpack_require__(32),
+ Pan: __webpack_require__(33),
+ Envelope: __webpack_require__(34),
+ Spectrogram: __webpack_require__(35),
+ Meter: __webpack_require__(36),
+ Oscilloscope: __webpack_require__(37)
+ };
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports, __webpack_require__) {
+
+
+ "use strict";
+
+ var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { "default": obj }; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var Interface = __webpack_require__(6);
+ var Step = __webpack_require__(11);
+
+ var Interaction = _interopRequireWildcard(__webpack_require__(12));
+
+ /**
+ * Position
+ *
+ * @description Two-dimensional touch slider.
+ *
+ * @demo <span nexus-ui="position"></span>
+ *
+ * @example
+ * var position = new Nexus.Position('#target')
+ *
+ * @example
+ * var position = new Nexus.Position('#target',{
+ * 'size': [200,200],
+ * 'mode': 'absolute', // "absolute" or "relative"
+ * 'x': 0.5, // initial x value
+ * 'minX': 0,
+ * 'maxX': 1,
+ * 'stepX': 0,
+ * 'y': 0.5, // initial y value
+ * 'minY': 0,
+ * 'maxY': 1,
+ * 'stepY': 0
+ * })
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * The event data is an object with x and y properties containing the x and y values of the interface.
+ *
+ * @outputexample
+ * position.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ *
+ */
+
+ var Position = (function (_Interface) {
+ function Position() {
+ _classCallCheck(this, Position);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [200, 200],
+ mode: "absolute",
+ minX: 0,
+ maxX: 1,
+ stepX: 0,
+ x: 0.5,
+ minY: 0,
+ maxY: 1,
+ stepY: 0,
+ y: 0.5
+ };
+
+ _get(Object.getPrototypeOf(Position.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this._x = new Step(this.settings.minX, this.settings.maxX, this.settings.stepX, this.settings.x);
+ this._y = new Step(this.settings.minY, this.settings.maxY, this.settings.stepY, this.settings.y);
+
+ this.position = {
+ x: new Interaction.Handle(this.settings.mode, "horizontal", [0, this.width], [this.height, 0]),
+ y: new Interaction.Handle(this.settings.mode, "vertical", [0, this.width], [this.height, 0])
+ };
+ this.position.x.value = this._x.normalized;
+ this.position.y.value = this._y.normalized;
+
+ this.init();
+ this.render();
+ }
+
+ _inherits(Position, _Interface);
+
+ _createClass(Position, {
+ buildInterface: {
+ value: function buildInterface() {
+
+ this.knob = svg.create("circle");
+ this.element.appendChild(this.knob);
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ this.position.x.resize([0, this.width], [this.height, 0]);
+ this.position.y.resize([0, this.width], [this.height, 0]);
+
+ this._minDimension = Math.min(this.width, this.height);
+
+ this.knobRadius = {
+ off: ~ ~(this._minDimension / 100) * 5 + 5 };
+ this.knobRadius.on = this.knobRadius.off * 2;
+
+ this.knob.setAttribute("cx", this.width / 2);
+ this.knob.setAttribute("cy", this.height / 2);
+ this.knob.setAttribute("r", this.knobRadius.off);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.element.style.backgroundColor = this.colors.fill;
+ this.knob.setAttribute("fill", this.colors.accent);
+ }
+ },
+ render: {
+ value: function render() {
+ if (this.clicked) {
+ // this.knobRadius = 30;
+ this.knob.setAttribute("r", this.knobRadius.on);
+ } else {
+ // this.knobRadius = 15;
+ this.knob.setAttribute("r", this.knobRadius.off);
+ }
+
+ this.knobCoordinates = {
+ x: this._x.normalized * this.width,
+ y: this.height - this._y.normalized * this.height
+ };
+
+ this.knob.setAttribute("cx", this.knobCoordinates.x);
+ this.knob.setAttribute("cy", this.knobCoordinates.y);
+ }
+ },
+ click: {
+ value: function click() {
+ this.position.x.anchor = this.mouse;
+ this.position.y.anchor = this.mouse;
+ this.move();
+ }
+ },
+ move: {
+ value: function move() {
+ if (this.clicked) {
+ this.position.x.update(this.mouse);
+ this.position.y.update(this.mouse);
+ this._x.updateNormal(this.position.x.value);
+ this._y.updateNormal(this.position.y.value);
+ this.emit("change", {
+ x: this._x.value,
+ y: this._y.value
+ });
+ this.render();
+ }
+ }
+ },
+ release: {
+ value: function release() {
+ this.render();
+ }
+ },
+ x: {
+
+ /**
+ * The interface's x value. When set, it will automatically adjust to fit min/max/step settings of the interface.
+ * @type {object}
+ * @example position.x = 0.5;
+ */
+
+ get: function () {
+ return this._x.value;
+ },
+ set: function (value) {
+ this._x.update(value);
+ this.emit("change", {
+ x: this._x.value,
+ y: this._y.value
+ });
+ this.render();
+ }
+ },
+ y: {
+
+ /**
+ * The interface's y values. When set, it will automatically adjust to fit min/max/step settings of the interface.
+ * @type {object}
+ * @example position.x = 0.5;
+ */
+
+ get: function () {
+ return this._y.value;
+ },
+ set: function (value) {
+ this._y.update(value);
+ this.emit("change", {
+ x: this._x.value,
+ y: this._y.value
+ });
+ this.render();
+ }
+ },
+ normalized: {
+ get: function () {
+ return {
+ x: this._x.normalized,
+ y: this._y.normalized
+ };
+ }
+ },
+ minX: {
+
+ /**
+ * The lower limit of value on the x axis
+ * @type {object}
+ */
+
+ get: function () {
+ return this._x.min;
+ },
+ set: function (v) {
+ this._x.min = v;
+ this.render();
+ }
+ },
+ minY: {
+
+ /**
+ * The lower limit of value on the y axis
+ * @type {object}
+ */
+
+ get: function () {
+ return this._y.min;
+ },
+ set: function (v) {
+ this._y.min = v;
+ this.render();
+ }
+ },
+ maxX: {
+
+ /**
+ * The upper limit of value on the x axis
+ * @type {object}
+ */
+
+ get: function () {
+ return this._x.max;
+ },
+ set: function (v) {
+ this._x.max = v;
+ this.render();
+ }
+ },
+ maxY: {
+
+ /**
+ * The upper limit of value on the y axis
+ * @type {object}
+ */
+
+ get: function () {
+ return this._y.max;
+ },
+ set: function (v) {
+ this._y.max = v;
+ this.render();
+ }
+ },
+ stepX: {
+
+ /**
+ * The incremental step of values on the x axis
+ * @type {object}
+ */
+
+ get: function () {
+ return this._x.step;
+ },
+ set: function (v) {
+ this._x.step = v;
+ this.render();
+ }
+ },
+ stepY: {
+
+ /**
+ * The incremental step of values on the y axis
+ * @type {object}
+ */
+
+ get: function () {
+ return this._y.step;
+ },
+ set: function (v) {
+ this._y.step = v;
+ this.render();
+ }
+ },
+ mode: {
+
+ /**
+ Absolute mode (position's value jumps to mouse click position) or relative mode (mouse drag changes value relative to its current position). Default: "absolute".
+ @type {string}
+ @example position.mode = "relative";
+ */
+
+ get: function () {
+ return this.position.x.mode;
+ },
+ set: function (v) {
+ this.position.x.mode = v;
+ this.position.y.mode = v;
+ }
+ }
+ });
+
+ return Position;
+ })(Interface);
+
+ module.exports = Position;
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var math = __webpack_require__(5);
+
+ module.exports = {
+
+ create: function (type) {
+ return document.createElementNS("http://www.w3.org/2000/svg", type);
+ },
+
+ arc: function (x, y, radius, startAngle, endAngle) {
+
+ var start = math.toCartesian(radius, endAngle);
+ var end = math.toCartesian(radius, startAngle);
+
+ var largeArcFlag = endAngle - startAngle <= 180 ? "0" : "1";
+
+ var d = ["M", start.x + x, start.y + y, "A", radius, radius, 0, largeArcFlag, 0, end.x + x, end.y + y].join(" ");
+
+ return d;
+ },
+
+ radialGradient: function (defs, numberOfStops) {
+
+ var id = "gradient" + math.ri(100000000000);
+ var stops = [];
+
+ var gradient = document.createElementNS("http://www.w3.org/2000/svg", "radialGradient");
+ gradient.setAttribute("id", id);
+ gradient.setAttribute("cx", "50%");
+ gradient.setAttribute("cy", "50%");
+ gradient.setAttribute("r", "50%");
+
+ defs.appendChild(gradient);
+
+ for (var i = 0; i < numberOfStops; i++) {
+ var _stop = document.createElementNS("http://www.w3.org/2000/svg", "stop");
+ _stop.setAttribute("id", "stop" + i);
+ //stop.setAttribute('offset', '70%');
+ //stop.setAttribute('stop-color', 'White');
+ gradient.appendChild(_stop);
+ stops.push(_stop);
+ }
+
+ return {
+ id: id,
+ stops: stops,
+ element: gradient
+ };
+ }
+
+ };
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports) {
+
+ "use strict";
+
+ /**
+ * Limit a number to within a minimum and maximum
+ * @param {number} value Input value
+ * @param {number} min Lower limit
+ * @param {number} max Upper limit
+ * @return {number} The input value constrained within the lower and upper limits
+ * @example
+ * Nexus.clip(11,0,10) // returns 10
+ * Nexus.clip(-1,0,10) // returns 0
+ * Nexus.clip(5,0,10) // returns 5
+ */
+
+ exports.clip = function (value, min, max) {
+ return Math.min(Math.max(value, min), max);
+ };
+
+ exports.normalize = function (value, min, max) {
+ return (value - min) / (max - min);
+ };
+
+ /**
+ * Scale a value from one range to another range.
+ * @param {number} inNum Input value
+ * @param {number} inMin Input range minimum
+ * @param {number} inMax Input range maximum
+ * @param {number} outMin Output range minimum
+ * @param {number} outMax Output range maximum
+ * @return {number} The input value scaled to its new range
+ * @example
+ * Nexus.scale(0.5,0,1,0,10) // returns 5
+ * Nexus.scale(0.9,0,1,1,0) // returns 0.1
+ */
+ exports.scale = function (inNum, inMin, inMax, outMin, outMax) {
+ if (inMin === inMax) {
+ return outMin;
+ }
+ return (inNum - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;
+ };
+
+ exports.toPolar = function (x, y) {
+ var r = Math.sqrt(x * x + y * y);
+
+ var theta = Math.atan2(y, x);
+ if (theta < 0) {
+ theta = theta + 2 * Math.PI;
+ }
+ return { radius: r, angle: theta };
+ };
+
+ exports.toCartesian = function (radius, angle) {
+ var cos = Math.cos(angle);
+ var sin = Math.sin(angle);
+ return { x: radius * cos, y: radius * sin * -1 };
+ };
+ /*
+ exports.polarToCartesian(centerX, centerY, radius, angleInDegrees) {
+ var angleInRadians = (angleInDegrees-90) * Math.PI / 180.0;
+
+ return {
+ x: centerX + (radius * Math.cos(angleInRadians)),
+ y: centerY + (radius * Math.sin(angleInRadians))
+ };
+ } */
+
+ exports.prune = function (data, scale) {
+ return parseFloat(data.toFixed(scale));
+ };
+
+ exports.invert = function (inNum) {
+ return exports.scale(inNum, 1, 0, 0, 1);
+ };
+
+ /**
+ * Convert a MIDi note number to a frequency value in equal temperament.
+ * @param {number} midi MIDI note value
+ * @return {number} Frequence value
+ * @example
+ * Nexus.mtof(60) // returns the frequency number of Middle C
+ */
+ exports.mtof = function (midi) {
+ return Math.pow(2, (midi - 69) / 12) * 440;
+ };
+
+ /**
+ * Interpolate between two numbers
+ * @param {number} loc Interpolation index (0-1)
+ * @param {number} min Lower value
+ * @param {number} max Upper value
+ * @return {number} Interpolated value
+ * @example
+ * Nexus.interp(0.5,2,4) // returns 3
+ * Nexus.interp(0.1,0,10) // returns 1
+ */
+ exports.interp = function (loc, min, max) {
+ return loc * (max - min) + min;
+ };
+
+ /**
+ * Return a random choice from a list of arguments
+ * @return {various} One random argument
+ * @example
+ * Nexus.pick(1,2,3,4) // returns 1, 2, 3, or 4
+ * Nexus.pick(function1,function2) // returns either function1 or function2
+ */
+ exports.pick = function () {
+ return arguments[~ ~(Math.random() * arguments.length)];
+ };
+
+ /**
+ * Returns an octave multiplier for frequency values
+ * @param {number} num Relative octave number (e.g. -1 for one octave down, 1 for one octave up)
+ * @return {number} Octave multiplier
+ * @example
+ * Nexus.octave(-1) // returns 0.5
+ * Nexus.octave(0) // returns 1
+ * Nexus.octave(1) // returns 2
+ * Nexus.octave(2) // returns 4
+ */
+ exports.octave = function (num) {
+ return Math.pow(2, num);
+ };
+
+ /**
+ * Random integer generator. If no second argument is given, will return random integer from 0 to bound1.
+ * @param {number} bound1 Minimum random value
+ * @param {number} bound2 Maximum random value
+ * @return {number} Random integer between lower and upper boundary
+ * @example
+ * Nexus.ri(10) // returns random int from 0 to 10
+ * Nexus.ri(20,2000) // returns random int from 20 to 2000
+ */
+ exports.ri = function (bound1, bound2) {
+ if (!bound2) {
+ bound2 = bound1;
+ bound1 = 0;
+ }
+ var low = Math.min(bound1, bound2);
+ var high = Math.max(bound1, bound2);
+ return Math.floor(Math.random() * (high - low) + low);
+ };
+
+ /**
+ * Random float number generator. If no second argument is given, will return random float from 0 to bound1.
+ * @param {number} bound1 Minimum random value
+ * @param {number} bound2 Maximum random value
+ * @return {number} Random float between lower and upper boundary
+ * @example
+ * Nexus.rf(1) // returns random float from 0 to 1
+ * Nexus.rf(1,2) // returns random float from 1 to 2
+ */
+ exports.rf = function (bound1, bound2) {
+ if (!bound2) {
+ bound2 = bound1;
+ bound1 = 0;
+ }
+ var low = Math.min(bound1, bound2);
+ var high = Math.max(bound1, bound2);
+ return Math.random() * (high - low) + low;
+ };
+
+ exports.cycle = function (input, min, max) {
+ input++;
+ if (input >= max) {
+ input = min;
+ }
+ return input;
+ };
+
+ /**
+ * Average an array of numbers
+ * @param {Array} data Array of numbers to average
+ * @return {number} Average of the input data
+ * @example
+ * Nexus.average([0,2,4,6,8,10]) // returns 5
+ */
+ exports.average = function (data) {
+ var total = 0;
+ for (var i = 0; i < data.length; i++) {
+ total += data[i];
+ }
+ return total / data.length;
+ };
+
+ /**
+ * Get the distance from one (x,y) point to another (x,y) point
+ * @param {number} x1 x of first point
+ * @param {number} y1 y of first point
+ * @param {number} x2 x of second point
+ * @param {number} y2 y of second poiny
+ * @return {number} Distance
+ * @example
+ * Nexus.distance(0,0,3,4) // returns 5
+ */
+ exports.distance = function (x1, y1, x2, y2) {
+ var a = x1 - x2;
+ var b = y1 - y2;
+ return Math.sqrt(a * a + b * b);
+ };
+
+ exports.gainToDB = function (gain) {
+ return 20 * Math.log10(gain);
+ };
+
+ /**
+ * Flip a coin, returning either 0 or 1 according to a probability
+ * @param {number} [odds=0.5] Likelihood of returning 1
+ * @return {number} 1 or 0
+ * @example
+ * Nexus.coin(0.1) // returns 1 (10% of the time) or 0 (90% of the time)
+ */
+ exports.coin = function () {
+ var odds = arguments[0] === undefined ? 0.5 : arguments[0];
+
+ if (exports.rf(0, 1) < odds) {
+ return 1;
+ } else {
+ return 0;
+ }
+ };
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var dom = __webpack_require__(7);
+ var util = __webpack_require__(8);
+ var touch = __webpack_require__(9);
+ var EventEmitter = __webpack_require__(10);
+
+ var colors = __webpack_require__(1).colors;
+
+ /**
+ Interface
+ */
+
+ var Interface = (function (_EventEmitter) {
+ function Interface(args, options, defaults) {
+ _classCallCheck(this, Interface);
+
+ _get(Object.getPrototypeOf(Interface.prototype), "constructor", this).call(this);
+ this.type = this.constructor.name;
+ this.settings = this.parseSettings(args, options, defaults);
+ this.mouse = {};
+ this.wait = false;
+ this.colors = {};
+ var defaultColors = colors(); // jshint ignore:line
+ this.colors.accent = defaultColors.accent;
+ this.colors.fill = defaultColors.fill;
+ this.colors.light = defaultColors.light;
+ this.colors.dark = defaultColors.dark;
+ this.colors.mediumLight = defaultColors.mediumLight;
+ this.colors.mediumDark = defaultColors.mediumDark;
+ }
+
+ _inherits(Interface, _EventEmitter);
+
+ _createClass(Interface, {
+ parseSettings: {
+ value: function parseSettings(args, options, defaults) {
+
+ options.unshift("target");
+ defaults.defaultSize = defaults.size.splice(0, 2);
+ defaults.size = false;
+
+ var settings = {
+ target: document.body,
+ colors: {}, // should inherit from a colors module,
+ snapWithParent: true,
+ event: function event() {},
+ component: false
+ };
+
+ for (var key in defaults) {
+ settings[key] = defaults[key];
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ // grabs the next argument
+ var setting = args[i];
+ // if it's an object, it must be the settings object
+ if (util.isObject(setting)) {
+ for (var key in setting) {
+ settings[key] = setting[key];
+ }
+ // if it's a function, it must be the event setting
+ } else if (typeof setting === "function") {
+ settings.event = setting;
+ // otherwise, consider it one of the widget's custom options
+ } else if (options.length >= 1) {
+ // grab the first option -- i.e. 'target'
+ var key = options.splice(0, 1)[0];
+ settings[key] = setting;
+ }
+ }
+
+ /* handle common settings */
+
+ // target
+ this.parent = dom.parseElement(settings.target);
+
+ // nexus-ui attribute
+ if (this.parent && this.parent instanceof HTMLElement && !settings.component) {
+ if (!this.parent.hasAttribute("nexus-ui")) {
+ this.parent.setAttribute("nexus-ui", "");
+ }
+ }
+
+ // size
+
+ if (settings.size && Array.isArray(settings.size) && settings.snapWithParent) {
+ this.width = settings.size[0];
+ this.height = settings.size[1];
+ this.parent.style.width = this.width + "px";
+ this.parent.style.height = this.height + "px";
+ } else if (settings.snapWithParent && !settings.component) {
+
+ this.width = parseFloat(window.getComputedStyle(this.parent, null).getPropertyValue("width").replace("px", ""));
+ this.height = parseFloat(window.getComputedStyle(this.parent, null).getPropertyValue("height").replace("px", ""));
+
+ if (this.width == 5000) {
+ this.width = settings.defaultSize[0];
+ this.parent.style.width = this.parent.width = this.width + "px";
+ }
+ if (this.height == 5000) {
+ this.height = settings.defaultSize[1];
+ this.parent.style.height = this.parent.height = this.height + "px";
+ }
+ } else {
+ settings.size = settings.defaultSize;
+ this.width = settings.size[0];
+ this.height = settings.size[1];
+ }
+
+ // event
+ if (settings.event) {
+ this.event = this.on("change", settings.event);
+ } else {
+ this.event = false;
+ }
+
+ return settings;
+ }
+ },
+ init: {
+ value: function init() {
+ this.buildFrame();
+ this.buildInterface();
+ this.sizeInterface();
+ this.attachListeners();
+ this.colorInterface();
+ this.finalTouches();
+ }
+ },
+ buildFrame: {
+ value: function buildFrame() {
+ this.element = svg.create("svg");
+ this.element.setAttribute("width", this.width);
+ this.element.setAttribute("height", this.height);
+ this.parent.appendChild(this.element);
+ }
+ },
+ buildInterface: {
+ value: function buildInterface() {}
+ },
+ sizeInterface: {
+ value: function sizeInterface() {}
+ },
+ colorInterface: {
+ value: function colorInterface() {}
+ },
+ attachListeners: {
+ value: function attachListeners() {
+ var _this = this;
+
+ this.interactionTarget = this.interactionTarget || this.element;
+
+ // Setup interaction
+ if (touch.exists) {
+ this.interactionTarget.addEventListener("touchstart", function (evt) {
+ return _this.preTouch(evt);
+ });
+ this.interactionTarget.addEventListener("touchmove", function (evt) {
+ return _this.preTouchMove(evt);
+ });
+ this.interactionTarget.addEventListener("touchend", function (evt) {
+ return _this.preTouchRelease(evt);
+ });
+ }
+ this.boundPreMove = function (evt) {
+ return _this.preMove(evt);
+ };
+ this.boundPreRelease = function (evt) {
+ return _this.preRelease(evt);
+ };
+ this.interactionTarget.addEventListener("mousedown", function (evt) {
+ return _this.preClick(evt);
+ });
+ }
+ },
+ finalTouches: {
+ value: function finalTouches() {
+ this.element.style.cursor = "pointer";
+ }
+ },
+ preClick: {
+ value: function preClick(e) {
+ // 10000 getComputedStyle calls takes 100 ms.
+ // .:. one takes about .01ms
+ if (this.element instanceof HTMLElement) {
+ this.width = window.getComputedStyle(this.element, null).getPropertyValue("width").replace("px", "");
+ }
+ // 10000 getComputedStyle calls takes 40 ms.
+ // .:. one takes about .004ms
+ this.offset = dom.findPosition(this.element);
+ this.mouse = dom.locateMouse(e, this.offset);
+ this.clicked = true;
+ this.click();
+ this.moveEvent = document.addEventListener("mousemove", this.boundPreMove);
+ this.releaseEvent = document.addEventListener("mouseup", this.boundPreRelease);
+ this.emit("click");
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ },
+ preMove: {
+ value: function preMove(e) {
+ var _this = this;
+
+ if (!this.wait) {
+ this.mouse = dom.locateMouse(e, this.offset);
+ this.move();
+ this.wait = true;
+ setTimeout(function () {
+ _this.wait = false;
+ }, 25);
+ }
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ },
+ preRelease: {
+ value: function preRelease(e) {
+ this.mouse = dom.locateMouse(e, this.offset);
+ this.clicked = false;
+ this.release();
+ this.emit("release");
+ document.removeEventListener("mousemove", this.boundPreMove);
+ document.removeEventListener("mouseup", this.boundPreRelease);
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ },
+ click: {
+ value: function click() {}
+ },
+ move: {
+ value: function move() {}
+ },
+ release: {
+ value: function release() {}
+ },
+ preTouch: {
+
+ /* touch */
+
+ value: function preTouch(e) {
+ if (this.element instanceof HTMLElement) {
+ this.width = window.getComputedStyle(this.element, null).getPropertyValue("width").replace("px", "");
+ }
+ this.offset = dom.findPosition(this.element);
+ this.mouse = dom.locateTouch(e, this.offset);
+ this.clicked = true;
+ this.touch(e);
+ this.emit("click");
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ },
+ preTouchMove: {
+ value: function preTouchMove(e) {
+ if (this.clicked) {
+ this.mouse = dom.locateTouch(e, this.offset);
+ this.touchMove();
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ }
+ },
+ preTouchRelease: {
+ value: function preTouchRelease(e) {
+ this.mouse = dom.locateTouch(e, this.offset);
+ this.clicked = false;
+ this.touchRelease();
+ this.emit("release");
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ },
+ touch: {
+ value: function touch() {
+ this.click();
+ }
+ },
+ touchMove: {
+ value: function touchMove() {
+ this.move();
+ }
+ },
+ touchRelease: {
+ value: function touchRelease() {
+ this.release();
+ }
+ },
+ resize: {
+
+ /**
+ * Resize the interface
+ * @param width {number} New width in pixels
+ * @param height {number} New height in pixels
+ *
+ * @example
+ * button.resize(100,100);
+ */
+
+ value: function resize(width, height) {
+ this.width = width;
+ this.height = height;
+ this.parent.style.width = this.width + "px";
+ this.parent.style.height = this.height + "px";
+ this.element.setAttribute("width", this.width);
+ this.element.setAttribute("height", this.height);
+ this.sizeInterface();
+ }
+ },
+ empty: {
+ value: function empty() {
+ while (this.element.lastChild) {
+ this.element.removeChild(this.element.lastChild);
+ }
+ }
+ },
+ destroy: {
+
+ /**
+ * Remove the interface from the page and cancel its event listener(s).
+ *
+ * @example
+ * button.destroy();
+ */
+
+ value: function destroy() {
+ this.empty();
+ this.parent.removeChild(this.element);
+ this.removeAllListeners();
+ if (this.instrument) {
+ delete this.instrument[this.id];
+ }
+ this.customDestroy();
+ }
+ },
+ customDestroy: {
+ value: function customDestroy() {}
+ },
+ colorize: {
+ value: function colorize(type, color) {
+ this.colors[type] = color;
+ this.colorInterface();
+ }
+ }
+ });
+
+ return Interface;
+ })(EventEmitter);
+
+ module.exports = Interface;
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports) {
+
+ "use strict";
+
+ exports.findPosition = function (el) {
+ var viewportOffset = el.getBoundingClientRect();
+ var top = viewportOffset.top + window.scrollY;
+ var left = viewportOffset.left + window.scrollX;
+ return { top: top, left: left };
+ };
+
+ exports.parseElement = function (parent) {
+ if (typeof parent === "string") {
+ parent = document.getElementById(parent.replace("#", ""));
+ }
+
+ if (parent instanceof HTMLElement || parent instanceof SVGElement) {
+ return parent;
+ } else {
+ return "No valid parent argument";
+ }
+ };
+
+ exports.locateMouse = function (e, offset) {
+ return {
+ x: e.pageX - offset.left,
+ y: e.pageY - offset.top
+ };
+ };
+
+ exports.locateTouch = function (e, offset) {
+ return {
+ x: e.targetTouches.length ? e.targetTouches[0].pageX - offset.left : false,
+ y: e.targetTouches.length ? e.targetTouches[0].pageY - offset.top : false
+ };
+ };
+
+ exports.SmartCanvas = function (parent) {
+ var _this = this;
+
+ this.element = document.createElement("canvas");
+ this.context = this.element.getContext("2d");
+ parent.appendChild(this.element);
+
+ this.resize = function (w, h) {
+ _this.element.width = w * 2;
+ _this.element.height = h * 2;
+ _this.element.style.width = w + "px";
+ _this.element.style.height = h + "px";
+ };
+ };
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports) {
+
+ "use strict";
+
+ exports.isObject = function (obj) {
+ if (typeof obj === "object" && !Array.isArray(obj) && obj !== null && obj instanceof SVGElement === false && obj instanceof HTMLElement === false) {
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+ // Restricts input for the given textbox to the given inputFilter function
+ // cf https://stackoverflow.com/a/469362
+ exports.setInputFilter = function (textbox, inputFilter) {
+ ["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function (event) {
+ textbox.addEventListener(event, function () {
+ if (inputFilter(this.value)) {
+ this.oldValue = this.value;
+ this.oldSelectionStart = this.selectionStart;
+ this.oldSelectionEnd = this.selectionEnd;
+ } else if (this.hasOwnProperty("oldValue")) {
+ this.value = this.oldValue;
+ this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
+ } else {
+ this.value = "";
+ }
+ });
+ });
+ };
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports) {
+
+ "use strict";
+
+ exports.exists = "ontouchstart" in document.documentElement;
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports) {
+
+ // Copyright Joyent, Inc. and other Node contributors.
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining a
+ // copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
+ // persons to whom the Software is furnished to do so, subject to the
+ // following conditions:
+ //
+ // The above copyright notice and this permission notice shall be included
+ // in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ function EventEmitter() {
+ this._events = this._events || {};
+ this._maxListeners = this._maxListeners || undefined;
+ }
+ module.exports = EventEmitter;
+
+ // Backwards-compat with node 0.10.x
+ EventEmitter.EventEmitter = EventEmitter;
+
+ EventEmitter.prototype._events = undefined;
+ EventEmitter.prototype._maxListeners = undefined;
+
+ // By default EventEmitters will print a warning if more than 10 listeners are
+ // added to it. This is a useful default which helps finding memory leaks.
+ EventEmitter.defaultMaxListeners = 10;
+
+ // Obviously not all Emitters should be limited to 10. This function allows
+ // that to be increased. Set to zero for unlimited.
+ EventEmitter.prototype.setMaxListeners = function(n) {
+ if (!isNumber(n) || n < 0 || isNaN(n))
+ throw TypeError('n must be a positive number');
+ this._maxListeners = n;
+ return this;
+ };
+
+ EventEmitter.prototype.emit = function(type) {
+ var er, handler, len, args, i, listeners;
+
+ if (!this._events)
+ this._events = {};
+
+ // If there is no 'error' event listener then throw.
+ if (type === 'error') {
+ if (!this._events.error ||
+ (isObject(this._events.error) && !this._events.error.length)) {
+ er = arguments[1];
+ if (er instanceof Error) {
+ throw er; // Unhandled 'error' event
+ } else {
+ // At least give some kind of context to the user
+ var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
+ err.context = er;
+ throw err;
+ }
+ }
+ }
+
+ handler = this._events[type];
+
+ if (isUndefined(handler))
+ return false;
+
+ if (isFunction(handler)) {
+ switch (arguments.length) {
+ // fast cases
+ case 1:
+ handler.call(this);
+ break;
+ case 2:
+ handler.call(this, arguments[1]);
+ break;
+ case 3:
+ handler.call(this, arguments[1], arguments[2]);
+ break;
+ // slower
+ default:
+ args = Array.prototype.slice.call(arguments, 1);
+ handler.apply(this, args);
+ }
+ } else if (isObject(handler)) {
+ args = Array.prototype.slice.call(arguments, 1);
+ listeners = handler.slice();
+ len = listeners.length;
+ for (i = 0; i < len; i++)
+ listeners[i].apply(this, args);
+ }
+
+ return true;
+ };
+
+ EventEmitter.prototype.addListener = function(type, listener) {
+ var m;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events)
+ this._events = {};
+
+ // To avoid recursion in the case that type === "newListener"! Before
+ // adding it to the listeners, first emit "newListener".
+ if (this._events.newListener)
+ this.emit('newListener', type,
+ isFunction(listener.listener) ?
+ listener.listener : listener);
+
+ if (!this._events[type])
+ // Optimize the case of one listener. Don't need the extra array object.
+ this._events[type] = listener;
+ else if (isObject(this._events[type]))
+ // If we've already got an array, just append.
+ this._events[type].push(listener);
+ else
+ // Adding the second element, need to change to array.
+ this._events[type] = [this._events[type], listener];
+
+ // Check for listener leak
+ if (isObject(this._events[type]) && !this._events[type].warned) {
+ if (!isUndefined(this._maxListeners)) {
+ m = this._maxListeners;
+ } else {
+ m = EventEmitter.defaultMaxListeners;
+ }
+
+ if (m && m > 0 && this._events[type].length > m) {
+ this._events[type].warned = true;
+ console.error('(node) warning: possible EventEmitter memory ' +
+ 'leak detected. %d listeners added. ' +
+ 'Use emitter.setMaxListeners() to increase limit.',
+ this._events[type].length);
+ if (typeof console.trace === 'function') {
+ // not supported in IE 10
+ console.trace();
+ }
+ }
+ }
+
+ return this;
+ };
+
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+
+ EventEmitter.prototype.once = function(type, listener) {
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ var fired = false;
+
+ function g() {
+ this.removeListener(type, g);
+
+ if (!fired) {
+ fired = true;
+ listener.apply(this, arguments);
+ }
+ }
+
+ g.listener = listener;
+ this.on(type, g);
+
+ return this;
+ };
+
+ // emits a 'removeListener' event iff the listener was removed
+ EventEmitter.prototype.removeListener = function(type, listener) {
+ var list, position, length, i;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events || !this._events[type])
+ return this;
+
+ list = this._events[type];
+ length = list.length;
+ position = -1;
+
+ if (list === listener ||
+ (isFunction(list.listener) && list.listener === listener)) {
+ delete this._events[type];
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+
+ } else if (isObject(list)) {
+ for (i = length; i-- > 0;) {
+ if (list[i] === listener ||
+ (list[i].listener && list[i].listener === listener)) {
+ position = i;
+ break;
+ }
+ }
+
+ if (position < 0)
+ return this;
+
+ if (list.length === 1) {
+ list.length = 0;
+ delete this._events[type];
+ } else {
+ list.splice(position, 1);
+ }
+
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+ }
+
+ return this;
+ };
+
+ EventEmitter.prototype.removeAllListeners = function(type) {
+ var key, listeners;
+
+ if (!this._events)
+ return this;
+
+ // not listening for removeListener, no need to emit
+ if (!this._events.removeListener) {
+ if (arguments.length === 0)
+ this._events = {};
+ else if (this._events[type])
+ delete this._events[type];
+ return this;
+ }
+
+ // emit removeListener for all listeners on all events
+ if (arguments.length === 0) {
+ for (key in this._events) {
+ if (key === 'removeListener') continue;
+ this.removeAllListeners(key);
+ }
+ this.removeAllListeners('removeListener');
+ this._events = {};
+ return this;
+ }
+
+ listeners = this._events[type];
+
+ if (isFunction(listeners)) {
+ this.removeListener(type, listeners);
+ } else if (listeners) {
+ // LIFO order
+ while (listeners.length)
+ this.removeListener(type, listeners[listeners.length - 1]);
+ }
+ delete this._events[type];
+
+ return this;
+ };
+
+ EventEmitter.prototype.listeners = function(type) {
+ var ret;
+ if (!this._events || !this._events[type])
+ ret = [];
+ else if (isFunction(this._events[type]))
+ ret = [this._events[type]];
+ else
+ ret = this._events[type].slice();
+ return ret;
+ };
+
+ EventEmitter.prototype.listenerCount = function(type) {
+ if (this._events) {
+ var evlistener = this._events[type];
+
+ if (isFunction(evlistener))
+ return 1;
+ else if (evlistener)
+ return evlistener.length;
+ }
+ return 0;
+ };
+
+ EventEmitter.listenerCount = function(emitter, type) {
+ return emitter.listenerCount(type);
+ };
+
+ function isFunction(arg) {
+ return typeof arg === 'function';
+ }
+
+ function isNumber(arg) {
+ return typeof arg === 'number';
+ }
+
+ function isObject(arg) {
+ return typeof arg === 'object' && arg !== null;
+ }
+
+ function isUndefined(arg) {
+ return arg === void 0;
+ }
+
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var math = __webpack_require__(5);
+
+ /**
+ Creates a steppable value with minimum, maximum, and step size. This is used in many interfaces to constrict their values to certain ranges.
+ @param {number} [min=0] minimum
+ @param {number} [max=1] maximum
+ @param {number} [step=0]
+ @param {number} [value=0] initial value
+ @returns {Object} Step
+ */
+
+ var Step = (function () {
+ function Step() {
+ var min = arguments[0] === undefined ? 0 : arguments[0];
+ var max = arguments[1] === undefined ? 1 : arguments[1];
+ var step = arguments[2] === undefined ? 0 : arguments[2];
+ var value = arguments[3] === undefined ? 0 : arguments[3];
+
+ _classCallCheck(this, Step);
+
+ //Object.assign(this,{min,max,step});
+ //Cannot use Object.assign because not supported in Safari.
+ //I would expect for Babel to take care of this but it is not.
+ this.min = min;
+ this.max = max;
+ this.step = step;
+ this.value = value;
+ this.changed = false;
+ this.oldValue = false;
+ this.update(this.value);
+ }
+
+ _createClass(Step, {
+ update: {
+
+ /**
+ Update with a new value. The value will be auto-adjusted to fit the min/max/step.
+ @param {number} value
+ */
+
+ value: function update(value) {
+ if (this.step) {
+ // this.value = math.clip(Math.round(value / (this.step)) * this.step, this.min,this.max);
+ this.value = math.clip(Math.round((value - this.min) / this.step) * this.step + this.min, this.min, this.max);
+ } else {
+ this.value = math.clip(value, this.min, this.max);
+ }
+ if (this.oldValue !== this.value) {
+ this.oldValue = this.value;
+ this.changed = true;
+ } else {
+ this.changed = false;
+ }
+ return this.value;
+ }
+ },
+ updateNormal: {
+
+ /**
+ Update with a normalized value 0-1.
+ @param {number} value
+ */
+
+ value: function updateNormal(value) {
+ this.value = math.scale(value, 0, 1, this.min, this.max);
+ return this.update(this.value);
+ }
+ },
+ normalized: {
+
+ /**
+ Get a normalized version of this.value . Not settable.
+ */
+
+ get: function () {
+ return math.normalize(this.value, this.min, this.max);
+ }
+ }
+ });
+
+ return Step;
+ })();
+
+ module.exports = Step;
+
+/***/ }),
+/* 12 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ "use strict";
+
+ var math = _interopRequire(__webpack_require__(5));
+
+ var ToggleModel = _interopRequire(__webpack_require__(13));
+
+ /*
+ how to use :
+
+ dial.interaction = new Handle('radial','relative',this.width,this.height);
+ // dial.interaction.mode = 'relative'
+ // dial.interaction.direction = 'radial'
+
+ on click:
+ dial.interaction.anchor = this.mouse;
+
+ on move:
+ dial.interaction.update(this.mouse);
+
+ console.log( dial.interaction.value ); should be a normalized value.
+
+ */
+
+ /*
+ absolute/relative are property: mode
+ radial/vertical/horizontal/2d are property: direction
+
+ plan :
+
+ if relative --
+ NO on click, get value offset between current value and click value.
+ NO on move, use click value - offset
+ INSTEAD
+ use delta -- bc vertical motion on dial is impossible otherwise
+ also allow to set sensitivity
+
+ */
+
+ var Handle = exports.Handle = (function () {
+ function Handle() {
+ var mode = arguments[0] === undefined ? "absolute" : arguments[0];
+ var direction = arguments[1] === undefined ? "vertical" : arguments[1];
+ var xbound = arguments[2] === undefined ? [0, 100] : arguments[2];
+ var ybound = arguments[3] === undefined ? [0, 100] : arguments[3];
+
+ _classCallCheck(this, Handle);
+
+ this.mode = mode;
+ this.direction = direction;
+ this.previous = 0;
+ this.value = 0;
+ this.sensitivity = 1;
+ this.resize(xbound, ybound);
+ }
+
+ _createClass(Handle, {
+ resize: {
+ value: function resize(xbound, ybound) {
+ this.boundary = {
+ min: {
+ x: xbound[0],
+ y: ybound[0]
+ },
+ max: {
+ x: xbound[1],
+ y: ybound[1]
+ },
+ center: {
+ x: (xbound[1] - xbound[0]) / 2 + xbound[0],
+ y: (ybound[1] - ybound[0]) / 2 + ybound[0]
+ }
+ };
+ }
+ },
+ anchor: {
+ set: function (mouse) {
+ this._anchor = this.convertPositionToValue(mouse);
+ },
+ get: function () {
+ return this._anchor;
+ }
+ },
+ update: {
+ value: function update(mouse) {
+ if (this.mode === "relative") {
+ var increment = this.convertPositionToValue(mouse) - this.anchor;
+ if (Math.abs(increment) > 0.5) {
+ increment = 0;
+ }
+ this.anchor = mouse;
+ this.value = this.value + increment * this.sensitivity;
+ } else {
+ this.value = this.convertPositionToValue(mouse);
+ }
+ this.value = math.clip(this.value, 0, 1);
+ }
+ },
+ convertPositionToValue: {
+ value: function convertPositionToValue(current) {
+ switch (this.direction) {
+ case "radial":
+ var position = math.toPolar(current.x - this.boundary.center.x, current.y - this.boundary.center.y);
+ position = position.angle / (Math.PI * 2);
+ position = (position - 0.25 + 1) % 1;
+ return position;
+ case "vertical":
+ return math.scale(current.y, this.boundary.min.y, this.boundary.max.y, 0, 1);
+ case "horizontal":
+ return math.scale(current.x, this.boundary.min.x, this.boundary.max.x, 0, 1);
+ }
+ }
+ }
+ });
+
+ return Handle;
+ })();
+
+ var Button = exports.Button = (function () {
+ function Button() {
+ var mode = arguments[0] === undefined ? "button" : arguments[0];
+
+ _classCallCheck(this, Button);
+
+ this.mode = mode;
+ this.state = new ToggleModel();
+ this.paintbrush = false;
+ }
+
+ _createClass(Button, {
+ click: {
+ value: function click() {
+ switch (this.mode) {
+ case "impulse":
+ this.state.on();
+ if (this.timeout) {
+ clearTimeout(this.timeout);
+ }
+ this.timeout = setTimeout(this.state.off.bind(this), 30);
+ this.emit("change", this.state);
+ break;
+ case "button":
+ this.turnOn();
+ this.emit("change", this.state);
+ break;
+ case "aftertouch":
+ this.position = {
+ x: math.clip(this.mouse.x / this.width, 0, 1),
+ y: math.clip(1 - this.mouse.y / this.height, 0, 1)
+ };
+ this.turnOn();
+ this.emit("change", {
+ state: this.state,
+ x: this.position.x,
+ y: this.position.y });
+ break;
+ case "toggle":
+ this.flip();
+ this.emit("change", this.state);
+ break;
+ }
+ }
+ },
+ move: {
+ value: function move() {
+ if (this.mode === "aftertouch") {
+ this.position = {
+ x: math.clip(this.mouse.x / this.width, 0, 1),
+ y: math.clip(1 - this.mouse.y / this.height, 0, 1)
+ };
+ this.emit("change", {
+ state: this.state,
+ x: this.position.x,
+ y: this.position.y });
+ this.render();
+ }
+ }
+ },
+ release: {
+ value: function release() {
+ switch (this.mode) {
+ case "button":
+ this.turnOff();
+ this.emit("change", this.state);
+ break;
+ case "aftertouch":
+ this.turnOff();
+ this.position = {
+ x: this.mouse.x / this.width,
+ y: 1 - this.mouse.y / this.height
+ };
+ this.emit("change", {
+ state: this.state,
+ x: this.position.x,
+ y: this.position.y });
+ break;
+ }
+ }
+ }
+ });
+
+ return Button;
+ })();
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var Toggle = (function () {
+ function Toggle(state) {
+ _classCallCheck(this, Toggle);
+
+ this.state = state || false;
+ }
+
+ _createClass(Toggle, {
+ flip: {
+ value: function flip(state) {
+ if (state || state === false) {
+ this.state = state;
+ } else {
+ this.state = !this.state;
+ }
+ }
+ },
+ on: {
+ value: function on() {
+ this.state = true;
+ }
+ },
+ off: {
+ value: function off() {
+ this.state = false;
+ }
+ }
+ });
+
+ return Toggle;
+ })();
+
+ module.exports = Toggle;
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { "default": obj }; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var Interface = __webpack_require__(6);
+ var Step = __webpack_require__(11);
+
+ var Interaction = _interopRequireWildcard(__webpack_require__(12));
+
+ /**
+ * Slider
+ *
+ * @description Horizontal or vertical slider with settable interaction modes.
+ *
+ * @demo <span nexus-ui="slider" step=0.2></span>
+ *
+ * @example
+ * var slider = new Nexus.Slider('#target')
+ *
+ * @example
+ * var slider = new Nexus.Slider('#target',{
+ * 'size': [120,20],
+ * 'mode': 'relative', // 'relative' or 'absolute'
+ * 'min': 0,
+ * 'max': 1,
+ * 'step': 0,
+ * 'value': 0
+ * })
+ *
+ * @output
+ * change
+ * Fires when the interface's value changes. <br>
+ * Event data: <i>number</i> The number value of the interface.
+ *
+ * @outputexample
+ * slider.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ *
+ */
+
+ var Slider = (function (_Interface) {
+ function Slider() {
+ _classCallCheck(this, Slider);
+
+ var options = ["min", "max", "value"];
+
+ var defaults = {
+ size: [120, 20],
+ mode: "relative", // 'relative' or 'absolute'
+ min: 0,
+ max: 1,
+ step: 0,
+ value: 0
+ };
+
+ _get(Object.getPrototypeOf(Slider.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.orientation = "vertical"; // This will change automatically to 'horizontal'if the interface is wider than it is tall.
+
+ this._value = new Step(this.settings.min, this.settings.max, this.settings.step, this.settings.value);
+
+ this.position = new Interaction.Handle(this.settings.mode, this.orientation, [0, this.width], [this.height, 0]);
+ this.position.value = this._value.normalized;
+
+ this.init();
+
+ this.position.direction = this.orientation;
+
+ this.emit("change", this.value);
+ }
+
+ _inherits(Slider, _Interface);
+
+ _createClass(Slider, {
+ buildInterface: {
+ value: function buildInterface() {
+
+ this.bar = svg.create("rect");
+ this.fillbar = svg.create("rect");
+ this.knob = svg.create("circle");
+
+ this.element.appendChild(this.bar);
+ this.element.appendChild(this.fillbar);
+ this.element.appendChild(this.knob);
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ if (this.width < this.height) {
+ this.orientation = "vertical";
+ this.position.direction = "vertical";
+ } else {
+ this.orientation = "horizontal";
+ this.position.direction = "horizontal";
+ }
+
+ if (this.position) {
+ this.position.resize([0, this.width], [this.height, 0]);
+ }
+
+ var x = undefined,
+ y = undefined,
+ w = undefined,
+ h = undefined,
+ barOffset = undefined,
+ cornerRadius = undefined;
+ this.knobData = {
+ level: 0,
+ r: 0
+ };
+
+ if (this.orientation === "vertical") {
+ this.thickness = this.width / 2;
+ x = this.width / 2;
+ y = 0;
+ w = this.thickness;
+ h = this.height;
+ this.knobData.r = this.thickness * 0.8;
+ this.knobData.level = h - this.knobData.r - this.normalized * (h - this.knobData.r * 2);
+ barOffset = "translate(" + this.thickness * -1 / 2 + ",0)";
+ cornerRadius = w / 2;
+ } else {
+ this.thickness = this.height / 2;
+ x = 0;
+ y = this.height / 2;
+ w = this.width;
+ h = this.thickness;
+ this.knobData.r = this.thickness * 0.8;
+ this.knobData.level = this.normalized * (w - this.knobData.r * 2) + this.knobData.r;
+ barOffset = "translate(0," + this.thickness * -1 / 2 + ")";
+ cornerRadius = h / 2;
+ }
+
+ this.bar.setAttribute("x", x);
+ this.bar.setAttribute("y", y);
+ this.bar.setAttribute("transform", barOffset);
+ this.bar.setAttribute("rx", cornerRadius); // corner radius
+ this.bar.setAttribute("ry", cornerRadius);
+ this.bar.setAttribute("width", w);
+ this.bar.setAttribute("height", h);
+
+ if (this.orientation === "vertical") {
+ this.fillbar.setAttribute("x", x);
+ this.fillbar.setAttribute("y", this.knobData.level);
+ this.fillbar.setAttribute("width", w);
+ this.fillbar.setAttribute("height", h - this.knobData.level);
+ } else {
+ this.fillbar.setAttribute("x", 0);
+ this.fillbar.setAttribute("y", y);
+ this.fillbar.setAttribute("width", this.knobData.level);
+ this.fillbar.setAttribute("height", h);
+ }
+ this.fillbar.setAttribute("transform", barOffset);
+ this.fillbar.setAttribute("rx", cornerRadius);
+ this.fillbar.setAttribute("ry", cornerRadius);
+
+ if (this.orientation === "vertical") {
+ this.knob.setAttribute("cx", x);
+ this.knob.setAttribute("cy", this.knobData.level);
+ } else {
+ this.knob.setAttribute("cx", this.knobData.level);
+ this.knob.setAttribute("cy", y);
+ }
+ this.knob.setAttribute("r", this.knobData.r);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.bar.setAttribute("fill", this.colors.fill);
+ this.fillbar.setAttribute("fill", this.colors.accent);
+ this.knob.setAttribute("fill", this.colors.accent);
+ }
+ },
+ render: {
+ value: function render() {
+ if (!this.clicked) {
+ this.knobData.r = this.thickness * 0.75;
+ }
+ this.knob.setAttribute("r", this.knobData.r);
+
+ if (this.orientation === "vertical") {
+ this.knobData.level = this.knobData.r + this._value.normalized * (this.height - this.knobData.r * 2);
+ this.knob.setAttribute("cy", this.height - this.knobData.level);
+ this.fillbar.setAttribute("y", this.height - this.knobData.level);
+ this.fillbar.setAttribute("height", this.knobData.level);
+ } else {
+ this.knobData.level = this._value.normalized * (this.width - this.knobData.r * 2) + this.knobData.r;
+ this.knob.setAttribute("cx", this.knobData.level);
+ this.fillbar.setAttribute("x", 0);
+ this.fillbar.setAttribute("width", this.knobData.level);
+ }
+ }
+ },
+ click: {
+ value: function click() {
+ this.knobData.r = this.thickness * 0.9;
+ this.position.anchor = this.mouse;
+ this.move();
+ }
+ },
+ move: {
+ value: function move() {
+ if (this.clicked) {
+ this.position.update(this.mouse);
+ this._value.updateNormal(this.position.value);
+ this.emit("change", this._value.value);
+ this.render();
+ }
+ }
+ },
+ release: {
+ value: function release() {
+ this.render();
+ }
+ },
+ normalized: {
+ get: function () {
+ return this._value.normalized;
+ }
+ },
+ value: {
+
+ /**
+ The slider's current value. If set manually, will update the interface and trigger the output event.
+ @type {number}
+ @example slider.value = 10;
+ */
+
+ get: function () {
+ return this._value.value;
+ },
+ set: function (v) {
+ this._value.update(v);
+ this.position.value = this._value.normalized;
+ this.emit("change", this._value.value);
+ this.render();
+ }
+ },
+ min: {
+
+ /**
+ Lower limit of the sliders's output range
+ @type {number}
+ @example slider.min = 1000;
+ */
+
+ get: function () {
+ return this._value.min;
+ },
+ set: function (v) {
+ this._value.min = v;
+ }
+ },
+ max: {
+
+ /**
+ Upper limit of the slider's output range
+ @type {number}
+ @example slider.max = 1000;
+ */
+
+ get: function () {
+ return this._value.max;
+ },
+ set: function (v) {
+ this._value.max = v;
+ }
+ },
+ step: {
+
+ /**
+ The increment that the slider's value changes by.
+ @type {number}
+ @example slider.step = 5;
+ */
+
+ get: function () {
+ return this._value.step;
+ },
+ set: function (v) {
+ this._value.step = v;
+ }
+ },
+ mode: {
+
+ /**
+ Absolute mode (slider's value jumps to mouse click position) or relative mode (mouse drag changes value relative to its current position). Default: "relative".
+ @type {string}
+ @example slider.mode = "relative";
+ */
+
+ get: function () {
+ return this.position.mode;
+ },
+ set: function (v) {
+ this.position.mode = v;
+ }
+ }
+ });
+
+ return Slider;
+ })(Interface);
+
+ module.exports = Slider;
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var ToggleModel = __webpack_require__(13);
+ var Interface = __webpack_require__(6);
+
+ /**
+ * Toggle
+ *
+ * @description Binary switch
+ *
+ * @demo <span nexus-ui="toggle"></span>
+ *
+ * @example
+ * var toggle = new Nexus.Toggle('#target')
+ *
+ * @example
+ * var toggle = new Nexus.Toggle('#target',{
+ * 'size': [40,20],
+ * 'state': false
+ * })
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * Parameter: The boolean state of the interface.
+ *
+ * @outputexample
+ * toggle.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ *
+ */
+
+ var Toggle = (function (_Interface) {
+ function Toggle() {
+ _classCallCheck(this, Toggle);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [40, 20],
+ target: false,
+ state: false
+ };
+
+ _get(Object.getPrototypeOf(Toggle.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this._state = new ToggleModel(this.settings.state);
+
+ this.init();
+ }
+
+ _inherits(Toggle, _Interface);
+
+ _createClass(Toggle, {
+ buildInterface: {
+ value: function buildInterface() {
+
+ this.bar = svg.create("rect");
+ this.knob = svg.create("circle");
+ this.element.appendChild(this.bar);
+ this.element.appendChild(this.knob);
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ if (this.height < this.width / 2) {
+ this.knobSize = this.height / 2;
+ } else {
+ this.knobSize = this.width / 4;
+ }
+
+ this.bar.setAttribute("x", this.width / 2 - this.knobSize * 1.5);
+ this.bar.setAttribute("y", this.height / 2 - this.knobSize / 2);
+ this.bar.setAttribute("rx", this.knobSize / 2);
+ this.bar.setAttribute("ry", this.knobSize / 2);
+ this.bar.setAttribute("width", this.knobSize * 3);
+ this.bar.setAttribute("height", this.knobSize);
+
+ this.knob.setAttribute("cx", this.width / 2 - this.knobSize);
+ this.knob.setAttribute("cy", this.height / 2);
+ this.knob.setAttribute("r", this.knobSize);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.knob.setAttribute("fill", this.colors.accent);
+ this.render();
+ }
+ },
+ render: {
+ value: function render() {
+ if (!this.state) {
+ this.knob.setAttribute("cx", this.width / 2 - this.knobSize);
+ this.bar.setAttribute("fill", this.colors.fill);
+ } else {
+ this.knob.setAttribute("cx", this.width / 2 + this.knobSize);
+ this.bar.setAttribute("fill", this.colors.accent);
+ }
+ }
+ },
+ click: {
+ value: function click() {
+ this.flip();
+ this.render();
+ this.emit("change", this.state);
+ }
+ },
+ state: {
+
+ /**
+ Whether the toggle is currently on or off. Setting this property will update the toggle interface and trigger the output event.
+ @type {boolean}
+ @example toggle.state = false;
+ */
+
+ get: function () {
+ return this._state.state;
+ },
+ set: function (value) {
+ this._state.flip(value);
+ this.emit("change", this.state);
+ this.render();
+ }
+ },
+ flip: {
+
+ /**
+ * Switch the toggle state to its opposite state
+ * @example
+ * toggle.flip();
+ */
+
+ value: function flip() {
+ this._state.flip();
+ this.render();
+ }
+ }
+ });
+
+ return Toggle;
+ })(Interface);
+
+ module.exports = Toggle;
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var ButtonTemplate = __webpack_require__(17);
+
+ /**
+ * Button
+ *
+ * @description Circular button with optional aftertouch.
+ *
+ * @demo <span nexus-ui="button"></span>
+ *
+ * @example
+ * var button = new Nexus.Button('#target')
+ *
+ * @example
+ * var button = new Nexus.Button('#target',{
+ * 'size': [80,80],
+ * 'mode': 'aftertouch',
+ * 'state': false
+ * })
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * In <b>button mode</b>, <b>toggle mode</b>, and <b>impulse mode</b>, the output data is a boolean describing the state of the button.<br>
+ * In <b>aftertouch mode</b>, the output data is an object containing x (0-1) and y (0-1) positions of aftertouch.
+ *
+ * @outputexample
+ * button.on('change',function(v) {
+ * // v is the value of the button
+ * console.log(v);
+ * })
+ *
+ */
+
+ var Button = (function (_ButtonTemplate) {
+ function Button() {
+ _classCallCheck(this, Button);
+
+ var options = ["mode"];
+
+ var defaults = {
+ size: [80, 80],
+ mode: "aftertouch", // button, aftertouch, impulse, toggle
+ state: false
+ };
+
+ _get(Object.getPrototypeOf(Button.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ /**
+ * Interaction mode: supports "button", "aftertouch", "impulse", or "toggle"
+ * @type {string}
+ * @example button.mode = 'toggle';
+ */
+ this.mode = this.settings.mode;
+
+ this.init();
+ this.render();
+ }
+
+ _inherits(Button, _ButtonTemplate);
+
+ _createClass(Button, {
+ buildInterface: {
+ value: function buildInterface() {
+ this.pad = svg.create("circle");
+ this.element.appendChild(this.pad);
+
+ this.interactionTarget = this.pad;
+
+ // only used if in 'aftertouch' mode
+ this.defs = svg.create("defs");
+ this.element.appendChild(this.defs);
+
+ this.gradient = svg.radialGradient(this.defs, 2);
+
+ this.gradient.stops[0].setAttribute("offset", "30%");
+
+ this.gradient.stops[1].setAttribute("offset", "100%");
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ this.pad.setAttribute("cx", this.width / 2);
+ this.pad.setAttribute("cy", this.height / 2);
+ this.pad.setAttribute("r", Math.min(this.width, this.height) / 2 - this.width / 40);
+ this.pad.setAttribute("stroke-width", this.width / 20);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+
+ this.gradient.stops[0].setAttribute("stop-color", this.colors.accent);
+ this.gradient.stops[1].setAttribute("stop-color", this.colors.fill);
+ this.render();
+ }
+ },
+ render: {
+
+ /*
+ * Update the visual interface using its current state
+ *
+ * @example
+ * button.render();
+ */
+
+ value: function render() {
+ if (!this.state) {
+ this.pad.setAttribute("fill", this.colors.fill);
+ this.pad.setAttribute("stroke", this.colors.mediumLight);
+ } else {
+ if (this.mode === "aftertouch") {
+ this.pad.setAttribute("stroke", "url(#" + this.gradient.id + ")");
+ this.gradient.element.setAttribute("cx", this.position.x * 100 + "%");
+ this.gradient.element.setAttribute("cy", (1 - this.position.y) * 100 + "%");
+ } else {
+ this.pad.setAttribute("stroke", this.colors.accent);
+ }
+ this.pad.setAttribute("fill", this.colors.accent);
+ }
+ }
+ }
+ });
+
+ return Button;
+ })(ButtonTemplate);
+
+ module.exports = Button;
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var math = __webpack_require__(5);
+ var ToggleModel = __webpack_require__(13);
+ var Interface = __webpack_require__(6);
+
+ /**
+ Button Template
+ */
+
+ var ButtonTemplate = (function (_Interface) {
+ function ButtonTemplate(args, options, defaults) {
+ _classCallCheck(this, ButtonTemplate);
+
+ _get(Object.getPrototypeOf(ButtonTemplate.prototype), "constructor", this).call(this, args, options, defaults);
+
+ this.mode = this.settings.mode || "button";
+
+ this.position = {
+ x: 0,
+ y: 0
+ };
+
+ this._state = new ToggleModel(this.settings.state);
+ }
+
+ _inherits(ButtonTemplate, _Interface);
+
+ _createClass(ButtonTemplate, {
+ buildInterface: {
+ value: function buildInterface() {
+ this.pad = svg.create("circle");
+ this.pad.setAttribute("fill", "#d18");
+ this.pad.setAttribute("stroke", "#d18");
+ this.pad.setAttribute("stroke-width", 4);
+
+ this.element.appendChild(this.pad);
+
+ this.interactionTarget = this.pad;
+
+ this.sizeInterface();
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+ this.pad.setAttribute("cx", this.width / 2);
+ this.pad.setAttribute("cy", this.height / 2);
+ this.pad.setAttribute("r", Math.min(this.width, this.height) / 2 - 2);
+ }
+ },
+ render: {
+ value: function render() {
+ if (!this.state) {
+ this.pad.setAttribute("fill", this.colors.fill);
+ this.pad.setAttribute("stroke", this.colors.mediumLight);
+ } else {
+ this.pad.setAttribute("fill", this.colors.accent);
+ this.pad.setAttribute("stroke", this.colors.accent);
+ }
+ }
+ },
+ down: {
+ value: function down(paintbrush) {
+ switch (this.mode) {
+ case "impulse":
+ this.turnOn();
+ if (this.timeout) {
+ clearTimeout(this.timeout);
+ }
+ this.timeout = setTimeout(this.turnOff.bind(this), 30);
+ // this.emit('change',this.state);
+ break;
+ case "button":
+ this.turnOn();
+ // this.emit('change',this.state);
+ break;
+ case "aftertouch":
+ this.position = {
+ x: math.clip(this.mouse.x / this.width, 0, 1),
+ y: math.clip(1 - this.mouse.y / this.height, 0, 1)
+ };
+ this.turnOn();
+ // this.emit('change',{
+ // state: this.state,
+ // x: this.position.x,
+ // y: this.position.y,
+ // });
+ break;
+ case "toggle":
+ this.flip(paintbrush);
+ // this.emit('change',this.state);
+ break;
+ }
+ }
+ },
+ bend: {
+ value: function bend(mouse) {
+ if (this.mode === "aftertouch") {
+ this.mouse = mouse || this.mouse;
+ this.position = {
+ x: math.clip(this.mouse.x / this.width, 0, 1),
+ y: math.clip(1 - this.mouse.y / this.height, 0, 1)
+ };
+ this.emit("change", {
+ state: this.state,
+ x: this.position.x,
+ y: this.position.y });
+ this.render();
+ }
+ }
+ },
+ up: {
+ value: function up() {
+ switch (this.mode) {
+ case "button":
+ this.turnOff();
+ // this.emit('change',this.state);
+ break;
+ case "aftertouch":
+ this.turnOff();
+ this.position = {
+ x: math.clip(this.mouse.x / this.width, 0, 1),
+ y: math.clip(1 - this.mouse.y / this.height, 0, 1)
+ };
+ // this.emit('change',{
+ // state: this.state,
+ // x: this.position.x,
+ // y: this.position.y,
+ // });
+ break;
+ }
+ }
+ },
+ click: {
+
+ /* overwritable interaction handlers */
+
+ value: function click() {
+ this.down();
+ }
+ },
+ move: {
+ value: function move() {
+ this.bend();
+ }
+ },
+ release: {
+ value: function release() {
+ this.up();
+ }
+ },
+ state: {
+
+ /**
+ Whether the button is on (pressed) or off (not pressed)
+ @type {boolean}
+ @example button.state = true;
+ */
+
+ get: function () {
+ return this._state.state;
+ },
+ set: function (value) {
+ this._state.flip(value);
+ if (this.mode === "aftertouch") {
+ this.emit("change", {
+ state: this.state,
+ x: this.position.x,
+ y: this.position.y });
+ } else {
+ this.emit("change", this.state);
+ }
+ this.render();
+ }
+ },
+ flip: {
+
+ /**
+ Change the button to its alternate state (off=>on, on=>off), or flip it to a specified state.
+ @param value {boolean} (Optional) State to flip to.
+ @example button.flip();
+ */
+
+ value: function flip(value) {
+ this._state.flip(value);
+ if (this.mode === "aftertouch") {
+ this.emit("change", {
+ state: this.state,
+ x: this.position.x,
+ y: this.position.y });
+ } else {
+ this.emit("change", this.state);
+ }
+ this.render();
+ }
+ },
+ turnOn: {
+
+ /**
+ Turn the button's state to true.
+ @example button.turnOn();
+ */
+
+ value: function turnOn(emitting) {
+ this._state.on();
+ if (emitting !== false) {
+ if (this.mode === "aftertouch") {
+ this.emit("change", {
+ state: this.state,
+ x: this.position.x,
+ y: this.position.y });
+ } else {
+ this.emit("change", this.state);
+ }
+ }
+ this.render();
+ }
+ },
+ turnOff: {
+
+ /**
+ Turn the button's state to false.
+ @example button.turnOff();
+ */
+
+ value: function turnOff(emitting) {
+ this._state.off();
+ if (emitting !== false) {
+ if (this.mode === "aftertouch") {
+ this.emit("change", {
+ state: this.state,
+ x: this.position.x,
+ y: this.position.y });
+ } else {
+ this.emit("change", this.state);
+ }
+ }
+ this.render();
+ }
+ }
+ });
+
+ return ButtonTemplate;
+ })(Interface);
+
+ module.exports = ButtonTemplate;
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var ButtonTemplate = __webpack_require__(17);
+
+ /**
+ * TextButton
+ *
+ * @description Text button
+ *
+ * @demo <span nexus-ui="textButton"></span>
+ *
+ * @example
+ * var textbutton = new Nexus.TextButton('#target')
+ *
+ * @example
+ * var textbutton = new Nexus.TextButton('#target',{
+ * 'size': [150,50],
+ * 'state': false,
+ * 'text': 'Play',
+ * 'alternateText': 'Stop'
+ * })
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * The event data is a <i>string</i> of the text on the button at the moment it was clicked.
+ *
+ * @outputexample
+ * textbutton.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ */
+
+ var TextButton = (function (_ButtonTemplate) {
+ function TextButton() {
+ _classCallCheck(this, TextButton);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [150, 50],
+ state: false,
+ text: "Play"
+ };
+
+ _get(Object.getPrototypeOf(TextButton.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this._text = this.settings.text;
+
+ if (this.settings.alternate) {
+ //TODO: Remove this conditional in a breaking-changes release
+ this.settings.alternateText = this.settings.alternate;
+ console.warn("'alternate' initiator is deprecated. Use 'alternateText' instead.");
+ }
+ this._alternateText = this.settings.alternateText;
+ this.mode = this.settings.alternateText ? "toggle" : "button";
+ this.init();
+ this.render();
+
+ this.state = this.settings.state;
+ }
+
+ _inherits(TextButton, _ButtonTemplate);
+
+ _createClass(TextButton, {
+ buildFrame: {
+ value: function buildFrame() {
+
+ this.element = document.createElement("div");
+ this.parent.appendChild(this.element);
+
+ this.textElement = document.createElement("div");
+ this.textElement.innerHTML = this._text;
+ this.element.appendChild(this.textElement);
+ }
+ },
+ buildInterface: {
+ value: function buildInterface() {}
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.element.style.color = this.colors.dark;
+ this.render();
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+ var textsize = this.height / 3;
+ var textsize2 = this.width / (this._text.length + 2);
+ textsize = Math.min(textsize, textsize2);
+ if (this.alternateText) {
+ var textsize3 = this.width / (this.alternateText.length + 2);
+ textsize = Math.min(textsize, textsize3);
+ }
+ var styles = "width: " + this.width + "px;";
+ styles += "height: " + this.height + "px;";
+ styles += "padding: " + (this.height - textsize) / 2 + "px 0px;";
+ styles += "box-sizing: border-box;";
+ styles += "text-align: center;";
+ styles += "font-family: inherit;";
+ styles += "font-weight: 700;";
+ styles += "opacity: 1;";
+ styles += "font-size:" + textsize + "px;";
+ this.textElement.style.cssText = styles;
+ this.render();
+ }
+ },
+ render: {
+ value: function render() {
+ if (!this.state) {
+ this.element.style.backgroundColor = this.colors.fill;
+ this.textElement.style.color = this.colors.dark;
+ this.textElement.innerHTML = this._text;
+ } else {
+ this.element.style.backgroundColor = this.colors.accent;
+ this.textElement.style.color = this.colors.fill;
+ if (this.alternateText) {
+ this.textElement.innerHTML = this._alternateText;
+ } else {
+ this.textElement.innerHTML = this._text;
+ }
+ }
+ }
+ },
+ alternateText: {
+
+ /**
+ The text to display when the button is in its "on" state. If set, this puts the button in "toggle" mode.
+ @type {String}
+ */
+
+ get: function () {
+ return this._alternateText;
+ },
+ set: function (text) {
+ if (text) {
+ this.mode = "toggle";
+ } else {
+ this.mode = "button";
+ }
+ this._alternateText = text;
+ this.render();
+ }
+ },
+ text: {
+
+ /**
+ The text to display. (If .alternateText exists, then this .text will only be displayed when the button is in its "off" state.)
+ @type {String}
+ */
+
+ get: function () {
+ return this._text;
+ },
+ set: function (text) {
+ this._text = text;
+ this.sizeInterface();
+ this.render();
+ }
+ }
+ });
+
+ return TextButton;
+ })(ButtonTemplate);
+
+ module.exports = TextButton;
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ //let svg = require('../util/svg');
+ var Interface = __webpack_require__(6);
+ var Button = __webpack_require__(16);
+
+ /**
+ * RadioButton
+ *
+ * @description An array of buttons. By default, selecting one button will deselect all other buttons, but this can be customized using the API below.
+ *
+ * @demo <div nexus-ui="RadioButton"></div>
+ *
+ * @example
+ * var radiobutton = new Nexus.RadioButton('#target')
+ *
+ * @example
+ * var radiobutton = new Nexus.RadioButton('#target',{
+ * 'size': [120,25],
+ * 'numberOfButtons': 4,
+ * 'active': -1
+ * })
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * The event data an <i>integer</i>, the index of the button that is currently on. If no button is selected, the value will be -1.
+ *
+ * @outputexample
+ * radiobutton.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ */
+
+ var RadioButton = (function (_Interface) {
+ function RadioButton() {
+ _classCallCheck(this, RadioButton);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [120, 25],
+ numberOfButtons: 4,
+ active: -1
+ };
+
+ _get(Object.getPrototypeOf(RadioButton.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.buttons = [];
+ this._numberOfButtons = this.settings.numberOfButtons;
+ this.active = this.settings.active;
+
+ this.init();
+ this.render();
+ }
+
+ _inherits(RadioButton, _Interface);
+
+ _createClass(RadioButton, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.element = document.createElement("div");
+ this.parent.appendChild(this.element);
+ }
+ },
+ buildInterface: {
+ value: function buildInterface() {
+ for (var i = 0; i < this._numberOfButtons; i++) {
+ var container = document.createElement("span");
+
+ var button = new Button(container, {
+ mode: "toggle",
+ component: true
+ }, this.update.bind(this, i));
+
+ this.buttons.push(button);
+ this.element.appendChild(container);
+ }
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+ var orientation = undefined;
+ if (this.width > this.height) {
+ orientation = "horizontal";
+ } else {
+ orientation = "vertical";
+ }
+
+ var buttonWidth = this.width / (orientation === "vertical" ? 1 : this._numberOfButtons);
+ var buttonHeight = this.height / (orientation === "vertical" ? this._numberOfButtons : 1);
+
+ for (var i = 0; i < this._numberOfButtons; i++) {
+ this.buttons[i].resize(buttonWidth, buttonHeight);
+ }
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ for (var i = 0; i < this._numberOfButtons; i++) {
+ this.buttons[i].colors = this.colors;
+ this.buttons[i].render();
+ }
+ }
+ },
+ update: {
+ value: function update(index) {
+ if (this.buttons[index].state) {
+ this.select(index);
+ } else {
+ this.deselect();
+ }
+ // this.render();
+ }
+ },
+ render: {
+ value: function render() {
+ for (var i = 0; i < this.buttons.length; i++) {
+ if (i === this.active) {
+ this.buttons[i].turnOn(false);
+ } else {
+ this.buttons[i].turnOff(false);
+ }
+ }
+ }
+ },
+ select: {
+
+ /**
+ Select one button and deselect all other buttons.
+ @param index {number} The index of the button to select
+ */
+
+ value: function select(index) {
+ if (index >= 0 && index < this.buttons.length) {
+ this.active = index;
+ this.emit("change", this.active);
+ this.render();
+ }
+ }
+ },
+ deselect: {
+
+ /**
+ Deselect all buttons.
+ */
+
+ value: function deselect() {
+ this.active = -1;
+ this.emit("change", this.active);
+ this.render();
+ }
+ },
+ numberOfButtons: {
+ get: function () {
+ return this._numberOfButtons;
+ },
+
+ /**
+ * Update how many buttons are in the interface
+ * @param {number} buttons How many buttons are in the interface
+ */
+ set: function (buttons) {
+ this._numberOfButtons = buttons;
+ for (var i = 0; i < this.buttons.length; i++) {
+ this.buttons[i].destroy();
+ }
+ this.buttons = [];
+ // for (let i=0;i<this.buttons.length;i++) {
+ // this.buttons[i].destroy();
+ // }
+ this.empty();
+ this.buildInterface();
+ }
+ }
+ });
+
+ return RadioButton;
+ })(Interface);
+
+ module.exports = RadioButton;
+
+/***/ }),
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var Interface = __webpack_require__(6);
+ var Step = __webpack_require__(11);
+ var math = __webpack_require__(5);
+ var util = __webpack_require__(8);
+
+ /**
+ * Number
+ *
+ * @description Number interface which is controllable by dragging or typing.
+ *
+ * @demo <span nexus-ui="number"></span>
+ *
+ * @example
+ * var number = new Nexus.Number('#target')
+ *
+ * @example
+ * var number = new Nexus.Number('#target',{
+ * 'size': [60,30],
+ * 'value': 0,
+ * 'min': 0,
+ * 'max': 20000,
+ * 'step': 1
+ * })
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * The event data is the number value of the interface.
+ *
+ * @outputexample
+ * number.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ *
+ */
+
+ var Number = (function (_Interface) {
+ function Number() {
+ _classCallCheck(this, Number);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [60, 30],
+ value: 0,
+ min: 0,
+ max: 20000,
+ step: 1
+ };
+
+ _get(Object.getPrototypeOf(Number.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this._value = new Step(this.settings.min, this.settings.max, this.settings.step, this.settings.value);
+
+ /*
+ Default: 2. How many decimal places to clip the number's visual rendering to. This does not affect number's actual value output -- for that, set the step property to .01, .1, or 1.
+ @type {number}
+ @example number.decimalPlaces = 2;
+ */
+ this.decimalPlaces = 2;
+ this.actual = 0;
+
+ this.max = this._value.max;
+
+ this.min = this._value.min;
+
+ this.step = this._value.step;
+
+ this.init();
+ this.render();
+ }
+
+ _inherits(Number, _Interface);
+
+ _createClass(Number, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.element = document.createElement("input");
+ this.element.type = "text";
+
+ this.element.addEventListener("blur", (function () {
+ this.element.style.backgroundColor = this.colors.fill;
+ this.element.style.color = this.colors.dark;
+ if (this.element.value !== this.value) {
+ this.value = parseFloat(this.element.value);
+ this.render();
+ }
+ }).bind(this));
+
+ util.setInputFilter(this.element, function (value) {
+ return /^-?\d*\.?\d*$/.test(value);
+ });
+
+ this.element.addEventListener("keydown", (function (e) {
+ if (e.which === 13) {
+ this.element.blur();
+ this.value = this.element.value;
+ this.emit("change", this.value);
+ this.render();
+ }
+ }).bind(this), true);
+
+ this.parent.appendChild(this.element);
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ this._minDimension = Math.min(this.width, this.height);
+
+ var styles = "width: " + this.width + "px;";
+ styles += "height: " + this.height + "px;";
+ styles += "background-color: #e7e7e7;";
+ styles += "color: #333;";
+ styles += "font-family: arial;";
+ styles += "font-weight: 500;";
+ styles += "font-size:" + this._minDimension / 2 + "px;";
+ // styles += 'highlight: #d18;';
+ styles += "border: none;";
+ styles += "outline: none;";
+ styles += "padding: " + this._minDimension / 4 + "px " + this._minDimension / 4 + "px;";
+ styles += "box-sizing: border-box;";
+ styles += "userSelect: text;";
+ styles += "mozUserSelect: text;";
+ styles += "webkitUserSelect: text;";
+ this.element.style.cssText += styles;
+
+ // to add eventually
+ // var css = '#'+this.elementID+'::selection{ background-color: transparent }';
+
+ this.element.value = this.value;
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.element.style.backgroundColor = this.colors.fill;
+ this.element.style.color = this.colors.dark;
+ }
+ },
+ render: {
+ value: function render() {
+
+ this.element.value = math.prune(this.value, this.decimalPlaces);
+ }
+ },
+ click: {
+ value: function click() {
+ this.hasMoved = false;
+ this.element.readOnly = true;
+ this.actual = this.value;
+ this.initial = { y: this.mouse.y };
+ this.changeFactor = math.invert(this.mouse.x / this.width);
+ }
+ },
+ move: {
+ value: function move() {
+ this.hasMoved = true;
+ if (this.clicked) {
+
+ var newvalue = this.actual - (this.mouse.y - this.initial.y) * (math.clip(this.max - this.min, 0, 1000) / 200) * Math.pow(this.changeFactor, 2);
+ this.value = newvalue;
+
+ this.render();
+ if (this._value.changed) {
+ this.emit("change", this.value);
+ }
+ }
+ }
+ },
+ release: {
+ value: function release() {
+ if (!this.hasMoved) {
+ this.element.readOnly = false;
+ this.element.focus();
+ this.element.setSelectionRange(0, this.element.value.length);
+ this.element.style.backgroundColor = this.colors.accent;
+ this.element.style.color = this.colors.light;
+ } else {
+ document.body.focus();
+ }
+ }
+ },
+ link: {
+
+ /**
+ Connect this number interface to a dial or slider
+ @param {Interface} element Element to connect to.
+ @example number.link(slider)
+ */
+
+ value: function link(destination) {
+ var _this = this;
+
+ this.min = destination.min;
+ this.max = destination.max;
+ this.step = destination.step;
+ destination.on("change", function (v) {
+ _this.passiveUpdate(v);
+ });
+ this.on("change", function (v) {
+ destination.value = v;
+ });
+ this.value = destination.value;
+ /* return {
+ listener1: listener1,
+ listener2: listener2,
+ destroy: () => {
+ listener1.remove() (or similar)
+ listener2.remove() (or similar)
+ }
+ } */
+ }
+ },
+ passiveUpdate: {
+ value: function passiveUpdate(v) {
+ this._value.update(v);
+ this.render();
+ }
+ },
+ value: {
+
+ /**
+ The interface's current value. If set manually, will update the interface and trigger the output event.
+ @type {number}
+ @example number.value = 10;
+ */
+
+ get: function () {
+ return this._value.value;
+ },
+ set: function (v) {
+ this._value.update(v);
+ this.emit("change", this.value);
+ this.render();
+ }
+ },
+ min: {
+
+ /**
+ Lower limit of the number's output range
+ @type {number}
+ @example number.min = 1000;
+ */
+
+ get: function () {
+ return this._value.min;
+ },
+ set: function (v) {
+ this._value.min = v;
+ }
+ },
+ max: {
+
+ /**
+ Upper limit of the number's output range
+ @type {number}
+ @example number.max = 1000;
+ */
+
+ get: function () {
+ return this._value.max;
+ },
+ set: function (v) {
+ this._value.max = v;
+ }
+ },
+ step: {
+
+ /**
+ The increment that the number's value changes by.
+ @type {number}
+ @example number.step = 5;
+ */
+
+ get: function () {
+ return this._value.step;
+ },
+ set: function (v) {
+ this._value.step = v;
+ }
+ }
+ });
+
+ return Number;
+ })(Interface);
+
+ module.exports = Number;
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var Interface = __webpack_require__(6);
+
+ /**
+ * Select
+ *
+ * @description Dropdown menu
+ *
+ * @demo <span nexus-ui="select"></span>
+ *
+ * @example
+ * var select = new Nexus.Select('#target')
+ *
+ * @example
+ * var select = new Nexus.Select('#target',{
+ * 'size': [100,30],
+ * 'options': ['default','options']
+ * })
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * The event data is an object containing the text value of the selected option, as well as the numeric index of the selection.
+ *
+ * @outputexample
+ * select.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ *
+ */
+
+ var Select = (function (_Interface) {
+ function Select() {
+ _classCallCheck(this, Select);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [100, 30],
+ options: ["default", "options"]
+ };
+
+ _get(Object.getPrototypeOf(Select.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this._selectedIndex = -1;
+ this._value = false;
+
+ this._options = this.settings.options;
+
+ this.init();
+ this.render();
+ }
+
+ _inherits(Select, _Interface);
+
+ _createClass(Select, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.element = document.createElement("select");
+ this.element.style.fontSize = this.height / 2 + "px";
+ this.element.style.outline = "none";
+ this.element.style.highlight = "none";
+ this.element.style.width = this.width + "px";
+ this.element.style.height = this.height + "px";
+
+ this.boundRender = this.render.bind(this);
+
+ this.element.addEventListener("change", this.boundRender);
+
+ this.parent.appendChild(this.element);
+ }
+ },
+ attachListeners: {
+ value: function attachListeners() {}
+ },
+ buildInterface: {
+ value: function buildInterface() {
+
+ this.defineOptions();
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.element.style.backgroundColor = this.colors.fill;
+ this.element.style.color = this.colors.dark;
+ this.element.style.border = "solid 0px " + this.colors.mediumLight;
+ }
+ },
+ render: {
+ value: function render() {
+
+ this._value = this.element.options[this.element.selectedIndex].text;
+ this._selectedIndex = this.element.selectedIndex;
+ this.emit("change", {
+ value: this._value,
+ index: this._selectedIndex
+ });
+ }
+ },
+ click: {
+ value: function click() {}
+ },
+ move: {
+ value: function move() {}
+ },
+ release: {
+ value: function release() {}
+ },
+ defineOptions: {
+
+ /**
+ * Update the list of options. This removes all existing options and creates a new list of options.
+ * @param {array} options New array of options
+ */
+
+ value: function defineOptions(options) {
+
+ /* function removeOptions(selectbox)
+ {
+ var i;
+ for(i = selectbox.options.length - 1 ; i >= 0 ; i--)
+ {
+ selectbox.remove(i);
+ }
+ }
+ //using the function:
+ removeOptions(document.getElementById("mySelectObject")); */
+
+ if (options) {
+ this._options = options;
+ }
+
+ for (var i = this.element.options.length - 1; i >= 0; i--) {
+ this.element.remove(i);
+ }
+
+ for (var i = 0; i < this._options.length; i++) {
+ this.element.options.add(new Option(this._options[i], i));
+ }
+ }
+ },
+ value: {
+
+ /**
+ The text of the option that is currently selected. If set, will update the interface and trigger the output event.
+ @type {String}
+ @example select.value = "sawtooth";
+ */
+
+ get: function () {
+ return this._value;
+ },
+ set: function (v) {
+ this._value = v;
+ for (var i = 0; i < this.element.options.length; i++) {
+ if (v === this.element.options[i].text) {
+ this.selectedIndex = i;
+ break;
+ }
+ }
+ }
+ },
+ selectedIndex: {
+
+ /**
+ The numeric index of the option that is currently selected. If set, will update the interface and trigger the output event.
+ @type {number}
+ @example select.selectedIndex = 2;
+ */
+
+ get: function () {
+ return this._selectedIndex;
+ },
+ set: function (v) {
+ this._selectedIndex = v;
+ this.element.selectedIndex = v;
+ this.render();
+ }
+ },
+ customDestroy: {
+ value: function customDestroy() {
+ this.element.removeEventListener("change", this.boundRender);
+ }
+ }
+ });
+
+ return Select;
+ })(Interface);
+
+ module.exports = Select;
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { "default": obj }; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var math = __webpack_require__(5);
+ var Interface = __webpack_require__(6);
+ var Step = __webpack_require__(11);
+
+ var Interaction = _interopRequireWildcard(__webpack_require__(12));
+
+ /**
+ * Dial
+ *
+ *
+ * @description Dial with radial or linear interaction.
+ *
+ * @demo <span nexus-ui="dial"></span>
+ *
+ * @example
+ * var dial = new Nexus.Dial('#target')
+ *
+ * @example
+ * var dial = new Nexus.Dial('#target',{
+ * 'size': [75,75],
+ * 'interaction': 'radial', // "radial", "vertical", or "horizontal"
+ * 'mode': 'relative', // "absolute" or "relative"
+ * 'min': 0,
+ * 'max': 1,
+ * 'step': 0,
+ * 'value': 0
+ * })
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * The event data is the number value of the interface.
+ *
+ * @outputexample
+ * dial.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ * @tutorial
+ * Dial
+ * ygGMxq
+ *
+ */
+
+ var Dial = (function (_Interface) {
+ function Dial() {
+ _classCallCheck(this, Dial);
+
+ var options = ["min", "max", "value"];
+
+ var defaults = {
+ size: [75, 75],
+ interaction: "radial", // radial, vertical, horizontal
+ mode: "relative", // absolute, relative
+ min: 0,
+ max: 1,
+ step: 0,
+ value: 0
+ };
+
+ _get(Object.getPrototypeOf(Dial.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.interaction = this.settings.interaction;
+
+ this._value = new Step(this.settings.min, this.settings.max, this.settings.step, this.settings.value);
+
+ this.position = new Interaction.Handle(this.settings.mode, this.interaction, [0, this.width], [this.height, 0]);
+
+ this.init();
+
+ this.value = this._value.value;
+
+ this.position.value = this._value.normalized;
+
+ this.previousAngle = false;
+
+ this.emit("change", this.value);
+ }
+
+ _inherits(Dial, _Interface);
+
+ _createClass(Dial, {
+ buildInterface: {
+ value: function buildInterface() {
+
+ this.background = svg.create("circle");
+ this.screw = svg.create("circle");
+ this.handle = svg.create("path");
+ this.handle2 = svg.create("path");
+ this.handleFill = svg.create("path");
+ this.handle2Fill = svg.create("path");
+ this.handleLine = svg.create("path");
+
+ this.element.appendChild(this.background);
+ this.element.appendChild(this.handle);
+ this.element.appendChild(this.handle2);
+ this.element.appendChild(this.handleFill);
+ this.element.appendChild(this.handle2Fill);
+ this.element.appendChild(this.handleLine);
+ this.element.appendChild(this.screw);
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ this.position.resize([0, this.width], [this.height, 0]);
+
+ var center = {
+ x: this.width / 2,
+ y: this.height / 2
+ };
+
+ var diameter = Math.min(this.width, this.height);
+
+ this.background.setAttribute("cx", center.x);
+ this.background.setAttribute("cy", center.y);
+ this.background.setAttribute("r", diameter / 2 - diameter / 40);
+
+ this.screw.setAttribute("cx", center.x);
+ this.screw.setAttribute("cy", center.y);
+ this.screw.setAttribute("r", diameter / 12);
+
+ var value = this.value;
+
+ var handlePoints = {
+ start: Math.PI * 1.5,
+ end: math.clip(math.scale(value, 0, 0.5, Math.PI * 1.5, Math.PI * 0.5), Math.PI * 0.5, Math.PI * 1.5)
+ };
+ var handle2Points = {
+ start: Math.PI * 2.5,
+ end: math.clip(math.scale(value, 0.5, 1, Math.PI * 2.5, Math.PI * 1.5), Math.PI * 1.5, Math.PI * 2.5)
+ };
+
+ var handlePath = svg.arc(center.x, center.y, diameter / 2 - diameter / 40, handlePoints.start, handlePoints.end);
+ var handle2Path = svg.arc(center.x, center.y, diameter / 2 - diameter / 40, handle2Points.start, handle2Points.end);
+
+ this.handle.setAttribute("d", handlePath);
+ this.handle.setAttribute("stroke-width", diameter / 20);
+ this.handle.setAttribute("fill", "none");
+
+ this.handle2.setAttribute("d", handle2Path);
+ this.handle2.setAttribute("stroke-width", diameter / 20);
+ this.handle2.setAttribute("fill", "none");
+
+ handlePath += " L " + center.x + " " + center.y;
+
+ this.handleFill.setAttribute("d", handlePath);
+ this.handleFill.setAttribute("fill-opacity", "0.3");
+
+ handle2Path += " L " + center.x + " " + center.y;
+
+ this.handle2Fill.setAttribute("d", handle2Path);
+ this.handle2Fill.setAttribute("fill-opacity", "0.3");
+
+ var arcEndingA = undefined;
+ if (value < 0.5) {
+ arcEndingA = handlePoints.end;
+ } else {
+ arcEndingA = handle2Points.end;
+ }
+
+ var arcEndingX = center.x + Math.cos(arcEndingA) * (diameter / 2);
+ var arcEndingY = center.y + Math.sin(arcEndingA) * (diameter / 2) * -1;
+
+ this.handleLine.setAttribute("d", "M " + center.x + " " + center.y + " L " + arcEndingX + " " + arcEndingY);
+ this.handleLine.setAttribute("stroke-width", diameter / 20);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.background.setAttribute("fill", this.colors.fill);
+ this.screw.setAttribute("fill", this.colors.accent);
+ this.handle.setAttribute("stroke", this.colors.accent);
+ this.handle2.setAttribute("stroke", this.colors.accent);
+ this.handleFill.setAttribute("fill", this.colors.accent);
+ this.handle2Fill.setAttribute("fill", this.colors.accent);
+ this.handleLine.setAttribute("stroke", this.colors.accent);
+ }
+ },
+ render: {
+ value: function render() {
+ var value = this._value.normalized;
+
+ var center = {
+ x: this.width / 2,
+ y: this.height / 2
+ };
+
+ var diameter = Math.min(this.width, this.height);
+
+ var handlePoints = {
+ start: Math.PI * 1.5,
+ end: math.clip(math.scale(value, 0, 0.5, Math.PI * 1.5, Math.PI * 0.5), Math.PI * 0.5, Math.PI * 1.5)
+ };
+ var handle2Points = {
+ start: Math.PI * 2.5,
+ end: math.clip(math.scale(value, 0.5, 1, Math.PI * 2.5, Math.PI * 1.5), Math.PI * 1.5, Math.PI * 2.5)
+ };
+
+ var handlePath = svg.arc(center.x, center.y, diameter / 2 - diameter / 40, handlePoints.start, handlePoints.end);
+ var handle2Path = svg.arc(center.x, center.y, diameter / 2 - diameter / 40, handle2Points.start, handle2Points.end);
+
+ this.handle.setAttribute("d", handlePath);
+ this.handle2.setAttribute("d", handle2Path);
+
+ handlePath += " L " + center.x + " " + center.y;
+
+ this.handleFill.setAttribute("d", handlePath);
+
+ handle2Path += " L " + center.x + " " + center.y;
+
+ this.handle2Fill.setAttribute("d", handle2Path);
+
+ var arcEndingA = undefined;
+ if (value <= 0.5) {
+ arcEndingA = handlePoints.end;
+ } else {
+ arcEndingA = handle2Points.end;
+ }
+
+ var arcEndingX = center.x + Math.cos(arcEndingA) * (diameter / 2);
+ var arcEndingY = center.y + Math.sin(arcEndingA) * (diameter / 2) * -1;
+
+ this.handleLine.setAttribute("d", "M " + center.x + " " + center.y + " L " + arcEndingX + " " + arcEndingY);
+ }
+ },
+ click: {
+ value: function click() {
+ if (this.mode === "relative") {
+ this.previousAngle = false;
+ }
+ this.position.anchor = this.mouse;
+ this.position.value = this._value.normalized;
+ this.move();
+ }
+ },
+ move: {
+ value: function move() {
+ if (this.clicked) {
+
+ this.position.update(this.mouse);
+
+ var angle = this.position.value * Math.PI * 2;
+
+ if (angle < 0) {
+ angle += Math.PI * 2;
+ }
+
+ if (this.mode === "relative") {
+ if (this.previousAngle !== false && Math.abs(this.previousAngle - angle) > 2) {
+ if (this.previousAngle > 3) {
+ angle = Math.PI * 2;
+ } else {
+ angle = 0;
+ }
+ }
+ } /* else {
+ if (this.previousAngle !== false && Math.abs(this.previousAngle - angle) > 2) {
+ if (this.previousAngle > 3) {
+ angle = Math.PI*2;
+ } else {
+ angle = 0;
+ }
+ }
+ } */
+ this.previousAngle = angle;
+
+ var realValue = angle / (Math.PI * 2);
+
+ this.value = this._value.updateNormal(realValue);
+
+ if (this.mode === "relative") {
+ this.position.value = realValue;
+ }
+
+ this.emit("change", this._value.value);
+
+ this.render();
+ }
+ }
+ },
+ release: {
+ value: function release() {}
+ },
+ value: {
+
+ /*
+ Dial's value. When set, it will automatically be adjust to fit min/max/step settings of the interface.
+ @type {number}
+ @example dial.value = 10;
+ get value() {
+ return this._value.value;
+ }
+ set value(value) {
+ this._value.update(value);
+ this.emit('change',this.value);
+ this.render();
+ }
+ */
+
+ /**
+ Dial's value. When set, it will automatically be adjust to fit min/max/step settings of the interface.
+ @type {number}
+ @example dial.value = 10;
+ */
+
+ get: function () {
+ return this._value.value;
+ },
+ set: function (v) {
+ this._value.update(v);
+ this.position.value = this._value.normalized;
+ this.emit("change", this._value.value);
+ this.render();
+ }
+ },
+ min: {
+
+ /**
+ Lower limit of the dial's output range
+ @type {number}
+ @example dial.min = 1000;
+ */
+
+ get: function () {
+ return this._value.min;
+ },
+ set: function (v) {
+ this._value.min = v;
+ }
+ },
+ max: {
+
+ /**
+ Upper limit of the dial's output range
+ @type {number}
+ @example dial.max = 1000;
+ */
+
+ get: function () {
+ return this._value.max;
+ },
+ set: function (v) {
+ this._value.max = v;
+ }
+ },
+ step: {
+
+ /**
+ The increment that the dial's value changes by.
+ @type {number}
+ @example dial.step = 5;
+ */
+
+ get: function () {
+ return this._value.step;
+ },
+ set: function (v) {
+ this._value.step = v;
+ }
+ },
+ mode: {
+
+ /**
+ Absolute mode (dial's value jumps to mouse click position) or relative mode (mouse drag changes value relative to its current position). Default: "relative".
+ @type {string}
+ @example dial.mode = "relative";
+ */
+
+ get: function () {
+ return this.position.mode;
+ },
+ set: function (v) {
+ this.position.mode = v;
+ }
+ },
+ normalized: {
+
+ /**
+ Normalized value of the dial.
+ @type {number}
+ @example dial.normalized = 0.5;
+ */
+
+ get: function () {
+ return this._value.normalized;
+ },
+ set: function (v) {
+ this._value.updateNormal(v);
+ this.emit("change", this.value);
+ }
+ }
+ });
+
+ return Dial;
+ })(Interface);
+
+ module.exports = Dial;
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var Interface = __webpack_require__(6);
+ var ButtonTemplate = __webpack_require__(17);
+ var touch = __webpack_require__(9);
+
+ var PianoKey = (function (_ButtonTemplate) {
+ function PianoKey() {
+ _classCallCheck(this, PianoKey);
+
+ var options = ["value", "note", "color"];
+
+ var defaults = {
+ size: [80, 80],
+ target: false,
+ mode: "button",
+ value: 0
+ };
+
+ _get(Object.getPrototypeOf(PianoKey.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.note = this.settings.note;
+ this.color = this.settings.color;
+
+ this.colors = {
+ w: "#fff",
+ b: "#666" };
+
+ this.init();
+ this.render();
+ }
+
+ _inherits(PianoKey, _ButtonTemplate);
+
+ _createClass(PianoKey, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.element = svg.create("svg");
+ this.element.setAttribute("width", this.width);
+ this.element.setAttribute("height", this.height);
+ this.parent.appendChild(this.element);
+ }
+ },
+ buildInterface: {
+ value: function buildInterface() {
+ var _this = this;
+
+ this.pad = svg.create("rect");
+
+ this.element.appendChild(this.pad);
+
+ this.interactionTarget = this.pad;
+
+ /* events */
+
+ if (!touch.exists) {
+
+ this.click = function () {
+ // console.log('click');
+ _this.piano.interacting = true;
+ _this.piano.paintbrush = !_this.state;
+ _this.down(_this.piano.paintbrush);
+ };
+
+ this.pad.addEventListener("mouseover", function () {
+ if (_this.piano.interacting) {
+ // console.log('mouseover');
+ _this.down(_this.piano.paintbrush);
+ }
+ });
+
+ this.move = function () {
+ if (_this.piano.interacting) {
+ // console.log('move');
+ _this.bend();
+ }
+ };
+
+ this.release = function () {
+ _this.piano.interacting = false;
+ // console.log('release');
+ // this.up();
+ };
+ this.pad.addEventListener("mouseup", function () {
+ if (_this.piano.interacting) {
+ // console.log('mouseup');
+ _this.up();
+ }
+ });
+ this.pad.addEventListener("mouseout", function () {
+ if (_this.piano.interacting) {
+ // console.log('mouseout');
+ _this.up();
+ }
+ });
+ }
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ //let radius = Math.min(this.width,this.height) / 5;
+ var radius = 0;
+
+ this.pad.setAttribute("x", 0.5);
+ this.pad.setAttribute("y", 0.5);
+ if (this.width > 2) {
+ this.pad.setAttribute("width", this.width - 1);
+ } else {
+ this.pad.setAttribute("width", this.width);
+ }
+ if (this.height > 2) {
+ this.pad.setAttribute("height", this.height);
+ } else {
+ this.pad.setAttribute("height", this.height);
+ }
+ this.pad.setAttribute("rx", radius);
+ this.pad.setAttribute("ry", radius);
+ }
+ },
+ render: {
+ value: function render() {
+ if (!this.state) {
+ this.pad.setAttribute("fill", this.colors[this.color]);
+ } else {
+ this.pad.setAttribute("fill", this.colors.accent);
+ }
+ }
+ }
+ });
+
+ return PianoKey;
+ })(ButtonTemplate);
+
+ /**
+ * Piano
+ *
+ * @description Piano keyboard interface
+ *
+ * @demo <div nexus-ui="piano"></div>
+ *
+ * @example
+ * var piano = new Nexus.Piano('#target')
+ *
+ * @example
+ * var piano = new Nexus.Piano('#target',{
+ * 'size': [500,125],
+ * 'mode': 'button', // 'button', 'toggle', or 'impulse'
+ * 'lowNote': 24,
+ * 'highNote': 60
+ * })
+ *
+ * @output
+ * change
+ * Fires any time a new key is pressed or released <br>
+ * The event data is an object containing <i>note</i> and <i>state</i> properties.
+ *
+ * @outputexample
+ * piano.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ */
+
+ var Piano = (function (_Interface) {
+ function Piano() {
+ _classCallCheck(this, Piano);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [500, 125],
+ lowNote: 24,
+ highNote: 60,
+ mode: "button"
+ };
+
+ _get(Object.getPrototypeOf(Piano.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.keyPattern = ["w", "b", "w", "b", "w", "w", "b", "w", "b", "w", "b", "w"];
+
+ this.paintbrush = false;
+
+ this.mode = this.settings.mode;
+
+ this.range = {
+ low: this.settings.lowNote,
+ high: this.settings.highNote
+ };
+
+ this.range.size = this.range.high - this.range.low + 1;
+
+ this.keys = [];
+
+ this.toggleTo = false;
+
+ this.init();
+ this.render();
+ }
+
+ _inherits(Piano, _Interface);
+
+ _createClass(Piano, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.element = document.createElement("div");
+ this.element.style.position = "relative";
+ this.element.style.borderRadius = "0px";
+ this.element.style.display = "block";
+ this.element.style.width = "100%";
+ this.element.style.height = "100%";
+ this.parent.appendChild(this.element);
+ }
+ },
+ buildInterface: {
+ value: function buildInterface() {
+
+ this.keys = [];
+
+ for (var i = 0; i < this.range.size; i++) {
+
+ var container = document.createElement("span");
+ var scaleIndex = (i + this.range.low) % this.keyPattern.length;
+
+ var key = new PianoKey(container, {
+ component: true,
+ note: i + this.range.low,
+ color: this.keyPattern[scaleIndex],
+ mode: this.mode
+ }, this.keyChange.bind(this, i + this.range.low));
+
+ key.piano = this;
+
+ if (touch.exists) {
+ key.pad.index = i;
+ key.preClick = key.preMove = key.preRelease = function () {};
+ key.click = key.move = key.release = function () {};
+ key.preTouch = key.preTouchMove = key.preTouchRelease = function () {};
+ key.touch = key.touchMove = key.touchRelease = function () {};
+ }
+
+ this.keys.push(key);
+ this.element.appendChild(container);
+ }
+ if (touch.exists) {
+ this.addTouchListeners();
+ }
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ var keyX = 0;
+
+ var keyPositions = [];
+
+ for (var i = 0; i < this.range.size; i++) {
+
+ keyPositions.push(keyX);
+
+ var scaleIndex = (i + this.range.low) % this.keyPattern.length;
+ var nextScaleIndex = (i + 1 + this.range.low) % this.keyPattern.length;
+ if (i + 1 + this.range.low >= this.range.high) {
+ keyX += 1;
+ } else if (this.keyPattern[scaleIndex] === "w" && this.keyPattern[nextScaleIndex] === "w") {
+ keyX += 1;
+ } else {
+ keyX += 0.5;
+ }
+ }
+ var keysWide = keyX;
+
+ // let padding = this.width / 120;
+ var padding = 1;
+ var buttonWidth = (this.width - padding * 2) / keysWide;
+ var buttonHeight = (this.height - padding * 2) / 2;
+
+ for (var i = 0; i < this.keys.length; i++) {
+
+ var container = this.keys[i].parent;
+ container.style.position = "absolute";
+ container.style.left = keyPositions[i] * buttonWidth + padding + "px";
+ if (this.keys[i].color === "w") {
+ container.style.top = padding + "px";
+ this.keys[i].resize(buttonWidth, buttonHeight * 2);
+ } else {
+ container.style.zIndex = 1;
+ container.style.top = padding + "px";
+ this.keys[i].resize(buttonWidth, buttonHeight * 1.1);
+ }
+ }
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+
+ // Piano keys don't actually have a stroke border
+ // They have space between them, which shows the Piano bg color
+ this.element.style.backgroundColor = this.colors.mediumLight;
+
+ for (var i = 0; i < this.keys.length; i++) {
+ this.keys[i].colors = {
+ w: this.colors.light,
+ b: this.colors.dark,
+ accent: this.colors.accent,
+ border: this.colors.mediumLight
+ };
+ this.keys[i].colorInterface();
+ this.keys[i].render();
+ }
+ }
+ },
+ keyChange: {
+ value: function keyChange(note, on) {
+ // emit data for any key turning on/off
+ // "note" is the note value
+ // "on" is a boolean whether it is on or off
+ // in aftertouch mode, "on: is an object with state/x/y properties
+ var data = {
+ note: note
+ };
+ if (typeof on === "object") {
+ data.state = on.state;
+ // data.x = on.x
+ // data.y = on.y
+ } else {
+ data.state = on;
+ }
+ this.emit("change", data);
+ }
+ },
+ render: {
+
+ /* drag(note,on) {
+ this.emit('change',{
+ note: note,
+ state: on
+ });
+ } */
+
+ value: function render() {}
+ },
+ addTouchListeners: {
+ value: function addTouchListeners() {
+ this.preClick = this.preMove = this.preRelease = function () {};
+ this.click = this.move = this.release = function () {};
+ this.preTouch = this.preTouchMove = this.preTouchRelease = function () {};
+ this.touch = this.touchMove = this.touchRelease = function () {};
+
+ var allActiveTouches = {};
+ var keys = this.keys;
+
+ function cloneTouch(touch) {
+ return { identifier: touch.identifier, clientX: touch.clientX, clientY: touch.clientY };
+ }
+
+ function updateKeyState() {
+ var allActiveKeys = {};
+
+ // Check/set "key-down" status for all keys that are currently touched.
+ Object.keys(allActiveTouches).forEach(function (id) {
+ var touch = allActiveTouches[id];
+ var el = document.elementFromPoint(touch.clientX, touch.clientY);
+ var key = el ? keys[el.index] : null;
+ if (key) {
+ allActiveKeys[el.index] = id;
+ if (!key.state) {
+ key.down();
+ }
+ } else {
+ delete allActiveTouches[id];
+ }
+ });
+
+ // Set "key-up" status for all keys that are untouched.
+ keys.forEach(function (key) {
+ if (key.state && !allActiveKeys[key.pad.index]) {
+ key.up();
+ }
+ });
+ }
+
+ function handleTouchStartAndMove(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ for (var i = 0; i < e.changedTouches.length; i++) {
+ var _touch = e.changedTouches[i];
+ allActiveTouches[_touch.identifier] = cloneTouch(_touch);
+ }
+ updateKeyState();
+ }
+
+ function handleTouchEnd(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ for (var i = 0; i < e.changedTouches.length; i++) {
+ var _touch = e.changedTouches[i];
+ delete allActiveTouches[_touch.identifier];
+ }
+ updateKeyState();
+ }
+
+ this.element.addEventListener("touchstart", handleTouchStartAndMove);
+ this.element.addEventListener("touchmove", handleTouchStartAndMove);
+ this.element.addEventListener("touchend", handleTouchEnd);
+ }
+ },
+ setRange: {
+
+ /**
+ Define the pitch range (lowest and highest note) of the piano keyboard.
+ @param low {number} MIDI note value of the lowest note on the keyboard
+ @param high {number} MIDI note value of the highest note on the keyboard
+ */
+
+ value: function setRange(low, high) {
+ this.range.low = low;
+ this.range.high = high;
+ this.empty();
+ this.buildInterface();
+ }
+ },
+ toggleKey: {
+
+ /**
+ Turn a key on or off using its MIDI note value;
+ @param note {number} MIDI note value of the key to change
+ @param on {boolean} Whether the note should turn on or off
+ */
+
+ value: function toggleKey(note, on) {
+ this.keys[note - this.range.low].flip(on);
+ }
+ },
+ toggleIndex: {
+
+ /**
+ Turn a key on or off using its key index on the piano interface.
+ @param index {number} Index of the key to change
+ @param on {boolean} Whether the note should turn on or off
+ */
+
+ value: function toggleIndex(index, on) {
+ this.keys[index].flip(on);
+ }
+ }
+ });
+
+ return Piano;
+ })(Interface);
+
+ module.exports = Piano;
+
+ // loop through and render the keys?
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var dom = __webpack_require__(7);
+ var Interface = __webpack_require__(6);
+ var ButtonTemplate = __webpack_require__(17);
+ var MatrixModel = __webpack_require__(25);
+ var CounterModel = __webpack_require__(28);
+ var Interval = __webpack_require__(29);
+ var touch = __webpack_require__(9);
+
+ var MatrixCell = (function (_ButtonTemplate) {
+ function MatrixCell() {
+ _classCallCheck(this, MatrixCell);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [80, 80],
+ target: false,
+ mode: "toggle",
+ value: 0,
+ paddingRow: 2,
+ paddingColumn: 2
+ };
+
+ _get(Object.getPrototypeOf(MatrixCell.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.index = this.settings.index;
+ this.row = this.settings.row;
+ this.column = this.settings.column;
+
+ this.matrix = this.settings.matrix;
+
+ /**
+ * Amount of row padding
+ * @type {number}
+ */
+ this.paddingRow = this.settings.paddingRow || defaults.paddingRow;
+
+ /**
+ * Amount of column padding
+ * @type {number}
+ */
+ this.paddingColumn = this.settings.paddingColumn || defaults.paddingColumn;
+
+ this.interacting = false;
+ this.paintbrush = false;
+
+ this.init();
+ this.render();
+ }
+
+ _inherits(MatrixCell, _ButtonTemplate);
+
+ _createClass(MatrixCell, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.element = svg.create("svg");
+ this.element.setAttribute("width", this.width);
+ this.element.setAttribute("height", this.height);
+ this.element.style.top = "0px";
+ this.element.style.left = "0px";
+ this.element.style.position = "absolute";
+ this.parent.appendChild(this.element);
+ }
+ },
+ buildInterface: {
+ value: function buildInterface() {
+ var _this = this;
+
+ this.pad = svg.create("rect");
+ this.element.appendChild(this.pad);
+
+ this.interactionTarget = this.pad;
+
+ /* events */
+
+ if (!touch.exists) {
+ this.click = function () {
+ _this.matrix.interacting = true;
+ _this.matrix.paintbrush = !_this.state;
+ _this.down(_this.matrix.paintbrush);
+ };
+ this.pad.addEventListener("mouseover", function () {
+ if (_this.matrix.interacting) {
+ _this.down(_this.matrix.paintbrush);
+ }
+ });
+
+ this.move = function () {};
+ this.pad.addEventListener("mousemove", function (e) {
+ if (_this.matrix.interacting) {
+ if (!_this.offset) {
+ _this.offset = dom.findPosition(_this.element);
+ }
+ _this.mouse = dom.locateMouse(e, _this.offset);
+ _this.bend();
+ }
+ });
+
+ this.release = function () {
+ _this.matrix.interacting = false;
+ };
+ this.pad.addEventListener("mouseup", function () {
+ if (_this.matrix.interacting) {
+ _this.up();
+ }
+ });
+ this.pad.addEventListener("mouseout", function () {
+ if (_this.matrix.interacting) {
+ _this.up();
+ }
+ });
+ }
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+ this.pad.setAttribute("x", this.paddingColumn / 2);
+ this.pad.setAttribute("y", this.paddingRow / 2);
+ if (this.width > 2) {
+ this.pad.setAttribute("width", this.width - this.paddingColumn);
+ } else {
+ this.pad.setAttribute("width", this.width);
+ }
+ if (this.height > 2) {
+ this.pad.setAttribute("height", this.height - this.paddingRow);
+ } else {
+ this.pad.setAttribute("height", this.height);
+ }
+ this.pad.setAttribute("fill", this.matrix.colors.fill);
+ }
+ },
+ render: {
+ value: function render() {
+ if (!this.state) {
+ this.pad.setAttribute("fill", this.matrix.colors.fill);
+ } else {
+ this.pad.setAttribute("fill", this.matrix.colors.accent);
+ }
+ }
+ }
+ });
+
+ return MatrixCell;
+ })(ButtonTemplate);
+
+ /**
+ * Sequencer
+ *
+ * @description Grid of buttons with built-in step sequencer.
+ *
+ * @demo <div nexus-ui="sequencer" style="width:400px;height:200px;"></div>
+ *
+ * @example
+ * var sequencer = new Nexus.Sequencer('#target')
+ *
+ * @example
+ * var sequencer = new Nexus.Sequencer('#target',{
+ * 'size': [400,200],
+ * 'mode': 'toggle',
+ * 'rows': 5,
+ * 'columns': 10,
+ * 'paddingRow': 10,
+ * 'paddingColumn': 20
+ *})
+ *
+ * @output
+ * change
+ * Fires any time the interface's matrix changes. <br>
+ * The event data is an object containing <i>row</i> (number), <i>column</i> (number), and <i>state</i> (boolean) properties.
+ *
+ * @outputexample
+ * sequencer.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ * @output
+ * step
+ * Fires any time the sequencer steps to the next column, in sequece mode. <br>
+ * The event data is an <i>array</i> containing all values in the column, <i>bottom row first</i>.
+ *
+ * @outputexample
+ * sequencer.on('step',function(v) {
+ * console.log(v);
+ * })
+ */
+
+ var Sequencer = (function (_Interface) {
+ function Sequencer() {
+ _classCallCheck(this, Sequencer);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [400, 200],
+ mode: "toggle",
+ rows: 5,
+ columns: 10
+ };
+
+ _get(Object.getPrototypeOf(Sequencer.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.active = -1;
+
+ /**
+ * Button interaction mode: see Button
+ * @type {string}
+ * @example button.mode = 'toggle';
+ */
+ this.mode = this.settings.mode;
+
+ /**
+ * The interval object which controls timing and sequence scheduling.
+ * @type {interval}
+ */
+ this.interval = new Interval(200, function () {}, false); // jshint ignore:line
+
+ /**
+ * A Matrix model containing methods for manipulating the sequencer's array of values. To learn how to manipulate the matrix, read about the matrix model.
+ * @type {matrix}
+ */
+ this.matrix = new MatrixModel(this.settings.rows, this.settings.columns);
+ this.matrix.ui = this;
+
+ /**
+ * A Counter model which the sequencer steps through. For example, you could use this model to step through the sequencer in reverse, randomly, or in a drunk walk.
+ * @type {counter}
+ */
+ this.stepper = new CounterModel(0, this.columns);
+
+ this.paddingRow = this.settings.paddingRow;
+ this.paddingColumn = this.settings.paddingColumn;
+
+ this.init();
+ }
+
+ _inherits(Sequencer, _Interface);
+
+ _createClass(Sequencer, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.element = document.createElement("div");
+ this.element.style.position = "relative";
+ this.element.style.display = "block";
+ this.element.style.width = "100%";
+ this.element.style.height = "100%";
+ this.parent.appendChild(this.element);
+ if (touch.exists) {
+ this.addTouchListeners();
+ }
+ }
+ },
+ buildInterface: {
+ value: function buildInterface() {
+ this.cells = [];
+ for (var i = 0; i < this.matrix.length; i++) {
+ var _location = this.matrix.locate(i);
+ // returns {row,col}
+
+ var container = document.createElement("span");
+ container.style.position = "absolute";
+
+ var cell = new MatrixCell(container, {
+ component: true,
+ index: i,
+ row: _location.row,
+ column: _location.column,
+ mode: this.mode,
+ matrix: this,
+ paddingRow: this.paddingRow,
+ paddingColumn: this.paddingColumn
+ }, this.keyChange.bind(this, i));
+
+ // cell.matrix = this;
+ if (touch.exists) {
+ cell.pad.index = i;
+ cell.preClick = cell.preMove = cell.preRelease = function () {};
+ cell.click = cell.move = cell.release = function () {};
+ cell.preTouch = cell.preTouchMove = cell.preTouchRelease = function () {};
+ cell.touch = cell.touchMove = cell.touchRelease = function () {};
+ }
+
+ this.cells.push(cell);
+ this.element.appendChild(container);
+ }
+ this.sizeInterface();
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+ var cellWidth = this.width / this.columns;
+ var cellHeight = this.height / this.rows;
+
+ for (var i = 0; i < this.cells.length; i++) {
+ var container = this.cells[i].parent;
+ container.style.left = this.cells[i].column * cellWidth + "px";
+ container.style.top = this.cells[i].row * cellHeight + "px";
+ this.cells[i].resize(cellWidth, cellHeight);
+ }
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ for (var i = 0; i < this.cells.length; i++) {
+ this.cells[i].render();
+ }
+ }
+ },
+ update: {
+ value: function update() {
+ var _this = this;
+
+ // console.log("updating...")
+ //on = on || false;
+ this.matrix.iterate(function (r, c, i) {
+ // console.log(this.matrix.pattern[r][c], this.cells[i].state);
+ if (_this.matrix.pattern[r][c] !== _this.cells[i].state) {
+ if (_this.matrix.pattern[r][c] > 0) {
+ _this.cells[i].turnOn();
+ } else {
+ _this.cells[i].turnOff();
+ }
+ }
+ });
+ }
+ },
+ keyChange: {
+
+ // update => cell.turnOn => cell.emit => keyChange (seq.emit) => matrix.set.cell => update
+ //
+ // interaction => keyChange => matrix.set.cell => update => cell.turnOn
+ // => emit
+ //
+ // set.cell => update => needs to emit.
+
+ value: function keyChange(note, on) {
+ // emit data for any key turning on/off
+ // i is the note index
+ // v is whether it is on or off
+ var cell = this.matrix.locate(note);
+ // this.matrix.set.cell(cell.column,cell.row,on);
+ this.matrix.pattern[cell.row][cell.column] = on;
+ var data = {
+ row: cell.row,
+ column: cell.column,
+ state: on
+ };
+ this.emit("change", data);
+ }
+ },
+ render: {
+ value: function render() {
+ var _this = this;
+
+ if (this.stepper.value >= 0) {
+ this.matrix.iterate(function (r, c, i) {
+ if (c === _this.stepper.value) {
+ _this.cells[i].pad.setAttribute("stroke", _this.colors.mediumLight);
+ _this.cells[i].pad.setAttribute("stroke-width", "1");
+ _this.cells[i].pad.setAttribute("stroke-opacity", "1");
+ } else {
+ _this.cells[i].pad.setAttribute("stroke", "none");
+ }
+ });
+ }
+ }
+ },
+ start: {
+
+ /**
+ * Start sequencing
+ * @param {number} ms Beat tempo in milliseconds
+ */
+
+ value: function start(ms) {
+ this.interval.event = this.next.bind(this);
+ if (ms) {
+ this.interval.ms(ms);
+ }
+ this.interval.start();
+ }
+ },
+ stop: {
+
+ /**
+ Stop sequencing
+ */
+
+ value: function stop() {
+ this.interval.stop();
+ }
+ },
+ next: {
+
+ /**
+ Manually jump to the next column and trigger the 'change' event. The "next" column is determined by your mode of sequencing.
+ */
+
+ value: function next() {
+ this.stepper.next();
+ this.emit("step", this.matrix.column(this.stepper.value).reverse());
+ this.render();
+ }
+ },
+ addTouchListeners: {
+ value: function addTouchListeners() {
+ var _this = this;
+
+ this.preClick = this.preMove = this.preRelease = function () {};
+ this.click = this.move = this.release = function () {};
+ this.preTouch = this.preTouchMove = this.preTouchRelease = function () {};
+ this.touch = this.touchMove = this.touchRelease = function () {};
+
+ this.currentElement = false;
+
+ this.element.addEventListener("touchstart", function (e) {
+ var element = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);
+ var cell = _this.cells[element.index];
+ _this.paintbrush = !cell.state;
+ cell.down(_this.paintbrush);
+ _this.currentElement = element.index;
+ e.preventDefault();
+ e.stopPropagation();
+ });
+
+ this.element.addEventListener("touchmove", function (e) {
+ var element = document.elementFromPoint(e.targetTouches[0].clientX, e.targetTouches[0].clientY);
+ var cell = _this.cells[element.index];
+ if (element.index !== _this.currentElement) {
+ if (_this.currentElement >= 0) {
+ var pastCell = _this.cells[_this.currentElement];
+ pastCell.up();
+ }
+ cell.down(_this.paintbrush);
+ } else {
+ cell.bend();
+ }
+ _this.currentElement = element.index;
+ e.preventDefault();
+ e.stopPropagation();
+ });
+
+ this.element.addEventListener("touchend", function (e) {
+ // no touches to calculate because none remaining
+ var cell = _this.cells[_this.currentElement];
+ cell.up();
+ _this.interacting = false;
+ _this.currentElement = false;
+ e.preventDefault();
+ e.stopPropagation();
+ });
+ }
+ },
+ rows: {
+
+ /**
+ Number of rows in the sequencer
+ @type {number}
+ */
+
+ get: function () {
+ return this.matrix.rows;
+ },
+ set: function (v) {
+ this.matrix.rows = v;
+ this.empty();
+ this.buildInterface();
+ this.update();
+ }
+ },
+ columns: {
+
+ /**
+ Number of columns in the sequencer
+ @type {number}
+ */
+
+ get: function () {
+ return this.matrix.columns;
+ },
+ set: function (v) {
+ this.matrix.columns = v;
+ this.stepper.max = v;
+ this.empty();
+ this.buildInterface();
+ this.update();
+ }
+ }
+ });
+
+ return Sequencer;
+ })(Interface);
+
+ module.exports = Sequencer;
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var math = _interopRequire(__webpack_require__(5));
+
+ var Sequence = _interopRequire(__webpack_require__(26));
+
+ // For the tutorial, looking at
+
+ //Pattern section:
+ // .create(), .rows, .columns,
+ // .pattern, .length, .formatAsText(), .log(),
+ // .locate(i), .indexOf(c,r)
+ // row(), column() (returns contents of row or colum)
+
+ //Control section:
+ // toggle x3
+ // set x4
+ // rotate x3
+ // populate x3
+ // erase x3
+
+ // should some version of this have a float value for each cell?
+ // could be like a mirror .pattern that has values. by default, everything is 1, but could be set...
+ // not a good way to do that on interface, but as a model it would be nice...
+ // for .formatAsText(), could multiply by 100 and floor, so each cell is an int from 0 to 9
+
+ var Matrix = (function () {
+ function Matrix(rows, columns) {
+ var _this = this;
+
+ _classCallCheck(this, Matrix);
+
+ // should also have ability to create using an existing matrix (2d array)
+ this.pattern = [];
+ this.create(rows, columns);
+
+ this.toggle = {
+ cell: function (column, row) {
+ _this.pattern[row][column] = !_this.pattern[row][column]; // math.invert(this.pattern[row][column]);
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ return _this.pattern[row][column];
+ },
+ all: function () {
+ _this.iterate(function (r, c) {
+ _this.toggle.cell(c, r);
+ });
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ },
+ row: function (row) {
+ for (var i = 0; i < _this.columns; i++) {
+ _this.toggle.cell(i, row);
+ }
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ },
+ column: function (column) {
+ for (var i = 0; i < _this.rows; i++) {
+ _this.toggle.cell(column, i);
+ }
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ }
+ };
+
+ this.set = {
+ cell: function (column, row, value) {
+ _this.pattern[row][column] = value;
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ },
+ all: function (values) {
+ // set the whole matrix using a 2d array as input
+ // this should also resize the array?
+ _this.pattern = values;
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ },
+ row: function (row, values) {
+ // set a row using an array as input
+ _this.pattern[row] = values;
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ },
+ column: function (column, values) {
+ // set a column using an array as input
+ _this.pattern.forEach(function (row, i) {
+ _this.pattern[i][column] = values[i];
+ });
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ }
+ };
+
+ this.rotate = {
+ //should eventually do (amountX, amountY) here
+ // could just use a loop and this.rotate.row(i,amountX);
+ all: function (amount) {
+ if (!amount && amount !== 0) {
+ amount = 1;
+ }
+ amount %= _this.pattern[0].length;
+ if (amount < 0) {
+ amount = _this.pattern[0].length + amount;
+ }
+ for (var i = 0; i < _this.rows; i++) {
+ var cut = _this.pattern[i].splice(_this.pattern[i].length - amount, amount);
+ _this.pattern[i] = cut.concat(_this.pattern[i]);
+ }
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ },
+ row: function (row, amount) {
+ if (!amount && amount !== 0) {
+ amount = 1;
+ }
+ amount %= _this.pattern[0].length;
+ if (amount < 0) {
+ amount = _this.pattern[0].length + amount;
+ }
+ var cut = _this.pattern[row].splice(_this.pattern[row].length - amount, amount);
+ _this.pattern[row] = cut.concat(_this.pattern[row]);
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ },
+ column: function (column, amount) {
+ if (!amount && amount !== 0) {
+ amount = 1;
+ }
+ amount %= _this.pattern.length;
+ if (amount < 0) {
+ amount = _this.pattern.length + amount;
+ }
+ var proxy = [];
+ _this.pattern.forEach(function (row) {
+ proxy.push(row[column]);
+ });
+ var cut = proxy.splice(proxy.length - amount, amount);
+ proxy = cut.concat(proxy);
+ _this.pattern.forEach(function (row, i) {
+ row[column] = proxy[i];
+ });
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ }
+ };
+
+ // the idea behind populate is to be able to set a whole row or column to 0 or 1
+ // IF the value is a float, such as 0.7, then it would become a probability
+ // so populate(0.7) would give each cell a 70% chance of being 1
+ this.populate = {
+ all: function (odds) {
+ var oddsSequence = new Sequence(odds);
+ _this.iterate(function (r, c) {
+ _this.pattern[r][c] = math.coin(oddsSequence.next());
+ });
+ // This could be used so that each row has same odds pattern, even if row length is not divisibly by sequence length.
+ //,() => {
+ // odds.pos = -1;
+ // }
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ },
+ row: function () {
+ var row = arguments[0] === undefined ? 0 : arguments[0];
+ var odds = arguments[1] === undefined ? 1 : arguments[1];
+
+ var oddsSequence = new Sequence(odds);
+ _this.pattern[row].forEach(function (cell, i) {
+ _this.pattern[row][i] = math.coin(oddsSequence.next());
+ });
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ },
+ column: function () {
+ var column = arguments[0] === undefined ? 0 : arguments[0];
+ var odds = arguments[1] === undefined ? 1 : arguments[1];
+
+ var oddsSequence = new Sequence(odds);
+ _this.pattern.forEach(function (row, i) {
+ _this.pattern[i][column] = math.coin(oddsSequence.next());
+ });
+ if (_this.ui) {
+ _this.ui.update();
+ }
+ }
+ };
+
+ // essentiall populate(0) so i'm not sure if this is necessary but is nice
+ this.erase = {
+ all: function () {
+ _this.set.all(0);
+ },
+ row: function (row) {
+ _this.set.row(row, 0);
+ },
+ column: function (column) {
+ _this.set.column(column, 0);
+ }
+ };
+
+ // end constructor
+ }
+
+ _createClass(Matrix, {
+ create: {
+ value: function create(rows, columns) {
+ var _this = this;
+
+ this.pattern = [];
+ for (var row = 0; row < rows; row++) {
+ var arr = new Array(columns);
+ this.pattern.push(arr);
+ }
+ this.iterate(function (r, c) {
+ _this.pattern[r][c] = false;
+ });
+ }
+ },
+ iterate: {
+ value: function iterate(f, f2) {
+ var i = 0;
+ for (var row = 0; row < this.rows; row++) {
+ if (f2) {
+ f2(row);
+ }
+ for (var column = 0; column < this.columns; column++) {
+ f(row, column, i);
+ i++;
+ }
+ }
+ }
+ },
+ formatAsText: {
+ value: function formatAsText() {
+ var _this = this;
+
+ var patternString = "";
+ this.iterate(function (r, c) {
+ patternString += (_this.pattern[r][c] ? 1 : 0) + " ";
+ }, function () {
+ patternString += "\n";
+ });
+ return patternString;
+ }
+ },
+ log: {
+ value: function log() {
+ console.log(this.formatAsText());
+ }
+ },
+ update: {
+ value: function update(pattern) {
+ this.pattern = pattern || this.pattern;
+ }
+ },
+ length: {
+ get: function () {
+ return this.rows * this.columns;
+ }
+ },
+ locate: {
+ value: function locate(index) {
+ // returns row and column of cell by index
+ return {
+ row: ~ ~(index / this.columns),
+ column: index % this.columns
+ };
+ }
+ },
+ indexOf: {
+ value: function indexOf(row, column) {
+ return column + row * this.columns;
+ // returns index of cell by row and column
+ }
+ },
+ row: {
+ value: (function (_row) {
+ var _rowWrapper = function row(_x) {
+ return _row.apply(this, arguments);
+ };
+
+ _rowWrapper.toString = function () {
+ return _row.toString();
+ };
+
+ return _rowWrapper;
+ })(function (row) {
+ var data = [];
+ for (var i = 0; i < this.columns; i++) {
+ data.push(this.pattern[row] ? 1 : 0);
+ }
+ return data;
+ })
+ },
+ column: {
+ value: (function (_column) {
+ var _columnWrapper = function column(_x2) {
+ return _column.apply(this, arguments);
+ };
+
+ _columnWrapper.toString = function () {
+ return _column.toString();
+ };
+
+ return _columnWrapper;
+ })(function (column) {
+ var data = [];
+ for (var i = 0; i < this.rows; i++) {
+ data.push(this.pattern[i][column] ? 1 : 0);
+ }
+ return data;
+ })
+ },
+ rows: {
+ get: function () {
+ return this.pattern.length;
+ },
+ set: function (v) {
+ var _this = this;
+
+ var previous = this.pattern.slice(0);
+ this.create(v, this.columns);
+ this.iterate(function (r, c) {
+ if (previous[r] && previous[r][c]) {
+ _this.pattern[r][c] = previous[r][c];
+ }
+ });
+ }
+ },
+ columns: {
+ get: function () {
+ return this.pattern[0].length;
+ },
+ set: function (v) {
+ var _this = this;
+
+ var previous = this.pattern.slice(0);
+ this.create(this.rows, v);
+ this.iterate(function (r, c) {
+ if (previous[r] && previous[r][c]) {
+ _this.pattern[r][c] = previous[r][c];
+ }
+ });
+ }
+ }
+ });
+
+ return Matrix;
+ })();
+
+ module.exports = Matrix;
+
+/***/ }),
+/* 26 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var math = _interopRequire(__webpack_require__(5));
+
+ var Drunk = _interopRequire(__webpack_require__(27));
+
+ var Sequence = (function () {
+ function Sequence() {
+ var sequence = arguments[0] === undefined ? [0, 10, 20, 30] : arguments[0];
+ var mode = arguments[1] === undefined ? "up" : arguments[1];
+ var position = arguments[2] === undefined ? false : arguments[2];
+
+ _classCallCheck(this, Sequence);
+
+ this.values = sequence;
+ if (!Array.isArray(this.values)) {
+ this.values = [this.values];
+ }
+ this._mode = mode;
+ this.position = position;
+
+ this.drunkWalk = new Drunk(0, this.values.length - 1);
+
+ this.startValues = {
+ up: 0,
+ down: this.values.length - 1,
+ drunk: ~ ~(this.values.length / 2),
+ random: math.ri(this.values.length)
+ };
+
+ if (this.position !== false) {
+ this.next = this[this._mode];
+ } else {
+ this.next = this.first;
+ }
+ }
+
+ _createClass(Sequence, {
+ mode: {
+ get: function () {
+ return this._mode;
+ },
+ set: function (mode) {
+ if (!(mode === "up" || mode === "down" || mode === "random" || mode === "drunk")) {
+ console.error("The only modes currently allowed are: up, down, random, drunk");
+ return;
+ }
+ this._mode = mode;
+ if (this.position) {
+ this.next = this[this._mode];
+ }
+ }
+ },
+ value: {
+ get: function () {
+ return this.values[this.position];
+ },
+ set: function (v) {
+ this.position = this.values.indexOf(v);
+ }
+ },
+ first: {
+ value: function first() {
+ if (this.position !== false) {
+ this.next = this[this._mode];
+ return this.next();
+ }
+ this.position = this.startValues[this._mode];
+ this.next = this[this._mode];
+ return this.value;
+ }
+ },
+ up: {
+ value: function up() {
+ this.position++;
+ this.position %= this.values.length;
+ return this.value;
+ }
+ },
+ down: {
+ value: function down() {
+ this.position--;
+ if (this.position < 0) {
+ this.position = (this.position + this.values.length) % this.values.length;
+ }
+ return this.value;
+ }
+ },
+ random: {
+ value: function random() {
+ this.position = math.ri(0, this.values.length);
+ return this.value;
+ }
+ },
+ drunk: {
+ value: function drunk() {
+ this.drunkWalk.max = this.values.length;
+ this.drunkWalk.value = this.position;
+ this.position = this.drunkWalk.next();
+ return this.value;
+ }
+
+ /* future methods
+ .group(start,stop) -- outputs a group of n items from the list, with wrapping
+ .loop(start,stop) -- confines sequencing to a subset of the values
+ (could even have a distinction between .originalValues and the array of values being used)
+ */
+
+ }
+ });
+
+ return Sequence;
+ })();
+
+ module.exports = Sequence;
+
+/***/ }),
+/* 27 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var math = _interopRequire(__webpack_require__(5));
+
+ var Drunk = (function () {
+ function Drunk() {
+ var min = arguments[0] === undefined ? 0 : arguments[0];
+ var max = arguments[1] === undefined ? 9 : arguments[1];
+ var value = arguments[2] === undefined ? 0 : arguments[2];
+ var increment = arguments[3] === undefined ? 1 : arguments[3];
+ var loop = arguments[4] === undefined ? false : arguments[4];
+
+ _classCallCheck(this, Drunk);
+
+ this.min = min;
+ this.max = max;
+ this.value = value;
+ this.increment = increment;
+ this.loop = loop;
+ }
+
+ _createClass(Drunk, {
+ next: {
+ value: function next() {
+ this.value += math.pick(-1 * this.increment, this.increment);
+ if (this.value > this.max) {
+ if (this.loop) {
+ this.value = this.min;
+ } else {
+ this.value = this.max - this.increment;
+ }
+ }
+
+ if (this.value < this.min) {
+ if (this.loop) {
+ this.value = this.max;
+ } else {
+ this.value = this.min + this.increment;
+ }
+ }
+ return this.value;
+ }
+ }
+ });
+
+ return Drunk;
+ })();
+
+ module.exports = Drunk;
+
+/***/ }),
+/* 28 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var math = _interopRequire(__webpack_require__(5));
+
+ var Drunk = _interopRequire(__webpack_require__(27));
+
+ var Counter = (function () {
+ function Counter() {
+ var min = arguments[0] === undefined ? 0 : arguments[0];
+ var max = arguments[1] === undefined ? 10 : arguments[1];
+ var mode = arguments[2] === undefined ? "up" : arguments[2];
+ var value = arguments[3] === undefined ? false : arguments[3];
+
+ _classCallCheck(this, Counter);
+
+ this.min = min;
+ this.max = max;
+ this.value = value;
+ this.mode = mode;
+ this.drunkWalk = new Drunk(this.min, this.max);
+ if (this.value !== false) {
+ this.next = this[this._mode];
+ } else {
+ this.next = this.first;
+ }
+ }
+
+ _createClass(Counter, {
+ mode: {
+ set: function (mode) {
+ if (!(mode === "up" || mode === "down" || mode === "random" || mode === "drunk")) {
+ console.error("The only modes currently allowed are: up, down, random, drunk");
+ return;
+ }
+ this._mode = mode;
+ if (this.value) {
+ this.next = this[this._mode];
+ }
+ },
+ get: function () {
+ return this._mode;
+ }
+ },
+ first: {
+ value: function first() {
+ if (this.value !== false) {
+ this.next = this[this._mode];
+ return this.next();
+ }
+ this.startValues = {
+ up: this.min,
+ down: this.max,
+ drunk: ~ ~math.average(this.min, this.max),
+ random: math.ri(this.min, this.max)
+ };
+ this.value = this.startValues[this._mode];
+ this.next = this[this._mode];
+ return this.value;
+ }
+ },
+ up: {
+ value: function up() {
+ this.value++;
+ if (this.value >= this.max) {
+ this.value = this.min;
+ }
+ return this.value;
+ }
+ },
+ down: {
+ value: function down() {
+ this.value--;
+ if (this.value < this.min) {
+ this.value = this.max;
+ }
+ return this.value;
+ }
+ },
+ random: {
+ value: function random() {
+ this.value = math.ri(this.min, this.max);
+ return this.value;
+ }
+ },
+ drunk: {
+ value: function drunk() {
+ this.drunkWalk.min = this.min;
+ this.drunkWalk.max = this.max;
+ this.drunkWalk.value = this.value;
+ this.value = this.drunkWalk.next();
+ return this.value;
+ }
+ }
+ });
+
+ return Counter;
+ })();
+
+ module.exports = Counter;
+
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var clock = __webpack_require__(1).clock;
+
+ var Interval = (function () {
+ function Interval(rate, func, on) {
+ _classCallCheck(this, Interval);
+
+ this.rate = rate;
+ this.on = on;
+ this.clock = clock(); // jshint ignore:line
+
+ this.pattern = [1];
+ this.index = 0;
+
+ this.event = func ? func : function () {};
+
+ if (this.on) {
+ this.start();
+ }
+ }
+
+ _createClass(Interval, {
+ _event: {
+ value: function _event(e) {
+ // if (this.pattern[this.index%this.pattern.length]) {
+ this.event(e);
+ // }
+ this.index++;
+ }
+ },
+ stop: {
+ value: function stop() {
+ this.on = false;
+ this.interval.clear();
+ }
+ },
+ start: {
+ value: function start() {
+ this.on = true;
+ this.interval = this.clock.callbackAtTime(this._event.bind(this), this.clock.context.currentTime).repeat(this.rate / 1000).tolerance({ early: 0.1, late: 1 });
+ }
+ },
+ ms: {
+ value: function ms(newrate) {
+ if (this.on) {
+ var ratio = newrate / this.rate;
+ this.rate = newrate;
+ this.clock.timeStretch(this.clock.context.currentTime, [this.interval], ratio);
+ } else {
+ this.rate = newrate;
+ }
+ }
+ }
+ });
+
+ return Interval;
+ })();
+
+ module.exports = Interval;
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { "default": obj }; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var math = __webpack_require__(5);
+ var Interface = __webpack_require__(6);
+ var Step = __webpack_require__(11);
+
+ var Interaction = _interopRequireWildcard(__webpack_require__(12));
+
+ /**
+ * Pan2D
+ *
+ * @description Interface for moving a sound around an array of speakers. Speaker locations can be customized. The interface calculates the closeness of the sound source to each speaker and returns that distance as a numeric value.
+ *
+ * @demo <span nexus-ui="pan2D"></span>
+ *
+ * @example
+ * var pan2d = new Nexus.Pan2d('#target')
+ *
+ * @example
+ * var pan2d = new Nexus.Pan2D('#target',{
+ * 'size': [200,200],
+ * 'range': 0.5, // detection radius of each speaker
+ * 'mode': 'absolute', // 'absolute' or 'relative' sound movement
+ * 'speakers': [ // the speaker [x,y] positions
+ * [0.5,0.2],
+ * [0.75,0.25],
+ * [0.8,0.5],
+ * [0.75,0.75],
+ * [0.5,0.8],
+ * [0.25,0.75]
+ * [0.2,0.5],
+ * [0.25,0.25]
+ * ]
+ * })
+ *
+ * @output
+ * change
+ * Fires any time the "source" node's position changes. <br>
+ * The event data is an array of the amplitudes (0-1), representing the level of each speaker (as calculated by its distance to the audio source).
+ *
+ * @outputexample
+ * pan2d.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ */
+
+ var Pan2D = (function (_Interface) {
+ function Pan2D() {
+ _classCallCheck(this, Pan2D);
+
+ var options = ["range"];
+
+ var defaults = {
+ size: [200, 200],
+ range: 0.5,
+ mode: "absolute",
+ speakers: [[0.5, 0.2], [0.75, 0.25], [0.8, 0.5], [0.75, 0.75], [0.5, 0.8], [0.25, 0.75], [0.2, 0.5], [0.25, 0.25]]
+ };
+
+ _get(Object.getPrototypeOf(Pan2D.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.value = {
+ x: new Step(0, 1, 0, 0.5),
+ y: new Step(0, 1, 0, 0.5)
+ };
+
+ /**
+ Absolute or relative mouse interaction. In "absolute" mode, the source node will jump to your mouse position on mouse click. In "relative" mode, it does not.
+ */
+ this.mode = this.settings.mode;
+
+ this.position = {
+ x: new Interaction.Handle(this.mode, "horizontal", [0, this.width], [this.height, 0]),
+ y: new Interaction.Handle(this.mode, "vertical", [0, this.width], [this.height, 0])
+ };
+ this.position.x.value = this.value.x.normalized;
+ this.position.y.value = this.value.y.normalized;
+
+ /**
+ An array of speaker locations. Update this with .moveSpeaker() or .moveAllSpeakers()
+ */
+ this.speakers = this.settings.speakers;
+
+ /**
+ Rewrite: The maximum distance from a speaker that the source node can be for it to be heard from that speaker. A low range (0.1) will result in speakers only playing when the sound is very close it. Default is 0.5 (half of the interface).
+ */
+ this.range = this.settings.range;
+
+ /**
+ The current levels for each speaker. This is calculated when a source node or speaker node is moved through interaction or programatically.
+ */
+ this.levels = [];
+
+ this.init();
+
+ this.calculateLevels();
+ this.render();
+ }
+
+ _inherits(Pan2D, _Interface);
+
+ _createClass(Pan2D, {
+ buildInterface: {
+ value: function buildInterface() {
+
+ this.knob = svg.create("circle");
+
+ this.element.appendChild(this.knob);
+
+ // add speakers
+ this.speakerElements = [];
+
+ for (var i = 0; i < this.speakers.length; i++) {
+ var speakerElement = svg.create("circle");
+
+ this.element.appendChild(speakerElement);
+
+ this.speakerElements.push(speakerElement);
+ }
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ this._minDimension = Math.min(this.width, this.height);
+
+ this.knobRadius = {
+ off: ~ ~(this._minDimension / 100) * 3 + 5 };
+ this.knobRadius.on = this.knobRadius.off * 2;
+
+ this.knob.setAttribute("cx", this.width / 2);
+ this.knob.setAttribute("cy", this.height / 2);
+ this.knob.setAttribute("r", this.knobRadius.off);
+
+ for (var i = 0; i < this.speakers.length; i++) {
+ var speakerElement = this.speakerElements[i];
+ var speaker = this.speakers[i];
+ speakerElement.setAttribute("cx", speaker[0] * this.width);
+ speakerElement.setAttribute("cy", speaker[1] * this.height);
+ speakerElement.setAttribute("r", this._minDimension / 20 + 5);
+ speakerElement.setAttribute("fill-opacity", "0");
+ }
+
+ this.position.x.resize([0, this.width], [this.height, 0]);
+ this.position.y.resize([0, this.width], [this.height, 0]);
+
+ // next, need to
+ // resize positions
+ // calculate speaker distances
+ this.calculateLevels();
+ this.render();
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+
+ this.element.style.backgroundColor = this.colors.fill;
+ this.knob.setAttribute("fill", this.colors.mediumLight);
+
+ for (var i = 0; i < this.speakers.length; i++) {
+ var speakerElement = this.speakerElements[i];
+ speakerElement.setAttribute("fill", this.colors.accent);
+ speakerElement.setAttribute("stroke", this.colors.accent);
+ }
+ }
+ },
+ render: {
+ value: function render() {
+ this.knobCoordinates = {
+ x: this.value.x.normalized * this.width,
+ y: this.height - this.value.y.normalized * this.height
+ };
+
+ this.knob.setAttribute("cx", this.knobCoordinates.x);
+ this.knob.setAttribute("cy", this.knobCoordinates.y);
+ }
+ },
+ click: {
+ value: function click() {
+ this.position.x.anchor = this.mouse;
+ this.position.y.anchor = this.mouse;
+ this.move();
+ }
+ },
+ move: {
+ value: function move() {
+ if (this.clicked) {
+ this.position.x.update(this.mouse);
+ this.position.y.update(this.mouse);
+ // position.x and position.y are normalized
+ // so are the levels
+ // likely don't need this.value at all -- only used for drawing
+ // not going to be a 'step' or 'min' and 'max' in this one.
+ this.calculateLevels();
+ this.emit("change", this.levels);
+ this.render();
+ }
+ }
+ },
+ release: {
+ value: function release() {
+ this.render();
+ }
+ },
+ normalized: {
+ get: function () {
+ return {
+ x: this.value.x.normalized,
+ y: this.value.y.normalized
+ };
+ }
+ },
+ calculateLevels: {
+ value: function calculateLevels() {
+ var _this = this;
+
+ this.value.x.updateNormal(this.position.x.value);
+ this.value.y.updateNormal(this.position.y.value);
+ this.levels = [];
+ this.speakers.forEach(function (s, i) {
+ var distance = math.distance(s[0] * _this.width, s[1] * _this.height, _this.position.x.value * _this.width, (1 - _this.position.y.value) * _this.height);
+ var level = math.clip(1 - distance / (_this.range * _this.width), 0, 1);
+ _this.levels.push(level);
+ _this.speakerElements[i].setAttribute("fill-opacity", level);
+ });
+ }
+ },
+ moveSource: {
+
+ /**
+ Move the audio source node and trigger the output event.
+ @param x {number} New x location, normalized 0-1
+ @param y {number} New y location, normalized 0-1
+ */
+
+ value: function moveSource(x, y) {
+ var location = {
+ x: x * this.width,
+ y: y * this.height
+ };
+ this.position.x.update(location);
+ this.position.y.update(location);
+ this.calculateLevels();
+ this.emit("change", this.levels);
+ this.render();
+ }
+ },
+ moveSpeaker: {
+
+ /**
+ Move a speaker node and trigger the output event.
+ @param index {number} Index of the speaker to move
+ @param x {number} New x location, normalized 0-1
+ @param y {number} New y location, normalized 0-1
+ */
+
+ value: function moveSpeaker(index, x, y) {
+
+ this.speakers[index] = [x, y];
+ this.speakerElements[index].setAttribute("cx", x * this.width);
+ this.speakerElements[index].setAttribute("cy", y * this.height);
+ this.calculateLevels();
+ this.emit("change", this.levels);
+ this.render();
+ }
+
+ /**
+ Set all speaker locations
+ @param locations {Array} Array of speaker locations. Each item in the array should be an array of normalized x and y coordinates.
+ setSpeakers(locations) {
+ }
+ */
+
+ }
+ });
+
+ return Pan2D;
+ })(Interface);
+
+ module.exports = Pan2D;
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var math = __webpack_require__(5);
+ var svg = __webpack_require__(4);
+ var Interface = __webpack_require__(6);
+
+ /**
+ * Tilt
+ *
+ * @description Device tilt sensor with 2 or 3 axes (depending on your device and browser).
+ *
+ * @demo <span nexus-ui='tilt'></span>
+ *
+ * @example
+ * var tilt = new Nexus.Tilt('#target')
+ *
+ * @output
+ * change
+ * Fires at a regular interval, as long as this interface is active (see the interface's <i>.active</i> property)<br>
+ * The event data is an <i>object</i> containing x (number) and y (number) properties which represent the current tilt state of the device.
+ *
+ * @outputexample
+ * tilt.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ *
+ */
+
+ var Tilt = (function (_Interface) {
+ function Tilt() {
+ _classCallCheck(this, Tilt);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [80, 80]
+ };
+
+ _get(Object.getPrototypeOf(Tilt.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this._active = true;
+
+ this.init();
+
+ // add event listener for device orientation
+
+ this.boundUpdate = this.update.bind(this);
+ // this.boundMozTilt = this.mozTilt.bind(this)
+
+ if (window.DeviceOrientationEvent) {
+ this.orientationListener = window.addEventListener("deviceorientation", this.boundUpdate, false);
+ } else {
+ this._active = false;
+ this.colorInterface();
+ }
+
+ /*else if (window.OrientationEvent) {
+ // window.addEventListener('MozOrientation', this.boundMozTilt, false);
+ } else {
+ console.log('Not supported on your device or browser.');
+ } */
+ }
+
+ _inherits(Tilt, _Interface);
+
+ _createClass(Tilt, {
+ buildInterface: {
+ value: function buildInterface() {
+
+ this.title = svg.create("text");
+ this.circleX = svg.create("circle");
+ this.circleY = svg.create("circle");
+ this.circleZ = svg.create("circle");
+
+ this.barX = svg.create("path");
+ this.barY = svg.create("path");
+ this.barZ = svg.create("path");
+
+ this.barX2 = svg.create("path");
+ this.barY2 = svg.create("path");
+ this.barZ2 = svg.create("path");
+
+ this.barX.setAttribute("opacity", "0.8");
+ this.barY.setAttribute("opacity", "0.8");
+ this.barZ.setAttribute("opacity", "0.8");
+ this.barX2.setAttribute("opacity", "0.8");
+ this.barY2.setAttribute("opacity", "0.8");
+ this.barZ2.setAttribute("opacity", "0.8");
+
+ this.circleX.setAttribute("cx", this.width * 3 / 12);
+ this.circleX.setAttribute("cy", this.height * 3 / 4);
+ this.circleX.setAttribute("r", this.height / 10);
+ this.circleX.setAttribute("opacity", "0.4");
+
+ this.circleY.setAttribute("cx", this.width * 6 / 12);
+ this.circleY.setAttribute("cy", this.height * 3 / 4);
+ this.circleY.setAttribute("r", this.height / 10);
+ this.circleY.setAttribute("opacity", "0.4");
+
+ this.circleZ.setAttribute("cx", this.width * 9 / 12);
+ this.circleZ.setAttribute("cy", this.height * 3 / 4);
+ this.circleZ.setAttribute("r", this.height / 10);
+ this.circleZ.setAttribute("opacity", "0.4");
+
+ this.barX.setAttribute("stroke-width", Math.round(this.height / 30));
+ this.barY.setAttribute("stroke-width", Math.round(this.height / 30));
+ this.barZ.setAttribute("stroke-width", Math.round(this.height / 30));
+
+ this.barX.setAttribute("fill", "none");
+ this.barY.setAttribute("fill", "none");
+ this.barZ.setAttribute("fill", "none");
+
+ this.barX2.setAttribute("stroke-width", Math.round(this.height / 30));
+ this.barY2.setAttribute("stroke-width", Math.round(this.height / 30));
+ this.barZ2.setAttribute("stroke-width", Math.round(this.height / 30));
+
+ this.barX2.setAttribute("fill", "none");
+ this.barY2.setAttribute("fill", "none");
+ this.barZ2.setAttribute("fill", "none");
+
+ this.title.setAttribute("x", this.width / 2);
+ this.title.setAttribute("y", this.height / 3 + 7);
+ this.title.setAttribute("font-size", "15px");
+ this.title.setAttribute("font-weight", "bold");
+ this.title.setAttribute("letter-spacing", "2px");
+ this.title.setAttribute("opacity", "0.7");
+ this.title.setAttribute("text-anchor", "middle");
+ this.title.textContent = "TILT";
+
+ this.element.appendChild(this.circleX);
+ this.element.appendChild(this.circleY);
+ this.element.appendChild(this.circleZ);
+
+ this.element.appendChild(this.barX);
+ this.element.appendChild(this.barY);
+ this.element.appendChild(this.barZ);
+
+ this.element.appendChild(this.barX2);
+ this.element.appendChild(this.barY2);
+ this.element.appendChild(this.barZ2);
+
+ this.element.appendChild(this.title);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+
+ if (this._active) {
+ this.element.style.backgroundColor = this.colors.accent;
+ this.circleX.setAttribute("fill", this.colors.light);
+ this.circleY.setAttribute("fill", this.colors.light);
+ this.circleZ.setAttribute("fill", this.colors.light);
+ this.circleX.setAttribute("stroke", this.colors.light);
+ this.circleY.setAttribute("stroke", this.colors.light);
+ this.circleZ.setAttribute("stroke", this.colors.light);
+ this.barX.setAttribute("stroke", this.colors.light);
+ this.barY.setAttribute("stroke", this.colors.light);
+ this.barZ.setAttribute("stroke", this.colors.light);
+ this.barX2.setAttribute("stroke", this.colors.light);
+ this.barY2.setAttribute("stroke", this.colors.light);
+ this.barZ2.setAttribute("stroke", this.colors.light);
+ this.title.setAttribute("fill", this.colors.light);
+ } else {
+ this.element.style.backgroundColor = this.colors.fill;
+ this.circleX.setAttribute("fill", this.colors.mediumLight);
+ this.circleY.setAttribute("fill", this.colors.mediumLight);
+ this.circleZ.setAttribute("fill", this.colors.mediumLight);
+ this.circleX.setAttribute("stroke", this.colors.mediumLight);
+ this.circleY.setAttribute("stroke", this.colors.mediumLight);
+ this.circleZ.setAttribute("stroke", this.colors.mediumLight);
+ this.barX.setAttribute("stroke", this.colors.mediumLight);
+ this.barY.setAttribute("stroke", this.colors.mediumLight);
+ this.barZ.setAttribute("stroke", this.colors.mediumLight);
+ this.barX2.setAttribute("stroke", this.colors.mediumLight);
+ this.barY2.setAttribute("stroke", this.colors.mediumLight);
+ this.barZ2.setAttribute("stroke", this.colors.mediumLight);
+ this.title.setAttribute("fill", this.colors.mediumLight);
+ }
+ }
+ },
+ update: {
+ value: function update(v) {
+ if (this._active) {
+
+ var y = v.beta;
+ var x = v.gamma;
+ var z = v.alpha;
+
+ // take the original -90 to 90 scale and normalize it 0-1
+ x = math.scale(x, -90, 90, 0, 1);
+ y = math.scale(y, -90, 90, 0, 1);
+ z = math.scale(z, 0, 360, 0, 1);
+
+ var handlePoints = {
+ start: Math.PI * 1.5,
+ end: math.clip(math.scale(x, 0, 0.5, Math.PI * 1.5, Math.PI * 0.5), Math.PI * 0.5, Math.PI * 1.5)
+ };
+ var handle2Points = {
+ start: Math.PI * 2.5,
+ end: math.clip(math.scale(x, 0.5, 1, Math.PI * 2.5, Math.PI * 1.5), Math.PI * 1.5, Math.PI * 2.5)
+ };
+
+ var handlePath = svg.arc(this.circleX.cx.baseVal.value, this.circleX.cy.baseVal.value, this.circleX.r.baseVal.value, handlePoints.start, handlePoints.end);
+ var handle2Path = svg.arc(this.circleX.cx.baseVal.value, this.circleX.cy.baseVal.value, this.circleX.r.baseVal.value, handle2Points.start, handle2Points.end);
+
+ this.barX.setAttribute("d", handlePath);
+ this.barX2.setAttribute("d", handle2Path);
+
+ handlePoints = {
+ start: Math.PI * 1.5,
+ end: math.clip(math.scale(y, 0, 0.5, Math.PI * 1.5, Math.PI * 0.5), Math.PI * 0.5, Math.PI * 1.5)
+ };
+ handle2Points = {
+ start: Math.PI * 2.5,
+ end: math.clip(math.scale(y, 0.5, 1, Math.PI * 2.5, Math.PI * 1.5), Math.PI * 1.5, Math.PI * 2.5)
+ };
+
+ handlePath = svg.arc(this.circleY.cx.baseVal.value, this.circleY.cy.baseVal.value, this.circleY.r.baseVal.value, handlePoints.start, handlePoints.end);
+ handle2Path = svg.arc(this.circleY.cx.baseVal.value, this.circleY.cy.baseVal.value, this.circleY.r.baseVal.value, handle2Points.start, handle2Points.end);
+
+ this.barY.setAttribute("d", handlePath);
+ this.barY2.setAttribute("d", handle2Path);
+
+ handlePoints = {
+ start: Math.PI * 1.5,
+ end: math.clip(math.scale(z, 0, 0.5, Math.PI * 1.5, Math.PI * 0.5), Math.PI * 0.5, Math.PI * 1.5)
+ };
+ handle2Points = {
+ start: Math.PI * 2.5,
+ end: math.clip(math.scale(z, 0.5, 1, Math.PI * 2.5, Math.PI * 1.5), Math.PI * 1.5, Math.PI * 2.5)
+ };
+
+ handlePath = svg.arc(this.circleZ.cx.baseVal.value, this.circleZ.cy.baseVal.value, this.circleZ.r.baseVal.value, handlePoints.start, handlePoints.end);
+ handle2Path = svg.arc(this.circleZ.cx.baseVal.value, this.circleZ.cy.baseVal.value, this.circleZ.r.baseVal.value, handle2Points.start, handle2Points.end);
+
+ this.barZ.setAttribute("d", handlePath);
+ this.barZ2.setAttribute("d", handle2Path);
+
+ /*
+ let pointsX = {
+ start: 0,
+ end: math.scale( x, 0, 1, 0, Math.PI*2 )
+ };
+ // console.log(this.circleX.cx.baseVal.value);
+ let pathX = svg.arc(this.circleX.cx.baseVal.value, this.circleX.cy.baseVal.value, this.circleX.r.baseVal.value*2, pointsX.start, pointsX.end);
+ this.barX.setAttribute('d',pathX); */
+
+ //this.textH.textContent = math.prune(x,2);
+ //this.textV.textContent = math.prune(y,2);
+ //
+ // this.circleX.setAttribute('opacity',x);
+ // this.circleY.setAttribute('opacity',y);
+ // this.circleZ.setAttribute('opacity',z);
+
+ this.emit("change", {
+ x: x,
+ y: y,
+ z: z
+ });
+ }
+ }
+ },
+ click: {
+ value: function click() {
+ if (window.DeviceOrientationEvent) {
+ this.active = !this.active;
+ }
+ }
+ },
+ active: {
+
+ /**
+ Whether the interface is on (emitting values) or off (paused & not emitting values). Setting this property will update it.
+ @type {boolean}
+ */
+
+ get: function () {
+ return this._active;
+ },
+ set: function (on) {
+ this._active = on;
+ this.colorInterface();
+ }
+ },
+ customDestroy: {
+ value: function customDestroy() {
+ window.removeEventListener("deviceorientation", this.boundUpdate, false);
+ }
+ }
+ });
+
+ return Tilt;
+ })(Interface);
+
+ module.exports = Tilt;
+
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var math = __webpack_require__(5);
+ var svg = __webpack_require__(4);
+ var Interface = __webpack_require__(6);
+
+ /**
+ * Multislider
+ *
+ * @description Multislider
+ *
+ * @demo <span nexus-ui="multislider"></span>
+ *
+ * @example
+ * var multislider = new Nexus.Multislider('#target')
+ *
+ * @example
+ * var multislider = new Nexus.Multislider('#target',{
+ * 'size': [200,100],
+ * 'numberOfSliders': 5,
+ * 'min': 0,
+ * 'max': 1,
+ * 'step': 0,
+ * 'candycane': 3,
+ * 'values': [0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1],
+ * 'smoothing': 0,
+ * 'mode': 'bar' // 'bar' or 'line'
+ *})
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * The event data is an object containing <i>index</i> and <i>value</i> properties
+ *
+ * @outputexample
+ * multislider.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ */
+
+ var Multislider = (function (_Interface) {
+ function Multislider() {
+ _classCallCheck(this, Multislider);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [200, 100],
+ numberOfSliders: 5,
+ min: 0,
+ max: 1,
+ step: 0,
+ candycane: 3,
+ values: [0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1],
+ smoothing: 0,
+ mode: "bar" // 'bar', 'line'
+ };
+
+ _get(Object.getPrototypeOf(Multislider.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this._numberOfSliders = this.settings.numberOfSliders;
+ this._min = this.settings.min;
+ this._max = this.settings.max;
+ this._step = this.settings.step;
+
+ this._mode = this.settings.mode;
+
+ /**
+ The current values of the slider. NOTE: Use this only to get the current values. Setting this array will not update the multislider. To set the multislider's values, use setSlider() or setAllSliders()
+ @type {Array}
+ */
+ var vs = this.settings.values;
+ this.values = vs.length > this._numberOfSliders ? vs.slice(0, this._numberOfSliders) : vs.concat(Array(this._numberOfSliders - vs.length).fill(0));
+
+ this.candycane = this.settings.candycane;
+
+ this.sliderWidth = this.width / this.values.length;
+
+ /**
+ Applies a simple low-pass filter to the multislider as it is interacted with. A smoothing of 0 will be no smoothing. A smoothing of 1 will smooth 1 slider on each side of the interaction. A smoothing of 2 will smooth 2 sliders on each side, and so on.
+ @type {Number}
+ */
+ this.smoothing = this.settings.smoothing;
+
+ this.init();
+ this.render();
+ }
+
+ _inherits(Multislider, _Interface);
+
+ _createClass(Multislider, {
+ buildInterface: {
+ value: function buildInterface() {
+ if (this._mode == "line") {
+ this.line = svg.create("polyline");
+ this.line.setAttribute("stroke-width", 2);
+ this.line.setAttribute("fill", "none");
+
+ this.element.appendChild(this.line);
+
+ this.fill = svg.create("polyline");
+ this.fill.setAttribute("fill-opacity", "0.2");
+
+ this.element.appendChild(this.fill);
+
+ this.nodes = [];
+
+ this.values.forEach((function (value, index) {
+ var node = svg.create("circle");
+
+ node.setAttribute("cx", this.getX(index));
+ node.setAttribute("cy", this.getY(value));
+
+ this.element.appendChild(node);
+ this.nodes.push(node);
+ }).bind(this));
+ } else {
+ this.bars = [];
+ this.caps = [];
+
+ this.values.forEach((function (value, index) {
+ var bar = svg.create("rect");
+
+ var x = this.getBarX(index);
+ var y = this.getY(value);
+
+ bar.setAttribute("x", x - 0.1);
+ bar.setAttribute("y", y);
+ bar.setAttribute("width", this.sliderWidth + 0.2);
+ bar.setAttribute("height", this.height);
+ bar.setAttribute("opacity", 1 - (index % this.candycane + 1) / (this.candycane + 1));
+
+ this.element.appendChild(bar);
+ this.bars.push(bar);
+
+ var cap = svg.create("rect");
+
+ cap.setAttribute("x", x - 0.1);
+ cap.setAttribute("y", y);
+ cap.setAttribute("width", this.sliderWidth + 0.2);
+ cap.setAttribute("height", 5);
+
+ this.element.appendChild(cap);
+ this.caps.push(cap);
+ }).bind(this));
+ }
+ }
+ },
+ getBarX: {
+ value: function getBarX(index) {
+ return this.getX(index) - this.sliderWidth / 2;
+ }
+ },
+ getX: {
+ value: function getX(index) {
+ //return Math.floor( index * this.sliderWidth + this.sliderWidth/2 );
+ return index * this.sliderWidth + this.sliderWidth / 2;
+ }
+ },
+ getY: {
+ value: function getY(value) {
+ return math.scale(value, this._min, this._max, this.height, 0); //(1 - value) * this.height;
+ }
+ },
+ getValueFromY: {
+ value: function getValueFromY(y) {
+ var scaleAdjusted = math.scale(y, this.height, 0, this._min, this._max);
+ return this.adjustValueToStep(scaleAdjusted);
+ }
+ },
+ getIndexFromX: {
+ value: function getIndexFromX(x) {
+ return math.clip(Math.floor(x / this.width * this.values.length), 0, this.values.length - 1);
+ }
+ },
+ adjustValueToStep: {
+ value: function adjustValueToStep(value) {
+ if (!this._step) {
+ return value;
+ }
+ var offset = value % this._step;
+ value = value - value % this._step;
+ if (offset > this._step / 2) {
+ value += this._step;
+ }
+ return value;
+ }
+ },
+ adjustAllValues: {
+ value: function adjustAllValues() {
+ this.values.forEach((function (value, index) {
+ value = this.adjustValueToStep(value);
+ this.values[index] = math.clip(value, this._min, this._max);
+ }).bind(this));
+ }
+ },
+ getNormalizedValues: {
+ value: function getNormalizedValues() {
+ this.normalizedValues = [];
+ this.values.forEach((function (value) {
+ this.normalizedValues.push(math.scale(value, this._min, this._max, 0, 1));
+ }).bind(this));
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ var _this = this;
+
+ this.element.style.backgroundColor = this.colors.fill;
+
+ if (this._mode == "line") {
+ this.line.setAttribute("stroke", this.colors.accent);
+ this.fill.setAttribute("fill", this.colors.accent);
+ this.nodes.forEach(function (node) {
+ node.setAttribute("fill", _this.colors.accent);
+ });
+ } else {
+ this.bars.forEach(function (bar) {
+ bar.setAttribute("fill", _this.colors.accent);
+ });
+ this.caps.forEach(function (cap) {
+ cap.setAttribute("fill", _this.colors.accent);
+ });
+ }
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+ this.sliderWidth = this.width / this.values.length;
+
+ if (this._mode == "line") {
+ this.nodes.forEach((function (node) {
+ var r = ~ ~(Math.min(this.width, this.height) / 50) + 2;
+ r = Math.min(this.sliderWidth, r);
+ node.setAttribute("r", r);
+ }).bind(this));
+ }
+
+ this.render();
+ }
+ },
+ render: {
+ value: function render() {
+ var _this = this;
+
+ if (this._mode == "line") {
+ (function () {
+ var data = "0 " + _this.getY(_this.values[0]) + ", ";
+
+ _this.values.forEach(function (value, index) {
+ var x = _this.getX(index);
+ var y = _this.getY(value);
+ data += x + " " + y + ", ";
+ _this.nodes[index].setAttribute("cx", _this.getX(index));
+ _this.nodes[index].setAttribute("cy", _this.getY(value));
+ });
+
+ data += _this.width + " " + _this.getY(_this.values[_this.values.length - 1]);
+
+ _this.line.setAttribute("points", data);
+
+ // fill data
+ // add bottom corners
+
+ data += ", " + _this.width + " " + _this.height + ", ";
+ data += "0 " + _this.height;
+
+ _this.fill.setAttribute("points", data);
+ })();
+ } else {
+ this.values.forEach(function (value, index) {
+ _this.bars[index].setAttribute("y", _this.getY(value));
+ _this.caps[index].setAttribute("y", _this.getY(value));
+ });
+ }
+ }
+ },
+ click: {
+ value: function click() {
+ this.hasMoved = false;
+ this.previousSlider = false;
+ this.move();
+ }
+ },
+ move: {
+ value: function move() {
+ if (this.clicked) {
+ this.mouse.x = math.clip(this.mouse.x, 0, this.width);
+ this.mouse.y = math.clip(this.mouse.y, 0, this.height);
+ this.hasMoved = true;
+
+ this.selectedSlider = this.getIndexFromX(this.mouse.x);
+
+ this.values[this.selectedSlider] = this.getValueFromY(this.mouse.y);
+
+ /* handle interpolation for in-between sliders */
+
+ if (this.previousSlider !== false) {
+ var distance = Math.abs(this.previousSlider - this.selectedSlider);
+ if (distance > 1) {
+ var low = Math.min(this.previousSlider, this.selectedSlider);
+ var high = Math.max(this.previousSlider, this.selectedSlider);
+ var lowValue = this.values[low];
+ var highValue = this.values[high];
+ for (var _i = low; _i < high; _i++) {
+ this.values[_i] = math.interp((_i - low) / distance, lowValue, highValue);
+ this.values[_i] = this.adjustValueToStep(this.values[_i]);
+ }
+ }
+ }
+
+ if (this.smoothing > 0) {
+ for (var i = 1; i <= this.smoothing; i++) {
+ var downCenter = this.selectedSlider - i;
+ var upCenter = this.selectedSlider + i;
+
+ if (downCenter >= 1) {
+ var downLowerNeighbor = downCenter - 1 >= 0 ? downCenter - 1 : 0;
+ var downUpperNeighbor = downCenter + 1;
+ this.values[downCenter] = (this.values[downLowerNeighbor] + this.values[downUpperNeighbor]) / 2;
+ this.values[downCenter] = this.adjustValueToStep(this.values[downCenter]);
+ }
+
+ if (upCenter < this.values.length - 1) {
+ var upLowerNeighbor = upCenter - 1;
+ var upUpperNeighbor = upCenter + 1 < this.values.length ? upCenter + 1 : this.values.length - 1;
+ this.values[upCenter] = (this.values[upLowerNeighbor] + this.values[upUpperNeighbor]) / 2;
+ this.values[upCenter] = this.adjustValueToStep(this.values[upCenter]);
+ }
+ }
+ }
+
+ this.previousSlider = this.selectedSlider;
+
+ this.emit("change", this.values);
+ this.render();
+ }
+ }
+ },
+ scan: {
+
+ // would be a cool API call to have for later...
+
+ value: function scan() {}
+ },
+ update: {
+ value: function update(index, value) {
+ this.values[index] = this.adjustValueToStep(value);
+ this.emit("change", {
+ index: index,
+ value: value
+ });
+ }
+ },
+ numberOfSliders: {
+
+ /**
+ Get the number of sliders
+ @type {Number}
+ */
+
+ get: function () {
+ return this.values.length;
+ }
+ },
+ min: {
+
+ /**
+ Lower limit of the multislider's output range
+ @type {number}
+ @example multislider.min = 1000;
+ */
+
+ get: function () {
+ return this._min;
+ },
+ set: function (v) {
+ this._min = v;
+ this.adjustAllValues();
+ this.render();
+ }
+ },
+ max: {
+
+ /**
+ Upper limit of the multislider's output range
+ @type {number}
+ @example multislider.max = 1000;
+ */
+
+ get: function () {
+ return this._max;
+ },
+ set: function (v) {
+ this._max = v;
+ this.adjustAllValues();
+ this.render();
+ }
+ },
+ step: {
+
+ /**
+ The increment that the multislider's value changes by.
+ @type {number}
+ @example multislider.step = 5;
+ */
+
+ get: function () {
+ return this._step;
+ },
+ set: function (v) {
+ this._step = v;
+ this.adjustAllValues();
+ this.render();
+ }
+ },
+ setSlider: {
+
+ /**
+ Set the value of an individual slider
+ @param index {number} Slider index
+ @param value {number} New slider value
+ @example
+ // Set the first slider to value 0.5
+ multislider.setSlider(0,0.5)
+ */
+
+ value: function setSlider(index, value) {
+ this.values[index] = this.adjustValueToStep(value);
+ this.values[index] = math.clip(this.values[index], this._min, this._max);
+ this.emit("change", {
+ index: index,
+ value: value
+ });
+ }
+ },
+ setAllSliders: {
+
+ /**
+ Set the value of all sliders at once. If the size of the input array does not match the current number of sliders, the value array will repeat until all sliders have been set. I.e. an input array of length 1 will set all sliders to that value.
+ @param values {Array} All slider values
+ @example
+ multislider.setAllSliders([0.2,0.3,0.4,0.5,0.6])
+ */
+
+ value: function setAllSliders(values) {
+ var previousLength = this.values.length;
+ var newLength = values.length;
+ this.values = values;
+ this.adjustAllValues();
+ if (previousLength != newLength) {
+ this.empty();
+ this.buildInterface();
+ this.colorInterface();
+ }
+ this.sizeInterface();
+ }
+ }
+ });
+
+ return Multislider;
+ })(Interface);
+
+ module.exports = Multislider;
+
+/***/ }),
+/* 33 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { "default": obj }; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var svg = __webpack_require__(4);
+ var math = __webpack_require__(5);
+ var Interface = __webpack_require__(6);
+ var Step = __webpack_require__(11);
+
+ var Interaction = _interopRequireWildcard(__webpack_require__(12));
+
+ /**
+ * Pan
+ *
+ * @description Stereo crossfader.
+ *
+ * @demo <span nexus-ui="pan"></span>
+ *
+ * @example
+ * var pan = new Nexus.Pan('#target')
+ *
+ * @output
+ * change
+ * Fires any time the interface's value changes. <br>
+ * The event data is an object containing the interface's <i>value</i> (-1 to 1), as well as <i>L</i> and <i>R</i> amplitude values (0-1) for left and right speakers, calculated by a square-root crossfade algorithm.
+ *
+ * @outputexample
+ * pan.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ *
+ */
+
+ var Pan = (function (_Interface) {
+ function Pan() {
+ _classCallCheck(this, Pan);
+
+ var options = ["scale", "value"];
+
+ var defaults = {
+ size: [120, 20],
+ orientation: "horizontal",
+ mode: "relative",
+ scale: [-1, 1],
+ step: 0,
+ value: 0,
+ hasKnob: true
+ };
+
+ _get(Object.getPrototypeOf(Pan.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.orientation = this.settings.orientation;
+
+ this.mode = this.settings.mode;
+
+ this.hasKnob = this.settings.hasKnob;
+
+ // this.step should eventually be get/set
+ // updating it will update the _value step model
+ this.step = this.settings.step; // float
+
+ this._value = new Step(this.settings.scale[0], this.settings.scale[1], this.settings.step, this.settings.value);
+
+ this.init();
+
+ this.position = new Interaction.Handle(this.mode, this.orientation, [0, this.width], [this.height, 0]);
+ this.position.value = this._value.normalized;
+
+ this.value = this._value.value;
+
+ this.emit("change", this.value);
+ }
+
+ _inherits(Pan, _Interface);
+
+ _createClass(Pan, {
+ buildInterface: {
+ value: function buildInterface() {
+
+ this.bar = svg.create("rect");
+ this.knob = svg.create("circle");
+
+ this.element.appendChild(this.bar);
+ this.element.appendChild(this.knob);
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ if (this.position) {
+ this.position.resize([0, this.width], [this.height, 0]);
+ }
+
+ if (this.width < this.height) {
+ this.orientation = "vertical";
+ } else {
+ this.orientation = "horizontal";
+ }
+
+ var x = undefined,
+ y = undefined,
+ w = undefined,
+ h = undefined,
+ barOffset = undefined,
+ cornerRadius = undefined;
+ this.knobData = {
+ level: 0,
+ r: 0
+ };
+
+ if (this.orientation === "vertical") {
+ this.thickness = this.width / 2;
+ x = this.width / 2;
+ y = 0;
+ w = this.thickness;
+ h = this.height;
+ this.knobData.r = this.thickness * 0.8;
+ this.knobData.level = h - this.knobData.r - this.normalized * (h - this.knobData.r * 2);
+ barOffset = "translate(" + this.thickness * -1 / 2 + ",0)";
+ cornerRadius = w / 2;
+ } else {
+ this.thickness = this.height / 2;
+ x = 0;
+ y = this.height / 2;
+ w = this.width;
+ h = this.thickness;
+ this.knobData.r = this.thickness * 0.8;
+ this.knobData.level = this.normalized * (w - this.knobData.r * 2) + this.knobData.r;
+ barOffset = "translate(0," + this.thickness * -1 / 2 + ")";
+ cornerRadius = h / 2;
+ }
+
+ this.bar.setAttribute("x", x);
+ this.bar.setAttribute("y", y);
+ this.bar.setAttribute("transform", barOffset);
+ this.bar.setAttribute("rx", cornerRadius); // corner radius
+ this.bar.setAttribute("ry", cornerRadius);
+ this.bar.setAttribute("width", w);
+ this.bar.setAttribute("height", h);
+
+ if (this.orientation === "vertical") {
+ this.knob.setAttribute("cx", x);
+ this.knob.setAttribute("cy", this.knobData.level);
+ } else {
+ this.knob.setAttribute("cx", this.knobData.level);
+ this.knob.setAttribute("cy", y);
+ }
+ this.knob.setAttribute("r", this.knobData.r);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+
+ this.bar.setAttribute("fill", this.colors.fill);
+ this.knob.setAttribute("fill", this.colors.accent);
+
+ if (!this.hasKnob) {
+ this.knob.setAttribute("fill", "transparent");
+ }
+ }
+ },
+ render: {
+ value: function render() {
+ if (!this.clicked) {
+ this.knobData.r = this.thickness * 0.75;
+ }
+ this.knob.setAttribute("r", this.knobData.r);
+
+ if (this.orientation === "vertical") {
+ this.knobData.level = this.knobData.r + this._value.normalized * (this.height - this.knobData.r * 2);
+ this.knob.setAttribute("cy", this.height - this.knobData.level);
+ } else {
+ this.knobData.level = this._value.normalized * (this.width - this.knobData.r * 2) + this.knobData.r;
+ this.knob.setAttribute("cx", this.knobData.level);
+ }
+ }
+ },
+ click: {
+ value: function click() {
+ this.knobData.r = this.thickness * 0.9;
+ this.position.anchor = this.mouse;
+ this.move();
+ }
+ },
+ move: {
+ value: function move() {
+ if (this.clicked) {
+ this.position.update(this.mouse);
+
+ this.value = this._value.updateNormal(this.position.value);
+
+ this.emit("change", {
+ value: this.value,
+ L: Math.pow(math.scale(this.value, -1, 1, 1, 0), 2),
+ R: Math.pow(math.scale(this.value, -1, 1, 0, 1), 2)
+ });
+ }
+ }
+ },
+ release: {
+ value: function release() {
+ this.render();
+ }
+ },
+ value: {
+
+ /**
+ The position of crossfader, from -1 (left) to 1 (right). Setting this value updates the interface and triggers the output event.
+ @type {number}
+ */
+
+ get: function () {
+ return this._value.value;
+ },
+ set: function (value) {
+ this._value.update(value);
+ this.position.value = this._value.normalized;
+ this.emit("change", {
+ value: this.value,
+ L: Math.pow(math.scale(this.value, -1, 1, 1, 0), 2),
+ R: Math.pow(math.scale(this.value, -1, 1, 0, 1), 2)
+ });
+ this.render();
+ }
+ },
+ normalized: {
+ get: function () {
+ return this._value.normalized;
+ }
+ }
+ });
+
+ return Pan;
+ })(Interface);
+
+ module.exports = Pan;
+
+/***/ }),
+/* 34 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var math = __webpack_require__(5);
+ var svg = __webpack_require__(4);
+ var Interface = __webpack_require__(6);
+
+ var Point = function Point(point, envelope) {
+
+ this.x = point.x;
+ this.y = point.y;
+
+ this.xMin = point.xMin || 0;
+ this.xMax = point.xMax || 1;
+ this.yMin = point.yMin || 0;
+ this.yMax = point.yMax || 1;
+
+ this.envelope = envelope;
+
+ this.element = svg.create("circle");
+ this.element.setAttribute("fill", this.envelope.colors.accent);
+
+ this.envelope.element.appendChild(this.element);
+
+ this.resize = function () {
+ var r = ~ ~(Math.min(this.envelope.width, this.envelope.height) / 50) + 2;
+ this.element.setAttribute("r", r);
+ };
+
+ this.move = function (x, y) {
+
+ this.x = x || x === 0 ? x : this.x;
+ this.y = y || y === 0 ? y : this.y;
+
+ if (this.envelope.nodes.indexOf(this) >= 0) {
+
+ var prevIndex = this.envelope.nodes.indexOf(this) - 1;
+ var nextIndex = this.envelope.nodes.indexOf(this) + 1;
+
+ var prevNode = this.envelope.nodes[prevIndex];
+ var nextNode = this.envelope.nodes[nextIndex];
+
+ var lowX = prevIndex >= 0 ? prevNode.x : 0;
+ lowX = lowX < this.xMin ? this.xMin : lowX;
+
+ var highX = nextIndex < this.envelope.nodes.length ? nextNode.x : 1;
+ highX = highX > this.xMax ? this.xMax : highX;
+
+ if (this.x < lowX) {
+ this.x = lowX;
+ }
+ if (this.x > highX) {
+ this.x = highX;
+ }
+
+ if (this.y < this.yMin) {
+ this.y = this.yMin;
+ }
+ if (this.y > this.yMax) {
+ this.y = this.yMax;
+ }
+ }
+
+ this.location = this.getCoordinates();
+ this.element.setAttribute("cx", this.location.x);
+ this.element.setAttribute("cy", this.location.y);
+ };
+
+ this.getCoordinates = function () {
+ return {
+ x: this.x * this.envelope.width,
+ y: (1 - this.y) * this.envelope.height
+ };
+ };
+
+ this.move(this.x, this.y, true);
+ this.resize();
+
+ this.destroy = function () {
+ this.envelope.element.removeChild(this.element);
+ this.envelope.nodes.splice(this.envelope.nodes.indexOf(this), 1);
+ };
+ };
+
+ /**
+ * Envelope
+ *
+ * @description Interactive linear ramp visualization.
+ *
+ * @demo <span nexus-ui="envelope"></span>
+ *
+ * @example
+ * var envelope = new Nexus.Envelope('#target')
+ *
+ * @example
+ * var envelope = new Nexus.Envelope('#target',{
+ * 'size': [300,150],
+ * 'noNewPoints': false,
+ * 'points': [
+ * {
+ * x: 0.1,
+ * y: 0.4
+ * },
+ * {
+ * x: 0.35,
+ * y: 0.6
+ * },
+ * {
+ * x: 0.65,
+ * y: 0.2
+ * },
+ * {
+ * x: 0.9,
+ * y: 0.4
+ * },
+ * ]
+ * })
+ *
+ * @output
+ * change
+ * Fires any time a node is moved. <br>
+ * The event data is an array of point locations. Each item in the array is an object containing <i>x</i> and <i>y</i> properties describing the location of a point on the envelope.
+ *
+ * @outputexample
+ * envelope.on('change',function(v) {
+ * console.log(v);
+ * })
+ *
+ */
+
+ var Envelope = (function (_Interface) {
+ function Envelope() {
+ _classCallCheck(this, Envelope);
+
+ var options = ["value"];
+
+ var defaults = {
+ size: [300, 150],
+ noNewPoints: false,
+ points: [{
+ x: 0.1,
+ y: 0.4
+ }, {
+ x: 0.35,
+ y: 0.6
+ }, {
+ x: 0.65,
+ y: 0.2
+ }, {
+ x: 0.9,
+ y: 0.4
+ }]
+ };
+
+ _get(Object.getPrototypeOf(Envelope.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.points = this.settings.points;
+
+ this.nodes = [];
+
+ this.selected = false;
+
+ this.init();
+ }
+
+ _inherits(Envelope, _Interface);
+
+ _createClass(Envelope, {
+ buildInterface: {
+ value: function buildInterface() {
+ var _this = this;
+
+ this.points.forEach(function (point) {
+ var node = new Point(point, _this);
+ _this.nodes.push(node);
+ });
+
+ this.sortPoints();
+
+ this.line = svg.create("polyline");
+ this.line.setAttribute("stroke-width", 2);
+ this.line.setAttribute("fill", "none");
+
+ this.element.appendChild(this.line);
+
+ this.fill = svg.create("polyline");
+ this.fill.setAttribute("fill-opacity", "0.2");
+
+ this.element.appendChild(this.fill);
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+
+ for (var i = 0; i < this.nodes.length; i++) {
+ this.nodes[i].resize();
+ this.nodes[i].move();
+ }
+
+ this.render();
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ var _this = this;
+
+ this.element.style.backgroundColor = this.colors.fill;
+ this.line.setAttribute("stroke", this.colors.accent);
+ this.fill.setAttribute("fill", this.colors.accent);
+ this.nodes.forEach(function (node) {
+ node.element.setAttribute("fill", _this.colors.accent);
+ });
+ }
+ },
+ render: {
+ value: function render() {
+ // this.nodes[this.selected].move( this.points )
+ this.calculatePath();
+ }
+ },
+ calculatePoints: {
+ value: function calculatePoints() {
+ var _this = this;
+
+ this.points = [];
+ this.nodes.forEach(function (node) {
+ _this.points.push({ x: node.x, y: node.y });
+ });
+ }
+ },
+ calculatePath: {
+ value: function calculatePath() {
+
+ //stroke data
+ var data = "0 " + this.nodes[0].location.y + ", ";
+
+ // data should be re-ordered based on x location.
+ // whatever function adds a node should add it at the right index
+
+ this.nodes.forEach(function (node) {
+ // let location = node.getCoordinates();
+ data += node.location.x + " " + node.location.y + ", ";
+ });
+
+ // data += point.x*this.width+' '+ point.y*this.height+', ';
+ data += this.width + " " + this.nodes[this.nodes.length - 1].location.y;
+
+ this.line.setAttribute("points", data);
+
+ // fill data
+ // add bottom corners
+
+ data += ", " + this.width + " " + this.height + ", ";
+ data += "0 " + this.height;
+
+ this.fill.setAttribute("points", data);
+ }
+ },
+ click: {
+ value: function click() {
+ // find nearest node and set this.selected (index)
+ this.hasMoved = false;
+ this.selected = this.findNearestNode();
+
+ this.nodes[this.selected].move(this.mouse.x / this.width, 1 - this.mouse.y / this.height);
+ this.scaleNode(this.selected);
+
+ // must do this b/c new node may have been created
+ this.calculatePoints();
+ this.emit("change", this.points);
+ this.render();
+ }
+ },
+ move: {
+ value: function move() {
+ if (this.clicked) {
+ this.mouse.x = math.clip(this.mouse.x, 0, this.width);
+ this.hasMoved = true;
+
+ this.nodes[this.selected].move(this.mouse.x / this.width, 1 - this.mouse.y / this.height);
+ this.scaleNode(this.selected);
+
+ this.calculatePoints();
+ this.emit("change", this.points);
+ this.render();
+ }
+ }
+ },
+ release: {
+ value: function release() {
+
+ if (!this.hasMoved) {
+ this.nodes[this.selected].destroy();
+ }
+
+ this.calculatePoints();
+ this.emit("change", this.points);
+ this.render();
+
+ // reset this.selected
+ this.selected = null;
+ }
+ },
+ findNearestNode: {
+ value: function findNearestNode() {
+ var nearestIndex = null;
+ // set this unreasonably high so that every distance will be lower than it.
+ var nearestDist = 10000;
+ var before = false;
+ var x = this.mouse.x / this.width;
+ var y = 1 - this.mouse.y / this.height;
+ var nodes = this.nodes;
+ for (var i = 0; i < nodes.length; i++) {
+
+ // calculate the distance from mouse to this node using pythagorean theorem
+ var distance = Math.sqrt(Math.pow(nodes[i].x - x, 2) + Math.pow(nodes[i].y - y, 2));
+
+ // if this distance is less than the previous shortest distance, use this index
+ if (distance < nearestDist) {
+ nearestDist = distance;
+ nearestIndex = i;
+ before = x > nodes[i].x;
+ }
+ }
+
+ // if not very close to any node, create a node
+ if (!this.settings.noNewPoints && nearestDist > 0.07) {
+
+ nearestIndex = this.getIndexFromX(this.mouse.x / this.width);
+
+ this.nodes.splice(nearestIndex, 0, new Point({
+ x: this.mouse.x / this.width,
+ y: 1 - this.mouse.y / this.height
+ }, this));
+ this.hasMoved = true;
+ }
+
+ return nearestIndex;
+ }
+ },
+ getIndexFromX: {
+ value: function getIndexFromX(x) {
+ var _this = this;
+
+ var index = 0;
+ this.nodes.forEach(function (node, i) {
+ if (_this.nodes[i].x <= x) {
+ index = i + 1;
+ }
+ });
+ return index;
+ }
+ },
+ scaleNode: {
+ value: function scaleNode(i) {
+
+ var clippedX = math.clip(this.nodes[i].x, 0, 1);
+ var clippedY = math.clip(this.nodes[i].y, 0, 1);
+
+ this.nodes[i].move(clippedX, clippedY);
+ }
+ },
+ sortPoints: {
+
+ /**
+ Sort the this.points array from left-most point to right-most point. You should not regularly need to use this, however it may be useful if the points get unordered.
+ */
+
+ value: function sortPoints() {
+ this.nodes.sort(function (a, b) {
+ return a.x > b.x;
+ });
+ }
+ },
+ addPoint: {
+
+ /**
+ Add a breakpoint on the envelope.
+ @param x {number} x location of the point, normalized (0-1)
+ @param y {number} y location of the point, normalized (0-1)
+ */
+
+ value: function addPoint(x, y) {
+ var index = this.nodes.length;
+
+ this.sortPoints();
+
+ for (var i = 0; i < this.nodes.length; i++) {
+ if (x < this.nodes[i].x) {
+ index = i;
+ break;
+ }
+ }
+
+ this.nodes.splice(index, 0, new Point({
+ x: x,
+ y: y
+ }, this));
+
+ this.scaleNode(index);
+
+ this.calculatePoints();
+ this.emit("change", this.points);
+
+ this.render();
+ }
+ },
+ scan: {
+
+ /**
+ Find the level at a certain x location on the envelope.
+ @param x {number} The x location to find the level of, normalized 0-1
+ */
+
+ value: function scan(x) {
+ // find surrounding points
+ var nextIndex = this.getIndexFromX(x);
+ var priorIndex = nextIndex - 1;
+ if (priorIndex < 0) {
+ priorIndex = 0;
+ }
+ if (nextIndex >= this.nodes.length) {
+ nextIndex = this.nodes.length - 1;
+ }
+ var priorPoint = this.nodes[priorIndex];
+ var nextPoint = this.nodes[nextIndex];
+ var loc = math.scale(x, priorPoint.x, nextPoint.x, 0, 1);
+ var value = math.interp(loc, priorPoint.y, nextPoint.y);
+ this.emit("scan", value);
+ return value;
+ }
+ },
+ movePoint: {
+
+ /**
+ Move a breakpoint on the envelope.
+ @param index {number} The index of the breakpoint to move
+ @param x {number} New x location, normalized 0-1
+ @param y {number} New y location, normalized 0-1
+ */
+
+ value: function movePoint(index, x, y) {
+ this.nodes[index].move(x, y);
+ this.scaleNode(index);
+ this.calculatePoints();
+ this.emit("change", this.points);
+ this.render();
+ }
+ },
+ adjustPoint: {
+
+ /**
+ Move a breakpoint on the envelope by a certain amount.
+ @param index {number} The index of the breakpoint to move
+ @param xOffset {number} X displacement, normalized 0-1
+ @param yOffset {number} Y displacement, normalized 0-1
+ */
+
+ value: function adjustPoint(index, xOffset, yOffset) {
+ this.nodes[index].move(this.nodes[index].x + xOffset, this.nodes[index].y + yOffset);
+ this.scaleNode(index);
+ this.calculatePoints();
+ this.emit("change", this.points);
+ this.render();
+ }
+ },
+ destroyPoint: {
+
+ /**
+ Remove a breakpoint from the envelope.
+ @param index {number} Index of the breakpoint to remove
+ */
+
+ value: function destroyPoint(index) {
+ this.nodes[index].destroy();
+ this.calculatePoints();
+ this.emit("change", this.points);
+ this.render();
+ }
+ },
+ setPoints: {
+
+ /**
+ Remove all existing breakpoints and add an entirely new set of breakpoints.
+ @param allPoints {array} An array of objects with x/y properties (normalized 0-1). Each object in the array specifices the x/y location of a new breakpoint to be added.
+ */
+
+ value: function setPoints(allPoints) {
+ var _this = this;
+
+ while (this.nodes.length) {
+ this.nodes[0].destroy();
+ }
+ allPoints.forEach(function (point) {
+ _this.addPoint(point.x, point.y);
+ });
+ this.calculatePoints();
+ this.emit("change", this.points);
+ this.render();
+ }
+ }
+ });
+
+ return Envelope;
+ })(Interface);
+
+ module.exports = Envelope;
+
+/***/ }),
+/* 35 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var dom = __webpack_require__(7);
+ var Interface = __webpack_require__(6);
+
+ /**
+ * Spectrogram
+ *
+ * @description Audio spectrum visualization
+ *
+ * @demo <span nexus-ui="spectrogram"></span>
+ *
+ * @example
+ * var spectrogram = new Nexus.Spectrogram('#target')
+ * spectrogram.connect(myWebAudioNode)
+ *
+ * @example
+ * var spectrogram = new Nexus.Spectrogram('#target',{
+ * 'size': [300,150]
+ * })
+ * spectrogram.connect(myWebAudioNode)
+ *
+ * @output
+ * &nbsp;
+ * No events
+ *
+ */
+
+ var Spectrogram = (function (_Interface) {
+ function Spectrogram() {
+ _classCallCheck(this, Spectrogram);
+
+ var options = [];
+
+ var defaults = {
+ size: [300, 150]
+ };
+
+ _get(Object.getPrototypeOf(Spectrogram.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.analyser = null;
+ this.bufferLength = 0;
+ this.dataArray = null;
+ this.active = false;
+ this.source = null;
+
+ this.init();
+ }
+
+ _inherits(Spectrogram, _Interface);
+
+ _createClass(Spectrogram, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.canvas = new dom.SmartCanvas(this.parent);
+ this.element = this.canvas.element;
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+ this.canvas.resize(this.width, this.height);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.canvas.element.style.backgroundColor = this.colors.fill;
+ }
+ },
+ render: {
+ value: function render() {
+ if (this.active) {
+ requestAnimationFrame(this.render.bind(this));
+ }
+
+ if (this.analyser) {
+ this.analyser.getByteFrequencyData(this.dataArray);
+ }
+
+ this.canvas.context.fillStyle = this.colors.fill;
+ this.canvas.context.fillRect(0, 0, this.canvas.element.width, this.canvas.element.height);
+
+ if (this.source && this.dataArray) {
+ //console.log(this.dataArray);
+
+ var barWidth = this.canvas.element.width / this.bufferLength;
+ var barHeight = undefined;
+ var x = 0;
+
+ var definition = this.canvas.element.width / 50;
+
+ for (var i = 0; i < this.bufferLength; i = i + definition) {
+ barHeight = Math.max.apply(null, this.dataArray.subarray(i, i + definition));
+ barHeight /= 255;
+ barHeight *= this.canvas.element.height;
+
+ this.canvas.context.fillStyle = this.colors.accent;
+ this.canvas.context.fillRect(x, this.canvas.element.height - barHeight, barWidth * definition, barHeight);
+
+ x += barWidth * definition;
+ }
+ }
+ }
+ },
+ connect: {
+
+ /**
+ Equivalent to "patching in" an audio node to visualize.
+ @param node {AudioNode} The audio node to visualize
+ @example spectrogram.connect( Tone.Master );
+ */
+
+ value: function connect(node) {
+ if (this.source) {
+ this.disconnect();
+ }
+
+ this.analyser = node.context.createAnalyser();
+ this.analyser.fftSize = 2048;
+ this.bufferLength = this.analyser.frequencyBinCount;
+ this.dataArray = new Uint8Array(this.bufferLength);
+
+ this.active = true;
+
+ this.source = node;
+ this.source.connect(this.analyser);
+
+ this.render();
+ }
+ },
+ disconnect: {
+
+ /**
+ Stop visualizing the source node and disconnect it.
+ */
+
+ value: function disconnect() {
+ if (this.source) {
+ this.source.disconnect(this.analyser);
+ }
+
+ this.analyser = null;
+ this.bufferLength = 0;
+ this.dataArray = null;
+ this.active = false;
+ this.source = null;
+ }
+ },
+ click: {
+ value: function click() {
+ this.active = !this.active && this.source;
+ this.render();
+ }
+ },
+ customDestroy: {
+ value: function customDestroy() {
+ this.active = false;
+ }
+ }
+ });
+
+ return Spectrogram;
+ })(Interface);
+
+ module.exports = Spectrogram;
+
+/***/ }),
+/* 36 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var dom = __webpack_require__(7);
+ var math = __webpack_require__(5);
+ var Interface = __webpack_require__(6);
+
+ /**
+ * Meter
+ *
+ * @description Stereo decibel meter
+ *
+ * @demo <span nexus-ui="meter"></span>
+ *
+ * @example
+ * var meter = new Nexus.Meter('#target')
+ * meter.connect(myWebAudioNode)
+ *
+ * @example
+ * var meter = new Nexus.Meter('#target', {
+ * size: [75,75]
+ * })
+ * meter.connect(myWebAudioNode)
+ *
+ * @output
+ * &nbsp;
+ * No events
+ *
+ */
+
+ var Meter = (function (_Interface) {
+ function Meter() {
+ _classCallCheck(this, Meter);
+
+ var options = [];
+
+ var defaults = {
+ size: [30, 100]
+ };
+
+ _get(Object.getPrototypeOf(Meter.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.channels = 2;
+ this.splitter = null;
+ this.analysers = [];
+ this.bufferLength = 0;
+ this.dataArray = null;
+ this.active = false;
+ this.source = null;
+ this.db = -Infinity;
+
+ this.init();
+
+ this.meterWidth = this.canvas.element.width / this.channels;
+
+ this.render();
+ }
+
+ _inherits(Meter, _Interface);
+
+ _createClass(Meter, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.canvas = new dom.SmartCanvas(this.parent);
+ this.element = this.canvas.element;
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+ this.canvas.resize(this.width, this.height);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.canvas.element.style.backgroundColor = this.colors.fill;
+ }
+ },
+ render: {
+ value: function render() {
+ if (this.active) {
+ requestAnimationFrame(this.render.bind(this));
+ }
+
+ this.canvas.context.fillStyle = this.colors.fill;
+ this.canvas.context.fillRect(0, 0, this.canvas.element.width, this.canvas.element.height);
+
+ for (var i = 0; i < this.analysers.length; i++) {
+ if (this.source) {
+ this.analysers[i].getFloatTimeDomainData(this.dataArray);
+
+ var rms = 0;
+
+ for (var _i = 0; _i < this.dataArray.length; _i++) {
+ rms += this.dataArray[_i] * this.dataArray[_i];
+ }
+
+ rms = Math.sqrt(rms / this.dataArray.length);
+
+ this.db = 20 * Math.log10(rms);
+ } else if (this.db > -200 && this.db !== -Infinity) {
+ this.db -= 1;
+ } else {
+ this.db = -Infinity;
+ }
+
+ //console.log(db)
+
+ if (this.db > -70) {
+ var linear = math.normalize(this.db, -70, 5);
+ var exp = linear * linear;
+ var y = math.scale(exp, 0, 1, this.element.height, 0);
+
+ this.canvas.context.fillStyle = this.colors.accent;
+ this.canvas.context.fillRect(this.meterWidth * i, y, this.meterWidth, this.canvas.element.height - y);
+
+ //console.log("rendering...")
+ }
+ }
+ }
+ },
+ connect: {
+
+ /**
+ Equivalent to "patching in" an audio node to visualize.
+ @param node {AudioNode} The audio node to visualize
+ @param channels {number} (optional) The number of channels in the source node to watch. If not specified, the interface will look for a .channelCount property on the input node. If it does not exist, the interface will default to 1 channel.
+ @example meter.connect( Tone.Master, 2 );
+ */
+
+ value: function connect(node, channels) {
+ if (this.source) {
+ this.disconnect();
+ }
+
+ this.channels = channels || node.channelCount || 2;
+
+ this.splitter = node.context.createChannelSplitter(this.channels);
+
+ this.analysers = [];
+ for (var i = 0; i < this.channels; i++) {
+ var analyser = node.context.createAnalyser();
+ analyser.fftSize = 1024;
+ analyser.smoothingTimeConstant = 1;
+ this.splitter.connect(analyser, i);
+ this.analysers.push(analyser);
+ }
+ this.bufferLength = this.analysers[0].frequencyBinCount;
+ this.dataArray = new Float32Array(this.bufferLength);
+
+ this.active = true;
+
+ this.meterWidth = this.canvas.element.width / this.channels;
+
+ this.source = node;
+ this.source.connect(this.splitter);
+
+ this.render();
+ }
+ },
+ disconnect: {
+
+ /**
+ Stop visualizing the source node and disconnect it.
+ */
+
+ value: function disconnect() {
+ if (this.source) {
+ this.source.disconnect(this.splitter);
+ }
+
+ this.splitter = null;
+ this.analysers = [];
+ this.bufferLength = 0;
+ this.dataArray = null;
+ this.active = false;
+ this.source = null;
+ }
+ },
+ click: {
+ value: function click() {
+ this.active = !this.active && this.source;
+ this.render();
+ }
+ },
+ customDestroy: {
+ value: function customDestroy() {
+ this.active = false;
+ }
+ }
+ });
+
+ return Meter;
+ })(Interface);
+
+ module.exports = Meter;
+
+/***/ }),
+/* 37 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+ var _inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) subClass.__proto__ = superClass; };
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var dom = __webpack_require__(7);
+ var Interface = __webpack_require__(6);
+
+ /**
+ * Oscilloscope
+ *
+ * @description Visualizes a waveform's stream of values.
+ *
+ * @demo <span nexus-ui="oscilloscope"></span>
+ *
+ * @example
+ * var oscilloscope = new Nexus.Oscilloscope('#target')
+ * oscilloscope.connect(myWebAudioNode)
+ *
+ * @example
+ * var oscilloscope = new Nexus.Oscilloscope('#target',{
+ * 'size': [300,150]
+ * })
+ * oscilloscope.connect(myWebAudioNode)
+ *
+ * @output
+ * &nbsp;
+ * No events
+ *
+ */
+
+ var Oscilloscope = (function (_Interface) {
+ function Oscilloscope() {
+ _classCallCheck(this, Oscilloscope);
+
+ var options = [];
+
+ var defaults = {
+ size: [300, 150]
+ };
+
+ _get(Object.getPrototypeOf(Oscilloscope.prototype), "constructor", this).call(this, arguments, options, defaults);
+
+ this.analyser = null;
+ this.bufferLength = 0;
+ this.dataArray = null;
+
+ this.active = false;
+
+ this.source = null;
+
+ this.init();
+
+ this.render();
+ }
+
+ _inherits(Oscilloscope, _Interface);
+
+ _createClass(Oscilloscope, {
+ buildFrame: {
+ value: function buildFrame() {
+ this.canvas = new dom.SmartCanvas(this.parent);
+ this.element = this.canvas.element;
+ }
+ },
+ sizeInterface: {
+ value: function sizeInterface() {
+ this.canvas.resize(this.width, this.height);
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ this.canvas.element.style.backgroundColor = this.colors.fill;
+ }
+ },
+ render: {
+ value: function render() {
+ if (this.active) {
+ requestAnimationFrame(this.render.bind(this));
+ }
+
+ if (this.analyser) {
+ this.analyser.getByteTimeDomainData(this.dataArray);
+ }
+
+ this.canvas.context.fillStyle = this.colors.fill;
+ this.canvas.context.fillRect(0, 0, this.canvas.element.width, this.canvas.element.height);
+
+ this.canvas.context.lineWidth = ~ ~(this.height / 100 + 2);
+ this.canvas.context.strokeStyle = this.colors.accent;
+
+ this.canvas.context.beginPath();
+
+ if (this.source) {
+ var sliceWidth = this.canvas.element.width * 1 / this.bufferLength;
+ var x = 0;
+
+ for (var i = 0; i < this.bufferLength; i++) {
+ var v = this.dataArray[i] / 128;
+ var y = v * this.canvas.element.height / 2;
+
+ if (i === 0) {
+ this.canvas.context.moveTo(x, y);
+ } else {
+ this.canvas.context.lineTo(x, y);
+ }
+
+ x += sliceWidth;
+ }
+ } else {
+ this.canvas.context.moveTo(0, this.canvas.element.height / 2);
+ this.canvas.context.lineTo(this.canvas.element.width, this.canvas.element.height / 2);
+ }
+
+ this.canvas.context.stroke();
+ }
+ },
+ connect: {
+
+ /**
+ Equivalent to "patching in" an audio node to visualize.
+ @param node {AudioNode} The audio node to visualize
+ @example oscilloscope.connect( Tone.Master );
+ */
+
+ value: function connect(node) {
+ if (this.source) {
+ this.disconnect();
+ }
+
+ this.analyser = node.context.createAnalyser();
+ this.analyser.fftSize = 2048;
+ this.bufferLength = this.analyser.frequencyBinCount;
+ this.dataArray = new Uint8Array(this.bufferLength);
+ this.analyser.getByteTimeDomainData(this.dataArray);
+
+ this.active = true;
+
+ this.source = node;
+ this.source.connect(this.analyser);
+
+ this.render();
+ }
+ },
+ disconnect: {
+
+ /**
+ Stop visualizing the source node and disconnect it.
+ */
+
+ value: function disconnect() {
+ if (this.source) {
+ this.source.disconnect(this.analyser);
+ }
+
+ this.analyser = null;
+ this.bufferLength = 0;
+ this.dataArray = null;
+ this.active = false;
+ this.source = null;
+ }
+ },
+ click: {
+ value: function click() {
+ this.active = !this.active && this.source;
+ this.render();
+ }
+ },
+ customDestroy: {
+ value: function customDestroy() {
+ this.active = false;
+ }
+ }
+ });
+
+ return Oscilloscope;
+ })(Interface);
+
+ module.exports = Oscilloscope;
+
+/***/ }),
+/* 38 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? obj : { "default": obj }; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ /*
+ Main concept:
+ synth = new Nexus.Rack('elementID');
+
+ Transform all elements inside the div
+ synth.elementID will hold the first slider interface
+
+ 2) In future, potentially writing a rack that is re-usable?
+ Could also take JSON
+
+ new Nexus.Rack('#target',{
+ pre: () => {
+ create some divs here, or some audio code
+ },
+ interface: {
+ slider1: Nexus.add.slider({
+ top:10,
+ left:10,
+ width:50,
+ height:100,
+ min: 0,
+ max: 100,
+ step: 1
+ }),
+ wave1: Nexus.add.waveform({
+ file: './path/to/file.mp3',
+ width:500,
+ height:100,
+ mode: 'range'
+ })
+ },
+ init: () => {
+ // some audio init code goes here...
+ }
+ });
+
+ */
+
+ var transform = _interopRequireWildcard(__webpack_require__(39));
+
+ var dom = _interopRequire(__webpack_require__(7));
+
+ var colors = __webpack_require__(1).colors;
+
+ var Rack = (function () {
+ function Rack(target, settings) {
+ _classCallCheck(this, Rack);
+
+ this.meta = {};
+ this.meta.target = target;
+ this.meta.parent = dom.parseElement(target); // should be a generic function for parsing a 'target' argument that checks for string/DOM/jQUERY
+ this.meta.colors = {};
+
+ if (settings) {
+ this.meta.attribute = settings.attribute || "nexus-ui";
+ this.meta.title = settings.name || false;
+ this.meta.open = settings.open || false;
+ } else {
+ this.meta.attribute = "nexus-ui";
+ this.meta.title = false;
+ this.meta.open = false;
+ }
+
+ var defaultColors = colors(); // jshint ignore:line
+ this.meta.colors.accent = defaultColors.accent;
+ this.meta.colors.fill = defaultColors.fill;
+ this.meta.colors.light = defaultColors.light;
+ this.meta.colors.dark = defaultColors.dark;
+ this.meta.colors.mediumLight = defaultColors.mediumLight;
+ this.meta.colors.mediumDark = defaultColors.mediumDark;
+ this.buildInterface();
+ this.colorInterface();
+ }
+
+ _createClass(Rack, {
+ buildInterface: {
+ value: function buildInterface() {
+ var _this = this;
+
+ this.meta.parent.style.boxSizing = "border-box";
+ this.meta.parent.style.userSelect = "none";
+ this.meta.parent.style.mozUserSelect = "none";
+ this.meta.parent.style.webkitUserSelect = "none";
+
+ this.meta.contents = document.createElement("div");
+
+ while (this.meta.parent.childNodes.length > 0) {
+ this.meta.contents.appendChild(this.meta.parent.childNodes[0]);
+ }
+
+ this.meta.contents.style.padding = "0px";
+ this.meta.contents.style.boxSizing = "border-box";
+
+ if (this.meta.title) {
+ this.meta.titleBar = document.createElement("div");
+ this.meta.titleBar.innerHTML = this.meta.title;
+ this.meta.titleBar.style.fontFamily = "arial";
+ this.meta.titleBar.style.position = "relative";
+ this.meta.titleBar.style.color = "#888";
+ this.meta.titleBar.style.padding = "7px";
+ this.meta.titleBar.style.fontSize = "12px";
+
+ this.meta.button = document.createElement("div");
+ this.meta.button.style.position = "absolute";
+ this.meta.button.style.top = "5px";
+ this.meta.button.style.right = "5px";
+ this.meta.button.innerHTML = "-";
+ this.meta.button.style.padding = "0px 5px 2px";
+ this.meta.button.style.lineHeight = "12px";
+ this.meta.button.style.fontSize = "15px";
+
+ this.meta.button.style.cursor = "pointer";
+
+ this.meta.button.addEventListener("mouseover", function () {
+ _this.meta.button.style.backgroundColor = _this.meta.colors.mediumDark;
+ });
+ this.meta.button.addEventListener("mouseleave", function () {
+ _this.meta.button.style.backgroundColor = _this.meta.colors.mediumLight;
+ });
+ this.meta.button.addEventListener("click", function () {
+ if (_this.meta.open) {
+ _this.hide();
+ } else {
+ _this.show();
+ }
+ });
+
+ this.meta.titleBar.appendChild(this.meta.button);
+
+ this.meta.parent.appendChild(this.meta.titleBar);
+ }
+ this.meta.parent.appendChild(this.meta.contents);
+
+ // var width = this.meta.parent.style.width = getComputedStyle(this.meta.parent).getPropertyValue('width');
+ // this.meta.parent.style.width = width;
+
+ var ui = transform.section(this.meta.target, this.meta.attribute);
+ for (var key in ui) {
+ this[key] = ui[key];
+ }
+ }
+ },
+ colorInterface: {
+ value: function colorInterface() {
+ if (this.meta.title) {
+ this.meta.button.style.backgroundColor = this.meta.colors.mediumLight;
+ this.meta.button.style.border = "solid 0px " + this.meta.colors.fill;
+ this.meta.parent.style.border = "solid 1px " + this.meta.colors.mediumLight;
+ this.meta.parent.style.backgroundColor = this.meta.colors.light;
+ this.meta.titleBar.style.backgroundColor = this.meta.colors.fill;
+ }
+ }
+ },
+ show: {
+ value: function show() {
+ this.meta.contents.style.display = "block";
+ this.meta.open = true;
+ }
+ },
+ hide: {
+ value: function hide() {
+ this.meta.contents.style.display = "none";
+ this.meta.open = false;
+ }
+ },
+ colorize: {
+ value: function colorize(type, color) {
+ for (var key in this) {
+ if (this[key].colorize) {
+ this[key].colorize(type, color);
+ }
+ }
+ this.meta.colors[type] = color;
+ this.colorInterface();
+ }
+ },
+ empty: {
+ value: function empty() {
+ for (var key in this) {
+ if (this[key].destroy) {
+ this[key].destroy();
+ }
+ }
+ }
+ }
+ });
+
+ return Rack;
+ })();
+
+ module.exports = Rack;
+
+/***/ }),
+/* 39 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ "use strict";
+
+ var dom = _interopRequire(__webpack_require__(7));
+
+ var Interfaces = _interopRequire(__webpack_require__(2));
+
+ var createInterfaceID = function (widget, interfaceIDs) {
+ var type = widget.type;
+ if (interfaceIDs[type]) {
+ interfaceIDs[type]++;
+ } else {
+ interfaceIDs[type] = 1;
+ }
+ return type + interfaceIDs[type];
+ };
+
+ var element = function (element, type, options) {
+ options = options || {};
+ for (var i = 0; i < element.attributes.length; i++) {
+ var att = element.attributes[i];
+ // try {
+ // options[att.nodeName] = eval(att.nodeValue);
+ // } catch(e) {
+ options[att.nodeName] = att.nodeValue;
+ // }
+ }
+ type = type[0].toUpperCase() + type.slice(1);
+ var widget = new Interfaces[type](element, options);
+ widget.id = element.id;
+ return widget;
+ };
+
+ var section = function (parent, keyword) {
+
+ keyword = keyword || "nexus-ui";
+
+ var interfaceIDs = {};
+
+ var container = dom.parseElement(parent);
+
+ var ui = {};
+
+ var htmlElements = container.getElementsByTagName("*");
+ var elements = [];
+ for (var i = 0; i < htmlElements.length; i++) {
+ elements.push(htmlElements[i]);
+ }
+ for (var i = 0; i < elements.length; i++) {
+ var type = elements[i].getAttribute(keyword);
+ if (type) {
+ var formattedType = false;
+ for (var key in Interfaces) {
+ if (type.toLowerCase() === key.toLowerCase()) {
+ formattedType = key;
+ }
+ }
+ console.log(formattedType);
+ var widget = element(elements[i], formattedType);
+ if (widget.id) {
+ ui[widget.id] = widget;
+ } else {
+ var id = createInterfaceID(widget, interfaceIDs);
+ ui[id] = widget;
+ }
+ }
+ }
+
+ return ui;
+ };
+
+ var add = function (type, parent, options) {
+ var target = document.createElement("div");
+ options = options || {};
+ if (parent) {
+ parent = dom.parseElement(parent);
+ } else {
+ parent = document.body;
+ }
+ parent.appendChild(target);
+ options.target = target;
+ if (options.size) {
+ target.style.width = options.size[0] + "px";
+ target.style.height = options.size[1] + "px";
+ }
+ return element(target, type, options);
+ };
+
+ exports.element = element;
+ exports.section = section;
+ exports.add = add;
+
+/***/ }),
+/* 40 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+
+ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ var math = _interopRequire(__webpack_require__(5));
+
+ var Tune = (function () {
+ function Tune() {
+ _classCallCheck(this, Tune);
+
+ // the scale as ratios
+ this.scale = [];
+
+ // i/o modes
+ this.mode = {
+ output: "frequency",
+ input: "step"
+ };
+
+ // ET major
+ this.etmajor = [261.62558, 293.664764, 329.627563, 349.228241, 391.995422, 440, 493.883301, 523.25116];
+
+ // Root frequency.
+ this.root = math.mtof(60); // * Math.pow(2,(60-69)/12);
+
+ // default is a major scale
+ this.createScale(0, 2, 4, 5, 7, 9, 11);
+ }
+
+ _createClass(Tune, {
+ note: {
+
+ /* Return data in the mode you are in (freq, ratio, or midi) */
+
+ value: function note(input, octave) {
+ var newvalue = undefined;
+
+ if (this.mode.output === "frequency") {
+ newvalue = this.frequency(input, octave);
+ } else if (this.mode.output === "ratio") {
+ newvalue = this.ratio(input, octave);
+ } else if (this.mode.output === "MIDI") {
+ newvalue = this.MIDI(input, octave);
+ } else {
+ newvalue = this.frequency(input, octave);
+ }
+
+ return newvalue;
+ }
+ },
+ frequency: {
+
+ /* Return freq data */
+
+ value: function frequency(stepIn, octaveIn) {
+ if (this.mode.input === "midi" || this.mode.input === "MIDI") {
+ this.stepIn += 60;
+ }
+
+ // what octave is our input
+ var octave = Math.floor(stepIn / this.scale.length);
+
+ if (octaveIn) {
+ octave += octaveIn;
+ }
+
+ // which scale degree (0 - scale length) is our input
+ var scaleDegree = stepIn % this.scale.length;
+
+ while (scaleDegree < 0) {
+ scaleDegree += this.scale.length;
+ }
+
+ var ratio = this.scale[scaleDegree];
+
+ var freq = this.root * ratio;
+
+ freq = freq * Math.pow(2, octave);
+
+ // truncate irrational numbers
+ freq = Math.floor(freq * 100000000000) / 100000000000;
+
+ return freq;
+ }
+ },
+ ratio: {
+
+ /* Force return ratio data */
+
+ value: function ratio(stepIn, octaveIn) {
+ if (this.mode.input === "midi" || this.mode.input === "MIDI") {
+ this.stepIn += 60;
+ }
+
+ // what octave is our input
+ var octave = Math.floor(stepIn / this.scale.length);
+
+ if (octaveIn) {
+ octave += octaveIn;
+ }
+
+ // which scale degree (0 - scale length) is our input
+ var scaleDegree = stepIn % this.scale.length;
+
+ // what ratio is our input to our key
+ var ratio = Math.pow(2, octave) * this.scale[scaleDegree];
+
+ ratio = Math.floor(ratio * 100000000000) / 100000000000;
+
+ return ratio;
+ }
+ },
+ MIDI: {
+
+ /* Force return adjusted MIDI data */
+
+ value: function MIDI(stepIn, octaveIn) {
+ var newvalue = this.frequency(stepIn, octaveIn);
+
+ var n = 69 + 12 * Math.log(newvalue / 440) / Math.log(2);
+
+ n = Math.floor(n * 1000000000) / 1000000000;
+
+ return n;
+ }
+ },
+ createScale: {
+ value: function createScale() {
+ var newScale = [];
+ for (var i = 0; i < arguments.length; i++) {
+ newScale.push(math.mtof(60 + arguments[i]));
+ }
+ this.loadScaleFromFrequencies(newScale);
+ }
+ },
+ createJIScale: {
+ value: function createJIScale() {
+ this.scale = [];
+ for (var i = 0; i < arguments.length; i++) {
+ this.scale.push(arguments[i]);
+ }
+ }
+ },
+ loadScaleFromFrequencies: {
+ value: function loadScaleFromFrequencies(freqs) {
+ this.scale = [];
+ for (var i = 0; i < freqs.length; i++) {
+ this.scale.push(freqs[i] / freqs[0]);
+ }
+ }
+ },
+ loadScale: {
+
+ /* Load a new scale */
+
+ value: function loadScale(name) {
+ /* load the scale */
+ var freqs = this.scales[name].frequencies;
+ this.loadScaleFromFrequencies(freqs);
+ }
+ },
+ search: {
+
+ /* Search the names of tunings
+ Returns an array of names of tunings */
+
+ value: function search(letters) {
+ var possible = [];
+ for (var key in this.scales) {
+ if (key.toLowerCase().indexOf(letters.toLowerCase()) !== -1) {
+ possible.push(key);
+ }
+ }
+ return possible;
+ }
+ },
+ chord: {
+
+ /* Return a collection of notes as an array */
+
+ value: function chord(midis) {
+ var output = [];
+ for (var i = 0; i < midis.length; i++) {
+ output.push(this.note(midis[i]));
+ }
+ return output;
+ }
+ }
+ });
+
+ return Tune;
+ })();
+
+ module.exports = Tune;
+
+/***/ }),
+/* 41 */
+/***/ (function(module, exports) {
+
+ "use strict";
+
+ var _createClass = (function () { function defineProperties(target, props) { for (var key in props) { var prop = props[key]; prop.configurable = true; if (prop.value) prop.writable = true; } Object.defineProperties(target, props); } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
+
+ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
+
+ //Disable jshint warning concerning trailing regular params
+ /*jshint -W138 */
+
+ var Radio = (function () {
+ //if non-existent buttons are switched, they are ignored
+
+ function Radio() {
+ for (var _len = arguments.length, onVals = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ onVals[_key - 1] = arguments[_key];
+ }
+
+ var length = arguments[0] === undefined ? 3 : arguments[0];
+
+ _classCallCheck(this, Radio);
+
+ //each optional 'onVals' argument switches on that value in the Radio if it exists
+ //In the example below, a 3-button radio is created, index 0 is switched on, index 1 is switched on then then attempted again producing an warning, and the final argument produces a warning because the index value does not exist.
+ //Example:
+ //` radio = new Radio(3, 0, 1, 1, 3);
+ //… [1,1,0]
+
+ if (length < 0) {
+ length = 1;
+ }
+
+ this.length = length;
+ this.onVals = onVals;
+ this.array = new Array(length).fill(0);
+
+ if (onVals.length > 0) {
+ this.on.apply(this, onVals);
+ }
+ }
+
+ _createClass(Radio, {
+ select: {
+ value: function select(value) {
+ this.array.fill(0);
+ this.array[value] = 1;
+ return this.array;
+ }
+ },
+ flip: {
+ value: function flip() {
+ for (var _len = arguments.length, values = Array(_len), _key = 0; _key < _len; _key++) {
+ values[_key] = arguments[_key];
+ }
+
+ //flips the specified values. if no value is specified, flips all buttons
+ var a = this.array;
+ if (values.length > 0) {
+ values.forEach(function (v) {
+ if (v > a.length - 1) {
+ console.warn("Warning: AnonRadio[" + v + "] does not exist");
+ } else {
+ a[v] = a[v] ? 0 : 1;
+ }
+ });
+ } else {
+ a.forEach(function (v, i, arr) {
+ arr[i] = v ? 0 : 1;
+ });
+ }
+ return a;
+ }
+ },
+ on: {
+ value: function on() {
+ for (var _len = arguments.length, values = Array(_len), _key = 0; _key < _len; _key++) {
+ values[_key] = arguments[_key];
+ }
+
+ //switch on the specified values. if no value specified, flips on all buttons
+ var a = this.array;
+ if (values.length > 0) {
+ values.forEach(function (v) {
+ if (v > a.length - 1) {
+ console.warn("Warning: AnonRadio[" + v + "] exceeds size of object");
+ } else {
+ if (a[v] === 1) {
+ console.warn("Warning: AnonRadio[" + v + "] was already on.");
+ }
+ a[v] = 1;
+ }
+ });
+ } else {
+ a.fill(1);
+ }
+ return a;
+ }
+ },
+ off: {
+ value: function off() {
+ for (var _len = arguments.length, values = Array(_len), _key = 0; _key < _len; _key++) {
+ values[_key] = arguments[_key];
+ }
+
+ //switch off the specified values. if no value specified, flips off all buttons
+ var a = this.array;
+ if (values.length > 0) {
+ values.forEach(function (v) {
+ a[v] = 0;
+ });
+ } else {
+ a.fill(0);
+ }
+ return a;
+ }
+ }
+ });
+
+ return Radio;
+ })();
+
+ module.exports = Radio;
+
+/***/ }),
+/* 42 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ var WAAClock = __webpack_require__(43)
+
+ module.exports = WAAClock
+ if (typeof window !== 'undefined') window.WAAClock = WAAClock
+
+
+/***/ }),
+/* 43 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(process) {var isBrowser = (typeof window !== 'undefined')
+
+ var CLOCK_DEFAULTS = {
+ toleranceLate: 0.10,
+ toleranceEarly: 0.001
+ }
+
+ // ==================== Event ==================== //
+ var Event = function(clock, deadline, func) {
+ this.clock = clock
+ this.func = func
+ this._cleared = false // Flag used to clear an event inside callback
+
+ this.toleranceLate = clock.toleranceLate
+ this.toleranceEarly = clock.toleranceEarly
+ this._latestTime = null
+ this._earliestTime = null
+ this.deadline = null
+ this.repeatTime = null
+
+ this.schedule(deadline)
+ }
+
+ // Unschedules the event
+ Event.prototype.clear = function() {
+ this.clock._removeEvent(this)
+ this._cleared = true
+ return this
+ }
+
+ // Sets the event to repeat every `time` seconds.
+ Event.prototype.repeat = function(time) {
+ if (time === 0)
+ throw new Error('delay cannot be 0')
+ this.repeatTime = time
+ if (!this.clock._hasEvent(this))
+ this.schedule(this.deadline + this.repeatTime)
+ return this
+ }
+
+ // Sets the time tolerance of the event.
+ // The event will be executed in the interval `[deadline - early, deadline + late]`
+ // If the clock fails to execute the event in time, the event will be dropped.
+ Event.prototype.tolerance = function(values) {
+ if (typeof values.late === 'number')
+ this.toleranceLate = values.late
+ if (typeof values.early === 'number')
+ this.toleranceEarly = values.early
+ this._refreshEarlyLateDates()
+ if (this.clock._hasEvent(this)) {
+ this.clock._removeEvent(this)
+ this.clock._insertEvent(this)
+ }
+ return this
+ }
+
+ // Returns true if the event is repeated, false otherwise
+ Event.prototype.isRepeated = function() { return this.repeatTime !== null }
+
+ // Schedules the event to be ran before `deadline`.
+ // If the time is within the event tolerance, we handle the event immediately.
+ // If the event was already scheduled at a different time, it is rescheduled.
+ Event.prototype.schedule = function(deadline) {
+ this._cleared = false
+ this.deadline = deadline
+ this._refreshEarlyLateDates()
+
+ if (this.clock.context.currentTime >= this._earliestTime) {
+ this._execute()
+
+ } else if (this.clock._hasEvent(this)) {
+ this.clock._removeEvent(this)
+ this.clock._insertEvent(this)
+
+ } else this.clock._insertEvent(this)
+ }
+
+ Event.prototype.timeStretch = function(tRef, ratio) {
+ if (this.isRepeated())
+ this.repeatTime = this.repeatTime * ratio
+
+ var deadline = tRef + ratio * (this.deadline - tRef)
+ // If the deadline is too close or past, and the event has a repeat,
+ // we calculate the next repeat possible in the stretched space.
+ if (this.isRepeated()) {
+ while (this.clock.context.currentTime >= deadline - this.toleranceEarly)
+ deadline += this.repeatTime
+ }
+ this.schedule(deadline)
+ }
+
+ // Executes the event
+ Event.prototype._execute = function() {
+ if (this.clock._started === false) return
+ this.clock._removeEvent(this)
+
+ if (this.clock.context.currentTime < this._latestTime)
+ this.func(this)
+ else {
+ if (this.onexpired) this.onexpired(this)
+ console.warn('event expired')
+ }
+ // In the case `schedule` is called inside `func`, we need to avoid
+ // overrwriting with yet another `schedule`.
+ if (!this.clock._hasEvent(this) && this.isRepeated() && !this._cleared)
+ this.schedule(this.deadline + this.repeatTime)
+ }
+
+ // Updates cached times
+ Event.prototype._refreshEarlyLateDates = function() {
+ this._latestTime = this.deadline + this.toleranceLate
+ this._earliestTime = this.deadline - this.toleranceEarly
+ }
+
+ // ==================== WAAClock ==================== //
+ var WAAClock = module.exports = function(context, opts) {
+ var self = this
+ opts = opts || {}
+ this.tickMethod = opts.tickMethod || 'ScriptProcessorNode'
+ this.toleranceEarly = opts.toleranceEarly || CLOCK_DEFAULTS.toleranceEarly
+ this.toleranceLate = opts.toleranceLate || CLOCK_DEFAULTS.toleranceLate
+ this.context = context
+ this._events = []
+ this._started = false
+ }
+
+ // ---------- Public API ---------- //
+ // Schedules `func` to run after `delay` seconds.
+ WAAClock.prototype.setTimeout = function(func, delay) {
+ return this._createEvent(func, this._absTime(delay))
+ }
+
+ // Schedules `func` to run before `deadline`.
+ WAAClock.prototype.callbackAtTime = function(func, deadline) {
+ return this._createEvent(func, deadline)
+ }
+
+ // Stretches `deadline` and `repeat` of all scheduled `events` by `ratio`, keeping
+ // their relative distance to `tRef`. In fact this is equivalent to changing the tempo.
+ WAAClock.prototype.timeStretch = function(tRef, events, ratio) {
+ events.forEach(function(event) { event.timeStretch(tRef, ratio) })
+ return events
+ }
+
+ // Removes all scheduled events and starts the clock
+ WAAClock.prototype.start = function() {
+ if (this._started === false) {
+ var self = this
+ this._started = true
+ this._events = []
+
+ if (this.tickMethod === 'ScriptProcessorNode') {
+ var bufferSize = 256
+ // We have to keep a reference to the node to avoid garbage collection
+ this._clockNode = this.context.createScriptProcessor(bufferSize, 1, 1)
+ this._clockNode.connect(this.context.destination)
+ this._clockNode.onaudioprocess = function () {
+ process.nextTick(function() { self._tick() })
+ }
+ } else if (this.tickMethod === 'manual') null // _tick is called manually
+
+ else throw new Error('invalid tickMethod ' + this.tickMethod)
+ }
+ }
+
+ // Stops the clock
+ WAAClock.prototype.stop = function() {
+ if (this._started === true) {
+ this._started = false
+ this._clockNode.disconnect()
+ }
+ }
+
+ // ---------- Private ---------- //
+
+ // This function is ran periodically, and at each tick it executes
+ // events for which `currentTime` is included in their tolerance interval.
+ WAAClock.prototype._tick = function() {
+ var event = this._events.shift()
+
+ while(event && event._earliestTime <= this.context.currentTime) {
+ event._execute()
+ event = this._events.shift()
+ }
+
+ // Put back the last event
+ if(event) this._events.unshift(event)
+ }
+
+ // Creates an event and insert it to the list
+ WAAClock.prototype._createEvent = function(func, deadline) {
+ return new Event(this, deadline, func)
+ }
+
+ // Inserts an event to the list
+ WAAClock.prototype._insertEvent = function(event) {
+ this._events.splice(this._indexByTime(event._earliestTime), 0, event)
+ }
+
+ // Removes an event from the list
+ WAAClock.prototype._removeEvent = function(event) {
+ var ind = this._events.indexOf(event)
+ if (ind !== -1) this._events.splice(ind, 1)
+ }
+
+ // Returns true if `event` is in queue, false otherwise
+ WAAClock.prototype._hasEvent = function(event) {
+ return this._events.indexOf(event) !== -1
+ }
+
+ // Returns the index of the first event whose deadline is >= to `deadline`
+ WAAClock.prototype._indexByTime = function(deadline) {
+ // performs a binary search
+ var low = 0
+ , high = this._events.length
+ , mid
+ while (low < high) {
+ mid = Math.floor((low + high) / 2)
+ if (this._events[mid]._earliestTime < deadline)
+ low = mid + 1
+ else high = mid
+ }
+ return low
+ }
+
+ // Converts from relative time to absolute time
+ WAAClock.prototype._absTime = function(relTime) {
+ return relTime + this.context.currentTime
+ }
+
+ // Converts from absolute time to relative time
+ WAAClock.prototype._relTime = function(absTime) {
+ return absTime - this.context.currentTime
+ }
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(44)))
+
+/***/ }),
+/* 44 */
+/***/ (function(module, exports) {
+
+ // shim for using process in browser
+ var process = module.exports = {};
+
+ // cached from whatever global is present so that test runners that stub it
+ // don't break things. But we need to wrap it in a try catch in case it is
+ // wrapped in strict mode code which doesn't define any globals. It's inside a
+ // function because try/catches deoptimize in certain engines.
+
+ var cachedSetTimeout;
+ var cachedClearTimeout;
+
+ function defaultSetTimout() {
+ throw new Error('setTimeout has not been defined');
+ }
+ function defaultClearTimeout () {
+ throw new Error('clearTimeout has not been defined');
+ }
+ (function () {
+ try {
+ if (typeof setTimeout === 'function') {
+ cachedSetTimeout = setTimeout;
+ } else {
+ cachedSetTimeout = defaultSetTimout;
+ }
+ } catch (e) {
+ cachedSetTimeout = defaultSetTimout;
+ }
+ try {
+ if (typeof clearTimeout === 'function') {
+ cachedClearTimeout = clearTimeout;
+ } else {
+ cachedClearTimeout = defaultClearTimeout;
+ }
+ } catch (e) {
+ cachedClearTimeout = defaultClearTimeout;
+ }
+ } ())
+ function runTimeout(fun) {
+ if (cachedSetTimeout === setTimeout) {
+ //normal enviroments in sane situations
+ return setTimeout(fun, 0);
+ }
+ // if setTimeout wasn't available but was latter defined
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+ cachedSetTimeout = setTimeout;
+ return setTimeout(fun, 0);
+ }
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedSetTimeout(fun, 0);
+ } catch(e){
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedSetTimeout.call(null, fun, 0);
+ } catch(e){
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+ return cachedSetTimeout.call(this, fun, 0);
+ }
+ }
+
+
+ }
+ function runClearTimeout(marker) {
+ if (cachedClearTimeout === clearTimeout) {
+ //normal enviroments in sane situations
+ return clearTimeout(marker);
+ }
+ // if clearTimeout wasn't available but was latter defined
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+ cachedClearTimeout = clearTimeout;
+ return clearTimeout(marker);
+ }
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedClearTimeout(marker);
+ } catch (e){
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedClearTimeout.call(null, marker);
+ } catch (e){
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+ // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+ return cachedClearTimeout.call(this, marker);
+ }
+ }
+
+
+
+ }
+ var queue = [];
+ var draining = false;
+ var currentQueue;
+ var queueIndex = -1;
+
+ function cleanUpNextTick() {
+ if (!draining || !currentQueue) {
+ return;
+ }
+ draining = false;
+ if (currentQueue.length) {
+ queue = currentQueue.concat(queue);
+ } else {
+ queueIndex = -1;
+ }
+ if (queue.length) {
+ drainQueue();
+ }
+ }
+
+ function drainQueue() {
+ if (draining) {
+ return;
+ }
+ var timeout = runTimeout(cleanUpNextTick);
+ draining = true;
+
+ var len = queue.length;
+ while(len) {
+ currentQueue = queue;
+ queue = [];
+ while (++queueIndex < len) {
+ if (currentQueue) {
+ currentQueue[queueIndex].run();
+ }
+ }
+ queueIndex = -1;
+ len = queue.length;
+ }
+ currentQueue = null;
+ draining = false;
+ runClearTimeout(timeout);
+ }
+
+ process.nextTick = function (fun) {
+ var args = new Array(arguments.length - 1);
+ if (arguments.length > 1) {
+ for (var i = 1; i < arguments.length; i++) {
+ args[i - 1] = arguments[i];
+ }
+ }
+ queue.push(new Item(fun, args));
+ if (queue.length === 1 && !draining) {
+ runTimeout(drainQueue);
+ }
+ };
+
+ // v8 likes predictible objects
+ function Item(fun, array) {
+ this.fun = fun;
+ this.array = array;
+ }
+ Item.prototype.run = function () {
+ this.fun.apply(null, this.array);
+ };
+ process.title = 'browser';
+ process.browser = true;
+ process.env = {};
+ process.argv = [];
+ process.version = ''; // empty string to avoid regexp issues
+ process.versions = {};
+
+ function noop() {}
+
+ process.on = noop;
+ process.addListener = noop;
+ process.once = noop;
+ process.off = noop;
+ process.removeListener = noop;
+ process.removeAllListeners = noop;
+ process.emit = noop;
+ process.prependListener = noop;
+ process.prependOnceListener = noop;
+
+ process.listeners = function (name) { return [] }
+
+ process.binding = function (name) {
+ throw new Error('process.binding is not supported');
+ };
+
+ process.cwd = function () { return '/' };
+ process.chdir = function (dir) {
+ throw new Error('process.chdir is not supported');
+ };
+ process.umask = function() { return 0; };
+
+
+/***/ })
+/******/ ])
+});
+;
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCA0OGM1NmZjMzU2Y2M5OGExYTdjMSIsIndlYnBhY2s6Ly8vLi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvbWFpbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9wb3NpdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvdXRpbC9zdmcuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3V0aWwvbWF0aC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29yZS9pbnRlcmZhY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3V0aWwvZG9tLmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsL3V0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3V0aWwvdG91Y2guanMiLCJ3ZWJwYWNrOi8vLy4vfi9ldmVudHMvZXZlbnRzLmpzIiwid2VicGFjazovLy8uL2xpYi9tb2RlbHMvc3RlcC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvdXRpbC9pbnRlcmFjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvbW9kZWxzL3RvZ2dsZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9zbGlkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2ludGVyZmFjZXMvdG9nZ2xlLmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL2J1dHRvbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvY29tcG9uZW50cy9idXR0b250ZW1wbGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy90ZXh0YnV0dG9uLmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL3JhZGlvYnV0dG9uLmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL251bWJlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9zZWxlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2ludGVyZmFjZXMvZGlhbC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9waWFuby5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9zZXF1ZW5jZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21vZGVscy9tYXRyaXguanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21vZGVscy9zZXF1ZW5jZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvbW9kZWxzL2RydW5rLmpzIiwid2VicGFjazovLy8uL2xpYi9tb2RlbHMvY291bnRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvdGltZS9pbnRlcnZhbC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9wYW4yZC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy90aWx0LmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL211bHRpc2xpZGVyLmpzIiwid2VicGFjazovLy8uL2xpYi9pbnRlcmZhY2VzL3Bhbi5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9lbnZlbG9wZS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9zcGVjdHJvZ3JhbS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9tZXRlci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvaW50ZXJmYWNlcy9vc2NpbGxvc2NvcGUuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL2NvcmUvcmFjay5qcyIsIndlYnBhY2s6Ly8vLi9saWIvdXRpbC90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vLy4vbGliL3R1bmluZy90dW5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21vZGVscy9yYWRpby5qcyIsIndlYnBhY2s6Ly8vLi9+L3dhYWNsb2NrL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vd2FhY2xvY2svbGliL1dBQUNsb2NrLmpzIiwid2VicGFjazovLy8uL34vcHJv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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFpQjtBQUNqQixRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGdCQUFlLFNBQVM7QUFDeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUc7QUFDSCxxQkFBb0IsU0FBUztBQUM3QjtBQUNB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QUFHLElBQUksQ0FBQyxTQUFTLEdBQUMsSUFBSSxDQUFDO1VBQ3ZDO0FBQ0QsYUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRTVDLGFBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUU7QUFDbkMsZUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUUsSUFBSSxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RixlQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9ELGVBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakUsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7VUFDMUQsTUFBTTtBQUNMLGVBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFFLElBQUksQ0FBQyxLQUFLLEdBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDM0YsZUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxF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QyxDQUFDLENBQUM7VUFDOUI7O0FBRUQsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUQsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0QsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsYUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7QUFFOUMsYUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxhQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQyxhQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNDOztBQUVELG1CQUFjO2NBQUEsMEJBQUc7QUFDZixhQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FB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QUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLGFBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRSxhQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBRWxFLGFBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2QyxhQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkMsYUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDOztBQUV2QyxhQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkUsYUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25FLGFBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs7QUFFbkUsYUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hDLGFBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN4QyxhQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVB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LENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELGVBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELGVBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25ELGVBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGVBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGVBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BELGVBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1VBQ25ELE1BQU07QUFDTCxlQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdEQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUQsZUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUQsZUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekQsZUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekQsZUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekQsZUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDMUQsZUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7VUFDekQ7UUFFRjs7QUFFRCxXQUFNO2NBQUEsZ0JBQUMsQ0FBQyxFQUFFO0FBQ1IsYUFBSSxJQUFJLENBQUMsT0FBTyxFQUFDOztBQUVmLGVBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDZixlQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2hCLGVBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7OztBQUdoQixZQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixZQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixZQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7O0FBRzVCLGVBQUksWUFBWSxHQUFHO0FBQ2pCLGtCQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBQyxHQUFHO0FBQ2xCLGdCQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxFQUFFLEdBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxFQUFFLEdBQUMsR0FBRyxDQUFDLEVBQUcsSUFBSSxDQUFDLEVBQUUsR0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBQyxHQUFHLENBQUU7WUFDekYsQ0FBQztBQUNGLGVBQUksYUFBYSxHQUFHO0FBQ2xCLGtCQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBQyxHQUFHO0FBQ2xCLGdCQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxFQUFFLEdBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxFQUFFLEdBQUMsR0FBRyxDQUFDLEVBQUcsSUFBSSxDQUFDLEVBQUUsR0FBQyxHQUFHLEVBQUUsSUFB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Q0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUFrQyxpQ0FBaUM7QUFDbkU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXFDLGVBQWU7QUFDcEQ7QUFDQSxNQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsRTs7Ozs7OztBQ3pPQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBLEVBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHNCQUFzQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFxQjtBQUNyQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsc0NBQXFDOztBQUVyQztBQUNBO0FBQ0E7O0FBRUEsNEJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLDZCQUE0QixVQUFVIiwiZmlsZSI6Ii4vZGlzdC9OZXh1c1VJLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiTmV4dXNcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiTmV4dXNcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiBcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGlkOiBtb2R1bGVJZCxcbiBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgNDhjNTZmYzM1NmNjOThhMWE3YzEiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBOZXh1c1VJIGZyb20gJy4vbGliL21haW4nO1xuXG5leHBvcnQgZGVmYXVsdCBOZXh1c1VJO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vaW5kZXguanMiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBJbnRlcmZhY2VzIGZyb20gJy4vaW50ZXJmYWNlcy8nO1xuaW1wb3J0IG1hdGggZnJvbSAnLi91dGlsL21hdGgnO1xuaW1wb3J0IFJhY2sgZnJvbSAnLi9jb3JlL3JhY2snO1xuaW1wb3J0IFR1bmUgZnJvbSAnLi90dW5pbmcvdHVuaW5nJztcbmltcG9ydCAqIGFzIFRyYW5zZm9ybSBmcm9tICcuL3V0aWwvdHJhbnNmb3JtJztcblxubGV0IENvdW50ZXIgPSByZXF1aXJlKCcuL21vZGVscy9jb3VudGVyJyk7XG5sZXQgUmFkaW8gPSByZXF1aXJlKCcuL21vZGVscy9yYWRpbycpO1xubGV0IERydW5rID0gcmVxdWlyZSgnLi9tb2RlbHMvZHJ1bmsnKTtcbmxldCBTZXF1ZW5jZSA9IHJlcXVpcmUoJy4vbW9kZWxzL3NlcXVlbmNlJyk7XG5sZXQgTWF0cml4ID0gcmVxdWlyZSgnLi9tb2RlbHMvbWF0cml4Jyk7XG5cbmltcG9ydCBXQUFDbG9jayBmcm9tICd3YWFjbG9jayc7XG5pbXBvcnQgSW50ZXJ2YWwgZnJvbSAnLi90aW1lL2ludGVydmFsJztcblxuXG4vKipcbk5leHVzVUkgPT4gY3JlYXRlZCBhcyBOZXh1c1xuKi9cblxuY2xhc3MgTmV4dXNVSSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb250ZXh0KSB7XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIEludGVyZmFjZXMpIHtcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IEludGVyZmFjZXNba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBtYXRoKSB7XG4gICAgICAgICAgICB0aGlzW2tleV0gPSBtYXRoW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgQ29yZSA9IHtcbiAgICAgICAgICAnUmFjayc6IFJhY2tcbiAgICAgICAgfTtcblxuICAgICAgICBsZXQgTW9kZWxzID0ge1xuICAgICAgICAgICdDb3VudGVyJzogQ291bnRlcixcbiAgICAgICAgICAnUmFkaW8nOiBSYWRpbyxcbiAgICAgICAgICAnRHJ1bmsnOiBEcnVuayxcbiAgICAgICAgICAnU2VxdWVuY2UnOiBTZXF1ZW5jZSxcbiAgICAgICAgICAnTWF0cml4JzogTWF0cml4XG4gICAgICAgIH07XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIE1vZGVscykge1xuICAgICAgICAgIHRoaXNba2V5XSA9IE1vZGVsc1trZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIENvcmUpIHtcbiAgICAgICAgICB0aGlzW2tleV0gPSBDb3JlW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgRGVmYXVsdENvbnRleHQgPSB3aW5kb3cuQXVkaW9Db250ZXh0IHx8IHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQ7XG4gICAgICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0IHx8IG5ldyBEZWZhdWx0Q29udGV4dCgpO1xuXG4gICAgICAgIHRoaXMudHVuZSA9IG5ldyBUdW5lKCk7XG4gICAgICAgIHRoaXMubm90ZSA9IHRoaXMudHVuZS5ub3RlLmJpbmQodGhpcy50dW5lKTtcblxuICAgICAgICB0aGlzLmNsb2NrID0gbmV3IFdBQUNsb2NrKHRoaXMuX2NvbnRleHQpO1xuICAgICAgICB0aGlzLmNsb2NrLnN0YXJ0KCk7XG4gICAgICAgIHRoaXMuSW50ZXJ2YWwgPSBJbnRlcnZhbDtcblxuICAgICAgICB0aGlzLmNvbG9ycyA9IHtcbiAgICAgICAgICBhY2NlbnQ6ICcjMmJiJyxcbiAgICAgICAgICBmaWxsOiAnI2VlZScsXG4gICAgICAgICAgbGlnaHQ6ICcjZmZmJyxcbiAgICAgICAgICBkYXJrOiAnIzMzMycsXG4gICAgICAgICAgbWVkaXVtTGlnaHQ6ICcjY2NjJyxcbiAgICAgICAgICBtZWRpdW1EYXJrOiAnIzY2NidcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnRyYW5zZm9ybSA9IFRyYW5zZm9ybTtcbiAgICAgICAgdGhpcy5hZGQgPSBUcmFuc2Zvcm0uYWRkO1xuXG5cbiAgICAgICAgdGhpcy5BZGQgPSB7fTtcbiAgICAgICAgZm9yIChsZXQga2V5IGluIEludGVyZmFjZXMpIHtcbiAgICAgICAgICB0aGlzLkFkZFtrZXldID0gVHJhbnNmb3JtLmFkZC5iaW5kKHRoaXMsa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGNyZWF0ZSBkZWZhdWx0IGNvbXBvbmVudCBzaXplIGFzIDFzdCBzdHlsZSBlbGVtZW50IGluIGRvY3VtZW50ICovXG4gICAgICAgIHZhciBkZWZhdWx0U3R5bGVOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgZGVmYXVsdFN0eWxlTm9kZS50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgICAgZGVmYXVsdFN0eWxlTm9kZS5pbm5lckhUTUwgPSAnW25leHVzLXVpXXtoZWlnaHQ6NTAwMHB4O3dpZHRoOjUwMDBweH0nO1xuICAgICAgICB2YXIgaCA9IGRvY3VtZW50LmhlYWQ7XG4gICAgICAgIGguaW5zZXJ0QmVmb3JlKGRlZmF1bHRTdHlsZU5vZGUsIGguZmlyc3RFbGVtZW50Q2hpbGQpO1xuICAgIH1cblxuICAgIGdldCBjb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRleHQ7XG4gICAgfVxuXG4gICAgc2V0IGNvbnRleHQoY3R4KSB7XG4gICAgICB0aGlzLmNsb2NrLnN0b3AoKTtcbiAgICAgIHRoaXMuX2NvbnRleHQgPSBjdHg7XG4gICAgICB0aGlzLmNsb2NrID0gbmV3IFdBQUNsb2NrKHRoaXMuY29udGV4dCk7XG4gICAgICB0aGlzLmNsb2NrLnN0YXJ0KCk7XG4gICAgfVxuXG5cblxufVxuXG5sZXQgTmV4dXMgPSBuZXcgTmV4dXNVSSgpO1xuXG5leHBvcnQgZnVuY3Rpb24gY29sb3JzKCkge1xuICAgIHJldHVybiBOZXh1cy5jb2xvcnM7XG59XG5leHBvcnQgZnVuY3Rpb24gY29udGV4dCgpIHtcbiAgICByZXR1cm4gTmV4dXMuY29udGV4dDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjbG9jaygpIHtcbiAgICByZXR1cm4gTmV4dXMuY2xvY2s7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5leHVzO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL21haW4uanMiLCJleHBvcnQgZGVmYXVsdCB7XG4gIFBvc2l0aW9uOiByZXF1aXJlKCcuL3Bvc2l0aW9uJyksXG4gIFNsaWRlcjogcmVxdWlyZSgnLi9zbGlkZXInKSxcbiAgVG9nZ2xlOiByZXF1aXJlKCcuL3RvZ2dsZScpLFxuLyogIFJhbmdlOiByZXF1aXJlKCcuL3Jhbmdlc2xpZGVyJyksXG4gIFdhdmVmb3JtOiByZXF1aXJlKCcuL3dhdmVmb3JtJyksICovXG4gIEJ1dHRvbjogcmVxdWlyZSgnLi9idXR0b24nKSxcbiAgVGV4dEJ1dHRvbjogcmVxdWlyZSgnLi90ZXh0YnV0dG9uJyksXG4gIFJhZGlvQnV0dG9uOiByZXF1aXJlKCcuL3JhZGlvYnV0dG9uJyksXG4gIE51bWJlcjogcmVxdWlyZSgnLi9udW1iZXInKSxcbiAgU2VsZWN0OiByZXF1aXJlKCcuL3NlbGVjdCcpLFxuICBEaWFsOiByZXF1aXJlKCcuL2RpYWwnKSxcbiAgUGlhbm86IHJlcXVpcmUoJy4vcGlhbm8nKSxcbiAgU2VxdWVuY2VyOiByZXF1aXJlKCcuL3NlcXVlbmNlcicpLFxuICBQYW4yRDogcmVxdWlyZSgnLi9wYW4yZCcpLFxuICBUaWx0OiByZXF1aXJlKCcuL3RpbHQnKSxcbiAgTXVsdGlzbGlkZXI6IHJlcXVpcmUoJy4vbXVsdGlzbGlkZXInKSxcbiAgUGFuOiByZXF1aXJlKCcuL3BhbicpLFxuICBFbnZlbG9wZTogcmVxdWlyZSgnLi9lbnZlbG9wZScpLFxuICBTcGVjdHJvZ3JhbTogcmVxdWlyZSgnLi9zcGVjdHJvZ3JhbScpLFxuICBNZXRlcjogcmVxdWlyZSgnLi9tZXRlcicpLFxuICBPc2NpbGxvc2NvcGU6IHJlcXVpcmUoJy4vb3NjaWxsb3Njb3BlJylcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9pbmRleC5qcyIsIlxuJ3VzZSBzdHJpY3QnO1xuXG5sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xubGV0IFN0ZXAgPSByZXF1aXJlKCcuLi9tb2RlbHMvc3RlcCcpO1xuaW1wb3J0ICogYXMgSW50ZXJhY3Rpb24gZnJvbSAnLi4vdXRpbC9pbnRlcmFjdGlvbic7XG5cbi8qKlxuKiBQb3NpdGlvblxuKlxuKiBAZGVzY3JpcHRpb24gVHdvLWRpbWVuc2lvbmFsIHRvdWNoIHNsaWRlci5cbipcbiogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJwb3NpdGlvblwiPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIHBvc2l0aW9uID0gbmV3IE5leHVzLlBvc2l0aW9uKCcjdGFyZ2V0JylcbipcbiogQGV4YW1wbGVcbiogdmFyIHBvc2l0aW9uID0gbmV3IE5leHVzLlBvc2l0aW9uKCcjdGFyZ2V0Jyx7XG4qICAgJ3NpemUnOiBbMjAwLDIwMF0sXG4qICAgJ21vZGUnOiAnYWJzb2x1dGUnLCAgLy8gXCJhYnNvbHV0ZVwiIG9yIFwicmVsYXRpdmVcIlxuKiAgICd4JzogMC41LCAgLy8gaW5pdGlhbCB4IHZhbHVlXG4qICAgJ21pblgnOiAwLFxuKiAgICdtYXhYJzogMSxcbiogICAnc3RlcFgnOiAwLFxuKiAgICd5JzogMC41LCAgLy8gaW5pdGlhbCB5IHZhbHVlXG4qICAgJ21pblknOiAwLFxuKiAgICdtYXhZJzogMSxcbiogICAnc3RlcFknOiAwXG4qIH0pXG4qXG4qIEBvdXRwdXRcbiogY2hhbmdlXG4qIEZpcmVzIGFueSB0aW1lIHRoZSBpbnRlcmZhY2UncyB2YWx1ZSBjaGFuZ2VzLiA8YnI+XG4qIFRoZSBldmVudCBkYXRhIGlzIGFuIG9iamVjdCB3aXRoIHggYW5kIHkgcHJvcGVydGllcyBjb250YWluaW5nIHRoZSB4IGFuZCB5IHZhbHVlcyBvZiB0aGUgaW50ZXJmYWNlLlxuKlxuKiBAb3V0cHV0ZXhhbXBsZVxuKiBwb3NpdGlvbi5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb3NpdGlvbiBleHRlbmRzIEludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICdzaXplJzogWzIwMCwyMDBdLFxuICAgICAgJ21vZGUnOiAnYWJzb2x1dGUnLFxuICAgICAgJ21pblgnOiAwLFxuICAgICAgJ21heFgnOiAxLFxuICAgICAgJ3N0ZXBYJzogMCxcbiAgICAgICd4JzogMC41LFxuICAgICAgJ21pblknOiAwLFxuICAgICAgJ21heFknOiAxLFxuICAgICAgJ3N0ZXBZJzogMCxcbiAgICAgICd5JzogMC41XG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuXG4gICAgdGhpcy5feCA9IG5ldyBTdGVwKCB0aGlzLnNldHRpbmdzLm1pblgsIHRoaXMuc2V0dGluZ3MubWF4WCwgdGhpcy5zZXR0aW5ncy5zdGVwWCwgdGhpcy5zZXR0aW5ncy54ICk7XG4gICAgdGhpcy5feSA9IG5ldyBTdGVwKCB0aGlzLnNldHRpbmdzLm1pblksIHRoaXMuc2V0dGluZ3MubWF4WSwgdGhpcy5zZXR0aW5ncy5zdGVwWSwgdGhpcy5zZXR0aW5ncy55ICk7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0ge1xuICAgICAgeDogbmV3IEludGVyYWN0aW9uLkhhbmRsZSh0aGlzLnNldHRpbmdzLm1vZGUsJ2hvcml6b250YWwnLFswLHRoaXMud2lkdGhdLFt0aGlzLmhlaWdodCwwXSksXG4gICAgICB5OiBuZXcgSW50ZXJhY3Rpb24uSGFuZGxlKHRoaXMuc2V0dGluZ3MubW9kZSwndmVydGljYWwnLFswLHRoaXMud2lkdGhdLFt0aGlzLmhlaWdodCwwXSlcbiAgICB9O1xuICAgIHRoaXMucG9zaXRpb24ueC52YWx1ZSA9IHRoaXMuX3gubm9ybWFsaXplZDtcbiAgICB0aGlzLnBvc2l0aW9uLnkudmFsdWUgPSB0aGlzLl95Lm5vcm1hbGl6ZWQ7XG5cbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcblxuICAgIHRoaXMua25vYiA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmtub2IpO1xuICAgIFxuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcblxuICAgICAgdGhpcy5wb3NpdGlvbi54LnJlc2l6ZShbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pO1xuICAgICAgdGhpcy5wb3NpdGlvbi55LnJlc2l6ZShbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pO1xuXG4gICAgICB0aGlzLl9taW5EaW1lbnNpb24gPSBNYXRoLm1pbih0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTtcblxuICAgICAgdGhpcy5rbm9iUmFkaXVzID0ge1xuICAgICAgICBvZmY6IH5+KHRoaXMuX21pbkRpbWVuc2lvbi8xMDApICogNSArIDUsXG4gICAgICB9O1xuICAgICAgdGhpcy5rbm9iUmFkaXVzLm9uID0gdGhpcy5rbm9iUmFkaXVzLm9mZiAqIDI7XG5cbiAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLndpZHRoLzIpO1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3knLHRoaXMuaGVpZ2h0LzIpO1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgncicsdGhpcy5rbm9iUmFkaXVzLm9mZik7XG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbG9ycy5maWxsO1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xpY2tlZCkge1xuICAgIC8vICB0aGlzLmtub2JSYWRpdXMgPSAzMDtcbiAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYlJhZGl1cy5vbik7XG4gICAgfSBlbHNlIHtcbiAgICAvLyAgdGhpcy5rbm9iUmFkaXVzID0gMTU7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdyJyx0aGlzLmtub2JSYWRpdXMub2ZmKTtcbiAgICB9XG5cbiAgICB0aGlzLmtub2JDb29yZGluYXRlcyA9IHtcbiAgICAgIHg6IHRoaXMuX3gubm9ybWFsaXplZCAqIHRoaXMud2lkdGgsXG4gICAgICB5OiB0aGlzLmhlaWdodCAtIHRoaXMuX3kubm9ybWFsaXplZCAqIHRoaXMuaGVpZ2h0XG4gICAgfTtcblxuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLmtub2JDb29yZGluYXRlcy54KTtcbiAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeScsdGhpcy5rbm9iQ29vcmRpbmF0ZXMueSk7XG4gIH1cblxuXG4gIGNsaWNrKCkge1xuICAgIHRoaXMucG9zaXRpb24ueC5hbmNob3IgPSB0aGlzLm1vdXNlO1xuICAgIHRoaXMucG9zaXRpb24ueS5hbmNob3IgPSB0aGlzLm1vdXNlO1xuICAgIHRoaXMubW92ZSgpO1xuICB9XG5cbiAgbW92ZSgpIHtcbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLngudXBkYXRlKHRoaXMubW91c2UpO1xuICAgICAgdGhpcy5wb3NpdGlvbi55LnVwZGF0ZSh0aGlzLm1vdXNlKTtcbiAgICAgIHRoaXMuX3gudXBkYXRlTm9ybWFsKCB0aGlzLnBvc2l0aW9uLngudmFsdWUgKTtcbiAgICAgIHRoaXMuX3kudXBkYXRlTm9ybWFsKCB0aGlzLnBvc2l0aW9uLnkudmFsdWUgKTtcbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICAgIHg6IHRoaXMuX3gudmFsdWUsXG4gICAgICAgIHk6IHRoaXMuX3kudmFsdWVcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICByZWxlYXNlKCkge1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgKiBUaGUgaW50ZXJmYWNlJ3MgeCB2YWx1ZS4gV2hlbiBzZXQsIGl0IHdpbGwgYXV0b21hdGljYWxseSBhZGp1c3QgdG8gZml0IG1pbi9tYXgvc3RlcCBzZXR0aW5ncyBvZiB0aGUgaW50ZXJmYWNlLlxuICAqIEB0eXBlIHtvYmplY3R9XG4gICogQGV4YW1wbGUgcG9zaXRpb24ueCA9IDAuNTtcbiAgKi9cblxuICBnZXQgeCgpIHtcbiAgICByZXR1cm4gdGhpcy5feC52YWx1ZTtcbiAgfVxuXG4gIHNldCB4KHZhbHVlKSB7XG4gICAgdGhpcy5feC51cGRhdGUodmFsdWUpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICB4OiB0aGlzLl94LnZhbHVlLFxuICAgICAgeTogdGhpcy5feS52YWx1ZVxuICAgIH0pO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgKiBUaGUgaW50ZXJmYWNlJ3MgeSB2YWx1ZXMuIFdoZW4gc2V0LCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYWRqdXN0IHRvIGZpdCBtaW4vbWF4L3N0ZXAgc2V0dGluZ3Mgb2YgdGhlIGludGVyZmFjZS5cbiAgKiBAdHlwZSB7b2JqZWN0fVxuICAqIEBleGFtcGxlIHBvc2l0aW9uLnggPSAwLjU7XG4gICovXG5cbiAgZ2V0IHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3kudmFsdWU7XG4gIH1cblxuICBzZXQgeSh2YWx1ZSkge1xuICAgIHRoaXMuX3kudXBkYXRlKHZhbHVlKTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgeDogdGhpcy5feC52YWx1ZSxcbiAgICAgIHk6IHRoaXMuX3kudmFsdWVcbiAgICB9KTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cblxuXG4gIGdldCBub3JtYWxpemVkKCkge1xuICAgIHJldHVybiB7XG4gICAgICB4OiB0aGlzLl94Lm5vcm1hbGl6ZWQsXG4gICAgICB5OiB0aGlzLl95Lm5vcm1hbGl6ZWRcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICogVGhlIGxvd2VyIGxpbWl0IG9mIHZhbHVlIG9uIHRoZSB4IGF4aXNcbiAgKiBAdHlwZSB7b2JqZWN0fVxuICAqL1xuICBnZXQgbWluWCgpIHtcbiAgICByZXR1cm4gdGhpcy5feC5taW47XG4gIH1cblxuICBzZXQgbWluWCh2KSB7XG4gICAgdGhpcy5feC5taW4gPSB2O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKipcbiAgKiBUaGUgbG93ZXIgbGltaXQgb2YgdmFsdWUgb24gdGhlIHkgYXhpc1xuICAqIEB0eXBlIHtvYmplY3R9XG4gICovXG4gIGdldCBtaW5ZKCkge1xuICAgIHJldHVybiB0aGlzLl95Lm1pbjtcbiAgfVxuXG4gIHNldCBtaW5ZKHYpIHtcbiAgICB0aGlzLl95Lm1pbiA9IHY7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICogVGhlIHVwcGVyIGxpbWl0IG9mIHZhbHVlIG9uIHRoZSB4IGF4aXNcbiAgKiBAdHlwZSB7b2JqZWN0fVxuICAqL1xuICBnZXQgbWF4WCgpIHtcbiAgICByZXR1cm4gdGhpcy5feC5tYXg7XG4gIH1cblxuICBzZXQgbWF4WCh2KSB7XG4gICAgdGhpcy5feC5tYXggPSB2O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuXG4gIC8qKlxuICAqIFRoZSB1cHBlciBsaW1pdCBvZiB2YWx1ZSBvbiB0aGUgeSBheGlzXG4gICogQHR5cGUge29iamVjdH1cbiAgKi9cbiAgZ2V0IG1heFkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3kubWF4O1xuICB9XG5cbiAgc2V0IG1heFkodikge1xuICAgIHRoaXMuX3kubWF4ID0gdjtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cblxuICAvKipcbiAgKiBUaGUgaW5jcmVtZW50YWwgc3RlcCBvZiB2YWx1ZXMgb24gdGhlIHggYXhpc1xuICAqIEB0eXBlIHtvYmplY3R9XG4gICovXG4gIGdldCBzdGVwWCgpIHtcbiAgICByZXR1cm4gdGhpcy5feC5zdGVwO1xuICB9XG5cbiAgc2V0IHN0ZXBYKHYpIHtcbiAgICB0aGlzLl94LnN0ZXAgPSB2O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuXG4gIC8qKlxuICAqIFRoZSBpbmNyZW1lbnRhbCBzdGVwIG9mIHZhbHVlcyBvbiB0aGUgeSBheGlzXG4gICogQHR5cGUge29iamVjdH1cbiAgKi9cbiAgZ2V0IHN0ZXBZKCkge1xuICAgIHJldHVybiB0aGlzLl95LnN0ZXA7XG4gIH1cblxuICBzZXQgc3RlcFkodikge1xuICAgIHRoaXMuX3kuc3RlcCA9IHY7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gIEFic29sdXRlIG1vZGUgKHBvc2l0aW9uJ3MgdmFsdWUganVtcHMgdG8gbW91c2UgY2xpY2sgcG9zaXRpb24pIG9yIHJlbGF0aXZlIG1vZGUgKG1vdXNlIGRyYWcgY2hhbmdlcyB2YWx1ZSByZWxhdGl2ZSB0byBpdHMgY3VycmVudCBwb3NpdGlvbikuIERlZmF1bHQ6IFwiYWJzb2x1dGVcIi5cbiAgQHR5cGUge3N0cmluZ31cbiAgQGV4YW1wbGUgcG9zaXRpb24ubW9kZSA9IFwicmVsYXRpdmVcIjtcbiAgKi9cbiAgZ2V0IG1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpb24ueC5tb2RlO1xuICB9XG4gIHNldCBtb2RlKHYpIHtcbiAgICB0aGlzLnBvc2l0aW9uLngubW9kZSA9IHY7XG4gICAgdGhpcy5wb3NpdGlvbi55Lm1vZGUgPSB2O1xuICB9XG5cblxuXG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9pbnRlcmZhY2VzL3Bvc2l0aW9uLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgbWF0aCA9IHJlcXVpcmUoJy4uL3V0aWwvbWF0aCcpO1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cbiAgY3JlYXRlOiAodHlwZSkgPT4ge1xuICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgdHlwZSk7XG4gIH0sXG5cbiAgYXJjOiAoeCwgeSwgcmFkaXVzLCBzdGFydEFuZ2xlLCBlbmRBbmdsZSkgPT4ge1xuXG4gICAgdmFyIHN0YXJ0ID0gbWF0aC50b0NhcnRlc2lhbihyYWRpdXMsIGVuZEFuZ2xlKTtcbiAgICB2YXIgZW5kID0gbWF0aC50b0NhcnRlc2lhbihyYWRpdXMsIHN0YXJ0QW5nbGUpO1xuXG4gICAgdmFyIGxhcmdlQXJjRmxhZyA9IGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSA8PSAxODAgPyAnMCcgOiAnMSc7XG5cbiAgICB2YXIgZCA9IFtcbiAgICAgICAgJ00nLCBzdGFydC54K3gsIHN0YXJ0LnkreSxcbiAgICAgICAgJ0EnLCByYWRpdXMsIHJhZGl1cywgMCwgbGFyZ2VBcmNGbGFnLCAwLCBlbmQueCt4LCBlbmQueSt5XG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICByZXR1cm4gZDtcbiAgfSxcblxuICByYWRpYWxHcmFkaWVudDogKGRlZnMsbnVtYmVyT2ZTdG9wcykgPT4ge1xuXG4gICAgbGV0IGlkID0gJ2dyYWRpZW50JyArIG1hdGgucmkoMTAwMDAwMDAwMDAwKTtcbiAgICBsZXQgc3RvcHMgPSBbXTtcblxuICAgIGxldCBncmFkaWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAncmFkaWFsR3JhZGllbnQnKTtcbiAgICBncmFkaWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgIGdyYWRpZW50LnNldEF0dHJpYnV0ZSgnY3gnLCAnNTAlJyk7XG4gICAgZ3JhZGllbnQuc2V0QXR0cmlidXRlKCdjeScsICc1MCUnKTtcbiAgICBncmFkaWVudC5zZXRBdHRyaWJ1dGUoJ3InLCAnNTAlJyk7XG5cbiAgICBkZWZzLmFwcGVuZENoaWxkKGdyYWRpZW50KTtcblxuICAgIGZvciAobGV0IGk9MDtpPG51bWJlck9mU3RvcHM7aSsrKSB7XG4gICAgICBsZXQgc3RvcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCAnc3RvcCcpO1xuICAgICAgc3RvcC5zZXRBdHRyaWJ1dGUoJ2lkJywgJ3N0b3AnK2kpO1xuICAgICAgLy9zdG9wLnNldEF0dHJpYnV0ZSgnb2Zmc2V0JywgJzcwJScpO1xuICAgICAgLy9zdG9wLnNldEF0dHJpYnV0ZSgnc3RvcC1jb2xvcicsICdXaGl0ZScpO1xuICAgICAgZ3JhZGllbnQuYXBwZW5kQ2hpbGQoc3RvcCk7XG4gICAgICBzdG9wcy5wdXNoKHN0b3ApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogaWQsXG4gICAgICBzdG9wczogc3RvcHMsXG4gICAgICBlbGVtZW50OiBncmFkaWVudFxuICAgIH07XG5cbiAgfVxuXG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL3V0aWwvc3ZnLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIExpbWl0IGEgbnVtYmVyIHRvIHdpdGhpbiBhIG1pbmltdW0gYW5kIG1heGltdW1cbiAqIEBwYXJhbSAge251bWJlcn0gdmFsdWUgSW5wdXQgdmFsdWVcbiAqIEBwYXJhbSAge251bWJlcn0gbWluICAgTG93ZXIgbGltaXRcbiAqIEBwYXJhbSAge251bWJlcn0gbWF4ICAgVXBwZXIgbGltaXRcbiAqIEByZXR1cm4ge251bWJlcn0gICAgICAgVGhlIGlucHV0IHZhbHVlIGNvbnN0cmFpbmVkIHdpdGhpbiB0aGUgbG93ZXIgYW5kIHVwcGVyIGxpbWl0c1xuICogQGV4YW1wbGVcbiAqIE5leHVzLmNsaXAoMTEsMCwxMCkgICAvLyByZXR1cm5zIDEwXG4gKiBOZXh1cy5jbGlwKC0xLDAsMTApICAgLy8gcmV0dXJucyAwXG4gKiBOZXh1cy5jbGlwKDUsMCwxMCkgICAgLy8gcmV0dXJucyA1XG4gKi9cblxuZXhwb3J0cy5jbGlwID0gKHZhbHVlLG1pbixtYXgpID0+IHtcbiAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHZhbHVlLG1pbiksbWF4KTtcbn07XG5cbmV4cG9ydHMubm9ybWFsaXplID0gKHZhbHVlLG1pbixtYXgpID0+IHtcbiAgcmV0dXJuICggKHZhbHVlLW1pbikgLyAobWF4LW1pbikgKTtcbn07XG5cbi8qKlxuICogU2NhbGUgYSB2YWx1ZSBmcm9tIG9uZSByYW5nZSB0byBhbm90aGVyIHJhbmdlLlxuICogQHBhcmFtICB7bnVtYmVyfSBpbk51bSAgSW5wdXQgdmFsdWVcbiAqIEBwYXJhbSAge251bWJlcn0gaW5NaW4gIElucHV0IHJhbmdlIG1pbmltdW1cbiAqIEBwYXJhbSAge251bWJlcn0gaW5NYXggIElucHV0IHJhbmdlIG1heGltdW1cbiAqIEBwYXJhbSAge251bWJlcn0gb3V0TWluIE91dHB1dCByYW5nZSBtaW5pbXVtXG4gKiBAcGFyYW0gIHtudW1iZXJ9IG91dE1heCBPdXRwdXQgcmFuZ2UgbWF4aW11bVxuICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgVGhlIGlucHV0IHZhbHVlIHNjYWxlZCB0byBpdHMgbmV3IHJhbmdlXG4gKiBAZXhhbXBsZVxuICogTmV4dXMuc2NhbGUoMC41LDAsMSwwLDEwKSAgIC8vIHJldHVybnMgNVxuICogTmV4dXMuc2NhbGUoMC45LDAsMSwxLDApICAgIC8vIHJldHVybnMgMC4xXG4gKi9cbmV4cG9ydHMuc2NhbGUgPSAoaW5OdW0sIGluTWluLCBpbk1heCwgb3V0TWluLCBvdXRNYXgpID0+IHtcbiAgaWYgKGluTWluID09PSBpbk1heCkge1xuICAgIHJldHVybiBvdXRNaW47XG4gIH1cbiAgcmV0dXJuICgoKGluTnVtIC0gaW5NaW4pICogKG91dE1heCAtIG91dE1pbikpIC8gKGluTWF4IC0gaW5NaW4pKSArIG91dE1pbjtcbn07XG5cbmV4cG9ydHMudG9Qb2xhciA9ICh4LHkpID0+IHtcbiAgdmFyIHIgPSBNYXRoLnNxcnQoeCp4ICsgeSp5KTtcblxuICB2YXIgdGhldGEgPSBNYXRoLmF0YW4yKHkseCk7XG4gIGlmICh0aGV0YSA8IDApIHtcbiAgICB0aGV0YSA9IHRoZXRhICsgKDIgKiBNYXRoLlBJKTtcbiAgfVxuICByZXR1cm4ge3JhZGl1czogciwgYW5nbGU6IHRoZXRhfTtcbn07XG5cbmV4cG9ydHMudG9DYXJ0ZXNpYW4gPSBmdW5jdGlvbihyYWRpdXMsIGFuZ2xlKXtcbiAgdmFyIGNvcyA9IE1hdGguY29zKGFuZ2xlKTtcbiAgdmFyIHNpbiA9IE1hdGguc2luKGFuZ2xlKTtcbiAgcmV0dXJuIHt4OiByYWRpdXMqY29zLCB5OiByYWRpdXMqc2luKi0xfTtcbn07XG4vKlxuZXhwb3J0cy5wb2xhclRvQ2FydGVzaWFuKGNlbnRlclgsIGNlbnRlclksIHJhZGl1cywgYW5nbGVJbkRlZ3JlZXMpIHtcbiAgdmFyIGFuZ2xlSW5SYWRpYW5zID0gKGFuZ2xlSW5EZWdyZWVzLTkwKSAqIE1hdGguUEkgLyAxODAuMDtcblxuICByZXR1cm4ge1xuICAgIHg6IGNlbnRlclggKyAocmFkaXVzICogTWF0aC5jb3MoYW5nbGVJblJhZGlhbnMpKSxcbiAgICB5OiBjZW50ZXJZICsgKHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlSW5SYWRpYW5zKSlcbiAgfTtcbn0gICovXG5cblxuXG5leHBvcnRzLnBydW5lID0gZnVuY3Rpb24oZGF0YSwgc2NhbGUpIHtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoZGF0YS50b0ZpeGVkKHNjYWxlKSk7XG59O1xuXG5leHBvcnRzLmludmVydCA9IGZ1bmN0aW9uIChpbk51bSkge1xuICByZXR1cm4gZXhwb3J0cy5zY2FsZShpbk51bSwgMSwgMCwgMCwgMSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSBNSURpIG5vdGUgbnVtYmVyIHRvIGEgZnJlcXVlbmN5IHZhbHVlIGluIGVxdWFsIHRlbXBlcmFtZW50LlxuICogQHBhcmFtICB7bnVtYmVyfSBtaWRpIE1JREkgbm90ZSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfSAgICAgIEZyZXF1ZW5jZSB2YWx1ZVxuICogQGV4YW1wbGVcbiAqIE5leHVzLm10b2YoNjApICAvLyByZXR1cm5zIHRoZSBmcmVxdWVuY3kgbnVtYmVyIG9mIE1pZGRsZSBDXG4gKi9cbmV4cG9ydHMubXRvZiA9IGZ1bmN0aW9uKG1pZGkpIHtcbiAgcmV0dXJuIE1hdGgucG93KDIsICgobWlkaS02OSkvMTIpKSAqIDQ0MDtcbn07XG5cbi8qKlxuICogSW50ZXJwb2xhdGUgYmV0d2VlbiB0d28gbnVtYmVyc1xuICogQHBhcmFtICB7bnVtYmVyfSBsb2MgSW50ZXJwb2xhdGlvbiBpbmRleCAoMC0xKVxuICogQHBhcmFtICB7bnVtYmVyfSBtaW4gTG93ZXIgdmFsdWVcbiAqIEBwYXJhbSAge251bWJlcn0gbWF4IFVwcGVyIHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9ICAgICBJbnRlcnBvbGF0ZWQgdmFsdWVcbiAqIEBleGFtcGxlXG4gKiBOZXh1cy5pbnRlcnAoMC41LDIsNCkgICAvLyByZXR1cm5zIDNcbiAqIE5leHVzLmludGVycCgwLjEsMCwxMCkgICAgIC8vIHJldHVybnMgMVxuICovXG5leHBvcnRzLmludGVycCA9IGZ1bmN0aW9uKGxvYyxtaW4sbWF4KSB7XG4gIHJldHVybiBsb2MgKiAobWF4IC0gbWluKSArIG1pbjtcbn07XG5cbi8qKlxuICogUmV0dXJuIGEgcmFuZG9tIGNob2ljZSBmcm9tIGEgbGlzdCBvZiBhcmd1bWVudHNcbiAqIEByZXR1cm4ge3ZhcmlvdXN9IE9uZSByYW5kb20gYXJndW1lbnRcbiAqIEBleGFtcGxlXG4gKiBOZXh1cy5waWNrKDEsMiwzLDQpICAgLy8gcmV0dXJucyAxLCAyLCAzLCBvciA0XG4gKiBOZXh1cy5waWNrKGZ1bmN0aW9uMSxmdW5jdGlvbjIpICAgLy8gcmV0dXJucyBlaXRoZXIgZnVuY3Rpb24xIG9yIGZ1bmN0aW9uMlxuICovXG5leHBvcnRzLnBpY2sgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGFyZ3VtZW50c1t+fihNYXRoLnJhbmRvbSgpKmFyZ3VtZW50cy5sZW5ndGgpXTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBvY3RhdmUgbXVsdGlwbGllciBmb3IgZnJlcXVlbmN5IHZhbHVlc1xuICogQHBhcmFtICB7bnVtYmVyfSBudW0gUmVsYXRpdmUgb2N0YXZlIG51bWJlciAoZS5nLiAtMSBmb3Igb25lIG9jdGF2ZSBkb3duLCAxIGZvciBvbmUgb2N0YXZlIHVwKVxuICogQHJldHVybiB7bnVtYmVyfSAgICAgT2N0YXZlIG11bHRpcGxpZXJcbiAqIEBleGFtcGxlXG4gKiBOZXh1cy5vY3RhdmUoLTEpICAvLyByZXR1cm5zIDAuNVxuICogTmV4dXMub2N0YXZlKDApICAgLy8gcmV0dXJucyAxXG4gKiBOZXh1cy5vY3RhdmUoMSkgICAvLyByZXR1cm5zIDJcbiAqIE5leHVzLm9jdGF2ZSgyKSAgIC8vIHJldHVybnMgNFxuICovXG5leHBvcnRzLm9jdGF2ZSA9IGZ1bmN0aW9uKG51bSkge1xuICByZXR1cm4gTWF0aC5wb3coMixudW0pO1xufTtcblxuLyoqXG4gKiBSYW5kb20gaW50ZWdlciBnZW5lcmF0b3IuIElmIG5vIHNlY29uZCBhcmd1bWVudCBpcyBnaXZlbiwgd2lsbCByZXR1cm4gcmFuZG9tIGludGVnZXIgZnJvbSAwIHRvIGJvdW5kMS5cbiAqIEBwYXJhbSAge251bWJlcn0gYm91bmQxIE1pbmltdW0gcmFuZG9tIHZhbHVlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IGJvdW5kMiBNYXhpbXVtIHJhbmRvbSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgUmFuZG9tIGludGVnZXIgYmV0d2VlbiBsb3dlciBhbmQgdXBwZXIgYm91bmRhcnlcbiAqIEBleGFtcGxlXG4gKiBOZXh1cy5yaSgxMCkgICAgLy8gcmV0dXJucyByYW5kb20gaW50IGZyb20gMCB0byAxMFxuICogTmV4dXMucmkoMjAsMjAwMCkgLy8gcmV0dXJucyByYW5kb20gaW50IGZyb20gMjAgdG8gMjAwMFxuICovXG5leHBvcnRzLnJpID0gZnVuY3Rpb24oYm91bmQxLGJvdW5kMikge1xuICBpZiAoIWJvdW5kMikge1xuICAgIGJvdW5kMiA9IGJvdW5kMTtcbiAgICBib3VuZDEgPSAwO1xuICB9XG4gIHZhciBsb3cgPSBNYXRoLm1pbihib3VuZDEsYm91bmQyKTtcbiAgdmFyIGhpZ2ggPSBNYXRoLm1heChib3VuZDEsYm91bmQyKTtcbiAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooaGlnaC1sb3cpK2xvdyk7XG59O1xuXG4vKipcbiAqIFJhbmRvbSBmbG9hdCBudW1iZXIgZ2VuZXJhdG9yLiBJZiBubyBzZWNvbmQgYXJndW1lbnQgaXMgZ2l2ZW4sIHdpbGwgcmV0dXJuIHJhbmRvbSBmbG9hdCBmcm9tIDAgdG8gYm91bmQxLlxuICogQHBhcmFtICB7bnVtYmVyfSBib3VuZDEgTWluaW11bSByYW5kb20gdmFsdWVcbiAqIEBwYXJhbSAge251bWJlcn0gYm91bmQyIE1heGltdW0gcmFuZG9tIHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgICBSYW5kb20gZmxvYXQgYmV0d2VlbiBsb3dlciBhbmQgdXBwZXIgYm91bmRhcnlcbiAqIEBleGFtcGxlXG4gKiBOZXh1cy5yZigxKSAgICAvLyByZXR1cm5zIHJhbmRvbSBmbG9hdCBmcm9tIDAgdG8gMVxuICogTmV4dXMucmYoMSwyKSAvLyByZXR1cm5zIHJhbmRvbSBmbG9hdCBmcm9tIDEgdG8gMlxuICovXG5leHBvcnRzLnJmID0gZnVuY3Rpb24oYm91bmQxLGJvdW5kMikge1xuICBpZiAoIWJvdW5kMikge1xuICAgIGJvdW5kMiA9IGJvdW5kMTtcbiAgICBib3VuZDEgPSAwO1xuICB9XG4gIHZhciBsb3cgPSBNYXRoLm1pbihib3VuZDEsYm91bmQyKTtcbiAgdmFyIGhpZ2ggPSBNYXRoLm1heChib3VuZDEsYm91bmQyKTtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkqKGhpZ2gtbG93KStsb3c7XG59O1xuXG5cbmV4cG9ydHMuY3ljbGUgPSBmdW5jdGlvbihpbnB1dCxtaW4sbWF4KSB7XG4gIGlucHV0Kys7XG4gIGlmIChpbnB1dCA+PSBtYXgpIHtcbiAgICBpbnB1dCA9IG1pbjtcbiAgfVxuICByZXR1cm4gaW5wdXQ7XG59O1xuXG4vKipcbiAqIEF2ZXJhZ2UgYW4gYXJyYXkgb2YgbnVtYmVyc1xuICogQHBhcmFtICB7QXJyYXl9IGRhdGEgQXJyYXkgb2YgbnVtYmVycyB0byBhdmVyYWdlXG4gKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgQXZlcmFnZSBvZiB0aGUgaW5wdXQgZGF0YVxuICogQGV4YW1wbGVcbiAqIE5leHVzLmF2ZXJhZ2UoWzAsMiw0LDYsOCwxMF0pICAgLy8gcmV0dXJucyA1XG4gKi9cbmV4cG9ydHMuYXZlcmFnZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgbGV0IHRvdGFsID0gMDtcbiAgZm9yICh2YXIgaT0wO2k8ZGF0YS5sZW5ndGg7aSsrKSB7XG4gICAgdG90YWwgKz0gZGF0YVtpXTtcbiAgfVxuICByZXR1cm4gdG90YWwgLyBkYXRhLmxlbmd0aDtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBkaXN0YW5jZSBmcm9tIG9uZSAoeCx5KSBwb2ludCB0byBhbm90aGVyICh4LHkpIHBvaW50XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHgxIHggb2YgZmlyc3QgcG9pbnRcbiAqIEBwYXJhbSAge251bWJlcn0geTEgeSBvZiBmaXJzdCBwb2ludFxuICogQHBhcmFtICB7bnVtYmVyfSB4MiB4IG9mIHNlY29uZCBwb2ludFxuICogQHBhcmFtICB7bnVtYmVyfSB5MiB5IG9mIHNlY29uZCBwb2lueVxuICogQHJldHVybiB7bnVtYmVyfSAgICBEaXN0YW5jZVxuICogQGV4YW1wbGVcbiAqIE5leHVzLmRpc3RhbmNlKDAsMCwzLDQpICAgLy8gcmV0dXJucyA1XG4gKi9cbmV4cG9ydHMuZGlzdGFuY2UgPSBmdW5jdGlvbih4MSx5MSx4Mix5Mikge1xuICBsZXQgYSA9IHgxIC0geDI7XG4gIGxldCBiID0geTEgLSB5MjtcbiAgcmV0dXJuIE1hdGguc3FydCggYSphICsgYipiICk7XG59O1xuXG5leHBvcnRzLmdhaW5Ub0RCID0gZnVuY3Rpb24oZ2Fpbikge1xuICByZXR1cm4gMjAgKiBNYXRoLmxvZzEwKGdhaW4pO1xufTtcblxuLyoqXG4gKiBGbGlwIGEgY29pbiwgcmV0dXJuaW5nIGVpdGhlciAwIG9yIDEgYWNjb3JkaW5nIHRvIGEgcHJvYmFiaWxpdHlcbiAqIEBwYXJhbSAge251bWJlcn0gW29kZHM9MC41XSBMaWtlbGlob29kIG9mIHJldHVybmluZyAxXG4gKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgICAgICAgMSBvciAwXG4gKiBAZXhhbXBsZVxuICogTmV4dXMuY29pbigwLjEpICAgLy8gcmV0dXJucyAxICgxMCUgb2YgdGhlIHRpbWUpIG9yIDAgKDkwJSBvZiB0aGUgdGltZSlcbiAqL1xuZXhwb3J0cy5jb2luID0gZnVuY3Rpb24ob2Rkcz0wLjUpIHtcbiAgaWYgKGV4cG9ydHMucmYoMCwxKSA8IG9kZHMpIHtcbiAgICByZXR1cm4gMTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi91dGlsL21hdGguanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IGRvbSA9IHJlcXVpcmUoJy4uL3V0aWwvZG9tJyk7XG5sZXQgdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwvdXRpbCcpO1xubGV0IHRvdWNoID0gcmVxdWlyZSgnLi4vdXRpbC90b3VjaCcpO1xuY29uc3QgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnZXZlbnRzJyk7XG5cbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJy4uL21haW4nO1xuXG4vKipcbkludGVyZmFjZVxuKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVyZmFjZSBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG5cbiAgY29uc3RydWN0b3IoYXJncyxvcHRpb25zLGRlZmF1bHRzKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnR5cGUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHRoaXMucGFyc2VTZXR0aW5ncyhhcmdzLG9wdGlvbnMsZGVmYXVsdHMpO1xuICAgIHRoaXMubW91c2UgPSB7fTtcbiAgICB0aGlzLndhaXQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbG9ycyA9IHt9O1xuICAgIGxldCBkZWZhdWx0Q29sb3JzID0gY29sb3JzKCk7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuICAgIHRoaXMuY29sb3JzLmFjY2VudCA9IGRlZmF1bHRDb2xvcnMuYWNjZW50O1xuICAgIHRoaXMuY29sb3JzLmZpbGwgPSBkZWZhdWx0Q29sb3JzLmZpbGw7XG4gICAgdGhpcy5jb2xvcnMubGlnaHQgPSBkZWZhdWx0Q29sb3JzLmxpZ2h0O1xuICAgIHRoaXMuY29sb3JzLmRhcmsgPSBkZWZhdWx0Q29sb3JzLmRhcms7XG4gICAgdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQgPSBkZWZhdWx0Q29sb3JzLm1lZGl1bUxpZ2h0O1xuICAgIHRoaXMuY29sb3JzLm1lZGl1bURhcmsgPSBkZWZhdWx0Q29sb3JzLm1lZGl1bURhcms7XG4gIH1cblxuICBwYXJzZVNldHRpbmdzKGFyZ3Msb3B0aW9ucyxkZWZhdWx0cykge1xuXG4gICAgb3B0aW9ucy51bnNoaWZ0KCd0YXJnZXQnKTtcbiAgICBkZWZhdWx0cy5kZWZhdWx0U2l6ZSA9IGRlZmF1bHRzLnNpemUuc3BsaWNlKDAsMik7XG4gICAgZGVmYXVsdHMuc2l6ZSA9IGZhbHNlO1xuXG4gICAgbGV0IHNldHRpbmdzID0ge1xuICAgICAgJ3RhcmdldCc6IGRvY3VtZW50LmJvZHksXG4gICAgICAnY29sb3JzJzoge30sIC8vIHNob3VsZCBpbmhlcml0IGZyb20gYSBjb2xvcnMgbW9kdWxlLFxuICAgICAgJ3NuYXBXaXRoUGFyZW50JzogdHJ1ZSxcbiAgICAgICdldmVudCc6IGZ1bmN0aW9uKCkge30sXG4gICAgICAnY29tcG9uZW50JzogZmFsc2VcbiAgICB9O1xuXG4gICAgZm9yIChsZXQga2V5IGluIGRlZmF1bHRzKSB7XG4gICAgICBzZXR0aW5nc1trZXldID0gZGVmYXVsdHNba2V5XTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8YXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gZ3JhYnMgdGhlIG5leHQgYXJndW1lbnRcbiAgICAgIGxldCBzZXR0aW5nID0gYXJnc1tpXTtcbiAgICAgIC8vIGlmIGl0J3MgYW4gb2JqZWN0LCBpdCBtdXN0IGJlIHRoZSBzZXR0aW5ncyBvYmplY3RcbiAgICAgIGlmICggdXRpbC5pc09iamVjdChzZXR0aW5nKSApIHtcbiAgICAgICAgZm9yICggbGV0IGtleSBpbiBzZXR0aW5nICkge1xuICAgICAgICAgIHNldHRpbmdzW2tleV0gPSBzZXR0aW5nW2tleV07XG4gICAgICAgIH1cbiAgICAgIC8vIGlmIGl0J3MgYSBmdW5jdGlvbiwgaXQgbXVzdCBiZSB0aGUgZXZlbnQgc2V0dGluZ1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2V0dGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBzZXR0aW5ncy5ldmVudCA9IHNldHRpbmc7XG4gICAgICAvLyBvdGhlcndpc2UsIGNvbnNpZGVyIGl0IG9uZSBvZiB0aGUgd2lkZ2V0J3MgY3VzdG9tIG9wdGlvbnNcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5sZW5ndGg+PTEpIHtcbiAgICAgICAgLy8gZ3JhYiB0aGUgZmlyc3Qgb3B0aW9uIC0tIGkuZS4gJ3RhcmdldCdcbiAgICAgICAgbGV0IGtleSA9IG9wdGlvbnMuc3BsaWNlKDAsMSlbMF07XG4gICAgICAgIHNldHRpbmdzW2tleV0gPSBzZXR0aW5nO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qICBoYW5kbGUgY29tbW9uIHNldHRpbmdzICAqL1xuXG4gICAgLy8gdGFyZ2V0XG4gICAgdGhpcy5wYXJlbnQgPSBkb20ucGFyc2VFbGVtZW50KHNldHRpbmdzLnRhcmdldCk7XG5cbiAgICAvLyBuZXh1cy11aSBhdHRyaWJ1dGVcbiAgICBpZiAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiAhc2V0dGluZ3MuY29tcG9uZW50KSB7XG4gICAgICBpZiAoIXRoaXMucGFyZW50Lmhhc0F0dHJpYnV0ZSgnbmV4dXMtdWknKSkge1xuICAgICAgICB0aGlzLnBhcmVudC5zZXRBdHRyaWJ1dGUoJ25leHVzLXVpJywnJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2l6ZVxuXG4gICAgaWYgKHNldHRpbmdzLnNpemUgJiYgQXJyYXkuaXNBcnJheShzZXR0aW5ncy5zaXplKSAmJiBzZXR0aW5ncy5zbmFwV2l0aFBhcmVudCkge1xuICAgICAgdGhpcy53aWR0aCA9IHNldHRpbmdzLnNpemVbMF07XG4gICAgICB0aGlzLmhlaWdodCA9IHNldHRpbmdzLnNpemVbMV07XG4gICAgICB0aGlzLnBhcmVudC5zdHlsZS53aWR0aCA9IHRoaXMud2lkdGggKyAncHgnO1xuICAgICAgdGhpcy5wYXJlbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5oZWlnaHQgKyAncHgnO1xuICAgIH0gZWxzZSBpZiAoc2V0dGluZ3Muc25hcFdpdGhQYXJlbnQgJiYgIXNldHRpbmdzLmNvbXBvbmVudCkge1xuXG4gICAgICB0aGlzLndpZHRoID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnBhcmVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnd2lkdGgnKS5yZXBsYWNlKCdweCcsJycpKTtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gcGFyc2VGbG9hdCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnBhcmVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnaGVpZ2h0JykucmVwbGFjZSgncHgnLCcnKSk7XG5cbiAgICAgIGlmICh0aGlzLndpZHRoPT01MDAwKSB7XG4gICAgICAgIHRoaXMud2lkdGggPSBzZXR0aW5ncy5kZWZhdWx0U2l6ZVswXTtcbiAgICAgICAgdGhpcy5wYXJlbnQuc3R5bGUud2lkdGggPSB0aGlzLnBhcmVudC53aWR0aCA9IHRoaXMud2lkdGggKyAncHgnO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaGVpZ2h0PT01MDAwKSB7XG4gICAgICAgIHRoaXMuaGVpZ2h0ID0gc2V0dGluZ3MuZGVmYXVsdFNpemVbMV07XG4gICAgICAgIHRoaXMucGFyZW50LnN0eWxlLmhlaWdodCA9IHRoaXMucGFyZW50LmhlaWdodCA9IHRoaXMuaGVpZ2h0ICsgJ3B4JztcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICBzZXR0aW5ncy5zaXplID0gc2V0dGluZ3MuZGVmYXVsdFNpemU7XG4gICAgICB0aGlzLndpZHRoID0gc2V0dGluZ3Muc2l6ZVswXTtcbiAgICAgIHRoaXMuaGVpZ2h0ID0gc2V0dGluZ3Muc2l6ZVsxXTtcbiAgICB9XG5cbiAgICAvLyBldmVudFxuICAgIGlmIChzZXR0aW5ncy5ldmVudCkge1xuICAgICAgdGhpcy5ldmVudCA9IHRoaXMub24oJ2NoYW5nZScsIHNldHRpbmdzLmV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ldmVudCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBzZXR0aW5ncztcblxuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLmJ1aWxkRnJhbWUoKTtcbiAgICB0aGlzLmJ1aWxkSW50ZXJmYWNlKCk7XG4gICAgdGhpcy5zaXplSW50ZXJmYWNlKCk7XG4gICAgdGhpcy5hdHRhY2hMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLmNvbG9ySW50ZXJmYWNlKCk7XG4gICAgdGhpcy5maW5hbFRvdWNoZXMoKTtcbiAgfVxuXG4gIGJ1aWxkRnJhbWUoKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gc3ZnLmNyZWF0ZSgnc3ZnJyk7XG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMud2lkdGgpO1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5oZWlnaHQpO1xuICAgIHRoaXMucGFyZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHt9XG4gIHNpemVJbnRlcmZhY2UoKSB7fVxuICBjb2xvckludGVyZmFjZSgpIHt9XG5cbiAgYXR0YWNoTGlzdGVuZXJzKCkge1xuXG4gICAgdGhpcy5pbnRlcmFjdGlvblRhcmdldCA9IHRoaXMuaW50ZXJhY3Rpb25UYXJnZXQgfHwgdGhpcy5lbGVtZW50O1xuXG4gICAgLy8gU2V0dXAgaW50ZXJhY3Rpb25cbiAgICBpZiAodG91Y2guZXhpc3RzKSB7XG4gICAgICB0aGlzLmludGVyYWN0aW9uVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBldnQgPT4gdGhpcy5wcmVUb3VjaChldnQpKTtcbiAgICAgIHRoaXMuaW50ZXJhY3Rpb25UYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgZXZ0ID0+IHRoaXMucHJlVG91Y2hNb3ZlKGV2dCkpO1xuICAgICAgdGhpcy5pbnRlcmFjdGlvblRhcmdldC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGV2dCA9PiB0aGlzLnByZVRvdWNoUmVsZWFzZShldnQpKTtcbiAgICB9XG4gICAgdGhpcy5ib3VuZFByZU1vdmUgPSBldnQgPT4gdGhpcy5wcmVNb3ZlKGV2dCk7XG4gICAgdGhpcy5ib3VuZFByZVJlbGVhc2UgPSBldnQgPT4gdGhpcy5wcmVSZWxlYXNlKGV2dCk7XG4gICAgdGhpcy5pbnRlcmFjdGlvblRhcmdldC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldnQgPT4gdGhpcy5wcmVDbGljayhldnQpKTtcbiAgfVxuXG4gIGZpbmFsVG91Y2hlcygpIHtcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICB9XG5cbiAgcHJlQ2xpY2soZSkge1xuICAgIC8vIDEwMDAwIGdldENvbXB1dGVkU3R5bGUgY2FsbHMgdGFrZXMgMTAwIG1zLlxuICAgIC8vIC46LiBvbmUgdGFrZXMgYWJvdXQgLjAxbXNcbiAgICBpZiAodGhpcy5lbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgIHRoaXMud2lkdGggPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ3dpZHRoJykucmVwbGFjZSgncHgnLCcnKTtcbiAgICB9XG4gICAgLy8gMTAwMDAgZ2V0Q29tcHV0ZWRTdHlsZSBjYWxscyB0YWtlcyA0MCBtcy5cbiAgICAvLyAuOi4gb25lIHRha2VzIGFib3V0IC4wMDRtc1xuICAgIHRoaXMub2Zmc2V0ID0gZG9tLmZpbmRQb3NpdGlvbih0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMubW91c2UgPSBkb20ubG9jYXRlTW91c2UoZSx0aGlzLm9mZnNldCk7XG4gICAgdGhpcy5jbGlja2VkID0gdHJ1ZTtcbiAgICB0aGlzLmNsaWNrKCk7XG4gICAgdGhpcy5tb3ZlRXZlbnQgPSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLmJvdW5kUHJlTW92ZSk7XG4gICAgdGhpcy5yZWxlYXNlRXZlbnQgPSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5ib3VuZFByZVJlbGVhc2UpO1xuICAgIHRoaXMuZW1pdCgnY2xpY2snKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHByZU1vdmUoZSkge1xuICAgIGlmICghdGhpcy53YWl0KSB7XG4gICAgICB0aGlzLm1vdXNlID0gZG9tLmxvY2F0ZU1vdXNlKGUsdGhpcy5vZmZzZXQpO1xuICAgICAgdGhpcy5tb3ZlKCk7XG4gICAgICB0aGlzLndhaXQgPSB0cnVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMud2FpdCA9IGZhbHNlOyB9LDI1KTtcbiAgICB9XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwcmVSZWxlYXNlKGUpIHtcbiAgICB0aGlzLm1vdXNlID0gZG9tLmxvY2F0ZU1vdXNlKGUsdGhpcy5vZmZzZXQpO1xuICAgIHRoaXMuY2xpY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMucmVsZWFzZSgpO1xuICAgIHRoaXMuZW1pdCgncmVsZWFzZScpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsdGhpcy5ib3VuZFByZU1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLHRoaXMuYm91bmRQcmVSZWxlYXNlKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIGNsaWNrKCkge1xuXG4gIH1cblxuICBtb3ZlKCkge1xuXG4gIH1cblxuICByZWxlYXNlKCkge1xuXG4gIH1cblxuXG4gIC8qIHRvdWNoICovXG5cbiAgcHJlVG91Y2goZSkge1xuICAgIGlmICh0aGlzLmVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgdGhpcy53aWR0aCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnd2lkdGgnKS5yZXBsYWNlKCdweCcsJycpO1xuICAgIH1cbiAgICB0aGlzLm9mZnNldCA9IGRvbS5maW5kUG9zaXRpb24odGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLm1vdXNlID0gZG9tLmxvY2F0ZVRvdWNoKGUsdGhpcy5vZmZzZXQpO1xuICAgIHRoaXMuY2xpY2tlZCA9IHRydWU7XG4gICAgdGhpcy50b3VjaChlKTtcbiAgICB0aGlzLmVtaXQoJ2NsaWNrJyk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwcmVUb3VjaE1vdmUoZSkge1xuICAgIGlmICh0aGlzLmNsaWNrZWQpIHtcbiAgICAgIHRoaXMubW91c2UgPSBkb20ubG9jYXRlVG91Y2goZSx0aGlzLm9mZnNldCk7XG4gICAgICB0aGlzLnRvdWNoTW92ZSgpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwcmVUb3VjaFJlbGVhc2UoZSkge1xuICAgIHRoaXMubW91c2UgPSBkb20ubG9jYXRlVG91Y2goZSwgdGhpcy5vZmZzZXQpO1xuICAgIHRoaXMuY2xpY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMudG91Y2hSZWxlYXNlKCk7XG4gICAgdGhpcy5lbWl0KCdyZWxlYXNlJyk7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICB0b3VjaCgpIHtcbiAgICB0aGlzLmNsaWNrKCk7XG4gIH1cblxuICB0b3VjaE1vdmUoKSB7XG4gICAgdGhpcy5tb3ZlKCk7XG4gIH1cblxuICB0b3VjaFJlbGVhc2UoKSB7XG4gICAgdGhpcy5yZWxlYXNlKCk7XG4gIH1cblxuICAvKipcbiAgKiBSZXNpemUgdGhlIGludGVyZmFjZVxuICAqIEBwYXJhbSB3aWR0aCB7bnVtYmVyfSBOZXcgd2lkdGggaW4gcGl4ZWxzXG4gICogQHBhcmFtIGhlaWdodCB7bnVtYmVyfSBOZXcgaGVpZ2h0IGluIHBpeGVsc1xuICAqXG4gICogQGV4YW1wbGVcbiAgKiBidXR0b24ucmVzaXplKDEwMCwxMDApO1xuICAqL1xuICByZXNpemUod2lkdGgsaGVpZ2h0KSB7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHRoaXMucGFyZW50LnN0eWxlLndpZHRoID0gdGhpcy53aWR0aCsncHgnO1xuICAgIHRoaXMucGFyZW50LnN0eWxlLmhlaWdodCA9IHRoaXMuaGVpZ2h0KydweCc7XG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMud2lkdGgpO1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5oZWlnaHQpO1xuICAgIHRoaXMuc2l6ZUludGVyZmFjZSgpO1xuICB9XG5cbiAgZW1wdHkoKSB7XG4gICAgd2hpbGUgKHRoaXMuZWxlbWVudC5sYXN0Q2hpbGQpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQubGFzdENoaWxkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgKiBSZW1vdmUgdGhlIGludGVyZmFjZSBmcm9tIHRoZSBwYWdlIGFuZCBjYW5jZWwgaXRzIGV2ZW50IGxpc3RlbmVyKHMpLlxuICAqXG4gICogQGV4YW1wbGVcbiAgKiBidXR0b24uZGVzdHJveSgpO1xuICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZW1wdHkoKTtcbiAgICB0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgaWYgKHRoaXMuaW5zdHJ1bWVudCkge1xuICAgICAgZGVsZXRlIHRoaXMuaW5zdHJ1bWVudFt0aGlzLmlkXTtcbiAgICB9XG4gICAgdGhpcy5jdXN0b21EZXN0cm95KCk7XG4gIH1cblxuICBjdXN0b21EZXN0cm95KCkge1xuXG4gIH1cblxuICBjb2xvcml6ZSh0eXBlLGNvbG9yKSB7XG4gICAgdGhpcy5jb2xvcnNbdHlwZV0gPSBjb2xvcjtcbiAgICB0aGlzLmNvbG9ySW50ZXJmYWNlKCk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2NvcmUvaW50ZXJmYWNlLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLmZpbmRQb3NpdGlvbiA9IChlbCkgPT4ge1xuICBsZXQgdmlld3BvcnRPZmZzZXQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgbGV0IHRvcCA9IHZpZXdwb3J0T2Zmc2V0LnRvcCArIHdpbmRvdy5zY3JvbGxZO1xuICBsZXQgbGVmdCA9IHZpZXdwb3J0T2Zmc2V0LmxlZnQgKyB3aW5kb3cuc2Nyb2xsWDtcbiAgcmV0dXJuIHt0b3AsbGVmdH07XG59O1xuXG5leHBvcnRzLnBhcnNlRWxlbWVudCA9IChwYXJlbnQpID0+IHtcbiAgaWYgKHR5cGVvZiBwYXJlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgcGFyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocGFyZW50LnJlcGxhY2UoJyMnLCcnKSk7XG4gIH1cblxuICBpZiAocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgcGFyZW50IGluc3RhbmNlb2YgU1ZHRWxlbWVudCl7XG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJ05vIHZhbGlkIHBhcmVudCBhcmd1bWVudCc7XG4gIH1cbn07XG5cbmV4cG9ydHMubG9jYXRlTW91c2UgPSAoZSxvZmZzZXQpID0+IHtcbiAgcmV0dXJuIHtcbiAgICB4OiBlLnBhZ2VYIC0gb2Zmc2V0LmxlZnQsXG4gICAgeTogZS5wYWdlWSAtIG9mZnNldC50b3BcbiAgfTtcbn07XG5cbmV4cG9ydHMubG9jYXRlVG91Y2ggPSAoZSxvZmZzZXQpID0+IHtcbiAgcmV0dXJuIHtcbiAgICB4OiBlLnRhcmdldFRvdWNoZXMubGVuZ3RoID8gZS50YXJnZXRUb3VjaGVzWzBdLnBhZ2VYIC0gb2Zmc2V0LmxlZnQgOiBmYWxzZSxcbiAgICB5OiBlLnRhcmdldFRvdWNoZXMubGVuZ3RoID8gZS50YXJnZXRUb3VjaGVzWzBdLnBhZ2VZIC0gb2Zmc2V0LnRvcCA6IGZhbHNlXG4gIH07XG59O1xuXG5leHBvcnRzLlNtYXJ0Q2FudmFzID0gZnVuY3Rpb24ocGFyZW50KSB7XG5cbiAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gIHRoaXMuY29udGV4dCA9IHRoaXMuZWxlbWVudC5nZXRDb250ZXh0KCcyZCcpO1xuICBwYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcblxuICB0aGlzLnJlc2l6ZSA9ICh3LGgpID0+IHtcbiAgICB0aGlzLmVsZW1lbnQud2lkdGggPSB3KjI7XG4gICAgdGhpcy5lbGVtZW50LmhlaWdodCA9IGgqMjtcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSB3KydweCc7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmhlaWdodCA9IGgrJ3B4JztcbiAgfTtcblxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi91dGlsL2RvbS5qcyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5pc09iamVjdCA9IChvYmopID0+IHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KG9iaikgJiYgb2JqICE9PSBudWxsICYmIG9iaiBpbnN0YW5jZW9mIFNWR0VsZW1lbnQgPT09IGZhbHNlICYmIG9iaiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ID09PSBmYWxzZSApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbi8vIFJlc3RyaWN0cyBpbnB1dCBmb3IgdGhlIGdpdmVuIHRleHRib3ggdG8gdGhlIGdpdmVuIGlucHV0RmlsdGVyIGZ1bmN0aW9uXG4vLyBjZiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDY5MzYyXG5leHBvcnRzLnNldElucHV0RmlsdGVyID0gKHRleHRib3gsIGlucHV0RmlsdGVyKSA9PiB7XG4gIFtcImlucHV0XCIsIFwia2V5ZG93blwiLCBcImtleXVwXCIsIFwibW91c2Vkb3duXCIsIFwibW91c2V1cFwiLCBcInNlbGVjdFwiLCBcImNvbnRleHRtZW51XCIsIFwiZHJvcFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgdGV4dGJveC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChpbnB1dEZpbHRlcih0aGlzLnZhbHVlKSkge1xuICAgICAgICB0aGlzLm9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgdGhpcy5vbGRTZWxlY3Rpb25TdGFydCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIHRoaXMub2xkU2VsZWN0aW9uRW5kID0gdGhpcy5zZWxlY3Rpb25FbmQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzT3duUHJvcGVydHkoXCJvbGRWYWx1ZVwiKSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5vbGRWYWx1ZTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25SYW5nZSh0aGlzLm9sZFNlbGVjdGlvblN0YXJ0LCB0aGlzLm9sZFNlbGVjdGlvbkVuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlID0gXCJcIjtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvdXRpbC91dGlsLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLmV4aXN0cyA9ICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL3V0aWwvdG91Y2guanMiLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICB0aGlzLl9ldmVudHMgPSB0aGlzLl9ldmVudHMgfHwge307XG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54XG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnMgPSB1bmRlZmluZWQ7XG5cbi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZVxuLy8gYWRkZWQgdG8gaXQuIFRoaXMgaXMgYSB1c2VmdWwgZGVmYXVsdCB3aGljaCBoZWxwcyBmaW5kaW5nIG1lbW9yeSBsZWFrcy5cbkV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzID0gMTA7XG5cbi8vIE9idmlvdXNseSBub3QgYWxsIEVtaXR0ZXJzIHNob3VsZCBiZSBsaW1pdGVkIHRvIDEwLiBUaGlzIGZ1bmN0aW9uIGFsbG93c1xuLy8gdGhhdCB0byBiZSBpbmNyZWFzZWQuIFNldCB0byB6ZXJvIGZvciB1bmxpbWl0ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uKG4pIHtcbiAgaWYgKCFpc051bWJlcihuKSB8fCBuIDwgMCB8fCBpc05hTihuKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ24gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIGVyLCBoYW5kbGVyLCBsZW4sIGFyZ3MsIGksIGxpc3RlbmVycztcblxuICBpZiAoIXRoaXMuX2V2ZW50cylcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgaWYgKCF0aGlzLl9ldmVudHMuZXJyb3IgfHxcbiAgICAgICAgKGlzT2JqZWN0KHRoaXMuX2V2ZW50cy5lcnJvcikgJiYgIXRoaXMuX2V2ZW50cy5lcnJvci5sZW5ndGgpKSB7XG4gICAgICBlciA9IGFyZ3VtZW50c1sxXTtcbiAgICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdVbmNhdWdodCwgdW5zcGVjaWZpZWQgXCJlcnJvclwiIGV2ZW50LiAoJyArIGVyICsgJyknKTtcbiAgICAgICAgZXJyLmNvbnRleHQgPSBlcjtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZXIgPSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgaWYgKGlzVW5kZWZpbmVkKGhhbmRsZXIpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xuICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gZmFzdCBjYXNlc1xuICAgICAgY2FzZSAxOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgYXJndW1lbnRzWzFdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0sIGFyZ3VtZW50c1syXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gc2xvd2VyXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoaGFuZGxlcikpIHtcbiAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICBsaXN0ZW5lcnMgPSBoYW5kbGVyLnNsaWNlKCk7XG4gICAgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICBpZiAodGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyKVxuICAgIHRoaXMuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKSA/XG4gICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIHRoaXMuX2V2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICBlbHNlIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XG4gIGVsc2VcbiAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBbdGhpcy5fZXZlbnRzW3R5cGVdLCBsaXN0ZW5lcl07XG5cbiAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgaWYgKGlzT2JqZWN0KHRoaXMuX2V2ZW50c1t0eXBlXSkgJiYgIXRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQpIHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpIHtcbiAgICAgIG0gPSB0aGlzLl9tYXhMaXN0ZW5lcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgICB9XG5cbiAgICBpZiAobSAmJiBtID4gMCAmJiB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoID4gbSkge1xuICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCcobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ2xlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICdVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdC4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoKTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZS50cmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIGluIElFIDEwXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgdmFyIGZpcmVkID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gZygpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGcpO1xuXG4gICAgaWYgKCFmaXJlZCkge1xuICAgICAgZmlyZWQgPSB0cnVlO1xuICAgICAgbGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBnLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHRoaXMub24odHlwZSwgZyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBlbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWZmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZFxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBsaXN0LCBwb3NpdGlvbiwgbGVuZ3RoLCBpO1xuXG4gIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCdsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGxpc3QgPSB0aGlzLl9ldmVudHNbdHlwZV07XG4gIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICBwb3NpdGlvbiA9IC0xO1xuXG4gIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fFxuICAgICAgKGlzRnVuY3Rpb24obGlzdC5saXN0ZW5lcikgJiYgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICBpZiAodGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTtcblxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGxpc3QpKSB7XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gPiAwOykge1xuICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8XG4gICAgICAgICAgKGxpc3RbaV0ubGlzdGVuZXIgJiYgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICBsaXN0Lmxlbmd0aCA9IDA7XG4gICAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnNwbGljZShwb3NpdGlvbiwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIga2V5LCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICBpZiAoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgZWxzZSBpZiAodGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGZvciAoa2V5IGluIHRoaXMuX2V2ZW50cykge1xuICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNGdW5jdGlvbihsaXN0ZW5lcnMpKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICB9IGVsc2UgaWYgKGxpc3RlbmVycykge1xuICAgIC8vIExJRk8gb3JkZXJcbiAgICB3aGlsZSAobGlzdGVuZXJzLmxlbmd0aClcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2xpc3RlbmVycy5sZW5ndGggLSAxXSk7XG4gIH1cbiAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IFtdO1xuICBlbHNlIGlmIChpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpXG4gICAgcmV0ID0gW3RoaXMuX2V2ZW50c1t0eXBlXV07XG4gIGVsc2VcbiAgICByZXQgPSB0aGlzLl9ldmVudHNbdHlwZV0uc2xpY2UoKTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgaWYgKHRoaXMuX2V2ZW50cykge1xuICAgIHZhciBldmxpc3RlbmVyID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oZXZsaXN0ZW5lcikpXG4gICAgICByZXR1cm4gMTtcbiAgICBlbHNlIGlmIChldmxpc3RlbmVyKVxuICAgICAgcmV0dXJuIGV2bGlzdGVuZXIubGVuZ3RoO1xuICB9XG4gIHJldHVybiAwO1xufTtcblxuRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG59O1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vZXZlbnRzL2V2ZW50cy5qc1xuLy8gbW9kdWxlIGlkID0gMTBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgbWF0aCA9IHJlcXVpcmUoJy4uL3V0aWwvbWF0aCcpO1xuXG4vKipcbiAgQ3JlYXRlcyBhIHN0ZXBwYWJsZSB2YWx1ZSB3aXRoIG1pbmltdW0sIG1heGltdW0sIGFuZCBzdGVwIHNpemUuIFRoaXMgaXMgdXNlZCBpbiBtYW55IGludGVyZmFjZXMgdG8gY29uc3RyaWN0IHRoZWlyIHZhbHVlcyB0byBjZXJ0YWluIHJhbmdlcy5cbiAgQHBhcmFtIHtudW1iZXJ9IFttaW49MF0gbWluaW11bVxuICBAcGFyYW0ge251bWJlcn0gW21heD0xXSBtYXhpbXVtXG4gIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0wXVxuICBAcGFyYW0ge251bWJlcn0gW3ZhbHVlPTBdIGluaXRpYWwgdmFsdWVcbiAgQHJldHVybnMge09iamVjdH0gU3RlcFxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RlcCB7XG5cbiAgY29uc3RydWN0b3IobWluID0gMCxtYXggPSAxLHN0ZXAgPSAwLHZhbHVlID0gMCkge1xuICAgIC8vT2JqZWN0LmFzc2lnbih0aGlzLHttaW4sbWF4LHN0ZXB9KTtcbiAgICAvL0Nhbm5vdCB1c2UgT2JqZWN0LmFzc2lnbiBiZWNhdXNlIG5vdCBzdXBwb3J0ZWQgaW4gU2FmYXJpLlxuICAgIC8vSSB3b3VsZCBleHBlY3QgZm9yIEJhYmVsIHRvIHRha2UgY2FyZSBvZiB0aGlzIGJ1dCBpdCBpcyBub3QuXG4gICAgdGhpcy5taW4gPSBtaW47XG4gICAgdGhpcy5tYXggPSBtYXg7XG4gICAgdGhpcy5zdGVwID0gc3RlcDtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5jaGFuZ2VkID0gZmFsc2U7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMudXBkYXRlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAgVXBkYXRlIHdpdGggYSBuZXcgdmFsdWUuIFRoZSB2YWx1ZSB3aWxsIGJlIGF1dG8tYWRqdXN0ZWQgdG8gZml0IHRoZSBtaW4vbWF4L3N0ZXAuXG4gICAgQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gICovXG5cbiAgdXBkYXRlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMuc3RlcCkge1xuICAgICAgLy8gdGhpcy52YWx1ZSA9IG1hdGguY2xpcChNYXRoLnJvdW5kKHZhbHVlIC8gKHRoaXMuc3RlcCkpICogdGhpcy5zdGVwLCB0aGlzLm1pbix0aGlzLm1heCk7XG4gICAgICB0aGlzLnZhbHVlID0gbWF0aC5jbGlwKE1hdGgucm91bmQoKHZhbHVlLXRoaXMubWluKSAvICh0aGlzLnN0ZXApKSAqIHRoaXMuc3RlcCArIHRoaXMubWluLCB0aGlzLm1pbix0aGlzLm1heCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBtYXRoLmNsaXAodmFsdWUsdGhpcy5taW4sdGhpcy5tYXgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vbGRWYWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgdGhpcy5vbGRWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICB0aGlzLmNoYW5nZWQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoYW5nZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICAvKipcbiAgICBVcGRhdGUgd2l0aCBhIG5vcm1hbGl6ZWQgdmFsdWUgMC0xLlxuICAgIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICAqL1xuICB1cGRhdGVOb3JtYWwodmFsdWUpIHtcbiAgICB0aGlzLnZhbHVlID0gbWF0aC5zY2FsZSh2YWx1ZSwwLDEsdGhpcy5taW4sdGhpcy5tYXgpO1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgIEdldCBhIG5vcm1hbGl6ZWQgdmVyc2lvbiBvZiB0aGlzLnZhbHVlIC4gTm90IHNldHRhYmxlLlxuICAqL1xuICBnZXQgbm9ybWFsaXplZCgpIHtcbiAgICByZXR1cm4gbWF0aC5ub3JtYWxpemUodGhpcy52YWx1ZSx0aGlzLm1pbix0aGlzLm1heCk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL21vZGVscy9zdGVwLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgbWF0aCBmcm9tICcuLi91dGlsL21hdGgnO1xuaW1wb3J0IFRvZ2dsZU1vZGVsIGZyb20gJy4uL21vZGVscy90b2dnbGUnO1xuXG5cbi8qXG5ob3cgdG8gdXNlIDpcblxuZGlhbC5pbnRlcmFjdGlvbiA9IG5ldyBIYW5kbGUoJ3JhZGlhbCcsJ3JlbGF0aXZlJyx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTtcbi8vIGRpYWwuaW50ZXJhY3Rpb24ubW9kZSA9ICdyZWxhdGl2ZSdcbi8vIGRpYWwuaW50ZXJhY3Rpb24uZGlyZWN0aW9uID0gJ3JhZGlhbCdcblxub24gY2xpY2s6XG5kaWFsLmludGVyYWN0aW9uLmFuY2hvciA9IHRoaXMubW91c2U7XG5cbm9uIG1vdmU6XG5kaWFsLmludGVyYWN0aW9uLnVwZGF0ZSh0aGlzLm1vdXNlKTtcblxuY29uc29sZS5sb2coIGRpYWwuaW50ZXJhY3Rpb24udmFsdWUgKTsgc2hvdWxkIGJlIGEgbm9ybWFsaXplZCB2YWx1ZS5cblxuKi9cblxuLypcbiAgYWJzb2x1dGUvcmVsYXRpdmUgYXJlIHByb3BlcnR5OiBtb2RlXG4gIHJhZGlhbC92ZXJ0aWNhbC9ob3Jpem9udGFsLzJkIGFyZSBwcm9wZXJ0eTogZGlyZWN0aW9uXG5cbiAgcGxhbiA6XG5cbiAgaWYgcmVsYXRpdmUgLS1cbiAgTk8gb24gY2xpY2ssIGdldCB2YWx1ZSBvZmZzZXQgYmV0d2VlbiBjdXJyZW50IHZhbHVlIGFuZCBjbGljayB2YWx1ZS5cbiAgTk8gb24gbW92ZSwgdXNlIGNsaWNrIHZhbHVlIC0gb2Zmc2V0XG4gIElOU1RFQURcbiAgdXNlIGRlbHRhIC0tIGJjIHZlcnRpY2FsIG1vdGlvbiBvbiBkaWFsIGlzIGltcG9zc2libGUgb3RoZXJ3aXNlXG4gIGFsc28gYWxsb3cgdG8gc2V0IHNlbnNpdGl2aXR5XG5cbiovXG5cbmV4cG9ydCBjbGFzcyBIYW5kbGUge1xuXG4gIGNvbnN0cnVjdG9yKG1vZGU9J2Fic29sdXRlJyxkaXJlY3Rpb249J3ZlcnRpY2FsJyx4Ym91bmQ9WzAsMTAwXSx5Ym91bmQ9WzAsMTAwXSkge1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgdGhpcy5wcmV2aW91cyA9IDA7XG4gICAgdGhpcy52YWx1ZSA9IDA7XG4gICAgdGhpcy5zZW5zaXRpdml0eSA9IDE7XG4gICAgdGhpcy5yZXNpemUoeGJvdW5kLHlib3VuZCk7XG4gIH1cblxuICByZXNpemUoeGJvdW5kLHlib3VuZCkge1xuICAgIHRoaXMuYm91bmRhcnkgPSB7XG4gICAgICBtaW46IHtcbiAgICAgICAgeDogeGJvdW5kWzBdLFxuICAgICAgICB5OiB5Ym91bmRbMF1cbiAgICAgIH0sXG4gICAgICBtYXg6IHtcbiAgICAgICAgeDogeGJvdW5kWzFdLFxuICAgICAgICB5OiB5Ym91bmRbMV1cbiAgICAgIH0sXG4gICAgICBjZW50ZXI6IHtcbiAgICAgICAgeDogKHhib3VuZFsxXSAtIHhib3VuZFswXSkvMiArIHhib3VuZFswXSxcbiAgICAgICAgeTogKHlib3VuZFsxXSAtIHlib3VuZFswXSkvMiArIHlib3VuZFswXVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBzZXQgYW5jaG9yKG1vdXNlKSB7XG4gICAgdGhpcy5fYW5jaG9yID0gdGhpcy5jb252ZXJ0UG9zaXRpb25Ub1ZhbHVlKG1vdXNlKTtcbiAgfVxuXG4gIGdldCBhbmNob3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuY2hvcjtcbiAgfVxuXG5cbiAgdXBkYXRlKG1vdXNlKSB7XG4gICAgaWYgKHRoaXMubW9kZT09PSdyZWxhdGl2ZScpIHtcbiAgICAgIGxldCBpbmNyZW1lbnQgPSB0aGlzLmNvbnZlcnRQb3NpdGlvblRvVmFsdWUobW91c2UpIC0gdGhpcy5hbmNob3I7XG4gICAgICBpZiAoTWF0aC5hYnMoaW5jcmVtZW50KSA+IDAuNSkgeyBpbmNyZW1lbnQgPSAwOyB9XG4gICAgICB0aGlzLmFuY2hvciA9IG1vdXNlO1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgKyBpbmNyZW1lbnQgKiB0aGlzLnNlbnNpdGl2aXR5O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5jb252ZXJ0UG9zaXRpb25Ub1ZhbHVlKG1vdXNlKTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZSA9IG1hdGguY2xpcCh0aGlzLnZhbHVlLDAsMSk7XG4gIH1cblxuICBjb252ZXJ0UG9zaXRpb25Ub1ZhbHVlKGN1cnJlbnQpIHtcbiAgICBzd2l0Y2godGhpcy5kaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3JhZGlhbCc6XG4gICAgICAgIGxldCBwb3NpdGlvbiA9IG1hdGgudG9Qb2xhcihjdXJyZW50LnggLSB0aGlzLmJvdW5kYXJ5LmNlbnRlci54LCBjdXJyZW50LnkgLSB0aGlzLmJvdW5kYXJ5LmNlbnRlci55KTtcbiAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5hbmdsZSAvIChNYXRoLlBJKjIpO1xuICAgICAgICBwb3NpdGlvbiA9ICgocG9zaXRpb24gLSAwLjI1KSArIDEpICUgMTtcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uO1xuICAgICAgY2FzZSAndmVydGljYWwnOlxuICAgICAgICByZXR1cm4gbWF0aC5zY2FsZShjdXJyZW50LnksdGhpcy5ib3VuZGFyeS5taW4ueSx0aGlzLmJvdW5kYXJ5Lm1heC55LDAsMSk7XG4gICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgcmV0dXJuIG1hdGguc2NhbGUoY3VycmVudC54LHRoaXMuYm91bmRhcnkubWluLngsdGhpcy5ib3VuZGFyeS5tYXgueCwwLDEpO1xuICAgIH1cbiAgfVxuXG59XG5cblxuZXhwb3J0IGNsYXNzIEJ1dHRvbiB7XG5cbiAgY29uc3RydWN0b3IobW9kZT0nYnV0dG9uJykge1xuICAgIHRoaXMubW9kZSA9IG1vZGU7XG4gICAgdGhpcy5zdGF0ZSA9IG5ldyBUb2dnbGVNb2RlbCgpO1xuICAgIHRoaXMucGFpbnRicnVzaCA9IGZhbHNlO1xuICB9XG5cbiAgY2xpY2soKSB7XG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgJ2ltcHVsc2UnOlxuICAgICAgICB0aGlzLnN0YXRlLm9uKCk7XG4gICAgICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuc3RhdGUub2ZmLmJpbmQodGhpcyksMzApO1xuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5zdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgICAgdGhpcy50dXJuT24oKTtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FmdGVydG91Y2gnOlxuICAgICAgICB0aGlzLnBvc2l0aW9uID0ge1xuICAgICAgICAgIHg6IG1hdGguY2xpcCh0aGlzLm1vdXNlLnggLyB0aGlzLndpZHRoLDAsMSksXG4gICAgICAgICAgeTogbWF0aC5jbGlwKDEgLSB0aGlzLm1vdXNlLnkgLyB0aGlzLmhlaWdodCwwLDEpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudHVybk9uKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICAgICAgeDogdGhpcy5wb3NpdGlvbi54LFxuICAgICAgICAgIHk6IHRoaXMucG9zaXRpb24ueSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9nZ2xlJzpcbiAgICAgICAgdGhpcy5mbGlwKCk7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnN0YXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gIH1cblxuICBtb3ZlKCkge1xuICAgIGlmICh0aGlzLm1vZGU9PT0nYWZ0ZXJ0b3VjaCcpIHtcbiAgICAgIHRoaXMucG9zaXRpb24gPSB7XG4gICAgICAgIHg6IG1hdGguY2xpcCh0aGlzLm1vdXNlLnggLyB0aGlzLndpZHRoLDAsMSksXG4gICAgICAgIHk6IG1hdGguY2xpcCgxIC0gdGhpcy5tb3VzZS55IC8gdGhpcy5oZWlnaHQsMCwxKVxuICAgICAgfTtcbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICB4OiB0aGlzLnBvc2l0aW9uLngsXG4gICAgICAgIHk6IHRoaXMucG9zaXRpb24ueSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICByZWxlYXNlKCkge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICB0aGlzLnR1cm5PZmYoKTtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FmdGVydG91Y2gnOlxuICAgICAgICB0aGlzLnR1cm5PZmYoKTtcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHtcbiAgICAgICAgICB4OiB0aGlzLm1vdXNlLnggLyB0aGlzLndpZHRoLFxuICAgICAgICAgIHk6IDEgLSB0aGlzLm1vdXNlLnkgLyB0aGlzLmhlaWdodFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgIHg6IHRoaXMucG9zaXRpb24ueCxcbiAgICAgICAgICB5OiB0aGlzLnBvc2l0aW9uLnksXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi91dGlsL2ludGVyYWN0aW9uLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2dnbGUge1xuXG4gIGNvbnN0cnVjdG9yKHN0YXRlKSB7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlIHx8IGZhbHNlO1xuICB9XG5cbiAgZmxpcChzdGF0ZSkge1xuICAgIGlmIChzdGF0ZSB8fCBzdGF0ZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZSA9ICF0aGlzLnN0YXRlO1xuICAgIH1cbiAgfVxuXG4gIG9uKCkge1xuICAgIHRoaXMuc3RhdGUgPSB0cnVlO1xuICB9XG5cbiAgb2ZmKCkge1xuICAgIHRoaXMuc3RhdGUgPSBmYWxzZTtcbiAgfVxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvbW9kZWxzL3RvZ2dsZS5qcyIsIid1c2Ugc3RyaWN0JztcblxubGV0IHN2ZyA9IHJlcXVpcmUoJy4uL3V0aWwvc3ZnJyk7XG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcbmxldCBTdGVwID0gcmVxdWlyZSgnLi4vbW9kZWxzL3N0ZXAnKTtcbmltcG9ydCAqIGFzIEludGVyYWN0aW9uIGZyb20gJy4uL3V0aWwvaW50ZXJhY3Rpb24nO1xuXG4vKipcbiogU2xpZGVyXG4qXG4qIEBkZXNjcmlwdGlvbiBIb3Jpem9udGFsIG9yIHZlcnRpY2FsIHNsaWRlciB3aXRoIHNldHRhYmxlIGludGVyYWN0aW9uIG1vZGVzLlxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT1cInNsaWRlclwiIHN0ZXA9MC4yPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIHNsaWRlciA9IG5ldyBOZXh1cy5TbGlkZXIoJyN0YXJnZXQnKVxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgc2xpZGVyID0gbmV3IE5leHVzLlNsaWRlcignI3RhcmdldCcse1xuKiAgICAgJ3NpemUnOiBbMTIwLDIwXSxcbiogICAgICdtb2RlJzogJ3JlbGF0aXZlJywgIC8vICdyZWxhdGl2ZScgb3IgJ2Fic29sdXRlJ1xuKiAgICAgJ21pbic6IDAsXG4qICAgICAnbWF4JzogMSxcbiogICAgICdzdGVwJzogMCxcbiogICAgICd2YWx1ZSc6IDBcbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgd2hlbiB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuKiBFdmVudCBkYXRhOiA8aT5udW1iZXI8L2k+IFRoZSBudW1iZXIgdmFsdWUgb2YgdGhlIGludGVyZmFjZS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogc2xpZGVyLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKHYpIHtcbiogICBjb25zb2xlLmxvZyh2KTtcbiogfSlcbipcbipcbiovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNsaWRlciBleHRlbmRzIEludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsnbWluJywnbWF4JywndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICdzaXplJzogWzEyMCwyMF0sXG4gICAgICAnbW9kZSc6ICdyZWxhdGl2ZScsICAvLyAncmVsYXRpdmUnIG9yICdhYnNvbHV0ZSdcbiAgICAgICdtaW4nOiAwLFxuICAgICAgJ21heCc6IDEsXG4gICAgICAnc3RlcCc6IDAsXG4gICAgICAndmFsdWUnOiAwXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuICAgIHRoaXMub3JpZW50YXRpb24gPSAndmVydGljYWwnOyAvLyBUaGlzIHdpbGwgY2hhbmdlIGF1dG9tYXRpY2FsbHkgdG8gJ2hvcml6b250YWwnaWYgdGhlIGludGVyZmFjZSBpcyB3aWRlciB0aGFuIGl0IGlzIHRhbGwuXG5cbiAgICB0aGlzLl92YWx1ZSA9IG5ldyBTdGVwKHRoaXMuc2V0dGluZ3MubWluLCB0aGlzLnNldHRpbmdzLm1heCwgdGhpcy5zZXR0aW5ncy5zdGVwLCB0aGlzLnNldHRpbmdzLnZhbHVlKTtcblxuICAgIHRoaXMucG9zaXRpb24gPSBuZXcgSW50ZXJhY3Rpb24uSGFuZGxlKHRoaXMuc2V0dGluZ3MubW9kZSx0aGlzLm9yaWVudGF0aW9uLFswLHRoaXMud2lkdGhdLFt0aGlzLmhlaWdodCwwXSk7XG4gICAgdGhpcy5wb3NpdGlvbi52YWx1ZSA9IHRoaXMuX3ZhbHVlLm5vcm1hbGl6ZWQ7XG5cbiAgICB0aGlzLmluaXQoKTtcblxuICAgIHRoaXMucG9zaXRpb24uZGlyZWN0aW9uID0gdGhpcy5vcmllbnRhdGlvbjtcblxuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnZhbHVlKTtcblxuICB9XG5cbiAgYnVpbGRJbnRlcmZhY2UoKSB7XG5cbiAgICB0aGlzLmJhciA9IHN2Zy5jcmVhdGUoJ3JlY3QnKTtcbiAgICB0aGlzLmZpbGxiYXIgPSBzdmcuY3JlYXRlKCdyZWN0Jyk7XG4gICAgdGhpcy5rbm9iID0gc3ZnLmNyZWF0ZSgnY2lyY2xlJyk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXIpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZpbGxiYXIpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmtub2IpO1xuXG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuXG4gICAgaWYgKHRoaXMud2lkdGggPCB0aGlzLmhlaWdodCkge1xuICAgICAgdGhpcy5vcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCc7XG4gICAgICB0aGlzLnBvc2l0aW9uLmRpcmVjdGlvbiA9ICd2ZXJ0aWNhbCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XG4gICAgICB0aGlzLnBvc2l0aW9uLmRpcmVjdGlvbiA9ICdob3Jpem9udGFsJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wb3NpdGlvbikge1xuICAgICAgdGhpcy5wb3NpdGlvbi5yZXNpemUoWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKTtcbiAgICB9XG5cbiAgICBsZXQgeCwgeSwgdywgaCwgYmFyT2Zmc2V0LCBjb3JuZXJSYWRpdXM7XG4gICAgdGhpcy5rbm9iRGF0YSA9IHtcbiAgICAgIGxldmVsOiAwLFxuICAgICAgcjogMFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgdGhpcy50aGlja25lc3MgPSB0aGlzLndpZHRoIC8gMjtcbiAgICBcdHggPSB0aGlzLndpZHRoLzI7XG4gICAgXHR5ID0gMDtcbiAgICBcdHcgPSB0aGlzLnRoaWNrbmVzcztcbiAgICBcdGggPSB0aGlzLmhlaWdodDtcbiAgICAgIHRoaXMua25vYkRhdGEuciA9IHRoaXMudGhpY2tuZXNzICogMC44O1xuICAgIFx0dGhpcy5rbm9iRGF0YS5sZXZlbCA9IGgtdGhpcy5rbm9iRGF0YS5yLXRoaXMubm9ybWFsaXplZCooaC10aGlzLmtub2JEYXRhLnIqMik7XG4gICAgICBiYXJPZmZzZXQgPSAndHJhbnNsYXRlKCcrdGhpcy50aGlja25lc3MqKC0xKS8yKycsMCknO1xuICAgICAgY29ybmVyUmFkaXVzID0gdy8yO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRoaWNrbmVzcyA9IHRoaXMuaGVpZ2h0IC8gMjtcbiAgICBcdHggPSAwO1xuICAgIFx0eSA9IHRoaXMuaGVpZ2h0LzI7XG4gICAgXHR3ID0gdGhpcy53aWR0aDtcbiAgICBcdGggPSB0aGlzLnRoaWNrbmVzcztcbiAgICAgIHRoaXMua25vYkRhdGEuciA9IHRoaXMudGhpY2tuZXNzICogMC44O1xuICAgIFx0dGhpcy5rbm9iRGF0YS5sZXZlbCA9IHRoaXMubm9ybWFsaXplZCoody10aGlzLmtub2JEYXRhLnIqMikrdGhpcy5rbm9iRGF0YS5yO1xuICAgICAgYmFyT2Zmc2V0ID0gJ3RyYW5zbGF0ZSgwLCcrdGhpcy50aGlja25lc3MqKC0xKS8yKycpJztcbiAgICAgIGNvcm5lclJhZGl1cyA9IGgvMjtcbiAgICB9XG5cbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3gnLHgpO1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgneScseSk7XG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLGJhck9mZnNldCk7XG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdyeCcsY29ybmVyUmFkaXVzKTsgLy8gY29ybmVyIHJhZGl1c1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgncnknLGNvcm5lclJhZGl1cyk7XG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCd3aWR0aCcsdyk7XG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdoZWlnaHQnLGgpO1xuXG4gICAgaWYgKHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ3gnLHgpO1xuICAgICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgneScsdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCd3aWR0aCcsdyk7XG4gICAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCdoZWlnaHQnLGgtdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ3gnLDApO1xuICAgICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgneScseSk7XG4gICAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCdoZWlnaHQnLGgpO1xuICAgIH1cbiAgICB0aGlzLmZpbGxiYXIuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLGJhck9mZnNldCk7XG4gICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgncngnLGNvcm5lclJhZGl1cyk7XG4gICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgncnknLGNvcm5lclJhZGl1cyk7XG5cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3gnLHgpO1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3knLHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeScseSk7XG4gICAgfVxuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYkRhdGEucik7XG5cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmZpbGwpO1xuICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICB9XG5cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLmNsaWNrZWQpIHtcbiAgICAgIHRoaXMua25vYkRhdGEuciA9IHRoaXMudGhpY2tuZXNzKjAuNzU7XG4gICAgfVxuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYkRhdGEucik7XG5cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICBcdCAgIHRoaXMua25vYkRhdGEubGV2ZWwgPSB0aGlzLmtub2JEYXRhLnIrdGhpcy5fdmFsdWUubm9ybWFsaXplZCoodGhpcy5oZWlnaHQtdGhpcy5rbm9iRGF0YS5yKjIpO1xuICAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmhlaWdodCAtIHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMuaGVpZ2h0IC0gdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgICAgdGhpcy5maWxsYmFyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx0aGlzLmtub2JEYXRhLmxldmVsKTtcbiAgICB9IGVsc2Uge1xuICBcdCAgIHRoaXMua25vYkRhdGEubGV2ZWwgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkKih0aGlzLndpZHRoLXRoaXMua25vYkRhdGEucioyKSt0aGlzLmtub2JEYXRhLnI7XG4gICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3gnLHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ3gnLDApO1xuICAgICAgIHRoaXMuZmlsbGJhci5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx0aGlzLmtub2JEYXRhLmxldmVsKTtcbiAgICB9XG4gIH1cblxuXG4gIGNsaWNrKCkge1xuICAgIHRoaXMua25vYkRhdGEuciA9IHRoaXMudGhpY2tuZXNzKjAuOTtcbiAgICB0aGlzLnBvc2l0aW9uLmFuY2hvciA9IHRoaXMubW91c2U7XG4gICAgdGhpcy5tb3ZlKCk7XG4gIH1cblxuICBtb3ZlKCkge1xuICAgIGlmICh0aGlzLmNsaWNrZWQpIHtcbiAgICAgIHRoaXMucG9zaXRpb24udXBkYXRlKHRoaXMubW91c2UpO1xuICAgICAgdGhpcy5fdmFsdWUudXBkYXRlTm9ybWFsKCB0aGlzLnBvc2l0aW9uLnZhbHVlICk7XG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5fdmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcblxuICAgIH1cbiAgfVxuXG4gIHJlbGVhc2UoKSB7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGdldCBub3JtYWxpemVkKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuICB9XG5cbiAgLyoqXG4gIFRoZSBzbGlkZXIncyBjdXJyZW50IHZhbHVlLiBJZiBzZXQgbWFudWFsbHksIHdpbGwgdXBkYXRlIHRoZSBpbnRlcmZhY2UgYW5kIHRyaWdnZXIgdGhlIG91dHB1dCBldmVudC5cbiAgQHR5cGUge251bWJlcn1cbiAgQGV4YW1wbGUgc2xpZGVyLnZhbHVlID0gMTA7XG4gICovXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUudmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHYpIHtcbiAgICB0aGlzLl92YWx1ZS51cGRhdGUodik7XG4gICAgdGhpcy5wb3NpdGlvbi52YWx1ZSA9IHRoaXMuX3ZhbHVlLm5vcm1hbGl6ZWQ7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuX3ZhbHVlLnZhbHVlKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIExvd2VyIGxpbWl0IG9mIHRoZSBzbGlkZXJzJ3Mgb3V0cHV0IHJhbmdlXG4gIEB0eXBlIHtudW1iZXJ9XG4gIEBleGFtcGxlIHNsaWRlci5taW4gPSAxMDAwO1xuICAqL1xuICBnZXQgbWluKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZS5taW47XG4gIH1cbiAgc2V0IG1pbih2KSB7XG4gICAgdGhpcy5fdmFsdWUubWluID0gdjtcbiAgfVxuXG4gIC8qKlxuICBVcHBlciBsaW1pdCBvZiB0aGUgc2xpZGVyJ3Mgb3V0cHV0IHJhbmdlXG4gIEB0eXBlIHtudW1iZXJ9XG4gIEBleGFtcGxlIHNsaWRlci5tYXggPSAxMDAwO1xuICAqL1xuICBnZXQgbWF4KCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZS5tYXg7XG4gIH1cbiAgc2V0IG1heCh2KSB7XG4gICAgdGhpcy5fdmFsdWUubWF4ID0gdjtcbiAgfVxuXG4gIC8qKlxuICBUaGUgaW5jcmVtZW50IHRoYXQgdGhlIHNsaWRlcidzIHZhbHVlIGNoYW5nZXMgYnkuXG4gIEB0eXBlIHtudW1iZXJ9XG4gIEBleGFtcGxlIHNsaWRlci5zdGVwID0gNTtcbiAgKi9cbiAgZ2V0IHN0ZXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlLnN0ZXA7XG4gIH1cbiAgc2V0IHN0ZXAodikge1xuICAgIHRoaXMuX3ZhbHVlLnN0ZXAgPSB2O1xuICB9XG5cbiAgLyoqXG4gIEFic29sdXRlIG1vZGUgKHNsaWRlcidzIHZhbHVlIGp1bXBzIHRvIG1vdXNlIGNsaWNrIHBvc2l0aW9uKSBvciByZWxhdGl2ZSBtb2RlIChtb3VzZSBkcmFnIGNoYW5nZXMgdmFsdWUgcmVsYXRpdmUgdG8gaXRzIGN1cnJlbnQgcG9zaXRpb24pLiBEZWZhdWx0OiBcInJlbGF0aXZlXCIuXG4gIEB0eXBlIHtzdHJpbmd9XG4gIEBleGFtcGxlIHNsaWRlci5tb2RlID0gXCJyZWxhdGl2ZVwiO1xuICAqL1xuICBnZXQgbW9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wb3NpdGlvbi5tb2RlO1xuICB9XG4gIHNldCBtb2RlKHYpIHtcbiAgICB0aGlzLnBvc2l0aW9uLm1vZGUgPSB2O1xuICB9XG5cblxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9zbGlkZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IFRvZ2dsZU1vZGVsID0gcmVxdWlyZSgnLi4vbW9kZWxzL3RvZ2dsZScpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5cbi8qKlxuKiBUb2dnbGVcbipcbiogQGRlc2NyaXB0aW9uIEJpbmFyeSBzd2l0Y2hcbipcbiogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJ0b2dnbGVcIj48L3NwYW4+XG4qXG4qIEBleGFtcGxlXG4qIHZhciB0b2dnbGUgPSBuZXcgTmV4dXMuVG9nZ2xlKCcjdGFyZ2V0JylcbipcbiogQGV4YW1wbGVcbiogdmFyIHRvZ2dsZSA9IG5ldyBOZXh1cy5Ub2dnbGUoJyN0YXJnZXQnLHtcbiogICAgICdzaXplJzogWzQwLDIwXSxcbiogICAgICdzdGF0ZSc6IGZhbHNlXG4qIH0pXG4qXG4qIEBvdXRwdXRcbiogY2hhbmdlXG4qIEZpcmVzIGFueSB0aW1lIHRoZSBpbnRlcmZhY2UncyB2YWx1ZSBjaGFuZ2VzLiA8YnI+XG4qIFBhcmFtZXRlcjogVGhlIGJvb2xlYW4gc3RhdGUgb2YgdGhlIGludGVyZmFjZS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogdG9nZ2xlLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKHYpIHtcbiogICBjb25zb2xlLmxvZyh2KTtcbiogfSlcbipcbipcbiovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2dnbGUgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFs0MCwyMF0sXG4gICAgICAndGFyZ2V0JzogZmFsc2UsXG4gICAgICAnc3RhdGUnOiBmYWxzZVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLl9zdGF0ZSA9IG5ldyBUb2dnbGVNb2RlbCh0aGlzLnNldHRpbmdzLnN0YXRlKTtcblxuICAgIHRoaXMuaW5pdCgpO1xuXG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcblxuICAgIHRoaXMuYmFyID0gc3ZnLmNyZWF0ZSgncmVjdCcpO1xuICAgIHRoaXMua25vYiA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJhcik7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMua25vYik7XG5cbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG5cbiAgICBpZiAodGhpcy5oZWlnaHQgPCB0aGlzLndpZHRoLzIpIHtcbiAgICAgIHRoaXMua25vYlNpemUgPSB0aGlzLmhlaWdodC8yO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtub2JTaXplID0gdGhpcy53aWR0aC80O1xuICAgIH1cblxuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgneCcsdGhpcy53aWR0aC8yIC0gdGhpcy5rbm9iU2l6ZSoxLjUpO1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgneScsdGhpcy5oZWlnaHQvMiAtIHRoaXMua25vYlNpemUvMik7XG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdyeCcsdGhpcy5rbm9iU2l6ZS8yKTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3J5Jyx0aGlzLmtub2JTaXplLzIpO1xuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMua25vYlNpemUqMyk7XG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMua25vYlNpemUpO1xuXG4gICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3gnLHRoaXMud2lkdGgvMiAtIHRoaXMua25vYlNpemUpO1xuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmhlaWdodC8yKTtcbiAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdyJyx0aGlzLmtub2JTaXplKTtcblxuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUpIHtcbiAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLndpZHRoLzIgLSB0aGlzLmtub2JTaXplKTtcbiAgICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmZpbGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy53aWR0aC8yICsgdGhpcy5rbm9iU2l6ZSk7XG4gICAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGNsaWNrKCkge1xuICAgIHRoaXMuZmxpcCgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICB9XG5cbiAgLyoqXG4gIFdoZXRoZXIgdGhlIHRvZ2dsZSBpcyBjdXJyZW50bHkgb24gb3Igb2ZmLiBTZXR0aW5nIHRoaXMgcHJvcGVydHkgd2lsbCB1cGRhdGUgdGhlIHRvZ2dsZSBpbnRlcmZhY2UgYW5kIHRyaWdnZXIgdGhlIG91dHB1dCBldmVudC5cbiAgQHR5cGUge2Jvb2xlYW59XG4gIEBleGFtcGxlIHRvZ2dsZS5zdGF0ZSA9IGZhbHNlO1xuICAqL1xuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLnN0YXRlO1xuICB9XG4gIHNldCBzdGF0ZSh2YWx1ZSkge1xuICAgIHRoaXMuX3N0YXRlLmZsaXAodmFsdWUpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnN0YXRlKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cblxuICAvKipcbiAgKiBTd2l0Y2ggdGhlIHRvZ2dsZSBzdGF0ZSB0byBpdHMgb3Bwb3NpdGUgc3RhdGVcbiAgKiBAZXhhbXBsZVxuICAqIHRvZ2dsZS5mbGlwKCk7XG4gICovXG4gIGZsaXAoKSB7XG4gICAgdGhpcy5fc3RhdGUuZmxpcCgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvdG9nZ2xlLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBCdXR0b25UZW1wbGF0ZSA9IHJlcXVpcmUoJy4uL2NvbXBvbmVudHMvYnV0dG9udGVtcGxhdGUnKTtcblxuLyoqXG4qIEJ1dHRvblxuKlxuKiBAZGVzY3JpcHRpb24gQ2lyY3VsYXIgYnV0dG9uIHdpdGggb3B0aW9uYWwgYWZ0ZXJ0b3VjaC5cbipcbiogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJidXR0b25cIj48L3NwYW4+XG4qXG4qIEBleGFtcGxlXG4qIHZhciBidXR0b24gPSBuZXcgTmV4dXMuQnV0dG9uKCcjdGFyZ2V0JylcbipcbiogQGV4YW1wbGVcbiogdmFyIGJ1dHRvbiA9IG5ldyBOZXh1cy5CdXR0b24oJyN0YXJnZXQnLHtcbiogICAnc2l6ZSc6IFs4MCw4MF0sXG4qICAgJ21vZGUnOiAnYWZ0ZXJ0b3VjaCcsXG4qICAgJ3N0YXRlJzogZmFsc2VcbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgdGhlIGludGVyZmFjZSdzIHZhbHVlIGNoYW5nZXMuIDxicj5cbiogSW4gPGI+YnV0dG9uIG1vZGU8L2I+LCA8Yj50b2dnbGUgbW9kZTwvYj4sIGFuZCA8Yj5pbXB1bHNlIG1vZGU8L2I+LCB0aGUgb3V0cHV0IGRhdGEgaXMgYSBib29sZWFuIGRlc2NyaWJpbmcgdGhlIHN0YXRlIG9mIHRoZSBidXR0b24uPGJyPlxuKiBJbiA8Yj5hZnRlcnRvdWNoIG1vZGU8L2I+LCB0aGUgb3V0cHV0IGRhdGEgaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgeCAoMC0xKSBhbmQgeSAoMC0xKSBwb3NpdGlvbnMgb2YgYWZ0ZXJ0b3VjaC5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogYnV0dG9uLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKHYpIHtcbiogICAvLyB2IGlzIHRoZSB2YWx1ZSBvZiB0aGUgYnV0dG9uXG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCdXR0b24gZXh0ZW5kcyBCdXR0b25UZW1wbGF0ZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsnbW9kZSddO1xuXG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFs4MCw4MF0sXG4gICAgICAnbW9kZSc6ICdhZnRlcnRvdWNoJywgLy8gYnV0dG9uLCBhZnRlcnRvdWNoLCBpbXB1bHNlLCB0b2dnbGVcbiAgICAgICdzdGF0ZSc6IGZhbHNlXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuXG4gICAgLyoqXG4gICAgKiBJbnRlcmFjdGlvbiBtb2RlOiBzdXBwb3J0cyBcImJ1dHRvblwiLCBcImFmdGVydG91Y2hcIiwgXCJpbXB1bHNlXCIsIG9yIFwidG9nZ2xlXCJcbiAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgKiBAZXhhbXBsZSBidXR0b24ubW9kZSA9ICd0b2dnbGUnO1xuICAgICovXG4gICAgdGhpcy5tb2RlID0gdGhpcy5zZXR0aW5ncy5tb2RlO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcblxuICB9XG5cbiAgYnVpbGRJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5wYWQgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wYWQpO1xuXG4gICAgdGhpcy5pbnRlcmFjdGlvblRhcmdldCA9IHRoaXMucGFkO1xuXG4gICAgLy8gb25seSB1c2VkIGlmIGluICdhZnRlcnRvdWNoJyBtb2RlXG4gICAgdGhpcy5kZWZzID0gc3ZnLmNyZWF0ZSgnZGVmcycpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmRlZnMpO1xuXG4gICAgdGhpcy5ncmFkaWVudCA9IHN2Zy5yYWRpYWxHcmFkaWVudCh0aGlzLmRlZnMsMik7XG5cbiAgICB0aGlzLmdyYWRpZW50LnN0b3BzWzBdLnNldEF0dHJpYnV0ZSgnb2Zmc2V0JywgJzMwJScpO1xuXG4gICAgdGhpcy5ncmFkaWVudC5zdG9wc1sxXS5zZXRBdHRyaWJ1dGUoJ29mZnNldCcsICcxMDAlJyk7XG5cbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG5cbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLndpZHRoLzIpO1xuICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnY3knLHRoaXMuaGVpZ2h0LzIpO1xuICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgncicsIE1hdGgubWluKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpIC8gMiAtIHRoaXMud2lkdGgvNDApO1xuICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgdGhpcy53aWR0aC8yMCk7XG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcblxuICAgIHRoaXMuZ3JhZGllbnQuc3RvcHNbMF0uc2V0QXR0cmlidXRlKCdzdG9wLWNvbG9yJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB0aGlzLmdyYWRpZW50LnN0b3BzWzFdLnNldEF0dHJpYnV0ZSgnc3RvcC1jb2xvcicsIHRoaXMuY29sb3JzLmZpbGwpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICAvKlxuICAqIFVwZGF0ZSB0aGUgdmlzdWFsIGludGVyZmFjZSB1c2luZyBpdHMgY3VycmVudCBzdGF0ZVxuICAqXG4gICogQGV4YW1wbGVcbiAgKiBidXR0b24ucmVuZGVyKCk7XG4gICovXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUpIHtcbiAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmZpbGwpO1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdzdHJva2UnLCB0aGlzLmNvbG9ycy5tZWRpdW1MaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm1vZGU9PT0nYWZ0ZXJ0b3VjaCcpIHtcbiAgICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdzdHJva2UnLCAndXJsKCMnK3RoaXMuZ3JhZGllbnQuaWQrJyknKTtcbiAgICAgICAgdGhpcy5ncmFkaWVudC5lbGVtZW50LnNldEF0dHJpYnV0ZSgnY3gnLCAodGhpcy5wb3NpdGlvbi54KjEwMCkrJyUnKTtcbiAgICAgICAgdGhpcy5ncmFkaWVudC5lbGVtZW50LnNldEF0dHJpYnV0ZSgnY3knLCAoKDEtdGhpcy5wb3NpdGlvbi55KSoxMDApKyclJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgICB9XG4gICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIH1cbiAgfVxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9idXR0b24uanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcbmxldCBUb2dnbGVNb2RlbCA9IHJlcXVpcmUoJy4uL21vZGVscy90b2dnbGUnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xuXG4vKipcbkJ1dHRvbiBUZW1wbGF0ZVxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnV0dG9uVGVtcGxhdGUgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKGFyZ3Msb3B0aW9ucyxkZWZhdWx0cykge1xuXG4gICAgc3VwZXIoYXJncyxvcHRpb25zLGRlZmF1bHRzKTtcblxuICAgIHRoaXMubW9kZSA9IHRoaXMuc2V0dGluZ3MubW9kZSB8fCAnYnV0dG9uJztcblxuICAgIHRoaXMucG9zaXRpb24gPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG5cbiAgICB0aGlzLl9zdGF0ZSA9IG5ldyBUb2dnbGVNb2RlbCh0aGlzLnNldHRpbmdzLnN0YXRlKTtcblxuICB9XG5cbiAgYnVpbGRJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5wYWQgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnI2QxOCcpO1xuICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgJyNkMTgnKTtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsIDQpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucGFkKTtcblxuICAgIHRoaXMuaW50ZXJhY3Rpb25UYXJnZXQgPSB0aGlzLnBhZDtcblxuICAgIHRoaXMuc2l6ZUludGVyZmFjZSgpO1xuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcbiAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLndpZHRoLzIpO1xuICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnY3knLHRoaXMuaGVpZ2h0LzIpO1xuICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgncicsIE1hdGgubWluKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpIC8gMiAtIDIpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuZmlsbCk7XG4gICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB9XG4gIH1cblxuICBkb3duKHBhaW50YnJ1c2gpIHtcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSAnaW1wdWxzZSc6XG4gICAgICAgIHRoaXMudHVybk9uKCk7XG4gICAgICAgIGlmICh0aGlzLnRpbWVvdXQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMudHVybk9mZi5iaW5kKHRoaXMpLDMwKTtcbiAgICAvLyAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5zdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYnV0dG9uJzpcbiAgICAgICAgdGhpcy50dXJuT24oKTtcbiAgICAvLyAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5zdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWZ0ZXJ0b3VjaCc6XG4gICAgICAgIHRoaXMucG9zaXRpb24gPSB7XG4gICAgICAgICAgeDogbWF0aC5jbGlwKHRoaXMubW91c2UueCAvIHRoaXMud2lkdGgsMCwxKSxcbiAgICAgICAgICB5OiBtYXRoLmNsaXAoMS10aGlzLm1vdXNlLnkgLyB0aGlzLmhlaWdodCwwLDEpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMudHVybk9uKCk7XG4gICAgLy8gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAvLyAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgIC8vICAgICAgeDogdGhpcy5wb3NpdGlvbi54LFxuICAgIC8vICAgICAgeTogdGhpcy5wb3NpdGlvbi55LFxuICAgIC8vICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvZ2dsZSc6XG4gICAgICAgIHRoaXMuZmxpcChwYWludGJydXNoKTtcbiAgICAvLyAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5zdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICB9XG5cbiAgYmVuZChtb3VzZSkge1xuICAgIGlmICh0aGlzLm1vZGU9PT0nYWZ0ZXJ0b3VjaCcpIHtcbiAgICAgIHRoaXMubW91c2UgPSBtb3VzZSB8fCB0aGlzLm1vdXNlO1xuICAgICAgdGhpcy5wb3NpdGlvbiA9IHtcbiAgICAgICAgeDogbWF0aC5jbGlwKHRoaXMubW91c2UueCAvIHRoaXMud2lkdGgsMCwxKSxcbiAgICAgICAgeTogbWF0aC5jbGlwKDEgLSB0aGlzLm1vdXNlLnkgLyB0aGlzLmhlaWdodCwwLDEpXG4gICAgICB9O1xuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICAgIHg6IHRoaXMucG9zaXRpb24ueCxcbiAgICAgICAgeTogdGhpcy5wb3NpdGlvbi55LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHVwKCkge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdidXR0b24nOlxuICAgICAgICB0aGlzLnR1cm5PZmYoKTtcbiAgICAgIC8vICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5zdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWZ0ZXJ0b3VjaCc6XG4gICAgICAgIHRoaXMudHVybk9mZigpO1xuICAgICAgICB0aGlzLnBvc2l0aW9uID0ge1xuICAgICAgICAgIHg6IG1hdGguY2xpcCh0aGlzLm1vdXNlLnggLyB0aGlzLndpZHRoLDAsMSksXG4gICAgICAgICAgeTogbWF0aC5jbGlwKDEgLSB0aGlzLm1vdXNlLnkgLyB0aGlzLmhlaWdodCwwLDEpXG4gICAgICAgIH07XG4gICAgICAvLyAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgIC8vICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgLy8gICAgeDogdGhpcy5wb3NpdGlvbi54LFxuICAgICAgLy8gICAgeTogdGhpcy5wb3NpdGlvbi55LFxuICAgICAgLy8gIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKiBvdmVyd3JpdGFibGUgaW50ZXJhY3Rpb24gaGFuZGxlcnMgKi9cblxuICBjbGljaygpIHtcbiAgICB0aGlzLmRvd24oKTtcbiAgfVxuICBtb3ZlKCkge1xuICAgIHRoaXMuYmVuZCgpO1xuICB9XG4gIHJlbGVhc2UoKSB7XG4gICAgdGhpcy51cCgpO1xuICB9XG5cbiAgLyoqXG4gIFdoZXRoZXIgdGhlIGJ1dHRvbiBpcyBvbiAocHJlc3NlZCkgb3Igb2ZmIChub3QgcHJlc3NlZClcbiAgQHR5cGUge2Jvb2xlYW59XG4gIEBleGFtcGxlIGJ1dHRvbi5zdGF0ZSA9IHRydWU7XG4gICovXG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuc3RhdGU7XG4gIH1cbiAgc2V0IHN0YXRlKHZhbHVlKSB7XG4gICAgdGhpcy5fc3RhdGUuZmxpcCh2YWx1ZSk7XG4gICAgaWYgKHRoaXMubW9kZT09PSdhZnRlcnRvdWNoJykge1xuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgICAgc3RhdGU6IHRoaXMuc3RhdGUsXG4gICAgICAgIHg6IHRoaXMucG9zaXRpb24ueCxcbiAgICAgICAgeTogdGhpcy5wb3NpdGlvbi55LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnN0YXRlKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBDaGFuZ2UgdGhlIGJ1dHRvbiB0byBpdHMgYWx0ZXJuYXRlIHN0YXRlIChvZmY9Pm9uLCBvbj0+b2ZmKSwgb3IgZmxpcCBpdCB0byBhIHNwZWNpZmllZCBzdGF0ZS5cbiAgQHBhcmFtIHZhbHVlIHtib29sZWFufSAoT3B0aW9uYWwpIFN0YXRlIHRvIGZsaXAgdG8uXG4gIEBleGFtcGxlIGJ1dHRvbi5mbGlwKCk7XG4gICovXG4gIGZsaXAodmFsdWUpIHtcbiAgICB0aGlzLl9zdGF0ZS5mbGlwKHZhbHVlKTtcbiAgICBpZiAodGhpcy5tb2RlPT09J2FmdGVydG91Y2gnKSB7XG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgeDogdGhpcy5wb3NpdGlvbi54LFxuICAgICAgICB5OiB0aGlzLnBvc2l0aW9uLnksXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFR1cm4gdGhlIGJ1dHRvbidzIHN0YXRlIHRvIHRydWUuXG4gIEBleGFtcGxlIGJ1dHRvbi50dXJuT24oKTtcbiAgKi9cbiAgdHVybk9uKGVtaXR0aW5nKSB7XG4gICAgdGhpcy5fc3RhdGUub24oKTtcbiAgICBpZiAoZW1pdHRpbmchPT1mYWxzZSkge1xuICAgICAgaWYgKHRoaXMubW9kZT09PSdhZnRlcnRvdWNoJykge1xuICAgICAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICAgIHg6IHRoaXMucG9zaXRpb24ueCxcbiAgICAgICAgICB5OiB0aGlzLnBvc2l0aW9uLnksXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuc3RhdGUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFR1cm4gdGhlIGJ1dHRvbidzIHN0YXRlIHRvIGZhbHNlLlxuICBAZXhhbXBsZSBidXR0b24udHVybk9mZigpO1xuICAqL1xuICB0dXJuT2ZmKGVtaXR0aW5nKSB7XG4gICAgdGhpcy5fc3RhdGUub2ZmKCk7XG4gICAgaWYgKGVtaXR0aW5nIT09ZmFsc2UpIHtcbiAgICAgIGlmICh0aGlzLm1vZGU9PT0nYWZ0ZXJ0b3VjaCcpIHtcbiAgICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgICB4OiB0aGlzLnBvc2l0aW9uLngsXG4gICAgICAgICAgeTogdGhpcy5wb3NpdGlvbi55LFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvY29tcG9uZW50cy9idXR0b250ZW1wbGF0ZS5qcyIsIid1c2Ugc3RyaWN0JztcblxubGV0IEJ1dHRvblRlbXBsYXRlID0gcmVxdWlyZSgnLi4vY29tcG9uZW50cy9idXR0b250ZW1wbGF0ZScpO1xuXG4vKipcbiogVGV4dEJ1dHRvblxuKlxuKiBAZGVzY3JpcHRpb24gVGV4dCBidXR0b25cbipcbiogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJ0ZXh0QnV0dG9uXCI+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgdGV4dGJ1dHRvbiA9IG5ldyBOZXh1cy5UZXh0QnV0dG9uKCcjdGFyZ2V0JylcbipcbiogQGV4YW1wbGVcbiogdmFyIHRleHRidXR0b24gPSBuZXcgTmV4dXMuVGV4dEJ1dHRvbignI3RhcmdldCcse1xuKiAgICAgJ3NpemUnOiBbMTUwLDUwXSxcbiogICAgICdzdGF0ZSc6IGZhbHNlLFxuKiAgICAgJ3RleHQnOiAnUGxheScsXG4qICAgICAnYWx0ZXJuYXRlVGV4dCc6ICdTdG9wJ1xuKiB9KVxuKlxuKiBAb3V0cHV0XG4qIGNoYW5nZVxuKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuKiBUaGUgZXZlbnQgZGF0YSBpcyBhIDxpPnN0cmluZzwvaT4gb2YgdGhlIHRleHQgb24gdGhlIGJ1dHRvbiBhdCB0aGUgbW9tZW50IGl0IHdhcyBjbGlja2VkLlxuKlxuKiBAb3V0cHV0ZXhhbXBsZVxuKiB0ZXh0YnV0dG9uLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKHYpIHtcbiogICBjb25zb2xlLmxvZyh2KTtcbiogfSlcbipcbiovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRleHRCdXR0b24gZXh0ZW5kcyBCdXR0b25UZW1wbGF0ZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICdzaXplJzogWzE1MCw1MF0sXG4gICAgICAnc3RhdGUnOiBmYWxzZSxcbiAgICAgICd0ZXh0JzogJ1BsYXknXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuICAgIHRoaXMuX3RleHQgPSB0aGlzLnNldHRpbmdzLnRleHQ7XG5cbiAgICBpZih0aGlzLnNldHRpbmdzLmFsdGVybmF0ZSl7IC8vVE9ETzogUmVtb3ZlIHRoaXMgY29uZGl0aW9uYWwgaW4gYSBicmVha2luZy1jaGFuZ2VzIHJlbGVhc2VcbiAgICAgIHRoaXMuc2V0dGluZ3MuYWx0ZXJuYXRlVGV4dCA9IHRoaXMuc2V0dGluZ3MuYWx0ZXJuYXRlO1xuICAgICAgY29uc29sZS53YXJuKFwiJ2FsdGVybmF0ZScgaW5pdGlhdG9yIGlzIGRlcHJlY2F0ZWQuIFVzZSAnYWx0ZXJuYXRlVGV4dCcgaW5zdGVhZC5cIik7XG4gICAgfVxuICAgIHRoaXMuX2FsdGVybmF0ZVRleHQgPSB0aGlzLnNldHRpbmdzLmFsdGVybmF0ZVRleHQ7XG4gICAgdGhpcy5tb2RlID0gKHRoaXMuc2V0dGluZ3MuYWx0ZXJuYXRlVGV4dCkgPyAndG9nZ2xlJyA6ICdidXR0b24nO1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgICB0aGlzLnN0YXRlID0gdGhpcy5zZXR0aW5ncy5zdGF0ZTtcblxuICB9XG5cbiAgYnVpbGRGcmFtZSgpIHtcblxuICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMucGFyZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG5cbiAgICB0aGlzLnRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy50ZXh0RWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLl90ZXh0O1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRleHRFbGVtZW50KTtcbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuY29sb3IgPSB0aGlzLmNvbG9ycy5kYXJrO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuICAgICAgbGV0IHRleHRzaXplID0gdGhpcy5oZWlnaHQvMztcbiAgICAgIGxldCB0ZXh0c2l6ZTIgPSAodGhpcy53aWR0aCAvICh0aGlzLl90ZXh0Lmxlbmd0aCArIDIpICk7XG4gICAgICB0ZXh0c2l6ZSA9IE1hdGgubWluKHRleHRzaXplLHRleHRzaXplMik7XG4gICAgICBpZiAodGhpcy5hbHRlcm5hdGVUZXh0KSB7XG4gICAgICAgIGxldCB0ZXh0c2l6ZTMgPSAodGhpcy53aWR0aCAvICh0aGlzLmFsdGVybmF0ZVRleHQubGVuZ3RoICsgMikgKTtcbiAgICAgICAgdGV4dHNpemUgPSBNYXRoLm1pbih0ZXh0c2l6ZSx0ZXh0c2l6ZTMpO1xuICAgICAgfVxuICAgICAgbGV0IHN0eWxlcyA9ICd3aWR0aDogJyArIHRoaXMud2lkdGggKyAncHg7JztcbiAgICAgIHN0eWxlcyArPSAnaGVpZ2h0OiAnICsgdGhpcy5oZWlnaHQgKyAncHg7JztcbiAgICAgIHN0eWxlcyArPSAncGFkZGluZzogJysodGhpcy5oZWlnaHQtdGV4dHNpemUpLzIrJ3B4IDBweDsnO1xuICAgICAgc3R5bGVzICs9ICdib3gtc2l6aW5nOiBib3JkZXItYm94Oyc7XG4gICAgICBzdHlsZXMgKz0gJ3RleHQtYWxpZ246IGNlbnRlcjsnO1xuICAgICAgc3R5bGVzICs9ICdmb250LWZhbWlseTogaW5oZXJpdDsnO1xuICAgICAgc3R5bGVzICs9ICdmb250LXdlaWdodDogNzAwOyc7XG4gICAgICBzdHlsZXMgKz0gJ29wYWNpdHk6IDE7JztcbiAgICAgIHN0eWxlcyArPSAnZm9udC1zaXplOicgKyB0ZXh0c2l6ZSArICdweDsnO1xuICAgICAgdGhpcy50ZXh0RWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gc3R5bGVzO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbG9ycy5maWxsO1xuICAgICAgdGhpcy50ZXh0RWxlbWVudC5zdHlsZS5jb2xvciA9IHRoaXMuY29sb3JzLmRhcms7XG4gICAgICB0aGlzLnRleHRFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuX3RleHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbG9ycy5hY2NlbnQ7XG4gICAgICB0aGlzLnRleHRFbGVtZW50LnN0eWxlLmNvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICAgIGlmICh0aGlzLmFsdGVybmF0ZVRleHQpIHtcbiAgICAgICAgdGhpcy50ZXh0RWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLl9hbHRlcm5hdGVUZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy50ZXh0RWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLl90ZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICBUaGUgdGV4dCB0byBkaXNwbGF5IHdoZW4gdGhlIGJ1dHRvbiBpcyBpbiBpdHMgXCJvblwiIHN0YXRlLiBJZiBzZXQsIHRoaXMgcHV0cyB0aGUgYnV0dG9uIGluIFwidG9nZ2xlXCIgbW9kZS5cbiAgQHR5cGUge1N0cmluZ31cbiAgKi9cbiAgZ2V0IGFsdGVybmF0ZVRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FsdGVybmF0ZVRleHQ7XG4gIH1cblxuICBzZXQgYWx0ZXJuYXRlVGV4dCh0ZXh0KSB7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIHRoaXMubW9kZSA9ICd0b2dnbGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vZGUgPSAnYnV0dG9uJztcbiAgICB9XG4gICAgdGhpcy5fYWx0ZXJuYXRlVGV4dCA9IHRleHQ7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gIFRoZSB0ZXh0IHRvIGRpc3BsYXkuIChJZiAuYWx0ZXJuYXRlVGV4dCBleGlzdHMsIHRoZW4gdGhpcyAudGV4dCB3aWxsIG9ubHkgYmUgZGlzcGxheWVkIHdoZW4gdGhlIGJ1dHRvbiBpcyBpbiBpdHMgXCJvZmZcIiBzdGF0ZS4pXG4gIEB0eXBlIHtTdHJpbmd9XG4gICovXG4gIGdldCB0ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLl90ZXh0O1xuICB9XG5cbiAgc2V0IHRleHQodGV4dCkge1xuICAgIHRoaXMuX3RleHQgPSB0ZXh0O1xuICAgIHRoaXMuc2l6ZUludGVyZmFjZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy90ZXh0YnV0dG9uLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG4vL2xldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5sZXQgQnV0dG9uID0gcmVxdWlyZSgnLi4vaW50ZXJmYWNlcy9idXR0b24nKTtcblxuLyoqXG4gKiBSYWRpb0J1dHRvblxuICpcbiAqIEBkZXNjcmlwdGlvbiBBbiBhcnJheSBvZiBidXR0b25zLiBCeSBkZWZhdWx0LCBzZWxlY3Rpbmcgb25lIGJ1dHRvbiB3aWxsIGRlc2VsZWN0IGFsbCBvdGhlciBidXR0b25zLCBidXQgdGhpcyBjYW4gYmUgY3VzdG9taXplZCB1c2luZyB0aGUgQVBJIGJlbG93LlxuICpcbiAqIEBkZW1vIDxkaXYgbmV4dXMtdWk9XCJSYWRpb0J1dHRvblwiPjwvZGl2PlxuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgcmFkaW9idXR0b24gPSBuZXcgTmV4dXMuUmFkaW9CdXR0b24oJyN0YXJnZXQnKVxuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgcmFkaW9idXR0b24gPSBuZXcgTmV4dXMuUmFkaW9CdXR0b24oJyN0YXJnZXQnLHtcbiAqICAgJ3NpemUnOiBbMTIwLDI1XSxcbiAqICAgJ251bWJlck9mQnV0dG9ucyc6IDQsXG4gKiAgICdhY3RpdmUnOiAtMVxuICogfSlcbiAqXG4gKiBAb3V0cHV0XG4gKiBjaGFuZ2VcbiAqIEZpcmVzIGFueSB0aW1lIHRoZSBpbnRlcmZhY2UncyB2YWx1ZSBjaGFuZ2VzLiA8YnI+XG4gKiBUaGUgZXZlbnQgZGF0YSBhbiA8aT5pbnRlZ2VyPC9pPiwgdGhlIGluZGV4IG9mIHRoZSBidXR0b24gdGhhdCBpcyBjdXJyZW50bHkgb24uIElmIG5vIGJ1dHRvbiBpcyBzZWxlY3RlZCwgdGhlIHZhbHVlIHdpbGwgYmUgLTEuXG4gKlxuICogQG91dHB1dGV4YW1wbGVcbiAqIHJhZGlvYnV0dG9uLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKHYpIHtcbiAqICAgY29uc29sZS5sb2codik7XG4gKiB9KVxuICpcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYWRpb0J1dHRvbiBleHRlbmRzIEludGVyZmFjZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBvcHRpb25zID0gWyd2YWx1ZSddO1xuXG4gICAgbGV0IGRlZmF1bHRzID0ge1xuICAgICAgc2l6ZTogWzEyMCwgMjVdLFxuICAgICAgbnVtYmVyT2ZCdXR0b25zOiA0LFxuICAgICAgYWN0aXZlOiAtMVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsIG9wdGlvbnMsIGRlZmF1bHRzKTtcblxuICAgIHRoaXMuYnV0dG9ucyA9IFtdO1xuICAgIHRoaXMuX251bWJlck9mQnV0dG9ucyA9IHRoaXMuc2V0dGluZ3MubnVtYmVyT2ZCdXR0b25zO1xuICAgIHRoaXMuYWN0aXZlID0gdGhpcy5zZXR0aW5ncy5hY3RpdmU7XG5cbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgYnVpbGRGcmFtZSgpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLnBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuICB9XG5cbiAgYnVpbGRJbnRlcmZhY2UoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9udW1iZXJPZkJ1dHRvbnM7IGkrKykge1xuICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblxuICAgICAgbGV0IGJ1dHRvbiA9IG5ldyBCdXR0b24oXG4gICAgICAgIGNvbnRhaW5lcixcbiAgICAgICAge1xuICAgICAgICAgIG1vZGU6ICd0b2dnbGUnLFxuICAgICAgICAgIGNvbXBvbmVudDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnVwZGF0ZS5iaW5kKHRoaXMsIGkpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmJ1dHRvbnMucHVzaChidXR0b24pO1xuICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgfVxuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcbiAgICBsZXQgb3JpZW50YXRpb247XG4gICAgaWYgKHRoaXMud2lkdGggPiB0aGlzLmhlaWdodCkge1xuICAgICAgb3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCc7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9yaWVudGF0aW9uID0gJ3ZlcnRpY2FsJztcbiAgICB9XG5cbiAgICBsZXQgYnV0dG9uV2lkdGggPVxuICAgICAgdGhpcy53aWR0aCAvIChvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IDEgOiB0aGlzLl9udW1iZXJPZkJ1dHRvbnMpO1xuICAgIGxldCBidXR0b25IZWlnaHQgPVxuICAgICAgdGhpcy5oZWlnaHQgLyAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgPyB0aGlzLl9udW1iZXJPZkJ1dHRvbnMgOiAxKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbnVtYmVyT2ZCdXR0b25zOyBpKyspIHtcbiAgICAgIHRoaXMuYnV0dG9uc1tpXS5yZXNpemUoYnV0dG9uV2lkdGgsIGJ1dHRvbkhlaWdodCk7XG4gICAgfVxuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9udW1iZXJPZkJ1dHRvbnM7IGkrKykge1xuICAgICAgdGhpcy5idXR0b25zW2ldLmNvbG9ycyA9IHRoaXMuY29sb3JzO1xuICAgICAgdGhpcy5idXR0b25zW2ldLnJlbmRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZShpbmRleCkge1xuICAgIGlmICh0aGlzLmJ1dHRvbnNbaW5kZXhdLnN0YXRlKSB7XG4gICAgICB0aGlzLnNlbGVjdChpbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVzZWxlY3QoKTtcbiAgICB9XG4gICAgLy8gIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChpID09PSB0aGlzLmFjdGl2ZSkge1xuICAgICAgICB0aGlzLmJ1dHRvbnNbaV0udHVybk9uKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYnV0dG9uc1tpXS50dXJuT2ZmKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgU2VsZWN0IG9uZSBidXR0b24gYW5kIGRlc2VsZWN0IGFsbCBvdGhlciBidXR0b25zLlxuICBAcGFyYW0gaW5kZXgge251bWJlcn0gVGhlIGluZGV4IG9mIHRoZSBidXR0b24gdG8gc2VsZWN0XG4gICovXG4gIHNlbGVjdChpbmRleCkge1xuICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgdGhpcy5idXR0b25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5hY3RpdmUgPSBpbmRleDtcbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJywgdGhpcy5hY3RpdmUpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgRGVzZWxlY3QgYWxsIGJ1dHRvbnMuXG4gICovXG4gIGRlc2VsZWN0KCkge1xuICAgIHRoaXMuYWN0aXZlID0gLTE7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCB0aGlzLmFjdGl2ZSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGdldCBudW1iZXJPZkJ1dHRvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX251bWJlck9mQnV0dG9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgaG93IG1hbnkgYnV0dG9ucyBhcmUgaW4gdGhlIGludGVyZmFjZVxuICAgKiBAcGFyYW0gIHtudW1iZXJ9IGJ1dHRvbnMgSG93IG1hbnkgYnV0dG9ucyBhcmUgaW4gdGhlIGludGVyZmFjZVxuICAgKi9cbiAgc2V0IG51bWJlck9mQnV0dG9ucyhidXR0b25zKSB7XG4gICAgdGhpcy5fbnVtYmVyT2ZCdXR0b25zID0gYnV0dG9ucztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYnV0dG9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5idXR0b25zW2ldLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5idXR0b25zID0gW107XG4gICAgLy8gIGZvciAobGV0IGk9MDtpPHRoaXMuYnV0dG9ucy5sZW5ndGg7aSsrKSB7XG4gICAgLy8gICAgdGhpcy5idXR0b25zW2ldLmRlc3Ryb3koKTtcbiAgICAvLyAgfVxuICAgIHRoaXMuZW1wdHkoKTtcbiAgICB0aGlzLmJ1aWxkSW50ZXJmYWNlKCk7XG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9pbnRlcmZhY2VzL3JhZGlvYnV0dG9uLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcbmxldCBTdGVwID0gcmVxdWlyZSgnLi4vbW9kZWxzL3N0ZXAnKTtcbmxldCBtYXRoID0gcmVxdWlyZSgnLi4vdXRpbC9tYXRoJyk7XG5sZXQgdXRpbCA9IHJlcXVpcmUoJy4uL3V0aWwvdXRpbCcpO1xuXG4vKipcbiogTnVtYmVyXG4qXG4qIEBkZXNjcmlwdGlvbiBOdW1iZXIgaW50ZXJmYWNlIHdoaWNoIGlzIGNvbnRyb2xsYWJsZSBieSBkcmFnZ2luZyBvciB0eXBpbmcuXG4qXG4qIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwibnVtYmVyXCI+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgbnVtYmVyID0gbmV3IE5leHVzLk51bWJlcignI3RhcmdldCcpXG4qXG4qIEBleGFtcGxlXG4qIHZhciBudW1iZXIgPSBuZXcgTmV4dXMuTnVtYmVyKCcjdGFyZ2V0Jyx7XG4qICAgJ3NpemUnOiBbNjAsMzBdLFxuKiAgICd2YWx1ZSc6IDAsXG4qICAgJ21pbic6IDAsXG4qICAgJ21heCc6IDIwMDAwLFxuKiAgICdzdGVwJzogMVxuKiB9KVxuKlxuKiBAb3V0cHV0XG4qIGNoYW5nZVxuKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuKiBUaGUgZXZlbnQgZGF0YSBpcyB0aGUgbnVtYmVyIHZhbHVlIG9mIHRoZSBpbnRlcmZhY2UuXG4qXG4qIEBvdXRwdXRleGFtcGxlXG4qIG51bWJlci5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qXG4qL1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlciBleHRlbmRzIEludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICdzaXplJzogWzYwLDMwXSxcbiAgICAgICd2YWx1ZSc6IDAsXG4gICAgICAnbWluJzogMCxcbiAgICAgICdtYXgnOiAyMDAwMCxcbiAgICAgICdzdGVwJzogMVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLl92YWx1ZSA9IG5ldyBTdGVwKHRoaXMuc2V0dGluZ3MubWluLHRoaXMuc2V0dGluZ3MubWF4LHRoaXMuc2V0dGluZ3Muc3RlcCx0aGlzLnNldHRpbmdzLnZhbHVlKTtcblxuICAgIC8qXG4gICAgRGVmYXVsdDogMi4gSG93IG1hbnkgZGVjaW1hbCBwbGFjZXMgdG8gY2xpcCB0aGUgbnVtYmVyJ3MgdmlzdWFsIHJlbmRlcmluZyB0by4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgbnVtYmVyJ3MgYWN0dWFsIHZhbHVlIG91dHB1dCAtLSBmb3IgdGhhdCwgc2V0IHRoZSBzdGVwIHByb3BlcnR5IHRvIC4wMSwgLjEsIG9yIDEuXG4gICAgQHR5cGUge251bWJlcn1cbiAgICBAZXhhbXBsZSBudW1iZXIuZGVjaW1hbFBsYWNlcyA9IDI7XG4gICAgKi9cbiAgICB0aGlzLmRlY2ltYWxQbGFjZXMgPSAyO1xuICAgIHRoaXMuYWN0dWFsID0gMDtcblxuICAgIHRoaXMubWF4ID0gdGhpcy5fdmFsdWUubWF4O1xuXG4gICAgdGhpcy5taW4gPSB0aGlzLl92YWx1ZS5taW47XG5cbiAgICB0aGlzLnN0ZXAgPSB0aGlzLl92YWx1ZS5zdGVwO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcblxuICB9XG5cbiAgYnVpbGRGcmFtZSgpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgIHRoaXMuZWxlbWVudC50eXBlID0gJ3RleHQnO1xuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5jb2xvciA9IHRoaXMuY29sb3JzLmRhcms7XG4gICAgICBpZiAodGhpcy5lbGVtZW50LnZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMuZWxlbWVudC52YWx1ZSk7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICB9XG4gICAgfS5iaW5kKHRoaXMpKTtcblxuICAgIHV0aWwuc2V0SW5wdXRGaWx0ZXIodGhpcy5lbGVtZW50LCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIC9eLT9cXGQqXFwuP1xcZCokLy50ZXN0KHZhbHVlKTsgfSk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoZS53aGljaD09PTEzKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudC5ibHVyKCk7XG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLmVsZW1lbnQudmFsdWU7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIH1cbiAgICB9LmJpbmQodGhpcyksIHRydWUpO1xuXG4gICAgdGhpcy5wYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcblxuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcblxuICAgIHRoaXMuX21pbkRpbWVuc2lvbiA9IE1hdGgubWluKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpO1xuXG4gICAgbGV0IHN0eWxlcyA9ICd3aWR0aDogJyArIHRoaXMud2lkdGggKyAncHg7JztcbiAgICBzdHlsZXMgKz0gJ2hlaWdodDogJyArIHRoaXMuaGVpZ2h0ICsgJ3B4Oyc7XG4gICAgc3R5bGVzICs9ICdiYWNrZ3JvdW5kLWNvbG9yOiAjZTdlN2U3Oyc7XG4gICAgc3R5bGVzICs9ICdjb2xvcjogIzMzMzsnO1xuICAgIHN0eWxlcyArPSAnZm9udC1mYW1pbHk6IGFyaWFsOyc7XG4gICAgc3R5bGVzICs9ICdmb250LXdlaWdodDogNTAwOyc7XG4gICAgc3R5bGVzICs9ICdmb250LXNpemU6JyArIHRoaXMuX21pbkRpbWVuc2lvbi8yICsgJ3B4Oyc7XG4gIC8vICBzdHlsZXMgKz0gJ2hpZ2hsaWdodDogI2QxODsnO1xuICAgIHN0eWxlcyArPSAnYm9yZGVyOiBub25lOyc7XG4gICAgc3R5bGVzICs9ICdvdXRsaW5lOiBub25lOyc7XG4gICAgc3R5bGVzICs9ICdwYWRkaW5nOiAnK3RoaXMuX21pbkRpbWVuc2lvbi80KydweCAnK3RoaXMuX21pbkRpbWVuc2lvbi80KydweDsnO1xuICAgIHN0eWxlcyArPSAnYm94LXNpemluZzogYm9yZGVyLWJveDsnO1xuICAgIHN0eWxlcyArPSAndXNlclNlbGVjdDogdGV4dDsnO1xuICAgIHN0eWxlcyArPSAnbW96VXNlclNlbGVjdDogdGV4dDsnO1xuICAgIHN0eWxlcyArPSAnd2Via2l0VXNlclNlbGVjdDogdGV4dDsnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5jc3NUZXh0ICs9IHN0eWxlcztcblxuICAgIC8vIHRvIGFkZCBldmVudHVhbGx5XG4gICAgLy8gdmFyIGNzcyA9ICcjJyt0aGlzLmVsZW1lbnRJRCsnOjpzZWxlY3Rpb257IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50IH0nO1xuXG4gICAgdGhpcy5lbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcblxuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5jb2xvciA9IHRoaXMuY29sb3JzLmRhcms7XG4gIH1cblxuICByZW5kZXIoKSB7XG5cbiAgICB0aGlzLmVsZW1lbnQudmFsdWUgPSBtYXRoLnBydW5lKHRoaXMudmFsdWUsdGhpcy5kZWNpbWFsUGxhY2VzKTtcblxuICB9XG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5oYXNNb3ZlZCA9IGZhbHNlO1xuICAgIHRoaXMuZWxlbWVudC5yZWFkT25seSA9IHRydWU7XG5cdCAgdGhpcy5hY3R1YWwgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMuaW5pdGlhbCA9IHsgeTogdGhpcy5tb3VzZS55IH07XG4gICAgdGhpcy5jaGFuZ2VGYWN0b3IgPSBtYXRoLmludmVydCggdGhpcy5tb3VzZS54IC8gdGhpcy53aWR0aCApO1xuICB9XG5cbiAgbW92ZSgpIHtcbiAgICB0aGlzLmhhc01vdmVkID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG5cbiAgICAgIGxldCBuZXd2YWx1ZSA9IHRoaXMuYWN0dWFsIC0gKHRoaXMubW91c2UueSAtIHRoaXMuaW5pdGlhbC55KSAqICggbWF0aC5jbGlwKCB0aGlzLm1heC10aGlzLm1pbiwgMCwgMTAwMCApIC8gMjAwICkgKiBNYXRoLnBvdyh0aGlzLmNoYW5nZUZhY3RvciwyKTtcbiAgICAgIHRoaXMudmFsdWUgPSBuZXd2YWx1ZTtcblxuICBcdFx0dGhpcy5yZW5kZXIoKTtcbiAgICAgIGlmICh0aGlzLl92YWx1ZS5jaGFuZ2VkKSB7XG4gICAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnZhbHVlKTtcbiAgICAgIH1cblxuICBcdH1cbiAgfVxuXG4gIHJlbGVhc2UoKSB7XG4gICAgaWYgKCF0aGlzLmhhc01vdmVkKSB7XG4gICAgICB0aGlzLmVsZW1lbnQucmVhZE9ubHkgPSBmYWxzZTtcbiAgXHRcdHRoaXMuZWxlbWVudC5mb2N1cygpO1xuICBcdFx0dGhpcy5lbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHRoaXMuZWxlbWVudC52YWx1ZS5sZW5ndGgpO1xuICBcdFx0dGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29sb3JzLmFjY2VudDtcbiAgXHRcdHRoaXMuZWxlbWVudC5zdHlsZS5jb2xvciA9IHRoaXMuY29sb3JzLmxpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gIENvbm5lY3QgdGhpcyBudW1iZXIgaW50ZXJmYWNlIHRvIGEgZGlhbCBvciBzbGlkZXJcbiAgQHBhcmFtIHtJbnRlcmZhY2V9IGVsZW1lbnQgRWxlbWVudCB0byBjb25uZWN0IHRvLlxuICBAZXhhbXBsZSBudW1iZXIubGluayhzbGlkZXIpXG4gICovXG4gIGxpbmsoZGVzdGluYXRpb24pIHtcbiAgICB0aGlzLm1pbiA9IGRlc3RpbmF0aW9uLm1pbjtcbiAgICB0aGlzLm1heCA9IGRlc3RpbmF0aW9uLm1heDtcbiAgICB0aGlzLnN0ZXAgPSBkZXN0aW5hdGlvbi5zdGVwO1xuICAgIGRlc3RpbmF0aW9uLm9uKCdjaGFuZ2UnLCh2KSA9PiB7XG4gICAgICB0aGlzLnBhc3NpdmVVcGRhdGUodik7XG4gICAgfSk7XG4gICAgdGhpcy5vbignY2hhbmdlJywodikgPT4ge1xuICAgICAgZGVzdGluYXRpb24udmFsdWUgPSB2O1xuICAgIH0pO1xuICAgIHRoaXMudmFsdWUgPSBkZXN0aW5hdGlvbi52YWx1ZTtcbiAgLyogIHJldHVybiB7XG4gICAgICBsaXN0ZW5lcjE6IGxpc3RlbmVyMSxcbiAgICAgIGxpc3RlbmVyMjogbGlzdGVuZXIyLFxuICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICBsaXN0ZW5lcjEucmVtb3ZlKCkgKG9yIHNpbWlsYXIpXG4gICAgICAgIGxpc3RlbmVyMi5yZW1vdmUoKSAob3Igc2ltaWxhcilcbiAgICAgIH1cbiAgICB9ICovXG4gIH1cblxuICBwYXNzaXZlVXBkYXRlKHYpIHtcbiAgICB0aGlzLl92YWx1ZS51cGRhdGUodik7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBUaGUgaW50ZXJmYWNlJ3MgY3VycmVudCB2YWx1ZS4gSWYgc2V0IG1hbnVhbGx5LCB3aWxsIHVwZGF0ZSB0aGUgaW50ZXJmYWNlIGFuZCB0cmlnZ2VyIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEB0eXBlIHtudW1iZXJ9XG4gIEBleGFtcGxlIG51bWJlci52YWx1ZSA9IDEwO1xuICAqL1xuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlLnZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2KSB7XG4gICAgdGhpcy5fdmFsdWUudXBkYXRlKHYpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnZhbHVlKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIExvd2VyIGxpbWl0IG9mIHRoZSBudW1iZXIncyBvdXRwdXQgcmFuZ2VcbiAgQHR5cGUge251bWJlcn1cbiAgQGV4YW1wbGUgbnVtYmVyLm1pbiA9IDEwMDA7XG4gICovXG4gIGdldCBtaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlLm1pbjtcbiAgfVxuICBzZXQgbWluKHYpIHtcbiAgICB0aGlzLl92YWx1ZS5taW4gPSB2O1xuICB9XG5cbiAgLyoqXG4gIFVwcGVyIGxpbWl0IG9mIHRoZSBudW1iZXIncyBvdXRwdXQgcmFuZ2VcbiAgQHR5cGUge251bWJlcn1cbiAgQGV4YW1wbGUgbnVtYmVyLm1heCA9IDEwMDA7XG4gICovXG4gIGdldCBtYXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlLm1heDtcbiAgfVxuICBzZXQgbWF4KHYpIHtcbiAgICB0aGlzLl92YWx1ZS5tYXggPSB2O1xuICB9XG5cbiAgLyoqXG4gIFRoZSBpbmNyZW1lbnQgdGhhdCB0aGUgbnVtYmVyJ3MgdmFsdWUgY2hhbmdlcyBieS5cbiAgQHR5cGUge251bWJlcn1cbiAgQGV4YW1wbGUgbnVtYmVyLnN0ZXAgPSA1O1xuICAqL1xuICBnZXQgc3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUuc3RlcDtcbiAgfVxuICBzZXQgc3RlcCh2KSB7XG4gICAgdGhpcy5fdmFsdWUuc3RlcCA9IHY7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvbnVtYmVyLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcblxuLyoqXG4qIFNlbGVjdFxuKlxuKiBAZGVzY3JpcHRpb24gRHJvcGRvd24gbWVudVxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT1cInNlbGVjdFwiPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIHNlbGVjdCA9IG5ldyBOZXh1cy5TZWxlY3QoJyN0YXJnZXQnKVxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgc2VsZWN0ID0gbmV3IE5leHVzLlNlbGVjdCgnI3RhcmdldCcse1xuKiAgICdzaXplJzogWzEwMCwzMF0sXG4qICAgJ29wdGlvbnMnOiBbJ2RlZmF1bHQnLCdvcHRpb25zJ11cbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgdGhlIGludGVyZmFjZSdzIHZhbHVlIGNoYW5nZXMuIDxicj5cbiogVGhlIGV2ZW50IGRhdGEgaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRleHQgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIG9wdGlvbiwgYXMgd2VsbCBhcyB0aGUgbnVtZXJpYyBpbmRleCBvZiB0aGUgc2VsZWN0aW9uLlxuKlxuKiBAb3V0cHV0ZXhhbXBsZVxuKiBzZWxlY3Qub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKlxuKi9cblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZWxlY3QgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAgJ3NpemUnOiBbMTAwLDMwXSxcbiAgICAgICAnb3B0aW9ucyc6IFsnZGVmYXVsdCcsJ29wdGlvbnMnXVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gLTE7XG4gICAgdGhpcy5fdmFsdWUgPSBmYWxzZTtcblxuICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLnNldHRpbmdzLm9wdGlvbnM7XG5cbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5mb250U2l6ZSA9IHRoaXMuaGVpZ2h0LzIrJ3B4JztcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUub3V0bGluZSA9ICdub25lJztcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGlnaGxpZ2h0ID0gJ25vbmUnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9IHRoaXMud2lkdGgrJ3B4JztcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gdGhpcy5oZWlnaHQrJ3B4JztcblxuICAgIHRoaXMuYm91bmRSZW5kZXIgPSB0aGlzLnJlbmRlci5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuYm91bmRSZW5kZXIpO1xuXG4gICAgdGhpcy5wYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcblxuICB9XG5cbiAgYXR0YWNoTGlzdGVuZXJzKCkge1xuXG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcblxuICAgIHRoaXMuZGVmaW5lT3B0aW9ucygpO1xuXG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuY29sb3IgPSB0aGlzLmNvbG9ycy5kYXJrO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5ib3JkZXIgPSAnc29saWQgMHB4ICcrdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQ7XG4gIH1cblxuICByZW5kZXIoKSB7XG5cbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuZWxlbWVudC5vcHRpb25zW3RoaXMuZWxlbWVudC5zZWxlY3RlZEluZGV4XS50ZXh0O1xuICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSB0aGlzLmVsZW1lbnQuc2VsZWN0ZWRJbmRleDtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgdmFsdWU6IHRoaXMuX3ZhbHVlLFxuICAgICAgaW5kZXg6IHRoaXMuX3NlbGVjdGVkSW5kZXhcbiAgICB9KTtcblxuICB9XG5cbiAgY2xpY2soKSB7XG5cbiAgfVxuXG4gIG1vdmUoKSB7XG5cbiAgfVxuXG4gIHJlbGVhc2UoKSB7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGxpc3Qgb2Ygb3B0aW9ucy4gVGhpcyByZW1vdmVzIGFsbCBleGlzdGluZyBvcHRpb25zIGFuZCBjcmVhdGVzIGEgbmV3IGxpc3Qgb2Ygb3B0aW9ucy5cbiAgICogQHBhcmFtICB7YXJyYXl9IG9wdGlvbnMgTmV3IGFycmF5IG9mIG9wdGlvbnNcbiAgICovXG5cbiAgZGVmaW5lT3B0aW9ucyhvcHRpb25zKSB7XG5cbiAgLyogIGZ1bmN0aW9uIHJlbW92ZU9wdGlvbnMoc2VsZWN0Ym94KVxuICAgIHtcbiAgICAgICAgdmFyIGk7XG4gICAgICAgIGZvcihpID0gc2VsZWN0Ym94Lm9wdGlvbnMubGVuZ3RoIC0gMSA7IGkgPj0gMCA7IGktLSlcbiAgICAgICAge1xuICAgICAgICAgICAgc2VsZWN0Ym94LnJlbW92ZShpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL3VzaW5nIHRoZSBmdW5jdGlvbjpcbiAgICByZW1vdmVPcHRpb25zKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibXlTZWxlY3RPYmplY3RcIikpOyAqL1xuXG5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfVxuXG4gICAgZm9yKGxldCBpPXRoaXMuZWxlbWVudC5vcHRpb25zLmxlbmd0aC0xOyBpID49IDA7IGktLSkge1xuICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZShpKTtcbiAgICB9XG5cbiAgICBmb3IobGV0IGk9MDtpPHRoaXMuX29wdGlvbnMubGVuZ3RoO2krKykge1xuICAgICAgdGhpcy5lbGVtZW50Lm9wdGlvbnMuYWRkKG5ldyBPcHRpb24odGhpcy5fb3B0aW9uc1tpXSwgaSkpO1xuICAgIH1cblxuICB9XG5cblxuICAvKipcbiAgVGhlIHRleHQgb2YgdGhlIG9wdGlvbiB0aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gSWYgc2V0LCB3aWxsIHVwZGF0ZSB0aGUgaW50ZXJmYWNlIGFuZCB0cmlnZ2VyIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEB0eXBlIHtTdHJpbmd9XG4gIEBleGFtcGxlIHNlbGVjdC52YWx1ZSA9IFwic2F3dG9vdGhcIjtcbiAgKi9cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodikge1xuICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICBmb3IobGV0IGk9MDtpPHRoaXMuZWxlbWVudC5vcHRpb25zLmxlbmd0aDtpKyspIHtcbiAgICAgIGlmICh2ID09PSB0aGlzLmVsZW1lbnQub3B0aW9uc1tpXS50ZXh0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gIFRoZSBudW1lcmljIGluZGV4IG9mIHRoZSBvcHRpb24gdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuIElmIHNldCwgd2lsbCB1cGRhdGUgdGhlIGludGVyZmFjZSBhbmQgdHJpZ2dlciB0aGUgb3V0cHV0IGV2ZW50LlxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBzZWxlY3Quc2VsZWN0ZWRJbmRleCA9IDI7XG4gICovXG4gIGdldCBzZWxlY3RlZEluZGV4KCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICB9XG4gIHNldCBzZWxlY3RlZEluZGV4KHYpIHtcbiAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gdjtcbiAgICB0aGlzLmVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHY7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGN1c3RvbURlc3Ryb3koKSB7XG4gICAgdGhpcy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIHRoaXMuYm91bmRSZW5kZXIpO1xuICB9XG5cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvc2VsZWN0LmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBtYXRoID0gcmVxdWlyZSgnLi4vdXRpbC9tYXRoJyk7XG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcbmxldCBTdGVwID0gcmVxdWlyZSgnLi4vbW9kZWxzL3N0ZXAnKTtcbmltcG9ydCAqIGFzIEludGVyYWN0aW9uIGZyb20gJy4uL3V0aWwvaW50ZXJhY3Rpb24nO1xuXG4vKipcbiogRGlhbFxuKlxuKlxuKiBAZGVzY3JpcHRpb24gRGlhbCB3aXRoIHJhZGlhbCBvciBsaW5lYXIgaW50ZXJhY3Rpb24uXG4qXG4qIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwiZGlhbFwiPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIGRpYWwgPSBuZXcgTmV4dXMuRGlhbCgnI3RhcmdldCcpXG4qXG4qIEBleGFtcGxlXG4qIHZhciBkaWFsID0gbmV3IE5leHVzLkRpYWwoJyN0YXJnZXQnLHtcbiogICAnc2l6ZSc6IFs3NSw3NV0sXG4qICAgJ2ludGVyYWN0aW9uJzogJ3JhZGlhbCcsIC8vIFwicmFkaWFsXCIsIFwidmVydGljYWxcIiwgb3IgXCJob3Jpem9udGFsXCJcbiogICAnbW9kZSc6ICdyZWxhdGl2ZScsIC8vIFwiYWJzb2x1dGVcIiBvciBcInJlbGF0aXZlXCJcbiogICAnbWluJzogMCxcbiogICAnbWF4JzogMSxcbiogICAnc3RlcCc6IDAsXG4qICAgJ3ZhbHVlJzogMFxuKiB9KVxuKlxuKiBAb3V0cHV0XG4qIGNoYW5nZVxuKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuKiBUaGUgZXZlbnQgZGF0YSBpcyB0aGUgbnVtYmVyIHZhbHVlIG9mIHRoZSBpbnRlcmZhY2UuXG4qXG4qIEBvdXRwdXRleGFtcGxlXG4qIGRpYWwub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKiBAdHV0b3JpYWxcbiogRGlhbFxuKiB5Z0dNeHFcbipcbiovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpYWwgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ21pbicsJ21heCcsJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFs3NSw3NV0sXG4gICAgICAnaW50ZXJhY3Rpb24nOiAncmFkaWFsJywgLy8gcmFkaWFsLCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbFxuICAgICAgJ21vZGUnOiAncmVsYXRpdmUnLCAvLyBhYnNvbHV0ZSwgcmVsYXRpdmVcbiAgICAgICdtaW4nOiAwLFxuICAgICAgJ21heCc6IDEsXG4gICAgICAnc3RlcCc6IDAsXG4gICAgICAndmFsdWUnOiAwXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuICAgIHRoaXMuaW50ZXJhY3Rpb24gPSB0aGlzLnNldHRpbmdzLmludGVyYWN0aW9uO1xuXG4gICAgdGhpcy5fdmFsdWUgPSBuZXcgU3RlcCh0aGlzLnNldHRpbmdzLm1pbiwgdGhpcy5zZXR0aW5ncy5tYXgsIHRoaXMuc2V0dGluZ3Muc3RlcCwgdGhpcy5zZXR0aW5ncy52YWx1ZSk7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gbmV3IEludGVyYWN0aW9uLkhhbmRsZSh0aGlzLnNldHRpbmdzLm1vZGUsdGhpcy5pbnRlcmFjdGlvbixbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pO1xuXG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLnZhbHVlID0gdGhpcy5fdmFsdWUudmFsdWU7XG5cbiAgICB0aGlzLnBvc2l0aW9uLnZhbHVlID0gdGhpcy5fdmFsdWUubm9ybWFsaXplZDtcblxuICAgIHRoaXMucHJldmlvdXNBbmdsZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMudmFsdWUpO1xuXG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcblxuICAgIHRoaXMuYmFja2dyb3VuZCA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuICAgIHRoaXMuc2NyZXcgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcbiAgICB0aGlzLmhhbmRsZSA9IHN2Zy5jcmVhdGUoJ3BhdGgnKTtcbiAgICB0aGlzLmhhbmRsZTIgPSBzdmcuY3JlYXRlKCdwYXRoJyk7XG4gICAgdGhpcy5oYW5kbGVGaWxsID0gc3ZnLmNyZWF0ZSgncGF0aCcpO1xuICAgIHRoaXMuaGFuZGxlMkZpbGwgPSBzdmcuY3JlYXRlKCdwYXRoJyk7XG4gICAgdGhpcy5oYW5kbGVMaW5lID0gc3ZnLmNyZWF0ZSgncGF0aCcpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYmFja2dyb3VuZCk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGFuZGxlKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oYW5kbGUyKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oYW5kbGVGaWxsKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oYW5kbGUyRmlsbCk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuaGFuZGxlTGluZSk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2NyZXcpO1xuXG4gIH1cblxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG5cbiAgICB0aGlzLnBvc2l0aW9uLnJlc2l6ZShbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pO1xuXG4gICAgbGV0IGNlbnRlciA9IHtcbiAgICAgIHg6IHRoaXMud2lkdGgvMixcbiAgICAgIHk6IHRoaXMuaGVpZ2h0LzJcbiAgICB9O1xuXG4gICAgbGV0IGRpYW1ldGVyID0gTWF0aC5taW4odGhpcy53aWR0aCx0aGlzLmhlaWdodCk7XG5cbiAgICB0aGlzLmJhY2tncm91bmQuc2V0QXR0cmlidXRlKCdjeCcsIGNlbnRlci54KTtcbiAgICB0aGlzLmJhY2tncm91bmQuc2V0QXR0cmlidXRlKCdjeScsIGNlbnRlci55KTtcbiAgICB0aGlzLmJhY2tncm91bmQuc2V0QXR0cmlidXRlKCdyJywgZGlhbWV0ZXIvMi1kaWFtZXRlci80MCk7XG5cbiAgICB0aGlzLnNjcmV3LnNldEF0dHJpYnV0ZSgnY3gnLCBjZW50ZXIueCk7XG4gICAgdGhpcy5zY3Jldy5zZXRBdHRyaWJ1dGUoJ2N5JywgY2VudGVyLnkpO1xuICAgIHRoaXMuc2NyZXcuc2V0QXR0cmlidXRlKCdyJywgZGlhbWV0ZXIvMTIpO1xuXG4gICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZTtcblxuICAgIGxldCBoYW5kbGVQb2ludHMgPSB7XG4gICAgICBzdGFydDogTWF0aC5QSSoxLjUsXG4gICAgICBlbmQ6IG1hdGguY2xpcCggbWF0aC5zY2FsZSh2YWx1ZSwwLDAuNSxNYXRoLlBJKjEuNSxNYXRoLlBJKjAuNSkgLCBNYXRoLlBJKjAuNSwgTWF0aC5QSSoxLjUgKVxuICAgIH07XG4gICAgbGV0IGhhbmRsZTJQb2ludHMgPSB7XG4gICAgICBzdGFydDogTWF0aC5QSSoyLjUsXG4gICAgICBlbmQ6IG1hdGguY2xpcCggbWF0aC5zY2FsZSh2YWx1ZSwwLjUsMSxNYXRoLlBJKjIuNSxNYXRoLlBJKjEuNSkgLCBNYXRoLlBJKjEuNSwgTWF0aC5QSSoyLjUgKVxuICAgIH07XG5cbiAgICBsZXQgaGFuZGxlUGF0aCA9IHN2Zy5hcmMoY2VudGVyLngsIGNlbnRlci55LCBkaWFtZXRlci8yLWRpYW1ldGVyLzQwLCBoYW5kbGVQb2ludHMuc3RhcnQsIGhhbmRsZVBvaW50cy5lbmQpO1xuICAgIGxldCBoYW5kbGUyUGF0aCA9IHN2Zy5hcmMoY2VudGVyLngsIGNlbnRlci55LCBkaWFtZXRlci8yLWRpYW1ldGVyLzQwLCBoYW5kbGUyUG9pbnRzLnN0YXJ0LCBoYW5kbGUyUG9pbnRzLmVuZCk7XG5cbiAgICB0aGlzLmhhbmRsZS5zZXRBdHRyaWJ1dGUoJ2QnLGhhbmRsZVBhdGgpO1xuICAgIHRoaXMuaGFuZGxlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgZGlhbWV0ZXIvMjApO1xuICAgIHRoaXMuaGFuZGxlLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG5cbiAgICB0aGlzLmhhbmRsZTIuc2V0QXR0cmlidXRlKCdkJyxoYW5kbGUyUGF0aCk7XG4gICAgdGhpcy5oYW5kbGUyLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgZGlhbWV0ZXIvMjApO1xuICAgIHRoaXMuaGFuZGxlMi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnbm9uZScpO1xuXG4gICAgaGFuZGxlUGF0aCArPSAnIEwgJytjZW50ZXIueCsnICcrY2VudGVyLnk7XG5cbiAgICB0aGlzLmhhbmRsZUZpbGwuc2V0QXR0cmlidXRlKCdkJyxoYW5kbGVQYXRoKTtcbiAgICB0aGlzLmhhbmRsZUZpbGwuc2V0QXR0cmlidXRlKCdmaWxsLW9wYWNpdHknLCAnMC4zJyk7XG5cbiAgICBoYW5kbGUyUGF0aCArPSAnIEwgJytjZW50ZXIueCsnICcrY2VudGVyLnk7XG5cbiAgICB0aGlzLmhhbmRsZTJGaWxsLnNldEF0dHJpYnV0ZSgnZCcsaGFuZGxlMlBhdGgpO1xuICAgIHRoaXMuaGFuZGxlMkZpbGwuc2V0QXR0cmlidXRlKCdmaWxsLW9wYWNpdHknLCAnMC4zJyk7XG5cbiAgICBsZXQgYXJjRW5kaW5nQTtcbiAgICBpZiAodmFsdWUgPCAwLjUpIHtcbiAgICAgIGFyY0VuZGluZ0EgPSBoYW5kbGVQb2ludHMuZW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmNFbmRpbmdBID0gaGFuZGxlMlBvaW50cy5lbmQ7XG4gICAgfVxuXG4gICAgbGV0IGFyY0VuZGluZ1ggPSBjZW50ZXIueCArIE1hdGguY29zKGFyY0VuZGluZ0EpICogKGRpYW1ldGVyLzIpO1xuICAgIGxldCBhcmNFbmRpbmdZID0gY2VudGVyLnkgKyBNYXRoLnNpbihhcmNFbmRpbmdBKSAqIChkaWFtZXRlci8yKSAqIC0xO1xuXG4gICAgdGhpcy5oYW5kbGVMaW5lLnNldEF0dHJpYnV0ZSgnZCcsJ00gJytjZW50ZXIueCsnICcrY2VudGVyLnkrJyBMICcrYXJjRW5kaW5nWCsnICcrYXJjRW5kaW5nWSk7XG4gICAgdGhpcy5oYW5kbGVMaW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgZGlhbWV0ZXIvMjApO1xuXG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcbiAgICB0aGlzLmJhY2tncm91bmQuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuZmlsbCk7XG4gICAgdGhpcy5zY3Jldy5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIHRoaXMuaGFuZGxlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB0aGlzLmhhbmRsZTIuc2V0QXR0cmlidXRlKCdzdHJva2UnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIHRoaXMuaGFuZGxlRmlsbC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgIHRoaXMuaGFuZGxlMkZpbGwuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB0aGlzLmhhbmRsZUxpbmUuc2V0QXR0cmlidXRlKCdzdHJva2UnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5fdmFsdWUubm9ybWFsaXplZDtcblxuICAgIGxldCBjZW50ZXIgPSB7XG4gICAgICB4OiB0aGlzLndpZHRoLzIsXG4gICAgICB5OiB0aGlzLmhlaWdodC8yXG4gICAgfTtcblxuICAgIGxldCBkaWFtZXRlciA9IE1hdGgubWluKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpO1xuXG4gICAgbGV0IGhhbmRsZVBvaW50cyA9IHtcbiAgICAgIHN0YXJ0OiBNYXRoLlBJKjEuNSxcbiAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHZhbHVlLDAsMC41LE1hdGguUEkqMS41LE1hdGguUEkqMC41KSAsIE1hdGguUEkqMC41LCBNYXRoLlBJKjEuNSApXG4gICAgfTtcbiAgICBsZXQgaGFuZGxlMlBvaW50cyA9IHtcbiAgICAgIHN0YXJ0OiBNYXRoLlBJICoyLjUsXG4gICAgICBlbmQ6IG1hdGguY2xpcCggbWF0aC5zY2FsZSh2YWx1ZSwwLjUsMSxNYXRoLlBJKjIuNSxNYXRoLlBJKjEuNSkgLCBNYXRoLlBJKjEuNSwgTWF0aC5QSSoyLjUgKVxuICAgIH07XG5cbiAgICBsZXQgaGFuZGxlUGF0aCA9IHN2Zy5hcmMoY2VudGVyLngsIGNlbnRlci55LCBkaWFtZXRlci8yLWRpYW1ldGVyLzQwLCBoYW5kbGVQb2ludHMuc3RhcnQsIGhhbmRsZVBvaW50cy5lbmQpO1xuICAgIGxldCBoYW5kbGUyUGF0aCA9IHN2Zy5hcmMoY2VudGVyLngsIGNlbnRlci55LCBkaWFtZXRlci8yLWRpYW1ldGVyLzQwLCBoYW5kbGUyUG9pbnRzLnN0YXJ0LCBoYW5kbGUyUG9pbnRzLmVuZCk7XG5cbiAgICB0aGlzLmhhbmRsZS5zZXRBdHRyaWJ1dGUoJ2QnLGhhbmRsZVBhdGgpO1xuICAgIHRoaXMuaGFuZGxlMi5zZXRBdHRyaWJ1dGUoJ2QnLGhhbmRsZTJQYXRoKTtcblxuXG4gICAgaGFuZGxlUGF0aCArPSAnIEwgJytjZW50ZXIueCsnICcrY2VudGVyLnk7XG5cbiAgICB0aGlzLmhhbmRsZUZpbGwuc2V0QXR0cmlidXRlKCdkJyxoYW5kbGVQYXRoKTtcblxuICAgIGhhbmRsZTJQYXRoICs9ICcgTCAnK2NlbnRlci54KycgJytjZW50ZXIueTtcblxuICAgIHRoaXMuaGFuZGxlMkZpbGwuc2V0QXR0cmlidXRlKCdkJyxoYW5kbGUyUGF0aCk7XG5cbiAgICBsZXQgYXJjRW5kaW5nQTtcbiAgICBpZiAodmFsdWUgPD0gMC41KSB7XG4gICAgICBhcmNFbmRpbmdBID0gaGFuZGxlUG9pbnRzLmVuZDtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJjRW5kaW5nQSA9IGhhbmRsZTJQb2ludHMuZW5kO1xuICAgIH1cblxuICAgIGxldCBhcmNFbmRpbmdYID0gY2VudGVyLnggKyBNYXRoLmNvcyhhcmNFbmRpbmdBKSAqIChkaWFtZXRlci8yKTtcbiAgICBsZXQgYXJjRW5kaW5nWSA9IGNlbnRlci55ICsgTWF0aC5zaW4oYXJjRW5kaW5nQSkgKiAoZGlhbWV0ZXIvMikgKiAtMTtcblxuICAgIHRoaXMuaGFuZGxlTGluZS5zZXRBdHRyaWJ1dGUoJ2QnLCdNICcrY2VudGVyLngrJyAnK2NlbnRlci55KycgTCAnK2FyY0VuZGluZ1grJyAnK2FyY0VuZGluZ1kpO1xuXG4gIH1cblxuXG4gIGNsaWNrKCkge1xuICAgIGlmICh0aGlzLm1vZGU9PT0ncmVsYXRpdmUnKSB7XG4gICAgICB0aGlzLnByZXZpb3VzQW5nbGUgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5wb3NpdGlvbi5hbmNob3IgPSB0aGlzLm1vdXNlO1xuICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuICAgIHRoaXMubW92ZSgpO1xuICAgfVxuXG4gIG1vdmUoKSB7XG4gICAgaWYgKHRoaXMuY2xpY2tlZCkge1xuXG4gICAgICB0aGlzLnBvc2l0aW9uLnVwZGF0ZSh0aGlzLm1vdXNlKTtcblxuICAgICAgbGV0IGFuZ2xlID0gdGhpcy5wb3NpdGlvbi52YWx1ZSpNYXRoLlBJKjI7XG5cbiAgICAgIGlmIChhbmdsZSA8IDAgKSB7IGFuZ2xlICs9IChNYXRoLlBJKjIpOyB9XG5cbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdyZWxhdGl2ZScpIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmlvdXNBbmdsZSAhPT0gZmFsc2UgJiYgTWF0aC5hYnModGhpcy5wcmV2aW91c0FuZ2xlIC0gYW5nbGUpID4gMikge1xuICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzQW5nbGUgPiAzKSB7XG4gICAgICAgICAgICBhbmdsZSA9IE1hdGguUEkqMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5nbGUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAvKiBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmlvdXNBbmdsZSAhPT0gZmFsc2UgJiYgTWF0aC5hYnModGhpcy5wcmV2aW91c0FuZ2xlIC0gYW5nbGUpID4gMikge1xuICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzQW5nbGUgPiAzKSB7XG4gICAgICAgICAgICBhbmdsZSA9IE1hdGguUEkqMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5nbGUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSAqL1xuICAgICAgdGhpcy5wcmV2aW91c0FuZ2xlID0gYW5nbGU7XG5cbiAgICAgIGxldCByZWFsVmFsdWUgPSBhbmdsZSAvIChNYXRoLlBJKjIpO1xuXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5fdmFsdWUudXBkYXRlTm9ybWFsKCByZWFsVmFsdWUgKTtcblxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JlbGF0aXZlJykge1xuICAgICAgICB0aGlzLnBvc2l0aW9uLnZhbHVlID0gcmVhbFZhbHVlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5fdmFsdWUudmFsdWUpO1xuXG4gICAgICB0aGlzLnJlbmRlcigpO1xuXG4gICAgfVxuICB9XG5cbiAgcmVsZWFzZSgpIHtcbiAgfVxuXG4gIC8qXG4gIERpYWwncyB2YWx1ZS4gV2hlbiBzZXQsIGl0IHdpbGwgYXV0b21hdGljYWxseSBiZSBhZGp1c3QgdG8gZml0IG1pbi9tYXgvc3RlcCBzZXR0aW5ncyBvZiB0aGUgaW50ZXJmYWNlLlxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBkaWFsLnZhbHVlID0gMTA7XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZS52YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZSkge1xuICAgIHRoaXMuX3ZhbHVlLnVwZGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMudmFsdWUpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cbiovXG5cbiAgICAvKipcbiAgICBEaWFsJ3MgdmFsdWUuIFdoZW4gc2V0LCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWRqdXN0IHRvIGZpdCBtaW4vbWF4L3N0ZXAgc2V0dGluZ3Mgb2YgdGhlIGludGVyZmFjZS5cbiAgICBAdHlwZSB7bnVtYmVyfVxuICAgIEBleGFtcGxlIGRpYWwudmFsdWUgPSAxMDtcbiAgICAqL1xuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZS52YWx1ZTtcbiAgICB9XG4gICAgc2V0IHZhbHVlKHYpIHtcbiAgICAgIHRoaXMuX3ZhbHVlLnVwZGF0ZSh2KTtcbiAgICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMuX3ZhbHVlLnZhbHVlKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgTG93ZXIgbGltaXQgb2YgdGhlIGRpYWwncyBvdXRwdXQgcmFuZ2VcbiAgICBAdHlwZSB7bnVtYmVyfVxuICAgIEBleGFtcGxlIGRpYWwubWluID0gMTAwMDtcbiAgICAqL1xuICAgIGdldCBtaW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWUubWluO1xuICAgIH1cbiAgICBzZXQgbWluKHYpIHtcbiAgICAgIHRoaXMuX3ZhbHVlLm1pbiA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgVXBwZXIgbGltaXQgb2YgdGhlIGRpYWwncyBvdXRwdXQgcmFuZ2VcbiAgICBAdHlwZSB7bnVtYmVyfVxuICAgIEBleGFtcGxlIGRpYWwubWF4ID0gMTAwMDtcbiAgICAqL1xuICAgIGdldCBtYXgoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWUubWF4O1xuICAgIH1cbiAgICBzZXQgbWF4KHYpIHtcbiAgICAgIHRoaXMuX3ZhbHVlLm1heCA9IHY7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgVGhlIGluY3JlbWVudCB0aGF0IHRoZSBkaWFsJ3MgdmFsdWUgY2hhbmdlcyBieS5cbiAgICBAdHlwZSB7bnVtYmVyfVxuICAgIEBleGFtcGxlIGRpYWwuc3RlcCA9IDU7XG4gICAgKi9cbiAgICBnZXQgc3RlcCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl92YWx1ZS5zdGVwO1xuICAgIH1cbiAgICBzZXQgc3RlcCh2KSB7XG4gICAgICB0aGlzLl92YWx1ZS5zdGVwID0gdjtcbiAgICB9XG5cbiAgICAvKipcbiAgICBBYnNvbHV0ZSBtb2RlIChkaWFsJ3MgdmFsdWUganVtcHMgdG8gbW91c2UgY2xpY2sgcG9zaXRpb24pIG9yIHJlbGF0aXZlIG1vZGUgKG1vdXNlIGRyYWcgY2hhbmdlcyB2YWx1ZSByZWxhdGl2ZSB0byBpdHMgY3VycmVudCBwb3NpdGlvbikuIERlZmF1bHQ6IFwicmVsYXRpdmVcIi5cbiAgICBAdHlwZSB7c3RyaW5nfVxuICAgIEBleGFtcGxlIGRpYWwubW9kZSA9IFwicmVsYXRpdmVcIjtcbiAgICAqL1xuICAgIGdldCBtb2RlKCkge1xuICAgICAgcmV0dXJuIHRoaXMucG9zaXRpb24ubW9kZTtcbiAgICB9XG4gICAgc2V0IG1vZGUodikge1xuICAgICAgdGhpcy5wb3NpdGlvbi5tb2RlID0gdjtcbiAgICB9XG5cblxuICAvKipcbiAgTm9ybWFsaXplZCB2YWx1ZSBvZiB0aGUgZGlhbC5cbiAgQHR5cGUge251bWJlcn1cbiAgQGV4YW1wbGUgZGlhbC5ub3JtYWxpemVkID0gMC41O1xuICAqL1xuICBnZXQgbm9ybWFsaXplZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUubm9ybWFsaXplZDtcbiAgfVxuXG4gIHNldCBub3JtYWxpemVkKHYpIHtcbiAgICB0aGlzLl92YWx1ZS51cGRhdGVOb3JtYWwodik7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMudmFsdWUpO1xuICB9XG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9pbnRlcmZhY2VzL2RpYWwuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5sZXQgQnV0dG9uVGVtcGxhdGUgPSByZXF1aXJlKCcuLi9jb21wb25lbnRzL2J1dHRvbnRlbXBsYXRlJyk7XG5sZXQgdG91Y2ggPSByZXF1aXJlKCcuLi91dGlsL3RvdWNoJyk7XG5cbmNsYXNzIFBpYW5vS2V5IGV4dGVuZHMgQnV0dG9uVGVtcGxhdGUge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJywnbm90ZScsJ2NvbG9yJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFs4MCw4MF0sXG4gICAgICAndGFyZ2V0JzogZmFsc2UsXG4gICAgICAnbW9kZSc6ICdidXR0b24nLFxuICAgICAgJ3ZhbHVlJzogMFxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLm5vdGUgPSB0aGlzLnNldHRpbmdzLm5vdGU7XG4gICAgdGhpcy5jb2xvciA9IHRoaXMuc2V0dGluZ3MuY29sb3I7XG5cbiAgICB0aGlzLmNvbG9ycyA9IHtcbiAgICAgICd3JzogJyNmZmYnLFxuICAgICAgJ2InOiAnIzY2NicsXG4gICAgfTtcblxuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgfVxuXG4gIGJ1aWxkRnJhbWUoKSB7XG4gICAgdGhpcy5lbGVtZW50ID0gc3ZnLmNyZWF0ZSgnc3ZnJyk7XG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMud2lkdGgpO1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5oZWlnaHQpO1xuICAgIHRoaXMucGFyZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcblxuICAgIHRoaXMucGFkID0gc3ZnLmNyZWF0ZSgncmVjdCcpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucGFkKTtcblxuICAgIHRoaXMuaW50ZXJhY3Rpb25UYXJnZXQgPSB0aGlzLnBhZDtcblxuICAgIC8qIGV2ZW50cyAqL1xuXG4gICAgaWYgKCF0b3VjaC5leGlzdHMpIHtcblxuICAgICAgdGhpcy5jbGljayA9ICgpID0+IHtcbiAgICAgIC8vICBjb25zb2xlLmxvZygnY2xpY2snKTtcbiAgICAgICAgdGhpcy5waWFuby5pbnRlcmFjdGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucGlhbm8ucGFpbnRicnVzaCA9ICF0aGlzLnN0YXRlO1xuICAgICAgICB0aGlzLmRvd24odGhpcy5waWFuby5wYWludGJydXNoKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMucGFkLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucGlhbm8uaW50ZXJhY3RpbmcpIHtcbiAgICAgIC8vICAgIGNvbnNvbGUubG9nKCdtb3VzZW92ZXInKTtcbiAgICAgICAgICB0aGlzLmRvd24odGhpcy5waWFuby5wYWludGJydXNoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cblxuICAgICAgdGhpcy5tb3ZlID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5waWFuby5pbnRlcmFjdGluZykge1xuICAgICAgICAvLyAgY29uc29sZS5sb2coJ21vdmUnKTtcbiAgICAgICAgICB0aGlzLmJlbmQoKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuXG4gICAgICB0aGlzLnJlbGVhc2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMucGlhbm8uaW50ZXJhY3RpbmcgPSBmYWxzZTtcbiAgICAgIC8vICBjb25zb2xlLmxvZygncmVsZWFzZScpO1xuICAgICAgLy8gIHRoaXMudXAoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLnBhZC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5waWFuby5pbnRlcmFjdGluZykge1xuICAgICAgICAvLyAgY29uc29sZS5sb2coJ21vdXNldXAnKTtcbiAgICAgICAgICB0aGlzLnVwKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5wYWQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBpYW5vLmludGVyYWN0aW5nKSB7XG4gICAgICAgIC8vICBjb25zb2xlLmxvZygnbW91c2VvdXQnKTtcbiAgICAgICAgICB0aGlzLnVwKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfVxuXG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuXG4gICAgICAgIC8vbGV0IHJhZGl1cyA9IE1hdGgubWluKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpIC8gNTtcbiAgICAgICAgbGV0IHJhZGl1cyA9IDA7XG5cbiAgICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCd4JywwLjUpO1xuICAgICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3knLDAuNSk7XG4gICAgICAgIGlmICh0aGlzLndpZHRoID4gMikge1xuICAgICAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB0aGlzLndpZHRoIC0gMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMud2lkdGgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhlaWdodCA+IDIpIHtcbiAgICAgICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIHRoaXMuaGVpZ2h0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIHRoaXMuaGVpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3J4JywgcmFkaXVzKTtcbiAgICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdyeScsIHJhZGl1cyk7XG5cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUpIHtcbiAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzW3RoaXMuY29sb3JdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB9XG4gIH1cblxufVxuXG4vKipcbiogUGlhbm9cbipcbiogQGRlc2NyaXB0aW9uIFBpYW5vIGtleWJvYXJkIGludGVyZmFjZVxuKlxuKiBAZGVtbyA8ZGl2IG5leHVzLXVpPVwicGlhbm9cIj48L2Rpdj5cbipcbiogQGV4YW1wbGVcbiogdmFyIHBpYW5vID0gbmV3IE5leHVzLlBpYW5vKCcjdGFyZ2V0JylcbipcbiogQGV4YW1wbGVcbiogdmFyIHBpYW5vID0gbmV3IE5leHVzLlBpYW5vKCcjdGFyZ2V0Jyx7XG4qICAgICAnc2l6ZSc6IFs1MDAsMTI1XSxcbiogICAgICdtb2RlJzogJ2J1dHRvbicsICAvLyAnYnV0dG9uJywgJ3RvZ2dsZScsIG9yICdpbXB1bHNlJ1xuKiAgICAgJ2xvd05vdGUnOiAyNCxcbiogICAgICdoaWdoTm90ZSc6IDYwXG4qIH0pXG4qXG4qIEBvdXRwdXRcbiogY2hhbmdlXG4qIEZpcmVzIGFueSB0aW1lIGEgbmV3IGtleSBpcyBwcmVzc2VkIG9yIHJlbGVhc2VkIDxicj5cbiogVGhlIGV2ZW50IGRhdGEgaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgPGk+bm90ZTwvaT4gYW5kIDxpPnN0YXRlPC9pPiBwcm9wZXJ0aWVzLlxuKlxuKiBAb3V0cHV0ZXhhbXBsZVxuKiBwaWFuby5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQaWFubyBleHRlbmRzIEludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG5cbiAgICBsZXQgb3B0aW9ucyA9IFsndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgICdzaXplJzogWzUwMCwxMjVdLFxuICAgICAgJ2xvd05vdGUnOiAyNCxcbiAgICAgICdoaWdoTm90ZSc6IDYwLFxuICAgICAgJ21vZGUnOiAnYnV0dG9uJ1xuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLmtleVBhdHRlcm4gPSBbJ3cnLCdiJywndycsJ2InLCd3JywndycsJ2InLCd3JywnYicsJ3cnLCdiJywndyddO1xuXG4gICAgdGhpcy5wYWludGJydXNoID0gZmFsc2U7XG5cbiAgICB0aGlzLm1vZGUgPSB0aGlzLnNldHRpbmdzLm1vZGU7XG5cbiAgICB0aGlzLnJhbmdlID0ge1xuICAgICAgbG93OiB0aGlzLnNldHRpbmdzLmxvd05vdGUsXG4gICAgICBoaWdoOiB0aGlzLnNldHRpbmdzLmhpZ2hOb3RlXG4gICAgfTtcblxuICAgIHRoaXMucmFuZ2Uuc2l6ZSA9IHRoaXMucmFuZ2UuaGlnaCAtIHRoaXMucmFuZ2UubG93ICsgMTtcblxuICAgIHRoaXMua2V5cyA9IFtdO1xuXG4gICAgdGhpcy50b2dnbGVUbyA9IGZhbHNlO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcblxuICB9XG5cbiAgYnVpbGRGcmFtZSgpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnMHB4JztcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgdGhpcy5wYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5rZXlzID0gW107XG5cbiAgICBmb3IgKGxldCBpPTA7aTx0aGlzLnJhbmdlLnNpemU7aSsrKSB7XG5cbiAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBsZXQgc2NhbGVJbmRleCA9IChpK3RoaXMucmFuZ2UubG93KSAlIHRoaXMua2V5UGF0dGVybi5sZW5ndGg7XG5cbiAgICAgIGxldCBrZXkgPSBuZXcgUGlhbm9LZXkoY29udGFpbmVyLCB7XG4gICAgICAgICAgY29tcG9uZW50OiB0cnVlLFxuICAgICAgICAgIG5vdGU6IGkrdGhpcy5yYW5nZS5sb3csXG4gICAgICAgICAgY29sb3I6IHRoaXMua2V5UGF0dGVybltzY2FsZUluZGV4XSxcbiAgICAgICAgICBtb2RlOiB0aGlzLm1vZGVcbiAgICAgICAgfSwgdGhpcy5rZXlDaGFuZ2UuYmluZCh0aGlzLGkrdGhpcy5yYW5nZS5sb3cpKTtcblxuICAgICAga2V5LnBpYW5vID0gdGhpcztcblxuICAgICAgaWYgKHRvdWNoLmV4aXN0cykge1xuICAgICAgICBrZXkucGFkLmluZGV4ID0gaTtcbiAgICAgICAga2V5LnByZUNsaWNrID0ga2V5LnByZU1vdmUgPSBrZXkucHJlUmVsZWFzZSA9ICgpID0+IHt9O1xuICAgICAgICBrZXkuY2xpY2sgPSBrZXkubW92ZSA9IGtleS5yZWxlYXNlID0gKCkgPT4ge307XG4gICAgICAgIGtleS5wcmVUb3VjaCA9IGtleS5wcmVUb3VjaE1vdmUgPSBrZXkucHJlVG91Y2hSZWxlYXNlID0gKCkgPT4ge307XG4gICAgICAgIGtleS50b3VjaCA9IGtleS50b3VjaE1vdmUgPSBrZXkudG91Y2hSZWxlYXNlID0gKCkgPT4ge307XG4gICAgICB9XG5cbiAgICAgIHRoaXMua2V5cy5wdXNoKGtleSk7XG4gICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcblxuICAgIH1cbiAgICBpZiAodG91Y2guZXhpc3RzKSB7XG4gICAgICB0aGlzLmFkZFRvdWNoTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuXG4gICAgbGV0IGtleVggPSAwO1xuXG4gICAgbGV0IGtleVBvc2l0aW9ucyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0wO2k8dGhpcy5yYW5nZS5zaXplO2krKykge1xuXG4gICAgICBrZXlQb3NpdGlvbnMucHVzaChrZXlYKTtcblxuICAgICAgbGV0IHNjYWxlSW5kZXggPSAoaSt0aGlzLnJhbmdlLmxvdykgJSB0aGlzLmtleVBhdHRlcm4ubGVuZ3RoO1xuICAgICAgbGV0IG5leHRTY2FsZUluZGV4ID0gKGkrMSt0aGlzLnJhbmdlLmxvdykgJSB0aGlzLmtleVBhdHRlcm4ubGVuZ3RoO1xuICAgICAgaWYgKGkrMSt0aGlzLnJhbmdlLmxvdyA+PSB0aGlzLnJhbmdlLmhpZ2gpIHtcbiAgICAgICAga2V5WCArPSAxO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmtleVBhdHRlcm5bc2NhbGVJbmRleF0gPT09ICd3JyAmJiB0aGlzLmtleVBhdHRlcm5bbmV4dFNjYWxlSW5kZXhdID09PSAndycpIHtcbiAgICAgICAga2V5WCArPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAga2V5WCArPSAwLjU7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBrZXlzV2lkZSA9IGtleVg7XG5cblxuICAvLyAgbGV0IHBhZGRpbmcgPSB0aGlzLndpZHRoIC8gMTIwO1xuICAgIGxldCBwYWRkaW5nID0gMTtcbiAgICBsZXQgYnV0dG9uV2lkdGggPSAodGhpcy53aWR0aC1wYWRkaW5nKjIpIC8ga2V5c1dpZGU7XG4gICAgbGV0IGJ1dHRvbkhlaWdodCA9ICh0aGlzLmhlaWdodC1wYWRkaW5nKjIpIC8gMjtcblxuICAgIGZvciAobGV0IGk9MDtpPHRoaXMua2V5cy5sZW5ndGg7aSsrKSB7XG5cbiAgICAgIGxldCBjb250YWluZXIgPSB0aGlzLmtleXNbaV0ucGFyZW50O1xuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gKGtleVBvc2l0aW9uc1tpXSpidXR0b25XaWR0aCtwYWRkaW5nKSArICdweCc7XG4gICAgICBpZiAodGhpcy5rZXlzW2ldLmNvbG9yID09PSAndycpIHtcbiAgICAgICAgY29udGFpbmVyLnN0eWxlLnRvcCA9IChwYWRkaW5nKSArICdweCc7XG4gICAgICAgIHRoaXMua2V5c1tpXS5yZXNpemUoYnV0dG9uV2lkdGgsIGJ1dHRvbkhlaWdodCoyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSAxO1xuICAgICAgICBjb250YWluZXIuc3R5bGUudG9wID0gcGFkZGluZysncHgnO1xuICAgICAgICB0aGlzLmtleXNbaV0ucmVzaXplKGJ1dHRvbldpZHRoLCBidXR0b25IZWlnaHQqMS4xKTtcbiAgICAgIH1cblxuICAgIH1cblxuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG5cbiAgICAvLyBQaWFubyBrZXlzIGRvbid0IGFjdHVhbGx5IGhhdmUgYSBzdHJva2UgYm9yZGVyXG4gICAgLy8gVGhleSBoYXZlIHNwYWNlIGJldHdlZW4gdGhlbSwgd2hpY2ggc2hvd3MgdGhlIFBpYW5vIGJnIGNvbG9yXG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0O1xuXG4gICAgZm9yIChsZXQgaT0wO2k8dGhpcy5rZXlzLmxlbmd0aDtpKyspIHtcbiAgICAgIHRoaXMua2V5c1tpXS5jb2xvcnMgPSB7XG4gICAgICAgICd3JzogdGhpcy5jb2xvcnMubGlnaHQsXG4gICAgICAgICdiJzogdGhpcy5jb2xvcnMuZGFyayxcbiAgICAgICAgJ2FjY2VudCc6IHRoaXMuY29sb3JzLmFjY2VudCxcbiAgICAgICAgJ2JvcmRlcic6IHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0XG4gICAgICB9O1xuICAgICAgdGhpcy5rZXlzW2ldLmNvbG9ySW50ZXJmYWNlKCk7XG4gICAgICB0aGlzLmtleXNbaV0ucmVuZGVyKCk7XG4gICAgfVxuXG5cbiAgfVxuXG4gIGtleUNoYW5nZShub3RlLG9uKSB7XG4gICAgLy8gZW1pdCBkYXRhIGZvciBhbnkga2V5IHR1cm5pbmcgb24vb2ZmXG4gICAgLy8gXCJub3RlXCIgaXMgdGhlIG5vdGUgdmFsdWVcbiAgICAvLyBcIm9uXCIgaXMgYSBib29sZWFuIHdoZXRoZXIgaXQgaXMgb24gb3Igb2ZmXG4gICAgLy8gaW4gYWZ0ZXJ0b3VjaCBtb2RlLCBcIm9uOiBpcyBhbiBvYmplY3Qgd2l0aCBzdGF0ZS94L3kgcHJvcGVydGllc1xuICAgIHZhciBkYXRhID0ge1xuICAgICAgbm90ZTogbm90ZVxuICAgIH07XG4gICAgaWYgKHR5cGVvZiBvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGRhdGEuc3RhdGUgPSBvbi5zdGF0ZTtcbiAgICAvLyAgZGF0YS54ID0gb24ueFxuICAgIC8vICBkYXRhLnkgPSBvbi55XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEuc3RhdGUgPSBvbjtcbiAgICB9XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLGRhdGEpO1xuICB9XG5cbiAgLyogZHJhZyhub3RlLG9uKSB7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHtcbiAgICAgIG5vdGU6IG5vdGUsXG4gICAgICBzdGF0ZTogb25cbiAgICB9KTtcbiAgfSAqL1xuXG4gIHJlbmRlcigpIHtcbiAgICAvLyBsb29wIHRocm91Z2ggYW5kIHJlbmRlciB0aGUga2V5cz9cbiAgfVxuXG4gIGFkZFRvdWNoTGlzdGVuZXJzKCkge1xuICAgIHRoaXMucHJlQ2xpY2sgPSB0aGlzLnByZU1vdmUgPSB0aGlzLnByZVJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICB0aGlzLmNsaWNrID0gdGhpcy5tb3ZlID0gdGhpcy5yZWxlYXNlID0gKCkgPT4ge307XG4gICAgdGhpcy5wcmVUb3VjaCA9IHRoaXMucHJlVG91Y2hNb3ZlID0gdGhpcy5wcmVUb3VjaFJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICB0aGlzLnRvdWNoID0gdGhpcy50b3VjaE1vdmUgPSB0aGlzLnRvdWNoUmVsZWFzZSA9ICgpID0+IHt9O1xuXG4gICAgY29uc3QgYWxsQWN0aXZlVG91Y2hlcyA9IHt9O1xuICAgIGNvbnN0IGtleXMgPSB0aGlzLmtleXM7XG5cbiAgICBmdW5jdGlvbiBjbG9uZVRvdWNoKHRvdWNoKSB7XG4gICAgICByZXR1cm4geyBpZGVudGlmaWVyOiB0b3VjaC5pZGVudGlmaWVyLCBjbGllbnRYOiB0b3VjaC5jbGllbnRYLCBjbGllbnRZOiB0b3VjaC5jbGllbnRZIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlS2V5U3RhdGUoKSB7XG4gICAgICBjb25zdCBhbGxBY3RpdmVLZXlzID0ge307XG5cbiAgICAgIC8vIENoZWNrL3NldCBcImtleS1kb3duXCIgc3RhdHVzIGZvciBhbGwga2V5cyB0aGF0IGFyZSBjdXJyZW50bHkgdG91Y2hlZC5cbiAgICAgIE9iamVjdC5rZXlzKGFsbEFjdGl2ZVRvdWNoZXMpLmZvckVhY2goaWQgPT4ge1xuICAgICAgICBjb25zdCB0b3VjaCA9IGFsbEFjdGl2ZVRvdWNoZXNbaWRdO1xuICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQodG91Y2guY2xpZW50WCwgdG91Y2guY2xpZW50WSk7XG4gICAgICAgIGxldCBrZXkgPSBlbCA/IGtleXNbZWwuaW5kZXhdIDogbnVsbDtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgIGFsbEFjdGl2ZUtleXNbZWwuaW5kZXhdID0gaWQ7XG4gICAgICAgICAgaWYgKCFrZXkuc3RhdGUpIHtcbiAgICAgICAgICAgIGtleS5kb3duKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBhbGxBY3RpdmVUb3VjaGVzW2lkXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIFNldCBcImtleS11cFwiIHN0YXR1cyBmb3IgYWxsIGtleXMgdGhhdCBhcmUgdW50b3VjaGVkLlxuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmIChrZXkuc3RhdGUgJiYgIWFsbEFjdGl2ZUtleXNba2V5LnBhZC5pbmRleF0pIHtcbiAgICAgICAgICBrZXkudXAoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlVG91Y2hTdGFydEFuZE1vdmUoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZS5jaGFuZ2VkVG91Y2hlcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IHRvdWNoID0gZS5jaGFuZ2VkVG91Y2hlc1tpXTtcbiAgICAgICAgYWxsQWN0aXZlVG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXSA9IGNsb25lVG91Y2godG91Y2gpO1xuICAgICAgfVxuICAgICAgdXBkYXRlS2V5U3RhdGUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVUb3VjaEVuZChlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgY29uc3QgdG91Y2ggPSBlLmNoYW5nZWRUb3VjaGVzW2ldO1xuICAgICAgICBkZWxldGUgYWxsQWN0aXZlVG91Y2hlc1t0b3VjaC5pZGVudGlmaWVyXTtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZUtleVN0YXRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBoYW5kbGVUb3VjaFN0YXJ0QW5kTW92ZSk7XG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGhhbmRsZVRvdWNoU3RhcnRBbmRNb3ZlKTtcbiAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBoYW5kbGVUb3VjaEVuZCk7XG4gIH1cblxuICAvKipcbiAgRGVmaW5lIHRoZSBwaXRjaCByYW5nZSAobG93ZXN0IGFuZCBoaWdoZXN0IG5vdGUpIG9mIHRoZSBwaWFubyBrZXlib2FyZC5cbiAgQHBhcmFtIGxvdyB7bnVtYmVyfSBNSURJIG5vdGUgdmFsdWUgb2YgdGhlIGxvd2VzdCBub3RlIG9uIHRoZSBrZXlib2FyZFxuICBAcGFyYW0gaGlnaCB7bnVtYmVyfSBNSURJIG5vdGUgdmFsdWUgb2YgdGhlIGhpZ2hlc3Qgbm90ZSBvbiB0aGUga2V5Ym9hcmRcbiAgKi9cbiAgc2V0UmFuZ2UobG93LGhpZ2gpIHtcbiAgICB0aGlzLnJhbmdlLmxvdyA9IGxvdztcbiAgICB0aGlzLnJhbmdlLmhpZ2ggPSBoaWdoO1xuICAgIHRoaXMuZW1wdHkoKTtcbiAgICB0aGlzLmJ1aWxkSW50ZXJmYWNlKCk7XG4gIH1cblxuICAvKipcbiAgVHVybiBhIGtleSBvbiBvciBvZmYgdXNpbmcgaXRzIE1JREkgbm90ZSB2YWx1ZTtcbiAgQHBhcmFtIG5vdGUge251bWJlcn0gTUlESSBub3RlIHZhbHVlIG9mIHRoZSBrZXkgdG8gY2hhbmdlXG4gIEBwYXJhbSBvbiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgbm90ZSBzaG91bGQgdHVybiBvbiBvciBvZmZcbiAgKi9cbiAgdG9nZ2xlS2V5KG5vdGUsIG9uKSB7XG4gICAgdGhpcy5rZXlzW25vdGUtdGhpcy5yYW5nZS5sb3ddLmZsaXAob24pO1xuICB9XG5cbiAgLyoqXG4gIFR1cm4gYSBrZXkgb24gb3Igb2ZmIHVzaW5nIGl0cyBrZXkgaW5kZXggb24gdGhlIHBpYW5vIGludGVyZmFjZS5cbiAgQHBhcmFtIGluZGV4IHtudW1iZXJ9IEluZGV4IG9mIHRoZSBrZXkgdG8gY2hhbmdlXG4gIEBwYXJhbSBvbiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgbm90ZSBzaG91bGQgdHVybiBvbiBvciBvZmZcbiAgKi9cbiAgdG9nZ2xlSW5kZXgoaW5kZXgsIG9uKSB7XG4gICAgdGhpcy5rZXlzW2luZGV4XS5mbGlwKG9uKTtcbiAgfVxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9waWFuby5qcyIsIid1c2Ugc3RyaWN0JztcblxubGV0IHN2ZyA9IHJlcXVpcmUoJy4uL3V0aWwvc3ZnJyk7XG5sZXQgZG9tID0gcmVxdWlyZSgnLi4vdXRpbC9kb20nKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xubGV0IEJ1dHRvblRlbXBsYXRlID0gcmVxdWlyZSgnLi4vY29tcG9uZW50cy9idXR0b250ZW1wbGF0ZScpO1xubGV0IE1hdHJpeE1vZGVsID0gcmVxdWlyZSgnLi4vbW9kZWxzL21hdHJpeCcpO1xubGV0IENvdW50ZXJNb2RlbCA9IHJlcXVpcmUoJy4uL21vZGVscy9jb3VudGVyJyk7XG5sZXQgSW50ZXJ2YWwgPSByZXF1aXJlKCcuLi90aW1lL2ludGVydmFsJyk7XG5sZXQgdG91Y2ggPSByZXF1aXJlKCcuLi91dGlsL3RvdWNoJyk7XG5cbmNsYXNzIE1hdHJpeENlbGwgZXh0ZW5kcyBCdXR0b25UZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBvcHRpb25zID0gWyd2YWx1ZSddO1xuXG4gICAgbGV0IGRlZmF1bHRzID0ge1xuICAgICAgc2l6ZTogWzgwLCA4MF0sXG4gICAgICB0YXJnZXQ6IGZhbHNlLFxuICAgICAgbW9kZTogJ3RvZ2dsZScsXG4gICAgICB2YWx1ZTogMCxcbiAgICAgIHBhZGRpbmdSb3c6IDIsXG4gICAgICBwYWRkaW5nQ29sdW1uOiAyXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cywgb3B0aW9ucywgZGVmYXVsdHMpO1xuXG4gICAgdGhpcy5pbmRleCA9IHRoaXMuc2V0dGluZ3MuaW5kZXg7XG4gICAgdGhpcy5yb3cgPSB0aGlzLnNldHRpbmdzLnJvdztcbiAgICB0aGlzLmNvbHVtbiA9IHRoaXMuc2V0dGluZ3MuY29sdW1uO1xuXG4gICAgdGhpcy5tYXRyaXggPSB0aGlzLnNldHRpbmdzLm1hdHJpeDtcblxuICAgIC8qKlxuICAgICAqICBBbW91bnQgb2Ygcm93IHBhZGRpbmdcbiAgICAgKiAgQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnBhZGRpbmdSb3cgPSB0aGlzLnNldHRpbmdzLnBhZGRpbmdSb3cgfHwgZGVmYXVsdHMucGFkZGluZ1JvdztcblxuICAgIC8qKlxuICAgICAqICBBbW91bnQgb2YgY29sdW1uIHBhZGRpbmdcbiAgICAgKiAgQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB0aGlzLnBhZGRpbmdDb2x1bW4gPSB0aGlzLnNldHRpbmdzLnBhZGRpbmdDb2x1bW4gfHwgZGVmYXVsdHMucGFkZGluZ0NvbHVtbjtcblxuICAgIHRoaXMuaW50ZXJhY3RpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnBhaW50YnJ1c2ggPSBmYWxzZTtcblxuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuZWxlbWVudCA9IHN2Zy5jcmVhdGUoJ3N2ZycpO1xuICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgdGhpcy53aWR0aCk7XG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgdGhpcy5oZWlnaHQpO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS50b3AgPSAnMHB4JztcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUubGVmdCA9ICcwcHgnO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgdGhpcy5wYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50KTtcbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuICAgIHRoaXMucGFkID0gc3ZnLmNyZWF0ZSgncmVjdCcpO1xuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnBhZCk7XG5cbiAgICB0aGlzLmludGVyYWN0aW9uVGFyZ2V0ID0gdGhpcy5wYWQ7XG5cbiAgICAvKiBldmVudHMgKi9cblxuICAgIGlmICghdG91Y2guZXhpc3RzKSB7XG4gICAgICB0aGlzLmNsaWNrID0gKCkgPT4ge1xuICAgICAgICB0aGlzLm1hdHJpeC5pbnRlcmFjdGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMubWF0cml4LnBhaW50YnJ1c2ggPSAhdGhpcy5zdGF0ZTtcbiAgICAgICAgdGhpcy5kb3duKHRoaXMubWF0cml4LnBhaW50YnJ1c2gpO1xuICAgICAgfTtcbiAgICAgIHRoaXMucGFkLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWF0cml4LmludGVyYWN0aW5nKSB7XG4gICAgICAgICAgdGhpcy5kb3duKHRoaXMubWF0cml4LnBhaW50YnJ1c2gpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5tb3ZlID0gKCkgPT4ge307XG4gICAgICB0aGlzLnBhZC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBlID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWF0cml4LmludGVyYWN0aW5nKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLm9mZnNldCkge1xuICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSBkb20uZmluZFBvc2l0aW9uKHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubW91c2UgPSBkb20ubG9jYXRlTW91c2UoZSwgdGhpcy5vZmZzZXQpO1xuICAgICAgICAgIHRoaXMuYmVuZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLm1hdHJpeC5pbnRlcmFjdGluZyA9IGZhbHNlO1xuICAgICAgfTtcbiAgICAgIHRoaXMucGFkLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1hdHJpeC5pbnRlcmFjdGluZykge1xuICAgICAgICAgIHRoaXMudXAoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnBhZC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubWF0cml4LmludGVyYWN0aW5nKSB7XG4gICAgICAgICAgdGhpcy51cCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgneCcsIHRoaXMucGFkZGluZ0NvbHVtbiAvIDIpO1xuICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgneScsIHRoaXMucGFkZGluZ1JvdyAvIDIpO1xuICAgIGlmICh0aGlzLndpZHRoID4gMikge1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMud2lkdGggLSB0aGlzLnBhZGRpbmdDb2x1bW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgdGhpcy53aWR0aCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhlaWdodCA+IDIpIHtcbiAgICAgIHRoaXMucGFkLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgdGhpcy5oZWlnaHQgLSB0aGlzLnBhZGRpbmdSb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIHRoaXMuaGVpZ2h0KTtcbiAgICB9XG4gICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5tYXRyaXguY29sb3JzLmZpbGwpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5wYWQuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5tYXRyaXguY29sb3JzLmZpbGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhZC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLm1hdHJpeC5jb2xvcnMuYWNjZW50KTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBTZXF1ZW5jZXJcbiAqXG4gKiBAZGVzY3JpcHRpb24gR3JpZCBvZiBidXR0b25zIHdpdGggYnVpbHQtaW4gc3RlcCBzZXF1ZW5jZXIuXG4gKlxuICogQGRlbW8gPGRpdiBuZXh1cy11aT1cInNlcXVlbmNlclwiIHN0eWxlPVwid2lkdGg6NDAwcHg7aGVpZ2h0OjIwMHB4O1wiPjwvZGl2PlxuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgc2VxdWVuY2VyID0gbmV3IE5leHVzLlNlcXVlbmNlcignI3RhcmdldCcpXG4gKlxuICogQGV4YW1wbGVcbiAqIHZhciBzZXF1ZW5jZXIgPSBuZXcgTmV4dXMuU2VxdWVuY2VyKCcjdGFyZ2V0Jyx7XG4gKiAgJ3NpemUnOiBbNDAwLDIwMF0sXG4gKiAgJ21vZGUnOiAndG9nZ2xlJyxcbiAqICAncm93cyc6IDUsXG4gKiAgJ2NvbHVtbnMnOiAxMCxcbiAqICAncGFkZGluZ1Jvdyc6IDEwLFxuICogICdwYWRkaW5nQ29sdW1uJzogMjBcbiAqfSlcbiAqXG4gKiBAb3V0cHV0XG4gKiBjaGFuZ2VcbiAqIEZpcmVzIGFueSB0aW1lIHRoZSBpbnRlcmZhY2UncyBtYXRyaXggY2hhbmdlcy4gPGJyPlxuICogVGhlIGV2ZW50IGRhdGEgaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgPGk+cm93PC9pPiAobnVtYmVyKSwgPGk+Y29sdW1uPC9pPiAobnVtYmVyKSwgYW5kIDxpPnN0YXRlPC9pPiAoYm9vbGVhbikgcHJvcGVydGllcy5cbiAqXG4gKiBAb3V0cHV0ZXhhbXBsZVxuICogc2VxdWVuY2VyLm9uKCdjaGFuZ2UnLGZ1bmN0aW9uKHYpIHtcbiAqICAgY29uc29sZS5sb2codik7XG4gKiB9KVxuICpcbiAqIEBvdXRwdXRcbiAqIHN0ZXBcbiAqIEZpcmVzIGFueSB0aW1lIHRoZSBzZXF1ZW5jZXIgc3RlcHMgdG8gdGhlIG5leHQgY29sdW1uLCBpbiBzZXF1ZWNlIG1vZGUuIDxicj5cbiAqIFRoZSBldmVudCBkYXRhIGlzIGFuIDxpPmFycmF5PC9pPiBjb250YWluaW5nIGFsbCB2YWx1ZXMgaW4gdGhlIGNvbHVtbiwgPGk+Ym90dG9tIHJvdyBmaXJzdDwvaT4uXG4gKlxuICogQG91dHB1dGV4YW1wbGVcbiAqIHNlcXVlbmNlci5vbignc3RlcCcsZnVuY3Rpb24odikge1xuICogICBjb25zb2xlLmxvZyh2KTtcbiAqIH0pXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VxdWVuY2VyIGV4dGVuZHMgSW50ZXJmYWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICBzaXplOiBbNDAwLCAyMDBdLFxuICAgICAgbW9kZTogJ3RvZ2dsZScsXG4gICAgICByb3dzOiA1LFxuICAgICAgY29sdW1uczogMTBcbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLCBvcHRpb25zLCBkZWZhdWx0cyk7XG5cbiAgICB0aGlzLmFjdGl2ZSA9IC0xO1xuXG4gICAgLyoqXG4gICAgICogQnV0dG9uIGludGVyYWN0aW9uIG1vZGU6IHNlZSBCdXR0b25cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqIEBleGFtcGxlIGJ1dHRvbi5tb2RlID0gJ3RvZ2dsZSc7XG4gICAgICovXG4gICAgdGhpcy5tb2RlID0gdGhpcy5zZXR0aW5ncy5tb2RlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGludGVydmFsIG9iamVjdCB3aGljaCBjb250cm9scyB0aW1pbmcgYW5kIHNlcXVlbmNlIHNjaGVkdWxpbmcuXG4gICAgICogQHR5cGUge2ludGVydmFsfVxuICAgICAqL1xuICAgIHRoaXMuaW50ZXJ2YWwgPSBuZXcgSW50ZXJ2YWwoMjAwLCBmdW5jdGlvbigpIHt9LCBmYWxzZSk7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXG4gICAgLyoqXG4gICAgICogQSBNYXRyaXggbW9kZWwgY29udGFpbmluZyBtZXRob2RzIGZvciBtYW5pcHVsYXRpbmcgdGhlIHNlcXVlbmNlcidzIGFycmF5IG9mIHZhbHVlcy4gVG8gbGVhcm4gaG93IHRvIG1hbmlwdWxhdGUgdGhlIG1hdHJpeCwgcmVhZCBhYm91dCB0aGUgbWF0cml4IG1vZGVsLlxuICAgICAqIEB0eXBlIHttYXRyaXh9XG4gICAgICovXG4gICAgdGhpcy5tYXRyaXggPSBuZXcgTWF0cml4TW9kZWwodGhpcy5zZXR0aW5ncy5yb3dzLCB0aGlzLnNldHRpbmdzLmNvbHVtbnMpO1xuICAgIHRoaXMubWF0cml4LnVpID0gdGhpcztcblxuICAgIC8qKlxuICAgICAqIEEgQ291bnRlciBtb2RlbCB3aGljaCB0aGUgc2VxdWVuY2VyIHN0ZXBzIHRocm91Z2guIEZvciBleGFtcGxlLCB5b3UgY291bGQgdXNlIHRoaXMgbW9kZWwgdG8gc3RlcCB0aHJvdWdoIHRoZSBzZXF1ZW5jZXIgaW4gcmV2ZXJzZSwgcmFuZG9tbHksIG9yIGluIGEgZHJ1bmsgd2Fsay5cbiAgICAgKiBAdHlwZSB7Y291bnRlcn1cbiAgICAgKi9cbiAgICB0aGlzLnN0ZXBwZXIgPSBuZXcgQ291bnRlck1vZGVsKDAsIHRoaXMuY29sdW1ucyk7XG5cbiAgICB0aGlzLnBhZGRpbmdSb3cgPSB0aGlzLnNldHRpbmdzLnBhZGRpbmdSb3c7XG4gICAgdGhpcy5wYWRkaW5nQ29sdW1uID0gdGhpcy5zZXR0aW5ncy5wYWRkaW5nQ29sdW1uO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS53aWR0aCA9ICcxMDAlJztcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnO1xuICAgIHRoaXMucGFyZW50LmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgaWYgKHRvdWNoLmV4aXN0cykge1xuICAgICAgdGhpcy5hZGRUb3VjaExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuICAgIHRoaXMuY2VsbHMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWF0cml4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgbG9jYXRpb24gPSB0aGlzLm1hdHJpeC5sb2NhdGUoaSk7XG4gICAgICAvLyByZXR1cm5zIHtyb3csY29sfVxuXG4gICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcblxuICAgICAgbGV0IGNlbGwgPSBuZXcgTWF0cml4Q2VsbChcbiAgICAgICAgY29udGFpbmVyLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9uZW50OiB0cnVlLFxuICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgIHJvdzogbG9jYXRpb24ucm93LFxuICAgICAgICAgIGNvbHVtbjogbG9jYXRpb24uY29sdW1uLFxuICAgICAgICAgIG1vZGU6IHRoaXMubW9kZSxcbiAgICAgICAgICBtYXRyaXg6IHRoaXMsXG4gICAgICAgICAgcGFkZGluZ1JvdzogdGhpcy5wYWRkaW5nUm93LFxuICAgICAgICAgIHBhZGRpbmdDb2x1bW46IHRoaXMucGFkZGluZ0NvbHVtblxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmtleUNoYW5nZS5iaW5kKHRoaXMsIGkpXG4gICAgICApO1xuXG4gICAgICAvLyAgY2VsbC5tYXRyaXggPSB0aGlzO1xuICAgICAgaWYgKHRvdWNoLmV4aXN0cykge1xuICAgICAgICBjZWxsLnBhZC5pbmRleCA9IGk7XG4gICAgICAgIGNlbGwucHJlQ2xpY2sgPSBjZWxsLnByZU1vdmUgPSBjZWxsLnByZVJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICAgICAgY2VsbC5jbGljayA9IGNlbGwubW92ZSA9IGNlbGwucmVsZWFzZSA9ICgpID0+IHt9O1xuICAgICAgICBjZWxsLnByZVRvdWNoID0gY2VsbC5wcmVUb3VjaE1vdmUgPSBjZWxsLnByZVRvdWNoUmVsZWFzZSA9ICgpID0+IHt9O1xuICAgICAgICBjZWxsLnRvdWNoID0gY2VsbC50b3VjaE1vdmUgPSBjZWxsLnRvdWNoUmVsZWFzZSA9ICgpID0+IHt9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNlbGxzLnB1c2goY2VsbCk7XG4gICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICB9XG4gICAgdGhpcy5zaXplSW50ZXJmYWNlKCk7XG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuICAgIGxldCBjZWxsV2lkdGggPSB0aGlzLndpZHRoIC8gdGhpcy5jb2x1bW5zO1xuICAgIGxldCBjZWxsSGVpZ2h0ID0gdGhpcy5oZWlnaHQgLyB0aGlzLnJvd3M7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjb250YWluZXIgPSB0aGlzLmNlbGxzW2ldLnBhcmVudDtcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5sZWZ0ID0gdGhpcy5jZWxsc1tpXS5jb2x1bW4gKiBjZWxsV2lkdGggKyAncHgnO1xuICAgICAgY29udGFpbmVyLnN0eWxlLnRvcCA9IHRoaXMuY2VsbHNbaV0ucm93ICogY2VsbEhlaWdodCArICdweCc7XG4gICAgICB0aGlzLmNlbGxzW2ldLnJlc2l6ZShjZWxsV2lkdGgsIGNlbGxIZWlnaHQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jZWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5jZWxsc1tpXS5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgLy8gIGNvbnNvbGUubG9nKFwidXBkYXRpbmcuLi5cIilcbiAgICAvL29uID0gb24gfHwgZmFsc2U7XG4gICAgdGhpcy5tYXRyaXguaXRlcmF0ZSgociwgYywgaSkgPT4ge1xuICAgICAgLy8gIGNvbnNvbGUubG9nKHRoaXMubWF0cml4LnBhdHRlcm5bcl1bY10sIHRoaXMuY2VsbHNbaV0uc3RhdGUpO1xuICAgICAgaWYgKHRoaXMubWF0cml4LnBhdHRlcm5bcl1bY10gIT09IHRoaXMuY2VsbHNbaV0uc3RhdGUpIHtcbiAgICAgICAgaWYgKHRoaXMubWF0cml4LnBhdHRlcm5bcl1bY10gPiAwKSB7XG4gICAgICAgICAgdGhpcy5jZWxsc1tpXS50dXJuT24oKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNlbGxzW2ldLnR1cm5PZmYoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gdXBkYXRlID0+IGNlbGwudHVybk9uID0+IGNlbGwuZW1pdCA9PiBrZXlDaGFuZ2UgKHNlcS5lbWl0KSA9PiBtYXRyaXguc2V0LmNlbGwgPT4gdXBkYXRlXG4gIC8vXG4gIC8vIGludGVyYWN0aW9uID0+IGtleUNoYW5nZSA9PiBtYXRyaXguc2V0LmNlbGwgPT4gdXBkYXRlID0+IGNlbGwudHVybk9uXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gZW1pdFxuICAvL1xuICAvLyBzZXQuY2VsbCA9PiB1cGRhdGUgPT4gbmVlZHMgdG8gZW1pdC5cblxuICBrZXlDaGFuZ2Uobm90ZSwgb24pIHtcbiAgICAvLyBlbWl0IGRhdGEgZm9yIGFueSBrZXkgdHVybmluZyBvbi9vZmZcbiAgICAvLyBpIGlzIHRoZSBub3RlIGluZGV4XG4gICAgLy8gdiBpcyB3aGV0aGVyIGl0IGlzIG9uIG9yIG9mZlxuICAgIGxldCBjZWxsID0gdGhpcy5tYXRyaXgubG9jYXRlKG5vdGUpO1xuICAgIC8vICB0aGlzLm1hdHJpeC5zZXQuY2VsbChjZWxsLmNvbHVtbixjZWxsLnJvdyxvbik7XG4gICAgdGhpcy5tYXRyaXgucGF0dGVybltjZWxsLnJvd11bY2VsbC5jb2x1bW5dID0gb247XG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICByb3c6IGNlbGwucm93LFxuICAgICAgY29sdW1uOiBjZWxsLmNvbHVtbixcbiAgICAgIHN0YXRlOiBvblxuICAgIH07XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCBkYXRhKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5zdGVwcGVyLnZhbHVlID49IDApIHtcbiAgICAgIHRoaXMubWF0cml4Lml0ZXJhdGUoKHIsIGMsIGkpID0+IHtcbiAgICAgICAgaWYgKGMgPT09IHRoaXMuc3RlcHBlci52YWx1ZSkge1xuICAgICAgICAgIHRoaXMuY2VsbHNbaV0ucGFkLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQpO1xuICAgICAgICAgIHRoaXMuY2VsbHNbaV0ucGFkLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgJzEnKTtcbiAgICAgICAgICB0aGlzLmNlbGxzW2ldLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS1vcGFjaXR5JywgJzEnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNlbGxzW2ldLnBhZC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsICdub25lJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydCBzZXF1ZW5jaW5nXG4gICAqIEBwYXJhbSAge251bWJlcn0gbXMgQmVhdCB0ZW1wbyBpbiBtaWxsaXNlY29uZHNcbiAgICovXG4gIHN0YXJ0KG1zKSB7XG4gICAgdGhpcy5pbnRlcnZhbC5ldmVudCA9IHRoaXMubmV4dC5iaW5kKHRoaXMpO1xuICAgIGlmIChtcykge1xuICAgICAgdGhpcy5pbnRlcnZhbC5tcyhtcyk7XG4gICAgfVxuICAgIHRoaXMuaW50ZXJ2YWwuc3RhcnQoKTtcbiAgfVxuXG4gIC8qKlxuICBTdG9wIHNlcXVlbmNpbmdcbiAgKi9cbiAgc3RvcCgpIHtcbiAgICB0aGlzLmludGVydmFsLnN0b3AoKTtcbiAgfVxuXG4gIC8qKlxuICBNYW51YWxseSBqdW1wIHRvIHRoZSBuZXh0IGNvbHVtbiBhbmQgdHJpZ2dlciB0aGUgJ2NoYW5nZScgZXZlbnQuIFRoZSBcIm5leHRcIiBjb2x1bW4gaXMgZGV0ZXJtaW5lZCBieSB5b3VyIG1vZGUgb2Ygc2VxdWVuY2luZy5cbiAgKi9cbiAgbmV4dCgpIHtcbiAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICAgIHRoaXMuZW1pdCgnc3RlcCcsIHRoaXMubWF0cml4LmNvbHVtbih0aGlzLnN0ZXBwZXIudmFsdWUpLnJldmVyc2UoKSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGFkZFRvdWNoTGlzdGVuZXJzKCkge1xuICAgIHRoaXMucHJlQ2xpY2sgPSB0aGlzLnByZU1vdmUgPSB0aGlzLnByZVJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICB0aGlzLmNsaWNrID0gdGhpcy5tb3ZlID0gdGhpcy5yZWxlYXNlID0gKCkgPT4ge307XG4gICAgdGhpcy5wcmVUb3VjaCA9IHRoaXMucHJlVG91Y2hNb3ZlID0gdGhpcy5wcmVUb3VjaFJlbGVhc2UgPSAoKSA9PiB7fTtcbiAgICB0aGlzLnRvdWNoID0gdGhpcy50b3VjaE1vdmUgPSB0aGlzLnRvdWNoUmVsZWFzZSA9ICgpID0+IHt9O1xuXG4gICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IGZhbHNlO1xuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBlID0+IHtcbiAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChcbiAgICAgICAgZS50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFgsXG4gICAgICAgIGUudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRZXG4gICAgICApO1xuICAgICAgbGV0IGNlbGwgPSB0aGlzLmNlbGxzW2VsZW1lbnQuaW5kZXhdO1xuICAgICAgdGhpcy5wYWludGJydXNoID0gIWNlbGwuc3RhdGU7XG4gICAgICBjZWxsLmRvd24odGhpcy5wYWludGJydXNoKTtcbiAgICAgIHRoaXMuY3VycmVudEVsZW1lbnQgPSBlbGVtZW50LmluZGV4O1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBlID0+IHtcbiAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChcbiAgICAgICAgZS50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFgsXG4gICAgICAgIGUudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRZXG4gICAgICApO1xuICAgICAgbGV0IGNlbGwgPSB0aGlzLmNlbGxzW2VsZW1lbnQuaW5kZXhdO1xuICAgICAgaWYgKGVsZW1lbnQuaW5kZXggIT09IHRoaXMuY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudEVsZW1lbnQgPj0gMCkge1xuICAgICAgICAgIGxldCBwYXN0Q2VsbCA9IHRoaXMuY2VsbHNbdGhpcy5jdXJyZW50RWxlbWVudF07XG4gICAgICAgICAgcGFzdENlbGwudXAoKTtcbiAgICAgICAgfVxuICAgICAgICBjZWxsLmRvd24odGhpcy5wYWludGJydXNoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNlbGwuYmVuZCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQuaW5kZXg7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZSA9PiB7XG4gICAgICAvLyBubyB0b3VjaGVzIHRvIGNhbGN1bGF0ZSBiZWNhdXNlIG5vbmUgcmVtYWluaW5nXG4gICAgICBsZXQgY2VsbCA9IHRoaXMuY2VsbHNbdGhpcy5jdXJyZW50RWxlbWVudF07XG4gICAgICBjZWxsLnVwKCk7XG4gICAgICB0aGlzLmludGVyYWN0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmN1cnJlbnRFbGVtZW50ID0gZmFsc2U7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gIE51bWJlciBvZiByb3dzIGluIHRoZSBzZXF1ZW5jZXJcbiAgQHR5cGUge251bWJlcn1cbiAgKi9cbiAgZ2V0IHJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4LnJvd3M7XG4gIH1cblxuICBzZXQgcm93cyh2KSB7XG4gICAgdGhpcy5tYXRyaXgucm93cyA9IHY7XG4gICAgdGhpcy5lbXB0eSgpO1xuICAgIHRoaXMuYnVpbGRJbnRlcmZhY2UoKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG5cbiAgLyoqXG4gIE51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBzZXF1ZW5jZXJcbiAgQHR5cGUge251bWJlcn1cbiAgKi9cbiAgZ2V0IGNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWF0cml4LmNvbHVtbnM7XG4gIH1cblxuICBzZXQgY29sdW1ucyh2KSB7XG4gICAgdGhpcy5tYXRyaXguY29sdW1ucyA9IHY7XG4gICAgdGhpcy5zdGVwcGVyLm1heCA9IHY7XG4gICAgdGhpcy5lbXB0eSgpO1xuICAgIHRoaXMuYnVpbGRJbnRlcmZhY2UoKTtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9zZXF1ZW5jZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBtYXRoIGZyb20gJy4uL3V0aWwvbWF0aCc7XG5pbXBvcnQgU2VxdWVuY2UgZnJvbSAnLi4vbW9kZWxzL3NlcXVlbmNlJztcblxuLy8gRm9yIHRoZSB0dXRvcmlhbCwgbG9va2luZyBhdFxuXG4vL1BhdHRlcm4gc2VjdGlvbjpcbi8vIC5jcmVhdGUoKSwgLnJvd3MsIC5jb2x1bW5zLFxuLy8gLnBhdHRlcm4sIC5sZW5ndGgsIC5mb3JtYXRBc1RleHQoKSwgLmxvZygpLFxuLy8gLmxvY2F0ZShpKSwgLmluZGV4T2YoYyxyKVxuLy8gcm93KCksIGNvbHVtbigpIChyZXR1cm5zIGNvbnRlbnRzIG9mIHJvdyBvciBjb2x1bSlcblxuLy9Db250cm9sIHNlY3Rpb246XG4vLyB0b2dnbGUgeDNcbi8vIHNldCB4NFxuLy8gcm90YXRlIHgzXG4vLyBwb3B1bGF0ZSB4M1xuLy8gZXJhc2UgeDNcblxuXG4vLyBzaG91bGQgc29tZSB2ZXJzaW9uIG9mIHRoaXMgaGF2ZSBhIGZsb2F0IHZhbHVlIGZvciBlYWNoIGNlbGw/XG4vLyBjb3VsZCBiZSBsaWtlIGEgbWlycm9yIC5wYXR0ZXJuIHRoYXQgaGFzIHZhbHVlcy4gYnkgZGVmYXVsdCwgZXZlcnl0aGluZyBpcyAxLCBidXQgY291bGQgYmUgc2V0Li4uXG4vLyBub3QgYSBnb29kIHdheSB0byBkbyB0aGF0IG9uIGludGVyZmFjZSwgYnV0IGFzIGEgbW9kZWwgaXQgd291bGQgYmUgbmljZS4uLlxuLy8gZm9yIC5mb3JtYXRBc1RleHQoKSwgY291bGQgbXVsdGlwbHkgYnkgMTAwIGFuZCBmbG9vciwgc28gZWFjaCBjZWxsIGlzIGFuIGludCBmcm9tIDAgdG8gOVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRyaXgge1xuXG4gIGNvbnN0cnVjdG9yKHJvd3MsY29sdW1ucykge1xuICAgIC8vIHNob3VsZCBhbHNvIGhhdmUgYWJpbGl0eSB0byBjcmVhdGUgdXNpbmcgYW4gZXhpc3RpbmcgbWF0cml4ICgyZCBhcnJheSlcbiAgICB0aGlzLnBhdHRlcm4gPSBbXTtcbiAgICB0aGlzLmNyZWF0ZShyb3dzLGNvbHVtbnMpO1xuXG4gICAgdGhpcy50b2dnbGUgPSB7XG4gICAgICBjZWxsOiAoY29sdW1uLCByb3cpID0+IHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuW3Jvd11bY29sdW1uXSA9ICF0aGlzLnBhdHRlcm5bcm93XVtjb2x1bW5dOyAvLyBtYXRoLmludmVydCh0aGlzLnBhdHRlcm5bcm93XVtjb2x1bW5dKTtcbiAgICAgICAgaWYgKHRoaXMudWkpIHsgdGhpcy51aS51cGRhdGUoKTsgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXR0ZXJuW3Jvd11bY29sdW1uXTtcbiAgICAgIH0sXG4gICAgICBhbGw6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pdGVyYXRlKChyLGMpID0+IHsgdGhpcy50b2dnbGUuY2VsbChjLHIpOyB9KTtcbiAgICAgICAgaWYgKHRoaXMudWkpIHsgdGhpcy51aS51cGRhdGUoKTsgfVxuICAgICAgfSxcbiAgICAgIHJvdzogKHJvdykgPT4ge1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZS5jZWxsKGkscm93KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9LFxuICAgICAgY29sdW1uOiAoY29sdW1uKSA9PiB7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLnJvd3M7IGkrKykge1xuICAgICAgICAgIHRoaXMudG9nZ2xlLmNlbGwoY29sdW1uLGkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5zZXQgPSB7XG4gICAgICBjZWxsOiAoY29sdW1uLCByb3csIHZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMucGF0dGVybltyb3ddW2NvbHVtbl0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMudWkpIHsgdGhpcy51aS51cGRhdGUoKTsgfVxuICAgICAgfSxcbiAgICAgIGFsbDogKHZhbHVlcykgPT4ge1xuICAgICAgICAvLyBzZXQgdGhlIHdob2xlIG1hdHJpeCB1c2luZyBhIDJkIGFycmF5IGFzIGlucHV0XG4gICAgICAgIC8vIHRoaXMgc2hvdWxkIGFsc28gcmVzaXplIHRoZSBhcnJheT9cbiAgICAgICAgdGhpcy5wYXR0ZXJuID0gdmFsdWVzO1xuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9LFxuICAgICAgcm93OiAocm93LHZhbHVlcykgPT4ge1xuICAgICAgICAvLyBzZXQgYSByb3cgdXNpbmcgYW4gYXJyYXkgYXMgaW5wdXRcbiAgICAgICAgdGhpcy5wYXR0ZXJuW3Jvd10gPSB2YWx1ZXM7XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH0sXG4gICAgICBjb2x1bW46IChjb2x1bW4sdmFsdWVzKSA9PiB7XG4gICAgICAgIC8vIHNldCBhIGNvbHVtbiB1c2luZyBhbiBhcnJheSBhcyBpbnB1dFxuICAgICAgICB0aGlzLnBhdHRlcm4uZm9yRWFjaCgocm93LGkpID0+IHtcbiAgICAgICAgICB0aGlzLnBhdHRlcm5baV1bY29sdW1uXSA9IHZhbHVlc1tpXTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5yb3RhdGUgPSB7XG4gICAgICAvL3Nob3VsZCBldmVudHVhbGx5IGRvIChhbW91bnRYLCBhbW91bnRZKSBoZXJlXG4gICAgICAvLyBjb3VsZCBqdXN0IHVzZSBhIGxvb3AgYW5kIHRoaXMucm90YXRlLnJvdyhpLGFtb3VudFgpO1xuICAgICAgYWxsOiAoYW1vdW50KSA9PiB7XG4gICAgICAgIGlmICghYW1vdW50ICYmIGFtb3VudCE9PTApIHtcbiAgICAgICAgICBhbW91bnQgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGFtb3VudCAlPSB0aGlzLnBhdHRlcm5bMF0ubGVuZ3RoO1xuICAgICAgICBpZiAoYW1vdW50IDwgMCkge1xuICAgICAgICAgIGFtb3VudCA9IHRoaXMucGF0dGVyblswXS5sZW5ndGggKyBhbW91bnQ7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMucm93czsgaSsrKSB7XG4gICAgICAgICAgbGV0IGN1dCA9IHRoaXMucGF0dGVybltpXS5zcGxpY2UoIHRoaXMucGF0dGVybltpXS5sZW5ndGggLSBhbW91bnQsIGFtb3VudCApO1xuICAgICAgICAgIHRoaXMucGF0dGVybltpXSA9IGN1dC5jb25jYXQoIHRoaXMucGF0dGVybltpXSApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH0sXG4gICAgICByb3c6IChyb3csYW1vdW50KSA9PiB7XG4gICAgICAgIGlmICghYW1vdW50ICYmIGFtb3VudCE9PTApIHtcbiAgICAgICAgICBhbW91bnQgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGFtb3VudCAlPSB0aGlzLnBhdHRlcm5bMF0ubGVuZ3RoO1xuICAgICAgICBpZiAoYW1vdW50IDwgMCkge1xuICAgICAgICAgIGFtb3VudCA9IHRoaXMucGF0dGVyblswXS5sZW5ndGggKyBhbW91bnQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGN1dCA9IHRoaXMucGF0dGVybltyb3ddLnNwbGljZSggdGhpcy5wYXR0ZXJuW3Jvd10ubGVuZ3RoIC0gYW1vdW50LCBhbW91bnQgKTtcbiAgICAgICAgdGhpcy5wYXR0ZXJuW3Jvd10gPSBjdXQuY29uY2F0KCB0aGlzLnBhdHRlcm5bcm93XSApO1xuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9LFxuICAgICAgY29sdW1uOiAoY29sdW1uLCBhbW91bnQpID0+IHtcbiAgICAgICAgaWYgKCFhbW91bnQgJiYgYW1vdW50IT09MCkge1xuICAgICAgICAgIGFtb3VudCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgYW1vdW50ICU9IHRoaXMucGF0dGVybi5sZW5ndGg7XG4gICAgICAgIGlmIChhbW91bnQgPCAwKSB7XG4gICAgICAgICAgYW1vdW50ID0gdGhpcy5wYXR0ZXJuLmxlbmd0aCArIGFtb3VudDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHJveHkgPSBbXTtcbiAgICAgICAgdGhpcy5wYXR0ZXJuLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIHByb3h5LnB1c2goIHJvd1tjb2x1bW5dICk7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgY3V0ID0gcHJveHkuc3BsaWNlKCBwcm94eS5sZW5ndGggLSBhbW91bnQsIGFtb3VudCApO1xuICAgICAgICBwcm94eSA9IGN1dC5jb25jYXQoIHByb3h5ICk7XG4gICAgICAgIHRoaXMucGF0dGVybi5mb3JFYWNoKChyb3csaSkgPT4ge1xuICAgICAgICAgIHJvd1tjb2x1bW5dID0gcHJveHlbaV07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIHRoZSBpZGVhIGJlaGluZCBwb3B1bGF0ZSBpcyB0byBiZSBhYmxlIHRvIHNldCBhIHdob2xlIHJvdyBvciBjb2x1bW4gdG8gMCBvciAxXG4gICAgLy8gSUYgdGhlIHZhbHVlIGlzIGEgZmxvYXQsIHN1Y2ggYXMgMC43LCB0aGVuIGl0IHdvdWxkIGJlY29tZSBhIHByb2JhYmlsaXR5XG4gICAgLy8gc28gcG9wdWxhdGUoMC43KSB3b3VsZCBnaXZlIGVhY2ggY2VsbCBhIDcwJSBjaGFuY2Ugb2YgYmVpbmcgMVxuICAgIHRoaXMucG9wdWxhdGUgPSB7XG4gICAgICBhbGw6IChvZGRzKSA9PiB7XG4gICAgICAgIGxldCBvZGRzU2VxdWVuY2UgPSBuZXcgU2VxdWVuY2Uob2Rkcyk7XG4gICAgICAgIHRoaXMuaXRlcmF0ZSgocixjKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYXR0ZXJuW3JdW2NdID0gbWF0aC5jb2luKG9kZHNTZXF1ZW5jZS5uZXh0KCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gVGhpcyBjb3VsZCBiZSB1c2VkIHNvIHRoYXQgZWFjaCByb3cgaGFzIHNhbWUgb2RkcyBwYXR0ZXJuLCBldmVuIGlmIHJvdyBsZW5ndGggaXMgbm90IGRpdmlzaWJseSBieSBzZXF1ZW5jZSBsZW5ndGguXG4gICAgICAgIC8vLCgpID0+IHtcbiAgICAgICAgLy8gIG9kZHMucG9zID0gLTE7XG4gICAgICAgIC8vIH1cbiAgICAgICAgaWYgKHRoaXMudWkpIHsgdGhpcy51aS51cGRhdGUoKTsgfVxuICAgICAgfSxcbiAgICAgIHJvdzogKHJvdz0wLG9kZHM9MSkgPT4ge1xuICAgICAgICBsZXQgb2Rkc1NlcXVlbmNlID0gbmV3IFNlcXVlbmNlKG9kZHMpO1xuICAgICAgICB0aGlzLnBhdHRlcm5bcm93XS5mb3JFYWNoKChjZWxsLGkpID0+IHtcbiAgICAgICAgICB0aGlzLnBhdHRlcm5bcm93XVtpXSA9IG1hdGguY29pbihvZGRzU2VxdWVuY2UubmV4dCgpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnVpKSB7IHRoaXMudWkudXBkYXRlKCk7IH1cbiAgICAgIH0sXG4gICAgICBjb2x1bW46IChjb2x1bW49MCxvZGRzPTEpID0+IHtcbiAgICAgICAgbGV0IG9kZHNTZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZShvZGRzKTtcbiAgICAgICAgdGhpcy5wYXR0ZXJuLmZvckVhY2goKHJvdyxpKSA9PiB7XG4gICAgICAgICAgdGhpcy5wYXR0ZXJuW2ldW2NvbHVtbl0gPSBtYXRoLmNvaW4ob2Rkc1NlcXVlbmNlLm5leHQoKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy51aSkgeyB0aGlzLnVpLnVwZGF0ZSgpOyB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIGVzc2VudGlhbGwgcG9wdWxhdGUoMCkgc28gaSdtIG5vdCBzdXJlIGlmIHRoaXMgaXMgbmVjZXNzYXJ5IGJ1dCBpcyBuaWNlXG4gICAgdGhpcy5lcmFzZSA9IHtcbiAgICAgIGFsbDogKCkgPT4ge1xuICAgICAgICB0aGlzLnNldC5hbGwoMCk7XG4gICAgICB9LFxuICAgICAgcm93OiAocm93KSA9PiB7XG4gICAgICAgIHRoaXMuc2V0LnJvdyhyb3csMCk7XG4gICAgICB9LFxuICAgICAgY29sdW1uOiAoY29sdW1uKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0LmNvbHVtbihjb2x1bW4sMCk7XG4gICAgICB9XG4gICAgfTtcblxuICAvLyBlbmQgY29uc3RydWN0b3JcbiAgfVxuXG5cbiAgY3JlYXRlKHJvd3MsY29sdW1ucykge1xuICAgIHRoaXMucGF0dGVybiA9IFtdO1xuICAgIGZvciAoIGxldCByb3c9MDsgcm93IDwgcm93czsgcm93KysgKSB7XG4gICAgICBsZXQgYXJyID0gbmV3IEFycmF5KGNvbHVtbnMpO1xuICAgICAgdGhpcy5wYXR0ZXJuLnB1c2goYXJyKTtcbiAgICB9XG4gICAgdGhpcy5pdGVyYXRlKChyLGMpID0+IHsgdGhpcy5wYXR0ZXJuW3JdW2NdID0gZmFsc2U7IH0pO1xuICB9XG5cbiAgaXRlcmF0ZShmLCBmMikge1xuICAgIGxldCBpID0gMDtcbiAgICBmb3IgKCBsZXQgcm93PTA7IHJvdyA8IHRoaXMucm93czsgcm93KysgKSB7XG4gICAgICBpZiAoZjIpIHsgZjIocm93KTsgfVxuICAgICAgZm9yICggbGV0IGNvbHVtbj0wOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrICkge1xuICAgICAgICBmKHJvdyxjb2x1bW4saSk7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3JtYXRBc1RleHQoKSB7XG4gICAgbGV0IHBhdHRlcm5TdHJpbmcgPSAnJztcbiAgICB0aGlzLml0ZXJhdGUoXG4gICAgICAocixjKSA9PiB7IHBhdHRlcm5TdHJpbmcgKz0gKHRoaXMucGF0dGVybltyXVtjXSA/IDEgOiAwKSArICcgJzsgfSxcbiAgICAgICgpID0+IHsgcGF0dGVyblN0cmluZyArPSAnXFxuJzsgfVxuICAgICk7XG4gICAgcmV0dXJuIHBhdHRlcm5TdHJpbmc7XG4gIH1cblxuICBsb2coKSB7XG4gICAgY29uc29sZS5sb2codGhpcy5mb3JtYXRBc1RleHQoKSk7XG4gIH1cblxuICB1cGRhdGUocGF0dGVybikge1xuICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm4gfHwgdGhpcy5wYXR0ZXJuO1xuICB9XG5cbiAgZ2V0IGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzKnRoaXMuY29sdW1ucztcbiAgfVxuXG4gIGxvY2F0ZShpbmRleCkge1xuICAgIC8vIHJldHVybnMgcm93IGFuZCBjb2x1bW4gb2YgY2VsbCBieSBpbmRleFxuICAgIHJldHVybiB7XG4gICAgICByb3c6IH5+KCBpbmRleCAvIHRoaXMuY29sdW1ucyApLFxuICAgICAgY29sdW1uOiBpbmRleCAlIHRoaXMuY29sdW1uc1xuICAgIH07XG4gIH1cblxuICBpbmRleE9mKHJvdyxjb2x1bW4pIHtcbiAgICByZXR1cm4gY29sdW1uICsgcm93ICogdGhpcy5jb2x1bW5zO1xuICAgIC8vIHJldHVybnMgaW5kZXggb2YgY2VsbCBieSByb3cgYW5kIGNvbHVtblxuICB9XG5cbiAgcm93KHJvdykge1xuICAgIGxldCBkYXRhID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBkYXRhLnB1c2godGhpcy5wYXR0ZXJuW3Jvd10gPyAxIDogMCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgY29sdW1uKGNvbHVtbikge1xuICAgIGxldCBkYXRhID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHRoaXMucm93czsgaSsrKSB7XG4gICAgICBkYXRhLnB1c2godGhpcy5wYXR0ZXJuW2ldW2NvbHVtbl0gPyAxIDogMCk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0IHJvd3MoKSB7XG4gICAgcmV0dXJuIHRoaXMucGF0dGVybi5sZW5ndGg7XG4gIH1cbiAgc2V0IHJvd3Modikge1xuICAgIGxldCBwcmV2aW91cyA9IHRoaXMucGF0dGVybi5zbGljZSgwKTtcbiAgICB0aGlzLmNyZWF0ZSh2LHRoaXMuY29sdW1ucyk7XG4gICAgdGhpcy5pdGVyYXRlKChyLGMpID0+IHtcbiAgICAgIGlmIChwcmV2aW91c1tyXSAmJiBwcmV2aW91c1tyXVtjXSkge1xuICAgICAgICB0aGlzLnBhdHRlcm5bcl1bY10gPSBwcmV2aW91c1tyXVtjXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldCBjb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLnBhdHRlcm5bMF0ubGVuZ3RoO1xuICB9XG4gIHNldCBjb2x1bW5zKHYpIHtcbiAgICBsZXQgcHJldmlvdXMgPSB0aGlzLnBhdHRlcm4uc2xpY2UoMCk7XG4gICAgdGhpcy5jcmVhdGUodGhpcy5yb3dzLHYpO1xuICAgIHRoaXMuaXRlcmF0ZSgocixjKSA9PiB7XG4gICAgICBpZiAocHJldmlvdXNbcl0gJiYgcHJldmlvdXNbcl1bY10pIHtcbiAgICAgICAgdGhpcy5wYXR0ZXJuW3JdW2NdID0gcHJldmlvdXNbcl1bY107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL21vZGVscy9tYXRyaXguanMiLCIndXNlIHN0cmljdCc7XHJcblxyXG5pbXBvcnQgbWF0aCBmcm9tICcuLi91dGlsL21hdGgnO1xyXG5pbXBvcnQgRHJ1bmsgZnJvbSAnLi9kcnVuayc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXF1ZW5jZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3Ioc2VxdWVuY2UgPSBbMCwxMCwyMCwzMF0sIG1vZGU9J3VwJywgcG9zaXRpb249ZmFsc2UpIHtcclxuICAgICAgICB0aGlzLnZhbHVlcyA9IHNlcXVlbmNlO1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlcykpIHtcclxuICAgICAgICAgIHRoaXMudmFsdWVzID0gW3RoaXMudmFsdWVzXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fbW9kZSA9IG1vZGU7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xyXG5cclxuICAgICAgICB0aGlzLmRydW5rV2FsayA9IG5ldyBEcnVuaygwLCB0aGlzLnZhbHVlcy5sZW5ndGggLSAxKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdGFydFZhbHVlcyA9IHtcclxuICAgICAgICAgICd1cCc6IDAsXHJcbiAgICAgICAgICAnZG93bic6IHRoaXMudmFsdWVzLmxlbmd0aCAtIDEsXHJcbiAgICAgICAgICAnZHJ1bmsnOiB+fih0aGlzLnZhbHVlcy5sZW5ndGgvMiksXHJcbiAgICAgICAgICAncmFuZG9tJzogbWF0aC5yaSh0aGlzLnZhbHVlcy5sZW5ndGgpXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucG9zaXRpb24hPT1mYWxzZSkge1xyXG4gICAgICAgICAgdGhpcy5uZXh0ID0gdGhpc1t0aGlzLl9tb2RlXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5uZXh0ID0gdGhpcy5maXJzdDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXQgbW9kZSgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX21vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IG1vZGUobW9kZSkge1xyXG4gICAgICAgIGlmICghKG1vZGUgPT09ICd1cCcgfHwgbW9kZSA9PT0gJ2Rvd24nIHx8IG1vZGUgPT09ICdyYW5kb20nIHx8IG1vZGUgPT09ICdkcnVuaycpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBvbmx5IG1vZGVzIGN1cnJlbnRseSBhbGxvd2VkIGFyZTogdXAsIGRvd24sIHJhbmRvbSwgZHJ1bmsnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9tb2RlID0gbW9kZTtcclxuICAgICAgICBpZiAodGhpcy5wb3NpdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5uZXh0ID0gdGhpc1t0aGlzLl9tb2RlXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZXNbdGhpcy5wb3NpdGlvbl07XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHZhbHVlKHYpIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMudmFsdWVzLmluZGV4T2Yodik7XHJcbiAgICB9XHJcblxyXG4gICAgZmlyc3QoKSB7XHJcbiAgICAgIGlmICh0aGlzLnBvc2l0aW9uIT09ZmFsc2UpIHtcclxuICAgICAgICB0aGlzLm5leHQgPSB0aGlzW3RoaXMuX21vZGVdO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5leHQoKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBvc2l0aW9uID0gdGhpcy5zdGFydFZhbHVlc1t0aGlzLl9tb2RlXTtcclxuICAgICAgdGhpcy5uZXh0ID0gdGhpc1t0aGlzLl9tb2RlXTtcclxuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgdXAoKSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb24rKztcclxuICAgICAgdGhpcy5wb3NpdGlvbiAlPSB0aGlzLnZhbHVlcy5sZW5ndGg7XHJcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGRvd24oKSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb24tLTtcclxuICAgICAgaWYgKHRoaXMucG9zaXRpb24gPCAwKSB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbiA9ICh0aGlzLnBvc2l0aW9uICsgdGhpcy52YWx1ZXMubGVuZ3RoKSAlIHRoaXMudmFsdWVzLmxlbmd0aDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByYW5kb20oKSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb24gPSBtYXRoLnJpKDAsIHRoaXMudmFsdWVzLmxlbmd0aCk7XHJcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGRydW5rKCkge1xyXG4gICAgICB0aGlzLmRydW5rV2Fsay5tYXggPSB0aGlzLnZhbHVlcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZHJ1bmtXYWxrLnZhbHVlID0gdGhpcy5wb3NpdGlvbjtcclxuICAgICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMuZHJ1bmtXYWxrLm5leHQoKTtcclxuICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyogZnV0dXJlIG1ldGhvZHNcclxuICAgIC5ncm91cChzdGFydCxzdG9wKSAtLSBvdXRwdXRzIGEgZ3JvdXAgb2YgbiBpdGVtcyBmcm9tIHRoZSBsaXN0LCB3aXRoIHdyYXBwaW5nXHJcbiAgICAubG9vcChzdGFydCxzdG9wKSAtLSBjb25maW5lcyBzZXF1ZW5jaW5nIHRvIGEgc3Vic2V0IG9mIHRoZSB2YWx1ZXNcclxuICAgICAgICAoY291bGQgZXZlbiBoYXZlIGEgZGlzdGluY3Rpb24gYmV0d2VlbiAub3JpZ2luYWxWYWx1ZXMgYW5kIHRoZSBhcnJheSBvZiB2YWx1ZXMgYmVpbmcgdXNlZClcclxuICAgICovXHJcbn1cclxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL21vZGVscy9zZXF1ZW5jZS5qcyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IG1hdGggZnJvbSAnLi4vdXRpbC9tYXRoJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJ1bmsge1xuXG4gICAgY29uc3RydWN0b3IobWluPTAsIG1heD05LCB2YWx1ZT0wLCBpbmNyZW1lbnQ9MSwgbG9vcD1mYWxzZSkge1xuICAgICAgICB0aGlzLm1pbiA9IG1pbjtcbiAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnQgPSBpbmNyZW1lbnQ7XG4gICAgICAgIHRoaXMubG9vcCA9IGxvb3A7XG4gICAgfVxuXG4gICAgbmV4dCgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSArPSBtYXRoLnBpY2soLTEgKiB0aGlzLmluY3JlbWVudCwgdGhpcy5pbmNyZW1lbnQpO1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb29wKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXggLSB0aGlzLmluY3JlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvb3ApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbiArIHRoaXMuaW5jcmVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9tb2RlbHMvZHJ1bmsuanMiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBtYXRoIGZyb20gJy4uL3V0aWwvbWF0aCc7XG5pbXBvcnQgRHJ1bmsgZnJvbSAnLi9kcnVuayc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvdW50ZXIge1xuXG4gICAgY29uc3RydWN0b3IobWluPTAsIG1heD0xMCwgbW9kZT0ndXAnLCB2YWx1ZT1mYWxzZSkge1xuICAgICAgICB0aGlzLm1pbiA9IG1pbjtcbiAgICAgICAgdGhpcy5tYXggPSBtYXg7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgICAgICAgdGhpcy5kcnVua1dhbGsgPSBuZXcgRHJ1bmsodGhpcy5taW4sIHRoaXMubWF4KTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUhPT1mYWxzZSkge1xuICAgICAgICAgIHRoaXMubmV4dCA9IHRoaXNbdGhpcy5fbW9kZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5uZXh0ID0gdGhpcy5maXJzdDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldCBtb2RlKG1vZGUpIHtcbiAgICAgICAgaWYgKCEobW9kZSA9PT0gJ3VwJyB8fCBtb2RlID09PSAnZG93bicgfHwgbW9kZSA9PT0gJ3JhbmRvbScgfHwgbW9kZSA9PT0gJ2RydW5rJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1RoZSBvbmx5IG1vZGVzIGN1cnJlbnRseSBhbGxvd2VkIGFyZTogdXAsIGRvd24sIHJhbmRvbSwgZHJ1bmsnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tb2RlID0gbW9kZTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLm5leHQgPSB0aGlzW3RoaXMuX21vZGVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG1vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlO1xuICAgIH1cblxuICAgIGZpcnN0KCkge1xuICAgICAgaWYgKHRoaXMudmFsdWUhPT1mYWxzZSkge1xuICAgICAgICB0aGlzLm5leHQgPSB0aGlzW3RoaXMuX21vZGVdO1xuICAgICAgICByZXR1cm4gdGhpcy5uZXh0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLnN0YXJ0VmFsdWVzID0ge1xuICAgICAgICAndXAnOiB0aGlzLm1pbixcbiAgICAgICAgJ2Rvd24nOiB0aGlzLm1heCxcbiAgICAgICAgJ2RydW5rJzogfn5tYXRoLmF2ZXJhZ2UodGhpcy5taW4sdGhpcy5tYXgpLFxuICAgICAgICAncmFuZG9tJzogbWF0aC5yaSh0aGlzLm1pbix0aGlzLm1heClcbiAgICAgIH07XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5zdGFydFZhbHVlc1t0aGlzLl9tb2RlXTtcbiAgICAgIHRoaXMubmV4dCA9IHRoaXNbdGhpcy5fbW9kZV07XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICB1cCgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSsrO1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA+PSB0aGlzLm1heCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIGRvd24oKSB7XG4gICAgICAgIHRoaXMudmFsdWUtLTtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG1hdGgucmkodGhpcy5taW4sIHRoaXMubWF4KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gICAgfVxuXG4gICAgZHJ1bmsoKSB7XG4gICAgICAgIHRoaXMuZHJ1bmtXYWxrLm1pbiA9IHRoaXMubWluO1xuICAgICAgICB0aGlzLmRydW5rV2Fsay5tYXggPSB0aGlzLm1heDtcbiAgICAgICAgdGhpcy5kcnVua1dhbGsudmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5kcnVua1dhbGsubmV4dCgpO1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvbW9kZWxzL2NvdW50ZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IGNsb2NrIH0gZnJvbSAnLi4vbWFpbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVydmFsIHtcblxuICBjb25zdHJ1Y3RvcihyYXRlLGZ1bmMsb24pIHtcblxuICAgIHRoaXMucmF0ZSA9IHJhdGU7XG4gICAgdGhpcy5vbiA9IG9uO1xuICAgIHRoaXMuY2xvY2sgPSBjbG9jaygpOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblxuICAgIHRoaXMucGF0dGVybiA9IFsxXTtcbiAgICB0aGlzLmluZGV4ID0gMDtcblxuICAgIHRoaXMuZXZlbnQgPSBmdW5jID8gZnVuYyA6IGZ1bmN0aW9uKCkgeyB9O1xuXG4gICAgaWYgKHRoaXMub24pIHtcbiAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICB9XG5cbiAgfVxuXG4gIF9ldmVudChlKSB7XG4gIC8vICBpZiAodGhpcy5wYXR0ZXJuW3RoaXMuaW5kZXgldGhpcy5wYXR0ZXJuLmxlbmd0aF0pIHtcbiAgICAgIHRoaXMuZXZlbnQoZSk7XG4gIC8vICB9XG4gICAgdGhpcy5pbmRleCsrO1xuICB9XG5cbiAgc3RvcCgpIHtcbiAgICB0aGlzLm9uID0gZmFsc2U7XG4gICAgdGhpcy5pbnRlcnZhbC5jbGVhcigpO1xuICB9XG5cbiAgc3RhcnQoKSB7XG4gICAgdGhpcy5vbiA9IHRydWU7XG4gICAgdGhpcy5pbnRlcnZhbCA9IHRoaXMuY2xvY2suY2FsbGJhY2tBdFRpbWUodGhpcy5fZXZlbnQuYmluZCh0aGlzKSwgdGhpcy5jbG9jay5jb250ZXh0LmN1cnJlbnRUaW1lKS5yZXBlYXQodGhpcy5yYXRlLzEwMDApLnRvbGVyYW5jZSh7ZWFybHk6IDAuMSwgbGF0ZToxfSk7XG4gIH1cblxuICBtcyhuZXdyYXRlKSB7XG4gICAgaWYgKHRoaXMub24pIHtcbiAgICAgIHZhciByYXRpbyA9IG5ld3JhdGUvdGhpcy5yYXRlO1xuICAgICAgdGhpcy5yYXRlID0gbmV3cmF0ZTtcbiAgICAgIHRoaXMuY2xvY2sudGltZVN0cmV0Y2godGhpcy5jbG9jay5jb250ZXh0LmN1cnJlbnRUaW1lLCBbdGhpcy5pbnRlcnZhbF0sIHJhdGlvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yYXRlID0gbmV3cmF0ZTtcbiAgICB9XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL3RpbWUvaW50ZXJ2YWwuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xubGV0IFN0ZXAgPSByZXF1aXJlKCcuLi9tb2RlbHMvc3RlcCcpO1xuaW1wb3J0ICogYXMgSW50ZXJhY3Rpb24gZnJvbSAnLi4vdXRpbC9pbnRlcmFjdGlvbic7XG5cbi8qKlxuKiBQYW4yRFxuKlxuKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBtb3ZpbmcgYSBzb3VuZCBhcm91bmQgYW4gYXJyYXkgb2Ygc3BlYWtlcnMuIFNwZWFrZXIgbG9jYXRpb25zIGNhbiBiZSBjdXN0b21pemVkLiBUaGUgaW50ZXJmYWNlIGNhbGN1bGF0ZXMgdGhlIGNsb3NlbmVzcyBvZiB0aGUgc291bmQgc291cmNlIHRvIGVhY2ggc3BlYWtlciBhbmQgcmV0dXJucyB0aGF0IGRpc3RhbmNlIGFzIGEgbnVtZXJpYyB2YWx1ZS5cbipcbiogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJwYW4yRFwiPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIHBhbjJkID0gbmV3IE5leHVzLlBhbjJkKCcjdGFyZ2V0JylcbipcbiogQGV4YW1wbGVcbiogdmFyIHBhbjJkID0gbmV3IE5leHVzLlBhbjJEKCcjdGFyZ2V0Jyx7XG4qICAgJ3NpemUnOiBbMjAwLDIwMF0sXG4qICAgJ3JhbmdlJzogMC41LCAgLy8gZGV0ZWN0aW9uIHJhZGl1cyBvZiBlYWNoIHNwZWFrZXJcbiogICAnbW9kZSc6ICdhYnNvbHV0ZScsICAgLy8gJ2Fic29sdXRlJyBvciAncmVsYXRpdmUnIHNvdW5kIG1vdmVtZW50XG4qICAgJ3NwZWFrZXJzJzogWyAgLy8gdGhlIHNwZWFrZXIgW3gseV0gcG9zaXRpb25zXG4qICAgICAgIFswLjUsMC4yXSxcbiogICAgICAgWzAuNzUsMC4yNV0sXG4qICAgICAgIFswLjgsMC41XSxcbiogICAgICAgWzAuNzUsMC43NV0sXG4qICAgICAgIFswLjUsMC44XSxcbiogICAgICAgWzAuMjUsMC43NV1cbiogICAgICAgWzAuMiwwLjVdLFxuKiAgICAgICBbMC4yNSwwLjI1XVxuKiAgIF1cbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgdGhlIFwic291cmNlXCIgbm9kZSdzIHBvc2l0aW9uIGNoYW5nZXMuIDxicj5cbiogVGhlIGV2ZW50IGRhdGEgaXMgYW4gYXJyYXkgb2YgdGhlIGFtcGxpdHVkZXMgKDAtMSksIHJlcHJlc2VudGluZyB0aGUgbGV2ZWwgb2YgZWFjaCBzcGVha2VyIChhcyBjYWxjdWxhdGVkIGJ5IGl0cyBkaXN0YW5jZSB0byB0aGUgYXVkaW8gc291cmNlKS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogcGFuMmQub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFuMkQgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3JhbmdlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFsyMDAsMjAwXSxcbiAgICAgICdyYW5nZSc6IDAuNSxcbiAgICAgICdtb2RlJzogJ2Fic29sdXRlJyxcbiAgICAgICdzcGVha2Vycyc6IFtcbiAgICAgICAgWzAuNSwwLjJdLFxuICAgICAgICBbMC43NSwwLjI1XSxcbiAgICAgICAgWzAuOCwwLjVdLFxuICAgICAgICBbMC43NSwwLjc1XSxcbiAgICAgICAgWzAuNSwwLjhdLFxuICAgICAgICBbMC4yNSwwLjc1XSxcbiAgICAgICAgWzAuMiwwLjVdLFxuICAgICAgICBbMC4yNSwwLjI1XVxuICAgICAgXVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLnZhbHVlID0ge1xuICAgICAgeDogbmV3IFN0ZXAoMCwxLDAsMC41KSxcbiAgICAgIHk6IG5ldyBTdGVwKDAsMSwwLDAuNSlcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgQWJzb2x1dGUgb3IgcmVsYXRpdmUgbW91c2UgaW50ZXJhY3Rpb24uIEluIFwiYWJzb2x1dGVcIiBtb2RlLCB0aGUgc291cmNlIG5vZGUgd2lsbCBqdW1wIHRvIHlvdXIgbW91c2UgcG9zaXRpb24gb24gbW91c2UgY2xpY2suIEluIFwicmVsYXRpdmVcIiBtb2RlLCBpdCBkb2VzIG5vdC5cbiAgICAqL1xuICAgIHRoaXMubW9kZSA9IHRoaXMuc2V0dGluZ3MubW9kZTtcblxuICAgIHRoaXMucG9zaXRpb24gPSB7XG4gICAgICB4OiBuZXcgSW50ZXJhY3Rpb24uSGFuZGxlKHRoaXMubW9kZSwnaG9yaXpvbnRhbCcsWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKSxcbiAgICAgIHk6IG5ldyBJbnRlcmFjdGlvbi5IYW5kbGUodGhpcy5tb2RlLCd2ZXJ0aWNhbCcsWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKVxuICAgIH07XG4gICAgdGhpcy5wb3NpdGlvbi54LnZhbHVlID0gdGhpcy52YWx1ZS54Lm5vcm1hbGl6ZWQ7XG4gICAgdGhpcy5wb3NpdGlvbi55LnZhbHVlID0gdGhpcy52YWx1ZS55Lm5vcm1hbGl6ZWQ7XG5cbiAgICAvKipcbiAgICBBbiBhcnJheSBvZiBzcGVha2VyIGxvY2F0aW9ucy4gVXBkYXRlIHRoaXMgd2l0aCAubW92ZVNwZWFrZXIoKSBvciAubW92ZUFsbFNwZWFrZXJzKClcbiAgICAqL1xuICAgIHRoaXMuc3BlYWtlcnMgPSB0aGlzLnNldHRpbmdzLnNwZWFrZXJzO1xuXG4gICAgLyoqXG4gICAgUmV3cml0ZTogVGhlIG1heGltdW0gZGlzdGFuY2UgZnJvbSBhIHNwZWFrZXIgdGhhdCB0aGUgc291cmNlIG5vZGUgY2FuIGJlIGZvciBpdCB0byBiZSBoZWFyZCBmcm9tIHRoYXQgc3BlYWtlci4gQSBsb3cgcmFuZ2UgKDAuMSkgd2lsbCByZXN1bHQgaW4gc3BlYWtlcnMgb25seSBwbGF5aW5nIHdoZW4gdGhlIHNvdW5kIGlzIHZlcnkgY2xvc2UgaXQuIERlZmF1bHQgaXMgMC41IChoYWxmIG9mIHRoZSBpbnRlcmZhY2UpLlxuICAgICovXG4gICAgdGhpcy5yYW5nZSA9IHRoaXMuc2V0dGluZ3MucmFuZ2U7XG5cbiAgICAvKipcbiAgICBUaGUgY3VycmVudCBsZXZlbHMgZm9yIGVhY2ggc3BlYWtlci4gVGhpcyBpcyBjYWxjdWxhdGVkIHdoZW4gYSBzb3VyY2Ugbm9kZSBvciBzcGVha2VyIG5vZGUgaXMgbW92ZWQgdGhyb3VnaCBpbnRlcmFjdGlvbiBvciBwcm9ncmFtYXRpY2FsbHkuXG4gICAgKi9cbiAgICB0aGlzLmxldmVscyA9IFtdO1xuXG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLmNhbGN1bGF0ZUxldmVscygpO1xuICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5rbm9iID0gc3ZnLmNyZWF0ZSgnY2lyY2xlJyk7XG5cblxuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmtub2IpO1xuXG5cbiAgICAvLyBhZGQgc3BlYWtlcnNcbiAgICB0aGlzLnNwZWFrZXJFbGVtZW50cyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0wO2k8dGhpcy5zcGVha2Vycy5sZW5ndGg7aSsrKSB7XG4gICAgICBsZXQgc3BlYWtlckVsZW1lbnQgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcblxuICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNwZWFrZXJFbGVtZW50KTtcblxuICAgICAgdGhpcy5zcGVha2VyRWxlbWVudHMucHVzaChzcGVha2VyRWxlbWVudCk7XG4gICAgfVxuXG4gIH1cblxuICBzaXplSW50ZXJmYWNlKCkge1xuXG4gICAgICAgIHRoaXMuX21pbkRpbWVuc2lvbiA9IE1hdGgubWluKHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpO1xuXG4gICAgICAgIHRoaXMua25vYlJhZGl1cyA9IHtcbiAgICAgICAgICBvZmY6IH5+KHRoaXMuX21pbkRpbWVuc2lvbi8xMDApICogMyArIDUsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMua25vYlJhZGl1cy5vbiA9IHRoaXMua25vYlJhZGl1cy5vZmYgKiAyO1xuXG4gICAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLndpZHRoLzIpO1xuICAgICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeScsdGhpcy5oZWlnaHQvMik7XG4gICAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYlJhZGl1cy5vZmYpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDtpPHRoaXMuc3BlYWtlcnMubGVuZ3RoO2krKykge1xuICAgICAgICAgIGxldCBzcGVha2VyRWxlbWVudCA9IHRoaXMuc3BlYWtlckVsZW1lbnRzW2ldO1xuICAgICAgICAgIGxldCBzcGVha2VyID0gdGhpcy5zcGVha2Vyc1tpXTtcbiAgICAgICAgICBzcGVha2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2N4JyxzcGVha2VyWzBdKnRoaXMud2lkdGgpO1xuICAgICAgICAgIHNwZWFrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnY3knLHNwZWFrZXJbMV0qdGhpcy5oZWlnaHQpO1xuICAgICAgICAgIHNwZWFrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgncicsdGhpcy5fbWluRGltZW5zaW9uLzIwICsgNSk7XG4gICAgICAgICAgc3BlYWtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdmaWxsLW9wYWNpdHknLCAnMCcpO1xuICAgICAgICB9XG5cbiAgICAgIHRoaXMucG9zaXRpb24ueC5yZXNpemUoWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKTtcbiAgICAgIHRoaXMucG9zaXRpb24ueS5yZXNpemUoWzAsdGhpcy53aWR0aF0sW3RoaXMuaGVpZ2h0LDBdKTtcblxuICAgICAgICAvLyBuZXh0LCBuZWVkIHRvXG4gICAgICAgIC8vIHJlc2l6ZSBwb3NpdGlvbnNcbiAgICAgICAgLy8gY2FsY3VsYXRlIHNwZWFrZXIgZGlzdGFuY2VzXG4gICAgICB0aGlzLmNhbGN1bGF0ZUxldmVscygpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcblxuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG5cbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQpO1xuXG4gICAgZm9yIChsZXQgaT0wO2k8dGhpcy5zcGVha2Vycy5sZW5ndGg7aSsrKSB7XG4gICAgICBsZXQgc3BlYWtlckVsZW1lbnQgPSB0aGlzLnNwZWFrZXJFbGVtZW50c1tpXTtcbiAgICAgIHNwZWFrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgICBzcGVha2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgfVxuXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgdGhpcy5rbm9iQ29vcmRpbmF0ZXMgPSB7XG4gICAgICB4OiB0aGlzLnZhbHVlLngubm9ybWFsaXplZCAqIHRoaXMud2lkdGgsXG4gICAgICB5OiB0aGlzLmhlaWdodCAtIHRoaXMudmFsdWUueS5ub3JtYWxpemVkICogdGhpcy5oZWlnaHRcbiAgICB9O1xuXG4gICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3gnLHRoaXMua25vYkNvb3JkaW5hdGVzLngpO1xuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmtub2JDb29yZGluYXRlcy55KTtcbiAgfVxuXG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5wb3NpdGlvbi54LmFuY2hvciA9IHRoaXMubW91c2U7XG4gICAgdGhpcy5wb3NpdGlvbi55LmFuY2hvciA9IHRoaXMubW91c2U7XG4gICAgdGhpcy5tb3ZlKCk7XG4gIH1cblxuICBtb3ZlKCkge1xuICAgIGlmICh0aGlzLmNsaWNrZWQpIHtcbiAgICAgIHRoaXMucG9zaXRpb24ueC51cGRhdGUodGhpcy5tb3VzZSk7XG4gICAgICB0aGlzLnBvc2l0aW9uLnkudXBkYXRlKHRoaXMubW91c2UpO1xuICAgICAgLy8gcG9zaXRpb24ueCBhbmQgcG9zaXRpb24ueSBhcmUgbm9ybWFsaXplZFxuICAgICAgLy8gc28gYXJlIHRoZSBsZXZlbHNcbiAgICAgIC8vIGxpa2VseSBkb24ndCBuZWVkIHRoaXMudmFsdWUgYXQgYWxsIC0tIG9ubHkgdXNlZCBmb3IgZHJhd2luZ1xuICAgICAgLy8gbm90IGdvaW5nIHRvIGJlIGEgJ3N0ZXAnIG9yICdtaW4nIGFuZCAnbWF4JyBpbiB0aGlzIG9uZS5cbiAgICAgIHRoaXMuY2FsY3VsYXRlTGV2ZWxzKCk7XG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5sZXZlbHMpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICByZWxlYXNlKCkge1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBnZXQgbm9ybWFsaXplZCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy52YWx1ZS54Lm5vcm1hbGl6ZWQsXG4gICAgICB5OiB0aGlzLnZhbHVlLnkubm9ybWFsaXplZFxuICAgIH07XG4gIH1cblxuICBjYWxjdWxhdGVMZXZlbHMoKSB7XG4gICAgdGhpcy52YWx1ZS54LnVwZGF0ZU5vcm1hbCggdGhpcy5wb3NpdGlvbi54LnZhbHVlICk7XG4gICAgdGhpcy52YWx1ZS55LnVwZGF0ZU5vcm1hbCggdGhpcy5wb3NpdGlvbi55LnZhbHVlICk7XG4gICAgdGhpcy5sZXZlbHMgPSBbXTtcbiAgICB0aGlzLnNwZWFrZXJzLmZvckVhY2goKHMsaSkgPT4ge1xuICAgICAgbGV0IGRpc3RhbmNlID0gbWF0aC5kaXN0YW5jZShzWzBdKnRoaXMud2lkdGgsc1sxXSp0aGlzLmhlaWdodCx0aGlzLnBvc2l0aW9uLngudmFsdWUqdGhpcy53aWR0aCwoMS10aGlzLnBvc2l0aW9uLnkudmFsdWUpKnRoaXMuaGVpZ2h0KTtcbiAgICAgIGxldCBsZXZlbCA9IG1hdGguY2xpcCgxLWRpc3RhbmNlLyh0aGlzLnJhbmdlKnRoaXMud2lkdGgpLDAsMSk7XG4gICAgICB0aGlzLmxldmVscy5wdXNoKGxldmVsKTtcbiAgICAgIHRoaXMuc3BlYWtlckVsZW1lbnRzW2ldLnNldEF0dHJpYnV0ZSgnZmlsbC1vcGFjaXR5JywgbGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gIE1vdmUgdGhlIGF1ZGlvIHNvdXJjZSBub2RlIGFuZCB0cmlnZ2VyIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEBwYXJhbSB4IHtudW1iZXJ9IE5ldyB4IGxvY2F0aW9uLCBub3JtYWxpemVkIDAtMVxuICBAcGFyYW0geSB7bnVtYmVyfSBOZXcgeSBsb2NhdGlvbiwgbm9ybWFsaXplZCAwLTFcbiAgKi9cbiAgbW92ZVNvdXJjZSh4LHkpIHtcbiAgICBsZXQgbG9jYXRpb24gPSB7XG4gICAgICB4OiB4KnRoaXMud2lkdGgsXG4gICAgICB5OiB5KnRoaXMuaGVpZ2h0XG4gICAgfTtcbiAgICB0aGlzLnBvc2l0aW9uLngudXBkYXRlKGxvY2F0aW9uKTtcbiAgICB0aGlzLnBvc2l0aW9uLnkudXBkYXRlKGxvY2F0aW9uKTtcbiAgICB0aGlzLmNhbGN1bGF0ZUxldmVscygpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLmxldmVscyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBNb3ZlIGEgc3BlYWtlciBub2RlIGFuZCB0cmlnZ2VyIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEBwYXJhbSBpbmRleCB7bnVtYmVyfSBJbmRleCBvZiB0aGUgc3BlYWtlciB0byBtb3ZlXG4gIEBwYXJhbSB4IHtudW1iZXJ9IE5ldyB4IGxvY2F0aW9uLCBub3JtYWxpemVkIDAtMVxuICBAcGFyYW0geSB7bnVtYmVyfSBOZXcgeSBsb2NhdGlvbiwgbm9ybWFsaXplZCAwLTFcbiAgKi9cbiAgbW92ZVNwZWFrZXIoaW5kZXgseCx5KSB7XG5cbiAgICB0aGlzLnNwZWFrZXJzW2luZGV4XSA9IFt4LHldO1xuICAgIHRoaXMuc3BlYWtlckVsZW1lbnRzW2luZGV4XS5zZXRBdHRyaWJ1dGUoJ2N4JywgeCp0aGlzLndpZHRoKTtcbiAgICB0aGlzLnNwZWFrZXJFbGVtZW50c1tpbmRleF0uc2V0QXR0cmlidXRlKCdjeScsIHkqdGhpcy5oZWlnaHQpO1xuICAgIHRoaXMuY2FsY3VsYXRlTGV2ZWxzKCk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMubGV2ZWxzKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuXG4gIH1cblxuICAvKipcbiAgU2V0IGFsbCBzcGVha2VyIGxvY2F0aW9uc1xuICBAcGFyYW0gbG9jYXRpb25zIHtBcnJheX0gQXJyYXkgb2Ygc3BlYWtlciBsb2NhdGlvbnMuIEVhY2ggaXRlbSBpbiB0aGUgYXJyYXkgc2hvdWxkIGJlIGFuIGFycmF5IG9mIG5vcm1hbGl6ZWQgeCBhbmQgeSBjb29yZGluYXRlcy5cblxuICBzZXRTcGVha2Vycyhsb2NhdGlvbnMpIHtcblxuICB9XG4gICovXG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9pbnRlcmZhY2VzL3BhbjJkLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgbWF0aCA9IHJlcXVpcmUoJy4uL3V0aWwvbWF0aCcpO1xubGV0IHN2ZyA9IHJlcXVpcmUoJy4uL3V0aWwvc3ZnJyk7XG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcblxuLyoqXG4qIFRpbHRcbipcbiogQGRlc2NyaXB0aW9uIERldmljZSB0aWx0IHNlbnNvciB3aXRoIDIgb3IgMyBheGVzIChkZXBlbmRpbmcgb24geW91ciBkZXZpY2UgYW5kIGJyb3dzZXIpLlxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT0ndGlsdCc+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgdGlsdCA9IG5ldyBOZXh1cy5UaWx0KCcjdGFyZ2V0JylcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYXQgYSByZWd1bGFyIGludGVydmFsLCBhcyBsb25nIGFzIHRoaXMgaW50ZXJmYWNlIGlzIGFjdGl2ZSAoc2VlIHRoZSBpbnRlcmZhY2UncyA8aT4uYWN0aXZlPC9pPiBwcm9wZXJ0eSk8YnI+XG4qIFRoZSBldmVudCBkYXRhIGlzIGFuIDxpPm9iamVjdDwvaT4gY29udGFpbmluZyB4IChudW1iZXIpIGFuZCB5IChudW1iZXIpIHByb3BlcnRpZXMgd2hpY2ggcmVwcmVzZW50IHRoZSBjdXJyZW50IHRpbHQgc3RhdGUgb2YgdGhlIGRldmljZS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogdGlsdC5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4qICAgY29uc29sZS5sb2codik7XG4qIH0pXG4qXG4qXG4qL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUaWx0IGV4dGVuZHMgSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIGxldCBvcHRpb25zID0gWyd2YWx1ZSddO1xuXG4gICAgbGV0IGRlZmF1bHRzID0ge1xuICAgICAgJ3NpemUnOiBbODAsODBdXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cyxvcHRpb25zLGRlZmF1bHRzKTtcblxuICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7XG5cbiAgICB0aGlzLmluaXQoKTtcblxuICAgIC8vIGFkZCBldmVudCBsaXN0ZW5lciBmb3IgZGV2aWNlIG9yaWVudGF0aW9uXG5cbiAgXHR0aGlzLmJvdW5kVXBkYXRlID0gdGhpcy51cGRhdGUuYmluZCh0aGlzKTtcbiAgLy9cdHRoaXMuYm91bmRNb3pUaWx0ID0gdGhpcy5tb3pUaWx0LmJpbmQodGhpcylcblxuICBcdGlmICh3aW5kb3cuRGV2aWNlT3JpZW50YXRpb25FdmVudCkge1xuICBcdFx0dGhpcy5vcmllbnRhdGlvbkxpc3RlbmVyID0gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2RldmljZW9yaWVudGF0aW9uJywgdGhpcy5ib3VuZFVwZGF0ZSwgZmFsc2UpO1xuICBcdH0gZWxzZSB7XG4gICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29sb3JJbnRlcmZhY2UoKTtcbiAgICB9XG5cblxuXG4gICAgICAvKmVsc2UgaWYgKHdpbmRvdy5PcmllbnRhdGlvbkV2ZW50KSB7XG4gIC8vXHQgIFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ01vek9yaWVudGF0aW9uJywgdGhpcy5ib3VuZE1velRpbHQsIGZhbHNlKTtcbiAgXHR9IGVsc2Uge1xuICBcdCAgXHRjb25zb2xlLmxvZygnTm90IHN1cHBvcnRlZCBvbiB5b3VyIGRldmljZSBvciBicm93c2VyLicpO1xuICBcdH0gKi9cblxuXG4gIH1cblxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy50aXRsZSA9IHN2Zy5jcmVhdGUoJ3RleHQnKTtcbiAgICB0aGlzLmNpcmNsZVggPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcbiAgICB0aGlzLmNpcmNsZVkgPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcbiAgICB0aGlzLmNpcmNsZVogPSBzdmcuY3JlYXRlKCdjaXJjbGUnKTtcblxuICAgIHRoaXMuYmFyWCA9IHN2Zy5jcmVhdGUoJ3BhdGgnKTtcbiAgICB0aGlzLmJhclkgPSBzdmcuY3JlYXRlKCdwYXRoJyk7XG4gICAgdGhpcy5iYXJaID0gc3ZnLmNyZWF0ZSgncGF0aCcpO1xuXG4gICAgdGhpcy5iYXJYMiA9IHN2Zy5jcmVhdGUoJ3BhdGgnKTtcbiAgICB0aGlzLmJhclkyID0gc3ZnLmNyZWF0ZSgncGF0aCcpO1xuICAgIHRoaXMuYmFyWjIgPSBzdmcuY3JlYXRlKCdwYXRoJyk7XG5cbiAgICB0aGlzLmJhclguc2V0QXR0cmlidXRlKCdvcGFjaXR5JywnMC44Jyk7XG4gICAgdGhpcy5iYXJZLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsJzAuOCcpO1xuICAgIHRoaXMuYmFyWi5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLCcwLjgnKTtcbiAgICB0aGlzLmJhclgyLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsJzAuOCcpO1xuICAgIHRoaXMuYmFyWTIuc2V0QXR0cmlidXRlKCdvcGFjaXR5JywnMC44Jyk7XG4gICAgdGhpcy5iYXJaMi5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLCcwLjgnKTtcblxuICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ2N4Jyx0aGlzLndpZHRoKjMvMTIpO1xuICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmhlaWdodCozLzQpO1xuICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMuaGVpZ2h0LzEwKTtcbiAgICB0aGlzLmNpcmNsZVguc2V0QXR0cmlidXRlKCdvcGFjaXR5JywnMC40Jyk7XG5cbiAgICB0aGlzLmNpcmNsZVkuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy53aWR0aCo2LzEyKTtcbiAgICB0aGlzLmNpcmNsZVkuc2V0QXR0cmlidXRlKCdjeScsdGhpcy5oZWlnaHQqMy80KTtcbiAgICB0aGlzLmNpcmNsZVkuc2V0QXR0cmlidXRlKCdyJyx0aGlzLmhlaWdodC8xMCk7XG4gICAgdGhpcy5jaXJjbGVZLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsJzAuNCcpO1xuXG4gICAgdGhpcy5jaXJjbGVaLnNldEF0dHJpYnV0ZSgnY3gnLHRoaXMud2lkdGgqOS8xMik7XG4gICAgdGhpcy5jaXJjbGVaLnNldEF0dHJpYnV0ZSgnY3knLHRoaXMuaGVpZ2h0KjMvNCk7XG4gICAgdGhpcy5jaXJjbGVaLnNldEF0dHJpYnV0ZSgncicsdGhpcy5oZWlnaHQvMTApO1xuICAgIHRoaXMuY2lyY2xlWi5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLCcwLjQnKTtcblxuXG4gICAgdGhpcy5iYXJYLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJyxNYXRoLnJvdW5kKHRoaXMuaGVpZ2h0LzMwKSk7XG4gICAgdGhpcy5iYXJZLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJyxNYXRoLnJvdW5kKHRoaXMuaGVpZ2h0LzMwKSk7XG4gICAgdGhpcy5iYXJaLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJyxNYXRoLnJvdW5kKHRoaXMuaGVpZ2h0LzMwKSk7XG5cbiAgICB0aGlzLmJhclguc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICB0aGlzLmJhclkuc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICB0aGlzLmJhclouc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcblxuICAgIHRoaXMuYmFyWDIuc2V0QXR0cmlidXRlKCdzdHJva2Utd2lkdGgnLE1hdGgucm91bmQodGhpcy5oZWlnaHQvMzApKTtcbiAgICB0aGlzLmJhclkyLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJyxNYXRoLnJvdW5kKHRoaXMuaGVpZ2h0LzMwKSk7XG4gICAgdGhpcy5iYXJaMi5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsTWF0aC5yb3VuZCh0aGlzLmhlaWdodC8zMCkpO1xuXG4gICAgdGhpcy5iYXJYMi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAnbm9uZScpO1xuICAgIHRoaXMuYmFyWTIuc2V0QXR0cmlidXRlKCdmaWxsJywgJ25vbmUnKTtcbiAgICB0aGlzLmJhcloyLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG5cblxuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCd4Jyx0aGlzLndpZHRoLzIpO1xuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCd5Jyx0aGlzLmhlaWdodC8zKzcpO1xuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCdmb250LXNpemUnLCcxNXB4Jyk7XG4gICAgdGhpcy50aXRsZS5zZXRBdHRyaWJ1dGUoJ2ZvbnQtd2VpZ2h0JywnYm9sZCcpO1xuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCdsZXR0ZXItc3BhY2luZycsJzJweCcpO1xuICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCdvcGFjaXR5JywnMC43Jyk7XG4gICAgdGhpcy50aXRsZS5zZXRBdHRyaWJ1dGUoJ3RleHQtYW5jaG9yJywnbWlkZGxlJyk7XG4gICAgdGhpcy50aXRsZS50ZXh0Q29udGVudCA9ICdUSUxUJztcblxuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2lyY2xlWCk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2lyY2xlWSk7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2lyY2xlWik7XG5cbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXJYKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXJZKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXJaKTtcblxuICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmJhclgyKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5iYXJZMik7XG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYmFyWjIpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGl0bGUpO1xuXG4gIH1cblxuICBjb2xvckludGVyZmFjZSgpIHtcblxuICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNvbG9ycy5hY2NlbnQ7XG4gICAgICB0aGlzLmNpcmNsZVguc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmNpcmNsZVkuc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmNpcmNsZVouc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmNpcmNsZVguc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLmxpZ2h0KTtcbiAgICAgIHRoaXMuY2lyY2xlWS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsdGhpcy5jb2xvcnMubGlnaHQpO1xuICAgICAgdGhpcy5jaXJjbGVaLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmJhclguc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLmxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsdGhpcy5jb2xvcnMubGlnaHQpO1xuICAgICAgdGhpcy5iYXJaLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmJhclgyLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmJhclkyLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLmJhcloyLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5saWdodCk7XG4gICAgICB0aGlzLnRpdGxlLnNldEF0dHJpYnV0ZSgnZmlsbCcsdGhpcy5jb2xvcnMubGlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuY2lyY2xlWS5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuY2lyY2xlWi5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuY2lyY2xlWC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQpO1xuICAgICAgdGhpcy5jaXJjbGVZLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5tZWRpdW1MaWdodCk7XG4gICAgICB0aGlzLmNpcmNsZVouc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsdGhpcy5jb2xvcnMubWVkaXVtTGlnaHQpO1xuICAgICAgdGhpcy5iYXJZLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJyx0aGlzLmNvbG9ycy5tZWRpdW1MaWdodCk7XG4gICAgICB0aGlzLmJhclouc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWDIuc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWTIuc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMuYmFyWjIuc2V0QXR0cmlidXRlKCdzdHJva2UnLHRoaXMuY29sb3JzLm1lZGl1bUxpZ2h0KTtcbiAgICAgIHRoaXMudGl0bGUuc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmNvbG9ycy5tZWRpdW1MaWdodCk7XG4gICAgfVxuXG4gIH1cblxuICB1cGRhdGUodikge1xuICAgIGlmICh0aGlzLl9hY3RpdmUpe1xuXG4gICAgICBsZXQgeSA9IHYuYmV0YTtcbiAgICAgIGxldCB4ID0gdi5nYW1tYTtcbiAgICAgIGxldCB6ID0gdi5hbHBoYTtcblxuICAgICAgLy8gdGFrZSB0aGUgb3JpZ2luYWwgLTkwIHRvIDkwIHNjYWxlIGFuZCBub3JtYWxpemUgaXQgMC0xXG4gICAgICB4ID0gbWF0aC5zY2FsZSh4LC05MCw5MCwwLDEpO1xuICAgICAgeSA9IG1hdGguc2NhbGUoeSwtOTAsOTAsMCwxKTtcbiAgICAgIHogPSBtYXRoLnNjYWxlKHosMCwzNjAsMCwxKTtcblxuXG4gICAgICBsZXQgaGFuZGxlUG9pbnRzID0ge1xuICAgICAgICBzdGFydDogTWF0aC5QSSoxLjUsXG4gICAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHgsMCwwLjUsTWF0aC5QSSoxLjUsTWF0aC5QSSowLjUpICwgTWF0aC5QSSowLjUsIE1hdGguUEkqMS41IClcbiAgICAgIH07XG4gICAgICBsZXQgaGFuZGxlMlBvaW50cyA9IHtcbiAgICAgICAgc3RhcnQ6IE1hdGguUEkqMi41LFxuICAgICAgICBlbmQ6IG1hdGguY2xpcCggbWF0aC5zY2FsZSh4LDAuNSwxLE1hdGguUEkqMi41LE1hdGguUEkqMS41KSAsIE1hdGguUEkqMS41LCBNYXRoLlBJKjIuNSApXG4gICAgICB9O1xuXG4gICAgICBsZXQgaGFuZGxlUGF0aCA9IHN2Zy5hcmModGhpcy5jaXJjbGVYLmN4LmJhc2VWYWwudmFsdWUsIHRoaXMuY2lyY2xlWC5jeS5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVguci5iYXNlVmFsLnZhbHVlLCBoYW5kbGVQb2ludHMuc3RhcnQsIGhhbmRsZVBvaW50cy5lbmQpO1xuICAgICAgbGV0IGhhbmRsZTJQYXRoID0gc3ZnLmFyYyh0aGlzLmNpcmNsZVguY3guYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVYLmN5LmJhc2VWYWwudmFsdWUsIHRoaXMuY2lyY2xlWC5yLmJhc2VWYWwudmFsdWUsIGhhbmRsZTJQb2ludHMuc3RhcnQsIGhhbmRsZTJQb2ludHMuZW5kKTtcblxuICAgICAgdGhpcy5iYXJYLnNldEF0dHJpYnV0ZSgnZCcsIGhhbmRsZVBhdGgpO1xuICAgICAgdGhpcy5iYXJYMi5zZXRBdHRyaWJ1dGUoJ2QnLCBoYW5kbGUyUGF0aCk7XG5cblxuXG5cblxuICAgICAgaGFuZGxlUG9pbnRzID0ge1xuICAgICAgICBzdGFydDogTWF0aC5QSSoxLjUsXG4gICAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHksMCwwLjUsTWF0aC5QSSoxLjUsTWF0aC5QSSowLjUpICwgTWF0aC5QSSowLjUsIE1hdGguUEkqMS41IClcbiAgICAgIH07XG4gICAgICBoYW5kbGUyUG9pbnRzID0ge1xuICAgICAgICBzdGFydDogTWF0aC5QSSoyLjUsXG4gICAgICAgIGVuZDogbWF0aC5jbGlwKCBtYXRoLnNjYWxlKHksMC41LDEsTWF0aC5QSSoyLjUsTWF0aC5QSSoxLjUpICwgTWF0aC5QSSoxLjUsIE1hdGguUEkqMi41IClcbiAgICAgIH07XG5cbiAgICAgIGhhbmRsZVBhdGggPSBzdmcuYXJjKHRoaXMuY2lyY2xlWS5jeC5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVkuY3kuYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVZLnIuYmFzZVZhbC52YWx1ZSwgaGFuZGxlUG9pbnRzLnN0YXJ0LCBoYW5kbGVQb2ludHMuZW5kKTtcbiAgICAgIGhhbmRsZTJQYXRoID0gc3ZnLmFyYyh0aGlzLmNpcmNsZVkuY3guYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVZLmN5LmJhc2VWYWwudmFsdWUsIHRoaXMuY2lyY2xlWS5yLmJhc2VWYWwudmFsdWUsIGhhbmRsZTJQb2ludHMuc3RhcnQsIGhhbmRsZTJQb2ludHMuZW5kKTtcblxuICAgICAgdGhpcy5iYXJZLnNldEF0dHJpYnV0ZSgnZCcsIGhhbmRsZVBhdGgpO1xuICAgICAgdGhpcy5iYXJZMi5zZXRBdHRyaWJ1dGUoJ2QnLCBoYW5kbGUyUGF0aCk7XG5cblxuXG5cblxuXG4gICAgICBoYW5kbGVQb2ludHMgPSB7XG4gICAgICAgIHN0YXJ0OiBNYXRoLlBJKjEuNSxcbiAgICAgICAgZW5kOiBtYXRoLmNsaXAoIG1hdGguc2NhbGUoeiwwLDAuNSxNYXRoLlBJKjEuNSxNYXRoLlBJKjAuNSkgLCBNYXRoLlBJKjAuNSwgTWF0aC5QSSoxLjUgKVxuICAgICAgfTtcbiAgICAgIGhhbmRsZTJQb2ludHMgPSB7XG4gICAgICAgIHN0YXJ0OiBNYXRoLlBJKjIuNSxcbiAgICAgICAgZW5kOiBtYXRoLmNsaXAoIG1hdGguc2NhbGUoeiwwLjUsMSxNYXRoLlBJKjIuNSxNYXRoLlBJKjEuNSkgLCBNYXRoLlBJKjEuNSwgTWF0aC5QSSoyLjUgKVxuICAgICAgfTtcblxuICAgICAgaGFuZGxlUGF0aCA9IHN2Zy5hcmModGhpcy5jaXJjbGVaLmN4LmJhc2VWYWwudmFsdWUsIHRoaXMuY2lyY2xlWi5jeS5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVouci5iYXNlVmFsLnZhbHVlLCBoYW5kbGVQb2ludHMuc3RhcnQsIGhhbmRsZVBvaW50cy5lbmQpO1xuICAgICAgaGFuZGxlMlBhdGggPSBzdmcuYXJjKHRoaXMuY2lyY2xlWi5jeC5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVouY3kuYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVaLnIuYmFzZVZhbC52YWx1ZSwgaGFuZGxlMlBvaW50cy5zdGFydCwgaGFuZGxlMlBvaW50cy5lbmQpO1xuXG4gICAgICB0aGlzLmJhclouc2V0QXR0cmlidXRlKCdkJywgaGFuZGxlUGF0aCk7XG4gICAgICB0aGlzLmJhcloyLnNldEF0dHJpYnV0ZSgnZCcsIGhhbmRsZTJQYXRoKTtcblxuXG4gICAgICAvKlxuXG4gICAgICBsZXQgcG9pbnRzWCA9IHtcbiAgICAgICAgc3RhcnQ6IDAsXG4gICAgICAgIGVuZDogbWF0aC5zY2FsZSggeCwgMCwgMSwgMCwgTWF0aC5QSSoyIClcbiAgICAgIH07XG5cbiAgICAvLyAgY29uc29sZS5sb2codGhpcy5jaXJjbGVYLmN4LmJhc2VWYWwudmFsdWUpO1xuXG4gICAgICBsZXQgcGF0aFggPSBzdmcuYXJjKHRoaXMuY2lyY2xlWC5jeC5iYXNlVmFsLnZhbHVlLCB0aGlzLmNpcmNsZVguY3kuYmFzZVZhbC52YWx1ZSwgdGhpcy5jaXJjbGVYLnIuYmFzZVZhbC52YWx1ZSoyLCBwb2ludHNYLnN0YXJ0LCBwb2ludHNYLmVuZCk7XG5cbiAgICAgIHRoaXMuYmFyWC5zZXRBdHRyaWJ1dGUoJ2QnLHBhdGhYKTsgKi9cblxuICAgICAgLy90aGlzLnRleHRILnRleHRDb250ZW50ID0gbWF0aC5wcnVuZSh4LDIpO1xuICAgICAgLy90aGlzLnRleHRWLnRleHRDb250ZW50ID0gbWF0aC5wcnVuZSh5LDIpO1xuICAgICAgLy9cbiAgICAvLyAgdGhpcy5jaXJjbGVYLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScseCk7XG4gICAgLy8gIHRoaXMuY2lyY2xlWS5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLHkpO1xuICAgIC8vICB0aGlzLmNpcmNsZVouc2V0QXR0cmlidXRlKCdvcGFjaXR5Jyx6KTtcblxuICAgICAgdGhpcy5lbWl0KCdjaGFuZ2UnLCB7XG4gICAgICAgIHg6IHgsXG4gICAgICAgIHk6IHksXG4gICAgICAgIHo6IHpcbiAgICAgIH0pO1xuXG4gICAgfVxuXG4gIH1cblxuICBjbGljaygpIHtcbiAgICBpZiAod2luZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQpIHtcbiAgICAgIHRoaXMuYWN0aXZlID0gIXRoaXMuYWN0aXZlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICBXaGV0aGVyIHRoZSBpbnRlcmZhY2UgaXMgb24gKGVtaXR0aW5nIHZhbHVlcykgb3Igb2ZmIChwYXVzZWQgJiBub3QgZW1pdHRpbmcgdmFsdWVzKS4gU2V0dGluZyB0aGlzIHByb3BlcnR5IHdpbGwgdXBkYXRlIGl0LlxuICBAdHlwZSB7Ym9vbGVhbn1cbiAgKi9cblxuICBnZXQgYWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gIH1cblxuICBzZXQgYWN0aXZlKG9uKSB7XG4gICAgdGhpcy5fYWN0aXZlID0gb247XG4gICAgdGhpcy5jb2xvckludGVyZmFjZSgpO1xuICB9XG5cbiAgY3VzdG9tRGVzdHJveSgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZGV2aWNlb3JpZW50YXRpb24nLCB0aGlzLmJvdW5kVXBkYXRlLCBmYWxzZSk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvdGlsdC5qcyIsIid1c2Ugc3RyaWN0JztcblxubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5cbi8qKlxuICogTXVsdGlzbGlkZXJcbiAqXG4gKiBAZGVzY3JpcHRpb24gTXVsdGlzbGlkZXJcbiAqXG4gKiBAZGVtbyA8c3BhbiBuZXh1cy11aT1cIm11bHRpc2xpZGVyXCI+PC9zcGFuPlxuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgbXVsdGlzbGlkZXIgPSBuZXcgTmV4dXMuTXVsdGlzbGlkZXIoJyN0YXJnZXQnKVxuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgbXVsdGlzbGlkZXIgPSBuZXcgTmV4dXMuTXVsdGlzbGlkZXIoJyN0YXJnZXQnLHtcbiAqICAnc2l6ZSc6IFsyMDAsMTAwXSxcbiAqICAnbnVtYmVyT2ZTbGlkZXJzJzogNSxcbiAqICAnbWluJzogMCxcbiAqICAnbWF4JzogMSxcbiAqICAnc3RlcCc6IDAsXG4gKiAgJ2NhbmR5Y2FuZSc6IDMsXG4gKiAgJ3ZhbHVlcyc6IFswLjksMC44LDAuNywwLjYsMC41LDAuNCwwLjMsMC4yLDAuMV0sXG4gKiAgJ3Ntb290aGluZyc6IDAsXG4gKiAgJ21vZGUnOiAnYmFyJyAgLy8gJ2Jhcicgb3IgJ2xpbmUnXG4gKn0pXG4gKlxuICogQG91dHB1dFxuICogY2hhbmdlXG4gKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuICogVGhlIGV2ZW50IGRhdGEgaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgPGk+aW5kZXg8L2k+IGFuZCA8aT52YWx1ZTwvaT4gcHJvcGVydGllc1xuICpcbiAqIEBvdXRwdXRleGFtcGxlXG4gKiBtdWx0aXNsaWRlci5vbignY2hhbmdlJyxmdW5jdGlvbih2KSB7XG4gKiAgIGNvbnNvbGUubG9nKHYpO1xuICogfSlcbiAqXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXVsdGlzbGlkZXIgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBsZXQgb3B0aW9ucyA9IFsndmFsdWUnXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgIHNpemU6IFsyMDAsIDEwMF0sXG4gICAgICBudW1iZXJPZlNsaWRlcnM6IDUsXG4gICAgICBtaW46IDAsXG4gICAgICBtYXg6IDEsXG4gICAgICBzdGVwOiAwLFxuICAgICAgY2FuZHljYW5lOiAzLFxuICAgICAgdmFsdWVzOiBbMC45LCAwLjgsIDAuNywgMC42LCAwLjUsIDAuNCwgMC4zLCAwLjIsIDAuMV0sXG4gICAgICBzbW9vdGhpbmc6IDAsXG4gICAgICBtb2RlOiAnYmFyJyAvLyAnYmFyJywgJ2xpbmUnXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cywgb3B0aW9ucywgZGVmYXVsdHMpO1xuXG4gICAgdGhpcy5fbnVtYmVyT2ZTbGlkZXJzID0gdGhpcy5zZXR0aW5ncy5udW1iZXJPZlNsaWRlcnM7XG4gICAgdGhpcy5fbWluID0gdGhpcy5zZXR0aW5ncy5taW47XG4gICAgdGhpcy5fbWF4ID0gdGhpcy5zZXR0aW5ncy5tYXg7XG4gICAgdGhpcy5fc3RlcCA9IHRoaXMuc2V0dGluZ3Muc3RlcDtcblxuICAgIHRoaXMuX21vZGUgPSB0aGlzLnNldHRpbmdzLm1vZGU7XG5cbiAgICAvKipcbiAgICBUaGUgY3VycmVudCB2YWx1ZXMgb2YgdGhlIHNsaWRlci4gTk9URTogVXNlIHRoaXMgb25seSB0byBnZXQgdGhlIGN1cnJlbnQgdmFsdWVzLiBTZXR0aW5nIHRoaXMgYXJyYXkgd2lsbCBub3QgdXBkYXRlIHRoZSBtdWx0aXNsaWRlci4gVG8gc2V0IHRoZSBtdWx0aXNsaWRlcidzIHZhbHVlcywgdXNlIHNldFNsaWRlcigpIG9yIHNldEFsbFNsaWRlcnMoKVxuICAgIEB0eXBlIHtBcnJheX1cbiAgICAqL1xuICAgIGNvbnN0IHZzID0gdGhpcy5zZXR0aW5ncy52YWx1ZXM7XG4gICAgdGhpcy52YWx1ZXMgPSB2cy5sZW5ndGggPiB0aGlzLl9udW1iZXJPZlNsaWRlcnMgPyB2cy5zbGljZSgwLCB0aGlzLl9udW1iZXJPZlNsaWRlcnMpIDogdnMuY29uY2F0KEFycmF5KHRoaXMuX251bWJlck9mU2xpZGVycyAtIHZzLmxlbmd0aCkuZmlsbCgwKSk7XG5cbiAgICB0aGlzLmNhbmR5Y2FuZSA9IHRoaXMuc2V0dGluZ3MuY2FuZHljYW5lO1xuXG4gICAgdGhpcy5zbGlkZXJXaWR0aCA9IHRoaXMud2lkdGggLyB0aGlzLnZhbHVlcy5sZW5ndGg7XG5cbiAgICAvKipcbiAgICBBcHBsaWVzIGEgc2ltcGxlIGxvdy1wYXNzIGZpbHRlciB0byB0aGUgbXVsdGlzbGlkZXIgYXMgaXQgaXMgaW50ZXJhY3RlZCB3aXRoLiBBIHNtb290aGluZyBvZiAwIHdpbGwgYmUgbm8gc21vb3RoaW5nLiBBIHNtb290aGluZyBvZiAxIHdpbGwgc21vb3RoIDEgc2xpZGVyIG9uIGVhY2ggc2lkZSBvZiB0aGUgaW50ZXJhY3Rpb24uIEEgc21vb3RoaW5nIG9mIDIgd2lsbCBzbW9vdGggMiBzbGlkZXJzIG9uIGVhY2ggc2lkZSwgYW5kIHNvIG9uLlxuICAgIEB0eXBlIHtOdW1iZXJ9XG4gICAgKi9cbiAgICB0aGlzLnNtb290aGluZyA9IHRoaXMuc2V0dGluZ3Muc21vb3RoaW5nO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuICAgIGlmICh0aGlzLl9tb2RlID09ICdsaW5lJykge1xuICAgICAgdGhpcy5saW5lID0gc3ZnLmNyZWF0ZSgncG9seWxpbmUnKTtcbiAgICAgIHRoaXMubGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZS13aWR0aCcsIDIpO1xuICAgICAgdGhpcy5saW5lLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG5cbiAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmxpbmUpO1xuXG4gICAgICB0aGlzLmZpbGwgPSBzdmcuY3JlYXRlKCdwb2x5bGluZScpO1xuICAgICAgdGhpcy5maWxsLnNldEF0dHJpYnV0ZSgnZmlsbC1vcGFjaXR5JywgJzAuMicpO1xuXG4gICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5maWxsKTtcblxuICAgICAgdGhpcy5ub2RlcyA9IFtdO1xuXG4gICAgICB0aGlzLnZhbHVlcy5mb3JFYWNoKFxuICAgICAgICBmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgICBsZXQgbm9kZSA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuXG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2N4JywgdGhpcy5nZXRYKGluZGV4KSk7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2N5JywgdGhpcy5nZXRZKHZhbHVlKSk7XG5cbiAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICB9LmJpbmQodGhpcylcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmFycyA9IFtdO1xuICAgICAgdGhpcy5jYXBzID0gW107XG5cbiAgICAgIHRoaXMudmFsdWVzLmZvckVhY2goXG4gICAgICAgIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkge1xuICAgICAgICAgIGxldCBiYXIgPSBzdmcuY3JlYXRlKCdyZWN0Jyk7XG5cbiAgICAgICAgICBsZXQgeCA9IHRoaXMuZ2V0QmFyWChpbmRleCk7XG4gICAgICAgICAgbGV0IHkgPSB0aGlzLmdldFkodmFsdWUpO1xuXG4gICAgICAgICAgYmFyLnNldEF0dHJpYnV0ZSgneCcsIHggLSAwLjEpO1xuICAgICAgICAgIGJhci5zZXRBdHRyaWJ1dGUoJ3knLCB5KTtcbiAgICAgICAgICBiYXIuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMuc2xpZGVyV2lkdGggKyAwLjIpO1xuICAgICAgICAgIGJhci5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIHRoaXMuaGVpZ2h0KTtcbiAgICAgICAgICBiYXIuc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgJ29wYWNpdHknLFxuICAgICAgICAgICAgMSAtICgoaW5kZXggJSB0aGlzLmNhbmR5Y2FuZSkgKyAxKSAvICh0aGlzLmNhbmR5Y2FuZSArIDEpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChiYXIpO1xuICAgICAgICAgIHRoaXMuYmFycy5wdXNoKGJhcik7XG5cbiAgICAgICAgICBsZXQgY2FwID0gc3ZnLmNyZWF0ZSgncmVjdCcpO1xuXG4gICAgICAgICAgY2FwLnNldEF0dHJpYnV0ZSgneCcsIHggLSAwLjEpO1xuICAgICAgICAgIGNhcC5zZXRBdHRyaWJ1dGUoJ3knLCB5KTtcbiAgICAgICAgICBjYXAuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMuc2xpZGVyV2lkdGggKyAwLjIpO1xuICAgICAgICAgIGNhcC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIDUpO1xuXG4gICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGNhcCk7XG4gICAgICAgICAgdGhpcy5jYXBzLnB1c2goY2FwKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldEJhclgoaW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRYKGluZGV4KSAtIHRoaXMuc2xpZGVyV2lkdGggLyAyO1xuICB9XG5cbiAgZ2V0WChpbmRleCkge1xuICAgIC8vcmV0dXJuIE1hdGguZmxvb3IoIGluZGV4ICogdGhpcy5zbGlkZXJXaWR0aCArIHRoaXMuc2xpZGVyV2lkdGgvMiApO1xuICAgIHJldHVybiBpbmRleCAqIHRoaXMuc2xpZGVyV2lkdGggKyB0aGlzLnNsaWRlcldpZHRoIC8gMjtcbiAgfVxuXG4gIGdldFkodmFsdWUpIHtcbiAgICByZXR1cm4gbWF0aC5zY2FsZSh2YWx1ZSwgdGhpcy5fbWluLCB0aGlzLl9tYXgsIHRoaXMuaGVpZ2h0LCAwKTsgLy8oMSAtIHZhbHVlKSAqIHRoaXMuaGVpZ2h0O1xuICB9XG5cbiAgZ2V0VmFsdWVGcm9tWSh5KSB7XG4gICAgbGV0IHNjYWxlQWRqdXN0ZWQgPSBtYXRoLnNjYWxlKHksIHRoaXMuaGVpZ2h0LCAwLCB0aGlzLl9taW4sIHRoaXMuX21heCk7XG4gICAgcmV0dXJuIHRoaXMuYWRqdXN0VmFsdWVUb1N0ZXAoc2NhbGVBZGp1c3RlZCk7XG4gIH1cblxuICBnZXRJbmRleEZyb21YKHgpIHtcbiAgICByZXR1cm4gbWF0aC5jbGlwKFxuICAgICAgTWF0aC5mbG9vcigoeCAvIHRoaXMud2lkdGgpICogdGhpcy52YWx1ZXMubGVuZ3RoKSxcbiAgICAgIDAsXG4gICAgICB0aGlzLnZhbHVlcy5sZW5ndGggLSAxXG4gICAgKTtcbiAgfVxuXG4gIGFkanVzdFZhbHVlVG9TdGVwKHZhbHVlKSB7XG4gICAgaWYgKCF0aGlzLl9zdGVwKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGxldCBvZmZzZXQgPSB2YWx1ZSAlIHRoaXMuX3N0ZXA7XG4gICAgdmFsdWUgPSB2YWx1ZSAtICh2YWx1ZSAlIHRoaXMuX3N0ZXApO1xuICAgIGlmIChvZmZzZXQgPiB0aGlzLl9zdGVwIC8gMikge1xuICAgICAgdmFsdWUgKz0gdGhpcy5fc3RlcDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgYWRqdXN0QWxsVmFsdWVzKCkge1xuICAgIHRoaXMudmFsdWVzLmZvckVhY2goXG4gICAgICBmdW5jdGlvbih2YWx1ZSwgaW5kZXgpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmFkanVzdFZhbHVlVG9TdGVwKHZhbHVlKTtcbiAgICAgICAgdGhpcy52YWx1ZXNbaW5kZXhdID0gbWF0aC5jbGlwKHZhbHVlLCB0aGlzLl9taW4sIHRoaXMuX21heCk7XG4gICAgICB9LmJpbmQodGhpcylcbiAgICApO1xuICB9XG5cbiAgZ2V0Tm9ybWFsaXplZFZhbHVlcygpIHtcbiAgICB0aGlzLm5vcm1hbGl6ZWRWYWx1ZXMgPSBbXTtcbiAgICB0aGlzLnZhbHVlcy5mb3JFYWNoKFxuICAgICAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgdGhpcy5ub3JtYWxpemVkVmFsdWVzLnB1c2goXG4gICAgICAgICAgbWF0aC5zY2FsZSh2YWx1ZSwgdGhpcy5fbWluLCB0aGlzLl9tYXgsIDAsIDEpXG4gICAgICAgICk7XG4gICAgICB9LmJpbmQodGhpcylcbiAgICApO1xuICB9XG5cbiAgY29sb3JJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29sb3JzLmZpbGw7XG5cbiAgICBpZiAodGhpcy5fbW9kZSA9PSAnbGluZScpIHtcbiAgICAgIHRoaXMubGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgICB0aGlzLmZpbGwuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICAgIHRoaXMubm9kZXMuZm9yRWFjaChub2RlID0+IHtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmFycy5mb3JFYWNoKGJhciA9PiB7XG4gICAgICAgIGJhci5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCB0aGlzLmNvbG9ycy5hY2NlbnQpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNhcHMuZm9yRWFjaChjYXAgPT4ge1xuICAgICAgICBjYXAuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5zbGlkZXJXaWR0aCA9IHRoaXMud2lkdGggLyB0aGlzLnZhbHVlcy5sZW5ndGg7XG5cbiAgICBpZiAodGhpcy5fbW9kZSA9PSAnbGluZScpIHtcbiAgICAgIHRoaXMubm9kZXMuZm9yRWFjaChcbiAgICAgICAgZnVuY3Rpb24obm9kZSkge1xuICAgICAgICAgIGxldCByID0gfn4oTWF0aC5taW4odGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpIC8gNTApICsgMjtcbiAgICAgICAgICByID0gTWF0aC5taW4odGhpcy5zbGlkZXJXaWR0aCwgcik7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3InLCByKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuX21vZGUgPT0gJ2xpbmUnKSB7XG4gICAgICBsZXQgZGF0YSA9ICcwICcgKyB0aGlzLmdldFkodGhpcy52YWx1ZXNbMF0pICsgJywgJztcblxuICAgICAgdGhpcy52YWx1ZXMuZm9yRWFjaCgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgIGxldCB4ID0gdGhpcy5nZXRYKGluZGV4KTtcbiAgICAgICAgbGV0IHkgPSB0aGlzLmdldFkodmFsdWUpO1xuICAgICAgICBkYXRhICs9IHggKyAnICcgKyB5ICsgJywgJztcbiAgICAgICAgdGhpcy5ub2Rlc1tpbmRleF0uc2V0QXR0cmlidXRlKCdjeCcsIHRoaXMuZ2V0WChpbmRleCkpO1xuICAgICAgICB0aGlzLm5vZGVzW2luZGV4XS5zZXRBdHRyaWJ1dGUoJ2N5JywgdGhpcy5nZXRZKHZhbHVlKSk7XG4gICAgICB9KTtcblxuICAgICAgZGF0YSArPSB0aGlzLndpZHRoICsgJyAnICsgdGhpcy5nZXRZKHRoaXMudmFsdWVzW3RoaXMudmFsdWVzLmxlbmd0aCAtIDFdKTtcblxuICAgICAgdGhpcy5saW5lLnNldEF0dHJpYnV0ZSgncG9pbnRzJywgZGF0YSk7XG5cbiAgICAgIC8vIGZpbGwgZGF0YVxuICAgICAgLy8gYWRkIGJvdHRvbSBjb3JuZXJzXG5cbiAgICAgIGRhdGEgKz0gJywgJyArIHRoaXMud2lkdGggKyAnICcgKyB0aGlzLmhlaWdodCArICcsICc7XG4gICAgICBkYXRhICs9ICcwICcgKyB0aGlzLmhlaWdodDtcblxuICAgICAgdGhpcy5maWxsLnNldEF0dHJpYnV0ZSgncG9pbnRzJywgZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWVzLmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICB0aGlzLmJhcnNbaW5kZXhdLnNldEF0dHJpYnV0ZSgneScsIHRoaXMuZ2V0WSh2YWx1ZSkpO1xuICAgICAgICB0aGlzLmNhcHNbaW5kZXhdLnNldEF0dHJpYnV0ZSgneScsIHRoaXMuZ2V0WSh2YWx1ZSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5oYXNNb3ZlZCA9IGZhbHNlO1xuICAgIHRoaXMucHJldmlvdXNTbGlkZXIgPSBmYWxzZTtcbiAgICB0aGlzLm1vdmUoKTtcbiAgfVxuXG4gIG1vdmUoKSB7XG4gICAgaWYgKHRoaXMuY2xpY2tlZCkge1xuICAgICAgdGhpcy5tb3VzZS54ID0gbWF0aC5jbGlwKHRoaXMubW91c2UueCwgMCwgdGhpcy53aWR0aCk7XG4gICAgICB0aGlzLm1vdXNlLnkgPSBtYXRoLmNsaXAodGhpcy5tb3VzZS55LCAwLCB0aGlzLmhlaWdodCk7XG4gICAgICB0aGlzLmhhc01vdmVkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5zZWxlY3RlZFNsaWRlciA9IHRoaXMuZ2V0SW5kZXhGcm9tWCh0aGlzLm1vdXNlLngpO1xuXG4gICAgICB0aGlzLnZhbHVlc1t0aGlzLnNlbGVjdGVkU2xpZGVyXSA9IHRoaXMuZ2V0VmFsdWVGcm9tWSh0aGlzLm1vdXNlLnkpO1xuXG4gICAgICAvKiBoYW5kbGUgaW50ZXJwb2xhdGlvbiBmb3IgaW4tYmV0d2VlbiBzbGlkZXJzICovXG5cbiAgICAgIGlmICh0aGlzLnByZXZpb3VzU2xpZGVyICE9PSBmYWxzZSkge1xuICAgICAgICBsZXQgZGlzdGFuY2UgPSBNYXRoLmFicyh0aGlzLnByZXZpb3VzU2xpZGVyIC0gdGhpcy5zZWxlY3RlZFNsaWRlcik7XG4gICAgICAgIGlmIChkaXN0YW5jZSA+IDEpIHtcbiAgICAgICAgICBsZXQgbG93ID0gTWF0aC5taW4odGhpcy5wcmV2aW91c1NsaWRlciwgdGhpcy5zZWxlY3RlZFNsaWRlcik7XG4gICAgICAgICAgbGV0IGhpZ2ggPSBNYXRoLm1heCh0aGlzLnByZXZpb3VzU2xpZGVyLCB0aGlzLnNlbGVjdGVkU2xpZGVyKTtcbiAgICAgICAgICBsZXQgbG93VmFsdWUgPSB0aGlzLnZhbHVlc1tsb3ddO1xuICAgICAgICAgIGxldCBoaWdoVmFsdWUgPSB0aGlzLnZhbHVlc1toaWdoXTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gbG93OyBpIDwgaGlnaDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlc1tpXSA9IG1hdGguaW50ZXJwKFxuICAgICAgICAgICAgICAoaSAtIGxvdykgLyBkaXN0YW5jZSxcbiAgICAgICAgICAgICAgbG93VmFsdWUsXG4gICAgICAgICAgICAgIGhpZ2hWYWx1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzW2ldID0gdGhpcy5hZGp1c3RWYWx1ZVRvU3RlcCh0aGlzLnZhbHVlc1tpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNtb290aGluZyA+IDApIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gdGhpcy5zbW9vdGhpbmc7IGkrKykge1xuICAgICAgICAgIGxldCBkb3duQ2VudGVyID0gdGhpcy5zZWxlY3RlZFNsaWRlciAtIGk7XG4gICAgICAgICAgbGV0IHVwQ2VudGVyID0gdGhpcy5zZWxlY3RlZFNsaWRlciArIGk7XG5cbiAgICAgICAgICBpZiAoZG93bkNlbnRlciA+PSAxKSB7XG4gICAgICAgICAgICBsZXQgZG93bkxvd2VyTmVpZ2hib3IgPSBkb3duQ2VudGVyIC0gMSA+PSAwID8gZG93bkNlbnRlciAtIDEgOiAwO1xuICAgICAgICAgICAgbGV0IGRvd25VcHBlck5laWdoYm9yID0gZG93bkNlbnRlciArIDE7XG4gICAgICAgICAgICB0aGlzLnZhbHVlc1tkb3duQ2VudGVyXSA9XG4gICAgICAgICAgICAgICh0aGlzLnZhbHVlc1tkb3duTG93ZXJOZWlnaGJvcl0gK1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzW2Rvd25VcHBlck5laWdoYm9yXSkgL1xuICAgICAgICAgICAgICAyO1xuICAgICAgICAgICAgdGhpcy52YWx1ZXNbZG93bkNlbnRlcl0gPSB0aGlzLmFkanVzdFZhbHVlVG9TdGVwKFxuICAgICAgICAgICAgICB0aGlzLnZhbHVlc1tkb3duQ2VudGVyXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodXBDZW50ZXIgPCB0aGlzLnZhbHVlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBsZXQgdXBMb3dlck5laWdoYm9yID0gdXBDZW50ZXIgLSAxO1xuICAgICAgICAgICAgbGV0IHVwVXBwZXJOZWlnaGJvciA9IHVwQ2VudGVyICsgMSA8IHRoaXMudmFsdWVzLmxlbmd0aCA/IHVwQ2VudGVyICsgMSA6IHRoaXMudmFsdWVzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICB0aGlzLnZhbHVlc1t1cENlbnRlcl0gPVxuICAgICAgICAgICAgICAodGhpcy52YWx1ZXNbdXBMb3dlck5laWdoYm9yXSArIHRoaXMudmFsdWVzW3VwVXBwZXJOZWlnaGJvcl0pIC8gMjtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzW3VwQ2VudGVyXSA9IHRoaXMuYWRqdXN0VmFsdWVUb1N0ZXAoXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzW3VwQ2VudGVyXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5wcmV2aW91c1NsaWRlciA9IHRoaXMuc2VsZWN0ZWRTbGlkZXI7XG5cbiAgICAgIHRoaXMuZW1pdCgnY2hhbmdlJywgdGhpcy52YWx1ZXMpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICAvLyB3b3VsZCBiZSBhIGNvb2wgQVBJIGNhbGwgdG8gaGF2ZSBmb3IgbGF0ZXIuLi5cbiAgc2NhbigpIHt9XG5cbiAgdXBkYXRlKGluZGV4LCB2YWx1ZSkge1xuICAgIHRoaXMudmFsdWVzW2luZGV4XSA9IHRoaXMuYWRqdXN0VmFsdWVUb1N0ZXAodmFsdWUpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJywge1xuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgdmFsdWU6IHZhbHVlXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgR2V0IHRoZSBudW1iZXIgb2Ygc2xpZGVyc1xuICBAdHlwZSB7TnVtYmVyfVxuICAqL1xuICBnZXQgbnVtYmVyT2ZTbGlkZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgTG93ZXIgbGltaXQgb2YgdGhlIG11bHRpc2xpZGVyJ3Mgb3V0cHV0IHJhbmdlXG4gIEB0eXBlIHtudW1iZXJ9XG4gIEBleGFtcGxlIG11bHRpc2xpZGVyLm1pbiA9IDEwMDA7XG4gICovXG4gIGdldCBtaW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX21pbjtcbiAgfVxuICBzZXQgbWluKHYpIHtcbiAgICB0aGlzLl9taW4gPSB2O1xuICAgIHRoaXMuYWRqdXN0QWxsVmFsdWVzKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBVcHBlciBsaW1pdCBvZiB0aGUgbXVsdGlzbGlkZXIncyBvdXRwdXQgcmFuZ2VcbiAgQHR5cGUge251bWJlcn1cbiAgQGV4YW1wbGUgbXVsdGlzbGlkZXIubWF4ID0gMTAwMDtcbiAgKi9cbiAgZ2V0IG1heCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG4gIHNldCBtYXgodikge1xuICAgIHRoaXMuX21heCA9IHY7XG4gICAgdGhpcy5hZGp1c3RBbGxWYWx1ZXMoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFRoZSBpbmNyZW1lbnQgdGhhdCB0aGUgbXVsdGlzbGlkZXIncyB2YWx1ZSBjaGFuZ2VzIGJ5LlxuICBAdHlwZSB7bnVtYmVyfVxuICBAZXhhbXBsZSBtdWx0aXNsaWRlci5zdGVwID0gNTtcbiAgKi9cbiAgZ2V0IHN0ZXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXA7XG4gIH1cbiAgc2V0IHN0ZXAodikge1xuICAgIHRoaXMuX3N0ZXAgPSB2O1xuICAgIHRoaXMuYWRqdXN0QWxsVmFsdWVzKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBTZXQgdGhlIHZhbHVlIG9mIGFuIGluZGl2aWR1YWwgc2xpZGVyXG4gIEBwYXJhbSBpbmRleCB7bnVtYmVyfSBTbGlkZXIgaW5kZXhcbiAgQHBhcmFtIHZhbHVlIHtudW1iZXJ9IE5ldyBzbGlkZXIgdmFsdWVcbiAgQGV4YW1wbGVcbiAgLy8gU2V0IHRoZSBmaXJzdCBzbGlkZXIgdG8gdmFsdWUgMC41XG4gIG11bHRpc2xpZGVyLnNldFNsaWRlcigwLDAuNSlcbiAgKi9cbiAgc2V0U2xpZGVyKGluZGV4LCB2YWx1ZSkge1xuICAgIHRoaXMudmFsdWVzW2luZGV4XSA9IHRoaXMuYWRqdXN0VmFsdWVUb1N0ZXAodmFsdWUpO1xuICAgIHRoaXMudmFsdWVzW2luZGV4XSA9IG1hdGguY2xpcCh0aGlzLnZhbHVlc1tpbmRleF0sIHRoaXMuX21pbiwgdGhpcy5fbWF4KTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsIHtcbiAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gIFNldCB0aGUgdmFsdWUgb2YgYWxsIHNsaWRlcnMgYXQgb25jZS4gSWYgdGhlIHNpemUgb2YgdGhlIGlucHV0IGFycmF5IGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IG51bWJlciBvZiBzbGlkZXJzLCB0aGUgdmFsdWUgYXJyYXkgd2lsbCByZXBlYXQgdW50aWwgYWxsIHNsaWRlcnMgaGF2ZSBiZWVuIHNldC4gSS5lLiBhbiBpbnB1dCBhcnJheSBvZiBsZW5ndGggMSB3aWxsIHNldCBhbGwgc2xpZGVycyB0byB0aGF0IHZhbHVlLlxuICBAcGFyYW0gdmFsdWVzIHtBcnJheX0gQWxsIHNsaWRlciB2YWx1ZXNcbiAgQGV4YW1wbGVcbiAgbXVsdGlzbGlkZXIuc2V0QWxsU2xpZGVycyhbMC4yLDAuMywwLjQsMC41LDAuNl0pXG4gICovXG4gIHNldEFsbFNsaWRlcnModmFsdWVzKSB7XG4gICAgbGV0IHByZXZpb3VzTGVuZ3RoID0gdGhpcy52YWx1ZXMubGVuZ3RoO1xuICAgIGxldCBuZXdMZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgIHRoaXMuYWRqdXN0QWxsVmFsdWVzKCk7XG4gICAgaWYgKHByZXZpb3VzTGVuZ3RoICE9IG5ld0xlbmd0aCkge1xuICAgICAgdGhpcy5lbXB0eSgpO1xuICAgICAgdGhpcy5idWlsZEludGVyZmFjZSgpO1xuICAgICAgdGhpcy5jb2xvckludGVyZmFjZSgpO1xuICAgIH1cbiAgICB0aGlzLnNpemVJbnRlcmZhY2UoKTtcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvbXVsdGlzbGlkZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBzdmcgPSByZXF1aXJlKCcuLi91dGlsL3N2ZycpO1xubGV0IG1hdGggPSByZXF1aXJlKCcuLi91dGlsL21hdGgnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xubGV0IFN0ZXAgPSByZXF1aXJlKCcuLi9tb2RlbHMvc3RlcCcpO1xuaW1wb3J0ICogYXMgSW50ZXJhY3Rpb24gZnJvbSAnLi4vdXRpbC9pbnRlcmFjdGlvbic7XG5cbi8qKlxuKiBQYW5cbipcbiogQGRlc2NyaXB0aW9uIFN0ZXJlbyBjcm9zc2ZhZGVyLlxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT1cInBhblwiPjwvc3Bhbj5cbipcbiogQGV4YW1wbGVcbiogdmFyIHBhbiA9IG5ldyBOZXh1cy5QYW4oJyN0YXJnZXQnKVxuKlxuKiBAb3V0cHV0XG4qIGNoYW5nZVxuKiBGaXJlcyBhbnkgdGltZSB0aGUgaW50ZXJmYWNlJ3MgdmFsdWUgY2hhbmdlcy4gPGJyPlxuKiBUaGUgZXZlbnQgZGF0YSBpcyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgaW50ZXJmYWNlJ3MgPGk+dmFsdWU8L2k+ICgtMSB0byAxKSwgYXMgd2VsbCBhcyA8aT5MPC9pPiBhbmQgPGk+UjwvaT4gYW1wbGl0dWRlIHZhbHVlcyAoMC0xKSBmb3IgbGVmdCBhbmQgcmlnaHQgc3BlYWtlcnMsIGNhbGN1bGF0ZWQgYnkgYSBzcXVhcmUtcm9vdCBjcm9zc2ZhZGUgYWxnb3JpdGhtLlxuKlxuKiBAb3V0cHV0ZXhhbXBsZVxuKiBwYW4ub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFuIGV4dGVuZHMgSW50ZXJmYWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHtcblxuICAgIGxldCBvcHRpb25zID0gWydzY2FsZScsJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFsxMjAsMjBdLFxuICAgICAgJ29yaWVudGF0aW9uJzogJ2hvcml6b250YWwnLFxuICAgICAgJ21vZGUnOiAncmVsYXRpdmUnLFxuICAgICAgJ3NjYWxlJzogWy0xLDFdLFxuICAgICAgJ3N0ZXAnOiAwLFxuICAgICAgJ3ZhbHVlJzogMCxcbiAgICAgICdoYXNLbm9iJzogdHJ1ZVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsb3B0aW9ucyxkZWZhdWx0cyk7XG5cbiAgICB0aGlzLm9yaWVudGF0aW9uID0gdGhpcy5zZXR0aW5ncy5vcmllbnRhdGlvbjtcblxuICAgIHRoaXMubW9kZSA9IHRoaXMuc2V0dGluZ3MubW9kZTtcblxuICAgIHRoaXMuaGFzS25vYiA9IHRoaXMuc2V0dGluZ3MuaGFzS25vYjtcblxuICAgIC8vIHRoaXMuc3RlcCBzaG91bGQgZXZlbnR1YWxseSBiZSBnZXQvc2V0XG4gICAgLy8gdXBkYXRpbmcgaXQgd2lsbCB1cGRhdGUgdGhlIF92YWx1ZSBzdGVwIG1vZGVsXG4gICAgdGhpcy5zdGVwID0gdGhpcy5zZXR0aW5ncy5zdGVwOyAvLyBmbG9hdFxuXG4gICAgdGhpcy5fdmFsdWUgPSBuZXcgU3RlcCh0aGlzLnNldHRpbmdzLnNjYWxlWzBdLCB0aGlzLnNldHRpbmdzLnNjYWxlWzFdLCB0aGlzLnNldHRpbmdzLnN0ZXAsIHRoaXMuc2V0dGluZ3MudmFsdWUpO1xuXG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLnBvc2l0aW9uID0gbmV3IEludGVyYWN0aW9uLkhhbmRsZSh0aGlzLm1vZGUsdGhpcy5vcmllbnRhdGlvbixbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pO1xuICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbHVlLnZhbHVlO1xuXG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMudmFsdWUpO1xuXG4gIH1cblxuICBidWlsZEludGVyZmFjZSgpIHtcblxuICAgIHRoaXMuYmFyID0gc3ZnLmNyZWF0ZSgncmVjdCcpO1xuICAgIHRoaXMua25vYiA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYmFyKTtcbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5rbm9iKTtcblxuICB9XG5cbiAgc2l6ZUludGVyZmFjZSgpIHtcblxuICAgIGlmICh0aGlzLnBvc2l0aW9uKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLnJlc2l6ZShbMCx0aGlzLndpZHRoXSxbdGhpcy5oZWlnaHQsMF0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndpZHRoIDwgdGhpcy5oZWlnaHQpIHtcbiAgICAgIHRoaXMub3JpZW50YXRpb24gPSAndmVydGljYWwnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9yaWVudGF0aW9uID0gJ2hvcml6b250YWwnO1xuICAgIH1cblxuICAgIGxldCB4LCB5LCB3LCBoLCBiYXJPZmZzZXQsIGNvcm5lclJhZGl1cztcbiAgICB0aGlzLmtub2JEYXRhID0ge1xuICAgICAgbGV2ZWw6IDAsXG4gICAgICByOiAwXG4gICAgfTtcblxuICAgIGlmICh0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XG4gICAgICB0aGlzLnRoaWNrbmVzcyA9IHRoaXMud2lkdGggLyAyO1xuICAgIFx0eCA9IHRoaXMud2lkdGgvMjtcbiAgICBcdHkgPSAwO1xuICAgIFx0dyA9IHRoaXMudGhpY2tuZXNzO1xuICAgIFx0aCA9IHRoaXMuaGVpZ2h0O1xuICAgICAgdGhpcy5rbm9iRGF0YS5yID0gdGhpcy50aGlja25lc3MgKiAwLjg7XG4gICAgXHR0aGlzLmtub2JEYXRhLmxldmVsID0gaC10aGlzLmtub2JEYXRhLnItdGhpcy5ub3JtYWxpemVkKihoLXRoaXMua25vYkRhdGEucioyKTtcbiAgICAgIGJhck9mZnNldCA9ICd0cmFuc2xhdGUoJyt0aGlzLnRoaWNrbmVzcyooLTEpLzIrJywwKSc7XG4gICAgICBjb3JuZXJSYWRpdXMgPSB3LzI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGhpY2tuZXNzID0gdGhpcy5oZWlnaHQgLyAyO1xuICAgIFx0eCA9IDA7XG4gICAgXHR5ID0gdGhpcy5oZWlnaHQvMjtcbiAgICBcdHcgPSB0aGlzLndpZHRoO1xuICAgIFx0aCA9IHRoaXMudGhpY2tuZXNzO1xuICAgICAgdGhpcy5rbm9iRGF0YS5yID0gdGhpcy50aGlja25lc3MgKiAwLjg7XG4gICAgXHR0aGlzLmtub2JEYXRhLmxldmVsID0gdGhpcy5ub3JtYWxpemVkKih3LXRoaXMua25vYkRhdGEucioyKSt0aGlzLmtub2JEYXRhLnI7XG4gICAgICBiYXJPZmZzZXQgPSAndHJhbnNsYXRlKDAsJyt0aGlzLnRoaWNrbmVzcyooLTEpLzIrJyknO1xuICAgICAgY29ybmVyUmFkaXVzID0gaC8yO1xuICAgIH1cblxuICAgIHRoaXMuYmFyLnNldEF0dHJpYnV0ZSgneCcseCk7XG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCd5Jyx5KTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsYmFyT2Zmc2V0KTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3J4Jyxjb3JuZXJSYWRpdXMpOyAvLyBjb3JuZXIgcmFkaXVzXG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdyeScsY29ybmVyUmFkaXVzKTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3KTtcbiAgICB0aGlzLmJhci5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsaCk7XG5cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3gnLHgpO1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnY3knLHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeScseSk7XG4gICAgfVxuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYkRhdGEucik7XG5cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5iYXIuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuZmlsbCk7XG4gICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuY29sb3JzLmFjY2VudCk7XG5cbiAgICBpZiAoIXRoaXMuaGFzS25vYikge1xuICAgICAgdGhpcy5rbm9iLnNldEF0dHJpYnV0ZSgnZmlsbCcsJ3RyYW5zcGFyZW50Jyk7XG4gICAgfVxuXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKCF0aGlzLmNsaWNrZWQpIHtcbiAgICAgIHRoaXMua25vYkRhdGEuciA9IHRoaXMudGhpY2tuZXNzKjAuNzU7XG4gICAgfVxuICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ3InLHRoaXMua25vYkRhdGEucik7XG5cbiAgICBpZiAodGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICBcdCAgIHRoaXMua25vYkRhdGEubGV2ZWwgPSB0aGlzLmtub2JEYXRhLnIrdGhpcy5fdmFsdWUubm9ybWFsaXplZCoodGhpcy5oZWlnaHQtdGhpcy5rbm9iRGF0YS5yKjIpO1xuICAgICAgIHRoaXMua25vYi5zZXRBdHRyaWJ1dGUoJ2N5Jyx0aGlzLmhlaWdodCAtIHRoaXMua25vYkRhdGEubGV2ZWwpO1xuICAgIH0gZWxzZSB7XG4gIFx0ICAgdGhpcy5rbm9iRGF0YS5sZXZlbCA9IHRoaXMuX3ZhbHVlLm5vcm1hbGl6ZWQqKHRoaXMud2lkdGgtdGhpcy5rbm9iRGF0YS5yKjIpK3RoaXMua25vYkRhdGEucjtcbiAgICAgICB0aGlzLmtub2Iuc2V0QXR0cmlidXRlKCdjeCcsdGhpcy5rbm9iRGF0YS5sZXZlbCk7XG4gICAgfVxuICB9XG5cblxuICBjbGljaygpIHtcbiAgICB0aGlzLmtub2JEYXRhLnIgPSB0aGlzLnRoaWNrbmVzcyowLjk7XG4gICAgdGhpcy5wb3NpdGlvbi5hbmNob3IgPSB0aGlzLm1vdXNlO1xuICAgIHRoaXMubW92ZSgpO1xuICB9XG5cbiAgbW92ZSgpIHtcbiAgICBpZiAodGhpcy5jbGlja2VkKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLnVwZGF0ZSh0aGlzLm1vdXNlKTtcblxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbHVlLnVwZGF0ZU5vcm1hbCggdGhpcy5wb3NpdGlvbi52YWx1ZSApO1xuXG4gICAgICB0aGlzLmVtaXQoJ2NoYW5nZScse1xuICAgICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgICAgTDogTWF0aC5wb3coIG1hdGguc2NhbGUodGhpcy52YWx1ZSwtMSwxLDEsMCksIDIpLFxuICAgICAgICBSOiBNYXRoLnBvdyggbWF0aC5zY2FsZSh0aGlzLnZhbHVlLC0xLDEsMCwxKSwgMilcbiAgICAgIH0pO1xuXG4gICAgfVxuICB9XG5cbiAgcmVsZWFzZSgpIHtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFRoZSBwb3NpdGlvbiBvZiBjcm9zc2ZhZGVyLCBmcm9tIC0xIChsZWZ0KSB0byAxIChyaWdodCkuIFNldHRpbmcgdGhpcyB2YWx1ZSB1cGRhdGVzIHRoZSBpbnRlcmZhY2UgYW5kIHRyaWdnZXJzIHRoZSBvdXRwdXQgZXZlbnQuXG4gIEB0eXBlIHtudW1iZXJ9XG4gICovXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUudmFsdWU7XG4gIH1cblxuICBzZXQgdmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl92YWx1ZS51cGRhdGUodmFsdWUpO1xuICAgIHRoaXMucG9zaXRpb24udmFsdWUgPSB0aGlzLl92YWx1ZS5ub3JtYWxpemVkO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx7XG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIEw6IE1hdGgucG93KCBtYXRoLnNjYWxlKHRoaXMudmFsdWUsLTEsMSwxLDApLCAyKSxcbiAgICAgIFI6IE1hdGgucG93KCBtYXRoLnNjYWxlKHRoaXMudmFsdWUsLTEsMSwwLDEpLCAyKVxuICAgIH0pO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBnZXQgbm9ybWFsaXplZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUubm9ybWFsaXplZDtcbiAgfVxuXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvaW50ZXJmYWNlcy9wYW4uanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBtYXRoID0gcmVxdWlyZSgnLi4vdXRpbC9tYXRoJyk7XG5sZXQgc3ZnID0gcmVxdWlyZSgnLi4vdXRpbC9zdmcnKTtcbmxldCBJbnRlcmZhY2UgPSByZXF1aXJlKCcuLi9jb3JlL2ludGVyZmFjZScpO1xuXG5cbmxldCBQb2ludCA9IGZ1bmN0aW9uKHBvaW50LGVudmVsb3BlKSB7XG5cbiAgdGhpcy54ID0gcG9pbnQueDtcbiAgdGhpcy55ID0gcG9pbnQueTtcblxuICB0aGlzLnhNaW4gPSBwb2ludC54TWluIHx8IDA7XG4gIHRoaXMueE1heCA9IHBvaW50LnhNYXggfHwgMTtcbiAgdGhpcy55TWluID0gcG9pbnQueU1pbiB8fCAwO1xuICB0aGlzLnlNYXggPSBwb2ludC55TWF4IHx8IDE7XG5cbiAgdGhpcy5lbnZlbG9wZSA9IGVudmVsb3BlO1xuXG4gIHRoaXMuZWxlbWVudCA9IHN2Zy5jcmVhdGUoJ2NpcmNsZScpO1xuICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdmaWxsJyx0aGlzLmVudmVsb3BlLmNvbG9ycy5hY2NlbnQpO1xuXG4gIHRoaXMuZW52ZWxvcGUuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuXG4gIHRoaXMucmVzaXplID0gZnVuY3Rpb24oKSB7XG4gICAgbGV0IHIgPSB+fihNYXRoLm1pbih0aGlzLmVudmVsb3BlLndpZHRoLHRoaXMuZW52ZWxvcGUuaGVpZ2h0KS81MCkrMjtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdyJyxyKTtcbiAgfTtcblxuICB0aGlzLm1vdmUgPSBmdW5jdGlvbih4LHkpIHtcblxuICAgIHRoaXMueCA9ICh4IHx8IHg9PT0wKSA/IHggOiB0aGlzLng7XG4gICAgdGhpcy55ID0gKHkgfHwgeT09PTApID8geSA6IHRoaXMueTtcblxuICAgIGlmICh0aGlzLmVudmVsb3BlLm5vZGVzLmluZGV4T2YodGhpcyk+PTApIHtcblxuICAgICAgbGV0IHByZXZJbmRleCA9IHRoaXMuZW52ZWxvcGUubm9kZXMuaW5kZXhPZih0aGlzKS0xO1xuICAgICAgbGV0IG5leHRJbmRleCA9IHRoaXMuZW52ZWxvcGUubm9kZXMuaW5kZXhPZih0aGlzKSsxO1xuXG4gICAgICBsZXQgcHJldk5vZGUgPSB0aGlzLmVudmVsb3BlLm5vZGVzW3ByZXZJbmRleF07XG4gICAgICBsZXQgbmV4dE5vZGUgPSB0aGlzLmVudmVsb3BlLm5vZGVzW25leHRJbmRleF07XG5cbiAgICAgIGxldCBsb3dYID0gcHJldkluZGV4ID49IDAgPyBwcmV2Tm9kZS54IDogMDtcblx0ICAgIGxvd1ggPSBsb3dYPHRoaXMueE1pbj90aGlzLnhNaW46bG93WDtcblxuICAgICAgbGV0IGhpZ2hYID0gbmV4dEluZGV4IDwgdGhpcy5lbnZlbG9wZS5ub2Rlcy5sZW5ndGggPyBuZXh0Tm9kZS54IDogMTtcblx0ICAgIGhpZ2hYID0gaGlnaFg+dGhpcy54TWF4P3RoaXMueE1heDpoaWdoWDtcblxuICBcdCAgaWYgKHRoaXMueCA8IGxvd1gpIHsgdGhpcy54ID0gbG93WDsgfVxuICAgICAgaWYgKHRoaXMueCA+IGhpZ2hYKSB7IHRoaXMueCA9IGhpZ2hYOyB9XG5cbiAgICAgIGlmICh0aGlzLnkgPCB0aGlzLnlNaW4pIHsgdGhpcy55ID0gdGhpcy55TWluOyB9XG4gICAgICBpZiAodGhpcy55ID4gdGhpcy55TWF4KSB7IHRoaXMueSA9IHRoaXMueU1heDsgfVxuXG4gICAgfVxuXG4gICAgdGhpcy5sb2NhdGlvbiA9IHRoaXMuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCdjeCcsIHRoaXMubG9jYXRpb24ueCk7XG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnY3knLCB0aGlzLmxvY2F0aW9uLnkpO1xuICB9O1xuXG4gIHRoaXMuZ2V0Q29vcmRpbmF0ZXMgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgeDogdGhpcy54ICogdGhpcy5lbnZlbG9wZS53aWR0aCxcbiAgICAgIHk6ICgxLXRoaXMueSkgKiB0aGlzLmVudmVsb3BlLmhlaWdodFxuICAgIH07XG4gIH07XG5cbiAgdGhpcy5tb3ZlKHRoaXMueCx0aGlzLnksdHJ1ZSk7XG4gIHRoaXMucmVzaXplKCk7XG5cbiAgdGhpcy5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5lbnZlbG9wZS5lbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5lbnZlbG9wZS5ub2Rlcy5zcGxpY2UodGhpcy5lbnZlbG9wZS5ub2Rlcy5pbmRleE9mKHRoaXMpLDEpO1xuICB9O1xuXG5cbn07XG5cblxuLyoqXG4qIEVudmVsb3BlXG4qXG4qIEBkZXNjcmlwdGlvbiBJbnRlcmFjdGl2ZSBsaW5lYXIgcmFtcCB2aXN1YWxpemF0aW9uLlxuKlxuKiBAZGVtbyA8c3BhbiBuZXh1cy11aT1cImVudmVsb3BlXCI+PC9zcGFuPlxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgZW52ZWxvcGUgPSBuZXcgTmV4dXMuRW52ZWxvcGUoJyN0YXJnZXQnKVxuKlxuKiBAZXhhbXBsZVxuKiB2YXIgZW52ZWxvcGUgPSBuZXcgTmV4dXMuRW52ZWxvcGUoJyN0YXJnZXQnLHtcbiogICAnc2l6ZSc6IFszMDAsMTUwXSxcbiogICAnbm9OZXdQb2ludHMnOiBmYWxzZSxcbiogICAncG9pbnRzJzogW1xuKiAgICAge1xuKiAgICAgICB4OiAwLjEsXG4qICAgICAgIHk6IDAuNFxuKiAgICAgfSxcbiogICAgIHtcbiogICAgICAgeDogMC4zNSxcbiogICAgICAgeTogMC42XG4qICAgICB9LFxuKiAgICAge1xuKiAgICAgICB4OiAwLjY1LFxuKiAgICAgICB5OiAwLjJcbiogICAgIH0sXG4qICAgICB7XG4qICAgICAgIHg6IDAuOSxcbiogICAgICAgeTogMC40XG4qICAgICB9LFxuKiAgIF1cbiogfSlcbipcbiogQG91dHB1dFxuKiBjaGFuZ2VcbiogRmlyZXMgYW55IHRpbWUgYSBub2RlIGlzIG1vdmVkLiA8YnI+XG4qIFRoZSBldmVudCBkYXRhIGlzIGFuIGFycmF5IG9mIHBvaW50IGxvY2F0aW9ucy4gRWFjaCBpdGVtIGluIHRoZSBhcnJheSBpcyBhbiBvYmplY3QgY29udGFpbmluZyA8aT54PC9pPiBhbmQgPGk+eTwvaT4gcHJvcGVydGllcyBkZXNjcmliaW5nIHRoZSBsb2NhdGlvbiBvZiBhIHBvaW50IG9uIHRoZSBlbnZlbG9wZS5cbipcbiogQG91dHB1dGV4YW1wbGVcbiogZW52ZWxvcGUub24oJ2NoYW5nZScsZnVuY3Rpb24odikge1xuKiAgIGNvbnNvbGUubG9nKHYpO1xuKiB9KVxuKlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52ZWxvcGUgZXh0ZW5kcyBJbnRlcmZhY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gICAgbGV0IG9wdGlvbnMgPSBbJ3ZhbHVlJ107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICAnc2l6ZSc6IFszMDAsMTUwXSxcbiAgICAgICdub05ld1BvaW50cyc6ZmFsc2UsXG4gICAgICAncG9pbnRzJzogW1xuICBcdFx0XHR7XG4gIFx0XHRcdFx0eDogMC4xLFxuICBcdFx0XHRcdHk6IDAuNFxuICBcdFx0XHR9LFxuICBcdFx0XHR7XG4gIFx0XHRcdFx0eDogMC4zNSxcbiAgXHRcdFx0XHR5OiAwLjZcbiAgXHRcdFx0fSxcbiAgXHRcdFx0e1xuICBcdFx0XHRcdHg6IDAuNjUsXG4gIFx0XHRcdFx0eTogMC4yXG4gIFx0XHRcdH0sXG4gIFx0XHRcdHtcbiAgXHRcdFx0XHR4OiAwLjksXG4gIFx0XHRcdFx0eTogMC40XG4gIFx0XHRcdH1cbiAgXHRcdF1cbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLG9wdGlvbnMsZGVmYXVsdHMpO1xuXG4gICAgdGhpcy5wb2ludHMgPSB0aGlzLnNldHRpbmdzLnBvaW50cztcblxuICAgIHRoaXMubm9kZXMgPSBbXTtcblxuICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuaW5pdCgpO1xuXG5cbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuXG5cbiAgICB0aGlzLnBvaW50cy5mb3JFYWNoKChwb2ludCkgPT4ge1xuICAgICAgbGV0IG5vZGUgPSBuZXcgUG9pbnQocG9pbnQsdGhpcyk7XG4gICAgICB0aGlzLm5vZGVzLnB1c2gobm9kZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNvcnRQb2ludHMoKTtcblxuICAgIHRoaXMubGluZSA9IHN2Zy5jcmVhdGUoJ3BvbHlsaW5lJyk7XG4gICAgdGhpcy5saW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgMik7XG4gICAgdGhpcy5saW5lLnNldEF0dHJpYnV0ZSgnZmlsbCcsICdub25lJyk7XG5cbiAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5saW5lKTtcblxuICAgIHRoaXMuZmlsbCA9IHN2Zy5jcmVhdGUoJ3BvbHlsaW5lJyk7XG4gICAgdGhpcy5maWxsLnNldEF0dHJpYnV0ZSgnZmlsbC1vcGFjaXR5JywgJzAuMicpO1xuXG4gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZmlsbCk7XG5cbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5ub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5ub2Rlc1tpXS5yZXNpemUoKTtcbiAgICAgIHRoaXMubm9kZXNbaV0ubW92ZSgpO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyKCk7XG5cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuXG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY29sb3JzLmZpbGw7XG4gICAgdGhpcy5saW5lLnNldEF0dHJpYnV0ZSgnc3Ryb2tlJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB0aGlzLmZpbGwuc2V0QXR0cmlidXRlKCdmaWxsJywgdGhpcy5jb2xvcnMuYWNjZW50KTtcbiAgICB0aGlzLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIG5vZGUuZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLHRoaXMuY29sb3JzLmFjY2VudCk7XG4gICAgfSk7XG5cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgLy8gIHRoaXMubm9kZXNbdGhpcy5zZWxlY3RlZF0ubW92ZSggdGhpcy5wb2ludHMgKVxuICAgIHRoaXMuY2FsY3VsYXRlUGF0aCgpO1xuICB9XG5cbiAgY2FsY3VsYXRlUG9pbnRzKCkge1xuICAgIHRoaXMucG9pbnRzID0gW107XG4gICAgdGhpcy5ub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICB0aGlzLnBvaW50cy5wdXNoKHsgeDogbm9kZS54LCB5OiBub2RlLnkgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjYWxjdWxhdGVQYXRoKCkge1xuXG4gICAgLy9zdHJva2UgZGF0YVxuICAgIGxldCBkYXRhID0gJzAgJysgdGhpcy5ub2Rlc1swXS5sb2NhdGlvbi55KycsICc7XG5cbiAgICAvLyBkYXRhIHNob3VsZCBiZSByZS1vcmRlcmVkIGJhc2VkIG9uIHggbG9jYXRpb24uXG4gICAgLy8gd2hhdGV2ZXIgZnVuY3Rpb24gYWRkcyBhIG5vZGUgc2hvdWxkIGFkZCBpdCBhdCB0aGUgcmlnaHQgaW5kZXhcblxuICAgIHRoaXMubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgIC8vICBsZXQgbG9jYXRpb24gPSBub2RlLmdldENvb3JkaW5hdGVzKCk7XG4gICAgICBkYXRhICs9IG5vZGUubG9jYXRpb24ueCArICcgJyArIG5vZGUubG9jYXRpb24ueSArICcsICc7XG4gICAgfSk7XG5cblxuICAvLyAgZGF0YSArPSBwb2ludC54KnRoaXMud2lkdGgrJyAnKyBwb2ludC55KnRoaXMuaGVpZ2h0KycsICc7XG4gICAgZGF0YSArPSB0aGlzLndpZHRoICsgJyAnKyB0aGlzLm5vZGVzW3RoaXMubm9kZXMubGVuZ3RoLTFdLmxvY2F0aW9uLnk7XG5cbiAgICB0aGlzLmxpbmUuc2V0QXR0cmlidXRlKCdwb2ludHMnLCBkYXRhKTtcblxuICAgIC8vIGZpbGwgZGF0YVxuICAgIC8vIGFkZCBib3R0b20gY29ybmVyc1xuXG4gICAgZGF0YSArPSAnLCAnK3RoaXMud2lkdGggKycgJyt0aGlzLmhlaWdodCsnLCAnO1xuICAgIGRhdGEgKz0gJzAgJyt0aGlzLmhlaWdodDtcblxuICAgIHRoaXMuZmlsbC5zZXRBdHRyaWJ1dGUoJ3BvaW50cycsIGRhdGEpO1xuXG4gIH1cblxuXG5cbiAgY2xpY2soKSB7XG4gIFx0Ly8gZmluZCBuZWFyZXN0IG5vZGUgYW5kIHNldCB0aGlzLnNlbGVjdGVkIChpbmRleClcbiAgICB0aGlzLmhhc01vdmVkID0gZmFsc2U7XG4gIFx0dGhpcy5zZWxlY3RlZCA9IHRoaXMuZmluZE5lYXJlc3ROb2RlKCk7XG5cbiAgICB0aGlzLm5vZGVzW3RoaXMuc2VsZWN0ZWRdLm1vdmUodGhpcy5tb3VzZS54L3RoaXMud2lkdGgsMS10aGlzLm1vdXNlLnkvdGhpcy5oZWlnaHQpO1xuICAgIHRoaXMuc2NhbGVOb2RlKHRoaXMuc2VsZWN0ZWQpO1xuXG4gICAgLy8gbXVzdCBkbyB0aGlzIGIvYyBuZXcgbm9kZSBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWRcbiAgICB0aGlzLmNhbGN1bGF0ZVBvaW50cygpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnBvaW50cyk7XG4gIFx0dGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIG1vdmUoKSB7XG4gIFx0aWYgKHRoaXMuY2xpY2tlZCkge1xuICAgICAgdGhpcy5tb3VzZS54ID0gbWF0aC5jbGlwKHRoaXMubW91c2UueCwwLHRoaXMud2lkdGgpO1xuICAgICAgdGhpcy5oYXNNb3ZlZCA9IHRydWU7XG5cbiAgICAgIHRoaXMubm9kZXNbdGhpcy5zZWxlY3RlZF0ubW92ZSh0aGlzLm1vdXNlLngvdGhpcy53aWR0aCwxLXRoaXMubW91c2UueS90aGlzLmhlaWdodCk7XG4gICAgXHR0aGlzLnNjYWxlTm9kZSh0aGlzLnNlbGVjdGVkKTtcblxuICAgICAgdGhpcy5jYWxjdWxhdGVQb2ludHMoKTtcbiAgXHRcdHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnBvaW50cyk7XG4gIFx0XHR0aGlzLnJlbmRlcigpO1xuICBcdH1cbiAgfVxuXG4gIHJlbGVhc2UoKSB7XG5cbiAgXHRpZiAoIXRoaXMuaGFzTW92ZWQpIHtcbiAgICAgIHRoaXMubm9kZXNbdGhpcy5zZWxlY3RlZF0uZGVzdHJveSgpO1xuICBcdH1cblxuICAgIHRoaXMuY2FsY3VsYXRlUG9pbnRzKCk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMucG9pbnRzKTtcbiAgXHR0aGlzLnJlbmRlcigpO1xuXG4gIFx0Ly8gcmVzZXQgdGhpcy5zZWxlY3RlZFxuICBcdHRoaXMuc2VsZWN0ZWQgPSBudWxsO1xuICB9XG5cblxuICBmaW5kTmVhcmVzdE5vZGUoKSB7XG4gIFx0dmFyIG5lYXJlc3RJbmRleCA9IG51bGw7XG4gICAgLy8gc2V0IHRoaXMgdW5yZWFzb25hYmx5IGhpZ2ggc28gdGhhdCBldmVyeSBkaXN0YW5jZSB3aWxsIGJlIGxvd2VyIHRoYW4gaXQuXG4gIFx0dmFyIG5lYXJlc3REaXN0ID0gMTAwMDA7XG4gIFx0dmFyIGJlZm9yZSA9IGZhbHNlO1xuICAgIGxldCB4ID0gdGhpcy5tb3VzZS54L3RoaXMud2lkdGg7XG4gICAgbGV0IHkgPSAxLXRoaXMubW91c2UueS90aGlzLmhlaWdodDtcbiAgICBsZXQgbm9kZXMgPSB0aGlzLm5vZGVzO1xuICBcdGZvciAobGV0IGkgPSAwOyBpPG5vZGVzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgZGlzdGFuY2UgZnJvbSBtb3VzZSB0byB0aGlzIG5vZGUgdXNpbmcgcHl0aGFnb3JlYW4gdGhlb3JlbVxuICBcdFx0dmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KCAgTWF0aC5wb3coIChub2Rlc1tpXS54IC0geCksIDIpICsgTWF0aC5wb3coKG5vZGVzW2ldLnkgLSB5KSwgMikgKTtcblxuICAgICAgLy8gaWYgdGhpcyBkaXN0YW5jZSBpcyBsZXNzIHRoYW4gdGhlIHByZXZpb3VzIHNob3J0ZXN0IGRpc3RhbmNlLCB1c2UgdGhpcyBpbmRleFxuICBcdFx0aWYgKGRpc3RhbmNlIDwgbmVhcmVzdERpc3QpIHtcbiAgXHRcdFx0bmVhcmVzdERpc3QgPSBkaXN0YW5jZTtcbiAgXHRcdFx0bmVhcmVzdEluZGV4ID0gaTtcbiAgXHRcdFx0YmVmb3JlID0geCA+IG5vZGVzW2ldLng7XG4gIFx0XHR9XG5cbiAgXHR9XG5cbiAgICAvLyBpZiBub3QgdmVyeSBjbG9zZSB0byBhbnkgbm9kZSwgY3JlYXRlIGEgbm9kZVxuICBcdGlmICghdGhpcy5zZXR0aW5ncy5ub05ld1BvaW50cyAmJiBuZWFyZXN0RGlzdD4wLjA3KSB7XG5cbiAgICAgIG5lYXJlc3RJbmRleCA9IHRoaXMuZ2V0SW5kZXhGcm9tWCh0aGlzLm1vdXNlLngvdGhpcy53aWR0aCk7XG5cbiAgXHRcdHRoaXMubm9kZXMuc3BsaWNlKG5lYXJlc3RJbmRleCwwLCBuZXcgUG9pbnQoe1xuICBcdFx0XHR4OiB0aGlzLm1vdXNlLngvdGhpcy53aWR0aCxcbiAgXHRcdFx0eTogMS10aGlzLm1vdXNlLnkvdGhpcy5oZWlnaHRcbiAgXHRcdH0sIHRoaXMpKTtcbiAgICAgIHRoaXMuaGFzTW92ZWQgPSB0cnVlO1xuXG4gIFx0fVxuXG4gIFx0cmV0dXJuIG5lYXJlc3RJbmRleDtcbiAgfVxuXG4gIGdldEluZGV4RnJvbVgoeCkge1xuICAgIGxldCBpbmRleCA9IDA7XG4gICAgdGhpcy5ub2Rlcy5mb3JFYWNoKChub2RlLGkpID0+IHtcbiAgICAgIGlmICh0aGlzLm5vZGVzW2ldLnggPD0geCkge1xuICAgICAgICBpbmRleCA9IGkrMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBzY2FsZU5vZGUoaSkge1xuXG4gIFx0bGV0IGNsaXBwZWRYID0gbWF0aC5jbGlwKHRoaXMubm9kZXNbaV0ueCwgMCwgMSk7XG4gIFx0bGV0IGNsaXBwZWRZID0gbWF0aC5jbGlwKHRoaXMubm9kZXNbaV0ueSwgMCwgMSk7XG5cbiAgICB0aGlzLm5vZGVzW2ldLm1vdmUoIGNsaXBwZWRYLCBjbGlwcGVkWSApO1xuXG4gIH1cblxuICAvKipcbiAgU29ydCB0aGUgdGhpcy5wb2ludHMgYXJyYXkgZnJvbSBsZWZ0LW1vc3QgcG9pbnQgdG8gcmlnaHQtbW9zdCBwb2ludC4gWW91IHNob3VsZCBub3QgcmVndWxhcmx5IG5lZWQgdG8gdXNlIHRoaXMsIGhvd2V2ZXIgaXQgbWF5IGJlIHVzZWZ1bCBpZiB0aGUgcG9pbnRzIGdldCB1bm9yZGVyZWQuXG4gICovXG4gIHNvcnRQb2ludHMoKSB7XG4gICAgdGhpcy5ub2Rlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpe1xuICAgICAgcmV0dXJuIGEueCA+IGIueDtcbiAgICB9KTtcbiAgfVxuXG5cbiAgLyoqXG4gIEFkZCBhIGJyZWFrcG9pbnQgb24gdGhlIGVudmVsb3BlLlxuICBAcGFyYW0geCB7bnVtYmVyfSB4IGxvY2F0aW9uIG9mIHRoZSBwb2ludCwgbm9ybWFsaXplZCAoMC0xKVxuICBAcGFyYW0geSB7bnVtYmVyfSB5IGxvY2F0aW9uIG9mIHRoZSBwb2ludCwgbm9ybWFsaXplZCAoMC0xKVxuICAqL1xuICBhZGRQb2ludCh4LHkpIHtcbiAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmxlbmd0aDtcblxuICAgIHRoaXMuc29ydFBvaW50cygpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGk8dGhpcy5ub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHggPCB0aGlzLm5vZGVzW2ldLngpIHtcbiAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgXHR9XG5cbiAgICB0aGlzLm5vZGVzLnNwbGljZShpbmRleCwgMCwgbmV3IFBvaW50KHtcbiAgICAgIHg6IHgsXG4gICAgICB5OiB5XG4gICAgfSwgdGhpcykpO1xuXG4gICAgdGhpcy5zY2FsZU5vZGUoaW5kZXgpO1xuXG4gICAgdGhpcy5jYWxjdWxhdGVQb2ludHMoKTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5wb2ludHMpO1xuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gIEZpbmQgdGhlIGxldmVsIGF0IGEgY2VydGFpbiB4IGxvY2F0aW9uIG9uIHRoZSBlbnZlbG9wZS5cbiAgQHBhcmFtIHgge251bWJlcn0gVGhlIHggbG9jYXRpb24gdG8gZmluZCB0aGUgbGV2ZWwgb2YsIG5vcm1hbGl6ZWQgMC0xXG4gICovXG4gIHNjYW4oeCkge1xuICAgIC8vIGZpbmQgc3Vycm91bmRpbmcgcG9pbnRzXG4gICAgbGV0IG5leHRJbmRleCA9IHRoaXMuZ2V0SW5kZXhGcm9tWCh4KTtcbiAgICBsZXQgcHJpb3JJbmRleCA9IG5leHRJbmRleC0xO1xuICAgIGlmIChwcmlvckluZGV4IDwgMCkge1xuICAgICAgcHJpb3JJbmRleCA9IDA7XG4gICAgfVxuICAgIGlmIChuZXh0SW5kZXggPj0gdGhpcy5ub2Rlcy5sZW5ndGgpIHtcbiAgICAgIG5leHRJbmRleCA9IHRoaXMubm9kZXMubGVuZ3RoLTE7XG4gICAgfVxuICAgIGxldCBwcmlvclBvaW50ID0gdGhpcy5ub2Rlc1twcmlvckluZGV4XTtcbiAgICBsZXQgbmV4dFBvaW50ID0gdGhpcy5ub2Rlc1tuZXh0SW5kZXhdO1xuICAgIGxldCBsb2MgPSBtYXRoLnNjYWxlKHgscHJpb3JQb2ludC54LCBuZXh0UG9pbnQueCwgMCwgMSk7XG4gICAgbGV0IHZhbHVlID0gbWF0aC5pbnRlcnAobG9jLHByaW9yUG9pbnQueSxuZXh0UG9pbnQueSk7XG4gICAgdGhpcy5lbWl0KCdzY2FuJyx2YWx1ZSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cblxuICAvKipcbiAgTW92ZSBhIGJyZWFrcG9pbnQgb24gdGhlIGVudmVsb3BlLlxuICBAcGFyYW0gaW5kZXgge251bWJlcn0gVGhlIGluZGV4IG9mIHRoZSBicmVha3BvaW50IHRvIG1vdmVcbiAgQHBhcmFtIHgge251bWJlcn0gTmV3IHggbG9jYXRpb24sIG5vcm1hbGl6ZWQgMC0xXG4gIEBwYXJhbSB5IHtudW1iZXJ9IE5ldyB5IGxvY2F0aW9uLCBub3JtYWxpemVkIDAtMVxuICAqL1xuICBtb3ZlUG9pbnQoaW5kZXgseCx5KSB7XG4gICAgdGhpcy5ub2Rlc1tpbmRleF0ubW92ZSh4LHkpO1xuICAgIHRoaXMuc2NhbGVOb2RlKGluZGV4KTtcbiAgICB0aGlzLmNhbGN1bGF0ZVBvaW50cygpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnBvaW50cyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gIE1vdmUgYSBicmVha3BvaW50IG9uIHRoZSBlbnZlbG9wZSBieSBhIGNlcnRhaW4gYW1vdW50LlxuICBAcGFyYW0gaW5kZXgge251bWJlcn0gVGhlIGluZGV4IG9mIHRoZSBicmVha3BvaW50IHRvIG1vdmVcbiAgQHBhcmFtIHhPZmZzZXQge251bWJlcn0gWCBkaXNwbGFjZW1lbnQsIG5vcm1hbGl6ZWQgMC0xXG4gIEBwYXJhbSB5T2Zmc2V0IHtudW1iZXJ9IFkgZGlzcGxhY2VtZW50LCBub3JtYWxpemVkIDAtMVxuICAqL1xuICBhZGp1c3RQb2ludChpbmRleCx4T2Zmc2V0LHlPZmZzZXQpIHtcbiAgICB0aGlzLm5vZGVzW2luZGV4XS5tb3ZlKHRoaXMubm9kZXNbaW5kZXhdLngreE9mZnNldCx0aGlzLm5vZGVzW2luZGV4XS55K3lPZmZzZXQpO1xuICAgIHRoaXMuc2NhbGVOb2RlKGluZGV4KTtcbiAgICB0aGlzLmNhbGN1bGF0ZVBvaW50cygpO1xuICAgIHRoaXMuZW1pdCgnY2hhbmdlJyx0aGlzLnBvaW50cyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG5cbiAgLyoqXG4gIFJlbW92ZSBhIGJyZWFrcG9pbnQgZnJvbSB0aGUgZW52ZWxvcGUuXG4gIEBwYXJhbSBpbmRleCB7bnVtYmVyfSBJbmRleCBvZiB0aGUgYnJlYWtwb2ludCB0byByZW1vdmVcbiAgKi9cbiAgZGVzdHJveVBvaW50KGluZGV4KSB7XG4gICAgdGhpcy5ub2Rlc1tpbmRleF0uZGVzdHJveSgpO1xuICAgIHRoaXMuY2FsY3VsYXRlUG9pbnRzKCk7XG4gICAgdGhpcy5lbWl0KCdjaGFuZ2UnLHRoaXMucG9pbnRzKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cblxuICAvKipcbiAgUmVtb3ZlIGFsbCBleGlzdGluZyBicmVha3BvaW50cyBhbmQgYWRkIGFuIGVudGlyZWx5IG5ldyBzZXQgb2YgYnJlYWtwb2ludHMuXG4gIEBwYXJhbSBhbGxQb2ludHMge2FycmF5fSBBbiBhcnJheSBvZiBvYmplY3RzIHdpdGggeC95IHByb3BlcnRpZXMgKG5vcm1hbGl6ZWQgMC0xKS4gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5IHNwZWNpZmljZXMgdGhlIHgveSBsb2NhdGlvbiBvZiBhIG5ldyBicmVha3BvaW50IHRvIGJlIGFkZGVkLlxuICAqL1xuICBzZXRQb2ludHMoYWxsUG9pbnRzKSB7XG4gICAgd2hpbGUgKHRoaXMubm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm5vZGVzWzBdLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgYWxsUG9pbnRzLmZvckVhY2goKHBvaW50KSA9PiB7XG4gICAgICB0aGlzLmFkZFBvaW50KHBvaW50LngscG9pbnQueSk7XG4gICAgfSk7XG4gICAgdGhpcy5jYWxjdWxhdGVQb2ludHMoKTtcbiAgICB0aGlzLmVtaXQoJ2NoYW5nZScsdGhpcy5wb2ludHMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvZW52ZWxvcGUuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBkb20gPSByZXF1aXJlKCcuLi91dGlsL2RvbScpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5cbi8qKlxuICogU3BlY3Ryb2dyYW1cbiAqXG4gKiBAZGVzY3JpcHRpb24gQXVkaW8gc3BlY3RydW0gdmlzdWFsaXphdGlvblxuICpcbiAqIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwic3BlY3Ryb2dyYW1cIj48L3NwYW4+XG4gKlxuICogQGV4YW1wbGVcbiAqIHZhciBzcGVjdHJvZ3JhbSA9IG5ldyBOZXh1cy5TcGVjdHJvZ3JhbSgnI3RhcmdldCcpXG4gKiBzcGVjdHJvZ3JhbS5jb25uZWN0KG15V2ViQXVkaW9Ob2RlKVxuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgc3BlY3Ryb2dyYW0gPSBuZXcgTmV4dXMuU3BlY3Ryb2dyYW0oJyN0YXJnZXQnLHtcbiAqICAgJ3NpemUnOiBbMzAwLDE1MF1cbiAqIH0pXG4gKiBzcGVjdHJvZ3JhbS5jb25uZWN0KG15V2ViQXVkaW9Ob2RlKVxuICpcbiAqIEBvdXRwdXRcbiAqICZuYnNwO1xuICogTm8gZXZlbnRzXG4gKlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNwZWN0cm9ncmFtIGV4dGVuZHMgSW50ZXJmYWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IG9wdGlvbnMgPSBbXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgIHNpemU6IFszMDAsIDE1MF1cbiAgICB9O1xuXG4gICAgc3VwZXIoYXJndW1lbnRzLCBvcHRpb25zLCBkZWZhdWx0cyk7XG5cbiAgICB0aGlzLmFuYWx5c2VyID0gbnVsbDtcbiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IDA7XG4gICAgdGhpcy5kYXRhQXJyYXkgPSBudWxsO1xuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5zb3VyY2UgPSBudWxsO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuY2FudmFzID0gbmV3IGRvbS5TbWFydENhbnZhcyh0aGlzLnBhcmVudCk7XG4gICAgdGhpcy5lbGVtZW50ID0gdGhpcy5jYW52YXMuZWxlbWVudDtcbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5jYW52YXMucmVzaXplKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTtcbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIHRoaXMuY2FudmFzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hbmFseXNlcikge1xuICAgICAgdGhpcy5hbmFseXNlci5nZXRCeXRlRnJlcXVlbmN5RGF0YSh0aGlzLmRhdGFBcnJheSk7XG4gICAgfVxuXG4gICAgdGhpcy5jYW52YXMuY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLmNvbG9ycy5maWxsO1xuICAgIHRoaXMuY2FudmFzLmNvbnRleHQuZmlsbFJlY3QoXG4gICAgICAwLFxuICAgICAgMCxcbiAgICAgIHRoaXMuY2FudmFzLmVsZW1lbnQud2lkdGgsXG4gICAgICB0aGlzLmNhbnZhcy5lbGVtZW50LmhlaWdodFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5zb3VyY2UgJiYgdGhpcy5kYXRhQXJyYXkpIHtcbiAgICAgIC8vY29uc29sZS5sb2codGhpcy5kYXRhQXJyYXkpO1xuXG4gICAgICBsZXQgYmFyV2lkdGggPSB0aGlzLmNhbnZhcy5lbGVtZW50LndpZHRoIC8gdGhpcy5idWZmZXJMZW5ndGg7XG4gICAgICBsZXQgYmFySGVpZ2h0O1xuICAgICAgbGV0IHggPSAwO1xuXG4gICAgICBsZXQgZGVmaW5pdGlvbiA9IHRoaXMuY2FudmFzLmVsZW1lbnQud2lkdGggLyA1MDtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJ1ZmZlckxlbmd0aDsgaSA9IGkgKyBkZWZpbml0aW9uKSB7XG4gICAgICAgIGJhckhlaWdodCA9IE1hdGgubWF4LmFwcGx5KFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgdGhpcy5kYXRhQXJyYXkuc3ViYXJyYXkoaSwgaSArIGRlZmluaXRpb24pXG4gICAgICAgICk7XG4gICAgICAgIGJhckhlaWdodCAvPSAyNTU7XG4gICAgICAgIGJhckhlaWdodCAqPSB0aGlzLmNhbnZhcy5lbGVtZW50LmhlaWdodDtcblxuICAgICAgICB0aGlzLmNhbnZhcy5jb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuY29sb3JzLmFjY2VudDtcbiAgICAgICAgdGhpcy5jYW52YXMuY29udGV4dC5maWxsUmVjdChcbiAgICAgICAgICB4LFxuICAgICAgICAgIHRoaXMuY2FudmFzLmVsZW1lbnQuaGVpZ2h0IC0gYmFySGVpZ2h0LFxuICAgICAgICAgIGJhcldpZHRoICogZGVmaW5pdGlvbixcbiAgICAgICAgICBiYXJIZWlnaHRcbiAgICAgICAgKTtcblxuICAgICAgICB4ICs9IGJhcldpZHRoICogZGVmaW5pdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgRXF1aXZhbGVudCB0byBcInBhdGNoaW5nIGluXCIgYW4gYXVkaW8gbm9kZSB0byB2aXN1YWxpemUuXG4gIEBwYXJhbSBub2RlIHtBdWRpb05vZGV9IFRoZSBhdWRpbyBub2RlIHRvIHZpc3VhbGl6ZVxuICBAZXhhbXBsZSBzcGVjdHJvZ3JhbS5jb25uZWN0KCBUb25lLk1hc3RlciApO1xuICAqL1xuICBjb25uZWN0KG5vZGUpIHtcbiAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cblxuICAgIHRoaXMuYW5hbHlzZXIgPSBub2RlLmNvbnRleHQuY3JlYXRlQW5hbHlzZXIoKTtcbiAgICB0aGlzLmFuYWx5c2VyLmZmdFNpemUgPSAyMDQ4O1xuICAgIHRoaXMuYnVmZmVyTGVuZ3RoID0gdGhpcy5hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudDtcbiAgICB0aGlzLmRhdGFBcnJheSA9IG5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyTGVuZ3RoKTtcblxuICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcblxuICAgIHRoaXMuc291cmNlID0gbm9kZTtcbiAgICB0aGlzLnNvdXJjZS5jb25uZWN0KHRoaXMuYW5hbHlzZXIpO1xuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBTdG9wIHZpc3VhbGl6aW5nIHRoZSBzb3VyY2Ugbm9kZSBhbmQgZGlzY29ubmVjdCBpdC5cbiAgKi9cbiAgZGlzY29ubmVjdCgpIHtcbiAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgIHRoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5hbmFseXNlcik7XG4gICAgfVxuXG4gICAgdGhpcy5hbmFseXNlciA9IG51bGw7XG4gICAgdGhpcy5idWZmZXJMZW5ndGggPSAwO1xuICAgIHRoaXMuZGF0YUFycmF5ID0gbnVsbDtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuc291cmNlID0gbnVsbDtcbiAgfVxuXG4gIGNsaWNrKCkge1xuICAgIHRoaXMuYWN0aXZlID0gIXRoaXMuYWN0aXZlICYmIHRoaXMuc291cmNlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBjdXN0b21EZXN0cm95KCkge1xuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9pbnRlcmZhY2VzL3NwZWN0cm9ncmFtLmpzIiwiJ3VzZSBzdHJpY3QnO1xuXG5sZXQgZG9tID0gcmVxdWlyZSgnLi4vdXRpbC9kb20nKTtcbmxldCBtYXRoID0gcmVxdWlyZSgnLi4vdXRpbC9tYXRoJyk7XG5sZXQgSW50ZXJmYWNlID0gcmVxdWlyZSgnLi4vY29yZS9pbnRlcmZhY2UnKTtcblxuLyoqXG4gKiBNZXRlclxuICpcbiAqIEBkZXNjcmlwdGlvbiBTdGVyZW8gZGVjaWJlbCBtZXRlclxuICpcbiAqIEBkZW1vIDxzcGFuIG5leHVzLXVpPVwibWV0ZXJcIj48L3NwYW4+XG4gKlxuICogQGV4YW1wbGVcbiAqIHZhciBtZXRlciA9IG5ldyBOZXh1cy5NZXRlcignI3RhcmdldCcpXG4gKiBtZXRlci5jb25uZWN0KG15V2ViQXVkaW9Ob2RlKVxuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgbWV0ZXIgPSBuZXcgTmV4dXMuTWV0ZXIoJyN0YXJnZXQnLCB7XG4gKiAgIHNpemU6IFs3NSw3NV1cbiAqIH0pXG4gKiBtZXRlci5jb25uZWN0KG15V2ViQXVkaW9Ob2RlKVxuICpcbiAqIEBvdXRwdXRcbiAqICZuYnNwO1xuICogTm8gZXZlbnRzXG4gKlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldGVyIGV4dGVuZHMgSW50ZXJmYWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IG9wdGlvbnMgPSBbXTtcblxuICAgIGxldCBkZWZhdWx0cyA9IHtcbiAgICAgIHNpemU6IFszMCwgMTAwXVxuICAgIH07XG5cbiAgICBzdXBlcihhcmd1bWVudHMsIG9wdGlvbnMsIGRlZmF1bHRzKTtcblxuICAgIHRoaXMuY2hhbm5lbHMgPSAyO1xuICAgIHRoaXMuc3BsaXR0ZXIgPSBudWxsO1xuICAgIHRoaXMuYW5hbHlzZXJzID0gW107XG4gICAgdGhpcy5idWZmZXJMZW5ndGggPSAwO1xuICAgIHRoaXMuZGF0YUFycmF5ID0gbnVsbDtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuc291cmNlID0gbnVsbDtcbiAgICB0aGlzLmRiID0gLUluZmluaXR5O1xuXG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLm1ldGVyV2lkdGggPSB0aGlzLmNhbnZhcy5lbGVtZW50LndpZHRoIC8gdGhpcy5jaGFubmVscztcblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuY2FudmFzID0gbmV3IGRvbS5TbWFydENhbnZhcyh0aGlzLnBhcmVudCk7XG4gICAgdGhpcy5lbGVtZW50ID0gdGhpcy5jYW52YXMuZWxlbWVudDtcbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5jYW52YXMucmVzaXplKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTtcbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIHRoaXMuY2FudmFzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhbnZhcy5jb250ZXh0LmZpbGxTdHlsZSA9IHRoaXMuY29sb3JzLmZpbGw7XG4gICAgdGhpcy5jYW52YXMuY29udGV4dC5maWxsUmVjdChcbiAgICAgIDAsXG4gICAgICAwLFxuICAgICAgdGhpcy5jYW52YXMuZWxlbWVudC53aWR0aCxcbiAgICAgIHRoaXMuY2FudmFzLmVsZW1lbnQuaGVpZ2h0XG4gICAgKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hbmFseXNlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLnNvdXJjZSkge1xuICAgICAgICB0aGlzLmFuYWx5c2Vyc1tpXS5nZXRGbG9hdFRpbWVEb21haW5EYXRhKHRoaXMuZGF0YUFycmF5KTtcblxuICAgICAgICBsZXQgcm1zID0gMDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgcm1zICs9IHRoaXMuZGF0YUFycmF5W2ldICogdGhpcy5kYXRhQXJyYXlbaV07XG4gICAgICAgIH1cblxuICAgICAgICBybXMgPSBNYXRoLnNxcnQocm1zIC8gdGhpcy5kYXRhQXJyYXkubGVuZ3RoKTtcblxuICAgICAgICB0aGlzLmRiID0gMjAgKiBNYXRoLmxvZzEwKHJtcyk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZGIgPiAtMjAwICYmIHRoaXMuZGIgIT09IC1JbmZpbml0eSkge1xuICAgICAgICB0aGlzLmRiIC09IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRiID0gLUluZmluaXR5O1xuICAgICAgfVxuXG4gICAgICAvL2NvbnNvbGUubG9nKGRiKVxuXG4gICAgICBpZiAodGhpcy5kYiA+IC03MCkge1xuICAgICAgICBsZXQgbGluZWFyID0gbWF0aC5ub3JtYWxpemUodGhpcy5kYiwgLTcwLCA1KTtcbiAgICAgICAgbGV0IGV4cCA9IGxpbmVhciAqIGxpbmVhcjtcbiAgICAgICAgbGV0IHkgPSBtYXRoLnNjYWxlKGV4cCwgMCwgMSwgdGhpcy5lbGVtZW50LmhlaWdodCwgMCk7XG5cbiAgICAgICAgdGhpcy5jYW52YXMuY29udGV4dC5maWxsU3R5bGUgPSB0aGlzLmNvbG9ycy5hY2NlbnQ7XG4gICAgICAgIHRoaXMuY2FudmFzLmNvbnRleHQuZmlsbFJlY3QoXG4gICAgICAgICAgdGhpcy5tZXRlcldpZHRoICogaSxcbiAgICAgICAgICB5LFxuICAgICAgICAgIHRoaXMubWV0ZXJXaWR0aCxcbiAgICAgICAgICB0aGlzLmNhbnZhcy5lbGVtZW50LmhlaWdodCAtIHlcbiAgICAgICAgKTtcblxuICAgICAgICAvL2NvbnNvbGUubG9nKFwicmVuZGVyaW5nLi4uXCIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gIEVxdWl2YWxlbnQgdG8gXCJwYXRjaGluZyBpblwiIGFuIGF1ZGlvIG5vZGUgdG8gdmlzdWFsaXplLlxuICBAcGFyYW0gbm9kZSB7QXVkaW9Ob2RlfSBUaGUgYXVkaW8gbm9kZSB0byB2aXN1YWxpemVcbiAgQHBhcmFtIGNoYW5uZWxzIHtudW1iZXJ9IChvcHRpb25hbCkgVGhlIG51bWJlciBvZiBjaGFubmVscyBpbiB0aGUgc291cmNlIG5vZGUgdG8gd2F0Y2guIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBpbnRlcmZhY2Ugd2lsbCBsb29rIGZvciBhIC5jaGFubmVsQ291bnQgcHJvcGVydHkgb24gdGhlIGlucHV0IG5vZGUuIElmIGl0IGRvZXMgbm90IGV4aXN0LCB0aGUgaW50ZXJmYWNlIHdpbGwgZGVmYXVsdCB0byAxIGNoYW5uZWwuXG4gIEBleGFtcGxlIG1ldGVyLmNvbm5lY3QoIFRvbmUuTWFzdGVyLCAyICk7XG4gICovXG4gIGNvbm5lY3Qobm9kZSwgY2hhbm5lbHMpIHtcbiAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgIHRoaXMuZGlzY29ubmVjdCgpO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbm5lbHMgPSBjaGFubmVscyB8fCBub2RlLmNoYW5uZWxDb3VudCB8fCAyO1xuXG4gICAgdGhpcy5zcGxpdHRlciA9IG5vZGUuY29udGV4dC5jcmVhdGVDaGFubmVsU3BsaXR0ZXIodGhpcy5jaGFubmVscyk7XG5cbiAgICB0aGlzLmFuYWx5c2VycyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jaGFubmVsczsgaSsrKSB7XG4gICAgICBjb25zdCBhbmFseXNlciA9IG5vZGUuY29udGV4dC5jcmVhdGVBbmFseXNlcigpO1xuICAgICAgYW5hbHlzZXIuZmZ0U2l6ZSA9IDEwMjQ7XG4gICAgICBhbmFseXNlci5zbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAxO1xuICAgICAgdGhpcy5zcGxpdHRlci5jb25uZWN0KGFuYWx5c2VyLCBpKTtcbiAgICAgIHRoaXMuYW5hbHlzZXJzLnB1c2goYW5hbHlzZXIpO1xuICAgIH1cbiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IHRoaXMuYW5hbHlzZXJzWzBdLmZyZXF1ZW5jeUJpbkNvdW50O1xuICAgIHRoaXMuZGF0YUFycmF5ID0gbmV3IEZsb2F0MzJBcnJheSh0aGlzLmJ1ZmZlckxlbmd0aCk7XG5cbiAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG5cbiAgICB0aGlzLm1ldGVyV2lkdGggPSB0aGlzLmNhbnZhcy5lbGVtZW50LndpZHRoIC8gdGhpcy5jaGFubmVscztcblxuICAgIHRoaXMuc291cmNlID0gbm9kZTtcbiAgICB0aGlzLnNvdXJjZS5jb25uZWN0KHRoaXMuc3BsaXR0ZXIpO1xuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIC8qKlxuICBTdG9wIHZpc3VhbGl6aW5nIHRoZSBzb3VyY2Ugbm9kZSBhbmQgZGlzY29ubmVjdCBpdC5cbiAgKi9cbiAgZGlzY29ubmVjdCgpIHtcbiAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgIHRoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5zcGxpdHRlcik7XG4gICAgfVxuXG4gICAgdGhpcy5zcGxpdHRlciA9IG51bGw7XG4gICAgdGhpcy5hbmFseXNlcnMgPSBbXTtcbiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IDA7XG4gICAgdGhpcy5kYXRhQXJyYXkgPSBudWxsO1xuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB9XG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5hY3RpdmUgPSAhdGhpcy5hY3RpdmUgJiYgdGhpcy5zb3VyY2U7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGN1c3RvbURlc3Ryb3koKSB7XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvbWV0ZXIuanMiLCIndXNlIHN0cmljdCc7XG5cbmxldCBkb20gPSByZXF1aXJlKCcuLi91dGlsL2RvbScpO1xubGV0IEludGVyZmFjZSA9IHJlcXVpcmUoJy4uL2NvcmUvaW50ZXJmYWNlJyk7XG5cbi8qKlxuICogT3NjaWxsb3Njb3BlXG4gKlxuICogQGRlc2NyaXB0aW9uIFZpc3VhbGl6ZXMgYSB3YXZlZm9ybSdzIHN0cmVhbSBvZiB2YWx1ZXMuXG4gKlxuICogQGRlbW8gPHNwYW4gbmV4dXMtdWk9XCJvc2NpbGxvc2NvcGVcIj48L3NwYW4+XG4gKlxuICogQGV4YW1wbGVcbiAqIHZhciBvc2NpbGxvc2NvcGUgPSBuZXcgTmV4dXMuT3NjaWxsb3Njb3BlKCcjdGFyZ2V0JylcbiAqIG9zY2lsbG9zY29wZS5jb25uZWN0KG15V2ViQXVkaW9Ob2RlKVxuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgb3NjaWxsb3Njb3BlID0gbmV3IE5leHVzLk9zY2lsbG9zY29wZSgnI3RhcmdldCcse1xuICogICAnc2l6ZSc6IFszMDAsMTUwXVxuICogfSlcbiAqIG9zY2lsbG9zY29wZS5jb25uZWN0KG15V2ViQXVkaW9Ob2RlKVxuICpcbiAqIEBvdXRwdXRcbiAqICZuYnNwO1xuICogTm8gZXZlbnRzXG4gKlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9zY2lsbG9zY29wZSBleHRlbmRzIEludGVyZmFjZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBvcHRpb25zID0gW107XG5cbiAgICBsZXQgZGVmYXVsdHMgPSB7XG4gICAgICBzaXplOiBbMzAwLCAxNTBdXG4gICAgfTtcblxuICAgIHN1cGVyKGFyZ3VtZW50cywgb3B0aW9ucywgZGVmYXVsdHMpO1xuXG4gICAgdGhpcy5hbmFseXNlciA9IG51bGw7XG4gICAgdGhpcy5idWZmZXJMZW5ndGggPSAwO1xuICAgIHRoaXMuZGF0YUFycmF5ID0gbnVsbDtcblxuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG5cbiAgICB0aGlzLnNvdXJjZSA9IG51bGw7XG5cbiAgICB0aGlzLmluaXQoKTtcblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBidWlsZEZyYW1lKCkge1xuICAgIHRoaXMuY2FudmFzID0gbmV3IGRvbS5TbWFydENhbnZhcyh0aGlzLnBhcmVudCk7XG4gICAgdGhpcy5lbGVtZW50ID0gdGhpcy5jYW52YXMuZWxlbWVudDtcbiAgfVxuXG4gIHNpemVJbnRlcmZhY2UoKSB7XG4gICAgdGhpcy5jYW52YXMucmVzaXplKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTtcbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIHRoaXMuY2FudmFzLmVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnJlbmRlci5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hbmFseXNlcikge1xuICAgICAgdGhpcy5hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEodGhpcy5kYXRhQXJyYXkpO1xuICAgIH1cblxuICAgIHRoaXMuY2FudmFzLmNvbnRleHQuZmlsbFN0eWxlID0gdGhpcy5jb2xvcnMuZmlsbDtcbiAgICB0aGlzLmNhbnZhcy5jb250ZXh0LmZpbGxSZWN0KFxuICAgICAgMCxcbiAgICAgIDAsXG4gICAgICB0aGlzLmNhbnZhcy5lbGVtZW50LndpZHRoLFxuICAgICAgdGhpcy5jYW52YXMuZWxlbWVudC5oZWlnaHRcbiAgICApO1xuXG4gICAgdGhpcy5jYW52YXMuY29udGV4dC5saW5lV2lkdGggPSB+fih0aGlzLmhlaWdodCAvIDEwMCArIDIpO1xuICAgIHRoaXMuY2FudmFzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSB0aGlzLmNvbG9ycy5hY2NlbnQ7XG5cbiAgICB0aGlzLmNhbnZhcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuXG4gICAgaWYgKHRoaXMuc291cmNlKSB7XG4gICAgICB2YXIgc2xpY2VXaWR0aCA9ICh0aGlzLmNhbnZhcy5lbGVtZW50LndpZHRoICogMS4wKSAvIHRoaXMuYnVmZmVyTGVuZ3RoO1xuICAgICAgdmFyIHggPSAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYnVmZmVyTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHYgPSB0aGlzLmRhdGFBcnJheVtpXSAvIDEyOC4wO1xuICAgICAgICB2YXIgeSA9ICh2ICogdGhpcy5jYW52YXMuZWxlbWVudC5oZWlnaHQpIC8gMjtcblxuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuY2FudmFzLmNvbnRleHQubW92ZVRvKHgsIHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY2FudmFzLmNvbnRleHQubGluZVRvKHgsIHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgeCArPSBzbGljZVdpZHRoO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbnZhcy5jb250ZXh0Lm1vdmVUbygwLCB0aGlzLmNhbnZhcy5lbGVtZW50LmhlaWdodCAvIDIpO1xuICAgICAgdGhpcy5jYW52YXMuY29udGV4dC5saW5lVG8oXG4gICAgICAgIHRoaXMuY2FudmFzLmVsZW1lbnQud2lkdGgsXG4gICAgICAgIHRoaXMuY2FudmFzLmVsZW1lbnQuaGVpZ2h0IC8gMlxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhbnZhcy5jb250ZXh0LnN0cm9rZSgpO1xuICB9XG5cbiAgLyoqXG4gIEVxdWl2YWxlbnQgdG8gXCJwYXRjaGluZyBpblwiIGFuIGF1ZGlvIG5vZGUgdG8gdmlzdWFsaXplLlxuICBAcGFyYW0gbm9kZSB7QXVkaW9Ob2RlfSBUaGUgYXVkaW8gbm9kZSB0byB2aXN1YWxpemVcbiAgQGV4YW1wbGUgb3NjaWxsb3Njb3BlLmNvbm5lY3QoIFRvbmUuTWFzdGVyICk7XG4gICovXG5cbiAgY29ubmVjdChub2RlKSB7XG4gICAgaWYgKHRoaXMuc291cmNlKSB7XG4gICAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICB9XG5cbiAgICB0aGlzLmFuYWx5c2VyID0gbm9kZS5jb250ZXh0LmNyZWF0ZUFuYWx5c2VyKCk7XG4gICAgdGhpcy5hbmFseXNlci5mZnRTaXplID0gMjA0ODtcbiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IHRoaXMuYW5hbHlzZXIuZnJlcXVlbmN5QmluQ291bnQ7XG4gICAgdGhpcy5kYXRhQXJyYXkgPSBuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlckxlbmd0aCk7XG4gICAgdGhpcy5hbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEodGhpcy5kYXRhQXJyYXkpO1xuXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuXG4gICAgdGhpcy5zb3VyY2UgPSBub2RlO1xuICAgIHRoaXMuc291cmNlLmNvbm5lY3QodGhpcy5hbmFseXNlcik7XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgLyoqXG4gIFN0b3AgdmlzdWFsaXppbmcgdGhlIHNvdXJjZSBub2RlIGFuZCBkaXNjb25uZWN0IGl0LlxuICAqL1xuICBkaXNjb25uZWN0KCkge1xuICAgIGlmICh0aGlzLnNvdXJjZSkge1xuICAgICAgdGhpcy5zb3VyY2UuZGlzY29ubmVjdCh0aGlzLmFuYWx5c2VyKTtcbiAgICB9XG5cbiAgICB0aGlzLmFuYWx5c2VyID0gbnVsbDtcbiAgICB0aGlzLmJ1ZmZlckxlbmd0aCA9IDA7XG4gICAgdGhpcy5kYXRhQXJyYXkgPSBudWxsO1xuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB9XG5cbiAgY2xpY2soKSB7XG4gICAgdGhpcy5hY3RpdmUgPSAhdGhpcy5hY3RpdmUgJiYgdGhpcy5zb3VyY2U7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGN1c3RvbURlc3Ryb3koKSB7XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vfi9qc2hpbnQtbG9hZGVyIS4vbGliL2ludGVyZmFjZXMvb3NjaWxsb3Njb3BlLmpzIiwiLypcbk1haW4gY29uY2VwdDpcbnN5bnRoID0gbmV3IE5leHVzLlJhY2soJ2VsZW1lbnRJRCcpO1xuXG5UcmFuc2Zvcm0gYWxsIGVsZW1lbnRzIGluc2lkZSB0aGUgZGl2XG5zeW50aC5lbGVtZW50SUQgd2lsbCBob2xkIHRoZSBmaXJzdCBzbGlkZXIgaW50ZXJmYWNlXG5cbjIpIEluIGZ1dHVyZSwgcG90ZW50aWFsbHkgd3JpdGluZyBhIHJhY2sgdGhhdCBpcyByZS11c2FibGU/XG5Db3VsZCBhbHNvIHRha2UgSlNPTlxuXG5uZXcgTmV4dXMuUmFjaygnI3RhcmdldCcse1xuICBwcmU6ICgpID0+IHtcbiAgICBjcmVhdGUgc29tZSBkaXZzIGhlcmUsIG9yIHNvbWUgYXVkaW8gY29kZVxuICB9LFxuICBpbnRlcmZhY2U6IHtcbiAgICBzbGlkZXIxOiBOZXh1cy5hZGQuc2xpZGVyKHtcbiAgICAgIHRvcDoxMCxcbiAgICAgIGxlZnQ6MTAsXG4gICAgICB3aWR0aDo1MCxcbiAgICAgIGhlaWdodDoxMDAsXG4gICAgICBtaW46IDAsXG4gICAgICBtYXg6IDEwMCxcbiAgICAgIHN0ZXA6IDFcbiAgICB9KSxcbiAgICB3YXZlMTogTmV4dXMuYWRkLndhdmVmb3JtKHtcbiAgICAgIGZpbGU6ICcuL3BhdGgvdG8vZmlsZS5tcDMnLFxuICAgICAgd2lkdGg6NTAwLFxuICAgICAgaGVpZ2h0OjEwMCxcbiAgICAgIG1vZGU6ICdyYW5nZSdcbiAgICB9KVxuICB9LFxuICBpbml0OiAoKSA9PiB7XG4gICAgLy8gc29tZSBhdWRpbyBpbml0IGNvZGUgZ29lcyBoZXJlLi4uXG4gIH1cbn0pO1xuXG4qL1xuXG5pbXBvcnQgKiBhcyB0cmFuc2Zvcm0gZnJvbSAnLi4vdXRpbC90cmFuc2Zvcm0nO1xuaW1wb3J0IGRvbSBmcm9tICcuLi91dGlsL2RvbSc7XG5cbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJy4uL21haW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYWNrIHtcblxuICBjb25zdHJ1Y3Rvcih0YXJnZXQsIHNldHRpbmdzKSB7XG5cbiAgICB0aGlzLm1ldGEgPSB7fTtcbiAgICB0aGlzLm1ldGEudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRoaXMubWV0YS5wYXJlbnQgPSBkb20ucGFyc2VFbGVtZW50KHRhcmdldCk7IC8vIHNob3VsZCBiZSBhIGdlbmVyaWMgZnVuY3Rpb24gZm9yIHBhcnNpbmcgYSAndGFyZ2V0JyBhcmd1bWVudCB0aGF0IGNoZWNrcyBmb3Igc3RyaW5nL0RPTS9qUVVFUllcbiAgICB0aGlzLm1ldGEuY29sb3JzID0ge307XG5cbiAgICBpZiAoc2V0dGluZ3MpIHtcbiAgICAgIHRoaXMubWV0YS5hdHRyaWJ1dGUgPSBzZXR0aW5ncy5hdHRyaWJ1dGUgfHwgJ25leHVzLXVpJztcbiAgICAgIHRoaXMubWV0YS50aXRsZSA9IHNldHRpbmdzLm5hbWUgfHwgZmFsc2U7XG4gICAgICB0aGlzLm1ldGEub3BlbiA9IHNldHRpbmdzLm9wZW4gfHwgZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWV0YS5hdHRyaWJ1dGUgPSAnbmV4dXMtdWknO1xuICAgICAgdGhpcy5tZXRhLnRpdGxlID0gZmFsc2U7XG4gICAgICB0aGlzLm1ldGEub3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBkZWZhdWx0Q29sb3JzID0gY29sb3JzKCk7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuICAgIHRoaXMubWV0YS5jb2xvcnMuYWNjZW50ID0gZGVmYXVsdENvbG9ycy5hY2NlbnQ7XG4gICAgdGhpcy5tZXRhLmNvbG9ycy5maWxsID0gZGVmYXVsdENvbG9ycy5maWxsO1xuICAgIHRoaXMubWV0YS5jb2xvcnMubGlnaHQgPSBkZWZhdWx0Q29sb3JzLmxpZ2h0O1xuICAgIHRoaXMubWV0YS5jb2xvcnMuZGFyayA9IGRlZmF1bHRDb2xvcnMuZGFyaztcbiAgICB0aGlzLm1ldGEuY29sb3JzLm1lZGl1bUxpZ2h0ID0gZGVmYXVsdENvbG9ycy5tZWRpdW1MaWdodDtcbiAgICB0aGlzLm1ldGEuY29sb3JzLm1lZGl1bURhcmsgPSBkZWZhdWx0Q29sb3JzLm1lZGl1bURhcms7XG4gICAgdGhpcy5idWlsZEludGVyZmFjZSgpO1xuICAgIHRoaXMuY29sb3JJbnRlcmZhY2UoKTtcbiAgfVxuXG4gIGJ1aWxkSW50ZXJmYWNlKCkge1xuICAgIHRoaXMubWV0YS5wYXJlbnQuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnO1xuICAgIHRoaXMubWV0YS5wYXJlbnQuc3R5bGUudXNlclNlbGVjdCA9ICdub25lJztcbiAgICB0aGlzLm1ldGEucGFyZW50LnN0eWxlLm1velVzZXJTZWxlY3QgPSAnbm9uZSc7XG4gICAgdGhpcy5tZXRhLnBhcmVudC5zdHlsZS53ZWJraXRVc2VyU2VsZWN0ID0gJ25vbmUnO1xuXG4gICAgdGhpcy5tZXRhLmNvbnRlbnRzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICB3aGlsZSAodGhpcy5tZXRhLnBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5tZXRhLmNvbnRlbnRzLmFwcGVuZENoaWxkKHRoaXMubWV0YS5wYXJlbnQuY2hpbGROb2Rlc1swXSk7XG4gICAgfVxuXG4gICAgdGhpcy5tZXRhLmNvbnRlbnRzLnN0eWxlLnBhZGRpbmcgPSAnMHB4JztcbiAgICB0aGlzLm1ldGEuY29udGVudHMuc3R5bGUuYm94U2l6aW5nID0gJ2JvcmRlci1ib3gnO1xuXG4gICAgaWYgKHRoaXMubWV0YS50aXRsZSkge1xuICAgICAgdGhpcy5tZXRhLnRpdGxlQmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0aGlzLm1ldGEudGl0bGVCYXIuaW5uZXJIVE1MID0gdGhpcy5tZXRhLnRpdGxlO1xuICAgICAgdGhpcy5tZXRhLnRpdGxlQmFyLnN0eWxlLmZvbnRGYW1pbHkgPSAnYXJpYWwnO1xuICAgICAgdGhpcy5tZXRhLnRpdGxlQmFyLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgIHRoaXMubWV0YS50aXRsZUJhci5zdHlsZS5jb2xvciA9ICcjODg4JztcbiAgICAgIHRoaXMubWV0YS50aXRsZUJhci5zdHlsZS5wYWRkaW5nID0gJzdweCc7XG4gICAgICB0aGlzLm1ldGEudGl0bGVCYXIuc3R5bGUuZm9udFNpemUgPSAnMTJweCc7XG5cbiAgICAgIHRoaXMubWV0YS5idXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHRoaXMubWV0YS5idXR0b24uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5zdHlsZS50b3AgPSAnNXB4JyA7XG4gICAgICB0aGlzLm1ldGEuYnV0dG9uLnN0eWxlLnJpZ2h0ID0gJzVweCcgO1xuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5pbm5lckhUTUwgPSAnLSc7XG4gICAgICB0aGlzLm1ldGEuYnV0dG9uLnN0eWxlLnBhZGRpbmcgPSAnMHB4IDVweCAycHgnO1xuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5zdHlsZS5saW5lSGVpZ2h0ID0gJzEycHgnO1xuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5zdHlsZS5mb250U2l6ZSA9ICcxNXB4JztcblxuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG5cbiAgICAgIHRoaXMubWV0YS5idXR0b24uYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKCkgPT4ge1xuICAgICAgICB0aGlzLm1ldGEuYnV0dG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMubWV0YS5jb2xvcnMubWVkaXVtRGFyaztcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tZXRhLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xuICAgICAgICB0aGlzLm1ldGEuYnV0dG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMubWV0YS5jb2xvcnMubWVkaXVtTGlnaHQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubWV0YS5idXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1ldGEub3Blbikge1xuICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuXG4gICAgICB0aGlzLm1ldGEudGl0bGVCYXIuYXBwZW5kQ2hpbGQodGhpcy5tZXRhLmJ1dHRvbik7XG5cbiAgICAgIHRoaXMubWV0YS5wYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5tZXRhLnRpdGxlQmFyKTtcbiAgICB9XG4gICAgdGhpcy5tZXRhLnBhcmVudC5hcHBlbmRDaGlsZCh0aGlzLm1ldGEuY29udGVudHMpO1xuXG4gIC8vICB2YXIgd2lkdGggPSB0aGlzLm1ldGEucGFyZW50LnN0eWxlLndpZHRoID0gZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLm1ldGEucGFyZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCd3aWR0aCcpO1xuLy8gICAgdGhpcy5tZXRhLnBhcmVudC5zdHlsZS53aWR0aCA9IHdpZHRoO1xuXG4gICAgbGV0IHVpID0gdHJhbnNmb3JtLnNlY3Rpb24odGhpcy5tZXRhLnRhcmdldCwgdGhpcy5tZXRhLmF0dHJpYnV0ZSk7XG4gICAgZm9yICh2YXIga2V5IGluIHVpKSB7XG4gICAgICB0aGlzW2tleV0gPSB1aVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIGNvbG9ySW50ZXJmYWNlKCkge1xuICAgIGlmICh0aGlzLm1ldGEudGl0bGUpIHtcbiAgICAgIHRoaXMubWV0YS5idXR0b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5tZXRhLmNvbG9ycy5tZWRpdW1MaWdodDtcbiAgICAgIHRoaXMubWV0YS5idXR0b24uc3R5bGUuYm9yZGVyID0gJ3NvbGlkIDBweCAnK3RoaXMubWV0YS5jb2xvcnMuZmlsbDtcbiAgICAgIHRoaXMubWV0YS5wYXJlbnQuc3R5bGUuYm9yZGVyID0gJ3NvbGlkIDFweCAnK3RoaXMubWV0YS5jb2xvcnMubWVkaXVtTGlnaHQ7XG4gICAgICB0aGlzLm1ldGEucGFyZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMubWV0YS5jb2xvcnMubGlnaHQ7XG4gICAgICB0aGlzLm1ldGEudGl0bGVCYXIuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5tZXRhLmNvbG9ycy5maWxsO1xuICAgIH1cbiAgfVxuXG4gIHNob3coKSB7XG4gICAgdGhpcy5tZXRhLmNvbnRlbnRzLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIHRoaXMubWV0YS5vcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5tZXRhLmNvbnRlbnRzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgdGhpcy5tZXRhLm9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIGNvbG9yaXplKHR5cGUsY29sb3IpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcykge1xuICAgICAgaWYgKHRoaXNba2V5XS5jb2xvcml6ZSkge1xuICAgICAgICB0aGlzW2tleV0uY29sb3JpemUodHlwZSxjb2xvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubWV0YS5jb2xvcnNbdHlwZV0gPSBjb2xvcjtcbiAgICB0aGlzLmNvbG9ySW50ZXJmYWNlKCk7XG4gIH1cblxuICBlbXB0eSgpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcykge1xuICAgICAgaWYgKHRoaXNba2V5XS5kZXN0cm95KSB7XG4gICAgICAgIHRoaXNba2V5XS5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9jb3JlL3JhY2suanMiLCIndXNlIHN0cmljdCc7XG5cbmltcG9ydCBkb20gZnJvbSAnLi4vdXRpbC9kb20nO1xuaW1wb3J0IEludGVyZmFjZXMgZnJvbSAnLi4vaW50ZXJmYWNlcy8nO1xuXG5sZXQgY3JlYXRlSW50ZXJmYWNlSUQgPSAod2lkZ2V0LGludGVyZmFjZUlEcykgPT4ge1xuICBsZXQgdHlwZSA9IHdpZGdldC50eXBlO1xuICBpZiAoaW50ZXJmYWNlSURzW3R5cGVdKSB7XG4gICAgaW50ZXJmYWNlSURzW3R5cGVdKys7XG4gIH0gZWxzZSB7XG4gICAgaW50ZXJmYWNlSURzW3R5cGVdID0gMTtcbiAgfVxuICByZXR1cm4gKCB0eXBlICsgaW50ZXJmYWNlSURzW3R5cGVdICk7XG59O1xuXG5sZXQgZWxlbWVudCA9IChlbGVtZW50LHR5cGUsb3B0aW9ucykgPT4ge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspe1xuICAgIGxldCBhdHQgPSBlbGVtZW50LmF0dHJpYnV0ZXNbaV07XG4gIC8vICB0cnkge1xuICAvLyAgICBvcHRpb25zW2F0dC5ub2RlTmFtZV0gPSBldmFsKGF0dC5ub2RlVmFsdWUpO1xuICAvLyAgfSBjYXRjaChlKSB7XG4gICAgICBvcHRpb25zW2F0dC5ub2RlTmFtZV0gPSBhdHQubm9kZVZhbHVlO1xuICAvLyAgfVxuICB9XG4gIHR5cGUgPSB0eXBlWzBdLnRvVXBwZXJDYXNlKCkgKyB0eXBlLnNsaWNlKDEpO1xuICBsZXQgd2lkZ2V0ID0gbmV3IEludGVyZmFjZXNbdHlwZV0oZWxlbWVudCxvcHRpb25zKTtcbiAgd2lkZ2V0LmlkID0gZWxlbWVudC5pZDtcbiAgcmV0dXJuIHdpZGdldDtcbn07XG5cblxubGV0IHNlY3Rpb24gPSAocGFyZW50LGtleXdvcmQpID0+IHtcblxuICBrZXl3b3JkID0ga2V5d29yZCB8fCAnbmV4dXMtdWknO1xuXG4gIGxldCBpbnRlcmZhY2VJRHMgPSB7fTtcblxuICBsZXQgY29udGFpbmVyID0gZG9tLnBhcnNlRWxlbWVudChwYXJlbnQpO1xuXG4gIGxldCB1aSA9IHt9O1xuXG4gIGxldCBodG1sRWxlbWVudHMgPSBjb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJyonKTtcbiAgbGV0IGVsZW1lbnRzID0gW107XG4gIGZvciAobGV0IGk9MDsgaTxodG1sRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBlbGVtZW50cy5wdXNoKGh0bWxFbGVtZW50c1tpXSk7XG4gIH1cbiAgZm9yIChsZXQgaT0wO2k8ZWxlbWVudHMubGVuZ3RoO2krKykge1xuICAgIGxldCB0eXBlID0gZWxlbWVudHNbaV0uZ2V0QXR0cmlidXRlKGtleXdvcmQpO1xuICAgIGlmICh0eXBlKSB7XG4gICAgICBsZXQgZm9ybWF0dGVkVHlwZSA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQga2V5IGluIEludGVyZmFjZXMpIHtcbiAgICAgICAgaWYgKHR5cGUudG9Mb3dlckNhc2UoKT09PWtleS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgZm9ybWF0dGVkVHlwZSA9IGtleTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coZm9ybWF0dGVkVHlwZSk7XG4gICAgICBsZXQgd2lkZ2V0ID0gZWxlbWVudChlbGVtZW50c1tpXSxmb3JtYXR0ZWRUeXBlKTtcbiAgICAgIGlmICh3aWRnZXQuaWQpIHtcbiAgICAgICAgdWlbd2lkZ2V0LmlkXSA9IHdpZGdldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBpZCA9IGNyZWF0ZUludGVyZmFjZUlEKHdpZGdldCxpbnRlcmZhY2VJRHMpO1xuICAgICAgICB1aVtpZF0gPSB3aWRnZXQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVpO1xuXG59O1xuXG5sZXQgYWRkID0gKHR5cGUscGFyZW50LG9wdGlvbnMpID0+IHtcbiAgbGV0IHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgaWYgKHBhcmVudCkge1xuICAgIHBhcmVudCA9IGRvbS5wYXJzZUVsZW1lbnQocGFyZW50KTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnQgPSBkb2N1bWVudC5ib2R5O1xuICB9XG4gIHBhcmVudC5hcHBlbmRDaGlsZCh0YXJnZXQpO1xuICBvcHRpb25zLnRhcmdldCA9IHRhcmdldDtcbiAgaWYgKG9wdGlvbnMuc2l6ZSkge1xuICAgIHRhcmdldC5zdHlsZS53aWR0aCA9IG9wdGlvbnMuc2l6ZVswXSArICdweCc7XG4gICAgdGFyZ2V0LnN0eWxlLmhlaWdodCA9IG9wdGlvbnMuc2l6ZVsxXSArICdweCc7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQodGFyZ2V0LHR5cGUsb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgeyBlbGVtZW50IH07XG5leHBvcnQgeyBzZWN0aW9uIH07XG5leHBvcnQgeyBhZGQgfTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi91dGlsL3RyYW5zZm9ybS5qcyIsIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IG1hdGggZnJvbSAnLi4vdXRpbC9tYXRoJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHVuZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIHRoZSBzY2FsZSBhcyByYXRpb3NcbiAgICB0aGlzLnNjYWxlID0gW107XG5cbiAgICAvLyBpL28gbW9kZXNcbiAgICB0aGlzLm1vZGUgPSB7XG4gICAgICBvdXRwdXQ6ICdmcmVxdWVuY3knLFxuICAgICAgaW5wdXQ6ICdzdGVwJ1xuICAgIH07XG5cbiAgICAvLyBFVCBtYWpvclxuICAgIHRoaXMuZXRtYWpvciA9IFtcbiAgICAgIDI2MS42MjU1OCxcbiAgICAgIDI5My42NjQ3NjQsXG4gICAgICAzMjkuNjI3NTYzLFxuICAgICAgMzQ5LjIyODI0MSxcbiAgICAgIDM5MS45OTU0MjIsXG4gICAgICA0NDAsXG4gICAgICA0OTMuODgzMzAxLFxuICAgICAgNTIzLjI1MTE2XG4gICAgXTtcblxuICAgIC8vIFJvb3QgZnJlcXVlbmN5LlxuICAgIHRoaXMucm9vdCA9IG1hdGgubXRvZig2MCk7IC8vICogTWF0aC5wb3coMiwoNjAtNjkpLzEyKTtcblxuICAgIC8vIGRlZmF1bHQgaXMgYSBtYWpvciBzY2FsZVxuICAgIHRoaXMuY3JlYXRlU2NhbGUoMCwgMiwgNCwgNSwgNywgOSwgMTEpO1xuICB9XG5cbiAgLyogUmV0dXJuIGRhdGEgaW4gdGhlIG1vZGUgeW91IGFyZSBpbiAoZnJlcSwgcmF0aW8sIG9yIG1pZGkpICovXG4gIG5vdGUoaW5wdXQsIG9jdGF2ZSkge1xuICAgIGxldCBuZXd2YWx1ZTtcblxuICAgIGlmICh0aGlzLm1vZGUub3V0cHV0ID09PSAnZnJlcXVlbmN5Jykge1xuICAgICAgbmV3dmFsdWUgPSB0aGlzLmZyZXF1ZW5jeShpbnB1dCwgb2N0YXZlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZS5vdXRwdXQgPT09ICdyYXRpbycpIHtcbiAgICAgIG5ld3ZhbHVlID0gdGhpcy5yYXRpbyhpbnB1dCwgb2N0YXZlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZS5vdXRwdXQgPT09ICdNSURJJykge1xuICAgICAgbmV3dmFsdWUgPSB0aGlzLk1JREkoaW5wdXQsIG9jdGF2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld3ZhbHVlID0gdGhpcy5mcmVxdWVuY3koaW5wdXQsIG9jdGF2ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld3ZhbHVlO1xuICB9XG5cbiAgLyogUmV0dXJuIGZyZXEgZGF0YSAqL1xuICBmcmVxdWVuY3koc3RlcEluLCBvY3RhdmVJbikge1xuICAgIGlmICh0aGlzLm1vZGUuaW5wdXQgPT09ICdtaWRpJyB8fCB0aGlzLm1vZGUuaW5wdXQgPT09ICdNSURJJykge1xuICAgICAgdGhpcy5zdGVwSW4gKz0gNjA7XG4gICAgfVxuXG4gICAgLy8gd2hhdCBvY3RhdmUgaXMgb3VyIGlucHV0XG4gICAgbGV0IG9jdGF2ZSA9IE1hdGguZmxvb3Ioc3RlcEluIC8gdGhpcy5zY2FsZS5sZW5ndGgpO1xuXG4gICAgaWYgKG9jdGF2ZUluKSB7XG4gICAgICBvY3RhdmUgKz0gb2N0YXZlSW47XG4gICAgfVxuXG4gICAgLy8gd2hpY2ggc2NhbGUgZGVncmVlICgwIC0gc2NhbGUgbGVuZ3RoKSBpcyBvdXIgaW5wdXRcbiAgICBsZXQgc2NhbGVEZWdyZWUgPSBzdGVwSW4gJSB0aGlzLnNjYWxlLmxlbmd0aDtcblxuICAgIHdoaWxlIChzY2FsZURlZ3JlZSA8IDApIHtcbiAgICAgIHNjYWxlRGVncmVlICs9IHRoaXMuc2NhbGUubGVuZ3RoO1xuICAgIH1cblxuICAgIGxldCByYXRpbyA9IHRoaXMuc2NhbGVbc2NhbGVEZWdyZWVdO1xuXG4gICAgbGV0IGZyZXEgPSB0aGlzLnJvb3QgKiByYXRpbztcblxuICAgIGZyZXEgPSBmcmVxICogTWF0aC5wb3coMiwgb2N0YXZlKTtcblxuICAgIC8vIHRydW5jYXRlIGlycmF0aW9uYWwgbnVtYmVyc1xuICAgIGZyZXEgPSBNYXRoLmZsb29yKGZyZXEgKiAxMDAwMDAwMDAwMDApIC8gMTAwMDAwMDAwMDAwO1xuXG4gICAgcmV0dXJuIGZyZXE7XG4gIH1cblxuICAvKiBGb3JjZSByZXR1cm4gcmF0aW8gZGF0YSAqL1xuXG4gIHJhdGlvKHN0ZXBJbiwgb2N0YXZlSW4pIHtcbiAgICBpZiAodGhpcy5tb2RlLmlucHV0ID09PSAnbWlkaScgfHwgdGhpcy5tb2RlLmlucHV0ID09PSAnTUlESScpIHtcbiAgICAgIHRoaXMuc3RlcEluICs9IDYwO1xuICAgIH1cblxuICAgIC8vIHdoYXQgb2N0YXZlIGlzIG91ciBpbnB1dFxuICAgIGxldCBvY3RhdmUgPSBNYXRoLmZsb29yKHN0ZXBJbiAvIHRoaXMuc2NhbGUubGVuZ3RoKTtcblxuICAgIGlmIChvY3RhdmVJbikge1xuICAgICAgb2N0YXZlICs9IG9jdGF2ZUluO1xuICAgIH1cblxuICAgIC8vIHdoaWNoIHNjYWxlIGRlZ3JlZSAoMCAtIHNjYWxlIGxlbmd0aCkgaXMgb3VyIGlucHV0XG4gICAgbGV0IHNjYWxlRGVncmVlID0gc3RlcEluICUgdGhpcy5zY2FsZS5sZW5ndGg7XG5cbiAgICAvLyB3aGF0IHJhdGlvIGlzIG91ciBpbnB1dCB0byBvdXIga2V5XG4gICAgbGV0IHJhdGlvID0gTWF0aC5wb3coMiwgb2N0YXZlKSAqIHRoaXMuc2NhbGVbc2NhbGVEZWdyZWVdO1xuXG4gICAgcmF0aW8gPSBNYXRoLmZsb29yKHJhdGlvICogMTAwMDAwMDAwMDAwKSAvIDEwMDAwMDAwMDAwMDtcblxuICAgIHJldHVybiByYXRpbztcbiAgfVxuXG4gIC8qIEZvcmNlIHJldHVybiBhZGp1c3RlZCBNSURJIGRhdGEgKi9cblxuICBNSURJKHN0ZXBJbiwgb2N0YXZlSW4pIHtcbiAgICBsZXQgbmV3dmFsdWUgPSB0aGlzLmZyZXF1ZW5jeShzdGVwSW4sIG9jdGF2ZUluKTtcblxuICAgIGxldCBuID0gNjkgKyAoMTIgKiBNYXRoLmxvZyhuZXd2YWx1ZSAvIDQ0MCkpIC8gTWF0aC5sb2coMik7XG5cbiAgICBuID0gTWF0aC5mbG9vcihuICogMTAwMDAwMDAwMCkgLyAxMDAwMDAwMDAwO1xuXG4gICAgcmV0dXJuIG47XG4gIH1cblxuICBjcmVhdGVTY2FsZSgpIHtcbiAgICBsZXQgbmV3U2NhbGUgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgbmV3U2NhbGUucHVzaChtYXRoLm10b2YoNjAgKyBhcmd1bWVudHNbaV0pKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkU2NhbGVGcm9tRnJlcXVlbmNpZXMobmV3U2NhbGUpO1xuICB9XG5cbiAgY3JlYXRlSklTY2FsZSgpIHtcbiAgICB0aGlzLnNjYWxlID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuc2NhbGUucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRTY2FsZUZyb21GcmVxdWVuY2llcyhmcmVxcykge1xuICAgIHRoaXMuc2NhbGUgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyZXFzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnNjYWxlLnB1c2goZnJlcXNbaV0gLyBmcmVxc1swXSk7XG4gICAgfVxuICB9XG5cbiAgLyogTG9hZCBhIG5ldyBzY2FsZSAqL1xuXG4gIGxvYWRTY2FsZShuYW1lKSB7XG4gICAgLyogbG9hZCB0aGUgc2NhbGUgKi9cbiAgICBsZXQgZnJlcXMgPSB0aGlzLnNjYWxlc1tuYW1lXS5mcmVxdWVuY2llcztcbiAgICB0aGlzLmxvYWRTY2FsZUZyb21GcmVxdWVuY2llcyhmcmVxcyk7XG4gIH1cblxuICAvKiBTZWFyY2ggdGhlIG5hbWVzIG9mIHR1bmluZ3NcbiAgXHQgUmV0dXJucyBhbiBhcnJheSBvZiBuYW1lcyBvZiB0dW5pbmdzICovXG5cbiAgc2VhcmNoKGxldHRlcnMpIHtcbiAgICBsZXQgcG9zc2libGUgPSBbXTtcbiAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5zY2FsZXMpIHtcbiAgICAgIGlmIChrZXkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGxldHRlcnMudG9Mb3dlckNhc2UoKSkgIT09IC0xKSB7XG4gICAgICAgIHBvc3NpYmxlLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBvc3NpYmxlO1xuICB9XG5cbiAgLyogUmV0dXJuIGEgY29sbGVjdGlvbiBvZiBub3RlcyBhcyBhbiBhcnJheSAqL1xuXG4gIGNob3JkKG1pZGlzKSB7XG4gICAgbGV0IG91dHB1dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWlkaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG91dHB1dC5wdXNoKHRoaXMubm90ZShtaWRpc1tpXSkpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9+L2pzaGludC1sb2FkZXIhLi9saWIvdHVuaW5nL3R1bmluZy5qcyIsIid1c2Ugc3RyaWN0JztcblxuLy9EaXNhYmxlIGpzaGludCB3YXJuaW5nIGNvbmNlcm5pbmcgdHJhaWxpbmcgcmVndWxhciBwYXJhbXNcbi8qanNoaW50IC1XMTM4ICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhZGlvIHtcbiAgICAvL2lmIG5vbi1leGlzdGVudCBidXR0b25zIGFyZSBzd2l0Y2hlZCwgdGhleSBhcmUgaWdub3JlZFxuXG4gICAgY29uc3RydWN0b3IobGVuZ3RoID0gMywgLi4ub25WYWxzKSB7XG4gICAgICAgIC8vZWFjaCBvcHRpb25hbCAnb25WYWxzJyBhcmd1bWVudCBzd2l0Y2hlcyBvbiB0aGF0IHZhbHVlIGluIHRoZSBSYWRpbyBpZiBpdCBleGlzdHNcbiAgICAgICAgLy9JbiB0aGUgZXhhbXBsZSBiZWxvdywgYSAzLWJ1dHRvbiByYWRpbyBpcyBjcmVhdGVkLCBpbmRleCAwIGlzIHN3aXRjaGVkIG9uLCBpbmRleCAxIGlzIHN3aXRjaGVkIG9uIHRoZW4gdGhlbiBhdHRlbXB0ZWQgYWdhaW4gcHJvZHVjaW5nIGFuIHdhcm5pbmcsIGFuZCB0aGUgZmluYWwgYXJndW1lbnQgcHJvZHVjZXMgYSB3YXJuaW5nIGJlY2F1c2UgdGhlIGluZGV4IHZhbHVlIGRvZXMgbm90IGV4aXN0LlxuICAgICAgICAvL0V4YW1wbGU6XG4gICAgICAgIC8vYCAgcmFkaW8gPSBuZXcgUmFkaW8oMywgMCwgMSwgMSwgMyk7XG4gICAgICAgIC8v4oCmICBbMSwxLDBdXG5cbiAgICAgICAgaWYgKGxlbmd0aCA8IDApIHsgbGVuZ3RoID0gMTsgfVxuXG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICB0aGlzLm9uVmFscyA9IG9uVmFscztcbiAgICAgICAgdGhpcy5hcnJheSA9IG5ldyBBcnJheShsZW5ndGgpLmZpbGwoMCk7XG5cbiAgICAgICAgaWYgKG9uVmFscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9uKC4uLm9uVmFscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3QodmFsdWUpIHtcbiAgICAgICAgdGhpcy5hcnJheS5maWxsKDApO1xuICAgICAgICB0aGlzLmFycmF5W3ZhbHVlXSA9IDE7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5O1xuICAgIH1cblxuICAgIGZsaXAoLi4udmFsdWVzKSB7XG4gICAgICAgIC8vZmxpcHMgdGhlIHNwZWNpZmllZCB2YWx1ZXMuIGlmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCwgZmxpcHMgYWxsIGJ1dHRvbnNcbiAgICAgICAgbGV0IGEgPSB0aGlzLmFycmF5O1xuICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICAgICAgICBpZiAodiA+IGEubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1dhcm5pbmc6IEFub25SYWRpb1snICsgdiArICddIGRvZXMgbm90IGV4aXN0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYVt2XSA9IChhW3ZdID8gMCA6IDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYS5mb3JFYWNoKGZ1bmN0aW9uKHYsIGksIGFycikge1xuICAgICAgICAgICAgICAgIGFycltpXSA9ICh2ID8gMCA6IDEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgb24oLi4udmFsdWVzKSB7XG4gICAgICAgIC8vc3dpdGNoIG9uIHRoZSBzcGVjaWZpZWQgdmFsdWVzLiBpZiBubyB2YWx1ZSBzcGVjaWZpZWQsIGZsaXBzIG9uIGFsbCBidXR0b25zXG4gICAgICAgIGxldCBhID0gdGhpcy5hcnJheTtcbiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaChmdW5jdGlvbih2KSB7XG4gICAgICAgICAgICAgICAgaWYgKHYgPiBhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdXYXJuaW5nOiBBbm9uUmFkaW9bJyArIHYgKyAnXSBleGNlZWRzIHNpemUgb2Ygb2JqZWN0Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFbdl0gPT09IDEpIHsgY29uc29sZS53YXJuKCdXYXJuaW5nOiBBbm9uUmFkaW9bJyArIHYgKyAnXSB3YXMgYWxyZWFkeSBvbi4nKTsgfVxuICAgICAgICAgICAgICAgICAgICBhW3ZdID0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGEuZmlsbCgxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBvZmYoLi4udmFsdWVzKSB7XG4gICAgICAgIC8vc3dpdGNoIG9mZiB0aGUgc3BlY2lmaWVkIHZhbHVlcy4gaWYgbm8gdmFsdWUgc3BlY2lmaWVkLCBmbGlwcyBvZmYgYWxsIGJ1dHRvbnNcbiAgICAgICAgbGV0IGEgPSB0aGlzLmFycmF5O1xuICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICAgICAgICBhW3ZdID0gMDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYS5maWxsKDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL34vanNoaW50LWxvYWRlciEuL2xpYi9tb2RlbHMvcmFkaW8uanMiLCJ2YXIgV0FBQ2xvY2sgPSByZXF1aXJlKCcuL2xpYi9XQUFDbG9jaycpXG5cbm1vZHVsZS5leHBvcnRzID0gV0FBQ2xvY2tcbmlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykgd2luZG93LldBQUNsb2NrID0gV0FBQ2xvY2tcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi93YWFjbG9jay9pbmRleC5qc1xuLy8gbW9kdWxlIGlkID0gNDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwidmFyIGlzQnJvd3NlciA9ICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJylcblxudmFyIENMT0NLX0RFRkFVTFRTID0ge1xuICB0b2xlcmFuY2VMYXRlOiAwLjEwLFxuICB0b2xlcmFuY2VFYXJseTogMC4wMDFcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT0gRXZlbnQgPT09PT09PT09PT09PT09PT09PT0gLy9cbnZhciBFdmVudCA9IGZ1bmN0aW9uKGNsb2NrLCBkZWFkbGluZSwgZnVuYykge1xuICB0aGlzLmNsb2NrID0gY2xvY2tcbiAgdGhpcy5mdW5jID0gZnVuY1xuICB0aGlzLl9jbGVhcmVkID0gZmFsc2UgLy8gRmxhZyB1c2VkIHRvIGNsZWFyIGFuIGV2ZW50IGluc2lkZSBjYWxsYmFja1xuXG4gIHRoaXMudG9sZXJhbmNlTGF0ZSA9IGNsb2NrLnRvbGVyYW5jZUxhdGVcbiAgdGhpcy50b2xlcmFuY2VFYXJseSA9IGNsb2NrLnRvbGVyYW5jZUVhcmx5XG4gIHRoaXMuX2xhdGVzdFRpbWUgPSBudWxsXG4gIHRoaXMuX2VhcmxpZXN0VGltZSA9IG51bGxcbiAgdGhpcy5kZWFkbGluZSA9IG51bGxcbiAgdGhpcy5yZXBlYXRUaW1lID0gbnVsbFxuXG4gIHRoaXMuc2NoZWR1bGUoZGVhZGxpbmUpXG59XG5cbi8vIFVuc2NoZWR1bGVzIHRoZSBldmVudFxuRXZlbnQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuY2xvY2suX3JlbW92ZUV2ZW50KHRoaXMpXG4gIHRoaXMuX2NsZWFyZWQgPSB0cnVlXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIFNldHMgdGhlIGV2ZW50IHRvIHJlcGVhdCBldmVyeSBgdGltZWAgc2Vjb25kcy5cbkV2ZW50LnByb3RvdHlwZS5yZXBlYXQgPSBmdW5jdGlvbih0aW1lKSB7XG4gIGlmICh0aW1lID09PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignZGVsYXkgY2Fubm90IGJlIDAnKVxuICB0aGlzLnJlcGVhdFRpbWUgPSB0aW1lXG4gIGlmICghdGhpcy5jbG9jay5faGFzRXZlbnQodGhpcykpXG4gICAgdGhpcy5zY2hlZHVsZSh0aGlzLmRlYWRsaW5lICsgdGhpcy5yZXBlYXRUaW1lKVxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBTZXRzIHRoZSB0aW1lIHRvbGVyYW5jZSBvZiB0aGUgZXZlbnQuXG4vLyBUaGUgZXZlbnQgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgaW50ZXJ2YWwgYFtkZWFkbGluZSAtIGVhcmx5LCBkZWFkbGluZSArIGxhdGVdYFxuLy8gSWYgdGhlIGNsb2NrIGZhaWxzIHRvIGV4ZWN1dGUgdGhlIGV2ZW50IGluIHRpbWUsIHRoZSBldmVudCB3aWxsIGJlIGRyb3BwZWQuXG5FdmVudC5wcm90b3R5cGUudG9sZXJhbmNlID0gZnVuY3Rpb24odmFsdWVzKSB7XG4gIGlmICh0eXBlb2YgdmFsdWVzLmxhdGUgPT09ICdudW1iZXInKVxuICAgIHRoaXMudG9sZXJhbmNlTGF0ZSA9IHZhbHVlcy5sYXRlXG4gIGlmICh0eXBlb2YgdmFsdWVzLmVhcmx5ID09PSAnbnVtYmVyJylcbiAgICB0aGlzLnRvbGVyYW5jZUVhcmx5ID0gdmFsdWVzLmVhcmx5XG4gIHRoaXMuX3JlZnJlc2hFYXJseUxhdGVEYXRlcygpXG4gIGlmICh0aGlzLmNsb2NrLl9oYXNFdmVudCh0aGlzKSkge1xuICAgIHRoaXMuY2xvY2suX3JlbW92ZUV2ZW50KHRoaXMpXG4gICAgdGhpcy5jbG9jay5faW5zZXJ0RXZlbnQodGhpcylcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGlzIHJlcGVhdGVkLCBmYWxzZSBvdGhlcndpc2VcbkV2ZW50LnByb3RvdHlwZS5pc1JlcGVhdGVkID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLnJlcGVhdFRpbWUgIT09IG51bGwgfVxuXG4vLyBTY2hlZHVsZXMgdGhlIGV2ZW50IHRvIGJlIHJhbiBiZWZvcmUgYGRlYWRsaW5lYC5cbi8vIElmIHRoZSB0aW1lIGlzIHdpdGhpbiB0aGUgZXZlbnQgdG9sZXJhbmNlLCB3ZSBoYW5kbGUgdGhlIGV2ZW50IGltbWVkaWF0ZWx5LlxuLy8gSWYgdGhlIGV2ZW50IHdhcyBhbHJlYWR5IHNjaGVkdWxlZCBhdCBhIGRpZmZlcmVudCB0aW1lLCBpdCBpcyByZXNjaGVkdWxlZC5cbkV2ZW50LnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uKGRlYWRsaW5lKSB7XG4gIHRoaXMuX2NsZWFyZWQgPSBmYWxzZVxuICB0aGlzLmRlYWRsaW5lID0gZGVhZGxpbmVcbiAgdGhpcy5fcmVmcmVzaEVhcmx5TGF0ZURhdGVzKClcblxuICBpZiAodGhpcy5jbG9jay5jb250ZXh0LmN1cnJlbnRUaW1lID49IHRoaXMuX2VhcmxpZXN0VGltZSkge1xuICAgIHRoaXMuX2V4ZWN1dGUoKVxuICBcbiAgfSBlbHNlIGlmICh0aGlzLmNsb2NrLl9oYXNFdmVudCh0aGlzKSkge1xuICAgIHRoaXMuY2xvY2suX3JlbW92ZUV2ZW50KHRoaXMpXG4gICAgdGhpcy5jbG9jay5faW5zZXJ0RXZlbnQodGhpcylcbiAgXG4gIH0gZWxzZSB0aGlzLmNsb2NrLl9pbnNlcnRFdmVudCh0aGlzKVxufVxuXG5FdmVudC5wcm90b3R5cGUudGltZVN0cmV0Y2ggPSBmdW5jdGlvbih0UmVmLCByYXRpbykge1xuICBpZiAodGhpcy5pc1JlcGVhdGVkKCkpXG4gICAgdGhpcy5yZXBlYXRUaW1lID0gdGhpcy5yZXBlYXRUaW1lICogcmF0aW9cblxuICB2YXIgZGVhZGxpbmUgPSB0UmVmICsgcmF0aW8gKiAodGhpcy5kZWFkbGluZSAtIHRSZWYpXG4gIC8vIElmIHRoZSBkZWFkbGluZSBpcyB0b28gY2xvc2Ugb3IgcGFzdCwgYW5kIHRoZSBldmVudCBoYXMgYSByZXBlYXQsXG4gIC8vIHdlIGNhbGN1bGF0ZSB0aGUgbmV4dCByZXBlYXQgcG9zc2libGUgaW4gdGhlIHN0cmV0Y2hlZCBzcGFjZS5cbiAgaWYgKHRoaXMuaXNSZXBlYXRlZCgpKSB7XG4gICAgd2hpbGUgKHRoaXMuY2xvY2suY29udGV4dC5jdXJyZW50VGltZSA+PSBkZWFkbGluZSAtIHRoaXMudG9sZXJhbmNlRWFybHkpXG4gICAgICBkZWFkbGluZSArPSB0aGlzLnJlcGVhdFRpbWVcbiAgfVxuICB0aGlzLnNjaGVkdWxlKGRlYWRsaW5lKVxufVxuXG4vLyBFeGVjdXRlcyB0aGUgZXZlbnRcbkV2ZW50LnByb3RvdHlwZS5fZXhlY3V0ZSA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5jbG9jay5fc3RhcnRlZCA9PT0gZmFsc2UpIHJldHVyblxuICB0aGlzLmNsb2NrLl9yZW1vdmVFdmVudCh0aGlzKVxuXG4gIGlmICh0aGlzLmNsb2NrLmNvbnRleHQuY3VycmVudFRpbWUgPCB0aGlzLl9sYXRlc3RUaW1lKVxuICAgIHRoaXMuZnVuYyh0aGlzKVxuICBlbHNlIHtcbiAgICBpZiAodGhpcy5vbmV4cGlyZWQpIHRoaXMub25leHBpcmVkKHRoaXMpXG4gICAgY29uc29sZS53YXJuKCdldmVudCBleHBpcmVkJylcbiAgfVxuICAvLyBJbiB0aGUgY2FzZSBgc2NoZWR1bGVgIGlzIGNhbGxlZCBpbnNpZGUgYGZ1bmNgLCB3ZSBuZWVkIHRvIGF2b2lkXG4gIC8vIG92ZXJyd3JpdGluZyB3aXRoIHlldCBhbm90aGVyIGBzY2hlZHVsZWAuXG4gIGlmICghdGhpcy5jbG9jay5faGFzRXZlbnQodGhpcykgJiYgdGhpcy5pc1JlcGVhdGVkKCkgJiYgIXRoaXMuX2NsZWFyZWQpXG4gICAgdGhpcy5zY2hlZHVsZSh0aGlzLmRlYWRsaW5lICsgdGhpcy5yZXBlYXRUaW1lKSBcbn1cblxuLy8gVXBkYXRlcyBjYWNoZWQgdGltZXNcbkV2ZW50LnByb3RvdHlwZS5fcmVmcmVzaEVhcmx5TGF0ZURhdGVzID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX2xhdGVzdFRpbWUgPSB0aGlzLmRlYWRsaW5lICsgdGhpcy50b2xlcmFuY2VMYXRlXG4gIHRoaXMuX2VhcmxpZXN0VGltZSA9IHRoaXMuZGVhZGxpbmUgLSB0aGlzLnRvbGVyYW5jZUVhcmx5XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09IFdBQUNsb2NrID09PT09PT09PT09PT09PT09PT09IC8vXG52YXIgV0FBQ2xvY2sgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGNvbnRleHQsIG9wdHMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIG9wdHMgPSBvcHRzIHx8IHt9XG4gIHRoaXMudGlja01ldGhvZCA9IG9wdHMudGlja01ldGhvZCB8fCAnU2NyaXB0UHJvY2Vzc29yTm9kZSdcbiAgdGhpcy50b2xlcmFuY2VFYXJseSA9IG9wdHMudG9sZXJhbmNlRWFybHkgfHwgQ0xPQ0tfREVGQVVMVFMudG9sZXJhbmNlRWFybHlcbiAgdGhpcy50b2xlcmFuY2VMYXRlID0gb3B0cy50b2xlcmFuY2VMYXRlIHx8IENMT0NLX0RFRkFVTFRTLnRvbGVyYW5jZUxhdGVcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dFxuICB0aGlzLl9ldmVudHMgPSBbXVxuICB0aGlzLl9zdGFydGVkID0gZmFsc2Vcbn1cblxuLy8gLS0tLS0tLS0tLSBQdWJsaWMgQVBJIC0tLS0tLS0tLS0gLy9cbi8vIFNjaGVkdWxlcyBgZnVuY2AgdG8gcnVuIGFmdGVyIGBkZWxheWAgc2Vjb25kcy5cbldBQUNsb2NrLnByb3RvdHlwZS5zZXRUaW1lb3V0ID0gZnVuY3Rpb24oZnVuYywgZGVsYXkpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUV2ZW50KGZ1bmMsIHRoaXMuX2Fic1RpbWUoZGVsYXkpKVxufVxuXG4vLyBTY2hlZHVsZXMgYGZ1bmNgIHRvIHJ1biBiZWZvcmUgYGRlYWRsaW5lYC5cbldBQUNsb2NrLnByb3RvdHlwZS5jYWxsYmFja0F0VGltZSA9IGZ1bmN0aW9uKGZ1bmMsIGRlYWRsaW5lKSB7XG4gIHJldHVybiB0aGlzLl9jcmVhdGVFdmVudChmdW5jLCBkZWFkbGluZSlcbn1cblxuLy8gU3RyZXRjaGVzIGBkZWFkbGluZWAgYW5kIGByZXBlYXRgIG9mIGFsbCBzY2hlZHVsZWQgYGV2ZW50c2AgYnkgYHJhdGlvYCwga2VlcGluZ1xuLy8gdGhlaXIgcmVsYXRpdmUgZGlzdGFuY2UgdG8gYHRSZWZgLiBJbiBmYWN0IHRoaXMgaXMgZXF1aXZhbGVudCB0byBjaGFuZ2luZyB0aGUgdGVtcG8uXG5XQUFDbG9jay5wcm90b3R5cGUudGltZVN0cmV0Y2ggPSBmdW5jdGlvbih0UmVmLCBldmVudHMsIHJhdGlvKSB7XG4gIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGV2ZW50KSB7IGV2ZW50LnRpbWVTdHJldGNoKHRSZWYsIHJhdGlvKSB9KVxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8vIFJlbW92ZXMgYWxsIHNjaGVkdWxlZCBldmVudHMgYW5kIHN0YXJ0cyB0aGUgY2xvY2sgXG5XQUFDbG9jay5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuX3N0YXJ0ZWQgPT09IGZhbHNlKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzXG4gICAgdGhpcy5fc3RhcnRlZCA9IHRydWVcbiAgICB0aGlzLl9ldmVudHMgPSBbXVxuXG4gICAgaWYgKHRoaXMudGlja01ldGhvZCA9PT0gJ1NjcmlwdFByb2Nlc3Nvck5vZGUnKSB7XG4gICAgICB2YXIgYnVmZmVyU2l6ZSA9IDI1NlxuICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBub2RlIHRvIGF2b2lkIGdhcmJhZ2UgY29sbGVjdGlvblxuICAgICAgdGhpcy5fY2xvY2tOb2RlID0gdGhpcy5jb250ZXh0LmNyZWF0ZVNjcmlwdFByb2Nlc3NvcihidWZmZXJTaXplLCAxLCAxKVxuICAgICAgdGhpcy5fY2xvY2tOb2RlLmNvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKVxuICAgICAgdGhpcy5fY2xvY2tOb2RlLm9uYXVkaW9wcm9jZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCkgeyBzZWxmLl90aWNrKCkgfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudGlja01ldGhvZCA9PT0gJ21hbnVhbCcpIG51bGwgLy8gX3RpY2sgaXMgY2FsbGVkIG1hbnVhbGx5XG5cbiAgICBlbHNlIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB0aWNrTWV0aG9kICcgKyB0aGlzLnRpY2tNZXRob2QpXG4gIH1cbn1cblxuLy8gU3RvcHMgdGhlIGNsb2NrXG5XQUFDbG9jay5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5fc3RhcnRlZCA9PT0gdHJ1ZSkge1xuICAgIHRoaXMuX3N0YXJ0ZWQgPSBmYWxzZVxuICAgIHRoaXMuX2Nsb2NrTm9kZS5kaXNjb25uZWN0KClcbiAgfSAgXG59XG5cbi8vIC0tLS0tLS0tLS0gUHJpdmF0ZSAtLS0tLS0tLS0tIC8vXG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgcmFuIHBlcmlvZGljYWxseSwgYW5kIGF0IGVhY2ggdGljayBpdCBleGVjdXRlc1xuLy8gZXZlbnRzIGZvciB3aGljaCBgY3VycmVudFRpbWVgIGlzIGluY2x1ZGVkIGluIHRoZWlyIHRvbGVyYW5jZSBpbnRlcnZhbC5cbldBQUNsb2NrLnByb3RvdHlwZS5fdGljayA9IGZ1bmN0aW9uKCkge1xuICB2YXIgZXZlbnQgPSB0aGlzLl9ldmVudHMuc2hpZnQoKVxuXG4gIHdoaWxlKGV2ZW50ICYmIGV2ZW50Ll9lYXJsaWVzdFRpbWUgPD0gdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lKSB7XG4gICAgZXZlbnQuX2V4ZWN1dGUoKVxuICAgIGV2ZW50ID0gdGhpcy5fZXZlbnRzLnNoaWZ0KClcbiAgfVxuXG4gIC8vIFB1dCBiYWNrIHRoZSBsYXN0IGV2ZW50XG4gIGlmKGV2ZW50KSB0aGlzLl9ldmVudHMudW5zaGlmdChldmVudClcbn1cblxuLy8gQ3JlYXRlcyBhbiBldmVudCBhbmQgaW5zZXJ0IGl0IHRvIHRoZSBsaXN0XG5XQUFDbG9jay5wcm90b3R5cGUuX2NyZWF0ZUV2ZW50ID0gZnVuY3Rpb24oZnVuYywgZGVhZGxpbmUpIHtcbiAgcmV0dXJuIG5ldyBFdmVudCh0aGlzLCBkZWFkbGluZSwgZnVuYylcbn1cblxuLy8gSW5zZXJ0cyBhbiBldmVudCB0byB0aGUgbGlzdFxuV0FBQ2xvY2sucHJvdG90eXBlLl9pbnNlcnRFdmVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gIHRoaXMuX2V2ZW50cy5zcGxpY2UodGhpcy5faW5kZXhCeVRpbWUoZXZlbnQuX2VhcmxpZXN0VGltZSksIDAsIGV2ZW50KVxufVxuXG4vLyBSZW1vdmVzIGFuIGV2ZW50IGZyb20gdGhlIGxpc3RcbldBQUNsb2NrLnByb3RvdHlwZS5fcmVtb3ZlRXZlbnQgPSBmdW5jdGlvbihldmVudCkge1xuICB2YXIgaW5kID0gdGhpcy5fZXZlbnRzLmluZGV4T2YoZXZlbnQpXG4gIGlmIChpbmQgIT09IC0xKSB0aGlzLl9ldmVudHMuc3BsaWNlKGluZCwgMSlcbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIGBldmVudGAgaXMgaW4gcXVldWUsIGZhbHNlIG90aGVyd2lzZVxuV0FBQ2xvY2sucHJvdG90eXBlLl9oYXNFdmVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gcmV0dXJuIHRoaXMuX2V2ZW50cy5pbmRleE9mKGV2ZW50KSAhPT0gLTFcbn1cblxuLy8gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGV2ZW50IHdob3NlIGRlYWRsaW5lIGlzID49IHRvIGBkZWFkbGluZWBcbldBQUNsb2NrLnByb3RvdHlwZS5faW5kZXhCeVRpbWUgPSBmdW5jdGlvbihkZWFkbGluZSkge1xuICAvLyBwZXJmb3JtcyBhIGJpbmFyeSBzZWFyY2hcbiAgdmFyIGxvdyA9IDBcbiAgICAsIGhpZ2ggPSB0aGlzLl9ldmVudHMubGVuZ3RoXG4gICAgLCBtaWRcbiAgd2hpbGUgKGxvdyA8IGhpZ2gpIHtcbiAgICBtaWQgPSBNYXRoLmZsb29yKChsb3cgKyBoaWdoKSAvIDIpXG4gICAgaWYgKHRoaXMuX2V2ZW50c1ttaWRdLl9lYXJsaWVzdFRpbWUgPCBkZWFkbGluZSlcbiAgICAgIGxvdyA9IG1pZCArIDFcbiAgICBlbHNlIGhpZ2ggPSBtaWRcbiAgfVxuICByZXR1cm4gbG93XG59XG5cbi8vIENvbnZlcnRzIGZyb20gcmVsYXRpdmUgdGltZSB0byBhYnNvbHV0ZSB0aW1lXG5XQUFDbG9jay5wcm90b3R5cGUuX2Fic1RpbWUgPSBmdW5jdGlvbihyZWxUaW1lKSB7XG4gIHJldHVybiByZWxUaW1lICsgdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lXG59XG5cbi8vIENvbnZlcnRzIGZyb20gYWJzb2x1dGUgdGltZSB0byByZWxhdGl2ZSB0aW1lIFxuV0FBQ2xvY2sucHJvdG90eXBlLl9yZWxUaW1lID0gZnVuY3Rpb24oYWJzVGltZSkge1xuICByZXR1cm4gYWJzVGltZSAtIHRoaXMuY29udGV4dC5jdXJyZW50VGltZVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vfi93YWFjbG9jay9saWIvV0FBQ2xvY2suanNcbi8vIG1vZHVsZSBpZCA9IDQzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL34vcHJvY2Vzcy9icm93c2VyLmpzXG4vLyBtb2R1bGUgaWQgPSA0NFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9
diff --git a/site/code/svg.js b/site/code/svg.js
new file mode 100644
index 0000000..e0097ed
--- /dev/null
+++ b/site/code/svg.js
@@ -0,0 +1,13 @@
+/*! @svgdotjs/svg.js v3.2.4 MIT*/;
+/*!
+* @svgdotjs/svg.js - A lightweight library for manipulating and animating SVG.
+* @version 3.2.4
+* https://svgjs.dev/
+*
+* @copyright Wout Fierens <wout@mick-wout.com>
+* @license MIT
+*
+* BUILT: Thu Jun 27 2024 12:00:16 GMT+0200 (Central European Summer Time)
+*/
+var SVG=function(){"use strict";const t={},e=[];function n(e,i){if(Array.isArray(e))for(const t of e)n(t,i);else if("object"!=typeof e)r(Object.getOwnPropertyNames(i)),t[e]=Object.assign(t[e]||{},i);else for(const t in e)n(t,e[t])}function i(e){return t[e]||{}}function r(t){e.push(...t)}function s(t,e){let n;const i=t.length,r=[];for(n=0;n<i;n++)r.push(e(t[n]));return r}function o(t,e){let n;const i=t.length,r=[];for(n=0;n<i;n++)e(t[n])&&r.push(t[n]);return r}function h(t){return t%360*Math.PI/180}function u(t){return t.replace(/([A-Z])/g,(function(t,e){return"-"+e.toLowerCase()}))}function a(t){return t.charAt(0).toUpperCase()+t.slice(1)}function l(t,e,n,i){return null!=e&&null!=n||(i=i||t.bbox(),null==e?e=i.width/i.height*n:null==n&&(n=i.height/i.width*e)),{width:e,height:n}}function c(t,e){const n=t.origin;let i=null!=t.ox?t.ox:null!=t.originX?t.originX:"center",r=null!=t.oy?t.oy:null!=t.originY?t.originY:"center";null!=n&&([i,r]=Array.isArray(n)?n:"object"==typeof n?[n.x,n.y]:[n,n]);const s="string"==typeof i,o="string"==typeof r;if(s||o){const{height:t,width:n,x:h,y:u}=e.bbox();s&&(i=i.includes("left")?h:i.includes("right")?h+n:h+n/2),o&&(r=r.includes("top")?u:r.includes("bottom")?u+t:u+t/2)}return[i,r]}const f=new Set(["desc","metadata","title"]),d=t=>f.has(t.nodeName),m=(t,e,n={})=>{const i={...e};for(const t in i)i[t].valueOf()===n[t]&&delete i[t];Object.keys(i).length?t.node.setAttribute("data-svgjs",JSON.stringify(i)):(t.node.removeAttribute("data-svgjs"),t.node.removeAttribute("svgjs:data"))};var p={__proto__:null,capitalize:a,degrees:function(t){return 180*t/Math.PI%360},filter:o,getOrigin:c,isDescriptive:d,map:s,proportionalSize:l,radians:h,unCamelCase:u,writeDataToDom:m};const y="http://www.w3.org/2000/svg",w="http://www.w3.org/1999/xhtml",g="http://www.w3.org/2000/xmlns/",_="http://www.w3.org/1999/xlink";var x={__proto__:null,html:w,svg:y,xlink:_,xmlns:g};const b={window:"undefined"==typeof window?null:window,document:"undefined"==typeof document?null:document};function v(t=null,e=null){b.window=t,b.document=e}const M={};function O(){M.window=b.window,M.document=b.document}function k(){b.window=M.window,b.document=M.document}function T(){return b.window}class C{}const N={},S="___SYMBOL___ROOT___";function E(t,e=y){return b.document.createElementNS(e,t)}function j(t,e=!1){if(t instanceof C)return t;if("object"==typeof t)return z(t);if(null==t)return new N[S];if("string"==typeof t&&"<"!==t.charAt(0))return z(b.document.querySelector(t));const n=e?b.document.createElement("div"):E("svg");return n.innerHTML=t,t=z(n.firstChild),n.removeChild(n.firstChild),t}function D(t,e){return e&&(e instanceof b.window.Node||e.ownerDocument&&e instanceof e.ownerDocument.defaultView.Node)?e:E(t)}function I(t){if(!t)return null;if(t.instance instanceof C)return t.instance;if("#document-fragment"===t.nodeName)return new N.Fragment(t);let e=a(t.nodeName||"Dom");return"LinearGradient"===e||"RadialGradient"===e?e="Gradient":N[e]||(e="Dom"),new N[e](t)}let z=I;function P(t,e=t.name,n=!1){return N[e]=t,n&&(N[S]=t),r(Object.getOwnPropertyNames(t.prototype)),t}function R(t){return N[t]}let L=1e3;function q(t){return"Svgjs"+a(t)+L++}function F(t){for(let e=t.children.length-1;e>=0;e--)F(t.children[e]);return t.id?(t.id=q(t.nodeName),t):t}function X(t,e){let n,i;for(i=(t=Array.isArray(t)?t:[t]).length-1;i>=0;i--)for(n in e)t[i].prototype[n]=e[n]}function Y(t){return function(...e){const n=e[e.length-1];return!n||n.constructor!==Object||n instanceof Array?t.apply(this,e):t.apply(this,e.slice(0,-1)).attr(n)}}n("Dom",{siblings:function(){return this.parent().children()},position:function(){return this.parent().index(this)},next:function(){return this.siblings()[this.position()+1]},prev:function(){return this.siblings()[this.position()-1]},forward:function(){const t=this.position();return this.parent().add(this.remove(),t+1),this},backward:function(){const t=this.position();return this.parent().add(this.remove(),t?t-1:0),this},front:function(){return this.parent().add(this.remove()),this},back:function(){return this.parent().add(this.remove(),0),this},before:function(t){(t=j(t)).remove();const e=this.position();return this.parent().add(t,e),this},after:function(t){(t=j(t)).remove();const e=this.position();return this.parent().add(t,e+1),this},insertBefore:function(t){return(t=j(t)).before(this),this},insertAfter:function(t){return(t=j(t)).after(this),this}});const B=/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,H=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,V=/rgb\((\d+),(\d+),(\d+)\)/,$=/(#[a-z_][a-z0-9\-_]*)/i,U=/\)\s*,?\s*/,W=/\s/g,Q=/^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i,J=/^rgb\(/,Z=/^(\s+)?$/,K=/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,tt=/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,et=/[\s,]+/,nt=/[MLHVCSQTAZ]/i;var it={__proto__:null,delimiter:et,hex:H,isBlank:Z,isHex:Q,isImage:tt,isNumber:K,isPathLetter:nt,isRgb:J,numberAndUnit:B,reference:$,rgb:V,transforms:U,whitespace:W};function rt(t){const e=Math.round(t),n=Math.max(0,Math.min(255,e)).toString(16);return 1===n.length?"0"+n:n}function st(t,e){for(let n=e.length;n--;)if(null==t[e[n]])return!1;return!0}function ot(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}n("Dom",{classes:function(){const t=this.attr("class");return null==t?[]:t.trim().split(et)},hasClass:function(t){return-1!==this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){const e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!==t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)}}),n("Dom",{css:function(t,e){const n={};if(0===arguments.length)return this.node.style.cssText.split(/\s*;\s*/).filter((function(t){return!!t.length})).forEach((function(t){const e=t.split(/\s*:\s*/);n[e[0]]=e[1]})),n;if(arguments.length<2){if(Array.isArray(t)){for(const e of t){const t=e;n[e]=this.node.style.getPropertyValue(t)}return n}if("string"==typeof t)return this.node.style.getPropertyValue(t);if("object"==typeof t)for(const e in t)this.node.style.setProperty(e,null==t[e]||Z.test(t[e])?"":t[e])}return 2===arguments.length&&this.node.style.setProperty(t,null==e||Z.test(e)?"":e),this},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},visible:function(){return"none"!==this.css("display")}}),n("Dom",{data:function(t,e,n){if(null==t)return this.data(s(o(this.node.attributes,(t=>0===t.nodeName.indexOf("data-"))),(t=>t.nodeName.slice(5))));if(t instanceof Array){const e={};for(const n of t)e[n]=this.data(n);return e}if("object"==typeof t)for(e in t)this.data(e,t[e]);else if(arguments.length<2)try{return JSON.parse(this.attr("data-"+t))}catch(e){return this.attr("data-"+t)}else this.attr("data-"+t,null===e?null:!0===n||"string"==typeof e||"number"==typeof e?e:JSON.stringify(e));return this}}),n("Dom",{remember:function(t,e){if("object"==typeof arguments[0])for(const e in t)this.remember(e,t[e]);else{if(1===arguments.length)return this.memory()[t];this.memory()[t]=e}return this},forget:function(){if(0===arguments.length)this._memory={};else for(let t=arguments.length-1;t>=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory=this._memory||{}}});class ht{constructor(...t){this.init(...t)}static isColor(t){return t&&(t instanceof ht||this.isRgb(t)||this.test(t))}static isRgb(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b}static random(t="vibrant",e){const{random:n,round:i,sin:r,PI:s}=Math;if("vibrant"===t){const t=24*n()+57,e=38*n()+45,i=360*n();return new ht(t,e,i,"lch")}if("sine"===t){const t=i(80*r(2*s*(e=null==e?n():e)/.5+.01)+150),o=i(50*r(2*s*e/.5+4.6)+200),h=i(100*r(2*s*e/.5+2.3)+150);return new ht(t,o,h)}if("pastel"===t){const t=8*n()+86,e=17*n()+9,i=360*n();return new ht(t,e,i,"lch")}if("dark"===t){const t=10+10*n(),e=50*n()+86,i=360*n();return new ht(t,e,i,"lch")}if("rgb"===t){const t=255*n(),e=255*n(),i=255*n();return new ht(t,e,i)}if("lab"===t){const t=100*n(),e=256*n()-128,i=256*n()-128;return new ht(t,e,i,"lab")}if("grey"===t){const t=255*n();return new ht(t,t,t)}throw new Error("Unsupported random color mode")}static test(t){return"string"==typeof t&&(Q.test(t)||J.test(t))}cmyk(){const{_a:t,_b:e,_c:n}=this.rgb(),[i,r,s]=[t,e,n].map((t=>t/255)),o=Math.min(1-i,1-r,1-s);if(1===o)return new ht(0,0,0,1,"cmyk");return new ht((1-i-o)/(1-o),(1-r-o)/(1-o),(1-s-o)/(1-o),o,"cmyk")}hsl(){const{_a:t,_b:e,_c:n}=this.rgb(),[i,r,s]=[t,e,n].map((t=>t/255)),o=Math.max(i,r,s),h=Math.min(i,r,s),u=(o+h)/2,a=o===h,l=o-h;return new ht(360*(a?0:o===i?((r-s)/l+(r<s?6:0))/6:o===r?((s-i)/l+2)/6:o===s?((i-r)/l+4)/6:0),100*(a?0:u>.5?l/(2-o-h):l/(o+h)),100*u,"hsl")}init(t=0,e=0,n=0,i=0,r="rgb"){if(t=t||0,this.space)for(const t in this.space)delete this[this.space[t]];if("number"==typeof t)r="string"==typeof i?i:r,i="string"==typeof i?0:i,Object.assign(this,{_a:t,_b:e,_c:n,_d:i,space:r});else if(t instanceof Array)this.space=e||("string"==typeof t[3]?t[3]:t[4])||"rgb",Object.assign(this,{_a:t[0],_b:t[1],_c:t[2],_d:t[3]||0});else if(t instanceof Object){const n=function(t,e){const n=st(t,"rgb")?{_a:t.r,_b:t.g,_c:t.b,_d:0,space:"rgb"}:st(t,"xyz")?{_a:t.x,_b:t.y,_c:t.z,_d:0,space:"xyz"}:st(t,"hsl")?{_a:t.h,_b:t.s,_c:t.l,_d:0,space:"hsl"}:st(t,"lab")?{_a:t.l,_b:t.a,_c:t.b,_d:0,space:"lab"}:st(t,"lch")?{_a:t.l,_b:t.c,_c:t.h,_d:0,space:"lch"}:st(t,"cmyk")?{_a:t.c,_b:t.m,_c:t.y,_d:t.k,space:"cmyk"}:{_a:0,_b:0,_c:0,space:"rgb"};return n.space=e||n.space,n}(t,e);Object.assign(this,n)}else if("string"==typeof t)if(J.test(t)){const e=t.replace(W,""),[n,i,r]=V.exec(e).slice(1,4).map((t=>parseInt(t)));Object.assign(this,{_a:n,_b:i,_c:r,_d:0,space:"rgb"})}else{if(!Q.test(t))throw Error("Unsupported string format, can't construct Color");{const e=t=>parseInt(t,16),[,n,i,r]=H.exec(function(t){return 4===t.length?["#",t.substring(1,2),t.substring(1,2),t.substring(2,3),t.substring(2,3),t.substring(3,4),t.substring(3,4)].join(""):t}(t)).map(e);Object.assign(this,{_a:n,_b:i,_c:r,_d:0,space:"rgb"})}}const{_a:s,_b:o,_c:h,_d:u}=this,a="rgb"===this.space?{r:s,g:o,b:h}:"xyz"===this.space?{x:s,y:o,z:h}:"hsl"===this.space?{h:s,s:o,l:h}:"lab"===this.space?{l:s,a:o,b:h}:"lch"===this.space?{l:s,c:o,h:h}:"cmyk"===this.space?{c:s,m:o,y:h,k:u}:{};Object.assign(this,a)}lab(){const{x:t,y:e,z:n}=this.xyz();return new ht(116*e-16,500*(t-e),200*(e-n),"lab")}lch(){const{l:t,a:e,b:n}=this.lab(),i=Math.sqrt(e**2+n**2);let r=180*Math.atan2(n,e)/Math.PI;r<0&&(r*=-1,r=360-r);return new ht(t,i,r,"lch")}rgb(){if("rgb"===this.space)return this;if("lab"===(t=this.space)||"xyz"===t||"lch"===t){let{x:t,y:e,z:n}=this;if("lab"===this.space||"lch"===this.space){let{l:i,a:r,b:s}=this;if("lch"===this.space){const{c:t,h:e}=this,n=Math.PI/180;r=t*Math.cos(n*e),s=t*Math.sin(n*e)}const o=(i+16)/116,h=r/500+o,u=o-s/200,a=16/116,l=.008856,c=7.787;t=.95047*(h**3>l?h**3:(h-a)/c),e=1*(o**3>l?o**3:(o-a)/c),n=1.08883*(u**3>l?u**3:(u-a)/c)}const i=3.2406*t+-1.5372*e+-.4986*n,r=-.9689*t+1.8758*e+.0415*n,s=.0557*t+-.204*e+1.057*n,o=Math.pow,h=.0031308,u=i>h?1.055*o(i,1/2.4)-.055:12.92*i,a=r>h?1.055*o(r,1/2.4)-.055:12.92*r,l=s>h?1.055*o(s,1/2.4)-.055:12.92*s;return new ht(255*u,255*a,255*l)}if("hsl"===this.space){let{h:t,s:e,l:n}=this;if(t/=360,e/=100,n/=100,0===e){n*=255;return new ht(n,n,n)}const i=n<.5?n*(1+e):n+e-n*e,r=2*n-i,s=255*ot(r,i,t+1/3),o=255*ot(r,i,t),h=255*ot(r,i,t-1/3);return new ht(s,o,h)}if("cmyk"===this.space){const{c:t,m:e,y:n,k:i}=this,r=255*(1-Math.min(1,t*(1-i)+i)),s=255*(1-Math.min(1,e*(1-i)+i)),o=255*(1-Math.min(1,n*(1-i)+i));return new ht(r,s,o)}return this;var t}toArray(){const{_a:t,_b:e,_c:n,_d:i,space:r}=this;return[t,e,n,i,r]}toHex(){const[t,e,n]=this._clamped().map(rt);return`#${t}${e}${n}`}toRgb(){const[t,e,n]=this._clamped();return`rgb(${t},${e},${n})`}toString(){return this.toHex()}xyz(){const{_a:t,_b:e,_c:n}=this.rgb(),[i,r,s]=[t,e,n].map((t=>t/255)),o=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92,h=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,u=s>.04045?Math.pow((s+.055)/1.055,2.4):s/12.92,a=(.4124*o+.3576*h+.1805*u)/.95047,l=(.2126*o+.7152*h+.0722*u)/1,c=(.0193*o+.1192*h+.9505*u)/1.08883,f=a>.008856?Math.pow(a,1/3):7.787*a+16/116,d=l>.008856?Math.pow(l,1/3):7.787*l+16/116,m=c>.008856?Math.pow(c,1/3):7.787*c+16/116;return new ht(f,d,m,"xyz")}_clamped(){const{_a:t,_b:e,_c:n}=this.rgb(),{max:i,min:r,round:s}=Math;return[t,e,n].map((t=>i(0,r(s(t),255))))}}class ut{constructor(...t){this.init(...t)}clone(){return new ut(this)}init(t,e){const n=0,i=0,r=Array.isArray(t)?{x:t[0],y:t[1]}:"object"==typeof t?{x:t.x,y:t.y}:{x:t,y:e};return this.x=null==r.x?n:r.x,this.y=null==r.y?i:r.y,this}toArray(){return[this.x,this.y]}transform(t){return this.clone().transformO(t)}transformO(t){lt.isMatrixLike(t)||(t=new lt(t));const{x:e,y:n}=this;return this.x=t.a*e+t.c*n+t.e,this.y=t.b*e+t.d*n+t.f,this}}function at(t,e,n){return Math.abs(e-t)<1e-6}class lt{constructor(...t){this.init(...t)}static formatTransforms(t){const e="both"===t.flip||!0===t.flip,n=t.flip&&(e||"x"===t.flip)?-1:1,i=t.flip&&(e||"y"===t.flip)?-1:1,r=t.skew&&t.skew.length?t.skew[0]:isFinite(t.skew)?t.skew:isFinite(t.skewX)?t.skewX:0,s=t.skew&&t.skew.length?t.skew[1]:isFinite(t.skew)?t.skew:isFinite(t.skewY)?t.skewY:0,o=t.scale&&t.scale.length?t.scale[0]*n:isFinite(t.scale)?t.scale*n:isFinite(t.scaleX)?t.scaleX*n:n,h=t.scale&&t.scale.length?t.scale[1]*i:isFinite(t.scale)?t.scale*i:isFinite(t.scaleY)?t.scaleY*i:i,u=t.shear||0,a=t.rotate||t.theta||0,l=new ut(t.origin||t.around||t.ox||t.originX,t.oy||t.originY),c=l.x,f=l.y,d=new ut(t.position||t.px||t.positionX||NaN,t.py||t.positionY||NaN),m=d.x,p=d.y,y=new ut(t.translate||t.tx||t.translateX,t.ty||t.translateY),w=y.x,g=y.y,_=new ut(t.relative||t.rx||t.relativeX,t.ry||t.relativeY);return{scaleX:o,scaleY:h,skewX:r,skewY:s,shear:u,theta:a,rx:_.x,ry:_.y,tx:w,ty:g,ox:c,oy:f,px:m,py:p}}static fromArray(t){return{a:t[0],b:t[1],c:t[2],d:t[3],e:t[4],f:t[5]}}static isMatrixLike(t){return null!=t.a||null!=t.b||null!=t.c||null!=t.d||null!=t.e||null!=t.f}static matrixMultiply(t,e,n){const i=t.a*e.a+t.c*e.b,r=t.b*e.a+t.d*e.b,s=t.a*e.c+t.c*e.d,o=t.b*e.c+t.d*e.d,h=t.e+t.a*e.e+t.c*e.f,u=t.f+t.b*e.e+t.d*e.f;return n.a=i,n.b=r,n.c=s,n.d=o,n.e=h,n.f=u,n}around(t,e,n){return this.clone().aroundO(t,e,n)}aroundO(t,e,n){const i=t||0,r=e||0;return this.translateO(-i,-r).lmultiplyO(n).translateO(i,r)}clone(){return new lt(this)}decompose(t=0,e=0){const n=this.a,i=this.b,r=this.c,s=this.d,o=this.e,h=this.f,u=n*s-i*r,a=u>0?1:-1,l=a*Math.sqrt(n*n+i*i),c=Math.atan2(a*i,a*n),f=180/Math.PI*c,d=Math.cos(c),m=Math.sin(c),p=(n*r+i*s)/u,y=r*l/(p*n-i)||s*l/(p*i+n);return{scaleX:l,scaleY:y,shear:p,rotate:f,translateX:o-t+t*d*l+e*(p*d*l-m*y),translateY:h-e+t*m*l+e*(p*m*l+d*y),originX:t,originY:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}equals(t){if(t===this)return!0;const e=new lt(t);return at(this.a,e.a)&&at(this.b,e.b)&&at(this.c,e.c)&&at(this.d,e.d)&&at(this.e,e.e)&&at(this.f,e.f)}flip(t,e){return this.clone().flipO(t,e)}flipO(t,e){return"x"===t?this.scaleO(-1,1,e,0):"y"===t?this.scaleO(1,-1,0,e):this.scaleO(-1,-1,t,e||t)}init(t){const e=lt.fromArray([1,0,0,1,0,0]);return t=t instanceof Element?t.matrixify():"string"==typeof t?lt.fromArray(t.split(et).map(parseFloat)):Array.isArray(t)?lt.fromArray(t):"object"==typeof t&&lt.isMatrixLike(t)?t:"object"==typeof t?(new lt).transform(t):6===arguments.length?lt.fromArray([].slice.call(arguments)):e,this.a=null!=t.a?t.a:e.a,this.b=null!=t.b?t.b:e.b,this.c=null!=t.c?t.c:e.c,this.d=null!=t.d?t.d:e.d,this.e=null!=t.e?t.e:e.e,this.f=null!=t.f?t.f:e.f,this}inverse(){return this.clone().inverseO()}inverseO(){const t=this.a,e=this.b,n=this.c,i=this.d,r=this.e,s=this.f,o=t*i-e*n;if(!o)throw new Error("Cannot invert "+this);const h=i/o,u=-e/o,a=-n/o,l=t/o,c=-(h*r+a*s),f=-(u*r+l*s);return this.a=h,this.b=u,this.c=a,this.d=l,this.e=c,this.f=f,this}lmultiply(t){return this.clone().lmultiplyO(t)}lmultiplyO(t){const e=t instanceof lt?t:new lt(t);return lt.matrixMultiply(e,this,this)}multiply(t){return this.clone().multiplyO(t)}multiplyO(t){const e=t instanceof lt?t:new lt(t);return lt.matrixMultiply(this,e,this)}rotate(t,e,n){return this.clone().rotateO(t,e,n)}rotateO(t,e=0,n=0){t=h(t);const i=Math.cos(t),r=Math.sin(t),{a:s,b:o,c:u,d:a,e:l,f:c}=this;return this.a=s*i-o*r,this.b=o*i+s*r,this.c=u*i-a*r,this.d=a*i+u*r,this.e=l*i-c*r+n*r-e*i+e,this.f=c*i+l*r-e*r-n*i+n,this}scale(){return this.clone().scaleO(...arguments)}scaleO(t,e=t,n=0,i=0){3===arguments.length&&(i=n,n=e,e=t);const{a:r,b:s,c:o,d:h,e:u,f:a}=this;return this.a=r*t,this.b=s*e,this.c=o*t,this.d=h*e,this.e=u*t-n*t+n,this.f=a*e-i*e+i,this}shear(t,e,n){return this.clone().shearO(t,e,n)}shearO(t,e=0,n=0){const{a:i,b:r,c:s,d:o,e:h,f:u}=this;return this.a=i+r*t,this.c=s+o*t,this.e=h+u*t-n*t,this}skew(){return this.clone().skewO(...arguments)}skewO(t,e=t,n=0,i=0){3===arguments.length&&(i=n,n=e,e=t),t=h(t),e=h(e);const r=Math.tan(t),s=Math.tan(e),{a:o,b:u,c:a,d:l,e:c,f:f}=this;return this.a=o+u*r,this.b=u+o*s,this.c=a+l*r,this.d=l+a*s,this.e=c+f*r-i*r,this.f=f+c*s-n*s,this}skewX(t,e,n){return this.skew(t,0,e,n)}skewY(t,e,n){return this.skew(0,t,e,n)}toArray(){return[this.a,this.b,this.c,this.d,this.e,this.f]}toString(){return"matrix("+this.a+","+this.b+","+this.c+","+this.d+","+this.e+","+this.f+")"}transform(t){if(lt.isMatrixLike(t)){return new lt(t).multiplyO(this)}const e=lt.formatTransforms(t),{x:n,y:i}=new ut(e.ox,e.oy).transform(this),r=(new lt).translateO(e.rx,e.ry).lmultiplyO(this).translateO(-n,-i).scaleO(e.scaleX,e.scaleY).skewO(e.skewX,e.skewY).shearO(e.shear).rotateO(e.theta).translateO(n,i);if(isFinite(e.px)||isFinite(e.py)){const t=new ut(n,i).transform(r),s=isFinite(e.px)?e.px-t.x:0,o=isFinite(e.py)?e.py-t.y:0;r.translateO(s,o)}return r.translateO(e.tx,e.ty),r}translate(t,e){return this.clone().translateO(t,e)}translateO(t,e){return this.e+=t||0,this.f+=e||0,this}valueOf(){return{a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}}function ct(){if(!ct.nodes){const t=j().size(2,0);t.node.style.cssText=["opacity: 0","position: absolute","left: -100%","top: -100%","overflow: hidden"].join(";"),t.attr("focusable","false"),t.attr("aria-hidden","true");const e=t.path().node;ct.nodes={svg:t,path:e}}if(!ct.nodes.svg.node.parentNode){const t=b.document.body||b.document.documentElement;ct.nodes.svg.addTo(t)}return ct.nodes}function ft(t){return!(t.width||t.height||t.x||t.y)}P(lt,"Matrix");class dt{constructor(...t){this.init(...t)}addOffset(){return this.x+=b.window.pageXOffset,this.y+=b.window.pageYOffset,new dt(this)}init(t){return t="string"==typeof t?t.split(et).map(parseFloat):Array.isArray(t)?t:"object"==typeof t?[null!=t.left?t.left:t.x,null!=t.top?t.top:t.y,t.width,t.height]:4===arguments.length?[].slice.call(arguments):[0,0,0,0],this.x=t[0]||0,this.y=t[1]||0,this.width=this.w=t[2]||0,this.height=this.h=t[3]||0,this.x2=this.x+this.w,this.y2=this.y+this.h,this.cx=this.x+this.w/2,this.cy=this.y+this.h/2,this}isNulled(){return ft(this)}merge(t){const e=Math.min(this.x,t.x),n=Math.min(this.y,t.y),i=Math.max(this.x+this.width,t.x+t.width)-e,r=Math.max(this.y+this.height,t.y+t.height)-n;return new dt(e,n,i,r)}toArray(){return[this.x,this.y,this.width,this.height]}toString(){return this.x+" "+this.y+" "+this.width+" "+this.height}transform(t){t instanceof lt||(t=new lt(t));let e=1/0,n=-1/0,i=1/0,r=-1/0;return[new ut(this.x,this.y),new ut(this.x2,this.y),new ut(this.x,this.y2),new ut(this.x2,this.y2)].forEach((function(s){s=s.transform(t),e=Math.min(e,s.x),n=Math.max(n,s.x),i=Math.min(i,s.y),r=Math.max(r,s.y)})),new dt(e,i,n-e,r-i)}}function mt(t,e,n){let i;try{if(i=e(t.node),ft(i)&&((r=t.node)!==b.document&&!(b.document.documentElement.contains||function(t){for(;t.parentNode;)t=t.parentNode;return t===b.document}).call(b.document.documentElement,r)))throw new Error("Element not in the dom")}catch(e){i=n(t)}var r;return i}n({viewbox:{viewbox(t,e,n,i){return null==t?new dt(this.attr("viewBox")):this.attr("viewBox",new dt(t,e,n,i))},zoom(t,e){let{width:n,height:i}=this.attr(["width","height"]);if((n||i)&&"string"!=typeof n&&"string"!=typeof i||(n=this.node.clientWidth,i=this.node.clientHeight),!n||!i)throw new Error("Impossible to get absolute width and height. Please provide an absolute width and height attribute on the zooming element");const r=this.viewbox(),s=n/r.width,o=i/r.height,h=Math.min(s,o);if(null==t)return h;let u=h/t;u===1/0&&(u=Number.MAX_SAFE_INTEGER/100),e=e||new ut(n/2/s+r.x,i/2/o+r.y);const a=new dt(r).transform(new lt({scale:u,origin:e}));return this.viewbox(a)}}}),P(dt,"Box");class pt extends Array{constructor(t=[],...e){if(super(t,...e),"number"==typeof t)return this;this.length=0,this.push(...t)}}X([pt],{each(t,...e){return"function"==typeof t?this.map(((e,n,i)=>t.call(e,e,n,i))):this.map((n=>n[t](...e)))},toArray(){return Array.prototype.concat.apply([],this)}});const yt=["toArray","constructor","each"];function wt(t,e){return new pt(s((e||b.document).querySelectorAll(t),(function(t){return I(t)})))}pt.extend=function(t){t=t.reduce(((t,e)=>(yt.includes(e)||"_"===e[0]||(e in Array.prototype&&(t["$"+e]=Array.prototype[e]),t[e]=function(...t){return this.each(e,...t)}),t)),{}),X([pt],t)};let gt=0;const _t={};function xt(t){let e=t.getEventHolder();return e===b.window&&(e=_t),e.events||(e.events={}),e.events}function bt(t){return t.getEventTarget()}function vt(t){let e=t.getEventHolder();e===b.window&&(e=_t),e.events&&(e.events={})}function Mt(t,e,n,i,r){const s=n.bind(i||t),o=j(t),h=xt(o),u=bt(o);e=Array.isArray(e)?e:e.split(et),n._svgjsListenerId||(n._svgjsListenerId=++gt),e.forEach((function(t){const e=t.split(".")[0],i=t.split(".")[1]||"*";h[e]=h[e]||{},h[e][i]=h[e][i]||{},h[e][i][n._svgjsListenerId]=s,u.addEventListener(e,s,r||!1)}))}function At(t,e,n,i){const r=j(t),s=xt(r),o=bt(r);("function"!=typeof n||(n=n._svgjsListenerId))&&(e=Array.isArray(e)?e:(e||"").split(et)).forEach((function(t){const e=t&&t.split(".")[0],h=t&&t.split(".")[1];let u,a;if(n)s[e]&&s[e][h||"*"]&&(o.removeEventListener(e,s[e][h||"*"][n],i||!1),delete s[e][h||"*"][n]);else if(e&&h){if(s[e]&&s[e][h]){for(a in s[e][h])At(o,[e,h].join("."),a);delete s[e][h]}}else if(h)for(t in s)for(u in s[t])h===u&&At(o,[t,h].join("."));else if(e){if(s[e]){for(u in s[e])At(o,[e,u].join("."));delete s[e]}}else{for(t in s)At(o,t);vt(r)}}))}function Ot(t,e,n,i){const r=bt(t);return e instanceof b.window.Event||(e=new b.window.CustomEvent(e,{detail:n,cancelable:!0,...i})),r.dispatchEvent(e),e}class kt extends C{addEventListener(){}dispatch(t,e,n){return Ot(this,t,e,n)}dispatchEvent(t){const e=this.getEventHolder().events;if(!e)return!0;const n=e[t.type];for(const e in n)for(const i in n[e])n[e][i](t);return!t.defaultPrevented}fire(t,e,n){return this.dispatch(t,e,n),this}getEventHolder(){return this}getEventTarget(){return this}off(t,e,n){return At(this,t,e,n),this}on(t,e,n,i){return Mt(this,t,e,n,i),this}removeEventListener(){}}function Tt(){}P(kt,"EventTarget");const Ct={duration:400,ease:">",delay:0},Nt={"fill-opacity":1,"stroke-opacity":1,"stroke-width":0,"stroke-linejoin":"miter","stroke-linecap":"butt",fill:"#000000",stroke:"#000000",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,"stop-opacity":1,"stop-color":"#000000","text-anchor":"start"};var St={__proto__:null,attrs:Nt,noop:Tt,timeline:Ct};class Et extends Array{constructor(...t){super(...t),this.init(...t)}clone(){return new this.constructor(this)}init(t){return"number"==typeof t||(this.length=0,this.push(...this.parse(t))),this}parse(t=[]){return t instanceof Array?t:t.trim().split(et).map(parseFloat)}toArray(){return Array.prototype.concat.apply([],this)}toSet(){return new Set(this)}toString(){return this.join(" ")}valueOf(){const t=[];return t.push(...this),t}}class jt{constructor(...t){this.init(...t)}convert(t){return new jt(this.value,t)}divide(t){return t=new jt(t),new jt(this/t,this.unit||t.unit)}init(t,e){return e=Array.isArray(t)?t[1]:e,t=Array.isArray(t)?t[0]:t,this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(B))&&(this.value=parseFloat(e[1]),"%"===e[5]?this.value/=100:"s"===e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof jt&&(this.value=t.valueOf(),this.unit=t.unit),this}minus(t){return t=new jt(t),new jt(this-t,this.unit||t.unit)}plus(t){return t=new jt(t),new jt(this+t,this.unit||t.unit)}times(t){return t=new jt(t),new jt(this*t,this.unit||t.unit)}toArray(){return[this.value,this.unit]}toJSON(){return this.toString()}toString(){return("%"===this.unit?~~(1e8*this.value)/1e6:"s"===this.unit?this.value/1e3:this.value)+this.unit}valueOf(){return this.value}}const Dt=new Set(["fill","stroke","color","bgcolor","stop-color","flood-color","lighting-color"]),It=[];class Dom extends kt{constructor(t,e){super(),this.node=t,this.type=t.nodeName,e&&t!==e&&this.attr(e)}add(t,e){return(t=j(t)).removeNamespace&&this.node instanceof b.window.SVGElement&&t.removeNamespace(),null==e?this.node.appendChild(t.node):t.node!==this.node.childNodes[e]&&this.node.insertBefore(t.node,this.node.childNodes[e]),this}addTo(t,e){return j(t).put(this,e)}children(){return new pt(s(this.node.children,(function(t){return I(t)})))}clear(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return this}clone(t=!0,e=!0){this.writeDataToDom();let n=this.node.cloneNode(t);return e&&(n=F(n)),new this.constructor(n)}each(t,e){const n=this.children();let i,r;for(i=0,r=n.length;i<r;i++)t.apply(n[i],[i,n]),e&&n[i].each(t,e);return this}element(t,e){return this.put(new Dom(E(t),e))}first(){return I(this.node.firstChild)}get(t){return I(this.node.childNodes[t])}getEventHolder(){return this.node}getEventTarget(){return this.node}has(t){return this.index(t)>=0}html(t,e){return this.xml(t,e,w)}id(t){return void 0!==t||this.node.id||(this.node.id=q(this.type)),this.attr("id",t)}index(t){return[].slice.call(this.node.childNodes).indexOf(t.node)}last(){return I(this.node.lastChild)}matches(t){const e=this.node,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector||null;return n&&n.call(e,t)}parent(t){let e=this;if(!e.node.parentNode)return null;if(e=I(e.node.parentNode),!t)return e;do{if("string"==typeof t?e.matches(t):e instanceof t)return e}while(e=I(e.node.parentNode));return e}put(t,e){return t=j(t),this.add(t,e),t}putIn(t,e){return j(t).add(this,e)}remove(){return this.parent()&&this.parent().removeElement(this),this}removeElement(t){return this.node.removeChild(t.node),this}replace(t){return t=j(t),this.node.parentNode&&this.node.parentNode.replaceChild(t.node,this.node),t}round(t=2,e=null){const n=10**t,i=this.attr(e);for(const t in i)"number"==typeof i[t]&&(i[t]=Math.round(i[t]*n)/n);return this.attr(i),this}svg(t,e){return this.xml(t,e,y)}toString(){return this.id()}words(t){return this.node.textContent=t,this}wrap(t){const e=this.parent();if(!e)return this.addTo(t);const n=e.index(this);return e.put(t,n).put(this)}writeDataToDom(){return this.each((function(){this.writeDataToDom()})),this}xml(t,e,n){if("boolean"==typeof t&&(n=e,e=t,t=null),null==t||"function"==typeof t){e=null==e||e,this.writeDataToDom();let n=this;if(null!=t){if(n=I(n.node.cloneNode(!0)),e){const e=t(n);if(n=e||n,!1===e)return""}n.each((function(){const e=t(this),n=e||this;!1===e?this.remove():e&&this!==n&&this.replace(n)}),!0)}return e?n.node.outerHTML:n.node.innerHTML}e=null!=e&&e;const i=E("wrapper",n),r=b.document.createDocumentFragment();i.innerHTML=t;for(let t=i.children.length;t--;)r.appendChild(i.firstElementChild);const s=this.parent();return e?this.replace(r)&&s:this.add(r)}}X(Dom,{attr:function(t,e,n){if(null==t){t={},e=this.node.attributes;for(const n of e)t[n.nodeName]=K.test(n.nodeValue)?parseFloat(n.nodeValue):n.nodeValue;return t}if(t instanceof Array)return t.reduce(((t,e)=>(t[e]=this.attr(e),t)),{});if("object"==typeof t&&t.constructor===Object)for(e in t)this.attr(e,t[e]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?Nt[t]:K.test(e)?parseFloat(e):e;"number"==typeof(e=It.reduce(((e,n)=>n(t,e,this)),e))?e=new jt(e):Dt.has(t)&&ht.isColor(e)?e=new ht(e):e.constructor===Array&&(e=new Et(e)),"leading"===t?this.leading&&this.leading(e):"string"==typeof n?this.node.setAttributeNS(n,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||"font-size"!==t&&"x"!==t||this.rebuild()}return this},find:function(t){return wt(t,this.node)},findOne:function(t){return I(this.node.querySelector(t))}}),P(Dom,"Dom");class Element extends Dom{constructor(t,e){super(t,e),this.dom={},this.node.instance=this,(t.hasAttribute("data-svgjs")||t.hasAttribute("svgjs:data"))&&this.setData(JSON.parse(t.getAttribute("data-svgjs"))??JSON.parse(t.getAttribute("svgjs:data"))??{})}center(t,e){return this.cx(t).cy(e)}cx(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)}cy(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)}defs(){const t=this.root();return t&&t.defs()}dmove(t,e){return this.dx(t).dy(e)}dx(t=0){return this.x(new jt(t).plus(this.x()))}dy(t=0){return this.y(new jt(t).plus(this.y()))}getEventHolder(){return this}height(t){return this.attr("height",t)}move(t,e){return this.x(t).y(e)}parents(t=this.root()){const e="string"==typeof t;e||(t=j(t));const n=new pt;let i=this;for(;(i=i.parent())&&i.node!==b.document&&"#document-fragment"!==i.nodeName&&(n.push(i),e||i.node!==t.node)&&(!e||!i.matches(t));)if(i.node===this.root().node)return null;return n}reference(t){if(!(t=this.attr(t)))return null;const e=(t+"").match($);return e?j(e[1]):null}root(){const t=this.parent(R(S));return t&&t.root()}setData(t){return this.dom=t,this}size(t,e){const n=l(this,t,e);return this.width(new jt(n.width)).height(new jt(n.height))}width(t){return this.attr("width",t)}writeDataToDom(){return m(this,this.dom),super.writeDataToDom()}x(t){return this.attr("x",t)}y(t){return this.attr("y",t)}}X(Element,{bbox:function(){const t=mt(this,(t=>t.getBBox()),(t=>{try{const e=t.clone().addTo(ct().svg).show(),n=e.node.getBBox();return e.remove(),n}catch(e){throw new Error(`Getting bbox of element "${t.node.nodeName}" is not possible: ${e.toString()}`)}}));return new dt(t)},rbox:function(t){const e=mt(this,(t=>t.getBoundingClientRect()),(t=>{throw new Error(`Getting rbox of element "${t.node.nodeName}" is not possible`)})),n=new dt(e);return t?n.transform(t.screenCTM().inverseO()):n.addOffset()},inside:function(t,e){const n=this.bbox();return t>n.x&&e>n.y&&t<n.x+n.width&&e<n.y+n.height},point:function(t,e){return new ut(t,e).transformO(this.screenCTM().inverseO())},ctm:function(){return new lt(this.node.getCTM())},screenCTM:function(){try{if("function"==typeof this.isRoot&&!this.isRoot()){const t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new lt(e)}return new lt(this.node.getScreenCTM())}catch(t){return console.warn(`Cannot get CTM from SVG node ${this.node.nodeName}. Is the element rendered?`),new lt}}}),P(Element,"Element");const zt={stroke:["color","width","opacity","linecap","linejoin","miterlimit","dasharray","dashoffset"],fill:["color","opacity","rule"],prefix:function(t,e){return"color"===e?t:t+"-"+e}};["fill","stroke"].forEach((function(t){const e={};let i;e[t]=function(e){if(void 0===e)return this.attr(t);if("string"==typeof e||e instanceof ht||ht.isRgb(e)||e instanceof Element)this.attr(t,e);else for(i=zt[t].length-1;i>=0;i--)null!=e[zt[t][i]]&&this.attr(zt.prefix(t,zt[t][i]),e[zt[t][i]]);return this},n(["Element","Runner"],e)})),n(["Element","Runner"],{matrix:function(t,e,n,i,r,s){return null==t?new lt(this):this.attr("transform",new lt(t,e,n,i,r,s))},rotate:function(t,e,n){return this.transform({rotate:t,ox:e,oy:n},!0)},skew:function(t,e,n,i){return 1===arguments.length||3===arguments.length?this.transform({skew:t,ox:e,oy:n},!0):this.transform({skew:[t,e],ox:n,oy:i},!0)},shear:function(t,e,n){return this.transform({shear:t,ox:e,oy:n},!0)},scale:function(t,e,n,i){return 1===arguments.length||3===arguments.length?this.transform({scale:t,ox:e,oy:n},!0):this.transform({scale:[t,e],ox:n,oy:i},!0)},translate:function(t,e){return this.transform({translate:[t,e]},!0)},relative:function(t,e){return this.transform({relative:[t,e]},!0)},flip:function(t="both",e="center"){return-1==="xybothtrue".indexOf(t)&&(e=t,t="both"),this.transform({flip:t,origin:e},!0)},opacity:function(t){return this.attr("opacity",t)}}),n("radius",{radius:function(t,e=t){return"radialGradient"===(this._element||this).type?this.attr("r",new jt(t)):this.rx(t).ry(e)}}),n("Path",{length:function(){return this.node.getTotalLength()},pointAt:function(t){return new ut(this.node.getPointAtLength(t))}}),n(["Element","Runner"],{font:function(t,e){if("object"==typeof t){for(e in t)this.font(e,t[e]);return this}return"leading"===t?this.leading(e):"anchor"===t?this.attr("text-anchor",e):"size"===t||"family"===t||"weight"===t||"stretch"===t||"variant"===t||"style"===t?this.attr("font-"+t,e):this.attr(t,e)}});n("Element",["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","touchstart","touchmove","touchleave","touchend","touchcancel","contextmenu","wheel","pointerdown","pointermove","pointerup","pointerleave","pointercancel"].reduce((function(t,e){return t[e]=function(t){return null===t?this.off(e):this.on(e,t),this},t}),{})),n("Element",{untransform:function(){return this.attr("transform",null)},matrixify:function(){const t=(this.attr("transform")||"").split(U).slice(0,-1).map((function(t){const e=t.trim().split("(");return[e[0],e[1].split(et).map((function(t){return parseFloat(t)}))]})).reverse().reduce((function(t,e){return"matrix"===e[0]?t.lmultiply(lt.fromArray(e[1])):t[e[0]].apply(t,e[1])}),new lt);return t},toParent:function(t,e){if(this===t)return this;if(d(this.node))return this.addTo(t,e);const n=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t,e).untransform().transform(i.multiply(n)),this},toRoot:function(t){return this.toParent(this.root(),t)},transform:function(t,e){if(null==t||"string"==typeof t){const e=new lt(this).decompose();return null==t?e:e[t]}lt.isMatrixLike(t)||(t={...t,origin:c(t,this)});const n=new lt(!0===e?this:e||!1).transform(t);return this.attr("transform",n)}});class Container extends Element{flatten(){return this.each((function(){if(this instanceof Container)return this.flatten().ungroup()})),this}ungroup(t=this.parent(),e=t.index(this)){return e=-1===e?t.children().length:e,this.each((function(n,i){return i[i.length-n-1].toParent(t,e)})),this.remove()}}P(Container,"Container");class Defs extends Container{constructor(t,e=t){super(D("defs",t),e)}flatten(){return this}ungroup(){return this}}P(Defs,"Defs");class Shape extends Element{}function Pt(t){return this.attr("rx",t)}function Rt(t){return this.attr("ry",t)}function Lt(t){return null==t?this.cx()-this.rx():this.cx(t+this.rx())}function qt(t){return null==t?this.cy()-this.ry():this.cy(t+this.ry())}function Ft(t){return this.attr("cx",t)}function Xt(t){return this.attr("cy",t)}function Yt(t){return null==t?2*this.rx():this.rx(new jt(t).divide(2))}function Bt(t){return null==t?2*this.ry():this.ry(new jt(t).divide(2))}P(Shape,"Shape");var Gt={__proto__:null,cx:Ft,cy:Xt,height:Bt,rx:Pt,ry:Rt,width:Yt,x:Lt,y:qt};class Ellipse extends Shape{constructor(t,e=t){super(D("ellipse",t),e)}size(t,e){const n=l(this,t,e);return this.rx(new jt(n.width).divide(2)).ry(new jt(n.height).divide(2))}}X(Ellipse,Gt),n("Container",{ellipse:Y((function(t=0,e=t){return this.put(new Ellipse).size(t,e).move(0,0)}))}),P(Ellipse,"Ellipse");class Ht extends Dom{constructor(t=b.document.createDocumentFragment()){super(t)}xml(t,e,n){if("boolean"==typeof t&&(n=e,e=t,t=null),null==t||"function"==typeof t){const t=new Dom(E("wrapper",n));return t.add(this.node.cloneNode(!0)),t.xml(!1,n)}return super.xml(t,!1,n)}}function Vt(t,e){return"radialGradient"===(this._element||this).type?this.attr({fx:new jt(t),fy:new jt(e)}):this.attr({x1:new jt(t),y1:new jt(e)})}function $t(t,e){return"radialGradient"===(this._element||this).type?this.attr({cx:new jt(t),cy:new jt(e)}):this.attr({x2:new jt(t),y2:new jt(e)})}P(Ht,"Fragment");var Ut,Wt={__proto__:null,from:Vt,to:$t};class Gradient extends Container{constructor(t,e){super(D(t+"Gradient","string"==typeof t?null:t),e)}attr(t,e,n){return"transform"===t&&(t="gradientTransform"),super.attr(t,e,n)}bbox(){return new dt}targets(){return wt("svg [fill*="+this.id()+"]")}toString(){return this.url()}update(t){return this.clear(),"function"==typeof t&&t.call(this,this),this}url(){return"url(#"+this.id()+")"}}X(Gradient,Wt),n({Container:{gradient(...t){return this.defs().gradient(...t)}},Defs:{gradient:Y((function(t,e){return this.put(new Gradient(t)).update(e)}))}}),P(Gradient,"Gradient");class Pattern extends Container{constructor(t,e=t){super(D("pattern",t),e)}attr(t,e,n){return"transform"===t&&(t="patternTransform"),super.attr(t,e,n)}bbox(){return new dt}targets(){return wt("svg [fill*="+this.id()+"]")}toString(){return this.url()}update(t){return this.clear(),"function"==typeof t&&t.call(this,this),this}url(){return"url(#"+this.id()+")"}}n({Container:{pattern(...t){return this.defs().pattern(...t)}},Defs:{pattern:Y((function(t,e,n){return this.put(new Pattern).update(n).attr({x:0,y:0,width:t,height:e,patternUnits:"userSpaceOnUse"})}))}}),P(Pattern,"Pattern");class Image extends Shape{constructor(t,e=t){super(D("image",t),e)}load(t,e){if(!t)return this;const n=new b.window.Image;return Mt(n,"load",(function(t){const i=this.parent(Pattern);0===this.width()&&0===this.height()&&this.size(n.width,n.height),i instanceof Pattern&&0===i.width()&&0===i.height()&&i.size(this.width(),this.height()),"function"==typeof e&&e.call(this,t)}),this),Mt(n,"load error",(function(){At(n)})),this.attr("href",n.src=t,_)}}Ut=function(t,e,n){return"fill"!==t&&"stroke"!==t||tt.test(e)&&(e=n.root().defs().image(e)),e instanceof Image&&(e=n.root().defs().pattern(0,0,(t=>{t.add(e)}))),e},It.push(Ut),n({Container:{image:Y((function(t,e){return this.put(new Image).size(0,0).load(t,e)}))}}),P(Image,"Image");class Qt extends Et{bbox(){let t=-1/0,e=-1/0,n=1/0,i=1/0;return this.forEach((function(r){t=Math.max(r[0],t),e=Math.max(r[1],e),n=Math.min(r[0],n),i=Math.min(r[1],i)})),new dt(n,i,t-n,e-i)}move(t,e){const n=this.bbox();if(t-=n.x,e-=n.y,!isNaN(t)&&!isNaN(e))for(let n=this.length-1;n>=0;n--)this[n]=[this[n][0]+t,this[n][1]+e];return this}parse(t=[0,0]){const e=[];(t=t instanceof Array?Array.prototype.concat.apply([],t):t.trim().split(et).map(parseFloat)).length%2!=0&&t.pop();for(let n=0,i=t.length;n<i;n+=2)e.push([t[n],t[n+1]]);return e}size(t,e){let n;const i=this.bbox();for(n=this.length-1;n>=0;n--)i.width&&(this[n][0]=(this[n][0]-i.x)*t/i.width+i.x),i.height&&(this[n][1]=(this[n][1]-i.y)*e/i.height+i.y);return this}toLine(){return{x1:this[0][0],y1:this[0][1],x2:this[1][0],y2:this[1][1]}}toString(){const t=[];for(let e=0,n=this.length;e<n;e++)t.push(this[e].join(","));return t.join(" ")}transform(t){return this.clone().transformO(t)}transformO(t){lt.isMatrixLike(t)||(t=new lt(t));for(let e=this.length;e--;){const[n,i]=this[e];this[e][0]=t.a*n+t.c*i+t.e,this[e][1]=t.b*n+t.d*i+t.f}return this}}var Jt={__proto__:null,MorphArray:Qt,height:function(t){const e=this.bbox();return null==t?e.height:this.size(e.width,t)},width:function(t){const e=this.bbox();return null==t?e.width:this.size(t,e.height)},x:function(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)},y:function(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)}};class Line extends Shape{constructor(t,e=t){super(D("line",t),e)}array(){return new Qt([[this.attr("x1"),this.attr("y1")],[this.attr("x2"),this.attr("y2")]])}move(t,e){return this.attr(this.array().move(t,e).toLine())}plot(t,e,n,i){return null==t?this.array():(t=void 0!==e?{x1:t,y1:e,x2:n,y2:i}:new Qt(t).toLine(),this.attr(t))}size(t,e){const n=l(this,t,e);return this.attr(this.array().size(n.width,n.height).toLine())}}X(Line,Jt),n({Container:{line:Y((function(...t){return Line.prototype.plot.apply(this.put(new Line),null!=t[0]?t:[0,0,0,0])}))}}),P(Line,"Line");class Marker extends Container{constructor(t,e=t){super(D("marker",t),e)}height(t){return this.attr("markerHeight",t)}orient(t){return this.attr("orient",t)}ref(t,e){return this.attr("refX",t).attr("refY",e)}toString(){return"url(#"+this.id()+")"}update(t){return this.clear(),"function"==typeof t&&t.call(this,this),this}width(t){return this.attr("markerWidth",t)}}function Zt(t,e){return function(n){return null==n?this[t]:(this[t]=n,e&&e.call(this),this)}}n({Container:{marker(...t){return this.defs().marker(...t)}},Defs:{marker:Y((function(t,e,n){return this.put(new Marker).size(t,e).ref(t/2,e/2).viewbox(0,0,t,e).attr("orient","auto").update(n)}))},marker:{marker(t,e,n,i){let r=["marker"];return"all"!==t&&r.push(t),r=r.join("-"),t=arguments[1]instanceof Marker?arguments[1]:this.defs().marker(e,n,i),this.attr(r,t)}}}),P(Marker,"Marker");const Kt={"-":function(t){return t},"<>":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)},bezier:function(t,e,n,i){return function(r){return r<0?t>0?e/t*r:n>0?i/n*r:0:r>1?n<1?(1-i)/(1-n)*r+(i-n)/(1-n):t<1?(1-e)/(1-t)*r+(e-t)/(1-t):1:3*r*(1-r)**2*e+3*r**2*(1-r)*i+r**3}},steps:function(t,e="end"){e=e.split("-").reverse()[0];let n=t;return"none"===e?--n:"both"===e&&++n,(i,r=!1)=>{let s=Math.floor(i*t);const o=i*s%1==0;return"start"!==e&&"both"!==e||++s,r&&o&&--s,i>=0&&s<0&&(s=0),i<=1&&s>n&&(s=n),s/n}}};class te{done(){return!1}}class ee extends te{constructor(t=Ct.ease){super(),this.ease=Kt[t]||t}step(t,e,n){return"number"!=typeof t?n<1?t:e:t+(e-t)*this.ease(n)}}class ne extends te{constructor(t){super(),this.stepper=t}done(t){return t.done}step(t,e,n,i){return this.stepper(t,e,n,i)}}function ie(){const t=(this._duration||500)/1e3,e=this._overshoot||0,n=Math.PI,i=Math.log(e/100+1e-10),r=-i/Math.sqrt(n*n+i*i),s=3.9/(r*t);this.d=2*r*s,this.k=s*s}class re extends ne{constructor(t=500,e=0){super(),this.duration(t).overshoot(e)}step(t,e,n,i){if("string"==typeof t)return t;if(i.done=n===1/0,n===1/0)return e;if(0===n)return t;n>100&&(n=16),n/=1e3;const r=i.velocity||0,s=-this.d*r-this.k*(t-e),o=t+r*n+s*n*n/2;return i.velocity=r+s*n,i.done=Math.abs(e-o)+Math.abs(r)<.002,i.done?e:o}}X(re,{duration:Zt("_duration",ie),overshoot:Zt("_overshoot",ie)});class se extends ne{constructor(t=.1,e=.01,n=0,i=1e3){super(),this.p(t).i(e).d(n).windup(i)}step(t,e,n,i){if("string"==typeof t)return t;if(i.done=n===1/0,n===1/0)return e;if(0===n)return t;const r=e-t;let s=(i.integral||0)+r*n;const o=(r-(i.error||0))/n,h=this._windup;return!1!==h&&(s=Math.max(-h,Math.min(s,h))),i.error=r,i.integral=s,i.done=Math.abs(r)<.001,i.done?e:t+(this.P*r+this.I*s+this.D*o)}}X(se,{windup:Zt("_windup"),p:Zt("P"),i:Zt("I"),d:Zt("D")});const oe={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0},he={M:function(t,e,n){return e.x=n.x=t[0],e.y=n.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},S:function(t,e){return e.x=t[2],e.y=t[3],["S",t[0],t[1],t[2],t[3]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},T:function(t,e){return e.x=t[0],e.y=t[1],["T",t[0],t[1]]},Z:function(t,e,n){return e.x=n.x,e.y=n.y,["Z"]},A:function(t,e){return e.x=t[5],e.y=t[6],["A",t[0],t[1],t[2],t[3],t[4],t[5],t[6]]}},ue="mlhvqtcsaz".split("");for(let t=0,e=ue.length;t<e;++t)he[ue[t]]=function(t){return function(e,n,i){if("H"===t)e[0]=e[0]+n.x;else if("V"===t)e[0]=e[0]+n.y;else if("A"===t)e[5]=e[5]+n.x,e[6]=e[6]+n.y;else for(let t=0,i=e.length;t<i;++t)e[t]=e[t]+(t%2?n.y:n.x);return he[t](e,n,i)}}(ue[t].toUpperCase());function ae(t){return t.segment.length&&t.segment.length-1===oe[t.segment[0].toUpperCase()]}function le(t,e){t.inNumber&&ce(t,!1);const n=nt.test(e);if(n)t.segment=[e];else{const e=t.lastCommand,n=e.toLowerCase(),i=e===n;t.segment=["m"===n?i?"l":"L":e]}return t.inSegment=!0,t.lastCommand=t.segment[0],n}function ce(t,e){if(!t.inNumber)throw new Error("Parser Error");t.number&&t.segment.push(parseFloat(t.number)),t.inNumber=e,t.number="",t.pointSeen=!1,t.hasExponent=!1,ae(t)&&fe(t)}function fe(t){t.inSegment=!1,t.absolute&&(t.segment=function(t){const e=t.segment[0];return he[e](t.segment.slice(1),t.p,t.p0)}(t)),t.segments.push(t.segment)}function de(t){if(!t.segment.length)return!1;const e="A"===t.segment[0].toUpperCase(),n=t.segment.length;return e&&(4===n||5===n)}function me(t){return"E"===t.lastToken.toUpperCase()}const pe=new Set([" ",",","\t","\n","\r","\f"]);class ye extends Et{bbox(){return ct().path.setAttribute("d",this.toString()),new dt(ct.nodes.path.getBBox())}move(t,e){const n=this.bbox();if(t-=n.x,e-=n.y,!isNaN(t)&&!isNaN(e))for(let n,i=this.length-1;i>=0;i--)n=this[i][0],"M"===n||"L"===n||"T"===n?(this[i][1]+=t,this[i][2]+=e):"H"===n?this[i][1]+=t:"V"===n?this[i][1]+=e:"C"===n||"S"===n||"Q"===n?(this[i][1]+=t,this[i][2]+=e,this[i][3]+=t,this[i][4]+=e,"C"===n&&(this[i][5]+=t,this[i][6]+=e)):"A"===n&&(this[i][6]+=t,this[i][7]+=e);return this}parse(t="M0 0"){return Array.isArray(t)&&(t=Array.prototype.concat.apply([],t).toString()),function(t,e=!0){let n=0,i="";const r={segment:[],inNumber:!1,number:"",lastToken:"",inSegment:!1,segments:[],pointSeen:!1,hasExponent:!1,absolute:e,p0:new ut,p:new ut};for(;r.lastToken=i,i=t.charAt(n++);)if(r.inSegment||!le(r,i))if("."!==i)if(isNaN(parseInt(i)))if(pe.has(i))r.inNumber&&ce(r,!1);else if("-"!==i&&"+"!==i)if("E"!==i.toUpperCase()){if(nt.test(i)){if(r.inNumber)ce(r,!1);else{if(!ae(r))throw new Error("parser Error");fe(r)}--n}}else r.number+=i,r.hasExponent=!0;else{if(r.inNumber&&!me(r)){ce(r,!1),--n;continue}r.number+=i,r.inNumber=!0}else{if("0"===r.number||de(r)){r.inNumber=!0,r.number=i,ce(r,!0);continue}r.inNumber=!0,r.number+=i}else{if(r.pointSeen||r.hasExponent){ce(r,!1),--n;continue}r.inNumber=!0,r.pointSeen=!0,r.number+=i}return r.inNumber&&ce(r,!1),r.inSegment&&ae(r)&&fe(r),r.segments}(t)}size(t,e){const n=this.bbox();let i,r;for(n.width=0===n.width?1:n.width,n.height=0===n.height?1:n.height,i=this.length-1;i>=0;i--)r=this[i][0],"M"===r||"L"===r||"T"===r?(this[i][1]=(this[i][1]-n.x)*t/n.width+n.x,this[i][2]=(this[i][2]-n.y)*e/n.height+n.y):"H"===r?this[i][1]=(this[i][1]-n.x)*t/n.width+n.x:"V"===r?this[i][1]=(this[i][1]-n.y)*e/n.height+n.y:"C"===r||"S"===r||"Q"===r?(this[i][1]=(this[i][1]-n.x)*t/n.width+n.x,this[i][2]=(this[i][2]-n.y)*e/n.height+n.y,this[i][3]=(this[i][3]-n.x)*t/n.width+n.x,this[i][4]=(this[i][4]-n.y)*e/n.height+n.y,"C"===r&&(this[i][5]=(this[i][5]-n.x)*t/n.width+n.x,this[i][6]=(this[i][6]-n.y)*e/n.height+n.y)):"A"===r&&(this[i][1]=this[i][1]*t/n.width,this[i][2]=this[i][2]*e/n.height,this[i][6]=(this[i][6]-n.x)*t/n.width+n.x,this[i][7]=(this[i][7]-n.y)*e/n.height+n.y);return this}toString(){return function(t){let e="";for(let n=0,i=t.length;n<i;n++)e+=t[n][0],null!=t[n][1]&&(e+=t[n][1],null!=t[n][2]&&(e+=" ",e+=t[n][2],null!=t[n][3]&&(e+=" ",e+=t[n][3],e+=" ",e+=t[n][4],null!=t[n][5]&&(e+=" ",e+=t[n][5],e+=" ",e+=t[n][6],null!=t[n][7]&&(e+=" ",e+=t[n][7])))));return e+" "}(this)}}const we=t=>{const e=typeof t;return"number"===e?jt:"string"===e?ht.isColor(t)?ht:et.test(t)?nt.test(t)?ye:Et:B.test(t)?jt:_e:Me.indexOf(t.constructor)>-1?t.constructor:Array.isArray(t)?Et:"object"===e?ve:_e};class ge{constructor(t){this._stepper=t||new ee("-"),this._from=null,this._to=null,this._type=null,this._context=null,this._morphObj=null}at(t){return this._morphObj.morph(this._from,this._to,t,this._stepper,this._context)}done(){return this._context.map(this._stepper.done).reduce((function(t,e){return t&&e}),!0)}from(t){return null==t?this._from:(this._from=this._set(t),this)}stepper(t){return null==t?this._stepper:(this._stepper=t,this)}to(t){return null==t?this._to:(this._to=this._set(t),this)}type(t){return null==t?this._type:(this._type=t,this)}_set(t){this._type||this.type(we(t));let e=new this._type(t);return this._type===ht&&(e=this._to?e[this._to[4]]():this._from?e[this._from[4]]():e),this._type===ve&&(e=this._to?e.align(this._to):this._from?e.align(this._from):e),e=e.toConsumable(),this._morphObj=this._morphObj||new this._type,this._context=this._context||Array.apply(null,Array(e.length)).map(Object).map((function(t){return t.done=!0,t})),e}}class _e{constructor(...t){this.init(...t)}init(t){return t=Array.isArray(t)?t[0]:t,this.value=t,this}toArray(){return[this.value]}valueOf(){return this.value}}class xe{constructor(...t){this.init(...t)}init(t){return Array.isArray(t)&&(t={scaleX:t[0],scaleY:t[1],shear:t[2],rotate:t[3],translateX:t[4],translateY:t[5],originX:t[6],originY:t[7]}),Object.assign(this,xe.defaults,t),this}toArray(){const t=this;return[t.scaleX,t.scaleY,t.shear,t.rotate,t.translateX,t.translateY,t.originX,t.originY]}}xe.defaults={scaleX:1,scaleY:1,shear:0,rotate:0,translateX:0,translateY:0,originX:0,originY:0};const be=(t,e)=>t[0]<e[0]?-1:t[0]>e[0]?1:0;class ve{constructor(...t){this.init(...t)}align(t){const e=this.values;for(let n=0,i=e.length;n<i;++n){if(e[n+1]===t[n+1]){if(e[n+1]===ht&&t[n+7]!==e[n+7]){const e=t[n+7],i=new ht(this.values.splice(n+3,5))[e]().toArray();this.values.splice(n+3,0,...i)}n+=e[n+2]+2;continue}if(!t[n+1])return this;const i=(new t[n+1]).toArray(),r=e[n+2]+3;e.splice(n,r,t[n],t[n+1],t[n+2],...i),n+=e[n+2]+2}return this}init(t){if(this.values=[],Array.isArray(t))return void(this.values=t.slice());t=t||{};const e=[];for(const n in t){const i=we(t[n]),r=new i(t[n]).toArray();e.push([n,i,r.length,...r])}return e.sort(be),this.values=e.reduce(((t,e)=>t.concat(e)),[]),this}toArray(){return this.values}valueOf(){const t={},e=this.values;for(;e.length;){const n=e.shift(),i=e.shift(),r=e.shift(),s=e.splice(0,r);t[n]=new i(s)}return t}}const Me=[_e,xe,ve];function Ae(t=[]){Me.push(...[].concat(t))}function Oe(){X(Me,{to(t){return(new ge).type(this.constructor).from(this.toArray()).to(t)},fromArray(t){return this.init(t),this},toConsumable(){return this.toArray()},morph(t,e,n,i,r){return this.fromArray(t.map((function(t,s){return i.step(t,e[s],n,r[s],r)})))}})}class Path extends Shape{constructor(t,e=t){super(D("path",t),e)}array(){return this._array||(this._array=new ye(this.attr("d")))}clear(){return delete this._array,this}height(t){return null==t?this.bbox().height:this.size(this.bbox().width,t)}move(t,e){return this.attr("d",this.array().move(t,e))}plot(t){return null==t?this.array():this.clear().attr("d","string"==typeof t?t:this._array=new ye(t))}size(t,e){const n=l(this,t,e);return this.attr("d",this.array().size(n.width,n.height))}width(t){return null==t?this.bbox().width:this.size(t,this.bbox().height)}x(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)}y(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)}}Path.prototype.MorphArray=ye,n({Container:{path:Y((function(t){return this.put(new Path).plot(t||new ye)}))}}),P(Path,"Path");var ke={__proto__:null,array:function(){return this._array||(this._array=new Qt(this.attr("points")))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr("points",this.array().move(t,e))},plot:function(t){return null==t?this.array():this.clear().attr("points","string"==typeof t?t:this._array=new Qt(t))},size:function(t,e){const n=l(this,t,e);return this.attr("points",this.array().size(n.width,n.height))}};class Polygon extends Shape{constructor(t,e=t){super(D("polygon",t),e)}}n({Container:{polygon:Y((function(t){return this.put(new Polygon).plot(t||new Qt)}))}}),X(Polygon,Jt),X(Polygon,ke),P(Polygon,"Polygon");class Polyline extends Shape{constructor(t,e=t){super(D("polyline",t),e)}}n({Container:{polyline:Y((function(t){return this.put(new Polyline).plot(t||new Qt)}))}}),X(Polyline,Jt),X(Polyline,ke),P(Polyline,"Polyline");class Rect extends Shape{constructor(t,e=t){super(D("rect",t),e)}}X(Rect,{rx:Pt,ry:Rt}),n({Container:{rect:Y((function(t,e){return this.put(new Rect).size(t,e)}))}}),P(Rect,"Rect");class Te{constructor(){this._first=null,this._last=null}first(){return this._first&&this._first.value}last(){return this._last&&this._last.value}push(t){const e=void 0!==t.next?t:{value:t,next:null,prev:null};return this._last?(e.prev=this._last,this._last.next=e,this._last=e):(this._last=e,this._first=e),e}remove(t){t.prev&&(t.prev.next=t.next),t.next&&(t.next.prev=t.prev),t===this._last&&(this._last=t.prev),t===this._first&&(this._first=t.next),t.prev=null,t.next=null}shift(){const t=this._first;return t?(this._first=t.next,this._first&&(this._first.prev=null),this._last=this._first?this._last:null,t.value):null}}const Ce={nextDraw:null,frames:new Te,timeouts:new Te,immediates:new Te,timer:()=>b.window.performance||b.window.Date,transforms:[],frame(t){const e=Ce.frames.push({run:t});return null===Ce.nextDraw&&(Ce.nextDraw=b.window.requestAnimationFrame(Ce._draw)),e},timeout(t,e){e=e||0;const n=Ce.timer().now()+e,i=Ce.timeouts.push({run:t,time:n});return null===Ce.nextDraw&&(Ce.nextDraw=b.window.requestAnimationFrame(Ce._draw)),i},immediate(t){const e=Ce.immediates.push(t);return null===Ce.nextDraw&&(Ce.nextDraw=b.window.requestAnimationFrame(Ce._draw)),e},cancelFrame(t){null!=t&&Ce.frames.remove(t)},clearTimeout(t){null!=t&&Ce.timeouts.remove(t)},cancelImmediate(t){null!=t&&Ce.immediates.remove(t)},_draw(t){let e=null;const n=Ce.timeouts.last();for(;(e=Ce.timeouts.shift())&&(t>=e.time?e.run():Ce.timeouts.push(e),e!==n););let i=null;const r=Ce.frames.last();for(;i!==r&&(i=Ce.frames.shift());)i.run(t);let s=null;for(;s=Ce.immediates.shift();)s();Ce.nextDraw=Ce.timeouts.first()||Ce.frames.first()?b.window.requestAnimationFrame(Ce._draw):null}},Ne=function(t){const e=t.start,n=t.runner.duration();return{start:e,duration:n,end:e+n,runner:t.runner}},Se=function(){const t=b.window;return(t.performance||t.Date).now()};class Ee extends kt{constructor(t=Se){super(),this._timeSource=t,this.terminate()}active(){return!!this._nextFrame}finish(){return this.time(this.getEndTimeOfTimeline()+1),this.pause()}getEndTime(){const t=this.getLastRunnerInfo(),e=t?t.runner.duration():0;return(t?t.start:this._time)+e}getEndTimeOfTimeline(){const t=this._runners.map((t=>t.start+t.runner.duration()));return Math.max(0,...t)}getLastRunnerInfo(){return this.getRunnerInfoById(this._lastRunnerId)}getRunnerInfoById(t){return this._runners[this._runnerIds.indexOf(t)]||null}pause(){return this._paused=!0,this._continue()}persist(t){return null==t?this._persist:(this._persist=t,this)}play(){return this._paused=!1,this.updateTime()._continue()}reverse(t){const e=this.speed();if(null==t)return this.speed(-e);const n=Math.abs(e);return this.speed(t?-n:n)}schedule(t,e,n){if(null==t)return this._runners.map(Ne);let i=0;const r=this.getEndTime();if(e=e||0,null==n||"last"===n||"after"===n)i=r;else if("absolute"===n||"start"===n)i=e,e=0;else if("now"===n)i=this._time;else if("relative"===n){const n=this.getRunnerInfoById(t.id);n&&(i=n.start+e,e=0)}else{if("with-last"!==n)throw new Error('Invalid value for the "when" parameter');{const t=this.getLastRunnerInfo();i=t?t.start:this._time}}t.unschedule(),t.timeline(this);const s=t.persist(),o={persist:null===s?this._persist:s,start:i+e,runner:t};return this._lastRunnerId=t.id,this._runners.push(o),this._runners.sort(((t,e)=>t.start-e.start)),this._runnerIds=this._runners.map((t=>t.runner.id)),this.updateTime()._continue(),this}seek(t){return this.time(this._time+t)}source(t){return null==t?this._timeSource:(this._timeSource=t,this)}speed(t){return null==t?this._speed:(this._speed=t,this)}stop(){return this.time(0),this.pause()}time(t){return null==t?this._time:(this._time=t,this._continue(!0))}unschedule(t){const e=this._runnerIds.indexOf(t.id);return e<0||(this._runners.splice(e,1),this._runnerIds.splice(e,1),t.timeline(null)),this}updateTime(){return this.active()||(this._lastSourceTime=this._timeSource()),this}_continue(t=!1){return Ce.cancelFrame(this._nextFrame),this._nextFrame=null,t?this._stepImmediate():(this._paused||(this._nextFrame=Ce.frame(this._step)),this)}_stepFn(t=!1){const e=this._timeSource();let n=e-this._lastSourceTime;t&&(n=0);const i=this._speed*n+(this._time-this._lastStepTime);this._lastSourceTime=e,t||(this._time+=i,this._time=this._time<0?0:this._time),this._lastStepTime=this._time,this.fire("time",this._time);for(let t=this._runners.length;t--;){const e=this._runners[t],n=e.runner;this._time-e.start<=0&&n.reset()}let r=!1;for(let t=0,e=this._runners.length;t<e;t++){const n=this._runners[t],s=n.runner;let o=i;const h=this._time-n.start;if(h<=0){r=!0;continue}if(h<o&&(o=h),!s.active())continue;if(s.step(o).done){if(!0!==n.persist){s.duration()-s.time()+this._time+n.persist<this._time&&(s.unschedule(),--t,--e)}}else r=!0}return r&&!(this._speed<0&&0===this._time)||this._runnerIds.length&&this._speed<0&&this._time>0?this._continue():(this.pause(),this.fire("finished")),this}terminate(){this._startTime=0,this._speed=1,this._persist=0,this._nextFrame=null,this._paused=!0,this._runners=[],this._runnerIds=[],this._lastRunnerId=-1,this._time=0,this._lastSourceTime=0,this._lastStepTime=0,this._step=this._stepFn.bind(this,!1),this._stepImmediate=this._stepFn.bind(this,!0)}}n({Element:{timeline:function(t){return null==t?(this._timeline=this._timeline||new Ee,this._timeline):(this._timeline=t,this)}}});class je extends kt{constructor(t){super(),this.id=je.id++,t="function"==typeof(t=null==t?Ct.duration:t)?new ne(t):t,this._element=null,this._timeline=null,this.done=!1,this._queue=[],this._duration="number"==typeof t&&t,this._isDeclarative=t instanceof ne,this._stepper=this._isDeclarative?t:new ee,this._history={},this.enabled=!0,this._time=0,this._lastTime=0,this._reseted=!0,this.transforms=new lt,this.transformId=1,this._haveReversed=!1,this._reverse=!1,this._loopsDone=0,this._swing=!1,this._wait=0,this._times=1,this._frameId=null,this._persist=!!this._isDeclarative||null}static sanitise(t,e,n){let i=1,r=!1,s=0;return e=e??Ct.delay,n=n||"last","object"!=typeof(t=t??Ct.duration)||t instanceof te||(e=t.delay??e,n=t.when??n,r=t.swing||r,i=t.times??i,s=t.wait??s,t=t.duration??Ct.duration),{duration:t,delay:e,swing:r,times:i,wait:s,when:n}}active(t){return null==t?this.enabled:(this.enabled=t,this)}addTransform(t){return this.transforms.lmultiplyO(t),this}after(t){return this.on("finished",t)}animate(t,e,n){const i=je.sanitise(t,e,n),r=new je(i.duration);return this._timeline&&r.timeline(this._timeline),this._element&&r.element(this._element),r.loop(i).schedule(i.delay,i.when)}clearTransform(){return this.transforms=new lt,this}clearTransformsFromQueue(){this.done&&this._timeline&&this._timeline._runnerIds.includes(this.id)||(this._queue=this._queue.filter((t=>!t.isTransform)))}delay(t){return this.animate(0,t)}duration(){return this._times*(this._wait+this._duration)-this._wait}during(t){return this.queue(null,t)}ease(t){return this._stepper=new ee(t),this}element(t){return null==t?this._element:(this._element=t,t._prepareRunner(),this)}finish(){return this.step(1/0)}loop(t,e,n){return"object"==typeof t&&(e=t.swing,n=t.wait,t=t.times),this._times=t||1/0,this._swing=e||!1,this._wait=n||0,!0===this._times&&(this._times=1/0),this}loops(t){const e=this._duration+this._wait;if(null==t){const t=Math.floor(this._time/e),n=(this._time-t*e)/this._duration;return Math.min(t+n,this._times)}const n=t%1,i=e*Math.floor(t)+this._duration*n;return this.time(i)}persist(t){return null==t?this._persist:(this._persist=t,this)}position(t){const e=this._time,n=this._duration,i=this._wait,r=this._times,s=this._swing,o=this._reverse;let h;if(null==t){const t=function(t){const e=s*Math.floor(t%(2*(i+n))/(i+n)),r=e&&!o||!e&&o,h=Math.pow(-1,r)*(t%(i+n))/n+r;return Math.max(Math.min(h,1),0)},u=r*(i+n)-i;return h=e<=0?Math.round(t(1e-5)):e<u?t(e):Math.round(t(u-1e-5)),h}const u=Math.floor(this.loops()),a=s&&u%2==0;return h=u+(a&&!o||o&&a?t:1-t),this.loops(h)}progress(t){return null==t?Math.min(1,this._time/this.duration()):this.time(t*this.duration())}queue(t,e,n,i){this._queue.push({initialiser:t||Tt,runner:e||Tt,retarget:n,isTransform:i,initialised:!1,finished:!1});return this.timeline()&&this.timeline()._continue(),this}reset(){return this._reseted||(this.time(0),this._reseted=!0),this}reverse(t){return this._reverse=null==t?!this._reverse:t,this}schedule(t,e,n){if(t instanceof Ee||(n=e,e=t,t=this.timeline()),!t)throw Error("Runner cannot be scheduled without timeline");return t.schedule(this,e,n),this}step(t){if(!this.enabled)return this;t=null==t?16:t,this._time+=t;const e=this.position(),n=this._lastPosition!==e&&this._time>=0;this._lastPosition=e;const i=this.duration(),r=this._lastTime<=0&&this._time>0,s=this._lastTime<i&&this._time>=i;this._lastTime=this._time,r&&this.fire("start",this);const o=this._isDeclarative;this.done=!o&&!s&&this._time>=i,this._reseted=!1;let h=!1;return(n||o)&&(this._initialise(n),this.transforms=new lt,h=this._run(o?t:e),this.fire("step",this)),this.done=this.done||h&&o,s&&this.fire("finished",this),this}time(t){if(null==t)return this._time;const e=t-this._time;return this.step(e),this}timeline(t){return void 0===t?this._timeline:(this._timeline=t,this)}unschedule(){const t=this.timeline();return t&&t.unschedule(this),this}_initialise(t){if(t||this._isDeclarative)for(let e=0,n=this._queue.length;e<n;++e){const n=this._queue[e],i=this._isDeclarative||!n.initialised&&t;t=!n.finished,i&&t&&(n.initialiser.call(this),n.initialised=!0)}}_rememberMorpher(t,e){if(this._history[t]={morpher:e,caller:this._queue[this._queue.length-1]},this._isDeclarative){const t=this.timeline();t&&t.play()}}_run(t){let e=!0;for(let n=0,i=this._queue.length;n<i;++n){const i=this._queue[n],r=i.runner.call(this,t);i.finished=i.finished||!0===r,e=e&&i.finished}return e}_tryRetarget(t,e,n){if(this._history[t]){if(!this._history[t].caller.initialised){const e=this._queue.indexOf(this._history[t].caller);return this._queue.splice(e,1),!1}this._history[t].caller.retarget?this._history[t].caller.retarget.call(this,e,n):this._history[t].morpher.to(e),this._history[t].caller.finished=!1;const i=this.timeline();return i&&i.play(),!0}return!1}}je.id=0;class De{constructor(t=new lt,e=-1,n=!0){this.transforms=t,this.id=e,this.done=n}clearTransformsFromQueue(){}}X([je,De],{mergeWith(t){return new De(t.transforms.lmultiply(this.transforms),t.id)}});const Ie=(t,e)=>t.lmultiplyO(e),ze=t=>t.transforms;function Pe(){const t=this._transformationRunners.runners.map(ze).reduce(Ie,new lt);this.transform(t),this._transformationRunners.merge(),1===this._transformationRunners.length()&&(this._frameId=null)}class Re{constructor(){this.runners=[],this.ids=[]}add(t){if(this.runners.includes(t))return;const e=t.id+1;return this.runners.push(t),this.ids.push(e),this}clearBefore(t){const e=this.ids.indexOf(t+1)||1;return this.ids.splice(0,e,0),this.runners.splice(0,e,new De).forEach((t=>t.clearTransformsFromQueue())),this}edit(t,e){const n=this.ids.indexOf(t+1);return this.ids.splice(n,1,t+1),this.runners.splice(n,1,e),this}getByID(t){return this.runners[this.ids.indexOf(t+1)]}length(){return this.ids.length}merge(){let t=null;for(let e=0;e<this.runners.length;++e){const n=this.runners[e];if(t&&n.done&&t.done&&(!n._timeline||!n._timeline._runnerIds.includes(n.id))&&(!t._timeline||!t._timeline._runnerIds.includes(t.id))){this.remove(n.id);const i=n.mergeWith(t);this.edit(t.id,i),t=i,--e}else t=n}return this}remove(t){const e=this.ids.indexOf(t+1);return this.ids.splice(e,1),this.runners.splice(e,1),this}}n({Element:{animate(t,e,n){const i=je.sanitise(t,e,n),r=this.timeline();return new je(i.duration).loop(i).element(this).timeline(r.play()).schedule(i.delay,i.when)},delay(t,e){return this.animate(0,t,e)},_clearTransformRunnersBefore(t){this._transformationRunners.clearBefore(t.id)},_currentTransform(t){return this._transformationRunners.runners.filter((e=>e.id<=t.id)).map(ze).reduce(Ie,new lt)},_addRunner(t){this._transformationRunners.add(t),Ce.cancelImmediate(this._frameId),this._frameId=Ce.immediate(Pe.bind(this))},_prepareRunner(){null==this._frameId&&(this._transformationRunners=(new Re).add(new De(new lt(this))))}}});X(je,{attr(t,e){return this.styleAttr("attr",t,e)},css(t,e){return this.styleAttr("css",t,e)},styleAttr(t,e,n){if("string"==typeof e)return this.styleAttr(t,{[e]:n});let i=e;if(this._tryRetarget(t,i))return this;let r=new ge(this._stepper).to(i),s=Object.keys(i);return this.queue((function(){r=r.from(this.element()[t](s))}),(function(e){return this.element()[t](r.at(e).valueOf()),r.done()}),(function(e){const n=Object.keys(e),o=(h=s,n.filter((t=>!h.includes(t))));var h;if(o.length){const e=this.element()[t](o),n=new ve(r.from()).valueOf();Object.assign(n,e),r.from(n)}const u=new ve(r.to()).valueOf();Object.assign(u,e),r.to(u),s=n,i=e})),this._rememberMorpher(t,r),this},zoom(t,e){if(this._tryRetarget("zoom",t,e))return this;let n=new ge(this._stepper).to(new jt(t));return this.queue((function(){n=n.from(this.element().zoom())}),(function(t){return this.element().zoom(n.at(t),e),n.done()}),(function(t,i){e=i,n.to(t)})),this._rememberMorpher("zoom",n),this},transform(t,e,n){if(e=t.relative||e,this._isDeclarative&&!e&&this._tryRetarget("transform",t))return this;const i=lt.isMatrixLike(t);n=null!=t.affine?t.affine:null!=n?n:!i;const r=new ge(this._stepper).type(n?xe:lt);let s,o,h,u,a;return this.queue((function(){o=o||this.element(),s=s||c(t,o),a=new lt(e?void 0:o),o._addRunner(this),e||o._clearTransformRunnersBefore(this)}),(function(l){e||this.clearTransform();const{x:c,y:f}=new ut(s).transform(o._currentTransform(this));let d=new lt({...t,origin:[c,f]}),m=this._isDeclarative&&h?h:a;if(n){d=d.decompose(c,f),m=m.decompose(c,f);const t=d.rotate,e=m.rotate,n=[t-360,t,t+360],i=n.map((t=>Math.abs(t-e))),r=Math.min(...i),s=i.indexOf(r);d.rotate=n[s]}e&&(i||(d.rotate=t.rotate||0),this._isDeclarative&&u&&(m.rotate=u)),r.from(m),r.to(d);const p=r.at(l);return u=p.rotate,h=new lt(p),this.addTransform(h),o._addRunner(this),r.done()}),(function(e){(e.origin||"center").toString()!==(t.origin||"center").toString()&&(s=c(e,o)),t={...e,origin:s}}),!0),this._isDeclarative&&this._rememberMorpher("transform",r),this},x(t){return this._queueNumber("x",t)},y(t){return this._queueNumber("y",t)},ax(t){return this._queueNumber("ax",t)},ay(t){return this._queueNumber("ay",t)},dx(t=0){return this._queueNumberDelta("x",t)},dy(t=0){return this._queueNumberDelta("y",t)},dmove(t,e){return this.dx(t).dy(e)},_queueNumberDelta(t,e){if(e=new jt(e),this._tryRetarget(t,e))return this;const n=new ge(this._stepper).to(e);let i=null;return this.queue((function(){i=this.element()[t](),n.from(i),n.to(i+e)}),(function(e){return this.element()[t](n.at(e)),n.done()}),(function(t){n.to(i+new jt(t))})),this._rememberMorpher(t,n),this},_queueObject(t,e){if(this._tryRetarget(t,e))return this;const n=new ge(this._stepper).to(e);return this.queue((function(){n.from(this.element()[t]())}),(function(e){return this.element()[t](n.at(e)),n.done()})),this._rememberMorpher(t,n),this},_queueNumber(t,e){return this._queueObject(t,new jt(e))},cx(t){return this._queueNumber("cx",t)},cy(t){return this._queueNumber("cy",t)},move(t,e){return this.x(t).y(e)},amove(t,e){return this.ax(t).ay(e)},center(t,e){return this.cx(t).cy(e)},size(t,e){let n;return t&&e||(n=this._element.bbox()),t||(t=n.width/n.height*e),e||(e=n.height/n.width*t),this.width(t).height(e)},width(t){return this._queueNumber("width",t)},height(t){return this._queueNumber("height",t)},plot(t,e,n,i){if(4===arguments.length)return this.plot([t,e,n,i]);if(this._tryRetarget("plot",t))return this;const r=new ge(this._stepper).type(this._element.MorphArray).to(t);return this.queue((function(){r.from(this._element.array())}),(function(t){return this._element.plot(r.at(t)),r.done()})),this._rememberMorpher("plot",r),this},leading(t){return this._queueNumber("leading",t)},viewbox(t,e,n,i){return this._queueObject("viewbox",new dt(t,e,n,i))},update(t){return"object"!=typeof t?this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]}):(null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",t.offset),this)}}),X(je,{rx:Pt,ry:Rt,from:Vt,to:$t}),P(je,"Runner");class Svg extends Container{constructor(t,e=t){super(D("svg",t),e),this.namespace()}defs(){return this.isRoot()?I(this.node.querySelector("defs"))||this.put(new Defs):this.root().defs()}isRoot(){return!this.node.parentNode||!(this.node.parentNode instanceof b.window.SVGElement)&&"#document-fragment"!==this.node.parentNode.nodeName}namespace(){return this.isRoot()?this.attr({xmlns:y,version:"1.1"}).attr("xmlns:xlink",_,g):this.root().namespace()}removeNamespace(){return this.attr({xmlns:null,version:null}).attr("xmlns:xlink",null,g).attr("xmlns:svgjs",null,g)}root(){return this.isRoot()?this:super.root()}}n({Container:{nested:Y((function(){return this.put(new Svg)}))}}),P(Svg,"Svg",!0);class Symbol extends Container{constructor(t,e=t){super(D("symbol",t),e)}}n({Container:{symbol:Y((function(){return this.put(new Symbol)}))}}),P(Symbol,"Symbol");var Le={__proto__:null,amove:function(t,e){return this.ax(t).ay(e)},ax:function(t){return this.attr("x",t)},ay:function(t){return this.attr("y",t)},build:function(t){return this._build=!!t,this},center:function(t,e,n=this.bbox()){return this.cx(t,n).cy(e,n)},cx:function(t,e=this.bbox()){return null==t?e.cx:this.attr("x",this.attr("x")+t-e.cx)},cy:function(t,e=this.bbox()){return null==t?e.cy:this.attr("y",this.attr("y")+t-e.cy)},length:function(){return this.node.getComputedTextLength()},move:function(t,e,n=this.bbox()){return this.x(t,n).y(e,n)},plain:function(t){return!1===this._build&&this.clear(),this.node.appendChild(b.document.createTextNode(t)),this},x:function(t,e=this.bbox()){return null==t?e.x:this.attr("x",this.attr("x")+t-e.x)},y:function(t,e=this.bbox()){return null==t?e.y:this.attr("y",this.attr("y")+t-e.y)}};class Text extends Shape{constructor(t,e=t){super(D("text",t),e),this.dom.leading=this.dom.leading??new jt(1.3),this._rebuild=!0,this._build=!1}leading(t){return null==t?this.dom.leading:(this.dom.leading=new jt(t),this.rebuild())}rebuild(t){if("boolean"==typeof t&&(this._rebuild=t),this._rebuild){const t=this;let e=0;const n=this.dom.leading;this.each((function(i){if(d(this.node))return;const r=b.window.getComputedStyle(this.node).getPropertyValue("font-size"),s=n*new jt(r);this.dom.newLined&&(this.attr("x",t.attr("x")),"\n"===this.text()?e+=s:(this.attr("dy",i?s+e:0),e=0))})),this.fire("rebuild")}return this}setData(t){return this.dom=t,this.dom.leading=new jt(t.leading||1.3),this}writeDataToDom(){return m(this,this.dom,{leading:1.3}),this}text(t){if(void 0===t){const e=this.node.childNodes;let n=0;t="";for(let i=0,r=e.length;i<r;++i)"textPath"===e[i].nodeName||d(e[i])?0===i&&(n=i+1):(i!==n&&3!==e[i].nodeType&&!0===I(e[i]).dom.newLined&&(t+="\n"),t+=e[i].textContent);return t}if(this.clear().build(!0),"function"==typeof t)t.call(this,this);else for(let e=0,n=(t=(t+"").split("\n")).length;e<n;e++)this.newLine(t[e]);return this.build(!1).rebuild()}}X(Text,Le),n({Container:{text:Y((function(t=""){return this.put(new Text).text(t)})),plain:Y((function(t=""){return this.put(new Text).plain(t)}))}}),P(Text,"Text");class Tspan extends Shape{constructor(t,e=t){super(D("tspan",t),e),this._build=!1}dx(t){return this.attr("dx",t)}dy(t){return this.attr("dy",t)}newLine(){this.dom.newLined=!0;const t=this.parent();if(!(t instanceof Text))return this;const e=t.index(this),n=b.window.getComputedStyle(this.node).getPropertyValue("font-size"),i=t.dom.leading*new jt(n);return this.dy(e?i:0).attr("x",t.x())}text(t){return null==t?this.node.textContent+(this.dom.newLined?"\n":""):("function"==typeof t?(this.clear().build(!0),t.call(this,this),this.build(!1)):this.plain(t),this)}}X(Tspan,Le),n({Tspan:{tspan:Y((function(t=""){const e=new Tspan;return this._build||this.clear(),this.put(e).text(t)}))},Text:{newLine:function(t=""){return this.tspan(t).newLine()}}}),P(Tspan,"Tspan");class Circle extends Shape{constructor(t,e=t){super(D("circle",t),e)}radius(t){return this.attr("r",t)}rx(t){return this.attr("r",t)}ry(t){return this.rx(t)}size(t){return this.radius(new jt(t).divide(2))}}X(Circle,{x:Lt,y:qt,cx:Ft,cy:Xt,width:Yt,height:Bt}),n({Container:{circle:Y((function(t=0){return this.put(new Circle).size(t).move(0,0)}))}}),P(Circle,"Circle");class ClipPath extends Container{constructor(t,e=t){super(D("clipPath",t),e)}remove(){return this.targets().forEach((function(t){t.unclip()})),super.remove()}targets(){return wt("svg [clip-path*="+this.id()+"]")}}n({Container:{clip:Y((function(){return this.defs().put(new ClipPath)}))},Element:{clipper(){return this.reference("clip-path")},clipWith(t){const e=t instanceof ClipPath?t:this.parent().clip().add(t);return this.attr("clip-path","url(#"+e.id()+")")},unclip(){return this.attr("clip-path",null)}}}),P(ClipPath,"ClipPath");class qe extends Element{constructor(t,e=t){super(D("foreignObject",t),e)}}n({Container:{foreignObject:Y((function(t,e){return this.put(new qe).size(t,e)}))}}),P(qe,"ForeignObject");var Fe={__proto__:null,dmove:function(t,e){return this.children().forEach((n=>{let i;try{i=n.node instanceof T().SVGSVGElement?new dt(n.attr(["x","y","width","height"])):n.bbox()}catch(t){return}const r=new lt(n),s=r.translate(t,e).transform(r.inverse()),o=new ut(i.x,i.y).transform(s);n.move(o.x,o.y)})),this},dx:function(t){return this.dmove(t,0)},dy:function(t){return this.dmove(0,t)},height:function(t,e=this.bbox()){return null==t?e.height:this.size(e.width,t,e)},move:function(t=0,e=0,n=this.bbox()){const i=t-n.x,r=e-n.y;return this.dmove(i,r)},size:function(t,e,n=this.bbox()){const i=l(this,t,e,n),r=i.width/n.width,s=i.height/n.height;return this.children().forEach((t=>{const e=new ut(n).transform(new lt(t).inverse());t.scale(r,s,e.x,e.y)})),this},width:function(t,e=this.bbox()){return null==t?e.width:this.size(t,e.height,e)},x:function(t,e=this.bbox()){return null==t?e.x:this.move(t,e.y,e)},y:function(t,e=this.bbox()){return null==t?e.y:this.move(e.x,t,e)}};class G extends Container{constructor(t,e=t){super(D("g",t),e)}}X(G,Fe),n({Container:{group:Y((function(){return this.put(new G)}))}}),P(G,"G");class A extends Container{constructor(t,e=t){super(D("a",t),e)}target(t){return this.attr("target",t)}to(t){return this.attr("href",t,_)}}X(A,Fe),n({Container:{link:Y((function(t){return this.put(new A).to(t)}))},Element:{unlink(){const t=this.linker();if(!t)return this;const e=t.parent();if(!e)return this.remove();const n=e.index(t);return e.add(this,n),t.remove(),this},linkTo(t){let e=this.linker();return e||(e=new A,this.wrap(e)),"function"==typeof t?t.call(e,e):e.to(t),this},linker(){const t=this.parent();return t&&"a"===t.node.nodeName.toLowerCase()?t:null}}}),P(A,"A");class Mask extends Container{constructor(t,e=t){super(D("mask",t),e)}remove(){return this.targets().forEach((function(t){t.unmask()})),super.remove()}targets(){return wt("svg [mask*="+this.id()+"]")}}n({Container:{mask:Y((function(){return this.defs().put(new Mask)}))},Element:{masker(){return this.reference("mask")},maskWith(t){const e=t instanceof Mask?t:this.parent().mask().add(t);return this.attr("mask","url(#"+e.id()+")")},unmask(){return this.attr("mask",null)}}}),P(Mask,"Mask");class Stop extends Element{constructor(t,e=t){super(D("stop",t),e)}update(t){return("number"==typeof t||t instanceof jt)&&(t={offset:arguments[0],color:arguments[1],opacity:arguments[2]}),null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",new jt(t.offset)),this}}n({Gradient:{stop:function(t,e,n){return this.put(new Stop).update(t,e,n)}}}),P(Stop,"Stop");class Style extends Element{constructor(t,e=t){super(D("style",t),e)}addText(t=""){return this.node.textContent+=t,this}font(t,e,n={}){return this.rule("@font-face",{fontFamily:t,src:e,...n})}rule(t,e){return this.addText(function(t,e){if(!t)return"";if(!e)return t;let n=t+"{";for(const t in e)n+=u(t)+":"+e[t]+";";return n+="}",n}(t,e))}}n("Dom",{style(t,e){return this.put(new Style).rule(t,e)},fontface(t,e,n){return this.put(new Style).font(t,e,n)}}),P(Style,"Style");class TextPath extends Text{constructor(t,e=t){super(D("textPath",t),e)}array(){const t=this.track();return t?t.array():null}plot(t){const e=this.track();let n=null;return e&&(n=e.plot(t)),null==t?n:this}track(){return this.reference("href")}}n({Container:{textPath:Y((function(t,e){return t instanceof Text||(t=this.text(t)),t.path(e)}))},Text:{path:Y((function(t,e=!0){const n=new TextPath;let i;if(t instanceof Path||(t=this.defs().path(t)),n.attr("href","#"+t,_),e)for(;i=this.node.firstChild;)n.node.appendChild(i);return this.put(n)})),textPath(){return this.findOne("textPath")}},Path:{text:Y((function(t){return t instanceof Text||(t=(new Text).addTo(this.parent()).text(t)),t.path(this)})),targets(){return wt("svg textPath").filter((t=>(t.attr("href")||"").includes(this.id())))}}}),TextPath.prototype.MorphArray=ye,P(TextPath,"TextPath");class Use extends Shape{constructor(t,e=t){super(D("use",t),e)}use(t,e){return this.attr("href",(e||"")+"#"+t,_)}}n({Container:{use:Y((function(t,e){return this.put(new Use).use(t,e)}))}}),P(Use,"Use");const Xe=j;X([Svg,Symbol,Image,Pattern,Marker],i("viewbox")),X([Line,Polyline,Polygon,Path],i("marker")),X(Text,i("Text")),X(Path,i("Path")),X(Defs,i("Defs")),X([Text,Tspan],i("Tspan")),X([Rect,Ellipse,Gradient,je],i("radius")),X(kt,i("EventTarget")),X(Dom,i("Dom")),X(Element,i("Element")),X(Shape,i("Shape")),X([Container,Ht],i("Container")),X(Gradient,i("Gradient")),X(je,i("Runner")),pt.extend([...new Set(e)]),Ae([jt,ht,dt,lt,Et,Qt,ye,ut]),Oe();var Ye={__proto__:null,A:A,Animator:Ce,Array:Et,Box:dt,Circle:Circle,ClipPath:ClipPath,Color:ht,Container:Container,Controller:ne,Defs:Defs,Dom:Dom,Ease:ee,Element:Element,Ellipse:Ellipse,EventTarget:kt,ForeignObject:qe,Fragment:Ht,G:G,Gradient:Gradient,Image:Image,Line:Line,List:pt,Marker:Marker,Mask:Mask,Matrix:lt,Morphable:ge,NonMorphable:_e,Number:jt,ObjectBag:ve,PID:se,Path:Path,PathArray:ye,Pattern:Pattern,Point:ut,PointArray:Qt,Polygon:Polygon,Polyline:Polyline,Queue:Te,Rect:Rect,Runner:je,SVG:Xe,Shape:Shape,Spring:re,Stop:Stop,Style:Style,Svg:Svg,Symbol:Symbol,Text:Text,TextPath:TextPath,Timeline:Ee,TransformBag:xe,Tspan:Tspan,Use:Use,adopt:I,assignNewId:F,clearEvents:vt,create:E,defaults:St,dispatch:Ot,easing:Kt,eid:q,extend:X,find:wt,getClass:R,getEventTarget:bt,getEvents:xt,getWindow:T,makeInstance:j,makeMorphable:Oe,mockAdopt:function(t=I){z=t},namespaces:x,nodeOrNew:D,off:At,on:Mt,parser:ct,regex:it,register:P,registerMorphableType:Ae,registerWindow:v,restoreWindow:k,root:S,saveWindow:O,utils:p,windowEvents:_t,withWindow:function(t,e){O(),v(t,t.document),e(t,t.document),k()},wrapWithAttrCheck:Y};function Be(t,e){return j(t,e)}return Object.assign(Be,Ye),Be}();
+//# sourceMappingURL=svg.min.js.map
diff --git a/site/controls/!16 Button - 16 number.json b/site/controls/!16 Button - 16 number.json
new file mode 100644
index 0000000..85e4591
--- /dev/null
+++ b/site/controls/!16 Button - 16 number.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "fn": "!16 Button - 16 number.png"} \ No newline at end of file
diff --git a/site/controls/!16 Button - 16 number.png b/site/controls/!16 Button - 16 number.png
new file mode 100644
index 0000000..e7201a5
--- /dev/null
+++ b/site/controls/!16 Button - 16 number.png
Binary files differ
diff --git a/site/controls/!16 Button - Orange 2.json b/site/controls/!16 Button - Orange 2.json
new file mode 100644
index 0000000..f16e8cd
--- /dev/null
+++ b/site/controls/!16 Button - Orange 2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "fn": "!16 Button - Orange 2.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/!16 Button - Orange 2.png b/site/controls/!16 Button - Orange 2.png
new file mode 100644
index 0000000..49ce9c5
--- /dev/null
+++ b/site/controls/!16 Button - Orange 2.png
Binary files differ
diff --git a/site/controls/!16 Button 3 POWER.json b/site/controls/!16 Button 3 POWER.json
new file mode 100644
index 0000000..ddae1cc
--- /dev/null
+++ b/site/controls/!16 Button 3 POWER.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "fn": "!16 Button 3 POWER.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/!16 Button 3 POWER.png b/site/controls/!16 Button 3 POWER.png
new file mode 100644
index 0000000..43410e4
--- /dev/null
+++ b/site/controls/!16 Button 3 POWER.png
Binary files differ
diff --git a/site/controls/!16 Button 4 invis.json b/site/controls/!16 Button 4 invis.json
new file mode 100644
index 0000000..e6c5851
--- /dev/null
+++ b/site/controls/!16 Button 4 invis.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "fn": "!16 Button 4 invis.png"} \ No newline at end of file
diff --git a/site/controls/!16 Button 4 invis.png b/site/controls/!16 Button 4 invis.png
new file mode 100644
index 0000000..91764e5
--- /dev/null
+++ b/site/controls/!16 Button 4 invis.png
Binary files differ
diff --git a/site/controls/!16 Button 5 random.json b/site/controls/!16 Button 5 random.json
new file mode 100644
index 0000000..1b998ba
--- /dev/null
+++ b/site/controls/!16 Button 5 random.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "fn": "!16 Button 5 random.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/!16 Button 5 random.png b/site/controls/!16 Button 5 random.png
new file mode 100644
index 0000000..bfd5298
--- /dev/null
+++ b/site/controls/!16 Button 5 random.png
Binary files differ
diff --git a/site/controls/!16 Button 5 randomTe1.json b/site/controls/!16 Button 5 randomTe1.json
new file mode 100644
index 0000000..6bd5922
--- /dev/null
+++ b/site/controls/!16 Button 5 randomTe1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "fn": "!16 Button 5 randomTe1.png"} \ No newline at end of file
diff --git a/site/controls/!16 Button 5 randomTe1.png b/site/controls/!16 Button 5 randomTe1.png
new file mode 100644
index 0000000..c34fa6f
--- /dev/null
+++ b/site/controls/!16 Button 5 randomTe1.png
Binary files differ
diff --git a/site/controls/!16 Button speaker.json b/site/controls/!16 Button speaker.json
new file mode 100644
index 0000000..cccd282
--- /dev/null
+++ b/site/controls/!16 Button speaker.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "fn": "!16 Button speaker.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/!16 Button speaker.png b/site/controls/!16 Button speaker.png
new file mode 100644
index 0000000..c6627df
--- /dev/null
+++ b/site/controls/!16 Button speaker.png
Binary files differ
diff --git a/site/controls/!16 Circle letter P.json b/site/controls/!16 Circle letter P.json
new file mode 100644
index 0000000..5cc4ef2
--- /dev/null
+++ b/site/controls/!16 Circle letter P.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "fn": "!16 Circle letter P.png"} \ No newline at end of file
diff --git a/site/controls/!16 Circle letter P.png b/site/controls/!16 Circle letter P.png
new file mode 100644
index 0000000..7a1a094
--- /dev/null
+++ b/site/controls/!16 Circle letter P.png
Binary files differ
diff --git a/site/controls/!16 Circle.json b/site/controls/!16 Circle.json
new file mode 100644
index 0000000..45392c1
--- /dev/null
+++ b/site/controls/!16 Circle.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "fn": "!16 Circle.png"} \ No newline at end of file
diff --git a/site/controls/!16 Circle.png b/site/controls/!16 Circle.png
new file mode 100644
index 0000000..02b37fe
--- /dev/null
+++ b/site/controls/!16 Circle.png
Binary files differ
diff --git a/site/controls/!32 Button 2.json b/site/controls/!32 Button 2.json
new file mode 100644
index 0000000..2d66456
--- /dev/null
+++ b/site/controls/!32 Button 2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "fn": "!32 Button 2.png"} \ No newline at end of file
diff --git a/site/controls/!32 Button 2.png b/site/controls/!32 Button 2.png
new file mode 100644
index 0000000..fd14301
--- /dev/null
+++ b/site/controls/!32 Button 2.png
Binary files differ
diff --git a/site/controls/!32 Button invis.json b/site/controls/!32 Button invis.json
new file mode 100644
index 0000000..d7b2d4e
--- /dev/null
+++ b/site/controls/!32 Button invis.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "fn": "!32 Button invis.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/!32 Button invis.png b/site/controls/!32 Button invis.png
new file mode 100644
index 0000000..63289f7
--- /dev/null
+++ b/site/controls/!32 Button invis.png
Binary files differ
diff --git a/site/controls/!3c Knob Blue.json b/site/controls/!3c Knob Blue.json
new file mode 100644
index 0000000..86294ba
--- /dev/null
+++ b/site/controls/!3c Knob Blue.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "!3c Knob Blue.png"} \ No newline at end of file
diff --git a/site/controls/!3c Knob Blue.png b/site/controls/!3c Knob Blue.png
new file mode 100644
index 0000000..b07cf61
--- /dev/null
+++ b/site/controls/!3c Knob Blue.png
Binary files differ
diff --git a/site/controls/!3c Knob Green.json b/site/controls/!3c Knob Green.json
new file mode 100644
index 0000000..1d4863b
--- /dev/null
+++ b/site/controls/!3c Knob Green.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "!3c Knob Green.png"} \ No newline at end of file
diff --git a/site/controls/!3c Knob Green.png b/site/controls/!3c Knob Green.png
new file mode 100644
index 0000000..a94ab58
--- /dev/null
+++ b/site/controls/!3c Knob Green.png
Binary files differ
diff --git a/site/controls/!3c Knob Red.json b/site/controls/!3c Knob Red.json
new file mode 100644
index 0000000..48b0133
--- /dev/null
+++ b/site/controls/!3c Knob Red.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "!3c Knob Red.png"} \ No newline at end of file
diff --git a/site/controls/!3c Knob Red.png b/site/controls/!3c Knob Red.png
new file mode 100644
index 0000000..ab0ad34
--- /dev/null
+++ b/site/controls/!3c Knob Red.png
Binary files differ
diff --git a/site/controls/!3c Knob Yellow.json b/site/controls/!3c Knob Yellow.json
new file mode 100644
index 0000000..3a3918f
--- /dev/null
+++ b/site/controls/!3c Knob Yellow.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "!3c Knob Yellow.png"} \ No newline at end of file
diff --git a/site/controls/!3c Knob Yellow.png b/site/controls/!3c Knob Yellow.png
new file mode 100644
index 0000000..98ec460
--- /dev/null
+++ b/site/controls/!3c Knob Yellow.png
Binary files differ
diff --git a/site/controls/!9-2020_LEON3D-2020edit_01.json b/site/controls/!9-2020_LEON3D-2020edit_01.json
new file mode 100644
index 0000000..f9537ae
--- /dev/null
+++ b/site/controls/!9-2020_LEON3D-2020edit_01.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 128, "ctltype": 0, "fn": "!9-2020_LEON3D-2020edit_01.png"} \ No newline at end of file
diff --git a/site/controls/!9-2020_LEON3D-2020edit_01.png b/site/controls/!9-2020_LEON3D-2020edit_01.png
new file mode 100644
index 0000000..226cd64
--- /dev/null
+++ b/site/controls/!9-2020_LEON3D-2020edit_01.png
Binary files differ
diff --git a/site/controls/!A 1.json b/site/controls/!A 1.json
new file mode 100644
index 0000000..f4ffd19
--- /dev/null
+++ b/site/controls/!A 1.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "fn": "!A 1.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/!A 1.png b/site/controls/!A 1.png
new file mode 100644
index 0000000..6baf372
--- /dev/null
+++ b/site/controls/!A 1.png
Binary files differ
diff --git a/site/controls/!A 2 MED.json b/site/controls/!A 2 MED.json
new file mode 100644
index 0000000..d787a4c
--- /dev/null
+++ b/site/controls/!A 2 MED.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "fn": "!A 2 MED.png"} \ No newline at end of file
diff --git a/site/controls/!A 2 MED.png b/site/controls/!A 2 MED.png
new file mode 100644
index 0000000..6d107a6
--- /dev/null
+++ b/site/controls/!A 2 MED.png
Binary files differ
diff --git a/site/controls/!A 2 SMALL.json b/site/controls/!A 2 SMALL.json
new file mode 100644
index 0000000..15d6ac6
--- /dev/null
+++ b/site/controls/!A 2 SMALL.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "fn": "!A 2 SMALL.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/!A 2 SMALL.png b/site/controls/!A 2 SMALL.png
new file mode 100644
index 0000000..264aca2
--- /dev/null
+++ b/site/controls/!A 2 SMALL.png
Binary files differ
diff --git a/site/controls/!A 2 SMALL_v0001.json b/site/controls/!A 2 SMALL_v0001.json
new file mode 100644
index 0000000..d635f98
--- /dev/null
+++ b/site/controls/!A 2 SMALL_v0001.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "fn": "!A 2 SMALL_v0001.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/!A 2 SMALL_v0001.png b/site/controls/!A 2 SMALL_v0001.png
new file mode 100644
index 0000000..bc36468
--- /dev/null
+++ b/site/controls/!A 2 SMALL_v0001.png
Binary files differ
diff --git a/site/controls/!A 2.json b/site/controls/!A 2.json
new file mode 100644
index 0000000..291543c
--- /dev/null
+++ b/site/controls/!A 2.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "fn": "!A 2.png"} \ No newline at end of file
diff --git a/site/controls/!A 2.png b/site/controls/!A 2.png
new file mode 100644
index 0000000..3a170ba
--- /dev/null
+++ b/site/controls/!A 2.png
Binary files differ
diff --git a/site/controls/!A 2_v0001.json b/site/controls/!A 2_v0001.json
new file mode 100644
index 0000000..d35299c
--- /dev/null
+++ b/site/controls/!A 2_v0001.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "fn": "!A 2_v0001.png"} \ No newline at end of file
diff --git a/site/controls/!A 2_v0001.png b/site/controls/!A 2_v0001.png
new file mode 100644
index 0000000..b973d7f
--- /dev/null
+++ b/site/controls/!A 2_v0001.png
Binary files differ
diff --git a/site/controls/!A 3.json b/site/controls/!A 3.json
new file mode 100644
index 0000000..65bc86c
--- /dev/null
+++ b/site/controls/!A 3.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "fn": "!A 3.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/!A 3.png b/site/controls/!A 3.png
new file mode 100644
index 0000000..93f5232
--- /dev/null
+++ b/site/controls/!A 3.png
Binary files differ
diff --git a/site/controls/!AL 2S Grey Empty Knob Blue.json b/site/controls/!AL 2S Grey Empty Knob Blue.json
new file mode 100644
index 0000000..4030b41
--- /dev/null
+++ b/site/controls/!AL 2S Grey Empty Knob Blue.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL 2S Grey Empty Knob Blue.png"} \ No newline at end of file
diff --git a/site/controls/!AL 2S Grey Empty Knob Blue.png b/site/controls/!AL 2S Grey Empty Knob Blue.png
new file mode 100644
index 0000000..4c195a9
--- /dev/null
+++ b/site/controls/!AL 2S Grey Empty Knob Blue.png
Binary files differ
diff --git a/site/controls/!AL Grey Empty Knob Blue.json b/site/controls/!AL Grey Empty Knob Blue.json
new file mode 100644
index 0000000..2bb56d8
--- /dev/null
+++ b/site/controls/!AL Grey Empty Knob Blue.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL Grey Empty Knob Blue.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/!AL Grey Empty Knob Blue.png b/site/controls/!AL Grey Empty Knob Blue.png
new file mode 100644
index 0000000..5cd8a32
--- /dev/null
+++ b/site/controls/!AL Grey Empty Knob Blue.png
Binary files differ
diff --git a/site/controls/!AL Grey Empty Knob Red.json b/site/controls/!AL Grey Empty Knob Red.json
new file mode 100644
index 0000000..e2cae9b
--- /dev/null
+++ b/site/controls/!AL Grey Empty Knob Red.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL Grey Empty Knob Red.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/!AL Grey Empty Knob Red.png b/site/controls/!AL Grey Empty Knob Red.png
new file mode 100644
index 0000000..8a3c099
--- /dev/null
+++ b/site/controls/!AL Grey Empty Knob Red.png
Binary files differ
diff --git a/site/controls/!AL Grey Empty Knob Yellow 2S.json b/site/controls/!AL Grey Empty Knob Yellow 2S.json
new file mode 100644
index 0000000..ef2673a
--- /dev/null
+++ b/site/controls/!AL Grey Empty Knob Yellow 2S.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL Grey Empty Knob Yellow 2S.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/!AL Grey Empty Knob Yellow 2S.png b/site/controls/!AL Grey Empty Knob Yellow 2S.png
new file mode 100644
index 0000000..5859c2f
--- /dev/null
+++ b/site/controls/!AL Grey Empty Knob Yellow 2S.png
Binary files differ
diff --git a/site/controls/!AL Grey Empty Knob Yellow.json b/site/controls/!AL Grey Empty Knob Yellow.json
new file mode 100644
index 0000000..2614ca6
--- /dev/null
+++ b/site/controls/!AL Grey Empty Knob Yellow.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL Grey Empty Knob Yellow.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/!AL Grey Empty Knob Yellow.png b/site/controls/!AL Grey Empty Knob Yellow.png
new file mode 100644
index 0000000..884ce6b
--- /dev/null
+++ b/site/controls/!AL Grey Empty Knob Yellow.png
Binary files differ
diff --git a/site/controls/!AL Horizontal Fader Small.json b/site/controls/!AL Horizontal Fader Small.json
new file mode 100644
index 0000000..88d9f4f
--- /dev/null
+++ b/site/controls/!AL Horizontal Fader Small.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 13, "ctltype": 0, "fn": "!AL Horizontal Fader Small.png"} \ No newline at end of file
diff --git a/site/controls/!AL Horizontal Fader Small.png b/site/controls/!AL Horizontal Fader Small.png
new file mode 100644
index 0000000..7affdce
--- /dev/null
+++ b/site/controls/!AL Horizontal Fader Small.png
Binary files differ
diff --git a/site/controls/!AL Horizontal Fader Yellow Small.json b/site/controls/!AL Horizontal Fader Yellow Small.json
new file mode 100644
index 0000000..7fe0d25
--- /dev/null
+++ b/site/controls/!AL Horizontal Fader Yellow Small.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 13, "ctltype": 0, "fn": "!AL Horizontal Fader Yellow Small.png", "cellw": 38} \ No newline at end of file
diff --git a/site/controls/!AL Horizontal Fader Yellow Small.png b/site/controls/!AL Horizontal Fader Yellow Small.png
new file mode 100644
index 0000000..d4c549b
--- /dev/null
+++ b/site/controls/!AL Horizontal Fader Yellow Small.png
Binary files differ
diff --git a/site/controls/!Ableton Fader Blue NA.json b/site/controls/!Ableton Fader Blue NA.json
new file mode 100644
index 0000000..397de52
--- /dev/null
+++ b/site/controls/!Ableton Fader Blue NA.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 119, "ctltype": 1, "fn": "!Ableton Fader Blue NA.png"} \ No newline at end of file
diff --git a/site/controls/!Ableton Fader Blue NA.png b/site/controls/!Ableton Fader Blue NA.png
new file mode 100644
index 0000000..7fec16f
--- /dev/null
+++ b/site/controls/!Ableton Fader Blue NA.png
Binary files differ
diff --git a/site/controls/!Ableton Fader Green NA.json b/site/controls/!Ableton Fader Green NA.json
new file mode 100644
index 0000000..2bb8047
--- /dev/null
+++ b/site/controls/!Ableton Fader Green NA.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 119, "ctltype": 1, "fn": "!Ableton Fader Green NA.png"} \ No newline at end of file
diff --git a/site/controls/!Ableton Fader Green NA.png b/site/controls/!Ableton Fader Green NA.png
new file mode 100644
index 0000000..600b8d8
--- /dev/null
+++ b/site/controls/!Ableton Fader Green NA.png
Binary files differ
diff --git a/site/controls/!Ableton Fader Yellow NA.json b/site/controls/!Ableton Fader Yellow NA.json
new file mode 100644
index 0000000..4bb9ed8
--- /dev/null
+++ b/site/controls/!Ableton Fader Yellow NA.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 119, "ctltype": 1, "fn": "!Ableton Fader Yellow NA.png"} \ No newline at end of file
diff --git a/site/controls/!Ableton Fader Yellow NA.png b/site/controls/!Ableton Fader Yellow NA.png
new file mode 100644
index 0000000..de70050
--- /dev/null
+++ b/site/controls/!Ableton Fader Yellow NA.png
Binary files differ
diff --git a/site/controls/!Ableton Horizontal Fader Red.json b/site/controls/!Ableton Horizontal Fader Red.json
new file mode 100644
index 0000000..fd07dd7
--- /dev/null
+++ b/site/controls/!Ableton Horizontal Fader Red.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 13, "ctltype": 0, "fn": "!Ableton Horizontal Fader Red.png"} \ No newline at end of file
diff --git a/site/controls/!Ableton Horizontal Fader Red.png b/site/controls/!Ableton Horizontal Fader Red.png
new file mode 100644
index 0000000..bb2674a
--- /dev/null
+++ b/site/controls/!Ableton Horizontal Fader Red.png
Binary files differ
diff --git a/site/controls/!Ableton Horizontal Fader Yellow.json b/site/controls/!Ableton Horizontal Fader Yellow.json
new file mode 100644
index 0000000..3cd30fb
--- /dev/null
+++ b/site/controls/!Ableton Horizontal Fader Yellow.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 13, "ctltype": 0, "fn": "!Ableton Horizontal Fader Yellow.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/!Ableton Horizontal Fader Yellow.png b/site/controls/!Ableton Horizontal Fader Yellow.png
new file mode 100644
index 0000000..32e865c
--- /dev/null
+++ b/site/controls/!Ableton Horizontal Fader Yellow.png
Binary files differ
diff --git a/site/controls/!Ableton Horizontal Fader.json b/site/controls/!Ableton Horizontal Fader.json
new file mode 100644
index 0000000..54cf69f
--- /dev/null
+++ b/site/controls/!Ableton Horizontal Fader.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 13, "ctltype": 1, "fn": "!Ableton Horizontal Fader.png"} \ No newline at end of file
diff --git a/site/controls/!Ableton Horizontal Fader.png b/site/controls/!Ableton Horizontal Fader.png
new file mode 100644
index 0000000..cbceea3
--- /dev/null
+++ b/site/controls/!Ableton Horizontal Fader.png
Binary files differ
diff --git a/site/controls/!Ableton VU.json b/site/controls/!Ableton VU.json
new file mode 100644
index 0000000..bae25a0
--- /dev/null
+++ b/site/controls/!Ableton VU.json
@@ -0,0 +1 @@
+{"frames": 64, "cellh": 77, "ctltype": 3, "fn": "!Ableton VU.png", "cellw": 144} \ No newline at end of file
diff --git a/site/controls/!Ableton VU.png b/site/controls/!Ableton VU.png
new file mode 100644
index 0000000..13f163c
--- /dev/null
+++ b/site/controls/!Ableton VU.png
Binary files differ
diff --git a/site/controls/!Button Flat Blue 2.json b/site/controls/!Button Flat Blue 2.json
new file mode 100644
index 0000000..af6371f
--- /dev/null
+++ b/site/controls/!Button Flat Blue 2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "!Button Flat Blue 2.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/!Button Flat Blue 2.png b/site/controls/!Button Flat Blue 2.png
new file mode 100644
index 0000000..133bc30
--- /dev/null
+++ b/site/controls/!Button Flat Blue 2.png
Binary files differ
diff --git a/site/controls/!Button_Empty_Medium.json b/site/controls/!Button_Empty_Medium.json
new file mode 100644
index 0000000..43d4a26
--- /dev/null
+++ b/site/controls/!Button_Empty_Medium.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 13, "ctltype": 2, "fn": "!Button_Empty_Medium.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/!Button_Empty_Medium.png b/site/controls/!Button_Empty_Medium.png
new file mode 100644
index 0000000..7c52f38
--- /dev/null
+++ b/site/controls/!Button_Empty_Medium.png
Binary files differ
diff --git a/site/controls/!FL Black.json b/site/controls/!FL Black.json
new file mode 100644
index 0000000..e6c12bb
--- /dev/null
+++ b/site/controls/!FL Black.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 25, "fn": "!FL Black.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/!FL Black.png b/site/controls/!FL Black.png
new file mode 100644
index 0000000..41401a1
--- /dev/null
+++ b/site/controls/!FL Black.png
Binary files differ
diff --git a/site/controls/!FL Red.json b/site/controls/!FL Red.json
new file mode 100644
index 0000000..3ef62a6
--- /dev/null
+++ b/site/controls/!FL Red.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 25, "fn": "!FL Red.png"} \ No newline at end of file
diff --git a/site/controls/!FL Red.png b/site/controls/!FL Red.png
new file mode 100644
index 0000000..1b124e1
--- /dev/null
+++ b/site/controls/!FL Red.png
Binary files differ
diff --git a/site/controls/!Fader Horiz Flat 66px Yellow.json b/site/controls/!Fader Horiz Flat 66px Yellow.json
new file mode 100644
index 0000000..e438d09
--- /dev/null
+++ b/site/controls/!Fader Horiz Flat 66px Yellow.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 13, "ctltype": 1, "fn": "!Fader Horiz Flat 66px Yellow.png", "cellw": 66} \ No newline at end of file
diff --git a/site/controls/!Fader Horiz Flat 66px Yellow.png b/site/controls/!Fader Horiz Flat 66px Yellow.png
new file mode 100644
index 0000000..98ae8d0
--- /dev/null
+++ b/site/controls/!Fader Horiz Flat 66px Yellow.png
Binary files differ
diff --git a/site/controls/!Reduction Meter Inv Green.json b/site/controls/!Reduction Meter Inv Green.json
new file mode 100644
index 0000000..8bf28cb
--- /dev/null
+++ b/site/controls/!Reduction Meter Inv Green.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 119, "ctltype": 3, "fn": "!Reduction Meter Inv Green.png"} \ No newline at end of file
diff --git a/site/controls/!Reduction Meter Inv Green.png b/site/controls/!Reduction Meter Inv Green.png
new file mode 100644
index 0000000..45b1e99
--- /dev/null
+++ b/site/controls/!Reduction Meter Inv Green.png
Binary files differ
diff --git a/site/controls/!Snapshot.json b/site/controls/!Snapshot.json
new file mode 100644
index 0000000..2c4f13c
--- /dev/null
+++ b/site/controls/!Snapshot.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "!Snapshot.png"} \ No newline at end of file
diff --git a/site/controls/!Snapshot.png b/site/controls/!Snapshot.png
new file mode 100644
index 0000000..6f4f26d
--- /dev/null
+++ b/site/controls/!Snapshot.png
Binary files differ
diff --git a/site/controls/!Switcher O-B-W Rounded float.json b/site/controls/!Switcher O-B-W Rounded float.json
new file mode 100644
index 0000000..6130536
--- /dev/null
+++ b/site/controls/!Switcher O-B-W Rounded float.json
@@ -0,0 +1 @@
+{"frames": 4, "cellh": 22, "ctltype": 2, "fn": "!Switcher O-B-W Rounded float.png", "cellw": 68} \ No newline at end of file
diff --git a/site/controls/!Switcher O-B-W Rounded float.png b/site/controls/!Switcher O-B-W Rounded float.png
new file mode 100644
index 0000000..1c61051
--- /dev/null
+++ b/site/controls/!Switcher O-B-W Rounded float.png
Binary files differ
diff --git a/site/controls/!Switcher.json b/site/controls/!Switcher.json
new file mode 100644
index 0000000..5fcb0ba
--- /dev/null
+++ b/site/controls/!Switcher.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "!Switcher.png"} \ No newline at end of file
diff --git a/site/controls/!Switcher.png b/site/controls/!Switcher.png
new file mode 100644
index 0000000..37e7d46
--- /dev/null
+++ b/site/controls/!Switcher.png
Binary files differ
diff --git a/site/controls/!Upside Down.json b/site/controls/!Upside Down.json
new file mode 100644
index 0000000..3358bee
--- /dev/null
+++ b/site/controls/!Upside Down.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 200, "ctltype": 4, "fn": "!Upside Down.png", "cellw": 238} \ No newline at end of file
diff --git a/site/controls/!Upside Down.png b/site/controls/!Upside Down.png
new file mode 100644
index 0000000..0886bbd
--- /dev/null
+++ b/site/controls/!Upside Down.png
Binary files differ
diff --git a/site/controls/!Valhalla Slider Small.json b/site/controls/!Valhalla Slider Small.json
new file mode 100644
index 0000000..5e9086f
--- /dev/null
+++ b/site/controls/!Valhalla Slider Small.json
@@ -0,0 +1 @@
+{"frames": 64, "cellh": 48, "ctltype": 1, "fn": "!Valhalla Slider Small.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/!Valhalla Slider Small.png b/site/controls/!Valhalla Slider Small.png
new file mode 100644
index 0000000..c12491e
--- /dev/null
+++ b/site/controls/!Valhalla Slider Small.png
Binary files differ
diff --git a/site/controls/!Valhalla Slider.json b/site/controls/!Valhalla Slider.json
new file mode 100644
index 0000000..fae095e
--- /dev/null
+++ b/site/controls/!Valhalla Slider.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 219, "ctltype": 1, "fn": "!Valhalla Slider.png"} \ No newline at end of file
diff --git a/site/controls/!Valhalla Slider.png b/site/controls/!Valhalla Slider.png
new file mode 100644
index 0000000..ae65b92
--- /dev/null
+++ b/site/controls/!Valhalla Slider.png
Binary files differ
diff --git a/site/controls/.htaccess b/site/controls/.htaccess
new file mode 100644
index 0000000..f8f410e
--- /dev/null
+++ b/site/controls/.htaccess
@@ -0,0 +1 @@
+Header add Access-Control-Allow-Methods: "GET"
diff --git a/site/controls/01-MY VU Mod-2.json b/site/controls/01-MY VU Mod-2.json
new file mode 100644
index 0000000..bc75bb2
--- /dev/null
+++ b/site/controls/01-MY VU Mod-2.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 96, "ctltype": 3, "fn": "01-MY VU Mod-2.png"} \ No newline at end of file
diff --git a/site/controls/01-MY VU Mod-2.png b/site/controls/01-MY VU Mod-2.png
new file mode 100644
index 0000000..09a2a16
--- /dev/null
+++ b/site/controls/01-MY VU Mod-2.png
Binary files differ
diff --git a/site/controls/111TJATEST.json b/site/controls/111TJATEST.json
new file mode 100644
index 0000000..da16e57
--- /dev/null
+++ b/site/controls/111TJATEST.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "111TJATEST.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/111TJATEST.png b/site/controls/111TJATEST.png
new file mode 100644
index 0000000..f7869fc
--- /dev/null
+++ b/site/controls/111TJATEST.png
Binary files differ
diff --git a/site/controls/2020timb_Aquamarine Button-01.json b/site/controls/2020timb_Aquamarine Button-01.json
new file mode 100644
index 0000000..4278f65
--- /dev/null
+++ b/site/controls/2020timb_Aquamarine Button-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "2020timb_Aquamarine Button-01.png"} \ No newline at end of file
diff --git a/site/controls/2020timb_Aquamarine Button-01.png b/site/controls/2020timb_Aquamarine Button-01.png
new file mode 100644
index 0000000..7a6b8cd
--- /dev/null
+++ b/site/controls/2020timb_Aquamarine Button-01.png
Binary files differ
diff --git a/site/controls/2020timb_Aquamarine Button-02.json b/site/controls/2020timb_Aquamarine Button-02.json
new file mode 100644
index 0000000..49eccfd
--- /dev/null
+++ b/site/controls/2020timb_Aquamarine Button-02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "2020timb_Aquamarine Button-02.png", "cellw": 39} \ No newline at end of file
diff --git a/site/controls/2020timb_Aquamarine Button-02.png b/site/controls/2020timb_Aquamarine Button-02.png
new file mode 100644
index 0000000..538e249
--- /dev/null
+++ b/site/controls/2020timb_Aquamarine Button-02.png
Binary files differ
diff --git a/site/controls/2020timb_Aquamarine Knob-01.json b/site/controls/2020timb_Aquamarine Knob-01.json
new file mode 100644
index 0000000..ce4eeed
--- /dev/null
+++ b/site/controls/2020timb_Aquamarine Knob-01.json
@@ -0,0 +1 @@
+{"frames": 121, "cellh": 125, "ctltype": 0, "fn": "2020timb_Aquamarine Knob-01.png", "cellw": 125} \ No newline at end of file
diff --git a/site/controls/2020timb_Aquamarine Knob-01.png b/site/controls/2020timb_Aquamarine Knob-01.png
new file mode 100644
index 0000000..5c8bec5
--- /dev/null
+++ b/site/controls/2020timb_Aquamarine Knob-01.png
Binary files differ
diff --git a/site/controls/2020timb_Aquamarine Knob-02.json b/site/controls/2020timb_Aquamarine Knob-02.json
new file mode 100644
index 0000000..f99c414
--- /dev/null
+++ b/site/controls/2020timb_Aquamarine Knob-02.json
@@ -0,0 +1 @@
+{"frames": 45, "cellh": 43, "ctltype": 0, "fn": "2020timb_Aquamarine Knob-02.png", "cellw": 43} \ No newline at end of file
diff --git a/site/controls/2020timb_Aquamarine Knob-02.png b/site/controls/2020timb_Aquamarine Knob-02.png
new file mode 100644
index 0000000..c9c0efb
--- /dev/null
+++ b/site/controls/2020timb_Aquamarine Knob-02.png
Binary files differ
diff --git a/site/controls/BESTRPOKE_MUTE(15-2)-b.json b/site/controls/BESTRPOKE_MUTE(15-2)-b.json
new file mode 100644
index 0000000..61d2cef
--- /dev/null
+++ b/site/controls/BESTRPOKE_MUTE(15-2)-b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_MUTE(15-2)-b.png"} \ No newline at end of file
diff --git a/site/controls/BESTRPOKE_MUTE(15-2)-b.png b/site/controls/BESTRPOKE_MUTE(15-2)-b.png
new file mode 100644
index 0000000..846e006
--- /dev/null
+++ b/site/controls/BESTRPOKE_MUTE(15-2)-b.png
Binary files differ
diff --git a/site/controls/BESTRPOKE_MUTE(15-2)-c.json b/site/controls/BESTRPOKE_MUTE(15-2)-c.json
new file mode 100644
index 0000000..2877580
--- /dev/null
+++ b/site/controls/BESTRPOKE_MUTE(15-2)-c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_MUTE(15-2)-c.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/BESTRPOKE_MUTE(15-2)-c.png b/site/controls/BESTRPOKE_MUTE(15-2)-c.png
new file mode 100644
index 0000000..f6c6f4a
--- /dev/null
+++ b/site/controls/BESTRPOKE_MUTE(15-2)-c.png
Binary files differ
diff --git a/site/controls/BESTRPOKE_MUTE(15-2).json b/site/controls/BESTRPOKE_MUTE(15-2).json
new file mode 100644
index 0000000..bd5ea07
--- /dev/null
+++ b/site/controls/BESTRPOKE_MUTE(15-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_MUTE(15-2).png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/BESTRPOKE_MUTE(15-2).png b/site/controls/BESTRPOKE_MUTE(15-2).png
new file mode 100644
index 0000000..97471d7
--- /dev/null
+++ b/site/controls/BESTRPOKE_MUTE(15-2).png
Binary files differ
diff --git a/site/controls/BESTRPOKE_SOLO(15-2)-b.json b/site/controls/BESTRPOKE_SOLO(15-2)-b.json
new file mode 100644
index 0000000..e7740d8
--- /dev/null
+++ b/site/controls/BESTRPOKE_SOLO(15-2)-b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_SOLO(15-2)-b.png"} \ No newline at end of file
diff --git a/site/controls/BESTRPOKE_SOLO(15-2)-b.png b/site/controls/BESTRPOKE_SOLO(15-2)-b.png
new file mode 100644
index 0000000..27389c1
--- /dev/null
+++ b/site/controls/BESTRPOKE_SOLO(15-2)-b.png
Binary files differ
diff --git a/site/controls/BESTRPOKE_SOLO(15-2).json b/site/controls/BESTRPOKE_SOLO(15-2).json
new file mode 100644
index 0000000..b4fb74a
--- /dev/null
+++ b/site/controls/BESTRPOKE_SOLO(15-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_SOLO(15-2).png"} \ No newline at end of file
diff --git a/site/controls/BESTRPOKE_SOLO(15-2).png b/site/controls/BESTRPOKE_SOLO(15-2).png
new file mode 100644
index 0000000..ebd36a8
--- /dev/null
+++ b/site/controls/BESTRPOKE_SOLO(15-2).png
Binary files differ
diff --git a/site/controls/Beatwing25_BUTTON16x.json b/site/controls/Beatwing25_BUTTON16x.json
new file mode 100644
index 0000000..06eb008
--- /dev/null
+++ b/site/controls/Beatwing25_BUTTON16x.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Beatwing25_BUTTON16x.png"} \ No newline at end of file
diff --git a/site/controls/Beatwing25_BUTTON16x.png b/site/controls/Beatwing25_BUTTON16x.png
new file mode 100644
index 0000000..883e804
--- /dev/null
+++ b/site/controls/Beatwing25_BUTTON16x.png
Binary files differ
diff --git a/site/controls/ButtonLOREZ16.json b/site/controls/ButtonLOREZ16.json
new file mode 100644
index 0000000..0cf88c8
--- /dev/null
+++ b/site/controls/ButtonLOREZ16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "ButtonLOREZ16.png"} \ No newline at end of file
diff --git a/site/controls/ButtonLOREZ16.png b/site/controls/ButtonLOREZ16.png
new file mode 100644
index 0000000..3a51b6e
--- /dev/null
+++ b/site/controls/ButtonLOREZ16.png
Binary files differ
diff --git a/site/controls/ButtonLOREZ16green.json b/site/controls/ButtonLOREZ16green.json
new file mode 100644
index 0000000..d5a6d77
--- /dev/null
+++ b/site/controls/ButtonLOREZ16green.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "ButtonLOREZ16green.png"} \ No newline at end of file
diff --git a/site/controls/ButtonLOREZ16green.png b/site/controls/ButtonLOREZ16green.png
new file mode 100644
index 0000000..e5598ab
--- /dev/null
+++ b/site/controls/ButtonLOREZ16green.png
Binary files differ
diff --git a/site/controls/ButtonLOREZ16yellow.json b/site/controls/ButtonLOREZ16yellow.json
new file mode 100644
index 0000000..209fcba
--- /dev/null
+++ b/site/controls/ButtonLOREZ16yellow.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "ButtonLOREZ16yellow.png"} \ No newline at end of file
diff --git a/site/controls/ButtonLOREZ16yellow.png b/site/controls/ButtonLOREZ16yellow.png
new file mode 100644
index 0000000..9d5cf60
--- /dev/null
+++ b/site/controls/ButtonLOREZ16yellow.png
Binary files differ
diff --git a/site/controls/Concerto-OnOff16x.json b/site/controls/Concerto-OnOff16x.json
new file mode 100644
index 0000000..69aebdf
--- /dev/null
+++ b/site/controls/Concerto-OnOff16x.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Concerto-OnOff16x.png"} \ No newline at end of file
diff --git a/site/controls/Concerto-OnOff16x.png b/site/controls/Concerto-OnOff16x.png
new file mode 100644
index 0000000..ed881f9
--- /dev/null
+++ b/site/controls/Concerto-OnOff16x.png
Binary files differ
diff --git a/site/controls/CybZinc_Button-0116x.json b/site/controls/CybZinc_Button-0116x.json
new file mode 100644
index 0000000..1f587f6
--- /dev/null
+++ b/site/controls/CybZinc_Button-0116x.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "CybZinc_Button-0116x.png"} \ No newline at end of file
diff --git a/site/controls/CybZinc_Button-0116x.png b/site/controls/CybZinc_Button-0116x.png
new file mode 100644
index 0000000..4a3660b
--- /dev/null
+++ b/site/controls/CybZinc_Button-0116x.png
Binary files differ
diff --git a/site/controls/DEFBUTTO_OnOff16.json b/site/controls/DEFBUTTO_OnOff16.json
new file mode 100644
index 0000000..2857d68
--- /dev/null
+++ b/site/controls/DEFBUTTO_OnOff16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "DEFBUTTO_OnOff16.png", "cellw": 13} \ No newline at end of file
diff --git a/site/controls/DEFBUTTO_OnOff16.png b/site/controls/DEFBUTTO_OnOff16.png
new file mode 100644
index 0000000..585d36e
--- /dev/null
+++ b/site/controls/DEFBUTTO_OnOff16.png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-b.json b/site/controls/FXGUI2017_BESTPOKE(15-2)-b.json
new file mode 100644
index 0000000..f0e4029
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-b.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-b.png b/site/controls/FXGUI2017_BESTPOKE(15-2)-b.png
new file mode 100644
index 0000000..24f63b6
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-b.png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-c.json b/site/controls/FXGUI2017_BESTPOKE(15-2)-c.json
new file mode 100644
index 0000000..276c3ec
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-c.png", "cellw": 27} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-c.png b/site/controls/FXGUI2017_BESTPOKE(15-2)-c.png
new file mode 100644
index 0000000..c5b7105
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-c.png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-d.json b/site/controls/FXGUI2017_BESTPOKE(15-2)-d.json
new file mode 100644
index 0000000..806e0f1
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-d.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 40, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-d.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-d.png b/site/controls/FXGUI2017_BESTPOKE(15-2)-d.png
new file mode 100644
index 0000000..e30543e
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-d.png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-e.json b/site/controls/FXGUI2017_BESTPOKE(15-2)-e.json
new file mode 100644
index 0000000..39085a2
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-e.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-e.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-e.png b/site/controls/FXGUI2017_BESTPOKE(15-2)-e.png
new file mode 100644
index 0000000..7d154bd
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-e.png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-f.json b/site/controls/FXGUI2017_BESTPOKE(15-2)-f.json
new file mode 100644
index 0000000..5e9feb0
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-f.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-f.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2)-f.png b/site/controls/FXGUI2017_BESTPOKE(15-2)-f.png
new file mode 100644
index 0000000..891ecf7
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2)-f.png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2).json b/site/controls/FXGUI2017_BESTPOKE(15-2).json
new file mode 100644
index 0000000..e8fb8e7
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2).png", "cellw": 27} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE(15-2).png b/site/controls/FXGUI2017_BESTPOKE(15-2).png
new file mode 100644
index 0000000..c04effc
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(15-2).png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE(16X).json b/site/controls/FXGUI2017_BESTPOKE(16X).json
new file mode 100644
index 0000000..1c9201e
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(16X).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(16X).png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE(16X).png b/site/controls/FXGUI2017_BESTPOKE(16X).png
new file mode 100644
index 0000000..63e0633
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(16X).png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE(16X)2.json b/site/controls/FXGUI2017_BESTPOKE(16X)2.json
new file mode 100644
index 0000000..54eff4f
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(16X)2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(16X)2.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE(16X)2.png b/site/controls/FXGUI2017_BESTPOKE(16X)2.png
new file mode 100644
index 0000000..b866209
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE(16X)2.png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE_DIST(15-2).json b/site/controls/FXGUI2017_BESTPOKE_DIST(15-2).json
new file mode 100644
index 0000000..4bce131
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_DIST(15-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_DIST(15-2).png", "cellw": 27} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE_DIST(15-2).png b/site/controls/FXGUI2017_BESTPOKE_DIST(15-2).png
new file mode 100644
index 0000000..e665d91
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_DIST(15-2).png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE_DLY(15-2).json b/site/controls/FXGUI2017_BESTPOKE_DLY(15-2).json
new file mode 100644
index 0000000..6cccda2
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_DLY(15-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_DLY(15-2).png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE_DLY(15-2).png b/site/controls/FXGUI2017_BESTPOKE_DLY(15-2).png
new file mode 100644
index 0000000..11eb3ea
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_DLY(15-2).png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE_EQ(15-2).json b/site/controls/FXGUI2017_BESTPOKE_EQ(15-2).json
new file mode 100644
index 0000000..88f0133
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_EQ(15-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_EQ(15-2).png", "cellw": 27} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE_EQ(15-2).png b/site/controls/FXGUI2017_BESTPOKE_EQ(15-2).png
new file mode 100644
index 0000000..5f6f6aa
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_EQ(15-2).png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE_MOD(15-2).json b/site/controls/FXGUI2017_BESTPOKE_MOD(15-2).json
new file mode 100644
index 0000000..ac270b7
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_MOD(15-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_MOD(15-2).png", "cellw": 27} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE_MOD(15-2).png b/site/controls/FXGUI2017_BESTPOKE_MOD(15-2).png
new file mode 100644
index 0000000..da81912
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_MOD(15-2).png
Binary files differ
diff --git a/site/controls/FXGUI2017_BESTPOKE_REV(15-2).json b/site/controls/FXGUI2017_BESTPOKE_REV(15-2).json
new file mode 100644
index 0000000..bc3cb97
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_REV(15-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_REV(15-2).png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_BESTPOKE_REV(15-2).png b/site/controls/FXGUI2017_BESTPOKE_REV(15-2).png
new file mode 100644
index 0000000..4b1e923
--- /dev/null
+++ b/site/controls/FXGUI2017_BESTPOKE_REV(15-2).png
Binary files differ
diff --git a/site/controls/FXGUI2017_DEF5NITE(21-2)-1.json b/site/controls/FXGUI2017_DEF5NITE(21-2)-1.json
new file mode 100644
index 0000000..cdbf1c6
--- /dev/null
+++ b/site/controls/FXGUI2017_DEF5NITE(21-2)-1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "FXGUI2017_DEF5NITE(21-2)-1.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_DEF5NITE(21-2)-1.png b/site/controls/FXGUI2017_DEF5NITE(21-2)-1.png
new file mode 100644
index 0000000..ecd8fdd
--- /dev/null
+++ b/site/controls/FXGUI2017_DEF5NITE(21-2)-1.png
Binary files differ
diff --git a/site/controls/FXGUI2017_DEF5NITE(21-2)-2.json b/site/controls/FXGUI2017_DEF5NITE(21-2)-2.json
new file mode 100644
index 0000000..9ce1ffc
--- /dev/null
+++ b/site/controls/FXGUI2017_DEF5NITE(21-2)-2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "FXGUI2017_DEF5NITE(21-2)-2.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_DEF5NITE(21-2)-2.png b/site/controls/FXGUI2017_DEF5NITE(21-2)-2.png
new file mode 100644
index 0000000..f8aa38d
--- /dev/null
+++ b/site/controls/FXGUI2017_DEF5NITE(21-2)-2.png
Binary files differ
diff --git a/site/controls/FXGUI2017_JANNE(29-2).json b/site/controls/FXGUI2017_JANNE(29-2).json
new file mode 100644
index 0000000..49a050f
--- /dev/null
+++ b/site/controls/FXGUI2017_JANNE(29-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 29, "ctltype": 2, "fn": "FXGUI2017_JANNE(29-2).png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_JANNE(29-2).png b/site/controls/FXGUI2017_JANNE(29-2).png
new file mode 100644
index 0000000..32c58d3
--- /dev/null
+++ b/site/controls/FXGUI2017_JANNE(29-2).png
Binary files differ
diff --git a/site/controls/FXGUI2017_NITROGEN(18-2).json b/site/controls/FXGUI2017_NITROGEN(18-2).json
new file mode 100644
index 0000000..d234477
--- /dev/null
+++ b/site/controls/FXGUI2017_NITROGEN(18-2).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "FXGUI2017_NITROGEN(18-2).png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_NITROGEN(18-2).png b/site/controls/FXGUI2017_NITROGEN(18-2).png
new file mode 100644
index 0000000..4751335
--- /dev/null
+++ b/site/controls/FXGUI2017_NITROGEN(18-2).png
Binary files differ
diff --git a/site/controls/FXGUI2017_PAULA(18-2)-1.json b/site/controls/FXGUI2017_PAULA(18-2)-1.json
new file mode 100644
index 0000000..7eb721c
--- /dev/null
+++ b/site/controls/FXGUI2017_PAULA(18-2)-1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "FXGUI2017_PAULA(18-2)-1.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_PAULA(18-2)-1.png b/site/controls/FXGUI2017_PAULA(18-2)-1.png
new file mode 100644
index 0000000..6840f2f
--- /dev/null
+++ b/site/controls/FXGUI2017_PAULA(18-2)-1.png
Binary files differ
diff --git a/site/controls/FXGUI2017_PAULA(18-2)-2.json b/site/controls/FXGUI2017_PAULA(18-2)-2.json
new file mode 100644
index 0000000..4a127cf
--- /dev/null
+++ b/site/controls/FXGUI2017_PAULA(18-2)-2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "FXGUI2017_PAULA(18-2)-2.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2017_PAULA(18-2)-2.png b/site/controls/FXGUI2017_PAULA(18-2)-2.png
new file mode 100644
index 0000000..70ef32c
--- /dev/null
+++ b/site/controls/FXGUI2017_PAULA(18-2)-2.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-00.json b/site/controls/FXGUI2018_NoGFX-00.json
new file mode 100644
index 0000000..cbba844
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-00.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-00.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-00.png b/site/controls/FXGUI2018_NoGFX-00.png
new file mode 100644
index 0000000..3edfba6
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-00.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-01.json b/site/controls/FXGUI2018_NoGFX-01.json
new file mode 100644
index 0000000..5187485
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-01.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-01.png b/site/controls/FXGUI2018_NoGFX-01.png
new file mode 100644
index 0000000..b184956
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-01.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-02.json b/site/controls/FXGUI2018_NoGFX-02.json
new file mode 100644
index 0000000..9aea478
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-02.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-02.png b/site/controls/FXGUI2018_NoGFX-02.png
new file mode 100644
index 0000000..658dc66
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-02.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-03.json b/site/controls/FXGUI2018_NoGFX-03.json
new file mode 100644
index 0000000..2631fe4
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-03.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-03.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-03.png b/site/controls/FXGUI2018_NoGFX-03.png
new file mode 100644
index 0000000..1e3ad5d
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-03.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-04.json b/site/controls/FXGUI2018_NoGFX-04.json
new file mode 100644
index 0000000..1533c10
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-04.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-04.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-04.png b/site/controls/FXGUI2018_NoGFX-04.png
new file mode 100644
index 0000000..1838f2c
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-04.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-05.json b/site/controls/FXGUI2018_NoGFX-05.json
new file mode 100644
index 0000000..bd70d03
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-05.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-05.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-05.png b/site/controls/FXGUI2018_NoGFX-05.png
new file mode 100644
index 0000000..f637cb8
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-05.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-06.json b/site/controls/FXGUI2018_NoGFX-06.json
new file mode 100644
index 0000000..a15b436
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-06.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-06.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-06.png b/site/controls/FXGUI2018_NoGFX-06.png
new file mode 100644
index 0000000..4385efc
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-06.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-07.json b/site/controls/FXGUI2018_NoGFX-07.json
new file mode 100644
index 0000000..34ee11e
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-07.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-07.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-07.png b/site/controls/FXGUI2018_NoGFX-07.png
new file mode 100644
index 0000000..c349ea6
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-07.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-08.json b/site/controls/FXGUI2018_NoGFX-08.json
new file mode 100644
index 0000000..81d3171
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-08.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-08.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-08.png b/site/controls/FXGUI2018_NoGFX-08.png
new file mode 100644
index 0000000..ef456b3
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-08.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-09.json b/site/controls/FXGUI2018_NoGFX-09.json
new file mode 100644
index 0000000..5fe0b15
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-09.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-09.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-09.png b/site/controls/FXGUI2018_NoGFX-09.png
new file mode 100644
index 0000000..333c6bf
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-09.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-10.json b/site/controls/FXGUI2018_NoGFX-10.json
new file mode 100644
index 0000000..ea41282
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-10.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-10.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-10.png b/site/controls/FXGUI2018_NoGFX-10.png
new file mode 100644
index 0000000..31f0ed7
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-10.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-11.json b/site/controls/FXGUI2018_NoGFX-11.json
new file mode 100644
index 0000000..f0847af
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-11.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-11.png"} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-11.png b/site/controls/FXGUI2018_NoGFX-11.png
new file mode 100644
index 0000000..33a0866
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-11.png
Binary files differ
diff --git a/site/controls/FXGUI2018_NoGFX-12.json b/site/controls/FXGUI2018_NoGFX-12.json
new file mode 100644
index 0000000..d69b2b2
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-12.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-12.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/FXGUI2018_NoGFX-12.png b/site/controls/FXGUI2018_NoGFX-12.png
new file mode 100644
index 0000000..af52875
--- /dev/null
+++ b/site/controls/FXGUI2018_NoGFX-12.png
Binary files differ
diff --git a/site/controls/Fader(29x61x334_167).json b/site/controls/Fader(29x61x334_167).json
new file mode 100644
index 0000000..7f7b618
--- /dev/null
+++ b/site/controls/Fader(29x61x334_167).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 334, "ctltype": 1, "fn": "Fader(29x61x334_167).png"} \ No newline at end of file
diff --git a/site/controls/Fader(29x61x334_167).png b/site/controls/Fader(29x61x334_167).png
new file mode 100644
index 0000000..ef6209f
--- /dev/null
+++ b/site/controls/Fader(29x61x334_167).png
Binary files differ
diff --git a/site/controls/GR METER Black ZenoMOD.json b/site/controls/GR METER Black ZenoMOD.json
new file mode 100644
index 0000000..f44f08c
--- /dev/null
+++ b/site/controls/GR METER Black ZenoMOD.json
@@ -0,0 +1 @@
+{"frames": 31, "cellh": 78, "ctltype": 3, "fn": "GR METER Black ZenoMOD.png"} \ No newline at end of file
diff --git a/site/controls/GR METER Black ZenoMOD.png b/site/controls/GR METER Black ZenoMOD.png
new file mode 100644
index 0000000..f35cabd
--- /dev/null
+++ b/site/controls/GR METER Black ZenoMOD.png
Binary files differ
diff --git a/site/controls/GR Meter 2 RED.json b/site/controls/GR Meter 2 RED.json
new file mode 100644
index 0000000..ae9b1d4
--- /dev/null
+++ b/site/controls/GR Meter 2 RED.json
@@ -0,0 +1 @@
+{"frames": 31, "cellh": 110, "ctltype": 3, "fn": "GR Meter 2 RED.png", "cellw": 13} \ No newline at end of file
diff --git a/site/controls/GR Meter 2 RED.png b/site/controls/GR Meter 2 RED.png
new file mode 100644
index 0000000..f5e4715
--- /dev/null
+++ b/site/controls/GR Meter 2 RED.png
Binary files differ
diff --git a/site/controls/GR_Timb_MeterBlackOnixTwo_8x63-129blo.json b/site/controls/GR_Timb_MeterBlackOnixTwo_8x63-129blo.json
new file mode 100644
index 0000000..beffbfb
--- /dev/null
+++ b/site/controls/GR_Timb_MeterBlackOnixTwo_8x63-129blo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 63, "ctltype": 3, "fn": "GR_Timb_MeterBlackOnixTwo_8x63-129blo.png"} \ No newline at end of file
diff --git a/site/controls/GR_Timb_MeterBlackOnixTwo_8x63-129blo.png b/site/controls/GR_Timb_MeterBlackOnixTwo_8x63-129blo.png
new file mode 100644
index 0000000..2636025
--- /dev/null
+++ b/site/controls/GR_Timb_MeterBlackOnixTwo_8x63-129blo.png
Binary files differ
diff --git a/site/controls/Geist2RecRetro.json b/site/controls/Geist2RecRetro.json
new file mode 100644
index 0000000..b8e2979
--- /dev/null
+++ b/site/controls/Geist2RecRetro.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2RecRetro.png"} \ No newline at end of file
diff --git a/site/controls/Geist2RecRetro.png b/site/controls/Geist2RecRetro.png
new file mode 100644
index 0000000..3f2a42d
--- /dev/null
+++ b/site/controls/Geist2RecRetro.png
Binary files differ
diff --git a/site/controls/Geist2metronome.json b/site/controls/Geist2metronome.json
new file mode 100644
index 0000000..7a4cd7b
--- /dev/null
+++ b/site/controls/Geist2metronome.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2metronome.png"} \ No newline at end of file
diff --git a/site/controls/Geist2metronome.png b/site/controls/Geist2metronome.png
new file mode 100644
index 0000000..b7f8628
--- /dev/null
+++ b/site/controls/Geist2metronome.png
Binary files differ
diff --git a/site/controls/Geist2play.json b/site/controls/Geist2play.json
new file mode 100644
index 0000000..913df5d
--- /dev/null
+++ b/site/controls/Geist2play.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2play.png", "cellw": 36} \ No newline at end of file
diff --git a/site/controls/Geist2play.png b/site/controls/Geist2play.png
new file mode 100644
index 0000000..caf19b6
--- /dev/null
+++ b/site/controls/Geist2play.png
Binary files differ
diff --git a/site/controls/Geist2quantise.json b/site/controls/Geist2quantise.json
new file mode 100644
index 0000000..5f1dd8e
--- /dev/null
+++ b/site/controls/Geist2quantise.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2quantise.png"} \ No newline at end of file
diff --git a/site/controls/Geist2quantise.png b/site/controls/Geist2quantise.png
new file mode 100644
index 0000000..404a819
--- /dev/null
+++ b/site/controls/Geist2quantise.png
Binary files differ
diff --git a/site/controls/Geist2rec.json b/site/controls/Geist2rec.json
new file mode 100644
index 0000000..cabdbac
--- /dev/null
+++ b/site/controls/Geist2rec.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2rec.png"} \ No newline at end of file
diff --git a/site/controls/Geist2rec.png b/site/controls/Geist2rec.png
new file mode 100644
index 0000000..3c762af
--- /dev/null
+++ b/site/controls/Geist2rec.png
Binary files differ
diff --git a/site/controls/Guitar Rig 5_379_PICTURE.json b/site/controls/Guitar Rig 5_379_PICTURE.json
new file mode 100644
index 0000000..c3c24c4
--- /dev/null
+++ b/site/controls/Guitar Rig 5_379_PICTURE.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Guitar Rig 5_379_PICTURE.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Guitar Rig 5_379_PICTURE.png b/site/controls/Guitar Rig 5_379_PICTURE.png
new file mode 100644
index 0000000..1c64dcf
--- /dev/null
+++ b/site/controls/Guitar Rig 5_379_PICTURE.png
Binary files differ
diff --git a/site/controls/Guitar Rig 5_630_PICTURE.json b/site/controls/Guitar Rig 5_630_PICTURE.json
new file mode 100644
index 0000000..cf19e51
--- /dev/null
+++ b/site/controls/Guitar Rig 5_630_PICTURE.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 43, "ctltype": 0, "fn": "Guitar Rig 5_630_PICTURE.png"} \ No newline at end of file
diff --git a/site/controls/Guitar Rig 5_630_PICTURE.png b/site/controls/Guitar Rig 5_630_PICTURE.png
new file mode 100644
index 0000000..2664ede
--- /dev/null
+++ b/site/controls/Guitar Rig 5_630_PICTURE.png
Binary files differ
diff --git a/site/controls/ICON_HEADPHONE.json b/site/controls/ICON_HEADPHONE.json
new file mode 100644
index 0000000..3279810
--- /dev/null
+++ b/site/controls/ICON_HEADPHONE.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 30, "ctltype": 2, "fn": "ICON_HEADPHONE.png"} \ No newline at end of file
diff --git a/site/controls/ICON_HEADPHONE.png b/site/controls/ICON_HEADPHONE.png
new file mode 100644
index 0000000..0e59c7b
--- /dev/null
+++ b/site/controls/ICON_HEADPHONE.png
Binary files differ
diff --git a/site/controls/ICON_HEADPHONE2.json b/site/controls/ICON_HEADPHONE2.json
new file mode 100644
index 0000000..8627048
--- /dev/null
+++ b/site/controls/ICON_HEADPHONE2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 30, "ctltype": 2, "fn": "ICON_HEADPHONE2.png", "cellw": 30} \ No newline at end of file
diff --git a/site/controls/ICON_HEADPHONE2.png b/site/controls/ICON_HEADPHONE2.png
new file mode 100644
index 0000000..e579e60
--- /dev/null
+++ b/site/controls/ICON_HEADPHONE2.png
Binary files differ
diff --git a/site/controls/Joesi_bigpot.json b/site/controls/Joesi_bigpot.json
new file mode 100644
index 0000000..18992e4
--- /dev/null
+++ b/site/controls/Joesi_bigpot.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 115, "ctltype": 0, "fn": "Joesi_bigpot.png"} \ No newline at end of file
diff --git a/site/controls/Joesi_bigpot.png b/site/controls/Joesi_bigpot.png
new file mode 100644
index 0000000..6fc618e
--- /dev/null
+++ b/site/controls/Joesi_bigpot.png
Binary files differ
diff --git a/site/controls/KM2016_Ableton Knobs_(16x16_128fr)_yellow.json b/site/controls/KM2016_Ableton Knobs_(16x16_128fr)_yellow.json
new file mode 100644
index 0000000..7d8998e
--- /dev/null
+++ b/site/controls/KM2016_Ableton Knobs_(16x16_128fr)_yellow.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 0, "fn": "KM2016_Ableton Knobs_(16x16_128fr)_yellow.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/KM2016_Ableton Knobs_(16x16_128fr)_yellow.png b/site/controls/KM2016_Ableton Knobs_(16x16_128fr)_yellow.png
new file mode 100644
index 0000000..9a1d8d5
--- /dev/null
+++ b/site/controls/KM2016_Ableton Knobs_(16x16_128fr)_yellow.png
Binary files differ
diff --git a/site/controls/KM2016_BlackAngleEdt_32-128fr.json b/site/controls/KM2016_BlackAngleEdt_32-128fr.json
new file mode 100644
index 0000000..e8fcd15
--- /dev/null
+++ b/site/controls/KM2016_BlackAngleEdt_32-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_BlackAngleEdt_32-128fr.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/KM2016_BlackAngleEdt_32-128fr.png b/site/controls/KM2016_BlackAngleEdt_32-128fr.png
new file mode 100644
index 0000000..585a36b
--- /dev/null
+++ b/site/controls/KM2016_BlackAngleEdt_32-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_BlackAngleEdt_40-128fr.json b/site/controls/KM2016_BlackAngleEdt_40-128fr.json
new file mode 100644
index 0000000..5521aae
--- /dev/null
+++ b/site/controls/KM2016_BlackAngleEdt_40-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_BlackAngleEdt_40-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_BlackAngleEdt_40-128fr.png b/site/controls/KM2016_BlackAngleEdt_40-128fr.png
new file mode 100644
index 0000000..d279cc6
--- /dev/null
+++ b/site/controls/KM2016_BlackAngleEdt_40-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_BlackAngleEdt_64-128fr.json b/site/controls/KM2016_BlackAngleEdt_64-128fr.json
new file mode 100644
index 0000000..f21f510
--- /dev/null
+++ b/site/controls/KM2016_BlackAngleEdt_64-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "KM2016_BlackAngleEdt_64-128fr.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/KM2016_BlackAngleEdt_64-128fr.png b/site/controls/KM2016_BlackAngleEdt_64-128fr.png
new file mode 100644
index 0000000..76f713c
--- /dev/null
+++ b/site/controls/KM2016_BlackAngleEdt_64-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_CPHATbpFiltrHI_32-128fr.json b/site/controls/KM2016_CPHATbpFiltrHI_32-128fr.json
new file mode 100644
index 0000000..0baf8a2
--- /dev/null
+++ b/site/controls/KM2016_CPHATbpFiltrHI_32-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_CPHATbpFiltrHI_32-128fr.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/KM2016_CPHATbpFiltrHI_32-128fr.png b/site/controls/KM2016_CPHATbpFiltrHI_32-128fr.png
new file mode 100644
index 0000000..8763069
--- /dev/null
+++ b/site/controls/KM2016_CPHATbpFiltrHI_32-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_CPHATbpFiltrLO_32-128fr.json b/site/controls/KM2016_CPHATbpFiltrLO_32-128fr.json
new file mode 100644
index 0000000..d3420ac
--- /dev/null
+++ b/site/controls/KM2016_CPHATbpFiltrLO_32-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_CPHATbpFiltrLO_32-128fr.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/KM2016_CPHATbpFiltrLO_32-128fr.png b/site/controls/KM2016_CPHATbpFiltrLO_32-128fr.png
new file mode 100644
index 0000000..5d83a88
--- /dev/null
+++ b/site/controls/KM2016_CPHATbpFiltrLO_32-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_CPHATbpFiltrMIX_32-128fr.json b/site/controls/KM2016_CPHATbpFiltrMIX_32-128fr.json
new file mode 100644
index 0000000..852e563
--- /dev/null
+++ b/site/controls/KM2016_CPHATbpFiltrMIX_32-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_CPHATbpFiltrMIX_32-128fr.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/KM2016_CPHATbpFiltrMIX_32-128fr.png b/site/controls/KM2016_CPHATbpFiltrMIX_32-128fr.png
new file mode 100644
index 0000000..e3573b6
--- /dev/null
+++ b/site/controls/KM2016_CPHATbpFiltrMIX_32-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_SENDHORZ(40x20-128fr)-01.json b/site/controls/KM2016_SENDHORZ(40x20-128fr)-01.json
new file mode 100644
index 0000000..4c69797
--- /dev/null
+++ b/site/controls/KM2016_SENDHORZ(40x20-128fr)-01.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 20, "ctltype": 1, "fn": "KM2016_SENDHORZ(40x20-128fr)-01.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/KM2016_SENDHORZ(40x20-128fr)-01.png b/site/controls/KM2016_SENDHORZ(40x20-128fr)-01.png
new file mode 100644
index 0000000..3d38530
--- /dev/null
+++ b/site/controls/KM2016_SENDHORZ(40x20-128fr)-01.png
Binary files differ
diff --git a/site/controls/KM2016_SilverBox_(32x20-128fr).json b/site/controls/KM2016_SilverBox_(32x20-128fr).json
new file mode 100644
index 0000000..ad24670
--- /dev/null
+++ b/site/controls/KM2016_SilverBox_(32x20-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 20, "ctltype": 0, "fn": "KM2016_SilverBox_(32x20-128fr).png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/KM2016_SilverBox_(32x20-128fr).png b/site/controls/KM2016_SilverBox_(32x20-128fr).png
new file mode 100644
index 0000000..d994ef7
--- /dev/null
+++ b/site/controls/KM2016_SilverBox_(32x20-128fr).png
Binary files differ
diff --git a/site/controls/KM2016_Silverflatwithno_(64x64-128fr).json b/site/controls/KM2016_Silverflatwithno_(64x64-128fr).json
new file mode 100644
index 0000000..3b51f95
--- /dev/null
+++ b/site/controls/KM2016_Silverflatwithno_(64x64-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "KM2016_Silverflatwithno_(64x64-128fr).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/KM2016_Silverflatwithno_(64x64-128fr).png b/site/controls/KM2016_Silverflatwithno_(64x64-128fr).png
new file mode 100644
index 0000000..bfc8157
--- /dev/null
+++ b/site/controls/KM2016_Silverflatwithno_(64x64-128fr).png
Binary files differ
diff --git a/site/controls/KM2016_Silverflatwithno_(96x96-128fr).json b/site/controls/KM2016_Silverflatwithno_(96x96-128fr).json
new file mode 100644
index 0000000..b6d8896
--- /dev/null
+++ b/site/controls/KM2016_Silverflatwithno_(96x96-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "KM2016_Silverflatwithno_(96x96-128fr).png"} \ No newline at end of file
diff --git a/site/controls/KM2016_Silverflatwithno_(96x96-128fr).png b/site/controls/KM2016_Silverflatwithno_(96x96-128fr).png
new file mode 100644
index 0000000..7e2cfe6
--- /dev/null
+++ b/site/controls/KM2016_Silverflatwithno_(96x96-128fr).png
Binary files differ
diff --git a/site/controls/KM2016_SimpleBigKnobBlue_48-128fr.json b/site/controls/KM2016_SimpleBigKnobBlue_48-128fr.json
new file mode 100644
index 0000000..1735b87
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobBlue_48-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "KM2016_SimpleBigKnobBlue_48-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_SimpleBigKnobBlue_48-128fr.png b/site/controls/KM2016_SimpleBigKnobBlue_48-128fr.png
new file mode 100644
index 0000000..40aa2c0
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobBlue_48-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_SimpleBigKnobGreen_48-128fr.json b/site/controls/KM2016_SimpleBigKnobGreen_48-128fr.json
new file mode 100644
index 0000000..717a494
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobGreen_48-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "KM2016_SimpleBigKnobGreen_48-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_SimpleBigKnobGreen_48-128fr.png b/site/controls/KM2016_SimpleBigKnobGreen_48-128fr.png
new file mode 100644
index 0000000..876618a
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobGreen_48-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_SimpleBigKnobGrey_40-128fr.json b/site/controls/KM2016_SimpleBigKnobGrey_40-128fr.json
new file mode 100644
index 0000000..7e9c146
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobGrey_40-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobGrey_40-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_SimpleBigKnobGrey_40-128fr.png b/site/controls/KM2016_SimpleBigKnobGrey_40-128fr.png
new file mode 100644
index 0000000..0486f3e
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobGrey_40-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_SimpleBigKnobOrange_40-128fr.json b/site/controls/KM2016_SimpleBigKnobOrange_40-128fr.json
new file mode 100644
index 0000000..94dc4de
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobOrange_40-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobOrange_40-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_SimpleBigKnobOrange_40-128fr.png b/site/controls/KM2016_SimpleBigKnobOrange_40-128fr.png
new file mode 100644
index 0000000..96912d1
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobOrange_40-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_SimpleBigKnobOrange_48-128fr.json b/site/controls/KM2016_SimpleBigKnobOrange_48-128fr.json
new file mode 100644
index 0000000..36c3c9b
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobOrange_48-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "KM2016_SimpleBigKnobOrange_48-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_SimpleBigKnobOrange_48-128fr.png b/site/controls/KM2016_SimpleBigKnobOrange_48-128fr.png
new file mode 100644
index 0000000..9e0a374
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobOrange_48-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_SimpleBigKnobSatGreen_40-128fr.json b/site/controls/KM2016_SimpleBigKnobSatGreen_40-128fr.json
new file mode 100644
index 0000000..0b0db00
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobSatGreen_40-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobSatGreen_40-128fr.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/KM2016_SimpleBigKnobSatGreen_40-128fr.png b/site/controls/KM2016_SimpleBigKnobSatGreen_40-128fr.png
new file mode 100644
index 0000000..9475e04
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobSatGreen_40-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_SimpleBigKnobSatRED_40-128fr.json b/site/controls/KM2016_SimpleBigKnobSatRED_40-128fr.json
new file mode 100644
index 0000000..4d422e4
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobSatRED_40-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobSatRED_40-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_SimpleBigKnobSatRED_40-128fr.png b/site/controls/KM2016_SimpleBigKnobSatRED_40-128fr.png
new file mode 100644
index 0000000..7d731fc
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobSatRED_40-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_SimpleBigKnobWhite_40-128fr.json b/site/controls/KM2016_SimpleBigKnobWhite_40-128fr.json
new file mode 100644
index 0000000..7f8d3f2
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobWhite_40-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobWhite_40-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_SimpleBigKnobWhite_40-128fr.png b/site/controls/KM2016_SimpleBigKnobWhite_40-128fr.png
new file mode 100644
index 0000000..82a760d
--- /dev/null
+++ b/site/controls/KM2016_SimpleBigKnobWhite_40-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_Sweet_Pan01yellow_(24x24-128fr).json b/site/controls/KM2016_Sweet_Pan01yellow_(24x24-128fr).json
new file mode 100644
index 0000000..bd295cd
--- /dev/null
+++ b/site/controls/KM2016_Sweet_Pan01yellow_(24x24-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 24, "ctltype": 0, "fn": "KM2016_Sweet_Pan01yellow_(24x24-128fr).png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/KM2016_Sweet_Pan01yellow_(24x24-128fr).png b/site/controls/KM2016_Sweet_Pan01yellow_(24x24-128fr).png
new file mode 100644
index 0000000..afc7a73
--- /dev/null
+++ b/site/controls/KM2016_Sweet_Pan01yellow_(24x24-128fr).png
Binary files differ
diff --git a/site/controls/KM2016_Sweet_SEND_(20x20-128fr)_Purple.json b/site/controls/KM2016_Sweet_SEND_(20x20-128fr)_Purple.json
new file mode 100644
index 0000000..170cb95
--- /dev/null
+++ b/site/controls/KM2016_Sweet_SEND_(20x20-128fr)_Purple.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 20, "ctltype": 0, "fn": "KM2016_Sweet_SEND_(20x20-128fr)_Purple.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/KM2016_Sweet_SEND_(20x20-128fr)_Purple.png b/site/controls/KM2016_Sweet_SEND_(20x20-128fr)_Purple.png
new file mode 100644
index 0000000..57842b6
--- /dev/null
+++ b/site/controls/KM2016_Sweet_SEND_(20x20-128fr)_Purple.png
Binary files differ
diff --git a/site/controls/KM2016_Sweet_Vol01blue_(24x24-128fr).json b/site/controls/KM2016_Sweet_Vol01blue_(24x24-128fr).json
new file mode 100644
index 0000000..24bc2f2
--- /dev/null
+++ b/site/controls/KM2016_Sweet_Vol01blue_(24x24-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 24, "ctltype": 0, "fn": "KM2016_Sweet_Vol01blue_(24x24-128fr).png"} \ No newline at end of file
diff --git a/site/controls/KM2016_Sweet_Vol01blue_(24x24-128fr).png b/site/controls/KM2016_Sweet_Vol01blue_(24x24-128fr).png
new file mode 100644
index 0000000..8557484
--- /dev/null
+++ b/site/controls/KM2016_Sweet_Vol01blue_(24x24-128fr).png
Binary files differ
diff --git a/site/controls/KM2016_Vintage_Knob(tmbedt64-128fr).json b/site/controls/KM2016_Vintage_Knob(tmbedt64-128fr).json
new file mode 100644
index 0000000..a59b1c1
--- /dev/null
+++ b/site/controls/KM2016_Vintage_Knob(tmbedt64-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "KM2016_Vintage_Knob(tmbedt64-128fr).png"} \ No newline at end of file
diff --git a/site/controls/KM2016_Vintage_Knob(tmbedt64-128fr).png b/site/controls/KM2016_Vintage_Knob(tmbedt64-128fr).png
new file mode 100644
index 0000000..96f7557
--- /dev/null
+++ b/site/controls/KM2016_Vintage_Knob(tmbedt64-128fr).png
Binary files differ
diff --git a/site/controls/KM2016_XVKnobmed-pan_26x26-128fr.json b/site/controls/KM2016_XVKnobmed-pan_26x26-128fr.json
new file mode 100644
index 0000000..7574955
--- /dev/null
+++ b/site/controls/KM2016_XVKnobmed-pan_26x26-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_XVKnobmed-pan_26x26-128fr.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/KM2016_XVKnobmed-pan_26x26-128fr.png b/site/controls/KM2016_XVKnobmed-pan_26x26-128fr.png
new file mode 100644
index 0000000..1f226af
--- /dev/null
+++ b/site/controls/KM2016_XVKnobmed-pan_26x26-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_XVKnobmed_26x26-128fr.json b/site/controls/KM2016_XVKnobmed_26x26-128fr.json
new file mode 100644
index 0000000..c812867
--- /dev/null
+++ b/site/controls/KM2016_XVKnobmed_26x26-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_XVKnobmed_26x26-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_XVKnobmed_26x26-128fr.png b/site/controls/KM2016_XVKnobmed_26x26-128fr.png
new file mode 100644
index 0000000..feaa6d0
--- /dev/null
+++ b/site/controls/KM2016_XVKnobmed_26x26-128fr.png
Binary files differ
diff --git a/site/controls/KM2016_cyan_light_knob_(32x32-128fr).json b/site/controls/KM2016_cyan_light_knob_(32x32-128fr).json
new file mode 100644
index 0000000..67b193e
--- /dev/null
+++ b/site/controls/KM2016_cyan_light_knob_(32x32-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_cyan_light_knob_(32x32-128fr).png"} \ No newline at end of file
diff --git a/site/controls/KM2016_cyan_light_knob_(32x32-128fr).png b/site/controls/KM2016_cyan_light_knob_(32x32-128fr).png
new file mode 100644
index 0000000..a5deeb4
--- /dev/null
+++ b/site/controls/KM2016_cyan_light_knob_(32x32-128fr).png
Binary files differ
diff --git a/site/controls/KM2016_flstudio-style_(timbedt_30-128fr).json b/site/controls/KM2016_flstudio-style_(timbedt_30-128fr).json
new file mode 100644
index 0000000..1f6de1a
--- /dev/null
+++ b/site/controls/KM2016_flstudio-style_(timbedt_30-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 30, "ctltype": 0, "fn": "KM2016_flstudio-style_(timbedt_30-128fr).png"} \ No newline at end of file
diff --git a/site/controls/KM2016_flstudio-style_(timbedt_30-128fr).png b/site/controls/KM2016_flstudio-style_(timbedt_30-128fr).png
new file mode 100644
index 0000000..9f83307
--- /dev/null
+++ b/site/controls/KM2016_flstudio-style_(timbedt_30-128fr).png
Binary files differ
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_black.json b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_black.json
new file mode 100644
index 0000000..d93bba7
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_black.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_black.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_black.png b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_black.png
new file mode 100644
index 0000000..63f3a97
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_black.png
Binary files differ
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_blue.json b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_blue.json
new file mode 100644
index 0000000..8b99da4
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_blue.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_blue.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_blue.png b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_blue.png
new file mode 100644
index 0000000..031580c
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_blue.png
Binary files differ
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_gray.json b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_gray.json
new file mode 100644
index 0000000..5498aa6
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_gray.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_gray.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_gray.png b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_gray.png
new file mode 100644
index 0000000..a81f56e
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_gray.png
Binary files differ
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_green.json b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_green.json
new file mode 100644
index 0000000..65704a3
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_green.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_green.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_green.png b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_green.png
new file mode 100644
index 0000000..4b328d7
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_green.png
Binary files differ
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_red.json b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_red.json
new file mode 100644
index 0000000..1140f2e
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_red.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_red.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_knobTmbmod_(26x26-128fr)_red.png b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_red.png
new file mode 100644
index 0000000..e59fa26
--- /dev/null
+++ b/site/controls/KM2016_knobTmbmod_(26x26-128fr)_red.png
Binary files differ
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_blue.json b/site/controls/KM2016_knob_(26x26-128fr)_blue.json
new file mode 100644
index 0000000..1d632d1
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_blue.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_blue.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_blue.png b/site/controls/KM2016_knob_(26x26-128fr)_blue.png
new file mode 100644
index 0000000..462cf60
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_blue.png
Binary files differ
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_green.json b/site/controls/KM2016_knob_(26x26-128fr)_green.json
new file mode 100644
index 0000000..e8b23f3
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_green.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_green.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_green.png b/site/controls/KM2016_knob_(26x26-128fr)_green.png
new file mode 100644
index 0000000..deee4fe
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_green.png
Binary files differ
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_grey.json b/site/controls/KM2016_knob_(26x26-128fr)_grey.json
new file mode 100644
index 0000000..4ff6cd3
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_grey.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_grey.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_grey.png b/site/controls/KM2016_knob_(26x26-128fr)_grey.png
new file mode 100644
index 0000000..613dd15
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_grey.png
Binary files differ
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_purpl.json b/site/controls/KM2016_knob_(26x26-128fr)_purpl.json
new file mode 100644
index 0000000..b4c6233
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_purpl.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_purpl.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_purpl.png b/site/controls/KM2016_knob_(26x26-128fr)_purpl.png
new file mode 100644
index 0000000..91e4d8a
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_purpl.png
Binary files differ
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_red.json b/site/controls/KM2016_knob_(26x26-128fr)_red.json
new file mode 100644
index 0000000..b56b2d8
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_red.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_red.png"} \ No newline at end of file
diff --git a/site/controls/KM2016_knob_(26x26-128fr)_red.png b/site/controls/KM2016_knob_(26x26-128fr)_red.png
new file mode 100644
index 0000000..448c49b
--- /dev/null
+++ b/site/controls/KM2016_knob_(26x26-128fr)_red.png
Binary files differ
diff --git a/site/controls/KM2016_knob_(30x30-128fr).json b/site/controls/KM2016_knob_(30x30-128fr).json
new file mode 100644
index 0000000..9eedf98
--- /dev/null
+++ b/site/controls/KM2016_knob_(30x30-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 30, "ctltype": 0, "fn": "KM2016_knob_(30x30-128fr).png", "cellw": 30} \ No newline at end of file
diff --git a/site/controls/KM2016_knob_(30x30-128fr).png b/site/controls/KM2016_knob_(30x30-128fr).png
new file mode 100644
index 0000000..00a895e
--- /dev/null
+++ b/site/controls/KM2016_knob_(30x30-128fr).png
Binary files differ
diff --git a/site/controls/KM2016_lineshadow_(64x64-128fr).json b/site/controls/KM2016_lineshadow_(64x64-128fr).json
new file mode 100644
index 0000000..06deae7
--- /dev/null
+++ b/site/controls/KM2016_lineshadow_(64x64-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "KM2016_lineshadow_(64x64-128fr).png"} \ No newline at end of file
diff --git a/site/controls/KM2016_lineshadow_(64x64-128fr).png b/site/controls/KM2016_lineshadow_(64x64-128fr).png
new file mode 100644
index 0000000..6024905
--- /dev/null
+++ b/site/controls/KM2016_lineshadow_(64x64-128fr).png
Binary files differ
diff --git a/site/controls/KM_Speaker_64-128fr.json b/site/controls/KM_Speaker_64-128fr.json
new file mode 100644
index 0000000..b1cb88f
--- /dev/null
+++ b/site/controls/KM_Speaker_64-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 3, "fn": "KM_Speaker_64-128fr.png"} \ No newline at end of file
diff --git a/site/controls/KM_Speaker_64-128fr.png b/site/controls/KM_Speaker_64-128fr.png
new file mode 100644
index 0000000..a06881d
--- /dev/null
+++ b/site/controls/KM_Speaker_64-128fr.png
Binary files differ
diff --git a/site/controls/Kirnu-Cream_x64_106_PNG.json b/site/controls/Kirnu-Cream_x64_106_PNG.json
new file mode 100644
index 0000000..94540a0
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_106_PNG.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Kirnu-Cream_x64_106_PNG.png", "cellw": 38} \ No newline at end of file
diff --git a/site/controls/Kirnu-Cream_x64_106_PNG.png b/site/controls/Kirnu-Cream_x64_106_PNG.png
new file mode 100644
index 0000000..52acd2a
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_106_PNG.png
Binary files differ
diff --git a/site/controls/Kirnu-Cream_x64_107_PNG.json b/site/controls/Kirnu-Cream_x64_107_PNG.json
new file mode 100644
index 0000000..0528f0b
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_107_PNG.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Kirnu-Cream_x64_107_PNG.png"} \ No newline at end of file
diff --git a/site/controls/Kirnu-Cream_x64_107_PNG.png b/site/controls/Kirnu-Cream_x64_107_PNG.png
new file mode 100644
index 0000000..b8ffa47
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_107_PNG.png
Binary files differ
diff --git a/site/controls/Kirnu-Cream_x64_108_PNG.json b/site/controls/Kirnu-Cream_x64_108_PNG.json
new file mode 100644
index 0000000..ca1e565
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_108_PNG.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_108_PNG.png"} \ No newline at end of file
diff --git a/site/controls/Kirnu-Cream_x64_108_PNG.png b/site/controls/Kirnu-Cream_x64_108_PNG.png
new file mode 100644
index 0000000..6e40a03
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_108_PNG.png
Binary files differ
diff --git a/site/controls/Kirnu-Cream_x64_108_PNG2.json b/site/controls/Kirnu-Cream_x64_108_PNG2.json
new file mode 100644
index 0000000..7b68bdf
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_108_PNG2.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_108_PNG2.png", "cellw": 56} \ No newline at end of file
diff --git a/site/controls/Kirnu-Cream_x64_108_PNG2.png b/site/controls/Kirnu-Cream_x64_108_PNG2.png
new file mode 100644
index 0000000..c7164dd
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_108_PNG2.png
Binary files differ
diff --git a/site/controls/Kirnu-Cream_x64_108_PNG3.json b/site/controls/Kirnu-Cream_x64_108_PNG3.json
new file mode 100644
index 0000000..ce1a698
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_108_PNG3.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_108_PNG3.png", "cellw": 56} \ No newline at end of file
diff --git a/site/controls/Kirnu-Cream_x64_108_PNG3.png b/site/controls/Kirnu-Cream_x64_108_PNG3.png
new file mode 100644
index 0000000..a8b7693
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_108_PNG3.png
Binary files differ
diff --git a/site/controls/Kirnu-Cream_x64_109_PNG.json b/site/controls/Kirnu-Cream_x64_109_PNG.json
new file mode 100644
index 0000000..4902662
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_109_PNG.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_109_PNG.png"} \ No newline at end of file
diff --git a/site/controls/Kirnu-Cream_x64_109_PNG.png b/site/controls/Kirnu-Cream_x64_109_PNG.png
new file mode 100644
index 0000000..b736400
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_109_PNG.png
Binary files differ
diff --git a/site/controls/Kirnu-Cream_x64_109_PNG2.json b/site/controls/Kirnu-Cream_x64_109_PNG2.json
new file mode 100644
index 0000000..43cd010
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_109_PNG2.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_109_PNG2.png"} \ No newline at end of file
diff --git a/site/controls/Kirnu-Cream_x64_109_PNG2.png b/site/controls/Kirnu-Cream_x64_109_PNG2.png
new file mode 100644
index 0000000..e2b6b02
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_109_PNG2.png
Binary files differ
diff --git a/site/controls/Kirnu-Cream_x64_109_PNG2b.json b/site/controls/Kirnu-Cream_x64_109_PNG2b.json
new file mode 100644
index 0000000..20326ad
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_109_PNG2b.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 32, "ctltype": 0, "fn": "Kirnu-Cream_x64_109_PNG2b.png"} \ No newline at end of file
diff --git a/site/controls/Kirnu-Cream_x64_109_PNG2b.png b/site/controls/Kirnu-Cream_x64_109_PNG2b.png
new file mode 100644
index 0000000..00bcab4
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_109_PNG2b.png
Binary files differ
diff --git a/site/controls/Kirnu-Cream_x64_109_PNG3.json b/site/controls/Kirnu-Cream_x64_109_PNG3.json
new file mode 100644
index 0000000..f0a97c9
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_109_PNG3.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_109_PNG3.png"} \ No newline at end of file
diff --git a/site/controls/Kirnu-Cream_x64_109_PNG3.png b/site/controls/Kirnu-Cream_x64_109_PNG3.png
new file mode 100644
index 0000000..f576e10
--- /dev/null
+++ b/site/controls/Kirnu-Cream_x64_109_PNG3.png
Binary files differ
diff --git a/site/controls/LARGE_Pan_(25x25-101fr).json b/site/controls/LARGE_Pan_(25x25-101fr).json
new file mode 100644
index 0000000..98efa02
--- /dev/null
+++ b/site/controls/LARGE_Pan_(25x25-101fr).json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 25, "ctltype": 0, "fn": "LARGE_Pan_(25x25-101fr).png"} \ No newline at end of file
diff --git a/site/controls/LARGE_Pan_(25x25-101fr).png b/site/controls/LARGE_Pan_(25x25-101fr).png
new file mode 100644
index 0000000..dc7678a
--- /dev/null
+++ b/site/controls/LARGE_Pan_(25x25-101fr).png
Binary files differ
diff --git a/site/controls/LARGE_SLIDERFULL_(59x318-128fr).json b/site/controls/LARGE_SLIDERFULL_(59x318-128fr).json
new file mode 100644
index 0000000..d4b0cd3
--- /dev/null
+++ b/site/controls/LARGE_SLIDERFULL_(59x318-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 318, "ctltype": 1, "fn": "LARGE_SLIDERFULL_(59x318-128fr).png", "cellw": 59} \ No newline at end of file
diff --git a/site/controls/LARGE_SLIDERFULL_(59x318-128fr).png b/site/controls/LARGE_SLIDERFULL_(59x318-128fr).png
new file mode 100644
index 0000000..fe3caa7
--- /dev/null
+++ b/site/controls/LARGE_SLIDERFULL_(59x318-128fr).png
Binary files differ
diff --git a/site/controls/LARGE_SLIDER_TYPE2.json b/site/controls/LARGE_SLIDER_TYPE2.json
new file mode 100644
index 0000000..d5ecbe0
--- /dev/null
+++ b/site/controls/LARGE_SLIDER_TYPE2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 263, "ctltype": 5, "knbsz": 57, "fn": "LARGE_SLIDER_TYPE2.png"} \ No newline at end of file
diff --git a/site/controls/LARGE_SLIDER_TYPE2.png b/site/controls/LARGE_SLIDER_TYPE2.png
new file mode 100644
index 0000000..737f532
--- /dev/null
+++ b/site/controls/LARGE_SLIDER_TYPE2.png
Binary files differ
diff --git a/site/controls/LBX - green line 32.json b/site/controls/LBX - green line 32.json
new file mode 100644
index 0000000..b1436a2
--- /dev/null
+++ b/site/controls/LBX - green line 32.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 32, "ctltype": 0, "fn": "LBX - green line 32.png"} \ No newline at end of file
diff --git a/site/controls/LBX - green line 32.png b/site/controls/LBX - green line 32.png
new file mode 100644
index 0000000..8fb371c
--- /dev/null
+++ b/site/controls/LBX - green line 32.png
Binary files differ
diff --git a/site/controls/LBX - green line 64.json b/site/controls/LBX - green line 64.json
new file mode 100644
index 0000000..cf63673
--- /dev/null
+++ b/site/controls/LBX - green line 64.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 0, "fn": "LBX - green line 64.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/LBX - green line 64.png b/site/controls/LBX - green line 64.png
new file mode 100644
index 0000000..c7b86b2
--- /dev/null
+++ b/site/controls/LBX - green line 64.png
Binary files differ
diff --git a/site/controls/LBX - yellow line 32.json b/site/controls/LBX - yellow line 32.json
new file mode 100644
index 0000000..81997c2
--- /dev/null
+++ b/site/controls/LBX - yellow line 32.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 32, "ctltype": 0, "fn": "LBX - yellow line 32.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/LBX - yellow line 32.png b/site/controls/LBX - yellow line 32.png
new file mode 100644
index 0000000..1d5925c
--- /dev/null
+++ b/site/controls/LBX - yellow line 32.png
Binary files differ
diff --git a/site/controls/LBX - yellow line 64.json b/site/controls/LBX - yellow line 64.json
new file mode 100644
index 0000000..a2ca581
--- /dev/null
+++ b/site/controls/LBX - yellow line 64.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 0, "fn": "LBX - yellow line 64.png"} \ No newline at end of file
diff --git a/site/controls/LBX - yellow line 64.png b/site/controls/LBX - yellow line 64.png
new file mode 100644
index 0000000..af839ec
--- /dev/null
+++ b/site/controls/LBX - yellow line 64.png
Binary files differ
diff --git a/site/controls/LBX invisible 140x32.json b/site/controls/LBX invisible 140x32.json
new file mode 100644
index 0000000..bdcdf44
--- /dev/null
+++ b/site/controls/LBX invisible 140x32.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "LBX invisible 140x32.png"} \ No newline at end of file
diff --git a/site/controls/LBX invisible 140x32.png b/site/controls/LBX invisible 140x32.png
new file mode 100644
index 0000000..dc6bcce
--- /dev/null
+++ b/site/controls/LBX invisible 140x32.png
Binary files differ
diff --git a/site/controls/LBX-3Dknob-01_(32x128).json b/site/controls/LBX-3Dknob-01_(32x128).json
new file mode 100644
index 0000000..cbcc447
--- /dev/null
+++ b/site/controls/LBX-3Dknob-01_(32x128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "LBX-3Dknob-01_(32x128).png"} \ No newline at end of file
diff --git a/site/controls/LBX-3Dknob-01_(32x128).png b/site/controls/LBX-3Dknob-01_(32x128).png
new file mode 100644
index 0000000..c6a5aa6
--- /dev/null
+++ b/site/controls/LBX-3Dknob-01_(32x128).png
Binary files differ
diff --git a/site/controls/LBX-3Dknob-01_(48x128).json b/site/controls/LBX-3Dknob-01_(48x128).json
new file mode 100644
index 0000000..e496ab4
--- /dev/null
+++ b/site/controls/LBX-3Dknob-01_(48x128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "LBX-3Dknob-01_(48x128).png"} \ No newline at end of file
diff --git a/site/controls/LBX-3Dknob-01_(48x128).png b/site/controls/LBX-3Dknob-01_(48x128).png
new file mode 100644
index 0000000..897e204
--- /dev/null
+++ b/site/controls/LBX-3Dknob-01_(48x128).png
Binary files differ
diff --git a/site/controls/LBX-3Dknob-01_(64x128).json b/site/controls/LBX-3Dknob-01_(64x128).json
new file mode 100644
index 0000000..5b9fa21
--- /dev/null
+++ b/site/controls/LBX-3Dknob-01_(64x128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "LBX-3Dknob-01_(64x128).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/LBX-3Dknob-01_(64x128).png b/site/controls/LBX-3Dknob-01_(64x128).png
new file mode 100644
index 0000000..d8fa025
--- /dev/null
+++ b/site/controls/LBX-3Dknob-01_(64x128).png
Binary files differ
diff --git a/site/controls/LBXTimb_ILDWW32Blck-01.json b/site/controls/LBXTimb_ILDWW32Blck-01.json
new file mode 100644
index 0000000..23e27bd
--- /dev/null
+++ b/site/controls/LBXTimb_ILDWW32Blck-01.json
@@ -0,0 +1 @@
+{"frames": 256, "cellh": 32, "ctltype": 0, "fn": "LBXTimb_ILDWW32Blck-01.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/LBXTimb_ILDWW32Blck-01.png b/site/controls/LBXTimb_ILDWW32Blck-01.png
new file mode 100644
index 0000000..402eb7c
--- /dev/null
+++ b/site/controls/LBXTimb_ILDWW32Blck-01.png
Binary files differ
diff --git a/site/controls/LBXTimb_ILDWW32Silv-01.json b/site/controls/LBXTimb_ILDWW32Silv-01.json
new file mode 100644
index 0000000..4cc799d
--- /dev/null
+++ b/site/controls/LBXTimb_ILDWW32Silv-01.json
@@ -0,0 +1 @@
+{"frames": 256, "cellh": 32, "ctltype": 0, "fn": "LBXTimb_ILDWW32Silv-01.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/LBXTimb_ILDWW32Silv-01.png b/site/controls/LBXTimb_ILDWW32Silv-01.png
new file mode 100644
index 0000000..ee50d17
--- /dev/null
+++ b/site/controls/LBXTimb_ILDWW32Silv-01.png
Binary files differ
diff --git a/site/controls/LBXTimb_ILPoizoneWheel-01.json b/site/controls/LBXTimb_ILPoizoneWheel-01.json
new file mode 100644
index 0000000..8c5a434
--- /dev/null
+++ b/site/controls/LBXTimb_ILPoizoneWheel-01.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 100, "ctltype": 1, "fn": "LBXTimb_ILPoizoneWheel-01.png", "cellw": 19} \ No newline at end of file
diff --git a/site/controls/LBXTimb_ILPoizoneWheel-01.png b/site/controls/LBXTimb_ILPoizoneWheel-01.png
new file mode 100644
index 0000000..6531767
--- /dev/null
+++ b/site/controls/LBXTimb_ILPoizoneWheel-01.png
Binary files differ
diff --git a/site/controls/LBXTimb_ILTB Btn-1.json b/site/controls/LBXTimb_ILTB Btn-1.json
new file mode 100644
index 0000000..3d76128
--- /dev/null
+++ b/site/controls/LBXTimb_ILTB Btn-1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "LBXTimb_ILTB Btn-1.png"} \ No newline at end of file
diff --git a/site/controls/LBXTimb_ILTB Btn-1.png b/site/controls/LBXTimb_ILTB Btn-1.png
new file mode 100644
index 0000000..9d1f779
--- /dev/null
+++ b/site/controls/LBXTimb_ILTB Btn-1.png
Binary files differ
diff --git a/site/controls/LBXTimb_ILTB Btn-2.json b/site/controls/LBXTimb_ILTB Btn-2.json
new file mode 100644
index 0000000..2a2eb10
--- /dev/null
+++ b/site/controls/LBXTimb_ILTB Btn-2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "LBXTimb_ILTB Btn-2.png"} \ No newline at end of file
diff --git a/site/controls/LBXTimb_ILTB Btn-2.png b/site/controls/LBXTimb_ILTB Btn-2.png
new file mode 100644
index 0000000..011f876
--- /dev/null
+++ b/site/controls/LBXTimb_ILTB Btn-2.png
Binary files differ
diff --git a/site/controls/LBXTimb_ILTB Btn-3.json b/site/controls/LBXTimb_ILTB Btn-3.json
new file mode 100644
index 0000000..fd23089
--- /dev/null
+++ b/site/controls/LBXTimb_ILTB Btn-3.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "LBXTimb_ILTB Btn-3.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/LBXTimb_ILTB Btn-3.png b/site/controls/LBXTimb_ILTB Btn-3.png
new file mode 100644
index 0000000..823b5b0
--- /dev/null
+++ b/site/controls/LBXTimb_ILTB Btn-3.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample10a_16130.json b/site/controls/LBXTimb_aSimpleSample10a_16130.json
new file mode 100644
index 0000000..89e439b
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample10a_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample10a_16130.png"} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample10a_16130.png b/site/controls/LBXTimb_aSimpleSample10a_16130.png
new file mode 100644
index 0000000..2dd2bec
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample10a_16130.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample10b_16130.json b/site/controls/LBXTimb_aSimpleSample10b_16130.json
new file mode 100644
index 0000000..302337a
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample10b_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample10b_16130.png"} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample10b_16130.png b/site/controls/LBXTimb_aSimpleSample10b_16130.png
new file mode 100644
index 0000000..7b59874
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample10b_16130.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample2_16130.json b/site/controls/LBXTimb_aSimpleSample2_16130.json
new file mode 100644
index 0000000..756a08b
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample2_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample2_16130.png"} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample2_16130.png b/site/controls/LBXTimb_aSimpleSample2_16130.png
new file mode 100644
index 0000000..aefa807
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample2_16130.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample3_16130.json b/site/controls/LBXTimb_aSimpleSample3_16130.json
new file mode 100644
index 0000000..e023da9
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample3_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample3_16130.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample3_16130.png b/site/controls/LBXTimb_aSimpleSample3_16130.png
new file mode 100644
index 0000000..efcd187
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample3_16130.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample4_16130.json b/site/controls/LBXTimb_aSimpleSample4_16130.json
new file mode 100644
index 0000000..4bb0f9d
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample4_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample4_16130.png"} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample4_16130.png b/site/controls/LBXTimb_aSimpleSample4_16130.png
new file mode 100644
index 0000000..b874365
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample4_16130.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample5_16130.json b/site/controls/LBXTimb_aSimpleSample5_16130.json
new file mode 100644
index 0000000..67e527a
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample5_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample5_16130.png"} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample5_16130.png b/site/controls/LBXTimb_aSimpleSample5_16130.png
new file mode 100644
index 0000000..5e4dfad
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample5_16130.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample6_16130.json b/site/controls/LBXTimb_aSimpleSample6_16130.json
new file mode 100644
index 0000000..204f485
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample6_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample6_16130.png"} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample6_16130.png b/site/controls/LBXTimb_aSimpleSample6_16130.png
new file mode 100644
index 0000000..1e2a281
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample6_16130.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample7_16130.json b/site/controls/LBXTimb_aSimpleSample7_16130.json
new file mode 100644
index 0000000..704156e
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample7_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample7_16130.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample7_16130.png b/site/controls/LBXTimb_aSimpleSample7_16130.png
new file mode 100644
index 0000000..20ee962
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample7_16130.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample8_16130.json b/site/controls/LBXTimb_aSimpleSample8_16130.json
new file mode 100644
index 0000000..4976d6d
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample8_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample8_16130.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample8_16130.png b/site/controls/LBXTimb_aSimpleSample8_16130.png
new file mode 100644
index 0000000..60039cb
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample8_16130.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample9a_16129WASD.json b/site/controls/LBXTimb_aSimpleSample9a_16129WASD.json
new file mode 100644
index 0000000..1ac8229
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample9a_16129WASD.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 12, "ctltype": 0, "fn": "LBXTimb_aSimpleSample9a_16129WASD.png"} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample9a_16129WASD.png b/site/controls/LBXTimb_aSimpleSample9a_16129WASD.png
new file mode 100644
index 0000000..f7f8bbd
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample9a_16129WASD.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample9b_16129WASD.json b/site/controls/LBXTimb_aSimpleSample9b_16129WASD.json
new file mode 100644
index 0000000..3b5afef
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample9b_16129WASD.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 12, "ctltype": 0, "fn": "LBXTimb_aSimpleSample9b_16129WASD.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample9b_16129WASD.png b/site/controls/LBXTimb_aSimpleSample9b_16129WASD.png
new file mode 100644
index 0000000..e649887
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample9b_16129WASD.png
Binary files differ
diff --git a/site/controls/LBXTimb_aSimpleSample_16130.json b/site/controls/LBXTimb_aSimpleSample_16130.json
new file mode 100644
index 0000000..93e2250
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample_16130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample_16130.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/LBXTimb_aSimpleSample_16130.png b/site/controls/LBXTimb_aSimpleSample_16130.png
new file mode 100644
index 0000000..1e799e5
--- /dev/null
+++ b/site/controls/LBXTimb_aSimpleSample_16130.png
Binary files differ
diff --git a/site/controls/LBX_2Cogs.json b/site/controls/LBX_2Cogs.json
new file mode 100644
index 0000000..2358fb2
--- /dev/null
+++ b/site/controls/LBX_2Cogs.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 2, "fn": "LBX_2Cogs.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/LBX_2Cogs.png b/site/controls/LBX_2Cogs.png
new file mode 100644
index 0000000..b3ef8c7
--- /dev/null
+++ b/site/controls/LBX_2Cogs.png
Binary files differ
diff --git a/site/controls/LBX_Actions_PlayStop32.json b/site/controls/LBX_Actions_PlayStop32.json
new file mode 100644
index 0000000..9196a82
--- /dev/null
+++ b/site/controls/LBX_Actions_PlayStop32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Actions_PlayStop32.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/LBX_Actions_PlayStop32.png b/site/controls/LBX_Actions_PlayStop32.png
new file mode 100644
index 0000000..0789f00
--- /dev/null
+++ b/site/controls/LBX_Actions_PlayStop32.png
Binary files differ
diff --git a/site/controls/LBX_Button32.json b/site/controls/LBX_Button32.json
new file mode 100644
index 0000000..cfdae9a
--- /dev/null
+++ b/site/controls/LBX_Button32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32.png"} \ No newline at end of file
diff --git a/site/controls/LBX_Button32.png b/site/controls/LBX_Button32.png
new file mode 100644
index 0000000..eb70774
--- /dev/null
+++ b/site/controls/LBX_Button32.png
Binary files differ
diff --git a/site/controls/LBX_Button32_Blue.json b/site/controls/LBX_Button32_Blue.json
new file mode 100644
index 0000000..a0a3cd4
--- /dev/null
+++ b/site/controls/LBX_Button32_Blue.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32_Blue.png"} \ No newline at end of file
diff --git a/site/controls/LBX_Button32_Blue.png b/site/controls/LBX_Button32_Blue.png
new file mode 100644
index 0000000..0ce3466
--- /dev/null
+++ b/site/controls/LBX_Button32_Blue.png
Binary files differ
diff --git a/site/controls/LBX_Button32_Orange.json b/site/controls/LBX_Button32_Orange.json
new file mode 100644
index 0000000..b145eaf
--- /dev/null
+++ b/site/controls/LBX_Button32_Orange.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32_Orange.png"} \ No newline at end of file
diff --git a/site/controls/LBX_Button32_Orange.png b/site/controls/LBX_Button32_Orange.png
new file mode 100644
index 0000000..88dc7d8
--- /dev/null
+++ b/site/controls/LBX_Button32_Orange.png
Binary files differ
diff --git a/site/controls/LBX_Button32_Red.json b/site/controls/LBX_Button32_Red.json
new file mode 100644
index 0000000..555e78e
--- /dev/null
+++ b/site/controls/LBX_Button32_Red.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32_Red.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/LBX_Button32_Red.png b/site/controls/LBX_Button32_Red.png
new file mode 100644
index 0000000..a15f998
--- /dev/null
+++ b/site/controls/LBX_Button32_Red.png
Binary files differ
diff --git a/site/controls/LBX_Button32_Yellow.json b/site/controls/LBX_Button32_Yellow.json
new file mode 100644
index 0000000..e6a9024
--- /dev/null
+++ b/site/controls/LBX_Button32_Yellow.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32_Yellow.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/LBX_Button32_Yellow.png b/site/controls/LBX_Button32_Yellow.png
new file mode 100644
index 0000000..5d5bac6
--- /dev/null
+++ b/site/controls/LBX_Button32_Yellow.png
Binary files differ
diff --git a/site/controls/LBX_Button48.json b/site/controls/LBX_Button48.json
new file mode 100644
index 0000000..82701b0
--- /dev/null
+++ b/site/controls/LBX_Button48.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 48, "ctltype": 2, "fn": "LBX_Button48.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/LBX_Button48.png b/site/controls/LBX_Button48.png
new file mode 100644
index 0000000..94354cf
--- /dev/null
+++ b/site/controls/LBX_Button48.png
Binary files differ
diff --git a/site/controls/LBX_CircleKnob1.json b/site/controls/LBX_CircleKnob1.json
new file mode 100644
index 0000000..a21e8e2
--- /dev/null
+++ b/site/controls/LBX_CircleKnob1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 48, "ctltype": 0, "fn": "LBX_CircleKnob1.png"} \ No newline at end of file
diff --git a/site/controls/LBX_CircleKnob1.png b/site/controls/LBX_CircleKnob1.png
new file mode 100644
index 0000000..0acf0a3
--- /dev/null
+++ b/site/controls/LBX_CircleKnob1.png
Binary files differ
diff --git a/site/controls/LBX_CircleKnob1_(timb-dark).json b/site/controls/LBX_CircleKnob1_(timb-dark).json
new file mode 100644
index 0000000..a9c5a86
--- /dev/null
+++ b/site/controls/LBX_CircleKnob1_(timb-dark).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 48, "ctltype": 0, "fn": "LBX_CircleKnob1_(timb-dark).png"} \ No newline at end of file
diff --git a/site/controls/LBX_CircleKnob1_(timb-dark).png b/site/controls/LBX_CircleKnob1_(timb-dark).png
new file mode 100644
index 0000000..adc557e
--- /dev/null
+++ b/site/controls/LBX_CircleKnob1_(timb-dark).png
Binary files differ
diff --git a/site/controls/LBX_CircleKnob1_(timb-inv).json b/site/controls/LBX_CircleKnob1_(timb-inv).json
new file mode 100644
index 0000000..9a9bf0d
--- /dev/null
+++ b/site/controls/LBX_CircleKnob1_(timb-inv).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 48, "ctltype": 0, "fn": "LBX_CircleKnob1_(timb-inv).png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/LBX_CircleKnob1_(timb-inv).png b/site/controls/LBX_CircleKnob1_(timb-inv).png
new file mode 100644
index 0000000..ba4534c
--- /dev/null
+++ b/site/controls/LBX_CircleKnob1_(timb-inv).png
Binary files differ
diff --git a/site/controls/LBX_CircleSlider1.json b/site/controls/LBX_CircleSlider1.json
new file mode 100644
index 0000000..b4792ef
--- /dev/null
+++ b/site/controls/LBX_CircleSlider1.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 256, "ctltype": 7, "knbsz": 32, "fn": "LBX_CircleSlider1.png"} \ No newline at end of file
diff --git a/site/controls/LBX_CircleSlider1.png b/site/controls/LBX_CircleSlider1.png
new file mode 100644
index 0000000..135320c
--- /dev/null
+++ b/site/controls/LBX_CircleSlider1.png
Binary files differ
diff --git a/site/controls/LBX_FX.json b/site/controls/LBX_FX.json
new file mode 100644
index 0000000..364e643
--- /dev/null
+++ b/site/controls/LBX_FX.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_FX.png"} \ No newline at end of file
diff --git a/site/controls/LBX_FX.png b/site/controls/LBX_FX.png
new file mode 100644
index 0000000..7ec0bb3
--- /dev/null
+++ b/site/controls/LBX_FX.png
Binary files differ
diff --git a/site/controls/LBX_Invisible.json b/site/controls/LBX_Invisible.json
new file mode 100644
index 0000000..72263b2
--- /dev/null
+++ b/site/controls/LBX_Invisible.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "LBX_Invisible.png"} \ No newline at end of file
diff --git a/site/controls/LBX_Invisible.png b/site/controls/LBX_Invisible.png
new file mode 100644
index 0000000..96729e1
--- /dev/null
+++ b/site/controls/LBX_Invisible.png
Binary files differ
diff --git a/site/controls/LBX_M-drk.json b/site/controls/LBX_M-drk.json
new file mode 100644
index 0000000..e6a0e9c
--- /dev/null
+++ b/site/controls/LBX_M-drk.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_M-drk.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/LBX_M-drk.png b/site/controls/LBX_M-drk.png
new file mode 100644
index 0000000..c4389f7
--- /dev/null
+++ b/site/controls/LBX_M-drk.png
Binary files differ
diff --git a/site/controls/LBX_M.json b/site/controls/LBX_M.json
new file mode 100644
index 0000000..7942ca6
--- /dev/null
+++ b/site/controls/LBX_M.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_M.png"} \ No newline at end of file
diff --git a/site/controls/LBX_M.png b/site/controls/LBX_M.png
new file mode 100644
index 0000000..2ffa5c7
--- /dev/null
+++ b/site/controls/LBX_M.png
Binary files differ
diff --git a/site/controls/LBX_REC.json b/site/controls/LBX_REC.json
new file mode 100644
index 0000000..480c6d1
--- /dev/null
+++ b/site/controls/LBX_REC.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_REC.png"} \ No newline at end of file
diff --git a/site/controls/LBX_REC.png b/site/controls/LBX_REC.png
new file mode 100644
index 0000000..611dc87
--- /dev/null
+++ b/site/controls/LBX_REC.png
Binary files differ
diff --git a/site/controls/LBX_S-drk.json b/site/controls/LBX_S-drk.json
new file mode 100644
index 0000000..766932d
--- /dev/null
+++ b/site/controls/LBX_S-drk.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_S-drk.png"} \ No newline at end of file
diff --git a/site/controls/LBX_S-drk.png b/site/controls/LBX_S-drk.png
new file mode 100644
index 0000000..d2f8bbe
--- /dev/null
+++ b/site/controls/LBX_S-drk.png
Binary files differ
diff --git a/site/controls/LBX_S.json b/site/controls/LBX_S.json
new file mode 100644
index 0000000..29c36de
--- /dev/null
+++ b/site/controls/LBX_S.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_S.png"} \ No newline at end of file
diff --git a/site/controls/LBX_S.png b/site/controls/LBX_S.png
new file mode 100644
index 0000000..2fbb540
--- /dev/null
+++ b/site/controls/LBX_S.png
Binary files differ
diff --git a/site/controls/LBX_ledstrip_b_gy.json b/site/controls/LBX_ledstrip_b_gy.json
new file mode 100644
index 0000000..82e83f6
--- /dev/null
+++ b/site/controls/LBX_ledstrip_b_gy.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 250, "ctltype": 3, "fn": "LBX_ledstrip_b_gy.png"} \ No newline at end of file
diff --git a/site/controls/LBX_ledstrip_b_gy.png b/site/controls/LBX_ledstrip_b_gy.png
new file mode 100644
index 0000000..1f2db6b
--- /dev/null
+++ b/site/controls/LBX_ledstrip_b_gy.png
Binary files differ
diff --git a/site/controls/LBX_ledstrip_bars.json b/site/controls/LBX_ledstrip_bars.json
new file mode 100644
index 0000000..f753621
--- /dev/null
+++ b/site/controls/LBX_ledstrip_bars.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 176, "ctltype": 3, "fn": "LBX_ledstrip_bars.png"} \ No newline at end of file
diff --git a/site/controls/LBX_ledstrip_bars.png b/site/controls/LBX_ledstrip_bars.png
new file mode 100644
index 0000000..42d9f48
--- /dev/null
+++ b/site/controls/LBX_ledstrip_bars.png
Binary files differ
diff --git a/site/controls/LBX_ledstrip_bars2.json b/site/controls/LBX_ledstrip_bars2.json
new file mode 100644
index 0000000..1ba6097
--- /dev/null
+++ b/site/controls/LBX_ledstrip_bars2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 176, "ctltype": 3, "fn": "LBX_ledstrip_bars2.png"} \ No newline at end of file
diff --git a/site/controls/LBX_ledstrip_bars2.png b/site/controls/LBX_ledstrip_bars2.png
new file mode 100644
index 0000000..319095b
--- /dev/null
+++ b/site/controls/LBX_ledstrip_bars2.png
Binary files differ
diff --git a/site/controls/LBX_ledstrip_c_gy.json b/site/controls/LBX_ledstrip_c_gy.json
new file mode 100644
index 0000000..dfece0d
--- /dev/null
+++ b/site/controls/LBX_ledstrip_c_gy.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 250, "ctltype": 3, "fn": "LBX_ledstrip_c_gy.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/LBX_ledstrip_c_gy.png b/site/controls/LBX_ledstrip_c_gy.png
new file mode 100644
index 0000000..1d3fb0e
--- /dev/null
+++ b/site/controls/LBX_ledstrip_c_gy.png
Binary files differ
diff --git a/site/controls/LBX_ledstrip_d_gy.json b/site/controls/LBX_ledstrip_d_gy.json
new file mode 100644
index 0000000..6aa34ab
--- /dev/null
+++ b/site/controls/LBX_ledstrip_d_gy.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 250, "ctltype": 3, "fn": "LBX_ledstrip_d_gy.png"} \ No newline at end of file
diff --git a/site/controls/LBX_ledstrip_d_gy.png b/site/controls/LBX_ledstrip_d_gy.png
new file mode 100644
index 0000000..f62b322
--- /dev/null
+++ b/site/controls/LBX_ledstrip_d_gy.png
Binary files differ
diff --git a/site/controls/LBX_ledstrip_g.json b/site/controls/LBX_ledstrip_g.json
new file mode 100644
index 0000000..8d2ef10
--- /dev/null
+++ b/site/controls/LBX_ledstrip_g.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 250, "ctltype": 3, "fn": "LBX_ledstrip_g.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/LBX_ledstrip_g.png b/site/controls/LBX_ledstrip_g.png
new file mode 100644
index 0000000..803cdcd
--- /dev/null
+++ b/site/controls/LBX_ledstrip_g.png
Binary files differ
diff --git a/site/controls/Large_Mute(23x46).json b/site/controls/Large_Mute(23x46).json
new file mode 100644
index 0000000..af8ee5e
--- /dev/null
+++ b/site/controls/Large_Mute(23x46).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Large_Mute(23x46).png", "cellw": 23} \ No newline at end of file
diff --git a/site/controls/Large_Mute(23x46).png b/site/controls/Large_Mute(23x46).png
new file mode 100644
index 0000000..5b37728
--- /dev/null
+++ b/site/controls/Large_Mute(23x46).png
Binary files differ
diff --git a/site/controls/Large_Mute(23x50).json b/site/controls/Large_Mute(23x50).json
new file mode 100644
index 0000000..149e0e8
--- /dev/null
+++ b/site/controls/Large_Mute(23x50).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 25, "ctltype": 2, "fn": "Large_Mute(23x50).png", "cellw": 23} \ No newline at end of file
diff --git a/site/controls/Large_Mute(23x50).png b/site/controls/Large_Mute(23x50).png
new file mode 100644
index 0000000..8e8afb2
--- /dev/null
+++ b/site/controls/Large_Mute(23x50).png
Binary files differ
diff --git a/site/controls/Large_Pan(27x28x128).json b/site/controls/Large_Pan(27x28x128).json
new file mode 100644
index 0000000..907dedc
--- /dev/null
+++ b/site/controls/Large_Pan(27x28x128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 28, "ctltype": 0, "fn": "Large_Pan(27x28x128).png"} \ No newline at end of file
diff --git a/site/controls/Large_Pan(27x28x128).png b/site/controls/Large_Pan(27x28x128).png
new file mode 100644
index 0000000..48353c4
--- /dev/null
+++ b/site/controls/Large_Pan(27x28x128).png
Binary files differ
diff --git a/site/controls/Large_Phase(17x38).json b/site/controls/Large_Phase(17x38).json
new file mode 100644
index 0000000..c2e3ddc
--- /dev/null
+++ b/site/controls/Large_Phase(17x38).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Large_Phase(17x38).png", "cellw": 17} \ No newline at end of file
diff --git a/site/controls/Large_Phase(17x38).png b/site/controls/Large_Phase(17x38).png
new file mode 100644
index 0000000..cdf0b03
--- /dev/null
+++ b/site/controls/Large_Phase(17x38).png
Binary files differ
diff --git a/site/controls/Large_REC_(23x54).json b/site/controls/Large_REC_(23x54).json
new file mode 100644
index 0000000..862966c
--- /dev/null
+++ b/site/controls/Large_REC_(23x54).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 27, "ctltype": 2, "fn": "Large_REC_(23x54).png", "cellw": 23} \ No newline at end of file
diff --git a/site/controls/Large_REC_(23x54).png b/site/controls/Large_REC_(23x54).png
new file mode 100644
index 0000000..bec3e30
--- /dev/null
+++ b/site/controls/Large_REC_(23x54).png
Binary files differ
diff --git a/site/controls/Large_REC_(23x54)2.json b/site/controls/Large_REC_(23x54)2.json
new file mode 100644
index 0000000..e4bdda4
--- /dev/null
+++ b/site/controls/Large_REC_(23x54)2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 27, "ctltype": 2, "fn": "Large_REC_(23x54)2.png"} \ No newline at end of file
diff --git a/site/controls/Large_REC_(23x54)2.png b/site/controls/Large_REC_(23x54)2.png
new file mode 100644
index 0000000..90e9469
--- /dev/null
+++ b/site/controls/Large_REC_(23x54)2.png
Binary files differ
diff --git a/site/controls/Large_Solo(23x46).json b/site/controls/Large_Solo(23x46).json
new file mode 100644
index 0000000..a43ad1f
--- /dev/null
+++ b/site/controls/Large_Solo(23x46).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Large_Solo(23x46).png", "cellw": 23} \ No newline at end of file
diff --git a/site/controls/Large_Solo(23x46).png b/site/controls/Large_Solo(23x46).png
new file mode 100644
index 0000000..6a2e2a6
--- /dev/null
+++ b/site/controls/Large_Solo(23x46).png
Binary files differ
diff --git a/site/controls/Large_Solo(23x50).json b/site/controls/Large_Solo(23x50).json
new file mode 100644
index 0000000..ef00e9b
--- /dev/null
+++ b/site/controls/Large_Solo(23x50).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 25, "ctltype": 2, "fn": "Large_Solo(23x50).png"} \ No newline at end of file
diff --git a/site/controls/Large_Solo(23x50).png b/site/controls/Large_Solo(23x50).png
new file mode 100644
index 0000000..08ebac2
--- /dev/null
+++ b/site/controls/Large_Solo(23x50).png
Binary files differ
diff --git a/site/controls/MJMUTE.json b/site/controls/MJMUTE.json
new file mode 100644
index 0000000..7db87f5
--- /dev/null
+++ b/site/controls/MJMUTE.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 13, "ctltype": 2, "fn": "MJMUTE.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/MJMUTE.png b/site/controls/MJMUTE.png
new file mode 100644
index 0000000..0ee82a5
--- /dev/null
+++ b/site/controls/MJMUTE.png
Binary files differ
diff --git a/site/controls/MJSOLO.json b/site/controls/MJSOLO.json
new file mode 100644
index 0000000..3b275e3
--- /dev/null
+++ b/site/controls/MJSOLO.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 13, "ctltype": 2, "fn": "MJSOLO.png"} \ No newline at end of file
diff --git a/site/controls/MJSOLO.png b/site/controls/MJSOLO.png
new file mode 100644
index 0000000..cf0256e
--- /dev/null
+++ b/site/controls/MJSOLO.png
Binary files differ
diff --git a/site/controls/MPS-16128SEQ-1.json b/site/controls/MPS-16128SEQ-1.json
new file mode 100644
index 0000000..470bf1e
--- /dev/null
+++ b/site/controls/MPS-16128SEQ-1.json
@@ -0,0 +1 @@
+{"frames": 8, "cellh": 128, "ctltype": 1, "fn": "MPS-16128SEQ-1.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/MPS-16128SEQ-1.png b/site/controls/MPS-16128SEQ-1.png
new file mode 100644
index 0000000..03eb834
--- /dev/null
+++ b/site/controls/MPS-16128SEQ-1.png
Binary files differ
diff --git a/site/controls/MPS-1664SEQ-2.json b/site/controls/MPS-1664SEQ-2.json
new file mode 100644
index 0000000..f841bb1
--- /dev/null
+++ b/site/controls/MPS-1664SEQ-2.json
@@ -0,0 +1 @@
+{"frames": 4, "cellh": 64, "ctltype": 1, "fn": "MPS-1664SEQ-2.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/MPS-1664SEQ-2.png b/site/controls/MPS-1664SEQ-2.png
new file mode 100644
index 0000000..852c434
--- /dev/null
+++ b/site/controls/MPS-1664SEQ-2.png
Binary files differ
diff --git a/site/controls/Microtonic Multi_BEETLEKNOBcrp.json b/site/controls/Microtonic Multi_BEETLEKNOBcrp.json
new file mode 100644
index 0000000..8c7c9ef
--- /dev/null
+++ b/site/controls/Microtonic Multi_BEETLEKNOBcrp.json
@@ -0,0 +1 @@
+{"frames": 92, "cellh": 50, "ctltype": 0, "fn": "Microtonic Multi_BEETLEKNOBcrp.png", "cellw": 50} \ No newline at end of file
diff --git a/site/controls/Microtonic Multi_BEETLEKNOBcrp.png b/site/controls/Microtonic Multi_BEETLEKNOBcrp.png
new file mode 100644
index 0000000..f5e7fc9
--- /dev/null
+++ b/site/controls/Microtonic Multi_BEETLEKNOBcrp.png
Binary files differ
diff --git a/site/controls/NEVE-73-CLIP.json b/site/controls/NEVE-73-CLIP.json
new file mode 100644
index 0000000..bb3afda
--- /dev/null
+++ b/site/controls/NEVE-73-CLIP.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 3, "fn": "NEVE-73-CLIP.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/NEVE-73-CLIP.png b/site/controls/NEVE-73-CLIP.png
new file mode 100644
index 0000000..bbc5c9c
--- /dev/null
+++ b/site/controls/NEVE-73-CLIP.png
Binary files differ
diff --git a/site/controls/NORA-REC_64128.json b/site/controls/NORA-REC_64128.json
new file mode 100644
index 0000000..4e22ca0
--- /dev/null
+++ b/site/controls/NORA-REC_64128.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 2, "fn": "NORA-REC_64128.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/NORA-REC_64128.png b/site/controls/NORA-REC_64128.png
new file mode 100644
index 0000000..b03249f
--- /dev/null
+++ b/site/controls/NORA-REC_64128.png
Binary files differ
diff --git a/site/controls/NORA-REC_64128b.json b/site/controls/NORA-REC_64128b.json
new file mode 100644
index 0000000..5f0ee8c
--- /dev/null
+++ b/site/controls/NORA-REC_64128b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 2, "fn": "NORA-REC_64128b.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/NORA-REC_64128b.png b/site/controls/NORA-REC_64128b.png
new file mode 100644
index 0000000..14208df
--- /dev/null
+++ b/site/controls/NORA-REC_64128b.png
Binary files differ
diff --git a/site/controls/NitroButto16-01graygreen.json b/site/controls/NitroButto16-01graygreen.json
new file mode 100644
index 0000000..c51b93b
--- /dev/null
+++ b/site/controls/NitroButto16-01graygreen.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-01graygreen.png"} \ No newline at end of file
diff --git a/site/controls/NitroButto16-01graygreen.png b/site/controls/NitroButto16-01graygreen.png
new file mode 100644
index 0000000..df5f77b
--- /dev/null
+++ b/site/controls/NitroButto16-01graygreen.png
Binary files differ
diff --git a/site/controls/NitroButto16-01redgreen.json b/site/controls/NitroButto16-01redgreen.json
new file mode 100644
index 0000000..96d24c7
--- /dev/null
+++ b/site/controls/NitroButto16-01redgreen.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-01redgreen.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/NitroButto16-01redgreen.png b/site/controls/NitroButto16-01redgreen.png
new file mode 100644
index 0000000..6da71b3
--- /dev/null
+++ b/site/controls/NitroButto16-01redgreen.png
Binary files differ
diff --git a/site/controls/NitroButto16-02graygreen.json b/site/controls/NitroButto16-02graygreen.json
new file mode 100644
index 0000000..7d1dda5
--- /dev/null
+++ b/site/controls/NitroButto16-02graygreen.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-02graygreen.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/NitroButto16-02graygreen.png b/site/controls/NitroButto16-02graygreen.png
new file mode 100644
index 0000000..c46914b
--- /dev/null
+++ b/site/controls/NitroButto16-02graygreen.png
Binary files differ
diff --git a/site/controls/NitroButto16-02redgreen.json b/site/controls/NitroButto16-02redgreen.json
new file mode 100644
index 0000000..7aebeec
--- /dev/null
+++ b/site/controls/NitroButto16-02redgreen.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-02redgreen.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/NitroButto16-02redgreen.png b/site/controls/NitroButto16-02redgreen.png
new file mode 100644
index 0000000..cd43fe4
--- /dev/null
+++ b/site/controls/NitroButto16-02redgreen.png
Binary files differ
diff --git a/site/controls/NitroButto16-03FX.json b/site/controls/NitroButto16-03FX.json
new file mode 100644
index 0000000..c9d8b9f
--- /dev/null
+++ b/site/controls/NitroButto16-03FX.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-03FX.png"} \ No newline at end of file
diff --git a/site/controls/NitroButto16-03FX.png b/site/controls/NitroButto16-03FX.png
new file mode 100644
index 0000000..c40148e
--- /dev/null
+++ b/site/controls/NitroButto16-03FX.png
Binary files differ
diff --git a/site/controls/NovLauConKnob3d.json b/site/controls/NovLauConKnob3d.json
new file mode 100644
index 0000000..f0fbadb
--- /dev/null
+++ b/site/controls/NovLauConKnob3d.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "NovLauConKnob3d.png"} \ No newline at end of file
diff --git a/site/controls/NovLauConKnob3d.png b/site/controls/NovLauConKnob3d.png
new file mode 100644
index 0000000..d9ff8ef
--- /dev/null
+++ b/site/controls/NovLauConKnob3d.png
Binary files differ
diff --git a/site/controls/REA_UHBIK2016-01_(96-100).json b/site/controls/REA_UHBIK2016-01_(96-100).json
new file mode 100644
index 0000000..e230f68
--- /dev/null
+++ b/site/controls/REA_UHBIK2016-01_(96-100).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "REA_UHBIK2016-01_(96-100).png"} \ No newline at end of file
diff --git a/site/controls/REA_UHBIK2016-01_(96-100).png b/site/controls/REA_UHBIK2016-01_(96-100).png
new file mode 100644
index 0000000..1339962
--- /dev/null
+++ b/site/controls/REA_UHBIK2016-01_(96-100).png
Binary files differ
diff --git a/site/controls/SA SLAX limit.json b/site/controls/SA SLAX limit.json
new file mode 100644
index 0000000..8fb47c1
--- /dev/null
+++ b/site/controls/SA SLAX limit.json
@@ -0,0 +1 @@
+{"frames": 31, "cellh": 10, "ctltype": 3, "fn": "SA SLAX limit.png", "cellw": 10} \ No newline at end of file
diff --git a/site/controls/SA SLAX limit.png b/site/controls/SA SLAX limit.png
new file mode 100644
index 0000000..388f68a
--- /dev/null
+++ b/site/controls/SA SLAX limit.png
Binary files differ
diff --git a/site/controls/SA bigpot.json b/site/controls/SA bigpot.json
new file mode 100644
index 0000000..0edf897
--- /dev/null
+++ b/site/controls/SA bigpot.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 115, "ctltype": 0, "fn": "SA bigpot.png"} \ No newline at end of file
diff --git a/site/controls/SA bigpot.png b/site/controls/SA bigpot.png
new file mode 100644
index 0000000..794b490
--- /dev/null
+++ b/site/controls/SA bigpot.png
Binary files differ
diff --git a/site/controls/SA needles.json b/site/controls/SA needles.json
new file mode 100644
index 0000000..e49221a
--- /dev/null
+++ b/site/controls/SA needles.json
@@ -0,0 +1 @@
+{"frames": 90, "cellh": 148, "ctltype": 3, "fn": "SA needles.png"} \ No newline at end of file
diff --git a/site/controls/SA needles.png b/site/controls/SA needles.png
new file mode 100644
index 0000000..b06a045
--- /dev/null
+++ b/site/controls/SA needles.png
Binary files differ
diff --git a/site/controls/SA prepot.json b/site/controls/SA prepot.json
new file mode 100644
index 0000000..4e634c0
--- /dev/null
+++ b/site/controls/SA prepot.json
@@ -0,0 +1 @@
+{"frames": 50, "cellh": 35, "ctltype": 0, "fn": "SA prepot.png", "cellw": 35} \ No newline at end of file
diff --git a/site/controls/SA prepot.png b/site/controls/SA prepot.png
new file mode 100644
index 0000000..f3d371e
--- /dev/null
+++ b/site/controls/SA prepot.png
Binary files differ
diff --git a/site/controls/SC_A1GATE_Note_12x18-101fr.json b/site/controls/SC_A1GATE_Note_12x18-101fr.json
new file mode 100644
index 0000000..a906bd9
--- /dev/null
+++ b/site/controls/SC_A1GATE_Note_12x18-101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 18, "ctltype": 3, "fn": "SC_A1GATE_Note_12x18-101fr.png"} \ No newline at end of file
diff --git a/site/controls/SC_A1GATE_Note_12x18-101fr.png b/site/controls/SC_A1GATE_Note_12x18-101fr.png
new file mode 100644
index 0000000..7ae72e6
--- /dev/null
+++ b/site/controls/SC_A1GATE_Note_12x18-101fr.png
Binary files differ
diff --git a/site/controls/SC_A1GATE_Note_12x32-101.json b/site/controls/SC_A1GATE_Note_12x32-101.json
new file mode 100644
index 0000000..7142def
--- /dev/null
+++ b/site/controls/SC_A1GATE_Note_12x32-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_A1GATE_Note_12x32-101.png"} \ No newline at end of file
diff --git a/site/controls/SC_A1GATE_Note_12x32-101.png b/site/controls/SC_A1GATE_Note_12x32-101.png
new file mode 100644
index 0000000..cc578ff
--- /dev/null
+++ b/site/controls/SC_A1GATE_Note_12x32-101.png
Binary files differ
diff --git a/site/controls/SC_A1GATE_Note_8x16-4fr.json b/site/controls/SC_A1GATE_Note_8x16-4fr.json
new file mode 100644
index 0000000..451a189
--- /dev/null
+++ b/site/controls/SC_A1GATE_Note_8x16-4fr.json
@@ -0,0 +1 @@
+{"frames": 4, "cellh": 16, "ctltype": 3, "fn": "SC_A1GATE_Note_8x16-4fr.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SC_A1GATE_Note_8x16-4fr.png b/site/controls/SC_A1GATE_Note_8x16-4fr.png
new file mode 100644
index 0000000..5adaece
--- /dev/null
+++ b/site/controls/SC_A1GATE_Note_8x16-4fr.png
Binary files differ
diff --git a/site/controls/SC_A1GATE_Note_8x32-4fr.json b/site/controls/SC_A1GATE_Note_8x32-4fr.json
new file mode 100644
index 0000000..d9aaff6
--- /dev/null
+++ b/site/controls/SC_A1GATE_Note_8x32-4fr.json
@@ -0,0 +1 @@
+{"frames": 4, "cellh": 32, "ctltype": 3, "fn": "SC_A1GATE_Note_8x32-4fr.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SC_A1GATE_Note_8x32-4fr.png b/site/controls/SC_A1GATE_Note_8x32-4fr.png
new file mode 100644
index 0000000..80a97df
--- /dev/null
+++ b/site/controls/SC_A1GATE_Note_8x32-4fr.png
Binary files differ
diff --git a/site/controls/SC_A1GATE_Volume_12x18-101.json b/site/controls/SC_A1GATE_Volume_12x18-101.json
new file mode 100644
index 0000000..0591661
--- /dev/null
+++ b/site/controls/SC_A1GATE_Volume_12x18-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 18, "ctltype": 3, "fn": "SC_A1GATE_Volume_12x18-101.png", "cellw": 12} \ No newline at end of file
diff --git a/site/controls/SC_A1GATE_Volume_12x18-101.png b/site/controls/SC_A1GATE_Volume_12x18-101.png
new file mode 100644
index 0000000..f5f0955
--- /dev/null
+++ b/site/controls/SC_A1GATE_Volume_12x18-101.png
Binary files differ
diff --git a/site/controls/SC_A1GATE_Volume_12x36-101.json b/site/controls/SC_A1GATE_Volume_12x36-101.json
new file mode 100644
index 0000000..15beac1
--- /dev/null
+++ b/site/controls/SC_A1GATE_Volume_12x36-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 36, "ctltype": 3, "fn": "SC_A1GATE_Volume_12x36-101.png"} \ No newline at end of file
diff --git a/site/controls/SC_A1GATE_Volume_12x36-101.png b/site/controls/SC_A1GATE_Volume_12x36-101.png
new file mode 100644
index 0000000..d77ab03
--- /dev/null
+++ b/site/controls/SC_A1GATE_Volume_12x36-101.png
Binary files differ
diff --git a/site/controls/SC_A1GATE_Volume_8x32-101.json b/site/controls/SC_A1GATE_Volume_8x32-101.json
new file mode 100644
index 0000000..54e6530
--- /dev/null
+++ b/site/controls/SC_A1GATE_Volume_8x32-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_A1GATE_Volume_8x32-101.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SC_A1GATE_Volume_8x32-101.png b/site/controls/SC_A1GATE_Volume_8x32-101.png
new file mode 100644
index 0000000..960239d
--- /dev/null
+++ b/site/controls/SC_A1GATE_Volume_8x32-101.png
Binary files differ
diff --git a/site/controls/SC_BTNDef5-MUTE_12.json b/site/controls/SC_BTNDef5-MUTE_12.json
new file mode 100644
index 0000000..138e7c6
--- /dev/null
+++ b/site/controls/SC_BTNDef5-MUTE_12.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "SC_BTNDef5-MUTE_12.png"} \ No newline at end of file
diff --git a/site/controls/SC_BTNDef5-MUTE_12.png b/site/controls/SC_BTNDef5-MUTE_12.png
new file mode 100644
index 0000000..e1a9a64
--- /dev/null
+++ b/site/controls/SC_BTNDef5-MUTE_12.png
Binary files differ
diff --git a/site/controls/SC_BTNDef5-MUTE_16.json b/site/controls/SC_BTNDef5-MUTE_16.json
new file mode 100644
index 0000000..b63dbfc
--- /dev/null
+++ b/site/controls/SC_BTNDef5-MUTE_16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNDef5-MUTE_16.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SC_BTNDef5-MUTE_16.png b/site/controls/SC_BTNDef5-MUTE_16.png
new file mode 100644
index 0000000..1bcced8
--- /dev/null
+++ b/site/controls/SC_BTNDef5-MUTE_16.png
Binary files differ
diff --git a/site/controls/SC_BTNDef5-SOLO_12.json b/site/controls/SC_BTNDef5-SOLO_12.json
new file mode 100644
index 0000000..1bcaaea
--- /dev/null
+++ b/site/controls/SC_BTNDef5-SOLO_12.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "SC_BTNDef5-SOLO_12.png", "cellw": 12} \ No newline at end of file
diff --git a/site/controls/SC_BTNDef5-SOLO_12.png b/site/controls/SC_BTNDef5-SOLO_12.png
new file mode 100644
index 0000000..4a8c911
--- /dev/null
+++ b/site/controls/SC_BTNDef5-SOLO_12.png
Binary files differ
diff --git a/site/controls/SC_BTNDef5-SOLO_16.json b/site/controls/SC_BTNDef5-SOLO_16.json
new file mode 100644
index 0000000..1719374
--- /dev/null
+++ b/site/controls/SC_BTNDef5-SOLO_16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNDef5-SOLO_16.png"} \ No newline at end of file
diff --git a/site/controls/SC_BTNDef5-SOLO_16.png b/site/controls/SC_BTNDef5-SOLO_16.png
new file mode 100644
index 0000000..7ff98c3
--- /dev/null
+++ b/site/controls/SC_BTNDef5-SOLO_16.png
Binary files differ
diff --git a/site/controls/SC_BTNFusionSwsMUTE16.json b/site/controls/SC_BTNFusionSwsMUTE16.json
new file mode 100644
index 0000000..72c26be
--- /dev/null
+++ b/site/controls/SC_BTNFusionSwsMUTE16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNFusionSwsMUTE16.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SC_BTNFusionSwsMUTE16.png b/site/controls/SC_BTNFusionSwsMUTE16.png
new file mode 100644
index 0000000..640fbe7
--- /dev/null
+++ b/site/controls/SC_BTNFusionSwsMUTE16.png
Binary files differ
diff --git a/site/controls/SC_BTNFusionSwsMUTE16b.json b/site/controls/SC_BTNFusionSwsMUTE16b.json
new file mode 100644
index 0000000..603d8ca
--- /dev/null
+++ b/site/controls/SC_BTNFusionSwsMUTE16b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNFusionSwsMUTE16b.png"} \ No newline at end of file
diff --git a/site/controls/SC_BTNFusionSwsMUTE16b.png b/site/controls/SC_BTNFusionSwsMUTE16b.png
new file mode 100644
index 0000000..ec7b36e
--- /dev/null
+++ b/site/controls/SC_BTNFusionSwsMUTE16b.png
Binary files differ
diff --git a/site/controls/SC_BTNFusionSwsSOLO16.json b/site/controls/SC_BTNFusionSwsSOLO16.json
new file mode 100644
index 0000000..2c52ac9
--- /dev/null
+++ b/site/controls/SC_BTNFusionSwsSOLO16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNFusionSwsSOLO16.png"} \ No newline at end of file
diff --git a/site/controls/SC_BTNFusionSwsSOLO16.png b/site/controls/SC_BTNFusionSwsSOLO16.png
new file mode 100644
index 0000000..ad83469
--- /dev/null
+++ b/site/controls/SC_BTNFusionSwsSOLO16.png
Binary files differ
diff --git a/site/controls/SC_BTNFusionSwsSOLO16b.json b/site/controls/SC_BTNFusionSwsSOLO16b.json
new file mode 100644
index 0000000..6c0e0db
--- /dev/null
+++ b/site/controls/SC_BTNFusionSwsSOLO16b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNFusionSwsSOLO16b.png"} \ No newline at end of file
diff --git a/site/controls/SC_BTNFusionSwsSOLO16b.png b/site/controls/SC_BTNFusionSwsSOLO16b.png
new file mode 100644
index 0000000..beb1507
--- /dev/null
+++ b/site/controls/SC_BTNFusionSwsSOLO16b.png
Binary files differ
diff --git a/site/controls/SC_CamelGATE2017_8x24-128.json b/site/controls/SC_CamelGATE2017_8x24-128.json
new file mode 100644
index 0000000..8961cad
--- /dev/null
+++ b/site/controls/SC_CamelGATE2017_8x24-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 24, "ctltype": 3, "fn": "SC_CamelGATE2017_8x24-128.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SC_CamelGATE2017_8x24-128.png b/site/controls/SC_CamelGATE2017_8x24-128.png
new file mode 100644
index 0000000..1016ab7
--- /dev/null
+++ b/site/controls/SC_CamelGATE2017_8x24-128.png
Binary files differ
diff --git a/site/controls/SC_CamelGATE_8x32-101-b.json b/site/controls/SC_CamelGATE_8x32-101-b.json
new file mode 100644
index 0000000..3fca287
--- /dev/null
+++ b/site/controls/SC_CamelGATE_8x32-101-b.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_CamelGATE_8x32-101-b.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SC_CamelGATE_8x32-101-b.png b/site/controls/SC_CamelGATE_8x32-101-b.png
new file mode 100644
index 0000000..5ab9c0e
--- /dev/null
+++ b/site/controls/SC_CamelGATE_8x32-101-b.png
Binary files differ
diff --git a/site/controls/SC_CamelGATE_8x32-101-c.json b/site/controls/SC_CamelGATE_8x32-101-c.json
new file mode 100644
index 0000000..b61110e
--- /dev/null
+++ b/site/controls/SC_CamelGATE_8x32-101-c.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_CamelGATE_8x32-101-c.png"} \ No newline at end of file
diff --git a/site/controls/SC_CamelGATE_8x32-101-c.png b/site/controls/SC_CamelGATE_8x32-101-c.png
new file mode 100644
index 0000000..ef10063
--- /dev/null
+++ b/site/controls/SC_CamelGATE_8x32-101-c.png
Binary files differ
diff --git a/site/controls/SC_CamelGATE_8x32-101.json b/site/controls/SC_CamelGATE_8x32-101.json
new file mode 100644
index 0000000..ee091fb
--- /dev/null
+++ b/site/controls/SC_CamelGATE_8x32-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_CamelGATE_8x32-101.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SC_CamelGATE_8x32-101.png b/site/controls/SC_CamelGATE_8x32-101.png
new file mode 100644
index 0000000..5017500
--- /dev/null
+++ b/site/controls/SC_CamelGATE_8x32-101.png
Binary files differ
diff --git a/site/controls/SC_GraniteMainv2(64-128fr).json b/site/controls/SC_GraniteMainv2(64-128fr).json
new file mode 100644
index 0000000..b46562b
--- /dev/null
+++ b/site/controls/SC_GraniteMainv2(64-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_GraniteMainv2(64-128fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_GraniteMainv2(64-128fr).png b/site/controls/SC_GraniteMainv2(64-128fr).png
new file mode 100644
index 0000000..1cb945d
--- /dev/null
+++ b/site/controls/SC_GraniteMainv2(64-128fr).png
Binary files differ
diff --git a/site/controls/SC_GraniteSplitv2(64-128fr).json b/site/controls/SC_GraniteSplitv2(64-128fr).json
new file mode 100644
index 0000000..dd0d9c5
--- /dev/null
+++ b/site/controls/SC_GraniteSplitv2(64-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_GraniteSplitv2(64-128fr).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/SC_GraniteSplitv2(64-128fr).png b/site/controls/SC_GraniteSplitv2(64-128fr).png
new file mode 100644
index 0000000..9635863
--- /dev/null
+++ b/site/controls/SC_GraniteSplitv2(64-128fr).png
Binary files differ
diff --git a/site/controls/SC_GraniteStartv2(196-128fr).json b/site/controls/SC_GraniteStartv2(196-128fr).json
new file mode 100644
index 0000000..d17273f
--- /dev/null
+++ b/site/controls/SC_GraniteStartv2(196-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 196, "ctltype": 0, "fn": "SC_GraniteStartv2(196-128fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_GraniteStartv2(196-128fr).png b/site/controls/SC_GraniteStartv2(196-128fr).png
new file mode 100644
index 0000000..228d733
--- /dev/null
+++ b/site/controls/SC_GraniteStartv2(196-128fr).png
Binary files differ
diff --git a/site/controls/SC_K4SliderVERT.json b/site/controls/SC_K4SliderVERT.json
new file mode 100644
index 0000000..f79cc87
--- /dev/null
+++ b/site/controls/SC_K4SliderVERT.json
@@ -0,0 +1 @@
+{"frames": 31, "cellh": 100, "ctltype": 1, "fn": "SC_K4SliderVERT.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SC_K4SliderVERT.png b/site/controls/SC_K4SliderVERT.png
new file mode 100644
index 0000000..52047d1
--- /dev/null
+++ b/site/controls/SC_K4SliderVERT.png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)-brwn.json b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)-brwn.json
new file mode 100644
index 0000000..616e3b3
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)-brwn.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)-brwn.png"} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)-brwn.png b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)-brwn.png
new file mode 100644
index 0000000..b3917e8
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)-brwn.png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm).json b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm).json
new file mode 100644
index 0000000..a0fadaa
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm).json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm).png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm).png b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm).png
new file mode 100644
index 0000000..15ee6cc
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm).png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)blue.json b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)blue.json
new file mode 100644
index 0000000..eaa47eb
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)blue.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)blue.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)blue.png b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)blue.png
new file mode 100644
index 0000000..60f54da
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)blue.png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)bluesft.json b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)bluesft.json
new file mode 100644
index 0000000..91b98a8
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)bluesft.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)bluesft.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)bluesft.png b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)bluesft.png
new file mode 100644
index 0000000..8f16479
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)bluesft.png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green.json b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green.json
new file mode 100644
index 0000000..6aa52d9
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)green.png"} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green.png b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green.png
new file mode 100644
index 0000000..5b403f3
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green.png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green2.json b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green2.json
new file mode 100644
index 0000000..69470d1
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green2.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)green2.png"} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green2.png b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green2.png
new file mode 100644
index 0000000..a4f86d1
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)green2.png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)prpl.json b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)prpl.json
new file mode 100644
index 0000000..14c7db8
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)prpl.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)prpl.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)prpl.png b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)prpl.png
new file mode 100644
index 0000000..588197f
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)prpl.png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)satrt.json b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)satrt.json
new file mode 100644
index 0000000..be5d879
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)satrt.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)satrt.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)satrt.png b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)satrt.png
new file mode 100644
index 0000000..3c35aeb
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)satrt.png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)ylw.json b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)ylw.json
new file mode 100644
index 0000000..72861cb
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)ylw.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)ylw.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)ylw.png b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)ylw.png
new file mode 100644
index 0000000..cc6d68b
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(24x24-101frm)ylw.png
Binary files differ
diff --git a/site/controls/SC_KNOB-REDTRCK_(30x30-101frm).json b/site/controls/SC_KNOB-REDTRCK_(30x30-101frm).json
new file mode 100644
index 0000000..12d36ee
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(30x30-101frm).json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 30, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(30x30-101frm).png"} \ No newline at end of file
diff --git a/site/controls/SC_KNOB-REDTRCK_(30x30-101frm).png b/site/controls/SC_KNOB-REDTRCK_(30x30-101frm).png
new file mode 100644
index 0000000..cbb08f3
--- /dev/null
+++ b/site/controls/SC_KNOB-REDTRCK_(30x30-101frm).png
Binary files differ
diff --git a/site/controls/SC_Knob_(16x16-100fr)1.json b/site/controls/SC_Knob_(16x16-100fr)1.json
new file mode 100644
index 0000000..f833810
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)1.png"} \ No newline at end of file
diff --git a/site/controls/SC_Knob_(16x16-100fr)1.png b/site/controls/SC_Knob_(16x16-100fr)1.png
new file mode 100644
index 0000000..cc458d5
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)1.png
Binary files differ
diff --git a/site/controls/SC_Knob_(16x16-100fr)2.json b/site/controls/SC_Knob_(16x16-100fr)2.json
new file mode 100644
index 0000000..1b41dae
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)2.png"} \ No newline at end of file
diff --git a/site/controls/SC_Knob_(16x16-100fr)2.png b/site/controls/SC_Knob_(16x16-100fr)2.png
new file mode 100644
index 0000000..5370a20
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)2.png
Binary files differ
diff --git a/site/controls/SC_Knob_(16x16-100fr)2b.json b/site/controls/SC_Knob_(16x16-100fr)2b.json
new file mode 100644
index 0000000..0de455f
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)2b.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)2b.png"} \ No newline at end of file
diff --git a/site/controls/SC_Knob_(16x16-100fr)2b.png b/site/controls/SC_Knob_(16x16-100fr)2b.png
new file mode 100644
index 0000000..68f1d5c
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)2b.png
Binary files differ
diff --git a/site/controls/SC_Knob_(16x16-100fr)3.json b/site/controls/SC_Knob_(16x16-100fr)3.json
new file mode 100644
index 0000000..7d0a3c4
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)3.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)3.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SC_Knob_(16x16-100fr)3.png b/site/controls/SC_Knob_(16x16-100fr)3.png
new file mode 100644
index 0000000..2bb34f8
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)3.png
Binary files differ
diff --git a/site/controls/SC_Knob_(16x16-100fr)4.json b/site/controls/SC_Knob_(16x16-100fr)4.json
new file mode 100644
index 0000000..2f5af51
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)4.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)4.png"} \ No newline at end of file
diff --git a/site/controls/SC_Knob_(16x16-100fr)4.png b/site/controls/SC_Knob_(16x16-100fr)4.png
new file mode 100644
index 0000000..f90b3c5
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)4.png
Binary files differ
diff --git a/site/controls/SC_Knob_(16x16-100fr)5.json b/site/controls/SC_Knob_(16x16-100fr)5.json
new file mode 100644
index 0000000..f63e1be
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)5.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)5.png"} \ No newline at end of file
diff --git a/site/controls/SC_Knob_(16x16-100fr)5.png b/site/controls/SC_Knob_(16x16-100fr)5.png
new file mode 100644
index 0000000..967e6b5
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)5.png
Binary files differ
diff --git a/site/controls/SC_Knob_(16x16-100fr)6.json b/site/controls/SC_Knob_(16x16-100fr)6.json
new file mode 100644
index 0000000..cfc2f68
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)6.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)6.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SC_Knob_(16x16-100fr)6.png b/site/controls/SC_Knob_(16x16-100fr)6.png
new file mode 100644
index 0000000..ce8b6c5
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)6.png
Binary files differ
diff --git a/site/controls/SC_Knob_(16x16-100fr)7.json b/site/controls/SC_Knob_(16x16-100fr)7.json
new file mode 100644
index 0000000..1c601d4
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)7.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)7.png"} \ No newline at end of file
diff --git a/site/controls/SC_Knob_(16x16-100fr)7.png b/site/controls/SC_Knob_(16x16-100fr)7.png
new file mode 100644
index 0000000..b35184f
--- /dev/null
+++ b/site/controls/SC_Knob_(16x16-100fr)7.png
Binary files differ
diff --git a/site/controls/SC_LBX-knob10bis_(32x128).json b/site/controls/SC_LBX-knob10bis_(32x128).json
new file mode 100644
index 0000000..936bf7a
--- /dev/null
+++ b/site/controls/SC_LBX-knob10bis_(32x128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "SC_LBX-knob10bis_(32x128).png"} \ No newline at end of file
diff --git a/site/controls/SC_LBX-knob10bis_(32x128).png b/site/controls/SC_LBX-knob10bis_(32x128).png
new file mode 100644
index 0000000..9a49b72
--- /dev/null
+++ b/site/controls/SC_LBX-knob10bis_(32x128).png
Binary files differ
diff --git a/site/controls/SC_LightSEQ_128x8-16fr.json b/site/controls/SC_LightSEQ_128x8-16fr.json
new file mode 100644
index 0000000..617b2e1
--- /dev/null
+++ b/site/controls/SC_LightSEQ_128x8-16fr.json
@@ -0,0 +1 @@
+{"frames": 16, "cellh": 8, "ctltype": 3, "fn": "SC_LightSEQ_128x8-16fr.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/SC_LightSEQ_128x8-16fr.png b/site/controls/SC_LightSEQ_128x8-16fr.png
new file mode 100644
index 0000000..6192e99
--- /dev/null
+++ b/site/controls/SC_LightSEQ_128x8-16fr.png
Binary files differ
diff --git a/site/controls/SC_LightSEQ_128x8-64fr.json b/site/controls/SC_LightSEQ_128x8-64fr.json
new file mode 100644
index 0000000..7a087b8
--- /dev/null
+++ b/site/controls/SC_LightSEQ_128x8-64fr.json
@@ -0,0 +1 @@
+{"frames": 64, "cellh": 8, "ctltype": 3, "fn": "SC_LightSEQ_128x8-64fr.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/SC_LightSEQ_128x8-64fr.png b/site/controls/SC_LightSEQ_128x8-64fr.png
new file mode 100644
index 0000000..8ed1e39
--- /dev/null
+++ b/site/controls/SC_LightSEQ_128x8-64fr.png
Binary files differ
diff --git a/site/controls/SC_Loopey-AmpKnob(50x101).json b/site/controls/SC_Loopey-AmpKnob(50x101).json
new file mode 100644
index 0000000..51ff50f
--- /dev/null
+++ b/site/controls/SC_Loopey-AmpKnob(50x101).json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 50, "ctltype": 0, "fn": "SC_Loopey-AmpKnob(50x101).png"} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-AmpKnob(50x101).png b/site/controls/SC_Loopey-AmpKnob(50x101).png
new file mode 100644
index 0000000..8d2f256
--- /dev/null
+++ b/site/controls/SC_Loopey-AmpKnob(50x101).png
Binary files differ
diff --git a/site/controls/SC_Loopey-DarkRedKnob(50x101).json b/site/controls/SC_Loopey-DarkRedKnob(50x101).json
new file mode 100644
index 0000000..011fc25
--- /dev/null
+++ b/site/controls/SC_Loopey-DarkRedKnob(50x101).json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 50, "ctltype": 0, "fn": "SC_Loopey-DarkRedKnob(50x101).png", "cellw": 50} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-DarkRedKnob(50x101).png b/site/controls/SC_Loopey-DarkRedKnob(50x101).png
new file mode 100644
index 0000000..f0775b0
--- /dev/null
+++ b/site/controls/SC_Loopey-DarkRedKnob(50x101).png
Binary files differ
diff --git a/site/controls/SC_Loopey-Slider 01.json b/site/controls/SC_Loopey-Slider 01.json
new file mode 100644
index 0000000..8172ebc
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 01.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 117, "ctltype": 1, "fn": "SC_Loopey-Slider 01.png", "cellw": 30} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-Slider 01.png b/site/controls/SC_Loopey-Slider 01.png
new file mode 100644
index 0000000..530273b
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 01.png
Binary files differ
diff --git a/site/controls/SC_Loopey-Slider 02_1664-101.json b/site/controls/SC_Loopey-Slider 02_1664-101.json
new file mode 100644
index 0000000..418a614
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 02_1664-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 1, "fn": "SC_Loopey-Slider 02_1664-101.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-Slider 02_1664-101.png b/site/controls/SC_Loopey-Slider 02_1664-101.png
new file mode 100644
index 0000000..75ef120
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 02_1664-101.png
Binary files differ
diff --git a/site/controls/SC_Loopey-Slider 02_1688-101.json b/site/controls/SC_Loopey-Slider 02_1688-101.json
new file mode 100644
index 0000000..74d8d01
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 02_1688-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 88, "ctltype": 1, "fn": "SC_Loopey-Slider 02_1688-101.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-Slider 02_1688-101.png b/site/controls/SC_Loopey-Slider 02_1688-101.png
new file mode 100644
index 0000000..c7c32eb
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 02_1688-101.png
Binary files differ
diff --git a/site/controls/SC_Loopey-Slider 03_1664-101.json b/site/controls/SC_Loopey-Slider 03_1664-101.json
new file mode 100644
index 0000000..1b92028
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 03_1664-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 1, "fn": "SC_Loopey-Slider 03_1664-101.png"} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-Slider 03_1664-101.png b/site/controls/SC_Loopey-Slider 03_1664-101.png
new file mode 100644
index 0000000..6dacd6f
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 03_1664-101.png
Binary files differ
diff --git a/site/controls/SC_Loopey-Slider 03_1688-101.json b/site/controls/SC_Loopey-Slider 03_1688-101.json
new file mode 100644
index 0000000..cb9d677
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 03_1688-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 88, "ctltype": 1, "fn": "SC_Loopey-Slider 03_1688-101.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-Slider 03_1688-101.png b/site/controls/SC_Loopey-Slider 03_1688-101.png
new file mode 100644
index 0000000..961734a
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 03_1688-101.png
Binary files differ
diff --git a/site/controls/SC_Loopey-Slider 04Horz_844-101.json b/site/controls/SC_Loopey-Slider 04Horz_844-101.json
new file mode 100644
index 0000000..b69ff2e
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 04Horz_844-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 8, "ctltype": 1, "fn": "SC_Loopey-Slider 04Horz_844-101.png"} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-Slider 04Horz_844-101.png b/site/controls/SC_Loopey-Slider 04Horz_844-101.png
new file mode 100644
index 0000000..8b89dd6
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 04Horz_844-101.png
Binary files differ
diff --git a/site/controls/SC_Loopey-Slider 04_844-101.json b/site/controls/SC_Loopey-Slider 04_844-101.json
new file mode 100644
index 0000000..9906f9f
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 04_844-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 44, "ctltype": 1, "fn": "SC_Loopey-Slider 04_844-101.png"} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-Slider 04_844-101.png b/site/controls/SC_Loopey-Slider 04_844-101.png
new file mode 100644
index 0000000..cec8dc4
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider 04_844-101.png
Binary files differ
diff --git a/site/controls/SC_Loopey-Slider Horz01_8816-101.json b/site/controls/SC_Loopey-Slider Horz01_8816-101.json
new file mode 100644
index 0000000..5fe07d3
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider Horz01_8816-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "ctltype": 1, "fn": "SC_Loopey-Slider Horz01_8816-101.png", "cellw": 88} \ No newline at end of file
diff --git a/site/controls/SC_Loopey-Slider Horz01_8816-101.png b/site/controls/SC_Loopey-Slider Horz01_8816-101.png
new file mode 100644
index 0000000..bf4ddfa
--- /dev/null
+++ b/site/controls/SC_Loopey-Slider Horz01_8816-101.png
Binary files differ
diff --git a/site/controls/SC_PLAY_16x16-2fr-b.json b/site/controls/SC_PLAY_16x16-2fr-b.json
new file mode 100644
index 0000000..22c4545
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr-b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr-b.png"} \ No newline at end of file
diff --git a/site/controls/SC_PLAY_16x16-2fr-b.png b/site/controls/SC_PLAY_16x16-2fr-b.png
new file mode 100644
index 0000000..5f969f4
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr-b.png
Binary files differ
diff --git a/site/controls/SC_PLAY_16x16-2fr-c.json b/site/controls/SC_PLAY_16x16-2fr-c.json
new file mode 100644
index 0000000..bad0ce3
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr-c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr-c.png"} \ No newline at end of file
diff --git a/site/controls/SC_PLAY_16x16-2fr-c.png b/site/controls/SC_PLAY_16x16-2fr-c.png
new file mode 100644
index 0000000..bbcec98
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr-c.png
Binary files differ
diff --git a/site/controls/SC_PLAY_16x16-2fr-d.json b/site/controls/SC_PLAY_16x16-2fr-d.json
new file mode 100644
index 0000000..6ca42ad
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr-d.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr-d.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SC_PLAY_16x16-2fr-d.png b/site/controls/SC_PLAY_16x16-2fr-d.png
new file mode 100644
index 0000000..1ae3d74
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr-d.png
Binary files differ
diff --git a/site/controls/SC_PLAY_16x16-2fr-e.json b/site/controls/SC_PLAY_16x16-2fr-e.json
new file mode 100644
index 0000000..4295f80
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr-e.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr-e.png"} \ No newline at end of file
diff --git a/site/controls/SC_PLAY_16x16-2fr-e.png b/site/controls/SC_PLAY_16x16-2fr-e.png
new file mode 100644
index 0000000..b7fbfe5
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr-e.png
Binary files differ
diff --git a/site/controls/SC_PLAY_16x16-2fr.json b/site/controls/SC_PLAY_16x16-2fr.json
new file mode 100644
index 0000000..6d2ea88
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr.png"} \ No newline at end of file
diff --git a/site/controls/SC_PLAY_16x16-2fr.png b/site/controls/SC_PLAY_16x16-2fr.png
new file mode 100644
index 0000000..c6e9f6b
--- /dev/null
+++ b/site/controls/SC_PLAY_16x16-2fr.png
Binary files differ
diff --git a/site/controls/SC_PRGRAMC-BOX_(192x36-128fr).json b/site/controls/SC_PRGRAMC-BOX_(192x36-128fr).json
new file mode 100644
index 0000000..e565a53
--- /dev/null
+++ b/site/controls/SC_PRGRAMC-BOX_(192x36-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 36, "ctltype": 4, "fn": "SC_PRGRAMC-BOX_(192x36-128fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_PRGRAMC-BOX_(192x36-128fr).png b/site/controls/SC_PRGRAMC-BOX_(192x36-128fr).png
new file mode 100644
index 0000000..509e4cd
--- /dev/null
+++ b/site/controls/SC_PRGRAMC-BOX_(192x36-128fr).png
Binary files differ
diff --git a/site/controls/SC_PRGRAMC-BOX_(352x32-128fr).json b/site/controls/SC_PRGRAMC-BOX_(352x32-128fr).json
new file mode 100644
index 0000000..092d805
--- /dev/null
+++ b/site/controls/SC_PRGRAMC-BOX_(352x32-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "SC_PRGRAMC-BOX_(352x32-128fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_PRGRAMC-BOX_(352x32-128fr).png b/site/controls/SC_PRGRAMC-BOX_(352x32-128fr).png
new file mode 100644
index 0000000..57dd1b8
--- /dev/null
+++ b/site/controls/SC_PRGRAMC-BOX_(352x32-128fr).png
Binary files differ
diff --git a/site/controls/SC_PRGRAMC_(96x128fr).json b/site/controls/SC_PRGRAMC_(96x128fr).json
new file mode 100644
index 0000000..f9d6906
--- /dev/null
+++ b/site/controls/SC_PRGRAMC_(96x128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "SC_PRGRAMC_(96x128fr).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/SC_PRGRAMC_(96x128fr).png b/site/controls/SC_PRGRAMC_(96x128fr).png
new file mode 100644
index 0000000..1f9d62e
--- /dev/null
+++ b/site/controls/SC_PRGRAMC_(96x128fr).png
Binary files differ
diff --git a/site/controls/SC_Pall_Knob-01(96x64).json b/site/controls/SC_Pall_Knob-01(96x64).json
new file mode 100644
index 0000000..1bcacdf
--- /dev/null
+++ b/site/controls/SC_Pall_Knob-01(96x64).json
@@ -0,0 +1 @@
+{"frames": 64, "cellh": 96, "ctltype": 0, "fn": "SC_Pall_Knob-01(96x64).png"} \ No newline at end of file
diff --git a/site/controls/SC_Pall_Knob-01(96x64).png b/site/controls/SC_Pall_Knob-01(96x64).png
new file mode 100644
index 0000000..f5beb9d
--- /dev/null
+++ b/site/controls/SC_Pall_Knob-01(96x64).png
Binary files differ
diff --git a/site/controls/SC_STORAGE-01_(4x4-150).json b/site/controls/SC_STORAGE-01_(4x4-150).json
new file mode 100644
index 0000000..0b9e8dd
--- /dev/null
+++ b/site/controls/SC_STORAGE-01_(4x4-150).json
@@ -0,0 +1 @@
+{"frames": 150, "cellh": 4, "ctltype": 3, "fn": "SC_STORAGE-01_(4x4-150).png"} \ No newline at end of file
diff --git a/site/controls/SC_STORAGE-01_(4x4-150).png b/site/controls/SC_STORAGE-01_(4x4-150).png
new file mode 100644
index 0000000..6beb0bd
--- /dev/null
+++ b/site/controls/SC_STORAGE-01_(4x4-150).png
Binary files differ
diff --git a/site/controls/SC_SimpleMeterHORZ2_(16x4-100fr).json b/site/controls/SC_SimpleMeterHORZ2_(16x4-100fr).json
new file mode 100644
index 0000000..e36eaa7
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ2_(16x4-100fr).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 4, "ctltype": 3, "fn": "SC_SimpleMeterHORZ2_(16x4-100fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_SimpleMeterHORZ2_(16x4-100fr).png b/site/controls/SC_SimpleMeterHORZ2_(16x4-100fr).png
new file mode 100644
index 0000000..7d1c7fb
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ2_(16x4-100fr).png
Binary files differ
diff --git a/site/controls/SC_SimpleMeterHORZ2_(32x8-100fr).json b/site/controls/SC_SimpleMeterHORZ2_(32x8-100fr).json
new file mode 100644
index 0000000..a892b77
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ2_(32x8-100fr).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 8, "ctltype": 3, "fn": "SC_SimpleMeterHORZ2_(32x8-100fr).png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/SC_SimpleMeterHORZ2_(32x8-100fr).png b/site/controls/SC_SimpleMeterHORZ2_(32x8-100fr).png
new file mode 100644
index 0000000..e732108
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ2_(32x8-100fr).png
Binary files differ
diff --git a/site/controls/SC_SimpleMeterHORZ2_(8x4-100fr).json b/site/controls/SC_SimpleMeterHORZ2_(8x4-100fr).json
new file mode 100644
index 0000000..26dfe81
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ2_(8x4-100fr).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 4, "ctltype": 3, "fn": "SC_SimpleMeterHORZ2_(8x4-100fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_SimpleMeterHORZ2_(8x4-100fr).png b/site/controls/SC_SimpleMeterHORZ2_(8x4-100fr).png
new file mode 100644
index 0000000..2290a33
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ2_(8x4-100fr).png
Binary files differ
diff --git a/site/controls/SC_SimpleMeterHORZ_(32x8-100fr).json b/site/controls/SC_SimpleMeterHORZ_(32x8-100fr).json
new file mode 100644
index 0000000..ab39639
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ_(32x8-100fr).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 8, "ctltype": 3, "fn": "SC_SimpleMeterHORZ_(32x8-100fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_SimpleMeterHORZ_(32x8-100fr).png b/site/controls/SC_SimpleMeterHORZ_(32x8-100fr).png
new file mode 100644
index 0000000..769d342
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ_(32x8-100fr).png
Binary files differ
diff --git a/site/controls/SC_SimpleMeterHORZ_(32x8-100fr)flip.json b/site/controls/SC_SimpleMeterHORZ_(32x8-100fr)flip.json
new file mode 100644
index 0000000..53db685
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ_(32x8-100fr)flip.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 8, "ctltype": 3, "fn": "SC_SimpleMeterHORZ_(32x8-100fr)flip.png"} \ No newline at end of file
diff --git a/site/controls/SC_SimpleMeterHORZ_(32x8-100fr)flip.png b/site/controls/SC_SimpleMeterHORZ_(32x8-100fr)flip.png
new file mode 100644
index 0000000..e1b76d1
--- /dev/null
+++ b/site/controls/SC_SimpleMeterHORZ_(32x8-100fr)flip.png
Binary files differ
diff --git a/site/controls/SC_SliderH-01_(32x8-128fr).json b/site/controls/SC_SliderH-01_(32x8-128fr).json
new file mode 100644
index 0000000..88495e6
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(32x8-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 1, "fn": "SC_SliderH-01_(32x8-128fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_SliderH-01_(32x8-128fr).png b/site/controls/SC_SliderH-01_(32x8-128fr).png
new file mode 100644
index 0000000..e9671a0
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(32x8-128fr).png
Binary files differ
diff --git a/site/controls/SC_SliderH-01_(40x16-128fr)drk.json b/site/controls/SC_SliderH-01_(40x16-128fr)drk.json
new file mode 100644
index 0000000..3dbcadf
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(40x16-128fr)drk.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(40x16-128fr)drk.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/SC_SliderH-01_(40x16-128fr)drk.png b/site/controls/SC_SliderH-01_(40x16-128fr)drk.png
new file mode 100644
index 0000000..97137bb
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(40x16-128fr)drk.png
Binary files differ
diff --git a/site/controls/SC_SliderH-01_(40x20-128fr).json b/site/controls/SC_SliderH-01_(40x20-128fr).json
new file mode 100644
index 0000000..068d7a4
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(40x20-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 20, "ctltype": 1, "fn": "SC_SliderH-01_(40x20-128fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_SliderH-01_(40x20-128fr).png b/site/controls/SC_SliderH-01_(40x20-128fr).png
new file mode 100644
index 0000000..e0cafc1
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(40x20-128fr).png
Binary files differ
diff --git a/site/controls/SC_SliderH-01_(64x16-128fr).json b/site/controls/SC_SliderH-01_(64x16-128fr).json
new file mode 100644
index 0000000..21877d2
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(64x16-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(64x16-128fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_SliderH-01_(64x16-128fr).png b/site/controls/SC_SliderH-01_(64x16-128fr).png
new file mode 100644
index 0000000..a2f861c
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(64x16-128fr).png
Binary files differ
diff --git a/site/controls/SC_SliderH-01_(64x16-128fr)drk.json b/site/controls/SC_SliderH-01_(64x16-128fr)drk.json
new file mode 100644
index 0000000..d7cd37b
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(64x16-128fr)drk.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(64x16-128fr)drk.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/SC_SliderH-01_(64x16-128fr)drk.png b/site/controls/SC_SliderH-01_(64x16-128fr)drk.png
new file mode 100644
index 0000000..9c02c4b
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(64x16-128fr)drk.png
Binary files differ
diff --git a/site/controls/SC_SliderH-01_(64x16-128fr)tobuss.json b/site/controls/SC_SliderH-01_(64x16-128fr)tobuss.json
new file mode 100644
index 0000000..8a943f9
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(64x16-128fr)tobuss.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(64x16-128fr)tobuss.png"} \ No newline at end of file
diff --git a/site/controls/SC_SliderH-01_(64x16-128fr)tobuss.png b/site/controls/SC_SliderH-01_(64x16-128fr)tobuss.png
new file mode 100644
index 0000000..0609900
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(64x16-128fr)tobuss.png
Binary files differ
diff --git a/site/controls/SC_SliderH-01_(96x23-128fr).json b/site/controls/SC_SliderH-01_(96x23-128fr).json
new file mode 100644
index 0000000..16edfaa
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(96x23-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(96x23-128fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_SliderH-01_(96x23-128fr).png b/site/controls/SC_SliderH-01_(96x23-128fr).png
new file mode 100644
index 0000000..060f29c
--- /dev/null
+++ b/site/controls/SC_SliderH-01_(96x23-128fr).png
Binary files differ
diff --git a/site/controls/SC_SliderH_MaschineNo(timbmod64x16-128fr).json b/site/controls/SC_SliderH_MaschineNo(timbmod64x16-128fr).json
new file mode 100644
index 0000000..7b4e89e
--- /dev/null
+++ b/site/controls/SC_SliderH_MaschineNo(timbmod64x16-128fr).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH_MaschineNo(timbmod64x16-128fr).png"} \ No newline at end of file
diff --git a/site/controls/SC_SliderH_MaschineNo(timbmod64x16-128fr).png b/site/controls/SC_SliderH_MaschineNo(timbmod64x16-128fr).png
new file mode 100644
index 0000000..b151cb5
--- /dev/null
+++ b/site/controls/SC_SliderH_MaschineNo(timbmod64x16-128fr).png
Binary files differ
diff --git a/site/controls/SC_SliderV-01_(8x40-128fr)toFXin.json b/site/controls/SC_SliderV-01_(8x40-128fr)toFXin.json
new file mode 100644
index 0000000..2bc78c6
--- /dev/null
+++ b/site/controls/SC_SliderV-01_(8x40-128fr)toFXin.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 1, "fn": "SC_SliderV-01_(8x40-128fr)toFXin.png"} \ No newline at end of file
diff --git a/site/controls/SC_SliderV-01_(8x40-128fr)toFXin.png b/site/controls/SC_SliderV-01_(8x40-128fr)toFXin.png
new file mode 100644
index 0000000..7cba87b
--- /dev/null
+++ b/site/controls/SC_SliderV-01_(8x40-128fr)toFXin.png
Binary files differ
diff --git a/site/controls/SC_SliderV-01_(8x40-128fr)toFXinDRK.json b/site/controls/SC_SliderV-01_(8x40-128fr)toFXinDRK.json
new file mode 100644
index 0000000..5884596
--- /dev/null
+++ b/site/controls/SC_SliderV-01_(8x40-128fr)toFXinDRK.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 1, "fn": "SC_SliderV-01_(8x40-128fr)toFXinDRK.png"} \ No newline at end of file
diff --git a/site/controls/SC_SliderV-01_(8x40-128fr)toFXinDRK.png b/site/controls/SC_SliderV-01_(8x40-128fr)toFXinDRK.png
new file mode 100644
index 0000000..33c5dcc
--- /dev/null
+++ b/site/controls/SC_SliderV-01_(8x40-128fr)toFXinDRK.png
Binary files differ
diff --git a/site/controls/SC_SurroGate-SEND-48101.json b/site/controls/SC_SurroGate-SEND-48101.json
new file mode 100644
index 0000000..05359ae
--- /dev/null
+++ b/site/controls/SC_SurroGate-SEND-48101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 48, "ctltype": 0, "fn": "SC_SurroGate-SEND-48101.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/SC_SurroGate-SEND-48101.png b/site/controls/SC_SurroGate-SEND-48101.png
new file mode 100644
index 0000000..48cefd0
--- /dev/null
+++ b/site/controls/SC_SurroGate-SEND-48101.png
Binary files differ
diff --git a/site/controls/SC_SurroGate-SEND02-58101.json b/site/controls/SC_SurroGate-SEND02-58101.json
new file mode 100644
index 0000000..686f4d9
--- /dev/null
+++ b/site/controls/SC_SurroGate-SEND02-58101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 58, "ctltype": 0, "fn": "SC_SurroGate-SEND02-58101.png"} \ No newline at end of file
diff --git a/site/controls/SC_SurroGate-SEND02-58101.png b/site/controls/SC_SurroGate-SEND02-58101.png
new file mode 100644
index 0000000..110d8a7
--- /dev/null
+++ b/site/controls/SC_SurroGate-SEND02-58101.png
Binary files differ
diff --git a/site/controls/SC_Switcher-01.json b/site/controls/SC_Switcher-01.json
new file mode 100644
index 0000000..8b2ffea
--- /dev/null
+++ b/site/controls/SC_Switcher-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 28, "ctltype": 2, "fn": "SC_Switcher-01.png"} \ No newline at end of file
diff --git a/site/controls/SC_Switcher-01.png b/site/controls/SC_Switcher-01.png
new file mode 100644
index 0000000..f2ccd86
--- /dev/null
+++ b/site/controls/SC_Switcher-01.png
Binary files differ
diff --git a/site/controls/SC_Switcher-01rvrs.json b/site/controls/SC_Switcher-01rvrs.json
new file mode 100644
index 0000000..d734511
--- /dev/null
+++ b/site/controls/SC_Switcher-01rvrs.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 28, "ctltype": 2, "fn": "SC_Switcher-01rvrs.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/SC_Switcher-01rvrs.png b/site/controls/SC_Switcher-01rvrs.png
new file mode 100644
index 0000000..053d122
--- /dev/null
+++ b/site/controls/SC_Switcher-01rvrs.png
Binary files differ
diff --git a/site/controls/SC_Switcher-02-109.json b/site/controls/SC_Switcher-02-109.json
new file mode 100644
index 0000000..a7d4240
--- /dev/null
+++ b/site/controls/SC_Switcher-02-109.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 109, "ctltype": 2, "fn": "SC_Switcher-02-109.png"} \ No newline at end of file
diff --git a/site/controls/SC_Switcher-02-109.png b/site/controls/SC_Switcher-02-109.png
new file mode 100644
index 0000000..e9e041d
--- /dev/null
+++ b/site/controls/SC_Switcher-02-109.png
Binary files differ
diff --git a/site/controls/SC_Switcher-02-65.json b/site/controls/SC_Switcher-02-65.json
new file mode 100644
index 0000000..97f4709
--- /dev/null
+++ b/site/controls/SC_Switcher-02-65.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 109, "ctltype": 2, "fn": "SC_Switcher-02-65.png", "cellw": 65} \ No newline at end of file
diff --git a/site/controls/SC_Switcher-02-65.png b/site/controls/SC_Switcher-02-65.png
new file mode 100644
index 0000000..53a1e41
--- /dev/null
+++ b/site/controls/SC_Switcher-02-65.png
Binary files differ
diff --git a/site/controls/SC_Switcher-03.json b/site/controls/SC_Switcher-03.json
new file mode 100644
index 0000000..0dc30b8
--- /dev/null
+++ b/site/controls/SC_Switcher-03.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 23, "ctltype": 2, "fn": "SC_Switcher-03.png"} \ No newline at end of file
diff --git a/site/controls/SC_Switcher-03.png b/site/controls/SC_Switcher-03.png
new file mode 100644
index 0000000..ba03249
--- /dev/null
+++ b/site/controls/SC_Switcher-03.png
Binary files differ
diff --git a/site/controls/SC_SwitcherWIDE-01rvrs.json b/site/controls/SC_SwitcherWIDE-01rvrs.json
new file mode 100644
index 0000000..a55fd65
--- /dev/null
+++ b/site/controls/SC_SwitcherWIDE-01rvrs.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 28, "ctltype": 4, "fn": "SC_SwitcherWIDE-01rvrs.png", "cellw": 330} \ No newline at end of file
diff --git a/site/controls/SC_SwitcherWIDE-01rvrs.png b/site/controls/SC_SwitcherWIDE-01rvrs.png
new file mode 100644
index 0000000..14667b9
--- /dev/null
+++ b/site/controls/SC_SwitcherWIDE-01rvrs.png
Binary files differ
diff --git a/site/controls/SC_White_GranitePitch_64x64-73fr.json b/site/controls/SC_White_GranitePitch_64x64-73fr.json
new file mode 100644
index 0000000..f2796db
--- /dev/null
+++ b/site/controls/SC_White_GranitePitch_64x64-73fr.json
@@ -0,0 +1 @@
+{"frames": 73, "cellh": 64, "ctltype": 0, "fn": "SC_White_GranitePitch_64x64-73fr.png"} \ No newline at end of file
diff --git a/site/controls/SC_White_GranitePitch_64x64-73fr.png b/site/controls/SC_White_GranitePitch_64x64-73fr.png
new file mode 100644
index 0000000..6a582a4
--- /dev/null
+++ b/site/controls/SC_White_GranitePitch_64x64-73fr.png
Binary files differ
diff --git a/site/controls/SC_iKnobProgramV2_32128.json b/site/controls/SC_iKnobProgramV2_32128.json
new file mode 100644
index 0000000..bd04a29
--- /dev/null
+++ b/site/controls/SC_iKnobProgramV2_32128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "SC_iKnobProgramV2_32128.png"} \ No newline at end of file
diff --git a/site/controls/SC_iKnobProgramV2_32128.png b/site/controls/SC_iKnobProgramV2_32128.png
new file mode 100644
index 0000000..d8383c0
--- /dev/null
+++ b/site/controls/SC_iKnobProgramV2_32128.png
Binary files differ
diff --git a/site/controls/SC_iKnobProgramV2_40128.json b/site/controls/SC_iKnobProgramV2_40128.json
new file mode 100644
index 0000000..f80f598
--- /dev/null
+++ b/site/controls/SC_iKnobProgramV2_40128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "SC_iKnobProgramV2_40128.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/SC_iKnobProgramV2_40128.png b/site/controls/SC_iKnobProgramV2_40128.png
new file mode 100644
index 0000000..2e5be6b
--- /dev/null
+++ b/site/controls/SC_iKnobProgramV2_40128.png
Binary files differ
diff --git a/site/controls/SC_iKnobProgramV2_48128.json b/site/controls/SC_iKnobProgramV2_48128.json
new file mode 100644
index 0000000..c689acf
--- /dev/null
+++ b/site/controls/SC_iKnobProgramV2_48128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "SC_iKnobProgramV2_48128.png"} \ No newline at end of file
diff --git a/site/controls/SC_iKnobProgramV2_48128.png b/site/controls/SC_iKnobProgramV2_48128.png
new file mode 100644
index 0000000..f9b44b4
--- /dev/null
+++ b/site/controls/SC_iKnobProgramV2_48128.png
Binary files differ
diff --git a/site/controls/SC_iKnobProgramV2_64128.json b/site/controls/SC_iKnobProgramV2_64128.json
new file mode 100644
index 0000000..33ea8aa
--- /dev/null
+++ b/site/controls/SC_iKnobProgramV2_64128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_iKnobProgramV2_64128.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/SC_iKnobProgramV2_64128.png b/site/controls/SC_iKnobProgramV2_64128.png
new file mode 100644
index 0000000..e5bcdb4
--- /dev/null
+++ b/site/controls/SC_iKnobProgramV2_64128.png
Binary files differ
diff --git a/site/controls/SC_iKnobProgram_40128.json b/site/controls/SC_iKnobProgram_40128.json
new file mode 100644
index 0000000..535316e
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_40128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "SC_iKnobProgram_40128.png"} \ No newline at end of file
diff --git a/site/controls/SC_iKnobProgram_40128.png b/site/controls/SC_iKnobProgram_40128.png
new file mode 100644
index 0000000..6026ffd
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_40128.png
Binary files differ
diff --git a/site/controls/SC_iKnobProgram_48128.json b/site/controls/SC_iKnobProgram_48128.json
new file mode 100644
index 0000000..c841828
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_48128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "SC_iKnobProgram_48128.png"} \ No newline at end of file
diff --git a/site/controls/SC_iKnobProgram_48128.png b/site/controls/SC_iKnobProgram_48128.png
new file mode 100644
index 0000000..c38285b
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_48128.png
Binary files differ
diff --git a/site/controls/SC_iKnobProgram_64128.json b/site/controls/SC_iKnobProgram_64128.json
new file mode 100644
index 0000000..0b9dd8b
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_64128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_iKnobProgram_64128.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/SC_iKnobProgram_64128.png b/site/controls/SC_iKnobProgram_64128.png
new file mode 100644
index 0000000..ed2b40c
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_64128.png
Binary files differ
diff --git a/site/controls/SC_iKnobProgram_64128_4pipeline.json b/site/controls/SC_iKnobProgram_64128_4pipeline.json
new file mode 100644
index 0000000..c744e13
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_64128_4pipeline.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_iKnobProgram_64128_4pipeline.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/SC_iKnobProgram_64128_4pipeline.png b/site/controls/SC_iKnobProgram_64128_4pipeline.png
new file mode 100644
index 0000000..12bf3f8
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_64128_4pipeline.png
Binary files differ
diff --git a/site/controls/SC_iKnobProgram_64128_4pipeline2.json b/site/controls/SC_iKnobProgram_64128_4pipeline2.json
new file mode 100644
index 0000000..fcec80b
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_64128_4pipeline2.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 128, "ctltype": 0, "fn": "SC_iKnobProgram_64128_4pipeline2.png"} \ No newline at end of file
diff --git a/site/controls/SC_iKnobProgram_64128_4pipeline2.png b/site/controls/SC_iKnobProgram_64128_4pipeline2.png
new file mode 100644
index 0000000..b3f6a7a
--- /dev/null
+++ b/site/controls/SC_iKnobProgram_64128_4pipeline2.png
Binary files differ
diff --git a/site/controls/SC_knob10bis50x127.json b/site/controls/SC_knob10bis50x127.json
new file mode 100644
index 0000000..670c2bd
--- /dev/null
+++ b/site/controls/SC_knob10bis50x127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 50, "ctltype": 0, "fn": "SC_knob10bis50x127.png", "cellw": 50} \ No newline at end of file
diff --git a/site/controls/SC_knob10bis50x127.png b/site/controls/SC_knob10bis50x127.png
new file mode 100644
index 0000000..8ee2236
--- /dev/null
+++ b/site/controls/SC_knob10bis50x127.png
Binary files differ
diff --git a/site/controls/Sexan_FaderR5_29334-162fr.json b/site/controls/Sexan_FaderR5_29334-162fr.json
new file mode 100644
index 0000000..e74b0f0
--- /dev/null
+++ b/site/controls/Sexan_FaderR5_29334-162fr.json
@@ -0,0 +1 @@
+{"frames": 162, "cellh": 334, "ctltype": 1, "fn": "Sexan_FaderR5_29334-162fr.png", "cellw": 29} \ No newline at end of file
diff --git a/site/controls/Sexan_FaderR5_29334-162fr.png b/site/controls/Sexan_FaderR5_29334-162fr.png
new file mode 100644
index 0000000..077a6a2
--- /dev/null
+++ b/site/controls/Sexan_FaderR5_29334-162fr.png
Binary files differ
diff --git a/site/controls/Sexan_Timb-Slider_29334-128fr.json b/site/controls/Sexan_Timb-Slider_29334-128fr.json
new file mode 100644
index 0000000..758586e
--- /dev/null
+++ b/site/controls/Sexan_Timb-Slider_29334-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 334, "ctltype": 1, "fn": "Sexan_Timb-Slider_29334-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Sexan_Timb-Slider_29334-128fr.png b/site/controls/Sexan_Timb-Slider_29334-128fr.png
new file mode 100644
index 0000000..77005d3
--- /dev/null
+++ b/site/controls/Sexan_Timb-Slider_29334-128fr.png
Binary files differ
diff --git a/site/controls/SimpleBox_4816.json b/site/controls/SimpleBox_4816.json
new file mode 100644
index 0000000..221b98a
--- /dev/null
+++ b/site/controls/SimpleBox_4816.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "fn": "SimpleBox_4816.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/SimpleBox_4816.png b/site/controls/SimpleBox_4816.png
new file mode 100644
index 0000000..280832c
--- /dev/null
+++ b/site/controls/SimpleBox_4816.png
Binary files differ
diff --git a/site/controls/SimpleBox_6424.json b/site/controls/SimpleBox_6424.json
new file mode 100644
index 0000000..e6a0c7d
--- /dev/null
+++ b/site/controls/SimpleBox_6424.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 24, "fn": "SimpleBox_6424.png"} \ No newline at end of file
diff --git a/site/controls/SimpleBox_6424.png b/site/controls/SimpleBox_6424.png
new file mode 100644
index 0000000..b653974
--- /dev/null
+++ b/site/controls/SimpleBox_6424.png
Binary files differ
diff --git a/site/controls/SimpleBox_9632.json b/site/controls/SimpleBox_9632.json
new file mode 100644
index 0000000..b6658d1
--- /dev/null
+++ b/site/controls/SimpleBox_9632.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "fn": "SimpleBox_9632.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/SimpleBox_9632.png b/site/controls/SimpleBox_9632.png
new file mode 100644
index 0000000..fa2b3ec
--- /dev/null
+++ b/site/controls/SimpleBox_9632.png
Binary files differ
diff --git a/site/controls/SimpleButton_16.json b/site/controls/SimpleButton_16.json
new file mode 100644
index 0000000..77cf329
--- /dev/null
+++ b/site/controls/SimpleButton_16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16.png"} \ No newline at end of file
diff --git a/site/controls/SimpleButton_16.png b/site/controls/SimpleButton_16.png
new file mode 100644
index 0000000..3a0f674
--- /dev/null
+++ b/site/controls/SimpleButton_16.png
Binary files differ
diff --git a/site/controls/SimpleButton_16BLUE.json b/site/controls/SimpleButton_16BLUE.json
new file mode 100644
index 0000000..9419c02
--- /dev/null
+++ b/site/controls/SimpleButton_16BLUE.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16BLUE.png"} \ No newline at end of file
diff --git a/site/controls/SimpleButton_16BLUE.png b/site/controls/SimpleButton_16BLUE.png
new file mode 100644
index 0000000..7fb7edf
--- /dev/null
+++ b/site/controls/SimpleButton_16BLUE.png
Binary files differ
diff --git a/site/controls/SimpleButton_16GREEN.json b/site/controls/SimpleButton_16GREEN.json
new file mode 100644
index 0000000..6673ae1
--- /dev/null
+++ b/site/controls/SimpleButton_16GREEN.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16GREEN.png"} \ No newline at end of file
diff --git a/site/controls/SimpleButton_16GREEN.png b/site/controls/SimpleButton_16GREEN.png
new file mode 100644
index 0000000..8ed0102
--- /dev/null
+++ b/site/controls/SimpleButton_16GREEN.png
Binary files differ
diff --git a/site/controls/SimpleButton_16GREEN2.json b/site/controls/SimpleButton_16GREEN2.json
new file mode 100644
index 0000000..444b28f
--- /dev/null
+++ b/site/controls/SimpleButton_16GREEN2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16GREEN2.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SimpleButton_16GREEN2.png b/site/controls/SimpleButton_16GREEN2.png
new file mode 100644
index 0000000..e71defb
--- /dev/null
+++ b/site/controls/SimpleButton_16GREEN2.png
Binary files differ
diff --git a/site/controls/SimpleButton_16GREEN3.json b/site/controls/SimpleButton_16GREEN3.json
new file mode 100644
index 0000000..99f6d28
--- /dev/null
+++ b/site/controls/SimpleButton_16GREEN3.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16GREEN3.png"} \ No newline at end of file
diff --git a/site/controls/SimpleButton_16GREEN3.png b/site/controls/SimpleButton_16GREEN3.png
new file mode 100644
index 0000000..90b222e
--- /dev/null
+++ b/site/controls/SimpleButton_16GREEN3.png
Binary files differ
diff --git a/site/controls/SimpleButton_16GREENlosat.json b/site/controls/SimpleButton_16GREENlosat.json
new file mode 100644
index 0000000..49ee0de
--- /dev/null
+++ b/site/controls/SimpleButton_16GREENlosat.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16GREENlosat.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SimpleButton_16GREENlosat.png b/site/controls/SimpleButton_16GREENlosat.png
new file mode 100644
index 0000000..92e2b11
--- /dev/null
+++ b/site/controls/SimpleButton_16GREENlosat.png
Binary files differ
diff --git a/site/controls/SimpleButton_16RED.json b/site/controls/SimpleButton_16RED.json
new file mode 100644
index 0000000..9affe66
--- /dev/null
+++ b/site/controls/SimpleButton_16RED.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16RED.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SimpleButton_16RED.png b/site/controls/SimpleButton_16RED.png
new file mode 100644
index 0000000..bda3e30
--- /dev/null
+++ b/site/controls/SimpleButton_16RED.png
Binary files differ
diff --git a/site/controls/SimpleButton_32.json b/site/controls/SimpleButton_32.json
new file mode 100644
index 0000000..0fe4506
--- /dev/null
+++ b/site/controls/SimpleButton_32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "SimpleButton_32.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/SimpleButton_32.png b/site/controls/SimpleButton_32.png
new file mode 100644
index 0000000..7e746e0
--- /dev/null
+++ b/site/controls/SimpleButton_32.png
Binary files differ
diff --git a/site/controls/SimpleButton_8BLUBLCK.json b/site/controls/SimpleButton_8BLUBLCK.json
new file mode 100644
index 0000000..367da59
--- /dev/null
+++ b/site/controls/SimpleButton_8BLUBLCK.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8BLUBLCK.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleButton_8BLUBLCK.png b/site/controls/SimpleButton_8BLUBLCK.png
new file mode 100644
index 0000000..a0dacdc
--- /dev/null
+++ b/site/controls/SimpleButton_8BLUBLCK.png
Binary files differ
diff --git a/site/controls/SimpleButton_8GREENlosat.json b/site/controls/SimpleButton_8GREENlosat.json
new file mode 100644
index 0000000..1c50a22
--- /dev/null
+++ b/site/controls/SimpleButton_8GREENlosat.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GREENlosat.png"} \ No newline at end of file
diff --git a/site/controls/SimpleButton_8GREENlosat.png b/site/controls/SimpleButton_8GREENlosat.png
new file mode 100644
index 0000000..66c72ae
--- /dev/null
+++ b/site/controls/SimpleButton_8GREENlosat.png
Binary files differ
diff --git a/site/controls/SimpleButton_8GREGRY-WASD.json b/site/controls/SimpleButton_8GREGRY-WASD.json
new file mode 100644
index 0000000..c5a1d49
--- /dev/null
+++ b/site/controls/SimpleButton_8GREGRY-WASD.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GREGRY-WASD.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleButton_8GREGRY-WASD.png b/site/controls/SimpleButton_8GREGRY-WASD.png
new file mode 100644
index 0000000..977c090
--- /dev/null
+++ b/site/controls/SimpleButton_8GREGRY-WASD.png
Binary files differ
diff --git a/site/controls/SimpleButton_8GREGRY.json b/site/controls/SimpleButton_8GREGRY.json
new file mode 100644
index 0000000..59320d2
--- /dev/null
+++ b/site/controls/SimpleButton_8GREGRY.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GREGRY.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleButton_8GREGRY.png b/site/controls/SimpleButton_8GREGRY.png
new file mode 100644
index 0000000..4409d2f
--- /dev/null
+++ b/site/controls/SimpleButton_8GREGRY.png
Binary files differ
diff --git a/site/controls/SimpleButton_8GRERED.json b/site/controls/SimpleButton_8GRERED.json
new file mode 100644
index 0000000..87ee2a3
--- /dev/null
+++ b/site/controls/SimpleButton_8GRERED.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GRERED.png"} \ No newline at end of file
diff --git a/site/controls/SimpleButton_8GRERED.png b/site/controls/SimpleButton_8GRERED.png
new file mode 100644
index 0000000..53082e0
--- /dev/null
+++ b/site/controls/SimpleButton_8GRERED.png
Binary files differ
diff --git a/site/controls/SimpleButton_8GRERED2.json b/site/controls/SimpleButton_8GRERED2.json
new file mode 100644
index 0000000..967b648
--- /dev/null
+++ b/site/controls/SimpleButton_8GRERED2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GRERED2.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleButton_8GRERED2.png b/site/controls/SimpleButton_8GRERED2.png
new file mode 100644
index 0000000..e5e23dc
--- /dev/null
+++ b/site/controls/SimpleButton_8GRERED2.png
Binary files differ
diff --git a/site/controls/SimpleFader_1696.json b/site/controls/SimpleFader_1696.json
new file mode 100644
index 0000000..dd1d478
--- /dev/null
+++ b/site/controls/SimpleFader_1696.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 96, "ctltype": 1, "fn": "SimpleFader_1696.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SimpleFader_1696.png b/site/controls/SimpleFader_1696.png
new file mode 100644
index 0000000..ae17707
--- /dev/null
+++ b/site/controls/SimpleFader_1696.png
Binary files differ
diff --git a/site/controls/SimpleFader_24160.json b/site/controls/SimpleFader_24160.json
new file mode 100644
index 0000000..b21313c
--- /dev/null
+++ b/site/controls/SimpleFader_24160.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 160, "ctltype": 1, "fn": "SimpleFader_24160.png"} \ No newline at end of file
diff --git a/site/controls/SimpleFader_24160.png b/site/controls/SimpleFader_24160.png
new file mode 100644
index 0000000..7771a86
--- /dev/null
+++ b/site/controls/SimpleFader_24160.png
Binary files differ
diff --git a/site/controls/SimpleFlat2_32.json b/site/controls/SimpleFlat2_32.json
new file mode 100644
index 0000000..d4a53c7
--- /dev/null
+++ b/site/controls/SimpleFlat2_32.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 32, "ctltype": 0, "fn": "SimpleFlat2_32.png"} \ No newline at end of file
diff --git a/site/controls/SimpleFlat2_32.png b/site/controls/SimpleFlat2_32.png
new file mode 100644
index 0000000..b09c177
--- /dev/null
+++ b/site/controls/SimpleFlat2_32.png
Binary files differ
diff --git a/site/controls/SimpleFlat2_48.json b/site/controls/SimpleFlat2_48.json
new file mode 100644
index 0000000..fb0a9a7
--- /dev/null
+++ b/site/controls/SimpleFlat2_48.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 48, "ctltype": 0, "fn": "SimpleFlat2_48.png"} \ No newline at end of file
diff --git a/site/controls/SimpleFlat2_48.png b/site/controls/SimpleFlat2_48.png
new file mode 100644
index 0000000..49e0e41
--- /dev/null
+++ b/site/controls/SimpleFlat2_48.png
Binary files differ
diff --git a/site/controls/SimpleFlat2_64.json b/site/controls/SimpleFlat2_64.json
new file mode 100644
index 0000000..f825137
--- /dev/null
+++ b/site/controls/SimpleFlat2_64.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 0, "fn": "SimpleFlat2_64.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/SimpleFlat2_64.png b/site/controls/SimpleFlat2_64.png
new file mode 100644
index 0000000..68e7104
--- /dev/null
+++ b/site/controls/SimpleFlat2_64.png
Binary files differ
diff --git a/site/controls/SimpleFlat2_96.json b/site/controls/SimpleFlat2_96.json
new file mode 100644
index 0000000..0365a57
--- /dev/null
+++ b/site/controls/SimpleFlat2_96.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 96, "ctltype": 0, "fn": "SimpleFlat2_96.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/SimpleFlat2_96.png b/site/controls/SimpleFlat2_96.png
new file mode 100644
index 0000000..a6206e2
--- /dev/null
+++ b/site/controls/SimpleFlat2_96.png
Binary files differ
diff --git a/site/controls/SimpleFlat_32.json b/site/controls/SimpleFlat_32.json
new file mode 100644
index 0000000..d3e5fab
--- /dev/null
+++ b/site/controls/SimpleFlat_32.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 32, "ctltype": 0, "fn": "SimpleFlat_32.png"} \ No newline at end of file
diff --git a/site/controls/SimpleFlat_32.png b/site/controls/SimpleFlat_32.png
new file mode 100644
index 0000000..695ecfd
--- /dev/null
+++ b/site/controls/SimpleFlat_32.png
Binary files differ
diff --git a/site/controls/SimpleFlat_48.json b/site/controls/SimpleFlat_48.json
new file mode 100644
index 0000000..ea941bd
--- /dev/null
+++ b/site/controls/SimpleFlat_48.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 48, "ctltype": 0, "fn": "SimpleFlat_48.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/SimpleFlat_48.png b/site/controls/SimpleFlat_48.png
new file mode 100644
index 0000000..5c90ab9
--- /dev/null
+++ b/site/controls/SimpleFlat_48.png
Binary files differ
diff --git a/site/controls/SimpleFlat_64.json b/site/controls/SimpleFlat_64.json
new file mode 100644
index 0000000..d455e32
--- /dev/null
+++ b/site/controls/SimpleFlat_64.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 0, "fn": "SimpleFlat_64.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/SimpleFlat_64.png b/site/controls/SimpleFlat_64.png
new file mode 100644
index 0000000..b07adf2
--- /dev/null
+++ b/site/controls/SimpleFlat_64.png
Binary files differ
diff --git a/site/controls/SimpleFlat_96.json b/site/controls/SimpleFlat_96.json
new file mode 100644
index 0000000..73e1f59
--- /dev/null
+++ b/site/controls/SimpleFlat_96.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 96, "ctltype": 0, "fn": "SimpleFlat_96.png"} \ No newline at end of file
diff --git a/site/controls/SimpleFlat_96.png b/site/controls/SimpleFlat_96.png
new file mode 100644
index 0000000..c6373d9
--- /dev/null
+++ b/site/controls/SimpleFlat_96.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(16x128-100fr).json b/site/controls/SimpleMeter-Def5_(16x128-100fr).json
new file mode 100644
index 0000000..d0b11f3
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(16x128-100fr).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 128, "ctltype": 3, "fn": "SimpleMeter-Def5_(16x128-100fr).png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(16x128-100fr).png b/site/controls/SimpleMeter-Def5_(16x128-100fr).png
new file mode 100644
index 0000000..1d64ab3
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(16x128-100fr).png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellow.json b/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellow.json
new file mode 100644
index 0000000..8620cbe
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellow.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x24-129fr)-yellow.png", "cellw": 4} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellow.png b/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellow.png
new file mode 100644
index 0000000..04f64dc
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellow.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.json b/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.json
new file mode 100644
index 0000000..6664bc1
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.png b/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.png
new file mode 100644
index 0000000..ecea2cd
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x24-129fr).json b/site/controls/SimpleMeter-Def5_(4x24-129fr).json
new file mode 100644
index 0000000..4bfdda5
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x24-129fr).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x24-129fr).png", "cellw": 4} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x24-129fr).png b/site/controls/SimpleMeter-Def5_(4x24-129fr).png
new file mode 100644
index 0000000..0a7a5ab
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x24-129fr).png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x24-129fr)RED.json b/site/controls/SimpleMeter-Def5_(4x24-129fr)RED.json
new file mode 100644
index 0000000..8e9eb25
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x24-129fr)RED.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x24-129fr)RED.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x24-129fr)RED.png b/site/controls/SimpleMeter-Def5_(4x24-129fr)RED.png
new file mode 100644
index 0000000..cafd17e
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x24-129fr)RED.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr).json b/site/controls/SimpleMeter-Def5_(4x40-129fr).json
new file mode 100644
index 0000000..b4feedd
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr).png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr).png b/site/controls/SimpleMeter-Def5_(4x40-129fr).png
new file mode 100644
index 0000000..5c6e6a8
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr).png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)blo.json b/site/controls/SimpleMeter-Def5_(4x40-129fr)blo.json
new file mode 100644
index 0000000..4ec8a5c
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)blo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)blo.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)blo.png b/site/controls/SimpleMeter-Def5_(4x40-129fr)blo.png
new file mode 100644
index 0000000..d18ea93
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)blo.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)orn.json b/site/controls/SimpleMeter-Def5_(4x40-129fr)orn.json
new file mode 100644
index 0000000..541057b
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)orn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)orn.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)orn.png b/site/controls/SimpleMeter-Def5_(4x40-129fr)orn.png
new file mode 100644
index 0000000..e54e4cd
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)orn.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)pnk.json b/site/controls/SimpleMeter-Def5_(4x40-129fr)pnk.json
new file mode 100644
index 0000000..1fee7ff
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)pnk.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)pnk.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)pnk.png b/site/controls/SimpleMeter-Def5_(4x40-129fr)pnk.png
new file mode 100644
index 0000000..4423973
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)pnk.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)prp.json b/site/controls/SimpleMeter-Def5_(4x40-129fr)prp.json
new file mode 100644
index 0000000..caa05aa
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)prp.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)prp.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)prp.png b/site/controls/SimpleMeter-Def5_(4x40-129fr)prp.png
new file mode 100644
index 0000000..e9ff9f8
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)prp.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)red.json b/site/controls/SimpleMeter-Def5_(4x40-129fr)red.json
new file mode 100644
index 0000000..6abccb4
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)red.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)red.png", "cellw": 4} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)red.png b/site/controls/SimpleMeter-Def5_(4x40-129fr)red.png
new file mode 100644
index 0000000..1fd83c4
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)red.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)sbl.json b/site/controls/SimpleMeter-Def5_(4x40-129fr)sbl.json
new file mode 100644
index 0000000..950cf2c
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)sbl.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)sbl.png", "cellw": 4} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)sbl.png b/site/controls/SimpleMeter-Def5_(4x40-129fr)sbl.png
new file mode 100644
index 0000000..b36e731
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)sbl.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)sgn.json b/site/controls/SimpleMeter-Def5_(4x40-129fr)sgn.json
new file mode 100644
index 0000000..1904d59
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)sgn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)sgn.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)sgn.png b/site/controls/SimpleMeter-Def5_(4x40-129fr)sgn.png
new file mode 100644
index 0000000..7ed8637
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)sgn.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)wht.json b/site/controls/SimpleMeter-Def5_(4x40-129fr)wht.json
new file mode 100644
index 0000000..c5ba2ce
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)wht.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)wht.png", "cellw": 4} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)wht.png b/site/controls/SimpleMeter-Def5_(4x40-129fr)wht.png
new file mode 100644
index 0000000..6bd2591
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)wht.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)ylw.json b/site/controls/SimpleMeter-Def5_(4x40-129fr)ylw.json
new file mode 100644
index 0000000..9c59b82
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)ylw.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)ylw.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(4x40-129fr)ylw.png b/site/controls/SimpleMeter-Def5_(4x40-129fr)ylw.png
new file mode 100644
index 0000000..f0a21cb
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(4x40-129fr)ylw.png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(8x24-100fr).json b/site/controls/SimpleMeter-Def5_(8x24-100fr).json
new file mode 100644
index 0000000..5c5920d
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(8x24-100fr).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(8x24-100fr).png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(8x24-100fr).png b/site/controls/SimpleMeter-Def5_(8x24-100fr).png
new file mode 100644
index 0000000..ce42f36
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(8x24-100fr).png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(8x40-100fr).json b/site/controls/SimpleMeter-Def5_(8x40-100fr).json
new file mode 100644
index 0000000..705b9a8
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(8x40-100fr).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(8x40-100fr).png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(8x40-100fr).png b/site/controls/SimpleMeter-Def5_(8x40-100fr).png
new file mode 100644
index 0000000..6d4938d
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(8x40-100fr).png
Binary files differ
diff --git a/site/controls/SimpleMeter-Def5_(8x58-100fr).json b/site/controls/SimpleMeter-Def5_(8x58-100fr).json
new file mode 100644
index 0000000..22f90db
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(8x58-100fr).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 58, "ctltype": 3, "fn": "SimpleMeter-Def5_(8x58-100fr).png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-Def5_(8x58-100fr).png b/site/controls/SimpleMeter-Def5_(8x58-100fr).png
new file mode 100644
index 0000000..7dee1a8
--- /dev/null
+++ b/site/controls/SimpleMeter-Def5_(8x58-100fr).png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200.json b/site/controls/SimpleMeter-STORAGE_15x15x200.json
new file mode 100644
index 0000000..6c8cf98
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200.png b/site/controls/SimpleMeter-STORAGE_15x15x200.png
new file mode 100644
index 0000000..7016293
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200b.json b/site/controls/SimpleMeter-STORAGE_15x15x200b.json
new file mode 100644
index 0000000..4dff23e
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200b.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200b.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200b.png b/site/controls/SimpleMeter-STORAGE_15x15x200b.png
new file mode 100644
index 0000000..eb89f87
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200b.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200c.json b/site/controls/SimpleMeter-STORAGE_15x15x200c.json
new file mode 100644
index 0000000..565fb4d
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200c.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200c.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200c.png b/site/controls/SimpleMeter-STORAGE_15x15x200c.png
new file mode 100644
index 0000000..1801e8e
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200c.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200d.json b/site/controls/SimpleMeter-STORAGE_15x15x200d.json
new file mode 100644
index 0000000..40eae07
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200d.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200d.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200d.png b/site/controls/SimpleMeter-STORAGE_15x15x200d.png
new file mode 100644
index 0000000..37be5af
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200d.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200e.json b/site/controls/SimpleMeter-STORAGE_15x15x200e.json
new file mode 100644
index 0000000..4a63c8c
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200e.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200e.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200e.png b/site/controls/SimpleMeter-STORAGE_15x15x200e.png
new file mode 100644
index 0000000..2935255
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200e.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200f.json b/site/controls/SimpleMeter-STORAGE_15x15x200f.json
new file mode 100644
index 0000000..a6d4cd5
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200f.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200f.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200f.png b/site/controls/SimpleMeter-STORAGE_15x15x200f.png
new file mode 100644
index 0000000..9f81949
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200f.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200g.json b/site/controls/SimpleMeter-STORAGE_15x15x200g.json
new file mode 100644
index 0000000..d5db41a
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200g.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200g.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200g.png b/site/controls/SimpleMeter-STORAGE_15x15x200g.png
new file mode 100644
index 0000000..96e6d3b
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200g.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200h.json b/site/controls/SimpleMeter-STORAGE_15x15x200h.json
new file mode 100644
index 0000000..220de78
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200h.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200h.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200h.png b/site/controls/SimpleMeter-STORAGE_15x15x200h.png
new file mode 100644
index 0000000..04abd27
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200h.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200i.json b/site/controls/SimpleMeter-STORAGE_15x15x200i.json
new file mode 100644
index 0000000..2cd30d3
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200i.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200i.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200i.png b/site/controls/SimpleMeter-STORAGE_15x15x200i.png
new file mode 100644
index 0000000..1b158a4
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200i.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200k.json b/site/controls/SimpleMeter-STORAGE_15x15x200k.json
new file mode 100644
index 0000000..fbc18e3
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200k.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200k.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200k.png b/site/controls/SimpleMeter-STORAGE_15x15x200k.png
new file mode 100644
index 0000000..17a8df8
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200k.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200m.json b/site/controls/SimpleMeter-STORAGE_15x15x200m.json
new file mode 100644
index 0000000..9318479
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200m.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200m.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200m.png b/site/controls/SimpleMeter-STORAGE_15x15x200m.png
new file mode 100644
index 0000000..7259952
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200m.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200n.json b/site/controls/SimpleMeter-STORAGE_15x15x200n.json
new file mode 100644
index 0000000..5be9380
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200n.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200n.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200n.png b/site/controls/SimpleMeter-STORAGE_15x15x200n.png
new file mode 100644
index 0000000..d267a84
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200n.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200o.json b/site/controls/SimpleMeter-STORAGE_15x15x200o.json
new file mode 100644
index 0000000..7a3429b
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200o.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200o.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200o.png b/site/controls/SimpleMeter-STORAGE_15x15x200o.png
new file mode 100644
index 0000000..5c44bd9
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200o.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200p.json b/site/controls/SimpleMeter-STORAGE_15x15x200p.json
new file mode 100644
index 0000000..3d487a8
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200p.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200p.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200p.png b/site/controls/SimpleMeter-STORAGE_15x15x200p.png
new file mode 100644
index 0000000..18fbb18
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200p.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200r.json b/site/controls/SimpleMeter-STORAGE_15x15x200r.json
new file mode 100644
index 0000000..492426a
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200r.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200r.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200r.png b/site/controls/SimpleMeter-STORAGE_15x15x200r.png
new file mode 100644
index 0000000..af8271f
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200r.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200s.json b/site/controls/SimpleMeter-STORAGE_15x15x200s.json
new file mode 100644
index 0000000..a838da9
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200s.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200s.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200s.png b/site/controls/SimpleMeter-STORAGE_15x15x200s.png
new file mode 100644
index 0000000..3c4cc3d
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200s.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200t.json b/site/controls/SimpleMeter-STORAGE_15x15x200t.json
new file mode 100644
index 0000000..de1bdb0
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200t.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200t.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200t.png b/site/controls/SimpleMeter-STORAGE_15x15x200t.png
new file mode 100644
index 0000000..27595c4
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200t.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200u.json b/site/controls/SimpleMeter-STORAGE_15x15x200u.json
new file mode 100644
index 0000000..55d0c9f
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200u.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200u.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200u.png b/site/controls/SimpleMeter-STORAGE_15x15x200u.png
new file mode 100644
index 0000000..477d261
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200u.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200v.json b/site/controls/SimpleMeter-STORAGE_15x15x200v.json
new file mode 100644
index 0000000..81d84c1
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200v.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200v.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200v.png b/site/controls/SimpleMeter-STORAGE_15x15x200v.png
new file mode 100644
index 0000000..086169c
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200v.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200y.json b/site/controls/SimpleMeter-STORAGE_15x15x200y.json
new file mode 100644
index 0000000..4aed5a7
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200y.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200y.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_15x15x200y.png b/site/controls/SimpleMeter-STORAGE_15x15x200y.png
new file mode 100644
index 0000000..c8c1a0e
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_15x15x200y.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_16x16x200.json b/site/controls/SimpleMeter-STORAGE_16x16x200.json
new file mode 100644
index 0000000..4bc7ab2
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_16x16x200.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 16, "ctltype": 3, "fn": "SimpleMeter-STORAGE_16x16x200.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_16x16x200.png b/site/controls/SimpleMeter-STORAGE_16x16x200.png
new file mode 100644
index 0000000..5f82993
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_16x16x200.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_4x8x200.json b/site/controls/SimpleMeter-STORAGE_4x8x200.json
new file mode 100644
index 0000000..6c19f02
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_4x8x200.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 4, "ctltype": 3, "fn": "SimpleMeter-STORAGE_4x8x200.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_4x8x200.png b/site/controls/SimpleMeter-STORAGE_4x8x200.png
new file mode 100644
index 0000000..a5c81a1
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_4x8x200.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_8x8x200.json b/site/controls/SimpleMeter-STORAGE_8x8x200.json
new file mode 100644
index 0000000..bb137d2
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_8x8x200.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 8, "ctltype": 3, "fn": "SimpleMeter-STORAGE_8x8x200.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_8x8x200.png b/site/controls/SimpleMeter-STORAGE_8x8x200.png
new file mode 100644
index 0000000..b990e20
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_8x8x200.png
Binary files differ
diff --git a/site/controls/SimpleMeter-STORAGE_8x8x200b.json b/site/controls/SimpleMeter-STORAGE_8x8x200b.json
new file mode 100644
index 0000000..05c4594
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_8x8x200b.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 8, "ctltype": 3, "fn": "SimpleMeter-STORAGE_8x8x200b.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleMeter-STORAGE_8x8x200b.png b/site/controls/SimpleMeter-STORAGE_8x8x200b.png
new file mode 100644
index 0000000..bdafdcc
--- /dev/null
+++ b/site/controls/SimpleMeter-STORAGE_8x8x200b.png
Binary files differ
diff --git a/site/controls/SimpleMeterGreen_16192(timbedt).json b/site/controls/SimpleMeterGreen_16192(timbedt).json
new file mode 100644
index 0000000..cea3641
--- /dev/null
+++ b/site/controls/SimpleMeterGreen_16192(timbedt).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 192, "ctltype": 3, "fn": "SimpleMeterGreen_16192(timbedt).png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SimpleMeterGreen_16192(timbedt).png b/site/controls/SimpleMeterGreen_16192(timbedt).png
new file mode 100644
index 0000000..e0669a4
--- /dev/null
+++ b/site/controls/SimpleMeterGreen_16192(timbedt).png
Binary files differ
diff --git a/site/controls/SimpleMeterGreen_16192.json b/site/controls/SimpleMeterGreen_16192.json
new file mode 100644
index 0000000..7b5131a
--- /dev/null
+++ b/site/controls/SimpleMeterGreen_16192.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 192, "ctltype": 3, "fn": "SimpleMeterGreen_16192.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeterGreen_16192.png b/site/controls/SimpleMeterGreen_16192.png
new file mode 100644
index 0000000..9d40109
--- /dev/null
+++ b/site/controls/SimpleMeterGreen_16192.png
Binary files differ
diff --git a/site/controls/SimpleMeter_1240OrEDange.json b/site/controls/SimpleMeter_1240OrEDange.json
new file mode 100644
index 0000000..511b53f
--- /dev/null
+++ b/site/controls/SimpleMeter_1240OrEDange.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter_1240OrEDange.png", "cellw": 12} \ No newline at end of file
diff --git a/site/controls/SimpleMeter_1240OrEDange.png b/site/controls/SimpleMeter_1240OrEDange.png
new file mode 100644
index 0000000..26edc79
--- /dev/null
+++ b/site/controls/SimpleMeter_1240OrEDange.png
Binary files differ
diff --git a/site/controls/SimpleMeter_16128.json b/site/controls/SimpleMeter_16128.json
new file mode 100644
index 0000000..2c4a19f
--- /dev/null
+++ b/site/controls/SimpleMeter_16128.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 128, "ctltype": 3, "fn": "SimpleMeter_16128.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/SimpleMeter_16128.png b/site/controls/SimpleMeter_16128.png
new file mode 100644
index 0000000..16d1f03
--- /dev/null
+++ b/site/controls/SimpleMeter_16128.png
Binary files differ
diff --git a/site/controls/SimpleMeter_16192.json b/site/controls/SimpleMeter_16192.json
new file mode 100644
index 0000000..f4c57ef
--- /dev/null
+++ b/site/controls/SimpleMeter_16192.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 192, "ctltype": 3, "fn": "SimpleMeter_16192.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter_16192.png b/site/controls/SimpleMeter_16192.png
new file mode 100644
index 0000000..98c5ae6
--- /dev/null
+++ b/site/controls/SimpleMeter_16192.png
Binary files differ
diff --git a/site/controls/SimpleMeter_824green.json b/site/controls/SimpleMeter_824green.json
new file mode 100644
index 0000000..ad31a04
--- /dev/null
+++ b/site/controls/SimpleMeter_824green.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter_824green.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleMeter_824green.png b/site/controls/SimpleMeter_824green.png
new file mode 100644
index 0000000..bc5ffef
--- /dev/null
+++ b/site/controls/SimpleMeter_824green.png
Binary files differ
diff --git a/site/controls/SimpleMeter_864.json b/site/controls/SimpleMeter_864.json
new file mode 100644
index 0000000..0d5f043
--- /dev/null
+++ b/site/controls/SimpleMeter_864.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 3, "fn": "SimpleMeter_864.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleMeter_864.png b/site/controls/SimpleMeter_864.png
new file mode 100644
index 0000000..b88c1ac
--- /dev/null
+++ b/site/controls/SimpleMeter_864.png
Binary files differ
diff --git a/site/controls/SimpleMeter_864green(timbedt).json b/site/controls/SimpleMeter_864green(timbedt).json
new file mode 100644
index 0000000..56f19a1
--- /dev/null
+++ b/site/controls/SimpleMeter_864green(timbedt).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 3, "fn": "SimpleMeter_864green(timbedt).png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleMeter_864green(timbedt).png b/site/controls/SimpleMeter_864green(timbedt).png
new file mode 100644
index 0000000..fcd2ec2
--- /dev/null
+++ b/site/controls/SimpleMeter_864green(timbedt).png
Binary files differ
diff --git a/site/controls/SimpleMeter_864green.json b/site/controls/SimpleMeter_864green.json
new file mode 100644
index 0000000..c50cef8
--- /dev/null
+++ b/site/controls/SimpleMeter_864green.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 3, "fn": "SimpleMeter_864green.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter_864green.png b/site/controls/SimpleMeter_864green.png
new file mode 100644
index 0000000..0c23a08
--- /dev/null
+++ b/site/controls/SimpleMeter_864green.png
Binary files differ
diff --git a/site/controls/SimpleMeter_864red.json b/site/controls/SimpleMeter_864red.json
new file mode 100644
index 0000000..ecc15da
--- /dev/null
+++ b/site/controls/SimpleMeter_864red.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 3, "fn": "SimpleMeter_864red.png"} \ No newline at end of file
diff --git a/site/controls/SimpleMeter_864red.png b/site/controls/SimpleMeter_864red.png
new file mode 100644
index 0000000..3b79b30
--- /dev/null
+++ b/site/controls/SimpleMeter_864red.png
Binary files differ
diff --git a/site/controls/SimpleMeter_88green.json b/site/controls/SimpleMeter_88green.json
new file mode 100644
index 0000000..12aa778
--- /dev/null
+++ b/site/controls/SimpleMeter_88green.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 8, "ctltype": 3, "fn": "SimpleMeter_88green.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/SimpleMeter_88green.png b/site/controls/SimpleMeter_88green.png
new file mode 100644
index 0000000..45ef141
--- /dev/null
+++ b/site/controls/SimpleMeter_88green.png
Binary files differ
diff --git a/site/controls/StealTheMitch-2.json b/site/controls/StealTheMitch-2.json
new file mode 100644
index 0000000..1aa88ab
--- /dev/null
+++ b/site/controls/StealTheMitch-2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "StealTheMitch-2.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/StealTheMitch-2.png b/site/controls/StealTheMitch-2.png
new file mode 100644
index 0000000..e245cd1
--- /dev/null
+++ b/site/controls/StealTheMitch-2.png
Binary files differ
diff --git a/site/controls/StealTheMitch.json b/site/controls/StealTheMitch.json
new file mode 100644
index 0000000..ab93cfb
--- /dev/null
+++ b/site/controls/StealTheMitch.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "StealTheMitch.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/StealTheMitch.png b/site/controls/StealTheMitch.png
new file mode 100644
index 0000000..5c16d42
--- /dev/null
+++ b/site/controls/StealTheMitch.png
Binary files differ
diff --git a/site/controls/Switcher Transparent.json b/site/controls/Switcher Transparent.json
new file mode 100644
index 0000000..66ede80
--- /dev/null
+++ b/site/controls/Switcher Transparent.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher Transparent.png", "cellw": 150} \ No newline at end of file
diff --git a/site/controls/Switcher Transparent.png b/site/controls/Switcher Transparent.png
new file mode 100644
index 0000000..8369401
--- /dev/null
+++ b/site/controls/Switcher Transparent.png
Binary files differ
diff --git a/site/controls/Switcher.json b/site/controls/Switcher.json
new file mode 100644
index 0000000..0da2a96
--- /dev/null
+++ b/site/controls/Switcher.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 2, "fn": "Switcher.png"} \ No newline at end of file
diff --git a/site/controls/Switcher.png b/site/controls/Switcher.png
new file mode 100644
index 0000000..50835d7
--- /dev/null
+++ b/site/controls/Switcher.png
Binary files differ
diff --git a/site/controls/Switcher02(22x82).json b/site/controls/Switcher02(22x82).json
new file mode 100644
index 0000000..d5076e2
--- /dev/null
+++ b/site/controls/Switcher02(22x82).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher02(22x82).png", "cellw": 82} \ No newline at end of file
diff --git a/site/controls/Switcher02(22x82).png b/site/controls/Switcher02(22x82).png
new file mode 100644
index 0000000..add7bf7
--- /dev/null
+++ b/site/controls/Switcher02(22x82).png
Binary files differ
diff --git a/site/controls/Switcher03(40x128).json b/site/controls/Switcher03(40x128).json
new file mode 100644
index 0000000..7fa5290
--- /dev/null
+++ b/site/controls/Switcher03(40x128).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 40, "ctltype": 4, "fn": "Switcher03(40x128).png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Switcher03(40x128).png b/site/controls/Switcher03(40x128).png
new file mode 100644
index 0000000..e73983c
--- /dev/null
+++ b/site/controls/Switcher03(40x128).png
Binary files differ
diff --git a/site/controls/Switcher04(18x148).json b/site/controls/Switcher04(18x148).json
new file mode 100644
index 0000000..b1d878c
--- /dev/null
+++ b/site/controls/Switcher04(18x148).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher04(18x148).png"} \ No newline at end of file
diff --git a/site/controls/Switcher04(18x148).png b/site/controls/Switcher04(18x148).png
new file mode 100644
index 0000000..6f9e299
--- /dev/null
+++ b/site/controls/Switcher04(18x148).png
Binary files differ
diff --git a/site/controls/Switcher05(18x148).json b/site/controls/Switcher05(18x148).json
new file mode 100644
index 0000000..4dcca1f
--- /dev/null
+++ b/site/controls/Switcher05(18x148).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher05(18x148).png", "cellw": 148} \ No newline at end of file
diff --git a/site/controls/Switcher05(18x148).png b/site/controls/Switcher05(18x148).png
new file mode 100644
index 0000000..526ef38
--- /dev/null
+++ b/site/controls/Switcher05(18x148).png
Binary files differ
diff --git a/site/controls/Switcher05b(18x148).json b/site/controls/Switcher05b(18x148).json
new file mode 100644
index 0000000..5395408
--- /dev/null
+++ b/site/controls/Switcher05b(18x148).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher05b(18x148).png", "cellw": 148} \ No newline at end of file
diff --git a/site/controls/Switcher05b(18x148).png b/site/controls/Switcher05b(18x148).png
new file mode 100644
index 0000000..ac6a7b2
--- /dev/null
+++ b/site/controls/Switcher05b(18x148).png
Binary files differ
diff --git a/site/controls/Switcher06(18x148).json b/site/controls/Switcher06(18x148).json
new file mode 100644
index 0000000..6fef5be
--- /dev/null
+++ b/site/controls/Switcher06(18x148).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher06(18x148).png", "cellw": 148} \ No newline at end of file
diff --git a/site/controls/Switcher06(18x148).png b/site/controls/Switcher06(18x148).png
new file mode 100644
index 0000000..d76de31
--- /dev/null
+++ b/site/controls/Switcher06(18x148).png
Binary files differ
diff --git a/site/controls/Switcher06(18x148)b.json b/site/controls/Switcher06(18x148)b.json
new file mode 100644
index 0000000..3589b61
--- /dev/null
+++ b/site/controls/Switcher06(18x148)b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher06(18x148)b.png", "cellw": 148} \ No newline at end of file
diff --git a/site/controls/Switcher06(18x148)b.png b/site/controls/Switcher06(18x148)b.png
new file mode 100644
index 0000000..276e316
--- /dev/null
+++ b/site/controls/Switcher06(18x148)b.png
Binary files differ
diff --git a/site/controls/Switcher07(20x127).json b/site/controls/Switcher07(20x127).json
new file mode 100644
index 0000000..9b387c0
--- /dev/null
+++ b/site/controls/Switcher07(20x127).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 20, "ctltype": 4, "fn": "Switcher07(20x127).png", "cellw": 127} \ No newline at end of file
diff --git a/site/controls/Switcher07(20x127).png b/site/controls/Switcher07(20x127).png
new file mode 100644
index 0000000..847f6cc
--- /dev/null
+++ b/site/controls/Switcher07(20x127).png
Binary files differ
diff --git a/site/controls/Switcher08(18x64).json b/site/controls/Switcher08(18x64).json
new file mode 100644
index 0000000..5494b21
--- /dev/null
+++ b/site/controls/Switcher08(18x64).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher08(18x64).png"} \ No newline at end of file
diff --git a/site/controls/Switcher08(18x64).png b/site/controls/Switcher08(18x64).png
new file mode 100644
index 0000000..291104b
--- /dev/null
+++ b/site/controls/Switcher08(18x64).png
Binary files differ
diff --git a/site/controls/Switcher08b(16x24).json b/site/controls/Switcher08b(16x24).json
new file mode 100644
index 0000000..a4866a2
--- /dev/null
+++ b/site/controls/Switcher08b(16x24).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Switcher08b(16x24).png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Switcher08b(16x24).png b/site/controls/Switcher08b(16x24).png
new file mode 100644
index 0000000..55a55a3
--- /dev/null
+++ b/site/controls/Switcher08b(16x24).png
Binary files differ
diff --git a/site/controls/Switcher08b(16x32).json b/site/controls/Switcher08b(16x32).json
new file mode 100644
index 0000000..3c0b758
--- /dev/null
+++ b/site/controls/Switcher08b(16x32).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Switcher08b(16x32).png"} \ No newline at end of file
diff --git a/site/controls/Switcher08b(16x32).png b/site/controls/Switcher08b(16x32).png
new file mode 100644
index 0000000..a834425
--- /dev/null
+++ b/site/controls/Switcher08b(16x32).png
Binary files differ
diff --git a/site/controls/Switcher08b(18x40).json b/site/controls/Switcher08b(18x40).json
new file mode 100644
index 0000000..fe9471e
--- /dev/null
+++ b/site/controls/Switcher08b(18x40).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher08b(18x40).png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Switcher08b(18x40).png b/site/controls/Switcher08b(18x40).png
new file mode 100644
index 0000000..312f825
--- /dev/null
+++ b/site/controls/Switcher08b(18x40).png
Binary files differ
diff --git a/site/controls/Switcher08b(32x32).json b/site/controls/Switcher08b(32x32).json
new file mode 100644
index 0000000..b022cde
--- /dev/null
+++ b/site/controls/Switcher08b(32x32).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Switcher08b(32x32).png"} \ No newline at end of file
diff --git a/site/controls/Switcher08b(32x32).png b/site/controls/Switcher08b(32x32).png
new file mode 100644
index 0000000..1e21d5c
--- /dev/null
+++ b/site/controls/Switcher08b(32x32).png
Binary files differ
diff --git a/site/controls/Switcher09_BigBro(32)1.json b/site/controls/Switcher09_BigBro(32)1.json
new file mode 100644
index 0000000..3c43b2b
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(32)1.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Switcher09_BigBro(32)1.png"} \ No newline at end of file
diff --git a/site/controls/Switcher09_BigBro(32)1.png b/site/controls/Switcher09_BigBro(32)1.png
new file mode 100644
index 0000000..6fa6879
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(32)1.png
Binary files differ
diff --git a/site/controls/Switcher09_BigBro(48).json b/site/controls/Switcher09_BigBro(48).json
new file mode 100644
index 0000000..88ee96b
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(48).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 48, "ctltype": 4, "fn": "Switcher09_BigBro(48).png"} \ No newline at end of file
diff --git a/site/controls/Switcher09_BigBro(48).png b/site/controls/Switcher09_BigBro(48).png
new file mode 100644
index 0000000..e5405eb
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(48).png
Binary files differ
diff --git a/site/controls/Switcher09_BigBro(48)2.json b/site/controls/Switcher09_BigBro(48)2.json
new file mode 100644
index 0000000..3d36001
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(48)2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 48, "ctltype": 4, "fn": "Switcher09_BigBro(48)2.png"} \ No newline at end of file
diff --git a/site/controls/Switcher09_BigBro(48)2.png b/site/controls/Switcher09_BigBro(48)2.png
new file mode 100644
index 0000000..c0b7d3c
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(48)2.png
Binary files differ
diff --git a/site/controls/Switcher09_BigBro(64)1.json b/site/controls/Switcher09_BigBro(64)1.json
new file mode 100644
index 0000000..f9d78ba
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)1.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)1.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Switcher09_BigBro(64)1.png b/site/controls/Switcher09_BigBro(64)1.png
new file mode 100644
index 0000000..0c2e374
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)1.png
Binary files differ
diff --git a/site/controls/Switcher09_BigBro(64)2.json b/site/controls/Switcher09_BigBro(64)2.json
new file mode 100644
index 0000000..69cdb71
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)2.png"} \ No newline at end of file
diff --git a/site/controls/Switcher09_BigBro(64)2.png b/site/controls/Switcher09_BigBro(64)2.png
new file mode 100644
index 0000000..995fa1d
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)2.png
Binary files differ
diff --git a/site/controls/Switcher09_BigBro(64)3.json b/site/controls/Switcher09_BigBro(64)3.json
new file mode 100644
index 0000000..0afe1f3
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)3.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)3.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Switcher09_BigBro(64)3.png b/site/controls/Switcher09_BigBro(64)3.png
new file mode 100644
index 0000000..c55f69b
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)3.png
Binary files differ
diff --git a/site/controls/Switcher09_BigBro(64)5.json b/site/controls/Switcher09_BigBro(64)5.json
new file mode 100644
index 0000000..62cd1d0
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)5.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)5.png"} \ No newline at end of file
diff --git a/site/controls/Switcher09_BigBro(64)5.png b/site/controls/Switcher09_BigBro(64)5.png
new file mode 100644
index 0000000..0dcf0b9
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)5.png
Binary files differ
diff --git a/site/controls/Switcher09_BigBro(64)6.json b/site/controls/Switcher09_BigBro(64)6.json
new file mode 100644
index 0000000..3f6ad99
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)6.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)6.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Switcher09_BigBro(64)6.png b/site/controls/Switcher09_BigBro(64)6.png
new file mode 100644
index 0000000..72057b4
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)6.png
Binary files differ
diff --git a/site/controls/Switcher09_BigBro(64)7.json b/site/controls/Switcher09_BigBro(64)7.json
new file mode 100644
index 0000000..788b108
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)7.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)7.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Switcher09_BigBro(64)7.png b/site/controls/Switcher09_BigBro(64)7.png
new file mode 100644
index 0000000..0eb3e4c
--- /dev/null
+++ b/site/controls/Switcher09_BigBro(64)7.png
Binary files differ
diff --git a/site/controls/Switcher10-Logo_Kont20.json b/site/controls/Switcher10-Logo_Kont20.json
new file mode 100644
index 0000000..2a098ed
--- /dev/null
+++ b/site/controls/Switcher10-Logo_Kont20.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 20, "ctltype": 4, "fn": "Switcher10-Logo_Kont20.png"} \ No newline at end of file
diff --git a/site/controls/Switcher10-Logo_Kont20.png b/site/controls/Switcher10-Logo_Kont20.png
new file mode 100644
index 0000000..97e2208
--- /dev/null
+++ b/site/controls/Switcher10-Logo_Kont20.png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x1(128x30).json b/site/controls/Switcher_Bestpoke-x1(128x30).json
new file mode 100644
index 0000000..95c4643
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x1(128x30).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 30, "ctltype": 4, "fn": "Switcher_Bestpoke-x1(128x30).png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x1(128x30).png b/site/controls/Switcher_Bestpoke-x1(128x30).png
new file mode 100644
index 0000000..192f522
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x1(128x30).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x2(128x22).json b/site/controls/Switcher_Bestpoke-x2(128x22).json
new file mode 100644
index 0000000..ab4f09a
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2(128x22).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2(128x22).png"} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x2(128x22).png b/site/controls/Switcher_Bestpoke-x2(128x22).png
new file mode 100644
index 0000000..00e6941
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2(128x22).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x2(320x22).json b/site/controls/Switcher_Bestpoke-x2(320x22).json
new file mode 100644
index 0000000..0cad87f
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2(320x22).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2(320x22).png", "cellw": 320} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x2(320x22).png b/site/controls/Switcher_Bestpoke-x2(320x22).png
new file mode 100644
index 0000000..38d65d9
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2(320x22).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x2(416x22).json b/site/controls/Switcher_Bestpoke-x2(416x22).json
new file mode 100644
index 0000000..b4d8700
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2(416x22).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2(416x22).png"} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x2(416x22).png b/site/controls/Switcher_Bestpoke-x2(416x22).png
new file mode 100644
index 0000000..d5be402
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2(416x22).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x2b(96x22).json b/site/controls/Switcher_Bestpoke-x2b(96x22).json
new file mode 100644
index 0000000..d750efe
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2b(96x22).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2b(96x22).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x2b(96x22).png b/site/controls/Switcher_Bestpoke-x2b(96x22).png
new file mode 100644
index 0000000..b39865e
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2b(96x22).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x2b(96x22)b.json b/site/controls/Switcher_Bestpoke-x2b(96x22)b.json
new file mode 100644
index 0000000..a25edb2
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2b(96x22)b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2b(96x22)b.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x2b(96x22)b.png b/site/controls/Switcher_Bestpoke-x2b(96x22)b.png
new file mode 100644
index 0000000..e38952b
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2b(96x22)b.png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x2c(80x22).json b/site/controls/Switcher_Bestpoke-x2c(80x22).json
new file mode 100644
index 0000000..65dbfb5
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2c(80x22).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2c(80x22).png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x2c(80x22).png b/site/controls/Switcher_Bestpoke-x2c(80x22).png
new file mode 100644
index 0000000..8d53410
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2c(80x22).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x2d(64x22).json b/site/controls/Switcher_Bestpoke-x2d(64x22).json
new file mode 100644
index 0000000..2e92d70
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2d(64x22).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2d(64x22).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x2d(64x22).png b/site/controls/Switcher_Bestpoke-x2d(64x22).png
new file mode 100644
index 0000000..2f2d132
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2d(64x22).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x2e(48x22).json b/site/controls/Switcher_Bestpoke-x2e(48x22).json
new file mode 100644
index 0000000..2be80b7
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2e(48x22).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2e(48x22).png"} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x2e(48x22).png b/site/controls/Switcher_Bestpoke-x2e(48x22).png
new file mode 100644
index 0000000..3f91ff8
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x2e(48x22).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x3(28x28).json b/site/controls/Switcher_Bestpoke-x3(28x28).json
new file mode 100644
index 0000000..a8c2c88
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x3(28x28).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 28, "ctltype": 4, "fn": "Switcher_Bestpoke-x3(28x28).png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x3(28x28).png b/site/controls/Switcher_Bestpoke-x3(28x28).png
new file mode 100644
index 0000000..50bbd3b
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x3(28x28).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x3b(28x28).json b/site/controls/Switcher_Bestpoke-x3b(28x28).json
new file mode 100644
index 0000000..a92f99f
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x3b(28x28).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 28, "ctltype": 4, "fn": "Switcher_Bestpoke-x3b(28x28).png"} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x3b(28x28).png b/site/controls/Switcher_Bestpoke-x3b(28x28).png
new file mode 100644
index 0000000..27d47eb
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x3b(28x28).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x3c(28x28).json b/site/controls/Switcher_Bestpoke-x3c(28x28).json
new file mode 100644
index 0000000..5d70a1d
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x3c(28x28).json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 28, "ctltype": 4, "fn": "Switcher_Bestpoke-x3c(28x28).png"} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x3c(28x28).png b/site/controls/Switcher_Bestpoke-x3c(28x28).png
new file mode 100644
index 0000000..0bdc02f
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x3c(28x28).png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x4.json b/site/controls/Switcher_Bestpoke-x4.json
new file mode 100644
index 0000000..1034130
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x4.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x4.png"} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x4.png b/site/controls/Switcher_Bestpoke-x4.png
new file mode 100644
index 0000000..de33bf1
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x4.png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x4b.json b/site/controls/Switcher_Bestpoke-x4b.json
new file mode 100644
index 0000000..a497bd9
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x4b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x4b.png", "cellw": 160} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x4b.png b/site/controls/Switcher_Bestpoke-x4b.png
new file mode 100644
index 0000000..20cc555
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x4b.png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x4c.json b/site/controls/Switcher_Bestpoke-x4c.json
new file mode 100644
index 0000000..87bfa32
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x4c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Switcher_Bestpoke-x4c.png"} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x4c.png b/site/controls/Switcher_Bestpoke-x4c.png
new file mode 100644
index 0000000..fb8e79c
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x4c.png
Binary files differ
diff --git a/site/controls/Switcher_Bestpoke-x4d.json b/site/controls/Switcher_Bestpoke-x4d.json
new file mode 100644
index 0000000..d1908bf
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x4d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Switcher_Bestpoke-x4d.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Switcher_Bestpoke-x4d.png b/site/controls/Switcher_Bestpoke-x4d.png
new file mode 100644
index 0000000..71e8f92
--- /dev/null
+++ b/site/controls/Switcher_Bestpoke-x4d.png
Binary files differ
diff --git a/site/controls/Switcher_MiniSwitcher1.json b/site/controls/Switcher_MiniSwitcher1.json
new file mode 100644
index 0000000..26962be
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher1.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher1.png"} \ No newline at end of file
diff --git a/site/controls/Switcher_MiniSwitcher1.png b/site/controls/Switcher_MiniSwitcher1.png
new file mode 100644
index 0000000..a21e375
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher1.png
Binary files differ
diff --git a/site/controls/Switcher_MiniSwitcher1b.json b/site/controls/Switcher_MiniSwitcher1b.json
new file mode 100644
index 0000000..701b75f
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher1b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher1b.png"} \ No newline at end of file
diff --git a/site/controls/Switcher_MiniSwitcher1b.png b/site/controls/Switcher_MiniSwitcher1b.png
new file mode 100644
index 0000000..74bee11
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher1b.png
Binary files differ
diff --git a/site/controls/Switcher_MiniSwitcher2.json b/site/controls/Switcher_MiniSwitcher2.json
new file mode 100644
index 0000000..53b50df
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2.png"} \ No newline at end of file
diff --git a/site/controls/Switcher_MiniSwitcher2.png b/site/controls/Switcher_MiniSwitcher2.png
new file mode 100644
index 0000000..3c11169
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2.png
Binary files differ
diff --git a/site/controls/Switcher_MiniSwitcher2b.json b/site/controls/Switcher_MiniSwitcher2b.json
new file mode 100644
index 0000000..04017da
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2b.png", "cellw": 37} \ No newline at end of file
diff --git a/site/controls/Switcher_MiniSwitcher2b.png b/site/controls/Switcher_MiniSwitcher2b.png
new file mode 100644
index 0000000..d8a3f8a
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2b.png
Binary files differ
diff --git a/site/controls/Switcher_MiniSwitcher2c.json b/site/controls/Switcher_MiniSwitcher2c.json
new file mode 100644
index 0000000..0e55566
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2c.png"} \ No newline at end of file
diff --git a/site/controls/Switcher_MiniSwitcher2c.png b/site/controls/Switcher_MiniSwitcher2c.png
new file mode 100644
index 0000000..5569068
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2c.png
Binary files differ
diff --git a/site/controls/Switcher_MiniSwitcher2d.json b/site/controls/Switcher_MiniSwitcher2d.json
new file mode 100644
index 0000000..321b359
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2d.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/Switcher_MiniSwitcher2d.png b/site/controls/Switcher_MiniSwitcher2d.png
new file mode 100644
index 0000000..31c7b05
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2d.png
Binary files differ
diff --git a/site/controls/Switcher_MiniSwitcher2e.json b/site/controls/Switcher_MiniSwitcher2e.json
new file mode 100644
index 0000000..35f1de1
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2e.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2e.png", "cellw": 21} \ No newline at end of file
diff --git a/site/controls/Switcher_MiniSwitcher2e.png b/site/controls/Switcher_MiniSwitcher2e.png
new file mode 100644
index 0000000..304c480
--- /dev/null
+++ b/site/controls/Switcher_MiniSwitcher2e.png
Binary files differ
diff --git a/site/controls/TJA ValhallaUberModSliderRed.json b/site/controls/TJA ValhallaUberModSliderRed.json
new file mode 100644
index 0000000..3af78ce
--- /dev/null
+++ b/site/controls/TJA ValhallaUberModSliderRed.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 1, "fn": "TJA ValhallaUberModSliderRed.png"} \ No newline at end of file
diff --git a/site/controls/TJA ValhallaUberModSliderRed.png b/site/controls/TJA ValhallaUberModSliderRed.png
new file mode 100644
index 0000000..b0656e7
--- /dev/null
+++ b/site/controls/TJA ValhallaUberModSliderRed.png
Binary files differ
diff --git a/site/controls/TJA ValhallaUberModSliderWhite.json b/site/controls/TJA ValhallaUberModSliderWhite.json
new file mode 100644
index 0000000..ea0f5f1
--- /dev/null
+++ b/site/controls/TJA ValhallaUberModSliderWhite.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 1, "fn": "TJA ValhallaUberModSliderWhite.png"} \ No newline at end of file
diff --git a/site/controls/TJA ValhallaUberModSliderWhite.png b/site/controls/TJA ValhallaUberModSliderWhite.png
new file mode 100644
index 0000000..5bdc22b
--- /dev/null
+++ b/site/controls/TJA ValhallaUberModSliderWhite.png
Binary files differ
diff --git a/site/controls/TJA_NovLauConButt.json b/site/controls/TJA_NovLauConButt.json
new file mode 100644
index 0000000..6e47331
--- /dev/null
+++ b/site/controls/TJA_NovLauConButt.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 2, "fn": "TJA_NovLauConButt.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/TJA_NovLauConButt.png b/site/controls/TJA_NovLauConButt.png
new file mode 100644
index 0000000..2524647
--- /dev/null
+++ b/site/controls/TJA_NovLauConButt.png
Binary files differ
diff --git a/site/controls/TJA_NovLauConButtSmall.json b/site/controls/TJA_NovLauConButtSmall.json
new file mode 100644
index 0000000..2873446
--- /dev/null
+++ b/site/controls/TJA_NovLauConButtSmall.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "TJA_NovLauConButtSmall.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/TJA_NovLauConButtSmall.png b/site/controls/TJA_NovLauConButtSmall.png
new file mode 100644
index 0000000..f467601
--- /dev/null
+++ b/site/controls/TJA_NovLauConButtSmall.png
Binary files differ
diff --git a/site/controls/TJA_NovLauConButtSmallb.json b/site/controls/TJA_NovLauConButtSmallb.json
new file mode 100644
index 0000000..84e1f62
--- /dev/null
+++ b/site/controls/TJA_NovLauConButtSmallb.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "TJA_NovLauConButtSmallb.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/TJA_NovLauConButtSmallb.png b/site/controls/TJA_NovLauConButtSmallb.png
new file mode 100644
index 0000000..4b06500
--- /dev/null
+++ b/site/controls/TJA_NovLauConButtSmallb.png
Binary files differ
diff --git a/site/controls/TJA_NovLauConButtSmallc.json b/site/controls/TJA_NovLauConButtSmallc.json
new file mode 100644
index 0000000..4b640e2
--- /dev/null
+++ b/site/controls/TJA_NovLauConButtSmallc.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "TJA_NovLauConButtSmallc.png"} \ No newline at end of file
diff --git a/site/controls/TJA_NovLauConButtSmallc.png b/site/controls/TJA_NovLauConButtSmallc.png
new file mode 100644
index 0000000..6f143d7
--- /dev/null
+++ b/site/controls/TJA_NovLauConButtSmallc.png
Binary files differ
diff --git a/site/controls/TJA_NovLauConKnob3d.json b/site/controls/TJA_NovLauConKnob3d.json
new file mode 100644
index 0000000..4a691c6
--- /dev/null
+++ b/site/controls/TJA_NovLauConKnob3d.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "TJA_NovLauConKnob3d.png"} \ No newline at end of file
diff --git a/site/controls/TJA_NovLauConKnob3d.png b/site/controls/TJA_NovLauConKnob3d.png
new file mode 100644
index 0000000..d9ff8ef
--- /dev/null
+++ b/site/controls/TJA_NovLauConKnob3d.png
Binary files differ
diff --git a/site/controls/TJA_SliderYellow1.json b/site/controls/TJA_SliderYellow1.json
new file mode 100644
index 0000000..a65088f
--- /dev/null
+++ b/site/controls/TJA_SliderYellow1.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 200, "ctltype": 1, "fn": "TJA_SliderYellow1.png"} \ No newline at end of file
diff --git a/site/controls/TJA_SliderYellow1.png b/site/controls/TJA_SliderYellow1.png
new file mode 100644
index 0000000..2228919
--- /dev/null
+++ b/site/controls/TJA_SliderYellow1.png
Binary files differ
diff --git a/site/controls/TJA_Zebra2.json b/site/controls/TJA_Zebra2.json
new file mode 100644
index 0000000..687301a
--- /dev/null
+++ b/site/controls/TJA_Zebra2.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 28, "ctltype": 0, "fn": "TJA_Zebra2.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/TJA_Zebra2.png b/site/controls/TJA_Zebra2.png
new file mode 100644
index 0000000..f2c3e68
--- /dev/null
+++ b/site/controls/TJA_Zebra2.png
Binary files differ
diff --git a/site/controls/TJA_Zebra2_cent_red.json b/site/controls/TJA_Zebra2_cent_red.json
new file mode 100644
index 0000000..7151070
--- /dev/null
+++ b/site/controls/TJA_Zebra2_cent_red.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 28, "ctltype": 0, "fn": "TJA_Zebra2_cent_red.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/TJA_Zebra2_cent_red.png b/site/controls/TJA_Zebra2_cent_red.png
new file mode 100644
index 0000000..69d7b0c
--- /dev/null
+++ b/site/controls/TJA_Zebra2_cent_red.png
Binary files differ
diff --git a/site/controls/TJA_keys_meter.json b/site/controls/TJA_keys_meter.json
new file mode 100644
index 0000000..dfaf8c7
--- /dev/null
+++ b/site/controls/TJA_keys_meter.json
@@ -0,0 +1 @@
+{"frames": 30, "cellh": 29, "ctltype": 3, "fn": "TJA_keys_meter.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/TJA_keys_meter.png b/site/controls/TJA_keys_meter.png
new file mode 100644
index 0000000..c9e973d
--- /dev/null
+++ b/site/controls/TJA_keys_meter.png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_FLLimiter4_(64129).json b/site/controls/Timb&Bryntes_FLLimiter4_(64129).json
new file mode 100644
index 0000000..5ebe1b8
--- /dev/null
+++ b/site/controls/Timb&Bryntes_FLLimiter4_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_FLLimiter4_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_FLLimiter4_(64129).png b/site/controls/Timb&Bryntes_FLLimiter4_(64129).png
new file mode 100644
index 0000000..3067870
--- /dev/null
+++ b/site/controls/Timb&Bryntes_FLLimiter4_(64129).png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_Gemini1_(64129).json b/site/controls/Timb&Bryntes_Gemini1_(64129).json
new file mode 100644
index 0000000..ace1083
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Gemini1_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Gemini1_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_Gemini1_(64129).png b/site/controls/Timb&Bryntes_Gemini1_(64129).png
new file mode 100644
index 0000000..560d444
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Gemini1_(64129).png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_OBXREAL_(64129).json b/site/controls/Timb&Bryntes_OBXREAL_(64129).json
new file mode 100644
index 0000000..2b701a2
--- /dev/null
+++ b/site/controls/Timb&Bryntes_OBXREAL_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_OBXREAL_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_OBXREAL_(64129).png b/site/controls/Timb&Bryntes_OBXREAL_(64129).png
new file mode 100644
index 0000000..19b0bed
--- /dev/null
+++ b/site/controls/Timb&Bryntes_OBXREAL_(64129).png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_SteinASS_(64129).json b/site/controls/Timb&Bryntes_SteinASS_(64129).json
new file mode 100644
index 0000000..21a412d
--- /dev/null
+++ b/site/controls/Timb&Bryntes_SteinASS_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_SteinASS_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_SteinASS_(64129).png b/site/controls/Timb&Bryntes_SteinASS_(64129).png
new file mode 100644
index 0000000..d3da456
--- /dev/null
+++ b/site/controls/Timb&Bryntes_SteinASS_(64129).png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_Tal 50x502_(64129).json b/site/controls/Timb&Bryntes_Tal 50x502_(64129).json
new file mode 100644
index 0000000..3459851
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Tal 50x502_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Tal 50x502_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_Tal 50x502_(64129).png b/site/controls/Timb&Bryntes_Tal 50x502_(64129).png
new file mode 100644
index 0000000..787f4c5
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Tal 50x502_(64129).png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_Tal 50x50_(64129).json b/site/controls/Timb&Bryntes_Tal 50x50_(64129).json
new file mode 100644
index 0000000..4084d97
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Tal 50x50_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Tal 50x50_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_Tal 50x50_(64129).png b/site/controls/Timb&Bryntes_Tal 50x50_(64129).png
new file mode 100644
index 0000000..2c6a63c
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Tal 50x50_(64129).png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_Trap2_(64129).json b/site/controls/Timb&Bryntes_Trap2_(64129).json
new file mode 100644
index 0000000..6c1f3ac
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Trap2_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Trap2_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_Trap2_(64129).png b/site/controls/Timb&Bryntes_Trap2_(64129).png
new file mode 100644
index 0000000..41e2aaf
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Trap2_(64129).png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_Trap3_(64129).json b/site/controls/Timb&Bryntes_Trap3_(64129).json
new file mode 100644
index 0000000..be2bd0f
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Trap3_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Trap3_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_Trap3_(64129).png b/site/controls/Timb&Bryntes_Trap3_(64129).png
new file mode 100644
index 0000000..4b809d0
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Trap3_(64129).png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_Trap4_(64129).json b/site/controls/Timb&Bryntes_Trap4_(64129).json
new file mode 100644
index 0000000..0574408
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Trap4_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Trap4_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_Trap4_(64129).png b/site/controls/Timb&Bryntes_Trap4_(64129).png
new file mode 100644
index 0000000..516b37e
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Trap4_(64129).png
Binary files differ
diff --git a/site/controls/Timb&Bryntes_Trap_(64129).json b/site/controls/Timb&Bryntes_Trap_(64129).json
new file mode 100644
index 0000000..4fd6664
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Trap_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Trap_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&Bryntes_Trap_(64129).png b/site/controls/Timb&Bryntes_Trap_(64129).png
new file mode 100644
index 0000000..1a190dd
--- /dev/null
+++ b/site/controls/Timb&Bryntes_Trap_(64129).png
Binary files differ
diff --git a/site/controls/Timb&FL_Max+3bEQ_(128x32-130fr).json b/site/controls/Timb&FL_Max+3bEQ_(128x32-130fr).json
new file mode 100644
index 0000000..c6a75e7
--- /dev/null
+++ b/site/controls/Timb&FL_Max+3bEQ_(128x32-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&FL_Max+3bEQ_(128x32-130fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb&FL_Max+3bEQ_(128x32-130fr).png b/site/controls/Timb&FL_Max+3bEQ_(128x32-130fr).png
new file mode 100644
index 0000000..ca1c215
--- /dev/null
+++ b/site/controls/Timb&FL_Max+3bEQ_(128x32-130fr).png
Binary files differ
diff --git a/site/controls/Timb&FL_MaxEQ_(148x29-130fr).json b/site/controls/Timb&FL_MaxEQ_(148x29-130fr).json
new file mode 100644
index 0000000..17dd4dd
--- /dev/null
+++ b/site/controls/Timb&FL_MaxEQ_(148x29-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 148, "ctltype": 1, "fn": "Timb&FL_MaxEQ_(148x29-130fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb&FL_MaxEQ_(148x29-130fr).png b/site/controls/Timb&FL_MaxEQ_(148x29-130fr).png
new file mode 100644
index 0000000..465cf95
--- /dev/null
+++ b/site/controls/Timb&FL_MaxEQ_(148x29-130fr).png
Binary files differ
diff --git a/site/controls/Timb&FL_Roland Juno106_(100x27-130fr).json b/site/controls/Timb&FL_Roland Juno106_(100x27-130fr).json
new file mode 100644
index 0000000..a2d0ef5
--- /dev/null
+++ b/site/controls/Timb&FL_Roland Juno106_(100x27-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 100, "ctltype": 1, "fn": "Timb&FL_Roland Juno106_(100x27-130fr).png", "cellw": 27} \ No newline at end of file
diff --git a/site/controls/Timb&FL_Roland Juno106_(100x27-130fr).png b/site/controls/Timb&FL_Roland Juno106_(100x27-130fr).png
new file mode 100644
index 0000000..c0783c1
--- /dev/null
+++ b/site/controls/Timb&FL_Roland Juno106_(100x27-130fr).png
Binary files differ
diff --git a/site/controls/Timb&FL_Roland Juno106_(160x27-130fr).json b/site/controls/Timb&FL_Roland Juno106_(160x27-130fr).json
new file mode 100644
index 0000000..2be64c1
--- /dev/null
+++ b/site/controls/Timb&FL_Roland Juno106_(160x27-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 160, "ctltype": 1, "fn": "Timb&FL_Roland Juno106_(160x27-130fr).png", "cellw": 27} \ No newline at end of file
diff --git a/site/controls/Timb&FL_Roland Juno106_(160x27-130fr).png b/site/controls/Timb&FL_Roland Juno106_(160x27-130fr).png
new file mode 100644
index 0000000..8350a70
--- /dev/null
+++ b/site/controls/Timb&FL_Roland Juno106_(160x27-130fr).png
Binary files differ
diff --git a/site/controls/Timb&FL_RolandJP8000_(106x43-130fr).json b/site/controls/Timb&FL_RolandJP8000_(106x43-130fr).json
new file mode 100644
index 0000000..ea6966a
--- /dev/null
+++ b/site/controls/Timb&FL_RolandJP8000_(106x43-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 106, "ctltype": 1, "fn": "Timb&FL_RolandJP8000_(106x43-130fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb&FL_RolandJP8000_(106x43-130fr).png b/site/controls/Timb&FL_RolandJP8000_(106x43-130fr).png
new file mode 100644
index 0000000..3e54b20
--- /dev/null
+++ b/site/controls/Timb&FL_RolandJP8000_(106x43-130fr).png
Binary files differ
diff --git a/site/controls/Timb&FL_SliderPack-1_(112x44-130fr).json b/site/controls/Timb&FL_SliderPack-1_(112x44-130fr).json
new file mode 100644
index 0000000..b47bf76
--- /dev/null
+++ b/site/controls/Timb&FL_SliderPack-1_(112x44-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 112, "ctltype": 1, "fn": "Timb&FL_SliderPack-1_(112x44-130fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb&FL_SliderPack-1_(112x44-130fr).png b/site/controls/Timb&FL_SliderPack-1_(112x44-130fr).png
new file mode 100644
index 0000000..ed9a747
--- /dev/null
+++ b/site/controls/Timb&FL_SliderPack-1_(112x44-130fr).png
Binary files differ
diff --git a/site/controls/Timb&FL_SliderPack-2_(144x75-130fr).json b/site/controls/Timb&FL_SliderPack-2_(144x75-130fr).json
new file mode 100644
index 0000000..a1eca44
--- /dev/null
+++ b/site/controls/Timb&FL_SliderPack-2_(144x75-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 144, "ctltype": 1, "fn": "Timb&FL_SliderPack-2_(144x75-130fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb&FL_SliderPack-2_(144x75-130fr).png b/site/controls/Timb&FL_SliderPack-2_(144x75-130fr).png
new file mode 100644
index 0000000..95037d4
--- /dev/null
+++ b/site/controls/Timb&FL_SliderPack-2_(144x75-130fr).png
Binary files differ
diff --git a/site/controls/Timb&FL_TDA EQ8_(142x38-130fr).json b/site/controls/Timb&FL_TDA EQ8_(142x38-130fr).json
new file mode 100644
index 0000000..8af039c
--- /dev/null
+++ b/site/controls/Timb&FL_TDA EQ8_(142x38-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 142, "ctltype": 1, "fn": "Timb&FL_TDA EQ8_(142x38-130fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb&FL_TDA EQ8_(142x38-130fr).png b/site/controls/Timb&FL_TDA EQ8_(142x38-130fr).png
new file mode 100644
index 0000000..298b9e1
--- /dev/null
+++ b/site/controls/Timb&FL_TDA EQ8_(142x38-130fr).png
Binary files differ
diff --git a/site/controls/Timb&FL_YamahaDX1_(55x24-130fr).json b/site/controls/Timb&FL_YamahaDX1_(55x24-130fr).json
new file mode 100644
index 0000000..dc0c3cc
--- /dev/null
+++ b/site/controls/Timb&FL_YamahaDX1_(55x24-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 55, "ctltype": 1, "fn": "Timb&FL_YamahaDX1_(55x24-130fr).png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb&FL_YamahaDX1_(55x24-130fr).png b/site/controls/Timb&FL_YamahaDX1_(55x24-130fr).png
new file mode 100644
index 0000000..7bded01
--- /dev/null
+++ b/site/controls/Timb&FL_YamahaDX1_(55x24-130fr).png
Binary files differ
diff --git a/site/controls/Timb&FL_YamahaDX1_(96x24-130fr).json b/site/controls/Timb&FL_YamahaDX1_(96x24-130fr).json
new file mode 100644
index 0000000..59e2cda
--- /dev/null
+++ b/site/controls/Timb&FL_YamahaDX1_(96x24-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 96, "ctltype": 1, "fn": "Timb&FL_YamahaDX1_(96x24-130fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb&FL_YamahaDX1_(96x24-130fr).png b/site/controls/Timb&FL_YamahaDX1_(96x24-130fr).png
new file mode 100644
index 0000000..9c2cfe1
--- /dev/null
+++ b/site/controls/Timb&FL_YamahaDX1_(96x24-130fr).png
Binary files differ
diff --git a/site/controls/Timb&HY_ButtonSquare1(32).json b/site/controls/Timb&HY_ButtonSquare1(32).json
new file mode 100644
index 0000000..9ca8944
--- /dev/null
+++ b/site/controls/Timb&HY_ButtonSquare1(32).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb&HY_ButtonSquare1(32).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ButtonSquare1(32).png b/site/controls/Timb&HY_ButtonSquare1(32).png
new file mode 100644
index 0000000..d3228b1
--- /dev/null
+++ b/site/controls/Timb&HY_ButtonSquare1(32).png
Binary files differ
diff --git a/site/controls/Timb&HY_DL2_Slider_(1664).json b/site/controls/Timb&HY_DL2_Slider_(1664).json
new file mode 100644
index 0000000..3b20235
--- /dev/null
+++ b/site/controls/Timb&HY_DL2_Slider_(1664).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 1, "fn": "Timb&HY_DL2_Slider_(1664).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DL2_Slider_(1664).png b/site/controls/Timb&HY_DL2_Slider_(1664).png
new file mode 100644
index 0000000..72a575f
--- /dev/null
+++ b/site/controls/Timb&HY_DL2_Slider_(1664).png
Binary files differ
diff --git a/site/controls/Timb&HY_DL2_Slider_(24130).json b/site/controls/Timb&HY_DL2_Slider_(24130).json
new file mode 100644
index 0000000..529ed5a
--- /dev/null
+++ b/site/controls/Timb&HY_DL2_Slider_(24130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&HY_DL2_Slider_(24130).png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DL2_Slider_(24130).png b/site/controls/Timb&HY_DL2_Slider_(24130).png
new file mode 100644
index 0000000..95f34a4
--- /dev/null
+++ b/site/controls/Timb&HY_DL2_Slider_(24130).png
Binary files differ
diff --git a/site/controls/Timb&HY_DL2_Slider_(32130).json b/site/controls/Timb&HY_DL2_Slider_(32130).json
new file mode 100644
index 0000000..94292fa
--- /dev/null
+++ b/site/controls/Timb&HY_DL2_Slider_(32130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 32, "ctltype": 1, "fn": "Timb&HY_DL2_Slider_(32130).png", "cellw": 174} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DL2_Slider_(32130).png b/site/controls/Timb&HY_DL2_Slider_(32130).png
new file mode 100644
index 0000000..d4f80e9
--- /dev/null
+++ b/site/controls/Timb&HY_DL2_Slider_(32130).png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB1_(64130).json b/site/controls/Timb&HY_DLY3LikeBB1_(64130).json
new file mode 100644
index 0000000..d2d8393
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB1_(64130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB1_(64130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB1_(64130).png b/site/controls/Timb&HY_DLY3LikeBB1_(64130).png
new file mode 100644
index 0000000..a764c9e
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB1_(64130).png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB2_(64130).json b/site/controls/Timb&HY_DLY3LikeBB2_(64130).json
new file mode 100644
index 0000000..21a0f56
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB2_(64130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB2_(64130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB2_(64130).png b/site/controls/Timb&HY_DLY3LikeBB2_(64130).png
new file mode 100644
index 0000000..a016d34
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB2_(64130).png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB2_(64130)b.json b/site/controls/Timb&HY_DLY3LikeBB2_(64130)b.json
new file mode 100644
index 0000000..9a83903
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB2_(64130)b.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB2_(64130)b.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB2_(64130)b.png b/site/controls/Timb&HY_DLY3LikeBB2_(64130)b.png
new file mode 100644
index 0000000..64469cd
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB2_(64130)b.png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB3_(64130).json b/site/controls/Timb&HY_DLY3LikeBB3_(64130).json
new file mode 100644
index 0000000..534a1ae
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB3_(64130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB3_(64130).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB3_(64130).png b/site/controls/Timb&HY_DLY3LikeBB3_(64130).png
new file mode 100644
index 0000000..5c471cc
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB3_(64130).png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB4_(64130).json b/site/controls/Timb&HY_DLY3LikeBB4_(64130).json
new file mode 100644
index 0000000..188242f
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB4_(64130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB4_(64130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB4_(64130).png b/site/controls/Timb&HY_DLY3LikeBB4_(64130).png
new file mode 100644
index 0000000..9cc2812
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB4_(64130).png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130).json b/site/controls/Timb&HY_DLY3LikeBB5_(64130).json
new file mode 100644
index 0000000..5d7ed02
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130).png b/site/controls/Timb&HY_DLY3LikeBB5_(64130).png
new file mode 100644
index 0000000..8190e61
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130).png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)a.json b/site/controls/Timb&HY_DLY3LikeBB5_(64130)a.json
new file mode 100644
index 0000000..97d5b9f
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)a.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)a.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)a.png b/site/controls/Timb&HY_DLY3LikeBB5_(64130)a.png
new file mode 100644
index 0000000..35ce075
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)a.png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)b.json b/site/controls/Timb&HY_DLY3LikeBB5_(64130)b.json
new file mode 100644
index 0000000..0b9351b
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)b.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)b.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)b.png b/site/controls/Timb&HY_DLY3LikeBB5_(64130)b.png
new file mode 100644
index 0000000..e2c78a3
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)b.png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)c.json b/site/controls/Timb&HY_DLY3LikeBB5_(64130)c.json
new file mode 100644
index 0000000..af7f840
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)c.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)c.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)c.png b/site/controls/Timb&HY_DLY3LikeBB5_(64130)c.png
new file mode 100644
index 0000000..1689dd1
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)c.png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)cbipo.json b/site/controls/Timb&HY_DLY3LikeBB5_(64130)cbipo.json
new file mode 100644
index 0000000..a40bbb8
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)cbipo.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)cbipo.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)cbipo.png b/site/controls/Timb&HY_DLY3LikeBB5_(64130)cbipo.png
new file mode 100644
index 0000000..4892a9b
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)cbipo.png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)d.json b/site/controls/Timb&HY_DLY3LikeBB5_(64130)d.json
new file mode 100644
index 0000000..6bf1668
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)d.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)d.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)d.png b/site/controls/Timb&HY_DLY3LikeBB5_(64130)d.png
new file mode 100644
index 0000000..cdeb5b4
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)d.png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)e.json b/site/controls/Timb&HY_DLY3LikeBB5_(64130)e.json
new file mode 100644
index 0000000..73d6887
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)e.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)e.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB5_(64130)e.png b/site/controls/Timb&HY_DLY3LikeBB5_(64130)e.png
new file mode 100644
index 0000000..4f720c0
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB5_(64130)e.png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3LikeBB6_(64130).json b/site/controls/Timb&HY_DLY3LikeBB6_(64130).json
new file mode 100644
index 0000000..13b080d
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB6_(64130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB6_(64130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3LikeBB6_(64130).png b/site/controls/Timb&HY_DLY3LikeBB6_(64130).png
new file mode 100644
index 0000000..2f2eb4a
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3LikeBB6_(64130).png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3Like_(64130).json b/site/controls/Timb&HY_DLY3Like_(64130).json
new file mode 100644
index 0000000..d5556e7
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3Like_(64130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3Like_(64130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3Like_(64130).png b/site/controls/Timb&HY_DLY3Like_(64130).png
new file mode 100644
index 0000000..277b255
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3Like_(64130).png
Binary files differ
diff --git a/site/controls/Timb&HY_DLY3Like_(64130)2.json b/site/controls/Timb&HY_DLY3Like_(64130)2.json
new file mode 100644
index 0000000..d7709db
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3Like_(64130)2.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3Like_(64130)2.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_DLY3Like_(64130)2.png b/site/controls/Timb&HY_DLY3Like_(64130)2.png
new file mode 100644
index 0000000..74cf3eb
--- /dev/null
+++ b/site/controls/Timb&HY_DLY3Like_(64130)2.png
Binary files differ
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90).json b/site/controls/Timb&HY_Filter3Meter(85x90).json
new file mode 100644
index 0000000..09db78e
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90).json
@@ -0,0 +1 @@
+{"frames": 90, "cellh": 85, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90).png b/site/controls/Timb&HY_Filter3Meter(85x90).png
new file mode 100644
index 0000000..3670c59
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90).png
Binary files differ
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)2.json b/site/controls/Timb&HY_Filter3Meter(85x90)2.json
new file mode 100644
index 0000000..95bf90c
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)2.json
@@ -0,0 +1 @@
+{"frames": 90, "cellh": 85, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)2.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)2.png b/site/controls/Timb&HY_Filter3Meter(85x90)2.png
new file mode 100644
index 0000000..394268b
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)2.png
Binary files differ
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)3.json b/site/controls/Timb&HY_Filter3Meter(85x90)3.json
new file mode 100644
index 0000000..db2379d
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)3.json
@@ -0,0 +1 @@
+{"frames": 90, "cellh": 85, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)3.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)3.png b/site/controls/Timb&HY_Filter3Meter(85x90)3.png
new file mode 100644
index 0000000..10eb472
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)3.png
Binary files differ
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ.json b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ.json
new file mode 100644
index 0000000..3e556af
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ.json
@@ -0,0 +1 @@
+{"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ.png b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ.png
new file mode 100644
index 0000000..caffd01
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ.png
Binary files differ
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ2.json b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ2.json
new file mode 100644
index 0000000..1579d85
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ2.json
@@ -0,0 +1 @@
+{"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ2.png", "cellw": 85} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ2.png b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ2.png
new file mode 100644
index 0000000..add9335
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ2.png
Binary files differ
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ3.json b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ3.json
new file mode 100644
index 0000000..c4a5557
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ3.json
@@ -0,0 +1 @@
+{"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ3.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ3.png b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ3.png
new file mode 100644
index 0000000..3475089
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ3.png
Binary files differ
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ4.json b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ4.json
new file mode 100644
index 0000000..eecf2ca
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ4.json
@@ -0,0 +1 @@
+{"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ4.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ4.png b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ4.png
new file mode 100644
index 0000000..3c21cda
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ4.png
Binary files differ
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ5.json b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ5.json
new file mode 100644
index 0000000..4a69eb5
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ5.json
@@ -0,0 +1 @@
+{"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ5.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Filter3Meter(85x90)HRZ5.png b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ5.png
new file mode 100644
index 0000000..71f3163
--- /dev/null
+++ b/site/controls/Timb&HY_Filter3Meter(85x90)HRZ5.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishX.json b/site/controls/Timb&HY_ModernishX.json
new file mode 100644
index 0000000..34e52d8
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishX.png b/site/controls/Timb&HY_ModernishX.png
new file mode 100644
index 0000000..9db03b3
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishX2.json b/site/controls/Timb&HY_ModernishX2.json
new file mode 100644
index 0000000..f55deb9
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishX2.png b/site/controls/Timb&HY_ModernishX2.png
new file mode 100644
index 0000000..ec24d77
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishX2b.json b/site/controls/Timb&HY_ModernishX2b.json
new file mode 100644
index 0000000..dd8673a
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2b.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishX2b.png b/site/controls/Timb&HY_ModernishX2b.png
new file mode 100644
index 0000000..1b34072
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2b.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishX2c.json b/site/controls/Timb&HY_ModernishX2c.json
new file mode 100644
index 0000000..fef29b5
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2c.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishX2c.png b/site/controls/Timb&HY_ModernishX2c.png
new file mode 100644
index 0000000..54a9cbc
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2c.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishX2d.json b/site/controls/Timb&HY_ModernishX2d.json
new file mode 100644
index 0000000..cbac353
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2d.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishX2d.png b/site/controls/Timb&HY_ModernishX2d.png
new file mode 100644
index 0000000..91aceab
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2d.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishX2e.json b/site/controls/Timb&HY_ModernishX2e.json
new file mode 100644
index 0000000..0b3912b
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2e.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2e.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishX2e.png b/site/controls/Timb&HY_ModernishX2e.png
new file mode 100644
index 0000000..5053f48
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2e.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishX2e2.json b/site/controls/Timb&HY_ModernishX2e2.json
new file mode 100644
index 0000000..ae273f5
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2e2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 24, "ctltype": 4, "fn": "Timb&HY_ModernishX2e2.png", "cellw": 36} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishX2e2.png b/site/controls/Timb&HY_ModernishX2e2.png
new file mode 100644
index 0000000..a5dedaf
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2e2.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishX2f.json b/site/controls/Timb&HY_ModernishX2f.json
new file mode 100644
index 0000000..ae72403
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2f.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2f.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishX2f.png b/site/controls/Timb&HY_ModernishX2f.png
new file mode 100644
index 0000000..32e2555
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX2f.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishX3.json b/site/controls/Timb&HY_ModernishX3.json
new file mode 100644
index 0000000..74d1b23
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX3.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX3.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishX3.png b/site/controls/Timb&HY_ModernishX3.png
new file mode 100644
index 0000000..f41ec89
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishX3.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishXb.json b/site/controls/Timb&HY_ModernishXb.json
new file mode 100644
index 0000000..81f8c36
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXb.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXb.png", "cellw": 256} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishXb.png b/site/controls/Timb&HY_ModernishXb.png
new file mode 100644
index 0000000..de79a11
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXb.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishXb2.json b/site/controls/Timb&HY_ModernishXb2.json
new file mode 100644
index 0000000..368cbe8
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXb2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXb2.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishXb2.png b/site/controls/Timb&HY_ModernishXb2.png
new file mode 100644
index 0000000..0e42824
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXb2.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishXb3.json b/site/controls/Timb&HY_ModernishXb3.json
new file mode 100644
index 0000000..7bf1c1e
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXb3.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXb3.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishXb3.png b/site/controls/Timb&HY_ModernishXb3.png
new file mode 100644
index 0000000..45c4040
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXb3.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishXb4.json b/site/controls/Timb&HY_ModernishXb4.json
new file mode 100644
index 0000000..a029887
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXb4.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishXb4.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishXb4.png b/site/controls/Timb&HY_ModernishXb4.png
new file mode 100644
index 0000000..dc252f5
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXb4.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishXc.json b/site/controls/Timb&HY_ModernishXc.json
new file mode 100644
index 0000000..31eb5c9
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXc.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishXc.png", "cellw": 256} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishXc.png b/site/controls/Timb&HY_ModernishXc.png
new file mode 100644
index 0000000..9d447b2
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXc.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishXd.json b/site/controls/Timb&HY_ModernishXd.json
new file mode 100644
index 0000000..3cab956
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXd.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXd.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishXd.png b/site/controls/Timb&HY_ModernishXd.png
new file mode 100644
index 0000000..7376f13
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXd.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishXe.json b/site/controls/Timb&HY_ModernishXe.json
new file mode 100644
index 0000000..3be0b1e
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXe.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishXe.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishXe.png b/site/controls/Timb&HY_ModernishXe.png
new file mode 100644
index 0000000..8a842e2
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXe.png
Binary files differ
diff --git a/site/controls/Timb&HY_ModernishXe2.json b/site/controls/Timb&HY_ModernishXe2.json
new file mode 100644
index 0000000..eed805b
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXe2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXe2.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_ModernishXe2.png b/site/controls/Timb&HY_ModernishXe2.png
new file mode 100644
index 0000000..c1db701
--- /dev/null
+++ b/site/controls/Timb&HY_ModernishXe2.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1.json b/site/controls/Timb&HY_Seq16x3v2_KNOB1.json
new file mode 100644
index 0000000..56b58fa
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1.png b/site/controls/Timb&HY_Seq16x3v2_KNOB1.png
new file mode 100644
index 0000000..c15db26
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX.json b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX.json
new file mode 100644
index 0000000..ba80cf3
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX.png b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX.png
new file mode 100644
index 0000000..8e3fbfe
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2.json b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2.json
new file mode 100644
index 0000000..afa1b90
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX2.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2.png b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2.png
new file mode 100644
index 0000000..71d987c
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2b.json b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2b.json
new file mode 100644
index 0000000..d13ffce
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2b.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX2b.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2b.png b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2b.png
new file mode 100644
index 0000000..a7ee986
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX2b.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX3.json b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX3.json
new file mode 100644
index 0000000..bf236ec
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX3.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX3.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX3.png b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX3.png
new file mode 100644
index 0000000..7caf86a
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX3.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX4.json b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX4.json
new file mode 100644
index 0000000..b9385dc
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX4.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX4.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX4.png b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX4.png
new file mode 100644
index 0000000..b9d37ac
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX4.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX5.json b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX5.json
new file mode 100644
index 0000000..b50c6f3
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX5.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX5.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FX5.png b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX5.png
new file mode 100644
index 0000000..1badb01
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FX5.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FXpo.json b/site/controls/Timb&HY_Seq16x3v2_KNOB1FXpo.json
new file mode 100644
index 0000000..2e44086
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FXpo.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FXpo.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB1FXpo.png b/site/controls/Timb&HY_Seq16x3v2_KNOB1FXpo.png
new file mode 100644
index 0000000..475d643
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB1FXpo.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB2.json b/site/controls/Timb&HY_Seq16x3v2_KNOB2.json
new file mode 100644
index 0000000..5f21c90
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB2.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB2.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB2.png b/site/controls/Timb&HY_Seq16x3v2_KNOB2.png
new file mode 100644
index 0000000..6f2d5b2
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB2.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB3.json b/site/controls/Timb&HY_Seq16x3v2_KNOB3.json
new file mode 100644
index 0000000..d1a676e
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB3.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB3.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB3.png b/site/controls/Timb&HY_Seq16x3v2_KNOB3.png
new file mode 100644
index 0000000..270e74b
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB3.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB4.json b/site/controls/Timb&HY_Seq16x3v2_KNOB4.json
new file mode 100644
index 0000000..8d474e4
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB4.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB4.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOB4.png b/site/controls/Timb&HY_Seq16x3v2_KNOB4.png
new file mode 100644
index 0000000..7e62a12
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOB4.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOBbipo1.json b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo1.json
new file mode 100644
index 0000000..40e39cf
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo1.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOBbipo1.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOBbipo1.png b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo1.png
new file mode 100644
index 0000000..90cf462
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo1.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOBbipo2.json b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo2.json
new file mode 100644
index 0000000..22efeba
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo2.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOBbipo2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOBbipo2.png b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo2.png
new file mode 100644
index 0000000..08c23f6
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo2.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOBbipo3.json b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo3.json
new file mode 100644
index 0000000..11ebfd3
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo3.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOBbipo3.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOBbipo3.png b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo3.png
new file mode 100644
index 0000000..a12cf7f
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo3.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOBbipo4.json b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo4.json
new file mode 100644
index 0000000..d410051
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo4.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOBbipo4.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_KNOBbipo4.png b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo4.png
new file mode 100644
index 0000000..ca61c4f
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_KNOBbipo4.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-1.json b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-1.json
new file mode 100644
index 0000000..525b86b
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-1.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 1, "fn": "Timb&HY_Seq16x3v2_SLIDER_16x64-1.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-1.png b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-1.png
new file mode 100644
index 0000000..61c0fbb
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-1.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-2.json b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-2.json
new file mode 100644
index 0000000..13ebcaa
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-2.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 1, "fn": "Timb&HY_Seq16x3v2_SLIDER_16x64-2.png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-2.png b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-2.png
new file mode 100644
index 0000000..9be8ab2
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-2.png
Binary files differ
diff --git a/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-3.json b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-3.json
new file mode 100644
index 0000000..d08a1eb
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-3.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 1, "fn": "Timb&HY_Seq16x3v2_SLIDER_16x64-3.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-3.png b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-3.png
new file mode 100644
index 0000000..4febe77
--- /dev/null
+++ b/site/controls/Timb&HY_Seq16x3v2_SLIDER_16x64-3.png
Binary files differ
diff --git a/site/controls/Timb&HY_mozole-1_(64x130).json b/site/controls/Timb&HY_mozole-1_(64x130).json
new file mode 100644
index 0000000..65f0a53
--- /dev/null
+++ b/site/controls/Timb&HY_mozole-1_(64x130).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_mozole-1_(64x130).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&HY_mozole-1_(64x130).png b/site/controls/Timb&HY_mozole-1_(64x130).png
new file mode 100644
index 0000000..086de92
--- /dev/null
+++ b/site/controls/Timb&HY_mozole-1_(64x130).png
Binary files differ
diff --git a/site/controls/Timb&HY_mozole-2_(64x130).json b/site/controls/Timb&HY_mozole-2_(64x130).json
new file mode 100644
index 0000000..ad57d4a
--- /dev/null
+++ b/site/controls/Timb&HY_mozole-2_(64x130).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_mozole-2_(64x130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&HY_mozole-2_(64x130).png b/site/controls/Timb&HY_mozole-2_(64x130).png
new file mode 100644
index 0000000..760b7d6
--- /dev/null
+++ b/site/controls/Timb&HY_mozole-2_(64x130).png
Binary files differ
diff --git a/site/controls/Timb&KHZ_Slider_(321x70-130fr).json b/site/controls/Timb&KHZ_Slider_(321x70-130fr).json
new file mode 100644
index 0000000..d22db8d
--- /dev/null
+++ b/site/controls/Timb&KHZ_Slider_(321x70-130fr).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 321, "ctltype": 1, "fn": "Timb&KHZ_Slider_(321x70-130fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb&KHZ_Slider_(321x70-130fr).png b/site/controls/Timb&KHZ_Slider_(321x70-130fr).png
new file mode 100644
index 0000000..c19d1b4
--- /dev/null
+++ b/site/controls/Timb&KHZ_Slider_(321x70-130fr).png
Binary files differ
diff --git a/site/controls/Timb&KM_knob_70_black-96128.json b/site/controls/Timb&KM_knob_70_black-96128.json
new file mode 100644
index 0000000..7702ea8
--- /dev/null
+++ b/site/controls/Timb&KM_knob_70_black-96128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb&KM_knob_70_black-96128.png"} \ No newline at end of file
diff --git a/site/controls/Timb&KM_knob_70_black-96128.png b/site/controls/Timb&KM_knob_70_black-96128.png
new file mode 100644
index 0000000..14b76f1
--- /dev/null
+++ b/site/controls/Timb&KM_knob_70_black-96128.png
Binary files differ
diff --git a/site/controls/Timb&KM_plastic_knob-96128.json b/site/controls/Timb&KM_plastic_knob-96128.json
new file mode 100644
index 0000000..b1fb542
--- /dev/null
+++ b/site/controls/Timb&KM_plastic_knob-96128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb&KM_plastic_knob-96128.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb&KM_plastic_knob-96128.png b/site/controls/Timb&KM_plastic_knob-96128.png
new file mode 100644
index 0000000..4c8b75b
--- /dev/null
+++ b/site/controls/Timb&KM_plastic_knob-96128.png
Binary files differ
diff --git a/site/controls/Timb&KM_plastic_knobarr-96128.json b/site/controls/Timb&KM_plastic_knobarr-96128.json
new file mode 100644
index 0000000..155857f
--- /dev/null
+++ b/site/controls/Timb&KM_plastic_knobarr-96128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb&KM_plastic_knobarr-96128.png"} \ No newline at end of file
diff --git a/site/controls/Timb&KM_plastic_knobarr-96128.png b/site/controls/Timb&KM_plastic_knobarr-96128.png
new file mode 100644
index 0000000..3feb3be
--- /dev/null
+++ b/site/controls/Timb&KM_plastic_knobarr-96128.png
Binary files differ
diff --git a/site/controls/Timb&KM_plastic_knoblitt-96128.json b/site/controls/Timb&KM_plastic_knoblitt-96128.json
new file mode 100644
index 0000000..db4295c
--- /dev/null
+++ b/site/controls/Timb&KM_plastic_knoblitt-96128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb&KM_plastic_knoblitt-96128.png"} \ No newline at end of file
diff --git a/site/controls/Timb&KM_plastic_knoblitt-96128.png b/site/controls/Timb&KM_plastic_knoblitt-96128.png
new file mode 100644
index 0000000..3363b24
--- /dev/null
+++ b/site/controls/Timb&KM_plastic_knoblitt-96128.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_1176_(64129).json b/site/controls/Timb&kmGallery_1176_(64129).json
new file mode 100644
index 0000000..53c686e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_1176_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_1176_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_1176_(64129).png b/site/controls/Timb&kmGallery_1176_(64129).png
new file mode 100644
index 0000000..e2f6979
--- /dev/null
+++ b/site/controls/Timb&kmGallery_1176_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_1_(64129).json b/site/controls/Timb&kmGallery_1_(64129).json
new file mode 100644
index 0000000..70b4792
--- /dev/null
+++ b/site/controls/Timb&kmGallery_1_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_1_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_1_(64129).png b/site/controls/Timb&kmGallery_1_(64129).png
new file mode 100644
index 0000000..d0ae38f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_1_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_3ModernElegant_(64129).json b/site/controls/Timb&kmGallery_3ModernElegant_(64129).json
new file mode 100644
index 0000000..171317c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_3ModernElegant_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_3ModernElegant_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_3ModernElegant_(64129).png b/site/controls/Timb&kmGallery_3ModernElegant_(64129).png
new file mode 100644
index 0000000..f48ddd8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_3ModernElegant_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_4ModernChromy_(64129).json b/site/controls/Timb&kmGallery_4ModernChromy_(64129).json
new file mode 100644
index 0000000..09bd7b9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_4ModernChromy_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_4ModernChromy_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_4ModernChromy_(64129).png b/site/controls/Timb&kmGallery_4ModernChromy_(64129).png
new file mode 100644
index 0000000..e60bdb4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_4ModernChromy_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ABS_(64129).json b/site/controls/Timb&kmGallery_ABS_(64129).json
new file mode 100644
index 0000000..3574f17
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ABS_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ABS_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ABS_(64129).png b/site/controls/Timb&kmGallery_ABS_(64129).png
new file mode 100644
index 0000000..6253f30
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ABS_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Abletunes_(64129).json b/site/controls/Timb&kmGallery_Abletunes_(64129).json
new file mode 100644
index 0000000..1dbc09a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Abletunes_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Abletunes_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Abletunes_(64129).png b/site/controls/Timb&kmGallery_Abletunes_(64129).png
new file mode 100644
index 0000000..d2e5d49
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Abletunes_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Aero_(64129).json b/site/controls/Timb&kmGallery_Aero_(64129).json
new file mode 100644
index 0000000..7ce6816
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Aero_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Aero_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Aero_(64129).png b/site/controls/Timb&kmGallery_Aero_(64129).png
new file mode 100644
index 0000000..29ea88f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Aero_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Amount_(64129).json b/site/controls/Timb&kmGallery_Amount_(64129).json
new file mode 100644
index 0000000..0f6b8b9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Amount_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Amount_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Amount_(64129).png b/site/controls/Timb&kmGallery_Amount_(64129).png
new file mode 100644
index 0000000..5007ffa
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Amount_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Behringer-BCF2000_(64129).json b/site/controls/Timb&kmGallery_Behringer-BCF2000_(64129).json
new file mode 100644
index 0000000..96b7159
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Behringer-BCF2000_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Behringer-BCF2000_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Behringer-BCF2000_(64129).png b/site/controls/Timb&kmGallery_Behringer-BCF2000_(64129).png
new file mode 100644
index 0000000..8dde840
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Behringer-BCF2000_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_BlackAngle_(64129).json b/site/controls/Timb&kmGallery_BlackAngle_(64129).json
new file mode 100644
index 0000000..a9154cd
--- /dev/null
+++ b/site/controls/Timb&kmGallery_BlackAngle_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_BlackAngle_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_BlackAngle_(64129).png b/site/controls/Timb&kmGallery_BlackAngle_(64129).png
new file mode 100644
index 0000000..18f461f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_BlackAngle_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_BlackPlasticsmall 01_(64129).json b/site/controls/Timb&kmGallery_BlackPlasticsmall 01_(64129).json
new file mode 100644
index 0000000..4eea606
--- /dev/null
+++ b/site/controls/Timb&kmGallery_BlackPlasticsmall 01_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_BlackPlasticsmall 01_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_BlackPlasticsmall 01_(64129).png b/site/controls/Timb&kmGallery_BlackPlasticsmall 01_(64129).png
new file mode 100644
index 0000000..2af773a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_BlackPlasticsmall 01_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_BrushedDial_(64129).json b/site/controls/Timb&kmGallery_BrushedDial_(64129).json
new file mode 100644
index 0000000..8913a7b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_BrushedDial_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_BrushedDial_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_BrushedDial_(64129).png b/site/controls/Timb&kmGallery_BrushedDial_(64129).png
new file mode 100644
index 0000000..693a3f2
--- /dev/null
+++ b/site/controls/Timb&kmGallery_BrushedDial_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Cookie_(64129).json b/site/controls/Timb&kmGallery_Cookie_(64129).json
new file mode 100644
index 0000000..c02164c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Cookie_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Cookie_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Cookie_(64129).png b/site/controls/Timb&kmGallery_Cookie_(64129).png
new file mode 100644
index 0000000..9fc9f18
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Cookie_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Credence_bipo_(64129).json b/site/controls/Timb&kmGallery_Credence_bipo_(64129).json
new file mode 100644
index 0000000..36c8f79
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Credence_bipo_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Credence_bipo_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Credence_bipo_(64129).png b/site/controls/Timb&kmGallery_Credence_bipo_(64129).png
new file mode 100644
index 0000000..bacc884
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Credence_bipo_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Credence_bipo_(64129)blo.json b/site/controls/Timb&kmGallery_Credence_bipo_(64129)blo.json
new file mode 100644
index 0000000..4cfbea9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Credence_bipo_(64129)blo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Credence_bipo_(64129)blo.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Credence_bipo_(64129)blo.png b/site/controls/Timb&kmGallery_Credence_bipo_(64129)blo.png
new file mode 100644
index 0000000..5b30151
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Credence_bipo_(64129)blo.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Credence_bipo_(64129)red.json b/site/controls/Timb&kmGallery_Credence_bipo_(64129)red.json
new file mode 100644
index 0000000..c77cf26
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Credence_bipo_(64129)red.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Credence_bipo_(64129)red.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Credence_bipo_(64129)red.png b/site/controls/Timb&kmGallery_Credence_bipo_(64129)red.png
new file mode 100644
index 0000000..65fc536
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Credence_bipo_(64129)red.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Credence_po_(64129).json b/site/controls/Timb&kmGallery_Credence_po_(64129).json
new file mode 100644
index 0000000..7834f9c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Credence_po_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Credence_po_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Credence_po_(64129).png b/site/controls/Timb&kmGallery_Credence_po_(64129).png
new file mode 100644
index 0000000..060e2ed
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Credence_po_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Crelay_bipo_(64129).json b/site/controls/Timb&kmGallery_Crelay_bipo_(64129).json
new file mode 100644
index 0000000..3dcd024
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Crelay_bipo_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Crelay_bipo_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Crelay_bipo_(64129).png b/site/controls/Timb&kmGallery_Crelay_bipo_(64129).png
new file mode 100644
index 0000000..61482a7
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Crelay_bipo_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Crelay_po_(64129).json b/site/controls/Timb&kmGallery_Crelay_po_(64129).json
new file mode 100644
index 0000000..137dff8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Crelay_po_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Crelay_po_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Crelay_po_(64129).png b/site/controls/Timb&kmGallery_Crelay_po_(64129).png
new file mode 100644
index 0000000..764f7e8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Crelay_po_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Curvature_005_(64129).json b/site/controls/Timb&kmGallery_Curvature_005_(64129).json
new file mode 100644
index 0000000..105ae0a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Curvature_005_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Curvature_005_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Curvature_005_(64129).png b/site/controls/Timb&kmGallery_Curvature_005_(64129).png
new file mode 100644
index 0000000..126f01d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Curvature_005_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Cut-Off_(64129).json b/site/controls/Timb&kmGallery_Cut-Off_(64129).json
new file mode 100644
index 0000000..707d068
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Cut-Off_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Cut-Off_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Cut-Off_(64129).png b/site/controls/Timb&kmGallery_Cut-Off_(64129).png
new file mode 100644
index 0000000..e338a5a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Cut-Off_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_DARKMAN_(64129).json b/site/controls/Timb&kmGallery_DARKMAN_(64129).json
new file mode 100644
index 0000000..0376b2b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_DARKMAN_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_DARKMAN_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_DARKMAN_(64129).png b/site/controls/Timb&kmGallery_DARKMAN_(64129).png
new file mode 100644
index 0000000..caa26fb
--- /dev/null
+++ b/site/controls/Timb&kmGallery_DARKMAN_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Drive_006_(64129).json b/site/controls/Timb&kmGallery_Drive_006_(64129).json
new file mode 100644
index 0000000..197f114
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Drive_006_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Drive_006_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Drive_006_(64129).png b/site/controls/Timb&kmGallery_Drive_006_(64129).png
new file mode 100644
index 0000000..ebe6b43
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Drive_006_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Dust Knob2_(64129).json b/site/controls/Timb&kmGallery_Dust Knob2_(64129).json
new file mode 100644
index 0000000..0b06c3d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Dust Knob2_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Dust Knob2_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Dust Knob2_(64129).png b/site/controls/Timb&kmGallery_Dust Knob2_(64129).png
new file mode 100644
index 0000000..277c72f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Dust Knob2_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Error 418_(64129).json b/site/controls/Timb&kmGallery_Error 418_(64129).json
new file mode 100644
index 0000000..a7dcb7a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Error 418_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Error 418_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Error 418_(64129).png b/site/controls/Timb&kmGallery_Error 418_(64129).png
new file mode 100644
index 0000000..019bf53
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Error 418_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_GREENATTACKKNOB_(64129).json b/site/controls/Timb&kmGallery_GREENATTACKKNOB_(64129).json
new file mode 100644
index 0000000..4b890a7
--- /dev/null
+++ b/site/controls/Timb&kmGallery_GREENATTACKKNOB_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_GREENATTACKKNOB_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_GREENATTACKKNOB_(64129).png b/site/controls/Timb&kmGallery_GREENATTACKKNOB_(64129).png
new file mode 100644
index 0000000..7ce1edc
--- /dev/null
+++ b/site/controls/Timb&kmGallery_GREENATTACKKNOB_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Gauss3shadows_(64129).json b/site/controls/Timb&kmGallery_Gauss3shadows_(64129).json
new file mode 100644
index 0000000..db48545
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Gauss3shadows_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Gauss3shadows_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Gauss3shadows_(64129).png b/site/controls/Timb&kmGallery_Gauss3shadows_(64129).png
new file mode 100644
index 0000000..005fc32
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Gauss3shadows_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Glow Knob_(64129).json b/site/controls/Timb&kmGallery_Glow Knob_(64129).json
new file mode 100644
index 0000000..db7efce
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Glow Knob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Glow Knob_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Glow Knob_(64129).png b/site/controls/Timb&kmGallery_Glow Knob_(64129).png
new file mode 100644
index 0000000..26af01c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Glow Knob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Half Punk-bi_(64129).json b/site/controls/Timb&kmGallery_Half Punk-bi_(64129).json
new file mode 100644
index 0000000..181e499
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Half Punk-bi_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Half Punk-bi_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Half Punk-bi_(64129).png b/site/controls/Timb&kmGallery_Half Punk-bi_(64129).png
new file mode 100644
index 0000000..4f8f49f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Half Punk-bi_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Half Punk-uni_(64129).json b/site/controls/Timb&kmGallery_Half Punk-uni_(64129).json
new file mode 100644
index 0000000..19af77c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Half Punk-uni_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Half Punk-uni_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Half Punk-uni_(64129).png b/site/controls/Timb&kmGallery_Half Punk-uni_(64129).png
new file mode 100644
index 0000000..7c36201
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Half Punk-uni_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Hippy 1_(64129).json b/site/controls/Timb&kmGallery_Hippy 1_(64129).json
new file mode 100644
index 0000000..9d6c37f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 1_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 1_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Hippy 1_(64129).png b/site/controls/Timb&kmGallery_Hippy 1_(64129).png
new file mode 100644
index 0000000..9a8baa9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 1_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Hippy 2_(64129).json b/site/controls/Timb&kmGallery_Hippy 2_(64129).json
new file mode 100644
index 0000000..8537494
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 2_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 2_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Hippy 2_(64129).png b/site/controls/Timb&kmGallery_Hippy 2_(64129).png
new file mode 100644
index 0000000..1d327ad
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 2_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Hippy 3_(64129).json b/site/controls/Timb&kmGallery_Hippy 3_(64129).json
new file mode 100644
index 0000000..eda3a74
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 3_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 3_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Hippy 3_(64129).png b/site/controls/Timb&kmGallery_Hippy 3_(64129).png
new file mode 100644
index 0000000..301b28a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 3_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Hippy 4_(64129).json b/site/controls/Timb&kmGallery_Hippy 4_(64129).json
new file mode 100644
index 0000000..7bdc547
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 4_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 4_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Hippy 4_(64129).png b/site/controls/Timb&kmGallery_Hippy 4_(64129).png
new file mode 100644
index 0000000..ec1328d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 4_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Hippy 5_(64129).json b/site/controls/Timb&kmGallery_Hippy 5_(64129).json
new file mode 100644
index 0000000..95e32c5
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 5_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 5_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Hippy 5_(64129).png b/site/controls/Timb&kmGallery_Hippy 5_(64129).png
new file mode 100644
index 0000000..61ec027
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 5_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Hippy 6_(64129).json b/site/controls/Timb&kmGallery_Hippy 6_(64129).json
new file mode 100644
index 0000000..80625b3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 6_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 6_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Hippy 6_(64129).png b/site/controls/Timb&kmGallery_Hippy 6_(64129).png
new file mode 100644
index 0000000..2404591
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Hippy 6_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Jambalaya_(64129).json b/site/controls/Timb&kmGallery_Jambalaya_(64129).json
new file mode 100644
index 0000000..4a63eb0
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Jambalaya_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Jambalaya_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Jambalaya_(64129).png b/site/controls/Timb&kmGallery_Jambalaya_(64129).png
new file mode 100644
index 0000000..8daf297
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Jambalaya_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_KNB gold_(64129).json b/site/controls/Timb&kmGallery_KNB gold_(64129).json
new file mode 100644
index 0000000..abd89cb
--- /dev/null
+++ b/site/controls/Timb&kmGallery_KNB gold_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_KNB gold_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_KNB gold_(64129).png b/site/controls/Timb&kmGallery_KNB gold_(64129).png
new file mode 100644
index 0000000..a5f132e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_KNB gold_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_KNB red_(64129).json b/site/controls/Timb&kmGallery_KNB red_(64129).json
new file mode 100644
index 0000000..60645d4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_KNB red_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_KNB red_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_KNB red_(64129).png b/site/controls/Timb&kmGallery_KNB red_(64129).png
new file mode 100644
index 0000000..8407f21
--- /dev/null
+++ b/site/controls/Timb&kmGallery_KNB red_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Knob18edt-1.json b/site/controls/Timb&kmGallery_Knob18edt-1.json
new file mode 100644
index 0000000..11ed447
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Knob18edt-1.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 128, "ctltype": 0, "fn": "Timb&kmGallery_Knob18edt-1.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Knob18edt-1.png b/site/controls/Timb&kmGallery_Knob18edt-1.png
new file mode 100644
index 0000000..60b987f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Knob18edt-1.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Knob23_(64129).json b/site/controls/Timb&kmGallery_Knob23_(64129).json
new file mode 100644
index 0000000..b44e74e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Knob23_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Knob23_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Knob23_(64129).png b/site/controls/Timb&kmGallery_Knob23_(64129).png
new file mode 100644
index 0000000..f38e09a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Knob23_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_LFO_(64129).json b/site/controls/Timb&kmGallery_LFO_(64129).json
new file mode 100644
index 0000000..c447705
--- /dev/null
+++ b/site/controls/Timb&kmGallery_LFO_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_LFO_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_LFO_(64129).png b/site/controls/Timb&kmGallery_LFO_(64129).png
new file mode 100644
index 0000000..fe17423
--- /dev/null
+++ b/site/controls/Timb&kmGallery_LFO_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_La-bas_009_(64129).json b/site/controls/Timb&kmGallery_La-bas_009_(64129).json
new file mode 100644
index 0000000..dafeab9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_La-bas_009_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_La-bas_009_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_La-bas_009_(64129).png b/site/controls/Timb&kmGallery_La-bas_009_(64129).png
new file mode 100644
index 0000000..6a94920
--- /dev/null
+++ b/site/controls/Timb&kmGallery_La-bas_009_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_MACHINEGUN SMALL2_(64129).json b/site/controls/Timb&kmGallery_MACHINEGUN SMALL2_(64129).json
new file mode 100644
index 0000000..d69c124
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MACHINEGUN SMALL2_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MACHINEGUN SMALL2_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_MACHINEGUN SMALL2_(64129).png b/site/controls/Timb&kmGallery_MACHINEGUN SMALL2_(64129).png
new file mode 100644
index 0000000..ca3f10e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MACHINEGUN SMALL2_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_MS2000_(48129).json b/site/controls/Timb&kmGallery_MS2000_(48129).json
new file mode 100644
index 0000000..4f8dc21
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MS2000_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_MS2000_(48129).png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_MS2000_(48129).png b/site/controls/Timb&kmGallery_MS2000_(48129).png
new file mode 100644
index 0000000..ea1b724
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MS2000_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_MS2000_(64129).json b/site/controls/Timb&kmGallery_MS2000_(64129).json
new file mode 100644
index 0000000..0af5b4d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MS2000_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MS2000_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_MS2000_(64129).png b/site/controls/Timb&kmGallery_MS2000_(64129).png
new file mode 100644
index 0000000..63a9ee8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MS2000_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_MiniBrute_(48129).json b/site/controls/Timb&kmGallery_MiniBrute_(48129).json
new file mode 100644
index 0000000..d68fd40
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniBrute_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_MiniBrute_(48129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_MiniBrute_(48129).png b/site/controls/Timb&kmGallery_MiniBrute_(48129).png
new file mode 100644
index 0000000..87ba719
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniBrute_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_MiniBrute_(64129).json b/site/controls/Timb&kmGallery_MiniBrute_(64129).json
new file mode 100644
index 0000000..55199bb
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniBrute_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MiniBrute_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_MiniBrute_(64129).png b/site/controls/Timb&kmGallery_MiniBrute_(64129).png
new file mode 100644
index 0000000..271aea5
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniBrute_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_MiniMoogFreq_(64129).json b/site/controls/Timb&kmGallery_MiniMoogFreq_(64129).json
new file mode 100644
index 0000000..737a79b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniMoogFreq_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MiniMoogFreq_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_MiniMoogFreq_(64129).png b/site/controls/Timb&kmGallery_MiniMoogFreq_(64129).png
new file mode 100644
index 0000000..c39638b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniMoogFreq_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_MiniMoogMain_(64129).json b/site/controls/Timb&kmGallery_MiniMoogMain_(64129).json
new file mode 100644
index 0000000..8d452e9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniMoogMain_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MiniMoogMain_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_MiniMoogMain_(64129).png b/site/controls/Timb&kmGallery_MiniMoogMain_(64129).png
new file mode 100644
index 0000000..4e16f62
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniMoogMain_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_MiniMoogSelc_(64129).json b/site/controls/Timb&kmGallery_MiniMoogSelc_(64129).json
new file mode 100644
index 0000000..edf03ec
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniMoogSelc_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MiniMoogSelc_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_MiniMoogSelc_(64129).png b/site/controls/Timb&kmGallery_MiniMoogSelc_(64129).png
new file mode 100644
index 0000000..3e6c134
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MiniMoogSelc_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Minimal_Modern_(64129).json b/site/controls/Timb&kmGallery_Minimal_Modern_(64129).json
new file mode 100644
index 0000000..bd36e24
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Minimal_Modern_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Minimal_Modern_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Minimal_Modern_(64129).png b/site/controls/Timb&kmGallery_Minimal_Modern_(64129).png
new file mode 100644
index 0000000..617d725
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Minimal_Modern_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Modern_(64129).json b/site/controls/Timb&kmGallery_Modern_(64129).json
new file mode 100644
index 0000000..91c738d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Modern_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Modern_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Modern_(64129).png b/site/controls/Timb&kmGallery_Modern_(64129).png
new file mode 100644
index 0000000..f299404
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Modern_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_MultiKnob-edt_(64129).json b/site/controls/Timb&kmGallery_MultiKnob-edt_(64129).json
new file mode 100644
index 0000000..853befb
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MultiKnob-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MultiKnob-edt_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_MultiKnob-edt_(64129).png b/site/controls/Timb&kmGallery_MultiKnob-edt_(64129).png
new file mode 100644
index 0000000..9e3da15
--- /dev/null
+++ b/site/controls/Timb&kmGallery_MultiKnob-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Neve Red Knob_(64129).json b/site/controls/Timb&kmGallery_Neve Red Knob_(64129).json
new file mode 100644
index 0000000..a9bea6e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Neve Red Knob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Neve Red Knob_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Neve Red Knob_(64129).png b/site/controls/Timb&kmGallery_Neve Red Knob_(64129).png
new file mode 100644
index 0000000..ce55ec4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Neve Red Knob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Noise-2018_(128129).json b/site/controls/Timb&kmGallery_Noise-2018_(128129).json
new file mode 100644
index 0000000..1dabb46
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Noise-2018_(128129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 128, "ctltype": 0, "fn": "Timb&kmGallery_Noise-2018_(128129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Noise-2018_(128129).png b/site/controls/Timb&kmGallery_Noise-2018_(128129).png
new file mode 100644
index 0000000..4149dc4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Noise-2018_(128129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Noise_(64129).json b/site/controls/Timb&kmGallery_Noise_(64129).json
new file mode 100644
index 0000000..003fc79
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Noise_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Noise_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Noise_(64129).png b/site/controls/Timb&kmGallery_Noise_(64129).png
new file mode 100644
index 0000000..7e27bae
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Noise_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Particles_(64129).json b/site/controls/Timb&kmGallery_Particles_(64129).json
new file mode 100644
index 0000000..6770ada
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Particles_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Particles_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Particles_(64129).png b/site/controls/Timb&kmGallery_Particles_(64129).png
new file mode 100644
index 0000000..476165e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Particles_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Predence_012-edt_010_(64129).json b/site/controls/Timb&kmGallery_Predence_012-edt_010_(64129).json
new file mode 100644
index 0000000..3f5a3e7
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Predence_012-edt_010_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Predence_012-edt_010_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Predence_012-edt_010_(64129).png b/site/controls/Timb&kmGallery_Predence_012-edt_010_(64129).png
new file mode 100644
index 0000000..6c2dcdb
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Predence_012-edt_010_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Prophet5-edt_(64129).json b/site/controls/Timb&kmGallery_Prophet5-edt_(64129).json
new file mode 100644
index 0000000..083112c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Prophet5-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Prophet5-edt_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Prophet5-edt_(64129).png b/site/controls/Timb&kmGallery_Prophet5-edt_(64129).png
new file mode 100644
index 0000000..f077d5b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Prophet5-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Punch_010_(64129).json b/site/controls/Timb&kmGallery_Punch_010_(64129).json
new file mode 100644
index 0000000..e4198a6
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Punch_010_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Punch_010_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Punch_010_(64129).png b/site/controls/Timb&kmGallery_Punch_010_(64129).png
new file mode 100644
index 0000000..057ca07
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Punch_010_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Punk_010_(64129).json b/site/controls/Timb&kmGallery_Punk_010_(64129).json
new file mode 100644
index 0000000..c5b3c29
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Punk_010_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Punk_010_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Punk_010_(64129).png b/site/controls/Timb&kmGallery_Punk_010_(64129).png
new file mode 100644
index 0000000..2f63168
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Punk_010_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_RedBrick_(64129).json b/site/controls/Timb&kmGallery_RedBrick_(64129).json
new file mode 100644
index 0000000..249bfa6
--- /dev/null
+++ b/site/controls/Timb&kmGallery_RedBrick_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_RedBrick_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_RedBrick_(64129).png b/site/controls/Timb&kmGallery_RedBrick_(64129).png
new file mode 100644
index 0000000..4a90b95
--- /dev/null
+++ b/site/controls/Timb&kmGallery_RedBrick_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Redgain_(64129).json b/site/controls/Timb&kmGallery_Redgain_(64129).json
new file mode 100644
index 0000000..5c01eae
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Redgain_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Redgain_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Redgain_(64129).png b/site/controls/Timb&kmGallery_Redgain_(64129).png
new file mode 100644
index 0000000..bbb4ef1
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Redgain_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Refection_013_(64129).json b/site/controls/Timb&kmGallery_Refection_013_(64129).json
new file mode 100644
index 0000000..541ce57
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Refection_013_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Refection_013_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Refection_013_(64129).png b/site/controls/Timb&kmGallery_Refection_013_(64129).png
new file mode 100644
index 0000000..be6cdda
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Refection_013_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Res_(64129).json b/site/controls/Timb&kmGallery_Res_(64129).json
new file mode 100644
index 0000000..501f3c1
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Res_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Res_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Res_(64129).png b/site/controls/Timb&kmGallery_Res_(64129).png
new file mode 100644
index 0000000..cf83b9c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Res_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Retro_Knob_(64129).json b/site/controls/Timb&kmGallery_Retro_Knob_(64129).json
new file mode 100644
index 0000000..0280f52
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Retro_Knob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Retro_Knob_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Retro_Knob_(64129).png b/site/controls/Timb&kmGallery_Retro_Knob_(64129).png
new file mode 100644
index 0000000..7687bc3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Retro_Knob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_SSL Red_(64129).json b/site/controls/Timb&kmGallery_SSL Red_(64129).json
new file mode 100644
index 0000000..bdde0c8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_SSL Red_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_SSL Red_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_SSL Red_(64129).png b/site/controls/Timb&kmGallery_SSL Red_(64129).png
new file mode 100644
index 0000000..993b31d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_SSL Red_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Saifan 2_(64129).json b/site/controls/Timb&kmGallery_Saifan 2_(64129).json
new file mode 100644
index 0000000..e5a07f4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Saifan 2_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Saifan 2_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Saifan 2_(64129).png b/site/controls/Timb&kmGallery_Saifan 2_(64129).png
new file mode 100644
index 0000000..baeceb9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Saifan 2_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Saifan 3_(64129).json b/site/controls/Timb&kmGallery_Saifan 3_(64129).json
new file mode 100644
index 0000000..e576815
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Saifan 3_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Saifan 3_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Saifan 3_(64129).png b/site/controls/Timb&kmGallery_Saifan 3_(64129).png
new file mode 100644
index 0000000..d47eade
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Saifan 3_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Saifan g_(64129).json b/site/controls/Timb&kmGallery_Saifan g_(64129).json
new file mode 100644
index 0000000..0af1924
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Saifan g_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Saifan g_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Saifan g_(64129).png b/site/controls/Timb&kmGallery_Saifan g_(64129).png
new file mode 100644
index 0000000..1fdd438
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Saifan g_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ScaleBlu_(64129).json b/site/controls/Timb&kmGallery_ScaleBlu_(64129).json
new file mode 100644
index 0000000..df64004
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ScaleBlu_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ScaleBlu_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ScaleBlu_(64129).png b/site/controls/Timb&kmGallery_ScaleBlu_(64129).png
new file mode 100644
index 0000000..4bfd970
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ScaleBlu_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ScaleRed_(64129).json b/site/controls/Timb&kmGallery_ScaleRed_(64129).json
new file mode 100644
index 0000000..18ed67e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ScaleRed_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ScaleRed_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ScaleRed_(64129).png b/site/controls/Timb&kmGallery_ScaleRed_(64129).png
new file mode 100644
index 0000000..5e55851
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ScaleRed_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).json b/site/controls/Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).json
new file mode 100644
index 0000000..234c5ea
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).png b/site/controls/Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).png
new file mode 100644
index 0000000..c493c2d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ShinyBlueKSP8UNI_(64129).json b/site/controls/Timb&kmGallery_ShinyBlueKSP8UNI_(64129).json
new file mode 100644
index 0000000..d4049bc
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyBlueKSP8UNI_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyBlueKSP8UNI_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ShinyBlueKSP8UNI_(64129).png b/site/controls/Timb&kmGallery_ShinyBlueKSP8UNI_(64129).png
new file mode 100644
index 0000000..ecfcef7
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyBlueKSP8UNI_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).json b/site/controls/Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).json
new file mode 100644
index 0000000..5ca4bcf
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).png b/site/controls/Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).png
new file mode 100644
index 0000000..abc75ac
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).json b/site/controls/Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).json
new file mode 100644
index 0000000..6166c6e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).png b/site/controls/Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).png
new file mode 100644
index 0000000..12e17d2
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ShinyRedKSP8BiPo_(64129).json b/site/controls/Timb&kmGallery_ShinyRedKSP8BiPo_(64129).json
new file mode 100644
index 0000000..1c837f6
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyRedKSP8BiPo_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyRedKSP8BiPo_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ShinyRedKSP8BiPo_(64129).png b/site/controls/Timb&kmGallery_ShinyRedKSP8BiPo_(64129).png
new file mode 100644
index 0000000..b8cb986
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyRedKSP8BiPo_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ShinyRedKSP8UNI_(64129).json b/site/controls/Timb&kmGallery_ShinyRedKSP8UNI_(64129).json
new file mode 100644
index 0000000..14d6a76
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyRedKSP8UNI_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyRedKSP8UNI_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ShinyRedKSP8UNI_(64129).png b/site/controls/Timb&kmGallery_ShinyRedKSP8UNI_(64129).png
new file mode 100644
index 0000000..ef0d9d1
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ShinyRedKSP8UNI_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_SimpleFlat4_(64129).json b/site/controls/Timb&kmGallery_SimpleFlat4_(64129).json
new file mode 100644
index 0000000..5765f96
--- /dev/null
+++ b/site/controls/Timb&kmGallery_SimpleFlat4_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_SimpleFlat4_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_SimpleFlat4_(64129).png b/site/controls/Timb&kmGallery_SimpleFlat4_(64129).png
new file mode 100644
index 0000000..d3b7f80
--- /dev/null
+++ b/site/controls/Timb&kmGallery_SimpleFlat4_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Slope_(64129).json b/site/controls/Timb&kmGallery_Slope_(64129).json
new file mode 100644
index 0000000..47663c8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Slope_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Slope_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Slope_(64129).png b/site/controls/Timb&kmGallery_Slope_(64129).png
new file mode 100644
index 0000000..c147940
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Slope_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_SmallKnob_(64129).json b/site/controls/Timb&kmGallery_SmallKnob_(64129).json
new file mode 100644
index 0000000..0b71ba4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_SmallKnob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_SmallKnob_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_SmallKnob_(64129).png b/site/controls/Timb&kmGallery_SmallKnob_(64129).png
new file mode 100644
index 0000000..7416eb2
--- /dev/null
+++ b/site/controls/Timb&kmGallery_SmallKnob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Sonatom_bipo_(64129).json b/site/controls/Timb&kmGallery_Sonatom_bipo_(64129).json
new file mode 100644
index 0000000..f534fb0
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Sonatom_bipo_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Sonatom_bipo_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Sonatom_bipo_(64129).png b/site/controls/Timb&kmGallery_Sonatom_bipo_(64129).png
new file mode 100644
index 0000000..9a125dd
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Sonatom_bipo_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Sonatom_gold_(64129).json b/site/controls/Timb&kmGallery_Sonatom_gold_(64129).json
new file mode 100644
index 0000000..77c4af4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Sonatom_gold_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Sonatom_gold_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Sonatom_gold_(64129).png b/site/controls/Timb&kmGallery_Sonatom_gold_(64129).png
new file mode 100644
index 0000000..213b3b9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Sonatom_gold_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Speedo-edt_(64129).json b/site/controls/Timb&kmGallery_Speedo-edt_(64129).json
new file mode 100644
index 0000000..5e8389a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Speedo-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Speedo-edt_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Speedo-edt_(64129).png b/site/controls/Timb&kmGallery_Speedo-edt_(64129).png
new file mode 100644
index 0000000..5573cfd
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Speedo-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Spine_023-edt_(64129).json b/site/controls/Timb&kmGallery_Spine_023-edt_(64129).json
new file mode 100644
index 0000000..b616ecc
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Spine_023-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Spine_023-edt_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Spine_023-edt_(64129).png b/site/controls/Timb&kmGallery_Spine_023-edt_(64129).png
new file mode 100644
index 0000000..e425d7f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Spine_023-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Stamp_003_bipo_(64129).json b/site/controls/Timb&kmGallery_Stamp_003_bipo_(64129).json
new file mode 100644
index 0000000..609983c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Stamp_003_bipo_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Stamp_003_bipo_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Stamp_003_bipo_(64129).png b/site/controls/Timb&kmGallery_Stamp_003_bipo_(64129).png
new file mode 100644
index 0000000..cb2b191
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Stamp_003_bipo_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Stamp_003_uni-edt_(64129).json b/site/controls/Timb&kmGallery_Stamp_003_uni-edt_(64129).json
new file mode 100644
index 0000000..725a5ba
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Stamp_003_uni-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Stamp_003_uni-edt_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Stamp_003_uni-edt_(64129).png b/site/controls/Timb&kmGallery_Stamp_003_uni-edt_(64129).png
new file mode 100644
index 0000000..c847241
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Stamp_003_uni-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Sustain_003-edt_(64129).json b/site/controls/Timb&kmGallery_Sustain_003-edt_(64129).json
new file mode 100644
index 0000000..19efee3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Sustain_003-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Sustain_003-edt_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Sustain_003-edt_(64129).png b/site/controls/Timb&kmGallery_Sustain_003-edt_(64129).png
new file mode 100644
index 0000000..c48c0c6
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Sustain_003-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Symmetry_(48129)b.json b/site/controls/Timb&kmGallery_Symmetry_(48129)b.json
new file mode 100644
index 0000000..97d564e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(48129)b.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(48129)b.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Symmetry_(48129)b.png b/site/controls/Timb&kmGallery_Symmetry_(48129)b.png
new file mode 100644
index 0000000..9eb91b1
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(48129)b.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129).json b/site/controls/Timb&kmGallery_Symmetry_(64129).json
new file mode 100644
index 0000000..5fb5304
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129).png b/site/controls/Timb&kmGallery_Symmetry_(64129).png
new file mode 100644
index 0000000..21e7b5c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b.json b/site/controls/Timb&kmGallery_Symmetry_(64129)b.json
new file mode 100644
index 0000000..fe7da95
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b.png b/site/controls/Timb&kmGallery_Symmetry_(64129)b.png
new file mode 100644
index 0000000..a4cc534
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars.json b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars.json
new file mode 100644
index 0000000..fec05de
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b4bars.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars.png b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars.png
new file mode 100644
index 0000000..1097767
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars2.json b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars2.json
new file mode 100644
index 0000000..70f10e3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars2.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b4bars2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars2.png b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars2.png
new file mode 100644
index 0000000..7717e4d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars2.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars3.json b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars3.json
new file mode 100644
index 0000000..05d3fc8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars3.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b4bars3.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars3.png b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars3.png
new file mode 100644
index 0000000..5189ee3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars3.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars4.json b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars4.json
new file mode 100644
index 0000000..f234da1
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars4.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 128, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b4bars4.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars4.png b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars4.png
new file mode 100644
index 0000000..2da9b3d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Symmetry_(64129)b4bars4.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_SynergyKnob_(64129).json b/site/controls/Timb&kmGallery_SynergyKnob_(64129).json
new file mode 100644
index 0000000..c332904
--- /dev/null
+++ b/site/controls/Timb&kmGallery_SynergyKnob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_SynergyKnob_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_SynergyKnob_(64129).png b/site/controls/Timb&kmGallery_SynergyKnob_(64129).png
new file mode 100644
index 0000000..40026ea
--- /dev/null
+++ b/site/controls/Timb&kmGallery_SynergyKnob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_TB303_(64129).json b/site/controls/Timb&kmGallery_TB303_(64129).json
new file mode 100644
index 0000000..041b5f5
--- /dev/null
+++ b/site/controls/Timb&kmGallery_TB303_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_TB303_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_TB303_(64129).png b/site/controls/Timb&kmGallery_TB303_(64129).png
new file mode 100644
index 0000000..c952962
--- /dev/null
+++ b/site/controls/Timb&kmGallery_TB303_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Toddler_(38129).json b/site/controls/Timb&kmGallery_Toddler_(38129).json
new file mode 100644
index 0000000..6d5d407
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Toddler_(38129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 38, "ctltype": 0, "fn": "Timb&kmGallery_Toddler_(38129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Toddler_(38129).png b/site/controls/Timb&kmGallery_Toddler_(38129).png
new file mode 100644
index 0000000..ec7dc37
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Toddler_(38129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Toddler_(48129).json b/site/controls/Timb&kmGallery_Toddler_(48129).json
new file mode 100644
index 0000000..9b5ff6c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Toddler_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_Toddler_(48129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Toddler_(48129).png b/site/controls/Timb&kmGallery_Toddler_(48129).png
new file mode 100644
index 0000000..cf7e324
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Toddler_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Toddler_(64129).json b/site/controls/Timb&kmGallery_Toddler_(64129).json
new file mode 100644
index 0000000..7255138
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Toddler_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Toddler_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Toddler_(64129).png b/site/controls/Timb&kmGallery_Toddler_(64129).png
new file mode 100644
index 0000000..1d2b0ae
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Toddler_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Tone_(64129).json b/site/controls/Timb&kmGallery_Tone_(64129).json
new file mode 100644
index 0000000..788d5fa
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Tone_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Tone_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Tone_(64129).png b/site/controls/Timb&kmGallery_Tone_(64129).png
new file mode 100644
index 0000000..ff3aa10
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Tone_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Turquoise_(48129).json b/site/controls/Timb&kmGallery_Turquoise_(48129).json
new file mode 100644
index 0000000..9ec7174
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Turquoise_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_Turquoise_(48129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Turquoise_(48129).png b/site/controls/Timb&kmGallery_Turquoise_(48129).png
new file mode 100644
index 0000000..26c575e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Turquoise_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Turquoise_(64129).json b/site/controls/Timb&kmGallery_Turquoise_(64129).json
new file mode 100644
index 0000000..6c2f5a3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Turquoise_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Turquoise_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Turquoise_(64129).png b/site/controls/Timb&kmGallery_Turquoise_(64129).png
new file mode 100644
index 0000000..2f0c093
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Turquoise_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Volume_(64129).json b/site/controls/Timb&kmGallery_Volume_(64129).json
new file mode 100644
index 0000000..aa9cf4d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Volume_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Volume_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Volume_(64129).png b/site/controls/Timb&kmGallery_Volume_(64129).png
new file mode 100644
index 0000000..b39a370
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Volume_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Wasteland 001_(64129).json b/site/controls/Timb&kmGallery_Wasteland 001_(64129).json
new file mode 100644
index 0000000..e4e9ec4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Wasteland 001_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Wasteland 001_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Wasteland 001_(64129).png b/site/controls/Timb&kmGallery_Wasteland 001_(64129).png
new file mode 100644
index 0000000..967dae1
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Wasteland 001_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Wasteland 002_(64129).json b/site/controls/Timb&kmGallery_Wasteland 002_(64129).json
new file mode 100644
index 0000000..1266fd2
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Wasteland 002_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Wasteland 002_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Wasteland 002_(64129).png b/site/controls/Timb&kmGallery_Wasteland 002_(64129).png
new file mode 100644
index 0000000..237712d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Wasteland 002_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Wasteland 006_(64129).json b/site/controls/Timb&kmGallery_Wasteland 006_(64129).json
new file mode 100644
index 0000000..9de5d00
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Wasteland 006_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Wasteland 006_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Wasteland 006_(64129).png b/site/controls/Timb&kmGallery_Wasteland 006_(64129).png
new file mode 100644
index 0000000..f6b26e3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Wasteland 006_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_Wayout_006-edt_(64129).json b/site/controls/Timb&kmGallery_Wayout_006-edt_(64129).json
new file mode 100644
index 0000000..0825553
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Wayout_006-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Wayout_006-edt_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_Wayout_006-edt_(64129).png b/site/controls/Timb&kmGallery_Wayout_006-edt_(64129).png
new file mode 100644
index 0000000..0092a20
--- /dev/null
+++ b/site/controls/Timb&kmGallery_Wayout_006-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_XV Knob med_(64129).json b/site/controls/Timb&kmGallery_XV Knob med_(64129).json
new file mode 100644
index 0000000..6bbb766
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XV Knob med_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_XV Knob med_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_XV Knob med_(64129).png b/site/controls/Timb&kmGallery_XV Knob med_(64129).png
new file mode 100644
index 0000000..f309565
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XV Knob med_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDT1_128x130fr.json b/site/controls/Timb&kmGallery_XVVFaderEDT1_128x130fr.json
new file mode 100644
index 0000000..ae5cda7
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDT1_128x130fr.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDT1_128x130fr.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDT1_128x130fr.png b/site/controls/Timb&kmGallery_XVVFaderEDT1_128x130fr.png
new file mode 100644
index 0000000..274319f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDT1_128x130fr.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDT2_128x130fr.json b/site/controls/Timb&kmGallery_XVVFaderEDT2_128x130fr.json
new file mode 100644
index 0000000..4d6daa2
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDT2_128x130fr.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDT2_128x130fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDT2_128x130fr.png b/site/controls/Timb&kmGallery_XVVFaderEDT2_128x130fr.png
new file mode 100644
index 0000000..68c69d7
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDT2_128x130fr.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDT3_128x130fr.json b/site/controls/Timb&kmGallery_XVVFaderEDT3_128x130fr.json
new file mode 100644
index 0000000..e563439
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDT3_128x130fr.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDT3_128x130fr.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDT3_128x130fr.png b/site/controls/Timb&kmGallery_XVVFaderEDT3_128x130fr.png
new file mode 100644
index 0000000..008f75b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDT3_128x130fr.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDT4_128x130fr.json b/site/controls/Timb&kmGallery_XVVFaderEDT4_128x130fr.json
new file mode 100644
index 0000000..d37f926
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDT4_128x130fr.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDT4_128x130fr.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDT4_128x130fr.png b/site/controls/Timb&kmGallery_XVVFaderEDT4_128x130fr.png
new file mode 100644
index 0000000..da9d96f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDT4_128x130fr.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDTB1_128x130fr.json b/site/controls/Timb&kmGallery_XVVFaderEDTB1_128x130fr.json
new file mode 100644
index 0000000..27e0d12
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDTB1_128x130fr.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDTB1_128x130fr.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDTB1_128x130fr.png b/site/controls/Timb&kmGallery_XVVFaderEDTB1_128x130fr.png
new file mode 100644
index 0000000..402c8f2
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDTB1_128x130fr.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDTB2_128x130fr.json b/site/controls/Timb&kmGallery_XVVFaderEDTB2_128x130fr.json
new file mode 100644
index 0000000..a20dd50
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDTB2_128x130fr.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDTB2_128x130fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDTB2_128x130fr.png b/site/controls/Timb&kmGallery_XVVFaderEDTB2_128x130fr.png
new file mode 100644
index 0000000..d7f60c8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDTB2_128x130fr.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDTB3_128x130fr.json b/site/controls/Timb&kmGallery_XVVFaderEDTB3_128x130fr.json
new file mode 100644
index 0000000..cfdfba5
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDTB3_128x130fr.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDTB3_128x130fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDTB3_128x130fr.png b/site/controls/Timb&kmGallery_XVVFaderEDTB3_128x130fr.png
new file mode 100644
index 0000000..454f793
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDTB3_128x130fr.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDTB4_128x130fr.json b/site/controls/Timb&kmGallery_XVVFaderEDTB4_128x130fr.json
new file mode 100644
index 0000000..cf2ca38
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDTB4_128x130fr.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDTB4_128x130fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_XVVFaderEDTB4_128x130fr.png b/site/controls/Timb&kmGallery_XVVFaderEDTB4_128x130fr.png
new file mode 100644
index 0000000..7d22ffb
--- /dev/null
+++ b/site/controls/Timb&kmGallery_XVVFaderEDTB4_128x130fr.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_color_knob (1)_(48129).json b/site/controls/Timb&kmGallery_color_knob (1)_(48129).json
new file mode 100644
index 0000000..3d68434
--- /dev/null
+++ b/site/controls/Timb&kmGallery_color_knob (1)_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_color_knob (1)_(48129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_color_knob (1)_(48129).png b/site/controls/Timb&kmGallery_color_knob (1)_(48129).png
new file mode 100644
index 0000000..711cc52
--- /dev/null
+++ b/site/controls/Timb&kmGallery_color_knob (1)_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_color_knob (1)_(64129).json b/site/controls/Timb&kmGallery_color_knob (1)_(64129).json
new file mode 100644
index 0000000..46aa786
--- /dev/null
+++ b/site/controls/Timb&kmGallery_color_knob (1)_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_color_knob (1)_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_color_knob (1)_(64129).png b/site/controls/Timb&kmGallery_color_knob (1)_(64129).png
new file mode 100644
index 0000000..90303c4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_color_knob (1)_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_cyan_light_knob_(64129).json b/site/controls/Timb&kmGallery_cyan_light_knob_(64129).json
new file mode 100644
index 0000000..f6ce53f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_cyan_light_knob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_cyan_light_knob_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_cyan_light_knob_(64129).png b/site/controls/Timb&kmGallery_cyan_light_knob_(64129).png
new file mode 100644
index 0000000..445ce4b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_cyan_light_knob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_flstudio-style_(64129).json b/site/controls/Timb&kmGallery_flstudio-style_(64129).json
new file mode 100644
index 0000000..18bd073
--- /dev/null
+++ b/site/controls/Timb&kmGallery_flstudio-style_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_flstudio-style_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_flstudio-style_(64129).png b/site/controls/Timb&kmGallery_flstudio-style_(64129).png
new file mode 100644
index 0000000..a8e15bc
--- /dev/null
+++ b/site/controls/Timb&kmGallery_flstudio-style_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_gg_(64129).json b/site/controls/Timb&kmGallery_gg_(64129).json
new file mode 100644
index 0000000..b3b50e8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_gg_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_gg_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_gg_(64129).png b/site/controls/Timb&kmGallery_gg_(64129).png
new file mode 100644
index 0000000..55ffbdd
--- /dev/null
+++ b/site/controls/Timb&kmGallery_gg_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_happyknob_3_(64129).json b/site/controls/Timb&kmGallery_happyknob_3_(64129).json
new file mode 100644
index 0000000..b62ea93
--- /dev/null
+++ b/site/controls/Timb&kmGallery_happyknob_3_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_happyknob_3_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_happyknob_3_(64129).png b/site/controls/Timb&kmGallery_happyknob_3_(64129).png
new file mode 100644
index 0000000..04e232a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_happyknob_3_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_iKnob_white-pobi_(48129).json b/site/controls/Timb&kmGallery_iKnob_white-pobi_(48129).json
new file mode 100644
index 0000000..4cd5cc2
--- /dev/null
+++ b/site/controls/Timb&kmGallery_iKnob_white-pobi_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_iKnob_white-pobi_(48129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_iKnob_white-pobi_(48129).png b/site/controls/Timb&kmGallery_iKnob_white-pobi_(48129).png
new file mode 100644
index 0000000..fdb8fb3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_iKnob_white-pobi_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_iKnob_white_(48129).json b/site/controls/Timb&kmGallery_iKnob_white_(48129).json
new file mode 100644
index 0000000..f51289f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_iKnob_white_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_iKnob_white_(48129).png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_iKnob_white_(48129).png b/site/controls/Timb&kmGallery_iKnob_white_(48129).png
new file mode 100644
index 0000000..f13a904
--- /dev/null
+++ b/site/controls/Timb&kmGallery_iKnob_white_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_iKnob_white_(64129).json b/site/controls/Timb&kmGallery_iKnob_white_(64129).json
new file mode 100644
index 0000000..b6b5975
--- /dev/null
+++ b/site/controls/Timb&kmGallery_iKnob_white_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_iKnob_white_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_iKnob_white_(64129).png b/site/controls/Timb&kmGallery_iKnob_white_(64129).png
new file mode 100644
index 0000000..1dd59f8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_iKnob_white_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_iKnob_white_(64129)inst.json b/site/controls/Timb&kmGallery_iKnob_white_(64129)inst.json
new file mode 100644
index 0000000..ab61779
--- /dev/null
+++ b/site/controls/Timb&kmGallery_iKnob_white_(64129)inst.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_iKnob_white_(64129)inst.png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_iKnob_white_(64129)inst.png b/site/controls/Timb&kmGallery_iKnob_white_(64129)inst.png
new file mode 100644
index 0000000..8b306c0
--- /dev/null
+++ b/site/controls/Timb&kmGallery_iKnob_white_(64129)inst.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_kjLEDknob-edt_(64129).json b/site/controls/Timb&kmGallery_kjLEDknob-edt_(64129).json
new file mode 100644
index 0000000..10dc22b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_kjLEDknob-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_kjLEDknob-edt_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_kjLEDknob-edt_(64129).png b/site/controls/Timb&kmGallery_kjLEDknob-edt_(64129).png
new file mode 100644
index 0000000..3f2c69c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_kjLEDknob-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knob_32_white_(64129).json b/site/controls/Timb&kmGallery_knob_32_white_(64129).json
new file mode 100644
index 0000000..e6cad42
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_32_white_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_32_white_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knob_32_white_(64129).png b/site/controls/Timb&kmGallery_knob_32_white_(64129).png
new file mode 100644
index 0000000..44d193f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_32_white_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knob_35_silver_(64129).json b/site/controls/Timb&kmGallery_knob_35_silver_(64129).json
new file mode 100644
index 0000000..c1eb560
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_35_silver_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_35_silver_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knob_35_silver_(64129).png b/site/controls/Timb&kmGallery_knob_35_silver_(64129).png
new file mode 100644
index 0000000..c92becb
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_35_silver_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knob_36_black_(64129).json b/site/controls/Timb&kmGallery_knob_36_black_(64129).json
new file mode 100644
index 0000000..a6df809
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_36_black_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_36_black_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knob_36_black_(64129).png b/site/controls/Timb&kmGallery_knob_36_black_(64129).png
new file mode 100644
index 0000000..7645267
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_36_black_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knob_42_silver_(64129).json b/site/controls/Timb&kmGallery_knob_42_silver_(64129).json
new file mode 100644
index 0000000..a4bbcdd
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_42_silver_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_42_silver_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knob_42_silver_(64129).png b/site/controls/Timb&kmGallery_knob_42_silver_(64129).png
new file mode 100644
index 0000000..68ea093
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_42_silver_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knob_52_silver_(64129).json b/site/controls/Timb&kmGallery_knob_52_silver_(64129).json
new file mode 100644
index 0000000..931707d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_52_silver_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_52_silver_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knob_52_silver_(64129).png b/site/controls/Timb&kmGallery_knob_52_silver_(64129).png
new file mode 100644
index 0000000..61021c8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_52_silver_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knob_64_white1_(64129).json b/site/controls/Timb&kmGallery_knob_64_white1_(64129).json
new file mode 100644
index 0000000..53589c6
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_64_white1_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_64_white1_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knob_64_white1_(64129).png b/site/controls/Timb&kmGallery_knob_64_white1_(64129).png
new file mode 100644
index 0000000..c3f1622
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_64_white1_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knob_66_black_(64129).json b/site/controls/Timb&kmGallery_knob_66_black_(64129).json
new file mode 100644
index 0000000..c5e1fc7
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_66_black_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_66_black_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knob_66_black_(64129).png b/site/controls/Timb&kmGallery_knob_66_black_(64129).png
new file mode 100644
index 0000000..cac175e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_66_black_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knob_70_black_(64129).json b/site/controls/Timb&kmGallery_knob_70_black_(64129).json
new file mode 100644
index 0000000..47a1dc0
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_70_black_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_70_black_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knob_70_black_(64129).png b/site/controls/Timb&kmGallery_knob_70_black_(64129).png
new file mode 100644
index 0000000..de0c0a5
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_70_black_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knob_vintage_black_(64129).json b/site/controls/Timb&kmGallery_knob_vintage_black_(64129).json
new file mode 100644
index 0000000..b1fdc7b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_vintage_black_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_vintage_black_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knob_vintage_black_(64129).png b/site/controls/Timb&kmGallery_knob_vintage_black_(64129).png
new file mode 100644
index 0000000..66ba256
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knob_vintage_black_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knobman-basic_(64129).json b/site/controls/Timb&kmGallery_knobman-basic_(64129).json
new file mode 100644
index 0000000..f06dc2b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-basic_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-basic_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knobman-basic_(64129).png b/site/controls/Timb&kmGallery_knobman-basic_(64129).png
new file mode 100644
index 0000000..488717a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-basic_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2_(64129).json b/site/controls/Timb&kmGallery_knobman-lumen2_(64129).json
new file mode 100644
index 0000000..747f579
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2_(64129).png b/site/controls/Timb&kmGallery_knobman-lumen2_(64129).png
new file mode 100644
index 0000000..23bf94e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2b_(64129).json b/site/controls/Timb&kmGallery_knobman-lumen2b_(64129).json
new file mode 100644
index 0000000..b5089af
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2b_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2b_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2b_(64129).png b/site/controls/Timb&kmGallery_knobman-lumen2b_(64129).png
new file mode 100644
index 0000000..b61cc88
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2b_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2c_(64129).json b/site/controls/Timb&kmGallery_knobman-lumen2c_(64129).json
new file mode 100644
index 0000000..0eb1cae
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2c_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2c_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2c_(64129).png b/site/controls/Timb&kmGallery_knobman-lumen2c_(64129).png
new file mode 100644
index 0000000..b0b1218
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2c_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2d_(64129).json b/site/controls/Timb&kmGallery_knobman-lumen2d_(64129).json
new file mode 100644
index 0000000..9d1d246
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2d_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2d_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2d_(64129).png b/site/controls/Timb&kmGallery_knobman-lumen2d_(64129).png
new file mode 100644
index 0000000..d05a550
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2d_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2e_(64129).json b/site/controls/Timb&kmGallery_knobman-lumen2e_(64129).json
new file mode 100644
index 0000000..dbac55b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2e_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2e_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knobman-lumen2e_(64129).png b/site/controls/Timb&kmGallery_knobman-lumen2e_(64129).png
new file mode 100644
index 0000000..906e2aa
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen2e_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_knobman-lumen_(64129).json b/site/controls/Timb&kmGallery_knobman-lumen_(64129).json
new file mode 100644
index 0000000..32ce755
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_knobman-lumen_(64129).png b/site/controls/Timb&kmGallery_knobman-lumen_(64129).png
new file mode 100644
index 0000000..a9054cd
--- /dev/null
+++ b/site/controls/Timb&kmGallery_knobman-lumen_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_lever knob_(64129).json b/site/controls/Timb&kmGallery_lever knob_(64129).json
new file mode 100644
index 0000000..4a6273b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_lever knob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_lever knob_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_lever knob_(64129).png b/site/controls/Timb&kmGallery_lever knob_(64129).png
new file mode 100644
index 0000000..d40c46b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_lever knob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_lightdial-edt_(64129).json b/site/controls/Timb&kmGallery_lightdial-edt_(64129).json
new file mode 100644
index 0000000..6a716dc
--- /dev/null
+++ b/site/controls/Timb&kmGallery_lightdial-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_lightdial-edt_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_lightdial-edt_(64129).png b/site/controls/Timb&kmGallery_lightdial-edt_(64129).png
new file mode 100644
index 0000000..3267b88
--- /dev/null
+++ b/site/controls/Timb&kmGallery_lightdial-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_lighting_blue_(64129).json b/site/controls/Timb&kmGallery_lighting_blue_(64129).json
new file mode 100644
index 0000000..40bc2f3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_lighting_blue_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_lighting_blue_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_lighting_blue_(64129).png b/site/controls/Timb&kmGallery_lighting_blue_(64129).png
new file mode 100644
index 0000000..a62cb04
--- /dev/null
+++ b/site/controls/Timb&kmGallery_lighting_blue_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_m400_(64129).json b/site/controls/Timb&kmGallery_m400_(64129).json
new file mode 100644
index 0000000..88d91d0
--- /dev/null
+++ b/site/controls/Timb&kmGallery_m400_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_m400_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_m400_(64129).png b/site/controls/Timb&kmGallery_m400_(64129).png
new file mode 100644
index 0000000..d64d0df
--- /dev/null
+++ b/site/controls/Timb&kmGallery_m400_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine-default-edit_(48129).json b/site/controls/Timb&kmGallery_maschine-default-edit_(48129).json
new file mode 100644
index 0000000..68be9f9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine-default-edit_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_maschine-default-edit_(48129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine-default-edit_(48129).png b/site/controls/Timb&kmGallery_maschine-default-edit_(48129).png
new file mode 100644
index 0000000..6c06c8d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine-default-edit_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine-default-edit_(64129).json b/site/controls/Timb&kmGallery_maschine-default-edit_(64129).json
new file mode 100644
index 0000000..14df756
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine-default-edit_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine-default-edit_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine-default-edit_(64129).png b/site/controls/Timb&kmGallery_maschine-default-edit_(64129).png
new file mode 100644
index 0000000..0a73a7e
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine-default-edit_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130).json b/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130).json
new file mode 100644
index 0000000..924988d
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditB_(64x130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130).png b/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130).png
new file mode 100644
index 0000000..fe53822
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130)2.json b/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130)2.json
new file mode 100644
index 0000000..8bf52c6
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130)2.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditB_(64x130)2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130)2.png b/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130)2.png
new file mode 100644
index 0000000..c6c9a7f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditB_(64x130)2.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130).json b/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130).json
new file mode 100644
index 0000000..dfed143
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditC_(64x130).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130).png b/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130).png
new file mode 100644
index 0000000..757c640
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130)2.json b/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130)2.json
new file mode 100644
index 0000000..bc580bd
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130)2.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditC_(64x130)2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130)2.png b/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130)2.png
new file mode 100644
index 0000000..d007fd8
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditC_(64x130)2.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130).json b/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130).json
new file mode 100644
index 0000000..ff1b5b3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditD_(64x130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130).png b/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130).png
new file mode 100644
index 0000000..9874286
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130)2.json b/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130)2.json
new file mode 100644
index 0000000..a431c3f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130)2.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditD_(64x130)2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130)2.png b/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130)2.png
new file mode 100644
index 0000000..51ceb36
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditD_(64x130)2.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130).json b/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130).json
new file mode 100644
index 0000000..97d1669
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditE_(64x130).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130).png b/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130).png
new file mode 100644
index 0000000..00b8b56
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130)2.json b/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130)2.json
new file mode 100644
index 0000000..946a539
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130)2.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditE_(64x130)2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130)2.png b/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130)2.png
new file mode 100644
index 0000000..19099c4
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbeditE_(64x130)2.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbedit_(48x130) dark.json b/site/controls/Timb&kmGallery_maschine_editTimbedit_(48x130) dark.json
new file mode 100644
index 0000000..b0056cf
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbedit_(48x130) dark.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbedit_(48x130) dark.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbedit_(48x130) dark.png b/site/controls/Timb&kmGallery_maschine_editTimbedit_(48x130) dark.png
new file mode 100644
index 0000000..7f0a175
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbedit_(48x130) dark.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130) dark.json b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130) dark.json
new file mode 100644
index 0000000..a6a46c3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130) dark.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbedit_(64x130) dark.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130) dark.png b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130) dark.png
new file mode 100644
index 0000000..d27137f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130) dark.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130).json b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130).json
new file mode 100644
index 0000000..99c7a89
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbedit_(64x130).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130).png b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130).png
new file mode 100644
index 0000000..1cf9fee
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130)2.json b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130)2.json
new file mode 100644
index 0000000..15de0bb
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130)2.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbedit_(64x130)2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130)2.png b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130)2.png
new file mode 100644
index 0000000..0cf7982
--- /dev/null
+++ b/site/controls/Timb&kmGallery_maschine_editTimbedit_(64x130)2.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_metal_amp_(64129).json b/site/controls/Timb&kmGallery_metal_amp_(64129).json
new file mode 100644
index 0000000..d263784
--- /dev/null
+++ b/site/controls/Timb&kmGallery_metal_amp_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_metal_amp_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_metal_amp_(64129).png b/site/controls/Timb&kmGallery_metal_amp_(64129).png
new file mode 100644
index 0000000..21742d2
--- /dev/null
+++ b/site/controls/Timb&kmGallery_metal_amp_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_metalknob_(64129).json b/site/controls/Timb&kmGallery_metalknob_(64129).json
new file mode 100644
index 0000000..66ddfc3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_metalknob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_metalknob_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_metalknob_(64129).png b/site/controls/Timb&kmGallery_metalknob_(64129).png
new file mode 100644
index 0000000..eab8cf1
--- /dev/null
+++ b/site/controls/Timb&kmGallery_metalknob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_mixer_blue (1)_(64129).json b/site/controls/Timb&kmGallery_mixer_blue (1)_(64129).json
new file mode 100644
index 0000000..d4bbfaf
--- /dev/null
+++ b/site/controls/Timb&kmGallery_mixer_blue (1)_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_mixer_blue (1)_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_mixer_blue (1)_(64129).png b/site/controls/Timb&kmGallery_mixer_blue (1)_(64129).png
new file mode 100644
index 0000000..261ccfe
--- /dev/null
+++ b/site/controls/Timb&kmGallery_mixer_blue (1)_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_mixer_blue_(64129).json b/site/controls/Timb&kmGallery_mixer_blue_(64129).json
new file mode 100644
index 0000000..37fab00
--- /dev/null
+++ b/site/controls/Timb&kmGallery_mixer_blue_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_mixer_blue_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_mixer_blue_(64129).png b/site/controls/Timb&kmGallery_mixer_blue_(64129).png
new file mode 100644
index 0000000..02fbbf1
--- /dev/null
+++ b/site/controls/Timb&kmGallery_mixer_blue_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_mixer_white_(64129).json b/site/controls/Timb&kmGallery_mixer_white_(64129).json
new file mode 100644
index 0000000..30e9803
--- /dev/null
+++ b/site/controls/Timb&kmGallery_mixer_white_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_mixer_white_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_mixer_white_(64129).png b/site/controls/Timb&kmGallery_mixer_white_(64129).png
new file mode 100644
index 0000000..564b59b
--- /dev/null
+++ b/site/controls/Timb&kmGallery_mixer_white_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_oldGain_(64129).json b/site/controls/Timb&kmGallery_oldGain_(64129).json
new file mode 100644
index 0000000..b25e228
--- /dev/null
+++ b/site/controls/Timb&kmGallery_oldGain_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_oldGain_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_oldGain_(64129).png b/site/controls/Timb&kmGallery_oldGain_(64129).png
new file mode 100644
index 0000000..24abbec
--- /dev/null
+++ b/site/controls/Timb&kmGallery_oldGain_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_plastic_knob_(64129).json b/site/controls/Timb&kmGallery_plastic_knob_(64129).json
new file mode 100644
index 0000000..3694697
--- /dev/null
+++ b/site/controls/Timb&kmGallery_plastic_knob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_plastic_knob_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_plastic_knob_(64129).png b/site/controls/Timb&kmGallery_plastic_knob_(64129).png
new file mode 100644
index 0000000..14ba0e6
--- /dev/null
+++ b/site/controls/Timb&kmGallery_plastic_knob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_reaktor_(48129).json b/site/controls/Timb&kmGallery_reaktor_(48129).json
new file mode 100644
index 0000000..ac76b38
--- /dev/null
+++ b/site/controls/Timb&kmGallery_reaktor_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_reaktor_(48129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_reaktor_(48129).png b/site/controls/Timb&kmGallery_reaktor_(48129).png
new file mode 100644
index 0000000..9b9787c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_reaktor_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_reaktor_(64129).json b/site/controls/Timb&kmGallery_reaktor_(64129).json
new file mode 100644
index 0000000..4353238
--- /dev/null
+++ b/site/controls/Timb&kmGallery_reaktor_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_reaktor_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_reaktor_(64129).png b/site/controls/Timb&kmGallery_reaktor_(64129).png
new file mode 100644
index 0000000..eb4f765
--- /dev/null
+++ b/site/controls/Timb&kmGallery_reaktor_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_roue plastique_(64129).json b/site/controls/Timb&kmGallery_roue plastique_(64129).json
new file mode 100644
index 0000000..40f753a
--- /dev/null
+++ b/site/controls/Timb&kmGallery_roue plastique_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_roue plastique_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_roue plastique_(64129).png b/site/controls/Timb&kmGallery_roue plastique_(64129).png
new file mode 100644
index 0000000..097a319
--- /dev/null
+++ b/site/controls/Timb&kmGallery_roue plastique_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_self knitting_(64129).json b/site/controls/Timb&kmGallery_self knitting_(64129).json
new file mode 100644
index 0000000..209eb06
--- /dev/null
+++ b/site/controls/Timb&kmGallery_self knitting_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_self knitting_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_self knitting_(64129).png b/site/controls/Timb&kmGallery_self knitting_(64129).png
new file mode 100644
index 0000000..7f5c42f
--- /dev/null
+++ b/site/controls/Timb&kmGallery_self knitting_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_simple_emerald_knob_(64129).json b/site/controls/Timb&kmGallery_simple_emerald_knob_(64129).json
new file mode 100644
index 0000000..beacab3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_simple_emerald_knob_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_simple_emerald_knob_(64129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_simple_emerald_knob_(64129).png b/site/controls/Timb&kmGallery_simple_emerald_knob_(64129).png
new file mode 100644
index 0000000..2e3a1ed
--- /dev/null
+++ b/site/controls/Timb&kmGallery_simple_emerald_knob_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ssl-ish-edt2_(48129).json b/site/controls/Timb&kmGallery_ssl-ish-edt2_(48129).json
new file mode 100644
index 0000000..0846e41
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ssl-ish-edt2_(48129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_ssl-ish-edt2_(48129).png"} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ssl-ish-edt2_(48129).png b/site/controls/Timb&kmGallery_ssl-ish-edt2_(48129).png
new file mode 100644
index 0000000..d556bbf
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ssl-ish-edt2_(48129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ssl-ish-edt2_(64129).json b/site/controls/Timb&kmGallery_ssl-ish-edt2_(64129).json
new file mode 100644
index 0000000..343df60
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ssl-ish-edt2_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ssl-ish-edt2_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ssl-ish-edt2_(64129).png b/site/controls/Timb&kmGallery_ssl-ish-edt2_(64129).png
new file mode 100644
index 0000000..44edbd9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ssl-ish-edt2_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_ssl-ish-edt_(64129).json b/site/controls/Timb&kmGallery_ssl-ish-edt_(64129).json
new file mode 100644
index 0000000..41f4707
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ssl-ish-edt_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ssl-ish-edt_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_ssl-ish-edt_(64129).png b/site/controls/Timb&kmGallery_ssl-ish-edt_(64129).png
new file mode 100644
index 0000000..2194e56
--- /dev/null
+++ b/site/controls/Timb&kmGallery_ssl-ish-edt_(64129).png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_switchmodeminimalEDT16.json b/site/controls/Timb&kmGallery_switchmodeminimalEDT16.json
new file mode 100644
index 0000000..feed6e9
--- /dev/null
+++ b/site/controls/Timb&kmGallery_switchmodeminimalEDT16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb&kmGallery_switchmodeminimalEDT16.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_switchmodeminimalEDT16.png b/site/controls/Timb&kmGallery_switchmodeminimalEDT16.png
new file mode 100644
index 0000000..d56394c
--- /dev/null
+++ b/site/controls/Timb&kmGallery_switchmodeminimalEDT16.png
Binary files differ
diff --git a/site/controls/Timb&kmGallery_whiteknob_2_(64129).json b/site/controls/Timb&kmGallery_whiteknob_2_(64129).json
new file mode 100644
index 0000000..4ac6bd3
--- /dev/null
+++ b/site/controls/Timb&kmGallery_whiteknob_2_(64129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_whiteknob_2_(64129).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb&kmGallery_whiteknob_2_(64129).png b/site/controls/Timb&kmGallery_whiteknob_2_(64129).png
new file mode 100644
index 0000000..68ef194
--- /dev/null
+++ b/site/controls/Timb&kmGallery_whiteknob_2_(64129).png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_BigKnob-01_64128.json b/site/controls/Timb-NickMoritz_BigKnob-01_64128.json
new file mode 100644
index 0000000..3755ac6
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_BigKnob-01_64128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-NickMoritz_BigKnob-01_64128.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_BigKnob-01_64128.png b/site/controls/Timb-NickMoritz_BigKnob-01_64128.png
new file mode 100644
index 0000000..c7ac502
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_BigKnob-01_64128.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_BigKnob-02_128-16fr.json b/site/controls/Timb-NickMoritz_BigKnob-02_128-16fr.json
new file mode 100644
index 0000000..74d460d
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_BigKnob-02_128-16fr.json
@@ -0,0 +1 @@
+{"frames": 16, "cellh": 128, "ctltype": 0, "fn": "Timb-NickMoritz_BigKnob-02_128-16fr.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_BigKnob-02_128-16fr.png b/site/controls/Timb-NickMoritz_BigKnob-02_128-16fr.png
new file mode 100644
index 0000000..1f51b60
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_BigKnob-02_128-16fr.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_BigKnob-02_64-16fr.json b/site/controls/Timb-NickMoritz_BigKnob-02_64-16fr.json
new file mode 100644
index 0000000..b92ddda
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_BigKnob-02_64-16fr.json
@@ -0,0 +1 @@
+{"frames": 16, "cellh": 64, "ctltype": 0, "fn": "Timb-NickMoritz_BigKnob-02_64-16fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_BigKnob-02_64-16fr.png b/site/controls/Timb-NickMoritz_BigKnob-02_64-16fr.png
new file mode 100644
index 0000000..e36a050
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_BigKnob-02_64-16fr.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_BigKnob-02_64128.json b/site/controls/Timb-NickMoritz_BigKnob-02_64128.json
new file mode 100644
index 0000000..54cdacb
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_BigKnob-02_64128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-NickMoritz_BigKnob-02_64128.png"} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_BigKnob-02_64128.png b/site/controls/Timb-NickMoritz_BigKnob-02_64128.png
new file mode 100644
index 0000000..664d88b
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_BigKnob-02_64128.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_MidKnob-01_64128.json b/site/controls/Timb-NickMoritz_MidKnob-01_64128.json
new file mode 100644
index 0000000..a820f16
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_MidKnob-01_64128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-NickMoritz_MidKnob-01_64128.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_MidKnob-01_64128.png b/site/controls/Timb-NickMoritz_MidKnob-01_64128.png
new file mode 100644
index 0000000..c73a74c
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_MidKnob-01_64128.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-01_32128.json b/site/controls/Timb-NickMoritz_SmallKnob-01_32128.json
new file mode 100644
index 0000000..e9da565
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-01_32128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-01_32128.png"} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-01_32128.png b/site/controls/Timb-NickMoritz_SmallKnob-01_32128.png
new file mode 100644
index 0000000..95e9445
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-01_32128.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-02_32128.json b/site/controls/Timb-NickMoritz_SmallKnob-02_32128.json
new file mode 100644
index 0000000..5e0ccd5
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-02_32128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-02_32128.png"} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-02_32128.png b/site/controls/Timb-NickMoritz_SmallKnob-02_32128.png
new file mode 100644
index 0000000..d1a8342
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-02_32128.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-03_32128.json b/site/controls/Timb-NickMoritz_SmallKnob-03_32128.json
new file mode 100644
index 0000000..1988487
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-03_32128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-03_32128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-03_32128.png b/site/controls/Timb-NickMoritz_SmallKnob-03_32128.png
new file mode 100644
index 0000000..bc397a5
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-03_32128.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-03mod_32128.json b/site/controls/Timb-NickMoritz_SmallKnob-03mod_32128.json
new file mode 100644
index 0000000..7c86c75
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-03mod_32128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-03mod_32128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-03mod_32128.png b/site/controls/Timb-NickMoritz_SmallKnob-03mod_32128.png
new file mode 100644
index 0000000..39d0b04
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-03mod_32128.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-04_32128.json b/site/controls/Timb-NickMoritz_SmallKnob-04_32128.json
new file mode 100644
index 0000000..06517ab
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-04_32128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-04_32128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-04_32128.png b/site/controls/Timb-NickMoritz_SmallKnob-04_32128.png
new file mode 100644
index 0000000..258988a
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-04_32128.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-04_32128brwn.json b/site/controls/Timb-NickMoritz_SmallKnob-04_32128brwn.json
new file mode 100644
index 0000000..30211d5
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-04_32128brwn.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-04_32128brwn.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-04_32128brwn.png b/site/controls/Timb-NickMoritz_SmallKnob-04_32128brwn.png
new file mode 100644
index 0000000..289adbf
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-04_32128brwn.png
Binary files differ
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-05_32128.json b/site/controls/Timb-NickMoritz_SmallKnob-05_32128.json
new file mode 100644
index 0000000..038a1b4
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-05_32128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-05_32128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-NickMoritz_SmallKnob-05_32128.png b/site/controls/Timb-NickMoritz_SmallKnob-05_32128.png
new file mode 100644
index 0000000..eb045e8
--- /dev/null
+++ b/site/controls/Timb-NickMoritz_SmallKnob-05_32128.png
Binary files differ
diff --git a/site/controls/Timb-SM_Annimot01_80101.json b/site/controls/Timb-SM_Annimot01_80101.json
new file mode 100644
index 0000000..8f463e3
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot01_80101.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Annimot01_80101.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Annimot01_80101.png b/site/controls/Timb-SM_Annimot01_80101.png
new file mode 100644
index 0000000..1a3b287
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot01_80101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Annimot02_90101.json b/site/controls/Timb-SM_Annimot02_90101.json
new file mode 100644
index 0000000..0e8c3aa
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot02_90101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 90, "ctltype": 0, "fn": "Timb-SM_Annimot02_90101.png", "cellw": 90} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Annimot02_90101.png b/site/controls/Timb-SM_Annimot02_90101.png
new file mode 100644
index 0000000..d552542
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot02_90101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Annimot03_60101.json b/site/controls/Timb-SM_Annimot03_60101.json
new file mode 100644
index 0000000..6060b27
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot03_60101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Annimot03_60101.png", "cellw": 60} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Annimot03_60101.png b/site/controls/Timb-SM_Annimot03_60101.png
new file mode 100644
index 0000000..ff3b820
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot03_60101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Annimot04_40100.json b/site/controls/Timb-SM_Annimot04_40100.json
new file mode 100644
index 0000000..1aee03a
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot04_40100.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Annimot04_40100.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Annimot04_40100.png b/site/controls/Timb-SM_Annimot04_40100.png
new file mode 100644
index 0000000..06d5e68
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot04_40100.png
Binary files differ
diff --git a/site/controls/Timb-SM_Annimot05_50100.json b/site/controls/Timb-SM_Annimot05_50100.json
new file mode 100644
index 0000000..bc0c247
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot05_50100.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Annimot05_50100.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Annimot05_50100.png b/site/controls/Timb-SM_Annimot05_50100.png
new file mode 100644
index 0000000..b16057d
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot05_50100.png
Binary files differ
diff --git a/site/controls/Timb-SM_Annimot06_60128.json b/site/controls/Timb-SM_Annimot06_60128.json
new file mode 100644
index 0000000..a9d9abe
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot06_60128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Annimot06_60128.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Annimot06_60128.png b/site/controls/Timb-SM_Annimot06_60128.png
new file mode 100644
index 0000000..7c74eb5
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot06_60128.png
Binary files differ
diff --git a/site/controls/Timb-SM_Annimot07pan_70120.json b/site/controls/Timb-SM_Annimot07pan_70120.json
new file mode 100644
index 0000000..caa584c
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot07pan_70120.json
@@ -0,0 +1 @@
+{"frames": 120, "cellh": 70, "ctltype": 0, "fn": "Timb-SM_Annimot07pan_70120.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Annimot07pan_70120.png b/site/controls/Timb-SM_Annimot07pan_70120.png
new file mode 100644
index 0000000..bd033d1
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot07pan_70120.png
Binary files differ
diff --git a/site/controls/Timb-SM_Annimot07vol_70120.json b/site/controls/Timb-SM_Annimot07vol_70120.json
new file mode 100644
index 0000000..83e37f0
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot07vol_70120.json
@@ -0,0 +1 @@
+{"frames": 120, "cellh": 70, "ctltype": 0, "fn": "Timb-SM_Annimot07vol_70120.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Annimot07vol_70120.png b/site/controls/Timb-SM_Annimot07vol_70120.png
new file mode 100644
index 0000000..17e57ee
--- /dev/null
+++ b/site/controls/Timb-SM_Annimot07vol_70120.png
Binary files differ
diff --git a/site/controls/Timb-SM_BiPolPAN_80101.json b/site/controls/Timb-SM_BiPolPAN_80101.json
new file mode 100644
index 0000000..daf6eef
--- /dev/null
+++ b/site/controls/Timb-SM_BiPolPAN_80101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_BiPolPAN_80101.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_BiPolPAN_80101.png b/site/controls/Timb-SM_BiPolPAN_80101.png
new file mode 100644
index 0000000..4d53755
--- /dev/null
+++ b/site/controls/Timb-SM_BiPolPAN_80101.png
Binary files differ
diff --git a/site/controls/Timb-SM_BlooPAN_40120.json b/site/controls/Timb-SM_BlooPAN_40120.json
new file mode 100644
index 0000000..07ed7a2
--- /dev/null
+++ b/site/controls/Timb-SM_BlooPAN_40120.json
@@ -0,0 +1 @@
+{"frames": 120, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_BlooPAN_40120.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_BlooPAN_40120.png b/site/controls/Timb-SM_BlooPAN_40120.png
new file mode 100644
index 0000000..69e1197
--- /dev/null
+++ b/site/controls/Timb-SM_BlooPAN_40120.png
Binary files differ
diff --git a/site/controls/Timb-SM_BlooPAN_50120.json b/site/controls/Timb-SM_BlooPAN_50120.json
new file mode 100644
index 0000000..4dc2f95
--- /dev/null
+++ b/site/controls/Timb-SM_BlooPAN_50120.json
@@ -0,0 +1 @@
+{"frames": 120, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_BlooPAN_50120.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_BlooPAN_50120.png b/site/controls/Timb-SM_BlooPAN_50120.png
new file mode 100644
index 0000000..f286d48
--- /dev/null
+++ b/site/controls/Timb-SM_BlooPAN_50120.png
Binary files differ
diff --git a/site/controls/Timb-SM_BlooPAN_60120.json b/site/controls/Timb-SM_BlooPAN_60120.json
new file mode 100644
index 0000000..5e228f8
--- /dev/null
+++ b/site/controls/Timb-SM_BlooPAN_60120.json
@@ -0,0 +1 @@
+{"frames": 120, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_BlooPAN_60120.png", "cellw": 60} \ No newline at end of file
diff --git a/site/controls/Timb-SM_BlooPAN_60120.png b/site/controls/Timb-SM_BlooPAN_60120.png
new file mode 100644
index 0000000..f4599db
--- /dev/null
+++ b/site/controls/Timb-SM_BlooPAN_60120.png
Binary files differ
diff --git a/site/controls/Timb-SM_BlooVOL_40120.json b/site/controls/Timb-SM_BlooVOL_40120.json
new file mode 100644
index 0000000..31e39b2
--- /dev/null
+++ b/site/controls/Timb-SM_BlooVOL_40120.json
@@ -0,0 +1 @@
+{"frames": 120, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_BlooVOL_40120.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_BlooVOL_40120.png b/site/controls/Timb-SM_BlooVOL_40120.png
new file mode 100644
index 0000000..4371f35
--- /dev/null
+++ b/site/controls/Timb-SM_BlooVOL_40120.png
Binary files differ
diff --git a/site/controls/Timb-SM_BlooVOL_50120.json b/site/controls/Timb-SM_BlooVOL_50120.json
new file mode 100644
index 0000000..3364f00
--- /dev/null
+++ b/site/controls/Timb-SM_BlooVOL_50120.json
@@ -0,0 +1 @@
+{"frames": 120, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_BlooVOL_50120.png", "cellw": 50} \ No newline at end of file
diff --git a/site/controls/Timb-SM_BlooVOL_50120.png b/site/controls/Timb-SM_BlooVOL_50120.png
new file mode 100644
index 0000000..59979a8
--- /dev/null
+++ b/site/controls/Timb-SM_BlooVOL_50120.png
Binary files differ
diff --git a/site/controls/Timb-SM_BlooVOL_60120.json b/site/controls/Timb-SM_BlooVOL_60120.json
new file mode 100644
index 0000000..baeb4de
--- /dev/null
+++ b/site/controls/Timb-SM_BlooVOL_60120.json
@@ -0,0 +1 @@
+{"frames": 120, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_BlooVOL_60120.png", "cellw": 60} \ No newline at end of file
diff --git a/site/controls/Timb-SM_BlooVOL_60120.png b/site/controls/Timb-SM_BlooVOL_60120.png
new file mode 100644
index 0000000..07037bc
--- /dev/null
+++ b/site/controls/Timb-SM_BlooVOL_60120.png
Binary files differ
diff --git a/site/controls/Timb-SM_DW_64128.json b/site/controls/Timb-SM_DW_64128.json
new file mode 100644
index 0000000..6e178be
--- /dev/null
+++ b/site/controls/Timb-SM_DW_64128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_DW_64128.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_DW_64128.png b/site/controls/Timb-SM_DW_64128.png
new file mode 100644
index 0000000..88cb72e
--- /dev/null
+++ b/site/controls/Timb-SM_DW_64128.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-01_35x35-129.json b/site/controls/Timb-SM_GRIG5-01_35x35-129.json
new file mode 100644
index 0000000..376d0b6
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-01_35x35-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 35, "ctltype": 0, "fn": "Timb-SM_GRIG5-01_35x35-129.png", "cellw": 35} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-01_35x35-129.png b/site/controls/Timb-SM_GRIG5-01_35x35-129.png
new file mode 100644
index 0000000..fd65612
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-01_35x35-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-02_31x31-127.json b/site/controls/Timb-SM_GRIG5-02_31x31-127.json
new file mode 100644
index 0000000..8d8d795
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-02_31x31-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 31, "ctltype": 0, "fn": "Timb-SM_GRIG5-02_31x31-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-02_31x31-127.png b/site/controls/Timb-SM_GRIG5-02_31x31-127.png
new file mode 100644
index 0000000..fd99426
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-02_31x31-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-05_27x27-129.json b/site/controls/Timb-SM_GRIG5-05_27x27-129.json
new file mode 100644
index 0000000..f94fa54
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-05_27x27-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 27, "ctltype": 0, "fn": "Timb-SM_GRIG5-05_27x27-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-05_27x27-129.png b/site/controls/Timb-SM_GRIG5-05_27x27-129.png
new file mode 100644
index 0000000..bb7c002
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-05_27x27-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-15_35x35-128.json b/site/controls/Timb-SM_GRIG5-15_35x35-128.json
new file mode 100644
index 0000000..6944197
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-15_35x35-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 35, "ctltype": 0, "fn": "Timb-SM_GRIG5-15_35x35-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-15_35x35-128.png b/site/controls/Timb-SM_GRIG5-15_35x35-128.png
new file mode 100644
index 0000000..0d2addc
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-15_35x35-128.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-20_37x39-129.json b/site/controls/Timb-SM_GRIG5-20_37x39-129.json
new file mode 100644
index 0000000..9305f6d
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-20_37x39-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 39, "ctltype": 0, "fn": "Timb-SM_GRIG5-20_37x39-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-20_37x39-129.png b/site/controls/Timb-SM_GRIG5-20_37x39-129.png
new file mode 100644
index 0000000..02d9e02
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-20_37x39-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-21_33x37-129.json b/site/controls/Timb-SM_GRIG5-21_33x37-129.json
new file mode 100644
index 0000000..398bbf3
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-21_33x37-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 37, "ctltype": 0, "fn": "Timb-SM_GRIG5-21_33x37-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-21_33x37-129.png b/site/controls/Timb-SM_GRIG5-21_33x37-129.png
new file mode 100644
index 0000000..1740739
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-21_33x37-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-22_33x37-129.json b/site/controls/Timb-SM_GRIG5-22_33x37-129.json
new file mode 100644
index 0000000..a9206b3
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-22_33x37-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 37, "ctltype": 0, "fn": "Timb-SM_GRIG5-22_33x37-129.png", "cellw": 33} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-22_33x37-129.png b/site/controls/Timb-SM_GRIG5-22_33x37-129.png
new file mode 100644
index 0000000..8c733d3
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-22_33x37-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-23_25x29-129.json b/site/controls/Timb-SM_GRIG5-23_25x29-129.json
new file mode 100644
index 0000000..4529414
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-23_25x29-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GRIG5-23_25x29-129.png", "cellw": 25} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-23_25x29-129.png b/site/controls/Timb-SM_GRIG5-23_25x29-129.png
new file mode 100644
index 0000000..d4f03ef
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-23_25x29-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-24_89x91-129.json b/site/controls/Timb-SM_GRIG5-24_89x91-129.json
new file mode 100644
index 0000000..e30bbf2
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-24_89x91-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 91, "ctltype": 0, "fn": "Timb-SM_GRIG5-24_89x91-129.png", "cellw": 89} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-24_89x91-129.png b/site/controls/Timb-SM_GRIG5-24_89x91-129.png
new file mode 100644
index 0000000..21df7c1
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-24_89x91-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-25_61x61-129.json b/site/controls/Timb-SM_GRIG5-25_61x61-129.json
new file mode 100644
index 0000000..ec98d46
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-25_61x61-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 61, "ctltype": 0, "fn": "Timb-SM_GRIG5-25_61x61-129.png", "cellw": 61} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-25_61x61-129.png b/site/controls/Timb-SM_GRIG5-25_61x61-129.png
new file mode 100644
index 0000000..654071e
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-25_61x61-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-26_45x45-129.json b/site/controls/Timb-SM_GRIG5-26_45x45-129.json
new file mode 100644
index 0000000..9bb75cf
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-26_45x45-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 45, "ctltype": 0, "fn": "Timb-SM_GRIG5-26_45x45-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-26_45x45-129.png b/site/controls/Timb-SM_GRIG5-26_45x45-129.png
new file mode 100644
index 0000000..57ef1d4
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-26_45x45-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-27_51x51-129.json b/site/controls/Timb-SM_GRIG5-27_51x51-129.json
new file mode 100644
index 0000000..fe2aba3
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-27_51x51-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 51, "ctltype": 0, "fn": "Timb-SM_GRIG5-27_51x51-129.png", "cellw": 51} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-27_51x51-129.png b/site/controls/Timb-SM_GRIG5-27_51x51-129.png
new file mode 100644
index 0000000..2930389
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-27_51x51-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-31_61x61-129.json b/site/controls/Timb-SM_GRIG5-31_61x61-129.json
new file mode 100644
index 0000000..c76a35f
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-31_61x61-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 61, "ctltype": 0, "fn": "Timb-SM_GRIG5-31_61x61-129.png", "cellw": 61} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-31_61x61-129.png b/site/controls/Timb-SM_GRIG5-31_61x61-129.png
new file mode 100644
index 0000000..bb640e2
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-31_61x61-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-32_35x35-130.json b/site/controls/Timb-SM_GRIG5-32_35x35-130.json
new file mode 100644
index 0000000..076153e
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-32_35x35-130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 35, "ctltype": 0, "fn": "Timb-SM_GRIG5-32_35x35-130.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-32_35x35-130.png b/site/controls/Timb-SM_GRIG5-32_35x35-130.png
new file mode 100644
index 0000000..a101b02
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-32_35x35-130.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-33_54x51-127.json b/site/controls/Timb-SM_GRIG5-33_54x51-127.json
new file mode 100644
index 0000000..d67a2aa
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-33_54x51-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 51, "ctltype": 0, "fn": "Timb-SM_GRIG5-33_54x51-127.png", "cellw": 54} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-33_54x51-127.png b/site/controls/Timb-SM_GRIG5-33_54x51-127.png
new file mode 100644
index 0000000..23368cc
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-33_54x51-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-35_44x44-127.json b/site/controls/Timb-SM_GRIG5-35_44x44-127.json
new file mode 100644
index 0000000..743be04
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-35_44x44-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 44, "ctltype": 0, "fn": "Timb-SM_GRIG5-35_44x44-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-35_44x44-127.png b/site/controls/Timb-SM_GRIG5-35_44x44-127.png
new file mode 100644
index 0000000..285d640
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-35_44x44-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-36_51x53-129.json b/site/controls/Timb-SM_GRIG5-36_51x53-129.json
new file mode 100644
index 0000000..5c4c19b
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-36_51x53-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 53, "ctltype": 0, "fn": "Timb-SM_GRIG5-36_51x53-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-36_51x53-129.png b/site/controls/Timb-SM_GRIG5-36_51x53-129.png
new file mode 100644
index 0000000..5f7a00f
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-36_51x53-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-37_51x51-130.json b/site/controls/Timb-SM_GRIG5-37_51x51-130.json
new file mode 100644
index 0000000..d1ac265
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-37_51x51-130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 51, "ctltype": 0, "fn": "Timb-SM_GRIG5-37_51x51-130.png", "cellw": 51} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-37_51x51-130.png b/site/controls/Timb-SM_GRIG5-37_51x51-130.png
new file mode 100644
index 0000000..de2d018
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-37_51x51-130.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-38_39x39-127.json b/site/controls/Timb-SM_GRIG5-38_39x39-127.json
new file mode 100644
index 0000000..1fbd7cf
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-38_39x39-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 39, "ctltype": 0, "fn": "Timb-SM_GRIG5-38_39x39-127.png", "cellw": 39} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-38_39x39-127.png b/site/controls/Timb-SM_GRIG5-38_39x39-127.png
new file mode 100644
index 0000000..1706cf1
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-38_39x39-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-39_36x39-129.json b/site/controls/Timb-SM_GRIG5-39_36x39-129.json
new file mode 100644
index 0000000..066ccf6
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-39_36x39-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 39, "ctltype": 0, "fn": "Timb-SM_GRIG5-39_36x39-129.png", "cellw": 36} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-39_36x39-129.png b/site/controls/Timb-SM_GRIG5-39_36x39-129.png
new file mode 100644
index 0000000..d8ecdf7
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-39_36x39-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-40_35x38-129-brwn.json b/site/controls/Timb-SM_GRIG5-40_35x38-129-brwn.json
new file mode 100644
index 0000000..3fa7684
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-40_35x38-129-brwn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 38, "ctltype": 0, "fn": "Timb-SM_GRIG5-40_35x38-129-brwn.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-40_35x38-129-brwn.png b/site/controls/Timb-SM_GRIG5-40_35x38-129-brwn.png
new file mode 100644
index 0000000..93a4f4e
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-40_35x38-129-brwn.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-40_35x38-129.json b/site/controls/Timb-SM_GRIG5-40_35x38-129.json
new file mode 100644
index 0000000..21868e9
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-40_35x38-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 38, "ctltype": 0, "fn": "Timb-SM_GRIG5-40_35x38-129.png", "cellw": 35} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-40_35x38-129.png b/site/controls/Timb-SM_GRIG5-40_35x38-129.png
new file mode 100644
index 0000000..c1e3053
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-40_35x38-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-41_47x53-127.json b/site/controls/Timb-SM_GRIG5-41_47x53-127.json
new file mode 100644
index 0000000..108a100
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-41_47x53-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 53, "ctltype": 0, "fn": "Timb-SM_GRIG5-41_47x53-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-41_47x53-127.png b/site/controls/Timb-SM_GRIG5-41_47x53-127.png
new file mode 100644
index 0000000..b7ef03d
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-41_47x53-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-42_39x43-127.json b/site/controls/Timb-SM_GRIG5-42_39x43-127.json
new file mode 100644
index 0000000..3aed9b3
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-42_39x43-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 43, "ctltype": 0, "fn": "Timb-SM_GRIG5-42_39x43-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-42_39x43-127.png b/site/controls/Timb-SM_GRIG5-42_39x43-127.png
new file mode 100644
index 0000000..e843ee8
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-42_39x43-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-43_37x37-127.json b/site/controls/Timb-SM_GRIG5-43_37x37-127.json
new file mode 100644
index 0000000..b1387e0
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-43_37x37-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 37, "ctltype": 0, "fn": "Timb-SM_GRIG5-43_37x37-127.png", "cellw": 37} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-43_37x37-127.png b/site/controls/Timb-SM_GRIG5-43_37x37-127.png
new file mode 100644
index 0000000..571eebd
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-43_37x37-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-44_49x49-129.json b/site/controls/Timb-SM_GRIG5-44_49x49-129.json
new file mode 100644
index 0000000..e2b4e38
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-44_49x49-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 49, "ctltype": 0, "fn": "Timb-SM_GRIG5-44_49x49-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-44_49x49-129.png b/site/controls/Timb-SM_GRIG5-44_49x49-129.png
new file mode 100644
index 0000000..0612f3b
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-44_49x49-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-45a_33x33-91.json b/site/controls/Timb-SM_GRIG5-45a_33x33-91.json
new file mode 100644
index 0000000..ff601f3
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-45a_33x33-91.json
@@ -0,0 +1 @@
+{"frames": 91, "cellh": 33, "ctltype": 0, "fn": "Timb-SM_GRIG5-45a_33x33-91.png", "cellw": 33} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-45a_33x33-91.png b/site/controls/Timb-SM_GRIG5-45a_33x33-91.png
new file mode 100644
index 0000000..df08df6
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-45a_33x33-91.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-45b_33x33-91.json b/site/controls/Timb-SM_GRIG5-45b_33x33-91.json
new file mode 100644
index 0000000..5806bfe
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-45b_33x33-91.json
@@ -0,0 +1 @@
+{"frames": 91, "cellh": 33, "ctltype": 0, "fn": "Timb-SM_GRIG5-45b_33x33-91.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-45b_33x33-91.png b/site/controls/Timb-SM_GRIG5-45b_33x33-91.png
new file mode 100644
index 0000000..8ae5ad6
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-45b_33x33-91.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-45c_33x33-91.json b/site/controls/Timb-SM_GRIG5-45c_33x33-91.json
new file mode 100644
index 0000000..92ea7d7
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-45c_33x33-91.json
@@ -0,0 +1 @@
+{"frames": 91, "cellh": 33, "ctltype": 0, "fn": "Timb-SM_GRIG5-45c_33x33-91.png", "cellw": 33} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-45c_33x33-91.png b/site/controls/Timb-SM_GRIG5-45c_33x33-91.png
new file mode 100644
index 0000000..420af7c
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-45c_33x33-91.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-45d_33x33-91.json b/site/controls/Timb-SM_GRIG5-45d_33x33-91.json
new file mode 100644
index 0000000..d241a45
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-45d_33x33-91.json
@@ -0,0 +1 @@
+{"frames": 91, "cellh": 33, "ctltype": 0, "fn": "Timb-SM_GRIG5-45d_33x33-91.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-45d_33x33-91.png b/site/controls/Timb-SM_GRIG5-45d_33x33-91.png
new file mode 100644
index 0000000..6322b0f
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-45d_33x33-91.png
Binary files differ
diff --git a/site/controls/Timb-SM_GRIG5-48_29x29-91.json b/site/controls/Timb-SM_GRIG5-48_29x29-91.json
new file mode 100644
index 0000000..22c463e
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-48_29x29-91.json
@@ -0,0 +1 @@
+{"frames": 91, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GRIG5-48_29x29-91.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GRIG5-48_29x29-91.png b/site/controls/Timb-SM_GRIG5-48_29x29-91.png
new file mode 100644
index 0000000..5c452a1
--- /dev/null
+++ b/site/controls/Timb-SM_GRIG5-48_29x29-91.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-01_45x46-129.json b/site/controls/Timb-SM_GrigKnob-01_45x46-129.json
new file mode 100644
index 0000000..ab8bb6a
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-01_45x46-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 46, "ctltype": 0, "fn": "Timb-SM_GrigKnob-01_45x46-129.png", "cellw": 45} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-01_45x46-129.png b/site/controls/Timb-SM_GrigKnob-01_45x46-129.png
new file mode 100644
index 0000000..e6b6b7d
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-01_45x46-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-02_29x29-129.json b/site/controls/Timb-SM_GrigKnob-02_29x29-129.json
new file mode 100644
index 0000000..991a841
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-02_29x29-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GrigKnob-02_29x29-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-02_29x29-129.png b/site/controls/Timb-SM_GrigKnob-02_29x29-129.png
new file mode 100644
index 0000000..b9baef2
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-02_29x29-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-03_31x31-129.json b/site/controls/Timb-SM_GrigKnob-03_31x31-129.json
new file mode 100644
index 0000000..fbf56ab
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-03_31x31-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 31, "ctltype": 0, "fn": "Timb-SM_GrigKnob-03_31x31-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-03_31x31-129.png b/site/controls/Timb-SM_GrigKnob-03_31x31-129.png
new file mode 100644
index 0000000..3fec383
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-03_31x31-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-04_30x30-129.json b/site/controls/Timb-SM_GrigKnob-04_30x30-129.json
new file mode 100644
index 0000000..dde23b8
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-04_30x30-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 30, "ctltype": 0, "fn": "Timb-SM_GrigKnob-04_30x30-129.png", "cellw": 30} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-04_30x30-129.png b/site/controls/Timb-SM_GrigKnob-04_30x30-129.png
new file mode 100644
index 0000000..c9b6964
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-04_30x30-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-05_42x42-129.json b/site/controls/Timb-SM_GrigKnob-05_42x42-129.json
new file mode 100644
index 0000000..485d4d8
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-05_42x42-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 42, "ctltype": 0, "fn": "Timb-SM_GrigKnob-05_42x42-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-05_42x42-129.png b/site/controls/Timb-SM_GrigKnob-05_42x42-129.png
new file mode 100644
index 0000000..7294574
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-05_42x42-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-06_32x32-129.json b/site/controls/Timb-SM_GrigKnob-06_32x32-129.json
new file mode 100644
index 0000000..e4d0046
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-06_32x32-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_GrigKnob-06_32x32-129.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-06_32x32-129.png b/site/controls/Timb-SM_GrigKnob-06_32x32-129.png
new file mode 100644
index 0000000..fe58546
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-06_32x32-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-07_42x44-129.json b/site/controls/Timb-SM_GrigKnob-07_42x44-129.json
new file mode 100644
index 0000000..325ecf5
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-07_42x44-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 44, "ctltype": 0, "fn": "Timb-SM_GrigKnob-07_42x44-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-07_42x44-129.png b/site/controls/Timb-SM_GrigKnob-07_42x44-129.png
new file mode 100644
index 0000000..3106a8e
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-07_42x44-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-08_28x29-129.json b/site/controls/Timb-SM_GrigKnob-08_28x29-129.json
new file mode 100644
index 0000000..2d91ef3
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-08_28x29-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GrigKnob-08_28x29-129.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-08_28x29-129.png b/site/controls/Timb-SM_GrigKnob-08_28x29-129.png
new file mode 100644
index 0000000..e9d2b47
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-08_28x29-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-09_29x29-129.json b/site/controls/Timb-SM_GrigKnob-09_29x29-129.json
new file mode 100644
index 0000000..f1f2c64
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-09_29x29-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GrigKnob-09_29x29-129.png", "cellw": 29} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-09_29x29-129.png b/site/controls/Timb-SM_GrigKnob-09_29x29-129.png
new file mode 100644
index 0000000..c1d4a08
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-09_29x29-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-10_29x29-129.json b/site/controls/Timb-SM_GrigKnob-10_29x29-129.json
new file mode 100644
index 0000000..f3b792c
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-10_29x29-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GrigKnob-10_29x29-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-10_29x29-129.png b/site/controls/Timb-SM_GrigKnob-10_29x29-129.png
new file mode 100644
index 0000000..d2f69f9
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-10_29x29-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-11_24x28-129.json b/site/controls/Timb-SM_GrigKnob-11_24x28-129.json
new file mode 100644
index 0000000..3f306e9
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-11_24x28-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 28, "ctltype": 0, "fn": "Timb-SM_GrigKnob-11_24x28-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-11_24x28-129.png b/site/controls/Timb-SM_GrigKnob-11_24x28-129.png
new file mode 100644
index 0000000..0b8cab4
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-11_24x28-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-12_19x19-129.json b/site/controls/Timb-SM_GrigKnob-12_19x19-129.json
new file mode 100644
index 0000000..5116d74
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-12_19x19-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb-SM_GrigKnob-12_19x19-129.png", "cellw": 19} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-12_19x19-129.png b/site/controls/Timb-SM_GrigKnob-12_19x19-129.png
new file mode 100644
index 0000000..853897a
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-12_19x19-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-14_40x40-128.json b/site/controls/Timb-SM_GrigKnob-14_40x40-128.json
new file mode 100644
index 0000000..401a08d
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-14_40x40-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_GrigKnob-14_40x40-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-14_40x40-128.png b/site/controls/Timb-SM_GrigKnob-14_40x40-128.png
new file mode 100644
index 0000000..33a77df
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-14_40x40-128.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-15_31x31-129.json b/site/controls/Timb-SM_GrigKnob-15_31x31-129.json
new file mode 100644
index 0000000..b450550
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-15_31x31-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 31, "ctltype": 0, "fn": "Timb-SM_GrigKnob-15_31x31-129.png", "cellw": 31} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-15_31x31-129.png b/site/controls/Timb-SM_GrigKnob-15_31x31-129.png
new file mode 100644
index 0000000..cbdd2ac
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-15_31x31-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-21_44x48-129.json b/site/controls/Timb-SM_GrigKnob-21_44x48-129.json
new file mode 100644
index 0000000..2e332b1
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-21_44x48-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-21_44x48-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-21_44x48-129.png b/site/controls/Timb-SM_GrigKnob-21_44x48-129.png
new file mode 100644
index 0000000..90e4248
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-21_44x48-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-28_34x34-129.json b/site/controls/Timb-SM_GrigKnob-28_34x34-129.json
new file mode 100644
index 0000000..f5da308
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-28_34x34-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 34, "ctltype": 0, "fn": "Timb-SM_GrigKnob-28_34x34-129.png", "cellw": 34} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-28_34x34-129.png b/site/controls/Timb-SM_GrigKnob-28_34x34-129.png
new file mode 100644
index 0000000..1522cf0
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-28_34x34-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-29_37x43-127.json b/site/controls/Timb-SM_GrigKnob-29_37x43-127.json
new file mode 100644
index 0000000..564e103
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-29_37x43-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 43, "ctltype": 0, "fn": "Timb-SM_GrigKnob-29_37x43-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-29_37x43-127.png b/site/controls/Timb-SM_GrigKnob-29_37x43-127.png
new file mode 100644
index 0000000..ab1f597
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-29_37x43-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-30_43x49-127.json b/site/controls/Timb-SM_GrigKnob-30_43x49-127.json
new file mode 100644
index 0000000..8016ec7
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-30_43x49-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 49, "ctltype": 0, "fn": "Timb-SM_GrigKnob-30_43x49-127.png", "cellw": 43} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-30_43x49-127.png b/site/controls/Timb-SM_GrigKnob-30_43x49-127.png
new file mode 100644
index 0000000..47956a8
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-30_43x49-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-31_53x53-127.json b/site/controls/Timb-SM_GrigKnob-31_53x53-127.json
new file mode 100644
index 0000000..f702e1c
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-31_53x53-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 53, "ctltype": 0, "fn": "Timb-SM_GrigKnob-31_53x53-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-31_53x53-127.png b/site/controls/Timb-SM_GrigKnob-31_53x53-127.png
new file mode 100644
index 0000000..f4465d2
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-31_53x53-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-33_42x42-127.json b/site/controls/Timb-SM_GrigKnob-33_42x42-127.json
new file mode 100644
index 0000000..ca46188
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-33_42x42-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 42, "ctltype": 0, "fn": "Timb-SM_GrigKnob-33_42x42-127.png", "cellw": 42} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-33_42x42-127.png b/site/controls/Timb-SM_GrigKnob-33_42x42-127.png
new file mode 100644
index 0000000..7c4300c
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-33_42x42-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-34_59x59-127.json b/site/controls/Timb-SM_GrigKnob-34_59x59-127.json
new file mode 100644
index 0000000..08ec1b2
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-34_59x59-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 59, "ctltype": 0, "fn": "Timb-SM_GrigKnob-34_59x59-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-34_59x59-127.png b/site/controls/Timb-SM_GrigKnob-34_59x59-127.png
new file mode 100644
index 0000000..12ddb1f
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-34_59x59-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-35_41x41-127.json b/site/controls/Timb-SM_GrigKnob-35_41x41-127.json
new file mode 100644
index 0000000..d41d3e6
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-35_41x41-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 41, "ctltype": 0, "fn": "Timb-SM_GrigKnob-35_41x41-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-35_41x41-127.png b/site/controls/Timb-SM_GrigKnob-35_41x41-127.png
new file mode 100644
index 0000000..fa91801
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-35_41x41-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-36_41x41-127.json b/site/controls/Timb-SM_GrigKnob-36_41x41-127.json
new file mode 100644
index 0000000..a6bd9b6
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-36_41x41-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 41, "ctltype": 0, "fn": "Timb-SM_GrigKnob-36_41x41-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-36_41x41-127.png b/site/controls/Timb-SM_GrigKnob-36_41x41-127.png
new file mode 100644
index 0000000..e083aa9
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-36_41x41-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-39_31x31-129.json b/site/controls/Timb-SM_GrigKnob-39_31x31-129.json
new file mode 100644
index 0000000..5ccdd1a
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-39_31x31-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 31, "ctltype": 0, "fn": "Timb-SM_GrigKnob-39_31x31-129.png", "cellw": 31} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-39_31x31-129.png b/site/controls/Timb-SM_GrigKnob-39_31x31-129.png
new file mode 100644
index 0000000..8bbfd7d
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-39_31x31-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-40pan_47x48-129.json b/site/controls/Timb-SM_GrigKnob-40pan_47x48-129.json
new file mode 100644
index 0000000..d2b3b66
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-40pan_47x48-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-40pan_47x48-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-40pan_47x48-129.png b/site/controls/Timb-SM_GrigKnob-40pan_47x48-129.png
new file mode 100644
index 0000000..935e461
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-40pan_47x48-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-40vol_47x48-129.json b/site/controls/Timb-SM_GrigKnob-40vol_47x48-129.json
new file mode 100644
index 0000000..3fdab88
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-40vol_47x48-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-40vol_47x48-129.png", "cellw": 47} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-40vol_47x48-129.png b/site/controls/Timb-SM_GrigKnob-40vol_47x48-129.png
new file mode 100644
index 0000000..db0027d
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-40vol_47x48-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-42pan_47x48-129.json b/site/controls/Timb-SM_GrigKnob-42pan_47x48-129.json
new file mode 100644
index 0000000..51de6ac
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-42pan_47x48-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-42pan_47x48-129.png", "cellw": 47} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-42pan_47x48-129.png b/site/controls/Timb-SM_GrigKnob-42pan_47x48-129.png
new file mode 100644
index 0000000..6d17a9b
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-42pan_47x48-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-42vol_47x48-129.json b/site/controls/Timb-SM_GrigKnob-42vol_47x48-129.json
new file mode 100644
index 0000000..4f9fd29
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-42vol_47x48-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-42vol_47x48-129.png", "cellw": 47} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-42vol_47x48-129.png b/site/controls/Timb-SM_GrigKnob-42vol_47x48-129.png
new file mode 100644
index 0000000..6585ea3
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-42vol_47x48-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-44pan_47x48-129.json b/site/controls/Timb-SM_GrigKnob-44pan_47x48-129.json
new file mode 100644
index 0000000..a0ba86e
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-44pan_47x48-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-44pan_47x48-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-44pan_47x48-129.png b/site/controls/Timb-SM_GrigKnob-44pan_47x48-129.png
new file mode 100644
index 0000000..2109c37
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-44pan_47x48-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-44vol_47x48-129.json b/site/controls/Timb-SM_GrigKnob-44vol_47x48-129.json
new file mode 100644
index 0000000..df7c469
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-44vol_47x48-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-44vol_47x48-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-44vol_47x48-129.png b/site/controls/Timb-SM_GrigKnob-44vol_47x48-129.png
new file mode 100644
index 0000000..6402746
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-44vol_47x48-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-46pan_47x48-129.json b/site/controls/Timb-SM_GrigKnob-46pan_47x48-129.json
new file mode 100644
index 0000000..4a07389
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-46pan_47x48-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-46pan_47x48-129.png", "cellw": 47} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-46pan_47x48-129.png b/site/controls/Timb-SM_GrigKnob-46pan_47x48-129.png
new file mode 100644
index 0000000..b299e12
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-46pan_47x48-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_GrigKnob-46vol_47x48-129.json b/site/controls/Timb-SM_GrigKnob-46vol_47x48-129.json
new file mode 100644
index 0000000..405ffad
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-46vol_47x48-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-46vol_47x48-129.png", "cellw": 47} \ No newline at end of file
diff --git a/site/controls/Timb-SM_GrigKnob-46vol_47x48-129.png b/site/controls/Timb-SM_GrigKnob-46vol_47x48-129.png
new file mode 100644
index 0000000..ea8879b
--- /dev/null
+++ b/site/controls/Timb-SM_GrigKnob-46vol_47x48-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey's Set 01a_50x50-129.json b/site/controls/Timb-SM_Loopey's Set 01a_50x50-129.json
new file mode 100644
index 0000000..9d59f71
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 01a_50x50-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 01a_50x50-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey's Set 01a_50x50-129.png b/site/controls/Timb-SM_Loopey's Set 01a_50x50-129.png
new file mode 100644
index 0000000..88bda59
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 01a_50x50-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey's Set 01b_50x50-129.json b/site/controls/Timb-SM_Loopey's Set 01b_50x50-129.json
new file mode 100644
index 0000000..5726fa3
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 01b_50x50-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 01b_50x50-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey's Set 01b_50x50-129.png b/site/controls/Timb-SM_Loopey's Set 01b_50x50-129.png
new file mode 100644
index 0000000..c267c4e
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 01b_50x50-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey's Set 01c_50x50-129.json b/site/controls/Timb-SM_Loopey's Set 01c_50x50-129.json
new file mode 100644
index 0000000..81897b8
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 01c_50x50-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 01c_50x50-129.png", "cellw": 50} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey's Set 01c_50x50-129.png b/site/controls/Timb-SM_Loopey's Set 01c_50x50-129.png
new file mode 100644
index 0000000..d9941f0
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 01c_50x50-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey's Set 02a_50x50-101.json b/site/controls/Timb-SM_Loopey's Set 02a_50x50-101.json
new file mode 100644
index 0000000..97297a3
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02a_50x50-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02a_50x50-101.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey's Set 02a_50x50-101.png b/site/controls/Timb-SM_Loopey's Set 02a_50x50-101.png
new file mode 100644
index 0000000..35f0b3d
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02a_50x50-101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey's Set 02b_40x40-127.json b/site/controls/Timb-SM_Loopey's Set 02b_40x40-127.json
new file mode 100644
index 0000000..754c7a1
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02b_40x40-127.json
@@ -0,0 +1 @@
+{"frames": 127, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02b_40x40-127.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey's Set 02b_40x40-127.png b/site/controls/Timb-SM_Loopey's Set 02b_40x40-127.png
new file mode 100644
index 0000000..b14be06
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02b_40x40-127.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey's Set 02c_40x40-101.json b/site/controls/Timb-SM_Loopey's Set 02c_40x40-101.json
new file mode 100644
index 0000000..f6f207a
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02c_40x40-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02c_40x40-101.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey's Set 02c_40x40-101.png b/site/controls/Timb-SM_Loopey's Set 02c_40x40-101.png
new file mode 100644
index 0000000..bd64bbb
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02c_40x40-101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey's Set 02d_40x40-101.json b/site/controls/Timb-SM_Loopey's Set 02d_40x40-101.json
new file mode 100644
index 0000000..11ac430
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02d_40x40-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02d_40x40-101.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey's Set 02d_40x40-101.png b/site/controls/Timb-SM_Loopey's Set 02d_40x40-101.png
new file mode 100644
index 0000000..7a1d407
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02d_40x40-101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey's Set 02e_50x50-101.json b/site/controls/Timb-SM_Loopey's Set 02e_50x50-101.json
new file mode 100644
index 0000000..3f5813f
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02e_50x50-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02e_50x50-101.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey's Set 02e_50x50-101.png b/site/controls/Timb-SM_Loopey's Set 02e_50x50-101.png
new file mode 100644
index 0000000..1b1407e
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02e_50x50-101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey's Set 02f_30x30-101.json b/site/controls/Timb-SM_Loopey's Set 02f_30x30-101.json
new file mode 100644
index 0000000..da36630
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02f_30x30-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 30, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02f_30x30-101.png", "cellw": 30} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey's Set 02f_30x30-101.png b/site/controls/Timb-SM_Loopey's Set 02f_30x30-101.png
new file mode 100644
index 0000000..b42f3be
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey's Set 02f_30x30-101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Loopey-VMX200_48x48-101.json b/site/controls/Timb-SM_Loopey-VMX200_48x48-101.json
new file mode 100644
index 0000000..6b00ff8
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey-VMX200_48x48-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_Loopey-VMX200_48x48-101.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Loopey-VMX200_48x48-101.png b/site/controls/Timb-SM_Loopey-VMX200_48x48-101.png
new file mode 100644
index 0000000..b37ddab
--- /dev/null
+++ b/site/controls/Timb-SM_Loopey-VMX200_48x48-101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Monday Knobs-01_80101.json b/site/controls/Timb-SM_Monday Knobs-01_80101.json
new file mode 100644
index 0000000..87c9d7f
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-01_80101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-01_80101.png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Monday Knobs-01_80101.png b/site/controls/Timb-SM_Monday Knobs-01_80101.png
new file mode 100644
index 0000000..e6340e0
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-01_80101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Monday Knobs-02_80101.json b/site/controls/Timb-SM_Monday Knobs-02_80101.json
new file mode 100644
index 0000000..eb510f2
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-02_80101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-02_80101.png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Monday Knobs-02_80101.png b/site/controls/Timb-SM_Monday Knobs-02_80101.png
new file mode 100644
index 0000000..f4a938f
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-02_80101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Monday Knobs-03_80101.json b/site/controls/Timb-SM_Monday Knobs-03_80101.json
new file mode 100644
index 0000000..ef90138
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-03_80101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-03_80101.png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Monday Knobs-03_80101.png b/site/controls/Timb-SM_Monday Knobs-03_80101.png
new file mode 100644
index 0000000..54a3f54
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-03_80101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Monday Knobs-04_80101.json b/site/controls/Timb-SM_Monday Knobs-04_80101.json
new file mode 100644
index 0000000..2297b72
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-04_80101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-04_80101.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Monday Knobs-04_80101.png b/site/controls/Timb-SM_Monday Knobs-04_80101.png
new file mode 100644
index 0000000..fbcdb46
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-04_80101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Monday Knobs-05_80101.json b/site/controls/Timb-SM_Monday Knobs-05_80101.json
new file mode 100644
index 0000000..62a44f1
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-05_80101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-05_80101.png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Monday Knobs-05_80101.png b/site/controls/Timb-SM_Monday Knobs-05_80101.png
new file mode 100644
index 0000000..e4c6238
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-05_80101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Monday Knobs-06_84101.json b/site/controls/Timb-SM_Monday Knobs-06_84101.json
new file mode 100644
index 0000000..07ecec8
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-06_84101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 84, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-06_84101.png", "cellw": 84} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Monday Knobs-06_84101.png b/site/controls/Timb-SM_Monday Knobs-06_84101.png
new file mode 100644
index 0000000..70140b7
--- /dev/null
+++ b/site/controls/Timb-SM_Monday Knobs-06_84101.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_24128-01ver.json b/site/controls/Timb-SM_OptGrx2_24128-01ver.json
new file mode 100644
index 0000000..e47d9cc
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_24128-01ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 24, "ctltype": 0, "fn": "Timb-SM_OptGrx2_24128-01ver.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_24128-01ver.png b/site/controls/Timb-SM_OptGrx2_24128-01ver.png
new file mode 100644
index 0000000..119493c
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_24128-01ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_24128-03ver.json b/site/controls/Timb-SM_OptGrx2_24128-03ver.json
new file mode 100644
index 0000000..3ae7a63
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_24128-03ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 24, "ctltype": 0, "fn": "Timb-SM_OptGrx2_24128-03ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_24128-03ver.png b/site/controls/Timb-SM_OptGrx2_24128-03ver.png
new file mode 100644
index 0000000..43fd8ea
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_24128-03ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_24128-13ver.json b/site/controls/Timb-SM_OptGrx2_24128-13ver.json
new file mode 100644
index 0000000..a0896dd
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_24128-13ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 24, "ctltype": 0, "fn": "Timb-SM_OptGrx2_24128-13ver.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_24128-13ver.png b/site/controls/Timb-SM_OptGrx2_24128-13ver.png
new file mode 100644
index 0000000..e2e4963
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_24128-13ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-01ver.json b/site/controls/Timb-SM_OptGrx2_32128-01ver.json
new file mode 100644
index 0000000..2801e5e
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-01ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-01ver.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-01ver.png b/site/controls/Timb-SM_OptGrx2_32128-01ver.png
new file mode 100644
index 0000000..011401b
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-01ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-02ver.json b/site/controls/Timb-SM_OptGrx2_32128-02ver.json
new file mode 100644
index 0000000..b2098c8
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-02ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-02ver.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-02ver.png b/site/controls/Timb-SM_OptGrx2_32128-02ver.png
new file mode 100644
index 0000000..80d3126
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-02ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-03ver.json b/site/controls/Timb-SM_OptGrx2_32128-03ver.json
new file mode 100644
index 0000000..01a202e
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-03ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-03ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-03ver.png b/site/controls/Timb-SM_OptGrx2_32128-03ver.png
new file mode 100644
index 0000000..ae8d286
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-03ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-04ver.json b/site/controls/Timb-SM_OptGrx2_32128-04ver.json
new file mode 100644
index 0000000..dd8274e
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-04ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-04ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-04ver.png b/site/controls/Timb-SM_OptGrx2_32128-04ver.png
new file mode 100644
index 0000000..0c4f3a6
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-04ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-05ver.json b/site/controls/Timb-SM_OptGrx2_32128-05ver.json
new file mode 100644
index 0000000..83a339e
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-05ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-05ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-05ver.png b/site/controls/Timb-SM_OptGrx2_32128-05ver.png
new file mode 100644
index 0000000..5eb8d63
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-05ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-06ver.json b/site/controls/Timb-SM_OptGrx2_32128-06ver.json
new file mode 100644
index 0000000..1e77b01
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-06ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-06ver.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-06ver.png b/site/controls/Timb-SM_OptGrx2_32128-06ver.png
new file mode 100644
index 0000000..e4a2048
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-06ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-07ver.json b/site/controls/Timb-SM_OptGrx2_32128-07ver.json
new file mode 100644
index 0000000..814fc1a
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-07ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-07ver.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-07ver.png b/site/controls/Timb-SM_OptGrx2_32128-07ver.png
new file mode 100644
index 0000000..4b4b2f7
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-07ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-08ver.json b/site/controls/Timb-SM_OptGrx2_32128-08ver.json
new file mode 100644
index 0000000..1c3033a
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-08ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-08ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-08ver.png b/site/controls/Timb-SM_OptGrx2_32128-08ver.png
new file mode 100644
index 0000000..845efc2
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-08ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-09ver.json b/site/controls/Timb-SM_OptGrx2_32128-09ver.json
new file mode 100644
index 0000000..cea3a96
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-09ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-09ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-09ver.png b/site/controls/Timb-SM_OptGrx2_32128-09ver.png
new file mode 100644
index 0000000..0da0211
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-09ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-10ver.json b/site/controls/Timb-SM_OptGrx2_32128-10ver.json
new file mode 100644
index 0000000..23e200c
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-10ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-10ver.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-10ver.png b/site/controls/Timb-SM_OptGrx2_32128-10ver.png
new file mode 100644
index 0000000..3008758
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-10ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-11ver.json b/site/controls/Timb-SM_OptGrx2_32128-11ver.json
new file mode 100644
index 0000000..c5a74e2
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-11ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-11ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-11ver.png b/site/controls/Timb-SM_OptGrx2_32128-11ver.png
new file mode 100644
index 0000000..1b1ebc3
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-11ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-12ver.json b/site/controls/Timb-SM_OptGrx2_32128-12ver.json
new file mode 100644
index 0000000..1990779
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-12ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-12ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-12ver.png b/site/controls/Timb-SM_OptGrx2_32128-12ver.png
new file mode 100644
index 0000000..a16b234
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-12ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-13ver.json b/site/controls/Timb-SM_OptGrx2_32128-13ver.json
new file mode 100644
index 0000000..59c7177
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-13ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-13ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-13ver.png b/site/controls/Timb-SM_OptGrx2_32128-13ver.png
new file mode 100644
index 0000000..63f2f3d
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-13ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-14ver.json b/site/controls/Timb-SM_OptGrx2_32128-14ver.json
new file mode 100644
index 0000000..3e4a347
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-14ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-14ver.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-14ver.png b/site/controls/Timb-SM_OptGrx2_32128-14ver.png
new file mode 100644
index 0000000..9766b2e
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-14ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-15ver.json b/site/controls/Timb-SM_OptGrx2_32128-15ver.json
new file mode 100644
index 0000000..88ab23e
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-15ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-15ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-15ver.png b/site/controls/Timb-SM_OptGrx2_32128-15ver.png
new file mode 100644
index 0000000..ace814d
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-15ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-16ver.json b/site/controls/Timb-SM_OptGrx2_32128-16ver.json
new file mode 100644
index 0000000..35b2d1c
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-16ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-16ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-16ver.png b/site/controls/Timb-SM_OptGrx2_32128-16ver.png
new file mode 100644
index 0000000..61f1bdb
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-16ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-17ver.json b/site/controls/Timb-SM_OptGrx2_32128-17ver.json
new file mode 100644
index 0000000..d229eec
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-17ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-17ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-17ver.png b/site/controls/Timb-SM_OptGrx2_32128-17ver.png
new file mode 100644
index 0000000..5807163
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-17ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-18ver.json b/site/controls/Timb-SM_OptGrx2_32128-18ver.json
new file mode 100644
index 0000000..47d26ec
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-18ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-18ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-18ver.png b/site/controls/Timb-SM_OptGrx2_32128-18ver.png
new file mode 100644
index 0000000..e145fb9
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-18ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_32128-19ver.json b/site/controls/Timb-SM_OptGrx2_32128-19ver.json
new file mode 100644
index 0000000..3d09329
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-19ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-19ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_32128-19ver.png b/site/controls/Timb-SM_OptGrx2_32128-19ver.png
new file mode 100644
index 0000000..1499de2
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_32128-19ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-01ver.json b/site/controls/Timb-SM_OptGrx2_40128-01ver.json
new file mode 100644
index 0000000..adce95a
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-01ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-01ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-01ver.png b/site/controls/Timb-SM_OptGrx2_40128-01ver.png
new file mode 100644
index 0000000..81d574e
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-01ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-02ver.json b/site/controls/Timb-SM_OptGrx2_40128-02ver.json
new file mode 100644
index 0000000..e536aed
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-02ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-02ver.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-02ver.png b/site/controls/Timb-SM_OptGrx2_40128-02ver.png
new file mode 100644
index 0000000..0671d41
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-02ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-03ver.json b/site/controls/Timb-SM_OptGrx2_40128-03ver.json
new file mode 100644
index 0000000..347388e
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-03ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-03ver.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-03ver.png b/site/controls/Timb-SM_OptGrx2_40128-03ver.png
new file mode 100644
index 0000000..3c49fb5
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-03ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-04ver.json b/site/controls/Timb-SM_OptGrx2_40128-04ver.json
new file mode 100644
index 0000000..64d01ad
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-04ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-04ver.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-04ver.png b/site/controls/Timb-SM_OptGrx2_40128-04ver.png
new file mode 100644
index 0000000..438ec56
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-04ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-05ver.json b/site/controls/Timb-SM_OptGrx2_40128-05ver.json
new file mode 100644
index 0000000..869f4bf
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-05ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-05ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-05ver.png b/site/controls/Timb-SM_OptGrx2_40128-05ver.png
new file mode 100644
index 0000000..c368b57
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-05ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-06ver.json b/site/controls/Timb-SM_OptGrx2_40128-06ver.json
new file mode 100644
index 0000000..f05b4fa
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-06ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-06ver.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-06ver.png b/site/controls/Timb-SM_OptGrx2_40128-06ver.png
new file mode 100644
index 0000000..b7a9be7
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-06ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-07ver.json b/site/controls/Timb-SM_OptGrx2_40128-07ver.json
new file mode 100644
index 0000000..20165e4
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-07ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-07ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-07ver.png b/site/controls/Timb-SM_OptGrx2_40128-07ver.png
new file mode 100644
index 0000000..73aa1d4
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-07ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-08ver.json b/site/controls/Timb-SM_OptGrx2_40128-08ver.json
new file mode 100644
index 0000000..71fae6c
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-08ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-08ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-08ver.png b/site/controls/Timb-SM_OptGrx2_40128-08ver.png
new file mode 100644
index 0000000..3f72665
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-08ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-09ver.json b/site/controls/Timb-SM_OptGrx2_40128-09ver.json
new file mode 100644
index 0000000..d30a38a
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-09ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-09ver.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-09ver.png b/site/controls/Timb-SM_OptGrx2_40128-09ver.png
new file mode 100644
index 0000000..7b66bd3
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-09ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-10ver.json b/site/controls/Timb-SM_OptGrx2_40128-10ver.json
new file mode 100644
index 0000000..1d7cec4
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-10ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-10ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-10ver.png b/site/controls/Timb-SM_OptGrx2_40128-10ver.png
new file mode 100644
index 0000000..4455ba4
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-10ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-11ver.json b/site/controls/Timb-SM_OptGrx2_40128-11ver.json
new file mode 100644
index 0000000..8f1b09c
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-11ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-11ver.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-11ver.png b/site/controls/Timb-SM_OptGrx2_40128-11ver.png
new file mode 100644
index 0000000..2dbe64c
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-11ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-12ver.json b/site/controls/Timb-SM_OptGrx2_40128-12ver.json
new file mode 100644
index 0000000..9c75ac6
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-12ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-12ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-12ver.png b/site/controls/Timb-SM_OptGrx2_40128-12ver.png
new file mode 100644
index 0000000..93a5bf1
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-12ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-13ver.json b/site/controls/Timb-SM_OptGrx2_40128-13ver.json
new file mode 100644
index 0000000..b082e3b
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-13ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-13ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-13ver.png b/site/controls/Timb-SM_OptGrx2_40128-13ver.png
new file mode 100644
index 0000000..e129ad5
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-13ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-14ver.json b/site/controls/Timb-SM_OptGrx2_40128-14ver.json
new file mode 100644
index 0000000..8ddc5c7
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-14ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-14ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-14ver.png b/site/controls/Timb-SM_OptGrx2_40128-14ver.png
new file mode 100644
index 0000000..eff01c3
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-14ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-15ver.json b/site/controls/Timb-SM_OptGrx2_40128-15ver.json
new file mode 100644
index 0000000..31b0b7a
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-15ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-15ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-15ver.png b/site/controls/Timb-SM_OptGrx2_40128-15ver.png
new file mode 100644
index 0000000..62bfbab
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-15ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-16ver.json b/site/controls/Timb-SM_OptGrx2_40128-16ver.json
new file mode 100644
index 0000000..bde31c6
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-16ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-16ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-16ver.png b/site/controls/Timb-SM_OptGrx2_40128-16ver.png
new file mode 100644
index 0000000..1f90163
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-16ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-17ver.json b/site/controls/Timb-SM_OptGrx2_40128-17ver.json
new file mode 100644
index 0000000..0217397
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-17ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-17ver.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-17ver.png b/site/controls/Timb-SM_OptGrx2_40128-17ver.png
new file mode 100644
index 0000000..26cf82a
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-17ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-18ver.json b/site/controls/Timb-SM_OptGrx2_40128-18ver.json
new file mode 100644
index 0000000..5aed48e
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-18ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-18ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-18ver.png b/site/controls/Timb-SM_OptGrx2_40128-18ver.png
new file mode 100644
index 0000000..f9d712c
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-18ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_40128-19ver.json b/site/controls/Timb-SM_OptGrx2_40128-19ver.json
new file mode 100644
index 0000000..c4c7774
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-19ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-19ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_40128-19ver.png b/site/controls/Timb-SM_OptGrx2_40128-19ver.png
new file mode 100644
index 0000000..661c7c6
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_40128-19ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-01ver.json b/site/controls/Timb-SM_OptGrx2_64128-01ver.json
new file mode 100644
index 0000000..a6e3550
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-01ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-01ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-01ver.png b/site/controls/Timb-SM_OptGrx2_64128-01ver.png
new file mode 100644
index 0000000..eac45a5
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-01ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-02ver.json b/site/controls/Timb-SM_OptGrx2_64128-02ver.json
new file mode 100644
index 0000000..33a88a7
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-02ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-02ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-02ver.png b/site/controls/Timb-SM_OptGrx2_64128-02ver.png
new file mode 100644
index 0000000..ce13046
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-02ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-03ver.json b/site/controls/Timb-SM_OptGrx2_64128-03ver.json
new file mode 100644
index 0000000..a6eb4a1
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-03ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-03ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-03ver.png b/site/controls/Timb-SM_OptGrx2_64128-03ver.png
new file mode 100644
index 0000000..05704e8
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-03ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-04ver.json b/site/controls/Timb-SM_OptGrx2_64128-04ver.json
new file mode 100644
index 0000000..2f6f518
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-04ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-04ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-04ver.png b/site/controls/Timb-SM_OptGrx2_64128-04ver.png
new file mode 100644
index 0000000..f02c4bb
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-04ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-05ver.json b/site/controls/Timb-SM_OptGrx2_64128-05ver.json
new file mode 100644
index 0000000..7732606
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-05ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-05ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-05ver.png b/site/controls/Timb-SM_OptGrx2_64128-05ver.png
new file mode 100644
index 0000000..0f6291f
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-05ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-06ver.json b/site/controls/Timb-SM_OptGrx2_64128-06ver.json
new file mode 100644
index 0000000..f2e150a
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-06ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-06ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-06ver.png b/site/controls/Timb-SM_OptGrx2_64128-06ver.png
new file mode 100644
index 0000000..8fbda69
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-06ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-07ver.json b/site/controls/Timb-SM_OptGrx2_64128-07ver.json
new file mode 100644
index 0000000..111c9bc
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-07ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-07ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-07ver.png b/site/controls/Timb-SM_OptGrx2_64128-07ver.png
new file mode 100644
index 0000000..064f814
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-07ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-08ver.json b/site/controls/Timb-SM_OptGrx2_64128-08ver.json
new file mode 100644
index 0000000..3c88cb5
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-08ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-08ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-08ver.png b/site/controls/Timb-SM_OptGrx2_64128-08ver.png
new file mode 100644
index 0000000..f58f6f6
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-08ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-09ver.json b/site/controls/Timb-SM_OptGrx2_64128-09ver.json
new file mode 100644
index 0000000..84eed3a
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-09ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-09ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-09ver.png b/site/controls/Timb-SM_OptGrx2_64128-09ver.png
new file mode 100644
index 0000000..d3f6cbd
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-09ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-10ver.json b/site/controls/Timb-SM_OptGrx2_64128-10ver.json
new file mode 100644
index 0000000..e8049b6
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-10ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-10ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-10ver.png b/site/controls/Timb-SM_OptGrx2_64128-10ver.png
new file mode 100644
index 0000000..fe9b339
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-10ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-11ver.json b/site/controls/Timb-SM_OptGrx2_64128-11ver.json
new file mode 100644
index 0000000..9d3d443
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-11ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-11ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-11ver.png b/site/controls/Timb-SM_OptGrx2_64128-11ver.png
new file mode 100644
index 0000000..79d2f25
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-11ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-12ver.json b/site/controls/Timb-SM_OptGrx2_64128-12ver.json
new file mode 100644
index 0000000..499a6eb
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-12ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-12ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-12ver.png b/site/controls/Timb-SM_OptGrx2_64128-12ver.png
new file mode 100644
index 0000000..31619b0
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-12ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-13ver.json b/site/controls/Timb-SM_OptGrx2_64128-13ver.json
new file mode 100644
index 0000000..9f1bef7
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-13ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-13ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-13ver.png b/site/controls/Timb-SM_OptGrx2_64128-13ver.png
new file mode 100644
index 0000000..c8296f7
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-13ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-14ver.json b/site/controls/Timb-SM_OptGrx2_64128-14ver.json
new file mode 100644
index 0000000..26f0c89
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-14ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-14ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-14ver.png b/site/controls/Timb-SM_OptGrx2_64128-14ver.png
new file mode 100644
index 0000000..dde1da9
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-14ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-15ver.json b/site/controls/Timb-SM_OptGrx2_64128-15ver.json
new file mode 100644
index 0000000..b86d350
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-15ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-15ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-15ver.png b/site/controls/Timb-SM_OptGrx2_64128-15ver.png
new file mode 100644
index 0000000..7feeb56
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-15ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-16ver.json b/site/controls/Timb-SM_OptGrx2_64128-16ver.json
new file mode 100644
index 0000000..15155b9
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-16ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-16ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-16ver.png b/site/controls/Timb-SM_OptGrx2_64128-16ver.png
new file mode 100644
index 0000000..8c0a161
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-16ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-17ver.json b/site/controls/Timb-SM_OptGrx2_64128-17ver.json
new file mode 100644
index 0000000..6623eb1
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-17ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-17ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-17ver.png b/site/controls/Timb-SM_OptGrx2_64128-17ver.png
new file mode 100644
index 0000000..2116b84
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-17ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-18ver.json b/site/controls/Timb-SM_OptGrx2_64128-18ver.json
new file mode 100644
index 0000000..1277435
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-18ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-18ver.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-18ver.png b/site/controls/Timb-SM_OptGrx2_64128-18ver.png
new file mode 100644
index 0000000..dfa80fe
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-18ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_OptGrx2_64128-19ver.json b/site/controls/Timb-SM_OptGrx2_64128-19ver.json
new file mode 100644
index 0000000..6b2fc85
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-19ver.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-19ver.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb-SM_OptGrx2_64128-19ver.png b/site/controls/Timb-SM_OptGrx2_64128-19ver.png
new file mode 100644
index 0000000..1f65581
--- /dev/null
+++ b/site/controls/Timb-SM_OptGrx2_64128-19ver.png
Binary files differ
diff --git a/site/controls/Timb-SM_ROLVL_43128.json b/site/controls/Timb-SM_ROLVL_43128.json
new file mode 100644
index 0000000..be0888b
--- /dev/null
+++ b/site/controls/Timb-SM_ROLVL_43128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 43, "ctltype": 0, "fn": "Timb-SM_ROLVL_43128.png", "cellw": 43} \ No newline at end of file
diff --git a/site/controls/Timb-SM_ROLVL_43128.png b/site/controls/Timb-SM_ROLVL_43128.png
new file mode 100644
index 0000000..b5dfe4e
--- /dev/null
+++ b/site/controls/Timb-SM_ROLVL_43128.png
Binary files differ
diff --git a/site/controls/Timb-SM_RazorPAN_50x50-101.json b/site/controls/Timb-SM_RazorPAN_50x50-101.json
new file mode 100644
index 0000000..5612b1b
--- /dev/null
+++ b/site/controls/Timb-SM_RazorPAN_50x50-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_RazorPAN_50x50-101.png", "cellw": 50} \ No newline at end of file
diff --git a/site/controls/Timb-SM_RazorPAN_50x50-101.png b/site/controls/Timb-SM_RazorPAN_50x50-101.png
new file mode 100644
index 0000000..566c8d8
--- /dev/null
+++ b/site/controls/Timb-SM_RazorPAN_50x50-101.png
Binary files differ
diff --git a/site/controls/Timb-SM_RazorVOL_50x50-101.json b/site/controls/Timb-SM_RazorVOL_50x50-101.json
new file mode 100644
index 0000000..e589180
--- /dev/null
+++ b/site/controls/Timb-SM_RazorVOL_50x50-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_RazorVOL_50x50-101.png", "cellw": 50} \ No newline at end of file
diff --git a/site/controls/Timb-SM_RazorVOL_50x50-101.png b/site/controls/Timb-SM_RazorVOL_50x50-101.png
new file mode 100644
index 0000000..7706ceb
--- /dev/null
+++ b/site/controls/Timb-SM_RazorVOL_50x50-101.png
Binary files differ
diff --git a/site/controls/Timb-SM_Replica's_01_16x100-31fr.json b/site/controls/Timb-SM_Replica's_01_16x100-31fr.json
new file mode 100644
index 0000000..5ebf7f6
--- /dev/null
+++ b/site/controls/Timb-SM_Replica's_01_16x100-31fr.json
@@ -0,0 +1 @@
+{"frames": 31, "cellh": 16, "ctltype": 1, "fn": "Timb-SM_Replica's_01_16x100-31fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Replica's_01_16x100-31fr.png b/site/controls/Timb-SM_Replica's_01_16x100-31fr.png
new file mode 100644
index 0000000..7daa774
--- /dev/null
+++ b/site/controls/Timb-SM_Replica's_01_16x100-31fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Replica's_02B_14x100-129.json b/site/controls/Timb-SM_Replica's_02B_14x100-129.json
new file mode 100644
index 0000000..678ca2f
--- /dev/null
+++ b/site/controls/Timb-SM_Replica's_02B_14x100-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 14, "ctltype": 1, "fn": "Timb-SM_Replica's_02B_14x100-129.png", "cellw": 100} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Replica's_02B_14x100-129.png b/site/controls/Timb-SM_Replica's_02B_14x100-129.png
new file mode 100644
index 0000000..565e591
--- /dev/null
+++ b/site/controls/Timb-SM_Replica's_02B_14x100-129.png
Binary files differ
diff --git a/site/controls/Timb-SM_Replica's_02_16x100-31fr.json b/site/controls/Timb-SM_Replica's_02_16x100-31fr.json
new file mode 100644
index 0000000..ef25e8e
--- /dev/null
+++ b/site/controls/Timb-SM_Replica's_02_16x100-31fr.json
@@ -0,0 +1 @@
+{"frames": 31, "cellh": 16, "ctltype": 1, "fn": "Timb-SM_Replica's_02_16x100-31fr.png", "cellw": 100} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Replica's_02_16x100-31fr.png b/site/controls/Timb-SM_Replica's_02_16x100-31fr.png
new file mode 100644
index 0000000..ef26b20
--- /dev/null
+++ b/site/controls/Timb-SM_Replica's_02_16x100-31fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Retro_75100.json b/site/controls/Timb-SM_Retro_75100.json
new file mode 100644
index 0000000..c80f84b
--- /dev/null
+++ b/site/controls/Timb-SM_Retro_75100.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 75, "ctltype": 0, "fn": "Timb-SM_Retro_75100.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Retro_75100.png b/site/controls/Timb-SM_Retro_75100.png
new file mode 100644
index 0000000..42f3100
--- /dev/null
+++ b/site/controls/Timb-SM_Retro_75100.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_01-A_100101fr.json b/site/controls/Timb-SM_Saturday Knobs_01-A_100101fr.json
new file mode 100644
index 0000000..d46dd91
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_01-A_100101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 100, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_01-A_100101fr.png", "cellw": 100} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_01-A_100101fr.png b/site/controls/Timb-SM_Saturday Knobs_01-A_100101fr.png
new file mode 100644
index 0000000..33b46a4
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_01-A_100101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_01-B_80101fr.json b/site/controls/Timb-SM_Saturday Knobs_01-B_80101fr.json
new file mode 100644
index 0000000..b901dd7
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_01-B_80101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_01-B_80101fr.png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_01-B_80101fr.png b/site/controls/Timb-SM_Saturday Knobs_01-B_80101fr.png
new file mode 100644
index 0000000..224eab0
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_01-B_80101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_01-C_60101fr.json b/site/controls/Timb-SM_Saturday Knobs_01-C_60101fr.json
new file mode 100644
index 0000000..97774bd
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_01-C_60101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_01-C_60101fr.png", "cellw": 60} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_01-C_60101fr.png b/site/controls/Timb-SM_Saturday Knobs_01-C_60101fr.png
new file mode 100644
index 0000000..fde4080
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_01-C_60101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_01-D_40101fr.json b/site/controls/Timb-SM_Saturday Knobs_01-D_40101fr.json
new file mode 100644
index 0000000..7867da4
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_01-D_40101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_01-D_40101fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_01-D_40101fr.png b/site/controls/Timb-SM_Saturday Knobs_01-D_40101fr.png
new file mode 100644
index 0000000..a75d8ff
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_01-D_40101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_02-A_100101fr.json b/site/controls/Timb-SM_Saturday Knobs_02-A_100101fr.json
new file mode 100644
index 0000000..c37a28f
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_02-A_100101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 100, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_02-A_100101fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_02-A_100101fr.png b/site/controls/Timb-SM_Saturday Knobs_02-A_100101fr.png
new file mode 100644
index 0000000..80d5005
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_02-A_100101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_02-B_80101fr.json b/site/controls/Timb-SM_Saturday Knobs_02-B_80101fr.json
new file mode 100644
index 0000000..f2f4ae3
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_02-B_80101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_02-B_80101fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_02-B_80101fr.png b/site/controls/Timb-SM_Saturday Knobs_02-B_80101fr.png
new file mode 100644
index 0000000..15025fb
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_02-B_80101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_02-C_60101fr.json b/site/controls/Timb-SM_Saturday Knobs_02-C_60101fr.json
new file mode 100644
index 0000000..eea1c9d
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_02-C_60101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_02-C_60101fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_02-C_60101fr.png b/site/controls/Timb-SM_Saturday Knobs_02-C_60101fr.png
new file mode 100644
index 0000000..336b14c
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_02-C_60101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_02-D_40101fr.json b/site/controls/Timb-SM_Saturday Knobs_02-D_40101fr.json
new file mode 100644
index 0000000..03ecf8b
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_02-D_40101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_02-D_40101fr.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_02-D_40101fr.png b/site/controls/Timb-SM_Saturday Knobs_02-D_40101fr.png
new file mode 100644
index 0000000..5c608a1
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_02-D_40101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_03-A_100101fr.json b/site/controls/Timb-SM_Saturday Knobs_03-A_100101fr.json
new file mode 100644
index 0000000..6b90c4c
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_03-A_100101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 100, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_03-A_100101fr.png", "cellw": 100} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_03-A_100101fr.png b/site/controls/Timb-SM_Saturday Knobs_03-A_100101fr.png
new file mode 100644
index 0000000..1e0af0d
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_03-A_100101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_03-B_80101fr.json b/site/controls/Timb-SM_Saturday Knobs_03-B_80101fr.json
new file mode 100644
index 0000000..99fd1dd
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_03-B_80101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_03-B_80101fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_03-B_80101fr.png b/site/controls/Timb-SM_Saturday Knobs_03-B_80101fr.png
new file mode 100644
index 0000000..6bedf5a
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_03-B_80101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_03-C_60101fr.json b/site/controls/Timb-SM_Saturday Knobs_03-C_60101fr.json
new file mode 100644
index 0000000..88ddeb3
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_03-C_60101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_03-C_60101fr.png", "cellw": 60} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_03-C_60101fr.png b/site/controls/Timb-SM_Saturday Knobs_03-C_60101fr.png
new file mode 100644
index 0000000..2165c0e
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_03-C_60101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_Saturday Knobs_03-D_40101fr.json b/site/controls/Timb-SM_Saturday Knobs_03-D_40101fr.json
new file mode 100644
index 0000000..1609c01
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_03-D_40101fr.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_03-D_40101fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_Saturday Knobs_03-D_40101fr.png b/site/controls/Timb-SM_Saturday Knobs_03-D_40101fr.png
new file mode 100644
index 0000000..3023483
--- /dev/null
+++ b/site/controls/Timb-SM_Saturday Knobs_03-D_40101fr.png
Binary files differ
diff --git a/site/controls/Timb-SM_ShapePAN_50120.json b/site/controls/Timb-SM_ShapePAN_50120.json
new file mode 100644
index 0000000..c23e023
--- /dev/null
+++ b/site/controls/Timb-SM_ShapePAN_50120.json
@@ -0,0 +1 @@
+{"frames": 120, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_ShapePAN_50120.png", "cellw": 50} \ No newline at end of file
diff --git a/site/controls/Timb-SM_ShapePAN_50120.png b/site/controls/Timb-SM_ShapePAN_50120.png
new file mode 100644
index 0000000..ba2b6f7
--- /dev/null
+++ b/site/controls/Timb-SM_ShapePAN_50120.png
Binary files differ
diff --git a/site/controls/Timb-SM_cuteblue_60128.json b/site/controls/Timb-SM_cuteblue_60128.json
new file mode 100644
index 0000000..9a5e264
--- /dev/null
+++ b/site/controls/Timb-SM_cuteblue_60128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_cuteblue_60128.png", "cellw": 60} \ No newline at end of file
diff --git a/site/controls/Timb-SM_cuteblue_60128.png b/site/controls/Timb-SM_cuteblue_60128.png
new file mode 100644
index 0000000..2bb953d
--- /dev/null
+++ b/site/controls/Timb-SM_cuteblue_60128.png
Binary files differ
diff --git a/site/controls/Timb-SM_cutemat_59128.json b/site/controls/Timb-SM_cutemat_59128.json
new file mode 100644
index 0000000..3eabb86
--- /dev/null
+++ b/site/controls/Timb-SM_cutemat_59128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 59, "ctltype": 0, "fn": "Timb-SM_cutemat_59128.png"} \ No newline at end of file
diff --git a/site/controls/Timb-SM_cutemat_59128.png b/site/controls/Timb-SM_cutemat_59128.png
new file mode 100644
index 0000000..eac8eee
--- /dev/null
+++ b/site/controls/Timb-SM_cutemat_59128.png
Binary files differ
diff --git a/site/controls/Timb-SM_longcent_44100.json b/site/controls/Timb-SM_longcent_44100.json
new file mode 100644
index 0000000..6c2d96d
--- /dev/null
+++ b/site/controls/Timb-SM_longcent_44100.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 44, "ctltype": 0, "fn": "Timb-SM_longcent_44100.png", "cellw": 44} \ No newline at end of file
diff --git a/site/controls/Timb-SM_longcent_44100.png b/site/controls/Timb-SM_longcent_44100.png
new file mode 100644
index 0000000..e0c2b4a
--- /dev/null
+++ b/site/controls/Timb-SM_longcent_44100.png
Binary files differ
diff --git a/site/controls/TimbKMGL_Modern-minimal-mars-128.json b/site/controls/TimbKMGL_Modern-minimal-mars-128.json
new file mode 100644
index 0000000..3ac5cad
--- /dev/null
+++ b/site/controls/TimbKMGL_Modern-minimal-mars-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 128, "ctltype": 0, "fn": "TimbKMGL_Modern-minimal-mars-128.png"} \ No newline at end of file
diff --git a/site/controls/TimbKMGL_Modern-minimal-mars-128.png b/site/controls/TimbKMGL_Modern-minimal-mars-128.png
new file mode 100644
index 0000000..fa03236
--- /dev/null
+++ b/site/controls/TimbKMGL_Modern-minimal-mars-128.png
Binary files differ
diff --git a/site/controls/TimbKMGL_Nice_black_3D_knob_128.json b/site/controls/TimbKMGL_Nice_black_3D_knob_128.json
new file mode 100644
index 0000000..4bc1c9f
--- /dev/null
+++ b/site/controls/TimbKMGL_Nice_black_3D_knob_128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 128, "ctltype": 0, "fn": "TimbKMGL_Nice_black_3D_knob_128.png"} \ No newline at end of file
diff --git a/site/controls/TimbKMGL_Nice_black_3D_knob_128.png b/site/controls/TimbKMGL_Nice_black_3D_knob_128.png
new file mode 100644
index 0000000..66fe560
--- /dev/null
+++ b/site/controls/TimbKMGL_Nice_black_3D_knob_128.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches01.json b/site/controls/TimbSM17_Switches01.json
new file mode 100644
index 0000000..619e833
--- /dev/null
+++ b/site/controls/TimbSM17_Switches01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "TimbSM17_Switches01.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches01.png b/site/controls/TimbSM17_Switches01.png
new file mode 100644
index 0000000..9f53d6c
--- /dev/null
+++ b/site/controls/TimbSM17_Switches01.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches01bb.json b/site/controls/TimbSM17_Switches01bb.json
new file mode 100644
index 0000000..ec7412f
--- /dev/null
+++ b/site/controls/TimbSM17_Switches01bb.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "TimbSM17_Switches01bb.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches01bb.png b/site/controls/TimbSM17_Switches01bb.png
new file mode 100644
index 0000000..116d93c
--- /dev/null
+++ b/site/controls/TimbSM17_Switches01bb.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches02.json b/site/controls/TimbSM17_Switches02.json
new file mode 100644
index 0000000..53e3831
--- /dev/null
+++ b/site/controls/TimbSM17_Switches02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "TimbSM17_Switches02.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches02.png b/site/controls/TimbSM17_Switches02.png
new file mode 100644
index 0000000..72581e6
--- /dev/null
+++ b/site/controls/TimbSM17_Switches02.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches03.json b/site/controls/TimbSM17_Switches03.json
new file mode 100644
index 0000000..83ef003
--- /dev/null
+++ b/site/controls/TimbSM17_Switches03.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 25, "ctltype": 2, "fn": "TimbSM17_Switches03.png", "cellw": 25} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches03.png b/site/controls/TimbSM17_Switches03.png
new file mode 100644
index 0000000..6799dff
--- /dev/null
+++ b/site/controls/TimbSM17_Switches03.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches04.json b/site/controls/TimbSM17_Switches04.json
new file mode 100644
index 0000000..dade7f0
--- /dev/null
+++ b/site/controls/TimbSM17_Switches04.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 44, "ctltype": 2, "fn": "TimbSM17_Switches04.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches04.png b/site/controls/TimbSM17_Switches04.png
new file mode 100644
index 0000000..4d9f96b
--- /dev/null
+++ b/site/controls/TimbSM17_Switches04.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches05.json b/site/controls/TimbSM17_Switches05.json
new file mode 100644
index 0000000..a4ad152
--- /dev/null
+++ b/site/controls/TimbSM17_Switches05.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "TimbSM17_Switches05.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches05.png b/site/controls/TimbSM17_Switches05.png
new file mode 100644
index 0000000..e630f54
--- /dev/null
+++ b/site/controls/TimbSM17_Switches05.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches06.json b/site/controls/TimbSM17_Switches06.json
new file mode 100644
index 0000000..3d8861d
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "TimbSM17_Switches06.png", "cellw": 14} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches06.png b/site/controls/TimbSM17_Switches06.png
new file mode 100644
index 0000000..d2413ed
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches06b.json b/site/controls/TimbSM17_Switches06b.json
new file mode 100644
index 0000000..93644de
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "TimbSM17_Switches06b.png", "cellw": 14} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches06b.png b/site/controls/TimbSM17_Switches06b.png
new file mode 100644
index 0000000..f0a0ac8
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06b.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches06c.json b/site/controls/TimbSM17_Switches06c.json
new file mode 100644
index 0000000..13df8ca
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "TimbSM17_Switches06c.png", "cellw": 14} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches06c.png b/site/controls/TimbSM17_Switches06c.png
new file mode 100644
index 0000000..d47ed23
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06c.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches06c2.json b/site/controls/TimbSM17_Switches06c2.json
new file mode 100644
index 0000000..96c0d42
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06c2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "TimbSM17_Switches06c2.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches06c2.png b/site/controls/TimbSM17_Switches06c2.png
new file mode 100644
index 0000000..8dfa853
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06c2.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches06d8x8.json b/site/controls/TimbSM17_Switches06d8x8.json
new file mode 100644
index 0000000..ca28577
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06d8x8.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "TimbSM17_Switches06d8x8.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches06d8x8.png b/site/controls/TimbSM17_Switches06d8x8.png
new file mode 100644
index 0000000..b832143
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06d8x8.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches06d8x8b.json b/site/controls/TimbSM17_Switches06d8x8b.json
new file mode 100644
index 0000000..1831f6f
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06d8x8b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "TimbSM17_Switches06d8x8b.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches06d8x8b.png b/site/controls/TimbSM17_Switches06d8x8b.png
new file mode 100644
index 0000000..3ef4da7
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06d8x8b.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches06e.json b/site/controls/TimbSM17_Switches06e.json
new file mode 100644
index 0000000..a143185
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06e.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "TimbSM17_Switches06e.png", "cellw": 12} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches06e.png b/site/controls/TimbSM17_Switches06e.png
new file mode 100644
index 0000000..16c4b0a
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06e.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches06f.json b/site/controls/TimbSM17_Switches06f.json
new file mode 100644
index 0000000..713f419
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06f.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 10, "ctltype": 2, "fn": "TimbSM17_Switches06f.png", "cellw": 10} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches06f.png b/site/controls/TimbSM17_Switches06f.png
new file mode 100644
index 0000000..0ab467d
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06f.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches06g.json b/site/controls/TimbSM17_Switches06g.json
new file mode 100644
index 0000000..31131fc
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06g.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 10, "ctltype": 2, "fn": "TimbSM17_Switches06g.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches06g.png b/site/controls/TimbSM17_Switches06g.png
new file mode 100644
index 0000000..d66be55
--- /dev/null
+++ b/site/controls/TimbSM17_Switches06g.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches07.json b/site/controls/TimbSM17_Switches07.json
new file mode 100644
index 0000000..edd2dec
--- /dev/null
+++ b/site/controls/TimbSM17_Switches07.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "TimbSM17_Switches07.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches07.png b/site/controls/TimbSM17_Switches07.png
new file mode 100644
index 0000000..cd3fdd6
--- /dev/null
+++ b/site/controls/TimbSM17_Switches07.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches07b.json b/site/controls/TimbSM17_Switches07b.json
new file mode 100644
index 0000000..77f9b36
--- /dev/null
+++ b/site/controls/TimbSM17_Switches07b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "TimbSM17_Switches07b.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches07b.png b/site/controls/TimbSM17_Switches07b.png
new file mode 100644
index 0000000..41a63df
--- /dev/null
+++ b/site/controls/TimbSM17_Switches07b.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches08.json b/site/controls/TimbSM17_Switches08.json
new file mode 100644
index 0000000..d860f9c
--- /dev/null
+++ b/site/controls/TimbSM17_Switches08.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 36, "ctltype": 2, "fn": "TimbSM17_Switches08.png", "cellw": 36} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches08.png b/site/controls/TimbSM17_Switches08.png
new file mode 100644
index 0000000..da457a2
--- /dev/null
+++ b/site/controls/TimbSM17_Switches08.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches09.json b/site/controls/TimbSM17_Switches09.json
new file mode 100644
index 0000000..c8aa781
--- /dev/null
+++ b/site/controls/TimbSM17_Switches09.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 36, "ctltype": 2, "fn": "TimbSM17_Switches09.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches09.png b/site/controls/TimbSM17_Switches09.png
new file mode 100644
index 0000000..ff9c8ac
--- /dev/null
+++ b/site/controls/TimbSM17_Switches09.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches10.json b/site/controls/TimbSM17_Switches10.json
new file mode 100644
index 0000000..0f20aa2
--- /dev/null
+++ b/site/controls/TimbSM17_Switches10.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "TimbSM17_Switches10.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches10.png b/site/controls/TimbSM17_Switches10.png
new file mode 100644
index 0000000..af6e2d0
--- /dev/null
+++ b/site/controls/TimbSM17_Switches10.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches11.json b/site/controls/TimbSM17_Switches11.json
new file mode 100644
index 0000000..699d5a3
--- /dev/null
+++ b/site/controls/TimbSM17_Switches11.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 55, "ctltype": 2, "fn": "TimbSM17_Switches11.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches11.png b/site/controls/TimbSM17_Switches11.png
new file mode 100644
index 0000000..45020ed
--- /dev/null
+++ b/site/controls/TimbSM17_Switches11.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches11b(37x).json b/site/controls/TimbSM17_Switches11b(37x).json
new file mode 100644
index 0000000..6a1f253
--- /dev/null
+++ b/site/controls/TimbSM17_Switches11b(37x).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 37, "ctltype": 2, "fn": "TimbSM17_Switches11b(37x).png", "cellw": 55} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches11b(37x).png b/site/controls/TimbSM17_Switches11b(37x).png
new file mode 100644
index 0000000..70ec18e
--- /dev/null
+++ b/site/controls/TimbSM17_Switches11b(37x).png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches11d(30x).json b/site/controls/TimbSM17_Switches11d(30x).json
new file mode 100644
index 0000000..c9a7232
--- /dev/null
+++ b/site/controls/TimbSM17_Switches11d(30x).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 30, "ctltype": 2, "fn": "TimbSM17_Switches11d(30x).png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches11d(30x).png b/site/controls/TimbSM17_Switches11d(30x).png
new file mode 100644
index 0000000..bcb8331
--- /dev/null
+++ b/site/controls/TimbSM17_Switches11d(30x).png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches12aHeadphone.json b/site/controls/TimbSM17_Switches12aHeadphone.json
new file mode 100644
index 0000000..2426c1e
--- /dev/null
+++ b/site/controls/TimbSM17_Switches12aHeadphone.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 85, "ctltype": 2, "fn": "TimbSM17_Switches12aHeadphone.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches12aHeadphone.png b/site/controls/TimbSM17_Switches12aHeadphone.png
new file mode 100644
index 0000000..7f5b46d
--- /dev/null
+++ b/site/controls/TimbSM17_Switches12aHeadphone.png
Binary files differ
diff --git a/site/controls/TimbSM17_Switches12bMonitor.json b/site/controls/TimbSM17_Switches12bMonitor.json
new file mode 100644
index 0000000..c66ce2e
--- /dev/null
+++ b/site/controls/TimbSM17_Switches12bMonitor.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 85, "ctltype": 2, "fn": "TimbSM17_Switches12bMonitor.png"} \ No newline at end of file
diff --git a/site/controls/TimbSM17_Switches12bMonitor.png b/site/controls/TimbSM17_Switches12bMonitor.png
new file mode 100644
index 0000000..dd8022a
--- /dev/null
+++ b/site/controls/TimbSM17_Switches12bMonitor.png
Binary files differ
diff --git a/site/controls/Timb_2018_BUTTONEXIT32-01.json b/site/controls/Timb_2018_BUTTONEXIT32-01.json
new file mode 100644
index 0000000..63f4830
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONEXIT32-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_BUTTONEXIT32-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_BUTTONEXIT32-01.png b/site/controls/Timb_2018_BUTTONEXIT32-01.png
new file mode 100644
index 0000000..6dee008
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONEXIT32-01.png
Binary files differ
diff --git a/site/controls/Timb_2018_BUTTONEXIT32-02.json b/site/controls/Timb_2018_BUTTONEXIT32-02.json
new file mode 100644
index 0000000..c4a9b79
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONEXIT32-02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_BUTTONEXIT32-02.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_BUTTONEXIT32-02.png b/site/controls/Timb_2018_BUTTONEXIT32-02.png
new file mode 100644
index 0000000..8bcedde
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONEXIT32-02.png
Binary files differ
diff --git a/site/controls/Timb_2018_BUTTONEXIT64-01.json b/site/controls/Timb_2018_BUTTONEXIT64-01.json
new file mode 100644
index 0000000..0e7a5d4
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONEXIT64-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 2, "fn": "Timb_2018_BUTTONEXIT64-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_BUTTONEXIT64-01.png b/site/controls/Timb_2018_BUTTONEXIT64-01.png
new file mode 100644
index 0000000..2ff703f
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONEXIT64-01.png
Binary files differ
diff --git a/site/controls/Timb_2018_BUTTONEXIT64-02.json b/site/controls/Timb_2018_BUTTONEXIT64-02.json
new file mode 100644
index 0000000..549dc45
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONEXIT64-02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 2, "fn": "Timb_2018_BUTTONEXIT64-02.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_2018_BUTTONEXIT64-02.png b/site/controls/Timb_2018_BUTTONEXIT64-02.png
new file mode 100644
index 0000000..ccef8d4
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONEXIT64-02.png
Binary files differ
diff --git a/site/controls/Timb_2018_BUTTONOFF32-01.json b/site/controls/Timb_2018_BUTTONOFF32-01.json
new file mode 100644
index 0000000..e8d47de
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONOFF32-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_BUTTONOFF32-01.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_BUTTONOFF32-01.png b/site/controls/Timb_2018_BUTTONOFF32-01.png
new file mode 100644
index 0000000..cdd5902
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONOFF32-01.png
Binary files differ
diff --git a/site/controls/Timb_2018_BUTTONOFF32-02.json b/site/controls/Timb_2018_BUTTONOFF32-02.json
new file mode 100644
index 0000000..5be6d93
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONOFF32-02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_BUTTONOFF32-02.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_BUTTONOFF32-02.png b/site/controls/Timb_2018_BUTTONOFF32-02.png
new file mode 100644
index 0000000..0f950a2
--- /dev/null
+++ b/site/controls/Timb_2018_BUTTONOFF32-02.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-00.json b/site/controls/Timb_2018_ButtonsFrThemes-00.json
new file mode 100644
index 0000000..52bae6c
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-00.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_2018_ButtonsFrThemes-00.png", "cellw": 41} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-00.png b/site/controls/Timb_2018_ButtonsFrThemes-00.png
new file mode 100644
index 0000000..df316c3
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-00.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-01.json b/site/controls/Timb_2018_ButtonsFrThemes-01.json
new file mode 100644
index 0000000..1dc8c7b
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-01.png b/site/controls/Timb_2018_ButtonsFrThemes-01.png
new file mode 100644
index 0000000..00d424b
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-01.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-02.json b/site/controls/Timb_2018_ButtonsFrThemes-02.json
new file mode 100644
index 0000000..027e7ac
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-02.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-02.png b/site/controls/Timb_2018_ButtonsFrThemes-02.png
new file mode 100644
index 0000000..f5bdc9b
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-02.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-03.json b/site/controls/Timb_2018_ButtonsFrThemes-03.json
new file mode 100644
index 0000000..8fdbeab
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-03.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-03.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-03.png b/site/controls/Timb_2018_ButtonsFrThemes-03.png
new file mode 100644
index 0000000..86d80a0
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-03.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-04.json b/site/controls/Timb_2018_ButtonsFrThemes-04.json
new file mode 100644
index 0000000..29d76cd
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-04.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-04.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-04.png b/site/controls/Timb_2018_ButtonsFrThemes-04.png
new file mode 100644
index 0000000..1c51835
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-04.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-05.json b/site/controls/Timb_2018_ButtonsFrThemes-05.json
new file mode 100644
index 0000000..bbd6374
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-05.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-05.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-05.png b/site/controls/Timb_2018_ButtonsFrThemes-05.png
new file mode 100644
index 0000000..17d1908
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-05.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-05b.json b/site/controls/Timb_2018_ButtonsFrThemes-05b.json
new file mode 100644
index 0000000..ed8eae2
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-05b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-05b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-05b.png b/site/controls/Timb_2018_ButtonsFrThemes-05b.png
new file mode 100644
index 0000000..7f758c4
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-05b.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-06.json b/site/controls/Timb_2018_ButtonsFrThemes-06.json
new file mode 100644
index 0000000..5adf4d3
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-06.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-06.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-06.png b/site/controls/Timb_2018_ButtonsFrThemes-06.png
new file mode 100644
index 0000000..98cf8e9
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-06.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-06b.json b/site/controls/Timb_2018_ButtonsFrThemes-06b.json
new file mode 100644
index 0000000..4db6c02
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-06b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-06b.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-06b.png b/site/controls/Timb_2018_ButtonsFrThemes-06b.png
new file mode 100644
index 0000000..adda4ac
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-06b.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-06c.json b/site/controls/Timb_2018_ButtonsFrThemes-06c.json
new file mode 100644
index 0000000..4de9502
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-06c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-06c.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-06c.png b/site/controls/Timb_2018_ButtonsFrThemes-06c.png
new file mode 100644
index 0000000..2a0cb6c
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-06c.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-06d.json b/site/controls/Timb_2018_ButtonsFrThemes-06d.json
new file mode 100644
index 0000000..bb8b031
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-06d.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-06d.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-06d.png b/site/controls/Timb_2018_ButtonsFrThemes-06d.png
new file mode 100644
index 0000000..014677b
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-06d.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-07.json b/site/controls/Timb_2018_ButtonsFrThemes-07.json
new file mode 100644
index 0000000..a8275e5
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-07.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-07.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-07.png b/site/controls/Timb_2018_ButtonsFrThemes-07.png
new file mode 100644
index 0000000..742865c
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-07.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-08.json b/site/controls/Timb_2018_ButtonsFrThemes-08.json
new file mode 100644
index 0000000..77ac452
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-08.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-08.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-08.png b/site/controls/Timb_2018_ButtonsFrThemes-08.png
new file mode 100644
index 0000000..6ddc394
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-08.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-09.json b/site/controls/Timb_2018_ButtonsFrThemes-09.json
new file mode 100644
index 0000000..0c6c62a
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-09.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-09.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-09.png b/site/controls/Timb_2018_ButtonsFrThemes-09.png
new file mode 100644
index 0000000..04f629c
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-09.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-10.json b/site/controls/Timb_2018_ButtonsFrThemes-10.json
new file mode 100644
index 0000000..7a7f518
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-10.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-10.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-10.png b/site/controls/Timb_2018_ButtonsFrThemes-10.png
new file mode 100644
index 0000000..c5c952e
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-10.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-11.json b/site/controls/Timb_2018_ButtonsFrThemes-11.json
new file mode 100644
index 0000000..59a1cc4
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-11.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-11.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-11.png b/site/controls/Timb_2018_ButtonsFrThemes-11.png
new file mode 100644
index 0000000..a090ba1
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-11.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-12.json b/site/controls/Timb_2018_ButtonsFrThemes-12.json
new file mode 100644
index 0000000..49b6f27
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-12.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-12.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-12.png b/site/controls/Timb_2018_ButtonsFrThemes-12.png
new file mode 100644
index 0000000..3c8bd5a
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-12.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-13.json b/site/controls/Timb_2018_ButtonsFrThemes-13.json
new file mode 100644
index 0000000..8421af9
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-13.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-13.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-13.png b/site/controls/Timb_2018_ButtonsFrThemes-13.png
new file mode 100644
index 0000000..89329e4
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-13.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-14.json b/site/controls/Timb_2018_ButtonsFrThemes-14.json
new file mode 100644
index 0000000..643bc33
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-14.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-14.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-14.png b/site/controls/Timb_2018_ButtonsFrThemes-14.png
new file mode 100644
index 0000000..6dcd877
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-14.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-15.json b/site/controls/Timb_2018_ButtonsFrThemes-15.json
new file mode 100644
index 0000000..1fef06a
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-15.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-15.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-15.png b/site/controls/Timb_2018_ButtonsFrThemes-15.png
new file mode 100644
index 0000000..9ae56ca
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-15.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-16.json b/site/controls/Timb_2018_ButtonsFrThemes-16.json
new file mode 100644
index 0000000..e2ed36a
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-16.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-16.png b/site/controls/Timb_2018_ButtonsFrThemes-16.png
new file mode 100644
index 0000000..c7d5db7
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-16.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-17.json b/site/controls/Timb_2018_ButtonsFrThemes-17.json
new file mode 100644
index 0000000..f3f06a8
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-17.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-17.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-17.png b/site/controls/Timb_2018_ButtonsFrThemes-17.png
new file mode 100644
index 0000000..fdce21e
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-17.png
Binary files differ
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-18.json b/site/controls/Timb_2018_ButtonsFrThemes-18.json
new file mode 100644
index 0000000..64304d9
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-18.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-18.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_2018_ButtonsFrThemes-18.png b/site/controls/Timb_2018_ButtonsFrThemes-18.png
new file mode 100644
index 0000000..fcc25ea
--- /dev/null
+++ b/site/controls/Timb_2018_ButtonsFrThemes-18.png
Binary files differ
diff --git a/site/controls/Timb_2018_PageegaP-01.json b/site/controls/Timb_2018_PageegaP-01.json
new file mode 100644
index 0000000..493de82
--- /dev/null
+++ b/site/controls/Timb_2018_PageegaP-01.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_2018_PageegaP-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_PageegaP-01.png b/site/controls/Timb_2018_PageegaP-01.png
new file mode 100644
index 0000000..a000c63
--- /dev/null
+++ b/site/controls/Timb_2018_PageegaP-01.png
Binary files differ
diff --git a/site/controls/Timb_2018_PageegaP-02.json b/site/controls/Timb_2018_PageegaP-02.json
new file mode 100644
index 0000000..3713a8a
--- /dev/null
+++ b/site/controls/Timb_2018_PageegaP-02.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_2018_PageegaP-02.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_PageegaP-02.png b/site/controls/Timb_2018_PageegaP-02.png
new file mode 100644
index 0000000..d58dd8e
--- /dev/null
+++ b/site/controls/Timb_2018_PageegaP-02.png
Binary files differ
diff --git a/site/controls/Timb_2018_PageegaP-03.json b/site/controls/Timb_2018_PageegaP-03.json
new file mode 100644
index 0000000..3207d30
--- /dev/null
+++ b/site/controls/Timb_2018_PageegaP-03.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_2018_PageegaP-03.png"} \ No newline at end of file
diff --git a/site/controls/Timb_2018_PageegaP-03.png b/site/controls/Timb_2018_PageegaP-03.png
new file mode 100644
index 0000000..5015c33
--- /dev/null
+++ b/site/controls/Timb_2018_PageegaP-03.png
Binary files differ
diff --git a/site/controls/Timb_2018_PageegaP-03b.json b/site/controls/Timb_2018_PageegaP-03b.json
new file mode 100644
index 0000000..b3d580a
--- /dev/null
+++ b/site/controls/Timb_2018_PageegaP-03b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_2018_PageegaP-03b.png", "cellw": 221} \ No newline at end of file
diff --git a/site/controls/Timb_2018_PageegaP-03b.png b/site/controls/Timb_2018_PageegaP-03b.png
new file mode 100644
index 0000000..ca79247
--- /dev/null
+++ b/site/controls/Timb_2018_PageegaP-03b.png
Binary files differ
diff --git a/site/controls/Timb_2020-Def6MUTE.json b/site/controls/Timb_2020-Def6MUTE.json
new file mode 100644
index 0000000..28d2d6d
--- /dev/null
+++ b/site/controls/Timb_2020-Def6MUTE.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_2020-Def6MUTE.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/Timb_2020-Def6MUTE.png b/site/controls/Timb_2020-Def6MUTE.png
new file mode 100644
index 0000000..6ec3bcc
--- /dev/null
+++ b/site/controls/Timb_2020-Def6MUTE.png
Binary files differ
diff --git a/site/controls/Timb_2020-Def6SOLO.json b/site/controls/Timb_2020-Def6SOLO.json
new file mode 100644
index 0000000..c99838f
--- /dev/null
+++ b/site/controls/Timb_2020-Def6SOLO.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_2020-Def6SOLO.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/Timb_2020-Def6SOLO.png b/site/controls/Timb_2020-Def6SOLO.png
new file mode 100644
index 0000000..1a4f8e4
--- /dev/null
+++ b/site/controls/Timb_2020-Def6SOLO.png
Binary files differ
diff --git a/site/controls/Timb_4 Synth Master-01.json b/site/controls/Timb_4 Synth Master-01.json
new file mode 100644
index 0000000..36f9491
--- /dev/null
+++ b/site/controls/Timb_4 Synth Master-01.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb_4 Synth Master-01.png", "cellw": 100} \ No newline at end of file
diff --git a/site/controls/Timb_4 Synth Master-01.png b/site/controls/Timb_4 Synth Master-01.png
new file mode 100644
index 0000000..f7f03a1
--- /dev/null
+++ b/site/controls/Timb_4 Synth Master-01.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_B-MON-1.json b/site/controls/Timb_5dB5_B-MON-1.json
new file mode 100644
index 0000000..af5d317
--- /dev/null
+++ b/site/controls/Timb_5dB5_B-MON-1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 96, "ctltype": 0, "fn": "Timb_5dB5_B-MON-1.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_B-MON-1.png b/site/controls/Timb_5dB5_B-MON-1.png
new file mode 100644
index 0000000..965b2c7
--- /dev/null
+++ b/site/controls/Timb_5dB5_B-MON-1.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_B-MON-2.json b/site/controls/Timb_5dB5_B-MON-2.json
new file mode 100644
index 0000000..6b4bfaf
--- /dev/null
+++ b/site/controls/Timb_5dB5_B-MON-2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 48, "ctltype": 0, "fn": "Timb_5dB5_B-MON-2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_B-MON-2.png b/site/controls/Timb_5dB5_B-MON-2.png
new file mode 100644
index 0000000..02b6e67
--- /dev/null
+++ b/site/controls/Timb_5dB5_B-MON-2.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_B-MON-3button.json b/site/controls/Timb_5dB5_B-MON-3button.json
new file mode 100644
index 0000000..7f1b482
--- /dev/null
+++ b/site/controls/Timb_5dB5_B-MON-3button.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_5dB5_B-MON-3button.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_B-MON-3button.png b/site/controls/Timb_5dB5_B-MON-3button.png
new file mode 100644
index 0000000..7cf5608
--- /dev/null
+++ b/site/controls/Timb_5dB5_B-MON-3button.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_B-MON-4meter.json b/site/controls/Timb_5dB5_B-MON-4meter.json
new file mode 100644
index 0000000..5745db7
--- /dev/null
+++ b/site/controls/Timb_5dB5_B-MON-4meter.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 181, "ctltype": 3, "fn": "Timb_5dB5_B-MON-4meter.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_B-MON-4meter.png b/site/controls/Timb_5dB5_B-MON-4meter.png
new file mode 100644
index 0000000..f9e77b9
--- /dev/null
+++ b/site/controls/Timb_5dB5_B-MON-4meter.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_D-REZ-1.json b/site/controls/Timb_5dB5_D-REZ-1.json
new file mode 100644
index 0000000..0155cd5
--- /dev/null
+++ b/site/controls/Timb_5dB5_D-REZ-1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 96, "ctltype": 0, "fn": "Timb_5dB5_D-REZ-1.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_D-REZ-1.png b/site/controls/Timb_5dB5_D-REZ-1.png
new file mode 100644
index 0000000..297d8af
--- /dev/null
+++ b/site/controls/Timb_5dB5_D-REZ-1.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_D-REZ-2.json b/site/controls/Timb_5dB5_D-REZ-2.json
new file mode 100644
index 0000000..81880eb
--- /dev/null
+++ b/site/controls/Timb_5dB5_D-REZ-2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 48, "ctltype": 0, "fn": "Timb_5dB5_D-REZ-2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_D-REZ-2.png b/site/controls/Timb_5dB5_D-REZ-2.png
new file mode 100644
index 0000000..7f26352
--- /dev/null
+++ b/site/controls/Timb_5dB5_D-REZ-2.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_D-REZ-3button.json b/site/controls/Timb_5dB5_D-REZ-3button.json
new file mode 100644
index 0000000..874725a
--- /dev/null
+++ b/site/controls/Timb_5dB5_D-REZ-3button.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_5dB5_D-REZ-3button.png", "cellw": 33} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_D-REZ-3button.png b/site/controls/Timb_5dB5_D-REZ-3button.png
new file mode 100644
index 0000000..08797b7
--- /dev/null
+++ b/site/controls/Timb_5dB5_D-REZ-3button.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_D-REZ-4meter.json b/site/controls/Timb_5dB5_D-REZ-4meter.json
new file mode 100644
index 0000000..503c5b8
--- /dev/null
+++ b/site/controls/Timb_5dB5_D-REZ-4meter.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 181, "ctltype": 3, "fn": "Timb_5dB5_D-REZ-4meter.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_D-REZ-4meter.png b/site/controls/Timb_5dB5_D-REZ-4meter.png
new file mode 100644
index 0000000..79594cf
--- /dev/null
+++ b/site/controls/Timb_5dB5_D-REZ-4meter.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_K-MOR-1.json b/site/controls/Timb_5dB5_K-MOR-1.json
new file mode 100644
index 0000000..f3efda5
--- /dev/null
+++ b/site/controls/Timb_5dB5_K-MOR-1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 96, "ctltype": 0, "fn": "Timb_5dB5_K-MOR-1.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_K-MOR-1.png b/site/controls/Timb_5dB5_K-MOR-1.png
new file mode 100644
index 0000000..3585300
--- /dev/null
+++ b/site/controls/Timb_5dB5_K-MOR-1.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_K-MOR-2.json b/site/controls/Timb_5dB5_K-MOR-2.json
new file mode 100644
index 0000000..8372e52
--- /dev/null
+++ b/site/controls/Timb_5dB5_K-MOR-2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 48, "ctltype": 0, "fn": "Timb_5dB5_K-MOR-2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_K-MOR-2.png b/site/controls/Timb_5dB5_K-MOR-2.png
new file mode 100644
index 0000000..46e20bb
--- /dev/null
+++ b/site/controls/Timb_5dB5_K-MOR-2.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_K-MOR-3button.json b/site/controls/Timb_5dB5_K-MOR-3button.json
new file mode 100644
index 0000000..2473701
--- /dev/null
+++ b/site/controls/Timb_5dB5_K-MOR-3button.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_5dB5_K-MOR-3button.png", "cellw": 33} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_K-MOR-3button.png b/site/controls/Timb_5dB5_K-MOR-3button.png
new file mode 100644
index 0000000..a96ee87
--- /dev/null
+++ b/site/controls/Timb_5dB5_K-MOR-3button.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_K-MOR-4meter.json b/site/controls/Timb_5dB5_K-MOR-4meter.json
new file mode 100644
index 0000000..028ac87
--- /dev/null
+++ b/site/controls/Timb_5dB5_K-MOR-4meter.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 181, "ctltype": 3, "fn": "Timb_5dB5_K-MOR-4meter.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_K-MOR-4meter.png b/site/controls/Timb_5dB5_K-MOR-4meter.png
new file mode 100644
index 0000000..6a5d7dc
--- /dev/null
+++ b/site/controls/Timb_5dB5_K-MOR-4meter.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_MutantButton96.json b/site/controls/Timb_5dB5_MutantButton96.json
new file mode 100644
index 0000000..d3782d1
--- /dev/null
+++ b/site/controls/Timb_5dB5_MutantButton96.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 96, "ctltype": 2, "fn": "Timb_5dB5_MutantButton96.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_MutantButton96.png b/site/controls/Timb_5dB5_MutantButton96.png
new file mode 100644
index 0000000..527ba45
--- /dev/null
+++ b/site/controls/Timb_5dB5_MutantButton96.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_T-COMP-1.json b/site/controls/Timb_5dB5_T-COMP-1.json
new file mode 100644
index 0000000..e72d225
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 96, "ctltype": 0, "fn": "Timb_5dB5_T-COMP-1.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_T-COMP-1.png b/site/controls/Timb_5dB5_T-COMP-1.png
new file mode 100644
index 0000000..f528fbe
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-1.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_T-COMP-2.json b/site/controls/Timb_5dB5_T-COMP-2.json
new file mode 100644
index 0000000..4079753
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 48, "ctltype": 0, "fn": "Timb_5dB5_T-COMP-2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_T-COMP-2.png b/site/controls/Timb_5dB5_T-COMP-2.png
new file mode 100644
index 0000000..07af979
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-2.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_T-COMP-3button.json b/site/controls/Timb_5dB5_T-COMP-3button.json
new file mode 100644
index 0000000..dc2c5a5
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-3button.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_5dB5_T-COMP-3button.png", "cellw": 33} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_T-COMP-3button.png b/site/controls/Timb_5dB5_T-COMP-3button.png
new file mode 100644
index 0000000..9d99590
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-3button.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_T-COMP-3buttonb.json b/site/controls/Timb_5dB5_T-COMP-3buttonb.json
new file mode 100644
index 0000000..6120e76
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-3buttonb.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_5dB5_T-COMP-3buttonb.png", "cellw": 18} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_T-COMP-3buttonb.png b/site/controls/Timb_5dB5_T-COMP-3buttonb.png
new file mode 100644
index 0000000..44b4134
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-3buttonb.png
Binary files differ
diff --git a/site/controls/Timb_5dB5_T-COMP-4meter.json b/site/controls/Timb_5dB5_T-COMP-4meter.json
new file mode 100644
index 0000000..737becb
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-4meter.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 181, "ctltype": 3, "fn": "Timb_5dB5_T-COMP-4meter.png"} \ No newline at end of file
diff --git a/site/controls/Timb_5dB5_T-COMP-4meter.png b/site/controls/Timb_5dB5_T-COMP-4meter.png
new file mode 100644
index 0000000..c8f9622
--- /dev/null
+++ b/site/controls/Timb_5dB5_T-COMP-4meter.png
Binary files differ
diff --git a/site/controls/Timb_Action (FX) Render To Midi-01.json b/site/controls/Timb_Action (FX) Render To Midi-01.json
new file mode 100644
index 0000000..2450b62
--- /dev/null
+++ b/site/controls/Timb_Action (FX) Render To Midi-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_Action (FX) Render To Midi-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Action (FX) Render To Midi-01.png b/site/controls/Timb_Action (FX) Render To Midi-01.png
new file mode 100644
index 0000000..f0c43b9
--- /dev/null
+++ b/site/controls/Timb_Action (FX) Render To Midi-01.png
Binary files differ
diff --git a/site/controls/Timb_Actions_LOOP.json b/site/controls/Timb_Actions_LOOP.json
new file mode 100644
index 0000000..c809d0e
--- /dev/null
+++ b/site/controls/Timb_Actions_LOOP.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_LOOP.png", "cellw": 21} \ No newline at end of file
diff --git a/site/controls/Timb_Actions_LOOP.png b/site/controls/Timb_Actions_LOOP.png
new file mode 100644
index 0000000..6f6a424
--- /dev/null
+++ b/site/controls/Timb_Actions_LOOP.png
Binary files differ
diff --git a/site/controls/Timb_Actions_MUTECANCEL.json b/site/controls/Timb_Actions_MUTECANCEL.json
new file mode 100644
index 0000000..a6c4161
--- /dev/null
+++ b/site/controls/Timb_Actions_MUTECANCEL.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_MUTECANCEL.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb_Actions_MUTECANCEL.png b/site/controls/Timb_Actions_MUTECANCEL.png
new file mode 100644
index 0000000..35cd334
--- /dev/null
+++ b/site/controls/Timb_Actions_MUTECANCEL.png
Binary files differ
diff --git a/site/controls/Timb_Actions_PEAKCLEAR.json b/site/controls/Timb_Actions_PEAKCLEAR.json
new file mode 100644
index 0000000..218cafb
--- /dev/null
+++ b/site/controls/Timb_Actions_PEAKCLEAR.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_PEAKCLEAR.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Actions_PEAKCLEAR.png b/site/controls/Timb_Actions_PEAKCLEAR.png
new file mode 100644
index 0000000..f642608
--- /dev/null
+++ b/site/controls/Timb_Actions_PEAKCLEAR.png
Binary files differ
diff --git a/site/controls/Timb_Actions_PLAY.json b/site/controls/Timb_Actions_PLAY.json
new file mode 100644
index 0000000..f7a4806
--- /dev/null
+++ b/site/controls/Timb_Actions_PLAY.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_PLAY.png", "cellw": 21} \ No newline at end of file
diff --git a/site/controls/Timb_Actions_PLAY.png b/site/controls/Timb_Actions_PLAY.png
new file mode 100644
index 0000000..ab540cd
--- /dev/null
+++ b/site/controls/Timb_Actions_PLAY.png
Binary files differ
diff --git a/site/controls/Timb_Actions_SAVE.json b/site/controls/Timb_Actions_SAVE.json
new file mode 100644
index 0000000..b973bff
--- /dev/null
+++ b/site/controls/Timb_Actions_SAVE.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_SAVE.png", "cellw": 21} \ No newline at end of file
diff --git a/site/controls/Timb_Actions_SAVE.png b/site/controls/Timb_Actions_SAVE.png
new file mode 100644
index 0000000..7ebbc8b
--- /dev/null
+++ b/site/controls/Timb_Actions_SAVE.png
Binary files differ
diff --git a/site/controls/Timb_Actions_SAVE2.json b/site/controls/Timb_Actions_SAVE2.json
new file mode 100644
index 0000000..8fc2188
--- /dev/null
+++ b/site/controls/Timb_Actions_SAVE2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_SAVE2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Actions_SAVE2.png b/site/controls/Timb_Actions_SAVE2.png
new file mode 100644
index 0000000..fb3aa09
--- /dev/null
+++ b/site/controls/Timb_Actions_SAVE2.png
Binary files differ
diff --git a/site/controls/Timb_Actions_SOLOCANCEL-2.json b/site/controls/Timb_Actions_SOLOCANCEL-2.json
new file mode 100644
index 0000000..6ddfc75
--- /dev/null
+++ b/site/controls/Timb_Actions_SOLOCANCEL-2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 35, "ctltype": 2, "fn": "Timb_Actions_SOLOCANCEL-2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Actions_SOLOCANCEL-2.png b/site/controls/Timb_Actions_SOLOCANCEL-2.png
new file mode 100644
index 0000000..3195213
--- /dev/null
+++ b/site/controls/Timb_Actions_SOLOCANCEL-2.png
Binary files differ
diff --git a/site/controls/Timb_Actions_SOLOCANCEL.json b/site/controls/Timb_Actions_SOLOCANCEL.json
new file mode 100644
index 0000000..1726316
--- /dev/null
+++ b/site/controls/Timb_Actions_SOLOCANCEL.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_SOLOCANCEL.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Actions_SOLOCANCEL.png b/site/controls/Timb_Actions_SOLOCANCEL.png
new file mode 100644
index 0000000..09866ec
--- /dev/null
+++ b/site/controls/Timb_Actions_SOLOCANCEL.png
Binary files differ
diff --git a/site/controls/Timb_Actions_STOP.json b/site/controls/Timb_Actions_STOP.json
new file mode 100644
index 0000000..08ba354
--- /dev/null
+++ b/site/controls/Timb_Actions_STOP.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_STOP.png", "cellw": 21} \ No newline at end of file
diff --git a/site/controls/Timb_Actions_STOP.png b/site/controls/Timb_Actions_STOP.png
new file mode 100644
index 0000000..9715f99
--- /dev/null
+++ b/site/controls/Timb_Actions_STOP.png
Binary files differ
diff --git a/site/controls/Timb_Aimp-ONOFF-0.json b/site/controls/Timb_Aimp-ONOFF-0.json
new file mode 100644
index 0000000..087ef2f
--- /dev/null
+++ b/site/controls/Timb_Aimp-ONOFF-0.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 75, "ctltype": 2, "fn": "Timb_Aimp-ONOFF-0.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Aimp-ONOFF-0.png b/site/controls/Timb_Aimp-ONOFF-0.png
new file mode 100644
index 0000000..f3d1678
--- /dev/null
+++ b/site/controls/Timb_Aimp-ONOFF-0.png
Binary files differ
diff --git a/site/controls/Timb_Aimp-ONOFF-1.json b/site/controls/Timb_Aimp-ONOFF-1.json
new file mode 100644
index 0000000..7754a39
--- /dev/null
+++ b/site/controls/Timb_Aimp-ONOFF-1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 75, "ctltype": 2, "fn": "Timb_Aimp-ONOFF-1.png", "cellw": 94} \ No newline at end of file
diff --git a/site/controls/Timb_Aimp-ONOFF-1.png b/site/controls/Timb_Aimp-ONOFF-1.png
new file mode 100644
index 0000000..a5ed1fd
--- /dev/null
+++ b/site/controls/Timb_Aimp-ONOFF-1.png
Binary files differ
diff --git a/site/controls/Timb_AudioThing-VinylStrip_96129.json b/site/controls/Timb_AudioThing-VinylStrip_96129.json
new file mode 100644
index 0000000..40ede31
--- /dev/null
+++ b/site/controls/Timb_AudioThing-VinylStrip_96129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_AudioThing-VinylStrip_96129.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_AudioThing-VinylStrip_96129.png b/site/controls/Timb_AudioThing-VinylStrip_96129.png
new file mode 100644
index 0000000..6ca2bea
--- /dev/null
+++ b/site/controls/Timb_AudioThing-VinylStrip_96129.png
Binary files differ
diff --git a/site/controls/Timb_BWG_mute_24x32.json b/site/controls/Timb_BWG_mute_24x32.json
new file mode 100644
index 0000000..cd95e99
--- /dev/null
+++ b/site/controls/Timb_BWG_mute_24x32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_BWG_mute_24x32.png"} \ No newline at end of file
diff --git a/site/controls/Timb_BWG_mute_24x32.png b/site/controls/Timb_BWG_mute_24x32.png
new file mode 100644
index 0000000..6708a1f
--- /dev/null
+++ b/site/controls/Timb_BWG_mute_24x32.png
Binary files differ
diff --git a/site/controls/Timb_BWG_mute_32x42.json b/site/controls/Timb_BWG_mute_32x42.json
new file mode 100644
index 0000000..90459ca
--- /dev/null
+++ b/site/controls/Timb_BWG_mute_32x42.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_BWG_mute_32x42.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_BWG_mute_32x42.png b/site/controls/Timb_BWG_mute_32x42.png
new file mode 100644
index 0000000..191223a
--- /dev/null
+++ b/site/controls/Timb_BWG_mute_32x42.png
Binary files differ
diff --git a/site/controls/Timb_BigbuttonGreen16.json b/site/controls/Timb_BigbuttonGreen16.json
new file mode 100644
index 0000000..6fd7811
--- /dev/null
+++ b/site/controls/Timb_BigbuttonGreen16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_BigbuttonGreen16.png"} \ No newline at end of file
diff --git a/site/controls/Timb_BigbuttonGreen16.png b/site/controls/Timb_BigbuttonGreen16.png
new file mode 100644
index 0000000..6c17403
--- /dev/null
+++ b/site/controls/Timb_BigbuttonGreen16.png
Binary files differ
diff --git a/site/controls/Timb_BigbuttonGreen32.json b/site/controls/Timb_BigbuttonGreen32.json
new file mode 100644
index 0000000..82581a9
--- /dev/null
+++ b/site/controls/Timb_BigbuttonGreen32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_BigbuttonGreen32.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_BigbuttonGreen32.png b/site/controls/Timb_BigbuttonGreen32.png
new file mode 100644
index 0000000..781bad2
--- /dev/null
+++ b/site/controls/Timb_BigbuttonGreen32.png
Binary files differ
diff --git a/site/controls/Timb_BigbuttonRed16.json b/site/controls/Timb_BigbuttonRed16.json
new file mode 100644
index 0000000..138940b
--- /dev/null
+++ b/site/controls/Timb_BigbuttonRed16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_BigbuttonRed16.png"} \ No newline at end of file
diff --git a/site/controls/Timb_BigbuttonRed16.png b/site/controls/Timb_BigbuttonRed16.png
new file mode 100644
index 0000000..46bb1b9
--- /dev/null
+++ b/site/controls/Timb_BigbuttonRed16.png
Binary files differ
diff --git a/site/controls/Timb_BigbuttonRed16v2.json b/site/controls/Timb_BigbuttonRed16v2.json
new file mode 100644
index 0000000..e387a53
--- /dev/null
+++ b/site/controls/Timb_BigbuttonRed16v2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_BigbuttonRed16v2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_BigbuttonRed16v2.png b/site/controls/Timb_BigbuttonRed16v2.png
new file mode 100644
index 0000000..9bfb138
--- /dev/null
+++ b/site/controls/Timb_BigbuttonRed16v2.png
Binary files differ
diff --git a/site/controls/Timb_BigbuttonRed32.json b/site/controls/Timb_BigbuttonRed32.json
new file mode 100644
index 0000000..a7c3dd4
--- /dev/null
+++ b/site/controls/Timb_BigbuttonRed32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_BigbuttonRed32.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_BigbuttonRed32.png b/site/controls/Timb_BigbuttonRed32.png
new file mode 100644
index 0000000..cc53845
--- /dev/null
+++ b/site/controls/Timb_BigbuttonRed32.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128.json b/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128.json
new file mode 100644
index 0000000..14e4aeb
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 128, "ctltype": 1, "fn": "Timb_Blankfiles-ConcertoSliderB_16128-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128.png b/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128.png
new file mode 100644
index 0000000..80b2cc5
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128horz.json b/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128horz.json
new file mode 100644
index 0000000..58ff97f
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128horz.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_Blankfiles-ConcertoSliderB_16128-128horz.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128horz.png b/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128horz.png
new file mode 100644
index 0000000..9e71d0f
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-ConcertoSliderB_16128-128horz.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-ConcertoSlider_16128-128.json b/site/controls/Timb_Blankfiles-ConcertoSlider_16128-128.json
new file mode 100644
index 0000000..19f2543
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-ConcertoSlider_16128-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 128, "ctltype": 1, "fn": "Timb_Blankfiles-ConcertoSlider_16128-128.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-ConcertoSlider_16128-128.png b/site/controls/Timb_Blankfiles-ConcertoSlider_16128-128.png
new file mode 100644
index 0000000..6b9857d
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-ConcertoSlider_16128-128.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-01.json b/site/controls/Timb_Blankfiles-Superiour-01.json
new file mode 100644
index 0000000..4131cbc
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-01.png", "cellw": 19} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-01.png b/site/controls/Timb_Blankfiles-Superiour-01.png
new file mode 100644
index 0000000..4eec5ff
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-01.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-02.json b/site/controls/Timb_Blankfiles-Superiour-02.json
new file mode 100644
index 0000000..42601f0
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-02.png", "cellw": 19} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-02.png b/site/controls/Timb_Blankfiles-Superiour-02.png
new file mode 100644
index 0000000..dc9b48c
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-02.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-03.json b/site/controls/Timb_Blankfiles-Superiour-03.json
new file mode 100644
index 0000000..14379bc
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-03.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-03.png", "cellw": 19} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-03.png b/site/controls/Timb_Blankfiles-Superiour-03.png
new file mode 100644
index 0000000..34db5cf
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-03.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-04.json b/site/controls/Timb_Blankfiles-Superiour-04.json
new file mode 100644
index 0000000..9c7e025
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-04.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-04.png", "cellw": 19} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-04.png b/site/controls/Timb_Blankfiles-Superiour-04.png
new file mode 100644
index 0000000..8e0e204
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-04.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-05.json b/site/controls/Timb_Blankfiles-Superiour-05.json
new file mode 100644
index 0000000..08a048c
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-05.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-05.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-05.png b/site/controls/Timb_Blankfiles-Superiour-05.png
new file mode 100644
index 0000000..e43ad2b
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-05.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-06.json b/site/controls/Timb_Blankfiles-Superiour-06.json
new file mode 100644
index 0000000..6eb2138
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-06.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-06.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-06.png b/site/controls/Timb_Blankfiles-Superiour-06.png
new file mode 100644
index 0000000..ec31ddf
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-06.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-07.json b/site/controls/Timb_Blankfiles-Superiour-07.json
new file mode 100644
index 0000000..b89f064
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-07.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-07.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-07.png b/site/controls/Timb_Blankfiles-Superiour-07.png
new file mode 100644
index 0000000..183d1c5
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-07.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-08.json b/site/controls/Timb_Blankfiles-Superiour-08.json
new file mode 100644
index 0000000..8b052c1
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-08.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-08.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-08.png b/site/controls/Timb_Blankfiles-Superiour-08.png
new file mode 100644
index 0000000..1f1ecd5
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-08.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-09.json b/site/controls/Timb_Blankfiles-Superiour-09.json
new file mode 100644
index 0000000..29d3d1d
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-09.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-09.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-09.png b/site/controls/Timb_Blankfiles-Superiour-09.png
new file mode 100644
index 0000000..aae1251
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-09.png
Binary files differ
diff --git a/site/controls/Timb_Blankfiles-Superiour-10.json b/site/controls/Timb_Blankfiles-Superiour-10.json
new file mode 100644
index 0000000..7a788b1
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-10.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-10.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_Blankfiles-Superiour-10.png b/site/controls/Timb_Blankfiles-Superiour-10.png
new file mode 100644
index 0000000..a00787a
--- /dev/null
+++ b/site/controls/Timb_Blankfiles-Superiour-10.png
Binary files differ
diff --git a/site/controls/Timb_Button_KORGMS2000_26x-b.json b/site/controls/Timb_Button_KORGMS2000_26x-b.json
new file mode 100644
index 0000000..fd8f419
--- /dev/null
+++ b/site/controls/Timb_Button_KORGMS2000_26x-b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 26, "ctltype": 2, "fn": "Timb_Button_KORGMS2000_26x-b.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb_Button_KORGMS2000_26x-b.png b/site/controls/Timb_Button_KORGMS2000_26x-b.png
new file mode 100644
index 0000000..83c0aba
--- /dev/null
+++ b/site/controls/Timb_Button_KORGMS2000_26x-b.png
Binary files differ
diff --git a/site/controls/Timb_Button_KORGMS2000_26x.json b/site/controls/Timb_Button_KORGMS2000_26x.json
new file mode 100644
index 0000000..d853d2f
--- /dev/null
+++ b/site/controls/Timb_Button_KORGMS2000_26x.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 26, "ctltype": 2, "fn": "Timb_Button_KORGMS2000_26x.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Button_KORGMS2000_26x.png b/site/controls/Timb_Button_KORGMS2000_26x.png
new file mode 100644
index 0000000..9037cbb
--- /dev/null
+++ b/site/controls/Timb_Button_KORGMS2000_26x.png
Binary files differ
diff --git a/site/controls/Timb_Button_MC909_21x.json b/site/controls/Timb_Button_MC909_21x.json
new file mode 100644
index 0000000..782725e
--- /dev/null
+++ b/site/controls/Timb_Button_MC909_21x.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Button_MC909_21x.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Button_MC909_21x.png b/site/controls/Timb_Button_MC909_21x.png
new file mode 100644
index 0000000..6a747f4
--- /dev/null
+++ b/site/controls/Timb_Button_MC909_21x.png
Binary files differ
diff --git a/site/controls/Timb_Button_MC909_21xb.json b/site/controls/Timb_Button_MC909_21xb.json
new file mode 100644
index 0000000..83aa380
--- /dev/null
+++ b/site/controls/Timb_Button_MC909_21xb.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Button_MC909_21xb.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Button_MC909_21xb.png b/site/controls/Timb_Button_MC909_21xb.png
new file mode 100644
index 0000000..8f97511
--- /dev/null
+++ b/site/controls/Timb_Button_MC909_21xb.png
Binary files differ
diff --git a/site/controls/Timb_CCSelector(0127)_3216-128.json b/site/controls/Timb_CCSelector(0127)_3216-128.json
new file mode 100644
index 0000000..ff6fe5b
--- /dev/null
+++ b/site/controls/Timb_CCSelector(0127)_3216-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 0, "fn": "Timb_CCSelector(0127)_3216-128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_CCSelector(0127)_3216-128.png b/site/controls/Timb_CCSelector(0127)_3216-128.png
new file mode 100644
index 0000000..e210eac
--- /dev/null
+++ b/site/controls/Timb_CCSelector(0127)_3216-128.png
Binary files differ
diff --git a/site/controls/Timb_CIS_KNOB_2_80128.json b/site/controls/Timb_CIS_KNOB_2_80128.json
new file mode 100644
index 0000000..1e1b2aa
--- /dev/null
+++ b/site/controls/Timb_CIS_KNOB_2_80128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 80, "ctltype": 0, "fn": "Timb_CIS_KNOB_2_80128.png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Timb_CIS_KNOB_2_80128.png b/site/controls/Timb_CIS_KNOB_2_80128.png
new file mode 100644
index 0000000..26f36e6
--- /dev/null
+++ b/site/controls/Timb_CIS_KNOB_2_80128.png
Binary files differ
diff --git a/site/controls/Timb_CLEAR2019-MUTE.json b/site/controls/Timb_CLEAR2019-MUTE.json
new file mode 100644
index 0000000..31272f9
--- /dev/null
+++ b/site/controls/Timb_CLEAR2019-MUTE.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 26, "ctltype": 2, "fn": "Timb_CLEAR2019-MUTE.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_CLEAR2019-MUTE.png b/site/controls/Timb_CLEAR2019-MUTE.png
new file mode 100644
index 0000000..f472f53
--- /dev/null
+++ b/site/controls/Timb_CLEAR2019-MUTE.png
Binary files differ
diff --git a/site/controls/Timb_CLEAR2019-SOLO.json b/site/controls/Timb_CLEAR2019-SOLO.json
new file mode 100644
index 0000000..3265c19
--- /dev/null
+++ b/site/controls/Timb_CLEAR2019-SOLO.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 26, "ctltype": 2, "fn": "Timb_CLEAR2019-SOLO.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_CLEAR2019-SOLO.png b/site/controls/Timb_CLEAR2019-SOLO.png
new file mode 100644
index 0000000..a667f52
--- /dev/null
+++ b/site/controls/Timb_CLEAR2019-SOLO.png
Binary files differ
diff --git a/site/controls/Timb_CloseX34.json b/site/controls/Timb_CloseX34.json
new file mode 100644
index 0000000..73394f1
--- /dev/null
+++ b/site/controls/Timb_CloseX34.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 34, "ctltype": 2, "fn": "Timb_CloseX34.png"} \ No newline at end of file
diff --git a/site/controls/Timb_CloseX34.png b/site/controls/Timb_CloseX34.png
new file mode 100644
index 0000000..4ac9001
--- /dev/null
+++ b/site/controls/Timb_CloseX34.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(16-129)-01grn.json b/site/controls/Timb_ColorCode_(16-129)-01grn.json
new file mode 100644
index 0000000..5785102
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-01grn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-01grn.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(16-129)-01grn.png b/site/controls/Timb_ColorCode_(16-129)-01grn.png
new file mode 100644
index 0000000..7d07a44
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-01grn.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(16-129)-02ylw.json b/site/controls/Timb_ColorCode_(16-129)-02ylw.json
new file mode 100644
index 0000000..3492ac0
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-02ylw.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-02ylw.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(16-129)-02ylw.png b/site/controls/Timb_ColorCode_(16-129)-02ylw.png
new file mode 100644
index 0000000..5bd7937
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-02ylw.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(16-129)-03blo.json b/site/controls/Timb_ColorCode_(16-129)-03blo.json
new file mode 100644
index 0000000..185d261
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-03blo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-03blo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(16-129)-03blo.png b/site/controls/Timb_ColorCode_(16-129)-03blo.png
new file mode 100644
index 0000000..9766c9b
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-03blo.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(16-129)-04red.json b/site/controls/Timb_ColorCode_(16-129)-04red.json
new file mode 100644
index 0000000..9375a0d
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-04red.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-04red.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(16-129)-04red.png b/site/controls/Timb_ColorCode_(16-129)-04red.png
new file mode 100644
index 0000000..b683022
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-04red.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(16-129)-05orn.json b/site/controls/Timb_ColorCode_(16-129)-05orn.json
new file mode 100644
index 0000000..093e93c
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-05orn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-05orn.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(16-129)-05orn.png b/site/controls/Timb_ColorCode_(16-129)-05orn.png
new file mode 100644
index 0000000..1e0c492
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-05orn.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(16-129)-06gry.json b/site/controls/Timb_ColorCode_(16-129)-06gry.json
new file mode 100644
index 0000000..b8452cf
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-06gry.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-06gry.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(16-129)-06gry.png b/site/controls/Timb_ColorCode_(16-129)-06gry.png
new file mode 100644
index 0000000..447bfee
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-06gry.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(16-129)-07prp.json b/site/controls/Timb_ColorCode_(16-129)-07prp.json
new file mode 100644
index 0000000..425b742
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-07prp.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-07prp.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(16-129)-07prp.png b/site/controls/Timb_ColorCode_(16-129)-07prp.png
new file mode 100644
index 0000000..e0f6dcd
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(16-129)-07prp.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(19-129)-01grn-B.json b/site/controls/Timb_ColorCode_(19-129)-01grn-B.json
new file mode 100644
index 0000000..ee74017
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-01grn-B.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-01grn-B.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(19-129)-01grn-B.png b/site/controls/Timb_ColorCode_(19-129)-01grn-B.png
new file mode 100644
index 0000000..e6a9610
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-01grn-B.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(19-129)-01grn.json b/site/controls/Timb_ColorCode_(19-129)-01grn.json
new file mode 100644
index 0000000..6915941
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-01grn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-01grn.png", "cellw": 19} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(19-129)-01grn.png b/site/controls/Timb_ColorCode_(19-129)-01grn.png
new file mode 100644
index 0000000..2f735b6
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-01grn.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(19-129)-02ylw.json b/site/controls/Timb_ColorCode_(19-129)-02ylw.json
new file mode 100644
index 0000000..a143768
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-02ylw.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-02ylw.png", "cellw": 19} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(19-129)-02ylw.png b/site/controls/Timb_ColorCode_(19-129)-02ylw.png
new file mode 100644
index 0000000..119cfdb
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-02ylw.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(19-129)-03blo.json b/site/controls/Timb_ColorCode_(19-129)-03blo.json
new file mode 100644
index 0000000..a1035e1
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-03blo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-03blo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(19-129)-03blo.png b/site/controls/Timb_ColorCode_(19-129)-03blo.png
new file mode 100644
index 0000000..d7506b0
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-03blo.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(19-129)-04red.json b/site/controls/Timb_ColorCode_(19-129)-04red.json
new file mode 100644
index 0000000..84362bf
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-04red.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-04red.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(19-129)-04red.png b/site/controls/Timb_ColorCode_(19-129)-04red.png
new file mode 100644
index 0000000..0812112
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-04red.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(19-129)-05orn.json b/site/controls/Timb_ColorCode_(19-129)-05orn.json
new file mode 100644
index 0000000..036353c
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-05orn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-05orn.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(19-129)-05orn.png b/site/controls/Timb_ColorCode_(19-129)-05orn.png
new file mode 100644
index 0000000..3e80ca6
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-05orn.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(19-129)-06gry-B.json b/site/controls/Timb_ColorCode_(19-129)-06gry-B.json
new file mode 100644
index 0000000..f0c01bd
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-06gry-B.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-06gry-B.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(19-129)-06gry-B.png b/site/controls/Timb_ColorCode_(19-129)-06gry-B.png
new file mode 100644
index 0000000..0e6923c
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-06gry-B.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(19-129)-06gry.json b/site/controls/Timb_ColorCode_(19-129)-06gry.json
new file mode 100644
index 0000000..c74bb5c
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-06gry.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-06gry.png", "cellw": 19} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(19-129)-06gry.png b/site/controls/Timb_ColorCode_(19-129)-06gry.png
new file mode 100644
index 0000000..de0c7a5
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-06gry.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(19-129)-07prp.json b/site/controls/Timb_ColorCode_(19-129)-07prp.json
new file mode 100644
index 0000000..6b97b93
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-07prp.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-07prp.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(19-129)-07prp.png b/site/controls/Timb_ColorCode_(19-129)-07prp.png
new file mode 100644
index 0000000..f934759
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(19-129)-07prp.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(24-129)-01grn.json b/site/controls/Timb_ColorCode_(24-129)-01grn.json
new file mode 100644
index 0000000..cd08711
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-01grn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-01grn.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(24-129)-01grn.png b/site/controls/Timb_ColorCode_(24-129)-01grn.png
new file mode 100644
index 0000000..643ae66
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-01grn.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(24-129)-02ylw.json b/site/controls/Timb_ColorCode_(24-129)-02ylw.json
new file mode 100644
index 0000000..74827c1
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-02ylw.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-02ylw.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(24-129)-02ylw.png b/site/controls/Timb_ColorCode_(24-129)-02ylw.png
new file mode 100644
index 0000000..a9aa385
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-02ylw.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(24-129)-03blo.json b/site/controls/Timb_ColorCode_(24-129)-03blo.json
new file mode 100644
index 0000000..2d510a6
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-03blo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-03blo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(24-129)-03blo.png b/site/controls/Timb_ColorCode_(24-129)-03blo.png
new file mode 100644
index 0000000..a15dfd0
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-03blo.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(24-129)-04red.json b/site/controls/Timb_ColorCode_(24-129)-04red.json
new file mode 100644
index 0000000..4dd79ec
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-04red.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-04red.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(24-129)-04red.png b/site/controls/Timb_ColorCode_(24-129)-04red.png
new file mode 100644
index 0000000..f0b8f95
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-04red.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(24-129)-05orn.json b/site/controls/Timb_ColorCode_(24-129)-05orn.json
new file mode 100644
index 0000000..ea27eda
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-05orn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-05orn.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(24-129)-05orn.png b/site/controls/Timb_ColorCode_(24-129)-05orn.png
new file mode 100644
index 0000000..b8b45de
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-05orn.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(24-129)-06gry.json b/site/controls/Timb_ColorCode_(24-129)-06gry.json
new file mode 100644
index 0000000..d75eda3
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-06gry.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-06gry.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(24-129)-06gry.png b/site/controls/Timb_ColorCode_(24-129)-06gry.png
new file mode 100644
index 0000000..74273b7
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-06gry.png
Binary files differ
diff --git a/site/controls/Timb_ColorCode_(24-129)-07prp.json b/site/controls/Timb_ColorCode_(24-129)-07prp.json
new file mode 100644
index 0000000..4015392
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-07prp.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-07prp.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ColorCode_(24-129)-07prp.png b/site/controls/Timb_ColorCode_(24-129)-07prp.png
new file mode 100644
index 0000000..4f69434
--- /dev/null
+++ b/site/controls/Timb_ColorCode_(24-129)-07prp.png
Binary files differ
diff --git a/site/controls/Timb_DarkaGain-1.json b/site/controls/Timb_DarkaGain-1.json
new file mode 100644
index 0000000..49bba4c
--- /dev/null
+++ b/site/controls/Timb_DarkaGain-1.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_DarkaGain-1.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_DarkaGain-1.png b/site/controls/Timb_DarkaGain-1.png
new file mode 100644
index 0000000..e16a4d4
--- /dev/null
+++ b/site/controls/Timb_DarkaGain-1.png
Binary files differ
diff --git a/site/controls/Timb_Def5_FXonoff_(19x).json b/site/controls/Timb_Def5_FXonoff_(19x).json
new file mode 100644
index 0000000..4e54b99
--- /dev/null
+++ b/site/controls/Timb_Def5_FXonoff_(19x).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Def5_FXonoff_(19x).png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/Timb_Def5_FXonoff_(19x).png b/site/controls/Timb_Def5_FXonoff_(19x).png
new file mode 100644
index 0000000..4513fa6
--- /dev/null
+++ b/site/controls/Timb_Def5_FXonoff_(19x).png
Binary files differ
diff --git a/site/controls/Timb_DramaKing-Green_48128.json b/site/controls/Timb_DramaKing-Green_48128.json
new file mode 100644
index 0000000..ab0fb5b
--- /dev/null
+++ b/site/controls/Timb_DramaKing-Green_48128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_DramaKing-Green_48128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_DramaKing-Green_48128.png b/site/controls/Timb_DramaKing-Green_48128.png
new file mode 100644
index 0000000..b221484
--- /dev/null
+++ b/site/controls/Timb_DramaKing-Green_48128.png
Binary files differ
diff --git a/site/controls/Timb_DramaKing_48128.json b/site/controls/Timb_DramaKing_48128.json
new file mode 100644
index 0000000..98c8243
--- /dev/null
+++ b/site/controls/Timb_DramaKing_48128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_DramaKing_48128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_DramaKing_48128.png b/site/controls/Timb_DramaKing_48128.png
new file mode 100644
index 0000000..225399d
--- /dev/null
+++ b/site/controls/Timb_DramaKing_48128.png
Binary files differ
diff --git a/site/controls/Timb_ExpoBloo96128.json b/site/controls/Timb_ExpoBloo96128.json
new file mode 100644
index 0000000..1caf4b9
--- /dev/null
+++ b/site/controls/Timb_ExpoBloo96128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_ExpoBloo96128.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_ExpoBloo96128.png b/site/controls/Timb_ExpoBloo96128.png
new file mode 100644
index 0000000..20473eb
--- /dev/null
+++ b/site/controls/Timb_ExpoBloo96128.png
Binary files differ
diff --git a/site/controls/Timb_ExpoGreen96128.json b/site/controls/Timb_ExpoGreen96128.json
new file mode 100644
index 0000000..994803e
--- /dev/null
+++ b/site/controls/Timb_ExpoGreen96128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_ExpoGreen96128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_ExpoGreen96128.png b/site/controls/Timb_ExpoGreen96128.png
new file mode 100644
index 0000000..c89c326
--- /dev/null
+++ b/site/controls/Timb_ExpoGreen96128.png
Binary files differ
diff --git a/site/controls/Timb_ExpoWhite96128.json b/site/controls/Timb_ExpoWhite96128.json
new file mode 100644
index 0000000..b8eaf1c
--- /dev/null
+++ b/site/controls/Timb_ExpoWhite96128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_ExpoWhite96128.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_ExpoWhite96128.png b/site/controls/Timb_ExpoWhite96128.png
new file mode 100644
index 0000000..9457072
--- /dev/null
+++ b/site/controls/Timb_ExpoWhite96128.png
Binary files differ
diff --git a/site/controls/Timb_FAKECLOCK2018-1.json b/site/controls/Timb_FAKECLOCK2018-1.json
new file mode 100644
index 0000000..4030159
--- /dev/null
+++ b/site/controls/Timb_FAKECLOCK2018-1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 0, "fn": "Timb_FAKECLOCK2018-1.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_FAKECLOCK2018-1.png b/site/controls/Timb_FAKECLOCK2018-1.png
new file mode 100644
index 0000000..e8c4ced
--- /dev/null
+++ b/site/controls/Timb_FAKECLOCK2018-1.png
Binary files differ
diff --git a/site/controls/Timb_FALCON&UPGExtras-0--.json b/site/controls/Timb_FALCON&UPGExtras-0--.json
new file mode 100644
index 0000000..e745fda
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-0--.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-0--.png", "cellw": 131} \ No newline at end of file
diff --git a/site/controls/Timb_FALCON&UPGExtras-0--.png b/site/controls/Timb_FALCON&UPGExtras-0--.png
new file mode 100644
index 0000000..331c3df
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-0--.png
Binary files differ
diff --git a/site/controls/Timb_FALCON&UPGExtras-1MS.json b/site/controls/Timb_FALCON&UPGExtras-1MS.json
new file mode 100644
index 0000000..56a8a6b
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-1MS.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-1MS.png", "cellw": 131} \ No newline at end of file
diff --git a/site/controls/Timb_FALCON&UPGExtras-1MS.png b/site/controls/Timb_FALCON&UPGExtras-1MS.png
new file mode 100644
index 0000000..5f11c0a
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-1MS.png
Binary files differ
diff --git a/site/controls/Timb_FALCON&UPGExtras-2PM.json b/site/controls/Timb_FALCON&UPGExtras-2PM.json
new file mode 100644
index 0000000..fb1f6af
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-2PM.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-2PM.png", "cellw": 131} \ No newline at end of file
diff --git a/site/controls/Timb_FALCON&UPGExtras-2PM.png b/site/controls/Timb_FALCON&UPGExtras-2PM.png
new file mode 100644
index 0000000..f81ca3c
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-2PM.png
Binary files differ
diff --git a/site/controls/Timb_FALCON&UPGExtras-3RP.json b/site/controls/Timb_FALCON&UPGExtras-3RP.json
new file mode 100644
index 0000000..2e4512f
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-3RP.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-3RP.png", "cellw": 131} \ No newline at end of file
diff --git a/site/controls/Timb_FALCON&UPGExtras-3RP.png b/site/controls/Timb_FALCON&UPGExtras-3RP.png
new file mode 100644
index 0000000..da02ded
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-3RP.png
Binary files differ
diff --git a/site/controls/Timb_FALCON&UPGExtras-4EQ.json b/site/controls/Timb_FALCON&UPGExtras-4EQ.json
new file mode 100644
index 0000000..dd7f380
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-4EQ.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-4EQ.png"} \ No newline at end of file
diff --git a/site/controls/Timb_FALCON&UPGExtras-4EQ.png b/site/controls/Timb_FALCON&UPGExtras-4EQ.png
new file mode 100644
index 0000000..855d5c0
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-4EQ.png
Binary files differ
diff --git a/site/controls/Timb_FALCON&UPGExtras-5RV.json b/site/controls/Timb_FALCON&UPGExtras-5RV.json
new file mode 100644
index 0000000..9530f75
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-5RV.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-5RV.png", "cellw": 131} \ No newline at end of file
diff --git a/site/controls/Timb_FALCON&UPGExtras-5RV.png b/site/controls/Timb_FALCON&UPGExtras-5RV.png
new file mode 100644
index 0000000..86eddc2
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-5RV.png
Binary files differ
diff --git a/site/controls/Timb_FALCON&UPGExtras-6ST.json b/site/controls/Timb_FALCON&UPGExtras-6ST.json
new file mode 100644
index 0000000..fa1dc5e
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-6ST.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-6ST.png"} \ No newline at end of file
diff --git a/site/controls/Timb_FALCON&UPGExtras-6ST.png b/site/controls/Timb_FALCON&UPGExtras-6ST.png
new file mode 100644
index 0000000..49ce838
--- /dev/null
+++ b/site/controls/Timb_FALCON&UPGExtras-6ST.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-01_40-128.json b/site/controls/Timb_FLstyleEdt-01_40-128.json
new file mode 100644
index 0000000..c2396b6
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-01_40-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb_FLstyleEdt-01_40-128.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-01_40-128.png b/site/controls/Timb_FLstyleEdt-01_40-128.png
new file mode 100644
index 0000000..b84372d
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-01_40-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-02_40-128.json b/site/controls/Timb_FLstyleEdt-02_40-128.json
new file mode 100644
index 0000000..6dd870f
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-02_40-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb_FLstyleEdt-02_40-128.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-02_40-128.png b/site/controls/Timb_FLstyleEdt-02_40-128.png
new file mode 100644
index 0000000..57402a6
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-02_40-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-03_32-128.json b/site/controls/Timb_FLstyleEdt-03_32-128.json
new file mode 100644
index 0000000..3b99459
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-03_32-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-03_32-128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-03_32-128.png b/site/controls/Timb_FLstyleEdt-03_32-128.png
new file mode 100644
index 0000000..3c12c62
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-03_32-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-05_32-128.json b/site/controls/Timb_FLstyleEdt-05_32-128.json
new file mode 100644
index 0000000..c4bddcc
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-05_32-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-05_32-128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-05_32-128.png b/site/controls/Timb_FLstyleEdt-05_32-128.png
new file mode 100644
index 0000000..abd5d72
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-05_32-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-06_32-128.json b/site/controls/Timb_FLstyleEdt-06_32-128.json
new file mode 100644
index 0000000..8adcc5a
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-06_32-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-06_32-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-06_32-128.png b/site/controls/Timb_FLstyleEdt-06_32-128.png
new file mode 100644
index 0000000..572dbdc
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-06_32-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-06b_32-128.json b/site/controls/Timb_FLstyleEdt-06b_32-128.json
new file mode 100644
index 0000000..af78d24
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-06b_32-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-06b_32-128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-06b_32-128.png b/site/controls/Timb_FLstyleEdt-06b_32-128.png
new file mode 100644
index 0000000..4a2cde0
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-06b_32-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-06c_32-128.json b/site/controls/Timb_FLstyleEdt-06c_32-128.json
new file mode 100644
index 0000000..de441d5
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-06c_32-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-06c_32-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-06c_32-128.png b/site/controls/Timb_FLstyleEdt-06c_32-128.png
new file mode 100644
index 0000000..214c2f7
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-06c_32-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-06d_32-128.json b/site/controls/Timb_FLstyleEdt-06d_32-128.json
new file mode 100644
index 0000000..a3f49e3
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-06d_32-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-06d_32-128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-06d_32-128.png b/site/controls/Timb_FLstyleEdt-06d_32-128.png
new file mode 100644
index 0000000..c373a5e
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-06d_32-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-07_32-128.json b/site/controls/Timb_FLstyleEdt-07_32-128.json
new file mode 100644
index 0000000..4bf0bdb
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-07_32-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-07_32-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-07_32-128.png b/site/controls/Timb_FLstyleEdt-07_32-128.png
new file mode 100644
index 0000000..aa96434
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-07_32-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-07b_32-128.json b/site/controls/Timb_FLstyleEdt-07b_32-128.json
new file mode 100644
index 0000000..a1e959a
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-07b_32-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-07b_32-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-07b_32-128.png b/site/controls/Timb_FLstyleEdt-07b_32-128.png
new file mode 100644
index 0000000..7103dfa
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-07b_32-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-07c_48-128.json b/site/controls/Timb_FLstyleEdt-07c_48-128.json
new file mode 100644
index 0000000..57fb7e9
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-07c_48-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-07c_48-128.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-07c_48-128.png b/site/controls/Timb_FLstyleEdt-07c_48-128.png
new file mode 100644
index 0000000..c76d4fa
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-07c_48-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-07d_48-128pan.json b/site/controls/Timb_FLstyleEdt-07d_48-128pan.json
new file mode 100644
index 0000000..4444c4e
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-07d_48-128pan.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-07d_48-128pan.png"} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-07d_48-128pan.png b/site/controls/Timb_FLstyleEdt-07d_48-128pan.png
new file mode 100644
index 0000000..f5b0a23
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-07d_48-128pan.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-08_48-128.json b/site/controls/Timb_FLstyleEdt-08_48-128.json
new file mode 100644
index 0000000..2d3f420
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-08_48-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-08_48-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-08_48-128.png b/site/controls/Timb_FLstyleEdt-08_48-128.png
new file mode 100644
index 0000000..26316d6
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-08_48-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-09_48-128.json b/site/controls/Timb_FLstyleEdt-09_48-128.json
new file mode 100644
index 0000000..9b87b15
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-09_48-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-09_48-128.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-09_48-128.png b/site/controls/Timb_FLstyleEdt-09_48-128.png
new file mode 100644
index 0000000..6546054
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-09_48-128.png
Binary files differ
diff --git a/site/controls/Timb_FLstyleEdt-10_48-128.json b/site/controls/Timb_FLstyleEdt-10_48-128.json
new file mode 100644
index 0000000..326e252
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-10_48-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-10_48-128.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb_FLstyleEdt-10_48-128.png b/site/controls/Timb_FLstyleEdt-10_48-128.png
new file mode 100644
index 0000000..fe8098a
--- /dev/null
+++ b/site/controls/Timb_FLstyleEdt-10_48-128.png
Binary files differ
diff --git a/site/controls/Timb_Falcon Fake Knob.json b/site/controls/Timb_Falcon Fake Knob.json
new file mode 100644
index 0000000..d9dedfa
--- /dev/null
+++ b/site/controls/Timb_Falcon Fake Knob.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 36, "ctltype": 0, "fn": "Timb_Falcon Fake Knob.png", "cellw": 36} \ No newline at end of file
diff --git a/site/controls/Timb_Falcon Fake Knob.png b/site/controls/Timb_Falcon Fake Knob.png
new file mode 100644
index 0000000..a7391fe
--- /dev/null
+++ b/site/controls/Timb_Falcon Fake Knob.png
Binary files differ
diff --git a/site/controls/Timb_Flatomat_MUTE20.json b/site/controls/Timb_Flatomat_MUTE20.json
new file mode 100644
index 0000000..7675c2b
--- /dev/null
+++ b/site/controls/Timb_Flatomat_MUTE20.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_Flatomat_MUTE20.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/Timb_Flatomat_MUTE20.png b/site/controls/Timb_Flatomat_MUTE20.png
new file mode 100644
index 0000000..2242187
--- /dev/null
+++ b/site/controls/Timb_Flatomat_MUTE20.png
Binary files differ
diff --git a/site/controls/Timb_Flatomat_SOLO20.json b/site/controls/Timb_Flatomat_SOLO20.json
new file mode 100644
index 0000000..224c982
--- /dev/null
+++ b/site/controls/Timb_Flatomat_SOLO20.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_Flatomat_SOLO20.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/Timb_Flatomat_SOLO20.png b/site/controls/Timb_Flatomat_SOLO20.png
new file mode 100644
index 0000000..77530cb
--- /dev/null
+++ b/site/controls/Timb_Flatomat_SOLO20.png
Binary files differ
diff --git a/site/controls/Timb_GATEMETER-01_(48-128)-Left.json b/site/controls/Timb_GATEMETER-01_(48-128)-Left.json
new file mode 100644
index 0000000..5751b3e
--- /dev/null
+++ b/site/controls/Timb_GATEMETER-01_(48-128)-Left.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_GATEMETER-01_(48-128)-Left.png"} \ No newline at end of file
diff --git a/site/controls/Timb_GATEMETER-01_(48-128)-Left.png b/site/controls/Timb_GATEMETER-01_(48-128)-Left.png
new file mode 100644
index 0000000..dd0153a
--- /dev/null
+++ b/site/controls/Timb_GATEMETER-01_(48-128)-Left.png
Binary files differ
diff --git a/site/controls/Timb_GATEMETER-01_(48-128)-Right.json b/site/controls/Timb_GATEMETER-01_(48-128)-Right.json
new file mode 100644
index 0000000..f810567
--- /dev/null
+++ b/site/controls/Timb_GATEMETER-01_(48-128)-Right.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_GATEMETER-01_(48-128)-Right.png"} \ No newline at end of file
diff --git a/site/controls/Timb_GATEMETER-01_(48-128)-Right.png b/site/controls/Timb_GATEMETER-01_(48-128)-Right.png
new file mode 100644
index 0000000..96d3820
--- /dev/null
+++ b/site/controls/Timb_GATEMETER-01_(48-128)-Right.png
Binary files differ
diff --git a/site/controls/Timb_GATEMETER-01_(48-128).json b/site/controls/Timb_GATEMETER-01_(48-128).json
new file mode 100644
index 0000000..ea3cf45
--- /dev/null
+++ b/site/controls/Timb_GATEMETER-01_(48-128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_GATEMETER-01_(48-128).png"} \ No newline at end of file
diff --git a/site/controls/Timb_GATEMETER-01_(48-128).png b/site/controls/Timb_GATEMETER-01_(48-128).png
new file mode 100644
index 0000000..5ae4362
--- /dev/null
+++ b/site/controls/Timb_GATEMETER-01_(48-128).png
Binary files differ
diff --git a/site/controls/Timb_GB CHAINER SLOTS1.json b/site/controls/Timb_GB CHAINER SLOTS1.json
new file mode 100644
index 0000000..dcb848c
--- /dev/null
+++ b/site/controls/Timb_GB CHAINER SLOTS1.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb_GB CHAINER SLOTS1.png"} \ No newline at end of file
diff --git a/site/controls/Timb_GB CHAINER SLOTS1.png b/site/controls/Timb_GB CHAINER SLOTS1.png
new file mode 100644
index 0000000..2b81b61
--- /dev/null
+++ b/site/controls/Timb_GB CHAINER SLOTS1.png
Binary files differ
diff --git a/site/controls/Timb_GB CHAINER SLOTS2.json b/site/controls/Timb_GB CHAINER SLOTS2.json
new file mode 100644
index 0000000..bd4874d
--- /dev/null
+++ b/site/controls/Timb_GB CHAINER SLOTS2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb_GB CHAINER SLOTS2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_GB CHAINER SLOTS2.png b/site/controls/Timb_GB CHAINER SLOTS2.png
new file mode 100644
index 0000000..fb62ca5
--- /dev/null
+++ b/site/controls/Timb_GB CHAINER SLOTS2.png
Binary files differ
diff --git a/site/controls/Timb_GREEN LED KNOB_64-128.json b/site/controls/Timb_GREEN LED KNOB_64-128.json
new file mode 100644
index 0000000..7fc5274
--- /dev/null
+++ b/site/controls/Timb_GREEN LED KNOB_64-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_GREEN LED KNOB_64-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_GREEN LED KNOB_64-128.png b/site/controls/Timb_GREEN LED KNOB_64-128.png
new file mode 100644
index 0000000..7e8f176
--- /dev/null
+++ b/site/controls/Timb_GREEN LED KNOB_64-128.png
Binary files differ
diff --git a/site/controls/Timb_GoodolWinampBEAT-1.json b/site/controls/Timb_GoodolWinampBEAT-1.json
new file mode 100644
index 0000000..57d514d
--- /dev/null
+++ b/site/controls/Timb_GoodolWinampBEAT-1.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 29, "ctltype": 3, "fn": "Timb_GoodolWinampBEAT-1.png"} \ No newline at end of file
diff --git a/site/controls/Timb_GoodolWinampBEAT-1.png b/site/controls/Timb_GoodolWinampBEAT-1.png
new file mode 100644
index 0000000..c1c0008
--- /dev/null
+++ b/site/controls/Timb_GoodolWinampBEAT-1.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--01.PNG b/site/controls/Timb_Grig2018_Controls--01.PNG
new file mode 100644
index 0000000..d7c2448
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--01.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--01.json b/site/controls/Timb_Grig2018_Controls--01.json
new file mode 100644
index 0000000..f82ecfb
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 35, "ctltype": 2, "fn": "Timb_Grig2018_Controls--01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--02.PNG b/site/controls/Timb_Grig2018_Controls--02.PNG
new file mode 100644
index 0000000..f349072
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--02.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--02.json b/site/controls/Timb_Grig2018_Controls--02.json
new file mode 100644
index 0000000..95c4ef0
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--02.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--03.PNG b/site/controls/Timb_Grig2018_Controls--03.PNG
new file mode 100644
index 0000000..476b5bd
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--03.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--03.json b/site/controls/Timb_Grig2018_Controls--03.json
new file mode 100644
index 0000000..3ed9507
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--03.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 38, "ctltype": 2, "fn": "Timb_Grig2018_Controls--03.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--04.json b/site/controls/Timb_Grig2018_Controls--04.json
new file mode 100644
index 0000000..92c5e2b
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--04.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 34, "ctltype": 2, "fn": "Timb_Grig2018_Controls--04.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--04.png b/site/controls/Timb_Grig2018_Controls--04.png
new file mode 100644
index 0000000..22eb95d
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--04.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--05.PNG b/site/controls/Timb_Grig2018_Controls--05.PNG
new file mode 100644
index 0000000..46180a6
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--05.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--05.json b/site/controls/Timb_Grig2018_Controls--05.json
new file mode 100644
index 0000000..f88168d
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--05.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 37, "ctltype": 2, "fn": "Timb_Grig2018_Controls--05.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--06.PNG b/site/controls/Timb_Grig2018_Controls--06.PNG
new file mode 100644
index 0000000..97021fc
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--06.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--06.json b/site/controls/Timb_Grig2018_Controls--06.json
new file mode 100644
index 0000000..20b3e6f
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--06.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 43, "ctltype": 2, "fn": "Timb_Grig2018_Controls--06.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--07.PNG b/site/controls/Timb_Grig2018_Controls--07.PNG
new file mode 100644
index 0000000..0580109
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--07.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--07.json b/site/controls/Timb_Grig2018_Controls--07.json
new file mode 100644
index 0000000..d5e76d2
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--07.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--07.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--08.PNG b/site/controls/Timb_Grig2018_Controls--08.PNG
new file mode 100644
index 0000000..e2bb041
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--08.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--08.json b/site/controls/Timb_Grig2018_Controls--08.json
new file mode 100644
index 0000000..ea0de89
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--08.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--08.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--09.PNG b/site/controls/Timb_Grig2018_Controls--09.PNG
new file mode 100644
index 0000000..7b5c667
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--09.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--09.json b/site/controls/Timb_Grig2018_Controls--09.json
new file mode 100644
index 0000000..ff873b0
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--09.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_Grig2018_Controls--09.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--10.PNG b/site/controls/Timb_Grig2018_Controls--10.PNG
new file mode 100644
index 0000000..71eb343
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--10.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--10.json b/site/controls/Timb_Grig2018_Controls--10.json
new file mode 100644
index 0000000..29df953
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--10.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--10.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--11.PNG b/site/controls/Timb_Grig2018_Controls--11.PNG
new file mode 100644
index 0000000..ff473fb
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--11.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--11.json b/site/controls/Timb_Grig2018_Controls--11.json
new file mode 100644
index 0000000..e3cdfff
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--11.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Grig2018_Controls--11.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--12.PNG b/site/controls/Timb_Grig2018_Controls--12.PNG
new file mode 100644
index 0000000..ec65510
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--12.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--12.json b/site/controls/Timb_Grig2018_Controls--12.json
new file mode 100644
index 0000000..1eeefcb
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--12.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 13, "ctltype": 2, "fn": "Timb_Grig2018_Controls--12.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--13.PNG b/site/controls/Timb_Grig2018_Controls--13.PNG
new file mode 100644
index 0000000..8f41c50
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--13.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--13.json b/site/controls/Timb_Grig2018_Controls--13.json
new file mode 100644
index 0000000..466a0a1
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--13.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 13, "ctltype": 2, "fn": "Timb_Grig2018_Controls--13.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--14.PNG b/site/controls/Timb_Grig2018_Controls--14.PNG
new file mode 100644
index 0000000..2c73b91
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--14.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--14.json b/site/controls/Timb_Grig2018_Controls--14.json
new file mode 100644
index 0000000..0236244
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--14.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Grig2018_Controls--14.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--15.PNG b/site/controls/Timb_Grig2018_Controls--15.PNG
new file mode 100644
index 0000000..0230421
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--15.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--15.json b/site/controls/Timb_Grig2018_Controls--15.json
new file mode 100644
index 0000000..568015e
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--15.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Timb_Grig2018_Controls--15.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--16.PNG b/site/controls/Timb_Grig2018_Controls--16.PNG
new file mode 100644
index 0000000..d83845f
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--16.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--16.json b/site/controls/Timb_Grig2018_Controls--16.json
new file mode 100644
index 0000000..20b2f42
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--16.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--17.PNG b/site/controls/Timb_Grig2018_Controls--17.PNG
new file mode 100644
index 0000000..3764dce
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--17.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--17.json b/site/controls/Timb_Grig2018_Controls--17.json
new file mode 100644
index 0000000..01e8d80
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--17.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Timb_Grig2018_Controls--17.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--18.PNG b/site/controls/Timb_Grig2018_Controls--18.PNG
new file mode 100644
index 0000000..8d47ffb
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--18.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--18.json b/site/controls/Timb_Grig2018_Controls--18.json
new file mode 100644
index 0000000..32cba75
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--18.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--18.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--19.PNG b/site/controls/Timb_Grig2018_Controls--19.PNG
new file mode 100644
index 0000000..da7053f
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--19.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--19.json b/site/controls/Timb_Grig2018_Controls--19.json
new file mode 100644
index 0000000..07f503c
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--19.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_Grig2018_Controls--19.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--20.PNG b/site/controls/Timb_Grig2018_Controls--20.PNG
new file mode 100644
index 0000000..59507e5
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--20.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--20.json b/site/controls/Timb_Grig2018_Controls--20.json
new file mode 100644
index 0000000..7851503
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--20.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 13, "ctltype": 2, "fn": "Timb_Grig2018_Controls--20.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--21.PNG b/site/controls/Timb_Grig2018_Controls--21.PNG
new file mode 100644
index 0000000..74535db
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--21.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--21.json b/site/controls/Timb_Grig2018_Controls--21.json
new file mode 100644
index 0000000..95ecd27
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--21.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 31, "ctltype": 2, "fn": "Timb_Grig2018_Controls--21.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--22.PNG b/site/controls/Timb_Grig2018_Controls--22.PNG
new file mode 100644
index 0000000..7580dfb
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--22.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--22.json b/site/controls/Timb_Grig2018_Controls--22.json
new file mode 100644
index 0000000..93373b3
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--22.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--22.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--23.PNG b/site/controls/Timb_Grig2018_Controls--23.PNG
new file mode 100644
index 0000000..f23d9d8
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--23.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--23.json b/site/controls/Timb_Grig2018_Controls--23.json
new file mode 100644
index 0000000..f19fb9d
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--23.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_Grig2018_Controls--23.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--24.PNG b/site/controls/Timb_Grig2018_Controls--24.PNG
new file mode 100644
index 0000000..2f428db
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--24.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--24.json b/site/controls/Timb_Grig2018_Controls--24.json
new file mode 100644
index 0000000..46a9af3
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--24.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_Grig2018_Controls--24.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--25.PNG b/site/controls/Timb_Grig2018_Controls--25.PNG
new file mode 100644
index 0000000..9be2958
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--25.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--25.json b/site/controls/Timb_Grig2018_Controls--25.json
new file mode 100644
index 0000000..cd6ec4f
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--25.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--25.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--26.PNG b/site/controls/Timb_Grig2018_Controls--26.PNG
new file mode 100644
index 0000000..f2ee72a
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--26.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--26.json b/site/controls/Timb_Grig2018_Controls--26.json
new file mode 100644
index 0000000..c81a63b
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--26.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--26.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--27.PNG b/site/controls/Timb_Grig2018_Controls--27.PNG
new file mode 100644
index 0000000..890c371
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--27.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--27.json b/site/controls/Timb_Grig2018_Controls--27.json
new file mode 100644
index 0000000..497a252
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--27.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--27.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--28.PNG b/site/controls/Timb_Grig2018_Controls--28.PNG
new file mode 100644
index 0000000..87ce94c
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--28.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--28.json b/site/controls/Timb_Grig2018_Controls--28.json
new file mode 100644
index 0000000..9c5506d
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--28.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--28.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--29.PNG b/site/controls/Timb_Grig2018_Controls--29.PNG
new file mode 100644
index 0000000..27b7634
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--29.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--29.json b/site/controls/Timb_Grig2018_Controls--29.json
new file mode 100644
index 0000000..bb935a4
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--29.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--29.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--30.PNG b/site/controls/Timb_Grig2018_Controls--30.PNG
new file mode 100644
index 0000000..f4d7410
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--30.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--30.json b/site/controls/Timb_Grig2018_Controls--30.json
new file mode 100644
index 0000000..894dcb7
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--30.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--30.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--31.PNG b/site/controls/Timb_Grig2018_Controls--31.PNG
new file mode 100644
index 0000000..c932405
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--31.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--31.json b/site/controls/Timb_Grig2018_Controls--31.json
new file mode 100644
index 0000000..c21d2a5
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--31.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--31.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--32.json b/site/controls/Timb_Grig2018_Controls--32.json
new file mode 100644
index 0000000..2928eaf
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--32.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--32.png b/site/controls/Timb_Grig2018_Controls--32.png
new file mode 100644
index 0000000..0107a2b
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--32.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--33.PNG b/site/controls/Timb_Grig2018_Controls--33.PNG
new file mode 100644
index 0000000..de41378
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--33.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--33.json b/site/controls/Timb_Grig2018_Controls--33.json
new file mode 100644
index 0000000..c330099
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--33.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--33.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--34.PNG b/site/controls/Timb_Grig2018_Controls--34.PNG
new file mode 100644
index 0000000..73b616d
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--34.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--34.json b/site/controls/Timb_Grig2018_Controls--34.json
new file mode 100644
index 0000000..61ee675
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--34.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--34.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--35.json b/site/controls/Timb_Grig2018_Controls--35.json
new file mode 100644
index 0000000..b1330a8
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--35.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Grig2018_Controls--35.png", "cellw": 43} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--35.png b/site/controls/Timb_Grig2018_Controls--35.png
new file mode 100644
index 0000000..e253e23
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--35.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--36.json b/site/controls/Timb_Grig2018_Controls--36.json
new file mode 100644
index 0000000..f3da4c7
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--36.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Grig2018_Controls--36.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--36.png b/site/controls/Timb_Grig2018_Controls--36.png
new file mode 100644
index 0000000..9e1e27d
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--36.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--37.json b/site/controls/Timb_Grig2018_Controls--37.json
new file mode 100644
index 0000000..0418e0c
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--37.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Grig2018_Controls--37.png", "cellw": 43} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--37.png b/site/controls/Timb_Grig2018_Controls--37.png
new file mode 100644
index 0000000..4ffdb11
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--37.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--38.json b/site/controls/Timb_Grig2018_Controls--38.json
new file mode 100644
index 0000000..c8436f5
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--38.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Grig2018_Controls--38.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--38.png b/site/controls/Timb_Grig2018_Controls--38.png
new file mode 100644
index 0000000..2ab8761
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--38.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--39.PNG b/site/controls/Timb_Grig2018_Controls--39.PNG
new file mode 100644
index 0000000..eb80fc1
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--39.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--39.json b/site/controls/Timb_Grig2018_Controls--39.json
new file mode 100644
index 0000000..c50fe71
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--39.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_Grig2018_Controls--39.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--40.PNG b/site/controls/Timb_Grig2018_Controls--40.PNG
new file mode 100644
index 0000000..e196eb9
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--40.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--40.json b/site/controls/Timb_Grig2018_Controls--40.json
new file mode 100644
index 0000000..b6f9760
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--40.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_Grig2018_Controls--40.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--41.PNG b/site/controls/Timb_Grig2018_Controls--41.PNG
new file mode 100644
index 0000000..7755d3f
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--41.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--41.json b/site/controls/Timb_Grig2018_Controls--41.json
new file mode 100644
index 0000000..8d23598
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--41.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--41.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--42.PNG b/site/controls/Timb_Grig2018_Controls--42.PNG
new file mode 100644
index 0000000..7247159
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--42.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--42.json b/site/controls/Timb_Grig2018_Controls--42.json
new file mode 100644
index 0000000..43ff155
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--42.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--42.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--43.json b/site/controls/Timb_Grig2018_Controls--43.json
new file mode 100644
index 0000000..dac6862
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--43.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--43.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--43.png b/site/controls/Timb_Grig2018_Controls--43.png
new file mode 100644
index 0000000..01db371
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--43.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--44.PNG b/site/controls/Timb_Grig2018_Controls--44.PNG
new file mode 100644
index 0000000..3bf1279
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--44.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--44.json b/site/controls/Timb_Grig2018_Controls--44.json
new file mode 100644
index 0000000..32b941d
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--44.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_Grig2018_Controls--44.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--45.PNG b/site/controls/Timb_Grig2018_Controls--45.PNG
new file mode 100644
index 0000000..42ebdfb
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--45.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--45.json b/site/controls/Timb_Grig2018_Controls--45.json
new file mode 100644
index 0000000..6999de3
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--45.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "Timb_Grig2018_Controls--45.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--46.PNG b/site/controls/Timb_Grig2018_Controls--46.PNG
new file mode 100644
index 0000000..cfe48d7
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--46.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--46.json b/site/controls/Timb_Grig2018_Controls--46.json
new file mode 100644
index 0000000..b809eb1
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--46.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_Grig2018_Controls--46.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--47.PNG b/site/controls/Timb_Grig2018_Controls--47.PNG
new file mode 100644
index 0000000..bc515b8
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--47.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--47.json b/site/controls/Timb_Grig2018_Controls--47.json
new file mode 100644
index 0000000..ef14c3f
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--47.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--47.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--47b.json b/site/controls/Timb_Grig2018_Controls--47b.json
new file mode 100644
index 0000000..9fc1393
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--47b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--47b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--47b.png b/site/controls/Timb_Grig2018_Controls--47b.png
new file mode 100644
index 0000000..dc25539
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--47b.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--47c.json b/site/controls/Timb_Grig2018_Controls--47c.json
new file mode 100644
index 0000000..bf6aec0
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--47c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--47c.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--47c.png b/site/controls/Timb_Grig2018_Controls--47c.png
new file mode 100644
index 0000000..0c61555
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--47c.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--48.PNG b/site/controls/Timb_Grig2018_Controls--48.PNG
new file mode 100644
index 0000000..3f4452f
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--48.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--48.json b/site/controls/Timb_Grig2018_Controls--48.json
new file mode 100644
index 0000000..a1e4e98
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--48.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--48.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--49.PNG b/site/controls/Timb_Grig2018_Controls--49.PNG
new file mode 100644
index 0000000..f88dfbb
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--49.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--49.json b/site/controls/Timb_Grig2018_Controls--49.json
new file mode 100644
index 0000000..86065bd
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--49.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--49.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--50.PNG b/site/controls/Timb_Grig2018_Controls--50.PNG
new file mode 100644
index 0000000..00a23b4
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--50.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--50.json b/site/controls/Timb_Grig2018_Controls--50.json
new file mode 100644
index 0000000..c9fe93b
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--50.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--50.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--51.PNG b/site/controls/Timb_Grig2018_Controls--51.PNG
new file mode 100644
index 0000000..c5db51b
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--51.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--51.json b/site/controls/Timb_Grig2018_Controls--51.json
new file mode 100644
index 0000000..99418de
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--51.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--51.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--52.PNG b/site/controls/Timb_Grig2018_Controls--52.PNG
new file mode 100644
index 0000000..1743915
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--52.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--52.json b/site/controls/Timb_Grig2018_Controls--52.json
new file mode 100644
index 0000000..4ce616e
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--52.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 41, "ctltype": 2, "fn": "Timb_Grig2018_Controls--52.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--53.PNG b/site/controls/Timb_Grig2018_Controls--53.PNG
new file mode 100644
index 0000000..26d1a8e
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--53.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--53.json b/site/controls/Timb_Grig2018_Controls--53.json
new file mode 100644
index 0000000..9fa4bcd
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--53.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "Timb_Grig2018_Controls--53.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--54.PNG b/site/controls/Timb_Grig2018_Controls--54.PNG
new file mode 100644
index 0000000..8f43034
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--54.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--54.json b/site/controls/Timb_Grig2018_Controls--54.json
new file mode 100644
index 0000000..96a6281
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--54.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--54.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--55.PNG b/site/controls/Timb_Grig2018_Controls--55.PNG
new file mode 100644
index 0000000..a4fa1e7
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--55.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--55.json b/site/controls/Timb_Grig2018_Controls--55.json
new file mode 100644
index 0000000..c50b335
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--55.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--55.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--56.json b/site/controls/Timb_Grig2018_Controls--56.json
new file mode 100644
index 0000000..908df6c
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--56.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_Grig2018_Controls--56.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--56.png b/site/controls/Timb_Grig2018_Controls--56.png
new file mode 100644
index 0000000..cf32dc7
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--56.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--57.json b/site/controls/Timb_Grig2018_Controls--57.json
new file mode 100644
index 0000000..c48b32e
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--57.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "Timb_Grig2018_Controls--57.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--57.png b/site/controls/Timb_Grig2018_Controls--57.png
new file mode 100644
index 0000000..1228bae
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--57.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--58.PNG b/site/controls/Timb_Grig2018_Controls--58.PNG
new file mode 100644
index 0000000..9ba3532
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--58.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--58.json b/site/controls/Timb_Grig2018_Controls--58.json
new file mode 100644
index 0000000..39868eb
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--58.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--58.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--58b.PNG b/site/controls/Timb_Grig2018_Controls--58b.PNG
new file mode 100644
index 0000000..f27899c
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--58b.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--58b.json b/site/controls/Timb_Grig2018_Controls--58b.json
new file mode 100644
index 0000000..1209a4e
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--58b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--58b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--59.PNG b/site/controls/Timb_Grig2018_Controls--59.PNG
new file mode 100644
index 0000000..edfd23d
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--59.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--59.json b/site/controls/Timb_Grig2018_Controls--59.json
new file mode 100644
index 0000000..52d3b90
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--59.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 28, "ctltype": 2, "fn": "Timb_Grig2018_Controls--59.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--60.PNG b/site/controls/Timb_Grig2018_Controls--60.PNG
new file mode 100644
index 0000000..bb21425
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--60.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--60.json b/site/controls/Timb_Grig2018_Controls--60.json
new file mode 100644
index 0000000..0c3c2ef
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--60.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 15, "ctltype": 2, "fn": "Timb_Grig2018_Controls--60.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--61.PNG b/site/controls/Timb_Grig2018_Controls--61.PNG
new file mode 100644
index 0000000..5a9e742
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--61.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--61.json b/site/controls/Timb_Grig2018_Controls--61.json
new file mode 100644
index 0000000..f38f06c
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--61.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 36, "ctltype": 2, "fn": "Timb_Grig2018_Controls--61.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--61b.json b/site/controls/Timb_Grig2018_Controls--61b.json
new file mode 100644
index 0000000..272b004
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--61b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 36, "ctltype": 2, "fn": "Timb_Grig2018_Controls--61b.png", "cellw": 36} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--61b.png b/site/controls/Timb_Grig2018_Controls--61b.png
new file mode 100644
index 0000000..cf6ac77
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--61b.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--62.PNG b/site/controls/Timb_Grig2018_Controls--62.PNG
new file mode 100644
index 0000000..b107a45
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--62.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--62.json b/site/controls/Timb_Grig2018_Controls--62.json
new file mode 100644
index 0000000..10d51e7
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--62.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--62.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--63.PNG b/site/controls/Timb_Grig2018_Controls--63.PNG
new file mode 100644
index 0000000..d951060
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--63.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--63.json b/site/controls/Timb_Grig2018_Controls--63.json
new file mode 100644
index 0000000..42376e1
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--63.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 33, "ctltype": 2, "fn": "Timb_Grig2018_Controls--63.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--66.PNG b/site/controls/Timb_Grig2018_Controls--66.PNG
new file mode 100644
index 0000000..810a8bf
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--66.json b/site/controls/Timb_Grig2018_Controls--66.json
new file mode 100644
index 0000000..d19435b
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--66a 2.json b/site/controls/Timb_Grig2018_Controls--66a 2.json
new file mode 100644
index 0000000..dba39b4
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66a 2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66a 2.png", "cellw": 21} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--66a 2.png b/site/controls/Timb_Grig2018_Controls--66a 2.png
new file mode 100644
index 0000000..e97ef85
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66a 2.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--66a.json b/site/controls/Timb_Grig2018_Controls--66a.json
new file mode 100644
index 0000000..00aa5e9
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66a.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66a.png", "cellw": 21} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--66a.png b/site/controls/Timb_Grig2018_Controls--66a.png
new file mode 100644
index 0000000..17df44d
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66a.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--66b.json b/site/controls/Timb_Grig2018_Controls--66b.json
new file mode 100644
index 0000000..9e74fa6
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66b.png", "cellw": 11} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--66b.png b/site/controls/Timb_Grig2018_Controls--66b.png
new file mode 100644
index 0000000..d2bd569
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66b.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--66c.json b/site/controls/Timb_Grig2018_Controls--66c.json
new file mode 100644
index 0000000..dd612ff
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66c.png", "cellw": 11} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--66c.png b/site/controls/Timb_Grig2018_Controls--66c.png
new file mode 100644
index 0000000..a33e320
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66c.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--66d.json b/site/controls/Timb_Grig2018_Controls--66d.json
new file mode 100644
index 0000000..10a952f
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66d.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66d.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--66d.png b/site/controls/Timb_Grig2018_Controls--66d.png
new file mode 100644
index 0000000..b191036
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66d.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--66e.json b/site/controls/Timb_Grig2018_Controls--66e.json
new file mode 100644
index 0000000..08a0867
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66e.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66e.png", "cellw": 21} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--66e.png b/site/controls/Timb_Grig2018_Controls--66e.png
new file mode 100644
index 0000000..0bf86fd
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--66e.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--67.json b/site/controls/Timb_Grig2018_Controls--67.json
new file mode 100644
index 0000000..e21c9c5
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--67.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--67.png", "cellw": 21} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--67.png b/site/controls/Timb_Grig2018_Controls--67.png
new file mode 100644
index 0000000..75402aa
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--67.png
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--68.PNG b/site/controls/Timb_Grig2018_Controls--68.PNG
new file mode 100644
index 0000000..77f76e3
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--68.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--68.json b/site/controls/Timb_Grig2018_Controls--68.json
new file mode 100644
index 0000000..49fa47b
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--68.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--68.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--69.PNG b/site/controls/Timb_Grig2018_Controls--69.PNG
new file mode 100644
index 0000000..87341be
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--69.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--69.json b/site/controls/Timb_Grig2018_Controls--69.json
new file mode 100644
index 0000000..0146cfe
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--69.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 29, "ctltype": 2, "fn": "Timb_Grig2018_Controls--69.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--70.PNG b/site/controls/Timb_Grig2018_Controls--70.PNG
new file mode 100644
index 0000000..5f35692
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--70.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--70.json b/site/controls/Timb_Grig2018_Controls--70.json
new file mode 100644
index 0000000..0a486ca
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--70.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 30, "ctltype": 2, "fn": "Timb_Grig2018_Controls--70.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Grig2018_Controls--71.PNG b/site/controls/Timb_Grig2018_Controls--71.PNG
new file mode 100644
index 0000000..84a15a7
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--71.PNG
Binary files differ
diff --git a/site/controls/Timb_Grig2018_Controls--71.json b/site/controls/Timb_Grig2018_Controls--71.json
new file mode 100644
index 0000000..307b137
--- /dev/null
+++ b/site/controls/Timb_Grig2018_Controls--71.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--71.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HORZMETER_824-101.json b/site/controls/Timb_HORZMETER_824-101.json
new file mode 100644
index 0000000..2a6421b
--- /dev/null
+++ b/site/controls/Timb_HORZMETER_824-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 8, "ctltype": 3, "fn": "Timb_HORZMETER_824-101.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HORZMETER_824-101.png b/site/controls/Timb_HORZMETER_824-101.png
new file mode 100644
index 0000000..7e0e0bb
--- /dev/null
+++ b/site/controls/Timb_HORZMETER_824-101.png
Binary files differ
diff --git a/site/controls/Timb_HUBSWITCH.json b/site/controls/Timb_HUBSWITCH.json
new file mode 100644
index 0000000..6cdf9e6
--- /dev/null
+++ b/site/controls/Timb_HUBSWITCH.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 59, "ctltype": 4, "fn": "Timb_HUBSWITCH.png", "cellw": 44} \ No newline at end of file
diff --git a/site/controls/Timb_HUBSWITCH.png b/site/controls/Timb_HUBSWITCH.png
new file mode 100644
index 0000000..d420603
--- /dev/null
+++ b/site/controls/Timb_HUBSWITCH.png
Binary files differ
diff --git a/site/controls/Timb_HY-Exit-1.json b/site/controls/Timb_HY-Exit-1.json
new file mode 100644
index 0000000..65b08da
--- /dev/null
+++ b/site/controls/Timb_HY-Exit-1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HY-Exit-1.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_HY-Exit-1.png b/site/controls/Timb_HY-Exit-1.png
new file mode 100644
index 0000000..447e54e
--- /dev/null
+++ b/site/controls/Timb_HY-Exit-1.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTE16.json b/site/controls/Timb_HandMadeMUTE16.json
new file mode 100644
index 0000000..86a776c
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_HandMadeMUTE16.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTE16.png b/site/controls/Timb_HandMadeMUTE16.png
new file mode 100644
index 0000000..9ea3225
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE16.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTE16b.json b/site/controls/Timb_HandMadeMUTE16b.json
new file mode 100644
index 0000000..85bb76a
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE16b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_HandMadeMUTE16b.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTE16b.png b/site/controls/Timb_HandMadeMUTE16b.png
new file mode 100644
index 0000000..547ae2b
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE16b.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTE16c.json b/site/controls/Timb_HandMadeMUTE16c.json
new file mode 100644
index 0000000..64ac416
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE16c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_HandMadeMUTE16c.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTE16c.png b/site/controls/Timb_HandMadeMUTE16c.png
new file mode 100644
index 0000000..ff1b01a
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE16c.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTE16d.json b/site/controls/Timb_HandMadeMUTE16d.json
new file mode 100644
index 0000000..c6ad6f8
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE16d.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_HandMadeMUTE16d.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTE16d.png b/site/controls/Timb_HandMadeMUTE16d.png
new file mode 100644
index 0000000..ae91269
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE16d.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTE28.json b/site/controls/Timb_HandMadeMUTE28.json
new file mode 100644
index 0000000..34033fd
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE28.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeMUTE28.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTE28.png b/site/controls/Timb_HandMadeMUTE28.png
new file mode 100644
index 0000000..3b70d56
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTE28.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO28.json b/site/controls/Timb_HandMadeMUTEONSOLO28.json
new file mode 100644
index 0000000..17b4af1
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO28.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO28.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO28.png b/site/controls/Timb_HandMadeMUTEONSOLO28.png
new file mode 100644
index 0000000..c32699a
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO28.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO28b.json b/site/controls/Timb_HandMadeMUTEONSOLO28b.json
new file mode 100644
index 0000000..652c1b7
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO28b.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO28b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO28b.png b/site/controls/Timb_HandMadeMUTEONSOLO28b.png
new file mode 100644
index 0000000..d1d0379
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO28b.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO28c.json b/site/controls/Timb_HandMadeMUTEONSOLO28c.json
new file mode 100644
index 0000000..f486e29
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO28c.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO28c.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO28c.png b/site/controls/Timb_HandMadeMUTEONSOLO28c.png
new file mode 100644
index 0000000..87b157b
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO28c.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32.json b/site/controls/Timb_HandMadeMUTEONSOLO32.json
new file mode 100644
index 0000000..2df0ae9
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32.png b/site/controls/Timb_HandMadeMUTEONSOLO32.png
new file mode 100644
index 0000000..ca40a49
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32b.json b/site/controls/Timb_HandMadeMUTEONSOLO32b.json
new file mode 100644
index 0000000..d66bcbd
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32b.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32b.png b/site/controls/Timb_HandMadeMUTEONSOLO32b.png
new file mode 100644
index 0000000..f2a8ed9
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32b.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32c.json b/site/controls/Timb_HandMadeMUTEONSOLO32c.json
new file mode 100644
index 0000000..9f5349f
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32c.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32c.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32c.png b/site/controls/Timb_HandMadeMUTEONSOLO32c.png
new file mode 100644
index 0000000..9c39309
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32c.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32d-losat.json b/site/controls/Timb_HandMadeMUTEONSOLO32d-losat.json
new file mode 100644
index 0000000..7287227
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32d-losat.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32d-losat.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32d-losat.png b/site/controls/Timb_HandMadeMUTEONSOLO32d-losat.png
new file mode 100644
index 0000000..bad2275
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32d-losat.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32d.json b/site/controls/Timb_HandMadeMUTEONSOLO32d.json
new file mode 100644
index 0000000..12c741a
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32d.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32d.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeMUTEONSOLO32d.png b/site/controls/Timb_HandMadeMUTEONSOLO32d.png
new file mode 100644
index 0000000..6db25c5
--- /dev/null
+++ b/site/controls/Timb_HandMadeMUTEONSOLO32d.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeSIMPLE onoff-01.json b/site/controls/Timb_HandMadeSIMPLE onoff-01.json
new file mode 100644
index 0000000..ce5ad6c
--- /dev/null
+++ b/site/controls/Timb_HandMadeSIMPLE onoff-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeSIMPLE onoff-01.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeSIMPLE onoff-01.png b/site/controls/Timb_HandMadeSIMPLE onoff-01.png
new file mode 100644
index 0000000..e035ad0
--- /dev/null
+++ b/site/controls/Timb_HandMadeSIMPLE onoff-01.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeSIMPLE onoff-02.json b/site/controls/Timb_HandMadeSIMPLE onoff-02.json
new file mode 100644
index 0000000..22c2533
--- /dev/null
+++ b/site/controls/Timb_HandMadeSIMPLE onoff-02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeSIMPLE onoff-02.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeSIMPLE onoff-02.png b/site/controls/Timb_HandMadeSIMPLE onoff-02.png
new file mode 100644
index 0000000..6954c51
--- /dev/null
+++ b/site/controls/Timb_HandMadeSIMPLE onoff-02.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeSIMPLE onoff-03.json b/site/controls/Timb_HandMadeSIMPLE onoff-03.json
new file mode 100644
index 0000000..9ba33fb
--- /dev/null
+++ b/site/controls/Timb_HandMadeSIMPLE onoff-03.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeSIMPLE onoff-03.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeSIMPLE onoff-03.png b/site/controls/Timb_HandMadeSIMPLE onoff-03.png
new file mode 100644
index 0000000..e65df42
--- /dev/null
+++ b/site/controls/Timb_HandMadeSIMPLE onoff-03.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeSIMPLE onoff-04.json b/site/controls/Timb_HandMadeSIMPLE onoff-04.json
new file mode 100644
index 0000000..f23eb7d
--- /dev/null
+++ b/site/controls/Timb_HandMadeSIMPLE onoff-04.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeSIMPLE onoff-04.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeSIMPLE onoff-04.png b/site/controls/Timb_HandMadeSIMPLE onoff-04.png
new file mode 100644
index 0000000..650ba62
--- /dev/null
+++ b/site/controls/Timb_HandMadeSIMPLE onoff-04.png
Binary files differ
diff --git a/site/controls/Timb_HandMadeSOLO28.json b/site/controls/Timb_HandMadeSOLO28.json
new file mode 100644
index 0000000..c38429a
--- /dev/null
+++ b/site/controls/Timb_HandMadeSOLO28.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeSOLO28.png", "cellw": 28} \ No newline at end of file
diff --git a/site/controls/Timb_HandMadeSOLO28.png b/site/controls/Timb_HandMadeSOLO28.png
new file mode 100644
index 0000000..c8b181b
--- /dev/null
+++ b/site/controls/Timb_HandMadeSOLO28.png
Binary files differ
diff --git a/site/controls/Timb_Hippy 6mod_40-129.json b/site/controls/Timb_Hippy 6mod_40-129.json
new file mode 100644
index 0000000..86e391b
--- /dev/null
+++ b/site/controls/Timb_Hippy 6mod_40-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 40, "ctltype": 0, "fn": "Timb_Hippy 6mod_40-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Hippy 6mod_40-129.png b/site/controls/Timb_Hippy 6mod_40-129.png
new file mode 100644
index 0000000..c6fdfc3
--- /dev/null
+++ b/site/controls/Timb_Hippy 6mod_40-129.png
Binary files differ
diff --git a/site/controls/Timb_Hippy 6mod_64-129.json b/site/controls/Timb_Hippy 6mod_64-129.json
new file mode 100644
index 0000000..a9e6303
--- /dev/null
+++ b/site/controls/Timb_Hippy 6mod_64-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Hippy 6mod_64-129.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_Hippy 6mod_64-129.png b/site/controls/Timb_Hippy 6mod_64-129.png
new file mode 100644
index 0000000..ec52c85
--- /dev/null
+++ b/site/controls/Timb_Hippy 6mod_64-129.png
Binary files differ
diff --git a/site/controls/Timb_HumbleWhomble_128-129.json b/site/controls/Timb_HumbleWhomble_128-129.json
new file mode 100644
index 0000000..c8751db
--- /dev/null
+++ b/site/controls/Timb_HumbleWhomble_128-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 128, "ctltype": 0, "fn": "Timb_HumbleWhomble_128-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HumbleWhomble_128-129.png b/site/controls/Timb_HumbleWhomble_128-129.png
new file mode 100644
index 0000000..a953b7c
--- /dev/null
+++ b/site/controls/Timb_HumbleWhomble_128-129.png
Binary files differ
diff --git a/site/controls/Timb_HumbleWhomble_32-129.json b/site/controls/Timb_HumbleWhomble_32-129.json
new file mode 100644
index 0000000..358822b
--- /dev/null
+++ b/site/controls/Timb_HumbleWhomble_32-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 32, "ctltype": 0, "fn": "Timb_HumbleWhomble_32-129.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_HumbleWhomble_32-129.png b/site/controls/Timb_HumbleWhomble_32-129.png
new file mode 100644
index 0000000..f966f41
--- /dev/null
+++ b/site/controls/Timb_HumbleWhomble_32-129.png
Binary files differ
diff --git a/site/controls/Timb_HumbleWhomble_64-129.json b/site/controls/Timb_HumbleWhomble_64-129.json
new file mode 100644
index 0000000..4af151e
--- /dev/null
+++ b/site/controls/Timb_HumbleWhomble_64-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_HumbleWhomble_64-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HumbleWhomble_64-129.png b/site/controls/Timb_HumbleWhomble_64-129.png
new file mode 100644
index 0000000..621be97
--- /dev/null
+++ b/site/controls/Timb_HumbleWhomble_64-129.png
Binary files differ
diff --git a/site/controls/Timb_HumbleWhomble_96-129.json b/site/controls/Timb_HumbleWhomble_96-129.json
new file mode 100644
index 0000000..0dadf0c
--- /dev/null
+++ b/site/controls/Timb_HumbleWhomble_96-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_HumbleWhomble_96-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_HumbleWhomble_96-129.png b/site/controls/Timb_HumbleWhomble_96-129.png
new file mode 100644
index 0000000..6beb0c6
--- /dev/null
+++ b/site/controls/Timb_HumbleWhomble_96-129.png
Binary files differ
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_16-3.json b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3.json
new file mode 100644
index 0000000..244f076
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_16-3.png"} \ No newline at end of file
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_16-3.png b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3.png
new file mode 100644
index 0000000..31c8d87
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3.png
Binary files differ
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_16-3_3X.json b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3_3X.json
new file mode 100644
index 0000000..2332e85
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3_3X.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_16-3_3X.png"} \ No newline at end of file
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_16-3_3X.png b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3_3X.png
new file mode 100644
index 0000000..e346f2d
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3_3X.png
Binary files differ
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_16-3b.json b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3b.json
new file mode 100644
index 0000000..338742a
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3b.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_16-3b.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_16-3b.png b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3b.png
new file mode 100644
index 0000000..aa32749
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3b.png
Binary files differ
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_16-3c.json b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3c.json
new file mode 100644
index 0000000..e92de21
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3c.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_16-3c.png"} \ No newline at end of file
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_16-3c.png b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3c.png
new file mode 100644
index 0000000..5ce0235
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_16-3c.png
Binary files differ
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_Bespokes15x.json b/site/controls/Timb_JSMIXER_MuteOnSolo_Bespokes15x.json
new file mode 100644
index 0000000..00f88e2
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_Bespokes15x.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_Bespokes15x.png"} \ No newline at end of file
diff --git a/site/controls/Timb_JSMIXER_MuteOnSolo_Bespokes15x.png b/site/controls/Timb_JSMIXER_MuteOnSolo_Bespokes15x.png
new file mode 100644
index 0000000..d99d62f
--- /dev/null
+++ b/site/controls/Timb_JSMIXER_MuteOnSolo_Bespokes15x.png
Binary files differ
diff --git a/site/controls/Timb_JanneUnivLite_SLIDER_19150-129.json b/site/controls/Timb_JanneUnivLite_SLIDER_19150-129.json
new file mode 100644
index 0000000..39e831c
--- /dev/null
+++ b/site/controls/Timb_JanneUnivLite_SLIDER_19150-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 150, "ctltype": 1, "fn": "Timb_JanneUnivLite_SLIDER_19150-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_JanneUnivLite_SLIDER_19150-129.png b/site/controls/Timb_JanneUnivLite_SLIDER_19150-129.png
new file mode 100644
index 0000000..4874c8d
--- /dev/null
+++ b/site/controls/Timb_JanneUnivLite_SLIDER_19150-129.png
Binary files differ
diff --git a/site/controls/Timb_KM_Rubber_64128-00.json b/site/controls/Timb_KM_Rubber_64128-00.json
new file mode 100644
index 0000000..c753f66
--- /dev/null
+++ b/site/controls/Timb_KM_Rubber_64128-00.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_KM_Rubber_64128-00.png"} \ No newline at end of file
diff --git a/site/controls/Timb_KM_Rubber_64128-00.png b/site/controls/Timb_KM_Rubber_64128-00.png
new file mode 100644
index 0000000..ce3d598
--- /dev/null
+++ b/site/controls/Timb_KM_Rubber_64128-00.png
Binary files differ
diff --git a/site/controls/Timb_KNOB&METER-01_(48-128)_A-Knob.json b/site/controls/Timb_KNOB&METER-01_(48-128)_A-Knob.json
new file mode 100644
index 0000000..0bf29b6
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-01_(48-128)_A-Knob.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_KNOB&METER-01_(48-128)_A-Knob.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb_KNOB&METER-01_(48-128)_A-Knob.png b/site/controls/Timb_KNOB&METER-01_(48-128)_A-Knob.png
new file mode 100644
index 0000000..604ebd1
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-01_(48-128)_A-Knob.png
Binary files differ
diff --git a/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-L.json b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-L.json
new file mode 100644
index 0000000..1291d83
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-L.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_KNOB&METER-01_(48-128)_B-Meter-L.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-L.png b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-L.png
new file mode 100644
index 0000000..f92318c
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-L.png
Binary files differ
diff --git a/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-R.json b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-R.json
new file mode 100644
index 0000000..33a64b6
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-R.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_KNOB&METER-01_(48-128)_B-Meter-R.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-R.png b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-R.png
new file mode 100644
index 0000000..048c17f
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter-R.png
Binary files differ
diff --git a/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter.json b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter.json
new file mode 100644
index 0000000..d788d7d
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_KNOB&METER-01_(48-128)_B-Meter.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter.png b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter.png
new file mode 100644
index 0000000..0704db2
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-01_(48-128)_B-Meter.png
Binary files differ
diff --git a/site/controls/Timb_KNOB&METER-02_(48-128)_A-Knob.json b/site/controls/Timb_KNOB&METER-02_(48-128)_A-Knob.json
new file mode 100644
index 0000000..27b4ade
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-02_(48-128)_A-Knob.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_KNOB&METER-02_(48-128)_A-Knob.png"} \ No newline at end of file
diff --git a/site/controls/Timb_KNOB&METER-02_(48-128)_A-Knob.png b/site/controls/Timb_KNOB&METER-02_(48-128)_A-Knob.png
new file mode 100644
index 0000000..aa8bf1c
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-02_(48-128)_A-Knob.png
Binary files differ
diff --git a/site/controls/Timb_KNOB&METER-02_(48-128)_B-Meter.json b/site/controls/Timb_KNOB&METER-02_(48-128)_B-Meter.json
new file mode 100644
index 0000000..5979948
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-02_(48-128)_B-Meter.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_KNOB&METER-02_(48-128)_B-Meter.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb_KNOB&METER-02_(48-128)_B-Meter.png b/site/controls/Timb_KNOB&METER-02_(48-128)_B-Meter.png
new file mode 100644
index 0000000..afdb5a7
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-02_(48-128)_B-Meter.png
Binary files differ
diff --git a/site/controls/Timb_KNOB&METER-03_(96-129)knob.json b/site/controls/Timb_KNOB&METER-03_(96-129)knob.json
new file mode 100644
index 0000000..1c163b7
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-03_(96-129)knob.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_KNOB&METER-03_(96-129)knob.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_KNOB&METER-03_(96-129)knob.png b/site/controls/Timb_KNOB&METER-03_(96-129)knob.png
new file mode 100644
index 0000000..e89d4be
--- /dev/null
+++ b/site/controls/Timb_KNOB&METER-03_(96-129)knob.png
Binary files differ
diff --git a/site/controls/Timb_Kontakt2018_Controls--01.json b/site/controls/Timb_Kontakt2018_Controls--01.json
new file mode 100644
index 0000000..1dbb9c1
--- /dev/null
+++ b/site/controls/Timb_Kontakt2018_Controls--01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 4, "fn": "Timb_Kontakt2018_Controls--01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Kontakt2018_Controls--01.png b/site/controls/Timb_Kontakt2018_Controls--01.png
new file mode 100644
index 0000000..7440a7f
--- /dev/null
+++ b/site/controls/Timb_Kontakt2018_Controls--01.png
Binary files differ
diff --git a/site/controls/Timb_Kontakt2018_Controls--02.PNG b/site/controls/Timb_Kontakt2018_Controls--02.PNG
new file mode 100644
index 0000000..cd56f6b
--- /dev/null
+++ b/site/controls/Timb_Kontakt2018_Controls--02.PNG
Binary files differ
diff --git a/site/controls/Timb_Kontakt2018_Controls--02.json b/site/controls/Timb_Kontakt2018_Controls--02.json
new file mode 100644
index 0000000..42732d1
--- /dev/null
+++ b/site/controls/Timb_Kontakt2018_Controls--02.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Kontakt2018_Controls--02.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Kontakt2018_Controls--03.json b/site/controls/Timb_Kontakt2018_Controls--03.json
new file mode 100644
index 0000000..5176e60
--- /dev/null
+++ b/site/controls/Timb_Kontakt2018_Controls--03.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Kontakt2018_Controls--03.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Kontakt2018_Controls--03.png b/site/controls/Timb_Kontakt2018_Controls--03.png
new file mode 100644
index 0000000..788411c
--- /dev/null
+++ b/site/controls/Timb_Kontakt2018_Controls--03.png
Binary files differ
diff --git a/site/controls/Timb_LMBassMasterSlider1HRZ bloo.json b/site/controls/Timb_LMBassMasterSlider1HRZ bloo.json
new file mode 100644
index 0000000..968e29c
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider1HRZ bloo.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 20, "ctltype": 1, "fn": "Timb_LMBassMasterSlider1HRZ bloo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_LMBassMasterSlider1HRZ bloo.png b/site/controls/Timb_LMBassMasterSlider1HRZ bloo.png
new file mode 100644
index 0000000..958f170
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider1HRZ bloo.png
Binary files differ
diff --git a/site/controls/Timb_LMBassMasterSlider1HRZ orange.json b/site/controls/Timb_LMBassMasterSlider1HRZ orange.json
new file mode 100644
index 0000000..afc837e
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider1HRZ orange.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 20, "ctltype": 1, "fn": "Timb_LMBassMasterSlider1HRZ orange.png"} \ No newline at end of file
diff --git a/site/controls/Timb_LMBassMasterSlider1HRZ orange.png b/site/controls/Timb_LMBassMasterSlider1HRZ orange.png
new file mode 100644
index 0000000..6369b94
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider1HRZ orange.png
Binary files differ
diff --git a/site/controls/Timb_LMBassMasterSlider1bloo.json b/site/controls/Timb_LMBassMasterSlider1bloo.json
new file mode 100644
index 0000000..4a3151a
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider1bloo.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 194, "ctltype": 1, "fn": "Timb_LMBassMasterSlider1bloo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_LMBassMasterSlider1bloo.png b/site/controls/Timb_LMBassMasterSlider1bloo.png
new file mode 100644
index 0000000..a4d8da5
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider1bloo.png
Binary files differ
diff --git a/site/controls/Timb_LMBassMasterSlider1orange.json b/site/controls/Timb_LMBassMasterSlider1orange.json
new file mode 100644
index 0000000..dacd286
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider1orange.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 194, "ctltype": 1, "fn": "Timb_LMBassMasterSlider1orange.png"} \ No newline at end of file
diff --git a/site/controls/Timb_LMBassMasterSlider1orange.png b/site/controls/Timb_LMBassMasterSlider1orange.png
new file mode 100644
index 0000000..2302092
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider1orange.png
Binary files differ
diff --git a/site/controls/Timb_LMBassMasterSlider2HRZ bloo.json b/site/controls/Timb_LMBassMasterSlider2HRZ bloo.json
new file mode 100644
index 0000000..bbd7305
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider2HRZ bloo.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 18, "ctltype": 1, "fn": "Timb_LMBassMasterSlider2HRZ bloo.png", "cellw": 76} \ No newline at end of file
diff --git a/site/controls/Timb_LMBassMasterSlider2HRZ bloo.png b/site/controls/Timb_LMBassMasterSlider2HRZ bloo.png
new file mode 100644
index 0000000..d5eb330
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider2HRZ bloo.png
Binary files differ
diff --git a/site/controls/Timb_LMBassMasterSlider2HRZ orange.json b/site/controls/Timb_LMBassMasterSlider2HRZ orange.json
new file mode 100644
index 0000000..2261fef
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider2HRZ orange.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 18, "ctltype": 1, "fn": "Timb_LMBassMasterSlider2HRZ orange.png"} \ No newline at end of file
diff --git a/site/controls/Timb_LMBassMasterSlider2HRZ orange.png b/site/controls/Timb_LMBassMasterSlider2HRZ orange.png
new file mode 100644
index 0000000..927b01a
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider2HRZ orange.png
Binary files differ
diff --git a/site/controls/Timb_LMBassMasterSlider2bloo.json b/site/controls/Timb_LMBassMasterSlider2bloo.json
new file mode 100644
index 0000000..ae94857
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider2bloo.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 76, "ctltype": 1, "fn": "Timb_LMBassMasterSlider2bloo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_LMBassMasterSlider2bloo.png b/site/controls/Timb_LMBassMasterSlider2bloo.png
new file mode 100644
index 0000000..aeba8e2
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider2bloo.png
Binary files differ
diff --git a/site/controls/Timb_LMBassMasterSlider2orange.json b/site/controls/Timb_LMBassMasterSlider2orange.json
new file mode 100644
index 0000000..2379d56
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider2orange.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 76, "ctltype": 1, "fn": "Timb_LMBassMasterSlider2orange.png", "cellw": 18} \ No newline at end of file
diff --git a/site/controls/Timb_LMBassMasterSlider2orange.png b/site/controls/Timb_LMBassMasterSlider2orange.png
new file mode 100644
index 0000000..7a7b89c
--- /dev/null
+++ b/site/controls/Timb_LMBassMasterSlider2orange.png
Binary files differ
diff --git a/site/controls/Timb_LiquidMental-1.json b/site/controls/Timb_LiquidMental-1.json
new file mode 100644
index 0000000..294552c
--- /dev/null
+++ b/site/controls/Timb_LiquidMental-1.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_LiquidMental-1.png"} \ No newline at end of file
diff --git a/site/controls/Timb_LiquidMental-1.png b/site/controls/Timb_LiquidMental-1.png
new file mode 100644
index 0000000..0286b84
--- /dev/null
+++ b/site/controls/Timb_LiquidMental-1.png
Binary files differ
diff --git a/site/controls/Timb_LiquidMental-2.json b/site/controls/Timb_LiquidMental-2.json
new file mode 100644
index 0000000..656b22b
--- /dev/null
+++ b/site/controls/Timb_LiquidMental-2.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_LiquidMental-2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_LiquidMental-2.png b/site/controls/Timb_LiquidMental-2.png
new file mode 100644
index 0000000..ffd9a7a
--- /dev/null
+++ b/site/controls/Timb_LiquidMental-2.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE-L.json b/site/controls/Timb_METER-Circle-FOR_FLSTYLE-L.json
new file mode 100644
index 0000000..ff6c19d
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE-L.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE-L.png"} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE-L.png b/site/controls/Timb_METER-Circle-FOR_FLSTYLE-L.png
new file mode 100644
index 0000000..bb5aba5
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE-L.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE-R.json b/site/controls/Timb_METER-Circle-FOR_FLSTYLE-R.json
new file mode 100644
index 0000000..8b9ebc1
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE-R.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE-R.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE-R.png b/site/controls/Timb_METER-Circle-FOR_FLSTYLE-R.png
new file mode 100644
index 0000000..2f2785b
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE-R.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE.json b/site/controls/Timb_METER-Circle-FOR_FLSTYLE.json
new file mode 100644
index 0000000..3b456ca
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE.png"} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE.png b/site/controls/Timb_METER-Circle-FOR_FLSTYLE.png
new file mode 100644
index 0000000..a2d90d5
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-L.json b/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-L.json
new file mode 100644
index 0000000..14fc4b8
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-L.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE2-L.png"} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-L.png b/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-L.png
new file mode 100644
index 0000000..48002e0
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-L.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-R.json b/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-R.json
new file mode 100644
index 0000000..f76ccd8
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-R.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE2-R.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-R.png b/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-R.png
new file mode 100644
index 0000000..5f12b31
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-FOR_FLSTYLE2-R.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle-xx.json b/site/controls/Timb_METER-Circle-xx.json
new file mode 100644
index 0000000..899bf61
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-xx.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-xx.png"} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle-xx.png b/site/controls/Timb_METER-Circle-xx.png
new file mode 100644
index 0000000..e60364a
--- /dev/null
+++ b/site/controls/Timb_METER-Circle-xx.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle.json b/site/controls/Timb_METER-Circle.json
new file mode 100644
index 0000000..94333ab
--- /dev/null
+++ b/site/controls/Timb_METER-Circle.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle.png", "cellw": 52} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle.png b/site/controls/Timb_METER-Circle.png
new file mode 100644
index 0000000..8eae24a
--- /dev/null
+++ b/site/controls/Timb_METER-Circle.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle64128.json b/site/controls/Timb_METER-Circle64128.json
new file mode 100644
index 0000000..5f9efa0
--- /dev/null
+++ b/site/controls/Timb_METER-Circle64128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 3, "fn": "Timb_METER-Circle64128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle64128.png b/site/controls/Timb_METER-Circle64128.png
new file mode 100644
index 0000000..6cdc052
--- /dev/null
+++ b/site/controls/Timb_METER-Circle64128.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle_LBX.json b/site/controls/Timb_METER-Circle_LBX.json
new file mode 100644
index 0000000..9d9c206
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX.png"} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle_LBX.png b/site/controls/Timb_METER-Circle_LBX.png
new file mode 100644
index 0000000..4921c82
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle_LBX2_L.json b/site/controls/Timb_METER-Circle_LBX2_L.json
new file mode 100644
index 0000000..7001c66
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX2_L.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX2_L.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle_LBX2_L.png b/site/controls/Timb_METER-Circle_LBX2_L.png
new file mode 100644
index 0000000..71fb6f4
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX2_L.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle_LBX2_R.json b/site/controls/Timb_METER-Circle_LBX2_R.json
new file mode 100644
index 0000000..b5161de
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX2_R.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX2_R.png"} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle_LBX2_R.png b/site/controls/Timb_METER-Circle_LBX2_R.png
new file mode 100644
index 0000000..68ef9a6
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX2_R.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle_LBX_L.json b/site/controls/Timb_METER-Circle_LBX_L.json
new file mode 100644
index 0000000..0f2aa82
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX_L.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX_L.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle_LBX_L.png b/site/controls/Timb_METER-Circle_LBX_L.png
new file mode 100644
index 0000000..5ed71e4
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX_L.png
Binary files differ
diff --git a/site/controls/Timb_METER-Circle_LBX_R.json b/site/controls/Timb_METER-Circle_LBX_R.json
new file mode 100644
index 0000000..3952dee
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX_R.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX_R.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_METER-Circle_LBX_R.png b/site/controls/Timb_METER-Circle_LBX_R.png
new file mode 100644
index 0000000..b309690
--- /dev/null
+++ b/site/controls/Timb_METER-Circle_LBX_R.png
Binary files differ
diff --git a/site/controls/Timb_METER-MIRROR-01_16x128-128.json b/site/controls/Timb_METER-MIRROR-01_16x128-128.json
new file mode 100644
index 0000000..e1d266c
--- /dev/null
+++ b/site/controls/Timb_METER-MIRROR-01_16x128-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 128, "ctltype": 3, "fn": "Timb_METER-MIRROR-01_16x128-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_METER-MIRROR-01_16x128-128.png b/site/controls/Timb_METER-MIRROR-01_16x128-128.png
new file mode 100644
index 0000000..d5a0ca9
--- /dev/null
+++ b/site/controls/Timb_METER-MIRROR-01_16x128-128.png
Binary files differ
diff --git a/site/controls/Timb_MIDICHS_161616.json b/site/controls/Timb_MIDICHS_161616.json
new file mode 100644
index 0000000..82f3b1a
--- /dev/null
+++ b/site/controls/Timb_MIDICHS_161616.json
@@ -0,0 +1 @@
+{"frames": 16, "cellh": 16, "ctltype": 4, "fn": "Timb_MIDICHS_161616.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_MIDICHS_161616.png b/site/controls/Timb_MIDICHS_161616.png
new file mode 100644
index 0000000..f29142d
--- /dev/null
+++ b/site/controls/Timb_MIDICHS_161616.png
Binary files differ
diff --git a/site/controls/Timb_MIDIMONITOR17LIMa_16x128.json b/site/controls/Timb_MIDIMONITOR17LIMa_16x128.json
new file mode 100644
index 0000000..ddf7433
--- /dev/null
+++ b/site/controls/Timb_MIDIMONITOR17LIMa_16x128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_MIDIMONITOR17LIMa_16x128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MIDIMONITOR17LIMa_16x128.png b/site/controls/Timb_MIDIMONITOR17LIMa_16x128.png
new file mode 100644
index 0000000..fb4ce3e
--- /dev/null
+++ b/site/controls/Timb_MIDIMONITOR17LIMa_16x128.png
Binary files differ
diff --git a/site/controls/Timb_MIDIMONITOR17LIMb_16x128.json b/site/controls/Timb_MIDIMONITOR17LIMb_16x128.json
new file mode 100644
index 0000000..9292c59
--- /dev/null
+++ b/site/controls/Timb_MIDIMONITOR17LIMb_16x128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_MIDIMONITOR17LIMb_16x128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MIDIMONITOR17LIMb_16x128.png b/site/controls/Timb_MIDIMONITOR17LIMb_16x128.png
new file mode 100644
index 0000000..accdbf9
--- /dev/null
+++ b/site/controls/Timb_MIDIMONITOR17LIMb_16x128.png
Binary files differ
diff --git a/site/controls/Timb_MIDIMONITOR17_8x128.json b/site/controls/Timb_MIDIMONITOR17_8x128.json
new file mode 100644
index 0000000..59a41be
--- /dev/null
+++ b/site/controls/Timb_MIDIMONITOR17_8x128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 1, "fn": "Timb_MIDIMONITOR17_8x128.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb_MIDIMONITOR17_8x128.png b/site/controls/Timb_MIDIMONITOR17_8x128.png
new file mode 100644
index 0000000..482ffb9
--- /dev/null
+++ b/site/controls/Timb_MIDIMONITOR17_8x128.png
Binary files differ
diff --git a/site/controls/Timb_MIDISPEED_16x3.json b/site/controls/Timb_MIDISPEED_16x3.json
new file mode 100644
index 0000000..0fc12d6
--- /dev/null
+++ b/site/controls/Timb_MIDISPEED_16x3.json
@@ -0,0 +1 @@
+{"frames": 3, "cellh": 16, "ctltype": 4, "fn": "Timb_MIDISPEED_16x3.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MIDISPEED_16x3.png b/site/controls/Timb_MIDISPEED_16x3.png
new file mode 100644
index 0000000..d035f08
--- /dev/null
+++ b/site/controls/Timb_MIDISPEED_16x3.png
Binary files differ
diff --git a/site/controls/Timb_MIDITRANSP(MSP)_202025.json b/site/controls/Timb_MIDITRANSP(MSP)_202025.json
new file mode 100644
index 0000000..f96c14a
--- /dev/null
+++ b/site/controls/Timb_MIDITRANSP(MSP)_202025.json
@@ -0,0 +1 @@
+{"frames": 25, "cellh": 20, "ctltype": 4, "fn": "Timb_MIDITRANSP(MSP)_202025.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MIDITRANSP(MSP)_202025.png b/site/controls/Timb_MIDITRANSP(MSP)_202025.png
new file mode 100644
index 0000000..cda6fe4
--- /dev/null
+++ b/site/controls/Timb_MIDITRANSP(MSP)_202025.png
Binary files differ
diff --git a/site/controls/Timb_MONITOR2_(111x176-128).json b/site/controls/Timb_MONITOR2_(111x176-128).json
new file mode 100644
index 0000000..66ac5aa
--- /dev/null
+++ b/site/controls/Timb_MONITOR2_(111x176-128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 176, "ctltype": 3, "fn": "Timb_MONITOR2_(111x176-128).png", "cellw": 111} \ No newline at end of file
diff --git a/site/controls/Timb_MONITOR2_(111x176-128).png b/site/controls/Timb_MONITOR2_(111x176-128).png
new file mode 100644
index 0000000..957ff33
--- /dev/null
+++ b/site/controls/Timb_MONITOR2_(111x176-128).png
Binary files differ
diff --git a/site/controls/Timb_MONITOR2_(111x176-128)b.json b/site/controls/Timb_MONITOR2_(111x176-128)b.json
new file mode 100644
index 0000000..46c9954
--- /dev/null
+++ b/site/controls/Timb_MONITOR2_(111x176-128)b.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 176, "ctltype": 3, "fn": "Timb_MONITOR2_(111x176-128)b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MONITOR2_(111x176-128)b.png b/site/controls/Timb_MONITOR2_(111x176-128)b.png
new file mode 100644
index 0000000..e0d787c
--- /dev/null
+++ b/site/controls/Timb_MONITOR2_(111x176-128)b.png
Binary files differ
diff --git a/site/controls/Timb_MONITOR2_(111x176-128)bFlip.json b/site/controls/Timb_MONITOR2_(111x176-128)bFlip.json
new file mode 100644
index 0000000..8f8ad04
--- /dev/null
+++ b/site/controls/Timb_MONITOR2_(111x176-128)bFlip.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 176, "ctltype": 3, "fn": "Timb_MONITOR2_(111x176-128)bFlip.png", "cellw": 111} \ No newline at end of file
diff --git a/site/controls/Timb_MONITOR2_(111x176-128)bFlip.png b/site/controls/Timb_MONITOR2_(111x176-128)bFlip.png
new file mode 100644
index 0000000..1512fdb
--- /dev/null
+++ b/site/controls/Timb_MONITOR2_(111x176-128)bFlip.png
Binary files differ
diff --git a/site/controls/Timb_MONITOR2_(111x176-128)moreLighty.json b/site/controls/Timb_MONITOR2_(111x176-128)moreLighty.json
new file mode 100644
index 0000000..f70987d
--- /dev/null
+++ b/site/controls/Timb_MONITOR2_(111x176-128)moreLighty.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 176, "ctltype": 3, "fn": "Timb_MONITOR2_(111x176-128)moreLighty.png", "cellw": 111} \ No newline at end of file
diff --git a/site/controls/Timb_MONITOR2_(111x176-128)moreLighty.png b/site/controls/Timb_MONITOR2_(111x176-128)moreLighty.png
new file mode 100644
index 0000000..dda3c90
--- /dev/null
+++ b/site/controls/Timb_MONITOR2_(111x176-128)moreLighty.png
Binary files differ
diff --git a/site/controls/Timb_MPS_VELO_12x16x130-b.json b/site/controls/Timb_MPS_VELO_12x16x130-b.json
new file mode 100644
index 0000000..f8de3ba
--- /dev/null
+++ b/site/controls/Timb_MPS_VELO_12x16x130-b.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 3, "fn": "Timb_MPS_VELO_12x16x130-b.png", "cellw": 12} \ No newline at end of file
diff --git a/site/controls/Timb_MPS_VELO_12x16x130-b.png b/site/controls/Timb_MPS_VELO_12x16x130-b.png
new file mode 100644
index 0000000..82810ca
--- /dev/null
+++ b/site/controls/Timb_MPS_VELO_12x16x130-b.png
Binary files differ
diff --git a/site/controls/Timb_MPS_VELO_12x16x130.json b/site/controls/Timb_MPS_VELO_12x16x130.json
new file mode 100644
index 0000000..833b501
--- /dev/null
+++ b/site/controls/Timb_MPS_VELO_12x16x130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 3, "fn": "Timb_MPS_VELO_12x16x130.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MPS_VELO_12x16x130.png b/site/controls/Timb_MPS_VELO_12x16x130.png
new file mode 100644
index 0000000..dbcf378
--- /dev/null
+++ b/site/controls/Timb_MPS_VELO_12x16x130.png
Binary files differ
diff --git a/site/controls/Timb_MPS_VELO_8x16x130.json b/site/controls/Timb_MPS_VELO_8x16x130.json
new file mode 100644
index 0000000..2412bda
--- /dev/null
+++ b/site/controls/Timb_MPS_VELO_8x16x130.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 16, "ctltype": 3, "fn": "Timb_MPS_VELO_8x16x130.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_MPS_VELO_8x16x130.png b/site/controls/Timb_MPS_VELO_8x16x130.png
new file mode 100644
index 0000000..a79296a
--- /dev/null
+++ b/site/controls/Timb_MPS_VELO_8x16x130.png
Binary files differ
diff --git a/site/controls/Timb_MadMon8-C.json b/site/controls/Timb_MadMon8-C.json
new file mode 100644
index 0000000..2ed432a
--- /dev/null
+++ b/site/controls/Timb_MadMon8-C.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "Timb_MadMon8-C.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MadMon8-C.png b/site/controls/Timb_MadMon8-C.png
new file mode 100644
index 0000000..0c44e2f
--- /dev/null
+++ b/site/controls/Timb_MadMon8-C.png
Binary files differ
diff --git a/site/controls/Timb_MadMon8-D.json b/site/controls/Timb_MadMon8-D.json
new file mode 100644
index 0000000..dcc02e1
--- /dev/null
+++ b/site/controls/Timb_MadMon8-D.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "Timb_MadMon8-D.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MadMon8-D.png b/site/controls/Timb_MadMon8-D.png
new file mode 100644
index 0000000..c1fe90a
--- /dev/null
+++ b/site/controls/Timb_MadMon8-D.png
Binary files differ
diff --git a/site/controls/Timb_MadMon8-G1_Top.json b/site/controls/Timb_MadMon8-G1_Top.json
new file mode 100644
index 0000000..04e42fc
--- /dev/null
+++ b/site/controls/Timb_MadMon8-G1_Top.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 4, "ctltype": 2, "fn": "Timb_MadMon8-G1_Top.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_MadMon8-G1_Top.png b/site/controls/Timb_MadMon8-G1_Top.png
new file mode 100644
index 0000000..4b5078f
--- /dev/null
+++ b/site/controls/Timb_MadMon8-G1_Top.png
Binary files differ
diff --git a/site/controls/Timb_MadMon8-G2_Bottom.json b/site/controls/Timb_MadMon8-G2_Bottom.json
new file mode 100644
index 0000000..f51e212
--- /dev/null
+++ b/site/controls/Timb_MadMon8-G2_Bottom.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_MadMon8-G2_Bottom.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MadMon8-G2_Bottom.png b/site/controls/Timb_MadMon8-G2_Bottom.png
new file mode 100644
index 0000000..6385b89
--- /dev/null
+++ b/site/controls/Timb_MadMon8-G2_Bottom.png
Binary files differ
diff --git a/site/controls/Timb_MadMon8-H1_Top.json b/site/controls/Timb_MadMon8-H1_Top.json
new file mode 100644
index 0000000..caf72bb
--- /dev/null
+++ b/site/controls/Timb_MadMon8-H1_Top.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 4, "ctltype": 2, "fn": "Timb_MadMon8-H1_Top.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_MadMon8-H1_Top.png b/site/controls/Timb_MadMon8-H1_Top.png
new file mode 100644
index 0000000..268f411
--- /dev/null
+++ b/site/controls/Timb_MadMon8-H1_Top.png
Binary files differ
diff --git a/site/controls/Timb_MadMon8-H2_Bottom.json b/site/controls/Timb_MadMon8-H2_Bottom.json
new file mode 100644
index 0000000..0467da9
--- /dev/null
+++ b/site/controls/Timb_MadMon8-H2_Bottom.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_MadMon8-H2_Bottom.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_MadMon8-H2_Bottom.png b/site/controls/Timb_MadMon8-H2_Bottom.png
new file mode 100644
index 0000000..d0e4dbc
--- /dev/null
+++ b/site/controls/Timb_MadMon8-H2_Bottom.png
Binary files differ
diff --git a/site/controls/Timb_MadMon8-H2_Bottomb.json b/site/controls/Timb_MadMon8-H2_Bottomb.json
new file mode 100644
index 0000000..66b6ed6
--- /dev/null
+++ b/site/controls/Timb_MadMon8-H2_Bottomb.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_MadMon8-H2_Bottomb.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_MadMon8-H2_Bottomb.png b/site/controls/Timb_MadMon8-H2_Bottomb.png
new file mode 100644
index 0000000..fc75be1
--- /dev/null
+++ b/site/controls/Timb_MadMon8-H2_Bottomb.png
Binary files differ
diff --git a/site/controls/Timb_MadMon8-K1OnOff.json b/site/controls/Timb_MadMon8-K1OnOff.json
new file mode 100644
index 0000000..b1ea1d7
--- /dev/null
+++ b/site/controls/Timb_MadMon8-K1OnOff.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 8, "ctltype": 2, "fn": "Timb_MadMon8-K1OnOff.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MadMon8-K1OnOff.png b/site/controls/Timb_MadMon8-K1OnOff.png
new file mode 100644
index 0000000..9617ed1
--- /dev/null
+++ b/site/controls/Timb_MadMon8-K1OnOff.png
Binary files differ
diff --git a/site/controls/Timb_MadMon8-K2METERBottom.json b/site/controls/Timb_MadMon8-K2METERBottom.json
new file mode 100644
index 0000000..bb44b34
--- /dev/null
+++ b/site/controls/Timb_MadMon8-K2METERBottom.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 4, "ctltype": 2, "fn": "Timb_MadMon8-K2METERBottom.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_MadMon8-K2METERBottom.png b/site/controls/Timb_MadMon8-K2METERBottom.png
new file mode 100644
index 0000000..fcaebc1
--- /dev/null
+++ b/site/controls/Timb_MadMon8-K2METERBottom.png
Binary files differ
diff --git a/site/controls/Timb_MegaBaby-01A_1620-128.json b/site/controls/Timb_MegaBaby-01A_1620-128.json
new file mode 100644
index 0000000..fcfd8de
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01A_1620-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 20, "ctltype": 3, "fn": "Timb_MegaBaby-01A_1620-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MegaBaby-01A_1620-128.png b/site/controls/Timb_MegaBaby-01A_1620-128.png
new file mode 100644
index 0000000..082bb25
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01A_1620-128.png
Binary files differ
diff --git a/site/controls/Timb_MegaBaby-01A_1628-128.json b/site/controls/Timb_MegaBaby-01A_1628-128.json
new file mode 100644
index 0000000..589ea88
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01A_1628-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 28, "ctltype": 3, "fn": "Timb_MegaBaby-01A_1628-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MegaBaby-01A_1628-128.png b/site/controls/Timb_MegaBaby-01A_1628-128.png
new file mode 100644
index 0000000..20d3ae9
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01A_1628-128.png
Binary files differ
diff --git a/site/controls/Timb_MegaBaby-01B_1620-128.json b/site/controls/Timb_MegaBaby-01B_1620-128.json
new file mode 100644
index 0000000..343708c
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01B_1620-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 20, "ctltype": 3, "fn": "Timb_MegaBaby-01B_1620-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MegaBaby-01B_1620-128.png b/site/controls/Timb_MegaBaby-01B_1620-128.png
new file mode 100644
index 0000000..0c36de7
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01B_1620-128.png
Binary files differ
diff --git a/site/controls/Timb_MegaBaby-01B_1628-128.json b/site/controls/Timb_MegaBaby-01B_1628-128.json
new file mode 100644
index 0000000..972e30b
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01B_1628-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 28, "ctltype": 3, "fn": "Timb_MegaBaby-01B_1628-128.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_MegaBaby-01B_1628-128.png b/site/controls/Timb_MegaBaby-01B_1628-128.png
new file mode 100644
index 0000000..c1d0a06
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01B_1628-128.png
Binary files differ
diff --git a/site/controls/Timb_MegaBaby-01CHANNELS_28x28-16.json b/site/controls/Timb_MegaBaby-01CHANNELS_28x28-16.json
new file mode 100644
index 0000000..c23513e
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01CHANNELS_28x28-16.json
@@ -0,0 +1 @@
+{"frames": 16, "cellh": 28, "ctltype": 4, "fn": "Timb_MegaBaby-01CHANNELS_28x28-16.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MegaBaby-01CHANNELS_28x28-16.png b/site/controls/Timb_MegaBaby-01CHANNELS_28x28-16.png
new file mode 100644
index 0000000..2d80540
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01CHANNELS_28x28-16.png
Binary files differ
diff --git a/site/controls/Timb_MegaBaby-01NOTENAMES_28x40-128.json b/site/controls/Timb_MegaBaby-01NOTENAMES_28x40-128.json
new file mode 100644
index 0000000..dbd2487
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01NOTENAMES_28x40-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 28, "ctltype": 4, "fn": "Timb_MegaBaby-01NOTENAMES_28x40-128.png", "cellw": 40} \ No newline at end of file
diff --git a/site/controls/Timb_MegaBaby-01NOTENAMES_28x40-128.png b/site/controls/Timb_MegaBaby-01NOTENAMES_28x40-128.png
new file mode 100644
index 0000000..ad0fb75
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01NOTENAMES_28x40-128.png
Binary files differ
diff --git a/site/controls/Timb_MegaBaby-01SWING_28x40-101.json b/site/controls/Timb_MegaBaby-01SWING_28x40-101.json
new file mode 100644
index 0000000..445f89d
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01SWING_28x40-101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 28, "ctltype": 4, "fn": "Timb_MegaBaby-01SWING_28x40-101.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MegaBaby-01SWING_28x40-101.png b/site/controls/Timb_MegaBaby-01SWING_28x40-101.png
new file mode 100644
index 0000000..eec7aac
--- /dev/null
+++ b/site/controls/Timb_MegaBaby-01SWING_28x40-101.png
Binary files differ
diff --git a/site/controls/Timb_MeterBEATWING_8240-128fr.json b/site/controls/Timb_MeterBEATWING_8240-128fr.json
new file mode 100644
index 0000000..1078114
--- /dev/null
+++ b/site/controls/Timb_MeterBEATWING_8240-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 240, "ctltype": 3, "fn": "Timb_MeterBEATWING_8240-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBEATWING_8240-128fr.png b/site/controls/Timb_MeterBEATWING_8240-128fr.png
new file mode 100644
index 0000000..8768ba8
--- /dev/null
+++ b/site/controls/Timb_MeterBEATWING_8240-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterBLCKMORE_13322-128fr.json b/site/controls/Timb_MeterBLCKMORE_13322-128fr.json
new file mode 100644
index 0000000..2e5a972
--- /dev/null
+++ b/site/controls/Timb_MeterBLCKMORE_13322-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 322, "ctltype": 3, "fn": "Timb_MeterBLCKMORE_13322-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBLCKMORE_13322-128fr.png b/site/controls/Timb_MeterBLCKMORE_13322-128fr.png
new file mode 100644
index 0000000..b7ad855
--- /dev/null
+++ b/site/controls/Timb_MeterBLCKMORE_13322-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo-PEAK_8x16-30red.json b/site/controls/Timb_MeterBlackOnixTwo-PEAK_8x16-30red.json
new file mode 100644
index 0000000..25d3d6c
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo-PEAK_8x16-30red.json
@@ -0,0 +1 @@
+{"frames": 30, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo-PEAK_8x16-30red.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo-PEAK_8x16-30red.png b/site/controls/Timb_MeterBlackOnixTwo-PEAK_8x16-30red.png
new file mode 100644
index 0000000..fa7262c
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo-PEAK_8x16-30red.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.json b/site/controls/Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.json
new file mode 100644
index 0000000..3d1414e
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 13, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.png b/site/controls/Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.png
new file mode 100644
index 0000000..0eb95a1
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwoHRZN_13x123-129.json b/site/controls/Timb_MeterBlackOnixTwoHRZN_13x123-129.json
new file mode 100644
index 0000000..647daca
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwoHRZN_13x123-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 13, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwoHRZN_13x123-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwoHRZN_13x123-129.png b/site/controls/Timb_MeterBlackOnixTwoHRZN_13x123-129.png
new file mode 100644
index 0000000..38db812
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwoHRZN_13x123-129.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.json b/site/controls/Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.json
new file mode 100644
index 0000000..2c9f3f4
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 13, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.png b/site/controls/Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.png
new file mode 100644
index 0000000..e3c9c57
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_13x123-129.json b/site/controls/Timb_MeterBlackOnixTwo_13x123-129.json
new file mode 100644
index 0000000..facdd62
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_13x123-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_13x123-129.png", "cellw": 13} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_13x123-129.png b/site/controls/Timb_MeterBlackOnixTwo_13x123-129.png
new file mode 100644
index 0000000..2f6d6ad
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_13x123-129.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x123-129.json b/site/controls/Timb_MeterBlackOnixTwo_8x123-129.json
new file mode 100644
index 0000000..fe73ca1
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x123-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x123-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x123-129.png b/site/controls/Timb_MeterBlackOnixTwo_8x123-129.png
new file mode 100644
index 0000000..a474976
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x123-129.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x123-129grn.json b/site/controls/Timb_MeterBlackOnixTwo_8x123-129grn.json
new file mode 100644
index 0000000..7d4ef34
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x123-129grn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x123-129grn.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x123-129grn.png b/site/controls/Timb_MeterBlackOnixTwo_8x123-129grn.png
new file mode 100644
index 0000000..53144df
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x123-129grn.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x123-129yellow.json b/site/controls/Timb_MeterBlackOnixTwo_8x123-129yellow.json
new file mode 100644
index 0000000..fb7ce7c
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x123-129yellow.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x123-129yellow.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x123-129yellow.png b/site/controls/Timb_MeterBlackOnixTwo_8x123-129yellow.png
new file mode 100644
index 0000000..27adfbb
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x123-129yellow.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZblo.json b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZblo.json
new file mode 100644
index 0000000..cc2eac8
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZblo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129HRZblo.png", "cellw": 63} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZblo.png b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZblo.png
new file mode 100644
index 0000000..50e4d1f
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZblo.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZgrn.json b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZgrn.json
new file mode 100644
index 0000000..1e9593a
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZgrn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129HRZgrn.png", "cellw": 63} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZgrn.png b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZgrn.png
new file mode 100644
index 0000000..5af5a77
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZgrn.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZred.json b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZred.json
new file mode 100644
index 0000000..82cdf73
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZred.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129HRZred.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZred.png b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZred.png
new file mode 100644
index 0000000..750d627
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZred.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZylw.json b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZylw.json
new file mode 100644
index 0000000..6b8c6bc
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZylw.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129HRZylw.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZylw.png b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZylw.png
new file mode 100644
index 0000000..ee03160
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129HRZylw.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129blo.json b/site/controls/Timb_MeterBlackOnixTwo_8x63-129blo.json
new file mode 100644
index 0000000..216811e
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129blo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 63, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129blo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129blo.png b/site/controls/Timb_MeterBlackOnixTwo_8x63-129blo.png
new file mode 100644
index 0000000..ccbc52a
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129blo.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129grn.json b/site/controls/Timb_MeterBlackOnixTwo_8x63-129grn.json
new file mode 100644
index 0000000..534d094
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129grn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 63, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129grn.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129grn.png b/site/controls/Timb_MeterBlackOnixTwo_8x63-129grn.png
new file mode 100644
index 0000000..488254f
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129grn.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129red.json b/site/controls/Timb_MeterBlackOnixTwo_8x63-129red.json
new file mode 100644
index 0000000..6c40629
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129red.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 63, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129red.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129red.png b/site/controls/Timb_MeterBlackOnixTwo_8x63-129red.png
new file mode 100644
index 0000000..1df2b70
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129red.png
Binary files differ
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129ylw.json b/site/controls/Timb_MeterBlackOnixTwo_8x63-129ylw.json
new file mode 100644
index 0000000..59c39ad
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129ylw.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 63, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129ylw.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterBlackOnixTwo_8x63-129ylw.png b/site/controls/Timb_MeterBlackOnixTwo_8x63-129ylw.png
new file mode 100644
index 0000000..77b35cf
--- /dev/null
+++ b/site/controls/Timb_MeterBlackOnixTwo_8x63-129ylw.png
Binary files differ
diff --git a/site/controls/Timb_MeterCLSC10_8142-128.json b/site/controls/Timb_MeterCLSC10_8142-128.json
new file mode 100644
index 0000000..2275ff0
--- /dev/null
+++ b/site/controls/Timb_MeterCLSC10_8142-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 142, "ctltype": 3, "fn": "Timb_MeterCLSC10_8142-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterCLSC10_8142-128.png b/site/controls/Timb_MeterCLSC10_8142-128.png
new file mode 100644
index 0000000..c6fe900
--- /dev/null
+++ b/site/controls/Timb_MeterCLSC10_8142-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterCLSC10_8280-128.json b/site/controls/Timb_MeterCLSC10_8280-128.json
new file mode 100644
index 0000000..df723c8
--- /dev/null
+++ b/site/controls/Timb_MeterCLSC10_8280-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 280, "ctltype": 3, "fn": "Timb_MeterCLSC10_8280-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterCLSC10_8280-128.png b/site/controls/Timb_MeterCLSC10_8280-128.png
new file mode 100644
index 0000000..9dc1512
--- /dev/null
+++ b/site/controls/Timb_MeterCLSC10_8280-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterCLSC10_894-128.json b/site/controls/Timb_MeterCLSC10_894-128.json
new file mode 100644
index 0000000..db9e504
--- /dev/null
+++ b/site/controls/Timb_MeterCLSC10_894-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 94, "ctltype": 3, "fn": "Timb_MeterCLSC10_894-128.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_MeterCLSC10_894-128.png b/site/controls/Timb_MeterCLSC10_894-128.png
new file mode 100644
index 0000000..de00bdc
--- /dev/null
+++ b/site/controls/Timb_MeterCLSC10_894-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterCybZinc_16240-128fr.json b/site/controls/Timb_MeterCybZinc_16240-128fr.json
new file mode 100644
index 0000000..5dc2cbd
--- /dev/null
+++ b/site/controls/Timb_MeterCybZinc_16240-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 240, "ctltype": 3, "fn": "Timb_MeterCybZinc_16240-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterCybZinc_16240-128fr.png b/site/controls/Timb_MeterCybZinc_16240-128fr.png
new file mode 100644
index 0000000..2bb0e0c
--- /dev/null
+++ b/site/controls/Timb_MeterCybZinc_16240-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterDEF3_8x123-129.json b/site/controls/Timb_MeterDEF3_8x123-129.json
new file mode 100644
index 0000000..a89b409
--- /dev/null
+++ b/site/controls/Timb_MeterDEF3_8x123-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterDEF3_8x123-129.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_MeterDEF3_8x123-129.png b/site/controls/Timb_MeterDEF3_8x123-129.png
new file mode 100644
index 0000000..0826232
--- /dev/null
+++ b/site/controls/Timb_MeterDEF3_8x123-129.png
Binary files differ
diff --git a/site/controls/Timb_MeterFUNKTION_16242-128fr.json b/site/controls/Timb_MeterFUNKTION_16242-128fr.json
new file mode 100644
index 0000000..0d8c87c
--- /dev/null
+++ b/site/controls/Timb_MeterFUNKTION_16242-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 242, "ctltype": 3, "fn": "Timb_MeterFUNKTION_16242-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterFUNKTION_16242-128fr.png b/site/controls/Timb_MeterFUNKTION_16242-128fr.png
new file mode 100644
index 0000000..4625e3c
--- /dev/null
+++ b/site/controls/Timb_MeterFUNKTION_16242-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterFUNKTION_8132-128fr.json b/site/controls/Timb_MeterFUNKTION_8132-128fr.json
new file mode 100644
index 0000000..6a9fd4e
--- /dev/null
+++ b/site/controls/Timb_MeterFUNKTION_8132-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 132, "ctltype": 3, "fn": "Timb_MeterFUNKTION_8132-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterFUNKTION_8132-128fr.png b/site/controls/Timb_MeterFUNKTION_8132-128fr.png
new file mode 100644
index 0000000..2851c90
--- /dev/null
+++ b/site/controls/Timb_MeterFUNKTION_8132-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZBEATWING_8240-128fr.json b/site/controls/Timb_MeterHRZBEATWING_8240-128fr.json
new file mode 100644
index 0000000..2a04d24
--- /dev/null
+++ b/site/controls/Timb_MeterHRZBEATWING_8240-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZBEATWING_8240-128fr.png", "cellw": 240} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZBEATWING_8240-128fr.png b/site/controls/Timb_MeterHRZBEATWING_8240-128fr.png
new file mode 100644
index 0000000..7b63609
--- /dev/null
+++ b/site/controls/Timb_MeterHRZBEATWING_8240-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZBLCKMORE_13322-128fr.json b/site/controls/Timb_MeterHRZBLCKMORE_13322-128fr.json
new file mode 100644
index 0000000..797f612
--- /dev/null
+++ b/site/controls/Timb_MeterHRZBLCKMORE_13322-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 13, "ctltype": 3, "fn": "Timb_MeterHRZBLCKMORE_13322-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZBLCKMORE_13322-128fr.png b/site/controls/Timb_MeterHRZBLCKMORE_13322-128fr.png
new file mode 100644
index 0000000..532ba80
--- /dev/null
+++ b/site/controls/Timb_MeterHRZBLCKMORE_13322-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZCLSC10_8280-128.json b/site/controls/Timb_MeterHRZCLSC10_8280-128.json
new file mode 100644
index 0000000..e75143d
--- /dev/null
+++ b/site/controls/Timb_MeterHRZCLSC10_8280-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZCLSC10_8280-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZCLSC10_8280-128.png b/site/controls/Timb_MeterHRZCLSC10_8280-128.png
new file mode 100644
index 0000000..7767143
--- /dev/null
+++ b/site/controls/Timb_MeterHRZCLSC10_8280-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZCybZinc_16240-128fr.json b/site/controls/Timb_MeterHRZCybZinc_16240-128fr.json
new file mode 100644
index 0000000..d48faa6
--- /dev/null
+++ b/site/controls/Timb_MeterHRZCybZinc_16240-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZCybZinc_16240-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZCybZinc_16240-128fr.png b/site/controls/Timb_MeterHRZCybZinc_16240-128fr.png
new file mode 100644
index 0000000..38fffc9
--- /dev/null
+++ b/site/controls/Timb_MeterHRZCybZinc_16240-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZFUNKTION_16242-128fr.json b/site/controls/Timb_MeterHRZFUNKTION_16242-128fr.json
new file mode 100644
index 0000000..d3edeaf
--- /dev/null
+++ b/site/controls/Timb_MeterHRZFUNKTION_16242-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZFUNKTION_16242-128fr.png", "cellw": 242} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZFUNKTION_16242-128fr.png b/site/controls/Timb_MeterHRZFUNKTION_16242-128fr.png
new file mode 100644
index 0000000..3d864cb
--- /dev/null
+++ b/site/controls/Timb_MeterHRZFUNKTION_16242-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZILOGICFREE_16226-128fr.json b/site/controls/Timb_MeterHRZILOGICFREE_16226-128fr.json
new file mode 100644
index 0000000..1d455e4
--- /dev/null
+++ b/site/controls/Timb_MeterHRZILOGICFREE_16226-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZILOGICFREE_16226-128fr.png", "cellw": 226} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZILOGICFREE_16226-128fr.png b/site/controls/Timb_MeterHRZILOGICFREE_16226-128fr.png
new file mode 100644
index 0000000..2a2457e
--- /dev/null
+++ b/site/controls/Timb_MeterHRZILOGICFREE_16226-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZJanneSerenity_8324-128.json b/site/controls/Timb_MeterHRZJanneSerenity_8324-128.json
new file mode 100644
index 0000000..25c59c1
--- /dev/null
+++ b/site/controls/Timb_MeterHRZJanneSerenity_8324-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZJanneSerenity_8324-128.png", "cellw": 324} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZJanneSerenity_8324-128.png b/site/controls/Timb_MeterHRZJanneSerenity_8324-128.png
new file mode 100644
index 0000000..dc7ec81
--- /dev/null
+++ b/site/controls/Timb_MeterHRZJanneSerenity_8324-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZPAULA_8257-128.json b/site/controls/Timb_MeterHRZPAULA_8257-128.json
new file mode 100644
index 0000000..b38181f
--- /dev/null
+++ b/site/controls/Timb_MeterHRZPAULA_8257-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZPAULA_8257-128.png", "cellw": 257} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZPAULA_8257-128.png b/site/controls/Timb_MeterHRZPAULA_8257-128.png
new file mode 100644
index 0000000..01a064e
--- /dev/null
+++ b/site/controls/Timb_MeterHRZPAULA_8257-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZPAULIE_16200-128fr.json b/site/controls/Timb_MeterHRZPAULIE_16200-128fr.json
new file mode 100644
index 0000000..679c558
--- /dev/null
+++ b/site/controls/Timb_MeterHRZPAULIE_16200-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZPAULIE_16200-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZPAULIE_16200-128fr.png b/site/controls/Timb_MeterHRZPAULIE_16200-128fr.png
new file mode 100644
index 0000000..dedf570
--- /dev/null
+++ b/site/controls/Timb_MeterHRZPAULIE_16200-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZSessionMod_8240-128.json b/site/controls/Timb_MeterHRZSessionMod_8240-128.json
new file mode 100644
index 0000000..4537ef0
--- /dev/null
+++ b/site/controls/Timb_MeterHRZSessionMod_8240-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZSessionMod_8240-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZSessionMod_8240-128.png b/site/controls/Timb_MeterHRZSessionMod_8240-128.png
new file mode 100644
index 0000000..d6d3752
--- /dev/null
+++ b/site/controls/Timb_MeterHRZSessionMod_8240-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZSessionMod_8240-128flip.json b/site/controls/Timb_MeterHRZSessionMod_8240-128flip.json
new file mode 100644
index 0000000..39b2abc
--- /dev/null
+++ b/site/controls/Timb_MeterHRZSessionMod_8240-128flip.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZSessionMod_8240-128flip.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZSessionMod_8240-128flip.png b/site/controls/Timb_MeterHRZSessionMod_8240-128flip.png
new file mode 100644
index 0000000..e08d6ca
--- /dev/null
+++ b/site/controls/Timb_MeterHRZSessionMod_8240-128flip.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZXRAYMANALOGDEF_8320-128.json b/site/controls/Timb_MeterHRZXRAYMANALOGDEF_8320-128.json
new file mode 100644
index 0000000..e2fc743
--- /dev/null
+++ b/site/controls/Timb_MeterHRZXRAYMANALOGDEF_8320-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZXRAYMANALOGDEF_8320-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZXRAYMANALOGDEF_8320-128.png b/site/controls/Timb_MeterHRZXRAYMANALOGDEF_8320-128.png
new file mode 100644
index 0000000..a710e1e
--- /dev/null
+++ b/site/controls/Timb_MeterHRZXRAYMANALOGDEF_8320-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterHRZXRAYMANALOGLARGE_16320-128.json b/site/controls/Timb_MeterHRZXRAYMANALOGLARGE_16320-128.json
new file mode 100644
index 0000000..a3df9e1
--- /dev/null
+++ b/site/controls/Timb_MeterHRZXRAYMANALOGLARGE_16320-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZXRAYMANALOGLARGE_16320-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHRZXRAYMANALOGLARGE_16320-128.png b/site/controls/Timb_MeterHRZXRAYMANALOGLARGE_16320-128.png
new file mode 100644
index 0000000..736c787
--- /dev/null
+++ b/site/controls/Timb_MeterHRZXRAYMANALOGLARGE_16320-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterHydraW_894-128.json b/site/controls/Timb_MeterHydraW_894-128.json
new file mode 100644
index 0000000..4d4fdf2
--- /dev/null
+++ b/site/controls/Timb_MeterHydraW_894-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 94, "ctltype": 3, "fn": "Timb_MeterHydraW_894-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterHydraW_894-128.png b/site/controls/Timb_MeterHydraW_894-128.png
new file mode 100644
index 0000000..45e655e
--- /dev/null
+++ b/site/controls/Timb_MeterHydraW_894-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterILOGICFREE_16226-128fr.json b/site/controls/Timb_MeterILOGICFREE_16226-128fr.json
new file mode 100644
index 0000000..476f5ad
--- /dev/null
+++ b/site/controls/Timb_MeterILOGICFREE_16226-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 226, "ctltype": 3, "fn": "Timb_MeterILOGICFREE_16226-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterILOGICFREE_16226-128fr.png b/site/controls/Timb_MeterILOGICFREE_16226-128fr.png
new file mode 100644
index 0000000..ba7f9af
--- /dev/null
+++ b/site/controls/Timb_MeterILOGICFREE_16226-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterJanneSerenity_8324-128.json b/site/controls/Timb_MeterJanneSerenity_8324-128.json
new file mode 100644
index 0000000..9a134b5
--- /dev/null
+++ b/site/controls/Timb_MeterJanneSerenity_8324-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 324, "ctltype": 3, "fn": "Timb_MeterJanneSerenity_8324-128.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_MeterJanneSerenity_8324-128.png b/site/controls/Timb_MeterJanneSerenity_8324-128.png
new file mode 100644
index 0000000..06f5a8b
--- /dev/null
+++ b/site/controls/Timb_MeterJanneSerenity_8324-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterLarge-HORZ_16334-128fr.json b/site/controls/Timb_MeterLarge-HORZ_16334-128fr.json
new file mode 100644
index 0000000..ae7fef8
--- /dev/null
+++ b/site/controls/Timb_MeterLarge-HORZ_16334-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterLarge-HORZ_16334-128fr.png", "cellw": 334} \ No newline at end of file
diff --git a/site/controls/Timb_MeterLarge-HORZ_16334-128fr.png b/site/controls/Timb_MeterLarge-HORZ_16334-128fr.png
new file mode 100644
index 0000000..8a00dda
--- /dev/null
+++ b/site/controls/Timb_MeterLarge-HORZ_16334-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterLarge-VERT_16334-128fr.json b/site/controls/Timb_MeterLarge-VERT_16334-128fr.json
new file mode 100644
index 0000000..f40b683
--- /dev/null
+++ b/site/controls/Timb_MeterLarge-VERT_16334-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 334, "ctltype": 3, "fn": "Timb_MeterLarge-VERT_16334-128fr.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_MeterLarge-VERT_16334-128fr.png b/site/controls/Timb_MeterLarge-VERT_16334-128fr.png
new file mode 100644
index 0000000..ed0b48c
--- /dev/null
+++ b/site/controls/Timb_MeterLarge-VERT_16334-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterPAULA_8257-128.json b/site/controls/Timb_MeterPAULA_8257-128.json
new file mode 100644
index 0000000..6923d9c
--- /dev/null
+++ b/site/controls/Timb_MeterPAULA_8257-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 257, "ctltype": 3, "fn": "Timb_MeterPAULA_8257-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterPAULA_8257-128.png b/site/controls/Timb_MeterPAULA_8257-128.png
new file mode 100644
index 0000000..90dc070
--- /dev/null
+++ b/site/controls/Timb_MeterPAULA_8257-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterPAULIE_16200-128fr.json b/site/controls/Timb_MeterPAULIE_16200-128fr.json
new file mode 100644
index 0000000..6bf1cf2
--- /dev/null
+++ b/site/controls/Timb_MeterPAULIE_16200-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 200, "ctltype": 3, "fn": "Timb_MeterPAULIE_16200-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterPAULIE_16200-128fr.png b/site/controls/Timb_MeterPAULIE_16200-128fr.png
new file mode 100644
index 0000000..a6bea03
--- /dev/null
+++ b/site/controls/Timb_MeterPAULIE_16200-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterPAULIE_8-32-128fr.json b/site/controls/Timb_MeterPAULIE_8-32-128fr.json
new file mode 100644
index 0000000..51f9348
--- /dev/null
+++ b/site/controls/Timb_MeterPAULIE_8-32-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 32, "ctltype": 3, "fn": "Timb_MeterPAULIE_8-32-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterPAULIE_8-32-128fr.png b/site/controls/Timb_MeterPAULIE_8-32-128fr.png
new file mode 100644
index 0000000..3c9c14b
--- /dev/null
+++ b/site/controls/Timb_MeterPAULIE_8-32-128fr.png
Binary files differ
diff --git a/site/controls/Timb_MeterSessionMod_8240-128.json b/site/controls/Timb_MeterSessionMod_8240-128.json
new file mode 100644
index 0000000..237d595
--- /dev/null
+++ b/site/controls/Timb_MeterSessionMod_8240-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 240, "ctltype": 3, "fn": "Timb_MeterSessionMod_8240-128.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_MeterSessionMod_8240-128.png b/site/controls/Timb_MeterSessionMod_8240-128.png
new file mode 100644
index 0000000..3d290fd
--- /dev/null
+++ b/site/controls/Timb_MeterSessionMod_8240-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterSideChainRVRS_8-64yellow.json b/site/controls/Timb_MeterSideChainRVRS_8-64yellow.json
new file mode 100644
index 0000000..6a58853
--- /dev/null
+++ b/site/controls/Timb_MeterSideChainRVRS_8-64yellow.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 3, "fn": "Timb_MeterSideChainRVRS_8-64yellow.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_MeterSideChainRVRS_8-64yellow.png b/site/controls/Timb_MeterSideChainRVRS_8-64yellow.png
new file mode 100644
index 0000000..9c75e2a
--- /dev/null
+++ b/site/controls/Timb_MeterSideChainRVRS_8-64yellow.png
Binary files differ
diff --git a/site/controls/Timb_MeterSideChain_8-64yellow.json b/site/controls/Timb_MeterSideChain_8-64yellow.json
new file mode 100644
index 0000000..87db271
--- /dev/null
+++ b/site/controls/Timb_MeterSideChain_8-64yellow.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 3, "fn": "Timb_MeterSideChain_8-64yellow.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_MeterSideChain_8-64yellow.png b/site/controls/Timb_MeterSideChain_8-64yellow.png
new file mode 100644
index 0000000..732f3d2
--- /dev/null
+++ b/site/controls/Timb_MeterSideChain_8-64yellow.png
Binary files differ
diff --git a/site/controls/Timb_MeterWavesCLA-117.json b/site/controls/Timb_MeterWavesCLA-117.json
new file mode 100644
index 0000000..5911f86
--- /dev/null
+++ b/site/controls/Timb_MeterWavesCLA-117.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 117, "ctltype": 3, "fn": "Timb_MeterWavesCLA-117.png", "cellw": 22} \ No newline at end of file
diff --git a/site/controls/Timb_MeterWavesCLA-117.png b/site/controls/Timb_MeterWavesCLA-117.png
new file mode 100644
index 0000000..94f3722
--- /dev/null
+++ b/site/controls/Timb_MeterWavesCLA-117.png
Binary files differ
diff --git a/site/controls/Timb_MeterWavesCLA-234.json b/site/controls/Timb_MeterWavesCLA-234.json
new file mode 100644
index 0000000..bcd33bf
--- /dev/null
+++ b/site/controls/Timb_MeterWavesCLA-234.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 234, "ctltype": 3, "fn": "Timb_MeterWavesCLA-234.png", "cellw": 44} \ No newline at end of file
diff --git a/site/controls/Timb_MeterWavesCLA-234.png b/site/controls/Timb_MeterWavesCLA-234.png
new file mode 100644
index 0000000..78cd634
--- /dev/null
+++ b/site/controls/Timb_MeterWavesCLA-234.png
Binary files differ
diff --git a/site/controls/Timb_MeterXRAYMANALOGDEF_8320-128.json b/site/controls/Timb_MeterXRAYMANALOGDEF_8320-128.json
new file mode 100644
index 0000000..6e8c8bd
--- /dev/null
+++ b/site/controls/Timb_MeterXRAYMANALOGDEF_8320-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 320, "ctltype": 3, "fn": "Timb_MeterXRAYMANALOGDEF_8320-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MeterXRAYMANALOGDEF_8320-128.png b/site/controls/Timb_MeterXRAYMANALOGDEF_8320-128.png
new file mode 100644
index 0000000..e331880
--- /dev/null
+++ b/site/controls/Timb_MeterXRAYMANALOGDEF_8320-128.png
Binary files differ
diff --git a/site/controls/Timb_MeterXRAYMANALOGLARGE_16320-128.json b/site/controls/Timb_MeterXRAYMANALOGLARGE_16320-128.json
new file mode 100644
index 0000000..f336c1b
--- /dev/null
+++ b/site/controls/Timb_MeterXRAYMANALOGLARGE_16320-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 320, "ctltype": 3, "fn": "Timb_MeterXRAYMANALOGLARGE_16320-128.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_MeterXRAYMANALOGLARGE_16320-128.png b/site/controls/Timb_MeterXRAYMANALOGLARGE_16320-128.png
new file mode 100644
index 0000000..e762410
--- /dev/null
+++ b/site/controls/Timb_MeterXRAYMANALOGLARGE_16320-128.png
Binary files differ
diff --git a/site/controls/Timb_Meter_ArrowDown_16x31.json b/site/controls/Timb_Meter_ArrowDown_16x31.json
new file mode 100644
index 0000000..bf054c4
--- /dev/null
+++ b/site/controls/Timb_Meter_ArrowDown_16x31.json
@@ -0,0 +1 @@
+{"frames": 31, "cellh": 16, "ctltype": 3, "fn": "Timb_Meter_ArrowDown_16x31.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_ArrowDown_16x31.png b/site/controls/Timb_Meter_ArrowDown_16x31.png
new file mode 100644
index 0000000..e203115
--- /dev/null
+++ b/site/controls/Timb_Meter_ArrowDown_16x31.png
Binary files differ
diff --git a/site/controls/Timb_Meter_ArrowRight_16x31.json b/site/controls/Timb_Meter_ArrowRight_16x31.json
new file mode 100644
index 0000000..15f5e76
--- /dev/null
+++ b/site/controls/Timb_Meter_ArrowRight_16x31.json
@@ -0,0 +1 @@
+{"frames": 31, "cellh": 16, "ctltype": 3, "fn": "Timb_Meter_ArrowRight_16x31.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_ArrowRight_16x31.png b/site/controls/Timb_Meter_ArrowRight_16x31.png
new file mode 100644
index 0000000..286e59f
--- /dev/null
+++ b/site/controls/Timb_Meter_ArrowRight_16x31.png
Binary files differ
diff --git a/site/controls/Timb_Meter_FUNKTIONTRCK_4x33.json b/site/controls/Timb_Meter_FUNKTIONTRCK_4x33.json
new file mode 100644
index 0000000..f7ec33a
--- /dev/null
+++ b/site/controls/Timb_Meter_FUNKTIONTRCK_4x33.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_FUNKTIONTRCK_4x33.png", "cellw": 4} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_FUNKTIONTRCK_4x33.png b/site/controls/Timb_Meter_FUNKTIONTRCK_4x33.png
new file mode 100644
index 0000000..d002dbc
--- /dev/null
+++ b/site/controls/Timb_Meter_FUNKTIONTRCK_4x33.png
Binary files differ
diff --git a/site/controls/Timb_Meter_NITROGENTRCK_4x33.json b/site/controls/Timb_Meter_NITROGENTRCK_4x33.json
new file mode 100644
index 0000000..29d8df2
--- /dev/null
+++ b/site/controls/Timb_Meter_NITROGENTRCK_4x33.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_NITROGENTRCK_4x33.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_NITROGENTRCK_4x33.png b/site/controls/Timb_Meter_NITROGENTRCK_4x33.png
new file mode 100644
index 0000000..d59e99e
--- /dev/null
+++ b/site/controls/Timb_Meter_NITROGENTRCK_4x33.png
Binary files differ
diff --git a/site/controls/Timb_Meter_REABLETTRCK_4x33.json b/site/controls/Timb_Meter_REABLETTRCK_4x33.json
new file mode 100644
index 0000000..3f20287
--- /dev/null
+++ b/site/controls/Timb_Meter_REABLETTRCK_4x33.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_REABLETTRCK_4x33.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_REABLETTRCK_4x33.png b/site/controls/Timb_Meter_REABLETTRCK_4x33.png
new file mode 100644
index 0000000..81f5c1d
--- /dev/null
+++ b/site/controls/Timb_Meter_REABLETTRCK_4x33.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_L.json b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_L.json
new file mode 100644
index 0000000..3cff5ec
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_L.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_L.png", "cellw": 33} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_L.png b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_L.png
new file mode 100644
index 0000000..d629c83
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_L.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R.json b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R.json
new file mode 100644
index 0000000..cc90820
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_R.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R.png b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R.png
new file mode 100644
index 0000000..c38845d
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2.json b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2.json
new file mode 100644
index 0000000..def975b
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_R2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2.png b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2.png
new file mode 100644
index 0000000..c1f483c
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2b.json b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2b.json
new file mode 100644
index 0000000..d2bbbbe
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2b.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_R2b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2b.png b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2b.png
new file mode 100644
index 0000000..a3fd1c8
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2b.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2c.json b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2c.json
new file mode 100644
index 0000000..1a5a69b
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2c.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_R2c.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2c.png b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2c.png
new file mode 100644
index 0000000..5cb8360
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x4-128fr_R2c.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x8-128fr_R2b.json b/site/controls/Timb_Meter_SESMODTRCK_33x8-128fr_R2b.json
new file mode 100644
index 0000000..b23c6dc
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x8-128fr_R2b.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x8-128fr_R2b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x8-128fr_R2b.png b/site/controls/Timb_Meter_SESMODTRCK_33x8-128fr_R2b.png
new file mode 100644
index 0000000..88625b8
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x8-128fr_R2b.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x8-16fr_R2b.json b/site/controls/Timb_Meter_SESMODTRCK_33x8-16fr_R2b.json
new file mode 100644
index 0000000..8006390
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x8-16fr_R2b.json
@@ -0,0 +1 @@
+{"frames": 16, "cellh": 8, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x8-16fr_R2b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_33x8-16fr_R2b.png b/site/controls/Timb_Meter_SESMODTRCK_33x8-16fr_R2b.png
new file mode 100644
index 0000000..6e6adf6
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_33x8-16fr_R2b.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_4x33.json b/site/controls/Timb_Meter_SESMODTRCK_4x33.json
new file mode 100644
index 0000000..c0090a8
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_4x33.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_4x33.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_4x33.png b/site/controls/Timb_Meter_SESMODTRCK_4x33.png
new file mode 100644
index 0000000..3e41be8
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_4x33.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33.json b/site/controls/Timb_Meter_SESMODTRCK_8x33.json
new file mode 100644
index 0000000..0a2e123
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33.png b/site/controls/Timb_Meter_SESMODTRCK_8x33.png
new file mode 100644
index 0000000..6d9ca5e
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33b.json b/site/controls/Timb_Meter_SESMODTRCK_8x33b.json
new file mode 100644
index 0000000..61e403c
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33b.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33b.png b/site/controls/Timb_Meter_SESMODTRCK_8x33b.png
new file mode 100644
index 0000000..99b3e18
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33b.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33c.json b/site/controls/Timb_Meter_SESMODTRCK_8x33c.json
new file mode 100644
index 0000000..dc768f4
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33c.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33c.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33c.png b/site/controls/Timb_Meter_SESMODTRCK_8x33c.png
new file mode 100644
index 0000000..c0145ab
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33c.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33d.json b/site/controls/Timb_Meter_SESMODTRCK_8x33d.json
new file mode 100644
index 0000000..8ddd4dd
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33d.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33d.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33d.png b/site/controls/Timb_Meter_SESMODTRCK_8x33d.png
new file mode 100644
index 0000000..4277474
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33d.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33e.json b/site/controls/Timb_Meter_SESMODTRCK_8x33e.json
new file mode 100644
index 0000000..8097f3d
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33e.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33e.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SESMODTRCK_8x33e.png b/site/controls/Timb_Meter_SESMODTRCK_8x33e.png
new file mode 100644
index 0000000..d0fb949
--- /dev/null
+++ b/site/controls/Timb_Meter_SESMODTRCK_8x33e.png
Binary files differ
diff --git a/site/controls/Timb_Meter_SUBSUB2_(259-51fr).json b/site/controls/Timb_Meter_SUBSUB2_(259-51fr).json
new file mode 100644
index 0000000..8b75603
--- /dev/null
+++ b/site/controls/Timb_Meter_SUBSUB2_(259-51fr).json
@@ -0,0 +1 @@
+{"frames": 51, "cellh": 259, "ctltype": 3, "fn": "Timb_Meter_SUBSUB2_(259-51fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SUBSUB2_(259-51fr).png b/site/controls/Timb_Meter_SUBSUB2_(259-51fr).png
new file mode 100644
index 0000000..0395cd6
--- /dev/null
+++ b/site/controls/Timb_Meter_SUBSUB2_(259-51fr).png
Binary files differ
diff --git a/site/controls/Timb_Meter_SUBSUB_(259-51fr).json b/site/controls/Timb_Meter_SUBSUB_(259-51fr).json
new file mode 100644
index 0000000..a8d9846
--- /dev/null
+++ b/site/controls/Timb_Meter_SUBSUB_(259-51fr).json
@@ -0,0 +1 @@
+{"frames": 51, "cellh": 259, "ctltype": 3, "fn": "Timb_Meter_SUBSUB_(259-51fr).png", "cellw": 208} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_SUBSUB_(259-51fr).png b/site/controls/Timb_Meter_SUBSUB_(259-51fr).png
new file mode 100644
index 0000000..da44e61
--- /dev/null
+++ b/site/controls/Timb_Meter_SUBSUB_(259-51fr).png
Binary files differ
diff --git a/site/controls/Timb_Meter_TRANSPARENT-01_(16x48-128).json b/site/controls/Timb_Meter_TRANSPARENT-01_(16x48-128).json
new file mode 100644
index 0000000..6d8436e
--- /dev/null
+++ b/site/controls/Timb_Meter_TRANSPARENT-01_(16x48-128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_Meter_TRANSPARENT-01_(16x48-128).png"} \ No newline at end of file
diff --git a/site/controls/Timb_Meter_TRANSPARENT-01_(16x48-128).png b/site/controls/Timb_Meter_TRANSPARENT-01_(16x48-128).png
new file mode 100644
index 0000000..96506c6
--- /dev/null
+++ b/site/controls/Timb_Meter_TRANSPARENT-01_(16x48-128).png
Binary files differ
diff --git a/site/controls/Timb_Minika16101_BLO.json b/site/controls/Timb_Minika16101_BLO.json
new file mode 100644
index 0000000..97c5a10
--- /dev/null
+++ b/site/controls/Timb_Minika16101_BLO.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_BLO.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Minika16101_BLO.png b/site/controls/Timb_Minika16101_BLO.png
new file mode 100644
index 0000000..c4250b7
--- /dev/null
+++ b/site/controls/Timb_Minika16101_BLO.png
Binary files differ
diff --git a/site/controls/Timb_Minika16101_DBLO.json b/site/controls/Timb_Minika16101_DBLO.json
new file mode 100644
index 0000000..57b3979
--- /dev/null
+++ b/site/controls/Timb_Minika16101_DBLO.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_DBLO.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_Minika16101_DBLO.png b/site/controls/Timb_Minika16101_DBLO.png
new file mode 100644
index 0000000..71e1f9f
--- /dev/null
+++ b/site/controls/Timb_Minika16101_DBLO.png
Binary files differ
diff --git a/site/controls/Timb_Minika16101_GRN.json b/site/controls/Timb_Minika16101_GRN.json
new file mode 100644
index 0000000..aba1182
--- /dev/null
+++ b/site/controls/Timb_Minika16101_GRN.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_GRN.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_Minika16101_GRN.png b/site/controls/Timb_Minika16101_GRN.png
new file mode 100644
index 0000000..afce0cd
--- /dev/null
+++ b/site/controls/Timb_Minika16101_GRN.png
Binary files differ
diff --git a/site/controls/Timb_Minika16101_MOR.json b/site/controls/Timb_Minika16101_MOR.json
new file mode 100644
index 0000000..bad81e6
--- /dev/null
+++ b/site/controls/Timb_Minika16101_MOR.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_MOR.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Minika16101_MOR.png b/site/controls/Timb_Minika16101_MOR.png
new file mode 100644
index 0000000..deb75c3
--- /dev/null
+++ b/site/controls/Timb_Minika16101_MOR.png
Binary files differ
diff --git a/site/controls/Timb_Minika16101_PINK.json b/site/controls/Timb_Minika16101_PINK.json
new file mode 100644
index 0000000..4903467
--- /dev/null
+++ b/site/controls/Timb_Minika16101_PINK.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_PINK.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_Minika16101_PINK.png b/site/controls/Timb_Minika16101_PINK.png
new file mode 100644
index 0000000..9fc70b0
--- /dev/null
+++ b/site/controls/Timb_Minika16101_PINK.png
Binary files differ
diff --git a/site/controls/Timb_Minika16101_RED.json b/site/controls/Timb_Minika16101_RED.json
new file mode 100644
index 0000000..aaea50e
--- /dev/null
+++ b/site/controls/Timb_Minika16101_RED.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_RED.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_Minika16101_RED.png b/site/controls/Timb_Minika16101_RED.png
new file mode 100644
index 0000000..b290486
--- /dev/null
+++ b/site/controls/Timb_Minika16101_RED.png
Binary files differ
diff --git a/site/controls/Timb_Minika16101_YLLW.json b/site/controls/Timb_Minika16101_YLLW.json
new file mode 100644
index 0000000..f58640e
--- /dev/null
+++ b/site/controls/Timb_Minika16101_YLLW.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_YLLW.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Minika16101_YLLW.png b/site/controls/Timb_Minika16101_YLLW.png
new file mode 100644
index 0000000..15991b1
--- /dev/null
+++ b/site/controls/Timb_Minika16101_YLLW.png
Binary files differ
diff --git a/site/controls/Timb_Modulators01_(16x).json b/site/controls/Timb_Modulators01_(16x).json
new file mode 100644
index 0000000..8c849d6
--- /dev/null
+++ b/site/controls/Timb_Modulators01_(16x).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Modulators01_(16x).png"} \ No newline at end of file
diff --git a/site/controls/Timb_Modulators01_(16x).png b/site/controls/Timb_Modulators01_(16x).png
new file mode 100644
index 0000000..c9d56a6
--- /dev/null
+++ b/site/controls/Timb_Modulators01_(16x).png
Binary files differ
diff --git a/site/controls/Timb_Modulators01b_(16x).json b/site/controls/Timb_Modulators01b_(16x).json
new file mode 100644
index 0000000..d325a63
--- /dev/null
+++ b/site/controls/Timb_Modulators01b_(16x).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Modulators01b_(16x).png"} \ No newline at end of file
diff --git a/site/controls/Timb_Modulators01b_(16x).png b/site/controls/Timb_Modulators01b_(16x).png
new file mode 100644
index 0000000..1feb7ba
--- /dev/null
+++ b/site/controls/Timb_Modulators01b_(16x).png
Binary files differ
diff --git a/site/controls/Timb_MulchSlider_20140-129.json b/site/controls/Timb_MulchSlider_20140-129.json
new file mode 100644
index 0000000..447be97
--- /dev/null
+++ b/site/controls/Timb_MulchSlider_20140-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 140, "ctltype": 1, "fn": "Timb_MulchSlider_20140-129.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/Timb_MulchSlider_20140-129.png b/site/controls/Timb_MulchSlider_20140-129.png
new file mode 100644
index 0000000..961bfcc
--- /dev/null
+++ b/site/controls/Timb_MulchSlider_20140-129.png
Binary files differ
diff --git a/site/controls/Timb_MultiFXSENDER12x16-5fr.json b/site/controls/Timb_MultiFXSENDER12x16-5fr.json
new file mode 100644
index 0000000..19885e3
--- /dev/null
+++ b/site/controls/Timb_MultiFXSENDER12x16-5fr.json
@@ -0,0 +1 @@
+{"frames": 5, "cellh": 16, "ctltype": 2, "fn": "Timb_MultiFXSENDER12x16-5fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MultiFXSENDER12x16-5fr.png b/site/controls/Timb_MultiFXSENDER12x16-5fr.png
new file mode 100644
index 0000000..4998c25
--- /dev/null
+++ b/site/controls/Timb_MultiFXSENDER12x16-5fr.png
Binary files differ
diff --git a/site/controls/Timb_MultiFXSENDER12x16-9fr.json b/site/controls/Timb_MultiFXSENDER12x16-9fr.json
new file mode 100644
index 0000000..663ba40
--- /dev/null
+++ b/site/controls/Timb_MultiFXSENDER12x16-9fr.json
@@ -0,0 +1 @@
+{"frames": 9, "cellh": 16, "ctltype": 2, "fn": "Timb_MultiFXSENDER12x16-9fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MultiFXSENDER12x16-9fr.png b/site/controls/Timb_MultiFXSENDER12x16-9fr.png
new file mode 100644
index 0000000..4285beb
--- /dev/null
+++ b/site/controls/Timb_MultiFXSENDER12x16-9fr.png
Binary files differ
diff --git a/site/controls/Timb_MultiFXSENDER16x16-9fr.json b/site/controls/Timb_MultiFXSENDER16x16-9fr.json
new file mode 100644
index 0000000..1da9878
--- /dev/null
+++ b/site/controls/Timb_MultiFXSENDER16x16-9fr.json
@@ -0,0 +1 @@
+{"frames": 9, "cellh": 16, "ctltype": 2, "fn": "Timb_MultiFXSENDER16x16-9fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MultiFXSENDER16x16-9fr.png b/site/controls/Timb_MultiFXSENDER16x16-9fr.png
new file mode 100644
index 0000000..178e948
--- /dev/null
+++ b/site/controls/Timb_MultiFXSENDER16x16-9fr.png
Binary files differ
diff --git a/site/controls/Timb_MultiTransient_102.json b/site/controls/Timb_MultiTransient_102.json
new file mode 100644
index 0000000..b5224c2
--- /dev/null
+++ b/site/controls/Timb_MultiTransient_102.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb_MultiTransient_102.png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Timb_MultiTransient_102.png b/site/controls/Timb_MultiTransient_102.png
new file mode 100644
index 0000000..ddd7635
--- /dev/null
+++ b/site/controls/Timb_MultiTransient_102.png
Binary files differ
diff --git a/site/controls/Timb_MultiTransient_105.json b/site/controls/Timb_MultiTransient_105.json
new file mode 100644
index 0000000..7cf7069
--- /dev/null
+++ b/site/controls/Timb_MultiTransient_105.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb_MultiTransient_105.png"} \ No newline at end of file
diff --git a/site/controls/Timb_MultiTransient_105.png b/site/controls/Timb_MultiTransient_105.png
new file mode 100644
index 0000000..d0502da
--- /dev/null
+++ b/site/controls/Timb_MultiTransient_105.png
Binary files differ
diff --git a/site/controls/Timb_NSA TSW Red-01.json b/site/controls/Timb_NSA TSW Red-01.json
new file mode 100644
index 0000000..6e796bb
--- /dev/null
+++ b/site/controls/Timb_NSA TSW Red-01.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_NSA TSW Red-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_NSA TSW Red-01.png b/site/controls/Timb_NSA TSW Red-01.png
new file mode 100644
index 0000000..fe7eb4f
--- /dev/null
+++ b/site/controls/Timb_NSA TSW Red-01.png
Binary files differ
diff --git a/site/controls/Timb_NSA TSW Red-02.json b/site/controls/Timb_NSA TSW Red-02.json
new file mode 100644
index 0000000..c9030ae
--- /dev/null
+++ b/site/controls/Timb_NSA TSW Red-02.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_NSA TSW Red-02.png", "cellw": 261} \ No newline at end of file
diff --git a/site/controls/Timb_NSA TSW Red-02.png b/site/controls/Timb_NSA TSW Red-02.png
new file mode 100644
index 0000000..d033e6e
--- /dev/null
+++ b/site/controls/Timb_NSA TSW Red-02.png
Binary files differ
diff --git a/site/controls/Timb_NSA TSW Red-02b.json b/site/controls/Timb_NSA TSW Red-02b.json
new file mode 100644
index 0000000..8ac0c07
--- /dev/null
+++ b/site/controls/Timb_NSA TSW Red-02b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 24, "ctltype": 4, "fn": "Timb_NSA TSW Red-02b.png", "cellw": 258} \ No newline at end of file
diff --git a/site/controls/Timb_NSA TSW Red-02b.png b/site/controls/Timb_NSA TSW Red-02b.png
new file mode 100644
index 0000000..89441d3
--- /dev/null
+++ b/site/controls/Timb_NSA TSW Red-02b.png
Binary files differ
diff --git a/site/controls/Timb_NSA-FREESTYLE-Knob-01.json b/site/controls/Timb_NSA-FREESTYLE-Knob-01.json
new file mode 100644
index 0000000..d81ca12
--- /dev/null
+++ b/site/controls/Timb_NSA-FREESTYLE-Knob-01.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 0, "fn": "Timb_NSA-FREESTYLE-Knob-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_NSA-FREESTYLE-Knob-01.png b/site/controls/Timb_NSA-FREESTYLE-Knob-01.png
new file mode 100644
index 0000000..08c2953
--- /dev/null
+++ b/site/controls/Timb_NSA-FREESTYLE-Knob-01.png
Binary files differ
diff --git a/site/controls/Timb_NSA-FREESTYLE-Knob-02.json b/site/controls/Timb_NSA-FREESTYLE-Knob-02.json
new file mode 100644
index 0000000..8b4aaaa
--- /dev/null
+++ b/site/controls/Timb_NSA-FREESTYLE-Knob-02.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 0, "fn": "Timb_NSA-FREESTYLE-Knob-02.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_NSA-FREESTYLE-Knob-02.png b/site/controls/Timb_NSA-FREESTYLE-Knob-02.png
new file mode 100644
index 0000000..2845ca4
--- /dev/null
+++ b/site/controls/Timb_NSA-FREESTYLE-Knob-02.png
Binary files differ
diff --git a/site/controls/Timb_NSA-FREESTYLE-Knob-03.json b/site/controls/Timb_NSA-FREESTYLE-Knob-03.json
new file mode 100644
index 0000000..e487a27
--- /dev/null
+++ b/site/controls/Timb_NSA-FREESTYLE-Knob-03.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 24, "ctltype": 0, "fn": "Timb_NSA-FREESTYLE-Knob-03.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_NSA-FREESTYLE-Knob-03.png b/site/controls/Timb_NSA-FREESTYLE-Knob-03.png
new file mode 100644
index 0000000..7beabd4
--- /dev/null
+++ b/site/controls/Timb_NSA-FREESTYLE-Knob-03.png
Binary files differ
diff --git a/site/controls/Timb_NanoFx23.json b/site/controls/Timb_NanoFx23.json
new file mode 100644
index 0000000..457ef2a
--- /dev/null
+++ b/site/controls/Timb_NanoFx23.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Timb_NanoFx23.png"} \ No newline at end of file
diff --git a/site/controls/Timb_NanoFx23.png b/site/controls/Timb_NanoFx23.png
new file mode 100644
index 0000000..9e0e65d
--- /dev/null
+++ b/site/controls/Timb_NanoFx23.png
Binary files differ
diff --git a/site/controls/Timb_Nomomistuune_(96x129).json b/site/controls/Timb_Nomomistuune_(96x129).json
new file mode 100644
index 0000000..660092a
--- /dev/null
+++ b/site/controls/Timb_Nomomistuune_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_Nomomistuune_(96x129).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_Nomomistuune_(96x129).png b/site/controls/Timb_Nomomistuune_(96x129).png
new file mode 100644
index 0000000..9ad8528
--- /dev/null
+++ b/site/controls/Timb_Nomomistuune_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_ONOFF_BGBUTTON.json b/site/controls/Timb_ONOFF_BGBUTTON.json
new file mode 100644
index 0000000..95a2d9d
--- /dev/null
+++ b/site/controls/Timb_ONOFF_BGBUTTON.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_ONOFF_BGBUTTON.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_ONOFF_BGBUTTON.png b/site/controls/Timb_ONOFF_BGBUTTON.png
new file mode 100644
index 0000000..71ff6af
--- /dev/null
+++ b/site/controls/Timb_ONOFF_BGBUTTON.png
Binary files differ
diff --git a/site/controls/Timb_PAINTPLACK_32x12-128.json b/site/controls/Timb_PAINTPLACK_32x12-128.json
new file mode 100644
index 0000000..b121794
--- /dev/null
+++ b/site/controls/Timb_PAINTPLACK_32x12-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 12, "ctltype": 3, "fn": "Timb_PAINTPLACK_32x12-128.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_PAINTPLACK_32x12-128.png b/site/controls/Timb_PAINTPLACK_32x12-128.png
new file mode 100644
index 0000000..49ec22a
--- /dev/null
+++ b/site/controls/Timb_PAINTPLACK_32x12-128.png
Binary files differ
diff --git a/site/controls/Timb_PAINTPLACK_32x16-128.json b/site/controls/Timb_PAINTPLACK_32x16-128.json
new file mode 100644
index 0000000..5b765f8
--- /dev/null
+++ b/site/controls/Timb_PAINTPLACK_32x16-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_PAINTPLACK_32x16-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_PAINTPLACK_32x16-128.png b/site/controls/Timb_PAINTPLACK_32x16-128.png
new file mode 100644
index 0000000..1af28d9
--- /dev/null
+++ b/site/controls/Timb_PAINTPLACK_32x16-128.png
Binary files differ
diff --git a/site/controls/Timb_Peak-ish-1.json b/site/controls/Timb_Peak-ish-1.json
new file mode 100644
index 0000000..7fb4e3d
--- /dev/null
+++ b/site/controls/Timb_Peak-ish-1.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_Peak-ish-1.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Peak-ish-1.png b/site/controls/Timb_Peak-ish-1.png
new file mode 100644
index 0000000..6f28b0f
--- /dev/null
+++ b/site/controls/Timb_Peak-ish-1.png
Binary files differ
diff --git a/site/controls/Timb_PitchMapBYPASS-00.json b/site/controls/Timb_PitchMapBYPASS-00.json
new file mode 100644
index 0000000..a92a5cb
--- /dev/null
+++ b/site/controls/Timb_PitchMapBYPASS-00.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_PitchMapBYPASS-00.png", "cellw": 51} \ No newline at end of file
diff --git a/site/controls/Timb_PitchMapBYPASS-00.png b/site/controls/Timb_PitchMapBYPASS-00.png
new file mode 100644
index 0000000..808bfaf
--- /dev/null
+++ b/site/controls/Timb_PitchMapBYPASS-00.png
Binary files differ
diff --git a/site/controls/Timb_PitchMapBYPASS-01.json b/site/controls/Timb_PitchMapBYPASS-01.json
new file mode 100644
index 0000000..f4916d5
--- /dev/null
+++ b/site/controls/Timb_PitchMapBYPASS-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_PitchMapBYPASS-01.png", "cellw": 51} \ No newline at end of file
diff --git a/site/controls/Timb_PitchMapBYPASS-01.png b/site/controls/Timb_PitchMapBYPASS-01.png
new file mode 100644
index 0000000..2ade7c5
--- /dev/null
+++ b/site/controls/Timb_PitchMapBYPASS-01.png
Binary files differ
diff --git a/site/controls/Timb_PoorMelda01_(96x129).json b/site/controls/Timb_PoorMelda01_(96x129).json
new file mode 100644
index 0000000..9912f03
--- /dev/null
+++ b/site/controls/Timb_PoorMelda01_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda01_(96x129).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMelda01_(96x129).png b/site/controls/Timb_PoorMelda01_(96x129).png
new file mode 100644
index 0000000..bf66f98
--- /dev/null
+++ b/site/controls/Timb_PoorMelda01_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMelda02_(96x129).json b/site/controls/Timb_PoorMelda02_(96x129).json
new file mode 100644
index 0000000..9c96ae0
--- /dev/null
+++ b/site/controls/Timb_PoorMelda02_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda02_(96x129).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMelda02_(96x129).png b/site/controls/Timb_PoorMelda02_(96x129).png
new file mode 100644
index 0000000..220b448
--- /dev/null
+++ b/site/controls/Timb_PoorMelda02_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMelda03_(96x129).json b/site/controls/Timb_PoorMelda03_(96x129).json
new file mode 100644
index 0000000..ef719cd
--- /dev/null
+++ b/site/controls/Timb_PoorMelda03_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda03_(96x129).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMelda03_(96x129).png b/site/controls/Timb_PoorMelda03_(96x129).png
new file mode 100644
index 0000000..cad48a8
--- /dev/null
+++ b/site/controls/Timb_PoorMelda03_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMelda04_(96x129).json b/site/controls/Timb_PoorMelda04_(96x129).json
new file mode 100644
index 0000000..031c157
--- /dev/null
+++ b/site/controls/Timb_PoorMelda04_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda04_(96x129).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMelda04_(96x129).png b/site/controls/Timb_PoorMelda04_(96x129).png
new file mode 100644
index 0000000..3af4102
--- /dev/null
+++ b/site/controls/Timb_PoorMelda04_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMelda05_(96x129).json b/site/controls/Timb_PoorMelda05_(96x129).json
new file mode 100644
index 0000000..4b6e1c3
--- /dev/null
+++ b/site/controls/Timb_PoorMelda05_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda05_(96x129).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMelda05_(96x129).png b/site/controls/Timb_PoorMelda05_(96x129).png
new file mode 100644
index 0000000..2f87c3b
--- /dev/null
+++ b/site/controls/Timb_PoorMelda05_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMelda06_(96x129).json b/site/controls/Timb_PoorMelda06_(96x129).json
new file mode 100644
index 0000000..1bc3766
--- /dev/null
+++ b/site/controls/Timb_PoorMelda06_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda06_(96x129).png"} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMelda06_(96x129).png b/site/controls/Timb_PoorMelda06_(96x129).png
new file mode 100644
index 0000000..1604666
--- /dev/null
+++ b/site/controls/Timb_PoorMelda06_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMelda07_(96x129).json b/site/controls/Timb_PoorMelda07_(96x129).json
new file mode 100644
index 0000000..e104d79
--- /dev/null
+++ b/site/controls/Timb_PoorMelda07_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda07_(96x129).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMelda07_(96x129).png b/site/controls/Timb_PoorMelda07_(96x129).png
new file mode 100644
index 0000000..b873406
--- /dev/null
+++ b/site/controls/Timb_PoorMelda07_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMelda08_(96x129).json b/site/controls/Timb_PoorMelda08_(96x129).json
new file mode 100644
index 0000000..4108eb5
--- /dev/null
+++ b/site/controls/Timb_PoorMelda08_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda08_(96x129).png"} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMelda08_(96x129).png b/site/controls/Timb_PoorMelda08_(96x129).png
new file mode 100644
index 0000000..adeb974
--- /dev/null
+++ b/site/controls/Timb_PoorMelda08_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMeldaB00_(96x129).json b/site/controls/Timb_PoorMeldaB00_(96x129).json
new file mode 100644
index 0000000..ad368d8
--- /dev/null
+++ b/site/controls/Timb_PoorMeldaB00_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMeldaB00_(96x129).png"} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMeldaB00_(96x129).png b/site/controls/Timb_PoorMeldaB00_(96x129).png
new file mode 100644
index 0000000..43e9d7a
--- /dev/null
+++ b/site/controls/Timb_PoorMeldaB00_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMeldaB01_(96x129).json b/site/controls/Timb_PoorMeldaB01_(96x129).json
new file mode 100644
index 0000000..dcd486a
--- /dev/null
+++ b/site/controls/Timb_PoorMeldaB01_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMeldaB01_(96x129).png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMeldaB01_(96x129).png b/site/controls/Timb_PoorMeldaB01_(96x129).png
new file mode 100644
index 0000000..96a9f7b
--- /dev/null
+++ b/site/controls/Timb_PoorMeldaB01_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMeldaB02_(96x129).json b/site/controls/Timb_PoorMeldaB02_(96x129).json
new file mode 100644
index 0000000..933dc80
--- /dev/null
+++ b/site/controls/Timb_PoorMeldaB02_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMeldaB02_(96x129).png"} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMeldaB02_(96x129).png b/site/controls/Timb_PoorMeldaB02_(96x129).png
new file mode 100644
index 0000000..2749d95
--- /dev/null
+++ b/site/controls/Timb_PoorMeldaB02_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_PoorMeldaB03_(96x129).json b/site/controls/Timb_PoorMeldaB03_(96x129).json
new file mode 100644
index 0000000..ddc561d
--- /dev/null
+++ b/site/controls/Timb_PoorMeldaB03_(96x129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMeldaB03_(96x129).png"} \ No newline at end of file
diff --git a/site/controls/Timb_PoorMeldaB03_(96x129).png b/site/controls/Timb_PoorMeldaB03_(96x129).png
new file mode 100644
index 0000000..dd16854
--- /dev/null
+++ b/site/controls/Timb_PoorMeldaB03_(96x129).png
Binary files differ
diff --git a/site/controls/Timb_Power switch 01EDTx84.json b/site/controls/Timb_Power switch 01EDTx84.json
new file mode 100644
index 0000000..c90df1e
--- /dev/null
+++ b/site/controls/Timb_Power switch 01EDTx84.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 84, "ctltype": 2, "fn": "Timb_Power switch 01EDTx84.png", "cellw": 56} \ No newline at end of file
diff --git a/site/controls/Timb_Power switch 01EDTx84.png b/site/controls/Timb_Power switch 01EDTx84.png
new file mode 100644
index 0000000..ddb1f07
--- /dev/null
+++ b/site/controls/Timb_Power switch 01EDTx84.png
Binary files differ
diff --git a/site/controls/Timb_PtchWhlPITCH_28-97fr-ok.json b/site/controls/Timb_PtchWhlPITCH_28-97fr-ok.json
new file mode 100644
index 0000000..eaad010
--- /dev/null
+++ b/site/controls/Timb_PtchWhlPITCH_28-97fr-ok.json
@@ -0,0 +1 @@
+{"frames": 97, "cellh": 28, "ctltype": 0, "fn": "Timb_PtchWhlPITCH_28-97fr-ok.png"} \ No newline at end of file
diff --git a/site/controls/Timb_PtchWhlPITCH_28-97fr-ok.png b/site/controls/Timb_PtchWhlPITCH_28-97fr-ok.png
new file mode 100644
index 0000000..01f1b20
--- /dev/null
+++ b/site/controls/Timb_PtchWhlPITCH_28-97fr-ok.png
Binary files differ
diff --git a/site/controls/Timb_Q3-128129.json b/site/controls/Timb_Q3-128129.json
new file mode 100644
index 0000000..ca0612e
--- /dev/null
+++ b/site/controls/Timb_Q3-128129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 128, "ctltype": 3, "fn": "Timb_Q3-128129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Q3-128129.png b/site/controls/Timb_Q3-128129.png
new file mode 100644
index 0000000..a61d5ff
--- /dev/null
+++ b/site/controls/Timb_Q3-128129.png
Binary files differ
diff --git a/site/controls/Timb_RC-1-MUTE.json b/site/controls/Timb_RC-1-MUTE.json
new file mode 100644
index 0000000..abb73e1
--- /dev/null
+++ b/site/controls/Timb_RC-1-MUTE.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_RC-1-MUTE.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_RC-1-MUTE.png b/site/controls/Timb_RC-1-MUTE.png
new file mode 100644
index 0000000..1d25e35
--- /dev/null
+++ b/site/controls/Timb_RC-1-MUTE.png
Binary files differ
diff --git a/site/controls/Timb_RC-1-SOLO.json b/site/controls/Timb_RC-1-SOLO.json
new file mode 100644
index 0000000..96ad62c
--- /dev/null
+++ b/site/controls/Timb_RC-1-SOLO.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_RC-1-SOLO.png"} \ No newline at end of file
diff --git a/site/controls/Timb_RC-1-SOLO.png b/site/controls/Timb_RC-1-SOLO.png
new file mode 100644
index 0000000..09aa565
--- /dev/null
+++ b/site/controls/Timb_RC-1-SOLO.png
Binary files differ
diff --git a/site/controls/Timb_REA Render To Disk.json b/site/controls/Timb_REA Render To Disk.json
new file mode 100644
index 0000000..99e5b76
--- /dev/null
+++ b/site/controls/Timb_REA Render To Disk.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_REA Render To Disk.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/Timb_REA Render To Disk.png b/site/controls/Timb_REA Render To Disk.png
new file mode 100644
index 0000000..1d6f920
--- /dev/null
+++ b/site/controls/Timb_REA Render To Disk.png
Binary files differ
diff --git a/site/controls/Timb_REAPER_128-128fr.json b/site/controls/Timb_REAPER_128-128fr.json
new file mode 100644
index 0000000..44beaf7
--- /dev/null
+++ b/site/controls/Timb_REAPER_128-128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 128, "ctltype": 0, "fn": "Timb_REAPER_128-128fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_REAPER_128-128fr.png b/site/controls/Timb_REAPER_128-128fr.png
new file mode 100644
index 0000000..1de648e
--- /dev/null
+++ b/site/controls/Timb_REAPER_128-128fr.png
Binary files differ
diff --git a/site/controls/Timb_ReaDelay-01(32x16-101).json b/site/controls/Timb_ReaDelay-01(32x16-101).json
new file mode 100644
index 0000000..277dfe0
--- /dev/null
+++ b/site/controls/Timb_ReaDelay-01(32x16-101).json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 16, "ctltype": 3, "fn": "Timb_ReaDelay-01(32x16-101).png"} \ No newline at end of file
diff --git a/site/controls/Timb_ReaDelay-01(32x16-101).png b/site/controls/Timb_ReaDelay-01(32x16-101).png
new file mode 100644
index 0000000..135af9a
--- /dev/null
+++ b/site/controls/Timb_ReaDelay-01(32x16-101).png
Binary files differ
diff --git a/site/controls/Timb_RolandSH101Wood_(108-129).json b/site/controls/Timb_RolandSH101Wood_(108-129).json
new file mode 100644
index 0000000..9b8609f
--- /dev/null
+++ b/site/controls/Timb_RolandSH101Wood_(108-129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 108, "ctltype": 1, "fn": "Timb_RolandSH101Wood_(108-129).png"} \ No newline at end of file
diff --git a/site/controls/Timb_RolandSH101Wood_(108-129).png b/site/controls/Timb_RolandSH101Wood_(108-129).png
new file mode 100644
index 0000000..fd8cafd
--- /dev/null
+++ b/site/controls/Timb_RolandSH101Wood_(108-129).png
Binary files differ
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_32129.json b/site/controls/Timb_SIDECHAIN_knobmed_32129.json
new file mode 100644
index 0000000..f1f5da5
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_32129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 32, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_32129.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_32129.png b/site/controls/Timb_SIDECHAIN_knobmed_32129.png
new file mode 100644
index 0000000..7802358
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_32129.png
Binary files differ
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_32129green.json b/site/controls/Timb_SIDECHAIN_knobmed_32129green.json
new file mode 100644
index 0000000..98cc247
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_32129green.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 32, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_32129green.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_32129green.png b/site/controls/Timb_SIDECHAIN_knobmed_32129green.png
new file mode 100644
index 0000000..9fecd04
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_32129green.png
Binary files differ
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_48129.json b/site/controls/Timb_SIDECHAIN_knobmed_48129.json
new file mode 100644
index 0000000..460b3b3
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_48129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_48129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_48129.png b/site/controls/Timb_SIDECHAIN_knobmed_48129.png
new file mode 100644
index 0000000..ee6128b
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_48129.png
Binary files differ
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_48129Ornge.json b/site/controls/Timb_SIDECHAIN_knobmed_48129Ornge.json
new file mode 100644
index 0000000..545960a
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_48129Ornge.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_48129Ornge.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_48129Ornge.png b/site/controls/Timb_SIDECHAIN_knobmed_48129Ornge.png
new file mode 100644
index 0000000..3bc8e59
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_48129Ornge.png
Binary files differ
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_56129.json b/site/controls/Timb_SIDECHAIN_knobmed_56129.json
new file mode 100644
index 0000000..3feff9a
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_56129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 56, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_56129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SIDECHAIN_knobmed_56129.png b/site/controls/Timb_SIDECHAIN_knobmed_56129.png
new file mode 100644
index 0000000..b51157e
--- /dev/null
+++ b/site/controls/Timb_SIDECHAIN_knobmed_56129.png
Binary files differ
diff --git a/site/controls/Timb_SQUARE_16x16-128_Black.json b/site/controls/Timb_SQUARE_16x16-128_Black.json
new file mode 100644
index 0000000..2821f38
--- /dev/null
+++ b/site/controls/Timb_SQUARE_16x16-128_Black.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_SQUARE_16x16-128_Black.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_SQUARE_16x16-128_Black.png b/site/controls/Timb_SQUARE_16x16-128_Black.png
new file mode 100644
index 0000000..7cc8076
--- /dev/null
+++ b/site/controls/Timb_SQUARE_16x16-128_Black.png
Binary files differ
diff --git a/site/controls/Timb_SQUARE_16x16-128_Grey.json b/site/controls/Timb_SQUARE_16x16-128_Grey.json
new file mode 100644
index 0000000..81e1973
--- /dev/null
+++ b/site/controls/Timb_SQUARE_16x16-128_Grey.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_SQUARE_16x16-128_Grey.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_SQUARE_16x16-128_Grey.png b/site/controls/Timb_SQUARE_16x16-128_Grey.png
new file mode 100644
index 0000000..650ae19
--- /dev/null
+++ b/site/controls/Timb_SQUARE_16x16-128_Grey.png
Binary files differ
diff --git a/site/controls/Timb_SQUARE_16x16-128_Purple.json b/site/controls/Timb_SQUARE_16x16-128_Purple.json
new file mode 100644
index 0000000..1e45461
--- /dev/null
+++ b/site/controls/Timb_SQUARE_16x16-128_Purple.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_SQUARE_16x16-128_Purple.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_SQUARE_16x16-128_Purple.png b/site/controls/Timb_SQUARE_16x16-128_Purple.png
new file mode 100644
index 0000000..1243d54
--- /dev/null
+++ b/site/controls/Timb_SQUARE_16x16-128_Purple.png
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-001.PNG b/site/controls/Timb_SSpot2018Control-001.PNG
new file mode 100644
index 0000000..c7b8f5f
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-001.PNG
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-001.json b/site/controls/Timb_SSpot2018Control-001.json
new file mode 100644
index 0000000..bf16aaf
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-001.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_SSpot2018Control-001.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-001b.json b/site/controls/Timb_SSpot2018Control-001b.json
new file mode 100644
index 0000000..310df7f
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-001b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_SSpot2018Control-001b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-001b.png b/site/controls/Timb_SSpot2018Control-001b.png
new file mode 100644
index 0000000..d6715bf
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-001b.png
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-002.PNG b/site/controls/Timb_SSpot2018Control-002.PNG
new file mode 100644
index 0000000..83e0d92
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-002.PNG
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-002.json b/site/controls/Timb_SSpot2018Control-002.json
new file mode 100644
index 0000000..364ef55
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-002.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 30, "ctltype": 2, "fn": "Timb_SSpot2018Control-002.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-002b.json b/site/controls/Timb_SSpot2018Control-002b.json
new file mode 100644
index 0000000..cbb2bc5
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-002b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 30, "ctltype": 2, "fn": "Timb_SSpot2018Control-002b.png", "cellw": 61} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-002b.png b/site/controls/Timb_SSpot2018Control-002b.png
new file mode 100644
index 0000000..658b882
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-002b.png
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-003.PNG b/site/controls/Timb_SSpot2018Control-003.PNG
new file mode 100644
index 0000000..1ba2aa7
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-003.PNG
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-003.json b/site/controls/Timb_SSpot2018Control-003.json
new file mode 100644
index 0000000..f1b1699
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-003.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 30, "ctltype": 2, "fn": "Timb_SSpot2018Control-003.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-004.PNG b/site/controls/Timb_SSpot2018Control-004.PNG
new file mode 100644
index 0000000..b892dac
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-004.PNG
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-004.json b/site/controls/Timb_SSpot2018Control-004.json
new file mode 100644
index 0000000..cc4ffb3
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-004.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 103, "ctltype": 0, "fn": "Timb_SSpot2018Control-004.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-005.PNG b/site/controls/Timb_SSpot2018Control-005.PNG
new file mode 100644
index 0000000..d71f247
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-005.PNG
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-005.json b/site/controls/Timb_SSpot2018Control-005.json
new file mode 100644
index 0000000..73919bf
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-005.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 39, "ctltype": 0, "fn": "Timb_SSpot2018Control-005.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-006.PNG b/site/controls/Timb_SSpot2018Control-006.PNG
new file mode 100644
index 0000000..a4ee776
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-006.PNG
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-006.json b/site/controls/Timb_SSpot2018Control-006.json
new file mode 100644
index 0000000..f6d97a0
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-006.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 58, "ctltype": 0, "fn": "Timb_SSpot2018Control-006.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-007.PNG b/site/controls/Timb_SSpot2018Control-007.PNG
new file mode 100644
index 0000000..dd4b984
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-007.PNG
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-007.json b/site/controls/Timb_SSpot2018Control-007.json
new file mode 100644
index 0000000..3437e9f
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-007.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 58, "ctltype": 0, "fn": "Timb_SSpot2018Control-007.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-008.json b/site/controls/Timb_SSpot2018Control-008.json
new file mode 100644
index 0000000..a7bfea5
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-008.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SSpot2018Control-008.png", "cellw": 14} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-008.png b/site/controls/Timb_SSpot2018Control-008.png
new file mode 100644
index 0000000..9ac5230
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-008.png
Binary files differ
diff --git a/site/controls/Timb_SSpot2018Control-009.json b/site/controls/Timb_SSpot2018Control-009.json
new file mode 100644
index 0000000..7dcd605
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-009.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SSpot2018Control-009.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SSpot2018Control-009.png b/site/controls/Timb_SSpot2018Control-009.png
new file mode 100644
index 0000000..f014b60
--- /dev/null
+++ b/site/controls/Timb_SSpot2018Control-009.png
Binary files differ
diff --git a/site/controls/Timb_STLN_Slider-001_2486-128.json b/site/controls/Timb_STLN_Slider-001_2486-128.json
new file mode 100644
index 0000000..2d67b72
--- /dev/null
+++ b/site/controls/Timb_STLN_Slider-001_2486-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 86, "ctltype": 1, "fn": "Timb_STLN_Slider-001_2486-128.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_STLN_Slider-001_2486-128.png b/site/controls/Timb_STLN_Slider-001_2486-128.png
new file mode 100644
index 0000000..e3a3795
--- /dev/null
+++ b/site/controls/Timb_STLN_Slider-001_2486-128.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129).json b/site/controls/Timb_SendBOX-PAN_(16-129).json
new file mode 100644
index 0000000..3008195
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129).png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129).png b/site/controls/Timb_SendBOX-PAN_(16-129).png
new file mode 100644
index 0000000..0fd120c
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129).png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)bloo.json b/site/controls/Timb_SendBOX-PAN_(16-129)bloo.json
new file mode 100644
index 0000000..1056eb0
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)bloo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)bloo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)bloo.png b/site/controls/Timb_SendBOX-PAN_(16-129)bloo.png
new file mode 100644
index 0000000..244b61c
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)bloo.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)brwn.json b/site/controls/Timb_SendBOX-PAN_(16-129)brwn.json
new file mode 100644
index 0000000..91e8a6e
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)brwn.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)brwn.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)brwn.png b/site/controls/Timb_SendBOX-PAN_(16-129)brwn.png
new file mode 100644
index 0000000..6ea42f5
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)brwn.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)greys.json b/site/controls/Timb_SendBOX-PAN_(16-129)greys.json
new file mode 100644
index 0000000..1c168a4
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)greys.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)greys.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)greys.png b/site/controls/Timb_SendBOX-PAN_(16-129)greys.png
new file mode 100644
index 0000000..94b984c
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)greys.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)greys2.json b/site/controls/Timb_SendBOX-PAN_(16-129)greys2.json
new file mode 100644
index 0000000..03df0d0
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)greys2.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)greys2.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)greys2.png b/site/controls/Timb_SendBOX-PAN_(16-129)greys2.png
new file mode 100644
index 0000000..1bfc7ea
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)greys2.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)griin.json b/site/controls/Timb_SendBOX-PAN_(16-129)griin.json
new file mode 100644
index 0000000..edeeed2
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)griin.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)griin.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)griin.png b/site/controls/Timb_SendBOX-PAN_(16-129)griin.png
new file mode 100644
index 0000000..103ffff
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)griin.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)orange.json b/site/controls/Timb_SendBOX-PAN_(16-129)orange.json
new file mode 100644
index 0000000..6d479ee
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)orange.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)orange.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)orange.png b/site/controls/Timb_SendBOX-PAN_(16-129)orange.png
new file mode 100644
index 0000000..50da262
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)orange.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)puurp.json b/site/controls/Timb_SendBOX-PAN_(16-129)puurp.json
new file mode 100644
index 0000000..4bfc39d
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)puurp.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)puurp.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)puurp.png b/site/controls/Timb_SendBOX-PAN_(16-129)puurp.png
new file mode 100644
index 0000000..6aa0de9
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)puurp.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)puurpDrk.json b/site/controls/Timb_SendBOX-PAN_(16-129)puurpDrk.json
new file mode 100644
index 0000000..d34a1f6
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)puurpDrk.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)puurpDrk.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)puurpDrk.png b/site/controls/Timb_SendBOX-PAN_(16-129)puurpDrk.png
new file mode 100644
index 0000000..caeaec5
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)puurpDrk.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)redd.json b/site/controls/Timb_SendBOX-PAN_(16-129)redd.json
new file mode 100644
index 0000000..ef1baef
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)redd.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)redd.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)redd.png b/site/controls/Timb_SendBOX-PAN_(16-129)redd.png
new file mode 100644
index 0000000..41b4e05
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)redd.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)yello.json b/site/controls/Timb_SendBOX-PAN_(16-129)yello.json
new file mode 100644
index 0000000..5f745cc
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)yello.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)yello.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_(16-129)yello.png b/site/controls/Timb_SendBOX-PAN_(16-129)yello.png
new file mode 100644
index 0000000..b9597cb
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_(16-129)yello.png
Binary files differ
diff --git a/site/controls/Timb_SendBOX-PAN_PanMASTER_(16-129).json b/site/controls/Timb_SendBOX-PAN_PanMASTER_(16-129).json
new file mode 100644
index 0000000..ace0914
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_PanMASTER_(16-129).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_PanMASTER_(16-129).png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendBOX-PAN_PanMASTER_(16-129).png b/site/controls/Timb_SendBOX-PAN_PanMASTER_(16-129).png
new file mode 100644
index 0000000..e06f3be
--- /dev/null
+++ b/site/controls/Timb_SendBOX-PAN_PanMASTER_(16-129).png
Binary files differ
diff --git a/site/controls/Timb_SendSlider2_(32-129fr).json b/site/controls/Timb_SendSlider2_(32-129fr).json
new file mode 100644
index 0000000..26ed3c4
--- /dev/null
+++ b/site/controls/Timb_SendSlider2_(32-129fr).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 32, "ctltype": 1, "fn": "Timb_SendSlider2_(32-129fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendSlider2_(32-129fr).png b/site/controls/Timb_SendSlider2_(32-129fr).png
new file mode 100644
index 0000000..776ab91
--- /dev/null
+++ b/site/controls/Timb_SendSlider2_(32-129fr).png
Binary files differ
diff --git a/site/controls/Timb_SendSlider2b_(32-129fr).json b/site/controls/Timb_SendSlider2b_(32-129fr).json
new file mode 100644
index 0000000..b706c9b
--- /dev/null
+++ b/site/controls/Timb_SendSlider2b_(32-129fr).json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 32, "ctltype": 1, "fn": "Timb_SendSlider2b_(32-129fr).png"} \ No newline at end of file
diff --git a/site/controls/Timb_SendSlider2b_(32-129fr).png b/site/controls/Timb_SendSlider2b_(32-129fr).png
new file mode 100644
index 0000000..cf1bcda
--- /dev/null
+++ b/site/controls/Timb_SendSlider2b_(32-129fr).png
Binary files differ
diff --git a/site/controls/Timb_Shape-blooEDT-96128_bipo.json b/site/controls/Timb_Shape-blooEDT-96128_bipo.json
new file mode 100644
index 0000000..761c1b9
--- /dev/null
+++ b/site/controls/Timb_Shape-blooEDT-96128_bipo.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-blooEDT-96128_bipo.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_Shape-blooEDT-96128_bipo.png b/site/controls/Timb_Shape-blooEDT-96128_bipo.png
new file mode 100644
index 0000000..f1082d3
--- /dev/null
+++ b/site/controls/Timb_Shape-blooEDT-96128_bipo.png
Binary files differ
diff --git a/site/controls/Timb_Shape-blooEDT-96128_po.json b/site/controls/Timb_Shape-blooEDT-96128_po.json
new file mode 100644
index 0000000..452a9c2
--- /dev/null
+++ b/site/controls/Timb_Shape-blooEDT-96128_po.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-blooEDT-96128_po.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Shape-blooEDT-96128_po.png b/site/controls/Timb_Shape-blooEDT-96128_po.png
new file mode 100644
index 0000000..a9d3aeb
--- /dev/null
+++ b/site/controls/Timb_Shape-blooEDT-96128_po.png
Binary files differ
diff --git a/site/controls/Timb_Shape-greyEDT-96128_bipo.json b/site/controls/Timb_Shape-greyEDT-96128_bipo.json
new file mode 100644
index 0000000..a316b3a
--- /dev/null
+++ b/site/controls/Timb_Shape-greyEDT-96128_bipo.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-greyEDT-96128_bipo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Shape-greyEDT-96128_bipo.png b/site/controls/Timb_Shape-greyEDT-96128_bipo.png
new file mode 100644
index 0000000..fd3069d
--- /dev/null
+++ b/site/controls/Timb_Shape-greyEDT-96128_bipo.png
Binary files differ
diff --git a/site/controls/Timb_Shape-greyEDT-96128_po.json b/site/controls/Timb_Shape-greyEDT-96128_po.json
new file mode 100644
index 0000000..64e8363
--- /dev/null
+++ b/site/controls/Timb_Shape-greyEDT-96128_po.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-greyEDT-96128_po.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Shape-greyEDT-96128_po.png b/site/controls/Timb_Shape-greyEDT-96128_po.png
new file mode 100644
index 0000000..ea09092
--- /dev/null
+++ b/site/controls/Timb_Shape-greyEDT-96128_po.png
Binary files differ
diff --git a/site/controls/Timb_Shape-orangeEDT-96128_bipo.json b/site/controls/Timb_Shape-orangeEDT-96128_bipo.json
new file mode 100644
index 0000000..cae4742
--- /dev/null
+++ b/site/controls/Timb_Shape-orangeEDT-96128_bipo.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-orangeEDT-96128_bipo.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_Shape-orangeEDT-96128_bipo.png b/site/controls/Timb_Shape-orangeEDT-96128_bipo.png
new file mode 100644
index 0000000..d049b03
--- /dev/null
+++ b/site/controls/Timb_Shape-orangeEDT-96128_bipo.png
Binary files differ
diff --git a/site/controls/Timb_Shape-orangeEDT-96128_po.json b/site/controls/Timb_Shape-orangeEDT-96128_po.json
new file mode 100644
index 0000000..d545fde
--- /dev/null
+++ b/site/controls/Timb_Shape-orangeEDT-96128_po.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-orangeEDT-96128_po.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_Shape-orangeEDT-96128_po.png b/site/controls/Timb_Shape-orangeEDT-96128_po.png
new file mode 100644
index 0000000..9280cbb
--- /dev/null
+++ b/site/controls/Timb_Shape-orangeEDT-96128_po.png
Binary files differ
diff --git a/site/controls/Timb_Simple Color Frames-00-32-bloo.json b/site/controls/Timb_Simple Color Frames-00-32-bloo.json
new file mode 100644
index 0000000..9fa1e3d
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-00-32-bloo.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_Simple Color Frames-00-32-bloo.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Simple Color Frames-00-32-bloo.png b/site/controls/Timb_Simple Color Frames-00-32-bloo.png
new file mode 100644
index 0000000..1e77390
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-00-32-bloo.png
Binary files differ
diff --git a/site/controls/Timb_Simple Color Frames-00.json b/site/controls/Timb_Simple Color Frames-00.json
new file mode 100644
index 0000000..9190c55
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-00.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-00.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb_Simple Color Frames-00.png b/site/controls/Timb_Simple Color Frames-00.png
new file mode 100644
index 0000000..d273664
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-00.png
Binary files differ
diff --git a/site/controls/Timb_Simple Color Frames-00bb.json b/site/controls/Timb_Simple Color Frames-00bb.json
new file mode 100644
index 0000000..26966f2
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-00bb.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-00bb.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Simple Color Frames-00bb.png b/site/controls/Timb_Simple Color Frames-00bb.png
new file mode 100644
index 0000000..b248d32
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-00bb.png
Binary files differ
diff --git a/site/controls/Timb_Simple Color Frames-Black.json b/site/controls/Timb_Simple Color Frames-Black.json
new file mode 100644
index 0000000..792ce0c
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Black.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Black.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb_Simple Color Frames-Black.png b/site/controls/Timb_Simple Color Frames-Black.png
new file mode 100644
index 0000000..ece0928
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Black.png
Binary files differ
diff --git a/site/controls/Timb_Simple Color Frames-Green.json b/site/controls/Timb_Simple Color Frames-Green.json
new file mode 100644
index 0000000..d08ca2a
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Green.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Green.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Simple Color Frames-Green.png b/site/controls/Timb_Simple Color Frames-Green.png
new file mode 100644
index 0000000..3e8edc1
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Green.png
Binary files differ
diff --git a/site/controls/Timb_Simple Color Frames-Greenbb.json b/site/controls/Timb_Simple Color Frames-Greenbb.json
new file mode 100644
index 0000000..b8f76ec
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Greenbb.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Greenbb.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_Simple Color Frames-Greenbb.png b/site/controls/Timb_Simple Color Frames-Greenbb.png
new file mode 100644
index 0000000..d3d2158
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Greenbb.png
Binary files differ
diff --git a/site/controls/Timb_Simple Color Frames-Orange.json b/site/controls/Timb_Simple Color Frames-Orange.json
new file mode 100644
index 0000000..f6d98bf
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Orange.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Orange.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb_Simple Color Frames-Orange.png b/site/controls/Timb_Simple Color Frames-Orange.png
new file mode 100644
index 0000000..2ccc820
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Orange.png
Binary files differ
diff --git a/site/controls/Timb_Simple Color Frames-Orangebb.json b/site/controls/Timb_Simple Color Frames-Orangebb.json
new file mode 100644
index 0000000..59500dc
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Orangebb.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Orangebb.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_Simple Color Frames-Orangebb.png b/site/controls/Timb_Simple Color Frames-Orangebb.png
new file mode 100644
index 0000000..7c452fe
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Orangebb.png
Binary files differ
diff --git a/site/controls/Timb_Simple Color Frames-Red.json b/site/controls/Timb_Simple Color Frames-Red.json
new file mode 100644
index 0000000..3ae0413
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Red.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Red.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Simple Color Frames-Red.png b/site/controls/Timb_Simple Color Frames-Red.png
new file mode 100644
index 0000000..37efab9
--- /dev/null
+++ b/site/controls/Timb_Simple Color Frames-Red.png
Binary files differ
diff --git a/site/controls/Timb_SimpleFlat1_6496fr.json b/site/controls/Timb_SimpleFlat1_6496fr.json
new file mode 100644
index 0000000..1df0183
--- /dev/null
+++ b/site/controls/Timb_SimpleFlat1_6496fr.json
@@ -0,0 +1 @@
+{"frames": 96, "cellh": 64, "ctltype": 0, "fn": "Timb_SimpleFlat1_6496fr.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_SimpleFlat1_6496fr.png b/site/controls/Timb_SimpleFlat1_6496fr.png
new file mode 100644
index 0000000..3e7ac6f
--- /dev/null
+++ b/site/controls/Timb_SimpleFlat1_6496fr.png
Binary files differ
diff --git a/site/controls/Timb_Slider_Funktion_24150-129.json b/site/controls/Timb_Slider_Funktion_24150-129.json
new file mode 100644
index 0000000..8214258
--- /dev/null
+++ b/site/controls/Timb_Slider_Funktion_24150-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 150, "ctltype": 1, "fn": "Timb_Slider_Funktion_24150-129.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_Slider_Funktion_24150-129.png b/site/controls/Timb_Slider_Funktion_24150-129.png
new file mode 100644
index 0000000..84b1871
--- /dev/null
+++ b/site/controls/Timb_Slider_Funktion_24150-129.png
Binary files differ
diff --git a/site/controls/Timb_Slider_Rearth_20158-128.json b/site/controls/Timb_Slider_Rearth_20158-128.json
new file mode 100644
index 0000000..2ed7a11
--- /dev/null
+++ b/site/controls/Timb_Slider_Rearth_20158-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 158, "ctltype": 1, "fn": "Timb_Slider_Rearth_20158-128.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Slider_Rearth_20158-128.png b/site/controls/Timb_Slider_Rearth_20158-128.png
new file mode 100644
index 0000000..e17e271
--- /dev/null
+++ b/site/controls/Timb_Slider_Rearth_20158-128.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-0.json b/site/controls/Timb_SnowFXOnOff16WASD-0.json
new file mode 100644
index 0000000..5c84276
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-0.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-0.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-0.png b/site/controls/Timb_SnowFXOnOff16WASD-0.png
new file mode 100644
index 0000000..5cab1b9
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-0.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-1.json b/site/controls/Timb_SnowFXOnOff16WASD-1.json
new file mode 100644
index 0000000..ef1f8bb
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-1.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-1.png b/site/controls/Timb_SnowFXOnOff16WASD-1.png
new file mode 100644
index 0000000..1d9c2df
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-1.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-10.json b/site/controls/Timb_SnowFXOnOff16WASD-10.json
new file mode 100644
index 0000000..d3fca14
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-10.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-10.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-10.png b/site/controls/Timb_SnowFXOnOff16WASD-10.png
new file mode 100644
index 0000000..97d1b3b
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-10.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-11.json b/site/controls/Timb_SnowFXOnOff16WASD-11.json
new file mode 100644
index 0000000..49095b7
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-11.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-11.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-11.png b/site/controls/Timb_SnowFXOnOff16WASD-11.png
new file mode 100644
index 0000000..8dc79fc
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-11.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-12.json b/site/controls/Timb_SnowFXOnOff16WASD-12.json
new file mode 100644
index 0000000..c6204d3
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-12.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-12.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-12.png b/site/controls/Timb_SnowFXOnOff16WASD-12.png
new file mode 100644
index 0000000..3e9990b
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-12.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-13.json b/site/controls/Timb_SnowFXOnOff16WASD-13.json
new file mode 100644
index 0000000..29c96f8
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-13.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-13.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-13.png b/site/controls/Timb_SnowFXOnOff16WASD-13.png
new file mode 100644
index 0000000..6d45781
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-13.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-14.json b/site/controls/Timb_SnowFXOnOff16WASD-14.json
new file mode 100644
index 0000000..4b5a71f
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-14.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-14.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-14.png b/site/controls/Timb_SnowFXOnOff16WASD-14.png
new file mode 100644
index 0000000..430da4a
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-14.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-15.json b/site/controls/Timb_SnowFXOnOff16WASD-15.json
new file mode 100644
index 0000000..6a5656f
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-15.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-15.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-15.png b/site/controls/Timb_SnowFXOnOff16WASD-15.png
new file mode 100644
index 0000000..cb60dce
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-15.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-16.json b/site/controls/Timb_SnowFXOnOff16WASD-16.json
new file mode 100644
index 0000000..1bee4b4
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-16.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-16.png b/site/controls/Timb_SnowFXOnOff16WASD-16.png
new file mode 100644
index 0000000..c7fb561
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-16.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-17.json b/site/controls/Timb_SnowFXOnOff16WASD-17.json
new file mode 100644
index 0000000..c25e81b
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-17.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-17.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-17.png b/site/controls/Timb_SnowFXOnOff16WASD-17.png
new file mode 100644
index 0000000..3ce595a
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-17.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-18.json b/site/controls/Timb_SnowFXOnOff16WASD-18.json
new file mode 100644
index 0000000..5aeb47f
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-18.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-18.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-18.png b/site/controls/Timb_SnowFXOnOff16WASD-18.png
new file mode 100644
index 0000000..9277a7e
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-18.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-19.json b/site/controls/Timb_SnowFXOnOff16WASD-19.json
new file mode 100644
index 0000000..7cabae2
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-19.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-19.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-19.png b/site/controls/Timb_SnowFXOnOff16WASD-19.png
new file mode 100644
index 0000000..94b5b53
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-19.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-2.json b/site/controls/Timb_SnowFXOnOff16WASD-2.json
new file mode 100644
index 0000000..63ea8bc
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-2.png b/site/controls/Timb_SnowFXOnOff16WASD-2.png
new file mode 100644
index 0000000..3e28dea
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-2.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-3.json b/site/controls/Timb_SnowFXOnOff16WASD-3.json
new file mode 100644
index 0000000..9cd251b
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-3.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-3.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-3.png b/site/controls/Timb_SnowFXOnOff16WASD-3.png
new file mode 100644
index 0000000..2bf8cc8
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-3.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-4.json b/site/controls/Timb_SnowFXOnOff16WASD-4.json
new file mode 100644
index 0000000..cf0f3bb
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-4.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-4.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-4.png b/site/controls/Timb_SnowFXOnOff16WASD-4.png
new file mode 100644
index 0000000..4577894
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-4.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-5.json b/site/controls/Timb_SnowFXOnOff16WASD-5.json
new file mode 100644
index 0000000..89d1af7
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-5.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-5.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-5.png b/site/controls/Timb_SnowFXOnOff16WASD-5.png
new file mode 100644
index 0000000..d985d6e
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-5.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-6.json b/site/controls/Timb_SnowFXOnOff16WASD-6.json
new file mode 100644
index 0000000..a7102f0
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-6.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-6.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-6.png b/site/controls/Timb_SnowFXOnOff16WASD-6.png
new file mode 100644
index 0000000..ba47edf
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-6.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-7.json b/site/controls/Timb_SnowFXOnOff16WASD-7.json
new file mode 100644
index 0000000..77f4a4e
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-7.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-7.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-7.png b/site/controls/Timb_SnowFXOnOff16WASD-7.png
new file mode 100644
index 0000000..c75dd22
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-7.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-8.json b/site/controls/Timb_SnowFXOnOff16WASD-8.json
new file mode 100644
index 0000000..88ab95a
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-8.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-8.png", "cellw": 26} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-8.png b/site/controls/Timb_SnowFXOnOff16WASD-8.png
new file mode 100644
index 0000000..e2e2712
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-8.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-9.json b/site/controls/Timb_SnowFXOnOff16WASD-9.json
new file mode 100644
index 0000000..dd1b305
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-9.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-9.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff16WASD-9.png b/site/controls/Timb_SnowFXOnOff16WASD-9.png
new file mode 100644
index 0000000..298d16c
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff16WASD-9.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT.json b/site/controls/Timb_SnowFXOnOff_ UGGLT.json
new file mode 100644
index 0000000..b3f17e0
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT.png", "cellw": 88} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT.png b/site/controls/Timb_SnowFXOnOff_ UGGLT.png
new file mode 100644
index 0000000..4e580f9
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2.json b/site/controls/Timb_SnowFXOnOff_ UGGLT2.json
new file mode 100644
index 0000000..30afafd
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2.png b/site/controls/Timb_SnowFXOnOff_ UGGLT2.png
new file mode 100644
index 0000000..3f66108
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2b.json b/site/controls/Timb_SnowFXOnOff_ UGGLT2b.json
new file mode 100644
index 0000000..fb9063a
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2b.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2b.png b/site/controls/Timb_SnowFXOnOff_ UGGLT2b.png
new file mode 100644
index 0000000..4918e74
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2b.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2c.json b/site/controls/Timb_SnowFXOnOff_ UGGLT2c.json
new file mode 100644
index 0000000..f30f299
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2c.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2c.png b/site/controls/Timb_SnowFXOnOff_ UGGLT2c.png
new file mode 100644
index 0000000..d541654
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2c.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2c2.json b/site/controls/Timb_SnowFXOnOff_ UGGLT2c2.json
new file mode 100644
index 0000000..60979f5
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2c2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2c2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2c2.png b/site/controls/Timb_SnowFXOnOff_ UGGLT2c2.png
new file mode 100644
index 0000000..fd525cf
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2c2.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2c3.json b/site/controls/Timb_SnowFXOnOff_ UGGLT2c3.json
new file mode 100644
index 0000000..1845faa
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2c3.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2c3.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2c3.png b/site/controls/Timb_SnowFXOnOff_ UGGLT2c3.png
new file mode 100644
index 0000000..2862e2e
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2c3.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2c4.json b/site/controls/Timb_SnowFXOnOff_ UGGLT2c4.json
new file mode 100644
index 0000000..1eb2560
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2c4.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2c4.png", "cellw": 120} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2c4.png b/site/controls/Timb_SnowFXOnOff_ UGGLT2c4.png
new file mode 100644
index 0000000..8b5201d
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2c4.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2d.json b/site/controls/Timb_SnowFXOnOff_ UGGLT2d.json
new file mode 100644
index 0000000..37b3451
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2d.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2d.png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2d.png b/site/controls/Timb_SnowFXOnOff_ UGGLT2d.png
new file mode 100644
index 0000000..03043a0
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2d.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2db.json b/site/controls/Timb_SnowFXOnOff_ UGGLT2db.json
new file mode 100644
index 0000000..50a843a
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2db.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2db.png", "cellw": 80} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2db.png b/site/controls/Timb_SnowFXOnOff_ UGGLT2db.png
new file mode 100644
index 0000000..6fe6446
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2db.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2e.json b/site/controls/Timb_SnowFXOnOff_ UGGLT2e.json
new file mode 100644
index 0000000..615433c
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2e.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2e.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT2e.png b/site/controls/Timb_SnowFXOnOff_ UGGLT2e.png
new file mode 100644
index 0000000..67806de
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT2e.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT3.json b/site/controls/Timb_SnowFXOnOff_ UGGLT3.json
new file mode 100644
index 0000000..3f819e3
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT3.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT3.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_ UGGLT3.png b/site/controls/Timb_SnowFXOnOff_ UGGLT3.png
new file mode 100644
index 0000000..0c2e084
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_ UGGLT3.png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_(32x26).json b/site/controls/Timb_SnowFXOnOff_(32x26).json
new file mode 100644
index 0000000..76cb936
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_(32x26).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_(32x26).png"} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_(32x26).png b/site/controls/Timb_SnowFXOnOff_(32x26).png
new file mode 100644
index 0000000..71763ef
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_(32x26).png
Binary files differ
diff --git a/site/controls/Timb_SnowFXOnOff_(32x37).json b/site/controls/Timb_SnowFXOnOff_(32x37).json
new file mode 100644
index 0000000..a6d8356
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_(32x37).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_(32x37).png", "cellw": 37} \ No newline at end of file
diff --git a/site/controls/Timb_SnowFXOnOff_(32x37).png b/site/controls/Timb_SnowFXOnOff_(32x37).png
new file mode 100644
index 0000000..f2a93f0
--- /dev/null
+++ b/site/controls/Timb_SnowFXOnOff_(32x37).png
Binary files differ
diff --git a/site/controls/Timb_SpaceshipDelay_38129.json b/site/controls/Timb_SpaceshipDelay_38129.json
new file mode 100644
index 0000000..2f3bf09
--- /dev/null
+++ b/site/controls/Timb_SpaceshipDelay_38129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 38, "ctltype": 0, "fn": "Timb_SpaceshipDelay_38129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SpaceshipDelay_38129.png b/site/controls/Timb_SpaceshipDelay_38129.png
new file mode 100644
index 0000000..ef1c0eb
--- /dev/null
+++ b/site/controls/Timb_SpaceshipDelay_38129.png
Binary files differ
diff --git a/site/controls/Timb_SpaceshipDelay_64129.json b/site/controls/Timb_SpaceshipDelay_64129.json
new file mode 100644
index 0000000..69261c9
--- /dev/null
+++ b/site/controls/Timb_SpaceshipDelay_64129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_SpaceshipDelay_64129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_SpaceshipDelay_64129.png b/site/controls/Timb_SpaceshipDelay_64129.png
new file mode 100644
index 0000000..bb19ad8
--- /dev/null
+++ b/site/controls/Timb_SpaceshipDelay_64129.png
Binary files differ
diff --git a/site/controls/Timb_T-Master_knob_64101.json b/site/controls/Timb_T-Master_knob_64101.json
new file mode 100644
index 0000000..7268044
--- /dev/null
+++ b/site/controls/Timb_T-Master_knob_64101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 0, "fn": "Timb_T-Master_knob_64101.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_T-Master_knob_64101.png b/site/controls/Timb_T-Master_knob_64101.png
new file mode 100644
index 0000000..ce3d700
--- /dev/null
+++ b/site/controls/Timb_T-Master_knob_64101.png
Binary files differ
diff --git a/site/controls/Timb_TAKESWITCHER-(512)-01.json b/site/controls/Timb_TAKESWITCHER-(512)-01.json
new file mode 100644
index 0000000..c6cfa56
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHER-(512)-01.json
@@ -0,0 +1 @@
+{"frames": 512, "cellh": 32, "ctltype": 4, "fn": "Timb_TAKESWITCHER-(512)-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TAKESWITCHER-(512)-01.png b/site/controls/Timb_TAKESWITCHER-(512)-01.png
new file mode 100644
index 0000000..b34e4b8
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHER-(512)-01.png
Binary files differ
diff --git a/site/controls/Timb_TAKESWITCHER-(512)-02.json b/site/controls/Timb_TAKESWITCHER-(512)-02.json
new file mode 100644
index 0000000..8bed27c
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHER-(512)-02.json
@@ -0,0 +1 @@
+{"frames": 512, "cellh": 32, "ctltype": 4, "fn": "Timb_TAKESWITCHER-(512)-02.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TAKESWITCHER-(512)-02.png b/site/controls/Timb_TAKESWITCHER-(512)-02.png
new file mode 100644
index 0000000..da3e3a7
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHER-(512)-02.png
Binary files differ
diff --git a/site/controls/Timb_TAKESWITCHER-(512)-03.json b/site/controls/Timb_TAKESWITCHER-(512)-03.json
new file mode 100644
index 0000000..9a56e0c
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHER-(512)-03.json
@@ -0,0 +1 @@
+{"frames": 512, "cellh": 32, "ctltype": 4, "fn": "Timb_TAKESWITCHER-(512)-03.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TAKESWITCHER-(512)-03.png b/site/controls/Timb_TAKESWITCHER-(512)-03.png
new file mode 100644
index 0000000..d1a345a
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHER-(512)-03.png
Binary files differ
diff --git a/site/controls/Timb_TAKESWITCHER-(512)-bb-01.json b/site/controls/Timb_TAKESWITCHER-(512)-bb-01.json
new file mode 100644
index 0000000..1c3c062
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHER-(512)-bb-01.json
@@ -0,0 +1 @@
+{"frames": 512, "cellh": 16, "ctltype": 4, "fn": "Timb_TAKESWITCHER-(512)-bb-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TAKESWITCHER-(512)-bb-01.png b/site/controls/Timb_TAKESWITCHER-(512)-bb-01.png
new file mode 100644
index 0000000..fdaf03d
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHER-(512)-bb-01.png
Binary files differ
diff --git a/site/controls/Timb_TAKESWITCHERXXL_(22x200).json b/site/controls/Timb_TAKESWITCHERXXL_(22x200).json
new file mode 100644
index 0000000..be5412b
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHERXXL_(22x200).json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 22, "ctltype": 4, "fn": "Timb_TAKESWITCHERXXL_(22x200).png", "cellw": 160} \ No newline at end of file
diff --git a/site/controls/Timb_TAKESWITCHERXXL_(22x200).png b/site/controls/Timb_TAKESWITCHERXXL_(22x200).png
new file mode 100644
index 0000000..7e23185
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHERXXL_(22x200).png
Binary files differ
diff --git a/site/controls/Timb_TAKESWITCHERXXL_(28x200).json b/site/controls/Timb_TAKESWITCHERXXL_(28x200).json
new file mode 100644
index 0000000..9c27952
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHERXXL_(28x200).json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 28, "ctltype": 4, "fn": "Timb_TAKESWITCHERXXL_(28x200).png"} \ No newline at end of file
diff --git a/site/controls/Timb_TAKESWITCHERXXL_(28x200).png b/site/controls/Timb_TAKESWITCHERXXL_(28x200).png
new file mode 100644
index 0000000..73a91b6
--- /dev/null
+++ b/site/controls/Timb_TAKESWITCHERXXL_(28x200).png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-01.json b/site/controls/Timb_TDSHES_(24x129)-01.json
new file mode 100644
index 0000000..7949f2f
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-01.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-01.png b/site/controls/Timb_TDSHES_(24x129)-01.png
new file mode 100644
index 0000000..90e3636
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-01.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-02.json b/site/controls/Timb_TDSHES_(24x129)-02.json
new file mode 100644
index 0000000..23e1c03
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-02.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-02.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-02.png b/site/controls/Timb_TDSHES_(24x129)-02.png
new file mode 100644
index 0000000..4a02a90
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-02.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-03.json b/site/controls/Timb_TDSHES_(24x129)-03.json
new file mode 100644
index 0000000..af5e37e
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-03.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-03.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-03.png b/site/controls/Timb_TDSHES_(24x129)-03.png
new file mode 100644
index 0000000..2d96825
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-03.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-04.json b/site/controls/Timb_TDSHES_(24x129)-04.json
new file mode 100644
index 0000000..87d3c51
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-04.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-04.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-04.png b/site/controls/Timb_TDSHES_(24x129)-04.png
new file mode 100644
index 0000000..0ed8b34
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-04.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-05.json b/site/controls/Timb_TDSHES_(24x129)-05.json
new file mode 100644
index 0000000..c481218
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-05.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-05.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-05.png b/site/controls/Timb_TDSHES_(24x129)-05.png
new file mode 100644
index 0000000..91a0210
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-05.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-06.json b/site/controls/Timb_TDSHES_(24x129)-06.json
new file mode 100644
index 0000000..69d19ef
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-06.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-06.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-06.png b/site/controls/Timb_TDSHES_(24x129)-06.png
new file mode 100644
index 0000000..58c27c3
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-06.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-07.json b/site/controls/Timb_TDSHES_(24x129)-07.json
new file mode 100644
index 0000000..ab6e0d3
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-07.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-07.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-07.png b/site/controls/Timb_TDSHES_(24x129)-07.png
new file mode 100644
index 0000000..767b6b6
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-07.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-08.json b/site/controls/Timb_TDSHES_(24x129)-08.json
new file mode 100644
index 0000000..66c5f06
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-08.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-08.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-08.png b/site/controls/Timb_TDSHES_(24x129)-08.png
new file mode 100644
index 0000000..ba6eb07
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-08.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-09.json b/site/controls/Timb_TDSHES_(24x129)-09.json
new file mode 100644
index 0000000..c918094
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-09.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-09.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-09.png b/site/controls/Timb_TDSHES_(24x129)-09.png
new file mode 100644
index 0000000..b4e2045
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-09.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-10.json b/site/controls/Timb_TDSHES_(24x129)-10.json
new file mode 100644
index 0000000..1200205
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-10.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-10.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-10.png b/site/controls/Timb_TDSHES_(24x129)-10.png
new file mode 100644
index 0000000..b23644e
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-10.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-11.json b/site/controls/Timb_TDSHES_(24x129)-11.json
new file mode 100644
index 0000000..316e0c2
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-11.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-11.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-11.png b/site/controls/Timb_TDSHES_(24x129)-11.png
new file mode 100644
index 0000000..8eeaa42
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-11.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-12.json b/site/controls/Timb_TDSHES_(24x129)-12.json
new file mode 100644
index 0000000..29ddca9
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-12.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-12.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-12.png b/site/controls/Timb_TDSHES_(24x129)-12.png
new file mode 100644
index 0000000..669c6cd
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-12.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-13.json b/site/controls/Timb_TDSHES_(24x129)-13.json
new file mode 100644
index 0000000..4984d96
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-13.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-13.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-13.png b/site/controls/Timb_TDSHES_(24x129)-13.png
new file mode 100644
index 0000000..06209bf
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-13.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-14.json b/site/controls/Timb_TDSHES_(24x129)-14.json
new file mode 100644
index 0000000..f5c3a3a
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-14.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-14.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-14.png b/site/controls/Timb_TDSHES_(24x129)-14.png
new file mode 100644
index 0000000..c1cdf8e
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-14.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-15.json b/site/controls/Timb_TDSHES_(24x129)-15.json
new file mode 100644
index 0000000..9503c11
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-15.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-15.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-15.png b/site/controls/Timb_TDSHES_(24x129)-15.png
new file mode 100644
index 0000000..d556bf1
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-15.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-16.json b/site/controls/Timb_TDSHES_(24x129)-16.json
new file mode 100644
index 0000000..0e95f89
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-16.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-16.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-16.png b/site/controls/Timb_TDSHES_(24x129)-16.png
new file mode 100644
index 0000000..078c0e5
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-16.png
Binary files differ
diff --git a/site/controls/Timb_TDSHES_(24x129)-17.json b/site/controls/Timb_TDSHES_(24x129)-17.json
new file mode 100644
index 0000000..e5d76e7
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-17.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-17.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TDSHES_(24x129)-17.png b/site/controls/Timb_TDSHES_(24x129)-17.png
new file mode 100644
index 0000000..59ad5bb
--- /dev/null
+++ b/site/controls/Timb_TDSHES_(24x129)-17.png
Binary files differ
diff --git a/site/controls/Timb_TakeSwitcher2020-01.json b/site/controls/Timb_TakeSwitcher2020-01.json
new file mode 100644
index 0000000..096bb14
--- /dev/null
+++ b/site/controls/Timb_TakeSwitcher2020-01.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_TakeSwitcher2020-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_TakeSwitcher2020-01.png b/site/controls/Timb_TakeSwitcher2020-01.png
new file mode 100644
index 0000000..13e710f
--- /dev/null
+++ b/site/controls/Timb_TakeSwitcher2020-01.png
Binary files differ
diff --git a/site/controls/Timb_Tantra_AIMBUT16.json b/site/controls/Timb_Tantra_AIMBUT16.json
new file mode 100644
index 0000000..96a526b
--- /dev/null
+++ b/site/controls/Timb_Tantra_AIMBUT16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_AIMBUT16.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/Timb_Tantra_AIMBUT16.png b/site/controls/Timb_Tantra_AIMBUT16.png
new file mode 100644
index 0000000..f297610
--- /dev/null
+++ b/site/controls/Timb_Tantra_AIMBUT16.png
Binary files differ
diff --git a/site/controls/Timb_Tantra_AIMBUT16b.json b/site/controls/Timb_Tantra_AIMBUT16b.json
new file mode 100644
index 0000000..984fd3b
--- /dev/null
+++ b/site/controls/Timb_Tantra_AIMBUT16b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_AIMBUT16b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Tantra_AIMBUT16b.png b/site/controls/Timb_Tantra_AIMBUT16b.png
new file mode 100644
index 0000000..11265c7
--- /dev/null
+++ b/site/controls/Timb_Tantra_AIMBUT16b.png
Binary files differ
diff --git a/site/controls/Timb_Tantra_AIMBUT16c.json b/site/controls/Timb_Tantra_AIMBUT16c.json
new file mode 100644
index 0000000..2a7321f
--- /dev/null
+++ b/site/controls/Timb_Tantra_AIMBUT16c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_AIMBUT16c.png", "cellw": 15} \ No newline at end of file
diff --git a/site/controls/Timb_Tantra_AIMBUT16c.png b/site/controls/Timb_Tantra_AIMBUT16c.png
new file mode 100644
index 0000000..89c9576
--- /dev/null
+++ b/site/controls/Timb_Tantra_AIMBUT16c.png
Binary files differ
diff --git a/site/controls/Timb_Tantra_CLOSE23.json b/site/controls/Timb_Tantra_CLOSE23.json
new file mode 100644
index 0000000..46eabbb
--- /dev/null
+++ b/site/controls/Timb_Tantra_CLOSE23.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Timb_Tantra_CLOSE23.png", "cellw": 23} \ No newline at end of file
diff --git a/site/controls/Timb_Tantra_CLOSE23.png b/site/controls/Timb_Tantra_CLOSE23.png
new file mode 100644
index 0000000..5e3235a
--- /dev/null
+++ b/site/controls/Timb_Tantra_CLOSE23.png
Binary files differ
diff --git a/site/controls/Timb_Tantra_FXRND20.json b/site/controls/Timb_Tantra_FXRND20.json
new file mode 100644
index 0000000..209c27a
--- /dev/null
+++ b/site/controls/Timb_Tantra_FXRND20.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 4, "fn": "Timb_Tantra_FXRND20.png", "cellw": 22} \ No newline at end of file
diff --git a/site/controls/Timb_Tantra_FXRND20.png b/site/controls/Timb_Tantra_FXRND20.png
new file mode 100644
index 0000000..abfbd3f
--- /dev/null
+++ b/site/controls/Timb_Tantra_FXRND20.png
Binary files differ
diff --git a/site/controls/Timb_Tantra_MATRIXPB16.json b/site/controls/Timb_Tantra_MATRIXPB16.json
new file mode 100644
index 0000000..7ef6d52
--- /dev/null
+++ b/site/controls/Timb_Tantra_MATRIXPB16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_MATRIXPB16.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/Timb_Tantra_MATRIXPB16.png b/site/controls/Timb_Tantra_MATRIXPB16.png
new file mode 100644
index 0000000..bd606aa
--- /dev/null
+++ b/site/controls/Timb_Tantra_MATRIXPB16.png
Binary files differ
diff --git a/site/controls/Timb_Tantra_MODNEXBUT16.json b/site/controls/Timb_Tantra_MODNEXBUT16.json
new file mode 100644
index 0000000..3c93c5f
--- /dev/null
+++ b/site/controls/Timb_Tantra_MODNEXBUT16.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_MODNEXBUT16.png", "cellw": 46} \ No newline at end of file
diff --git a/site/controls/Timb_Tantra_MODNEXBUT16.png b/site/controls/Timb_Tantra_MODNEXBUT16.png
new file mode 100644
index 0000000..7bd00a4
--- /dev/null
+++ b/site/controls/Timb_Tantra_MODNEXBUT16.png
Binary files differ
diff --git a/site/controls/Timb_Tantra_MODNEXBUT16b.json b/site/controls/Timb_Tantra_MODNEXBUT16b.json
new file mode 100644
index 0000000..e99dc49
--- /dev/null
+++ b/site/controls/Timb_Tantra_MODNEXBUT16b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_MODNEXBUT16b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Tantra_MODNEXBUT16b.png b/site/controls/Timb_Tantra_MODNEXBUT16b.png
new file mode 100644
index 0000000..29aeb19
--- /dev/null
+++ b/site/controls/Timb_Tantra_MODNEXBUT16b.png
Binary files differ
diff --git a/site/controls/Timb_Tantra_POWSW25.json b/site/controls/Timb_Tantra_POWSW25.json
new file mode 100644
index 0000000..8222b9f
--- /dev/null
+++ b/site/controls/Timb_Tantra_POWSW25.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 25, "ctltype": 2, "fn": "Timb_Tantra_POWSW25.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Tantra_POWSW25.png b/site/controls/Timb_Tantra_POWSW25.png
new file mode 100644
index 0000000..8556b2e
--- /dev/null
+++ b/site/controls/Timb_Tantra_POWSW25.png
Binary files differ
diff --git a/site/controls/Timb_Transparent01_(18x40-128).json b/site/controls/Timb_Transparent01_(18x40-128).json
new file mode 100644
index 0000000..eb1c372
--- /dev/null
+++ b/site/controls/Timb_Transparent01_(18x40-128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 18, "ctltype": 1, "fn": "Timb_Transparent01_(18x40-128).png"} \ No newline at end of file
diff --git a/site/controls/Timb_Transparent01_(18x40-128).png b/site/controls/Timb_Transparent01_(18x40-128).png
new file mode 100644
index 0000000..4ad60ec
--- /dev/null
+++ b/site/controls/Timb_Transparent01_(18x40-128).png
Binary files differ
diff --git a/site/controls/Timb_Transparent01_(18x64-128).json b/site/controls/Timb_Transparent01_(18x64-128).json
new file mode 100644
index 0000000..c4f824b
--- /dev/null
+++ b/site/controls/Timb_Transparent01_(18x64-128).json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 18, "ctltype": 1, "fn": "Timb_Transparent01_(18x64-128).png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_Transparent01_(18x64-128).png b/site/controls/Timb_Transparent01_(18x64-128).png
new file mode 100644
index 0000000..b6d5f47
--- /dev/null
+++ b/site/controls/Timb_Transparent01_(18x64-128).png
Binary files differ
diff --git a/site/controls/Timb_UVI FALCON2020-01.json b/site/controls/Timb_UVI FALCON2020-01.json
new file mode 100644
index 0000000..01efaaa
--- /dev/null
+++ b/site/controls/Timb_UVI FALCON2020-01.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 4, "fn": "Timb_UVI FALCON2020-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UVI FALCON2020-01.png b/site/controls/Timb_UVI FALCON2020-01.png
new file mode 100644
index 0000000..8255463
--- /dev/null
+++ b/site/controls/Timb_UVI FALCON2020-01.png
Binary files differ
diff --git a/site/controls/Timb_UVI FALCON2020-01b.json b/site/controls/Timb_UVI FALCON2020-01b.json
new file mode 100644
index 0000000..0530eda
--- /dev/null
+++ b/site/controls/Timb_UVI FALCON2020-01b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 4, "fn": "Timb_UVI FALCON2020-01b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UVI FALCON2020-01b.png b/site/controls/Timb_UVI FALCON2020-01b.png
new file mode 100644
index 0000000..7173a87
--- /dev/null
+++ b/site/controls/Timb_UVI FALCON2020-01b.png
Binary files differ
diff --git a/site/controls/Timb_UVIButton122.json b/site/controls/Timb_UVIButton122.json
new file mode 100644
index 0000000..17a41ef
--- /dev/null
+++ b/site/controls/Timb_UVIButton122.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_UVIButton122.png", "cellw": 22} \ No newline at end of file
diff --git a/site/controls/Timb_UVIButton122.png b/site/controls/Timb_UVIButton122.png
new file mode 100644
index 0000000..ffb9d8b
--- /dev/null
+++ b/site/controls/Timb_UVIButton122.png
Binary files differ
diff --git a/site/controls/Timb_UVIButton222.json b/site/controls/Timb_UVIButton222.json
new file mode 100644
index 0000000..b2fa1c8
--- /dev/null
+++ b/site/controls/Timb_UVIButton222.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_UVIButton222.png", "cellw": 22} \ No newline at end of file
diff --git a/site/controls/Timb_UVIButton222.png b/site/controls/Timb_UVIButton222.png
new file mode 100644
index 0000000..5af8788
--- /dev/null
+++ b/site/controls/Timb_UVIButton222.png
Binary files differ
diff --git a/site/controls/Timb_UVIxXxlose.json b/site/controls/Timb_UVIxXxlose.json
new file mode 100644
index 0000000..9f28092
--- /dev/null
+++ b/site/controls/Timb_UVIxXxlose.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_UVIxXxlose.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_UVIxXxlose.png b/site/controls/Timb_UVIxXxlose.png
new file mode 100644
index 0000000..5001100
--- /dev/null
+++ b/site/controls/Timb_UVIxXxlose.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-01.json b/site/controls/Timb_UpDownArw-01.json
new file mode 100644
index 0000000..df9fb14
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-01.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-01.png b/site/controls/Timb_UpDownArw-01.png
new file mode 100644
index 0000000..2a60552
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-01.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-02.json b/site/controls/Timb_UpDownArw-02.json
new file mode 100644
index 0000000..c7210a4
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-02.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-02.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-02.png b/site/controls/Timb_UpDownArw-02.png
new file mode 100644
index 0000000..9091fe7
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-02.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-03.json b/site/controls/Timb_UpDownArw-03.json
new file mode 100644
index 0000000..d37d464
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-03.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-03.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-03.png b/site/controls/Timb_UpDownArw-03.png
new file mode 100644
index 0000000..63173f6
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-03.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-03b.json b/site/controls/Timb_UpDownArw-03b.json
new file mode 100644
index 0000000..2a29020
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-03b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-03b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-03b.png b/site/controls/Timb_UpDownArw-03b.png
new file mode 100644
index 0000000..dcef749
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-03b.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-04.json b/site/controls/Timb_UpDownArw-04.json
new file mode 100644
index 0000000..285e703
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-04.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-04.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-04.png b/site/controls/Timb_UpDownArw-04.png
new file mode 100644
index 0000000..94e661d
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-04.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-05.json b/site/controls/Timb_UpDownArw-05.json
new file mode 100644
index 0000000..a5d8179
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-05.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-05.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-05.png b/site/controls/Timb_UpDownArw-05.png
new file mode 100644
index 0000000..4d9890e
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-05.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-05b.json b/site/controls/Timb_UpDownArw-05b.json
new file mode 100644
index 0000000..f2b66db
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-05b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-05b.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-05b.png b/site/controls/Timb_UpDownArw-05b.png
new file mode 100644
index 0000000..924e429
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-05b.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-06.json b/site/controls/Timb_UpDownArw-06.json
new file mode 100644
index 0000000..c2019a0
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-06.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-06.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-06.png b/site/controls/Timb_UpDownArw-06.png
new file mode 100644
index 0000000..6f7c498
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-06.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-07.json b/site/controls/Timb_UpDownArw-07.json
new file mode 100644
index 0000000..9cabf45
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-07.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-07.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-07.png b/site/controls/Timb_UpDownArw-07.png
new file mode 100644
index 0000000..05e84c3
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-07.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-08.json b/site/controls/Timb_UpDownArw-08.json
new file mode 100644
index 0000000..3aecdce
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-08.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-08.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-08.png b/site/controls/Timb_UpDownArw-08.png
new file mode 100644
index 0000000..65a67c4
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-08.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-09.json b/site/controls/Timb_UpDownArw-09.json
new file mode 100644
index 0000000..ffca6ee
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-09.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-09.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-09.png b/site/controls/Timb_UpDownArw-09.png
new file mode 100644
index 0000000..8a51811
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-09.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-11.json b/site/controls/Timb_UpDownArw-11.json
new file mode 100644
index 0000000..770cbb2
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-11.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-11.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-11.png b/site/controls/Timb_UpDownArw-11.png
new file mode 100644
index 0000000..ae86641
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-11.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-13.json b/site/controls/Timb_UpDownArw-13.json
new file mode 100644
index 0000000..b10e28d
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-13.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-13.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-13.png b/site/controls/Timb_UpDownArw-13.png
new file mode 100644
index 0000000..84e80ab
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-13.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-14a.json b/site/controls/Timb_UpDownArw-14a.json
new file mode 100644
index 0000000..0666b99
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-14a.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 94, "ctltype": 4, "fn": "Timb_UpDownArw-14a.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-14a.png b/site/controls/Timb_UpDownArw-14a.png
new file mode 100644
index 0000000..48a6f16
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-14a.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-14b.json b/site/controls/Timb_UpDownArw-14b.json
new file mode 100644
index 0000000..f92bf3e
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-14b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 94, "ctltype": 4, "fn": "Timb_UpDownArw-14b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-14b.png b/site/controls/Timb_UpDownArw-14b.png
new file mode 100644
index 0000000..3577250
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-14b.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-15a.json b/site/controls/Timb_UpDownArw-15a.json
new file mode 100644
index 0000000..0bb1618
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15a.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15a.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-15a.png b/site/controls/Timb_UpDownArw-15a.png
new file mode 100644
index 0000000..2158585
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15a.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-15b.json b/site/controls/Timb_UpDownArw-15b.json
new file mode 100644
index 0000000..b225042
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15b.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-15b.png b/site/controls/Timb_UpDownArw-15b.png
new file mode 100644
index 0000000..f5b307f
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15b.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-15c.json b/site/controls/Timb_UpDownArw-15c.json
new file mode 100644
index 0000000..b51958a
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15c.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-15c.png b/site/controls/Timb_UpDownArw-15c.png
new file mode 100644
index 0000000..58c8d23
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15c.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-15d.json b/site/controls/Timb_UpDownArw-15d.json
new file mode 100644
index 0000000..3ea2864
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15d.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-15d.png b/site/controls/Timb_UpDownArw-15d.png
new file mode 100644
index 0000000..492d547
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15d.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-15e.json b/site/controls/Timb_UpDownArw-15e.json
new file mode 100644
index 0000000..bb4931d
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15e.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15e.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-15e.png b/site/controls/Timb_UpDownArw-15e.png
new file mode 100644
index 0000000..3d00b05
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-15e.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-16a.json b/site/controls/Timb_UpDownArw-16a.json
new file mode 100644
index 0000000..61b4b2e
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-16a.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-16a.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-16a.png b/site/controls/Timb_UpDownArw-16a.png
new file mode 100644
index 0000000..826a9c0
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-16a.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-16aWASD.json b/site/controls/Timb_UpDownArw-16aWASD.json
new file mode 100644
index 0000000..8bb9434
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-16aWASD.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-16aWASD.png", "cellw": 352} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-16aWASD.png b/site/controls/Timb_UpDownArw-16aWASD.png
new file mode 100644
index 0000000..a5ae4a7
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-16aWASD.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-16b.json b/site/controls/Timb_UpDownArw-16b.json
new file mode 100644
index 0000000..bb7289a
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-16b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-16b.png", "cellw": 256} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-16b.png b/site/controls/Timb_UpDownArw-16b.png
new file mode 100644
index 0000000..1ee9c2a
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-16b.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-16bWASD.json b/site/controls/Timb_UpDownArw-16bWASD.json
new file mode 100644
index 0000000..b9439ce
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-16bWASD.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-16bWASD.png"} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-16bWASD.png b/site/controls/Timb_UpDownArw-16bWASD.png
new file mode 100644
index 0000000..0cdb411
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-16bWASD.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-17a.json b/site/controls/Timb_UpDownArw-17a.json
new file mode 100644
index 0000000..c10f428
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-17a.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 25, "ctltype": 4, "fn": "Timb_UpDownArw-17a.png", "cellw": 256} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-17a.png b/site/controls/Timb_UpDownArw-17a.png
new file mode 100644
index 0000000..fa4f085
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-17a.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-18a.json b/site/controls/Timb_UpDownArw-18a.json
new file mode 100644
index 0000000..4fe7dc1
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-18a.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 28, "ctltype": 4, "fn": "Timb_UpDownArw-18a.png", "cellw": 63} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-18a.png b/site/controls/Timb_UpDownArw-18a.png
new file mode 100644
index 0000000..800e984
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-18a.png
Binary files differ
diff --git a/site/controls/Timb_UpDownArw-19a.json b/site/controls/Timb_UpDownArw-19a.json
new file mode 100644
index 0000000..b5db06f
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-19a.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 24, "ctltype": 4, "fn": "Timb_UpDownArw-19a.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/Timb_UpDownArw-19a.png b/site/controls/Timb_UpDownArw-19a.png
new file mode 100644
index 0000000..802e974
--- /dev/null
+++ b/site/controls/Timb_UpDownArw-19a.png
Binary files differ
diff --git a/site/controls/Timb_VHLRM Slider-01 Electric Blue.json b/site/controls/Timb_VHLRM Slider-01 Electric Blue.json
new file mode 100644
index 0000000..8639375
--- /dev/null
+++ b/site/controls/Timb_VHLRM Slider-01 Electric Blue.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 106, "ctltype": 1, "fn": "Timb_VHLRM Slider-01 Electric Blue.png"} \ No newline at end of file
diff --git a/site/controls/Timb_VHLRM Slider-01 Electric Blue.png b/site/controls/Timb_VHLRM Slider-01 Electric Blue.png
new file mode 100644
index 0000000..033a78b
--- /dev/null
+++ b/site/controls/Timb_VHLRM Slider-01 Electric Blue.png
Binary files differ
diff --git a/site/controls/Timb_VHLRM Slider-01 Oldschool.json b/site/controls/Timb_VHLRM Slider-01 Oldschool.json
new file mode 100644
index 0000000..d08533a
--- /dev/null
+++ b/site/controls/Timb_VHLRM Slider-01 Oldschool.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 106, "ctltype": 1, "fn": "Timb_VHLRM Slider-01 Oldschool.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/Timb_VHLRM Slider-01 Oldschool.png b/site/controls/Timb_VHLRM Slider-01 Oldschool.png
new file mode 100644
index 0000000..c0aed5b
--- /dev/null
+++ b/site/controls/Timb_VHLRM Slider-01 Oldschool.png
Binary files differ
diff --git a/site/controls/Timb_Vogue_Blue_64-129.json b/site/controls/Timb_Vogue_Blue_64-129.json
new file mode 100644
index 0000000..c85057a
--- /dev/null
+++ b/site/controls/Timb_Vogue_Blue_64-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Blue_64-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Vogue_Blue_64-129.png b/site/controls/Timb_Vogue_Blue_64-129.png
new file mode 100644
index 0000000..ba02f20
--- /dev/null
+++ b/site/controls/Timb_Vogue_Blue_64-129.png
Binary files differ
diff --git a/site/controls/Timb_Vogue_Green_64-129.json b/site/controls/Timb_Vogue_Green_64-129.json
new file mode 100644
index 0000000..03ee59b
--- /dev/null
+++ b/site/controls/Timb_Vogue_Green_64-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Green_64-129.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_Vogue_Green_64-129.png b/site/controls/Timb_Vogue_Green_64-129.png
new file mode 100644
index 0000000..3726a8d
--- /dev/null
+++ b/site/controls/Timb_Vogue_Green_64-129.png
Binary files differ
diff --git a/site/controls/Timb_Vogue_Orange_64-129.json b/site/controls/Timb_Vogue_Orange_64-129.json
new file mode 100644
index 0000000..686e51e
--- /dev/null
+++ b/site/controls/Timb_Vogue_Orange_64-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Orange_64-129.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_Vogue_Orange_64-129.png b/site/controls/Timb_Vogue_Orange_64-129.png
new file mode 100644
index 0000000..c5cef23
--- /dev/null
+++ b/site/controls/Timb_Vogue_Orange_64-129.png
Binary files differ
diff --git a/site/controls/Timb_Vogue_Red_64-129.json b/site/controls/Timb_Vogue_Red_64-129.json
new file mode 100644
index 0000000..f843114
--- /dev/null
+++ b/site/controls/Timb_Vogue_Red_64-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Red_64-129.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Vogue_Red_64-129.png b/site/controls/Timb_Vogue_Red_64-129.png
new file mode 100644
index 0000000..dd3b4fb
--- /dev/null
+++ b/site/controls/Timb_Vogue_Red_64-129.png
Binary files differ
diff --git a/site/controls/Timb_Vogue_Yellow_64-129.json b/site/controls/Timb_Vogue_Yellow_64-129.json
new file mode 100644
index 0000000..286bf88
--- /dev/null
+++ b/site/controls/Timb_Vogue_Yellow_64-129.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Yellow_64-129.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_Vogue_Yellow_64-129.png b/site/controls/Timb_Vogue_Yellow_64-129.png
new file mode 100644
index 0000000..b557a5e
--- /dev/null
+++ b/site/controls/Timb_Vogue_Yellow_64-129.png
Binary files differ
diff --git a/site/controls/Timb_Vogue_Yellow_64-200.json b/site/controls/Timb_Vogue_Yellow_64-200.json
new file mode 100644
index 0000000..d346395
--- /dev/null
+++ b/site/controls/Timb_Vogue_Yellow_64-200.json
@@ -0,0 +1 @@
+{"frames": 200, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Yellow_64-200.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/Timb_Vogue_Yellow_64-200.png b/site/controls/Timb_Vogue_Yellow_64-200.png
new file mode 100644
index 0000000..6ddb840
--- /dev/null
+++ b/site/controls/Timb_Vogue_Yellow_64-200.png
Binary files differ
diff --git a/site/controls/Timb_WavesF6EQ_(32x130)2.json b/site/controls/Timb_WavesF6EQ_(32x130)2.json
new file mode 100644
index 0000000..34d1e84
--- /dev/null
+++ b/site/controls/Timb_WavesF6EQ_(32x130)2.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 32, "ctltype": 0, "fn": "Timb_WavesF6EQ_(32x130)2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_WavesF6EQ_(32x130)2.png b/site/controls/Timb_WavesF6EQ_(32x130)2.png
new file mode 100644
index 0000000..bc7fee1
--- /dev/null
+++ b/site/controls/Timb_WavesF6EQ_(32x130)2.png
Binary files differ
diff --git a/site/controls/Timb_WavesF6EQ_(64x130).json b/site/controls/Timb_WavesF6EQ_(64x130).json
new file mode 100644
index 0000000..ad722e6
--- /dev/null
+++ b/site/controls/Timb_WavesF6EQ_(64x130).json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb_WavesF6EQ_(64x130).png"} \ No newline at end of file
diff --git a/site/controls/Timb_WavesF6EQ_(64x130).png b/site/controls/Timb_WavesF6EQ_(64x130).png
new file mode 100644
index 0000000..8f3d5df
--- /dev/null
+++ b/site/controls/Timb_WavesF6EQ_(64x130).png
Binary files differ
diff --git a/site/controls/Timb_WavesF6EQ_(64x130)2.json b/site/controls/Timb_WavesF6EQ_(64x130)2.json
new file mode 100644
index 0000000..a5df3c8
--- /dev/null
+++ b/site/controls/Timb_WavesF6EQ_(64x130)2.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb_WavesF6EQ_(64x130)2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_WavesF6EQ_(64x130)2.png b/site/controls/Timb_WavesF6EQ_(64x130)2.png
new file mode 100644
index 0000000..a461648
--- /dev/null
+++ b/site/controls/Timb_WavesF6EQ_(64x130)2.png
Binary files differ
diff --git a/site/controls/Timb_WavesF6OnoFF(32).json b/site/controls/Timb_WavesF6OnoFF(32).json
new file mode 100644
index 0000000..0200c22
--- /dev/null
+++ b/site/controls/Timb_WavesF6OnoFF(32).json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_WavesF6OnoFF(32).png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_WavesF6OnoFF(32).png b/site/controls/Timb_WavesF6OnoFF(32).png
new file mode 100644
index 0000000..b5acf56
--- /dev/null
+++ b/site/controls/Timb_WavesF6OnoFF(32).png
Binary files differ
diff --git a/site/controls/Timb_WavesF6OnoFF(32)b.json b/site/controls/Timb_WavesF6OnoFF(32)b.json
new file mode 100644
index 0000000..0d0ad7c
--- /dev/null
+++ b/site/controls/Timb_WavesF6OnoFF(32)b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_WavesF6OnoFF(32)b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_WavesF6OnoFF(32)b.png b/site/controls/Timb_WavesF6OnoFF(32)b.png
new file mode 100644
index 0000000..b48ccfd
--- /dev/null
+++ b/site/controls/Timb_WavesF6OnoFF(32)b.png
Binary files differ
diff --git a/site/controls/Timb_WetDryBypassOffline-01.json b/site/controls/Timb_WetDryBypassOffline-01.json
new file mode 100644
index 0000000..86544ca
--- /dev/null
+++ b/site/controls/Timb_WetDryBypassOffline-01.json
@@ -0,0 +1 @@
+{"frames": 4, "cellh": 32, "ctltype": 2, "fn": "Timb_WetDryBypassOffline-01.png"} \ No newline at end of file
diff --git a/site/controls/Timb_WetDryBypassOffline-01.png b/site/controls/Timb_WetDryBypassOffline-01.png
new file mode 100644
index 0000000..5c3d5be
--- /dev/null
+++ b/site/controls/Timb_WetDryBypassOffline-01.png
Binary files differ
diff --git a/site/controls/Timb_WetDryBypassOffline-02.json b/site/controls/Timb_WetDryBypassOffline-02.json
new file mode 100644
index 0000000..37050d2
--- /dev/null
+++ b/site/controls/Timb_WetDryBypassOffline-02.json
@@ -0,0 +1 @@
+{"frames": 4, "cellh": 32, "ctltype": 2, "fn": "Timb_WetDryBypassOffline-02.png"} \ No newline at end of file
diff --git a/site/controls/Timb_WetDryBypassOffline-02.png b/site/controls/Timb_WetDryBypassOffline-02.png
new file mode 100644
index 0000000..730c6c4
--- /dev/null
+++ b/site/controls/Timb_WetDryBypassOffline-02.png
Binary files differ
diff --git a/site/controls/Timb_WetDryBypassOffline-03.json b/site/controls/Timb_WetDryBypassOffline-03.json
new file mode 100644
index 0000000..fbb6090
--- /dev/null
+++ b/site/controls/Timb_WetDryBypassOffline-03.json
@@ -0,0 +1 @@
+{"frames": 4, "cellh": 32, "ctltype": 2, "fn": "Timb_WetDryBypassOffline-03.png", "cellw": 160} \ No newline at end of file
diff --git a/site/controls/Timb_WetDryBypassOffline-03.png b/site/controls/Timb_WetDryBypassOffline-03.png
new file mode 100644
index 0000000..340190a
--- /dev/null
+++ b/site/controls/Timb_WetDryBypassOffline-03.png
Binary files differ
diff --git a/site/controls/Timb_XBaseKnob_68128.json b/site/controls/Timb_XBaseKnob_68128.json
new file mode 100644
index 0000000..4ab4db4
--- /dev/null
+++ b/site/controls/Timb_XBaseKnob_68128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 68, "ctltype": 0, "fn": "Timb_XBaseKnob_68128.png", "cellw": 68} \ No newline at end of file
diff --git a/site/controls/Timb_XBaseKnob_68128.png b/site/controls/Timb_XBaseKnob_68128.png
new file mode 100644
index 0000000..150f6d4
--- /dev/null
+++ b/site/controls/Timb_XBaseKnob_68128.png
Binary files differ
diff --git a/site/controls/Timb_Zyn32OnOff-1.json b/site/controls/Timb_Zyn32OnOff-1.json
new file mode 100644
index 0000000..fd6219d
--- /dev/null
+++ b/site/controls/Timb_Zyn32OnOff-1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_Zyn32OnOff-1.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Zyn32OnOff-1.png b/site/controls/Timb_Zyn32OnOff-1.png
new file mode 100644
index 0000000..5528cf3
--- /dev/null
+++ b/site/controls/Timb_Zyn32OnOff-1.png
Binary files differ
diff --git a/site/controls/Timb_Zyn32OnOff-2.json b/site/controls/Timb_Zyn32OnOff-2.json
new file mode 100644
index 0000000..ebb2d0e
--- /dev/null
+++ b/site/controls/Timb_Zyn32OnOff-2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_Zyn32OnOff-2.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Zyn32OnOff-2.png b/site/controls/Timb_Zyn32OnOff-2.png
new file mode 100644
index 0000000..88bc3c0
--- /dev/null
+++ b/site/controls/Timb_Zyn32OnOff-2.png
Binary files differ
diff --git a/site/controls/Timb_Zyn32OnOff-2b.json b/site/controls/Timb_Zyn32OnOff-2b.json
new file mode 100644
index 0000000..607e9da
--- /dev/null
+++ b/site/controls/Timb_Zyn32OnOff-2b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Zyn32OnOff-2b.png"} \ No newline at end of file
diff --git a/site/controls/Timb_Zyn32OnOff-2b.png b/site/controls/Timb_Zyn32OnOff-2b.png
new file mode 100644
index 0000000..efdd7b9
--- /dev/null
+++ b/site/controls/Timb_Zyn32OnOff-2b.png
Binary files differ
diff --git a/site/controls/Timb_boX08_Bloo.json b/site/controls/Timb_boX08_Bloo.json
new file mode 100644
index 0000000..71d9468
--- /dev/null
+++ b/site/controls/Timb_boX08_Bloo.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_boX08_Bloo.png", "cellw": 113} \ No newline at end of file
diff --git a/site/controls/Timb_boX08_Bloo.png b/site/controls/Timb_boX08_Bloo.png
new file mode 100644
index 0000000..4111165
--- /dev/null
+++ b/site/controls/Timb_boX08_Bloo.png
Binary files differ
diff --git a/site/controls/Timb_boX08_Green.json b/site/controls/Timb_boX08_Green.json
new file mode 100644
index 0000000..5cdae4b
--- /dev/null
+++ b/site/controls/Timb_boX08_Green.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_boX08_Green.png", "cellw": 113} \ No newline at end of file
diff --git a/site/controls/Timb_boX08_Green.png b/site/controls/Timb_boX08_Green.png
new file mode 100644
index 0000000..d915565
--- /dev/null
+++ b/site/controls/Timb_boX08_Green.png
Binary files differ
diff --git a/site/controls/Timb_boX08_Orange-b.json b/site/controls/Timb_boX08_Orange-b.json
new file mode 100644
index 0000000..8958af1
--- /dev/null
+++ b/site/controls/Timb_boX08_Orange-b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 15, "ctltype": 4, "fn": "Timb_boX08_Orange-b.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/Timb_boX08_Orange-b.png b/site/controls/Timb_boX08_Orange-b.png
new file mode 100644
index 0000000..b522350
--- /dev/null
+++ b/site/controls/Timb_boX08_Orange-b.png
Binary files differ
diff --git a/site/controls/Timb_boX08_Orange.json b/site/controls/Timb_boX08_Orange.json
new file mode 100644
index 0000000..a1da7e4
--- /dev/null
+++ b/site/controls/Timb_boX08_Orange.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_boX08_Orange.png"} \ No newline at end of file
diff --git a/site/controls/Timb_boX08_Orange.png b/site/controls/Timb_boX08_Orange.png
new file mode 100644
index 0000000..a3bf8ca
--- /dev/null
+++ b/site/controls/Timb_boX08_Orange.png
Binary files differ
diff --git a/site/controls/Timb_knob SFR 1_46101.json b/site/controls/Timb_knob SFR 1_46101.json
new file mode 100644
index 0000000..ad9fa91
--- /dev/null
+++ b/site/controls/Timb_knob SFR 1_46101.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 46, "ctltype": 0, "fn": "Timb_knob SFR 1_46101.png"} \ No newline at end of file
diff --git a/site/controls/Timb_knob SFR 1_46101.png b/site/controls/Timb_knob SFR 1_46101.png
new file mode 100644
index 0000000..81e80de
--- /dev/null
+++ b/site/controls/Timb_knob SFR 1_46101.png
Binary files differ
diff --git a/site/controls/Timb_knob verde osc danplug_96128fr.json b/site/controls/Timb_knob verde osc danplug_96128fr.json
new file mode 100644
index 0000000..988fa97
--- /dev/null
+++ b/site/controls/Timb_knob verde osc danplug_96128fr.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_knob verde osc danplug_96128fr.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/Timb_knob verde osc danplug_96128fr.png b/site/controls/Timb_knob verde osc danplug_96128fr.png
new file mode 100644
index 0000000..4bce5e8
--- /dev/null
+++ b/site/controls/Timb_knob verde osc danplug_96128fr.png
Binary files differ
diff --git a/site/controls/Timb_knob verde osc danplug_9696fr.json b/site/controls/Timb_knob verde osc danplug_9696fr.json
new file mode 100644
index 0000000..4fae3ac
--- /dev/null
+++ b/site/controls/Timb_knob verde osc danplug_9696fr.json
@@ -0,0 +1 @@
+{"frames": 96, "cellh": 96, "ctltype": 0, "fn": "Timb_knob verde osc danplug_9696fr.png"} \ No newline at end of file
diff --git a/site/controls/Timb_knob verde osc danplug_9696fr.png b/site/controls/Timb_knob verde osc danplug_9696fr.png
new file mode 100644
index 0000000..dc36dc0
--- /dev/null
+++ b/site/controls/Timb_knob verde osc danplug_9696fr.png
Binary files differ
diff --git a/site/controls/Timb_ob_knob4SurroGate74128.json b/site/controls/Timb_ob_knob4SurroGate74128.json
new file mode 100644
index 0000000..1c7a56f
--- /dev/null
+++ b/site/controls/Timb_ob_knob4SurroGate74128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 74, "ctltype": 0, "fn": "Timb_ob_knob4SurroGate74128.png", "cellw": 74} \ No newline at end of file
diff --git a/site/controls/Timb_ob_knob4SurroGate74128.png b/site/controls/Timb_ob_knob4SurroGate74128.png
new file mode 100644
index 0000000..d6292ed
--- /dev/null
+++ b/site/controls/Timb_ob_knob4SurroGate74128.png
Binary files differ
diff --git a/site/controls/Timb_opGui2019-01_EQ32.json b/site/controls/Timb_opGui2019-01_EQ32.json
new file mode 100644
index 0000000..274d4be
--- /dev/null
+++ b/site/controls/Timb_opGui2019-01_EQ32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_opGui2019-01_EQ32.png"} \ No newline at end of file
diff --git a/site/controls/Timb_opGui2019-01_EQ32.png b/site/controls/Timb_opGui2019-01_EQ32.png
new file mode 100644
index 0000000..fb3d2e6
--- /dev/null
+++ b/site/controls/Timb_opGui2019-01_EQ32.png
Binary files differ
diff --git a/site/controls/Timb_opGui2019-02_SEQ32.json b/site/controls/Timb_opGui2019-02_SEQ32.json
new file mode 100644
index 0000000..15dc2b5
--- /dev/null
+++ b/site/controls/Timb_opGui2019-02_SEQ32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_opGui2019-02_SEQ32.png", "cellw": 50} \ No newline at end of file
diff --git a/site/controls/Timb_opGui2019-02_SEQ32.png b/site/controls/Timb_opGui2019-02_SEQ32.png
new file mode 100644
index 0000000..18de7c8
--- /dev/null
+++ b/site/controls/Timb_opGui2019-02_SEQ32.png
Binary files differ
diff --git a/site/controls/VU METER Black ZenoMOD.json b/site/controls/VU METER Black ZenoMOD.json
new file mode 100644
index 0000000..74345c4
--- /dev/null
+++ b/site/controls/VU METER Black ZenoMOD.json
@@ -0,0 +1 @@
+{"frames": 31, "cellh": 78, "ctltype": 3, "fn": "VU METER Black ZenoMOD.png", "cellw": 144} \ No newline at end of file
diff --git a/site/controls/VU METER Black ZenoMOD.png b/site/controls/VU METER Black ZenoMOD.png
new file mode 100644
index 0000000..5e40c7c
--- /dev/null
+++ b/site/controls/VU METER Black ZenoMOD.png
Binary files differ
diff --git a/site/controls/VUMeter-01_128-128.json b/site/controls/VUMeter-01_128-128.json
new file mode 100644
index 0000000..f3bc08f
--- /dev/null
+++ b/site/controls/VUMeter-01_128-128.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 128, "ctltype": 3, "fn": "VUMeter-01_128-128.png"} \ No newline at end of file
diff --git a/site/controls/VUMeter-01_128-128.png b/site/controls/VUMeter-01_128-128.png
new file mode 100644
index 0000000..c8d8dd2
--- /dev/null
+++ b/site/controls/VUMeter-01_128-128.png
Binary files differ
diff --git a/site/controls/VUMeter01.json b/site/controls/VUMeter01.json
new file mode 100644
index 0000000..d981491
--- /dev/null
+++ b/site/controls/VUMeter01.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 94, "ctltype": 3, "fn": "VUMeter01.png"} \ No newline at end of file
diff --git a/site/controls/VUMeter01.png b/site/controls/VUMeter01.png
new file mode 100644
index 0000000..787c3a8
--- /dev/null
+++ b/site/controls/VUMeter01.png
Binary files differ
diff --git a/site/controls/Wrench AL.json b/site/controls/Wrench AL.json
new file mode 100644
index 0000000..4c9bb83
--- /dev/null
+++ b/site/controls/Wrench AL.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 15, "ctltype": 2, "fn": "Wrench AL.png", "cellw": 17} \ No newline at end of file
diff --git a/site/controls/Wrench AL.png b/site/controls/Wrench AL.png
new file mode 100644
index 0000000..c49a868
--- /dev/null
+++ b/site/controls/Wrench AL.png
Binary files differ
diff --git a/site/controls/__Snapshot NSA Red-01.json b/site/controls/__Snapshot NSA Red-01.json
new file mode 100644
index 0000000..71fb4ab
--- /dev/null
+++ b/site/controls/__Snapshot NSA Red-01.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 42, "ctltype": 4, "fn": "__Snapshot NSA Red-01.png", "cellw": 176} \ No newline at end of file
diff --git a/site/controls/__Snapshot NSA Red-01.png b/site/controls/__Snapshot NSA Red-01.png
new file mode 100644
index 0000000..3ca0abd
--- /dev/null
+++ b/site/controls/__Snapshot NSA Red-01.png
Binary files differ
diff --git a/site/controls/__Snapshot NSA Red-02.json b/site/controls/__Snapshot NSA Red-02.json
new file mode 100644
index 0000000..4f9d855
--- /dev/null
+++ b/site/controls/__Snapshot NSA Red-02.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 40, "ctltype": 4, "fn": "__Snapshot NSA Red-02.png", "cellw": 176} \ No newline at end of file
diff --git a/site/controls/__Snapshot NSA Red-02.png b/site/controls/__Snapshot NSA Red-02.png
new file mode 100644
index 0000000..a192743
--- /dev/null
+++ b/site/controls/__Snapshot NSA Red-02.png
Binary files differ
diff --git a/site/controls/__Snapshot-b.json b/site/controls/__Snapshot-b.json
new file mode 100644
index 0000000..9f357ba
--- /dev/null
+++ b/site/controls/__Snapshot-b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshot-b.png", "cellw": 200} \ No newline at end of file
diff --git a/site/controls/__Snapshot-b.png b/site/controls/__Snapshot-b.png
new file mode 100644
index 0000000..243ae9c
--- /dev/null
+++ b/site/controls/__Snapshot-b.png
Binary files differ
diff --git a/site/controls/__Snapshot.json b/site/controls/__Snapshot.json
new file mode 100644
index 0000000..8cef9be
--- /dev/null
+++ b/site/controls/__Snapshot.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshot.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot.png b/site/controls/__Snapshot.png
new file mode 100644
index 0000000..5377e2b
--- /dev/null
+++ b/site/controls/__Snapshot.png
Binary files differ
diff --git a/site/controls/__Snapshot_Timb-Pause.json b/site/controls/__Snapshot_Timb-Pause.json
new file mode 100644
index 0000000..ba32dc5
--- /dev/null
+++ b/site/controls/__Snapshot_Timb-Pause.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 96, "ctltype": 4, "fn": "__Snapshot_Timb-Pause.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/__Snapshot_Timb-Pause.png b/site/controls/__Snapshot_Timb-Pause.png
new file mode 100644
index 0000000..919c3db
--- /dev/null
+++ b/site/controls/__Snapshot_Timb-Pause.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear1.json b/site/controls/__Snapshot_timb-Clear1.json
new file mode 100644
index 0000000..f8b410d
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear1.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear1.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear1.png b/site/controls/__Snapshot_timb-Clear1.png
new file mode 100644
index 0000000..4afd3c1
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear1.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear10.json b/site/controls/__Snapshot_timb-Clear10.json
new file mode 100644
index 0000000..604db67
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear10.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear10.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear10.png b/site/controls/__Snapshot_timb-Clear10.png
new file mode 100644
index 0000000..b6a8c3a
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear10.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear2.json b/site/controls/__Snapshot_timb-Clear2.json
new file mode 100644
index 0000000..f1e2feb
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear2.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear2.png b/site/controls/__Snapshot_timb-Clear2.png
new file mode 100644
index 0000000..f1ef862
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear2.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear3.json b/site/controls/__Snapshot_timb-Clear3.json
new file mode 100644
index 0000000..0f0a2ba
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear3.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear3.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear3.png b/site/controls/__Snapshot_timb-Clear3.png
new file mode 100644
index 0000000..f87e368
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear3.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear4.json b/site/controls/__Snapshot_timb-Clear4.json
new file mode 100644
index 0000000..6477e1e
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear4.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear4.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear4.png b/site/controls/__Snapshot_timb-Clear4.png
new file mode 100644
index 0000000..4773ac5
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear4.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear5.json b/site/controls/__Snapshot_timb-Clear5.json
new file mode 100644
index 0000000..0912d31
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear5.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear5.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear5.png b/site/controls/__Snapshot_timb-Clear5.png
new file mode 100644
index 0000000..fdab0de
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear5.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear6.json b/site/controls/__Snapshot_timb-Clear6.json
new file mode 100644
index 0000000..03589ba
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear6.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear6.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear6.png b/site/controls/__Snapshot_timb-Clear6.png
new file mode 100644
index 0000000..b3c57fa
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear6.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear7.json b/site/controls/__Snapshot_timb-Clear7.json
new file mode 100644
index 0000000..b98eedb
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear7.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear7.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear7.png b/site/controls/__Snapshot_timb-Clear7.png
new file mode 100644
index 0000000..f948e4b
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear7.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear8.json b/site/controls/__Snapshot_timb-Clear8.json
new file mode 100644
index 0000000..abda200
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear8.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear8.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear8.png b/site/controls/__Snapshot_timb-Clear8.png
new file mode 100644
index 0000000..31cfbb4
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear8.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear8b.json b/site/controls/__Snapshot_timb-Clear8b.json
new file mode 100644
index 0000000..5c40cc1
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear8b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "__Snapshot_timb-Clear8b.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear8b.png b/site/controls/__Snapshot_timb-Clear8b.png
new file mode 100644
index 0000000..e01ddc0
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear8b.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Clear9.json b/site/controls/__Snapshot_timb-Clear9.json
new file mode 100644
index 0000000..536573a
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear9.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear9.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Clear9.png b/site/controls/__Snapshot_timb-Clear9.png
new file mode 100644
index 0000000..c9fd881
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Clear9.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand0a.json b/site/controls/__Snapshot_timb-Rand0a.json
new file mode 100644
index 0000000..e852a37
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0a.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0a.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand0a.png b/site/controls/__Snapshot_timb-Rand0a.png
new file mode 100644
index 0000000..91a4eaf
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0a.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand0b.json b/site/controls/__Snapshot_timb-Rand0b.json
new file mode 100644
index 0000000..3a11859
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0b.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand0b.png b/site/controls/__Snapshot_timb-Rand0b.png
new file mode 100644
index 0000000..86eb69f
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0b.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand0c.json b/site/controls/__Snapshot_timb-Rand0c.json
new file mode 100644
index 0000000..d4a7112
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0c.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand0c.png b/site/controls/__Snapshot_timb-Rand0c.png
new file mode 100644
index 0000000..ec73f3b
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0c.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand0d.json b/site/controls/__Snapshot_timb-Rand0d.json
new file mode 100644
index 0000000..2a03d99
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0d.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand0d.png b/site/controls/__Snapshot_timb-Rand0d.png
new file mode 100644
index 0000000..ee38185
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0d.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand0d2.json b/site/controls/__Snapshot_timb-Rand0d2.json
new file mode 100644
index 0000000..6c89bbc
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0d2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0d2.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand0d2.png b/site/controls/__Snapshot_timb-Rand0d2.png
new file mode 100644
index 0000000..26ab87e
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0d2.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand0e.json b/site/controls/__Snapshot_timb-Rand0e.json
new file mode 100644
index 0000000..fa93436
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0e.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0e.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand0e.png b/site/controls/__Snapshot_timb-Rand0e.png
new file mode 100644
index 0000000..7a1212f
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0e.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand0f.json b/site/controls/__Snapshot_timb-Rand0f.json
new file mode 100644
index 0000000..ace192c
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0f.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0f.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand0f.png b/site/controls/__Snapshot_timb-Rand0f.png
new file mode 100644
index 0000000..d8b3657
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0f.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand0g.json b/site/controls/__Snapshot_timb-Rand0g.json
new file mode 100644
index 0000000..ab522d7
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0g.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Rand0g.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand0g.png b/site/controls/__Snapshot_timb-Rand0g.png
new file mode 100644
index 0000000..551b7ab
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0g.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand0g2.json b/site/controls/__Snapshot_timb-Rand0g2.json
new file mode 100644
index 0000000..3aed1bf
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0g2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Rand0g2.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand0g2.png b/site/controls/__Snapshot_timb-Rand0g2.png
new file mode 100644
index 0000000..9ec1b8d
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand0g2.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand2a.json b/site/controls/__Snapshot_timb-Rand2a.json
new file mode 100644
index 0000000..d397fe6
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2a.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand2a.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand2a.png b/site/controls/__Snapshot_timb-Rand2a.png
new file mode 100644
index 0000000..ffe91f6
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2a.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand2b.json b/site/controls/__Snapshot_timb-Rand2b.json
new file mode 100644
index 0000000..01e10a9
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 128, "ctltype": 4, "fn": "__Snapshot_timb-Rand2b.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand2b.png b/site/controls/__Snapshot_timb-Rand2b.png
new file mode 100644
index 0000000..cd74e31
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2b.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand2bb.json b/site/controls/__Snapshot_timb-Rand2bb.json
new file mode 100644
index 0000000..2ff7ec5
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2bb.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand2bb.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand2bb.png b/site/controls/__Snapshot_timb-Rand2bb.png
new file mode 100644
index 0000000..4607a92
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2bb.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand2c.json b/site/controls/__Snapshot_timb-Rand2c.json
new file mode 100644
index 0000000..a0adb51
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 128, "ctltype": 4, "fn": "__Snapshot_timb-Rand2c.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand2c.png b/site/controls/__Snapshot_timb-Rand2c.png
new file mode 100644
index 0000000..15553b7
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2c.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand2d.json b/site/controls/__Snapshot_timb-Rand2d.json
new file mode 100644
index 0000000..70d407a
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2d.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand2d.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand2d.png b/site/controls/__Snapshot_timb-Rand2d.png
new file mode 100644
index 0000000..1c42dbf
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2d.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand2e.json b/site/controls/__Snapshot_timb-Rand2e.json
new file mode 100644
index 0000000..d134124
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2e.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Rand2e.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand2e.png b/site/controls/__Snapshot_timb-Rand2e.png
new file mode 100644
index 0000000..a2580e3
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand2e.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand3.json b/site/controls/__Snapshot_timb-Rand3.json
new file mode 100644
index 0000000..d8c8b29
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand3.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 46, "ctltype": 4, "fn": "__Snapshot_timb-Rand3.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand3.png b/site/controls/__Snapshot_timb-Rand3.png
new file mode 100644
index 0000000..5af5e6f
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand3.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand3WASD.json b/site/controls/__Snapshot_timb-Rand3WASD.json
new file mode 100644
index 0000000..1b2cdc0
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand3WASD.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 23, "ctltype": 4, "fn": "__Snapshot_timb-Rand3WASD.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand3WASD.png b/site/controls/__Snapshot_timb-Rand3WASD.png
new file mode 100644
index 0000000..53e62cb
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand3WASD.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand3b.json b/site/controls/__Snapshot_timb-Rand3b.json
new file mode 100644
index 0000000..7595c9e
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand3b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Rand3b.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand3b.png b/site/controls/__Snapshot_timb-Rand3b.png
new file mode 100644
index 0000000..ff6b7f3
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand3b.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-Rand3c.json b/site/controls/__Snapshot_timb-Rand3c.json
new file mode 100644
index 0000000..d1a193e
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand3c.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 4, "fn": "__Snapshot_timb-Rand3c.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-Rand3c.png b/site/controls/__Snapshot_timb-Rand3c.png
new file mode 100644
index 0000000..618ba2e
--- /dev/null
+++ b/site/controls/__Snapshot_timb-Rand3c.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb-SSTClear-02b.json b/site/controls/__Snapshot_timb-SSTClear-02b.json
new file mode 100644
index 0000000..898c9c2
--- /dev/null
+++ b/site/controls/__Snapshot_timb-SSTClear-02b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "__Snapshot_timb-SSTClear-02b.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb-SSTClear-02b.png b/site/controls/__Snapshot_timb-SSTClear-02b.png
new file mode 100644
index 0000000..a0da3b7
--- /dev/null
+++ b/site/controls/__Snapshot_timb-SSTClear-02b.png
Binary files differ
diff --git a/site/controls/__Snapshot_timb_LBXDark1.json b/site/controls/__Snapshot_timb_LBXDark1.json
new file mode 100644
index 0000000..7c90358
--- /dev/null
+++ b/site/controls/__Snapshot_timb_LBXDark1.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 40, "ctltype": 4, "fn": "__Snapshot_timb_LBXDark1.png", "cellw": 180} \ No newline at end of file
diff --git a/site/controls/__Snapshot_timb_LBXDark1.png b/site/controls/__Snapshot_timb_LBXDark1.png
new file mode 100644
index 0000000..ddd45d7
--- /dev/null
+++ b/site/controls/__Snapshot_timb_LBXDark1.png
Binary files differ
diff --git a/site/controls/__Snapshotv02.json b/site/controls/__Snapshotv02.json
new file mode 100644
index 0000000..bbf12cf
--- /dev/null
+++ b/site/controls/__Snapshotv02.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv02.png", "cellw": 170} \ No newline at end of file
diff --git a/site/controls/__Snapshotv02.png b/site/controls/__Snapshotv02.png
new file mode 100644
index 0000000..d081751
--- /dev/null
+++ b/site/controls/__Snapshotv02.png
Binary files differ
diff --git a/site/controls/__Snapshotv03.json b/site/controls/__Snapshotv03.json
new file mode 100644
index 0000000..bf1373f
--- /dev/null
+++ b/site/controls/__Snapshotv03.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv03.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv03.png b/site/controls/__Snapshotv03.png
new file mode 100644
index 0000000..1602808
--- /dev/null
+++ b/site/controls/__Snapshotv03.png
Binary files differ
diff --git a/site/controls/__Snapshotv04.json b/site/controls/__Snapshotv04.json
new file mode 100644
index 0000000..0940d8f
--- /dev/null
+++ b/site/controls/__Snapshotv04.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv04.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv04.png b/site/controls/__Snapshotv04.png
new file mode 100644
index 0000000..9b3354c
--- /dev/null
+++ b/site/controls/__Snapshotv04.png
Binary files differ
diff --git a/site/controls/__Snapshotv05.json b/site/controls/__Snapshotv05.json
new file mode 100644
index 0000000..910ea30
--- /dev/null
+++ b/site/controls/__Snapshotv05.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv05.png b/site/controls/__Snapshotv05.png
new file mode 100644
index 0000000..be0b588
--- /dev/null
+++ b/site/controls/__Snapshotv05.png
Binary files differ
diff --git a/site/controls/__Snapshotv05b.json b/site/controls/__Snapshotv05b.json
new file mode 100644
index 0000000..4e83dfd
--- /dev/null
+++ b/site/controls/__Snapshotv05b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05b.png", "cellw": 270} \ No newline at end of file
diff --git a/site/controls/__Snapshotv05b.png b/site/controls/__Snapshotv05b.png
new file mode 100644
index 0000000..8764f1e
--- /dev/null
+++ b/site/controls/__Snapshotv05b.png
Binary files differ
diff --git a/site/controls/__Snapshotv05c.json b/site/controls/__Snapshotv05c.json
new file mode 100644
index 0000000..419fa2c
--- /dev/null
+++ b/site/controls/__Snapshotv05c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05c.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv05c.png b/site/controls/__Snapshotv05c.png
new file mode 100644
index 0000000..c9a3558
--- /dev/null
+++ b/site/controls/__Snapshotv05c.png
Binary files differ
diff --git a/site/controls/__Snapshotv05d.json b/site/controls/__Snapshotv05d.json
new file mode 100644
index 0000000..d014857
--- /dev/null
+++ b/site/controls/__Snapshotv05d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05d.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv05d.png b/site/controls/__Snapshotv05d.png
new file mode 100644
index 0000000..1d8b30a
--- /dev/null
+++ b/site/controls/__Snapshotv05d.png
Binary files differ
diff --git a/site/controls/__Snapshotv05e.json b/site/controls/__Snapshotv05e.json
new file mode 100644
index 0000000..361d3b2
--- /dev/null
+++ b/site/controls/__Snapshotv05e.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05e.png", "cellw": 192} \ No newline at end of file
diff --git a/site/controls/__Snapshotv05e.png b/site/controls/__Snapshotv05e.png
new file mode 100644
index 0000000..21ee00b
--- /dev/null
+++ b/site/controls/__Snapshotv05e.png
Binary files differ
diff --git a/site/controls/__Snapshotv05e2.json b/site/controls/__Snapshotv05e2.json
new file mode 100644
index 0000000..2d6e283
--- /dev/null
+++ b/site/controls/__Snapshotv05e2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05e2.png", "cellw": 192} \ No newline at end of file
diff --git a/site/controls/__Snapshotv05e2.png b/site/controls/__Snapshotv05e2.png
new file mode 100644
index 0000000..8c11808
--- /dev/null
+++ b/site/controls/__Snapshotv05e2.png
Binary files differ
diff --git a/site/controls/__Snapshotv05e3.json b/site/controls/__Snapshotv05e3.json
new file mode 100644
index 0000000..d796c88
--- /dev/null
+++ b/site/controls/__Snapshotv05e3.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05e3.png", "cellw": 192} \ No newline at end of file
diff --git a/site/controls/__Snapshotv05e3.png b/site/controls/__Snapshotv05e3.png
new file mode 100644
index 0000000..589e1d3
--- /dev/null
+++ b/site/controls/__Snapshotv05e3.png
Binary files differ
diff --git a/site/controls/__Snapshotv05f.json b/site/controls/__Snapshotv05f.json
new file mode 100644
index 0000000..b4f6495
--- /dev/null
+++ b/site/controls/__Snapshotv05f.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05f.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv05f.png b/site/controls/__Snapshotv05f.png
new file mode 100644
index 0000000..29001a9
--- /dev/null
+++ b/site/controls/__Snapshotv05f.png
Binary files differ
diff --git a/site/controls/__Snapshotv06.json b/site/controls/__Snapshotv06.json
new file mode 100644
index 0000000..ccd4758
--- /dev/null
+++ b/site/controls/__Snapshotv06.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv06.png", "cellw": 191} \ No newline at end of file
diff --git a/site/controls/__Snapshotv06.png b/site/controls/__Snapshotv06.png
new file mode 100644
index 0000000..ecd3c0b
--- /dev/null
+++ b/site/controls/__Snapshotv06.png
Binary files differ
diff --git a/site/controls/__Snapshotv06b.json b/site/controls/__Snapshotv06b.json
new file mode 100644
index 0000000..d34a396
--- /dev/null
+++ b/site/controls/__Snapshotv06b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv06b.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv06b.png b/site/controls/__Snapshotv06b.png
new file mode 100644
index 0000000..e213755
--- /dev/null
+++ b/site/controls/__Snapshotv06b.png
Binary files differ
diff --git a/site/controls/__Snapshotv06c.json b/site/controls/__Snapshotv06c.json
new file mode 100644
index 0000000..16352f0
--- /dev/null
+++ b/site/controls/__Snapshotv06c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv06c.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv06c.png b/site/controls/__Snapshotv06c.png
new file mode 100644
index 0000000..9a2901b
--- /dev/null
+++ b/site/controls/__Snapshotv06c.png
Binary files differ
diff --git a/site/controls/__Snapshotv06d.json b/site/controls/__Snapshotv06d.json
new file mode 100644
index 0000000..163fb13
--- /dev/null
+++ b/site/controls/__Snapshotv06d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 39, "ctltype": 4, "fn": "__Snapshotv06d.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/__Snapshotv06d.png b/site/controls/__Snapshotv06d.png
new file mode 100644
index 0000000..c180478
--- /dev/null
+++ b/site/controls/__Snapshotv06d.png
Binary files differ
diff --git a/site/controls/__Snapshotv07mini.json b/site/controls/__Snapshotv07mini.json
new file mode 100644
index 0000000..ff9965f
--- /dev/null
+++ b/site/controls/__Snapshotv07mini.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshotv07mini.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv07mini.png b/site/controls/__Snapshotv07mini.png
new file mode 100644
index 0000000..d0ef77f
--- /dev/null
+++ b/site/controls/__Snapshotv07mini.png
Binary files differ
diff --git a/site/controls/__Snapshotv08mini.json b/site/controls/__Snapshotv08mini.json
new file mode 100644
index 0000000..b45a760
--- /dev/null
+++ b/site/controls/__Snapshotv08mini.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshotv08mini.png", "cellw": 138} \ No newline at end of file
diff --git a/site/controls/__Snapshotv08mini.png b/site/controls/__Snapshotv08mini.png
new file mode 100644
index 0000000..a94b548
--- /dev/null
+++ b/site/controls/__Snapshotv08mini.png
Binary files differ
diff --git a/site/controls/__Snapshotv09mini.json b/site/controls/__Snapshotv09mini.json
new file mode 100644
index 0000000..6836306
--- /dev/null
+++ b/site/controls/__Snapshotv09mini.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshotv09mini.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv09mini.png b/site/controls/__Snapshotv09mini.png
new file mode 100644
index 0000000..1156dc6
--- /dev/null
+++ b/site/controls/__Snapshotv09mini.png
Binary files differ
diff --git a/site/controls/__Snapshotv10-52.json b/site/controls/__Snapshotv10-52.json
new file mode 100644
index 0000000..e06b355
--- /dev/null
+++ b/site/controls/__Snapshotv10-52.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 52, "ctltype": 4, "fn": "__Snapshotv10-52.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv10-52.png b/site/controls/__Snapshotv10-52.png
new file mode 100644
index 0000000..7404f6e
--- /dev/null
+++ b/site/controls/__Snapshotv10-52.png
Binary files differ
diff --git a/site/controls/__Snapshotv10mini.json b/site/controls/__Snapshotv10mini.json
new file mode 100644
index 0000000..be5d0f8
--- /dev/null
+++ b/site/controls/__Snapshotv10mini.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshotv10mini.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/__Snapshotv10mini.png b/site/controls/__Snapshotv10mini.png
new file mode 100644
index 0000000..01a2c05
--- /dev/null
+++ b/site/controls/__Snapshotv10mini.png
Binary files differ
diff --git a/site/controls/__Snapshotv11-56.json b/site/controls/__Snapshotv11-56.json
new file mode 100644
index 0000000..873427e
--- /dev/null
+++ b/site/controls/__Snapshotv11-56.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv11-56.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv11-56.png b/site/controls/__Snapshotv11-56.png
new file mode 100644
index 0000000..01eddf3
--- /dev/null
+++ b/site/controls/__Snapshotv11-56.png
Binary files differ
diff --git a/site/controls/__Snapshotv11-56b.json b/site/controls/__Snapshotv11-56b.json
new file mode 100644
index 0000000..92dd316
--- /dev/null
+++ b/site/controls/__Snapshotv11-56b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv11-56b.png", "cellw": 269} \ No newline at end of file
diff --git a/site/controls/__Snapshotv11-56b.png b/site/controls/__Snapshotv11-56b.png
new file mode 100644
index 0000000..a0cd369
--- /dev/null
+++ b/site/controls/__Snapshotv11-56b.png
Binary files differ
diff --git a/site/controls/__Snapshotv12-55.json b/site/controls/__Snapshotv12-55.json
new file mode 100644
index 0000000..0e6e178
--- /dev/null
+++ b/site/controls/__Snapshotv12-55.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv12-55.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv12-55.png b/site/controls/__Snapshotv12-55.png
new file mode 100644
index 0000000..959975a
--- /dev/null
+++ b/site/controls/__Snapshotv12-55.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-40.json b/site/controls/__Snapshotv13-40.json
new file mode 100644
index 0000000..24934a4
--- /dev/null
+++ b/site/controls/__Snapshotv13-40.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 40, "ctltype": 4, "fn": "__Snapshotv13-40.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-40.png b/site/controls/__Snapshotv13-40.png
new file mode 100644
index 0000000..d5257fa
--- /dev/null
+++ b/site/controls/__Snapshotv13-40.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-43a.json b/site/controls/__Snapshotv13-43a.json
new file mode 100644
index 0000000..fa56e43
--- /dev/null
+++ b/site/controls/__Snapshotv13-43a.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 43, "ctltype": 4, "fn": "__Snapshotv13-43a.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-43a.png b/site/controls/__Snapshotv13-43a.png
new file mode 100644
index 0000000..c6a7240
--- /dev/null
+++ b/site/controls/__Snapshotv13-43a.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-43b.json b/site/controls/__Snapshotv13-43b.json
new file mode 100644
index 0000000..36fcb5c
--- /dev/null
+++ b/site/controls/__Snapshotv13-43b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 43, "ctltype": 4, "fn": "__Snapshotv13-43b.png", "cellw": 144} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-43b.png b/site/controls/__Snapshotv13-43b.png
new file mode 100644
index 0000000..9cf1bc1
--- /dev/null
+++ b/site/controls/__Snapshotv13-43b.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-43c.json b/site/controls/__Snapshotv13-43c.json
new file mode 100644
index 0000000..57be329
--- /dev/null
+++ b/site/controls/__Snapshotv13-43c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 43, "ctltype": 4, "fn": "__Snapshotv13-43c.png", "cellw": 144} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-43c.png b/site/controls/__Snapshotv13-43c.png
new file mode 100644
index 0000000..7253f35
--- /dev/null
+++ b/site/controls/__Snapshotv13-43c.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-43d.json b/site/controls/__Snapshotv13-43d.json
new file mode 100644
index 0000000..7b397ea
--- /dev/null
+++ b/site/controls/__Snapshotv13-43d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 43, "ctltype": 4, "fn": "__Snapshotv13-43d.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-43d.png b/site/controls/__Snapshotv13-43d.png
new file mode 100644
index 0000000..77c2b53
--- /dev/null
+++ b/site/controls/__Snapshotv13-43d.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-48.json b/site/controls/__Snapshotv13-48.json
new file mode 100644
index 0000000..426eefb
--- /dev/null
+++ b/site/controls/__Snapshotv13-48.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 48, "ctltype": 4, "fn": "__Snapshotv13-48.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-48.png b/site/controls/__Snapshotv13-48.png
new file mode 100644
index 0000000..e30f0ea
--- /dev/null
+++ b/site/controls/__Snapshotv13-48.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-48b.json b/site/controls/__Snapshotv13-48b.json
new file mode 100644
index 0000000..ba7381a
--- /dev/null
+++ b/site/controls/__Snapshotv13-48b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 48, "ctltype": 4, "fn": "__Snapshotv13-48b.png", "cellw": 160} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-48b.png b/site/controls/__Snapshotv13-48b.png
new file mode 100644
index 0000000..1b4fcc1
--- /dev/null
+++ b/site/controls/__Snapshotv13-48b.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-48c.json b/site/controls/__Snapshotv13-48c.json
new file mode 100644
index 0000000..06afce7
--- /dev/null
+++ b/site/controls/__Snapshotv13-48c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 48, "ctltype": 4, "fn": "__Snapshotv13-48c.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-48c.png b/site/controls/__Snapshotv13-48c.png
new file mode 100644
index 0000000..1e0e190
--- /dev/null
+++ b/site/controls/__Snapshotv13-48c.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-48d.json b/site/controls/__Snapshotv13-48d.json
new file mode 100644
index 0000000..f0b2004
--- /dev/null
+++ b/site/controls/__Snapshotv13-48d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 48, "ctltype": 4, "fn": "__Snapshotv13-48d.png", "cellw": 160} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-48d.png b/site/controls/__Snapshotv13-48d.png
new file mode 100644
index 0000000..03b811e
--- /dev/null
+++ b/site/controls/__Snapshotv13-48d.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-60.json b/site/controls/__Snapshotv13-60.json
new file mode 100644
index 0000000..126939b
--- /dev/null
+++ b/site/controls/__Snapshotv13-60.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 60, "ctltype": 4, "fn": "__Snapshotv13-60.png", "cellw": 305} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-60.png b/site/controls/__Snapshotv13-60.png
new file mode 100644
index 0000000..1913eb0
--- /dev/null
+++ b/site/controls/__Snapshotv13-60.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-60b.json b/site/controls/__Snapshotv13-60b.json
new file mode 100644
index 0000000..712d947
--- /dev/null
+++ b/site/controls/__Snapshotv13-60b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 60, "ctltype": 4, "fn": "__Snapshotv13-60b.png", "cellw": 305} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-60b.png b/site/controls/__Snapshotv13-60b.png
new file mode 100644
index 0000000..b91b417
--- /dev/null
+++ b/site/controls/__Snapshotv13-60b.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-60c.json b/site/controls/__Snapshotv13-60c.json
new file mode 100644
index 0000000..498d6d0
--- /dev/null
+++ b/site/controls/__Snapshotv13-60c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 60, "ctltype": 4, "fn": "__Snapshotv13-60c.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-60c.png b/site/controls/__Snapshotv13-60c.png
new file mode 100644
index 0000000..baeb166
--- /dev/null
+++ b/site/controls/__Snapshotv13-60c.png
Binary files differ
diff --git a/site/controls/__Snapshotv13-60d.json b/site/controls/__Snapshotv13-60d.json
new file mode 100644
index 0000000..fcb907f
--- /dev/null
+++ b/site/controls/__Snapshotv13-60d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 60, "ctltype": 4, "fn": "__Snapshotv13-60d.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv13-60d.png b/site/controls/__Snapshotv13-60d.png
new file mode 100644
index 0000000..383e7b9
--- /dev/null
+++ b/site/controls/__Snapshotv13-60d.png
Binary files differ
diff --git a/site/controls/__Snapshotv14HY56.json b/site/controls/__Snapshotv14HY56.json
new file mode 100644
index 0000000..652fd3c
--- /dev/null
+++ b/site/controls/__Snapshotv14HY56.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv14HY56.png", "cellw": 321} \ No newline at end of file
diff --git a/site/controls/__Snapshotv14HY56.png b/site/controls/__Snapshotv14HY56.png
new file mode 100644
index 0000000..9292097
--- /dev/null
+++ b/site/controls/__Snapshotv14HY56.png
Binary files differ
diff --git a/site/controls/__Snapshotv15a.json b/site/controls/__Snapshotv15a.json
new file mode 100644
index 0000000..4ab6d1b
--- /dev/null
+++ b/site/controls/__Snapshotv15a.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv15a.png", "cellw": 256} \ No newline at end of file
diff --git a/site/controls/__Snapshotv15a.png b/site/controls/__Snapshotv15a.png
new file mode 100644
index 0000000..09f7d4c
--- /dev/null
+++ b/site/controls/__Snapshotv15a.png
Binary files differ
diff --git a/site/controls/__Snapshotv15b.json b/site/controls/__Snapshotv15b.json
new file mode 100644
index 0000000..8846c5b
--- /dev/null
+++ b/site/controls/__Snapshotv15b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv15b.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv15b.png b/site/controls/__Snapshotv15b.png
new file mode 100644
index 0000000..1c78147
--- /dev/null
+++ b/site/controls/__Snapshotv15b.png
Binary files differ
diff --git a/site/controls/__Snapshotv16.json b/site/controls/__Snapshotv16.json
new file mode 100644
index 0000000..ed1f1b1
--- /dev/null
+++ b/site/controls/__Snapshotv16.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 95, "ctltype": 4, "fn": "__Snapshotv16.png", "cellw": 508} \ No newline at end of file
diff --git a/site/controls/__Snapshotv16.png b/site/controls/__Snapshotv16.png
new file mode 100644
index 0000000..eb50dd2
--- /dev/null
+++ b/site/controls/__Snapshotv16.png
Binary files differ
diff --git a/site/controls/__Snapshotv16b.json b/site/controls/__Snapshotv16b.json
new file mode 100644
index 0000000..6eb2190
--- /dev/null
+++ b/site/controls/__Snapshotv16b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv16b.png"} \ No newline at end of file
diff --git a/site/controls/__Snapshotv16b.png b/site/controls/__Snapshotv16b.png
new file mode 100644
index 0000000..997b2dc
--- /dev/null
+++ b/site/controls/__Snapshotv16b.png
Binary files differ
diff --git a/site/controls/__Snapshotv16c.json b/site/controls/__Snapshotv16c.json
new file mode 100644
index 0000000..12c690a
--- /dev/null
+++ b/site/controls/__Snapshotv16c.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv16c.png", "cellw": 294} \ No newline at end of file
diff --git a/site/controls/__Snapshotv16c.png b/site/controls/__Snapshotv16c.png
new file mode 100644
index 0000000..1a1f364
--- /dev/null
+++ b/site/controls/__Snapshotv16c.png
Binary files differ
diff --git a/site/controls/__Snapshotv16d.json b/site/controls/__Snapshotv16d.json
new file mode 100644
index 0000000..51e2964
--- /dev/null
+++ b/site/controls/__Snapshotv16d.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv16d.png", "cellw": 206} \ No newline at end of file
diff --git a/site/controls/__Snapshotv16d.png b/site/controls/__Snapshotv16d.png
new file mode 100644
index 0000000..976ffea
--- /dev/null
+++ b/site/controls/__Snapshotv16d.png
Binary files differ
diff --git a/site/controls/__Snapshotv16e.json b/site/controls/__Snapshotv16e.json
new file mode 100644
index 0000000..dd0b681
--- /dev/null
+++ b/site/controls/__Snapshotv16e.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv16e.png", "cellw": 294} \ No newline at end of file
diff --git a/site/controls/__Snapshotv16e.png b/site/controls/__Snapshotv16e.png
new file mode 100644
index 0000000..be16249
--- /dev/null
+++ b/site/controls/__Snapshotv16e.png
Binary files differ
diff --git a/site/controls/__XY.json b/site/controls/__XY.json
new file mode 100644
index 0000000..124f1f8
--- /dev/null
+++ b/site/controls/__XY.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 200, "ctltype": 4, "fn": "__XY.png", "cellw": 160} \ No newline at end of file
diff --git a/site/controls/__XY.png b/site/controls/__XY.png
new file mode 100644
index 0000000..887a687
--- /dev/null
+++ b/site/controls/__XY.png
Binary files differ
diff --git a/site/controls/__XYTarget.json b/site/controls/__XYTarget.json
new file mode 100644
index 0000000..4368e5b
--- /dev/null
+++ b/site/controls/__XYTarget.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "__XYTarget.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/__XYTarget.png b/site/controls/__XYTarget.png
new file mode 100644
index 0000000..7b0f47d
--- /dev/null
+++ b/site/controls/__XYTarget.png
Binary files differ
diff --git a/site/controls/__default.json b/site/controls/__default.json
new file mode 100644
index 0000000..220afdb
--- /dev/null
+++ b/site/controls/__default.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 64, "ctltype": 0, "fn": "__default.png"} \ No newline at end of file
diff --git a/site/controls/__default.png b/site/controls/__default.png
new file mode 100644
index 0000000..68e7104
--- /dev/null
+++ b/site/controls/__default.png
Binary files differ
diff --git a/site/controls/__timb_airSnapshot-1.json b/site/controls/__timb_airSnapshot-1.json
new file mode 100644
index 0000000..d3288d8
--- /dev/null
+++ b/site/controls/__timb_airSnapshot-1.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 96, "ctltype": 4, "fn": "__timb_airSnapshot-1.png", "cellw": 256} \ No newline at end of file
diff --git a/site/controls/__timb_airSnapshot-1.png b/site/controls/__timb_airSnapshot-1.png
new file mode 100644
index 0000000..675e3f8
--- /dev/null
+++ b/site/controls/__timb_airSnapshot-1.png
Binary files differ
diff --git a/site/controls/all.json b/site/controls/all.json
new file mode 100644
index 0000000..74839ee
--- /dev/null
+++ b/site/controls/all.json
@@ -0,0 +1 @@
+{"Timb_MeterPAULIE_8-32-128fr": {"frames": 128, "cellh": 32, "ctltype": 3, "fn": "Timb_MeterPAULIE_8-32-128fr.png"}, "SC_KNOB-REDTRCK_(24x24-101frm)prpl": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)prpl.png"}, "LBX - green line 64": {"frames": 100, "cellh": 64, "ctltype": 0, "fn": "LBX - green line 64.png"}, "timb_LED20eXp4bvertic": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp4bvertic.png"}, "Switcher02(22x82)": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher02(22x82).png"}, "Timb_HandMadeMUTE16c": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_HandMadeMUTE16c.png"}, "Timb_HandMadeMUTE16b": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_HandMadeMUTE16b.png"}, "Timb_SpaceshipDelay_64129": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_SpaceshipDelay_64129.png"}, "Timb_HandMadeMUTE16d": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_HandMadeMUTE16d.png"}, "Timb-NickMoritz_SmallKnob-04_32128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-04_32128.png"}, "Timb_Zyn32OnOff-2": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_Zyn32OnOff-2.png"}, "Timb_Zyn32OnOff-1": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_Zyn32OnOff-1.png"}, "Timb&kmGallery_KNB gold_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_KNB gold_(64129).png"}, "Timb-SM_GRIG5-45a_33x33-91": {"frames": 91, "cellh": 33, "ctltype": 0, "fn": "Timb-SM_GRIG5-45a_33x33-91.png"}, "Timb_SnowFXOnOff16WASD-1": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-1.png"}, "Timb&HY_DLY3Like_(64130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3Like_(64130).png"}, "Timb_SnowFXOnOff16WASD-3": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-3.png"}, "Timb_SnowFXOnOff16WASD-2": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-2.png"}, "Timb_SnowFXOnOff16WASD-5": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-5.png"}, "Timb_SnowFXOnOff16WASD-4": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-4.png"}, "Timb_SnowFXOnOff16WASD-7": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-7.png"}, "Timb_SnowFXOnOff16WASD-6": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-6.png"}, "Timb_SnowFXOnOff16WASD-9": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-9.png"}, "Timb_SnowFXOnOff16WASD-8": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-8.png"}, "__XYTarget": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "__XYTarget.png"}, "2020timb_Aquamarine Button-01": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "2020timb_Aquamarine Button-01.png"}, "2020timb_Aquamarine Button-02": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "2020timb_Aquamarine Button-02.png"}, "Switcher07(20x127)": {"frames": 1, "cellh": 20, "ctltype": 4, "fn": "Switcher07(20x127).png"}, "Switcher_Bestpoke-x2(128x22)": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2(128x22).png"}, "Timb-SM_GRIG5-44_49x49-129": {"frames": 129, "cellh": 49, "ctltype": 0, "fn": "Timb-SM_GRIG5-44_49x49-129.png"}, "Timb_MeterHRZCybZinc_16240-128fr": {"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZCybZinc_16240-128fr.png"}, "Timb_MegaBaby-01SWING_28x40-101": {"frames": 101, "cellh": 28, "ctltype": 4, "fn": "Timb_MegaBaby-01SWING_28x40-101.png"}, "Timb&kmGallery_flstudio-style_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_flstudio-style_(64129).png"}, "Timb_SnowFXOnOff_ UGGLT2": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2.png"}, "Timb_SnowFXOnOff_ UGGLT3": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT3.png"}, "Timb_Grig2018_Controls--66a 2": {"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66a 2.png"}, "Timb&Bryntes_Trap_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Trap_(64129).png"}, "Timb_MeterBlackOnixTwoHRZN_13x123-129": {"frames": 129, "cellh": 13, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwoHRZN_13x123-129.png"}, "Timb_SendSlider2b_(32-129fr)": {"frames": 129, "cellh": 32, "ctltype": 1, "fn": "Timb_SendSlider2b_(32-129fr).png"}, "Timb_HandMadeMUTEONSOLO28b": {"frames": 3, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO28b.png"}, "Timb_HandMadeMUTEONSOLO28c": {"frames": 3, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO28c.png"}, "timb_HoRNetHCS1_x64_103_": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HoRNetHCS1_x64_103_.png"}, "Timb-SM_ShapePAN_50120": {"frames": 120, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_ShapePAN_50120.png"}, "Timb_CloseX34": {"frames": 2, "cellh": 34, "ctltype": 2, "fn": "Timb_CloseX34.png"}, "!16 Button 5 randomTe1": {"frames": 2, "cellh": 16, "fn": "!16 Button 5 randomTe1.png"}, "NitroButto16-02graygreen": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-02graygreen.png"}, "Timb_FLstyleEdt-07c_48-128": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-07c_48-128.png"}, "Timb_MadMon8-G1_Top": {"frames": 2, "cellh": 4, "ctltype": 2, "fn": "Timb_MadMon8-G1_Top.png"}, "Timb-SM_Saturday Knobs_03-A_100101fr": {"frames": 101, "cellh": 100, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_03-A_100101fr.png"}, "KM2016_XVKnobmed-pan_26x26-128fr": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_XVKnobmed-pan_26x26-128fr.png"}, "Switcher_Bestpoke-x2b(96x22)": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2b(96x22).png"}, "Timb_Vogue_Yellow_64-129": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Yellow_64-129.png"}, "Timb&kmGallery_knobman-lumen2b_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2b_(64129).png"}, "timb_LED20eXp1vertic": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp1vertic.png"}, "SimpleButton_32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "SimpleButton_32.png"}, "SC_Knob_(16x16-100fr)2b": {"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)2b.png"}, "!16 Button - 16 number": {"frames": 2, "cellh": 16, "fn": "!16 Button - 16 number.png"}, "Timb&kmGallery_whiteknob_2_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_whiteknob_2_(64129).png"}, "Timb_UVIButton222": {"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_UVIButton222.png"}, "SimpleMeter-Def5_(4x24-129fr)": {"frames": 129, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x24-129fr).png"}, "Timb&kmGallery_lightdial-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_lightdial-edt_(64129).png"}, "Timb&Bryntes_FLLimiter4_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_FLLimiter4_(64129).png"}, "Timb_MONITOR2_(111x176-128)": {"frames": 128, "cellh": 176, "ctltype": 3, "fn": "Timb_MONITOR2_(111x176-128).png"}, "Timb-SM_GrigKnob-06_32x32-129": {"frames": 129, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_GrigKnob-06_32x32-129.png"}, "SC_Loopey-Slider 01": {"frames": 101, "cellh": 117, "ctltype": 1, "fn": "SC_Loopey-Slider 01.png"}, "LBX-3Dknob-01_(64x128)": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "LBX-3Dknob-01_(64x128).png"}, "Timb_Meter_SUBSUB_(259-51fr)": {"frames": 51, "cellh": 259, "ctltype": 3, "fn": "Timb_Meter_SUBSUB_(259-51fr).png"}, "Timb_MeterHRZBEATWING_8240-128fr": {"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZBEATWING_8240-128fr.png"}, "SimpleMeter-Def5_(16x128-100fr)": {"frames": 100, "cellh": 128, "ctltype": 3, "fn": "SimpleMeter-Def5_(16x128-100fr).png"}, "LBX_Button32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32.png"}, "Timb_MeterCLSC10_8280-128": {"frames": 128, "cellh": 280, "ctltype": 3, "fn": "Timb_MeterCLSC10_8280-128.png"}, "!Button Flat Blue 2": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "!Button Flat Blue 2.png"}, "Timb_MIDIMONITOR17LIMb_16x128": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_MIDIMONITOR17LIMb_16x128.png"}, "Timb-SM_GrigKnob-46vol_47x48-129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-46vol_47x48-129.png"}, "Timb-SM_OptGrx2_64128-18ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-18ver.png"}, "Timb&kmGallery_maschine_editTimbeditC_(64x130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditC_(64x130).png"}, "Timb-SM_OptGrx2_32128-04ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-04ver.png"}, "Timb_MIDIMONITOR17LIMa_16x128": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_MIDIMONITOR17LIMa_16x128.png"}, "Timb&FL_TDA EQ8_(142x38-130fr)": {"frames": 130, "cellh": 142, "ctltype": 1, "fn": "Timb&FL_TDA EQ8_(142x38-130fr).png"}, "lbx_knob32_smoothblack_yellow": {"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_yellow.png"}, "Timb_ColorCode_(24-129)-02ylw": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-02ylw.png"}, "Timb_ExpoBloo96128": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_ExpoBloo96128.png"}, "MJSOLO": {"frames": 2, "cellh": 13, "ctltype": 2, "fn": "MJSOLO.png"}, "Timb&kmGallery_mixer_blue (1)_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_mixer_blue (1)_(64129).png"}, "Timb-SM_GrigKnob-33_42x42-127": {"frames": 127, "cellh": 42, "ctltype": 0, "fn": "Timb-SM_GrigKnob-33_42x42-127.png"}, "Timb_Vogue_Blue_64-129": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Blue_64-129.png"}, "Timb-SM_OptGrx2_64128-19ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-19ver.png"}, "__Snapshot_timb-Rand0d2": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0d2.png"}, "!Snapshot": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "!Snapshot.png"}, "Timb&kmGallery_ShinyBlueKSP8BiPo_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyBlueKSP8BiPo_(64129).png"}, "Timb-SM_OptGrx2_64128-06ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-06ver.png"}, "SC_KNOB-REDTRCK_(24x24-101frm)": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm).png"}, "Timb-SM_OptGrx2_32128-05ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-05ver.png"}, "Timb-SM_GRIG5-40_35x38-129-brwn": {"frames": 129, "cellh": 38, "ctltype": 0, "fn": "Timb-SM_GRIG5-40_35x38-129-brwn.png"}, "Timb&kmGallery_Punch_010_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Punch_010_(64129).png"}, "Timb&kmGallery_knobman-lumen2e_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2e_(64129).png"}, "Timb_MeterFUNKTION_16242-128fr": {"frames": 128, "cellh": 242, "ctltype": 3, "fn": "Timb_MeterFUNKTION_16242-128fr.png"}, "Timb_SnowFXOnOff16WASD-0": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-0.png"}, "SA bigpot": {"frames": 100, "cellh": 115, "ctltype": 0, "fn": "SA bigpot.png"}, "Timb&FL_RolandJP8000_(106x43-130fr)": {"frames": 130, "cellh": 106, "ctltype": 1, "fn": "Timb&FL_RolandJP8000_(106x43-130fr).png"}, "Timb&HY_DLY3LikeBB3_(64130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB3_(64130).png"}, "Timb_SnowFXOnOff_ UGGLT2c": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2c.png"}, "Timb_SnowFXOnOff_ UGGLT2b": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2b.png"}, "Timb_SnowFXOnOff_ UGGLT2e": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2e.png"}, "Timb&kmGallery_MiniMoogFreq_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MiniMoogFreq_(64129).png"}, "LBX_Button32_Orange": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32_Orange.png"}, "Timb_FLstyleEdt-08_48-128": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-08_48-128.png"}, "Timb-SM_Annimot01_80101": {"frames": 100, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Annimot01_80101.png"}, "Timb_MadMon8-H2_Bottomb": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_MadMon8-H2_Bottomb.png"}, "Switcher10-Logo_Kont20": {"frames": 1, "cellh": 20, "ctltype": 4, "fn": "Switcher10-Logo_Kont20.png"}, "KM2016_knobTmbmod_(26x26-128fr)_green": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_green.png"}, "FXGUI2017_BESTPOKE(15-2)-b": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-b.png"}, "FXGUI2017_BESTPOKE(15-2)-c": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-c.png"}, "FXGUI2017_BESTPOKE(15-2)-d": {"frames": 2, "cellh": 40, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-d.png"}, "FXGUI2017_BESTPOKE(15-2)-e": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-e.png"}, "FXGUI2017_BESTPOKE(15-2)-f": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2)-f.png"}, "Timb_MadMon8-H2_Bottom": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_MadMon8-H2_Bottom.png"}, "Timb_MultiFXSENDER16x16-9fr": {"frames": 9, "cellh": 16, "ctltype": 2, "fn": "Timb_MultiFXSENDER16x16-9fr.png"}, "Timb_METER-Circle-FOR_FLSTYLE-R": {"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE-R.png"}, "Timb_Blankfiles-ConcertoSlider_16128-128": {"frames": 128, "cellh": 128, "ctltype": 1, "fn": "Timb_Blankfiles-ConcertoSlider_16128-128.png"}, "Timb-SM_GrigKnob-31_53x53-127": {"frames": 127, "cellh": 53, "ctltype": 0, "fn": "Timb-SM_GrigKnob-31_53x53-127.png"}, "Timb_METER-Circle-FOR_FLSTYLE-L": {"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE-L.png"}, "Timb-SM_GRIG5-25_61x61-129": {"frames": 129, "cellh": 61, "ctltype": 0, "fn": "Timb-SM_GRIG5-25_61x61-129.png"}, "LBX_ledstrip_d_gy": {"frames": 100, "cellh": 250, "ctltype": 3, "fn": "LBX_ledstrip_d_gy.png"}, "Timb-SM_GRIG5-23_25x29-129": {"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GRIG5-23_25x29-129.png"}, "Switcher_Bestpoke-x1(128x30)": {"frames": 1, "cellh": 30, "ctltype": 4, "fn": "Switcher_Bestpoke-x1(128x30).png"}, "Timb-SM_OptGrx2_40128-07ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-07ver.png"}, "!FL Red": {"frames": 2, "cellh": 25, "fn": "!FL Red.png"}, "SC_KNOB-REDTRCK_(24x24-101frm)green": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)green.png"}, "Timb_Actions_PLAY": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_PLAY.png"}, "SimpleFlat_48": {"frames": 100, "cellh": 48, "ctltype": 0, "fn": "SimpleFlat_48.png"}, "Timb_MeterHRZFUNKTION_16242-128fr": {"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZFUNKTION_16242-128fr.png"}, "Timb_SendBOX-PAN_(16-129)griin": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)griin.png"}, "Timb-SM_OptGrx2_64128-05ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-05ver.png"}, "Timb_knob SFR 1_46101": {"frames": 101, "cellh": 46, "ctltype": 0, "fn": "Timb_knob SFR 1_46101.png"}, "Timb_Tantra_AIMBUT16c": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_AIMBUT16c.png"}, "timb_HoRNetHCS1_x64_102_": {"frames": 100, "cellh": 80, "ctltype": 0, "fn": "timb_HoRNetHCS1_x64_102_.png"}, "Concerto-OnOff16x": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Concerto-OnOff16x.png"}, "Timb_MegaBaby-01CHANNELS_28x28-16": {"frames": 16, "cellh": 28, "ctltype": 4, "fn": "Timb_MegaBaby-01CHANNELS_28x28-16.png"}, "__Snapshot_timb-Rand3b": {"frames": 2, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Rand3b.png"}, "KM2016_Silverflatwithno_(96x96-128fr)": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "KM2016_Silverflatwithno_(96x96-128fr).png"}, "Timb&kmGallery_Noise_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Noise_(64129).png"}, "timb_spchrd-01": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "timb_spchrd-01.png"}, "Timb&HY_ModernishXe2": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXe2.png"}, "Timb-SM_OptGrx2_32128-06ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-06ver.png"}, "Timb_UpDownArw-11": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-11.png"}, "Timb-SM_Saturday Knobs_01-A_100101fr": {"frames": 101, "cellh": 100, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_01-A_100101fr.png"}, "Timb&KHZ_Slider_(321x70-130fr)": {"frames": 130, "cellh": 321, "ctltype": 1, "fn": "Timb&KHZ_Slider_(321x70-130fr).png"}, "Timb_FALCON&UPGExtras-2PM": {"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-2PM.png"}, "LBX_ledstrip_b_gy": {"frames": 100, "cellh": 250, "ctltype": 3, "fn": "LBX_ledstrip_b_gy.png"}, "Timb_Power switch 01EDTx84": {"frames": 2, "cellh": 84, "ctltype": 2, "fn": "Timb_Power switch 01EDTx84.png"}, "Timb&kmGallery_GREENATTACKKNOB_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_GREENATTACKKNOB_(64129).png"}, "Timb-SM_OptGrx2_32128-07ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-07ver.png"}, "!Ableton Horizontal Fader Red": {"frames": 128, "cellh": 13, "ctltype": 0, "fn": "!Ableton Horizontal Fader Red.png"}, "Timb&kmGallery_Refection_013_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Refection_013_(64129).png"}, "SC_Loopey-Slider 02_1664-101": {"frames": 101, "cellh": 64, "ctltype": 1, "fn": "SC_Loopey-Slider 02_1664-101.png"}, "FXGUI2017_NITROGEN(18-2)": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "FXGUI2017_NITROGEN(18-2).png"}, "Switcher_MiniSwitcher2": {"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2.png"}, "Timb&kmGallery_Sonatom_bipo_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Sonatom_bipo_(64129).png"}, "Switcher_MiniSwitcher1": {"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher1.png"}, "Timb_LMBassMasterSlider1orange": {"frames": 128, "cellh": 194, "ctltype": 1, "fn": "Timb_LMBassMasterSlider1orange.png"}, "Timb_MeterHRZPAULA_8257-128": {"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZPAULA_8257-128.png"}, "SC_SimpleMeterHORZ2_(8x4-100fr)": {"frames": 100, "cellh": 4, "ctltype": 3, "fn": "SC_SimpleMeterHORZ2_(8x4-100fr).png"}, "Timb_2020-Def6MUTE": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_2020-Def6MUTE.png"}, "Timb_SnowFXOnOff16WASD-10": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-10.png"}, "Timb_SnowFXOnOff16WASD-13": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-13.png"}, "Timb_SnowFXOnOff16WASD-12": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-12.png"}, "Timb_SnowFXOnOff16WASD-15": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-15.png"}, "Timb_SnowFXOnOff16WASD-14": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-14.png"}, "Timb_SnowFXOnOff16WASD-17": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-17.png"}, "Timb_SnowFXOnOff16WASD-16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-16.png"}, "Timb_SnowFXOnOff16WASD-19": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-19.png"}, "Timb_SnowFXOnOff16WASD-18": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-18.png"}, "Timb-SM_Retro_75100": {"frames": 100, "cellh": 75, "ctltype": 0, "fn": "Timb-SM_Retro_75100.png"}, "Timb&kmGallery_Neve Red Knob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Neve Red Knob_(64129).png"}, "Timb_MeterDEF3_8x123-129": {"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterDEF3_8x123-129.png"}, "Timb&kmGallery_Wasteland 002_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Wasteland 002_(64129).png"}, "CybZinc_Button-0116x": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "CybZinc_Button-0116x.png"}, "__Snapshot_timb-Rand0a": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0a.png"}, "__Snapshot_timb-Rand0c": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0c.png"}, "__Snapshot_timb-Rand0b": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0b.png"}, "__Snapshot_timb-Rand0e": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0e.png"}, "__Snapshot_timb-Rand0d": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0d.png"}, "__Snapshot_timb-Rand0g": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Rand0g.png"}, "__Snapshot_timb-Rand0f": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand0f.png"}, "Timb-SM_BlooVOL_40120": {"frames": 120, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_BlooVOL_40120.png"}, "Timb&kmGallery_knob_52_silver_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_52_silver_(64129).png"}, "FXGUI2017_BESTPOKE_DIST(15-2)": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_DIST(15-2).png"}, "KM2016_Sweet_Pan01yellow_(24x24-128fr)": {"frames": 128, "cellh": 24, "ctltype": 0, "fn": "KM2016_Sweet_Pan01yellow_(24x24-128fr).png"}, "timb_RadioButton-1": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb_RadioButton-1.png"}, "timb_RadioButton-0": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb_RadioButton-0.png"}, "timb_RadioButton-2": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb_RadioButton-2.png"}, "Timb&kmGallery_color_knob (1)_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_color_knob (1)_(48129).png"}, "TJA_NovLauConButtSmall": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "TJA_NovLauConButtSmall.png"}, "Timb&HY_DL2_Slider_(1664)": {"frames": 130, "cellh": 64, "ctltype": 1, "fn": "Timb&HY_DL2_Slider_(1664).png"}, "Timb&kmGallery_ShinyOrangeKSP8UNI_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyOrangeKSP8UNI_(64129).png"}, "Timb&kmGallery_Turquoise_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_Turquoise_(48129).png"}, "__Snapshotv13-43c": {"frames": 1, "cellh": 43, "ctltype": 4, "fn": "__Snapshotv13-43c.png"}, "__Snapshotv13-43b": {"frames": 1, "cellh": 43, "ctltype": 4, "fn": "__Snapshotv13-43b.png"}, "__Snapshotv13-43a": {"frames": 1, "cellh": 43, "ctltype": 4, "fn": "__Snapshotv13-43a.png"}, "__Snapshotv13-43d": {"frames": 1, "cellh": 43, "ctltype": 4, "fn": "__Snapshotv13-43d.png"}, "SC_knob10bis50x127": {"frames": 127, "cellh": 50, "ctltype": 0, "fn": "SC_knob10bis50x127.png"}, "SimpleFlat2_32": {"frames": 100, "cellh": 32, "ctltype": 0, "fn": "SimpleFlat2_32.png"}, "Timb_GREEN LED KNOB_64-128": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_GREEN LED KNOB_64-128.png"}, "Timb-SM_Replica's_02B_14x100-129": {"frames": 129, "cellh": 14, "ctltype": 1, "fn": "Timb-SM_Replica's_02B_14x100-129.png"}, "Timb_SIDECHAIN_knobmed_56129": {"frames": 129, "cellh": 56, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_56129.png"}, "__Snapshot-b": {"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshot-b.png"}, "Timb-SM_OptGrx2_40128-15ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-15ver.png"}, "Timb&Bryntes_Trap4_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Trap4_(64129).png"}, "Timb_HumbleWhomble_32-129": {"frames": 129, "cellh": 32, "ctltype": 0, "fn": "Timb_HumbleWhomble_32-129.png"}, "Timb_SendBOX-PAN_(16-129)puurpDrk": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)puurpDrk.png"}, "Timb_SSpot2018Control-001": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_SSpot2018Control-001.png"}, "Timb_SSpot2018Control-002": {"frames": 2, "cellh": 30, "ctltype": 2, "fn": "Timb_SSpot2018Control-002.png"}, "Timb_SSpot2018Control-003": {"frames": 2, "cellh": 30, "ctltype": 2, "fn": "Timb_SSpot2018Control-003.png"}, "Timb_SSpot2018Control-004": {"frames": 101, "cellh": 103, "ctltype": 0, "fn": "Timb_SSpot2018Control-004.png"}, "Timb_SSpot2018Control-005": {"frames": 101, "cellh": 39, "ctltype": 0, "fn": "Timb_SSpot2018Control-005.png"}, "Timb&kmGallery_XVVFaderEDT1_128x130fr": {"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDT1_128x130fr.png"}, "Timb_SSpot2018Control-007": {"frames": 101, "cellh": 58, "ctltype": 0, "fn": "Timb_SSpot2018Control-007.png"}, "Timb_SSpot2018Control-008": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SSpot2018Control-008.png"}, "Timb_SSpot2018Control-009": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SSpot2018Control-009.png"}, "TimbSM17_Switches06d8x8": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "TimbSM17_Switches06d8x8.png"}, "Timb_WavesF6EQ_(64x130)2": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb_WavesF6EQ_(64x130)2.png"}, "Timb&kmGallery_MiniMoogSelc_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MiniMoogSelc_(64129).png"}, "Timb_Grig2018_Controls--47b": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--47b.png"}, "Timb_Grig2018_Controls--47c": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--47c.png"}, "SimpleMeter-STORAGE_8x8x200": {"frames": 200, "cellh": 8, "ctltype": 3, "fn": "SimpleMeter-STORAGE_8x8x200.png"}, "Timb_FAKECLOCK2018-1": {"frames": 100, "cellh": 64, "ctltype": 0, "fn": "Timb_FAKECLOCK2018-1.png"}, "Switcher06(18x148)b": {"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher06(18x148)b.png"}, "Timb_SQUARE_16x16-128_Grey": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_SQUARE_16x16-128_Grey.png"}, "Microtonic Multi_BEETLEKNOBcrp": {"frames": 92, "cellh": 50, "ctltype": 0, "fn": "Microtonic Multi_BEETLEKNOBcrp.png"}, "Timb_Flatomat_MUTE20": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_Flatomat_MUTE20.png"}, "SimpleMeter_864red": {"frames": 100, "cellh": 64, "ctltype": 3, "fn": "SimpleMeter_864red.png"}, "lbx_button_rg24": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "lbx_button_rg24.png"}, "Timb&kmGallery_XVVFaderEDT2_128x130fr": {"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDT2_128x130fr.png"}, "Timb_SnowFXOnOff_ UGGLT2c3": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2c3.png"}, "Timb_SnowFXOnOff_ UGGLT2c2": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2c2.png"}, "timb_LEDeXp9": {"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp9.png"}, "timb_LEDeXp8": {"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp8.png"}, "Timb_SnowFXOnOff_ UGGLT2c4": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2c4.png"}, "timb_LEDeXp5": {"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp5.png"}, "timb_LEDeXp4": {"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp4.png"}, "timb_LEDeXp7": {"frames": 100, "cellh": 99, "ctltype": 3, "fn": "timb_LEDeXp7.png"}, "timb_LEDeXp6": {"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp6.png"}, "SC_SliderH-01_(64x16-128fr)": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(64x16-128fr).png"}, "Timb_5dB5_T-COMP-2": {"frames": 100, "cellh": 48, "ctltype": 0, "fn": "Timb_5dB5_T-COMP-2.png"}, "Timb_5dB5_T-COMP-1": {"frames": 100, "cellh": 96, "ctltype": 0, "fn": "Timb_5dB5_T-COMP-1.png"}, "timb_LEDeXp2": {"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp2.png"}, "Timb_ColorCode_(19-129)-04red": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-04red.png"}, "SimpleMeter_864green": {"frames": 100, "cellh": 64, "ctltype": 3, "fn": "SimpleMeter_864green.png"}, "Timb&kmGallery_happyknob_3_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_happyknob_3_(64129).png"}, "Timb_Meter_SESMODTRCK_8x33b": {"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33b.png"}, "Timb_Meter_SESMODTRCK_8x33c": {"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33c.png"}, "Timb_Meter_SESMODTRCK_8x33d": {"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33d.png"}, "Timb_Meter_SESMODTRCK_8x33e": {"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33e.png"}, "Timb_Simple Color Frames-Red": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Red.png"}, "SimpleFader_24160": {"frames": 100, "cellh": 160, "ctltype": 1, "fn": "SimpleFader_24160.png"}, "SimpleButton_16GREENlosat": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16GREENlosat.png"}, "timb_LEDeXp5vert2": {"frames": 100, "cellh": 32, "ctltype": 3, "fn": "timb_LEDeXp5vert2.png"}, "timb_LEDeXp5vert3": {"frames": 100, "cellh": 32, "ctltype": 3, "fn": "timb_LEDeXp5vert3.png"}, "__Snapshotv08mini": {"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshotv08mini.png"}, "LBX_CircleKnob1": {"frames": 100, "cellh": 48, "ctltype": 0, "fn": "LBX_CircleKnob1.png"}, "!A 2_v0001": {"frames": 101, "cellh": 32, "fn": "!A 2_v0001.png"}, "Timb_FLstyleEdt-07b_32-128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-07b_32-128.png"}, "GR METER Black ZenoMOD": {"frames": 31, "cellh": 78, "ctltype": 3, "fn": "GR METER Black ZenoMOD.png"}, "Timb_AudioThing-VinylStrip_96129": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_AudioThing-VinylStrip_96129.png"}, "Timb-SM_OptGrx2_64128-07ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-07ver.png"}, "Timb_MONITOR2_(111x176-128)bFlip": {"frames": 128, "cellh": 176, "ctltype": 3, "fn": "Timb_MONITOR2_(111x176-128)bFlip.png"}, "Switcher_Bestpoke-x2e(48x22)": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2e(48x22).png"}, "LBXTimb_aSimpleSample_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample_16130.png"}, "Timb&kmGallery_Redgain_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Redgain_(64129).png"}, "Timb&kmGallery_Particles_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Particles_(64129).png"}, "Timb_MultiFXSENDER12x16-9fr": {"frames": 9, "cellh": 16, "ctltype": 2, "fn": "Timb_MultiFXSENDER12x16-9fr.png"}, "Timb&HY_DLY3LikeBB4_(64130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB4_(64130).png"}, "Timb_MeterWavesCLA-234": {"frames": 130, "cellh": 234, "ctltype": 3, "fn": "Timb_MeterWavesCLA-234.png"}, "Timb_Grig2018_Controls--14": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Grig2018_Controls--14.png"}, "Timb-NickMoritz_BigKnob-02_64-16fr": {"frames": 16, "cellh": 64, "ctltype": 0, "fn": "Timb-NickMoritz_BigKnob-02_64-16fr.png"}, "Timb_BigbuttonRed16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_BigbuttonRed16.png"}, "!AL Horizontal Fader Yellow Small": {"frames": 128, "cellh": 13, "ctltype": 0, "fn": "!AL Horizontal Fader Yellow Small.png"}, "TimbKMGL_Nice_black_3D_knob_128": {"frames": 128, "cellh": 128, "ctltype": 0, "fn": "TimbKMGL_Nice_black_3D_knob_128.png"}, "lbx_knob48_smoothblack_red": {"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_red.png"}, "Timb_FLstyleEdt-06d_32-128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-06d_32-128.png"}, "Timb_ColorCode_(19-129)-03blo": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-03blo.png"}, "Timb&kmGallery_Abletunes_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Abletunes_(64129).png"}, "LBX-3Dknob-01_(48x128)": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "LBX-3Dknob-01_(48x128).png"}, "Timb-SM_GrigKnob-30_43x49-127": {"frames": 127, "cellh": 49, "ctltype": 0, "fn": "Timb-SM_GrigKnob-30_43x49-127.png"}, "Timb-SM_BiPolPAN_80101": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_BiPolPAN_80101.png"}, "Timb&kmGallery_RedBrick_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_RedBrick_(64129).png"}, "Timb_MeterLarge-VERT_16334-128fr": {"frames": 128, "cellh": 334, "ctltype": 3, "fn": "Timb_MeterLarge-VERT_16334-128fr.png"}, "Timb&kmGallery_ScaleRed_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ScaleRed_(64129).png"}, "Timb&HY_Seq16x3v2_SLIDER_16x64-1": {"frames": 101, "cellh": 64, "ctltype": 1, "fn": "Timb&HY_Seq16x3v2_SLIDER_16x64-1.png"}, "Timb&HY_Seq16x3v2_SLIDER_16x64-2": {"frames": 101, "cellh": 64, "ctltype": 1, "fn": "Timb&HY_Seq16x3v2_SLIDER_16x64-2.png"}, "Timb&HY_Seq16x3v2_SLIDER_16x64-3": {"frames": 101, "cellh": 64, "ctltype": 1, "fn": "Timb&HY_Seq16x3v2_SLIDER_16x64-3.png"}, "Timb-NickMoritz_BigKnob-02_128-16fr": {"frames": 16, "cellh": 128, "ctltype": 0, "fn": "Timb-NickMoritz_BigKnob-02_128-16fr.png"}, "Timb_MeterBlackOnixTwo_13x123-129": {"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_13x123-129.png"}, "Timb_SIDECHAIN_knobmed_48129Ornge": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_48129Ornge.png"}, "Timb&kmGallery_TB303_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_TB303_(64129).png"}, "Timb&HY_DLY3Like_(64130)2": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3Like_(64130)2.png"}, "Timb_FLstyleEdt-06c_32-128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-06c_32-128.png"}, "Timb&kmGallery_Wasteland 006_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Wasteland 006_(64129).png"}, "LBXTimb_ILPoizoneWheel-01": {"frames": 128, "cellh": 100, "ctltype": 1, "fn": "LBXTimb_ILPoizoneWheel-01.png"}, "Timb_Transparent01_(18x64-128)": {"frames": 128, "cellh": 18, "ctltype": 1, "fn": "Timb_Transparent01_(18x64-128).png"}, "timb_HoRNetHCS1_x64_101_": {"frames": 100, "cellh": 100, "ctltype": 0, "fn": "timb_HoRNetHCS1_x64_101_.png"}, "Timb_SIDECHAIN_knobmed_32129green": {"frames": 129, "cellh": 32, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_32129green.png"}, "Timb-SM_GRIG5-38_39x39-127": {"frames": 127, "cellh": 39, "ctltype": 0, "fn": "Timb-SM_GRIG5-38_39x39-127.png"}, "SC_KNOB-REDTRCK_(24x24-101frm)satrt": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)satrt.png"}, "Timb&Bryntes_Gemini1_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Gemini1_(64129).png"}, "Timb_ColorCode_(16-129)-02ylw": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-02ylw.png"}, "!Ableton VU": {"frames": 64, "cellh": 77, "ctltype": 3, "fn": "!Ableton VU.png"}, "FXGUI2017_PAULA(18-2)-1": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "FXGUI2017_PAULA(18-2)-1.png"}, "!16 Button 3 POWER": {"frames": 2, "cellh": 16, "fn": "!16 Button 3 POWER.png"}, "SimpleButton_16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16.png"}, "Timb_boX08_Orange-b": {"frames": 1, "cellh": 15, "ctltype": 4, "fn": "Timb_boX08_Orange-b.png"}, "__Snapshotv09mini": {"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshotv09mini.png"}, "SC_A1GATE_Note_8x32-4fr": {"frames": 4, "cellh": 32, "ctltype": 3, "fn": "SC_A1GATE_Note_8x32-4fr.png"}, "SC_BTNFusionSwsSOLO16b": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNFusionSwsSOLO16b.png"}, "Timb&HY_Seq16x3v2_KNOB1FX2b": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX2b.png"}, "__Snapshotv13-60d": {"frames": 1, "cellh": 60, "ctltype": 4, "fn": "__Snapshotv13-60d.png"}, "__Snapshotv13-60b": {"frames": 1, "cellh": 60, "ctltype": 4, "fn": "__Snapshotv13-60b.png"}, "__Snapshotv13-60c": {"frames": 1, "cellh": 60, "ctltype": 4, "fn": "__Snapshotv13-60c.png"}, "Timb&kmGallery_Sustain_003-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Sustain_003-edt_(64129).png"}, "Timb&kmGallery_Drive_006_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Drive_006_(64129).png"}, "Timb_MeterPAULA_8257-128": {"frames": 128, "cellh": 257, "ctltype": 3, "fn": "Timb_MeterPAULA_8257-128.png"}, "__Snapshot_timb-Rand3c": {"frames": 2, "cellh": 16, "ctltype": 4, "fn": "__Snapshot_timb-Rand3c.png"}, "Timb&kmGallery_Jambalaya_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Jambalaya_(64129).png"}, "Timb&HY_DL2_Slider_(24130)": {"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&HY_DL2_Slider_(24130).png"}, "Timb-SM_OptGrx2_40128-14ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-14ver.png"}, "Timb_LMBassMasterSlider1HRZ bloo": {"frames": 128, "cellh": 20, "ctltype": 1, "fn": "Timb_LMBassMasterSlider1HRZ bloo.png"}, "LARGE_Pan_(25x25-101fr)": {"frames": 101, "cellh": 25, "ctltype": 0, "fn": "LARGE_Pan_(25x25-101fr).png"}, "timb_LED20eXp8losatHRZ": {"frames": 100, "cellh": 8, "ctltype": 3, "fn": "timb_LED20eXp8losatHRZ.png"}, "NovLauConKnob3d": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "NovLauConKnob3d.png"}, "Timb_METER-Circle_LBX": {"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX.png"}, "Timb_RC-1-MUTE": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_RC-1-MUTE.png"}, "Timb_MeterHRZBLCKMORE_13322-128fr": {"frames": 128, "cellh": 13, "ctltype": 3, "fn": "Timb_MeterHRZBLCKMORE_13322-128fr.png"}, "!3c Knob Blue": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "!3c Knob Blue.png"}, "Timb&kmGallery_simple_emerald_knob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_simple_emerald_knob_(64129).png"}, "Timb-SM_GrigKnob-09_29x29-129": {"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GrigKnob-09_29x29-129.png"}, "SC_iKnobProgramV2_48128": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "SC_iKnobProgramV2_48128.png"}, "Geist2play": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2play.png"}, "Timb-SM_OptGrx2_64128-10ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-10ver.png"}, "Timb_ColorCode_(16-129)-05orn": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-05orn.png"}, "SC_iKnobProgramV2_40128": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "SC_iKnobProgramV2_40128.png"}, "timb&HYRPEMUTE32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb&HYRPEMUTE32.png"}, "LBX_M-drk": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_M-drk.png"}, "timb_SM2018_SM_CUTE44-5": {"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-5.png"}, "timb_SM2018_SM_CUTE44-4": {"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-4.png"}, "Timb-SM_OptGrx2_64128-11ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-11ver.png"}, "timb_SM2018_SM_CUTE44-1": {"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-1.png"}, "timb_SM2018_SM_CUTE44-3": {"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-3.png"}, "timb_SM2018_SM_CUTE44-2": {"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-2.png"}, "KM2016_CPHATbpFiltrMIX_32-128fr": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_CPHATbpFiltrMIX_32-128fr.png"}, "lbx_knob128_smoothblack_white": {"frames": 101, "cellh": 128, "ctltype": 0, "fn": "lbx_knob128_smoothblack_white.png"}, "Timb_TDSHES_(24x129)-06": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-06.png"}, "FXGUI2017_PAULA(18-2)-2": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "FXGUI2017_PAULA(18-2)-2.png"}, "SC_iKnobProgram_48128": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "SC_iKnobProgram_48128.png"}, "Timb-NickMoritz_SmallKnob-04_32128brwn": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-04_32128brwn.png"}, "timb_LED20eXp10onyx": {"frames": 100, "cellh": 294, "ctltype": 3, "fn": "timb_LED20eXp10onyx.png"}, "SC_SliderH_MaschineNo(timbmod64x16-128fr)": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH_MaschineNo(timbmod64x16-128fr).png"}, "timb_LEDeXp3": {"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp3.png"}, "Timb_TDSHES_(24x129)-03": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-03.png"}, "timb_GRANITESTARTSLIDER": {"frames": 1000, "cellh": 16, "ctltype": 1, "fn": "timb_GRANITESTARTSLIDER.png"}, "KM2016_knob_(26x26-128fr)_purpl": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_purpl.png"}, "SC_KNOB-REDTRCK_(24x24-101frm)bluesft": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)bluesft.png"}, "TJA_Zebra2": {"frames": 128, "cellh": 28, "ctltype": 0, "fn": "TJA_Zebra2.png"}, "Timb_SendBOX-PAN_(16-129)": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129).png"}, "LBX_ledstrip_g": {"frames": 100, "cellh": 250, "ctltype": 3, "fn": "LBX_ledstrip_g.png"}, "Timb_5dB5_T-COMP-4meter": {"frames": 100, "cellh": 181, "ctltype": 3, "fn": "Timb_5dB5_T-COMP-4meter.png"}, "Timb&kmGallery_Stamp_003_bipo_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Stamp_003_bipo_(64129).png"}, "Timb_HandMadeMUTEONSOLO28": {"frames": 3, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO28.png"}, "Timb_KNOB&METER-02_(48-128)_A-Knob": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_KNOB&METER-02_(48-128)_A-Knob.png"}, "SimpleMeter-STORAGE_15x15x200c": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200c.png"}, "SimpleBox_6424": {"frames": 1, "cellh": 24, "fn": "SimpleBox_6424.png"}, "KM2016_SimpleBigKnobSatGreen_40-128fr": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobSatGreen_40-128fr.png"}, "NitroButto16-01redgreen": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-01redgreen.png"}, "!3c Knob Red": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "!3c Knob Red.png"}, "!3c Knob Green": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "!3c Knob Green.png"}, "Timb_DramaKing-Green_48128": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_DramaKing-Green_48128.png"}, "Timb-SM_OptGrx2_32128-02ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-02ver.png"}, "Timb_MeterSessionMod_8240-128": {"frames": 128, "cellh": 240, "ctltype": 3, "fn": "Timb_MeterSessionMod_8240-128.png"}, "LBX_CircleSlider1": {"frames": 101, "cellh": 256, "ctltype": 7, "knbsz": 32, "fn": "LBX_CircleSlider1.png"}, "Timb_MeterLarge-HORZ_16334-128fr": {"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterLarge-HORZ_16334-128fr.png"}, "!AL 2S Grey Empty Knob Blue": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL 2S Grey Empty Knob Blue.png"}, "Timb_SnowFXOnOff_ UGGLT2db": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2db.png"}, "SC_Switcher-02-109": {"frames": 2, "cellh": 109, "ctltype": 2, "fn": "SC_Switcher-02-109.png"}, "lbx_knob128_smoothblack_blue": {"frames": 101, "cellh": 128, "ctltype": 0, "fn": "lbx_knob128_smoothblack_blue.png"}, "Timb-SM_Saturday Knobs_03-D_40101fr": {"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_03-D_40101fr.png"}, "Timb_ColorCode_(16-129)-01grn": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-01grn.png"}, "Timb_MeterBlackOnixTwo_8x123-129grn": {"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x123-129grn.png"}, "Timb_HUBSWITCH": {"frames": 1, "cellh": 59, "ctltype": 4, "fn": "Timb_HUBSWITCH.png"}, "Timb&kmGallery_Aero_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Aero_(64129).png"}, "KM2016_knob_(26x26-128fr)_grey": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_grey.png"}, "NitroButto16-03FX": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-03FX.png"}, "lbx_knob96_smoothblack_red": {"frames": 101, "cellh": 96, "ctltype": 0, "fn": "lbx_knob96_smoothblack_red.png"}, "Timb_Actions_SAVE": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_SAVE.png"}, "Timb&kmGallery_Half Punk-bi_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Half Punk-bi_(64129).png"}, "Timb_HumbleWhomble_96-129": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_HumbleWhomble_96-129.png"}, "Timb&kmGallery_knob_64_white1_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_64_white1_(64129).png"}, "Timb-SM_RazorPAN_50x50-101": {"frames": 101, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_RazorPAN_50x50-101.png"}, "KM2016_knobTmbmod_(26x26-128fr)_red": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_red.png"}, "timb_LED20eXp4vertic": {"frames": 100, "cellh": 32, "ctltype": 3, "fn": "timb_LED20eXp4vertic.png"}, "Timb_5dB5_T-COMP-3buttonb": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_5dB5_T-COMP-3buttonb.png"}, "Timb-SM_GRIG5-48_29x29-91": {"frames": 91, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GRIG5-48_29x29-91.png"}, "!9-2020_LEON3D-2020edit_01": {"frames": 128, "cellh": 128, "ctltype": 0, "fn": "!9-2020_LEON3D-2020edit_01.png"}, "Switcher05b(18x148)": {"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher05b(18x148).png"}, "SimpleMeter-STORAGE_15x15x200i": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200i.png"}, "Timb_MeterFUNKTION_8132-128fr": {"frames": 128, "cellh": 132, "ctltype": 3, "fn": "Timb_MeterFUNKTION_8132-128fr.png"}, "Timb_WavesF6OnoFF(32)b": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_WavesF6OnoFF(32)b.png"}, "SimpleMeterGreen_16192": {"frames": 100, "cellh": 192, "ctltype": 3, "fn": "SimpleMeterGreen_16192.png"}, "__Snapshotv05e3": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05e3.png"}, "__Snapshotv05e2": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05e2.png"}, "Timb&HY_mozole-1_(64x130)": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_mozole-1_(64x130).png"}, "LBX_ledstrip_c_gy": {"frames": 100, "cellh": 250, "ctltype": 3, "fn": "LBX_ledstrip_c_gy.png"}, "!16 Button speaker": {"frames": 2, "cellh": 16, "fn": "!16 Button speaker.png"}, "LBX-3Dknob-01_(32x128)": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "LBX-3Dknob-01_(32x128).png"}, "__Snapshot_timb-Rand2c": {"frames": 2, "cellh": 128, "ctltype": 4, "fn": "__Snapshot_timb-Rand2c.png"}, "__Snapshot_timb-Rand2b": {"frames": 2, "cellh": 128, "ctltype": 4, "fn": "__Snapshot_timb-Rand2b.png"}, "__Snapshot_timb-Rand2a": {"frames": 2, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand2a.png"}, "__Snapshot_timb-Rand2e": {"frames": 2, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Rand2e.png"}, "__Snapshot_timb-Rand2d": {"frames": 2, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand2d.png"}, "Timb&kmGallery_maschine_editTimbeditB_(64x130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditB_(64x130).png"}, "timb_HoRNetHCS1_x64_103_cc": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "timb_HoRNetHCS1_x64_103_cc.png"}, "Timb&kmGallery_Symmetry_(64129)b4bars3": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b4bars3.png"}, "SimpleMeter-STORAGE_15x15x200k": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200k.png"}, "Timb_FLstyleEdt-02_40-128": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb_FLstyleEdt-02_40-128.png"}, "SimpleMeter-Def5_(4x40-129fr)red": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)red.png"}, "Timb&HY_Seq16x3v2_KNOB4": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB4.png"}, "Timb&HY_Seq16x3v2_KNOB3": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB3.png"}, "Timb&HY_Seq16x3v2_KNOB2": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB2.png"}, "Timb&HY_Seq16x3v2_KNOB1": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1.png"}, "Timb-SM_Monday Knobs-04_80101": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-04_80101.png"}, "Timb_2018_BUTTONEXIT64-01": {"frames": 2, "cellh": 64, "ctltype": 2, "fn": "Timb_2018_BUTTONEXIT64-01.png"}, "__Snapshotv07mini": {"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshotv07mini.png"}, "Timb_MeterHRZILOGICFREE_16226-128fr": {"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZILOGICFREE_16226-128fr.png"}, "KM2016_cyan_light_knob_(32x32-128fr)": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_cyan_light_knob_(32x32-128fr).png"}, "SC_SimpleMeterHORZ2_(32x8-100fr)": {"frames": 100, "cellh": 8, "ctltype": 3, "fn": "SC_SimpleMeterHORZ2_(32x8-100fr).png"}, "lbx_slider160_smoothblack_red": {"frames": 101, "cellh": 160, "ctltype": 1, "fn": "lbx_slider160_smoothblack_red.png"}, "Timb&kmGallery_KNB red_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_KNB red_(64129).png"}, "FXGUI2017_BESTPOKE_MOD(15-2)": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_MOD(15-2).png"}, "timb_LEDeXp5vert": {"frames": 100, "cellh": 32, "ctltype": 3, "fn": "timb_LEDeXp5vert.png"}, "Timb_JSMIXER_MuteOnSolo_16-3": {"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_16-3.png"}, "!16 Circle": {"frames": 2, "cellh": 16, "fn": "!16 Circle.png"}, "LBXTimb_aSimpleSample8_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample8_16130.png"}, "Timb&kmGallery_maschine_editTimbeditE_(64x130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditE_(64x130).png"}, "Timb_PoorMelda04_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda04_(96x129).png"}, "NitroButto16-01graygreen": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-01graygreen.png"}, "KM2016_SimpleBigKnobOrange_48-128fr": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "KM2016_SimpleBigKnobOrange_48-128fr.png"}, "!16 Circle letter P": {"frames": 2, "cellh": 16, "fn": "!16 Circle letter P.png"}, "Timb_2018_BUTTONOFF32-01": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_BUTTONOFF32-01.png"}, "Timb_2018_BUTTONOFF32-02": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_BUTTONOFF32-02.png"}, "TJA_SliderYellow1": {"frames": 128, "cellh": 200, "ctltype": 1, "fn": "TJA_SliderYellow1.png"}, "Timb-SM_OptGrx2_40128-17ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-17ver.png"}, "Timb_MeterSideChain_8-64yellow": {"frames": 129, "cellh": 64, "ctltype": 3, "fn": "Timb_MeterSideChain_8-64yellow.png"}, "Guitar Rig 5_630_PICTURE": {"frames": 127, "cellh": 43, "ctltype": 0, "fn": "Guitar Rig 5_630_PICTURE.png"}, "Timb&kmGallery_Hippy 5_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 5_(64129).png"}, "Timb-SM_OptGrx2_64128-13ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-13ver.png"}, "FXGUI2017_JANNE(29-2)": {"frames": 2, "cellh": 29, "ctltype": 2, "fn": "FXGUI2017_JANNE(29-2).png"}, "Timb_5dB5_K-MOR-2": {"frames": 100, "cellh": 48, "ctltype": 0, "fn": "Timb_5dB5_K-MOR-2.png"}, "Timb_5dB5_K-MOR-1": {"frames": 100, "cellh": 96, "ctltype": 0, "fn": "Timb_5dB5_K-MOR-1.png"}, "Timb_JSMIXER_MuteOnSolo_16-3b": {"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_16-3b.png"}, "Timb_JSMIXER_MuteOnSolo_16-3c": {"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_16-3c.png"}, "Timb-SM_OptGrx2_32128-08ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-08ver.png"}, "Timb_Shape-orangeEDT-96128_po": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-orangeEDT-96128_po.png"}, "Switcher05(18x148)": {"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher05(18x148).png"}, "Timb_Meter_NITROGENTRCK_4x33": {"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_NITROGENTRCK_4x33.png"}, "Timb&kmGallery_Turquoise_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Turquoise_(64129).png"}, "SC_SliderH-01_(32x8-128fr)": {"frames": 128, "cellh": 8, "ctltype": 1, "fn": "SC_SliderH-01_(32x8-128fr).png"}, "Timb-SM_OptGrx2_32128-19ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-19ver.png"}, "Timb&FL_Max+3bEQ_(128x32-130fr)": {"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&FL_Max+3bEQ_(128x32-130fr).png"}, "Timb-SM_BlooVOL_60120": {"frames": 120, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_BlooVOL_60120.png"}, "SimpleMeter-STORAGE_15x15x200": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200.png"}, "!Fader Horiz Flat 66px Yellow": {"frames": 128, "cellh": 13, "ctltype": 1, "fn": "!Fader Horiz Flat 66px Yellow.png"}, "Timb_T-Master_knob_64101": {"frames": 101, "cellh": 64, "ctltype": 0, "fn": "Timb_T-Master_knob_64101.png"}, "FXGUI2017_DEF5NITE(21-2)-2": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "FXGUI2017_DEF5NITE(21-2)-2.png"}, "Timb_Button_MC909_21xb": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Button_MC909_21xb.png"}, "FXGUI2017_DEF5NITE(21-2)-1": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "FXGUI2017_DEF5NITE(21-2)-1.png"}, "Large_Solo(23x46)": {"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Large_Solo(23x46).png"}, "TJA_NovLauConButt": {"frames": 2, "cellh": 64, "ctltype": 2, "fn": "TJA_NovLauConButt.png"}, "Timb-SM_OptGrx2_64128-09ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-09ver.png"}, "Timb_METER-Circle": {"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle.png"}, "__Snapshot_timb-Clear10": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear10.png"}, "Timb_HandMadeMUTEONSOLO32": {"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32.png"}, "KM2016_BlackAngleEdt_32-128fr": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_BlackAngleEdt_32-128fr.png"}, "SC_PLAY_16x16-2fr": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr.png"}, "Timb_MeterBlackOnixTwo_8x63-129red": {"frames": 129, "cellh": 63, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129red.png"}, "Timb_METER-Circle-FOR_FLSTYLE2-L": {"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE2-L.png"}, "MPS-16128SEQ-1": {"frames": 8, "cellh": 128, "ctltype": 1, "fn": "MPS-16128SEQ-1.png"}, "Timb-SM_OptGrx2_40128-16ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-16ver.png"}, "Timb-SM_OptGrx2_32128-01ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-01ver.png"}, "SC_SimpleMeterHORZ2_(16x4-100fr)": {"frames": 100, "cellh": 4, "ctltype": 3, "fn": "SC_SimpleMeterHORZ2_(16x4-100fr).png"}, "FXGUI2018_NoGFX-00": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-00.png"}, "FXGUI2018_NoGFX-01": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-01.png"}, "FXGUI2018_NoGFX-02": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-02.png"}, "FXGUI2018_NoGFX-03": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-03.png"}, "FXGUI2018_NoGFX-04": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-04.png"}, "FXGUI2018_NoGFX-05": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-05.png"}, "FXGUI2018_NoGFX-06": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-06.png"}, "FXGUI2018_NoGFX-07": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-07.png"}, "FXGUI2018_NoGFX-08": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-08.png"}, "FXGUI2018_NoGFX-09": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-09.png"}, "Timb-SM_OptGrx2_64128-12ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-12ver.png"}, "Timb_METER-Circle-FOR_FLSTYLE2-R": {"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE2-R.png"}, "timb_MidiPackTransp-1": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "timb_MidiPackTransp-1.png"}, "Timb&kmGallery_LFO_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_LFO_(64129).png"}, "SC_SliderH-01_(40x16-128fr)drk": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(40x16-128fr)drk.png"}, "SC_Switcher-02-65": {"frames": 2, "cellh": 109, "ctltype": 2, "fn": "SC_Switcher-02-65.png"}, "SimpleFlat_32": {"frames": 100, "cellh": 32, "ctltype": 0, "fn": "SimpleFlat_32.png"}, "__Snapshotv11-56": {"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv11-56.png"}, "Timb_Def5_FXonoff_(19x)": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Def5_FXonoff_(19x).png"}, "Timb_5dB5_B-MON-3button": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_5dB5_B-MON-3button.png"}, "lbx_knob96_smoothblack_white": {"frames": 101, "cellh": 96, "ctltype": 0, "fn": "lbx_knob96_smoothblack_white.png"}, "Timb&HY_ModernishX2e2": {"frames": 1, "cellh": 24, "ctltype": 4, "fn": "Timb&HY_ModernishX2e2.png"}, "Timb_MadMon8-G2_Bottom": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_MadMon8-G2_Bottom.png"}, "Timb-SM_Loopey's Set 02a_50x50-101": {"frames": 101, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02a_50x50-101.png"}, "SC_Loopey-AmpKnob(50x101)": {"frames": 101, "cellh": 50, "ctltype": 0, "fn": "SC_Loopey-AmpKnob(50x101).png"}, "Timb&Bryntes_SteinASS_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_SteinASS_(64129).png"}, "Timb_HY-Exit-1": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HY-Exit-1.png"}, "Timb_Vogue_Green_64-129": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Green_64-129.png"}, "Timb_MeterHydraW_894-128": {"frames": 128, "cellh": 94, "ctltype": 3, "fn": "Timb_MeterHydraW_894-128.png"}, "timb_LED20eXp7vertic": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp7vertic.png"}, "Timb_WavesF6EQ_(64x130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb_WavesF6EQ_(64x130).png"}, "Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129": {"frames": 129, "cellh": 13, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwoHRZNLoSat_13x123-129.png"}, "Timb&kmGallery_m400_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_m400_(64129).png"}, "Timb_Minika16101_YLLW": {"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_YLLW.png"}, "timb_LED20eXp4zz": {"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4zz.png"}, "Timb-SM_cutemat_59128": {"frames": 128, "cellh": 59, "ctltype": 0, "fn": "Timb-SM_cutemat_59128.png"}, "Timb&kmGallery_ShinyRedKSP8BiPo_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyRedKSP8BiPo_(64129).png"}, "SC_iKnobProgramV2_64128": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_iKnobProgramV2_64128.png"}, "Timb_BigbuttonRed16v2": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_BigbuttonRed16v2.png"}, "Timb&kmGallery_Spine_023-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Spine_023-edt_(64129).png"}, "Timb_BigbuttonRed32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_BigbuttonRed32.png"}, "Timb&kmGallery_roue plastique_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_roue plastique_(64129).png"}, "Timb-SM_Replica's_02_16x100-31fr": {"frames": 31, "cellh": 16, "ctltype": 1, "fn": "Timb-SM_Replica's_02_16x100-31fr.png"}, "Timb&kmGallery_Saifan 2_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Saifan 2_(64129).png"}, "Timb_MeterBlackOnixTwo_8x63-129ylw": {"frames": 129, "cellh": 63, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129ylw.png"}, "!FL Black": {"frames": 2, "cellh": 25, "fn": "!FL Black.png"}, "SimpleMeter-Def5_(4x40-129fr)sbl": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)sbl.png"}, "LBX_S-drk": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_S-drk.png"}, "Timb_Nomomistuune_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_Nomomistuune_(96x129).png"}, "SC_BTNDef5-SOLO_12": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "SC_BTNDef5-SOLO_12.png"}, "SC_BTNDef5-SOLO_16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNDef5-SOLO_16.png"}, "LBXTimb_ILDWW32Silv-01": {"frames": 256, "cellh": 32, "ctltype": 0, "fn": "LBXTimb_ILDWW32Silv-01.png"}, "Timb_Meter_SESMODTRCK_33x4-128fr_R2b": {"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_R2b.png"}, "Timb_Meter_SESMODTRCK_33x4-128fr_R2c": {"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_R2c.png"}, "Large_Mute(23x46)": {"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Large_Mute(23x46).png"}, "TJA_NovLauConButtSmallb": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "TJA_NovLauConButtSmallb.png"}, "TJA_NovLauConButtSmallc": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "TJA_NovLauConButtSmallc.png"}, "LBXTimb_aSimpleSample3_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample3_16130.png"}, "Timb_2018_BUTTONEXIT32-02": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_BUTTONEXIT32-02.png"}, "Timb_Meter_SESMODTRCK_33x4-128fr_L": {"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_L.png"}, "Timb-SM_BlooVOL_50120": {"frames": 120, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_BlooVOL_50120.png"}, "SimpleButton_8GREGRY-WASD": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GREGRY-WASD.png"}, "SimpleBox_4816": {"frames": 1, "cellh": 16, "fn": "SimpleBox_4816.png"}, "Timb_BWG_mute_24x32": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_BWG_mute_24x32.png"}, "Timb_MeterHRZXRAYMANALOGLARGE_16320-128": {"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZXRAYMANALOGLARGE_16320-128.png"}, "Timb_5dB5_D-REZ-4meter": {"frames": 100, "cellh": 181, "ctltype": 3, "fn": "Timb_5dB5_D-REZ-4meter.png"}, "Switcher08b(18x40)": {"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher08b(18x40).png"}, "SC_KNOB-REDTRCK_(24x24-101frm)-brwn": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)-brwn.png"}, "SimpleMeter-Def5_(8x58-100fr)": {"frames": 100, "cellh": 58, "ctltype": 3, "fn": "SimpleMeter-Def5_(8x58-100fr).png"}, "Timb_SendBOX-PAN_(16-129)orange": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)orange.png"}, "Timb_FLstyleEdt-03_32-128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-03_32-128.png"}, "SC_iKnobProgram_64128_4pipeline": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_iKnobProgram_64128_4pipeline.png"}, "Wrench AL": {"frames": 1, "cellh": 15, "ctltype": 2, "fn": "Wrench AL.png"}, "SA needles": {"frames": 90, "cellh": 148, "ctltype": 3, "fn": "SA needles.png"}, "Timb&HY_Seq16x3v2_KNOBbipo4": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOBbipo4.png"}, "SimpleMeter-Def5_(4x24-129fr)RED": {"frames": 129, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x24-129fr)RED.png"}, "timb_LEDeXp7c": {"frames": 100, "cellh": 44, "ctltype": 3, "fn": "timb_LEDeXp7c.png"}, "TJA_NovLauConKnob3d": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "TJA_NovLauConKnob3d.png"}, "Timb_METER-MIRROR-01_16x128-128": {"frames": 128, "cellh": 128, "ctltype": 3, "fn": "Timb_METER-MIRROR-01_16x128-128.png"}, "Timb_LMBassMasterSlider1bloo": {"frames": 128, "cellh": 194, "ctltype": 1, "fn": "Timb_LMBassMasterSlider1bloo.png"}, "timb_HoRNetHCS1_x64_103_bb": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HoRNetHCS1_x64_103_bb.png"}, "SimpleMeter_88green": {"frames": 100, "cellh": 8, "ctltype": 3, "fn": "SimpleMeter_88green.png"}, "TimbSM17_Switches11b(37x)": {"frames": 2, "cellh": 37, "ctltype": 2, "fn": "TimbSM17_Switches11b(37x).png"}, "timb_LED20eXp1-Falcon": {"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp1-Falcon.png"}, "Timb_KNOB&METER-01_(48-128)_B-Meter-R": {"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_KNOB&METER-01_(48-128)_B-Meter-R.png"}, "Timb&kmGallery_XVVFaderEDT3_128x130fr": {"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDT3_128x130fr.png"}, "SimpleMeter-STORAGE_4x8x200": {"frames": 200, "cellh": 4, "ctltype": 3, "fn": "SimpleMeter-STORAGE_4x8x200.png"}, "Timb_KNOB&METER-01_(48-128)_B-Meter-L": {"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_KNOB&METER-01_(48-128)_B-Meter-L.png"}, "Timb_DramaKing_48128": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_DramaKing_48128.png"}, "Timb_Hippy 6mod_40-129": {"frames": 129, "cellh": 40, "ctltype": 0, "fn": "Timb_Hippy 6mod_40-129.png"}, "VUMeter01": {"frames": 101, "cellh": 94, "ctltype": 3, "fn": "VUMeter01.png"}, "Timb_METER-Circle-xx": {"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-xx.png"}, "Timb-SM_Annimot04_40100": {"frames": 100, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Annimot04_40100.png"}, "Timb_2018_ButtonsFrThemes-10": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-10.png"}, "TJA_keys_meter": {"frames": 30, "cellh": 29, "ctltype": 3, "fn": "TJA_keys_meter.png"}, "SC_CamelGATE_8x32-101-b": {"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_CamelGATE_8x32-101-b.png"}, "!Ableton Horizontal Fader": {"frames": 128, "cellh": 13, "ctltype": 1, "fn": "!Ableton Horizontal Fader.png"}, "TJA ValhallaUberModSliderWhite": {"frames": 128, "cellh": 96, "ctltype": 1, "fn": "TJA ValhallaUberModSliderWhite.png"}, "Timb&kmGallery_knobman-lumen_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen_(64129).png"}, "SimpleMeter-Def5_(8x24-100fr)": {"frames": 100, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(8x24-100fr).png"}, "VUMeter-01_128-128": {"frames": 128, "cellh": 128, "ctltype": 3, "fn": "VUMeter-01_128-128.png"}, "Timb-SM_Monday Knobs-03_80101": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-03_80101.png"}, "Timb-SM_GrigKnob-05_42x42-129": {"frames": 129, "cellh": 42, "ctltype": 0, "fn": "Timb-SM_GrigKnob-05_42x42-129.png"}, "Timb-SM_Saturday Knobs_02-A_100101fr": {"frames": 101, "cellh": 100, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_02-A_100101fr.png"}, "Timb_SendSlider2_(32-129fr)": {"frames": 129, "cellh": 32, "ctltype": 1, "fn": "Timb_SendSlider2_(32-129fr).png"}, "SC_SliderH-01_(64x16-128fr)tobuss": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(64x16-128fr)tobuss.png"}, "timb_LED20eXp3vertic": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp3vertic.png"}, "Timb-SM_GrigKnob-14_40x40-128": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_GrigKnob-14_40x40-128.png"}, "Switcher_Bestpoke-x2c(80x22)": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2c(80x22).png"}, "Timb-SM_Loopey's Set 01c_50x50-129": {"frames": 129, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 01c_50x50-129.png"}, "Timb&kmGallery_Tone_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Tone_(64129).png"}, "SC_BTNFusionSwsSOLO16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNFusionSwsSOLO16.png"}, "SC_Switcher-03": {"frames": 2, "cellh": 23, "ctltype": 2, "fn": "SC_Switcher-03.png"}, "SC_Switcher-01": {"frames": 2, "cellh": 28, "ctltype": 2, "fn": "SC_Switcher-01.png"}, "SC_PRGRAMC-BOX_(192x36-128fr)": {"frames": 128, "cellh": 36, "ctltype": 4, "fn": "SC_PRGRAMC-BOX_(192x36-128fr).png"}, "__Snapshot_timb-Rand2bb": {"frames": 2, "cellh": 64, "ctltype": 4, "fn": "__Snapshot_timb-Rand2bb.png"}, "SC_A1GATE_Note_12x18-101fr": {"frames": 101, "cellh": 18, "ctltype": 3, "fn": "SC_A1GATE_Note_12x18-101fr.png"}, "LBX - yellow line 64": {"frames": 100, "cellh": 64, "ctltype": 0, "fn": "LBX - yellow line 64.png"}, "Timb_MIDISPEED_16x3": {"frames": 3, "cellh": 16, "ctltype": 4, "fn": "Timb_MIDISPEED_16x3.png"}, "Timb&kmGallery_Knob23_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Knob23_(64129).png"}, "Timb-SM_GRIG5-01_35x35-129": {"frames": 129, "cellh": 35, "ctltype": 0, "fn": "Timb-SM_GRIG5-01_35x35-129.png"}, "Timb_Blankfiles-ConcertoSliderB_16128-128": {"frames": 128, "cellh": 128, "ctltype": 1, "fn": "Timb_Blankfiles-ConcertoSliderB_16128-128.png"}, "Timb-SM_GRIG5-24_89x91-129": {"frames": 129, "cellh": 91, "ctltype": 0, "fn": "Timb-SM_GRIG5-24_89x91-129.png"}, "GR Meter 2 RED": {"frames": 31, "cellh": 110, "ctltype": 3, "fn": "GR Meter 2 RED.png"}, "Timb&kmGallery_kjLEDknob-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_kjLEDknob-edt_(64129).png"}, "Timb_UpDownArw-13": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-13.png"}, "Timb&kmGallery_XVVFaderEDTB4_128x130fr": {"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDTB4_128x130fr.png"}, "Timb-SM_OptGrx2_32128-03ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-03ver.png"}, "FXGUI2018_NoGFX-12": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-12.png"}, "FXGUI2018_NoGFX-11": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-11.png"}, "FXGUI2018_NoGFX-10": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "FXGUI2018_NoGFX-10.png"}, "Timb_ColorCode_(19-129)-06gry-B": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-06gry-B.png"}, "SC_SliderH-01_(64x16-128fr)drk": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(64x16-128fr)drk.png"}, "__Snapshotv13-60": {"frames": 1, "cellh": 60, "ctltype": 4, "fn": "__Snapshotv13-60.png"}, "Timb_Vogue_Orange_64-129": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Orange_64-129.png"}, "Timb&kmGallery_Amount_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Amount_(64129).png"}, "LBX_2Cogs": {"frames": 1, "cellh": 64, "ctltype": 2, "fn": "LBX_2Cogs.png"}, "Timb_Simple Color Frames-00-32-bloo": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_Simple Color Frames-00-32-bloo.png"}, "Timb_MegaBaby-01A_1620-128": {"frames": 128, "cellh": 20, "ctltype": 3, "fn": "Timb_MegaBaby-01A_1620-128.png"}, "Timb-SM_Saturday Knobs_01-B_80101fr": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_01-B_80101fr.png"}, "LBXTimb_aSimpleSample2_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample2_16130.png"}, "Timb_Vogue_Red_64-129": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Red_64-129.png"}, "Timb_GATEMETER-01_(48-128)-Left": {"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_GATEMETER-01_(48-128)-Left.png"}, "Timb_MeterILOGICFREE_16226-128fr": {"frames": 128, "cellh": 226, "ctltype": 3, "fn": "Timb_MeterILOGICFREE_16226-128fr.png"}, "Timb_HandMadeMUTEONSOLO32d": {"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32d.png"}, "SC_Loopey-Slider Horz01_8816-101": {"frames": 101, "cellh": 16, "ctltype": 1, "fn": "SC_Loopey-Slider Horz01_8816-101.png"}, "Timb_HandMadeMUTEONSOLO32c": {"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32c.png"}, "Timb_HandMadeMUTEONSOLO32b": {"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32b.png"}, "VU METER Black ZenoMOD": {"frames": 31, "cellh": 78, "ctltype": 3, "fn": "VU METER Black ZenoMOD.png"}, "Timb_FLstyleEdt-06b_32-128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-06b_32-128.png"}, "Large_Mute(23x50)": {"frames": 2, "cellh": 25, "ctltype": 2, "fn": "Large_Mute(23x50).png"}, "Timb_MPS_VELO_8x16x130": {"frames": 130, "cellh": 16, "ctltype": 3, "fn": "Timb_MPS_VELO_8x16x130.png"}, "timb_LEDeXp5-4": {"frames": 100, "cellh": 132, "ctltype": 3, "fn": "timb_LEDeXp5-4.png"}, "Timb-SM_OptGrx2_32128-13ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-13ver.png"}, "FXGUI2017_BESTPOKE(16X)": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(16X).png"}, "timb_LEDeXp5-3": {"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp5-3.png"}, "timb_LEDeXp5-2": {"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp5-2.png"}, "Timb_MeterHRZSessionMod_8240-128flip": {"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZSessionMod_8240-128flip.png"}, "SC_KNOB-REDTRCK_(24x24-101frm)ylw": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)ylw.png"}, "Timb-SM_GRIG5-43_37x37-127": {"frames": 127, "cellh": 37, "ctltype": 0, "fn": "Timb-SM_GRIG5-43_37x37-127.png"}, "Timb_SnowFXOnOff_ UGGLT2d": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT2d.png"}, "Timb&kmGallery_maschine_editTimbedit_(64x130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbedit_(64x130).png"}, "Timb-SM_GRIG5-36_51x53-129": {"frames": 129, "cellh": 53, "ctltype": 0, "fn": "Timb-SM_GRIG5-36_51x53-129.png"}, "FXGUI2017_BESTPOKE(16X)2": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(16X)2.png"}, "Timb_LMBassMasterSlider2HRZ orange": {"frames": 128, "cellh": 18, "ctltype": 1, "fn": "Timb_LMBassMasterSlider2HRZ orange.png"}, "Timb_Blankfiles-Superiour-08": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-08.png"}, "Timb_Blankfiles-Superiour-09": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-09.png"}, "Timb&kmGallery_metal_amp_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_metal_amp_(64129).png"}, "Timb_Blankfiles-Superiour-04": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-04.png"}, "Timb_Blankfiles-Superiour-05": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-05.png"}, "Timb_Blankfiles-Superiour-06": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-06.png"}, "Timb_Blankfiles-Superiour-07": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-07.png"}, "Timb_Blankfiles-Superiour-01": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-01.png"}, "Timb_Blankfiles-Superiour-02": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-02.png"}, "Timb_Blankfiles-Superiour-03": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-03.png"}, "Timb-SM_OptGrx2_40128-09ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-09ver.png"}, "Timb_Simple Color Frames-Green": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Green.png"}, "timb_MidiPackTransp-3": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "timb_MidiPackTransp-3.png"}, "timb_MidiPackTransp-2": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "timb_MidiPackTransp-2.png"}, "Timb&kmGallery_3ModernElegant_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_3ModernElegant_(64129).png"}, "Timb-SM_GRIG5-45b_33x33-91": {"frames": 91, "cellh": 33, "ctltype": 0, "fn": "Timb-SM_GRIG5-45b_33x33-91.png"}, "Timb&HY_DLY3LikeBB2_(64130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB2_(64130).png"}, "KM2016_Sweet_SEND_(20x20-128fr)_Purple": {"frames": 128, "cellh": 20, "ctltype": 0, "fn": "KM2016_Sweet_SEND_(20x20-128fr)_Purple.png"}, "LBX_Button32_Red": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32_Red.png"}, "Timb_SIDECHAIN_knobmed_48129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_48129.png"}, "Timb_Shape-blooEDT-96128_po": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-blooEDT-96128_po.png"}, "Timb_Modulators01b_(16x)": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Modulators01b_(16x).png"}, "Timb-SM_Saturday Knobs_01-C_60101fr": {"frames": 101, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_01-C_60101fr.png"}, "Timb_knob verde osc danplug_9696fr": {"frames": 96, "cellh": 96, "ctltype": 0, "fn": "Timb_knob verde osc danplug_9696fr.png"}, "Timb&kmGallery_Predence_012-edt_010_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Predence_012-edt_010_(64129).png"}, "Timb&kmGallery_maschine_editTimbeditB_(64x130)2": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditB_(64x130)2.png"}, "Timb_MeterWavesCLA-117": {"frames": 130, "cellh": 117, "ctltype": 3, "fn": "Timb_MeterWavesCLA-117.png"}, "!Switcher": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "!Switcher.png"}, "SA SLAX limit": {"frames": 31, "cellh": 10, "ctltype": 3, "fn": "SA SLAX limit.png"}, "lbx_knob64_smoothblack_green": {"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_green.png"}, "Timb&kmGallery_XVVFaderEDT4_128x130fr": {"frames": 130, "cellh": 128, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDT4_128x130fr.png"}, "Timb_Meter_SESMODTRCK_4x33": {"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_4x33.png"}, "Timb_SIDECHAIN_knobmed_32129": {"frames": 129, "cellh": 32, "ctltype": 0, "fn": "Timb_SIDECHAIN_knobmed_32129.png"}, "Timb_MulchSlider_20140-129": {"frames": 129, "cellh": 140, "ctltype": 1, "fn": "Timb_MulchSlider_20140-129.png"}, "Timb&HY_DLY3LikeBB1_(64130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB1_(64130).png"}, "Timb-SM_Annimot07vol_70120": {"frames": 120, "cellh": 70, "ctltype": 0, "fn": "Timb-SM_Annimot07vol_70120.png"}, "Timb&kmGallery_Behringer-BCF2000_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Behringer-BCF2000_(64129).png"}, "LBXTimb_aSimpleSample9a_16129WASD": {"frames": 129, "cellh": 12, "ctltype": 0, "fn": "LBXTimb_aSimpleSample9a_16129WASD.png"}, "KM2016_SimpleBigKnobSatRED_40-128fr": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobSatRED_40-128fr.png"}, "Large_Solo(23x50)": {"frames": 2, "cellh": 25, "ctltype": 2, "fn": "Large_Solo(23x50).png"}, "Switcher_MiniSwitcher1b": {"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher1b.png"}, "Timb_Shape-orangeEDT-96128_bipo": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-orangeEDT-96128_bipo.png"}, "Timb-SM_OptGrx2_32128-11ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-11ver.png"}, "Timb_5dB5_B-MON-4meter": {"frames": 100, "cellh": 181, "ctltype": 3, "fn": "Timb_5dB5_B-MON-4meter.png"}, "NORA-REC_64128b": {"frames": 2, "cellh": 64, "ctltype": 2, "fn": "NORA-REC_64128b.png"}, "SC_PLAY_16x16-2fr-e": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr-e.png"}, "Timb-SM_GrigKnob-01_45x46-129": {"frames": 129, "cellh": 46, "ctltype": 0, "fn": "Timb-SM_GrigKnob-01_45x46-129.png"}, "FXGUI2017_BESTPOKE_REV(15-2)": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_REV(15-2).png"}, "Timb_FALCON&UPGExtras-0--": {"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-0--.png"}, "SC_PLAY_16x16-2fr-c": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr-c.png"}, "SC_PLAY_16x16-2fr-b": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr-b.png"}, "Timb_SSpot2018Control-001b": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_SSpot2018Control-001b.png"}, "Timb_HumbleWhomble_128-129": {"frames": 129, "cellh": 128, "ctltype": 0, "fn": "Timb_HumbleWhomble_128-129.png"}, "Timb-SM_Annimot03_60101": {"frames": 101, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Annimot03_60101.png"}, "Timb&kmGallery_Minimal_Modern_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Minimal_Modern_(64129).png"}, "KM2016_CPHATbpFiltrHI_32-128fr": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_CPHATbpFiltrHI_32-128fr.png"}, "Timb&HY_DLY3LikeBB2_(64130)b": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB2_(64130)b.png"}, "Timb-SM_GRIG5-37_51x51-130": {"frames": 130, "cellh": 51, "ctltype": 0, "fn": "Timb-SM_GRIG5-37_51x51-130.png"}, "Timb_Kontakt2018_Controls--02": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Kontakt2018_Controls--02.png"}, "Timb_Kontakt2018_Controls--03": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Kontakt2018_Controls--03.png"}, "Timb_Kontakt2018_Controls--01": {"frames": 2, "cellh": 32, "ctltype": 4, "fn": "Timb_Kontakt2018_Controls--01.png"}, "!A 3": {"frames": 101, "cellh": 32, "fn": "!A 3.png"}, "Timb_5dB5_D-REZ-3button": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_5dB5_D-REZ-3button.png"}, "__Snapshotv10-52": {"frames": 1, "cellh": 52, "ctltype": 4, "fn": "__Snapshotv10-52.png"}, "Timb_VHLRM Slider-01 Electric Blue": {"frames": 128, "cellh": 106, "ctltype": 1, "fn": "Timb_VHLRM Slider-01 Electric Blue.png"}, "Timb_FALCON&UPGExtras-1MS": {"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-1MS.png"}, "Timb-SM_GRIG5-32_35x35-130": {"frames": 130, "cellh": 35, "ctltype": 0, "fn": "Timb-SM_GRIG5-32_35x35-130.png"}, "Timb-SM_GrigKnob-44pan_47x48-129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-44pan_47x48-129.png"}, "Timb-SM_Loopey's Set 02c_40x40-101": {"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02c_40x40-101.png"}, "LBXTimb_aSimpleSample10a_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample10a_16130.png"}, "Timb_MONITOR2_(111x176-128)moreLighty": {"frames": 128, "cellh": 176, "ctltype": 3, "fn": "Timb_MONITOR2_(111x176-128)moreLighty.png"}, "Timb&kmGallery_maschine_editTimbedit_(48x130) dark": {"frames": 130, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbedit_(48x130) dark.png"}, "Timb&Bryntes_Trap3_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Trap3_(64129).png"}, "Kirnu-Cream_x64_109_PNG2": {"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_109_PNG2.png"}, "Kirnu-Cream_x64_109_PNG3": {"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_109_PNG3.png"}, "Timb_PoorMelda05_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda05_(96x129).png"}, "Timb_GoodolWinampBEAT-1": {"frames": 101, "cellh": 29, "ctltype": 3, "fn": "Timb_GoodolWinampBEAT-1.png"}, "Timb_Q3-128129": {"frames": 129, "cellh": 128, "ctltype": 3, "fn": "Timb_Q3-128129.png"}, "LBX_Button32_Yellow": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32_Yellow.png"}, "Timb_HumbleWhomble_64-129": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_HumbleWhomble_64-129.png"}, "Geist2RecRetro": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2RecRetro.png"}, "SC_GraniteMainv2(64-128fr)": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_GraniteMainv2(64-128fr).png"}, "Timb_UpDownArw-01": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-01.png"}, "Timb_UpDownArw-02": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-02.png"}, "Timb_UpDownArw-03": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-03.png"}, "Timb_UpDownArw-04": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-04.png"}, "Timb_UpDownArw-05": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-05.png"}, "Timb_UpDownArw-06": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-06.png"}, "Timb_UpDownArw-07": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-07.png"}, "Timb_UpDownArw-08": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-08.png"}, "Timb_UpDownArw-09": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-09.png"}, "NitroButto16-02redgreen": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "NitroButto16-02redgreen.png"}, "Timb_Actions_LOOP": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_LOOP.png"}, "Timb&kmGallery_ScaleBlu_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ScaleBlu_(64129).png"}, "Timb_Slider_Funktion_24150-129": {"frames": 129, "cellh": 150, "ctltype": 1, "fn": "Timb_Slider_Funktion_24150-129.png"}, "LBX_Actions_PlayStop32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Actions_PlayStop32.png"}, "KM2016_Vintage_Knob(tmbedt64-128fr)": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "KM2016_Vintage_Knob(tmbedt64-128fr).png"}, "SimpleMeter_864green(timbedt)": {"frames": 100, "cellh": 64, "ctltype": 3, "fn": "SimpleMeter_864green(timbedt).png"}, "Timb_KNOB&METER-01_(48-128)_A-Knob": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_KNOB&METER-01_(48-128)_A-Knob.png"}, "timb_LED20eXp4b": {"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4b.png"}, "timb_LED20eXp4c": {"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4c.png"}, "Timb-SM_OptGrx2_32128-18ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-18ver.png"}, "timb_LED20eXp4d": {"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4d.png"}, "__Snapshotv16b": {"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv16b.png"}, "KM2016_CPHATbpFiltrLO_32-128fr": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "KM2016_CPHATbpFiltrLO_32-128fr.png"}, "Timb&kmGallery_Modern_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Modern_(64129).png"}, "Timb_Button_MC909_21x": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Button_MC909_21x.png"}, "KM2016_Sweet_Vol01blue_(24x24-128fr)": {"frames": 128, "cellh": 24, "ctltype": 0, "fn": "KM2016_Sweet_Vol01blue_(24x24-128fr).png"}, "Timb&kmGallery_Hippy 1_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 1_(64129).png"}, "Switcher_Bestpoke-x3b(28x28)": {"frames": 1, "cellh": 28, "ctltype": 4, "fn": "Switcher_Bestpoke-x3b(28x28).png"}, "Timb_PoorMelda03_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda03_(96x129).png"}, "SimpleButton_8GRERED": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GRERED.png"}, "Timb_2018_ButtonsFrThemes-06b": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-06b.png"}, "Timb_2018_ButtonsFrThemes-06c": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-06c.png"}, "Timb_2018_ButtonsFrThemes-06d": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-06d.png"}, "Timb&FL_SliderPack-2_(144x75-130fr)": {"frames": 130, "cellh": 144, "ctltype": 1, "fn": "Timb&FL_SliderPack-2_(144x75-130fr).png"}, "Timb&kmGallery_Sonatom_gold_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Sonatom_gold_(64129).png"}, "SimpleMeter-STORAGE_16x16x200": {"frames": 200, "cellh": 16, "ctltype": 3, "fn": "SimpleMeter-STORAGE_16x16x200.png"}, "Timb_PtchWhlPITCH_28-97fr-ok": {"frames": 97, "cellh": 28, "ctltype": 0, "fn": "Timb_PtchWhlPITCH_28-97fr-ok.png"}, "Timb_FLstyleEdt-07d_48-128pan": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-07d_48-128pan.png"}, "Timb&kmGallery_reaktor_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_reaktor_(48129).png"}, "SC_SliderV-01_(8x40-128fr)toFXin": {"frames": 128, "cellh": 40, "ctltype": 1, "fn": "SC_SliderV-01_(8x40-128fr)toFXin.png"}, "Timb&kmGallery_Symmetry_(48129)b": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(48129)b.png"}, "SimpleMeter-Def5_(4x40-129fr)pnk": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)pnk.png"}, "SC_SimpleMeterHORZ_(32x8-100fr)": {"frames": 100, "cellh": 8, "ctltype": 3, "fn": "SC_SimpleMeterHORZ_(32x8-100fr).png"}, "Timb_Button_KORGMS2000_26x-b": {"frames": 2, "cellh": 26, "ctltype": 2, "fn": "Timb_Button_KORGMS2000_26x-b.png"}, "BESTRPOKE_MUTE(15-2)-b": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_MUTE(15-2)-b.png"}, "BESTRPOKE_MUTE(15-2)-c": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_MUTE(15-2)-c.png"}, "Timb_Meter_SUBSUB2_(259-51fr)": {"frames": 51, "cellh": 259, "ctltype": 3, "fn": "Timb_Meter_SUBSUB2_(259-51fr).png"}, "timb_HoRNetHCS1_x64_105_": {"frames": 100, "cellh": 32, "ctltype": 0, "fn": "timb_HoRNetHCS1_x64_105_.png"}, "Timb_Blankfiles-Superiour-10": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_Blankfiles-Superiour-10.png"}, "Timb&HY_Filter3Meter(85x90)HRZ": {"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ.png"}, "SC_PLAY_16x16-2fr-d": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_PLAY_16x16-2fr-d.png"}, "Timb&kmGallery_knobman-basic_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-basic_(64129).png"}, "Timb_FLstyleEdt-06_32-128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-06_32-128.png"}, "Timb_MPS_VELO_12x16x130-b": {"frames": 130, "cellh": 16, "ctltype": 3, "fn": "Timb_MPS_VELO_12x16x130-b.png"}, "SimpleMeterGreen_16192(timbedt)": {"frames": 100, "cellh": 192, "ctltype": 3, "fn": "SimpleMeterGreen_16192(timbedt).png"}, "Timb_Grig2018_Controls--08": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--08.png"}, "Timb_Grig2018_Controls--09": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_Grig2018_Controls--09.png"}, "Timb_Grig2018_Controls--02": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--02.png"}, "Timb_Grig2018_Controls--03": {"frames": 2, "cellh": 38, "ctltype": 2, "fn": "Timb_Grig2018_Controls--03.png"}, "Timb_Grig2018_Controls--01": {"frames": 2, "cellh": 35, "ctltype": 2, "fn": "Timb_Grig2018_Controls--01.png"}, "Timb_Grig2018_Controls--06": {"frames": 2, "cellh": 43, "ctltype": 2, "fn": "Timb_Grig2018_Controls--06.png"}, "Timb_Grig2018_Controls--07": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--07.png"}, "Timb_Grig2018_Controls--04": {"frames": 2, "cellh": 34, "ctltype": 2, "fn": "Timb_Grig2018_Controls--04.png"}, "Timb-SM_OptGrx2_64128-15ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-15ver.png"}, "Timb_PoorMelda06_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda06_(96x129).png"}, "Timb&kmGallery_iKnob_white_(64129)inst": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_iKnob_white_(64129)inst.png"}, "Timb_Simple Color Frames-Greenbb": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Greenbb.png"}, "Timb-SM_GrigKnob-02_29x29-129": {"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GrigKnob-02_29x29-129.png"}, "Switcher04(18x148)": {"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher04(18x148).png"}, "Switcher_MiniSwitcher2c": {"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2c.png"}, "!Ableton Fader Yellow NA": {"frames": 128, "cellh": 119, "ctltype": 1, "fn": "!Ableton Fader Yellow NA.png"}, "Switcher_MiniSwitcher2e": {"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2e.png"}, "Switcher_MiniSwitcher2d": {"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2d.png"}, "Timb-SM_GrigKnob-15_31x31-129": {"frames": 129, "cellh": 31, "ctltype": 0, "fn": "Timb-SM_GrigKnob-15_31x31-129.png"}, "Timb_FALCON&UPGExtras-5RV": {"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-5RV.png"}, "Timb_Actions_SOLOCANCEL": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_SOLOCANCEL.png"}, "Timb-SM_OptGrx2_40128-06ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-06ver.png"}, "Timb_Shape-greyEDT-96128_bipo": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-greyEDT-96128_bipo.png"}, "Timb_ExpoGreen96128": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_ExpoGreen96128.png"}, "Timb_Transparent01_(18x40-128)": {"frames": 128, "cellh": 18, "ctltype": 1, "fn": "Timb_Transparent01_(18x40-128).png"}, "__Snapshotv13-48d": {"frames": 1, "cellh": 48, "ctltype": 4, "fn": "__Snapshotv13-48d.png"}, "__Snapshotv13-48b": {"frames": 1, "cellh": 48, "ctltype": 4, "fn": "__Snapshotv13-48b.png"}, "__Snapshotv13-48c": {"frames": 1, "cellh": 48, "ctltype": 4, "fn": "__Snapshotv13-48c.png"}, "Timb&HY_DLY3LikeBB5_(64130)d": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)d.png"}, "Timb&HY_DLY3LikeBB5_(64130)e": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)e.png"}, "Timb&HY_DLY3LikeBB5_(64130)b": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)b.png"}, "Timb&HY_DLY3LikeBB5_(64130)c": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)c.png"}, "Timb&HY_DLY3LikeBB5_(64130)a": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)a.png"}, "Timb_LMBassMasterSlider2bloo": {"frames": 128, "cellh": 76, "ctltype": 1, "fn": "Timb_LMBassMasterSlider2bloo.png"}, "Timb&kmGallery_ABS_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ABS_(64129).png"}, "Timb_UpDownArw-18a": {"frames": 1, "cellh": 28, "ctltype": 4, "fn": "Timb_UpDownArw-18a.png"}, "Timb&HY_Seq16x3v2_KNOB1FXpo": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FXpo.png"}, "Timb_Tantra_FXRND20": {"frames": 2, "cellh": 20, "ctltype": 4, "fn": "Timb_Tantra_FXRND20.png"}, "SC_Loopey-Slider 03_1688-101": {"frames": 101, "cellh": 88, "ctltype": 1, "fn": "SC_Loopey-Slider 03_1688-101.png"}, "SC_CamelGATE_8x32-101": {"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_CamelGATE_8x32-101.png"}, "LBXTimb_aSimpleSample9b_16129WASD": {"frames": 129, "cellh": 12, "ctltype": 0, "fn": "LBXTimb_aSimpleSample9b_16129WASD.png"}, "SimpleButton_8BLUBLCK": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8BLUBLCK.png"}, "Timb-SM_OptGrx2_40128-03ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-03ver.png"}, "Timb-SM_OptGrx2_40128-01ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-01ver.png"}, "Timb_5dB5_B-MON-2": {"frames": 100, "cellh": 48, "ctltype": 0, "fn": "Timb_5dB5_B-MON-2.png"}, "Timb_5dB5_B-MON-1": {"frames": 100, "cellh": 96, "ctltype": 0, "fn": "Timb_5dB5_B-MON-1.png"}, "Timb-SM_OptGrx2_64128-01ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-01ver.png"}, "Timb_Tantra_AIMBUT16b": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_AIMBUT16b.png"}, "Timb&kmGallery_maschine_editTimbeditC_(64x130)2": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditC_(64x130)2.png"}, "Timb_SendBOX-PAN_(16-129)bloo": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)bloo.png"}, "Timb&kmGallery_Gauss3shadows_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Gauss3shadows_(64129).png"}, "Timb-SM_OptGrx2_64128-17ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-17ver.png"}, "SimpleMeter_1240OrEDange": {"frames": 100, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter_1240OrEDange.png"}, "Large_REC_(23x54)2": {"frames": 2, "cellh": 27, "ctltype": 2, "fn": "Large_REC_(23x54)2.png"}, "Timb_HORZMETER_824-101": {"frames": 101, "cellh": 8, "ctltype": 3, "fn": "Timb_HORZMETER_824-101.png"}, "Timb_PoorMelda02_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda02_(96x129).png"}, "Switcher_Bestpoke-x4d": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Switcher_Bestpoke-x4d.png"}, "Switcher_Bestpoke-x4c": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Switcher_Bestpoke-x4c.png"}, "Switcher_Bestpoke-x4b": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x4b.png"}, "Timb_Meter_FUNKTIONTRCK_4x33": {"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_FUNKTIONTRCK_4x33.png"}, "__Snapshotv15a": {"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv15a.png"}, "__Snapshotv15b": {"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv15b.png"}, "Timb_ReaDelay-01(32x16-101)": {"frames": 101, "cellh": 16, "ctltype": 3, "fn": "Timb_ReaDelay-01(32x16-101).png"}, "Timb&kmGallery_Curvature_005_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Curvature_005_(64129).png"}, "Timb&HY_DLY3LikeBB6_(64130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB6_(64130).png"}, "Timb_2020-Def6SOLO": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_2020-Def6SOLO.png"}, "lbx_knob96_smoothblack_green": {"frames": 101, "cellh": 96, "ctltype": 0, "fn": "lbx_knob96_smoothblack_green.png"}, "SC_PRGRAMC_(96x128fr)": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "SC_PRGRAMC_(96x128fr).png"}, "__Snapshotv13-48": {"frames": 1, "cellh": 48, "ctltype": 4, "fn": "__Snapshotv13-48.png"}, "Timb_Modulators01_(16x)": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Modulators01_(16x).png"}, "Timb_JSMIXER_MuteOnSolo_Bespokes15x": {"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_Bespokes15x.png"}, "KM2016_knob_(26x26-128fr)_blue": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_blue.png"}, "Timb&kmGallery_metalknob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_metalknob_(64129).png"}, "timb_PoorOrbish-6": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-6.png"}, "TimbSM17_Switches06d8x8b": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "TimbSM17_Switches06d8x8b.png"}, "Geist2rec": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2rec.png"}, "Timb-SM_OptGrx2_40128-04ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-04ver.png"}, "Large_Pan(27x28x128)": {"frames": 128, "cellh": 28, "ctltype": 0, "fn": "Large_Pan(27x28x128).png"}, "Timb_HandMadeMUTE28": {"frames": 2, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeMUTE28.png"}, "timb_LED20eXp5": {"frames": 100, "cellh": 144, "ctltype": 3, "fn": "timb_LED20eXp5.png"}, "timb_LED20eXp4": {"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4.png"}, "timb_LED20eXp7": {"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp7.png"}, "timb_LED20eXp6": {"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp6.png"}, "timb_LED20eXp1": {"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp1.png"}, "Timb_RC-1-SOLO": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_RC-1-SOLO.png"}, "timb_LED20eXp3": {"frames": 100, "cellh": 189, "ctltype": 3, "fn": "timb_LED20eXp3.png"}, "timb_LED20eXp2": {"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp2.png"}, "111TJATEST": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "111TJATEST.png"}, "Switcher_Bestpoke-x2(320x22)": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2(320x22).png"}, "timb_LED20eXp8": {"frames": 100, "cellh": 126, "ctltype": 3, "fn": "timb_LED20eXp8.png"}, "Timb_SQUARE_16x16-128_Black": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_SQUARE_16x16-128_Black.png"}, "timb_HoRNetHCS1_x64_104_": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HoRNetHCS1_x64_104_.png"}, "MJMUTE": {"frames": 2, "cellh": 13, "ctltype": 2, "fn": "MJMUTE.png"}, "Timb_FALCON&UPGExtras-3RP": {"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-3RP.png"}, "Timb_5dB5_T-COMP-3button": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_5dB5_T-COMP-3button.png"}, "Timb_PoorMeldaB03_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMeldaB03_(96x129).png"}, "Timb-SM_ROLVL_43128": {"frames": 128, "cellh": 43, "ctltype": 0, "fn": "Timb-SM_ROLVL_43128.png"}, "Timb&kmGallery_Hippy 3_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 3_(64129).png"}, "Timb&kmGallery_Cut-Off_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Cut-Off_(64129).png"}, "timb_SM2018_SM_CUTE32-4": {"frames": 61, "cellh": 32, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE32-4.png"}, "timb_SM2018_SM_CUTE32-2": {"frames": 61, "cellh": 32, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE32-2.png"}, "timb_SM2018_SM_CUTE32-3": {"frames": 61, "cellh": 32, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE32-3.png"}, "timb_SM2018_SM_CUTE32-1": {"frames": 61, "cellh": 32, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE32-1.png"}, "Timb-SM_Annimot07pan_70120": {"frames": 120, "cellh": 70, "ctltype": 0, "fn": "Timb-SM_Annimot07pan_70120.png"}, "Timb-SM_GRIG5-02_31x31-127": {"frames": 127, "cellh": 31, "ctltype": 0, "fn": "Timb-SM_GRIG5-02_31x31-127.png"}, "Timb_METER-Circle_LBX_R": {"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX_R.png"}, "Timb_MeterHRZPAULIE_16200-128fr": {"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_MeterHRZPAULIE_16200-128fr.png"}, "Timb-SM_OptGrx2_64128-03ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-03ver.png"}, "SimpleMeter-Def5_(4x40-129fr)": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr).png"}, "Timb_MeterCLSC10_894-128": {"frames": 128, "cellh": 94, "ctltype": 3, "fn": "Timb_MeterCLSC10_894-128.png"}, "Timb_METER-Circle_LBX_L": {"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX_L.png"}, "LBX_M": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_M.png"}, "LBX_S": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_S.png"}, "SimpleButton_8GREGRY": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GREGRY.png"}, "Timb_Minika16101_MOR": {"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_MOR.png"}, "!16 Button 4 invis": {"frames": 2, "cellh": 16, "fn": "!16 Button 4 invis.png"}, "TimbSM17_Switches07b": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "TimbSM17_Switches07b.png"}, "Timb&kmGallery_knob_70_black_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_70_black_(64129).png"}, "Timb&Bryntes_Tal 50x502_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Tal 50x502_(64129).png"}, "Timb_PAINTPLACK_32x12-128": {"frames": 128, "cellh": 12, "ctltype": 3, "fn": "Timb_PAINTPLACK_32x12-128.png"}, "Timb-SM_GrigKnob-28_34x34-129": {"frames": 129, "cellh": 34, "ctltype": 0, "fn": "Timb-SM_GrigKnob-28_34x34-129.png"}, "Timb_Actions_SOLOCANCEL-2": {"frames": 2, "cellh": 35, "ctltype": 2, "fn": "Timb_Actions_SOLOCANCEL-2.png"}, "Timb&kmGallery_MultiKnob-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MultiKnob-edt_(64129).png"}, "Switcher08b(32x32)": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Switcher08b(32x32).png"}, "Timb_Vogue_Yellow_64-200": {"frames": 200, "cellh": 64, "ctltype": 0, "fn": "Timb_Vogue_Yellow_64-200.png"}, "Timb_UpDownArw-19a": {"frames": 1, "cellh": 24, "ctltype": 4, "fn": "Timb_UpDownArw-19a.png"}, "Timb-SM_GrigKnob-34_59x59-127": {"frames": 127, "cellh": 59, "ctltype": 0, "fn": "Timb-SM_GrigKnob-34_59x59-127.png"}, "SimpleMeter-Def5_(8x40-100fr)": {"frames": 100, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(8x40-100fr).png"}, "Timb&kmGallery_1176_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_1176_(64129).png"}, "Timb-SM_BlooPAN_60120": {"frames": 120, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_BlooPAN_60120.png"}, "Timb-SM_Loopey's Set 02d_40x40-101": {"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02d_40x40-101.png"}, "Timb_2018_PageegaP-01": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_2018_PageegaP-01.png"}, "Timb_2018_PageegaP-03": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_2018_PageegaP-03.png"}, "Timb_2018_PageegaP-02": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_2018_PageegaP-02.png"}, "Timb_Grig2018_Controls--19": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_Grig2018_Controls--19.png"}, "Timb_Grig2018_Controls--18": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--18.png"}, "Timb_Minika16101_BLO": {"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_BLO.png"}, "Timb_Grig2018_Controls--11": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Grig2018_Controls--11.png"}, "Timb_Grig2018_Controls--10": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--10.png"}, "Timb_Grig2018_Controls--13": {"frames": 2, "cellh": 13, "ctltype": 2, "fn": "Timb_Grig2018_Controls--13.png"}, "Timb_Grig2018_Controls--12": {"frames": 2, "cellh": 13, "ctltype": 2, "fn": "Timb_Grig2018_Controls--12.png"}, "Timb_Grig2018_Controls--15": {"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Timb_Grig2018_Controls--15.png"}, "SC_A1GATE_Note_8x16-4fr": {"frames": 4, "cellh": 16, "ctltype": 3, "fn": "SC_A1GATE_Note_8x16-4fr.png"}, "Timb_Grig2018_Controls--17": {"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Timb_Grig2018_Controls--17.png"}, "Timb_Grig2018_Controls--16": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--16.png"}, "Timb_2018_ButtonsFrThemes-05b": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-05b.png"}, "Beatwing25_BUTTON16x": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Beatwing25_BUTTON16x.png"}, "Timb_METER-Circle_LBX2_R": {"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX2_R.png"}, "KM2016_lineshadow_(64x64-128fr)": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "KM2016_lineshadow_(64x64-128fr).png"}, "Timb_METER-Circle_LBX2_L": {"frames": 128, "cellh": 90, "ctltype": 3, "fn": "Timb_METER-Circle_LBX2_L.png"}, "LBX_Button32_Blue": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_Button32_Blue.png"}, "Timb_ColorCode_(24-129)-01grn": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-01grn.png"}, "Timb_ColorCode_(19-129)-01grn": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-01grn.png"}, "lbx_knob128_smoothblack_green": {"frames": 101, "cellh": 128, "ctltype": 0, "fn": "lbx_knob128_smoothblack_green.png"}, "SC_SurroGate-SEND-48101": {"frames": 101, "cellh": 48, "ctltype": 0, "fn": "SC_SurroGate-SEND-48101.png"}, "LBX_Button48": {"frames": 2, "cellh": 48, "ctltype": 2, "fn": "LBX_Button48.png"}, "Timb_MeterHRZSessionMod_8240-128": {"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZSessionMod_8240-128.png"}, "Timb&HY_ModernishX": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX.png"}, "Timb_ColorCode_(24-129)-03blo": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-03blo.png"}, "Timb&kmGallery_Saifan g_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Saifan g_(64129).png"}, "Timb_Shape-blooEDT-96128_bipo": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-blooEDT-96128_bipo.png"}, "!A 2 SMALL_v0001": {"frames": 101, "cellh": 16, "fn": "!A 2 SMALL_v0001.png"}, "Timb_Grig2018_Controls--58b": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--58b.png"}, "!AL Grey Empty Knob Yellow": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL Grey Empty Knob Yellow.png"}, "Timb&kmGallery_Symmetry_(64129)b4bars2": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b4bars2.png"}, "Timb&kmGallery_Symmetry_(64129)b4bars4": {"frames": 129, "cellh": 128, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b4bars4.png"}, "LBX_REC": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_REC.png"}, "Timb_PoorMelda07_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda07_(96x129).png"}, "SC_Loopey-Slider 04Horz_844-101": {"frames": 101, "cellh": 8, "ctltype": 1, "fn": "SC_Loopey-Slider 04Horz_844-101.png"}, "Timb&kmGallery_MS2000_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_MS2000_(48129).png"}, "Timb&FL_MaxEQ_(148x29-130fr)": {"frames": 130, "cellh": 148, "ctltype": 1, "fn": "Timb&FL_MaxEQ_(148x29-130fr).png"}, "KM2016_knobTmbmod_(26x26-128fr)_gray": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_gray.png"}, "Timb_FLstyleEdt-05_32-128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-05_32-128.png"}, "NORA-REC_64128": {"frames": 2, "cellh": 64, "ctltype": 2, "fn": "NORA-REC_64128.png"}, "Large_REC_(23x54)": {"frames": 2, "cellh": 27, "ctltype": 2, "fn": "Large_REC_(23x54).png"}, "Timb_MeterHRZXRAYMANALOGDEF_8320-128": {"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZXRAYMANALOGDEF_8320-128.png"}, "lbx_knob48_smoothblack_green": {"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_green.png"}, "SimpleButton_16GREEN2": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16GREEN2.png"}, "SimpleButton_16GREEN3": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16GREEN3.png"}, "Timb&kmGallery_BlackPlasticsmall 01_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_BlackPlasticsmall 01_(64129).png"}, "GR_Timb_MeterBlackOnixTwo_8x63-129blo": {"frames": 129, "cellh": 63, "ctltype": 3, "fn": "GR_Timb_MeterBlackOnixTwo_8x63-129blo.png"}, "Timb_SnowFXOnOff16WASD-11": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff16WASD-11.png"}, "Timb_Tantra_AIMBUT16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_AIMBUT16.png"}, "Timb-SM_GrigKnob-44vol_47x48-129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-44vol_47x48-129.png"}, "Timb&kmGallery_XV Knob med_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_XV Knob med_(64129).png"}, "Timb&HY_Filter3Meter(85x90)3": {"frames": 90, "cellh": 85, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)3.png"}, "Timb_FLstyleEdt-09_48-128": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-09_48-128.png"}, "__Snapshotv12-55": {"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv12-55.png"}, "Timb-SM_OptGrx2_64128-08ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-08ver.png"}, "Timb-SM_GRIG5-42_39x43-127": {"frames": 127, "cellh": 43, "ctltype": 0, "fn": "Timb-SM_GRIG5-42_39x43-127.png"}, "KM2016_SimpleBigKnobOrange_40-128fr": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobOrange_40-128fr.png"}, "Switcher09_BigBro(64)1": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)1.png"}, "Timb&kmGallery_SmallKnob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_SmallKnob_(64129).png"}, "Switcher09_BigBro(64)3": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)3.png"}, "Switcher09_BigBro(64)2": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)2.png"}, "Switcher09_BigBro(64)5": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)5.png"}, "Timb_HandMadeMUTE16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_HandMadeMUTE16.png"}, "Switcher09_BigBro(64)7": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)7.png"}, "Switcher09_BigBro(64)6": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Switcher09_BigBro(64)6.png"}, "wrench": {"frames": 1, "cellh": 20, "ctltype": 4, "fn": "wrench.png"}, "Timb&kmGallery_MACHINEGUN SMALL2_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MACHINEGUN SMALL2_(64129).png"}, "Timb-NickMoritz_SmallKnob-03_32128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-03_32128.png"}, "Timb_PitchMapBYPASS-00": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_PitchMapBYPASS-00.png"}, "Timb_PitchMapBYPASS-01": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_PitchMapBYPASS-01.png"}, "timb_MidiPackTransp-1b": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "timb_MidiPackTransp-1b.png"}, "Timb&kmGallery_BrushedDial_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_BrushedDial_(64129).png"}, "lbx_knob48_smoothblack_yellow": {"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_yellow.png"}, "TimbSM17_Switches12bMonitor": {"frames": 2, "cellh": 85, "ctltype": 2, "fn": "TimbSM17_Switches12bMonitor.png"}, "Timb&HY_Seq16x3v2_KNOB1FX5": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX5.png"}, "Timb&HY_Seq16x3v2_KNOB1FX4": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX4.png"}, "Timb&HY_Seq16x3v2_KNOB1FX3": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX3.png"}, "Timb&HY_Seq16x3v2_KNOB1FX2": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX2.png"}, "LBXTimb_aSimpleSample6_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample6_16130.png"}, "Timb_Grig2018_Controls--29": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--29.png"}, "timb_Symnotmetry(3296130)-1": {"frames": 130, "cellh": 32, "ctltype": 0, "fn": "timb_Symnotmetry(3296130)-1.png"}, "Timb&kmGallery_maschine_editTimbeditE_(64x130)2": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditE_(64x130)2.png"}, "KM2016_flstudio-style_(timbedt_30-128fr)": {"frames": 128, "cellh": 30, "ctltype": 0, "fn": "KM2016_flstudio-style_(timbedt_30-128fr).png"}, "KM2016_SimpleBigKnobGreen_48-128fr": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "KM2016_SimpleBigKnobGreen_48-128fr.png"}, "timb&HYRPESOLO32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb&HYRPESOLO32.png"}, "Timb_MIDITRANSP(MSP)_202025": {"frames": 25, "cellh": 20, "ctltype": 4, "fn": "Timb_MIDITRANSP(MSP)_202025.png"}, "SC_K4SliderVERT": {"frames": 31, "cellh": 100, "ctltype": 1, "fn": "SC_K4SliderVERT.png"}, "Timb_UVIxXxlose": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_UVIxXxlose.png"}, "Timb_Grig2018_Controls--27": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--27.png"}, "SC_iKnobProgram_64128_4pipeline2": {"frames": 128, "cellh": 128, "ctltype": 0, "fn": "SC_iKnobProgram_64128_4pipeline2.png"}, "Timb_Meter_ArrowRight_16x31": {"frames": 31, "cellh": 16, "ctltype": 3, "fn": "Timb_Meter_ArrowRight_16x31.png"}, "Timb&kmGallery_XVVFaderEDTB1_128x130fr": {"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDTB1_128x130fr.png"}, "SimpleMeter-Def5_(4x40-129fr)blo": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)blo.png"}, "__Snapshot_timb_LBXDark1": {"frames": 1, "cellh": 40, "ctltype": 4, "fn": "__Snapshot_timb_LBXDark1.png"}, "SC_LightSEQ_128x8-64fr": {"frames": 64, "cellh": 8, "ctltype": 3, "fn": "SC_LightSEQ_128x8-64fr.png"}, "Timb-SM_OptGrx2_32128-14ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-14ver.png"}, "Timb&HY_ModernishXb3": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXb3.png"}, "Timb&HY_ModernishXb2": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXb2.png"}, "Timb&HY_ModernishXb4": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishXb4.png"}, "Timb_MegaBaby-01A_1628-128": {"frames": 128, "cellh": 28, "ctltype": 3, "fn": "Timb_MegaBaby-01A_1628-128.png"}, "Timb-SM_Annimot06_60128": {"frames": 128, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Annimot06_60128.png"}, "Timb&kmGallery_maschine_editTimbedit_(64x130)2": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbedit_(64x130)2.png"}, "Timb_LiquidMental-1": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_LiquidMental-1.png"}, "Timb_LiquidMental-2": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_LiquidMental-2.png"}, "KM2016_knob_(26x26-128fr)_red": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_red.png"}, "Timb_Flatomat_SOLO20": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_Flatomat_SOLO20.png"}, "Timb&Bryntes_OBXREAL_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_OBXREAL_(64129).png"}, "Timb&kmGallery_knobman-lumen2d_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2d_(64129).png"}, "timb_SM2018_SM_CUTE44BB-1(100fr)": {"frames": 100, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44BB-1(100fr).png"}, "Timb_ColorCode_(16-129)-03blo": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-03blo.png"}, "Timb-SM_Monday Knobs-01_80101": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-01_80101.png"}, "Timb_2018_PageegaP-03b": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_2018_PageegaP-03b.png"}, "Timb-SM_Loopey's Set 01a_50x50-129": {"frames": 129, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 01a_50x50-129.png"}, "Timb-SM_GrigKnob-46pan_47x48-129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-46pan_47x48-129.png"}, "Timb_4 Synth Master-01": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb_4 Synth Master-01.png"}, "Timb-SM_GrigKnob-42pan_47x48-129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-42pan_47x48-129.png"}, "Timb&kmGallery_switchmodeminimalEDT16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb&kmGallery_switchmodeminimalEDT16.png"}, "__Snapshotv16e": {"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv16e.png"}, "!Valhalla Slider": {"frames": 128, "cellh": 219, "ctltype": 1, "fn": "!Valhalla Slider.png"}, "__Snapshotv16d": {"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv16d.png"}, "Timb&kmGallery_BlackAngle_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_BlackAngle_(64129).png"}, "Timb_SendBOX-PAN_(16-129)greys": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)greys.png"}, "timb_LED20eXp8b": {"frames": 100, "cellh": 63, "ctltype": 3, "fn": "timb_LED20eXp8b.png"}, "Timb_Grig2018_Controls--28": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--28.png"}, "__Snapshotv16c": {"frames": 1, "cellh": 55, "ctltype": 4, "fn": "__Snapshotv16c.png"}, "Timb_Grig2018_Controls--24": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_Grig2018_Controls--24.png"}, "Timb_Grig2018_Controls--25": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--25.png"}, "Timb_Grig2018_Controls--26": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--26.png"}, "timb_LED20eXp4e": {"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4e.png"}, "Timb_Grig2018_Controls--20": {"frames": 2, "cellh": 13, "ctltype": 2, "fn": "Timb_Grig2018_Controls--20.png"}, "Timb_Grig2018_Controls--21": {"frames": 2, "cellh": 31, "ctltype": 2, "fn": "Timb_Grig2018_Controls--21.png"}, "Timb_Grig2018_Controls--22": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--22.png"}, "Timb_Grig2018_Controls--23": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_Grig2018_Controls--23.png"}, "Timb&kmGallery_Retro_Knob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Retro_Knob_(64129).png"}, "Timb_KNOB&METER-01_(48-128)_B-Meter": {"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_KNOB&METER-01_(48-128)_B-Meter.png"}, "Timb-SM_OptGrx2_40128-12ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-12ver.png"}, "Timb&kmGallery_MiniBrute_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_MiniBrute_(48129).png"}, "Timb_ColorCode_(19-129)-07prp": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-07prp.png"}, "Timb-SM_OptGrx2_64128-14ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-14ver.png"}, "Timb-NickMoritz_SmallKnob-02_32128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-02_32128.png"}, "Timb_PoorMeldaB00_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMeldaB00_(96x129).png"}, "TimbSM17_Switches06c": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "TimbSM17_Switches06c.png"}, "TimbSM17_Switches06b": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "TimbSM17_Switches06b.png"}, "TimbSM17_Switches06g": {"frames": 2, "cellh": 10, "ctltype": 2, "fn": "TimbSM17_Switches06g.png"}, "TimbSM17_Switches06f": {"frames": 2, "cellh": 10, "ctltype": 2, "fn": "TimbSM17_Switches06f.png"}, "TimbSM17_Switches06e": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "TimbSM17_Switches06e.png"}, "TimbSM17_Switches09": {"frames": 2, "cellh": 36, "ctltype": 2, "fn": "TimbSM17_Switches09.png"}, "SC_A1GATE_Volume_12x18-101": {"frames": 101, "cellh": 18, "ctltype": 3, "fn": "SC_A1GATE_Volume_12x18-101.png"}, "Timb_LMBassMasterSlider1HRZ orange": {"frames": 128, "cellh": 20, "ctltype": 1, "fn": "Timb_LMBassMasterSlider1HRZ orange.png"}, "Timb-SM_GrigKnob-21_44x48-129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-21_44x48-129.png"}, "Timb&kmGallery_plastic_knob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_plastic_knob_(64129).png"}, "timb_LEDeXp5vert-WASD3": {"frames": 100, "cellh": 12, "ctltype": 3, "fn": "timb_LEDeXp5vert-WASD3.png"}, "timb_LEDeXp5vert-WASD2": {"frames": 100, "cellh": 8, "ctltype": 3, "fn": "timb_LEDeXp5vert-WASD2.png"}, "timb_LEDeXp5vert-WASD1": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LEDeXp5vert-WASD1.png"}, "Timb_5dB5_D-REZ-1": {"frames": 100, "cellh": 96, "ctltype": 0, "fn": "Timb_5dB5_D-REZ-1.png"}, "Timb_5dB5_D-REZ-2": {"frames": 100, "cellh": 48, "ctltype": 0, "fn": "Timb_5dB5_D-REZ-2.png"}, "Timb_UpDownArw-16b": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-16b.png"}, "Timb_MONITOR2_(111x176-128)b": {"frames": 128, "cellh": 176, "ctltype": 3, "fn": "Timb_MONITOR2_(111x176-128)b.png"}, "Timb-SM_BlooPAN_50120": {"frames": 120, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_BlooPAN_50120.png"}, "Timb_WetDryBypassOffline-01": {"frames": 4, "cellh": 32, "ctltype": 2, "fn": "Timb_WetDryBypassOffline-01.png"}, "Timb_WetDryBypassOffline-03": {"frames": 4, "cellh": 32, "ctltype": 2, "fn": "Timb_WetDryBypassOffline-03.png"}, "Timb_WetDryBypassOffline-02": {"frames": 4, "cellh": 32, "ctltype": 2, "fn": "Timb_WetDryBypassOffline-02.png"}, "Timb&kmGallery_color_knob (1)_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_color_knob (1)_(64129).png"}, "SimpleFlat_64": {"frames": 100, "cellh": 64, "ctltype": 0, "fn": "SimpleFlat_64.png"}, "LBXTimb_ILTB Btn-1": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "LBXTimb_ILTB Btn-1.png"}, "lbx_knob48_smoothblack_blue": {"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_blue.png"}, "LBXTimb_ILTB Btn-3": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "LBXTimb_ILTB Btn-3.png"}, "LBXTimb_ILTB Btn-2": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "LBXTimb_ILTB Btn-2.png"}, "ICON_HEADPHONE": {"frames": 2, "cellh": 30, "ctltype": 2, "fn": "ICON_HEADPHONE.png"}, "Timb-SM_GRIG5-05_27x27-129": {"frames": 129, "cellh": 27, "ctltype": 0, "fn": "Timb-SM_GRIG5-05_27x27-129.png"}, "Timb_Actions_SAVE2": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_SAVE2.png"}, "Timb&kmGallery_knob_35_silver_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_35_silver_(64129).png"}, "Timb&KM_plastic_knob-96128": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb&KM_plastic_knob-96128.png"}, "BESTRPOKE_MUTE(15-2)": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_MUTE(15-2).png"}, "!Ableton Fader Green NA": {"frames": 128, "cellh": 119, "ctltype": 1, "fn": "!Ableton Fader Green NA.png"}, "Timb_ColorCode_(19-129)-06gry": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-06gry.png"}, "Switcher06(18x148)": {"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher06(18x148).png"}, "Timb&kmGallery_knob_36_black_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_36_black_(64129).png"}, "Timb_REAPER_128-128fr": {"frames": 128, "cellh": 128, "ctltype": 0, "fn": "Timb_REAPER_128-128fr.png"}, "01-MY VU Mod-2": {"frames": 101, "cellh": 96, "ctltype": 3, "fn": "01-MY VU Mod-2.png"}, "Timb_KNOB&METER-03_(96-129)knob": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_KNOB&METER-03_(96-129)knob.png"}, "Timb_opGui2019-02_SEQ32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_opGui2019-02_SEQ32.png"}, "Timb&kmGallery_SynergyKnob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_SynergyKnob_(64129).png"}, "Timb_Meter_REABLETTRCK_4x33": {"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_REABLETTRCK_4x33.png"}, "Timb&KM_knob_70_black-96128": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb&KM_knob_70_black-96128.png"}, "Timb-SM_GrigKnob-10_29x29-129": {"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GrigKnob-10_29x29-129.png"}, "FXGUI2017_BESTPOKE_DLY(15-2)": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_DLY(15-2).png"}, "Timb_TDSHES_(24x129)-11": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-11.png"}, "Timb_TDSHES_(24x129)-10": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-10.png"}, "Timb_TDSHES_(24x129)-13": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-13.png"}, "Timb_TDSHES_(24x129)-12": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-12.png"}, "Timb_TDSHES_(24x129)-15": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-15.png"}, "Timb_TDSHES_(24x129)-14": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-14.png"}, "Timb_TDSHES_(24x129)-17": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-17.png"}, "Timb_TDSHES_(24x129)-16": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-16.png"}, "Timb_ColorCode_(16-129)-07prp": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-07prp.png"}, "Timb&kmGallery_knob_32_white_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_32_white_(64129).png"}, "Timb_PAINTPLACK_32x16-128": {"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_PAINTPLACK_32x16-128.png"}, "Timb&kmGallery_Slope_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Slope_(64129).png"}, "Timb_UVI FALCON2020-01b": {"frames": 2, "cellh": 64, "ctltype": 4, "fn": "Timb_UVI FALCON2020-01b.png"}, "Timb-SM_GRIG5-15_35x35-128": {"frames": 128, "cellh": 35, "ctltype": 0, "fn": "Timb-SM_GRIG5-15_35x35-128.png"}, "Timb-SM_OptGrx2_32128-12ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-12ver.png"}, "Timb-NickMoritz_SmallKnob-01_32128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-01_32128.png"}, "SC_Knob_(16x16-100fr)5": {"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)5.png"}, "!16 Button 5 random": {"frames": 2, "cellh": 16, "fn": "!16 Button 5 random.png"}, "SC_Knob_(16x16-100fr)7": {"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)7.png"}, "SC_Knob_(16x16-100fr)6": {"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)6.png"}, "SC_Knob_(16x16-100fr)1": {"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)1.png"}, "SC_Knob_(16x16-100fr)3": {"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)3.png"}, "SC_Knob_(16x16-100fr)2": {"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)2.png"}, "SimpleMeter-STORAGE_15x15x200p": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200p.png"}, "SimpleMeter-STORAGE_15x15x200r": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200r.png"}, "SimpleMeter-STORAGE_15x15x200s": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200s.png"}, "SimpleMeter-STORAGE_15x15x200t": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200t.png"}, "SimpleMeter-STORAGE_15x15x200u": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200u.png"}, "SimpleMeter-STORAGE_15x15x200v": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200v.png"}, "SimpleMeter-STORAGE_15x15x200y": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200y.png"}, "Timb&HY_Filter3Meter(85x90)": {"frames": 90, "cellh": 85, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90).png"}, "LBX_FX": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "LBX_FX.png"}, "SimpleMeter-STORAGE_15x15x200b": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200b.png"}, "Timb_NanoFx23": {"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Timb_NanoFx23.png"}, "SimpleMeter-STORAGE_15x15x200d": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200d.png"}, "SimpleMeter-STORAGE_15x15x200e": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200e.png"}, "SimpleMeter-STORAGE_15x15x200f": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200f.png"}, "SimpleMeter-STORAGE_15x15x200g": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200g.png"}, "SimpleMeter-STORAGE_15x15x200h": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200h.png"}, "Timb&kmGallery_XVVFaderEDTB3_128x130fr": {"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDTB3_128x130fr.png"}, "Timb_NSA TSW Red-01": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_NSA TSW Red-01.png"}, "Timb_Aimp-ONOFF-1": {"frames": 2, "cellh": 75, "ctltype": 2, "fn": "Timb_Aimp-ONOFF-1.png"}, "SimpleMeter-STORAGE_15x15x200m": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200m.png"}, "SimpleMeter-STORAGE_15x15x200n": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200n.png"}, "SimpleMeter-STORAGE_15x15x200o": {"frames": 200, "cellh": 15, "ctltype": 3, "fn": "SimpleMeter-STORAGE_15x15x200o.png"}, "LBXTimb_aSimpleSample4_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample4_16130.png"}, "!32 Button invis": {"frames": 2, "cellh": 32, "fn": "!32 Button invis.png"}, "Fader(29x61x334_167)": {"frames": 128, "cellh": 334, "ctltype": 1, "fn": "Fader(29x61x334_167).png"}, "Timb_SSpot2018Control-002b": {"frames": 2, "cellh": 30, "ctltype": 2, "fn": "Timb_SSpot2018Control-002b.png"}, "Timb-SM_GRIG5-39_36x39-129": {"frames": 129, "cellh": 39, "ctltype": 0, "fn": "Timb-SM_GRIG5-39_36x39-129.png"}, "Timb_Actions_PEAKCLEAR": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_PEAKCLEAR.png"}, "Timb&HY_DLY3LikeBB5_(64130)cbipo": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130)cbipo.png"}, "Timb_MegaBaby-01NOTENAMES_28x40-128": {"frames": 128, "cellh": 28, "ctltype": 4, "fn": "Timb_MegaBaby-01NOTENAMES_28x40-128.png"}, "Timb-SM_GrigKnob-40vol_47x48-129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-40vol_47x48-129.png"}, "Timb_UpDownArw-16a": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-16a.png"}, "SC_SwitcherWIDE-01rvrs": {"frames": 1, "cellh": 28, "ctltype": 4, "fn": "SC_SwitcherWIDE-01rvrs.png"}, "SimpleMeter-Def5_(4x40-129fr)sgn": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)sgn.png"}, "Timb-SM_GRIG5-45d_33x33-91": {"frames": 91, "cellh": 33, "ctltype": 0, "fn": "Timb-SM_GRIG5-45d_33x33-91.png"}, "Timb_KNOB&METER-02_(48-128)_B-Meter": {"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_KNOB&METER-02_(48-128)_B-Meter.png"}, "__Snapshotv10mini": {"frames": 1, "cellh": 25, "ctltype": 4, "fn": "__Snapshotv10mini.png"}, "Timb&kmGallery_SSL Red_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_SSL Red_(64129).png"}, "Timb&kmGallery_SimpleFlat4_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_SimpleFlat4_(64129).png"}, "Timb&kmGallery_mixer_white_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_mixer_white_(64129).png"}, "timb_LED20eXp8losat": {"frames": 100, "cellh": 126, "ctltype": 3, "fn": "timb_LED20eXp8losat.png"}, "Timb-SM_OptGrx2_32128-09ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-09ver.png"}, "Timb-NickMoritz_BigKnob-02_64128": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-NickMoritz_BigKnob-02_64128.png"}, "Timb_MeterHRZCLSC10_8280-128": {"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZCLSC10_8280-128.png"}, "Timb&kmGallery_maschine-default-edit_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_maschine-default-edit_(48129).png"}, "Timb_Hippy 6mod_64-129": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb_Hippy 6mod_64-129.png"}, "Timb_SnowFXOnOff_(32x37)": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_(32x37).png"}, "Timb_MeterXRAYMANALOGDEF_8320-128": {"frames": 128, "cellh": 320, "ctltype": 3, "fn": "Timb_MeterXRAYMANALOGDEF_8320-128.png"}, "Timb&kmGallery_Symmetry_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129).png"}, "Timb_MegaBaby-01B_1620-128": {"frames": 128, "cellh": 20, "ctltype": 3, "fn": "Timb_MegaBaby-01B_1620-128.png"}, "Timb&kmGallery_Error 418_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Error 418_(64129).png"}, "SimpleButton_8GRERED2": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GRERED2.png"}, "Timb_SnowFXOnOff_(32x26)": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_(32x26).png"}, "Timb_2018_ButtonsFrThemes-12": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-12.png"}, "Timb-SM_Loopey's Set 02f_30x30-101": {"frames": 101, "cellh": 30, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02f_30x30-101.png"}, "Timb-SM_OptGrx2_32128-10ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-10ver.png"}, "Timb_PoorMelda08_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda08_(96x129).png"}, "timb_NoteMonitor4": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_NoteMonitor4.png"}, "timb_NoteMonitor5": {"frames": 2, "cellh": 64, "ctltype": 2, "fn": "timb_NoteMonitor5.png"}, "timb_NoteMonitor1": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_NoteMonitor1.png"}, "timb_NoteMonitor2": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_NoteMonitor2.png"}, "timb_NoteMonitor3": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_NoteMonitor3.png"}, "timb_HY-ONOFF101804ORN": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HY-ONOFF101804ORN.png"}, "Timb&kmGallery_oldGain_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_oldGain_(64129).png"}, "Timb_UpDownArw-17a": {"frames": 1, "cellh": 25, "ctltype": 4, "fn": "Timb_UpDownArw-17a.png"}, "timb_HY-ONOFF101804GRN2WASD": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "timb_HY-ONOFF101804GRN2WASD.png"}, "SC_Pall_Knob-01(96x64)": {"frames": 64, "cellh": 96, "ctltype": 0, "fn": "SC_Pall_Knob-01(96x64).png"}, "lbx_knob64_smoothblack_yellow": {"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_yellow.png"}, "Kirnu-Cream_x64_108_PNG3": {"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_108_PNG3.png"}, "Kirnu-Cream_x64_108_PNG2": {"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_108_PNG2.png"}, "SC_KNOB-REDTRCK_(30x30-101frm)": {"frames": 101, "cellh": 30, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(30x30-101frm).png"}, "Timb_Grig2018_Controls--33": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--33.png"}, "Timb_Grig2018_Controls--32": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--32.png"}, "Timb_Grig2018_Controls--31": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--31.png"}, "Timb_Grig2018_Controls--30": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--30.png"}, "Timb_Grig2018_Controls--37": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Grig2018_Controls--37.png"}, "Timb_Grig2018_Controls--36": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Grig2018_Controls--36.png"}, "Timb_Grig2018_Controls--35": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Grig2018_Controls--35.png"}, "Timb_Grig2018_Controls--34": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--34.png"}, "Timb_JSMIXER_MuteOnSolo_16-3_3X": {"frames": 3, "cellh": 16, "ctltype": 2, "fn": "Timb_JSMIXER_MuteOnSolo_16-3_3X.png"}, "Timb_Grig2018_Controls--38": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Timb_Grig2018_Controls--38.png"}, "Timb_UVIButton122": {"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_UVIButton122.png"}, "__Snapshotv11-56b": {"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv11-56b.png"}, "Timb_Meter_SESMODTRCK_8x33": {"frames": 128, "cellh": 33, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_8x33.png"}, "Timb_LMBassMasterSlider2HRZ bloo": {"frames": 128, "cellh": 18, "ctltype": 1, "fn": "Timb_LMBassMasterSlider2HRZ bloo.png"}, "Timb&kmGallery_knob_42_silver_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_42_silver_(64129).png"}, "Timb&kmGallery_Toddler_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Toddler_(64129).png"}, "KM2016_BlackAngleEdt_40-128fr": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_BlackAngleEdt_40-128fr.png"}, "KM2016_SimpleBigKnobBlue_48-128fr": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "KM2016_SimpleBigKnobBlue_48-128fr.png"}, "__Snapshot_timb-Rand3": {"frames": 2, "cellh": 46, "ctltype": 4, "fn": "__Snapshot_timb-Rand3.png"}, "Timb&kmGallery_Crelay_bipo_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Crelay_bipo_(64129).png"}, "Timb_UpDownArw-16aWASD": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-16aWASD.png"}, "Timb&kmGallery_Symmetry_(64129)b4bars": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b4bars.png"}, "Timb_2018_BUTTONEXIT64-02": {"frames": 2, "cellh": 64, "ctltype": 2, "fn": "Timb_2018_BUTTONEXIT64-02.png"}, "Switcher08b(16x24)": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Switcher08b(16x24).png"}, "Timb_MIDICHS_161616": {"frames": 16, "cellh": 16, "ctltype": 4, "fn": "Timb_MIDICHS_161616.png"}, "!Valhalla Slider Small": {"frames": 64, "cellh": 48, "ctltype": 1, "fn": "!Valhalla Slider Small.png"}, "Timb&kmGallery_Hippy 2_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 2_(64129).png"}, "Timb-SM_Loopey-VMX200_48x48-101": {"frames": 101, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_Loopey-VMX200_48x48-101.png"}, "!AL Grey Empty Knob Red": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL Grey Empty Knob Red.png"}, "timb_LED20eXp4b_v0001": {"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4b_v0001.png"}, "Timb&kmGallery_knobman-lumen2c_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2c_(64129).png"}, "lbx_knob128_smoothblack_red": {"frames": 101, "cellh": 128, "ctltype": 0, "fn": "lbx_knob128_smoothblack_red.png"}, "Timb&kmGallery_Toddler_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_Toddler_(48129).png"}, "Timb_CLEAR2019-MUTE": {"frames": 2, "cellh": 26, "ctltype": 2, "fn": "Timb_CLEAR2019-MUTE.png"}, "Timb&kmGallery_Credence_bipo_(64129)blo": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Credence_bipo_(64129)blo.png"}, "Timb_METER-Circle64128": {"frames": 128, "cellh": 64, "ctltype": 3, "fn": "Timb_METER-Circle64128.png"}, "!A 2 SMALL": {"frames": 101, "cellh": 16, "fn": "!A 2 SMALL.png"}, "Timb_METER-Circle-FOR_FLSTYLE": {"frames": 128, "cellh": 52, "ctltype": 3, "fn": "Timb_METER-Circle-FOR_FLSTYLE.png"}, "LBXTimb_aSimpleSample5_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample5_16130.png"}, "TimbKMGL_Modern-minimal-mars-128": {"frames": 128, "cellh": 128, "ctltype": 0, "fn": "TimbKMGL_Modern-minimal-mars-128.png"}, "FXGUI2017_BESTPOKE_EQ(15-2)": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE_EQ(15-2).png"}, "Timb_SpaceshipDelay_38129": {"frames": 129, "cellh": 38, "ctltype": 0, "fn": "Timb_SpaceshipDelay_38129.png"}, "Timb-SM_DW_64128": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_DW_64128.png"}, "Timb-SM_GrigKnob-36_41x41-127": {"frames": 127, "cellh": 41, "ctltype": 0, "fn": "Timb-SM_GrigKnob-36_41x41-127.png"}, "REA_UHBIK2016-01_(96-100)": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "REA_UHBIK2016-01_(96-100).png"}, "Timb&HY_DL2_Slider_(32130)": {"frames": 130, "cellh": 32, "ctltype": 1, "fn": "Timb&HY_DL2_Slider_(32130).png"}, "Timb-SM_OptGrx2_32128-15ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-15ver.png"}, "Timb&kmGallery_iKnob_white-pobi_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_iKnob_white-pobi_(48129).png"}, "Timb&kmGallery_DARKMAN_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_DARKMAN_(64129).png"}, "Timb-SM_GrigKnob-12_19x19-129": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb-SM_GrigKnob-12_19x19-129.png"}, "Timb&kmGallery_knobman-lumen2_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knobman-lumen2_(64129).png"}, "Timb-SM_GRIG5-35_44x44-127": {"frames": 127, "cellh": 44, "ctltype": 0, "fn": "Timb-SM_GRIG5-35_44x44-127.png"}, "Timb_MeterBlackOnixTwoHRZNgrn_13x123-129": {"frames": 129, "cellh": 13, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwoHRZNgrn_13x123-129.png"}, "Timb-SM_GrigKnob-08_28x29-129": {"frames": 129, "cellh": 29, "ctltype": 0, "fn": "Timb-SM_GrigKnob-08_28x29-129.png"}, "Timb_Meter_TRANSPARENT-01_(16x48-128)": {"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_Meter_TRANSPARENT-01_(16x48-128).png"}, "Timb-SM_GRIG5-41_47x53-127": {"frames": 127, "cellh": 53, "ctltype": 0, "fn": "Timb-SM_GRIG5-41_47x53-127.png"}, "Timb_MPS_VELO_12x16x130": {"frames": 130, "cellh": 16, "ctltype": 3, "fn": "Timb_MPS_VELO_12x16x130.png"}, "Timb&kmGallery_ssl-ish-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ssl-ish-edt_(64129).png"}, "LBXTimb_ILDWW32Blck-01": {"frames": 256, "cellh": 32, "ctltype": 0, "fn": "LBXTimb_ILDWW32Blck-01.png"}, "TimbSM17_Switches12aHeadphone": {"frames": 2, "cellh": 85, "ctltype": 2, "fn": "TimbSM17_Switches12aHeadphone.png"}, "LBX_ledstrip_bars": {"frames": 100, "cellh": 176, "ctltype": 3, "fn": "LBX_ledstrip_bars.png"}, "SC_A1GATE_Volume_8x32-101": {"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_A1GATE_Volume_8x32-101.png"}, "Timb-SM_cuteblue_60128": {"frames": 128, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_cuteblue_60128.png"}, "lbx_knob48_smoothblack_white": {"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_white.png"}, "KM2016_Ableton Knobs_(16x16_128fr)_yellow": {"frames": 128, "cellh": 16, "ctltype": 0, "fn": "KM2016_Ableton Knobs_(16x16_128fr)_yellow.png"}, "Timb_TDSHES_(24x129)-07": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-07.png"}, "Timb_TDSHES_(24x129)-04": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-04.png"}, "Timb_TDSHES_(24x129)-05": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-05.png"}, "Timb_TDSHES_(24x129)-02": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-02.png"}, "Switcher09_BigBro(32)1": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Switcher09_BigBro(32)1.png"}, "Timb_TDSHES_(24x129)-01": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-01.png"}, "ICON_HEADPHONE2": {"frames": 2, "cellh": 30, "ctltype": 2, "fn": "ICON_HEADPHONE2.png"}, "Timb_TDSHES_(24x129)-08": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-08.png"}, "Timb_TDSHES_(24x129)-09": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_TDSHES_(24x129)-09.png"}, "SC_SliderV-01_(8x40-128fr)toFXinDRK": {"frames": 128, "cellh": 40, "ctltype": 1, "fn": "SC_SliderV-01_(8x40-128fr)toFXinDRK.png"}, "Timb&KM_plastic_knoblitt-96128": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb&KM_plastic_knoblitt-96128.png"}, "Timb_MadMon8-C": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "Timb_MadMon8-C.png"}, "Timb_MadMon8-D": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "Timb_MadMon8-D.png"}, "timb_TJAMonTogVelTra-01": {"frames": 128, "cellh": 96, "ctltype": 1, "fn": "timb_TJAMonTogVelTra-01.png"}, "timb_TJAMonTogVelTra-02": {"frames": 128, "cellh": 96, "ctltype": 1, "fn": "timb_TJAMonTogVelTra-02.png"}, "lbx_button_rg24b": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "lbx_button_rg24b.png"}, "timb_spchrd-01bipo": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "timb_spchrd-01bipo.png"}, "__Snapshotv05e": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05e.png"}, "__Snapshotv05d": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05d.png"}, "__Snapshotv05f": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05f.png"}, "Timb-SM_GRIG5-31_61x61-129": {"frames": 129, "cellh": 61, "ctltype": 0, "fn": "Timb-SM_GRIG5-31_61x61-129.png"}, "__Snapshotv05c": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05c.png"}, "__Snapshotv05b": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05b.png"}, "!3c Knob Yellow": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "!3c Knob Yellow.png"}, "Timb_ColorCode_(16-129)-04red": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-04red.png"}, "Switcher": {"frames": 1, "cellh": 22, "ctltype": 2, "fn": "Switcher.png"}, "Timb_PoorMelda01_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMelda01_(96x129).png"}, "Timb-SM_GrigKnob-03_31x31-129": {"frames": 129, "cellh": 31, "ctltype": 0, "fn": "Timb-SM_GrigKnob-03_31x31-129.png"}, "timb_HY-ONOFF101804BLOO": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HY-ONOFF101804BLOO.png"}, "Joesi_bigpot": {"frames": 100, "cellh": 115, "ctltype": 0, "fn": "Joesi_bigpot.png"}, "Switcher09_BigBro(48)": {"frames": 1, "cellh": 48, "ctltype": 4, "fn": "Switcher09_BigBro(48).png"}, "TimbSM17_Switches06c2": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "TimbSM17_Switches06c2.png"}, "Timb_STLN_Slider-001_2486-128": {"frames": 128, "cellh": 86, "ctltype": 1, "fn": "Timb_STLN_Slider-001_2486-128.png"}, "Timb&kmGallery_ssl-ish-edt2_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_ssl-ish-edt2_(48129).png"}, "Timb_ColorCode_(24-129)-05orn": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-05orn.png"}, "Timb_2018_BUTTONEXIT32-01": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_BUTTONEXIT32-01.png"}, "Timb&HY_Seq16x3v2_KNOBbipo3": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOBbipo3.png"}, "Timb&HY_Seq16x3v2_KNOBbipo2": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOBbipo2.png"}, "Timb&HY_Seq16x3v2_KNOBbipo1": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOBbipo1.png"}, "Timb-SM_GRIG5-22_33x37-129": {"frames": 129, "cellh": 37, "ctltype": 0, "fn": "Timb-SM_GRIG5-22_33x37-129.png"}, "Timb_SSpot2018Control-006": {"frames": 101, "cellh": 58, "ctltype": 0, "fn": "Timb_SSpot2018Control-006.png"}, "LBX invisible 140x32": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "LBX invisible 140x32.png"}, "Timb_LMBassMasterSlider2orange": {"frames": 128, "cellh": 76, "ctltype": 1, "fn": "Timb_LMBassMasterSlider2orange.png"}, "timb&HYRPESOLOB32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb&HYRPESOLOB32.png"}, "Sexan_Timb-Slider_29334-128fr": {"frames": 128, "cellh": 334, "ctltype": 1, "fn": "Sexan_Timb-Slider_29334-128fr.png"}, "SimpleMeter_16192": {"frames": 100, "cellh": 192, "ctltype": 3, "fn": "SimpleMeter_16192.png"}, "SimpleMeter-Def5_(4x24-129fr)-yellowSCHN": {"frames": 129, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x24-129fr)-yellowSCHN.png"}, "Timb_UpDownArw-16bWASD": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-16bWASD.png"}, "Timb&kmGallery_Stamp_003_uni-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Stamp_003_uni-edt_(64129).png"}, "SC_KNOB-REDTRCK_(24x24-101frm)blue": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)blue.png"}, "Timb_CLEAR2019-SOLO": {"frames": 2, "cellh": 26, "ctltype": 2, "fn": "Timb_CLEAR2019-SOLO.png"}, "Timb_MeterBlackOnixTwo_8x63-129grn": {"frames": 129, "cellh": 63, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129grn.png"}, "Timb&kmGallery_knob_66_black_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_66_black_(64129).png"}, "SC_Switcher-01rvrs": {"frames": 2, "cellh": 28, "ctltype": 2, "fn": "SC_Switcher-01rvrs.png"}, "SimpleMeter-Def5_(4x40-129fr)orn": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)orn.png"}, "SimpleMeter-Def5_(4x40-129fr)prp": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)prp.png"}, "Switcher_Bestpoke-x2d(64x22)": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2d(64x22).png"}, "Sexan_FaderR5_29334-162fr": {"frames": 162, "cellh": 334, "ctltype": 1, "fn": "Sexan_FaderR5_29334-162fr.png"}, "SC_White_GranitePitch_64x64-73fr": {"frames": 73, "cellh": 64, "ctltype": 0, "fn": "SC_White_GranitePitch_64x64-73fr.png"}, "Timb-SM_GRIG5-27_51x51-129": {"frames": 129, "cellh": 51, "ctltype": 0, "fn": "Timb-SM_GRIG5-27_51x51-129.png"}, "Timb_Grig2018_Controls--05": {"frames": 2, "cellh": 37, "ctltype": 2, "fn": "Timb_Grig2018_Controls--05.png"}, "Timb-SM_OptGrx2_24128-03ver": {"frames": 128, "cellh": 24, "ctltype": 0, "fn": "Timb-SM_OptGrx2_24128-03ver.png"}, "Timb_boX08_Orange": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_boX08_Orange.png"}, "Timb&kmGallery_ssl-ish-edt2_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ssl-ish-edt2_(64129).png"}, "!Ableton Fader Blue NA": {"frames": 128, "cellh": 119, "ctltype": 1, "fn": "!Ableton Fader Blue NA.png"}, "BESTRPOKE_SOLO(15-2)": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_SOLO(15-2).png"}, "Timb_KM_Rubber_64128-00": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_KM_Rubber_64128-00.png"}, "Timb&kmGallery_lighting_blue_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_lighting_blue_(64129).png"}, "Timb_Grig2018_Controls--46": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_Grig2018_Controls--46.png"}, "Timb_Grig2018_Controls--47": {"frames": 2, "cellh": 18, "ctltype": 2, "fn": "Timb_Grig2018_Controls--47.png"}, "Timb_Grig2018_Controls--44": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "Timb_Grig2018_Controls--44.png"}, "Timb_Grig2018_Controls--45": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "Timb_Grig2018_Controls--45.png"}, "Timb_Grig2018_Controls--42": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--42.png"}, "Timb_Grig2018_Controls--43": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--43.png"}, "Timb_Grig2018_Controls--40": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_Grig2018_Controls--40.png"}, "Timb_Grig2018_Controls--41": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--41.png"}, "Timb_BigbuttonGreen16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_BigbuttonGreen16.png"}, "Timb_Grig2018_Controls--48": {"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--48.png"}, "Timb_Grig2018_Controls--49": {"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--49.png"}, "timb_HY-ONOFF101804GRN": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HY-ONOFF101804GRN.png"}, "Timb_FLstyleEdt-07_32-128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb_FLstyleEdt-07_32-128.png"}, "Geist2metronome": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2metronome.png"}, "Timb_MeterBlackOnixTwo_8x63-129HRZred": {"frames": 129, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129HRZred.png"}, "Timb&FL_YamahaDX1_(96x24-130fr)": {"frames": 130, "cellh": 96, "ctltype": 1, "fn": "Timb&FL_YamahaDX1_(96x24-130fr).png"}, "SC_SliderH-01_(96x23-128fr)": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "SC_SliderH-01_(96x23-128fr).png"}, "2020timb_Aquamarine Knob-02": {"frames": 45, "cellh": 43, "ctltype": 0, "fn": "2020timb_Aquamarine Knob-02.png"}, "2020timb_Aquamarine Knob-01": {"frames": 121, "cellh": 125, "ctltype": 0, "fn": "2020timb_Aquamarine Knob-01.png"}, "Timb_MegaBaby-01B_1628-128": {"frames": 128, "cellh": 28, "ctltype": 3, "fn": "Timb_MegaBaby-01B_1628-128.png"}, "Timb_MeterBlackOnixTwo-PEAK_8x16-30red": {"frames": 30, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo-PEAK_8x16-30red.png"}, "Timb_WavesF6OnoFF(32)": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_WavesF6OnoFF(32).png"}, "SC_GraniteStartv2(196-128fr)": {"frames": 128, "cellh": 196, "ctltype": 0, "fn": "SC_GraniteStartv2(196-128fr).png"}, "Timb&kmGallery_Symmetry_(64129)b": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Symmetry_(64129)b.png"}, "Timb&KM_plastic_knobarr-96128": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb&KM_plastic_knobarr-96128.png"}, "Timb_Button_KORGMS2000_26x": {"frames": 2, "cellh": 26, "ctltype": 2, "fn": "Timb_Button_KORGMS2000_26x.png"}, "Timb_UpDownArw-14a": {"frames": 1, "cellh": 94, "ctltype": 4, "fn": "Timb_UpDownArw-14a.png"}, "Timb_UpDownArw-14b": {"frames": 1, "cellh": 94, "ctltype": 4, "fn": "Timb_UpDownArw-14b.png"}, "__Snapshotv06c": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv06c.png"}, "Timb-SM_GrigKnob-42vol_47x48-129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-42vol_47x48-129.png"}, "timb_LED20eXp4dvertic": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp4dvertic.png"}, "SC_Loopey-Slider 04_844-101": {"frames": 101, "cellh": 44, "ctltype": 1, "fn": "SC_Loopey-Slider 04_844-101.png"}, "Switcher08b(16x32)": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Switcher08b(16x32).png"}, "Timb&kmGallery_4ModernChromy_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_4ModernChromy_(64129).png"}, "Switcher_MiniSwitcher2b": {"frames": 1, "cellh": 21, "ctltype": 4, "fn": "Switcher_MiniSwitcher2b.png"}, "Timb-SM_OptGrx2_40128-10ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-10ver.png"}, "Timb_Falcon Fake Knob": {"frames": 128, "cellh": 36, "ctltype": 0, "fn": "Timb_Falcon Fake Knob.png"}, "Timb-SM_GrigKnob-40pan_47x48-129": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb-SM_GrigKnob-40pan_47x48-129.png"}, "Timb-SM_OptGrx2_40128-02ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-02ver.png"}, "Timb_knob verde osc danplug_96128fr": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_knob verde osc danplug_96128fr.png"}, "lbx_button_rg": {"frames": 2, "cellh": 48, "ctltype": 2, "fn": "lbx_button_rg.png"}, "Timb-NickMoritz_SmallKnob-05_32128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-05_32128.png"}, "Timb_opGui2019-01_EQ32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_opGui2019-01_EQ32.png"}, "SimpleFlat2_64": {"frames": 100, "cellh": 64, "ctltype": 0, "fn": "SimpleFlat2_64.png"}, "Timb&kmGallery_MiniBrute_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MiniBrute_(64129).png"}, "Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyOrangeKSP8BiPo_(64129).png"}, "Timb&HY_Filter3Meter(85x90)2": {"frames": 90, "cellh": 85, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)2.png"}, "Timb_FLstyleEdt-01_40-128": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb_FLstyleEdt-01_40-128.png"}, "!Reduction Meter Inv Green": {"frames": 128, "cellh": 119, "ctltype": 3, "fn": "!Reduction Meter Inv Green.png"}, "Timb_MeterXRAYMANALOGLARGE_16320-128": {"frames": 128, "cellh": 320, "ctltype": 3, "fn": "Timb_MeterXRAYMANALOGLARGE_16320-128.png"}, "Timb_MeterCybZinc_16240-128fr": {"frames": 128, "cellh": 240, "ctltype": 3, "fn": "Timb_MeterCybZinc_16240-128fr.png"}, "Timb_TAKESWITCHERXXL_(22x200)": {"frames": 200, "cellh": 22, "ctltype": 4, "fn": "Timb_TAKESWITCHERXXL_(22x200).png"}, "Switcher09_BigBro(48)2": {"frames": 1, "cellh": 48, "ctltype": 4, "fn": "Switcher09_BigBro(48)2.png"}, "Timb_TAKESWITCHER-(512)-bb-01": {"frames": 512, "cellh": 16, "ctltype": 4, "fn": "Timb_TAKESWITCHER-(512)-bb-01.png"}, "Timb_SendBOX-PAN_(16-129)puurp": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)puurp.png"}, "Timb_ColorCode_(24-129)-07prp": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-07prp.png"}, "Timb_ExpoWhite96128": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_ExpoWhite96128.png"}, "TJA ValhallaUberModSliderRed": {"frames": 128, "cellh": 96, "ctltype": 1, "fn": "TJA ValhallaUberModSliderRed.png"}, "SC_Knob_(16x16-100fr)4": {"frames": 100, "cellh": 16, "ctltype": 0, "fn": "SC_Knob_(16x16-100fr)4.png"}, "Timb-SM_GRIG5-40_35x38-129": {"frames": 129, "cellh": 38, "ctltype": 0, "fn": "Timb-SM_GRIG5-40_35x38-129.png"}, "Timb_Blankfiles-ConcertoSliderB_16128-128horz": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_Blankfiles-ConcertoSliderB_16128-128horz.png"}, "LARGE_SLIDER_TYPE2": {"frames": 1, "cellh": 263, "ctltype": 5, "knbsz": 57, "fn": "LARGE_SLIDER_TYPE2.png"}, "__Snapshot_timb-Clear8b": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "__Snapshot_timb-Clear8b.png"}, "Timb-NickMoritz_MidKnob-01_64128": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-NickMoritz_MidKnob-01_64128.png"}, "ButtonLOREZ16yellow": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "ButtonLOREZ16yellow.png"}, "Timb&kmGallery_maschine-default-edit_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine-default-edit_(64129).png"}, "Timb&HY_ModernishXe": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishXe.png"}, "Timb&HY_ModernishXb": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXb.png"}, "Timb_Simple Color Frames-Orange": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Orange.png"}, "Timb_NSA-FREESTYLE-Knob-01": {"frames": 101, "cellh": 64, "ctltype": 0, "fn": "Timb_NSA-FREESTYLE-Knob-01.png"}, "Timb_NSA-FREESTYLE-Knob-03": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "Timb_NSA-FREESTYLE-Knob-03.png"}, "Timb_NSA-FREESTYLE-Knob-02": {"frames": 101, "cellh": 32, "ctltype": 0, "fn": "Timb_NSA-FREESTYLE-Knob-02.png"}, "Timb_2018_ButtonsFrThemes-14": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-14.png"}, "Timb_2018_ButtonsFrThemes-15": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-15.png"}, "Timb_2018_ButtonsFrThemes-16": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-16.png"}, "Timb_2018_ButtonsFrThemes-17": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-17.png"}, "Timb&kmGallery_gg_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_gg_(64129).png"}, "Timb_2018_ButtonsFrThemes-11": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-11.png"}, "KM2016_SimpleBigKnobWhite_40-128fr": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobWhite_40-128fr.png"}, "Timb_2018_ButtonsFrThemes-13": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-13.png"}, "Timb_2018_ButtonsFrThemes-18": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-18.png"}, "KM2016_knob_(26x26-128fr)_green": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knob_(26x26-128fr)_green.png"}, "__Snapshotv03": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv03.png"}, "__Snapshotv02": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv02.png"}, "__Snapshotv05": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv05.png"}, "__Snapshotv04": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv04.png"}, "__Snapshotv06": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv06.png"}, "Timb&kmGallery_Hippy 4_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 4_(64129).png"}, "SC_STORAGE-01_(4x4-150)": {"frames": 150, "cellh": 4, "ctltype": 3, "fn": "SC_STORAGE-01_(4x4-150).png"}, "Timb&kmGallery_maschine_editTimbeditD_(64x130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditD_(64x130).png"}, "Timb_FLstyleEdt-10_48-128": {"frames": 128, "cellh": 48, "ctltype": 0, "fn": "Timb_FLstyleEdt-10_48-128.png"}, "Timb_MadMon8-K1OnOff": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "Timb_MadMon8-K1OnOff.png"}, "SC_iKnobProgramV2_32128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "SC_iKnobProgramV2_32128.png"}, "Timb_HandMadeSOLO28": {"frames": 2, "cellh": 28, "ctltype": 2, "fn": "Timb_HandMadeSOLO28.png"}, "Timb_Tantra_MATRIXPB16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_MATRIXPB16.png"}, "Timb_Minika16101_RED": {"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_RED.png"}, "timb&HYRPEMUTEB32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb&HYRPEMUTEB32.png"}, "Timb_boX08_Green": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_boX08_Green.png"}, "Timb&kmGallery_Res_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Res_(64129).png"}, "KM2016_XVKnobmed_26x26-128fr": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_XVKnobmed_26x26-128fr.png"}, "Timb_MadMon8-K2METERBottom": {"frames": 2, "cellh": 4, "ctltype": 2, "fn": "Timb_MadMon8-K2METERBottom.png"}, "Timb&kmGallery_MS2000_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MS2000_(64129).png"}, "Timb&kmGallery_Saifan 3_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Saifan 3_(64129).png"}, "Timb_5dB5_K-MOR-4meter": {"frames": 100, "cellh": 181, "ctltype": 3, "fn": "Timb_5dB5_K-MOR-4meter.png"}, "Timb&kmGallery_Crelay_po_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Crelay_po_(64129).png"}, "KM2016_SENDHORZ(40x20-128fr)-01": {"frames": 128, "cellh": 20, "ctltype": 1, "fn": "KM2016_SENDHORZ(40x20-128fr)-01.png"}, "Timb-SM_GRIG5-21_33x37-129": {"frames": 129, "cellh": 37, "ctltype": 0, "fn": "Timb-SM_GRIG5-21_33x37-129.png"}, "LBX - green line 32": {"frames": 100, "cellh": 32, "ctltype": 0, "fn": "LBX - green line 32.png"}, "Timb_NSA TSW Red-02": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_NSA TSW Red-02.png"}, "__Snapshotv06b": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshotv06b.png"}, "SC_BTNDef5-MUTE_12": {"frames": 2, "cellh": 12, "ctltype": 2, "fn": "SC_BTNDef5-MUTE_12.png"}, "__Snapshotv06d": {"frames": 1, "cellh": 39, "ctltype": 4, "fn": "__Snapshotv06d.png"}, "SC_BTNDef5-MUTE_16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNDef5-MUTE_16.png"}, "Timb_MeterBlackOnixTwo_8x63-129HRZylw": {"frames": 129, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129HRZylw.png"}, "ButtonLOREZ16green": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "ButtonLOREZ16green.png"}, "SimpleButton_16BLUE": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16BLUE.png"}, "Timb-SM_Replica's_01_16x100-31fr": {"frames": 31, "cellh": 16, "ctltype": 1, "fn": "Timb-SM_Replica's_01_16x100-31fr.png"}, "Timb-SM_OptGrx2_64128-02ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-02ver.png"}, "Timb_Aimp-ONOFF-0": {"frames": 2, "cellh": 75, "ctltype": 2, "fn": "Timb_Aimp-ONOFF-0.png"}, "KM2016_knobTmbmod_(26x26-128fr)_blue": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_blue.png"}, "Kirnu-Cream_x64_106_PNG": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Kirnu-Cream_x64_106_PNG.png"}, "Timb_ColorCode_(24-129)-06gry": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-06gry.png"}, "Timb&kmGallery_Wasteland 001_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Wasteland 001_(64129).png"}, "__Snapshot_timb-Rand3WASD": {"frames": 2, "cellh": 23, "ctltype": 4, "fn": "__Snapshot_timb-Rand3WASD.png"}, "Timb_ColorCode_(24-129)-04red": {"frames": 129, "cellh": 24, "ctltype": 0, "fn": "Timb_ColorCode_(24-129)-04red.png"}, "SimpleButton_16RED": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16RED.png"}, "SC_PRGRAMC-BOX_(352x32-128fr)": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "SC_PRGRAMC-BOX_(352x32-128fr).png"}, "Timb_UpDownArw-15c": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15c.png"}, "Timb_UpDownArw-15b": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15b.png"}, "Timb_UpDownArw-15a": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15a.png"}, "Timb_UpDownArw-15e": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15e.png"}, "Timb_UpDownArw-15d": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_UpDownArw-15d.png"}, "Timb&kmGallery_mixer_blue_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_mixer_blue_(64129).png"}, "Geist2quantise": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Geist2quantise.png"}, "Timb-SM_GrigKnob-35_41x41-127": {"frames": 127, "cellh": 41, "ctltype": 0, "fn": "Timb-SM_GrigKnob-35_41x41-127.png"}, "__XY": {"frames": 1, "cellh": 200, "ctltype": 4, "fn": "__XY.png"}, "timb_LED20eXp4evertic": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp4evertic.png"}, "SimpleFader_1696": {"frames": 100, "cellh": 96, "ctltype": 1, "fn": "SimpleFader_1696.png"}, "!Ableton Horizontal Fader Yellow": {"frames": 128, "cellh": 13, "ctltype": 0, "fn": "!Ableton Horizontal Fader Yellow.png"}, "Timb_WavesF6EQ_(32x130)2": {"frames": 130, "cellh": 32, "ctltype": 0, "fn": "Timb_WavesF6EQ_(32x130)2.png"}, "Timb_Grig2018_Controls--55": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--55.png"}, "Timb_Grig2018_Controls--54": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--54.png"}, "Timb_Grig2018_Controls--57": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "Timb_Grig2018_Controls--57.png"}, "Timb_Grig2018_Controls--56": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_Grig2018_Controls--56.png"}, "Timb_Grig2018_Controls--51": {"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--51.png"}, "Timb_Grig2018_Controls--50": {"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--50.png"}, "Timb_Grig2018_Controls--53": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "Timb_Grig2018_Controls--53.png"}, "Timb_Grig2018_Controls--52": {"frames": 2, "cellh": 41, "ctltype": 2, "fn": "Timb_Grig2018_Controls--52.png"}, "SC_SurroGate-SEND02-58101": {"frames": 101, "cellh": 58, "ctltype": 0, "fn": "SC_SurroGate-SEND02-58101.png"}, "Timb_Grig2018_Controls--59": {"frames": 2, "cellh": 28, "ctltype": 2, "fn": "Timb_Grig2018_Controls--59.png"}, "Timb_Grig2018_Controls--58": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--58.png"}, "DEFBUTTO_OnOff16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "DEFBUTTO_OnOff16.png"}, "Timb_Simple Color Frames-Orangebb": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Orangebb.png"}, "SimpleFlat2_96": {"frames": 100, "cellh": 96, "ctltype": 0, "fn": "SimpleFlat2_96.png"}, "Timb_Meter_SESMODTRCK_33x8-128fr_R2b": {"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x8-128fr_R2b.png"}, "Timb_MeterHRZJanneSerenity_8324-128": {"frames": 128, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterHRZJanneSerenity_8324-128.png"}, "Timb_UpDownArw-03b": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-03b.png"}, "Timb&HY_ButtonSquare1(32)": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb&HY_ButtonSquare1(32).png"}, "!AL Horizontal Fader Small": {"frames": 128, "cellh": 13, "ctltype": 0, "fn": "!AL Horizontal Fader Small.png"}, "Timb_Peak-ish-1": {"frames": 128, "cellh": 16, "ctltype": 3, "fn": "Timb_Peak-ish-1.png"}, "Timb&kmGallery_Wayout_006-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Wayout_006-edt_(64129).png"}, "Timb&HY_Filter3Meter(85x90)HRZ2": {"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ2.png"}, "Timb&HY_Filter3Meter(85x90)HRZ3": {"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ3.png"}, "Timb&HY_Filter3Meter(85x90)HRZ4": {"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ4.png"}, "Timb&HY_Filter3Meter(85x90)HRZ5": {"frames": 90, "cellh": 16, "ctltype": 3, "fn": "Timb&HY_Filter3Meter(85x90)HRZ5.png"}, "Timb_Zyn32OnOff-2b": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Zyn32OnOff-2b.png"}, "Timb_MIDIMONITOR17_8x128": {"frames": 128, "cellh": 8, "ctltype": 1, "fn": "Timb_MIDIMONITOR17_8x128.png"}, "Timb-SM_Saturday Knobs_02-D_40101fr": {"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_02-D_40101fr.png"}, "Timb-SM_Annimot05_50100": {"frames": 100, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Annimot05_50100.png"}, "Kirnu-Cream_x64_109_PNG": {"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_109_PNG.png"}, "Timb-SM_Saturday Knobs_03-B_80101fr": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_03-B_80101fr.png"}, "Timb_MeterCLSC10_8142-128": {"frames": 128, "cellh": 142, "ctltype": 3, "fn": "Timb_MeterCLSC10_8142-128.png"}, "SC_LBX-knob10bis_(32x128)": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "SC_LBX-knob10bis_(32x128).png"}, "KM2016_knob_(30x30-128fr)": {"frames": 128, "cellh": 30, "ctltype": 0, "fn": "KM2016_knob_(30x30-128fr).png"}, "Timb&FL_Roland Juno106_(100x27-130fr)": {"frames": 130, "cellh": 100, "ctltype": 1, "fn": "Timb&FL_Roland Juno106_(100x27-130fr).png"}, "Timb&kmGallery_Credence_bipo_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Credence_bipo_(64129).png"}, "SimpleMeter-STORAGE_8x8x200b": {"frames": 200, "cellh": 8, "ctltype": 3, "fn": "SimpleMeter-STORAGE_8x8x200b.png"}, "Timb-SM_BlooPAN_40120": {"frames": 120, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_BlooPAN_40120.png"}, "Timb_MeterSideChainRVRS_8-64yellow": {"frames": 129, "cellh": 64, "ctltype": 3, "fn": "Timb_MeterSideChainRVRS_8-64yellow.png"}, "__Snapshot": {"frames": 1, "cellh": 50, "ctltype": 4, "fn": "__Snapshot.png"}, "Timb-SM_OptGrx2_40128-05ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-05ver.png"}, "Switcher_Bestpoke-x2b(96x22)b": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2b(96x22)b.png"}, "lbx_knob32_smoothblack_blue": {"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_blue.png"}, "!AL Grey Empty Knob Yellow 2S": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL Grey Empty Knob Yellow 2S.png"}, "Timb-SM_GrigKnob-11_24x28-129": {"frames": 129, "cellh": 28, "ctltype": 0, "fn": "Timb-SM_GrigKnob-11_24x28-129.png"}, "Timb&kmGallery_Half Punk-uni_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Half Punk-uni_(64129).png"}, "Timb_RolandSH101Wood_(108-129)": {"frames": 129, "cellh": 108, "ctltype": 1, "fn": "Timb_RolandSH101Wood_(108-129).png"}, "Timb_SimpleFlat1_6496fr": {"frames": 96, "cellh": 64, "ctltype": 0, "fn": "Timb_SimpleFlat1_6496fr.png"}, "NEVE-73-CLIP": {"frames": 2, "cellh": 15, "ctltype": 3, "fn": "NEVE-73-CLIP.png"}, "!32 Button 2": {"frames": 2, "cellh": 32, "fn": "!32 Button 2.png"}, "SC_A1GATE_Note_12x32-101": {"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_A1GATE_Note_12x32-101.png"}, "TJA_Zebra2_cent_red": {"frames": 128, "cellh": 28, "ctltype": 0, "fn": "TJA_Zebra2_cent_red.png"}, "KM2016_Silverflatwithno_(64x64-128fr)": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "KM2016_Silverflatwithno_(64x64-128fr).png"}, "Switcher08(18x64)": {"frames": 1, "cellh": 18, "ctltype": 4, "fn": "Switcher08(18x64).png"}, "Timb_5dB5_MutantButton96": {"frames": 2, "cellh": 96, "ctltype": 2, "fn": "Timb_5dB5_MutantButton96.png"}, "Timb_FALCON&UPGExtras-4EQ": {"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-4EQ.png"}, "Timb&FL_Roland Juno106_(160x27-130fr)": {"frames": 130, "cellh": 160, "ctltype": 1, "fn": "Timb&FL_Roland Juno106_(160x27-130fr).png"}, "Timb_Grig2018_Controls--61b": {"frames": 2, "cellh": 36, "ctltype": 2, "fn": "Timb_Grig2018_Controls--61b.png"}, "Timb_SendBOX-PAN_(16-129)redd": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)redd.png"}, "timb_LED20eXp4bHALF": {"frames": 100, "cellh": 84, "ctltype": 3, "fn": "timb_LED20eXp4bHALF.png"}, "timb_LED20eXp3hue1": {"frames": 100, "cellh": 189, "ctltype": 3, "fn": "timb_LED20eXp3hue1.png"}, "Timb_REA Render To Disk": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_REA Render To Disk.png"}, "SC_iKnobProgram_64128": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_iKnobProgram_64128.png"}, "Timb&kmGallery_Punk_010_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Punk_010_(64129).png"}, "KM2016_SilverBox_(32x20-128fr)": {"frames": 128, "cellh": 20, "ctltype": 0, "fn": "KM2016_SilverBox_(32x20-128fr).png"}, "Timb_MeterBlackOnixTwo_8x123-129": {"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x123-129.png"}, "__Snapshotv14HY56": {"frames": 1, "cellh": 56, "ctltype": 4, "fn": "__Snapshotv14HY56.png"}, "Timb&kmGallery_Knob18edt-1": {"frames": 129, "cellh": 128, "ctltype": 0, "fn": "Timb&kmGallery_Knob18edt-1.png"}, "Timb_Meter_SESMODTRCK_33x8-16fr_R2b": {"frames": 16, "cellh": 8, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x8-16fr_R2b.png"}, "SC_CamelGATE2017_8x24-128": {"frames": 128, "cellh": 24, "ctltype": 3, "fn": "SC_CamelGATE2017_8x24-128.png"}, "KM2016_knobTmbmod_(26x26-128fr)_black": {"frames": 128, "cellh": 26, "ctltype": 0, "fn": "KM2016_knobTmbmod_(26x26-128fr)_black.png"}, "SC_Loopey-Slider 03_1664-101": {"frames": 101, "cellh": 64, "ctltype": 1, "fn": "SC_Loopey-Slider 03_1664-101.png"}, "Timb_2018_ButtonsFrThemes-07": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-07.png"}, "Timb_2018_ButtonsFrThemes-06": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-06.png"}, "Timb_2018_ButtonsFrThemes-05": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-05.png"}, "Timb_2018_ButtonsFrThemes-04": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-04.png"}, "Timb_2018_ButtonsFrThemes-03": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-03.png"}, "Timb_2018_ButtonsFrThemes-02": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-02.png"}, "Timb_2018_ButtonsFrThemes-01": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-01.png"}, "Timb_2018_ButtonsFrThemes-00": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_2018_ButtonsFrThemes-00.png"}, "Timb_2018_ButtonsFrThemes-09": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-09.png"}, "Timb_2018_ButtonsFrThemes-08": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_2018_ButtonsFrThemes-08.png"}, "Timb&kmGallery_knob_vintage_black_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_knob_vintage_black_(64129).png"}, "__Snapshotv16": {"frames": 1, "cellh": 95, "ctltype": 4, "fn": "__Snapshotv16.png"}, "ButtonLOREZ16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "ButtonLOREZ16.png"}, "Timb-SM_OptGrx2_32128-16ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-16ver.png"}, "!Button_Empty_Medium": {"frames": 2, "cellh": 13, "ctltype": 2, "fn": "!Button_Empty_Medium.png"}, "Timb_SendBOX-PAN_(16-129)yello": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)yello.png"}, "Timb_MadMon8-H1_Top": {"frames": 2, "cellh": 4, "ctltype": 2, "fn": "Timb_MadMon8-H1_Top.png"}, "__Snapshot_timb-Rand0g2": {"frames": 2, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Rand0g2.png"}, "Timb-SM_OptGrx2_64128-16ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-16ver.png"}, "LBX_Invisible": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "LBX_Invisible.png"}, "Timb&kmGallery_Glow Knob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Glow Knob_(64129).png"}, "Timb&kmGallery_ShinyRedKSP8UNI_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyRedKSP8UNI_(64129).png"}, "Kirnu-Cream_x64_108_PNG": {"frames": 127, "cellh": 56, "ctltype": 0, "fn": "Kirnu-Cream_x64_108_PNG.png"}, "Timb_GATEMETER-01_(48-128)-Right": {"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_GATEMETER-01_(48-128)-Right.png"}, "timb_LED20eXp6vertic": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp6vertic.png"}, "KM2016_SimpleBigKnobGrey_40-128fr": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "KM2016_SimpleBigKnobGrey_40-128fr.png"}, "TimbSM17_Switches11d(30x)": {"frames": 2, "cellh": 30, "ctltype": 2, "fn": "TimbSM17_Switches11d(30x).png"}, "Timb-SM_GRIG5-26_45x45-129": {"frames": 129, "cellh": 45, "ctltype": 0, "fn": "Timb-SM_GRIG5-26_45x45-129.png"}, "Timb&kmGallery_XVVFaderEDTB2_128x130fr": {"frames": 130, "cellh": 24, "ctltype": 1, "fn": "Timb&kmGallery_XVVFaderEDTB2_128x130fr.png"}, "Timb_MeterBEATWING_8240-128fr": {"frames": 128, "cellh": 240, "ctltype": 3, "fn": "Timb_MeterBEATWING_8240-128fr.png"}, "Timb-SM_OptGrx2_24128-13ver": {"frames": 128, "cellh": 24, "ctltype": 0, "fn": "Timb-SM_OptGrx2_24128-13ver.png"}, "Timb_MeterBlackOnixTwo_8x63-129HRZblo": {"frames": 129, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129HRZblo.png"}, "KM_Speaker_64-128fr": {"frames": 128, "cellh": 64, "ctltype": 3, "fn": "KM_Speaker_64-128fr.png"}, "SC_Loopey-DarkRedKnob(50x101)": {"frames": 101, "cellh": 50, "ctltype": 0, "fn": "SC_Loopey-DarkRedKnob(50x101).png"}, "Timb&kmGallery_ShinyBlueKSP8UNI_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_ShinyBlueKSP8UNI_(64129).png"}, "Timb-SM_OptGrx2_40128-19ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-19ver.png"}, "TimbSM17_Switches11": {"frames": 2, "cellh": 55, "ctltype": 2, "fn": "TimbSM17_Switches11.png"}, "TimbSM17_Switches10": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "TimbSM17_Switches10.png"}, "Timb_5dB5_K-MOR-3button": {"frames": 2, "cellh": 20, "ctltype": 2, "fn": "Timb_5dB5_K-MOR-3button.png"}, "Timb_JanneUnivLite_SLIDER_19150-129": {"frames": 129, "cellh": 150, "ctltype": 1, "fn": "Timb_JanneUnivLite_SLIDER_19150-129.png"}, "KM2016_BlackAngleEdt_64-128fr": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "KM2016_BlackAngleEdt_64-128fr.png"}, "Timb_Meter_SESMODTRCK_33x4-128fr_R": {"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_R.png"}, "__Snapshot_Timb-Pause": {"frames": 1, "cellh": 96, "ctltype": 4, "fn": "__Snapshot_Timb-Pause.png"}, "Timb_BWG_mute_32x42": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_BWG_mute_32x42.png"}, "Kirnu-Cream_x64_107_PNG": {"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Kirnu-Cream_x64_107_PNG.png"}, "Timb-NickMoritz_BigKnob-01_64128": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-NickMoritz_BigKnob-01_64128.png"}, "Timb&kmGallery_Credence_po_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Credence_po_(64129).png"}, "Timb_Minika16101_DBLO": {"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_DBLO.png"}, "Switcher03(40x128)": {"frames": 1, "cellh": 40, "ctltype": 4, "fn": "Switcher03(40x128).png"}, "Timb_SendBOX-PAN_(16-129)brwn": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)brwn.png"}, "Timb_Grig2018_Controls--68": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "Timb_Grig2018_Controls--68.png"}, "Timb_Grig2018_Controls--69": {"frames": 2, "cellh": 29, "ctltype": 2, "fn": "Timb_Grig2018_Controls--69.png"}, "Timb_Tantra_MODNEXBUT16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_MODNEXBUT16.png"}, "Timb_BigbuttonGreen32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_BigbuttonGreen32.png"}, "Timb_Grig2018_Controls--60": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "Timb_Grig2018_Controls--60.png"}, "Timb_Grig2018_Controls--61": {"frames": 2, "cellh": 36, "ctltype": 2, "fn": "Timb_Grig2018_Controls--61.png"}, "Timb_Grig2018_Controls--62": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--62.png"}, "Timb_Grig2018_Controls--63": {"frames": 2, "cellh": 33, "ctltype": 2, "fn": "Timb_Grig2018_Controls--63.png"}, "Timb_Grig2018_Controls--66": {"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66.png"}, "Timb_Grig2018_Controls--67": {"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--67.png"}, "Timb&HY_mozole-2_(64x130)": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_mozole-2_(64x130).png"}, "Timb_MeterBlackOnixTwo_8x63-129HRZgrn": {"frames": 129, "cellh": 8, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129HRZgrn.png"}, "__Snapshot_timb-Clear9": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear9.png"}, "__Snapshot_timb-Clear8": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear8.png"}, "__Snapshot_timb-Clear1": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear1.png"}, "__Snapshot_timb-Clear3": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear3.png"}, "__Snapshot_timb-Clear2": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear2.png"}, "__Snapshot_timb-Clear5": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear5.png"}, "__Snapshot_timb-Clear4": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear4.png"}, "__Snapshot_timb-Clear7": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear7.png"}, "__Snapshot_timb-Clear6": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "__Snapshot_timb-Clear6.png"}, "LBX_CircleKnob1_(timb-dark)": {"frames": 100, "cellh": 48, "ctltype": 0, "fn": "LBX_CircleKnob1_(timb-dark).png"}, "__Snapshot NSA Red-02": {"frames": 1, "cellh": 40, "ctltype": 4, "fn": "__Snapshot NSA Red-02.png"}, "__Snapshot NSA Red-01": {"frames": 1, "cellh": 42, "ctltype": 4, "fn": "__Snapshot NSA Red-01.png"}, "Timb&kmGallery_cyan_light_knob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_cyan_light_knob_(64129).png"}, "Timb-NickMoritz_SmallKnob-03mod_32128": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-NickMoritz_SmallKnob-03mod_32128.png"}, "Timb_MeterBlackOnixTwo_8x63-129blo": {"frames": 129, "cellh": 63, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x63-129blo.png"}, "SimpleMeter_864": {"frames": 100, "cellh": 64, "ctltype": 3, "fn": "SimpleMeter_864.png"}, "SC_A1GATE_Volume_12x36-101": {"frames": 101, "cellh": 36, "ctltype": 3, "fn": "SC_A1GATE_Volume_12x36-101.png"}, "Timb&kmGallery_Prophet5-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Prophet5-edt_(64129).png"}, "Timb&kmGallery_La-bas_009_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_La-bas_009_(64129).png"}, "SC_CamelGATE_8x32-101-c": {"frames": 101, "cellh": 32, "ctltype": 3, "fn": "SC_CamelGATE_8x32-101-c.png"}, "Timb_TakeSwitcher2020-01": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_TakeSwitcher2020-01.png"}, "Timb-SM_GrigKnob-39_31x31-129": {"frames": 129, "cellh": 31, "ctltype": 0, "fn": "Timb-SM_GrigKnob-39_31x31-129.png"}, "SimpleMeter-Def5_(4x40-129fr)ylw": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)ylw.png"}, "Timb-SM_OptGrx2_40128-13ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-13ver.png"}, "SimpleFlat2_48": {"frames": 100, "cellh": 48, "ctltype": 0, "fn": "SimpleFlat2_48.png"}, "Timb-SM_Loopey's Set 02e_50x50-101": {"frames": 101, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02e_50x50-101.png"}, "Timb_MeterBLCKMORE_13322-128fr": {"frames": 128, "cellh": 322, "ctltype": 3, "fn": "Timb_MeterBLCKMORE_13322-128fr.png"}, "Timb_PoorMeldaB01_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMeldaB01_(96x129).png"}, "Timb-SM_Loopey's Set 01b_50x50-129": {"frames": 129, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 01b_50x50-129.png"}, "Switcher_Bestpoke-x2(416x22)": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x2(416x22).png"}, "Timb_GATEMETER-01_(48-128)": {"frames": 128, "cellh": 48, "ctltype": 3, "fn": "Timb_GATEMETER-01_(48-128).png"}, "!Switcher O-B-W Rounded float": {"frames": 4, "cellh": 22, "ctltype": 2, "fn": "!Switcher O-B-W Rounded float.png"}, "Timb-SM_OptGrx2_40128-08ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-08ver.png"}, "MPS-1664SEQ-2": {"frames": 4, "cellh": 64, "ctltype": 1, "fn": "MPS-1664SEQ-2.png"}, "SimpleMeter-Def5_(4x40-129fr)wht": {"frames": 129, "cellh": 40, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x40-129fr)wht.png"}, "Timb_HandMadeSIMPLE onoff-01": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeSIMPLE onoff-01.png"}, "Timb_HandMadeSIMPLE onoff-02": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeSIMPLE onoff-02.png"}, "Timb_HandMadeSIMPLE onoff-03": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeSIMPLE onoff-03.png"}, "Timb_HandMadeSIMPLE onoff-04": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeSIMPLE onoff-04.png"}, "Timb_SQUARE_16x16-128_Purple": {"frames": 128, "cellh": 16, "ctltype": 1, "fn": "Timb_SQUARE_16x16-128_Purple.png"}, "SC_iKnobProgram_40128": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "SC_iKnobProgram_40128.png"}, "Timb_ColorCode_(19-129)-02ylw": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-02ylw.png"}, "Timb_MultiFXSENDER12x16-5fr": {"frames": 5, "cellh": 16, "ctltype": 2, "fn": "Timb_MultiFXSENDER12x16-5fr.png"}, "timb_LEDeXp10": {"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp10.png"}, "Timb&kmGallery_Hippy 6_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Hippy 6_(64129).png"}, "__default": {"frames": 100, "cellh": 64, "ctltype": 0, "fn": "__default.png"}, "Timb-SM_RazorVOL_50x50-101": {"frames": 101, "cellh": 50, "ctltype": 0, "fn": "Timb-SM_RazorVOL_50x50-101.png"}, "Timb&Bryntes_Trap2_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Trap2_(64129).png"}, "timb_LEDeXp1": {"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp1.png"}, "Timb_TAKESWITCHERXXL_(28x200)": {"frames": 200, "cellh": 28, "ctltype": 4, "fn": "Timb_TAKESWITCHERXXL_(28x200).png"}, "Timb_Tantra_CLOSE23": {"frames": 2, "cellh": 23, "ctltype": 2, "fn": "Timb_Tantra_CLOSE23.png"}, "Timb&HY_ModernishX2c": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2c.png"}, "Timb&HY_ModernishX2b": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2b.png"}, "Timb&HY_ModernishX2e": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2e.png"}, "Timb&HY_ModernishX2d": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2d.png"}, "Timb&kmGallery_lever knob_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_lever knob_(64129).png"}, "Timb&HY_ModernishX2f": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2f.png"}, "__Snapshot_timb-SSTClear-02b": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "__Snapshot_timb-SSTClear-02b.png"}, "!A 2": {"frames": 101, "cellh": 32, "fn": "!A 2.png"}, "SimpleFlat_96": {"frames": 100, "cellh": 96, "ctltype": 0, "fn": "SimpleFlat_96.png"}, "SC_BTNFusionSwsMUTE16b": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNFusionSwsMUTE16b.png"}, "!A 1": {"frames": 101, "cellh": 32, "fn": "!A 1.png"}, "Guitar Rig 5_379_PICTURE": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Guitar Rig 5_379_PICTURE.png"}, "!A 2 MED": {"frames": 101, "cellh": 24, "fn": "!A 2 MED.png"}, "Timb_NSA TSW Red-02b": {"frames": 1, "cellh": 24, "ctltype": 4, "fn": "Timb_NSA TSW Red-02b.png"}, "Timb-SM_GrigKnob-07_42x44-129": {"frames": 129, "cellh": 44, "ctltype": 0, "fn": "Timb-SM_GrigKnob-07_42x44-129.png"}, "timb_HY-ONOFF101804GRN2": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb_HY-ONOFF101804GRN2.png"}, "timb_PoorOrbish-1": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-1.png"}, "timb_PoorOrbish-2": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-2.png"}, "timb_PoorOrbish-3": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-3.png"}, "timb_PoorOrbish-4": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-4.png"}, "timb_PoorOrbish-5": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-5.png"}, "Timb-SM_longcent_44100": {"frames": 100, "cellh": 44, "ctltype": 0, "fn": "Timb-SM_longcent_44100.png"}, "Timb_Minika16101_GRN": {"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_GRN.png"}, "lbx_knob32_smoothblack_white": {"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_white.png"}, "Timb&kmGallery_iKnob_white_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_iKnob_white_(64129).png"}, "SimpleButton_16GREEN": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SimpleButton_16GREEN.png"}, "Timb&Bryntes_Tal 50x50_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&Bryntes_Tal 50x50_(64129).png"}, "Timb-SM_GRIG5-33_54x51-127": {"frames": 127, "cellh": 51, "ctltype": 0, "fn": "Timb-SM_GRIG5-33_54x51-127.png"}, "Timb_Grig2018_Controls--66e": {"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66e.png"}, "Timb_Grig2018_Controls--66d": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66d.png"}, "Timb_Grig2018_Controls--66c": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66c.png"}, "Timb_Grig2018_Controls--66b": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66b.png"}, "Timb_Grig2018_Controls--66a": {"frames": 2, "cellh": 11, "ctltype": 2, "fn": "Timb_Grig2018_Controls--66a.png"}, "Timb_Action (FX) Render To Midi-01": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "Timb_Action (FX) Render To Midi-01.png"}, "Timb-SM_Monday Knobs-05_80101": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-05_80101.png"}, "Timb_Simple Color Frames-Black": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-Black.png"}, "LBX_ledstrip_bars2": {"frames": 100, "cellh": 176, "ctltype": 3, "fn": "LBX_ledstrip_bars2.png"}, "Timb_XBaseKnob_68128": {"frames": 128, "cellh": 68, "ctltype": 0, "fn": "Timb_XBaseKnob_68128.png"}, "timb_LED20eXp3losat": {"frames": 100, "cellh": 189, "ctltype": 3, "fn": "timb_LED20eXp3losat.png"}, "lbx_knob64_smoothblack_red": {"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_red.png"}, "Timb&kmGallery_1_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_1_(64129).png"}, "Timb-SM_Loopey's Set 02b_40x40-127": {"frames": 127, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Loopey's Set 02b_40x40-127.png"}, "Timb-SM_Saturday Knobs_01-D_40101fr": {"frames": 101, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_01-D_40101fr.png"}, "Timb&kmGallery_Dust Knob2_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Dust Knob2_(64129).png"}, "Timb_MeterJanneSerenity_8324-128": {"frames": 128, "cellh": 324, "ctltype": 3, "fn": "Timb_MeterJanneSerenity_8324-128.png"}, "Timb_Simple Color Frames-00": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-00.png"}, "TimbSM17_Switches08": {"frames": 2, "cellh": 36, "ctltype": 2, "fn": "TimbSM17_Switches08.png"}, "Switcher_Bestpoke-x3(28x28)": {"frames": 1, "cellh": 28, "ctltype": 4, "fn": "Switcher_Bestpoke-x3(28x28).png"}, "TimbSM17_Switches01": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "TimbSM17_Switches01.png"}, "TimbSM17_Switches02": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "TimbSM17_Switches02.png"}, "TimbSM17_Switches03": {"frames": 2, "cellh": 25, "ctltype": 2, "fn": "TimbSM17_Switches03.png"}, "TimbSM17_Switches04": {"frames": 2, "cellh": 44, "ctltype": 2, "fn": "TimbSM17_Switches04.png"}, "TimbSM17_Switches05": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "TimbSM17_Switches05.png"}, "TimbSM17_Switches06": {"frames": 2, "cellh": 14, "ctltype": 2, "fn": "TimbSM17_Switches06.png"}, "TimbSM17_Switches07": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "TimbSM17_Switches07.png"}, "Timb_SendBOX-PAN_(16-129)greys2": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_(16-129)greys2.png"}, "__timb_airSnapshot-1": {"frames": 1, "cellh": 96, "ctltype": 4, "fn": "__timb_airSnapshot-1.png"}, "Timb_Simple Color Frames-00bb": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_Simple Color Frames-00bb.png"}, "Timb&kmGallery_self knitting_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_self knitting_(64129).png"}, "Switcher Transparent": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher Transparent.png"}, "Timb_boX08_Bloo": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb_boX08_Bloo.png"}, "Timb_Shape-greyEDT-96128_po": {"frames": 128, "cellh": 96, "ctltype": 0, "fn": "Timb_Shape-greyEDT-96128_po.png"}, "timb_LEDeXp2vert": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LEDeXp2vert.png"}, "SC_LightSEQ_128x8-16fr": {"frames": 16, "cellh": 8, "ctltype": 3, "fn": "SC_LightSEQ_128x8-16fr.png"}, "Timb_MeterBlackOnixTwo_8x123-129yellow": {"frames": 129, "cellh": 123, "ctltype": 3, "fn": "Timb_MeterBlackOnixTwo_8x123-129yellow.png"}, "lbx_knob32_smoothblack_green": {"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_green.png"}, "Timb-SM_OptGrx2_32128-17ver": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "Timb-SM_OptGrx2_32128-17ver.png"}, "Timb_PoorMeldaB02_(96x129)": {"frames": 129, "cellh": 96, "ctltype": 0, "fn": "Timb_PoorMeldaB02_(96x129).png"}, "lbx_slider160_smoothblack_red_km": {"frames": 101, "cellh": 160, "ctltype": 1, "fn": "lbx_slider160_smoothblack_red_km.png"}, "Timb&kmGallery_maschine_editTimbeditD_(64x130)2": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbeditD_(64x130)2.png"}, "Switcher_Bestpoke-x4": {"frames": 1, "cellh": 22, "ctltype": 4, "fn": "Switcher_Bestpoke-x4.png"}, "SA prepot": {"frames": 50, "cellh": 35, "ctltype": 0, "fn": "SA prepot.png"}, "Timb&HY_Seq16x3v2_KNOB1FX": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_Seq16x3v2_KNOB1FX.png"}, "SimpleMeter-Def5_(4x24-129fr)-yellow": {"frames": 129, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter-Def5_(4x24-129fr)-yellow.png"}, "Timb_ONOFF_BGBUTTON": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_ONOFF_BGBUTTON.png"}, "Timb&kmGallery_Volume_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Volume_(64129).png"}, "Timb&FL_YamahaDX1_(55x24-130fr)": {"frames": 130, "cellh": 55, "ctltype": 1, "fn": "Timb&FL_YamahaDX1_(55x24-130fr).png"}, "Timb-SM_GrigKnob-29_37x43-127": {"frames": 127, "cellh": 43, "ctltype": 0, "fn": "Timb-SM_GrigKnob-29_37x43-127.png"}, "Timb_CIS_KNOB_2_80128": {"frames": 128, "cellh": 80, "ctltype": 0, "fn": "Timb_CIS_KNOB_2_80128.png"}, "Timb_Grig2018_Controls--71": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "Timb_Grig2018_Controls--71.png"}, "Timb_Grig2018_Controls--70": {"frames": 2, "cellh": 30, "ctltype": 2, "fn": "Timb_Grig2018_Controls--70.png"}, "SC_KNOB-REDTRCK_(24x24-101frm)green2": {"frames": 101, "cellh": 24, "ctltype": 0, "fn": "SC_KNOB-REDTRCK_(24x24-101frm)green2.png"}, "SimpleMeter_16128": {"frames": 100, "cellh": 128, "ctltype": 3, "fn": "SimpleMeter_16128.png"}, "Timb_Slider_Rearth_20158-128": {"frames": 128, "cellh": 158, "ctltype": 1, "fn": "Timb_Slider_Rearth_20158-128.png"}, "Timb_UpDownArw-05b": {"frames": 1, "cellh": 64, "ctltype": 4, "fn": "Timb_UpDownArw-05b.png"}, "Timb_SnowFXOnOff_ UGGLT": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_SnowFXOnOff_ UGGLT.png"}, "Timb_TAKESWITCHER-(512)-01": {"frames": 512, "cellh": 32, "ctltype": 4, "fn": "Timb_TAKESWITCHER-(512)-01.png"}, "Timb_TAKESWITCHER-(512)-02": {"frames": 512, "cellh": 32, "ctltype": 4, "fn": "Timb_TAKESWITCHER-(512)-02.png"}, "Timb_TAKESWITCHER-(512)-03": {"frames": 512, "cellh": 32, "ctltype": 4, "fn": "Timb_TAKESWITCHER-(512)-03.png"}, "Timb_Meter_ArrowDown_16x31": {"frames": 31, "cellh": 16, "ctltype": 3, "fn": "Timb_Meter_ArrowDown_16x31.png"}, "Timb&HY_DLY3LikeBB5_(64130)": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&HY_DLY3LikeBB5_(64130).png"}, "Switcher_Bestpoke-x3c(28x28)": {"frames": 1, "cellh": 28, "ctltype": 4, "fn": "Switcher_Bestpoke-x3c(28x28).png"}, "Timb&kmGallery_Noise-2018_(128129)": {"frames": 129, "cellh": 128, "ctltype": 0, "fn": "Timb&kmGallery_Noise-2018_(128129).png"}, "Timb-SM_OptGrx2_64128-04ver": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb-SM_OptGrx2_64128-04ver.png"}, "LARGE_SLIDERFULL_(59x318-128fr)": {"frames": 128, "cellh": 318, "ctltype": 1, "fn": "LARGE_SLIDERFULL_(59x318-128fr).png"}, "Timb_ColorCode_(16-129)-06gry": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_ColorCode_(16-129)-06gry.png"}, "LBXTimb_aSimpleSample7_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample7_16130.png"}, "Timb&HY_ModernishX2": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX2.png"}, "Timb&HY_ModernishX3": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishX3.png"}, "Timb-SM_OptGrx2_40128-18ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-18ver.png"}, "Timb_Tantra_POWSW25": {"frames": 2, "cellh": 25, "ctltype": 2, "fn": "Timb_Tantra_POWSW25.png"}, "Timb&kmGallery_Toddler_(38129)": {"frames": 129, "cellh": 38, "ctltype": 0, "fn": "Timb&kmGallery_Toddler_(38129).png"}, "Kirnu-Cream_x64_109_PNG2b": {"frames": 127, "cellh": 32, "ctltype": 0, "fn": "Kirnu-Cream_x64_109_PNG2b.png"}, "lbx_knob96_smoothblack_blue": {"frames": 101, "cellh": 96, "ctltype": 0, "fn": "lbx_knob96_smoothblack_blue.png"}, "Timb&HY_ModernishXd": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb&HY_ModernishXd.png"}, "Timb&FL_SliderPack-1_(112x44-130fr)": {"frames": 130, "cellh": 112, "ctltype": 1, "fn": "Timb&FL_SliderPack-1_(112x44-130fr).png"}, "!AL Grey Empty Knob Blue": {"frames": 128, "cellh": 32, "ctltype": 0, "fn": "!AL Grey Empty Knob Blue.png"}, "Timb&HY_ModernishXc": {"frames": 1, "cellh": 32, "ctltype": 4, "fn": "Timb&HY_ModernishXc.png"}, "SC_Loopey-Slider 02_1688-101": {"frames": 101, "cellh": 88, "ctltype": 1, "fn": "SC_Loopey-Slider 02_1688-101.png"}, "__Snapshotv13-40": {"frames": 1, "cellh": 40, "ctltype": 4, "fn": "__Snapshotv13-40.png"}, "Timb&kmGallery_maschine_editTimbedit_(64x130) dark": {"frames": 130, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_maschine_editTimbedit_(64x130) dark.png"}, "Timb_MeterPAULIE_16200-128fr": {"frames": 128, "cellh": 200, "ctltype": 3, "fn": "Timb_MeterPAULIE_16200-128fr.png"}, "Timb_Minika16101_PINK": {"frames": 101, "cellh": 16, "ctltype": 0, "fn": "Timb_Minika16101_PINK.png"}, "lbx_knob64_smoothblack_blue": {"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_blue.png"}, "Timb&kmGallery_reaktor_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_reaktor_(64129).png"}, "Timb-SM_Saturday Knobs_02-B_80101fr": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_02-B_80101fr.png"}, "timb_LED20eXp4cvertic": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp4cvertic.png"}, "Large_Phase(17x38)": {"frames": 2, "cellh": 19, "ctltype": 2, "fn": "Large_Phase(17x38).png"}, "LBX_CircleKnob1_(timb-inv)": {"frames": 100, "cellh": 48, "ctltype": 0, "fn": "LBX_CircleKnob1_(timb-inv).png"}, "Timb_ob_knob4SurroGate74128": {"frames": 128, "cellh": 74, "ctltype": 0, "fn": "Timb_ob_knob4SurroGate74128.png"}, "Timb_Meter_SESMODTRCK_33x4-128fr_R2": {"frames": 128, "cellh": 4, "ctltype": 3, "fn": "Timb_Meter_SESMODTRCK_33x4-128fr_R2.png"}, "timb_LED20eXp2vertic": {"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp2vertic.png"}, "Timb-SM_Monday Knobs-06_84101": {"frames": 101, "cellh": 84, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-06_84101.png"}, "Timb-SM_OptGrx2_40128-11ver": {"frames": 128, "cellh": 40, "ctltype": 0, "fn": "Timb-SM_OptGrx2_40128-11ver.png"}, "Timb_CCSelector(0127)_3216-128": {"frames": 128, "cellh": 16, "ctltype": 0, "fn": "Timb_CCSelector(0127)_3216-128.png"}, "SC_SliderH-01_(40x20-128fr)": {"frames": 128, "cellh": 20, "ctltype": 1, "fn": "SC_SliderH-01_(40x20-128fr).png"}, "Timb_MultiTransient_102": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb_MultiTransient_102.png"}, "LBXTimb_aSimpleSample10b_16130": {"frames": 130, "cellh": 16, "ctltype": 0, "fn": "LBXTimb_aSimpleSample10b_16130.png"}, "Timb_Actions_MUTECANCEL": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_MUTECANCEL.png"}, "Timb_MultiTransient_105": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb_MultiTransient_105.png"}, "Timb&kmGallery_Credence_bipo_(64129)red": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Credence_bipo_(64129)red.png"}, "SimpleMeter_824green": {"frames": 100, "cellh": 24, "ctltype": 3, "fn": "SimpleMeter_824green.png"}, "Timb-SM_Monday Knobs-02_80101": {"frames": 101, "cellh": 80, "ctltype": 0, "fn": "Timb-SM_Monday Knobs-02_80101.png"}, "lbx_button_rg32": {"frames": 2, "cellh": 32, "ctltype": 2, "fn": "lbx_button_rg32.png"}, "Timb_FALCON&UPGExtras-6ST": {"frames": 2, "cellh": 22, "ctltype": 2, "fn": "Timb_FALCON&UPGExtras-6ST.png"}, "Timb_Tantra_MODNEXBUT16b": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "Timb_Tantra_MODNEXBUT16b.png"}, "lbx_knob64_smoothblack_white": {"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_white.png"}, "Timb_DarkaGain-1": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "Timb_DarkaGain-1.png"}, "Timb&kmGallery_iKnob_white_(48129)": {"frames": 129, "cellh": 48, "ctltype": 0, "fn": "Timb&kmGallery_iKnob_white_(48129).png"}, "Timb_ColorCode_(19-129)-01grn-B": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-01grn-B.png"}, "!16 Button - Orange 2": {"frames": 2, "cellh": 16, "fn": "!16 Button - Orange 2.png"}, "Timb-SM_Annimot02_90101": {"frames": 101, "cellh": 90, "ctltype": 0, "fn": "Timb-SM_Annimot02_90101.png"}, "TimbSM17_Switches01bb": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "TimbSM17_Switches01bb.png"}, "Timb-SM_OptGrx2_24128-01ver": {"frames": 128, "cellh": 24, "ctltype": 0, "fn": "Timb-SM_OptGrx2_24128-01ver.png"}, "StealTheMitch": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "StealTheMitch.png"}, "Timb-SM_GRIG5-20_37x39-129": {"frames": 129, "cellh": 39, "ctltype": 0, "fn": "Timb-SM_GRIG5-20_37x39-129.png"}, "Timb&kmGallery_MiniMoogMain_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_MiniMoogMain_(64129).png"}, "timb_NoteMonitor5b": {"frames": 2, "cellh": 64, "ctltype": 2, "fn": "timb_NoteMonitor5b.png"}, "SimpleButton_8GREENlosat": {"frames": 2, "cellh": 8, "ctltype": 2, "fn": "SimpleButton_8GREENlosat.png"}, "lbx_knob32_smoothblack_red": {"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_red.png"}, "Timb-SM_Saturday Knobs_02-C_60101fr": {"frames": 101, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_02-C_60101fr.png"}, "Timb_GB CHAINER SLOTS1": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb_GB CHAINER SLOTS1.png"}, "Timb_GB CHAINER SLOTS2": {"frames": 1, "cellh": 16, "ctltype": 4, "fn": "Timb_GB CHAINER SLOTS2.png"}, "SC_GraniteSplitv2(64-128fr)": {"frames": 128, "cellh": 64, "ctltype": 0, "fn": "SC_GraniteSplitv2(64-128fr).png"}, "Timb_Actions_STOP": {"frames": 2, "cellh": 21, "ctltype": 2, "fn": "Timb_Actions_STOP.png"}, "StealTheMitch-2": {"frames": 2, "cellh": 17, "ctltype": 2, "fn": "StealTheMitch-2.png"}, "Timb_VHLRM Slider-01 Oldschool": {"frames": 128, "cellh": 106, "ctltype": 1, "fn": "Timb_VHLRM Slider-01 Oldschool.png"}, "FXGUI2017_BESTPOKE(15-2)": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "FXGUI2017_BESTPOKE(15-2).png"}, "Timb-SM_GRIG5-45c_33x33-91": {"frames": 91, "cellh": 33, "ctltype": 0, "fn": "Timb-SM_GRIG5-45c_33x33-91.png"}, "Timb&kmGallery_Speedo-edt_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Speedo-edt_(64129).png"}, "Timb-SM_Saturday Knobs_03-C_60101fr": {"frames": 101, "cellh": 60, "ctltype": 0, "fn": "Timb-SM_Saturday Knobs_03-C_60101fr.png"}, "LBX - yellow line 32": {"frames": 100, "cellh": 32, "ctltype": 0, "fn": "LBX - yellow line 32.png"}, "Timb_UVI FALCON2020-01": {"frames": 2, "cellh": 32, "ctltype": 4, "fn": "Timb_UVI FALCON2020-01.png"}, "Timb_HandMadeMUTEONSOLO32d-losat": {"frames": 3, "cellh": 32, "ctltype": 2, "fn": "Timb_HandMadeMUTEONSOLO32d-losat.png"}, "Timb_Grig2018_Controls--39": {"frames": 2, "cellh": 24, "ctltype": 2, "fn": "Timb_Grig2018_Controls--39.png"}, "Timb&kmGallery_Cookie_(64129)": {"frames": 129, "cellh": 64, "ctltype": 0, "fn": "Timb&kmGallery_Cookie_(64129).png"}, "Timb_ColorCode_(19-129)-05orn": {"frames": 129, "cellh": 19, "ctltype": 0, "fn": "Timb_ColorCode_(19-129)-05orn.png"}, "Timb-SM_GrigKnob-04_30x30-129": {"frames": 129, "cellh": 30, "ctltype": 0, "fn": "Timb-SM_GrigKnob-04_30x30-129.png"}, "SimpleBox_9632": {"frames": 1, "cellh": 32, "fn": "SimpleBox_9632.png"}, "Timb_SendBOX-PAN_PanMASTER_(16-129)": {"frames": 129, "cellh": 16, "ctltype": 0, "fn": "Timb_SendBOX-PAN_PanMASTER_(16-129).png"}, "SC_SimpleMeterHORZ_(32x8-100fr)flip": {"frames": 100, "cellh": 8, "ctltype": 3, "fn": "SC_SimpleMeterHORZ_(32x8-100fr)flip.png"}, "!Upside Down": {"frames": 2, "cellh": 200, "ctltype": 4, "fn": "!Upside Down.png"}, "BESTRPOKE_SOLO(15-2)-b": {"frames": 2, "cellh": 15, "ctltype": 2, "fn": "BESTRPOKE_SOLO(15-2)-b.png"}, "SC_BTNFusionSwsMUTE16": {"frames": 2, "cellh": 16, "ctltype": 2, "fn": "SC_BTNFusionSwsMUTE16.png"}} \ No newline at end of file
diff --git a/site/controls/lbx_button_rg.json b/site/controls/lbx_button_rg.json
new file mode 100644
index 0000000..84702cb
--- /dev/null
+++ b/site/controls/lbx_button_rg.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 48, "ctltype": 2, "fn": "lbx_button_rg.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/lbx_button_rg.png b/site/controls/lbx_button_rg.png
new file mode 100644
index 0000000..96fc3aa
--- /dev/null
+++ b/site/controls/lbx_button_rg.png
Binary files differ
diff --git a/site/controls/lbx_button_rg24.json b/site/controls/lbx_button_rg24.json
new file mode 100644
index 0000000..c54825f
--- /dev/null
+++ b/site/controls/lbx_button_rg24.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "lbx_button_rg24.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/lbx_button_rg24.png b/site/controls/lbx_button_rg24.png
new file mode 100644
index 0000000..2ee56b8
--- /dev/null
+++ b/site/controls/lbx_button_rg24.png
Binary files differ
diff --git a/site/controls/lbx_button_rg24b.json b/site/controls/lbx_button_rg24b.json
new file mode 100644
index 0000000..269cc74
--- /dev/null
+++ b/site/controls/lbx_button_rg24b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 24, "ctltype": 2, "fn": "lbx_button_rg24b.png", "cellw": 24} \ No newline at end of file
diff --git a/site/controls/lbx_button_rg24b.png b/site/controls/lbx_button_rg24b.png
new file mode 100644
index 0000000..ceafcf1
--- /dev/null
+++ b/site/controls/lbx_button_rg24b.png
Binary files differ
diff --git a/site/controls/lbx_button_rg32.json b/site/controls/lbx_button_rg32.json
new file mode 100644
index 0000000..3962c2b
--- /dev/null
+++ b/site/controls/lbx_button_rg32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "lbx_button_rg32.png"} \ No newline at end of file
diff --git a/site/controls/lbx_button_rg32.png b/site/controls/lbx_button_rg32.png
new file mode 100644
index 0000000..10fbc75
--- /dev/null
+++ b/site/controls/lbx_button_rg32.png
Binary files differ
diff --git a/site/controls/lbx_knob128_smoothblack_blue.json b/site/controls/lbx_knob128_smoothblack_blue.json
new file mode 100644
index 0000000..2edf44d
--- /dev/null
+++ b/site/controls/lbx_knob128_smoothblack_blue.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 128, "ctltype": 0, "fn": "lbx_knob128_smoothblack_blue.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob128_smoothblack_blue.png b/site/controls/lbx_knob128_smoothblack_blue.png
new file mode 100644
index 0000000..fe55374
--- /dev/null
+++ b/site/controls/lbx_knob128_smoothblack_blue.png
Binary files differ
diff --git a/site/controls/lbx_knob128_smoothblack_green.json b/site/controls/lbx_knob128_smoothblack_green.json
new file mode 100644
index 0000000..4baa04f
--- /dev/null
+++ b/site/controls/lbx_knob128_smoothblack_green.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 128, "ctltype": 0, "fn": "lbx_knob128_smoothblack_green.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob128_smoothblack_green.png b/site/controls/lbx_knob128_smoothblack_green.png
new file mode 100644
index 0000000..c4623f2
--- /dev/null
+++ b/site/controls/lbx_knob128_smoothblack_green.png
Binary files differ
diff --git a/site/controls/lbx_knob128_smoothblack_red.json b/site/controls/lbx_knob128_smoothblack_red.json
new file mode 100644
index 0000000..3de0596
--- /dev/null
+++ b/site/controls/lbx_knob128_smoothblack_red.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 128, "ctltype": 0, "fn": "lbx_knob128_smoothblack_red.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob128_smoothblack_red.png b/site/controls/lbx_knob128_smoothblack_red.png
new file mode 100644
index 0000000..c69b889
--- /dev/null
+++ b/site/controls/lbx_knob128_smoothblack_red.png
Binary files differ
diff --git a/site/controls/lbx_knob128_smoothblack_white.json b/site/controls/lbx_knob128_smoothblack_white.json
new file mode 100644
index 0000000..423e4d0
--- /dev/null
+++ b/site/controls/lbx_knob128_smoothblack_white.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 128, "ctltype": 0, "fn": "lbx_knob128_smoothblack_white.png", "cellw": 128} \ No newline at end of file
diff --git a/site/controls/lbx_knob128_smoothblack_white.png b/site/controls/lbx_knob128_smoothblack_white.png
new file mode 100644
index 0000000..2967925
--- /dev/null
+++ b/site/controls/lbx_knob128_smoothblack_white.png
Binary files differ
diff --git a/site/controls/lbx_knob32_smoothblack_blue.json b/site/controls/lbx_knob32_smoothblack_blue.json
new file mode 100644
index 0000000..11306e1
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_blue.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_blue.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/lbx_knob32_smoothblack_blue.png b/site/controls/lbx_knob32_smoothblack_blue.png
new file mode 100644
index 0000000..b74436c
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_blue.png
Binary files differ
diff --git a/site/controls/lbx_knob32_smoothblack_green.json b/site/controls/lbx_knob32_smoothblack_green.json
new file mode 100644
index 0000000..fba4f72
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_green.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_green.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/lbx_knob32_smoothblack_green.png b/site/controls/lbx_knob32_smoothblack_green.png
new file mode 100644
index 0000000..d635144
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_green.png
Binary files differ
diff --git a/site/controls/lbx_knob32_smoothblack_red.json b/site/controls/lbx_knob32_smoothblack_red.json
new file mode 100644
index 0000000..43da10c
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_red.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_red.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob32_smoothblack_red.png b/site/controls/lbx_knob32_smoothblack_red.png
new file mode 100644
index 0000000..8055b1a
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_red.png
Binary files differ
diff --git a/site/controls/lbx_knob32_smoothblack_white.json b/site/controls/lbx_knob32_smoothblack_white.json
new file mode 100644
index 0000000..9b05952
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_white.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_white.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob32_smoothblack_white.png b/site/controls/lbx_knob32_smoothblack_white.png
new file mode 100644
index 0000000..a7b7600
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_white.png
Binary files differ
diff --git a/site/controls/lbx_knob32_smoothblack_yellow.json b/site/controls/lbx_knob32_smoothblack_yellow.json
new file mode 100644
index 0000000..9101507
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_yellow.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 32, "ctltype": 0, "fn": "lbx_knob32_smoothblack_yellow.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob32_smoothblack_yellow.png b/site/controls/lbx_knob32_smoothblack_yellow.png
new file mode 100644
index 0000000..cf130ec
--- /dev/null
+++ b/site/controls/lbx_knob32_smoothblack_yellow.png
Binary files differ
diff --git a/site/controls/lbx_knob48_smoothblack_blue.json b/site/controls/lbx_knob48_smoothblack_blue.json
new file mode 100644
index 0000000..354abc5
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_blue.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_blue.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/lbx_knob48_smoothblack_blue.png b/site/controls/lbx_knob48_smoothblack_blue.png
new file mode 100644
index 0000000..023121d
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_blue.png
Binary files differ
diff --git a/site/controls/lbx_knob48_smoothblack_green.json b/site/controls/lbx_knob48_smoothblack_green.json
new file mode 100644
index 0000000..f3fe897
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_green.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_green.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/lbx_knob48_smoothblack_green.png b/site/controls/lbx_knob48_smoothblack_green.png
new file mode 100644
index 0000000..b1dcffe
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_green.png
Binary files differ
diff --git a/site/controls/lbx_knob48_smoothblack_red.json b/site/controls/lbx_knob48_smoothblack_red.json
new file mode 100644
index 0000000..5414fac
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_red.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_red.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob48_smoothblack_red.png b/site/controls/lbx_knob48_smoothblack_red.png
new file mode 100644
index 0000000..3441567
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_red.png
Binary files differ
diff --git a/site/controls/lbx_knob48_smoothblack_white.json b/site/controls/lbx_knob48_smoothblack_white.json
new file mode 100644
index 0000000..5221b8a
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_white.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_white.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob48_smoothblack_white.png b/site/controls/lbx_knob48_smoothblack_white.png
new file mode 100644
index 0000000..4898d3f
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_white.png
Binary files differ
diff --git a/site/controls/lbx_knob48_smoothblack_yellow.json b/site/controls/lbx_knob48_smoothblack_yellow.json
new file mode 100644
index 0000000..1920cb5
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_yellow.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 48, "ctltype": 0, "fn": "lbx_knob48_smoothblack_yellow.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob48_smoothblack_yellow.png b/site/controls/lbx_knob48_smoothblack_yellow.png
new file mode 100644
index 0000000..9696c6b
--- /dev/null
+++ b/site/controls/lbx_knob48_smoothblack_yellow.png
Binary files differ
diff --git a/site/controls/lbx_knob64_smoothblack_blue.json b/site/controls/lbx_knob64_smoothblack_blue.json
new file mode 100644
index 0000000..c06b909
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_blue.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_blue.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob64_smoothblack_blue.png b/site/controls/lbx_knob64_smoothblack_blue.png
new file mode 100644
index 0000000..610d32e
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_blue.png
Binary files differ
diff --git a/site/controls/lbx_knob64_smoothblack_green.json b/site/controls/lbx_knob64_smoothblack_green.json
new file mode 100644
index 0000000..fc72f26
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_green.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_green.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob64_smoothblack_green.png b/site/controls/lbx_knob64_smoothblack_green.png
new file mode 100644
index 0000000..b711d27
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_green.png
Binary files differ
diff --git a/site/controls/lbx_knob64_smoothblack_red.json b/site/controls/lbx_knob64_smoothblack_red.json
new file mode 100644
index 0000000..47cbed7
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_red.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_red.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/lbx_knob64_smoothblack_red.png b/site/controls/lbx_knob64_smoothblack_red.png
new file mode 100644
index 0000000..7239bf9
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_red.png
Binary files differ
diff --git a/site/controls/lbx_knob64_smoothblack_white.json b/site/controls/lbx_knob64_smoothblack_white.json
new file mode 100644
index 0000000..dac8d99
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_white.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_white.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/lbx_knob64_smoothblack_white.png b/site/controls/lbx_knob64_smoothblack_white.png
new file mode 100644
index 0000000..8a865d5
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_white.png
Binary files differ
diff --git a/site/controls/lbx_knob64_smoothblack_yellow.json b/site/controls/lbx_knob64_smoothblack_yellow.json
new file mode 100644
index 0000000..30b3a9d
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_yellow.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 64, "ctltype": 0, "fn": "lbx_knob64_smoothblack_yellow.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/lbx_knob64_smoothblack_yellow.png b/site/controls/lbx_knob64_smoothblack_yellow.png
new file mode 100644
index 0000000..19b0deb
--- /dev/null
+++ b/site/controls/lbx_knob64_smoothblack_yellow.png
Binary files differ
diff --git a/site/controls/lbx_knob96_smoothblack_blue.json b/site/controls/lbx_knob96_smoothblack_blue.json
new file mode 100644
index 0000000..ce012bd
--- /dev/null
+++ b/site/controls/lbx_knob96_smoothblack_blue.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 96, "ctltype": 0, "fn": "lbx_knob96_smoothblack_blue.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/lbx_knob96_smoothblack_blue.png b/site/controls/lbx_knob96_smoothblack_blue.png
new file mode 100644
index 0000000..eae5bd6
--- /dev/null
+++ b/site/controls/lbx_knob96_smoothblack_blue.png
Binary files differ
diff --git a/site/controls/lbx_knob96_smoothblack_green.json b/site/controls/lbx_knob96_smoothblack_green.json
new file mode 100644
index 0000000..5e0a5ad
--- /dev/null
+++ b/site/controls/lbx_knob96_smoothblack_green.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 96, "ctltype": 0, "fn": "lbx_knob96_smoothblack_green.png", "cellw": 96} \ No newline at end of file
diff --git a/site/controls/lbx_knob96_smoothblack_green.png b/site/controls/lbx_knob96_smoothblack_green.png
new file mode 100644
index 0000000..d148d3a
--- /dev/null
+++ b/site/controls/lbx_knob96_smoothblack_green.png
Binary files differ
diff --git a/site/controls/lbx_knob96_smoothblack_red.json b/site/controls/lbx_knob96_smoothblack_red.json
new file mode 100644
index 0000000..c8817ff
--- /dev/null
+++ b/site/controls/lbx_knob96_smoothblack_red.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 96, "ctltype": 0, "fn": "lbx_knob96_smoothblack_red.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob96_smoothblack_red.png b/site/controls/lbx_knob96_smoothblack_red.png
new file mode 100644
index 0000000..e4e7d44
--- /dev/null
+++ b/site/controls/lbx_knob96_smoothblack_red.png
Binary files differ
diff --git a/site/controls/lbx_knob96_smoothblack_white.json b/site/controls/lbx_knob96_smoothblack_white.json
new file mode 100644
index 0000000..fb11291
--- /dev/null
+++ b/site/controls/lbx_knob96_smoothblack_white.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 96, "ctltype": 0, "fn": "lbx_knob96_smoothblack_white.png"} \ No newline at end of file
diff --git a/site/controls/lbx_knob96_smoothblack_white.png b/site/controls/lbx_knob96_smoothblack_white.png
new file mode 100644
index 0000000..b8d34fe
--- /dev/null
+++ b/site/controls/lbx_knob96_smoothblack_white.png
Binary files differ
diff --git a/site/controls/lbx_slider160_smoothblack_red.json b/site/controls/lbx_slider160_smoothblack_red.json
new file mode 100644
index 0000000..66a9fa6
--- /dev/null
+++ b/site/controls/lbx_slider160_smoothblack_red.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 160, "ctltype": 1, "fn": "lbx_slider160_smoothblack_red.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/lbx_slider160_smoothblack_red.png b/site/controls/lbx_slider160_smoothblack_red.png
new file mode 100644
index 0000000..9d3a926
--- /dev/null
+++ b/site/controls/lbx_slider160_smoothblack_red.png
Binary files differ
diff --git a/site/controls/lbx_slider160_smoothblack_red_km.json b/site/controls/lbx_slider160_smoothblack_red_km.json
new file mode 100644
index 0000000..0c66283
--- /dev/null
+++ b/site/controls/lbx_slider160_smoothblack_red_km.json
@@ -0,0 +1 @@
+{"frames": 101, "cellh": 160, "ctltype": 1, "fn": "lbx_slider160_smoothblack_red_km.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/lbx_slider160_smoothblack_red_km.png b/site/controls/lbx_slider160_smoothblack_red_km.png
new file mode 100644
index 0000000..a75952d
--- /dev/null
+++ b/site/controls/lbx_slider160_smoothblack_red_km.png
Binary files differ
diff --git a/site/controls/timb&HYRPEMUTE32.json b/site/controls/timb&HYRPEMUTE32.json
new file mode 100644
index 0000000..400b996
--- /dev/null
+++ b/site/controls/timb&HYRPEMUTE32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb&HYRPEMUTE32.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/timb&HYRPEMUTE32.png b/site/controls/timb&HYRPEMUTE32.png
new file mode 100644
index 0000000..4ec9708
--- /dev/null
+++ b/site/controls/timb&HYRPEMUTE32.png
Binary files differ
diff --git a/site/controls/timb&HYRPEMUTEB32.json b/site/controls/timb&HYRPEMUTEB32.json
new file mode 100644
index 0000000..29cced5
--- /dev/null
+++ b/site/controls/timb&HYRPEMUTEB32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb&HYRPEMUTEB32.png"} \ No newline at end of file
diff --git a/site/controls/timb&HYRPEMUTEB32.png b/site/controls/timb&HYRPEMUTEB32.png
new file mode 100644
index 0000000..50f1da4
--- /dev/null
+++ b/site/controls/timb&HYRPEMUTEB32.png
Binary files differ
diff --git a/site/controls/timb&HYRPESOLO32.json b/site/controls/timb&HYRPESOLO32.json
new file mode 100644
index 0000000..cfdc0eb
--- /dev/null
+++ b/site/controls/timb&HYRPESOLO32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb&HYRPESOLO32.png"} \ No newline at end of file
diff --git a/site/controls/timb&HYRPESOLO32.png b/site/controls/timb&HYRPESOLO32.png
new file mode 100644
index 0000000..8736d7d
--- /dev/null
+++ b/site/controls/timb&HYRPESOLO32.png
Binary files differ
diff --git a/site/controls/timb&HYRPESOLOB32.json b/site/controls/timb&HYRPESOLOB32.json
new file mode 100644
index 0000000..e292df0
--- /dev/null
+++ b/site/controls/timb&HYRPESOLOB32.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb&HYRPESOLOB32.png"} \ No newline at end of file
diff --git a/site/controls/timb&HYRPESOLOB32.png b/site/controls/timb&HYRPESOLOB32.png
new file mode 100644
index 0000000..805b957
--- /dev/null
+++ b/site/controls/timb&HYRPESOLOB32.png
Binary files differ
diff --git a/site/controls/timb_GRANITESTARTSLIDER.json b/site/controls/timb_GRANITESTARTSLIDER.json
new file mode 100644
index 0000000..e6f4586
--- /dev/null
+++ b/site/controls/timb_GRANITESTARTSLIDER.json
@@ -0,0 +1 @@
+{"frames": 1000, "cellh": 16, "ctltype": 1, "fn": "timb_GRANITESTARTSLIDER.png"} \ No newline at end of file
diff --git a/site/controls/timb_GRANITESTARTSLIDER.png b/site/controls/timb_GRANITESTARTSLIDER.png
new file mode 100644
index 0000000..e0a7c0c
--- /dev/null
+++ b/site/controls/timb_GRANITESTARTSLIDER.png
Binary files differ
diff --git a/site/controls/timb_HY-ONOFF101804BLOO.json b/site/controls/timb_HY-ONOFF101804BLOO.json
new file mode 100644
index 0000000..b9abe24
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804BLOO.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HY-ONOFF101804BLOO.png"} \ No newline at end of file
diff --git a/site/controls/timb_HY-ONOFF101804BLOO.png b/site/controls/timb_HY-ONOFF101804BLOO.png
new file mode 100644
index 0000000..ddbb715
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804BLOO.png
Binary files differ
diff --git a/site/controls/timb_HY-ONOFF101804GRN.json b/site/controls/timb_HY-ONOFF101804GRN.json
new file mode 100644
index 0000000..f02a2ab
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804GRN.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HY-ONOFF101804GRN.png"} \ No newline at end of file
diff --git a/site/controls/timb_HY-ONOFF101804GRN.png b/site/controls/timb_HY-ONOFF101804GRN.png
new file mode 100644
index 0000000..f66634d
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804GRN.png
Binary files differ
diff --git a/site/controls/timb_HY-ONOFF101804GRN2.json b/site/controls/timb_HY-ONOFF101804GRN2.json
new file mode 100644
index 0000000..a2ac5b4
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804GRN2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb_HY-ONOFF101804GRN2.png"} \ No newline at end of file
diff --git a/site/controls/timb_HY-ONOFF101804GRN2.png b/site/controls/timb_HY-ONOFF101804GRN2.png
new file mode 100644
index 0000000..55f89ff
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804GRN2.png
Binary files differ
diff --git a/site/controls/timb_HY-ONOFF101804GRN2WASD.json b/site/controls/timb_HY-ONOFF101804GRN2WASD.json
new file mode 100644
index 0000000..6490839
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804GRN2WASD.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 20, "ctltype": 2, "fn": "timb_HY-ONOFF101804GRN2WASD.png", "cellw": 49} \ No newline at end of file
diff --git a/site/controls/timb_HY-ONOFF101804GRN2WASD.png b/site/controls/timb_HY-ONOFF101804GRN2WASD.png
new file mode 100644
index 0000000..4f64e39
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804GRN2WASD.png
Binary files differ
diff --git a/site/controls/timb_HY-ONOFF101804ORN.json b/site/controls/timb_HY-ONOFF101804ORN.json
new file mode 100644
index 0000000..f5ece64
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804ORN.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HY-ONOFF101804ORN.png", "cellw": 39} \ No newline at end of file
diff --git a/site/controls/timb_HY-ONOFF101804ORN.png b/site/controls/timb_HY-ONOFF101804ORN.png
new file mode 100644
index 0000000..a26a63d
--- /dev/null
+++ b/site/controls/timb_HY-ONOFF101804ORN.png
Binary files differ
diff --git a/site/controls/timb_HoRNetHCS1_x64_101_.PNG b/site/controls/timb_HoRNetHCS1_x64_101_.PNG
new file mode 100644
index 0000000..abb5926
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_101_.PNG
Binary files differ
diff --git a/site/controls/timb_HoRNetHCS1_x64_101_.json b/site/controls/timb_HoRNetHCS1_x64_101_.json
new file mode 100644
index 0000000..e757524
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_101_.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 100, "ctltype": 0, "fn": "timb_HoRNetHCS1_x64_101_.png"} \ No newline at end of file
diff --git a/site/controls/timb_HoRNetHCS1_x64_102_.PNG b/site/controls/timb_HoRNetHCS1_x64_102_.PNG
new file mode 100644
index 0000000..fc4b9e0
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_102_.PNG
Binary files differ
diff --git a/site/controls/timb_HoRNetHCS1_x64_102_.json b/site/controls/timb_HoRNetHCS1_x64_102_.json
new file mode 100644
index 0000000..d7bc1e8
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_102_.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 80, "ctltype": 0, "fn": "timb_HoRNetHCS1_x64_102_.png"} \ No newline at end of file
diff --git a/site/controls/timb_HoRNetHCS1_x64_103_.PNG b/site/controls/timb_HoRNetHCS1_x64_103_.PNG
new file mode 100644
index 0000000..ede4a3d
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_103_.PNG
Binary files differ
diff --git a/site/controls/timb_HoRNetHCS1_x64_103_.json b/site/controls/timb_HoRNetHCS1_x64_103_.json
new file mode 100644
index 0000000..e688d1d
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_103_.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HoRNetHCS1_x64_103_.png"} \ No newline at end of file
diff --git a/site/controls/timb_HoRNetHCS1_x64_103_bb.json b/site/controls/timb_HoRNetHCS1_x64_103_bb.json
new file mode 100644
index 0000000..1ea2f82
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_103_bb.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HoRNetHCS1_x64_103_bb.png", "cellw": 132} \ No newline at end of file
diff --git a/site/controls/timb_HoRNetHCS1_x64_103_bb.png b/site/controls/timb_HoRNetHCS1_x64_103_bb.png
new file mode 100644
index 0000000..bad2e39
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_103_bb.png
Binary files differ
diff --git a/site/controls/timb_HoRNetHCS1_x64_103_cc.json b/site/controls/timb_HoRNetHCS1_x64_103_cc.json
new file mode 100644
index 0000000..2eb47ba
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_103_cc.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 18, "ctltype": 2, "fn": "timb_HoRNetHCS1_x64_103_cc.png", "cellw": 113} \ No newline at end of file
diff --git a/site/controls/timb_HoRNetHCS1_x64_103_cc.png b/site/controls/timb_HoRNetHCS1_x64_103_cc.png
new file mode 100644
index 0000000..a0f2de4
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_103_cc.png
Binary files differ
diff --git a/site/controls/timb_HoRNetHCS1_x64_104_.PNG b/site/controls/timb_HoRNetHCS1_x64_104_.PNG
new file mode 100644
index 0000000..e33d4b3
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_104_.PNG
Binary files differ
diff --git a/site/controls/timb_HoRNetHCS1_x64_104_.json b/site/controls/timb_HoRNetHCS1_x64_104_.json
new file mode 100644
index 0000000..bdc7f4b
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_104_.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_HoRNetHCS1_x64_104_.png"} \ No newline at end of file
diff --git a/site/controls/timb_HoRNetHCS1_x64_105_.PNG b/site/controls/timb_HoRNetHCS1_x64_105_.PNG
new file mode 100644
index 0000000..14aac45
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_105_.PNG
Binary files differ
diff --git a/site/controls/timb_HoRNetHCS1_x64_105_.json b/site/controls/timb_HoRNetHCS1_x64_105_.json
new file mode 100644
index 0000000..a0750ac
--- /dev/null
+++ b/site/controls/timb_HoRNetHCS1_x64_105_.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 32, "ctltype": 0, "fn": "timb_HoRNetHCS1_x64_105_.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp1-Falcon.json b/site/controls/timb_LED20eXp1-Falcon.json
new file mode 100644
index 0000000..ded90af
--- /dev/null
+++ b/site/controls/timb_LED20eXp1-Falcon.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp1-Falcon.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp1-Falcon.png b/site/controls/timb_LED20eXp1-Falcon.png
new file mode 100644
index 0000000..846ecc8
--- /dev/null
+++ b/site/controls/timb_LED20eXp1-Falcon.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp1.json b/site/controls/timb_LED20eXp1.json
new file mode 100644
index 0000000..7ff5601
--- /dev/null
+++ b/site/controls/timb_LED20eXp1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp1.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp1.png b/site/controls/timb_LED20eXp1.png
new file mode 100644
index 0000000..5974b3e
--- /dev/null
+++ b/site/controls/timb_LED20eXp1.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp10onyx.json b/site/controls/timb_LED20eXp10onyx.json
new file mode 100644
index 0000000..9d0991f
--- /dev/null
+++ b/site/controls/timb_LED20eXp10onyx.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 294, "ctltype": 3, "fn": "timb_LED20eXp10onyx.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp10onyx.png b/site/controls/timb_LED20eXp10onyx.png
new file mode 100644
index 0000000..0edfe63
--- /dev/null
+++ b/site/controls/timb_LED20eXp10onyx.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp1vertic.json b/site/controls/timb_LED20eXp1vertic.json
new file mode 100644
index 0000000..5f1feba
--- /dev/null
+++ b/site/controls/timb_LED20eXp1vertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp1vertic.png", "cellw": 336} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp1vertic.png b/site/controls/timb_LED20eXp1vertic.png
new file mode 100644
index 0000000..175413b
--- /dev/null
+++ b/site/controls/timb_LED20eXp1vertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp2.json b/site/controls/timb_LED20eXp2.json
new file mode 100644
index 0000000..eea0e40
--- /dev/null
+++ b/site/controls/timb_LED20eXp2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp2.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp2.png b/site/controls/timb_LED20eXp2.png
new file mode 100644
index 0000000..14ab4a5
--- /dev/null
+++ b/site/controls/timb_LED20eXp2.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp2vertic.json b/site/controls/timb_LED20eXp2vertic.json
new file mode 100644
index 0000000..7948a34
--- /dev/null
+++ b/site/controls/timb_LED20eXp2vertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp2vertic.png", "cellw": 336} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp2vertic.png b/site/controls/timb_LED20eXp2vertic.png
new file mode 100644
index 0000000..8be2edd
--- /dev/null
+++ b/site/controls/timb_LED20eXp2vertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp3.json b/site/controls/timb_LED20eXp3.json
new file mode 100644
index 0000000..8618f00
--- /dev/null
+++ b/site/controls/timb_LED20eXp3.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 189, "ctltype": 3, "fn": "timb_LED20eXp3.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp3.png b/site/controls/timb_LED20eXp3.png
new file mode 100644
index 0000000..885fa2d
--- /dev/null
+++ b/site/controls/timb_LED20eXp3.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp3hue1.json b/site/controls/timb_LED20eXp3hue1.json
new file mode 100644
index 0000000..b6e5a76
--- /dev/null
+++ b/site/controls/timb_LED20eXp3hue1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 189, "ctltype": 3, "fn": "timb_LED20eXp3hue1.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp3hue1.png b/site/controls/timb_LED20eXp3hue1.png
new file mode 100644
index 0000000..356c1ec
--- /dev/null
+++ b/site/controls/timb_LED20eXp3hue1.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp3losat.json b/site/controls/timb_LED20eXp3losat.json
new file mode 100644
index 0000000..41d4a16
--- /dev/null
+++ b/site/controls/timb_LED20eXp3losat.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 189, "ctltype": 3, "fn": "timb_LED20eXp3losat.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp3losat.png b/site/controls/timb_LED20eXp3losat.png
new file mode 100644
index 0000000..976c91f
--- /dev/null
+++ b/site/controls/timb_LED20eXp3losat.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp3vertic.json b/site/controls/timb_LED20eXp3vertic.json
new file mode 100644
index 0000000..9a49e63
--- /dev/null
+++ b/site/controls/timb_LED20eXp3vertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp3vertic.png", "cellw": 189} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp3vertic.png b/site/controls/timb_LED20eXp3vertic.png
new file mode 100644
index 0000000..fbd5a6e
--- /dev/null
+++ b/site/controls/timb_LED20eXp3vertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4.json b/site/controls/timb_LED20eXp4.json
new file mode 100644
index 0000000..c628014
--- /dev/null
+++ b/site/controls/timb_LED20eXp4.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4.png b/site/controls/timb_LED20eXp4.png
new file mode 100644
index 0000000..c47db35
--- /dev/null
+++ b/site/controls/timb_LED20eXp4.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4b.json b/site/controls/timb_LED20eXp4b.json
new file mode 100644
index 0000000..b8407f4
--- /dev/null
+++ b/site/controls/timb_LED20eXp4b.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4b.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4b.png b/site/controls/timb_LED20eXp4b.png
new file mode 100644
index 0000000..7fa2201
--- /dev/null
+++ b/site/controls/timb_LED20eXp4b.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4bHALF.json b/site/controls/timb_LED20eXp4bHALF.json
new file mode 100644
index 0000000..43a66a8
--- /dev/null
+++ b/site/controls/timb_LED20eXp4bHALF.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 84, "ctltype": 3, "fn": "timb_LED20eXp4bHALF.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4bHALF.png b/site/controls/timb_LED20eXp4bHALF.png
new file mode 100644
index 0000000..b7520a5
--- /dev/null
+++ b/site/controls/timb_LED20eXp4bHALF.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4b_v0001.json b/site/controls/timb_LED20eXp4b_v0001.json
new file mode 100644
index 0000000..4b8edb3
--- /dev/null
+++ b/site/controls/timb_LED20eXp4b_v0001.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4b_v0001.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4b_v0001.png b/site/controls/timb_LED20eXp4b_v0001.png
new file mode 100644
index 0000000..ca32b5d
--- /dev/null
+++ b/site/controls/timb_LED20eXp4b_v0001.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4bvertic.json b/site/controls/timb_LED20eXp4bvertic.json
new file mode 100644
index 0000000..76b180a
--- /dev/null
+++ b/site/controls/timb_LED20eXp4bvertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp4bvertic.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4bvertic.png b/site/controls/timb_LED20eXp4bvertic.png
new file mode 100644
index 0000000..9c0810f
--- /dev/null
+++ b/site/controls/timb_LED20eXp4bvertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4c.json b/site/controls/timb_LED20eXp4c.json
new file mode 100644
index 0000000..355f577
--- /dev/null
+++ b/site/controls/timb_LED20eXp4c.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4c.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4c.png b/site/controls/timb_LED20eXp4c.png
new file mode 100644
index 0000000..3752648
--- /dev/null
+++ b/site/controls/timb_LED20eXp4c.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4cvertic.json b/site/controls/timb_LED20eXp4cvertic.json
new file mode 100644
index 0000000..7cf6f7e
--- /dev/null
+++ b/site/controls/timb_LED20eXp4cvertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp4cvertic.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4cvertic.png b/site/controls/timb_LED20eXp4cvertic.png
new file mode 100644
index 0000000..6524214
--- /dev/null
+++ b/site/controls/timb_LED20eXp4cvertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4d.json b/site/controls/timb_LED20eXp4d.json
new file mode 100644
index 0000000..0efb357
--- /dev/null
+++ b/site/controls/timb_LED20eXp4d.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4d.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4d.png b/site/controls/timb_LED20eXp4d.png
new file mode 100644
index 0000000..8489dd0
--- /dev/null
+++ b/site/controls/timb_LED20eXp4d.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4dvertic.json b/site/controls/timb_LED20eXp4dvertic.json
new file mode 100644
index 0000000..8777d7a
--- /dev/null
+++ b/site/controls/timb_LED20eXp4dvertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp4dvertic.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4dvertic.png b/site/controls/timb_LED20eXp4dvertic.png
new file mode 100644
index 0000000..a1f0a03
--- /dev/null
+++ b/site/controls/timb_LED20eXp4dvertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4e.json b/site/controls/timb_LED20eXp4e.json
new file mode 100644
index 0000000..e6b1d89
--- /dev/null
+++ b/site/controls/timb_LED20eXp4e.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4e.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4e.png b/site/controls/timb_LED20eXp4e.png
new file mode 100644
index 0000000..5c03a11
--- /dev/null
+++ b/site/controls/timb_LED20eXp4e.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4evertic.json b/site/controls/timb_LED20eXp4evertic.json
new file mode 100644
index 0000000..dbf9c3a
--- /dev/null
+++ b/site/controls/timb_LED20eXp4evertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp4evertic.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4evertic.png b/site/controls/timb_LED20eXp4evertic.png
new file mode 100644
index 0000000..dc0df9d
--- /dev/null
+++ b/site/controls/timb_LED20eXp4evertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4vertic.json b/site/controls/timb_LED20eXp4vertic.json
new file mode 100644
index 0000000..ce1a35b
--- /dev/null
+++ b/site/controls/timb_LED20eXp4vertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 32, "ctltype": 3, "fn": "timb_LED20eXp4vertic.png", "cellw": 168} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4vertic.png b/site/controls/timb_LED20eXp4vertic.png
new file mode 100644
index 0000000..771b318
--- /dev/null
+++ b/site/controls/timb_LED20eXp4vertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp4zz.json b/site/controls/timb_LED20eXp4zz.json
new file mode 100644
index 0000000..d336bf8
--- /dev/null
+++ b/site/controls/timb_LED20eXp4zz.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 168, "ctltype": 3, "fn": "timb_LED20eXp4zz.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp4zz.png b/site/controls/timb_LED20eXp4zz.png
new file mode 100644
index 0000000..479fcfe
--- /dev/null
+++ b/site/controls/timb_LED20eXp4zz.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp5.json b/site/controls/timb_LED20eXp5.json
new file mode 100644
index 0000000..c436fd9
--- /dev/null
+++ b/site/controls/timb_LED20eXp5.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 144, "ctltype": 3, "fn": "timb_LED20eXp5.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp5.png b/site/controls/timb_LED20eXp5.png
new file mode 100644
index 0000000..df1cd08
--- /dev/null
+++ b/site/controls/timb_LED20eXp5.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp6.json b/site/controls/timb_LED20eXp6.json
new file mode 100644
index 0000000..fb6d600
--- /dev/null
+++ b/site/controls/timb_LED20eXp6.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp6.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp6.png b/site/controls/timb_LED20eXp6.png
new file mode 100644
index 0000000..9f132de
--- /dev/null
+++ b/site/controls/timb_LED20eXp6.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp6vertic.json b/site/controls/timb_LED20eXp6vertic.json
new file mode 100644
index 0000000..778dc76
--- /dev/null
+++ b/site/controls/timb_LED20eXp6vertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp6vertic.png", "cellw": 336} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp6vertic.png b/site/controls/timb_LED20eXp6vertic.png
new file mode 100644
index 0000000..f224fd3
--- /dev/null
+++ b/site/controls/timb_LED20eXp6vertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp7.json b/site/controls/timb_LED20eXp7.json
new file mode 100644
index 0000000..5958220
--- /dev/null
+++ b/site/controls/timb_LED20eXp7.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 336, "ctltype": 3, "fn": "timb_LED20eXp7.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp7.png b/site/controls/timb_LED20eXp7.png
new file mode 100644
index 0000000..0b7efbb
--- /dev/null
+++ b/site/controls/timb_LED20eXp7.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp7vertic.json b/site/controls/timb_LED20eXp7vertic.json
new file mode 100644
index 0000000..0d7cb58
--- /dev/null
+++ b/site/controls/timb_LED20eXp7vertic.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LED20eXp7vertic.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp7vertic.png b/site/controls/timb_LED20eXp7vertic.png
new file mode 100644
index 0000000..c3406d9
--- /dev/null
+++ b/site/controls/timb_LED20eXp7vertic.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp8.json b/site/controls/timb_LED20eXp8.json
new file mode 100644
index 0000000..c33bf0e
--- /dev/null
+++ b/site/controls/timb_LED20eXp8.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 126, "ctltype": 3, "fn": "timb_LED20eXp8.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp8.png b/site/controls/timb_LED20eXp8.png
new file mode 100644
index 0000000..aaef116
--- /dev/null
+++ b/site/controls/timb_LED20eXp8.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp8b.json b/site/controls/timb_LED20eXp8b.json
new file mode 100644
index 0000000..77b2518
--- /dev/null
+++ b/site/controls/timb_LED20eXp8b.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 63, "ctltype": 3, "fn": "timb_LED20eXp8b.png", "cellw": 4} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp8b.png b/site/controls/timb_LED20eXp8b.png
new file mode 100644
index 0000000..6f534ce
--- /dev/null
+++ b/site/controls/timb_LED20eXp8b.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp8losat.json b/site/controls/timb_LED20eXp8losat.json
new file mode 100644
index 0000000..5bebbee
--- /dev/null
+++ b/site/controls/timb_LED20eXp8losat.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 126, "ctltype": 3, "fn": "timb_LED20eXp8losat.png", "cellw": 8} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp8losat.png b/site/controls/timb_LED20eXp8losat.png
new file mode 100644
index 0000000..4b8bf41
--- /dev/null
+++ b/site/controls/timb_LED20eXp8losat.png
Binary files differ
diff --git a/site/controls/timb_LED20eXp8losatHRZ.json b/site/controls/timb_LED20eXp8losatHRZ.json
new file mode 100644
index 0000000..f15c184
--- /dev/null
+++ b/site/controls/timb_LED20eXp8losatHRZ.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 8, "ctltype": 3, "fn": "timb_LED20eXp8losatHRZ.png"} \ No newline at end of file
diff --git a/site/controls/timb_LED20eXp8losatHRZ.png b/site/controls/timb_LED20eXp8losatHRZ.png
new file mode 100644
index 0000000..3c2054c
--- /dev/null
+++ b/site/controls/timb_LED20eXp8losatHRZ.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp1.json b/site/controls/timb_LEDeXp1.json
new file mode 100644
index 0000000..3702026
--- /dev/null
+++ b/site/controls/timb_LEDeXp1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp1.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp1.png b/site/controls/timb_LEDeXp1.png
new file mode 100644
index 0000000..25b9809
--- /dev/null
+++ b/site/controls/timb_LEDeXp1.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp10.json b/site/controls/timb_LEDeXp10.json
new file mode 100644
index 0000000..c1d3e32
--- /dev/null
+++ b/site/controls/timb_LEDeXp10.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp10.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp10.png b/site/controls/timb_LEDeXp10.png
new file mode 100644
index 0000000..0f3f124
--- /dev/null
+++ b/site/controls/timb_LEDeXp10.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp2.json b/site/controls/timb_LEDeXp2.json
new file mode 100644
index 0000000..bfad532
--- /dev/null
+++ b/site/controls/timb_LEDeXp2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp2.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp2.png b/site/controls/timb_LEDeXp2.png
new file mode 100644
index 0000000..2f6f22f
--- /dev/null
+++ b/site/controls/timb_LEDeXp2.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp2vert.json b/site/controls/timb_LEDeXp2vert.json
new file mode 100644
index 0000000..fe52260
--- /dev/null
+++ b/site/controls/timb_LEDeXp2vert.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LEDeXp2vert.png", "cellw": 176} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp2vert.png b/site/controls/timb_LEDeXp2vert.png
new file mode 100644
index 0000000..a7e4126
--- /dev/null
+++ b/site/controls/timb_LEDeXp2vert.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp3.json b/site/controls/timb_LEDeXp3.json
new file mode 100644
index 0000000..86b7120
--- /dev/null
+++ b/site/controls/timb_LEDeXp3.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp3.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp3.png b/site/controls/timb_LEDeXp3.png
new file mode 100644
index 0000000..25fdfc7
--- /dev/null
+++ b/site/controls/timb_LEDeXp3.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp4.json b/site/controls/timb_LEDeXp4.json
new file mode 100644
index 0000000..c441ecf
--- /dev/null
+++ b/site/controls/timb_LEDeXp4.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp4.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp4.png b/site/controls/timb_LEDeXp4.png
new file mode 100644
index 0000000..d7aafcb
--- /dev/null
+++ b/site/controls/timb_LEDeXp4.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5-2.json b/site/controls/timb_LEDeXp5-2.json
new file mode 100644
index 0000000..9a68084
--- /dev/null
+++ b/site/controls/timb_LEDeXp5-2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp5-2.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5-2.png b/site/controls/timb_LEDeXp5-2.png
new file mode 100644
index 0000000..9825241
--- /dev/null
+++ b/site/controls/timb_LEDeXp5-2.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5-3.json b/site/controls/timb_LEDeXp5-3.json
new file mode 100644
index 0000000..f584f8a
--- /dev/null
+++ b/site/controls/timb_LEDeXp5-3.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp5-3.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5-3.png b/site/controls/timb_LEDeXp5-3.png
new file mode 100644
index 0000000..9155f92
--- /dev/null
+++ b/site/controls/timb_LEDeXp5-3.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5-4.json b/site/controls/timb_LEDeXp5-4.json
new file mode 100644
index 0000000..e40ed96
--- /dev/null
+++ b/site/controls/timb_LEDeXp5-4.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 132, "ctltype": 3, "fn": "timb_LEDeXp5-4.png"} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5-4.png b/site/controls/timb_LEDeXp5-4.png
new file mode 100644
index 0000000..2fb51fc
--- /dev/null
+++ b/site/controls/timb_LEDeXp5-4.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5.json b/site/controls/timb_LEDeXp5.json
new file mode 100644
index 0000000..21bf02b
--- /dev/null
+++ b/site/controls/timb_LEDeXp5.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 352, "ctltype": 3, "fn": "timb_LEDeXp5.png"} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5.png b/site/controls/timb_LEDeXp5.png
new file mode 100644
index 0000000..8ccbf3d
--- /dev/null
+++ b/site/controls/timb_LEDeXp5.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5vert-WASD1.json b/site/controls/timb_LEDeXp5vert-WASD1.json
new file mode 100644
index 0000000..94dc697
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert-WASD1.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 16, "ctltype": 3, "fn": "timb_LEDeXp5vert-WASD1.png"} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5vert-WASD1.png b/site/controls/timb_LEDeXp5vert-WASD1.png
new file mode 100644
index 0000000..59db9d1
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert-WASD1.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5vert-WASD2.json b/site/controls/timb_LEDeXp5vert-WASD2.json
new file mode 100644
index 0000000..bd225d8
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert-WASD2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 8, "ctltype": 3, "fn": "timb_LEDeXp5vert-WASD2.png", "cellw": 88} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5vert-WASD2.png b/site/controls/timb_LEDeXp5vert-WASD2.png
new file mode 100644
index 0000000..79fede5
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert-WASD2.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5vert-WASD3.json b/site/controls/timb_LEDeXp5vert-WASD3.json
new file mode 100644
index 0000000..4964b04
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert-WASD3.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 12, "ctltype": 3, "fn": "timb_LEDeXp5vert-WASD3.png", "cellw": 132} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5vert-WASD3.png b/site/controls/timb_LEDeXp5vert-WASD3.png
new file mode 100644
index 0000000..f031363
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert-WASD3.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5vert.json b/site/controls/timb_LEDeXp5vert.json
new file mode 100644
index 0000000..0a49f20
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 32, "ctltype": 3, "fn": "timb_LEDeXp5vert.png"} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5vert.png b/site/controls/timb_LEDeXp5vert.png
new file mode 100644
index 0000000..d322237
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5vert2.json b/site/controls/timb_LEDeXp5vert2.json
new file mode 100644
index 0000000..fa4558f
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert2.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 32, "ctltype": 3, "fn": "timb_LEDeXp5vert2.png"} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5vert2.png b/site/controls/timb_LEDeXp5vert2.png
new file mode 100644
index 0000000..4a90d69
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert2.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp5vert3.json b/site/controls/timb_LEDeXp5vert3.json
new file mode 100644
index 0000000..fbc594a
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert3.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 32, "ctltype": 3, "fn": "timb_LEDeXp5vert3.png", "cellw": 352} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp5vert3.png b/site/controls/timb_LEDeXp5vert3.png
new file mode 100644
index 0000000..e02878f
--- /dev/null
+++ b/site/controls/timb_LEDeXp5vert3.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp6.json b/site/controls/timb_LEDeXp6.json
new file mode 100644
index 0000000..b47e516
--- /dev/null
+++ b/site/controls/timb_LEDeXp6.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp6.png"} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp6.png b/site/controls/timb_LEDeXp6.png
new file mode 100644
index 0000000..9dc5abd
--- /dev/null
+++ b/site/controls/timb_LEDeXp6.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp7.json b/site/controls/timb_LEDeXp7.json
new file mode 100644
index 0000000..069de4d
--- /dev/null
+++ b/site/controls/timb_LEDeXp7.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 99, "ctltype": 3, "fn": "timb_LEDeXp7.png"} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp7.png b/site/controls/timb_LEDeXp7.png
new file mode 100644
index 0000000..7c2785d
--- /dev/null
+++ b/site/controls/timb_LEDeXp7.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp7c.json b/site/controls/timb_LEDeXp7c.json
new file mode 100644
index 0000000..b06dfff
--- /dev/null
+++ b/site/controls/timb_LEDeXp7c.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 44, "ctltype": 3, "fn": "timb_LEDeXp7c.png"} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp7c.png b/site/controls/timb_LEDeXp7c.png
new file mode 100644
index 0000000..59b5d5d
--- /dev/null
+++ b/site/controls/timb_LEDeXp7c.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp8.json b/site/controls/timb_LEDeXp8.json
new file mode 100644
index 0000000..a9952c6
--- /dev/null
+++ b/site/controls/timb_LEDeXp8.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp8.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp8.png b/site/controls/timb_LEDeXp8.png
new file mode 100644
index 0000000..b8b1e0a
--- /dev/null
+++ b/site/controls/timb_LEDeXp8.png
Binary files differ
diff --git a/site/controls/timb_LEDeXp9.json b/site/controls/timb_LEDeXp9.json
new file mode 100644
index 0000000..c5f4cd1
--- /dev/null
+++ b/site/controls/timb_LEDeXp9.json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 176, "ctltype": 3, "fn": "timb_LEDeXp9.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_LEDeXp9.png b/site/controls/timb_LEDeXp9.png
new file mode 100644
index 0000000..0382d51
--- /dev/null
+++ b/site/controls/timb_LEDeXp9.png
Binary files differ
diff --git a/site/controls/timb_MidiPackTransp-1.json b/site/controls/timb_MidiPackTransp-1.json
new file mode 100644
index 0000000..c9d7186
--- /dev/null
+++ b/site/controls/timb_MidiPackTransp-1.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "timb_MidiPackTransp-1.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/timb_MidiPackTransp-1.png b/site/controls/timb_MidiPackTransp-1.png
new file mode 100644
index 0000000..9945e2b
--- /dev/null
+++ b/site/controls/timb_MidiPackTransp-1.png
Binary files differ
diff --git a/site/controls/timb_MidiPackTransp-1b.json b/site/controls/timb_MidiPackTransp-1b.json
new file mode 100644
index 0000000..974bf8d
--- /dev/null
+++ b/site/controls/timb_MidiPackTransp-1b.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "timb_MidiPackTransp-1b.png"} \ No newline at end of file
diff --git a/site/controls/timb_MidiPackTransp-1b.png b/site/controls/timb_MidiPackTransp-1b.png
new file mode 100644
index 0000000..210e9de
--- /dev/null
+++ b/site/controls/timb_MidiPackTransp-1b.png
Binary files differ
diff --git a/site/controls/timb_MidiPackTransp-2.json b/site/controls/timb_MidiPackTransp-2.json
new file mode 100644
index 0000000..1e8e6d8
--- /dev/null
+++ b/site/controls/timb_MidiPackTransp-2.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "timb_MidiPackTransp-2.png"} \ No newline at end of file
diff --git a/site/controls/timb_MidiPackTransp-2.png b/site/controls/timb_MidiPackTransp-2.png
new file mode 100644
index 0000000..561cd5f
--- /dev/null
+++ b/site/controls/timb_MidiPackTransp-2.png
Binary files differ
diff --git a/site/controls/timb_MidiPackTransp-3.json b/site/controls/timb_MidiPackTransp-3.json
new file mode 100644
index 0000000..68d3fe5
--- /dev/null
+++ b/site/controls/timb_MidiPackTransp-3.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 16, "ctltype": 4, "fn": "timb_MidiPackTransp-3.png"} \ No newline at end of file
diff --git a/site/controls/timb_MidiPackTransp-3.png b/site/controls/timb_MidiPackTransp-3.png
new file mode 100644
index 0000000..00afaa1
--- /dev/null
+++ b/site/controls/timb_MidiPackTransp-3.png
Binary files differ
diff --git a/site/controls/timb_NoteMonitor1.json b/site/controls/timb_NoteMonitor1.json
new file mode 100644
index 0000000..b639d2c
--- /dev/null
+++ b/site/controls/timb_NoteMonitor1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_NoteMonitor1.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_NoteMonitor1.png b/site/controls/timb_NoteMonitor1.png
new file mode 100644
index 0000000..6452079
--- /dev/null
+++ b/site/controls/timb_NoteMonitor1.png
Binary files differ
diff --git a/site/controls/timb_NoteMonitor2.json b/site/controls/timb_NoteMonitor2.json
new file mode 100644
index 0000000..a99cb27
--- /dev/null
+++ b/site/controls/timb_NoteMonitor2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_NoteMonitor2.png", "cellw": 16} \ No newline at end of file
diff --git a/site/controls/timb_NoteMonitor2.png b/site/controls/timb_NoteMonitor2.png
new file mode 100644
index 0000000..d645b69
--- /dev/null
+++ b/site/controls/timb_NoteMonitor2.png
Binary files differ
diff --git a/site/controls/timb_NoteMonitor3.json b/site/controls/timb_NoteMonitor3.json
new file mode 100644
index 0000000..b52be74
--- /dev/null
+++ b/site/controls/timb_NoteMonitor3.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_NoteMonitor3.png"} \ No newline at end of file
diff --git a/site/controls/timb_NoteMonitor3.png b/site/controls/timb_NoteMonitor3.png
new file mode 100644
index 0000000..f4ab22b
--- /dev/null
+++ b/site/controls/timb_NoteMonitor3.png
Binary files differ
diff --git a/site/controls/timb_NoteMonitor4.json b/site/controls/timb_NoteMonitor4.json
new file mode 100644
index 0000000..05ca187
--- /dev/null
+++ b/site/controls/timb_NoteMonitor4.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 16, "ctltype": 2, "fn": "timb_NoteMonitor4.png"} \ No newline at end of file
diff --git a/site/controls/timb_NoteMonitor4.png b/site/controls/timb_NoteMonitor4.png
new file mode 100644
index 0000000..d0bb3b3
--- /dev/null
+++ b/site/controls/timb_NoteMonitor4.png
Binary files differ
diff --git a/site/controls/timb_NoteMonitor5.json b/site/controls/timb_NoteMonitor5.json
new file mode 100644
index 0000000..4778f3a
--- /dev/null
+++ b/site/controls/timb_NoteMonitor5.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 2, "fn": "timb_NoteMonitor5.png"} \ No newline at end of file
diff --git a/site/controls/timb_NoteMonitor5.png b/site/controls/timb_NoteMonitor5.png
new file mode 100644
index 0000000..29747f3
--- /dev/null
+++ b/site/controls/timb_NoteMonitor5.png
Binary files differ
diff --git a/site/controls/timb_NoteMonitor5b.json b/site/controls/timb_NoteMonitor5b.json
new file mode 100644
index 0000000..db05cb0
--- /dev/null
+++ b/site/controls/timb_NoteMonitor5b.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 64, "ctltype": 2, "fn": "timb_NoteMonitor5b.png"} \ No newline at end of file
diff --git a/site/controls/timb_NoteMonitor5b.png b/site/controls/timb_NoteMonitor5b.png
new file mode 100644
index 0000000..84d4b8e
--- /dev/null
+++ b/site/controls/timb_NoteMonitor5b.png
Binary files differ
diff --git a/site/controls/timb_PoorOrbish-1.json b/site/controls/timb_PoorOrbish-1.json
new file mode 100644
index 0000000..fb31c49
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-1.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-1.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/timb_PoorOrbish-1.png b/site/controls/timb_PoorOrbish-1.png
new file mode 100644
index 0000000..149ff52
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-1.png
Binary files differ
diff --git a/site/controls/timb_PoorOrbish-2.json b/site/controls/timb_PoorOrbish-2.json
new file mode 100644
index 0000000..8cdea24
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-2.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-2.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/timb_PoorOrbish-2.png b/site/controls/timb_PoorOrbish-2.png
new file mode 100644
index 0000000..538165a
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-2.png
Binary files differ
diff --git a/site/controls/timb_PoorOrbish-3.json b/site/controls/timb_PoorOrbish-3.json
new file mode 100644
index 0000000..10205df
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-3.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-3.png"} \ No newline at end of file
diff --git a/site/controls/timb_PoorOrbish-3.png b/site/controls/timb_PoorOrbish-3.png
new file mode 100644
index 0000000..4206dec
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-3.png
Binary files differ
diff --git a/site/controls/timb_PoorOrbish-4.json b/site/controls/timb_PoorOrbish-4.json
new file mode 100644
index 0000000..29f495c
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-4.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-4.png"} \ No newline at end of file
diff --git a/site/controls/timb_PoorOrbish-4.png b/site/controls/timb_PoorOrbish-4.png
new file mode 100644
index 0000000..628ea37
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-4.png
Binary files differ
diff --git a/site/controls/timb_PoorOrbish-5.json b/site/controls/timb_PoorOrbish-5.json
new file mode 100644
index 0000000..5a1075a
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-5.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-5.png"} \ No newline at end of file
diff --git a/site/controls/timb_PoorOrbish-5.png b/site/controls/timb_PoorOrbish-5.png
new file mode 100644
index 0000000..21a162e
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-5.png
Binary files differ
diff --git a/site/controls/timb_PoorOrbish-6.json b/site/controls/timb_PoorOrbish-6.json
new file mode 100644
index 0000000..c0fc562
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-6.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 64, "ctltype": 0, "fn": "timb_PoorOrbish-6.png", "cellw": 64} \ No newline at end of file
diff --git a/site/controls/timb_PoorOrbish-6.png b/site/controls/timb_PoorOrbish-6.png
new file mode 100644
index 0000000..cc59365
--- /dev/null
+++ b/site/controls/timb_PoorOrbish-6.png
Binary files differ
diff --git a/site/controls/timb_RadioButton-0.json b/site/controls/timb_RadioButton-0.json
new file mode 100644
index 0000000..9b98907
--- /dev/null
+++ b/site/controls/timb_RadioButton-0.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb_RadioButton-0.png"} \ No newline at end of file
diff --git a/site/controls/timb_RadioButton-0.png b/site/controls/timb_RadioButton-0.png
new file mode 100644
index 0000000..e8df8ac
--- /dev/null
+++ b/site/controls/timb_RadioButton-0.png
Binary files differ
diff --git a/site/controls/timb_RadioButton-1.json b/site/controls/timb_RadioButton-1.json
new file mode 100644
index 0000000..5cb94ff
--- /dev/null
+++ b/site/controls/timb_RadioButton-1.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb_RadioButton-1.png", "cellw": 160} \ No newline at end of file
diff --git a/site/controls/timb_RadioButton-1.png b/site/controls/timb_RadioButton-1.png
new file mode 100644
index 0000000..29e2002
--- /dev/null
+++ b/site/controls/timb_RadioButton-1.png
Binary files differ
diff --git a/site/controls/timb_RadioButton-2.json b/site/controls/timb_RadioButton-2.json
new file mode 100644
index 0000000..39ad9bd
--- /dev/null
+++ b/site/controls/timb_RadioButton-2.json
@@ -0,0 +1 @@
+{"frames": 2, "cellh": 32, "ctltype": 2, "fn": "timb_RadioButton-2.png", "cellw": 256} \ No newline at end of file
diff --git a/site/controls/timb_RadioButton-2.png b/site/controls/timb_RadioButton-2.png
new file mode 100644
index 0000000..adfd77e
--- /dev/null
+++ b/site/controls/timb_RadioButton-2.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE32-1.json b/site/controls/timb_SM2018_SM_CUTE32-1.json
new file mode 100644
index 0000000..d2a3d01
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE32-1.json
@@ -0,0 +1 @@
+{"frames": 61, "cellh": 32, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE32-1.png"} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE32-1.png b/site/controls/timb_SM2018_SM_CUTE32-1.png
new file mode 100644
index 0000000..e4b5a43
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE32-1.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE32-2.json b/site/controls/timb_SM2018_SM_CUTE32-2.json
new file mode 100644
index 0000000..b7ef091
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE32-2.json
@@ -0,0 +1 @@
+{"frames": 61, "cellh": 32, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE32-2.png"} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE32-2.png b/site/controls/timb_SM2018_SM_CUTE32-2.png
new file mode 100644
index 0000000..bf35cb5
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE32-2.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE32-3.json b/site/controls/timb_SM2018_SM_CUTE32-3.json
new file mode 100644
index 0000000..8ad5138
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE32-3.json
@@ -0,0 +1 @@
+{"frames": 61, "cellh": 32, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE32-3.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE32-3.png b/site/controls/timb_SM2018_SM_CUTE32-3.png
new file mode 100644
index 0000000..4b50b75
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE32-3.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE32-4.json b/site/controls/timb_SM2018_SM_CUTE32-4.json
new file mode 100644
index 0000000..5aaeb14
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE32-4.json
@@ -0,0 +1 @@
+{"frames": 61, "cellh": 32, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE32-4.png", "cellw": 32} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE32-4.png b/site/controls/timb_SM2018_SM_CUTE32-4.png
new file mode 100644
index 0000000..783099a
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE32-4.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE44-1.json b/site/controls/timb_SM2018_SM_CUTE44-1.json
new file mode 100644
index 0000000..30af15b
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-1.json
@@ -0,0 +1 @@
+{"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-1.png"} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE44-1.png b/site/controls/timb_SM2018_SM_CUTE44-1.png
new file mode 100644
index 0000000..4f2a567
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-1.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE44-2.json b/site/controls/timb_SM2018_SM_CUTE44-2.json
new file mode 100644
index 0000000..04d424a
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-2.json
@@ -0,0 +1 @@
+{"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-2.png"} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE44-2.png b/site/controls/timb_SM2018_SM_CUTE44-2.png
new file mode 100644
index 0000000..8f8cd64
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-2.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE44-3.json b/site/controls/timb_SM2018_SM_CUTE44-3.json
new file mode 100644
index 0000000..c3ff806
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-3.json
@@ -0,0 +1 @@
+{"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-3.png", "cellw": 44} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE44-3.png b/site/controls/timb_SM2018_SM_CUTE44-3.png
new file mode 100644
index 0000000..7a81b86
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-3.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE44-4.json b/site/controls/timb_SM2018_SM_CUTE44-4.json
new file mode 100644
index 0000000..d442e25
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-4.json
@@ -0,0 +1 @@
+{"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-4.png", "cellw": 44} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE44-4.png b/site/controls/timb_SM2018_SM_CUTE44-4.png
new file mode 100644
index 0000000..72d003e
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-4.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE44-5.json b/site/controls/timb_SM2018_SM_CUTE44-5.json
new file mode 100644
index 0000000..b8a62af
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-5.json
@@ -0,0 +1 @@
+{"frames": 61, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44-5.png", "cellw": 44} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE44-5.png b/site/controls/timb_SM2018_SM_CUTE44-5.png
new file mode 100644
index 0000000..727e4ff
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44-5.png
Binary files differ
diff --git a/site/controls/timb_SM2018_SM_CUTE44BB-1(100fr).json b/site/controls/timb_SM2018_SM_CUTE44BB-1(100fr).json
new file mode 100644
index 0000000..fddd079
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44BB-1(100fr).json
@@ -0,0 +1 @@
+{"frames": 100, "cellh": 44, "ctltype": 0, "fn": "timb_SM2018_SM_CUTE44BB-1(100fr).png"} \ No newline at end of file
diff --git a/site/controls/timb_SM2018_SM_CUTE44BB-1(100fr).png b/site/controls/timb_SM2018_SM_CUTE44BB-1(100fr).png
new file mode 100644
index 0000000..fa2fa4a
--- /dev/null
+++ b/site/controls/timb_SM2018_SM_CUTE44BB-1(100fr).png
Binary files differ
diff --git a/site/controls/timb_Symnotmetry(3296130)-1.json b/site/controls/timb_Symnotmetry(3296130)-1.json
new file mode 100644
index 0000000..3e314a0
--- /dev/null
+++ b/site/controls/timb_Symnotmetry(3296130)-1.json
@@ -0,0 +1 @@
+{"frames": 130, "cellh": 32, "ctltype": 0, "fn": "timb_Symnotmetry(3296130)-1.png"} \ No newline at end of file
diff --git a/site/controls/timb_Symnotmetry(3296130)-1.png b/site/controls/timb_Symnotmetry(3296130)-1.png
new file mode 100644
index 0000000..1c6ab9b
--- /dev/null
+++ b/site/controls/timb_Symnotmetry(3296130)-1.png
Binary files differ
diff --git a/site/controls/timb_TJAMonTogVelTra-01.json b/site/controls/timb_TJAMonTogVelTra-01.json
new file mode 100644
index 0000000..5612190
--- /dev/null
+++ b/site/controls/timb_TJAMonTogVelTra-01.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 1, "fn": "timb_TJAMonTogVelTra-01.png"} \ No newline at end of file
diff --git a/site/controls/timb_TJAMonTogVelTra-01.png b/site/controls/timb_TJAMonTogVelTra-01.png
new file mode 100644
index 0000000..65b95c2
--- /dev/null
+++ b/site/controls/timb_TJAMonTogVelTra-01.png
Binary files differ
diff --git a/site/controls/timb_TJAMonTogVelTra-02.json b/site/controls/timb_TJAMonTogVelTra-02.json
new file mode 100644
index 0000000..af01402
--- /dev/null
+++ b/site/controls/timb_TJAMonTogVelTra-02.json
@@ -0,0 +1 @@
+{"frames": 128, "cellh": 96, "ctltype": 1, "fn": "timb_TJAMonTogVelTra-02.png", "cellw": 48} \ No newline at end of file
diff --git a/site/controls/timb_TJAMonTogVelTra-02.png b/site/controls/timb_TJAMonTogVelTra-02.png
new file mode 100644
index 0000000..b486ffd
--- /dev/null
+++ b/site/controls/timb_TJAMonTogVelTra-02.png
Binary files differ
diff --git a/site/controls/timb_spchrd-01.json b/site/controls/timb_spchrd-01.json
new file mode 100644
index 0000000..7713206
--- /dev/null
+++ b/site/controls/timb_spchrd-01.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "timb_spchrd-01.png"} \ No newline at end of file
diff --git a/site/controls/timb_spchrd-01.png b/site/controls/timb_spchrd-01.png
new file mode 100644
index 0000000..60b3c26
--- /dev/null
+++ b/site/controls/timb_spchrd-01.png
Binary files differ
diff --git a/site/controls/timb_spchrd-01bipo.json b/site/controls/timb_spchrd-01bipo.json
new file mode 100644
index 0000000..0426006
--- /dev/null
+++ b/site/controls/timb_spchrd-01bipo.json
@@ -0,0 +1 @@
+{"frames": 129, "cellh": 64, "ctltype": 0, "fn": "timb_spchrd-01bipo.png"} \ No newline at end of file
diff --git a/site/controls/timb_spchrd-01bipo.png b/site/controls/timb_spchrd-01bipo.png
new file mode 100644
index 0000000..75aa108
--- /dev/null
+++ b/site/controls/timb_spchrd-01bipo.png
Binary files differ
diff --git a/site/controls/wrench.json b/site/controls/wrench.json
new file mode 100644
index 0000000..f3986cb
--- /dev/null
+++ b/site/controls/wrench.json
@@ -0,0 +1 @@
+{"frames": 1, "cellh": 20, "ctltype": 4, "fn": "wrench.png", "cellw": 20} \ No newline at end of file
diff --git a/site/controls/wrench.png b/site/controls/wrench.png
new file mode 100644
index 0000000..96662f1
--- /dev/null
+++ b/site/controls/wrench.png
Binary files differ
diff --git a/site/index.html b/site/index.html
new file mode 100644
index 0000000..08c607f
--- /dev/null
+++ b/site/index.html
@@ -0,0 +1,12 @@
+<html>
+ <head>
+ <style type="text/css">
+ body {
+ background-color: black;
+ }
+ </style>
+ </head>
+ <body>
+ </body>
+</html>
+
diff --git a/site/service/.htaccess b/site/service/.htaccess
new file mode 100644
index 0000000..35d526f
--- /dev/null
+++ b/site/service/.htaccess
@@ -0,0 +1,8 @@
+Options +ExecCGI
+AddHandler cgi-script .py
+DirectoryIndex request.py
+<Files request.py>
+ Options +ExecCGI
+ AddHandler cgi-script .py
+ Require all granted
+</Files>
diff --git a/site/service/config.dist.py b/site/service/config.dist.py
new file mode 100644
index 0000000..162299c
--- /dev/null
+++ b/site/service/config.dist.py
@@ -0,0 +1,4 @@
+dbhost = ""
+dbname = ""
+dbuser = ""
+dbpassword = ""
diff --git a/site/service/config.pyc b/site/service/config.pyc
new file mode 100644
index 0000000..4df456d
--- /dev/null
+++ b/site/service/config.pyc
Binary files differ
diff --git a/site/service/db.py b/site/service/db.py
new file mode 100644
index 0000000..1cb69b8
--- /dev/null
+++ b/site/service/db.py
@@ -0,0 +1,38 @@
+from peewee import *
+import datetime
+from playhouse.postgres_ext import *
+import config
+
+_db = PostgresqlExtDatabase(
+ config.dbname,
+ host=config.dbhost,
+ user=config.dbuser,
+ password=config.dbpassword
+)
+
+class BaseModel(Model):
+ class Meta:
+ database = _db
+
+
+class Users(BaseModel):
+ email = TextField()
+ password = TextField()
+ sessionkey = TextField()
+ created = DateTimeField(default=datetime.datetime.now)
+
+class Session(BaseModel):
+ user = ForeignKeyField(Users, null=True)
+ token = TextField(null=True)
+ created = DateTimeField(default=datetime.datetime.now)
+
+class JData(BaseModel):
+ session = ForeignKeyField(Session, null=True)
+ category = TextField(null=True, index=True)
+ data = JSONField()
+ created = DateTimeField(default=datetime.datetime.now)
+
+
+if __name__ == "__main__":
+ _db.create_tables(BaseModel.__subclasses__(), safe=True)
+
diff --git a/site/service/db.pyc b/site/service/db.pyc
new file mode 100644
index 0000000..81639ee
--- /dev/null
+++ b/site/service/db.pyc
Binary files differ
diff --git a/site/service/request.py b/site/service/request.py
new file mode 100755
index 0000000..ae7d843
--- /dev/null
+++ b/site/service/request.py
@@ -0,0 +1,106 @@
+#!/usr/bin/python
+import json
+import os
+import cgi
+import sys
+import db
+
+class PostRequest(object):
+ def run(self, data):
+ pass
+
+def GetRequest(object):
+ def run(self, data):
+ pass
+
+class TextResponse(object):
+ def __init__(self, text):
+ self.text = text
+ def respond(self):
+ print "Content-Type: text/plain\r\n\r\n"
+ print self.text
+
+class Response(object):
+ def __init__(self, data=None):
+ if data is None or data is True:
+ data = {"success": True}
+ elif data is False:
+ data = {"success": False}
+ elif data.get("success") is None:
+ data["success"] = True
+ self.data = data
+ def respond(self):
+ print "Content-type: text/json\r\n\r\n"
+ print json.dumps(self.data)
+
+class LogError(PostRequest):
+ def run(self, data):
+ if not data.get("session_id"):
+ session = db.Session.create()
+ else:
+ session = db.Session.select().where(db.Session.id == data["session_id"]).get()
+ db.JData.create(
+ session=session,
+ category="error",
+ data=data["error"]
+ )
+ return Response({"session_id": session.id})
+
+
+class SaveData(PostRequest):
+ def run(self, data):
+ query = db.JData.create(
+ session=data.get("session_id"),
+ category=data["category"],
+ data=data["data"]
+ )
+ return Response()
+
+class GetData(PostRequest):
+ def run(self, data):
+ query = db.JData.select()
+ query = query.where(db.JData.id == data.id)
+
+ if not query.exists():
+ return Response(False)
+ resp = data.get()
+ return Response({"data": resp})
+
+class UploadAudio(PostRequest):
+ def run(self, data):
+ return Response(False)
+ filename, ext = os.path.splitext(path)
+ if ext.lower() != ".mp3":
+ cmd = ["ffmpeg", "-i", path, "-acodec", "libmp3lame", "-q:a", "5", output]
+
+def handle():
+ try:
+ method = os.environ["REQUEST_METHOD"]
+ if method == "POST":
+ data = json.loads(sys.stdin.read())
+ request_type = data.get("request_type")
+ base_class = PostRequest
+ elif method == "GET":
+ data = cgi.FieldStorage()
+ request_type = data.getvalue("request_type")
+ base_class = GetRequest
+ else:
+ raise Exception("No handler for this method")
+
+ request_types = {}
+ for item in base_class.__subclasses__():
+ request_types[item.__name__] = item
+ request_class = request_types.get(request_type)
+ if not request_class:
+ raise Exception("No handler for this request" + str(data))
+ req = request_class()
+ response = req.run(data)
+ response.respond()
+ except Exception, ex:
+ import traceback
+ print "Content-Type: text/json\r\n\r\n"
+ resp = {"success": False, "error": str(ex), "traceback": traceback.format_exc()}
+ print json.dumps(resp)
+
+if __name__ == "__main__":
+ handle()
diff --git a/site/sound/.htaccess b/site/sound/.htaccess
new file mode 100644
index 0000000..bb648ea
--- /dev/null
+++ b/site/sound/.htaccess
@@ -0,0 +1,8 @@
+Options +ExecCGI
+AddHandler cgi-script .py
+
+<Files collection_udo.py>
+ Options +ExecCGI
+ AddHandler cgi-script .py
+ Require all granted
+</Files>
diff --git a/site/sound/Guitar.Harmonics/42.0.mp3 b/site/sound/Guitar.Harmonics/42.0.mp3
new file mode 100644
index 0000000..c965970
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/42.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/43.0.mp3 b/site/sound/Guitar.Harmonics/43.0.mp3
new file mode 100644
index 0000000..fe3ee1e
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/43.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/44.0.mp3 b/site/sound/Guitar.Harmonics/44.0.mp3
new file mode 100644
index 0000000..b364a98
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/44.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/45.0.mp3 b/site/sound/Guitar.Harmonics/45.0.mp3
new file mode 100644
index 0000000..a05ae06
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/45.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/46.0.mp3 b/site/sound/Guitar.Harmonics/46.0.mp3
new file mode 100644
index 0000000..f2891e8
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/46.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/47.0.mp3 b/site/sound/Guitar.Harmonics/47.0.mp3
new file mode 100644
index 0000000..2061b34
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/47.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/48.0.mp3 b/site/sound/Guitar.Harmonics/48.0.mp3
new file mode 100644
index 0000000..f7eee9e
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/48.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/49.0.mp3 b/site/sound/Guitar.Harmonics/49.0.mp3
new file mode 100644
index 0000000..5f170ed
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/49.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/50.0.mp3 b/site/sound/Guitar.Harmonics/50.0.mp3
new file mode 100644
index 0000000..825878d
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/50.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/51.0.mp3 b/site/sound/Guitar.Harmonics/51.0.mp3
new file mode 100644
index 0000000..e36a8dc
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/51.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/52.0.mp3 b/site/sound/Guitar.Harmonics/52.0.mp3
new file mode 100644
index 0000000..7d055fb
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/52.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/53.0.mp3 b/site/sound/Guitar.Harmonics/53.0.mp3
new file mode 100644
index 0000000..9fb6954
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/53.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/54.0.mp3 b/site/sound/Guitar.Harmonics/54.0.mp3
new file mode 100644
index 0000000..7032e1a
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/54.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/55.0.mp3 b/site/sound/Guitar.Harmonics/55.0.mp3
new file mode 100644
index 0000000..3804111
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/55.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/56.0.mp3 b/site/sound/Guitar.Harmonics/56.0.mp3
new file mode 100644
index 0000000..18b682f
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/56.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/57.0.mp3 b/site/sound/Guitar.Harmonics/57.0.mp3
new file mode 100644
index 0000000..5c39381
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/57.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/58.0.mp3 b/site/sound/Guitar.Harmonics/58.0.mp3
new file mode 100644
index 0000000..3efe4c6
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/58.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/59.0.mp3 b/site/sound/Guitar.Harmonics/59.0.mp3
new file mode 100644
index 0000000..2a000aa
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/59.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/60.0.mp3 b/site/sound/Guitar.Harmonics/60.0.mp3
new file mode 100644
index 0000000..d42c2ee
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/60.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/61.0.mp3 b/site/sound/Guitar.Harmonics/61.0.mp3
new file mode 100644
index 0000000..1015140
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/61.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/62.0.mp3 b/site/sound/Guitar.Harmonics/62.0.mp3
new file mode 100644
index 0000000..c4038b8
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/62.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/63.0.mp3 b/site/sound/Guitar.Harmonics/63.0.mp3
new file mode 100644
index 0000000..a0facbe
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/63.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/64.0.mp3 b/site/sound/Guitar.Harmonics/64.0.mp3
new file mode 100644
index 0000000..93ddee3
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/64.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/65.0.mp3 b/site/sound/Guitar.Harmonics/65.0.mp3
new file mode 100644
index 0000000..8730a89
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/65.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/66.0.mp3 b/site/sound/Guitar.Harmonics/66.0.mp3
new file mode 100644
index 0000000..18ed2b5
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/66.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/67.0.mp3 b/site/sound/Guitar.Harmonics/67.0.mp3
new file mode 100644
index 0000000..86f0a10
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/67.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/68.0.mp3 b/site/sound/Guitar.Harmonics/68.0.mp3
new file mode 100644
index 0000000..20cd3d8
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/68.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/69.0.mp3 b/site/sound/Guitar.Harmonics/69.0.mp3
new file mode 100644
index 0000000..e6a5671
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/69.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/70.0.mp3 b/site/sound/Guitar.Harmonics/70.0.mp3
new file mode 100644
index 0000000..c49ac84
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/70.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/71.0.mp3 b/site/sound/Guitar.Harmonics/71.0.mp3
new file mode 100644
index 0000000..5020bd4
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/71.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/72.0.mp3 b/site/sound/Guitar.Harmonics/72.0.mp3
new file mode 100644
index 0000000..1910d77
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/72.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/73.0.mp3 b/site/sound/Guitar.Harmonics/73.0.mp3
new file mode 100644
index 0000000..756b109
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/73.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/74.0.mp3 b/site/sound/Guitar.Harmonics/74.0.mp3
new file mode 100644
index 0000000..d6050b3
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/74.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/75.0.mp3 b/site/sound/Guitar.Harmonics/75.0.mp3
new file mode 100644
index 0000000..34ec975
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/75.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/76.0.mp3 b/site/sound/Guitar.Harmonics/76.0.mp3
new file mode 100644
index 0000000..d05c908
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/76.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/77.0.mp3 b/site/sound/Guitar.Harmonics/77.0.mp3
new file mode 100644
index 0000000..4ddd880
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/77.0.mp3
Binary files differ
diff --git a/site/sound/Guitar.Harmonics/78.0.mp3 b/site/sound/Guitar.Harmonics/78.0.mp3
new file mode 100644
index 0000000..6eb35aa
--- /dev/null
+++ b/site/sound/Guitar.Harmonics/78.0.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/001.mp3 b/site/sound/WoodKnock/001.mp3
new file mode 100644
index 0000000..d02eca0
--- /dev/null
+++ b/site/sound/WoodKnock/001.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/002.mp3 b/site/sound/WoodKnock/002.mp3
new file mode 100644
index 0000000..d1298c7
--- /dev/null
+++ b/site/sound/WoodKnock/002.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/003.mp3 b/site/sound/WoodKnock/003.mp3
new file mode 100644
index 0000000..0b7a34c
--- /dev/null
+++ b/site/sound/WoodKnock/003.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/004.mp3 b/site/sound/WoodKnock/004.mp3
new file mode 100644
index 0000000..03535fd
--- /dev/null
+++ b/site/sound/WoodKnock/004.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/005.mp3 b/site/sound/WoodKnock/005.mp3
new file mode 100644
index 0000000..d1c65b8
--- /dev/null
+++ b/site/sound/WoodKnock/005.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/006.mp3 b/site/sound/WoodKnock/006.mp3
new file mode 100644
index 0000000..4cc885d
--- /dev/null
+++ b/site/sound/WoodKnock/006.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/007.mp3 b/site/sound/WoodKnock/007.mp3
new file mode 100644
index 0000000..30f1f6e
--- /dev/null
+++ b/site/sound/WoodKnock/007.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/008.mp3 b/site/sound/WoodKnock/008.mp3
new file mode 100644
index 0000000..f0b475f
--- /dev/null
+++ b/site/sound/WoodKnock/008.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/009.mp3 b/site/sound/WoodKnock/009.mp3
new file mode 100644
index 0000000..7e0d9c6
--- /dev/null
+++ b/site/sound/WoodKnock/009.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/010.mp3 b/site/sound/WoodKnock/010.mp3
new file mode 100644
index 0000000..26e7141
--- /dev/null
+++ b/site/sound/WoodKnock/010.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/011.mp3 b/site/sound/WoodKnock/011.mp3
new file mode 100644
index 0000000..accdde2
--- /dev/null
+++ b/site/sound/WoodKnock/011.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/012.mp3 b/site/sound/WoodKnock/012.mp3
new file mode 100644
index 0000000..cdceb46
--- /dev/null
+++ b/site/sound/WoodKnock/012.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/013.mp3 b/site/sound/WoodKnock/013.mp3
new file mode 100644
index 0000000..4a8c7e0
--- /dev/null
+++ b/site/sound/WoodKnock/013.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/014.mp3 b/site/sound/WoodKnock/014.mp3
new file mode 100644
index 0000000..ea1353d
--- /dev/null
+++ b/site/sound/WoodKnock/014.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/015.mp3 b/site/sound/WoodKnock/015.mp3
new file mode 100644
index 0000000..a551cfa
--- /dev/null
+++ b/site/sound/WoodKnock/015.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/016.mp3 b/site/sound/WoodKnock/016.mp3
new file mode 100644
index 0000000..d21fd9f
--- /dev/null
+++ b/site/sound/WoodKnock/016.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/017.mp3 b/site/sound/WoodKnock/017.mp3
new file mode 100644
index 0000000..64e20f3
--- /dev/null
+++ b/site/sound/WoodKnock/017.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/018.mp3 b/site/sound/WoodKnock/018.mp3
new file mode 100644
index 0000000..bc37ecd
--- /dev/null
+++ b/site/sound/WoodKnock/018.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/019.mp3 b/site/sound/WoodKnock/019.mp3
new file mode 100644
index 0000000..f50330c
--- /dev/null
+++ b/site/sound/WoodKnock/019.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/020.mp3 b/site/sound/WoodKnock/020.mp3
new file mode 100644
index 0000000..64a06c5
--- /dev/null
+++ b/site/sound/WoodKnock/020.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/021.mp3 b/site/sound/WoodKnock/021.mp3
new file mode 100644
index 0000000..fb3cfbb
--- /dev/null
+++ b/site/sound/WoodKnock/021.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/022.mp3 b/site/sound/WoodKnock/022.mp3
new file mode 100644
index 0000000..89117ad
--- /dev/null
+++ b/site/sound/WoodKnock/022.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/023.mp3 b/site/sound/WoodKnock/023.mp3
new file mode 100644
index 0000000..7274df9
--- /dev/null
+++ b/site/sound/WoodKnock/023.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/024.mp3 b/site/sound/WoodKnock/024.mp3
new file mode 100644
index 0000000..54cfc3d
--- /dev/null
+++ b/site/sound/WoodKnock/024.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/025.mp3 b/site/sound/WoodKnock/025.mp3
new file mode 100644
index 0000000..4d16dc0
--- /dev/null
+++ b/site/sound/WoodKnock/025.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/026.mp3 b/site/sound/WoodKnock/026.mp3
new file mode 100644
index 0000000..fd90e71
--- /dev/null
+++ b/site/sound/WoodKnock/026.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/027.mp3 b/site/sound/WoodKnock/027.mp3
new file mode 100644
index 0000000..19bfd55
--- /dev/null
+++ b/site/sound/WoodKnock/027.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/028.mp3 b/site/sound/WoodKnock/028.mp3
new file mode 100644
index 0000000..0556f4b
--- /dev/null
+++ b/site/sound/WoodKnock/028.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/029.mp3 b/site/sound/WoodKnock/029.mp3
new file mode 100644
index 0000000..c1cce0f
--- /dev/null
+++ b/site/sound/WoodKnock/029.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/030.mp3 b/site/sound/WoodKnock/030.mp3
new file mode 100644
index 0000000..fed9d61
--- /dev/null
+++ b/site/sound/WoodKnock/030.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/031.mp3 b/site/sound/WoodKnock/031.mp3
new file mode 100644
index 0000000..adeeac6
--- /dev/null
+++ b/site/sound/WoodKnock/031.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/032.mp3 b/site/sound/WoodKnock/032.mp3
new file mode 100644
index 0000000..1b436ed
--- /dev/null
+++ b/site/sound/WoodKnock/032.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/033.mp3 b/site/sound/WoodKnock/033.mp3
new file mode 100644
index 0000000..b51da44
--- /dev/null
+++ b/site/sound/WoodKnock/033.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/034.mp3 b/site/sound/WoodKnock/034.mp3
new file mode 100644
index 0000000..5cc2d77
--- /dev/null
+++ b/site/sound/WoodKnock/034.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/035.mp3 b/site/sound/WoodKnock/035.mp3
new file mode 100644
index 0000000..31ccfef
--- /dev/null
+++ b/site/sound/WoodKnock/035.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/036.mp3 b/site/sound/WoodKnock/036.mp3
new file mode 100644
index 0000000..adde3e6
--- /dev/null
+++ b/site/sound/WoodKnock/036.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/037.mp3 b/site/sound/WoodKnock/037.mp3
new file mode 100644
index 0000000..c766183
--- /dev/null
+++ b/site/sound/WoodKnock/037.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/038.mp3 b/site/sound/WoodKnock/038.mp3
new file mode 100644
index 0000000..731a890
--- /dev/null
+++ b/site/sound/WoodKnock/038.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/039.mp3 b/site/sound/WoodKnock/039.mp3
new file mode 100644
index 0000000..3acd86b
--- /dev/null
+++ b/site/sound/WoodKnock/039.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/040.mp3 b/site/sound/WoodKnock/040.mp3
new file mode 100644
index 0000000..dd79e2c
--- /dev/null
+++ b/site/sound/WoodKnock/040.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/041.mp3 b/site/sound/WoodKnock/041.mp3
new file mode 100644
index 0000000..505e00b
--- /dev/null
+++ b/site/sound/WoodKnock/041.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/042.mp3 b/site/sound/WoodKnock/042.mp3
new file mode 100644
index 0000000..18f724e
--- /dev/null
+++ b/site/sound/WoodKnock/042.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/044.mp3 b/site/sound/WoodKnock/044.mp3
new file mode 100644
index 0000000..399e4c1
--- /dev/null
+++ b/site/sound/WoodKnock/044.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/045.mp3 b/site/sound/WoodKnock/045.mp3
new file mode 100644
index 0000000..cb564cf
--- /dev/null
+++ b/site/sound/WoodKnock/045.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/046.mp3 b/site/sound/WoodKnock/046.mp3
new file mode 100644
index 0000000..f1697b1
--- /dev/null
+++ b/site/sound/WoodKnock/046.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/047.mp3 b/site/sound/WoodKnock/047.mp3
new file mode 100644
index 0000000..04038e9
--- /dev/null
+++ b/site/sound/WoodKnock/047.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/048.mp3 b/site/sound/WoodKnock/048.mp3
new file mode 100644
index 0000000..4292607
--- /dev/null
+++ b/site/sound/WoodKnock/048.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/049.mp3 b/site/sound/WoodKnock/049.mp3
new file mode 100644
index 0000000..0f09151
--- /dev/null
+++ b/site/sound/WoodKnock/049.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/050.mp3 b/site/sound/WoodKnock/050.mp3
new file mode 100644
index 0000000..4af92bf
--- /dev/null
+++ b/site/sound/WoodKnock/050.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/052.mp3 b/site/sound/WoodKnock/052.mp3
new file mode 100644
index 0000000..31c9310
--- /dev/null
+++ b/site/sound/WoodKnock/052.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/053.mp3 b/site/sound/WoodKnock/053.mp3
new file mode 100644
index 0000000..abf7532
--- /dev/null
+++ b/site/sound/WoodKnock/053.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/054.mp3 b/site/sound/WoodKnock/054.mp3
new file mode 100644
index 0000000..969206b
--- /dev/null
+++ b/site/sound/WoodKnock/054.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/055.mp3 b/site/sound/WoodKnock/055.mp3
new file mode 100644
index 0000000..07920b5
--- /dev/null
+++ b/site/sound/WoodKnock/055.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/056.mp3 b/site/sound/WoodKnock/056.mp3
new file mode 100644
index 0000000..8fdcd57
--- /dev/null
+++ b/site/sound/WoodKnock/056.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/057.mp3 b/site/sound/WoodKnock/057.mp3
new file mode 100644
index 0000000..3c7469f
--- /dev/null
+++ b/site/sound/WoodKnock/057.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/058.mp3 b/site/sound/WoodKnock/058.mp3
new file mode 100644
index 0000000..7f8d1c4
--- /dev/null
+++ b/site/sound/WoodKnock/058.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/059.mp3 b/site/sound/WoodKnock/059.mp3
new file mode 100644
index 0000000..d990fca
--- /dev/null
+++ b/site/sound/WoodKnock/059.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/060.mp3 b/site/sound/WoodKnock/060.mp3
new file mode 100644
index 0000000..5573a31
--- /dev/null
+++ b/site/sound/WoodKnock/060.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/061.mp3 b/site/sound/WoodKnock/061.mp3
new file mode 100644
index 0000000..97e2bbd
--- /dev/null
+++ b/site/sound/WoodKnock/061.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/062.mp3 b/site/sound/WoodKnock/062.mp3
new file mode 100644
index 0000000..665fed7
--- /dev/null
+++ b/site/sound/WoodKnock/062.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/063.mp3 b/site/sound/WoodKnock/063.mp3
new file mode 100644
index 0000000..11cb7be
--- /dev/null
+++ b/site/sound/WoodKnock/063.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/064.mp3 b/site/sound/WoodKnock/064.mp3
new file mode 100644
index 0000000..5b07b10
--- /dev/null
+++ b/site/sound/WoodKnock/064.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/065.mp3 b/site/sound/WoodKnock/065.mp3
new file mode 100644
index 0000000..9751b58
--- /dev/null
+++ b/site/sound/WoodKnock/065.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/066.mp3 b/site/sound/WoodKnock/066.mp3
new file mode 100644
index 0000000..de7d7e6
--- /dev/null
+++ b/site/sound/WoodKnock/066.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/067.mp3 b/site/sound/WoodKnock/067.mp3
new file mode 100644
index 0000000..1253fac
--- /dev/null
+++ b/site/sound/WoodKnock/067.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/068.mp3 b/site/sound/WoodKnock/068.mp3
new file mode 100644
index 0000000..d48d4d4
--- /dev/null
+++ b/site/sound/WoodKnock/068.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/069.mp3 b/site/sound/WoodKnock/069.mp3
new file mode 100644
index 0000000..258811b
--- /dev/null
+++ b/site/sound/WoodKnock/069.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/070.mp3 b/site/sound/WoodKnock/070.mp3
new file mode 100644
index 0000000..7972fb4
--- /dev/null
+++ b/site/sound/WoodKnock/070.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/071.mp3 b/site/sound/WoodKnock/071.mp3
new file mode 100644
index 0000000..e4368d8
--- /dev/null
+++ b/site/sound/WoodKnock/071.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/072.mp3 b/site/sound/WoodKnock/072.mp3
new file mode 100644
index 0000000..5076472
--- /dev/null
+++ b/site/sound/WoodKnock/072.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/073.mp3 b/site/sound/WoodKnock/073.mp3
new file mode 100644
index 0000000..68e82e1
--- /dev/null
+++ b/site/sound/WoodKnock/073.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/074.mp3 b/site/sound/WoodKnock/074.mp3
new file mode 100644
index 0000000..5523404
--- /dev/null
+++ b/site/sound/WoodKnock/074.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/075.mp3 b/site/sound/WoodKnock/075.mp3
new file mode 100644
index 0000000..bbd6952
--- /dev/null
+++ b/site/sound/WoodKnock/075.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/076.mp3 b/site/sound/WoodKnock/076.mp3
new file mode 100644
index 0000000..842d585
--- /dev/null
+++ b/site/sound/WoodKnock/076.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/077.mp3 b/site/sound/WoodKnock/077.mp3
new file mode 100644
index 0000000..6cff8bd
--- /dev/null
+++ b/site/sound/WoodKnock/077.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/078.mp3 b/site/sound/WoodKnock/078.mp3
new file mode 100644
index 0000000..1e8695a
--- /dev/null
+++ b/site/sound/WoodKnock/078.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/079.mp3 b/site/sound/WoodKnock/079.mp3
new file mode 100644
index 0000000..4e1d839
--- /dev/null
+++ b/site/sound/WoodKnock/079.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/080.mp3 b/site/sound/WoodKnock/080.mp3
new file mode 100644
index 0000000..4370d99
--- /dev/null
+++ b/site/sound/WoodKnock/080.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/081.mp3 b/site/sound/WoodKnock/081.mp3
new file mode 100644
index 0000000..06fd8aa
--- /dev/null
+++ b/site/sound/WoodKnock/081.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/082.mp3 b/site/sound/WoodKnock/082.mp3
new file mode 100644
index 0000000..8e1ceaa
--- /dev/null
+++ b/site/sound/WoodKnock/082.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/083.mp3 b/site/sound/WoodKnock/083.mp3
new file mode 100644
index 0000000..f152f13
--- /dev/null
+++ b/site/sound/WoodKnock/083.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/084.mp3 b/site/sound/WoodKnock/084.mp3
new file mode 100644
index 0000000..e928ec4
--- /dev/null
+++ b/site/sound/WoodKnock/084.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/085.mp3 b/site/sound/WoodKnock/085.mp3
new file mode 100644
index 0000000..7c26a8f
--- /dev/null
+++ b/site/sound/WoodKnock/085.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/086.mp3 b/site/sound/WoodKnock/086.mp3
new file mode 100644
index 0000000..092c823
--- /dev/null
+++ b/site/sound/WoodKnock/086.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/087.mp3 b/site/sound/WoodKnock/087.mp3
new file mode 100644
index 0000000..4b369a0
--- /dev/null
+++ b/site/sound/WoodKnock/087.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/088.mp3 b/site/sound/WoodKnock/088.mp3
new file mode 100644
index 0000000..fb9588f
--- /dev/null
+++ b/site/sound/WoodKnock/088.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/089.mp3 b/site/sound/WoodKnock/089.mp3
new file mode 100644
index 0000000..f8278bc
--- /dev/null
+++ b/site/sound/WoodKnock/089.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/090.mp3 b/site/sound/WoodKnock/090.mp3
new file mode 100644
index 0000000..4e79ac1
--- /dev/null
+++ b/site/sound/WoodKnock/090.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/091.mp3 b/site/sound/WoodKnock/091.mp3
new file mode 100644
index 0000000..cad6838
--- /dev/null
+++ b/site/sound/WoodKnock/091.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/092.mp3 b/site/sound/WoodKnock/092.mp3
new file mode 100644
index 0000000..778bcca
--- /dev/null
+++ b/site/sound/WoodKnock/092.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/093.mp3 b/site/sound/WoodKnock/093.mp3
new file mode 100644
index 0000000..3bdfa58
--- /dev/null
+++ b/site/sound/WoodKnock/093.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/094.mp3 b/site/sound/WoodKnock/094.mp3
new file mode 100644
index 0000000..4df6641
--- /dev/null
+++ b/site/sound/WoodKnock/094.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/095.mp3 b/site/sound/WoodKnock/095.mp3
new file mode 100644
index 0000000..77478c5
--- /dev/null
+++ b/site/sound/WoodKnock/095.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/096.mp3 b/site/sound/WoodKnock/096.mp3
new file mode 100644
index 0000000..8faa002
--- /dev/null
+++ b/site/sound/WoodKnock/096.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/097.mp3 b/site/sound/WoodKnock/097.mp3
new file mode 100644
index 0000000..9eac8c1
--- /dev/null
+++ b/site/sound/WoodKnock/097.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/098.mp3 b/site/sound/WoodKnock/098.mp3
new file mode 100644
index 0000000..14468ff
--- /dev/null
+++ b/site/sound/WoodKnock/098.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/099.mp3 b/site/sound/WoodKnock/099.mp3
new file mode 100644
index 0000000..f674a68
--- /dev/null
+++ b/site/sound/WoodKnock/099.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/101.mp3 b/site/sound/WoodKnock/101.mp3
new file mode 100644
index 0000000..9495d3e
--- /dev/null
+++ b/site/sound/WoodKnock/101.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/102.mp3 b/site/sound/WoodKnock/102.mp3
new file mode 100644
index 0000000..ef609b7
--- /dev/null
+++ b/site/sound/WoodKnock/102.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/103.mp3 b/site/sound/WoodKnock/103.mp3
new file mode 100644
index 0000000..1ddb32b
--- /dev/null
+++ b/site/sound/WoodKnock/103.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/105.mp3 b/site/sound/WoodKnock/105.mp3
new file mode 100644
index 0000000..7fd807d
--- /dev/null
+++ b/site/sound/WoodKnock/105.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/106.mp3 b/site/sound/WoodKnock/106.mp3
new file mode 100644
index 0000000..24d0bf9
--- /dev/null
+++ b/site/sound/WoodKnock/106.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/107.mp3 b/site/sound/WoodKnock/107.mp3
new file mode 100644
index 0000000..7f477ad
--- /dev/null
+++ b/site/sound/WoodKnock/107.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/108.mp3 b/site/sound/WoodKnock/108.mp3
new file mode 100644
index 0000000..34848fd
--- /dev/null
+++ b/site/sound/WoodKnock/108.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/111.mp3 b/site/sound/WoodKnock/111.mp3
new file mode 100644
index 0000000..339f826
--- /dev/null
+++ b/site/sound/WoodKnock/111.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/112.mp3 b/site/sound/WoodKnock/112.mp3
new file mode 100644
index 0000000..53e0c13
--- /dev/null
+++ b/site/sound/WoodKnock/112.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/114.mp3 b/site/sound/WoodKnock/114.mp3
new file mode 100644
index 0000000..0bf53eb
--- /dev/null
+++ b/site/sound/WoodKnock/114.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/115.mp3 b/site/sound/WoodKnock/115.mp3
new file mode 100644
index 0000000..b8a7a84
--- /dev/null
+++ b/site/sound/WoodKnock/115.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/116.mp3 b/site/sound/WoodKnock/116.mp3
new file mode 100644
index 0000000..a884063
--- /dev/null
+++ b/site/sound/WoodKnock/116.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/117.mp3 b/site/sound/WoodKnock/117.mp3
new file mode 100644
index 0000000..e1b2dfc
--- /dev/null
+++ b/site/sound/WoodKnock/117.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/118.mp3 b/site/sound/WoodKnock/118.mp3
new file mode 100644
index 0000000..e7daf6d
--- /dev/null
+++ b/site/sound/WoodKnock/118.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/119.mp3 b/site/sound/WoodKnock/119.mp3
new file mode 100644
index 0000000..908f760
--- /dev/null
+++ b/site/sound/WoodKnock/119.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/120.mp3 b/site/sound/WoodKnock/120.mp3
new file mode 100644
index 0000000..d2c3d33
--- /dev/null
+++ b/site/sound/WoodKnock/120.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/121.mp3 b/site/sound/WoodKnock/121.mp3
new file mode 100644
index 0000000..c7c0708
--- /dev/null
+++ b/site/sound/WoodKnock/121.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/122.mp3 b/site/sound/WoodKnock/122.mp3
new file mode 100644
index 0000000..9c8af3a
--- /dev/null
+++ b/site/sound/WoodKnock/122.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/123.mp3 b/site/sound/WoodKnock/123.mp3
new file mode 100644
index 0000000..f341917
--- /dev/null
+++ b/site/sound/WoodKnock/123.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/124.mp3 b/site/sound/WoodKnock/124.mp3
new file mode 100644
index 0000000..5cd5d09
--- /dev/null
+++ b/site/sound/WoodKnock/124.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/125.mp3 b/site/sound/WoodKnock/125.mp3
new file mode 100644
index 0000000..9ceef9f
--- /dev/null
+++ b/site/sound/WoodKnock/125.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/126.mp3 b/site/sound/WoodKnock/126.mp3
new file mode 100644
index 0000000..d663576
--- /dev/null
+++ b/site/sound/WoodKnock/126.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/127.mp3 b/site/sound/WoodKnock/127.mp3
new file mode 100644
index 0000000..3cbe437
--- /dev/null
+++ b/site/sound/WoodKnock/127.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/128.mp3 b/site/sound/WoodKnock/128.mp3
new file mode 100644
index 0000000..71145bd
--- /dev/null
+++ b/site/sound/WoodKnock/128.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/129.mp3 b/site/sound/WoodKnock/129.mp3
new file mode 100644
index 0000000..f437b93
--- /dev/null
+++ b/site/sound/WoodKnock/129.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/130.mp3 b/site/sound/WoodKnock/130.mp3
new file mode 100644
index 0000000..04f3689
--- /dev/null
+++ b/site/sound/WoodKnock/130.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/131.mp3 b/site/sound/WoodKnock/131.mp3
new file mode 100644
index 0000000..2f6a031
--- /dev/null
+++ b/site/sound/WoodKnock/131.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/133.mp3 b/site/sound/WoodKnock/133.mp3
new file mode 100644
index 0000000..f660187
--- /dev/null
+++ b/site/sound/WoodKnock/133.mp3
Binary files differ
diff --git a/site/sound/WoodKnock/134.mp3 b/site/sound/WoodKnock/134.mp3
new file mode 100644
index 0000000..e4da3e4
--- /dev/null
+++ b/site/sound/WoodKnock/134.mp3
Binary files differ
diff --git a/site/sound/collection_udo.py b/site/sound/collection_udo.py
new file mode 100755
index 0000000..30124de
--- /dev/null
+++ b/site/sound/collection_udo.py
@@ -0,0 +1,77 @@
+#!/usr/bin/python
+import json
+import os
+import cgi
+import sys
+
+
+def getdata():
+ form = cgi.FieldStorage()
+ request = form.getvalue("collections")
+ collections = request.split(",")
+
+ with open("map.json", "r") as f:
+ data = json.load(f)
+
+ filecount = 0
+ udo_data = str()
+ icollectionid = 0
+ opcode_str1 = "opcode sounddb_getcollectionid, i, So\n\tScollection, i_ xin\n"
+ opcode_str2 = "opcode sounddb_getcollection, i[]i, S\n\tScollection xin\n"
+ first = True
+ for name, data in data.iteritems():
+ if name not in collections:
+ continue
+
+ safe_name = name.replace(".", "_")
+
+ if not first:
+ opcode_str1 += "\telseif "
+ opcode_str2 += "\telseif "
+ else:
+ first = False
+ opcode_str1 += "\tif "
+ opcode_str2 += "\tif "
+
+ opcode_str1 += "(strcmp(Scollection, \"{}\") == 0) then\n\t\ticollectionid = {}\n".format(name, icollectionid)
+ opcode_str2 += "(strcmp(Scollection, \"{0}\") == 0) then\n\t\ticollection[] = gisdbFn_{0}\n\t\ticollectionid = {1}\n".format(
+ safe_name, icollectionid
+ )
+
+ if data["type"] == "melsys":
+ melsys = True
+ note_data = [None for x in range(0, 128)]
+ note_str = "gisdbNotes_{}[] init 128, 2".format(safe_name)
+ else:
+ note_str = None
+ melsys = False
+
+ udo_data += "gisdbFn_{}[] fillarray ".format(safe_name)
+ index = 0
+ for item in data["sounds"]:
+ exists = False
+ if melsys:
+ if note_data[item["note"]]:
+ exists = True
+ else:
+ note_data[item["note"]] = {"fn": "gisdbFn_{}[{}]".format(safe_name, index), "ratio": 1}
+ if not exists:
+ udo_data += "ftgen(0, 0, 0, 1, \"{}\", 0, 0, 0),".format(item["path"])
+ index += 1
+ udo_data = udo_data[:-1] + "\n\n"
+ if melsys:
+ for note in note_data:
+ pass
+ icollectionid += 1
+
+ opcode_str1 += "\tendif\n\txout icollectionid\nendop\n"
+ opcode_str2 += "\tendif\n\txout icollection, icollectionid\nendop\n"
+ opcode_str = opcode_str1 + "\n" + opcode_str2 + "\nopcode sounddb_getcollection, i[], S\n\tScollection xin\n\ticollection[], i_ sounddb_getcollection Scollection\n\txout icollection\nendop\n"
+
+ print udo_data + "\n" + opcode_str
+
+
+if __name__ == "__main__":
+ sys.stdout.write("Content-Type: text/plain\n\n")
+ getdata()
+
diff --git a/site/sound/map.json b/site/sound/map.json
new file mode 100644
index 0000000..3d0104e
--- /dev/null
+++ b/site/sound/map.json
@@ -0,0 +1 @@
+{"Guitar.Harmonics": {"sounds": [{"note": 46, "path": "/sound/Guitar.Harmonics/46.0.mp3"}, {"note": 50, "path": "/sound/Guitar.Harmonics/50.0.mp3"}, {"note": 57, "path": "/sound/Guitar.Harmonics/57.0.mp3"}, {"note": 45, "path": "/sound/Guitar.Harmonics/45.0.mp3"}, {"note": 61, "path": "/sound/Guitar.Harmonics/61.0.mp3"}, {"note": 42, "path": "/sound/Guitar.Harmonics/42.0.mp3"}, {"note": 51, "path": "/sound/Guitar.Harmonics/51.0.mp3"}, {"note": 69, "path": "/sound/Guitar.Harmonics/69.0.mp3"}, {"note": 73, "path": "/sound/Guitar.Harmonics/73.0.mp3"}, {"note": 60, "path": "/sound/Guitar.Harmonics/60.0.mp3"}, {"note": 76, "path": "/sound/Guitar.Harmonics/76.0.mp3"}, {"note": 56, "path": "/sound/Guitar.Harmonics/56.0.mp3"}, {"note": 71, "path": "/sound/Guitar.Harmonics/71.0.mp3"}, {"note": 62, "path": "/sound/Guitar.Harmonics/62.0.mp3"}, {"note": 75, "path": "/sound/Guitar.Harmonics/75.0.mp3"}, {"note": 59, "path": "/sound/Guitar.Harmonics/59.0.mp3"}, {"note": 43, "path": "/sound/Guitar.Harmonics/43.0.mp3"}, {"note": 78, "path": "/sound/Guitar.Harmonics/78.0.mp3"}, {"note": 48, "path": "/sound/Guitar.Harmonics/48.0.mp3"}, {"note": 53, "path": "/sound/Guitar.Harmonics/53.0.mp3"}, {"note": 72, "path": "/sound/Guitar.Harmonics/72.0.mp3"}, {"note": 49, "path": "/sound/Guitar.Harmonics/49.0.mp3"}, {"note": 66, "path": "/sound/Guitar.Harmonics/66.0.mp3"}, {"note": 77, "path": "/sound/Guitar.Harmonics/77.0.mp3"}, {"note": 67, "path": "/sound/Guitar.Harmonics/67.0.mp3"}, {"note": 55, "path": "/sound/Guitar.Harmonics/55.0.mp3"}, {"note": 58, "path": "/sound/Guitar.Harmonics/58.0.mp3"}, {"note": 65, "path": "/sound/Guitar.Harmonics/65.0.mp3"}, {"note": 63, "path": "/sound/Guitar.Harmonics/63.0.mp3"}, {"note": 52, "path": "/sound/Guitar.Harmonics/52.0.mp3"}, {"note": 47, "path": "/sound/Guitar.Harmonics/47.0.mp3"}, {"note": 44, "path": "/sound/Guitar.Harmonics/44.0.mp3"}, {"note": 74, "path": "/sound/Guitar.Harmonics/74.0.mp3"}, {"note": 54, "path": "/sound/Guitar.Harmonics/54.0.mp3"}, {"note": 68, "path": "/sound/Guitar.Harmonics/68.0.mp3"}, {"note": 64, "path": "/sound/Guitar.Harmonics/64.0.mp3"}, {"note": 70, "path": "/sound/Guitar.Harmonics/70.0.mp3"}], "type": "melsys"}, "WoodKnock": {"sounds": [{"path": "/sound/WoodKnock/090.mp3"}, {"path": "/sound/WoodKnock/031.mp3"}, {"path": "/sound/WoodKnock/052.mp3"}, {"path": "/sound/WoodKnock/120.mp3"}, {"path": "/sound/WoodKnock/082.mp3"}, {"path": "/sound/WoodKnock/117.mp3"}, {"path": "/sound/WoodKnock/023.mp3"}, {"path": "/sound/WoodKnock/107.mp3"}, {"path": "/sound/WoodKnock/073.mp3"}, {"path": "/sound/WoodKnock/123.mp3"}, {"path": "/sound/WoodKnock/027.mp3"}, {"path": "/sound/WoodKnock/028.mp3"}, {"path": "/sound/WoodKnock/013.mp3"}, {"path": "/sound/WoodKnock/067.mp3"}, {"path": "/sound/WoodKnock/078.mp3"}, {"path": "/sound/WoodKnock/048.mp3"}, {"path": "/sound/WoodKnock/038.mp3"}, {"path": "/sound/WoodKnock/056.mp3"}, {"path": "/sound/WoodKnock/102.mp3"}, {"path": "/sound/WoodKnock/014.mp3"}, {"path": "/sound/WoodKnock/112.mp3"}, {"path": "/sound/WoodKnock/049.mp3"}, {"path": "/sound/WoodKnock/068.mp3"}, {"path": "/sound/WoodKnock/114.mp3"}, {"path": "/sound/WoodKnock/032.mp3"}, {"path": "/sound/WoodKnock/065.mp3"}, {"path": "/sound/WoodKnock/097.mp3"}, {"path": "/sound/WoodKnock/091.mp3"}, {"path": "/sound/WoodKnock/085.mp3"}, {"path": "/sound/WoodKnock/058.mp3"}, {"path": "/sound/WoodKnock/037.mp3"}, {"path": "/sound/WoodKnock/099.mp3"}, {"path": "/sound/WoodKnock/103.mp3"}, {"path": "/sound/WoodKnock/126.mp3"}, {"path": "/sound/WoodKnock/022.mp3"}, {"path": "/sound/WoodKnock/026.mp3"}, {"path": "/sound/WoodKnock/122.mp3"}, {"path": "/sound/WoodKnock/042.mp3"}, {"path": "/sound/WoodKnock/001.mp3"}, {"path": "/sound/WoodKnock/098.mp3"}, {"path": "/sound/WoodKnock/021.mp3"}, {"path": "/sound/WoodKnock/087.mp3"}, {"path": "/sound/WoodKnock/074.mp3"}, {"path": "/sound/WoodKnock/044.mp3"}, {"path": "/sound/WoodKnock/066.mp3"}, {"path": "/sound/WoodKnock/124.mp3"}, {"path": "/sound/WoodKnock/061.mp3"}, {"path": "/sound/WoodKnock/134.mp3"}, {"path": "/sound/WoodKnock/055.mp3"}, {"path": "/sound/WoodKnock/046.mp3"}, {"path": "/sound/WoodKnock/081.mp3"}, {"path": "/sound/WoodKnock/057.mp3"}, {"path": "/sound/WoodKnock/083.mp3"}, {"path": "/sound/WoodKnock/060.mp3"}, {"path": "/sound/WoodKnock/020.mp3"}, {"path": "/sound/WoodKnock/007.mp3"}, {"path": "/sound/WoodKnock/009.mp3"}, {"path": "/sound/WoodKnock/041.mp3"}, {"path": "/sound/WoodKnock/047.mp3"}, {"path": "/sound/WoodKnock/130.mp3"}, {"path": "/sound/WoodKnock/077.mp3"}, {"path": "/sound/WoodKnock/133.mp3"}, {"path": "/sound/WoodKnock/006.mp3"}, {"path": "/sound/WoodKnock/012.mp3"}, {"path": "/sound/WoodKnock/063.mp3"}, {"path": "/sound/WoodKnock/003.mp3"}, {"path": "/sound/WoodKnock/034.mp3"}, {"path": "/sound/WoodKnock/080.mp3"}, {"path": "/sound/WoodKnock/101.mp3"}, {"path": "/sound/WoodKnock/033.mp3"}, {"path": "/sound/WoodKnock/025.mp3"}, {"path": "/sound/WoodKnock/095.mp3"}, {"path": "/sound/WoodKnock/059.mp3"}, {"path": "/sound/WoodKnock/045.mp3"}, {"path": "/sound/WoodKnock/072.mp3"}, {"path": "/sound/WoodKnock/018.mp3"}, {"path": "/sound/WoodKnock/071.mp3"}, {"path": "/sound/WoodKnock/053.mp3"}, {"path": "/sound/WoodKnock/086.mp3"}, {"path": "/sound/WoodKnock/040.mp3"}, {"path": "/sound/WoodKnock/029.mp3"}, {"path": "/sound/WoodKnock/016.mp3"}, {"path": "/sound/WoodKnock/089.mp3"}, {"path": "/sound/WoodKnock/015.mp3"}, {"path": "/sound/WoodKnock/119.mp3"}, {"path": "/sound/WoodKnock/106.mp3"}, {"path": "/sound/WoodKnock/125.mp3"}, {"path": "/sound/WoodKnock/054.mp3"}, {"path": "/sound/WoodKnock/050.mp3"}, {"path": "/sound/WoodKnock/070.mp3"}, {"path": "/sound/WoodKnock/039.mp3"}, {"path": "/sound/WoodKnock/011.mp3"}, {"path": "/sound/WoodKnock/036.mp3"}, {"path": "/sound/WoodKnock/108.mp3"}, {"path": "/sound/WoodKnock/128.mp3"}, {"path": "/sound/WoodKnock/062.mp3"}, {"path": "/sound/WoodKnock/092.mp3"}, {"path": "/sound/WoodKnock/005.mp3"}, {"path": "/sound/WoodKnock/118.mp3"}, {"path": "/sound/WoodKnock/088.mp3"}, {"path": "/sound/WoodKnock/121.mp3"}, {"path": "/sound/WoodKnock/131.mp3"}, {"path": "/sound/WoodKnock/079.mp3"}, {"path": "/sound/WoodKnock/076.mp3"}, {"path": "/sound/WoodKnock/105.mp3"}, {"path": "/sound/WoodKnock/075.mp3"}, {"path": "/sound/WoodKnock/093.mp3"}, {"path": "/sound/WoodKnock/030.mp3"}, {"path": "/sound/WoodKnock/129.mp3"}, {"path": "/sound/WoodKnock/096.mp3"}, {"path": "/sound/WoodKnock/035.mp3"}, {"path": "/sound/WoodKnock/115.mp3"}, {"path": "/sound/WoodKnock/094.mp3"}, {"path": "/sound/WoodKnock/069.mp3"}, {"path": "/sound/WoodKnock/004.mp3"}, {"path": "/sound/WoodKnock/019.mp3"}, {"path": "/sound/WoodKnock/116.mp3"}, {"path": "/sound/WoodKnock/111.mp3"}, {"path": "/sound/WoodKnock/002.mp3"}, {"path": "/sound/WoodKnock/017.mp3"}, {"path": "/sound/WoodKnock/064.mp3"}, {"path": "/sound/WoodKnock/084.mp3"}, {"path": "/sound/WoodKnock/010.mp3"}, {"path": "/sound/WoodKnock/127.mp3"}, {"path": "/sound/WoodKnock/024.mp3"}, {"path": "/sound/WoodKnock/008.mp3"}], "type": "generic"}} \ No newline at end of file
diff --git a/site/sound/refresh_map.py b/site/sound/refresh_map.py
new file mode 100644
index 0000000..74b9dff
--- /dev/null
+++ b/site/sound/refresh_map.py
@@ -0,0 +1,31 @@
+import json
+import os
+import re
+
+base_url = "/sound"
+
+def refresh():
+ items = dict()
+ for item in os.listdir("."):
+ if os.path.isdir(item):
+ sounds = list()
+ first = True
+ coltype = "generic"
+ for sound in os.listdir(item):
+ if os.path.splitext(sound)[1].lower() == ".mp3":
+ if first:
+ first = False
+ if re.search(r"[0-9]{2}.[0-9].mp3", sound):
+ coltype = "melsys"
+ soundobj = {"path": os.path.join(base_url, item, sound)}
+ if coltype == "melsys":
+ soundobj["note"] = int(re.match(r"([0-9]{2}).[0-9].mp3", sound).group(1))
+ sounds.append(soundobj)
+ items[item] = {"type": coltype, "sounds": sounds}
+
+ with open("map.json", "w") as f:
+ json.dump(items, f)
+
+if __name__ == "__main__":
+ refresh()
+
diff --git a/site/udo/707sd.udo b/site/udo/707sd.udo
new file mode 100755
index 0000000..679ca38
--- /dev/null
+++ b/site/udo/707sd.udo
@@ -0,0 +1,271 @@
+opcode playitem, a, ip
+ ilen, ipitch xin
+ ao[] init 266
+ ao[0] oscil linseg(0.024488557493,ilen, 0),10.7666015625*ipitch
+ ao[1] oscil linseg(0.0180192348741,ilen, 0),21.533203125*ipitch
+ ao[2] oscil linseg(1.0,ilen, 0),150.732421875*ipitch
+ ao[3] oscil linseg(0.0239778504714,ilen, 0),6718.359375*ipitch
+ ao[4] oscil linseg(0.0205609728986,ilen, 0),6459.9609375*ipitch
+ ao[5] oscil linseg(0.0267817769015,ilen, 0),5889.33105469*ipitch
+ ao[6] oscil linseg(0.0264693898081,ilen, 0),4661.93847656*ipitch
+ ao[7] oscil linseg(0.0200978314284,ilen, 0),6933.69140625*ipitch
+ ao[8] oscil linseg(0.0189626596094,ilen, 0),2045.65429688*ipitch
+ ao[9] oscil linseg(0.0394016023056,ilen, 0),3875.9765625*ipitch
+ ao[10] oscil linseg(0.0244133693747,ilen, 0),3940.57617188*ipitch
+ ao[11] oscil linseg(0.0181454434993,ilen, 0),3283.81347656*ipitch
+ ao[12] oscil linseg(0.815572982617,ilen, 0),161.499023438*ipitch
+ ao[13] oscil linseg(0.0311092972593,ilen, 0),5738.59863281*ipitch
+ ao[14] oscil linseg(0.0421340857104,ilen, 0),6363.06152344*ipitch
+ ao[15] oscil linseg(0.0214739723073,ilen, 0),1561.15722656*ipitch
+ ao[16] oscil linseg(0.0205910626124,ilen, 0),6223.09570312*ipitch
+ ao[17] oscil linseg(0.0294615941632,ilen, 0),5663.23242188*ipitch
+ ao[18] oscil linseg(0.0428432076284,ilen, 0),5813.96484375*ipitch
+ ao[19] oscil linseg(0.023357307483,ilen, 0),4705.00488281*ipitch
+ ao[20] oscil linseg(0.0204321027716,ilen, 0),613.696289062*ipitch
+ ao[21] oscil linseg(0.0187198942643,ilen, 0),9937.57324219*ipitch
+ ao[22] oscil linseg(0.0329440066468,ilen, 0),5587.86621094*ipitch
+ ao[23] oscil linseg(0.0224850052981,ilen, 0),3649.87792969*ipitch
+ ao[24] oscil linseg(0.0441226581933,ilen, 0),322.998046875*ipitch
+ ao[25] oscil linseg(0.031563261733,ilen, 0),6072.36328125*ipitch
+ ao[26] oscil linseg(0.0601866729828,ilen, 0),4382.00683594*ipitch
+ ao[27] oscil linseg(0.0430520694595,ilen, 0),5512.5*ipitch
+ ao[28] oscil linseg(0.0254528745151,ilen, 0),6330.76171875*ipitch
+ ao[29] oscil linseg(0.019312109605,ilen, 0),4952.63671875*ipitch
+ ao[30] oscil linseg(0.0480625303751,ilen, 0),4392.7734375*ipitch
+ ao[31] oscil linseg(0.0179122402451,ilen, 0),3488.37890625*ipitch
+ ao[32] oscil linseg(0.0191704394699,ilen, 0),10282.1044922*ipitch
+ ao[33] oscil linseg(0.0197171086104,ilen, 0),4877.27050781*ipitch
+ ao[34] oscil linseg(0.0255623423117,ilen, 0),6481.49414062*ipitch
+ ao[35] oscil linseg(0.0255904318115,ilen, 0),5437.13378906*ipitch
+ ao[36] oscil linseg(0.0183989713127,ilen, 0),2056.42089844*ipitch
+ ao[37] oscil linseg(0.034280387265,ilen, 0),3369.94628906*ipitch
+ ao[38] oscil linseg(0.0184363439226,ilen, 0),9097.77832031*ipitch
+ ao[39] oscil linseg(0.0273604328055,ilen, 0),2982.34863281*ipitch
+ ao[40] oscil linseg(0.0653034562041,ilen, 0),409.130859375*ipitch
+ ao[41] oscil linseg(0.0327228734714,ilen, 0),4425.07324219*ipitch
+ ao[42] oscil linseg(0.0190256745608,ilen, 0),6890.625*ipitch
+ ao[43] oscil linseg(0.0193144792275,ilen, 0),3854.44335938*ipitch
+ ao[44] oscil linseg(0.0587511829673,ilen, 0),269.165039062*ipitch
+ ao[45] oscil linseg(0.019286481335,ilen, 0),8742.48046875*ipitch
+ ao[46] oscil linseg(0.0216090547042,ilen, 0),3574.51171875*ipitch
+ ao[47] oscil linseg(0.0187803952388,ilen, 0),1410.42480469*ipitch
+ ao[48] oscil linseg(0.0243118170182,ilen, 0),5652.46582031*ipitch
+ ao[49] oscil linseg(0.024238087681,ilen, 0),5211.03515625*ipitch
+ ao[50] oscil linseg(0.0350021119004,ilen, 0),6815.25878906*ipitch
+ ao[51] oscil linseg(0.0246018118726,ilen, 0),4651.171875*ipitch
+ ao[52] oscil linseg(0.0183280746502,ilen, 0),6341.52832031*ipitch
+ ao[53] oscil linseg(0.0439988168993,ilen, 0),5480.20019531*ipitch
+ ao[54] oscil linseg(0.0185005478487,ilen, 0),75.3662109375*ipitch
+ ao[55] oscil linseg(0.0217309341919,ilen, 0),7299.75585938*ipitch
+ ao[56] oscil linseg(0.0239261103965,ilen, 0),5135.66894531*ipitch
+ ao[57] oscil linseg(0.0337920500579,ilen, 0),667.529296875*ipitch
+ ao[58] oscil linseg(0.0389469089661,ilen, 0),6180.02929688*ipitch
+ ao[59] oscil linseg(0.025599848855,ilen, 0),495.263671875*ipitch
+ ao[60] oscil linseg(0.0186056866333,ilen, 0),5620.16601562*ipitch
+ ao[61] oscil linseg(0.0277115109844,ilen, 0),5060.30273438*ipitch
+ ao[62] oscil linseg(0.0239839707807,ilen, 0),5846.26464844*ipitch
+ ao[63] oscil linseg(0.0242793120239,ilen, 0),6104.66308594*ipitch
+ ao[64] oscil linseg(0.0218570225382,ilen, 0),538.330078125*ipitch
+ ao[65] oscil linseg(0.0284524649389,ilen, 0),6847.55859375*ipitch
+ ao[66] oscil linseg(0.0234151014471,ilen, 0),355.297851562*ipitch
+ ao[67] oscil linseg(0.0236326097625,ilen, 0),6826.02539062*ipitch
+ ao[68] oscil linseg(0.0198269663231,ilen, 0),3983.64257812*ipitch
+ ao[69] oscil linseg(0.0242428628494,ilen, 0),5469.43359375*ipitch
+ ao[70] oscil linseg(0.022727584042,ilen, 0),6029.296875*ipitch
+ ao[71] oscil linseg(0.0257148865935,ilen, 0),7633.52050781*ipitch
+ ao[72] oscil linseg(0.0387341939638,ilen, 0),4834.20410156*ipitch
+ ao[73] oscil linseg(0.0234575272599,ilen, 0),5727.83203125*ipitch
+ ao[74] oscil linseg(0.0328683829317,ilen, 0),4909.5703125*ipitch
+ ao[75] oscil linseg(0.0194781594693,ilen, 0),2336.35253906*ipitch
+ ao[76] oscil linseg(0.0267544204582,ilen, 0),2583.984375*ipitch
+ ao[77] oscil linseg(0.0225099516997,ilen, 0),6998.29101562*ipitch
+ ao[78] oscil linseg(0.027822363223,ilen, 0),4511.20605469*ipitch
+ ao[79] oscil linseg(0.0316632150593,ilen, 0),5878.56445312*ipitch
+ ao[80] oscil linseg(0.0251764046343,ilen, 0),7482.78808594*ipitch
+ ao[81] oscil linseg(0.0269978702322,ilen, 0),5900.09765625*ipitch
+ ao[82] oscil linseg(0.0360164809734,ilen, 0),5490.96679688*ipitch
+ ao[83] oscil linseg(0.0189371940337,ilen, 0),4758.83789062*ipitch
+ ao[84] oscil linseg(0.0318790262703,ilen, 0),1431.95800781*ipitch
+ ao[85] oscil linseg(0.0269120366658,ilen, 0),4198.97460938*ipitch
+ ao[86] oscil linseg(0.0660414441974,ilen, 0),5803.19824219*ipitch
+ ao[87] oscil linseg(0.0183002135671,ilen, 0),9226.97753906*ipitch
+ ao[88] oscil linseg(0.02601135548,ilen, 0),4188.20800781*ipitch
+ ao[89] oscil linseg(0.059782820039,ilen, 0),301.46484375*ipitch
+ ao[90] oscil linseg(0.022680536783,ilen, 0),7891.91894531*ipitch
+ ao[91] oscil linseg(0.0331337139358,ilen, 0),3552.97851562*ipitch
+ ao[92] oscil linseg(0.0210451452407,ilen, 0),7332.05566406*ipitch
+ ao[93] oscil linseg(0.0542316337826,ilen, 0),3391.47949219*ipitch
+ ao[94] oscil linseg(0.0265953531859,ilen, 0),3273.046875*ipitch
+ ao[95] oscil linseg(0.0228255482004,ilen, 0),6772.19238281*ipitch
+ ao[96] oscil linseg(0.0204281003535,ilen, 0),4608.10546875*ipitch
+ ao[97] oscil linseg(0.0187120612285,ilen, 0),5243.33496094*ipitch
+ ao[98] oscil linseg(0.0239923645807,ilen, 0),6696.82617188*ipitch
+ ao[99] oscil linseg(0.0250861415508,ilen, 0),1421.19140625*ipitch
+ ao[100] oscil linseg(0.0180826742579,ilen, 0),1442.72460938*ipitch
+ ao[101] oscil linseg(0.0264853572248,ilen, 0),5577.09960938*ipitch
+ ao[102] oscil linseg(0.0206733216006,ilen, 0),2917.74902344*ipitch
+ ao[103] oscil linseg(0.136541640719,ilen, 0),236.865234375*ipitch
+ ao[104] oscil linseg(0.0199271384844,ilen, 0),602.9296875*ipitch
+ ao[105] oscil linseg(0.0347817284882,ilen, 0),5501.73339844*ipitch
+ ao[106] oscil linseg(0.0200376119011,ilen, 0),5996.99707031*ipitch
+ ao[107] oscil linseg(0.0179076379869,ilen, 0),2357.88574219*ipitch
+ ao[108] oscil linseg(0.0262162109904,ilen, 0),3068.48144531*ipitch
+ ao[109] oscil linseg(0.0263475044418,ilen, 0),8150.31738281*ipitch
+ ao[110] oscil linseg(0.0249585159453,ilen, 0),5986.23046875*ipitch
+ ao[111] oscil linseg(0.0485750524696,ilen, 0),3402.24609375*ipitch
+ ao[112] oscil linseg(0.0212922125085,ilen, 0),5975.46386719*ipitch
+ ao[113] oscil linseg(0.021729822868,ilen, 0),4866.50390625*ipitch
+ ao[114] oscil linseg(0.0279031353037,ilen, 0),6470.72753906*ipitch
+ ao[115] oscil linseg(0.0235197284618,ilen, 0),2906.98242188*ipitch
+ ao[116] oscil linseg(0.0205771312611,ilen, 0),5351.00097656*ipitch
+ ao[117] oscil linseg(0.0222872451849,ilen, 0),1453.49121094*ipitch
+ ao[118] oscil linseg(0.0186243772791,ilen, 0),6739.89257812*ipitch
+ ao[119] oscil linseg(0.0258420854569,ilen, 0),3606.81152344*ipitch
+ ao[120] oscil linseg(0.0315570313023,ilen, 0),473.73046875*ipitch
+ ao[121] oscil linseg(0.030144620486,ilen, 0),5275.63476562*ipitch
+ ao[122] oscil linseg(0.0325973191223,ilen, 0),4715.77148438*ipitch
+ ao[123] oscil linseg(0.0196349869952,ilen, 0),3090.01464844*ipitch
+ ao[124] oscil linseg(0.0191335517023,ilen, 0),4155.90820312*ipitch
+ ao[125] oscil linseg(0.0192294107496,ilen, 0),6158.49609375*ipitch
+ ao[126] oscil linseg(0.0460088874701,ilen, 0),333.764648438*ipitch
+ ao[127] oscil linseg(0.0290235813967,ilen, 0),6804.4921875*ipitch
+ ao[128] oscil linseg(0.0192921845337,ilen, 0),5684.765625*ipitch
+ ao[129] oscil linseg(0.0266475841315,ilen, 0),5835.49804688*ipitch
+ ao[130] oscil linseg(0.0200220024544,ilen, 0),3811.37695312*ipitch
+ ao[131] oscil linseg(0.019076150019,ilen, 0),8322.58300781*ipitch
+ ao[132] oscil linseg(0.020423256474,ilen, 0),3531.4453125*ipitch
+ ao[133] oscil linseg(0.0352261986885,ilen, 0),6503.02734375*ipitch
+ ao[134] oscil linseg(0.409247939635,ilen, 0),139.965820312*ipitch
+ ao[135] oscil linseg(0.0402794341335,ilen, 0),6169.26269531*ipitch
+ ao[136] oscil linseg(0.0408649673903,ilen, 0),6707.59277344*ipitch
+ ao[137] oscil linseg(0.0368015278912,ilen, 0),5609.39941406*ipitch
+ ao[138] oscil linseg(0.0199864332097,ilen, 0),5006.46972656*ipitch
+ ao[139] oscil linseg(0.0204053032336,ilen, 0),1550.390625*ipitch
+ ao[140] oscil linseg(0.0193863220144,ilen, 0),5049.53613281*ipitch
+ ao[141] oscil linseg(0.037020548398,ilen, 0),3800.61035156*ipitch
+ ao[142] oscil linseg(0.0231713206328,ilen, 0),5534.03320312*ipitch
+ ao[143] oscil linseg(0.0199967375178,ilen, 0),8839.37988281*ipitch
+ ao[144] oscil linseg(0.0184321995545,ilen, 0),419.897460938*ipitch
+ ao[145] oscil linseg(0.0259855927924,ilen, 0),7245.92285156*ipitch
+ ao[146] oscil linseg(0.0293177874851,ilen, 0),4414.30664062*ipitch
+ ao[147] oscil linseg(0.0225066153808,ilen, 0),4984.93652344*ipitch
+ ao[148] oscil linseg(0.0205668887003,ilen, 0),7622.75390625*ipitch
+ ao[149] oscil linseg(0.0363998155204,ilen, 0),5458.66699219*ipitch
+ ao[150] oscil linseg(0.0205970206623,ilen, 0),7062.890625*ipitch
+ ao[151] oscil linseg(0.0179174379577,ilen, 0),7127.49023438*ipitch
+ ao[152] oscil linseg(0.0183602513668,ilen, 0),2605.51757812*ipitch
+ ao[153] oscil linseg(0.0207152850401,ilen, 0),279.931640625*ipitch
+ ao[154] oscil linseg(0.0286191251909,ilen, 0),6578.39355469*ipitch
+ ao[155] oscil linseg(0.0237817929411,ilen, 0),6987.52441406*ipitch
+ ao[156] oscil linseg(0.0192771582309,ilen, 0),4360.47363281*ipitch
+ ao[157] oscil linseg(0.026170589693,ilen, 0),4263.57421875*ipitch
+ ao[158] oscil linseg(0.0178243199258,ilen, 0),3477.61230469*ipitch
+ ao[159] oscil linseg(0.0228707418404,ilen, 0),6912.15820312*ipitch
+ ao[160] oscil linseg(0.0206780373809,ilen, 0),3865.20996094*ipitch
+ ao[161] oscil linseg(0.0245943761808,ilen, 0),3596.04492188*ipitch
+ ao[162] oscil linseg(0.0252561486755,ilen, 0),3585.27832031*ipitch
+ ao[163] oscil linseg(0.0198086431044,ilen, 0),4726.53808594*ipitch
+ ao[164] oscil linseg(0.0436825336258,ilen, 0),193.798828125*ipitch
+ ao[165] oscil linseg(0.029314562715,ilen, 0),6836.79199219*ipitch
+ ao[166] oscil linseg(0.0627117148075,ilen, 0),5792.43164062*ipitch
+ ao[167] oscil linseg(0.0401688505577,ilen, 0),6276.92871094*ipitch
+ ao[168] oscil linseg(0.0207819445785,ilen, 0),5254.1015625*ipitch
+ ao[169] oscil linseg(0.0230833903696,ilen, 0),226.098632812*ipitch
+ ao[170] oscil linseg(0.0205660646014,ilen, 0),7321.2890625*ipitch
+ ao[171] oscil linseg(0.0195294599873,ilen, 0),4069.77539062*ipitch
+ ao[172] oscil linseg(0.0184385823647,ilen, 0),5092.60253906*ipitch
+ ao[173] oscil linseg(0.0340689016321,ilen, 0),3789.84375*ipitch
+ ao[174] oscil linseg(0.0195931960491,ilen, 0),5641.69921875*ipitch
+ ao[175] oscil linseg(0.0218807751789,ilen, 0),5124.90234375*ipitch
+ ao[176] oscil linseg(0.0480862376531,ilen, 0),5081.8359375*ipitch
+ ao[177] oscil linseg(0.0217184092747,ilen, 0),4242.04101562*ipitch
+ ao[178] oscil linseg(0.0904292099586,ilen, 0),258.3984375*ipitch
+ ao[179] oscil linseg(0.0203112303089,ilen, 0),3919.04296875*ipitch
+ ao[180] oscil linseg(0.157523429636,ilen, 0),247.631835938*ipitch
+ ao[181] oscil linseg(0.0239254092146,ilen, 0),4457.37304688*ipitch
+ ao[182] oscil linseg(0.0197231518279,ilen, 0),3994.40917969*ipitch
+ ao[183] oscil linseg(0.019245468363,ilen, 0),6050.83007812*ipitch
+ ao[184] oscil linseg(0.0331496627609,ilen, 0),7655.05371094*ipitch
+ ao[185] oscil linseg(0.0268933526405,ilen, 0),2648.58398438*ipitch
+ ao[186] oscil linseg(0.0251079784561,ilen, 0),452.197265625*ipitch
+ ao[187] oscil linseg(0.0362861105368,ilen, 0),4371.24023438*ipitch
+ ao[188] oscil linseg(0.0407981400396,ilen, 0),4446.60644531*ipitch
+ ao[189] oscil linseg(0.0248780408578,ilen, 0),2594.75097656*ipitch
+ ao[190] oscil linseg(0.0204840890321,ilen, 0),5415.60058594*ipitch
+ ao[191] oscil linseg(0.0297457893394,ilen, 0),312.231445312*ipitch
+ ao[192] oscil linseg(0.0608713620727,ilen, 0),366.064453125*ipitch
+ ao[193] oscil linseg(0.0267674184049,ilen, 0),3520.67871094*ipitch
+ ao[194] oscil linseg(0.0523770636586,ilen, 0),5200.26855469*ipitch
+ ao[195] oscil linseg(0.0187496536313,ilen, 0),3639.11132812*ipitch
+ ao[196] oscil linseg(0.0215001020646,ilen, 0),5770.8984375*ipitch
+ ao[197] oscil linseg(0.0304004139281,ilen, 0),3079.24804688*ipitch
+ ao[198] oscil linseg(0.0589216870188,ilen, 0),129.19921875*ipitch
+ ao[199] oscil linseg(0.0218903360585,ilen, 0),9506.90917969*ipitch
+ ao[200] oscil linseg(0.0393620744783,ilen, 0),5447.90039062*ipitch
+ ao[201] oscil linseg(0.0276663638898,ilen, 0),6061.59667969*ipitch
+ ao[202] oscil linseg(0.0938280514958,ilen, 0),376.831054688*ipitch
+ ao[203] oscil linseg(0.0189832103954,ilen, 0),3671.41113281*ipitch
+ ao[204] oscil linseg(0.0183208947159,ilen, 0),8451.78222656*ipitch
+ ao[205] oscil linseg(0.0241595131229,ilen, 0),6589.16015625*ipitch
+ ao[206] oscil linseg(0.0282636935114,ilen, 0),5749.36523438*ipitch
+ ao[207] oscil linseg(0.029299710833,ilen, 0),5867.79785156*ipitch
+ ao[208] oscil linseg(0.0393880185696,ilen, 0),5189.50195312*ipitch
+ ao[209] oscil linseg(0.030617823896,ilen, 0),8139.55078125*ipitch
+ ao[210] oscil linseg(0.113553319613,ilen, 0),398.364257812*ipitch
+ ao[211] oscil linseg(0.0214341444181,ilen, 0),6922.92480469*ipitch
+ ao[212] oscil linseg(0.0288698381448,ilen, 0),5673.99902344*ipitch
+ ao[213] oscil linseg(0.029583479587,ilen, 0),6373.828125*ipitch
+ ao[214] oscil linseg(0.0311395821121,ilen, 0),5544.79980469*ipitch
+ ao[215] oscil linseg(0.362974957824,ilen, 0),172.265625*ipitch
+ ao[216] oscil linseg(0.0197335484318,ilen, 0),8441.015625*ipitch
+ ao[217] oscil linseg(0.0241013475276,ilen, 0),8527.1484375*ipitch
+ ao[218] oscil linseg(0.0497960294492,ilen, 0),3380.71289062*ipitch
+ ao[219] oscil linseg(0.0184337342328,ilen, 0),2928.515625*ipitch
+ ao[220] oscil linseg(0.0218672213951,ilen, 0),8537.91503906*ipitch
+ ao[221] oscil linseg(0.0256893675701,ilen, 0),204.565429688*ipitch
+ ao[222] oscil linseg(0.0244861515314,ilen, 0),6567.62695312*ipitch
+ ao[223] oscil linseg(0.0367437959413,ilen, 0),484.497070312*ipitch
+ ao[224] oscil linseg(0.029611095538,ilen, 0),3413.01269531*ipitch
+ ao[225] oscil linseg(0.0337367106919,ilen, 0),3563.74511719*ipitch
+ ao[226] oscil linseg(0.03031611443,ilen, 0),6492.26074219*ipitch
+ ao[227] oscil linseg(0.0242389841672,ilen, 0),9108.54492188*ipitch
+ ao[228] oscil linseg(0.0188060722517,ilen, 0),4209.74121094*ipitch
+ ao[229] oscil linseg(0.0461808005353,ilen, 0),215.33203125*ipitch
+ ao[230] oscil linseg(0.0542027285351,ilen, 0),4812.67089844*ipitch
+ ao[231] oscil linseg(0.0196400374379,ilen, 0),9237.74414062*ipitch
+ ao[232] oscil linseg(0.0271651964235,ilen, 0),4252.80761719*ipitch
+ ao[233] oscil linseg(0.0210497318326,ilen, 0),678.295898438*ipitch
+ ao[234] oscil linseg(0.0223344785144,ilen, 0),3617.578125*ipitch
+ ao[235] oscil linseg(0.0315532812138,ilen, 0),7375.12207031*ipitch
+ ao[236] oscil linseg(0.0400231867922,ilen, 0),4801.90429688*ipitch
+ ao[237] oscil linseg(0.0197841277744,ilen, 0),3057.71484375*ipitch
+ ao[238] oscil linseg(0.0275392391425,ilen, 0),5264.86816406*ipitch
+ ao[239] oscil linseg(0.0468787737644,ilen, 0),5781.66503906*ipitch
+ ao[240] oscil linseg(0.027026054674,ilen, 0),7385.88867188*ipitch
+ ao[241] oscil linseg(0.0216249890355,ilen, 0),2497.8515625*ipitch
+ ao[242] oscil linseg(0.0248273063775,ilen, 0),4769.60449219*ipitch
+ ao[243] oscil linseg(0.0263085964636,ilen, 0),6761.42578125*ipitch
+ ao[244] oscil linseg(0.0231038918335,ilen, 0),2896.21582031*ipitch
+ ao[245] oscil linseg(0.0424332148873,ilen, 0),6266.16210938*ipitch
+ ao[246] oscil linseg(0.13736335311,ilen, 0),183.032226562*ipitch
+ ao[247] oscil linseg(0.0281326383826,ilen, 0),3262.28027344*ipitch
+ ao[248] oscil linseg(0.0288147924227,ilen, 0),6750.65917969*ipitch
+ ao[249] oscil linseg(0.132247626404,ilen, 0),387.59765625*ipitch
+ ao[250] oscil linseg(0.0278524775146,ilen, 0),6190.79589844*ipitch
+ ao[251] oscil linseg(0.0220096159961,ilen, 0),10669.7021484*ipitch
+ ao[252] oscil linseg(0.0187526638384,ilen, 0),549.096679688*ipitch
+ ao[253] oscil linseg(0.0209369029976,ilen, 0),1711.88964844*ipitch
+ ao[254] oscil linseg(0.0181602257441,ilen, 0),7235.15625*ipitch
+ ao[255] oscil linseg(0.0379563372059,ilen, 0),5071.06933594*ipitch
+ ao[256] oscil linseg(0.0574167307026,ilen, 0),290.698242188*ipitch
+ ao[257] oscil linseg(0.0227539258574,ilen, 0),6115.4296875*ipitch
+ ao[258] oscil linseg(0.022330092084,ilen, 0),4618.87207031*ipitch
+ ao[259] oscil linseg(0.0256630065971,ilen, 0),2573.21777344*ipitch
+ ao[260] oscil linseg(0.0257961368143,ilen, 0),6040.06347656*ipitch
+ ao[261] oscil linseg(0.036098734231,ilen, 0),7644.28710938*ipitch
+ ao[262] oscil linseg(0.0256870008524,ilen, 0),2347.11914062*ipitch
+ ao[263] oscil linseg(0.0285614985471,ilen, 0),4920.33691406*ipitch
+ ao[264] oscil linseg(0.0246086220738,ilen, 0),3951.34277344*ipitch
+ ao[265] oscil linseg(0.0210342122813,ilen, 0),8128.78417969*ipitch
+ xout sumarray(ao)
+endop \ No newline at end of file
diff --git a/site/udo/DEPRECATE_SORT_opcodes.udo b/site/udo/DEPRECATE_SORT_opcodes.udo
new file mode 100755
index 0000000..a942a3d
--- /dev/null
+++ b/site/udo/DEPRECATE_SORT_opcodes.udo
@@ -0,0 +1,211 @@
+; knearest nearest iarray, kvalue
+; get the nearest value to kvalue in the one-dimensional array iarray
+
+
+
+
+; aL, aR randpan asource
+; pan randomly (mono input)
+opcode randpan, aa, a
+ asource xin
+ ipan randfloat, 0, 1
+ xout asource * ipan, asource * (1 - ipan)
+endop
+
+
+; aL, aR randpan aL, aR
+; pan randomly (stereo input)
+opcode randpan, aa, aa
+ aL, aR xin
+ ipan randfloat, 0, 1
+ xout aL * ipan, aR * (1 - ipan)
+endop
+
+
+
+
+
+; Sfiltered[] directoryfiles Sdirectory, Sextension
+; get an array of files from Sdirectory with given extension Sextension (extension given without ".", and case insensitive)
+; does the same as csound's directory opcode but without false positives (ie, ".wav" would return ".wav.asd"
+opcode directoryfiles, S[], SS
+ Sdirectory, Sextension xin
+ Sextension strlower Sextension
+ Sfiles[] directory Sdirectory
+ Sfiltered[] init 1
+ index = 0
+ while (index < lenarray(Sfiles)) do
+ Sfile = Sfiles[index]
+ Sfileext fileextension Sfile
+ Sfileext strlower Sfileext
+ isame strcmp Sfileext, Sextension
+ if (isame == 0) then
+ if (index == 0) then
+ Sfiltered[index] = Sfile
+ else
+ Sfiltered[] arrayappend Sfiltered, Sfile
+ endif
+ endif
+ index += 1
+ od
+ xout Sfiltered
+endop
+
+
+; Selected randarrayext Sfiles[], Sext
+; get a random file from Sfiles[] where the extension is Sext
+; directory opcode does not do this correctly (would select file.wav.asd when ".wav" is supplied as extension)
+opcode randarrayext, S, S[]S
+ Sfiles[], Sext xin
+ Selected = "default"
+ ifindex = 0
+ while (ifindex < lenarray(Sfiles)) do
+ index random 0, lenarray(Sfiles) - 1
+ Sfile = Sfiles[index]
+ Sfileext fileextension Sfile
+ isame strcmp Sfileext, Sext
+ if (isame == 0) then
+ Selected = Sfile
+ goto return
+ endif
+ ifindex += 1
+ od
+return:
+ xout Selected
+endop
+
+
+; Spath randfile Spath, Sextension
+opcode randfile, S, SS
+ Sdirectory, Sextension xin
+ Sfiles[] directory Sdirectory
+ Spath randarrayext Sfiles, Sextension
+ xout Spath
+endop
+
+
+; aL, aR sndplay Spath, ipitch, ioffset=0
+; play a sound file with mono/stereo detection using pitch and optional offset
+opcode sndplay, aa, Sio
+ Spath, ipitch, ioffset xin
+ ichn filenchnls Spath
+ if (ichn == 1) then
+ aL diskin2 Spath, ipitch, ioffset
+ aR = aL
+ else
+ aL, aR diskin2 Spath, ipitch, ioffset
+ endif
+ xout aL, aR
+endop
+
+
+; aL, aR randplay Sbasepath, ipitch
+; play a random wav file from Sbasepath with pitch control and mono/stereo detection
+opcode randplay, aa, Si
+ Sbase, ipitch xin
+ Spath randfile Sbase, "wav"
+ aL, aR sndplay Spath, ipitch
+ xout aL, aR
+endop
+
+
+; ifn filetotable Spath, ichannel=0
+; read a sound file to a GEN01 table and return the ftable. global tracking of ftables so the same sound is not created twice
+; optional channel to read from (defaults to 0 = all channels)
+gisoundfiletablemax = 2048 ; max number of files that can be loaded to ftables
+gisoundfiletableindex = 0 ; using long variable names as they're global to reduce chance of a user collision
+gSsoundfiletables[] init gisoundfiletablemax ; maybe replace with arrayappend depending on performance
+opcode filetotable, i, So
+ Spath, ichannel xin
+ iftincrement = 20 ; ftables will start being created at this ftable number
+ ifn = 0
+ index = 0
+
+ ; check if the sound exists in a table already, if so return that f number
+ iarraymax = lenarray(gSsoundfiletables)
+ while (index < iarraymax) do
+ isame strcmp gSsoundfiletables[index], Spath
+ if (isame == 0) then
+ ifn = index + iftincrement
+ goto return
+ endif
+ index += 1
+ od
+
+ ; get file information
+ iseconds filelen Spath
+ isr filesr Spath
+ ibits filebit Spath ; just assuming 16 (4), maybe use this later if required
+ isize = round(iseconds * isr) - 1
+
+ ; create the GEN01 ftable
+ ifn = gisoundfiletableindex + iftincrement
+ ix ftgen ifn, 0, isize, 1, Spath, 0, 4, ichannel
+ gSsoundfiletables[gisoundfiletableindex] = Spath
+ gisoundfiletableindex += 1
+ goto return
+
+return:
+ xout ifn
+endop
+
+
+; isamples[], itimes[] loadallwavtotables Sfiles[], ichannel=0
+; load all wav files in Sfiles array to ftables, providing the ftable numbers in isamples[] and the file length in itimes[]
+; default channel=0, ie read all channels
+opcode filestotables, i[]i[], S[]o
+ Sfiles[], ichannel xin
+ ilen = lenarray(Sfiles)
+ isamples[] init lenarray(Sfiles)
+ itimes[] init lenarray(Sfiles)
+ index = 0
+ while (index < lenarray(Sfiles)) do
+ ifn filetotable Sfiles[index], ichannel
+ isamples[index] = ifn
+ ifilesr filesr Sfiles[index]
+ if (ichannel != 0) then
+ itimemul = 1
+ else
+ itimemul = 0.5
+ endif
+ itimes[index] = (ftlen(ifn) / ifilesr) * itimemul ; sr
+ index += 1
+ od
+ xout isamples, itimes
+endop
+
+
+; isamples[], itimes[] loadallwavtotables Spath, ichannel=0
+; load all wav files in Spath to ftables, providing the ftable numbers in isamples[] and the file length in itimes[]
+; default channel=0, ie read all channels
+opcode loadallwavtotables, i[]i[], So
+ Spath, ichannel xin
+ Sfiles[] directoryfiles Spath, "wav"
+ isamples[], itimes[] filestotables Sfiles, ichannel
+ xout isamples, itimes
+endop
+
+
+; aL, aR rndpanlpfplay iamp, ifn, iduration, kpitch, [ilpfmin=300], [ilpfmax=12000]
+; play a sound in ftable number ifn for duration iduraction with amp iamp and pitch kpitch
+; apply a random panning amount, and a random low pass filter constrained to within optional parameters ilpfmin and ilpfmax
+opcode rndpanlpfplay, aa, iiikjj
+ iamp, ifn, iduration, kpitch, ilpfmin, ilpfmax xin
+ if (ilpfmin == -1) then
+ ilpfmin = 300
+ endif
+
+ if (ilpfmax == -1) then
+ ilpfmax = 12000
+ endif
+
+ ain loscil iamp, kpitch, ifn, 1
+ ilpffreq random ilpfmin, ilpfmax
+ afilt butterlp ain, ilpffreq
+ kamp linseg 1, iduration * 0.95, 1, iduration * 0.05, 0
+ aout = afilt * kamp
+ aL, aR randpan aout
+ xout aL, aR
+endop
+
+
diff --git a/site/udo/_TESTS/feedback_test.csd b/site/udo/_TESTS/feedback_test.csd
new file mode 100755
index 0000000..2049acb
--- /dev/null
+++ b/site/udo/_TESTS/feedback_test.csd
@@ -0,0 +1,41 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+;-+rtmidi=alsa -Q hw:1 -M hw:1 -odac
+</CsOptions>
+<CsInstruments>
+sr = 48000
+ksmps= 1
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "feedback.udo"
+
+instr 2
+ kp1[] init 9
+ kp2[] init 9
+ kdx = 0
+ while (kdx < lenarray(kp1)) do
+ if (random:k(0, 1) > 0.999) then
+ kp1[kdx] random 0, 0.9
+ endif
+ if (random:k(0, 1) > 0.999) then
+ kp2[kdx] random 0, 0.9
+ endif
+ kdx += 1
+ od
+
+ ao fbk_mixer2 kp1, kp2
+ outs ao, ao
+endin
+
+
+
+</CsInstruments>
+<CsScore>
+i2 0 3600
+
+
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/udo/_TESTS/mixer_emulator.csd b/site/udo/_TESTS/mixer_emulator.csd
new file mode 100755
index 0000000..7f8fe3e
--- /dev/null
+++ b/site/udo/_TESTS/mixer_emulator.csd
@@ -0,0 +1,132 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac8
+;--env:INCDIR="D:/Documents/Csound/_UDO"
+--omacro:HOST=AUDIO
+;-m0
+</CsOptions>
+<CsInstruments>
+sr = 48000
+kr = 48000
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "feedback.udo"
+
+gimaxeq init 1.5
+gimaxsend init 1.5
+gimaxamp init 1.5
+
+
+opcode FLchannel, ik[], ii
+ ix, ichannumber xin
+ iwidth = 100
+ iy = -50
+ kp[] init 14
+ ih1 FLbox sprintf("Channel %d", ichannumber), 1, 2, 14, iwidth*2, 50, ix, iy+50
+ kp[0], ih2 FLbutton "Low Cut", 1, 0, 2, iwidth, 30, ix, iy+100, -1
+ kp[8], ihx FLbutton "CModel", 1, 0, 2, iwidth, 30, ix+100, iy+100, -1
+
+ kp[1], ih3 FLknob "High", 0, gimaxeq, 0, 1, -1, 70, ix+15, iy+130
+ kp[2], ih4 FLknob "Mid", 0, gimaxeq, 0, 1, -1, 70, ix+15, iy+215
+ kp[3], ih5 FLknob "Low", 0, gimaxeq, 0, 1, -1, 70, ix+15, iy+300
+
+ FLsetColor 0, 0, 128, ih3
+ FLsetColor 0, 0, 128, ih4
+ FLsetColor 0, 0, 128, ih5
+ FLsetVal_i gimaxeq*0.5, ih3
+ FLsetVal_i gimaxeq*0.5, ih4
+ FLsetVal_i gimaxeq*0.5, ih5
+
+ kp[4], ih6 FLknob "Aux1", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+130
+ kp[5], ih7 FLknob "Aux2", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+215
+ kp[6], ih8 FLknob "Aux3", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+300
+ kp[7], ih9 FLknob "Aux4", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+385
+
+ FLsetColor 128, 0, 0, ih6
+ FLsetColor 128, 0, 0, ih7
+ FLsetColor 128, 0, 0, ih8
+ FLsetColor 128, 0, 0, ih9
+
+
+ kp[8], ih10 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+130, -1
+ kp[9], ih11 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+215, -1
+ kp[10], ih12 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+300, -1
+ kp[11], ih13 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+385, -1
+
+ kp[12], ih14 FLslider "Gain", gimaxamp, 0, 0, 6, -1, 50, 200, ix+25, iy+385
+
+ kp[13], ih15 FLbutton "Mute", 1, 0, 2, 70, 25, ix+80, iy+560, -1
+ ix += 200
+
+
+ xout ix, kp
+endop
+
+instr controller
+ ix = 0
+ iy = 0
+ FLpanel "FBMix", 1024, 600
+ ix, gkc1[] FLchannel ix, 1
+ ix, gkc2[] FLchannel ix, 2
+ ix, gkc3[] FLchannel ix, 3
+ ix, gkc4[] FLchannel ix, 4
+ FLpanelEnd
+ FLrun
+
+ event_i "i", "mixer", 0, p3
+endin
+
+
+
+instr mixer
+ ain1 init 0
+ ain2 init 0
+ ain3 init 0
+ ain4 init 0
+
+ aout1 = (gkc1[13] == 0) ? fbk_channel(ain1, gkc1[0], gkc1[3], gkc1[2], gkc1[1], gkc1[8]) : 0
+ aout2 = (gkc2[13] == 0) ? fbk_channel(ain2, gkc2[0], gkc2[3], gkc2[2], gkc2[1], gkc2[8]) : 0
+ aout3 = (gkc3[13] == 0) ? fbk_channel(ain3, gkc3[0], gkc3[3], gkc3[2], gkc3[1], gkc3[8]) : 0
+ aout4 = (gkc4[13] == 0) ? fbk_channel(ain4, gkc4[0], gkc4[3], gkc4[2], gkc4[1], gkc4[8]) : 0
+ ain1 = 0
+ ain2 = 0
+ ain3 = 0
+ ain4 = 0
+
+ /* sends 1 */
+ ain1 = ain1 + ((gkc1[8] == 1) ? aout1*gkc1[4] : aout1*gkc1[4]*gkc1[12])
+ ain2 = ain2 + ((gkc1[9] == 1) ? aout1*gkc1[5] : aout1*gkc1[5]*gkc1[12])
+ ain3 = ain3 + ((gkc1[10] == 1) ? aout1*gkc1[6] : aout1*gkc1[6]*gkc1[12])
+ ain4 = ain4 + ((gkc1[11] == 1) ? aout1*gkc1[7] : aout1*gkc1[7]*gkc1[12])
+
+ /* sends 2 */
+ ain1 = ain1 + ((gkc2[8] == 1) ? aout2*gkc2[4] : aout1*gkc2[4]*gkc2[12])
+ ain2 = ain2 + ((gkc2[9] == 1) ? aout2*gkc2[5] : aout1*gkc2[5]*gkc2[12])
+ ain3 = ain3 + ((gkc2[10] == 1) ? aout2*gkc2[6] : aout1*gkc2[6]*gkc2[12])
+ ain4 = ain4 + ((gkc2[11] == 1) ? aout2*gkc2[7] : aout1*gkc2[7]*gkc2[12])
+
+ /* sends 3 */
+ ain1 = ain1 + ((gkc3[8] == 1) ? aout3*gkc3[4] : aout1*gkc3[4]*gkc3[12])
+ ain2 = ain2 + ((gkc3[9] == 1) ? aout3*gkc3[5] : aout1*gkc3[5]*gkc3[12])
+ ain3 = ain3 + ((gkc3[10] == 1) ? aout3*gkc3[6] : aout1*gkc3[6]*gkc3[12])
+ ain4 = ain4 + ((gkc3[11] == 1) ? aout3*gkc3[7] : aout1*gkc3[7]*gkc3[12])
+
+ /* sends 4 */
+ ain1 = ain1 + ((gkc4[8] == 1) ? aout4*gkc4[4] : aout1*gkc4[4]*gkc4[12])
+ ain2 = ain2 + ((gkc4[9] == 1) ? aout4*gkc4[5] : aout1*gkc4[5]*gkc4[12])
+ ain3 = ain3 + ((gkc4[10] == 1) ? aout4*gkc4[6] : aout1*gkc4[6]*gkc4[12])
+ ain4 = ain4 + ((gkc4[11] == 1) ? aout4*gkc4[7] : aout1*gkc4[7]*gkc4[12])
+
+
+ aout = (aout1*gkc1[12]) + (aout2*gkc2[12]) + (aout3*gkc3[12]) + (aout4*gkc4[12])
+ aout *= 0.25
+ outs aout, aout
+endin
+
+</CsInstruments>
+<CsScore>
+i"controller" 0 3600
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/udo/_TESTS/mixer_emulator_1604a.csd b/site/udo/_TESTS/mixer_emulator_1604a.csd
new file mode 100755
index 0000000..03ebeed
--- /dev/null
+++ b/site/udo/_TESTS/mixer_emulator_1604a.csd
@@ -0,0 +1,144 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+;--env:INCDIR="D:/Documents/Csound/_UDO"
+--omacro:HOST=AUDIO
+;-m0
+</CsOptions>
+<CsInstruments>
+sr = 48000
+ksmps = 8
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "feedback.udo"
+
+gimaxeq init 2
+gimaxsend init 2
+gimaxamp init 1.5
+
+
+opcode FLchannel, ik[], ii
+ ix, ichannumber xin
+ iwidth = 100
+ iy = -50
+ kp[] init 14
+ ih1 FLbox sprintf("Channel %d", ichannumber), 1, 2, 14, iwidth*2, 50, ix, iy+50
+ kp[0], ih2 FLbutton "Low Cut", 1, 0, 2, iwidth, 30, ix, iy+100, -1
+ kp[8], ihx FLbutton "CModel", 1, 0, 2, iwidth, 30, ix+100, iy+100, -1
+
+ kp[1], ih3 FLknob "High", 0, gimaxeq, 0, 1, -1, 70, ix+15, iy+130
+ kp[2], ih4 FLknob "Mid", 0, gimaxeq, 0, 1, -1, 70, ix+15, iy+215
+ kp[3], ih5 FLknob "Low", 0, gimaxeq, 0, 1, -1, 70, ix+15, iy+300
+
+ FLsetColor 0, 0, 128, ih3
+ FLsetColor 0, 0, 128, ih4
+ FLsetColor 0, 0, 128, ih5
+ FLsetVal_i gimaxeq*0.5, ih3
+ FLsetVal_i gimaxeq*0.5, ih4
+ FLsetVal_i gimaxeq*0.5, ih5
+
+ kp[4], ih6 FLknob "Aux1", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+130
+ kp[5], ih7 FLknob "Aux2", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+215
+ ;kp[6], ih8 FLknob "Aux3", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+300
+ ;kp[7], ih9 FLknob "Aux4", 0, gimaxsend, 0, 1, -1, 70, ix+85, iy+385
+
+ FLsetColor 128, 0, 0, ih6
+ FLsetColor 128, 0, 0, ih7
+ ;FLsetColor 128, 0, 0, ih8
+ ;FLsetColor 128, 0, 0, ih9
+
+
+
+ kp[8], ih10 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+130, -1
+ kp[9], ih11 FLbutton "CModel", 1, 0, 2, 45, 70, ix+155, iy+215, -1
+ ;kp[10], ih12 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+300, -1
+ ;kp[11], ih13 FLbutton "Pre", 1, 0, 2, 45, 70, ix+155, iy+385, -1
+
+ kp[12], ih14 FLslider "Gain", gimaxamp, 0, 0, 6, -1, 50, 200, ix+25, iy+385
+
+ kp[13], ih15 FLbutton "Mute", 1, 0, 2, 70, 25, ix+80, iy+560, -1
+ ix += 200
+
+
+ xout ix, kp
+endop
+
+instr controller
+ ix = 0
+ iy = 0
+ FLpanel "FBMix", 1024, 600
+ ix, gkc1[] FLchannel ix, 1
+ ix, gkc2[] FLchannel ix, 2
+ ix, gkc3[] FLchannel ix, 3
+ ix, gkc4[] FLchannel ix, 4
+ FLpanelEnd
+ FLrun
+
+ event_i "i", "mixer", 0, p3
+endin
+
+
+
+instr mixer
+ icrosstalk[] fillarray 0.0001, 0.001
+ ain1 init 0
+ ain2 init 0
+ ain3 init 0
+ ain4 init 0
+
+ aout1 = fbk_channel(ain1, gkc1[0], gkc1[3], gkc1[2], gkc1[1], gkc1[9])
+ aout2 = fbk_channel(ain2, gkc2[0], gkc2[3], gkc2[2], gkc2[1], gkc2[9])
+ aout3 = fbk_channel(ain3, gkc3[0], gkc3[3], gkc3[2], gkc3[1], gkc3[9])
+ aout4 = fbk_channel(ain4, gkc4[0], gkc4[3], gkc4[2], gkc4[1], gkc4[9])
+ ain1 = 0
+ ain2 = 0
+ ain3 = 0
+ ain4 = 0
+
+ /* crosstalk */
+ ain1 += ain2 * random:k(icrosstalk[0], icrosstalk[1])
+ ain2 += (ain1 * random:k(icrosstalk[0], icrosstalk[1])) + (ain3 * random:k(icrosstalk[0], icrosstalk[1]))
+ ain3 += (ain2 * random:k(icrosstalk[0], icrosstalk[1])) + (ain4 * random:k(icrosstalk[0], icrosstalk[1]))
+ ain4 += ain3 * random:k(icrosstalk[0], icrosstalk[1])
+
+ /* sends chan 1 */
+ ain1 = ain1 + ((gkc1[8] == 1) ? aout1*gkc1[4] : aout1*gkc1[4]*gkc1[12])
+ ain2 = ain2 + aout1*gkc1[5]*gkc1[12]
+ if (gkc1[13] == 1) then
+ ain3 = ain3 + aout1
+ aout1 = 0
+ endif
+
+
+ /* sends chan 2 */
+ ain1 = ain1 + ((gkc2[8] == 1) ? aout2*gkc2[4] : aout2*gkc2[4]*gkc2[12])
+ ain2 = ain2 + aout2*gkc2[5]*gkc2[12]
+ if (gkc2[13] == 1) then
+ ain3 = ain3 + aout2
+ aout2 = 0
+ endif
+
+
+ /* sends chan 3 */
+ ain1 = ain1 + ((gkc3[8] == 1) ? aout3*gkc3[4] : aout3*gkc3[4]*gkc3[12])
+ ain2 = ain2 + aout3*gkc3[5]*gkc3[12]
+ ; ...
+
+ /* sends chan 4 */
+ ain1 = ain1 + ((gkc4[8] == 1) ? aout4*gkc4[4] : aout4*gkc4[4]*gkc4[12])
+ ain2 = ain2 + aout4*gkc4[5]*gkc4[12]
+ ; ...
+
+
+ aout = (aout1*gkc1[12]) + (aout2*gkc2[12]) + (aout3*gkc3[12]) + (aout4*gkc4[12])
+ aout *= 0.25
+ outs aout, aout
+endin
+
+</CsInstruments>
+<CsScore>
+i"controller" 0 3600
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/udo/__config__.dist.udo b/site/udo/__config__.dist.udo
new file mode 100755
index 0000000..6acbea9
--- /dev/null
+++ b/site/udo/__config__.dist.udo
@@ -0,0 +1,44 @@
+#ifndef UDO_CONFIG
+#define UDO_CONFIG ##
+/*
+ SONICS config
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022, 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+; database: allow macro overrides from command line or pre-include etc
+#ifndef PGDB_HOST
+#define PGDB_HOST ##
+#endif
+
+#ifndef PGDB_NAME
+#define PGDB_NAME ##
+#endif
+
+#ifndef PGDB_USER
+#define PGDB_USER ##
+#endif
+
+#ifndef PGDB_PASSWORD
+#define PGDB_PASSWORD ##
+#endif
+
+
+; local AudioOrganiser database
+#ifndef AODB_PATH_WIN
+#define AODB_PATH_WIN ##
+#endif
+
+#ifndef AODB_PATH_LINUX
+#define AODB_PATH_LINUX ##
+#endif
+
+
+; FFT defaults
+giFFTsize = 1024
+giFFTwinFactor = 4
+
+#end
diff --git a/site/udo/addsub.udo b/site/udo/addsub.udo
new file mode 100755
index 0000000..b95ef0c
--- /dev/null
+++ b/site/udo/addsub.udo
@@ -0,0 +1,170 @@
+#ifndef UDO_ADDSUB
+#define UDO_ADDSUB ##
+/*
+ Stochastic additive and subtractive instruments
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ Subtractive synthesiser
+ Operating between ifreq and ifreqmax, this recurses with a frequency step of *ifreqstepmult*ifreqstepmultrand and amplitude multiplier iampmult with each step
+
+ aout as_subtractive asrc, ifreq, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp, iampmult
+
+ aout output audio
+ asrc source sound, can be noise or anything less
+ ifreq minimum frequency
+ ifreqmax maximum frequency
+ ifreqstepmult frequency multiplier for each step
+ ifreqstepmultrand frequency multiplier random for each step
+ iamp amplitude
+ iampmult amplitude multiplier random for each step
+*/
+opcode as_subtractive, a, aiiiiii
+ asrc, ifreq, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp, iampmult xin
+ if (random(0, 1) >= 0.5) then
+ afreqmult linseg random(0.9, 1.1), p3*0.1, random(0.9, 1.1), p3*0.1, \
+ random(0.9, 1.1), p3*0.1, random(0.9, 1.1), p3*0.1, \
+ random(0.9, 1.1), p3*0.1, random(0.9, 1.1), p3*0.1, \
+ random(0.9, 1.1), p3*0.1, random(0.9, 1.1), p3*0.1, \
+ random(0.9, 1.1), p3*0.1, random(0.9, 1.1)
+ else
+ afreqmult init 1
+ endif
+
+ if (random(0, 1) >= 0.5) then
+ istartmult = random(0.9, 1.1)
+ iendmult = random(0.9, 1.1)
+ if (random(0, 1) >= 0.5) then
+ afreqmult2 linseg istartmult, p3, iendmult
+ else
+ afreqmult2 expseg istartmult, p3, iendmult
+ endif
+ afreqmult *= afreqmult2
+ endif
+
+ aamp linseg random(0.1, 0.9), p3*0.1, random(0.1, 0.9), p3*0.1, \
+ random(0.1, 0.9), p3*0.1, random(0.1, 0.9), p3*0.1, \
+ random(0.1, 0.9), p3*0.1, random(0.1, 0.9), p3*0.1, \
+ random(0.1, 0.9), p3*0.1, random(0.1, 0.9), p3*0.1, \
+ random(0.1, 0.9), p3*0.1, random(0.1, 0.9)
+
+ if (random(0, 1) >= 0.5) then
+ if (random(0, 1) >= 0.5) then
+ if (random(0, 1) >= 0.5) then
+ aamp2 linseg 1, p3, 0
+ else
+ aamp2 expseg 1, p3, 0.00001
+ endif
+ else
+ if (random(0, 1) >= 0.5) then
+ aamp2 linseg 0, p3, 1
+ else
+ aamp2 expseg 0.00001, p3, 1
+ endif
+ endif
+ aamp *= aamp2
+ endif
+
+ abw linseg random(1, 10), p3*0.1, random(1, 10), p3*0.1, \
+ random(1, 10), p3*0.1, random(1, 10), p3*0.1, \
+ random(1, 10), p3*0.1, random(1, 10), p3*0.1, \
+ random(1, 10), p3*0.1, random(1, 10), p3*0.1, \
+ random(1, 10), p3*0.1, random(1, 10)
+
+ amin init 50
+ amax init 22000
+ afreq = max:a(min:a(ifreq * afreqmult, amax), amin)
+
+ asub butterbp asrc, afreq, abw
+ asub butterbp asub, afreq, abw
+ asub balance asub, asrc
+ asub *= iamp * aamp
+
+ istep = ifreq * ifreqstepmult * random(1, ifreqstepmultrand)
+ if (istep <= ifreqmax) then
+ asubr as_subtractive asrc, istep, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp * iampmult, iampmult
+ asub += asubr
+ endif
+
+ xout asub
+endop
+
+
+/*
+ Additive synthesiser
+ Operating between ifreq and ifreqmax, this recurses with a frequency step of *ifreqstepmult*ifreqstepmultrand and amplitude multiplier iampmult with each step
+
+ aout as_additive ifreq, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp, iampmult [, index=0]
+
+ aout output audio
+ ifreq minimum frequency
+ ifreqmax maximum frequency
+ ifreqstepmult frequency multiplier for each step
+ ifreqstepmultrand frequency multiplier random for each step
+ iamp amplitude
+ iampmult amplitude multiplier random for each step
+ index internal recursion tracking
+*/
+opcode as_additive, a, iiiiiio
+ ifreq, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp, iampmult, index xin
+ if (random(0, 1) >= 0.5) then
+ kfreqmult linseg random(0.9, 1.1), p3*0.1, random(0.9, 1.1), p3*0.1, \
+ random(0.9, 1.1), p3*0.1, random(0.9, 1.1), p3*0.1, \
+ random(0.9, 1.1), p3*0.1, random(0.9, 1.1), p3*0.1, \
+ random(0.9, 1.1), p3*0.1, random(0.9, 1.1), p3*0.1, \
+ random(0.9, 1.1), p3*0.1, random(0.9, 1.1)
+ else
+ kfreqmult init 1
+ endif
+
+
+ kamp linseg random(0.1, 0.9), p3*0.1, random(0.1, 0.9), p3*0.1, \
+ random(0.1, 0.9), p3*0.1, random(0.1, 0.9), p3*0.1, \
+ random(0.1, 0.9), p3*0.1, random(0.1, 0.9), p3*0.1, \
+ random(0.1, 0.9), p3*0.1, random(0.1, 0.9), p3*0.1, \
+ random(0.1, 0.9), p3*0.1, random(0.1, 0.9)
+
+ if (random(0, 1) >= 0.5) then
+ if (random(0, 1) >= 0.5) then
+ if (random(0, 1) >= 0.5) then
+ kamp2 linseg 1, p3, 0
+ else
+ kamp2 expseg 1, p3, 0.00001
+ endif
+ else
+ if (random(0, 1) >= 0.5) then
+ kamp2 linseg 0, p3, 1
+ else
+ kamp2 expseg 0.00001, p3, 1
+ endif
+ endif
+ kamp *= kamp2
+ endif
+
+ if (random(0, 1) >= 0.5) then
+ istartmult = random(0.9, 1.1)
+ iendmult = random(0.9, 1.1)
+ if (random(0, 1) >= 0.5) then
+ kfreqmult2 linseg istartmult, p3, iendmult
+ else
+ kfreqmult2 expseg istartmult, p3, iendmult
+ endif
+ kfreqmult *= kfreqmult2
+ endif
+
+ aosc oscil iamp * kamp, ifreq * kfreqmult
+
+ istep = ifreq * ifreqstepmult * random(1, ifreqstepmultrand)
+ if (istep <= ifreqmax && index < 256) then ; 256 max recursion guard
+ aoscr as_additive istep, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp * iampmult, iampmult, index + 1
+ aosc += aoscr
+ endif
+ xout aosc
+endop
+
+#end
diff --git a/site/udo/aodb.udo b/site/udo/aodb.udo
new file mode 100755
index 0000000..c81c233
--- /dev/null
+++ b/site/udo/aodb.udo
@@ -0,0 +1,80 @@
+#ifndef UDO_AODB
+#define UDO_AODB ##
+/*
+ AudioOrganiser SQLite connection and tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "__config__.udo"
+#include "host_tools.udo"
+#define USING_AODB ##
+
+if (gihost_type == 0) then
+ giaodb dbconnect "sqlite", "$AODB_PATH_WIN"
+else
+ giaodb dbconnect "sqlite", "$AODB_PATH_LINUX"
+endif
+
+opcode _aodb_formatquery, S, Sip
+ Slike, irandomorder, inumber xin
+ xout sprintf("SELECT id, path FROM audiofile WHERE path LIKE 'd:\\Samples\\%%%s%%' %s LIMIT %d", Slike, (irandomorder == 1 ? "ORDER BY RANDOM()" : ""), inumber)
+endop
+
+
+opcode aodb_getsample, iS, Sp
+ Slike, irandomorder xin
+ Sres[][] dbarray giaodb, _aodb_formatquery(Slike, irandomorder)
+ id strtod Sres[0][0]
+ Spath = Sres[0][1]
+ xout id, Spath
+endop
+
+opcode aodb_getsample, S, Sp
+ Slike, irandomorder xin
+ id, Spath aodb_getsample Slike, irandomorder
+ xout Spath
+endop
+
+opcode aodb_loadsample, i, Spp
+ Slike, irandomorder, imono xin
+ Spath aodb_getsample Slike, irandomorder
+ ifn ftgen 0, 0, 0, 1, Spath, 0, 0, imono
+ xout ifn
+endop
+
+opcode aodb_diskinsample, aa, Sp
+ Slike, irandomorder xin
+ id, Spath aodb_getsample Slike, irandomorder
+ ichannels filenchnls Spath
+ if (ichannels == 1) then
+ aL diskin Spath, 1
+ aR = aL
+ else
+ aL, aR diskin Spath, 1
+ endif
+ xout aL, aR
+endop
+
+
+opcode aodb_getsamples, S[], Sip
+ Slike, inumber, irandomorder xin
+ Sout[] init inumber
+ Sres[][] dbarray giaodb, _aodb_formatquery(Slike, irandomorder, inumber)
+ index = 0
+ while (index < lenarray(Sres)) do
+ Sout[index] = Sres[index][1]
+ index += 1
+ od
+ xout Sout
+endop
+
+opcode aodb_getsamplebyid, S, i
+ id xin
+ Sres dbscalar giaodb, sprintf("SELECT path FROM audiofile WHERE id = %d", id)
+ xout Sres
+endop
+
+#end
diff --git a/site/udo/array_3d.udo b/site/udo/array_3d.udo
new file mode 100755
index 0000000..845ecb6
--- /dev/null
+++ b/site/udo/array_3d.udo
@@ -0,0 +1,132 @@
+/*
+ Virtual 3D array behaviour
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ Initialise 3D array
+
+ ifn arr3d_init idim1, idim2, idim3
+
+ ifn resulting ftable
+ idim1 size of dimension 1
+ idim2 size of dimension 2
+ idim3 size of dimension 3
+
+*/
+opcode arr3d_init, i, iii
+ idim1, idim2, idim3 xin
+ xout ftgen(0, 0, -((idim1 * idim2 * idim3) + 3), -2, idim1, idim2, idim3)
+endop
+
+/*
+ Obtain 1D index from 3D reference
+
+ index arr3d_index ifn, idx1, idx2, idx3
+
+ index resulting index
+ idx1 dimension 1 index
+ idx2 dimension 2 index
+ idx3 dimension 3 index
+*/
+opcode arr3d_index, i, iiii
+ ifn, idx1, idx2, idx3 xin
+ i1len tab_i 0, ifn
+ i2len tab_i 1, ifn
+ i3len tab_i 2, ifn
+ ;xout ((i1len * idx2 * idx3) + (i2len * idx3) + i3len) + 3
+ xout ((idx1 * i2len * i3len) + (idx2 * i3len) + idx3) + 3
+endop
+
+/*
+ Obtain 1D index from 3D reference
+
+ kindex arr3d_index ifn, kdx1, kdx2, kdx3
+
+ kindex resulting index
+ kdx1 dimension 1 index
+ kdx2 dimension 2 index
+ kdx3 dimension 3 index
+*/
+opcode arr3d_index, k, ikkk
+ ifn, kdx1, kdx2, kdx3 xin
+ k1len tab 0, ifn
+ k2len tab 1, ifn
+ k3len tab 2, ifn
+ ;xout ((k1len * kdx2 * kdx3) + (k2len * kdx3) + k3len) + 3
+ xout ((kdx1 * k2len * k3len) + (kdx2 * k3len) + kdx3) + 3
+endop
+
+
+
+/*
+ Set 3D array value
+
+ arr3d_set ifn, idx1, idx2, idx3, ivalue
+
+ ifn ftable created with arr3d_init
+ idx1 dimension 1 index
+ idx2 dimension 2 index
+ idx3 dimension 3 index
+ ivalue value to set
+*/
+opcode arr3d_set, 0, iiiii
+ ifn, idx1, idx2, idx3, ivalue xin
+ tabw_i ivalue, arr3d_index:i(ifn, idx1, idx2, idx3), ifn
+endop
+
+/*
+ Set 3D array value
+
+ arr3d_set ifn, kdx1, kdx2, kdx3, kvalue
+
+ ifn ftable created with arr3d_init
+ kdx1 dimension 1 index
+ kdx2 dimension 2 index
+ kdx3 dimension 3 index
+ kvalue value to set
+*/
+
+opcode arr3d_set, 0, ikkkk
+ ifn, kdx1, kdx2, kdx3, kvalue xin
+ tabw kvalue, arr3d_index:k(ifn, kdx1, kdx2, kdx3), ifn
+endop
+
+
+/*
+ Get 3D array value
+
+ ivalue arr3d_get ifn, idx1, idx2, idx3
+
+ ivalue returned value
+ ifn ftable created with arr3d_init
+ idx1 dimension 1 index
+ idx2 dimension 2 index
+ idx3 dimension 3 index
+*/
+opcode arr3d_get, i, iiii
+ ifn, idx1, idx2, idx3 xin
+ xout tab_i(arr3d_index:i(ifn, idx1, idx2, idx3), ifn)
+endop
+
+
+/*
+ Get 3D array value
+
+ kvalue arr3d_get ifn, kdx1, kdx2, kdx3
+
+ kvalue returned value
+ ifn ftable created with arr3d_init
+ kdx1 dimension 1 index
+ kdx2 dimension 2 index
+ kdx3 dimension 3 index
+*/
+opcode arr3d_get, k, ikkk
+ ifn, kdx1, kdx2, kdx3 xin
+ xout tab:k(arr3d_index:k(ifn, kdx1, kdx2, kdx3), ifn)
+endop
+
diff --git a/site/udo/array_tools.udo b/site/udo/array_tools.udo
new file mode 100755
index 0000000..7934614
--- /dev/null
+++ b/site/udo/array_tools.udo
@@ -0,0 +1,235 @@
+#ifndef UDO_ARRAYTOOLS
+#define UDO_ARRAYTOOLS ##
+/*
+ Array tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+giassocarrayvalues[] init 1
+gSassocarraykeys[] init 1
+
+
+/*
+ Get a random value from an array
+
+ ivalue arr_random iarray[]
+ kvalue arr_random iarray[]
+ Svalue arr_random Sarray[]
+
+ ivalue selected value
+ kvalue selected value
+ iarray[] array to evaluate
+ Sarray[] string array to evaluate
+*/
+opcode arr_random, i, i[]
+ iarray[] xin
+ ivalue = iarray[round(random(0, lenarray(iarray) - 1))]
+ xout ivalue
+endop
+
+opcode arr_random, S, S[]
+ Sarray[] xin
+ Svalue = Sarray[round(random(0, lenarray(Sarray) - 1))]
+ xout Svalue
+endop
+
+opcode arr_random, k, i[]
+ iarray[] xin
+ kvalue = iarray[round:k(random:k(0, lenarray(iarray) - 1))]
+ xout kvalue
+endop
+
+
+
+/*
+ Append to global associative array
+*/
+opcode asarr_append, 0, Si
+ Skey, ivalue xin
+ index = 0
+ ilen = lenarray(giassocarrayvalues)
+ Snewkeys[] init (ilen + 1)
+ inewvals[] init (ilen + 1)
+ while (index < ilen) do
+ Snewkeys[index] = gSassocarraykeys[index]
+ inewvals[index] = giassocarrayvalues[index]
+ index += 1
+ od
+ Snewkeys[index] = Skey
+ inewvals[index] = ivalue
+
+ giassocarrayvalues = inewvals
+ gSassocarraykeys = Snewkeys
+endop
+
+
+opcode asarr_get, i, S
+ Skey xin
+ index = 0
+ ivalue = -1
+ ilen = lenarray(giassocarrayvalues)
+ while (index < ilen) do
+ isame strcmp Skey, gSassocarraykeys[index]
+ if (isame == 0) then
+ ivalue = giassocarrayvalues[index]
+ goto output
+ endif
+ index += 1
+ od
+output:
+ xout ivalue
+endop
+
+
+
+/*
+ Get the nearest value to kvalue in the one-dimensional array iarray, which should be sorted
+
+ knearest nearest iarray, kvalue
+
+ knearest the nearest value found
+
+*/
+opcode arr_nearest, k, i[]k
+ iarray[], kvalue xin
+ knearest = 0
+ kindex = 0
+
+ while (kindex < lenarray(iarray)) do
+ ktest = iarray[kindex]
+ if (abs(kvalue - ktest) < abs(kvalue - knearest)) then
+ knearest = ktest
+ endif
+ kindex += 1
+ od
+ xout knearest
+endop
+
+
+
+; Snew[] arrayappend Sarray, Svalue
+; extend a S array with a given value
+opcode arr_append, S[], S[]S
+ Sarray[], Svalue xin
+ index = 0
+ ilen = lenarray(Sarray)
+ Snew[] init (ilen + 1)
+ while (index < ilen) do
+ Snew[index] = Sarray[index]
+ index += 1
+ od
+ Snew[index] = Svalue
+ xout Snew
+endop
+
+
+; inew[] arrayappend iarray, ivalue
+; extend an i array with a given value
+opcode arr_append, i[], i[]i
+ iarray[], ivalue xin
+ index = 0
+ ilen = lenarray(iarray)
+ inew[] init (ilen + 1)
+ while (index < ilen) do
+ inew[index] = iarray[index]
+ index += 1
+ od
+ inew[index] = ivalue
+ xout inew
+endop
+
+
+; array, asfloat
+opcode arr_serialise, S, i[]p
+ iarray[], iasfloat xin
+ ilen = lenarray(iarray)
+ index = 0
+ SprintfChar = (iasfloat == 1) ? "%f" : "%d"
+ Sout = "["
+ while (index < ilen) do
+ if (index != 0) then
+ Sout = strcat(Sout, ",")
+ endif
+ Sout = strcat(Sout, sprintf(SprintfChar, iarray[index]))
+ index += 1
+ od
+ Sout = strcat(Sout, "]")
+ xout Sout
+endop
+
+
+; array
+opcode arr_serialise, S, S[]
+ Sarray[] xin
+ ilen = lenarray(Sarray)
+ index = 0
+ Sout = "["
+ while (index < ilen) do
+ if (index != 0) then
+ Sout = strcat(Sout, ",")
+ endif
+ Sout = strcat(Sout, sprintf("\"%s\"", Sarray[index]))
+ index += 1
+ od
+ Sout = strcat(Sout, "]")
+ xout Sout
+endop
+
+
+opcode arr_unserialise, S[], S
+ Sdata xin
+ ilen = strlen(Sdata)
+ ichar = 0
+ inarray = 0
+ instring = 0
+ iitems = 0
+ while (ichar < ilen) do
+ Schar = strsub(Sdata, ichar, ichar + 1)
+ if (instring == 0 && strcmp(Schar, "[") == 0) then
+ inarray = 1
+ elseif (inarray == 1 && instring == 0 && strcmp(Schar, "]") == 0) then
+ inarray = 0
+ elseif (inarray == 1 && instring == 0 && strcmp(Schar, ",") == 0) then
+ iitems += 1
+ elseif (inarray == 1 && strcmp(Schar, "\"") == 0) then
+ instring = 1 - instring
+ endif
+ ichar += 1
+ od
+
+ Sarray[] init iitems + 1
+ ichar = 0
+ inarray = 0
+ instring = 0
+ istringstart = -1
+ index = 0
+ while (ichar < ilen) do
+ Schar = strsub(Sdata, ichar, ichar + 1)
+ if (instring == 0 && strcmp(Schar, "[") == 0) then
+ inarray = 1
+ elseif (inarray == 1 && instring == 0 && strcmp(Schar, "]") == 0) then
+ inarray = 0
+ elseif (inarray == 1 && instring == 0 && strcmp(Schar, ",") == 0) then
+ index += 1
+ elseif (inarray == 1 && strcmp(Schar, "\"") == 0) then
+ if (instring == 0) then
+ instring = 1
+ istringstart = ichar + 1
+ else
+ instring = 0
+ Sarray[index] = strsub(Sdata, istringstart, ichar)
+ istringstart = -1
+ endif
+ endif
+ ichar += 1
+ od
+
+ xout Sarray
+endop
+
+
+
+#end
diff --git a/site/udo/autorecord.udo b/site/udo/autorecord.udo
new file mode 100755
index 0000000..c9f65a2
--- /dev/null
+++ b/site/udo/autorecord.udo
@@ -0,0 +1,108 @@
+#ifndef UDO_AUTORECORD
+#define UDO_AUTORECORD ##
+/*
+ Automatic sound file recorder using the monitor opcode
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "host_tools.udo"
+
+#ifndef AUTORECORD_PATH
+if (gihost_type == 0) then
+ gSautorecordPath = "d:/temp"
+else
+ gSautorecordPath = "/tmp"
+endif
+#else
+gSautorecordPath = "$AUTORECORD_PATH"
+#end
+
+
+/*
+ Auto file recorder
+ usage - either in score:
+
+ i"udo_autorecord" 0 5
+
+ or in instr globals:
+
+ autorecord 5
+
+*/
+
+#define MONTHIF(MS'MI) #
+ isame strcmp "$MS", Smonth
+ if (isame == 0) then
+ Smonth = $MI
+ goto monthdone
+ endif
+#
+
+opcode autorecord, 0, aap
+ aL, aR, istereo xin
+ itim date
+ Stim dates itim
+ Sday strsub Stim, 8, 10
+ Shour strsub Stim, 11, 13
+ Smin strsub Stim, 14, 16
+ Ssec strsub Stim, 17, 19
+ Syear strsub Stim, 20, 24
+ Smonth strsub Stim, 4, 7
+
+ ichr strchar Sday
+ if (ichr == 32) then
+ Sday2 strsub Sday, 1, 2
+ Sday strcat "0", Sday2
+ endif
+
+ $MONTHIF(Jan'"01")
+ $MONTHIF(Feb'"02")
+ $MONTHIF(Mar'"03")
+ $MONTHIF(Apr'"04")
+ $MONTHIF(May'"05")
+ $MONTHIF(Jun'"06")
+ $MONTHIF(Jul'"07")
+ $MONTHIF(Aug'"08")
+ $MONTHIF(Sep'"09")
+ $MONTHIF(Oct'"10")
+ $MONTHIF(Nov'"11")
+ $MONTHIF(Dec'"12")
+
+monthdone:
+ /*
+ Smkdir = "mkdir -p "
+ if (gihost_type != 0) then
+ Smkdir = strcat(Smkdir, "-p ")
+ endif
+ ; make day dir
+ Sdir sprintf "/%s%s%s", Syear, Smonth, Sday
+ prints Sdir
+ Sdaydir strcat Sbasedir, Sdir
+ Scmd strcat Smkdir, Sdaydir
+ ires system_i 1, Scmd
+ Sfile sprintf "/%s%s%s.wav", Shour, Smin, Ssec
+ Spath strcat Sdaydir, Sfile
+ */
+ Spath sprintf "%s/%s-%s-%s.%s-%s-%s.wav", gSautorecordPath, Syear, Smonth, Sday, Shour, Smin, Ssec
+ prints sprintf("\n----------------------------------------------------------------------------------------------------------\n Autorecording to %s\n----------------------------------------------------------------------------------------------------------\n", Spath)
+ if (istereo == 1) then
+ fout Spath, 14, aL, aR
+ else
+ fout Spath, 14, aL
+ endif
+endop
+
+opcode autorecord, 0, a
+ ain xin
+ autorecord ain, ain, 0
+endop
+
+instr autorecord
+ aL, aR monitor
+ autorecord aL, aR
+endin
+
+#end \ No newline at end of file
diff --git a/site/udo/bpmdetect.udo b/site/udo/bpmdetect.udo
new file mode 100755
index 0000000..6eb0f60
--- /dev/null
+++ b/site/udo/bpmdetect.udo
@@ -0,0 +1,57 @@
+#ifndef UDO_BPMDETECT
+#define UDO_BPMDETECT ##
+
+/*
+ BPM detection from trigger
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ Detect a BPM given a stream of pulses
+
+ kdone, kbpm bpmdetect kpulse [, imaxpulses, imintime]
+
+ kdone outputs 1 when a new BPM has been ascertained
+ kbpm the detected BPM
+ kpulse trigger input
+ imaxpulses number of pulses to consider: will output BPM after this many
+ imintime minimum time between beats to normalise signal
+*/
+opcode bpmdetect, kk, kjj
+ kpulse, imaxpulses, imintime xin
+ imax = (imaxpulses == -1) ? 4 : imaxpulses
+ imintime = (imintime == -1) ? 0.2 : imintime
+ kcycle init 0
+ ktimesum init 0
+ ktime timeinsts
+ klasttime init 0
+ kbpm init 0
+ kdone init 0
+ if (kpulse == 1 && klasttime != 0) then
+ kelapsed = ktime - klasttime
+ if (kelapsed > imintime) then
+ ktimesum += kelapsed
+ klasttime = ktime
+ kcycle += 1
+ endif
+ elseif (klasttime == 0) then
+ klasttime = ktime
+ endif
+
+ if (kcycle >= imax) then
+ kcycle = 0
+ kbpm = 60 / (ktimesum / imax)
+ ktimesum = 0
+ kdone = 1
+ else
+ kdone = 0
+ endif
+ xout kdone, kbpm
+endop
+
+#end
+
diff --git a/site/udo/bsamp.udo b/site/udo/bsamp.udo
new file mode 100755
index 0000000..a31cede
--- /dev/null
+++ b/site/udo/bsamp.udo
@@ -0,0 +1,206 @@
+#ifndef UDO_BSAMP
+#define UDO_BSAMP ##
+/*
+ Live buffer sampling and glitch out playback
+
+ This file is part of the SONICS UDO collection by Richard Knight 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+#include "bussing.udo"
+#include "tab2wav.udo"
+
+#ifndef BSAMP_BUFFERNUM
+#define BSAMP_BUFFERNUM #8#
+#end
+
+#ifndef BSAMP_CHANNELS
+#define BSAMP_CHANNELS #1#
+#end
+
+#ifndef BSAMP_BUFFERLENGTH
+#define BSAMP_BUFFERLENGTH #8#
+#end
+
+#ifndef BSAMP_IOPROCRATE
+#define BSAMP_IOPROCRATE #10#
+#end
+
+#ifndef BSAMP_IOBLOCKSIZE
+#define BSAMP_IOBLOCKSIZE #2048#
+#end
+
+
+gibsamp_buffernum = $BSAMP_BUFFERNUM
+gibsamp_channels = $BSAMP_CHANNELS
+gibsamp_buffers[][] init gibsamp_buffernum, gibsamp_channels
+gibsamp_bufferused[] init gibsamp_buffernum
+
+
+isize = sr * $BSAMP_BUFFERLENGTH
+index = 0
+while (index < gibsamp_buffernum) do
+ indexchan = 0
+ while (indexchan < gibsamp_channels) do
+ gibsamp_buffers[index][indexchan] = ftgen(0, 0, isize, 2, 0)
+ gibsamp_bufferused[index] = isize
+ indexchan += 1
+ od
+ index += 1
+od
+
+instr _bsamp_setbufferusedsize
+ ibufferindex = p4
+ ilens = p5
+ gibsamp_bufferused[ibufferindex] = round(ilens * sr)
+ turnoff
+endin
+
+
+opcode bsamp_save, k, iSjj
+ ibufferindex, Spath, iprocrate, iblocksize xin
+
+ if (gibsamp_channels == 2) then
+ SpathL = sprintf("%s.L", Spath)
+ SpathR = sprintf("%s.R", Spath)
+ else
+ SpathL = Spath
+ SpathR = Spath
+ endif
+
+ kdoneL tab2wav gibsamp_buffers[ibufferindex][0], SpathL, gibsamp_bufferused[ibufferindex], $BSAMP_IOPROCRATE, $BSAMP_IOBLOCKSIZE
+ if (gibsamp_channels == 2) then
+ kdoneR tab2wav gibsamp_buffers[ibufferindex][1], SpathR, gibsamp_bufferused[ibufferindex], $BSAMP_IOPROCRATE, $BSAMP_IOBLOCKSIZE
+ else
+ kdoneR init 1
+ endif
+
+ xout (kdoneL & kdoneR)
+endop
+
+
+opcode bsamp_load, k, iSjj
+ ibufferindex, Spath, iprocrate, iblocksize xin
+ SpathR = sprintf("%s.R", Spath)
+ if (filevalid(SpathR) == 1) then
+ SpathL = sprintf("%s.L", Spath)
+ else
+ SpathL = Spath
+ SpathR = Spath
+ endif
+
+ gibsamp_bufferused[ibufferindex] = min(round(filelen(SpathL) * sr), ftlen(gibsamp_buffers[ibufferindex][0]))
+
+ kdoneL wav2tab SpathL, gibsamp_buffers[ibufferindex][0], 0, $BSAMP_IOPROCRATE, $BSAMP_IOBLOCKSIZE
+ if (gibsamp_channels == 2) then
+ kdoneR wav2tab SpathR, gibsamp_buffers[ibufferindex][1], 1, $BSAMP_IOPROCRATE, $BSAMP_IOBLOCKSIZE
+ else
+ kdoneR init 1
+ endif
+
+ xout (kdoneL & kdoneR)
+endop
+
+
+instr bsamp_record
+ ibufferindex = p4
+ Sbus = strget(p5)
+
+
+ ifnL = gibsamp_buffers[ibufferindex][0]
+ if (gibsamp_channels == 2) then
+ ifnR = gibsamp_buffers[ibufferindex][1]
+ else
+ ifnR = -1
+ endif
+
+ ilen = ftlen(ifnL)
+ apos lphasor 1
+
+ aL, aR bus_tap Sbus
+
+ tablew aL, apos, ifnL, 0, 0, 1
+ if (gibsamp_channels == 2) then
+ tablew aR, apos, ifnR, 0, 0, 1
+ endif
+
+ ktimes timeinsts
+
+ kreleasing init 0
+ if (release:k() == 1 && kreleasing == 0) then
+ kreleasing = 1
+ if (ktimes > $BSAMP_BUFFERLENGTH) then
+ ktimes = ktimes % $BSAMP_BUFFERLENGTH
+ if (ktimes == 0) then
+ ktimes = $BSAMP_BUFFERLENGTH
+ endif
+ endif
+ schedulek("_bsamp_setbufferusedsize", 0, 1, ibufferindex, ktimes)
+ endif
+endin
+
+
+opcode bsamp_clear, 0, i
+ ibufferindex xin
+ gibsamp_bufferused[ibufferindex] = 0
+ ftset gibsamp_buffers[ibufferindex][0], 0
+ if (gibsamp_channels == 2) then
+ ftset gibsamp_buffers[ibufferindex][1], 0
+ endif
+endop
+
+
+opcode bsamp_play, aa, ikkOo
+ ibufferindex, kreadstart, ktriglen, kreverse, iratiotimes xin
+
+ ifnL = gibsamp_buffers[ibufferindex][0]
+ if (gibsamp_channels == 2) then
+ ifnR = gibsamp_buffers[ibufferindex][1]
+ else
+ ifnR = -1
+ endif
+
+ ilen = gibsamp_bufferused[ibufferindex] ; ftlen(ifn)
+ ilens = ilen / sr
+
+
+ areadstart = upsamp(kreadstart)
+ if (iratiotimes == 0) then
+ areadstart = areadstart / ilens
+ else
+ ktriglen *= ilens
+ endif
+
+ klenchanger metro 1 / ktriglen
+ async upsamp klenchanger
+
+ irate = (1 / ((ilen) / sr))
+ apos, a_ syncphasor irate, async
+
+ ;aamp triglinseg klenchanger, 0, 0.001, 1, 3600, 1
+ ;kamp loopseg 0.01, klenchanger, 0, 0, 0.01, 1, 3600, 1
+ ;aamp = upsamp(kamp)
+ aamp init 1
+
+ apos += areadstart
+ apos *= ilen
+
+ if (kreverse == 1) then
+ apos = ilen - apos
+ endif
+
+ aL tablei apos, ifnL, 0, 0, 1
+ aL *= aamp
+ if (gibsamp_channels == 2) then
+ aR tablei apos, ifnR, 0, 0, 1
+ aR *= aamp
+ else
+ aR = aL
+ endif
+
+ xout aL, aR
+endop
+
+#end
diff --git a/site/udo/bussing.udo b/site/udo/bussing.udo
new file mode 100755
index 0000000..7ac40b8
--- /dev/null
+++ b/site/udo/bussing.udo
@@ -0,0 +1,268 @@
+#ifndef UDO_BUSSING
+#define UDO_BUSSING ##
+/*
+ Bus handling
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#ifdef BUS_MAINMIXER
+gkmastervolume init 1
+#end
+
+/*
+ Get the stereo L and R names for a singular bus name
+
+ SnameL, SnameR bus_name Sbus
+
+ SnameL left bus identifier
+ SnameR right bus identifier
+
+ Sbus bus name
+*/
+opcode bus_name, SS, S
+ Sbus xin
+ xout sprintf("%sL", Sbus), sprintf("%sR", Sbus)
+endop
+
+
+/*
+ Read from a stereo bus, but do not clear it
+
+ aL, aR bus_tap Sbus
+
+ aL left channel
+ aR right channel
+ Sbus bus name
+*/
+opcode bus_tap, aa, S
+ Sbus xin
+ SbusL, SbusR bus_name Sbus
+ aL chnget SbusL
+ aR chnget SbusR
+ xout aL, aR
+endop
+
+
+/*
+ Read from a mono bus (or left channel of a stereo bus), but do not clear it
+
+ aout bus_tap Sbus
+
+ aout output audio
+ Sbus bus name
+*/
+opcode bus_tap, a, S
+ Sbus xin
+ SbusL, S_ bus_name Sbus
+ aout chnget SbusL
+ xout aout
+endop
+
+
+/*
+ Read from a stereo bus, and then clear the bus
+
+ aL, aR bus_read Sbus
+
+ aL left channel
+ aR right channel
+ Sbus bus name
+*/
+opcode bus_read, aa, S
+ Sbus xin
+ SbusL, SbusR bus_name Sbus
+ aL chnget SbusL
+ aR chnget SbusR
+ chnclear SbusL
+ chnclear SbusR
+ xout aL, aR
+endop
+
+/*
+ Read from a mono bus (or left channel of a stereo bus), and then clear the bus
+
+ aout bus_read Sbus
+
+ aout output audio
+ Sbus bus name
+*/
+opcode bus_read, a, S
+ Sbus xin
+ SbusL, S_ bus_name Sbus
+ aout chnget SbusL
+ chnclear SbusL
+ xout aout
+endop
+
+
+/*
+ Clear a stereo bus
+
+ bus_clear Sbus
+
+ Sbus bus name
+*/
+opcode bus_clear, 0, S
+ Sbus xin
+ SbusL, SbusR bus_name Sbus
+ chnclear SbusL
+ chnclear SbusR
+endop
+
+
+/*
+ Clear a mono bus (or left channel of a stereo bus)
+
+ bus_clear_mono Sbus
+
+ Sbus bus name
+*/
+opcode bus_clear_mono, 0, S
+ Sbus xin
+ SbusL, S_ bus_name Sbus
+ chnclear SbusL
+endop
+
+
+/*
+ Set to a stereo bus
+
+ bus_set Sbus, aL, aR
+
+ Sbus bus name
+ aL left channel
+ aR right channel
+*/
+opcode bus_set, 0, Saa
+ Sbus, aL, aR xin
+ SbusL, SbusR bus_name Sbus
+ chnset aL, SbusL
+ chnset aR, SbusR
+endop
+
+
+/*
+ Set to a mono bus (or left channel of a stereo bus)
+
+ bus_set Sbus, ain
+
+ Sbus bus name
+ ain input audio
+*/
+opcode bus_set, 0, Sa
+ Sbus, ain xin
+ SbusL, S_ bus_name Sbus
+ chnset ain, SbusL
+endop
+
+
+/*
+ Mix to a stereo bus
+
+ bus_mix Sbus, aL, aR
+
+ Sbus bus name
+ aL left channel
+ aR right channel
+*/
+opcode bus_mix, 0, Saa
+ Sbus, aL, aR xin
+ SbusL, SbusR bus_name Sbus
+ chnmix aL, SbusL
+ chnmix aR, SbusR
+endop
+
+
+/*
+ Mix to a mono bus (or left channel of a stereo bus)
+
+ bus_mix Sbus, ain
+
+ Sbus bus name
+ aL left channel
+ aR right channel
+*/
+opcode bus_mix, 0, Sa
+ Sbus, ain xin
+ SbusL, S_ bus_name Sbus
+ chnmix ain, SbusL
+endop
+
+
+/*
+ Mix to master bus
+
+ bus_masterout aL, aR
+
+ aL left channel
+ aR right channel
+*/
+opcode bus_masterout, 0, aa
+ aL, aR xin
+ chnmix aL, "mainL"
+ chnmix aR, "mainR"
+endop
+
+
+/*
+ Mix mono signal to master bus, equally across left and right
+
+ bus_masterout ain
+
+ ain input audio
+*/
+opcode bus_masterout, 0, a
+ ain xin
+ chnmix ain, "mainL"
+ chnmix ain, "mainR"
+endop
+
+
+/*
+ Record a bus to a wave file
+
+ bus_record Sbus, Spath
+
+ Sbus bus name
+ Spath path to file to record to
+*/
+opcode bus_record, 0, SS
+ Sbus, Spath xin
+ aL, aR bus_tap Sbus
+ fout Spath, 14, aL, aR
+endop
+
+
+/*
+ Record a mono bus (or left channel of a stereo bus) to a wave file
+
+ bus_record_mono Sbus, Spath
+
+ Sbus bus name
+ Spath path to file to record to
+*/
+opcode bus_record_mono, 0, SS
+ Sbus, Spath xin
+ asig bus_tap Sbus
+ fout Spath, 14, asig
+endop
+
+
+
+/*
+ Main output: anything mixed to the "main" bus goes to main outputs
+*/
+#ifdef BUS_MAINMIXER
+instr _mainmixer
+ aL, aR bus_read "main"
+ aL = aL * gkmastervolume
+ aR = aR * gkmastervolume
+ outs aL, aR
+endin
+schedule("_mainmixer", 0, -1)
+#end
+
+#end
diff --git a/site/udo/bussing_quad.udo b/site/udo/bussing_quad.udo
new file mode 100755
index 0000000..b857012
--- /dev/null
+++ b/site/udo/bussing_quad.udo
@@ -0,0 +1,172 @@
+#ifndef UDO_BUSSINGQUAD
+#define UDO_BUSSINGQUAD ##
+/*
+ Quad bus handling
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2023, 2025
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ Get the quad left/right/front/rear names for a singular bus name
+
+ SnameLF, SnameRF, SnameLR, SnameRR qbus_name Sbus
+
+ SnameLF left front bus identifier
+ SnameRF right front bus identifier
+ SnameLR left rear bus identifier
+ SnameRR right rear bus identifier
+
+ Sbus bus name
+*/
+opcode qbus_name, SSSS, S
+ Sbus xin
+ xout sprintf("%sLF", Sbus), sprintf("%sRF", Sbus), sprintf("%sLR", Sbus), sprintf("%sRR", Sbus)
+endop
+
+
+/*
+ Read from a quad bus, but do not clear it
+
+ aLF, aRF, aLR, aRR qbus_tap Sbus
+
+ aLF left front channel
+ aRF right front channel
+ aLR left rear channel
+ aRR right rear channel
+
+ Sbus bus name
+*/
+opcode qbus_tap, aaaa, S
+ Sbus xin
+ SbusLF, SbusRF, SbusLR, SbusRR qbus_name Sbus
+ aLF chnget SbusLF
+ aRF chnget SbusRF
+ aLR chnget SbusLR
+ aRR chnget SbusRR
+ xout aLF, aRF, aLR, aRR
+endop
+
+/*
+ Read from a quad bus, and then clear the bus
+
+ aLF, aRF, aLR, aRR qbus_read Sbus
+
+ aLF left front channel
+ aRF right front channel
+ aLR left rear channel
+ aRR right rear channel
+
+ Sbus bus name
+*/
+opcode qbus_read, aaaa, S
+ Sbus xin
+ SbusLF, SbusRF, SbusLR, SbusRR qbus_name Sbus
+ aLF chnget SbusLF
+ aRF chnget SbusRF
+ aLR chnget SbusLR
+ aRR chnget SbusRR
+ chnclear SbusLF
+ chnclear SbusRF
+ chnclear SbusLR
+ chnclear SbusRR
+ xout aLF, aRF, aLR, aRR
+endop
+
+
+/*
+ Set to a quad bus
+
+ qbus_set Sbus, aLF, aRF, aLR, aRR
+
+ Sbus bus name
+ aLF left front channel
+ aRF right front channel
+ aLR left rear channel
+ aRR right rear channel
+*/
+opcode qbus_set, 0, Saaaa
+ Sbus, aLF, aRF, aLR, aRR xin
+ SbusLF, SbusRF, SbusLR, SbusRR qbus_name Sbus
+ chnset aLF, SbusLF
+ chnset aRF, SbusRF
+ chnset aLR, SbusLR
+ chnset aRR, SbusRR
+endop
+
+
+/*
+ Mix to a quad bus
+
+ qbus_mix Sbus, aLF, aRF, aLR, aRR
+
+ Sbus bus name
+ aLF left front channel
+ aRF right front channel
+ aLR left rear channel
+ aRR right rear channel
+
+*/
+opcode qbus_mix, 0, Saaaa
+ Sbus, aLF, aRF, aLR, aRR xin
+ SbusLF, SbusRF, SbusLR, SbusRR qbus_name Sbus
+ chnmix aLF, SbusLF
+ chnmix aRF, SbusRF
+ chnmix aLR, SbusLR
+ chnmix aRR, SbusRR
+endop
+
+
+/*
+ Mix to master bus
+
+ qbus_masterout aLF, aRF, aLR, aRR
+
+ aLF left front channel
+ aRF right front channel
+ aLR left rear channel
+ aRR right rear channel
+*/
+opcode qbus_masterout, 0, aaaa
+ aLF, aRF, aLR, aRR xin
+ chnmix aLF, "mainLF"
+ chnmix aRF, "mainRF"
+ chnmix aLR, "mainLR"
+ chnmix aRR, "mainRR"
+endop
+
+
+/*
+ Record a bus to a wave file
+
+ qbus_record Sbus, Spath
+
+ Sbus bus name
+ Spath path to file to record to
+*/
+opcode qbus_record, 0, SS
+ Sbus, Spath xin
+ aLF, aRF, aLR, aRR qbus_tap Sbus
+ fout Spath, 14, aLF, aRF, aLR, aRR
+endop
+
+
+; TODO: is this really used?
+;gkqmastervolume init 1
+/*
+ Main output: anything mixed to the "main" bus goes to main outputs
+
+instr _qmainmixer
+ aLF, aRF, aLR, aRR qbus_read "main"
+ aLF *= gkqmastervolume
+ aRF *= gkqmastervolume
+ aLR *= gkqmastervolume
+ aRR *= gkqmastervolume
+ outq aLF, aRF, aLR, aRR
+endin
+alwayson "_qmainmixer"
+*/
+
+#end
diff --git a/site/udo/chop.udo b/site/udo/chop.udo
new file mode 100755
index 0000000..cf8d2f3
--- /dev/null
+++ b/site/udo/chop.udo
@@ -0,0 +1,715 @@
+#ifndef UDO_CHOP
+#define UDO_CHOP ##
+/*
+ chop: init-time table editing
+
+ This file is part of the SONICS UDO collection by Richard Knight 2023, 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "/uniqueid.udo"
+
+opcode chop_mktemp, ii, ij
+ isize, imono xin
+ ifnL ftgen 0, 0, isize, 2, 0
+ if (imono < 1) then
+ ifnR ftgen 0, 0, isize, 2, 0
+ endif
+ xout ifnL, ifnR
+endop
+
+opcode chop_mktemp, i, i
+ isize xin
+ ifn ftgen 0, 0, -isize, -2, 0
+ xout ifn
+endop
+
+
+
+opcode chop_zerostartend, ii, i
+ ifn xin
+ ilen = ftlen(ifn)
+ istart = -1
+ iend = -1
+ iprevsample = tab_i(0, ifn)
+ index = 1
+ while (index < ilen) do
+ isample = tab_i(index, ifn)
+ if ((isample > 0 && iprevsample < 0) || (isample < 0 && iprevsample > 0)) then
+ istart = index
+ goto foundstart
+ endif
+ iprevsample = isample
+ index += 1
+ od
+
+foundstart:
+ index = ilen - 2
+ iprevsample = tab_i(ilen - 1, ifn)
+ while (index >= 0) do
+ isample = tab_i(index, ifn)
+ if ((isample > 0 && iprevsample < 0) || (isample < 0 && iprevsample > 0)) then
+ iend = index
+ goto foundend
+ endif
+ iprevsample = isample
+ index -= 1
+ od
+
+foundend:
+ xout istart, iend
+endop
+
+
+opcode _chop_assamples, iii, iii
+ ichopstart, ichoplen, iassamples xin
+ if (iassamples == 1) then
+ ichopstartsamp = ichopstart
+ ichopendsamp = ichopstart + ichoplen
+ ichoplensamp = ichoplen
+ else
+ ichopstartsamp = round(ichopstart * sr)
+ ichopendsamp = round((ichopstart + ichoplen) * sr)
+ ichoplensamp = round(ichoplen * sr)
+ endif
+ xout ichopstartsamp, ichopendsamp, ichoplensamp
+endop
+
+
+
+
+;ftslice better?
+opcode chop_cut, iiii, iiiij
+ ichopstart, ichoplen, ifnL, ifnR, iassamples xin
+ ichopstartsamp, ichopendsamp, ichoplensamp _chop_assamples ichopstart, ichoplen, iassamples
+
+ ilen = ftlen(ifnL)
+ inewlen = ilen - ichoplensamp
+ if (ifnR == -1) then
+ icutL chop_mktemp round(ichoplensamp)
+ ifntempL chop_mktemp round(inewlen)
+ else
+ icutL, icutR chop_mktemp round(ichoplensamp)
+ ifntempL, ifntempR chop_mktemp round(inewlen)
+ endif
+
+ ireadpos = 0
+ iwritepos = 0
+ ichopwritepos = 0
+ while (ireadpos + 1 < ilen) do
+ ivalL = tab_i(ireadpos, ifnL)
+ if (ifnR != -1) then
+ ivalR = tab_i(ireadpos, ifnR)
+ endif
+
+ if (ireadpos >= ichopstartsamp && ireadpos < ichopendsamp) then
+ tabw_i ivalL, ichopwritepos, icutL
+ if (ifnR != 1) then
+ tabw_i ivalR, ichopwritepos, icutR
+ endif
+ ichopwritepos += 1
+ else
+ tabw_i ivalL, iwritepos, ifntempL
+ if (ifnR != 1) then
+ tabw_i ivalR, iwritepos, ifntempR
+ endif
+ iwritepos += 1
+ endif
+ ireadpos += 1
+ od
+
+ ftfree ifnL, 0
+ if (ifnR != -1) then
+ ftfree ifnR, 0
+ endif
+
+ xout icutL, icutR, ifntempL, ifntempR
+endop
+
+
+opcode chop_cut, ii, iiij
+ ichopstart, ichoplen, ifn, iassamples xin
+ ifnCut, i_, ifnNew, i_ chop_cut ichopstart, ichoplen, ifn, -1, iassamples
+ xout ifnCut, ifnNew
+endop
+
+
+opcode _chop_copy, ii, iiiij
+ ichopstart, ichoplen, ifnL, ifnR, iassamples xin
+ ichopstartsamp, ichopendsamp, ichoplensamp _chop_assamples ichopstart, ichoplen, iassamples
+ if (ifnL > 0) then
+ ifntempL chop_mktemp round(ichoplensamp)
+ ftslicei ifnL, ifntempL, ichopstartsamp, ichopendsamp
+ endif
+ if (ifnR > 0) then
+ ifntempR chop_mktemp round(ichoplensamp)
+ ftslicei ifnR, ifntempR, ichopstartsamp, ichopendsamp
+ endif
+ xout ifntempL, ifntempR
+endop
+
+opcode chop_copy, i, iiij
+ ichopstart, ichoplen, ifn, iassamples xin
+ ifn, i_ _chop_copy ichopstart, ichoplen, ifn, -1, iassamples
+ xout ifn
+endop
+
+opcode chop_copy, ii, iiiij
+ ichopstart, ichoplen, ifnL, ifnR, iassamples xin
+ ifntempL, ifntempR _chop_copy ichopstart, ichoplen, ifnL, ifnR, iassamples
+ xout ifntempL, ifntempR
+endop
+
+
+
+opcode _chop_operation, 0, iiiiipoop ; should only be run in one k-cycle
+ ifnSource, ifnTarget, isourceStart, isourceEnd, itargetStart, iterations, itargetIncrement, imix, iteration xin
+ ilen = (isourceEnd - isourceStart)
+ ilens = ilen / sr
+ ikcycles = ilen / ksmps
+ kcount = 0
+ while (kcount < ikcycles) do
+ aposSource linseg isourceStart, ilens, isourceEnd
+ aposTarget linseg itargetStart, ilens, (itargetStart + ilen) - 1
+ asig table3 aposSource, ifnSource
+ if (imix == 1) then
+ asig += table3:a(aposTarget, ifnTarget)
+ endif
+ tablew asig, aposTarget, ifnTarget
+ kcount += 1
+ od
+ if (iteration < iterations) then
+ _chop_operation ifnSource, ifnTarget, isourceStart, isourceEnd, itargetStart + itargetIncrement, iterations, itargetIncrement, imix, iteration + 1
+ endif
+endop
+
+
+opcode chop_pastek, kiii, ijijipo
+ ifnSrcL, ifnSrcR, ifnDestL, ifnDestR, istart, inumber, imix xin
+ inumber = round(inumber)
+ kdone init 0
+ ifnanalysis = (ifnDestL != -1) ? ifnDestL : ifnDestR
+ idestlen = ftlen(ifnanalysis)
+ ipastelen = ftlen((ifnSrcL != -1) ? ifnSrcL : ifnSrcR)
+ itotalpastelen = ipastelen * inumber
+ iextended = 1
+ if (imix == 0) then
+ inewlen = round(idestlen + itotalpastelen)
+ else
+ if (itotalpastelen > idestlen - istart) then
+ inewlen = round(istart + itotalpastelen)
+ else
+ inewlen = idestlen
+ iextended = 0
+ endif
+ endif
+ ktimek timeinstk
+ if (ktimek == 1) then
+ if (ifnDestL != -1) then
+ if (iextended == 1) then
+ ifnNewL chop_mktemp inewlen
+ ftfree ifnDestL, 1
+ else
+ ifnNewL = ifnDestL
+ endif
+ if (imix == 0) then
+ _chop_operation ifnDestL, ifnNewL, 0, istart, 0
+ _chop_operation ifnSrcL, ifnNewL, 0, ipastelen, istart, inumber, ipastelen
+ _chop_operation ifnDestL, ifnNewL, istart + 1, idestlen, istart + itotalpastelen + 1
+ else
+ if (iextended == 1) then
+ _chop_operation ifnDestL, ifnNewL, 0, idestlen, 0
+ endif
+ _chop_operation ifnSrcL, ifnNewL, 0, ipastelen, istart, inumber, ipastelen, imix
+ endif
+ else
+ ifnNewL = -1
+ endif
+
+ if (ifnDestR != -1) then
+ if (iextended == 1) then
+ ifnNewR chop_mktemp inewlen
+ ftfree ifnDestR, 1
+ else
+ ifnNewR = ifnDestR
+ endif
+ if (imix == 0) then
+ _chop_operation ifnDestR, ifnNewR, 0, istart, 0
+ _chop_operation ifnSrcR, ifnNewR, 0, ipastelen, istart, inumber, ipastelen
+ _chop_operation ifnDestR, ifnNewR, istart + 1, idestlen, istart + itotalpastelen + 1
+ else
+ if (iextended == 1) then
+ _chop_operation ifnDestR, ifnNewR, 0, idestlen, 0
+ endif
+ _chop_operation ifnSrcR, ifnNewR, 0, ipastelen, istart, inumber, ipastelen, imix
+ endif
+ else
+ ifnNewR = -1
+ endif
+ else
+ kdone = 1
+ endif
+
+ xout kdone, ifnNewL, ifnNewR, itotalpastelen
+endop
+
+
+opcode chop_pastek, kiii, ijijip
+ ifnSrcL, ifnSrcR, ifnDestL, ifnDestR, istart, inumber xin
+ inumber = round(inumber)
+ kdone init 0
+ ifnanalysis = (ifnDestL != -1) ? ifnDestL : ifnDestR
+ ipastelen = ftlen((ifnSrcL != -1) ? ifnSrcL : ifnSrcR)
+ itotalpastelen = ipastelen * inumber
+ inewlen = round(ftlen(ifnanalysis) + itotalpastelen)
+ ktimek timeinstk
+ if (ktimek == 1) then
+ if (ifnDestL != -1) then
+ ifnNewL chop_mktemp inewlen
+ _chop_operation ifnDestL, ifnNewL, 0, istart, 0
+ _chop_operation ifnSrcL, ifnNewL, 0, ipastelen, istart, inumber, ipastelen
+ _chop_operation ifnDestL, ifnNewL, istart + 1, ftlen(ifnDestL), istart + itotalpastelen + 1
+ ftfree ifnDestL, 1
+ else
+ ifnNewL = -1
+ endif
+ if (ifnDestR != -1) then
+ ifnNewR chop_mktemp inewlen
+ _chop_operation ifnDestR, ifnNewR, 0, istart, 0
+ _chop_operation ifnSrcR, ifnNewR, 0, ipastelen, istart, inumber
+ _chop_operation ifnDestR, ifnNewR, istart + 1, ftlen(ifnDestR), istart + itotalpastelen + 1
+ ftfree ifnDestR, 1
+ else
+ ifnNewR = -1
+ endif
+ else
+ kdone = 1
+ endif
+
+ xout kdone, ifnNewL, ifnNewR, itotalpastelen
+endop
+
+
+opcode chop_setsilencek, k, iijjJ
+ istart, idellen, ifnL, ifnR, ktrig xin
+ kdone init 0
+ ktimek timeinstk
+
+ if (kdone == 0 && (ktrig == -1 && ktimek == 1 || ktrig == 1)) then
+ ilens = idellen / sr
+ ikcycles = idellen / ksmps
+ kcount = 0
+ while (kcount < ikcycles) do
+ apos linseg istart, ilens, istart + idellen
+ anull init 0
+ if (ifnL != -1) then
+ tablew dcblock(anull), apos, ifnL
+ endif
+ if (ifnR != -1) then
+ tablew dcblock(anull), apos, ifnR
+ endif
+ kcount += 1
+ od
+ kdone = 1
+ endif
+
+ xout kdone
+endop
+
+
+opcode chop_deletek, kii, iijj
+ istart, idellen, ifnL, ifnR xin
+ kdone init 0
+
+ ktimek timeinstk
+
+ if (ktimek == 1) then
+ if (ifnL != -1) then
+ ifnNewL chop_mktemp round(ftlen(ifnL) - idellen)
+ _chop_operation ifnL, ifnNewL, 0, istart, 0
+ _chop_operation ifnL, ifnNewL, istart + idellen, ftlen(ifnL), istart
+ ftfree ifnL, 1
+ else
+ ifnNewL = -1
+ ifnCutL = -1
+ endif
+ if (ifnR != -1) then
+ ifnNewR chop_mktemp round(ftlen(ifnR) - idellen)
+ _chop_operation ifnR, ifnNewR, 0, istart, 0
+ _chop_operation ifnR, ifnNewR, istart + idellen, ftlen(ifnR), istart
+ ftfree ifnR, 1
+ else
+ ifnNewR = -1
+ ifnCutR = -1
+ endif
+ else
+ kdone = 1
+ endif
+
+ xout kdone, ifnNewL, ifnNewR
+endop
+
+
+opcode chop_trimk, kii, iijj
+ istart, itrimlen, ifnL, ifnR xin
+ kdone init 0
+ ktimek timeinstk
+ if (ktimek == 1) then
+ if (ifnL != -1) then
+ ifnNewL chop_mktemp round(itrimlen)
+ _chop_operation ifnL, ifnNewL, istart, istart + itrimlen, 0
+ ftfree ifnL, 1
+ else
+ ifnNewL = -1
+ endif
+ if (ifnR != -1) then
+ ifnNewR chop_mktemp round(itrimlen)
+ _chop_operation ifnR, ifnNewR, istart, istart + itrimlen, 0
+ ftfree ifnR, 1
+ else
+ ifnNewR = -1
+ endif
+ else
+ kdone = 1
+ endif
+ xout kdone, ifnNewL, ifnNewR
+endop
+
+
+opcode chop_cutk, kiiii, iijj
+ istart, icutlen, ifnL, ifnR xin
+ kdone init 0
+
+ ktimek timeinstk
+
+ if (ktimek == 1) then
+ if (ifnL != -1) then
+ ifnNewL chop_mktemp round(ftlen(ifnL) - icutlen)
+ ifnCutL chop_mktemp round(icutlen)
+ _chop_operation ifnL, ifnNewL, 0, istart, 0
+ _chop_operation ifnL, ifnCutL, istart, istart + icutlen, 0
+ _chop_operation ifnL, ifnNewL, istart + icutlen, ftlen(ifnL), istart
+ ftfree ifnL, 1
+ else
+ ifnNewL = -1
+ ifnCutL = -1
+ endif
+ if (ifnR != -1) then
+ ifnNewR chop_mktemp round(ftlen(ifnR) - icutlen)
+ ifnCutR chop_mktemp round(icutlen)
+ _chop_operation ifnR, ifnNewR, 0, istart, 0
+ _chop_operation ifnR, ifnCutR, istart, istart + icutlen, 0
+ _chop_operation ifnR, ifnNewR, istart + icutlen, ftlen(ifnR), istart
+ ftfree ifnR, 1
+ else
+ ifnNewR = -1
+ ifnCutR = -1
+ endif
+ else
+ kdone = 1
+ endif
+
+ xout kdone, ifnCutL, ifnCutR, ifnNewL, ifnNewR
+endop
+
+
+
+opcode chop_copyk, kii, iiij
+ istart, ilen, ifnL, ifnR xin
+ kdone init 0
+
+ ktimek timeinstk
+
+ if (ktimek == 1) then
+ if (ifnL != -1) then
+ ifntempL chop_mktemp round(ilen)
+ _chop_operation ifnL, ifntempL, istart, istart + ilen, 0
+ else
+ ifntempL = -1
+ endif
+ if (ifnR != -1) then
+ ifntempR chop_mktemp round(ilen)
+ _chop_operation ifnR, ifntempR, istart, istart + ilen, 0
+ else
+ ifntempR = -1
+ endif
+ else
+ kdone = 1
+ endif
+ xout kdone, ifntempL, ifntempR
+endop
+
+
+
+
+opcode chop_move, ii, iiiii
+ ichopstart, ichoplen, ichopdest, ifnL, ifnR xin
+ ifnchopL, ifnchopR chop_copy ichopstart, ichoplen, ifnL, ifnR
+
+ ichopdestsamp = round(ichopdest * sr)
+ ichopendsamp = round((ichopdest + ichoplen) * sr)
+ ilen = ftlen(ifnL)
+ ifntempdestL, ifntempdestR chop_mktemp ilen
+
+ ilastvalL = 0
+ ilastvalR = 0
+ iwritemode = 0
+ ireadposmain = 0
+ ireadposchop = 0
+ iwritepos = 0
+ while (iwritepos < ilen) do
+ if (iwritepos >= ichopdestsamp && iwritepos + 1 < ichopendsamp) then
+ ivalL = tab_i(ireadposchop, ifnchopL)
+ ivalR = tab_i(ireadposchop, ifnchopR)
+ if (iwritemode == 0) then
+ if (ireadposchop + 1 <= ichopendsamp) then
+ ivalR = (ilastvalR + tab_i(ireadposchop + 1, ifnchopL)) * 0.5
+ ivalR = (ilastvalR + tab_i(ireadposchop + 1, ifnchopR)) * 0.5
+ endif
+ iwritemode = 1
+ endif
+ ireadposchop += 1
+ else
+ ivalL = tab_i(ireadposmain, ifnL)
+ ivalR = tab_i(ireadposmain, ifnR)
+ if (iwritemode == 1) then
+ if (ireadposmain + 1 <= ilen) then
+ ivalR = (ilastvalR + tab_i(ireadposmain + 1, ifnL)) * 0.5
+ ivalR = (ilastvalR + tab_i(ireadposmain + 1, ifnR)) * 0.5
+ endif
+ iwritemode = 0
+ endif
+ ireadposmain += 1
+ endif
+ ilastvalL = ivalL
+ ilastvalR = ivalR
+ tabw_i ivalL, iwritepos, ifntempdestL
+ tabw_i ivalR, iwritepos, ifntempdestR
+ iwritepos += 1
+ od
+
+ ftfree ifnchopL, 0
+ ftfree ifnchopR, 0
+ ftfree ifnL, 0
+ ftfree ifnR, 0
+ xout ifntempdestL, ifntempdestR
+endop
+
+
+
+
+opcode _chop_paste, iii, iiiiiii
+ ifnSrcL, ifnSrcR, ifnDestL, ifnDestR, istartsamp, inumber, itimevarratio xin
+ imonosrc = (ifnSrcR == -1) ? 1 : 0
+ imonodest = (ifnDestR == -1) ? 1 : 0
+
+ inumber = round(inumber)
+ ipastelen = ftlen(ifnSrcL) * inumber
+ inewlen = round(ftlen(ifnDestL) + ipastelen)
+ ifnNewL, ifnNewR chop_mktemp inewlen, imonodest
+
+ inum = 0
+ inputsamps = ftlen(ifnDestL)
+ ichoplensamps = ftlen(ifnSrcL)
+
+ if (itimevarratio != 0) then
+ itimevarratio = random(0.1, itimevarratio)
+ endif
+ ipastetime = istartsamp + (ichoplensamps * itimevarratio)
+ ipastepos = int(ipastetime)
+ ireadposorig = 0
+ iwritepos = 0
+ ireadchoppos = 0
+ idonepaste = 0
+print inumber
+ while (iwritepos < inewlen) do
+ if (idonepaste == 1 || iwritepos <= ipastepos) then
+ if (ireadposorig < inputsamps) then
+ ivalL = tab_i(ireadposorig, ifnDestL)
+ if (imonosrc == 0) then
+ ivalR = tab_i(ireadposorig, ifnDestR)
+ else
+ ivalL = ivalR
+ endif
+
+ if (imonodest == 1) then
+ tabw_i ivalL, iwritepos, ifnNewL
+ else
+ tabw_i ivalL, iwritepos, ifnNewL
+ tabw_i ivalR, iwritepos, ifnNewR
+ endif
+ endif
+ ireadposorig += 1
+ else
+ ivalL = tab_i(ireadchoppos, ifnSrcL)
+ if (imonosrc == 0) then
+ ivalR = tab_i(ireadchoppos, ifnSrcR)
+ else
+ ivalL = ivalR
+ endif
+
+ if (imonodest == 1) then
+ tabw_i ivalL, iwritepos, ifnNewL
+ else
+ tabw_i ivalL, iwritepos, ifnNewL
+ tabw_i ivalR, iwritepos, ifnNewR
+ endif
+
+ if (ireadchoppos + 1 >= ichoplensamps) then
+ ipastetime += (ichoplensamps * random(0, itimevarratio))
+ ipastepos = ipastetime
+print ipastepos
+ if (inum + 1 < inumber) then
+ inum += 1
+print inum
+ else
+ idonepaste = 1
+ endif
+ ireadchoppos = 0
+ else
+ ireadchoppos += 1
+ endif
+ endif
+
+ iwritepos += 1
+ od
+
+ ftfree ifnDestL, 0
+ ftfree ifnDestR, 0
+ xout ifnNewL, ifnNewR, ipastelen
+endop
+
+opcode chop_paste, ii, iiiii
+ ifnSrc, ifnDest, istartsamp, inumber, itimevarratio xin
+ ifnNew, i_, ipastelen _chop_paste ifnSrc, -1, ifnDest, -1, istartsamp, inumber, itimevarratio
+ xout ifnNew, ipastelen
+endop
+
+opcode chop_paste, iii, iiiiiii
+ ifnSrcL, ifnSrcR, ifnDestL, ifnDestR, istartsamp, inumber, itimevarratio xin
+ ifnNewL, ifnNewR, ipastelen _chop_paste ifnSrcL, ifnSrcR, ifnDestL, ifnDestR, istartsamp, inumber, itimevarratio
+ xout ifnNewL, ifnNewR, ipastelen
+endop
+
+
+
+
+/*
+opcode chop_pastek, kiii, ijijip
+ ifnSrcL, ifnSrcR, ifnDestL, ifnDestR, istart, inumber xin
+ inumber = round(inumber)
+ iktime = 1 / kr
+ if (ifnDestL != -1) then
+ ipastelen = ftlen(ifnSrcL) ;;;;;;;;;;;;;;;;;;;;;;;TODOTODOTODOTODO;TODO;;;;* inumber
+ inewlen = round(ftlen(ifnDestL) + ipastelen)
+ ifnNewL chop_mktemp inewlen
+
+ ; paste beginning from original
+ Schannel = sprintf("choppaste%d", uniqueid())
+ schedule("_chop_operation", 0, -1, ifnDestL, ifnNewL, 0, istart, 0, Schannel)
+ kdone1L chnget Schannel
+
+ ; paste buffer
+ Schannel = sprintf("choppaste%d", uniqueid())
+ schedule("_chop_operation", iktime, -1, ifnSrcL, ifnNewL, 0, ipastelen, istart, Schannel)
+ kdone2L chnget Schannel
+
+ ; paste remainder from original
+ Schannel = sprintf("choppaste%d", uniqueid())
+ ipasteend = istart + ipastelen
+ schedule("_chop_operation", iktime * 2, -1, ifnDestL, ifnNewL, istart + 1, ftlen(ifnDestL), istart + ipastelen + 1, Schannel)
+ kdone3L chnget Schannel
+
+ ftfree ifnDestL, 1
+ else
+ kdone1L init 1
+ kdone2L init 1
+ kdone3L init 1
+ ifnNewL = -1
+ endif
+
+ if (ifnDestR != -1) then
+ ipastelen = ftlen(ifnSrcR) ;;;;;;;;;;;;;;;;;;;;;;;TODOTODOTODOTODO;TODO;;;;* inumber
+ inewlen = round(ftlen(ifnDestR) + ipastelen)
+ ifnNewR chop_mktemp inewlen
+
+ Schannel = sprintf("choppaste%d", uniqueid())
+ schedule("_chop_operation", iktime * 3, -1, ifnDestR, ifnNewR, 0, istart, 0, Schannel)
+ kdone1R chnget Schannel
+
+ Schannel = sprintf("choppaste%d", uniqueid())
+ schedule("_chop_operation", iktime * 4, -1, ifnSrcR, ifnNewR, 0, ipastelen, istart, Schannel)
+ kdone2R chnget Schannel
+
+ Schannel = sprintf("choppaste%d", uniqueid())
+ schedule("_chop_operation", iktime * 5, -1, ifnDestR, ifnNewR, istart + 1, ftlen(ifnDestR), istart + ipastelen + 1, Schannel)
+ kdone3R chnget Schannel
+
+ ftfree ifnDestR, 1
+ else
+ kdone1R init 1
+ kdone2R init 1
+ kdone3R init 1
+ ifnNewR = -1
+ endif
+
+ xout (kdone1L & kdone2L & kdone3L & kdone1R & kdone2R & kdone3R), ifnNewL, ifnNewR, ipastelen
+endop
+*/
+
+opcode chop_copypaste, ii, iiiiii
+ ichopstart, ichoplen, inumber, itimevarratio, ifnL, ifnR xin
+ inumber = round(inumber)
+ ifnchopL, ifnchopR chop_copy ichopstart, ichoplen, ifnL, ifnR
+
+ inewlen = round(ftlen(ifnL) + (ichoplen * inumber * sr))
+ ifntempL, ifntempR chop_mktemp inewlen
+
+ inum = 0
+ inputsamps = ftlen(ifnL)
+ ichoplensamps = ftlen(ifnchopL)
+ ipastetime = ichopstart + (ichoplen * random(0, itimevarratio))
+ ipastepos = round(ipastetime * sr)
+ ireadposorig = 0
+ iwritepos = 0
+ ireadchoppos = 0
+ idonepaste = 0
+
+ while (iwritepos < inewlen) do
+ if (idonepaste == 1 || iwritepos <= ipastepos) then
+ if (ireadposorig < inputsamps) then
+ tabw_i tab_i(ireadposorig, ifnL), iwritepos, ifntempL
+ tabw_i tab_i(ireadposorig, ifnR), iwritepos, ifntempR
+ endif
+ ireadposorig += 1
+ else
+ tabw_i tab_i(ireadchoppos, ifnchopL), iwritepos, ifntempL
+ tabw_i tab_i(ireadchoppos, ifnchopR), iwritepos, ifntempR
+
+ if (ireadchoppos + 1 >= ichoplensamps) then
+ ipastetime += (ichoplen * random(0, itimevarratio))
+ ipastepos = round(ipastetime * sr)
+ if (inum + 1 < inumber) then
+ inum += 1
+ else
+ idonepaste = 1
+ endif
+ ireadchoppos = 0
+ else
+ ireadchoppos += 1
+ endif
+ endif
+
+ iwritepos += 1
+ od
+
+ ftfree ifnchopL, 0
+ ftfree ifnchopR, 0
+ ftfree ifnL, 0
+ ftfree ifnR, 0
+ xout ifntempL, ifntempR
+endop
+
+
+#end
diff --git a/site/udo/chord_detect.udo b/site/udo/chord_detect.udo
new file mode 100755
index 0000000..da72027
--- /dev/null
+++ b/site/udo/chord_detect.udo
@@ -0,0 +1,154 @@
+#ifndef UDO_CHORDDETECT
+#define UDO_CHORDDETECT ##
+/*
+ Polyphonic note tracking
+
+ This file is part of the SONICS UDO collection by Richard Knight 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+
+gichorddetect_ampthresh = 0.01
+
+/*
+ Internal opcode
+ Set up pvsbin recursively for each bin up to imaxbin, and add a confirmation to inotefn for the nearest MIDI note detected
+
+ _polydetect_bin fsig, imaxbin, inotefn [, ibin=1]
+
+ fsig the signal from pvsanal to perform pitch detection on
+ imaxbin maximum number of bins in the fsig which denotes the level of recursion required
+ inotefn ftable to store note confirmations in
+ ibin current bin for pvsbin to examine
+*/
+opcode _polydetect_bin, 0, fiip
+ fsig, imaxbin, inotefn, ibin xin
+ kamp, kfreq pvsbin fsig, ibin
+
+ if (kamp > gichorddetect_ampthresh) then
+ knote = ftom(kfreq, 1)
+ tablew table:k(knote, inotefn) + 1, knote, inotefn
+ endif
+
+ if (ibin + 1 < imaxbin) then
+ _polydetect_bin fsig, imaxbin, inotefn, ibin + 1
+ endif
+endop
+
+
+/*
+ Internal opcode
+ Rank the notes in inotefn and output the detected MIDI notes along with a certainty ratio
+
+ kout[], kcertainty[] _polydetect_ranknotes inotefn, imaxnotes
+
+ kout[] array of detected MIDI note numbers, of size imaxnotes
+ kcertainty[] array of detected note certainty ratios, of size imaxnotes
+ inotefn ftable with note confirmations
+ imaxnotes maximum number of notes to look for, ie polyphony level
+*/
+opcode _polydetect_ranknotes, k[]k[], ii
+ inotefn, imaxnotes xin
+ ilen = ftlen(inotefn)
+ kout[] init imaxnotes
+
+ kcertainty[] init imaxnotes
+ ktotal = 0
+ kindex = 0
+ kmax = 0
+ knonzeronum = 0
+ while (kindex < ilen) do
+ kval = tab:k(kindex, inotefn)
+ if (kval > 0) then
+ ktotal += kval
+ knonzeronum += 1
+ endif
+ kindex += 1
+ od
+
+ if (knonzeronum != 0) then
+ kavg = ktotal / knonzeronum
+ knum = 0
+ kindex = 0
+ while (kindex < ilen) do
+ kval = tab:k(kindex, inotefn)
+ kmax = max:k(kmax, kval)
+ if (kval > kavg) then
+ knum += 1
+ if (knum >= imaxnotes) then
+ goto writeout
+ endif
+ endif
+ kindex += 1
+ od
+ else
+ goto complete
+ endif
+
+writeout:
+ kindex = 0
+ kwriteindex = 0
+ while (kindex < ilen) do
+ kval = tab:k(kindex, inotefn)
+ if (kval > kmax/2) then ;kavg) then
+ kout[kwriteindex] = kindex
+ kcertainty[kwriteindex] = kval / kmax
+ kwriteindex += 1
+ if (kwriteindex >= imaxnotes) then
+ goto complete
+ endif
+ endif
+ kindex += 1
+ od
+complete:
+ xout kout, kcertainty
+endop
+
+
+/*
+ Detect the nearest MIDI notes in an audio signal to an arbitrary level of polyphony
+
+ kchanged, kout[], kcertainty[] polydetect ain, imaxnotes, iupdateksmps
+
+ kchanged trigger output as 1 if the detected notes has changed from the last output
+ kout[] array of detected MIDI note numbers, of size imaxnotes
+ kcertainty[] array of detected note certainty ratios, of size imaxnotes
+ ain input audio to examine
+ imaxnotes maximum number of notes to look for, ie polyphony level
+ iupdateksmps analysis window size in ksmps
+*/
+opcode polydetect, kk[]k[], aii
+ ain, imaxnotes, iupdateksmps xin
+ ir = 1024
+ inotefn ftgentmp 0, 0, 128, 2, 0
+ ktimek timeinstk
+
+ fsig pvsanal ain, ir, ir/4, ir, 1
+ _polydetect_bin fsig, ir/8, inotefn ; quarter of spectrum
+
+ klast[] init imaxnotes
+ kchanged = 0
+
+ if (ktimek % iupdateksmps == 0) then
+ kout[], kcertainty[] _polydetect_ranknotes inotefn, imaxnotes
+
+ kcompare[] cmp klast, "==", kout
+
+ if (sumarray(kcompare) == lenarray(kcompare)) then
+ kchanged = 0
+ else
+ kchanged = 1
+ klast = kout
+ endif
+
+ ftset inotefn, k(0)
+ endif
+ xout kchanged, kout, kcertainty
+endop
+
+
+
+
+#end
diff --git a/site/udo/chords.udo b/site/udo/chords.udo
new file mode 100755
index 0000000..87e8775
--- /dev/null
+++ b/site/udo/chords.udo
@@ -0,0 +1,455 @@
+#ifndef UDO_CHORDS
+#define UDO_CHORDS ##
+/*
+ Chord interval data and harmonic formation opcodes
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+; chord names
+gSchords[] fillarray "Augmented",
+ "Augmented 11th",
+ "Augmented major 7th",
+ "Augmented 7th",
+ "Augmented 6th",
+ "Diminished",
+ "Diminished major 7th",
+ "Diminished 7th",
+ "Dominant",
+ "Dominant 11th",
+ "Dominant minor 9th",
+ "Dominant 9th",
+ "Dominant parallel",
+ "Dominant 7th",
+ "Dominant 7th b5",
+ "Dominant 13th",
+ "Dream",
+ "Elektra",
+ "Farben",
+ "Harmonic 7th",
+ "Augmented 9th",
+ "Leadingtone",
+ "Lydian",
+ "Major",
+ "Major 11th",
+ "Major 7th",
+ "Major 7th sharp 11th",
+ "Major 6th",
+ "Major 9th",
+ "Major 13th",
+ "Mediant",
+ "Minor",
+ "Minor 11th",
+ "Minor major 7th",
+ "Minor 9th",
+ "Minor 7th",
+ "Half diminished 7th",
+ "Minor 6th",
+ "Minor 13th",
+ "Mu",
+ "Mystic",
+ "Neapolitan",
+ "Ninth augmented 5th",
+ "Ninth b5th",
+ "Northern lights",
+ "Napoleon hexachord",
+ "Petrushka",
+ "Power",
+ "Psalms",
+ "Secondary dominant",
+ "Secondary leadingtone",
+ "Secondary supertonic",
+ "Sevensix",
+ "7th b9",
+ "7th suspension 4",
+ "Sixth 9th",
+ "Suspended",
+ "Subdominant",
+ "Subdominant parallel",
+ "Submediant",
+ "Subtonic",
+ "Supertonic",
+ "So what",
+ "Thirteenth b9th",
+ "Thirteenth b9th b5th",
+ "Tonic counter parallel",
+ "Tonic",
+ "Tonic parallel",
+ "Tristan",
+ "Viennese trichord 1",
+ "Viennese trichord 2",
+ "Rix1",
+ "Rix2",
+ "Rix3",
+ "Rix4 Major",
+ "Rix4 Minor"
+
+; octave and note names
+gSoctaves[] fillarray "-1", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"
+gSnotenames[] fillarray "C", "C#", "D", "D#", "E", "F", "F#", "G", "A", "Asharp", "B"
+
+; chord interval definitions with index in gichordfns corresponding to names in gSchords
+gichordfns = ftgen(0, 0, -76, -2, 0)
+tabw_i(ftgen(0, 0, -3, -2, 0, 4, 8), 0, gichordfns)
+tabw_i(ftgen(0, 0, -6, -2, 0, 4, 7, 10, 2, 6), 1, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 8, 11), 2, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 8, 10), 3, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 6, 8), 4, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 6), 5, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 3, 6, 11), 6, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 3, 6, 9), 7, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 4, 7), 8, gichordfns)
+tabw_i(ftgen(0, 0, -6, -2, 0, 4, 7, 10, 2, 5), 9, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 7, 10, 1), 10, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 7, 10, 2), 11, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 12, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 7, 10), 13, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 6, 10), 14, gichordfns)
+tabw_i(ftgen(0, 0, -7, -2, 0, 4, 7, 10, 2, 5, 9), 15, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 5, 6, 7), 16, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 7, 9, 1, 4), 17, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 8, 11, 4, 9), 18, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 7, 10), 19, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 7, 10, 3), 20, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 6), 21, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 7, 11, 6), 22, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 4, 7), 23, gichordfns)
+tabw_i(ftgen(0, 0, -6, -2, 0, 4, 7, 11, 2, 5), 24, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 7, 11), 25, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 7, 11, 6), 26, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 7, 9), 27, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 7, 11, 2), 28, gichordfns)
+tabw_i(ftgen(0, 0, -7, -2, 0, 4, 7, 11, 2, 6, 9), 29, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 30, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 31, gichordfns)
+tabw_i(ftgen(0, 0, -6, -2, 0, 3, 7, 10, 2, 5), 32, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 3, 7, 11), 33, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 3, 7, 10, 2), 34, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 3, 7, 10), 35, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 3, 6, 10), 36, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 3, 7, 9), 37, gichordfns)
+tabw_i(ftgen(0, 0, -7, -2, 0, 3, 7, 10, 2, 5, 9), 38, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 2, 4, 7), 39, gichordfns)
+tabw_i(ftgen(0, 0, -6, -2, 0, 6, 10, 4, 9, 2), 40, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 1, 5, 8), 41, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 8, 10, 2), 42, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 6, 10, 2), 43, gichordfns)
+tabw_i(ftgen(0, 0, -11, -2, 1, 2, 8, 0, 3, 6, 7, 10, 11, 4, 7), 44, gichordfns)
+tabw_i(ftgen(0, 0, -6, -2, 0, 1, 4, 5, 8, 9), 45, gichordfns)
+tabw_i(ftgen(0, 0, -6, -2, 0, 1, 4, 6, 7, 10), 46, gichordfns)
+tabw_i(ftgen(0, 0, -2, -2, 0, 7), 47, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 48, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 4, 7), 49, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 6), 50, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 51, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 7, 9, 10), 52, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 7, 10, 1), 53, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 5, 7, 10), 54, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 4, 7, 9, 2), 55, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 5, 7), 56, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 4, 7), 57, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 58, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 59, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 4, 7), 60, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 61, gichordfns)
+tabw_i(ftgen(0, 0, -5, -2, 0, 5, 10, 3, 7), 62, gichordfns)
+tabw_i(ftgen(0, 0, -6, -2, 0, 4, 7, 10, 1, 9), 63, gichordfns)
+tabw_i(ftgen(0, 0, -6, -2, 0, 4, 6, 10, 1, 9), 64, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 65, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 4, 7), 66, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 3, 7), 67, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 3, 6, 10), 68, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 1, 6), 69, gichordfns)
+tabw_i(ftgen(0, 0, -3, -2, 0, 6, 7), 70, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 5, 9), 71, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 6, 8), 72, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 4, 5, 7), 73, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 1, 5, 8), 74, gichordfns)
+tabw_i(ftgen(0, 0, -4, -2, 0, 1, 5, 7), 75, gichordfns)
+
+
+/*
+ Get chord intervals array by index
+ intervals[] chordintervalsbyindex index
+
+ intervals[] intervals for the chord obtained from gichordfns
+ index index in gichordfns to retrieve, corresponding to gSchords names
+*/
+opcode chordintervalsbyindex, i[], i
+ index xin
+ intervals[] tab2array table:i(index, gichordfns)
+ xout intervals
+endop
+
+
+/*
+ Get chord intervals array by index
+ kintervals[] chordintervalsbyindex kindex
+
+ kintervals[] intervals for the chord obtained from gichordfns
+ kindex index in gichordfns to retrieve, corresponding to gSchords names
+*/
+opcode chordintervalsbyindex, k[], k
+ kindex xin
+ kintervals[] init 99 ; TODO : FIX AROUND THIS??
+ copyf2array kintervals, table:k(kindex, gichordfns)
+ ;kintervals[] tab2array
+ xout kintervals
+endop
+
+
+/*
+ Get index of chord name
+ index chordindexbyname Schord
+
+ index index in gichordfns and gSchords
+ Schord chord name as in gSchords
+*/
+opcode chordindexbyname, i, S
+ Schord xin
+ index = 0
+ while (index < lenarray(gSchords)) do
+ if (strcmp(gSchords[index], Schord) == 0) then
+ igoto done
+ endif
+ index += 1
+ od
+ index = 0
+done:
+ xout index
+endop
+
+
+
+/*
+ Get index of chord name
+ index chordindexbyname Schord
+
+ kindex index in gichordfns and gSchords
+ Schord chord name as in gSchords
+*/
+opcode chordindexbyname, k, S
+ Schord xin
+ kindex = 0
+ while (kindex < lenarray:k(gSchords)) do
+ if (strcmpk(gSchords[kindex], Schord) == 0) then
+ kgoto done
+ endif
+ kindex += 1
+ od
+ kindex = 0
+done:
+ xout kindex
+endop
+
+
+/*
+ Get chord intervals by name: return the array from gichordfns that corresponds to the gSchords entry
+ intervals[] chordintervals Schord
+
+ intervals[] intervals for the chord obtained from gichordfns
+ Schord chord name as in gSchords
+*/
+opcode chordintervals, i[], S
+ Schord xin
+ index chordindexbyname Schord
+ intervals[] chordintervalsbyindex index
+ xout intervals
+endop
+
+
+/*
+ Get chord intervals by name: return the array from gichordfns that corresponds to the gSchords entry
+ kintervals[] chordintervals Schord
+
+ kintervals[] intervals for the chord obtained from gichordfns
+ Schord chord name as in gSchords
+*/
+opcode chordintervals, k[], S
+ Schord xin
+ kindex chordindexbyname Schord
+ kintervals[] chordintervalsbyindex kindex
+ xout kintervals
+endop
+
+
+
+
+/*
+ Get the midi note numbers or hz for a chord named Schord using inote as the root midi note number
+ inotes[] chordmidi Schord, inote, [iashz=0]
+
+ inotes[] midi note numbers or hz
+ Schord chord name as in gSchords
+ inote root midi note number
+ iashz 1 returns hz, 0 returns midi note numbers
+*/
+opcode chordmidi, i[], Sio
+ Schord, inote, iashz xin
+ intervals[] chordintervals Schord
+ index = 0
+ while (index < lenarray:i(intervals)) do
+ ivalue = intervals[index] + inote
+ intervals[index] = (iashz == 1) ? cpsmidinn:i(ivalue) : ivalue
+ index += 1
+ od
+ xout intervals
+endop
+
+
+/*
+ Get the midi note numbers or hz for a chord named Schord using knote as the root midi note number
+ knotes[] chordmidi Schord, knote, [iashz=0]
+
+ knotes[] midi note numbers or hz
+ Schord chord name as in gSchords
+ knote root midi note number
+ iashz 1 returns hz, 0 returns midi note numbers
+*/
+opcode chordmidi, k[], Sko
+ Schord, knote, iashz xin
+ kintervals[] chordintervals Schord
+ kindex = 0
+ while (kindex < lenarray:k(kintervals)) do
+ kvalue = kintervals[kindex] + knote
+ kintervals[kindex] = (iashz == 1) ? cpsmidinn:k(kvalue) : kvalue
+ kindex += 1
+ od
+ xout kintervals
+endop
+
+
+
+/*
+ Get the midi note numbers or hz for a chord from gichordfns by index, using inote as the root midi note number
+ inotes[] chordmidibyindex index, inote, [iashz=0]
+
+ inotes[] midi note numbers or hz
+ index chord index as in gichordfns
+ inote root midi note number
+ iashz 1 returns hz, 0 returns midi note numbers
+*/
+opcode chordmidibyindex, i[], iio
+ indexc, inote, iashz xin
+ intervals[] chordintervalsbyindex indexc
+ index = 0
+ while (index < lenarray:i(intervals)) do
+ ivalue = intervals[index] + inote
+ intervals[index] = (iashz == 1) ? cpsmidinn:i(ivalue) : ivalue
+ index += 1
+ od
+ xout intervals
+endop
+
+
+
+/*
+ Get the midi note numbers or hz for a chord from gichordfns by index, using knote as the root midi note number
+ knotes[] chordmidibyindex kindex, knote, [iashz=0]
+
+ knotes[] midi note numbers or hz
+ kindex chord index as in gichordfns
+ knote root midi note number
+ iashz 1 returns hz, 0 returns midi note numbers
+*/
+opcode chordmidibyindex, k[], kko
+ kindexc, knote, iashz xin
+ kintervals[] chordintervalsbyindex kindexc
+ kindex = 0
+ while (kindex < lenarray:k(kintervals)) do
+ kvalue = kintervals[kindex] + knote
+ kintervals[kindex] = (iashz == 1) ? cpsmidinn:k(kvalue) : kvalue
+ kindex += 1
+ od
+ xout kintervals
+endop
+
+
+/*
+ Insert midi note numbers or hz for a chord into a table at k-rate, with the first index set as the length, as used by sequencing_melodic.udo
+
+ chordmidibyindextof ifn, kindex, knote, iashz
+
+ ifn table to set values in
+ kindex chord index as in gichordfns
+ knote root midi note number
+ kcentadd cent add factor (1 = full semitone)
+
+*/
+opcode chordmidibyindextof, 0, ikkO
+ ifn, kindexc, knote, kcentadd xin
+ kintervalfn = table:k(kindexc, gichordfns)
+ klen = tableng:k(kintervalfn)
+ tablewkt klen, 0, ifn
+ kindex = 0
+ while (kindex < klen) do
+ tablewkt tablekt:k(kindex, kintervalfn)+knote+kcentadd, kindex+1, ifn
+ kindex += 1
+ od
+endop
+
+
+/*
+ Insert midi note numbers or hz for a chord into a table at init time, with the first index set as the length, as used by sequencing_melodic.udo
+
+ chordmidibyindextof ifn, kindex, knote, iashz
+
+ ifn table to set values in
+ index chord index as in gichordfns
+ inote root midi note number
+ icentadd cent add factor (1 = full semitone)
+
+*/
+opcode chordmidibyindextof, 0, iiio
+ ifn, indexc, inote, icentadd xin
+ intervalfn = table:i(indexc, gichordfns)
+ ilen = tableng:i(intervalfn)
+ tablew ilen, 0, ifn
+ index = 0
+ while (index < ilen) do
+ tablew table:i(index, intervalfn)+inote+icentadd, index+1, ifn
+ index += 1
+ od
+endop
+
+
+/*
+ LEGACY SUPPORT: possibly deprecated
+ Get the note frequencies for a chord named Schord using inote as the root midi note number
+ inotes[] chordmidicps Schord, inote
+
+ inotes[] note frequencies in hz
+ Schord chord name as in gSchords
+ inote root midi note number
+*/
+opcode chordmidicps, i[], Si
+ Schord, inote xin
+ inotes[] chordmidi Schord, inote, 1
+ xout inotes
+endop
+
+
+
+/*
+ LEGACY SUPPORT: possibly deprecated
+ Get the note frequencies for a chord from gichordfns by index, using inote as the root midi note number
+ inotes[] chordmidicpsbyindex index, inote
+
+ inotes[] note frequencies in hz
+ index chord index as in gichordfns
+ inote root midi note number
+*/
+opcode chordmidicpsbyindex, i[], ii
+ index, inote xin
+ inotes[] chordmidibyindex index, inote, 1
+ xout inotes
+endop
+
+
+
+
+#end
+
diff --git a/site/udo/convolutiondb.udo b/site/udo/convolutiondb.udo
new file mode 100755
index 0000000..55f0aef
--- /dev/null
+++ b/site/udo/convolutiondb.udo
@@ -0,0 +1,110 @@
+#ifndef UDO_CONVOLUTIONDB
+#define UDO_CONVOLUTIONDB ##
+/*
+ SQL database interface to convolution impulse usage
+
+ This file is part of the SONICS UDO collection by Richard Knight 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+
+#include "pgdb.udo"
+#include "host_tools.udo"
+
+gSconvdbPaths[] init 1
+gSconvdbNames[] init 1
+giconvdbChannels[] init 1
+
+opcode convdb_getimpulses, 0, 0
+ Squery = {{
+ select f.id, f_localpath(%d, path), replace(basename(f.path), '.wav', '') as name, s.channels
+ from file f
+ join sound s on f.id = s.file_id
+ join filecollectionrelation fcr on fcr.file_id = f.id
+ join filecollection fc on fc.id = fcr.filecollection_id
+ where fc.name = 'Impulses'
+ order by f.path;
+ }}
+ Sres[][] dbarray gidb, sprintf(Squery, gihost_type)
+ ilen = lenarray(Sres)
+ gSconvdbPaths[] init ilen
+ gSconvdbNames[] init ilen
+ giconvdbChannels[] init ilen
+ index = 0
+ while (index < ilen) do
+ gSconvdbPaths[index] = Sres[index][1]
+ gSconvdbNames[index] = Sres[index][2]
+ giconvdbChannels[index] = strtod(Sres[index][3])
+ index += 1
+ od
+endop
+
+opcode convdb_getnames, S[], 0
+ xout gSconvdbNames
+endop
+
+opcode convdb_getindexbyname, i, S
+ Sname xin
+ index = 0
+ while (index < lenarray(gSconvdbNames)) do
+ if (strcmp(gSconvdbNames[index], Sname) == 0) then
+ goto complete
+ endif
+ index += 1
+ od
+
+complete:
+ xout index
+endop
+
+opcode convdb_randomimpulseindex, i, 0
+ xout round(random(0, lenarray(gSconvdbPaths)))
+endop
+
+opcode convdb_convolve, aa, ai
+ ain, iimpulseindex xin
+ SimpulsePath = gSconvdbPaths[iimpulseindex]
+ aL pconvolve ain, SimpulsePath, -1, 1
+ if (giconvdbChannels[iimpulseindex] == 2) then
+ aR pconvolve ain, SimpulsePath, -1, 2
+ else
+ aR = aL
+ endif
+ xout aL, aR
+endop
+
+
+opcode convdb_convolve, aa, aai
+ ainL, ainR, iimpulseindex xin
+ SimpulsePath = gSconvdbPaths[iimpulseindex]
+ aL pconvolve ainL, SimpulsePath, -1, 1
+ if (giconvdbChannels[iimpulseindex] == 2) then
+ aR pconvolve ainR, SimpulsePath, -1, 2
+ else
+ aL pconvolve ainR, SimpulsePath, -1, 1
+ endif
+ xout aL, aR
+endop
+
+
+opcode convdb_convolve, aa, aS
+ ain, Sname xin
+ impulseindex convdb_getindexbyname Sname
+ aL, aR convdb_convolve ain, impulseindex
+ xout aL, aR
+endop
+
+opcode convdb_convolve, aa, aaS
+ ainL, ainR, Sname xin
+ impulseindex convdb_getindexbyname Sname
+ aL, aR convdb_convolve ainL, ainR, impulseindex
+ xout aL, aR
+endop
+
+
+convdb_getimpulses()
+
+
+#end
diff --git a/site/udo/cs81z.udo b/site/udo/cs81z.udo
new file mode 100755
index 0000000..37fd829
--- /dev/null
+++ b/site/udo/cs81z.udo
@@ -0,0 +1,208 @@
+#ifndef UDO_CS81Z
+#define UDO_CS81Z ##
+
+
+/*
+ license required! GPL
+*/
+
+#include "wavetables.udo"
+gitx_AR ftgen 0, 0, 32, -2, 0,647829,452377,322874,225473,160445,112801,80602,56434,40244,28328,20297,14152,10306,7237,5231,3687,2601,1765,1417,1000,822,572,440,400,380,310,278,165,135,130,125
+gitx_D1R ftgen 0,0,32,-2, -1000,3116605,2179104,1547622,1086731,778176,542607,389089,272208,450000,137953,98004,69000,48235,34239,24524,36000,27000,13859,5774,4387,3254,2040,1573,955,925,575,475,200,125,1,1
+gitx_D2R ftgen 0,0,32,-2, -1000,3101310,2168831,1551896,1084546,771475,541448,387275,270054,192173,134025,96252,67545,47431,34174,24459,17359,11987,8775,6000,4302,2885,2136,1415,1000,700,677,355,331,254,1,1
+gitx_RR ftgen 0,0,16,-2,0,1559542,779813,386094,192749,97322,48481,24041,11808,6038,2957,1570,858,350,118,1
+gitx_D1L ftgen 0,0,16,-2, 0,0.007943,0.01122,0.015849,0.022387,0.031623,0.044668,0.063096,0.089125,0.125893,0.177828,0.251189,0.358922,0.506991,0.716143,1
+gitx_alg[][] init 13, 10 ; ALGORITHMIC MATRIX CONNECTIONS
+gitx_alg fillarray 1,0,0,1,0,1,0, 0,0,0,
+ 1,0,0,1,1,0,0, 0,0,0,
+ 1,0,1,1,0,0,0, 0,0,0,
+ 1,1,0,0,0,1,0, 0,0,0,
+ 1,0,0,0,0,1,0, 0,1,0,
+ 0,0,1,0,1,1,0, 1,1,0,
+ 0,0,0,0,0,1,0, 1,1,0,
+ 0,0,0,0,0,0,0, 1,1,1,
+ 1,0,0,0,0,0,0, 0,0,0, ; only OP2 -> OP1
+ 0,0,0,0,0,0,0, 0,0,0, ; only OP1
+ 1,0,0,0,1,0,0, 0,0,0, ; OP4 -> OP2 -> OP1
+ 1,0,0,0,1,0,1, 0,0,0, ; FD(OP4) -> OP2 -> OP1
+ 1,0,0,1,1,0,1, 0,0,0 ; LATELY
+
+opcode _tx_envelope, k, iiiii
+ iAR,iD1R,iD1L,iD2R,iRR xin
+ iAR table iAR, gitx_AR
+ iD1R table iD1R, gitx_D1R
+ iD1L table iD1L, gitx_D1L
+ iD2R table iD2R, gitx_D2R
+ iRR table iRR, gitx_RR
+ iAR /= 96000
+ iD1R /= 96000
+ iD2R /= 96000
+ iRR /= 96000
+ kRR = iRR
+
+ xtratim iRR
+ kRel release
+
+ kEnv init 0
+ kSta init 0
+
+ kAdd transeg 0, 0.01, -8 ,1
+
+ if kRel > 0 kgoto Release
+ if kSta != 0 goto Next
+
+ kEnv += 1/(iAR*kr)
+ kEnv limit kEnv, 0, 1
+ if kEnv != 1 goto Out
+ kSta = 1
+
+Next:
+ if kSta != 1 goto Next2
+ if iD1R >= 0 goto Next1
+ goto Out
+Next1:
+ kEnv -= (1/(iD1R*kr))
+ kEnv limit kEnv, iD1L, 1
+ if kEnv != iD1L goto Out
+ kSta = 2
+Next2:
+ if iD2R >= 0 goto Next3
+ goto Out
+Next3:
+ kEnv -= 1/(iD2R*kr)
+ kEnv limit kEnv, 0, iD1L
+ goto Out
+Release:
+ kEnv -= 1/(kRR*kr)
+ kEnv limit kEnv, 0, 1
+Out:
+ xout kEnv^6.6*kAdd
+endop
+
+
+opcode _tx_lp, a, a
+ ;setksmps 1
+ aL xin
+ aD0 init 0
+ aD1 init 0
+ iA1 = -0.5100490981424427
+ iB0 = 1
+ iB1 = 1
+ aD2 = aD1
+ aD1 = aD0
+ aD0 = aL-aD1*iA1
+ aout = aD0*iB0+aD1*iB1
+ xout aout*0.24497545092877862
+endop
+
+opcode _tx_hp, a, a
+ ;setksmps 1
+ aL xin
+ aD0 init 0
+ aD1 init 0
+ iA1 = -0.99869495948492626
+ iB0 = 1
+ iB1 = -1
+ aD2 = aD1
+ aD1 = aD0
+ aD0 = aL-aD1*iA1
+ aout=aD0*iB0+aD1*iB1
+ xout aout*0.99934747974246307
+endop
+
+opcode _tx_filter, a, a
+ ain xin
+ xout _tx_lp(_tx_hp(ain))
+endop
+
+
+; instr tx_tbconstruct ; TABLE CONSTRUCTOR from 81z-hold
+
+
+opcode _tx_op, a, akiiiiiik
+ ;setksmps 1
+ ; iKVS - veloc sensivity level 0...7
+ aMod, kCarFreq,i1,i2,i3,i4,i5, iWave,kamp xin
+ aCarFreq = a(kCarFreq)
+ kEnv _tx_envelope i1,i2,i3,i4,i5
+ aPhase phasor aCarFreq
+ aCar tablei aPhase+aMod, iWave, 1, 0, 1
+ xout aCar * kEnv * kamp
+endop
+
+
+
+
+
+opcode tx_synth, a, k[]k[]ii[]k[]k[]i[]i[]i[]i[]i[]
+ kfreqs[], kamps[], ialgorithm, iwaves[], kindexmod[], kfdbk[], iattack[], id1rel[], id1lev[], id2rel[], id2lev[] xin
+
+ aOP4 init 0
+
+ ; ===4 OP ======
+ ; OP parameters:
+ ; mod in, car freq X, att, D1 rel, D1 lev, D2 rel, rel, Wave,KVS
+ aOP1 init 0
+ ain4 = aOP4*gitx_alg[ialgorithm][6]*kfdbk[3]
+
+ aOP4 _tx_op ain4,.5*kfreqs[0], iattack[0], id1rel[0], id1lev[0], id2rel[0], id2lev[0], iwaves[0],kamps[0]
+
+
+ aOP4 = aOP4*kindexmod[2]
+
+ ain3 = aOP4*gitx_alg[ialgorithm][5]*kfdbk[2]
+ aOP3 _tx_op ain3, kfreqs[1], iattack[1], id1rel[1], id1lev[1], id2rel[1], id2lev[1], iwaves[1],kamps[1] ;0.996
+ aOP3 = aOP3*kindexmod[1]
+
+ ain2 = (aOP3*gitx_alg[ialgorithm][3] + aOP4*gitx_alg[ialgorithm][4])*kfdbk[1]
+ aOP2 _tx_op ain2,kfreqs[2], iattack[2], id1rel[2], id1lev[2], id2rel[2], id2lev[2], iwaves[2],kamps[2]
+ aOP2 = aOP2*kindexmod[0]
+
+ ain1 = (aOP2*gitx_alg[ialgorithm][0] + aOP3*gitx_alg[ialgorithm][1] + aOP4*gitx_alg[ialgorithm][2])*kfdbk[0]
+ aOP1 _tx_op ain1,kfreqs[3], iattack[3], id1rel[3], id1lev[3], id2rel[3], id2lev[3], iwaves[3],kamps[3]
+
+ a0 = aOP1 + aOP2*gitx_alg[ialgorithm][7] + aOP3*gitx_alg[ialgorithm][8] + aOP4*gitx_alg[ialgorithm][9]
+ xout _tx_filter(a0)
+endop
+
+/*
+instr 1
+ if (gicount > 20) then
+ gifreqs[] chordmidicpsbyindex int(random(0, lenarray(gSchords)-1)), int(random:i(55, 70))
+ gicount = 0
+ else
+ gicount += 1
+ endif
+ imults[] fillarray 0.25, 0.5, 1, 1.5, 2
+
+ ibasefreq = gifreqs[int(random(0, lenarray(gifreqs)-1))]
+ iwaves[] fillarray wavetable_random(), wavetable_random(), wavetable_random(), wavetable_random()
+ kindexmod[] fillarray random(0, 3), random(0, 3), random(0, 3)
+ kfdbk[] fillarray random(0, 3), random(0, 3), random(0, 3), random(0, 3)
+ kfreqs[] fillarray ibasefreq*imults[int(random(0, lenarray(imults)-1))], ibasefreq*imults[int(random(0, lenarray(imults)-1))], ibasefreq*imults[int(random(0, lenarray(imults)-1))], ibasefreq*imults[int(random(0, lenarray(imults)-1))]
+ kamps[] fillarray random(0.5, 2), random(0.5, 2), random(0.5, 2), random(0.5, 2)
+ iattack[] fillarray random(0, 31), random(0, 31), random(0, 31), random(0, 31)
+ id1rel[] fillarray random(0, 31), random(0, 31), random(0, 31), random(0, 31)
+ id1lev[] fillarray random(0, 31), random(0, 31), random(0, 31), random(0, 31)
+ id2rel[] fillarray random(0, 15), random(0, 15), random(0, 15), random(0, 15)
+ id2lev[] fillarray random(0, 15), random(0, 15), random(0, 15), random(0, 15)
+
+ a1 tx_synth kfreqs, kamps, 4, iwaves, kindexmod, kfdbk, iattack, id1rel, id1lev, id2rel, id2lev
+
+ kamp linseg 1, p3*0.8, 1, p3*0.2, 0
+ kpan line random(0, 1), p3, random(0, 1)
+ outs a1*kamp*0.1*kpan, a1*kamp*0.1*(1-kpan)
+endin
+
+
+instr sched
+ krate random 0.2, 5
+ k1 metro krate
+ schedkwhen k1, 0, 0, 1, random:k(0, 2), random:k(1, 6)
+endin
+*.
+*/
+
+
+#end
+
diff --git a/site/udo/csv.udo b/site/udo/csv.udo
new file mode 100755
index 0000000..1829c0b
--- /dev/null
+++ b/site/udo/csv.udo
@@ -0,0 +1,75 @@
+#ifndef UDO_CSV
+#define UDO_CSV ##
+/*
+ CSV parsing and writing
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+opcode csv_parseline, i[], Si
+ Sline, ilen xin
+ iout[] init ilen
+ index = 0
+ irun = 1
+ while (irun == 1) do
+ ipos strindex Sline, ","
+ if (ipos == -1) then
+ irun = 0
+ iout[index] = strtod(Sline)
+ else
+ Stemp strsub Sline, 0, ipos
+ Sline strsub Sline, ipos+1
+ iout[index] = strtod(Stemp)
+ index += 1
+ endif
+ od
+ xout iout
+endop
+
+opcode csv_formline, S, i[]j
+ iarray[], iformat xin
+ if (iformat == -1) then
+ Sformat = "%f"
+ else
+ Sformat = "%d"
+ endif
+ Sout = ""
+ ilen = lenarray(iarray)
+ index = 0
+ while (index < ilen) do
+ Sout strcat Sout, sprintf(Sformat, iarray[index])
+ if (index < ilen - 1) then
+ Sout strcat Sout, ","
+ endif
+ index += 1
+ od
+ Sout strcat Sout, "\n"
+ xout Sout
+endop
+
+
+; form from table
+opcode csv_formline, S, ij
+ ifn, iformat xin
+ if (iformat == -1) then
+ Sformat = "%f"
+ else
+ Sformat = "%d"
+ endif
+ Sout = ""
+ ilen = ftlen(ifn)
+ index = 0
+ while (index < ilen) do
+ Sout strcat Sout, sprintf(Sformat, table:i(index, ifn))
+ if (index < ilen - 1) then
+ Sout strcat Sout, ","
+ endif
+ index += 1
+ od
+ Sout strcat Sout, "\n"
+ xout Sout
+endop
+
+#end
diff --git a/site/udo/delays.udo b/site/udo/delays.udo
new file mode 100755
index 0000000..948e3cb
--- /dev/null
+++ b/site/udo/delays.udo
@@ -0,0 +1,42 @@
+#ifndef UDO_DELAYS
+#define UDO_DELAYS ##
+/*
+ Delay lines
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ Multitap delay with random oscillated repitching and feedback
+ aout delay_wild ain, imindelay, imaxdelay
+
+ aout delayed signal
+ ain input signal
+ imindelay minimum delay time
+ imaxdelay maximum delay time
+*/
+opcode delay_wild, a, aoo
+ ain, imindelay, imaxdelay xin
+ if (imindelay == 0) then
+ imindelay = 0.2
+ endif
+ if (imaxdelay == 0) then
+ imaxdelay = 0.6
+ endif
+ adb delayr imaxdelay
+ ad1 deltap abs(oscili:k(random:i(imindelay, imaxdelay), random:i(0.01, 0.2)))
+ ad2 deltap abs(oscili:k(random:i(imindelay, imaxdelay), random:i(0.01, 0.2)))
+ delayw ain + (ad1 * random:i(0.1, 0.3)) + (ad2 * random:i(0.1, 0.3))
+
+ adb delayr imaxdelay
+ ad3 deltap abs(oscili:k(random:i(imindelay, imaxdelay), random:i(0.01, 0.2)))
+ ad4 deltap abs(oscili:k(random:i(imindelay, imaxdelay), random:i(0.01, 0.2)))
+ delayw ad2 + (ad3 * random:i(0, 0.3)) + (ad4 * random:i(0, 0.3))
+ xout ad3+ad4
+endop
+
+
+#end \ No newline at end of file
diff --git a/site/udo/experimental.udo b/site/udo/experimental.udo
new file mode 100755
index 0000000..71a9d88
--- /dev/null
+++ b/site/udo/experimental.udo
@@ -0,0 +1,41 @@
+#ifndef UDO_EXPERIMENTAL
+#define UDO_EXPERIMENTAL ##
+
+/*
+ Experimental tonal balance of two signals
+
+ aoutput balancetonal ain, aincomparator
+
+ aoutput balanced signal
+ ain signal to apply changes to
+ aincomparator signal to 'extract' frequency contour from
+*/
+opcode balancetonal, a, aa
+ ain, ainc xin
+ aouts[] init 16
+
+ aouts[0] balance butterbp(ain, 100, 200), butterbp(ainc, 100, 200) ; 0 - 200
+ aouts[1] balance butterbp(ain, 400, 400), butterbp(ainc, 400, 400) ; 200 - 600
+ aouts[2] balance butterbp(ain, 800, 400), butterbp(ainc, 800, 400) ; 600 - 1000
+ aouts[3] balance butterbp(ain, 1200, 400), butterbp(ainc, 1200, 400) ; 1000 - 1400
+ aouts[4] balance butterbp(ain, 1700, 600), butterbp(ainc, 1700, 600) ; 1400 - 2000
+ aouts[5] balance butterbp(ain, 2400, 800), butterbp(ainc, 2400, 800) ; 2000 - 2800
+ aouts[6] balance butterbp(ain, 3200, 800), butterbp(ainc, 3200, 800) ; 2800 - 3600
+ aouts[7] balance butterbp(ain, 4200, 1200), butterbp(ainc, 4200, 1200) ; 3600 - 4800
+ aouts[8] balance butterbp(ain, 5400, 1200), butterbp(ainc, 5400, 1200) ; 4800 - 6000
+ aouts[9] balance butterbp(ain, 7000, 2000), butterbp(ainc, 7000, 2000) ; 6000 - 8000
+ aouts[10] balance butterbp(ain, 9000, 2000), butterbp(ainc, 9000, 2000) ; 8000 - 10000
+ aouts[11] balance butterbp(ain, 11000, 2000), butterbp(ainc, 11000, 2000) ; 10000 - 12000
+ aouts[12] balance butterbp(ain, 14000, 4000), butterbp(ainc, 14000, 4000) ; 12000 - 16000
+ aouts[13] balance butterbp(ain, 18000, 4000), butterbp(ainc, 18000, 4000) ; 16000 - 20000
+ aouts[14] balance butterhp(ain, 20000), butterhp(ainc, 20000)
+
+ aout sumarray aouts
+ xout aout
+endop
+
+
+
+
+
+#end
diff --git a/site/udo/feedback.udo b/site/udo/feedback.udo
new file mode 100755
index 0000000..5f4b7d8
--- /dev/null
+++ b/site/udo/feedback.udo
@@ -0,0 +1,164 @@
+#ifndef UDO_FEEDBACK
+#define UDO_FEEDBACK ##
+/*
+ No-input mixer modelling
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+opcode _arrayfilter, a, ai[]i[]o
+ ain, ifreq[], igain[], index xin
+ aout pareq ain, ifreq[index], igain[index], 0.775, 0
+ if (index < lenarray(ifreq) - 1) then
+ aout _arrayfilter aout, ifreq, igain, index+1
+ endif
+ xout aout
+endop
+
+
+opcode _fbk_componentmodel, a, a
+ a1 xin
+ ifreqs[] fillarray 30, 60, 100, 300, 600, 1200, 2400, 4800, 8000, 10000, 12000, 16000
+ igains[] fillarray 0.4, 0.7, 1, 0.4, 0.6, 0.96, 0.4, 0.7, 0.32, 0.7, 0.8, 0.9
+ a1 _arrayfilter a1, ifreqs, igains
+ xout a1
+endop
+
+opcode _fbk_componentmodel2, a, a
+ a1 xin
+ iminfreq = 20
+
+ adel delayr 1/iminfreq
+ acomb0 deltapi 1/1000
+
+ delayw a1
+
+ aout = a1 - acomb0
+ xout aout
+endop
+
+/*
+ Simulated mixer channel
+ aout fbk_channel ain, klowcut, keqlow, keqmid, keqhigh, kcompmodel
+
+ aout channel output
+
+ ain channel input
+ klowcut low cut toggle (1 is on)
+ keqlow eq low (0 to 1)
+ keqmid eq mid (0 to 1)
+ keqhigh eq high (0 to 1)
+ kcompmodel component model (0 is off, 1 is model components)
+
+*/
+opcode fbk_channel, a, akkkkk
+ a1, klowCut, keqlow, keqmid, keqhigh, kcompmodel xin
+ a1 += noise(0.01, 0)
+ ;a1 dcblock a1
+ a1 butterhp a1, 0.1
+
+ if (klowCut == 1) then
+ a1 butterhp a1, 75
+ endif
+
+
+ a1 pareq a1, 80, keqlow*5, 0.7, 1
+ a1 pareq a1, 2500, keqmid*5, 0.7, 0
+ a1 pareq a1, 12000, keqhigh*5, 0.7, 2
+ ;a1 dam a1, 0.99, 0.9, 0.9, 0.01, 0.01
+ ;a1 limit a1, -0.5, 0.5
+ a1 tanh a1
+ /*krms rms a1
+ if (krms > 1) then
+ a1 = a1 * (1/krms)
+ endif
+*/
+ if (kcompmodel == 1) then
+ a1 _fbk_componentmodel a1
+ endif
+ xout a1
+endop
+
+
+/*
+ params
+ 0 low cut
+ 1 eq low
+ 2 eq mid
+ 3 eq high
+ 4 component model
+ 5 prefade aux on/off
+ 6 aux 1 send
+ 7 aux 2 send
+ 8 mix level
+*/
+opcode fbk_mixer2, a, k[]k[]
+ kparam1[], kparam2[] xin
+ ain1 init 0
+ ain2 init 0
+ aout1 fbk_channel ain1, kparam1[0], kparam1[1], kparam1[2], kparam1[3], kparam1[4]
+ aout2 fbk_channel ain2, kparam2[0], kparam2[1], kparam2[2], kparam2[3], kparam2[4]
+ ain1 = 0
+ ain2 = 0
+ if (kparam1[5] == 1) then
+ ain1 += aout1*kparam1[6]
+ else
+ ain1 += aout1*kparam1[6]*kparam1[8]
+ endif
+ ain2 += aout1*kparam1[7]*kparam1[8]
+
+ if (kparam2[5] == 1) then
+ ain2 += aout1*kparam2[7]
+ else
+ ain2 += aout1*kparam2[7]*kparam2[8]
+ endif
+ ain1 += aout2*kparam2[6]*kparam2[8]
+
+ aout = (aout1*kparam1[8]) + (aout2*kparam2[8])
+ aout pareq aout, 18000, 0.4, 0.7
+ xout aout
+endop
+
+
+
+
+
+opcode fbk_mixer4, a, k[]k[]k[]k[]
+ kparam1[], kparam2[], kparam3[], kparam4[] xin
+ ain1 init 0
+ ain2 init 0
+ ain3 init 0
+ ain4 init 0
+ aout1 fbk_channel ain1, kparam1[0], kparam1[1], kparam1[2], kparam1[3], kparam1[4]
+ aout2 fbk_channel ain2, kparam2[0], kparam2[1], kparam2[2], kparam2[3], kparam2[4]
+ aout3 fbk_channel ain3, kparam3[0], kparam3[1], kparam3[2], kparam3[3], kparam3[4]
+ aout4 fbk_channel ain4, kparam4[0], kparam4[1], kparam4[2], kparam4[3], kparam4[4]
+ ain1 = 0
+ ain2 = 0
+ ain3 = 0
+ ain4 = 0
+ if (kparam1[5] == 1) then
+ ain1 += aout1*kparam1[6]
+ else
+ ain1 += aout1*kparam1[6]*kparam1[8]
+ endif
+ ain2 += aout1*kparam1[7]*kparam1[8]
+
+ if (kparam2[5] == 1) then
+ ain2 += aout1*kparam2[7]
+ else
+ ain2 += aout1*kparam2[7]*kparam2[8]
+ endif
+ ain1 += aout2*kparam2[6]*kparam2[8]
+
+ aout = (aout1*kparam1[8]) + (aout2*kparam2[8])
+ aout pareq aout, 18000, 0.4, 2, 0.7
+ xout aout
+endop
+
+
+#end
+
diff --git a/site/udo/fftconvolve.udo b/site/udo/fftconvolve.udo
new file mode 100755
index 0000000..fe17319
--- /dev/null
+++ b/site/udo/fftconvolve.udo
@@ -0,0 +1,116 @@
+#ifndef UDO_FFTCONVOLVE
+#define UDO_FFTCONVOLVE ##
+/*
+ Block based FFT convolution
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ Per FFT block convolution
+
+ aout blockconvolve ain1, ain2, [ifftsize, ihopsize]
+
+ aout convolved output
+ ain1 input 1
+ ain2 input 2
+ ifftsize FFT size DEFAULT(256)
+ ihopsize FFT hop size DEFAULT(256)
+*/
+opcode blockconvolve, a, aajj
+ idopow = 0 ; use pow on mags
+
+ ain1, ain2, ifftsize, ihopsize xin
+
+ if (ihopsize == -1) then
+ ihopsize = 256
+ endif
+
+ if (ifftsize == -1) then
+ ifftsize = 256
+ endif
+
+
+ setksmps 1
+ iolaps = ifftsize / ihopsize
+ ibw = sr / ifftsize
+
+ kcnt init 0
+ krow init 0
+
+ kOla1[] init ifftsize
+ kOla2[] init ifftsize
+
+ kIn1[] init ifftsize
+ kIn2[] init ifftsize
+
+ kOut[][] init iolaps, ifftsize ; output buffers
+
+ if (kcnt == ihopsize) then
+
+ kWin1[] window kIn1, krow * ihopsize
+ kWin2[] window kIn2, krow * ihopsize
+ kSpec1[] rfft kWin1
+ kSpec2[] rfft kWin2
+
+ kmags1[] mags kSpec1
+ kmags2[] mags kSpec2
+ kmagMult[] = kmags1 * kmags2
+
+ kphs1[] phs kSpec1
+ kphs2[] phs kSpec2
+ kphsMult[] = kphs1 * kphs2
+
+
+ ; pow thing doesn't sound that good
+ if (idopow == 1) then
+ kindex = 0
+ kpows[] init lenarray(kmagMult)
+ while (kindex < lenarray(kmagMult)) do
+ kpows[kindex] pow kmagMult[kindex], 0.5
+ kindex += 1
+ od
+ else
+ kpows[] = kmagMult
+ endif
+
+ kSpec1 pol2rect kpows, kphsMult
+
+
+ ; IFFT + window
+ kRow[] rifft kSpec1
+ kWin1 window kRow, krow * ihopsize
+
+ ; place it on out buffer
+ kOut setrow kWin1, krow
+
+ ; zero the ola buffer
+ kOla1 = 0
+
+ ; overlap add
+ ki = 0
+ until (ki == iolaps) do
+ kRow getrow kOut, ki
+ kOla1 = kOla1 + kRow
+ ki += 1
+ od
+
+ ; update counters
+ krow = (krow + 1) % iolaps
+ kcnt = 0
+ endif
+
+ ; shift audio in/out of buffers
+ kIn1 shiftin ain1
+ kIn2 shiftin ain2
+ aout shiftout kOla1
+ xout aout / iolaps
+
+ ; increment counter
+ kcnt += ksmps
+endop
+
+#end
diff --git a/site/udo/fnml/clay_workings.csd b/site/udo/fnml/clay_workings.csd
new file mode 100755
index 0000000..e11e64b
--- /dev/null
+++ b/site/udo/fnml/clay_workings.csd
@@ -0,0 +1,58 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+kr = 4410
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "sounddb.udo"
+#include "uniqueid.udo"
+#include "bussing.udo"
+
+gicoll_clay[], gicollclay_id sounddb_getcollection "Clay.Hit"
+
+instr play_clay_roll
+ instanceid = uniqueid()
+ icollsize = lenarray(gicoll_clay)
+ ifreqmax = 100
+ kmetrofreq expseg ifreqmax*0.4, p3*0.3, ifreqmax*0.8, p3*0.4, ifreqmax, p4*0.4, ifreqmax*0.5
+ kmetro metro kmetrofreq
+ if (kmetro == 1) then
+ kdbid = gicoll_clay[round:k(random:k(0, icollsize - 1))]
+ schedulek "_play_clay_hit", random(0, 1/kmetrofreq), 1, kdbid, instanceid
+ endif
+
+ kamp expseg 0.001, p3*0.4, 1, p3*0.1, 1, p3*0.4, 0.001
+
+ aL, aR bus_read sprintf("clay_hit%d", instanceid)
+ aL pareq aL, 15000, 4, 0.6
+ aR pareq aR, 15000, 4, 0.6
+ aL *= kamp
+ aR *= kamp
+ outs aL, aR
+endin
+
+
+
+instr _play_clay_hit
+ idbid = p4
+ instanceid = p5
+ ifn = gisounddb[idbid][0]
+ idur = gisounddb[idbid][2]
+ p3 = idur
+
+ aL, aR loscil 0.2, 1, ifn, 1
+ ipan = random(0, 1)
+ bus_mix(sprintf("clay_hit%d", instanceid), aL*ipan, aR*(1-ipan))
+endin
+
+
+</CsInstruments>
+<CsScore>
+i"play_clay_roll" 0 6
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/udo/fnml/instrument_automel.udo b/site/udo/fnml/instrument_automel.udo
new file mode 100755
index 0000000..437acc0
--- /dev/null
+++ b/site/udo/fnml/instrument_automel.udo
@@ -0,0 +1,89 @@
+#ifndef UDO_FNMI_AUTOMEL
+#define UDO_FNMI_AUTOMEL ##
+
+#include "sequencing_table.udo"
+#include "sequencing_melodic.udo"
+#include "bussing.udo"
+
+instr _play_fnmi_automel1
+ icollectionid = p4
+ Sbus = p5
+ ifreqmult = p6
+ inote = mel_randomnote()
+ if (random(0, 1) >= 0.5) then
+ inote += 12
+ endif
+
+ idowaveset = (random(0, 1) >= 0.8) ? 1 : 0
+ if (idowaveset == 1) then
+ if (random(0, 1) >= 0.6) then
+ p3 *= random(1.2, 1.8)
+ endif
+ endif
+
+ ifileid, ipitchratio sounddb_mel_nearestnote icollectionid, inote
+ ifn, ichannels, iduration, irmsnorm sounddb_get ifileid
+
+ ireadtype = round(random(0, 2))
+
+ if (ireadtype == 0) then
+ aL, aR loscil 1, ipitchratio * ifreqmult, ifn, 1
+ else
+ atime line 0, p3, iduration * random(0.5, 1)
+ if (ireadtype == 1) then
+ imincerfftsize = pow(2, round(random(8, 11)))
+ aL, aR mincer atime, random(0.7, 1.1), ipitchratio * ifreqmult, ifn, 0, imincerfftsize
+ elseif (ireadtype == 2) then
+ iwsize = random(441, 4410)
+ aL, aR sndwarpst 1, atime, ipitchratio * ifreqmult * (ftsr(ifn) / sr), ifn, 0, iwsize, iwsize * 0.1, 4, gifnHalfSine, 1
+ endif
+ endif
+ aamp linseg 1, p3*0.9, 1, p3*0.1, 0
+
+ if (random(0, 1) >= 0.6) then
+ aL, aR ringmod1 aL, aR, cpsmidinn(inote) * 2
+ endif
+
+ aL *= aamp
+ aR *= aamp
+ if (idowaveset == 1) then
+ kwaveseta line 0, p3, round(random(2, 5))
+ aL waveset aL, kwaveseta
+ aR waveset aR, kwaveseta
+ endif
+ if (random(0, 1) >= 0.7) then
+ aL distort aL, 0.5, gifnSine
+ aR distort aR, 0.5, gifnSine
+ aL *= 0.4
+ aR *= 0.4
+ endif
+
+ bus_mix(Sbus, aL, aR)
+endin
+
+/*
+ aL, aR automel1 icollectionid1, kchance=1, kdivisions=4, icollectionid2=icollectionid1, kfreqmult=1
+*/
+opcode automel1, aa, iVJjJ
+ icollectionid1, kchance, kdivisions, icollectionid2, kfreqmult xin
+ kdivisions = (kdivisions == -1) ? 4 : kdivisions
+ kfreqmult = (kfreqmult == -1) ? 1 : kfreqmult
+ kcollectionid init icollectionid1
+ Sbus = sprintf("fnmautomel%d", uniqueid())
+ ktrig seq_table gifn_tabseq_all, 0, 4, kchance
+ instrnum = nstrnum("_play_fnmi_automel1") + uniquefrac()
+ if (ktrig == 1 && active:k(instrnum) == 0) then
+ if (icollectionid2 != -1) then
+ if (random:k(0, 1) >= 0.5) then
+ kcollectionid = icollectionid1
+ else
+ kcollectionid = icollectionid2
+ endif
+ endif
+ schedulek(instrnum, 0, gkseq_quartertime * random:k(0.5, 4), kcollectionid, Sbus, kfreqmult)
+ endif
+ aL, aR bus_read Sbus
+ xout aL, aR
+endop
+
+#end
diff --git a/site/udo/fnml/instrument_gchord1.udo b/site/udo/fnml/instrument_gchord1.udo
new file mode 100755
index 0000000..e8c5905
--- /dev/null
+++ b/site/udo/fnml/instrument_gchord1.udo
@@ -0,0 +1,260 @@
+#ifndef UDO_FNMI_GCHORD1
+#define UDO_FNMI_GCHORD1 ##
+/*
+ Portamento glitch-out textural chord player
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+#include "wavetables.udo"
+#include "sequencing_melodic_portamento.udo"
+#include "sounddb.udo"
+#include "bussing.udo"
+#include "frequency_tools.udo"
+#include "uniqueid.udo"
+
+/*
+ sounddb glitchy chord player
+ aL, aR fnmi_gchord1 icollectionid, iattacktime, ireleasetime, icompressmode, kchangechance [, ipitchratio=1, ireadtype=0, ireloadtime=10]
+ aL, aR fnmi_gchord1 Scollection, iattacktime, ireleasetime, icompressmode, kchangechance [, ipitchratio=1, ireadtype=0, ireloadtime=10]
+
+ aL, aR audio output
+
+ icollectionid sounddb collection ID to use
+ Scollection sounddb collection name to use
+ iattacktime start fade in time
+ ireleasetime fade out time on host instrument note end
+ icompressmode 0 = none ; 1 = harshwall ; 2 = normal
+ kchangechance glitchy item change rate chance (1 = every quarter beat)
+ ipitchratio default pitch augmentation ratio
+ ireadtype 0 = sndwarp ; 1 = mincer
+ ireloadtime seconds between reloads of subinstruments to ensure variation in source sound
+*/
+
+opcode fnmi_gchord1, aa, iiiikpoj
+ icollectionid, iattacktime, ireleasetime, icompressmode, kchangechance, ipitchratio, ireadtype, ireloadtime xin
+ ilen = p3
+ ireloadtime = (ireloadtime == -1) ? 10 : ireloadtime
+ instanceid = uniqueid()
+
+ iusedinstruments[] uniqueinstrnums "_fnmi_gchord1_notehold", ftlen(gimel_freqs)
+
+ ; set up notehold instruments
+ index = 0
+ while (index < lenarray(iusedinstruments)) do
+ schedule iusedinstruments[index], 0, ilen, index, icollectionid, ireleasetime, instanceid, ipitchratio, ireadtype
+ index += 1
+ od
+
+
+ ; reload random notehold instrument at periodic intervals (ie to change source sound)
+ klastchangetime init 0
+ ktime timeinsts
+ if (ktime - klastchangetime > ireloadtime) then
+ kindex = round:k(random(0, lenarray(iusedinstruments)-1))
+ kinstrument = iusedinstruments[kindex]
+ turnoff2 kinstrument, 4, 1
+ schedulek kinstrument, ireleasetime*0.5, ilen-ktime, kindex, icollectionid, ireleasetime, instanceid, ipitchratio, ireadtype
+ klastchangetime = ktime
+ endif
+
+
+ ; if host instrument of opcode ends, turn off all notehold instances
+ kreleasing init 0
+ if (release:k() == 1 && kreleasing == 0) then
+ kreleasing = 1
+ kindex = 0
+ while (kindex < lenarray(iusedinstruments)) do
+ turnoff2 iusedinstruments[kindex], 4, 1
+ kindex += 1
+ od
+ endif
+
+ ; if at end of host instrument note length, add release time for relevant fade out
+ if (lastcycle:k() == 1) then
+ xtratim ireleasetime
+ endif
+
+
+ ; trigger for variations in individual notehold instruments
+ idivisions = 4
+ as, aps syncphasor -(gkseq_beathz*idivisions), a(gkseq_beat)
+ ktrig trigger k(as), 0.1, 0
+ chnset ktrig, sprintf("fnmi_gchord1_qtrig%d", instanceid)
+
+
+ ; 'global' change chance for the notehold instruments
+ chnset kchangechance, sprintf("fnmi_gchord1_changechance%d", instanceid)
+
+ ; feed from the notehold instruments
+ aL, aR bus_read sprintf("fnmi_gchord1_out%d", instanceid)
+
+ if (icompressmode == 1) then
+ acomp noise 0.2, 0.4
+ aL balance aL, acomp
+ aR balance aL, acomp
+ elseif (icompressmode == 2) then
+ aL compress aL, aL, -5, 40, 40, 6, 0, 0.1, 0
+ aR compress aR, aR, -5, 40, 40, 6, 0, 0.1, 0
+ aL *= 30
+ aR *= 30
+ endif
+
+ aL dcblock aL
+ aR dcblock aR
+
+ iattacktime = max(0.00001, iattacktime) ; can't be 0 for linseg
+ kamp linsegr 0, iattacktime, 1, ilen - iattacktime, 1, ireleasetime, 0
+
+ xout aL*kamp, aR*kamp
+endop
+
+; overload for named collection
+opcode fnmi_gchord1, aa, Siiikpoj
+ Scollection, iattacktime, ireleasetime, icompressmode, kchangechance, ipitchratio, ireadtype, ireloadtime xin
+ aL, aR fnmi_gchord1 sounddb_getcollectionid(Scollection), iattacktime, ireleasetime, icompressmode, kchangechance, ipitchratio, ireadtype, ireloadtime
+ xout aL, aR
+endop
+
+
+
+/*
+ Used internally by fnmi_gchord1 for sound generation and return via channel
+*/
+instr _fnmi_gchord1_notehold
+ index = p4
+ icollectionid = p5
+ ireleasetime = p6
+ instanceid = p7
+ iuserpitchratio = p8
+ ireadtype = p9
+ kamp table index, gimel_amps
+
+ aL init 0
+ aR init 0
+ if (kamp > 0) then ; all processing
+ kamp *= 0.32 ;0.05
+ kfreq table index, gimel_freqs
+ ibasenote random 30, 50
+ ifileid, ipitchratio sounddb_mel_nearestnote icollectionid, ibasenote
+ ifn = gisounddb[ifileid][0]
+
+ ipitchratio *= ((ireadtype == 0) ? (ftsr(ifn) / sr) : 1) * iuserpitchratio ; sr adjustment for sndwarp required
+ ilen = ftlen(ifn) / ftsr(ifn)
+
+ ; pitch lfo
+ alfo oscil 2.1, 0.15, gifnSine
+ kfreq += k(alfo)
+
+ kpitchratio = (kfreq / cpsmidinn(ibasenote)) * ipitchratio
+
+ istart = random(0, 0.1) ;* ilen
+ iend = random(istart+0.1, 0.4) ; 0.9
+
+ kreadmode init 0
+
+ if (kreadmode == 0) then
+ atime = (abs(oscil(iend-istart, random(0.001, 0.1), gifnSine, random(0, 1)))) * ilen ; TODO: don't think + istart is required here
+ elseif (kreadmode == 1) then
+ atime = (istart * ilen) + ((phasor(random(2, 10)) * (ilen * (iend - istart))))
+ else
+ atime = (istart * ilen) + ((phasor(-random(2, 10)) * (ilen * (iend - istart))))
+ endif
+
+ if (ireadtype == 0) then
+ aL, aR sndwarpst kamp, atime, interp(kpitchratio), ifn, istart, 441*random(1, 100), 44*random(1, 10), 8, gifnHalfSine, 1
+ elseif (ireadtype == 1) then
+ aL, aR mincer atime, kamp, kpitchratio, ifn, 0
+ endif
+
+ kdo_crush init 0
+ kdo_diff init 0
+ kdo_delaytuner init 0
+ kdo_ringmod init 0
+ kdelmult init 8
+ kcrushrange init 4
+ kringmodmult init 2
+ khpfreq init 150
+ kpan init random(0, 1)
+
+ if (kdo_crush == 1) then
+ kcrush = abs:k(oscil:k(kcrushrange, random(0.01, 0.3))) + kcrushrange
+ kcrushamount = abs:k(oscil:k(0.7, random(0.001, 0.2), gifnSaw, random(0, 1)))
+ aLbc, aRbc bitcrush aL, aR, kcrush
+ aL += aLbc * kcrushamount
+ aR += aRbc * kcrushamount
+ endif
+
+ if (kdo_ringmod == 1) then
+ aL, aR ringmod1 aL, aR, kfreq*kringmodmult ;portk(kfreq*kringmodmult, 0.01)
+ endif
+
+ if (kdo_delaytuner == 1) then
+ kdelaytuneramount = abs:k(oscil:k(0.5, random(0.001, 0.2), gifnSine, random(0, 1)))
+ aLdt, aRdt delaytuner aL, aR, max:k(1, kpitchratio)*kdelmult, 0.9 ; portk(kdelmult, 0.1)
+ aL += aLdt * kdelaytuneramount
+ aR += aRdt * kdelaytuneramount
+ endif
+
+ aL butterhp aL, khpfreq
+ aR butterhp aR, khpfreq
+
+ if (kdo_diff == 1) then
+ aL diff aL
+ endif
+
+ ktrig = chnget:k(sprintf("fnmi_gchord1_qtrig%d", instanceid))
+ kchangechance = chnget:k(sprintf("fnmi_gchord1_changechance%d", instanceid))
+
+ if (ktrig == 1 && random:k(0, 1) < kchangechance) then
+ if (random:k(0, 1) > 0.9) then
+ kreadmode = round:k(random:k(0, 2))
+ endif
+
+ if (random:k(0, 1) > 0.9) then
+ khpfreq = random:k(250, 2500)
+ endif
+
+ if (random:k(0, 1) > 0.9) then
+ kdelmult = round:k(random:k(8, 16))
+ endif
+
+ if (random:k(0, 1) > 0.9) then
+ kcrushrange = round:k(random:k(2, 64))
+ endif
+
+ if (random:k(0, 1) > 0.95) then
+ kdo_crush = 1 - kdo_crush
+ endif
+
+ if (random:k(0, 1) > 0.95) then
+ kdo_delaytuner = 1 - kdo_delaytuner
+ endif
+
+ if (random:k(0, 1) > 0.95) then
+ kdo_ringmod = 1 - kdo_ringmod
+ endif
+
+ if (random:k(0, 1) > 0.95) then
+ kringmodmult = pow:k(2, round:k(random:k(-1, 2))) ; 3 up to 8
+ endif
+
+ if (random:k(0, 1) > 0.9) then
+ kpan = random:k(0, 1)
+ endif
+
+ if (random:k(0, 1) > 0.9) then
+ kdo_diff = 1 - kdo_diff
+ endif
+ endif
+
+ aL *= kpan
+ aR *= (1-kpan)
+ endif ; if amp > 0
+
+ krelamp linsegr 1, p3, 1, ireleasetime, 0
+ bus_mix(sprintf("fnmi_gchord1_out%d", instanceid), aL*krelamp, aR*krelamp)
+endin
+
+#end
diff --git a/site/udo/fnml/instrument_portchord.udo b/site/udo/fnml/instrument_portchord.udo
new file mode 100755
index 0000000..fd8b682
--- /dev/null
+++ b/site/udo/fnml/instrument_portchord.udo
@@ -0,0 +1,132 @@
+#ifndef UDO_FNMI_PORTCHORD
+#define UDO_FNMI_PORTCHORD ##
+/*
+ Portamento recursive chord players
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "__config__.udo"
+#include "sequencing_melodic_persistence.udo"
+#include "sequencing_melodic_portamento.udo"
+#include "wavetables.udo"
+#include "sounddb.udo"
+
+
+/*
+ Play continuous chords from melodic sequencer with portamento, using oscil as an instrument and a specified wavetable
+
+ aL, aR portchord_wave [iwavefn=gifnSine, ifreqmult=1, ivibdepth=1, ivibrate=3, index=0]
+
+ aL, aR stereo outputs
+ iwavefn the f-table to use with oscil
+ ifreqmult frequency multiplier of the chord note frequencies to be applied
+ ivibdepth vibrato depth
+ ivibrate vibrato rate in Hz
+ index internal start index of the chord notes; could also be used to specify starting note offset
+*/
+opcode portchord_wave, aa, jpjjo
+ iwavefn, ifreqmult, ivibdepth, ivibrate, index xin
+
+ iwavefn = (iwavefn == -1) ? gifnSine : iwavefn
+ ivibdepth = (ivibdepth == -1) ? 1 : ivibdepth
+ ivibrate = (ivibrate == -1) ? 3 : ivibrate
+
+ kamp table index, gimel_amps
+ kfreq table index, gimel_freqs
+
+ klfo = oscil:k(ivibdepth, ivibrate) ;oscil:k(7, 5)
+ kfreq += klfo
+ kfreq *= ifreqmult
+
+ ;kamp portk kamp, (i(gkseq_beattime) * gimel_portamento_beatratio) ; fade out when change
+
+ aL oscil kamp*0.1, kfreq, iwavefn
+ ipan = random(0, 1)
+ aR = aL * ipan
+ aL *= (1 - ipan)
+
+ if (index + 1 < ftlen(gimel_amps)) then
+ aLx, aRx portchord_wave iwavefn, ifreqmult, ivibdepth, ivibrate, index + 1
+ aL += aLx
+ aR += aRx
+ endif
+
+ xout aL, aR
+endop
+
+
+
+/*
+ Play continuous chords from melodic sequencer with portamento, using a sounddb collection as source sounds
+
+ aL, aR portchord_sound icollectionid [, imode=1, kfreqmult=1, ifftsize=giFFTsize, index=0]
+
+ aL, aR stereo outputs
+ icollectionid collection ID from sounddb to use for the playback
+ imode 0 = read with sndwarp; 1 = read with mincer
+ kfreqmult frequency multiplier of the chord note frequencies to be applied
+ ifftsize FFT size to use when imode = 1 ; default to global setting in __config__.udo
+ index internal start index of the chord notes; could also be used to specify starting note offset
+*/
+opcode portchord_sound, aa, ipPjo
+ icollectionid, imode, kfreqmult, ifftsize, index xin
+
+ ifftsize = (ifftsize == -1) ? giFFTsize : ifftsize
+
+ inote = round(random(50, 80))
+ ibasefreq = cpsmidinn(inote)
+ ifileid, ipitchratio sounddb_mel_nearestnote icollectionid, inote
+
+ ifn = gisounddb[ifileid][0]
+ ichannels = gisounddb[ifileid][1]
+ idur = gisounddb[ifileid][2]
+ irmsnorm = gisounddb[ifileid][3]
+
+ kampb table index, gimel_amps
+ kfreq table index, gimel_freqs
+
+ kamp portk kampb, (i(gkseq_beattime) * gimel_portamento_beatratio) ; fade out when change
+
+ kpitch = (kfreq / ibasefreq) * ipitchratio * kfreqmult ; actual pitch adjustment
+
+ istart = random(0.05, 0.2)
+ iend = random(istart+0.1, 0.8)
+ atime = (abs(oscil(iend - istart, random(0.001, 0.1), gifnSine, random(0, 1))) + istart) * idur
+
+
+ klfo = oscil:k(random(0.0001, 0.009), random(1, 5)) + 1
+ kpitch *= klfo
+
+ if (kamp != 0) then
+ if (imode == 0) then
+ kpitch *= (ftsr(ifn) / sr) ; adjustment for sndwarp required
+
+ ;apitch interp kpitch
+ aL, aR sndwarpst kamp, atime, kpitch, ifn, istart, 4410, 441, 8, gifnHalfSine, 1
+
+ else
+ if (ichannels == 2) then
+ aL, aR mincer atime, kamp, kpitch, ifn, 0, ifftsize
+ else
+ aL mincer atime, kamp, kpitch, ifn, 0, ifftsize
+ aR = aL
+ endif
+ endif
+ endif
+
+ aL *= (1 - irmsnorm) * 0.5
+ aR *= (1 - irmsnorm) * 0.5
+
+ ; recursion for all chord parts
+ if (index + 1 < ftlen(gimel_amps)) then
+ aLx, aRx portchord_sound icollectionid, imode, kfreqmult, ifftsize, index + 1
+ aL += aLx
+ aR += aRx
+ endif
+ xout aL, aR
+endop
+
+#end
diff --git a/site/udo/fnml/instrument_sineblips.udo b/site/udo/fnml/instrument_sineblips.udo
new file mode 100755
index 0000000..5990909
--- /dev/null
+++ b/site/udo/fnml/instrument_sineblips.udo
@@ -0,0 +1,81 @@
+#ifndef UDO_FNMI_SINEBLIP
+#define UDO_FNMI_SINEBLIP ##
+/*
+ Stochastic sequenced sine blip instrument
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "bussing.udo"
+#include "sequencing_melodic.udo"
+
+
+/*
+ Randomised sine blip playback internal instrument
+*/
+instr _fnmi_sineblip
+ Sbus = p4
+ inote = mel_randomnote:i() + 12
+ if (random(0, 1) > 0.5) then
+ inote += 12
+ endif
+
+ if (random(0, 1) > 0.5) then
+ inote += 12
+ endif
+
+ if (random(0, 1) > 0.5) then
+ inote += 12
+ endif
+
+ if (random(0, 1) > 0.99) then
+ inote += 1
+ endif
+ ibasefreq = cpsmidinn(inote)
+ ifreqL = ibasefreq + random(-5, 5)
+ ifreqR = ibasefreq + random(-5, 5)
+ iampL = random(0.5, 1)
+ iampR = random(0.5, 1)
+ aL oscil iampL, ifreqL
+ aR oscil iampR, ifreqR
+
+ if (random(0, 1) > 0.5) then
+ kamp line 1, p3, 0
+ else
+ kamp linseg 1, p3*0.9, 1, p3*0.1, 0
+ endif
+ bus_mix(Sbus, aL*0.6*kamp, aR*0.6*kamp)
+endin
+
+
+/*
+ Randomised sine blip playback scheduler
+*/
+instr fnmi_sineblips
+ if (p4 == 0) then
+ Sbus = "main"
+ else
+ Sbus = p4
+ endif
+
+ if (p5 == 0) then
+ iqtime = i(gkseq_quartertime)
+ else
+ iqtime = p5
+ endif
+
+ inum = random(2, 8)
+ itimeindex = random(0, 8)
+ index = 0
+ while (index < inum) do
+ itime = seq_swingtime:i(iqtime * itimeindex, itimeindex)
+ schedule "_fnmi_sineblip", itime, random(0.05, 0.1), Sbus
+ itimeindex += random(1, 4)
+ index += 1
+ od
+ xtratim iqtime * itimeindex
+endin
+
+#end
diff --git a/site/udo/fnml/instrument_tikbank.udo b/site/udo/fnml/instrument_tikbank.udo
new file mode 100755
index 0000000..895c8b0
--- /dev/null
+++ b/site/udo/fnml/instrument_tikbank.udo
@@ -0,0 +1,78 @@
+#ifndef UDO_FNMI_TIKBANK
+#define UDO_FNMI_TIKBANK ##
+
+
+
+#include "sounddb.udo"
+#include "bussing.udo"
+#include "uniqueid.udo"
+
+
+instr _tik_play
+ ifn = p4
+ ipitch = p5
+ ipan = p6
+ instanceid = p7
+
+ aL, aR loscil 0.4, ipitch, ifn, 1
+ bus_mix(sprintf("tikaudio%d", instanceid), aL*ipan, aR*(1-ipan))
+endin
+
+
+instr _tik_item
+ ifn = p4
+ idur = p5
+ ipitch = p6
+ instanceid = p7
+ index = p8
+
+ kfreq chnget sprintf("tikitemfreq_%d_%d", instanceid, index)
+ ipan = random(0, 1)
+
+ if (kfreq != 0) then
+ kmetro metro kfreq*2, random(0, 1)
+ if (kmetro == 1) then
+ schedulek "_tik_play", 0, idur, ifn, ipitch, ipan, instanceid
+ endif
+ endif
+endin
+
+
+opcode tik_bank, iaa, i[]ipj
+ icollection[], inum, ipitch, instanceid xin
+
+ if (instanceid == -1) then
+ instanceid = uniqueid()
+ endif
+
+ iusedinstruments[] uniqueinstrnums "_tik_item", inum
+
+ index = 0
+ ifileindex = 0
+ while (index < lenarray(iusedinstruments)) do
+ idbindex = icollection[ifileindex]
+ ifn = gisounddb[idbindex][0]
+ idur = gisounddb[idbindex][2] / ipitch
+
+ schedule iusedinstruments[index], 0, p3, ifn, idur, ipitch, instanceid, index
+ if (ifileindex + 1 < lenarray(icollection)) then
+ ifileindex += 1
+ else
+ ifileindex = 0
+ endif
+ index += 1
+ od
+
+ if (release:k() == 1) then
+ kindex = 0
+ while (kindex < lenarray(iusedinstruments)) do
+ turnoff2 iusedinstruments[kindex], 4, 1
+ kindex += 1
+ od
+ endif
+
+ aL, aR bus_read sprintf("tikaudio%d", instanceid)
+ xout instanceid, aL, aR
+endop
+
+#end
diff --git a/site/udo/fnml/instrument_tikclay.udo b/site/udo/fnml/instrument_tikclay.udo
new file mode 100755
index 0000000..73a6e5d
--- /dev/null
+++ b/site/udo/fnml/instrument_tikclay.udo
@@ -0,0 +1,118 @@
+#ifndef UDO_FNMI_TIKCLAY
+#define UDO_FNMI_TIKCLAY ##
+
+#include "sounddb.udo"
+#include "bussing.udo"
+#include "wavetables.udo"
+#include "uniqueid.udo"
+#include "sequencing_melodic.udo"
+
+gitikfn_clay[], gicl_clay sounddb_getcollection "Clay.Hit"
+
+instr _tik_clay_play
+ instanceid = p4
+ ifileid = p5
+ ipitch = p6
+ iwsize = p7
+ irandw = p8
+ ipan = p9
+ iresonfreq = p10
+ idoreson = p11
+
+ ifn = gisounddb[ifileid][0]
+ idur = gisounddb[ifileid][2]
+ istart = idur * random(0, 0.1)
+ atime linseg istart, p3, idur*0.9
+ kamp linseg 1, p3*0.8, 1, p3*0.2, 0
+ aL, aR sndwarpst 1, atime, ipitch, ifn, istart, iwsize, irandw, 2, gifnHalfSine, 1
+
+ if (idoreson == 1) then
+ aLr resony aL, iresonfreq, 6, 16, 10
+ aRr resony aR, iresonfreq, 6, 16, 10
+ aL balance aLr, aL
+ aR balance aRr, aR
+ endif
+
+ ilpf = random(2000, 22050)
+ aL butterlp aL, ilpf
+ aR butterlp aR, ilpf
+ bus_mix(sprintf("tikclayaudio%d", instanceid), aL*ipan*kamp, aR*(1-ipan)*kamp)
+endin
+
+
+instr _tik_clay_item
+ instanceid = p4
+ index = p5
+ kreset init 1
+
+ kfreq = chnget:k(sprintf("tikclay_%d_%d", instanceid, index))
+
+ if (kfreq == 0) then
+ if (kreset == 0) then
+ kreset = 1
+ endif
+ kplaying = 0
+ else
+ kplaying = 1
+ endif
+
+ if (kreset == 1) then
+ kfileid = gitikfn_clay[round:k(random:k(0, lenarray:k(gitikfn_clay) - 1))]
+ kdur = random:k(0.4, 1.3) * gisounddb[kfileid][2]
+ kpitch = random:k(0.1, 2.2)
+ kwsize = random:k(44, 441)
+ krandw = kwsize / 10
+ kpan = random:k(0, 1)
+ kresonfreq = cpsmidinn:k(mel_randomnote:k()) * 2
+ if (random:k(0, 1) >= 0.5) then
+ kresonfreq *= 2
+ endif
+ kreset = 0
+ endif
+
+ if (kplaying == 1) then
+ kmetro metro kfreq, random(0, 1)
+ if (kmetro == 1) then
+ kresonchance = chnget:k(sprintf("tikclay_resonchance_%d", instanceid))
+ kdoreson = (random:k(0, 0.99999) < kresonchance) ? 1 : 0
+ schedulek "_tik_clay_play", 0, kdur, instanceid, kfileid, kpitch, kwsize, krandw, kpan, kresonfreq, kdoreson
+ endif
+ endif
+endin
+
+
+opcode tik_clay_bank, iaa, i
+ inum xin
+
+ icollection[] = gitikfn_clay
+ instanceid = uniqueid()
+
+ iusedinstruments[] uniqueinstrnums "_tik_clay_item", inum
+
+ index = 0
+ ifileindex = 0
+ while (index < lenarray(iusedinstruments)) do
+ ifileid = icollection[ifileindex]
+
+ schedule iusedinstruments[index], 0, p3, instanceid, index
+ if (ifileindex + 1 < lenarray(icollection)) then
+ ifileindex += 1
+ else
+ ifileindex = 0
+ endif
+ index += 1
+ od
+
+ if (release:k() == 1) then
+ kindex = 0
+ while (kindex < lenarray(iusedinstruments)) do
+ turnoff2 iusedinstruments[kindex], 4, 1
+ kindex += 1
+ od
+ endif
+
+ aL, aR bus_read sprintf("tikclayaudio%d", instanceid)
+ xout instanceid, aL, aR
+endop
+
+#end
diff --git a/site/udo/fnml/instrument_vocal.udo b/site/udo/fnml/instrument_vocal.udo
new file mode 100755
index 0000000..f5ac011
--- /dev/null
+++ b/site/udo/fnml/instrument_vocal.udo
@@ -0,0 +1,73 @@
+#ifndef UDO_FNMI_VOCAL
+#define UDO_FNMI_VOCAL ##
+
+#include "wavetables.udo"
+#include "sequencing_melodic.udo"
+#include "sounddb.udo"
+#include "bussing.udo"
+
+
+i_[], gifnmi_vocal_collectionid sounddb_getcollection "VocalAhh1"
+
+
+opcode fnmi_vocal_chord, aa, kpj
+ ktrig, iaddoctave, ireadattackratio xin
+ icollectionid = gifnmi_vocal_collectionid
+ ireadattackratio = (ireadattackratio == -1) ? 0.1 : ireadattackratio
+ if (ktrig == 1) then
+ klen = mel_length:k()
+ knotenum = table:k(0, gimel_current_notes)
+ kpanstep = 1 / knotenum
+ kindex = 0
+ while (kindex < knotenum) do
+ kpan = kpanstep * kindex
+ schedulek "fnmi_vocal", 0, klen, icollectionid, table:k(kindex+1, gimel_current_notes), kpan, ireadattackratio
+ if (iaddoctave == 1) then
+ schedulek "fnmi_vocal", 0, klen, icollectionid, table:k(kindex+1, gimel_current_notes) + 12, 1-kpan, ireadattackratio
+ endif
+ kindex += 1
+ od
+ endif
+ aL, aR bus_read "fnmi_vocal_chord"
+ xout aL, aR
+endop
+
+/*
+instr tester
+ ktrig = 0
+ if (gkmel_section_change == 1) then
+ ktrig = 1
+ endif
+ aL, aR fnmi_vocal_chord ktrig
+ outs aL, aR
+endin
+*/
+
+instr fnmi_vocal
+ icollectionid = p4
+ inote = p5
+ ipan = p6
+ ireadattackratio = p7
+ ifileid, ipitchratio sounddb_mel_nearestnote icollectionid, inote
+ ifn = gisounddb[ifileid][0]
+ ilen = gisounddb[ifileid][2]
+ idur = p3
+ kamp linseg 1, idur*0.1, 1, idur*0.5, 1, idur*0.4, 0
+ ireadrate random 0.01, 1
+
+ ivibrate = random(0.25, 4)
+ klfo oscil 0.006, ivibrate, gifnSine
+ kpitchratio = ipitchratio + klfo
+
+ atime = abs:a(oscil:a(0.68, ireadrate))
+ if (ireadattackratio != 0) then
+ atime = (delay:a(atime, idur*ireadattackratio) + linseg:a(0, idur*ireadattackratio, 0.1)) * ilen
+ endif
+
+ aL, aR mincer atime, kamp*0.2, kpitchratio, ifn, 1, 2048
+ aL butterhp aL, 340
+ aR butterhp aR, 340
+ bus_mix("fnmi_vocal_chord", aL*ipan, aR*(1-ipan))
+endin
+
+#end
diff --git a/site/udo/fnml/transition_click.udo b/site/udo/fnml/transition_click.udo
new file mode 100755
index 0000000..c39338c
--- /dev/null
+++ b/site/udo/fnml/transition_click.udo
@@ -0,0 +1,143 @@
+#ifndef UDO_TRANSITION_CLICK
+#define UDO_TRANSITION_CLICK ##
+
+#include "sequencing_scheduled.udo"
+#include "sequencing_melodic_portamento.udo"
+#include "uniqueid.udo"
+#include "bussing.udo"
+#include "sounddb.udo"
+
+
+gifnmt_clickfn[] sounddb_getcollection "Snare.Regular,Hihat.Closed"
+
+
+instr fnmt_clickplay
+ istartbeats = p4 ; number of beats before next event point as specified in iwaitmode
+ iwaitmode = p5 ; -1 = start of next bar, -2 = start of next bargroup , any other = number of total beats before event point
+ iampmode = p6 ; 0 = linear, 1 = exponential, 2 = random (randomises each individually)
+ idorelease = p7 ; do release, 0 or 1
+ idotune = p8 ; do tuning, 0 or 1
+ idorandom = p9 ; do random sound selection for each click
+ Sbus = strget(p10) ; bus to send to ; defaults to "main"
+ SonHit = strget(p11) ; instrument to call when hit point is reached
+
+
+ if (strcmp(Sbus, "") == 0) then
+ Sbus = "main"
+ endif
+
+ p3 = 600
+
+ if (iwaitmode == -1) then
+ kwaittrig = bar_lastbeatxof(istartbeats)
+ elseif (iwaitmode == -2) then
+ kwaittrig = bargroup_lastbeatxof(istartbeats)
+ else
+ kwaittrig = lastbeatxof(iwaitmode, istartbeats)
+ endif
+ if (kwaittrig == 1) then
+ schedulek "_fnmt_clickplay", 0, i(gkseq_beattime) * istartbeats, iampmode, idorelease, idotune, idorandom, Sbus, SonHit
+ turnoff
+ endif
+endin
+
+
+
+instr _fnmt_clickplay
+ imode = p4 ; 0 = linear, 1 = exponential, 2 = random (randomises each individually)
+ idorelease = p5
+ idotune = p6
+ idorandom = p7
+ Sbus = p8
+ SonHit = p9
+
+ ichannelid = uniqueid()
+ ibeattime = i(gkseq_beattime)
+ itempo = i(gkseq_tempo)
+ ireltime = (idorelease == 1) ? random(ibeattime, ibeattime*4) : 0
+ imtime = p3
+ ibeathz = itempo / 60
+
+ if (strcmp(SonHit, "") != 0) then
+ schedule(SonHit, imtime, 1)
+ endif
+
+ if (imode == 0 || (imode == 2 && random(0, 1) >= 0.5)) then
+ kfreq linsegr ibeathz * round(random(4, 16)), imtime, ibeathz * round(random(4, 16)), ireltime, ibeathz * round(random(4, 16))
+ else
+ kfreq expsegr ibeathz * round(random(4, 16)), imtime, ibeathz * round(random(4, 16)), ireltime, ibeathz * round(random(4, 16))
+ endif
+
+ iminpitch = 6
+ imaxpitch = 20
+ if (imode == 0 || (imode == 2 && random(0, 1) >= 0.5)) then
+ kpitch linsegr random(iminpitch, imaxpitch), imtime, random(iminpitch, imaxpitch), ireltime, random(iminpitch, imaxpitch)
+ else
+ kpitch expsegr random(iminpitch, imaxpitch), imtime, random(iminpitch, imaxpitch), ireltime, random(iminpitch, imaxpitch)
+ endif
+
+ if (imode == 0 || (imode == 2 && random(0, 1) >= 0.5)) then
+ kpan linsegr random(0, 1), imtime, random(0, 1), ireltime, random(0, 1)
+ else
+ kpan expsegr random(0.0001, 1), imtime, random(0.0001, 1), ireltime, random(0.0001, 1)
+ endif
+
+ if (imode == 0 || (imode == 2 && random(0, 1) >= 0.5)) then
+ kamp linsegr 0, p3, 1, ireltime, 0
+ else
+ kamp expsegr 0.0001, imtime, 1, ireltime, 0.0001
+ endif
+
+
+ if (idorandom == 1) then
+ ifn = -1
+ ichans = -1
+ idur = 1
+ else
+ ifileid = gifnmt_clickfn[round(random(0, lenarray(gifnmt_clickfn) - 1))]
+ ifn = gisounddb[ifileid][0]
+ ichans = gisounddb[ifileid][1]
+ idur = gisounddb[ifileid][2]
+ endif
+
+
+ kmetro metro kfreq
+ if (kmetro == 1) then
+ schedulek "_fnmt_clickitem", 0, idur / kpitch, ifn, kamp, kpitch, kpan, ichannelid, ichans
+ endif
+
+ aL, aR bus_read sprintf("fnmt_click%d", ichannelid)
+
+ if (idotune == 1) then
+ aL, aR mel_tune_portamento aL, aR, 0, 2
+ endif
+
+ bus_mix(Sbus, aL, aR)
+endin
+
+instr _fnmt_clickitem
+ ifn = p4
+ iamp = p5
+ ipitch = p6
+ ipan = p7
+ ichannelid = p8
+ ichans = p9
+
+ if (ifn == -1) then ; random sound
+ ifileid = gifnmt_clickfn[round(random(0, lenarray(gifnmt_clickfn) - 1))]
+
+ ifn = gisounddb[ifileid][0]
+ ichans = gisounddb[ifileid][1]
+ p3 = gisounddb[ifileid][2] / ipitch
+ endif
+
+ if (ichans == 2) then
+ a1, a_ loscil iamp, ipitch, ifn, 1
+ else
+ a1 loscil iamp, ipitch, ifn, 1
+ endif
+ aL, aR pan2 a1, ipan
+ bus_mix(sprintf("fnmt_click%d", ichannelid), aL, aR)
+endin
+
+#end
diff --git a/site/udo/fnml/transition_mburn.udo b/site/udo/fnml/transition_mburn.udo
new file mode 100755
index 0000000..f8d35f1
--- /dev/null
+++ b/site/udo/fnml/transition_mburn.udo
@@ -0,0 +1,186 @@
+#ifndef UDO_TRANSITION_MBURN
+#define UDO_TRANSITION_MBURN ##
+
+
+/*
+
+ TODO: use database loads for sounds ie
+
+
+ #include "sound_sdb.udo"
+
+ gifnmt_mbstart[][] sdb_getcollection "MBurn1.Start"
+ gifnmt_mbmid[][] sdb_getcollection "MBurn1.Middle"
+ gifnmt_mbend[][] sdb_getcollection "MBurn1.End"
+*/
+
+#include "sound_db.udo" ; for local sound loads
+#include "sequencing_scheduled.udo"
+#include "sequencing_melodic_portamento.udo" ; for tuning
+#include "wavetables.udo" ; for tuning
+#include "bussing.udo"
+#include "host_tools.udo" ; for dir_random
+#include "uniqueid.udo" ; for channels
+
+
+gifnmt_mbstart[] rdb_loaddir dir_random("2021/mBurn-New/Start")
+gifnmt_mbmid[] rdb_loaddir dir_random("2021/mBurn-New/Middle")
+gifnmt_mbend[] rdb_loaddir dir_random("2021/mBurn-New/End")
+
+
+/*
+ Play mBurn transition
+
+ p4 number of beats before next event as specified in iwaitmode
+ p5 wait mode: -1 = start of next bar, -2 = start of next bargroup , any other = number of total beats before event point (0 = immediate)
+ p6 tune mode: 0 = none, 1 = all, 2 = random
+ p7 bus name to send output to (0 = main)
+*/
+instr fnmt_mburnplay
+ istartbeats = p4
+ iwaitmode = p5
+ itunemode = p6
+
+ if (p7 == 0) then
+ Sbus = "main"
+ else
+ Sbus = p7
+ endif
+
+ p3 = 600
+
+ if (iwaitmode == -1) then
+ kwaittrig = bar_lastbeatxof(istartbeats)
+ elseif (iwaitmode == -2) then
+ kwaittrig = bargroup_lastbeatxof(istartbeats)
+ elseif (iwaitmode == 0) then
+ kwaittrig init 1
+ else
+ kwaittrig = lastbeatxof(iwaitmode, istartbeats)
+ endif
+
+ if (kwaittrig == 1) then
+ schedulek "_fnmt_mburnplay", 0, i(gkseq_beattime) * istartbeats, itunemode, Sbus
+ turnoff
+ endif
+
+endin
+
+
+instr _fnmt_mburnitem
+ ifn = p4
+ imode = p5
+ itune = p6
+ ichannel = p7
+ ireverseread = p8
+ iampmode = p9 ; ; 0 = linear amp, 1 = exponential amp, 2 = no envelope
+ isounddur = p10
+
+
+ ; start
+ if (imode == 1) then
+ if (iampmode == 0) then
+ kamp linseg 0, p3, 1
+ elseif (iampmode == 1) then
+ kamp expseg 0.00001, p3, 1
+ else
+ kamp init 1
+ endif
+
+ ; middle
+ elseif (imode == 2) then
+ if (iampmode == 2) then ; mid = no env choice really
+ kamp init 1
+ else
+ kamp linseg 1, p3*0.8, 1, p3*0.2, 0
+ endif
+
+ ; end
+ elseif (imode == 3) then
+ if (iampmode == 0) then
+ kamp linseg 1, p3, 0 ;linseg 0, p3*0.1, 1, p3*0.5, 1, p3*0.4, 0
+ elseif (iampmode == 1) then
+ kamp expseg 1, p3, 0.00001
+ else
+ kamp init 1
+ endif
+ endif
+
+ atime line 0, p3, isounddur
+
+ if (ireverseread == 1) then
+ atime = isounddur - atime
+ endif
+
+ arepitch init 1;linseg 1, p3, 0.5
+
+ iwinsize = round(random(441, 4410))
+ irandwin = iwinsize / 10
+ aL, aR sndwarpst 1, atime, arepitch, ifn, 0, iwinsize, irandwin, 4, gifnHalfSine, 1
+
+ if (itune >= 1) then
+ ;aL, aR mel_tune aL, aR, gifnSaw, 10, 512, 4
+ aL, aR mel_tune_portamento aL, aR, gifnSine, 16, 1024, 4
+ endif
+ aL = aL*kamp
+ aR = aR*kamp
+ chnmix aL, sprintf("mburn%dL", ichannel)
+ chnmix aR, sprintf("mburn%dR", ichannel)
+endin
+
+
+instr _fnmt_mburnplay
+ itunemode = p4
+ Sbus = p5
+
+ ichannelid = uniqueid()
+ idorelease = 1
+
+ ibeattime = i(gkseq_beattime)
+
+ istartdur = p3
+ imiddur = random(ibeattime, ibeattime*2)
+ ienddur = (idorelease == 1) ? random(ibeattime, ibeattime*4) : 0
+
+
+
+ istartfn[] get_sound gifnmt_mbstart[round(random(0, lenarray(gifnmt_mbstart) - 1))]
+ imidfn[] get_sound gifnmt_mbmid[round(random(0, lenarray(gifnmt_mbmid) - 1))]
+
+ if (idorelease == 1) then
+ iendfn[] get_sound gifnmt_mbend[round(random(0, lenarray(gifnmt_mbend) - 1))]
+ endif
+
+ if (itunemode == 0) then
+ itunestart = 0
+ itunemid = 0
+ ituneend = 0
+ elseif (itunemode == 1) then
+ itunestart = 1
+ itunemid = 1
+ ituneend = 1
+ elseif (itunemode == 2) then
+ itunestart = round(random(0, 1))
+ itunemid = round(random(0, 1))
+ ituneend = round(random(0, 1))
+ endif
+
+ iampmodestart = 0 ; 0 = linear amp, 1 = exponential amp
+ iampmodeend = 0 ; 0 = linear amp, 1 = exponential amp
+ ireversereadstart = round(random(0, 1))
+ ireversereadend = round(random(0, 1))
+
+ event_i "i", "_fnmt_mburnitem", 0, istartdur, istartfn[0], 1, itunestart, ichannelid, ireversereadstart, iampmodestart, istartfn[3]
+ event_i "i", "_fnmt_mburnitem", istartdur, imiddur, imidfn[0], 2, itunemid, ichannelid, 0, 1, imidfn[3]
+
+ if (idorelease == 1) then
+ event_i "i", "_fnmt_mburnitem", istartdur, ienddur, iendfn[0], 3, ituneend, ichannelid, ireversereadend, iampmodeend, iendfn[3]
+ xtratim ienddur + 3
+ endif
+
+
+ aL, aR bus_read sprintf("mburn%d", ichannelid)
+ bus_mix(Sbus, aL, aR)
+endin
+
+#end
diff --git a/site/udo/fnml/transition_snare.udo b/site/udo/fnml/transition_snare.udo
new file mode 100755
index 0000000..16ed2e2
--- /dev/null
+++ b/site/udo/fnml/transition_snare.udo
@@ -0,0 +1,140 @@
+#ifndef UDO_TRANSITION_SNARE
+#define UDO_TRANSITION_SNARE ##
+
+#include "sequencing_scheduled.udo"
+#include "sequencing_melodic_portamento.udo"
+#include "uniqueid.udo"
+#include "bussing.udo"
+#include "sounddb.udo"
+
+gifnmt_rollfndamp[] sounddb_getcollection "Snare.Dampened"
+gifnmt_rollfnregular[] sounddb_getcollection "Snare.Regular"
+gifnmt_rollfnrimhard[] sounddb_getcollection "Snare.Rim.Hard"
+gifnmt_rollfnrimsoft[] sounddb_getcollection "Snare.Rim.Soft"
+gifnmt_rollfnunrestrained[] sounddb_getcollection "Snare.Unrestrained"
+
+
+instr fnmt_rollplay
+ istartbeats = p4 ; number of beats before next event as specified in iwaitmode
+ iwaitmode = p5 ; -1 = start of next bar, -2 = start of next bargroup , any other = number of total beats before event point
+ iampmode = p6 ; 0 = linear, 1 = exponential, 2 = random (randomises each individually)
+ idorelease = p7 ; do release, 0 or 1
+ idotune = p8 ; do tuning, 0 or 1
+ idorandom = p9 ; do random sound selection for each click
+ Sbus = strget(p10) ; bus to send to ; defaults to "main"
+ SonHit = strget(p11) ; instrument to call when hit point is reached
+
+ if (strcmp(Sbus, "") == 0) then
+ Sbus = "main"
+ endif
+
+ p3 = 600
+
+ if (iwaitmode == -1) then
+ kwaittrig = bar_lastbeatxof(istartbeats)
+ elseif (iwaitmode == -2) then
+ kwaittrig = bargroup_lastbeatxof(istartbeats)
+ else
+ kwaittrig = lastbeatxof(iwaitmode, istartbeats)
+ endif
+
+ if (kwaittrig == 1) then
+ schedulek "_fnmt_rollplay1", 0, i(gkseq_beattime) * istartbeats, iampmode, idorelease, idotune, idorandom, Sbus, SonHit
+ turnoff
+ endif
+endin
+
+
+
+instr _fnmt_rollplay1
+ imode = p4 ; 0 = linear, 1 = exponential, 2 = random (randomises each individually)
+ idorelease = p5
+ idotune = p6
+ idorandom = p7
+ Sbus = p8
+ SonHit = p9
+
+ ichannelid = uniqueid()
+ if (idotune == 1) then ; TODO: separate channel for tuned ones
+ ichannelidtuned = uniqueid()
+ endif
+
+ ibeattime = i(gkseq_beattime)
+ itempo = i(gkseq_tempo)
+ ibeathz = itempo / 60
+ ireltime = (idorelease == 1) ? random(ibeattime, ibeattime*4) : 0
+ imtime = p3
+
+ if (strcmp(SonHit, "") != 0) then
+ schedule(SonHit, imtime, 1)
+ endif
+
+ krelease release
+
+ if (imode == 0 || (imode == 2 && random(0, 1) >= 0.5)) then
+ kfreq linsegr ibeathz * round(random(4, 16)), imtime, ibeathz * round(random(4, 16)), ireltime, ibeathz * round(random(4, 16))
+ else
+ kfreq expsegr ibeathz * round(random(4, 16)), imtime, ibeathz * round(random(4, 16)), ireltime, ibeathz * round(random(4, 16))
+ endif
+
+ if (imode == 0 || (imode == 2 && random(0, 1) >= 0.5)) then
+ kamp linsegr 0, p3, 1, ireltime, 0
+ else
+ kamp expsegr 0.0001, imtime, 1, ireltime, 0.0001
+ endif
+
+ ichancepercent = 100
+
+ kmetro metro kfreq
+ ktrig = (kmetro == 1 && random:k(0, 100) < ichancepercent) ? 1: 0
+
+ ksampleset = 1
+ if (krelease == 1) then
+ ksampleset = 0
+ endif
+
+ if (ktrig == 1) then
+ event "i", "_fnmt_rollitem", 0, 1, ksampleset, kamp, ichannelid
+ endif
+
+ aL, aR bus_read sprintf("fnmt_roll%d", ichannelid)
+
+ if (idotune == 1) then
+ aL, aR mel_tune_portamento aL, aR, 0, 16
+ aL butterhp aL, 120
+ aR butterhp aR, 120
+ endif
+
+ bus_mix(Sbus, aL, aR)
+endin
+
+
+
+instr _fnmt_rollitem
+ isampleset = p4
+ iamp = p5
+ ichannelid = p6
+ if (isampleset == 0) then
+ ifileid = gifnmt_rollfndamp[round(random(0, lenarray(gifnmt_rollfndamp) - 1))]
+
+ elseif (isampleset == 1) then
+ ifileid = gifnmt_rollfnrimhard[round(random(0, lenarray(gifnmt_rollfnrimhard) - 1))]
+
+ endif
+
+ ;index = round(random(0, gimaxes[isampleset] - 1))
+ ;ifn = gisamples[isampleset][index]
+ ;p3 = (ftlen(ifn) / ftsr(ifn)) + 0.1
+
+ p3 = gisounddb[ifileid][2]
+ ifn = gisounddb[ifileid][0]
+ if (gisounddb[ifileid][1] == 2) then
+ aL, aR loscil iamp, 1, ifn, 1
+ else
+ aL loscil iamp, 1, ifn, 1
+ aR = aL
+ endif
+ bus_mix(sprintf("fnmt_roll%d", ichannelid), aL, aR)
+endin
+
+#end
diff --git a/site/udo/fnml/transition_snare_preSOUNDDB.udo b/site/udo/fnml/transition_snare_preSOUNDDB.udo
new file mode 100755
index 0000000..70df4e2
--- /dev/null
+++ b/site/udo/fnml/transition_snare_preSOUNDDB.udo
@@ -0,0 +1,133 @@
+#ifndef UDO_TRANSITION_SNARE
+#define UDO_TRANSITION_SNARE ##
+
+#include "sequencing_scheduled.udo"
+#include "sequencing_melodic_portamento.udo"
+#include "uniqueid.udo"
+#include "bussing.udo"
+#include "sound_sdb.udo"
+
+gifnmt_rollfndamp[][] sdb_getcollection "Snare.Dampened"
+gifnmt_rollfnregular[][] sdb_getcollection "Snare.Regular"
+gifnmt_rollfnrimhard[][] sdb_getcollection "Snare.Rim.Hard"
+gifnmt_rollfnrimsoft[][] sdb_getcollection "Snare.Rim.Soft"
+gifnmt_rollfnunrestrained[][] sdb_getcollection "Snare.Unrestrained"
+
+
+instr fnmt_rollplay
+ istartbeats = p4 ; number of beats before next event as specified in iwaitmode
+ iwaitmode = p5 ; -1 = start of next bar, -2 = start of next bargroup , any other = number of total beats before event point
+ iampmode = p6 ; 0 = linear, 1 = exponential, 2 = random (randomises each individually)
+ idorelease = p7 ; do release, 0 or 1
+ idotune = p8 ; do tuning, 0 or 1
+ idorandom = p9 ; do random sound selection for each click
+
+ if (p10 == 0) then
+ Sbus = "main"
+ else
+ Sbus = p10
+ endif
+
+ p3 = 600
+
+ if (iwaitmode == -1) then
+ kwaittrig = bar_lastbeatxof(istartbeats)
+ elseif (iwaitmode == -2) then
+ kwaittrig = bargroup_lastbeatxof(istartbeats)
+ else
+ kwaittrig = lastbeatxof(iwaitmode, istartbeats)
+ endif
+
+ if (kwaittrig == 1) then
+ schedulek "_fnmt_rollplay1", 0, i(gkseq_beattime) * istartbeats, iampmode, idorelease, idotune, idorandom, Sbus
+ turnoff
+ endif
+endin
+
+
+
+instr _fnmt_rollplay1
+ imode = p4 ; 0 = linear, 1 = exponential, 2 = random (randomises each individually)
+ idorelease = p5
+ idotune = p6
+ idorandom = p7
+ Sbus = p8
+
+ ichannelid = uniqueid()
+ if (idotune == 1) then ; TODO: separate channel for tuned ones
+ ichannelidtuned = uniqueid()
+ endif
+
+ ibeattime = i(gkseq_beattime)
+ itempo = i(gkseq_tempo)
+ ibeathz = itempo / 60
+ ireltime = (idorelease == 1) ? random(ibeattime, ibeattime*4) : 0
+ imtime = p3
+
+ krelease release
+
+ if (imode == 0 || (imode == 2 && random(0, 1) >= 0.5)) then
+ kfreq linsegr ibeathz * round(random(4, 16)), imtime, ibeathz * round(random(4, 16)), ireltime, ibeathz * round(random(4, 16))
+ else
+ kfreq expsegr ibeathz * round(random(4, 16)), imtime, ibeathz * round(random(4, 16)), ireltime, ibeathz * round(random(4, 16))
+ endif
+
+ if (imode == 0 || (imode == 2 && random(0, 1) >= 0.5)) then
+ kamp linsegr 0, p3, 1, ireltime, 0
+ else
+ kamp expsegr 0.0001, imtime, 1, ireltime, 0.0001
+ endif
+
+ ichancepercent = 100
+
+ kmetro metro kfreq
+ ktrig = (kmetro == 1 && random:k(0, 100) < ichancepercent) ? 1: 0
+
+ ksampleset = 1
+ if (krelease == 1) then
+ ksampleset = 0
+ endif
+
+ if (ktrig == 1) then
+ event "i", "_fnmt_rollitem", 0, 1, ksampleset, kamp, ichannelid
+ endif
+
+ aL, aR bus_read sprintf("fnmt_roll%d", ichannelid)
+
+ if (idotune == 1) then
+ aL, aR mel_tune_portamento aL, aR, 0, 16
+ aL butterhp aL, 120
+ aR butterhp aR, 120
+ endif
+
+ bus_mix(Sbus, aL, aR)
+endin
+
+
+
+instr _fnmt_rollitem
+ isampleset = p4
+ iamp = p5
+ ichannelid = p6
+ if (isampleset == 0) then
+ isound[] get_sound gifnmt_rollfndamp[round(random(0, lenarray(gifnmt_rollfndamp) - 1))][0]
+ elseif (isampleset == 1) then
+ isound[] get_sound gifnmt_rollfnrimhard[round(random(0, lenarray(gifnmt_rollfnrimhard) - 1))][0]
+ endif
+
+ ;index = round(random(0, gimaxes[isampleset] - 1))
+ ;ifn = gisamples[isampleset][index]
+ ;p3 = (ftlen(ifn) / ftsr(ifn)) + 0.1
+
+ p3 = isound[3]
+ ifn = isound[0]
+ if (isound[2] == 2) then
+ aL, aR loscil iamp, 1, ifn, 1
+ else
+ aL loscil iamp, 1, ifn, 1
+ aR = aL
+ endif
+ bus_mix(sprintf("fnmt_roll%d", ichannelid), aL, aR)
+endin
+
+#end
diff --git a/site/udo/fnml/transition_test.csd b/site/udo/fnml/transition_test.csd
new file mode 100755
index 0000000..d8c7542
--- /dev/null
+++ b/site/udo/fnml/transition_test.csd
@@ -0,0 +1,39 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 44100
+kr = 4410
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "fnml/transition_click.udo"
+#include "fnml/transition_snare.udo"
+#include "fnml/transition_mburn.udo"
+#include "bussing.udo"
+
+instr debug
+ a1 metronome
+ outs a1, a1
+endin
+
+
+instr master
+ ;schedule "fnmt_clickplay", 1, 1, 6, -1, 2, 1, 0, 0, "main"
+ ;schedule "fnmt_rollplay", 1, 1, 6, -1, 2, 1, 0, 0, "main"
+ schedule "fnmt_mburnplay", 1, 1, 6, -1, 0, "main"
+
+ aL, aR bus_read "clicktest"
+ aL, aR freeverb aL, aR, 0.7, 0.4
+ outs aL, aR
+endin
+
+
+</CsInstruments>
+<CsScore>
+i"master" 0 510
+i"debug" 0 501
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/udo/fnml/transitional/base.udo b/site/udo/fnml/transitional/base.udo
new file mode 100755
index 0000000..ba40fbc
--- /dev/null
+++ b/site/udo/fnml/transitional/base.udo
@@ -0,0 +1,141 @@
+#ifndef UDO_FNML_TRANSITIONBASE
+#define UDO_FNML_TRANSITIONBASE ##
+
+instr fnm_transitionplayer
+ if (gifirsttransition == 1) then
+ StransInstrument = "fnm_trans5"
+ gifirsttransition = 0
+ else
+ StransInstrument = arr_random(gSfnm_transitionitems)
+ endif
+ schedule StransInstrument, 0, 36000
+
+ kreleasing init 0
+ if (release:k() == 1 && kreleasing == 0) then
+ turnoff2 StransInstrument, 0, 1
+ kreleasing = 1
+ endif
+ aL, aR bus_read "fnm_transition"
+ bus_mix("master", aL, aR)
+endin
+
+instr fnm_sectionplayer
+ SnoteInstrument = arr_random(gSfnm_chorditems)
+ SbassInstrument = arr_random(gSfnm_bassitems)
+ SaugInstrument = arr_random(gSfnm_augmentitems)
+ iplaybass = (random(0, 1) >= 0.44) ? 1 : 0
+ iplayaugment = (random(0, 1) >= 0.34) ? 1 : 0
+
+
+ if (random(0, 1) >= 0.5) then
+ ifadeintime = random(0.1, 3)
+ else
+ ifadeintime = 0
+ endif
+ index = 0
+ while (index < table:i(0, gimel_current_notes)) do
+ inoteaugment = (random(0, 1) >= 0.7) ? 12 : 0
+ schedule SnoteInstrument, 0, p3, table:i(index+1, gimel_current_notes) + inoteaugment, ifadeintime
+ index += 1
+ od
+ if (iplaybass == 1) then
+ ibassnoteindex = round(random(1, 3))
+ schedule SbassInstrument, 0, p3, table:i(ibassnoteindex, gimel_current_notes) - 24
+ endif
+ if (iplayaugment == 1) then
+ schedule SaugInstrument, 0, p3
+ endif
+
+ aL, aR bus_read "fnm_chordnote"
+ if (random(0, 1) > 0.6) then
+ aLc, aRc simplechorus aL, aR, 0.004, 0.001
+ aL += aLc
+ aR += aRc
+ endif
+ aL butterhp aL, 120
+ aR butterhp aR, 120
+
+ if (iplaybass == 1) then
+ aLb, aRb bus_read "fnm_chordbass"
+ aL += aLb
+ aR += aRb
+ endif
+
+ if (iplayaugment == 1) then
+ aLa, aRa bus_read "fnm_augment"
+ aL += aLa
+ aR += aRa
+ endif
+
+ kamp linseg 1, p3, 1, 0.1, 0
+ aL *= kamp
+ aR *= kamp
+
+ kduck = port(gkduck, 0.1)
+ aL *= (1 - kduck)
+ aR *= (1 - kduck)
+ bus_mix("master", aL*0.8, aR*0.8)
+
+ kreleasing init 0
+ if (release:k() == 1 && kreleasing == 0) then
+ turnoff2 SnoteInstrument, 0, 1
+ if (iplaybass == 1) then
+ turnoff2 SbassInstrument, 0, 1
+ endif
+ if (iplayaugment == 1) then
+ turnoff2 SaugInstrument, 0, 1
+ endif
+ kreleasing = 1
+ endif
+endin
+
+
+instr fnm_sectionmanager
+ gkmel_pause = 1
+
+ ksectionstart init 0.01
+ ksectionchange = 0
+ ktransitioner = chnget:k("fnm_transition")
+ kadvance = chnget:k("fnm_advance")
+ krepeat = chnget:k("fnm_repeat")
+
+ if (changed:k(ktransitioner) == 1) then
+ if (ktransitioner == 0) then
+ turnoff2 "fnm_transitionplayer", 0, 1
+ if (random:k(0, 1) > 0.5) then ; have ultimate transition
+ if (random:k(0, 1) > 0.5) then ; no other output during ultimate transition
+ turnoff2 "fnm_sectionplayer", 0, 1
+ endif
+ gkutransitiontime = random:k(0.2, 1)
+ schedulek("fnm_ultimatetransitionplayer", 0, gkutransitiontime)
+ ksectionstart = gkutransitiontime
+ else
+ gkutransitiontime = 0
+ ksectionstart = 0.01
+ endif
+ ksectionchange = 1
+ else
+ schedulek("fnm_transitionplayer", 0, 36000)
+ endif
+ endif
+
+ if (ksectionchange == 1 || (changed:k(kadvance) == 1 && kadvance == 1) || (changed:k(krepeat) == 1 && krepeat == 1)) then
+ if (krepeat == 1) then
+ ksectionstart = 0
+ endif
+ turnoff2 "fnm_sectionplayer", 0, 1
+ if (krepeat != 1) then
+ gkmel_advance_trig = 1
+ endif
+ schedulek("fnm_sectionplayer", ksectionstart, 36000)
+ endif
+
+ kreleasing init 0
+ if (release:k() == 1 && kreleasing == 0) then
+ turnoff2 "fnm_sectionplayer", 0, 1
+ kreleasing = 1
+ endif
+
+endin
+
+#end \ No newline at end of file
diff --git a/site/udo/frequency_tools.udo b/site/udo/frequency_tools.udo
new file mode 100755
index 0000000..d4f1f0a
--- /dev/null
+++ b/site/udo/frequency_tools.udo
@@ -0,0 +1,375 @@
+#ifndef UDO_FREQUENCYTOOLS
+#define UDO_FREQUENCYTOOLS ##
+/*
+ Frequency tools/effects: shifters, ring modulation, delays, chorus etc
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "wavetables.udo"
+
+
+/*
+ Mono frequency shifter with hilbert transform
+
+ aoutput freqshift1 ainput, kfrequency
+
+ aoutput output audio
+ ainput input audio
+ kfrequency shift frequency [MIN(-10000) MAX(10000) DEFAULT(-500)]
+*/
+opcode freqshift1, a, ak
+ ain, kfreq xin
+ asin oscili 1, kfreq, gifnSine
+ acos oscili 1, kfreq, gifnSine, .25
+ areal, aimag hilbert ain
+ amod1 = areal * acos
+ amod2 = aimag * asin
+ ashift = (amod1 - amod2) * 0.7
+ xout ashift
+endop
+
+
+/*
+ Stereo frequency shifter with hilbert transform
+
+ aoutputL, aoutputR freqshift1 ainputL, ainputR, kfrequency
+
+ aoutputL output audio left
+ aoutputR output audio right
+ ainputL input audio left
+ ainputR input audio right
+ kfrequency shift frequency [MIN(-10000) MAX(10000) DEFAULT(-500)]
+*/
+opcode freqshift1, aa, aak
+ ainL, ainR, kfreq xin
+ asin oscili 1, kfreq, gifnSine
+ acos oscili 1, kfreq, gifnSine, .25
+ arealL, aimagL hilbert ainL
+ arealR, aimagR hilbert ainR
+ amod1L = arealL * acos
+ amod2L = aimagL * asin
+ amod1R = arealR * acos
+ amod2R = aimagR * asin
+ ashiftL = (amod1L - amod2L) * 0.7
+ ashiftR = (amod1R - amod2R) * 0.7
+ xout ashiftL, ashiftR
+endop
+
+
+/*
+ Mono ring modulator with hilbert transform
+
+ aoutput ringmod1 ainput, kfrequency
+
+ aoutput output audio
+ ainput input audio
+ kfrequency modulation frequency [MIN(0) MAX(10000) DEFAULT(440)]
+*/
+opcode ringmod1, a, ak
+ ain, kfreq xin
+ asin oscili 1, kfreq, gifnSine
+ acos oscili 1, kfreq, gifnSine, .25
+ areal, aimag hilbert ain
+ amod1 = areal * acos
+ amod2 = aimag * asin
+ aupshift = (amod1 - amod2) * 0.7
+ adownshift = (amod1 + amod2) * 0.7
+ xout aupshift+adownshift
+endop
+
+/*
+ Stereo ring modulator with hilbert transform
+
+ aoutputL, aoutputR ringmod1 ainputL, ainputR, kfrequency
+
+ aoutputL output audio left
+ aoutputR output audio right
+ ainputL input audio left
+ ainputR input audio right
+ kfrequency modulation frequency [MIN(0) MAX(10000) DEFAULT(440)]
+*/
+opcode ringmod1, aa, aak
+ ainL, ainR, kfreq xin
+ asin oscili 1, kfreq, gifnSine
+ acos oscili 1, kfreq, gifnSine, .25
+ arealL, aimagL hilbert ainL
+ arealR, aimagR hilbert ainR
+ amod1L = arealL * acos
+ amod2L = aimagL * asin
+ amod1R = arealR * acos
+ amod2R = aimagR * asin
+ aupshiftL = (amod1L - amod2L) * 0.7
+ adownshiftL = (amod1L + amod2L) * 0.7
+ aupshiftR = (amod1R - amod2R) * 0.7
+ adownshiftR = (amod1R + amod2R) * 0.7
+ xout aupshiftL+adownshiftL, aupshiftR+adownshiftR
+endop
+
+
+/*
+ Mono frequency shifter with direct modulation
+
+ aoutput freqshift2 ainput, kfrequency, [kshiftmode=1]
+
+ aoutput output audio
+ ainput input audio
+ kfrequency shift frequency [MIN(-10000) MAX(10000) DEFAULT(-500)]
+ kshiftmode shift mode [TYPE(bool) DEFAULT(1)]
+*/
+opcode freqshift2, a, akP
+ ain, kfreq, kshiftmode xin
+ isr4 = sr * 0.25
+
+ ko1frq = isr4 - (1 - kshiftmode) * kfreq
+ aqo1r oscil 1.0, ko1frq, gifnSine, 0.25 ; cosine
+ aqo1i oscil 1.0, ko1frq, gifnSine, 0.0 ; sine
+
+ ko2frq = isr4 + kshiftmode * kfreq
+ aqo2r oscil 1.0, ko2frq, gifnSine, 0.25 ; cosine
+ aqo2i oscil 1.0, ko2frq, gifnSine, 0.0 ; sine
+ awq1r = ain * aqo1r
+
+ awf1r biquad awq1r, 1, 1.6375276435, 1, 1, -0.93027644018, 0.37171017225
+ awf2r biquad awf1r, 1, 0.56037176307, 1, 1, -0.40320752514, 0.73736786626
+ awf3r biquad awf2r, 1, 0.19165327787, 1, 1, -0.15398586410, 0.94001488557
+ aw1fr = awf3r * 0.051532459925
+ awq2r = aw1fr * aqo2r
+
+ awq1i = ain * aqo1i
+ awf1i biquad awq1i, 1, 1.6375276435, 1, 1, -0.93027644018, 0.37171017225
+ awf2i biquad awf1i, 1, 0.56037176307, 1, 1, -0.40320752514, 0.73736786626
+ awf3i biquad awf2i, 1, 0.19165327787, 1, 1, -0.15398586410, 0.94001488557
+
+ aw1fi = awf3i * 0.051532459925
+ awq2i = aw1fi * aqo2i
+ aout = awq2r + awq2i
+ xout aout
+endop
+
+
+/*
+ Stereo frequency shifter with direct modulation
+
+ aoutputL, aoutputR freqshift2 ainputL, ainputR, kfrequency, [kshiftmode=1]
+
+ aoutputL output audio left
+ aoutputR output audio right
+ ainputL input audio left
+ ainputR input audio right
+ kfrequency shift frequency [MIN(-10000) MAX(10000) DEFAULT(-500)]
+ kshiftmode shift mode [TYPE(bool) DEFAULT(1)]
+*/
+opcode freqshift2, aa, aakP
+ ainL, ainR, kfreq, kshiftmode xin
+ isr4 = sr * 0.25
+
+ ko1frq = isr4 - (1 - kshiftmode) * kfreq
+ aqo1r oscil 1.0, ko1frq, gifnSine, 0.25 ; cosine
+ aqo1i oscil 1.0, ko1frq, gifnSine, 0.0 ; sine
+ ko2frq = isr4 + kshiftmode * kfreq
+ aqo2r oscil 1.0, ko2frq, gifnSine, 0.25 ; cosine
+ aqo2i oscil 1.0, ko2frq, gifnSine, 0.0 ; sine
+
+ awq1rL = ainL * aqo1r
+ awq1rR = ainR * aqo1r
+
+ ; Left
+ awf1rL biquad awq1rL, 1, 1.6375276435, 1, 1, -0.93027644018, 0.37171017225
+ awf2rL biquad awf1rL, 1, 0.56037176307, 1, 1, -0.40320752514, 0.73736786626
+ awf3rL biquad awf2rL, 1, 0.19165327787, 1, 1, -0.15398586410, 0.94001488557
+ aw1frL = awf3rL * 0.051532459925
+ awq2rL = aw1frL * aqo2r
+
+ awq1iL = ainL * aqo1i
+ awf1iL biquad awq1iL, 1, 1.6375276435, 1, 1, -0.93027644018, 0.37171017225
+ awf2iL biquad awf1iL, 1, 0.56037176307, 1, 1, -0.40320752514, 0.73736786626
+ awf3iL biquad awf2iL, 1, 0.19165327787, 1, 1, -0.15398586410, 0.94001488557
+
+ aw1fiL = awf3iL * 0.051532459925
+ awq2iL = aw1fiL * aqo2i
+ aoutL = awq2rL + awq2iL
+
+ ; Right
+ awf1rR biquad awq1rR, 1, 1.6375276435, 1, 1, -0.93027644018, 0.37171017225
+ awf2rR biquad awf1rR, 1, 0.56037176307, 1, 1, -0.40320752514, 0.73736786626
+ awf3rR biquad awf2rR, 1, 0.19165327787, 1, 1, -0.15398586410, 0.94001488557
+ aw1frR = awf3rR * 0.051532459925
+ awq2rR = aw1frR * aqo2r
+
+ awq1iR = ainR * aqo1i
+ awf1iR biquad awq1iR, 1, 1.6375276435, 1, 1, -0.93027644018, 0.37171017225
+ awf2iR biquad awf1iR, 1, 0.56037176307, 1, 1, -0.40320752514, 0.73736786626
+ awf3iR biquad awf2iR, 1, 0.19165327787, 1, 1, -0.15398586410, 0.94001488557
+
+ aw1fiR = awf3iR * 0.051532459925
+ awq2iR = aw1fiR * aqo2i
+ aoutR = awq2rR + awq2iR
+
+ xout aoutL, aoutR
+endop
+
+
+
+/*
+ Bit depth reducer/crusher
+
+ aout bitcrush ain, [krush=16]
+
+ aout crushed signal
+ ain input signal
+ krush bits to reduce to [TYPE(int) MIN(1) MAX(128) DEFAULT(16)]
+
+*/
+opcode bitcrush, a, aJ
+ a1, krush xin
+ krush = (krush == -1) ? 16 : krush
+ a1 = round:a(a1 * krush) / krush
+ xout a1
+endop
+
+
+/*
+ Bit depth reducer/crusher (stereo)
+
+ aoutL, aoutR bitcrush ainL, ainR, [krush=16]
+
+ aoutL crushed signal left
+ aoutR crushed signal right
+ ainL input signal left
+ ainR input signal right
+ krush bits to reduce to [TYPE(int) MIN(1) MAX(128) DEFAULT(16)]
+
+*/
+opcode bitcrush, aa, aaJ
+ aL, aR, krush xin
+ krush = (krush == -1) ? 16 : krush
+ aL = round:a(aL * krush) / krush
+ aR = round:a(aR * krush) / krush
+ xout aL, aR
+endop
+
+
+
+/*
+ Resonant delay based tuner
+
+ aout delaytuner ain, kfrequency, kfeedback
+
+ aout tuned/delayed signal summed with input
+ ain input signal
+ kfrequency cps to tune to [MIN(20) MAX(10000) DEFAULT(440)]
+ kfeedback feedback amount [MIN(0) MAX(1) DEFAULT(0.5)]
+*/
+opcode delaytuner, a, akk
+ ain, kfrequency, kfeedback xin
+ adump delayr 1
+ adelayed deltap (1/kfrequency)
+ delayw ain + (adelayed * kfeedback)
+ aout = ain + adelayed
+ xout aout
+endop
+
+
+/*
+ Resonant delay based tuner (stereo)
+
+ aoutL, aoutR delaytuner ainL, ainR, kfrequency, kfeedback
+
+ aoutL, aoutR tuned/delayed signal summed with input
+ ainL, ainR input signal
+ kfrequency cps to tune to [MIN(20) MAX(10000) DEFAULT(440)]
+ kfeedback feedback amount [MIN(0) MAX(1) DEFAULT(0.5)]
+*/
+opcode delaytuner, aa, aakk
+ ainL, ainR, kfrequency, kfeedback xin
+ aoutL delaytuner ainL, kfrequency, kfeedback
+ aoutR delaytuner ainR, kfrequency, kfeedback
+ xout aoutL, aoutR
+endop
+
+
+/*
+ Resonant delay based tuner with hold control. When held, only outputs effected, not dry
+
+ aout glitchtuner ain, kfrequency, ktrig
+
+ aout output signal
+ ain input signal
+ kfrequency cps to tune to [MIN(20) MAX(10000) DEFAULT(440)]
+ khold apply if 1, bypass if 0
+*/
+opcode glitchtuner, a, akk
+ ain, kfrequency, khold xin
+ adump delayr 1
+ adelayed deltap (1/kfrequency)
+ if (khold >= 1) then
+ aout = adelayed
+ else
+ aout = ain
+ endif
+ delayw aout
+ xout aout
+endop
+
+
+/*
+ Resonant delay based tuner with hold control (stereo). When held, only outputs effected, not dry
+
+ aout glitchtuner ain, kfrequency, ktrig
+
+ aoutL, aoutR output signal
+ ainL, ainR input signal
+ kfrequency cps to tune to [MIN(20) MAX(10000) DEFAULT(440)]
+ khold apply if 1, bypass if 0
+*/
+opcode glitchtuner, aa, aakk
+ ainL, ainR, kfrequency, khold xin
+ aoutL glitchtuner ainL, kfrequency, khold
+ aoutR glitchtuner ainR, kfrequency, khold
+ xout aoutL, aoutR
+endop
+
+
+/*
+ Simple chorus
+
+ aout simplechorus ain, krate
+
+ aout output signal
+ ain input signal
+ krate delay rate in Hz
+*/
+opcode simplechorus, a, ak
+ ain, krate xin
+ alfo oscil krate, unirand(1)
+ aout vdelay3 ain, (0.01 + alfo) * 1000, 1000
+ xout aout
+endop
+
+
+/*
+ Simple chorus
+
+ aoutL, aoutR simplechorus ainL, ainR, krateL, krateR=krateL
+
+ aoutL, aoutR output signal
+ ainL, ainR input signal
+ krateL delay rate in Hz left
+ krateR delay rate in Hz right
+*/
+opcode simplechorus, aa, aakJ
+ aL, aR, krateL, krateR xin
+ krateR = (krateR == -1) ? krateL : krateR
+ alfoL oscil krateL, unirand(1)
+ alfoR oscil krateR, unirand(1)
+ aL vdelay3 aL, (0.01 + alfoL) * 1000, 1000
+ aR vdelay3 aR, (0.01 + alfoR) * 1000, 1000
+ xout aL, aR
+endop
+
+
+#end
+
diff --git a/site/udo/fx_autoglitch.udo b/site/udo/fx_autoglitch.udo
new file mode 100755
index 0000000..163110c
--- /dev/null
+++ b/site/udo/fx_autoglitch.udo
@@ -0,0 +1,470 @@
+#ifndef UDO_FXAUTOGLITCH
+#define UDO_FXAUTOGLITCH ##
+/*
+ Autoglitch effects
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022, 2024, 2025
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "pvs_tabproc.udo"
+#include "wavetables.udo"
+
+#ifndef AUTOGLITCH_WINSIZE
+#define AUTOGLITCH_WINSIZE #4410#
+#end
+
+#ifndef AUTOGLITCH_WINRAND
+#define AUTOGLITCH_WINRAND #441#
+#end
+
+
+/*
+ Internal autoglitch UDO for actual audio processing
+
+ aout _fx_autoglitch_audio ain, awritepos, areadpos, ibuflensamps, kdo_distortion, kdist, kporttime, kdo_ampchange, kamp, kreadmode
+
+ aout audio output
+ ain audio input
+ awritepos write position for sampler in samples
+ areadpos read position in samples
+ ibuflensamps length of buffer to be created in samples
+ kdo_distortion apply distortion
+ kdist distortion amount
+ kporttime portamento time
+ kdo_ampchange apply amplitude change
+ kamp amplitude
+ kreadmode read mode: 0 = direct table; 1 = sndwarp; 2 = mincer
+*/
+opcode _fx_autoglitch_audio, a, aaaikkkkkk
+ ain, awritepos, areadpos, ibuflensamps, kdo_distortion, kdist, kporttime, kdo_ampchange, kamp, kreadmode xin
+ ibuffer = ftgentmp(0, 0, -ibuflensamps, -2, 0)
+
+ tablew ain, awritepos, ibuffer
+
+ if (kreadmode == 0) then
+ asig table areadpos, ibuffer
+ elseif (kreadmode == 1) then
+ asig sndwarp 1, areadpos / sr, 1, ibuffer, 0, $AUTOGLITCH_WINSIZE, $AUTOGLITCH_WINRAND, 4, gifnHalfSine, 1
+ elseif (kreadmode == 2) then
+ asig mincer areadpos / sr, 1, 1, ibuffer, 1
+ endif
+
+ asig butterhp dcblock(asig), 70
+
+ if (kdo_distortion == 1 && kdist > 1) then
+ asigd distort asig, portk(kdist, kporttime), gifnSquare
+ asig balance asigd, asig
+ endif
+
+ if (kdo_ampchange == 1) then
+ asig *= portk(kamp, kporttime)
+ endif
+
+ asig butterhp dcblock(asig), 100
+ xout asig
+endop
+
+
+/*
+ Internal autoglitch UDO for control
+
+ awritepos, areadpos, ibuflensamps, kamp, kdist _fx_autoglitch_control kminratio, kchangerate, kchangechance, kporttime, ibuflens
+
+ awritepos write position for sampler in samples
+ areadpos read position in samples
+ ibuflensamps length of buffer to be created in samples
+ kamp amplitude
+ kdist distortion amount
+ kminratio minimum ratio of sound length to use (0 to 1)
+ kchangerate rate of change in Hz
+ kchangechance chance of changing at change rate (0 to 1)
+ kporttime portamento time in seconds
+ ibuflens required buffer length in seconds
+
+*/
+opcode _fx_autoglitch_control, aaikk, kkkki
+ kminratio, kchangerate, kchangechance, kporttime, ibuflens xin
+
+ kminratio = (kminratio == -1) ? 0.2 : kminratio
+ kchangerate = (kchangerate == -1) ? 0.1 : kchangerate
+ kchangechance = (kchangechance == -1) ? 0.8 : kchangechance
+ kporttime = (kporttime == -1) ? 0.2 : kporttime
+ ibuflens = (ibuflens == -1) ? 2 : ibuflens
+
+ ibuflensamps = sr * ibuflens
+ awritepos lphasor 1, 0, ibuflensamps, 1 ; ,3
+
+ kdist init 0
+ klen init random(256, ibuflensamps * 0.5)
+ kstart init random(0, ibuflensamps * 0.5)
+ kreverse init 0
+ kamp init 0
+
+ kcps = ibuflensamps / klen
+ if (kreverse == 1) then
+ kcps = 0 - kcps
+ endif
+
+ areadindex phasor kcps
+ areadpos = ((areadindex * ibuflensamps) + portk(kstart, kporttime))
+
+ kchanger metro kchangerate
+ if (kchanger == 1 && random:k(0, 1) < kchangechance) then
+ klen = random:k(50, ibuflensamps * kminratio)
+ kstart = random:k(0, ibuflensamps - klen)
+ endif
+
+ if (kchanger == 1 && random:k(0, 1) < kchangechance) then
+ kreverse = round:k(random:k(0, 1))
+ endif
+
+ if (kchanger == 1 && random:k(0, 1) < kchangechance) then
+ kdist = random:k(0, 2)
+ endif
+
+ if (kchanger == 1 && random:k(0, 1) < kchangechance) then
+ kamp = round:k(random:k(0, 1))
+ endif
+
+ xout awritepos, areadpos, ibuflensamps, kamp, kdist
+endop
+
+
+
+/*
+ Mono in, mono out autoglitch
+
+ aout fx_autoglitch ain, kminratio, kchangerate, kchangechance, kporttime, kdo_distortion, kdo_ampchange, ibuflens, kreadmode
+
+ aout audio output
+ ain audio input
+ kminratio minimum ratio of sound length to use (0 to 1)
+ kchangerate rate of change in Hz
+ kchangechance chance of changing at change rate (0 to 1)
+ kporttime portamento time in seconds
+ kdo_distortion apply distortion
+ kdo_ampchange apply amplitude change
+ ibuflens required buffer length in seconds
+ kreadmode read mode: 0 = direct table; 1 = sndwarp; 2 = mincer
+
+*/
+opcode fx_autoglitch, a, aJJJJOOjO
+ ain, kminratio, kchangerate, kchangechance, kporttime, kdo_distortion, kdo_ampchange, ibuflens, kreadmode xin
+
+ awritepos, areadpos, ibuflensamps, kamp, kdist _fx_autoglitch_control kminratio, kchangerate, kchangechance, kporttime, ibuflens
+ aout _fx_autoglitch_audio ain, awritepos, areadpos, ibuflensamps, kdo_distortion, kdist, kporttime, kdo_ampchange, kamp, kreadmode
+ xout aout
+endop
+
+
+/*
+ Mono in, stereo out autoglitch
+
+ aoutL, aoutR fx_autoglitch ain, kminratio, kchangerate, kchangechance, kporttime, kdo_distortion, kdo_ampchange, ibuflens, kreadmode
+
+ aoutL left audio output
+ aoutR right audio output
+ ain audio input
+ kminratio minimum ratio of sound length to use (0 to 1)
+ kchangerate rate of change in Hz
+ kchangechance chance of changing at change rate (0 to 1)
+ kporttime portamento time in seconds
+ kdo_distortion apply distortion
+ kdo_ampchange apply amplitude change
+ ibuflens required buffer length in seconds
+ kreadmode read mode: 0 = direct table; 1 = sndwarp; 2 = mincer
+
+*/
+opcode fx_autoglitch, aa, aJJJJOOjO
+ ain, kminratio, kchangerate, kchangechance, kporttime, kdo_distortion, kdo_ampchange, ibuflens, kreadmode xin
+
+ awriteposL, areadposL, ibuflensamps, kampL, kdistL _fx_autoglitch_control kminratio, kchangerate, kchangechance, kporttime, ibuflens
+ awriteposR, areadposR, ibuflensamps, kampR, kdistR _fx_autoglitch_control kminratio, kchangerate, kchangechance, kporttime, ibuflens
+ aL _fx_autoglitch_audio ain, awriteposL, areadposL, ibuflensamps, kdo_distortion, kdistL, kporttime, kdo_ampchange, kampL, kreadmode
+ aR _fx_autoglitch_audio ain, awriteposR, areadposR, ibuflensamps, kdo_distortion, kdistR, kporttime, kdo_ampchange, kampR, kreadmode
+ xout aL, aR
+endop
+
+
+/*
+ Stereo in, stereo out autoglitch
+
+ aoutL, aoutR fx_autoglitch ainL, ainR, kminratio, kchangerate, kchangechance, kporttime, kdo_distortion, kdo_ampchange, ibuflens, istereounique, kreadmode
+
+ aoutL left audio output
+ aoutR right audio output
+ ainL left audio input
+ ainR right audio input
+ kminratio minimum ratio of sound length to use (0 to 1)
+ kchangerate rate of change in Hz
+ kchangechance chance of changing at change rate (0 to 1)
+ kporttime portamento time in seconds
+ kdo_distortion apply distortion
+ kdo_ampchange apply amplitude change
+ ibuflens required buffer length in seconds
+ istereounique stereo mode: 0 = left and right read the same positions from buffers; 1 = left and right are unique
+ kreadmode read mode: 0 = direct table; 1 = sndwarp; 2 = mincer
+
+*/
+opcode fx_autoglitch, aa, aaJJJJOOjjO
+ aL, aR, kminratio, kchangerate, kchangechance, kporttime, kdo_distortion, kdo_ampchange, ibuflens, istereounique, kreadmode xin
+
+ if (istereounique == 1) then
+ awriteposL, areadposL, ibuflensamps, kampL, kdistL _fx_autoglitch_control kminratio, kchangerate, kchangechance, kporttime, ibuflens
+ awriteposR, areadposR, ibuflensamps, kampR, kdistR _fx_autoglitch_control kminratio, kchangerate, kchangechance, kporttime, ibuflens
+ aL _fx_autoglitch_audio aL, awriteposL, areadposL, ibuflensamps, kdo_distortion, kdistL, kporttime, kdo_ampchange, kampL, kreadmode
+ aR _fx_autoglitch_audio aR, awriteposR, areadposR, ibuflensamps, kdo_distortion, kdistR, kporttime, kdo_ampchange, kampR, kreadmode
+ else
+ awritepos, areadpos, ibuflensamps, kamp, kdist _fx_autoglitch_control kminratio, kchangerate, kchangechance, kporttime, ibuflens
+ aL _fx_autoglitch_audio aL, awritepos, areadpos, ibuflensamps, kdo_distortion, kdist, kporttime, kdo_ampchange, kamp, kreadmode
+ aR _fx_autoglitch_audio aR, awritepos, areadpos, ibuflensamps, kdo_distortion, kdist, kporttime, kdo_ampchange, kamp, kreadmode
+ endif
+
+ xout aL, aR
+endop
+
+
+
+/*
+ Spectral processing autoglitch
+
+ aout fx_spectralautoglitch ain, kchangerate, kchangechance, kdo_pitchalter, kporttime
+
+ aout audio output
+ ain audio input
+ kchangerate rate of change in Hz
+ kchangechance chance of changing at change rate (0 to 1)
+ kdo_pitchalter apply pitch alterations
+ kporttime portamento time in seconds
+ ifftsize fft size
+
+*/
+opcode fx_spectralautoglitch, a, akkkkj
+ ainput, kchangerate, kchangechance, kdo_pitchalter, kporttime, ifftsize xin
+
+ kdo_freeze init 0
+ kdo_average init 0
+ kdo_scramble init 0
+ kdo_scale init 0
+ kdo_shift init 0
+ kdo_blur init 0
+ kdo_delay init 0
+ kdo_bubble init 0
+ kdo_wrap init 0
+
+ kbubblechance init 0
+ kbubblestereo init 0
+ kwrapamp init 0
+ kwrapfreq init 0
+ kfreezetime init 0
+ kaveragetime init 0
+ kscale init 1
+ kshift init 0
+ kblur init 0
+ kdelaytime init 0
+ ktime init 0
+ kpos init 0
+
+ ilength = random(1, 4)
+ ir = (ifftsize == -1) ? 512 : ifftsize
+
+ finput pvsanal ainput, ir, ir/4, ir, 1
+
+ ibuffer, ktime pvsbuffer finput, ilength
+ kchange changed kpos
+ aphasor, asyncout syncphasor a(portk(ktime, kporttime) * ilength), a(kchange)
+ kphasor = k(aphasor) + (portk(kpos, kporttime) * ilength)
+ floop pvsbufread kphasor, ibuffer
+
+
+ kchanger metro kchangerate
+ if (kchanger == 1) then
+ if (random:k(0, 1) < kchangechance) then
+ ktime = random:k(0, 1)
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kpos = random:k(0, 1)
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kfreezetime = round:k(random:k(0, 20))
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdo_freeze = 1 - kdo_freeze
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kaveragetime = random:k(0, 10)
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdo_average = 1 - kdo_average
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdo_scramble = 1 - kdo_scramble
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdo_bubble = 1 - kdo_bubble
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kbubblechance = random:k(0, 1)
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kbubblestereo = round:k(random:k(0, 1))
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdo_wrap = 1 - kdo_wrap
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kwrapamp = round:k(random:k(0, ir / 2))
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kwrapfreq = round:k(random:k(0, ir / 2))
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kscale = random:k(0.5, 2)
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdo_scale = 1 - kdo_scale
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kshift = random:k(-500, 100)
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdo_shift = 1 - kdo_shift
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kblur = random:k(0, 1)
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdo_blur = 1 - kdo_blur
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdelaytime = random:k(2, 1000)
+ endif
+
+ if (random:k(0, 1) < kchangechance) then
+ kdo_delay = 1 - kdo_delay
+ endif
+
+ endif
+
+ kready, itpv tpv_anal floop
+
+ if (kdo_scramble == 1) then
+ tpv_scramble kready, itpv, 4
+ endif
+
+ if (kdo_freeze == 1) then
+ tpv_freeze1 kready, itpv, portk(kfreezetime, kporttime)
+ endif
+
+ if (kdo_average == 1) then
+ tpv_average kready, itpv, portk(kaveragetime, kporttime)
+ endif
+
+ if (kdo_bubble == 1) then
+ tpv_bubble kready, itpv, kbubblechance, kbubblestereo
+ endif
+
+ if (kdo_wrap == 1) then
+ tpv_wrap kready, itpv, kwrapamp, kwrapfreq
+ endif
+
+ floop tpv_resynth itpv, floop
+
+ if (kdo_blur == 1) then
+ ;floop pvsblur floop, portk(kblur, kporttime), 1
+ endif
+
+ if (kdo_pitchalter == 1 && kdo_scale == 1) then
+ floop pvscale floop, portk(kscale, kporttime)
+ endif
+
+ if (kdo_pitchalter == 1 && kdo_shift == 1) then
+ floop pvshift floop, portk(kshift, kporttime), 150
+ endif
+
+ aout pvsynth floop
+
+ if (kdo_delay == 1) then
+ kdtime = (kdo_pitchalter == 1) ? portk(kdelaytime, kporttime) : kdelaytime
+ aout vdelay aout, kdtime, 1000
+ endif
+
+ xout aout * 2.5 ; is quieter
+endop
+
+
+
+/*
+ Retrigger glitcher
+
+ aout fx_retrigglitch ifn, ktriglen, areadpos[, kpitchratio=1, kapplywindowing=1, kwinfn=gifnHanning]
+
+ aout audio output
+ ifn input audio ftable (mono)
+ ktriglen retrigger length in seconds
+ areadpos read position in seconds; -1 is set randomly upon each retrigger
+ kpitchratio resample ratio; 1 = normal pitch
+ kapplywindowing amplitude enveloping: 0 = none; 1 = apply Hanning window to output
+ kwinfn window function table
+*/
+opcode fx_retrigglitch, a, ikaPPJ
+ ifn, ktriglen, areadpos, kpitchratio, kapplywindowing, kwinfn xin
+ ifnsr = ftsr(ifn)
+ ifnlen = ftlen(ifn)
+ ifnlens = ifnlen / ifnsr
+
+ kfreq = 1 / ktriglen
+ ktrig metro kfreq
+
+ if (ktrig == 1 && k(areadpos) == -1) then
+ kstart random 0, ifnlens - ktriglen
+ areadpos = a(kstart)
+ endif
+
+ areadpos = areadpos / ifnlens
+ irate = 1 / ifnlens
+ areadpos samphold areadpos, ktrig
+ async upsamp ktrig
+ apos, a_ syncphasor irate * kpitchratio, async
+ apos += areadpos
+ apos *= ifnlen
+
+ aout tablei apos, ifn
+ ;aout, a_ mincer (apos / ifnlen) * ifnlens, 1, kpitchratio, ifn, 1
+
+ if (kapplywindowing == 1) then
+ if (kwinfn == -1) then
+ kwinfn = gifnHanning
+ endif
+ aenv oscilikt 1, kfreq, kwinfn
+ aout *= aenv
+ endif
+
+ aout dcblock aout
+ xout aout
+endop
+
+
+#end
+
diff --git a/site/udo/fx_autoglitchbeat.udo b/site/udo/fx_autoglitchbeat.udo
new file mode 100755
index 0000000..a39988c
--- /dev/null
+++ b/site/udo/fx_autoglitchbeat.udo
@@ -0,0 +1,168 @@
+#ifndef UDO_FXAUTOGLITCHBEAT
+#define UDO_FXAUTOGLITCHBEAT ##
+
+/*
+ Autoglitch effects, quantised
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "pvs_tabproc.udo"
+#include "sequencing.udo"
+#include "frequency_tools.udo"
+
+
+/*
+ beat based autoglitcher in the style of dBlue Glitch
+
+ aoutL, aoutR fx_autoglitchbeat aL, aR, krandomisetrig, ipatternlength
+
+ aoutL, aoutR outputs
+ aL, aR inputs
+ krandomisetrig trigger to randomise the pattern
+ ipatterlength pattern length in semiquavers, defaults to 32
+*/
+opcode fx_autoglitchbeat, aa, aaOj
+ aL, aR, krandomisetrig, ipatternlength xin
+
+ ipatternlength = (ipatternlength == -1) ? 32 : ipatternlength
+ ifnpatterns = ftgentmp(0, 0, -ipatternlength, -7, 0)
+ ifnparams = ftgentmp(0, 0, -(ipatternlength * 2), -7, 0)
+ ifnbufferL = ftgentmp(0, 0, -44100, -7, 0)
+ ifnbufferR = ftgentmp(0, 0, -44100, -7, 0)
+ imaxeffect = 7; 5 for no tpv
+
+ kbeat init 0
+ knexteffect init 0
+ klasteffect init 0
+ kinit init 1
+ kwriting init 1
+ kparam0 init 0
+ kparam1 init 0
+ keffect init 0
+
+ if (kwriting == 1) then
+ awritepos, a_ syncphasor 1, a(gkseq_beat)
+ tablew aL, awritepos, ifnbufferL, 1
+ tablew aR, awritepos, ifnbufferR, 1
+ endif
+
+
+ if (krandomisetrig == 1 || kinit == 1) then
+ kindex = 0
+ while (kindex < ipatternlength) do
+ ksame = (kindex != 0 && random:k(0, 1) > 0.7) ? 1 : 0
+
+ if (ksame == 0) then
+ keffect = round:k(random:k(0, imaxeffect))
+ if (keffect == 0) then ; freqshift
+ kparam0 = random:k(-1000, 50)
+ elseif (keffect == 1) then ; ring mod
+ kparam0 = random:k(110, 440)
+ elseif (keffect == 2) then ; bit crush
+ kparam0 = random:k(4, 32)
+ elseif (keffect == 3 || keffect == 4 || keffect == 5) then ; retriggers and stretches
+ kparam0 = pow:k(2, round:k(random:k(1, 3))) ; division time ; was up to 4
+ if (random:k(0, 1) > 0.8) then ; reverse parameter
+ kparam1 = 1
+ else
+ kparam1 = 0
+ endif
+ endif
+ endif
+
+ tabw keffect, kindex, ifnpatterns
+ tabw kparam0, kindex, ifnparams
+ tabw kparam1, kindex + (1 * ftlen(ifnpatterns)), ifnparams
+
+ kindex += 1
+ od
+ kinit = 0
+ endif
+
+ ktime timeinsts
+
+ if (gkseq_beat == 1) then
+ kcurrenteffect tab kbeat, ifnpatterns
+ klasteffect tab (kbeat - 1 < 0) ? ipatternlength - 1 : kbeat - 1, ifnpatterns
+ kparam0 tab kbeat, ifnparams
+ kparam1 tab kbeat + (1 * ftlen(ifnpatterns)), ifnparams
+ kbeat = (kbeat + 1 < ipatternlength) ? kbeat + 1 : 0
+
+ if (kcurrenteffect != klasteffect) then
+ kwriting = 1
+ kwritestart = ktime
+ endif
+ endif
+
+
+ if (kwriting == 1 && ktime - kwritestart >= gkseq_beattime) then ; record for one beat
+ kwriting = 0
+ endif
+
+ if (kcurrenteffect == 0) then ; freqshift
+ aL, aR freqshift1 aL, aR, kparam0
+
+ elseif (kcurrenteffect == 1) then ; ring mod
+ aL, aR ringmod1 aL, aR, kparam0
+
+ elseif (kcurrenteffect == 2) then ; bit crush
+ aL, aR bitcrush aL, aR, kparam0
+
+ elseif (kcurrenteffect == 3 || kcurrenteffect == 4) then ; retriggers
+ kdivisiontime = gkseq_beattime / kparam0
+ ;kwriting vdel_k 0, kdivisiontime, 1
+ kwritelength = kdivisiontime
+ if (kparam1 == 0) then
+ aposraw = phasor(gkseq_beathz * kparam0)
+ else
+ aposraw = 1 - phasor(gkseq_beathz * kparam0)
+ endif
+
+ if (kcurrenteffect == 4) then
+ aposaug = abs:a(oscil:a(1, gkseq_beathz / 8))
+ apos = aposaug * (aposraw * kdivisiontime * ftsr(ifnbufferL))
+ else
+ apos = aposraw * kdivisiontime * ftsr(ifnbufferL)
+ endif
+
+ aL tablei apos, ifnbufferL
+ aR tablei apos, ifnbufferR
+
+ elseif (kcurrenteffect == 5) then ; stretch
+ kdivisiontime = gkseq_beattime / kparam0
+ if (kparam1 == 0) then
+ aposraw = phasor(gkseq_beathz / kparam0)
+ else
+ aposraw = 1 - phasor(gkseq_beathz / kparam0)
+ endif
+ atime = aposraw * kdivisiontime
+ kpitch init 1
+ aL mincer atime, 1, kpitch, ifnbufferL, 1
+ aR mincer atime, 1, kpitch, ifnbufferL, 1
+
+ elseif (kcurrenteffect == 6 || kcurrenteffect == 7) then
+ ir = 512
+ finputL pvsanal aL * 1.5, ir, ir/4, ir, 1
+ finputR pvsanal aR * 1.5, ir, ir/4, ir, 1
+ kready, itpvL tpv_anal finputL
+ kready, itpvR tpv_anal finputR
+
+ tpv_scramble kready, itpvL, 1
+ tpv_scramble kready, itpvR, 1
+
+ finputL tpv_resynth itpvL, finputL
+ finputR tpv_resynth itpvR, finputR
+ aL pvsynth finputL
+ aR pvsynth finputR
+
+ endif
+ xout aL, aR
+endop
+
+
+
+#end
+
diff --git a/site/udo/host_platform.udo b/site/udo/host_platform.udo
new file mode 100755
index 0000000..2b82eb7
--- /dev/null
+++ b/site/udo/host_platform.udo
@@ -0,0 +1,45 @@
+#ifndef UDO_HOSTPLATFORM
+#define UDO_HOSTPLATFORM ##
+
+/*
+ Host platform detection
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+; gihost_type: 0 = windows , 1 = linux, 2 = WASM
+
+
+#ifndef WEB
+gihost_type filevalid "/bin/ls"
+#end
+
+#ifdef WEB
+gihost_type = 2
+#end
+
+gihost_max32bitftlen = 16777216
+
+/*
+ Get temp dir as string
+*/
+opcode host_tempdir, S, 0
+ Spath = "" ; default to root assuming slash is appended to output
+ if (gihost_type == 0) then
+ Spath = "%TEMP%"
+ elseif (gihost_type == 1) then
+ Spath = "/tmp"
+ endif
+ xout Spath
+endop
+
+/*
+ Get whether the current Csound instance is 32 or 64 bit
+*/
+opcode is64bit, i, 0
+ xout (1 & 1e9+9)
+endop
+
+#end
diff --git a/site/udo/host_tools.udo b/site/udo/host_tools.udo
new file mode 100755
index 0000000..012e70d
--- /dev/null
+++ b/site/udo/host_tools.udo
@@ -0,0 +1,69 @@
+#ifndef UDO_HOSTTOOLS
+#define UDO_HOSTTOOLS ##
+
+/*
+ Host system tools for interoperability between windows/linux setups
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+#include "__config__.udo"
+#include "host_platform.udo"
+
+
+/*
+ Get the path to the shared general audio repository with a trailing slash
+ Spath _dir_audio
+
+ Spath the relevant resulting path
+*/
+opcode _dir_audio, S, 0
+ xout (gihost_type == 1) ? gSpath_baseLin : gSpath_baseWin
+endop
+
+
+/*
+ Get a full path of subdirectories in the soundfont directory
+ SfullPath dir_soundfont Spath
+
+ SfullPath the full path as specified
+
+ Sfile the last part of the path, after Soundfont/ , ie no initial slash
+*/
+opcode dir_soundfont, S, S
+ Spath xin
+ xout strcat(strcat(_dir_audio(), gSpath_soundfont), Spath)
+endop
+
+
+/*
+ Get a full path of subdirectories in the samples directory
+ SfullPath dir_samples Spath
+
+ SfullPath the full path as specified
+
+ Spath the last part of the path, after Samples/ , ie no initial slash
+*/
+opcode dir_samples, S, S
+ Spath xin
+ xout strcat(strcat(_dir_audio(), gSpath_samples), Spath)
+endop
+
+
+/*
+ Get a full path of subdirectories in the random directory
+ SfullPath dir_random Spath
+
+ SfullPath the full path as specified
+
+ Spath the last part of the path, after Random/ , ie no initial slash
+*/
+opcode dir_random, S, S
+ Spath xin
+ xout strcat(strcat(_dir_audio(), gSpath_random), Spath)
+endop
+
+
+
+#end
diff --git a/site/udo/interop.udo b/site/udo/interop.udo
new file mode 100755
index 0000000..84a3f00
--- /dev/null
+++ b/site/udo/interop.udo
@@ -0,0 +1,178 @@
+#ifndef UDO_INTEROP
+#define UDO_INTEROP ##
+/*
+ SONICS container interoperation
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+
+/*
+ Send string to channel at i-time
+
+ io_sendstring Schannel, Svalue
+
+ Schannel channel name
+ Svalue string to send
+*/
+#ifdef LOCALINTEROPINSTR
+opcode io_sendstring, 0, SS
+ Schannel, Svalue xin
+ schedule("$LOCALINTEROPINSTR", 0, 1, Schannel, Svalue)
+endop
+#else
+opcode io_sendstring, 0, SS
+ Schannel, Svalue xin
+ if (timeinstk() == -1) then
+ outvalue Schannel, Svalue
+ endif
+endop
+#end
+
+/*
+ Send value to channel at i-time
+
+ io_send Schannel, ivalue
+
+ Schannel channel name
+ ivalue value to send
+*/
+opcode io_send, 0, Si
+ Schannel, ivalue xin
+ outvalue Schannel, ivalue
+endop
+
+
+/*
+ Send value to channel at k-rate, if changed
+
+ io_send Schannel, kvalue
+
+ Schannel channel name
+ kvalue value to send
+*/
+opcode io_send, 0, Sk
+ Schannel, kvalue xin
+ if (changed:k(kvalue) == 1) then
+ outvalue Schannel, kvalue
+ endif
+endop
+
+
+instr io_callback
+ icbid = p4
+ if (qnan(p5) == 1) then
+ Sextra = sprintf(",%s", strget(p5))
+ else
+ Sextra = ""
+ endif
+ io_sendstring("callback", sprintf("{\"cbid\": %d%s}", icbid, Sextra))
+ turnoff
+endin
+
+
+instr io_compile_channel
+ icbid = p4
+ Schannel = p5
+ prints sprintf("including from channel %s \n\n", Schannel)
+ Sdata chnget Schannel
+ ires = compilestr(Sdata)
+ Sres = (ires == -1) ? "false" : "true"
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"success\": \"%s\"}", icbid, Sres))
+ turnoff
+endin
+
+/*
+ Stop instrument if playing; schedule instrument indefinitely if not playing
+ at k-rate with optional trigger (trigger resets after one iteration)
+
+ toggle_instrumentk instrnum [, ktrigger = 1]
+ toggle_instrumentk Sinstrument [, ktrigger = 1]
+
+ instrnum instrument number
+ Sinstrument instrument name to toggle
+ ktrigger perform action when 1
+*/
+opcode toggle_instrumentk, 0, iP
+ instrnum, ktrigger xin
+ if (ktrigger == 1) then
+ if (active:k(instrnum) > 0) then
+ turnoff2 instrnum, 0, 1
+ else
+ schedulek instrnum, 0, -1
+ endif
+ ktrigger = 0
+ endif
+endop
+
+; override for named instrument
+opcode toggle_instrumentk, 0, SP
+ Sinstrument, ktrigger xin
+ toggle_instrumentk(nstrnum(Sinstrument), ktrigger)
+endop
+
+
+/*
+ Stop instrument if playing; schedule instrument indefinitely if not playing, at init time
+
+ toggle_instrument instrnum
+ toggle_instrument Sinstrument
+
+ instrnum instrument number
+ Sinstrument instrument name to toggle
+*/
+opcode toggle_instrument, 0, i
+ instrnum xin
+ if (active:i(instrnum) > 0) then
+ turnoff2 instrnum, 0, 1
+ else
+ schedule instrnum, 0, -1
+ endif
+endop
+
+; override for named instrument
+opcode toggle_instrument, 0, S
+ Sinstrument xin
+ toggle_instrument(nstrnum(Sinstrument))
+endop
+
+
+
+/*
+ Stop instrument if playing; schedule instrument indefinitely if not playing, at init time
+ For host invocation.
+
+ p4 instrument number or name
+*/
+instr toggle_instrument
+ if (qnan(p4) == 1) then
+ Sinstrument = p4
+ toggle_instrument(Sinstrument)
+ else
+ instrnum = p4
+ toggle_instrument(instrnum)
+ endif
+ turnoff
+endin
+
+instr turnonoff_instrument
+ if (qnan(p4) == 1) then
+ Sinstrument = strget(p4)
+ instrnum = nstrnum(Sinstrument)
+ else
+ instrnum = p4
+ endif
+ istate = p5
+ iruntime = (p6 == 0) ? 36000 : p6
+ if (istate == 1) then
+ schedule instrnum, 0, iruntime
+ else
+ turnoff2 instrnum, 0, 1
+ endif
+endin
+
+
+#end
diff --git a/site/udo/interop.web.udo b/site/udo/interop.web.udo
new file mode 100755
index 0000000..caa802a
--- /dev/null
+++ b/site/udo/interop.web.udo
@@ -0,0 +1,172 @@
+#ifndef UDO_INTEROP
+#define UDO_INTEROP ##
+/*
+ SONICS container interoperation, web interface
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+
+/*
+ Send string to channel at i-time
+
+ io_sendstring Schannel, Svalue
+
+ Schannel channel name
+ Svalue string to send
+*/
+opcode io_sendstring, 0, SS
+ Schannel, Svalue xin
+ prints sprintf("%s %s\n", Schannel, Svalue)
+endop
+
+
+/*
+ Send value to channel at i-time
+
+ io_send Schannel, ivalue
+
+ Schannel channel name
+ ivalue value to send
+*/
+opcode io_send, 0, Si
+ Schannel, ivalue xin
+ prints sprintf("%s %f\n", Schannel, ivalue)
+endop
+
+
+/*
+ Send value to channel at k-rate, if changed
+
+ io_send Schannel, kvalue
+
+ Schannel channel name
+ kvalue value to send
+*/
+opcode io_send, 0, Sk
+ Schannel, kvalue xin
+ ktrigval init 0
+ if (changed:k(kvalue) == 1) then
+ printf "%s %f\n", ktrigval, Schannel, kvalue
+ ktrigval += 1
+ endif
+endop
+
+
+instr io_callback
+ icbid = p4
+ if (qnan(p5) == 1) then
+ Sextra = sprintf(",%s", strget(p5))
+ else
+ Sextra = ""
+ endif
+ io_sendstring("callback", sprintf("{\"cbid\": %d%s}", icbid, Sextra))
+ turnoff
+endin
+
+
+instr io_compile_channel
+ icbid = p4
+ Schannel = p5
+ prints sprintf("including from channel %s \n\n", Schannel)
+ Sdata chnget Schannel
+ ires = compilestr(Sdata)
+ Sres = (ires == -1) ? "false" : "true"
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"success\": \"%s\"}", icbid, Sres))
+ turnoff
+endin
+
+/*
+ Stop instrument if playing; schedule instrument indefinitely if not playing
+ at k-rate with optional trigger (trigger resets after one iteration)
+
+ toggle_instrumentk instrnum [, ktrigger = 1]
+ toggle_instrumentk Sinstrument [, ktrigger = 1]
+
+ instrnum instrument number
+ Sinstrument instrument name to toggle
+ ktrigger perform action when 1
+*/
+opcode toggle_instrumentk, 0, iP
+ instrnum, ktrigger xin
+ if (ktrigger == 1) then
+ if (active:k(instrnum) > 0) then
+ turnoff2 instrnum, 0, 1
+ else
+ schedulek instrnum, 0, -1
+ endif
+ ktrigger = 0
+ endif
+endop
+
+; override for named instrument
+opcode toggle_instrumentk, 0, SP
+ Sinstrument, ktrigger xin
+ toggle_instrumentk(nstrnum(Sinstrument), ktrigger)
+endop
+
+
+/*
+ Stop instrument if playing; schedule instrument indefinitely if not playing, at init time
+
+ toggle_instrument instrnum
+ toggle_instrument Sinstrument
+
+ instrnum instrument number
+ Sinstrument instrument name to toggle
+*/
+opcode toggle_instrument, 0, i
+ instrnum xin
+ if (active:i(instrnum) > 0) then
+ turnoff2 instrnum, 0, 1
+ else
+ schedule instrnum, 0, -1
+ endif
+endop
+
+; override for named instrument
+opcode toggle_instrument, 0, S
+ Sinstrument xin
+ toggle_instrument(nstrnum(Sinstrument))
+endop
+
+
+
+/*
+ Stop instrument if playing; schedule instrument indefinitely if not playing, at init time
+ For host invocation.
+
+ p4 instrument number or name
+*/
+instr toggle_instrument
+ if (qnan(p4) == 1) then
+ Sinstrument = p4
+ toggle_instrument(Sinstrument)
+ else
+ instrnum = p4
+ toggle_instrument(instrnum)
+ endif
+ turnoff
+endin
+
+instr turnonoff_instrument
+ if (qnan(p4) == 1) then
+ Sinstrument = strget(p4)
+ instrnum = nstrnum(Sinstrument)
+ else
+ instrnum = p4
+ endif
+ istate = p5
+ iruntime = (p6 == 0) ? 36000 : p6
+ if (istate == 1) then
+ schedule instrnum, 0, iruntime
+ else
+ turnoff2 instrnum, 0, 1
+ endif
+endin
+
+
+#end
diff --git a/site/udo/json.udo b/site/udo/json.udo
new file mode 100755
index 0000000..b0bdcd1
--- /dev/null
+++ b/site/udo/json.udo
@@ -0,0 +1,562 @@
+#ifndef UDO_JSON
+#define UDO_JSON ##
+/*
+ JSON formatting and parsing
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+#include "/string_tools.udo"
+#include "/array_tools.udo"
+
+
+/*
+ Create a new empty JSON string
+
+ Sjson json_init
+
+ Sout empty JSON object/string
+*/
+opcode json_init, S, 0
+ xout "{}"
+endop
+
+
+/*
+ Append raw string to JSON string
+
+ Sout json_append Sjson, StoAppend
+
+ Sout string with appendage
+ Sjson input string to append to
+ StoAppend string to append
+*/
+opcode json_append, S, SS
+ Sjson, StoAppend xin
+ ilen strlen Sjson
+
+ Sjson = (ilen < 2) ? "{" : strsub(Sjson, 0, ilen-1)
+ Sout = sprintf("%s%s%s}", Sjson, (strlen(Sjson) == 1) ? "" : ",", StoAppend)
+
+ xout Sout
+endop
+
+
+/*
+ Append JSON object string to JSON object string with key
+
+ Sout json_appendobject Sjson, Skey, Svalue
+
+ Sout string with appendage
+ Sjson input string to append to
+ Skey key for appending
+ Svalue value for appending
+*/
+opcode json_appendobject, S, SSS
+ Sjson, Skey, Svalue xin
+ Sout = json_append(Sjson, sprintf("\"%s\":%s", Skey, Svalue))
+ xout Sout
+endop
+
+
+/*
+ Append string to JSON object string with key
+
+ Sout json_appendstring Sjson, Skey, Svalue
+
+ Sout string with quoted appendage
+ Sjson input string to append to
+ Skey key for appending
+ Svalue value for appending
+*/
+opcode json_appendstring, S, SSS
+ Sjson, Skey, Svalue xin
+ Sout = json_append(Sjson, sprintf("\"%s\":\"%s\"", Skey, Svalue))
+ xout Sout
+endop
+
+
+/*
+ Append numeric value to JSON object string with key
+
+ Sout json_appendvalue Sjson, Skey, ivalue
+
+ Sout string with appendage
+ Sjson input string to append to
+ Skey key for appending
+ ivalue value for appending
+*/
+opcode json_appendvalue, S, SSi
+ Sjson, Skey, ivalue xin
+ Sformat = (frac(ivalue) == 0) ? "\"%s\":%d" : "\"%s\":%f"
+ Sout = json_append(Sjson, sprintf(Sformat, Skey, ivalue))
+ xout Sout
+endop
+
+
+/*
+ Append numeric array to JSON object string with key
+
+ Sout json_appendarray Sjson, Skey, iarray[]
+
+ Sout string with appendage
+ Sjson input string to append to
+ Skey key for appending
+ iarray[] array for appending
+*/
+opcode json_appendarray, S, SSi[]o
+ Sjson, Skey, iarray[] xin
+ Sformatted = ""
+ ilen = lenarray(iarray)
+ index = 0
+ while (index < ilen) do
+ ivalue = iarray[index]
+ Sformat = (frac(ivalue) == 0) ? "%d" : "%f"
+ Sformatted strcat Sformatted, sprintf(Sformat, ivalue)
+ if (index != ilen - 1) then
+ Sformatted strcat Sformatted, ","
+ endif
+ index += 1
+ od
+ Sout = json_appendobject(Sjson, Skey, sprintf("[%s]", Sformatted))
+ xout Sout
+endop
+
+
+
+/*
+ Append string array to JSON object string with key
+
+ Sout json_appendarray Sjson, Skey, Sarray[]
+
+ Sout string with appendage
+ Sjson input string to append to
+ Skey key for appending
+ Sarray[] array for appending
+ iomitempty leave out empty strings
+*/
+opcode json_appendarray, S, SSS[]o
+ Sjson, Skey, Sarray[], iomitempty xin
+ Sformatted = ""
+ ilen = lenarray(Sarray)
+ index = 0
+ while (index < ilen) do
+ isempty = (strcmp(Sarray[index], "") == 0) ? 1 : 0
+ if ((iomitempty == 0 && isempty == 1) || isempty == 0) then
+ Sformatted strcat Sformatted, sprintf("\"%s\",", Sarray[index])
+ endif
+ index += 1
+ od
+
+ Sout = json_appendobject(Sjson, Skey, sprintf("[%s]", strsub(Sformatted, 0, strlen(Sformatted) - 1)))
+ xout Sout
+endop
+
+
+/*
+ Append f-table to JSON object string with key
+
+ Sout json_appendtable Sjson, Skey, ifn
+
+ Sout string with appendage
+ Sjson input string to append to
+ Skey key for appending
+ ifn f-table number
+*/
+opcode json_appendtable, S, SSi
+ Sjson, Skey, ifn xin
+ Sformatted = ""
+ ilen = ftlen(ifn)
+ index = 0
+ while (index < ilen) do
+ ivalue = table:i(index, ifn)
+ Sformat = (frac(ivalue) == 0) ? "%d" : "%f"
+ Sformatted strcat Sformatted, sprintf(Sformat, ivalue)
+ if (index != ilen - 1) then
+ Sformatted strcat Sformatted, ","
+ endif
+ index += 1
+ od
+ Sout = json_appendobject(Sjson, Skey, sprintf("[%s]", Sformatted))
+ xout Sout
+endop
+
+
+
+
+/*
+ Obtain an object, array or value from a json object given a string key
+
+ itype, Stringvalue, inumericvalue json_parse Sjson, Skey
+
+ itype type of returned value: 0=string, 1=object, 2=array, 3=numeric (1 and 2 are returned as strings for further parsing)
+ Stringvalue the requested value as a string
+ inumericvalue the numeric value if itype is 3 , otherwise -1
+
+ Sjson the json to parse
+ Skey the key to lookup
+*/
+opcode json_parse, iSi, SS
+ Sjson, Skey xin
+ itype = -1
+ index = 0
+ idepth = 0
+ idepthrequest = -1
+ iobjectstart = -1
+ inval = 0
+ instring = 0
+ inrequested = 0
+ while (index < strlen(Sjson)) do
+ Schar = strsub(Sjson, index, index + 1)
+ if (strcmp(Schar, "[") == 0 && instring == 0) then
+ idepth += 1
+ if (inrequested == 1 && iobjectstart == -1) then
+ iobjectstart = index
+ endif
+
+ elseif (strcmp(Schar, "]") == 0 && instring == 0) then
+ idepth -= 1
+ if (idepthrequest == idepth) then
+ itype = 2
+ goto complete
+ endif
+
+ elseif (strcmp(Schar, "{") == 0 && instring == 0) then
+ idepth += 1
+ if (inrequested == 1 && iobjectstart == -1) then
+ iobjectstart = index
+ endif
+
+ elseif (strcmp(Schar, "}") == 0 && instring == 0) then
+ idepth -= 1
+ if (idepthrequest == idepth) then
+ itype = 1
+ goto complete
+ endif
+
+ elseif (strcmp(Schar, ":") == 0 && instring == 0) then
+ inval = 1
+ iobjectstart = index + 1
+ elseif (strcmp(Schar, ",") == 0 && instring == 0) then
+ if (inval == 1) then
+ inval = 0
+ if (inrequested == 1 && idepthrequest == idepth) then
+ index -= 1
+ itype = 3
+ goto complete
+ endif
+ endif
+ elseif (strcmp(Schar, "\"") == 0) then
+ instring = 1 - instring
+ if (instring == 1) then
+ istringstart = index + 1
+ else
+ String = strsub(Sjson, istringstart, index)
+ if (inrequested == 1 && idepthrequest == idepth) then
+ iobjectstart = istringstart
+ index -= 1
+ itype = 0
+ goto complete
+ elseif (strcmp(String, Skey) == 0) then
+ idepthrequest = idepth
+ inrequested = 1
+ endif
+ endif
+ endif
+ index += 1
+ od
+
+complete:
+
+ Stringvalue = strsub(Sjson, iobjectstart, index+1) ; +1 required?
+ if (itype == 3) then
+ ivalid, inumericvalue try_strtod strstrip(Stringvalue)
+ itype = (ivalid == 1) ? 3 : 0
+ endif
+
+
+ xout itype, Stringvalue, inumericvalue
+endop
+
+
+; itype: 0=S, 1=i
+opcode _json_getarray, S[]i[], Si
+ Sjson, itype xin
+ index = 0
+ instring = 0
+ iobjectstart = -1
+ iobjectcount = 0
+ iwriteindex = 0
+
+ while (index < strlen(Sjson)) do
+ Schar = strsub(Sjson, index, index + 1)
+ if (strcmp(Schar, ",") == 0 && instring == 0) then
+ iobjectcount += 1
+ elseif (strcmp(Schar, "\"") == 0) then
+ instring = 1 - instring
+ endif
+ index += 1
+ od
+
+ if (itype == 0) then
+ Soutput[] init iobjectcount + 1
+ ioutput[] init 1
+ else
+ Soutput[] init 1
+ ioutput[] init iobjectcount + 1
+ endif
+ index = 0
+ instring = 0
+
+ while (index < strlen(Sjson)) do
+ Schar = strsub(Sjson, index, index + 1)
+ if (strcmp(Schar, ",") == 0 && instring == 0) then
+ if (itype == 1) then
+ ioutput[iwriteindex] = strtod(strsub(Sjson, iobjectstart, index))
+ iobjectstart = index + 1
+ endif
+ iwriteindex += 1
+ elseif (strcmp(Schar, "[") == 0 && instring == 0) then
+ iobjectstart = index + 1
+ elseif (strcmp(Schar, "]") == 0 && instring == 0) then
+ if (itype == 1) then
+ ioutput[iwriteindex] = strtod(strsub(Sjson, iobjectstart, index))
+ endif
+ elseif (strcmp(Schar, "\"") == 0) then
+ if (instring == 0) then
+ iobjectstart = index + 1
+ elseif (itype == 0) then
+ Svalue = strsub(Sjson, iobjectstart, index)
+ Soutput[iwriteindex] = Svalue
+ endif
+ instring = 1 - instring
+ endif
+ index += 1
+ od
+ xout Soutput, ioutput
+endop
+
+opcode json_getstringarray, S[], S
+ Sjson xin
+ Soutput[], i_[] _json_getarray Sjson, 0
+ xout Soutput
+endop
+
+opcode json_getnumericarray, i[], S
+ Sjson xin
+ S_[], ioutput[] _json_getarray Sjson, 1
+ xout ioutput
+endop
+
+/*
+ Obtain an object, array or value from a json array given an index
+
+ itype, Stringvalue, inumericvalue json_parsearray Sjson, irequestindex
+
+ itype type of returned value: 0=string, 1=object, 2=array, 3=numeric (1 and 2 are returned as strings for further parsing)
+ Stringvalue the requested value as a string
+ inumericvalue the numeric value if itype is 3 , otherwise -1
+
+ Sjson the json to parse
+ irequestindex index in the array to obtain
+*/
+opcode json_parsearray, iSi, Si
+ Sjson, irequestindex xin
+ itype = -1
+ inmainarray = 0
+ index = 0
+ iobjectstart = 0
+ iscanindex = 0
+ instring = 0
+ idepth = 0
+ while (index < strlen(Sjson)) do
+ Schar = strsub(Sjson, index, index + 1)
+
+ if (strcmp(Schar, "[") == 0 && instring == 0) then
+ if (inmainarray == 0) then
+ inmainarray = 1
+ iobjectstart = index + 1
+ else
+ idepth += 1
+ endif
+
+ elseif (strcmp(Schar, "]") == 0 && instring == 0) then
+ if (inmainarray == 1 && idepth == 0) then
+ itype = 0
+ goto complete
+ else
+ idepth -= 1
+ itype = 2
+ endif
+
+ elseif (strcmp(Schar, "{") == 0 && inmainarray == 1 && instring == 0) then
+ idepth += 1
+
+ elseif (strcmp(Schar, "}") == 0 && inmainarray == 1 && instring == 0) then
+ idepth -= 1
+ itype = 1
+
+ elseif (strcmp(Schar, ",") == 0 && idepth == 0 && inmainarray == 1 && instring == 0) then
+ if (iscanindex == irequestindex) then
+ itype = 0
+ goto complete
+ endif
+ iobjectstart = index + 1
+ iscanindex += 1
+
+ elseif (strcmp(Schar, "\"") == 0 && idepth == 0 && inmainarray == 1 && iscanindex == irequestindex) then
+ instring = 1 - instring
+ if (instring == 1) then
+ iobjectstart = index + 1
+ else
+ itype = 0
+ goto complete
+ endif
+ endif
+
+ index += 1
+ od
+
+complete:
+
+ Stringvalue = strsub(Sjson, iobjectstart, index)
+ if (itype == 0) then
+ ivalid, inumericvalue try_strtod strstrip(Stringvalue)
+ itype = (ivalid == 1) ? 3 : 0
+ endif
+
+
+ xout itype, Stringvalue, inumericvalue
+endop
+
+
+
+/*
+ Get the length of a json array
+
+ ilength json_arraylength Sjson
+
+ ilength length determined
+ Sjson input array
+*/
+opcode json_arraylength, i, S
+ Sjson xin
+ idepth = -1
+ idepthmax = -1
+ ihasitems = 0
+ instring = 0
+ index = 0
+ itemnum = 0
+
+ while (index < strlen(Sjson)) do
+ Schar = strsub(Sjson, index, index + 1)
+ if (strcmp(Schar, "[") == 0 && instring == 0) then
+ idepth += 1
+ idepthmax += 1
+
+ elseif (strcmp(Schar, "]") == 0 && instring == 0) then
+ idepth -= 1
+ if (idepth < 0) then
+ goto complete
+ endif
+
+ elseif (strcmp(Schar, "{") == 0 && instring == 0 && idepth >= 0) then
+ idepth += 1
+ idepthmax += 1
+
+ elseif (strcmp(Schar, "}") == 0 && instring == 0 && idepth >= 0) then
+ idepth -= 1
+
+ elseif (strcmp(Schar, ",") == 0 && instring == 0 && idepth == 0) then
+ itemnum += 1
+
+ elseif (strcmp(Schar, "\"") == 0) then
+ if (idepth == 0) then
+ ihasitems = 1
+ endif
+ instring = 1 - instring
+ endif
+ index += 1
+ od
+
+complete:
+ if (idepthmax != 0 || ihasitems == 1) then
+ itemnum += 1
+ endif
+ xout itemnum
+
+endop
+
+
+
+
+/*
+ Get the keys from an object
+
+ Skeys[] json_getkeys Sjson
+
+ Skeys[] the keys found
+ Sjson input json
+*/
+opcode json_getkeys, S[], S
+ Sjson xin
+ Stemp[] init 999
+
+ itempindex init 0
+ idepth = -1
+ instring = 0
+ index = 0
+ inmainobject = 0
+ iskey = 1
+
+ while (index < strlen(Sjson)) do
+ Schar = strsub(Sjson, index, index + 1)
+ if (strcmp(Schar, "[") == 0 && instring == 0 && idepth >= 0) then
+ idepth += 1
+
+ elseif (strcmp(Schar, "]") == 0 && instring == 0 && idepth >= 0) then
+ idepth -= 1
+
+ elseif (strcmp(Schar, "{") == 0 && instring == 0) then
+ idepth += 1
+
+ elseif (strcmp(Schar, "}") == 0 && instring == 0) then
+ idepth -= 1
+ if (idepth < 0) then
+ goto complete
+ endif
+
+ elseif (strcmp(Schar, ":") == 0 && instring == 0 && idepth == 0) then
+ iskey = 0
+
+ elseif (strcmp(Schar, ",") == 0 && instring == 0 && idepth == 0) then
+ iskey = 1
+
+ elseif (strcmp(Schar, "\"") == 0 && idepth == 0) then
+ instring = 1 - instring
+ if (instring == 1) then
+ istringstart = index + 1
+ elseif (iskey == 1) then
+ Stemp[itempindex] = strsub(Sjson, istringstart, index)
+ itempindex += 1
+ endif
+ endif
+ index += 1
+ od
+
+complete:
+ Skeys[] init itempindex ;+ 1
+ index = 0
+ while (index < itempindex) do
+ Skeys[index] = Stemp[index]
+ index += 1
+ od
+
+ xout Skeys
+endop
+
+
+#end
diff --git a/site/udo/lagdetect.udo b/site/udo/lagdetect.udo
new file mode 100755
index 0000000..f4261b1
--- /dev/null
+++ b/site/udo/lagdetect.udo
@@ -0,0 +1,59 @@
+#ifndef UDO_LAGDETECT
+#define UDO_LAGDETECT ##
+/*
+ Processing lag detection
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#define LAG_DFLT_TTHRESH #0.05#
+
+
+/*
+ Detect when the CPU cannot keep up with proessing: when the realtime clock differs from Csound's clock by a specified threshold time.
+ The trigger klagging is output periodically every iautotimethreshold*2 seconds rather than continuously
+
+ klagging, ktimesincelastlag lagdetect [iautotimethreshold=LAG_DFLT_TTHRESH]
+
+ klagging trigger indicating lag has been detected in this k-cycle
+ ktimesincelastlag time in seconds sine the last lag detected
+ iautotimethreshold if realtime clock and Csound clock differ more than this number of seconds, lag is assumed
+*/
+opcode lagdetect, kk, j
+ iautotimethreshold xin
+ iautotimethreshold = (iautotimethreshold == -1) ? $LAG_DFLT_TTHRESH : iautotimethreshold
+ kstartrt init rtclock:i()
+ kclockrt rtclock
+ kstarts init times:i()
+ kclocks times
+ klag = abs:k((kclocks - kstarts) - (kclockrt - kstartrt))
+
+ klagging = 0
+ ; if time difference is above threshold and last adjustment is double threshold, reduce parameters and reset times
+ if (klag > iautotimethreshold && kclockrt - kstartrt > iautotimethreshold * 2) then
+ kstartrt = kclockrt
+ kstarts = kclocks
+ klagging = 1
+ endif
+ xout klagging, kclocks - kstarts
+endop
+
+
+/*
+ Detect when the CPU cannot keep up with proessing: when the realtime clock differs from Csound's clock by a specified threshold time
+ The trigger klagging is output periodically every iautotimethreshold*2 seconds rather than continuously
+
+ klagging lagdetect [iautotimethreshold=LAG_DFLT_TTHRESH]
+
+ klagging trigger indicating lag has been detected in this k-cycle
+ iautotimethreshold if realtime clock and Csound clock differ more than this number of seconds, lag is assumed
+*/
+opcode lagdetect, k, j
+ iautotimethreshold xin
+ klagging, ktimesincelag lagdetect iautotimethreshold
+ xout klagging
+endop
+
+#end
diff --git a/site/udo/legacy/sequencing_melodic.udo b/site/udo/legacy/sequencing_melodic.udo
new file mode 100755
index 0000000..7d3f546
--- /dev/null
+++ b/site/udo/legacy/sequencing_melodic.udo
@@ -0,0 +1,831 @@
+#ifndef UDO_MELSEQUENCING
+#define UDO_MELSEQUENCING ##
+
+/*
+ Melodic pattern sequencer base
+ Legacy, without microtonal option
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+#include "__config__.udo" ; using fftsize for tuning
+#include "chords.udo" ; chord data
+#include "sequencing.udo" ; sequencer base
+#include "interop.udo" ; for updating host with outvalue
+#include "wavetables.udo" ; for tuning
+#include "json.udo" ; used to update host
+
+; if these are set, then don't launch the manager automatically. sequencing_melodic_persistence will load accordingly
+#ifdef MEL_INITPATH
+ #define MEL_HASINIT ##
+#end
+#ifdef MEL_INITDB
+ #define MEL_HASINIT ##
+#end
+
+;-------------------------internal-globals--------------------------------------------------------------------------
+
+gimel_number init 12 ; number of melodic sections available
+
+gimel_state ftgen 0, 0, -4, -7, 0 ; state: current section, next section, current_step (gimel_number)
+gimel_chords ftgen 0, 0, -gimel_number, -7, 0 ; chord indexes from melodic.udo for each section
+gimel_notes ftgen 0, 0, -gimel_number, -7, 0 ; midi note numbers for each section
+gimel_lengths ftgen 0, 0, -gimel_number, -7, 0 ; lengths in beats for each section
+gimel_action1 ftgen 0, 0, -gimel_number, -7, 0 ; follow action 1 for each section
+gimel_action2 ftgen 0, 0, -gimel_number, -7, 0 ; follow action 2 for each section
+gimel_actionthreshold ftgen 0, 0, -gimel_number, -7, 0 ; follow action threshold - below 0.5 is action1, above is action2
+gimel_active ftgen 0, 0, -gimel_number, -7, 0 ; whether each section is active or to be ignored
+gimel_importance ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary section importance , 0 to 1
+gimel_mod1 ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary modulation 1, 0 to 1
+gimel_mod2 ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary modulation 2, 0 to 1
+gimel_mod3 ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary modulation 3, 0 to 1
+gimel_mod4 ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary modulation 4, 0 to 1
+gimel_centadd ftgen 0, 0, -gimel_number, -7, 0 ; microtonal midi note additions (0 = no change; 1 = add one semitone; 0.01 = add one cent)
+
+gimel_future ftgen 0, 0, -8, -7, 0 ; future sections: 8 in the future
+gimel_current_notes ftgen 0, 0, -13, -7, 0 ; current notes: index 0 is the length
+gimel_next_notes ftgen 0, 0, -13, -7, 0 ; next notes: index 0 is the length
+gimel_temp_random ftgen 0, 0, -gimel_number, -7, 0 ; temp storage for pattern randomisation
+
+gkmel_section_change init 0 ; section change trigger
+gkmel_section_change_due init 0 ; how many beats until next section change
+gkmel_futures_refresh_trig init 0 ; trigger to set if futures are to be recalculated
+
+; user modifiable variables
+gkmel_pause init 0 ; pause progression changes
+gkmel_advance_trig init 0 ; manual progression advance trigger
+
+
+
+; names and references for persistence and introspection: essentially the tables to be saved
+gSmel_names[] fillarray "chords", "notes", "lengths", "action1", "action2",\
+ "actionthreshold", "active", "importance", "mod1", "mod2", "mod3", "mod4"
+gimel_fns[] fillarray gimel_chords, gimel_notes, gimel_lengths, gimel_action1, gimel_action2,\
+ gimel_actionthreshold, gimel_active, gimel_importance, gimel_mod1, gimel_mod2, gimel_mod3, gimel_mod4
+
+
+
+;-----------------------------opcodes-------------------------------------------------------------------------------
+
+/*
+ Refresh the actions list: static actions and pattern references
+*/
+Smel_baseactions[] fillarray "Same", "Next", "Previous", "Random"
+gSmel_actions[] init lenarray(Smel_baseactions) + gimel_number
+index = 0
+while (index < lenarray(gSmel_actions)) do
+ if (index < 4) then
+ gSmel_actions[index] = Smel_baseactions[index]
+ else
+ gSmel_actions[index] = sprintf("Section %d", index - 3)
+ endif
+ index += 1
+od
+
+/*
+; actions: static actions and pattern references filled by _mel_refreshactions
+;gSmel_actions[] init 1
+
+opcode _mel_refreshactions, 0, 0
+
+endop
+_mel_refreshactions() ; initialise
+*/
+
+instr _mel_debug_printstate
+ index = 0
+ Sjson = json_init()
+ Sjson = json_appendtable(Sjson, "future", gimel_future)
+ while (index < lenarray(gimel_fns)) do
+ Sjson = json_appendtable(Sjson, gSmel_names[index], gimel_fns[index])
+ index += 1
+ od
+ prints Sjson
+ prints "\n\n"
+endin
+
+
+/*
+ Send JSON formatted information on current setup to API host
+*/
+instr mel_updatehost ; use p4 for channel?
+ Sjson = json_init()
+ Sjson = json_appendvalue(Sjson, "sections", gimel_number)
+ Sjson = json_appendarray(Sjson, "chordnames", gSchords)
+ Sjson = json_appendarray(Sjson, "actiontypes", gSmel_actions)
+
+ SjsonFns = json_init()
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ SjsonFns = json_appendvalue(SjsonFns, gSmel_names[index], gimel_fns[index])
+ index += 1
+ od
+ Sjson = json_appendobject(Sjson, "ftables", SjsonFns)
+
+ io_sendstring("mel_state", Sjson)
+ turnoff
+endin
+
+
+/*
+; new verison using plugin opcode
+instr mel_updatehost ; use p4 for channel?
+ iJson jsoninit
+ jsoninsertval iJson, "sections", gimel_number
+ jsoninsertval iJson, "chordnames", gSchords
+ jsoninsertval iJson, "actiontypes", gSmel_actions
+
+ iJsonFns jsoninit
+ jsoninsertval iJsonFns, gSmel_names, gimel_fns
+ jsoninsert iJson, "ftables", iJsonFns
+ io_sendstring("mel_state", jsondumps(iJson, 1))
+endin
+*/
+
+
+
+
+
+/*
+ Get modulation parameters for current section
+
+ imod1, imod2, imod3, imod4 mel_currentmod
+
+ imod1 modulation parameter 1
+ imod2 modulation parameter 2
+ imod3 modulation parameter 3
+ imod4 modulation parameter 4
+*/
+opcode mel_currentmod, iiii, 0
+ icur = table:i(0, gimel_state)
+ xout table:i(icur, gimel_mod1), table:i(icur, gimel_mod2), table:i(icur, gimel_mod3), table:i(icur, gimel_mod4)
+endop
+
+
+/*
+ Get modulation parameters for current section
+
+ kmod1, kmod2, kmod3, kmod4 mel_currentmod
+
+ kmod1 modulation parameter 1
+ kmod2 modulation parameter 2
+ kmod3 modulation parameter 3
+ kmod4 modulation parameter 4
+*/
+opcode mel_currentmod, kkkk, 0
+ kcur = table:k(0, gimel_state)
+ xout table:k(kcur, gimel_mod1), table:k(kcur, gimel_mod2), table:k(kcur, gimel_mod3), table:k(kcur, gimel_mod4)
+endop
+
+
+/*
+ Get a random midi note from the current section chord
+
+ inote mel_randomnote
+
+ inote random note from current chord
+*/
+opcode mel_randomnote, i, 0
+ ilen = table:i(0, gimel_current_notes)
+ index = round(random(1, ilen-1))
+ xout table:i(index, gimel_current_notes)
+endop
+
+
+/*
+ Get a random midi note from the current section chord
+
+ knote mel_randomnote
+
+ knote random note from current chord
+*/
+opcode mel_randomnote, k, 0
+ klen = table:k(0, gimel_current_notes)
+ kindex = round:k(random:k(1, klen-1))
+ xout table:k(kindex, gimel_current_notes)
+endop
+
+
+/*
+ Get the current section at k-rate
+
+ ksection _mel_currentsectionget
+
+ ksection current section
+*/
+opcode _mel_currentsectionget, k, 0
+ xout table:k(0, gimel_state)
+endop
+
+
+/*
+ Get the next section at k-rate
+
+ ksection _mel_nextsectionget
+
+ ksection next section
+*/
+opcode _mel_nextsectionget, k, 0
+ xout table:k(0, gimel_future)
+endop
+
+
+/*
+ Set the current section at k-rate
+
+ _mel_currentsectionset ksection
+
+ ksection current section to set
+*/
+opcode _mel_currentsectionset, 0, k
+ ksection xin
+ tablew ksection, 0, gimel_state
+endop
+
+
+/*
+ Get the current section at init time
+
+ isection _mel_currentsectionget
+
+ usection current section
+*/
+opcode _mel_currentsectionget, i, 0
+ xout table:i(0, gimel_state)
+endop
+
+
+/*
+ Get the length of the current section in seconds
+
+ iseconds mel_length
+
+ iseconds length in seconds
+*/
+opcode mel_length, i, 0
+ xout table:i(_mel_currentsectionget:i(), gimel_lengths) * i(gkseq_beattime)
+endop
+
+
+/*
+ Get the length of the current section in seconds
+
+ kseconds mel_length
+
+ kseconds length in seconds
+*/
+opcode mel_length, k, 0
+ xout table:k(_mel_currentsectionget:k(), gimel_lengths) * gkseq_beattime
+endop
+
+
+/*
+ Get the current MIDI note numbers as an array
+ inotes[] mel_currentnotes
+
+ inotes[] the note numbers
+*/
+opcode mel_currentnotes, i[], 0
+ ilen = table:i(0, gimel_current_notes)
+ iout[] init ilen
+ index = 0
+ while (index < ilen) do
+ iout[index] = table:i(index+1, gimel_current_notes)
+ index += 1
+ od
+ xout iout
+endop
+
+
+/*
+ Call Sinstrument when ktrig is fired, for each note (passed as p4) and the current section length accordingly
+ mel_eachnote Sinstrument, ktrig[, klength = mel_length:k()]
+
+ Sinstrument the instrument name to call
+ ktrig trigger to active call
+ klength duration of instrument to call, defaulting to mel_length:k()
+
+*/
+opcode mel_eachnote, 0, SkJ
+ Sinstrument, ktrig, klength xin
+ if (ktrig == 1) then
+ kdur = (klength == -1 ) ? mel_length:k() : klength
+ kindex = 0
+ while (kindex < table:k(0, gimel_current_notes)) do
+ schedulek Sinstrument, 0, kdur, table:k(kindex + 1, gimel_current_notes)
+ kindex += 1
+ od
+ endif
+endop
+
+/*
+ Get the most important entry from futures table
+
+ kbestindex, kimportance, kbeats mel_future_mostimportant
+
+ kbestindex index in gimel_future
+ kimportance the importance measure
+ kbeats number of beats until the event occurs
+*/
+opcode mel_future_mostimportant, kkk, 0
+ kindex = 0
+ kimportance = -9999
+ kbestindex = 0
+ kbeats = table:k(table:k(0, gimel_state), gimel_lengths) ; current duration base
+ while (kindex < ftlen(gimel_future)) do
+ ksection = table:k(kindex, gimel_future)
+ kimportancetemp = table:k(ksection, gimel_importance)
+ if (kimportancetemp > kimportance) then
+ kimportance = kimportancetemp
+ kbestindex = kindex
+ endif
+ kindex += 1
+ od
+
+ kindex = 0
+ while (kindex < kbestindex) do
+ kbeats += table:k(table:k(kindex, gimel_future), gimel_lengths)
+ kindex += 1
+ od
+
+ xout kbestindex, kimportance, kbeats ; * gkseq_beattime
+endop
+
+
+/*
+ Get the most important entry from futures table
+
+ ibestindex, iimportance, ibeats mel_future_mostimportant
+
+ ibestindex index in gimel_future
+ importance the importance measure
+ ibeats number of beats until the event occurs
+*/
+opcode mel_future_mostimportant, iii, 0
+ index = 0
+ importance = -9999
+ ibestindex = 0
+ ibeats = table:i(table:i(0, gimel_state), gimel_lengths) ; current duration base
+ while (index < ftlen(gimel_future)) do
+ isection = table:i(index, gimel_future)
+ importancetemp = table:i(isection, gimel_importance)
+ if (importancetemp > importance) then
+ importance = importancetemp
+ ibestindex = index
+ endif
+ index += 1
+ od
+
+ index = 0
+ while (index < ibestindex) do
+ ibeats += table:i(table:i(index, gimel_future), gimel_lengths)
+ index += 1
+ od
+ xout ibestindex, importance, ibeats ; * i(gkseq_beattime)
+endop
+
+
+
+/*
+ Calculate the next section from a given section
+
+ knext _mel_calculatenext kcurrent
+
+ knext the calculated next section index
+ kcurrent the section index to base the calculation upon
+*/
+opcode _mel_calculatenext, k, k
+ kthissection xin
+ knextsection = -1
+
+ if (random:k(0, 1) <= table:k(kthissection, gimel_actionthreshold)) then
+ knextaction = table:k(kthissection, gimel_action2)
+ else
+ knextaction = table:k(kthissection, gimel_action1)
+ endif
+
+
+ ; if current is not active, go to next ?
+ kcurrentactive = table:k(kthissection, gimel_active)
+ if (kcurrentactive == 0 && knextaction == 0) then
+ knextaction = 1
+ endif
+
+ ; same
+ if (knextaction == 0) then
+ knextsection = kthissection
+
+ ; next or previous
+ elseif (knextaction >= 1 && knextaction <= 3) then ; specified action
+ kcount = 0
+ kactive = 0
+ knextsection = kthissection
+ while (kactive == 0 && kcount < gimel_number) do ; loop until active section found or all sections checked
+
+ if (knextaction == 1) then ; next
+ if (knextsection + 1 > gimel_number - 1) then
+ knextsection = 0
+ else
+ knextsection += 1
+ endif
+
+ elseif (knextaction == 2) then ; previous
+ if (knextsection -1 < 0) then
+ knextsection = gimel_number - 1
+ else
+ knextsection -= 1
+ endif
+ endif
+
+ kactive = table:k(knextsection, gimel_active)
+ kcount += 1
+ od
+
+ ; random
+ elseif (knextaction == 3) then
+ kindex = 0
+ krandmax = 0
+ while (kindex < gimel_number) do
+ if (table:k(kindex, gimel_active) == 1) then
+ tablew kindex, krandmax, gimel_temp_random
+ krandmax += 1
+ endif
+ kindex += 1
+ od
+
+ knextsection = table:k(round(random(0, krandmax - 1)), gimel_temp_random)
+
+ ; specific section
+ elseif (knextaction >= 4) then ; specific active pattern
+ if (table:k(knextaction - 4, gimel_active) == 1) then
+ knextsection = knextaction - 4
+ else
+ knextsection = kthissection
+ endif
+ endif
+ xout knextsection
+endop
+
+
+/*
+ Set gimel_next_notes from the first entry in the futures table
+*/
+opcode _mel_setnextnotes, 0, 0
+ knext = table:k(0, gimel_future)
+ chordmidibyindextof gimel_next_notes, table:k(knext, gimel_chords), table:k(knext, gimel_notes)
+endop
+
+
+/*
+ Pop the next future entry from the futures table, move all future entries down one
+ and add a new calculated entry accordingly
+
+ kcurrent _mel_future_pop
+
+ kcurrent the current section to be used now
+*/
+opcode _mel_future_pop, k, 0
+ imax = ftlen(gimel_future)
+ kcurrent = table:k(0, gimel_future)
+
+
+ kindex = 0
+ while (kindex < imax - 1) do
+ tablew table:k(kindex + 1, gimel_future), kindex, gimel_future
+ kindex += 1
+ od
+
+ ; write new last entry
+ tablew _mel_calculatenext(table:k(kindex, gimel_future)), imax - 1, gimel_future
+
+ _mel_setnextnotes()
+
+ xout kcurrent
+endop
+
+
+/*
+ Recalculate the futures table (in the event of parameters being changed at runtime etc)
+*/
+opcode _mel_futures_refresh, 0, O
+ kindexStart xin ; usually 0, can be a start index (ie 1 leaves the first entry in place)
+ kindex = kindexStart
+ imax = ftlen(gimel_future)
+ ; TODO do first, etc
+ while (kindex < imax) do
+ if (kindex == 0) then
+ kcurrent = table:k(0, gimel_state) ; 0 ; get current, rather than 0...
+ else
+ kcurrent = table:k(kindex - 1, gimel_future)
+ endif
+
+ tablew _mel_calculatenext(kcurrent), kindex, gimel_future
+ kindex += 1
+ od
+
+ _mel_setnextnotes()
+endop
+
+
+/*
+ Set next section, for host control
+
+ p4 section number to set as next
+*/
+instr mel_setnextsection
+ isection = p4
+ if (table:i(isection, gimel_active) == 1) then
+ tablew isection, 0, gimel_future
+ gkmel_futures_refresh_trig = 2
+ endif
+ turnoff
+endin
+
+
+/*
+ Refresh the futures table, for host control
+*/
+instr mel_futures_refresh
+ gkmel_futures_refresh_trig = 1
+ turnoff
+endin
+
+
+/*
+ Randomise all section parameters
+*/
+opcode _mel_randomise, 0, 0
+ index = 0
+ iactives[] init 4 + gimel_lengths
+ iactivenum = 4
+ while (index < gimel_number) do
+ tablew round(random(0, lenarray(gSchords) - 1)), index, gimel_chords
+ tablew round(random(4, 8)), index, gimel_lengths
+ tablew round(random(48, 70)), index, gimel_notes
+ tablew random(0, 1), index, gimel_actionthreshold
+ tablew random(0, 1), index, gimel_importance
+ tablew random(0, 1), index, gimel_mod1
+ tablew random(0, 1), index, gimel_mod2
+ tablew random(0, 1), index, gimel_mod3
+ tablew random(0, 1), index, gimel_mod4
+
+
+ iactive = round(random(0, 1))
+ if (iactive == 1) then
+ iactives[iactivenum-1] = iactive
+ iactivenum += 1
+ endif
+ tablew iactive, index, gimel_active
+ index += 1
+ od
+
+ ; set next action to only active sections
+ index = 0
+ while (index < gimel_number) do
+ iaction1 = iactives[round(random(0, iactivenum))]
+ iaction2 = iactives[round(random(0, iactivenum))]
+ tablew iaction1, index, gimel_action1
+ tablew iaction2, index, gimel_action2
+ index += 1
+ od
+endop
+
+
+/*
+ Randomise all section parameters and update the host
+*/
+instr mel_randomise
+ _mel_randomise()
+ gkmel_futures_refresh_trig = 1
+ event_i "i", "mel_updatehost", 0, 1
+ turnoff
+endin
+
+
+/*
+ Pause progression, for host control
+*/
+instr mel_pause
+ gkmel_pause = p4
+ turnoff
+endin
+
+
+/*
+ Advance progression, for host control
+*/
+instr mel_advance
+ gkmel_advance_trig = 1
+ turnoff
+endin
+
+
+/*
+ Advance progression if paused, for host control
+*/
+instr mel_advanceifpaused
+ if (gkmel_pause == 1) then
+ gkmel_advance_trig = 1
+ endif
+ turnoff
+endin
+
+
+
+opcode mel_nextchangelength, k, 0
+ kcurrent = _mel_currentsectionget:k()
+ klength = table:k(kcurrent, gimel_lengths)
+
+ imaxfutures = ftlen(gimel_future)
+ kindex = 0
+ while (kindex < imaxfutures) do
+ ksection = table:k(kindex, gimel_future)
+ if (ksection != kcurrent) kgoto complete
+ klength += table:k(ksection, gimel_lengths)
+ kindex += 1
+ od
+complete:
+ xout klength
+endop
+
+/*
+ Initialise the sequencer sections; monitor for gkseq_beat triggers and change sections accordingly
+*/
+instr _mel_manager
+#ifndef MEL_HASINIT
+ _mel_randomise()
+#end
+
+ ksectionlength init 0
+ gkmel_futures_refresh_trig init 1
+
+ if (gkmel_futures_refresh_trig != 0) then
+ _mel_futures_refresh(gkmel_futures_refresh_trig - 1) ; if gkmel_futures_refresh_trig is 2, then omit first, otherwise recalculate all
+ gkmel_futures_refresh_trig = 0
+ ksectionlength = mel_nextchangelength:k()
+ endif
+
+ kstep init 0
+ gkmel_section_change = 0
+
+ kmanualadvance = 0
+ if (gkmel_advance_trig == 1) then
+ kmanualadvance = 1
+ gkmel_advance_trig = 0
+ endif
+
+ if ((gkseq_beat == 1 && gkmel_pause == 0) || kmanualadvance == 1) then
+ if (kstep == 0 || kmanualadvance == 1) then
+ kcurrent = _mel_currentsectionget:k()
+ tablecopy gimel_current_notes, gimel_next_notes
+ knew = _mel_future_pop:k()
+ _mel_currentsectionset(knew)
+
+ ; only send if actually changed
+ if (kcurrent != knew) then
+ io_send("mel_current", knew) ; send current (from next)
+ gkmel_section_change = 1
+ ksectionlength = mel_nextchangelength:k()
+ endif
+ endif
+
+ gkmel_section_change_due = ksectionlength - kstep
+
+ if (kstep < ksectionlength - 1) then ; current step < current length
+ kstep += 1
+ else
+ kstep = 0
+ endif
+
+ endif ; end each beat
+
+
+endin
+
+#ifndef MEL_HASINIT
+alwayson "_mel_manager"
+#end
+
+
+
+/*
+ Extend the current notes and convert to frequency, multiplying by powers of two to be used in mel_tune
+ ifreqs[] _mel_tune_noteprepare inotes[], imult
+
+ ifreqs[] resulting frequencies
+ inotes[] input midi note numbers
+ imult number of times to multiply note contents
+
+*/
+opcode _mel_tune_noteprepare, i[], i[]i
+ iarr[], imult xin
+ inew[] init lenarray(iarr) * imult
+ indexnew = 0
+ index = 0
+ while (index < lenarray(iarr)) do
+ ifreq = cpsmidinn(iarr[index])
+ index2 = 0
+ while (index2 < imult) do
+ if (index2 > 0) then
+ inew[indexnew] = ifreq * (2* (index2+1))
+ else
+ inew[indexnew] = ifreq
+ endif
+ index2 += 1
+ indexnew += 1
+ od
+
+ index += 1
+ od
+ xout inew
+endop
+
+
+/*
+ Create a chord with the specified frequencies
+ aout _mel_tune_chord ifreqs[] [, ifn, index]
+
+ aout resulting chord
+ ifreqs[] frequencies to play
+ ifn wavetable to play with, default = gifnSine
+ index internal index usage for recursion
+*/
+opcode _mel_tune_chord, a, i[]oo
+ ifreqs[], ifn, index xin
+ ifn = (ifn == 0) ? gifnSine : ifn
+ aout = oscil(0.1, ifreqs[index], ifn)
+ if (index < lenarray(ifreqs) - 1) then
+ aout += _mel_tune_chord(ifreqs, ifn, index + 1)
+ endif
+ xout aout
+endop
+
+
+/*
+ Stereo tuning to current melodic sequencer notes
+ aoutL, aoutR mel_tune ainL, ainR, ifn, imult [, ifftrate, ifftdiv]
+
+ aoutL, aoutR output audio
+ ainL, ainR input audio
+ ifn wavetable to use
+ imult multiples of harmonics to generate in tuning
+ ifftrate fft size, defaults to config default
+ ifftdiv fft window division factor (eg 4, 8, 16), defaults to config default
+*/
+opcode mel_tune, aa, aaiioo
+ aL, aR, ifn, imult, ifftrate, ifftdiv xin
+ ifftrate = (ifftrate == 0) ? giFFTsize : ifftrate
+ ifftdiv = (ifftdiv == 0) ? giFFTwinFactor : ifftdiv
+ ifreqs[] _mel_tune_noteprepare mel_currentnotes(), imult
+ fmods pvsanal _mel_tune_chord(ifreqs, ifn), ifftrate, ifftrate/ifftdiv, ifftrate, 1
+ fL1 pvsanal aL, ifftrate, ifftrate/ifftdiv, ifftrate, 1
+ fR1 pvsanal aR, ifftrate, ifftrate/ifftdiv, ifftrate, 1
+ fL2 pvsmorph fL1, fmods, 0, 1
+ fR2 pvsmorph fR1, fmods, 0, 1
+ aL1 pvsynth fL2
+ aR1 pvsynth fR2
+ idel = (ifftrate+2)/sr
+ aL1 balance aL1, delay(aL, idel)
+ aR1 balance aR1, delay(aR, idel)
+ xout aL1, aR1
+endop
+
+
+/*
+ Experimental tonal balance of two signals
+
+ aoutput balancetonal ain, aincomparator
+
+ aoutput balanced signal
+ ain signal to apply changes to
+ aincomparator signal to 'extract' frequency contour from
+*/
+opcode balancetonal, a, aa
+ ain, ainc xin
+ aouts[] init 16
+
+ aouts[0] balance butterbp(ain, 100, 200), butterbp(ainc, 100, 200) ; 0 - 200
+ aouts[1] balance butterbp(ain, 400, 400), butterbp(ainc, 400, 400) ; 200 - 600
+ aouts[2] balance butterbp(ain, 800, 400), butterbp(ainc, 800, 400) ; 600 - 1000
+ aouts[3] balance butterbp(ain, 1200, 400), butterbp(ainc, 1200, 400) ; 1000 - 1400
+ aouts[4] balance butterbp(ain, 1700, 600), butterbp(ainc, 1700, 600) ; 1400 - 2000
+ aouts[5] balance butterbp(ain, 2400, 800), butterbp(ainc, 2400, 800) ; 2000 - 2800
+ aouts[6] balance butterbp(ain, 3200, 800), butterbp(ainc, 3200, 800) ; 2800 - 3600
+ aouts[7] balance butterbp(ain, 4200, 1200), butterbp(ainc, 4200, 1200) ; 3600 - 4800
+ aouts[8] balance butterbp(ain, 5400, 1200), butterbp(ainc, 5400, 1200) ; 4800 - 6000
+ aouts[9] balance butterbp(ain, 7000, 2000), butterbp(ainc, 7000, 2000) ; 6000 - 8000
+ aouts[10] balance butterbp(ain, 9000, 2000), butterbp(ainc, 9000, 2000) ; 8000 - 10000
+ aouts[11] balance butterbp(ain, 11000, 2000), butterbp(ainc, 11000, 2000) ; 10000 - 12000
+ aouts[12] balance butterbp(ain, 14000, 4000), butterbp(ainc, 14000, 4000) ; 12000 - 16000
+ aouts[13] balance butterbp(ain, 18000, 4000), butterbp(ainc, 18000, 4000) ; 16000 - 20000
+ aouts[14] balance butterhp(ain, 20000), butterhp(ainc, 20000)
+
+ aout sumarray aouts
+ xout aout
+endop
+
+
+#end
diff --git a/site/udo/legacy/sequencing_melodic_persistence.udo b/site/udo/legacy/sequencing_melodic_persistence.udo
new file mode 100755
index 0000000..dd309af
--- /dev/null
+++ b/site/udo/legacy/sequencing_melodic_persistence.udo
@@ -0,0 +1,246 @@
+#ifndef UDO_MELSEQUENCINGPERSIST_LEGACY
+#define UDO_MELSEQUENCINGPERSIST_LEGACY ##
+/*
+ Melodic sequencer persistence: saving/loading from files and database
+ Legacy: superceded by JSON
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "pgdb.udo"
+#include "sequencing_melodic.udo"
+#include "array_tools.udo"
+#include "interop.udo"
+
+
+
+
+/*
+ Save state to file
+
+ p4 path to save to
+*/
+instr mel_savestate_fs
+ Spath = p4
+ ftsave Spath, 1,\
+ gimel_chords, gimel_notes,
+ gimel_lengths, gimel_action1,\
+ gimel_action2, gimel_actionthreshold,\
+ gimel_active, gimel_importance,\
+ gimel_mod1, gimel_mod2,\
+ gimel_mod3, gimel_mod4,\
+ gimel_state
+ turnoff
+endin
+
+
+/*
+ Load state from file
+
+ p4 path to load from
+*/
+instr mel_loadstate_fs
+ Spath = p4
+ isize = -1
+ iline = 0
+
+/* ; COMMENTED AS readfi IS NOT AVAILABLE ON LIVE COMP?!?!?! - testing if size matches etc
+
+ ; get size from first table
+ while (isize == -1 && iline != -1) do
+ Sline, iline readfi Spath
+ if (strcmp(strsub(Sline, 0, 4), "flen") == 0) then
+ isize = strtod(strsub(Sline, 6, strlen(Sline)-1))
+ isizefound = 1
+ endif
+ od
+
+ ; size not found in file
+ if (isize == -1) then
+ isize = ftlen(gimel_chords)
+
+ ; resize required
+ elseif (isize != ftlen(gimel_chords)) then
+ gimel_number = isize
+ _mel_refreshactions() ; update actions list to cater for number of patterns
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ ifn = gimel_fns[index]
+ ftfree ifn, 0
+ itemp ftgen 0, 0, -isize, -7, 0
+ index += 1
+ od
+ endif
+*/
+
+ ftload Spath, 1,\
+ gimel_chords, gimel_notes,
+ gimel_lengths, gimel_action1,\
+ gimel_action2, gimel_actionthreshold,\
+ gimel_active, gimel_importance,\
+ gimel_mod1, gimel_mod2,\
+ gimel_mod3, gimel_mod4,\
+ gimel_state
+
+ gkmel_futures_refresh_trig = 1
+ turnoff
+endin
+
+
+
+/*
+ Save state to database
+ mel_savestate_db Sname
+
+ Sname identifier to be used
+*/
+opcode mel_savestate_db, 0, S
+ Sname xin
+ pgdb_table_save Sname, "melseq", gimel_state
+
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ pgdb_table_save strcat(Sname, strcat("||", gSmel_names[index])), "melseq", gimel_fns[index]
+ index += 1
+ od
+endop
+
+
+
+; broken: underlying pgdb_table_savek not working
+opcode mel_savestate_dbk, k, S
+ Sname xin
+ ilength = lenarray(gimel_fns)
+ ktrigger init 0
+ kcomplete init 0
+ kindex init -1
+
+ if (kindex == -1) then
+ kdone pgdb_table_savek Sname, "melseq", gimel_state, -1
+ else
+ kdone pgdb_table_savek strcatk(Sname, strcatk("||", gSmel_names[kindex])), "melseq", gimel_fns[kindex], ktrigger
+ ktrigger = 0
+ endif
+
+ if (kdone == 1) then
+ if (kindex + 1 < ilength) then
+ kindex += 1
+ ktrigger = 1
+ else
+ kcomplete = 1
+ endif
+ endif
+
+
+ xout kcomplete
+endop
+
+
+; ftresize ?????
+
+/*
+ Load state from database
+ mel_loadstate_db Sname
+
+ Sname identifier to be used
+*/
+opcode mel_loadstate_db, 0, S
+ Sname xin
+ inull pgdb_table_get Sname, "melseq", gimel_state
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ StestName = sprintf("%s||%s", Sname, gSmel_names[index])
+ inull pgdb_table_get StestName, "melseq", gimel_fns[index]
+ index += 1
+ od
+ gkmel_futures_refresh_trig = 1
+endop
+
+
+
+/*
+ Get an array of the known mel states from database
+ Sdata[] mel_liststates_db
+
+ Sdata[] the state names
+*/
+opcode mel_liststates_db, S[], 0
+ Sresult[][] dbarray gidb, "SELECT distinct (string_to_array(name, '||'))[1] FROM savearray WHERE unit = 'melseq'"
+ ilen = lenarray(Sresult)
+ Sdata[] init ilen
+ index = 0
+ while (index < ilen) do
+ Sdata[index] = Sresult[index][0]
+ index += 1
+ od
+ xout Sdata
+endop
+
+
+; broken
+instr mel_savestate_dbk
+ Sname = p4
+ kdone mel_savestate_dbk Sname
+ if (kdone == 1) then
+ io_sendstring("mel_state_saved", Sname)
+ turnoff
+ endif
+endin
+
+instr mel_savestate_db
+ Sname = p4
+ mel_savestate_db Sname
+ event_i "i", "mel_hostsendstates_db", 0, 1 ; resend list of items
+ if (timeinstk() >= 3) then
+ outvalue "mel_state_saved", Sname
+ turnoff
+ endif
+ ;io_sendstring("mel_state_saved", Sname)
+ ;turnoff
+endin
+
+
+instr mel_loadstate_db
+ Sname = p4
+ mel_loadstate_db Sname
+ event_i "i", "mel_updatehost", 0, 1
+ if (timeinstk() >= 3) then
+ outvalue "mel_state_loaded", Sname
+ turnoff
+ endif
+ ;io_sendstring("mel_state_loaded", Sname)
+ ;turnoff
+endin
+
+instr mel_hostsendstates_db
+ Sjson = sprintf("{\"states\": %s}", arr_serialise(mel_liststates_db()))
+ ;io_sendstring("mel_dbstates", Sjson)
+ ;turnoff
+ if (timeinstk() >= 3) then
+ outvalue "mel_dbstates", Sjson
+ turnoff
+ endif
+endin
+
+
+; if MEL_INITPATH or MEL_INITDB is set, load the specified progression data accordingly
+#ifdef MEL_HASINIT
+instr _mel_persistence_init
+#ifdef MEL_INITPATH
+ subinstrinit "mel_loadstate_fs", "$MEL_INITPATH"
+#end
+#ifdef MEL_INITDB
+ ;mel_loadstate_db "$MEL_INITDB"
+ subinstrinit "mel_loadstate_db", "$MEL_INITDB"
+#end
+ alwayson "_mel_manager"
+ turnoff
+endin
+schedule "_mel_persistence_init", 0, 60
+
+; end MEL_HASINIT
+#end
+
+#end
diff --git a/site/udo/mfcc_match.udo b/site/udo/mfcc_match.udo
new file mode 100755
index 0000000..a87df40
--- /dev/null
+++ b/site/udo/mfcc_match.udo
@@ -0,0 +1,178 @@
+#ifndef UDO_MFCCMATCH
+#define UDO_MFCCMATCH ##
+
+#include "/wavetables.udo"
+
+; FFT size for MFCC analysis (lower = more CPU)
+gimfm_default_fftsize = 1024
+
+; Number of MFCC bands to use (^2, ideally 8, 16, 32)
+gimfm_default_mfccbands = 16
+
+; default upper and lower frequencies of range to analuse
+gimfm_default_freqrange[] fillarray 140, 19000
+
+
+opcode _mfm_checkksmps, 0, 0
+ if (ksmps & (ksmps -1) != 0) then
+ prints "\n\nERROR: MFCC matching requires ksmps to be a power of two\n\n"
+ exitnow
+ endif
+endop
+
+
+/*
+ * Calculate the Euclidean distance between a table point and an array
+ * in:
+ * icorpusdata Table containing MFCC corpus data
+ * ibands Number of bands used for MFCC analysis in corpus table
+ * kcorpusindex Start index of corpus data to compare
+ * kmatch[] Array of MFCC values to compare against
+ * out:
+ * ktotal Euclidean distance
+ */
+opcode _mfm_euclideandistance, k, ikk[]i
+ icorpusdata, kcorpusindex, kmatch[], imfccbands xin
+ ktotal = 0
+ kdx = 0
+ while (kdx < imfccbands) do
+ kcorpusval tab kcorpusindex+kdx, icorpusdata
+ ktotal += pow((kcorpusval - kmatch[kdx]), 2)
+ kdx += 1
+ od
+ xout sqrt(ktotal)
+endop
+
+
+/*
+ * Get MFCC data from an audio signal
+ * in:
+ * asig The audio signal for analysis
+ * ifreqmin=100 Optional minimum frequency for analysis
+ * ifreqmax=19000 Optional maximum frequency for analysis
+ * out:
+ * kmfcc[] Array of MFCC data with length ibands
+ * ktrig Fired when new data has been output
+ */
+opcode _mfm_getmfccs, k[]k, aiiii
+ asig, ifreqmin, ifreqmax, ifftsize, imfccbands xin
+ _mfm_checkksmps()
+ kcnt init 0
+ ibins init ifftsize/2
+ kIn[] init ifftsize
+ kIn shiftin asig
+ kcnt += ksmps
+ ktrig = 0
+ if (kcnt == ifftsize) then
+ kFFT[] = rfft(kIn)
+ kPows[] = pows(kFFT)
+ kMFB[] = log(mfb(kPows, ifreqmin, ifreqmax, imfccbands), 0)
+ kmfcc[] = dct(kMFB)
+ kcnt = 0
+ ktrig = 1
+ endif
+ xout kmfcc, ktrig
+endop
+
+/*
+ * Get nearest matching table index of an audio signal based on MFCC analysis and distance comparison
+ * in:
+ * asig The driving audio signal
+ * ifftsize FFT size for MFCC analysis
+ * ibands Number of MFCC bands to use
+ * icorpusdata Table containing MFCC corpus data
+ * out:
+ * kindex Start index of corpus audio table that best matches
+ * ktrig Fired when new match has been output
+ */
+opcode _mfm_nearest, kk, aijjjj
+ asig, icorpusdata, ifreqmin, ifreqmax, ifftsize, imfccbands xin
+ imaxitems = ftlen(icorpusdata)
+ kmfcc[], ktrig _mfm_getmfccs asig, ifreqmin, ifreqmax, ifftsize, imfccbands
+ kouttrig = 0
+ if (ktrig == 1) then
+ kcorpusindex = 0
+ kbest = 9999999
+ kbestindex = -1
+ while (kcorpusindex < imaxitems - imfccbands) do
+ kdistance _mfm_euclideandistance icorpusdata, kcorpusindex, kmfcc, imfccbands
+ if (kdistance < kbest) then
+ kbest = kdistance
+ kbestindex = kcorpusindex
+ endif
+ kcorpusindex += imfccbands
+ od
+
+ endif
+ xout (kbestindex/imfccbands)*ifftsize, ktrig
+endop
+
+
+opcode mfm_analysecorpus, ki, kijjjjjj
+ ktimek, ifn, ifreqmin, ifreqmax, ifftsize, imfccbands, ifnmaxindex, icorpustmpfn xin
+
+ ifreqmin = ((ifreqmin == -1) ? gimfm_default_freqrange[0]: ifreqmin)
+ ifreqmax = ((ifreqmax == -1) ? gimfm_default_freqrange[1]: ifreqmax)
+ ifftsize = ((ifftsize == -1) ? gimfm_default_fftsize : ifftsize)
+ imfccbands = ((imfccbands == -1) ? gimfm_default_mfccbands : imfccbands)
+ ifnmaxindex = ((ifnmaxindex == -1) ? ftlen(ifn) : ifnmaxindex)
+
+ ilen = ifnmaxindex / ftsr(ifn)
+ imaxitems = imfccbands * (ifnmaxindex / ifftsize)
+ if (icorpustmpfn == 1) then
+ icorpusdata ftgentmp 0, 0, -imaxitems, 2, 0
+ else
+ icorpusdata ftgen 0, 0, -imaxitems, 2, 0
+ endif
+ ;ktimek timeinstk
+
+ kdone init 0
+ if (ktimek == 1) then
+ kcycles = ilen*kr
+ kcount init 0
+loop:
+ ;asig loscil 1, 1, ifn, 1
+ apos lphasor 1
+ asig table3 apos, ifn
+ kdx init 0
+ kmfcc[], ktrig _mfm_getmfccs asig, ifreqmin, ifreqmax, ifftsize, imfccbands
+ if (ktrig == 1) then
+ kfb = 0
+ while (kfb < imfccbands) do
+ tabw kmfcc[kfb], kdx, icorpusdata
+ kfb += 1
+ kdx += 1
+ od
+ endif
+ loop_lt kcount, 1, kcycles, loop
+ else
+ kdone = 1
+ endif
+ xout kdone, icorpusdata
+endop
+
+
+opcode mfm_matchplay, a, aiikjjjjj
+ ain, ifn, ifndata, kstretch, ifreqmin, ifreqmax, ifftsize, imfccbands, ifnmaxindex xin
+ ifreqmin = ((ifreqmin == -1) ? gimfm_default_freqrange[0]: ifreqmin)
+ ifreqmax = ((ifreqmax == -1) ? gimfm_default_freqrange[1]: ifreqmax)
+ ifftsize = ((ifftsize == -1) ? gimfm_default_fftsize : ifftsize)
+ imfccbands = ((imfccbands == -1) ? gimfm_default_mfccbands : imfccbands)
+ ilen = ((ifnmaxindex == -1) ? ftlen(ifn) : ifnmaxindex)
+ icsr = ftsr(ifn)
+
+ kdx, ktrig _mfm_nearest ain, ifndata, ifreqmin, ifreqmax, ifftsize, imfccbands
+
+ icduration = ilen / icsr
+ icps = 1/(ilen/icsr)
+ aphs, a_ syncphasor icps*(1-kstretch), a(ktrig)
+ apos = (((aphs * ilen) + kdx) / ilen) * icduration
+
+ amatched sndwarp 0.7, apos, 1, ifn, 0, ifftsize/2, 64, 4, gifnHalfSine, 1
+ ;amatched balance amatched, delay(ain, (1/sr)*ifftsize)
+ xout amatched
+
+endop
+
+
+#end
diff --git a/site/udo/midi.udo b/site/udo/midi.udo
new file mode 100755
index 0000000..1e608b3
--- /dev/null
+++ b/site/udo/midi.udo
@@ -0,0 +1,65 @@
+#ifndef UDO_MIDI
+#define UDO_MIDI ##
+/*
+ MIDI control handler
+ Currently only handling one channel
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+gimidi_values = ftgen(0, 0, -128, -2, 0) ; scale 0 to 1 values with index correlating to MIDI CC number
+
+
+/*
+ Handle incoming MIDI messages and write to channel with scaling if defined in gSmidimap_channels and gkmidimap_values
+*/
+instr midi_handler
+ kstatus, kchan, kdata1, kdata2 midiin
+ if (kstatus == 176) then ;144 is note on 128 is note off ; 208 is aftertouch
+ tabw scale(kdata2, 1, 0, 127, 0), kdata1, gimidi_values
+#ifndef MIDI_NOTE_HANDLER_INSTRUMENT
+ endif
+#else
+ elseif (kstatus == 144) then
+ schedulek("_midi_note_handler", 0, 1, 1, kchan, kdata1, kdata2)
+ elseif (kstatus == 128) then
+ schedulek("_midi_note_handler", 0, 1, 0, kchan, kdata1, kdata2)
+ endif
+#end
+endin
+alwayson("midi_handler")
+
+
+instr _midi_note_handler
+ ionoff = p4
+ ichannel = p5
+ inote = p6
+ ivelocity = p7
+ instrnum = nstrnum("$MIDI_NOTE_HANDLER_INSTRUMENT") + (ichannel / 100) + (inote / 100000)
+ if (ionoff == 0) then
+ turnoff2 instrnum, 4, 1
+ else
+ schedule(instrnum, 0, -1, ichannel, inote, ivelocity)
+ endif
+ turnoff
+endin
+
+opcode midi_cc, k, i
+ icc xin
+ kval tab icc, gimidi_values
+ xout kval
+endop
+
+opcode midi_zeroall, 0, 0
+ index = 0
+ while (index < 128) do
+ outic 1, index, 0, 0, 1
+ tabw_i 0, index, gimidi_values
+ index += 1
+ od
+endop
+
+#end
diff --git a/site/udo/midimap.udo b/site/udo/midimap.udo
new file mode 100755
index 0000000..63be6cf
--- /dev/null
+++ b/site/udo/midimap.udo
@@ -0,0 +1,247 @@
+#ifndef UDO_MIDI
+#define UDO_MIDI ##
+/*
+ MIDI control to named channel mapper
+ Currently only handling one channel
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+#include "array_tools.udo"
+#include "table_tools.udo"
+
+gSmidimap_channels[] init 128 ; channel names with index correlating to MIDI CC number
+gimidimap_values = ftgen(0, 0, -384, -2, 0) ; min and max values for scaling, and default/saved value, with index correlating to MIDI CC number
+
+
+/*
+ Handle incoming MIDI messages and write to channel with scaling if defined in gSmidimap_channels and gkmidimap_values
+*/
+instr midimap_handler
+ kstatus, kchan, kdata1, kdata2 midiin
+ if (kstatus == 176) then
+ if (strcmpk(gSmidimap_channels[kdata1], "") != 0) then
+ kvalue = scale(kdata2, table:k(kdata1+128, gimidimap_values), table:k(kdata1, gimidimap_values), 127, 0)
+ chnset kvalue, gSmidimap_channels[kdata1]
+ ;outvalue strcmpk(gSmidimap_channels[kdata1], "_retval"), kvalue
+ endif
+#ifndef MIDI_NOTE_HANDLER_INSTRUMENT
+ endif
+#else
+ elseif (kstatus == 144) then
+ schedulek("_midi_note_handler", 0, 1, 1, kchan, kdata1, kdata2)
+ elseif (kstatus == 128) then
+ schedulek("_midi_note_handler", 0, 1, 0, kchan, kdata1, kdata2)
+ endif
+#end
+endin
+alwayson("midimap_handler")
+
+
+instr _midi_note_handler
+ ionoff = p4
+ ichannel = p5
+ inote = p6
+ ivelocity = p7
+ instrnum = nstrnum("$MIDI_NOTE_HANDLER_INSTRUMENT") + (ichannel / 100) + (inote / 100000)
+ if (ionoff == 0) then
+ turnoff2 instrnum, 4, 1
+ else
+ schedule(instrnum, 0, -1, ichannel, inote, ivelocity)
+ endif
+ turnoff
+endin
+
+
+/*
+ Register a MIDI CC to channel mapping, replacing any current mapping
+
+ p4 CC number
+ p5 channel name
+ p6 minimum value to scale to
+ p7 maximum value to scale to
+ p8 default/save value
+*/
+instr midimap_register
+ icc = p4
+ Schannel = p5
+ imin = p6
+ imax = p7
+ ivalue = p8
+ gSmidimap_channels[icc] = Schannel
+ tablew imin, icc, gimidimap_values
+ tablew imax, icc+128, gimidimap_values
+ tablew ivalue, icc+256, gimidimap_values
+ turnoff
+endin
+
+
+/*
+ Register a MIDI CC to a channel mapping, replacing any current mapping, based on user input to specify the CC number.
+ Threshold (p7) can be supplied to account for noisy devices that may emit unwanted CCs
+
+ p4 channel name
+ p5 minimum value to scale to
+ p6 maximum value to scale to
+ p7 default/save value
+ p8 how many points the CC must be moved to count as registered (defaults to 1 if not supplied)
+ p9 optional instrument name or number to call when learning completed; called with p3 = -1
+*/
+instr midimap_learn
+ Schannel = p4
+ imin = p5
+ imax = p6
+ ivalue = p7
+ ithreshold = p8
+ if (qnan(p9) == 1) then ; if onComplete provided
+ ionComplete = nstrnum(strget(p9))
+ elseif (p9 > 0) then
+ ionComplete = p9
+ else
+ ionComplete = -1
+ endif
+
+ if (ithreshold < 1) then
+ ithreshold = 1
+ endif
+ kvals[] init 128
+ prints sprintf("Learn mode: move a controller to assign to channel '%s'\n", Schannel)
+
+ kstatus, kchan, kcc, kvalue midiin
+
+ if (kstatus == 176) then
+ if (ithreshold > 1 && kvals[kcc] == 0) then
+ kvals[kcc] = kvalue
+ elseif (ithreshold == 1 || abs:k(kvals[kcc] - kvalue) >= ithreshold) then
+ gSmidimap_channels[kcc] = Schannel
+ tablew imin, kcc, gimidimap_values
+ tablew imax, kcc+128, gimidimap_values
+ tablew ivalue, kcc+256, gimidimap_values
+ printf "Controller %d assigned to channel '%s'\n", 1, kcc, Schannel
+ if (ionComplete != -1) then
+ schedulek(ionComplete, 0, -1)
+ endif
+ turnoff
+ endif
+ endif
+endin
+
+
+/*
+ Abort learning mode; turnoff midimap_learn
+*/
+instr midimap_learn_abort
+ turnoff2 "midimap_learn", 0, 0
+ turnoff
+endin
+
+
+/*
+ Set CCs and channels to default/saved value
+*/
+opcode _midimap_setvalues, 0, 0
+ icc = 0
+ while (icc < lenarray(gSmidimap_channels)) do
+ if (strcmp(gSmidimap_channels[icc], "") != 0) then
+ imin table icc, gimidimap_values
+ imax table icc+128, gimidimap_values
+ ivalue table icc+256, gimidimap_values
+ chnset ivalue, gSmidimap_channels[icc]
+ outic 1, icc, ivalue, imin, imax
+ endif
+ icc += 1
+ od
+endop
+
+
+/*
+ Gather CC values and set default/saved value
+*/
+opcode _midimap_getvalues, 0, 0
+ icc = 0
+ while (icc < lenarray(gSmidimap_channels)) do
+ if (strcmp(gSmidimap_channels[icc], "") != 0) then
+ imin table icc, gimidimap_values
+ imax table icc+128, gimidimap_values
+ ivalue ctrl7 1, icc, imin, imax
+ tablew ivalue, icc+256, gimidimap_values
+ endif
+ icc += 1
+ od
+endop
+
+
+/*
+ Save map state to file
+
+ p4 file path
+ p5 1 = save current CC values; 0 = do not save values
+*/
+instr midimap_savestate_fs
+ Sfile = p4
+ isavevalues = p5
+ if (isavevalues == 1) then
+ _midimap_getvalues()
+ endif
+ Serial = sprintf("%s\n%s", arr_serialise(gSmidimap_channels), tab_serialise(gimidimap_values))
+ fprints Sfile, Serial
+ turnoff
+endin
+
+
+/*
+ Load map state from file
+
+ p4 file path
+*/
+instr midimap_loadstate_fs
+ Sfile = p4
+read:
+ Sline, ilinenum readfi Sfile
+ if (ilinenum == 1) then
+ gSmidimap_channels arr_unserialise Sline
+ igoto read
+ elseif (ilinenum == 2) then
+ tab_unserialise Sline, gimidimap_values
+ endif
+ _midimap_setvalues()
+ turnoff
+endin
+
+
+
+#ifdef USING_DB
+/*
+ Save map state to database
+
+ p4 state name
+ p5 1 = save current CC values; 0 = do not save values
+*/
+instr midimap_savestate_db
+ Sname = p4
+ isavevalues = p5
+ if (isavevalues == 1) then
+ _midimap_getvalues()
+ endif
+ pgdb_array_save strcat(Sname, ".channels"), "midimap", gSmidimap_channels
+ pgdb_table_save strcat(Sname, ".values"), "midimap", gimidimap_values
+ turnoff
+endin
+
+
+/*
+ Load map state from database
+
+ p4 state name
+*/
+instr midimap_loadstate_db
+ Sname = p4
+ gSmidimap_channels pgdb_array_get strcat(Sname, ".channels"), "midimap"
+ i_ pgdb_table_get strcat(Sname, ".values"), "midimap", gimidimap_values
+ _midimap_setvalues()
+ turnoff
+endin
+#end ; USING_DB
+
+#end
diff --git a/site/udo/oprepare.udo b/site/udo/oprepare.udo
new file mode 100755
index 0000000..f222ad3
--- /dev/null
+++ b/site/udo/oprepare.udo
@@ -0,0 +1,93 @@
+#ifndef UDO_OPREPARE
+#define UDO_OPREPARE ##
+/*
+ Offline preparation system: record a sound in one k-cycle to a ftable for future use
+ May be used where online playback would be too CPU heavy
+ Instruments to be prepared should be prepended with src_
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+
+/*
+ Internal preparation instrument: loop through gSoprepare
+ p4 index of gSoprepare to process
+ p5 instrument name to schedule when all sounds have been prepared
+*/
+gSoprepare[] init 1 ; filled by oprepare opcode: input instrument names without src_ prepended
+giopreparedfns[] init 1 ; filled by oprepare opcode: output ftable numbers corresponding to above
+instr _oprepare
+ iprepareindex = p4
+ SonComplete = p5
+ if (iprepareindex >= lenarray(gSoprepare)) then
+ event_i "i", SonComplete, 0, 3600
+ turnoff
+ else
+ Sprepareinstr = gSoprepare[iprepareindex]
+ Srcinstr = sprintf("src_%s", Sprepareinstr)
+ ilen = 0.8
+ p3 = ilen
+ ifn ftgen 0, 0, sr*ilen, 7, 0
+ giopreparedfns[iprepareindex] = ifn
+ ktimek timeinstk
+ if (ktimek == 1) then
+ kcycles = ilen * kr
+ kcount init 0
+loop:
+ apos phasor (1/(ftlen(ifn)/sr))
+ aproc subinstr Srcinstr, 1, 0.1
+ tabw aproc, apos, ifn, 1
+ loop_lt kcount, 1, kcycles, loop
+ elseif (ktimek == 5) then
+ scoreline_i sprintf("i\"_oprepare\" 0 1 %d \"%s\"", iprepareindex+1, SonComplete)
+ turnoff
+ endif
+ endif
+
+endin
+
+
+/*
+ Start the offline preparation
+
+ oprepare Snames[], SonComplete
+
+ Snames[] list of instruments to process (instrument name without src_ prepended)
+ SonComplete instrument to be scheduled when preparation process has completed
+*/
+opcode oprepare, 0, S[]S
+ Snames[], SonComplete xin
+ gSoprepare = Snames
+ giopreparedfns[] init lenarray(Snames)
+ scoreline_i sprintf("i\"_oprepare\" 0 1 0 \"%s\"", SonComplete)
+endop
+
+
+/*
+ Get the ftable number of a specified instrument name as originally passed to oprepare
+
+ ifn oprepare_getfn Sname
+
+ ifn the ftable
+ Sname name of offline-prepared instrument
+*/
+opcode oprepare_getfn, i, S
+ Sname xin
+ ifn = -1
+ index = 0
+ while (index < lenarray(gSoprepare)) do
+ if (strcmp(gSoprepare[index], Sname) == 0) then
+ ifn = giopreparedfns[index]
+ endif
+ index += 1
+ od
+complete:
+ xout ifn
+endop
+
+
+#end
+
diff --git a/site/udo/pgdb.udo b/site/udo/pgdb.udo
new file mode 100755
index 0000000..230d74a
--- /dev/null
+++ b/site/udo/pgdb.udo
@@ -0,0 +1,313 @@
+#ifndef UDO_PGDB
+#define UDO_PGDB ##
+/*
+ PostgreSQL connection and tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "__config__.udo"
+#define USING_DB ##
+
+gidb dbconnect "postgresql", "$PGDB_HOST", "$PGDB_NAME", "$PGDB_USER", "$PGDB_PASSWORD"
+
+
+/*
+ Escape a SQL string
+
+ Soutput sqlescape Sinput
+
+ Sinput string to be escaped
+ Soutput escaped string
+
+*/
+opcode pgdb_sqlescape, S, S
+ Sdata xin
+ Sout = ""
+ ilen = strlen(Sdata)
+ index = 0
+ while (index < ilen) do
+ Schar = strsub(Sdata, index, index+1)
+ if (strcmp(Schar, "'") == 0) then
+ Sout = strcat(Sout, "''")
+ else
+ Sout = strcat(Sout, Schar)
+ endif
+ index += 1
+ od
+ xout Sout
+endop
+
+/*
+ Escape a SQL string at k-rate
+
+ Soutput sqlescape Sinput
+
+ Sinput string to be escaped
+ Soutput escaped string
+
+*/
+opcode pgdb_sqlescapek, S, S
+ Sdata xin
+ Sout = ""
+ klen = strlenk(Sdata)
+ kindex init 0
+ while (kindex < klen) do
+ Schar = strsubk(Sdata, kindex, kindex+1)
+ if (strcmpk(Schar, "'") == 0) then
+ Sout = strcatk(Sout, "''")
+ else
+ Sout = strcatk(Sout, Schar)
+ endif
+ kindex += 1
+ od
+ xout Sout
+endop
+
+
+/*
+ Save a JSON object to the database with a given name and unit
+
+ pgdb_json_save Sname, Sunit, iJson
+
+ Sname name of object
+ Sunit category of object
+ iJson JSON object
+*/
+opcode pgdb_json_save, 0, SSi
+ Sname, Sunit, iJson xin
+ Squery = sprintf("DELETE FROM savejson WHERE name = '%s' AND unit = '%s'; INSERT INTO savejson (name, unit, data, created) VALUES ('%s', '%s', '%s', current_timestamp)",\
+ Sname, Sunit, Sname, Sunit, jsondumps(iJson, 0)\
+ )
+ dbexec gidb, Squery
+endop
+
+
+/*
+ Load a JSON object from the database
+
+ iJson pgdb_json_load Sname, Sunit
+
+ iJson the JSON object if successful, otherwise -1 if the requested data does not exist
+ Sname name of saved object
+ Sunit category of saved object
+
+*/
+opcode pgdb_json_load, i, SS
+ Sname, Sunit xin
+ Squery = sprintf("SELECT data::text FROM savejson WHERE name = '%s' AND unit = '%s' UNION SELECT 'void'", Sname, Sunit)
+ Sresult dbscalar gidb, Squery
+ if (strcmp(Squery, "void") == 0) then
+ iJson = -1
+ else
+ iJson = jsonloads(Sresult)
+ endif
+ xout iJson
+endop
+
+
+
+
+
+
+/*
+ Save an array to the database with a given name
+
+ pgdb_array_save Sname, Sunit, iarray[]
+
+ Sname name of the save data
+ Sunit unit to associate save data with
+ iarray[] the array to save
+
+*/
+opcode pgdb_array_save, 0, SSi[]
+ Sname, Sunit, iarray[] xin
+ Sname = pgdb_sqlescape(Sname)
+ Sunit = pgdb_sqlescape(Sunit)
+ dbexec gidb, sprintf("DELETE FROM savearray WHERE name = '%s' AND unit = '%s'", Sname, Sunit)
+ ilen = lenarray(iarray)
+ index = 0
+ Sdata = ""
+ while (index < ilen) do
+ if (index != 0) then
+ Sdata = strcat(Sdata, ",")
+ endif
+ Sdata = strcat(Sdata, sprintf("%f", iarray[index]))
+ index += 1
+ od
+ Squery = sprintf("INSERT INTO savearray (name, data, unit, created) VALUES ('%s', array[%s], '%s', current_timestamp)", Sname, Sdata, Sunit)
+ dbexec gidb, Squery
+endop
+
+opcode pgdb_array_save, 0, SSS[]
+ Sname, Sunit, Sarray[] xin
+ Sname = pgdb_sqlescape(Sname)
+ Sunit = pgdb_sqlescape(Sunit)
+ dbexec gidb, sprintf("DELETE FROM savearray WHERE name = '%s' AND unit = '%s'", Sname, Sunit)
+ ilen = lenarray(Sarray)
+ index = 0
+ Sdata = ""
+ while (index < ilen) do
+ if (index != 0) then
+ Sdata = strcat(Sdata, ",")
+ endif
+ Sdata = strcat(Sdata, sprintf("'%s'", Sarray[index]))
+ index += 1
+ od
+ Squery = sprintf("INSERT INTO savearray (name, textdata, unit, created) VALUES ('%s', array[%s], '%s', current_timestamp)", Sname, Sdata, Sunit)
+ dbexec gidb, Squery
+endop
+
+
+/*
+ Save a ftable to the database with a given name
+
+ pgdb_table_save Sname, Sunit, ifn
+
+ Sname name of the save data
+ Sunit unit to associate save data with
+ ifn ftable number
+
+*/
+opcode pgdb_table_save, 0, SSi
+ Sname, Sunit, ifn xin
+ Sname = pgdb_sqlescape(Sname)
+ Sunit = pgdb_sqlescape(Sunit)
+ ilen = ftlen(ifn)
+ index = 0
+ Sdata = ""
+ while (index < ilen) do
+ Sdata = strcat(Sdata, sprintf("%f", table:i(index, ifn)))
+ if (index + 1 < ilen) then
+ Sdata = strcat(Sdata, ",")
+ endif
+ index += 1
+ od
+ Squery = sprintf("DELETE FROM savearray WHERE name = '%s' AND unit = '%s'; INSERT INTO savearray (name, data, unit, created) VALUES ('%s', array[%s], '%s', current_timestamp)",\
+ Sname, Sunit, Sname, Sdata, Sunit\
+ )
+ dbexec gidb, Squery
+endop
+
+
+; broken
+opcode pgdb_table_savek, k, SSkk
+ Sname, Sunit, kfn, ktrig xin
+ ;Sname pgdb_sqlescape Sname
+ ;Sunit pgdb_sqlescape Sunit
+ if (ktrig == 1) then
+ printk2 tablekt:k(1, kfn)
+ klen = tableng(kfn)
+ kindex = 0
+ Sdata = ""
+ while (kindex < klen) do
+ Sdata = strcatk(Sdata, sprintfk("%f", tablekt:k(kindex, kfn)))
+ if (kindex + 1 < klen) then
+ Sdata = strcatk(Sdata, ",")
+ endif
+ kindex += 1
+ od
+ Squery sprintfk "DELETE FROM savearray WHERE name = '%s' AND unit = '%s'; INSERT INTO savearray (name, data, unit, created) VALUES ('%s', array[%s], '%s', current_timestamp)\n",\
+ Sname, Sunit, Sname, Sdata, Sunit
+ kdone dbexec_k gidb, Squery, ktrig
+ printf Squery, ktrig
+ endif
+
+ xout kdone
+endop
+
+
+/*
+ Get an array from the database with a given name
+
+ iarray[] array_get Sname
+
+ Sname name of the save data
+ iarray[] the resulting array
+
+*/
+opcode pgdb_array_get, i[], SS
+ Sname, Sunit xin
+ Sname = pgdb_sqlescape(Sname)
+ Sunit = pgdb_sqlescape(Sunit)
+ Squery = sprintf("SELECT UNNEST(data) FROM savearray WHERE name = '%s' AND unit = '%s'", Sname, Sunit)
+ iresult[][] dbarray gidb, Squery
+ idata[] init lenarray(iresult)
+ index = 0
+
+ ; TODO : can use getcol here??
+
+ while (index < lenarray(idata)) do
+ idata[index] = iresult[index][0]
+ index += 1
+ od
+ xout idata
+endop
+
+
+opcode pgdb_array_get, S[], SS
+ Sname, Sunit xin
+ Sname = pgdb_sqlescape(Sname)
+ Sunit = pgdb_sqlescape(Sunit)
+ Squery = sprintf("SELECT UNNEST(textdata) FROM savearray WHERE name = '%s' AND unit = '%s'", Sname, Sunit)
+ Sresult[][] dbarray gidb, Squery
+ Sdata[] init lenarray(Sresult)
+ index = 0
+
+ ; TODO : can use getcol here??
+
+ while (index < lenarray(Sdata)) do
+ Sdata[index] = Sresult[index][0]
+ index += 1
+ od
+ xout Sdata
+endop
+
+
+
+/*
+ Get a ftable from the database with a given name: load to an existing table if ifnexisting not specified
+
+ ifn pgdb_table_get Sname, [ifnexisting]
+
+ Sname name of the save data
+ ifn the resulting ftable
+ ifnexisting the table to load to, if not long enough, values will be limited
+
+*/
+opcode pgdb_table_get, i, SSj
+ Sname, Sunit, ifnexisting xin
+ Sname = pgdb_sqlescape(Sname)
+ Sunit = pgdb_sqlescape(Sunit)
+ Squery = sprintf("SELECT UNNEST(data) FROM savearray WHERE name = '%s' AND unit = '%s'", Sname, Sunit)
+ iresult[][] dbarray gidb, Squery
+ if (lenarray(iresult) > 0) then
+ ifn = (ifnexisting == -1) ? ftgen(0, 0, lenarray(iresult), 7, 0) : ifnexisting
+ index = 0
+ while (index < min(lenarray(iresult), ftlen(ifn))) do
+ tablew iresult[index][0], index, ifn
+ index += 1
+ od
+ endif
+ xout ifn
+endop
+
+
+
+
+/*
+ Prewarm a relation (load to memory)
+
+ pgdb_prewarm Srelation
+
+ Srelation name of relation (ie table/view)
+*/
+opcode pgdb_prewarm, 0, S
+ Srelation xin
+ icheck dbscalar gidb, sprintf("SELECT COALESCE(pg_prewarm('%s'), 0)", Srelation)
+endop
+
+
+#end
diff --git a/site/udo/pvs_fsegproc.udo b/site/udo/pvs_fsegproc.udo
new file mode 100755
index 0000000..984be86
--- /dev/null
+++ b/site/udo/pvs_fsegproc.udo
@@ -0,0 +1,135 @@
+#ifndef UDO_PVSFSEGPROC
+#define UDO_PVSFSEGPROC ##
+/*
+ Segmented multiband frequency processing
+
+ Instruments passed to fsegproc should begin with $FSEGPROCINPUT which will
+ provide the segment audio as aL and aR, and the segment group as igroupindex
+
+
+ This file is part of the SONICS UDO collection by Richard Knight 2025
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "bussing.udo"
+
+gifsegproc_maxsessionindex = 0
+
+opcode _fsegproc_channels, SS, ii
+ isessionindex, igroupindex xin
+ Ssend = sprintf("bp%d_%d_%d", isessionindex, igroupindex, 1)
+ Sreturn = sprintf("bp%d_%d_%d", isessionindex, igroupindex, 0)
+ xout Ssend, Sreturn
+endop
+
+opcode _fsegproc_send, 0, ffiio
+ fL, fR, isessionindex, ifnsegbins, isegindex xin
+ ifnmap = tab_i(isegindex, ifnsegbins)
+ fmL pvsmaska fL, ifnmap, 1
+ fmR pvsmaska fR, ifnmap, 1
+
+ aL pvsynth fmL
+ aR pvsynth fmR
+ bus_mix sprintf("bp%d_%d", isessionindex, isegindex), aL, aR
+
+ if (isegindex + 1 < ftlen(ifnsegbins)) then
+ _fsegproc_send fL, fR, isessionindex, ifnsegbins, isegindex + 1
+ endif
+endop
+
+
+opcode _fsegproc_receive, aa, iiS[]o
+ isegments, isessionindex, Sinstrs[], igroupindex xin
+ ilen = lenarray(Sinstrs)
+ if (ilen == 1) then
+ Sinstr = Sinstrs[0]
+ elseif (ilen == isegments) then
+ Sinstr = Sinstrs[igroupindex]
+ else
+ index = min(round((ilen / isegments) * igroupindex), isegments - 1)
+ Sinstr = Sinstrs[index]
+ endif
+ aL, aR subinstr Sinstr, igroupindex, sprintf("bp%d_%d", isessionindex, igroupindex)
+ if (igroupindex + 1 < isegments) then
+ arL, arR _fsegproc_receive isegments, isessionindex, Sinstrs, igroupindex + 1
+ aL += arL
+ aR += arR
+ endif
+ xout aL, aR
+endop
+
+
+opcode _fsegproc_inner, aa, ffS[]jpj
+ fL, fR, Sinstrs[], isegments, imode, ifnmap xin
+ if (isegments == -1) then
+ isegments = lenarray(Sinstrs)
+ endif
+ isessionindex = gifsegproc_maxsessionindex
+ gifsegproc_maxsessionindex += 1
+ aL, aR _fsegproc_receive isegments, isessionindex, Sinstrs
+
+ i_, ibins, i_, i_ pvsinfo fL
+ isegmentsize = 0
+ icursegment = 0
+ if (imode == 0) then
+ isegmentsize = round(ibins / isegments)
+ endif
+ if (ifnmap == -1) then
+ ifnmap ftgentmp 0, 0, ibins, 2, 0
+ index = 0
+ indexsegment = 0
+ while (index < ftlen(ifnmap)) do
+ if (imode == 0) then
+ isegment = icursegment
+ if (indexsegment + 1 >= isegmentsize && icursegment + 1 < isegments) then
+ icursegment += 1
+ indexsegment = 0
+ else
+ indexsegment += 1
+ endif
+ else
+ isegment = round(random(0, isegments - 1))
+ endif
+ tabw_i isegment, index, ifnmap
+ index += 1
+ od
+ endif
+ ifnsegbins ftgentmp 0, 0, -isegments, -2, 0
+ index = 0
+ while (index < isegments) do
+ tabw_i ftgentmp(0, 0, -ibins, -2, 0), index, ifnsegbins
+ index += 1
+ od
+ index = 0
+ while (index < ftlen(ifnmap)) do
+ tabw_i 1, index, tab_i(tab_i(index, ifnmap), ifnsegbins)
+ index += 1
+ od
+ _fsegproc_send fL, fR, isessionindex, ifnsegbins
+ xout aL, aR
+endop
+
+/*
+ mode 0 = sequential, 1 = randomised
+*/
+opcode fsegproc, aa, ffS[]jpj
+ fL, fR, Sinstrs[], isegments, imode, ifnmap xin
+ aL, aR _fsegproc_inner fL, fR, Sinstrs, isegments, imode, ifnmap
+ xout aL, aR
+endop
+
+opcode fsegproc, aa, ffSjpj
+ fL, fR, Sinstr, isegments, imode, ifnmap xin
+ Sinstrs[] fillarray Sinstr
+ aL, aR _fsegproc_inner fL, fR, Sinstrs, isegments, imode, ifnmap
+ xout aL, aR
+endop
+
+#define FSEGPROCINPUT #
+igroupindex = p4
+Sbus = p5
+aL, aR bus_read Sbus
+#
+
+#end
diff --git a/site/udo/pvs_fulltabproc.udo b/site/udo/pvs_fulltabproc.udo
new file mode 100755
index 0000000..ccd8627
--- /dev/null
+++ b/site/udo/pvs_fulltabproc.udo
@@ -0,0 +1,197 @@
+#ifndef UDO_PVSFPROC
+#define UDO_PVSFPROC ##
+/*
+ Full table based PVS processing, for reading a complete file to a series of frames in tables
+
+ ksmps must be 64 or lower: setksmps(64) can be set in the calling instrument if required
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+opcode tpvf_destroy, 0, i
+ itpvHandle xin
+ ifnamp tab_i 2, itpvHandle
+ ifnfreq tab_i 3, itpvHandle
+ if (ifnamp > 0) then
+ ftfree ifnamp, 0
+ endif
+ if (ifnfreq > 0) then
+ ftfree ifnfreq, 0
+ endif
+ ftfree itpvHandle, 0
+endop
+
+opcode tpvf_clone, i, i
+ itpvHandle xin
+ ifnamp tab_i 2, itpvHandle
+ ifnfreq tab_i 3, itpvHandle
+ ilen = ftlen(ifnamp)
+ ifnampNew ftgen 0, 0, -ilen, -2, 0
+ ifnfreqNew ftgen 0, 0, -ilen, -2, 0
+ itpvHandleNew ftgen 0, 0, -5, -2, tab_i(0, itpvHandle), tab_i(1, itpvHandle), ifnampNew, ifnfreqNew, tab_i(4, itpvHandle)
+ tableicopy ifnampNew, ifnamp
+ tableicopy itpvHandleNew, ifnfreq
+ xout itpvHandleNew
+endop
+
+opcode tpvf_tablen, i, iii
+ ifnaudiolen, ifftsize, ifftdecimation xin
+ xout round(ifnaudiolen / (ifftsize / ifftdecimation)) * (ifftsize / 2)
+endop
+
+opcode tpvf_framecount, i, i
+ itpvHandle xin
+ ifftsize tab_i 0, itpvHandle
+ ifnamp tab_i 2, itpvHandle
+ xout ftlen(ifnamp) / (ifftsize / 2)
+endop
+
+opcode tpvf_analyse, ki, ijj
+ ifn, ifftsize, ifftdecimation xin
+ istatus = 1
+ itpvHandle = -1
+ ifftsize = (ifftsize == -1) ? 512: ifftsize
+ ifftdecimation = (ifftdecimation == -1) ? 8: ifftdecimation
+ ifnlen = ftlen(ifn)
+ ifnsr = ftsr(ifn)
+
+ ifoutlen = tpvf_tablen(ifnlen, ifftsize, ifftdecimation)
+
+ itpvHandle ftgen 0, 0, -5, -2, ifftsize, ifftdecimation, -1, -1, -1
+ ifnampTemp ftgentmp 0, 0, -(ifftsize / 2), -2, 0
+ ifnfreqTemp ftgentmp 0, 0, -(ifftsize / 2), -2, 0
+
+ ifnamp ftgen 0, 0, -ifoutlen, -2, 0
+ ifnfreq ftgen 0, 0, -ifoutlen, -2, 0
+ tabw_i ifnamp, 2, itpvHandle
+ tabw_i ifnfreq, 3, itpvHandle
+ tabw_i (ifnlen / ifnsr), 4, itpvHandle
+
+ ikcycles = ifnlen / ksmps
+ kcycle init 0
+ ktimek timeinstk
+ if (ktimek == 1) then
+ kwriteindex = 0
+ while (kcycle < ikcycles) do
+ apos lphasor 1
+ asig table3 apos, ifn
+ fsig pvsanal asig, ifftsize, ifftsize / ifftdecimation, ifftsize, 1
+ kready pvsftw fsig, ifnampTemp, ifnfreqTemp
+ if (kready == 1) then
+ kreadindex = 0
+ while (kreadindex < ftlen(ifnampTemp)) do
+ tablew tab:k(kreadindex, ifnampTemp), kwriteindex, ifnamp ; overshoots write
+ tablew tab:k(kreadindex, ifnfreqTemp), kwriteindex, ifnfreq ; overshoots write
+ kwriteindex += 1
+ kreadindex += 1
+ od
+ endif
+ kcycle += 1
+ od
+ else
+ kdone = 1
+ endif
+ xout kdone, itpvHandle
+endop
+
+opcode tpvf_resynth, aak, ijojo
+ itpvHandle, ifnBinSelection, iuseadsyn, isplitselection, istartframe xin
+ ifftsize tab_i 0, itpvHandle
+ ifftdecimation tab_i 1, itpvHandle
+ ifnamp tab_i 2, itpvHandle
+ ifnfreq tab_i 3, itpvHandle
+
+ if (ifnBinSelection > 0 && isplitselection == 1) then
+ ibslen = ftlen(ifnBinSelection)
+ ifnBinSelectionInverse ftgentmp 0, 0, -(ibslen), -2, 0
+ index = 0
+ while (index < ibslen) do
+ tabw_i -(tab_i(index, ifnBinSelection)), index, ifnBinSelectionInverse
+ index += 1
+ od
+ endif
+
+ ifnampTemp ftgentmp 0, 0, -(ifftsize / 2), -2, 0
+ ifnfreqTemp ftgentmp 0, 0, -(ifftsize / 2), -2, 0
+
+ anull init 0
+ aoutinverse = anull
+ fsig pvsanal anull, ifftsize, ifftsize / ifftdecimation, ifftsize, 1
+ kready pvsftw fsig, ifnampTemp, ifnfreqTemp
+ kwriteindex = 0
+ kreadindex init istartframe * (ifftsize / 2)
+ if (kreadindex >= ftlen(ifnamp)) then
+ kdone = 1
+ aout = anull
+ else
+ kdone = 0
+ if (kready == 1) then
+ while (kwriteindex < (ifftsize / 2)) do
+ tabw tab:k(kreadindex, ifnamp), kwriteindex, ifnampTemp
+ tabw tab:k(kreadindex, ifnfreq), kwriteindex, ifnfreqTemp
+ kreadindex += 1
+ kwriteindex += 1
+ od
+ endif
+ pvsftr fsig, ifnampTemp, ifnfreqTemp
+ if (ifnBinSelection > 0) then
+ fproc pvsmaska fsig, ifnBinSelection, 1
+ if (iuseadsyn == 1) then
+ aout pvsadsyn fproc, ifftsize / 2, 1
+ else
+ aout pvsynth fproc
+ endif
+ if (isplitselection == 1) then
+ fprocinverse pvsmaska fsig, ifnBinSelectionInverse, 1
+ if (iuseadsyn == 1) then
+ aoutinverse pvsadsyn fprocinverse, ifftsize / 2, 1
+ else
+ aoutinverse pvsynth fprocinverse
+ endif
+ endif
+ else
+ if (iuseadsyn == 1) then
+ aout pvsadsyn fsig, ifftsize / 2, 1
+ else
+ aout pvsynth fsig
+ endif
+ endif
+ endif
+ xout aout, aoutinverse, kdone
+endop
+
+opcode tpvf_resynth, ak, ijoj
+ itpvHandle, ifnBinSelection, iuseadsyn, istartframe xin
+ aout, a_, kdone tpvf_resynth itpvHandle, ifnBinSelection, iuseadsyn, istartframe
+ xout aout, kdone
+endop
+
+opcode tpvf_resynth_offline, ik, io
+ itpvHandle, iuseadsyn xin
+ ifftsize tab_i 0, itpvHandle
+ ifftdecimation tab_i 1, itpvHandle
+ ifnamp tab_i 2, itpvHandle
+ ifnfreq tab_i 3, itpvHandle
+ ifndurations tab_i 4, itpvHandle
+ ifnout ftgen 0, 0, -(round(ifndurations * sr)), -2, 0
+ ikcycles = floor(ifndurations * kr)
+ kdone = 0
+ ktimek timeinstk
+ if (ktimek == 1) then
+ kcycle = 0
+ while (kcycle < ikcycles) do
+ apos lphasor 1
+ asig, k_ tpvf_resynth itpvHandle, -1, iuseadsyn
+ tabw asig, apos, ifnout
+ kcycle += 1
+ od
+ else
+ kdone = 1
+ endif
+ xout ifnout, kdone
+endop
+
+#end
diff --git a/site/udo/pvs_tabproc.udo b/site/udo/pvs_tabproc.udo
new file mode 100755
index 0000000..dc2dc04
--- /dev/null
+++ b/site/udo/pvs_tabproc.udo
@@ -0,0 +1,640 @@
+#ifndef UDO_PVSTABPROC
+#define UDO_PVSTABPROC ##
+/*
+ Frame based PVS processing
+
+ ksmps must be 64 or lower: setksmps(64) can be set in the calling instrument if required
+
+ tpv data tables have the following indexes:
+ 0: number of channels
+ 1: amp left
+ 2: amp right
+ 3: frequency left
+ 4: frequency right
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022, 2024, 2025
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+/*
+ Make container for processing tables and information
+ itpvdata tpv_makecontainer ichannels, inumbins
+
+ itpvdata tpv information for subsequent opcodes
+ ichannels number of channels to account for
+ inumbins number of frequency bins
+*/
+opcode tpv_makecontainer, i, ii
+ ichannels, inumbins xin
+ itpv ftgentmp 0, 0, -5, -2, ichannels
+ index = 1
+ while (index < 5) do
+ if (ichannels == 1 && (index == 2 || index == 4)) then
+ ival = 0
+ else
+ ival ftgentmp 0, 0, -inumbins, -2, 0
+ endif
+ tabw_i ival, index, itpv
+ index += 1
+ od
+ xout itpv
+endop
+
+/*
+ Shorthand to get tpv data items
+ ichannels, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+
+ ichannels number of channels
+ isize bin size
+ ifnampL left amp table
+ ifnampR right amp table
+ ifnfreqL left freq table
+ ifnfreqR right freq table
+ iptvdata tpv data table
+*/
+opcode tpv_get, iiiiii, i
+ itpvdata xin
+ ifnAmpL = tab_i(1, itpvdata)
+ xout tab_i(0, itpvdata), ftlen(ifnAmpL), ifnAmpL, tab_i(2, itpvdata), tab_i(3, itpvdata), tab_i(4, itpvdata)
+endop
+
+/*
+ Analyse f-signal to table (mono)
+ kready, itpvdata tpv_anal fsrc
+
+ fsrc source f-signal
+ kready done trigger
+ iptvdata tpv analysis data
+*/
+opcode tpv_anal, ki, f
+ fsrc xin
+ ioverlap, inumbins, iwinsize, iformat pvsinfo fsrc
+ itpvdata tpv_makecontainer 1, inumbins
+ kready pvsftw fsrc, tab_i(1, itpvdata), tab_i(3, itpvdata)
+ xout kready, itpvdata
+endop
+
+/*
+ Analyse f-signal to table (stereo)
+ kready, itpvdata tpv_anal fsrcL, fsrcR
+
+ fsrcL source f-signal left
+ fsrcR source f-signal right
+ kready done trigger
+ iptvdata tpv analysis stream handles for use in other opcodes
+*/
+opcode tpv_anal, ki, ff
+ fsrcL, fsrcR xin
+ ioverlap, inumbins, iwinsize, iformat pvsinfo fsrcL
+ itpvdata tpv_makecontainer 2, inumbins
+ kreadyL pvsftw fsrcL, tab_i(1, itpvdata), tab_i(3, itpvdata)
+ kreadyR pvsftw fsrcR, tab_i(2, itpvdata), tab_i(4, itpvdata)
+ xout (kreadyL & kreadyR), itpvdata
+endop
+
+/*
+ Reform tpv data (mono). Input and output f-signals must be the same.
+
+ foutM tpv_resynth itpvdata, foutM
+
+ itpvdata tpv analysis stream handles
+ foutM f-signal to write to
+*/
+opcode tpv_resynth, f, if
+ itpvdata, foutM xin
+ pvsftr foutM, tab_i(1, itpvdata), tab_i(3, itpvdata)
+ xout foutM
+endop
+
+/*
+ Reform tpv data (stereo). Input and output f-signals must be the same.
+ foutL, foutR tpv_resynth itpvdata, foutL, foutR
+
+ itpvdata tpv analysis stream handles
+ foutL f-signal to write to left
+ foutR f-signal to write to right
+*/
+opcode tpv_resynth, ff, iff
+ itpvdata, foutL, foutR xin
+ pvsftr foutL, tab_i(1, itpvdata), tab_i(3, itpvdata)
+ pvsftr foutR, tab_i(2, itpvdata), tab_i(4, itpvdata)
+ xout foutL, foutR
+endop
+
+/*
+ Smear frames
+ tpv_smear kready, itpvdata, imaxframes, kframes, kavgfreqs, kincludeoriginal
+
+ kready done trigger from tpv_anal
+ itpvdata tpv analysis stream handles
+ imaxframes maximum frames for smearage
+ kframes frames of smearage to apply
+ kavgfreqs average frequencies as well as smearing amplitudes (bool)
+ kincludeoriginal include the original frame in output
+*/
+opcode tpv_smear, 0, kijJOP
+ kready, itpvdata, imaxframes, kframes, kavgfreqs, kincludeoriginal xin
+ imaxframes = (imaxframes == -1) ? 8 : imaxframes
+ kframes = (kframes < 1 || kframes > imaxframes) ? imaxframes: kframes
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ itpvtemps ftgentmp 0, 0, -imaxframes, -2, 0
+ index = 0
+ while (index < imaxframes) do
+ tabw_i(tpv_makecontainer(ichans, isize), index, itpvtemps)
+ index += 1
+ od
+ kindexframew init 0
+
+ if (kready == 1) then
+ ktpvfnw = tab:k(kindexframew, itpvtemps)
+ tablecopy tablekt:k(1, ktpvfnw), ifnampL
+ tablecopy tablekt:k(3, ktpvfnw), ifnfreqL
+ if (ichans == 2) then
+ tablecopy tablekt:k(2, ktpvfnw), ifnampR
+ tablecopy tablekt:k(4, ktpvfnw), ifnfreqR
+ endif
+
+ kindexframer = (kindexframew - 1 < 0) ? imaxframes - 1 : kindexframew - 1
+ kframescale = 1 / kframes
+ kindex = 0
+ while (kindex < isize) do
+ kampL = (kincludeoriginal == 1) ? tab:k(kindex, ifnampL) : 0
+ kfreqL = (kincludeoriginal == 1) ? tab:k(kindex, ifnfreqL) : 0
+ if (ichans == 2) then
+ kampR = (kincludeoriginal == 1) ? tab:k(kindex, ifnampR) : 0
+ kfreqR = (kincludeoriginal == 1) ? tab:k(kindex, ifnfreqR) : 0
+ endif
+ kindexframeabs = 0
+ while (kindexframeabs < kframes) do
+ kcurscale = (kframescale * (kframes - kindexframeabs))
+ ktpvframe tab kindexframer, itpvtemps
+ ;kampL = (kampL + tablekt:k(kindex, ktpvframe)) * 0.5
+ kampL += tablekt:k(kindex, tablekt:k(1, ktpvframe)) * kcurscale
+ if (kavgfreqs == 1) then
+ kfreqL = (kfreqL + tablekt:k(kindex, tablekt:k(3, ktpvframe))) * 0.5
+
+ endif
+ if (ichans == 2) then
+ kampR += tablekt:k(kindex, tablekt:k(2, ktpvframe)) * kcurscale
+ if (kavgfreqs == 1) then
+ kfreqR = (kfreqR + tablekt:k(kindex, tablekt:k(4, ktpvframe))) * 0.5
+ endif
+ endif
+ kindexframer = (kindexframer - 1 < 0) ? imaxframes - 1 : kindexframer - 1
+ kindexframeabs += 1
+ od
+
+ tabw kampL, kindex, ifnampL
+ if (kavgfreqs == 1) then
+ tabw kfreqL, kindex, ifnfreqL
+ endif
+ if (ichans == 2) then
+ tabw kampR, kindex, ifnampR
+ if (kavgfreqs == 1) then
+ tabw kfreqR, kindex, ifnfreqR
+ endif
+ endif
+ kindex += 1
+ od
+ if (kindexframew + 1 < imaxframes) then
+ kindexframew += 1
+ else
+ kindexframew = 0
+ endif
+ endif
+endop
+
+/*
+ Wrap spectrum
+ tpv_wrap kready, itpvdata, kwrapstart
+
+ kready done trigger from tpv_anal
+ itpvdata tpv analysis stream handles
+ kwrapAmpBin start bin for amplitude wrapping
+ kwrapFreqBin start bin for frequency wrapping
+*/
+opcode tpv_wrap, 0, kikk
+ kready, itpvdata, kwrapAmpBin, kwrapFreqBin xin
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ itpvdatatemp tpv_makecontainer ichans, isize
+ i_, i_, ifnampLtemp, ifnampRtemp, ifnfreqLtemp, ifnfreqRtemp tpv_get itpvdatatemp
+
+ if (kready == 1) then
+ tablecopy ifnampLtemp, ifnampL
+ tablecopy ifnfreqLtemp, ifnfreqL
+ if (ichans == 2) then
+ tablecopy ifnampRtemp, ifnampR
+ tablecopy ifnfreqRtemp, ifnfreqR
+ endif
+
+ kindex = 0
+ while (kindex < isize) do
+ kwrapAmpIndexW = (kwrapAmpBin + kindex) % isize
+ kwrapFreqIndexW = (kwrapFreqBin + kindex) % isize
+
+ tabw tab:k(kindex, ifnampLtemp), kwrapAmpIndexW, ifnampL
+ tabw tab:k(kindex, ifnfreqLtemp), kwrapFreqIndexW, ifnfreqL
+
+ if (ichans == 2) then
+ tabw tab:k(kindex, ifnampRtemp), kwrapAmpIndexW, ifnampR
+ tabw tab:k(kindex, ifnfreqRtemp), kwrapFreqIndexW, ifnfreqR
+ endif
+ kindex += 1
+ od
+ endif
+endop
+
+/*
+ Set random bin amplitudes to 0. Ported from pvtool
+ tpv_bubble kready, itpvdata, kchance, kstereounique
+
+ kready done trigger from tpv_anal
+ itpvdata tpv analysis stream handles
+ kchance chance of applying bin amplitude, between 0 and 1
+ kstereounique whether to apply the effect channel independently
+*/
+opcode tpv_bubble, 0, kikP
+ kready, itpvdata, kchance, kstereounique xin
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ kreplacement init 0
+ if (kready == 1) then
+ kindex = 0
+ while (kindex < isize) do
+ kapplyL = (random:k(0, 1) <= kchance) ? 1 : 0
+ if (ichans == 1) then
+ if (kapplyL == 1) then
+ tabw 0, kindex, ifnampL
+ endif
+ else
+ if (kstereounique == 0) then
+ if (kapplyL == 1) then
+ tabw kreplacement, kindex, ifnampL
+ tabw kreplacement, kindex, ifnampR
+ endif
+ else
+ if (kapplyL == 1) then
+ tabw kreplacement, kindex, ifnampL
+ endif
+ if (random:k(0, 1) <= kchance) then
+ tabw kreplacement, kindex, ifnampR
+ endif
+ endif
+ endif
+ kindex += 1
+ od
+ endif
+
+endop
+
+/*
+ Swap spectrum areas
+ tpv_swap kready, itpvdata, kampStart, kampLength, kampTarget, kfreqStart, kfreqLength, kfreqTarget [, kwrapmode = 1]
+
+ kready done trigger from tpv_anal
+ itpvdata tpv analysis stream handles
+ kampStart bin start for amplitude
+ kampLength bins length for amplitude
+ kampTarget bin target start for amplitude
+ kfreqStart bin start for frequency
+ kfreqLength bins length for frequency
+ kfreqTarget bin target start for frequency
+ kwrapmode wrap mode: 0 = limit; 1 = wrap
+*/
+opcode tpv_swap, 0, kikOkkOkP
+ kready, itpvdata, kampStart, kampLength, kampTarget, kfreqStart, kfreqLength, kfreqTarget, kwrapmode xin
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ itpvdatatemp tpv_makecontainer ichans, isize
+ i_, i_, ifnampLtemp, ifnampRtemp, ifnfreqLtemp, ifnfreqRtemp tpv_get itpvdatatemp
+
+ kampLength = (kampLength == 0) ? isize : kampLength
+ kfreqLength = (kfreqLength == 0) ? isize : kfreqLength
+
+ if (kready == 1) then
+ tablecopy ifnampLtemp, ifnampL
+ tablecopy ifnfreqLtemp, ifnfreqL
+ if (ichans == 2) then
+ tablecopy ifnampRtemp, ifnampR
+ tablecopy ifnfreqRtemp, ifnfreqR
+ endif
+
+ kampStartW = min:k(kampStart, kampTarget)
+ kampTargetW = max:k(kampStart, kampTarget)
+ kfreqStartW = min:k(kfreqStart, kfreqTarget)
+ kfreqTargetW = max:k(kfreqStart, kfreqTarget)
+
+ kindex = 0
+ while (kindex < isize) do
+ if (kwrapmode == 1) then
+ kampStartW = kampStartW % isize
+ kampEndW = (kampStartW + kampLength) % isize
+ kampTargetW = (kampTargetW + kindex) % isize
+
+ kfreqStartW = kfreqStartW % isize
+ kfreqEndW = (kfreqStartW + kfreqLength) % isize
+ kfreqTargetW = (kfreqTargetW + kindex) % isize
+ else
+ kampStartW = (kampStartW >= isize) ? isize - 1 : kampStart
+ kampEnd = kampStartW + kampLength
+ kampEndW = (kampEnd >= isize) ? isize - 1 : kampEnd
+ kampTargetW = (kampTargetW + kindex >= isize) ? isize - 1 : kampTargetW + kindex
+
+ kfreqStartW = (kfreqStartW >= isize) ? isize - 1 : kfreqStart
+ kfreqEnd = kfreqStartW + kfreqLength
+ kfreqEndW = (kfreqEnd >= isize) ? isize - 1 : kfreqEnd
+ kfreqTargetW = (kfreqTargetW + kindex >= isize) ? isize - 1 : kfreqTargetW + kindex
+ endif
+
+ if (kindex >= kampStartW && kindex < kampEndW) then
+ tabw tab:k(kindex, ifnampLtemp), kampTargetW, ifnampL
+ tabw tab:k(kampTargetW, ifnampLtemp), kindex, ifnampL
+ if (ichans == 2) then
+ tabw tab:k(kindex, ifnampRtemp), kampTargetW, ifnampR
+ tabw tab:k(kampTargetW, ifnampRtemp), kindex, ifnampR
+ endif
+ endif
+
+ if (kindex >= kfreqStartW && kindex < kfreqEndW) then
+ tabw tab:k(kindex, ifnfreqLtemp), kfreqTargetW, ifnfreqL
+ tabw tab:k(kfreqTargetW, ifnfreqLtemp), kindex, ifnfreqL
+ if (ichans == 2) then
+ tabw tab:k(kindex, ifnfreqRtemp), kfreqTargetW, ifnfreqR
+ tabw tab:k(kfreqTargetW, ifnfreqRtemp), kindex, ifnfreqR
+ endif
+ endif
+ kindex += 1
+ od
+ endif
+endop
+
+/*
+ Invert spectrum
+ tpv_invert kready, itpvdata, [kinvertamp, kinvertfreq]
+
+ kready done trigger from tpv_anal
+ itpvdata tpv analysis stream handles
+ kinvertamp whether to invert amp or not (1 or 0)
+ kinvertfreq whether to invert frequency or not (1 or 0)
+*/
+opcode tpv_invert, 0, kiPP
+ kready, itpvdata, kinvertamp, kinvertfreq xin
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ if (kready == 1) then
+ kindex = 0
+ while (kindex < isize) do
+ if (kinvertamp == 1) then
+ tabw tab:k(isize-kindex, ifnampL), kindex, ifnampL
+ endif
+
+ if (kinvertfreq == 1) then
+ tabw tab:k(isize-kindex, ifnfreqL), kindex, ifnfreqL
+ endif
+
+ if (ichans == 2) then
+ if (kinvertamp == 1) then
+ tabw tab:k(isize-kindex, ifnampR), kindex, ifnampR
+ endif
+
+ if (kinvertfreq == 1) then
+ tabw tab:k(isize-kindex, ifnfreqR), kindex, ifnfreqR
+ endif
+ endif
+
+ kindex += 1
+ od
+ endif
+endop
+
+/*
+ Filter bins with a ftable mask
+ tpv_binfilter kready, itpvdata, ifnamps
+
+ kready done trigger from tpv_anal
+ itpvdata tpv analysis stream handles
+ ifnamps ftable containing amplitude values per bin
+*/
+opcode tpv_binfilter, 0, kii
+ kready, itpvdata, ifnamps xin
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ if (kready == 1) then
+ kindex = 0
+ while (kindex < isize) do
+ tabw tab:k(kindex, ifnampL) * tab:k(kindex, ifnamps), kindex, ifnampL
+
+ if (ichans == 2) then
+ tabw tab:k(kindex, ifnampR) * tab:k(kindex, ifnamps), kindex, ifnampR
+ endif
+ kindex += 1
+ od
+ endif
+endop
+
+/*
+ Allow bins over or below a certain threshold; a spectral gate
+ tpv_threshold kready, itpvdata, kthreshold, kabove
+
+ kready done trigger from tpv_anal
+ itpvdata tpv analysis stream handles
+ kthreshold amplitude threshold to apply
+ kabove above or below threshold will be let through the gate (1 = above, 0 = below)
+*/
+opcode tpv_threshold, 0, kikO
+ kready, itpvdata, kthresh, kabove xin
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ if (kready == 1) then
+ kindex = 0
+ while (kindex < isize) do
+
+ kvalL tab kindex, ifnampL
+ if ((kabove == 0 && kvalL < kthresh) || (kabove == 1 && kvalL > kthresh)) then
+ tabw 0, kindex, ifnampL
+ tabw 0, kindex, ifnfreqL
+ endif
+
+ if (ichans == 2) then
+ kvalR tab kindex, ifnampR
+ if ((kabove == 0 && kvalR < kthresh) || (kabove == 1 && kvalR > kthresh)) then
+ tabw 0, kindex, ifnampR
+ tabw 0, kindex, ifnfreqR
+ endif
+ endif
+
+ kindex += 1
+ od
+ endif
+endop
+
+/*
+ Scramble amplitude and/or frequency
+ tpv_scramble kready, itpvdata, kstepratio, kdoamp, kdofreq
+
+ kready done trigger from tpv_anal
+ itpvdata tpv analysis stream handles
+ kstepratio partitioning ratio
+ kdoamp scramble amplitudes (bool)
+ kdofreq scramble frequencies (bool)
+*/
+opcode tpv_scramble, 0, kiJPP
+ kready, itpvdata, kstepratio, kdoamp, kdofreq xin
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ kstep = (kstepratio == -1) ? 1 : max:k(round:k(kstepratio * isize), 1)
+ if (kready == 1) then
+ kindex = 0
+ while (kindex < isize) do
+ kdest = int:k(random:k(kstep, isize)) - kstep
+ kindex2 = 0
+ while (kindex2 < kstep) do
+
+ if (kdoamp == 1) then
+ kval table kindex+kindex2, ifnampL, 0, 0, 1
+ kcurrentval table kdest+kindex2, ifnampL, 0, 0, 1
+ tablew (kval+kcurrentval)/2, kdest+kindex2, ifnampL, 0, 0, 1
+ if (ichans == 2) then
+ kval table kindex+kindex2, ifnampR, 0, 0, 1
+ kcurrentval table kdest+kindex2, ifnampR, 0, 0, 1
+ tablew (kval+kcurrentval)/2, kdest+kindex2, ifnampR, 0, 0, 1
+ endif
+ endif
+
+ if (kdofreq == 1) then
+ kval table kindex+kindex2, ifnfreqL, 0, 0, 1
+ kcurrentval table kdest+kindex2, ifnfreqL, 0, 0, 1
+ tablew (kval+kcurrentval)/2, kdest+kindex2, ifnfreqL, 0, 0, 1
+ if (ichans == 2) then
+ kval table kindex+kindex2, ifnfreqR, 0, 0, 1
+ kcurrentval table kdest+kindex2, ifnfreqR, 0, 0, 1
+ tablew (kval+kcurrentval)/2, kdest+kindex2, ifnfreqR, 0, 0, 1
+ endif
+ endif
+ kindex2 += 1
+ od
+ kindex += kstep
+ od
+ endif
+endop
+
+
+
+
+opcode tpv_freeze1, 0, kikPPP
+ kready, itpvdata, kfreeze, kfreezeamp, kfreezefreq, kcrossfade xin
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ itpvtemp tpv_makecontainer ichans, isize
+ i_, i_, ifnampLtemp, ifnampRtemp, ifnfreqLtemp, ifnfreqRtemp tpv_get itpvtemp
+
+ if (kready == 1) then
+ kindex = 0
+ while (kindex < isize) do
+ if (kfreeze >= 0) then
+ kamount min kfreeze-1, 1
+
+ if (kfreezeamp == 1) then
+ if (kcrossfade == 1) then
+ tabw ((1-kamount)*tab:k(kindex, ifnampL) + (kamount * tab:k(kindex, ifnampLtemp))), kindex, ifnampL
+ if (ichans == 2) then
+ tabw ((1-kamount)*tab:k(kindex, ifnampR) + (kamount * tab:k(kindex, ifnampRtemp))), kindex, ifnampR
+ endif
+ else
+ tabw tab:k(kindex, ifnampLtemp), kindex, ifnampL
+ if (ichans == 2) then
+ tabw tab:k(kindex, ifnampRtemp), kindex, ifnampR
+ endif
+ endif
+ endif
+
+ if (kfreezefreq == 1) then
+ if (kcrossfade == 1) then
+ tabw ((1-kamount)*tab:k(kindex, ifnfreqL) + (kamount * tab:k(kindex, ifnfreqLtemp))), kindex, ifnfreqL
+ if (ichans == 2) then
+ tabw ((1-kamount)*tab:k(kindex, ifnfreqR) + (kamount * tab:k(kindex, ifnfreqRtemp))), kindex, ifnfreqR
+ endif
+ else
+ tabw tab:k(kindex, ifnfreqLtemp), kindex, ifnfreqL
+ if (ichans == 2) then
+ tabw tab:k(kindex, ifnfreqRtemp), kindex, ifnfreqR
+ endif
+ endif
+ endif
+
+ else
+ tabw tab:k(kindex, ifnampL), kindex, ifnampLtemp
+ tabw tab:k(kindex, ifnfreqL), kindex, ifnfreqLtemp
+
+ if (ichans == 2) then
+ tabw tab:k(kindex, ifnampR), kindex, ifnampRtemp
+ tabw tab:k(kindex, ifnfreqR), kindex, ifnfreqRtemp
+ endif
+ endif
+ kindex += 1
+ od
+ endif
+endop
+
+
+
+opcode tpv_average, 0, kikPPO
+ kready, itpvdata, kmax, kavgamp, kavgfreq, ktrig xin
+ ichans, isize, ifnampL, ifnampR, ifnfreqL, ifnfreqR tpv_get itpvdata
+ itpvtemp tpv_makecontainer ichans, isize
+ i_, i_, ifnampLtemp, ifnampRtemp, ifnfreqLtemp, ifnfreqRtemp tpv_get itpvtemp
+
+ kcount init 1
+ if (kready == 1) then
+ kindex = 0
+ while (kindex < isize) do
+
+ ; store to average
+ tabw tab:k(kindex, ifnampL), kindex, ifnampLtemp
+ tabw tab:k(kindex, ifnfreqL), kindex, ifnfreqLtemp
+
+ ; read average
+ if (kavgamp == 1) then
+ tabw tab:k(kindex, ifnampLtemp) / kcount, kindex, ifnampL
+ endif
+
+ if (kavgfreq == 1) then
+ tabw tab:k(kindex, ifnfreqLtemp) / kcount, kindex, ifnfreqL
+ endif
+
+ if (ichans == 2) then
+
+ ; store to average
+ tabw tab:k(kindex, ifnampR), kindex, ifnampRtemp
+ tabw tab:k(kindex, ifnfreqR), kindex, ifnfreqRtemp
+
+ ; read average
+ if (kavgamp == 1) then
+ tabw tab:k(kindex, ifnampRtemp) / kcount, kindex, ifnampR
+ endif
+
+ if (kavgfreq == 1) then
+ tabw tab:k(kindex, ifnfreqRtemp) / kcount, kindex, ifnfreqR
+ endif
+ endif
+
+ kindex += 1
+ od
+
+ if (kcount >= kmax || ktrig == 1) then
+ kindex = 0
+ while (kindex < isize) do
+
+ ; empty
+ tabw 0, kindex, ifnampLtemp
+ tabw 0, kindex, ifnfreqLtemp
+
+ if (ichans == 2) then
+ tabw 0, kindex, ifnampRtemp
+ tabw 0, kindex, ifnfreqRtemp
+ endif
+
+ kindex += 1
+ od
+ kcount = 1
+ else
+ kcount += 1
+ endif
+ endif
+endop
+
+#end
diff --git a/site/udo/pvs_tools.udo b/site/udo/pvs_tools.udo
new file mode 100755
index 0000000..2fcbc8a
--- /dev/null
+++ b/site/udo/pvs_tools.udo
@@ -0,0 +1,31 @@
+#ifndef UDO_PVSTOOLS
+#define UDO_PVSTOOLS ##
+/*
+ Phase vocoder tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+
+opcode pvs_ifn2buffer, i, iiiii
+ ifn, ifftsize, ioverlap, iwinsize, iwinshape xin
+ ktimek timeinstk
+ if (ktimek == 1) then
+ ilen = ftlen(ifn) / ftsr(ifn)
+ kcycles = ilen * kr
+ kcount init 0
+ while (kcount < kcycles) do
+ apos lphasor 1
+ ain table3 apos, ifn
+ ffin pvsanal ain, ifftsize, ioverlap, iwinsize, iwinshape
+ ibuf, ktime pvsbuffer ffin, ilen + (ifftsize / sr)
+ kcount += 1
+ od
+ xout ibuf
+ endif
+endop
+
+#end
diff --git a/site/udo/quad.udo b/site/udo/quad.udo
new file mode 100755
index 0000000..bd9abc3
--- /dev/null
+++ b/site/udo/quad.udo
@@ -0,0 +1,79 @@
+#ifndef UDO_QUAD
+#define UDO_QUAD ##
+/*
+ Quadrophonic setup and tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2025
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+#define QUAD ##
+#include "wavetables.udo"
+vbaplsinit 2, 4, 45, 135, 225, 314 ; or 0, 90, 180, 270
+
+opcode cart2apol, ii, ii
+ ix, iy xin
+ idistance = sqrt(pow(ix, 2) + pow(iy, 2))
+ idegrees = taninv(iy / ix) * (180 / (22 / 7)) - 90
+ if (qnan(idegrees) == 1) then
+ idegrees = 0
+ endif
+ xout idegrees, idistance
+endop
+
+opcode cart2apol, kk, kk
+ kx, ky xin
+ kdistance = sqrt:k(pow:k(kx, 2) + pow:k(ky, 2))
+ kdegrees = taninv:k(ky / kx) * (180 / (22 / 7)) - 90
+ if (qnan:k(kdegrees) == 1) then
+ kdegrees = 0
+ endif
+ xout kdegrees, kdistance
+endop
+
+opcode quadify, aaaa, akO
+ ain, kangle, kbleed xin
+ a1, a2, a3, a4 vbap ain, kangle, 0, kbleed * 100
+ xout a1, a2, a3, a4
+endop
+
+opcode quadify, aaaa, aakOO
+ aL, aR, kangle, kspreadangle, kbleed xin
+ kbleed *= 100
+ aL1, aL2, aL3, aL4 vbap aL, kangle - kspreadangle, 0, kbleed
+ aR1, aR2, aR3, aR4 vbap aR, kangle + kspreadangle, 0, kbleed
+ xout aL1 + aR1, aL2 + aR2, aL3 + aR3, aL4 + aR4
+endop
+
+opcode _quadify_random_params, kk, 0
+ kangle init random(0, 359)
+ kbleed init random(0, 15)
+ ktime init random(1, 10)
+ krate = 1 / ktime
+ ktrig metro krate
+ if (ktrig == 1) then
+ ktime = random:k(1, 10)
+ kangle = random:k(0, 359)
+ kbleed = random:k(0, 15)
+ endif
+
+ kanglep portk kangle, ktime
+ kbleedp portk kbleed, ktime
+ xout kanglep, kbleedp
+endop
+
+opcode quadify_random, aaaa, a
+ ain xin
+ kangle, kbleed _quadify_random_params
+ a1, a2, a3, a4 quadify ain, kangle, kbleed
+ xout a1, a2, a3, a4
+endop
+
+opcode quadify_random, aaaa, aa
+ aL, aR xin
+ kangle, kbleed _quadify_random_params
+ a1, a2, a3, a4 quadify aL, aR, kangle, kbleed
+ xout a1, a2, a3, a4
+endop
+
+#end
diff --git a/site/udo/sample_level.udo b/site/udo/sample_level.udo
new file mode 100755
index 0000000..3aa5b1e
--- /dev/null
+++ b/site/udo/sample_level.udo
@@ -0,0 +1,90 @@
+#ifndef UDO_SAMPLELEVEL
+#define UDO_SAMPLELEVEL ##
+/*
+ Sample level block processing
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+opcode smp_hold, a, ak
+ ain, kratio xin
+ aout init 0
+ ktrig metro kr * kratio
+ if (ktrig == 1) then
+ kindex = 0
+ while (kindex < ksmps) do
+ aout[kindex] = ain[kindex]
+ kindex += 1
+ od
+ endif
+ xout aout
+endop
+
+opcode smp_rearrange, aa, iiiij
+ ichops, ichopmin, ichopmax, ifnL, ifnR xin
+ if (ichopmin > ichopmax) then
+ ichopmin = ichopmax
+ endif
+ ilen = ftlen(ifnL)
+ if (ichopmin > ilen) then
+ ichopmin = round(ilen * 0.1)
+ endif
+ if (ichopmax > ilen) then
+ ichopmax = round(ilen * 0.2)
+ endif
+ ichopfn ftgentmp 0, 0, -(ichops * 3), 2, 0
+ index = 0
+ iwriteindex = 0
+ while (index < ichops) do
+ ichoplen = round(random(ichopmin, ichopmax))
+ ichopstart = round(random(0, ilen - ichoplen))
+ tabw_i ichopstart, iwriteindex, ichopfn
+ tabw_i ichoplen, iwriteindex + 1, ichopfn
+ tabw_i round(random(0, ilen - ichoplen)), iwriteindex + 2, ichopfn
+ iwriteindex += 3
+ index += 1
+ od
+ apos lphasor 1
+ kindex1 = 0
+ kinmove init 0
+ while (kindex1 < ftlen(ichopfn)) do
+ kstart tab kindex1, ichopfn
+ klen tab kindex1 + 1, ichopfn
+ kdest tab kindex1 + 2, ichopfn
+ koffset = 0
+ kindex2 = 0
+ while (kindex2 < ksmps) do
+ if (apos[kindex2] >= kdest) then
+ kinmove = 1
+ koffset = apos[kindex2] - kdest
+ endif
+ if (apos[kindex2] >= kdest + klen) then
+ kinmove = 0
+ endif
+ if (kinmove == 1) then
+ apos[kindex2] = kstart + koffset
+ endif
+ kindex2 += 1
+ od
+ kindex1 += 3
+ od
+
+ aL table3 apos, ifnL
+ if (ifnR != -1) then
+ aR table3 apos, ifnR
+ else
+ aR = aL
+ endif
+ xout aL, aR
+endop
+
+opcode smp_rearrange, a, iiii
+ ichops, ichopmin, ichopmax, ifn xin
+ aout, a_ smp_rearrange ichops, ichopmin, ichopmax, ifn
+ xout aout
+endop
+
+#end
+
diff --git a/site/udo/sampling.udo b/site/udo/sampling.udo
new file mode 100755
index 0000000..66a571b
--- /dev/null
+++ b/site/udo/sampling.udo
@@ -0,0 +1,77 @@
+#ifndef UDO_SAMPLING
+#define UDO_SAMPLING ##
+/*
+ Samplers
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "wavetables.udo"
+opcode smp_round, a, aapPJjjj
+ ain, aread, ilen, kpitch, kamp, iwsize, irandw, ioverlap xin
+ iwsize = (iwsize == -1) ? (sr*ilen)/10 : iwsize
+ irandw = (irandw == -1) ? (sr*ilen)/100 : irandw
+ ioverlap = (ioverlap == -1) ? 4 : ioverlap
+ kamp = (kamp == -1) ? 1/ioverlap : kamp
+ ifn ftgen 0, 0, sr*ilen, 2, 0
+ andx phasor 1/ilen
+ tabw ain, andx, ifn, 1
+ aout sndwarp kamp*0.6, aread, kpitch, ifn, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ xout aout
+endop
+
+opcode smp_round_st, aa, aaapPJjjj
+ aL, aR, aread, ilen, kpitch, kamp, iwsize, irandw, ioverlap xin
+ iwsize = (iwsize == -1) ? (sr*ilen)/10 : iwsize
+ irandw = (irandw == -1) ? (sr*ilen)/100 : irandw
+ ioverlap = (ioverlap == -1) ? 4 : ioverlap
+ kamp = (kamp == -1) ? 1/ioverlap : kamp
+ ifnL ftgen 0, 0, sr*ilen, 2, 0
+ ifnR ftgen 0, 0, sr*ilen, 2, 0
+ andx phasor 1/ilen
+ tabw aL, andx, ifnL, 1
+ tabw aR, andx, ifnR, 1
+ aoutL sndwarp kamp*0.6, aread, kpitch, ifnL, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ aoutR sndwarp kamp*0.6, aread, kpitch, ifnR, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ xout aoutL, aoutR
+endop
+
+opcode smp_hold, a, aapPJjjj
+ ain, aread, ilen, kpitch, kamp, iwsize, irandw, ioverlap xin
+ iwsize = (iwsize == -1) ? (sr*ilen)/10 : iwsize
+ irandw = (irandw == -1) ? (sr*ilen)/100 : irandw
+ ioverlap = (ioverlap == -1) ? 4 : ioverlap
+ kamp = (kamp == -1) ? 1/ioverlap : kamp
+ istart times
+ ifn ftgen 0, 0, sr*ilen, 2, 0
+ if (times:k() < istart+ilen) then
+ andx phasor 1/ilen
+ tabw ain, andx, ifn, 1
+ endif
+ aout sndwarp kamp, aread, kpitch, ifn, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ xout aout
+endop
+
+opcode smp_hold_st, aa, aaapPJjjj
+ aL, aR, aread, ilen, kpitch, kamp, iwsize, irandw, ioverlap xin
+ iwsize = (iwsize == -1) ? (sr*ilen)/10 : iwsize
+ irandw = (irandw == -1) ? (sr*ilen)/100 : irandw
+ ioverlap = (ioverlap == -1) ? 4 : ioverlap
+ kamp = (kamp == -1) ? 1/ioverlap : kamp
+ istart times
+ ifnL ftgen 0, 0, sr*ilen, 2, 0
+ ifnR ftgen 0, 0, sr*ilen, 2, 0
+ if (times:k() < istart+ilen) then
+ andx phasor 1/ilen
+ tabw aR, andx, ifnL, 1
+ tabw aL, andx, ifnR, 1
+ endif
+ aoutL sndwarp kamp, aread, kpitch, ifnL, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ aoutR sndwarp kamp, aread, kpitch, ifnR, 0, iwsize, irandw, ioverlap, gifnHalfSine, 1
+ xout aoutL, aoutR
+endop
+
+#end
+
diff --git a/site/udo/scss/base.udo b/site/udo/scss/base.udo
new file mode 100755
index 0000000..07b339a
--- /dev/null
+++ b/site/udo/scss/base.udo
@@ -0,0 +1,1046 @@
+#ifndef UDO_SCSS_BASE
+#define UDO_SCSS_BASE ##
+/*
+ SONICS Category Sequencer System
+
+ Designed for use with an API host to/from which callbacks and JSON states can be exchanged
+
+ Requires JSON opcodes
+ https://git.1bpm.net/csound-json
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+#include "sequencing.udo"
+#include "bussing.udo"
+#include "interop.udo"
+#include "sequencing_table.udo"
+#include "sequencing_melodic.udo"
+;#include "sequencing_melodic_persistence.udo"
+#include "scss/seqtable.udo"
+
+
+; session name for persistence
+#ifndef SCSS_NAME
+#define SCSS_NAME #default#
+#end
+
+
+; category types: trigger are pattern sequenced, continuous are always on but switchable, effects are always on
+gSscss_catTypes[] fillarray "trigger", "continuous", "oneoff", "effects"
+
+; selected instrument indexes by category; hardcoded max of 32 categories here...
+imaxcategories = 32
+giscss_instrState ftgen 0, 0, -imaxcategories, -2, 0
+giscss_catEnabled ftgen 0, 0, -imaxcategories, -2, 0
+giscss_catType ftgen 0, 0, -imaxcategories, -2, 0
+
+; categories and effects for bus tracking / amp channel names
+gSscss_categories[] init 1
+gSscss_effects[] init 1
+
+; callback ID divisor for callback-tracked instrument numbers
+gicbid_idiv = 10000000
+
+
+
+#ifdef SCSS_MIDI
+#define MIDI_NOTE_HANDLER_INSTRUMENT #_scss_midihandler#
+#include "midi.udo"
+
+giscss_midicategories[] init 16
+
+instr _scss_midihandler
+ ichannel = p4
+ inote = p5
+ ivelocity = p6
+ icategoryid = giscss_midicategories[ichannel]
+ instrnum table icategoryid, giscss_instrState
+ instrnum += (99 + icategoryid + inote) / gicbid_idiv
+ schedule(instrnum, 0, -1)
+ kreleasing init 0
+ if (release:k() == 1 && kreleasing == 0) then
+ turnoff2 instrnum, 4, 1
+ kreleasing = 1
+ endif
+endin
+
+instr scss_setmidicategory
+ ichannel = p4
+ icategoryid = p5
+ giscss_midicategories[ichannel] = icategoryid
+ turnoff
+endin
+
+#end
+
+
+; default JSON object; categories will be filled by registering categories and instruments accordingly; default global parameters are defined here
+giscss_stateJson = jsonloads({{
+ {
+ "categories": [],
+ "parameters": [
+ {"name": "bpm", "description": "BPM", "default": 120, "max": 240, "min": 30}
+ ]
+ }
+}})
+
+#include "scss/persistence.udo"
+
+/*
+ Get category ID for given category name, creating in giscss_stateJson if it does not exist
+
+ icategoryid _scss_category_getorcreate Scategory, Sdescription [,itype = 0]
+
+ icategoryid the ID
+ Scategory category name to get or create
+ Sdescription description to add if creating; pass "" if not required
+ itype type ID. Type is set to "effects" if category name is "effects"
+ 0 trigger
+ 1 continuous
+
+*/
+opcode _scss_category_getorcreate, i, SSo
+ Scategory, Sdescription, itype xin
+ iJcategories = jsonget(giscss_stateJson, "categories")
+ isize = jsonsize(iJcategories)
+ index = 0
+ while (index < isize) do
+ iJcategory = jsonget(iJcategories, index)
+ SexistingCategory = jsongetval(iJcategory, "name")
+ if (strcmp(SexistingCategory, Scategory) == 0) then
+ goto complete
+ endif
+ jsondestroy(iJcategory)
+ index += 1
+ od
+
+ if (strcmp(Scategory, "effects") == 0) then
+ itype = 3
+ endif
+
+ Stype = gSscss_catTypes[itype]
+
+ ; create
+ if (strcmp(Sdescription, "") == 0) then
+ iJsonNew = jsonloads(sprintf("{\"name\": \"%s\", \"type\": \"%s\", \"type_id\": %d, \"items\": []}", Scategory, Stype, itype))
+ else
+ iJsonNew = jsonloads(sprintf("{\"name\": \"%s\", \"type\": \"%s\", \"type_id\": %d, \"description\": \"%s\", \"items\": []}", Scategory, Stype, itype, Sdescription))
+ endif
+
+ ; workaround for not being able to append with ptr
+ iJsonSz = jsonptr(giscss_stateJson, "/categories")
+ index = jsonsize(iJsonSz)
+ jsondestroy(iJsonSz)
+
+ jsonptradd(giscss_stateJson, sprintf("/categories/%d", index), iJsonNew)
+ jsondestroy(iJsonNew)
+complete:
+ jsondestroy(iJcategories)
+ xout index
+endop
+
+
+/*
+ Get category ID for given category name, creating in giscss_stateJson if it does not exist
+
+ icategoryid scss_categoryid Scategory
+
+ icategoryid the ID
+ Scategory category name to get or create
+*/
+opcode scss_categoryid, i, S
+ Scategory xin
+ icategoryid = _scss_category_getorcreate(Scategory, "")
+ xout icategoryid
+endop
+
+
+
+/*
+ Register an instrument name to a category by category ID
+
+ scss_registerinstr icategoryid, SinstrumentJson
+ scss_registerinstr Scategory, SinstrumentJson
+
+ icategoryid category ID to register to
+ Scategory category name to register to
+ SinstrumentJson definition of instrument
+*/
+opcode scss_registerinstr, 0, iS
+ icategoryid, Sjson xin
+ iJson = jsonloads(Sjson)
+
+ ; workaround for not being able to append with ptr
+ iJsonSz = jsonptr(giscss_stateJson, sprintf("/categories/%d/items", icategoryid))
+ index = jsonsize(iJsonSz)
+ jsondestroy(iJsonSz)
+
+ jsonptradd(giscss_stateJson, sprintf("/categories/%d/items/%d", icategoryid, index), iJson)
+ jsondestroy(iJson)
+endop
+
+; override for named category
+opcode scss_registerinstr, 0, SS
+ Scategory, Sjson xin
+ scss_registerinstr(scss_categoryid(Scategory), Sjson)
+endop
+
+
+/*
+ Register a category and set the default instrument name. An existing category could be specified with no harm
+
+ icategoryid scss_registercategory Scategory, Sdescription, SdefaultInstrument
+ icategoryid scss_registercategory Scategory, SdefaultInstrument
+
+ icategoryid the category ID
+ Scategory category name
+ Sdescription category description
+ SdefaultInstrument default instrument to set in giscss_instrState
+*/
+opcode scss_registercategory, i, SSSo
+ Scategory, Sdescription, SdefaultInstrument, itypeid xin
+ icategoryid = _scss_category_getorcreate(Scategory, Sdescription, itypeid)
+
+ ; set default instrument in state table
+ tablew nstrnum(SdefaultInstrument), icategoryid, giscss_instrState
+
+ xout icategoryid
+endop
+
+; override for when no description is provided
+opcode scss_registercategory, i, SS
+ Scategory, SdefaultInstrument xin
+ xout scss_registercategory(Scategory, "", SdefaultInstrument)
+endop
+
+
+/*
+ Register a category with continous type and set the default instrument name. An existing category could be specified with no harm
+*/
+opcode scss_registercategory_continuous, i, SSS
+ Scategory, Sdescription, SdefaultInstrument xin
+ xout scss_registercategory(Scategory, Sdescription, SdefaultInstrument, 1)
+endop
+
+; override for when no description is provided
+opcode scss_registercategory_continuous, i, SS
+ Scategory, SdefaultInstrument xin
+ xout scss_registercategory(Scategory, "", SdefaultInstrument, 1)
+endop
+
+
+/*
+ Sequence the trigger category instruments according to status in table giscss_catEnabled and the primary sequence in table giscss_stfn_trig
+ Instruments receive p4 as category ID (to allow for independent category specific opcode calls) and p5 as time index
+
+ _scss_st_catseq icategoryid
+
+ icategoryid category ID
+*/
+opcode _scss_st_catseq, 0, i
+ icategoryid xin
+ Scategory = gSscss_categories[icategoryid]
+ ;ifn [, kreset=0, kdivisions=4, kchanceon=1, kchanceoff=1, klength=ftlen(ifn), kswing=gkseq_swing]
+ kreset = chnget:k(sprintf("%s_seq_reset", Scategory))
+ kdivisions = chnget:k(sprintf("%s_seq_divisions", Scategory))
+ kchanceon = chnget:k(sprintf("%s_seq_chanceon", Scategory))
+ kchanceoff = chnget:k(sprintf("%s_seq_chanceoff", Scategory))
+ ;klength = chnget:k(sprintf("seq_lengthratio_%d", icategoryid)) * ftlen(giscss_stfn_trig[icategoryid][0])
+ ktrig, kindex seq_table giscss_stfn_trig[icategoryid][0], kreset, kdivisions, kchanceon, kchanceoff
+
+ if (ktrig == 1 && table:k(icategoryid, giscss_catEnabled) == 1) then
+ kinstrnum table icategoryid, giscss_instrState
+ kduration table kindex, giscss_stfn_dur[icategoryid][0]
+ schedulek(kinstrnum, 0, kduration*gkseq_quartertime, icategoryid, kindex)
+ endif
+endop
+
+
+/*
+ React to changes in the giscss_catEnabled table and invoke or stop continuous category instruments accordingly
+
+ _scss_st_catcontreactor icategoryid
+
+ icategoryid category ID
+*/
+opcode _scss_st_catcontreactor, 0, i
+ icategoryid xin
+ kenabled = table:k(icategoryid, giscss_catEnabled)
+ klastinstrnum init table:i(icategoryid, giscss_instrState)
+ kinstrnum = table:k(icategoryid, giscss_instrState)
+
+ if (changed:k(kenabled) == 1 || changed:k(kinstrnum) == 1) then
+ if (kenabled == 1) then
+ turnoff2 klastinstrnum, 0, 1
+ schedulek(kinstrnum, 0, 999999) ; not -1 in case of p3 linseg(r) usage
+ else
+ turnoff2 klastinstrnum, 0, 1
+ endif
+ klastinstrnum = kinstrnum
+ endif
+endop
+
+
+/*
+ Sequencing and instrument launch control
+ Initialises all category sequencing for trigger and continuous type categories
+ No parameters should be provided, the index parameter is for internal recursion
+*/
+opcode _scss_st_seq, 0, o
+ index xin
+ itypeid = table:i(index, giscss_catType)
+
+ if (itypeid == 0) then ; is trigger type
+ _scss_st_catseq(index)
+ elseif (itypeid == 1) then ; is continuous type
+ _scss_st_catcontreactor(index)
+ endif
+ ; effects initialised by scss_boot
+
+ if (index < lenarray(gSscss_categories) - 1) then
+ _scss_st_seq(index + 1)
+ endif
+endop
+
+
+/*
+ Get an init time parameter specific to the instrument/effect
+
+ ivalue scss_param Sname
+
+ ivalue parameter value
+ Sname parameter name, specific to the instrument/effect
+*/
+opcode scss_param, i, S
+ Sname xin
+ ivalue = chnget(sprintf("%s_%s", nstrstr(p1), Sname))
+ xout ivalue
+endop
+
+
+/*
+ Get a k-rate parameter specific to the instrument/effect
+
+ kvalue scss_param Sname
+
+ kvalue parameter value
+ Sname parameter name, specific to the instrument/effect
+*/
+opcode scss_param, k, S
+ Sname xin
+ kvalue = chnget:k(sprintf("%s_%s", nstrstr(p1), Sname))
+ xout kvalue
+endop
+
+
+opcode scss_catparam, i, S
+ Sname xin
+ xout chnget(sprintf("%s_%s", gSscss_categories[p4], Sname))
+endop
+
+
+opcode scss_catparam, k, S
+ Sname xin
+ xout chnget:k(sprintf("%s_%s", gSscss_categories[p4], Sname))
+endop
+
+/*
+ Output to category bus; should be used by all SCSS category instruments in place of outs()
+ Instruments are invoked with the category ID as p4, so this is utilised here if icategoryid is not supplied
+
+ scss_catout aL, aR [, icategoryid]
+
+ aL, aR output of instrument
+ icategoryid category ID; taken as p4 if not supplied
+*/
+opcode scss_catout, 0, aaj
+ aL, aR, icategoryid xin
+ icategoryid = (icategoryid == -1) ? p4 : icategoryid
+ bus_mix(sprintf("cat%d", icategoryid), aL, aR)
+endop
+
+
+/*
+ Get input from effects input bus; should be used by all SCSS effects to obtain input
+
+ aL, aR scss_fxin
+
+ aL, aR audio input to apply effect to
+*/
+opcode scss_fxin, aa, 0
+ aL, aR bus_read nstrstr(p1)
+ xout aL, aR
+endop
+
+
+/*
+ Output to effects output bus; should be used by all SCSS effects in place of outs()
+
+ scss_fxout aL, aR
+
+ aL, aR output of effect
+*/
+opcode scss_fxout, 0, aa
+ aL, aR xin
+ bus_set(sprintf("%s_out", nstrstr(p1)), aL, aR)
+endop
+
+
+/*
+ Set category instrument
+
+ scss_setcategoryinstrument icategoryid, Sinstrument
+ scss_setcategoryinstrument Scategory, Sinstrument
+ scss_setcategoryinstrument icategoryid, instrnum
+ scss_setcategoryinstrument Scategory, instrnum
+
+ icategoryid category ID
+ Scategory category name
+ Sinstrument instrument name (should be within the category, would work if not though so host must impose any restrictions required)
+ instrnum instrument number
+*/
+opcode scss_setcategoryinstrument, 0, ii
+ icategoryid, instrnum xin
+ tablew instrnum, icategoryid, giscss_instrState
+endop
+
+; override for named instrument, int category
+opcode scss_setcategoryinstrument, 0, iS
+ icategoryid, Sinstrument xin
+ scss_setcategoryinstrument(icategoryid, nstrnum(Sinstrument))
+endop
+
+; override for named instrument, named category
+opcode scss_setcategoryinstrument, 0, SS
+ Scategory, Sinstrument xin
+ scss_setcategoryinstrument(scss_categoryid(Scategory), nstrnum(Sinstrument))
+endop
+
+; override for named category, int instrument
+opcode scss_setcategoryinstrument, 0, Si
+ Scategory, instrument xin
+ scss_setcategoryinstrument(scss_categoryid(Scategory), instrument)
+endop
+
+
+
+/*
+ Toggle category enabled/disabled (inverse of current)
+
+ scss_togglecategory icategoryid
+ scss_togglecategory Scategory
+
+ icategoryid category ID
+ Scategory category name
+*/
+opcode scss_togglecategory, 0, i
+ icategoryid xin
+ tablew 1 - table:i(icategoryid, giscss_catEnabled), icategoryid, giscss_catEnabled
+endop
+
+; override for named category
+opcode scss_togglecategory, 0, S
+ Scategory xin
+ scss_togglecategory(scss_categoryid(Scategory))
+endop
+
+
+/*
+ Set category enabled or disabled
+
+ scss_setcategoryenabled icategoryid, istate
+ scss_setcategoryenabled Scategory, istate
+
+ icategoryid category ID
+ Scategory category name
+ istate 0 = disabled, 1 = enabled
+*/
+opcode scss_setcategoryenabled, 0, ii
+ icategoryid, istate xin
+ tabw_i istate, icategoryid, giscss_catEnabled
+endop
+
+; override for named category
+opcode scss_setcategoryenabled, 0, Si
+ Scategory, istate xin
+ scss_setcategoryenabled(scss_categoryid(Scategory), istate)
+endop
+
+
+; API evalCode not working right
+instr scss_eval
+ ires = evalstr(strget(p4))
+ turnoff
+endin
+
+/*
+ Pause or unpause the melodic progression
+
+ p4 0 = unpaused, 1 = paused
+*/
+instr scss_mel_pause
+ istate = p4
+ gkmel_pause = istate
+ turnoff
+endin
+
+
+/*
+ Schedule a series of init time instructions
+ When complete, the host is sent a callback
+
+ p4 instructions string (any valid init time calls)
+ p5 mode:
+ -1 immediate
+ 0 next beat
+ 1 next bar
+ 2 next bar group
+ 3 next melodic section change
+ 4 next most important melodic section
+ p6 queue ID (to allow for dynamic change instrument separation)
+ p7 callback ID
+*/
+instr scss_schedule_change
+ Sinstructions = p4
+ imode = p5
+ iqid = p6
+ icbid = p7
+
+ p1 += (icbid / gicbid_idiv)
+
+ ktrig init 0
+
+ ; immediate
+ if (imode == -1) then
+ ktrig = 1
+
+ ; next beat
+ elseif (imode == 0) then
+ ktrig = gkseq_beat
+
+ ; next bar
+ elseif (imode == 1) then
+ ktrig = gkseq_bar_trig
+
+ ; next bar group
+ elseif (imode == 2) then
+ ktrig = gkseq_bargroup
+
+ ; next melodic section change
+ elseif (imode == 3) then
+ ktrig = gkmel_section_change
+
+ ; next most important melodic section
+ elseif (imode == 4) then
+ ibestindex, iimportance, ibeats mel_future_mostimportant
+ kbeat init ibeats
+ if (gkseq_beat == 1) then
+ kbeat -= 1
+ endif
+
+ if (kbeat == 0) then
+ ktrig = 1
+ endif
+ endif
+
+ ; when ready, execute the instructions and notify host
+ if (ktrig == 1) then
+ kres evalstr Sinstructions, ktrig
+ if (iqid > -1) then
+ schedulek("scss_callbackcomplete", 0, 1, icbid)
+ endif
+ turnoff
+ endif
+endin
+
+
+; original with compilestr instead of evalstr
+instr scss_schedule_change_original
+ Sinstructions = p4
+ imode = p5
+ iqid = p6
+ icbid = p7
+
+ p1 += (icbid / gicbid_idiv)
+
+ ires compilestr sprintf({{
+ instr scss_change_%d
+ %s
+ turnoff
+ endin
+ }}, iqid, Sinstructions)
+
+ ktrig init 0
+
+ ; immediate
+ if (imode == -1) then
+ ktrig = 1
+
+ ; next beat
+ elseif (imode == 0) then
+ ktrig = gkseq_beat
+
+ ; next bar
+ elseif (imode == 1) then
+ ktrig = gkseq_bar_trig
+
+ ; next bar group
+ elseif (imode == 2) then
+ ktrig = gkseq_bargroup
+
+ ; next melodic section change
+ elseif (imode == 3) then
+ ktrig = gkmel_section_change
+
+ ; next most important melodic section
+ elseif (imode == 4) then
+ ibestindex, iimportance, ibeats mel_future_mostimportant
+ kbeat init ibeats
+ if (gkseq_beat == 1) then
+ kbeat -= 1
+ endif
+
+ if (kbeat == 0) then
+ ktrig = 1
+ endif
+ endif
+
+ ; when ready, execute the instructions and notify host
+ if (ktrig == 1) then
+ schedulek(sprintf("scss_change_%d", iqid), 0, 1)
+ if (iqid > -1) then
+ schedulek("scss_callbackcomplete", 0, 1, icbid)
+ endif
+ turnoff
+ endif
+endin
+
+
+
+
+/*
+ Automate a parameter
+
+ p4 callback ID
+ p5 mode:
+ 0 segmented between start/end values
+ 1 read values from a specified table
+ p6 report value back to host every p6 seconds. Channel is set as cbval appended with callback ID. If 0, value is not reported
+ p7 channel name to automate
+ p8 time mode:
+ 0 p3 is in absolute seconds
+ 1 p3 is in beats
+ 2 p3 is in bars
+ 3 p3 is in bargroups
+ 4 run until next most important melodic sequence
+ p9 start value if segmented mode
+ p10 end value if segmented mode
+ p11 if segmented mode;
+ 0 linear segment
+ 1 exponential segment
+ p12 table number if table read mode
+ p13 loop automation (0 = no loop, 1 = loop)
+ p14 if loop is specified, set ping pong loop (0 = normal loop, 1 = ping pong loop)
+*/
+instr scss_automateparameter
+ icbid = p4
+ imode = p5 ; 0 = seg, 1 = table
+ ireportvaluetime = p6
+ SparameterChannel = p7
+ itimemode = p8
+ istart = p9
+ iend = p10
+ iexpon = p11
+ ifn = p12
+ iloop = p13
+ ipingpong = p14
+
+ ; if the first iteration and callback ID has been specified, offset the instrument number to allow scss_cancelcallbackinstrument to be used
+ if (icbid > -1 && iloop <= 1) then
+ p1 += (icbid / gicbid_idiv)
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"keep_callback\": true, \"status\": \"started\"}", icbid))
+ endif
+
+ ; if first iteration, set the duration according to itimemode
+ if (iloop <= 1) then
+ if (itimemode == 1) then
+ p3 *= i(gkseq_beattime)
+ elseif (itimemode == 2) then
+ p3 *= i(gkseq_beattime) * giseq_barlength
+ elseif (itimemode == 3) then
+ p3 *= i(gkseq_beattime) * giseq_barlength * giseq_bargrouplength
+ elseif (itimemode == 4) then
+ ibestindex, iimportance, ibeats mel_future_mostimportant
+ p3 *= i(gkseq_beattime) * ibeats
+ endif
+ endif
+
+ ; iloop is incremented each loop, so if ipingpong is specified, use this to determine if reverse read should occur
+ ireverse = (ipingpong == 1 && iloop != 0 && iloop % 2 == 0) ? 1 : 0
+
+ ; segmented mode
+ if (imode == 0) then
+ if (ireverse == 1) then
+ istarttemp = istart
+ istart = iend
+ iend = istarttemp
+ endif
+
+ ; exponentials cannot be 0
+ if (iexpon == 1) then
+ if (istart == 0) then
+ istart = 0.0000001
+ endif
+ if (iend == 0) then
+ iend = 0.0000001
+ endif
+
+ kvalue expseg istart, p3, iend
+ else
+ kvalue linseg istart, p3, iend
+ endif
+
+ ; table read mode
+ elseif (imode == 1) then
+ if (ireverse == 1) then
+ kindex line ftlen(ifn), p3, 0
+ else
+ kindex line 0, p3, ftlen(ifn)
+ endif
+ kvalue table kindex, ifn
+ endif
+
+ ; set the actual channel value
+ chnset kvalue, SparameterChannel
+
+ ; report back to host if specified
+ if (ireportvaluetime > 0) then
+ ; send back to host for ui change
+ kmetro metro 1/ireportvaluetime
+ if (kmetro == 1) then
+ outvalue sprintf("cbval%d", icbid), kvalue
+ endif
+ endif
+
+ ; loop or complete
+ if (icbid > -1) then
+ if (lastcycle:k() == 1) then
+ if (iloop > 0) then
+ schedulek(p1, 0, p3, icbid, imode, ireportvaluetime, SparameterChannel, itimemode, istart, iend, iexpon, ifn, iloop+1, ipingpong)
+ else
+ schedulek("scss_callbackcomplete", 0, 1, icbid)
+ endif
+ endif
+ endif
+endin
+
+
+/*
+ Send callback complete JSON to host
+ (due to outvalue(S,S) firing at i-time as well as k when we just want k)
+
+ p4 callback ID
+*/
+instr scss_callbackcomplete
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": \"complete\"}", icbid))
+ turnoff
+endin
+
+
+/*
+ Cancel a callback instrument (one initiated with (instrument number + (icbid / gicbid_idiv))
+
+ p4 callback ID
+ p4 instrument name
+*/
+instr scss_cancelcallbackinstrument
+ icbid = p4
+ Sinstrument = p5
+ instrnum = nstrnum(Sinstrument) + (icbid / gicbid_idiv)
+ turnoff2 instrnum, 4, 0
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": \"complete\", \"cancelled\": true}", icbid))
+ turnoff
+endin
+
+
+
+
+/*
+ Sum effects bus returns and include into one category bus for internal use
+*/
+opcode _scss_getsetfxbusses, 0, jo
+ icategoryid, index xin
+ if (icategoryid == -1 ) then
+ icategoryid = scss_categoryid("effects")
+ endif
+
+ Seffect = gSscss_effects[index]
+ aL, aR bus_read sprintf("%s_out", Seffect)
+ kamp chnget sprintf("%s_amp", Seffect)
+ aL *= kamp
+ aR *= kamp
+ bus_mix(sprintf("cat%d", icategoryid), aL, aR)
+
+ if (index + 1 < lenarray(gSscss_effects)) then
+ _scss_getsetfxbusses icategoryid, index + 1
+ endif
+endop
+
+
+/*
+ Get all category bus outputs, summed and with the relevant amplitude applied from the channel CATEGORYNAME_amp
+
+ aL, aR scss_getcategorybusses
+
+ aL, aR left and right audio outputs
+*/
+opcode scss_getcategorybusses, aa, o
+ index xin
+ _scss_getsetfxbusses()
+ aL, aR bus_read sprintf("cat%d", index)
+ kamp chnget sprintf("%s_amp", gSscss_categories[index])
+ aL *= kamp
+ aR *= kamp
+ if (index + 1 < lenarray(gSscss_categories)) then
+ aLx, aRx scss_getcategorybusses index + 1
+ aL += aLx
+ aR += aRx
+ endif
+ xout aL, aR
+endop
+
+
+
+/*
+ Set a trigger to 1 for one kcycle
+
+ p4 channel name to set
+*/
+instr scss_trigger
+ Schannel = p4
+ chnset 1, Schannel
+ chnset k(0), Schannel
+ turnoff
+endin
+
+
+/*
+ Boot SCSS:
+ go through parameters and set defaults to channels accordingly
+ set default parameters where appropriate
+ set category bus amps to default
+ set ampchannel in JSON
+*/
+instr scss_boot
+ SonComplete = strget(p4)
+
+ SdefaultTriggerParameters = {{[
+ {"name": "seq_reset", "description": "Reset", "type": "trigger"},
+ {"name": "seq_divisions", "description": "Divisions", "type": "int", "min": 1, "max": 8, "default": 4},
+ {"name": "seq_chanceon", "description": "On chance", "min": 0, "max": 1, "default": 1},
+ {"name": "seq_chanceoff", "description": "Off chance", "min": 0, "max": 1, "default": 1}%s
+ ]}}
+ SdefaultParameters = {{
+ {"name": "amp", "description": "Amplitude", "min": 0, "max": 1, "default": 1}
+ }}
+
+ idefaultcategoryamp = 1
+ idefaultfxamp = 0.8
+ iJson = jsonptr(giscss_stateJson, "/categories")
+
+ icatnum = jsonsize(iJson)
+ gSscss_categories[] init icatnum
+ scss_st_boot(icatnum, 32, 4)
+
+ ; add effects default parameters; done to global for later defaults processing
+ index = 0
+ while (index < icatnum) do
+ Scategory jsonptrval giscss_stateJson, sprintf("/categories/%d/name", index)
+ if (strcmp(Scategory, "effects") == 0) then
+ iJsonItems = jsonptr(giscss_stateJson, sprintf("/categories/%d/items", index))
+ ijsize = jsonsize(iJsonItems)
+ jsondestroy(iJsonItems)
+ indexitem = 0
+ while (indexitem < ijsize) do
+ SparameterPointer = sprintf("/categories/%d/items/%d/parameters", index, indexitem)
+ if (jsonptrhas(giscss_stateJson, SparameterPointer) == 1) then
+ iJparameters = jsonptr(giscss_stateJson, SparameterPointer)
+ indexparam = jsonsize(iJparameters)
+ jsondestroy(iJparameters)
+ iJdefaults = jsonloads(SdefaultParameters)
+ jsonptradd(giscss_stateJson, sprintf("%s/%d", SparameterPointer, indexparam), iJdefaults)
+ else
+ iJdefaults = jsonloads(sprintf("[%s]", SdefaultParameters))
+ jsonptradd(giscss_stateJson, SparameterPointer, iJdefaults)
+ endif
+ jsondestroy(iJdefaults)
+ indexitem += 1
+ od
+ goto process_categories
+ endif
+ index += 1
+ od
+
+process_categories:
+ ; loop through instrument categories
+ index = 0
+ while (index < icatnum) do
+
+ ; all enabled to begin with
+ tablew 1, index, giscss_catEnabled
+
+ iJsonCategory = jsonptr(giscss_stateJson, sprintf("/categories/%d", index))
+ Scategory jsongetval iJsonCategory, "name"
+ iseffect = 1 - strcmp(Scategory, "effects")
+ itypeid jsongetval iJsonCategory, "type_id"
+
+ tablew itypeid, index, giscss_catType
+ istriggered = (itypeid == 0) ? 1 : 0
+
+ ; set in global array for bus tracking
+ gSscss_categories[index] = Scategory
+
+ iJsonItems = jsonptr(iJsonCategory, "/items")
+ iinstrnum = jsonsize(iJsonItems)
+
+ ; add category ID
+ jsonptraddval giscss_stateJson, sprintf("/categories/%d/category_id", index), index
+
+ if (iseffect == 1) then
+ gSscss_effects[] init iinstrnum
+ else
+
+ if (istriggered == 1) then
+ ; add sequence tables
+ iJsonSeqtables = jsoninit()
+ jsoninsertval(iJsonSeqtables, "trigger", getrow(giscss_stfn_trig, index))
+ jsoninsertval(iJsonSeqtables, "duration", getrow(giscss_stfn_dur, index))
+ jsoninsertval(iJsonSeqtables, "parameter", getrow(giscss_stfn_params, index))
+ jsonptradd giscss_stateJson, sprintf("/categories/%d/seqtables", index), iJsonSeqtables
+ jsondestroy(iJsonSeqtables)
+ iJsonInstrParams = jsonloads(sprintf(SdefaultTriggerParameters, sprintf(",%s", SdefaultParameters)))
+ else
+ iJsonInstrParams = jsonloads(sprintf("[%s]", SdefaultParameters))
+ endif
+
+ ; add default control channels
+ iparamsize = jsonsize(iJsonInstrParams)
+ indexparam = 0
+ while (indexparam < iparamsize) do
+ SparamName jsonptrval iJsonInstrParams, sprintf("/%d/name", indexparam)
+ SdefaultPointer = sprintf("/%d/default", indexparam)
+
+ ; if default is specified
+ if (jsonptrhas(iJsonInstrParams, SdefaultPointer) == 1) then
+ chnset jsonptrval:i(iJsonInstrParams, SdefaultPointer), sprintf("%s_%s", Scategory, SparamName)
+ endif
+
+ indexparam += 1
+ od
+ jsonptradd giscss_stateJson, sprintf("/categories/%d/parameters", index), iJsonInstrParams
+ jsondestroy(iJsonInstrParams)
+ endif
+
+ ; loop through instrument items
+ indexItem = 0
+ while (indexItem < iinstrnum) do
+ iJsonItem = jsonptr(iJsonItems, sprintf("/%d", indexItem))
+ Sinstrument = jsongetval(iJsonItem, "name")
+
+ if (iseffect == 1) then
+ gSscss_effects[indexItem] = Sinstrument
+ SampChannel = sprintf("%s_amp", Sinstrument)
+ chnset idefaultfxamp, SampChannel
+ jsonptraddval giscss_stateJson, sprintf("/categories/%d/items/%d/ampchannel", index, indexItem), SampChannel
+ endif
+
+ ; add instrument number
+ jsonptraddval giscss_stateJson, sprintf("/categories/%d/items/%d/instrnum", index, indexItem), nstrnum(Sinstrument)
+
+ SparameterPointer = "/parameters"
+ if (jsonptrhas(iJsonItem, SparameterPointer) == 1) then
+ iJsonParameters = jsonptr(iJsonItem, SparameterPointer)
+ iparamsize = jsonsize(iJsonParameters)
+
+ ; loop through parameter keys
+ indexparam = 0
+ while (indexparam < iparamsize) do
+ SparamName jsonptrval iJsonParameters, sprintf("/%d/name", indexparam)
+ SdefaultPointer = sprintf("/%d/default", indexparam)
+
+ ; if default is specified
+ if (jsonptrhas(iJsonParameters, SdefaultPointer) == 1) then
+ chnset jsonptrval:i(iJsonParameters, SdefaultPointer), sprintf("%s_%s", Sinstrument, SparamName)
+ endif
+ indexparam += 1
+ od
+ jsondestroy(iJsonParameters)
+ endif
+
+ ; if instrument is in effects category, schedule endless play
+ if (iseffect == 1) then
+ schedule Sinstrument, 0.1, -1
+ endif
+
+ jsondestroy(iJsonItem)
+ indexItem += 1
+ od
+ jsondestroy(iJsonItems)
+ jsondestroy(iJsonCategory)
+ index += 1
+ od
+ jsondestroy(iJson)
+
+ ; global parameters
+ SparameterPointer = "/parameters"
+ if (jsonptrhas(giscss_stateJson, SparameterPointer) == 1) then
+ iJsonParameters = jsonptr(giscss_stateJson, SparameterPointer)
+ iparamsize = jsonsize(iJsonParameters)
+
+ ; loop through parameter keys
+ indexparam = 0
+ while (indexparam < iparamsize) do
+ SparamName jsonptrval iJsonParameters, sprintf("/%d/name", indexparam)
+ SdefaultPointer = sprintf("/%d/default", indexparam)
+
+ ; if default is specified
+ if (jsonptrhas(iJsonParameters, SdefaultPointer) == 1) then
+ chnset jsonptrval:i(iJsonParameters, SdefaultPointer), sprintf("scss_%s", SparamName)
+ endif
+ indexparam += 1
+ od
+ jsondestroy(iJsonParameters)
+ endif
+
+ ; append category state and enabled table numbers to JSON
+ jsoninsertval(giscss_stateJson, "catstatetable", giscss_instrState)
+ jsoninsertval(giscss_stateJson, "catenabledtable", giscss_catEnabled)
+
+ ; send JSON state to host, init time only
+ io_sendstring("scss_state", jsondumps(giscss_stateJson, 0))
+ ;prints jsondumps(giscss_stateJson)
+
+ ; global parameter handling, explicitly specified right now
+ gkseq_tempo = chnget:k("scss_bpm")
+
+ ; sequence triggered and continuous instruments
+ _scss_st_seq()
+
+ ; launch onComplete instrument if specified
+ if (strcmp(SonComplete, "") != 0) then
+ schedule(SonComplete, 0, -1)
+ endif
+
+ ; get all audio and output
+ aL, aR scss_getcategorybusses
+ outs aL, aR
+endin
+
+schedule("scss_boot", 0, -1, "$SCSS_BOOT_INSTRUMENT")
+
+#end
diff --git a/site/udo/scss/elasticlip.udo b/site/udo/scss/elasticlip.udo
new file mode 100755
index 0000000..e5bd2ee
--- /dev/null
+++ b/site/udo/scss/elasticlip.udo
@@ -0,0 +1,823 @@
+#ifndef UDO_SCSS_ELASTICLIP
+#define UDO_SCSS_ELASTICLIP ##
+/*
+ SCSS segemented timestretch record/playback loop engine
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "/bussing.udo"
+#include "/wavetables.udo"
+#include "/interop.udo"
+#include "/sequencing.udo"
+#include "/sequencing_scheduled.udo"
+#include "/table_tools.udo"
+#include "/pvs_tools.udo"
+
+/*
+ Control Items
+
+ 0 wave L
+ 1 wave R
+ 2 warp divisions per beat
+ 3 duration
+ 4 beats length
+ 5 utilised length
+ 6 warp mode ; 0 = repitch , 1 = texture , 2 = mincer , 2 = pvstab
+ 7 pitch, in semitones from original
+ 8 amp
+ 9 fft size
+ 10 texture window size
+ 11 texture random
+ 12 texture overlap
+ 13 loop switch
+ 14 warp switch
+ 15 texture window type ; 0 = hanning, 1 = hamming, 2 = half sine
+ 16 utilised start
+ 17 phase lock
+ 18 sample rate
+ 19 + = warp points
+*/
+gSecp_clipnames[] init 9999
+giecp_fnclips[] init 9999
+giecp_clipindexmax = 0
+
+giecp_controlitemnum = 19
+
+
+#ifndef ECP_NORECORDING
+#ifndef ECP_RECORDBUFFERTIME
+#define ECP_RECORDBUFFERTIME #10#
+#end
+giecp_recordbufferduration = $ECP_RECORDBUFFERTIME
+giecp_recordbufferL ftgen 0, 0, -(giecp_recordbufferduration*sr), -7, 0
+giecp_recordbufferR ftgen 0, 0, -(giecp_recordbufferduration*sr), -7, 0
+#end
+
+
+opcode ecp_set_warppoint, 0, iii
+ iclipindex, ipointindex, ivalue xin
+ ifndata = giecp_fnclips[iclipindex]
+ imax = tab_i(4, ifndata) * tab_i(2, ifndata)
+ if (ipointindex < imax) then
+ ipointindex += giecp_controlitemnum
+ tablew ivalue, ipointindex, ifndata
+ endif
+endop
+
+
+
+opcode ecp_get_audiofn, ii, i
+ iclipindex xin
+ ifndata = giecp_fnclips[iclipindex]
+ ifnL tab_i 0, ifndata
+ ifnR tab_i 1, ifndata
+ xout ifnL, ifnR
+endop
+
+opcode ecp_get_name, S, i
+ iclipindex xin
+ xout gSecp_clipnames[iclipindex]
+endop
+
+opcode ecp_set_name, 0, iS
+ iclipindex, Sname xin
+ gSecp_clipnames[iclipindex] = Sname
+endop
+
+opcode ecp_get_duration, i, i
+ iclipindex xin
+ xout tab_i(3, giecp_fnclips[iclipindex])
+endop
+
+opcode ecp_get_divisions, i, i
+ iclipindex xin
+ xout tab_i(2, giecp_fnclips[iclipindex])
+endop
+
+opcode ecp_set_pitch, 0, ii
+ iclipindex, ivalue xin
+ tabw_i ivalue, 7, giecp_fnclips[iclipindex]
+endop
+
+opcode ecp_get_pitch, i, i
+ iclipindex xin
+ xout tab_i(7, giecp_fnclips[iclipindex])
+endop
+
+opcode ecp_get_warpmode, i, i
+ iclipindex xin
+ xout tab_i(6, giecp_fnclips[iclipindex])
+endop
+
+opcode ecp_set_warpmode, 0, ii
+ iclipindex, ivalue xin
+ tabw_i ivalue, 6, giecp_fnclips[iclipindex]
+endop
+
+opcode ecp_set_texturesize, 0, ii
+ iclipindex, ivalue xin
+ tabw_i ivalue, 10, giecp_fnclips[iclipindex]
+endop
+
+opcode ecp_get_texturesize, i, i
+ iclipindex xin
+ xout tab_i(10, giecp_fnclips[iclipindex])
+endop
+
+opcode ecp_set_texturerandom, 0, ii
+ iclipindex, ivalue xin
+ tabw_i ivalue, 11, giecp_fnclips[iclipindex]
+endop
+
+opcode ecp_get_texturerandom, i, i
+ iclipindex xin
+ xout tab_i(11, giecp_fnclips[iclipindex])
+endop
+
+opcode ecp_set_textureoverlap, 0, ii
+ iclipindex, ivalue xin
+ tabw_i ivalue, 12, giecp_fnclips[iclipindex]
+endop
+
+opcode ecp_get_textureoverlap, i, i
+ iclipindex xin
+ xout tab_i(12, giecp_fnclips[iclipindex])
+endop
+
+opcode ecp_set_loop, 0, ii
+ iclipindex, ivalue xin
+ tabw_i ivalue, 13, giecp_fnclips[iclipindex]
+endop
+
+opcode ecp_get_loop, i, i
+ iclipindex xin
+ xout tab_i(13, giecp_fnclips[iclipindex])
+endop
+
+opcode ecp_set_warp, 0, ii
+ iclipindex, ivalue xin
+ tabw_i ivalue, 14, giecp_fnclips[iclipindex]
+endop
+
+opcode ecp_get_warp, i, i
+ iclipindex xin
+ xout tab_i(14, giecp_fnclips[iclipindex])
+endop
+
+opcode ecp_set_texturewindow, 0, ii
+ iclipindex, ivalue xin
+ tabw_i ivalue, 15, giecp_fnclips[iclipindex]
+endop
+
+opcode ecp_get_texturewindow, i, i
+ iclipindex xin
+ xout tab_i(15, giecp_fnclips[iclipindex])
+endop
+
+
+opcode ecp_randomise_warppoints, 0, io
+ iclipindex, imode xin
+ ipoints = ecp_get_duration(iclipindex) * ecp_get_divisions(iclipindex)
+ iduration = ecp_get_duration(iclipindex)
+ iaveragedivision = iduration / ipoints
+ ilasttime = (imode == -1) ? iduration : 0
+ index = 0
+ while (index < ipoints) do
+ if (imode == 0) then
+ ecp_set_warppoint iclipindex, index, random(0, iduration)
+ else
+ itime = (imode == 1) ? min(random(ilasttime, ilasttime + iaveragedivision), iduration) : max(random(ilasttime - iaveragedivision, ilasttime), 0)
+ ecp_set_warppoint iclipindex, index, itime
+ ilasttime = itime
+ endif
+ index += 1
+ od
+endop
+
+
+opcode ecp_replacetables, 0, iiop
+ iclipindex, ifnL, ifnR, ireplaceall xin
+ ifndata = giecp_fnclips[iclipindex]
+
+ ifnLoriginal tab_i 0, ifndata
+ ifnRoriginal tab_i 1, ifndata
+ if (ifnL == ifnLoriginal) then
+ goto complete
+ endif
+ ioriginallen table 3, ifndata
+ ilen = ftlen(ifnL) / ftsr(ifnL)
+
+ if (ireplaceall == 1) then
+ index = 0
+ while (index < lenarray(giecp_fnclips)) do
+ if (index != iclipindex && giecp_fnclips[index] > 0) then
+ itfnL tab_i 0, giecp_fnclips[index] ; assuming ifnR will do as well
+ if (itfnL == ifnLoriginal) then
+ tablew ifnL, 0, giecp_fnclips[index]
+ tablew ifnR, 1, giecp_fnclips[index]
+ endif
+ endif
+ index += 1
+ od
+
+ if (ftexists(ifnLoriginal) == 1) then
+ ftfree ifnLoriginal, 0
+ endif
+ if (ifnRoriginal != 0 && ftexists(ifnRoriginal) == 1) then
+ ftfree ifnRoriginal, 0
+ endif
+ else
+ tablew ifnL, 0, ifndata
+ tablew ifnR, 1, ifndata
+
+ endif
+
+
+ ; needs to be done for all if ireplaceall is set
+ if (ioriginallen != ilen) then
+ tablew ilen, 3, ifndata
+ ibeats table 4, ifndata
+ idivisionsperbeat table 2, ifndata
+ itotalpoints = ibeats * idivisionsperbeat
+ iparttime = ilen / itotalpoints
+ index = giecp_controlitemnum
+ itime = 0
+ while (index < ftlen(ifndata)) do
+ tablew itime, index, ifndata
+ itime += iparttime
+ index += 1
+ od
+ endif
+complete:
+endop
+
+
+opcode ecp_removeclip, 0, i
+ iclipindex xin
+ ifndata = giecp_fnclips[iclipindex]
+ ifnL tab_i 0, ifndata
+ ifnR tab_i 1, ifndata
+
+ iremovefn = 1
+ index = 0
+ while (index < lenarray(giecp_fnclips)) do
+ if (index != iclipindex && giecp_fnclips[index] > 0) then
+ itfnL tab_i 0, giecp_fnclips[index] ; assuming ifnR will do as well
+ if (itfnL == ifnL) then
+ iremovefn = 0
+ goto complete
+ endif
+ endif
+ index += 1
+ od
+complete:
+ if (iremovefn == 1) then
+ ftfree ifnL, 0
+ if (ifnR > 0) then
+ ftfree ifnR, 0
+ endif
+ endif
+ ftfree ifndata, 0
+ giecp_fnclips[iclipindex] = 0
+endop
+
+opcode ecp_importclip, i, i
+ ifndata xin
+ iclipindex = giecp_clipindexmax
+ giecp_clipindexmax += 1
+ gSecp_clipnames[iclipindex] = "Imported" ; defunct really: TODO remove
+ giecp_fnclips[iclipindex] = ifndata
+ xout iclipindex
+endop
+
+/*
+ Add clip to runtime engine
+
+ iclipindex ecp_addclip Sname, ifnL, ifnR, ibeats [, idivisionsperbeat = 4]
+
+ iclipindex index of the clip for recall
+ Sname name of the clip, can be passed blank to default
+ ifnL left ftable of audio
+ ifnR right ftable of audio, can be passed as 0 if mono
+ ibeats the length of the clip in beats
+ idivisionsperbeat resolution of markers per beat, default is 4
+
+*/
+opcode ecp_addclip, i, Siiij
+ Sname, ifnL, ifnR, ibeats, idivisionsperbeat xin
+ idivisionsperbeat = (idivisionsperbeat == -1) ? 4 : idivisionsperbeat
+ iclipindex = giecp_clipindexmax
+ giecp_clipindexmax += 1
+
+ if (strcmp(Sname, "") == 0) then
+ Sname = sprintf("clip %d", iclipindex + 1)
+ endif
+ ilen = ftlen(ifnL) / ftsr(ifnL)
+ itotalpoints = ibeats * idivisionsperbeat
+ iparttime = ilen / itotalpoints
+ ifndata ftgen 0, 0, -(itotalpoints+giecp_controlitemnum), -2, 0
+
+ tablew ifnL, 0, ifndata
+ tablew ifnR, 1, ifndata
+ tablew idivisionsperbeat, 2, ifndata
+ tablew ilen, 3, ifndata ; seconds length
+ tablew ibeats, 4, ifndata ; beats length
+ tablew ilen, 5, ifndata ; seconds utilised length
+ tablew 0, 6, ifndata ; warp mode
+ tablew 0, 7, ifndata ; pitch
+ tablew 1, 8, ifndata ; amp
+ tablew 512, 9, ifndata ; fft size
+ tablew 4410, 10, ifndata ; texture window size
+ tablew 441, 11, ifndata ; texture random
+ tablew 2, 12, ifndata ; texture overlap
+ tablew 0, 13, ifndata ; whether to loop or one shot
+ tablew 0, 14, ifndata ; whether to warp or straight playback
+ tablew 0, 15, ifndata ; texture mode window shape, corresponds to hanning, hamming, half sine
+ tablew 0, 16, ifndata ; utilised start
+ tablew 1, 17, ifndata ; phase lock
+ tablew ftsr(ifnL), 18, ifndata ; samplerate
+
+ index = giecp_controlitemnum
+ itime = 0
+ while (index < ftlen(ifndata)) do
+ tablew itime, index, ifndata
+ itime += iparttime
+ index += 1
+ od
+
+ gSecp_clipnames[iclipindex] = Sname
+ giecp_fnclips[iclipindex] = ifndata
+ xout iclipindex
+endop
+
+
+opcode ecp_loadsound, i, Sio
+ Spath, ibeats, iforcemono xin
+ ichnls = (iforcemono == 1) ? 1 : filenchnls(Spath)
+ ifnL ftgen 0, 0, 0, 1, Spath, 0, 0, 1
+ if (ichnls == 2) then
+ ifnR ftgen 0, 0, 0, 1, Spath, 0, 0, 2
+ else
+ ifnR = 0
+ endif
+ iclipindex = ecp_addclip(Spath, ifnL, ifnR, ibeats, 4)
+ xout iclipindex
+endop
+
+
+opcode ecp_setaudiounique, 0, i
+ iclipindex xin
+ ifndata = giecp_fnclips[iclipindex]
+ ifnL tab_i 0, ifndata
+ ifnR tab_i 1, ifndata
+
+ irequired = 0
+ index = 0
+ while (index < lenarray(giecp_fnclips)) do
+ if (index != iclipindex && giecp_fnclips[index] > 0) then
+ itfnL tab_i 0, giecp_fnclips[index] ; assuming ifnR will do as well
+ if (itfnL == ifnL) then
+ irequired = 1
+ goto complete
+ endif
+ endif
+ index += 1
+ od
+complete:
+ if (irequired == 1) then
+ isize = ftlen(ifnL)
+ ifnLnew ftgen 0, 0, -isize, -2, 0
+ tableicopy ifnLnew, ifnL
+ tabw_i ifnLnew, 0, ifndata
+ if (ifnR > 0) then
+ ifnRnew ftgen 0, 0, -isize, -2, 0
+ tableicopy ifnRnew, ifnR
+ tabw_i ifnRnew, 1, ifndata
+ endif
+ endif
+endop
+
+
+opcode ecp_cloneclip, i, i
+ iclipindexfrom xin
+ iclipindexto = giecp_clipindexmax
+ giecp_clipindexmax += 1
+
+ ifndatafrom = giecp_fnclips[iclipindexfrom]
+ ifndatato ftgen 0, 0, -ftlen(ifndatafrom), -2, 0
+
+ gSecp_clipnames[iclipindexto] = gSecp_clipnames[iclipindexfrom]
+ tableicopy ifndatato, ifndatafrom
+
+ giecp_fnclips[iclipindexto] = ifndatato
+ xout iclipindexto
+endop
+
+
+instr ecp_stop
+ icbid = p4
+ turnoff2 nstrnum("ecp_playback") + (icbid / 1000000), 4, 1
+ turnoff
+endin
+
+
+opcode ecp_getwaveform, i, io
+ iclipindex, isamples xin
+ ifnL table 0, giecp_fnclips[iclipindex]
+ ifndata tab_overview ifnL, isamples
+ xout ifndata
+endop
+
+
+instr ecp_stopaudition
+ icbid = p4
+ turnoff2 nstrnum("ecp_playaudition") + (icbid / 1000000), 4, 1
+ turnoff
+endin
+
+instr ecp_playaudition_complete
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":0}", icbid))
+ turnoff
+endin
+
+instr ecp_playaudition
+ icbid = p4
+ iclipindex = p5
+ iduration = p6
+ ichannel = p7
+ p1 += (icbid / 1000000)
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": 1}", icbid))
+ aL, aR subinstr "ecp_playback_tst", icbid, iclipindex, iduration
+ outs aL, aR ; channels??
+
+ kreleasing init 0
+ if (lastcycle:k() == 1 || (kreleasing == 0 && release:k() == 1)) then
+ kreleasing = 1
+ schedulek("ecp_playaudition_complete", 0, 1, icbid)
+ endif
+endin
+
+
+instr ecp_playback_tst
+ icbid = p4
+ iclipindex = p5
+ iduration = p6
+ istartoffset = p7
+
+ ifndata = giecp_fnclips[iclipindex]
+ ifnL tab_i 0, ifndata
+ ifnR tab_i 1, ifndata
+ idivisions tab_i 2, ifndata
+ itotalduration tab_i 3, ifndata
+
+ iutilisedlength tab_i 5, ifndata
+ iwarpmode tab_i 6, ifndata ; 0 = repitch, 1 = texture, 2 = mincer, 3 = pvstab
+ kpitch = pow:k(2, (tab:k(7, ifndata) / 12))
+ kamp tab 8, ifndata
+ ifftsize tab_i 9, ifndata
+ iwindowsize tab_i 10, ifndata
+ irandwin tab_i 11, ifndata
+ ioverlap tab_i 12, ifndata
+ iloop tab_i 13, ifndata
+ iwarp tab_i 14, ifndata
+ iwindowtype tab_i 15, ifndata
+ istart = tab_i(16, ifndata) + istartoffset
+ kphaselock tab 17, ifndata
+ isr tab_i 18, ifndata
+
+ if (iwindowtype == 0) then
+ iwindow = gifnHanning
+ elseif (iwindowtype == 1) then
+ iwindow = gifnHamming
+ else
+ iwindow = gifnHalfSine
+ endif
+
+ if (iwarp == 1) then
+ atime linseg istart, iduration, iutilisedlength
+ else
+ atime = (phasor(1 / itotalduration) * (iutilisedlength - istart)) + istart
+ endif
+
+
+ ; repitch
+ if (iwarp == 0) then
+ aptime = atime * ftsr(ifnL) * kpitch
+ aoutL table3 aptime, ifnL, 0
+ if (ifnR != 0) then
+ aoutR table3 aptime, ifnR, 0
+ else
+ aoutR = aoutL
+ endif
+
+ ; texture
+ elseif (iwarpmode == 1) then
+ isradjust = isr / sr
+ aoutL sndwarp 1, atime, a(kpitch) * isradjust, ifnL, 0, iwindowsize, irandwin, ioverlap, iwindow, 1
+ if (ifnR != 0) then
+ aoutR sndwarp 1, atime, a(kpitch) * isradjust, ifnR, 0, iwindowsize, irandwin, ioverlap, iwindow, 1
+ else
+ aoutR = aoutL
+ endif
+
+ ; mincer
+ elseif (iwarpmode == 2) then
+ aoutL mincer atime, 1, kpitch, ifnL, kphaselock, ifftsize, 4
+ if (ifnR != 0) then
+ aoutR mincer atime, 1, kpitch, ifnR, kphaselock, ifftsize, 4
+ else
+ aoutR = aoutL
+ endif
+
+ ; pvs
+ elseif (iwarpmode == 3) then ; contentious benefit
+ ipvsbufL pvs_ifn2buffer ifnL, ifftsize, ifftsize / 4, ifftsize, 2
+ ffoutL pvsbufread k(atime), ipvsbufL
+ if (kpitch != 1) then
+ fscaleL pvscale ffoutL, kpitch
+ aoutL pvsynth fscaleL
+ else
+ aoutL pvsynth ffoutL
+ endif
+
+ if (ifnR != 0) then
+ ipvsbufR pvs_ifn2buffer ifnR, ifftsize, ifftsize / 4, ifftsize, 2
+ ffoutR pvsbufread k(atime), ipvsbufR
+ if (kpitch != 1) then
+ fscaleR pvscale ffoutR, kpitch
+ aoutR pvsynth fscaleR
+ else
+ aoutR pvsynth ffoutR
+ endif
+ else
+ ifnR = ifnL
+ endif
+ endif
+
+ aamp linseg 1, iduration * 0.9999, 1, iduration * 0.0001, 0
+
+ aoutL *= aamp * kamp
+ aoutR *= aamp * kamp
+ outs aoutL, aoutR
+endin
+
+
+instr ecp_playback
+ icbid = p4
+ iclipindex = p5
+
+ if (icbid > 0) then
+ p1 += icbid / 1000000
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": 3}", icbid))
+ endif
+
+ Sbus = strget(p6)
+ if (strcmp(Sbus, "") == 0) then
+ Sbus = "main"
+ endif
+
+ kmincelock init 1
+
+ ifndata = giecp_fnclips[iclipindex]
+ ifnL table 0, ifndata
+ ifnR table 1, ifndata
+ idivisions table 2, ifndata
+ itotalduration table 3, ifndata
+
+ iwarpmode table 6, ifndata ; 0 = repitch, 1 = texture, 2 = pvs, 3 = mincer
+ kpitch = pow:k(2, (tab:k(7, ifndata) / 12))
+ kamp table 8, ifndata
+ ifftsize table 9, ifndata
+ iwindowsize table 10, ifndata
+ irandwin table 11, ifndata
+ ioverlap table 12, ifndata
+ iloop table 13, ifndata
+ iwarp table 14, ifndata
+ iwindowtype table 15, ifndata
+
+ if (iwindowtype == 0) then
+ iwindow = gifnHanning
+ elseif (iwindowtype == 1) then
+ iwindow = gifnHamming
+ else
+ iwindow = gifnHalfSine
+ endif
+
+
+ if (iloop == 0 && iwarp == 0) then
+ p3 = itotalduration
+ if (iwarpmode == 0) then
+ p3 /= tab_i(7, ifndata)
+ endif
+ endif
+
+ if (iwarp == 1) then
+ if (iloop == 1) then
+ iduration = itotalduration
+ else
+ iduration = p3
+ endif
+
+ kdiv = gkseq_beattime / idivisions
+ as, aps syncphasor -(gkseq_beathz*idivisions), a(gkseq_beat)
+ ;ithresh = ((1 / sr) * ksmps) * 16
+ kt trigger k(as), 0.1, 0 ; was 0.005.. works?
+
+ ktime init 0
+ kpoint init giecp_controlitemnum
+ kcps init 1 / iduration
+ kpointend init table:i(giecp_controlitemnum+1, ifndata)
+
+ if (kt == 1) then
+ ktime = table:k(kpoint, ifndata)
+
+ if (kpoint + 1 < ftlen(ifndata)) then
+ kpointend = table:k(kpoint + 1, ifndata)
+ kpoint += 1
+ else
+ kpointend = iduration
+ kpoint = giecp_controlitemnum
+ endif
+ kcps = (kpointend - ktime) / kdiv
+ endif
+ atime, a_ syncphasor kcps, a(kt) ;a(gkseq_beat) ;aps
+
+ else
+ ktime init 0
+ atime phasor 1 / itotalduration
+ atime *= itotalduration
+ endif
+
+ ; repitch
+ if (iwarpmode == 0) then
+ if (iwarp == 1) then
+ aptime = (atime + ktime) * ftsr(ifnL)
+ else
+ aptime = atime * ftsr(ifnL) * kpitch ; * 0.5 ; why is 0.5 required here?
+ endif
+
+ aoutL table3 aptime, ifnL, 0
+ if (ifnR != 0) then
+ aoutR tablekt aptime, ifnR, 0
+ else
+ aoutR = aoutL
+ endif
+
+ ; texture
+ elseif (iwarpmode == 1) then
+ isradjust = ftsr(ifnL) / sr
+ aoutL sndwarp 1, (atime + ktime), a(kpitch) * isradjust, ifnL, 0, iwindowsize, irandwin, ioverlap, iwindow, 1
+ if (ifnR != 0) then
+ aoutR sndwarp 1, (atime + ktime), a(kpitch) * isradjust, ifnR, 0, iwindowsize, irandwin, ioverlap, iwindow, 1
+ else
+ aoutR = aoutL
+ endif
+
+ ; mincer
+ elseif (iwarpmode == 2) then
+ aoutL mincer atime + ktime, 1, kpitch, ifnL, kmincelock, ifftsize, 4
+ if (ifnR != 0) then
+ aoutR mincer atime + ktime, 1, kpitch, ifnR, kmincelock, ifftsize, 4
+ else
+ aoutR = aoutL
+ endif
+
+ ; pvs
+ elseif (iwarpmode == 3) then ; contentious benefit
+ ipvsbufL pvs_ifn2buffer ifnL, ifftsize, ifftsize/4, ifftsize, 2
+ ffoutL pvsbufread k(atime) + ktime, ipvsbufL
+ if (kpitch != 1) then
+ fscaleL pvscale ffoutL, kpitch
+ aoutL pvsynth fscaleL
+ else
+ aoutL pvsynth ffoutL
+ endif
+
+ if (ifnR != 0) then
+ ipvsbufR pvs_ifn2buffer ifnR, ifftsize, ifftsize/4, ifftsize, 2
+ ffoutR pvsbufread k(atime) + ktime, ipvsbufR
+ if (kpitch != 1) then
+ fscaleR pvscale ffoutR, kpitch
+ aoutR pvsynth fscaleR
+ else
+ aoutR pvsynth ffoutR
+ endif
+ else
+ ifnR = ifnL
+ endif
+ endif
+
+ aamp linseg 1, p3 * 0.9999, 1, p3 * 0.0001, 0
+
+ aoutL *= aamp * kamp
+ aoutR *= aamp * kamp
+ bus_mix(Sbus, aoutL, aoutR)
+ if (icbid > 0) then
+ kreleasing init 0
+ if (release:k() == 1 && kreleasing == 0) then
+ kreleasing = 1
+ schedulek("ecp_stopped", 0, 1, icbid)
+ endif
+ endif
+endin
+
+
+instr ecp_stopped
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": 0}", icbid))
+ turnoff
+endin
+
+
+#ifndef ECP_NORECORDING
+instr ecp_record_stop
+ icbid = p4
+ turnoff2 nstrnum("ecp_record") + (icbid / 1000000), 4, 1
+ turnoff
+endin
+
+
+instr ecp_record
+ icbid = p4
+ istereo = p5
+
+ p1 += icbid / 1000000
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": 1}", icbid))
+
+ kbeats init 0
+ if (gkseq_beat == 1) then
+ kbeats += 1
+ endif
+
+ awritepos lphasor 1
+ ainL inch 1
+ tabw ainL, awritepos, giecp_recordbufferL
+ if (istereo == 1) then
+ ainR inch 2
+ tabw ainR, awritepos, giecp_recordbufferR
+ endif
+
+ kreleasing init 0
+ if (release:k() == 1 && kreleasing == 0) then
+ kreleasing = 1
+ schedulek "ecp_record_post", 0, 10, icbid, istereo, kbeats
+ endif
+endin
+
+
+instr ecp_record_scheduled_cancel
+ icbid = p4
+ turnoff2 nstrnum("ecp_record_scheduled") + (icbid / 1000000), 4, 1
+ turnoff
+endin
+
+instr ecp_record_scheduled
+ icbid = p4
+ istereo = p5
+ imode = p6 ; -1 = now, 0 = beat, 1 = bar , 2 = bargroup
+
+ p1 += icbid / 1000000
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": 4}", icbid))
+
+ if ((imode == -1) || (imode == 0 && gkseq_beat == 1) || (imode == 1 && gkseq_bar_trig == 1) || (imode == 2 && gkseq_bargroup_trig == 1)) then
+ schedulek("ecp_record", 0, giecp_recordbufferduration, icbid, istereo)
+ turnoff
+ endif
+endin
+
+
+instr ecp_record_post
+ icbid = p4
+ istereo = p5
+ ibeats = p6
+
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": 2}", icbid))
+
+ istart = 0 ;ksmps * 8
+ iduration = i(gkseq_beattime) * ibeats
+ ilen = iduration * sr
+ ifnL ftgen 0, 0, -ilen, -7, 0
+ ftslicei giecp_recordbufferL, ifnL, istart, ilen
+ if (istereo == 1) then
+ ifnR ftgen 0, 0, -ilen, -7, 0
+ ftslicei giecp_recordbufferR, ifnR, istart, ilen
+ endif
+ iclipindex = ecp_addclip("", ifnL, ifnR, ibeats, 4)
+
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": 0}", icbid))
+
+ ; testing
+ if (gkseq_bar_trig == 1) then
+ schedulek "ecp_playback", 0, 100, iclipindex, "mxchan0"
+ turnoff
+ endif
+
+ ; turnoff
+endin
+#end
+
+#end
diff --git a/site/udo/scss/elasticlip_arranger.udo b/site/udo/scss/elasticlip_arranger.udo
new file mode 100755
index 0000000..2b0c09f
--- /dev/null
+++ b/site/udo/scss/elasticlip_arranger.udo
@@ -0,0 +1,213 @@
+#ifndef UDO_ELASTICLIPARRANGER
+#define UDO_ELASTICLIPARRANGER ##
+
+#include "scss/elasticlip.udo"
+#include "scss/mixer/base.udo"
+#include "array_3d.udo"
+#include "sequencing_scheduled.udo"
+#include "interop.udo"
+
+giecpa_fn = -1
+giecpa_scenenumber = -1
+
+/*
+ Follow actions
+ 0 repeat
+ 1 next
+ 2 previous
+ 3 random in channel
+ 4 stop
+*/
+
+instr ecpa_boot
+ ichannelnumber = (p4 == 0) ? 12 : p4
+ isendchannels = (p5 == 0) ? 2 : p5
+ imixermaxinserts = (p6 == 0) ? 6 : p6
+ giecpa_scenenumber = (p7 == 0) ? 16 : p7
+ schedule("mx_boot", 0, 1, ichannelnumber, isendchannels, imixermaxinserts)
+
+ giecpa_fn arr3d_init ichannelnumber, giecpa_scenenumber, 5
+ turnoff
+endin
+
+
+instr ecpa_addclip
+ icbid = p4
+ iclipid = p5
+ ichannel = p6
+ iscene = p7
+
+ index arr3d_index giecpa_fn, ichannel, iscene, 0
+ tabw_i iclipid, index, giecpa_fn
+
+ ; set default follow actions
+ tabw_i 0, index + 1, giecpa_fn
+ tabw_i 0.5, index + 2, giecpa_fn
+ tabw_i 0, index + 3, giecpa_fn
+ tabw_i 16, index + 4, giecpa_fn
+ io_sendstring("callback", sprintf("{\"cbid\": %d}", icbid))
+ turnoff
+endin
+
+
+instr ecpa_moveclip
+ icbid = p4
+ ichannelfrom = p5
+ iscenefrom = p6
+ ichannelto = p7
+ isceneto = p8
+
+ index_from arr3d_index giecpa_fn, ichannelfrom, iscenefrom, 0
+ index_to arr3d_index giecpa_fn, ichannelto, isceneto, 0
+
+ index = 0
+ while (index < 5) do
+ tabw_i tab_i(index_from + index, giecpa_fn), index_to + index, giecpa_fn
+ index += 1
+ od
+ io_sendstring("callback", sprintf("{\"cbid\": %d}", icbid))
+ turnoff
+endin
+
+
+instr ecpa_rmclip
+ icbid = p4
+ ichannel = p5
+ iscene = p6
+ iclipindex arr3d_index giecpa_fn, ichannel, iscene, 0
+
+ ; if playing, stop
+
+ index = 0
+ while (index < 5) do
+ tabw_i 0, iclipindex + index, giecpa_fn
+ index += 1
+ od
+ io_sendstring("callback", sprintf("{\"cbid\": %d}", icbid))
+ turnoff
+endin
+
+
+opcode _ecpa_getnext, i, iii
+ ichannel, iscene, ifollowaction xin
+ inextscene = iscene
+
+ if (ifollowaction == 0) then ; repeat
+ goto output
+
+ elseif (ifollowaction == 1 || ifollowaction == 2) then ; next or previous
+
+ isceneindex = (ifollowaction == 1) ? iscene + 1 : iscene - 1
+ while ((ifollowaction == 1 && isceneindex < giecpa_scenenumber) || (ifollowaction == 2 && isceneindex >= 0)) do
+ item arr3d_get ichannel, isceneindex, 0
+ if (item != 0) then
+ inextscene = isceneindex
+ goto output
+ endif
+ isceneindex += (ifollowaction == 1) ? 1 : -1
+ od
+
+ isceneindex = (ifollowaction == 1) ? 0 : giecpa_scenenumber - 1
+ while ((ifollowaction == 1 && isceneindex <= iscene) || (ifollowaction == 2 && isceneindex >= iscene)) do
+ item arr3d_get ichannel, isceneindex, 0
+ if (item != 0) then
+ inextscene = isceneindex
+ goto output
+ endif
+ isceneindex += (ifollowaction == 1) ? 1 : -1
+ od
+
+ elseif (ifollowaction == 3) then ; random
+ isceneindex = 0
+ insertindex = 0
+ iactivescenesnum = 0
+ iactivescenes[] init giecpa_scenenumber
+ while (isceneindex < giecpa_scenenumber) do
+ item arr3d_get ichannel, isceneindex, 0
+ if (item != 0) then
+ iactivescenesnum += 1
+ iactivescenes[insertindex] = isceneindex
+ insertindex += 1
+ endif
+ isceneindex += 1
+ od
+ inextscene = iactivescenes[round(random(0, iactivescenesnum - 1))]
+ goto output
+ endif
+
+output:
+ xout inextscene
+endop
+
+
+instr ecpa_playslot
+ icbid = p4
+ ichannel = p5
+ iscene = p6
+ p1 += (ichannel + iscene) / 1000000
+ p3 = 36000
+
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"status\": -1}", icbid))
+ iclipindex arr3d_index giecpa_fn, ichannel, iscene, 0
+
+ ifollowaction1 = tab_i(iclipindex + 1, giecpa_fn)
+ ifollowchance = tab_i(iclipindex + 2, giecpa_fn)
+ ifollowaction2 = tab_i(iclipindex + 3, giecpa_fn)
+ ilength = tab_i(iclipindex + 4, giecpa_fn)
+
+ ifollowaction = (random(0, 1) <= ifollowchance) ? ifollowaction1 : ifollowaction2
+
+ iplaybackinstr = nstrnum("ecp_playback") + (icbid / 1000000)
+
+ klaunched init 0
+ if (gkseq_bar_trig == 1 && klaunched == 0) then
+ klaunched = 1
+ schedulek(iplaybackinstr, 0, -1, icbid, tab_i(iclipindex, giecpa_fn))
+
+ ; turnoff other scene instances
+ isceneindex = 0
+ while (isceneindex < giecpa_scenenumber) do
+ if (isceneindex != iscene) then
+ turnoff2 (ichannel + iscene) / 1000000, 4, 1
+ endif
+ isceneindex += 1
+ od
+ endif
+
+ if (klaunched == 1) then
+ ktrig nextbeatxof ilength
+ if (ktrig == 1) then
+ if (ifollowaction != 4) then ; if not stop
+ inextscene _ecpa_getnext ichannel, iscene, ifollowaction
+ schedulek("ecpa_playslot", 0, 1, icbid, ichannel, inextscene)
+ endif
+ turnoff
+ endif
+ endif
+
+ kreleasing init 0
+ if (release:k() == 1 && kreleasing == 0) then
+ kreleasing = 1
+ turnoff2 iplaybackinstr, 4, 1
+ endif
+endin
+
+
+instr ecpa_playscene
+ icbid = p4
+ iscene = p5
+
+ klaunched init 0
+ if (gkseq_bar_trig == 1 && klaunched == 0) then
+ klaunched = 1
+ ibaseinstr = nstrnum("ecpa_playslot")
+ ichannel = 0
+ while (ichannel < gichannelnumber) do
+ turnoff2 (ichannel + iscene) / 1000000, 4, 1
+ ichannel += 1
+ od
+ endif
+
+endin
+
+#end
diff --git a/site/udo/scss/elasticlip_sequencer.udo b/site/udo/scss/elasticlip_sequencer.udo
new file mode 100755
index 0000000..22144aa
--- /dev/null
+++ b/site/udo/scss/elasticlip_sequencer.udo
@@ -0,0 +1,133 @@
+#ifndef UDO_ELASTICLIPSEQUENCER
+#define UDO_ELASTICLIPSEQUENCER ##
+
+;#include "scss/mixer/base.udo"
+#include "scss/elasticlip.udo"
+#include "interop.udo"
+
+
+giecpseq_maxclipindex = 0
+giecpseq_fn ftgen 0, 0, 5000, 7, 0
+
+opcode ecpseq_getnewindex, i, 0
+ index = giecpseq_maxclipindex
+ giecpseq_maxclipindex += 1
+ xout index
+endop
+
+
+opcode ecpseq_pack, i, iii
+ ichannel, iclipindex, itime xin
+ xout (ichannel * 100000) + iclipindex + (itime / 100)
+endop
+
+
+opcode ecpseq_unpack, iii, i
+ iencoded xin
+ ichannel = int(iencoded / 100000)
+ iencoded = iencoded - ichannel * 100000
+ iclipindex = int(iencoded)
+ itime = frac(iencoded) * 100
+ xout ichannel, iclipindex, itime
+endop
+
+
+opcode ecpseq_get, iii, i
+ iseqindex xin
+ ichannel, iclipindex, itime ecpseq_unpack tab_i(iseqindex, giecpseq_fn)
+ xout ichannel, iclipindex, itime
+endop
+
+opcode ecpseq_set, 0, iiii
+ iseqindex, ichannel, iclipindex, itime xin
+ ipacked ecpseq_pack ichannel, iclipindex, itime
+ tabw_i ipacked, iseqindex, giecpseq_fn
+endop
+
+
+instr ecpseq_alterclip
+ iseqindex = p4
+ ichannel = p5
+ iclipindex = p6
+ itime = p7
+
+ ecpseq_set iseqindex, ichannel, iclipindex, itime
+endin
+
+instr ecpseq_rmclip
+ iseqindex = p4
+ tabw_i 0, iseqindex, giecpseq_fn
+endin
+
+instr _ecpseq_notify
+ icbid = p4
+ istate = p5
+ if (istate == 1) then
+ Sstate = "playing"
+ elseif (istate == 0) then
+ Sstate = "stopped"
+ endif
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"state\":\"%s\"}", icbid, Sstate))
+ turnoff
+endin
+
+giecpseq_playbackcbid = -1
+
+instr osctest
+ a1 oscil 1, 440
+ a1 *= linseg(1, p3, 0)
+ outs a1, a1
+endin
+
+
+
+instr ecpseq_playclip
+ icbid = p4
+ iclipid = p5
+ ival tab_i iclipid, giecpseq_fn
+ ichannel, iclipindex, itime ecpseq_unpack ival
+ schedule("ecp_playback", 0, 1, icbid, iclipindex) ;, sprintf("mxchan%d", ichannel))
+ turnoff
+endin
+
+
+instr ecpseq_play
+ icbid = p4
+ istartbeat = p5
+ ibeattime = i(gkseq_beattime)
+ imaxbeat = istartbeat
+ index = 0
+ while (index < ftlen(giecpseq_fn)) do
+ ival = tab_i(index, giecpseq_fn)
+ if (ival > 0) then
+ ichannel, iclipindex, itime ecpseq_unpack ival
+ if (itime >= istartbeat) then
+ irunbeat = itime - istartbeat
+ if (irunbeat > imaxbeat) then
+ imaxbeat = irunbeat
+ endif
+ schedule("ecp_playback", irunbeat * ibeattime, 1, -1, iclipindex) ;, sprintf("mxchan%d", ichannel))
+ endif
+ endif
+ index += 1
+ od
+ schedule("_ecpseq_notify", 0, 1, icbid, 1)
+ giecpseq_playbackcbid = icbid
+
+ imaxtime = imaxbeat * ibeattime
+ ktimek timeinsts
+ if (ktimek > imaxtime) then
+ schedulek("_ecpseq_notify", 0, 1, icbid, 0)
+ turnoff
+ endif
+endin
+
+instr ecpseq_stop
+ icbid = giecpseq_playbackcbid
+ turnoff2 "ecp_playback", 0, 1
+ turnoff3 "ecp_playback"
+ schedule("_ecpseq_notify", 0, 1, icbid, 0)
+ turnoff
+endin
+
+#end
diff --git a/site/udo/scss/mixer/_effects.udo b/site/udo/scss/mixer/_effects.udo
new file mode 100755
index 0000000..bc29661
--- /dev/null
+++ b/site/udo/scss/mixer/_effects.udo
@@ -0,0 +1,247 @@
+#ifndef UDO_SCSS_MIXER_EFFECTS
+#define UDO_SCSS_MIXER_EFFECTS ##
+
+#include "/frequency_tools.udo"
+#include "/wavetables.udo"
+
+opcode _fxi_control, Sk, ii
+ ichannelindex, ieffectindex xin
+ SchanAppend = sprintf("_%d_%d", ichannelindex, ieffectindex)
+ kon = chnget:k(strcat("fxi_on", SchanAppend))
+ xout SchanAppend, kon
+endop
+
+opcode fxi_param, k, SS
+ SchanAppend, Sname xin
+ xout chnget:k(strcat(strcat("fxi_", Sname), SchanAppend))
+endop
+
+opcode fxi_param, i, SS
+ SchanAppend, Sname xin
+ xout chnget:i(strcat(strcat("fxi_", Sname), SchanAppend))
+endop
+
+gSeffectDefs = {{
+ {
+ "effects": [
+ {
+ "name": "Reverb",
+ "opcode": "fxi_reverb",
+ "parameters": [
+ {"name": "roomsize", "description": "Room size", "default": 0.3, "max": 1, "min": 0},
+ {"name": "hfdamp", "description": "High frequency damping", "default": 0.5, "max": 1, "min": 0}
+ ]
+ },
+ {
+ "name": "Frequency shifter 1",
+ "opcode": "fxi_freqshift1",
+ "parameters": [
+ {"name": "shift", "description": "Shift frequency", "default": 0, "max": 2000, "min": -2000}
+ ]
+ },
+ {
+ "name": "Frequency shifter 2",
+ "opcode": "fxi_freqshift2",
+ "parameters": [
+ {"name": "shift", "description": "Shift frequency", "default": 0, "max": 2000, "min": -2000}
+ ]
+ },
+ {
+ "name": "Ring modulator",
+ "opcode": "fxi_ringmod",
+ "parameters": [
+ {"name": "freq", "description": "Frequency", "default": 440, "max": 10000, "min": 20}
+ ]
+
+ },
+ {
+ "name": "Bit crusher",
+ "opcode": "fxi_bitcrush",
+ "parameters": [
+ {"name": "crush", "description": "Bits", "default": 8, "max": 64, "min": 2, "type": "int"}
+ ]
+ },
+ {
+ "name": "Delay tuner",
+ "opcode": "fxi_delaytuner",
+ "parameters": [
+ {"name": "freq", "description": "Frequency", "default": 110, "max": 4000, "min": 50},
+ {"name": "feedback", "description": "Feedback", "default": 0.4, "max": 0.9, "min": 0}
+ ]
+ },
+ {
+ "name": "Low pass filter",
+ "opcode": "fxi_lowpass",
+ "parameters": [
+ {"name": "freq", "description": "Frequency", "default": 10000, "max": 20000, "min": 20}
+ ]
+ },
+ {
+ "name": "Highpass filter",
+ "opcode": "fxi_highpass",
+ "parameters": [
+ {"name": "freq", "description": "Frequency", "default": 1000, "max": 20000, "min": 20}
+ ]
+ },
+ {
+ "name": "Simple chorus",
+ "opcode": "fxi_simplechorus",
+ "parameters": [
+ {"name": "rateL", "description": "Rate (Left)", "default": 0.01, "max": 0.1, "min": 0.001},
+ {"name": "rateR", "description": "Rate (Right)", "default": 0.01, "max": 0.1, "min": 0.001}
+ ]
+ },
+ {
+ "name": "Simple delay",
+ "opcode": "fxi_simpledelay",
+ "parameters": [
+ {"name": "time", "description": "Delay time", "default": 1000, "max": 4000, "min": 1}
+ ]
+ },
+ {
+ "name": "Waveshaping distortion",
+ "opcode": "fxi_distort",
+ "parameters": [
+ {"name": "distortion", "description": "Amount", "default": 0.1, "max": 2, "min": 0.001},
+ {"name": "wave", "description": "Wave shape", "options": [
+ {"name": "Sine", "value": 0},
+ {"name": "Square", "value": 1},
+ {"name": "Saw", "value": 2}
+ ]}
+ ]
+ }
+ ]
+ }
+}}
+giJinsertDefs = jsonloads(gSeffectDefs)
+
+
+
+opcode fxi_reverb, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ kroomsize = fxi_param:k(SchanAppend, "roomsize")
+ khfdamp = fxi_param:k(SchanAppend, "hfdamp")
+ aL, aR freeverb aL, aR, kroomsize, khfdamp
+ endif
+ xout aL, aR
+endop
+
+
+opcode fxi_simpledelay, aa, aaii ; TODO have beats delay option
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ ktime = fxi_param:k(SchanAppend, "time")
+ aL vdelay aL, ktime, 4000
+ aR vdelay aR, ktime, 4000
+ endif
+ xout aL, aR
+endop
+
+opcode fxi_distort, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ kdist = fxi_param:k(SchanAppend, "distortion")
+ kwave = fxi_param:k(SchanAppend, "wave") ; TODO k to i... reinit??
+ aL distort aL, kdist, gifnSine ;ifn
+ aR distort aR, kdist, gifnSine ;ifn
+ endif
+ xout aL, aR
+endop
+
+
+opcode fxi_freqshift1, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ kshift = fxi_param:k(SchanAppend, "shift")
+ aL, aR freqshift1 aL, aR, kshift
+ endif
+ xout aL, aR
+endop
+
+
+opcode fxi_freqshift2, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ kshift = fxi_param:k(SchanAppend, "shift")
+ aL, aR freqshift2 aL, aR, kshift
+ endif
+ xout aL, aR
+endop
+
+
+opcode fxi_ringmod, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ kfreq = fxi_param:k(SchanAppend, "freq")
+ aL, aR ringmod1 aL, aR, kfreq
+ endif
+ xout aL, aR
+endop
+
+
+opcode fxi_bitcrush, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ kcrush = fxi_param:k(SchanAppend, "crush")
+ aL, aR bitcrush aL, aR, kcrush
+ endif
+ xout aL, aR
+endop
+
+
+opcode fxi_delaytuner, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ kfreq = fxi_param:k(SchanAppend, "freq")
+ kfeedback = fxi_param:k(SchanAppend, "feedback")
+ aL, aR delaytuner aL, aR, kfreq, kfeedback
+
+ endif
+ xout aL, aR
+endop
+
+
+opcode fxi_lowpass, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ kfreq = fxi_param:k(SchanAppend, "freq")
+ aL butterlp aL, kfreq
+ aR butterlp aR, kfreq
+ endif
+ xout aL, aR
+endop
+
+
+opcode fxi_highpass, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ kfreq = fxi_param:k(SchanAppend, "freq")
+ aL butterhp aL, kfreq
+ aR butterhp aR, kfreq
+ endif
+ xout aL, aR
+endop
+
+opcode fxi_simplechorus, aa, aaii
+ aL, aR, ichannelindex, ieffectindex xin
+ SchanAppend, kon _fxi_control ichannelindex, ieffectindex
+ if (kon == 1) then
+ krateL = fxi_param:k(SchanAppend, "rateL")
+ krateR = fxi_param:k(SchanAppend, "rateR")
+ aL, aR simplechorus aL, aR, krateL, krateR
+ endif
+ xout aL, aR
+endop
+
+#end
diff --git a/site/udo/scss/mixer/base.udo b/site/udo/scss/mixer/base.udo
new file mode 100755
index 0000000..9721357
--- /dev/null
+++ b/site/udo/scss/mixer/base.udo
@@ -0,0 +1,253 @@
+#ifndef UDO_SCSS_MIXER_BASE
+#define UDO_SCSS_MIXER_BASE ##
+/*
+ SCSS mixer and dynamic insert system
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "/bussing.udo"
+#include "/interop.udo"
+
+
+
+gSchannelHeader = {{
+ ichannelindex = p4
+ kamp chnget sprintf("mxamp%d", ichannelindex)
+ kpan chnget sprintf("mxpan%d", ichannelindex)
+ aL, aR bus_read sprintf("mxchan%d", ichannelindex)
+ kenv linsegr 0, 0.05, 1, p3, 1, 0.1, 0
+}}
+
+
+gSchannelFooter = {{
+ bus_masterout(aL*kenv*(1-kpan)*kamp, aR*kenv*kpan*kamp)
+endin
+}}
+
+
+; default globals: set in mx_boot
+gichannelnumber = -1
+gisendchannels = -1
+gimixermaxinserts = -1
+giinserts[][] init 1, 1
+gimxinitialised[] init 1, 1
+
+
+; actual effects and definitions
+#include "/scss/mixer/_effects.udo"
+/*
+ Set insert for channel and insert index ; apply defaults
+*/
+opcode apply_insert, 0, iii
+ iinsertdefindex, ichannelindex, iinsertindex xin
+
+ giinserts[ichannelindex][iinsertindex] = iinsertdefindex
+
+ ; set defaults
+ iJparams = jsonptr(giJinsertDefs, sprintf("/effects/%d/parameters", iinsertdefindex))
+ index = 0
+ while (index < jsonsize(iJparams)) do
+ iJparam jsonget iJparams, index ;jsonptr(iJparams, sprintf("/%d", index))
+ SparameterName jsongetval iJparam, "name"
+ idefault jsongetval iJparam, "default"
+ chnset idefault, sprintf("fxi_%s_%d_%d", SparameterName, ichannelindex, iinsertindex)
+ jsondestroy(iJparam)
+ index += 1
+ od
+ jsondestroy(iJparams)
+
+ ; initial state is on
+ chnset 1, sprintf("fxi_on_%d_%d", ichannelindex, iinsertindex)
+endop
+
+
+
+instr mx_effect_definitions_get
+ icbid = p4
+ iJson = jsonloads(gSeffectDefs)
+ jsoninsertval iJson, "cbid", icbid
+ io_sendstring("callback", jsondumps(iJson, 0))
+ turnoff
+endin
+
+instr mx_insert_info_get
+ icbid = p4
+ indexchan = p5
+
+ inserts[] init gimixermaxinserts
+ indexinsert = 0
+ while (indexinsert < gimixermaxinserts) do
+ inserts[indexinsert] = giinserts[indexchan][indexinsert]
+ indexinsert += 1
+ od
+ iJson = jsoninit()
+ jsoninsertval iJson, "cbid", icbid
+ jsoninsertval iJson, "inserts", inserts
+ io_sendstring("callback", jsondumps(iJson, 0))
+ turnoff
+endin
+
+
+/*
+ recompile channel instrument, inserting insert effects as specified
+*/
+instr mx_recompile_channel
+ ichannelindex = p4
+ SinstrName = sprintf("mixer_channel%d", ichannelindex)
+ Sinstr = sprintf("instr %s\n%s", SinstrName, gSchannelHeader)
+ index = 0
+ while (index < gimixermaxinserts) do
+ iinsert = giinserts[ichannelindex][index]
+ if (iinsert != -1) then
+ Sopcode jsonptrval giJinsertDefs, sprintf("/effects/%d/opcode", iinsert)
+ Sinstr = strcat(Sinstr, sprintf("aL, aR %s aL, aR, ichannelindex, %d\n", Sopcode, index))
+ endif
+ index += 1
+ od
+
+ ; initial amps and pans if not initialised
+ if (gimxinitialised[ichannelindex] == 0) then
+ gimxinitialised[ichannelindex] = 1
+ chnset 0.8, sprintf("mxamp%d", ichannelindex)
+ chnset 0.5, sprintf("mxpan%d", ichannelindex)
+ endif
+
+ ; channel footer with global sends
+ SchannelFooter = ""
+ isendindex = 0
+ if (gisendchannels != 0 && ichannelindex < gichannelnumber - 1) then
+ SchannelFooter = ""
+ while (isendindex < gisendchannels) do
+ SchannelFooter = strcat(SchannelFooter, sprintf("ksend%d chnget sprintf(\"mxsend%%d_%d\", ichannelindex)\nbus_mix \"mxchan%d\", aL*ksend%d, aR*ksend%d\n", isendindex, isendindex, gichannelnumber + isendindex, isendindex, isendindex))
+ isendindex += 1
+ od
+ Sinstr = strcat(Sinstr, SchannelFooter)
+ endif
+ Sinstr = strcat(Sinstr, gSchannelFooter)
+ ires compilestr Sinstr
+ turnoff2 SinstrName, 0, 1
+ schedule SinstrName, 0.02, 3600, ichannelindex
+ turnoff
+endin
+
+
+instr mx_setstate
+ Sjson = p4
+ iJson = jsonloads(Sjson)
+
+endin
+
+
+instr mx_getstate
+ iJsonCSChannels = jsoninit()
+ iJsonBlankArray = jsonloads("[]")
+ iJsonInserts = jsonloads("[]")
+ ichannelindex = 0
+ SchanDefaults[] fillarray "mxamp", "mxpan"
+ while (ichannelindex < gichannelnumber + gisendchannels) do
+ ichandefaultindex = 0
+ while (ichandefaultindex < lenarray(SchanDefaults)) do
+ jsoninsertval iJsonCSChannels, sprintf("%s%d", SchanDefaults[ichandefaultindex], ichannelindex), chnget:i(sprintf("%s%d", SchanDefaults[ichandefaultindex], ichannelindex))
+ ichandefaultindex += 1
+ od
+
+ jsonptradd iJsonInserts, sprintf("/%d", ichannelindex), iJsonBlankArray
+
+ indexinsert = 0
+ while (indexinsert < gimixermaxinserts) do
+ iinsert = giinserts[ichannelindex][indexinsert]
+ jsonptraddval iJsonInserts, sprintf("/%d/%d", ichannelindex, indexinsert), iinsert
+ if (iinsert != -1) then
+ iJparams = jsonptr(giJinsertDefs, sprintf("/effects/%d/parameters", iinsert))
+ index = 0
+ while (index < jsonsize(iJparams)) do
+ iJparam jsonget iJparams, index
+ SparameterName jsongetval iJparam, "name"
+ SparameterChan = sprintf("fxi_%s_%d_%d", SparameterName, ichannelindex, indexinsert)
+ jsoninsertval iJsonCSChannels, SparameterChan, chnget:i(SparameterChan)
+ jsondestroy(iJparam)
+ index += 1
+ od
+ jsondestroy(iJparams)
+
+ endif
+ indexinsert += 1
+ od
+
+ ichannelindex += 1
+ od
+ iJson = jsoninit()
+ jsoninsertval iJson, "channelnumber", gichannelnumber
+ jsoninsertval iJson, "sendchannels", gisendchannels
+ jsoninsertval iJson, "maxinserts", gimixermaxinserts
+ jsoninsert iJson, "cschannels", iJsonCSChannels
+ jsoninsert iJson, "inserts", iJsonInserts
+
+ prints jsondumps(iJson, 1)
+
+ jsondestroy(iJsonBlankArray)
+ jsondestroy(iJsonCSChannels)
+ jsondestroy(iJsonInserts)
+ jsondestroy(iJson)
+ turnoff
+
+endin
+
+
+instr mx_alter_insert
+ ichannelindex = p4
+ iinsertindex = p5
+ iinsertdefindex = p6
+
+ apply_insert iinsertdefindex, ichannelindex, iinsertindex
+
+ ;schedule "mx_sendstate", 0, 1
+ schedule "mx_recompile_channel", 0, 1, ichannelindex
+ turnoff
+endin
+
+instr mx_move_insert
+ ichannelindex = p4
+ iinsertindex_from = p5
+ iinsertindex_to = p6
+
+ ; keep state...
+endin
+
+
+/*
+ set up channels
+*/
+instr mx_boot
+ gichannelnumber = (p4 == 0) ? 12 : p4
+ gisendchannels = (p5 == 0) ? 2 : p5
+ gimixermaxinserts = (p6 == 0) ? 6 : p6
+
+ giinserts[][] init gichannelnumber + gisendchannels, gimixermaxinserts
+
+ ; set all to -1 as 0 is a valid entry
+ index1 = 0
+ while (index1 < lenarray(giinserts, 1)) do
+ index2 = 0
+ while (index2 < lenarray(giinserts, 2)) do
+ giinserts[index1][index2] = -1
+ index2 += 1
+ od
+ index1 += 1
+ od
+
+ ; if initialised, don't reset amp/pan etc
+ gimxinitialised[] init gichannelnumber + gisendchannels
+
+ ichannelindex = 0
+ while (ichannelindex < gichannelnumber + gisendchannels) do
+ schedule "mx_recompile_channel", 0, 1, ichannelindex
+ ichannelindex += 1
+ od
+ turnoff
+endin
+
+#end
diff --git a/site/udo/scss/mixer/test.csd b/site/udo/scss/mixer/test.csd
new file mode 100755
index 0000000..1fc6099
--- /dev/null
+++ b/site/udo/scss/mixer/test.csd
@@ -0,0 +1,41 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 48000
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "scss/mixer/base.udo"
+
+instr test_boot
+ schedule("mx_boot", 0, 1) ; defaults: 12 channels
+ schedule("test_set", 0.5, 1)
+endin
+
+instr test_set
+ schedule("mx_alter_insert", 0.1, 1, 12, 0, 0) ; reverb on return 1 fx 1 (chan 12)
+ schedule("mx_alter_insert", 0, 1, 12, 1, 3) ; ring mod on return 1 fx 0 (chan 12)
+ chnset 1, "mxsend0_0" ; send chan 0 to reverb
+ schedule("test_sound", 0.5, 50) ; test sound
+ schedule("mx_getstate", 1, 1) ; test state output
+endin
+
+
+instr test_sound
+ prints "\n\ntest sound\n\n"
+ aL, aR diskin2 "d:/temp/drive.wav", 1, 0, 1
+ bus_mix("mxchan0", aL, aR)
+
+ kfreq = abs:k(oscil:k(2200, 1)) + 220
+ chnset kfreq, "fxi_freq_12_1"
+endin
+
+</CsInstruments>
+<CsScore>
+i"test_boot" 0 60
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/udo/scss/persistence.udo b/site/udo/scss/persistence.udo
new file mode 100755
index 0000000..075b06a
--- /dev/null
+++ b/site/udo/scss/persistence.udo
@@ -0,0 +1,366 @@
+#ifndef UDO_SCSS_PERSISTENCE
+#define UDO_SCSS_PERSISTENCE ##
+/*
+ SONICS Category Sequencer System
+ Persistence: saving and loading state to database and FS
+
+ Designed for use with an API host to/from which callbacks and JSON states can be exchanged
+
+ Requires JSON opcodes
+ https://git.1bpm.net/csound-json
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+#include "sequencing_melodic_persistence.udo"
+#include "table_tools.udo"
+#include "pgdb.udo"
+
+opcode scss_json2tab, 0, ii
+ iJson, ifn xin
+ if (jsontype(iJson) == 4) then
+ iarray[] jsonarrval iJson
+ copya2ftab iarray, ifn
+ endif
+endop
+
+opcode scss_json2tab, 0, iiS
+ iJsonTop, ifn, Skey xin
+ iJson = jsonget(iJsonTop, Skey)
+ scss_json2tab(iJson, ifn)
+ jsondestroy(iJson)
+endop
+
+opcode scss_tabarr2json, 0, iSi[][]
+ iJson, Srelname, ifns[][] xin
+ iJarrTop = jsonloads("[]")
+ index = 0
+ while (index < lenarray(ifns, 1)) do
+ iJarrSub = jsonloads("[]")
+ index2 = 0
+ while (index2 < lenarray(ifns, 2)) do
+ iJtable = jsonloads(tab_serialise(ifns[index][index2]))
+ jsonptradd iJarrSub, sprintf("/%d", jsonsize(iJarrSub)), iJtable
+ index2 += 1
+ od
+ index += 1
+ jsonptradd iJarrTop, sprintf("/%d", jsonsize(iJarrTop)), iJarrSub
+ jsondestroy(iJarrSub)
+ od
+ jsoninsert iJson, Srelname, iJarrTop
+ jsondestroy(iJarrTop)
+endop
+
+
+opcode scss_json2tabarr, i[][], iSi[][]
+ iJsonTop, Srelname, ifns[][] xin
+ iJson = jsonget(iJsonTop, Srelname)
+ isize = jsonsize(iJson)
+ index = 0
+ while (index < isize) do
+ iJsonSub = jsonget(iJson, index)
+ isize2 = jsonsize(iJsonSub)
+ index2 = 0
+ while (index2 < isize2) do
+ iJtable = jsonget(iJsonSub, index2)
+
+ iarray[] jsonarrval iJsonSub
+ copya2ftab iarray, ifns[index][index2]
+ ;tab_unserialise(jsondumps(iJtable, 0), ifns[index][index2])
+ jsondestroy(iJtable)
+ index2 += 1
+ od
+ jsondestroy(iJsonSub)
+ index += 1
+ od
+ jsondestroy(iJson)
+ xout ifns
+endop
+
+
+/*
+ Set parameters based on a JSON object with key as channel name and value as channel value to be set
+
+ scss_setparamstate iJsonInput
+
+ iJsonInput JSON object of channel values
+*/
+opcode scss_setparamstate, 0, i
+ iJsonInput xin
+ Skeys[] jsonkeys iJsonInput
+ index = 0
+ while (index < lenarray(Skeys)) do
+ Sparam = Skeys[index]
+ chnset jsongetval:i(iJsonInput, Sparam), Sparam
+ index += 1
+ od
+endop
+
+
+
+/*
+ Get parameters from a SCSS definition JSON object and append current values to iJsonOutput using channel prefix Sprefix
+
+ _scss_getparams iJsonInput, iJsonOutput, Sprefix
+
+ iJsonInput object to evaluate; should have an array with key "parameters" featuring objects which have a key "name" specifying parameter name
+ iJsonOutput output object to add values to (key is channel name, value is current value)
+ Sprefix parameter prefix to use for channel name
+*/
+opcode _scss_getparams, 0, iiS
+ iJsonInput, iJsonOutput, Sprefix xin
+ SparameterPointer = "/parameters"
+ if (jsonptrhas(iJsonInput, SparameterPointer) == 1) then
+ iJsonParameters = jsonptr(iJsonInput, SparameterPointer)
+ iparamsize = jsonsize(iJsonParameters)
+ indexparam = 0
+ while (indexparam < iparamsize) do
+ SparamName jsonptrval iJsonParameters, sprintf("/%d/name", indexparam)
+ Sparam = sprintf("%s_%s", Sprefix, SparamName)
+ jsoninsertval iJsonOutput, Sparam, chnget:i(Sparam)
+ indexparam += 1
+ od
+ jsondestroy(iJsonParameters)
+ endif
+endop
+
+
+/*
+ Get all registered parameters in giscss_stateJson, and get current channel values,
+ returning an object with key as channel name and value as channel value
+
+ iJsonOutput scss_getparamstate
+
+ iJsonOutput JSON object of channel values
+*/
+opcode scss_getparamstate, i, 0
+ iJsonOutput = jsoninit()
+
+
+ ; global parameters
+ _scss_getparams(giscss_stateJson, iJsonOutput, "scss")
+
+ ; categories
+ iJsonCategories = jsonptr(giscss_stateJson, "/categories")
+ icatnum = jsonsize(iJsonCategories)
+ jsondestroy(iJsonCategories)
+ index = 0
+ while (index < icatnum) do
+ iJsonCategory = jsonptr(giscss_stateJson, sprintf("/categories/%d", index))
+ Scategory jsonptrval iJsonCategory, "/name"
+
+ ; category parameters
+ _scss_getparams(iJsonCategory, iJsonOutput, Scategory)
+
+ ; items/instruments
+ iJsonItems = jsonptr(iJsonCategory, "/items")
+ iinstrnum = jsonsize(iJsonItems)
+ indexItem = 0
+ while (indexItem < iinstrnum) do
+ iJsonItem = jsonptr(iJsonItems, sprintf("/%d", indexItem))
+ Sinstrument = jsongetval(iJsonItem, "name")
+ _scss_getparams(iJsonItem, iJsonOutput, Sinstrument)
+ jsondestroy(iJsonItem)
+ indexItem += 1
+ od
+ jsondestroy(iJsonItems)
+ jsondestroy(iJsonCategory)
+ index += 1
+ od
+ xout iJsonOutput
+endop
+
+
+
+/*
+ Get sequencing state as JSON object
+
+ iJsonSeq scss_getseqstate
+
+ iJsonSeq object of sequencing data
+*/
+opcode scss_getseqstate, i, 0
+ iJsonSeq = jsoninit()
+ scss_tabarr2json(iJsonSeq, "giscss_stfn_trig", giscss_stfn_trig)
+ scss_tabarr2json(iJsonSeq, "giscss_stfn_dur", giscss_stfn_dur)
+ scss_tabarr2json(iJsonSeq, "giscss_stfn_params", giscss_stfn_params)
+
+ Skeys[] fillarray "giscss_st_size", "giscss_st_slots", "giscss_st_paramnumber" ; giscss_stfn_temp", "giscss_stfn_param_temp"
+ ivalues[] fillarray giscss_st_size, giscss_st_slots, giscss_st_paramnumber ; giscss_stfn_temp giscss_stfn_param_temp
+ jsoninsertval(iJsonSeq, Skeys, ivalues)
+ xout iJsonSeq
+endop
+
+
+
+/*
+ Set sequencing state from JSON object
+
+ scss_setseqstate iJsonSeq
+
+ iJsonSeq object of sequencing data
+*/
+opcode scss_setseqstate, 0, i
+ iJsonSeq xin
+
+ giscss_stfn_trig scss_json2tabarr iJsonSeq, "giscss_stfn_trig", giscss_stfn_trig
+ giscss_stfn_dur scss_json2tabarr iJsonSeq, "giscss_stfn_dur", giscss_stfn_dur
+ giscss_stfn_params scss_json2tabarr iJsonSeq, "giscss_stfn_params", giscss_stfn_params
+
+ giscss_st_size = jsongetval:i(iJsonSeq, "giscss_st_size")
+ giscss_st_slots = jsongetval:i(iJsonSeq, "giscss_st_slots")
+ giscss_st_paramnumber = jsongetval:i(iJsonSeq, "giscss_st_paramnumber")
+endop
+
+
+
+opcode scss_getstate, i, ppppp
+ igetsequencing, igetparameters, igetmelstate, igetinstrstate, igetcatenabled xin
+
+ iJson = jsoninit()
+
+ if (igetsequencing == 1) then
+ iJsonSequencing = scss_getseqstate()
+ jsoninsert(iJson, "sequencing", iJsonSequencing)
+ jsondestroy(iJsonSequencing)
+ endif
+
+ if (igetparameters == 1) then
+ iJsonParameters = scss_getparamstate()
+ jsoninsert(iJson, "parameters", iJsonParameters)
+ jsondestroy(iJsonParameters)
+ endif
+
+ if (igetmelstate == 1) then
+ iJsonMelstate = mel_getstate_json()
+ jsoninsert(iJson, "melstate", iJsonMelstate)
+ jsondestroy(iJsonMelstate)
+ endif
+
+
+ if (igetinstrstate == 1) then
+ iJinstrState = jsonloads(tab_serialise(giscss_instrState))
+ jsoninsert(iJson, "giscss_instrState", iJinstrState)
+ jsondestroy(iJinstrState)
+ endif
+
+ if (igetcatenabled == 1) then
+ iJcatEnabled = jsonloads(tab_serialise(giscss_catEnabled))
+ jsoninsert(iJson, "giscss_catEnabled", iJcatEnabled)
+ jsondestroy(iJcatEnabled)
+ endif
+
+ xout iJson
+endop
+
+
+
+opcode scss_setstate, 0, ippppp
+ iJson, isetsequencing, isetparameters, isetmelstate, isetinstrstate, isetcatenabled xin
+
+ if (isetsequencing == 1 && jsonptrhas(iJson, "/sequencing") == 1) then
+ iJsonSequencing = jsonget(iJson, "sequencing")
+ scss_setseqstate(iJsonSequencing)
+ jsondestroy(iJsonSequencing)
+ endif
+
+ if (isetparameters == 1 && jsonptrhas(iJson, "/parameters") == 1) then
+ iJsonParameters = jsonget(iJson, "parameters")
+ scss_setparamstate(iJsonParameters)
+ jsondestroy(iJsonParameters)
+ endif
+
+ if (isetmelstate == 1 && jsonptrhas(iJson, "/melstate") == 1) then
+ iJsonMelstate = jsonget(iJson, "melstate")
+ mel_setstate_json(iJsonMelstate)
+ jsondestroy(iJsonMelstate)
+ endif
+
+ if (isetinstrstate == 1 && jsonptrhas(iJson, "/giscss_instrState") == 1) then
+ iJinstrState = jsonget(iJson, "giscss_instrState")
+ endif
+
+ if (isetcatenabled == 1 && jsonptrhas(iJson, "/giscss_catEnabled") == 1) then
+ iJcatEnabled = jsonget(iJson, "giscss_catEnabled")
+ endif
+
+endop
+
+
+
+/*
+ Get the current values of all registered parameters, returning callback ID to host and an object with key "parameters"
+ containing keys as the channel names and values as the channel values
+
+ p4 callback ID
+*/
+instr scss_getparamstate
+ icbid = p4
+ iJson = jsoninit()
+ iJsonState = scss_getparamstate()
+ jsoninsert iJson, "parameters", iJsonState
+ jsoninsertval iJson, "cbid", icbid
+ jsoninsertval iJson, "status", "complete"
+ io_sendstring("callback", jsondumps(iJson, 0))
+ jsondestroy(iJsonState)
+ jsondestroy(iJson)
+ turnoff
+endin
+
+
+
+/*
+ Save state to database
+
+ p4 callback ID
+ p5 reference name of the state to save; blank is accepted and saves as SCSS_NAME
+*/
+instr scss_savestate_db
+ icbid = p4
+ Sreference = strcat("$SCSS_NAME||", strget(p5))
+
+ ; save state values
+ iJsonState = scss_getstate()
+ Squery = sprintf("DELETE FROM savejson WHERE name = '%s' AND unit = 'scss_state'; INSERT INTO savejson (name, data, unit, created) VALUES ('%s', '%s', 'scss_state', current_timestamp)",\
+ Sreference, Sreference, jsondumps(iJsonState, 0)\
+ )
+ dbexec gidb, Squery
+ jsondestroy(iJsonState)
+
+
+ ; return callback ID to host
+ iJson = jsoninit()
+ jsoninsertval iJson, "cbid", icbid
+ jsoninsertval iJson, "status", "complete"
+ io_sendstring("callback", jsondumps(iJson, 0))
+ turnoff
+endin
+
+
+
+
+/*
+ Load parameter state from database, returning JSON to host as in the instrument scss_getparamstate
+
+ p4 callback ID
+ p5 reference name of the state to load; blank is accepted and loads as SCSS_NAME
+*/
+instr scss_loadstate_db
+ icbid = p4
+ Sreference = strcat("$SCSS_NAME||", strget(p5))
+
+ ; load parameter values
+ Squery = sprintf("SELECT data::text FROM savejson WHERE unit = 'scss_state' AND name = '%s'", Sreference)
+ Sresult dbscalar gidb, Squery
+ iJson = jsonloads(Sresult)
+ scss_setstate(iJson)
+ jsondestroy(iJson)
+
+ ; returns state data and callback ID to host
+ schedule("scss_getparamstate", 0, 1, icbid)
+ turnoff
+endin
+
+
+#end
diff --git a/site/udo/scss/scss_persistence_test.csd b/site/udo/scss/scss_persistence_test.csd
new file mode 100755
index 0000000..372ba76
--- /dev/null
+++ b/site/udo/scss/scss_persistence_test.csd
@@ -0,0 +1,100 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+</CsOptions>
+<CsInstruments>
+sr = 48000
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#define SCSS_NAME #default#
+#include "scss/base.udo"
+
+
+
+
+icategory = scss_registercategory("sine", "play_sine1")
+
+scss_registerinstr(icategory, ({{
+ {
+ "name": "play_sine1",
+ "parameters": [
+ {"name": "frequency", "default": 440, "max": 880, "min": 220}
+ ]
+ }
+}}))
+instr play_sine1
+ icategoryid = p4 ; just used by scss_seqparam(iparamnum)
+ itimeindex = p5
+
+ kamp line 0.2, p3, 0
+ a1 oscil kamp, chnget:i("play_sine1_frequency")
+ scss_catout(a1, a1)
+endin
+
+
+scss_registerinstr(icategory, ({{
+ {
+ "name": "play_sine2",
+ "parameters": [
+ {"name": "frequency", "default": 4400, "max": 8800, "min": 220}
+ ]
+ }
+}}))
+instr play_sine2
+ kamp line 0, p3, 0.2
+ a1 oscil kamp, 880
+ scss_catout(a1, a1)
+endin
+
+
+icategory = scss_registercategory("bass", "play_bass1")
+
+
+scss_registerinstr(icategory, ({{
+ {
+ "name": "play_bass1",
+ "parameters": [
+ {"name": "wobble", "default": 0.5, "max": 1, "min": 0.1}
+ ]
+ }
+}}))
+instr play_bass1
+ kamp line 0.2, p3, 0
+ a1 oscil kamp, 220
+ scss_catout(a1, a1)
+endin
+
+
+scss_registerinstr(icategory, ({{
+ {
+ "name": "play_bass2"
+ }
+}}))
+instr play_bass2
+ kamp line 0.2, p3, 0
+ a1 oscil kamp, 110
+ scss_catout(a1, a1)
+endin
+
+
+
+instr 1
+ ;Squery = {{select f_savejsontest('{"ass":1}')}}
+ ;prints Squery
+ ;dbexec gidb, Squery
+ ;schedule("scss_savestate_db", 0, 1, 123, "test")
+ ;iJp1 = scss_getstate(1,1,1,1,1)
+ ;Sd1 = jsondumps(iJp1)
+ ;prints Sd1
+ schedule("scss_savestate_db", 0, 1)
+endin
+
+</CsInstruments>
+<CsScore>
+i1 0.1 1
+
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/udo/scss/scss_test.csd b/site/udo/scss/scss_test.csd
new file mode 100755
index 0000000..72a3bd2
--- /dev/null
+++ b/site/udo/scss/scss_test.csd
@@ -0,0 +1,125 @@
+<CsoundSynthesizer>
+<CsOptions>
+-odac
+-m0
+-M0
+</CsOptions>
+<CsInstruments>
+sr = 48000
+ksmps = 64
+nchnls = 2
+0dbfs = 1
+seed 0
+
+#include "wavetables.udo"
+
+#define SCSS_MIDI ##
+
+
+#define SCSS_BOOT_INSTRUMENT #run_shit#
+#include "scss/base.udo"
+
+
+
+icategory = scss_registercategory("sine", "play_sine1")
+
+scss_registerinstr(icategory, ({{
+ {
+ "name": "play_sine1",
+ "parameters": [
+ {"name": "frequency", "default": 440, "max": 880, "min": 220}
+ ]
+ }
+}}))
+instr play_sine1
+ icategoryid = p4 ; just used by scss_seqparam(iparamnum)
+ itimeindex = p5
+
+ kamp line 0.2, p3, 0
+ a1 oscil kamp, chnget:i("play_sine1_frequency")
+ scss_catout(a1, a1)
+endin
+
+
+scss_registerinstr(icategory, ({{
+ {
+ "name": "play_sine2",
+ "parameters": [
+ {"name": "frequency", "default": 4400, "max": 8800, "min": 220}
+ ]
+ }
+}}))
+instr play_sine2
+ kamp line 0, p3, 0.2
+ a1 oscil kamp, 880, gifnSquare
+ scss_catout(a1, a1)
+endin
+
+
+icategory = scss_registercategory("bass", "play_bass1")
+
+
+scss_registerinstr(icategory, ({{
+ {
+ "name": "play_bass1",
+ "parameters": [
+ {"name": "wobble", "default": 0.5, "max": 1, "min": 0.1}
+ ]
+ }
+}}))
+instr play_bass1
+ kamp line 0.2, p3, 0
+ a1 oscil kamp, 220
+ scss_catout(a1, a1)
+endin
+
+
+scss_registerinstr(icategory, ({{
+ {
+ "name": "play_bass2"
+ }
+}}))
+instr play_bass2
+ kamp line 0.2, p3, 0
+ a1 oscil kamp, 110
+ scss_catout(a1, a1)
+endin
+
+
+instr run_shit
+ prints "run shit\n"
+ index1 = 0
+ while (index1 < lenarray(giscss_stfn_trig, 1)) do
+ index2 = 0
+ while (index2 < lenarray(giscss_stfn_trig, 2)) do
+ seq_randtable giscss_stfn_trig[index1][index2]
+ seq_randtable giscss_stfn_dur[index1][index2]
+ index2 += 1
+ od
+ index1 += 1
+ od
+
+
+ prints "OK then\n\n\n"
+endin
+
+instr test_change1
+ prints "change 1\n"
+ kval line 120, p3, 160
+ chnset kval, "scss_bpm"
+endin
+
+
+instr test_change2
+ prints "change 2\n"
+ kval line 160, p3, 100
+ chnset kval, "scss_bpm"
+endin
+
+
+
+</CsInstruments>
+<CsScore>
+f0 z
+</CsScore>
+</CsoundSynthesizer> \ No newline at end of file
diff --git a/site/udo/scss/seqtable.udo b/site/udo/scss/seqtable.udo
new file mode 100755
index 0000000..99f586b
--- /dev/null
+++ b/site/udo/scss/seqtable.udo
@@ -0,0 +1,196 @@
+#ifndef UDO_SCSS_SEQTABLES
+#define UDO_SCSS_SEQTABLES ##
+
+
+
+
+/*
+; temp scratch replacement tables
+iscratchnum = 8
+gistfn_scratch[] init iscratchnum
+index = 0
+while (index < iscratchnum) do
+ gistfn_scratch[index] = ftgen(0, 0, -16, -2, 0)
+ index += 1
+od
+*/
+
+
+
+
+
+; statics
+/*
+gistfn_all ftgen 0, 0, -giscss_seqtable_size, -2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+gistfn_offbeat ftgen 0, 0, -giscss_seqtable_size, -2, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0
+gistfn_onbeat ftgen 0, 0, -giscss_seqtable_size, -2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0
+gisfn_2ndbeat ftgen 0, 0, -giscss_seqtable_size, -2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
+*/
+
+
+/*
+gSseq_names[] fillarray "Kick", "Snare", "Clap", "Hat", "Hat2", "Bass", "Sine", "OPL"
+giscss_stfn_src[][] init lenarray(gSseq_names), 4
+index = 0
+while (index < lenarray(giscss_stfn_src, 1)) do
+ index2 = 0
+ while (index2 < lenarray(giscss_stfn_src, 2)) do
+ giscss_stfn_src[index][index2] = ftgen(0, 0, -giscss_seqtable_size, -2, 0)
+ index2 += 1
+ od
+ index += 1
+od
+*/
+
+; automation tables for arbitrary assignment
+giscss_fn_automation[] init 8
+
+giscss_stfn_trig[][] init 1, 1
+giscss_stfn_dur[][] init 1, 1
+giscss_stfn_params[][] init 1, 1
+
+giscss_st_size = -1
+giscss_st_slots = -1
+giscss_stfn_temp = -1
+giscss_stfn_param_temp = -1
+giscss_st_paramnumber = -1
+opcode scss_st_boot, 0, ijj
+ icategorynum, iseqtable_size, islots xin
+ iseqtable_size = (iseqtable_size == -1) ? 16 : iseqtable_size
+ islots = (islots == -1) ? 4 : islots
+ iparamnumber = 4
+
+ giscss_st_size = iseqtable_size
+ giscss_st_slots = islots
+ giscss_st_paramnumber = iparamnumber
+ giscss_stfn_temp = ftgen(0, 0, -iseqtable_size, -2, 0)
+ giscss_stfn_param_temp = ftgen(0, 0, -(iseqtable_size*iparamnumber), -2, 0)
+
+ giscss_stfn_trig[][] init icategorynum, islots
+ giscss_stfn_dur[][] init icategorynum, islots
+ giscss_stfn_params[][] init icategorynum, islots
+
+ index1 = 0
+ while (index1 < icategorynum) do
+ index2 = 0
+ while (index2 < islots) do
+ giscss_stfn_trig[index1][index2] = ftgen(0, 0, -iseqtable_size, -2, 0)
+ giscss_stfn_dur[index1][index2] = ftgen(0, 0, -iseqtable_size, -2, 0)
+ giscss_stfn_params[index1][index2] = ftgen(0, 0, -(iseqtable_size*iparamnumber), -2, 0)
+ index2 += 1
+ od
+ index1 += 1
+ od
+
+ ; automation tables
+ iautomationtablesize = 1024
+ index = 0
+ while (index < lenarray(giscss_fn_automation)) do
+ giscss_fn_automation[index] = ftgen(0, 0, -iautomationtablesize, -7, 0)
+ index += 1
+ od
+endop
+
+
+
+
+; called from category instrument to get parameter
+opcode scss_seqparam, i, i
+ iparam xin
+ icategoryid = p4
+ itimeindex = p5
+ xout table:i((iparam * giscss_st_paramnumber) + itimeindex, giscss_stfn_params[icategoryid][0])
+endop
+
+
+
+
+opcode seqtable_copyin, 0, iijjj
+ icategoryid, islot, ifntrig, ifndur, ifnparam xin
+
+ if (ifntrig != -1) then
+ tableicopy giscss_stfn_trig[icategoryid][islot], ifntrig
+ endif
+
+ if (ifndur != -1) then
+ tableicopy giscss_stfn_dur[icategoryid][islot], ifndur
+ endif
+
+ if (ifnparam != -1) then
+ tableicopy giscss_stfn_params[icategoryid][islot], ifnparam
+ endif
+endop
+
+
+
+
+opcode scss_st_swap, 0, ii
+ icategoryid, islot xin
+
+ ; triggers
+ tableicopy giscss_stfn_temp, giscss_stfn_trig[icategoryid][0]
+ tableicopy giscss_stfn_trig[icategoryid][0], giscss_stfn_trig[icategoryid][islot]
+ tableicopy giscss_stfn_trig[icategoryid][islot], giscss_stfn_temp
+
+ ; durations
+ tableicopy giscss_stfn_temp, giscss_stfn_dur[icategoryid][0]
+ tableicopy giscss_stfn_dur[icategoryid][0], giscss_stfn_dur[icategoryid][islot]
+ tableicopy giscss_stfn_dur[icategoryid][islot], giscss_stfn_temp
+
+ ; parameters
+ tableicopy giscss_stfn_param_temp, giscss_stfn_params[icategoryid][0]
+ tableicopy giscss_stfn_params[icategoryid][0], giscss_stfn_params[icategoryid][islot]
+ tableicopy giscss_stfn_params[icategoryid][islot], giscss_stfn_param_temp
+
+endop
+
+
+
+opcode scss_st_swapall, 0, p
+ isrcslot xin
+ index = 0
+ while (index < lenarray(giscss_stfn_trig, 1)) do
+ scss_st_swap(index, isrcslot)
+ index += 1
+ od
+endop
+
+
+; host call instrument
+instr seqtable_swap
+ imode = p4 ; 0 = all, 1 = specified category id
+ isrcslot = p5 ; source index in giscss_stfn_src (eg 1 to 3)
+ icategoryid = p6 ; category ID to replace by, if mode is 1
+
+ if (imode == 0) then
+ scss_st_swapall isrcslot
+ else
+ scss_st_swap icategoryid, isrcslot
+ endif
+ turnoff
+endin
+
+
+
+
+
+
+/*
+ Add table numbers with names to a specified key in a target JSON object
+
+opcode seqtable_appendjson, 0, i
+ iJsontarget xin
+
+ iJson = jsoninit()
+ index = 0
+ while (index < lenarray(gSseq_names)) do
+ jsoninsertval(iJson, gSseq_names[index], getrow(giscss_stfn_src, index))
+ index += 1
+ od
+
+ jsoninsert(iJsontarget, "trigtables", iJson)
+ jsondestroy(iJson)
+endop
+*/
+#end
+
diff --git a/site/udo/sequencing.udo b/site/udo/sequencing.udo
new file mode 100755
index 0000000..ac4fd40
--- /dev/null
+++ b/site/udo/sequencing.udo
@@ -0,0 +1,329 @@
+#ifndef UDO_SEQUENCING
+#define UDO_SEQUENCING ##
+/*
+ Sequencing base
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+gkseq_tempo init 120 ; tempo BPM
+gkseq_beat init 0 ; trigger fired on each beat
+gkseq_beattime init 0 ; time in seconds of one beat (read only; set by BPM)
+gkseq_quartertime init 0 ; time in seconds of one quarter beat (read only; set by BPM)
+gkseq_beathz init 0 ; Hz of one beat (read only; set by BPM)
+gkseq_swing init 0.2 ; swing amount
+gkseq_on init 1
+
+/*
+ Instrument to control the main beat metronome and beat time globals
+*/
+instr _seq_manager
+ kseq_beat metro gkseq_tempo / 60
+ if (gkseq_on == 1) then
+ gkseq_beat = kseq_beat
+ endif
+ gkseq_beattime = 60 / gkseq_tempo
+ gkseq_quartertime = gkseq_beattime / 4
+ gkseq_beathz = (1 / 60) * gkseq_tempo
+endin
+;alwayson "_seq_manager" ; not available in web api
+schedule("_seq_manager", 0, -1)
+
+
+
+/*
+ Get the swung time for a given time, if appropriate. If the index given is a second 16th, time will be swung
+
+ kresult seq_swingtime ktime, kindex, kswing
+
+ kresult resulting time
+ ktime the time to consider
+ kindex beat index, beginning with 0
+ kswing the swing amount (0 to 1)
+*/
+opcode seq_swingtime, k, kkJ
+ ktime, kindex, kswing xin
+ kswing = (kswing == -1) ? gkseq_swing : kswing
+ if ((kindex+1) % 2 == 0) then
+ ktime = ktime + (gkseq_quartertime*kswing)
+ endif
+ xout ktime
+endop
+
+
+/*
+ Get the swung time for a given time, if appropriate. If the index given is a second 16th, time will be swung
+
+ iresult seq_swingtime itime, iindex, iswing
+
+ iresult resulting time
+ itime the time to consider
+ iindex beat index, beginning with 0
+ iswing the swing amount (0 to 1)
+*/
+opcode seq_swingtime, i, iij
+ itime, index, iswing xin
+ iswing = (iswing == -1) ? i(gkseq_swing) : iswing
+ if ((index+1) % 2 == 0) then
+ itime = itime + (i(gkseq_quartertime)*iswing)
+ endif
+ xout itime
+endop
+
+
+/*
+ Set the tempo in BPM
+ DEPRECATED: just use init or direct assignment to gkseq_tempo
+
+ seq_settempo ktempo
+
+ ktempo the tempo in BPM
+*/
+opcode seq_settempo, 0, k
+ ktempo xin
+ gkseq_tempo = ktempo
+endop
+
+
+/*
+ Set the tempo in BPM; typically for host control
+
+ p4 the tempo in BPM
+*/
+instr seq_settempo
+ itempo = p4
+ gkseq_tempo = itempo
+ turnoff
+endin
+
+
+
+
+/*
+ Basic sequencer: trigger an instrument on each beat
+
+ seq_basic SdespatchI
+
+ SdespatchI name of the instrument to trigger
+*/
+opcode seq_basic, 0, S
+ SdespatchI xin
+ schedkwhen gkseq_beat, 0, 0, SdespatchI, 0, 1
+endop
+
+
+
+/*
+ Basic swung sequencer: trigger an instrument on each 16th beat with
+ p4 as the cyclical index between 0 and 3
+ p5 as the total number of beats beginning at one (eg so modulus can be used to determine position etc)
+
+ seq_swing SdespatchI, kswing
+
+ SdespatchI name of the instrument to trigger
+ kswing swing amount (0 to 1)
+*/
+opcode seq_swing, 0, SJ
+ SdespatchI, kswing xin
+ kswing = (kswing == -1) ? gkseq_swing : kswing
+ kbeatnum init 1
+ if (gkseq_beat == 1) then
+ kswingamount = gkseq_quartertime*kswing
+ event "i", SdespatchI, 0, 1, 0, kbeatnum
+ event "i", SdespatchI, gkseq_quartertime+kswingamount, 1, 1, kbeatnum
+ event "i", SdespatchI, gkseq_quartertime*2, 1, 2, kbeatnum
+ event "i", SdespatchI, (gkseq_quartertime*3)+kswingamount, 1, 3, kbeatnum
+ kbeatnum += 1
+ endif
+endop
+
+
+
+/*
+ Basic array sequencer. Treat each index as a 16th, and if it is 1, trigger the despatch instrument
+
+ seq_array SdespatchI, karray[], kswing
+
+ SdespatchI name of the instrument to trigger
+ karray[] array of sequence information
+ kswing swing amount (0 to 1)
+*/
+opcode seq_array, 0, Sk[]k
+ SdespatchI, karray[], kswing xin
+ kindex init 0
+ if (gkseq_beat == 1) then
+ ktime = 0
+ kcount = 0
+ while (kcount < 4) do
+ if (karray[kindex] == 1) then
+ event "i", SdespatchI, seq_swingtime(ktime, kcount, kswing), 0.1
+ endif
+
+ if (kindex + 1 >= lenarray(karray)) then
+ kindex = 0
+ else
+ kindex += 1
+ endif
+ kcount += 1
+ ktime += gkseq_quartertime
+ od
+ endif
+endop
+
+
+/*
+ Parametric array sequencer. Treat each index of the first dimension as a 16th. The second dimension is as follows:
+ 0 trigger (1 is active)
+ 1 duration in seconds
+ 2 p4 onwards (can be as many p-fields as required to be passed to the despatch instrument)
+
+ seq_array2d SdespatchI, karray[][], kswing
+
+ SdespatchI name of the instrument to trigger
+ karray[][] 2D array of sequence information
+ kswing swing amount (0 to 1)
+*/
+opcode seq_array2d, 0, Sk[][]k
+ SdespatchI, karray[][], kswing xin
+ kindex init 0
+ if (gkseq_beat == 1) then
+ ktime = 0
+ kcount = 0
+ while (kcount < 4) do
+ if (karray[kindex][0] == 1) then
+ krow[] getrow karray, kindex
+ Scoreline sprintfk "i\"%s\" %f %f ", SdespatchI, seq_swingtime(ktime, kcount, kswing), krow[1]
+ if (lenarray(krow) > 2) then
+ kdx = 2
+ while (kdx < lenarray(krow)) do
+ Scoreline strcatk Scoreline, sprintfk("%f ", krow[kdx])
+ kdx += 1
+ od
+ endif
+ scoreline Scoreline, 1
+ endif
+
+ if (kindex + 1 >= lenarray(karray)) then
+ kindex = 0
+ else
+ kindex += 1
+ endif
+ kcount += 1
+ ktime += gkseq_quartertime
+ od
+ endif
+endop
+
+
+
+/*
+ Freak sequencer. Three iterations of generative triggers sent to despatch instruments
+
+ seq_freak SdespatchI1, SdespatchI2, SdespatchI3, kbeatdensity[], kbeatstrength[]
+
+ SdespatchI1 name of the primary instrument to trigger
+ SdespatchI2 name of the secondary instrument to trigger
+ SdespatchI3 name of the tertiary instrument to trigger
+*/
+opcode seq_freak, 0, SSSk[]k[]
+ SdespatchI1, SdespatchI2, SdespatchI3, kbeatdensity[], kbeatstrength[] xin
+
+ kbeat init 0
+ ktrig init 0
+ if (gkseq_beat == 1) then ; only on every 1st of 4 beats
+ if (kbeat == 0) then
+ ktrig = 1
+ kbeat += 1
+ elseif (kbeat == 3) then
+ kbeat = 0
+ else
+ kbeat += 1
+ endif
+
+ endif
+
+ if (ktrig == 1 && random:k(0, 1) < kbeatdensity[0]) then
+ ktrig = 0
+ ktime = 0
+ event "i", SdespatchI1, ktime, 1, random:k(kbeatstrength[0]*0.2, kbeatstrength[0])
+ kindex1 = 0
+ kitems1 random 0, 8
+ while (kindex1 < kitems1) do
+ if (random:k(0, 1) < kbeatdensity[1]) then
+ event "i", SdespatchI2, ktime, 1, random:k(kbeatstrength[1]*0.2, kbeatstrength[1])
+ endif
+ ktime2 = ktime + (gkseq_beattime/8/8)
+ kindex2 = 0
+ kitems2 random 0, 32
+ while (kindex2 < kitems2) do
+ if (random:k(0, 1) < kbeatdensity[2]) then
+ event "i", SdespatchI3, ktime2, 1, random:k(kbeatstrength[2]*0.2, kbeatstrength[2])
+ endif
+ ktime2 += gkseq_beattime/8/8
+ kindex2 += 1
+ od
+
+ ktime += gkseq_beattime/8
+ kindex1 += 1
+ od
+ endif
+endop
+
+
+/*
+ Bar and bargroup management
+
+ Each beat is counted upon a gkseq_beat trigger.
+ When the number of beats implies a bar has completed, the trigger gkseq_bar_trig is fired.
+ The position in the bar (beat number (0 to giseq_barlength - 1)) is available in gkseq_barbeat.
+
+ When the number of bars implies a bargroup has completed, the trigger gkseq_bargroup_trig is fired.
+ The position in the bargroup (bar number (0 to giseq_bargrouplength - 1)) is available in gkseq_bargroup.
+*/
+gkseq_bar_trig init 0 ; trigger
+gkseq_barbeat init -1 ; number
+giseq_barlength = 4
+
+gkseq_bargroup_trig init 0 ; trigger
+gkseq_bargroup init -1 ; number
+giseq_bargrouplength = 4
+
+instr _barmanager
+ kbarbeat init 0
+ gkseq_bar_trig = 0
+ gkseq_bargroup_trig = 0
+
+ if (gkseq_beat == 1) then
+ gkseq_barbeat = (gkseq_barbeat < (giseq_barlength-1) ? gkseq_barbeat + 1 : 0)
+ if (gkseq_barbeat == 0) then
+ gkseq_bar_trig = 1
+ gkseq_bargroup = (gkseq_bargroup < (giseq_bargrouplength-1) ? gkseq_bargroup + 1 : 0)
+ if (gkseq_bargroup == 0) then
+ gkseq_bargroup_trig = 1
+ endif
+ endif
+ endif
+endin
+;alwayson "_barmanager" ; not available in web api
+schedule("_barmanager", 0, -1)
+
+
+/*
+ metronome; first beat has a higher pitch
+
+ aout metronome [iamp=1]
+
+ aout metronome output
+ iamp optional amplitude
+*/
+opcode metronome, a, p
+ iamp xin
+ kamp loopseg gkseq_tempo/60, gkseq_beat, 0, 1, 0.2, 0, 0.8, 0, 0
+ aout oscil 0.1, (gkseq_barbeat == 0 ? 2000 : 1000)
+ xout aout * kamp * iamp
+endop
+
+
+#end
diff --git a/site/udo/sequencing_melodic.udo b/site/udo/sequencing_melodic.udo
new file mode 100755
index 0000000..d4a5205
--- /dev/null
+++ b/site/udo/sequencing_melodic.udo
@@ -0,0 +1,807 @@
+#ifndef UDO_MELSEQUENCING
+#define UDO_MELSEQUENCING ##
+
+/*
+ Melodic pattern sequencer base
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+#include "__config__.udo" ; using fftsize for tuning
+#include "chords.udo" ; chord data
+#include "sequencing.udo" ; sequencer base
+#include "interop.udo" ; for updating host with outvalue
+#include "wavetables.udo" ; for tuning
+
+; if these are set, then don't launch the manager automatically. sequencing_melodic_persistence will load accordingly
+#ifdef MEL_INITPATH
+ #define MEL_HASINIT ##
+#end
+#ifdef MEL_INITDB
+ #define MEL_HASINIT ##
+#end
+
+;-------------------------internal-globals--------------------------------------------------------------------------
+
+gimel_number init 12 ; number of melodic sections available
+
+gimel_state ftgen 0, 0, -4, -7, 0 ; state: current section, next section, current_step (gimel_number)
+gimel_chords ftgen 0, 0, -gimel_number, -7, 0 ; chord indexes from melodic.udo for each section
+gimel_notes ftgen 0, 0, -gimel_number, -7, 0 ; midi note numbers for each section
+gimel_lengths ftgen 0, 0, -gimel_number, -7, 0 ; lengths in beats for each section
+gimel_action1 ftgen 0, 0, -gimel_number, -7, 0 ; follow action 1 for each section: 0 = same, 1 = next, 2 = previous, 3 = random, 4 = specific section (section index + 4)
+gimel_action2 ftgen 0, 0, -gimel_number, -7, 0 ; follow action 2 for each section
+gimel_actionthreshold ftgen 0, 0, -gimel_number, -7, 0 ; follow action threshold - below 0.5 is action1, above is action2
+gimel_active ftgen 0, 0, -gimel_number, -7, 0 ; whether each section is active or to be ignored
+gimel_importance ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary section importance , 0 to 1
+gimel_mod1 ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary modulation 1, 0 to 1
+gimel_mod2 ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary modulation 2, 0 to 1
+gimel_mod3 ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary modulation 3, 0 to 1
+gimel_mod4 ftgen 0, 0, -gimel_number, -7, 0 ; arbitrary modulation 4, 0 to 1
+gimel_centadd ftgen 0, 0, -gimel_number, -7, 0 ; microtonal midi note additions (0 = no change; 1 = add one semitone; 0.01 = add one cent)
+
+gimel_future ftgen 0, 0, -8, -7, 0 ; future sections: 8 in the future
+gimel_current_notes ftgen 0, 0, -13, -7, 0 ; current notes: index 0 is the length
+gimel_next_notes ftgen 0, 0, -13, -7, 0 ; next notes: index 0 is the length
+gimel_temp_random ftgen 0, 0, -gimel_number, -7, 0 ; temp storage for pattern randomisation
+
+gkmel_section_change init 0 ; section change trigger
+gkmel_section_change_due init 0 ; how many beats until next section change
+gkmel_futures_refresh_trig init 0 ; trigger to set if futures are to be recalculated
+
+; user modifiable variables
+gkmel_pause init 0 ; pause progression changes
+gkmel_advance_trig init 0 ; manual progression advance trigger
+gSmel_details = "" ; notes associated with progression included in save/load operations
+
+
+; names and references for persistence and introspection: essentially the tables to be saved
+gSmel_names[] fillarray "chords", "notes", "lengths", "action1", "action2",\
+ "actionthreshold", "active", "importance", "mod1", "mod2", "mod3", "mod4", "centadd"
+gimel_fns[] fillarray gimel_chords, gimel_notes, gimel_lengths, gimel_action1, gimel_action2,\
+ gimel_actionthreshold, gimel_active, gimel_importance, gimel_mod1, gimel_mod2, gimel_mod3, gimel_mod4, gimel_centadd
+
+
+
+;-----------------------------opcodes-------------------------------------------------------------------------------
+
+/*
+ Refresh the actions list: static actions and pattern references
+*/
+Smel_baseactions[] fillarray "Same", "Next", "Previous", "Random"
+gSmel_actions[] init lenarray(Smel_baseactions) + gimel_number
+index = 0
+while (index < lenarray(gSmel_actions)) do
+ if (index < 4) then
+ gSmel_actions[index] = Smel_baseactions[index]
+ else
+ gSmel_actions[index] = sprintf("Section %d", index - 3)
+ endif
+ index += 1
+od
+
+
+
+/*
+ Send JSON formatted information on current setup to API host
+*/
+/*
+ legacy version
+
+instr mel_updatehost ; use p4 for channel?
+ Sjson = json_init()
+ Sjson = json_appendvalue(Sjson, "sections", gimel_number)
+ Sjson = json_appendarray(Sjson, "chordnames", gSchords)
+ Sjson = json_appendarray(Sjson, "actiontypes", gSmel_actions)
+
+ SjsonFns = json_init()
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ SjsonFns = json_appendvalue(SjsonFns, gSmel_names[index], gimel_fns[index])
+ index += 1
+ od
+ Sjson = json_appendobject(Sjson, "ftables", SjsonFns)
+
+ io_sendstring("mel_state", Sjson)
+ turnoff
+endin
+*/
+
+
+/*
+ Send JSON formatted information on current setup to API host
+*/
+instr mel_updatehost
+ icbid = p4
+ iJson jsoninit
+ jsoninsertval iJson, "mel_number", gimel_number
+ jsoninsertval iJson, "chordnames", gSchords
+ jsoninsertval iJson, "actiontypes", gSmel_actions
+ jsoninsertval iJson, "cbid", icbid
+
+ iJsonFns jsoninit
+ jsoninsertval iJsonFns, gSmel_names, gimel_fns
+ jsoninsert iJson, "ftables", iJsonFns
+ jsondestroy(iJsonFns)
+ io_sendstring("callback", jsondumps(iJson, 1))
+ turnoff
+endin
+
+
+
+
+
+
+/*
+ Get modulation parameters for current section
+
+ imod1, imod2, imod3, imod4 mel_currentmod
+
+ imod1 modulation parameter 1
+ imod2 modulation parameter 2
+ imod3 modulation parameter 3
+ imod4 modulation parameter 4
+*/
+opcode mel_currentmod, iiii, 0
+ icur = table:i(0, gimel_state)
+ xout table:i(icur, gimel_mod1), table:i(icur, gimel_mod2), table:i(icur, gimel_mod3), table:i(icur, gimel_mod4)
+endop
+
+
+/*
+ Get modulation parameters for current section
+
+ kmod1, kmod2, kmod3, kmod4 mel_currentmod
+
+ kmod1 modulation parameter 1
+ kmod2 modulation parameter 2
+ kmod3 modulation parameter 3
+ kmod4 modulation parameter 4
+*/
+opcode mel_currentmod, kkkk, 0
+ kcur = table:k(0, gimel_state)
+ xout table:k(kcur, gimel_mod1), table:k(kcur, gimel_mod2), table:k(kcur, gimel_mod3), table:k(kcur, gimel_mod4)
+endop
+
+
+/*
+ Get the root midi note from the current section chord
+
+ inote mel_rootnote
+
+ inote root note from current chord
+*/
+opcode mel_rootnote, i, 0
+ xout table:i(1, gimel_current_notes)
+endop
+
+/*
+ Get a random midi note from the current section chord
+
+ inote mel_randomnote
+
+ inote random note from current chord
+*/
+opcode mel_randomnote, i, 0
+ ilen = table:i(0, gimel_current_notes)
+ index = round(random(1, ilen-1))
+ xout table:i(index, gimel_current_notes)
+endop
+
+
+/*
+ Get a random midi note from the current section chord
+
+ knote mel_randomnote
+
+ knote random note from current chord
+*/
+opcode mel_randomnote, k, 0
+ klen = table:k(0, gimel_current_notes)
+ kindex = round:k(random:k(1, klen-1))
+ xout table:k(kindex, gimel_current_notes)
+endop
+
+
+/*
+ Get the current section at k-rate
+
+ ksection _mel_currentsectionget
+
+ ksection current section
+*/
+opcode _mel_currentsectionget, k, 0
+ xout table:k(0, gimel_state)
+endop
+
+
+/*
+ Get the next section at k-rate
+
+ ksection _mel_nextsectionget
+
+ ksection next section
+*/
+opcode _mel_nextsectionget, k, 0
+ xout table:k(0, gimel_future)
+endop
+
+
+/*
+ Set the current section at k-rate
+
+ _mel_currentsectionset ksection
+
+ ksection current section to set
+*/
+opcode _mel_currentsectionset, 0, k
+ ksection xin
+ tablew ksection, 0, gimel_state
+endop
+
+
+/*
+ Get the current section at init time
+
+ isection _mel_currentsectionget
+
+ usection current section
+*/
+opcode _mel_currentsectionget, i, 0
+ xout table:i(0, gimel_state)
+endop
+
+
+/*
+ Get the length of the current section in seconds
+
+ iseconds mel_length
+
+ iseconds length in seconds
+*/
+opcode mel_length, i, 0
+ xout table:i(_mel_currentsectionget:i(), gimel_lengths) * i(gkseq_beattime)
+endop
+
+
+/*
+ Get the length of the current section in seconds
+
+ kseconds mel_length
+
+ kseconds length in seconds
+*/
+opcode mel_length, k, 0
+ xout table:k(_mel_currentsectionget:k(), gimel_lengths) * gkseq_beattime
+endop
+
+
+/*
+ Get the current MIDI note numbers as an array
+ inotes[] mel_currentnotes
+
+ inotes[] the note numbers
+*/
+opcode mel_currentnotes, i[], 0
+ ilen = table:i(0, gimel_current_notes)
+ iout[] init ilen
+ index = 0
+ while (index < ilen) do
+ iout[index] = table:i(index+1, gimel_current_notes)
+ index += 1
+ od
+ xout iout
+endop
+
+
+
+/*
+ Get the most important entry from futures table
+
+ kbestindex, kimportance, kbeats mel_future_mostimportant
+
+ kbestindex index in gimel_future
+ kimportance the importance measure
+ kbeats number of beats until the event occurs
+*/
+opcode mel_future_mostimportant, kkk, 0
+ kindex = 0
+ kimportance = -9999
+ kbestindex = 0
+ kbeats = table:k(table:k(0, gimel_state), gimel_lengths) ; current duration base
+ while (kindex < ftlen(gimel_future)) do
+ ksection = table:k(kindex, gimel_future)
+ kimportancetemp = table:k(ksection, gimel_importance)
+ if (kimportancetemp > kimportance) then
+ kimportance = kimportancetemp
+ kbestindex = kindex
+ endif
+ kindex += 1
+ od
+
+ kindex = 0
+ while (kindex < kbestindex) do
+ kbeats += table:k(table:k(kindex, gimel_future), gimel_lengths)
+ kindex += 1
+ od
+
+ xout kbestindex, kimportance, kbeats ; * gkseq_beattime
+endop
+
+
+/*
+ Get the most important entry from futures table
+
+ ibestindex, iimportance, ibeats mel_future_mostimportant
+
+ ibestindex index in gimel_future
+ importance the importance measure
+ ibeats number of beats until the event occurs
+*/
+opcode mel_future_mostimportant, iii, 0
+ index = 0
+ importance = -9999
+ ibestindex = 0
+ ibeats = table:i(table:i(0, gimel_state), gimel_lengths) ; current duration base
+ while (index < ftlen(gimel_future)) do
+ isection = table:i(index, gimel_future)
+ importancetemp = table:i(isection, gimel_importance)
+ if (importancetemp > importance) then
+ importance = importancetemp
+ ibestindex = index
+ endif
+ index += 1
+ od
+
+ index = 0
+ while (index < ibestindex) do
+ ibeats += table:i(table:i(index, gimel_future), gimel_lengths)
+ index += 1
+ od
+ xout ibestindex, importance, ibeats ; * i(gkseq_beattime)
+endop
+
+
+
+/*
+ Calculate the next section from a given section
+
+ knext _mel_calculatenext kcurrent
+
+ knext the calculated next section index
+ kcurrent the section index to base the calculation upon
+*/
+opcode _mel_calculatenext, k, k
+ kthissection xin
+ knextsection = -1
+
+ if (random:k(0, 1) <= table:k(kthissection, gimel_actionthreshold)) then
+ knextaction = table:k(kthissection, gimel_action2)
+ else
+ knextaction = table:k(kthissection, gimel_action1)
+ endif
+
+
+ ; if current is not active, go to next ?
+ kcurrentactive = table:k(kthissection, gimel_active)
+ if (kcurrentactive == 0 && knextaction == 0) then
+ knextaction = 1
+ endif
+
+ ; same
+ if (knextaction == 0) then
+ knextsection = kthissection
+
+ ; next or previous
+ elseif (knextaction >= 1 && knextaction <= 3) then ; specified action
+ kcount = 0
+ kactive = 0
+ knextsection = kthissection
+ while (kactive == 0 && kcount < gimel_number) do ; loop until active section found or all sections checked
+
+ if (knextaction == 1) then ; next
+ if (knextsection + 1 > gimel_number - 1) then
+ knextsection = 0
+ else
+ knextsection += 1
+ endif
+
+ elseif (knextaction == 2) then ; previous
+ if (knextsection -1 < 0) then
+ knextsection = gimel_number - 1
+ else
+ knextsection -= 1
+ endif
+ endif
+
+ kactive = table:k(knextsection, gimel_active)
+ kcount += 1
+ od
+
+ ; random
+ elseif (knextaction == 3) then
+ kindex = 0
+ krandmax = 0
+ while (kindex < gimel_number) do
+ if (table:k(kindex, gimel_active) == 1) then
+ tablew kindex, krandmax, gimel_temp_random
+ krandmax += 1
+ endif
+ kindex += 1
+ od
+
+ knextsection = table:k(round(random(0, krandmax - 1)), gimel_temp_random)
+
+ ; specific section
+ elseif (knextaction >= 4) then ; specific active pattern
+ if (table:k(knextaction - 4, gimel_active) == 1) then
+ knextsection = knextaction - 4
+ else
+ knextsection = kthissection
+ endif
+ endif
+ xout knextsection
+endop
+
+
+/*
+ Set gimel_next_notes from the first entry in the futures table
+*/
+opcode _mel_setnextnotes, 0, 0
+ knext = table:k(0, gimel_future)
+ chordmidibyindextof gimel_next_notes, table:k(knext, gimel_chords), table:k(knext, gimel_notes), table:k(knext, gimel_centadd)
+endop
+
+
+/*
+ Pop the next future entry from the futures table, move all future entries down one
+ and add a new calculated entry accordingly
+
+ kcurrent _mel_future_pop
+
+ kcurrent the current section to be used now
+*/
+opcode _mel_future_pop, k, 0
+ imax = ftlen(gimel_future)
+ kcurrent = table:k(0, gimel_future)
+
+
+ kindex = 0
+ while (kindex < imax - 1) do
+ tablew table:k(kindex + 1, gimel_future), kindex, gimel_future
+ kindex += 1
+ od
+
+ ; write new last entry
+ tablew _mel_calculatenext(table:k(kindex, gimel_future)), imax - 1, gimel_future
+
+ _mel_setnextnotes()
+
+ xout kcurrent
+endop
+
+
+/*
+ Recalculate the futures table (in the event of parameters being changed at runtime etc)
+*/
+opcode _mel_futures_refresh, 0, O
+ kindexStart xin ; usually 0, can be a start index (ie 1 leaves the first entry in place)
+ kindex = kindexStart
+ imax = ftlen(gimel_future)
+ ; TODO do first, etc
+ while (kindex < imax) do
+ if (kindex == 0) then
+ kcurrent = table:k(0, gimel_state) ; 0 ; get current, rather than 0...
+ else
+ kcurrent = table:k(kindex - 1, gimel_future)
+ endif
+
+ tablew _mel_calculatenext(kcurrent), kindex, gimel_future
+ kindex += 1
+ od
+
+ _mel_setnextnotes()
+endop
+
+
+/*
+ Set next section, for host control
+
+ p4 section number to set as next
+*/
+instr mel_setnextsection
+ isection = p4
+ if (table:i(isection, gimel_active) == 1) then
+ tablew isection, 0, gimel_future
+ gkmel_futures_refresh_trig = 2
+ endif
+ turnoff
+endin
+
+
+/*
+ Refresh the futures table, for host control
+*/
+instr mel_futures_refresh
+ gkmel_futures_refresh_trig = 1
+ turnoff
+endin
+
+
+/*
+ Randomise all section parameters
+*/
+opcode _mel_randomise, 0, 0
+ index = 0
+ iactives[] init 4 + gimel_lengths
+ iactivenum = 4
+ while (index < gimel_number) do
+ tablew round(random(0, lenarray(gSchords) - 1)), index, gimel_chords
+ tablew round(random(4, 8)), index, gimel_lengths
+ tablew round(random(54, 70)), index, gimel_notes
+ tablew random(0, 1), index, gimel_actionthreshold
+ tablew random(0, 1), index, gimel_importance
+ tablew random(0, 1), index, gimel_mod1
+ tablew random(0, 1), index, gimel_mod2
+ tablew random(0, 1), index, gimel_mod3
+ tablew random(0, 1), index, gimel_mod4
+ tablew 0, index, gimel_centadd ; always regular to begin with
+
+
+ iactive = round(random(0, 1))
+ if (iactive == 1) then
+ iactives[iactivenum-1] = iactive
+ iactivenum += 1
+ endif
+ tablew iactive, index, gimel_active
+ index += 1
+ od
+
+ ; set next action to only active sections
+ index = 0
+ while (index < gimel_number) do
+ iaction1 = iactives[round(random(0, iactivenum))]
+ iaction2 = iactives[round(random(0, iactivenum))]
+;iaction1 = 1
+;iaction2 = 1
+ tablew iaction1, index, gimel_action1
+ tablew iaction2, index, gimel_action2
+ index += 1
+ od
+endop
+
+
+/*
+ Randomise all section parameters and update the host
+*/
+instr mel_randomise
+ icbid = p4
+ _mel_randomise()
+ gkmel_futures_refresh_trig = 1
+ event_i "i", "mel_updatehost", 0, 1, icbid
+ turnoff
+endin
+
+
+/*
+ Pause progression, for host control
+*/
+instr mel_pause
+ gkmel_pause = p4
+ turnoff
+endin
+
+
+/*
+ Advance progression, for host control
+*/
+instr mel_advance
+ gkmel_advance_trig = 1
+ turnoff
+endin
+
+
+/*
+ Advance progression if paused, for host control
+*/
+instr mel_advanceifpaused
+ if (gkmel_pause == 1) then
+ gkmel_advance_trig = 1
+ endif
+ turnoff
+endin
+
+
+/*
+ Get the length of the current progression, if there are two of the same progression consecutively, sum those
+
+ klength mel_nextchangelength
+
+ klength cumulative length taking into account consecutive same sections
+*/
+opcode mel_nextchangelength, k, 0
+ kcurrent = _mel_currentsectionget:k()
+ klength = table:k(kcurrent, gimel_lengths)
+
+ imaxfutures = ftlen(gimel_future)
+ kindex = 0
+ while (kindex < imaxfutures) do
+ ksection = table:k(kindex, gimel_future)
+ if (ksection != kcurrent) kgoto complete
+ klength += table:k(ksection, gimel_lengths)
+ kindex += 1
+ od
+complete:
+ xout klength
+endop
+
+
+
+
+/*
+ Call Sinstrument when ktrig is fired, for each note (passed as p4) and the current section length accordingly
+ mel_eachnote Sinstrument, ktrig[, klength = mel_length:k()]
+
+ Sinstrument the instrument name to call
+ ktrig trigger to active call
+ klength duration of instrument to call, defaulting to mel_length:k()
+
+*/
+opcode mel_eachnote, 0, SkJ
+ Sinstrument, ktrig, klength xin
+ if (ktrig == 1) then
+ kdur = (klength == -1 ) ? mel_nextchangelength:k() * gkseq_beattime : klength
+ kindex = 0
+ while (kindex < table:k(0, gimel_current_notes)) do
+ schedulek Sinstrument, 0, kdur, table:k(kindex + 1, gimel_current_notes)
+ kindex += 1
+ od
+ endif
+endop
+
+/*
+ Initialise the sequencer sections; monitor for gkseq_beat triggers and change sections accordingly
+*/
+instr _mel_manager
+#ifndef MEL_HASINIT
+ _mel_randomise()
+#end
+
+ ksectionlength init 0
+ gkmel_futures_refresh_trig init 1
+
+ if (gkmel_futures_refresh_trig != 0) then
+ _mel_futures_refresh(gkmel_futures_refresh_trig - 1) ; if gkmel_futures_refresh_trig is 2, then omit first, otherwise recalculate all
+ gkmel_futures_refresh_trig = 0
+ ksectionlength = mel_nextchangelength:k()
+ endif
+
+ kstep init 0
+ gkmel_section_change = 0
+
+ kmanualadvance = 0
+ if (gkmel_advance_trig == 1) then
+ kmanualadvance = 1
+ gkmel_advance_trig = 0
+ endif
+
+ if ((gkseq_beat == 1 && gkmel_pause == 0) || kmanualadvance == 1) then
+ if (kstep == 0 || kmanualadvance == 1) then
+ kcurrent = _mel_currentsectionget:k()
+ tablecopy gimel_current_notes, gimel_next_notes
+ knew = _mel_future_pop:k()
+ _mel_currentsectionset(knew)
+
+ ; only send if actually changed
+ if (kcurrent != knew) then
+ io_send("mel_current", knew) ; send current (from next)
+ gkmel_section_change = 1
+ ksectionlength = mel_nextchangelength:k()
+ endif
+ endif
+
+ gkmel_section_change_due = ksectionlength - kstep
+
+ if (kstep < ksectionlength - 1) then ; current step < current length
+ kstep += 1
+ else
+ kstep = 0
+ endif
+
+ endif ; end each beat
+
+
+endin
+
+#ifndef MEL_HASINIT
+alwayson "_mel_manager"
+#end
+
+
+
+/*
+ Extend the current notes and convert to frequency, multiplying by powers of two to be used in mel_tune
+ ifreqs[] _mel_tune_noteprepare inotes[], imult
+
+ ifreqs[] resulting frequencies
+ inotes[] input midi note numbers
+ imult number of times to multiply note contents
+
+*/
+opcode _mel_tune_noteprepare, i[], i[]i
+ iarr[], imult xin
+ inew[] init lenarray(iarr) * imult
+ indexnew = 0
+ index = 0
+ while (index < lenarray(iarr)) do
+ ifreq = cpsmidinn(iarr[index])
+ index2 = 0
+ while (index2 < imult) do
+ if (index2 > 0) then
+ inew[indexnew] = ifreq * (2* (index2+1))
+ else
+ inew[indexnew] = ifreq
+ endif
+ index2 += 1
+ indexnew += 1
+ od
+
+ index += 1
+ od
+ xout inew
+endop
+
+
+/*
+ Create a chord with the specified frequencies
+ aout _mel_tune_chord ifreqs[] [, ifn, index]
+
+ aout resulting chord
+ ifreqs[] frequencies to play
+ ifn wavetable to play with, default = gifnSine
+ index internal index usage for recursion
+*/
+opcode _mel_tune_chord, a, i[]oo
+ ifreqs[], ifn, index xin
+ ifn = (ifn == 0) ? gifnSine : ifn
+ aout = oscil(0.1, ifreqs[index], ifn)
+ if (index < lenarray(ifreqs) - 1) then
+ aout += _mel_tune_chord(ifreqs, ifn, index + 1)
+ endif
+ xout aout
+endop
+
+
+/*
+ Stereo tuning to current melodic sequencer notes
+ aoutL, aoutR mel_tune ainL, ainR, ifn, imult [, ifftrate, ifftdiv]
+
+ aoutL, aoutR output audio
+ ainL, ainR input audio
+ ifn wavetable to use
+ imult multiples of harmonics to generate in tuning
+ ifftrate fft size, defaults to config default
+ ifftdiv fft window division factor (eg 4, 8, 16), defaults to config default
+*/
+opcode mel_tune, aa, aaiioo
+ aL, aR, ifn, imult, ifftrate, ifftdiv xin
+ ifftrate = (ifftrate == 0) ? giFFTsize : ifftrate
+ ifftdiv = (ifftdiv == 0) ? giFFTwinFactor : ifftdiv
+ ifreqs[] _mel_tune_noteprepare mel_currentnotes(), imult
+ fmods pvsanal _mel_tune_chord(ifreqs, ifn), ifftrate, ifftrate/ifftdiv, ifftrate, 1
+ fL1 pvsanal aL, ifftrate, ifftrate/ifftdiv, ifftrate, 1
+ fR1 pvsanal aR, ifftrate, ifftrate/ifftdiv, ifftrate, 1
+ fL2 pvsmorph fL1, fmods, 0, 1
+ fR2 pvsmorph fR1, fmods, 0, 1
+ aL1 pvsynth fL2
+ aR1 pvsynth fR2
+ idel = (ifftrate+2)/sr
+ aL1 balance aL1, delay(aL, idel)
+ aR1 balance aR1, delay(aR, idel)
+ xout aL1, aR1
+endop
+
+#end
diff --git a/site/udo/sequencing_melodic_persistence.udo b/site/udo/sequencing_melodic_persistence.udo
new file mode 100755
index 0000000..0709832
--- /dev/null
+++ b/site/udo/sequencing_melodic_persistence.udo
@@ -0,0 +1,275 @@
+#ifndef UDO_MELSEQUENCINGPERSIST
+#define UDO_MELSEQUENCINGPERSIST ##
+/*
+ Melodic sequencer persistence: saving/loading from files and database
+ Requires JSON opcodes
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "pgdb.udo"
+#include "sequencing_melodic.udo"
+#include "array_tools.udo"
+#include "interop.udo"
+
+
+/*
+ Get the current state as a JSON object
+
+ iJson mel_getstate_json
+
+ iJson the JSON object containing current sequencing and progression data
+
+*/
+opcode mel_getstate_json, i, 0
+ iJson jsoninit
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ iarray[] tab2array gimel_fns[index]
+ jsoninsertval iJson, gSmel_names[index], iarray
+ index += 1
+ od
+ iarray[] tab2array gimel_state
+ jsoninsertval iJson, "state", iarray
+ jsoninsertval iJson, "details", gSmel_details
+ jsoninsertval iJson, "mel_number", gimel_number
+ jsoninsertval iJson, "seq_tempo", i(gkseq_tempo)
+ jsoninsertval iJson, "seq_swing", i(gkseq_swing)
+ xout iJson
+endop
+
+
+/*
+ Set the current sequencing and progression state
+
+ mel_setstate_json iJson
+
+ iJson JSON object containing state data
+
+*/
+opcode mel_setstate_json, 0, i
+ iJson xin
+
+ gSmel_details jsongetval iJson, "details"
+ gimel_number jsongetval iJson, "mel_number"
+ itempo jsongetval iJson, "seq_tempo"
+ iswing jsongetval iJson, "seq_swing"
+
+#ifdef MEL_INITTIME
+ gkseq_tempo init itempo
+ gkseq_swing init iswing
+#end
+
+ ; if data to be loaded has more progression items than ftables, free and generate again
+ if (gimel_number > ftlen(gimel_fns[0])) then
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ ftfree gimel_fns[index], 0
+ gimel_fns[index] = ftgen(0, 0, -gimel_number, -7, 0)
+ od
+ endif
+
+
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ iJsonSub jsonget iJson, gSmel_names[index]
+ iarray[] jsonarrval iJsonSub
+ copya2ftab iarray, gimel_fns[index]
+ jsondestroy iJsonSub
+ index += 1
+ od
+
+
+ iJsonSub jsonget iJson, "state"
+ iarray[] jsonarrval iJsonSub
+ copya2ftab iarray, gimel_state
+ jsondestroy(iJsonSub)
+
+endop
+
+
+
+/*
+ Save the sequencing and progression state to a file
+
+ p4 path to save file to
+ p5 optional callback ID for host interop; sent on completion
+*/
+instr mel_savestate_fs
+ Spath = p4
+ icbid = p5
+ iJson = mel_getstate_json()
+ jsondump(iJson, Spath)
+ jsondestroy(iJson)
+ if (icbid != 0) then
+ schedule("io_callback", 0, 1, icbid)
+ endif
+ turnoff
+endin
+
+
+
+opcode mel_loadstate_fs, 0, S
+ Spath xin
+ iJson jsonload Spath
+ mel_setstate_json(iJson)
+ jsondestroy(iJson)
+endop
+/*
+ Load the sequencing and progression state from a file
+
+ p4 path to load data from
+ p5 optional callback ID for host interop; sent on completion
+*/
+instr mel_loadstate_fs
+ Spath = p4
+ icbid = p5
+ mel_loadstate_fs Spath
+ if (icbid != 0) then
+ schedule("io_callback", 0, 1, icbid)
+ endif
+ schedule("mel_futures_refresh", 0, 1)
+ turnoff
+endin
+
+
+
+opcode mel_savestate_db, 0, S
+ Sname xin
+ iJson = mel_getstate_json()
+ pgdb_json_save Sname, "melsys", iJson
+ jsondestroy(iJson)
+endop
+/*
+ Save the sequencing and progression state to database
+
+ p4 reference name in database
+ p5 optional callback ID for host interop; sent on completion
+*/
+instr mel_savestate_db
+ Sname = p4
+ icbid = p5
+ mel_savestate_db Sname
+ if (icbid != 0) then
+ schedule("io_callback", 0, 1, icbid)
+ endif
+ turnoff
+endin
+
+
+
+opcode mel_loadstate_db, 0, S
+ Sname xin
+ iJson pgdb_json_load Sname, "melsys"
+ mel_setstate_json(iJson)
+ jsondestroy(iJson)
+endop
+/*
+ Load the sequencing and progression state from database
+
+ p4 reference name in database
+ p5 optional callback ID for host interop; sent on completion
+*/
+instr mel_loadstate_db
+ Sname = p4
+ icbid = p5
+ mel_loadstate_db Sname
+ if (icbid != 0) then
+ schedule("io_callback", 0, 1, icbid)
+ endif
+ schedule("mel_futures_refresh", 0, 1)
+ turnoff
+endin
+
+
+
+/*
+ Load the sequencing and progression state from a string channel
+
+ p4 channel name containing string representation of JSON
+ p5 optional callback ID for host interop; sent on completion
+*/
+instr mel_loadstate_channel
+ Schannel = p4
+ icbid = p5
+ Sdata chnget Schannel
+ iJson jsonloads Sdata
+ mel_setstate_json(iJson)
+ jsondestroy(iJson)
+ if (icbid != 0) then
+ schedule("io_callback", 0, 1, icbid)
+ endif
+ schedule("mel_futures_refresh", 0, 1)
+ turnoff
+endin
+
+
+/*
+ Just get state: interop host handles persistence
+ p4 callback ID to send data with/to
+*/
+instr mel_getstate_string
+ icbid = p4
+ iJson = mel_getstate_json()
+ jsoninsertval iJson, "cbid", icbid
+ Sjson = jsondumps(iJson, 0)
+ io_sendstring("callback", Sjson)
+ turnoff
+endin
+
+
+/*
+ Get an array of the known mel states from database
+ Sdata[] mel_liststates_db
+
+ Sdata[] the state names
+*/
+opcode mel_liststates_db, S[], 0
+ Sresult[][] dbarray gidb, "SELECT name FROM savejson WHERE unit = 'melsys'"
+ ilen = lenarray(Sresult)
+ Sdata[] init ilen
+ index = 0
+ while (index < ilen) do
+ Sdata[index] = Sresult[index][0]
+ index += 1
+ od
+ xout Sdata
+endop
+
+
+/*
+ Get a list of mel states from database and return to host with the specified callback ID
+
+ p4 callback ID
+*/
+instr mel_liststates_db
+ icbid = p4
+ iJson = jsoninit()
+ jsoninsertval(iJson, "cbid", icbid)
+ jsoninsertval(iJson, "states", mel_liststates_db())
+ io_sendstring("callback", jsondumps(iJson, 0))
+ turnoff
+endin
+
+
+; if MEL_INITPATH or MEL_INITDB is set, load the specified progression data accordingly
+#ifdef MEL_HASINIT
+instr _mel_persistence_init
+#ifdef MEL_INITPATH
+ subinstrinit "mel_loadstate_fs", "$MEL_INITPATH"
+#end
+#ifdef MEL_INITDB
+ ;mel_loadstate_db "$MEL_INITDB"
+ subinstrinit "mel_loadstate_db", "$MEL_INITDB"
+#end
+ alwayson "_mel_manager"
+ turnoff
+endin
+schedule "_mel_persistence_init", 0, 60
+
+; end MEL_HASINIT
+#end
+
+#end
diff --git a/site/udo/sequencing_melodic_persistence.web.udo b/site/udo/sequencing_melodic_persistence.web.udo
new file mode 100755
index 0000000..01d005f
--- /dev/null
+++ b/site/udo/sequencing_melodic_persistence.web.udo
@@ -0,0 +1,213 @@
+#ifndef UDO_MELSEQUENCINGPERSIST
+#define UDO_MELSEQUENCINGPERSIST ##
+/*
+ Melodic sequencer persistence: saving/loading from files and database
+ Web version
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022, 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "/sequencing_melodic.udo"
+#include "/array_tools.udo"
+#include "/table_tools.udo"
+#include "/interop.udo"
+#include "/json.udo"
+
+
+/*
+ Get the current state as a JSON object
+
+ iJson mel_getstate_json
+
+ iJson the JSON object containing current sequencing and progression data
+
+*/
+opcode mel_getstate_json, S, 0
+ Sjson = "{"
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ Sjson = strcat(Sjson, sprintf("\"%s\":%s,", gSmel_names[index], tab_serialise(gimel_fns[index])))
+ index += 1
+ od
+
+ Sjson = strcat(Sjson, sprintf("\"state\":%s,", tab_serialise(gimel_state)))
+ Sjson = strcat(Sjson, sprintf("\"details\":\"%s\",\"mel_number\":%d,\"seq_tempo\":%f,\"seq_swing\":%f}", gSmel_details, gimel_number, i(gkseq_tempo), i(gkseq_swing)))
+ xout Sjson
+endop
+
+
+/*
+ Set the current sequencing and progression state
+
+ mel_setstate_json SJson
+
+ SJson JSON string containing state data
+
+*/
+opcode mel_setstate_json, 0, S
+ Sjson xin
+
+ i_, gSmel_details, i_ json_parse Sjson, "details"
+ i_, S_, gimel_number json_parse Sjson, "mel_number"
+ i_, S_, itempo json_parse Sjson, "seq_tempo"
+ i_, S_, iswing json_parse Sjson, "seq_swing"
+
+#ifdef MEL_INITTIME
+ gkseq_tempo init itempo
+ gkseq_swing init iswing
+#end
+
+ ; if data to be loaded has more progression items than ftables, free and generate again
+ if (gimel_number > ftlen(gimel_fns[0])) then
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ ftfree gimel_fns[index], 0
+ gimel_fns[index] = ftgen(0, 0, -gimel_number, -7, 0)
+ od
+ endif
+
+
+ index = 0
+ while (index < lenarray(gimel_fns)) do
+ i_, Stringvalue, i_ json_parse Sjson, gSmel_names[index]
+ iarray[] json_getnumericarray Stringvalue
+ copya2ftab iarray, gimel_fns[index]
+ index += 1
+ od
+
+
+ i_, Stringvalue, i_ json_parse Sjson, "state"
+ iarray[] json_getnumericarray Stringvalue
+ copya2ftab iarray, gimel_state
+endop
+
+
+
+
+instr mel_savestate_fs
+ prints sprintf("%s unsupported in web UDO\n", nstrstr(p1))
+ turnoff
+endin
+
+instr mel_loadstate_fs
+ prints sprintf("%s unsupported in web UDO\n", nstrstr(p1))
+ turnoff
+endin
+
+
+/*
+ Save the sequencing and progression state to database
+
+ p4 reference name in database
+ p5 optional callback ID for host interop; sent on completion
+*/
+instr mel_savestate_db
+ Sname = p4
+ icbid = p5
+
+ turnoff
+endin
+
+
+
+
+
+/*
+ Load the sequencing and progression state from database
+
+ p4 reference name in database
+ p5 optional callback ID for host interop; sent on completion
+*/
+instr mel_loadstate_db
+ Sname = p4
+ icbid = p5
+
+ schedule("mel_futures_refresh", 0, 1)
+ turnoff
+endin
+
+
+
+/*
+ Load the sequencing and progression state from a string channel
+
+ p4 channel name containing string representation of JSON
+ p5 optional callback ID for host interop; sent on completion
+*/
+instr mel_loadstate_channel
+ Schannel = p4
+ icbid = p5
+ Sdata chnget Schannel
+ mel_setstate_json(Sdata)
+ if (icbid != 0) then
+ schedule("io_callback", 0, 1, icbid)
+ endif
+ schedule("mel_futures_refresh", 0, 1)
+ turnoff
+endin
+
+
+/*
+ Just get state: interop host handles persistence
+ p4 callback ID to send data with/to
+*/
+instr mel_getstate_string
+ icbid = p4
+ Sjson = mel_getstate_json()
+ Sjson json_appendvalue Sjson, "cbid", icbid
+ io_sendstring("callback", Sjson)
+ turnoff
+endin
+
+
+/*
+ Get an array of the known mel states from database
+ Sdata[] mel_liststates_db
+
+ Sdata[] the state names
+
+opcode mel_liststates_db, S[], 0
+ Sresult[][] dbarray gidb, "SELECT name FROM savejson WHERE unit = 'melsys'"
+ ilen = lenarray(Sresult)
+ Sdata[] init ilen
+ index = 0
+ while (index < ilen) do
+ Sdata[index] = Sresult[index][0]
+ index += 1
+ od
+ xout Sdata
+endop
+*/
+
+/*
+ Get a list of mel states from database and return to host with the specified callback ID
+
+ p4 callback ID
+*/
+instr mel_liststates_db
+ icbid = p4
+ turnoff
+endin
+
+
+; if MEL_INITPATH or MEL_INITDB is set, load the specified progression data accordingly
+#ifdef MEL_HASINIT
+instr _mel_persistence_init
+#ifdef MEL_INITPATH
+ subinstrinit "mel_loadstate_fs", "$MEL_INITPATH"
+#end
+#ifdef MEL_INITDB
+ ;mel_loadstate_db "$MEL_INITDB"
+ subinstrinit "mel_loadstate_db", "$MEL_INITDB"
+#end
+ alwayson "_mel_manager"
+ turnoff
+endin
+schedule "_mel_persistence_init", 0, 60
+
+; end MEL_HASINIT
+#end
+
+#end
diff --git a/site/udo/sequencing_melodic_portamento.udo b/site/udo/sequencing_melodic_portamento.udo
new file mode 100755
index 0000000..fe3bde2
--- /dev/null
+++ b/site/udo/sequencing_melodic_portamento.udo
@@ -0,0 +1,310 @@
+#ifndef UDO_MELSEQUENCINGPORT
+#define UDO_MELSEQUENCINGPORT ##
+
+/*
+ Extension to sequencing_melodic.udo which permits usage of k-rate frequency arrays
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "__config__.udo" ; using fftsize for tuning
+#include "sequencing_melodic.udo"
+#include "wavetables.udo"
+#include "frequency_tools.udo"
+
+
+gimel_freqs ftgen 0, 0, -12, -7, 0 ; current notes: index 0 is the length
+gimel_amps ftgen 0, 0, -12, -7, 0 ; current notes: index 0 is the length
+
+gimel_portamento_beatratio init 0.5 ; portamento time as ratio of current beat time
+gimel_linetype init 0 ; 0=pre-section, 1=post-section
+
+
+/*
+ Automate a frequency/amp line
+*/
+instr _mel_linedraw
+ index = p4
+ ifreq = p5
+ iamp = p6
+
+ icurrentfreq table index, gimel_freqs
+
+ if (icurrentfreq == 0 && ifreq != 0) then
+ tablew ifreq, index, gimel_freqs
+ elseif (ifreq != 0 && icurrentfreq != ifreq) then
+ tablew line:k(icurrentfreq, p3, ifreq), index, gimel_freqs
+ endif
+
+ icurrentamp table index, gimel_amps
+ if (icurrentamp != iamp) then
+ tablew line:k(icurrentamp, p3, iamp), index, gimel_amps
+ endif
+endin
+
+
+instr _mel_linestep_inner
+ if (timeinstk() == 1) then
+ turnoff2 "_mel_linedraw", 0, 0
+ endif
+
+ if (table:i(1, gimel_next_notes) != 0) then
+ index = 0
+ while (index < table:i(0, gimel_next_notes)) do
+ event_i "i", "_mel_linedraw", 1/kr, p3, index, cpsmidinn(table:i(index + 1, gimel_next_notes)), 1
+ index += 1
+ od
+ while (index < ftlen(gimel_freqs)) do
+ event_i "i", "_mel_linedraw", 1/kr, p3, index, 0, 0
+ index += 1
+ od
+ endif
+endin
+
+
+instr _mel_linestep
+ icurrentduration mel_length
+ ilinetime = (i(gkseq_beattime) * gimel_portamento_beatratio)
+ if (gimel_linetype == 0) then
+ inextline = icurrentduration - ilinetime
+ else
+ inextline = icurrentduration
+ endif
+ event_i "i", "_mel_linestep_inner", inextline, ilinetime
+ turnoff
+endin
+
+
+/*
+ Portamento manager: respond to gkmel_section_change trigger by calling _mel_linestep instrument
+*/
+instr _mel_linemanager
+ ; set initial freqs
+ index = 0
+ while (index < table:i(0, gimel_current_notes)) do
+ tablew cpsmidinn(table:i(index + 1, gimel_current_notes)), index, gimel_freqs
+ tablew 1, index, gimel_amps
+ index += 1
+ od
+ while (index < ftlen(gimel_freqs)) do
+ tablew 0, index, gimel_amps
+ index += 1
+ od
+
+ schedkwhen gkmel_section_change, 0, 1, "_mel_linestep", 0, 1
+endin
+
+schedule "_mel_linemanager", 0.1, 36000 ; notes not ready on 0
+;alwayson "_mel_linemanager"
+
+
+
+
+
+/*
+ Recursively create a chord to be used by mel_tune_portamento; internal use only
+
+ aout _mel_tune_chord_portamento kfreqmult, ifn, imaxmult, imult, index
+
+ aout chord output
+ kfreqmult frequency multiplier to apply to tuning
+ ifn wavetable to use
+ imaxmult multiples of harmonics to generate in tuning
+ imult internal multiplier for recursion
+ index internal index for recursion
+
+*/
+opcode _mel_tune_chord_portamento, a, kiipo
+ kfreqmult, ifn, imaxmult, imult, index xin
+
+
+ if (index + 1 > ftlen(gimel_amps)) then
+ index = 0
+ imult += 1
+ endif
+
+ aout = oscil(table:k(index, gimel_amps), kfreqmult * table:k(index, gimel_freqs) * pow:k(2, imult), ifn) * 0.1
+ ; recursion for all chord parts
+ if (imult <= imaxmult) then
+ aout += _mel_tune_chord_portamento(kfreqmult, ifn, imaxmult, imult, index + 1)
+ endif
+
+ xout aout
+endop
+
+
+
+/*
+ PVS morph tuning to current melodic sequencer notes
+ aoutL, aoutR mel_tune_portamento ainL, ainR, [ifn=gifnSine, imult=4, ifftrate=giFFTsize, ifftdiv=giFFTwinFactor, kfreqmult=1]
+
+ aoutL, aoutR output audio
+ ainL, ainR input audio
+ ifn wavetable to use
+ imaxmult multiples of harmonics to generate in tuning (defaults to 4)
+ ifftrate fft size, defaults to config default
+ ifftdiv fft window division factor (eg 4, 8, 16), defaults to config default
+ kfreqmult frequency multiplier to apply to tuning
+*/
+opcode mel_tune_portamento, aa, aaooooP
+ aL, aR, ifn, imaxmult, ifftrate, ifftdiv, kfreqmult xin
+ ifn = (ifn == 0) ? gifnSine : ifn
+ imaxmult = (imaxmult == 0) ? 4 : imaxmult
+ ifftrate = (ifftrate == 0) ? giFFTsize : ifftrate
+ ifftdiv = (ifftdiv == 0) ? giFFTwinFactor : ifftdiv
+ fmods pvsanal _mel_tune_chord_portamento(kfreqmult, ifn, imaxmult), ifftrate, ifftrate/ifftdiv, ifftrate, 1
+ fL1 pvsanal aL, ifftrate, ifftrate/ifftdiv, ifftrate, 1
+ fR1 pvsanal aR, ifftrate, ifftrate/ifftdiv, ifftrate, 1
+ fL2 pvsmorph fL1, fmods, 0, 1
+ fR2 pvsmorph fR1, fmods, 0, 1
+ aL1 pvsynth fL2
+ aR1 pvsynth fR2
+ idel = (ifftrate)/sr
+ aL1 balance aL1, delay(aL, idel)
+ aR1 balance aR1, delay(aR, idel)
+ xout aL1, aR1
+endop
+
+
+/*
+ Bandpass tuning for internal use only, applied to each note frequency for full spectrum bandpass
+
+ aoutL, aoutR _mel_bandpass_portamento_freqgroup ainL, ainR, kfreq, kbw, iprecise, imult
+
+ aoutL, aoutR output audio
+ ainL, ainR input audio
+ kfreq frequency to tune to
+ kbw bandwidth of bandpass filters
+ iprecise if 1, use two serial bandpass filters for more precision
+ imult current multiplier for recursion
+*/
+opcode _mel_bandpass_portamento_freqgroup, aa, aakkip
+ ainL, ainR, kfreq, kbw, iprecise, imult xin
+ imaxmult = 24
+
+ aoutL butterbp ainL, kfreq*imult, kbw
+ aoutR butterbp ainR, kfreq*imult, kbw
+
+ if (iprecise == 1) then
+ aoutL butterbp aoutL, kfreq*imult, kbw
+ aoutR butterbp aoutR, kfreq*imult, kbw
+ endif
+
+ if (imult <= imaxmult) then
+ aoutLrec, aoutRrec _mel_bandpass_portamento_freqgroup ainL, ainR, kfreq, kbw, iprecise, imult * 2
+ aoutL += aoutLrec
+ aoutR += aoutRrec
+ endif
+ xout aoutL, aoutR
+endop
+
+
+/*
+ Bandpass tuning to current melodic sequencer notes
+
+ aoutL, aoutR mel_bandpass_portamento ainL, ainR [, kbw=1, iprecise=0, index=0]
+
+ aoutL, aoutR output audio
+ ainL, ainR input audio
+ kbw bandwidth of bandpass filters
+ iprecise if 1, use two serial bandpass filters for more precision
+ index recursion index for internal use
+*/
+opcode mel_bandpass_portamento, aa, aaPoo
+ ainL, ainR, kbw, iprecise, index xin
+ kamp = table:k(index, gimel_amps)
+
+ if (kamp > 0) then
+ kfreq = table:k(index, gimel_freqs)
+ aoutL, aoutR _mel_bandpass_portamento_freqgroup ainL, ainR, kfreq, kbw, iprecise
+ aoutL *= kamp
+ aoutR *= kamp
+ else
+ aoutL = 0
+ aoutR = 0
+ endif
+
+ if (index < ftlen(gimel_amps)) then
+ aoutLr, aoutRr mel_bandpass_portamento ainL, ainR, kbw, iprecise, index + 1
+ aoutL += aoutLr
+ aoutR += aoutRr
+ endif
+ xout aoutL, aoutR
+endop
+
+
+
+/*
+ Ringmod tuning to current melodic sequencer notes
+ aoutL, aoutR mel_ringmod_portamento ainL, ainR kfreqmult, index
+
+ aoutL, aoutR output audio
+ ainL, ainR input audio
+ kfreqmult frequency multiplier to apply to current frequencies
+ index recursion index for internal use
+*/
+opcode mel_ringmod_portamento, aa, aaPo
+ ainL, ainR, kfreqmult, index xin
+
+ kamp = table:k(index, gimel_amps)
+
+ if (kamp > 0) then
+ aoutL, aoutR ringmod1 ainL, ainR, table:k(index, gimel_freqs) * kfreqmult
+ aoutL *= kamp
+ aoutR *= kamp
+ else
+ aoutL = 0
+ aoutR = 0
+ endif
+
+ if (index < ftlen(gimel_amps)) then
+ aoutLr, aoutRr mel_ringmod_portamento ainL, ainR, kfreqmult, index + 1
+ aoutL += aoutLr
+ aoutR += aoutRr
+ endif
+ xout aoutL, aoutR
+endop
+
+
+
+/*
+ Reson tuning to current melodic sequencer notes
+
+ aoutL, aoutR mel_reson_portamento ainL, ainR kfreqmult, index
+
+ aoutL, aoutR output audio
+ ainL, ainR input audio
+ kfreqmult frequency multiplier to apply to current frequencies
+ index recursion index for internal use
+*/
+opcode mel_reson_portamento, aa, aaPo
+ ainL, ainR, kfreqmult, index xin
+
+ kamp = table:k(index, gimel_amps)
+ kfreq = table:k(index, gimel_freqs)
+
+ if (kamp > 0) then
+ aoutL resony ainL, kfreq * kfreqmult, 2, 8, 10
+ aoutR resony ainR, kfreq * kfreqmult, 2, 8, 10
+ aoutL balance aoutL, ainL
+ aoutR balance aoutR, ainR
+ aoutL *= kamp
+ aoutR *= kamp
+ else
+ aoutL = 0
+ aoutR = 0
+ endif
+
+ if (index < ftlen(gimel_amps)) then
+ aoutLr, aoutRr mel_reson_portamento ainL, ainR, kfreqmult, index + 1
+ aoutL += aoutLr
+ aoutR += aoutRr
+ endif
+ xout aoutL, aoutR
+endop
+
+
+#end
+
diff --git a/site/udo/sequencing_scheduled.udo b/site/udo/sequencing_scheduled.udo
new file mode 100755
index 0000000..17cb865
--- /dev/null
+++ b/site/udo/sequencing_scheduled.udo
@@ -0,0 +1,286 @@
+#ifndef UDO_SEQUENCING_SCHEDULING
+#define UDO_SEQUENCING_SCHEDULING ##
+/*
+ Sequenced scheduling
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "sequencing.udo"
+
+
+/*
+ Helper for sequenced scheduling calls
+*/
+opcode _seq_form_pfields, S, i[]
+ ipfields[] xin
+ Sdata = ""
+ index = 0
+ while (index < lenarray(ipfields)) do
+ Sdata strcat Sdata, sprintf("%f ", ipfields[index])
+ index += 1
+ od
+ xout Sdata
+endop
+
+/*
+ schedule a scoreline for the next beat, bar or bargroup
+*/
+instr _seq_next
+ imode = p4
+ Scoreline = p5
+
+ if ((imode == 0 && gkseq_beat == 1) || (imode == 1 && gkseq_bar_trig == 1) || (imode == 2 && gkseq_bargroup_trig == 1)) then
+ scoreline Scoreline, 1
+ turnoff
+ endif
+endin
+
+opcode _seq_next, 0, iSi[]
+ imode, Sinstrument, ipfields[] xin
+ scoreline_i sprintf("i\"_seq_next\" %d 0 3600 \"i \\\"%s\\\" %s\"", imode, Sinstrument, _seq_form_pfields(ipfields))
+endop
+
+
+instr _seq_turnoff
+ imode = p4
+ instrnum = p5
+
+ if ((imode == 0 && gkseq_beat == 1) || (imode == 1 && gkseq_bar_trig == 1) || (imode == 2 && gkseq_bargroup_trig == 1)) then
+ turnoff2 instrnum, 4, 0
+ turnoff
+ endif
+endin
+
+opcode _seq_turnoff, 0, ii
+ imode, instrnum xin
+ event_i "i", "_seq_turnoff", 0, 600, imode, instrnum
+endop
+
+
+/*
+ Schedule an instrument for the next beat
+
+ beat_next Sinstrument, ipfields[]
+
+ Sinstrument instrument name
+ ipfields[] p fields
+*/
+opcode beat_next, 0, Si[]
+ Sinstrument, ipfields[] xin
+ _seq_next 0, Sinstrument, ipfields
+endop
+
+
+
+/*
+ Schedule an instrument for the next bar
+
+ bar_next Sinstrument, ipfields[]
+
+ Sinstrument instrument name
+ ipfields[] p fields
+*/
+opcode bar_next, 0, Si[]
+ Sinstrument, ipfields[] xin
+ _seq_next 1, Sinstrument, ipfields
+endop
+
+
+
+/*
+ Schedule an instrument for the next bar group
+
+ bargroup_next Sinstrument, ipfields[]
+
+ Sinstrument instrument name
+ ipfields[] p fields
+*/
+opcode bargroup_next, 0, Si[]
+ Sinstrument, ipfields[] xin
+ _seq_next 2, Sinstrument, ipfields
+endop
+
+
+
+
+/*
+ Turn off an instrument at the next beat
+
+ beat_next_turnoff instrnum
+
+ instrnum the instrument number; fractional if required
+*/
+opcode beat_next_turnoff, 0, i
+ instrnum xin
+ _seq_turnoff 0, instrnum
+endop
+
+
+/*
+ Turn off an instrument at the next bar
+
+ next_bar_turnoff instrnum
+
+ instrnum the instrument number; fractional if required
+*/
+opcode bar_next_turnoff, 0, i
+ instrnum xin
+ _seq_turnoff 1, instrnum
+endop
+
+
+/*
+ Turn off an instrument at the next bar group
+
+ next_bargroup_turnoff instrnum
+
+ instrnum the instrument number; fractional if required
+*/
+opcode bargroup_next_turnoff, 0, i
+ instrnum xin
+ _seq_turnoff 2, instrnum
+endop
+
+
+
+
+instr bargroup_lastof
+ Scoreline = p4
+ p3 = 600
+ if (gkseq_bargroup == giseq_bargrouplength - 1) then
+ scoreline Scoreline, 1
+ turnoff
+ endif
+endin
+
+
+opcode nextbeatxof, k, i
+ ibeats xin
+ kbeatnum init ibeats
+ ktrig init 0
+ kactive init 1
+ if (gkseq_beat == 1 && kactive == 1) then
+ if (kbeatnum == 0) then
+ kactive = 0
+ ktrig = 1
+ else
+ kbeatnum -= 1
+ endif
+ endif
+ xout ktrig
+endop
+
+
+opcode lastbeatxof, k, ii
+ itotalbeats, ibeats xin
+ ktrig = 0
+ kbeatnum init itotalbeats
+ kactive init 1
+ if (kactive == 1) then
+ if (gkseq_beat == 1) then
+ if (kbeatnum - 1 == ibeats) then
+ ktrig = 1
+ kactive = 0
+ else
+ kbeatnum -= 1
+ endif
+ endif
+ endif
+
+ xout ktrig
+endop
+
+
+opcode bar_lastbeatxof, k, i
+ ibeats xin
+ kactive init 1
+ ktrig = 0
+
+ kbeats init ibeats
+ if (kactive == 1) then
+ kreducing = (kbeats > giseq_barlength) ? 1 : 0
+
+ if (kreducing == 1 && gkseq_beat == 1 && gkseq_barbeat == giseq_barlength - 1) then
+ kbeats -= giseq_barlength
+ endif
+
+ if (kreducing == 0 && gkseq_beat == 1 && (gkseq_barbeat+kbeats) == giseq_barlength) then
+ ktrig = 1
+ kactive = 0
+ endif
+ endif
+
+ xout ktrig
+endop
+
+opcode bargroup_lastbeatxof, k, io
+ ibeats, icontinuous xin
+ kactive init 1
+ ktrig = 0
+
+ ibargroupbeats = giseq_bargrouplength * giseq_barlength
+ kbeats init ibeats
+ if (kactive == 1) then
+ kreducing = (kbeats > ibargroupbeats) ? 1 : 0
+
+ if (kreducing == 1 && gkseq_bar_trig == 1 && gkseq_bargroup == giseq_bargrouplength - 1) then
+ kbeats -= ibargroupbeats
+ endif
+
+ if (kreducing == 0 && gkseq_beat == 1 && (((gkseq_bargroup)*giseq_bargrouplength)+gkseq_barbeat+kbeats) == ibargroupbeats) then
+ ktrig = 1
+
+ if (icontinuous == 0) then
+ kactive = 0
+ else
+ kbeats = ibeats
+ endif
+ endif
+
+ endif
+
+ xout ktrig
+endop
+
+
+opcode bar_lastbeatxof_launch, 0, iSi[]
+ ibeats, Sinstrument, ipfields[] xin
+ scoreline_i sprintf("i\"_bar_lastbeatxof\" 0 600 %d \"i \\\"%s\\\" %s\"", ibeats, Sinstrument, _seq_form_pfields(ipfields))
+endop
+
+
+opcode bargroup_lastbeatxof_launch, 0, iSi[]
+ ibeats, Sinstrument, ipfields[] xin
+ scoreline_i sprintf("i\"_bargroup_lastbeatxof\" 0 600 %d \"i \\\"%s\\\" %s\"", ibeats, Sinstrument, _seq_form_pfields(ipfields))
+endop
+
+
+; launch an instrument on the next relevant X beats before a bar start
+instr _bar_lastbeatxof
+ ibeats = p4
+ Scoreline = p5
+ p3 = 600
+
+ if (bar_lastbeatxof(ibeats) == 1) then
+ scoreline Scoreline, 1
+ turnoff
+ endif
+endin
+
+
+; launch an instrument on the next relevant X beats before a bar group start
+instr _bargroup_lastbeatxof
+ ibeats = p4
+ Scoreline = p5
+ p3 = 600
+
+ if (bargroup_lastbeatxof(ibeats) == 1) then
+ scoreline Scoreline, 1
+ turnoff
+ endif
+endin
+
+#end
diff --git a/site/udo/sequencing_table.udo b/site/udo/sequencing_table.udo
new file mode 100755
index 0000000..8ef40dc
--- /dev/null
+++ b/site/udo/sequencing_table.udo
@@ -0,0 +1,370 @@
+#ifndef UDO_SEQUENCING_TABLE
+#define UDO_SEQUENCING_TABLE ##
+/*
+ Table sequencing
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+#include "sequencing.udo"
+
+
+gifn_tabseq_all = ftgen(0, 0, -4, -2, 1, 1, 1, 1) ; 4 quarter notes to allow for swing
+
+/*
+
+TODO: write to database
+
+gistfn_kick1 ftgen 0, 0, -16, -2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0
+gistfn_kick2 ftgen 0, 0, -16, -2, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0
+gistfn_kick3 ftgen 0, 0, -16, -2, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0
+
+*/
+
+
+/*
+ Fill a table with random boolean values, generating the table if ifn is -1
+
+ ifnout _seq_randtable_bool ilen, ifn, ichance
+
+ ifnout the resulting table
+ ilen length of table to create, if generating
+ ifn existing table or -1 to generate
+ ichance chance of random assignment: -1 defaults to 0.5, 1 is fill all values, 0 is fill no values
+*/
+opcode _seq_randtable_bool, i, iii
+ ilen, ifn, ichance xin
+ ichance = (ichance == -1) ? 0.5 : ichance
+ if (ifn == -1) then
+ ifn ftgen 0, 0, -ilen, -2, 0
+ endif
+ index = 0
+ while (index < ftlen(ifn)) do
+ ivalue = (random(0, 1) <= ichance) ? 1 : 0
+ tableiw ivalue, index, ifn
+ index += 1
+ od
+ xout ifn
+endop
+
+
+/*
+ Fill a table with random numeric values, generating the table if ifn is -1
+
+ ifnout _seq_randtable_bool ilen, ifn, ichance
+
+ ifnout the resulting table
+ ilen length of table to create, if generating
+ ifn existing table or -1 to generate
+ iminvalue minimuma value to assign
+ imaxvalue maximum value to assign
+ irounded 1 = integer values, 0 = float values
+*/
+opcode _seq_randtable_numeric, i, iiiii
+ ilen, ifn, iminvalue, imaxvalue, irounded xin
+ if (ifn == -1) then
+ ifn ftgen 0, 0, -ilen, -2, 0
+ endif
+ index = 0
+ while (index < ftlen(ifn)) do
+ ivalue = random(iminvalue, imaxvalue)
+ tableiw ((irounded == 1) ? round(ivalue) : ivalue), index, ifn
+ index += 1
+ od
+ xout ifn
+endop
+
+
+/*
+ Generate a table with random boolean values
+
+ ifn seq_randtablegen ilen, ichance
+
+ ifn the resulting table
+ ilen length of table to create
+ ichance chance of random assignment: -1 defaults to 0.5, 1 is fill all values, 0 is fill no values
+*/
+opcode seq_randtablegen, i, ij
+ ilen, ichance xin
+ ifn _seq_randtable_bool ilen, -1, ichance
+ xout ifn
+endop
+
+
+/*
+ Fill an existing table with random boolean values
+
+ seq_randtable ifn, ichance
+
+ ifn the table to fill
+ ichance chance of random assignment: -1 defaults to 0.5, 1 is fill all values, 0 is fill no values
+*/
+opcode seq_randtable, 0, ij
+ ifn, ichance xin
+ ifn _seq_randtable_bool -1, ifn, ichance
+endop
+
+
+
+/*
+ Generate a table with random numeric values
+
+ ifn seq_randtablegen_numeric ilen, iminvalue, imaxvalue, irounded
+
+ ifnout the resulting table
+ ilen length of table to create
+ iminvalue minimuma value to assign
+ imaxvalue maximum value to assign
+ irounded 1 = integer values, 0 = float values
+*/
+opcode seq_randtablegen_numeric, i, iiii
+ ilen, iminvalue, imaxvalue, irounded xin
+ ifn _seq_randtable_numeric ilen, -1, iminvalue, imaxvalue, irounded
+ xout ifn
+endop
+
+
+
+/*
+ Fill an existing table with random numeric values
+
+ seq_randtable_numeric ifn, iminvalue, imaxvalue, irounded
+
+ ifn the table to fill
+ iminvalue minimuma value to assign
+ imaxvalue maximum value to assign
+ irounded 1 = integer values, 0 = float values
+*/
+opcode seq_randtable_numeric, 0, iiii
+ ifn, iminvalue, imaxvalue, irounded xin
+ ifn _seq_randtable_numeric -1, ifn, iminvalue, imaxvalue, irounded
+endop
+
+
+/*
+ Fill an existing table with random boolean values at k-rate on receipt of a trigger
+
+ seq_randtable kfn, ktrig, kchance
+
+ kfn the table to fill
+ ktrig repopulate the table when 1
+ kchance chance of random assignment: -1 defaults to 0.5, 1 is fill all values, 0 is fill no values
+*/
+opcode seq_randtable, 0, kkV
+ kfn, ktrig, kchance xin
+ kchance = (kchance == -1) ? 0.5 : kchance
+ if (ktrig == 1) then ; && changed:k(ktrig) == 1) then
+ kindex = 0
+ while (kindex < tableng:k(kfn)) do
+ kvalue = (random:k(0, 1) <= kchance) ? 1 : 0
+ tablewkt kvalue, kindex, kfn
+ kindex += 1
+ od
+ endif
+endop
+
+
+/*
+opcode seq_table_numeric, k, i
+ ifn xin
+ ilen tableng ifn
+ kindex init 0
+ as, a_ syncphasor gkseq_beathz*4, a(gkseq_beat)
+ kt trigger k(as), 0.05, 0 ; was 0.005.. works?
+ if (kt == 1) then
+ koutvalue table kindex, ifn
+
+ if (kindex < klength - 1) then
+ kindex += 1
+ else
+ kindex = 0
+ endif
+ endif
+ koutvalue
+endop
+*/
+
+
+
+
+/*
+ Trigger and index output table sequencer
+
+ ktrig, kindex seq_table ifn [, kreset=0, kdivisions=4, kchanceon=1, kchanceoff=1, klength=ftlen(ifn), kswing=gkseq_swing, kbeathz=gkseq_beathz, inosync=0]
+ ktrig seq_table ifn [, kreset=0, kdivisions=4, kchanceon=1, kchanceoff=1, klength=ftlen(ifn), kswing=gkseq_swing, kbeathz=gkseq_beathz, inosync=0]
+
+ ktrig the sequence trigger
+ kindex current index (max = klength-1)
+
+ ifn the table containing boolean positions
+ kreset if above 0 and changed since last value, then reset sequence index to 0
+ kdivisions how many points feature in one beat
+ kchanceon chance of an on point being on (1 = always, 0 = never)
+ kchanceoff chance of an off point being off (1 = always, 0 = never)
+ klength the maximum number of points in the table to use
+ kswing the swing amount to apply
+ kbeathz trigger rate in Hz
+ inosync do not sync to the sequencer beat clock
+*/
+opcode seq_table, kk, iOJPPJJJo
+ ifn, kreset, kdivisions, kchanceon, kchanceoff, klength, kswing, kbeathz, inosync xin
+ ilen = ftlen(ifn)
+
+ kdivisions = (kdivisions == -1) ? 4 : kdivisions
+ klength = (klength == -1) ? ilen : min(ilen, klength)
+ kswing = (kswing == -1) ? gkseq_swing : kswing
+ kbeathz = (kbeathz == -1) ? gkseq_beathz : kbeathz
+
+ kindex init 0
+ klaunchindex init 0
+
+ if (kreset >= 0 && changed:k(kreset) == 1) then
+ kindex = 0
+ endif
+
+ if (inosync == 1) then
+ kt metro kbeathz * kdivisions
+ else
+ as, a_ syncphasor kbeathz * kdivisions, a(gkseq_beat)
+ kt trigger k(as), 0.05, 0 ; was 0.005.. works?
+ endif
+ ktrigout = 0
+ if (kt == 1) then
+ ktrigout tab kindex, ifn
+ if (ktrigout == 1 && kchanceon < 1) then
+ if (random:k(0, 1) > kchanceon) then
+ ktrigout = 0
+ endif
+ elseif (ktrigout == 0 && kchanceoff < 1) then
+ if (random:k(0, 1) > kchanceoff) then
+ ktrigout = 1
+ endif
+ endif
+ klaunchindex = kindex
+ if (kindex < klength - 1) then
+ kindex += 1
+ else
+ kindex = 0
+ endif
+ endif
+
+ ktrigout = vdel_k(ktrigout, seq_swingtime(0, ((kindex-1)/kdivisions)*4, kswing), 1)
+ xout ktrigout, klaunchindex
+endop
+
+; override for single output
+opcode seq_table, k, iOJPPJJJ
+ ifn, kreset, kdivisions, kchanceon, kchanceoff, klength, kswing, kbeathz xin
+ ktrig, kindex seq_table ifn, kreset, kdivisions, kchanceon, kchanceoff, klength, kswing, kbeathz
+ xout ktrig
+endop
+
+
+/*
+ Numeric output table sequencer
+
+ kvalout seq_table_numeric ifntrig, ifnval [, kreset=0, kdivisions=4, kchanceon=1, kchanceoff=1, klength=ftlen(ifn), kswing=gkseq_swing]
+
+ kvalout the numeric output
+
+ ifntrig table containing boolean positions
+ ifnval table containing values to return
+ kreset if above 0 and changed since last value, then reset sequence index to 0
+ kdivisions how many points feature in one beat
+ kchanceon chance of an on point being on (1 = always, 0 = never)
+ kchanceoff chance of an off point being off (1 = always, 0 = never)
+ klength the maximum number of points in the table to use
+ kswing the swing amount to apply
+*/
+opcode seq_table_numeric, k, iiOJPPJJ
+ ifntrig, ifnval, kreset, kdivisions, kchanceon, kchanceoff, klength, kswing xin
+
+ if (ftlen(ifnval) != ftlen(ifntrig)) then
+ prints "seq_table_numeric: ifntrig and ifnval are not the same length\n\n"
+ exitnow
+ endif
+
+ kvalout = -1
+ ktrig, kindex seq_table ifntrig, kreset, kdivisions, kchanceon, kchanceoff, klength, kswing
+
+ if (ktrig == 1) then
+ kvalout tab kindex, ifnval
+ endif
+
+ xout kvalout
+endop
+
+
+/*
+ Table sequencer which calls the instrument with number instrnum when ifntrig is 1 for the current index.
+ The instrument is passed the following parameters:
+ p4 index of playback
+ p5 value of kp5 from opcode parameters
+
+ seq_table_scheduler instrnum, ifntrig, [ifnstart=-1, ifndur=-1, kp5=0, kreset=0, kdivisions=4, kchanceon=1, kchanceoff=1, klength=ftlen(ifn), kswing=gkseq_swing]
+
+ instrnum instrument number to schedule
+ ifntrig table containing boolean triggers per position.
+ ifnstart table containing start times (offset from current position). If -1, all instances have the start time 0
+ ifndur table containing durations per position. If -1, all instances have the duration 1
+ kp5 value to be passed to instrument as p5 if required
+ kreset if above 0 and changed since last value, then reset sequence index to 0
+ kdivisions how many points feature in one beat
+ kchanceon chance of an on point being on (1 = always, 0 = never)
+ kchanceoff chance of an off point being off (1 = always, 0 = never)
+ klength the maximum number of points in the table to use
+ kswing the swing amount to apply
+*/
+opcode seq_table_scheduler, 0, iijjOOJPPJJ
+ instrnum, ifntrig, ifnstart, ifndur, kp5, kreset, kdivisions, kchanceon, kchanceoff, klength, kswing xin
+
+ if (ifnstart != -1 && ftlen(ifnstart) != ftlen(ifntrig)) then
+ prints "seq_table_scheduler: ifntrig and ifnstart are not the same length\n\n"
+ exitnow
+ endif
+
+ if (ifndur != -1 && ftlen(ifndur) != ftlen(ifntrig)) then
+ prints "seq_table_scheduler: ifntrig and ifndur are not the same length\n\n"
+ exitnow
+ endif
+
+ ktrig, kindex seq_table ifntrig, kreset, kdivisions, kchanceon, kchanceoff, klength, kswing
+
+ if (ktrig == 1) then
+ schedulek instrnum,\
+ (ifnstart == -1) ? 0 : tab:k(kindex, ifnstart),\
+ (ifndur == -1) ? 1 : tab:k(kindex, ifndur),\
+ kindex, kp5
+ endif
+endop
+
+
+/*
+ Table sequencer which calls the instrument with name Sinstrument when ifntrig is 1 for the current index.
+ The instrument is passed the following parameters:
+ p4 index of playback
+ p5 value of kp5 from opcode parameters
+
+ seq_table_scheduler instrnum, ifntrig, [ifnstart=-1, ifndur=-1, kp5=0, kreset=0, kdivisions=4, kchanceon=1, kchanceoff=1, klength=ftlen(ifn), kswing=gkseq_swing]
+
+ Sinstrument instrument name to schedule
+ ifntrig table containing boolean triggers per position.
+ ifnstart table containing start times (offset from current position). If -1, all instances have the start time 0
+ ifndur table containing durations per position. If -1, all instances have the duration 1
+ kp5 value to be passed to instrument as p5 if required
+ kreset if above 0 and changed since last value, then reset sequence index to 0
+ kdivisions how many points feature in one beat
+ kchanceon chance of an on point being on (1 = always, 0 = never)
+ kchanceoff chance of an off point being off (1 = always, 0 = never)
+ klength the maximum number of points in the table to use
+ kswing the swing amount to apply
+*/
+opcode seq_table_scheduler, 0, SijjOOJPPJJ
+ Sinstrument, ifntrig, ifnstart, ifndur, kp5, kreset, kdivisions, kchanceon, kchanceoff, klength, kswing xin
+ seq_table_scheduler nstrnum(Sinstrument), ifntrig, ifnstart, ifndur, kp5, kreset, kdivisions, kchanceon, kchanceoff, klength, kswing
+endop
+
+#end
diff --git a/site/udo/sound_db.udo b/site/udo/sound_db.udo
new file mode 100755
index 0000000..c9862fc
--- /dev/null
+++ b/site/udo/sound_db.udo
@@ -0,0 +1,152 @@
+#ifndef UDO_RUNTIMEDB
+#define UDO_RUNTIMEDB ##
+/*
+ Runtime sound database manager
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "string_tools.udo"
+
+/*
+ Runtime sound database array structure:
+ 0 ftable number
+ 1 file id
+ 2 number of channels
+ 3 duration
+*/
+gisoundsdb[][] init 99999, 4
+gisoundsdbmax init 0
+
+
+/*
+ Load a sound to the runtime sounds db array, or return the index if already loaded (by file id tracking)
+ For pgdb usage
+ index loadsound ifileid, ichannels, iduration, Spath
+
+ index sound database index
+
+ ifileid database file id, for tracking
+ ichannels number of channels in file
+ iduration duration of file
+ Spath path to the file
+*/
+opcode _rdb_loadsound, i, iiiS
+ ifileid, ichannels, iduration, Spath xin
+ index = 0
+ ifn = -1
+ ;goto loadrequired ; HACK, 32bit fail on hash
+ while (index < gisoundsdbmax) do
+ if (gisoundsdb[index][0] == 0) then ; nothing loaded at all
+ igoto loadrequired ; give up now, don't go through all of array
+ endif
+
+ if (gisoundsdb[index][1] == ifileid) then
+ igoto complete
+ endif
+ index += 1
+ od
+
+loadrequired:
+ if (ifn == -1) then
+ isize = filelen(Spath) * filesr(Spath) * filenchnls(Spath); HACK: grain cannot use deferred time: TODO: pass in samplerate and length to opcode (TODO: database needs samplerate)
+ ifn = ftgen(0, 0, isize, 1, Spath, 0, 0, 0)
+ index = gisoundsdbmax
+ gisoundsdb[index][0] = ifn
+ gisoundsdb[index][1] = ifileid
+ gisoundsdb[index][2] = ichannels
+ gisoundsdb[index][3] = iduration
+ gisoundsdbmax += 1
+ endif
+
+complete:
+ xout index
+endop
+
+
+/*
+ Load a sound to the runtime sounds db array, or return the index if already loaded (by file id tracking)
+ For direct FS usage
+ index loadsound Spath
+
+ index sound database index
+
+ Spath path to the file
+
+*/
+opcode rdb_loadsound, i, S
+ Spath xin
+ ifileid str_hash Spath
+ ichannels = filenchnls(Spath)
+ iduration = filelen(Spath)
+print iduration
+ xout _rdb_loadsound(ifileid, ichannels, iduration, Spath)
+endop
+
+
+
+/*
+ Load a directory of sounds with suffix .wav and return an array of the runtime db indexes
+ indexes[] rdb_loaddir Spath
+
+ indexes[] sound database indexes
+
+ Spath directory path
+*/
+opcode rdb_loaddir, i[], S
+ Spath xin
+ Sfiles[] directory Spath, ".wav"
+ isounds[] init lenarray(Sfiles)
+ index = 0
+ while (index < lenarray(Sfiles)) do
+ isounds[index] rdb_loadsound Sfiles[index]
+ index += 1
+ od
+ xout isounds
+endop
+
+
+
+/*
+ Get sound array from sound database
+ isound[] get_sound index
+
+ isound[] the runtime sound database entry
+
+ index sound index as provided by load_sound
+*/
+opcode get_sound, i[], i
+ index xin
+ ;xout getrow(gisoundsdb, index) ; 32bit fail!
+
+ ilen lenarray gisoundsdb, 2
+ idata[] init ilen
+ index2 = 0
+ while (index2 < ilen) do
+ idata[index2] = gisoundsdb[index][index2]
+ index2 += 1
+ od
+ xout idata
+endop
+
+
+/*
+ Get sound array from sound database
+ ifn, ifileid, inchnls, idur get_sound index
+
+ ifn ftable of sound
+ ifileid file id
+ inchnls number of channels
+ idur duration in seconds
+
+ index sound index as provided by load_sound
+*/
+opcode get_sound, iiii, i
+ index xin
+ xout gisoundsdb[index][0], gisoundsdb[index][1], gisoundsdb[index][2], gisoundsdb[index][3]
+endop
+
+
+#end
diff --git a/site/udo/sound_melsys.udo b/site/udo/sound_melsys.udo
new file mode 100755
index 0000000..588f137
--- /dev/null
+++ b/site/udo/sound_melsys.udo
@@ -0,0 +1,215 @@
+#ifndef UDO_MELSYS
+#define UDO_MELSYS ##
+
+/*
+ Melodic sampler system
+
+ Typical external usage should only refer to
+ mel_playnote
+ mel_getcollection
+
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+
+
+#include "sound_db.udo"
+#include "pgdb.udo"
+#include "host_tools.udo"
+#include "pvs_tools.udo"
+#include "bussing.udo"
+
+
+
+opcode _mel_loadobject, i[][], S[][]
+ Sres[][] xin
+ imelmap[][] init 128, 16
+ index = 0
+ while (index < lenarray(Sres)) do
+ ifileid strtod Sres[index][0]
+ ichannels strtod Sres[index][2]
+ iduration strtod Sres[index][3]
+ inote strtod Sres[index][4]
+
+ if (imelmap[inote][0] == 0) then
+ imelmap[inote][0] = 1
+ endif
+ imelmap[inote][imelmap[inote][0]] _rdb_loadsound ifileid, ichannels, iduration, Sres[index][1]
+ imelmap[inote][0] = imelmap[inote][0] + 1 ; first index keeps track of length
+
+ index += 1
+ od
+ xout imelmap
+endop
+
+
+
+
+/*
+ Get soundcollection with basic analysis information
+ isounds[][] getcollection ScollectionName
+
+ isounds[][] soundcollection object
+ ScollectionName the name of the filecollection in the database
+*/
+opcode mel_getcollection, i[][], S
+ Scollection xin
+ Sbase = {{select file_id, f_localpath(%d, path), channels, duration, note
+ from svw.analysis_basic_collectionnorm a
+ join filecollection fc on fc.id = a.filecollection_id
+ join filecollectiontype fct on fct.id = fc.type_id
+ where fc.name = '%s'
+ and fct.name = 'melsys'
+ }}
+ Squery sprintf Sbase, gihost_type, Scollection
+ Sres[][] dbarray gidb, Squery
+ idata[][] _mel_loadobject Sres
+ xout idata
+endop
+
+
+/*
+ Get all melodic soundcollection names
+ Scollections[] mel_listcollections
+
+ Scollections[] list of soundcollections
+*/
+opcode mel_listcollections, S[], 0
+ Sres[][] dbarray gidb, "select distinct fc.name from filecollection fc join filecollectiontype fct on fct.id = fc.type_id where fct.name = 'melsys'"
+ ilen = lenarray(Sres)
+ Scollections[] init ilen
+ index = 0
+ while (index < ilen) do
+ Scollections[index] = Sres[index][0]
+ index += 1
+ od
+ xout Scollections
+endop
+
+
+/*
+ Get nearest note and a ratio to alter to specific note
+*/
+opcode _mel_getnearestnote, ii, ii[][]
+ inote, imelmap[][] xin
+ iratio = 0
+ inearest = -1
+ idistance = 999
+ index = 0
+ while (index < 128) do
+ if (imelmap[index][0] > 0) then
+ if (inote > index) then
+ imeasure = inote - index
+ if (imeasure < idistance) then
+ idistance = imeasure
+ inearest = index
+ endif
+ elseif (inote < index ) then
+ imeasure = index - inote
+ if (imeasure < idistance) then
+ idistance = imeasure
+ inearest = index
+ endif
+ else
+ idistance = 0
+ inearest = inote
+ goto output
+ endif
+ endif
+ index += 1
+ od
+ iratio = cpsmidinn(inote) / cpsmidinn(inearest)
+output:
+ isoundindex = imelmap[inearest][int(random(1, imelmap[inearest][0]))]
+ xout isoundindex, iratio
+endop
+
+
+opcode mel_getrandnote, ii, ii[][]
+ inote, imelmap[][] xin
+ iout = -1
+ if (imelmap[inote][0] > 0) then
+ index = int(random(1, imelmap[inote][0]))
+ iout = imelmap[inote][index]
+ iratio = 1
+ else
+ iout, iratio _mel_getnearestnote inote, imelmap
+ endif
+ xout iout, iratio
+endop
+
+
+
+/*
+
+
+*/
+opcode _mel_playsound, 0, iSppooooo
+ index, Sbus, iamp, ipitchratio, iwhen, iusepvs, ikeepformant, ifadein, idurationoverride xin
+ Scoreline = sprintf("i\"mel_player_default\" %f 1 \"%s\" %f %f %f %d %d %d %f", iwhen, Sbus, index, iamp, ipitchratio, iusepvs, ikeepformant, ifadein, idurationoverride)
+ scoreline_i Scoreline
+endop
+
+
+opcode mel_playnote, 0, i[][]iSpooooo
+ imelmap[][], inote, Sbus, iamp, iwhen, idurationoverride, iusepvs, ikeepformant, ifadein xin
+ isoundindex, ipitchratio mel_getrandnote inote, imelmap
+ _mel_playsound isoundindex, Sbus, iamp, ipitchratio, iwhen, iusepvs, ikeepformant, ifadein, idurationoverride
+endop
+
+
+
+
+instr mel_player_default
+ Sbus = p4
+ isoundindex = p5
+ iamp = p6
+ ipitchratio = p7
+ iusepvs = p8
+ ikeepformant = p9
+ ifadein = p10
+ idurationoverride = p11
+ isound[] = get_sound(isoundindex)
+
+ if (idurationoverride == 0) then
+ p3 = isound[3] ; set duration
+ else
+ p3 = idurationoverride
+ endif
+
+
+ if (iusepvs == 1) then
+ iloscilratio = 1
+ else
+ iloscilratio = ipitchratio
+ endif
+
+ if (isound[2] == 1) then ; check channels
+ aL loscil iamp, iloscilratio, isound[0], 1
+ if (iusepvs == 1) then
+ aL pvscaler aL, ipitchratio, ikeepformant
+ endif
+ aR = aL
+ else
+ aL, aR loscil iamp, iloscilratio, isound[0], 1
+ if (iusepvs == 1) then
+ aL pvscaler aL, ipitchratio, ikeepformant
+ aR pvscaler aR, ipitchratio, ikeepformant
+ endif
+ endif
+
+ if (ifadein == 1) then
+ kenv linseg 0, p3*0.4, 1, p3*0.5, 1, p3*0.1, 0
+ else
+ kenv linseg 1, p3*0.9, 1, p3*0.1, 0
+ endif
+
+ bus_mix(Sbus, aL*kenv, aR*kenv)
+endin
+
+
+#end
diff --git a/site/udo/sound_sdb.udo b/site/udo/sound_sdb.udo
new file mode 100755
index 0000000..82fe009
--- /dev/null
+++ b/site/udo/sound_sdb.udo
@@ -0,0 +1,271 @@
+#ifndef UDO_SOUNDSDB
+#define UDO_SOUNDSDB ##
+/*
+ SQL database interface to sound object management
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+#include "sound_db.udo"
+#include "pgdb.udo"
+#include "bussing.udo"
+#include "host_tools.udo"
+#include "pvs_tools.udo"
+
+/*
+ soundcollection object structure: 2D array with first dimension as sound index and second as
+ 0 runtime sound db index
+ 1 rms normalised over all collections
+ 2 average pitch hz
+ 3 average centroid hz
+ 4 match distance; optional depending on returning opcode
+*/
+
+
+
+;gisdb_data[][] init 99999, 4
+
+/*
+ Internal: format a standard soundcollection database result as soundcollection object
+ isounds[][] _load_sdbobject Sresult[][], [ihasdistance]
+
+ isounds[][] soundcollection object
+ Sresult[][] the raw database result string array
+ ihasdistance whether to include the additional distance dimension
+
+*/
+
+opcode _sdb_loadobject, i[][], S[][]o
+ Sres[][], ihasdistance xin
+ iarraylength = lenarray(Sres)
+ idata[][] init iarraylength, 4 + ihasdistance
+ index = 0
+ while (index < lenarray(Sres)) do
+ ifileid strtod Sres[index][0]
+ ichannels strtod Sres[index][2]
+ iduration strtod Sres[index][3]
+ idata[index][0] _rdb_loadsound ifileid, ichannels, iduration, Sres[index][1]
+ idata[index][1] strtod Sres[index][4] ; rmsnormal
+ idata[index][2] strtod Sres[index][5] ; pitch
+ idata[index][3] strtod Sres[index][6] ; centroid
+ if (ihasdistance == 1) then
+ idata[index][4] strtod Sres[index][7]
+ endif
+ index += 1
+ od
+ xout idata
+endop
+
+
+/*
+ Get a string array of all current filecollections
+ Scollections[] sdb_listcollections
+
+ Scollections[] list of collections
+*/
+opcode sdb_listcollections, S[], 0
+ Sres[][] dbarray gidb, "select name from filecollection"
+ ilen = lenarray(Sres)
+ Scollections[] init ilen
+ index = 0
+ while (index < ilen) do
+ Scollections[index] = Sres[index][0]
+ index += 1
+ od
+ xout Scollections
+endop
+
+
+/*
+ Get soundcollection(s) with basic analysis information
+ isounds[][] sdb_getcollection ScollectionName
+
+ isounds[][] soundcollection object
+ ScollectionName the name of the filecollection in the database or comma separated list of collections
+*/
+
+opcode sdb_getcollection, i[][], S
+ Scollection xin
+ Sbase = {{select file_id, f_localpath(%d, path), channels, duration, rmsnormal, pitch, centroid
+ from svw.analysis_basic_collectionnorm a
+ join filecollection fc on fc.id = a.filecollection_id
+ where %s
+ }}
+
+ if (strindex(Scollection, ",") > 0) then
+ Sclause = "(1=2"
+ index = 1
+ Stemp = Scollection
+ while (index > 0) do
+ index strindex Stemp, ","
+ if (index > 0) then
+ Sclause strcat Sclause, sprintf(" or fc.name='%s'", strsub(Stemp, 0, index))
+ Stemp strsub Stemp, index+1
+ else
+ Sclause strcat Sclause, sprintf(" or fc.name='%s'", Stemp)
+ endif
+ od
+ Sclause strcat Sclause, ")"
+ else
+ Sclause = sprintf("fc.name = '%s'", Scollection)
+ endif
+
+ Squery sprintf Sbase, gihost_type, Sclause
+ Sres[][] dbarray gidb, Squery
+ idata[][] _sdb_loadobject Sres
+ xout idata
+endop
+
+
+
+/*
+ Bubble sort a soundcollection 'object' by a specified analysis element
+ iordered[][] orderby isounds[][], ielement, [isortorder=0]
+
+ iordered[][] the sorted soundcollection 'object'
+ isounds[][] the input soundcollection 'object'
+ ielement which analysis element to order by:
+ 0 duration
+ 1 rms
+ 2 pitch
+ 3 centroid
+ 4 distance, if collection is provided from a matching opcode
+ isortorder optional sort order:
+ 0 descending
+ 1 ascending
+
+*/
+opcode sdb_orderby, i[][], i[][]io
+ idata[][], ielement, iordering xin
+ ilen = lenarray(idata)
+ index = 0
+ while (index < ilen) do
+ index2 = 0
+ while (index2 < ilen) do
+ ; duration requires an obnoxious looking cross array reference
+ if (\
+ (ielement == 0 && ( \
+ (iordering == 0 && gisoundsdb[idata[index][0]][3] > gisoundsdb[idata[index2][0]][3]) \
+ || (iordering == 1 && gisoundsdb[idata[index][0]][3] < gisoundsdb[idata[index2][0]][3]) \
+ )) || ( \
+ (iordering == 0 && idata[index][ielement] > idata[index2][ielement]) \
+ ||(iordering == 1 && idata[index][ielement] < idata[index2][ielement]) \
+ ) \
+ ) then
+ iswap[] getrow idata, index
+ iswap2[] getrow idata, index2
+ idata setrow iswap2, index
+ idata setrow iswap, index2
+ endif
+ index2 += 1
+ od
+ index += 1
+ od
+ xout idata
+endop
+
+
+
+
+
+
+/*
+ Filter a soundcollection object with min and max parameters of basic analysis data applied
+ ifiltered[][], ivalid subselect isounds[][],
+ [iminduration, imaxdur, iminrms, imaxrms, iminpitch, imaxpitch, imincent, imaxcent]
+
+ ifiltered[][] the new soundcollection 'object' with sounds limited to scope specified
+ ivalid 1 if records returned, 0 if the returned array is effectively empty
+ isounds[][] the input soundcollection 'object' to be filtered
+ iminduration optional minimum duration
+ imaxduration optional maximum duration
+ iminrms optional minimum rms
+ imaxrms optional maximum rms
+ iminpitch optional minimum pitch
+ imaxpitch optional maximum pitch
+ imincent optional minimum centroid
+ imaxcent optional maximum centroid
+
+*/
+opcode sdb_subselect, i[][]i, i[][]iii
+ idata[][], ielement, imin, imax xin
+
+ indexes[] init lenarray(idata)
+ imaxindex = 0
+ index = 0
+
+ while (index < lenarray(idata)) do
+ if ( \
+ idata[index][ielement] >= imin && idata[index][ielement] <= imax \
+ ) then
+ indexes[imaxindex] = index
+ imaxindex += 1
+ endif
+ index += 1
+ od
+
+ if (imaxindex == 0) then
+ ifiltered[][] init 1, 1
+ ivalid = 0
+ else
+ ifiltered[][] init imaxindex, 7
+ ivalid = 1
+ index = 0
+ while (index < imaxindex) do ; TODO setrow here?????
+ index2 = 0
+ while (index2 < 7) do
+ ifiltered[index][index2] = idata[indexes[index]][index2]
+ index2 += 1
+ od
+ index += 1
+ od
+ endif
+ xout ifiltered, ivalid
+endop
+
+
+
+
+opcode _sdb_playsound, 0, iSppoooo
+ index, Sbus, iamp, ihz, iwhen, iusepvs, ikeepformant, ifadein xin
+ Scoreline = sprintf("i\"sdb_player_default\" %f 1 \"%s\" %d %f %f %d %d %d", iwhen, Sbus, index, iamp, ihz, iusepvs, ikeepformant, ifadein)
+ scoreline_i Scoreline
+endop
+
+
+opcode sdb_playsound, 0, i[][]iSpooooo
+ isounds[][], index, Sbus, iamp, iwhen, ihz, iusepvs, ikeepformant, ifadein xin
+ _sdb_playsound isounds[index][0], Sbus, iamp, ihz, iwhen, iusepvs, ikeepformant, ifadein
+endop
+
+
+opcode sdb_playrandom, 0, i[][]Spooooo
+ isounds[][], Sbus, iamp, iwhen, ihz, iusepvs, ikeepformant, ifadein xin
+ index = round(random(0, lenarray(isounds)-1))
+ _sdb_playsound isounds[index][0], Sbus, iamp, ihz, iwhen, iusepvs, ikeepformant, ifadein
+endop
+
+
+instr sdb_player_default
+ Sbus = p4
+ isoundindex = p5
+ iamp = p6
+ ihz = p7
+ iusepvs = p8
+ ikeepformant = p9
+ ifadein = p10
+ isound[] = get_sound(isoundindex)
+
+ p3 = isound[3]
+
+ aL, aR loscil iamp, 1, isound[0], 1
+
+ kenv linseg 1, p3*0.9, 1, p3*0.1, 0
+
+ bus_mix(Sbus, aL*kenv, aR*kenv)
+endin
+
+#end
diff --git a/site/udo/sounddb.udo b/site/udo/sounddb.udo
new file mode 100755
index 0000000..91f6f10
--- /dev/null
+++ b/site/udo/sounddb.udo
@@ -0,0 +1,270 @@
+#ifndef UDO_SOUNDDB
+#define UDO_SOUNDDB ##
+/*
+ SQL database interface to sound object management.
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+; if XDB extract has been loaded, don't use database
+#ifdef XDB_SET
+#include "soundxdb.udo"
+#else
+
+#include "pgdb.udo"
+#include "host_tools.udo"
+
+; set max number of files for global array allocation
+imaxindex dbscalar gidb, "SELECT MAX(id)+1 FROM file"
+gisounddb[][] init imaxindex, 4
+
+
+/*
+ Load file to gisounddb: to be used internally and passed parameters from database
+
+ _sounddb_loadfile ifileid, Spath, ichannels, iduration, irmsnorm, isamplerate [, imono=0]
+
+ ifileid database file ID, corresponds to index of gisounddb
+ Spath path to load sound file from
+ ichannels number of channels
+ iduration sound duration
+ irmsnorm normalisation factor
+ isamplerate sample rate
+ imono whether to load sound as mono
+*/
+opcode _sounddb_loadfile, 0, iSiiiio
+ ifileid, Spath, ichannels, iduration, irmsnorm, isamplerate, imono xin
+ if (imono == 1) then
+ ichannels = 1
+ iloadchan = 1
+ else
+ iloadchan = 0
+ endif
+ isize = iduration * isamplerate * ichannels; HACK: grain cannot use deferred time: TODO: pass in samplerate and length to opcode (TODO: database needs samplerate)
+ ifn = ftgen(0, 0, isize, 1, Spath, 0, 0, iloadchan)
+ gisounddb[ifileid][0] = ifn
+ gisounddb[ifileid][1] = ichannels
+ gisounddb[ifileid][2] = iduration
+ gisounddb[ifileid][3] = irmsnorm
+endop
+
+
+/*
+ Get file details for a give file ID
+
+ ifn, ichannels, iduration, irmsnorm sounddb_get ifileid
+
+ ifn ftable number containing sound
+ ichannels number of channels in file
+ iduration duration of file in seconds
+ irmsnorm RMS normalisation factor
+ ifileid file ID to look up
+*/
+opcode sounddb_get, iiii, i
+ ifileid xin
+ xout gisounddb[ifileid][0], gisounddb[ifileid][1], gisounddb[ifileid][2], gisounddb[ifileid][3]
+endop
+
+
+/*
+ Load files to gisounddb if not already loaded, to be passed a 2D string array as returned from a database query. Returns the file IDs in an array
+
+ ifileids[] _sounddb_loadobject SqueryResult[][] [, imono=0]
+
+ ifileids[] database file IDs, which also correspond to indexes in gisounddb
+ SqueryResult[][] query result from database with each row containing file ID, path, channels, duration, RMS normalisation factor and samplerate
+ imono whether to load all sounds as mono
+*/
+opcode _sounddb_loadobject, i[], S[][]o
+ Sres[][], imono xin
+ iarraylength = lenarray(Sres)
+ idata[] init iarraylength
+ index = 0
+ while (index < iarraylength) do
+ ifileid strtod Sres[index][0] ; fileid
+ idata[index] = ifileid
+
+ if (gisounddb[ifileid][0] == 0) then ; load required
+ _sounddb_loadfile ifileid, Sres[index][1], strtod(Sres[index][2]), strtod(Sres[index][3]), strtod(Sres[index][4]), strtod(Sres[index][5]), imono
+ endif
+ index += 1
+ od
+ xout idata
+endop
+
+
+/*
+ Load a sound to gisounddb if not already loaded, based on a specified query using f_nearestnote.
+ Return the file ID and the result of column 6, which is the ratio to the nearest pitch requested.
+ Used internally by the sounddb_mel_nearestnote opcodes which select one row
+
+ ifileid, ipitchratio _sounddb_mel_nearestnote_inner Squery
+
+ ifileid file ID
+ ipitchratio pitch ratio to note requested
+ Squery query to evaluate
+*/
+opcode _sounddb_mel_nearestnote_inner, ii, S
+ Squery xin
+ Sres[][] dbarray gidb, Squery
+ ifileid strtod Sres[0][0]
+
+ if (gisounddb[ifileid][0] == 0) then ; load required
+ _sounddb_loadfile ifileid, Sres[0][1], strtod(Sres[0][2]), strtod(Sres[0][3]), strtod(Sres[0][4]), strtod(Sres[0][5])
+ endif
+ xout ifileid, strtod(Sres[0][6])
+endop
+
+
+; nearest note query base
+#define SOUNDDB_NNQUERYBASE #SELECT file_id, f_localpath(%d, path), channels, duration, rmsnormal, samplerate, pitchratio FROM f_nearestnote#
+
+
+/*
+ Get the nearest note in a filecollection, return the file ID and the pitch ratio adjustment required to the requested note.
+
+ ifileid, ipitchratio sounddb_mel_nearestnote Scollection, inote
+
+ ifileid file ID, corresponding to index in gisounddb
+ ipitchratio pitch ratio adjustment required to make the file match the requested note
+ Scollection collection name
+ inote MIDI note number
+*/
+opcode sounddb_mel_nearestnote, ii, Si
+ Scollection, inote xin
+ ifileid, ipitchratio _sounddb_mel_nearestnote_inner sprintf("$SOUNDDB_NNQUERYBASE (%f, '%s')", gihost_type, inote, Scollection)
+ xout ifileid, ipitchratio
+endop
+
+
+/*
+ Get the nearest note in a filecollection, return the file ID and the pitch ratio adjustment required to the requested note.
+
+ ifileid, ipitchratio sounddb_mel_nearestnote icollectionid, inote
+
+ ifileid file ID, corresponding to index in gisounddb
+ ipitchratio pitch ratio adjustment required to make the file match the requested note
+ icollectionid collection ID
+ inote MIDI note number
+*/
+opcode sounddb_mel_nearestnote, ii, ii
+ icollectionid, inote xin
+ ifileid, ipitchratio _sounddb_mel_nearestnote_inner sprintf("$SOUNDDB_NNQUERYBASE (%f, %d)", gihost_type, inote, icollectionid)
+ xout ifileid, ipitchratio
+endop
+
+
+/*
+ List file collections
+
+ Sout[][] list of file collection name and type
+*/
+opcode sounddb_listcollections, S[][], 0
+ Squery = "select fc.name, fct.name from filecollection fc join filecollectiontype fct on fc.type_id = fct.id"
+ Sout[][] dbarray gidb, Squery
+ xout Sout
+endop
+
+
+/*
+
+*/
+opcode sounddb_getbypathpart, i[], S
+ SpathPart xin
+ Sbase = {{select file_id, f_localpath(%d, path), channels, duration, rmsnormal, samplerate
+ from svw.analysis_basic_collectionnorm
+ where path ilike '%s'
+ }}
+ Squery = sprintf(Sbase, gihost_type, SpathPart)
+ Sres[][] dbarray gidb, Squery
+ idata[] _sounddb_loadobject Sres
+ xout idata
+endop
+
+
+/*
+ Get the collection ID and file IDs of a filecollection, also loading each file to gisounddb
+
+ ifileids[], icollectionid sounddb_getcollection Scollection [, imono=0]
+
+ ifileids[] file IDs in the collection, accessible as indexes to f-tables in gisounddb
+ icollectionid collection ID
+ Scollection collection name
+ imono whether to load all sounds in mono
+*/
+opcode sounddb_getcollection, i[]i, So
+ Scollection, imono xin
+ Sbase = {{select file_id, f_localpath(%d, path), channels, duration, rmsnormal, samplerate, fc.id
+ from svw.analysis_basic_collectionnorm a
+ join filecollection fc on fc.id = a.filecollection_id
+ where %s
+ }}
+
+ if (strindex(Scollection, ",") > 0) then
+ Sclause = "(1=2"
+ index = 1
+ Stemp = Scollection
+ while (index > 0) do
+ index strindex Stemp, ","
+ if (index > 0) then
+ Sclause strcat Sclause, sprintf(" OR fc.name='%s'", strsub(Stemp, 0, index))
+ Stemp strsub Stemp, index+1
+ else
+ Sclause strcat Sclause, sprintf(" OR fc.name='%s'", Stemp)
+ endif
+ od
+ Sclause strcat Sclause, ")"
+ else
+ Sclause = sprintf("fc.name = '%s'", Scollection)
+ endif
+
+ Squery sprintf Sbase, gihost_type, Sclause
+ Sres[][] dbarray gidb, Squery
+ idata[] _sounddb_loadobject Sres, imono
+ icollectionid = strtod(Sres[0][6])
+ xout idata, icollectionid
+endop
+
+
+/*
+ Get the ID of a filecollection by name
+
+ icollectionid sounddb_getcollectionid Scollection [, ipreload = 0, imono = 0]
+
+ icollectionid collection ID
+ Scollection collection name
+ ipreload preload the files to gisounddb
+ imono whether to load all sounds in mono
+*/
+opcode sounddb_getcollectionid, i, Soo
+ Scollection, ipreload, imono xin
+ if (ipreload == 0) then
+ icollectionid = dbscalar(gidb, sprintf("SELECT id FROM filecollection WHERE name = '%s'", Scollection))
+ else
+ i_[], icollectionid sounddb_getcollection Scollection, imono
+ endif
+ xout icollectionid
+endop
+
+/*
+ Get the file IDs of a filecollection, also loading each file to gisounddb
+
+ ifileids[] sounddb_getcollection Scollection [, imono = 0]
+
+ ifileids[] file IDs in the collection, accessible as indexes to f-tables in gisounddb
+ Scollection collection name
+ imono whether to load all sounds in mono
+*/
+opcode sounddb_getcollection, i[], So
+ Scollection, imono xin
+ idata[], icollectionid sounddb_getcollection Scollection, imono
+ xout idata
+endop
+
+; end of XDB_SET
+#end
+
+#end
diff --git a/site/udo/soundfont.udo b/site/udo/soundfont.udo
new file mode 100755
index 0000000..6c60b99
--- /dev/null
+++ b/site/udo/soundfont.udo
@@ -0,0 +1,68 @@
+#ifndef UDO_SOUNDFONT
+#define UDO_SOUNDFONT ##
+/*
+ Sound font tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+#include "host_tools.udo"
+
+; load soundfonts
+isf_temp[] fillarray \
+ sfload(dir_soundfont("Rhodes/Galaxy_Electric_Pianos.sf2")),\
+ sfload(dir_soundfont("Rhodes/vibra.sf2")),\
+ sfload(dir_soundfont("Rhodes/JR_elepiano.sf2")),\
+ sfload(dir_soundfont("Rhodes/Crysrhod.sf2")),\
+ sfload(dir_soundfont("Rhodes/KR-O5R-Operator.sf2"))
+
+; prepare rhodes presets
+gisf_rhodes[] fillarray \
+ sfpreset(4, 2, isf_temp[0], 0),\
+ sfpreset(5, 2, isf_temp[0], 1),\
+ sfpreset(4, 3, isf_temp[0], 2),\
+ sfpreset(5, 3, isf_temp[0], 3),\
+ sfpreset(4, 4, isf_temp[0], 4),\
+ sfpreset(5, 4, isf_temp[0], 5),\
+ sfpreset(0, 0, isf_temp[1], 6),\
+ sfpreset(2, 0, isf_temp[1], 7),\
+ sfpreset(0, 0, isf_temp[2], 8 ),\
+ sfpreset(0, 0, isf_temp[3], 9),\
+ sfpreset(0, 0, isf_temp[4], 10)
+
+; rhodes gains for each preset index as above
+gisf_rhodes_gain[] fillarray 1.6, 5, 1, 1, 1, 1, 1, 1, 1, 1.5, 1
+gisf_rhodes_noteaugment[] fillarray 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0
+
+/*
+ Play rhodes soundfont
+ aL, aR sf_rhodes index, inote, [ivel]
+
+ index index in gisf_rhodes, 0 to 10
+ inote midi note number
+ ivel velocity, 0 to 1, default=1
+*/
+opcode sf_rhodes, aa, iip
+ index, inote, ivel xin
+ aL, aR sfplay3 ivel, inote + gisf_rhodes_noteaugment[index], gisf_rhodes_gain[index]/30000, 1, gisf_rhodes[index]
+ xout aL, aR
+endop
+
+
+/*
+ Play random rhodes soundfont from gisf_rhodes
+ aL, aR sf_rhodes inote, [ivel]
+
+ inote midi note number
+ ivel velocity, 0 to 1, default=1
+*/
+opcode sf_rhodes_random, aa, ip
+ inote, ivel xin
+ aL, aR sf_rhodes round(random(0, lenarray(gisf_rhodes)-1)), inote, ivel
+ xout aL, aR
+endop
+
+#end \ No newline at end of file
diff --git a/site/udo/soundfonts/Rhodes/Crysrhod.sf2 b/site/udo/soundfonts/Rhodes/Crysrhod.sf2
new file mode 100755
index 0000000..2fc86b4
--- /dev/null
+++ b/site/udo/soundfonts/Rhodes/Crysrhod.sf2
Binary files differ
diff --git a/site/udo/soundfonts/Rhodes/Galaxy_Electric_Pianos.sf2 b/site/udo/soundfonts/Rhodes/Galaxy_Electric_Pianos.sf2
new file mode 100755
index 0000000..9f92285
--- /dev/null
+++ b/site/udo/soundfonts/Rhodes/Galaxy_Electric_Pianos.sf2
Binary files differ
diff --git a/site/udo/soundfonts/Rhodes/JR_elepiano.sf2 b/site/udo/soundfonts/Rhodes/JR_elepiano.sf2
new file mode 100755
index 0000000..23cf6e5
--- /dev/null
+++ b/site/udo/soundfonts/Rhodes/JR_elepiano.sf2
Binary files differ
diff --git a/site/udo/soundfonts/Rhodes/KR-O5R-Operator.sf2 b/site/udo/soundfonts/Rhodes/KR-O5R-Operator.sf2
new file mode 100755
index 0000000..99c3782
--- /dev/null
+++ b/site/udo/soundfonts/Rhodes/KR-O5R-Operator.sf2
Binary files differ
diff --git a/site/udo/soundfonts/Rhodes/jRhodes3c-stereo.sf2 b/site/udo/soundfonts/Rhodes/jRhodes3c-stereo.sf2
new file mode 100755
index 0000000..cacd81c
--- /dev/null
+++ b/site/udo/soundfonts/Rhodes/jRhodes3c-stereo.sf2
Binary files differ
diff --git a/site/udo/soundfonts/Rhodes/vibra.sf2 b/site/udo/soundfonts/Rhodes/vibra.sf2
new file mode 100755
index 0000000..7c1c415
--- /dev/null
+++ b/site/udo/soundfonts/Rhodes/vibra.sf2
Binary files differ
diff --git a/site/udo/soundxdb.udo b/site/udo/soundxdb.udo
new file mode 100755
index 0000000..70160d6
--- /dev/null
+++ b/site/udo/soundxdb.udo
@@ -0,0 +1,201 @@
+#ifndef UDO_SOUNDXDB
+#define UDO_SOUNDXDB ##
+/*
+ SQL database extract interface to sound object management.
+ File containing extract definitions must be included before this.
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+#ifndef XDB_SET
+prints "Database extract not defined; cannot continue.\n\n\n"
+exitnow
+#end
+
+
+#ifndef XDB_MINNOTE
+#define XDB_MINNOTE #0#
+#end
+
+
+
+
+
+/*
+ Get the ID of a filecollection by name
+
+ icollectionid sounddb_getcollectionid Scollection
+
+ icollectionid collection ID
+ Scollection collection name
+*/
+opcode sounddb_getcollectionid, i, S
+ Scollection xin
+ index = 0
+ while (index < lenarray(gSxdb_collections)) do
+ if (strcmp(gSxdb_collections[index], Scollection) == 0) then
+ igoto complete
+ endif
+ index += 1
+ od
+ index = -1
+complete:
+ xout index
+endop
+
+
+
+/*
+ Get the file IDs of a filecollection, also loading each file to gisounddb
+
+ ifileids[] sounddb_getcollection Scollection
+
+ ifileids[] file IDs in the collection, accessible as indexes to f-tables in gisounddb
+ Scollection collection name
+*/
+opcode sounddb_getcollection, i[], S
+ Scollection xin
+ idata[], icollectionid sounddb_getcollection Scollection
+ xout idata
+endop
+
+
+
+
+
+/*
+ Get the collection ID and file IDs of a filecollection, also loading each file to gisounddb
+
+ ifileids[], icollectionid sounddb_getcollection Scollection
+
+ ifileids[] file IDs in the collection, accessible as indexes to f-tables in gisounddb
+ icollectionid collection ID
+ Scollection collection name
+*/
+opcode sounddb_getcollection, i[]i, S
+ Scollection xin
+
+ itotalsize = 0
+ if (strindex(Scollection, ",") > 0) then
+ index = 1
+ Stemp = Scollection
+ while (index > 0) do
+ index strindex Stemp, ","
+ if (index > 0) then
+ icollectionid = sounddb_getcollectionid(strsub(Stemp, 0, index))
+ itotalsize += ftlen(gixdb_collectionsfn[icollectionid])
+ Stemp strsub Stemp, index+1
+ else
+ icollectionid = sounddb_getcollectionid(Stemp)
+ itotalsize += ftlen(gixdb_collectionsfn[icollectionid])
+ endif
+ od
+
+ idata[] init itotalsize
+ iwriteindex = 0
+ index = 1
+ Stemp = Scollection
+ while (index > 0) do
+ index strindex Stemp, ","
+ if (index > 0) then
+ icollectionid = sounddb_getcollectionid(strsub(Stemp, 0, index))
+ ifn = gixdb_collectionsfn[icollectionid]
+ ireadindex = 0
+ while (ireadindex < ftlen(ifn)) do
+ idata[iwriteindex] table ireadindex, ifn
+ ireadindex += 1
+ iwriteindex += 1
+ od
+ Stemp strsub Stemp, index+1
+ else
+ icollectionid = sounddb_getcollectionid(Stemp)
+ ifn = gixdb_collectionsfn[icollectionid]
+ ireadindex = 0
+ while (ireadindex < ftlen(ifn)) do
+ idata[iwriteindex] table ireadindex, ifn
+ ireadindex += 1
+ iwriteindex += 1
+ od
+ endif
+ od
+
+ else
+ icollectionid = sounddb_getcollectionid(Scollection)
+ idata[] tab2array gixdb_collectionsfn[icollectionid]
+ igoto complete
+ endif
+
+complete:
+ xout idata, icollectionid
+endop
+
+
+
+
+/*
+ gixdb_pitchreference
+ has 127 * 4 entries. get start and end indexes for gixdb_pitchnotes by
+ index = (inote + (icollectionid * 127)) * 2
+
+ then values
+ iminindex table index, gixdb_pitchreference
+ imaxindex table index+1, gixdb_pitchreference
+
+ then get the actual files which are between min and max indexes eg
+
+ iselected = round(random(iminindex, imaxindex))
+ ifileid table iselected, gixdb_pitchnotes
+ ipitchadjust table iselected, gixdb_pitchadjust
+
+
+
+*/
+
+
+
+
+/*
+ Get the nearest note in a filecollection, return the file ID and the pitch ratio adjustment required to the requested note.
+
+ ifileid, ipitchratio sounddb_mel_nearestnote icollectionid, inote
+
+ ifileid file ID, corresponding to index in gisounddb
+ ipitchratio pitch ratio adjustment required to make the file match the requested note
+ icollectionid collection ID
+ inote MIDI note number
+*/
+opcode sounddb_mel_nearestnote, ii, ii
+ icollectionid, inote xin
+ irefindex = ((inote - $XDB_MINNOTE) + tab_i(icollectionid, gixdb_pitchrefoffset)) * 2
+ iselected = round(random(tab_i(irefindex, gixdb_pitchreference), tab_i(irefindex+1, gixdb_pitchreference)))
+ ifileid tab_i iselected, gixdb_pitchnotes
+ ipitchratio tab_i iselected, gixdb_pitchadjust
+
+ xout ifileid, ipitchratio
+endop
+
+
+
+/*
+ Get the nearest note in a filecollection, return the file ID and the pitch ratio adjustment required to the requested note.
+
+ ifileid, ipitchratio sounddb_mel_nearestnote Scollection, inote
+
+ ifileid file ID, corresponding to index in gisounddb
+ ipitchratio pitch ratio adjustment required to make the file match the requested note
+ Scollection collection name
+ inote MIDI note number
+*/
+opcode sounddb_mel_nearestnote, ii, Si
+ Scollection, inote xin
+ icollectionid = sounddb_getcollectionid(Scollection)
+ ifileid, ipitchratio sounddb_mel_nearestnote icollectionid, inote
+ xout ifileid, ipitchratio
+endop
+
+
+
+#end
diff --git a/site/udo/soundxdb_extract.udo b/site/udo/soundxdb_extract.udo
new file mode 100755
index 0000000..64899c8
--- /dev/null
+++ b/site/udo/soundxdb_extract.udo
@@ -0,0 +1,67 @@
+#ifndef UDO_SOUNDDB_XPORT
+#define UDO_SOUNDDB_XPORT ##
+/*
+ SQL database extraction to be used with soundxdb.udo
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+#include "pgdb.udo"
+
+
+/*
+ Extract UDO definition from database for specified collection(s), to be used with soundxdb.udo.
+ Permits using functionality of sounddb.udo without database connectivity.
+ The file output includes an include of soundxdb.udo, so only the resulting file needs to be included.
+
+ soundxdb_extract Sfile, Scollections [, iminnote=0]
+
+ Sfile file path to extract to
+ Scollections collection name, or multiple comma-separated (no whitespace) collection names
+ iminnote the minimum MIDI note number to extract (higher can save output space/text usage; lower notes (eg < 25) are not usually used)
+*/
+opcode soundxdb_extract, 0, SSo
+ Sfile, Scollections, iminnote xin
+
+ Sclause = ""
+ if (strindex(Scollections, ",") > 0) then
+ index = 1
+ Stemp = Scollections
+ while (index > 0) do
+ index strindex Stemp, ","
+ if (index > 0) then
+ Sclause strcat Sclause, sprintf("'%s',", strsub(Stemp, 0, index))
+ Stemp strsub Stemp, index+1
+ else
+ Sclause strcat Sclause, sprintf("'%s'", Stemp)
+ endif
+ od
+ else
+ Sclause = sprintf("'%s'", Scollections)
+ endif
+
+ Squery = sprintf("SELECT f_xdb_export(%d, %s)", iminnote, Sclause)
+
+ iwritelines = 50
+ Scache = ""
+ Sres[][] dbarray gidb, Squery
+ index = 0
+ while (index < lenarray(Sres)) do
+ Scache strcat Scache, Sres[index][0]
+ Scache strcat Scache, "\n"
+
+ if (index % iwritelines == 0) then
+ fprints Sfile, Scache
+ Scache = ""
+ endif
+ index += 1
+ od
+ fprints Sfile, Scache
+ Scache = ""
+endop
+
+
+#end
diff --git a/site/udo/spectral_sampler.udo b/site/udo/spectral_sampler.udo
new file mode 100755
index 0000000..04f1f4d
--- /dev/null
+++ b/site/udo/spectral_sampler.udo
@@ -0,0 +1,126 @@
+#ifndef UDO_SPECTRALSAMPLER
+#define UDO_SPECTRALSAMPLER ##
+/*
+ Spectral sampler
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ ; pvs buffer handle and length storage
+gipvsBuffers[] init 8
+gipvsBufferLengths[] init lenarray(gipvsBuffers)
+
+; record to a spectral sampling buffer
+; ibuffer spectralsamplerecord ain, iduration, ifftsize
+opcode spectralsamplerrecord, i, aio
+ ain, iduration, ifftsize xin
+ if (ifftsize == 0) then
+ ifftsize = 1024
+ endif
+ kamp linseg 0, iduration * 0.01, 1, iduration * 0.98, 1, iduration * 0.01, 0
+ ain1 = ain * kamp
+ ilength = iduration + (ifftsize / sr)
+ fanal pvsanal ain1, ifftsize, ifftsize/4, ifftsize, 1
+ ibuffer, ktim pvsbuffer fanal, ilength
+ xout ibuffer
+endop
+
+
+; play back from a spectral sampling buffer
+; aL, aR spectralsamplerplay ibuffer, ilength, ktime, kpos
+opcode spectralsamplerplay, aa, iikk
+ ibuffer, ilength, ktime, kpos xin
+ kchange changed kpos
+ aphasor, asyncout syncphasor a(ktime * ilength), a(kchange)
+ kphasor = k(aphasor) + (kpos * ilength)
+ fL pvsbufread kphasor, ibuffer
+ fR pvsbufread kphasor*0.95, ibuffer
+ aL pvsynth fL
+ aR pvsynth fR
+ xout aL, aR
+endop
+
+
+*/
+; ABOVE ARE LEGACY AND TO BE DEPRECATED
+
+
+/*
+ Spectral sampling and playback
+
+ Can't sub-opcode the f in the a for some reason, doesn't work - so some duplication here
+*/
+
+opcode spectralsampler, f, fkkio
+ fanal, ktime, kpos, ilength, icontinuous xin
+
+ ksampling init 1
+ if (icontinuous == 1 || ksampling == 1) then
+ ibuffer, ktime pvsbuffer fanal, ilength
+ if (icontinuous == 0 && timeinsts() >= ilength) then
+ ksampling = 0
+ endif
+ endif
+
+ kchange changed kpos
+ aphasor, asyncout syncphasor a(ktime * ilength), a(kchange)
+ kphasor = k(aphasor) + (kpos * ilength)
+ fread pvsbufread kphasor, ibuffer
+ xout fread
+endop
+
+
+
+opcode spectralsampler, a, akkioo
+ ain, ktime, kpos, ilength, ifftsize, icontinuous xin
+
+ ifftsize = (ifftsize == 0) ? 1024 : ifftsize
+ ksampling init 1
+ if (icontinuous == 1 || ksampling == 1) then
+ fanal pvsanal ain, ifftsize, ifftsize/4, ifftsize, 1
+ ibuffer, ktime pvsbuffer fanal, ilength
+ if (icontinuous == 0 && timeinsts() >= ilength) then
+ ksampling = 0
+ endif
+ endif
+
+ kchange changed kpos
+ aphasor, asyncout syncphasor a(ktime * ilength), a(kchange)
+ kphasor = k(aphasor) + (kpos * ilength)
+ fread pvsbufread kphasor, ibuffer
+ aout pvsynth fread
+ xout aout
+endop
+
+
+
+opcode spectralsampler, aa, aakkioo
+ ainL, ainR, ktime, kpos, ilength, ifftsize, icontinuous xin
+
+ ifftsize = (ifftsize == 0) ? 1024 : ifftsize
+ ksampling init 1
+ if (icontinuous == 1 || ksampling == 1) then
+ fanalL pvsanal ainL, ifftsize, ifftsize/4, ifftsize, 1
+ fanalR pvsanal ainR, ifftsize, ifftsize/4, ifftsize, 1
+ ibufferL, ktime pvsbuffer fanalL, ilength
+ ibufferR, ktime pvsbuffer fanalR, ilength
+ if (icontinuous == 0 && timeinsts() >= ilength) then
+ ksampling = 0
+ endif
+ endif
+
+ kchange changed kpos
+ aphasor, asyncout syncphasor a(ktime * ilength), a(kchange)
+ kphasor = k(aphasor) + (kpos * ilength)
+ freadL pvsbufread kphasor, ibufferL
+ freadR pvsbufread kphasor, ibufferR
+ aoutL pvsynth freadL
+ aoutR pvsynth freadR
+ xout aoutL, aoutR
+endop
+
+#end
diff --git a/site/udo/spectral_transforms.udo b/site/udo/spectral_transforms.udo
new file mode 100755
index 0000000..7e9424f
--- /dev/null
+++ b/site/udo/spectral_transforms.udo
@@ -0,0 +1,358 @@
+#ifndef UDO_SPECTRALTRANSFORMS
+#define UDO_SPECTRALTRANSFORMS ##
+/*
+ Spectral transforms, mostly recursive using pvsbin
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "/wavetables.udo"
+
+/*
+ Validate start and end bins against a f-sig, and check/set common variables
+ If start and end are <= 1, treat them as ratios and calculate accordingly
+
+ istartbin, iendbin, ibin, kportamento, ifnwave _spc_validatebins fsig [, istart=0, iend=1, kportamento=-1, ifnwave=-1]
+
+ istartbin resulting bin number
+ iendbin resulting bin number
+ ibin initial bin to use
+ kportamento portamento in/out
+ ifnwave wave f-table in/out
+ fsig f-sig to validate maximum bin number against
+ istart start bin number or ratio
+ iend end bin number or ratio
+*/
+opcode _spc_validatebins, iiiki, fopJj
+ fsig, istart, iend, kportamento, ifnwave xin
+ ioverlap, inumbins, iwinsize, iformat pvsinfo fsig
+
+ if (istart <= 1 && iend <= 1) then ; is ratio
+ istartbin = max(round(inumbins * istart), 1)
+ iendbin = round(inumbins * iend)
+ else ; is absolute bin number
+ istartbin = max(1, istart)
+ iendbin = min(inumbins, iend)
+ endif
+ ibin = istartbin
+ kportamento = (kportamento == -1) ? 0.02 : kportamento
+ ifnwave = (ifnwave == -1) ? gifnSine : ifnwave
+
+ xout istartbin, iendbin, ibin, kportamento, ifnwave
+endop
+
+
+/*
+ Spectral delay
+
+ aout spc_delay fsig, kdeltime, kdeladd [, istart=0, iend=1, kfreqmod=1, kportamento=0.01, ifnwave=-1, ibin=-1]
+
+ aout audio output
+ fsig input signal
+ kdeltime initial delay time in seconds
+ kdeladd increment delay by this with each bin increment or decrement
+ istart absolute bin number or ratio of the start bin, top end bins may be quite low, around a ratio of 0.1
+ iend absolute bin number or ratio of the end bin
+ kfreqmod frequency modulation ratio in resynthesis
+ kportamento portamento time for amp and frequency
+ ifnwave f-table to use for the oscillator, default is sine
+ ibin bin tracking used internally, should not be set
+*/
+opcode spc_delay, a, fkkopPJjj
+ fsig, kdeltime, kdeladd, istart, iend, kfreqmod, kportamento, ifnwave, ibin xin
+ if (ibin == -1) then
+ istart, iend, ibin, kportamento, ifnwave _spc_validatebins fsig, istart, iend, kportamento, ifnwave
+ endif
+
+ idirection = (istart < iend) ? 1 : -1
+ kamp, kfreq pvsbin fsig, ibin
+ imaxdelay = 1000
+ aout oscili portk(kamp, kportamento), portk(kfreq, kportamento) * kfreqmod, ifnwave
+ kdel = min:k(imaxdelay, kdeltime + (kdeladd * (((idirection == 1) ? ibin - istart : istart - ibin) + 1)) * 1000)
+ aout vdelay aout, a(kdel), imaxdelay
+
+ if ((idirection == 1 && ibin + 1 < iend) || (idirection == -1 && ibin - 1 >= iend)) then
+ arecurse spc_delay fsig, kdeltime, kdeladd, istart, iend, kfreqmod, kportamento, ifnwave, ibin + idirection
+ aout += arecurse
+ endif
+
+ xout aout
+endop
+
+
+/*
+ Spectral incremental shift
+
+ aout spc_shift fsig, kfreqincr [, istart=0, iend=1, kfreqmod=1, kportamento=0.01, ifnwave=-1, ibin=-1]
+
+ aout audio output
+ fsig input signal
+ kfreqincr frequency increment for each bin, may be positive or negative
+ istart absolute bin number or ratio of the start bin, top end bins may be quite low, around a ratio of 0.1
+ iend absolute bin number or ratio of the end bin
+ kfreqmod frequency modulation ratio in resynthesis
+ kportamento portamento time for amp and frequency
+ ifnwave f-table to use for the oscillator, default is sine
+ ibin bin tracking used internally, should not be set
+*/
+opcode spc_shift, a, fkopPJjj
+ fsig, kfreqincr, istart, iend, kfreqmod, kportamento, ifnwave, ibin xin
+ if (ibin == -1) then
+ istart, iend, ibin, kportamento, ifnwave _spc_validatebins fsig, istart, iend, kportamento, ifnwave
+ endif
+
+ idirection = (istart < iend) ? 1 : -1
+ kamp, kfreq pvsbin fsig, ibin
+ kfreqadd = (((idirection == 1) ? ibin - istart : istart - ibin) + 1) * kfreqincr
+ aout oscili portk(kamp, kportamento), portk(kfreq + kfreqadd, kportamento) * kfreqmod, ifnwave
+
+ if ((idirection == 1 && ibin + 1 < iend) || (idirection == -1 && ibin - 1 >= iend)) then
+ arecurse spc_shift fsig, kfreqincr, istart, iend, kfreqmod, kportamento, ifnwave, ibin + idirection
+ aout += arecurse
+ endif
+
+ xout aout
+endop
+
+
+/*
+ Spectral gate
+
+ aout spc_gate fsig, kthresh [, khold=0, istart=0, iend=1, kfreqmod=1, kportamento=0.01, ifnwave=-1, ibin=-1]
+
+ aout audio output
+ fsig input signal
+ kthresh threshold amplitude for gating
+ khold hold amplitudes rather than decaying them
+ istart absolute bin number or ratio of the start bin, top end bins may be quite low, around a ratio of 0.1
+ iend absolute bin number or ratio of the end bin
+ kfreqmod frequency modulation ratio in resynthesis
+ kportamento portamento time for amp and frequency
+ ifnwave f-table to use for the oscillator, default is sine
+ ibin bin tracking used internally, should not be set
+*/
+opcode spc_gate, a, fkOopPJjj
+ fsig, kthresh, khold, istart, iend, kfreqmod, kportamento, ifnwave, ibin xin
+ if (ibin == -1) then
+ istart, iend, ibin, kportamento, ifnwave _spc_validatebins fsig, istart, iend, kportamento, ifnwave
+ endif
+
+ idirection = (istart < iend) ? 1 : -1
+ klastamp init 0
+ klastfreq init 0
+ kamp, kfreq pvsbin fsig, ibin
+
+ if (kamp > kthresh) then
+ klastamp = kamp
+ klastfreq = kfreq
+ else
+ kamp = (khold == 1) ? klastamp : 0
+ kfreq = klastfreq
+ endif
+ aout oscili portk(kamp, kportamento), portk(kfreq, kportamento) * kfreqmod, ifnwave
+
+ if ((idirection == 1 && ibin + 1 < iend) || (idirection == -1 && ibin - 1 >= iend)) then
+ arecurse spc_gate fsig, kthresh, khold, istart, iend, kfreqmod, kportamento, ifnwave, ibin + idirection
+ aout += arecurse
+ endif
+
+ xout aout
+endop
+
+
+
+/*
+ Spectral granular resynthesis 1
+ Internal opcode
+*/
+opcode _spc_grain1_inner, a, ikkpopPJJOJjpp
+ ipbuf, ktime, kgraindur, ilayers, istart, iend, kfreqmod, kfreqrand, kdurrand, kpitchrand, kportamento, ifnwave, ibin, ibingrain xin
+ idirection = (istart < iend) ? 1 : -1
+ kchange metro 1 / kgraindur;/ 1
+ if (kchange == 1) then
+ if (kfreqrand > 1) then
+ kfreqrandv random 1 / kfreqrand, kfreqrand
+ elseif (kfreqrand == 1) then
+ kfreqrandv = 1
+ else
+ kfreqrandv random 0.5, 2
+ endif
+
+ if (kdurrand > 1) then
+ kdurrandv random 1 / kdurrand, kdurrand
+ elseif (kdurrand == 1) then
+ kdurrandv = 1
+ else
+ kdurrandv random 0.5, 2
+ endif
+
+ if (kpitchrand > 1) then
+ kpitchrandv random 1 / kpitchrand, kpitchrand
+ else
+ kpitchrandv = 1
+ endif
+ endif
+
+ kreadfreq = (1 / kgraindur) * kfreqrandv ;5 + random:k(1, 5) ;random(10, 20) ;10 + random:k(0, 5)
+ kenv = abs:k(oscili:k(1, kreadfreq, gifnHanning, random(0, 1)))
+ areadpos phasor kreadfreq, random(0, 1)
+
+ kreadtime = ktime + (k(areadpos) * kgraindur * kdurrandv) ;ktime + random(0, 0.6) ;portk(ktime + random:k(0, 0.6), kportamento)
+ fsig pvsbufread kreadtime, ipbuf
+ kamp, kfreq pvsbin fsig, ibin
+ kfreq *= kpitchrandv
+ kamp *= kenv
+
+ aout oscil portk(kamp, kportamento), portk(kfreq, kportamento) * kfreqmod, ifnwave
+ if (ibingrain < ilayers) then
+ arecurse _spc_grain1_inner ipbuf, ktime, kgraindur, ilayers, istart, iend, kfreqmod, kfreqrand, kdurrand, kpitchrand, kportamento, ifnwave, ibin, ibingrain + 1
+ aout += arecurse
+ elseif ((idirection == 1 && ibin + 1 < iend) || (idirection == -1 && ibin - 1 >= iend)) then
+ arecurse _spc_grain1_inner ipbuf, ktime, kgraindur, ilayers, istart, iend, kfreqmod, kfreqrand, kdurrand, kpitchrand, kportamento, ifnwave, ibin + idirection
+ aout += arecurse
+ endif
+ xout aout
+endop
+
+
+/*
+ Spectral granular resynthesis 1
+
+ aout spc_grain1 ifn, ktime, kgraindur [, ifftsize=512, ilayers=1, istart=0, iend=1, kfreqmod=1, kfreqrand=1, kdurrand=1, kpitchrand=0, kportamento=0.01, ifnwave=-1]
+
+ aout audio output
+ ifn f-table containing mono source sound
+ ktime read time in seconds
+ kgraindur grain duration in seconds
+ ifftsize fft size for the input
+ ilayers number of overlapping layers of grains to use
+ istart absolute bin number or ratio of the start bin, top end bins may be quite low, around a ratio of 0.1
+ iend absolute bin number or ratio of the end bin
+ kfreqmod frequency modulation ratio in resynthesis
+ kfreqrand read frequency random variation ratio
+ kdurrand grain duration random variation ratio
+ kpitchrand grain pitch random variation ratio
+ kportamento portamento time for amp and frequency
+ ifnwave f-table to use for the oscillator, default is sine
+*/
+opcode spc_grain1, a, ikkjpopPJJOJj
+ ifn, ktime, kgraindur, ifftsize, ilayers, istart, iend, kfreqmod, kfreqrand, kdurrand, kpitchrand, kportamento, ifnwave xin
+ ifftsize = (ifftsize == -1) ? 512 : ifftsize
+ ktimek timeinstk
+ ilen = ftlen(ifn) / ftsr(ifn)
+ ikcycles = ilen * kr
+ kcount init 0
+ if (ktimek == 1) then
+ while (kcount < ikcycles) do
+ apos linseg 0, ilen, ftlen(ifn)
+ asig table3 apos, ifn
+ fsig pvsanal asig, ifftsize, ifftsize/4, ifftsize, 1
+ ipbuf, k_ pvsbuffer fsig, ilen
+ kcount += 1
+ od
+ else
+ istartbin, iendbin, ibin, kportamento, ifnwave _spc_validatebins fsig, istart, iend, kportamento, ifnwave
+ aout _spc_grain1_inner ipbuf, ktime, kgraindur, ilayers, istartbin, iendbin, kfreqmod, kfreqrand, kdurrand, kpitchrand, kportamento, ifnwave, ibin
+ endif
+ xout aout
+endop
+
+/*
+ Alter the phase of FFT values
+
+ aout spc_phasemash ain, kphasemode, kphasevalue, ifftsize
+
+ aout audio output
+ ain audio input
+ kphasemode phase mode: 0 = multiply phase with kphasevalue; 1 = replace phase with kphasevalue
+ kphasevalue phase value, between -pi and +pi
+ ifftsize fft size
+*/
+opcode spc_phasemash, a, akkj
+ ain1, kphasemode, kphasevalue, ifftsize xin
+ ifftsize = (ifftsize == -1) ? 512 : ifftsize
+ ihopsize = ksmps
+ iolaps = (ifftsize / ihopsize)
+ ibw = (sr / ifftsize)
+ kcnt init 0
+ krow init 0
+ kOla1[] init ifftsize
+ kIn1[] init ifftsize
+ kOut[][] init iolaps, ifftsize
+
+ if (kcnt == ihopsize) then
+ kdx = 0
+ kWin1[] window kIn1, krow * ihopsize
+ kSpec1[] rfft kWin1
+ kmags1[] mags kSpec1
+ kphs1[] phs kSpec1 ;init lenarray(kmags1) ;phs kSpec1
+ kindex = 0
+ while (kindex < lenarray(kphs1)) do
+ if (kindex > 0) then
+ if (kphasemode == 0) then
+ kphs1[kindex] = kphs1[kindex] * kphasevalue
+ else
+ kphs1[kindex] = kphasevalue
+ endif
+ endif
+ kindex += 1
+ od
+
+ kSpec1 pol2rect kmags1, kphs1
+ kRow[] rifft kSpec1
+ kWin1 window kRow, krow * ihopsize
+ kOut setrow kWin1, krow
+
+ kOla1 = 0
+ ki = 0
+ until (ki == iolaps) do
+ kRow getrow kOut, ki
+ kOla1 = kOla1 + kRow
+ ki += 1
+ od
+ krow = (krow + 1) % iolaps
+ kcnt = 0
+ endif
+
+ kIn1 shiftin ain1
+ aout shiftout kOla1
+ aouter = aout / iolaps
+ kcnt += ksmps
+ xout aouter
+endop
+
+
+/*
+opcode spc_attack, a, fkOopPJjj
+ fsig, kthresh, khold, istart, iend, kfreqmod, kportamento, ifnwave, ibin xin
+ if (ibin == -1) then
+ istart, iend, ibin, kportamento, ifnwave _spc_validatebins fsig, istart, iend, kportamento, ifnwave
+ endif
+
+ idirection = (istart < iend) ? 1 : -1
+ klastamp init 0
+ klastfreq init 0
+ kamp, kfreq pvsbin fsig, ibin
+
+ if (kamp > kthresh) then
+ klastamp = kamp
+ klastfreq = kfreq
+ else
+ kamp = (khold == 1) ? klastamp : 0
+ kfreq = klastfreq
+ endif
+ aout oscil portk(kamp, kportamento), portk(kfreq, kportamento) * kfreqmod, ifnwave
+
+ if ((idirection == 1 && ibin + 1 < iend) || (idirection == -1 && ibin - 1 >= iend)) then
+ arecurse spc_gate fsig, kthresh, khold, istart, iend, kfreqmod, kportamento, ifnwave, ibin + idirection
+ aout += arecurse
+ endif
+
+ xout aout
+endop
+*/
+
+
+#end
diff --git a/site/udo/string_tools.udo b/site/udo/string_tools.udo
new file mode 100755
index 0000000..c2c14c0
--- /dev/null
+++ b/site/udo/string_tools.udo
@@ -0,0 +1,375 @@
+#ifndef UDO_STRINGTOOLS
+#define UDO_STRINGTOOLS ##
+/*
+ String processing tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022, 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+
+*/
+
+#include "/host_platform.udo"
+
+/*
+ Replace character with another character or sequence of characters
+ Soutput str_replacechar Sinput, Sfrom, Sto
+
+ Soutput string with replacements
+ Sinput input string
+ Sfrom character to replace
+ Sto string or character to substitute
+*/
+opcode str_replacechar, S, SSS
+ Sinput, Sfrom, Sto xin
+ Soutput = ""
+ index = 0
+ while (index < strlen(Sinput)) do
+ Schar = strsub(Sinput, index, index + 1)
+ if (strcmp(Sfrom, Schar) == 0) then
+ Soutput = strcat(Soutput, Sto)
+ else
+ Soutput = strcat(Soutput, Schar)
+ endif
+ index += 1
+ od
+ xout Soutput
+endop
+
+
+/*
+ String alphabetical bubble sort
+ Sout[] srt_bubblestr Sin[]
+
+ Sout[] sorted array
+ Sin[] array to sort
+*/
+opcode srt_bubblestr, S[], S[]
+ Sin[] xin
+ Stemp = ""
+ ilen = lenarray(Sin)
+ index1 = 0
+ while (index1 < ilen-1) do
+ index2 = 0
+ while (index2 < ilen-1-index1) do
+ if (strcmp(Sin[index2], Sin[index2+1]) > 0) then
+ Stemp = Sin[index2]
+ Sin[index2] = Sin[index2+1]
+ Sin[index2+1] = Stemp
+ endif
+
+ index2 += 1
+ od
+ index1 += 1
+ od
+ xout Sin
+endop
+
+
+/*
+ Polynomial rolling hash
+ ihash str_hash Sstring
+
+ ihash the resulting hash value
+ Sstring string to be hashed
+*/
+opcode str_hash, i, S
+ Sin xin
+ ip = 31
+ im = 1e9+7 ; was 1e9+9, changed for 32bit
+ ipp = 1
+ ihash = 0
+ index = 0
+ while (index < strlen(Sin)) do
+ ihash = (ihash + ((strchar(strsub(Sin, index)) - 97) + 1) * ipp) ; changed from *ip to *ipp ??? due to collisions. not fully checked
+ ipp = (ipp * ip) % im
+ index += 1
+ od
+ xout ihash
+endop
+
+
+/*
+ Split separated string to array
+ Sitems[] str_split Sinput, Separator
+
+ Sitems[] the processed items
+ Sinput string to split
+ Separator separator to split on
+*/
+opcode str_split, S[], SS
+ Sin, Sep xin
+ Stemp = Sin
+ itemnum = 1
+ index = 1
+ while (index > 0) do
+ index strindex Stemp, Sep
+ if (index > 0) then
+ Stemp strsub Stemp, index+1
+ itemnum += 1
+ endif
+ od
+ Sout[] init itemnum
+
+ iwindex = 0
+ Stemp = Sin
+ index = 1
+ while (index > 0) do
+ index strindex Stemp, Sep
+ if (index > 0) then
+ Sout[iwindex] strsub Stemp, 0, index
+ Stemp strsub Stemp, index+1
+ else
+ Sout[iwindex] = Stemp
+ endif
+ iwindex += 1
+ od
+
+ xout Sout
+endop
+
+
+/*
+ Print ftable contents
+ printtable ifn
+
+ ifn ftable number to print
+*/
+opcode printtable, 0, i
+ ifn xin
+ index = 0
+ while (index < ftlen(ifn)) do
+ print table:i(index, ifn)
+ index += 1
+ od
+endop
+
+
+
+/*
+ Store string to an exising table as ascii characters
+ str2tab String, ifn
+
+ String string to store
+ ifn table to store to
+*/
+opcode str2tab, 0, Si
+ String, ifn xin
+ index = 0
+ while (index < strlen(String)) do
+ ival strchar String, index
+ tabw_i ival, index, ifn
+ index += 1
+ od
+ tabw_i -99, index, ifn
+endop
+
+
+/*
+ Create a table and store a string in it as ascii characters
+ ifn str2newtab String
+
+ ifn new table number
+ String string to store
+*/
+opcode str2newtab, i, S
+ String xin
+ ifn ftgen 0, 0, strlen(String)+1, 7, 0
+ str2tab String, ifn
+ xout ifn
+endop
+
+
+/*
+ Obtain a string from a table containing ascii characters
+ String tab2str ifn
+
+ String retrieved string
+ ifn table number
+*/
+opcode tab2str, S, i
+ ifn xin
+ index = 0
+ Sval = ""
+ ival = 0
+ while (ival != -99) do
+ ival tab_i index, ifn
+ if (ival == -99) igoto done
+ Sval strcat Sval, sprintf("%c", ival)
+ index += 1
+ od
+done:
+ xout Sval
+endop
+
+
+/*
+ Obtain file extension converted to lowercase (anything past the last dot)
+ Sextension fileextension Sfile
+
+ Sfile path or filename
+ Sextension the extension in lower case
+*/
+opcode fileextension, S, S
+ Sfile xin
+ ilastdot strrindex Sfile, "."
+ if (ilastdot == -1) then
+ Sextension = "none"
+ goto return
+ endif
+ ilen strlen Sfile
+ Sextension strsub Sfile, ilastdot + 1, ilen
+ Sextension strlower Sextension
+ goto return
+return:
+ xout Sextension
+endop
+
+
+/*
+ Print a string array with each value separated by a newline
+
+ str_printarray Sarray[]
+
+ Sarray[] the array to print
+*/
+opcode str_printarray, 0, S[]
+ Sarray[] xin
+ ilen = lenarray(Sarray)
+ index = 0
+ while (index < ilen) do
+ prints sprintf("%s\n", Sarray[index])
+ index += 1
+ od
+endop
+
+
+/*
+ Test if a string is numeric
+
+ isnumeric str_isnumeric Svalue
+
+ isnumeric 0 if not numeric, 1 if numeric
+ Svalue string to test
+*/
+opcode str_isnumeric, i, S
+ Svalue xin
+ isnumeric = 1
+ ihaspoint = 0
+ index = 0
+ while (index < strlen(Svalue)) do
+ ichar = strchar(Svalue, index)
+
+ ; allow only one decimal point
+ if (ichar == 46) then
+ if (ihaspoint == 1) then
+ isnumeric = 0
+ goto complete
+ else
+ ihaspoint = 1
+ endif
+
+ ; not a number or decimal place
+ elseif (!(ichar >= 48 && ichar <= 57)) then
+ isnumeric = 0
+ goto complete
+ endif
+ index += 1
+ od
+complete:
+ xout isnumeric
+endop
+
+
+
+/*
+ Convert a string to float if numeric
+
+ ivalid, ivalue try_strtod Svalue
+
+ ivalid 0 if the input is not numeric, 1 if conversion is successful
+ ivalue converted value, or -1 if the input is not numeric
+*/
+opcode try_strtod, ii, S
+ Svalue xin
+ if (str_isnumeric(Svalue) == 0) then
+ ivalid = 0
+ ivalue = -1
+ else
+ ivalid = 1
+ ivalue = strtod(Svalue)
+ endif
+ xout ivalid, ivalue
+endop
+
+
+/*
+ Get the basename from a file path separated by slashes
+
+ Sbasename str_basename Spath
+
+ Sbasename the filename
+ Spath the path
+*/
+opcode str_basename, S, S
+ Spath xin
+ Sbasename = strsub(Spath, strrindex(Spath, "/") + 1)
+ xout Sbasename
+endop
+
+
+/*
+ Get a random alphanumeric string
+
+ Sout str_random [ilen=10]
+
+ Sout the random string
+ ilen length of string
+*/
+opcode str_random, S, j
+ ilen xin
+ Sout = ""
+ ilen = (ilen == -1) ? 10 : ilen
+ index = 0
+ while (index < ilen) do
+ irange = round(random(0, 2))
+ if (irange == 0) then
+ ichar random 48, 57
+ elseif (irange == 1) then
+ ichar random 65, 90
+ elseif (irange == 2) then
+ ichar random 97, 122
+ endif
+ Sout = strcat(Sout, sprintf("%c", ichar))
+ index += 1
+ od
+ xout Sout
+endop
+
+/*
+ Get a random filename
+
+ Sout str_randomfilename Sext [,ilen=10]
+
+ Sout the random filename
+ Sext file extension
+ ilen length of string
+*/
+opcode str_randomfilename, S, Sj
+ Sext, ilen xin
+ Sfile str_random ilen
+ xout strcat(Sfile, sprintf(".%s", Sext))
+endop
+
+/*
+ Get a random filename in the host temporary directory
+
+ Sout str_randomtempfilename Sext [,ilen=10]
+*/
+opcode str_randomtempfilename, S, Sj
+ Sext, ilen xin
+ Sfile str_randomfilename Sext, ilen
+ xout sprintf("%s/%s", host_tempdir(), Sfile)
+endop
+
+#end
diff --git a/site/udo/synth_drums.udo b/site/udo/synth_drums.udo
new file mode 100755
index 0000000..3d2ea10
--- /dev/null
+++ b/site/udo/synth_drums.udo
@@ -0,0 +1,229 @@
+#ifndef UDO_SYNTHDRUMS
+#define UDO_SYNTHDRUMS ##
+/*
+ Synth drum generators
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "wavetables.udo"
+
+opcode kick909, a, 0
+ idur = p3
+ ifreq = 200
+ idct = .0001
+ aampenv expseg 1, .08, .3, .4, .001
+ adclick expseg .001, idct, 1, idur-(idct*2), 1, idct, .001
+ aosc1 oscil 1, ifreq*aampenv
+ xout aosc1*aampenv*adclick
+endop
+
+
+/*
+ Clap derived from an instrument by Istvan Varga (2002)
+*/
+opcode clap1, a, jj
+ idec, ifreq xin
+ ibpfrq = (ifreq == -1) ? 1046.5 : ifreq
+ kbpbwd port ibpfrq*0.25, 0.03, ibpfrq*4.0 ;bandpass filter bandwidth
+ idec = (idec == -1) ? 0.5 : idec ;decay time
+
+ a1 = 1.0
+ a1x delay1 a1
+ a1 = a1 - a1x
+ a2 delay a1, 0.011
+ a3 delay a1, 0.023
+ a4 delay a1, 0.031
+
+ a1 tone a1, 60.0
+ a2 tone a2, 60.0
+ a3 tone a3, 60.0
+ a4 tone a4, 1.0 / idec
+
+ aenv1 = a1 + a2 + a3 + a4*60.0*idec
+ aout unirand 2.0
+ aout = aenv1 * (aout - 1.0)
+ aout butterbp aout, ibpfrq, kbpbwd
+ xout aout * 120
+endop
+
+
+/*
+ Rim shot derived from an instrument by Istvan Varga (2002)
+*/
+opcode rim1, a, 0
+ icps = 440.0*exp(log(2.0)*(57.0-69.0)/12.0)
+ acps expon icps, 0.0025, icps * 0.5
+ acps = acps + icps
+ iamp = 1
+ a1a phasor acps, 0.0
+ a1b phasor acps, 0.5
+ afmenv expon 1.0, 0.02, 0.5
+ a1 = (a1a-a1b)*6.0*afmenv
+ acps = acps*(1.0+a1)
+ a0 oscil3 1.0, acps
+ a1 unirand 2.0
+ a1 tone a1-1.0, 2000
+ a0 = a0 + a1*0.1
+ aenv expon 1.0, 0.005, 0.5
+
+ a0 limit 4.0*iamp*a0*aenv, -1.0, 1.0
+ a0 table3 a0*4096.0, gifnSine, 0, 0, 1
+
+ kffrq expseg 20000, 0.07, 100, 1, 100
+
+ a0x tone a0, 4000
+ a0y = a0 - a0x
+ a0x delay a0y, 0.0002
+ a0 = a0 - a0x*4.0
+ a0 pareq a0, kffrq, 0, 0.7071, 2
+
+ a_ linseg 1, p3-0.1, 1, 0.025, 0, 1, 0
+ a0 = a0*a_
+
+ xout a0
+endop
+
+
+/*
+ Snare derived from an instrument by Istvan Varga (2002)
+*/
+opcode snare1, a, 0
+ icps0 = 150
+ icps1 = 2.0 * icps0
+ kcps port icps0, 0.007, icps1
+ kcpsx = kcps * 1
+ kfmd port 0.0, 0.01, 0.7
+ aenv1 expon 1.0, 0.03, 0.5
+ kenv2 port 1.0, 0.008, 0.0
+ aenv2 interp kenv2
+ aenv3 expon 1.0, 0.025, 0.5
+
+ a_ oscili 1.0, kcps, gifnSine
+ a1 oscili 1.0, kcps * (1.0 + a_*kfmd), gifnSine
+ a_ oscili 1.0, kcpsx, gifnSine
+ a2 oscili 1.0, kcpsx * (1.0 + a_*kfmd), gifnSine
+
+ a3 unirand 2.0
+ a3 = a3 - 1.0
+ a3 butterbp a3, 5000, 7500
+ a3 = a3 * aenv2
+
+ a0 = a1 + a2*aenv3 + a3*1.0
+ a0 = a0 * aenv1
+ xout a0
+endop
+
+
+/*
+ RK kick1
+*/
+opcode kick1, a, 0
+ /* p3 should be between 0.1 and 0.3 really */
+ kax linseg 500, p3*0.05, 200, p3*0.1, 40, p3*0.8, 20
+ kenv linseg 1,p3*0.2,0.6,p3*0.2,0.4,p3*0.2,0.1,p3*0.2,0
+ kpit linseg 300, p3*0.2, 200, p3*0.4, 80, p3*0.2, 50, p3*0.2, 30
+ a1 oscil 0.6, kax*1
+ a2 oscil 0.85,kpit*0.4
+ a3 oscil 0.95,kpit*0.2
+ an noise 0.3,-0.1
+ ax1 oscil 0.05, 200
+ ax2 oscil 0.02, 900
+ kaxenv linseg 0.2, p3*0.02, 0
+ akx = (ax1*ax2)*kaxenv
+ aout = (a1+a2+a3)*0.25
+ amix = ((aout*kenv)+akx)
+ adist distort amix, 0.3, gifnSine
+ aeq1 pareq adist, 90, 0, 1.4
+ aeq2 pareq aeq1, 60, 1.8, 0.9
+ aout pareq aeq2, 9000, 2.8, 0.5
+ xout aout
+endop
+
+
+/*
+ RK kick2, a bit 808 ish unless harsh mode is on
+*/
+opcode kick2, a, oo
+ iharsh, itune xin
+ if (iharsh == 1) then
+ idist = 0.5
+ idistwave = gifnSquare
+ else
+ idist = 0.1
+ idistwave = gifnSine
+ endif
+ xtratim 0.1
+ krelease release
+ ktune init itune
+ kmul transeg 0.2, p3*0.5, -15, 0.01, p3*0.5, 0, 0
+ kbend transeg 0.5, 1.2, -4, 0, 1, 0, 0
+ asig gbuzz 0.5, 50*octave(ktune)*semitone(kbend), 20, 1, kmul, gifnCosine
+ aenv transeg 1, p3-0.004, -6, 0
+ gkpump = k(aenv)
+ aatt linseg 0, 0.004, 1
+ asig = asig*aenv*aatt
+ aenv linseg 1, 0.07, 0
+ acps expsega 400, 0.07, 0.001, 1, 0.001
+ aimp oscili aenv, acps*octave(ktune*0.25)
+ amix = ((asig*0.7)+(aimp*0.35))
+ gkpump = min(rms(amix) * 7, 1)
+ aout1 pareq amix, 100, 0.01, 0.7
+ aout1 distort aout1, idist, idistwave
+ aout1 pareq aout1, 50, 2, 0.4
+ aout1 pareq aout1, 190, 0.7, 0.6
+ aout1 pareq aout1, 4900, 2, 0.7
+ aout1 pareq aout1, 8900, 2, 0.7
+ xout aout1
+endop
+
+
+
+opcode hihat1, a, 0
+ idel = random(0.001, 0.02)
+ xtratim idel
+ kfreq line 300, p3, 100
+ aenv expsega .1, .0005, 1, p3 - .0005, .01
+ asqr1 oscil 1, kfreq, gifnSquare, -1
+ asqr2 oscil 1, kfreq*1.4471, gifnSaw, -1
+ asqr3 oscil 1, kfreq*1.6170, gifnSaw, -1
+ asqr4 oscil 1, kfreq*1.9265, gifnSaw, -1
+ asqr5 oscil 1, kfreq*2.5028, gifnSaw, -1
+ asqr6 oscil 1, kfreq*2.6637, gifnSaw, -1
+ a808 sum asqr1, asqr2, asqr3, asqr4, asqr5, asqr6
+ a808 butterhp a808, 4270
+ a808 butterhp a808, 4270
+ aout = a808 * aenv * 0.5
+ aout delay aout, idel
+ xout aout
+endop
+
+
+
+opcode hihat2, aa, 0
+ idel1 = random(0.005, 0.02)
+ idel2 = random(0.005, 0.02)
+ xtratim(max(idel1, idel2))
+
+ kfreq line 800, p3, 300
+ aenv expsega .1, .0005, 1, p3 - .0005, .01
+ asqr1 oscil 1, kfreq, gifnSquare, -1
+ asqr2 oscil 1, kfreq*1.4471, gifnSquare, -1
+ asqr3 oscil 1, kfreq*1.6170, gifnSquare, -1
+ asqr4 oscil 1, kfreq*1.9265, gifnSquare, -1
+ asqr5 oscil 1, kfreq*2.5028, gifnSaw, -1
+ asqr6 oscil 1, kfreq*2.6637, gifnSaw, -1
+ a808 sum asqr1, asqr2, asqr3, asqr4, asqr5, asqr6
+ a808 butterhp a808, 3270
+ a808 butterhp a808, 3270
+ aout = a808 * aenv * 0.5
+ aL delay aout, idel1
+ aR delay aout, idel2
+ xout aL, aR
+endop
+
+
+#end
+
diff --git a/site/udo/synth_instruments.udo b/site/udo/synth_instruments.udo
new file mode 100755
index 0000000..a5ec34c
--- /dev/null
+++ b/site/udo/synth_instruments.udo
@@ -0,0 +1,78 @@
+#ifndef UDO_SYNTHINSTRUMENTS
+#define UDO_SYNTHINSTRUMENTS ##
+/*
+ Standard regular wave function tables
+
+ This file is part of the SONICS UDO collection by Richard Knight 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "wavetables.udo"
+
+opcode synth_fmbass1, aa, k
+ kfreq xin
+ k1 linseg 2.1, p3*0.2, 2, p3*0.8, 2
+ k2 line 10, p3, 0
+ iamp random 500, 800
+ kamp linseg iamp*0.001, p3*0.1, 0.5, p3*0.9, 0
+ aL foscil 0.8, kfreq, 1, k1, k2, gifnSine
+ aR foscil 0.8, kfreq, 1.9, k1, k2, gifnSine
+ aL1 pareq aL, 440, 0.4, 0.7
+ aR1 pareq aR, 440, 0.4, 0.7
+ xout aL1, aR1
+endop
+
+
+opcode synth_303, a, kjJ
+ kfreq, ifilter, kdistortion xin
+ ifilter = (ifilter == -1) ? 90 : ifilter
+ kdistortion = (kdistortion == -1) ? 1 : kdistortion
+ ifrq1 = 440 * exp(log(2) * (ifilter - 69) / 12) ; filter start freq.
+ kffrq port 0, 60/150, ifrq1
+ a1 phasor kfreq
+ a1 = 1 - 2 * a1
+ a1x butterbp a1, kffrq, kfreq
+ a1x = a1x * (2 + kffrq / kfreq)
+ a1 = a1x + a1 * 0.25 ; 0.5
+ a1 butterlp a1, kffrq
+ a1 = taninv(a1 * kdistortion)
+ keqf limit kffrq * 4, 10, sr * 0.48 ; EQ frequency
+ a1 pareq a1 * 0.4, keqf, 4.0, 1.0, 2
+ xout a1
+endop
+
+opcode synth_strings1, a, kJJjj
+ kfreq, kvibwidth, kvibrate, inoisdur, ivibdel xin
+ kvibwidth = (kvibwidth == -1) ? 0.01 : kvibwidth
+ kvibrate = (kvibrate == -1) ? 5.5 : kvibrate
+ inoisdur = (inoisdur == -1) ? 0.1 : inoisdur
+ ivibdel = (ivibdel == -1) ? 0.25 : ivibdel
+
+ kfm2 = kfreq * 3
+ kfm3 = kfreq * 4
+ kindex1 = 7.5 / log:k(kfreq)
+ kindex2 = 15 / sqrt:k(kfreq)
+ kindex3 = 1.25 / sqrt:k(kfreq)
+
+ irise = 0.1
+ idec = 0.4
+
+ kvib init 0
+ kvbctl linen 1, 0.5, p3 - ivibdel, .1
+ krnd randi 0.0075, 2
+ kvib oscili kvbctl * kvibwidth + krnd, kvibrate * kvbctl
+
+ ktrans linseg 1, inoisdur, 0, 1, 0
+ anoise randi ktrans / 4, 0.2 * kfreq
+ attack oscili anoise, 2000
+
+ amod1 oscili kfreq * (kindex1 + ktrans), kfreq
+ amod2 oscili kfm2 * (kindex2 + ktrans), kfm2
+ amod3 oscili kfm3 * (kindex3 + ktrans), kfm3
+ asig oscili 1, (kfreq + amod1 + amod2 + amod3) * (1 + kvib)
+ asig linen (asig + attack), irise, p3, idec
+ xout asig
+endop
+
+#end
diff --git a/site/udo/tab2wav.udo b/site/udo/tab2wav.udo
new file mode 100755
index 0000000..1c0b9cb
--- /dev/null
+++ b/site/udo/tab2wav.udo
@@ -0,0 +1,151 @@
+#ifndef UDO_TAB2WAV
+#define UDO_TAB2WAV ##
+
+/*
+ Table to wave to table file ease tool
+
+ This file is part of the SONICS UDO collection by Richard Knight 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ Output table to 16bit WAV file
+
+ kdone tab2wav ifn, Spath [, ilen, iprocrate, iblocksize]
+
+ kdone trigger to specify when done
+ ifn table number to use
+ Spath file path to output to
+ isamples how many samples to save, defaults to full length
+ iprocrate processing rate in processes per second, defaults to 10
+ iblocksize block size in one process cycle, defaults to 2048
+*/
+opcode tab2wav, k, iSjjj
+ ifn, Spath, isamples, iprocrate, iblocksize xin
+
+ iprocrate = (iprocrate == -1) ? 10 : iprocrate
+ iblocksize = (iblocksize == -1) ? 2048 : iblocksize
+
+ ichannels = ftchnls(ifn)
+ isr = ftsr(ifn)
+ ilenraw = (isamples == -1) ? ftlen(ifn) : isamples
+ ilen = ilenraw / ichannels
+
+ kdone init 0
+
+
+ if (kdone == 0) then
+ ; each block processing at iprocrate
+ ktrig metro iprocrate
+ if (ktrig == 1) then
+ kcount = 0
+ while (kcount < iblocksize) do
+ apos = round:a(lphasor(isr / sr)) ; rounded to deal with stereo offset if required
+
+ ; if complete, set kdone
+ if (downsamp(apos) >= ilen) then
+ kdone = 1
+ kgoto complete
+ endif
+
+ ; read and write position calcs for stereo / reverse
+ aposbase = apos * ichannels
+ aposrL = aposbase
+ aposrR = aposbase + 1
+
+ if (ichannels == 2) then
+ fout Spath, 14, table:a(aposrL, ifn), table:a(aposrR, ifn)
+ else
+ fout Spath, 14, table:a(aposrL, ifn)
+ endif
+ kcount += 1
+ od
+ endif
+
+ endif
+
+complete:
+ xout kdone
+endop
+
+
+
+
+/*
+ Load file to existing table without altering length/channels
+
+ kdone wav2tab Spath, ifn [, imonochannel=0]
+
+ kdone trigger to specify when done
+ Spath file path to load from
+ ifn table number to use
+ imonochannel if ifn is mono and Spath is stereo, 1 specifies to load from the right channel, rather than the default (0) which is left
+ iprocrate processing rate in processes per second, defaults to 10
+ iblocksize block size in one process cycle, defaults to 2048
+*/
+opcode wav2tab, k, Siojj
+ Spath, ifn, imonochannel, iprocrate, iblocksize xin
+ iprocrate = (iprocrate == -1) ? 10 : iprocrate
+ iblocksize = (iblocksize == -1) ? 2048 : iblocksize
+
+ ifilechannels = filenchnls(Spath)
+ ichannels = ftchnls(ifn)
+ isr = ftsr(ifn)
+ ilenraw = ftlen(ifn)
+ ilen = ilenraw / ichannels
+
+ kdone init 0
+
+
+ if (kdone == 0) then
+ ; each block processing at iprocrate
+ ktrig metro iprocrate
+ if (ktrig == 1) then
+ kcount = 0
+ while (kcount < iblocksize) do
+ apos = round:a(lphasor(isr / sr)) ; rounded to deal with stereo offset if required
+
+ ; if complete, set kdone
+ if (downsamp(apos) >= ilen) then
+ kdone = 1
+ kgoto complete
+ endif
+
+ if (ifilechannels == 2) then
+ aL, aR diskin Spath, 1
+ else
+ aL diskin Spath, 1
+ aR = aL
+ endif
+
+ ; read and write position calcs for stereo / reverse
+ aposbase = apos * ichannels
+ aposwL = aposbase
+ aposwR = aposbase + 1
+
+
+ if (ichannels == 2) then
+ tablew aL, aposwL, ifn
+ tablew aR, aposwR, ifn
+ else
+ if (imonochannel == 1 && ifilechannels == 2) then
+ tablew aR, aposwL, ifn
+ else
+ tablew aL, aposwL, ifn
+ endif
+ endif
+ kcount += 1
+ od
+ endif
+
+ endif
+
+complete:
+ xout kdone
+endop
+
+
+#end
+
diff --git a/site/udo/table_tools.udo b/site/udo/table_tools.udo
new file mode 100755
index 0000000..50f5997
--- /dev/null
+++ b/site/udo/table_tools.udo
@@ -0,0 +1,244 @@
+#ifndef UDO_TABLETOOLS
+#define UDO_TABLETOOLS ##
+/*
+ Table tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022, 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ Normalise an audio ftable to to between -1 and 1
+
+ ftnormalise ifn
+
+ ifn ftable to analyse
+*/
+opcode ftnormalise, 0, ip
+ ifn, iscaling xin
+ imaxpos = -999
+ imaxneg = 999
+ iendpoint = 0
+ index = 0
+ while (index < ftlen(ifn)) do
+ ival table index, ifn
+ if (ival > 0 && ival > imaxpos) then
+ imaxpos = ival
+ elseif (ival < 0 && ival < imaxneg) then
+ imaxneg = ival
+ endif
+ index += 1
+ od
+
+
+ iscale = ((0.999/max(abs(imaxneg), abs(imaxpos)))) * iscaling
+ index = 0
+ while (index < ftlen(ifn)) do
+ ival table index, ifn
+ tablew ival * iscale, index, ifn
+ index += 1
+ od
+endop
+
+
+opcode tab_record, i, aj
+ ain, iduration xin
+ if (iduration == -1 || iduration > p3) then
+ iduration = p3
+ endif
+ ifn ftgen 0, 0, -(iduration * sr), -2, 0
+ apos lphasor 1
+ tablew ain, apos, ifn
+ xout ifn
+endop
+
+/*
+ Sample rate agnostic audio file loading
+*/
+opcode tab_loadaudio, iik, S
+ Sfile xin
+ kdone init 0
+ ilen = filelen(Sfile)
+ ilensamp = ilen * sr
+ ikcycles = ilen * kr
+ ichannels = filenchnls(Sfile)
+ ifnL ftgen 0, 0, ilensamp, 2, 0
+ if (ichannels == 2) then
+ ifnR ftgen 0, 0, ilensamp, 2, 0
+ else
+ ifnR = -1
+ endif
+ ktimek timeinstk
+ kcount init 0
+ if (ktimek == 1) then
+ while (kcount < ikcycles) do
+ apos linseg 0, ilen, ilensamp - 1
+ if (ichannels == 1) then
+ asig soundin Sfile
+ tablew asig, apos, ifnL
+ else
+ aL, aR soundin Sfile
+ tablew aL, apos, ifnL
+ tablew aR, apos, ifnR
+ endif
+ kcount += 1
+ od
+ else
+ kdone = 1
+ endif
+ xout ifnL, ifnR, kdone
+endop
+
+
+opcode tab_samplerateconvert, iik, ijpj
+ ifnL, ifnR, ifreeafter, isourcesr xin
+ isr = (isourcesr == -1) ? ftsr(ifnL) : isourcesr
+ kdone init 0
+ if (isr != sr) then
+ ilen = ftlen(ifnL)
+ ilens = ftlen(ifnL) / isr
+ inewlen = (sr / isr) * ilen
+ ifnnewL ftgen 0, 0, -inewlen, -2, 0
+ if (ifnR != -1) then
+ ifnnewR ftgen 0, 0, -inewlen, -2, 0
+ else
+ ifnnewR = -1
+ endif
+ ktimek timeinstk
+ ikcycles = ilens * kr
+ if (ktimek == 1) then
+ kcount = 0
+ while (kcount < ikcycles) do
+ aposw linseg 0, ilens, inewlen - 1
+ aposr linseg 0, ilens, ilen - 1
+ asig table3 aposr, ifnL
+ tablew asig, aposw, ifnnewL
+ if (ifnR != -1) then
+ asig table3 aposr, ifnR
+ tablew asig, aposw, ifnnewR
+ endif
+ kcount += 1
+ od
+ else
+ kdone = 1
+ endif
+ if (ifreeafter == 1) then
+ ftfree ifnL, 1
+ if (ifnR != -1) then
+ ftfree ifnR, 1
+ endif
+ endif
+ else
+ kdone init 1
+ ifnnewL = ifnL
+ ifnnewR = ifnR
+ endif
+ xout ifnnewL, ifnnewR, kdone
+endop
+
+opcode tab_samplerateconvert, ik, ipj
+ ifn, ifreeafter, isourcesr xin
+ ifnnew, i_, kdone tab_samplerateconvert ifn, -1, ifreeafter, isourcesr
+ xout ifnnew, kdone
+endop
+
+; table
+opcode tab_serialise, S, i
+ ifn xin
+ ilen = ftlen(ifn)
+ index = 0
+
+ Sout = "["
+ while (index < ilen) do
+ if (index != 0) then
+ Sout = strcat(Sout, ",")
+ endif
+ ivalue = table:i(index, ifn)
+ SprintfChar = (frac(ivalue) == 0) ? "%d" : "%f"
+ Sout = strcat(Sout, sprintf(SprintfChar, ivalue))
+ index += 1
+ od
+ Sout = strcat(Sout, "]")
+ xout Sout
+endop
+
+
+opcode tab_unserialise, 0, Si
+ Sdata, ifn xin
+ ilen = strlen(Sdata)
+ ichar = 0
+ inarray = 0
+ ivalstart = -1
+ index = 0
+ while (ichar < ilen) do
+ Schar = strsub(Sdata, ichar, ichar + 1)
+ if (strcmp(Schar, "[") == 0) then
+ inarray = 1
+ ivalstart = ichar + 1
+ elseif (inarray == 1 && strcmp(Schar, "]") == 0) then
+ inarray = 0
+ elseif (inarray == 1 && strcmp(Schar, ",") == 0) then
+ tablew strtod(strsub(Sdata, ivalstart, ichar)), index, ifn
+ ivalstart = ichar + 1
+ index += 1
+ endif
+ ichar += 1
+ od
+endop
+
+
+opcode tab_bubblesort, 0, i
+ ifn xin
+ itemp = 0
+ ilen = ftlen(ifn)
+ index1 = 0
+ while (index1 < ilen - 1) do
+ index2 = 0
+ while (index2 < ilen - 1 - index1) do
+ ival1 = tab_i(index2, ifn)
+ ival2 = tab_i(index2 + 1, ifn)
+ if (ival1 > ival2) then
+ itemp = ival1
+ tabw_i ival2, index2, ifn
+ tabw_i itemp, index2 + 1, ifn
+ endif
+ index2 += 1
+ od
+ index1 += 1
+ od
+endop
+
+
+opcode tab_destroy, 0, i
+ ifn xin
+ if (ftexists(ifn) == 1) then
+ ftfree ifn, 0
+ endif
+endop
+
+/*
+ get condensed table eg for waveform view
+*/
+opcode tab_overview, i, io
+ ifn, isamples xin
+ isamples = (isamples == 0) ? 256 : isamples
+ ifnlen = ftlen(ifn)
+ istep = round(ifnlen / isamples)
+ ifndata ftgen 0, 0, -isamples, 7, 0
+ index = 0
+ indexwrite = 0
+ while (index < ifnlen) do
+ ival tab_i index, ifn
+ if (!(indexwrite > isamples - 1)) then
+ tabw_i ival, indexwrite, ifndata
+ endif
+ indexwrite += 1
+ index += istep
+ od
+ xout ifndata
+endop
+
+
+#end
diff --git a/site/udo/tabproc.udo b/site/udo/tabproc.udo
new file mode 100755
index 0000000..1fd4e49
--- /dev/null
+++ b/site/udo/tabproc.udo
@@ -0,0 +1,217 @@
+#ifndef UDO_TABPROC
+#define UDO_TABPROC ##
+/*
+ JIT style table processor
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "lagdetect.udo"
+
+#define TP_DFLT_RATE #10#
+
+gitabproc_instancetrack = 0 ; internal instance tracking for channel names
+
+
+
+opcode tabproc_profiler, kkk, ij
+ instrnum, istabletime xin
+ istabletime = (istabletime == -1) ? 5 : istabletime
+
+ ichannelbase = gitabproc_instancetrack
+ gitabproc_instancetrack += 1
+
+ kblocksize init 16384
+ kprocrate init $TP_DFLT_RATE
+ kdone init 0
+
+ ; actual processing at iprocrate
+ if (kdone == 0) then
+ klagging, ktimesincelag lagdetect
+ if (klagging == 1) then
+ ; reduce block size first, then reduce processing rate
+ if (kblocksize > 128) then
+ kblocksize -= 128
+ elseif (kprocrate > 1) then
+ kprocrate -= 1
+ endif
+ endif
+
+ if (ktimesincelag >= istabletime) then
+ kdone = 1
+ kgoto complete
+ endif
+
+ ktrig metro kprocrate
+ if (ktrig == 1) then
+ kcount = 0
+ while (kcount < kblocksize) do
+ atest oscil 1, 1000
+
+ ; set channels and call subinstrument for processing
+ SchannelL = sprintf("tabproc%dL", ichannelbase)
+ SchannelR = sprintf("tabproc%dR", ichannelbase)
+ chnset atest, SchannelL
+ chnset atest, SchannelR
+ aL, aR subinstr instrnum, SchannelL, SchannelR
+ kcount += 1
+ od
+ endif
+
+ endif
+complete:
+ xout kdone, kblocksize, kprocrate
+endop
+
+
+opcode tabproc_profiler, kkk, S
+ Sinstrname xin
+ kdone, kblocksize, kprocrate tabproc_profiler nstrnum(Sinstrname)
+ xout kdone, kblocksize, kprocrate
+endop
+
+
+
+/*
+ Process a table with a subinstrument at deferred k-rate.
+ The table ifn is read and passed to the instrument Sinstrname/instrnum which should perform processing and use the outs() or out() opcode to return audio to be written to ifn.
+ Sinstrument is passed the input audio on channels with the names passed as p4 (left) and p5 (right, if the sound is stereo).
+ Hence the instrument should implement something such as
+ aL = chnget:a(strget(p4))
+ aR = chnget:a(strget(p5))
+ in order to deal with the incoming audio.
+
+ The table can be read in reverse by specifying ireverseread=1. Similarly it can be written back to in reverse with ireversewrite=1.
+
+ tabproc performs processing in chunks at a given rate in order to minimise CPU usage and allow other instruments to continue uninterrupted (without this, it
+ would consume all available CPU and block the performance until complete). The blocksize iblocksize is how many k-cycles are processed in each chunk, and iprocrate
+ determines the frequency at which chunks are processed. Defaults are provided but these will be best altered depending on the load of Sinstrument and the
+ available CPU.
+ iautoadjust can be set to 1 to attempt to automatically reduce iblocksize and iprocrate if it is detected that the CPU cannot keep up. This is done by comparing
+ the realtime clock against Csound's instrument time. If the difference is over iautotimethreshold, then a reduction of block size/frequency is made.
+
+
+ kdone, kpercent tabproc ifn, instrnum [, ireverseread=0, ireversewrite=0, iautoadjust=0, iblocksize=2048, iprocrate=TP_DFLT_RATE, iautotimethreshold=TP_DFLT_TTHRESH]
+ kdone, kpercent tabproc ifn, Sinstrname [, ireverseread=0, ireversewrite=0, iautoadjust=0, iblocksize=2048, iprocrate=TP_DFLT_RATE, iautotimethreshold=TP_DFLT_TTHRESH]
+
+
+ kdone output trigger when the processing has completed
+ kpercent percent of the table that has been processed
+
+ ifn table containing audio (typically GEN1 but could be any). Mono and stereo are supported
+ instrnum the instrument number to be invoked to process the table
+ Sinstrname the instrument name to be invoked to process the table
+ ireverseread set to 1 in order to read the table in reverse
+ ireversewrite set to 1 in order to write back to the table in reverse
+ iautoadjust set to 1 to enable automatic reduction of iblocksize and iprocrate if processing lag is detected
+ iblocksize number of k-cycles of audio to be processed in each run
+ iprocrate frequency at which to perform block processing
+ iautotimethreshold time lag at which to automatically adjust, if iautoadjust is specified
+
+*/
+opcode tabproc, kk, iiooojjj
+ ifn, instrnum, ireverseread, ireversewrite, iautoadjust, iblocksize, iprocrate, iautotimethreshold xin
+ kblocksize init (iblocksize == -1) ? 2048 : iblocksize
+ kprocrate init ((iprocrate == -1) ? $TP_DFLT_RATE : iprocrate)
+ iautotimethreshold = (iautotimethreshold == -1) ? $LAG_DFLT_TTHRESH : iautotimethreshold
+
+ ichannelbase = gitabproc_instancetrack
+ gitabproc_instancetrack += 1
+
+ ichannels = ftchnls(ifn)
+ isr = ftsr(ifn)
+ ilenraw = ftlen(ifn)
+ ilen = ilenraw / ichannels
+
+ kpos init 0
+ kpercent = 0
+ kdone init 0
+
+
+ if (kdone == 0) then
+ ; auto adjust block size to account when cpu can't keep up
+ if (iautoadjust == 1 && lagdetect:k(iautotimethreshold) == 1) then
+ if (kblocksize > 128) then
+ kblocksize -= 128
+ elseif (kprocrate > 1) then
+ kprocrate -= 1
+ endif
+ endif
+
+
+ ; each block processing at iprocrate
+ ktrig metro kprocrate
+ if (ktrig == 1) then
+ kcount = 0
+ while (kcount < kblocksize) do
+ apos = round:a(lphasor(isr / sr)) ; rounded to deal with stereo offset if required
+
+ ; if complete, set kdone
+ if (downsamp(apos) >= ilen) then ;? >= ilenraw) then
+ kpercent = 100
+ kdone = 1
+ kgoto complete
+ endif
+
+ ; read and write position calcs for stereo / reverse
+ aposbase = apos * ichannels
+ if (ireverseread == 1) then
+ aposrR = ilen - aposbase
+ aposrL = (ichannels == 2) ? aposrR + 1 : aposrR
+ else
+ aposrL = aposbase
+ aposrR = aposbase + 1
+ endif
+
+ if (ireversewrite == 1) then
+ aposwR = ilen - aposbase
+ aposwL = (ichannels == 2) ? aposwR + 1 : aposwR
+ else
+ aposwL = aposbase
+ aposwR = aposbase + 1
+ endif
+
+ ; read source table
+ aL table aposrL, ifn
+ if (ichannels == 2) then
+ aR table aposrR, ifn
+ else
+ aR = aL
+ endif
+
+ ; set channels and call subinstrument for processing
+ SchannelL = sprintf("tabproc%dL", ichannelbase)
+ SchannelR = sprintf("tabproc%dR", ichannelbase)
+ chnset aL, SchannelL
+ chnset aR, SchannelR
+ aL, aR subinstr instrnum, SchannelL, SchannelR
+
+ ; write back to table
+ tablew aL, aposwL, ifn
+ if (ichannels == 2) then
+ tablew aR, aposwR, ifn
+ endif
+
+ kcount += 1
+ od
+ endif
+
+ ; calculate percent complete
+ kpercent = (100 / ilenraw) * downsamp(apos)
+ endif
+
+complete:
+ xout kdone, kpercent
+endop
+
+
+; derived opcode for named instruments
+opcode tabproc, kk, iSooojjj
+ ifn, Sinstrname, ireverseread, ireversewrite, iautoadjust, iblocksize, iprocrate, iautotimethreshold xin
+ kdone, kpercent tabproc ifn, nstrnum(Sinstrname), ireverseread, ireversewrite, iautoadjust, iblocksize, iprocrate, iautotimethreshold
+ xout kdone, kpercent
+endop
+
+#end
diff --git a/site/udo/tempo_tools.udo b/site/udo/tempo_tools.udo
new file mode 100755
index 0000000..a678f7a
--- /dev/null
+++ b/site/udo/tempo_tools.udo
@@ -0,0 +1,72 @@
+#ifndef UDO_TEMPOTOOLS
+#define UDO_TEMPOTOOLS ##
+/*
+ Tempo tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+/*
+ Get the beat time (1/4 note) and quarter beat time (1/16 note) in seconds
+ for a given BPM
+
+ ibeattime, iquartertime tempotime ibpm
+
+ ibeattime the 1/4 note time in seconds
+ iquartertime the 1/16 note time in seconds
+ ibpm the beats per minute value
+*/
+opcode tempotime, ii, i
+ itempo xin
+ ibeattime = 60.0 / itempo
+ iquartertime = ibeattime * .25
+ xout ibeattime, iquartertime
+endop
+
+
+/*
+ Get the swung time (when iquarterindex is 1 or 3) for a given time
+ Using iquartertime as the 1/16 beat time and iswing as multiplier of
+ iquartertime to add to the time (iswing should be less than one)
+
+ itime swinger iquarterindex, iquartertime, itime, iswing
+
+ itime the time with swing applied
+ iquarterindex the quarter beat index MIN(0) MAX(3)
+ iquartertime time of one 1/16th beat
+ itime the normal/quantised time
+ iswing the swing amount MIN(0) MAX(1)
+
+*/
+opcode swinger, i, iiii
+ iquarterindex, iquartertime, itime, iswing xin
+ if (iquarterindex == 1 || iquarterindex == 3) then
+ itime = itime + (iswing * iquartertime)
+ endif
+ xout itime
+endop
+
+
+/*
+ Metronome with random variation
+
+ ktrigger drunkenmetro kfreq
+
+ ktrigger the metronome trigger
+ kfreq metronome frequency in hz
+*/
+opcode drunkenmetro, k, k
+ kfreq xin
+ kbtime = 1.0 / kfreq
+ kmetro metro kfreq
+ kdeltime random 0, (1.0 / kfreq) * 0.9
+ kout vdel_k kmetro, kdeltime, 1
+ xout kout
+endop
+
+
+
+
+#end \ No newline at end of file
diff --git a/site/udo/transient_detect.udo b/site/udo/transient_detect.udo
new file mode 100755
index 0000000..4acf1d3
--- /dev/null
+++ b/site/udo/transient_detect.udo
@@ -0,0 +1,216 @@
+#ifndef UDO_TRANSIENTDETECT
+#define UDO_TRANSIENTDETECT ##
+/*
+ Transient detection
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+/*
+ Internal transient detection base
+*/
+opcode _transientdetect, kk,kikkki
+ kin, iresponse, ktthresh, klowThresh, kdecThresh, idoubleLimit xin
+ kinDel delayk kin, iresponse / 1000
+ ktrig = ((kin > kinDel + ktthresh) ? 1 : 0)
+ klowGate = (kin < klowThresh ? 0 : 1)
+ ktrig = ktrig * klowGate
+ ktransLev init 0
+ ktransLev samphold kin, 1-ktrig
+ kreGate init 1
+ ktrig = ktrig * kreGate
+ kmaxAmp init -99999
+ kmaxAmp max kmaxAmp, kin
+ kdiff = kmaxAmp-kin
+ kreGate limit kreGate-ktrig, 0, 1
+ kreGate = (kdiff > kdecThresh ? 1 : kreGate)
+ kmaxAmp = (kreGate == 1 ? -99999 : kmaxAmp)
+ xout ktrig, kdiff
+endop
+
+
+
+opcode transientdetect, k, akkiikkk
+ ain, kattack, krelease, iresponse, idoublelimit, ktthresh, klowthresh, kdecthresh xin
+ afollow follow2 ain, kattack, krelease
+ kfollow downsamp afollow
+ kfollowdb = dbfsamp(kfollow)
+ ktrig, kdiff _transientdetect kfollowdb, iresponse, ktthresh, klowthresh, kdecthresh, idoublelimit
+ xout ktrig
+endop
+
+/*
+ Default transient detection
+ ktrigger transientdetect ainput
+
+ ktrigger fires when a transient has been detected
+ ainput the audio signal to track
+*/
+opcode transientdetect, k, a
+ ain xin
+ kattack init 0.05
+ krelease init 0.06
+ iresponse = 10
+ ktthresh = 9
+ klowthresh = -50
+ idoublelimit = 0.1
+ kdecthresh = 6
+ ktrig transientdetect ain, kattack, krelease, iresponse, idoublelimit, ktthresh, klowthresh, kdecthresh
+ xout ktrig
+endop
+
+/*
+
+opcode transientdetect, k, a
+ ain xin
+ kattack init 0.05
+ krelease init 0.06
+ afollow follow2 ain, kattack, krelease
+ kfollow downsamp afollow
+ kfollowdb = dbfsamp(kfollow)
+ iresponse = 10
+ ktthresh = 9
+ klowthresh = -50
+ idoublelimit = 0.1
+ kdecthresh = 6
+ ktrig, kdiff _transientdetect kfollowdb, iresponse, ktthresh, klowthresh, kdecthresh, idoublelimit
+ xout ktrig
+endop
+
+*/
+
+/*
+ Detect transients in audio ftable; count or output to ftable
+
+ p4 ftable to read sound from
+ p5 instrument name to invoke when complete, ftable contaqining transients is passed as p4
+ p6 0 = stage 1, count and recall; 1 = stage 2, write to ftable
+ p7 number of transients for ftable initialisation as used with stage 2
+*/
+instr _transientdetect_tofn_inner
+ ifnsound = p4
+ SonComplete = p5
+ istate = p6
+ itransientnum = p7
+
+ if (istate == 0) then
+ ifntransients = -1
+ else
+ ifntransients ftgen 0, 0, itransientnum, 7, 0
+ endif
+
+
+ kdone init 0
+ ktransientnum init 0
+ ktimek timeinstk
+ if (ktimek == 1) then
+ inputduration = ftlen(ifnsound) / ftsr(ifnsound)
+ kcycles = inputduration * kr
+ kcount init 0
+ while (kcount < kcycles) do
+ if (ftchnls(ifnsound) == 1) then
+ asound loscil 1, 1, ifnsound, 1
+ else
+ aL, aR loscil 1, 1, ifnsound, 1
+ asound = (aL + aR) / 2
+ endif
+ ;ktransient, kdiff _transientdetectinner asound
+ ktransient transientdetect asound
+ if (ktransient == 1) then
+ if (ifntransients != -1) then
+ tablew (inputduration / kcycles) * kcount, ktransientnum, ifntransients
+ endif
+ ktransientnum += 1
+ endif
+ kcount += 1
+ od
+ else
+ if (istate == 0) then
+ if (ktransientnum == 0) then
+ schedulek(SonComplete, 0, 3600, -1)
+ else
+ schedulek(p1, 0, 1, ifnsound, SonComplete, 1, ktransientnum)
+ endif
+ else
+ schedulek(SonComplete, 0, 3600, ifntransients)
+ endif
+ turnoff
+ endif
+endin
+
+
+opcode transientdetect_tofn, 0, iS
+ ifn, SonComplete xin
+ schedule("_transientdetect_tofn_inner", 0, 600, ifn, SonComplete, 0, 0)
+endop
+
+
+opcode randomtransient, ii, i
+ ifntransients xin
+ iftlen = ftlen(ifntransients)
+ if (iftlen < 2) then
+ istart = tab_i(0, ifntransients)
+ ilen = 0.1
+ else
+ istartindex = round(random(0, iftlen - 2))
+ istart = tab_i(istartindex, ifntransients)
+ iend = tab_i(istartindex + 1, ifntransients)
+ ilen = iend - istart
+ endif
+
+ if (ilen > 1) then
+ ilen = 1
+ endif
+ xout istart, ilen
+endop
+
+/*
+ By Brandtsegg, I think; tweaked by RK
+*/
+opcode onsetdetect, k, aiiiiii
+ ain, iMinFreq, iMaxFreq, iAboveMed, iOffset, iMinSec, iMedLen xin
+ ifftsize = 1024
+ iIndexStart limit int(iMinFreq*(ifftsize/sr))*2,0,sr/2
+ iIndexEnd limit int(iMaxFreq*(ifftsize/sr))*2,0,sr/2
+ fsrc pvsanal ain,ifftsize,ifftsize/4,ifftsize,1
+ kArr[] init ifftsize+2
+ kflag pvs2array kArr, fsrc
+ ksumold init 0
+ kMedIndex init 0
+ kMedSum init 0
+ kMedian[] init iMedLen
+ kMinDist init 0
+ iMinDist = iMinSec*(sr/ksmps)
+ kMinDist limit kMinDist-1,0,100000
+
+ if changed(kflag) == 1 && kMinDist == 0 then
+ ksum = 0
+ kIndex = iIndexStart
+
+ until kIndex = iIndexEnd do
+ ksum = ksum+kArr[kIndex]
+ kIndex += 2
+ od
+
+ kFLUX = ksum-ksumold
+ ksumold = ksum
+ kOnset = 0
+
+ if kFLUX > (kMedSum*iAboveMed)+iOffset then
+ kOnset = 1
+ kMinDist = iMinDist
+ endif
+
+ kMedian[kMedIndex] = (kFLUX>=0?kFLUX:0)
+ kMedSum = sumarray(kMedian)/iMedLen
+ kMedIndex = (kMedIndex+1)%iMedLen
+
+ endif
+
+ xout changed(kOnset)==1 && kOnset==1 ? 1 : 0
+
+endop
+
+#end
diff --git a/site/udo/twigs/checkpointing.udo b/site/udo/twigs/checkpointing.udo
new file mode 100755
index 0000000..bd2594e
--- /dev/null
+++ b/site/udo/twigs/checkpointing.udo
@@ -0,0 +1,120 @@
+#ifndef UDO_TWIGS_CHECKPOINTING
+#define UDO_TWIGS_CHECKPOINTING ##
+
+gitwgs_maxundolevels = 32
+gitwgs_checkpoints[] init gitwgs_maxundolevels
+gitwgs_checkpointstate = 0
+gitwgs_checkpointencodemult = 10000
+
+
+opcode twgs_checkpoint_encode, i, ii
+ ifnL, ifnR xin
+ iencoded = (ifnL * gitwgs_checkpointencodemult) + (ifnR / gitwgs_checkpointencodemult)
+ xout iencoded
+endop
+
+opcode twgs_checkpoint_decode, ii, i
+ iencoded xin
+ ifnL = int(iencoded) / gitwgs_checkpointencodemult
+ ifnR = frac(iencoded) * gitwgs_checkpointencodemult
+ xout ifnL, ifnR
+endop
+
+opcode twgs_checkpoint_clear, 0, 0
+ icheckpointnumber = gitwgs_checkpointstate
+ while (icheckpointnumber >= 0) do
+ ifnL, ifnR twgs_checkpoint_decode gitwgs_checkpoints[icheckpointnumber]
+ if (ifnL > 0 && ftexists(ifnL) == 1) then
+ tpvf_destroy ifnL
+ endif
+ if (ifnR > 0 && ftexists(ifnR) == 1) then
+ tpvf_destroy ifnR
+ endif
+ icheckpointnumber -= 1
+ od
+ gitwgs_checkpointstate = 0
+endop
+
+opcode twgs_checkpoint, 0, 0
+ imaxundo chnget "twgs_maxundo"
+ imaxundo = (imaxundo == -1) ? gitwgs_maxundolevels : imaxundo
+ if (imaxundo == 0 || imaxundo > gitwgs_maxundolevels) then
+ goto complete
+ endif
+
+ icheckpointnumber = gitwgs_checkpointstate
+ if (icheckpointnumber >= imaxundo) then
+ ifnL, ifnR twgs_checkpoint_decode gitwgs_checkpoints[0]
+ if (ifnL > 0 && ftexists(ifnL) == 1) then
+ tpvf_destroy ifnL
+ endif
+ if (ifnR > 0 && ftexists(ifnR) == 1) then
+ tpvf_destroy ifnR
+ endif
+ index = 1
+ itemp[] = gitwgs_checkpoints
+ while (index <= imaxundo) do
+ gitwgs_checkpoints[index - 1] = itemp[index]
+ index += 1
+ od
+ gitwgs_checkpointstate = icheckpointnumber ;- 1
+ else
+ gitwgs_checkpointstate = icheckpointnumber + 1
+ endif
+
+ ifnL = gitwgs_tpvfHandleL
+ ifnR = gitwgs_tpvfHandleR
+
+ ifnCheckpointL tpvf_clone ifnL
+print ifnCheckpointL
+ if (ifnR > 0) then
+ ifnCheckpointR tpvf_clone ifnR
+ else
+ ifnCheckpointR = 0
+ endif
+
+ iencoded twgs_checkpoint_encode ifnCheckpointL, ifnCheckpointR
+ gitwgs_checkpoints[icheckpointnumber] = iencoded
+
+complete:
+endop
+
+opcode twgs_undo, i, p
+ iapplyundo xin
+
+ icheckpointnumber = gitwgs_checkpointstate
+
+ icheckpointnumber -= 1
+ if (icheckpointnumber < 0) then
+ istatus = -1
+ goto complete
+ endif
+
+ gitwgs_checkpointstate = icheckpointnumber
+ ifnL, ifnR twgs_checkpoint_decode gitwgs_checkpoints[icheckpointnumber]
+
+ if (iapplyundo == 1) then ; apply or just step back and forget
+ if (ifnL > 0 && ftexists(ifnL) = 1) then
+ tpvf_destroy gitwgs_tpvfHandleL
+ gitwgs_tpvfHandleL = ifnL
+ endif
+ if (ifnR > 0 && ftexists(ifnR) == 1) then
+ tpvf_destroy gitwgs_tpvfHandleR
+ gitwgs_tpvfHandleR = ifnR
+ endif
+ else
+ if (ifnL > 0 && ftexists(ifnL) = 1) then
+ tpvf_destroy ifnL
+ endif
+ if (ifnL > 0 && ftexists(ifnR) = 1) then
+ tpvf_destroy ifnR
+ endif
+ endif
+
+ istatus = 1
+
+complete:
+ xout istatus
+endop
+
+#end
diff --git a/site/udo/twigs/transforms.udo b/site/udo/twigs/transforms.udo
new file mode 100755
index 0000000..c5a7239
--- /dev/null
+++ b/site/udo/twigs/transforms.udo
@@ -0,0 +1,285 @@
+#ifndef UDO_TWIGS_TRANSFORMS
+#define UDO_TWIGS_TRANSFORMS ##
+/*
+ Twigs transforms
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024, 2025
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+instr twgs_freqshift
+ icbid = p4
+ ishift = p5
+ inocheckpoint = p6
+ p3 = 3600
+
+ if (inocheckpoint != 1) then
+ twgs_checkpoint()
+ endif
+
+ indexbin = 0
+ ifnfreqL tab_i 3, gitwgs_tpvfHandleL
+ if (gitwgs_channels == 2) then
+ ifnfreqR tab_i 3, gitwgs_tpvfHandleR
+ endif
+ ibins = ftlen(gitwgs_fnbinselection)
+ while (indexbin < ftlen(gitwgs_fnbinselection)) do
+ if (tab_i(indexbin, gitwgs_fnbinselection) == 1) then
+ index, iendindex twgs_getselectionindexes indexbin
+ while (index < iendindex) do
+ ival = tab_i(index, ifnfreqL)
+ ival = max(min(ival + ishift, sr / 2), 0)
+ tabw_i(ival, index, ifnfreqL)
+ if (gitwgs_channels == 2) then
+ ival = tab_i(index, ifnfreqR)
+ ival = max(min(ival + ishift, sr / 2), 0)
+ tabw_i(ival, index, ifnfreqR)
+ endif
+ index += ibins
+ od
+ endif
+ indexbin += 1
+ od
+ io_sendstring("callback", twgs_refreshviewresponse(icbid))
+ turnoff
+endin
+
+instr twgs_amplify
+ icbid = p4
+ ifactor = p5
+ p3 = 3600
+
+ twgs_checkpoint()
+
+ indexbin = 0
+ ifnampL tab_i 2, gitwgs_tpvfHandleL
+ if (gitwgs_channels == 2) then
+ ifnampR tab_i 2, gitwgs_tpvfHandleR
+ endif
+ ibins = ftlen(gitwgs_fnbinselection)
+ while (indexbin < ftlen(gitwgs_fnbinselection)) do
+ if (tab_i(indexbin, gitwgs_fnbinselection) == 1) then
+ index, iendindex twgs_getselectionindexes indexbin
+ while (index < iendindex) do
+ ival = tab_i(index, ifnampL)
+ ival *= ifactor
+ tabw_i(ival, index, ifnampL)
+ if (gitwgs_channels == 2) then
+ ival = tab_i(index, ifnampR)
+ ival *= ifactor
+ tabw_i(ival, index, ifnampR)
+ endif
+ index += ibins
+ od
+ endif
+ indexbin += 1
+ od
+ io_sendstring("callback", twgs_refreshviewresponse(icbid))
+ turnoff
+endin
+
+
+instr twgs_movement
+ icbid = p4
+ iframeshift = p5
+
+ twgs_checkpoint()
+
+ itype chnget "twgs_movementtype"
+ interpolatevoid chnget "twgs_interpolatevoid"
+ interpratio chnget "twgs_interpolateratio"
+ icopy = 0
+ imoveinterp = 0
+ if (itype == 0) then
+ icopy = 1
+ else
+ if (itype == 1) then
+ imovemode = 0
+ else
+ imoveinterp = interpolatevoid
+ imovemode = itype - 1
+ endif
+ endif
+
+ p3 = 3600
+ ifnAmpL tab_i 2, gitwgs_tpvfHandleL
+ ifnFreqL tab_i 3, gitwgs_tpvfHandleL
+ if (gitwgs_channels == 2) then
+ ifnAmpR tab_i 2, gitwgs_tpvfHandleR
+ ifnFreqR tab_i 3, gitwgs_tpvfHandleR
+ endif
+ itablen = ftlen(ifnAmpL)
+ ifftsize tab_i 0, gitwgs_tpvfHandleL
+ ibins = ifftsize / 2
+ indexbin = 0
+ while (indexbin < ftlen(gitwgs_fnbinselection)) do
+ if (tab_i(indexbin, gitwgs_fnbinselection) == 1) then
+ istartindex, iendindex twgs_getselectionindexes indexbin
+;prints sprintf("bin %d, start %f, end %f\n", indexbin, istartindex / ibins, iendindex / ibins)
+ if (interpratio > 0) then
+ interpframes = floor(interpratio * ((iendindex - istartindex) / ibins))
+ interpaddIndex = interpframes * ibins
+
+ interpendaddAmpLend = (tab_i(iendindex, ifnAmpL) - tab_i(iendindex - interpaddIndex, ifnAmpL)) / interpframes
+ interpendaddFreqLend = (tab_i(iendindex, ifnFreqL) - tab_i(iendindex - interpaddIndex, ifnFreqL)) / interpframes
+ interpendaddAmpLstart = (tab_i(istartindex + interpaddIndex, ifnAmpL) - tab_i(istartindex, ifnAmpL)) / interpframes
+ interpendaddFreqLstart = (tab_i(istartindex + interpaddIndex, ifnFreqL) - tab_i(istartindex, ifnFreqL)) / interpframes
+ if (gitwgs_channels == 2) then
+ interpendaddAmpRend = (tab_i(istartindex + interpaddIndex, ifnAmpR) - tab_i(istartindex, ifnAmpR)) / interpframes
+ interpendaddFreqRend = (tab_i(istartindex + interpaddIndex, ifnFreqR) - tab_i(istartindex, ifnFreqR)) / interpframes
+ interpendaddAmpRstart = (tab_i(istartindex + interpaddIndex, ifnAmpR) - tab_i(istartindex, ifnAmpR)) / interpframes
+ interpendaddFreqRstart = (tab_i(istartindex + interpaddIndex, ifnFreqR) - tab_i(istartindex, ifnFreqR)) / interpframes
+ endif
+ endif
+ itemplen = ceil((iendindex - istartindex) / ibins)
+ ifntempAmpL ftgen 0, 0, -itemplen, 2, 0
+ ifntempFreqL ftgen 0, 0, -itemplen, 2, 0
+ if (gitwgs_channels == 2) then
+ ifntempAmpR ftgen 0, 0, -itemplen, 2, 0
+ ifntempFreqR ftgen 0, 0, -itemplen, 2, 0
+ endif
+
+ index = istartindex
+ iwriteindex = 0
+ while (index < iendindex) do
+ tabw_i(tab_i(index, ifnAmpL), iwriteindex, ifntempAmpL)
+ tabw_i(tab_i(index, ifnFreqL), iwriteindex, ifntempFreqL)
+ if (gitwgs_channels == 2) then
+ tabw_i(tab_i(index, ifnAmpR), iwriteindex, ifntempAmpR)
+ tabw_i(tab_i(index, ifnFreqR), iwriteindex, ifntempFreqR)
+ endif
+ index += ibins
+ iwriteindex += 1
+ od
+
+ isetvalAmpL = -1
+ isetvalFreqL = -1
+ isetvalAmpR = -1
+ isetvalFreqR = -1
+ interpvalAmpL = -1
+ interpvalFreqL = -1
+ interpvalAmpR = -1
+ interpvalFreqR = -1
+
+ if (imovemode == 0) then
+ isetvalAmpL = 0
+ isetvalFreqL = 0
+ isetvalAmpR = 0
+ isetvalFreqR = 0
+ else ; hold last: 1 = amp and freq, 2 = amp, 3 = freq
+ ilastindex = istartindex - ibins
+ if (ilastindex < 0) then
+ ilastindex = istartindex
+ endif
+ if (imovemode == 2 || imovemode == 1) then
+ isetvalAmpL = tab_i(ilastindex, ifnAmpL)
+ if (imoveinterp == 1) then
+ interpvalAmpL = (tab_i(iendindex, ifnAmpL) - isetvalAmpL) / abs:i(iframeshift)
+ endif
+ if (gitwgs_channels == 2) then
+ isetvalAmpR = tab_i(ilastindex, ifnAmpR)
+ if (imoveinterp == 1) then
+ interpvalAmpR = (tab_i(iendindex, ifnAmpR) - isetvalAmpR) / abs:i(iframeshift)
+ endif
+ endif
+ endif
+ if (imovemode == 3 || imovemode == 1) then
+ isetvalFreqL = tab_i(ilastindex, ifnFreqL)
+ if (imoveinterp == 1) then
+ interpvalFreqL = (tab_i(iendindex, ifnFreqL) - isetvalFreqL) / abs:i(iframeshift)
+ endif
+ if (gitwgs_channels == 2) then
+ isetvalFreqR = tab_i(ilastindex, ifnFreqR)
+ if (imoveinterp == 1) then
+ interpvalFreqR = (tab_i(iendindex, ifnFreqR) - isetvalFreqR) / abs:i(iframeshift)
+ endif
+ endif
+ endif
+ endif
+
+ index = istartindex
+ iabsindex = 0
+ ireadindex = 0
+ while (index < iendindex) do
+ inewindex = index + (iframeshift * ibins)
+
+ if (inewindex >= itablen - 1) then
+ inewindex = itablen - 1
+ elseif (inewindex < 0) then
+ inewindex = 0
+ endif
+ if (icopy == 0) then
+ if (imoveinterp == 1) then
+ isetvalAmpL = (isetvalAmpL != -1) ? isetvalAmpL + interpvalAmpL : -1
+ isetvalFreqL = (isetvalFreqL != -1) ? isetvalFreqL + interpvalFreqL : -1
+ if (gitwgs_channels == 2) then
+ isetvalAmpR = (isetvalAmpR != -1) ? isetvalAmpR + interpvalAmpR : -1
+ isetvalFreqR = (isetvalFreqR != -1) ? isetvalFreqR + interpvalFreqR : -1
+ endif
+ endif
+
+ if (isetvalAmpL > 0) then
+ tabw_i(isetvalAmpL, index, ifnAmpL)
+ endif
+ if (isetvalFreqL > 0) then
+ tabw_i(isetvalFreqL, index, ifnFreqL)
+ endif
+ if (gitwgs_channels > 0) then
+ if (isetvalAmpR != -1) then
+ tabw_i(isetvalAmpR, index, ifnAmpR)
+ endif
+ if (isetvalFreqR > 0) then
+ tabw_i(isetvalFreqR, index, ifnFreqR)
+ endif
+ endif
+ endif
+ ivalAmpL = tab_i(ireadindex, ifntempAmpL)
+ ivalFreqL = tab_i(ireadindex, ifntempFreqL)
+ if (interpratio > 0) then
+ if (iabsindex < istartindex + interpaddIndex) then
+ ivalAmpL += interpendaddAmpLstart
+ ivalFreqL += interpendaddFreqLstart
+ elseif (iabsindex > iendindex - interpaddIndex) then
+ ivalAmpL += interpendaddAmpLend
+ ivalFreqL += interpendaddFreqLend
+ endif
+ endif
+ tabw_i(ivalAmpL, inewindex, ifnAmpL)
+ tabw_i(ivalFreqL, inewindex, ifnFreqL)
+
+ if (gitwgs_channels == 2) then
+ ivalAmpR = tab_i(ireadindex, ifntempAmpR)
+ ivalFreqR = tab_i(ireadindex, ifntempFreqR)
+ if (interpratio > 0) then
+ if (iabsindex < istartindex + interpaddIndex) then
+ ivalAmpR += interpendaddAmpRstart
+ ivalFreqR += interpendaddFreqRstart
+ elseif (iabsindex > iendindex - interpaddIndex) then
+ ivalAmpR += interpendaddAmpRend
+ ivalFreqR += interpendaddFreqRend
+ endif
+ endif
+ tabw_i(ivalAmpR, inewindex, ifnAmpR)
+ tabw_i(ivalFreqR, inewindex, ifnFreqR)
+ endif
+ index += ibins
+ iabsindex += ibins
+ ireadindex += 1
+ od
+
+ ftfree ifntempAmpL, 0
+ ftfree ifntempFreqL, 0
+ if (gitwgs_channels == 2) then
+ ftfree ifntempAmpR, 0
+ ftfree ifntempFreqR, 0
+ endif
+ endif
+ indexbin += 1
+ od
+
+ io_sendstring("callback", twgs_refreshviewresponse(icbid))
+ turnoff
+endin
+
+#end
diff --git a/site/udo/twigs/twigs.udo b/site/udo/twigs/twigs.udo
new file mode 100755
index 0000000..a4bda3f
--- /dev/null
+++ b/site/udo/twigs/twigs.udo
@@ -0,0 +1,444 @@
+#ifndef UDO_TWIGS
+#define UDO_TWIGS ##
+/*
+ Twigs
+ Spectral transformer
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024, 2025
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "/pvs_fulltabproc.udo"
+#include "/host_platform.udo"
+#include "/lagdetect.udo"
+#include "/interop.udo"
+
+gitwgs_bufferL = -1
+gitwgs_bufferR = -1
+gitwgs_tpvfHandleL = -1
+gitwgs_tpvfHandleR = -1
+gitwgs_channels = -1
+gitwgs_userstopped = 0
+gitwgs_fnbinselection = -1
+gitwgs_fnbintimeselection = -1
+
+#include "/twigs/checkpointing.udo"
+
+opcode twgs_getselectionindexes, ii, i
+ indexbin xin
+ ibins = ftlen(gitwgs_fnbinselection)
+ itablen = ftlen(tab_i(2, gitwgs_tpvfHandleL))
+ iframes = itablen / ibins
+ istartindex = (round(tab_i(indexbin, gitwgs_fnbintimeselection) * iframes) * ibins) + indexbin
+ iendindex = (round(tab_i(indexbin + ibins, gitwgs_fnbintimeselection) * iframes) * ibins) + indexbin
+ if (iendindex > itablen) then
+ iendindex = itablen
+ endif
+
+;print tab_i(indexbin, gitwgs_fnbintimeselection)
+;print istartindex
+;print tab_i(indexbin + ibins, gitwgs_fnbintimeselection)
+;print iendindex
+ xout istartindex, iendindex
+endop
+
+opcode twgs_failresponse, S, ij
+ icbid, istatus xin
+ xout sprintf("{\"cbid\":%d,\"status\":%d}", icbid, istatus)
+endop
+
+
+opcode twgs_refreshviewresponse, S, i
+ icbid xin
+ ifnampL tab_i 2, gitwgs_tpvfHandleL
+ ifnfreqL tab_i 3, gitwgs_tpvfHandleL
+ iduration tab_i 4, gitwgs_tpvfHandleL
+ if (gitwgs_channels == 2) then
+ ifnampR tab_i 2, gitwgs_tpvfHandleR
+ ifnfreqR tab_i 3, gitwgs_tpvfHandleR
+ else
+ ifnampR = -1
+ ifnfreqR = -1
+ endif
+ xout sprintf("{\"cbid\":%d,\"status\":1,\"tables\":[%d,%d,%d,%d],\"duration\":%f,\"undolevel\":%d}", icbid, ifnampL, ifnfreqL, ifnampR, ifnfreqR, iduration, gitwgs_checkpointstate)
+endop
+
+
+opcode twgs_clearbuffers, 0, pp
+ ihandles, ibuffers xin
+ if (ibuffers == 1) then
+ if (gitwgs_bufferL > 0 && ftexists(gitwgs_bufferL) == 1) then
+ ftfree gitwgs_bufferL, 0
+ gitwgs_bufferL = -1
+ endif
+ if (gitwgs_bufferR > 0 && ftexists(gitwgs_bufferR) == 1) then
+ ftfree gitwgs_bufferR, 0
+ gitwgs_bufferR = -1
+ endif
+ endif
+
+ if (ihandles == 1) then
+ if (gitwgs_tpvfHandleL > 0 && ftexists(gitwgs_tpvfHandleL) == 1) then
+ ftfree gitwgs_tpvfHandleL, 0
+ gitwgs_tpvfHandleL = -1
+ endif
+ if (gitwgs_tpvfHandleR > 0 && ftexists(gitwgs_tpvfHandleR) == 1) then
+ ftfree gitwgs_tpvfHandleR, 0
+ gitwgs_tpvfHandleR = -1
+ endif
+ gitwgs_channels = -1
+ endif
+endop
+
+opcode twgs_loadfile, ik, Sjj
+ Spath, ifftsize, ifftdecimation xin
+ kdone init 0
+ if (filevalid(Spath) != 1) then
+ iresponse = -1
+ goto complete
+ endif
+
+ ifilesr = filesr(Spath)
+ ifilechannels = filenchnls(Spath)
+ ilens = filelen(Spath)
+ ilen = round(ilens * ifilesr)
+
+ if (ilen >= gihost_max32bitftlen || ilens * sr >= gihost_max32bitftlen) then ; limitation with WASM Csound build at the moment
+ iresponse = -2
+ goto complete
+ endif
+
+ gitwgs_channels = ifilechannels
+ twgs_clearbuffers()
+ twgs_checkpoint_clear()
+
+ gitwgs_bufferL = ftgen(0, 0, -ilen, 1, Spath, 0, 0, 1)
+ if (gitwgs_channels == 2) then
+ gitwgs_bufferR = ftgen(0, 0, -ilen, 1, Spath, 0, 0, 2)
+ imono = 0
+ else
+ imono = 1
+ endif
+
+ if (sr != ifilesr) then ; different sr causes issues in table reading opcodes, convert..
+ inewlen = ilens * sr
+ ifnnewL ftgen 0, 0, -inewlen, -2, 0
+ if (imono == 0) then
+ ifnnewR ftgen 0, 0, -inewlen, -2, 0
+ endif
+ ktimek timeinstk
+ ikcycles = ilens * kr
+ if (ktimek == 1) then
+ kcount = 0
+ while (kcount < ikcycles) do
+ aposw linseg 0, ilens, inewlen - 1
+ aposr linseg 0, ilens, ilen - 1
+ asig table3 aposr, gitwgs_bufferL
+ tablew asig, aposw, ifnnewL
+ if (imono == 0) then
+ asig table3 aposr, gitwgs_bufferR
+ tablew asig, aposw, ifnnewR
+ endif
+ kcount += 1
+ od
+ else
+ kdone = 1
+ endif
+
+ ftfree gitwgs_bufferL, 1
+ gitwgs_bufferL = ifnnewL
+ if (imono == 0) then
+ ftfree gitwgs_bufferR, 1
+ gitwgs_bufferR = ifnnewR
+ endif
+ else
+ kdone = 1
+ endif
+
+ iresponse = 1
+complete:
+ xout iresponse, kdone
+endop
+
+
+#include "/twigs/transforms.udo"
+
+
+instr twgs_undo
+ icbid = p4
+
+ istatus twgs_undo
+ if (istatus < 0) then
+ Sresponse = twgs_failresponse(icbid)
+ else
+ Sresponse = twgs_refreshviewresponse(icbid)
+ endif
+
+ io_sendstring("callback", Sresponse)
+ turnoff
+endin
+
+
+instr twgs_stop
+ gitwgs_userstopped = 1
+ turnoff2 "twgs_play", 0, 1
+ turnoff
+endin
+
+instr twgs_playcomplete_response
+ icbid = p4
+ istatus = 0
+ if (gitwgs_userstopped == 1) then
+ istatus = 3
+ endif
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":%d}", icbid, istatus))
+ turnoff
+endin
+
+instr twgs_playlag_response
+ icbid = p4
+ turnoff2 "twgs_play", 0, 0
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":-1}", icbid))
+ turnoff
+endin
+
+instr twgs_play
+ icbid = p4
+ iplaytype = p5 ; 0 = from analysis, 1 = from buffer
+ iselectedonly = p6
+ istart = p7
+ iend = p8
+ iresynthtype = p9 ; 0 = pvsynth, 1 = pvsadsyn
+ gitwgs_userstopped = 0
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+
+ ilen = tab_i(4, gitwgs_tpvfHandleL)
+ p3 = ilen * (iend - istart)
+
+ if (iplaytype == 0) then
+ if (iselectedonly == 1) then
+ ibinselection = gitwgs_fnbinselection
+ else
+ ibinselection = -1
+ endif
+
+ istartframe = tpvf_framecount(gitwgs_tpvfHandleL) * istart
+ aL, k_ tpvf_resynth gitwgs_tpvfHandleL, ibinselection, iresynthtype, 0, istartframe
+ aL dcblock aL
+ if (gitwgs_channels == 2) then
+ aR, k_ tpvf_resynth gitwgs_tpvfHandleR, ibinselection, iresynthtype, istartframe
+ aR dcblock aR
+ else
+ aR = aL
+ endif
+ else
+ apos lphasor 1
+ apos += (istart * ftlen(gitwgs_bufferL))
+ aL table3 apos, gitwgs_bufferL
+ if (gitwgs_channels == 2) then
+ aR table3 apos, gitwgs_bufferR
+ else
+ aR = aL
+ endif
+ endif
+
+ kpos linseg istart, p3, iend
+ chnset kpos, "twgs_playposratio"
+
+ klagging lagdetect 1.1
+ if (klagging == 1) then
+ schedulek("twgs_playlag_response", 0, 1, icbid)
+ endif
+
+ kreleasing init 0
+ ktimek timeinstk
+ iduration = (p3 * kr) ;+ (iextracycles / sr)
+ krelease release
+ if (kreleasing == 0 && (krelease == 1 || ktimek >= iduration)) then
+ kreleasing = 1
+ schedulek("twgs_playcomplete_response", 0, 1, icbid)
+ turnoff
+ endif
+ outs aL, aR
+endin
+
+
+instr twgs_resynth_response
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+ turnoff
+endin
+
+instr twgs_resynth
+ icbid = p4
+ Snext = strget(p5)
+ iresynthtype = p6 ; 0 = pvsynth, 1 = pvsadsyn
+ p3 = 3600
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":5}", icbid))
+ twgs_clearbuffers(0, 1)
+ kdone init 0
+ gitwgs_bufferL, kdoneL tpvf_resynth_offline gitwgs_tpvfHandleL, iresynthtype
+ if (gitwgs_channels == 2) then
+ gitwgs_bufferR, kdoneR tpvf_resynth_offline gitwgs_tpvfHandleR, iresynthtype
+ else
+ kdoneR init 1
+ endif
+ if (kdoneL == 1 && kdoneR == 1) then
+ schedulek(Snext, 0, 1, icbid, 1)
+ turnoff
+ endif
+endin
+
+instr twgs_getbuffers
+ icbid = p4
+ if (gitwgs_channels == 2) then
+ Stables = sprintf("[%d,%d]", gitwgs_bufferL, gitwgs_bufferR)
+ else
+ Stables = sprintf("[%d]", gitwgs_bufferL)
+ endif
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1,\"tables\":%s}", icbid, Stables))
+ turnoff
+endin
+
+
+instr twgs_savefile_response
+ icbid = p4
+ Spath = p5
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1,\"path\":\"%s\"}", icbid, Spath))
+ turnoff
+endin
+
+
+instr twgs_savefile
+ icbid = p4
+ Spath = strget(p5)
+
+ ktimek timeinstk
+ idurations = ftlen(gitwgs_bufferL) / sr
+ ikcycles = idurations * kr
+ if (ktimek == 1) then
+ kcount init 0
+ while (kcount < ikcycles) do
+ apos lphasor 1
+ aL table apos, gitwgs_bufferR
+ if (gitwgs_channels == 1) then
+ fout Spath, 14, aL
+ else
+ aR table3 apos, gitwgs_bufferL
+ fout Spath, 14, aL, aR
+ endif
+ kcount += 1
+ od
+ else
+ schedulek("twgs_savefile_response", 0, 1, icbid, Spath)
+ turnoff
+ endif
+endin
+
+
+
+instr twgs_loadfilecomplete_response
+ icbid = p4
+ ifftsize tab_i 0, gitwgs_tpvfHandleL
+ ifftdecimation tab_i 1, gitwgs_tpvfHandleL
+ ifnampL tab_i 2, gitwgs_tpvfHandleL
+ ifnfreqL tab_i 3, gitwgs_tpvfHandleL
+ iduration tab_i 4, gitwgs_tpvfHandleL
+ if (gitwgs_channels == 2) then
+ ifnampR tab_i 2, gitwgs_tpvfHandleR
+ ifnfreqR tab_i 3, gitwgs_tpvfHandleR
+ else
+ ifnampR = -1
+ ifnfreqR = -1
+ endif
+
+ Sresponse = sprintf("{\"cbid\":%d,\"status\":1,\"channels\":%d,\"tables\":[%d,%d,%d,%d],\"bins\":%d,\"binseltab\":%d,\"bintimeseltab\":%d,\"duration\":%f,\"undolevel\":%d,\"fftdecim\":%d,\"sr\":%d}", icbid, gitwgs_channels, ifnampL, ifnfreqL, ifnampR, ifnfreqR, ifftsize / 2, gitwgs_fnbinselection, gitwgs_fnbintimeselection, iduration, gitwgs_checkpointstate, ifftdecimation, sr)
+ io_sendstring("callback", Sresponse)
+ turnoff
+endin
+
+instr twgs_loadfile_analysis
+ icbid = p4
+ ifftsize = p5
+ ifftdecimation = p6
+
+ itablen = tpvf_tablen(ftlen(gitwgs_bufferL), ifftsize, ifftdecimation)
+ if (itablen >= gihost_max32bitftlen) then
+ io_sendstring("callback", twgs_failresponse(icbid, -2))
+ turnoff
+ endif
+
+ kdoneL, gitwgs_tpvfHandleL tpvf_analyse gitwgs_bufferL, ifftsize, ifftdecimation
+ ftfree gitwgs_bufferL, 1
+ if (gitwgs_channels == 2) then
+ kdoneR, gitwgs_tpvfHandleR tpvf_analyse gitwgs_bufferR, ifftsize, ifftdecimation
+ ftfree gitwgs_bufferR, 1
+ else
+ istatusR = 1
+ kdoneR init 1
+ endif
+
+ if (gitwgs_fnbinselection > 0) then
+ ftfree gitwgs_fnbinselection, 0
+ endif
+ gitwgs_fnbinselection ftgen 0, 0, -(ifftsize / 2), -2, 0
+
+ if (gitwgs_fnbintimeselection > 0) then
+ ftfree gitwgs_fnbintimeselection, 0
+ endif
+ gitwgs_fnbintimeselection ftgen 0, 0, -ifftsize, -2, 0
+
+ if (kdoneL == 1 && kdoneR == 1) then
+ schedule("twgs_loadfilecomplete_response", 0, 1, icbid)
+ turnoff
+ endif
+endin
+
+
+instr twgs_loadftable
+ icbid = p4
+ ifftsize = p5
+ ifftdecimation = p6
+ ifnL = p7
+ ifnR = p8
+ iclearaudiobuffers = p9
+
+ if (ifnL <= 0 || ftexists(ifnL) == 0 || (ifnR > 0 && ftexists(ifnR) == 0)) then
+ io_sendstring("callback", twgs_failresponse(icbid, -1))
+ turnoff
+ endif
+
+ twgs_clearbuffers(1, iclearaudiobuffers)
+ twgs_checkpoint_clear()
+
+ gitwgs_bufferL = ifnL
+ if (ifnR > 0) then
+ gitwgs_bufferR = ifnR
+ gitwgs_channels = 2
+ else
+ gitwgs_channels = 1
+ endif
+
+ schedule("twgs_loadfile_analysis", 0, 1, icbid, ifftsize, ifftdecimation)
+ turnoff
+endin
+
+instr twgs_loadfile
+ icbid = p4
+ Spath = strget(p5)
+ ifftsize = p6
+ ifftdecimation = p7
+ istatus, kdone twgs_loadfile Spath
+ if (istatus < 0) then
+ io_sendstring("callback", twgs_failresponse(icbid, istatus))
+ turnoff
+ else
+ if (kdone == 1) then
+ schedulek("twgs_loadfile_analysis", 0, 1, icbid, ifftsize, ifftdecimation)
+ turnoff
+ endif
+ endif
+endin
+
+#end
diff --git a/site/udo/twist/automation.udo b/site/udo/twist/automation.udo
new file mode 100755
index 0000000..39585fb
--- /dev/null
+++ b/site/udo/twist/automation.udo
@@ -0,0 +1,241 @@
+#ifndef TWST_AUTOMATION
+#define TWST_AUTOMATION ##
+/*
+ Twist waveform editor and transformer
+ Automation and modulation
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+opcode twst_xa_rms, 0, S
+ Schannel xin
+ kscale chnget strcat(Schannel, "xrmsscale")
+ kporttime chnget strcat(Schannel, "porttime")
+
+ aL, aR, ileft, iright _twst_getcrossinput "xrms"
+ if (ileft == 1 && iright == 1) then
+ kvalue rms (aL + aR) / 2
+ elseif (ileft == 1) then
+ kvalue rms aL
+ else
+ kvalue rms aR
+ endif
+
+ kvalue *= kscale
+ if (kporttime > 0) then
+ kresultvalue portk kvalue, kporttime
+ else
+ kresultvalue = kvalue
+ endif
+ chnset kresultvalue, Schannel
+endop
+
+opcode twst_xa_pitchamdf, 0, S
+ Schannel xin
+ kscale chnget strcat(Schannel, "xpitchscale")
+ ipitchmin chnget strcat(Schannel, "xpitchmin")
+ ipitchmax chnget strcat(Schannel, "xpitchmax")
+ kporttime chnget strcat(Schannel, "porttime")
+ aL, aR, ileft, iright _twst_getcrossinput "xpitch"
+
+ if (ileft == 1 && iright == 1) then
+ kcps, krms pitchamdf (aL + aR) / 2, ipitchmin, ipitchmax
+ elseif (ileft == 1) then
+ kcps, krms pitchamdf aL, ipitchmin, ipitchmax
+ else
+ kcps, krms pitchamdf aR, ipitchmin, ipitchmax
+ endif
+
+ kvalue = ((ipitchmin + max:k(0, kcps)) / (ipitchmax - ipitchmin)) * kscale
+ if (kporttime > 0) then
+ kresultvalue portk kvalue, kporttime
+ else
+ kresultvalue = kvalue
+ endif
+ chnset kresultvalue, Schannel
+endop
+
+opcode twst_xa_pitch1, 0, S
+ Schannel xin
+ kscale chnget strcat(Schannel, "xpitchscale")
+ ihopsize chnget strcat(Schannel, "xpitchhopsize")
+ kporttime chnget strcat(Schannel, "porttime")
+
+ ipitchmin = 20
+ ipitchmax = sr / 2
+ ihopsize = pow(2, ihopsize)
+
+ aL, aR, ileft, iright _twst_getcrossinput "xpitch"
+ if (ileft == 1 && iright == 1) then
+ kcps, kamp ptrack (aL + aR) / 2, ihopsize
+ elseif (ileft == 1) then
+ kcps, kamp ptrack aL, ihopsize
+ else
+ kcps, kamp ptrack aR, ihopsize
+ endif
+
+ kvalue = ((ipitchmin + max:k(0, kcps)) / (ipitchmax - ipitchmin)) * kscale
+ if (kporttime > 0) then
+ kresultvalue portk kvalue, kporttime
+ else
+ kresultvalue = kvalue
+ endif
+ chnset kresultvalue, Schannel
+endop
+
+opcode twst_xa_pitch2, 0, S
+ Schannel xin
+ kscale chnget strcat(Schannel, "xpitchscale")
+ iperiod chnget strcat(Schannel, "xpitchperiod")
+ ipitchmin = octcps(chnget:i(strcat(Schannel, "xpitchmin")))
+ ipitchmax = octcps(chnget:i(strcat(Schannel, "xpitchmax")))
+ iampthresh chnget strcat(Schannel, "xpitchampthresh")
+ kporttime chnget strcat(Schannel, "porttime")
+
+ aL, aR, ileft, iright _twst_getcrossinput "xpitch"
+ if (ileft == 1 && iright == 1) then
+ koct, kamp pitch (aL + aR) / 2, iperiod, ipitchmin, ipitchmax, iampthresh
+ elseif (ileft == 1) then
+ koct, kamp pitch aL, iperiod, ipitchmin, ipitchmax, iampthresh
+ else
+ koct, kamp pitch aR, iperiod, ipitchmin, ipitchmax, iampthresh
+ endif
+
+ kcps cpsoct koct
+ kvalue = ((ipitchmin + max:k(0, kcps)) / (ipitchmax - ipitchmin)) * kscale
+ if (kporttime > 0) then
+ kresultvalue portk kvalue, kporttime
+ else
+ kresultvalue = kvalue
+ endif
+ chnset kresultvalue, Schannel
+endop
+
+opcode twst_xa_centroid, 0, S
+ Schannel xin
+ kscale chnget strcat(Schannel, "xcentroidscale")
+ ifftsize chnget strcat(Schannel, "xcentroidfftsize")
+ kperiod chnget strcat(Schannel, "xcentroidperiod")
+ kporttime chnget strcat(Schannel, "porttime")
+ ipitchmin = 20
+ ipitchmax = sr / 2
+ ktrig metro 1 / kperiod
+
+ aL, aR, ileft, iright _twst_getcrossinput "xcentroid"
+ if (ileft == 1 && iright == 1) then
+ kcent centroid (aL + aR) / 2, ktrig, ifftsize
+ elseif (ileft == 1) then
+ kcent centroid aL, ktrig, ifftsize
+ else
+ kcent centroid aL, ktrig, ifftsize
+ endif
+
+ kvalue = ((ipitchmin + max:k(0, kcent)) / (ipitchmax - ipitchmin)) * kscale
+ if (kporttime > 0) then
+ kresultvalue portk kvalue, kporttime
+ else
+ kresultvalue = kvalue
+ endif
+ chnset kresultvalue, Schannel
+endop
+
+opcode twst_mod_jitter, 0, S
+ Schannel xin
+ kbase chnget strcat(Schannel, "base")
+ kamp chnget strcat(Schannel, "amp")
+ kfreqmin chnget strcat(Schannel, "freqmin")
+ kfreqmax chnget strcat(Schannel, "freqmax")
+ imin chnget strcat(Schannel, "min")
+ imax chnget strcat(Schannel, "max")
+ kval jitter kamp, kfreqmin, kfreqmax
+ kval = kbase + (kval * (imax - imin))
+ kval = min:k(max:k(kval, imin), imax)
+ chnset kval, Schannel
+endop
+
+opcode twst_mod_jitter2, 0, S
+ Schannel xin
+ kbase chnget strcat(Schannel, "base")
+ ktotalamp chnget strcat(Schannel, "totalamp")
+ kamp1 chnget strcat(Schannel, "amp1")
+ kfreq1 chnget strcat(Schannel, "freq1")
+ kamp2 chnget strcat(Schannel, "amp2")
+ kfreq2 chnget strcat(Schannel, "freq2")
+ kamp3 chnget strcat(Schannel, "amp3")
+ kfreq3 chnget strcat(Schannel, "freq3")
+ imin chnget strcat(Schannel, "min")
+ imax chnget strcat(Schannel, "max")
+ kval jitter2 ktotalamp, kamp1, kfreq1, kamp2, kfreq2, kamp3, kfreq3, 1
+ kval = kbase + (kval * (imax - imin))
+ kval = min:k(max:k(kval, imin), imax)
+ chnset kval, Schannel
+endop
+
+opcode twst_mod_lfo, 0, S
+ Schannel xin
+ krate chnget strcat(Schannel, "rate")
+ kbase chnget strcat(Schannel, "base")
+ kgain chnget strcat(Schannel, "gain")
+ imin chnget strcat(Schannel, "min")
+ imax chnget strcat(Schannel, "max")
+ kfn twst_tf_getwaveformk chnget:k(strcat(Schannel, "wave"))
+ kval = kbase + (oscilikt:k(kgain, krate, kfn) * (imax - imin))
+ kval = min:k(max:k(kval, imin), imax)
+ chnset kval, Schannel
+endop
+
+opcode twst_mod_line, 0, S
+ Schannel xin
+ ilatency twst_getlatencyseconds
+ ifirst chnget strcat(Schannel, "first")
+ ilast chnget strcat(Schannel, "last")
+ if (ilatency > 0) then
+ ksig linseg ifirst, ilatency, ifirst, p3, ilast
+ else
+ ksig linseg ifirst, p3, ilast
+ endif
+
+ chnset ksig, Schannel
+endop
+
+opcode twst_mod_random, 0, S
+ Schannel xin
+ krate chnget strcat(Schannel, "rate")
+ kmin chnget strcat(Schannel, "min")
+ kmax chnget strcat(Schannel, "max")
+ kporttime chnget strcat(Schannel, "porttime")
+
+ imin chnget strcat(Schannel, "min")
+ imax chnget strcat(Schannel, "max")
+ initval random imin, imax
+
+ kval init initval
+ ktrig metro krate
+ if (ktrig == 1) then
+ kval = random:k(kmin, kmax)
+ endif
+ kportval portk kval, kporttime
+ chnset kportval, Schannel
+endop
+
+
+instr twst_automationprepare
+ icbid = p4
+ itemnum = pcount()
+ index = 5
+ Sinstr = "instr twst_automaterun\n"
+ while (index < itemnum + 1) do
+
+ Sinstr = strcat(strcat(Sinstr, strget(p(index))), "\n")
+ index += 1
+ od
+ Sinstr = strcat(Sinstr, "a_ init 0\nout a_\nendin\n")
+ ires compilestr Sinstr
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":%d}", icbid, (ires == 0) ? 1 : 0))
+endin
+
+
+#end \ No newline at end of file
diff --git a/site/udo/twist/checkpointing.udo b/site/udo/twist/checkpointing.udo
new file mode 100755
index 0000000..39c45e8
--- /dev/null
+++ b/site/udo/twist/checkpointing.udo
@@ -0,0 +1,127 @@
+#ifndef UDO_TWIST_CHECKPOINTING
+#define UDO_TWIST_CHECKPOINTING ##
+
+gitwst_maxundolevels = 32
+gitwst_checkpoints[][] init imaxinstances, gitwst_maxundolevels
+gitwst_checkpointstate[] init imaxinstances
+gitwst_checkpointencodemult = 10000
+
+
+opcode twst_checkpoint_encode, i, ii
+ ifnL, ifnR xin
+ iencoded = (ifnL * gitwst_checkpointencodemult) + (ifnR / gitwst_checkpointencodemult)
+ xout iencoded
+endop
+
+opcode twst_checkpoint_decode, ii, i
+ iencoded xin
+ ifnL = int(iencoded) / gitwst_checkpointencodemult
+ ifnR = frac(iencoded) * gitwst_checkpointencodemult
+ xout ifnL, ifnR
+endop
+
+opcode twst_checkpoint_clear, 0, j
+ instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ icheckpointnumber = gitwst_checkpointstate[instanceindex]
+ while (icheckpointnumber >= 0) do
+ ifnL, ifnR twst_checkpoint_decode gitwst_checkpoints[instanceindex][icheckpointnumber]
+ if (ifnL > 0 && ftexists(ifnL) == 1) then
+ ftfree ifnL, 0
+ endif
+ if (ifnR > 0 && ftexists(ifnR) == 1) then
+ ftfree ifnR, 0
+ endif
+ icheckpointnumber -= 1
+ od
+ gitwst_checkpointstate[instanceindex] = 0
+endop
+
+opcode twst_checkpoint, 0, j
+ instanceindex xin
+ imaxundo chnget "twst_maxundo"
+ imaxundo = (imaxundo == -1) ? gitwst_maxundolevels : imaxundo
+ if (imaxundo == 0 || imaxundo > gitwst_maxundolevels) then
+ goto complete
+ endif
+
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ icheckpointnumber = gitwst_checkpointstate[instanceindex]
+ if (icheckpointnumber >= imaxundo) then
+ ifnL, ifnR twst_checkpoint_decode gitwst_checkpoints[instanceindex][0]
+ if (ifnL > 0 && ftexists(ifnL) == 1) then
+ ftfree ifnL, 0
+ endif
+ if (ifnR > 0 && ftexists(ifnR) == 1) then
+ ftfree ifnR, 0
+ endif
+ index = 1
+ itemp[] getrow gitwst_checkpoints, instanceindex
+ while (index <= imaxundo) do
+ gitwst_checkpoints[instanceindex][index - 1] = itemp[index]
+ index += 1
+ od
+ gitwst_checkpointstate[instanceindex] = icheckpointnumber ;- 1
+ else
+ gitwst_checkpointstate[instanceindex] = icheckpointnumber + 1
+ endif
+
+ ifnL = gitwst_bufferL[instanceindex]
+ ifnR = gitwst_bufferR[instanceindex]
+ ilen = ftlen(ifnL)
+
+ ifnCheckpointL ftgen 0, 0, ilen, 2, 0
+ tableicopy ifnCheckpointL, ifnL
+ if (ifnR > 0) then
+ ifnCheckpointR ftgen 0, 0, ilen, 2, 0
+ tableicopy ifnCheckpointR, ifnR
+ else
+ ifnCheckpointR = 0
+ endif
+
+ iencoded twst_checkpoint_encode ifnCheckpointL, ifnCheckpointR
+ gitwst_checkpoints[instanceindex][icheckpointnumber] = iencoded
+
+complete:
+endop
+
+opcode twst_undo, i, jp
+ instanceindex, iapplyundo xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+
+ icheckpointnumber = gitwst_checkpointstate[instanceindex]
+
+ icheckpointnumber -= 1
+ if (icheckpointnumber < 0) then
+ istatus = -1
+ goto complete
+ endif
+
+ gitwst_checkpointstate[instanceindex] = icheckpointnumber
+ ifnL, ifnR twst_checkpoint_decode gitwst_checkpoints[instanceindex][icheckpointnumber]
+
+ if (iapplyundo == 1) then ; apply or just step back and forget
+ if (ifnL > 0 && ftexists(ifnL) = 1) then
+ ftfree gitwst_bufferL[instanceindex], 0
+ gitwst_bufferL[instanceindex] = ifnL
+ endif
+ if (ifnR > 0 && ftexists(ifnR) == 1) then
+ ftfree gitwst_bufferR[instanceindex], 0
+ gitwst_bufferR[instanceindex] = ifnR
+ endif
+ else
+ if (ifnL > 0 && ftexists(ifnL) = 1) then
+ ftfree ifnL, 0
+ endif
+ if (ifnL > 0 && ftexists(ifnR) = 1) then
+ ftfree ifnR, 0
+ endif
+ endif
+
+ istatus = 1
+
+complete:
+ xout istatus
+endop
+
+#end
diff --git a/site/udo/twist/checkpointing_hold.udo b/site/udo/twist/checkpointing_hold.udo
new file mode 100755
index 0000000..523d423
--- /dev/null
+++ b/site/udo/twist/checkpointing_hold.udo
@@ -0,0 +1,196 @@
+#ifndef UDO_TWIST_CHECKPOINTING
+#define UDO_TWIST_CHECKPOINTING ##
+
+; file checkpointing broken due to WASM FS issue, but keep in memory maybe better anyway
+
+#ifdef TWIST_FTCHECKPOINTING
+
+gitwst_checkpoints[][] init imaxinstances, gitwst_maxundolevels
+gitwst_checkpointstate[] init imaxinstances
+gitwst_checkpointencodemult = 10000
+
+opcode twst_checkpoint, 0, j
+ instanceindex xin
+ imaxundo chnget "maxundo"
+ imaxundo = (imaxundo == -1) ? gitwst_maxundolevels : imaxundo
+ if (imaxundo == 0 || imaxundo > gitwst_maxundolevels) then
+ goto complete
+ endif
+
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ icheckpointnumber = gitwst_checkpointstate[instanceindex]
+
+ if (icheckpointnumber >= imaxundo) then
+ ftfree gitwst_checkpoints[instanceindex][0], 0
+ index = 1
+ while (index < gitwst_maxundolevels) do
+ gitwst_checkpoints[instanceindex][index - 1] = gitwst_checkpoints[instanceindex][index]
+ index += 1
+ od
+ else
+ gitwst_checkpointstate[instanceindex] = icheckpointnumber + 1
+ endif
+
+ ifnL = gitwst_bufferL[instanceindex]
+ ifnR = gitwst_bufferR[instanceindex]
+ ilen = ftlen(ifnL)
+
+ ifnCheckpointL ftgen 0, 0, ilen, 2, 0
+ tableicopy ifnCheckpointL, ifnL
+ ifnEncodedL = ifnCheckpointL * gitwst_checkpointencodemult
+ if (ifnR > 0) then
+ ifnCheckpointR ftgen 0, 0, ilen, 2, 0
+ tableicopy ifnCheckpointR, ifnR
+ ifnEncodedR = ifnCheckpointR / gitwst_checkpointencodemult
+ else
+ ifnEncodedR = 0
+ endif
+
+ iencoded = ifnEncodedL + ifnEncodedR
+ gitwst_checkpoints[instanceindex][icheckpointnumber] = iencoded
+
+complete:
+endop
+
+opcode twst_undo, i, j
+ instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ Sloaded = ""
+
+ icheckpointnumber = gitwst_checkpointstate[instanceindex]
+
+ icheckpointnumber -= 1
+ if (icheckpointnumber < 0) then
+ istatus = -1
+ goto complete
+ endif
+
+ icheckpointEncoded = gitwst_checkpoints[instanceindex][icheckpointnumber]
+ ifnCheckpointL = icheckpointEncoded / gitwst_checkpointencodemult
+ ifnCheckpointR = icheckpointEncoded * gitwst_checkpointencodemult
+
+ ftfree gitwst_bufferL[instanceindex], 0
+ gitwst_bufferL[instanceindex] = ifnCheckpointL
+
+ if (ifnCheckpointR > 0) then
+ ftfree gitwst_bufferR[instanceindex], 0
+ gitwst_bufferR[instanceindex] = ifnCheckpointR
+ endif
+
+ istatus = 1
+
+complete:
+ xout istatus
+endop
+
+#else
+
+gitwst_checkpoint[][] init imaxinstances, 2
+gitwst_checkpointlengths[][] init imaxinstances, gitwst_maxundolevels
+opcode twst_checkpointfilename, S, jj
+ instanceindex, icheckpointnumber xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ icheckpointnumber = (icheckpointnumber == -1) ? gitwst_checkpoint[instanceindex][0] : icheckpointnumber
+ Sfile = sprintf("checkpoint-%d-%d", instanceindex, icheckpointnumber)
+ Sfile = strcat(host_tempdir(), strcat("/", Sfile))
+ xout Sfile
+endop
+
+opcode twst_checkpoint, 0, j
+ instanceindex xin
+ imaxundo chnget "maxundo"
+ if (imaxundo == 0 || imaxundo > gitwst_maxundolevels) then
+ goto complete
+ endif
+
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ icheckpointnumber = gitwst_checkpoint[instanceindex][0]
+ icheckpointoffset = gitwst_checkpoint[instanceindex][1]
+
+ if (icheckpointoffset + icheckpointnumber >= imaxundo) then
+ Sdelete = twst_checkpointfilename(icheckpointoffset)
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"delete\": [\"%s\", \"%s.len\"]}", giwst_globalcbid, Sdelete, Sdelete))
+ icheckpointoffset += 1
+ gitwst_checkpoint[instanceindex][1] = icheckpointoffset
+ endif
+
+ Sfile = twst_checkpointfilename(instanceindex)
+
+ gitwst_checkpointlengths[instanceindex][icheckpointnumber - icheckpointoffset] = ftlen(gitwst_bufferL[instanceindex])
+ /* can't use this as WASM not writing/closing files properly
+ ilen = ftlen(gitwst_bufferL[instanceindex])
+ ihf fiopen strcat(Sfile, ".len"), 0
+ fouti ihf, 0, 0, ilen
+ ficlose ihf*
+ ; nor this ;fprints strcat(Sfile, ".len"), "%d\n", ftlen(gitwst_bufferL[instanceindex])
+ */
+
+ if (gitwst_channels[instanceindex] == 1) then
+ ftsave Sfile, 0, gitwst_bufferL[instanceindex]
+ else
+ ftsave Sfile, 0, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex]
+ endif
+ gitwst_checkpoint[instanceindex][0] = icheckpointnumber + 1
+complete:
+endop
+
+opcode twst_undo, iS, j
+ instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ Sloaded = ""
+
+ icheckpointnumber = gitwst_checkpoint[instanceindex][0]
+ icheckpointoffset = gitwst_checkpoint[instanceindex][1]
+
+ if (icheckpointnumber - icheckpointoffset <= 0) then
+ istatus = -1
+ goto complete
+ endif
+
+ icheckpointnumber -= 1
+ gitwst_checkpoint[instanceindex][0] = icheckpointnumber
+ Sfile = twst_checkpointfilename(instanceindex)
+
+ ilen = gitwst_checkpointlengths[instanceindex][icheckpointnumber - icheckpointoffset]
+ /* can't use this as WASM not writing/closing files properly thus checkpoint step doesn't write
+ SlenFile = strcat(Sfile, ".len")
+ if (filevalid(Sfile) != 1 || filevalid(SlenFile) != 1) then
+ istatus = -2
+ goto complete
+ endif
+
+ ilen init 0
+ ihf fiopen SlenFile, 1
+ fini ihf, 0, 1, ilen
+ ficlose ihf
+ */
+
+ if (ilen == 0) then
+ istatus = -3
+ goto complete
+ endif
+
+ if (ilen != ftlen(gitwst_bufferL[instanceindex])) then
+ twst_clearbuffers gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex]
+ gitwst_bufferL[instanceindex] ftgen 0, 0, -ilen, -2, 0
+ if (gitwst_channels[instanceindex] == 2) then
+ gitwst_bufferR[instanceindex] ftgen 0, 0, -ilen, -2, 0
+ else
+ gitwst_bufferR[instanceindex] = 0
+ endif
+ endif
+
+ if (gitwst_channels[instanceindex] == 1) then
+ ftload Sfile, 0, gitwst_bufferL[instanceindex]
+ else
+ ftload Sfile, 0, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex]
+ endif
+ Sloaded = Sfile
+ istatus = 1
+
+complete:
+ xout istatus, Sloaded
+endop
+#end
+
+#end \ No newline at end of file
diff --git a/site/udo/twist/transform_api.udo b/site/udo/twist/transform_api.udo
new file mode 100755
index 0000000..9b916e3
--- /dev/null
+++ b/site/udo/twist/transform_api.udo
@@ -0,0 +1,421 @@
+#ifndef UDO_TWIST_TRANSFORMAPI
+#define UDO_TWIST_TRANSFORMAPI ##
+
+#define TWST_TRANSFORM #i_ = p4#
+
+opcode twst_param, k, S
+ Sname xin
+ Schannel = sprintf("%s_%s%d", nstrstr(p1), Sname, p4)
+ kvalue chnget Schannel
+ xout kvalue
+endop
+
+opcode twst_parami, i, S
+ Sname xin
+ Schannel = sprintf("%s_%s%d", nstrstr(p1), Sname, p4)
+ ivalue chnget Schannel
+ xout ivalue
+endop
+
+opcode twst_getinput, aaii, 0
+ aL chnget "twstfeedL"
+ aR chnget "twstfeedR"
+ xout aL, aR, gitwst_tf_state[0], gitwst_tf_state[1]
+endop
+
+opcode twst_setlatencysamples, 0, i
+ isamples xin
+ gitwst_tf_state[5] = isamples
+endop
+
+opcode twst_setlatencyseconds, 0, i
+ iseconds xin
+ twst_setlatencysamples iseconds * sr
+endop
+
+opcode twst_getlatencyseconds, i, 0
+ xout gitwst_tf_state[5] / sr
+endop
+
+opcode twst_tf_pitchscale_custom, k, S
+ SchanPrepend xin
+ if (twst_param:k(strcat(SchanPrepend, "pitchscalemode")) == 1) then
+ ksemitones = twst_param:k(strcat(SchanPrepend, "pitchsemitones"))
+ kscale = pow:k(2, ksemitones / 12)
+ else
+ kscale = twst_param:k(strcat(SchanPrepend, "pitchscale"))
+ endif
+ xout kscale
+endop
+
+opcode twst_tf_pitchscale, k, 0
+ xout twst_tf_pitchscale_custom("")
+endop
+
+opcode twst_tf_freq_custom, k, S
+ SchanPrepend xin
+ if (twst_param:k(strcat(SchanPrepend, "freqmode")) == 1) then
+ kfreq = cpsmidinn:k(twst_param:k(strcat(SchanPrepend, "note")))
+ else
+ kfreq = twst_param:k(strcat(SchanPrepend, "freq"))
+ endif
+ xout kfreq
+endop
+
+opcode twst_tf_freq, k, 0
+ xout twst_tf_freq_custom("")
+endop
+
+opcode twst_tf_freqi_custom, i, S
+ SchanPrepend xin
+ if (twst_parami(strcat(SchanPrepend, "freqmode")) == 1) then
+ ifreq = cpsmidinn:i(twst_parami(strcat(SchanPrepend,"note")))
+ else
+ ifreq = twst_parami(strcat(SchanPrepend,"freq"))
+ endif
+ xout ifreq
+endop
+
+opcode twst_tf_freqi, i, 0
+ xout twst_tf_freqi_custom("")
+endop
+
+opcode twst_tf_setplayposition, 0, k
+ kplayposratio xin
+ chnset kplayposratio, "twst_tfplayposratio"
+endop
+
+opcode twst_tf_getwintype, i, j
+ iwintype xin
+ if (iwintype == -1) then
+ iwintype = twst_parami("wintype")
+ endif
+ ifnWindow = gifnHanning
+ if (iwintype == 1) then
+ ifnWindow = gifnHamming
+ elseif (iwintype == 2) then
+ ifnWindow = gifnHalfSine
+ endif
+ xout ifnWindow
+endop
+
+opcode twst_tf_getwintypek, k, 0
+ kwintype = twst_param:k("wintype")
+ kfnWindow = gifnHanning
+ if (kwintype == 1) then
+ kfnWindow = gifnHamming
+ elseif (kwintype == 2) then
+ kfnWindow = gifnHalfSine
+ endif
+ xout kfnWindow
+endop
+
+opcode twst_tf_getwaveform, i, j
+ iwave xin
+ if (iwave == -1) then
+ iwave = twst_parami("wave")
+ endif
+ ifn = gifnSine
+ if (iwave == 1) then
+ ifn = gifnSquare
+ elseif (iwave == 2) then
+ ifn = gifnSaw
+ elseif (iwave == 3) then
+ ifn = gifnPulse
+ elseif (iwave == 4) then
+ ifn = gifnTriangle
+ endif
+ xout ifn
+endop
+
+opcode twst_tf_getwaveformk, k, J
+ kwave xin
+ kwave = (kwave == -1) ? twst_param:k("wave") : kwave
+ kfn = gifnSine
+ if (kwave == 1) then
+ kfn = gifnSquare
+ elseif (kwave == 2) then
+ kfn = gifnSaw
+ elseif (kwave == 3) then
+ kfn = gifnPulse
+ elseif (kwave == 4) then
+ kfn = gifnTriangle
+ endif
+ xout kfn
+endop
+
+opcode twst_getfinput, ffaaii, jJ
+ ifftsize, kpvslock xin
+ ifftsize = (ifftsize == -1) ? twst_parami("fftsize") : ifftsize
+ kpvslock = (kpvslock == -1) ? twst_param:k("pvslock") : kpvslock
+ iwintype = twst_parami("pvswintype")
+ idecimation = twst_parami("pvsdecimation")
+ iwinsizem = twst_parami("pvswinsizem")
+
+ iwinsize = ifftsize * iwinsizem
+ twst_setlatencysamples(iwinsize) ;idecimation)
+ aL, aR, ileft, iright twst_getinput
+
+ if (ileft == 0) then
+ fL pvsinit ifftsize
+ else
+ fLbase pvsanal aL, ifftsize, ifftsize / idecimation, iwinsize, 1
+ fL pvslock fLbase, kpvslock
+ endif
+
+ if (iright == 0) then
+ fR pvsinit ifftsize
+ else
+ fRbase pvsanal aR, ifftsize, ifftsize / idecimation, iwinsize, 1
+ fR pvslock fRbase, kpvslock
+ endif
+ xout fL, fR, aL, aR, ileft, iright
+endop
+
+/* TODO: LPC unstable with WASM
+opcode twst_getfinput, ffaaii, jJ
+ ifftsize, kpvslock xin
+ ifftsize = (ifftsize == -1) ? twst_parami("fftsize") : ifftsize
+ kpvslock = (kpvslock == -1) ? twst_param:k("pvslock") : kpvslock
+ ipvstype = twst_parami("pvstype")
+ iwintype = twst_parami("pvswintype")
+ iwinlpcfn = twst_tf_getwintype(twst_parami("pvswintypelpc"))
+ idecimation = twst_parami("pvsdecimation")
+ iwinsizem = twst_parami("pvswinsizem")
+ iorderm = twst_parami("pvsorderm")
+
+ if (ipvstype == 1) then
+ ifftsize = min(ifftsize, 1024) ; crashes in WASM with high FFT size and LPC
+ endif
+
+ iorder = min(max(1, round(ifftsize * iorderm)), ifftsize)
+ iwinsize = ifftsize * iwinsizem
+ twst_setlatencysamples(iwinsize) ;idecimation)
+ aL, aR, ileft, iright twst_getinput
+
+ if (ileft == 0) then
+ fL pvsinit ifftsize
+ else
+ if (ipvstype == 0) then
+ fLbase pvsanal aL, ifftsize, ifftsize / idecimation, iwinsize, 1
+ else
+ fLbase pvslpc aL, ifftsize, ifftsize / idecimation, iorder, iwinlpcfn
+ endif
+ fL pvslock fLbase, kpvslock
+ endif
+
+ if (iright == 0) then
+ fR pvsinit ifftsize
+ else
+ if (ipvstype == 0) then
+ fRbase pvsanal aR, ifftsize, ifftsize / idecimation, iwinsize, 1
+ else
+ fRbase pvslpc aR, ifftsize, ifftsize / idecimation, iorder, iwinlpcfn
+ endif
+ fR pvslock fRbase, kpvslock
+ endif
+ xout fL, fR, aL, aR, ileft, iright
+endop
+*/
+
+
+; ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+opcode twst_tf_getstate, iiiiii, 0
+ ilengths = ((gitwst_tf_state[3] - gitwst_tf_state[2]) / sr)
+ xout gitwst_tf_state[0], gitwst_tf_state[1], gitwst_tf_state[2], gitwst_tf_state[3], gitwst_tf_state[4], ilengths
+endop
+
+opcode twst_tf_isoffline, i, 0
+ xout gitwst_tf_state[6]
+endop
+
+opcode twst_tfi_getfn, ii, jjjjjj
+ instanceindex, ileft, iright, istartsamp, iendsamp, idocut xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ ileft = (ileft == -1) ? gitwst_tf_state[0] : ileft
+ iright = (iright == -1) ? gitwst_tf_state[1] : iright
+ istartsamp = (istartsamp == -1) ? gitwst_tf_state[2] : istartsamp
+ iendsamp = (iendsamp == -1) ? gitwst_tf_state[3] : iendsamp
+ idocut = (idocut == -1) ? gitwst_tf_state[4] : idocut
+ if (idocut == 1) then
+ itargetlen = iendsamp - istartsamp ;int(p3 * sr)
+ if (ileft == 1) then
+ ifnL ftgentmp 0, 0, -itargetlen, -2, 0
+ ftslicei gitwst_bufferL[instanceindex], ifnL, istartsamp, iendsamp, 1
+ else
+ ifnL = 0
+ endif
+ if (iright == 1) then
+ ifnR ftgentmp 0, 0, -itargetlen, -2, 0
+ ftslicei gitwst_bufferR[instanceindex], ifnR, istartsamp, iendsamp, 1
+ else
+ ifnR = 0
+ endif
+ else
+ ifnL = gitwst_bufferL[instanceindex]
+ ifnR = gitwst_bufferR[instanceindex]
+ endif
+ xout ifnL, ifnR
+endop
+
+opcode _twst_getcrossdata, iiiiiii, S
+ SchannelPrefix xin
+ if (strcmp(SchannelPrefix, "") == 0) then
+ ichannel = twst_parami("instchan")
+ instanceindex = twst_parami("instance")
+ istart = twst_parami("inststart")
+ iend = twst_parami("instend")
+ else
+ ichannel chnget strcat(SchannelPrefix, sprintf("instchan%d", p4))
+ instanceindex chnget strcat(SchannelPrefix, sprintf("instance%d", p4))
+ istart chnget strcat(SchannelPrefix, sprintf("inststart%d", p4))
+ iend chnget strcat(SchannelPrefix, sprintf("instend%d", p4))
+ endif
+ idoleft = 1
+ idoright = 1
+ if (ichannel == 0 || gitwst_channels[instanceindex] == 1) then
+ idoright = 0
+ elseif (ichannel == 1 && gitwst_channels[instanceindex] == 2) then
+ idoleft = 0
+ endif
+ if (istart == iend) then
+ istart = 0
+ iend = 1
+ endif
+ istart, ilen twst_getstartend istart, iend, instanceindex
+ ifnL = gitwst_bufferL[instanceindex]
+ ifnR = gitwst_bufferR[instanceindex]
+
+ xout idoleft, idoright, ifnL, ifnR, instanceindex, istart, ilen
+endop
+
+opcode _twst_getcrossdata, iiiiii, S
+ SchannelPrefix xin
+ ileft, iright, ifnL, ifnR, instanceindex, istart, iend _twst_getcrossdata SchannelPrefix
+ xout ifnL, ifnR, istart, iend - istart, ileft, iright
+endop
+
+opcode twst_getcrossdata, iiiiii, 0
+ ifnL, ifnR, istart, ilen, idoleft, idoright _twst_getcrossdata ""
+ xout ifnL, ifnR, istart, ilen, idoleft, idoright
+endop
+
+opcode twst_tfi_getcrossfn, ii, 0
+ ileft, iright, ifnL, ifnR, instanceindex, istart, ilen _twst_getcrossdata ""
+ idocut = (ftlen(ifnL) == ilen) ? 0 : 1
+ ifnLtemp, ifnRtemp twst_tfi_getfn instanceindex, ileft, iright, istart, istart + ilen, idocut
+ if (gitwst_channels[instanceindex] == 1) then
+ ifnRtemp = ifnLtemp
+ endif
+ xout ifnLtemp, ifnRtemp
+endop
+
+opcode _twst_getcrossinput, aaii, S
+ SchannelPrefix xin
+ ifnL, ifnR, istart, ilen, idoleft, idoright _twst_getcrossdata SchannelPrefix
+ if (strcmp(SchannelPrefix, "") == 0) then
+ ilooptype = twst_parami("otlooptype")
+ else
+ ichannel chnget strcat(SchannelPrefix, sprintf("looptype%d", p4))
+ endif
+ apos lphasor 1, 0, ilen, ilooptype
+ apos += istart
+
+ if (idoleft == 1) then
+ aL table3 apos, ifnL
+ endif
+ if (idoright == 1) then
+ aR table3 apos, ifnR
+ endif
+
+ if (idoright == 0) then
+ aR = aL
+ endif
+ if (idoleft == 0) then
+ aL = aR
+ endif
+ xout aL, aR, idoleft, idoright
+endop
+
+opcode twst_getcrossinput, aaii, 0
+ aL, aR, idoleft, idoright _twst_getcrossinput ""
+ xout aL, aR, idoleft, idoright
+endop
+
+opcode twst_getfcrossinput, ffii, 0
+ aL, aR, ileft, iright twst_getcrossinput
+ ifftsize = twst_parami("fftsize")
+ kpvslock = twst_param:k("pvslock")
+ idecimation = twst_parami("pvsdecimation")
+ iwinsizem = twst_parami("pvswinsizem")
+ iwinsize = ifftsize * iwinsizem
+
+ if (ileft == 0) then
+ fL pvsinit ifftsize
+ else
+ fLbase pvsanal aL, ifftsize, ifftsize / idecimation, iwinsize, 1
+ fL pvslock fLbase, kpvslock
+ endif
+
+ if (iright == 0) then
+ fR pvsinit ifftsize
+ else
+ fRbase pvsanal aR, ifftsize, ifftsize / idecimation, iwinsize, 1
+ fR pvslock fRbase, kpvslock
+ endif
+ xout fL, fR, ileft, iright
+endop
+
+opcode twst_tf_fresynth, a, f
+ fsig xin
+ imode = twst_parami("pvresmode")
+ if (imode == 0) then
+ aout pvsynth fsig
+ else
+ ifftsize = twst_parami("fftsize")
+ ioscnum = max(round((ifftsize * 0.5) * twst_parami("pvaoscnum")) - 1, 1)
+ kfmod = twst_param:k("pvafreqmod")
+ ibinoffset = round(ifftsize * 0.5 * twst_parami("pvabinoffset"))
+ ibinincr = twst_parami("pvabinincr")
+ ioscnum = ioscnum - ibinoffset
+ ioscnum = min(((ifftsize * 0.5) / ibinincr), ioscnum)
+ aout pvsadsyn fsig, ioscnum, kfmod, ibinoffset, ibinincr
+ endif
+ xout aout
+endop
+
+opcode twst_getrandombuffers, kk, k
+ kstereounique xin
+ kfnL = -1
+ kfnR = -1
+
+ if (kstereounique == 0) then
+ while (kfnL == -1) do
+ kindex = round:k(random:k(0, lenarray(gitwst_bufferL) - 1))
+ if (ftexists:k(gitwst_bufferL[kindex]) == 1) then
+ kfnL = gitwst_bufferL[kindex]
+ if (ftexists:k(gitwst_bufferR[kindex]) == 1) then
+ kfnR = gitwst_bufferR[kindex]
+ else
+ kfnR = kfnL
+ endif
+ endif
+ od
+ else
+ while (kfnL == -1) do
+ kfn = gitwst_bufferL[round:k(random:k(0, lenarray(gitwst_bufferL) - 1))]
+ if (ftexists:k(kfn) == 1) then
+ kfnL = kfn
+ endif
+ od
+ while (kfnR == -1) do
+ kfn = gitwst_bufferR[round:k(random:k(0, lenarray(gitwst_bufferR) - 1))]
+ if (ftexists:k(kfn) == 1) then
+ kfnR = kfn
+ endif
+ od
+ endif
+ xout kfnL, kfnR
+endop
+
+#end
diff --git a/site/udo/twist/transforms.udo b/site/udo/twist/transforms.udo
new file mode 100755
index 0000000..2587d18
--- /dev/null
+++ b/site/udo/twist/transforms.udo
@@ -0,0 +1,25 @@
+#ifndef TWST_TRANSFORMS
+#define TWST_TRANSFORMS ##
+/*
+ Twist waveform editor and transformer
+ Transforms
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "/twist/transforms/amplitude.udo"
+#include "/twist/transforms/cross_processing.udo"
+#include "/twist/transforms/delay.udo"
+#include "/twist/transforms/filter.udo"
+#include "/twist/transforms/frequency.udo"
+#include "/twist/transforms/general.udo"
+#include "/twist/transforms/generate.udo"
+#include "/twist/transforms/granular.udo"
+#include "/twist/transforms/harmonic.udo"
+#include "/twist/transforms/reverb.udo"
+#include "/twist/transforms/spectral.udo"
+#include "/twist/transforms/warping.udo"
+
+#end \ No newline at end of file
diff --git a/site/udo/twist/transforms/amplitude.udo b/site/udo/twist/transforms/amplitude.udo
new file mode 100755
index 0000000..d477b4f
--- /dev/null
+++ b/site/udo/twist/transforms/amplitude.udo
@@ -0,0 +1,179 @@
+#include "/twist/transform_api.udo"
+#include "/frequency_tools.udo"
+
+opcode _twst_tf_normalise_analyse, i, iii
+ ifn, istartsamp, iendsamp xin
+ iscale = 0
+ imaxpos = 0
+ imaxneg = 0
+ while (istartsamp < iendsamp) do
+ ival table istartsamp, ifn
+ if (ival > 0 && ival > imaxpos) then
+ imaxpos = ival
+ elseif (ival < 0 && ival < imaxneg) then
+ imaxneg = ival
+ endif
+ istartsamp += 1
+ od
+ iscale = ((1 / max(abs(imaxneg), abs(imaxpos))))
+ xout iscale
+endop
+
+instr twst_tf_normalise
+ $TWST_TRANSFORM
+ i_, i_, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ aL, aR, ileft, iright twst_getinput
+ istereoequal = twst_parami("equal")
+ kuserscale = twst_param:k("scale")
+
+ if (ileft == 1) then
+ iscalingL _twst_tf_normalise_analyse gitwst_bufferL[gitwst_instanceindex], istartsamp, iendsamp
+ endif
+ if (iright == 1) then
+ iscalingR _twst_tf_normalise_analyse gitwst_bufferR[gitwst_instanceindex], istartsamp, iendsamp
+ endif
+
+ if (istereoequal == 1 && ileft == 1 && iright == 1) then
+ iscaling = min(iscalingL, iscalingR)
+ aL *= iscaling * kuserscale
+ aR *= iscaling * kuserscale
+ elseif (ileft == 1) then
+ aL *= iscalingL * kuserscale
+ elseif (iright == 1) then
+ aR *= iscalingR * kuserscale
+ endif
+
+ outs aL, aR
+endin
+
+instr twst_tf_amplitude
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kgain = twst_param:k("gain")
+ kbalance = twst_param:k("balance")
+ if (ileft == 1) then
+ kb = max:k(1, (1 - kbalance) * 2)
+ aL *= kgain * kb
+ endif
+ if (iright == 1) then
+ kb = max:k(1, kbalance * 2)
+ aR *= kgain * kb
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_strobe
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ krate = twst_param:k("rate")
+ kholdtime = twst_param:k("holdtime")
+ kwindowed = twst_param:k("windowed")
+
+ ktrig metro krate
+ ktrig trighold ktrig, kholdtime
+ kamp = 1 - ktrig
+
+ if (kwindowed == 1) then
+ kenv portk kamp, kholdtime * 0.5
+ else
+ kenv = kamp
+ endif
+
+ if (ileft == 1) then
+ aL *= kenv
+ endif
+ if (iright == 1) then
+ aR *= kenv
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_bitcrush
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kcrush = twst_param:k("crush")
+ if (ileft == 1) then
+ aL bitcrush aL, kcrush
+ elseif (iright == 1) then
+ aR bitcrush aR, kcrush
+ endif
+ outs aL, aR
+endin
+
+
+instr twst_tf_suppress
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kmode = twst_param:k("mode")
+ kthreshold = twst_param:k("threshold")
+
+ if (ileft == 1) then
+ if (kmode == 0) then
+ aL limit aL, -kthreshold, kthreshold
+ elseif (kmode == 1) then
+ aL wrap aL, -kthreshold, kthreshold
+ elseif (kmode == 2) then
+ aL mirror aL, -kthreshold, kthreshold
+ endif
+ endif
+ if (iright == 1) then
+ if (kmode == 0) then
+ aR limit aR, -kthreshold, kthreshold
+ elseif (kmode == 1) then
+ aR wrap aR, -kthreshold, kthreshold
+ elseif (kmode == 2) then
+ aR mirror aR, -kthreshold, kthreshold
+ endif
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_pdclip
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kwidth = twst_param:k("width")
+ kcentre = twst_param:k("centre")
+ ibipolar = twst_parami("bipolar")
+ ifullscale = twst_parami("fullscale")
+
+ if (ileft == 1) then
+ aL pdclip aL, kwidth, kcentre, ibipolar, ifullscale
+ endif
+ if (iright == 1) then
+ aR pdclip aR, kwidth, kcentre, ibipolar, ifullscale
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_distort
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kamount = twst_param:k("amount")
+ ihp = twst_parami("halfpower")
+ ifn twst_tf_getwaveform
+
+ if (ileft == 1) then
+ aL distort aL, kamount, ifn, ihp
+ endif
+ if (iright == 1) then
+ aL distort aR, kamount, ifn, ihp
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_distort1
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kpregain = twst_param:k("pregain")
+ kpostgain = twst_param:k("postgain")
+ kshape1 = twst_param:k("shape1")
+ kshape2 = twst_param:k("shape2")
+
+ if (ileft == 1) then
+ aL distort1 aL, kpregain, kpostgain, kshape1, kshape2, 1
+ endif
+ if (iright == 1) then
+ aL distort1 aR, kpregain, kpostgain, kshape1, kshape2, 1
+ endif
+ outs aL, aR
+endin
diff --git a/site/udo/twist/transforms/cross_processing.udo b/site/udo/twist/transforms/cross_processing.udo
new file mode 100755
index 0000000..203c393
--- /dev/null
+++ b/site/udo/twist/transforms/cross_processing.udo
@@ -0,0 +1,176 @@
+#include "/twist/transform_api.udo"
+#include "/mfcc_match.udo"
+#include "/fftconvolve.udo"
+#include "/chop.udo"
+
+
+instr twst_tf_crossrearrange
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kminsamples = twst_param:k("minsamples")
+ kmaxsamples = twst_param:k("maxsamples")
+ kstereounique = twst_param:k("stereounique")
+ krate = twst_param:k("rate")
+
+ ktrig metro krate
+ async init 0
+
+ if (ktrig == 1) then
+ kfnLo, kfnRo twst_getrandombuffers kstereounique
+ ktablen = tableng:k(kfnLo)
+ klen = min:k(random:k(kminsamples, kmaxsamples), ktablen)
+ kstart = random:k(0, ktablen - klen)
+ async = 1
+ else
+ async = 0
+ endif
+
+ apos, a_ syncphasor 1 / (klen / sr), async
+ areadpos = (apos * klen) + kstart
+
+ if (ileft == 1) then
+ aL tablekt areadpos, kfnLo
+ endif
+ if (iright == 1) then
+ aR tablekt areadpos, kfnRo
+ endif
+
+ outs aL, aR
+endin
+
+instr twst_tf_directconvolve
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ifnLo, ifnRo twst_tfi_getcrossfn
+ kamp = twst_parami("amp")
+ isizeratio = twst_parami("sizeratio")
+ if (ileft == 1) then
+ aL dconv aL * kamp, isizeratio * ftlen(ifnLo), ifnLo
+ endif
+ if (iright == 1) then
+ aR dconv aR * kamp, isizeratio * ftlen(ifnRo), ifnRo
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_blockconvolve
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ aLo, aRo, ilefto, irighto twst_getcrossinput
+ ifftsize = twst_parami("fftsize")
+ ioverlap = twst_parami("overlap")
+ ihopsize = ifftsize / ioverlap
+
+ if (ileft == 1 && ilefto == 1) then
+ aL blockconvolve aL, aLo, ifftsize, ihopsize
+ endif
+ if (iright == 1 && irighto == 1) then
+ aR blockconvolve aR, aRo, ifftsize, ihopsize
+ endif
+ outs aL, aR
+endin
+
+/* not in WASM at current
+instr twst_tf_tvconv
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ aLo, aRo, ilefto, irighto twst_getcrossinput
+ kapply1 = twst_param:k("apply1")
+ kapply2 = twst_param:k("apply2")
+ imode = twst_parami("mode")
+ iparts = twst_parami("parts")
+ idftfiltersize = twst_parami("dftfiltersize")
+ ifirfiltersize = twst_parami("firfiltersize")
+
+ if (imode == 1) then
+ iparts = 1
+ ifiltersize = ifirfiltersize
+ else
+ ifiltersize = idftfiltersize
+ endif
+
+ if (ileft == 1 && ilefto == 1) then
+ aL tvconv aL, aLo, kapply1, kapply2, iparts, ifiltersize
+ endif
+
+ if (iright == 1 && irighto == 1) then
+ aR tvconv aR, aRo, kapply1, kapply2, iparts, ifiltersize
+ endif
+ outs aL, aR
+endin
+*/
+
+instr twst_tf_crosssynth
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ fLo, fRo, ilefto, irighto twst_getfcrossinput
+ kamp1 = twst_param:k("amp1")
+ kamp2 = twst_param:k("amp2")
+
+ if (ileft == 1 && ilefto == 1) then
+ foutL pvscross fL, fLo, kamp1, kamp2
+ aL twst_tf_fresynth foutL
+ endif
+
+ if (iright == 1 && irighto == 1) then
+ foutR pvscross fR, fRo, kamp1, kamp2
+ aR twst_tf_fresynth foutR
+ endif
+ outs aL, aR
+endin
+
+
+instr twst_tf_morph
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ fLo, fRo, ilefto, irighto twst_getfcrossinput
+ kamp = twst_param:k("amp")
+ kfreq = twst_param:k("freq")
+
+ if (ileft == 1 && ilefto == 1) then
+ foutL pvsmorph fL, fLo, kamp, kfreq
+ aL twst_tf_fresynth foutL
+ endif
+
+ if (iright == 1 && irighto == 1) then
+ foutR pvsmorph fR, fRo, kamp, kfreq
+ aR twst_tf_fresynth foutR
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_mfccmatch
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ifnoL, ifnoR twst_tfi_getcrossfn
+ ifftsize = twst_parami("fftsize")
+ ifreqmin = twst_parami("freqmin")
+ ifreqmax = twst_parami("freqmax")
+ ibands = twst_parami("bands")
+ kstretch = twst_param:k("stretch")
+ kauditionreadyL init 0
+ kauditionreadyR init 0
+ ktimek timeinstk
+
+ if (ileft == 1) then
+ kdone, ifnAnalysisL mfm_analysecorpus ktimek, ifnoL, ifreqmin, ifreqmax, ifftsize, ibands, -1, 1
+ if (kdone == 1) then
+ kauditionreadyL = 1
+ aoutL mfm_matchplay aL, ifnoL, ifnAnalysisL, kstretch, ifreqmin, ifreqmax, ifftsize, ibands
+ endif
+ else
+ kauditionreadyL = 1
+ endif
+ if (iright == 1) then
+ kdone, ifnAnalysisR mfm_analysecorpus ktimek, ifnoR, ifreqmin, ifreqmax, ifftsize, ibands, -1, 1
+ if (kdone == 1) then
+ kauditionreadyR = 1
+ aoutR mfm_matchplay aR, ifnoR, ifnAnalysisR, kstretch, ifreqmin, ifreqmax, ifftsize, ibands
+ endif
+ else
+ kauditionreadyR = 1
+ endif
+
+ chnset (kauditionreadyL & kauditionreadyR), "auditionready"
+ outs aoutL, aoutR
+endin
diff --git a/site/udo/twist/transforms/delay.udo b/site/udo/twist/transforms/delay.udo
new file mode 100755
index 0000000..5d59612
--- /dev/null
+++ b/site/udo/twist/transforms/delay.udo
@@ -0,0 +1,72 @@
+#include "/twist/transform_api.udo"
+
+instr twst_tf_vdelay
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kdelay = twst_param:k("delay") * 1000
+ kfeedback = twst_param:k("feedback")
+ adelay = a(kdelay)
+
+ if (ileft == 1) then
+ afbkL init 0
+ aLd vdelay3 aL + afbkL, adelay, 1000
+ afbkL = aLd * kfeedback
+ aL = aLd
+ endif
+ if (iright == 1) then
+ afbkR init 0
+ aRd vdelay3 aR + afbkR, adelay, 1000
+ afbkR = aRd * kfeedback
+ aR = aRd
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_flanger
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kdelay = twst_param:k("delay")
+ kfeedback = twst_param:k("feedback")
+
+ adelay = a(kdelay)
+ if (ileft == 1) then
+ aL flanger aL, adelay, kfeedback
+ endif
+ if (iright == 1) then
+ aR flanger aR, adelay, kfeedback
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_phaser1
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("freq")
+ iord = twst_parami("order")
+ kfeedback = twst_param:k("feedback")
+ if (ileft == 1) then
+ aL phaser1 aL, kfreq, iord, kfeedback
+ endif
+ if (iright == 1) then
+ aR phaser1 aR, kfreq, iord, kfeedback
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_phaser2
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("freq")
+ kq = twst_param:k("q")
+ iord = twst_parami("order")
+ imode = twst_parami("mode")
+ ksep = twst_param:k("sep")
+ kfeedback = twst_param:k("feedback")
+ if (ileft == 1) then
+ aL phaser2 aL, kfreq, kq, iord, imode, ksep, kfeedback
+ endif
+ if (iright == 1) then
+ aR phaser2 aR, kfreq, kq, iord, imode, ksep, kfeedback
+ endif
+ outs aL, aR
+endin
diff --git a/site/udo/twist/transforms/filter.udo b/site/udo/twist/transforms/filter.udo
new file mode 100755
index 0000000..38fad69
--- /dev/null
+++ b/site/udo/twist/transforms/filter.udo
@@ -0,0 +1,172 @@
+#include "/twist/transform_api.udo"
+
+instr twst_tf_lpf
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("frequency")
+ if (ileft == 1) then
+ aL butterlp aL, kfreq
+ endif
+ if (iright == 1) then
+ aR butterlp aR, kfreq
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_hpf
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("frequency")
+ if (ileft == 1) then
+ aL butterhp aL, kfreq
+ endif
+ if (iright == 1) then
+ aR butterhp aR, kfreq
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_bpf
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("frequency")
+ kbw = twst_param:k("bandwidth")
+ if (ileft == 1) then
+ aL butterbp aL, kfreq, kbw
+ endif
+ if (iright == 1) then
+ aR butterbp aR, kfreq, kbw
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_pareq
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("frequency")
+ kgain = twst_param:k("gain")
+ kq = twst_param:k("q")
+ if (ileft == 1) then
+ aL pareq aL, kfreq, kgain, kq
+ endif
+ if (iright == 1) then
+ aR pareq aR, kfreq, kgain, kq
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_dcblock
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ if (ileft == 1) then
+ aL dcblock2 aL
+ endif
+ if (iright = 1) then
+ aR dcblock2 aR
+ endif
+ outs aL, aR
+endin
+
+/* not in WASM
+{
+ name: "Non-linear filter",
+ instr: "twst_tf_nlfilter",
+ parameters: [
+ {name: "Parameter a", channel: "pa", min: 0, max: 1, dfault: 0.3},
+ {name: "Parameter b", channel: "pb", min: -1, max: 1, dfault: 0.1},
+ {name: "Parameter d", channel: "pd", min: 0, max: 1, dfault: 0.7},
+ {name: "Parameter C", channel: "pC", min: 0, max: 1, dfault: 0.12},
+ {name: "Parameter L", channel: "pL", min: 1, max: 220, dfault: 20},
+ {preset: "applymode"}
+ ]
+},
+
+instr twst_tf_nlfilter
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kpa = twst_param:k("pa")
+ kpb = twst_param:k("pb")
+ kpd = twst_param:k("pd")
+ kpC = twst_param:k("pC")
+ kpL = twst_param:k("pL")
+ nfilt
+ if (ileft == 1) then
+ aL nfilt2 aL, kpa, kpb, kpd, kpC, kpL
+ endif
+ if (iright == 1) then
+ aR nfilt2 aR, kpa, kpb, kpd, kpC, kpL
+ endif
+ outs aL, aR
+endin
+*/
+
+instr twst_tf_mooghpf
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("freq")
+ if (ileft == 1) then
+ aL mvchpf aL, kfreq
+ endif
+ if (iright == 1) then
+ aR mvchpf aR, kfreq
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_mooglpf
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("freq")
+ kres = twst_param:k("resonance")
+ kmode = twst_param:k("mode")
+ if (ileft == 1) then
+ if (kmode == 0) then
+ aL mvclpf1 aL, kfreq, kres
+ elseif (kmode == 1) then
+ aL mvclpf2 aL, kfreq, kres
+ elseif (kmode == 2) then
+ aL mvclpf3 aL, kfreq, kres
+ endif
+ endif
+ if (iright == 1) then
+ if (kmode == 0) then
+ aR mvclpf1 aR, kfreq, kres
+ elseif (kmode == 1) then
+ aR mvclpf2 aR, kfreq, kres
+ elseif (kmode == 2) then
+ aR mvclpf3 aR, kfreq, kres
+ endif
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_waveguide1
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("freq")
+ kcutoff = twst_param:k("cutoff")
+ kfeedback = twst_param:k("feedback")
+ if (ileft == 1) then
+ aL wguide1 aL, kfreq, kcutoff, kfeedback
+ endif
+ if (iright == 1) then
+ aR wguide1 aR, kfreq, kcutoff, kfeedback
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_tbvcf
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("freq")
+ kres = twst_param:k("resonance")
+ kdist = twst_param:k("dist")
+ kasym = twst_param:k("asym")
+ if (ileft == 1) then
+ aL tbvcf aL, kfreq, kres, kdist, kasym
+ endif
+ if (iright == 1) then
+ aR tbvcf aR, kfreq, kres, kdist, kasym
+ endif
+ outs aL, aR
+endin
diff --git a/site/udo/twist/transforms/frequency.udo b/site/udo/twist/transforms/frequency.udo
new file mode 100755
index 0000000..a56b808
--- /dev/null
+++ b/site/udo/twist/transforms/frequency.udo
@@ -0,0 +1,65 @@
+#include "/twist/transform_api.udo"
+#include "/frequency_tools.udo"
+
+instr twst_tf_freqshift1
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kshift = twst_param:k("shift")
+ if (ileft == 1 && iright == 1) then
+ aL, aR freqshift1 aL, aR, kshift
+ elseif (ileft == 1) then
+ aL freqshift1 aL, kshift
+ elseif (iright == 1) then
+ aR freqshift1 aR, kshift
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_freqshift2
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kshift = twst_param:k("shift")
+ if (ileft == 1 && iright == 1) then
+ aL, aR freqshift2 aL, aR, kshift
+ elseif (ileft == 1) then
+ aL freqshift2 aL, kshift
+ elseif (iright == 1) then
+ aR freqshift2 aR, kshift
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_ringmod
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("frequency")
+ if (ileft == 1 && iright == 1) then
+ aL, aR ringmod1 aL, aR, kfreq
+ elseif (ileft == 1) then
+ aL ringmod1 aL, kfreq
+ elseif (iright == 1) then
+ aR ringmod1 aR, kfreq
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_exciter
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreqlow = twst_tf_freq_custom("low")
+ kfreqhigh = twst_tf_freq_custom("high")
+ kharmonics = twst_param:k("harmonics")
+ kblend = twst_param:k("blend")
+
+ if (kfreqhigh < kfreqlow) then
+ kfreqhigh = kfreqlow
+ endif
+
+ if (ileft == 1) then
+ aL exciter aL, kfreqlow, kfreqhigh, kharmonics, kblend
+ endif
+ if (iright == 1) then
+ aR exciter aR, kfreqlow, kfreqhigh, kharmonics, kblend
+ endif
+ outs aL, aR
+endin
diff --git a/site/udo/twist/transforms/general.udo b/site/udo/twist/transforms/general.udo
new file mode 100755
index 0000000..b46f570
--- /dev/null
+++ b/site/udo/twist/transforms/general.udo
@@ -0,0 +1,28 @@
+#include "/twist/transform_api.udo"
+
+instr twst_tfi_reverse
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ ifnL, ifnR twst_tfi_getfn
+ ioffline twst_tf_isoffline
+ apos linseg (iendsamp - istartsamp) - 1, ilength, 0
+ if (ileft == 1) then
+ if (ioffline == 1) then
+ ifntempL ftgentmp 0, 0, -ftlen(ifnL), -2, 0
+ tableicopy ifntempL, ifnL
+ aL table3 apos, ifntempL
+ else
+ aL table3 apos, ifnL
+ endif
+ endif
+ if (iright == 1) then
+ if (ioffline == 1) then
+ ifntempR ftgentmp 0, 0, -ftlen(ifnR), -2, 0
+ tableicopy ifntempR, ifnR
+ aR table3 apos, ifntempR
+ else
+ aR table3 apos, ifnR
+ endif
+ endif
+ outs aL, aR
+endin
diff --git a/site/udo/twist/transforms/generate.udo b/site/udo/twist/transforms/generate.udo
new file mode 100755
index 0000000..e7355a8
--- /dev/null
+++ b/site/udo/twist/transforms/generate.udo
@@ -0,0 +1,363 @@
+#include "/addsub.udo"
+
+instr twst_tf_gensilence
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ a0 init 0
+ if (ileft == 1) then
+ aL = a0
+ endif
+ if (iright == 1) then
+ aR = a0
+ endif
+ outs aL, aR
+endin
+
+
+instr twst_tf_genadditive
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ifreq = twst_parami("minfreq")
+ ifreqmax = twst_parami("maxfreq")
+ ifreqstepmult = twst_parami("step")
+ ifreqstepmultrand = twst_parami("steprand")
+ iamp = twst_parami("amp")
+ iampmult = twst_parami("ampmult")
+
+ if (ileft == 1) then
+ aL as_additive ifreq, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp, iampmult
+ endif
+ if (iright == 1) then
+ aR as_additive ifreq, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp, iampmult
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_gentone
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kamp = twst_param:k("amp")
+ kfreq twst_tf_freq
+ kfn twst_tf_getwaveformk
+
+ aosc oscilikt kamp, kfreq, kfn
+ if (ileft == 1) then
+ aL = aosc
+ endif
+ if (iright == 1) then
+ aR = aosc
+ endif
+ outs aL, aR
+endin
+
+
+opcode twst_tf_gensimpleadditive, a, kkkkkio
+ kamp, kmultiplier, kfreq, kstepmult, kampprofile, iharmonics, index xin
+ if (kampprofile == 0) then
+ kgain = 1
+ else
+ kgain = (1 - (index / iharmonics))
+ endif
+ aosc oscili (1 / iharmonics) * kgain, (kfreq * kmultiplier)
+ if (index < iharmonics) then
+ arec twst_tf_gensimpleadditive, min:k(kfreq * kstepmult, sr / 2), kstepmult, kampprofile, iharmonics, index + 1
+ aosc += arec
+ endif
+ xout aosc * kamp
+endop
+
+instr twst_tf_gensimpleadditive
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kamp = twst_param:k("amp")
+ kfreq twst_tf_freq
+ kmultiplier = twst_param:k("multiplier")
+ kstepmult = twst_param:k("stepmultiplier")
+ kampprofile = twst_param:k("ampprofile")
+ iharmonics = twst_parami("harmonics")
+
+ if (ileft == 1) then
+ aL twst_tf_gensimpleadditive kamp, kmultiplier, kfreq, kstepmult, kampprofile, iharmonics
+ endif
+ if (iright == 1) then
+ aR twst_tf_gensimpleadditive kamp, kmultiplier, kfreq, kstepmult, kampprofile, iharmonics
+ endif
+ outs aL, aR
+endin
+
+opcode twst_tf_genfeedback, a, kkkk
+ kfeedback, kfreq, kpostgain, kbw xin
+ asig init 0
+ asig += noise(0.00001, 0)
+ adel delay asig, 0.0001
+ asig += (adel * kfeedback)
+ asig butterbp asig, kfreq, kbw
+ asig butterbp asig, kfreq, kbw
+ asig tanh ain
+ asig *= kpostgain
+ xout asig
+endop
+
+instr twst_tf_genfeedback
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kamp = twst_param:k("amp")
+ kfeedback = twst_param:k("feedback")
+ kfreq twst_tf_freq
+ kpostgain = twst_param:k("postgain")
+ kbw = twst_param:k("bandwidth")
+ if (ileft == 1) then
+ aL twst_tf_genfeedback kfeedback, kfreq, kpostgain
+ aL *= kamp
+ endif
+ if (iright == 1) then
+ aR twst_tf_genfeedback kfeedback, kfreq, kpostgain
+ aR *= kamp
+ endif
+ outs aL, aR
+endin
+
+
+instr twst_tf_genfm
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq twst_tf_freq
+ kamp = twst_param:k("amp")
+ kcarrier = twst_param:k("carrier")
+ kmod = twst_param:k("modulator")
+ kindex = twst_param:k("index")
+ kstereo = twst_param:k("stereovar")
+ ifn twst_tf_getwaveform
+
+ if (ileft == 0 || iright == 0) then
+ kstereo = 1
+ endif
+
+ if (ileft == 1) then
+ aL foscili kamp, kfreq, kcarrier * kstereo, kmod * kstereo, kindex * kstereo, ifn
+ endif
+ if (iright == 1) then
+ kstereo = 1 - (kstereo - 1)
+ aR foscili kamp, kfreq, kcarrier * kstereo, kmod * kstereo, kindex * kstereo, ifn
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_genfmmodel
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq twst_tf_freq
+ ifmtype = twst_parami("fmtype")
+ kamp = twst_param:k("amp")
+ kc1 = twst_param:k("control1")
+ kc2 = twst_param:k("control2")
+ kvibdepth = twst_param:k("vibdepth")
+ kvibrate = twst_param:k("vibrate")
+ ifn1 twst_tf_getwaveform twst_parami("wave1")
+ ifn2 twst_tf_getwaveform twst_parami("wave2")
+ ifn3 twst_tf_getwaveform twst_parami("wave3")
+ ifn4 twst_tf_getwaveform twst_parami("wave4")
+ ifnv twst_tf_getwaveform twst_parami("vibwave")
+ kstereo = twst_param:k("stereovar")
+
+ if (ileft == 0 || iright == 0) then
+ kstereo = 1
+ endif
+
+ if (ileft == 1) then
+ ifmtypei = (ifmtype == 5) ? round(random(0, 4)) : ifmtype
+ if (ifmtypei == 0) then
+ aL fmb3 kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ elseif (ifmtypei == 1) then
+ aL fmbell kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ elseif (ifmtypei == 2) then
+ aL fmpercfl kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ elseif (ifmtypei == 3) then
+ aL fmrhode kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ elseif (ifmtypei == 4) then
+ aL fmwurlie kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ endif
+ endif
+ if (iright == 1) then
+ kstereo = 1 - (kstereo - 1)
+ ifmtypei = (ifmtype == 5) ? round(random(0, 4)) : ifmtype
+
+ if (ifmtypei == 0) then
+ aR fmb3 kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ elseif (ifmtypei == 1) then
+ aR fmbell kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ elseif (ifmtypei == 2) then
+ aR fmpercfl kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ elseif (ifmtypei == 3) then
+ aR fmrhode kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ elseif (ifmtypei == 4) then
+ aR fmwurlie kamp, kfreq, kc1 * kstereo, kc2 * kstereo, kvibdepth * kstereo, kvibrate * kstereo, ifn1, ifn2, ifn3, ifn4, ifnv
+ endif
+ endif
+ outs aL, aR
+endin
+
+
+opcode _twst_tf_genrepluck, a, kkiiikkkkk
+ kamp, kfn, ipluckpoint, ifreq, ipickuppoint, krefl, kexcitemode, kexcitefn, kexcitefreq, kexciteamp xin
+
+ if (kexcitemode == 0) then
+ aexcite noise kexciteamp, 0.5
+ else
+ aexcite oscilikt kexciteamp, kexcitefreq, kexcitefn
+ endif
+ aout repluck ipluckpoint, kamp, ifreq, ipickuppoint, krefl, aexcite
+ aout dcblock2 aout
+ xout aout
+endop
+
+instr twst_tf_genrepluck
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kamp = twst_param:k("amp")
+ kfn twst_tf_getwaveformk
+ ipluckpoint = twst_parami("pluckpoint")
+ ifreq twst_tf_freqi
+ ipickuppoint = twst_parami("pickpoint")
+ krefl = twst_param:k("reflection")
+ kexciteamp = twst_param:k("exciteamp")
+ kexcitemode = twst_param:k("excitemode")
+ kexcitefn twst_tf_getwaveformk twst_param:k("excitewave")
+ kexcitefreq = twst_tf_freq_custom("excite")
+
+ if (ileft == 1) then
+ aL _twst_tf_genrepluck kamp, kfn, ipluckpoint, ifreq, ipickuppoint, krefl, kexcitemode, kexcitefn, kexcitefreq, kexciteamp
+ endif
+ if (iright == 1) then
+ aR _twst_tf_genrepluck kamp, kfn, ipluckpoint, ifreq, ipickuppoint, krefl, kexcitemode, kexcitefn, kexcitefreq, kexciteamp
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_genwgbow
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kamp = twst_param:k("amp")
+ kfreq twst_tf_freq
+ kpres = twst_param:k("pressure")
+ kpos = twst_param:k("position")
+ kvibf = twst_param:k("vibfreq")
+ kvamp = twst_param:k("vibamp")
+ ifn twst_tf_getwaveform
+
+ if (ileft == 1) then
+ aL wgbow kamp, kfreq, kpres, kpos, kvibf, kvamp, ifn, 20
+ endif
+ if (iright == 1) then
+ aR wgbow kamp, kfreq, kpres, kpos, kvibf, kvamp, ifn, 20
+ endif
+ outs aL, aR
+endin
+
+/* not quite right, doesn't create sound as expected
+instr twst_tf_genwgbowedbar
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kamp = twst_param:k("amp")
+ kfreq twst_tf_freq
+ kpres = twst_param:k("pressure")
+ kpos = twst_param:k("position")
+ kgain = twst_param:k("filtergain")
+
+ if (ileft == 1) then
+ aL wgbowedbar kamp, kfreq, kpos, kpres, kgain
+ endif
+ if (iright == 1) then
+ aR wgbowedbar kamp, kfreq, kpos, kpres, kgain
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_genwgbrass
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kamp = twst_param:k("amp")
+ kfreq twst_tf_freq
+ ktension = twst_param:k("tension")
+ iattack = twst_parami("attack")
+ kvibf = twst_param:k("vibfreq")
+ kvamp = twst_param:k("vibamp")
+ ifn twst_tf_getwaveform
+
+ if (ileft == 1) then
+ aL wgbrass kamp, kfreq, ktension, iattack, kvibf, kvamp, ifn, 100
+ endif
+ if (iright == 1) then
+ aR wgbrass kamp, kfreq, ktension, iattack, kvibf, kvamp, ifn, 100
+ endif
+ outs aL, aR
+endin
+*/
+
+instr twst_tf_gennoise
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ktype = twst_param:k("type")
+ kamp = twst_param:k("amp")
+ kbeta = twst_param:k("beta")
+
+ if (ileft == 1) then
+ if (ktype == 0) then
+ aL unirand 2
+ aL = aL - 1
+ elseif (ktype == 1) then
+ aL pinker
+ endif
+ aL *= kamp
+ endif
+ if (iright == 1) then
+ if (ktype == 0) then
+ aR unirand 2
+ aR = aR - 1
+ elseif (ktype == 1) then
+ aR pinker
+ endif
+ aR *= kamp
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_genbamboo
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kamp = twst_param:k("amp")
+ inum = twst_parami("number")
+ ifreq1 = twst_parami("r1freq")
+ ifreq2 = twst_parami("r2freq")
+ ifreq3 = twst_parami("r3freq")
+
+ if (ileft == 1) then
+ aL bamboo kamp, 0, inum, 0, 0, ifreq1, ifreq2, ifreq3
+ endif
+ if (iright == 1) then
+ aR bamboo kamp, 0, inum, 0, 0, ifreq1, ifreq2, ifreq3
+ endif
+ outs aL, aR
+endin
+
+/* opcode unavailable in WASM
+{name: "Fractal noise", instr: "twst_tf_genfractalnoise", parameters: [
+ {name: "Type", options: ["White", "Pink", "Brown"], automatable: true, description: "Type of noise"},
+ {preset: "amp"},
+ {preset: "applymode"}
+]}
+
+instr twst_tf_genfractalnoise
+ aL, aR, ileft, iright twst_getinput
+ ktype = twst_param:k("type")
+ kamp = twst_param:k("amp")
+
+ if (ileft == 1) then
+ aL fractalnoise kamp, ktype
+ endif
+ if (iright == 1) then
+ aR fractalnoise kamp, ktype
+ endif
+ outs aL, aR
+endin
+*/
diff --git a/site/udo/twist/transforms/granular.udo b/site/udo/twist/transforms/granular.udo
new file mode 100755
index 0000000..c25a517
--- /dev/null
+++ b/site/udo/twist/transforms/granular.udo
@@ -0,0 +1,138 @@
+#include "/twist/transform_api.udo"
+#include "/fx_autoglitch.udo"
+#include "/sample_level.udo"
+
+instr twst_tfi_rearrange
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ istereounique = twst_parami("stereounique")
+ ichops = twst_parami("chopnumber")
+ ichopmin = twst_parami("chopmin")
+ ichopmax = twst_parami("chopmax")
+ ifnL, ifnR twst_tfi_getfn
+ if (ileft == 1 && iright == 1) then
+ if (istereounique == 1) then
+ aL smp_rearrange ichops, ichopmin, ichopmax, ifnL
+ aR smp_rearrange ichops, ichopmin, ichopmax, ifnR
+ else
+ aL, aR smp_rearrange ichops, ichopmin, ichopmax, ifnL, ifnR
+ endif
+ elseif (ileft == 1) then
+ aL smp_rearrange ichops, ichopmin, ichopmax, ifnL
+ elseif (iright == 1) then
+ aR smp_rearrange ichops, ichopmin, ichopmax, ifnR
+ endif
+ outs aL, aR
+endin
+
+instr twst_tfi_grain
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ kamp = twst_param:k("amp")
+ kpitch = twst_tf_pitchscale()
+ kdensity = twst_param:k("density")
+ kgrainsize = twst_param:k("grainsize")
+ kampvar = twst_param:k("ampvar")
+ kpitchvar = twst_param:k("pitchvar")
+ irandom = twst_parami("randomread")
+ ifnWindow = twst_tf_getwintype()
+
+ ifnL, ifnR twst_tfi_getfn
+
+ kpitch *= (sr / ftlen(ifnL))
+
+ if (ileft == 1) then
+ aL grain kamp, kpitch, kdensity, kampvar, kpitchvar, kgrainsize, ifnL, ifnWindow, 0.5, irandom
+ endif
+ if (iright == 1) then
+ aR grain kamp, kpitch, kdensity, kampvar, kpitchvar, kgrainsize, ifnR, ifnWindow, 0.5, irandom
+ endif
+ outs aL, aR
+endin
+
+instr twst_tfi_syncgrain
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ kamp = twst_param:k("amp")
+ kfreq = twst_param:k("frequency")
+ kpitch = twst_tf_pitchscale()
+ kgrsize = twst_param:k("grainsize")
+ ioverlaps = twst_parami("overlaps")
+ itimescale = twst_parami("timescale")
+ ifnWindow = twst_tf_getwintype()
+
+ iprate = (1 / ioverlaps) * itimescale
+ p3 = ilength * itimescale
+
+ ifnL, ifnR twst_tfi_getfn
+
+ if (ileft == 1) then
+ aL syncgrain kamp, kfreq, kpitch, kgrsize, iprate, ifnL, ifnWindow, ioverlaps
+ endif
+ if (iright == 1) then
+ aR syncgrain kamp, kfreq, kpitch, kgrsize, iprate, ifnR, ifnWindow, ioverlaps
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_autoglitch
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kminratio = twst_param:k("minratio")
+ kchangerate = twst_param:k("changerate")
+ kchangechance = twst_param:k("changechance")
+ kporttime = twst_param:k("porttime")
+ kdo_distortion = twst_param:k("distortion")
+ kdo_ampchange = twst_param:k("ampchange")
+ ibuflens = twst_parami("buflens")
+ kreadmode = twst_param:k("readmode")
+ istereounique = twst_parami("stereounique")
+
+ twst_setlatencyseconds ibuflens
+
+ if (ileft == 1 && iright == 1) then
+ aL, aR fx_autoglitch aL, aR, kminratio, kchangerate, kchangechance, kporttime, kdo_distortion, kdo_ampchange, ibuflens, istereounique, kreadmode
+ elseif (ileft == 1) then
+ aL fx_autoglitch aL, kminratio, kchangerate, kchangechance, kporttime, kdo_distortion, kdo_ampchange, ibuflens, kreadmode
+ elseif (iright == 1) then
+ aR fx_autoglitch aR, kminratio, kchangerate, kchangechance, kporttime, kdo_distortion, kdo_ampchange, ibuflens, kreadmode
+ endif
+ outs aL, aR
+endin
+
+instr twst_tfi_retriglitch
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ ktriglen = twst_param:k("triglen")
+ kpitchscale = twst_tf_pitchscale()
+ kapplywindowing = twst_param:k("applywindowing")
+ ireadmode = twst_parami("readmode")
+ kwintype twst_tf_getwintypek
+
+ p3 = ilength
+ if (ireadmode == 0) then
+ atime linseg 0, p3, ilength
+ elseif (ireadmode == 1) then
+ ktime = twst_param:k("readtime")
+ twst_tf_setplayposition ktime
+ atime = a(ktime * ilength)
+ elseif (ireadmode == 2) then
+ itimescale = twst_parami("timescale")
+ p3 = ilength * itimescale
+ atime linseg 0, p3, ilength
+ elseif (ireadmode == 3) then
+ atime linseg ilength, p3, 0
+ elseif (ireadmode == 4) then
+ atime init -1
+ endif
+
+ ifnL, ifnR twst_tfi_getfn
+
+ if (ileft == 1) then
+ aL fx_retrigglitch ifnL, ktriglen, atime, kpitchscale, kapplywindowing, kwintype
+ endif
+ if (iright == 1) then
+ aR fx_retrigglitch ifnR, ktriglen, atime, kpitchscale, kapplywindowing, kwintype
+ endif
+ outs aL, aR
+endin
diff --git a/site/udo/twist/transforms/harmonic.udo b/site/udo/twist/transforms/harmonic.udo
new file mode 100755
index 0000000..717de44
--- /dev/null
+++ b/site/udo/twist/transforms/harmonic.udo
@@ -0,0 +1,142 @@
+#include "/twist/transform_api.udo"
+
+instr twst_tf_resony
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq twst_tf_freq
+ kbw = twst_param:k("bandwidth")
+ inum = twst_parami("num")
+ ksep = twst_param:k("separation")
+ isepmode = twst_parami("sepmode")
+ ibalance = twst_parami("balance")
+
+ if (ileft == 1) then
+ aLr resony aL, kfreq, kbw, inum, ksep, isepmode
+ if (ibalance == 1) then
+ aL balance aLr, aL
+ else
+ aL = aLr
+ endif
+ endif
+ if (iright == 1) then
+ aRr resony aR, kfreq, kbw, inum, ksep, isepmode
+ if (ibalance == 1) then
+ aR balance aRr, aR
+ else
+ aR = aRr
+ endif
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_resonx
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq twst_tf_freq
+ kbw = twst_param:k("bandwidth")
+ inum = twst_parami("num")
+ ibalance = twst_parami("balance")
+
+ if (ileft == 1) then
+ aLr resonx aL, kfreq, kbw, inum
+ if (ibalance == 1) then
+ aL balance aLr, aL
+ else
+ aL = aLr
+ endif
+ endif
+ if (iright == 1) then
+ aRr resonx aR, kfreq, kbw, inum
+ if (ibalance == 1) then
+ aR balance aRr, aR
+ else
+ aR = aRr
+ endif
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_streson
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq twst_tf_freq
+ kfeedback = twst_param:k("feedback")
+ if (ileft == 1) then
+ aL streson aL, kfreq, kfeedback
+ endif
+ if (iright == 1) then
+ aR streson aR, kfreq, kfeedback
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_mvmfilter
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfreq = twst_param:k("freq")
+ kdecay = twst_param:k("decay")
+ kbalance = twst_param:k("balance")
+ if (ileft == 1) then
+ aLf mvmfilter aL, kfreq, kdecay
+ if (kbalance == 1) then
+ aL balance aLf, aL
+ else
+ aL = aLf
+ endif
+ endif
+ if (iright == 1) then
+ aRf mvmfilter aR, kfreq, kdecay
+ if (kbalance == 1) then
+ aL balance aRf, aR
+ else
+ aR = aRf
+ endif
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_harmon
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kestfreq = twst_param:k("estfreq")
+ kmaxvar = twst_param:k("maxvar")
+ kgenfreq1 = twst_param:k("genfreq1")
+ kgenfreq2 = twst_param:k("genfreq2")
+ iminfreq = twst_parami("minfreq")
+ ianalysistime = twst_parami("analysistime")
+ if (ileft == 1) then
+ aL harmon aL, kestfreq, kmaxvar, kgenfreq1, kgenfreq2, 0, iminfreq, ianalysistime
+ endif
+ if (iright == 1) then
+ aR harmon aR, kestfreq, kmaxvar, kgenfreq1, kgenfreq2, 0, iminfreq, ianalysistime
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_formantharmon
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kgenfreq1 = twst_param:k("genfreq1")
+ kgenfreq2 = twst_param:k("genfreq2")
+ kgenfreq3 = twst_param:k("genfreq3")
+ kgenfreq4 = twst_param:k("genfreq4")
+ iminfreq = octcps:i(twst_parami("minfreq"))
+ ipolarity = twst_parami("polarity")
+
+ ipupdate = twst_parami("pupdate")
+ iplow = octcps:i(twst_parami("plowfreq"))
+ iphigh = octcps:i(twst_parami("phighfreq"))
+ ipthresh = dbamp:i(twst_parami("pthresh"))
+ ipfrqs = twst_parami("pfrqs")
+ ipconfirm = twst_parami("pconfirms")
+
+ if (ileft == 1) then
+ koct, kamp pitch aL, ipupdate, iplow, iphigh, ipthresh, ipfrqs, ipconfirm
+ aL harmon4 aL, koct, kgenfreq1, kgenfreq2, kgenfreq3, kgenfreq4, 0, iminfreq, ipolarity
+ endif
+ if (iright == 1) then
+ koct, kamp pitch aR, ipupdate, iplow, iphigh, ipthresh, ipfrqs, ipconfirm
+ aR harmon4 aR, koct, kgenfreq1, kgenfreq2, kgenfreq3, kgenfreq4, 0, iminfreq, ipolarity
+ endif
+ outs aL, aR
+endin
diff --git a/site/udo/twist/transforms/reverb.udo b/site/udo/twist/transforms/reverb.udo
new file mode 100755
index 0000000..e6f66ec
--- /dev/null
+++ b/site/udo/twist/transforms/reverb.udo
@@ -0,0 +1,80 @@
+#include "/twist/transform_api.udo"
+
+instr twst_tf_reverb1
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ktime = twst_param:k("time")
+ if (ileft == 1) then
+ aL reverb aL, ktime
+ endif
+ if (iright == 1) then
+ aR reverb aR, ktime
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_reverb2
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ktime = twst_param:k("time")
+ khfdamp = twst_param:k("hfdamp")
+ if (ileft == 1) then
+ aL nreverb aL, ktime, khfdamp
+ endif
+ if (iright == 1) then
+ aR nreverb aR, ktime, khfdamp
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_reverb3
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kroomsize = twst_param:k("roomsize")
+ khfdamp = twst_param:k("hfdamp")
+ if (ileft != 1) then
+ aL noise 0.001, 0.5
+ endif
+ if (iright != 1) then
+ aR noise 0.001, 0.5
+ endif
+ aL, aR freeverb aL, aR, kroomsize, khfdamp
+ outs aL, aR
+endin
+
+instr twst_tf_reverb4
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kfeedback = twst_param:k("feedback")
+ khfdamp = twst_param:k("hfdamp") * (sr / 2)
+ ipitchmod = twst_parami("pitchmod")
+ if (ileft != 1) then
+ aL noise 0.001, 0.5
+ endif
+ if (iright != 1) then
+ aR noise 0.001, 0.5
+ endif
+ aL, aR reverbsc aL, aR, kfeedback, khfdamp, sr, ipitchmod
+ outs aL, aR
+endin
+
+
+instr twst_tf_reverb5
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ iwidth = twst_parami("width")
+ idepth = twst_parami("depth")
+ iheight = twst_parami("height")
+ kposx = twst_param:k("posx") * iwidth
+ kposy = twst_param:k("posy") * idepth
+ kposz = twst_param:k("posz") * iheight
+ if (ileft == 1 && iright == 1) then
+ ainput = (aL + aR) * 0.5
+ elseif (ileft != 1) then
+ ainput = aR
+ else
+ ainput = aL
+ endif
+ aL, aR babo ainput, kposx, kposy, kposz, iwidth, idepth, iheight
+ outs aL, aR
+endin
diff --git a/site/udo/twist/transforms/spectral.udo b/site/udo/twist/transforms/spectral.udo
new file mode 100755
index 0000000..b5f2fab
--- /dev/null
+++ b/site/udo/twist/transforms/spectral.udo
@@ -0,0 +1,642 @@
+#include "/twist/transform_api.udo"
+#include "/pvs_tabproc.udo"
+#include "/spectral_transforms.udo"
+#include "/fx_autoglitch.udo"
+#include "/host_platform.udo"
+#include "/addsub.udo"
+
+instr twst_tf_tpvinvert
+ $TWST_TRANSFORM
+ setksmps(64)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kinvertamp = twst_param:k("invertamp")
+ kinvertfreq = twst_param:k("invertfreq")
+
+ if (ileft == 1) then
+ kreadyL, itpvdataL tpv_anal fL
+ tpv_invert kreadyL, itpvdataL, kinvertamp, kinvertfreq
+ fL tpv_resynth itpvdataL, fL
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ kreadyR, itpvdataR tpv_anal fR
+ tpv_invert kreadyR, itpvdataR, kinvertamp, kinvertfreq
+ fR tpv_resynth itpvdataR, fR
+ aR twst_tf_fresynth fR
+ endif
+ outs aL, aR
+endin
+
+
+instr twst_tf_tpvbubble
+ $TWST_TRANSFORM
+ setksmps(64)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kchance = twst_param:k("chance")
+ kstereounique = twst_param:k("stereounique")
+
+ if (ileft == 1) then
+ kreadyL, itpvdataL tpv_anal fL
+ tpv_bubble kreadyL, itpvdataL, kchance, kstereounique
+ fL tpv_resynth itpvdataL, fL
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ kreadyR, itpvdataR tpv_anal fR
+ tpv_bubble kreadyR, itpvdataR, kchance, kstereounique
+ fR tpv_resynth itpvdataR, fR
+ aR twst_tf_fresynth fR
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_tpvsmear
+ $TWST_TRANSFORM
+ setksmps(64)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ imaxframes = twst_parami("maxframes")
+ kframes = twst_param:k("frames")
+ kavgfreqs = twst_param:k("avgfreqs")
+ kincludeoriginal = twst_param:k("includeoriginal")
+
+ if (ileft == 1) then
+ kreadyL, itpvdataL tpv_anal fL
+ tpv_smear kreadyL, itpvdataL, imaxframes, kframes, kavgfreqs, kincludeoriginal
+ fL tpv_resynth itpvdataL, fL
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ kreadyR, itpvdataR tpv_anal fR
+ tpv_smear kreadyR, itpvdataR, imaxframes, kframes, kavgfreqs, kincludeoriginal
+ fR tpv_resynth itpvdataR, fR
+ aR twst_tf_fresynth fR
+ endif
+ outs aL, aR
+endin
+
+
+instr twst_tf_tpvscramble
+ $TWST_TRANSFORM
+ setksmps(64)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kstep = twst_param:k("step")
+ kdoamp = twst_param:k("scrambleamp")
+ kdofreq = twst_param:k("scramblefreq")
+
+ if (ileft == 1) then
+ kreadyL, itpvdataL tpv_anal fL
+ tpv_scramble kreadyL, itpvdataL, kstep, kdoamp, kdofreq
+ fL tpv_resynth itpvdataL, fL
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ kreadyR, itpvdataR tpv_anal fR
+ tpv_scramble kreadyR, itpvdataR, kstep, kdoamp, kdofreq
+ fR tpv_resynth itpvdataR, fR
+ aR twst_tf_fresynth fR
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_tpvthreshold
+ $TWST_TRANSFORM
+ setksmps(64)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kthreshold = twst_param:k("threshold")
+ kdirection = twst_param:k("direction")
+
+ if (ileft == 1) then
+ kreadyL, itpvdataL tpv_anal fL
+ tpv_threshold kreadyL, itpvdataL, kthreshold, kdirection
+ fL tpv_resynth itpvdataL, fL
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ kreadyR, itpvdataR tpv_anal fR
+ tpv_threshold kreadyR, itpvdataR, kthreshold, kdirection
+ fR tpv_resynth itpvdataR, fR
+ aR twst_tf_fresynth fR
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_tpvfreeze
+ $TWST_TRANSFORM
+ setksmps(64)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kfreeze = twst_param:k("freeze")
+ kfreezeamp = twst_param:k("freezeamp")
+ kfreezefreq = twst_param:k("freezefreq")
+ kcrossfade = twst_param:k("crossfade")
+
+ if (ileft == 1) then
+ kreadyL, itpvdataL tpv_anal fL
+ tpv_freeze1 kreadyL, itpvdataL, kfreeze, kfreezeamp, kfreezefreq, kcrossfade
+ fL tpv_resynth itpvdataL, fL
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ kreadyR, itpvdataR tpv_anal fR
+ tpv_freeze1 kreadyR, itpvdataR, kfreeze, kfreezeamp, kfreezefreq, kcrossfade
+ fR tpv_resynth itpvdataR, fR
+ aR twst_tf_fresynth fR
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_tpvwrap
+ $TWST_TRANSFORM
+ setksmps(64)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kwrapampbin = twst_param:k("wrapampbin")
+ kwrapfreqbin = twst_param:k("wrapfreqbin")
+
+ if (ileft == 1) then
+ i_, inumbins, i_, i_ pvsinfo fL
+ kreadyL, itpvdataL tpv_anal fL
+ tpv_wrap kreadyL, itpvdataL, kwrapampbin * inumbins, kwrapfreqbin * inumbins
+ fL tpv_resynth itpvdataL, fL
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ i_, inumbins, i_, i_ pvsinfo fR
+ kreadyR, itpvdataR tpv_anal fR
+ tpv_wrap kreadyR, itpvdataR, kwrapampbin * inumbins, kwrapfreqbin * inumbins
+ fR tpv_resynth itpvdataR, fR
+ aR twst_tf_fresynth fR
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_tpvswap
+ $TWST_TRANSFORM
+ setksmps(64)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kampStart = twst_param:k("ampstart")
+ kampLength = twst_param:k("amplength")
+ kampTarget = twst_param:k("amptarget")
+ kfreqStart = twst_param:k("freqstart")
+ kfreqLength = twst_param:k("freqlength")
+ kfreqTarget = twst_param:k("freqtarget")
+ kwrapmode = twst_param:k("wrapmode")
+
+ if (ileft == 1) then
+ i_, inumbins, i_, i_ pvsinfo fL
+ kreadyL, itpvdataL tpv_anal fL
+ tpv_swap kreadyL, itpvdataL, kampStart * inumbins, kampLength * inumbins, kampTarget * inumbins, kfreqStart * inumbins, kfreqLength * inumbins, kfreqTarget * inumbins, kwrapmode
+ fL tpv_resynth itpvdataL, fL
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ i_, inumbins, i_, i_ pvsinfo fR
+ kreadyR, itpvdataR tpv_anal fR
+ tpv_swap kreadyR, itpvdataR, kampStart * inumbins, kampLength * inumbins, kampTarget * inumbins, kfreqStart * inumbins, kfreqLength * inumbins, kfreqTarget * inumbins, kwrapmode
+ fR tpv_resynth itpvdataR, fR
+ aR twst_tf_fresynth fR
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_tpvaverage
+ $TWST_TRANSFORM
+ setksmps(64)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kmax = twst_param:k("maxframes")
+ kavgamp = twst_param:k("avgamp")
+ kavgfreq = twst_param:k("avgfreq")
+ krate = twst_param:k("rate")
+
+ ktrig metro krate
+
+ if (ileft == 1) then
+ kreadyL, itpvdataL tpv_anal fL
+ tpv_average kreadyL, itpvdataL, kmax, kavgamp, kavgfreq, ktrig
+ fL tpv_resynth itpvdataL, fL
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ kreadyR, itpvdataR tpv_anal fR
+ tpv_average kreadyR, itpvdataR, kmax, kavgamp, kavgfreq, ktrig
+ fR tpv_resynth itpvdataR, fR
+ aR twst_tf_fresynth fR
+ endif
+ outs aL, aR
+endin
+
+
+/*
+instr twst_tf_stencil
+ $TWST_TRANSFORM
+ Spvx = strcat(host_tempdir(), "twist_stencil.pvx")
+ ifftsize = twst_parami("fftsize")
+ kran init 0
+ ktimek timeinstk
+ if (ktimek == 1) then
+ ifnL, ifnR, istart, ilen, ileft, iright twst_getcrossdata
+ ikcycles = round(ilen / kr)
+ kcount = 1
+ while (kcount < ikcycles) do
+ aLo, aRo, ileft, iright twst_getcrossinput
+ if (ileft == 1 && iright == 1) then
+ ain = (aLo + aRo) * 0.5
+ elseif (ileft == 1) then
+ ain = aLo
+ elseif (iright == 1) then
+ ain = aRo
+ endif
+ f1 pvsanal ain, ifftsize, ifftsize/4, ifftsize, 1
+ pvsfwrite f1, Spvx
+ kcount += 1
+ od
+
+ elseif (ktimek == 1) then
+ schedulek("_twst_tf_stencilplayback", 0, p3, p4, Spvx) ; TODO : won't work offline
+ endif
+
+ aL, aR bus_read "stencilplayback"
+ kreleasing init 0
+ if (kreleasing == 0 && release:k() == 1) then
+ turnoff2 "_twst_tf_stencilplayback", 0, 1
+ kreleasing = 1
+ endif
+
+ outs aL, aR
+endin
+
+instr _twst_tf_stencilplayback
+ $TWST_TRANSFORM
+ Spvx = strget(p5)
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ ifftsize = twst_parami("fftsize")
+ kgain = twst_param:k("gain")
+ klevel = twst_param:k("level")
+
+ ifn ftgentmp 0, 0, (ifftsize * 2) + 1, 43, Spvx, 1
+
+ if (ileft == 1) then
+ fpsL pvstencil fL, kgain, klevel, ifn
+ aL twst_tf_fresynth fpsL
+ endif
+ if (iright == 1) then
+ fpsR pvstencil fR, kgain, klevel, ifn
+ aR twst_tf_fresynth fpsR
+ endif
+ bus_mix("stencilplayback", aL, aR)
+endin
+*/
+
+instr twst_tf_spectralshift
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kfreqincr = twst_param:k("freqincr")
+ kporttime = twst_param:k("porttime")
+ kfreqscale = twst_tf_pitchscale()
+ istart = twst_parami("start")
+ iend = twst_parami("end")
+ ifn = twst_tf_getwaveform()
+
+ if (ileft == 1) then
+ aL spc_shift fL, kfreqincr, istart, iend, kfreqscale, kporttime, ifn
+ endif
+ if (iright == 1) then
+ aR spc_shift fR, kfreqincr, istart, iend, kfreqscale, kporttime, ifn
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_spectraldelay
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kdeltime = twst_param:k("time")
+ kdeladd = twst_param:k("add")
+ kporttime = twst_param:k("porttime")
+ kfreqscale = twst_tf_pitchscale()
+ istart = twst_parami("start")
+ iend = twst_parami("end")
+ ifn = twst_tf_getwaveform()
+
+ if (ileft == 1) then
+ aL spc_delay fL, kdeltime, kdeladd, istart, iend, kfreqscale, kporttime, ifn
+ endif
+ if (iright == 1) then
+ aR spc_delay fR, kdeltime, kdeladd, istart, iend, kfreqscale, kporttime, ifn
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_spectralgate
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kthresh = twst_param:k("threshold")
+ khold = twst_param:k("hold")
+ kporttime = twst_param:k("porttime")
+ kfreqscale = twst_tf_pitchscale()
+ istart = twst_parami("start")
+ iend = twst_parami("end")
+ ifn = twst_tf_getwaveform()
+
+ if (ileft == 1) then
+ aL spc_gate fL, kthresh, khold, istart, iend, kfreqscale, kporttime, ifn
+ endif
+ if (iright == 1) then
+ aR spc_gate fR, kthresh, khold, istart, iend, kfreqscale, kporttime, ifn
+ endif
+ outs aL, aR
+endin
+
+instr twst_tfi_spectralgrain1
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ ifnL, ifnR twst_tfi_getfn
+
+ ireadmode = twst_parami("readmode")
+ if (ireadmode == 0) then
+ ktime linseg 0, p3, ilength
+ elseif (ireadmode == 1) then
+ ktime = twst_param:k("readtime")
+ twst_tf_setplayposition ktime
+ ktime *= ilength
+ elseif (ireadmode == 2) then
+ itimescale = twst_parami("timescale")
+ p3 = ilength * itimescale
+ ktime linseg 0, p3, ilength
+ elseif (ireadmode == 3) then
+ ktime linseg ilength, p3, 0
+ endif
+
+ kgraindur = twst_param:k("graindur")
+ ifftsize = twst_parami("fftsize")
+ ilayers = twst_parami("layers")
+ kporttime = twst_param:k("porttime")
+ kfreqscale = twst_tf_pitchscale()
+ kfreqrand = twst_param:k("freqrand")
+ kdurrand = twst_param:k("durrand")
+ kpitchrand = twst_param:k("pitchrand")
+ istart = twst_parami("start")
+ iend = twst_parami("end")
+ ifn = twst_tf_getwaveform()
+ twst_setlatencysamples(ifftsize)
+
+ if (ileft == 1) then
+ aL spc_grain1 ifnL, ktime, kgraindur, ifftsize, ilayers, istart, iend, kfreqscale, kfreqrand, kdurrand, kpitchrand, kporttime, ifn
+ endif
+ if (iright == 1) then
+ aR spc_grain1 ifnR, ktime, kgraindur, ifftsize, ilayers, istart, iend, kfreqscale, kfreqrand, kdurrand, kpitchrand, kporttime, ifn
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_spectralread
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ ifftsize = twst_parami("fftsize")
+ ktime = twst_param:k("readtime") * ilength
+ twst_tf_setplayposition ktime
+ twst_setlatencysamples(ifftsize)
+
+ ktimek timeinstk
+ ilensamps = iendsamp - istartsamp
+ ikcycles = ilength * kr
+ kcount init 0
+ if (ktimek == 1) then
+ while (kcount < ikcycles) do
+ apos linseg 0, ilength, iendsamp
+ if (ileft == 1 && iright == 1) then
+ aL table3 apos, gitwst_bufferL[gitwst_instanceindex]
+ aR table3 apos, gitwst_bufferR[gitwst_instanceindex]
+ asig = (aL + aR) * 0.5
+ elseif (ileft == 1) then
+ asig table3 apos, gitwst_bufferL[gitwst_instanceindex]
+ elseif (iright == 1) then
+ asig table3 apos, gitwst_bufferR[gitwst_instanceindex]
+ endif
+ fsig pvsanal asig, ifftsize, ifftsize/4, ifftsize, 1
+ ipbuf, k_ pvsbuffer fsig, ilength
+ kcount += 1
+ od
+ else
+ if (ileft == 1) then
+ fL pvsbufread ktime, ipbuf
+ aL twst_tf_fresynth fL
+ endif
+ if (iright == 1) then
+ fR pvsbufread ktime, ipbuf
+ aR twst_tf_fresynth fR
+ endif
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_centroidoscillator
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kporttime = twst_param:k("porttime")
+ kfreqscale = twst_tf_pitchscale()
+ kfn twst_tf_getwaveformk
+
+ if (ileft == 1) then
+ kcent pvscent fL
+ kfreq portk kcent * kfreqscale, kporttime
+ aL oscilikt 1, kfreq, kfn
+ endif
+ if (iright == 1) then
+ kcent pvscent fR
+ kfreq portk kcent * kfreqscale, kporttime
+ aR oscilikt 1, kfreq, kfn
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_binoscillator
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kporttime = twst_param:k("porttime")
+ kbin = twst_param:k("bin")
+ kfreqscale = twst_tf_pitchscale()
+ kfn twst_tf_getwaveformk
+
+ if (ileft == 1) then
+ i_, inumbins, i_, i_ pvsinfo fL
+ kamp, kfreqbase pvsbin fL, round:k(kbin * inumbins)
+ kfreq portk kfreqbase * kfreqscale, kporttime
+ aL oscilikt 1, kfreq, kfn
+ endif
+ if (iright == 1) then
+ i_, inumbins, i_, i_ pvsinfo fR
+ kamp, kfreqbase pvsbin fL, round:k(kbin * inumbins)
+ kfreq portk kfreqbase * kfreqscale, kporttime
+ aR oscilikt 1, kfreq, kfn
+ endif
+ outs aL, aR
+endin
+
+opcode _twst_tf_partialreconstruction, a, aikkkikkki
+ ain, ifftsize, kthresh, kminpoints, kmaxgap, imaxtracks, kampscale, kfreqscale, kmaxtracks, ifn xin
+ ffreq, fphase pvsifd ain, ifftsize, ifftsize/4, 1
+ ftrks partials ffreq, fphase, kthresh, kminpoints, kmaxgap, imaxtracks
+ aout resyn ftrks, kampscale, kfreqscale, kmaxtracks, ifn
+ aout dcblock aout
+ xout aout
+endop
+
+instr twst_tf_partialreconstruction
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ifftsize = twst_parami("fftsize")
+ kthresh = twst_param:k("threshold")
+ kminpoints = twst_param:k("minpoints")
+ kmaxgap = twst_param:k("maxgap")
+ imaxtracks = round(twst_parami("anlmaxtracks") * ifftsize * 0.5)
+ kampscale = twst_param:k("ampscale")
+ kfreqscale = twst_tf_pitchscale()
+ kmaxtracks = round:k(twst_param:k("resmaxtracks") * ifftsize * 0.5)
+ ifn = twst_tf_getwaveform()
+ twst_setlatencysamples(ifftsize)
+
+ if (ileft == 1) then
+ aL _twst_tf_partialreconstruction aL, ifftsize, kthresh, kminpoints, kmaxgap, imaxtracks, kampscale, kfreqscale, kmaxtracks, ifn
+ endif
+ if (iright == 1) then
+ aR _twst_tf_partialreconstruction aR, ifftsize, kthresh, kminpoints, kmaxgap, imaxtracks, kampscale, kfreqscale, kmaxtracks, ifn
+ endif
+ outs aL, aR
+endin
+
+opcode _twst_tf_residual, a, aii
+ ain, ifftsize, ihsize xin
+ ffr, fphs pvsifd ain, ifftsize, ihsize, 1
+ ftrk partials ffr, fphs, 0, 1, 3, 500
+ aout sinsyn ftrk, 2, 500, gifnSine
+ asd delayr ifftsize / sr
+ asig deltapn ifftsize - ihsize
+ delayw ain
+ xout asig - aout
+endop
+
+instr twst_tf_residual
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ifftsize = twst_parami("fftsize")
+ twst_setlatencysamples(ifftsize)
+ ihsize = ifftsize / 4
+ if (ileft == 1) then
+ aL _twst_tf_residual aL, ifftsize, ihsize
+ endif
+ if (iright == 1) then
+ aR _twst_tf_residual aR, ifftsize, ihsize
+ endif
+ outs aL, aR
+endin
+
+/* not in WASM
+instr twst_tf_trace
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ inumbins = twst_parami("fftsize") / 2
+ kbins = twst_param("bins") * inumbins
+
+ if (ileft == 1) then
+ foutL pvstrace fL, kbins
+ aL twst_tf_fresynth foutL
+ endif
+ if (iright == 1) then
+ foutR pvstrace fR, kbins
+ aR twst_tf_fresynth foutR
+ endif
+ outs aL, aR
+endin
+*/
+
+instr twst_tf_isolator
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kbin = twst_param("bin")
+ kattenuation = twst_param("attenuation")
+ kgain = twst_param("accentuation")
+
+ if (ileft == 1) then
+ foutL pvsarp fL, kbin, kattenuation, kgain
+ aL twst_tf_fresynth foutL
+ endif
+ if (iright == 1) then
+ foutR pvsarp fR, kbin, kattenuation, kgain
+ aR twst_tf_fresynth foutR
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_blur
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ ktime = twst_param:k("time")
+ if (ileft == 1) then
+ fL1 pvsblur fL, ktime, 3
+ aL twst_tf_fresynth fL1
+ endif
+ if (iright == 1) then
+ fR1 pvsblur fR, ktime, 3
+ aR twst_tf_fresynth fR1
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_spectralautoglitch
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kchangerate = twst_param:k("changerate")
+ kchangechance = twst_param:k("changechance")
+ kporttime = twst_param:k("porttime")
+ kdo_pitchalter = twst_param:k("pitchalter")
+ ifftsize = twst_parami("fftsize")
+
+ twst_setlatencysamples ifftsize
+
+ if (ileft == 1) then
+ aL fx_spectralautoglitch aL, kchangerate, kchangechance, kdo_pitchalter, kporttime, ifftsize
+ endif
+ if (iright == 1) then
+ aR fx_spectralautoglitch aR, kchangerate, kchangechance, kdo_pitchalter, kporttime, ifftsize
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_subtractive
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ifreq = twst_parami("minfreq")
+ ifreqmax = twst_parami("maxfreq")
+ ifreqstepmult = twst_parami("step")
+ ifreqstepmultrand = twst_parami("steprand")
+ iamp = twst_parami("amp")
+ iampmult = twst_parami("ampmult")
+
+ if (ileft == 1) then
+ aL as_subtractive aL, ifreq, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp, iampmult
+ endif
+ if (iright == 1) then
+ aR as_subtractive aR, ifreq, ifreqmax, ifreqstepmult, ifreqstepmultrand, iamp, iampmult
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_phasemash
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ifftsize = twst_parami("fftsize")
+ kphasemode = twst_param:k("phasereplace")
+ kphasevalue = twst_param:k("phasevalue")
+
+ if (kphasemode == 0) then
+ kphasevalue *= 7
+ else
+ kphasevalue = ((kphasevalue * 2) - 1) * 3.141
+ endif
+
+ if (ileft == 1) then
+ aL spc_phasemash aL, kphasemode, kphasevalue, ifftsize
+ endif
+ if (iright == 1) then
+ aR spc_phasemash aR, kphasemode, kphasevalue, ifftsize
+ endif
+ outs aL, aR
+endin
diff --git a/site/udo/twist/transforms/warping.udo b/site/udo/twist/transforms/warping.udo
new file mode 100755
index 0000000..3eb4e6e
--- /dev/null
+++ b/site/udo/twist/transforms/warping.udo
@@ -0,0 +1,210 @@
+#include "/twist/transform_api.udo"
+#include "/sample_level.udo"
+
+instr twst_tf_smphold
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kratio = twst_param:k("ratio")
+ if (ileft == 1) then
+ aL smp_hold aL, kratio
+ endif
+ if (iright == 1) then
+ aR smp_hold aR, kratio
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_fftpitchscale
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kscale = twst_tf_pitchscale()
+ kformant = twst_param:k("formants")
+ kcoefs = twst_param:k("formantcoefs")
+
+ if (ileft == 1) then
+ fL1 pvscale fL, kscale, kformant, 1, kcoefs
+ aL twst_tf_fresynth fL1
+ endif
+ if (iright == 1) then
+ fR1 pvscale fR, kscale, kformant, 1, kcoefs
+ aR twst_tf_fresynth fR1
+ endif
+ outs aL, aR
+endin
+
+opcode _twst_tf_autotune, f, fkkk
+ fsig, kthreshold, kformant, kcoefs xin
+ kfreq, kamp pvspitch fsig, kthreshold
+ if (kfreq > 20) then
+ knote ftom kfreq
+ kscale = cpsmidinn:k(int:k(knote)) / kfreq
+ fsigo pvscale fsig, kscale, kformant, 1, kcoefs
+ else
+ fsigo = fsig
+ endif
+ xout fsigo
+endop
+
+
+instr twst_tf_autotune
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kthreshold = twst_param:k("threshold")
+ kformant = twst_param:k("formants")
+ kcoefs = twst_param:k("formantcoefs")
+
+ if (ileft == 1) then
+ fL1 _twst_tf_autotune fL, kthreshold, kformant, kcoefs
+ aL twst_tf_fresynth fL1
+ endif
+ if (iright == 1) then
+ fR1 _twst_tf_autotune fR, kthreshold, kformant, kcoefs
+ aR twst_tf_fresynth fR1
+ endif
+ outs aL, aR
+endin
+
+
+instr twst_tf_hilbertpitchscale
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ ifftsize = twst_parami("fftsize")
+ kscale = twst_tf_pitchscale()
+ twst_setlatencysamples(ifftsize)
+
+ if (ileft == 1) then
+ ahL1, ahL2 hilbert2 aL, ifftsize, ifftsize / 4
+ amL, afmL fmanal ahL1, ahL2
+ aL oscil amL, afmL * kscale
+ endif
+ if (iright == 1) then
+ ahR1, ahR2 hilbert2 aR, ifftsize, ifftsize / 4
+ amR, afmR fmanal ahR1, ahR2
+ aR oscil amR, afmR * kscale
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_waveset
+ $TWST_TRANSFORM
+ aL, aR, ileft, iright twst_getinput
+ kreps = twst_param:k("reps")
+ if (ileft == 1) then
+ aL waveset aL, kreps
+ endif
+ if (iright == 1) then
+ aR waveset aR, kreps
+ endif
+ outs aL, aR
+endin
+
+instr twst_tf_freeze
+ $TWST_TRANSFORM
+ fL, fR, aL, aR, ileft, iright twst_getfinput
+ kfreezeamp = twst_param:k("freezeamp")
+ kfreezefreq = twst_param:k("freezefreq")
+ if (ileft == 1) then
+ fL1 pvsfreeze fL, kfreezeamp, kfreezefreq
+ aL twst_tf_fresynth fL1
+ endif
+ if (iright == 1) then
+ fR1 pvsfreeze fR, kfreezeamp, kfreezefreq
+ aR twst_tf_fresynth fR1
+ endif
+ outs aL, aR
+endin
+
+instr twst_tfi_sndwarp
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ ireadmode = twst_parami("readmode")
+ kpitchscale = twst_tf_pitchscale()
+ iwinsize = twst_parami("winsize")
+ irandwin = twst_parami("randwin")
+ ioverlap = twst_parami("overlap")
+ ifnWindow = twst_tf_getwintype()
+
+ p3 = ilength
+ if (ireadmode == 0) then
+ atime linseg 0, p3, ilength
+ elseif (ireadmode == 1) then
+ ktime = twst_param:k("readtime")
+ twst_tf_setplayposition ktime
+ atime = a(ktime * ilength)
+ elseif (ireadmode == 2) then
+ itimescale = twst_parami("timescale")
+ p3 = ilength * itimescale
+ atime linseg 0, p3, ilength
+ elseif (ireadmode == 3) then
+ atime linseg ilength, p3, 0
+ endif
+
+ ifnL, ifnR twst_tfi_getfn
+
+ kpitchscale *= ftsr(ifnL) / sr
+ apitchscale = a(kpitchscale)
+ if (ileft == 1) then
+ aL sndwarp 1, atime, apitchscale, ifnL, 0, iwinsize, irandwin, ioverlap, ifnWindow, 1
+ endif
+ if (iright == 1) then
+ aR sndwarp 1, atime, apitchscale, ifnR, 0, iwinsize, irandwin, ioverlap, ifnWindow, 1
+ endif
+ outs aL, aR
+endin
+
+instr twst_tfi_mincer
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+ ifftsize = twst_parami("fftsize")
+ kpitchscale = twst_tf_pitchscale()
+ klock = twst_param:k("phaselock")
+ ireadmode = twst_parami("readmode")
+ idecimation = twst_parami("decimation")
+
+ p3 = ilength
+ if (ireadmode == 0) then
+ atime linseg 0, p3, ilength
+ elseif (ireadmode == 1) then
+ ktime = twst_param:k("readtime")
+ twst_tf_setplayposition ktime
+ atime = a(ktime * ilength)
+ elseif (ireadmode == 2) then
+ itimescale = twst_parami("timescale")
+ p3 = ilength * itimescale
+ atime linseg 0, p3, ilength
+ elseif (ireadmode == 3) then
+ atime linseg ilength, p3, 0
+ endif
+
+ twst_setlatencysamples(ifftsize)
+ ifnL, ifnR twst_tfi_getfn
+ if (ileft == 1) then
+ aL mincer atime, 1, kpitchscale, ifnL, klock, ifftsize, idecimation
+ endif
+ if (iright == 1) then
+ aR mincer atime, 1, kpitchscale, ifnR, klock, ifftsize, idecimation
+ endif
+ outs aL, aR
+endin
+
+instr twst_tfi_paulstretch
+ $TWST_TRANSFORM
+ ileft, iright, istartsamp, iendsamp, idocut, ilength twst_tf_getstate
+
+ istretch = twst_parami("stretch")
+ iwinsize = twst_parami("winsize")
+ iduration = ilength * istretch
+ p3 = iduration
+
+ twst_setlatencyseconds iwinsize
+
+ ifnL, ifnR twst_tfi_getfn
+
+ if (ileft == 1) then
+ aL paulstretch istretch, iwinsize, ifnL
+ endif
+ if (iright == 1) then
+ aR paulstretch istretch, iwinsize, ifnR
+ endif
+ outs aL, aR
+endin
diff --git a/site/udo/twist/twist.udo b/site/udo/twist/twist.udo
new file mode 100755
index 0000000..34fa7cb
--- /dev/null
+++ b/site/udo/twist/twist.udo
@@ -0,0 +1,1304 @@
+#ifndef UDO_TWIST
+#define UDO_TWIST ##
+/*
+ Twist
+ Waveform editor and transformer
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+#include "/table_tools.udo"
+#include "/host_platform.udo"
+#include "/wavetables.udo"
+#include "/interop.udo"
+#include "/bussing.udo"
+#include "/chop.udo"
+#include "/transient_detect.udo"
+
+#ifdef TWST_FAILONLAG
+#include "/lagdetect.udo"
+#end
+
+gitwst_userstopped = 0
+imaxinstances = 16
+gitwst_instanceindex = 0
+gitwst_channels[] init imaxinstances
+gitwst_duration[] init imaxinstances
+gitwst_bufferL[] init imaxinstances
+gitwst_bufferR[] init imaxinstances
+
+gitwst_copyBufferL = 0
+gitwst_copyBufferR = 0
+
+gitwst_tf_state[] init 7
+
+#include "/twist/checkpointing.udo"
+
+opcode twst_clearbuffers, 0, jj
+ ibufferL, ibufferR xin
+ ibufferL = (ibufferL == -1) ? gitwst_bufferL[gitwst_instanceindex] : ibufferL
+ ibufferR = (ibufferR == -1) ? gitwst_bufferR[gitwst_instanceindex] : ibufferR
+
+ if (ibufferL > 0 && ftexists(ibufferL) == 1) then
+ ftfree ibufferL, 1
+ endif
+ if (ibufferR > 0 && ftexists(ibufferR) == 1) then
+ ftfree ibufferR, 1
+ endif
+endop
+
+opcode twst_samplestoratio, ii, iij
+ istart, iend, instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ itotallen = ftlen(gitwst_bufferL[instanceindex])
+ if (istart > 1 && iend > 1) then
+ istart /= itotallen
+ iend /= itotallen
+ endif
+ xout istart, iend
+endop
+
+opcode twst_getstartend, iii, iij
+ istart, iend, instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ itotallen = ftlen(gitwst_bufferL[instanceindex])
+ if (istart <= 1 && iend <= 1) then
+ istart *= itotallen
+ iend *= itotallen
+ ilen = int(iend - istart)
+ istart = int(istart)
+ iend = int(iend)
+ else
+ istart = max(0, istart)
+ iend = min(itotallen, iend)
+ ilen = iend - istart
+ endif
+ xout istart, ilen, iend
+endop
+
+opcode twst_getstartend, ii, iij
+ istart, iend, instanceindex xin
+ istart, ilen, iend twst_getstartend istart, iend, instanceindex
+ xout istart, ilen
+endop
+
+#include "/twist/transform_api.udo"
+
+opcode twst_createoverviewsextra, S, iSjjjp
+ icbid, Sextra, iselstart, iselend, instanceindex, istatus xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+
+ iduration = ftlen(gitwst_bufferL[instanceindex]) / ftsr(gitwst_bufferL[instanceindex])
+ if (qnan(iduration) == 1) then
+ iduration = 1
+ endif
+ gitwst_duration[instanceindex] = iduration
+ Sresponse = sprintf("{\"cbid\":%d,\"status\":%d,\"waveL\":%d,\"duration\":%f,\"undolevel\":%d", icbid, istatus, gitwst_bufferL[instanceindex], iduration, gitwst_checkpointstate[instanceindex])
+ if (gitwst_channels[instanceindex] == 2) then
+ Sresponse = strcat(Sresponse, sprintf(",\"waveR\":%d", gitwst_bufferR[instanceindex]))
+ endif
+
+ if (iselstart != -1 && iselend != -1) then
+ iselstart, iselend twst_samplestoratio iselstart, iselend, instanceindex
+ Sresponse = strcat(Sresponse, sprintf(",\"selstart\":%f,\"selend\":%f", iselstart, iselend))
+ endif
+
+ if (strcmp(Sextra, "") != 0) then
+ Sresponse = strcat(Sresponse, strcat(",", Sextra))
+ endif
+
+ xout strcat(Sresponse, "}")
+endop
+
+opcode twst_createoverviews, S, ijjp
+ icbid, iselstart, iselend, istatus xin
+ Sresponse twst_createoverviewsextra icbid, "", iselstart, iselend, -1, istatus
+ xout Sresponse
+endop
+
+
+opcode twst_failresponse, S, ij
+ icbid, istatus xin
+ xout sprintf("{\"cbid\":%d,\"status\":%d}", icbid, istatus)
+endop
+
+instr twst_successresponse
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+ turnoff
+endin
+
+instr twst_checkalive
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\": %d}", icbid))
+ turnoff
+endin
+
+opcode twst_setapplymode, aa, iaaaa
+ iuniqueid, aLorig, aRorig, aLnew, aRnew xin
+ kapplymode chnget sprintf("applymode%d", iuniqueid)
+ kdry chnget sprintf("applymodedry%d", iuniqueid)
+ kwet chnget sprintf("applymodewet%d", iuniqueid)
+ khpf chnget sprintf("applymodehpf%d", iuniqueid)
+ klpf chnget sprintf("applymodelpf%d", iuniqueid)
+
+ ; applymode 0 is replace
+ if (kapplymode == 1) then ; mix
+ aLnew = (aLorig * kdry) + (aLnew * kwet)
+ aRnew = (aRorig * kdry) + (aRnew * kwet)
+ elseif (kapplymode == 2) then ; modulate
+ aLnew = aLorig * aLnew
+ aRnew = aRorig * aRnew
+ elseif (kapplymode == 3) then ; demodulate
+ aLnew = tanh(aLorig / aLnew)
+ aRnew = tanh(aRorig / aRnew)
+ elseif (kapplymode == 4) then ; filter mix
+ kbw = klpf - khpf
+ kfreq = khpf + (kbw / 2)
+ aLbp butterbp aLnew, kfreq, kbw
+ aLbr butterbr aLorig, kfreq, kbw
+ aRbp butterbp aRnew, kfreq, kbw
+ aRbr butterbr aRorig, kfreq, kbw
+ aLnew = aLbp + aLbr
+ aRnew = aRbp + aRbr
+ endif
+ xout aLnew, aRnew
+endop
+
+
+opcode twst_playback, iaaiiiii, iiiSiioooOPo
+ istart, iend, ichannel, Stransform, ioffline, iautomating, icrossfadein, icrossfadeout, iuniqueid xin
+ itransforming = strcmp(Stransform, "")
+ if (istart == iend) then
+ istart = istart
+ iend = 1
+ endif
+
+ istatus = 1
+ itfi = (strcmp(strsub(Stransform, 5, 8), "tfi") == 0) ? 1 : 0
+ ibuflen = ftlen(gitwst_bufferL[gitwst_instanceindex])
+ istartsamp = ibuflen * istart
+ iendsamp = ibuflen * iend
+ iendsampw = iendsamp
+ ilensamp = iendsamp - istartsamp
+ iextracycles = 0
+ idurations = ilensamp / ftsr(gitwst_bufferL[gitwst_instanceindex])
+ p3 = idurations
+ icrossfadeins = idurations * icrossfadein
+ icrossfadeouts = idurations * icrossfadeout
+
+ ileft = 1
+ iright = 1
+ if (ichannel == 0 || gitwst_channels[gitwst_instanceindex] == 1) then
+ iright = 0
+ elseif (ichannel == 1 && gitwst_channels[gitwst_instanceindex] == 2) then
+ ileft = 0
+ endif
+
+ if (ioffline == 1) then
+ idelaysamples = gitwst_tf_state[5]
+ if (idelaysamples > 0) then
+ idelays = idelaysamples / sr
+ iextracycles = round(kr * idelays)
+ else
+ idelays = 0
+ endif
+ else
+ idelaysamples = 0
+ iextracycles = 0
+ idelays = 0
+ endif
+
+ gitwst_tf_state[0] = ileft
+ gitwst_tf_state[1] = iright
+ gitwst_tf_state[2] = istartsamp
+ gitwst_tf_state[3] = iendsamp
+ gitwst_tf_state[5] = 0 ; latency for fft processing etc
+ gitwst_tf_state[6] = ioffline
+
+ aL init 0
+ aR init 0
+ ifnL = gitwst_bufferL[gitwst_instanceindex]
+ ifnR = gitwst_bufferR[gitwst_instanceindex]
+ ifnTargetL = gitwst_bufferL[gitwst_instanceindex]
+ ifnTargetR = gitwst_bufferR[gitwst_instanceindex]
+
+ if (itfi == 1) then
+ idocut = 0
+ if (istart != 0 && iend != 1) then
+ idocut = 1
+ endif
+
+ ; only 4 pfields in subinstr allowed
+ gitwst_tf_state[4] = idocut
+ aoutL, aoutR subinstr Stransform, iuniqueid
+ ; aoutL, aoutR twst_setapplymode iuniqueid, aL, aR, aoutL, aoutR ; no applymode for tfi
+ if (iautomating == 1) then
+ a_ subinstr "twst_automaterun"
+ endif
+
+ if (ioffline == 1) then
+ itargetlen = int(p3 * sr)
+ iextracycles += (p3 * kr)
+ iendsampw = istartsamp + itargetlen
+
+ if (p3 != idurations) then
+ inewlen = (ftlen(gitwst_bufferL[gitwst_instanceindex]) - ilensamp) + itargetlen
+ if (inewlen >= gihost_max32bitftlen) then ; limitation with WASM Csound build at the moment
+ istatus = -2
+ goto complete
+ endif
+
+ ifnTargetL ftgen 0, 0, -inewlen, -2, 0
+ ifnTargetR ftgen 0, 0, -inewlen, -2, 0
+
+ if (istartsamp != 0) then ; copy part before commit
+ indexr = 0
+ indexw = 0
+ while (indexw < istartsamp - 1) do
+ if (ileft == 1) then
+ tabw_i tab_i(indexr, gitwst_bufferL[gitwst_instanceindex]), indexw, ifnTargetL
+ endif
+ if (iright == 1) then
+ tabw_i tab_i(indexr, gitwst_bufferR[gitwst_instanceindex]), indexw, ifnTargetR
+ endif
+ indexr += 1
+ indexw += 1
+ od
+
+/* aliasing from ftslice???
+ if (ileft == 1) then
+ ftslicei gitwst_bufferL[gitwst_instanceindex], ifnTargetL, 0, istartsamp, 1
+ endif
+ if (iright == 1) then
+ ftslicei gitwst_bufferR[gitwst_instanceindex], ifnTargetR, 0, istartsamp, 1
+ endif
+*/
+ endif
+
+ if (iendsampw < ftlen(ifnTargetL)) then ; copy part after commit
+ indexr = iendsamp + 1
+ indexw = iendsampw + 1
+ while (indexw < inewlen - 1) do
+ if (ileft == 1) then
+ tabw_i tab_i(indexr, gitwst_bufferL[gitwst_instanceindex]), indexw, ifnTargetL
+ endif
+ if (iright == 1) then
+ tabw_i tab_i(indexr, gitwst_bufferR[gitwst_instanceindex]), indexw, ifnTargetR
+ endif
+ indexr += 1
+ indexw += 1
+ od
+ endif
+ else
+ inewlen = ibuflen
+ endif
+ endif
+ idurations = p3
+
+ else ; is not tfi
+ inewlen = ibuflen ;ilensamp
+ aposr linseg istartsamp, idurations, iendsampw ;iendsamp
+
+ if (ileft == 1) then
+ aL table3 aposr, ifnL
+ endif
+ if (iright == 1) then
+ aR table3 aposr, ifnR
+ endif
+
+ if (itransforming == 1) then
+ if (iautomating == 1) then
+ a_ subinstr "twst_automaterun"
+ endif
+ chnset aL, "twstfeedL"
+ chnset aR, "twstfeedR"
+ aoutL, aoutR subinstr Stransform, iuniqueid
+ aoutL, aoutR twst_setapplymode iuniqueid, aL, aR, aoutL, aoutR
+ else
+ aoutL = aL
+ aoutR = aR
+ endif
+ endif ; end not tfi
+
+ if (ioffline == 0) then
+ chnset -1, "twst_tfplayposratio"
+ kplayposratio chnget "twst_tfplayposratio"
+ if (kplayposratio >= 0) then
+ chnset (kplayposratio * (iend - istart)) + istart, "twst_playposratio"
+ else
+ ktimeenv linseg istart, p3, iend
+ chnset ktimeenv, "twst_playposratio"
+ endif
+ endif
+
+
+ if ((icrossfadein != 0 || icrossfadeout != 0) && (icrossfadein + icrossfadeout) < 1) then
+ icrossfadeins = max(0.0000001, icrossfadeins) ; god damn times can't seem to be 0 in linseg
+ icrossfademids = idurations - (icrossfadeins + icrossfadeouts)
+ icrossfademids = max(0.0000001, icrossfademids)
+ icrossfadeouts = max(0.0000001, icrossfadeouts)
+
+ if (itfi == 1) then
+ imidsamp1 = istartsamp + (icrossfadeins * sr)
+ imidsamp2 = iendsamp - (icrossfadeouts * sr)
+ if (idelays != 0) then
+ aposr linseg istartsamp, idelays, istartsamp, icrossfadeins, imidsamp1, icrossfademids, imidsamp2, icrossfadeouts, iendsamp
+ else
+ aposr linseg istartsamp, icrossfadeins, imidsamp1, icrossfademids, imidsamp2, icrossfadeouts, iendsamp
+ endif
+ if (ileft == 1) then
+ aL table3 aposr, ifnL
+ endif
+ if (iright = 1) then
+ aR table3 aposr, ifnR
+ endif
+
+ endif
+
+ if (idelays != 0) then
+ acrossfade linseg 0, idelays, 0, icrossfadeins, 1, icrossfademids, 1, icrossfadeouts, 0
+ else
+ acrossfade linseg 0, icrossfadeins, 1, icrossfademids, 1, icrossfadeouts, 0
+ endif
+
+ if (ileft == 1) then
+ aoutL = (aL * (1 - acrossfade)) + (aoutL * acrossfade)
+ endif
+ if (iright == 1) then
+ aoutR = (aR * (1 - acrossfade)) + (aoutR * acrossfade)
+ endif
+ endif
+
+ if (chnget:i("twst_dcblockoutputs") == 1) then
+ aoutL dcblock2 aoutL
+ aoutR dcblock2 aoutR
+ endif
+
+ if (chnget:i("twst_tanhoutputs") == 1) then
+ aoutL tanh aoutL
+ aoutR tanh aoutR
+ endif
+
+ anull init 0
+ if (ioffline == 1) then
+ if (itfi == 1) then
+ iendsampw = (idurations * sr) + istartsamp
+ endif
+
+ if (idelays != 0) then
+ aposw linseg istartsamp, idelays, istartsamp, idurations, iendsampw
+ else
+ aposw linseg istartsamp, idurations, iendsampw
+ endif
+
+ if (ileft == 1) then
+ tablew aoutL, aposw, ifnTargetL
+ endif
+ if (iright == 1) then
+ tablew aoutR, aposw, ifnTargetR
+ endif
+ amonitorL = anull
+ amonitorR = anull
+ else
+ amonitorL = aoutL
+ if (gitwst_channels[gitwst_instanceindex] == 1) then
+ amonitorR = amonitorL
+ else
+ amonitorR = aoutR
+ endif
+ endif
+
+ inewlen = ftlen((ifnTargetL > 0) ? ifnTargetL : ifnTargetR)
+
+complete:
+ xout istatus, amonitorL, amonitorR, ifnTargetL, ifnTargetR, iextracycles, istartsamp / inewlen, iendsampw / inewlen
+endop
+
+
+
+instr twst_setinstance
+ icbid = p4
+ gitwst_instanceindex = p5
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+ turnoff
+endin
+
+opcode twst_copy, k, opjj
+ istart, iend, ichannel, instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+
+ istart, ilen, iend twst_getstartend istart, iend
+
+ twst_clearbuffers(gitwst_copyBufferL, gitwst_copyBufferR)
+ gitwst_copyBufferL = -1
+ gitwst_copyBufferR = -1
+
+ if (gitwst_channels[instanceindex] == 2 && ichannel == -1) then
+ kdone, gitwst_copyBufferL, gitwst_copyBufferR chop_copyk istart, ilen, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex]
+ elseif (ichannel == 1) then
+ kdone, gitwst_copyBufferR, i_ chop_copyk istart, ilen, gitwst_bufferR[instanceindex]
+ else
+ kdone, gitwst_copyBufferL, i_ chop_copyk istart, ilen, gitwst_bufferL[instanceindex]
+ endif
+ xout kdone
+endop
+
+instr twst_copy
+ icbid = p4
+ istart = p5
+ iend = p6
+ ichannel = p7
+ inocheckpoint = p8
+
+ kdone twst_copy istart, iend, ichannel
+ if (kdone == 1) then
+ schedulek("twst_successresponse", 0, 1, icbid)
+ turnoff
+ endif
+endin
+
+
+opcode twst_trim, k, opjj
+ istart, iend, ichannel, instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ istart, ilen, iend twst_getstartend istart, iend
+
+ kdone init 0
+ kdone, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex] chop_trimk istart, ilen, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex]
+ xout kdone
+endop
+
+instr twst_trim
+ icbid = p4
+ istart = p5
+ iend = p6
+ ichannel = p7
+ inocheckpoint = p8
+
+ if (inocheckpoint == 0) then
+ twst_checkpoint()
+ endif
+
+ kdone twst_trim istart, iend, ichannel
+ if (kdone == 1) then
+ schedulek("twst_overviews_response", 0, 1, icbid, 0, 1)
+ turnoff
+ endif
+endin
+
+
+opcode twst_cut, ki, opjj
+ istart, iend, ichannel, instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ istart, ilen, iend twst_getstartend istart, iend
+
+ twst_clearbuffers(gitwst_copyBufferL, gitwst_copyBufferR)
+ gitwst_copyBufferL = -1
+ gitwst_copyBufferR = -1
+ kdone init 0
+
+ if (gitwst_channels[instanceindex] == 2) then
+ if (ichannel == -1) then
+ kdone, gitwst_copyBufferL, gitwst_copyBufferR, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex] chop_cutk istart, ilen, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex]
+ elseif (ichannel == 0) then
+ kdone1, gitwst_copyBufferL, i_ chop_copyk istart, ilen, gitwst_bufferL[instanceindex]
+ kdone chop_setsilencek istart, ilen, gitwst_bufferL[instanceindex], -1, kdone1
+ elseif (ichannel == 1) then
+ kdone1, gitwst_copyBufferR, i_ chop_copyk istart, ilen, gitwst_bufferR[instanceindex]
+ kdone chop_setsilencek istart, ilen, gitwst_bufferR[instanceindex], -1, kdone1
+ endif
+ else
+ kdone, gitwst_copyBufferL, i_, gitwst_bufferL[instanceindex], i_ chop_cutk istart, ilen, gitwst_bufferL[instanceindex]
+ endif
+
+ inewlen = ftlen(gitwst_bufferL[instanceindex])
+ xout kdone, istart / inewlen
+endop
+
+
+
+instr twst_overviews_response
+ icbid = p4
+ iselstart = p5
+ iselend = p6
+ io_sendstring("callback", twst_createoverviews(icbid, iselstart, iselend))
+ turnoff
+endin
+
+instr twst_cut
+ icbid = p4
+ istart = p5
+ iend = p6
+ ichannel = p7
+ inocheckpoint = p8
+
+ if (inocheckpoint == 0) then
+ twst_checkpoint()
+ endif
+
+ kdone, istart twst_cut istart, iend, ichannel
+ if (kdone == 1) then
+ schedulek("twst_overviews_response", 0, 1, icbid, istart, istart)
+ turnoff
+ endif
+endin
+
+
+opcode twst_delete, ki, opjj
+ istart, iend, ichannel, instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ istart, ilen, iend twst_getstartend istart, iend
+ kdone init 0
+
+ if (gitwst_channels[instanceindex] == 2) then
+ if (ichannel == -1) then
+ kdone, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex] chop_deletek istart, ilen, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex]
+ elseif (ichannel == 0) then
+ kdone chop_setsilencek istart, ilen, gitwst_bufferL[instanceindex]
+ elseif (ichannel == 1) then
+ kdone chop_setsilencek istart, ilen, gitwst_bufferR[instanceindex]
+ endif
+ else
+ kdone, gitwst_bufferL[instanceindex], i_ chop_deletek istart, ilen, gitwst_bufferL[instanceindex]
+ endif
+
+ inewlen = ftlen(gitwst_bufferL[instanceindex])
+ xout kdone, istart / inewlen
+endop
+
+
+instr twst_delete
+ icbid = p4
+ istart = p5
+ iend = p6
+ ichannel = p7
+ inocheckpoint = p8
+
+ if (inocheckpoint == 0) then
+ twst_checkpoint()
+ endif
+
+ kdone, istart twst_delete istart, iend, ichannel
+ if (kdone == 1) then
+ schedulek("twst_overviews_response", 0, 1, icbid, istart, istart)
+ turnoff
+ endif
+endin
+
+opcode twst_trypaste, ikii, ojjpo
+ istart, ichannel, instanceindex, inumber, imix xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ istart, ilen, iend twst_getstartend istart, 1
+ inewlen = ftlen(gitwst_bufferL[instanceindex]) + (ftlen(gitwst_copyBufferL) * inumber)
+
+ if (inewlen >= gihost_max32bitftlen) then ; limitation with WASM Csound build at the moment
+ iresponse = -2
+ goto complete
+ elseif (gitwst_copyBufferL < 1 && gitwst_copyBufferR < 1) then
+ iresponse = -1
+ goto complete
+ endif
+
+ kdone init 0
+ if (gitwst_channels[instanceindex] == 1) then
+ kdone, gitwst_bufferL[instanceindex], i_, ipastelen chop_pastek gitwst_copyBufferL, -1, gitwst_bufferL[instanceindex], -1, istart, inumber, imix
+ elseif (gitwst_copyBufferR > 0 && ichannel == -1) then
+ kdone, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex], ipastelen chop_pastek gitwst_copyBufferL, gitwst_copyBufferR, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex], istart, inumber, imix
+ elseif (ichannel == 0) then
+ isrc = (gitwst_copyBufferL > 0) ? gitwst_copyBufferL : gitwst_copyBufferR
+ kdone1, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex], ipastelen chop_pastek isrc, isrc, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex], istart, inumber, imix
+ kdone chop_setsilencek istart, ilen, gitwst_bufferR[instanceindex], -1, kdone1
+ elseif (ichannel == 1) then
+ isrc = (gitwst_copyBufferR > 0) ? gitwst_copyBufferR : gitwst_copyBufferL
+ kdone1, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex], ipastelen chop_pastek isrc, isrc, gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex], istart, inumber, imix
+ kdone chop_setsilencek istart, ilen, gitwst_bufferL[instanceindex], -1, kdone1
+ endif
+ iresponse = 1
+ inewlen = ftlen(gitwst_bufferL[instanceindex])
+
+complete:
+ xout iresponse, kdone, istart, (istart + ipastelen)
+endop
+
+opcode twst_paste, k, ojjp
+ istart, ichannel, instanceindex, inumber xin
+ istatus, kdone, istart, iend twst_trypaste istart, ichannel, instanceindex, inumber
+ xout kdone
+endop
+
+
+instr twst_paste
+ icbid = p4
+ istart = p5
+ iend = p6
+ ichannel = p7
+ inocheckpoint = p8
+
+ if (inocheckpoint == 0) then
+ twst_checkpoint()
+ endif
+
+ istatus, kdone, istart, iend twst_trypaste istart, ichannel
+ if (istatus < 0) then
+ io_sendstring("callback", twst_failresponse(icbid, istatus))
+ turnoff
+ else
+ if (kdone == 1) then
+ schedulek("twst_overviews_response", 0, 1, icbid, istart, iend)
+ turnoff
+ endif
+ endif
+endin
+
+
+
+instr twst_pastespecial
+ icbid = p4
+ istart = p5
+ iend = p6
+ ichannel = p7
+ inocheckpoint = p8
+
+ if (inocheckpoint == 0) then
+ twst_checkpoint()
+ endif
+
+ inumber = chnget:i(sprintf("%s_repetitions0", nstrstr(p1)))
+ inumber = (inumber < 1) ? 1 : inumber
+ imix = chnget:i(sprintf("%s_mixpaste0", nstrstr(p1)))
+ istatus, kdone, istart, iend twst_trypaste istart, ichannel, -1, inumber, imix
+ if (istatus < 0) then
+ io_sendstring("callback", twst_failresponse(icbid, istatus))
+ turnoff
+ else
+ if (kdone == 1) then
+ schedulek("twst_overviews_response", 0, 1, icbid, istart, iend)
+ turnoff
+ endif
+ endif
+endin
+
+
+instr twst_nexttransientresponse
+ icbid = p4
+ iselstart = p5
+ iselend = p6
+ if (iselstart == -1 && iselend == -1) then
+ io_sendstring("callback", sprintf("{\"cbid\":%d}", icbid))
+ else
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"selstart\":%f,\"selend\":%f}", icbid, iselstart, iselend))
+ endif
+ turnoff
+endin
+
+instr twst_nexttransient
+ icbid = p4
+ istart = p5
+ iend = p6
+ ichannel = p7
+ p3 = 60
+
+ instanceindex = gitwst_instanceindex
+ isamps = ftlen(gitwst_bufferL[instanceindex])
+
+ istartsamp = iend * isamps
+ idurationsamp = isamps - istartsamp
+ idurations = idurationsamp / sr
+
+ ileft = 1
+ iright = 1
+ if (ichannel == 0 || gitwst_channels[gitwst_instanceindex] == 1) then
+ iright = 0
+ elseif (ichannel == 1 && gitwst_channels[gitwst_instanceindex] == 2) then
+ ileft = 0
+ endif
+
+ ktimek timeinstk
+ ikcycles = idurationsamp / ksmps
+ if (ktimek == 1) then
+ kcount init 0
+ while (kcount < ikcycles) do
+ apos linseg istartsamp, idurations, isamps
+ if (ileft == 1 && iright == 1) then
+ asig = (table3:a(apos, gitwst_bufferL[instanceindex]) + table3:a(apos, gitwst_bufferR[instanceindex])) * 0.5
+ elseif (iright == 1) then
+ asig = table3:a(apos, gitwst_bufferR[instanceindex])
+ else
+ asig = table3:a(apos, gitwst_bufferL[instanceindex])
+ endif
+ ktrig transientdetect asig
+ if (ktrig == 1 && kcount != 0) then
+ kselend = ((kcount * ksmps) + istartsamp) / isamps
+ kselstart = (istart == iend) ? kselend : istart
+ schedulek("twst_nexttransientresponse", 0, 1, icbid, kselstart, kselend)
+ turnoff
+ endif
+ kcount += 1
+ od
+ else
+ schedulek("twst_nexttransientresponse", 0, 1, icbid, -1, -1)
+ turnoff
+ endif
+endin
+
+
+instr twst_undo
+ icbid = p4
+ istatus twst_undo
+ if (istatus < 0) then
+ Sresponse = twst_failresponse(icbid)
+ else
+ Sresponse = twst_createoverviews(icbid)
+ endif
+
+ io_sendstring("callback", Sresponse)
+ turnoff
+endin
+
+
+instr twst_destroytables
+ ifnL = p4
+ ifnR = p5
+ twst_clearbuffers(ifnL, ifnR)
+ turnoff
+endin
+
+
+opcode twst_loadfile, ik, Sj
+ Spath, instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ kdone init 0
+ if (filevalid(Spath) != 1) then
+ iresponse = -1
+ goto complete
+ endif
+
+ ifilesr = filesr(Spath)
+ ifilechannels = filenchnls(Spath)
+ ilens = filelen(Spath)
+ ilen = round(ilens * ifilesr)
+
+ if (ilen >= gihost_max32bitftlen || ilens * sr >= gihost_max32bitftlen) then ; limitation with WASM Csound build at the moment
+ iresponse = -2
+ goto complete
+ endif
+
+ twst_checkpoint_clear(instanceindex)
+
+ twst_clearbuffers(gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex])
+ gitwst_channels[instanceindex] = ifilechannels
+
+ gitwst_bufferL[instanceindex] = ftgen(0, 0, -ilen, 1, Spath, 0, 0, 1)
+ if (gitwst_channels[instanceindex] == 2) then
+ gitwst_bufferR[instanceindex] = ftgen(0, 0, -ilen, 1, Spath, 0, 0, 2)
+ gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex], kdone tab_samplerateconvert gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex]
+ imono = 0
+ else
+ gitwst_bufferL[instanceindex], kdone tab_samplerateconvert gitwst_bufferL[instanceindex]
+ imono = 1
+ endif
+
+
+ iresponse = 1
+complete:
+ xout iresponse, kdone
+endop
+
+
+/*
+opcode twst_loadfile, ik, Sj
+ Spath, instanceindex xin
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ kdone init 0
+ if (filevalid(Spath) != 1) then
+ iresponse = -1
+ goto complete
+ endif
+
+ ifilesr = filesr(Spath)
+ ifilechannels = filenchnls(Spath)
+ ilens = filelen(Spath)
+ ilen = round(ilens * ifilesr)
+
+ if (ilen >= gihost_max32bitftlen || ilens * sr >= gihost_max32bitftlen) then ; limitation with WASM Csound build at the moment
+ iresponse = -2
+ goto complete
+ endif
+
+ twst_checkpoint_clear(instanceindex)
+
+ gitwst_channels[instanceindex] = ifilechannels
+ twst_clearbuffers(gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex])
+
+ gitwst_bufferL[instanceindex] = ftgen(0, 0, -ilen, 1, Spath, 0, 0, 1)
+ if (gitwst_channels[instanceindex] == 2) then
+ gitwst_bufferR[instanceindex] = ftgen(0, 0, -ilen, 1, Spath, 0, 0, 2)
+ imono = 0
+ else
+ imono = 1
+ endif
+
+ if (sr != ifilesr) then ; different sr causes issues in table reading opcodes, convert..
+ inewlen = ilens * sr
+ ifnnewL ftgen 0, 0, -inewlen, -2, 0
+ if (imono == 0) then
+ ifnnewR ftgen 0, 0, -inewlen, -2, 0
+ endif
+ ktimek timeinstk
+ ikcycles = ilens * kr
+ if (ktimek == 1) then
+ kcount = 0
+ while (kcount < ikcycles) do
+ aposw linseg 0, ilens, inewlen - 1
+ aposr linseg 0, ilens, ilen - 1
+ asig table3 aposr, gitwst_bufferL[instanceindex]
+ tablew asig, aposw, ifnnewL
+ if (imono == 0) then
+ asig table3 aposr, gitwst_bufferR[instanceindex]
+ tablew asig, aposw, ifnnewR
+ endif
+ kcount += 1
+ od
+ else
+ kdone = 1
+ endif
+
+ ftfree gitwst_bufferL[instanceindex], 1
+ gitwst_bufferL[instanceindex] = ifnnewL
+ if (imono == 0) then
+ ftfree gitwst_bufferR[instanceindex], 1
+ gitwst_bufferR[instanceindex] = ifnnewR
+ endif
+ else
+ kdone = 1
+ endif
+
+ iresponse = 1
+complete:
+ xout iresponse, kdone
+endop
+*/
+
+instr twst_loadclipboard
+ icbid = p4
+ p3 = 60
+
+ instanceindex = gitwst_instanceindex
+ twst_clearbuffers(gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex])
+
+ ilen = ftlen(gitwst_copyBufferL)
+ ifnL ftgen 0, 0, -ilen, -2, 0
+ tableicopy ifnL, gitwst_copyBufferL
+ gitwst_bufferL[instanceindex] = ifnL
+ if (gitwst_copyBufferR > 0 && ftexists(gitwst_copyBufferR) == 1) then
+ ifnR ftgen 0, 0, -ilen, -2, 0
+ tableicopy ifnR, gitwst_copyBufferR
+ gitwst_bufferR[instanceindex] = ifnR
+ gitwst_channels[instanceindex] = 2
+ else
+ gitwst_channels[instanceindex] = 1
+ gitwst_bufferR[instanceindex] = 0
+ endif
+ schedule("twst_overviews_response", 0, 1, icbid, 0, 0)
+ turnoff
+endin
+
+instr twst_loadftable
+ icbid = p4
+ ifnL = p5
+ ifnR = p6
+ iclearbuffers = p7
+ p3 = 60
+ instanceindex = gitwst_instanceindex
+
+ if (ifnL <= 0 || ftexists(ifnL) == 0 || (ifnR > 0 && ftexists(ifnR) == 0)) then
+ io_sendstring("callback", twst_failresponse(icbid, -1))
+ turnoff
+ endif
+
+ twst_checkpoint_clear(instanceindex)
+
+ if (iclearbuffers == 1) then
+ twst_clearbuffers(gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex])
+ endif
+
+ gitwst_bufferL[instanceindex] = ifnL
+ if (ifnR > 0) then
+ gitwst_bufferR[instanceindex] = ifnR
+ gitwst_channels[instanceindex] = 2
+ else
+ gitwst_channels[instanceindex] = 1
+ endif
+
+ schedule("twst_overviews_response", 0, 1, icbid, 0, 0)
+ turnoff
+endin
+
+instr twst_getbuffers
+ icbid = p4
+ instanceindex = gitwst_instanceindex
+ if (gitwst_channels[instanceindex] == 2) then
+ Stables = sprintf("[%d,%d]", gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex])
+ else
+ Stables = sprintf("[%d]", gitwst_bufferL[instanceindex])
+ endif
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1,\"tables\":%s}", icbid, Stables))
+ turnoff
+endin
+
+
+instr twst_loadfile
+ icbid = p4
+ p3 = 120
+ Spath = strget(p5)
+ istatus, kdone twst_loadfile Spath, -1, 1
+ if (istatus < 0) then
+ Sresponse = twst_failresponse(icbid, istatus)
+ io_sendstring("callback", Sresponse)
+ turnoff
+ else
+ if (kdone == 1) then
+ schedulek("twst_overviews_response", 0, 1, icbid, 0, 0)
+ turnoff
+ endif
+ endif
+endin
+
+
+
+/*
+instr twst_loadfile
+ icbid = p4
+ Spath = strget(p5)
+ if (filevalid(Spath) != 1) then
+ Sresponse = twst_failresponse(icbid)
+ else
+ twst_clearbuffers()
+ gitwst_channels[gitwst_instanceindex] = filenchnls(Spath)
+ gitwst_bufferL[gitwst_instanceindex] = ftgen(0, 0, 0, 1, Spath, 0, 0, 1)
+ if (gitwst_channels[gitwst_instanceindex] == 2) then
+ gitwst_bufferR[gitwst_instanceindex] = ftgen(0, 0, 0, 1, Spath, 0, 0, 2)
+ endif
+ Sresponse = twst_createoverviews(icbid)
+ endif
+ io_sendstring("callback", Sresponse)
+ turnoff
+endin
+*/
+
+
+
+opcode twst_createempty, i, ijj
+ iduration, ichannels, instanceindex xin
+ ichannels = (ichannels == -1) ? 2 : ichannels
+ instanceindex = (instanceindex == -1) ? gitwst_instanceindex : instanceindex
+ twst_clearbuffers(gitwst_bufferL[instanceindex], gitwst_bufferR[instanceindex])
+ idurationsamps = iduration * sr
+
+ if (idurationsamps >= gihost_max32bitftlen) then ; limitation with WASM Csound build at the moment
+ iresponse = -2
+ goto complete
+ endif
+
+ twst_checkpoint_clear(instanceindex)
+
+ gitwst_bufferL[instanceindex] ftgen 0, 0, -idurationsamps, -2, 0
+ if (ichannels == 2) then
+ gitwst_channels[instanceindex] = 2
+ gitwst_bufferR[instanceindex] ftgen 0, 0, -idurationsamps, -2, 0
+ else
+ gitwst_channels[instanceindex] = 1
+ endif
+ iresponse = 1
+complete:
+ xout iresponse
+endop
+
+
+instr twst_createempty
+ icbid = p4
+ iduration = p5
+ ichannels = p6
+ p3 = 60
+ istatus twst_createempty iduration, ichannels
+ if (istatus < 0) then
+ io_sendstring("callback", twst_failresponse(icbid, istatus))
+ else
+ schedule("twst_overviews_response", 0, 1, icbid, 0, 0)
+ endif
+ turnoff
+endin
+
+
+instr twst_savefile_response
+ icbid = p4
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+ turnoff
+endin
+
+
+instr twst_savefile
+ icbid = p4
+ p3 = 60
+ Spath = strget(p5)
+ ktimek timeinstk
+ idurations = ftlen(gitwst_bufferL[gitwst_instanceindex]) / ftsr(gitwst_bufferL[gitwst_instanceindex])
+ ikcycles = idurations * kr
+ if (ktimek == 1) then
+ kcount init 0
+ while (kcount < ikcycles) do
+ apos lphasor 1
+ aL table apos, gitwst_bufferL[gitwst_instanceindex]
+ if (gitwst_channels[gitwst_instanceindex] == 1) then
+ fout Spath, 14, aL
+ else
+ aR table3 apos, gitwst_bufferR[gitwst_instanceindex]
+ fout Spath, 14, aL, aR
+ endif
+ kcount += 1
+ od
+ else
+ schedulek("twst_savefile_response", 0, 1, icbid)
+ turnoff
+ endif
+endin
+
+
+
+instr twst_auditioncomplete_response
+ icbid = p4
+ istatus = 0
+ if (gitwst_userstopped == 1) then
+ istatus = 3
+ endif
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":%d}", icbid, istatus))
+ turnoff
+endin
+
+instr twst_stop
+ gitwst_userstopped = 1
+ turnoff2 "twst_audition", 0, 1
+ turnoff2 "twst_record", 0, 1
+ turnoff
+endin
+
+#ifdef TWST_FAILONLAG
+instr twst_auditionlag_response
+ icbid = p4
+ turnoff2 "twst_audition", 0, 0
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":-1}", icbid))
+ turnoff
+endin
+#end
+
+instr twst_play
+ schedule("twst_audition", 0, p3, p4, p5, p6, p7, "", 0)
+ turnoff
+endin
+
+instr twst_audition
+ icbid = p4
+ gitwst_userstopped = 0
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+ istart = p5
+ iend = p6
+ if (istart == iend) then
+ iend = 1
+ endif
+ ichannel = p7
+ Stransform = strget(p8)
+ iautomating = p9
+ icrossfadein = p10
+ icrossfadeout = p11
+ iuniqueid = p12
+ iapplymode chnget sprintf("applymode%d", iuniqueid)
+ kapplymodedry chnget sprintf("applymodedry%d", iuniqueid)
+ kapplymodewet chnget sprintf("applymodewet%d", iuniqueid)
+
+ i_, aL, aR, i_, i_, iextracycles, i_, i_ twst_playback istart, iend, ichannel, Stransform, 0, iautomating, icrossfadein, icrossfadeout, iuniqueid
+
+ gitwst_currentplayduration = p3
+
+#ifdef TWST_FAILONLAG
+ if (strcmp(Stransform, "") != 0) then
+ klagging lagdetect 0.8
+ if (klagging == 1) then
+ schedulek("twst_auditionlag_response", 0, 1, icbid)
+ endif
+ endif
+#end
+
+ kreleasing init 0
+ ktimek timeinstk
+ iduration = (p3 * kr) + (iextracycles / sr)
+ krelease release
+ if (kreleasing == 0 && (krelease == 1 || ktimek >= iduration)) then
+ kreleasing = 1
+ schedulek("twst_auditioncomplete_response", 0, 1, icbid)
+ turnoff
+ endif
+
+ outs aL, aR
+endin
+
+
+instr twst_recordcomplete_response
+ icbid = p4
+ iselstart = p5
+ iselend = p6
+ io_sendstring("callback", twst_createoverviews(icbid, iselstart, iselend, 2))
+endin
+
+instr twst_record
+ icbid = p4
+ gitwst_userstopped = 0
+ io_sendstring("callback", sprintf("{\"cbid\":%d,\"status\":1}", icbid))
+ istart = p5
+ iend = p6
+ if (istart == iend) then
+ iend = 1
+ endif
+ ichannel = p7
+ ibuflen = ftlen(gitwst_bufferL[gitwst_instanceindex])
+ istartsamp, ilensamp, iendsamp twst_getstartend istart, iend, gitwst_instanceindex
+ ilens = ilensamp / sr
+ p3 = ilens
+
+ twst_checkpoint()
+
+ apos linseg istartsamp, ilens, iendsamp
+ aL init 0
+ aR init 0
+
+ if (gitwst_channels[gitwst_instanceindex] == 1) then
+ if (ichannel == 1) then
+ aL inch 2
+ else
+ aL inch 1
+ endif
+ tablew aL, apos, gitwst_bufferL[gitwst_instanceindex]
+ else
+ if (ichannel == -1 || ichannel == 0) then
+ aL inch 1
+ tablew aL, apos, gitwst_bufferL[gitwst_instanceindex]
+ endif
+ if (ichannel == -1 || ichannel == 1) then
+ aR inch 2
+ tablew aR, apos, gitwst_bufferR[gitwst_instanceindex]
+ endif
+ endif
+
+ chnset k(aL), "recordmonitorL"
+ chnset k(aR), "recordmonitorR"
+
+ ktimeenv linseg istart, p3, iend
+ chnset ktimeenv, "twst_playposratio"
+ kreleasing init 0
+ ktimek timeinstk
+ iduration = p3 * kr
+ if (kreleasing == 0 && (release:k() == 1 || ktimek >= iduration)) then
+ kreleasing = 1
+ klastwritten = k(apos)
+ schedulek("twst_recordcomplete_response", 0, 1, icbid, istart, klastwritten / ibuflen)
+ turnoff
+ endif
+endin
+
+
+
+instr twst_commit_response
+ icbid = p4
+ ifnL = p5
+ ifnR = p6
+ iselstart = p7
+ iselend = p8
+ if (ifnL > 0 && ifnL != gitwst_bufferL[gitwst_instanceindex]) then
+ if (gitwst_bufferL[gitwst_instanceindex] > 0 && ftexists(gitwst_bufferL[gitwst_instanceindex]) == 1) then
+ ftfree gitwst_bufferL[gitwst_instanceindex], 0
+ endif
+ gitwst_bufferL[gitwst_instanceindex] = ifnL
+ endif
+ if (ifnR > 0 && ifnR != gitwst_bufferR[gitwst_instanceindex]) then
+ if (gitwst_bufferR[gitwst_instanceindex] > 0 && gitwst_bufferR[gitwst_instanceindex] == 1) then
+ ftfree gitwst_bufferR[gitwst_instanceindex], 0
+ endif
+ gitwst_bufferR[gitwst_instanceindex] = ifnR
+ endif
+
+ io_sendstring("callback", twst_createoverviews(icbid, iselstart, iselend))
+ turnoff
+endin
+
+instr twst_commit
+ icbid = p4
+ istart = p5
+ iend = p6
+ if (istart == iend) then
+ istart = 0
+ iend = 1
+ endif
+ ichannel = p7
+ Stransform = strget(p8)
+ iautomating = p9
+ icrossfadein = p10
+ icrossfadeout = p11
+ inoCheckpoint = p12
+ iuniqueid = p13
+
+ ibuflen = ftlen(gitwst_bufferL[gitwst_instanceindex])
+ istartsamp = ibuflen * istart
+ iendsamp = ibuflen * iend
+ idurations = (iendsamp - istartsamp) / ftsr(gitwst_bufferL[gitwst_instanceindex])
+
+ if (inoCheckpoint == 0) then
+ twst_checkpoint()
+ endif
+
+ iblocks = 100
+ ikcycles = round(idurations * kr)
+ if (ikcycles < iblocks) then
+ ikcyclesperblock = ikcycles
+ else
+ ikcyclesperblock = round(ikcycles / iblocks)
+ endif
+ ktotalcount init 0
+ klastpercent init 100
+
+ kreleasing init 0
+ ifnL = 0
+ ifnR = 0
+
+ if (ktotalcount < ikcycles) then
+ kcount = 0
+ while (kcount < ikcyclesperblock) do
+ istatus, a_, a_, ifnL, ifnR, iextracycles, iselstart, iselend twst_playback istart, iend, ichannel, Stransform, 1, iautomating, icrossfadein, icrossfadeout, iuniqueid
+ if (istatus <= 0) then
+ io_sendstring("callback", twst_failresponse(icbid, istatus))
+ turnoff
+ endif
+ ikcycles += iextracycles ; weird in loop but it's a k loop, so i is set here...
+
+ kcount += 1
+ ktotalcount += 1
+ od
+ kpercent = round((100 / ikcycles) * ktotalcount)
+ if (kpercent != klastpercent) then
+ io_send "percent", kpercent
+ klastpercent = kpercent
+ endif
+ else
+ schedulek("twst_commit_response", 0, 1, icbid, ifnL, ifnR, iselstart, iselend)
+ turnoff
+ endif
+endin
+
+
+#include "/twist/automation.udo"
+#include "/twist/transforms.udo"
+
+
+#end
diff --git a/site/udo/txt_tools.udo b/site/udo/txt_tools.udo
new file mode 100755
index 0000000..e260635
--- /dev/null
+++ b/site/udo/txt_tools.udo
@@ -0,0 +1,98 @@
+#ifndef UDO_TXTTOOLS
+#define UDO_TXTTOOLS ##
+/*
+ Text tools
+
+ This file is part of the SONICS UDO collection by Richard Knight 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+/*
+ Print a notification prepended with a line of asterisks
+
+ tt_notify Stext
+
+ Stext text to print
+*/
+opcode tt_notify, 0, S
+ Stext xin
+ Snew = "\n"
+ iwidth = 60
+ index = 0
+ while (index < iwidth) do
+ Snew = strcat(Snew, "*");
+ index += 1
+ od
+ prints strcat(strcat(Snew, "\n"), strcat(Stext, "\n\n"))
+endop
+
+
+
+/*
+ Print a notification prepended with a line of asterisks and exit
+
+ tt_notify Stext
+
+ Stext text to print
+*/
+opcode tt_notify_fatal, 0, S
+ Stext xin
+ tt_notify(Stext)
+ exitnow
+endop
+
+
+/*
+ Return a number of seconds as HH:MM:SS format
+
+ Stime tt_parsetime iseconds
+
+ iseconds seconds to parse
+
+ Stime formatted time
+
+*/
+opcode tt_parsetime, S, i
+ input xin
+ ihours = floor(input / 3600)
+ iminutes = floor((input - (ihours * 3600)) / 60)
+ iseconds = input - (ihours * 3600) - (iminutes * 60)
+ xout sprintf("%02d:%02d:%05.2f", ihours, iminutes, iseconds)
+endop
+
+
+/*
+ Print a timestamped notification prepended with a line of asterisks and exit
+
+ tt_notifytime Stext
+
+ Stext text to print
+*/
+opcode tt_notifytime, 0, S
+ Stext xin
+ Stime tt_parsetime times()
+ tt_notify sprintf("%s | %s", Stime, Stext)
+endop
+
+
+/*
+ Strip newline from end of line: built-in opcode has some problems
+
+ Soutput tt_stripnewline Sinput
+
+ Soutput processed without newline at end if existent
+
+ Sinput line to process
+*/
+opcode tt_stripnewline, S, S
+ Sline xin
+ index = strindex(Sline, "\n")
+ if (index != -1) then
+ Sline = strsub(Sline, 0, index)
+ endif
+ xout Sline
+endop
+
+#end
diff --git a/site/udo/uniqueid.udo b/site/udo/uniqueid.udo
new file mode 100755
index 0000000..68688f8
--- /dev/null
+++ b/site/udo/uniqueid.udo
@@ -0,0 +1,81 @@
+#ifndef UDO_UNIQUEID
+#define UDO_UNIQUEID ##
+/*
+ Unique ID assignments
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2022, 2024
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+
+; globals for internal use
+giUniqueID = 0
+giUniqueFrac = 0
+
+
+/*
+ Get a unique integer ID
+
+ id uniqueid
+
+ id the ID
+*/
+opcode uniqueid, i, 0
+ id = giUniqueID
+ if (giUniqueID + 1 >= 99999999) then ; large guard for 32bit
+ giUniqueID = 0
+ else
+ giUniqueID += 1
+ endif
+ xout id
+endop
+
+
+/*
+ Get a unique decimal/fractional ID
+
+ id uniquefrac
+
+ id the ID
+*/
+opcode uniquefrac, i, 0
+ id = giUniqueFrac
+ giUniqueFrac += 0.0000001 ; smallest for 32bit
+ if (giUniqueFrac >= 1) then
+ giUniqueFrac = 0
+ endif
+ xout id
+endop
+
+
+/*
+ Get an array of unique fractional instrument numbers given a base instrument number
+
+ instrs[] uniqueinstrnums instrnum, inum
+ instrs[] uniqueinstrnums Sinstr, inum
+
+ instrs[] array of unique fractional numbers for the instrument number instrnum
+ Sinstr the base instrument name
+ instrnum the base instrument number
+ inum how many references to generate
+*/
+opcode uniqueinstrnums, i[], ii
+ instrnum, inum xin
+ instrs[] init inum
+ index = 0
+ while (index < inum) do
+ instrs[index] = instrnum + uniquefrac()
+ index += 1
+ od
+ xout instrs
+endop
+
+; overload for named instrument
+opcode uniqueinstrnums, i[], Si
+ Sinstr, inum xin
+ instrs[] uniqueinstrnums nstrnum(Sinstr), inum
+ xout instrs
+endop
+
+#endif
diff --git a/site/udo/wavetables.udo b/site/udo/wavetables.udo
new file mode 100755
index 0000000..564836e
--- /dev/null
+++ b/site/udo/wavetables.udo
@@ -0,0 +1,31 @@
+#ifndef UDO_WAVETABLES
+#define UDO_WAVETABLES ##
+/*
+ Standard regular wave function tables
+
+ This file is part of the SONICS UDO collection by Richard Knight 2021, 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+ipoints = 8192
+gifnSine ftgen 0, 0, ipoints, 10, 1
+gifnSquare ftgen 0, 0, ipoints, 10, 1, 0 , .33, 0, .2 , 0, .14, 0 , .11, 0, .09
+gifnSaw ftgen 0, 0, ipoints, 10, 0, .2, 0, .4, 0, .6, 0, .8, 0, 1, 0, .8, 0, .6, 0, .4, 0, .2
+gifnPulse ftgen 0, 0, ipoints, 10, 1, 1, 1, 1, 0.7, 0.5, 0.3, 0.1
+gifnTriangle ftgen 0, 0, ipoints, 9, 1, 1, 0, 3, 0.333, 180, 5, 0.2, 0, 7, 0.143, 180, 9, 0.111, 0
+gifnCosine ftgen 0, 0, ipoints, 9, 1, 1, 90
+gifnHalfSine ftgen 0, 0, 2048, 9, 0.5, 1, 0
+gifnSigmoid ftgen 0, 0, 257, 9, .5, 1, 270
+gifnHanning ftgen 0, 0, 2048, 20, 2
+gifnHamming ftgen 0, 0, 2048, 20, 1, 1
+
+giwavetables[] fillarray gifnSine, gifnSquare, gifnSaw, gifnPulse, gifnCosine, gifnTriangle ;, gifnHalfSine, gifnSigmoid
+gSwavetables[] fillarray "Sine", "Square", "Saw", "Pulse", "Cosine", "Triangle" ;, "Half sine", "Sigmoid"
+
+opcode wavetable_random, i, 0
+ xout giwavetables[int(random(0, lenarray(giwavetables)-1))]
+endop
+
+#end
+
diff --git a/site/udo/wiimote.udo b/site/udo/wiimote.udo
new file mode 100755
index 0000000..474d2ba
--- /dev/null
+++ b/site/udo/wiimote.udo
@@ -0,0 +1,227 @@
+#ifndef UDO_WIIMOTE
+#define UDO_WIIMOTE ##
+/*
+ Wiimote interface
+
+ This file is part of the SONICS UDO collection by Richard Knight 2022
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "interop.udo"
+
+; button bit masks
+#define WII_1 #2#
+#define WII_2 #1#
+#define WII_A #8#
+#define WII_B #4#
+#define WII_HOME #128#
+#define WII_MINUS #16#
+#define WII_PLUS #4096#
+#define WII_LEFT #256#
+#define WII_RIGHT #512#
+#define WII_UP #2048#
+#define WII_DOWN #1024#
+
+
+; everything goes to globals when connected
+gkwii_pitch init 0
+gkwii_roll init 0
+gkwii_accelX init 0
+gkwii_accelY init 0
+gkwii_accelZ init 0
+gkwii_buttons init 0
+
+
+#ifdef USE_WIIMOTE_NUNCHUCK
+#define WII_Z #-33#
+#define WII_C #-34#
+
+gkwii_ncang init 0
+gkwii_ncmag init 0
+gkwii_ncpitch init 0
+gkwii_ncroll init 0
+#end
+
+
+/*
+ Get the state of a wiimote button
+
+ kstate wii_button ibutton
+
+ kstate 1 if pressed/held or 0 if not
+ ibutton the bit mask of the button; use the macros defined
+*/
+opcode wii_button, k, i
+ ibutton xin
+ if (ibutton < 0) then ; nunchuck buttons not captured by wiidata(0)
+ ibutton abs ibutton
+ kvalue = wiidata(ibutton)
+ else
+ kvalue = (gkwii_buttons & ibutton == ibutton) ? 1 : 0
+ endif
+ xout kvalue
+endop
+
+
+
+/*
+ Keep an instrument on for as long as a wiimote button is held
+
+ wii_buttonhold ibutton, Sinstrument
+
+ ibutton the bit mask of the button; use the macros defined
+ Sinstrument instrument name to start/stop accordingly
+*/
+opcode wii_buttonhold, 0, iS
+ ibutton, Sinstrument xin
+ kbut = wii_button(ibutton)
+ if (changed:k(kbut) == 1) then
+ if (kbut == 1) then
+ schedulek(Sinstrument, 0, 999999) ; longnum here as -1 not good for p3
+ else
+ turnoff2(Sinstrument, 0, 1)
+ endif
+ endif
+endop
+
+
+opcode wii_buttonhold, 0, iSi
+ ibutton, Sinstrument, ip4 xin
+ kbut = wii_button(ibutton)
+ if (changed:k(kbut) == 1) then
+ if (kbut == 1) then
+ schedulek(Sinstrument, 0, -1, ip4)
+ else
+ turnoff2(Sinstrument, 0, 1)
+ endif
+ endif
+endop
+
+/*
+ Use the wiimote minus and plus buttons to scroll through item indexes
+
+ kitem wii_pager imaxitems [, iteminitial=0, ksetindex=-1]
+
+ kitem the selected item/page
+ imaxindex maximum number of items
+ initialindex initial value
+ ksetindex set the item index directly with this
+*/
+opcode wii_pager, k, ioJ
+ imaxindex, initialindex, ksetindex xin
+ kcurrentitem init initialindex
+
+ kplus = wii_button($WII_PLUS)
+ kminus = wii_button($WII_MINUS)
+ if (kminus == 1 && changed:k(kminus) == 1) then
+ if (kcurrentitem == 0) then
+ kcurrentitem = imaxindex
+ else
+ kcurrentitem -= 1
+ endif
+ elseif (kplus == 1 && changed:k(kplus) == 1) then
+ if (kcurrentitem == imaxindex) then
+ kcurrentitem = 0
+ else
+ kcurrentitem += 1
+ endif
+ elseif (changed:k(ksetindex) == 1) then
+ if (ksetindex >= 0 && ksetindex <= imaxindex) then
+ kcurrentitem = ksetindex
+ endif
+ endif
+ xout kcurrentitem
+endop
+
+
+instr wii_reset
+ gkwii_pitch = 0
+ gkwii_roll = 0
+ gkwii_accelX = 0
+ gkwii_accelY = 0
+ gkwii_accelZ = 0
+ gkwii_buttons = 0
+#ifdef USE_WIIMOTE_NUNCHUCK
+ gkwii_ncang init 0
+ gkwii_ncmag init 0
+ gkwii_ncpitch init 0
+ gkwii_ncroll init 0
+#end
+ turnoff
+endin
+
+instr _wii_handler_watchdog
+ icbid = p4
+ SonFail = p5
+ kmetro metro 0.5
+ if (kmetro == 1) then
+ if (active:k("wii_handler") == 0) then
+ schedulek(SonFail, 0, -1, icbid)
+ turnoff
+ endif
+ endif
+endin
+
+
+instr _wii_handler_default_fail
+ icbid = p4
+ schedule("wii_reset", 0, 1)
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"success\": false}", icbid))
+ turnoff
+endin
+
+/*
+ Connect wiimote and set global variables from it
+*/
+instr wii_handler
+ icbid = p4
+ SonComplete = strget(p5)
+ SonFailWatchdog = strget(p6)
+ iconnecttimeout = (p7 == 0) ? 1 : p7
+
+ if (strcmp(SonFailWatchdog, "") == 0) then
+ SonFailWatchdog = "_wii_handler_default_fail"
+ endif
+ schedule("_wii_handler_watchdog", 0, p3, icbid, SonFailWatchdog)
+
+ iwiisuccess wiiconnect iconnecttimeout, 1
+
+ if (icbid > 0) then
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"success\": %s}", icbid, (iwiisuccess == 1) ? "true" : "false"))
+ endif
+
+ if (iwiisuccess == 0) then
+ turnoff
+ endif
+
+ if (strcmp(SonComplete, "") != 0) then
+ schedule(SonComplete, 0, -1)
+ endif
+
+ ;gkwii_battery = wiidata(27)
+ ;printk2 gkwii_battery
+
+ ; set range of pitch and roll as 0 to 1
+ wiirange 20, 0, 1
+ wiirange 21, 0, 1
+
+ gkwii_accelX = wiidata(23) ;/ 5 ;abs:k(wiidata(23)) / 5
+ gkwii_accelY = wiidata(24) / 5 ;abs:k(wiidata(24)) / 5
+ gkwii_accelZ = wiidata(25) / 5 ;abs:k(wiidata(25)) / 5
+ gkwii_pitch = wiidata(20)
+ gkwii_roll = wiidata(21)
+ gkwii_buttons = wiidata(0) ; bit pattern
+
+#ifdef USE_WIIMOTE_NUNCHUCK
+ wiirange 30, 0, 1
+ wiirange 31, 0, 1
+ gkwii_ncang = wiidata(28) / 360
+ gkwii_ncmag = wiidata(29) / 1.2
+ gkwii_ncpitch = wiidata(30)
+ gkwii_ncroll = wiidata(31)
+#end
+
+endin
+
+#end
diff --git a/site/udo/wiimote_fltk.udo b/site/udo/wiimote_fltk.udo
new file mode 100755
index 0000000..38bb91d
--- /dev/null
+++ b/site/udo/wiimote_fltk.udo
@@ -0,0 +1,200 @@
+#ifndef UDO_WIIMOTE
+#define UDO_WIIMOTE ##
+/*
+ Wiimote FLTK debugging/substitution interface
+
+ This file is part of the SONICS UDO collection by Richard Knight 2023
+ License: GPL-2.0-or-later
+ http://1bpm.net
+*/
+
+#include "interop.udo"
+
+
+FLpanel "WiiBug", 600, 500, 100, 100, 0, 1, 1
+ gkwii_pitch, gkwii_roll, gij1x, gij1y FLjoy "Main pitch and roll", 0, 1, 0, 1, 0, 0, -1, -1, 200, 200, 0, 0
+#ifdef USE_WIIMOTE_NUNCHUCK
+ gkwii_ncpitch, gkwii_ncroll, gij2x, gij2y FLjoy "Nunchuck pitch and roll", 0, 1, 0, 1, 0, 0, -1, -1, 200, 200, 200, 0
+ gkj3x, gkj3y, gij3x, gij3y FLjoy "Nunchuck angle and mag", 0, 1, 0, 1, 0, 0, -1, -1, 200, 200, 400, 0
+#end
+ gkb1, gib1 FLbutton "1", 1, 0, 2, 50, 50, 0, 250, -1
+ gkb2, gib2 FLbutton "2", 1, 0, 2, 50, 50, 50, 250, -1
+ gkbA, gibA FLbutton "A", 1, 0, 2, 50, 50, 100, 250, -1
+ gkbB, gibB FLbutton "B", 1, 0, 2, 50, 50, 150, 250, -1
+ gkbHome, gibHome FLbutton "Home", 1, 0, 2, 50, 50, 200, 250, -1
+ gkbMinus, gibMinus FLbutton "Minus", 1, 0, 2, 50, 50, 250, 250, -1
+ gkbPlus, gibPlus FLbutton "Plus", 1, 0, 2, 50, 50, 300, 250, -1
+
+ gkbLeft, gibLeft FLbutton "Left", 1, 0, 2, 50, 50, 0, 300, -1
+ gkbRight, gibRight FLbutton "Right", 1, 0, 2, 50, 50, 50, 300, -1
+ gkbUp, gibUp FLbutton "Up", 1, 0, 2, 50, 50, 100, 300, -1
+ gkbDown, gibDown FLbutton "Down", 1, 0, 2, 50, 50, 150, 300, -1
+
+#ifdef USE_WIIMOTE_NUNCHUCK
+ gkbZ, gibC FLbutton "Z", 1, 0, 2, 50, 50, 200, 300, -1
+ gkbC, gibZ FLbutton "C", 1, 0, 2, 50, 50, 250, 300, -1
+#end
+
+ gkwii_accelX, gis1 FLslider "Accel X", 0, 1, 0, 1, -1, 400, 35, 0, 350
+ gkwii_accelY, gis2 FLslider "Accel Y", 0, 1, 0, 1, -1, 400, 35, 0, 400
+ gkwii_accelZ, gis3 FLslider "Accel Z", 0, 1, 0, 1, -1, 400, 35, 0, 450
+FLpanelEnd
+
+FLrun
+
+; button bit masks
+#define WII_1 #2#
+#define WII_2 #1#
+#define WII_A #8#
+#define WII_B #4#
+#define WII_HOME #128#
+#define WII_MINUS #16#
+#define WII_PLUS #4096#
+#define WII_LEFT #256#
+#define WII_RIGHT #512#
+#define WII_UP #2048#
+#define WII_DOWN #1024#
+
+
+
+#ifdef USE_WIIMOTE_NUNCHUCK
+#define WII_Z #-33#
+#define WII_C #-34#
+gkwii_ncang init 0
+gkwii_ncmag init 0
+#end
+
+/*
+ Get the state of a wiimote button
+
+ kstate wii_button ibutton
+
+ kstate 1 if pressed/held or 0 if not
+ ibutton the bit mask of the button; use the macros defined
+*/
+opcode wii_button, k, i
+ ibutton xin
+ if (ibutton == $WII_1) then
+ kvalue = gkb1
+ elseif (ibutton == $WII_2) then
+ kvalue = gkb2
+ elseif (ibutton == $WII_A) then
+ kvalue = gkbA
+ elseif (ibutton == $WII_B) then
+ kvalue = gkbB
+ elseif (ibutton == $WII_HOME) then
+ kvalue = gkbHome
+ elseif (ibutton == $WII_MINUS) then
+ kvalue = gkbMinus
+ elseif (ibutton == $WII_PLUS) then
+ kvalue = gkbPlus
+ elseif (ibutton == $WII_LEFT) then
+ kvalue = gkbLeft
+ elseif (ibutton == $WII_RIGHT) then
+ kvalue = gkbRight
+ elseif (ibutton == $WII_UP) then
+ kvalue = gkbUp
+ elseif (ibutton == $WII_DOWN) then
+ kvalue = gkbDown
+#ifdef USE_WIIMOTE_NUNCHUCK
+ elseif (ibutton == $WII_Z) then
+ kvalue = gkbZ
+ elseif (ibutton == $WII_C) then
+ kvalue = gkbC
+#end
+ else
+ kvalue init 0
+ endif
+ xout kvalue
+endop
+
+
+/*
+ Keep an instrument on for as long as a wiimote button is held
+
+ wii_buttonhold ibutton, Sinstrument
+
+ ibutton the bit mask of the button; use the macros defined
+ Sinstrument instrument name to start/stop accordingly
+*/
+opcode wii_buttonhold, 0, iS
+ ibutton, Sinstrument xin
+ kbut = wii_button(ibutton)
+ if (changed:k(kbut) == 1) then
+ if (kbut == 1) then
+ schedulek(Sinstrument, 0, -1)
+ else
+ turnoff2(Sinstrument, 0, 1)
+ endif
+ endif
+endop
+
+opcode wii_buttonhold, 0, iSi
+ ibutton, Sinstrument, ip4 xin
+ kbut = wii_button(ibutton)
+ if (changed:k(kbut) == 1) then
+ if (kbut == 1) then
+ schedulek(Sinstrument, 0, -1, ip4)
+ else
+ turnoff2(Sinstrument, 0, 1)
+ endif
+ endif
+endop
+
+/*
+ Use the wiimote minus and plus buttons to scroll through item indexes
+
+ kitem wii_pager imaxitems [, iteminitial=0, ksetindex=-1]
+
+ kitem the selected item/page
+ imaxindex maximum number of items
+ initialindex initial value
+ ksetindex set the item index directly with this
+*/
+opcode wii_pager, k, ioJ
+ imaxindex, initialindex, ksetindex xin
+ kcurrentitem init initialindex
+
+ kplus = wii_button($WII_PLUS)
+ kminus = wii_button($WII_MINUS)
+ if (kminus == 1 && changed:k(kminus) == 1) then
+ if (kcurrentitem == 0) then
+ kcurrentitem = imaxindex
+ else
+ kcurrentitem -= 1
+ endif
+ elseif (kplus == 1 && changed:k(kplus) == 1) then
+ if (kcurrentitem == imaxindex) then
+ kcurrentitem = 0
+ else
+ kcurrentitem += 1
+ endif
+ elseif (changed:k(ksetindex) == 1) then
+ if (ksetindex >= 0 && ksetindex <= imaxindex) then
+ kcurrentitem = ksetindex
+ endif
+ endif
+ xout kcurrentitem
+endop
+
+
+
+
+
+instr wii_handler
+ icbid = p4
+ SonComplete = strget(p5)
+ SonFailWatchdog = strget(p6)
+ iconnecttimeout = (p7 == 0) ? 1 : p7
+
+ if (icbid > 0) then
+ io_sendstring("callback", sprintf("{\"cbid\": %d, \"success\": true}", icbid))
+ endif
+
+ if (strcmp(SonComplete, "") != 0) then
+ schedule(SonComplete, 0, -1)
+ endif
+
+endin
+
+#end